From 0540cd31fe6e7f79d32cd220f8d8bd4fec3388a2 Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Tue, 10 Jan 2023 11:50:37 +0100 Subject: [PATCH 01/10] Allow ETuple, ETupleAccess on all ASTs they used to be only allowed on lcalc --- compiler/dcalc/from_scopelang.ml | 3 + compiler/dcalc/interpreter.ml | 6 + compiler/lcalc/compile_with_exceptions.ml | 3 + compiler/lcalc/compile_without_exceptions.ml | 13 + compiler/scopelang/from_desugared.ml | 3 + compiler/shared_ast/definitions.ml | 14 +- compiler/shared_ast/expr.mli | 6 +- compiler/verification/z3backend.real.ml | 2 + french_law/python/src/aides_logement.py | 1244 +++++++++--------- 9 files changed, 662 insertions(+), 632 deletions(-) diff --git a/compiler/dcalc/from_scopelang.ml b/compiler/dcalc/from_scopelang.ml index 037106e2..2fcc784d 100644 --- a/compiler/dcalc/from_scopelang.ml +++ b/compiler/dcalc/from_scopelang.ml @@ -222,6 +222,9 @@ let rec translate_expr (ctx : 'm ctx) (e : 'm Scopelang.Ast.expr) : Expr.estruct name fields m | EStructAccess { e; field; name } -> Expr.estructaccess (translate_expr ctx e) field name m + | ETuple es -> Expr.etuple (List.map (translate_expr ctx) es) m + | ETupleAccess { e; index; size } -> + Expr.etupleaccess (translate_expr ctx e) index size m | EInj { e; cons; name } -> let e' = translate_expr ctx e in Expr.einj e' cons name m diff --git a/compiler/dcalc/interpreter.ml b/compiler/dcalc/interpreter.ml index 3abb7d34..22d9a7ed 100644 --- a/compiler/dcalc/interpreter.ml +++ b/compiler/dcalc/interpreter.ml @@ -364,6 +364,12 @@ and evaluate_expr (ctx : decl_ctx) (e : 'm Ast.expr) : 'm Ast.expr = if the term was well-typed)" (Expr.format ctx ~debug:true) e StructName.format_t s) + | ETuple es -> + Marked.same_mark_as (ETuple (List.map (evaluate_expr ctx) es)) e + | ETupleAccess { e = e1; index; size } -> + Marked.same_mark_as + (ETupleAccess { e = evaluate_expr ctx e1; index; size }) + e | EInj { e = e1; name; cons } -> let e1' = evaluate_expr ctx e1 in if is_empty_error e then Marked.same_mark_as (ELit LEmptyError) e diff --git a/compiler/lcalc/compile_with_exceptions.ml b/compiler/lcalc/compile_with_exceptions.ml index ab612d82..69fa18c8 100644 --- a/compiler/lcalc/compile_with_exceptions.ml +++ b/compiler/lcalc/compile_with_exceptions.ml @@ -61,6 +61,9 @@ and translate_expr (ctx : 'm ctx) (e : 'm D.expr) : 'm A.expr boxed = Expr.estruct name (StructField.Map.map (translate_expr ctx) fields) m | EStructAccess { name; e; field } -> Expr.estructaccess (translate_expr ctx e) field name m + | ETuple es -> Expr.etuple (List.map (translate_expr ctx) es) m + | ETupleAccess { e; index; size } -> + Expr.etupleaccess (translate_expr ctx e) index size m | EInj { name; e; cons } -> Expr.einj (translate_expr ctx e) cons name m | EMatch { name; e; cases } -> Expr.ematch (translate_expr ctx e) name diff --git a/compiler/lcalc/compile_without_exceptions.ml b/compiler/lcalc/compile_without_exceptions.ml index 38cc3a69..5b3f47cc 100644 --- a/compiler/lcalc/compile_without_exceptions.ml +++ b/compiler/lcalc/compile_without_exceptions.ml @@ -268,6 +268,19 @@ let rec translate_and_hoist (ctx : 'm ctx) (e : 'm D.expr) : let e1', hoists = translate_and_hoist ctx e1 in let e1' = Expr.estructaccess e1' field name mark in e1', hoists + | ETuple es -> + let hoists, es' = + List.fold_left_map + (fun hoists e -> + let e, h = translate_and_hoist ctx e in + h :: hoists, e) + [] es + in + Expr.etuple es' mark, disjoint_union_maps (Expr.pos e) hoists + | ETupleAccess { e = e1; index; size } -> + let e1', hoists = translate_and_hoist ctx e1 in + let e1' = Expr.etupleaccess e1' index size mark in + e1', hoists | EInj { name; e = e1; cons } -> let e1', hoists = translate_and_hoist ctx e1 in let e1' = Expr.einj e1' cons name mark in diff --git a/compiler/scopelang/from_desugared.ml b/compiler/scopelang/from_desugared.ml index 957e9051..20b3e2c8 100644 --- a/compiler/scopelang/from_desugared.ml +++ b/compiler/scopelang/from_desugared.ml @@ -93,6 +93,9 @@ let rec translate_expr (ctx : ctx) (e : Desugared.Ast.expr) : name in Expr.estructaccess e' field name m + | ETuple es -> Expr.etuple (List.map (translate_expr ctx) es) m + | ETupleAccess { e; index; size } -> + Expr.etupleaccess (translate_expr ctx e) index size m | EInj { e; cons; name } -> Expr.einj (translate_expr ctx e) cons name m | EMatch { e; name; cases } -> Expr.ematch (translate_expr ctx e) name diff --git a/compiler/shared_ast/definitions.ml b/compiler/shared_ast/definitions.ml index ff5b5020..154a77e4 100644 --- a/compiler/shared_ast/definitions.ml +++ b/compiler/shared_ast/definitions.ml @@ -301,6 +301,13 @@ and ('a, 't) naked_gexpr = cases : ('a, 't) gexpr EnumConstructor.Map.t; } -> ('a any, 't) naked_gexpr + | ETuple : ('a, 't) gexpr list -> ('a any, 't) naked_gexpr + | ETupleAccess : { + e : ('a, 't) gexpr; + index : int; + size : int; + } + -> ('a any, 't) naked_gexpr (* Early stages *) | ELocation : 'a glocation @@ -337,13 +344,6 @@ and ('a, 't) naked_gexpr = ('a, 't) gexpr -> (([< desugared | scopelang | dcalc ] as 'a), 't) naked_gexpr (* Lambda calculus with exceptions *) - | ETuple : ('a, 't) gexpr list -> ((lcalc as 'a), 't) naked_gexpr - | ETupleAccess : { - e : ('a, 't) gexpr; - index : int; - size : int; - } - -> ((lcalc as 'a), 't) naked_gexpr | ERaise : except -> ((lcalc as 'a), 't) naked_gexpr | ECatch : { body : ('a, 't) gexpr; diff --git a/compiler/shared_ast/expr.mli b/compiler/shared_ast/expr.mli index f33a3b10..086dfd4b 100644 --- a/compiler/shared_ast/expr.mli +++ b/compiler/shared_ast/expr.mli @@ -43,10 +43,10 @@ val subst : ('a, 't) gexpr list -> ('a, 't) gexpr -val etuple : (lcalc, 't) boxed_gexpr list -> 't -> (lcalc, 't) boxed_gexpr +val etuple : ('a any, 't) boxed_gexpr list -> 't -> ('a, 't) boxed_gexpr val etupleaccess : - (lcalc, 't) boxed_gexpr -> int -> int -> 't -> (lcalc, 't) boxed_gexpr + ('a any, 't) boxed_gexpr -> int -> int -> 't -> ('a, 't) boxed_gexpr val earray : ('a any, 't) boxed_gexpr list -> 't -> ('a, 't) boxed_gexpr val elit : 'a any glit -> 't -> ('a, 't) boxed_gexpr @@ -304,7 +304,7 @@ val make_default : - [], when [ex] is a single exception, is rewritten as [ex] *) val make_tuple : - (lcalc, 'm mark) boxed_gexpr list -> 'm mark -> (lcalc, 'm mark) boxed_gexpr + ('a any, 'm mark) boxed_gexpr list -> 'm mark -> ('a, 'm mark) boxed_gexpr (** Builds a tuple; the mark argument is only used as witness and for position when building 0-uples *) diff --git a/compiler/verification/z3backend.real.ml b/compiler/verification/z3backend.real.ml index d4fe2347..f1afe275 100644 --- a/compiler/verification/z3backend.real.ml +++ b/compiler/verification/z3backend.real.ml @@ -676,6 +676,8 @@ and translate_expr (ctx : context) (vc : typed expr) : context * Expr.expr = in let ctx, s = translate_expr ctx e in ctx, Expr.mk_app ctx.ctx_z3 accessor [s] + | ETuple _ -> failwith "[Z3 encoding] ETuple unsupported" + | ETupleAccess _ -> failwith "[Z3 encoding] ETupleAccess unsupported" | EInj { e; cons; name } -> (* This node corresponds to creating a value for the enumeration [en], by calling the [idx]-th constructor of enum [en], with argument [e] *) diff --git a/french_law/python/src/aides_logement.py b/french_law/python/src/aides_logement.py index edf72e05..5d52e4ea 100644 --- a/french_law/python/src/aides_logement.py +++ b/french_law/python/src/aides_logement.py @@ -2658,8 +2658,8 @@ def contributions_sociales_aides_personnelle_logement(contributions_sociales_aid except EmptyError: temp_exonere_csg = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=519, start_column=11, - end_line=519, end_column=22, + start_line=518, start_column=11, + end_line=518, end_column=22, law_headings=["Calcul des contributions sociales s'appliquant aux aides personnelles au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -2674,8 +2674,8 @@ def contributions_sociales_aides_personnelle_logement(contributions_sociales_aid except EmptyError: temp_taux_crds = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=518, start_column=11, - end_line=518, end_column=20, + start_line=517, start_column=11, + end_line=517, end_column=20, law_headings=["Calcul des contributions sociales s'appliquant aux aides personnelles au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -2690,9 +2690,9 @@ def contributions_sociales_aides_personnelle_logement(contributions_sociales_aid raise EmptyError except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=521, + start_line=520, start_column=12, - end_line=521, + end_line=520, end_column=19, law_headings=["Calcul des contributions sociales s'appliquant aux aides personnelles au logement", "Déclarations des champs d'application", @@ -2700,8 +2700,8 @@ def contributions_sociales_aides_personnelle_logement(contributions_sociales_aid except EmptyError: temp_montant = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=521, start_column=12, - end_line=521, end_column=19, + start_line=520, start_column=12, + end_line=520, end_column=19, law_headings=["Calcul des contributions sociales s'appliquant aux aides personnelles au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -2738,8 +2738,8 @@ def calcul_equivalence_loyer_minimale(calcul_equivalence_loyer_minimale_in:Calcu except EmptyError: temp_montant_forfaitaire_d832_26 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=595, start_column=11, - end_line=595, end_column=38, + start_line=594, start_column=11, + end_line=594, end_column=38, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -2797,8 +2797,8 @@ def calcul_equivalence_loyer_minimale(calcul_equivalence_loyer_minimale_in:Calcu except EmptyError: temp_tranches_revenus_d832_26 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=592, start_column=11, - end_line=592, end_column=35, + start_line=591, start_column=11, + end_line=591, end_column=35, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -2824,8 +2824,8 @@ def calcul_equivalence_loyer_minimale(calcul_equivalence_loyer_minimale_in:Calcu except EmptyError: temp_tranches_revenus_d832_26_multipliees_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=593, start_column=11, - end_line=593, end_column=47, + start_line=592, start_column=11, + end_line=592, end_column=47, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -2895,8 +2895,8 @@ def calcul_equivalence_loyer_minimale(calcul_equivalence_loyer_minimale_in:Calcu except EmptyError: temp_montant_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=597, start_column=12, - end_line=597, end_column=19, + start_line=596, start_column=12, + end_line=596, end_column=19, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -2978,8 +2978,8 @@ def calcul_nombre_part_logement_foyer(calcul_nombre_part_logement_foyer_in:Calcu except EmptyError: temp_n_nombre_parts_d832_25 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=604, start_column=12, - end_line=604, end_column=34, + start_line=603, start_column=12, + end_line=603, end_column=34, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -3024,8 +3024,8 @@ def calcul_nombre_parts_accession_propriete(calcul_nombre_parts_accession_propri except EmptyError: temp_n_nombre_parts_d832_11 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=660, start_column=12, - end_line=660, end_column=34, + start_line=659, start_column=12, + end_line=659, end_column=34, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -3082,9 +3082,9 @@ def ouverture_droits_retraite(ouverture_droits_retraite_in:OuvertureDroitsRetrai else: raise EmptyError temp_age_ouverture_droit_8 = handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=999, + start_line=998, start_column=12, - end_line=999, end_column=31, + end_line=998, end_column=31, law_headings=["Date d'ouverture des droits à la retraite", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"]), [temp_age_ouverture_droit_7, @@ -3098,8 +3098,8 @@ def ouverture_droits_retraite(ouverture_droits_retraite_in:OuvertureDroitsRetrai except EmptyError: temp_age_ouverture_droit_8 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=999, start_column=12, - end_line=999, end_column=31, + start_line=998, start_column=12, + end_line=998, end_column=31, law_headings=["Date d'ouverture des droits à la retraite", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -3138,8 +3138,8 @@ def impaye_depense_logement(impaye_depense_logement_in:ImpayeDepenseLogementIn): except EmptyError: temp_mode_occupation_impaye = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1015, - start_column=11, end_line=1015, + start_line=1014, + start_column=11, end_line=1014, end_column=33, law_headings=["Quantification des impayés de dépense de logement", "Calcul du montant de l'allocation logement", @@ -3175,8 +3175,8 @@ def impaye_depense_logement(impaye_depense_logement_in:ImpayeDepenseLogementIn): except EmptyError: temp_depense_logement_brute_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1016, - start_column=11, end_line=1016, + start_line=1015, + start_column=11, end_line=1015, end_column=33, law_headings=["Quantification des impayés de dépense de logement", "Calcul du montant de l'allocation logement", @@ -3236,9 +3236,9 @@ def impaye_depense_logement(impaye_depense_logement_in:ImpayeDepenseLogementIn): else: raise EmptyError temp_depense_logement_nette_6 = handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1017, + start_line=1016, start_column=11, - end_line=1017, end_column=33, + end_line=1016, end_column=33, law_headings=["Quantification des impayés de dépense de logement", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"]), [temp_depense_logement_nette_4, @@ -3248,8 +3248,8 @@ def impaye_depense_logement(impaye_depense_logement_in:ImpayeDepenseLogementIn): except EmptyError: temp_depense_logement_nette_6 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1017, - start_column=11, end_line=1017, + start_line=1016, + start_column=11, end_line=1016, end_column=33, law_headings=["Quantification des impayés de dépense de logement", "Calcul du montant de l'allocation logement", @@ -3393,9 +3393,9 @@ def impaye_depense_logement(impaye_depense_logement_in:ImpayeDepenseLogementIn): else: raise EmptyError temp_seuil_impaye_depense_de_logement_14 = handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1014, + start_line=1013, start_column=11, - end_line=1014, end_column=43, + end_line=1013, end_column=43, law_headings=["Quantification des impayés de dépense de logement", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"]), [temp_seuil_impaye_depense_de_logement_11, @@ -3407,8 +3407,8 @@ def impaye_depense_logement(impaye_depense_logement_in:ImpayeDepenseLogementIn): except EmptyError: temp_seuil_impaye_depense_de_logement_14 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1014, - start_column=11, end_line=1014, + start_line=1013, + start_column=11, end_line=1013, end_column=43, law_headings=["Quantification des impayés de dépense de logement", "Calcul du montant de l'allocation logement", @@ -3452,8 +3452,8 @@ def impaye_depense_logement(impaye_depense_logement_in:ImpayeDepenseLogementIn): except EmptyError: temp_montant_impaye_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1019, - start_column=12, end_line=1019, + start_line=1018, + start_column=12, end_line=1018, end_column=26, law_headings=["Quantification des impayés de dépense de logement", "Calcul du montant de l'allocation logement", @@ -3700,8 +3700,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_fraction_l832_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=554, start_column=11, - end_line=554, end_column=26, + start_line=553, start_column=11, + end_line=553, end_column=26, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -3712,8 +3712,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_montant_forfaitaire_d823_16 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=557, start_column=11, - end_line=557, end_column=38, + start_line=556, start_column=11, + end_line=556, end_column=38, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -3724,8 +3724,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_contributions_sociales_dot_date_courante = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=581, start_column=14, - end_line=581, end_column=50, + start_line=580, start_column=14, + end_line=580, end_column=50, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -3872,8 +3872,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_taux_composition_familiale = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=565, start_column=12, - end_line=565, end_column=38, + start_line=564, start_column=12, + end_line=564, end_column=38, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -4016,9 +4016,9 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen else: raise EmptyError temp_abattement_forfaitaire_d823_17_5 = handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=559, + start_line=558, start_column=11, - end_line=559, end_column=41, + end_line=558, end_column=41, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -4030,8 +4030,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_abattement_forfaitaire_d823_17_5 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=559, start_column=11, - end_line=559, end_column=41, + start_line=558, start_column=11, + end_line=558, end_column=41, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -4103,9 +4103,9 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen else: raise EmptyError temp_loyer_reference_4 = handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=553, + start_line=552, start_column=11, - end_line=553, end_column=26, + end_line=552, end_column=26, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -4116,8 +4116,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_loyer_reference_4 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=553, start_column=11, - end_line=553, end_column=26, + start_line=552, start_column=11, + end_line=552, end_column=26, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -4137,8 +4137,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_montant_minimal_aide_d823_16 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=558, start_column=11, - end_line=558, end_column=39, + start_line=557, start_column=11, + end_line=557, end_column=39, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -4376,8 +4376,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen else: raise EmptyError return handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=563, start_column=12, - end_line=563, end_column=35, + start_line=562, start_column=12, + end_line=562, end_column=35, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -4451,8 +4451,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen else: raise EmptyError return handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=563, start_column=12, - end_line=563, end_column=35, + start_line=562, start_column=12, + end_line=562, end_column=35, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -4514,8 +4514,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen else: raise EmptyError return handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=563, start_column=12, - end_line=563, end_column=35, + start_line=562, start_column=12, + end_line=562, end_column=35, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -4755,8 +4755,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen else: raise EmptyError return handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=563, start_column=12, - end_line=563, end_column=35, + start_line=562, start_column=12, + end_line=562, end_column=35, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -4772,9 +4772,9 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen temp_plafond_loyer_d823_16_2_32, temp_plafond_loyer_d823_16_2_31) temp_plafond_loyer_d823_16_2_48 = handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=563, + start_line=562, start_column=12, - end_line=563, end_column=35, + end_line=562, end_column=35, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -4785,8 +4785,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_plafond_loyer_d823_16_2_48 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=563, start_column=12, - end_line=563, end_column=35, + start_line=562, start_column=12, + end_line=562, end_column=35, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -4847,7 +4847,7 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen raise EmptyError temp_montant_forfaitaire_charges_d823_16_8 = handle_default( SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=562, start_column=12, end_line=562, end_column=47, + start_line=561, start_column=12, end_line=561, end_column=47, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -4889,7 +4889,7 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen raise EmptyError temp_montant_forfaitaire_charges_d823_16_8 = handle_default( SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=562, start_column=12, end_line=562, end_column=47, + start_line=561, start_column=12, end_line=561, end_column=47, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -4901,8 +4901,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_montant_forfaitaire_charges_d823_16_8 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=562, start_column=12, - end_line=562, end_column=47, + start_line=561, start_column=12, + end_line=561, end_column=47, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -4917,8 +4917,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_loyer_principal_avec_reduction_meuble = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=532, start_column=10, - end_line=532, end_column=31, + start_line=531, start_column=10, + end_line=531, end_column=31, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -4941,8 +4941,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_plafond_suppression_d823_16 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=556, start_column=11, - end_line=556, end_column=38, + start_line=555, start_column=11, + end_line=555, end_column=38, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -4965,8 +4965,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_plafond_degressivite_d823_16 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=555, start_column=11, - end_line=555, end_column=39, + start_line=554, start_column=11, + end_line=554, end_column=39, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -4981,8 +4981,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_loyer_eligible = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=548, start_column=11, - end_line=548, end_column=25, + start_line=547, start_column=11, + end_line=547, end_column=25, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5012,9 +5012,9 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen return param_1 except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=574, + start_line=573, start_column=10, - end_line=574, + end_line=573, end_column=17, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", @@ -5023,8 +5023,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_traitement_aide_finale_diminue = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=574, start_column=10, - end_line=574, end_column=17, + start_line=573, start_column=10, + end_line=573, end_column=17, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5077,9 +5077,9 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen else: raise EmptyError temp_participation_minimale_5 = handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=564, + start_line=563, start_column=12, - end_line=564, end_column=34, + end_line=563, end_column=34, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5091,8 +5091,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_participation_minimale_5 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=564, start_column=12, - end_line=564, end_column=34, + start_line=563, start_column=12, + end_line=563, end_column=34, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5132,8 +5132,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_rapport_loyers = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=552, start_column=11, - end_line=552, end_column=25, + start_line=551, start_column=11, + end_line=551, end_column=25, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5151,9 +5151,9 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen return money_of_cents_string("0") except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=575, + start_line=574, start_column=10, - end_line=575, + end_line=574, end_column=32, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", @@ -5162,8 +5162,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_traitement_aide_finale_minoration_forfaitaire = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=575, start_column=10, - end_line=575, end_column=32, + start_line=574, start_column=10, + end_line=574, end_column=32, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5253,8 +5253,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_taux_loyer_eligible_formule = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=550, start_column=10, - end_line=550, end_column=17, + start_line=549, start_column=10, + end_line=549, end_column=17, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5282,9 +5282,9 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen return money_of_cents_string("0") except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=576, + start_line=575, start_column=10, - end_line=576, + end_line=575, end_column=40, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", @@ -5293,8 +5293,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_traitement_aide_finale_contributions_sociales_arrondi = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=576, start_column=10, - end_line=576, end_column=40, + start_line=575, start_column=10, + end_line=575, end_column=40, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5334,8 +5334,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_taux_loyer_eligible_taux_arrondi = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=551, start_column=10, - end_line=551, end_column=22, + start_line=550, start_column=10, + end_line=550, end_column=22, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5355,9 +5355,9 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen return money_of_cents_string("0") except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=577, + start_line=576, start_column=10, - end_line=577, + end_line=576, end_column=36, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", @@ -5366,8 +5366,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_traitement_aide_finale_reduction_loyer_solidarite = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=577, start_column=10, - end_line=577, end_column=36, + start_line=576, start_column=10, + end_line=576, end_column=36, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5379,8 +5379,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_taux_prise_compte_ressources = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=560, start_column=11, - end_line=560, end_column=39, + start_line=559, start_column=11, + end_line=559, end_column=39, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5398,9 +5398,9 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen param_5) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=578, + start_line=577, start_column=10, - end_line=578, + end_line=577, end_column=25, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", @@ -5409,8 +5409,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_traitement_aide_finale_montant_minimal = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=578, start_column=10, - end_line=578, end_column=25, + start_line=577, start_column=10, + end_line=577, end_column=25, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5430,8 +5430,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_participation_personnelle_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=566, start_column=12, - end_line=566, end_column=37, + start_line=565, start_column=12, + end_line=565, end_column=37, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5449,8 +5449,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp_aide_finale_formule = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=571, start_column=12, - end_line=571, end_column=31, + start_line=570, start_column=12, + end_line=570, end_column=31, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5535,8 +5535,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_coefficient_r_d832_25 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=619, start_column=12, - end_line=619, end_column=33, + start_line=618, start_column=12, + end_line=618, end_column=33, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5547,8 +5547,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_montant_forfaitaire_d832_24 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=626, start_column=11, - end_line=626, end_column=38, + start_line=625, start_column=11, + end_line=625, end_column=38, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5559,8 +5559,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_montant_minimal_aide_d823_24 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=628, start_column=11, - end_line=628, end_column=39, + start_line=627, start_column=11, + end_line=627, end_column=39, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5588,8 +5588,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_condition_2_du_832_25 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=616, start_column=12, - end_line=616, end_column=33, + start_line=615, start_column=12, + end_line=615, end_column=33, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5600,8 +5600,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_contributions_sociales_dot_date_courante_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=650, start_column=14, - end_line=650, end_column=50, + start_line=649, start_column=14, + end_line=649, end_column=50, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5887,9 +5887,9 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ else: raise EmptyError temp_plafond_equivalence_loyer_eligible_5 = handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=622, + start_line=621, start_column=12, - end_line=622, end_column=46, + end_line=621, end_column=46, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5901,8 +5901,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_plafond_equivalence_loyer_eligible_5 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=622, start_column=12, - end_line=622, end_column=46, + start_line=621, start_column=12, + end_line=621, end_column=46, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5918,9 +5918,9 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ return money_of_cents_string("0") except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=644, + start_line=643, start_column=10, - end_line=644, + end_line=643, end_column=32, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", @@ -5929,8 +5929,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_traitement_aide_finale_minoration_forfaitaire_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=644, start_column=10, - end_line=644, end_column=32, + start_line=643, start_column=10, + end_line=643, end_column=32, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -5999,8 +5999,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_montant_forfaitaire_d832_27 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=627, start_column=11, - end_line=627, end_column=38, + start_line=626, start_column=11, + end_line=626, end_column=38, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6014,8 +6014,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_coefficient_multiplicateur_d832_25 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=618, start_column=12, - end_line=618, end_column=46, + start_line=617, start_column=12, + end_line=617, end_column=46, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6030,8 +6030,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_equivalence_loyer_eligible = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=621, start_column=12, - end_line=621, end_column=38, + start_line=620, start_column=12, + end_line=620, end_column=38, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6045,8 +6045,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_n_nombre_parts_d832_25_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=620, start_column=21, - end_line=620, end_column=43, + start_line=619, start_column=21, + end_line=619, end_column=43, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6058,9 +6058,9 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ return (equivalence_loyer_eligible - param_7) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=625, + start_line=624, start_column=11, - end_line=625, + end_line=624, end_column=41, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", @@ -6069,8 +6069,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_depense_nette_minimale_d832_27 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=625, start_column=11, - end_line=625, end_column=41, + start_line=624, start_column=11, + end_line=624, end_column=41, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6156,8 +6156,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_coefficient_prise_en_charge_d832_25_formule = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=638, start_column=10, - end_line=638, end_column=17, + start_line=637, start_column=10, + end_line=637, end_column=17, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6174,9 +6174,9 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ return money_of_cents_string("0") except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=623, + start_line=622, start_column=11, - end_line=623, + end_line=622, end_column=52, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", @@ -6185,8 +6185,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_abattement_depense_nette_minimale_d832_27 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=623, start_column=11, - end_line=623, end_column=52, + start_line=622, start_column=11, + end_line=622, end_column=52, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6197,8 +6197,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_equivalence_loyer_minimale = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=629, start_column=12, - end_line=629, end_column=38, + start_line=628, start_column=12, + end_line=628, end_column=38, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6220,8 +6220,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_coefficient_prise_en_charge_d832_25_coeff_arrondi = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=639, start_column=10, - end_line=639, end_column=23, + start_line=638, start_column=10, + end_line=638, end_column=23, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6243,9 +6243,9 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ return money_of_cents_string("0") except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=645, + start_line=644, start_column=10, - end_line=645, + end_line=644, end_column=20, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", @@ -6254,8 +6254,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_traitement_aide_finale_abattement = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=645, start_column=10, - end_line=645, end_column=20, + start_line=644, start_column=10, + end_line=644, end_column=20, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6281,8 +6281,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_coefficient_prise_en_charge_d832_25_seuil = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=640, start_column=10, - end_line=640, end_column=15, + start_line=639, start_column=10, + end_line=639, end_column=15, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6310,9 +6310,9 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ return money_of_cents_string("0") except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=646, + start_line=645, start_column=10, - end_line=646, + end_line=645, end_column=40, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", @@ -6321,8 +6321,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_traitement_aide_finale_contributions_sociales_arrondi_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=646, start_column=10, - end_line=646, end_column=40, + start_line=645, start_column=10, + end_line=645, end_column=40, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6340,8 +6340,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_aide_finale_formule_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=642, start_column=12, - end_line=642, end_column=31, + start_line=641, start_column=12, + end_line=641, end_column=31, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6359,9 +6359,9 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ param_11) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=647, + start_line=646, start_column=10, - end_line=647, + end_line=646, end_column=25, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", @@ -6370,8 +6370,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_traitement_aide_finale_montant_minimal_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=647, start_column=10, - end_line=647, end_column=25, + start_line=646, start_column=10, + end_line=646, end_column=25, law_headings=["Secteur logement-foyer", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6407,8 +6407,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_montant_forfaitaire_d832_10 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=696, start_column=11, - end_line=696, end_column=38, + start_line=695, start_column=11, + end_line=695, end_column=38, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6419,8 +6419,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_montant_minimal_aide_d832_10 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=697, start_column=11, - end_line=697, end_column=39, + start_line=696, start_column=11, + end_line=696, end_column=39, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6431,8 +6431,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_coefficient_multiplicateur_d832_11 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=699, start_column=11, - end_line=699, end_column=45, + start_line=698, start_column=11, + end_line=698, end_column=45, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6443,8 +6443,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_coefficient_multiplicateur_d832_18 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=700, start_column=11, - end_line=700, end_column=45, + start_line=699, start_column=11, + end_line=699, end_column=45, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6455,8 +6455,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_montant_limite_tranches_d832_15_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=701, start_column=11, - end_line=701, end_column=44, + start_line=700, start_column=11, + end_line=700, end_column=44, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6467,8 +6467,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_taux_tranche_inferieure_d832_15_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=702, start_column=11, - end_line=702, end_column=44, + start_line=701, start_column=11, + end_line=701, end_column=44, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6479,8 +6479,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_taux_tranche_superieure_d832_15_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=703, start_column=11, - end_line=703, end_column=44, + start_line=702, start_column=11, + end_line=702, end_column=44, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6492,8 +6492,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_taux_francs_vers_euros = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=704, start_column=11, - end_line=704, end_column=33, + start_line=703, start_column=11, + end_line=703, end_column=33, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6559,8 +6559,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_coefficient_multiplicateur_d832_17_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=698, start_column=11, - end_line=698, end_column=47, + start_line=697, start_column=11, + end_line=697, end_column=47, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6571,8 +6571,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_contributions_sociales_dot_date_courante_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=720, start_column=14, - end_line=720, end_column=50, + start_line=719, start_column=14, + end_line=719, end_column=50, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6635,7 +6635,7 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal raise EmptyError temp_montant_forfaitaire_charges_d832_10_8 = handle_default( SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=695, start_column=11, end_line=695, end_column=46, + start_line=694, start_column=11, end_line=694, end_column=46, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6677,7 +6677,7 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal raise EmptyError temp_montant_forfaitaire_charges_d832_10_8 = handle_default( SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=695, start_column=11, end_line=695, end_column=46, + start_line=694, start_column=11, end_line=694, end_column=46, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6689,8 +6689,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_montant_forfaitaire_charges_d832_10_8 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=695, start_column=11, - end_line=695, end_column=46, + start_line=694, start_column=11, + end_line=694, end_column=46, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6706,9 +6706,9 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal return money_of_cents_string("0") except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=714, + start_line=713, start_column=10, - end_line=714, + end_line=713, end_column=32, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", @@ -6717,8 +6717,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_traitement_aide_finale_minoration_forfaitaire_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=714, start_column=10, - end_line=714, end_column=32, + start_line=713, start_column=10, + end_line=713, end_column=32, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -6741,8 +6741,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_ressources_menage_avec_d832_18 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=694, start_column=11, - end_line=694, end_column=41, + start_line=693, start_column=11, + end_line=693, end_column=41, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -10153,8 +10153,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal else: raise EmptyError return handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=685, start_column=11, - end_line=685, end_column=46, + start_line=684, start_column=11, + end_line=684, end_column=46, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -10204,9 +10204,9 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal temp_calcul_plafond_mensualite_d832_10_3_1) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=685, + start_line=684, start_column=11, - end_line=685, + end_line=684, end_column=46, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", @@ -10215,8 +10215,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_calcul_plafond_mensualite_d832_10_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=685, start_column=11, - end_line=685, end_column=46, + start_line=684, start_column=11, + end_line=684, end_column=46, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -10227,8 +10227,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_n_nombre_parts_d832_11_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=686, start_column=11, - end_line=686, end_column=33, + start_line=685, start_column=11, + end_line=685, end_column=33, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -10248,9 +10248,9 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal return (mensualite_principale - param_14) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=691, + start_line=690, start_column=11, - end_line=691, + end_line=690, end_column=41, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", @@ -10259,8 +10259,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_depense_nette_minimale_d832_10 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=691, start_column=11, - end_line=691, end_column=41, + start_line=690, start_column=11, + end_line=690, end_column=41, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -10285,8 +10285,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_plafond_mensualite_d832_10_3_base = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=683, start_column=10, - end_line=683, end_column=14, + start_line=682, start_column=10, + end_line=682, end_column=14, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -10351,8 +10351,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_coefficient_prise_en_charge_d832_10_formule = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=688, start_column=10, - end_line=688, end_column=17, + start_line=687, start_column=10, + end_line=687, end_column=17, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -10371,9 +10371,9 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal return money_of_cents_string("0") except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=692, + start_line=691, start_column=11, - end_line=692, + end_line=691, end_column=52, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", @@ -10382,8 +10382,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_abattement_depense_nette_minimale_d832_10 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=692, start_column=11, - end_line=692, end_column=52, + start_line=691, start_column=11, + end_line=691, end_column=52, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -10429,8 +10429,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_plafond_mensualite_d832_10_3_coproprietaires = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=684, start_column=10, - end_line=684, end_column=25, + start_line=683, start_column=10, + end_line=683, end_column=25, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -10502,9 +10502,9 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal else: raise EmptyError temp_mensualite_minimale_9 = handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=681, + start_line=680, start_column=12, - end_line=681, end_column=31, + end_line=680, end_column=31, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -10515,8 +10515,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_mensualite_minimale_9 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=681, start_column=12, - end_line=681, end_column=31, + start_line=680, start_column=12, + end_line=680, end_column=31, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -10529,8 +10529,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_coefficient_prise_en_charge_d832_10_coeff_arrondi = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=689, start_column=10, - end_line=689, end_column=23, + start_line=688, start_column=10, + end_line=688, end_column=23, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -10552,9 +10552,9 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal return money_of_cents_string("0") except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=715, + start_line=714, start_column=10, - end_line=715, + end_line=714, end_column=20, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", @@ -10563,8 +10563,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_traitement_aide_finale_abattement_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=715, start_column=10, - end_line=715, end_column=20, + start_line=714, start_column=10, + end_line=714, end_column=20, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -10579,8 +10579,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_mensualite_eligible = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=680, start_column=12, - end_line=680, end_column=31, + start_line=679, start_column=12, + end_line=679, end_column=31, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -10595,8 +10595,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_coefficient_prise_en_charge_d832_10_seuil = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=690, start_column=10, - end_line=690, end_column=15, + start_line=689, start_column=10, + end_line=689, end_column=15, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -10624,9 +10624,9 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal return money_of_cents_string("0") except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=716, + start_line=715, start_column=10, - end_line=716, + end_line=715, end_column=40, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", @@ -10635,8 +10635,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_traitement_aide_finale_contributions_sociales_arrondi_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=716, start_column=10, - end_line=716, end_column=40, + start_line=715, start_column=10, + end_line=715, end_column=40, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -10655,8 +10655,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_aide_finale_formule_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=712, start_column=12, - end_line=712, end_column=31, + start_line=711, start_column=12, + end_line=711, end_column=31, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -10674,9 +10674,9 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal param_18) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=717, + start_line=716, start_column=10, - end_line=717, + end_line=716, end_column=25, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", @@ -10685,8 +10685,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_traitement_aide_finale_montant_minimal_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=717, start_column=10, - end_line=717, end_column=25, + start_line=716, start_column=10, + end_line=716, end_column=25, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -11575,8 +11575,8 @@ def ressources_aides_personnelle_logement(ressources_aides_personnelle_logement_ ressources_menage_arrondies_base = ressources_aides_personnelle_logement_in.ressources_menage_arrondies_base_in temp_ressources_menage_arrondies_seuil = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=496, start_column=10, - end_line=496, end_column=15, + start_line=495, start_column=10, + end_line=495, end_column=15, law_headings=["Prise en compte des ressources pour les aides personnelles au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -11586,8 +11586,8 @@ def ressources_aides_personnelle_logement(ressources_aides_personnelle_logement_ except EmptyError: temp_montant_forfaitaire_r_822_8 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=500, start_column=11, - end_line=500, end_column=38, + start_line=499, start_column=11, + end_line=499, end_column=38, law_headings=["Prise en compte des ressources pour les aides personnelles au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -11597,16 +11597,16 @@ def ressources_aides_personnelle_logement(ressources_aides_personnelle_logement_ except EmptyError: temp_montant_forfaitaire_r_822_7 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=502, start_column=11, - end_line=502, end_column=38, + start_line=501, start_column=11, + end_line=501, end_column=38, law_headings=["Prise en compte des ressources pour les aides personnelles au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) montant_forfaitaire_r_822_7 = temp_montant_forfaitaire_r_822_7 temp_ressources_forfaitaires_r822_20 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=504, start_column=11, - end_line=504, end_column=42, + start_line=503, start_column=11, + end_line=503, end_column=42, law_headings=["Prise en compte des ressources pour les aides personnelles au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -11624,8 +11624,8 @@ def ressources_aides_personnelle_logement(ressources_aides_personnelle_logement_ except EmptyError: temp_ressources_personnes_vivant_habituellement_foyer_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=498, start_column=11, - end_line=498, end_column=59, + start_line=497, start_column=11, + end_line=497, end_column=59, law_headings=["Prise en compte des ressources pour les aides personnelles au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -11669,8 +11669,8 @@ def ressources_aides_personnelle_logement(ressources_aides_personnelle_logement_ except EmptyError: temp_abattement_r_822_10 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=503, start_column=11, - end_line=503, end_column=30, + start_line=502, start_column=11, + end_line=502, end_column=30, law_headings=["Prise en compte des ressources pour les aides personnelles au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -11704,8 +11704,8 @@ def ressources_aides_personnelle_logement(ressources_aides_personnelle_logement_ except EmptyError: temp_abattement_r_822_8 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=499, start_column=11, - end_line=499, end_column=29, + start_line=498, start_column=11, + end_line=498, end_column=29, law_headings=["Prise en compte des ressources pour les aides personnelles au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -11759,8 +11759,8 @@ def ressources_aides_personnelle_logement(ressources_aides_personnelle_logement_ except EmptyError: temp_ressources_prises_en_compte_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=509, start_column=12, - end_line=509, end_column=39, + start_line=508, start_column=12, + end_line=508, end_column=39, law_headings=["Prise en compte des ressources pour les aides personnelles au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -11777,8 +11777,8 @@ def ressources_aides_personnelle_logement(ressources_aides_personnelle_logement_ except EmptyError: temp_abattement_r_822_7 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=501, start_column=11, - end_line=501, end_column=29, + start_line=500, start_column=11, + end_line=500, end_column=29, law_headings=["Prise en compte des ressources pour les aides personnelles au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -12042,8 +12042,8 @@ def calcul_allocation_logement_locatif(calcul_allocation_logement_locatif_in:Cal except EmptyError: temp_calcul_apl_locatif_dot_loyer_principal_base = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=792, start_column=14, - end_line=792, end_column=48, + start_line=791, start_column=14, + end_line=791, end_column=48, law_headings=["Secteur locatif", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12053,8 +12053,8 @@ def calcul_allocation_logement_locatif(calcul_allocation_logement_locatif_in:Cal except EmptyError: temp_calcul_apl_locatif_dot_ressources_menage_arrondies = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=794, start_column=14, - end_line=794, end_column=60, + start_line=793, start_column=14, + end_line=793, end_column=60, law_headings=["Secteur locatif", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12064,8 +12064,8 @@ def calcul_allocation_logement_locatif(calcul_allocation_logement_locatif_in:Cal except EmptyError: temp_calcul_apl_locatif_dot_beneficiaire_aide_adulte_ou_enfant_handicapes = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=796, start_column=14, - end_line=796, end_column=78, + start_line=795, start_column=14, + end_line=795, end_column=78, law_headings=["Secteur locatif", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12075,8 +12075,8 @@ def calcul_allocation_logement_locatif(calcul_allocation_logement_locatif_in:Cal except EmptyError: temp_calcul_apl_locatif_dot_date_courante = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=799, start_column=14, - end_line=799, end_column=46, + start_line=798, start_column=14, + end_line=798, end_column=46, law_headings=["Secteur locatif", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12086,8 +12086,8 @@ def calcul_allocation_logement_locatif(calcul_allocation_logement_locatif_in:Cal except EmptyError: temp_calcul_apl_locatif_dot_nombre_personnes_a_charge = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=801, start_column=14, - end_line=801, end_column=58, + start_line=800, start_column=14, + end_line=800, end_column=58, law_headings=["Secteur locatif", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12097,8 +12097,8 @@ def calcul_allocation_logement_locatif(calcul_allocation_logement_locatif_in:Cal except EmptyError: temp_calcul_apl_locatif_dot_situation_familiale_calcul_apl = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=803, start_column=14, - end_line=803, end_column=63, + start_line=802, start_column=14, + end_line=802, end_column=63, law_headings=["Secteur locatif", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12108,8 +12108,8 @@ def calcul_allocation_logement_locatif(calcul_allocation_logement_locatif_in:Cal except EmptyError: temp_calcul_apl_locatif_dot_zone = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=805, start_column=14, - end_line=805, end_column=37, + start_line=804, start_column=14, + end_line=804, end_column=37, law_headings=["Secteur locatif", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12119,8 +12119,8 @@ def calcul_allocation_logement_locatif(calcul_allocation_logement_locatif_in:Cal except EmptyError: temp_calcul_apl_locatif_dot_logement_est_chambre = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=807, start_column=14, - end_line=807, end_column=53, + start_line=806, start_column=14, + end_line=806, end_column=53, law_headings=["Secteur locatif", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12130,8 +12130,8 @@ def calcul_allocation_logement_locatif(calcul_allocation_logement_locatif_in:Cal except EmptyError: temp_calcul_apl_locatif_dot_agees_ou_handicap_adultes_hebergees_onereux_particuliers = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=810, start_column=5, - end_line=811, end_column=63, + start_line=809, start_column=5, + end_line=810, end_column=63, law_headings=["Secteur locatif", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12141,8 +12141,8 @@ def calcul_allocation_logement_locatif(calcul_allocation_logement_locatif_in:Cal except EmptyError: temp_calcul_apl_locatif_dot_type_aide = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=814, start_column=14, - end_line=814, end_column=42, + start_line=813, start_column=14, + end_line=813, end_column=42, law_headings=["Secteur locatif", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12152,8 +12152,8 @@ def calcul_allocation_logement_locatif(calcul_allocation_logement_locatif_in:Cal except EmptyError: temp_calcul_apl_locatif_dot_colocation = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=816, start_column=14, - end_line=816, end_column=43, + start_line=815, start_column=14, + end_line=815, end_column=43, law_headings=["Secteur locatif", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12163,8 +12163,8 @@ def calcul_allocation_logement_locatif(calcul_allocation_logement_locatif_in:Cal except EmptyError: temp_calcul_apl_locatif_dot_reduction_loyer_solidarite = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=818, start_column=14, - end_line=818, end_column=59, + start_line=817, start_column=14, + end_line=817, end_column=59, law_headings=["Secteur locatif", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12174,8 +12174,8 @@ def calcul_allocation_logement_locatif(calcul_allocation_logement_locatif_in:Cal except EmptyError: temp_calcul_apl_locatif_dot_logement_meuble_d842_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=820, start_column=14, - end_line=820, end_column=55, + start_line=819, start_column=14, + end_line=819, end_column=55, law_headings=["Secteur locatif", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12221,9 +12221,9 @@ def calcul_allocation_logement_locatif(calcul_allocation_logement_locatif_in:Cal param_24) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=789, + start_line=788, start_column=12, - end_line=789, + end_line=788, end_column=34, law_headings=["Secteur locatif", "Calcul du montant de l'allocation logement", @@ -12231,8 +12231,8 @@ def calcul_allocation_logement_locatif(calcul_allocation_logement_locatif_in:Cal except EmptyError: temp_traitement_aide_finale = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=789, start_column=12, - end_line=789, end_column=34, + start_line=788, start_column=12, + end_line=788, end_column=34, law_headings=["Secteur locatif", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12265,8 +12265,8 @@ def calcul_allocation_logement_locatif(calcul_allocation_logement_locatif_in:Cal except EmptyError: temp_aide_finale_formule_4 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=787, start_column=12, - end_line=787, end_column=31, + start_line=786, start_column=12, + end_line=786, end_column=31, law_headings=["Secteur locatif", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12289,8 +12289,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_montant_minimal_aide_d842_15 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=928, start_column=11, - end_line=928, end_column=39, + start_line=927, start_column=11, + end_line=927, end_column=39, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12300,8 +12300,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_montant_forfaitaire_d842_15 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=929, start_column=11, - end_line=929, end_column=38, + start_line=928, start_column=11, + end_line=928, end_column=38, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12311,8 +12311,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_montant_minimal_depense_nette_d842_17 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=930, start_column=11, - end_line=930, end_column=48, + start_line=929, start_column=11, + end_line=929, end_column=48, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12374,8 +12374,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_contributions_sociales_dot_date_courante_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=969, start_column=14, - end_line=969, end_column=50, + start_line=968, start_column=14, + end_line=968, end_column=50, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12387,8 +12387,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_calcul_apl_logement_foyer_dot_type_logement_foyer = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=953, start_column=14, - end_line=953, end_column=59, + start_line=952, start_column=14, + end_line=952, end_column=59, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12398,8 +12398,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_calcul_apl_logement_foyer_dot_date_conventionnement = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=955, start_column=14, - end_line=955, end_column=61, + start_line=954, start_column=14, + end_line=954, end_column=61, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12409,8 +12409,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_calcul_apl_logement_foyer_dot_ressources_menage_arrondies = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=959, start_column=14, - end_line=959, end_column=67, + start_line=958, start_column=14, + end_line=958, end_column=67, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12420,8 +12420,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_calcul_apl_logement_foyer_dot_nombre_personnes_a_charge = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=961, start_column=14, - end_line=961, end_column=65, + start_line=960, start_column=14, + end_line=960, end_column=65, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12431,8 +12431,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_calcul_apl_logement_foyer_dot_situation_familiale_calcul_apl = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=963, start_column=14, - end_line=963, end_column=70, + start_line=962, start_column=14, + end_line=962, end_column=70, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12442,8 +12442,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_calcul_apl_logement_foyer_dot_zone = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=965, start_column=14, - end_line=965, end_column=44, + start_line=964, start_column=14, + end_line=964, end_column=44, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12453,8 +12453,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_calcul_apl_logement_foyer_dot_date_courante = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=967, start_column=14, - end_line=967, end_column=53, + start_line=966, start_column=14, + end_line=966, end_column=53, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12464,8 +12464,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_calcul_apl_logement_foyer_dot_redevance = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=957, start_column=14, - end_line=957, end_column=49, + start_line=956, start_column=14, + end_line=956, end_column=49, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12528,9 +12528,9 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA else: raise EmptyError temp_montant_forfaitaire_charges_4 = handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=933, + start_line=932, start_column=12, - end_line=933, end_column=39, + end_line=932, end_column=39, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"]), [temp_montant_forfaitaire_charges_3, @@ -12540,8 +12540,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_montant_forfaitaire_charges_4 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=933, start_column=12, - end_line=933, end_column=39, + start_line=932, start_column=12, + end_line=932, end_column=39, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12758,9 +12758,9 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA else: raise EmptyError temp_equivalence_loyer_16 = handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=932, + start_line=931, start_column=12, - end_line=932, end_column=29, + end_line=931, end_column=29, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"]), [temp_equivalence_loyer_14, @@ -12774,8 +12774,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_equivalence_loyer_16 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=932, start_column=12, - end_line=932, end_column=29, + start_line=931, start_column=12, + end_line=931, end_column=29, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12790,9 +12790,9 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA return (param_25 - montant_forfaitaire_d842_15) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=946, + start_line=945, start_column=10, - end_line=946, + end_line=945, end_column=32, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", @@ -12800,8 +12800,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_traitement_aide_finale_minoration_forfaitaire_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=946, start_column=10, - end_line=946, end_column=32, + start_line=945, start_column=10, + end_line=945, end_column=32, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12863,8 +12863,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_coefficient_prise_en_charge = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=931, start_column=12, - end_line=931, end_column=39, + start_line=930, start_column=12, + end_line=930, end_column=39, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12876,9 +12876,9 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA param_26) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=926, + start_line=925, start_column=11, - end_line=926, + end_line=925, end_column=33, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", @@ -12886,8 +12886,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_depense_nette_minimale = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=926, start_column=11, - end_line=926, end_column=33, + start_line=925, start_column=11, + end_line=925, end_column=33, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12897,8 +12897,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_loyer_minimal = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=934, start_column=12, - end_line=934, end_column=25, + start_line=933, start_column=12, + end_line=933, end_column=25, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12914,9 +12914,9 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA return money_of_cents_string("0") except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=927, + start_line=926, start_column=11, - end_line=927, + end_line=926, end_column=44, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", @@ -12924,8 +12924,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_abattement_depense_nette_minimale = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=927, start_column=11, - end_line=927, end_column=44, + start_line=926, start_column=11, + end_line=926, end_column=44, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12937,8 +12937,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_aide_finale_formule_5 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=944, start_column=12, - end_line=944, end_column=31, + start_line=943, start_column=12, + end_line=943, end_column=31, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12959,9 +12959,9 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA param_28))) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=947, + start_line=946, start_column=10, - end_line=947, + end_line=946, end_column=32, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", @@ -12969,8 +12969,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_traitement_aide_finale_depense_nette_minimale = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=947, start_column=10, - end_line=947, end_column=32, + start_line=946, start_column=10, + end_line=946, end_column=32, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -12986,9 +12986,9 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA param_29) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=948, + start_line=947, start_column=10, - end_line=948, + end_line=947, end_column=19, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", @@ -12996,8 +12996,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_traitement_aide_finale_redevance = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=948, start_column=10, - end_line=948, end_column=19, + start_line=947, start_column=10, + end_line=947, end_column=19, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -13023,9 +13023,9 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA return money_of_cents_string("0") except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=949, + start_line=948, start_column=10, - end_line=949, + end_line=948, end_column=40, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", @@ -13033,8 +13033,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_traitement_aide_finale_contributions_sociales_arrondi_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=949, start_column=10, - end_line=949, end_column=40, + start_line=948, start_column=10, + end_line=948, end_column=40, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -13051,9 +13051,9 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA param_31) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=950, + start_line=949, start_column=10, - end_line=950, + end_line=949, end_column=25, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", @@ -13061,8 +13061,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_traitement_aide_finale_montant_minimal_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=950, start_column=10, - end_line=950, end_column=25, + start_line=949, start_column=10, + end_line=949, end_column=25, law_headings=["Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -13093,8 +13093,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_montant_forfaitaire_d842_6 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=857, start_column=11, - end_line=857, end_column=37, + start_line=856, start_column=11, + end_line=856, end_column=37, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -13105,8 +13105,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_taux_francs_vers_euros_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=860, start_column=11, - end_line=860, end_column=33, + start_line=859, start_column=11, + end_line=859, end_column=33, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -13116,8 +13116,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_montant_minimal_aide_d842_6 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=863, start_column=11, - end_line=863, end_column=38, + start_line=862, start_column=11, + end_line=862, end_column=38, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -13127,8 +13127,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_montant_forfaitaire_d842_11 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=864, start_column=11, - end_line=864, end_column=38, + start_line=863, start_column=11, + end_line=863, end_column=38, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -13138,8 +13138,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_montant_forfaitaire_d842_12 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=865, start_column=11, - end_line=865, end_column=38, + start_line=864, start_column=11, + end_line=864, end_column=38, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -13149,8 +13149,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_coefficient_d842_11 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=866, start_column=11, - end_line=866, end_column=30, + start_line=865, start_column=11, + end_line=865, end_column=30, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -13160,8 +13160,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_coefficient_d842_12 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=867, start_column=11, - end_line=867, end_column=30, + start_line=866, start_column=11, + end_line=866, end_column=30, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -13206,8 +13206,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_contributions_sociales_dot_date_courante_4 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=908, start_column=14, - end_line=908, end_column=50, + start_line=907, start_column=14, + end_line=907, end_column=50, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -13278,9 +13278,9 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac else: raise EmptyError temp_montant_forfaitaire_charges_11 = handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=850, + start_line=849, start_column=11, - end_line=850, end_column=38, + end_line=849, end_column=38, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"]), [temp_montant_forfaitaire_charges_9, @@ -13290,8 +13290,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_montant_forfaitaire_charges_11 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=850, start_column=11, - end_line=850, end_column=38, + start_line=849, start_column=11, + end_line=849, end_column=38, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -13306,9 +13306,9 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac return (param_32 - montant_forfaitaire_d842_6) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=880, + start_line=879, start_column=10, - end_line=880, + end_line=879, end_column=32, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", @@ -13316,8 +13316,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_traitement_aide_finale_minoration_forfaitaire_4 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=880, start_column=10, - end_line=880, end_column=32, + start_line=879, start_column=10, + end_line=879, end_column=32, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -15895,8 +15895,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac else: raise EmptyError return handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=855, start_column=10, - end_line=855, end_column=14, + start_line=854, start_column=10, + end_line=854, end_column=14, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"]), [temp_calcul_plafond_mensualite_d842_6_base_30, @@ -15925,9 +15925,9 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac temp_calcul_plafond_mensualite_d842_6_base_1) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=855, + start_line=854, start_column=10, - end_line=855, + end_line=854, end_column=14, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", @@ -15935,8 +15935,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_calcul_plafond_mensualite_d842_6_base = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=855, start_column=10, - end_line=855, end_column=14, + start_line=854, start_column=10, + end_line=854, end_column=14, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16015,9 +16015,9 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac else: raise EmptyError temp_seuil_minimal_ressources_menage_8 = handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=859, + start_line=858, start_column=11, - end_line=859, end_column=42, + end_line=858, end_column=42, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"]), [temp_seuil_minimal_ressources_menage_4, @@ -16027,8 +16027,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_seuil_minimal_ressources_menage_8 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=859, start_column=11, - end_line=859, end_column=42, + start_line=858, start_column=11, + end_line=858, end_column=42, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16040,9 +16040,9 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac montant_forfaitaire_charges_1) - param_34) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=861, + start_line=860, start_column=11, - end_line=861, + end_line=860, end_column=33, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", @@ -16050,8 +16050,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_depense_nette_minimale_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=861, start_column=11, - end_line=861, end_column=33, + start_line=860, start_column=11, + end_line=860, end_column=33, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16093,9 +16093,9 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac raise EmptyError except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=856, + start_line=855, start_column=10, - end_line=856, + end_line=855, end_column=26, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", @@ -16103,8 +16103,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_calcul_plafond_mensualite_d842_6_avec_copropriete = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=856, start_column=10, - end_line=856, end_column=26, + start_line=855, start_column=10, + end_line=855, end_column=26, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16127,8 +16127,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_ressources_menage_arrondies_seuil_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=835, start_column=10, - end_line=835, end_column=15, + start_line=834, start_column=10, + end_line=834, end_column=15, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16154,8 +16154,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_plafond_mensualite_d842_6 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=853, start_column=11, - end_line=853, end_column=36, + start_line=852, start_column=11, + end_line=852, end_column=36, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16218,8 +16218,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_calcul_apl_logement_foyer_dot_type_logement_foyer_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=892, start_column=14, - end_line=892, end_column=59, + start_line=891, start_column=14, + end_line=891, end_column=59, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16229,8 +16229,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_calcul_apl_logement_foyer_dot_date_conventionnement_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=894, start_column=14, - end_line=894, end_column=61, + start_line=893, start_column=14, + end_line=893, end_column=61, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16240,8 +16240,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_calcul_apl_logement_foyer_dot_ressources_menage_arrondies_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=898, start_column=14, - end_line=898, end_column=67, + start_line=897, start_column=14, + end_line=897, end_column=67, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16251,8 +16251,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_calcul_apl_logement_foyer_dot_nombre_personnes_a_charge_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=900, start_column=14, - end_line=900, end_column=65, + start_line=899, start_column=14, + end_line=899, end_column=65, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16262,8 +16262,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_calcul_apl_logement_foyer_dot_situation_familiale_calcul_apl_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=902, start_column=14, - end_line=902, end_column=70, + start_line=901, start_column=14, + end_line=901, end_column=70, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16273,8 +16273,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_calcul_apl_logement_foyer_dot_zone_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=904, start_column=14, - end_line=904, end_column=44, + start_line=903, start_column=14, + end_line=903, end_column=44, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16284,8 +16284,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_calcul_apl_logement_foyer_dot_date_courante_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=906, start_column=14, - end_line=906, end_column=53, + start_line=905, start_column=14, + end_line=905, end_column=53, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16295,8 +16295,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_calcul_apl_logement_foyer_dot_redevance_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=896, start_column=14, - end_line=896, end_column=49, + start_line=895, start_column=14, + end_line=895, end_column=49, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16382,8 +16382,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_seuil_minimal_depense_nette_minimale_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=858, start_column=11, - end_line=858, end_column=47, + start_line=857, start_column=11, + end_line=857, end_column=47, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16397,8 +16397,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_mensualite_eligible_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=849, start_column=11, - end_line=849, end_column=30, + start_line=848, start_column=11, + end_line=848, end_column=30, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16408,8 +16408,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_mensualite_minimale_10 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=851, start_column=11, - end_line=851, end_column=30, + start_line=850, start_column=11, + end_line=850, end_column=30, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16419,8 +16419,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_coefficient_prise_en_charge_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=852, start_column=11, - end_line=852, end_column=38, + start_line=851, start_column=11, + end_line=851, end_column=38, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16436,9 +16436,9 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac return money_of_cents_string("0") except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=862, + start_line=861, start_column=11, - end_line=862, + end_line=861, end_column=44, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", @@ -16446,8 +16446,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_abattement_depense_nette_minimale_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=862, start_column=11, - end_line=862, end_column=44, + start_line=861, start_column=11, + end_line=861, end_column=44, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16459,8 +16459,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_aide_finale_formule_6 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=877, start_column=12, - end_line=877, end_column=31, + start_line=876, start_column=12, + end_line=876, end_column=31, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16479,9 +16479,9 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac param_37))) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=881, + start_line=880, start_column=10, - end_line=881, + end_line=880, end_column=32, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", @@ -16489,8 +16489,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_traitement_aide_finale_depense_nette_minimale_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=881, start_column=10, - end_line=881, end_column=32, + start_line=880, start_column=10, + end_line=880, end_column=32, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16517,9 +16517,9 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac return money_of_cents_string("0") except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=882, + start_line=881, start_column=10, - end_line=882, + end_line=881, end_column=40, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", @@ -16527,8 +16527,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_traitement_aide_finale_contributions_sociales_arrondi_4 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=882, start_column=10, - end_line=882, end_column=40, + start_line=881, start_column=10, + end_line=881, end_column=40, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16545,9 +16545,9 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac param_39) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=883, + start_line=882, start_column=10, - end_line=883, + end_line=882, end_column=25, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", @@ -16555,8 +16555,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_traitement_aide_finale_montant_minimal_4 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=883, start_column=10, - end_line=883, end_column=25, + start_line=882, start_column=10, + end_line=882, end_column=25, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) @@ -16597,8 +16597,8 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal except EmptyError: temp_categorie_calcul_apl = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=741, start_column=11, - end_line=741, end_column=31, + start_line=740, start_column=11, + end_line=740, end_column=31, law_headings=["Tous secteurs", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -16611,8 +16611,8 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal except EmptyError: temp_ressources_menage_avec_arrondi = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=735, start_column=10, - end_line=735, end_column=22, + start_line=734, start_column=10, + end_line=734, end_column=22, law_headings=["Tous secteurs", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -16647,8 +16647,8 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal except EmptyError: temp_situation_familiale_calcul_apl = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=742, start_column=11, - end_line=742, end_column=41, + start_line=741, start_column=11, + end_line=741, end_column=41, law_headings=["Tous secteurs", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -17891,8 +17891,8 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal except EmptyError: temp_sous_calcul_traitement_26 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=744, start_column=11, - end_line=744, end_column=33, + start_line=743, start_column=11, + end_line=743, end_column=33, law_headings=["Tous secteurs", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -17905,9 +17905,9 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal param_40) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=747, + start_line=746, start_column=12, - end_line=747, + end_line=746, end_column=34, law_headings=["Tous secteurs", "Calcul du montant de l'aide personnalisée au logement", @@ -17916,8 +17916,8 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal except EmptyError: temp_traitement_aide_finale_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=747, start_column=12, - end_line=747, end_column=34, + start_line=746, start_column=12, + end_line=746, end_column=34, law_headings=["Tous secteurs", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -17928,8 +17928,8 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal except EmptyError: temp_aide_finale_formule_7 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=746, start_column=12, - end_line=746, end_column=31, + start_line=745, start_column=12, + end_line=745, end_column=31, law_headings=["Tous secteurs", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -17950,8 +17950,8 @@ def eligibilite_prime_de_demenagement(eligibilite_prime_de_demenagement_in:Eligi except EmptyError: temp_delai_apres_emmenagement_l823_8_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=458, start_column=11, - end_line=458, end_column=44, + start_line=457, start_column=11, + end_line=457, end_column=44, law_headings=["Éligibilité à la prime de déménagement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -17979,8 +17979,8 @@ def eligibilite_prime_de_demenagement(eligibilite_prime_de_demenagement_in:Eligi except EmptyError: temp_condition_rang_enfant_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=455, start_column=11, - end_line=455, end_column=32, + start_line=454, start_column=11, + end_line=454, end_column=32, law_headings=["Éligibilité à la prime de déménagement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -17990,8 +17990,8 @@ def eligibilite_prime_de_demenagement(eligibilite_prime_de_demenagement_in:Eligi except EmptyError: temp_base_mensuelle_allocations_familiales_dot_date_courante_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=472, start_column=14, - end_line=472, end_column=65, + start_line=471, start_column=14, + end_line=471, end_column=65, law_headings=["Éligibilité à la prime de déménagement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18003,8 +18003,8 @@ def eligibilite_prime_de_demenagement(eligibilite_prime_de_demenagement_in:Eligi except EmptyError: temp_eligibilite_apl_dot_menage = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=468, start_column=14, - end_line=468, end_column=36, + start_line=467, start_column=14, + end_line=467, end_column=36, law_headings=["Éligibilité à la prime de déménagement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18014,8 +18014,8 @@ def eligibilite_prime_de_demenagement(eligibilite_prime_de_demenagement_in:Eligi except EmptyError: temp_eligibilite_apl_dot_demandeur = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=469, start_column=14, - end_line=469, end_column=39, + start_line=468, start_column=14, + end_line=468, end_column=39, law_headings=["Éligibilité à la prime de déménagement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18025,8 +18025,8 @@ def eligibilite_prime_de_demenagement(eligibilite_prime_de_demenagement_in:Eligi except EmptyError: temp_eligibilite_apl_dot_date_courante = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=470, start_column=14, - end_line=470, end_column=43, + start_line=469, start_column=14, + end_line=469, end_column=43, law_headings=["Éligibilité à la prime de déménagement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18082,8 +18082,8 @@ def eligibilite_prime_de_demenagement(eligibilite_prime_de_demenagement_in:Eligi except EmptyError: temp_condition_periode_demenagement_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=456, start_column=11, - end_line=456, end_column=41, + start_line=455, start_column=11, + end_line=455, end_column=41, law_headings=["Éligibilité à la prime de déménagement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18119,8 +18119,8 @@ def eligibilite_prime_de_demenagement(eligibilite_prime_de_demenagement_in:Eligi except EmptyError: temp_plafond_d823_22_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=459, start_column=11, - end_line=459, end_column=26, + start_line=458, start_column=11, + end_line=458, end_column=26, law_headings=["Éligibilité à la prime de déménagement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18141,8 +18141,8 @@ def eligibilite_prime_de_demenagement(eligibilite_prime_de_demenagement_in:Eligi except EmptyError: temp_eligibilite_logement_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=457, start_column=11, - end_line=457, end_column=31, + start_line=456, start_column=11, + end_line=456, end_column=31, law_headings=["Éligibilité à la prime de déménagement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18156,8 +18156,8 @@ def eligibilite_prime_de_demenagement(eligibilite_prime_de_demenagement_in:Eligi except EmptyError: temp_montant_prime_demenagement = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=465, start_column=12, - end_line=465, end_column=38, + start_line=464, start_column=12, + end_line=464, end_column=38, law_headings=["Éligibilité à la prime de déménagement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18268,9 +18268,9 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem return False except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=366, + start_line=365, start_column=11, - end_line=366, + end_line=365, end_column=41, law_headings=["Éligibilité à l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -18278,8 +18278,8 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem except EmptyError: temp_caracteristiques_pret_l831_1_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=366, start_column=11, - end_line=366, end_column=41, + start_line=365, start_column=11, + end_line=365, end_column=41, law_headings=["Éligibilité à l'aide personnalisée au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18290,9 +18290,9 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem return False except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=367, + start_line=366, start_column=11, - end_line=367, + end_line=366, end_column=41, law_headings=["Éligibilité à l'aide personnalisée au logement", "Déclarations des champs d'application", @@ -18300,8 +18300,8 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem except EmptyError: temp_caracteristiques_pret_l831_1_6 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=367, start_column=11, - end_line=367, end_column=41, + start_line=366, start_column=11, + end_line=366, end_column=41, law_headings=["Éligibilité à l'aide personnalisée au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18386,8 +18386,8 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem except EmptyError: temp_condition_logement_pret_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=365, start_column=11, - end_line=365, end_column=34, + start_line=364, start_column=11, + end_line=364, end_column=34, law_headings=["Éligibilité à l'aide personnalisée au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18397,8 +18397,8 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem except EmptyError: temp_eligibilite_commune_dot_menage = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=378, start_column=14, - end_line=378, end_column=40, + start_line=377, start_column=14, + end_line=377, end_column=40, law_headings=["Éligibilité à l'aide personnalisée au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18408,8 +18408,8 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem except EmptyError: temp_eligibilite_commune_dot_demandeur = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=379, start_column=14, - end_line=379, end_column=43, + start_line=378, start_column=14, + end_line=378, end_column=43, law_headings=["Éligibilité à l'aide personnalisée au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18419,8 +18419,8 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem except EmptyError: temp_eligibilite_commune_dot_date_courante = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=380, start_column=14, - end_line=380, end_column=47, + start_line=379, start_column=14, + end_line=379, end_column=47, law_headings=["Éligibilité à l'aide personnalisée au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18576,8 +18576,8 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem except EmptyError: temp_condition_logement_bailleur_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=364, start_column=11, - end_line=364, end_column=38, + start_line=363, start_column=11, + end_line=363, end_column=38, law_headings=["Éligibilité à l'aide personnalisée au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18587,8 +18587,8 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem except EmptyError: temp_coefficents_enfants_garde_alternee_pris_en_compte_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=373, start_column=12, - end_line=373, end_column=61, + start_line=372, start_column=12, + end_line=372, end_column=61, law_headings=["Éligibilité à l'aide personnalisée au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18598,8 +18598,8 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem except EmptyError: temp_nombre_personnes_a_charge_prises_en_compte_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=372, start_column=12, - end_line=372, end_column=54, + start_line=371, start_column=12, + end_line=371, end_column=54, law_headings=["Éligibilité à l'aide personnalisée au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18617,8 +18617,8 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem except EmptyError: temp_eligibilite_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=371, start_column=12, - end_line=371, end_column=23, + start_line=370, start_column=12, + end_line=370, end_column=23, law_headings=["Éligibilité à l'aide personnalisée au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18638,8 +18638,8 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili except EmptyError: temp_duree_l841_1_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=405, start_column=11, - end_line=405, end_column=25, + start_line=404, start_column=11, + end_line=404, end_column=25, law_headings=["Éligibilité aux allocations de logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18649,8 +18649,8 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili except EmptyError: temp_prestations_familiales_dot_date_courante = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=421, start_column=14, - end_line=421, end_column=50, + start_line=420, start_column=14, + end_line=420, end_column=50, law_headings=["Éligibilité aux allocations de logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18661,8 +18661,8 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili except EmptyError: temp_prestations_familiales_dot_prestation_courante = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=422, start_column=14, - end_line=422, end_column=56, + start_line=421, start_column=14, + end_line=421, end_column=56, law_headings=["Éligibilité aux allocations de logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18673,8 +18673,8 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili except EmptyError: temp_prestations_familiales_dot_residence = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=426, start_column=14, - end_line=426, end_column=46, + start_line=425, start_column=14, + end_line=425, end_column=46, law_headings=["Éligibilité aux allocations de logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18860,8 +18860,8 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili except EmptyError: temp_condition_accession_propriete_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=402, start_column=11, - end_line=402, end_column=40, + start_line=401, start_column=11, + end_line=401, end_column=40, law_headings=["Éligibilité aux allocations de logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18871,8 +18871,8 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili except EmptyError: temp_eligibilite_commune_dot_menage_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=428, start_column=14, - end_line=428, end_column=40, + start_line=427, start_column=14, + end_line=427, end_column=40, law_headings=["Éligibilité aux allocations de logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18882,8 +18882,8 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili except EmptyError: temp_eligibilite_commune_dot_demandeur_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=429, start_column=14, - end_line=429, end_column=43, + start_line=428, start_column=14, + end_line=428, end_column=43, law_headings=["Éligibilité aux allocations de logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18893,8 +18893,8 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili except EmptyError: temp_eligibilite_commune_dot_date_courante_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=430, start_column=14, - end_line=430, end_column=47, + start_line=429, start_column=14, + end_line=429, end_column=47, law_headings=["Éligibilité aux allocations de logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18962,8 +18962,8 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili except EmptyError: temp_coefficents_enfants_garde_alternee_pris_en_compte_4 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=415, start_column=12, - end_line=415, end_column=61, + start_line=414, start_column=12, + end_line=414, end_column=61, law_headings=["Éligibilité aux allocations de logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18973,8 +18973,8 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili except EmptyError: temp_nombre_personnes_a_charge_prises_en_compte_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=414, start_column=12, - end_line=414, end_column=54, + start_line=413, start_column=12, + end_line=413, end_column=54, law_headings=["Éligibilité aux allocations de logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -18990,8 +18990,8 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili except EmptyError: temp_eligibilite_dispositions_communes = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=412, start_column=10, - end_line=412, end_column=31, + start_line=411, start_column=10, + end_line=411, end_column=31, law_headings=["Éligibilité aux allocations de logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -19164,8 +19164,8 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili except EmptyError: temp_eligibilite_allocation_logement_familiale_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=404, start_column=11, - end_line=404, end_column=52, + start_line=403, start_column=11, + end_line=403, end_column=52, law_headings=["Éligibilité aux allocations de logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -19206,9 +19206,9 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili else: raise EmptyError temp_eligibilite_l841_2_5 = handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=413, + start_line=412, start_column=10, - end_line=413, end_column=16, + end_line=412, end_column=16, law_headings=["Éligibilité aux allocations de logement", "Déclarations des champs d'application", "Prologue : aides au logement"]), [temp_eligibilite_l841_2_4, @@ -19232,8 +19232,8 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili except EmptyError: temp_eligibilite_l841_2_5 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=413, start_column=10, - end_line=413, end_column=16, + start_line=412, start_column=10, + end_line=412, end_column=16, law_headings=["Éligibilité aux allocations de logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) @@ -19275,8 +19275,8 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog except EmptyError: temp_categorie_calcul_apl_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=986, start_column=11, - end_line=986, end_column=31, + start_line=985, start_column=11, + end_line=985, end_column=31, law_headings=["Tous secteurs", "Secteur logement-foyer", "Calcul du montant de l'allocation logement", @@ -19289,8 +19289,8 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog except EmptyError: temp_ressources_menage_avec_arrondi_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=979, start_column=10, - end_line=979, end_column=22, + start_line=978, start_column=10, + end_line=978, end_column=22, law_headings=["Tous secteurs", "Secteur logement-foyer", "Calcul du montant de l'allocation logement", @@ -19325,8 +19325,8 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog except EmptyError: temp_situation_familiale_calcul_apl_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=987, start_column=11, - end_line=987, end_column=41, + start_line=986, start_column=11, + end_line=986, end_column=41, law_headings=["Tous secteurs", "Secteur logement-foyer", "Calcul du montant de l'allocation logement", @@ -21535,8 +21535,8 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog except EmptyError: temp_sous_calcul_traitement_103 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=989, start_column=11, - end_line=989, end_column=33, + start_line=988, start_column=11, + end_line=988, end_column=33, law_headings=["Tous secteurs", "Secteur logement-foyer", "Calcul du montant de l'allocation logement", @@ -21549,9 +21549,9 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog param_43) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=992, + start_line=991, start_column=12, - end_line=992, + end_line=991, end_column=34, law_headings=["Tous secteurs", "Secteur logement-foyer", @@ -21560,8 +21560,8 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog except EmptyError: temp_traitement_aide_finale_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=992, start_column=12, - end_line=992, end_column=34, + start_line=991, start_column=12, + end_line=991, end_column=34, law_headings=["Tous secteurs", "Secteur logement-foyer", "Calcul du montant de l'allocation logement", @@ -21572,8 +21572,8 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog except EmptyError: temp_aide_finale_formule_8 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=991, start_column=12, - end_line=991, end_column=31, + start_line=990, start_column=12, + end_line=990, end_column=31, law_headings=["Tous secteurs", "Secteur logement-foyer", "Calcul du montant de l'allocation logement", @@ -21592,8 +21592,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_eligibilite_allocation_logement_dot_date_courante = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1070, - start_column=14, end_line=1070, + start_line=1069, + start_column=14, end_line=1069, end_column=59, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21603,8 +21603,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_eligibilite_allocation_logement_dot_menage = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1062, - start_column=14, end_line=1062, + start_line=1061, + start_column=14, end_line=1061, end_column=52, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21614,8 +21614,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_eligibilite_allocation_logement_dot_demandeur = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1066, - start_column=14, end_line=1066, + start_line=1065, + start_column=14, end_line=1065, end_column=55, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21646,8 +21646,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_eligibilite_aide_personnalisee_logement_dot_menage = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1060, - start_column=14, end_line=1060, + start_line=1059, + start_column=14, end_line=1059, end_column=60, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21657,8 +21657,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_eligibilite_aide_personnalisee_logement_dot_demandeur = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1064, - start_column=14, end_line=1064, + start_line=1063, + start_column=14, end_line=1063, end_column=63, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21668,8 +21668,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_eligibilite_aide_personnalisee_logement_dot_date_courante = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1068, - start_column=14, end_line=1068, + start_line=1067, + start_column=14, end_line=1067, end_column=67, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21686,8 +21686,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_calcul_allocation_logement_dot_mode_occupation = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1074, - start_column=14, end_line=1074, + start_line=1073, + start_column=14, end_line=1073, end_column=56, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21697,8 +21697,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_calcul_allocation_logement_dot_ressources_menage_sans_arrondi = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1078, - start_column=14, end_line=1078, + start_line=1077, + start_column=14, end_line=1077, end_column=58, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21708,8 +21708,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_calcul_allocation_logement_dot_situation_familiale = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1082, - start_column=14, end_line=1082, + start_line=1081, + start_column=14, end_line=1081, end_column=60, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21719,8 +21719,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_calcul_allocation_logement_dot_nombre_personnes_a_charge = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1089, - start_column=14, end_line=1089, + start_line=1088, + start_column=14, end_line=1088, end_column=66, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21730,8 +21730,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_calcul_allocation_logement_dot_zone = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1093, - start_column=14, end_line=1093, + start_line=1092, + start_column=14, end_line=1092, end_column=45, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21741,8 +21741,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_calcul_allocation_logement_dot_date_courante = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1097, - start_column=14, end_line=1097, + start_line=1096, + start_column=14, end_line=1096, end_column=54, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21789,8 +21789,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_calcul_aide_personnalisee_logement_dot_mode_occupation = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1072, - start_column=14, end_line=1072, + start_line=1071, + start_column=14, end_line=1071, end_column=64, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21816,8 +21816,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_calcul_aide_personnalisee_logement_dot_ressources_menage_sans_arrondi = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1076, - start_column=14, end_line=1076, + start_line=1075, + start_column=14, end_line=1075, end_column=66, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21827,8 +21827,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_calcul_aide_personnalisee_logement_dot_situation_familiale = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1080, - start_column=14, end_line=1080, + start_line=1079, + start_column=14, end_line=1079, end_column=68, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21838,8 +21838,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_calcul_aide_personnalisee_logement_dot_nombre_personnes_a_charge = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1085, start_column=5, - end_line=1085, end_column=65, + start_line=1084, start_column=5, + end_line=1084, end_column=65, law_headings=["Calculette globale", "Prologue : aides au logement"])) calcul_aide_personnalisee_logement_dot_nombre_personnes_a_charge = temp_calcul_aide_personnalisee_logement_dot_nombre_personnes_a_charge @@ -21848,8 +21848,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_calcul_aide_personnalisee_logement_dot_zone = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1091, - start_column=14, end_line=1091, + start_line=1090, + start_column=14, end_line=1090, end_column=53, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21859,8 +21859,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_calcul_aide_personnalisee_logement_dot_date_courante = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1095, - start_column=14, end_line=1095, + start_line=1094, + start_column=14, end_line=1094, end_column=62, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21879,8 +21879,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_coefficents_enfants_garde_alternee_pris_en_compte_5 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1056, - start_column=12, end_line=1056, + start_line=1055, + start_column=12, end_line=1055, end_column=61, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21901,8 +21901,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_eligibilite_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1053, - start_column=12, end_line=1053, + start_line=1052, + start_column=12, end_line=1052, end_column=23, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21943,17 +21943,17 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides param_44) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1055, + start_line=1054, start_column=12, - end_line=1055, + end_line=1054, end_column=34, law_headings=["Calculette globale", "Prologue : aides au logement"])) except EmptyError: temp_traitement_aide_finale_4 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1055, - start_column=12, end_line=1055, + start_line=1054, + start_column=12, end_line=1054, end_column=34, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -21989,8 +21989,8 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides except EmptyError: temp_aide_finale_formule_9 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1054, - start_column=12, end_line=1054, + start_line=1053, + start_column=12, end_line=1053, end_column=31, law_headings=["Calculette globale", "Prologue : aides au logement"])) @@ -22031,8 +22031,8 @@ def calculette_aides_au_logement_garde_alternee(calculette_aides_au_logement_gar except EmptyError: temp_menage_sans_enfants_garde_alternee_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1119, - start_column=11, end_line=1119, + start_line=1118, + start_column=11, end_line=1118, end_column=45, law_headings=["Calculette avec garde alternée", "Prologue : aides au logement"])) @@ -22042,8 +22042,8 @@ def calculette_aides_au_logement_garde_alternee(calculette_aides_au_logement_gar except EmptyError: temp_calculette_dot_menage = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1130, - start_column=14, end_line=1130, + start_line=1129, + start_column=14, end_line=1129, end_column=31, law_headings=["Calculette avec garde alternée", "Prologue : aides au logement"])) @@ -22053,8 +22053,8 @@ def calculette_aides_au_logement_garde_alternee(calculette_aides_au_logement_gar except EmptyError: temp_calculette_dot_demandeur = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1132, - start_column=14, end_line=1132, + start_line=1131, + start_column=14, end_line=1131, end_column=34, law_headings=["Calculette avec garde alternée", "Prologue : aides au logement"])) @@ -22064,8 +22064,8 @@ def calculette_aides_au_logement_garde_alternee(calculette_aides_au_logement_gar except EmptyError: temp_calculette_dot_date_courante = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1134, - start_column=14, end_line=1134, + start_line=1133, + start_column=14, end_line=1133, end_column=38, law_headings=["Calculette avec garde alternée", "Prologue : aides au logement"])) @@ -22075,8 +22075,8 @@ def calculette_aides_au_logement_garde_alternee(calculette_aides_au_logement_gar except EmptyError: temp_calculette_dot_ressources_menage_prises_en_compte = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1136, - start_column=14, end_line=1136, + start_line=1135, + start_column=14, end_line=1135, end_column=59, law_headings=["Calculette avec garde alternée", "Prologue : aides au logement"])) @@ -22094,8 +22094,8 @@ def calculette_aides_au_logement_garde_alternee(calculette_aides_au_logement_gar except EmptyError: temp_calculette_sans_garde_alternee_dot_menage = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1138, - start_column=14, end_line=1138, + start_line=1137, + start_column=14, end_line=1137, end_column=51, law_headings=["Calculette avec garde alternée", "Prologue : aides au logement"])) @@ -22105,8 +22105,8 @@ def calculette_aides_au_logement_garde_alternee(calculette_aides_au_logement_gar except EmptyError: temp_calculette_sans_garde_alternee_dot_demandeur = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1140, - start_column=14, end_line=1140, + start_line=1139, + start_column=14, end_line=1139, end_column=54, law_headings=["Calculette avec garde alternée", "Prologue : aides au logement"])) @@ -22116,8 +22116,8 @@ def calculette_aides_au_logement_garde_alternee(calculette_aides_au_logement_gar except EmptyError: temp_calculette_sans_garde_alternee_dot_date_courante = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1142, - start_column=14, end_line=1142, + start_line=1141, + start_column=14, end_line=1141, end_column=58, law_headings=["Calculette avec garde alternée", "Prologue : aides au logement"])) @@ -22127,8 +22127,8 @@ def calculette_aides_au_logement_garde_alternee(calculette_aides_au_logement_gar except EmptyError: temp_calculette_sans_garde_alternee_dot_ressources_menage_prises_en_compte = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1145, start_column=5, - end_line=1145, end_column=70, + start_line=1144, start_column=5, + end_line=1144, end_column=70, law_headings=["Calculette avec garde alternée", "Prologue : aides au logement"])) calculette_sans_garde_alternee_dot_ressources_menage_prises_en_compte = temp_calculette_sans_garde_alternee_dot_ressources_menage_prises_en_compte @@ -22145,8 +22145,8 @@ def calculette_aides_au_logement_garde_alternee(calculette_aides_au_logement_gar except EmptyError: temp_eligibilite_4 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1126, - start_column=12, end_line=1126, + start_line=1125, + start_column=12, end_line=1125, end_column=23, law_headings=["Calculette avec garde alternée", "Prologue : aides au logement"])) @@ -22156,8 +22156,8 @@ def calculette_aides_au_logement_garde_alternee(calculette_aides_au_logement_gar except EmptyError: temp_coefficents_enfants_garde_alternee_pris_en_compte_6 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1120, - start_column=11, end_line=1120, + start_line=1119, + start_column=11, end_line=1119, end_column=60, law_headings=["Calculette avec garde alternée", "Prologue : aides au logement"])) @@ -22179,8 +22179,8 @@ def calculette_aides_au_logement_garde_alternee(calculette_aides_au_logement_gar except EmptyError: temp_aide_finale_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", - start_line=1127, - start_column=12, end_line=1127, + start_line=1126, + start_column=12, end_line=1126, end_column=23, law_headings=["Calculette avec garde alternée", "Prologue : aides au logement"])) From 3f487a16ed86501490b9a6525542f975a12ea233 Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Thu, 12 Jan 2023 11:12:48 +0100 Subject: [PATCH 02/10] WIP: handle toplevel definitions at the parser level --- compiler/desugared/name_resolution.ml | 9 ++++++++ compiler/shared_ast/definitions.ml | 9 +++++++- compiler/surface/ast.ml | 32 ++++++++++++++++++++++++++- compiler/surface/lexer.cppo.ml | 3 +++ compiler/surface/parser.messages | 6 +++-- compiler/surface/parser.mly | 20 +++++++++++++++++ compiler/surface/tokens.mly | 2 +- 7 files changed, 76 insertions(+), 5 deletions(-) diff --git a/compiler/desugared/name_resolution.ml b/compiler/desugared/name_resolution.ml index 6128b675..8a460288 100644 --- a/compiler/desugared/name_resolution.ml +++ b/compiler/desugared/name_resolution.ml @@ -638,6 +638,9 @@ let process_name_item (ctxt : context) (item : Surface.Ast.code_item Marked.pos) (TEnum e_uid) ctxt.typedefs; } | ScopeUse _ -> ctxt + | TopDef _ -> + Errors.raise_spanned_error (Marked.get_mark item) + "Toplevel definitions not handled yet" (** Process a code item that is a declaration *) let process_decl_item (ctxt : context) (item : Surface.Ast.code_item Marked.pos) @@ -647,6 +650,9 @@ let process_decl_item (ctxt : context) (item : Surface.Ast.code_item Marked.pos) | StructDecl sdecl -> process_struct_decl ctxt sdecl | EnumDecl edecl -> process_enum_decl ctxt edecl | ScopeUse _ -> ctxt + | TopDef _ -> + Errors.raise_spanned_error (Marked.get_mark item) + "Toplevel definitions not handled yet" (** Process a code block *) let process_code_block @@ -867,6 +873,9 @@ let process_use_item (ctxt : context) (item : Surface.Ast.code_item Marked.pos) match Marked.unmark item with | ScopeDecl _ | StructDecl _ | EnumDecl _ -> ctxt | ScopeUse suse -> process_scope_use ctxt suse + | TopDef _ -> + Errors.raise_spanned_error (Marked.get_mark item) + "Toplevel definitions not handled yet" (** {1 API} *) diff --git a/compiler/shared_ast/definitions.ml b/compiler/shared_ast/definitions.ml index 154a77e4..79c0accb 100644 --- a/compiler/shared_ast/definitions.ml +++ b/compiler/shared_ast/definitions.ml @@ -23,6 +23,7 @@ open Catala_utils module Runtime = Runtime_ocaml.Runtime module ScopeName = Uid.Gen () +module TopdefName = Uid.Gen () module StructName = Uid.Gen () module StructField = Uid.Gen () module EnumName = Uid.Gen () @@ -440,12 +441,18 @@ type 'e scope_def = { scope_next : ('e, 'e scopes) binder; } constraint 'e = (_ any, _ mark) gexpr +(* and 'e topdef = { + * topdef_name : TopdefName.t; + * topdef_expr : 'e; + * topdef_next : ('e, 'e scopes) binder; + * } + * constraint 'e = (_ any, _ mark) gexpr *) (** Finally, we do the same transformation for the whole program for the kinded lets. This permit us to use bindlib variables for scopes names. *) and 'e scopes = | Nil - | ScopeDef of 'e scope_def + | ScopeDef of 'e scope_def (* | Topdef of 'e topdef *) constraint 'e = (_ any, _ mark) gexpr type struct_ctx = typ StructField.Map.t StructName.Map.t diff --git a/compiler/surface/ast.ml b/compiler/surface/ast.ml index 61b3d928..55ed59a8 100644 --- a/compiler/surface/ast.ml +++ b/compiler/surface/ast.ml @@ -737,17 +737,46 @@ type scope_decl = { name = "scope_decl_iter"; }] +type top_def = { + topdef_name : lident Marked.pos; + topdef_args : (lident Marked.pos * base_typ_data Marked.pos) list; + (** Empty list if this is not a function *) + topdef_type : base_typ_data Marked.pos; + (** Output type if this is a function *) + topdef_expr : expression; +} +[@@deriving + visitors + { + variety = "map"; + ancestors = ["lident_map"; "typ_map"; "expression_map"]; + name = "top_def_map"; + }, + visitors + { + variety = "iter"; + ancestors = ["lident_iter"; "typ_iter"; "expression_iter"]; + name = "top_def_iter"; + }] + type code_item = | ScopeUse of scope_use | ScopeDecl of scope_decl | StructDecl of struct_decl | EnumDecl of enum_decl + | TopDef of top_def [@@deriving visitors { variety = "map"; ancestors = - ["scope_decl_map"; "enum_decl_map"; "struct_decl_map"; "scope_use_map"]; + [ + "scope_decl_map"; + "enum_decl_map"; + "struct_decl_map"; + "scope_use_map"; + "top_def_map"; + ]; name = "code_item_map"; }, visitors @@ -759,6 +788,7 @@ type code_item = "enum_decl_iter"; "struct_decl_iter"; "scope_use_iter"; + "top_def_iter"; ]; name = "code_item_iter"; }] diff --git a/compiler/surface/lexer.cppo.ml b/compiler/surface/lexer.cppo.ml index cd075f67..f05760ea 100644 --- a/compiler/surface/lexer.cppo.ml +++ b/compiler/surface/lexer.cppo.ml @@ -705,6 +705,9 @@ let rec lex_code (lexbuf : lexbuf) : token = | '.' -> L.update_acc lexbuf; DOT + | ',' -> + L.update_acc lexbuf; + COMMA | uppercase, Star (uppercase | lowercase | digit | '_' | '\'') -> (* Name of constructor *) L.update_acc lexbuf; diff --git a/compiler/surface/parser.messages b/compiler/surface/parser.messages index b278b95b..841b0cc6 100644 --- a/compiler/surface/parser.messages +++ b/compiler/surface/parser.messages @@ -129,7 +129,7 @@ source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON CONDITION LIDENT DEPENDS ## ## Ends in an error in state: 286. ## -## typ -> COLLECTION . typ [ STATE SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DEPENDS DECLARATION DATA CONTEXT CONDITION ALT ] +## typ -> COLLECTION . typ [ STATE SCOPE RPAREN OUTPUT LIDENT INTERNAL INPUT END_CODE DEPENDS DEFINED_AS DECLARATION DATA CONTEXT CONDITION COMMA ALT ] ## ## The known suffix of the stack is as follows: ## COLLECTION @@ -264,6 +264,8 @@ source_file: BEGIN_CODE DECLARATION YEAR ## code_item -> DECLARATION . STRUCT UIDENT COLON list(addpos(struct_scope)) [ SCOPE END_CODE DECLARATION ] ## code_item -> DECLARATION . SCOPE UIDENT COLON nonempty_list(addpos(scope_decl_item)) [ SCOPE END_CODE DECLARATION ] ## code_item -> DECLARATION . ENUM UIDENT COLON list(addpos(enum_decl_line)) [ SCOPE END_CODE DECLARATION ] +## code_item -> DECLARATION . lident CONTENT typ DEPENDS separated_nonempty_list(COMMA,var_content) DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] +## code_item -> DECLARATION . lident CONTENT typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] ## ## The known suffix of the stack is as follows: ## DECLARATION @@ -1003,7 +1005,7 @@ expected the name of the scope being used source_file: BEGIN_CODE YEAR ## -## Ends in an error in state: 353. +## Ends in an error in state: 370. ## ## source_file_item -> BEGIN_CODE . code END_CODE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] ## diff --git a/compiler/surface/parser.mly b/compiler/surface/parser.mly index 5c3f7670..1682bcb5 100644 --- a/compiler/surface/parser.mly +++ b/compiler/surface/parser.mly @@ -596,6 +596,15 @@ let enum_decl_line := } } +(* let def_depends == + * | DEPENDS ; arg = lident ; CONTENT ; ty_arg = addpos(typ) ; <> *) + +let var_content == +| ~ = lident ; CONTENT ; ty = addpos(typ) ; <> +let depends_stance == +| DEPENDS ; args = separated_nonempty_list(COMMA,var_content) ; <> +| DEPENDS ; LPAREN ; args = separated_nonempty_list(COMMA,var_content) ; RPAREN ; <> + let code_item := | SCOPE ; c = uident ; e = option(preceded(UNDER_CONDITION,expression)) ; @@ -627,6 +636,17 @@ let code_item := enum_decl_cases = cases; } } +| DECLARATION ; name = lident ; + CONTENT ; ty = addpos(typ) ; + args = depends_stance ; + DEFINED_AS ; e = expression ; { + TopDef { + topdef_name = name; + topdef_args = args; + topdef_type = ty; + topdef_expr = e; + } +} let code := | code = list(addpos(code_item)) ; <> diff --git a/compiler/surface/tokens.mly b/compiler/surface/tokens.mly index 8e9715eb..14730b9d 100644 --- a/compiler/surface/tokens.mly +++ b/compiler/surface/tokens.mly @@ -41,7 +41,7 @@ %token OF INTEGER COLLECTION CONTAINS AMONG %token RULE CONDITION DEFINED_AS %token LESSER GREATER LESSER_EQUAL GREATER_EQUAL -%token LET EXISTS IN SUCH THAT +%token LET EXISTS IN SUCH THAT COMMA %token DOT AND OR XOR LPAREN RPAREN EQUAL %token CARDINAL ASSERTION FIXED BY YEAR MONTH DAY %token PLUS MINUS MULT DIV From 98ebc36343e7dfe18d5b9c17c8640e3098f3dcb2 Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Fri, 13 Jan 2023 14:49:05 +0100 Subject: [PATCH 03/10] Add all missing parser error messages ... that's one less thing to do Two notes: - Updated the syntax errors in examples/NSW_community_gaming/tests/test_nsw_social_housie.catala_en ; those probably aren't expected though, but fixing them is outside my purpose here - There is consensus on keeping the error messages in English; however, here, the error messages include hints on the syntax to use, which are only valid for users of the English syntax. * A possible solution would be to apply cppo on parser.messages, using the macros already defined in lexer_LANG.cppo.ml. However, we would then need to tweak (or duplicate!) the parser to use the messages for the correct language. Furthermore, updating and merging the file on parser updates would need special care. * Another, maybe easier solution would be manual processing, using a custom escape in the parser messages and rewriting that at runtime when printing the message. We would need to extract a runtime version of the macro definitions though. --- compiler/surface/lexer.cppo.ml | 7 +- compiler/surface/lexer_common.ml | 1 - compiler/surface/parser.messages | 3384 ++++++++++++++++- compiler/surface/parser.mly | 2 +- compiler/surface/tokens.mly | 2 +- doc/syntax/syntax_en.tex | 2 +- .../tests/test_nsw_social_housie.catala_en | 8 +- 7 files changed, 3296 insertions(+), 110 deletions(-) diff --git a/compiler/surface/lexer.cppo.ml b/compiler/surface/lexer.cppo.ml index f05760ea..bfbb6ac4 100644 --- a/compiler/surface/lexer.cppo.ml +++ b/compiler/surface/lexer.cppo.ml @@ -601,14 +601,16 @@ let rec lex_code (lexbuf : lexbuf) : token = Buffer.add_string cents (String.make (2 - Buffer.length cents) '0'); L.update_acc lexbuf; MONEY_AMOUNT (Buffer.contents units, Buffer.contents cents) - | Rep (digit, 4), '-', Rep (digit, 2), '-', Rep (digit, 2) -> + | '|', Rep (digit, 4), '-', Rep (digit, 2), '-', Rep (digit, 2), '|' -> let rex = Re.(compile @@ whole_string @@ seq [ + char '|'; group (repn digit 4 None); char '-'; group (repn digit 2 None); char '-'; group (repn digit 2 None); + char '|'; ]) in let date_parts = R.get_substring (R.exec ~rex (Utf8.lexeme lexbuf)) in @@ -687,9 +689,6 @@ let rec lex_code (lexbuf : lexbuf) : token = | ']' -> L.update_acc lexbuf; RBRACKET - | '|' -> - L.update_acc lexbuf; - BAR | ':' -> L.update_acc lexbuf; COLON diff --git a/compiler/surface/lexer_common.ml b/compiler/surface/lexer_common.ml index 203f78da..b0dcea0a 100644 --- a/compiler/surface/lexer_common.ml +++ b/compiler/surface/lexer_common.ml @@ -84,7 +84,6 @@ let token_list_language_agnostic : (string * token) list = "-", MINUS KPoly; "*", MULT KPoly; "/", DIV KPoly; - "|", BAR; ":", COLON; ";", SEMICOLON; "--", ALT; diff --git a/compiler/surface/parser.messages b/compiler/surface/parser.messages index 841b0cc6..e1187a53 100644 --- a/compiler/surface/parser.messages +++ b/compiler/surface/parser.messages @@ -1,6 +1,6 @@ source_file: BEGIN_CODE DECLARATION ENUM UIDENT COLON ALT UIDENT CONTENT TEXT YEAR ## -## Ends in an error in state: 335. +## Ends in an error in state: 333. ## ## list(addpos(enum_decl_line)) -> enum_decl_line . list(addpos(enum_decl_line)) [ SCOPE END_CODE DECLARATION ] ## @@ -12,7 +12,7 @@ expected another enum case, or a new declaration or scope use source_file: BEGIN_CODE DECLARATION ENUM UIDENT COLON ALT UIDENT CONTENT YEAR ## -## Ends in an error in state: 331. +## Ends in an error in state: 329. ## ## option(preceded(CONTENT,addpos(typ))) -> CONTENT . typ [ SCOPE END_CODE DECLARATION ALT ] ## @@ -24,7 +24,7 @@ expected a content type source_file: BEGIN_CODE DECLARATION ENUM UIDENT COLON ALT UIDENT YEAR ## -## Ends in an error in state: 330. +## Ends in an error in state: 328. ## ## enum_decl_line -> ALT UIDENT . option(preceded(CONTENT,addpos(typ))) [ SCOPE END_CODE DECLARATION ALT ] ## @@ -36,7 +36,7 @@ expected a payload for your enum case, or another case or declaration source_file: BEGIN_CODE DECLARATION ENUM UIDENT COLON ALT YEAR ## -## Ends in an error in state: 329. +## Ends in an error in state: 327. ## ## enum_decl_line -> ALT . UIDENT option(preceded(CONTENT,addpos(typ))) [ SCOPE END_CODE DECLARATION ALT ] ## @@ -48,7 +48,7 @@ expected the name of an enum case source_file: BEGIN_CODE DECLARATION ENUM UIDENT COLON YEAR ## -## Ends in an error in state: 328. +## Ends in an error in state: 326. ## ## code_item -> DECLARATION ENUM UIDENT COLON . list(addpos(enum_decl_line)) [ SCOPE END_CODE DECLARATION ] ## @@ -60,7 +60,7 @@ expected an enum case source_file: BEGIN_CODE DECLARATION ENUM UIDENT YEAR ## -## Ends in an error in state: 327. +## Ends in an error in state: 325. ## ## code_item -> DECLARATION ENUM UIDENT . COLON list(addpos(enum_decl_line)) [ SCOPE END_CODE DECLARATION ] ## @@ -72,7 +72,7 @@ expected a colon source_file: BEGIN_CODE DECLARATION ENUM YEAR ## -## Ends in an error in state: 326. +## Ends in an error in state: 324. ## ## code_item -> DECLARATION ENUM . UIDENT COLON list(addpos(enum_decl_line)) [ SCOPE END_CODE DECLARATION ] ## @@ -82,16 +82,9 @@ source_file: BEGIN_CODE DECLARATION ENUM YEAR expected the name of your enum - - - - - - - source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON YEAR ## -## Ends in an error in state: 301. +## Ends in an error in state: 299. ## ## code_item -> DECLARATION SCOPE UIDENT COLON . nonempty_list(addpos(scope_decl_item)) [ SCOPE END_CODE DECLARATION ] ## @@ -103,7 +96,7 @@ expected a context item introduced by "context" source_file: BEGIN_CODE DECLARATION SCOPE UIDENT YEAR ## -## Ends in an error in state: 300. +## Ends in an error in state: 298. ## ## code_item -> DECLARATION SCOPE UIDENT . COLON nonempty_list(addpos(scope_decl_item)) [ SCOPE END_CODE DECLARATION ] ## @@ -115,7 +108,7 @@ expected a colon followed by the list of context items of this scope source_file: BEGIN_CODE DECLARATION SCOPE YEAR ## -## Ends in an error in state: 299. +## Ends in an error in state: 297. ## ## code_item -> DECLARATION SCOPE . UIDENT COLON nonempty_list(addpos(scope_decl_item)) [ SCOPE END_CODE DECLARATION ] ## @@ -127,7 +120,7 @@ expected the name of the scope you are declaring source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON CONDITION LIDENT DEPENDS COLLECTION YEAR ## -## Ends in an error in state: 286. +## Ends in an error in state: 284. ## ## typ -> COLLECTION . typ [ STATE SCOPE RPAREN OUTPUT LIDENT INTERNAL INPUT END_CODE DEPENDS DEFINED_AS DECLARATION DATA CONTEXT CONDITION COMMA ALT ] ## @@ -139,7 +132,7 @@ expected a new struct data, or another declaration or scope use source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON CONDITION LIDENT DEPENDS TEXT YEAR ## -## Ends in an error in state: 296. +## Ends in an error in state: 294. ## ## list(addpos(struct_scope)) -> struct_scope . list(addpos(struct_scope)) [ SCOPE END_CODE DECLARATION ] ## @@ -151,7 +144,7 @@ expected a new struct data, or another declaration or scope use source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON CONDITION LIDENT DEPENDS YEAR ## -## Ends in an error in state: 293. +## Ends in an error in state: 291. ## ## option(struct_scope_func) -> DEPENDS . typ [ STATE SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION DATA CONTEXT CONDITION ] ## @@ -163,7 +156,7 @@ expected the type of the parameter of this struct data function source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON CONDITION LIDENT YEAR ## -## Ends in an error in state: 292. +## Ends in an error in state: 290. ## ## struct_scope -> struct_scope_base . option(struct_scope_func) [ SCOPE END_CODE DECLARATION DATA CONDITION ] ## @@ -175,7 +168,7 @@ expected a new struct data, or another declaration or scope use source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON CONDITION YEAR ## -## Ends in an error in state: 290. +## Ends in an error in state: 288. ## ## struct_scope_base -> CONDITION . lident [ SCOPE END_CODE DEPENDS DECLARATION DATA CONDITION ] ## @@ -187,7 +180,7 @@ expected the name of this struct condition source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON DATA LIDENT CONTENT YEAR ## -## Ends in an error in state: 285. +## Ends in an error in state: 283. ## ## struct_scope_base -> DATA lident CONTENT . typ [ SCOPE END_CODE DEPENDS DECLARATION DATA CONDITION ] ## @@ -199,7 +192,7 @@ expected the type of this struct data source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON DATA LIDENT YEAR ## -## Ends in an error in state: 284. +## Ends in an error in state: 282. ## ## struct_scope_base -> DATA lident . CONTENT typ [ SCOPE END_CODE DEPENDS DECLARATION DATA CONDITION ] ## @@ -211,7 +204,7 @@ expected the type of this struct data, introduced by the content keyword source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON DATA YEAR ## -## Ends in an error in state: 283. +## Ends in an error in state: 281. ## ## struct_scope_base -> DATA . lident CONTENT typ [ SCOPE END_CODE DEPENDS DECLARATION DATA CONDITION ] ## @@ -223,7 +216,7 @@ expected the name of this struct data source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON YEAR ## -## Ends in an error in state: 282. +## Ends in an error in state: 280. ## ## code_item -> DECLARATION STRUCT UIDENT COLON . list(addpos(struct_scope)) [ SCOPE END_CODE DECLARATION ] ## @@ -235,7 +228,7 @@ expected struct data or condition source_file: BEGIN_CODE DECLARATION STRUCT UIDENT YEAR ## -## Ends in an error in state: 281. +## Ends in an error in state: 279. ## ## code_item -> DECLARATION STRUCT UIDENT . COLON list(addpos(struct_scope)) [ SCOPE END_CODE DECLARATION ] ## @@ -247,7 +240,7 @@ expected a colon source_file: BEGIN_CODE DECLARATION STRUCT YEAR ## -## Ends in an error in state: 280. +## Ends in an error in state: 278. ## ## code_item -> DECLARATION STRUCT . UIDENT COLON list(addpos(struct_scope)) [ SCOPE END_CODE DECLARATION ] ## @@ -259,7 +252,7 @@ expected the struct name source_file: BEGIN_CODE DECLARATION YEAR ## -## Ends in an error in state: 279. +## Ends in an error in state: 277. ## ## code_item -> DECLARATION . STRUCT UIDENT COLON list(addpos(struct_scope)) [ SCOPE END_CODE DECLARATION ] ## code_item -> DECLARATION . SCOPE UIDENT COLON nonempty_list(addpos(scope_decl_item)) [ SCOPE END_CODE DECLARATION ] @@ -275,7 +268,7 @@ expected the kind of the declaration (struct, scope or enum) source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION CARDINAL THEN ## -## Ends in an error in state: 241. +## Ends in an error in state: 239. ## ## assertion -> option(condition_consequence) expression . [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## expression -> expression . DOT qlident [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] @@ -307,7 +300,7 @@ expected a new scope use item source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION FIXED LIDENT BY YEAR ## -## Ends in an error in state: 238. +## Ends in an error in state: 236. ## ## assertion -> FIXED separated_nonempty_list(DOT,addpos(LIDENT)) BY . lident [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -319,7 +312,7 @@ expected the legislative text by which the value of the variable is fixed source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION FIXED LIDENT WITH_V ## -## Ends in an error in state: 237. +## Ends in an error in state: 235. ## ## assertion -> FIXED separated_nonempty_list(DOT,addpos(LIDENT)) . BY lident [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -330,14 +323,14 @@ source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION FIXED LIDENT WITH_V ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 223, spurious reduction of production separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT +## In state 221, spurious reduction of production separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT ## expected the legislative text by which the value of the variable is fixed source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION FIXED YEAR ## -## Ends in an error in state: 236. +## Ends in an error in state: 234. ## ## assertion -> FIXED . separated_nonempty_list(DOT,addpos(LIDENT)) BY lident [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -347,12 +340,11 @@ source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION FIXED YEAR expected the name of the variable that should be fixed - source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION UNDER_CONDITION TRUE THEN ## -## Ends in an error in state: 234. +## Ends in an error in state: 232. ## -## condition_consequence -> UNDER_CONDITION expression . CONSEQUENCE [ UIDENT TRUE SUM STATE OUTPUT NOT MONEY_AMOUNT MONEY MINUS MINIMUM MAXIMUM MATCH LPAREN LIDENT LET LBRACKET INT_LITERAL IF FOR FILLED FALSE EXISTS DEFINED_AS DECIMAL_LITERAL DECIMAL CARDINAL BAR ] +## condition_consequence -> UNDER_CONDITION expression . CONSEQUENCE [ UIDENT TRUE SUM STATE OUTPUT NOT MONEY_AMOUNT MONEY MINUS MINIMUM MAXIMUM MATCH LPAREN LIDENT LET LBRACKET INT_LITERAL IF FOR FILLED FALSE EXISTS DEFINED_AS DECIMAL_LITERAL DECIMAL DATE_LITERAL CARDINAL ] ## expression -> expression . DOT qlident [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS CONSEQUENCE AND ] ## expression -> expression . OF expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS CONSEQUENCE AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS CONSEQUENCE AND ] @@ -382,9 +374,9 @@ expected a consequence for this definition under condition source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION UNDER_CONDITION YEAR ## -## Ends in an error in state: 233. +## Ends in an error in state: 231. ## -## condition_consequence -> UNDER_CONDITION . expression CONSEQUENCE [ UIDENT TRUE SUM STATE OUTPUT NOT MONEY_AMOUNT MONEY MINUS MINIMUM MAXIMUM MATCH LPAREN LIDENT LET LBRACKET INT_LITERAL IF FOR FILLED FALSE EXISTS DEFINED_AS DECIMAL_LITERAL DECIMAL CARDINAL BAR ] +## condition_consequence -> UNDER_CONDITION . expression CONSEQUENCE [ UIDENT TRUE SUM STATE OUTPUT NOT MONEY_AMOUNT MONEY MINUS MINIMUM MAXIMUM MATCH LPAREN LIDENT LET LBRACKET INT_LITERAL IF FOR FILLED FALSE EXISTS DEFINED_AS DECIMAL_LITERAL DECIMAL DATE_LITERAL CARDINAL ] ## ## The known suffix of the stack is as follows: ## UNDER_CONDITION @@ -394,7 +386,7 @@ expected an expression for this condition source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION VARIES LIDENT UNDER_CONDITION ## -## Ends in an error in state: 226. +## Ends in an error in state: 224. ## ## assertion -> VARIES separated_nonempty_list(DOT,addpos(LIDENT)) . WITH_V expression option(addpos(variation_type)) [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -405,14 +397,14 @@ source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION VARIES LIDENT UNDER_CONDITI ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 223, spurious reduction of production separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT +## In state 221, spurious reduction of production separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT ## expected an indication about what this variable varies with source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION VARIES LIDENT WITH_V YEAR ## -## Ends in an error in state: 227. +## Ends in an error in state: 225. ## ## assertion -> VARIES separated_nonempty_list(DOT,addpos(LIDENT)) WITH_V . expression option(addpos(variation_type)) [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -424,7 +416,7 @@ the variable varies with an expression that was expected here source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION VARIES YEAR ## -## Ends in an error in state: 222. +## Ends in an error in state: 220. ## ## assertion -> VARIES . separated_nonempty_list(DOT,addpos(LIDENT)) WITH_V expression option(addpos(variation_type)) [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -436,7 +428,7 @@ expecting the name of the varying variable source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION YEAR ## -## Ends in an error in state: 221. +## Ends in an error in state: 219. ## ## scope_item -> ASSERTION . assertion [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -448,7 +440,7 @@ expected an expression that shoud be asserted during execution source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION LIDENT DEFINED_AS YEAR ## -## Ends in an error in state: 272. +## Ends in an error in state: 270. ## ## definition -> option(label) option(exception_to) DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) option(state) option(condition_consequence) DEFINED_AS . expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -460,7 +452,7 @@ expected an expression for the definition source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION LIDENT OF LIDENT DECREASING ## -## Ends in an error in state: 269. +## Ends in an error in state: 267. ## ## definition -> option(label) option(exception_to) DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) . option(state) option(condition_consequence) DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -470,10 +462,9 @@ source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION LIDENT OF LIDENT DECREASIN expected a expression for defining this function, introduced by the defined as keyword - source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION LIDENT WITH_V ## -## Ends in an error in state: 268. +## Ends in an error in state: 266. ## ## definition -> option(label) option(exception_to) DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) . option(definition_parameters) option(state) option(condition_consequence) DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -484,14 +475,14 @@ source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION LIDENT WITH_V ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 223, spurious reduction of production separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT +## In state 221, spurious reduction of production separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT ## expected the defined as keyword to introduce the definition of this variable source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION YEAR ## -## Ends in an error in state: 267. +## Ends in an error in state: 265. ## ## definition -> option(label) option(exception_to) DEFINITION . separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) option(state) option(condition_consequence) DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -503,7 +494,7 @@ expected the name of the variable you want to define source_file: BEGIN_CODE SCOPE UIDENT COLON EXCEPTION LIDENT YEAR ## -## Ends in an error in state: 250. +## Ends in an error in state: 248. ## ## definition -> option(label) option(exception_to) . DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) option(state) option(condition_consequence) DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## rule -> option(label) option(exception_to) . RULE rule_expr option(condition_consequence) option(state) rule_consequence [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] @@ -516,7 +507,7 @@ expected a rule or a definition after the exception declaration source_file: BEGIN_CODE SCOPE UIDENT COLON EXCEPTION YEAR ## -## Ends in an error in state: 247. +## Ends in an error in state: 245. ## ## exception_to -> EXCEPTION . option(lident) [ RULE DEFINITION ] ## @@ -528,7 +519,7 @@ expected the label to which the exception is referring back source_file: BEGIN_CODE SCOPE UIDENT COLON LABEL LIDENT DEFINED_AS ## -## Ends in an error in state: 246. +## Ends in an error in state: 244. ## ## definition -> option(label) . option(exception_to) DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) option(state) option(condition_consequence) DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## rule -> option(label) . option(exception_to) RULE rule_expr option(condition_consequence) option(state) rule_consequence [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] @@ -541,7 +532,7 @@ expected a rule or a definition after the label declaration source_file: BEGIN_CODE SCOPE UIDENT COLON LABEL YEAR ## -## Ends in an error in state: 219. +## Ends in an error in state: 217. ## ## label -> LABEL . lident [ RULE EXCEPTION DEFINITION ] ## @@ -553,7 +544,7 @@ expected the name of the label source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT DOT YEAR ## -## Ends in an error in state: 224. +## Ends in an error in state: 222. ## ## separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT DOT . separated_nonempty_list(DOT,addpos(LIDENT)) [ WITH_V UNDER_CONDITION STATE OF NOT FILLED DEFINED_AS BY ] ## @@ -565,7 +556,7 @@ expected a struct field or a sub-scope context item after the dot source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT NOT FALSE ## -## Ends in an error in state: 265. +## Ends in an error in state: 263. ## ## rule_consequence -> option(NOT) . FILLED [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -577,7 +568,7 @@ expected the filled keyword the this rule source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT OF LIDENT YEAR ## -## Ends in an error in state: 257. +## Ends in an error in state: 255. ## ## rule -> option(label) option(exception_to) RULE rule_expr . option(condition_consequence) option(state) rule_consequence [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -589,7 +580,7 @@ expected the expression of the rule source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT OF YEAR ## -## Ends in an error in state: 253. +## Ends in an error in state: 251. ## ## definition_parameters -> OF . lident [ UNDER_CONDITION STATE NOT FILLED DEFINED_AS ] ## @@ -599,10 +590,9 @@ source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT OF YEAR expected the name of the parameter for this dependent variable - source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT WITH_V ## -## Ends in an error in state: 252. +## Ends in an error in state: 250. ## ## rule_expr -> separated_nonempty_list(DOT,addpos(LIDENT)) . option(definition_parameters) [ UNDER_CONDITION STATE NOT FILLED ] ## @@ -613,14 +603,14 @@ source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT WITH_V ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 223, spurious reduction of production separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT +## In state 221, spurious reduction of production separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT ## expected a condition or a consequence for this rule source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT YEAR ## -## Ends in an error in state: 223. +## Ends in an error in state: 221. ## ## separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT . [ WITH_V UNDER_CONDITION STATE OF NOT FILLED DEFINED_AS BY ] ## separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT . DOT separated_nonempty_list(DOT,addpos(LIDENT)) [ WITH_V UNDER_CONDITION STATE OF NOT FILLED DEFINED_AS BY ] @@ -633,7 +623,7 @@ expected a condition or a consequence for this rule, or the rest of the variable source_file: BEGIN_CODE SCOPE UIDENT COLON RULE YEAR ## -## Ends in an error in state: 251. +## Ends in an error in state: 249. ## ## rule -> option(label) option(exception_to) RULE . rule_expr option(condition_consequence) option(state) rule_consequence [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -645,7 +635,7 @@ expected the name of the variable subject to the rule source_file: BEGIN_CODE SCOPE UIDENT COLON YEAR ## -## Ends in an error in state: 218. +## Ends in an error in state: 216. ## ## code_item -> SCOPE UIDENT option(preceded(UNDER_CONDITION,expression)) COLON . nonempty_list(addpos(scope_item)) [ SCOPE END_CODE DECLARATION ] ## @@ -655,10 +645,6 @@ source_file: BEGIN_CODE SCOPE UIDENT COLON YEAR expected a scope use item: a rule, definition or assertion - - - - source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT YEAR ## ## Ends in an error in state: 10. @@ -735,7 +721,7 @@ expected the "all" keyword to mean the "for all" construction of the universal t source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION IF TRUE SEMICOLON ## -## Ends in an error in state: 166. +## Ends in an error in state: 164. ## ## expression -> expression . DOT qlident [ XOR WITH THEN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . OF expression [ XOR WITH THEN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] @@ -765,9 +751,6 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION IF TRUE SEMICOLON expected the "then" keyword as the conditional expression is complete - - - source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION IF YEAR ## ## Ends in an error in state: 63. @@ -794,7 +777,7 @@ expected a unit for this literal, or a valid operator to complete the expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LPAREN TRUE THEN ## -## Ends in an error in state: 180. +## Ends in an error in state: 178. ## ## expression -> LPAREN expression . RPAREN [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] ## expression -> expression . DOT qlident [ XOR WITH RPAREN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] @@ -836,10 +819,9 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LPAREN YEAR expected an expression inside the parenthesis - source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LBRACKET TRUE THEN ## -## Ends in an error in state: 174. +## Ends in an error in state: 172. ## ## expression -> expression . DOT qlident [ XOR WITH SEMICOLON RBRACKET PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . OF expression [ XOR WITH SEMICOLON RBRACKET PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] @@ -882,11 +864,9 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LBRACKET YEAR expected a collection element - - source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH TRUE WITH ALT YEAR ## -## Ends in an error in state: 184. +## Ends in an error in state: 182. ## ## nonempty_list(addpos(preceded(ALT,match_arm))) -> ALT . match_arm [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] ## nonempty_list(addpos(preceded(ALT,match_arm))) -> ALT . match_arm nonempty_list(addpos(preceded(ALT,match_arm))) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] @@ -899,7 +879,7 @@ expected the name of the constructor for the enum case in the pattern matching source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH TRUE WITH YEAR ## -## Ends in an error in state: 183. +## Ends in an error in state: 181. ## ## expression -> expression WITH . constructor_binding [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> MATCH expression WITH . nonempty_list(addpos(preceded(ALT,match_arm))) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] @@ -922,10 +902,9 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH YEAR expected an expression to match with - source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION TRUE YEAR ## -## Ends in an error in state: 216. +## Ends in an error in state: 214. ## ## expression -> expression . DOT qlident [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS COLON AND ] ## expression -> expression . OF expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS COLON AND ] @@ -955,17 +934,6 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION TRUE YEAR expected the function application operator -source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION BAR YEAR -## -## Ends in an error in state: 76. -## -## literal -> BAR . DATE_LITERAL BAR [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## -## The known suffix of the stack is as follows: -## BAR -## - -expected the year for this date literal source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION YEAR ## @@ -1005,7 +973,7 @@ expected the name of the scope being used source_file: BEGIN_CODE YEAR ## -## Ends in an error in state: 370. +## Ends in an error in state: 368. ## ## source_file_item -> BEGIN_CODE . code END_CODE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] ## @@ -1015,11 +983,6 @@ source_file: BEGIN_CODE YEAR expected some declaration or scope use inside this code block - - - - - source_file: LAW_TEXT YEAR ## ## Ends in an error in state: 1. @@ -1044,3 +1007,3228 @@ source_file: YEAR ## expected some law text or code block + +source_file: BEGIN_METADATA YEAR +## +## Ends in an error in state: 5. +## +## metadata_block -> BEGIN_METADATA . option(law_text) code END_CODE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] +## +## The known suffix of the stack is as follows: +## BEGIN_METADATA +## + +expected some law text or code block + +source_file: BEGIN_METADATA LAW_TEXT LAW_HEADING +## +## Ends in an error in state: 6. +## +## metadata_block -> BEGIN_METADATA option(law_text) . code END_CODE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] +## +## The known suffix of the stack is as follows: +## BEGIN_METADATA option(law_text) +## +## WARNING: This example involves spurious reductions. +## This implies that, although the LR(1) items shown above provide an +## accurate view of the past (what has been recognized so far), they +## may provide an INCOMPLETE view of the future (what was expected next). +## In state 1, spurious reduction of production nonempty_list(LAW_TEXT) -> LAW_TEXT +## In state 357, spurious reduction of production law_text -> nonempty_list(LAW_TEXT) +## In state 358, spurious reduction of production option(law_text) -> law_text +## + +expected some law text or code block + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT DOT YEAR +## +## Ends in an error in state: 11. +## +## expression -> UIDENT DOT . qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## quident -> UIDENT DOT . quident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LBRACE LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTENT CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## UIDENT DOT +## + +expected an identifier (variable name, structure field or enumeration +constructor, possibly with a submodule qualification) + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT DOT UIDENT YEAR +## +## Ends in an error in state: 12. +## +## qlident -> UIDENT . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## quident -> UIDENT . DOT quident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LBRACE LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTENT CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## quident -> UIDENT . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LBRACE LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTENT CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## UIDENT +## + +expected one of: +- a dot followed by an identifier ('Path.And.var') +- or a structure content ('Structname { -- field1: ... }') +- or enumeration content ('EnumConstr content ...') + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT DOT UIDENT DOT YEAR +## +## Ends in an error in state: 13. +## +## qlident -> UIDENT DOT . qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## quident -> UIDENT DOT . quident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LBRACE LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTENT CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## UIDENT DOT +## + +expected an identifier (variable name, structure field or enumeration +constructor, possibly with a submodule qualification) + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION SUM YEAR +## +## Ends in an error in state: 20. +## +## expression -> SUM . typ_base OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## SUM +## + +the 'sum' operator must be followed by the type to be summed. + +source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT YEAR +## +## Ends in an error in state: 21. +## +## quident -> UIDENT . DOT quident [ XOR WITH_V WITH WE_HAVE THEN SUCH STATE SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OUTPUT OR OF NOT_EQUAL MULT MINUS LIDENT LESSER_EQUAL LESSER LABEL IS INTERNAL INPUT INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEPENDS DEFINITION DEFINED_AS DECREASING DECLARATION DATA CONTEXT CONTAINS CONSEQUENCE CONDITION COMMA COLON ASSERTION AND ALT ] +## quident -> UIDENT . [ XOR WITH_V WITH WE_HAVE THEN SUCH STATE SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OUTPUT OR OF NOT_EQUAL MULT MINUS LIDENT LESSER_EQUAL LESSER LABEL IS INTERNAL INPUT INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEPENDS DEFINITION DEFINED_AS DECREASING DECLARATION DATA CONTEXT CONTAINS CONSEQUENCE CONDITION COMMA COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## UIDENT +## + +expected one of +- a dot specifying the path to the given structure or enumeration ('Path.To.variable') +- a dependency specification ('depends on ...') +- the body of the declaration ('equals ...') + +source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DOT YEAR +## +## Ends in an error in state: 22. +## +## quident -> UIDENT DOT . quident [ XOR WITH_V WITH WE_HAVE THEN SUCH STATE SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OUTPUT OR OF NOT_EQUAL MULT MINUS LIDENT LESSER_EQUAL LESSER LABEL IS INTERNAL INPUT INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEPENDS DEFINITION DEFINED_AS DECREASING DECLARATION DATA CONTEXT CONTAINS CONSEQUENCE CONDITION COMMA COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## UIDENT DOT +## + +expected the structure or enumeration type of the definition under the given module. + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION SUM BOOLEAN YEAR +## +## Ends in an error in state: 30. +## +## expression -> SUM typ_base . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## SUM typ_base +## + +expected 'of' then the collection on which to operate + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION SUM UIDENT OF YEAR +## +## Ends in an error in state: 31. +## +## expression -> SUM typ_base OF . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## SUM typ_base OF +## + +expected the collection on which to operate the sum + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION OUTPUT YEAR +## +## Ends in an error in state: 32. +## +## expression -> OUTPUT . OF quident option(scope_call_args) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## OUTPUT +## + +expected 'of' then a scope to be applied + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION OUTPUT OF YEAR +## +## Ends in an error in state: 33. +## +## expression -> OUTPUT OF . quident option(scope_call_args) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## OUTPUT OF +## + +expected a scope to be applied + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION OUTPUT OF UIDENT STATE +## +## Ends in an error in state: 34. +## +## expression -> OUTPUT OF quident . option(scope_call_args) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## OUTPUT OF quident +## +## WARNING: This example involves spurious reductions. +## This implies that, although the LR(1) items shown above provide an +## accurate view of the past (what has been recognized so far), they +## may provide an INCOMPLETE view of the future (what was expected next). +## In state 21, spurious reduction of production quident -> UIDENT +## + +expected 'with' then the arguments to the scope call ('{ -- var : ... }'), or a +binary operator to be applied on the results of the call + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION OUTPUT OF UIDENT WITH_V YEAR +## +## Ends in an error in state: 35. +## +## option(scope_call_args) -> WITH_V . LBRACE list(preceded(ALT,struct_content_field)) RBRACE [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## WITH_V +## + +expected the arguments to the scope call ('{ --var: ... }') + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION OUTPUT OF UIDENT WITH_V LBRACE YEAR +## +## Ends in an error in state: 36. +## +## option(scope_call_args) -> WITH_V LBRACE . list(preceded(ALT,struct_content_field)) RBRACE [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## WITH_V LBRACE +## + +expected a list of variable-value bindings in the form `-- var_name : ` + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION OUTPUT OF UIDENT WITH_V LBRACE ALT YEAR +## +## Ends in an error in state: 37. +## +## list(preceded(ALT,struct_content_field)) -> ALT . struct_content_field list(preceded(ALT,struct_content_field)) [ RBRACE ] +## +## The known suffix of the stack is as follows: +## ALT +## + +expected a variable name, following the form '-- var_name : ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT LBRACE ALT LIDENT YEAR +## +## Ends in an error in state: 40. +## +## struct_content_field -> lident . COLON expression [ RBRACE ALT ] +## +## The known suffix of the stack is as follows: +## lident +## + +expected a colon, following the form '-- var_name : ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT LBRACE ALT LIDENT COLON YEAR +## +## Ends in an error in state: 41. +## +## struct_content_field -> lident COLON . expression [ RBRACE ALT ] +## +## The known suffix of the stack is as follows: +## lident COLON +## + +expected an expression, following the form '-- var_name : ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION NOT YEAR +## +## Ends in an error in state: 42. +## +## expression -> NOT . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## NOT +## + +expected a boolean expression to apply 'not' on + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINUS YEAR +## +## Ends in an error in state: 45. +## +## expression -> MINUS . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## MINUS +## + +expected a numeric expression to apply '-' on + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINIMUM YEAR +## +## Ends in an error in state: 46. +## +## expression -> MINIMUM . OF expression OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## MINIMUM +## + +expected 'of' then the collection to operate on + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINIMUM OF YEAR +## +## Ends in an error in state: 47. +## +## expression -> MINIMUM OF . expression OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## MINIMUM OF +## + +expected an expression defining the collection to operate on + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MAXIMUM YEAR +## +## Ends in an error in state: 48. +## +## expression -> MAXIMUM . OF expression OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## MAXIMUM +## + +expected 'of' then the collection to operate on + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MAXIMUM OF YEAR +## +## Ends in an error in state: 49. +## +## expression -> MAXIMUM OF . expression OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## MAXIMUM OF +## + +expected an expression defining the collection to operate on + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT YEAR +## +## Ends in an error in state: 52. +## +## expression -> LIDENT . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## lident -> LIDENT . [ AMONG ] +## +## The known suffix of the stack is as follows: +## LIDENT +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LET YEAR +## +## Ends in an error in state: 53. +## +## expression -> LET . lident DEFINED_AS expression IN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## LET +## + +expected 'var equals expression' after 'let' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LET LIDENT YEAR +## +## Ends in an error in state: 54. +## +## expression -> LET lident . DEFINED_AS expression IN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## LET lident +## + +expected 'equals expression' after 'let' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LET LIDENT DEFINED_AS YEAR +## +## Ends in an error in state: 55. +## +## expression -> LET lident DEFINED_AS . expression IN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## LET lident DEFINED_AS +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION FOR ALL LIDENT AMONG YEAR +## +## Ends in an error in state: 67. +## +## expression -> FOR ALL lident AMONG . expression WE_HAVE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## FOR ALL lident AMONG +## + +expected an expression describing the collection to operate on + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION EXISTS LIDENT AMONG YEAR +## +## Ends in an error in state: 71. +## +## expression -> EXISTS lident AMONG . expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## EXISTS lident AMONG +## + +expected an expression describing the collection to operate on + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION DECIMAL_LITERAL WITH_V +## +## Ends in an error in state: 72. +## +## literal -> DECIMAL_LITERAL . option(addpos(unit_literal)) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## DECIMAL_LITERAL +## + +expected binary operator + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT LBRACE YEAR +## +## Ends in an error in state: 78. +## +## expression -> quident LBRACE . nonempty_list(preceded(ALT,struct_content_field)) RBRACE [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## quident LBRACE +## + +expected a list of field bindings of the form '-- fld : expression' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT LBRACE ALT YEAR +## +## Ends in an error in state: 79. +## +## nonempty_list(preceded(ALT,struct_content_field)) -> ALT . struct_content_field [ RBRACE ] +## nonempty_list(preceded(ALT,struct_content_field)) -> ALT . struct_content_field nonempty_list(preceded(ALT,struct_content_field)) [ RBRACE ] +## +## The known suffix of the stack is as follows: +## ALT +## + +expected a 'fldname : expression' binding + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT CONTENT YEAR +## +## Ends in an error in state: 84. +## +## option(preceded(CONTENT,expression)) -> CONTENT . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## CONTENT +## + +expected an expression defining the enumeration case content + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG YEAR +## +## Ends in an error in state: 87. +## +## expression -> lident AMONG . expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG . expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG . expression SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG +## + +expected an expression defining a collection + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG FALSE YEAR +## +## Ends in an error in state: 88. +## +## expression -> expression . DOT qlident [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OF expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . WITH constructor_binding [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . CONTAINS expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . MULT expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . DIV expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . PLUS expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . MINUS expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . PLUSPLUS expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . LESSER expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . GREATER expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . EQUAL expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . AND expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OR expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . XOR expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> lident AMONG expression . SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> lident AMONG expression . SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression . SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression +## + +expected 'such that ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT XOR YEAR +## +## Ends in an error in state: 89. +## +## expression -> expression XOR . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression XOR +## + +expected a boolean expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT XOR FALSE YEAR +## +## Ends in an error in state: 90. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression XOR expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression XOR expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT WITH YEAR +## +## Ends in an error in state: 91. +## +## expression -> expression WITH . constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression WITH +## + +expected a pattern to match against + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT WITH UIDENT WITH_V +## +## Ends in an error in state: 92. +## +## constructor_binding -> quident . OF lident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## constructor_binding -> quident . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## quident +## +## WARNING: This example involves spurious reductions. +## This implies that, although the LR(1) items shown above provide an +## accurate view of the past (what has been recognized so far), they +## may provide an INCOMPLETE view of the future (what was expected next). +## In state 21, spurious reduction of production quident -> UIDENT +## + +expected the form 'with pattern of and ', or a binary +operator continuing the expression, or a keyword ending the expression and starting the next item + + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT WITH UIDENT OF YEAR +## +## Ends in an error in state: 93. +## +## constructor_binding -> quident OF . lident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## quident OF +## + +expected an ident, as in the form 'with pattern of and ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT PLUSPLUS YEAR +## +## Ends in an error in state: 96. +## +## expression -> expression PLUSPLUS . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression PLUSPLUS +## + +expected a collection expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT PLUSPLUS FALSE YEAR +## +## Ends in an error in state: 97. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression PLUSPLUS expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression PLUSPLUS expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT OF YEAR +## +## Ends in an error in state: 98. +## +## expression -> expression OF . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression OF +## + +expected an expression specifying the function argument + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT OF FALSE YEAR +## +## Ends in an error in state: 99. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression OF expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression OF expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT FOR YEAR +## +## Ends in an error in state: 100. +## +## expression -> expression FOR . lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression FOR . lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression FOR +## + +Expected an identifier as in the form ' for among ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT FOR LIDENT YEAR +## +## Ends in an error in state: 101. +## +## expression -> expression FOR lident . AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression FOR lident . AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression FOR lident +## + +Expected 'in', as in the form ' for among ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT FOR LIDENT AMONG YEAR +## +## Ends in an error in state: 102. +## +## expression -> expression FOR lident AMONG . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression FOR lident AMONG . expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression FOR lident AMONG +## + +expected an expression defining a collection + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT FOR LIDENT AMONG FALSE YEAR +## +## Ends in an error in state: 103. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression FOR lident AMONG expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression FOR lident AMONG expression . SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression FOR lident AMONG expression +## + +Expected 'such that ', or a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT FOR LIDENT AMONG UIDENT SUCH YEAR +## +## Ends in an error in state: 104. +## +## expression -> expression FOR lident AMONG expression SUCH . THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression FOR lident AMONG expression SUCH +## + +expected the form 'such that ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT FOR LIDENT AMONG UIDENT SUCH THAT YEAR +## +## Ends in an error in state: 105. +## +## expression -> expression FOR lident AMONG expression SUCH THAT . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression FOR lident AMONG expression SUCH THAT +## + +expected an expression defining the condition to apply to the elements of the +collection + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT FOR LIDENT AMONG UIDENT SUCH THAT FALSE YEAR +## +## Ends in an error in state: 106. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression FOR lident AMONG expression SUCH THAT expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression FOR lident AMONG expression SUCH THAT expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT PLUS YEAR +## +## Ends in an error in state: 107. +## +## expression -> expression PLUS . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression PLUS +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT PLUS FALSE YEAR +## +## Ends in an error in state: 108. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression PLUS expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression PLUS expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT MULT YEAR +## +## Ends in an error in state: 109. +## +## expression -> expression MULT . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression MULT +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT MULT FALSE YEAR +## +## Ends in an error in state: 110. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression MULT expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression MULT expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION DECIMAL_LITERAL DOT YEAR +## +## Ends in an error in state: 111. +## +## expression -> expression DOT . qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression DOT +## + +expected a structure field or sub-scope variable name + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION DECIMAL_LITERAL DOT UIDENT YEAR +## +## Ends in an error in state: 112. +## +## qlident -> UIDENT . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## UIDENT +## + +expected a dot forming a module path, as in 'Module.variable', or a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION DECIMAL_LITERAL DOT UIDENT DOT YEAR +## +## Ends in an error in state: 113. +## +## qlident -> UIDENT DOT . qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## UIDENT DOT +## + +expected a module path, as in 'Module.Submodule.variable' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT CONTAINS YEAR +## +## Ends in an error in state: 115. +## +## expression -> expression CONTAINS . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression CONTAINS +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT CONTAINS FALSE YEAR +## +## Ends in an error in state: 116. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression CONTAINS expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression CONTAINS expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT DIV YEAR +## +## Ends in an error in state: 117. +## +## expression -> expression DIV . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression DIV +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT DIV FALSE YEAR +## +## Ends in an error in state: 118. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression DIV expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression DIV expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT OR YEAR +## +## Ends in an error in state: 119. +## +## expression -> expression OR . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression OR +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT OR FALSE YEAR +## +## Ends in an error in state: 120. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression OR expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression OR expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT NOT_EQUAL YEAR +## +## Ends in an error in state: 121. +## +## expression -> expression NOT_EQUAL . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression NOT_EQUAL +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT NOT_EQUAL FALSE YEAR +## +## Ends in an error in state: 122. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression NOT_EQUAL expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression NOT_EQUAL expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT MINUS YEAR +## +## Ends in an error in state: 123. +## +## expression -> expression MINUS . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression MINUS +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT MINUS FALSE YEAR +## +## Ends in an error in state: 124. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression MINUS expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression MINUS expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT LESSER_EQUAL YEAR +## +## Ends in an error in state: 125. +## +## expression -> expression LESSER_EQUAL . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression LESSER_EQUAL +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT LESSER_EQUAL FALSE YEAR +## +## Ends in an error in state: 126. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression LESSER_EQUAL expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression LESSER_EQUAL expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT LESSER YEAR +## +## Ends in an error in state: 127. +## +## expression -> expression LESSER . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression LESSER +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT LESSER FALSE YEAR +## +## Ends in an error in state: 128. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression LESSER expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression LESSER expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT GREATER_EQUAL YEAR +## +## Ends in an error in state: 129. +## +## expression -> expression GREATER_EQUAL . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression GREATER_EQUAL +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT GREATER_EQUAL FALSE YEAR +## +## Ends in an error in state: 130. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression GREATER_EQUAL expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression GREATER_EQUAL expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT GREATER YEAR +## +## Ends in an error in state: 131. +## +## expression -> expression GREATER . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression GREATER +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT GREATER FALSE YEAR +## +## Ends in an error in state: 132. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression GREATER expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression GREATER expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT EQUAL YEAR +## +## Ends in an error in state: 133. +## +## expression -> expression EQUAL . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression EQUAL +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT EQUAL FALSE YEAR +## +## Ends in an error in state: 134. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression EQUAL expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression EQUAL expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT AND YEAR +## +## Ends in an error in state: 135. +## +## expression -> expression AND . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression AND +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT AND FALSE YEAR +## +## Ends in an error in state: 136. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression AND expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## expression AND expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH YEAR +## +## Ends in an error in state: 137. +## +## expression -> lident AMONG expression SUCH . THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH . THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH . THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression SUCH +## + +expected the form ' among such that ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT YEAR +## +## Ends in an error in state: 138. +## +## expression -> lident AMONG expression SUCH THAT . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT . expression IS MAXIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT . expression IS MINIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression SUCH THAT +## + +expected the form ' among such that ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT FALSE YEAR +## +## Ends in an error in state: 139. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression . IS MAXIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression . IS MINIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression SUCH THAT expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS YEAR +## +## Ends in an error in state: 140. +## +## expression -> lident AMONG expression SUCH THAT expression IS . MAXIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS . MINIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression SUCH THAT expression IS +## + +expected 'maximum' or 'minimum' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MINIMUM YEAR +## +## Ends in an error in state: 141. +## +## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM . OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression SUCH THAT expression IS MINIMUM +## + +expected 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MINIMUM OR YEAR +## +## Ends in an error in state: 142. +## +## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM OR . IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression SUCH THAT expression IS MINIMUM OR +## + +expected the form 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MINIMUM OR IF YEAR +## +## Ends in an error in state: 143. +## +## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM OR IF . COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression SUCH THAT expression IS MINIMUM OR IF +## + +expected the form 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MINIMUM OR IF COLLECTION YEAR +## +## Ends in an error in state: 144. +## +## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION . EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION +## + +expected the form 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MINIMUM OR IF COLLECTION EMPTY YEAR +## +## Ends in an error in state: 145. +## +## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY . THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY +## + +expected the form 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MINIMUM OR IF COLLECTION EMPTY THEN YEAR +## +## Ends in an error in state: 146. +## +## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN +## + +expected an expression, following the form 'or if collection empty then +' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MINIMUM OR IF COLLECTION EMPTY THEN FALSE YEAR +## +## Ends in an error in state: 147. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MAXIMUM YEAR +## +## Ends in an error in state: 148. +## +## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM . OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression SUCH THAT expression IS MAXIMUM +## + +expected 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MAXIMUM OR YEAR +## +## Ends in an error in state: 149. +## +## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM OR . IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression SUCH THAT expression IS MAXIMUM OR +## + +expected the form 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MAXIMUM OR IF YEAR +## +## Ends in an error in state: 150. +## +## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF . COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF +## + +expected the form 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MAXIMUM OR IF COLLECTION YEAR +## +## Ends in an error in state: 151. +## +## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION . EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION +## + +expected the form 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MAXIMUM OR IF COLLECTION EMPTY YEAR +## +## Ends in an error in state: 152. +## +## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY . THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY +## + +expected the form 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MAXIMUM OR IF COLLECTION EMPTY THEN YEAR +## +## Ends in an error in state: 153. +## +## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN +## + +expected an expression, following the form 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MAXIMUM OR IF COLLECTION EMPTY THEN FALSE YEAR +## +## Ends in an error in state: 154. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT CONTENT FALSE YEAR +## +## Ends in an error in state: 155. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## option(preceded(CONTENT,expression)) -> CONTENT expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## CONTENT expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION EXISTS LIDENT AMONG FALSE YEAR +## +## Ends in an error in state: 157. +## +## expression -> expression . DOT qlident [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OF expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . WITH constructor_binding [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . CONTAINS expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . MULT expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . DIV expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . PLUS expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . MINUS expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . PLUSPLUS expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . LESSER expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . GREATER expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . EQUAL expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . AND expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OR expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . XOR expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> EXISTS lident AMONG expression . SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## +## The known suffix of the stack is as follows: +## EXISTS lident AMONG expression +## + +expected 'such that ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION EXISTS LIDENT AMONG UIDENT SUCH YEAR +## +## Ends in an error in state: 158. +## +## expression -> EXISTS lident AMONG expression SUCH . THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## EXISTS lident AMONG expression SUCH +## + +expected the form 'such that ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION EXISTS LIDENT AMONG UIDENT SUCH THAT YEAR +## +## Ends in an error in state: 159. +## +## expression -> EXISTS lident AMONG expression SUCH THAT . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## EXISTS lident AMONG expression SUCH THAT +## + +expected an expression, following the form 'such that ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION EXISTS LIDENT AMONG UIDENT SUCH THAT FALSE YEAR +## +## Ends in an error in state: 160. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> EXISTS lident AMONG expression SUCH THAT expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## EXISTS lident AMONG expression SUCH THAT expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION FOR ALL LIDENT AMONG FALSE YEAR +## +## Ends in an error in state: 161. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> FOR ALL lident AMONG expression . WE_HAVE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## +## The known suffix of the stack is as follows: +## FOR ALL lident AMONG expression +## + +expected 'we have ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION FOR ALL LIDENT AMONG UIDENT WE_HAVE YEAR +## +## Ends in an error in state: 162. +## +## expression -> FOR ALL lident AMONG expression WE_HAVE . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## FOR ALL lident AMONG expression WE_HAVE +## + +expected the form 'we have ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION FOR ALL LIDENT AMONG UIDENT WE_HAVE FALSE YEAR +## +## Ends in an error in state: 163. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> FOR ALL lident AMONG expression WE_HAVE expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## FOR ALL lident AMONG expression WE_HAVE expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION IF UIDENT THEN YEAR +## +## Ends in an error in state: 165. +## +## expression -> IF expression THEN . expression ELSE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## IF expression THEN +## + +expected an expression, followed by 'else ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION IF UIDENT THEN FALSE YEAR +## +## Ends in an error in state: 166. +## +## expression -> expression . DOT qlident [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . OF expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . WITH constructor_binding [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . CONTAINS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . MULT expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . DIV expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . PLUS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . MINUS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . PLUSPLUS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . LESSER expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . GREATER expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . AND expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . OR expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . XOR expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> IF expression THEN expression . ELSE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## +## The known suffix of the stack is as follows: +## IF expression THEN expression +## + +expected 'else ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION IF UIDENT THEN UIDENT ELSE YEAR +## +## Ends in an error in state: 167. +## +## expression -> IF expression THEN expression ELSE . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## IF expression THEN expression ELSE +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION IF UIDENT THEN UIDENT ELSE FALSE YEAR +## +## Ends in an error in state: 168. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> IF expression THEN expression ELSE expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## IF expression THEN expression ELSE expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LBRACKET UIDENT SEMICOLON YEAR +## +## Ends in an error in state: 173. +## +## separated_nonempty_list(SEMICOLON,expression) -> expression SEMICOLON . separated_nonempty_list(SEMICOLON,expression) [ RBRACKET ] +## +## The known suffix of the stack is as follows: +## expression SEMICOLON +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LET LIDENT DEFINED_AS FALSE YEAR +## +## Ends in an error in state: 175. +## +## expression -> expression . DOT qlident [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OF expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . WITH constructor_binding [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . CONTAINS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . MULT expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . DIV expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . PLUS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . MINUS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . PLUSPLUS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . LESSER expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . GREATER expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . AND expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OR expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . XOR expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> LET lident DEFINED_AS expression . IN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## +## The known suffix of the stack is as follows: +## LET lident DEFINED_AS expression +## + +expected the keyword 'in' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LET LIDENT DEFINED_AS UIDENT IN YEAR +## +## Ends in an error in state: 176. +## +## expression -> LET lident DEFINED_AS expression IN . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## LET lident DEFINED_AS expression IN +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LET LIDENT DEFINED_AS UIDENT IN FALSE YEAR +## +## Ends in an error in state: 177. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> LET lident DEFINED_AS expression IN expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## LET lident DEFINED_AS expression IN expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH FALSE YEAR +## +## Ends in an error in state: 180. +## +## expression -> expression . DOT qlident [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OF expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . WITH constructor_binding [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . CONTAINS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . MULT expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . DIV expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . PLUS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . MINUS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . PLUSPLUS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . LESSER expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . GREATER expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . AND expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OR expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . XOR expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> MATCH expression . WITH nonempty_list(addpos(preceded(ALT,match_arm))) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## +## The known suffix of the stack is as follows: +## MATCH expression +## + +expected 'with pattern -- : ...' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH UIDENT WITH ALT WILDCARD YEAR +## +## Ends in an error in state: 183. +## +## match_arm -> WILDCARD . COLON expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## WILDCARD +## + +expected ':' followed by an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH UIDENT WITH ALT WILDCARD COLON YEAR +## +## Ends in an error in state: 184. +## +## match_arm -> WILDCARD COLON . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## WILDCARD COLON +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH UIDENT WITH ALT WILDCARD COLON FALSE YEAR +## +## Ends in an error in state: 185. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## match_arm -> WILDCARD COLON expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## WILDCARD COLON expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH UIDENT WITH ALT UIDENT XOR +## +## Ends in an error in state: 188. +## +## match_arm -> constructor_binding . COLON expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## constructor_binding +## +## WARNING: This example involves spurious reductions. +## This implies that, although the LR(1) items shown above provide an +## accurate view of the past (what has been recognized so far), they +## may provide an INCOMPLETE view of the future (what was expected next). +## In state 21, spurious reduction of production quident -> UIDENT +## In state 92, spurious reduction of production constructor_binding -> quident +## + +expected a colon followed by an expression, as in '-- Case : ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH UIDENT WITH ALT UIDENT COLON YEAR +## +## Ends in an error in state: 189. +## +## match_arm -> constructor_binding COLON . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## constructor_binding COLON +## + +expected an expression + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH UIDENT WITH ALT UIDENT COLON FALSE YEAR +## +## Ends in an error in state: 190. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## match_arm -> constructor_binding COLON expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## constructor_binding COLON expression +## + +expected a binary operator, or the next case in the form '-- NextCase : ', or a keyword ending the match expression and starting the next item + + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MAXIMUM OF FALSE YEAR +## +## Ends in an error in state: 192. +## +## expression -> expression . DOT qlident [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OF expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . WITH constructor_binding [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . CONTAINS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> MAXIMUM OF expression . OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . DIV expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . PLUS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . MINUS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . PLUSPLUS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . LESSER expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . GREATER expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . AND expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OR expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . XOR expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## +## The known suffix of the stack is as follows: +## MAXIMUM OF expression +## + +expected 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MAXIMUM OF UIDENT OR YEAR +## +## Ends in an error in state: 193. +## +## expression -> MAXIMUM OF expression OR . IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression OR . expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## +## The known suffix of the stack is as follows: +## MAXIMUM OF expression OR +## + +expected the form 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MAXIMUM OF UIDENT OR IF YEAR +## +## Ends in an error in state: 194. +## +## expression -> MAXIMUM OF expression OR IF . COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> IF . expression THEN expression ELSE expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## +## The known suffix of the stack is as follows: +## MAXIMUM OF expression OR IF +## + +expected the form 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MAXIMUM OF UIDENT OR IF COLLECTION YEAR +## +## Ends in an error in state: 195. +## +## expression -> MAXIMUM OF expression OR IF COLLECTION . EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## MAXIMUM OF expression OR IF COLLECTION +## + +expected the form 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MAXIMUM OF UIDENT OR IF COLLECTION EMPTY YEAR +## +## Ends in an error in state: 196. +## +## expression -> MAXIMUM OF expression OR IF COLLECTION EMPTY . THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## MAXIMUM OF expression OR IF COLLECTION EMPTY +## + +expected the form 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MAXIMUM OF UIDENT OR IF COLLECTION EMPTY THEN YEAR +## +## Ends in an error in state: 197. +## +## expression -> MAXIMUM OF expression OR IF COLLECTION EMPTY THEN . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## MAXIMUM OF expression OR IF COLLECTION EMPTY THEN +## + +expected an expression, following the form 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MAXIMUM OF UIDENT OR IF COLLECTION EMPTY THEN FALSE YEAR +## +## Ends in an error in state: 198. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MAXIMUM OF expression OR IF COLLECTION EMPTY THEN expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## MAXIMUM OF expression OR IF COLLECTION EMPTY THEN expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINIMUM OF FALSE YEAR +## +## Ends in an error in state: 199. +## +## expression -> expression . DOT qlident [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OF expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . WITH constructor_binding [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . CONTAINS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> MINIMUM OF expression . OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . DIV expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . PLUS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . MINUS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . PLUSPLUS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . LESSER expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . GREATER expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . AND expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OR expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . XOR expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## +## The known suffix of the stack is as follows: +## MINIMUM OF expression +## + +expected 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINIMUM OF UIDENT OR YEAR +## +## Ends in an error in state: 200. +## +## expression -> MINIMUM OF expression OR . IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression OR . expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## +## The known suffix of the stack is as follows: +## MINIMUM OF expression OR +## + +expected the form 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINIMUM OF UIDENT OR IF YEAR +## +## Ends in an error in state: 201. +## +## expression -> MINIMUM OF expression OR IF . COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> IF . expression THEN expression ELSE expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## +## The known suffix of the stack is as follows: +## MINIMUM OF expression OR IF +## + +expected the form 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINIMUM OF UIDENT OR IF COLLECTION YEAR +## +## Ends in an error in state: 202. +## +## expression -> MINIMUM OF expression OR IF COLLECTION . EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## MINIMUM OF expression OR IF COLLECTION +## + +expected the form 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINIMUM OF UIDENT OR IF COLLECTION EMPTY YEAR +## +## Ends in an error in state: 203. +## +## expression -> MINIMUM OF expression OR IF COLLECTION EMPTY . THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## MINIMUM OF expression OR IF COLLECTION EMPTY +## + +expected the form 'or if collection empty then ' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINIMUM OF UIDENT OR IF COLLECTION EMPTY THEN YEAR +## +## Ends in an error in state: 204. +## +## expression -> MINIMUM OF expression OR IF COLLECTION EMPTY THEN . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## MINIMUM OF expression OR IF COLLECTION EMPTY THEN +## + +expected an expression, following the form 'or if collection empty then +' + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINIMUM OF UIDENT OR IF COLLECTION EMPTY THEN FALSE YEAR +## +## Ends in an error in state: 205. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MINIMUM OF expression OR IF COLLECTION EMPTY THEN expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## MINIMUM OF expression OR IF COLLECTION EMPTY THEN expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINUS FALSE YEAR +## +## Ends in an error in state: 206. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MINUS expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## MINUS expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION NOT FALSE YEAR +## +## Ends in an error in state: 207. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> NOT expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## NOT expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT LBRACE ALT LIDENT COLON FALSE YEAR +## +## Ends in an error in state: 208. +## +## expression -> expression . DOT qlident [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . OF expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . MULT expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . DIV expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . AND expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . OR expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . XOR expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## struct_content_field -> lident COLON expression . [ RBRACE ALT ] +## +## The known suffix of the stack is as follows: +## lident COLON expression +## + +expected another field in the form '-- : ', or a closing '}' brace + +source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION SUM UIDENT OF FALSE YEAR +## +## Ends in an error in state: 212. +## +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> SUM typ_base OF expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## +## The known suffix of the stack is as follows: +## SUM typ_base OF expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION VARIES LIDENT WITH_V FALSE YEAR +## +## Ends in an error in state: 226. +## +## assertion -> VARIES separated_nonempty_list(DOT,addpos(LIDENT)) WITH_V expression . option(addpos(variation_type)) [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] +## expression -> expression . DOT qlident [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . OF expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . WITH constructor_binding [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . CONTAINS expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . MULT expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . DIV expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . PLUS expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . MINUS expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . PLUSPLUS expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . LESSER expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . GREATER expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . EQUAL expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . AND expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . OR expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . XOR expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## +## The known suffix of the stack is as follows: +## VARIES separated_nonempty_list(DOT,addpos(LIDENT)) WITH_V expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION UNDER_CONDITION UIDENT CONSEQUENCE YEAR +## +## Ends in an error in state: 238. +## +## assertion -> option(condition_consequence) . expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] +## +## The known suffix of the stack is as follows: +## option(condition_consequence) +## + +expected either 'fulfilled' or 'not fulfilled' + +source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT FILLED YEAR +## +## Ends in an error in state: 242. +## +## nonempty_list(addpos(scope_item)) -> scope_item . [ SCOPE END_CODE DECLARATION ] +## nonempty_list(addpos(scope_item)) -> scope_item . nonempty_list(addpos(scope_item)) [ SCOPE END_CODE DECLARATION ] +## +## The known suffix of the stack is as follows: +## scope_item +## + +expected the next item in the scope, or the start of a new top-level decleration + +source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT UNDER_CONDITION UIDENT CONSEQUENCE YEAR +## +## Ends in an error in state: 256. +## +## rule -> option(label) option(exception_to) RULE rule_expr option(condition_consequence) . option(state) rule_consequence [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] +## +## The known suffix of the stack is as follows: +## option(label) option(exception_to) RULE rule_expr option(condition_consequence) +## + +expected either 'fulfilled' or 'not fulfilled' + +source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION LIDENT STATE YEAR +## +## Ends in an error in state: 257. +## +## state -> STATE . lident [ UNDER_CONDITION STATE SCOPE OUTPUT NOT LIDENT INTERNAL INPUT FILLED END_CODE DEFINED_AS DECLARATION CONTEXT ] +## +## The known suffix of the stack is as follows: +## STATE +## + +expected an identifier defining the name of the state + +source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT STATE LIDENT YEAR +## +## Ends in an error in state: 260. +## +## rule -> option(label) option(exception_to) RULE rule_expr option(condition_consequence) option(state) . rule_consequence [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] +## +## The known suffix of the stack is as follows: +## option(label) option(exception_to) RULE rule_expr option(condition_consequence) option(state) +## + +expected 'equals' then an expression defining the rule + +source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION LIDENT STATE LIDENT YEAR +## +## Ends in an error in state: 268. +## +## definition -> option(label) option(exception_to) DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) option(state) . option(condition_consequence) DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] +## +## The known suffix of the stack is as follows: +## option(label) option(exception_to) DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) option(state) +## + +expected 'equals' then an expression defining the rule + +source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION LIDENT UNDER_CONDITION UIDENT CONSEQUENCE YEAR +## +## Ends in an error in state: 269. +## +## definition -> option(label) option(exception_to) DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) option(state) option(condition_consequence) . DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] +## +## The known suffix of the stack is as follows: +## option(label) option(exception_to) DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) option(state) option(condition_consequence) +## + +expected 'fulfilled' or 'not fulfilled' + +source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION LIDENT DEFINED_AS FALSE YEAR +## +## Ends in an error in state: 271. +## +## definition -> option(label) option(exception_to) DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) option(state) option(condition_consequence) DEFINED_AS expression . [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] +## expression -> expression . DOT qlident [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . OF expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . WITH constructor_binding [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . CONTAINS expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . MULT expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . DIV expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . PLUS expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . MINUS expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . PLUSPLUS expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . LESSER expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . GREATER expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . EQUAL expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . AND expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . OR expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . XOR expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## +## The known suffix of the stack is as follows: +## option(label) option(exception_to) DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) option(state) option(condition_consequence) DEFINED_AS expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON CONTEXT YEAR +## +## Ends in an error in state: 304. +## +## scope_decl_item_attribute -> scope_decl_item_attribute_input . scope_decl_item_attribute_output [ LIDENT ] +## +## The known suffix of the stack is as follows: +## scope_decl_item_attribute_input +## + +expected a variable name, optionally preceded by 'output' + +source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON INTERNAL YEAR +## +## Ends in an error in state: 307. +## +## scope_decl_item -> scope_decl_item_attribute . lident CONTENT typ option(struct_scope_func) list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] +## scope_decl_item -> scope_decl_item_attribute . lident CONDITION option(struct_scope_func) list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] +## +## The known suffix of the stack is as follows: +## scope_decl_item_attribute +## + +expected a variable name + +source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON CONTEXT LIDENT YEAR +## +## Ends in an error in state: 308. +## +## scope_decl_item -> scope_decl_item_attribute lident . CONTENT typ option(struct_scope_func) list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] +## scope_decl_item -> scope_decl_item_attribute lident . CONDITION option(struct_scope_func) list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] +## +## The known suffix of the stack is as follows: +## scope_decl_item_attribute lident +## + +expected either 'condition', or 'content' followed by the expected variable type + +source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON CONTEXT LIDENT CONTENT YEAR +## +## Ends in an error in state: 309. +## +## scope_decl_item -> scope_decl_item_attribute lident CONTENT . typ option(struct_scope_func) list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] +## +## The known suffix of the stack is as follows: +## scope_decl_item_attribute lident CONTENT +## + +expected a type + +source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON CONTEXT LIDENT CONTENT BOOLEAN YEAR +## +## Ends in an error in state: 310. +## +## scope_decl_item -> scope_decl_item_attribute lident CONTENT typ . option(struct_scope_func) list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] +## +## The known suffix of the stack is as follows: +## scope_decl_item_attribute lident CONTENT typ +## + +expected either 'state' definitions for the variable, or the next declaration +for the scope + +source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON CONTEXT LIDENT CONTENT UIDENT DEPENDS BOOLEAN YEAR +## +## Ends in an error in state: 311. +## +## scope_decl_item -> scope_decl_item_attribute lident CONTENT typ option(struct_scope_func) . list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] +## +## The known suffix of the stack is as follows: +## scope_decl_item_attribute lident CONTENT typ option(struct_scope_func) +## + +expected either 'state' definitions for the variable, or the next declaration +for the scope + +source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON CONTEXT LIDENT CONDITION STATE LIDENT YEAR +## +## Ends in an error in state: 312. +## +## list(state) -> state . list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] +## +## The known suffix of the stack is as follows: +## state +## + +expected either another 'state' definitions for the variable, or the next +declaration for the scope + +source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON CONTEXT LIDENT CONDITION YEAR +## +## Ends in an error in state: 315. +## +## scope_decl_item -> scope_decl_item_attribute lident CONDITION . option(struct_scope_func) list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] +## +## The known suffix of the stack is as follows: +## scope_decl_item_attribute lident CONDITION +## + +expected the next declaration for the scope + +source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON CONTEXT LIDENT CONDITION DEPENDS BOOLEAN YEAR +## +## Ends in an error in state: 316. +## +## scope_decl_item -> scope_decl_item_attribute lident CONDITION option(struct_scope_func) . list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] +## +## The known suffix of the stack is as follows: +## scope_decl_item_attribute lident CONDITION option(struct_scope_func) +## + +expected the next declaration for the scope + +source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON LIDENT SCOPE UIDENT YEAR +## +## Ends in an error in state: 318. +## +## nonempty_list(addpos(scope_decl_item)) -> scope_decl_item . [ SCOPE END_CODE DECLARATION ] +## nonempty_list(addpos(scope_decl_item)) -> scope_decl_item . nonempty_list(addpos(scope_decl_item)) [ SCOPE END_CODE DECLARATION ] +## +## The known suffix of the stack is as follows: +## scope_decl_item +## + +expected the next declaration for the scope + +source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON LIDENT YEAR +## +## Ends in an error in state: 320. +## +## scope_decl_item -> lident . SCOPE UIDENT [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] +## +## The known suffix of the stack is as follows: +## lident +## + +expected the form ' scope ', or a scope variable declaration + +source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON LIDENT SCOPE YEAR +## +## Ends in an error in state: 321. +## +## scope_decl_item -> lident SCOPE . UIDENT [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] +## +## The known suffix of the stack is as follows: +## lident SCOPE +## + +expected a scope name + +source_file: BEGIN_CODE DECLARATION LIDENT YEAR +## +## Ends in an error in state: 335. +## +## code_item -> DECLARATION lident . CONTENT typ DEPENDS separated_nonempty_list(COMMA,var_content) DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] +## code_item -> DECLARATION lident . CONTENT typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] +## +## The known suffix of the stack is as follows: +## DECLARATION lident +## + +expected 'content ' + +source_file: BEGIN_CODE DECLARATION LIDENT CONTENT YEAR +## +## Ends in an error in state: 336. +## +## code_item -> DECLARATION lident CONTENT . typ DEPENDS separated_nonempty_list(COMMA,var_content) DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] +## code_item -> DECLARATION lident CONTENT . typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] +## +## The known suffix of the stack is as follows: +## DECLARATION lident CONTENT +## + +expected a type + +source_file: BEGIN_CODE DECLARATION LIDENT CONTENT BOOLEAN YEAR +## +## Ends in an error in state: 337. +## +## code_item -> DECLARATION lident CONTENT typ . DEPENDS separated_nonempty_list(COMMA,var_content) DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] +## code_item -> DECLARATION lident CONTENT typ . DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] +## +## The known suffix of the stack is as follows: +## DECLARATION lident CONTENT typ +## + +expected 'equals ', optionally preceded by 'depends on content +' + +source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS YEAR +## +## Ends in an error in state: 338. +## +## code_item -> DECLARATION lident CONTENT typ DEPENDS . separated_nonempty_list(COMMA,var_content) DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] +## code_item -> DECLARATION lident CONTENT typ DEPENDS . LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] +## +## The known suffix of the stack is as follows: +## DECLARATION lident CONTENT typ DEPENDS +## + +expected a variable name, following the form 'depends on content ' + +source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LPAREN YEAR +## +## Ends in an error in state: 339. +## +## code_item -> DECLARATION lident CONTENT typ DEPENDS LPAREN . separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] +## +## The known suffix of the stack is as follows: +## DECLARATION lident CONTENT typ DEPENDS LPAREN +## + +expected a variable name, following the form 'depends on ( content , ...)' + +source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LPAREN LIDENT CONTENT UIDENT DEFINED_AS +## +## Ends in an error in state: 340. +## +## code_item -> DECLARATION lident CONTENT typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) . RPAREN DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] +## +## The known suffix of the stack is as follows: +## DECLARATION lident CONTENT typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) +## +## WARNING: This example involves spurious reductions. +## This implies that, although the LR(1) items shown above provide an +## accurate view of the past (what has been recognized so far), they +## may provide an INCOMPLETE view of the future (what was expected next). +## In state 21, spurious reduction of production quident -> UIDENT +## In state 213, spurious reduction of production typ_base -> quident +## In state 285, spurious reduction of production typ -> typ_base +## In state 346, spurious reduction of production separated_nonempty_list(COMMA,var_content) -> lident CONTENT typ +## + +expected ')', or ',' followed by another argument declaration in the form ' +content ' + +source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LPAREN LIDENT CONTENT UIDENT RPAREN YEAR +## +## Ends in an error in state: 341. +## +## code_item -> DECLARATION lident CONTENT typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN . DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] +## +## The known suffix of the stack is as follows: +## DECLARATION lident CONTENT typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN +## + +expected 'equals ' + +source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LPAREN LIDENT CONTENT UIDENT RPAREN DEFINED_AS YEAR +## +## Ends in an error in state: 342. +## +## code_item -> DECLARATION lident CONTENT typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS . expression [ SCOPE END_CODE DECLARATION ] +## +## The known suffix of the stack is as follows: +## DECLARATION lident CONTENT typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS +## + +expected an expression + +source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LPAREN LIDENT CONTENT UIDENT RPAREN DEFINED_AS FALSE YEAR +## +## Ends in an error in state: 343. +## +## code_item -> DECLARATION lident CONTENT typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS expression . [ SCOPE END_CODE DECLARATION ] +## expression -> expression . DOT qlident [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . OF expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . WITH constructor_binding [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . CONTAINS expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . MULT expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . DIV expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . PLUS expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . MINUS expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . PLUSPLUS expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . LESSER expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . GREATER expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . EQUAL expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . AND expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . OR expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . XOR expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## +## The known suffix of the stack is as follows: +## DECLARATION lident CONTENT typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LIDENT YEAR +## +## Ends in an error in state: 344. +## +## separated_nonempty_list(COMMA,var_content) -> lident . CONTENT typ [ RPAREN DEFINED_AS ] +## separated_nonempty_list(COMMA,var_content) -> lident . CONTENT typ COMMA separated_nonempty_list(COMMA,var_content) [ RPAREN DEFINED_AS ] +## +## The known suffix of the stack is as follows: +## lident +## + +expected 'content ' + +source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LIDENT CONTENT YEAR +## +## Ends in an error in state: 345. +## +## separated_nonempty_list(COMMA,var_content) -> lident CONTENT . typ [ RPAREN DEFINED_AS ] +## separated_nonempty_list(COMMA,var_content) -> lident CONTENT . typ COMMA separated_nonempty_list(COMMA,var_content) [ RPAREN DEFINED_AS ] +## +## The known suffix of the stack is as follows: +## lident CONTENT +## + +expected a type + +source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LIDENT CONTENT BOOLEAN YEAR +## +## Ends in an error in state: 346. +## +## separated_nonempty_list(COMMA,var_content) -> lident CONTENT typ . [ RPAREN DEFINED_AS ] +## separated_nonempty_list(COMMA,var_content) -> lident CONTENT typ . COMMA separated_nonempty_list(COMMA,var_content) [ RPAREN DEFINED_AS ] +## +## The known suffix of the stack is as follows: +## lident CONTENT typ +## + +expected 'equals ' + +source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LIDENT CONTENT UIDENT COMMA YEAR +## +## Ends in an error in state: 347. +## +## separated_nonempty_list(COMMA,var_content) -> lident CONTENT typ COMMA . separated_nonempty_list(COMMA,var_content) [ RPAREN DEFINED_AS ] +## +## The known suffix of the stack is as follows: +## lident CONTENT typ COMMA +## + +expected the definition of another argument in the form ' content ' + +source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LIDENT CONTENT UIDENT RPAREN +## +## Ends in an error in state: 349. +## +## code_item -> DECLARATION lident CONTENT typ DEPENDS separated_nonempty_list(COMMA,var_content) . DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] +## +## The known suffix of the stack is as follows: +## DECLARATION lident CONTENT typ DEPENDS separated_nonempty_list(COMMA,var_content) +## +## WARNING: This example involves spurious reductions. +## This implies that, although the LR(1) items shown above provide an +## accurate view of the past (what has been recognized so far), they +## may provide an INCOMPLETE view of the future (what was expected next). +## In state 21, spurious reduction of production quident -> UIDENT +## In state 213, spurious reduction of production typ_base -> quident +## In state 285, spurious reduction of production typ -> typ_base +## In state 346, spurious reduction of production separated_nonempty_list(COMMA,var_content) -> lident CONTENT typ +## + +expected 'equals ' + +source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LIDENT CONTENT UIDENT DEFINED_AS YEAR +## +## Ends in an error in state: 350. +## +## code_item -> DECLARATION lident CONTENT typ DEPENDS separated_nonempty_list(COMMA,var_content) DEFINED_AS . expression [ SCOPE END_CODE DECLARATION ] +## +## The known suffix of the stack is as follows: +## DECLARATION lident CONTENT typ DEPENDS separated_nonempty_list(COMMA,var_content) DEFINED_AS +## + +expected an expression + +source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LIDENT CONTENT UIDENT DEFINED_AS FALSE YEAR +## +## Ends in an error in state: 351. +## +## code_item -> DECLARATION lident CONTENT typ DEPENDS separated_nonempty_list(COMMA,var_content) DEFINED_AS expression . [ SCOPE END_CODE DECLARATION ] +## expression -> expression . DOT qlident [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . OF expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . WITH constructor_binding [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . CONTAINS expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . MULT expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . DIV expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . PLUS expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . MINUS expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . PLUSPLUS expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . LESSER expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . GREATER expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . EQUAL expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . AND expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . OR expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . XOR expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## +## The known suffix of the stack is as follows: +## DECLARATION lident CONTENT typ DEPENDS separated_nonempty_list(COMMA,var_content) DEFINED_AS expression +## + +expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item + +source_file: BEGIN_DIRECTIVE YEAR +## +## Ends in an error in state: 359. +## +## source_file_item -> BEGIN_DIRECTIVE . LAW_INCLUDE COLON nonempty_list(DIRECTIVE_ARG) option(AT_PAGE) END_DIRECTIVE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] +## +## The known suffix of the stack is as follows: +## BEGIN_DIRECTIVE +## + +expected a directive, e.g. 'Include: ' + +source_file: BEGIN_DIRECTIVE LAW_INCLUDE YEAR +## +## Ends in an error in state: 360. +## +## source_file_item -> BEGIN_DIRECTIVE LAW_INCLUDE . COLON nonempty_list(DIRECTIVE_ARG) option(AT_PAGE) END_DIRECTIVE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] +## +## The known suffix of the stack is as follows: +## BEGIN_DIRECTIVE LAW_INCLUDE +## + +expected ':', then a file name or 'JORFTEXTNNNNNNNNNNNN' + +source_file: BEGIN_DIRECTIVE LAW_INCLUDE COLON YEAR +## +## Ends in an error in state: 361. +## +## source_file_item -> BEGIN_DIRECTIVE LAW_INCLUDE COLON . nonempty_list(DIRECTIVE_ARG) option(AT_PAGE) END_DIRECTIVE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] +## +## The known suffix of the stack is as follows: +## BEGIN_DIRECTIVE LAW_INCLUDE COLON +## + +expected a file name or 'JORFTEXTNNNNNNNNNNNN' + +source_file: BEGIN_DIRECTIVE LAW_INCLUDE COLON DIRECTIVE_ARG YEAR +## +## Ends in an error in state: 362. +## +## nonempty_list(DIRECTIVE_ARG) -> DIRECTIVE_ARG . [ END_DIRECTIVE AT_PAGE ] +## nonempty_list(DIRECTIVE_ARG) -> DIRECTIVE_ARG . nonempty_list(DIRECTIVE_ARG) [ END_DIRECTIVE AT_PAGE ] +## +## The known suffix of the stack is as follows: +## DIRECTIVE_ARG +## + +expected a page specification in the form '@p.', or a newline + +source_file: BEGIN_DIRECTIVE LAW_INCLUDE COLON DIRECTIVE_ARG AT_PAGE YEAR +## +## Ends in an error in state: 366. +## +## source_file_item -> BEGIN_DIRECTIVE LAW_INCLUDE COLON nonempty_list(DIRECTIVE_ARG) option(AT_PAGE) . END_DIRECTIVE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] +## +## The known suffix of the stack is as follows: +## BEGIN_DIRECTIVE LAW_INCLUDE COLON nonempty_list(DIRECTIVE_ARG) option(AT_PAGE) +## + +expected a newline + +source_file: LAW_HEADING YEAR +## +## Ends in an error in state: 371. +## +## source_file -> source_file_item . source_file [ # ] +## +## The known suffix of the stack is as follows: +## source_file_item +## + +expected one of +- plain text law in markdown format +- a catala metadata block started with '```catala-metadata' +- a catala code block started with '```catala' +- a catala test block started with '```catala-test-inline' or '```catala-test' +- a directive, e.g. '> Include: ' diff --git a/compiler/surface/parser.mly b/compiler/surface/parser.mly index 1682bcb5..893b4c63 100644 --- a/compiler/surface/parser.mly +++ b/compiler/surface/parser.mly @@ -303,7 +303,7 @@ let literal := money_amount_cents = cents; } } -| BAR ; d = DATE_LITERAL ; BAR ; { +| d = DATE_LITERAL ; { let (y,m,d) = d in LDate { literal_date_year = y; diff --git a/compiler/surface/tokens.mly b/compiler/surface/tokens.mly index 14730b9d..4cb2eb9b 100644 --- a/compiler/surface/tokens.mly +++ b/compiler/surface/tokens.mly @@ -37,7 +37,7 @@ %token DECIMAL_LITERAL %token MONEY_AMOUNT %token BEGIN_CODE TEXT -%token COLON ALT DATA BAR +%token COLON ALT DATA %token OF INTEGER COLLECTION CONTAINS AMONG %token RULE CONDITION DEFINED_AS %token LESSER GREATER LESSER_EQUAL GREATER_EQUAL diff --git a/doc/syntax/syntax_en.tex b/doc/syntax/syntax_en.tex index 03a1e947..50971643 100644 --- a/doc/syntax/syntax_en.tex +++ b/doc/syntax/syntax_en.tex @@ -389,7 +389,7 @@ \\ Direct scope call & \begin{catala} ```catala - outut of Scope1 + output of Scope1 with { -- fld1: 9 -- fld2: true } ``` \end{catala} diff --git a/examples/NSW_community_gaming/tests/test_nsw_social_housie.catala_en b/examples/NSW_community_gaming/tests/test_nsw_social_housie.catala_en index 384b551e..64e781a2 100644 --- a/examples/NSW_community_gaming/tests/test_nsw_social_housie.catala_en +++ b/examples/NSW_community_gaming/tests/test_nsw_social_housie.catala_en @@ -29,7 +29,7 @@ scope Test1: ```catala-test-inline $ catala Interpret -s Test1 [ERROR] Syntax error at token "scope" -Message: unexpected token +Message: expected either 'condition', or 'content' followed by the expected variable type Autosuggestion: did you mean "content", or maybe "condition"? Error token: @@ -73,7 +73,7 @@ scope Test2: ```catala-test-inline $ catala Interpret -s Test2 [ERROR] Syntax error at token "scope" -Message: unexpected token +Message: expected either 'condition', or 'content' followed by the expected variable type Autosuggestion: did you mean "content", or maybe "condition"? Error token: @@ -117,7 +117,7 @@ scope Test3: ```catala-test-inline $ catala Interpret -s Test3 [ERROR] Syntax error at token "scope" -Message: unexpected token +Message: expected either 'condition', or 'content' followed by the expected variable type Autosuggestion: did you mean "content", or maybe "condition"? Error token: @@ -163,7 +163,7 @@ scope Test4: ```catala-test-inline $ catala Interpret -s Test4 [ERROR] Syntax error at token "scope" -Message: unexpected token +Message: expected either 'condition', or 'content' followed by the expected variable type Autosuggestion: did you mean "content", or maybe "condition"? Error token: From 9b0c7583ecae5672092e0713a3cf133c68b4e7ca Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Mon, 23 Jan 2023 12:19:36 +0100 Subject: [PATCH 04/10] Add top-level definitions Only handled until before scalc at the moment. --- compiler/dcalc/from_scopelang.ml | 168 +- compiler/dcalc/optimizations.ml | 69 +- compiler/desugared/ast.ml | 21 +- compiler/desugared/ast.mli | 1 + compiler/desugared/dependency.ml | 58 +- compiler/desugared/from_surface.ml | 112 +- compiler/desugared/name_resolution.ml | 23 +- compiler/desugared/name_resolution.mli | 5 + compiler/driver.ml | 13 +- compiler/lcalc/closure_conversion.ml | 88 +- compiler/lcalc/compile_with_exceptions.ml | 99 +- compiler/lcalc/compile_without_exceptions.ml | 53 +- compiler/lcalc/to_ocaml.ml | 33 +- compiler/plugins/api_web.ml | 71 +- compiler/plugins/json_schema.ml | 21 +- compiler/scalc/ast.ml | 12 +- compiler/scalc/compile_from_lambda.ml | 151 +- compiler/scopelang/ast.ml | 16 +- compiler/scopelang/ast.mli | 1 + compiler/scopelang/dependency.ml | 104 +- compiler/scopelang/dependency.mli | 6 +- compiler/scopelang/from_desugared.ml | 5 + compiler/scopelang/print.ml | 2 +- compiler/shared_ast/definitions.ml | 28 +- compiler/shared_ast/expr.ml | 7 +- compiler/shared_ast/print.ml | 1 + compiler/shared_ast/program.ml | 16 +- compiler/shared_ast/scope.ml | 146 +- compiler/shared_ast/scope.mli | 41 +- compiler/shared_ast/typing.ml | 46 +- compiler/shared_ast/typing.mli | 1 + compiler/surface/ast.ml | 2 +- compiler/surface/parser.mly | 2 +- compiler/verification/conditions.ml | 84 +- french_law/python/src/aides_logement.py | 24541 +++++++++++----- .../python/src/allocations_familiales.py | 128 +- 36 files changed, 18552 insertions(+), 7623 deletions(-) diff --git a/compiler/dcalc/from_scopelang.ml b/compiler/dcalc/from_scopelang.ml index 2fcc784d..9db3d3aa 100644 --- a/compiler/dcalc/from_scopelang.ml +++ b/compiler/dcalc/from_scopelang.ml @@ -49,8 +49,9 @@ type 'm scope_sigs_ctx = 'm scope_sig_ctx ScopeName.Map.t type 'm ctx = { structs : struct_ctx; enums : enum_ctx; - scope_name : ScopeName.t; + scope_name : ScopeName.t option; scopes_parameters : 'm scope_sigs_ctx; + global_vars : ('m Ast.expr Var.t * naked_typ) TopdefName.Map.t; scope_vars : ('m Ast.expr Var.t * naked_typ * Desugared.Ast.io) ScopeVar.Map.t; subscope_vars : @@ -59,21 +60,6 @@ type 'm ctx = { local_vars : ('m Scopelang.Ast.expr, 'm Ast.expr Var.t) Var.Map.t; } -let empty_ctx - (struct_ctx : struct_ctx) - (enum_ctx : enum_ctx) - (scopes_ctx : 'm scope_sigs_ctx) - (scope_name : ScopeName.t) = - { - structs = struct_ctx; - enums = enum_ctx; - scope_name; - scopes_parameters = scopes_ctx; - scope_vars = ScopeVar.Map.empty; - subscope_vars = SubScopeName.Map.empty; - local_vars = Var.Map.empty; - } - let mark_tany m pos = Expr.with_ty m (Marked.mark pos TAny) ~pos (* Expression argument is used as a type witness, its type and positions aren't @@ -440,17 +426,21 @@ let rec translate_expr (ctx : 'm ctx) (e : 'm Scopelang.Ast.expr) : (* We insert various log calls to record arguments and outputs of user-defined functions belonging to scopes *) let e1_func = translate_expr ctx f in - let markings l = - match l with - | ScopelangScopeVar (v, _) -> - [ScopeName.get_info ctx.scope_name; ScopeVar.get_info v] - | SubScopeVar (s, _, (v, _)) -> - [ScopeName.get_info s; ScopeVar.get_info v] + let markings = + match ctx.scope_name, Marked.unmark f with + | Some sname, ELocation loc -> ( + match loc with + | ScopelangScopeVar (v, _) -> + [ScopeName.get_info sname; ScopeVar.get_info v] + | SubScopeVar (s, _, (v, _)) -> + [ScopeName.get_info s; ScopeVar.get_info v] + | GlobalVar _ -> []) + | _ -> [] in let e1_func = - match Marked.unmark f with - | ELocation l -> tag_with_log_entry e1_func BeginCall (markings l) - | _ -> e1_func + match markings with + | [] -> e1_func + | m -> tag_with_log_entry e1_func BeginCall m in let new_args = List.map (translate_expr ctx) args in let input_typ, output_typ = @@ -472,26 +462,35 @@ let rec translate_expr (ctx : 'm ctx) (e : 'm Scopelang.Ast.expr) : ctx.subscope_vars |> SubScopeName.Map.find (Marked.unmark sname) |> retrieve_in_and_out_typ_or_any var + | ELocation (GlobalVar glo) -> ( + let var, typ = + TopdefName.Map.find (Marked.unmark glo) ctx.global_vars + in + match typ with + | TArrow ((tin, _), (tout, _)) -> tin, tout + | _ -> + Errors.raise_spanned_error (Expr.pos e) + "Application of non function global") | _ -> TAny, TAny in let new_args = - match Marked.unmark f, new_args with - | ELocation l, [new_arg] -> + match markings, new_args with + | (_ :: _ as m), [new_arg] -> [ tag_with_log_entry new_arg (VarDef input_typ) - (markings l @ [Marked.mark (Expr.pos e) "input"]); + (m @ [Marked.mark (Expr.pos e) "input"]); ] | _ -> new_args in let new_e = Expr.eapp e1_func new_args m in let new_e = - match Marked.unmark f with - | ELocation l -> + match markings with + | [] -> new_e + | m -> tag_with_log_entry (tag_with_log_entry new_e (VarDef output_typ) - (markings l @ [Marked.mark (Expr.pos e) "output"])) - EndCall (markings l) - | _ -> new_e + (m @ [Marked.mark (Expr.pos e) "output"])) + EndCall m in new_e | EAbs { binder; tys } -> @@ -539,6 +538,9 @@ let rec translate_expr (ctx : 'm ctx) (e : 'm Scopelang.Ast.expr) : %a's results. Maybe you forgot to qualify it as an output?" SubScopeName.format_t (Marked.unmark s) ScopeVar.format_t (Marked.unmark a) SubScopeName.format_t (Marked.unmark s)) + | ELocation (GlobalVar v) -> + let v, _ = TopdefName.Map.find (Marked.unmark v) ctx.global_vars in + Expr.evar v m | EIfThenElse { cond; etrue; efalse } -> Expr.eifthenelse (translate_expr ctx cond) (translate_expr ctx etrue) (translate_expr ctx efalse) @@ -661,6 +663,10 @@ let translate_rule (a_var, Marked.unmark tau, a_io))) ctx.subscope_vars; } ) + | Definition ((GlobalVar _, _), _, _, _) -> + assert false + (* TODO: maybe Definition shouldn't include any Location at the type + level *) | Call (subname, subindex, m) -> let subscope_sig = ScopeName.Map.find subname ctx.scopes_parameters in let all_subscope_vars = subscope_sig.scope_sig_local_vars in @@ -864,15 +870,16 @@ let translate_rules new_ctx ) let translate_scope_decl - (struct_ctx : struct_ctx) - (enum_ctx : enum_ctx) - (sctx : 'm scope_sigs_ctx) + (ctx : 'm ctx) (scope_name : ScopeName.t) (sigma : 'm Scopelang.Ast.scope_decl) : 'm Ast.expr scope_body Bindlib.box * struct_ctx = let sigma_info = ScopeName.get_info sigma.scope_decl_name in - let scope_sig = ScopeName.Map.find sigma.scope_decl_name sctx in + let scope_sig = + ScopeName.Map.find sigma.scope_decl_name ctx.scopes_parameters + in let scope_variables = scope_sig.scope_sig_local_vars in + let ctx = { ctx with scope_name = Some scope_name } in let ctx = (* the context must be initialized for fresh variables for all only-input scope variables *) @@ -892,8 +899,7 @@ let translate_scope_decl ctx.scope_vars; } | _ -> ctx) - (empty_ctx struct_ctx enum_ctx sctx scope_name) - scope_variables + ctx scope_variables in let scope_input_var = scope_sig.scope_sig_input_var in let scope_input_struct_name = scope_sig.scope_sig_input_struct in @@ -1042,36 +1048,68 @@ let translate_program (prgm : 'm Scopelang.Ast.program) : 'm Ast.program = scope_sig_in_fields; scope_sig_out_fields = scope_return.out_struct_fields; }) - prgm.program_scopes + prgm.Scopelang.Ast.program_scopes + in + let top_ctx = + let global_vars = + TopdefName.Map.mapi + (fun name (_, ty) -> + Var.make (Marked.unmark (TopdefName.get_info name)), Marked.unmark ty) + prgm.Scopelang.Ast.program_globals + in + { + structs = decl_ctx.ctx_structs; + enums = decl_ctx.ctx_enums; + scope_name = None; + scopes_parameters = sctx; + scope_vars = ScopeVar.Map.empty; + subscope_vars = SubScopeName.Map.empty; + local_vars = Var.Map.empty; + global_vars; + } in (* the resulting expression is the list of definitions of all the scopes, ending with the top-level scope. The decl_ctx is filled in left-to-right order, then the chained scopes aggregated from the right. *) - let rec translate_scopes decl_ctx = function - | scope_name :: next_scopes -> - let scope = ScopeName.Map.find scope_name prgm.program_scopes in - let scope_body, scope_in_struct = - translate_scope_decl decl_ctx.ctx_structs decl_ctx.ctx_enums sctx - scope_name scope + let rec translate_defs ctx = function + | [] -> Bindlib.box Nil, ctx + | def :: next -> + let ctx, dvar, def = + match def with + | Scopelang.Dependency.Global gname -> + let expr, ty = TopdefName.Map.find gname prgm.program_globals in + let expr = translate_expr ctx expr in + ( ctx, + fst (TopdefName.Map.find gname ctx.global_vars), + Bindlib.box_apply + (fun e -> Topdef (gname, ty, e)) + (Expr.Box.lift expr) ) + | Scopelang.Dependency.Scope scope_name -> + let scope = ScopeName.Map.find scope_name prgm.program_scopes in + let scope_body, scope_in_struct = + translate_scope_decl ctx scope_name scope + in + ( { + ctx with + structs = + StructName.Map.union + (fun _ _ -> assert false) + ctx.structs scope_in_struct; + }, + (ScopeName.Map.find scope_name sctx).scope_sig_scope_var, + Bindlib.box_apply + (fun body -> ScopeDef (scope_name, body)) + scope_body ) in - let dvar = (ScopeName.Map.find scope_name sctx).scope_sig_scope_var in - let decl_ctx = - { - decl_ctx with - ctx_structs = - StructName.Map.union - (fun _ _ -> assert false (* should not happen *)) - decl_ctx.ctx_structs scope_in_struct; - } - in - let scope_next, decl_ctx = translate_scopes decl_ctx next_scopes in + let scope_next, ctx = translate_defs ctx next in + let next_bind = Bindlib.bind_var dvar scope_next in ( Bindlib.box_apply2 - (fun scope_body scope_next -> - ScopeDef { scope_name; scope_body; scope_next }) - scope_body - (Bindlib.bind_var dvar scope_next), - decl_ctx ) - | [] -> Bindlib.box Nil, decl_ctx + (fun item next_bind -> Cons (item, next_bind)) + def next_bind, + ctx ) in - let scopes, decl_ctx = translate_scopes decl_ctx scope_ordering in - { scopes = Bindlib.unbox scopes; decl_ctx } + let scopes, ctx = translate_defs top_ctx scope_ordering in + { + scopes = Bindlib.unbox scopes; + decl_ctx = { decl_ctx with ctx_structs = ctx.structs }; + } diff --git a/compiler/dcalc/optimizations.ml b/compiler/dcalc/optimizations.ml index f261de52..e5332b8e 100644 --- a/compiler/dcalc/optimizations.ml +++ b/compiler/dcalc/optimizations.ml @@ -213,70 +213,11 @@ let rec partial_evaluation (ctx : partial_evaluation_ctx) (e : 'm expr) : let optimize_expr (decl_ctx : decl_ctx) (e : 'm expr) = partial_evaluation { var_values = Var.Map.empty; decl_ctx } e -let rec scope_lets_map - (t : 'a -> 'm expr -> (dcalc, 'm mark) boxed_gexpr) - (ctx : 'a) - (scope_body_expr : 'm expr scope_body_expr) : - 'm expr scope_body_expr Bindlib.box = - match scope_body_expr with - | Result e -> - Bindlib.box_apply (fun e' -> Result e') (Expr.Box.lift (t ctx e)) - | ScopeLet scope_let -> - let var, next = Bindlib.unbind scope_let.scope_let_next in - let new_scope_let_expr = Expr.Box.lift (t ctx scope_let.scope_let_expr) in - let new_next = scope_lets_map t ctx next in - let new_next = Bindlib.bind_var var new_next in - Bindlib.box_apply2 - (fun new_scope_let_expr new_next -> - ScopeLet - { - scope_let with - scope_let_expr = new_scope_let_expr; - scope_let_next = new_next; - }) - new_scope_let_expr new_next - -let rec scopes_map - (t : 'a -> 'm expr -> (dcalc, 'm mark) boxed_gexpr) - (ctx : 'a) - (scopes : 'm expr scopes) : 'm expr scopes Bindlib.box = - match scopes with - | Nil -> Bindlib.box Nil - | ScopeDef scope_def -> - let scope_var, scope_next = Bindlib.unbind scope_def.scope_next in - let scope_arg_var, scope_body_expr = - Bindlib.unbind scope_def.scope_body.scope_body_expr - in - let new_scope_body_expr = scope_lets_map t ctx scope_body_expr in - let new_scope_body_expr = - Bindlib.bind_var scope_arg_var new_scope_body_expr - in - let new_scope_next = scopes_map t ctx scope_next in - let new_scope_next = Bindlib.bind_var scope_var new_scope_next in - Bindlib.box_apply2 - (fun new_scope_body_expr new_scope_next -> - ScopeDef - { - scope_def with - scope_next = new_scope_next; - scope_body = - { - scope_def.scope_body with - scope_body_expr = new_scope_body_expr; - }; - }) - new_scope_body_expr new_scope_next - -let program_map - (t : 'a -> 'm expr -> (dcalc, 'm mark) boxed_gexpr) - (ctx : 'a) - (p : 'm program) : 'm program Bindlib.box = - Bindlib.box_apply - (fun new_scopes -> { p with scopes = new_scopes }) - (scopes_map t ctx p.scopes) - let optimize_program (p : 'm program) : 'm program = Bindlib.unbox - (program_map partial_evaluation - { var_values = Var.Map.empty; decl_ctx = p.decl_ctx } + (Program.map_exprs + ~f: + (partial_evaluation + { var_values = Var.Map.empty; decl_ctx = p.decl_ctx }) + ~varf:(fun v -> v) p) diff --git a/compiler/desugared/ast.ml b/compiler/desugared/ast.ml index 025a5bbd..aa0ff4e0 100644 --- a/compiler/desugared/ast.ml +++ b/compiler/desugared/ast.ml @@ -197,6 +197,7 @@ type scope = { type program = { program_scopes : scope ScopeName.Map.t; + program_globals : (expr * typ) TopdefName.Map.t; program_ctx : decl_ctx; } @@ -216,15 +217,19 @@ let free_variables (def : rule RuleName.Map.t) : Pos.t ScopeDefMap.t = Pos.t ScopeDefMap.t = LocationSet.fold (fun (loc, loc_pos) acc -> - ScopeDefMap.add - (match loc with - | DesugaredScopeVar (v, st) -> ScopeDef.Var (Marked.unmark v, st) + let usage = + match loc with + | DesugaredScopeVar (v, st) -> + Some (ScopeDef.Var (Marked.unmark v, st)) | SubScopeVar (_, sub_index, sub_var) -> - ScopeDef.SubScopeVar - ( Marked.unmark sub_index, - Marked.unmark sub_var, - Marked.get_mark sub_index )) - loc_pos acc) + Some + (ScopeDef.SubScopeVar + ( Marked.unmark sub_index, + Marked.unmark sub_var, + Marked.get_mark sub_index )) + | GlobalVar _ -> None + in + match usage with Some u -> ScopeDefMap.add u loc_pos acc | None -> acc) locs acc in RuleName.Map.fold diff --git a/compiler/desugared/ast.mli b/compiler/desugared/ast.mli index 0d80d781..7f40750f 100644 --- a/compiler/desugared/ast.mli +++ b/compiler/desugared/ast.mli @@ -119,6 +119,7 @@ type scope = { type program = { program_scopes : scope ScopeName.Map.t; + program_globals : (expr * typ) TopdefName.Map.t; program_ctx : decl_ctx; } diff --git a/compiler/desugared/dependency.ml b/compiler/desugared/dependency.ml index a8233c55..fe00e08e 100644 --- a/compiler/desugared/dependency.ml +++ b/compiler/desugared/dependency.ml @@ -41,15 +41,24 @@ module Vertex = struct | Var (x, Some sx) -> Int.logxor (ScopeVar.hash x) (StateName.hash sx) | SubScope x -> SubScopeName.hash x - let compare = compare + let compare x y = + match x, y with + | Var (x, xst), Var (y, yst) -> ( + match ScopeVar.compare x y with + | 0 -> Option.compare StateName.compare xst yst + | n -> n) + | SubScope x, SubScope y -> SubScopeName.compare x y + | Var _, _ -> -1 + | _, Var _ -> 1 + | SubScope _, _ -> . + | _, SubScope _ -> . let equal x y = match x, y with - | Var (x, None), Var (y, None) -> ScopeVar.compare x y = 0 - | Var (x, Some sx), Var (y, Some sy) -> - ScopeVar.compare x y = 0 && StateName.compare sx sy = 0 - | SubScope x, SubScope y -> SubScopeName.compare x y = 0 - | _ -> false + | Var (x, sx), Var (y, sy) -> + ScopeVar.equal x y && Option.equal StateName.equal sx sy + | SubScope x, SubScope y -> SubScopeName.equal x y + | (Var _ | SubScope _), _ -> false let format_t (fmt : Format.formatter) (x : t) : unit = match x with @@ -57,6 +66,11 @@ module Vertex = struct | Var (v, Some sv) -> Format.fprintf fmt "%a.%a" ScopeVar.format_t v StateName.format_t sv | SubScope v -> SubScopeName.format_t fmt v + + let info = function + | Var (v, None) -> ScopeVar.get_info v + | Var (_, Some sv) -> StateName.get_info sv + | SubScope v -> SubScopeName.get_info v end (** On the edges, the label is the position of the expression responsible for @@ -97,32 +111,13 @@ let check_for_cycle (scope : Ast.scope) (g : ScopeDependencies.t) : unit = List.flatten (List.map (fun v -> - let var_str, var_info = - match v with - | Vertex.Var (v, None) -> - Format.asprintf "%a" ScopeVar.format_t v, ScopeVar.get_info v - | Vertex.Var (v, Some sv) -> - ( Format.asprintf "%a.%a" ScopeVar.format_t v - StateName.format_t sv, - StateName.get_info sv ) - | Vertex.SubScope v -> - ( Format.asprintf "%a" SubScopeName.format_t v, - SubScopeName.get_info v ) - in + let var_str = Format.asprintf "%a" Vertex.format_t v in + let var_info = Vertex.info v in let succs = ScopeDependencies.succ_e g v in let _, edge_pos, succ = List.find (fun (_, _, succ) -> List.mem succ scc) succs in - let succ_str = - match succ with - | Vertex.Var (v, None) -> - Format.asprintf "%a" ScopeVar.format_t v - | Vertex.Var (v, Some sv) -> - Format.asprintf "%a.%a" ScopeVar.format_t v StateName.format_t - sv - | Vertex.SubScope v -> - Format.asprintf "%a" SubScopeName.format_t v - in + let succ_str = Format.asprintf "%a" Vertex.format_t succ in [ ( Some ("Cycle variable " ^ var_str ^ ", declared:"), Marked.get_mark var_info ); @@ -171,7 +166,10 @@ let build_scope_dependencies (scope : Ast.scope) : ScopeDependencies.t = | ( Ast.ScopeDef.Var (v_defined, s_defined), Ast.ScopeDef.Var (v_used, s_used) ) -> (* simple case *) - if v_used = v_defined && s_used = s_defined then + if + ScopeVar.equal v_used v_defined + && Option.equal StateName.equal s_used s_defined + then (* variable definitions cannot be recursive *) Errors.raise_spanned_error fv_def_pos "The variable %a is used in one of its definitions, but \ @@ -199,7 +197,7 @@ let build_scope_dependencies (scope : Ast.scope) : ScopeDependencies.t = Ast.ScopeDef.SubScopeVar (used, _, _) ) -> (* here we are defining the input of a scope with the output of another subscope *) - if used = defined then + if SubScopeName.equal used defined then (* subscopes are not recursive functions *) Errors.raise_spanned_error fv_def_pos "The subscope %a is used when defining one of its inputs, \ diff --git a/compiler/desugared/from_surface.ml b/compiler/desugared/from_surface.ml index d77a6873..a27da9a8 100644 --- a/compiler/desugared/from_surface.ml +++ b/compiler/desugared/from_surface.ml @@ -192,13 +192,18 @@ let rec check_formula (op, pos_op) e = (** Usage: [translate_expr scope ctxt naked_expr] Translates [expr] into its desugared equivalent. [scope] is used to - disambiguate the scope and subscopes variables than occur in the expression *) + disambiguate the scope and subscopes variables than occur in the expression, + [None] is assumed to mean a toplevel definition *) let rec translate_expr - (scope : ScopeName.t) + (scope : ScopeName.t option) (inside_definition_of : Ast.ScopeDef.t Marked.pos option) (ctxt : Name_resolution.context) (expr : Surface.Ast.expression) : Ast.expr boxed = - let scope_ctxt = ScopeName.Map.find scope ctxt.scopes in + let scope_vars = + match scope with + | None -> IdentName.Map.empty + | Some s -> (ScopeName.Map.find s ctxt.scopes).var_idmap + in let rec_helper = translate_expr scope inside_definition_of ctxt in let pos = Marked.get_mark expr in let emark = Untyped { pos } in @@ -299,10 +304,13 @@ let rec translate_expr Expr.elit lit emark | Ident ([], (x, pos)) -> ( (* first we check whether this is a local var, then we resort to scope-wide - variables *) + variables, then global variables *) match IdentName.Map.find_opt x ctxt.local_var_idmap with + | Some uid -> + Expr.make_var uid emark + (* the whole box thing is to accomodate for this case *) | None -> ( - match IdentName.Map.find_opt x scope_ctxt.var_idmap with + match IdentName.Map.find_opt x scope_vars with | Some (ScopeVar uid) -> (* If the referenced variable has states, then here are the rules to desambiguate. In general, only the last state can be referenced. @@ -343,21 +351,28 @@ let rec translate_expr Some (List.hd (List.rev states))) in Expr.elocation (DesugaredScopeVar ((uid, pos), x_state)) emark - | Some (SubScope _) | None -> - Name_resolution.raise_unknown_identifier - "for a local or scope-wide variable" (x, pos)) - | Some uid -> - Expr.make_var uid emark - (* the whole box thing is to accomodate for this case *)) + | Some (SubScope _) + (* Note: allowing access to a global variable with the same name as a + subscope is disputable, but I see no good reason to forbid it either *) + | None -> ( + match IdentName.Map.find_opt x ctxt.topdefs with + | Some v -> + Expr.elocation + (GlobalVar (v, Marked.get_mark (TopdefName.get_info v))) + emark + | None -> + Name_resolution.raise_unknown_identifier + "for a local, scope-wide or global variable" (x, pos)))) | Ident (_path, _x) -> Errors.raise_spanned_error pos "Qualified paths are not supported yet" | Dotted (e, ((path, x), _ppos)) -> ( match path, Marked.unmark e with - | [], Ident ([], (y, _)) when Name_resolution.is_subscope_uid scope ctxt y - -> + | [], Ident ([], (y, _)) + when Option.fold scope ~none:false ~some:(fun s -> + Name_resolution.is_subscope_uid s ctxt y) -> (* In this case, y.x is a subscope variable *) let subscope_uid, subscope_real_uid = - match IdentName.Map.find y scope_ctxt.var_idmap with + match IdentName.Map.find y scope_vars with | SubScope (sub, sc) -> sub, sc | ScopeVar _ -> assert false in @@ -385,6 +400,9 @@ let rec translate_expr Expr.edstructaccess e (Marked.unmark x) str emark) | FunCall (f, arg) -> Expr.eapp (rec_helper f) [rec_helper arg] emark | ScopeCall ((([], sc_name), _), fields) -> + if scope = None then + Errors.raise_spanned_error pos + "Scope calls are not allowed outside of a scope"; let called_scope = Name_resolution.get_scope ctxt sc_name in let scope_def = ScopeName.Map.find called_scope ctxt.scopes in let in_struct = @@ -739,7 +757,7 @@ let rec translate_expr | Builtin LastDayOfMonth -> Expr.eop LastDayOfMonth [TLit TDate, pos] emark and disambiguate_match_and_build_expression - (scope : ScopeName.t) + (scope : ScopeName.t option) (inside_definition_of : Ast.ScopeDef.t Marked.pos option) (ctxt : Name_resolution.context) (cases : Surface.Ast.match_case Marked.pos list) : @@ -906,11 +924,11 @@ let process_default (cons : Surface.Ast.expression) : Ast.rule = let just = match just with - | Some just -> Some (translate_expr scope (Some def_key) ctxt just) + | Some just -> Some (translate_expr (Some scope) (Some def_key) ctxt just) | None -> None in let just = merge_conditions precond just (Marked.get_mark def_key) in - let cons = translate_expr scope (Some def_key) ctxt cons in + let cons = translate_expr (Some scope) (Some def_key) ctxt cons in { rule_just = just; rule_cons = cons; @@ -1037,7 +1055,7 @@ let process_assert (ass : Surface.Ast.assertion) : Ast.program = let scope : Ast.scope = ScopeName.Map.find scope_uid prgm.program_scopes in let ass = - translate_expr scope_uid None ctxt + translate_expr (Some scope_uid) None ctxt (match ass.Surface.Ast.assertion_condition with | None -> ass.Surface.Ast.assertion_content | Some cond -> @@ -1071,7 +1089,7 @@ let process_scope_use_item (ctxt : Name_resolution.context) (prgm : Ast.program) (item : Surface.Ast.scope_use_item Marked.pos) : Ast.program = - let precond = Option.map (translate_expr scope None ctxt) precond in + let precond = Option.map (translate_expr (Some scope) None ctxt) precond in match Marked.unmark item with | Surface.Ast.Rule rule -> process_rule precond scope ctxt prgm rule | Surface.Ast.Definition def -> process_def precond scope ctxt prgm def @@ -1146,6 +1164,53 @@ let process_scope_use (process_scope_use_item precond scope_uid ctxt) prgm use.scope_use_items +let process_topdef ctxt prgm def = + let id = + IdentName.Map.find + (Marked.unmark def.S.topdef_name) + ctxt.Name_resolution.topdefs + in + let ty_pos = Marked.get_mark def.S.topdef_type in + let translate_typ t = + (* Todo: better helper function from a more appropriate place *) + Name_resolution.process_base_typ ctxt + (S.Data (Marked.unmark t), Marked.get_mark t) + in + let body_type = translate_typ def.S.topdef_type in + let arg_types = + List.map (fun (_, ty) -> translate_typ ty) def.S.topdef_args + in + let expr = + let ctxt, rv_args = + List.fold_left + (fun (ctxt, rv_args) (v, _ty) -> + let ctxt, a = + Name_resolution.add_def_local_var ctxt (Marked.unmark v) + in + ctxt, a :: rv_args) + (ctxt, []) def.S.topdef_args + in + let body = translate_expr None None ctxt def.S.topdef_expr in + match def.S.topdef_args with + | [] -> body + | args -> + (* FIXME: hmm where do we stand on arg tuplification ? *) + Expr.make_abs + (Array.of_list (List.rev rv_args)) + body arg_types + (Marked.get_mark def.S.topdef_name) + in + let typ = + List.fold_right + (fun argty retty -> TArrow (argty, retty), ty_pos) + arg_types body_type + in + { + prgm with + Ast.program_globals = + TopdefName.Map.add id (Expr.unbox expr, typ) prgm.Ast.program_globals; + } + let attribute_to_io (attr : Surface.Ast.scope_decl_context_io) : Ast.io = { Ast.io_output = attr.scope_decl_context_io_output; @@ -1238,7 +1303,8 @@ let init_scope_defs scope_def_map) sub_scope_def.Name_resolution.var_idmap scope_def_map in - IdentName.Map.fold add_def scope_idmap Ast.ScopeDefMap.empty + IdentName.Map.fold add_def scope_idmap + Ast.ScopeDefMap.empty (* TODO: add topdefs too *) (** Main function of this module *) let translate_program @@ -1294,6 +1360,7 @@ let translate_program ctxt.Name_resolution.typedefs ScopeName.Map.empty; ctx_struct_fields = ctxt.Name_resolution.field_idmap; }; + Ast.program_globals = TopdefName.Map.empty; Ast.program_scopes; } in @@ -1310,7 +1377,10 @@ let translate_program (fun prgm item -> match Marked.unmark item with | Surface.Ast.ScopeUse use -> process_scope_use ctxt prgm use - | _ -> prgm) + | Surface.Ast.Topdef def -> process_topdef ctxt prgm def + | Surface.Ast.ScopeDecl _ | Surface.Ast.StructDecl _ + | Surface.Ast.EnumDecl _ -> + prgm) prgm block | LawInclude _ | LawText _ -> prgm in diff --git a/compiler/desugared/name_resolution.ml b/compiler/desugared/name_resolution.ml index 8a460288..7ea80982 100644 --- a/compiler/desugared/name_resolution.ml +++ b/compiler/desugared/name_resolution.ml @@ -81,6 +81,7 @@ type context = { (** The names of the enum constructors. Constructor names can be shared between different enums *) scopes : scope_context ScopeName.Map.t; (** For each scope, its context *) + topdefs : TopdefName.t IdentName.Map.t; (** Global definitions *) structs : struct_context StructName.Map.t; (** For each struct, its context *) enums : enum_context EnumName.Map.t; (** For each enum, its context *) @@ -638,9 +639,15 @@ let process_name_item (ctxt : context) (item : Surface.Ast.code_item Marked.pos) (TEnum e_uid) ctxt.typedefs; } | ScopeUse _ -> ctxt - | TopDef _ -> - Errors.raise_spanned_error (Marked.get_mark item) - "Toplevel definitions not handled yet" + | Topdef def -> + let name, pos = def.topdef_name in + Option.iter + (fun use -> + raise_already_defined_error (TopdefName.get_info use) name pos + "toplevel definition") + (IdentName.Map.find_opt name ctxt.topdefs); + let uid = TopdefName.fresh def.topdef_name in + { ctxt with topdefs = IdentName.Map.add name uid ctxt.topdefs } (** Process a code item that is a declaration *) let process_decl_item (ctxt : context) (item : Surface.Ast.code_item Marked.pos) @@ -650,9 +657,7 @@ let process_decl_item (ctxt : context) (item : Surface.Ast.code_item Marked.pos) | StructDecl sdecl -> process_struct_decl ctxt sdecl | EnumDecl edecl -> process_enum_decl ctxt edecl | ScopeUse _ -> ctxt - | TopDef _ -> - Errors.raise_spanned_error (Marked.get_mark item) - "Toplevel definitions not handled yet" + | Topdef _ -> ctxt (** Process a code block *) let process_code_block @@ -871,11 +876,8 @@ let process_scope_use (ctxt : context) (suse : Surface.Ast.scope_use) : context let process_use_item (ctxt : context) (item : Surface.Ast.code_item Marked.pos) : context = match Marked.unmark item with - | ScopeDecl _ | StructDecl _ | EnumDecl _ -> ctxt + | ScopeDecl _ | StructDecl _ | EnumDecl _ | Topdef _ -> ctxt | ScopeUse suse -> process_scope_use ctxt suse - | TopDef _ -> - Errors.raise_spanned_error (Marked.get_mark item) - "Toplevel definitions not handled yet" (** {1 API} *) @@ -886,6 +888,7 @@ let form_context (prgm : Surface.Ast.program) : context = local_var_idmap = IdentName.Map.empty; typedefs = IdentName.Map.empty; scopes = ScopeName.Map.empty; + topdefs = IdentName.Map.empty; var_typs = ScopeVar.Map.empty; structs = StructName.Map.empty; field_idmap = IdentName.Map.empty; diff --git a/compiler/desugared/name_resolution.mli b/compiler/desugared/name_resolution.mli index 774e158c..5672d2d6 100644 --- a/compiler/desugared/name_resolution.mli +++ b/compiler/desugared/name_resolution.mli @@ -81,6 +81,7 @@ type context = { (** The names of the enum constructors. Constructor names can be shared between different enums *) scopes : scope_context ScopeName.Map.t; (** For each scope, its context *) + topdefs : TopdefName.t IdentName.Map.t; (** Global definitions *) structs : struct_context StructName.Map.t; (** For each struct, its context *) enums : enum_context EnumName.Map.t; (** For each enum, its context *) @@ -149,6 +150,10 @@ val get_scope : context -> IdentName.t Marked.pos -> ScopeName.t (** Find a scope definition from the typedefs, failing if there is none or it has a different kind *) +val process_base_typ : context -> Surface.Ast.base_typ Marked.pos -> typ +(** Convert a surface base type to an AST type *) +(* Note: should probably be moved to a different module *) + (** {1 API} *) val form_context : Surface.Ast.program -> context diff --git a/compiler/driver.ml b/compiler/driver.ml index e004cbcf..250a6f7e 100644 --- a/compiler/driver.ml +++ b/compiler/driver.ml @@ -237,13 +237,12 @@ let driver source_file (options : Cli.options) : int = ( scope_uid, Option.get (Shared_ast.Scope.fold_left ~init:None - ~f:(fun acc scope_def _ -> - if - Shared_ast.ScopeName.compare scope_def.scope_name - scope_uid - = 0 - then Some scope_def.scope_body - else acc) + ~f:(fun acc def _ -> + match def with + | ScopeDef (name, body) + when Shared_ast.ScopeName.equal name scope_uid -> + Some body + | _ -> acc) prgm.scopes) ) else let prgrm_dcalc_expr = diff --git a/compiler/lcalc/closure_conversion.ml b/compiler/lcalc/closure_conversion.ml index d85241ea..3e873a68 100644 --- a/compiler/lcalc/closure_conversion.ml +++ b/compiler/lcalc/closure_conversion.ml @@ -166,53 +166,49 @@ let closure_conversion_expr (type m) (ctx : m ctx) (e : m expr) : m expr boxed = e' let closure_conversion (p : 'm program) : 'm program Bindlib.box = - let new_scopes, _ = - Scope.fold_left - ~f:(fun (acc_new_scopes, global_vars) scope scope_var -> - (* [acc_new_scopes] represents what has been translated in the past, it - needs a continuation to attach the rest of the translated scopes. *) - let scope_input_var, scope_body_expr = - Bindlib.unbind scope.scope_body.scope_body_expr - in - let global_vars = Var.Set.add scope_var global_vars in - let ctx = - { - name_context = Marked.unmark (ScopeName.get_info scope.scope_name); - globally_bound_vars = global_vars; - } - in - let new_scope_lets = - Scope.map_exprs_in_lets - ~f:(closure_conversion_expr ctx) - ~varf:(fun v -> v) - scope_body_expr - in - let new_scope_body_expr = - Bindlib.bind_var scope_input_var new_scope_lets - in - ( (fun next -> - acc_new_scopes - (Bindlib.box_apply2 - (fun new_scope_body_expr next -> - ScopeDef - { - scope with - scope_body = - { - scope.scope_body with - scope_body_expr = new_scope_body_expr; - }; - scope_next = next; - }) - new_scope_body_expr - (Bindlib.bind_var scope_var next))), - global_vars )) - ~init: - ( Fun.id, - Var.Set.of_list - (List.map Var.translate [handle_default; handle_default_opt]) ) + let _, new_scopes = + Scope.fold_map + ~f:(fun global_vars var code_item -> + ( Var.Set.add var global_vars, + match code_item with + | ScopeDef (name, body) -> + let scope_input_var, scope_body_expr = + Bindlib.unbind body.scope_body_expr + in + let ctx = + { + name_context = Marked.unmark (ScopeName.get_info name); + globally_bound_vars = global_vars; + } + in + let new_scope_lets = + Scope.map_exprs_in_lets + ~f:(closure_conversion_expr ctx) + ~varf:(fun v -> v) + scope_body_expr + in + let new_scope_body_expr = + Bindlib.bind_var scope_input_var new_scope_lets + in + Bindlib.box_apply + (fun scope_body_expr -> + ScopeDef (name, { body with scope_body_expr })) + new_scope_body_expr + | Topdef (name, ty, expr) -> + let ctx = + { + name_context = Marked.unmark (TopdefName.get_info name); + globally_bound_vars = global_vars; + } + in + Bindlib.box_apply + (fun e -> Topdef (name, ty, e)) + (Expr.Box.lift (closure_conversion_expr ctx expr)) )) + ~varf:(fun v -> v) + (Var.Set.of_list + (List.map Var.translate [handle_default; handle_default_opt])) p.scopes in Bindlib.box_apply (fun new_scopes -> { p with scopes = new_scopes }) - (new_scopes (Bindlib.box Nil)) + new_scopes diff --git a/compiler/lcalc/compile_with_exceptions.ml b/compiler/lcalc/compile_with_exceptions.ml index 69fa18c8..28e087f2 100644 --- a/compiler/lcalc/compile_with_exceptions.ml +++ b/compiler/lcalc/compile_with_exceptions.ml @@ -19,7 +19,7 @@ open Shared_ast module D = Dcalc.Ast module A = Ast -type 'm ctx = ('m D.expr, 'm A.expr Var.t) Var.Map.t +type 'm ctx = unit (** This environment contains a mapping between the variables in Dcalc and their correspondance in Lcalc. *) @@ -29,6 +29,8 @@ let thunk_expr (type m) (e : m A.expr boxed) : m A.expr boxed = let arg_t = Marked.mark pos (TLit TUnit) in Expr.make_abs [| dummy_var |] e [arg_t] pos +let translate_var : 'm D.expr Var.t -> 'm A.expr Var.t = Var.translate + let rec translate_default (ctx : 'm ctx) (exceptions : 'm D.expr list) @@ -56,7 +58,7 @@ let rec translate_default and translate_expr (ctx : 'm ctx) (e : 'm D.expr) : 'm A.expr boxed = let m = Marked.get_mark e in match Marked.unmark e with - | EVar v -> Expr.make_var (Var.Map.find v ctx) m + | EVar v -> Expr.make_var (translate_var v) m | EStruct { name; fields } -> Expr.estruct name (StructField.Map.map (translate_expr ctx) fields) m | EStructAccess { name; e; field } -> @@ -91,16 +93,8 @@ and translate_expr (ctx : 'm ctx) (e : 'm D.expr) : 'm A.expr boxed = (Marked.get_mark e) | EAbs { binder; tys } -> let vars, body = Bindlib.unmbind binder in - let ctx, lc_vars = - Array.fold_right - (fun var (ctx, lc_vars) -> - let lc_var = Var.make (Bindlib.name_of var) in - Var.Map.add var lc_var ctx, lc_var :: lc_vars) - vars (ctx, []) - in - let lc_vars = Array.of_list lc_vars in let new_body = translate_expr ctx body in - let new_binder = Expr.bind lc_vars new_body in + let new_binder = Expr.bind (Array.map translate_var vars) new_body in Expr.eabs new_binder tys (Marked.get_mark e) | EDefault { excepts = [exn]; just; cons } when !Cli.optimize_flag -> (* FIXME: bad place to rely on a global flag *) @@ -121,14 +115,14 @@ let rec translate_scope_lets | Result e -> Bindlib.box_apply (fun e -> Result e) (Expr.Box.lift (translate_expr ctx e)) | ScopeLet scope_let -> - let old_scope_let_var, scope_let_next = + let scope_let_var, scope_let_next = Bindlib.unbind scope_let.scope_let_next in - let new_scope_let_var = Var.make (Bindlib.name_of old_scope_let_var) in let new_scope_let_expr = translate_expr ctx scope_let.scope_let_expr in - let new_ctx = Var.Map.add old_scope_let_var new_scope_let_var ctx in - let new_scope_next = translate_scope_lets decl_ctx new_ctx scope_let_next in - let new_scope_next = Bindlib.bind_var new_scope_let_var new_scope_next in + let new_scope_next = translate_scope_lets decl_ctx ctx scope_let_next in + let new_scope_next = + Bindlib.bind_var (translate_var scope_let_var) new_scope_next + in Bindlib.box_apply2 (fun new_scope_next new_scope_let_expr -> ScopeLet @@ -145,55 +139,34 @@ let rec translate_scope_lets let rec translate_scopes (decl_ctx : decl_ctx) (ctx : 'm ctx) - (scopes : 'm D.expr scopes) : 'm A.expr scopes Bindlib.box = - match scopes with - | Nil -> Bindlib.box Nil - | ScopeDef scope_def -> - let old_scope_var, scope_next = Bindlib.unbind scope_def.scope_next in - let new_scope_var = - Var.make (Marked.unmark (ScopeName.get_info scope_def.scope_name)) - in - let old_scope_input_var, scope_body_expr = - Bindlib.unbind scope_def.scope_body.scope_body_expr - in - let new_scope_input_var = Var.make (Bindlib.name_of old_scope_input_var) in - let new_ctx = Var.Map.add old_scope_input_var new_scope_input_var ctx in - let new_scope_body_expr = - translate_scope_lets decl_ctx new_ctx scope_body_expr - in - let new_scope_body_expr = - Bindlib.bind_var new_scope_input_var new_scope_body_expr - in - let new_scope : 'm A.expr scope_body Bindlib.box = - Bindlib.box_apply - (fun new_scope_body_expr -> - { - scope_body_input_struct = - scope_def.scope_body.scope_body_input_struct; - scope_body_output_struct = - scope_def.scope_body.scope_body_output_struct; - scope_body_expr = new_scope_body_expr; - }) - new_scope_body_expr - in - let new_ctx = Var.Map.add old_scope_var new_scope_var new_ctx in - let scope_next = - Bindlib.bind_var new_scope_var - (translate_scopes decl_ctx new_ctx scope_next) - in - Bindlib.box_apply2 - (fun new_scope scope_next -> - ScopeDef - { - scope_name = scope_def.scope_name; - scope_body = new_scope; - scope_next; - }) - new_scope scope_next + (scopes : 'm D.expr code_item_list) : 'm A.expr code_item_list Bindlib.box = + Scope.map_ctx + ~f: + (fun ctx -> function + | Topdef (name, ty, e) -> + ( ctx, + Bindlib.box_apply + (fun e -> Topdef (name, ty, e)) + (Expr.Box.lift (translate_expr ctx e)) ) + | ScopeDef (name, body) -> + let scope_input_var, body_expr = + Bindlib.unbind body.scope_body_expr + in + let new_scope_body_expr = + translate_scope_lets decl_ctx ctx body_expr + in + let new_body = + Bindlib.bind_var (translate_var scope_input_var) new_scope_body_expr + in + ( ctx, + Bindlib.box_apply + (fun scope_body_expr -> + ScopeDef (name, { body with scope_body_expr })) + new_body )) + ~varf:translate_var ctx scopes let translate_program (prgm : 'm D.program) : 'm A.program = { - scopes = - Bindlib.unbox (translate_scopes prgm.decl_ctx Var.Map.empty prgm.scopes); + scopes = Bindlib.unbox (translate_scopes prgm.decl_ctx () prgm.scopes); decl_ctx = prgm.decl_ctx; } diff --git a/compiler/lcalc/compile_without_exceptions.ml b/compiler/lcalc/compile_without_exceptions.ml index 5b3f47cc..6fcc21af 100644 --- a/compiler/lcalc/compile_without_exceptions.ml +++ b/compiler/lcalc/compile_without_exceptions.ml @@ -511,39 +511,34 @@ let translate_scope_body }) (Bindlib.bind_var v' (translate_scope_let ctx' lets)) -let rec translate_scopes (ctx : 'm ctx) (scopes : 'm D.expr scopes) : - 'm A.expr scopes Bindlib.box = - match scopes with - | Nil -> Bindlib.box Nil - | ScopeDef { scope_name; scope_body; scope_next } -> - let scope_var, next = Bindlib.unbind scope_next in - let vmark = - match Bindlib.unbind scope_body.scope_body_expr with - | _, (Result e | ScopeLet { scope_let_expr = e; _ }) -> Marked.get_mark e - in - - let new_ctx = add_var vmark scope_var true ctx in - let new_scope_name = - (find ~info:"variable that was just created" scope_var new_ctx).var - in - - let scope_pos = Marked.get_mark (ScopeName.get_info scope_name) in - - let new_body = translate_scope_body scope_pos ctx scope_body in - let tail = translate_scopes new_ctx next in - - Bindlib.box_apply2 - (fun body tail -> - ScopeDef { scope_name; scope_body = body; scope_next = tail }) - new_body - (Bindlib.bind_var new_scope_name tail) +let rec translate_scopes (ctx : 'm ctx) (scopes : 'm D.expr code_item_list) : + 'm A.expr code_item_list Bindlib.box = + let _ctx, scopes = + Scope.fold_map + ~f: + (fun ctx var -> function + | Topdef (name, ty, e) -> + ( add_var (Marked.get_mark e) var true ctx, + Bindlib.box_apply + (fun e -> Topdef (name, ty, e)) + (Expr.Box.lift (translate_expr ~append_esome:false ctx e)) ) + | ScopeDef (scope_name, scope_body) -> + ( ctx, + let scope_pos = Marked.get_mark (ScopeName.get_info scope_name) in + Bindlib.box_apply + (fun body -> ScopeDef (scope_name, body)) + (translate_scope_body scope_pos ctx scope_body) )) + ~varf:Var.translate ctx scopes + in + scopes let translate_program (prgm : 'm D.program) : 'm A.program = let inputs_structs = - Scope.fold_left prgm.scopes ~init:[] ~f:(fun acc scope_def _ -> - scope_def.scope_body.scope_body_input_struct :: acc) + Scope.fold_left prgm.scopes ~init:[] ~f:(fun acc def _ -> + match def with + | ScopeDef (name, body) -> body.scope_body_input_struct :: acc + | Topdef _ -> acc) in - (* Cli.debug_print @@ Format.asprintf "List of structs to modify: [%a]" (Format.pp_print_list D.StructName.format_t) inputs_structs; *) let decl_ctx = diff --git a/compiler/lcalc/to_ocaml.ml b/compiler/lcalc/to_ocaml.ml index bf229ac8..991481b7 100644 --- a/compiler/lcalc/to_ocaml.ml +++ b/compiler/lcalc/to_ocaml.ml @@ -507,21 +507,24 @@ let rec format_scope_body_expr let rec format_scopes (ctx : decl_ctx) (fmt : Format.formatter) - (scopes : 'm Ast.expr scopes) : unit = - match scopes with - | Nil -> () - | ScopeDef scope_def -> - let scope_input_var, scope_body_expr = - Bindlib.unbind scope_def.scope_body.scope_body_expr - in - let scope_var, scope_next = Bindlib.unbind scope_def.scope_next in - Format.fprintf fmt "@\n@\n@[let %a (%a: %a.t) : %a.t =@\n%a@]%a" - format_var scope_var format_var scope_input_var format_to_module_name - (`Sname scope_def.scope_body.scope_body_input_struct) - format_to_module_name - (`Sname scope_def.scope_body.scope_body_output_struct) - (format_scope_body_expr ctx) - scope_body_expr (format_scopes ctx) scope_next + (scopes : 'm Ast.expr code_item_list) : unit = + Scope.fold_left + ~f:(fun () item var -> + match item with + | Topdef (name, typ, e) -> + Format.fprintf fmt "@\n@\n@[let %a : %a =@\n%a@]" format_var var + format_typ typ (format_expr ctx) e + | ScopeDef (name, body) -> + let scope_input_var, scope_body_expr = + Bindlib.unbind body.scope_body_expr + in + Format.fprintf fmt "@\n@\n@[let %a (%a: %a.t) : %a.t =@\n%a@]" + format_var var format_var scope_input_var format_to_module_name + (`Sname body.scope_body_input_struct) format_to_module_name + (`Sname body.scope_body_output_struct) + (format_scope_body_expr ctx) + scope_body_expr) + ~init:() scopes let format_program (fmt : Format.formatter) diff --git a/compiler/plugins/api_web.ml b/compiler/plugins/api_web.ml index 8f22a13c..78bd0ac4 100644 --- a/compiler/plugins/api_web.ml +++ b/compiler/plugins/api_web.ml @@ -329,48 +329,49 @@ module To_jsoo = struct Format.fprintf fmt "%a@\n" format_enum_decl (e, find_enum e ctx)) (type_ordering @ scope_structs) - let fmt_input_struct_name fmt (scope_def : 'a expr scope_def) = - format_struct_name fmt scope_def.scope_body.scope_body_input_struct + let fmt_input_struct_name fmt (scope_body : 'a expr scope_body) = + format_struct_name fmt scope_body.scope_body_input_struct - let fmt_output_struct_name fmt (scope_def : 'a expr scope_def) = - format_struct_name fmt scope_def.scope_body.scope_body_output_struct + let fmt_output_struct_name fmt (scope_body : 'a expr scope_body) = + format_struct_name fmt scope_body.scope_body_output_struct - let rec format_scopes_to_fun + let format_scopes_to_fun (ctx : decl_ctx) (fmt : Format.formatter) - (scopes : 'e scopes) = - match scopes with - | Nil -> () - | ScopeDef scope_def -> - let scope_var, scope_next = Bindlib.unbind scope_def.scope_next in - let fmt_fun_call fmt _ = - Format.fprintf fmt "@[%a@ |> %a_of_jsoo@ |> %a@ |> %a_to_jsoo@]" - fmt_input_struct_name scope_def fmt_input_struct_name scope_def - format_var scope_var fmt_output_struct_name scope_def - in - Format.fprintf fmt - "@\n@\n@[let %a@ (%a : %a Js.t)@ : %a Js.t =@\n%a@]@\n%a" - format_var scope_var fmt_input_struct_name scope_def - fmt_input_struct_name scope_def fmt_output_struct_name scope_def - fmt_fun_call () (format_scopes_to_fun ctx) scope_next + (scopes : 'e code_item_list) = + Scope.fold_left + ~f:(fun () code_item var -> + match code_item with + | Topdef _ -> () + | ScopeDef (name, body) -> + let fmt_fun_call fmt _ = + Format.fprintf fmt "@[%a@ |> %a_of_jsoo@ |> %a@ |> %a_to_jsoo@]" + fmt_input_struct_name body fmt_input_struct_name body format_var + var fmt_output_struct_name body + in + Format.fprintf fmt + "@\n@\n@[let %a@ (%a : %a Js.t)@ : %a Js.t =@\n%a@]@\n" + format_var var fmt_input_struct_name body fmt_input_struct_name body + fmt_output_struct_name body fmt_fun_call ()) + ~init:() scopes - let rec format_scopes_to_callbacks + let format_scopes_to_callbacks (ctx : decl_ctx) (fmt : Format.formatter) - (scopes : 'e scopes) : unit = - match scopes with - | Nil -> () - | ScopeDef scope_def -> - let scope_var, scope_next = Bindlib.unbind scope_def.scope_next in - let fmt_meth_name fmt _ = - Format.fprintf fmt "method %a : (%a Js.t -> %a Js.t) Js.callback" - format_var_camel_case scope_var fmt_input_struct_name scope_def - fmt_output_struct_name scope_def - in - Format.fprintf fmt "@,@[%a =@ Js.wrap_callback@ %a@]@,%a" - fmt_meth_name () format_var scope_var - (format_scopes_to_callbacks ctx) - scope_next + (scopes : 'e code_item_list) : unit = + Scope.fold_left + ~f:(fun () code_item var -> + match code_item with + | Topdef _ -> () + | ScopeDef (name, body) -> + let fmt_meth_name fmt _ = + Format.fprintf fmt "method %a : (%a Js.t -> %a Js.t) Js.callback" + format_var_camel_case var fmt_input_struct_name body + fmt_output_struct_name body + in + Format.fprintf fmt "@,@[%a =@ Js.wrap_callback@ %a@]@," + fmt_meth_name () format_var var) + ~init:() scopes let format_program (fmt : Format.formatter) diff --git a/compiler/plugins/json_schema.ml b/compiler/plugins/json_schema.ml index fcbca769..fd4922c0 100644 --- a/compiler/plugins/json_schema.ml +++ b/compiler/plugins/json_schema.ml @@ -48,14 +48,15 @@ module To_json = struct Format.fprintf fmt "%s" s let rec find_scope_def (target_name : string) : - 'm expr scopes -> 'm expr scope_def option = function + 'm expr code_item_list -> (ScopeName.t * 'm expr scope_body) option = + function | Nil -> None - | ScopeDef scope_def -> - let name = Format.asprintf "%a" ScopeName.format_t scope_def.scope_name in - if name = target_name then Some scope_def - else - let _, next_scope = Bindlib.unbind scope_def.scope_next in - find_scope_def target_name next_scope + | Cons (ScopeDef (name, body), _) + when String.equal target_name (Marked.unmark (ScopeName.get_info name)) -> + Some (name, body) + | Cons (_, next_bind) -> + let _, next_scope = Bindlib.unbind next_bind in + find_scope_def target_name next_scope let fmt_tlit fmt (tlit : typ_lit) = match tlit with @@ -101,7 +102,7 @@ module To_json = struct let fmt_definitions (ctx : decl_ctx) (fmt : Format.formatter) - (scope_def : 'e scope_def) = + ((scope_name, scope_body) : ScopeName.t * 'e scope_body) = let get_name t = match Marked.unmark t with | TStruct sname -> Format.asprintf "%a" format_struct_name sname @@ -198,7 +199,7 @@ module To_json = struct format_enum_name ename fmt_enum_properties ename | _ -> ())) (collect_required_type_defs_from_scope_input - scope_def.scope_body.scope_body_input_struct) + scope_body.scope_body_input_struct) let format_program (fmt : Format.formatter) @@ -220,7 +221,7 @@ module To_json = struct (fmt_definitions prgm.decl_ctx) scope_def (fmt_struct_properties prgm.decl_ctx) - scope_def.scope_body.scope_body_input_struct) + (snd scope_def).scope_body_input_struct) end let apply diff --git a/compiler/scalc/ast.ml b/compiler/scalc/ast.ml index 944e64ae..2d919932 100644 --- a/compiler/scalc/ast.ml +++ b/compiler/scalc/ast.ml @@ -18,8 +18,8 @@ open Catala_utils open Shared_ast module D = Dcalc.Ast module L = Lcalc.Ast -module TopLevelName = Uid.Make (Uid.MarkedString) () -module LocalName = Uid.Make (Uid.MarkedString) () +module TopLevelName = Uid.Gen () +module LocalName = Uid.Gen () let dead_value = LocalName.fresh ("dead_value", Pos.no_pos) let handle_default = TopLevelName.fresh ("handle_default", Pos.no_pos) @@ -67,4 +67,10 @@ type scope_body = { scope_body_func : func; } -type program = { decl_ctx : decl_ctx; scopes : scope_body list } +type global = GlobalVar of block | GlobalFunc of func + +type program = { + decl_ctx : decl_ctx; + globals : (TopLevelName.t * global) list; + scopes : scope_body list; +} diff --git a/compiler/scalc/compile_from_lambda.ml b/compiler/scalc/compile_from_lambda.ml index 691d24a0..a6d9e03d 100644 --- a/compiler/scalc/compile_from_lambda.ml +++ b/compiler/scalc/compile_from_lambda.ml @@ -330,54 +330,109 @@ let rec translate_scope_body_expr scope_let_next let translate_program (p : 'm L.program) : A.program = + let _, _, rglobals, rscopes = + Scope.fold_left + ~f:(fun (func_dict, var_dict, globals, scopes) code_item var -> + match code_item with + | ScopeDef (name, body) -> + let scope_input_var, scope_body_expr = + Bindlib.unbind body.scope_body_expr + in + let input_pos = Marked.get_mark (ScopeName.get_info name) in + let scope_input_var_id = + A.LocalName.fresh (Bindlib.name_of scope_input_var, input_pos) + in + let var_dict_local = + Var.Map.add scope_input_var scope_input_var_id var_dict + in + let new_scope_body = + translate_scope_body_expr name p.decl_ctx var_dict_local func_dict + scope_body_expr + in + let func_id = + A.TopLevelName.fresh (Bindlib.name_of var, Pos.no_pos) + in + ( Var.Map.add var func_id func_dict, + var_dict, + globals, + { + Ast.scope_body_name = name; + Ast.scope_body_var = func_id; + scope_body_func = + { + A.func_params = + [ + ( (scope_input_var_id, input_pos), + (TStruct body.scope_body_input_struct, input_pos) ); + ]; + A.func_body = new_scope_body; + }; + } + :: scopes ) + | Topdef _ -> failwith "todo" + (* | Topdef (name, _, (EAbs abs, _)) -> + * let func_id = + * A.TopLevelName.fresh (Bindlib.name_of var, Pos.no_pos) + * in + * let args_a, expr = Bindlib.unmbind abs.binder in + * let args = Array.to_list args_a in + * let args_id = + * List.map2 (fun v ty -> + * let pos = Marked.get_mark ty in + * (A.LocalName.fresh (Bindlib.name_of v, pos), pos), ty) + * args abs.tys + * in + * let block, expr = + * let ctxt = + * { + * func_dict; + * decl_ctx = p.decl_ctx; + * var_dict = + * List.fold_left2 (fun map arg ((id, _), _) -> Var.Map.add arg id map) + * var_dict args args_id; + * inside_definition_of = None; + * context_name = Marked.unmark (TopdefName.get_info name); + * } + * in + * translate_expr ctxt expr + * in + * let body_block = block @ [A.SReturn (Marked.unmark expr), Marked.get_mark expr] + * in + * Var.Map.add var func_id func_dict, + * var_dict, + * A.GlobalFunc { + * A.func_params = args_id; + * A.func_body = body_block; + * } :: globals, + * scopes + * | Topdef (name, ty, expr) -> + * let var_id = + * A.TopLevelName.fresh (Bindlib.name_of var, Pos.no_pos) + * in + * let block, expr = + * let ctxt = + * { + * func_dict; + * decl_ctx = p.decl_ctx; + * var_dict; + * inside_definition_of = None; + * context_name = Marked.unmark (TopdefName.get_info name); + * } + * in + * translate_expr ctxt expr + * in + * let block = block @ [A.SLocalDef (var_id, expr), Marked.get_mark expr] in *)) + ~init: + ( (if !Cli.avoid_exceptions_flag then + Var.Map.singleton L.handle_default_opt A.handle_default_opt + else Var.Map.singleton L.handle_default A.handle_default), + Var.Map.empty, + [], + [] ) + p.scopes + in { decl_ctx = p.decl_ctx; - scopes = - (let _, new_scopes = - Scope.fold_left - ~f:(fun (func_dict, new_scopes) scope_def scope_var -> - let scope_input_var, scope_body_expr = - Bindlib.unbind scope_def.scope_body.scope_body_expr - in - let input_pos = - Marked.get_mark (ScopeName.get_info scope_def.scope_name) - in - let scope_input_var_id = - A.LocalName.fresh (Bindlib.name_of scope_input_var, input_pos) - in - let var_dict = - Var.Map.singleton scope_input_var scope_input_var_id - in - let new_scope_body = - translate_scope_body_expr scope_def.scope_name p.decl_ctx - var_dict func_dict scope_body_expr - in - let func_id = - A.TopLevelName.fresh (Bindlib.name_of scope_var, Pos.no_pos) - in - let func_dict = Var.Map.add scope_var func_id func_dict in - ( func_dict, - { - Ast.scope_body_name = scope_def.scope_name; - Ast.scope_body_var = func_id; - scope_body_func = - { - A.func_params = - [ - ( (scope_input_var_id, input_pos), - ( TStruct scope_def.scope_body.scope_body_input_struct, - input_pos ) ); - ]; - A.func_body = new_scope_body; - }; - } - :: new_scopes )) - ~init: - ( (if !Cli.avoid_exceptions_flag then - Var.Map.singleton L.handle_default_opt A.handle_default_opt - else Var.Map.singleton L.handle_default A.handle_default), - [] ) - p.scopes - in - List.rev new_scopes); + globals = List.rev rglobals; + scopes = List.rev rscopes; } diff --git a/compiler/scopelang/ast.ml b/compiler/scopelang/ast.ml index f7f35c1d..49ef6ef4 100644 --- a/compiler/scopelang/ast.ml +++ b/compiler/scopelang/ast.ml @@ -53,6 +53,7 @@ type 'm scope_decl = { type 'm program = { program_scopes : 'm scope_decl ScopeName.Map.t; + program_globals : ('m expr * typ) TopdefName.Map.t; program_ctx : decl_ctx; } @@ -69,12 +70,23 @@ let type_rule decl_ctx env = function Call (sc_name, ssc_name, Typed { pos; ty = Marked.mark pos TAny }) let type_program (prg : 'm program) : typed program = + let typing_env = + TopdefName.Map.fold + (fun name (_, ty) -> Typing.Env.add_global_var name ty) + prg.program_globals Typing.Env.empty + in + let program_globals = + TopdefName.Map.map + (fun (expr, typ) -> + Expr.unbox (Typing.expr prg.program_ctx ~env:typing_env ~typ expr), typ) + prg.program_globals + in let typing_env = ScopeName.Map.fold (fun scope_name scope_decl -> let vars = ScopeVar.Map.map fst scope_decl.scope_sig in Typing.Env.add_scope scope_name ~vars) - prg.program_scopes Typing.Env.empty + prg.program_scopes typing_env in let program_scopes = ScopeName.Map.map @@ -98,4 +110,4 @@ let type_program (prg : 'm program) : typed program = { scope_decl with scope_decl_rules; scope_mark }) prg.program_scopes in - { prg with program_scopes } + { prg with program_globals; program_scopes } diff --git a/compiler/scopelang/ast.mli b/compiler/scopelang/ast.mli index 342b506c..427ede52 100644 --- a/compiler/scopelang/ast.mli +++ b/compiler/scopelang/ast.mli @@ -45,6 +45,7 @@ type 'm scope_decl = { type 'm program = { program_scopes : 'm scope_decl ScopeName.Map.t; + program_globals : ('m expr * typ) TopdefName.Map.t; program_ctx : decl_ctx; } diff --git a/compiler/scopelang/dependency.ml b/compiler/scopelang/dependency.ml index 72177d8a..3ce56f2a 100644 --- a/compiler/scopelang/dependency.ml +++ b/compiler/scopelang/dependency.ml @@ -19,7 +19,46 @@ open Catala_utils open Shared_ast -module SVertex = ScopeName + +type vertex = Scope of ScopeName.t | Global of TopdefName.t + +module SVertex = struct + type t = vertex + (* While we enforce that globals don't depend on scopes, and could therefore + compute two separate dependency graphs and traverse them one after the + other, code-wise it's simpler to have a single graph including both *) + + let compare v1 v2 = + match v1, v2 with + | Scope s1, Scope s2 -> ScopeName.compare s1 s2 + | Global g1, Global g2 -> TopdefName.compare g1 g2 + | Scope _, _ -> -1 + | _, Scope _ -> 1 + | Global _, _ | _, Global _ -> . + + let equal v1 v2 = + match v1, v2 with + | Scope s1, Scope s2 -> ScopeName.equal s1 s2 + | Global g1, Global g2 -> TopdefName.equal g1 g2 + | (Scope _ | Global _), _ -> false + + let hash = function + | Scope s -> ScopeName.hash s + | Global g -> TopdefName.hash g + + let to_string v = + Format.asprintf "%a" + (fun ppf -> function + | Scope s -> ScopeName.format_t ppf s + | Global g -> TopdefName.format_t ppf g) + v + + let info = function + | Scope s -> ScopeName.get_info s + | Global g -> TopdefName.get_info g +end + +module VMap = Map.Make (SVertex) (** On the edges, the label is the expression responsible for the use of the function *) @@ -38,52 +77,77 @@ module STopologicalTraversal = Graph.Topological.Make (SDependencies) module SSCC = Graph.Components.Make (SDependencies) (** Tarjan's stongly connected components algorithm, provided by OCamlGraph *) -let rec expr_used_scopes e = +let rec expr_used_defs e = let recurse_subterms e = Expr.shallow_fold - (fun e -> ScopeName.Map.union (fun _ x _ -> Some x) (expr_used_scopes e)) - e ScopeName.Map.empty + (fun e -> VMap.union (fun _ x _ -> Some x) (expr_used_defs e)) + e VMap.empty in match e with + | ELocation (GlobalVar (v, pos)), _ -> VMap.singleton (Global v) pos | (EScopeCall { scope; _ }, m) as e -> - ScopeName.Map.add scope (Expr.mark_pos m) (recurse_subterms e) + VMap.add (Scope scope) (Expr.mark_pos m) (recurse_subterms e) | EAbs { binder; _ }, _ -> let _, body = Bindlib.unmbind binder in - expr_used_scopes body + expr_used_defs body | e -> recurse_subterms e -let rule_used_scopes = function +let rule_used_defs = function | Ast.Assertion e | Ast.Definition (_, _, _, e) -> (* TODO: maybe this info could be passed on from previous passes without walking through all exprs again *) - expr_used_scopes e + expr_used_defs e | Ast.Call (subscope, subindex, _) -> - ScopeName.Map.singleton subscope + VMap.singleton (Scope subscope) (Marked.get_mark (SubScopeName.get_info subindex)) let build_program_dep_graph (prgm : 'm Ast.program) : SDependencies.t = let g = SDependencies.empty in + let g = + TopdefName.Map.fold + (fun v _ g -> SDependencies.add_vertex g (Global v)) + prgm.program_globals g + in let g = ScopeName.Map.fold - (fun v _ g -> SDependencies.add_vertex g v) + (fun v _ g -> SDependencies.add_vertex g (Scope v)) prgm.program_scopes g in + let g = + TopdefName.Map.fold + (fun glo_name (expr, _) g -> + let used_defs = expr_used_defs expr in + if VMap.mem (Global glo_name) used_defs then + Errors.raise_spanned_error + (Marked.get_mark (TopdefName.get_info glo_name)) + "The global %a has a definition that refers to itself, which is \ + forbidden since Catala does not provide recursion" + TopdefName.format_t glo_name; + VMap.fold + (fun def pos g -> + let edge = SDependencies.E.create def pos (Global glo_name) in + SDependencies.add_edge_e g edge) + used_defs g) + prgm.program_globals g + in ScopeName.Map.fold (fun scope_name scope g -> List.fold_left (fun g rule -> - let used_scopes = rule_used_scopes rule in - if ScopeName.Map.mem scope_name used_scopes then + let used_defs = rule_used_defs rule in + if VMap.mem (Scope scope_name) used_defs then Errors.raise_spanned_error (Marked.get_mark (ScopeName.get_info scope.Ast.scope_decl_name)) "The scope %a is calling into itself as a subscope, which is \ forbidden since Catala does not provide recursion" ScopeName.format_t scope.Ast.scope_decl_name; - ScopeName.Map.fold - (fun used_scope pos g -> - let edge = SDependencies.E.create used_scope pos scope_name in + VMap.fold + (fun used_def pos g -> + let edge = + SDependencies.E.create used_def pos (Scope scope_name) + in SDependencies.add_edge_e g edge) - used_scopes g) + used_defs g) g scope.Ast.scope_decl_rules) prgm.program_scopes g @@ -97,14 +161,12 @@ let check_for_cycle_in_scope (g : SDependencies.t) : unit = List.flatten (List.map (fun v -> - let var_str, var_info = - Format.asprintf "%a" ScopeName.format_t v, ScopeName.get_info v - in + let var_str, var_info = SVertex.to_string v, SVertex.info v in let succs = SDependencies.succ_e g v in let _, edge_pos, succ = List.find (fun (_, _, succ) -> List.mem succ scc) succs in - let succ_str = Format.asprintf "%a" ScopeName.format_t succ in + let succ_str = SVertex.to_string succ in [ ( Some ("Cycle variable " ^ var_str ^ ", declared:"), Marked.get_mark var_info ); @@ -119,7 +181,7 @@ let check_for_cycle_in_scope (g : SDependencies.t) : unit = Errors.raise_multispanned_error spans "Cyclic dependency detected between scopes!" -let get_scope_ordering (g : SDependencies.t) : ScopeName.t list = +let get_scope_ordering (g : SDependencies.t) : SVertex.t list = List.rev (STopologicalTraversal.fold (fun sd acc -> sd :: acc) g []) module TVertex = struct diff --git a/compiler/scopelang/dependency.mli b/compiler/scopelang/dependency.mli index f4d40dba..9ad1e1ad 100644 --- a/compiler/scopelang/dependency.mli +++ b/compiler/scopelang/dependency.mli @@ -22,14 +22,16 @@ open Shared_ast (** {1 Scope dependencies} *) +type vertex = Scope of ScopeName.t | Global of TopdefName.t + (** On the edges, the label is the expression responsible for the use of the function *) module SDependencies : - Graph.Sig.P with type V.t = ScopeName.t and type E.label = Pos.t + Graph.Sig.P with type V.t = vertex and type E.label = Pos.t val build_program_dep_graph : 'm Ast.program -> SDependencies.t val check_for_cycle_in_scope : SDependencies.t -> unit -val get_scope_ordering : SDependencies.t -> ScopeName.t list +val get_scope_ordering : SDependencies.t -> vertex list (** {1 Type dependencies} *) diff --git a/compiler/scopelang/from_desugared.ml b/compiler/scopelang/from_desugared.ml index 20b3e2c8..391c7d5c 100644 --- a/compiler/scopelang/from_desugared.ml +++ b/compiler/scopelang/from_desugared.ml @@ -71,6 +71,7 @@ let rec translate_expr (ctx : ctx) (e : Desugared.Ast.expr) : | WholeVar _ -> failwith "should not happen" | States states -> Marked.same_mark_as (List.assoc state states) s_var)) m + | ELocation (GlobalVar v) -> Expr.elocation (GlobalVar v) m | EVar v -> Expr.evar (Var.Map.find v ctx.var_mapping) m | EStruct { name; fields } -> Expr.estruct name (StructField.Map.map (translate_expr ctx) fields) m @@ -727,6 +728,10 @@ let translate_program (pgrm : Desugared.Ast.program) : untyped Ast.program = pgrm.Desugared.Ast.program_ctx.ctx_scopes in { + Ast.program_globals = + TopdefName.Map.map + (fun (e, ty) -> Expr.unbox (translate_expr ctx e), ty) + pgrm.program_globals; Ast.program_scopes = ScopeName.Map.map (translate_scope ctx) pgrm.program_scopes; program_ctx = { pgrm.program_ctx with ctx_scopes }; diff --git a/compiler/scopelang/print.ml b/compiler/scopelang/print.ml index 649ef551..ddc5b157 100644 --- a/compiler/scopelang/print.ml +++ b/compiler/scopelang/print.ml @@ -77,7 +77,7 @@ let scope ?(debug = false) ctx fmt (name, decl) = (Print.typ ctx) typ Print.punctuation "=" (fun fmt e -> match Marked.unmark loc with - | SubScopeVar _ -> Print.expr ctx fmt e + | SubScopeVar _ | GlobalVar _ -> Print.expr ctx fmt e | ScopelangScopeVar v -> ( match Marked.unmark diff --git a/compiler/shared_ast/definitions.ml b/compiler/shared_ast/definitions.ml index 79c0accb..1c4e7cb5 100644 --- a/compiler/shared_ast/definitions.ml +++ b/compiler/shared_ast/definitions.ml @@ -246,6 +246,7 @@ type 'a glocation = | SubScopeVar : ScopeName.t * SubScopeName.t Marked.pos * ScopeVar.t Marked.pos -> [< desugared | scopelang ] glocation + | GlobalVar : TopdefName.t Marked.pos -> [< desugared | scopelang ] glocation type ('a, 't) gexpr = (('a, 't) naked_gexpr, 't) Marked.t (** General expressions: groups all expression cases of the different ASTs, and @@ -410,6 +411,7 @@ type 'e scope_let = { scope_let_typ : typ; scope_let_expr : 'e; scope_let_next : ('e, 'e scope_body_expr) binder; + (* todo ? Factorise the code_item _list type below and use it here *) scope_let_pos : Pos.t; } constraint 'e = (_ any, _ mark) gexpr @@ -435,25 +437,15 @@ type 'e scope_body = { a result expression that uses the let-binded variables. The first binder is the argument of type [scope_body_input_struct]. *) -type 'e scope_def = { - scope_name : ScopeName.t; - scope_body : 'e scope_body; - scope_next : ('e, 'e scopes) binder; -} - constraint 'e = (_ any, _ mark) gexpr -(* and 'e topdef = { - * topdef_name : TopdefName.t; - * topdef_expr : 'e; - * topdef_next : ('e, 'e scopes) binder; - * } - * constraint 'e = (_ any, _ mark) gexpr *) +type 'e code_item = + | ScopeDef of ScopeName.t * 'e scope_body + | Topdef of TopdefName.t * typ * 'e -(** Finally, we do the same transformation for the whole program for the kinded - lets. This permit us to use bindlib variables for scopes names. *) -and 'e scopes = +(* A chained list, but with a binder for each element into the next: [x := let a + = e1 in e2] is thus [Cons (e1, {a. Cons (e2, {x. Nil})})] *) +type 'e code_item_list = | Nil - | ScopeDef of 'e scope_def (* | Topdef of 'e topdef *) - constraint 'e = (_ any, _ mark) gexpr + | Cons of 'e code_item * ('e, 'e code_item_list) binder type struct_ctx = typ StructField.Map.t StructName.Map.t type enum_ctx = typ EnumConstructor.Map.t EnumName.Map.t @@ -471,4 +463,4 @@ type decl_ctx = { ctx_scopes : scope_out_struct ScopeName.Map.t; } -type 'e program = { decl_ctx : decl_ctx; scopes : 'e scopes } +type 'e program = { decl_ctx : decl_ctx; scopes : 'e code_item_list } diff --git a/compiler/shared_ast/expr.ml b/compiler/shared_ast/expr.ml index 5c41b096..808cd624 100644 --- a/compiler/shared_ast/expr.ml +++ b/compiler/shared_ast/expr.ml @@ -469,12 +469,15 @@ let compare_location SubScopeVar (_, (ysubindex, _), (ysubvar, _)) ) -> let c = SubScopeName.compare xsubindex ysubindex in if c = 0 then ScopeVar.compare xsubvar ysubvar else c + | GlobalVar (vx, _), GlobalVar (vy, _) -> TopdefName.compare vx vy | DesugaredScopeVar _, _ -> -1 | _, DesugaredScopeVar _ -> 1 | ScopelangScopeVar _, _ -> -1 | _, ScopelangScopeVar _ -> 1 - | SubScopeVar _, _ -> . - | _, SubScopeVar _ -> . + | SubScopeVar _, _ -> -1 + | _, SubScopeVar _ -> 1 + | GlobalVar _, _ -> . + | _, GlobalVar _ -> . let equal_location a b = compare_location a b = 0 let equal_except ex1 ex2 = ex1 = ex2 diff --git a/compiler/shared_ast/print.ml b/compiler/shared_ast/print.ml index f91a114f..23278b9d 100644 --- a/compiler/shared_ast/print.ml +++ b/compiler/shared_ast/print.ml @@ -66,6 +66,7 @@ let location (type a) (fmt : Format.formatter) (l : a glocation) : unit = | SubScopeVar (_, subindex, subvar) -> Format.fprintf fmt "%a.%a" SubScopeName.format_t (Marked.unmark subindex) ScopeVar.format_t (Marked.unmark subvar) + | GlobalVar v -> TopdefName.format_t fmt (Marked.unmark v) let enum_constructor (fmt : Format.formatter) (c : EnumConstructor.t) : unit = Cli.format_with_style [ANSITerminal.magenta] fmt diff --git a/compiler/shared_ast/program.ml b/compiler/shared_ast/program.ml index aec818cb..395dde8b 100644 --- a/compiler/shared_ast/program.ml +++ b/compiler/shared_ast/program.ml @@ -25,10 +25,10 @@ let map_exprs ~f ~varf { scopes; decl_ctx } = let get_scope_body { scopes; _ } scope = match Scope.fold_left ~init:None - ~f:(fun acc scope_def _ -> - if ScopeName.equal scope_def.scope_name scope then - Some scope_def.scope_body - else acc) + ~f:(fun acc item _ -> + match item with + | ScopeDef (name, body) when ScopeName.equal scope name -> Some body + | _ -> acc) scopes with | None -> raise Not_found @@ -40,10 +40,10 @@ let untype : 'm. ('a, 'm mark) gexpr program -> ('a, untyped mark) gexpr program let rec find_scope name vars = function | Nil -> raise Not_found - | ScopeDef { scope_name; scope_body; _ } when scope_name = name -> - List.rev vars, scope_body - | ScopeDef { scope_next; _ } -> - let var, next = Bindlib.unbind scope_next in + | Cons (ScopeDef (n, body), _) when ScopeName.equal name n -> + List.rev vars, body + | Cons (_, next_bind) -> + let var, next = Bindlib.unbind next_bind in find_scope name (var :: vars) next let to_expr p main_scope = diff --git a/compiler/shared_ast/scope.ml b/compiler/shared_ast/scope.ml index 037741b5..2ccc9e01 100644 --- a/compiler/shared_ast/scope.ml +++ b/compiler/shared_ast/scope.ml @@ -50,53 +50,72 @@ let map_exprs_in_lets : Bindlib.box_apply (fun res -> Result res) (Expr.Box.lift (f res))) scope_body_expr -let rec fold_left ~f ~init scopes = - match scopes with +let rec fold_left ~f ~init = function | Nil -> init - | ScopeDef scope_def -> - let var, next = Bindlib.unbind scope_def.scope_next in - fold_left ~f ~init:(f init scope_def var) next + | Cons (item, next_bind) -> + let var, next = Bindlib.unbind next_bind in + fold_left ~f ~init:(f init item var) next -let rec fold_right ~f ~init scopes = - match scopes with +let rec fold_right ~f ~init = function | Nil -> init - | ScopeDef scope_def -> - let var_next, next = Bindlib.unbind scope_def.scope_next in + | Cons (item, next_bind) -> + let var_next, next = Bindlib.unbind next_bind in let result_next = fold_right ~f ~init next in - f scope_def var_next result_next + f item var_next result_next -let map ~f scopes = - fold_right - ~f:(fun scope_def var_next acc -> - let new_def = f scope_def in - let new_next = Bindlib.bind_var var_next acc in +let rec map ~f ~varf = function + | Nil -> Bindlib.box Nil + | Cons (item, next_bind) -> + let item = f item in + let next_bind = + let var, next = Bindlib.unbind next_bind in + Bindlib.bind_var (varf var) (map ~f ~varf next) + in + Bindlib.box_apply2 + (fun item next_bind -> Cons (item, next_bind)) + item next_bind + +let rec map_ctx ~f ~varf ctx = function + | Nil -> Bindlib.box Nil + | Cons (item, next_bind) -> + let ctx, item = f ctx item in + let next_bind = + let var, next = Bindlib.unbind next_bind in + Bindlib.bind_var (varf var) (map_ctx ~f ~varf ctx next) + in + Bindlib.box_apply2 + (fun item next_bind -> Cons (item, next_bind)) + item next_bind + +let rec fold_map ~f ~varf ctx = function + | Nil -> ctx, Bindlib.box Nil + | Cons (item, next_bind) -> + let var, next = Bindlib.unbind next_bind in + let ctx, item = f ctx var item in + let ctx, next = fold_map ~f ~varf ctx next in + let next_bind = Bindlib.bind_var (varf var) next in + ( ctx, Bindlib.box_apply2 - (fun new_def new_next -> - ScopeDef { new_def with scope_next = new_next }) - new_def new_next) - ~init:(Bindlib.box Nil) scopes + (fun item next_bind -> Cons (item, next_bind)) + item next_bind ) let map_exprs ~f ~varf scopes = - fold_right - ~f:(fun scope_def var_next acc -> - let scope_input_var, scope_lets = - Bindlib.unbind scope_def.scope_body.scope_body_expr - in + let f = function + | ScopeDef (name, body) -> + let scope_input_var, scope_lets = Bindlib.unbind body.scope_body_expr in let new_body_expr = map_exprs_in_lets ~f ~varf scope_lets in let new_body_expr = Bindlib.bind_var (varf scope_input_var) new_body_expr in - let new_next = Bindlib.bind_var (varf var_next) acc in - Bindlib.box_apply2 - (fun scope_body_expr scope_next -> - ScopeDef - { - scope_def with - scope_body = { scope_def.scope_body with scope_body_expr }; - scope_next; - }) - new_body_expr new_next) - ~init:(Bindlib.box Nil) scopes + Bindlib.box_apply + (fun scope_body_expr -> ScopeDef (name, { body with scope_body_expr })) + new_body_expr + | Topdef (name, typ, expr) -> + Bindlib.box_apply + (fun e -> Topdef (name, typ, e)) + (Expr.Box.lift (f expr)) + in + map ~f ~varf scopes (* TODO: compute the expected body expr arrow type manually instead of [TAny] for double-checking types ? *) @@ -164,7 +183,7 @@ let format let rec unfold (ctx : decl_ctx) - (s : 'e scopes) + (s : 'e code_item_list) (mark : 'm mark) (main_scope : 'expr scope_name_or_var) : 'e boxed = match s with @@ -172,23 +191,31 @@ let rec unfold match main_scope with | ScopeVar v -> Expr.make_var v mark | ScopeName _ -> failwith "should not happen") - | ScopeDef { scope_name; scope_body; scope_next } -> - let scope_var, scope_next = Bindlib.unbind scope_next in - let scope_pos = Marked.get_mark (ScopeName.get_info scope_name) in - let scope_body_mark = get_body_mark scope_body in - let main_scope = - match main_scope with - | ScopeVar v -> ScopeVar v - | ScopeName n -> - if ScopeName.compare n scope_name = 0 then ScopeVar scope_var - else ScopeName n + | Cons (item, next_bind) -> + let var, next = Bindlib.unbind next_bind in + let typ, expr, pos, is_main = + match item with + | ScopeDef (name, body) -> + let pos = Marked.get_mark (ScopeName.get_info name) in + let body_mark = get_body_mark body in + let is_main = + match main_scope with + | ScopeName n -> ScopeName.equal n name + | ScopeVar _ -> false + in + let typ = + build_typ_from_sig ctx body.scope_body_input_struct + body.scope_body_output_struct pos + in + let expr = to_expr ctx body body_mark in + typ, expr, pos, is_main + | Topdef (name, typ, expr) -> + let pos = Marked.get_mark (TopdefName.get_info name) in + typ, Expr.box expr, pos, false in - Expr.make_let_in scope_var - (build_typ_from_sig ctx scope_body.scope_body_input_struct - scope_body.scope_body_output_struct scope_pos) - (to_expr ctx scope_body scope_body_mark) - (unfold ctx scope_next mark main_scope) - scope_pos + let main_scope = if is_main then ScopeVar var else main_scope in + let next = unfold ctx next mark main_scope in + Expr.make_let_in var typ expr next pos let rec free_vars_body_expr scope_lets = match scope_lets with @@ -198,14 +225,15 @@ let rec free_vars_body_expr scope_lets = Var.Set.union (Expr.free_vars e) (Var.Set.remove v (free_vars_body_expr body)) -let free_vars_body scope_body = - let { scope_body_expr = binder; _ } = scope_body in - let v, body = Bindlib.unbind binder in - Var.Set.remove v (free_vars_body_expr body) +let free_vars_item = function + | ScopeDef (_, { scope_body_expr; _ }) -> + let v, body = Bindlib.unbind scope_body_expr in + Var.Set.remove v (free_vars_body_expr body) + | Topdef (_, _, expr) -> Expr.free_vars expr let rec free_vars scopes = match scopes with | Nil -> Var.Set.empty - | ScopeDef { scope_body = body; scope_next = next; _ } -> - let v, next = Bindlib.unbind next in - Var.Set.union (Var.Set.remove v (free_vars next)) (free_vars_body body) + | Cons (item, next_bind) -> + let v, next = Bindlib.unbind next_bind in + Var.Set.union (Var.Set.remove v (free_vars next)) (free_vars_item item) diff --git a/compiler/shared_ast/scope.mli b/compiler/shared_ast/scope.mli index eea0ae9b..1c0f4666 100644 --- a/compiler/shared_ast/scope.mli +++ b/compiler/shared_ast/scope.mli @@ -49,18 +49,18 @@ val map_exprs_in_lets : 'expr2 scope_body_expr Bindlib.box val fold_left : - f:('a -> 'expr1 scope_def -> 'expr1 Var.t -> 'a) -> + f:('a -> 'expr1 code_item -> 'expr1 Var.t -> 'a) -> init:'a -> - 'expr1 scopes -> + 'expr1 code_item_list -> 'a (** Usage: [fold_left ~f:(fun acc scope_def scope_var -> ...) ~init scope_def], where [scope_var] is the variable bound to the scope in the next scopes to be examined. *) val fold_right : - f:('expr1 scope_def -> 'expr1 Var.t -> 'a -> 'a) -> + f:('expr1 code_item -> 'expr1 Var.t -> 'a -> 'a) -> init:'a -> - 'expr1 scopes -> + 'expr1 code_item_list -> 'a (** Usage: [fold_right_scope ~f:(fun scope_def scope_var acc -> ...) ~init scope_def], @@ -68,15 +68,32 @@ val fold_right : be examined (which are before in the program order). *) val map : - f:('e scope_def -> 'e scope_def Bindlib.box) -> - 'e scopes -> - 'e scopes Bindlib.box + f:('e1 code_item -> 'e2 code_item Bindlib.box) -> + varf:('e1 Var.t -> 'e2 Var.t) -> + 'e1 code_item_list -> + 'e2 code_item_list Bindlib.box + +val map_ctx : + f:('ctx -> 'e1 code_item -> 'ctx * 'e2 code_item Bindlib.box) -> + varf:('e1 Var.t -> 'e2 Var.t) -> + 'ctx -> + 'e1 code_item_list -> + 'e2 code_item_list Bindlib.box +(** Similar to [map], but a context is passed left-to-right through the given + function *) + +val fold_map : + f:('ctx -> 'e1 Var.t -> 'e1 code_item -> 'ctx * 'e2 code_item Bindlib.box) -> + varf:('e1 Var.t -> 'e2 Var.t) -> + 'ctx -> + 'e1 code_item_list -> + 'ctx * 'e2 code_item_list Bindlib.box val map_exprs : f:('expr1 -> 'expr2 boxed) -> varf:('expr1 Var.t -> 'expr2 Var.t) -> - 'expr1 scopes -> - 'expr2 scopes Bindlib.box + 'expr1 code_item_list -> + 'expr2 code_item_list Bindlib.box (** This is the main map visitor for all the expressions inside all the scopes of the program. *) @@ -103,7 +120,7 @@ type 'e scope_name_or_var = ScopeName of ScopeName.t | ScopeVar of 'e Var.t val unfold : decl_ctx -> - ((_, 'm mark) gexpr as 'e) scopes -> + ((_, 'm mark) gexpr as 'e) code_item_list -> 'm mark -> 'e scope_name_or_var -> 'e boxed @@ -116,5 +133,5 @@ val build_typ_from_sig : (** {2 Analysis and tests} *) val free_vars_body_expr : 'e scope_body_expr -> 'e Var.Set.t -val free_vars_body : 'e scope_body -> 'e Var.Set.t -val free_vars : 'e scopes -> 'e Var.Set.t +val free_vars_item : 'e code_item -> 'e Var.Set.t +val free_vars : 'e code_item_list -> 'e Var.Set.t diff --git a/compiler/shared_ast/typing.ml b/compiler/shared_ast/typing.ml index 6e876f7f..64728f76 100644 --- a/compiler/shared_ast/typing.ml +++ b/compiler/shared_ast/typing.ml @@ -276,6 +276,7 @@ module Env = struct vars : ('e, unionfind_typ) Var.Map.t; scope_vars : A.typ A.ScopeVar.Map.t; scopes : A.typ A.ScopeVar.Map.t A.ScopeName.Map.t; + global_vars : A.typ A.TopdefName.Map.t; } let empty = @@ -283,10 +284,12 @@ module Env = struct vars = Var.Map.empty; scope_vars = A.ScopeVar.Map.empty; scopes = A.ScopeName.Map.empty; + global_vars = A.TopdefName.Map.empty; } let get t v = Var.Map.find_opt v t.vars let get_scope_var t sv = A.ScopeVar.Map.find_opt sv t.scope_vars + let get_global_var t v = A.TopdefName.Map.find_opt v t.global_vars let get_subscope_out_var t scope var = Option.bind (A.ScopeName.Map.find_opt scope t.scopes) (fun vmap -> @@ -301,6 +304,9 @@ module Env = struct let add_scope scope_name ~vars t = { t with scopes = A.ScopeName.Map.add scope_name vars t.scopes } + let add_global_var v typ t = + { t with global_vars = A.TopdefName.Map.add v typ t.global_vars } + let open_scope scope_name t = let scope_vars = A.ScopeVar.Map.union @@ -361,6 +367,7 @@ and typecheck_expr_top_down : Env.get_scope_var env (Marked.unmark v) | SubScopeVar (scope, _, v) -> Env.get_subscope_out_var env scope (Marked.unmark v) + | GlobalVar v -> Env.get_global_var env (Marked.unmark v) in let ty = match ty_opt with @@ -777,7 +784,9 @@ let scope_body ctx env body = let var, e = Bindlib.unbind body.A.scope_body_expr in let env = Env.add var ty_in env in let e' = scope_body_expr ctx env ty_out e in - ( Bindlib.bind_var (Var.translate var) e', + ( Bindlib.box_apply + (fun scope_body_expr -> { body with scope_body_expr }) + (Bindlib.bind_var (Var.translate var) e'), UnionFind.make (Marked.mark (get_pos body.A.scope_body_output_struct) @@ -785,23 +794,26 @@ let scope_body ctx env body = let rec scopes ctx env = function | A.Nil -> Bindlib.box A.Nil - | A.ScopeDef def -> - let body_e, ty_scope = scope_body ctx env def.scope_body in - let scope_next = - let scope_var, next = Bindlib.unbind def.scope_next in - let env = Env.add scope_var ty_scope env in - let next' = scopes ctx env next in - Bindlib.bind_var (Var.translate scope_var) next' + | A.Cons (item, next_bind) -> + let var, next = Bindlib.unbind next_bind in + let env, def = + match item with + | A.ScopeDef (name, body) -> + let body_e, ty_scope = scope_body ctx env body in + ( Env.add var ty_scope env, + Bindlib.box_apply (fun body -> A.ScopeDef (name, body)) body_e ) + | A.Topdef (name, typ, e) -> + let e' = expr_raw ctx ~env ~typ e in + let uf = (Marked.get_mark e').uf in + let e' = Expr.map_marks ~f:get_ty_mark e' in + ( Env.add var uf env, + Bindlib.box_apply + (fun e -> A.Topdef (name, typ, e)) + (Expr.Box.lift e') ) in - Bindlib.box_apply2 - (fun scope_body_expr scope_next -> - A.ScopeDef - { - def with - scope_body = { def.scope_body with scope_body_expr }; - scope_next; - }) - body_e scope_next + let next' = scopes ctx env next in + let next_bind' = Bindlib.bind_var (Var.translate var) next' in + Bindlib.box_apply2 (fun item next -> A.Cons (item, next)) def next_bind' let program prg = let scopes = Bindlib.unbox (scopes prg.A.decl_ctx Env.empty prg.A.scopes) in diff --git a/compiler/shared_ast/typing.mli b/compiler/shared_ast/typing.mli index 32460428..bbe9922c 100644 --- a/compiler/shared_ast/typing.mli +++ b/compiler/shared_ast/typing.mli @@ -24,6 +24,7 @@ module Env : sig val empty : 'e t val add_var : 'e Var.t -> typ -> 'e t -> 'e t + val add_global_var : TopdefName.t -> typ -> 'e t -> 'e t val add_scope_var : ScopeVar.t -> typ -> 'e t -> 'e t val add_scope : ScopeName.t -> vars:typ ScopeVar.Map.t -> 'e t -> 'e t val open_scope : ScopeName.t -> 'e t -> 'e t diff --git a/compiler/surface/ast.ml b/compiler/surface/ast.ml index 55ed59a8..8ffdfa77 100644 --- a/compiler/surface/ast.ml +++ b/compiler/surface/ast.ml @@ -764,7 +764,7 @@ type code_item = | ScopeDecl of scope_decl | StructDecl of struct_decl | EnumDecl of enum_decl - | TopDef of top_def + | Topdef of top_def [@@deriving visitors { diff --git a/compiler/surface/parser.mly b/compiler/surface/parser.mly index 893b4c63..0645bb73 100644 --- a/compiler/surface/parser.mly +++ b/compiler/surface/parser.mly @@ -640,7 +640,7 @@ let code_item := CONTENT ; ty = addpos(typ) ; args = depends_stance ; DEFINED_AS ; e = expression ; { - TopDef { + Topdef { topdef_name = name; topdef_args = args; topdef_type = ty; diff --git a/compiler/verification/conditions.ml b/compiler/verification/conditions.ml index f3529861..85603fc6 100644 --- a/compiler/verification/conditions.ml +++ b/compiler/verification/conditions.ml @@ -372,48 +372,54 @@ let rec generate_verification_conditions_scope_body_expr let rec generate_verification_conditions_scopes (decl_ctx : decl_ctx) - (scopes : 'm expr scopes) + (scopes : 'm expr code_item_list) (s : ScopeName.t option) : verification_condition list = - match scopes with - | Nil -> [] - | ScopeDef scope_def -> - let is_selected_scope = - match s with - | Some s when ScopeName.compare s scope_def.scope_name = 0 -> true - | None -> true - | _ -> false - in - let vcs = - if is_selected_scope then - let _scope_input_var, scope_body_expr = - Bindlib.unbind scope_def.scope_body.scope_body_expr + Scope.fold_left + ~f:(fun vcs item var -> + match item with + | Topdef _ -> [] + | ScopeDef (name, body) -> + let is_selected_scope = + match s with + | Some s when ScopeName.equal s name -> true + | None -> true + | _ -> false in - let ctx = - { - current_scope_name = scope_def.scope_name; - decl = decl_ctx; - input_vars = []; - scope_variables_typs = - Var.Map.empty - (* We don't need to add the typ of the scope input var here - because it will never appear in an expression for which we - generate a verification conditions (the big struct is - destructured with a series of let bindings just after. )*); - } + let new_vcs = + if is_selected_scope then + let _scope_input_var, scope_body_expr = + Bindlib.unbind body.scope_body_expr + in + let ctx = + { + current_scope_name = name; + decl = decl_ctx; + input_vars = []; + scope_variables_typs = + Var.Map.empty + (* We don't need to add the typ of the scope input var here + because it will never appear in an expression for which we + generate a verification conditions (the big struct is + destructured with a series of let bindings just after. )*); + } + in + let _, vcs, asserts = + generate_verification_conditions_scope_body_expr ctx + scope_body_expr + in + let combined_assert = + conjunction_exprs asserts + (Typed + { + pos = Pos.no_pos; + ty = Marked.mark Pos.no_pos (TLit TBool); + }) + in + List.map (fun vc -> { vc with vc_asserts = combined_assert }) vcs + else [] in - let _, vcs, asserts = - generate_verification_conditions_scope_body_expr ctx scope_body_expr - in - let combined_assert = - conjunction_exprs asserts - (Typed - { pos = Pos.no_pos; ty = Marked.mark Pos.no_pos (TLit TBool) }) - in - List.map (fun vc -> { vc with vc_asserts = combined_assert }) vcs - else [] - in - let _scope_var, next = Bindlib.unbind scope_def.scope_next in - generate_verification_conditions_scopes decl_ctx next s @ vcs + new_vcs @ vcs) + ~init:[] scopes let generate_verification_conditions (p : 'm program) (s : ScopeName.t option) : verification_condition list = diff --git a/french_law/python/src/aides_logement.py b/french_law/python/src/aides_logement.py index 5d52e4ea..6bf82207 100644 --- a/french_law/python/src/aides_logement.py +++ b/french_law/python/src/aides_logement.py @@ -2711,15 +2711,15 @@ def contributions_sociales_aides_personnelle_logement(contributions_sociales_aid except EmptyError: temp__ = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/autres_sources.catala_fr", - start_line=127, start_column=13, - end_line=127, end_column=24, + start_line=157, start_column=13, + end_line=157, end_column=24, law_headings=["Article 14", "Chapitre II : Des contributions pour le remboursement de la dette sociale.", "Ordonnance n° 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale"])) if not (temp__): raise AssertionFailure(SourcePosition(filename="examples/aides_logement/autres_sources.catala_fr", - start_line=127, - start_column=13, end_line=127, + start_line=157, + start_column=13, end_line=157, end_column=24, law_headings=["Article 14", "Chapitre II : Des contributions pour le remboursement de la dette sociale.", @@ -3521,16 +3521,70 @@ def smic(smic_in:SmicIn): def temp_brut_horaire_1(_:Unit): return False def temp_brut_horaire_2(_:Unit): - if ((date_courante_2 >= date_of_numbers(2022,5,1)) and + if ((date_courante_2 >= date_of_numbers(2023,1,1)) and + ((date_courante_2 <= date_of_numbers(2023,12,31)) and + (residence == Collectivite(Collectivite_Code.Mayotte, + Unit())))): + return money_of_cents_string("851") + else: + raise EmptyError + def temp_brut_horaire_3(_:Unit): + if ((date_courante_2 >= date_of_numbers(2023,1,1)) and + ((date_courante_2 <= date_of_numbers(2023,12,31)) and + ((residence == Collectivite(Collectivite_Code.Metropole, + Unit())) or ((residence == + Collectivite(Collectivite_Code.Guadeloupe, Unit())) or + ((residence == Collectivite(Collectivite_Code.Guyane, + Unit())) or ((residence == + Collectivite(Collectivite_Code.Martinique, Unit())) or + ((residence == Collectivite(Collectivite_Code.LaReunion, + Unit())) or ((residence == + Collectivite(Collectivite_Code.SaintBarthelemy, Unit())) or + ((residence == Collectivite(Collectivite_Code.SaintMartin, + Unit())) or (residence == + Collectivite(Collectivite_Code.SaintPierreEtMiquelon, + Unit()))))))))))): + return money_of_cents_string("1127") + else: + raise EmptyError + def temp_brut_horaire_4(_:Unit): + if ((date_courante_2 >= date_of_numbers(2022,8,1)) and ((date_courante_2 <= date_of_numbers(2022,12,31)) and (residence == Collectivite(Collectivite_Code.Mayotte, Unit())))): + return money_of_cents_string("835") + else: + raise EmptyError + def temp_brut_horaire_5(_:Unit): + if ((date_courante_2 >= date_of_numbers(2022,8,1)) and + ((date_courante_2 <= date_of_numbers(2022,12,31)) and + ((residence == Collectivite(Collectivite_Code.Metropole, + Unit())) or ((residence == + Collectivite(Collectivite_Code.Guadeloupe, Unit())) or + ((residence == Collectivite(Collectivite_Code.Guyane, + Unit())) or ((residence == + Collectivite(Collectivite_Code.Martinique, Unit())) or + ((residence == Collectivite(Collectivite_Code.LaReunion, + Unit())) or ((residence == + Collectivite(Collectivite_Code.SaintBarthelemy, Unit())) or + ((residence == Collectivite(Collectivite_Code.SaintMartin, + Unit())) or (residence == + Collectivite(Collectivite_Code.SaintPierreEtMiquelon, + Unit()))))))))))): + return money_of_cents_string("1107") + else: + raise EmptyError + def temp_brut_horaire_6(_:Unit): + if ((date_courante_2 >= date_of_numbers(2022,5,1)) and + ((date_courante_2 <= date_of_numbers(2022,7,31)) and + (residence == Collectivite(Collectivite_Code.Mayotte, + Unit())))): return money_of_cents_string("819") else: raise EmptyError - def temp_brut_horaire_3(_:Unit): + def temp_brut_horaire_7(_:Unit): if ((date_courante_2 >= date_of_numbers(2022,5,1)) and - ((date_courante_2 <= date_of_numbers(2022,12,31)) and + ((date_courante_2 <= date_of_numbers(2022,7,31)) and ((residence == Collectivite(Collectivite_Code.Metropole, Unit())) or ((residence == Collectivite(Collectivite_Code.Guadeloupe, Unit())) or @@ -3547,7 +3601,7 @@ def smic(smic_in:SmicIn): return money_of_cents_string("1085") else: raise EmptyError - def temp_brut_horaire_4(_:Unit): + def temp_brut_horaire_8(_:Unit): if ((date_courante_2 >= date_of_numbers(2022,1,1)) and ((date_courante_2 <= date_of_numbers(2022,4,30)) and (residence == Collectivite(Collectivite_Code.Mayotte, @@ -3555,7 +3609,7 @@ def smic(smic_in:SmicIn): return money_of_cents_string("798") else: raise EmptyError - def temp_brut_horaire_5(_:Unit): + def temp_brut_horaire_9(_:Unit): if ((date_courante_2 >= date_of_numbers(2022,1,1)) and ((date_courante_2 <= date_of_numbers(2022,4,30)) and ((residence == Collectivite(Collectivite_Code.Metropole, @@ -3574,7 +3628,7 @@ def smic(smic_in:SmicIn): return money_of_cents_string("1057") else: raise EmptyError - def temp_brut_horaire_6(_:Unit): + def temp_brut_horaire_10(_:Unit): if ((date_courante_2 >= date_of_numbers(2021,1,1)) and ((date_courante_2 <= date_of_numbers(2021,12,31)) and (residence == Collectivite(Collectivite_Code.Mayotte, @@ -3582,7 +3636,7 @@ def smic(smic_in:SmicIn): return money_of_cents_string("774") else: raise EmptyError - def temp_brut_horaire_7(_:Unit): + def temp_brut_horaire_11(_:Unit): if ((date_courante_2 >= date_of_numbers(2021,1,1)) and ((date_courante_2 <= date_of_numbers(2021,12,31)) and ((residence == Collectivite(Collectivite_Code.Metropole, @@ -3601,7 +3655,7 @@ def smic(smic_in:SmicIn): return money_of_cents_string("1025") else: raise EmptyError - def temp_brut_horaire_8(_:Unit): + def temp_brut_horaire_12(_:Unit): if ((date_courante_2 >= date_of_numbers(2020,1,1)) and ((date_courante_2 <= date_of_numbers(2020,12,31)) and (residence == Collectivite(Collectivite_Code.Mayotte, @@ -3609,7 +3663,7 @@ def smic(smic_in:SmicIn): return money_of_cents_string("766") else: raise EmptyError - def temp_brut_horaire_9(_:Unit): + def temp_brut_horaire_13(_:Unit): if ((date_courante_2 >= date_of_numbers(2020,1,1)) and ((date_courante_2 <= date_of_numbers(2020,12,31)) and ((residence == Collectivite(Collectivite_Code.Metropole, @@ -3628,7 +3682,7 @@ def smic(smic_in:SmicIn): return money_of_cents_string("1015") else: raise EmptyError - def temp_brut_horaire_10(_:Unit): + def temp_brut_horaire_14(_:Unit): if ((date_courante_2 >= date_of_numbers(2019,1,1)) and ((date_courante_2 <= date_of_numbers(2019,12,31)) and (residence == Collectivite(Collectivite_Code.Mayotte, @@ -3636,7 +3690,7 @@ def smic(smic_in:SmicIn): return money_of_cents_string("757") else: raise EmptyError - def temp_brut_horaire_11(_:Unit): + def temp_brut_horaire_15(_:Unit): if ((date_courante_2 >= date_of_numbers(2019,1,1)) and ((date_courante_2 <= date_of_numbers(2019,12,31)) and ((residence == Collectivite(Collectivite_Code.Metropole, @@ -3655,11 +3709,15 @@ def smic(smic_in:SmicIn): return money_of_cents_string("1003") else: raise EmptyError - temp_brut_horaire_12 = handle_default(SourcePosition(filename="examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr", + temp_brut_horaire_16 = handle_default(SourcePosition(filename="examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr", start_line=11, start_column=12, end_line=11, end_column=24, law_headings=["Prologue", - "Montant du salaire minimum de croissance"]), [temp_brut_horaire_11, + "Montant du salaire minimum de croissance"]), [temp_brut_horaire_15, + temp_brut_horaire_14, + temp_brut_horaire_13, + temp_brut_horaire_12, + temp_brut_horaire_11, temp_brut_horaire_10, temp_brut_horaire_9, temp_brut_horaire_8, @@ -3672,13 +3730,13 @@ def smic(smic_in:SmicIn): temp_brut_horaire_1, temp_brut_horaire) except EmptyError: - temp_brut_horaire_12 = dead_value + temp_brut_horaire_16 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr", start_line=11, start_column=12, end_line=11, end_column=24, law_headings=["Prologue", "Montant du salaire minimum de croissance"])) - brut_horaire = temp_brut_horaire_12 + brut_horaire = temp_brut_horaire_16 return Smic(brut_horaire = brut_horaire) def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logement_locatif_in:CalculAidePersonnaliseeLogementLocatifIn): @@ -3973,8 +4031,9 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen else: raise EmptyError def temp_abattement_forfaitaire_d823_17_4(_:Unit): - if (date_courante_3 >= - date_of_numbers(2022,7,1)): + if ((date_courante_3 >= date_of_numbers(2022,7,1)) and + (date_courante_3 <= + date_of_numbers(2022,12,31))): if (nombre_personnes_a_charge_2 == integer_of_string("0")): match_arg_32 = situation_familiale_calcul_apl_2 @@ -4015,20 +4074,64 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen integer_of_string("6"))))) else: raise EmptyError - temp_abattement_forfaitaire_d823_17_5 = handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", + def temp_abattement_forfaitaire_d823_17_5(_:Unit): + if (date_courante_3 >= + date_of_numbers(2023,1,1)): + if (nombre_personnes_a_charge_2 == + integer_of_string("0")): + match_arg_33 = situation_familiale_calcul_apl_2 + if match_arg_33.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_33.value + return money_of_cents_string("494900") + elif match_arg_33.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_33.value + return money_of_cents_string("709000") + else: + if (nombre_personnes_a_charge_2 == + integer_of_string("1")): + return money_of_cents_string("845600") + else: + if (nombre_personnes_a_charge_2 == + integer_of_string("2")): + return money_of_cents_string("864600") + else: + if (nombre_personnes_a_charge_2 == + integer_of_string("3")): + return money_of_cents_string("897700") + else: + if (nombre_personnes_a_charge_2 == + integer_of_string("4")): + return money_of_cents_string("931100") + else: + if (nombre_personnes_a_charge_2 == + integer_of_string("5")): + return money_of_cents_string("964200") + else: + if (nombre_personnes_a_charge_2 == + integer_of_string("6")): + return money_of_cents_string("997500") + else: + return (money_of_cents_string("997500") + + (money_of_cents_string("32800") * + decimal_of_integer((nombre_personnes_a_charge_2 - + integer_of_string("6"))))) + else: + raise EmptyError + temp_abattement_forfaitaire_d823_17_6 = handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", start_line=558, start_column=11, end_line=558, end_column=41, law_headings=["Secteur locatif", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", - "Prologue : aides au logement"]), [temp_abattement_forfaitaire_d823_17_4, + "Prologue : aides au logement"]), [temp_abattement_forfaitaire_d823_17_5, + temp_abattement_forfaitaire_d823_17_4, temp_abattement_forfaitaire_d823_17_3, temp_abattement_forfaitaire_d823_17_2], temp_abattement_forfaitaire_d823_17_1, temp_abattement_forfaitaire_d823_17) except EmptyError: - temp_abattement_forfaitaire_d823_17_5 = dead_value + temp_abattement_forfaitaire_d823_17_6 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", start_line=558, start_column=11, end_line=558, end_column=41, @@ -4036,7 +4139,7 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) - abattement_forfaitaire_d823_17 = temp_abattement_forfaitaire_d823_17_5 + abattement_forfaitaire_d823_17 = temp_abattement_forfaitaire_d823_17_6 try: def temp_loyer_reference(_:Unit): raise EmptyError @@ -4048,12 +4151,12 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen date_of_numbers(2021,10,1))): if (nombre_personnes_a_charge_2 == integer_of_string("0")): - match_arg_33 = situation_familiale_calcul_apl_2 - if match_arg_33.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_33.value + match_arg_34 = situation_familiale_calcul_apl_2 + if match_arg_34.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_34.value return money_of_cents_string("25869") - elif match_arg_33.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_33.value + elif match_arg_34.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_34.value return money_of_cents_string("31664") else: return (money_of_cents_string("35630") + @@ -4069,12 +4172,12 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen date_of_numbers(2022,7,1))): if (nombre_personnes_a_charge_2 == integer_of_string("0")): - match_arg_34 = situation_familiale_calcul_apl_2 - if match_arg_34.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_34.value + match_arg_35 = situation_familiale_calcul_apl_2 + if match_arg_35.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_35.value return money_of_cents_string("25978") - elif match_arg_34.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_34.value + elif match_arg_35.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_35.value return money_of_cents_string("31797") else: return (money_of_cents_string("35780") + @@ -4088,12 +4191,12 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen date_of_numbers(2022,7,1)): if (nombre_personnes_a_charge_2 == integer_of_string("0")): - match_arg_35 = situation_familiale_calcul_apl_2 - if match_arg_35.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_35.value + match_arg_36 = situation_familiale_calcul_apl_2 + if match_arg_36.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_36.value return money_of_cents_string("25978") - elif match_arg_35.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_35.value + elif match_arg_36.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_36.value return money_of_cents_string("31797") else: return (money_of_cents_string("35780") + @@ -4124,15 +4227,15 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen "Prologue : aides au logement"])) loyer_reference = temp_loyer_reference_4 try: - match_arg_36 = type_aide - if match_arg_36.code == TypeAidesPersonnelleLogement_Code.AidePersonnaliseeLogement: - _ = match_arg_36.value + match_arg_37 = type_aide + if match_arg_37.code == TypeAidesPersonnelleLogement_Code.AidePersonnaliseeLogement: + _ = match_arg_37.value temp_montant_minimal_aide_d823_16 = money_of_cents_string("0") - elif match_arg_36.code == TypeAidesPersonnelleLogement_Code.AllocationLogementFamiliale: - _ = match_arg_36.value + elif match_arg_37.code == TypeAidesPersonnelleLogement_Code.AllocationLogementFamiliale: + _ = match_arg_37.value temp_montant_minimal_aide_d823_16 = money_of_cents_string("1000") - elif match_arg_36.code == TypeAidesPersonnelleLogement_Code.AllocationLogementSociale: - _ = match_arg_36.value + elif match_arg_37.code == TypeAidesPersonnelleLogement_Code.AllocationLogementSociale: + _ = match_arg_37.value temp_montant_minimal_aide_d823_16 = money_of_cents_string("1000") except EmptyError: temp_montant_minimal_aide_d823_16 = dead_value @@ -4155,21 +4258,21 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen (date_courante_3 >= date_of_numbers(2020,10,1))) and (nombre_personnes_a_charge_2 >= integer_of_string("1"))): - match_arg_37 = zone - if match_arg_37.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_37.value + match_arg_38 = zone + if match_arg_38.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_38.value return (money_of_cents_string("40460") + (money_of_cents_string("5870") * decimal_of_integer((nombre_personnes_a_charge_2 - integer_of_string("1"))))) - elif match_arg_37.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_37.value + elif match_arg_38.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_38.value return (money_of_cents_string("35630") + (money_of_cents_string("5186") * decimal_of_integer((nombre_personnes_a_charge_2 - integer_of_string("1"))))) - elif match_arg_37.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_37.value + elif match_arg_38.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_38.value return (money_of_cents_string("32956") + (money_of_cents_string("4723") * decimal_of_integer((nombre_personnes_a_charge_2 - @@ -4177,52 +4280,52 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen else: raise EmptyError def temp_plafond_loyer_d823_16_2_4(_:Unit): - match_arg_38 = situation_familiale_calcul_apl_2 - if match_arg_38.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_38.value + match_arg_39 = situation_familiale_calcul_apl_2 + if match_arg_39.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_39.value temp_plafond_loyer_d823_16_2_5 = False - elif match_arg_38.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_38.value + elif match_arg_39.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_39.value temp_plafond_loyer_d823_16_2_5 = True if (((date_courante_3 < date_of_numbers(2021,10,1)) and (date_courante_3 >= date_of_numbers(2020,10,1))) and (temp_plafond_loyer_d823_16_2_5 and (nombre_personnes_a_charge_2 == integer_of_string("0")))): - match_arg_39 = zone - if match_arg_39.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_39.value + match_arg_40 = zone + if match_arg_40.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_40.value return money_of_cents_string("35799") - elif match_arg_39.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_39.value + elif match_arg_40.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_40.value return money_of_cents_string("31664") - elif match_arg_39.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_39.value + elif match_arg_40.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_40.value return money_of_cents_string("29392") else: raise EmptyError def temp_plafond_loyer_d823_16_2_6(_:Unit): - match_arg_40 = situation_familiale_calcul_apl_2 - if match_arg_40.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_40.value + match_arg_41 = situation_familiale_calcul_apl_2 + if match_arg_41.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_41.value temp_plafond_loyer_d823_16_2_7 = True - elif match_arg_40.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_40.value + elif match_arg_41.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_41.value temp_plafond_loyer_d823_16_2_7 = False if (((date_courante_3 < date_of_numbers(2021,10,1)) and (date_courante_3 >= date_of_numbers(2020,10,1))) and (temp_plafond_loyer_d823_16_2_7 and (nombre_personnes_a_charge_2 == integer_of_string("0")))): - match_arg_41 = zone - if match_arg_41.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_41.value + match_arg_42 = zone + if match_arg_42.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_42.value return money_of_cents_string("29682") - elif match_arg_41.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_41.value + elif match_arg_42.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_42.value return money_of_cents_string("25859") - elif match_arg_41.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_41.value + elif match_arg_42.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_42.value return money_of_cents_string("24246") else: raise EmptyError @@ -4231,21 +4334,21 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen (date_courante_3 < date_of_numbers(2022,7,1))) and (nombre_personnes_a_charge_2 >= integer_of_string("1"))): - match_arg_42 = zone - if match_arg_42.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_42.value + match_arg_43 = zone + if match_arg_43.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_43.value return (money_of_cents_string("40630") + (money_of_cents_string("5895") * decimal_of_integer((nombre_personnes_a_charge_2 - integer_of_string("1"))))) - elif match_arg_42.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_42.value + elif match_arg_43.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_43.value return (money_of_cents_string("35780") + (money_of_cents_string("5208") * decimal_of_integer((nombre_personnes_a_charge_2 - integer_of_string("1"))))) - elif match_arg_42.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_42.value + elif match_arg_43.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_43.value return (money_of_cents_string("33094") + (money_of_cents_string("4743") * decimal_of_integer((nombre_personnes_a_charge_2 - @@ -4253,52 +4356,52 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen else: raise EmptyError def temp_plafond_loyer_d823_16_2_9(_:Unit): - match_arg_43 = situation_familiale_calcul_apl_2 - if match_arg_43.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_43.value + match_arg_44 = situation_familiale_calcul_apl_2 + if match_arg_44.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_44.value temp_plafond_loyer_d823_16_2_10 = False - elif match_arg_43.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_43.value + elif match_arg_44.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_44.value temp_plafond_loyer_d823_16_2_10 = True if (((date_courante_3 >= date_of_numbers(2021,10,1)) and (date_courante_3 < date_of_numbers(2022,7,1))) and (temp_plafond_loyer_d823_16_2_10 and (nombre_personnes_a_charge_2 == integer_of_string("0")))): - match_arg_44 = zone - if match_arg_44.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_44.value + match_arg_45 = zone + if match_arg_45.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_45.value return money_of_cents_string("35949") - elif match_arg_44.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_44.value + elif match_arg_45.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_45.value return money_of_cents_string("31797") - elif match_arg_44.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_44.value + elif match_arg_45.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_45.value return money_of_cents_string("29515") else: raise EmptyError def temp_plafond_loyer_d823_16_2_11(_:Unit): - match_arg_45 = situation_familiale_calcul_apl_2 - if match_arg_45.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_45.value + match_arg_46 = situation_familiale_calcul_apl_2 + if match_arg_46.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_46.value temp_plafond_loyer_d823_16_2_12 = True - elif match_arg_45.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_45.value + elif match_arg_46.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_46.value temp_plafond_loyer_d823_16_2_12 = False if (((date_courante_3 >= date_of_numbers(2021,10,1)) and (date_courante_3 < date_of_numbers(2022,7,1))) and (temp_plafond_loyer_d823_16_2_12 and (nombre_personnes_a_charge_2 == integer_of_string("0")))): - match_arg_46 = zone - if match_arg_46.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_46.value + match_arg_47 = zone + if match_arg_47.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_47.value return money_of_cents_string("29807") - elif match_arg_46.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_46.value + elif match_arg_47.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_47.value return money_of_cents_string("25978") - elif match_arg_46.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_46.value + elif match_arg_47.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_47.value return money_of_cents_string("24348") else: raise EmptyError @@ -4306,21 +4409,21 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen if ((date_courante_3 >= date_of_numbers(2022,7,1)) and (nombre_personnes_a_charge_2 >= integer_of_string("1"))): - match_arg_47 = zone - if match_arg_47.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_47.value + match_arg_48 = zone + if match_arg_48.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_48.value return (money_of_cents_string("42052") + (money_of_cents_string("6101") * decimal_of_integer((nombre_personnes_a_charge_2 - integer_of_string("1"))))) - elif match_arg_47.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_47.value + elif match_arg_48.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_48.value return (money_of_cents_string("37032") + (money_of_cents_string("5390") * decimal_of_integer((nombre_personnes_a_charge_2 - integer_of_string("1"))))) - elif match_arg_47.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_47.value + elif match_arg_48.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_48.value return (money_of_cents_string("34252") + (money_of_cents_string("4909") * decimal_of_integer((nombre_personnes_a_charge_2 - @@ -4328,50 +4431,50 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen else: raise EmptyError def temp_plafond_loyer_d823_16_2_14(_:Unit): - match_arg_48 = situation_familiale_calcul_apl_2 - if match_arg_48.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_48.value + match_arg_49 = situation_familiale_calcul_apl_2 + if match_arg_49.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_49.value temp_plafond_loyer_d823_16_2_15 = False - elif match_arg_48.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_48.value + elif match_arg_49.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_49.value temp_plafond_loyer_d823_16_2_15 = True if ((date_courante_3 >= date_of_numbers(2022,7,1)) and (temp_plafond_loyer_d823_16_2_15 and (nombre_personnes_a_charge_2 == integer_of_string("0")))): - match_arg_49 = zone - if match_arg_49.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_49.value + match_arg_50 = zone + if match_arg_50.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_50.value return money_of_cents_string("37207") - elif match_arg_49.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_49.value + elif match_arg_50.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_50.value return money_of_cents_string("32910") - elif match_arg_49.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_49.value + elif match_arg_50.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_50.value return money_of_cents_string("30548") else: raise EmptyError def temp_plafond_loyer_d823_16_2_16(_:Unit): - match_arg_50 = situation_familiale_calcul_apl_2 - if match_arg_50.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_50.value + match_arg_51 = situation_familiale_calcul_apl_2 + if match_arg_51.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_51.value temp_plafond_loyer_d823_16_2_17 = True - elif match_arg_50.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_50.value + elif match_arg_51.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_51.value temp_plafond_loyer_d823_16_2_17 = False if ((date_courante_3 >= date_of_numbers(2022,7,1)) and (temp_plafond_loyer_d823_16_2_17 and (nombre_personnes_a_charge_2 == integer_of_string("0")))): - match_arg_51 = zone - if match_arg_51.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_51.value + match_arg_52 = zone + if match_arg_52.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_52.value return money_of_cents_string("30850") - elif match_arg_51.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_51.value + elif match_arg_52.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_52.value return money_of_cents_string("26887") - elif match_arg_51.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_51.value + elif match_arg_52.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_52.value return money_of_cents_string("25200") else: raise EmptyError @@ -4405,15 +4508,15 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen ((date_courante_3 >= date_of_numbers(2020,10,1)) and logement_est_chambre)) and agees_ou_handicap_adultes_hebergees_onereux_particuliers): - match_arg_52 = zone - if match_arg_52.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_52.value + match_arg_53 = zone + if match_arg_53.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_53.value return money_of_cents_string("22262") - elif match_arg_52.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_52.value + elif match_arg_53.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_53.value return money_of_cents_string("19402") - elif match_arg_52.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_52.value + elif match_arg_53.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_53.value return money_of_cents_string("18185") else: raise EmptyError @@ -4422,15 +4525,15 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen ((date_courante_3 < date_of_numbers(2022,7,1)) and logement_est_chambre)) and agees_ou_handicap_adultes_hebergees_onereux_particuliers): - match_arg_53 = zone - if match_arg_53.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_53.value + match_arg_54 = zone + if match_arg_54.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_54.value return money_of_cents_string("22355") - elif match_arg_53.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_53.value + elif match_arg_54.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_54.value return money_of_cents_string("19484") - elif match_arg_53.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_53.value + elif match_arg_54.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_54.value return money_of_cents_string("18261") else: raise EmptyError @@ -4438,15 +4541,15 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen if (((date_courante_3 >= date_of_numbers(2022,7,1)) and logement_est_chambre) and agees_ou_handicap_adultes_hebergees_onereux_particuliers): - match_arg_54 = zone - if match_arg_54.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_54.value + match_arg_55 = zone + if match_arg_55.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_55.value return money_of_cents_string("23138") - elif match_arg_54.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_54.value + elif match_arg_55.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_55.value return money_of_cents_string("20165") - elif match_arg_54.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_54.value + elif match_arg_55.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_55.value return money_of_cents_string("18900") else: raise EmptyError @@ -4470,15 +4573,15 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen if ((date_courante_3 < date_of_numbers(2021,10,1)) and ((date_courante_3 >= date_of_numbers(2020,10,1)) and logement_est_chambre)): - match_arg_55 = zone - if match_arg_55.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_55.value + match_arg_56 = zone + if match_arg_56.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_56.value return money_of_cents_string("26714") - elif match_arg_55.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_55.value + elif match_arg_56.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_56.value return money_of_cents_string("23282") - elif match_arg_55.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_55.value + elif match_arg_56.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_56.value return money_of_cents_string("21821") else: raise EmptyError @@ -4486,30 +4589,30 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen if ((date_courante_3 >= date_of_numbers(2021,10,1)) and ((date_courante_3 < date_of_numbers(2022,7,1)) and logement_est_chambre)): - match_arg_56 = zone - if match_arg_56.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_56.value + match_arg_57 = zone + if match_arg_57.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_57.value return money_of_cents_string("26826") - elif match_arg_56.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_56.value + elif match_arg_57.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_57.value return money_of_cents_string("23380") - elif match_arg_56.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_56.value + elif match_arg_57.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_57.value return money_of_cents_string("21913") else: raise EmptyError def temp_plafond_loyer_d823_16_2_29(_:Unit): if ((date_courante_3 >= date_of_numbers(2022,7,1)) and logement_est_chambre): - match_arg_57 = zone - if match_arg_57.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_57.value + match_arg_58 = zone + if match_arg_58.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_58.value return money_of_cents_string("27765") - elif match_arg_57.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_57.value + elif match_arg_58.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_58.value return money_of_cents_string("24198") - elif match_arg_57.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_57.value + elif match_arg_58.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_58.value return money_of_cents_string("22680") else: raise EmptyError @@ -4534,21 +4637,21 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen ((date_courante_3 >= date_of_numbers(2020,10,1)) and colocation)) and (nombre_personnes_a_charge_2 >= integer_of_string("1"))): - match_arg_58 = zone - if match_arg_58.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_58.value + match_arg_59 = zone + if match_arg_59.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_59.value return (money_of_cents_string("30345") + (money_of_cents_string("4403") * decimal_of_integer((nombre_personnes_a_charge_2 - integer_of_string("1"))))) - elif match_arg_58.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_58.value + elif match_arg_59.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_59.value return (money_of_cents_string("26723") + (money_of_cents_string("3890") * decimal_of_integer((nombre_personnes_a_charge_2 - integer_of_string("1"))))) - elif match_arg_58.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_58.value + elif match_arg_59.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_59.value return (money_of_cents_string("24717") + (money_of_cents_string("3542") * decimal_of_integer((nombre_personnes_a_charge_2 - @@ -4556,52 +4659,52 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen else: raise EmptyError def temp_plafond_loyer_d823_16_2_34(_:Unit): - match_arg_59 = situation_familiale_calcul_apl_2 - if match_arg_59.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_59.value + match_arg_60 = situation_familiale_calcul_apl_2 + if match_arg_60.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_60.value temp_plafond_loyer_d823_16_2_35 = False - elif match_arg_59.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_59.value + elif match_arg_60.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_60.value temp_plafond_loyer_d823_16_2_35 = True if (((date_courante_3 < date_of_numbers(2021,10,1)) and ((date_courante_3 >= date_of_numbers(2020,10,1)) and colocation)) and (temp_plafond_loyer_d823_16_2_35 and (nombre_personnes_a_charge_2 == integer_of_string("0")))): - match_arg_60 = zone - if match_arg_60.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_60.value + match_arg_61 = zone + if match_arg_61.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_61.value return money_of_cents_string("26849") - elif match_arg_60.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_60.value + elif match_arg_61.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_61.value return money_of_cents_string("23748") - elif match_arg_60.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_60.value + elif match_arg_61.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_61.value return money_of_cents_string("22044") else: raise EmptyError def temp_plafond_loyer_d823_16_2_36(_:Unit): - match_arg_61 = situation_familiale_calcul_apl_2 - if match_arg_61.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_61.value + match_arg_62 = situation_familiale_calcul_apl_2 + if match_arg_62.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_62.value temp_plafond_loyer_d823_16_2_37 = True - elif match_arg_61.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_61.value + elif match_arg_62.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_62.value temp_plafond_loyer_d823_16_2_37 = False if (((date_courante_3 < date_of_numbers(2021,10,1)) and ((date_courante_3 >= date_of_numbers(2020,10,1)) and colocation)) and (temp_plafond_loyer_d823_16_2_37 and (nombre_personnes_a_charge_2 == integer_of_string("0")))): - match_arg_62 = zone - if match_arg_62.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_62.value + match_arg_63 = zone + if match_arg_63.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_63.value return money_of_cents_string("22262") - elif match_arg_62.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_62.value + elif match_arg_63.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_63.value return money_of_cents_string("19402") - elif match_arg_62.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_62.value + elif match_arg_63.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_63.value return money_of_cents_string("18185") else: raise EmptyError @@ -4610,21 +4713,21 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen ((date_courante_3 < date_of_numbers(2022,7,1)) and colocation)) and (nombre_personnes_a_charge_2 >= integer_of_string("1"))): - match_arg_63 = zone - if match_arg_63.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_63.value + match_arg_64 = zone + if match_arg_64.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_64.value return (money_of_cents_string("30473") + (money_of_cents_string("4421") * decimal_of_integer((nombre_personnes_a_charge_2 - integer_of_string("1"))))) - elif match_arg_63.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_63.value + elif match_arg_64.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_64.value return (money_of_cents_string("26835") + (money_of_cents_string("3906") * decimal_of_integer((nombre_personnes_a_charge_2 - integer_of_string("1"))))) - elif match_arg_63.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_63.value + elif match_arg_64.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_64.value return (money_of_cents_string("24821") + (money_of_cents_string("3557") * decimal_of_integer((nombre_personnes_a_charge_2 - @@ -4632,52 +4735,52 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen else: raise EmptyError def temp_plafond_loyer_d823_16_2_39(_:Unit): - match_arg_64 = situation_familiale_calcul_apl_2 - if match_arg_64.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_64.value + match_arg_65 = situation_familiale_calcul_apl_2 + if match_arg_65.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_65.value temp_plafond_loyer_d823_16_2_40 = False - elif match_arg_64.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_64.value + elif match_arg_65.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_65.value temp_plafond_loyer_d823_16_2_40 = True if (((date_courante_3 >= date_of_numbers(2021,10,1)) and ((date_courante_3 < date_of_numbers(2022,7,1)) and colocation)) and (temp_plafond_loyer_d823_16_2_40 and (nombre_personnes_a_charge_2 == integer_of_string("0")))): - match_arg_65 = zone - if match_arg_65.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_65.value + match_arg_66 = zone + if match_arg_66.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_66.value return money_of_cents_string("26962") - elif match_arg_65.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_65.value + elif match_arg_66.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_66.value return money_of_cents_string("23848") - elif match_arg_65.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_65.value + elif match_arg_66.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_66.value return money_of_cents_string("22136") else: raise EmptyError def temp_plafond_loyer_d823_16_2_41(_:Unit): - match_arg_66 = situation_familiale_calcul_apl_2 - if match_arg_66.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_66.value + match_arg_67 = situation_familiale_calcul_apl_2 + if match_arg_67.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_67.value temp_plafond_loyer_d823_16_2_42 = True - elif match_arg_66.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_66.value + elif match_arg_67.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_67.value temp_plafond_loyer_d823_16_2_42 = False if (((date_courante_3 >= date_of_numbers(2021,10,1)) and ((date_courante_3 < date_of_numbers(2022,7,1)) and colocation)) and (temp_plafond_loyer_d823_16_2_42 and (nombre_personnes_a_charge_2 == integer_of_string("0")))): - match_arg_67 = zone - if match_arg_67.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_67.value + match_arg_68 = zone + if match_arg_68.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_68.value return money_of_cents_string("22355") - elif match_arg_67.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_67.value + elif match_arg_68.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_68.value return money_of_cents_string("19484") - elif match_arg_67.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_67.value + elif match_arg_68.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_68.value return money_of_cents_string("18261") else: raise EmptyError @@ -4685,21 +4788,21 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen if (((date_courante_3 >= date_of_numbers(2022,7,1)) and colocation) and (nombre_personnes_a_charge_2 >= integer_of_string("1"))): - match_arg_68 = zone - if match_arg_68.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_68.value + match_arg_69 = zone + if match_arg_69.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_69.value return (money_of_cents_string("31539") + (money_of_cents_string("4576") * decimal_of_integer((nombre_personnes_a_charge_2 - integer_of_string("1"))))) - elif match_arg_68.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_68.value + elif match_arg_69.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_69.value return (money_of_cents_string("27774") + (money_of_cents_string("4043") * decimal_of_integer((nombre_personnes_a_charge_2 - integer_of_string("1"))))) - elif match_arg_68.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_68.value + elif match_arg_69.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_69.value return (money_of_cents_string("25689") + (money_of_cents_string("3682") * decimal_of_integer((nombre_personnes_a_charge_2 - @@ -4707,50 +4810,50 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen else: raise EmptyError def temp_plafond_loyer_d823_16_2_44(_:Unit): - match_arg_69 = situation_familiale_calcul_apl_2 - if match_arg_69.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_69.value + match_arg_70 = situation_familiale_calcul_apl_2 + if match_arg_70.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_70.value temp_plafond_loyer_d823_16_2_45 = False - elif match_arg_69.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_69.value + elif match_arg_70.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_70.value temp_plafond_loyer_d823_16_2_45 = True if (((date_courante_3 >= date_of_numbers(2022,7,1)) and colocation) and (temp_plafond_loyer_d823_16_2_45 and (nombre_personnes_a_charge_2 == integer_of_string("0")))): - match_arg_70 = zone - if match_arg_70.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_70.value + match_arg_71 = zone + if match_arg_71.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_71.value return money_of_cents_string("27905") - elif match_arg_70.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_70.value + elif match_arg_71.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_71.value return money_of_cents_string("24683") - elif match_arg_70.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_70.value + elif match_arg_71.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_71.value return money_of_cents_string("22911") else: raise EmptyError def temp_plafond_loyer_d823_16_2_46(_:Unit): - match_arg_71 = situation_familiale_calcul_apl_2 - if match_arg_71.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_71.value + match_arg_72 = situation_familiale_calcul_apl_2 + if match_arg_72.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_72.value temp_plafond_loyer_d823_16_2_47 = True - elif match_arg_71.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_71.value + elif match_arg_72.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_72.value temp_plafond_loyer_d823_16_2_47 = False if (((date_courante_3 >= date_of_numbers(2022,7,1)) and colocation) and (temp_plafond_loyer_d823_16_2_47 and (nombre_personnes_a_charge_2 == integer_of_string("0")))): - match_arg_72 = zone - if match_arg_72.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_72.value + match_arg_73 = zone + if match_arg_73.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_73.value return money_of_cents_string("23138") - elif match_arg_72.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_72.value + elif match_arg_73.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_73.value return money_of_cents_string("20165") - elif match_arg_72.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_72.value + elif match_arg_73.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_73.value return money_of_cents_string("18900") else: raise EmptyError @@ -4802,12 +4905,12 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen if ((date_courante_3 < date_of_numbers(2021,10,1)) and ((date_courante_3 >= date_of_numbers(2020,10,1)) and colocation)): - match_arg_73 = situation_familiale_calcul_apl_2 - if match_arg_73.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_73.value + match_arg_74 = situation_familiale_calcul_apl_2 + if match_arg_74.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_74.value temp_montant_forfaitaire_charges_d823_16_3 = money_of_cents_string("2699") - elif match_arg_73.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_73.value + elif match_arg_74.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_74.value temp_montant_forfaitaire_charges_d823_16_3 = money_of_cents_string("5399") return (temp_montant_forfaitaire_charges_d823_16_3 + (money_of_cents_string("1224") * @@ -4818,12 +4921,12 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen if ((date_courante_3 >= date_of_numbers(2021,10,1)) and ((date_courante_3 < date_of_numbers(2022,7,1)) and colocation)): - match_arg_74 = situation_familiale_calcul_apl_2 - if match_arg_74.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_74.value + match_arg_75 = situation_familiale_calcul_apl_2 + if match_arg_75.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_75.value temp_montant_forfaitaire_charges_d823_16_5 = money_of_cents_string("2710") - elif match_arg_74.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_74.value + elif match_arg_75.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_75.value temp_montant_forfaitaire_charges_d823_16_5 = money_of_cents_string("5422") return (temp_montant_forfaitaire_charges_d823_16_5 + (money_of_cents_string("1229") * @@ -4833,12 +4936,12 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen def temp_montant_forfaitaire_charges_d823_16_6(_:Unit): if ((date_courante_3 >= date_of_numbers(2022,7,1)) and colocation): - match_arg_75 = situation_familiale_calcul_apl_2 - if match_arg_75.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_75.value + match_arg_76 = situation_familiale_calcul_apl_2 + if match_arg_76.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_76.value temp_montant_forfaitaire_charges_d823_16_7 = money_of_cents_string("2805") - elif match_arg_75.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_75.value + elif match_arg_76.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_76.value temp_montant_forfaitaire_charges_d823_16_7 = money_of_cents_string("5612") return (temp_montant_forfaitaire_charges_d823_16_7 + (money_of_cents_string("1272") * @@ -4925,17 +5028,17 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen "Prologue : aides au logement"])) loyer_principal_avec_reduction_meuble = temp_loyer_principal_avec_reduction_meuble try: - match_arg_76 = zone - if match_arg_76.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_76.value + match_arg_77 = zone + if match_arg_77.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_77.value temp_plafond_suppression_d823_16 = (plafond_loyer_d823_16_2 * decimal_of_string("4.")) - elif match_arg_76.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_76.value + elif match_arg_77.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_77.value temp_plafond_suppression_d823_16 = (plafond_loyer_d823_16_2 * decimal_of_string("3.1")) - elif match_arg_76.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_76.value + elif match_arg_77.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_77.value temp_plafond_suppression_d823_16 = (plafond_loyer_d823_16_2 * decimal_of_string("3.1")) except EmptyError: @@ -4949,17 +5052,17 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen "Prologue : aides au logement"])) plafond_suppression_d823_16 = temp_plafond_suppression_d823_16 try: - match_arg_77 = zone - if match_arg_77.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_77.value + match_arg_78 = zone + if match_arg_78.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_78.value temp_plafond_degressivite_d823_16 = (plafond_loyer_d823_16_2 * decimal_of_string("3.4")) - elif match_arg_77.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_77.value + elif match_arg_78.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_78.value temp_plafond_degressivite_d823_16 = (plafond_loyer_d823_16_2 * decimal_of_string("2.5")) - elif match_arg_77.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_77.value + elif match_arg_78.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_78.value temp_plafond_degressivite_d823_16 = (plafond_loyer_d823_16_2 * decimal_of_string("2.5")) except EmptyError: @@ -5462,8 +5565,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen except EmptyError: temp___1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1846, - start_column=13, end_line=1846, + start_line=1858, + start_column=13, end_line=1858, end_column=74, law_headings=["Article D823-16", "Sous-section 2 : Calcul de l'aide en secteur locatif", @@ -5475,8 +5578,8 @@ def calcul_aide_personnalisee_logement_locatif(calcul_aide_personnalisee_logemen "Code de la construction et de l'habitation"])) if not (temp___1): raise AssertionFailure(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1846, - start_column=13, end_line=1846, + start_line=1858, + start_column=13, end_line=1858, end_column=74, law_headings=["Article D823-16", "Sous-section 2 : Calcul de l'aide en secteur locatif", @@ -5570,20 +5673,20 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ try: temp_condition_2_du_832_25 = condition_2_du_832_25_2(Unit()) except EmptyError: - match_arg_78 = type_logement_foyer - if match_arg_78.code == TypeLogementFoyer_Code.LogementPersonnesAgeesOuHandicapees: - _ = match_arg_78.value + match_arg_79 = type_logement_foyer + if match_arg_79.code == TypeLogementFoyer_Code.LogementPersonnesAgeesOuHandicapees: + _ = match_arg_79.value temp_condition_2_du_832_25 = False - elif match_arg_78.code == TypeLogementFoyer_Code.ResidenceSociale: - _ = match_arg_78.value + elif match_arg_79.code == TypeLogementFoyer_Code.ResidenceSociale: + _ = match_arg_79.value temp_condition_2_du_832_25 = (date_conventionnement >= date_of_numbers(1994,12,31)) - elif match_arg_78.code == TypeLogementFoyer_Code.FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995: - _ = match_arg_78.value + elif match_arg_79.code == TypeLogementFoyer_Code.FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995: + _ = match_arg_79.value temp_condition_2_du_832_25 = (date_conventionnement >= date_of_numbers(1990,9,30)) - elif match_arg_78.code == TypeLogementFoyer_Code.Autre: - _ = match_arg_78.value + elif match_arg_79.code == TypeLogementFoyer_Code.Autre: + _ = match_arg_79.value temp_condition_2_du_832_25 = False except EmptyError: temp_condition_2_du_832_25 = dead_value @@ -5618,17 +5721,17 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ if ((date_courante_4 < date_of_numbers(2021,10,1)) and (date_courante_4 >= date_of_numbers(2020,10,1))): - match_arg_79 = zone_1 - if match_arg_79.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_79.value + match_arg_80 = zone_1 + if match_arg_80.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_80.value if (nombre_personnes_a_charge_3 == integer_of_string("0")): - match_arg_80 = situation_familiale_calcul_apl_3 - if match_arg_80.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_80.value + match_arg_81 = situation_familiale_calcul_apl_3 + if match_arg_81.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_81.value return money_of_cents_string("44443") - elif match_arg_80.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_80.value + elif match_arg_81.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_81.value return money_of_cents_string("52101") else: if (nombre_personnes_a_charge_3 == @@ -5647,16 +5750,16 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ (money_of_cents_string("7089") * decimal_of_integer((nombre_personnes_a_charge_3 - integer_of_string("4"))))) - elif match_arg_79.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_79.value + elif match_arg_80.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_80.value if (nombre_personnes_a_charge_3 == integer_of_string("0")): - match_arg_81 = situation_familiale_calcul_apl_3 - if match_arg_81.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_81.value + match_arg_82 = situation_familiale_calcul_apl_3 + if match_arg_82.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_82.value return money_of_cents_string("40643") - elif match_arg_81.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_81.value + elif match_arg_82.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_82.value return money_of_cents_string("47433") else: if (nombre_personnes_a_charge_3 == @@ -5675,16 +5778,16 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ (money_of_cents_string("6407") * decimal_of_integer((nombre_personnes_a_charge_3 - integer_of_string("4"))))) - elif match_arg_79.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_79.value + elif match_arg_80.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_80.value if (nombre_personnes_a_charge_3 == integer_of_string("0")): - match_arg_82 = situation_familiale_calcul_apl_3 - if match_arg_82.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_82.value + match_arg_83 = situation_familiale_calcul_apl_3 + if match_arg_83.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_83.value return money_of_cents_string("38578") - elif match_arg_82.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_82.value + elif match_arg_83.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_83.value return money_of_cents_string("44869") else: if (nombre_personnes_a_charge_3 == @@ -5709,17 +5812,17 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ if ((date_courante_4 >= date_of_numbers(2021,10,1)) and (date_courante_4 < date_of_numbers(2022,7,1))): - match_arg_83 = zone_1 - if match_arg_83.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_83.value + match_arg_84 = zone_1 + if match_arg_84.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_84.value if (nombre_personnes_a_charge_3 == integer_of_string("0")): - match_arg_84 = situation_familiale_calcul_apl_3 - if match_arg_84.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_84.value + match_arg_85 = situation_familiale_calcul_apl_3 + if match_arg_85.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_85.value return money_of_cents_string("44630") - elif match_arg_84.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_84.value + elif match_arg_85.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_85.value return money_of_cents_string("52321") else: if (nombre_personnes_a_charge_3 == @@ -5738,16 +5841,16 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ (money_of_cents_string("7119") * decimal_of_integer((nombre_personnes_a_charge_3 - integer_of_string("4"))))) - elif match_arg_83.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_83.value + elif match_arg_84.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_84.value if (nombre_personnes_a_charge_3 == integer_of_string("0")): - match_arg_85 = situation_familiale_calcul_apl_3 - if match_arg_85.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_85.value + match_arg_86 = situation_familiale_calcul_apl_3 + if match_arg_86.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_86.value return money_of_cents_string("40814") - elif match_arg_85.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_85.value + elif match_arg_86.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_86.value return money_of_cents_string("47632") else: if (nombre_personnes_a_charge_3 == @@ -5766,16 +5869,16 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ (money_of_cents_string("6434") * decimal_of_integer((nombre_personnes_a_charge_3 - integer_of_string("4"))))) - elif match_arg_83.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_83.value + elif match_arg_84.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_84.value if (nombre_personnes_a_charge_3 == integer_of_string("0")): - match_arg_86 = situation_familiale_calcul_apl_3 - if match_arg_86.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_86.value + match_arg_87 = situation_familiale_calcul_apl_3 + if match_arg_87.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_87.value return money_of_cents_string("38740") - elif match_arg_86.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_86.value + elif match_arg_87.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_87.value return money_of_cents_string("45057") else: if (nombre_personnes_a_charge_3 == @@ -5799,17 +5902,17 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ def temp_plafond_equivalence_loyer_eligible_4(_:Unit): if (date_courante_4 >= date_of_numbers(2022,7,1)): - match_arg_87 = zone_1 - if match_arg_87.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_87.value + match_arg_88 = zone_1 + if match_arg_88.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_88.value if (nombre_personnes_a_charge_3 == integer_of_string("0")): - match_arg_88 = situation_familiale_calcul_apl_3 - if match_arg_88.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_88.value + match_arg_89 = situation_familiale_calcul_apl_3 + if match_arg_89.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_89.value return money_of_cents_string("46192") - elif match_arg_88.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_88.value + elif match_arg_89.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_89.value return money_of_cents_string("54152") else: if (nombre_personnes_a_charge_3 == @@ -5828,16 +5931,16 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ (money_of_cents_string("7368") * decimal_of_integer((nombre_personnes_a_charge_3 - integer_of_string("4"))))) - elif match_arg_87.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_87.value + elif match_arg_88.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_88.value if (nombre_personnes_a_charge_3 == integer_of_string("0")): - match_arg_89 = situation_familiale_calcul_apl_3 - if match_arg_89.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_89.value + match_arg_90 = situation_familiale_calcul_apl_3 + if match_arg_90.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_90.value return money_of_cents_string("42242") - elif match_arg_89.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_89.value + elif match_arg_90.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_90.value return money_of_cents_string("49299") else: if (nombre_personnes_a_charge_3 == @@ -5856,16 +5959,16 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ (money_of_cents_string("6659") * decimal_of_integer((nombre_personnes_a_charge_3 - integer_of_string("4"))))) - elif match_arg_87.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_87.value + elif match_arg_88.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_88.value if (nombre_personnes_a_charge_3 == integer_of_string("0")): - match_arg_90 = situation_familiale_calcul_apl_3 - if match_arg_90.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_90.value + match_arg_91 = situation_familiale_calcul_apl_3 + if match_arg_91.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_91.value return money_of_cents_string("40096") - elif match_arg_90.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_90.value + elif match_arg_91.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_91.value return money_of_cents_string("46634") else: if (nombre_personnes_a_charge_3 == @@ -5941,8 +6044,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_calcul_nombre_parts_dot_condition_2_du_832_25 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=3927, - start_column=14, end_line=3927, + start_line=3939, + start_column=14, end_line=3939, end_column=55, law_headings=["Article D832-25", "Sous-Section 2 : Conditions d'octroi de l'aide personnalisée au logement aux personnes résidant dans un logement-foyer", @@ -5958,8 +6061,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_calcul_nombre_parts_dot_nombre_personnes_a_charge = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=3923, - start_column=14, end_line=3923, + start_line=3935, + start_column=14, end_line=3935, end_column=59, law_headings=["Article D832-25", "Sous-Section 2 : Conditions d'octroi de l'aide personnalisée au logement aux personnes résidant dans un logement-foyer", @@ -5975,8 +6078,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_calcul_nombre_parts_dot_situation_familiale_calcul_apl = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=3925, - start_column=14, end_line=3925, + start_line=3937, + start_column=14, end_line=3937, end_column=64, law_headings=["Article D832-25", "Sous-Section 2 : Conditions d'octroi de l'aide personnalisée au logement aux personnes résidant dans un logement-foyer", @@ -6081,8 +6184,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_calcul_equivalence_loyer_minimale_dot_ressources_menage_arrondies = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=3761, - start_column=14, end_line=3761, + start_line=3773, + start_column=14, end_line=3773, end_column=75, law_headings=["Article D832-24", "Sous-Section 2 : Conditions d'octroi de l'aide personnalisée au logement aux personnes résidant dans un logement-foyer", @@ -6098,8 +6201,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_calcul_equivalence_loyer_minimale_dot_condition_2_du_832_25 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=3759, - start_column=14, end_line=3759, + start_line=3771, + start_column=14, end_line=3771, end_column=69, law_headings=["Article D832-24", "Sous-Section 2 : Conditions d'octroi de l'aide personnalisée au logement aux personnes résidant dans un logement-foyer", @@ -6115,8 +6218,8 @@ def calcul_aide_personnalisee_logement_foyer(calcul_aide_personnalisee_logement_ except EmptyError: temp_calcul_equivalence_loyer_minimale_dot_n_nombre_parts_d832_25 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=3763, - start_column=14, end_line=3763, + start_line=3775, + start_column=14, end_line=3775, end_column=70, law_headings=["Article D832-24", "Sous-Section 2 : Conditions d'octroi de l'aide personnalisée au logement aux personnes résidant dans un logement-foyer", @@ -6504,8 +6607,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_calcul_nombre_parts_dot_nombre_personnes_a_charge_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=3269, - start_column=14, end_line=3269, + start_line=3281, + start_column=14, end_line=3281, end_column=59, law_headings=["Article D832-11", "Section 2 : Accession à la propriété", @@ -6520,8 +6623,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_calcul_nombre_parts_dot_situation_familiale_calcul_apl_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=3271, - start_column=14, end_line=3271, + start_line=3283, + start_column=14, end_line=3283, end_column=64, law_headings=["Article D832-11", "Section 2 : Accession à la propriété", @@ -6535,22 +6638,22 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal situation_familiale_calcul_apl_in = calcul_nombre_parts_dot_situation_familiale_calcul_apl_1)) calcul_nombre_parts_dot_n_nombre_parts_d832_11 = result_4.n_nombre_parts_d832_11 try: - match_arg_91 = anciennete_logement - if match_arg_91.code == NeufOuAncien_Code.Neuf: - _ = match_arg_91.value + match_arg_92 = anciennete_logement + if match_arg_92.code == NeufOuAncien_Code.Neuf: + _ = match_arg_92.value if (date_signature_pret <= date_of_numbers(1998,10,1)): temp_coefficient_multiplicateur_d832_17_3 = decimal_of_string("0.0226") else: temp_coefficient_multiplicateur_d832_17_3 = decimal_of_string("0.0234") - elif match_arg_91.code == NeufOuAncien_Code.Ancien: - ameliore_par_occupant = match_arg_91.value - match_arg_92 = ameliore_par_occupant - if match_arg_92.code == AmelioreParOccupant_Code.Oui: - _ = match_arg_92.value + elif match_arg_92.code == NeufOuAncien_Code.Ancien: + ameliore_par_occupant = match_arg_92.value + match_arg_93 = ameliore_par_occupant + if match_arg_93.code == AmelioreParOccupant_Code.Oui: + _ = match_arg_93.value temp_coefficient_multiplicateur_d832_17_3 = decimal_of_string("0.0172") - elif match_arg_92.code == AmelioreParOccupant_Code.Non: - _ = match_arg_92.value + elif match_arg_93.code == AmelioreParOccupant_Code.Non: + _ = match_arg_93.value if (date_signature_pret <= date_of_numbers(1998,10,1)): temp_coefficient_multiplicateur_d832_17_3 = decimal_of_string("0.0226") @@ -6590,12 +6693,12 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal if (((date_courante_5 < date_of_numbers(2021,10,1)) and (date_courante_5 >= date_of_numbers(2020,10,1))) and copropriete): - match_arg_93 = situation_familiale_calcul_apl_4 - if match_arg_93.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_93.value + match_arg_94 = situation_familiale_calcul_apl_4 + if match_arg_94.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_94.value temp_montant_forfaitaire_charges_d832_10_3 = money_of_cents_string("2699") - elif match_arg_93.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_93.value + elif match_arg_94.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_94.value temp_montant_forfaitaire_charges_d832_10_3 = money_of_cents_string("5399") return (temp_montant_forfaitaire_charges_d832_10_3 + (money_of_cents_string("1224") * @@ -6606,12 +6709,12 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal if (((date_courante_5 >= date_of_numbers(2021,10,1)) and (date_courante_5 < date_of_numbers(2022,7,1))) and copropriete): - match_arg_94 = situation_familiale_calcul_apl_4 - if match_arg_94.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_94.value + match_arg_95 = situation_familiale_calcul_apl_4 + if match_arg_95.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_95.value temp_montant_forfaitaire_charges_d832_10_5 = money_of_cents_string("2710") - elif match_arg_94.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_94.value + elif match_arg_95.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_95.value temp_montant_forfaitaire_charges_d832_10_5 = money_of_cents_string("5422") return (temp_montant_forfaitaire_charges_d832_10_5 + (money_of_cents_string("1229") * @@ -6621,12 +6724,12 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal def temp_montant_forfaitaire_charges_d832_10_6(_:Unit): if ((date_courante_5 >= date_of_numbers(2022,7,1)) and copropriete): - match_arg_95 = situation_familiale_calcul_apl_4 - if match_arg_95.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_95.value + match_arg_96 = situation_familiale_calcul_apl_4 + if match_arg_96.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_96.value temp_montant_forfaitaire_charges_d832_10_7 = money_of_cents_string("2805") - elif match_arg_95.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_95.value + elif match_arg_96.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_96.value temp_montant_forfaitaire_charges_d832_10_7 = money_of_cents_string("5612") return (temp_montant_forfaitaire_charges_d832_10_7 + (money_of_cents_string("1272") * @@ -6756,3449 +6859,3549 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal def temp_calcul_plafond_mensualite_d832_10_3_2(_:Unit): return False def temp_calcul_plafond_mensualite_d832_10_3_3(_:Unit): - match_arg_96 = type_pret - if match_arg_96.code == TypePret_Code.D331_32: - _ = match_arg_96.value - temp_calcul_plafond_mensualite_d832_10_3_4 = False - elif match_arg_96.code == TypePret_Code.D331_63_64: - _ = match_arg_96.value - temp_calcul_plafond_mensualite_d832_10_3_4 = True - elif match_arg_96.code == TypePret_Code.D331_59_8: - _ = match_arg_96.value - temp_calcul_plafond_mensualite_d832_10_3_4 = False - elif match_arg_96.code == TypePret_Code.D331_76_1: - _ = match_arg_96.value - temp_calcul_plafond_mensualite_d832_10_3_4 = False - elif match_arg_96.code == TypePret_Code.Autre: - _ = match_arg_96.value - temp_calcul_plafond_mensualite_d832_10_3_4 = False - match_arg_97 = anciennete_logement - if match_arg_97.code == NeufOuAncien_Code.Neuf: - _ = match_arg_97.value - temp_calcul_plafond_mensualite_d832_10_3_5 = False - elif match_arg_97.code == NeufOuAncien_Code.Ancien: - _ = match_arg_97.value - temp_calcul_plafond_mensualite_d832_10_3_5 = True - if ((param_13 >= date_of_numbers(2019,9,30)) and - (temp_calcul_plafond_mensualite_d832_10_3_5 and - temp_calcul_plafond_mensualite_d832_10_3_4)): - match_arg_98 = zone_2 - if match_arg_98.code == ZoneDHabitation_Code.Zone1: + def temp_calcul_plafond_mensualite_d832_10_3_4(_:Unit): + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_5(_:Unit): + return False + def temp_calcul_plafond_mensualite_d832_10_3_6(_:Unit): + match_arg_97 = type_pret + if match_arg_97.code == TypePret_Code.D331_32: + _ = match_arg_97.value + temp_calcul_plafond_mensualite_d832_10_3_7 = True + elif match_arg_97.code == TypePret_Code.D331_63_64: + _ = match_arg_97.value + temp_calcul_plafond_mensualite_d832_10_3_7 = False + elif match_arg_97.code == TypePret_Code.D331_59_8: + _ = match_arg_97.value + temp_calcul_plafond_mensualite_d832_10_3_7 = False + elif match_arg_97.code == TypePret_Code.D331_76_1: + _ = match_arg_97.value + temp_calcul_plafond_mensualite_d832_10_3_7 = False + elif match_arg_97.code == TypePret_Code.Autre: + _ = match_arg_97.value + temp_calcul_plafond_mensualite_d832_10_3_7 = False + match_arg_98 = anciennete_logement + if match_arg_98.code == NeufOuAncien_Code.Neuf: _ = match_arg_98.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_99 = situation_familiale_calcul_apl_4 - if match_arg_99.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_99.value - return money_of_cents_string("29986") - elif match_arg_99.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_99.value - return money_of_cents_string("36187") - else: - return (money_of_cents_string("42386") + - (money_of_cents_string("6201") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_98.code == ZoneDHabitation_Code.Zone2: + temp_calcul_plafond_mensualite_d832_10_3_8 = False + elif match_arg_98.code == NeufOuAncien_Code.Ancien: _ = match_arg_98.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_100 = situation_familiale_calcul_apl_4 - if match_arg_100.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_100.value - return money_of_cents_string("26730") - elif match_arg_100.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_100.value - return money_of_cents_string("32193") - else: - return (money_of_cents_string("37656") + - (money_of_cents_string("5463") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_98.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_98.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_101 = situation_familiale_calcul_apl_4 - if match_arg_101.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_101.value - return money_of_cents_string("24964") - elif match_arg_101.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_101.value - return money_of_cents_string("29948") - else: - return (money_of_cents_string("34934") + - (money_of_cents_string("4986") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_6(_:Unit): - match_arg_102 = type_pret - if match_arg_102.code == TypePret_Code.D331_32: - _ = match_arg_102.value - temp_calcul_plafond_mensualite_d832_10_3_7 = False - elif match_arg_102.code == TypePret_Code.D331_63_64: - _ = match_arg_102.value - temp_calcul_plafond_mensualite_d832_10_3_7 = True - elif match_arg_102.code == TypePret_Code.D331_59_8: - _ = match_arg_102.value - temp_calcul_plafond_mensualite_d832_10_3_7 = False - elif match_arg_102.code == TypePret_Code.D331_76_1: - _ = match_arg_102.value - temp_calcul_plafond_mensualite_d832_10_3_7 = False - elif match_arg_102.code == TypePret_Code.Autre: - _ = match_arg_102.value - temp_calcul_plafond_mensualite_d832_10_3_7 = False - match_arg_103 = anciennete_logement - if match_arg_103.code == NeufOuAncien_Code.Neuf: - _ = match_arg_103.value - temp_calcul_plafond_mensualite_d832_10_3_8 = True - elif match_arg_103.code == NeufOuAncien_Code.Ancien: - _ = match_arg_103.value - temp_calcul_plafond_mensualite_d832_10_3_8 = False - if ((param_13 >= date_of_numbers(2019,9,30)) and - (temp_calcul_plafond_mensualite_d832_10_3_8 and - temp_calcul_plafond_mensualite_d832_10_3_7)): - match_arg_104 = zone_2 - if match_arg_104.code == ZoneDHabitation_Code.Zone1: + temp_calcul_plafond_mensualite_d832_10_3_8 = True + if ((param_13 >= date_of_numbers(1994,11,27)) and + (temp_calcul_plafond_mensualite_d832_10_3_8 and + temp_calcul_plafond_mensualite_d832_10_3_7)): + match_arg_99 = zone_2 + if match_arg_99.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_99.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_100 = situation_familiale_calcul_apl_4 + if match_arg_100.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_100.value + temp_calcul_plafond_mensualite_d832_10_3_9 = money_of_cents_string("148100") + elif match_arg_100.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_100.value + temp_calcul_plafond_mensualite_d832_10_3_9 = money_of_cents_string("178700") + else: + temp_calcul_plafond_mensualite_d832_10_3_9 = (money_of_cents_string("209300") + + (money_of_cents_string("30600") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_99.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_99.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_101 = situation_familiale_calcul_apl_4 + if match_arg_101.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_101.value + temp_calcul_plafond_mensualite_d832_10_3_9 = money_of_cents_string("132000") + elif match_arg_101.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_101.value + temp_calcul_plafond_mensualite_d832_10_3_9 = money_of_cents_string("158900") + else: + temp_calcul_plafond_mensualite_d832_10_3_9 = (money_of_cents_string("185800") + + (money_of_cents_string("26900") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_99.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_99.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_102 = situation_familiale_calcul_apl_4 + if match_arg_102.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_102.value + temp_calcul_plafond_mensualite_d832_10_3_9 = money_of_cents_string("123300") + elif match_arg_102.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_102.value + temp_calcul_plafond_mensualite_d832_10_3_9 = money_of_cents_string("147900") + else: + temp_calcul_plafond_mensualite_d832_10_3_9 = (money_of_cents_string("172500") + + (money_of_cents_string("24600") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + return (temp_calcul_plafond_mensualite_d832_10_3_9 * + taux_francs_vers_euros) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_10(_:Unit): + match_arg_103 = type_pret + if match_arg_103.code == TypePret_Code.D331_32: + _ = match_arg_103.value + temp_calcul_plafond_mensualite_d832_10_3_11 = True + elif match_arg_103.code == TypePret_Code.D331_63_64: + _ = match_arg_103.value + temp_calcul_plafond_mensualite_d832_10_3_11 = False + elif match_arg_103.code == TypePret_Code.D331_59_8: + _ = match_arg_103.value + temp_calcul_plafond_mensualite_d832_10_3_11 = False + elif match_arg_103.code == TypePret_Code.D331_76_1: + _ = match_arg_103.value + temp_calcul_plafond_mensualite_d832_10_3_11 = False + elif match_arg_103.code == TypePret_Code.Autre: + _ = match_arg_103.value + temp_calcul_plafond_mensualite_d832_10_3_11 = False + match_arg_104 = anciennete_logement + if match_arg_104.code == NeufOuAncien_Code.Neuf: _ = match_arg_104.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_105 = situation_familiale_calcul_apl_4 - if match_arg_105.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_105.value - return money_of_cents_string("37252") - elif match_arg_105.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_105.value - return money_of_cents_string("44941") - else: - return (money_of_cents_string("52629") + - (money_of_cents_string("7687") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_104.code == ZoneDHabitation_Code.Zone2: + temp_calcul_plafond_mensualite_d832_10_3_12 = True + elif match_arg_104.code == NeufOuAncien_Code.Ancien: _ = match_arg_104.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_106 = situation_familiale_calcul_apl_4 - if match_arg_106.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_106.value - return money_of_cents_string("33244") - elif match_arg_106.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_106.value - return money_of_cents_string("40013") - else: - return (money_of_cents_string("46783") + - (money_of_cents_string("6768") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_104.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_104.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_107 = situation_familiale_calcul_apl_4 - if match_arg_107.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_107.value - return money_of_cents_string("31036") - elif match_arg_107.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_107.value - return money_of_cents_string("37215") - else: - return (money_of_cents_string("43394") + - (money_of_cents_string("6179") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_9(_:Unit): - match_arg_108 = type_pret - if match_arg_108.code == TypePret_Code.D331_32: - _ = match_arg_108.value - temp_calcul_plafond_mensualite_d832_10_3_10 = False - elif match_arg_108.code == TypePret_Code.D331_63_64: - _ = match_arg_108.value - temp_calcul_plafond_mensualite_d832_10_3_10 = True - elif match_arg_108.code == TypePret_Code.D331_59_8: - _ = match_arg_108.value - temp_calcul_plafond_mensualite_d832_10_3_10 = False - elif match_arg_108.code == TypePret_Code.D331_76_1: - _ = match_arg_108.value - temp_calcul_plafond_mensualite_d832_10_3_10 = False - elif match_arg_108.code == TypePret_Code.Autre: - _ = match_arg_108.value - temp_calcul_plafond_mensualite_d832_10_3_10 = False - match_arg_109 = anciennete_logement - if match_arg_109.code == NeufOuAncien_Code.Neuf: - _ = match_arg_109.value - temp_calcul_plafond_mensualite_d832_10_3_11 = False - elif match_arg_109.code == NeufOuAncien_Code.Ancien: - _ = match_arg_109.value - temp_calcul_plafond_mensualite_d832_10_3_11 = True - if ((param_13 >= date_of_numbers(2017,9,30)) and - ((param_13 < date_of_numbers(2019,9,30)) and - (temp_calcul_plafond_mensualite_d832_10_3_11 and - temp_calcul_plafond_mensualite_d832_10_3_10))): - match_arg_110 = zone_2 - if match_arg_110.code == ZoneDHabitation_Code.Zone1: + temp_calcul_plafond_mensualite_d832_10_3_12 = False + if ((param_13 >= date_of_numbers(1994,11,27)) and + (temp_calcul_plafond_mensualite_d832_10_3_12 and + temp_calcul_plafond_mensualite_d832_10_3_11)): + match_arg_105 = zone_2 + if match_arg_105.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_105.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_106 = situation_familiale_calcul_apl_4 + if match_arg_106.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_106.value + temp_calcul_plafond_mensualite_d832_10_3_13 = money_of_cents_string("184000") + elif match_arg_106.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_106.value + temp_calcul_plafond_mensualite_d832_10_3_13 = money_of_cents_string("220000") + else: + temp_calcul_plafond_mensualite_d832_10_3_13 = (money_of_cents_string("260000") + + (money_of_cents_string("38000") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_105.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_105.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_107 = situation_familiale_calcul_apl_4 + if match_arg_107.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_107.value + temp_calcul_plafond_mensualite_d832_10_3_13 = money_of_cents_string("164200") + elif match_arg_107.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_107.value + temp_calcul_plafond_mensualite_d832_10_3_13 = money_of_cents_string("197700") + else: + temp_calcul_plafond_mensualite_d832_10_3_13 = (money_of_cents_string("231200") + + (money_of_cents_string("33500") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_105.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_105.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_108 = situation_familiale_calcul_apl_4 + if match_arg_108.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_108.value + temp_calcul_plafond_mensualite_d832_10_3_13 = money_of_cents_string("153200") + elif match_arg_108.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_108.value + temp_calcul_plafond_mensualite_d832_10_3_13 = money_of_cents_string("183700") + else: + temp_calcul_plafond_mensualite_d832_10_3_13 = (money_of_cents_string("214200") + + (money_of_cents_string("30500") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + return (temp_calcul_plafond_mensualite_d832_10_3_13 * + taux_francs_vers_euros) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_14(_:Unit): + match_arg_109 = type_pret + if match_arg_109.code == TypePret_Code.D331_32: + _ = match_arg_109.value + temp_calcul_plafond_mensualite_d832_10_3_15 = True + elif match_arg_109.code == TypePret_Code.D331_63_64: + _ = match_arg_109.value + temp_calcul_plafond_mensualite_d832_10_3_15 = False + elif match_arg_109.code == TypePret_Code.D331_59_8: + _ = match_arg_109.value + temp_calcul_plafond_mensualite_d832_10_3_15 = False + elif match_arg_109.code == TypePret_Code.D331_76_1: + _ = match_arg_109.value + temp_calcul_plafond_mensualite_d832_10_3_15 = False + elif match_arg_109.code == TypePret_Code.Autre: + _ = match_arg_109.value + temp_calcul_plafond_mensualite_d832_10_3_15 = False + match_arg_110 = anciennete_logement + if match_arg_110.code == NeufOuAncien_Code.Neuf: _ = match_arg_110.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_111 = situation_familiale_calcul_apl_4 - if match_arg_111.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_111.value - return money_of_cents_string("29897") - elif match_arg_111.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_111.value - return money_of_cents_string("36079") - else: - return (money_of_cents_string("42260") + - (money_of_cents_string("6182") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_110.code == ZoneDHabitation_Code.Zone2: + temp_calcul_plafond_mensualite_d832_10_3_16 = False + elif match_arg_110.code == NeufOuAncien_Code.Ancien: _ = match_arg_110.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_112 = situation_familiale_calcul_apl_4 - if match_arg_112.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_112.value - return money_of_cents_string("26650") - elif match_arg_112.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_112.value - return money_of_cents_string("32097") - else: - return (money_of_cents_string("37543") + - (money_of_cents_string("5447") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_110.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_110.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_113 = situation_familiale_calcul_apl_4 - if match_arg_113.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_113.value - return money_of_cents_string("24889") - elif match_arg_113.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_113.value - return money_of_cents_string("29858") - else: - return (money_of_cents_string("34829") + - (money_of_cents_string("4971") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_12(_:Unit): - match_arg_114 = type_pret - if match_arg_114.code == TypePret_Code.D331_32: - _ = match_arg_114.value - temp_calcul_plafond_mensualite_d832_10_3_13 = False - elif match_arg_114.code == TypePret_Code.D331_63_64: - _ = match_arg_114.value - temp_calcul_plafond_mensualite_d832_10_3_13 = True - elif match_arg_114.code == TypePret_Code.D331_59_8: - _ = match_arg_114.value - temp_calcul_plafond_mensualite_d832_10_3_13 = False - elif match_arg_114.code == TypePret_Code.D331_76_1: - _ = match_arg_114.value - temp_calcul_plafond_mensualite_d832_10_3_13 = False - elif match_arg_114.code == TypePret_Code.Autre: - _ = match_arg_114.value - temp_calcul_plafond_mensualite_d832_10_3_13 = False - match_arg_115 = anciennete_logement - if match_arg_115.code == NeufOuAncien_Code.Neuf: - _ = match_arg_115.value - temp_calcul_plafond_mensualite_d832_10_3_14 = True - elif match_arg_115.code == NeufOuAncien_Code.Ancien: - _ = match_arg_115.value - temp_calcul_plafond_mensualite_d832_10_3_14 = False - if ((param_13 >= date_of_numbers(2017,9,30)) and - ((param_13 < date_of_numbers(2019,9,30)) and - (temp_calcul_plafond_mensualite_d832_10_3_14 and - temp_calcul_plafond_mensualite_d832_10_3_13))): - match_arg_116 = zone_2 - if match_arg_116.code == ZoneDHabitation_Code.Zone1: + temp_calcul_plafond_mensualite_d832_10_3_16 = True + if ((param_13 >= date_of_numbers(1992,6,30)) and + ((param_13 < date_of_numbers(1994,11,27)) and + (temp_calcul_plafond_mensualite_d832_10_3_16 and + temp_calcul_plafond_mensualite_d832_10_3_15))): + match_arg_111 = zone_2 + if match_arg_111.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_111.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_112 = situation_familiale_calcul_apl_4 + if match_arg_112.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_112.value + temp_calcul_plafond_mensualite_d832_10_3_17 = money_of_cents_string("167800") + elif match_arg_112.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_112.value + temp_calcul_plafond_mensualite_d832_10_3_17 = money_of_cents_string("202500") + else: + temp_calcul_plafond_mensualite_d832_10_3_17 = (money_of_cents_string("237200") + + (money_of_cents_string("34700") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_111.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_111.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_113 = situation_familiale_calcul_apl_4 + if match_arg_113.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_113.value + temp_calcul_plafond_mensualite_d832_10_3_17 = money_of_cents_string("149600") + elif match_arg_113.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_113.value + temp_calcul_plafond_mensualite_d832_10_3_17 = money_of_cents_string("180100") + else: + temp_calcul_plafond_mensualite_d832_10_3_17 = (money_of_cents_string("210600") + + (money_of_cents_string("30500") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_111.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_111.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_114 = situation_familiale_calcul_apl_4 + if match_arg_114.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_114.value + temp_calcul_plafond_mensualite_d832_10_3_17 = money_of_cents_string("139700") + elif match_arg_114.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_114.value + temp_calcul_plafond_mensualite_d832_10_3_17 = money_of_cents_string("167600") + else: + temp_calcul_plafond_mensualite_d832_10_3_17 = (money_of_cents_string("195500") + + (money_of_cents_string("27900") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + return (temp_calcul_plafond_mensualite_d832_10_3_17 * + taux_francs_vers_euros) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_18(_:Unit): + match_arg_115 = type_pret + if match_arg_115.code == TypePret_Code.D331_32: + _ = match_arg_115.value + temp_calcul_plafond_mensualite_d832_10_3_19 = True + elif match_arg_115.code == TypePret_Code.D331_63_64: + _ = match_arg_115.value + temp_calcul_plafond_mensualite_d832_10_3_19 = False + elif match_arg_115.code == TypePret_Code.D331_59_8: + _ = match_arg_115.value + temp_calcul_plafond_mensualite_d832_10_3_19 = False + elif match_arg_115.code == TypePret_Code.D331_76_1: + _ = match_arg_115.value + temp_calcul_plafond_mensualite_d832_10_3_19 = False + elif match_arg_115.code == TypePret_Code.Autre: + _ = match_arg_115.value + temp_calcul_plafond_mensualite_d832_10_3_19 = False + match_arg_116 = anciennete_logement + if match_arg_116.code == NeufOuAncien_Code.Neuf: _ = match_arg_116.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_117 = situation_familiale_calcul_apl_4 - if match_arg_117.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_117.value - return money_of_cents_string("37140") - elif match_arg_117.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_117.value - return money_of_cents_string("44807") - else: - return (money_of_cents_string("52472") + - (money_of_cents_string("7664") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_116.code == ZoneDHabitation_Code.Zone2: + temp_calcul_plafond_mensualite_d832_10_3_20 = True + elif match_arg_116.code == NeufOuAncien_Code.Ancien: _ = match_arg_116.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_118 = situation_familiale_calcul_apl_4 - if match_arg_118.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_118.value - return money_of_cents_string("33145") - elif match_arg_118.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_118.value - return money_of_cents_string("39893") - else: - return (money_of_cents_string("46643") + - (money_of_cents_string("6748") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_116.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_116.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_119 = situation_familiale_calcul_apl_4 - if match_arg_119.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_119.value - return money_of_cents_string("30943") - elif match_arg_119.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_119.value - return money_of_cents_string("37103") - else: - return (money_of_cents_string("43264") + - (money_of_cents_string("6161") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_15(_:Unit): - match_arg_120 = type_pret - if match_arg_120.code == TypePret_Code.D331_32: - _ = match_arg_120.value - temp_calcul_plafond_mensualite_d832_10_3_16 = False - elif match_arg_120.code == TypePret_Code.D331_63_64: - _ = match_arg_120.value - temp_calcul_plafond_mensualite_d832_10_3_16 = True - elif match_arg_120.code == TypePret_Code.D331_59_8: - _ = match_arg_120.value - temp_calcul_plafond_mensualite_d832_10_3_16 = False - elif match_arg_120.code == TypePret_Code.D331_76_1: - _ = match_arg_120.value - temp_calcul_plafond_mensualite_d832_10_3_16 = False - elif match_arg_120.code == TypePret_Code.Autre: - _ = match_arg_120.value - temp_calcul_plafond_mensualite_d832_10_3_16 = False - match_arg_121 = anciennete_logement - if match_arg_121.code == NeufOuAncien_Code.Neuf: - _ = match_arg_121.value - temp_calcul_plafond_mensualite_d832_10_3_17 = False - elif match_arg_121.code == NeufOuAncien_Code.Ancien: - _ = match_arg_121.value - temp_calcul_plafond_mensualite_d832_10_3_17 = True - if ((param_13 >= date_of_numbers(2015,9,30)) and - ((param_13 < date_of_numbers(2017,9,30)) and - (temp_calcul_plafond_mensualite_d832_10_3_17 and - temp_calcul_plafond_mensualite_d832_10_3_16))): - match_arg_122 = zone_2 - if match_arg_122.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_122.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_123 = situation_familiale_calcul_apl_4 - if match_arg_123.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_123.value - return money_of_cents_string("29674") - elif match_arg_123.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_123.value - return money_of_cents_string("35810") - else: - return (money_of_cents_string("41945") + - (money_of_cents_string("6136") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_122.code == ZoneDHabitation_Code.Zone2: + temp_calcul_plafond_mensualite_d832_10_3_20 = False + if ((param_13 >= date_of_numbers(1992,6,30)) and + ((param_13 < date_of_numbers(1994,11,27)) and + (temp_calcul_plafond_mensualite_d832_10_3_20 and + temp_calcul_plafond_mensualite_d832_10_3_19))): + match_arg_117 = zone_2 + if match_arg_117.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_117.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_118 = situation_familiale_calcul_apl_4 + if match_arg_118.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_118.value + temp_calcul_plafond_mensualite_d832_10_3_21 = money_of_cents_string("208500") + elif match_arg_118.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_118.value + temp_calcul_plafond_mensualite_d832_10_3_21 = money_of_cents_string("251500") + else: + temp_calcul_plafond_mensualite_d832_10_3_21 = (money_of_cents_string("294500") + + (money_of_cents_string("43000") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_117.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_117.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_119 = situation_familiale_calcul_apl_4 + if match_arg_119.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_119.value + temp_calcul_plafond_mensualite_d832_10_3_21 = money_of_cents_string("186000") + elif match_arg_119.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_119.value + temp_calcul_plafond_mensualite_d832_10_3_21 = money_of_cents_string("223900") + else: + temp_calcul_plafond_mensualite_d832_10_3_21 = (money_of_cents_string("261800") + + (money_of_cents_string("37900") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_117.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_117.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_120 = situation_familiale_calcul_apl_4 + if match_arg_120.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_120.value + temp_calcul_plafond_mensualite_d832_10_3_21 = money_of_cents_string("173600") + elif match_arg_120.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_120.value + temp_calcul_plafond_mensualite_d832_10_3_21 = money_of_cents_string("208200") + else: + temp_calcul_plafond_mensualite_d832_10_3_21 = (money_of_cents_string("242800") + + (money_of_cents_string("35600") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + return (temp_calcul_plafond_mensualite_d832_10_3_21 * + taux_francs_vers_euros) + else: + raise EmptyError + return handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", + start_line=684, start_column=11, + end_line=684, end_column=46, + law_headings=["Secteur accession à la propriété", + "Calcul du montant de l'aide personnalisée au logement", + "Déclarations des champs d'application", + "Prologue : aides au logement"]), [temp_calcul_plafond_mensualite_d832_10_3_18, + temp_calcul_plafond_mensualite_d832_10_3_14, + temp_calcul_plafond_mensualite_d832_10_3_10, + temp_calcul_plafond_mensualite_d832_10_3_6], + temp_calcul_plafond_mensualite_d832_10_3_5, + temp_calcul_plafond_mensualite_d832_10_3_4) + def temp_calcul_plafond_mensualite_d832_10_3_22(_:Unit): + try: + match_arg_121 = type_pret + if match_arg_121.code == TypePret_Code.D331_32: + _ = match_arg_121.value + temp_calcul_plafond_mensualite_d832_10_3_23 = False + elif match_arg_121.code == TypePret_Code.D331_63_64: + _ = match_arg_121.value + temp_calcul_plafond_mensualite_d832_10_3_23 = True + elif match_arg_121.code == TypePret_Code.D331_59_8: + _ = match_arg_121.value + temp_calcul_plafond_mensualite_d832_10_3_23 = False + elif match_arg_121.code == TypePret_Code.D331_76_1: + _ = match_arg_121.value + temp_calcul_plafond_mensualite_d832_10_3_23 = False + elif match_arg_121.code == TypePret_Code.Autre: + _ = match_arg_121.value + temp_calcul_plafond_mensualite_d832_10_3_23 = False + match_arg_122 = anciennete_logement + if match_arg_122.code == NeufOuAncien_Code.Neuf: _ = match_arg_122.value + temp_calcul_plafond_mensualite_d832_10_3_24 = False + elif match_arg_122.code == NeufOuAncien_Code.Ancien: + ameliore_par_occupant_1 = match_arg_122.value + match_arg_123 = ameliore_par_occupant_1 + if match_arg_123.code == AmelioreParOccupant_Code.Oui: + _ = match_arg_123.value + temp_calcul_plafond_mensualite_d832_10_3_24 = True + elif match_arg_123.code == AmelioreParOccupant_Code.Non: + _ = match_arg_123.value + temp_calcul_plafond_mensualite_d832_10_3_24 = False + if ((date_courante_5 >= + date_of_numbers(2023,1,1)) and ((param_13 >= + date_of_numbers(1992,6,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_24 and + temp_calcul_plafond_mensualite_d832_10_3_23))): if (nombre_personnes_a_charge_4 == integer_of_string("0")): match_arg_124 = situation_familiale_calcul_apl_4 if match_arg_124.code == SituationFamilialeCalculAPL_Code.PersonneSeule: _ = match_arg_124.value - return money_of_cents_string("26452") + temp_calcul_plafond_mensualite_d832_10_3_25 = money_of_cents_string("86900") elif match_arg_124.code == SituationFamilialeCalculAPL_Code.Couple: _ = match_arg_124.value - return money_of_cents_string("31858") + temp_calcul_plafond_mensualite_d832_10_3_25 = money_of_cents_string("97100") else: - return (money_of_cents_string("37264") + - (money_of_cents_string("5406") * + temp_calcul_plafond_mensualite_d832_10_3_25 = (money_of_cents_string("107300") + + (money_of_cents_string("10200") * decimal_of_integer((nombre_personnes_a_charge_4 - integer_of_string("1"))))) - elif match_arg_122.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_122.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_125 = situation_familiale_calcul_apl_4 - if match_arg_125.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_125.value - return money_of_cents_string("24704") - elif match_arg_125.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_125.value - return money_of_cents_string("29636") - else: - return (money_of_cents_string("34570") + - (money_of_cents_string("4934") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_18(_:Unit): - match_arg_126 = type_pret - if match_arg_126.code == TypePret_Code.D331_32: - _ = match_arg_126.value - temp_calcul_plafond_mensualite_d832_10_3_19 = False - elif match_arg_126.code == TypePret_Code.D331_63_64: - _ = match_arg_126.value - temp_calcul_plafond_mensualite_d832_10_3_19 = True - elif match_arg_126.code == TypePret_Code.D331_59_8: - _ = match_arg_126.value - temp_calcul_plafond_mensualite_d832_10_3_19 = False - elif match_arg_126.code == TypePret_Code.D331_76_1: - _ = match_arg_126.value - temp_calcul_plafond_mensualite_d832_10_3_19 = False - elif match_arg_126.code == TypePret_Code.Autre: - _ = match_arg_126.value - temp_calcul_plafond_mensualite_d832_10_3_19 = False - match_arg_127 = anciennete_logement - if match_arg_127.code == NeufOuAncien_Code.Neuf: - _ = match_arg_127.value - temp_calcul_plafond_mensualite_d832_10_3_20 = True - elif match_arg_127.code == NeufOuAncien_Code.Ancien: - _ = match_arg_127.value - temp_calcul_plafond_mensualite_d832_10_3_20 = False - if ((param_13 >= date_of_numbers(2015,9,30)) and - ((param_13 < date_of_numbers(2017,9,30)) and - (temp_calcul_plafond_mensualite_d832_10_3_20 and - temp_calcul_plafond_mensualite_d832_10_3_19))): - match_arg_128 = zone_2 - if match_arg_128.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_128.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_129 = situation_familiale_calcul_apl_4 - if match_arg_129.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_129.value - return money_of_cents_string("36864") - elif match_arg_129.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_129.value - return money_of_cents_string("44473") - else: - return (money_of_cents_string("52081") + - (money_of_cents_string("7607") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_128.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_128.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_130 = situation_familiale_calcul_apl_4 - if match_arg_130.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_130.value - return money_of_cents_string("32898") - elif match_arg_130.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_130.value - return money_of_cents_string("39596") - else: - return (money_of_cents_string("46296") + - (money_of_cents_string("6698") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_128.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_128.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_131 = situation_familiale_calcul_apl_4 - if match_arg_131.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_131.value - return money_of_cents_string("30713") - elif match_arg_131.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_131.value - return money_of_cents_string("36827") - else: - return (money_of_cents_string("42942") + - (money_of_cents_string("6115") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_21(_:Unit): - match_arg_132 = type_pret - if match_arg_132.code == TypePret_Code.D331_32: - _ = match_arg_132.value - temp_calcul_plafond_mensualite_d832_10_3_22 = False - elif match_arg_132.code == TypePret_Code.D331_63_64: - _ = match_arg_132.value - temp_calcul_plafond_mensualite_d832_10_3_22 = True - elif match_arg_132.code == TypePret_Code.D331_59_8: - _ = match_arg_132.value - temp_calcul_plafond_mensualite_d832_10_3_22 = False - elif match_arg_132.code == TypePret_Code.D331_76_1: - _ = match_arg_132.value - temp_calcul_plafond_mensualite_d832_10_3_22 = False - elif match_arg_132.code == TypePret_Code.Autre: - _ = match_arg_132.value - temp_calcul_plafond_mensualite_d832_10_3_22 = False - match_arg_133 = anciennete_logement - if match_arg_133.code == NeufOuAncien_Code.Neuf: - _ = match_arg_133.value - temp_calcul_plafond_mensualite_d832_10_3_23 = False - elif match_arg_133.code == NeufOuAncien_Code.Ancien: - _ = match_arg_133.value - temp_calcul_plafond_mensualite_d832_10_3_23 = True - if ((param_13 >= date_of_numbers(2014,9,30)) and - ((param_13 < date_of_numbers(2015,9,30)) and - (temp_calcul_plafond_mensualite_d832_10_3_23 and - temp_calcul_plafond_mensualite_d832_10_3_22))): - match_arg_134 = zone_2 - if match_arg_134.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_134.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_135 = situation_familiale_calcul_apl_4 - if match_arg_135.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_135.value - return money_of_cents_string("29650") - elif match_arg_135.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_135.value - return money_of_cents_string("35781") - else: - return (money_of_cents_string("41911") + - (money_of_cents_string("6131") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_134.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_134.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_136 = situation_familiale_calcul_apl_4 - if match_arg_136.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_136.value - return money_of_cents_string("26431") - elif match_arg_136.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_136.value - return money_of_cents_string("31833") - else: - return (money_of_cents_string("37234") + - (money_of_cents_string("5402") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_134.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_134.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_137 = situation_familiale_calcul_apl_4 - if match_arg_137.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_137.value - return money_of_cents_string("24684") - elif match_arg_137.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_137.value - return money_of_cents_string("29612") - else: - return (money_of_cents_string("34542") + - (money_of_cents_string("4930") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_24(_:Unit): - match_arg_138 = type_pret - if match_arg_138.code == TypePret_Code.D331_32: - _ = match_arg_138.value - temp_calcul_plafond_mensualite_d832_10_3_25 = False - elif match_arg_138.code == TypePret_Code.D331_63_64: - _ = match_arg_138.value - temp_calcul_plafond_mensualite_d832_10_3_25 = True - elif match_arg_138.code == TypePret_Code.D331_59_8: - _ = match_arg_138.value - temp_calcul_plafond_mensualite_d832_10_3_25 = False - elif match_arg_138.code == TypePret_Code.D331_76_1: - _ = match_arg_138.value - temp_calcul_plafond_mensualite_d832_10_3_25 = False - elif match_arg_138.code == TypePret_Code.Autre: - _ = match_arg_138.value - temp_calcul_plafond_mensualite_d832_10_3_25 = False - match_arg_139 = anciennete_logement - if match_arg_139.code == NeufOuAncien_Code.Neuf: - _ = match_arg_139.value - temp_calcul_plafond_mensualite_d832_10_3_26 = True - elif match_arg_139.code == NeufOuAncien_Code.Ancien: - _ = match_arg_139.value - temp_calcul_plafond_mensualite_d832_10_3_26 = False - if ((param_13 >= date_of_numbers(2014,9,30)) and - ((param_13 < date_of_numbers(2015,9,30)) and - (temp_calcul_plafond_mensualite_d832_10_3_26 and - temp_calcul_plafond_mensualite_d832_10_3_25))): - match_arg_140 = zone_2 - if match_arg_140.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_140.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_141 = situation_familiale_calcul_apl_4 - if match_arg_141.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_141.value - return money_of_cents_string("36835") - elif match_arg_141.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_141.value - return money_of_cents_string("44437") - else: - return (money_of_cents_string("52039") + - (money_of_cents_string("7601") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_140.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_140.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_142 = situation_familiale_calcul_apl_4 - if match_arg_142.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_142.value - return money_of_cents_string("32872") - elif match_arg_142.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_142.value - return money_of_cents_string("39564") - else: - return (money_of_cents_string("46259") + - (money_of_cents_string("6693") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_140.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_140.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_143 = situation_familiale_calcul_apl_4 - if match_arg_143.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_143.value - return money_of_cents_string("30688") - elif match_arg_143.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_143.value - return money_of_cents_string("36798") - else: - return (money_of_cents_string("42908") + - (money_of_cents_string("6110") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_27(_:Unit): - match_arg_144 = type_pret - if match_arg_144.code == TypePret_Code.D331_32: - _ = match_arg_144.value - temp_calcul_plafond_mensualite_d832_10_3_28 = False - elif match_arg_144.code == TypePret_Code.D331_63_64: - _ = match_arg_144.value - temp_calcul_plafond_mensualite_d832_10_3_28 = True - elif match_arg_144.code == TypePret_Code.D331_59_8: - _ = match_arg_144.value - temp_calcul_plafond_mensualite_d832_10_3_28 = False - elif match_arg_144.code == TypePret_Code.D331_76_1: - _ = match_arg_144.value - temp_calcul_plafond_mensualite_d832_10_3_28 = False - elif match_arg_144.code == TypePret_Code.Autre: - _ = match_arg_144.value - temp_calcul_plafond_mensualite_d832_10_3_28 = False - match_arg_145 = anciennete_logement - if match_arg_145.code == NeufOuAncien_Code.Neuf: - _ = match_arg_145.value - temp_calcul_plafond_mensualite_d832_10_3_29 = False - elif match_arg_145.code == NeufOuAncien_Code.Ancien: - _ = match_arg_145.value - temp_calcul_plafond_mensualite_d832_10_3_29 = True - if ((param_13 >= date_of_numbers(2012,12,31)) and - ((param_13 < date_of_numbers(2014,9,30)) and - (temp_calcul_plafond_mensualite_d832_10_3_29 and - temp_calcul_plafond_mensualite_d832_10_3_28))): - match_arg_146 = zone_2 - if match_arg_146.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_146.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_147 = situation_familiale_calcul_apl_4 - if match_arg_147.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_147.value - return money_of_cents_string("29482") - elif match_arg_147.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_147.value - return money_of_cents_string("35578") - else: - return (money_of_cents_string("41673") + - (money_of_cents_string("6096") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_146.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_146.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_148 = situation_familiale_calcul_apl_4 - if match_arg_148.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_148.value - return money_of_cents_string("26281") - elif match_arg_148.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_148.value - return money_of_cents_string("31653") - else: - return (money_of_cents_string("37023") + - (money_of_cents_string("5371") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_146.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_146.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_149 = situation_familiale_calcul_apl_4 - if match_arg_149.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_149.value - return money_of_cents_string("24544") - elif match_arg_149.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_149.value - return money_of_cents_string("29444") - else: - return (money_of_cents_string("34346") + - (money_of_cents_string("4902") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_30(_:Unit): - match_arg_150 = type_pret - if match_arg_150.code == TypePret_Code.D331_32: - _ = match_arg_150.value - temp_calcul_plafond_mensualite_d832_10_3_31 = False - elif match_arg_150.code == TypePret_Code.D331_63_64: - _ = match_arg_150.value - temp_calcul_plafond_mensualite_d832_10_3_31 = True - elif match_arg_150.code == TypePret_Code.D331_59_8: - _ = match_arg_150.value - temp_calcul_plafond_mensualite_d832_10_3_31 = False - elif match_arg_150.code == TypePret_Code.D331_76_1: - _ = match_arg_150.value - temp_calcul_plafond_mensualite_d832_10_3_31 = False - elif match_arg_150.code == TypePret_Code.Autre: - _ = match_arg_150.value - temp_calcul_plafond_mensualite_d832_10_3_31 = False - match_arg_151 = anciennete_logement - if match_arg_151.code == NeufOuAncien_Code.Neuf: - _ = match_arg_151.value - temp_calcul_plafond_mensualite_d832_10_3_32 = True - elif match_arg_151.code == NeufOuAncien_Code.Ancien: - _ = match_arg_151.value - temp_calcul_plafond_mensualite_d832_10_3_32 = False - if ((param_13 >= date_of_numbers(2012,12,31)) and - ((param_13 < date_of_numbers(2014,9,30)) and - (temp_calcul_plafond_mensualite_d832_10_3_32 and - temp_calcul_plafond_mensualite_d832_10_3_31))): - match_arg_152 = zone_2 - if match_arg_152.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_152.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_153 = situation_familiale_calcul_apl_4 - if match_arg_153.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_153.value - return money_of_cents_string("36626") - elif match_arg_153.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_153.value - return money_of_cents_string("44185") - else: - return (money_of_cents_string("51744") + - (money_of_cents_string("7558") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_152.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_152.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_154 = situation_familiale_calcul_apl_4 - if match_arg_154.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_154.value - return money_of_cents_string("32686") - elif match_arg_154.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_154.value - return money_of_cents_string("39340") - else: - return (money_of_cents_string("45997") + - (money_of_cents_string("6655") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_152.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_152.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_155 = situation_familiale_calcul_apl_4 - if match_arg_155.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_155.value - return money_of_cents_string("30514") - elif match_arg_155.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_155.value - return money_of_cents_string("36589") - else: - return (money_of_cents_string("42665") + - (money_of_cents_string("6075") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_33(_:Unit): - match_arg_156 = type_pret - if match_arg_156.code == TypePret_Code.D331_32: - _ = match_arg_156.value - temp_calcul_plafond_mensualite_d832_10_3_34 = False - elif match_arg_156.code == TypePret_Code.D331_63_64: - _ = match_arg_156.value - temp_calcul_plafond_mensualite_d832_10_3_34 = True - elif match_arg_156.code == TypePret_Code.D331_59_8: - _ = match_arg_156.value - temp_calcul_plafond_mensualite_d832_10_3_34 = False - elif match_arg_156.code == TypePret_Code.D331_76_1: - _ = match_arg_156.value - temp_calcul_plafond_mensualite_d832_10_3_34 = False - elif match_arg_156.code == TypePret_Code.Autre: - _ = match_arg_156.value - temp_calcul_plafond_mensualite_d832_10_3_34 = False - match_arg_157 = anciennete_logement - if match_arg_157.code == NeufOuAncien_Code.Neuf: - _ = match_arg_157.value - temp_calcul_plafond_mensualite_d832_10_3_35 = False - elif match_arg_157.code == NeufOuAncien_Code.Ancien: - _ = match_arg_157.value - temp_calcul_plafond_mensualite_d832_10_3_35 = True - if ((param_13 >= date_of_numbers(2011,12,31)) and - ((param_13 < date_of_numbers(2012,12,31)) and - (temp_calcul_plafond_mensualite_d832_10_3_35 and - temp_calcul_plafond_mensualite_d832_10_3_34))): - match_arg_158 = zone_2 - if match_arg_158.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_158.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_159 = situation_familiale_calcul_apl_4 - if match_arg_159.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_159.value - return money_of_cents_string("28861") - elif match_arg_159.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_159.value - return money_of_cents_string("34829") - else: - return (money_of_cents_string("40796") + - (money_of_cents_string("5968") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_158.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_158.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_160 = situation_familiale_calcul_apl_4 - if match_arg_160.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_160.value - return money_of_cents_string("25728") - elif match_arg_160.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_160.value - return money_of_cents_string("30987") - else: - return (money_of_cents_string("36244") + - (money_of_cents_string("5258") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_158.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_158.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_161 = situation_familiale_calcul_apl_4 - if match_arg_161.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_161.value - return money_of_cents_string("24027") - elif match_arg_161.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_161.value - return money_of_cents_string("28824") - else: - return (money_of_cents_string("33623") + - (money_of_cents_string("4799") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_36(_:Unit): - match_arg_162 = type_pret - if match_arg_162.code == TypePret_Code.D331_32: - _ = match_arg_162.value - temp_calcul_plafond_mensualite_d832_10_3_37 = False - elif match_arg_162.code == TypePret_Code.D331_63_64: - _ = match_arg_162.value - temp_calcul_plafond_mensualite_d832_10_3_37 = True - elif match_arg_162.code == TypePret_Code.D331_59_8: - _ = match_arg_162.value - temp_calcul_plafond_mensualite_d832_10_3_37 = False - elif match_arg_162.code == TypePret_Code.D331_76_1: - _ = match_arg_162.value - temp_calcul_plafond_mensualite_d832_10_3_37 = False - elif match_arg_162.code == TypePret_Code.Autre: - _ = match_arg_162.value - temp_calcul_plafond_mensualite_d832_10_3_37 = False - match_arg_163 = anciennete_logement - if match_arg_163.code == NeufOuAncien_Code.Neuf: - _ = match_arg_163.value - temp_calcul_plafond_mensualite_d832_10_3_38 = True - elif match_arg_163.code == NeufOuAncien_Code.Ancien: - _ = match_arg_163.value - temp_calcul_plafond_mensualite_d832_10_3_38 = False - if ((param_13 >= date_of_numbers(2011,12,31)) and - ((param_13 < date_of_numbers(2012,12,31)) and - (temp_calcul_plafond_mensualite_d832_10_3_38 and - temp_calcul_plafond_mensualite_d832_10_3_37))): - match_arg_164 = zone_2 - if match_arg_164.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_164.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_165 = situation_familiale_calcul_apl_4 - if match_arg_165.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_165.value - return money_of_cents_string("35855") - elif match_arg_165.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_165.value - return money_of_cents_string("43255") - else: - return (money_of_cents_string("50655") + - (money_of_cents_string("7399") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_164.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_164.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_166 = situation_familiale_calcul_apl_4 - if match_arg_166.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_166.value - return money_of_cents_string("31998") - elif match_arg_166.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_166.value - return money_of_cents_string("38512") - else: - return (money_of_cents_string("45029") + - (money_of_cents_string("6515") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_164.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_164.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_167 = situation_familiale_calcul_apl_4 - if match_arg_167.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_167.value - return money_of_cents_string("29872") - elif match_arg_167.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_167.value - return money_of_cents_string("35819") - else: - return (money_of_cents_string("41767") + - (money_of_cents_string("5947") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_39(_:Unit): - match_arg_168 = type_pret - if match_arg_168.code == TypePret_Code.D331_32: - _ = match_arg_168.value - temp_calcul_plafond_mensualite_d832_10_3_40 = False - elif match_arg_168.code == TypePret_Code.D331_63_64: - _ = match_arg_168.value - temp_calcul_plafond_mensualite_d832_10_3_40 = True - elif match_arg_168.code == TypePret_Code.D331_59_8: - _ = match_arg_168.value - temp_calcul_plafond_mensualite_d832_10_3_40 = False - elif match_arg_168.code == TypePret_Code.D331_76_1: - _ = match_arg_168.value - temp_calcul_plafond_mensualite_d832_10_3_40 = False - elif match_arg_168.code == TypePret_Code.Autre: - _ = match_arg_168.value - temp_calcul_plafond_mensualite_d832_10_3_40 = False - match_arg_169 = anciennete_logement - if match_arg_169.code == NeufOuAncien_Code.Neuf: - _ = match_arg_169.value - temp_calcul_plafond_mensualite_d832_10_3_41 = False - elif match_arg_169.code == NeufOuAncien_Code.Ancien: - _ = match_arg_169.value - temp_calcul_plafond_mensualite_d832_10_3_41 = True - if ((param_13 >= date_of_numbers(2010,12,31)) and - ((param_13 < date_of_numbers(2011,12,31)) and - (temp_calcul_plafond_mensualite_d832_10_3_41 and - temp_calcul_plafond_mensualite_d832_10_3_40))): - match_arg_170 = zone_2 - if match_arg_170.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_170.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_171 = situation_familiale_calcul_apl_4 - if match_arg_171.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_171.value - return money_of_cents_string("28575") - elif match_arg_171.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_171.value - return money_of_cents_string("34484") - else: - return (money_of_cents_string("40392") + - (money_of_cents_string("5909") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_170.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_170.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_172 = situation_familiale_calcul_apl_4 - if match_arg_172.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_172.value - return money_of_cents_string("25473") - elif match_arg_172.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_172.value - return money_of_cents_string("30680") - else: - return (money_of_cents_string("35885") + - (money_of_cents_string("5206") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_170.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_170.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_173 = situation_familiale_calcul_apl_4 - if match_arg_173.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_173.value - return money_of_cents_string("23789") - elif match_arg_173.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_173.value - return money_of_cents_string("28539") - else: - return (money_of_cents_string("33290") + - (money_of_cents_string("4751") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_42(_:Unit): - match_arg_174 = type_pret - if match_arg_174.code == TypePret_Code.D331_32: - _ = match_arg_174.value - temp_calcul_plafond_mensualite_d832_10_3_43 = False - elif match_arg_174.code == TypePret_Code.D331_63_64: - _ = match_arg_174.value - temp_calcul_plafond_mensualite_d832_10_3_43 = True - elif match_arg_174.code == TypePret_Code.D331_59_8: - _ = match_arg_174.value - temp_calcul_plafond_mensualite_d832_10_3_43 = False - elif match_arg_174.code == TypePret_Code.D331_76_1: - _ = match_arg_174.value - temp_calcul_plafond_mensualite_d832_10_3_43 = False - elif match_arg_174.code == TypePret_Code.Autre: - _ = match_arg_174.value - temp_calcul_plafond_mensualite_d832_10_3_43 = False - match_arg_175 = anciennete_logement - if match_arg_175.code == NeufOuAncien_Code.Neuf: - _ = match_arg_175.value - temp_calcul_plafond_mensualite_d832_10_3_44 = True - elif match_arg_175.code == NeufOuAncien_Code.Ancien: - _ = match_arg_175.value - temp_calcul_plafond_mensualite_d832_10_3_44 = False - if ((param_13 >= date_of_numbers(2010,12,31)) and - ((param_13 < date_of_numbers(2011,12,31)) and - (temp_calcul_plafond_mensualite_d832_10_3_44 and - temp_calcul_plafond_mensualite_d832_10_3_43))): - match_arg_176 = zone_2 - if match_arg_176.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_176.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_177 = situation_familiale_calcul_apl_4 - if match_arg_177.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_177.value - return money_of_cents_string("35500") - elif match_arg_177.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_177.value - return money_of_cents_string("42827") - else: - return (money_of_cents_string("50153") + - (money_of_cents_string("7326") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_176.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_176.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_178 = situation_familiale_calcul_apl_4 - if match_arg_178.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_178.value - return money_of_cents_string("31681") - elif match_arg_178.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_178.value - return money_of_cents_string("38131") - else: - return (money_of_cents_string("44583") + - (money_of_cents_string("6450") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_176.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_176.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_179 = situation_familiale_calcul_apl_4 - if match_arg_179.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_179.value - return money_of_cents_string("29576") - elif match_arg_179.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_179.value - return money_of_cents_string("35464") - else: - return (money_of_cents_string("41353") + - (money_of_cents_string("5888") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_45(_:Unit): - match_arg_180 = type_pret - if match_arg_180.code == TypePret_Code.D331_32: - _ = match_arg_180.value - temp_calcul_plafond_mensualite_d832_10_3_46 = False - elif match_arg_180.code == TypePret_Code.D331_63_64: - _ = match_arg_180.value - temp_calcul_plafond_mensualite_d832_10_3_46 = True - elif match_arg_180.code == TypePret_Code.D331_59_8: - _ = match_arg_180.value - temp_calcul_plafond_mensualite_d832_10_3_46 = False - elif match_arg_180.code == TypePret_Code.D331_76_1: - _ = match_arg_180.value - temp_calcul_plafond_mensualite_d832_10_3_46 = False - elif match_arg_180.code == TypePret_Code.Autre: - _ = match_arg_180.value - temp_calcul_plafond_mensualite_d832_10_3_46 = False - match_arg_181 = anciennete_logement - if match_arg_181.code == NeufOuAncien_Code.Neuf: - _ = match_arg_181.value - temp_calcul_plafond_mensualite_d832_10_3_47 = False - elif match_arg_181.code == NeufOuAncien_Code.Ancien: - _ = match_arg_181.value - temp_calcul_plafond_mensualite_d832_10_3_47 = True - if ((param_13 >= date_of_numbers(2009,12,31)) and - ((param_13 < date_of_numbers(2010,12,31)) and - (temp_calcul_plafond_mensualite_d832_10_3_47 and - temp_calcul_plafond_mensualite_d832_10_3_46))): - match_arg_182 = zone_2 - if match_arg_182.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_182.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_183 = situation_familiale_calcul_apl_4 - if match_arg_183.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_183.value - return money_of_cents_string("28264") - elif match_arg_183.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_183.value - return money_of_cents_string("34109") - else: - return (money_of_cents_string("39953") + - (money_of_cents_string("5845") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_182.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_182.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_184 = situation_familiale_calcul_apl_4 - if match_arg_184.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_184.value - return money_of_cents_string("25196") - elif match_arg_184.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_184.value - return money_of_cents_string("30346") - else: - return (money_of_cents_string("35495") + - (money_of_cents_string("5149") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_182.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_182.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_185 = situation_familiale_calcul_apl_4 - if match_arg_185.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_185.value - return money_of_cents_string("23530") - elif match_arg_185.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_185.value - return money_of_cents_string("28228") - else: - return (money_of_cents_string("32928") + - (money_of_cents_string("4699") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_48(_:Unit): - match_arg_186 = type_pret - if match_arg_186.code == TypePret_Code.D331_32: - _ = match_arg_186.value - temp_calcul_plafond_mensualite_d832_10_3_49 = False - elif match_arg_186.code == TypePret_Code.D331_63_64: - _ = match_arg_186.value - temp_calcul_plafond_mensualite_d832_10_3_49 = True - elif match_arg_186.code == TypePret_Code.D331_59_8: - _ = match_arg_186.value - temp_calcul_plafond_mensualite_d832_10_3_49 = False - elif match_arg_186.code == TypePret_Code.D331_76_1: - _ = match_arg_186.value - temp_calcul_plafond_mensualite_d832_10_3_49 = False - elif match_arg_186.code == TypePret_Code.Autre: - _ = match_arg_186.value - temp_calcul_plafond_mensualite_d832_10_3_49 = False - match_arg_187 = anciennete_logement - if match_arg_187.code == NeufOuAncien_Code.Neuf: - _ = match_arg_187.value - temp_calcul_plafond_mensualite_d832_10_3_50 = True - elif match_arg_187.code == NeufOuAncien_Code.Ancien: - _ = match_arg_187.value - temp_calcul_plafond_mensualite_d832_10_3_50 = False - if ((param_13 >= date_of_numbers(2009,12,31)) and - ((param_13 < date_of_numbers(2010,12,31)) and - (temp_calcul_plafond_mensualite_d832_10_3_50 and - temp_calcul_plafond_mensualite_d832_10_3_49))): - match_arg_188 = zone_2 - if match_arg_188.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_188.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_189 = situation_familiale_calcul_apl_4 - if match_arg_189.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_189.value - return money_of_cents_string("35114") - elif match_arg_189.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_189.value - return money_of_cents_string("42361") - else: - return (money_of_cents_string("49607") + - (money_of_cents_string("7246") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_188.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_188.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_190 = situation_familiale_calcul_apl_4 - if match_arg_190.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_190.value - return money_of_cents_string("31336") - elif match_arg_190.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_190.value - return money_of_cents_string("37716") - else: - return (money_of_cents_string("44098") + - (money_of_cents_string("6380") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_188.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_188.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_191 = situation_familiale_calcul_apl_4 - if match_arg_191.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_191.value - return money_of_cents_string("29254") - elif match_arg_191.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_191.value - return money_of_cents_string("35078") - else: - return (money_of_cents_string("40903") + - (money_of_cents_string("5824") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_51(_:Unit): - match_arg_192 = type_pret - if match_arg_192.code == TypePret_Code.D331_32: - _ = match_arg_192.value - temp_calcul_plafond_mensualite_d832_10_3_52 = False - elif match_arg_192.code == TypePret_Code.D331_63_64: - _ = match_arg_192.value - temp_calcul_plafond_mensualite_d832_10_3_52 = True - elif match_arg_192.code == TypePret_Code.D331_59_8: - _ = match_arg_192.value - temp_calcul_plafond_mensualite_d832_10_3_52 = False - elif match_arg_192.code == TypePret_Code.D331_76_1: - _ = match_arg_192.value - temp_calcul_plafond_mensualite_d832_10_3_52 = False - elif match_arg_192.code == TypePret_Code.Autre: - _ = match_arg_192.value - temp_calcul_plafond_mensualite_d832_10_3_52 = False - match_arg_193 = anciennete_logement - if match_arg_193.code == NeufOuAncien_Code.Neuf: - _ = match_arg_193.value - temp_calcul_plafond_mensualite_d832_10_3_53 = False - elif match_arg_193.code == NeufOuAncien_Code.Ancien: - _ = match_arg_193.value - temp_calcul_plafond_mensualite_d832_10_3_53 = True - if ((param_13 >= date_of_numbers(2008,12,31)) and - ((param_13 < date_of_numbers(2009,12,31)) and - (temp_calcul_plafond_mensualite_d832_10_3_53 and - temp_calcul_plafond_mensualite_d832_10_3_52))): - match_arg_194 = zone_2 - if match_arg_194.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_194.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_195 = situation_familiale_calcul_apl_4 - if match_arg_195.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_195.value - return money_of_cents_string("28174") - elif match_arg_195.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_195.value - return money_of_cents_string("34000") - else: - return (money_of_cents_string("39826") + - (money_of_cents_string("5826") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_194.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_194.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_196 = situation_familiale_calcul_apl_4 - if match_arg_196.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_196.value - return money_of_cents_string("25116") - elif match_arg_196.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_196.value - return money_of_cents_string("30249") - else: - return (money_of_cents_string("35382") + - (money_of_cents_string("5133") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_194.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_194.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_197 = situation_familiale_calcul_apl_4 - if match_arg_197.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_197.value - return money_of_cents_string("23455") - elif match_arg_197.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_197.value - return money_of_cents_string("28138") - else: - return (money_of_cents_string("32823") + - (money_of_cents_string("4684") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_54(_:Unit): - match_arg_198 = type_pret - if match_arg_198.code == TypePret_Code.D331_32: - _ = match_arg_198.value - temp_calcul_plafond_mensualite_d832_10_3_55 = False - elif match_arg_198.code == TypePret_Code.D331_63_64: - _ = match_arg_198.value - temp_calcul_plafond_mensualite_d832_10_3_55 = True - elif match_arg_198.code == TypePret_Code.D331_59_8: - _ = match_arg_198.value - temp_calcul_plafond_mensualite_d832_10_3_55 = False - elif match_arg_198.code == TypePret_Code.D331_76_1: - _ = match_arg_198.value - temp_calcul_plafond_mensualite_d832_10_3_55 = False - elif match_arg_198.code == TypePret_Code.Autre: - _ = match_arg_198.value - temp_calcul_plafond_mensualite_d832_10_3_55 = False - match_arg_199 = anciennete_logement - if match_arg_199.code == NeufOuAncien_Code.Neuf: - _ = match_arg_199.value - temp_calcul_plafond_mensualite_d832_10_3_56 = True - elif match_arg_199.code == NeufOuAncien_Code.Ancien: - _ = match_arg_199.value - temp_calcul_plafond_mensualite_d832_10_3_56 = False - if ((param_13 >= date_of_numbers(2008,12,31)) and - ((param_13 < date_of_numbers(2009,12,31)) and - (temp_calcul_plafond_mensualite_d832_10_3_56 and - temp_calcul_plafond_mensualite_d832_10_3_55))): - match_arg_200 = zone_2 - if match_arg_200.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_200.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_201 = situation_familiale_calcul_apl_4 - if match_arg_201.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_201.value - return money_of_cents_string("35002") - elif match_arg_201.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_201.value - return money_of_cents_string("42226") - else: - return (money_of_cents_string("49449") + - (money_of_cents_string("7223") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_200.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_200.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_202 = situation_familiale_calcul_apl_4 - if match_arg_202.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_202.value - return money_of_cents_string("31236") - elif match_arg_202.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_202.value - return money_of_cents_string("37596") - else: - return (money_of_cents_string("43957") + - (money_of_cents_string("6360") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_200.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_200.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_203 = situation_familiale_calcul_apl_4 - if match_arg_203.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_203.value - return money_of_cents_string("29161") - elif match_arg_203.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_203.value - return money_of_cents_string("34966") - else: - return (money_of_cents_string("40773") + - (money_of_cents_string("5805") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_57(_:Unit): - match_arg_204 = type_pret - if match_arg_204.code == TypePret_Code.D331_32: - _ = match_arg_204.value - temp_calcul_plafond_mensualite_d832_10_3_58 = False - elif match_arg_204.code == TypePret_Code.D331_63_64: - _ = match_arg_204.value - temp_calcul_plafond_mensualite_d832_10_3_58 = True - elif match_arg_204.code == TypePret_Code.D331_59_8: - _ = match_arg_204.value - temp_calcul_plafond_mensualite_d832_10_3_58 = False - elif match_arg_204.code == TypePret_Code.D331_76_1: - _ = match_arg_204.value - temp_calcul_plafond_mensualite_d832_10_3_58 = False - elif match_arg_204.code == TypePret_Code.Autre: - _ = match_arg_204.value - temp_calcul_plafond_mensualite_d832_10_3_58 = False - match_arg_205 = anciennete_logement - if match_arg_205.code == NeufOuAncien_Code.Neuf: - _ = match_arg_205.value - temp_calcul_plafond_mensualite_d832_10_3_59 = False - elif match_arg_205.code == NeufOuAncien_Code.Ancien: - _ = match_arg_205.value - temp_calcul_plafond_mensualite_d832_10_3_59 = True - if ((param_13 >= date_of_numbers(2007,12,31)) and - ((param_13 < date_of_numbers(2008,12,31)) and - (temp_calcul_plafond_mensualite_d832_10_3_59 and - temp_calcul_plafond_mensualite_d832_10_3_58))): - match_arg_206 = zone_2 - if match_arg_206.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_206.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_207 = situation_familiale_calcul_apl_4 - if match_arg_207.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_207.value - return money_of_cents_string("27367") - elif match_arg_207.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_207.value - return money_of_cents_string("33026") - else: - return (money_of_cents_string("38685") + - (money_of_cents_string("5659") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_206.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_206.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_208 = situation_familiale_calcul_apl_4 - if match_arg_208.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_208.value - return money_of_cents_string("24396") - elif match_arg_208.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_208.value - return money_of_cents_string("29382") - else: - return (money_of_cents_string("34368") + - (money_of_cents_string("4986") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_206.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_206.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_209 = situation_familiale_calcul_apl_4 - if match_arg_209.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_209.value - return money_of_cents_string("22783") - elif match_arg_209.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_209.value - return money_of_cents_string("27332") - else: - return (money_of_cents_string("31882") + - (money_of_cents_string("4550") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_60(_:Unit): - match_arg_210 = type_pret - if match_arg_210.code == TypePret_Code.D331_32: - _ = match_arg_210.value - temp_calcul_plafond_mensualite_d832_10_3_61 = False - elif match_arg_210.code == TypePret_Code.D331_63_64: - _ = match_arg_210.value - temp_calcul_plafond_mensualite_d832_10_3_61 = True - elif match_arg_210.code == TypePret_Code.D331_59_8: - _ = match_arg_210.value - temp_calcul_plafond_mensualite_d832_10_3_61 = False - elif match_arg_210.code == TypePret_Code.D331_76_1: - _ = match_arg_210.value - temp_calcul_plafond_mensualite_d832_10_3_61 = False - elif match_arg_210.code == TypePret_Code.Autre: - _ = match_arg_210.value - temp_calcul_plafond_mensualite_d832_10_3_61 = False - match_arg_211 = anciennete_logement - if match_arg_211.code == NeufOuAncien_Code.Neuf: - _ = match_arg_211.value - temp_calcul_plafond_mensualite_d832_10_3_62 = True - elif match_arg_211.code == NeufOuAncien_Code.Ancien: - _ = match_arg_211.value - temp_calcul_plafond_mensualite_d832_10_3_62 = False - if ((param_13 >= date_of_numbers(2007,12,31)) and - ((param_13 < date_of_numbers(2008,12,31)) and - (temp_calcul_plafond_mensualite_d832_10_3_62 and - temp_calcul_plafond_mensualite_d832_10_3_61))): - match_arg_212 = zone_2 - if match_arg_212.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_212.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_213 = situation_familiale_calcul_apl_4 - if match_arg_213.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_213.value - return money_of_cents_string("33999") - elif match_arg_213.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_213.value - return money_of_cents_string("41016") - else: - return (money_of_cents_string("48032") + - (money_of_cents_string("7016") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_212.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_212.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_214 = situation_familiale_calcul_apl_4 - if match_arg_214.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_214.value - return money_of_cents_string("30341") - elif match_arg_214.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_214.value - return money_of_cents_string("36519") - else: - return (money_of_cents_string("42697") + - (money_of_cents_string("6178") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_212.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_212.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_215 = situation_familiale_calcul_apl_4 - if match_arg_215.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_215.value - return money_of_cents_string("28325") - elif match_arg_215.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_215.value - return money_of_cents_string("33964") - else: - return (money_of_cents_string("39605") + - (money_of_cents_string("5639") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_63(_:Unit): - match_arg_216 = type_pret - if match_arg_216.code == TypePret_Code.D331_32: - _ = match_arg_216.value - temp_calcul_plafond_mensualite_d832_10_3_64 = False - elif match_arg_216.code == TypePret_Code.D331_63_64: - _ = match_arg_216.value - temp_calcul_plafond_mensualite_d832_10_3_64 = True - elif match_arg_216.code == TypePret_Code.D331_59_8: - _ = match_arg_216.value - temp_calcul_plafond_mensualite_d832_10_3_64 = False - elif match_arg_216.code == TypePret_Code.D331_76_1: - _ = match_arg_216.value - temp_calcul_plafond_mensualite_d832_10_3_64 = False - elif match_arg_216.code == TypePret_Code.Autre: - _ = match_arg_216.value - temp_calcul_plafond_mensualite_d832_10_3_64 = False - match_arg_217 = anciennete_logement - if match_arg_217.code == NeufOuAncien_Code.Neuf: - _ = match_arg_217.value - temp_calcul_plafond_mensualite_d832_10_3_65 = False - elif match_arg_217.code == NeufOuAncien_Code.Ancien: - _ = match_arg_217.value - temp_calcul_plafond_mensualite_d832_10_3_65 = True - if ((param_13 >= date_of_numbers(2006,12,31)) and - ((param_13 < date_of_numbers(2007,12,31)) and - (temp_calcul_plafond_mensualite_d832_10_3_65 and - temp_calcul_plafond_mensualite_d832_10_3_64))): - match_arg_218 = zone_2 - if match_arg_218.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_218.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_219 = situation_familiale_calcul_apl_4 - if match_arg_219.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_219.value - return money_of_cents_string("26632") - elif match_arg_219.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_219.value - return money_of_cents_string("32139") - else: - return (money_of_cents_string("37646") + - (money_of_cents_string("5507") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_218.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_218.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_220 = situation_familiale_calcul_apl_4 - if match_arg_220.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_220.value - return money_of_cents_string("23741") - elif match_arg_220.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_220.value - return money_of_cents_string("28593") - else: - return (money_of_cents_string("33445") + - (money_of_cents_string("4852") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_218.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_218.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_221 = situation_familiale_calcul_apl_4 - if match_arg_221.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_221.value - return money_of_cents_string("22171") - elif match_arg_221.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_221.value - return money_of_cents_string("36598") - else: - return (money_of_cents_string("31026") + - (money_of_cents_string("4428") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_66(_:Unit): - match_arg_222 = type_pret - if match_arg_222.code == TypePret_Code.D331_32: - _ = match_arg_222.value - temp_calcul_plafond_mensualite_d832_10_3_67 = False - elif match_arg_222.code == TypePret_Code.D331_63_64: - _ = match_arg_222.value - temp_calcul_plafond_mensualite_d832_10_3_67 = True - elif match_arg_222.code == TypePret_Code.D331_59_8: - _ = match_arg_222.value - temp_calcul_plafond_mensualite_d832_10_3_67 = False - elif match_arg_222.code == TypePret_Code.D331_76_1: - _ = match_arg_222.value - temp_calcul_plafond_mensualite_d832_10_3_67 = False - elif match_arg_222.code == TypePret_Code.Autre: - _ = match_arg_222.value - temp_calcul_plafond_mensualite_d832_10_3_67 = False - match_arg_223 = anciennete_logement - if match_arg_223.code == NeufOuAncien_Code.Neuf: - _ = match_arg_223.value - temp_calcul_plafond_mensualite_d832_10_3_68 = True - elif match_arg_223.code == NeufOuAncien_Code.Ancien: - _ = match_arg_223.value - temp_calcul_plafond_mensualite_d832_10_3_68 = False - if ((param_13 >= date_of_numbers(2006,12,31)) and - ((param_13 < date_of_numbers(2007,12,31)) and - (temp_calcul_plafond_mensualite_d832_10_3_68 and - temp_calcul_plafond_mensualite_d832_10_3_67))): - match_arg_224 = zone_2 - if match_arg_224.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_224.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_225 = situation_familiale_calcul_apl_4 - if match_arg_225.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_225.value - return money_of_cents_string("33086") - elif match_arg_225.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_225.value - return money_of_cents_string("39914") - else: - return (money_of_cents_string("46742") + - (money_of_cents_string("6828") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_224.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_224.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_226 = situation_familiale_calcul_apl_4 - if match_arg_226.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_226.value - return money_of_cents_string("29526") - elif match_arg_226.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_226.value - return money_of_cents_string("35538") - else: - return (money_of_cents_string("41550") + - (money_of_cents_string("6012") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_224.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_224.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_227 = situation_familiale_calcul_apl_4 - if match_arg_227.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_227.value - return money_of_cents_string("27564") - elif match_arg_227.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_227.value - return money_of_cents_string("33052") - else: - return (money_of_cents_string("38541") + - (money_of_cents_string("5488") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_69(_:Unit): - match_arg_228 = type_pret - if match_arg_228.code == TypePret_Code.D331_32: - _ = match_arg_228.value - temp_calcul_plafond_mensualite_d832_10_3_70 = False - elif match_arg_228.code == TypePret_Code.D331_63_64: - _ = match_arg_228.value - temp_calcul_plafond_mensualite_d832_10_3_70 = True - elif match_arg_228.code == TypePret_Code.D331_59_8: - _ = match_arg_228.value - temp_calcul_plafond_mensualite_d832_10_3_70 = False - elif match_arg_228.code == TypePret_Code.D331_76_1: - _ = match_arg_228.value - temp_calcul_plafond_mensualite_d832_10_3_70 = False - elif match_arg_228.code == TypePret_Code.Autre: - _ = match_arg_228.value - temp_calcul_plafond_mensualite_d832_10_3_70 = False - match_arg_229 = anciennete_logement - if match_arg_229.code == NeufOuAncien_Code.Neuf: - _ = match_arg_229.value - temp_calcul_plafond_mensualite_d832_10_3_71 = False - elif match_arg_229.code == NeufOuAncien_Code.Ancien: - _ = match_arg_229.value - temp_calcul_plafond_mensualite_d832_10_3_71 = True - if ((param_13 >= date_of_numbers(2005,8,31)) and - ((param_13 < date_of_numbers(2006,12,31)) and - (temp_calcul_plafond_mensualite_d832_10_3_71 and - temp_calcul_plafond_mensualite_d832_10_3_70))): - match_arg_230 = zone_2 - if match_arg_230.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_230.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_231 = situation_familiale_calcul_apl_4 - if match_arg_231.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_231.value - return money_of_cents_string("25907") - elif match_arg_231.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_231.value - return money_of_cents_string("31264") - else: - return (money_of_cents_string("36621") + - (money_of_cents_string("5357") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_230.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_230.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_232 = situation_familiale_calcul_apl_4 - if match_arg_232.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_232.value - return money_of_cents_string("23094") - elif match_arg_232.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_232.value - return money_of_cents_string("27814") - else: - return (money_of_cents_string("32534") + - (money_of_cents_string("4720") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_230.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_230.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_233 = situation_familiale_calcul_apl_4 - if match_arg_233.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_233.value - return money_of_cents_string("21567") - elif match_arg_233.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_233.value - return money_of_cents_string("25874") - else: - return (money_of_cents_string("30181") + - (money_of_cents_string("4307") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_72(_:Unit): - match_arg_234 = type_pret - if match_arg_234.code == TypePret_Code.D331_32: - _ = match_arg_234.value - temp_calcul_plafond_mensualite_d832_10_3_73 = False - elif match_arg_234.code == TypePret_Code.D331_63_64: - _ = match_arg_234.value - temp_calcul_plafond_mensualite_d832_10_3_73 = True - elif match_arg_234.code == TypePret_Code.D331_59_8: - _ = match_arg_234.value - temp_calcul_plafond_mensualite_d832_10_3_73 = False - elif match_arg_234.code == TypePret_Code.D331_76_1: - _ = match_arg_234.value - temp_calcul_plafond_mensualite_d832_10_3_73 = False - elif match_arg_234.code == TypePret_Code.Autre: - _ = match_arg_234.value - temp_calcul_plafond_mensualite_d832_10_3_73 = False - match_arg_235 = anciennete_logement - if match_arg_235.code == NeufOuAncien_Code.Neuf: - _ = match_arg_235.value - temp_calcul_plafond_mensualite_d832_10_3_74 = True - elif match_arg_235.code == NeufOuAncien_Code.Ancien: - _ = match_arg_235.value - temp_calcul_plafond_mensualite_d832_10_3_74 = False - if ((param_13 >= date_of_numbers(2005,8,31)) and - ((param_13 < date_of_numbers(2006,12,31)) and - (temp_calcul_plafond_mensualite_d832_10_3_74 and - temp_calcul_plafond_mensualite_d832_10_3_73))): - match_arg_236 = zone_2 - if match_arg_236.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_236.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_237 = situation_familiale_calcul_apl_4 - if match_arg_237.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_237.value - return money_of_cents_string("32185") - elif match_arg_237.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_237.value - return money_of_cents_string("38827") - else: - return (money_of_cents_string("45469") + - (money_of_cents_string("6642") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_236.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_236.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_238 = situation_familiale_calcul_apl_4 - if match_arg_238.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_238.value - return money_of_cents_string("28722") - elif match_arg_238.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_238.value - return money_of_cents_string("34570") - else: - return (money_of_cents_string("40418") + - (money_of_cents_string("5848") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_236.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_236.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_239 = situation_familiale_calcul_apl_4 - if match_arg_239.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_239.value - return money_of_cents_string("26813") - elif match_arg_239.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_239.value - return money_of_cents_string("32152") - else: - return (money_of_cents_string("37491") + - (money_of_cents_string("5339") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_75(_:Unit): - match_arg_240 = type_pret - if match_arg_240.code == TypePret_Code.D331_32: - _ = match_arg_240.value - temp_calcul_plafond_mensualite_d832_10_3_76 = False - elif match_arg_240.code == TypePret_Code.D331_63_64: - _ = match_arg_240.value - temp_calcul_plafond_mensualite_d832_10_3_76 = True - elif match_arg_240.code == TypePret_Code.D331_59_8: - _ = match_arg_240.value - temp_calcul_plafond_mensualite_d832_10_3_76 = False - elif match_arg_240.code == TypePret_Code.D331_76_1: - _ = match_arg_240.value - temp_calcul_plafond_mensualite_d832_10_3_76 = False - elif match_arg_240.code == TypePret_Code.Autre: - _ = match_arg_240.value - temp_calcul_plafond_mensualite_d832_10_3_76 = False - match_arg_241 = anciennete_logement - if match_arg_241.code == NeufOuAncien_Code.Neuf: - _ = match_arg_241.value - temp_calcul_plafond_mensualite_d832_10_3_77 = False - elif match_arg_241.code == NeufOuAncien_Code.Ancien: - _ = match_arg_241.value - temp_calcul_plafond_mensualite_d832_10_3_77 = True - if ((param_13 >= date_of_numbers(2003,6,30)) and - ((param_13 < date_of_numbers(2005,8,31)) and - (temp_calcul_plafond_mensualite_d832_10_3_77 and - temp_calcul_plafond_mensualite_d832_10_3_76))): - match_arg_242 = zone_2 - if match_arg_242.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_242.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_243 = situation_familiale_calcul_apl_4 - if match_arg_243.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_243.value - return money_of_cents_string("25449") - elif match_arg_243.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_243.value - return money_of_cents_string("30711") - else: - return (money_of_cents_string("35973") + - (money_of_cents_string("5262") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_242.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_242.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_244 = situation_familiale_calcul_apl_4 - if match_arg_244.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_244.value - return money_of_cents_string("22686") - elif match_arg_244.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_244.value - return money_of_cents_string("27323") - else: - return (money_of_cents_string("31960") + - (money_of_cents_string("4637") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_242.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_242.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_245 = situation_familiale_calcul_apl_4 - if match_arg_245.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_245.value - return money_of_cents_string("21186") - elif match_arg_245.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_245.value - return money_of_cents_string("25417") - else: - return (money_of_cents_string("29648") + - (money_of_cents_string("4231") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_78(_:Unit): - match_arg_246 = type_pret - if match_arg_246.code == TypePret_Code.D331_32: - _ = match_arg_246.value - temp_calcul_plafond_mensualite_d832_10_3_79 = False - elif match_arg_246.code == TypePret_Code.D331_63_64: - _ = match_arg_246.value - temp_calcul_plafond_mensualite_d832_10_3_79 = True - elif match_arg_246.code == TypePret_Code.D331_59_8: - _ = match_arg_246.value - temp_calcul_plafond_mensualite_d832_10_3_79 = False - elif match_arg_246.code == TypePret_Code.D331_76_1: - _ = match_arg_246.value - temp_calcul_plafond_mensualite_d832_10_3_79 = False - elif match_arg_246.code == TypePret_Code.Autre: - _ = match_arg_246.value - temp_calcul_plafond_mensualite_d832_10_3_79 = False - match_arg_247 = anciennete_logement - if match_arg_247.code == NeufOuAncien_Code.Neuf: - _ = match_arg_247.value - temp_calcul_plafond_mensualite_d832_10_3_80 = True - elif match_arg_247.code == NeufOuAncien_Code.Ancien: - _ = match_arg_247.value - temp_calcul_plafond_mensualite_d832_10_3_80 = False - if ((param_13 >= date_of_numbers(2003,6,30)) and - ((param_13 < date_of_numbers(2005,8,31)) and - (temp_calcul_plafond_mensualite_d832_10_3_80 and - temp_calcul_plafond_mensualite_d832_10_3_79))): - match_arg_248 = zone_2 - if match_arg_248.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_248.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_249 = situation_familiale_calcul_apl_4 - if match_arg_249.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_249.value - return money_of_cents_string("31616") - elif match_arg_249.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_249.value - return money_of_cents_string("38141") - else: - return (money_of_cents_string("44666") + - (money_of_cents_string("6525") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_248.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_248.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_250 = situation_familiale_calcul_apl_4 - if match_arg_250.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_250.value - return money_of_cents_string("28214") - elif match_arg_250.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_250.value - return money_of_cents_string("33959") - else: - return (money_of_cents_string("39704") + - (money_of_cents_string("5745") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_248.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_248.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_251 = situation_familiale_calcul_apl_4 - if match_arg_251.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_251.value - return money_of_cents_string("26339") - elif match_arg_251.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_251.value - return money_of_cents_string("31584") - else: - return (money_of_cents_string("36829") + - (money_of_cents_string("5245") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_81(_:Unit): - match_arg_252 = type_pret - if match_arg_252.code == TypePret_Code.D331_32: - _ = match_arg_252.value - temp_calcul_plafond_mensualite_d832_10_3_82 = False - elif match_arg_252.code == TypePret_Code.D331_63_64: - _ = match_arg_252.value - temp_calcul_plafond_mensualite_d832_10_3_82 = True - elif match_arg_252.code == TypePret_Code.D331_59_8: - _ = match_arg_252.value - temp_calcul_plafond_mensualite_d832_10_3_82 = False - elif match_arg_252.code == TypePret_Code.D331_76_1: - _ = match_arg_252.value - temp_calcul_plafond_mensualite_d832_10_3_82 = False - elif match_arg_252.code == TypePret_Code.Autre: - _ = match_arg_252.value - temp_calcul_plafond_mensualite_d832_10_3_82 = False - match_arg_253 = anciennete_logement - if match_arg_253.code == NeufOuAncien_Code.Neuf: - _ = match_arg_253.value - temp_calcul_plafond_mensualite_d832_10_3_83 = False - elif match_arg_253.code == NeufOuAncien_Code.Ancien: - _ = match_arg_253.value - temp_calcul_plafond_mensualite_d832_10_3_83 = True - if ((param_13 >= date_of_numbers(2002,6,30)) and - ((param_13 < date_of_numbers(2003,6,30)) and - (temp_calcul_plafond_mensualite_d832_10_3_83 and - temp_calcul_plafond_mensualite_d832_10_3_82))): - match_arg_254 = zone_2 - if match_arg_254.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_254.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_255 = situation_familiale_calcul_apl_4 - if match_arg_255.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_255.value - return money_of_cents_string("25147") - elif match_arg_255.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_255.value - return money_of_cents_string("30347") - else: - return (money_of_cents_string("35547") + - (money_of_cents_string("5200") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_254.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_254.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_256 = situation_familiale_calcul_apl_4 - if match_arg_256.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_256.value - return money_of_cents_string("22417") - elif match_arg_256.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_256.value - return money_of_cents_string("26999") - else: - return (money_of_cents_string("31581") + - (money_of_cents_string("4582") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_254.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_254.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_257 = situation_familiale_calcul_apl_4 - if match_arg_257.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_257.value - return money_of_cents_string("20935") - elif match_arg_257.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_257.value - return money_of_cents_string("25116") - else: - return (money_of_cents_string("29297") + - (money_of_cents_string("4181") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_84(_:Unit): - match_arg_258 = type_pret - if match_arg_258.code == TypePret_Code.D331_32: - _ = match_arg_258.value - temp_calcul_plafond_mensualite_d832_10_3_85 = False - elif match_arg_258.code == TypePret_Code.D331_63_64: - _ = match_arg_258.value - temp_calcul_plafond_mensualite_d832_10_3_85 = True - elif match_arg_258.code == TypePret_Code.D331_59_8: - _ = match_arg_258.value - temp_calcul_plafond_mensualite_d832_10_3_85 = False - elif match_arg_258.code == TypePret_Code.D331_76_1: - _ = match_arg_258.value - temp_calcul_plafond_mensualite_d832_10_3_85 = False - elif match_arg_258.code == TypePret_Code.Autre: - _ = match_arg_258.value - temp_calcul_plafond_mensualite_d832_10_3_85 = False - match_arg_259 = anciennete_logement - if match_arg_259.code == NeufOuAncien_Code.Neuf: - _ = match_arg_259.value - temp_calcul_plafond_mensualite_d832_10_3_86 = True - elif match_arg_259.code == NeufOuAncien_Code.Ancien: - _ = match_arg_259.value - temp_calcul_plafond_mensualite_d832_10_3_86 = False - if ((param_13 >= date_of_numbers(2002,6,30)) and - ((param_13 < date_of_numbers(2003,6,30)) and - (temp_calcul_plafond_mensualite_d832_10_3_86 and - temp_calcul_plafond_mensualite_d832_10_3_85))): - match_arg_260 = zone_2 - if match_arg_260.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_260.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_261 = situation_familiale_calcul_apl_4 - if match_arg_261.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_261.value - return money_of_cents_string("31241") - elif match_arg_261.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_261.value - return money_of_cents_string("37689") - else: - return (money_of_cents_string("44137") + - (money_of_cents_string("6448") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_260.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_260.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_262 = situation_familiale_calcul_apl_4 - if match_arg_262.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_262.value - return money_of_cents_string("27879") - elif match_arg_262.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_262.value - return money_of_cents_string("33556") - else: - return (money_of_cents_string("39233") + - (money_of_cents_string("5677") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_260.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_260.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_263 = situation_familiale_calcul_apl_4 - if match_arg_263.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_263.value - return money_of_cents_string("26027") - elif match_arg_263.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_263.value - return money_of_cents_string("31210") - else: - return (money_of_cents_string("36393") + - (money_of_cents_string("5183") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_87(_:Unit): - match_arg_264 = type_pret - if match_arg_264.code == TypePret_Code.D331_32: - _ = match_arg_264.value - temp_calcul_plafond_mensualite_d832_10_3_88 = False - elif match_arg_264.code == TypePret_Code.D331_63_64: - _ = match_arg_264.value - temp_calcul_plafond_mensualite_d832_10_3_88 = True - elif match_arg_264.code == TypePret_Code.D331_59_8: - _ = match_arg_264.value - temp_calcul_plafond_mensualite_d832_10_3_88 = False - elif match_arg_264.code == TypePret_Code.D331_76_1: - _ = match_arg_264.value - temp_calcul_plafond_mensualite_d832_10_3_88 = False - elif match_arg_264.code == TypePret_Code.Autre: - _ = match_arg_264.value - temp_calcul_plafond_mensualite_d832_10_3_88 = False - match_arg_265 = anciennete_logement - if match_arg_265.code == NeufOuAncien_Code.Neuf: - _ = match_arg_265.value - temp_calcul_plafond_mensualite_d832_10_3_89 = False - elif match_arg_265.code == NeufOuAncien_Code.Ancien: - _ = match_arg_265.value - temp_calcul_plafond_mensualite_d832_10_3_89 = True - if ((param_13 >= date_of_numbers(2002,1,1)) and - ((param_13 < date_of_numbers(2002,6,30)) and - (temp_calcul_plafond_mensualite_d832_10_3_89 and - temp_calcul_plafond_mensualite_d832_10_3_88))): - match_arg_266 = zone_2 - if match_arg_266.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_266.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_267 = situation_familiale_calcul_apl_4 - if match_arg_267.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_267.value - return money_of_cents_string("24849") - elif match_arg_267.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_267.value - return money_of_cents_string("29987") - else: - return (money_of_cents_string("35125") + - (money_of_cents_string("5138") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_266.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_266.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_268 = situation_familiale_calcul_apl_4 - if match_arg_268.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_268.value - return money_of_cents_string("22151") - elif match_arg_268.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_268.value - return money_of_cents_string("26679") - else: - return (money_of_cents_string("31207") + - (money_of_cents_string("4528") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_266.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_266.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_269 = situation_familiale_calcul_apl_4 - if match_arg_269.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_269.value - return money_of_cents_string("20687") - elif match_arg_269.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_269.value - return money_of_cents_string("24818") - else: - return (money_of_cents_string("28949") + - (money_of_cents_string("4131") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_90(_:Unit): - match_arg_270 = type_pret - if match_arg_270.code == TypePret_Code.D331_32: - _ = match_arg_270.value - temp_calcul_plafond_mensualite_d832_10_3_91 = False - elif match_arg_270.code == TypePret_Code.D331_63_64: - _ = match_arg_270.value - temp_calcul_plafond_mensualite_d832_10_3_91 = True - elif match_arg_270.code == TypePret_Code.D331_59_8: - _ = match_arg_270.value - temp_calcul_plafond_mensualite_d832_10_3_91 = False - elif match_arg_270.code == TypePret_Code.D331_76_1: - _ = match_arg_270.value - temp_calcul_plafond_mensualite_d832_10_3_91 = False - elif match_arg_270.code == TypePret_Code.Autre: - _ = match_arg_270.value - temp_calcul_plafond_mensualite_d832_10_3_91 = False - match_arg_271 = anciennete_logement - if match_arg_271.code == NeufOuAncien_Code.Neuf: - _ = match_arg_271.value - temp_calcul_plafond_mensualite_d832_10_3_92 = False - elif match_arg_271.code == NeufOuAncien_Code.Ancien: - _ = match_arg_271.value - temp_calcul_plafond_mensualite_d832_10_3_92 = True - if ((param_13 >= date_of_numbers(2001,7,1)) and - ((param_13 < date_of_numbers(2001,12,31)) and - (temp_calcul_plafond_mensualite_d832_10_3_92 and - temp_calcul_plafond_mensualite_d832_10_3_91))): - match_arg_272 = zone_2 - if match_arg_272.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_272.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_273 = situation_familiale_calcul_apl_4 - if match_arg_273.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_273.value - temp_calcul_plafond_mensualite_d832_10_3_93 = money_of_cents_string("163000") - elif match_arg_273.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_273.value - temp_calcul_plafond_mensualite_d832_10_3_93 = money_of_cents_string("196700") - else: - temp_calcul_plafond_mensualite_d832_10_3_93 = (money_of_cents_string("230400") + - (money_of_cents_string("33700") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_272.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_272.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_274 = situation_familiale_calcul_apl_4 - if match_arg_274.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_274.value - temp_calcul_plafond_mensualite_d832_10_3_93 = money_of_cents_string("145300") - elif match_arg_274.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_274.value - temp_calcul_plafond_mensualite_d832_10_3_93 = money_of_cents_string("175000") - else: - temp_calcul_plafond_mensualite_d832_10_3_93 = (money_of_cents_string("204700") + - (money_of_cents_string("29700") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_272.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_272.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_275 = situation_familiale_calcul_apl_4 - if match_arg_275.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_275.value - temp_calcul_plafond_mensualite_d832_10_3_93 = money_of_cents_string("135700") - elif match_arg_275.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_275.value - temp_calcul_plafond_mensualite_d832_10_3_93 = money_of_cents_string("162800") - else: - temp_calcul_plafond_mensualite_d832_10_3_93 = (money_of_cents_string("189900") + - (money_of_cents_string("27100") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - return (temp_calcul_plafond_mensualite_d832_10_3_93 * - taux_francs_vers_euros) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_94(_:Unit): - match_arg_276 = type_pret - if match_arg_276.code == TypePret_Code.D331_32: - _ = match_arg_276.value - temp_calcul_plafond_mensualite_d832_10_3_95 = False - elif match_arg_276.code == TypePret_Code.D331_63_64: - _ = match_arg_276.value - temp_calcul_plafond_mensualite_d832_10_3_95 = True - elif match_arg_276.code == TypePret_Code.D331_59_8: - _ = match_arg_276.value - temp_calcul_plafond_mensualite_d832_10_3_95 = False - elif match_arg_276.code == TypePret_Code.D331_76_1: - _ = match_arg_276.value - temp_calcul_plafond_mensualite_d832_10_3_95 = False - elif match_arg_276.code == TypePret_Code.Autre: - _ = match_arg_276.value - temp_calcul_plafond_mensualite_d832_10_3_95 = False - match_arg_277 = anciennete_logement - if match_arg_277.code == NeufOuAncien_Code.Neuf: - _ = match_arg_277.value - temp_calcul_plafond_mensualite_d832_10_3_96 = True - elif match_arg_277.code == NeufOuAncien_Code.Ancien: - _ = match_arg_277.value - temp_calcul_plafond_mensualite_d832_10_3_96 = False - if ((param_13 >= date_of_numbers(2002,1,1)) and - ((param_13 < date_of_numbers(2002,6,30)) and - (temp_calcul_plafond_mensualite_d832_10_3_96 and - temp_calcul_plafond_mensualite_d832_10_3_95))): - match_arg_278 = zone_2 - if match_arg_278.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_278.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_279 = situation_familiale_calcul_apl_4 - if match_arg_279.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_279.value - return money_of_cents_string("30871") - elif match_arg_279.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_279.value - return money_of_cents_string("37243") - else: - return (money_of_cents_string("43615") + - (money_of_cents_string("6372") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_278.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_278.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_280 = situation_familiale_calcul_apl_4 - if match_arg_280.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_280.value - return money_of_cents_string("27548") - elif match_arg_280.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_280.value - return money_of_cents_string("33148") - else: - return (money_of_cents_string("38768") + - (money_of_cents_string("5610") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_278.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_278.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_281 = situation_familiale_calcul_apl_4 - if match_arg_281.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_281.value - return money_of_cents_string("25718") - elif match_arg_281.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_281.value - return money_of_cents_string("30840") - else: - return (money_of_cents_string("35962") + - (money_of_cents_string("5122") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_97(_:Unit): - match_arg_282 = type_pret - if match_arg_282.code == TypePret_Code.D331_32: - _ = match_arg_282.value - temp_calcul_plafond_mensualite_d832_10_3_98 = False - elif match_arg_282.code == TypePret_Code.D331_63_64: - _ = match_arg_282.value - temp_calcul_plafond_mensualite_d832_10_3_98 = True - elif match_arg_282.code == TypePret_Code.D331_59_8: - _ = match_arg_282.value - temp_calcul_plafond_mensualite_d832_10_3_98 = False - elif match_arg_282.code == TypePret_Code.D331_76_1: - _ = match_arg_282.value - temp_calcul_plafond_mensualite_d832_10_3_98 = False - elif match_arg_282.code == TypePret_Code.Autre: - _ = match_arg_282.value - temp_calcul_plafond_mensualite_d832_10_3_98 = False - match_arg_283 = anciennete_logement - if match_arg_283.code == NeufOuAncien_Code.Neuf: - _ = match_arg_283.value - temp_calcul_plafond_mensualite_d832_10_3_99 = True - elif match_arg_283.code == NeufOuAncien_Code.Ancien: - _ = match_arg_283.value - temp_calcul_plafond_mensualite_d832_10_3_99 = False - if ((param_13 >= date_of_numbers(2001,7,1)) and - ((param_13 < date_of_numbers(2001,12,31)) and - (temp_calcul_plafond_mensualite_d832_10_3_99 and - temp_calcul_plafond_mensualite_d832_10_3_98))): - match_arg_284 = zone_2 - if match_arg_284.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_284.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_285 = situation_familiale_calcul_apl_4 - if match_arg_285.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_285.value - temp_calcul_plafond_mensualite_d832_10_3_100 = money_of_cents_string("202500") - elif match_arg_285.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_285.value - temp_calcul_plafond_mensualite_d832_10_3_100 = money_of_cents_string("244300") - else: - temp_calcul_plafond_mensualite_d832_10_3_100 = (money_of_cents_string("286100") + - (money_of_cents_string("41800") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_284.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_284.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_286 = situation_familiale_calcul_apl_4 - if match_arg_286.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_286.value - temp_calcul_plafond_mensualite_d832_10_3_100 = money_of_cents_string("180700") - elif match_arg_286.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_286.value - temp_calcul_plafond_mensualite_d832_10_3_100 = money_of_cents_string("217500") - else: - temp_calcul_plafond_mensualite_d832_10_3_100 = (money_of_cents_string("254300") + - (money_of_cents_string("36800") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_284.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_284.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_287 = situation_familiale_calcul_apl_4 - if match_arg_287.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_287.value - temp_calcul_plafond_mensualite_d832_10_3_100 = money_of_cents_string("168700") - elif match_arg_287.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_287.value - temp_calcul_plafond_mensualite_d832_10_3_100 = money_of_cents_string("202300") - else: - temp_calcul_plafond_mensualite_d832_10_3_100 = (money_of_cents_string("235900") + - (money_of_cents_string("33600") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - return (temp_calcul_plafond_mensualite_d832_10_3_100 * - taux_francs_vers_euros) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_101(_:Unit): - match_arg_288 = type_pret - if match_arg_288.code == TypePret_Code.D331_32: - _ = match_arg_288.value - temp_calcul_plafond_mensualite_d832_10_3_102 = False - elif match_arg_288.code == TypePret_Code.D331_63_64: - _ = match_arg_288.value - temp_calcul_plafond_mensualite_d832_10_3_102 = True - elif match_arg_288.code == TypePret_Code.D331_59_8: - _ = match_arg_288.value - temp_calcul_plafond_mensualite_d832_10_3_102 = False - elif match_arg_288.code == TypePret_Code.D331_76_1: - _ = match_arg_288.value - temp_calcul_plafond_mensualite_d832_10_3_102 = False - elif match_arg_288.code == TypePret_Code.Autre: - _ = match_arg_288.value - temp_calcul_plafond_mensualite_d832_10_3_102 = False - match_arg_289 = anciennete_logement - if match_arg_289.code == NeufOuAncien_Code.Neuf: - _ = match_arg_289.value - temp_calcul_plafond_mensualite_d832_10_3_103 = False - elif match_arg_289.code == NeufOuAncien_Code.Ancien: - _ = match_arg_289.value - temp_calcul_plafond_mensualite_d832_10_3_103 = True - if ((param_13 >= date_of_numbers(2000,6,30)) and - ((param_13 <= date_of_numbers(2001,6,30)) and - (temp_calcul_plafond_mensualite_d832_10_3_103 and - temp_calcul_plafond_mensualite_d832_10_3_102))): - match_arg_290 = zone_2 - if match_arg_290.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_290.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_291 = situation_familiale_calcul_apl_4 - if match_arg_291.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_291.value - temp_calcul_plafond_mensualite_d832_10_3_104 = money_of_cents_string("161100") - elif match_arg_291.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_291.value - temp_calcul_plafond_mensualite_d832_10_3_104 = money_of_cents_string("194400") - else: - temp_calcul_plafond_mensualite_d832_10_3_104 = (money_of_cents_string("227700") + - (money_of_cents_string("33300") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_290.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_290.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_292 = situation_familiale_calcul_apl_4 - if match_arg_292.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_292.value - temp_calcul_plafond_mensualite_d832_10_3_104 = money_of_cents_string("143600") - elif match_arg_292.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_292.value - temp_calcul_plafond_mensualite_d832_10_3_104 = money_of_cents_string("172900") - else: - temp_calcul_plafond_mensualite_d832_10_3_104 = (money_of_cents_string("202200") + - (money_of_cents_string("29300") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_290.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_290.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_293 = situation_familiale_calcul_apl_4 - if match_arg_293.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_293.value - temp_calcul_plafond_mensualite_d832_10_3_104 = money_of_cents_string("134100") - elif match_arg_293.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_293.value - temp_calcul_plafond_mensualite_d832_10_3_104 = money_of_cents_string("160900") - else: - temp_calcul_plafond_mensualite_d832_10_3_104 = (money_of_cents_string("187700") + - (money_of_cents_string("26800") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - return (temp_calcul_plafond_mensualite_d832_10_3_104 * - taux_francs_vers_euros) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_105(_:Unit): - match_arg_294 = type_pret - if match_arg_294.code == TypePret_Code.D331_32: - _ = match_arg_294.value - temp_calcul_plafond_mensualite_d832_10_3_106 = False - elif match_arg_294.code == TypePret_Code.D331_63_64: - _ = match_arg_294.value - temp_calcul_plafond_mensualite_d832_10_3_106 = True - elif match_arg_294.code == TypePret_Code.D331_59_8: - _ = match_arg_294.value - temp_calcul_plafond_mensualite_d832_10_3_106 = False - elif match_arg_294.code == TypePret_Code.D331_76_1: - _ = match_arg_294.value - temp_calcul_plafond_mensualite_d832_10_3_106 = False - elif match_arg_294.code == TypePret_Code.Autre: - _ = match_arg_294.value - temp_calcul_plafond_mensualite_d832_10_3_106 = False - match_arg_295 = anciennete_logement - if match_arg_295.code == NeufOuAncien_Code.Neuf: - _ = match_arg_295.value - temp_calcul_plafond_mensualite_d832_10_3_107 = True - elif match_arg_295.code == NeufOuAncien_Code.Ancien: - _ = match_arg_295.value - temp_calcul_plafond_mensualite_d832_10_3_107 = False - if ((param_13 >= date_of_numbers(2000,6,30)) and - ((param_13 <= date_of_numbers(2001,6,30)) and - (temp_calcul_plafond_mensualite_d832_10_3_107 and - temp_calcul_plafond_mensualite_d832_10_3_106))): - match_arg_296 = zone_2 - if match_arg_296.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_296.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_297 = situation_familiale_calcul_apl_4 - if match_arg_297.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_297.value - temp_calcul_plafond_mensualite_d832_10_3_108 = money_of_cents_string("200100") - elif match_arg_297.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_297.value - temp_calcul_plafond_mensualite_d832_10_3_108 = money_of_cents_string("141400") - else: - temp_calcul_plafond_mensualite_d832_10_3_108 = (money_of_cents_string("182700") + - (money_of_cents_string("41300") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_296.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_296.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_298 = situation_familiale_calcul_apl_4 - if match_arg_298.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_298.value - temp_calcul_plafond_mensualite_d832_10_3_108 = money_of_cents_string("178600") - elif match_arg_298.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_298.value - temp_calcul_plafond_mensualite_d832_10_3_108 = money_of_cents_string("215000") - else: - temp_calcul_plafond_mensualite_d832_10_3_108 = (money_of_cents_string("251400") + - (money_of_cents_string("36400") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_296.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_296.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_299 = situation_familiale_calcul_apl_4 - if match_arg_299.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_299.value - temp_calcul_plafond_mensualite_d832_10_3_108 = money_of_cents_string("166700") - elif match_arg_299.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_299.value - temp_calcul_plafond_mensualite_d832_10_3_108 = money_of_cents_string("199900") - else: - temp_calcul_plafond_mensualite_d832_10_3_108 = (money_of_cents_string("233100") + - (money_of_cents_string("33200") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - return (temp_calcul_plafond_mensualite_d832_10_3_108 * - taux_francs_vers_euros) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_109(_:Unit): - match_arg_300 = type_pret - if match_arg_300.code == TypePret_Code.D331_32: - _ = match_arg_300.value - temp_calcul_plafond_mensualite_d832_10_3_110 = False - elif match_arg_300.code == TypePret_Code.D331_63_64: - _ = match_arg_300.value - temp_calcul_plafond_mensualite_d832_10_3_110 = True - elif match_arg_300.code == TypePret_Code.D331_59_8: - _ = match_arg_300.value - temp_calcul_plafond_mensualite_d832_10_3_110 = False - elif match_arg_300.code == TypePret_Code.D331_76_1: - _ = match_arg_300.value - temp_calcul_plafond_mensualite_d832_10_3_110 = False - elif match_arg_300.code == TypePret_Code.Autre: - _ = match_arg_300.value - temp_calcul_plafond_mensualite_d832_10_3_110 = False - match_arg_301 = anciennete_logement - if match_arg_301.code == NeufOuAncien_Code.Neuf: - _ = match_arg_301.value - temp_calcul_plafond_mensualite_d832_10_3_111 = False - elif match_arg_301.code == NeufOuAncien_Code.Ancien: - _ = match_arg_301.value - temp_calcul_plafond_mensualite_d832_10_3_111 = True - if ((param_13 >= date_of_numbers(1994,11,27)) and - ((param_13 < date_of_numbers(2000,6,30)) and - (temp_calcul_plafond_mensualite_d832_10_3_111 and - temp_calcul_plafond_mensualite_d832_10_3_110))): - match_arg_302 = zone_2 - if match_arg_302.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_302.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_303 = situation_familiale_calcul_apl_4 - if match_arg_303.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_303.value - temp_calcul_plafond_mensualite_d832_10_3_112 = money_of_cents_string("159500") - elif match_arg_303.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_303.value - temp_calcul_plafond_mensualite_d832_10_3_112 = money_of_cents_string("192500") - else: - temp_calcul_plafond_mensualite_d832_10_3_112 = (money_of_cents_string("225500") + - (money_of_cents_string("33000") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_302.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_302.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_304 = situation_familiale_calcul_apl_4 - if match_arg_304.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_304.value - temp_calcul_plafond_mensualite_d832_10_3_112 = money_of_cents_string("142200") - elif match_arg_304.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_304.value - temp_calcul_plafond_mensualite_d832_10_3_112 = money_of_cents_string("171200") - else: - temp_calcul_plafond_mensualite_d832_10_3_112 = (money_of_cents_string("200200") + - (money_of_cents_string("29000") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_302.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_302.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_305 = situation_familiale_calcul_apl_4 - if match_arg_305.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_305.value - temp_calcul_plafond_mensualite_d832_10_3_112 = money_of_cents_string("132800") - elif match_arg_305.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_305.value - temp_calcul_plafond_mensualite_d832_10_3_112 = money_of_cents_string("159300") - else: - temp_calcul_plafond_mensualite_d832_10_3_112 = (money_of_cents_string("185800") + - (money_of_cents_string("26500") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - return (temp_calcul_plafond_mensualite_d832_10_3_112 * - taux_francs_vers_euros) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_113(_:Unit): - match_arg_306 = type_pret - if match_arg_306.code == TypePret_Code.D331_32: - _ = match_arg_306.value - temp_calcul_plafond_mensualite_d832_10_3_114 = False - elif match_arg_306.code == TypePret_Code.D331_63_64: - _ = match_arg_306.value - temp_calcul_plafond_mensualite_d832_10_3_114 = True - elif match_arg_306.code == TypePret_Code.D331_59_8: - _ = match_arg_306.value - temp_calcul_plafond_mensualite_d832_10_3_114 = False - elif match_arg_306.code == TypePret_Code.D331_76_1: - _ = match_arg_306.value - temp_calcul_plafond_mensualite_d832_10_3_114 = False - elif match_arg_306.code == TypePret_Code.Autre: - _ = match_arg_306.value - temp_calcul_plafond_mensualite_d832_10_3_114 = False - match_arg_307 = anciennete_logement - if match_arg_307.code == NeufOuAncien_Code.Neuf: - _ = match_arg_307.value - temp_calcul_plafond_mensualite_d832_10_3_115 = True - elif match_arg_307.code == NeufOuAncien_Code.Ancien: - _ = match_arg_307.value - temp_calcul_plafond_mensualite_d832_10_3_115 = False - if ((param_13 >= date_of_numbers(1994,11,27)) and - ((param_13 < date_of_numbers(2000,6,30)) and - (temp_calcul_plafond_mensualite_d832_10_3_115 and - temp_calcul_plafond_mensualite_d832_10_3_114))): - match_arg_308 = zone_2 - if match_arg_308.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_308.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_309 = situation_familiale_calcul_apl_4 - if match_arg_309.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_309.value - temp_calcul_plafond_mensualite_d832_10_3_116 = money_of_cents_string("198100") - elif match_arg_309.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_309.value - temp_calcul_plafond_mensualite_d832_10_3_116 = money_of_cents_string("239000") - else: - temp_calcul_plafond_mensualite_d832_10_3_116 = (money_of_cents_string("279900") + - (money_of_cents_string("40900") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_308.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_308.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_310 = situation_familiale_calcul_apl_4 - if match_arg_310.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_310.value - temp_calcul_plafond_mensualite_d832_10_3_116 = money_of_cents_string("176800") - elif match_arg_310.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_310.value - temp_calcul_plafond_mensualite_d832_10_3_116 = money_of_cents_string("212800") - else: - temp_calcul_plafond_mensualite_d832_10_3_116 = (money_of_cents_string("248800") + - (money_of_cents_string("36000") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_308.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_308.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_311 = situation_familiale_calcul_apl_4 - if match_arg_311.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_311.value - temp_calcul_plafond_mensualite_d832_10_3_116 = money_of_cents_string("165000") - elif match_arg_311.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_311.value - temp_calcul_plafond_mensualite_d832_10_3_116 = money_of_cents_string("197900") - else: - temp_calcul_plafond_mensualite_d832_10_3_116 = (money_of_cents_string("230800") + - (money_of_cents_string("32900") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - return (temp_calcul_plafond_mensualite_d832_10_3_116 * - taux_francs_vers_euros) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_117(_:Unit): - match_arg_312 = type_pret - if match_arg_312.code == TypePret_Code.D331_32: - _ = match_arg_312.value - temp_calcul_plafond_mensualite_d832_10_3_118 = False - elif match_arg_312.code == TypePret_Code.D331_63_64: - _ = match_arg_312.value - temp_calcul_plafond_mensualite_d832_10_3_118 = True - elif match_arg_312.code == TypePret_Code.D331_59_8: - _ = match_arg_312.value - temp_calcul_plafond_mensualite_d832_10_3_118 = False - elif match_arg_312.code == TypePret_Code.D331_76_1: - _ = match_arg_312.value - temp_calcul_plafond_mensualite_d832_10_3_118 = False - elif match_arg_312.code == TypePret_Code.Autre: - _ = match_arg_312.value - temp_calcul_plafond_mensualite_d832_10_3_118 = False - match_arg_313 = anciennete_logement - if match_arg_313.code == NeufOuAncien_Code.Neuf: - _ = match_arg_313.value - temp_calcul_plafond_mensualite_d832_10_3_119 = False - elif match_arg_313.code == NeufOuAncien_Code.Ancien: - ameliore_par_occupant_1 = match_arg_313.value - match_arg_314 = ameliore_par_occupant_1 - if match_arg_314.code == AmelioreParOccupant_Code.Oui: - _ = match_arg_314.value - temp_calcul_plafond_mensualite_d832_10_3_119 = True - elif match_arg_314.code == AmelioreParOccupant_Code.Non: - _ = match_arg_314.value - temp_calcul_plafond_mensualite_d832_10_3_119 = False - if ((param_13 >= date_of_numbers(1992,6,30)) and - ((param_13 < date_of_numbers(1994,11,27)) and - (temp_calcul_plafond_mensualite_d832_10_3_119 and - temp_calcul_plafond_mensualite_d832_10_3_118))): - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_315 = situation_familiale_calcul_apl_4 - if match_arg_315.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_315.value - temp_calcul_plafond_mensualite_d832_10_3_120 = money_of_cents_string("86900") - elif match_arg_315.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_315.value - temp_calcul_plafond_mensualite_d832_10_3_120 = money_of_cents_string("97100") - else: - temp_calcul_plafond_mensualite_d832_10_3_120 = (money_of_cents_string("107300") + - (money_of_cents_string("10200") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - return (temp_calcul_plafond_mensualite_d832_10_3_120 * - taux_francs_vers_euros) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_121(_:Unit): - try: - match_arg_316 = type_pret - if match_arg_316.code == TypePret_Code.D331_32: - _ = match_arg_316.value - temp_calcul_plafond_mensualite_d832_10_3_122 = False - elif match_arg_316.code == TypePret_Code.D331_63_64: - _ = match_arg_316.value - temp_calcul_plafond_mensualite_d832_10_3_122 = True - elif match_arg_316.code == TypePret_Code.D331_59_8: - _ = match_arg_316.value - temp_calcul_plafond_mensualite_d832_10_3_122 = False - elif match_arg_316.code == TypePret_Code.D331_76_1: - _ = match_arg_316.value - temp_calcul_plafond_mensualite_d832_10_3_122 = False - elif match_arg_316.code == TypePret_Code.Autre: - _ = match_arg_316.value - temp_calcul_plafond_mensualite_d832_10_3_122 = False - match_arg_317 = anciennete_logement - if match_arg_317.code == NeufOuAncien_Code.Neuf: - _ = match_arg_317.value - temp_calcul_plafond_mensualite_d832_10_3_123 = False - elif match_arg_317.code == NeufOuAncien_Code.Ancien: - ameliore_par_occupant_2 = match_arg_317.value - match_arg_318 = ameliore_par_occupant_2 - if match_arg_318.code == AmelioreParOccupant_Code.Oui: - _ = match_arg_318.value - temp_calcul_plafond_mensualite_d832_10_3_123 = False - elif match_arg_318.code == AmelioreParOccupant_Code.Non: - _ = match_arg_318.value - temp_calcul_plafond_mensualite_d832_10_3_123 = True - if ((param_13 >= date_of_numbers(1992,6,30)) and - ((param_13 < date_of_numbers(1994,11,27)) and - (temp_calcul_plafond_mensualite_d832_10_3_123 and - temp_calcul_plafond_mensualite_d832_10_3_122))): - match_arg_319 = zone_2 - if match_arg_319.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_319.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_320 = situation_familiale_calcul_apl_4 - if match_arg_320.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_320.value - temp_calcul_plafond_mensualite_d832_10_3_124 = money_of_cents_string("167800") - elif match_arg_320.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_320.value - temp_calcul_plafond_mensualite_d832_10_3_124 = money_of_cents_string("202500") - else: - temp_calcul_plafond_mensualite_d832_10_3_124 = (money_of_cents_string("237200") + - (money_of_cents_string("34700") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_319.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_319.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_321 = situation_familiale_calcul_apl_4 - if match_arg_321.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_321.value - temp_calcul_plafond_mensualite_d832_10_3_124 = money_of_cents_string("149600") - elif match_arg_321.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_321.value - temp_calcul_plafond_mensualite_d832_10_3_124 = money_of_cents_string("180100") - else: - temp_calcul_plafond_mensualite_d832_10_3_124 = (money_of_cents_string("210600") + - (money_of_cents_string("30500") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_319.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_319.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_322 = situation_familiale_calcul_apl_4 - if match_arg_322.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_322.value - temp_calcul_plafond_mensualite_d832_10_3_124 = money_of_cents_string("139700") - elif match_arg_322.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_322.value - temp_calcul_plafond_mensualite_d832_10_3_124 = money_of_cents_string("167600") - else: - temp_calcul_plafond_mensualite_d832_10_3_124 = (money_of_cents_string("195500") + - (money_of_cents_string("27900") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - return (temp_calcul_plafond_mensualite_d832_10_3_124 * + return (temp_calcul_plafond_mensualite_d832_10_3_25 * taux_francs_vers_euros) else: raise EmptyError except EmptyError: - match_arg_323 = type_pret - if match_arg_323.code == TypePret_Code.D331_32: - _ = match_arg_323.value - temp_calcul_plafond_mensualite_d832_10_3_125 = True - elif match_arg_323.code == TypePret_Code.D331_63_64: - _ = match_arg_323.value - temp_calcul_plafond_mensualite_d832_10_3_125 = False - elif match_arg_323.code == TypePret_Code.D331_59_8: - _ = match_arg_323.value - temp_calcul_plafond_mensualite_d832_10_3_125 = False - elif match_arg_323.code == TypePret_Code.D331_76_1: - _ = match_arg_323.value - temp_calcul_plafond_mensualite_d832_10_3_125 = False - elif match_arg_323.code == TypePret_Code.Autre: - _ = match_arg_323.value - temp_calcul_plafond_mensualite_d832_10_3_125 = False - match_arg_324 = anciennete_logement - if match_arg_324.code == NeufOuAncien_Code.Neuf: - _ = match_arg_324.value - temp_calcul_plafond_mensualite_d832_10_3_126 = False - elif match_arg_324.code == NeufOuAncien_Code.Ancien: - _ = match_arg_324.value - temp_calcul_plafond_mensualite_d832_10_3_126 = True - if ((param_13 >= date_of_numbers(1992,6,30)) and - ((param_13 < date_of_numbers(1994,11,27)) and - (temp_calcul_plafond_mensualite_d832_10_3_126 and - temp_calcul_plafond_mensualite_d832_10_3_125))): - match_arg_325 = zone_2 - if match_arg_325.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_325.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_326 = situation_familiale_calcul_apl_4 - if match_arg_326.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_326.value - temp_calcul_plafond_mensualite_d832_10_3_127 = money_of_cents_string("167800") - elif match_arg_326.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_326.value - temp_calcul_plafond_mensualite_d832_10_3_127 = money_of_cents_string("202500") - else: - temp_calcul_plafond_mensualite_d832_10_3_127 = (money_of_cents_string("237200") + - (money_of_cents_string("34700") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_325.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_325.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_327 = situation_familiale_calcul_apl_4 - if match_arg_327.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_327.value - temp_calcul_plafond_mensualite_d832_10_3_127 = money_of_cents_string("149600") - elif match_arg_327.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_327.value - temp_calcul_plafond_mensualite_d832_10_3_127 = money_of_cents_string("180100") - else: - temp_calcul_plafond_mensualite_d832_10_3_127 = (money_of_cents_string("210600") + - (money_of_cents_string("30500") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_325.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_325.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_328 = situation_familiale_calcul_apl_4 - if match_arg_328.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_328.value - temp_calcul_plafond_mensualite_d832_10_3_127 = money_of_cents_string("139700") - elif match_arg_328.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_328.value - temp_calcul_plafond_mensualite_d832_10_3_127 = money_of_cents_string("167600") - else: - temp_calcul_plafond_mensualite_d832_10_3_127 = (money_of_cents_string("195500") + - (money_of_cents_string("27900") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - return (temp_calcul_plafond_mensualite_d832_10_3_127 * - taux_francs_vers_euros) - else: + def temp_calcul_plafond_mensualite_d832_10_3_26(_:Unit): raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_128(_:Unit): - match_arg_329 = type_pret - if match_arg_329.code == TypePret_Code.D331_32: - _ = match_arg_329.value - temp_calcul_plafond_mensualite_d832_10_3_129 = False - elif match_arg_329.code == TypePret_Code.D331_63_64: - _ = match_arg_329.value - temp_calcul_plafond_mensualite_d832_10_3_129 = True - elif match_arg_329.code == TypePret_Code.D331_59_8: - _ = match_arg_329.value - temp_calcul_plafond_mensualite_d832_10_3_129 = False - elif match_arg_329.code == TypePret_Code.D331_76_1: - _ = match_arg_329.value - temp_calcul_plafond_mensualite_d832_10_3_129 = False - elif match_arg_329.code == TypePret_Code.Autre: - _ = match_arg_329.value - temp_calcul_plafond_mensualite_d832_10_3_129 = False - match_arg_330 = anciennete_logement - if match_arg_330.code == NeufOuAncien_Code.Neuf: - _ = match_arg_330.value - temp_calcul_plafond_mensualite_d832_10_3_130 = True - elif match_arg_330.code == NeufOuAncien_Code.Ancien: - _ = match_arg_330.value - temp_calcul_plafond_mensualite_d832_10_3_130 = False - if ((param_13 >= date_of_numbers(1992,6,30)) and - ((param_13 < date_of_numbers(1994,11,27)) and - (temp_calcul_plafond_mensualite_d832_10_3_130 and - temp_calcul_plafond_mensualite_d832_10_3_129))): - match_arg_331 = zone_2 - if match_arg_331.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_331.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_332 = situation_familiale_calcul_apl_4 - if match_arg_332.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_332.value - temp_calcul_plafond_mensualite_d832_10_3_131 = money_of_cents_string("208500") - elif match_arg_332.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_332.value - temp_calcul_plafond_mensualite_d832_10_3_131 = money_of_cents_string("251500") + def temp_calcul_plafond_mensualite_d832_10_3_27(_:Unit): + return False + def temp_calcul_plafond_mensualite_d832_10_3_28(_:Unit): + match_arg_125 = type_pret + if match_arg_125.code == TypePret_Code.D331_32: + _ = match_arg_125.value + temp_calcul_plafond_mensualite_d832_10_3_29 = False + elif match_arg_125.code == TypePret_Code.D331_63_64: + _ = match_arg_125.value + temp_calcul_plafond_mensualite_d832_10_3_29 = True + elif match_arg_125.code == TypePret_Code.D331_59_8: + _ = match_arg_125.value + temp_calcul_plafond_mensualite_d832_10_3_29 = False + elif match_arg_125.code == TypePret_Code.D331_76_1: + _ = match_arg_125.value + temp_calcul_plafond_mensualite_d832_10_3_29 = False + elif match_arg_125.code == TypePret_Code.Autre: + _ = match_arg_125.value + temp_calcul_plafond_mensualite_d832_10_3_29 = False + match_arg_126 = anciennete_logement + if match_arg_126.code == NeufOuAncien_Code.Neuf: + _ = match_arg_126.value + temp_calcul_plafond_mensualite_d832_10_3_30 = False + elif match_arg_126.code == NeufOuAncien_Code.Ancien: + _ = match_arg_126.value + temp_calcul_plafond_mensualite_d832_10_3_30 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2019,9,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_30 and + temp_calcul_plafond_mensualite_d832_10_3_29))): + match_arg_127 = zone_2 + if match_arg_127.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_127.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_128 = situation_familiale_calcul_apl_4 + if match_arg_128.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_128.value + return money_of_cents_string("29986") + elif match_arg_128.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_128.value + return money_of_cents_string("36187") + else: + return (money_of_cents_string("42386") + + (money_of_cents_string("6201") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_127.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_127.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_129 = situation_familiale_calcul_apl_4 + if match_arg_129.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_129.value + return money_of_cents_string("26730") + elif match_arg_129.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_129.value + return money_of_cents_string("32193") + else: + return (money_of_cents_string("37656") + + (money_of_cents_string("5463") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_127.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_127.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_130 = situation_familiale_calcul_apl_4 + if match_arg_130.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_130.value + return money_of_cents_string("24964") + elif match_arg_130.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_130.value + return money_of_cents_string("29948") + else: + return (money_of_cents_string("34934") + + (money_of_cents_string("4986") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) else: - temp_calcul_plafond_mensualite_d832_10_3_131 = (money_of_cents_string("294500") + - (money_of_cents_string("43000") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_331.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_331.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_333 = situation_familiale_calcul_apl_4 - if match_arg_333.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_333.value - temp_calcul_plafond_mensualite_d832_10_3_131 = money_of_cents_string("186000") - elif match_arg_333.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_333.value - temp_calcul_plafond_mensualite_d832_10_3_131 = money_of_cents_string("223900") + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_31(_:Unit): + match_arg_131 = type_pret + if match_arg_131.code == TypePret_Code.D331_32: + _ = match_arg_131.value + temp_calcul_plafond_mensualite_d832_10_3_32 = False + elif match_arg_131.code == TypePret_Code.D331_63_64: + _ = match_arg_131.value + temp_calcul_plafond_mensualite_d832_10_3_32 = True + elif match_arg_131.code == TypePret_Code.D331_59_8: + _ = match_arg_131.value + temp_calcul_plafond_mensualite_d832_10_3_32 = False + elif match_arg_131.code == TypePret_Code.D331_76_1: + _ = match_arg_131.value + temp_calcul_plafond_mensualite_d832_10_3_32 = False + elif match_arg_131.code == TypePret_Code.Autre: + _ = match_arg_131.value + temp_calcul_plafond_mensualite_d832_10_3_32 = False + match_arg_132 = anciennete_logement + if match_arg_132.code == NeufOuAncien_Code.Neuf: + _ = match_arg_132.value + temp_calcul_plafond_mensualite_d832_10_3_33 = True + elif match_arg_132.code == NeufOuAncien_Code.Ancien: + _ = match_arg_132.value + temp_calcul_plafond_mensualite_d832_10_3_33 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2019,9,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_33 and + temp_calcul_plafond_mensualite_d832_10_3_32))): + match_arg_133 = zone_2 + if match_arg_133.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_133.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_134 = situation_familiale_calcul_apl_4 + if match_arg_134.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_134.value + return money_of_cents_string("37252") + elif match_arg_134.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_134.value + return money_of_cents_string("44941") + else: + return (money_of_cents_string("52629") + + (money_of_cents_string("7687") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_133.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_133.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_135 = situation_familiale_calcul_apl_4 + if match_arg_135.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_135.value + return money_of_cents_string("33244") + elif match_arg_135.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_135.value + return money_of_cents_string("40013") + else: + return (money_of_cents_string("46783") + + (money_of_cents_string("6768") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_133.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_133.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_136 = situation_familiale_calcul_apl_4 + if match_arg_136.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_136.value + return money_of_cents_string("31036") + elif match_arg_136.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_136.value + return money_of_cents_string("37215") + else: + return (money_of_cents_string("43394") + + (money_of_cents_string("6179") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) else: - temp_calcul_plafond_mensualite_d832_10_3_131 = (money_of_cents_string("261800") + - (money_of_cents_string("37900") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_331.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_331.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_334 = situation_familiale_calcul_apl_4 - if match_arg_334.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_334.value - temp_calcul_plafond_mensualite_d832_10_3_131 = money_of_cents_string("173600") - elif match_arg_334.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_334.value - temp_calcul_plafond_mensualite_d832_10_3_131 = money_of_cents_string("208200") + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_34(_:Unit): + match_arg_137 = type_pret + if match_arg_137.code == TypePret_Code.D331_32: + _ = match_arg_137.value + temp_calcul_plafond_mensualite_d832_10_3_35 = False + elif match_arg_137.code == TypePret_Code.D331_63_64: + _ = match_arg_137.value + temp_calcul_plafond_mensualite_d832_10_3_35 = True + elif match_arg_137.code == TypePret_Code.D331_59_8: + _ = match_arg_137.value + temp_calcul_plafond_mensualite_d832_10_3_35 = False + elif match_arg_137.code == TypePret_Code.D331_76_1: + _ = match_arg_137.value + temp_calcul_plafond_mensualite_d832_10_3_35 = False + elif match_arg_137.code == TypePret_Code.Autre: + _ = match_arg_137.value + temp_calcul_plafond_mensualite_d832_10_3_35 = False + match_arg_138 = anciennete_logement + if match_arg_138.code == NeufOuAncien_Code.Neuf: + _ = match_arg_138.value + temp_calcul_plafond_mensualite_d832_10_3_36 = False + elif match_arg_138.code == NeufOuAncien_Code.Ancien: + _ = match_arg_138.value + temp_calcul_plafond_mensualite_d832_10_3_36 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2017,9,30)) and ((param_13 < + date_of_numbers(2019,9,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_36 and + temp_calcul_plafond_mensualite_d832_10_3_35)))): + match_arg_139 = zone_2 + if match_arg_139.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_139.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_140 = situation_familiale_calcul_apl_4 + if match_arg_140.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_140.value + return money_of_cents_string("29897") + elif match_arg_140.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_140.value + return money_of_cents_string("36079") + else: + return (money_of_cents_string("42260") + + (money_of_cents_string("6182") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_139.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_139.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_141 = situation_familiale_calcul_apl_4 + if match_arg_141.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_141.value + return money_of_cents_string("26650") + elif match_arg_141.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_141.value + return money_of_cents_string("32097") + else: + return (money_of_cents_string("37543") + + (money_of_cents_string("5447") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_139.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_139.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_142 = situation_familiale_calcul_apl_4 + if match_arg_142.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_142.value + return money_of_cents_string("24889") + elif match_arg_142.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_142.value + return money_of_cents_string("29858") + else: + return (money_of_cents_string("34829") + + (money_of_cents_string("4971") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) else: - temp_calcul_plafond_mensualite_d832_10_3_131 = (money_of_cents_string("242800") + - (money_of_cents_string("34600") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - return (temp_calcul_plafond_mensualite_d832_10_3_131 * - taux_francs_vers_euros) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_132(_:Unit): - match_arg_335 = type_pret - if match_arg_335.code == TypePret_Code.D331_32: - _ = match_arg_335.value - temp_calcul_plafond_mensualite_d832_10_3_133 = True - elif match_arg_335.code == TypePret_Code.D331_63_64: - _ = match_arg_335.value - temp_calcul_plafond_mensualite_d832_10_3_133 = False - elif match_arg_335.code == TypePret_Code.D331_59_8: - _ = match_arg_335.value - temp_calcul_plafond_mensualite_d832_10_3_133 = False - elif match_arg_335.code == TypePret_Code.D331_76_1: - _ = match_arg_335.value - temp_calcul_plafond_mensualite_d832_10_3_133 = False - elif match_arg_335.code == TypePret_Code.Autre: - _ = match_arg_335.value - temp_calcul_plafond_mensualite_d832_10_3_133 = False - match_arg_336 = anciennete_logement - if match_arg_336.code == NeufOuAncien_Code.Neuf: - _ = match_arg_336.value - temp_calcul_plafond_mensualite_d832_10_3_134 = False - elif match_arg_336.code == NeufOuAncien_Code.Ancien: - _ = match_arg_336.value - temp_calcul_plafond_mensualite_d832_10_3_134 = True - if ((param_13 >= date_of_numbers(1994,11,27)) and - (temp_calcul_plafond_mensualite_d832_10_3_134 and - temp_calcul_plafond_mensualite_d832_10_3_133)): - match_arg_337 = zone_2 - if match_arg_337.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_337.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_338 = situation_familiale_calcul_apl_4 - if match_arg_338.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_338.value - temp_calcul_plafond_mensualite_d832_10_3_135 = money_of_cents_string("148100") - elif match_arg_338.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_338.value - temp_calcul_plafond_mensualite_d832_10_3_135 = money_of_cents_string("178700") + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_37(_:Unit): + match_arg_143 = type_pret + if match_arg_143.code == TypePret_Code.D331_32: + _ = match_arg_143.value + temp_calcul_plafond_mensualite_d832_10_3_38 = False + elif match_arg_143.code == TypePret_Code.D331_63_64: + _ = match_arg_143.value + temp_calcul_plafond_mensualite_d832_10_3_38 = True + elif match_arg_143.code == TypePret_Code.D331_59_8: + _ = match_arg_143.value + temp_calcul_plafond_mensualite_d832_10_3_38 = False + elif match_arg_143.code == TypePret_Code.D331_76_1: + _ = match_arg_143.value + temp_calcul_plafond_mensualite_d832_10_3_38 = False + elif match_arg_143.code == TypePret_Code.Autre: + _ = match_arg_143.value + temp_calcul_plafond_mensualite_d832_10_3_38 = False + match_arg_144 = anciennete_logement + if match_arg_144.code == NeufOuAncien_Code.Neuf: + _ = match_arg_144.value + temp_calcul_plafond_mensualite_d832_10_3_39 = True + elif match_arg_144.code == NeufOuAncien_Code.Ancien: + _ = match_arg_144.value + temp_calcul_plafond_mensualite_d832_10_3_39 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2017,9,30)) and ((param_13 < + date_of_numbers(2019,9,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_39 and + temp_calcul_plafond_mensualite_d832_10_3_38)))): + match_arg_145 = zone_2 + if match_arg_145.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_145.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_146 = situation_familiale_calcul_apl_4 + if match_arg_146.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_146.value + return money_of_cents_string("37140") + elif match_arg_146.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_146.value + return money_of_cents_string("44807") + else: + return (money_of_cents_string("52472") + + (money_of_cents_string("7664") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_145.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_145.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_147 = situation_familiale_calcul_apl_4 + if match_arg_147.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_147.value + return money_of_cents_string("33145") + elif match_arg_147.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_147.value + return money_of_cents_string("39893") + else: + return (money_of_cents_string("46643") + + (money_of_cents_string("6748") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_145.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_145.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_148 = situation_familiale_calcul_apl_4 + if match_arg_148.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_148.value + return money_of_cents_string("30943") + elif match_arg_148.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_148.value + return money_of_cents_string("37103") + else: + return (money_of_cents_string("43264") + + (money_of_cents_string("6161") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) else: - temp_calcul_plafond_mensualite_d832_10_3_135 = (money_of_cents_string("209300") + - (money_of_cents_string("30600") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_337.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_337.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_339 = situation_familiale_calcul_apl_4 - if match_arg_339.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_339.value - temp_calcul_plafond_mensualite_d832_10_3_135 = money_of_cents_string("132000") - elif match_arg_339.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_339.value - temp_calcul_plafond_mensualite_d832_10_3_135 = money_of_cents_string("158900") + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_40(_:Unit): + match_arg_149 = type_pret + if match_arg_149.code == TypePret_Code.D331_32: + _ = match_arg_149.value + temp_calcul_plafond_mensualite_d832_10_3_41 = False + elif match_arg_149.code == TypePret_Code.D331_63_64: + _ = match_arg_149.value + temp_calcul_plafond_mensualite_d832_10_3_41 = True + elif match_arg_149.code == TypePret_Code.D331_59_8: + _ = match_arg_149.value + temp_calcul_plafond_mensualite_d832_10_3_41 = False + elif match_arg_149.code == TypePret_Code.D331_76_1: + _ = match_arg_149.value + temp_calcul_plafond_mensualite_d832_10_3_41 = False + elif match_arg_149.code == TypePret_Code.Autre: + _ = match_arg_149.value + temp_calcul_plafond_mensualite_d832_10_3_41 = False + match_arg_150 = anciennete_logement + if match_arg_150.code == NeufOuAncien_Code.Neuf: + _ = match_arg_150.value + temp_calcul_plafond_mensualite_d832_10_3_42 = False + elif match_arg_150.code == NeufOuAncien_Code.Ancien: + _ = match_arg_150.value + temp_calcul_plafond_mensualite_d832_10_3_42 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2015,9,30)) and ((param_13 < + date_of_numbers(2017,9,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_42 and + temp_calcul_plafond_mensualite_d832_10_3_41)))): + match_arg_151 = zone_2 + if match_arg_151.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_151.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_152 = situation_familiale_calcul_apl_4 + if match_arg_152.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_152.value + return money_of_cents_string("29674") + elif match_arg_152.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_152.value + return money_of_cents_string("35810") + else: + return (money_of_cents_string("41945") + + (money_of_cents_string("6136") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_151.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_151.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_153 = situation_familiale_calcul_apl_4 + if match_arg_153.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_153.value + return money_of_cents_string("26452") + elif match_arg_153.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_153.value + return money_of_cents_string("31858") + else: + return (money_of_cents_string("37264") + + (money_of_cents_string("5406") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_151.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_151.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_154 = situation_familiale_calcul_apl_4 + if match_arg_154.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_154.value + return money_of_cents_string("24704") + elif match_arg_154.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_154.value + return money_of_cents_string("29636") + else: + return (money_of_cents_string("34570") + + (money_of_cents_string("4934") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) else: - temp_calcul_plafond_mensualite_d832_10_3_135 = (money_of_cents_string("185800") + - (money_of_cents_string("26900") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_337.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_337.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_340 = situation_familiale_calcul_apl_4 - if match_arg_340.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_340.value - temp_calcul_plafond_mensualite_d832_10_3_135 = money_of_cents_string("123300") - elif match_arg_340.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_340.value - temp_calcul_plafond_mensualite_d832_10_3_135 = money_of_cents_string("147900") + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_43(_:Unit): + match_arg_155 = type_pret + if match_arg_155.code == TypePret_Code.D331_32: + _ = match_arg_155.value + temp_calcul_plafond_mensualite_d832_10_3_44 = False + elif match_arg_155.code == TypePret_Code.D331_63_64: + _ = match_arg_155.value + temp_calcul_plafond_mensualite_d832_10_3_44 = True + elif match_arg_155.code == TypePret_Code.D331_59_8: + _ = match_arg_155.value + temp_calcul_plafond_mensualite_d832_10_3_44 = False + elif match_arg_155.code == TypePret_Code.D331_76_1: + _ = match_arg_155.value + temp_calcul_plafond_mensualite_d832_10_3_44 = False + elif match_arg_155.code == TypePret_Code.Autre: + _ = match_arg_155.value + temp_calcul_plafond_mensualite_d832_10_3_44 = False + match_arg_156 = anciennete_logement + if match_arg_156.code == NeufOuAncien_Code.Neuf: + _ = match_arg_156.value + temp_calcul_plafond_mensualite_d832_10_3_45 = True + elif match_arg_156.code == NeufOuAncien_Code.Ancien: + _ = match_arg_156.value + temp_calcul_plafond_mensualite_d832_10_3_45 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2015,9,30)) and ((param_13 < + date_of_numbers(2017,9,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_45 and + temp_calcul_plafond_mensualite_d832_10_3_44)))): + match_arg_157 = zone_2 + if match_arg_157.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_157.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_158 = situation_familiale_calcul_apl_4 + if match_arg_158.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_158.value + return money_of_cents_string("36864") + elif match_arg_158.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_158.value + return money_of_cents_string("44473") + else: + return (money_of_cents_string("52081") + + (money_of_cents_string("7607") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_157.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_157.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_159 = situation_familiale_calcul_apl_4 + if match_arg_159.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_159.value + return money_of_cents_string("32898") + elif match_arg_159.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_159.value + return money_of_cents_string("39596") + else: + return (money_of_cents_string("46296") + + (money_of_cents_string("6698") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_157.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_157.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_160 = situation_familiale_calcul_apl_4 + if match_arg_160.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_160.value + return money_of_cents_string("30713") + elif match_arg_160.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_160.value + return money_of_cents_string("36827") + else: + return (money_of_cents_string("42942") + + (money_of_cents_string("6115") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) else: - temp_calcul_plafond_mensualite_d832_10_3_135 = (money_of_cents_string("172500") + - (money_of_cents_string("24600") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - return (temp_calcul_plafond_mensualite_d832_10_3_135 * - taux_francs_vers_euros) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_136(_:Unit): - match_arg_341 = type_pret - if match_arg_341.code == TypePret_Code.D331_32: - _ = match_arg_341.value - temp_calcul_plafond_mensualite_d832_10_3_137 = True - elif match_arg_341.code == TypePret_Code.D331_63_64: - _ = match_arg_341.value - temp_calcul_plafond_mensualite_d832_10_3_137 = False - elif match_arg_341.code == TypePret_Code.D331_59_8: - _ = match_arg_341.value - temp_calcul_plafond_mensualite_d832_10_3_137 = False - elif match_arg_341.code == TypePret_Code.D331_76_1: - _ = match_arg_341.value - temp_calcul_plafond_mensualite_d832_10_3_137 = False - elif match_arg_341.code == TypePret_Code.Autre: - _ = match_arg_341.value - temp_calcul_plafond_mensualite_d832_10_3_137 = False - match_arg_342 = anciennete_logement - if match_arg_342.code == NeufOuAncien_Code.Neuf: - _ = match_arg_342.value - temp_calcul_plafond_mensualite_d832_10_3_138 = True - elif match_arg_342.code == NeufOuAncien_Code.Ancien: - _ = match_arg_342.value - temp_calcul_plafond_mensualite_d832_10_3_138 = False - if ((param_13 >= date_of_numbers(1994,11,27)) and - (temp_calcul_plafond_mensualite_d832_10_3_138 and - temp_calcul_plafond_mensualite_d832_10_3_137)): - match_arg_343 = zone_2 - if match_arg_343.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_343.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_344 = situation_familiale_calcul_apl_4 - if match_arg_344.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_344.value - temp_calcul_plafond_mensualite_d832_10_3_139 = money_of_cents_string("184000") - elif match_arg_344.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_344.value - temp_calcul_plafond_mensualite_d832_10_3_139 = money_of_cents_string("220000") + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_46(_:Unit): + match_arg_161 = type_pret + if match_arg_161.code == TypePret_Code.D331_32: + _ = match_arg_161.value + temp_calcul_plafond_mensualite_d832_10_3_47 = False + elif match_arg_161.code == TypePret_Code.D331_63_64: + _ = match_arg_161.value + temp_calcul_plafond_mensualite_d832_10_3_47 = True + elif match_arg_161.code == TypePret_Code.D331_59_8: + _ = match_arg_161.value + temp_calcul_plafond_mensualite_d832_10_3_47 = False + elif match_arg_161.code == TypePret_Code.D331_76_1: + _ = match_arg_161.value + temp_calcul_plafond_mensualite_d832_10_3_47 = False + elif match_arg_161.code == TypePret_Code.Autre: + _ = match_arg_161.value + temp_calcul_plafond_mensualite_d832_10_3_47 = False + match_arg_162 = anciennete_logement + if match_arg_162.code == NeufOuAncien_Code.Neuf: + _ = match_arg_162.value + temp_calcul_plafond_mensualite_d832_10_3_48 = False + elif match_arg_162.code == NeufOuAncien_Code.Ancien: + _ = match_arg_162.value + temp_calcul_plafond_mensualite_d832_10_3_48 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2014,9,30)) and ((param_13 < + date_of_numbers(2015,9,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_48 and + temp_calcul_plafond_mensualite_d832_10_3_47)))): + match_arg_163 = zone_2 + if match_arg_163.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_163.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_164 = situation_familiale_calcul_apl_4 + if match_arg_164.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_164.value + return money_of_cents_string("29650") + elif match_arg_164.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_164.value + return money_of_cents_string("35781") + else: + return (money_of_cents_string("41911") + + (money_of_cents_string("6131") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_163.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_163.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_165 = situation_familiale_calcul_apl_4 + if match_arg_165.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_165.value + return money_of_cents_string("26431") + elif match_arg_165.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_165.value + return money_of_cents_string("31833") + else: + return (money_of_cents_string("37234") + + (money_of_cents_string("5402") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_163.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_163.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_166 = situation_familiale_calcul_apl_4 + if match_arg_166.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_166.value + return money_of_cents_string("24684") + elif match_arg_166.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_166.value + return money_of_cents_string("29612") + else: + return (money_of_cents_string("34542") + + (money_of_cents_string("4930") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) else: - temp_calcul_plafond_mensualite_d832_10_3_139 = (money_of_cents_string("260000") + - (money_of_cents_string("38000") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_343.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_343.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_345 = situation_familiale_calcul_apl_4 - if match_arg_345.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_345.value - temp_calcul_plafond_mensualite_d832_10_3_139 = money_of_cents_string("164200") - elif match_arg_345.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_345.value - temp_calcul_plafond_mensualite_d832_10_3_139 = money_of_cents_string("197700") + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_49(_:Unit): + match_arg_167 = type_pret + if match_arg_167.code == TypePret_Code.D331_32: + _ = match_arg_167.value + temp_calcul_plafond_mensualite_d832_10_3_50 = False + elif match_arg_167.code == TypePret_Code.D331_63_64: + _ = match_arg_167.value + temp_calcul_plafond_mensualite_d832_10_3_50 = True + elif match_arg_167.code == TypePret_Code.D331_59_8: + _ = match_arg_167.value + temp_calcul_plafond_mensualite_d832_10_3_50 = False + elif match_arg_167.code == TypePret_Code.D331_76_1: + _ = match_arg_167.value + temp_calcul_plafond_mensualite_d832_10_3_50 = False + elif match_arg_167.code == TypePret_Code.Autre: + _ = match_arg_167.value + temp_calcul_plafond_mensualite_d832_10_3_50 = False + match_arg_168 = anciennete_logement + if match_arg_168.code == NeufOuAncien_Code.Neuf: + _ = match_arg_168.value + temp_calcul_plafond_mensualite_d832_10_3_51 = True + elif match_arg_168.code == NeufOuAncien_Code.Ancien: + _ = match_arg_168.value + temp_calcul_plafond_mensualite_d832_10_3_51 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2014,9,30)) and ((param_13 < + date_of_numbers(2015,9,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_51 and + temp_calcul_plafond_mensualite_d832_10_3_50)))): + match_arg_169 = zone_2 + if match_arg_169.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_169.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_170 = situation_familiale_calcul_apl_4 + if match_arg_170.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_170.value + return money_of_cents_string("36835") + elif match_arg_170.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_170.value + return money_of_cents_string("44437") + else: + return (money_of_cents_string("52039") + + (money_of_cents_string("7601") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_169.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_169.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_171 = situation_familiale_calcul_apl_4 + if match_arg_171.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_171.value + return money_of_cents_string("32872") + elif match_arg_171.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_171.value + return money_of_cents_string("39564") + else: + return (money_of_cents_string("46259") + + (money_of_cents_string("6693") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_169.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_169.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_172 = situation_familiale_calcul_apl_4 + if match_arg_172.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_172.value + return money_of_cents_string("30688") + elif match_arg_172.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_172.value + return money_of_cents_string("36798") + else: + return (money_of_cents_string("42908") + + (money_of_cents_string("6110") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) else: - temp_calcul_plafond_mensualite_d832_10_3_139 = (money_of_cents_string("231200") + - (money_of_cents_string("33500") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_343.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_343.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_346 = situation_familiale_calcul_apl_4 - if match_arg_346.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_346.value - temp_calcul_plafond_mensualite_d832_10_3_139 = money_of_cents_string("153200") - elif match_arg_346.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_346.value - temp_calcul_plafond_mensualite_d832_10_3_139 = money_of_cents_string("183700") + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_52(_:Unit): + match_arg_173 = type_pret + if match_arg_173.code == TypePret_Code.D331_32: + _ = match_arg_173.value + temp_calcul_plafond_mensualite_d832_10_3_53 = False + elif match_arg_173.code == TypePret_Code.D331_63_64: + _ = match_arg_173.value + temp_calcul_plafond_mensualite_d832_10_3_53 = True + elif match_arg_173.code == TypePret_Code.D331_59_8: + _ = match_arg_173.value + temp_calcul_plafond_mensualite_d832_10_3_53 = False + elif match_arg_173.code == TypePret_Code.D331_76_1: + _ = match_arg_173.value + temp_calcul_plafond_mensualite_d832_10_3_53 = False + elif match_arg_173.code == TypePret_Code.Autre: + _ = match_arg_173.value + temp_calcul_plafond_mensualite_d832_10_3_53 = False + match_arg_174 = anciennete_logement + if match_arg_174.code == NeufOuAncien_Code.Neuf: + _ = match_arg_174.value + temp_calcul_plafond_mensualite_d832_10_3_54 = False + elif match_arg_174.code == NeufOuAncien_Code.Ancien: + _ = match_arg_174.value + temp_calcul_plafond_mensualite_d832_10_3_54 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2012,12,31)) and ((param_13 < + date_of_numbers(2014,9,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_54 and + temp_calcul_plafond_mensualite_d832_10_3_53)))): + match_arg_175 = zone_2 + if match_arg_175.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_175.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_176 = situation_familiale_calcul_apl_4 + if match_arg_176.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_176.value + return money_of_cents_string("29482") + elif match_arg_176.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_176.value + return money_of_cents_string("35578") + else: + return (money_of_cents_string("41673") + + (money_of_cents_string("6096") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_175.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_175.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_177 = situation_familiale_calcul_apl_4 + if match_arg_177.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_177.value + return money_of_cents_string("26281") + elif match_arg_177.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_177.value + return money_of_cents_string("31653") + else: + return (money_of_cents_string("37023") + + (money_of_cents_string("5371") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_175.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_175.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_178 = situation_familiale_calcul_apl_4 + if match_arg_178.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_178.value + return money_of_cents_string("24544") + elif match_arg_178.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_178.value + return money_of_cents_string("29444") + else: + return (money_of_cents_string("34346") + + (money_of_cents_string("4902") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) else: - temp_calcul_plafond_mensualite_d832_10_3_139 = (money_of_cents_string("214200") + - (money_of_cents_string("30500") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - return (temp_calcul_plafond_mensualite_d832_10_3_139 * - taux_francs_vers_euros) - else: - raise EmptyError - def temp_calcul_plafond_mensualite_d832_10_3_140(_:Unit): - match_arg_347 = type_pret - if match_arg_347.code == TypePret_Code.D331_32: - _ = match_arg_347.value - temp_calcul_plafond_mensualite_d832_10_3_141 = True - elif match_arg_347.code == TypePret_Code.D331_63_64: - _ = match_arg_347.value - temp_calcul_plafond_mensualite_d832_10_3_141 = False - elif match_arg_347.code == TypePret_Code.D331_59_8: - _ = match_arg_347.value - temp_calcul_plafond_mensualite_d832_10_3_141 = False - elif match_arg_347.code == TypePret_Code.D331_76_1: - _ = match_arg_347.value - temp_calcul_plafond_mensualite_d832_10_3_141 = False - elif match_arg_347.code == TypePret_Code.Autre: - _ = match_arg_347.value - temp_calcul_plafond_mensualite_d832_10_3_141 = False - match_arg_348 = anciennete_logement - if match_arg_348.code == NeufOuAncien_Code.Neuf: - _ = match_arg_348.value - temp_calcul_plafond_mensualite_d832_10_3_142 = True - elif match_arg_348.code == NeufOuAncien_Code.Ancien: - _ = match_arg_348.value - temp_calcul_plafond_mensualite_d832_10_3_142 = False - if ((param_13 >= date_of_numbers(1992,6,30)) and - ((param_13 < date_of_numbers(1994,11,27)) and - (temp_calcul_plafond_mensualite_d832_10_3_142 and - temp_calcul_plafond_mensualite_d832_10_3_141))): - match_arg_349 = zone_2 - if match_arg_349.code == ZoneDHabitation_Code.Zone1: - _ = match_arg_349.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_350 = situation_familiale_calcul_apl_4 - if match_arg_350.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_350.value - temp_calcul_plafond_mensualite_d832_10_3_143 = money_of_cents_string("208500") - elif match_arg_350.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_350.value - temp_calcul_plafond_mensualite_d832_10_3_143 = money_of_cents_string("251500") + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_55(_:Unit): + match_arg_179 = type_pret + if match_arg_179.code == TypePret_Code.D331_32: + _ = match_arg_179.value + temp_calcul_plafond_mensualite_d832_10_3_56 = False + elif match_arg_179.code == TypePret_Code.D331_63_64: + _ = match_arg_179.value + temp_calcul_plafond_mensualite_d832_10_3_56 = True + elif match_arg_179.code == TypePret_Code.D331_59_8: + _ = match_arg_179.value + temp_calcul_plafond_mensualite_d832_10_3_56 = False + elif match_arg_179.code == TypePret_Code.D331_76_1: + _ = match_arg_179.value + temp_calcul_plafond_mensualite_d832_10_3_56 = False + elif match_arg_179.code == TypePret_Code.Autre: + _ = match_arg_179.value + temp_calcul_plafond_mensualite_d832_10_3_56 = False + match_arg_180 = anciennete_logement + if match_arg_180.code == NeufOuAncien_Code.Neuf: + _ = match_arg_180.value + temp_calcul_plafond_mensualite_d832_10_3_57 = True + elif match_arg_180.code == NeufOuAncien_Code.Ancien: + _ = match_arg_180.value + temp_calcul_plafond_mensualite_d832_10_3_57 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2012,12,31)) and ((param_13 < + date_of_numbers(2014,9,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_57 and + temp_calcul_plafond_mensualite_d832_10_3_56)))): + match_arg_181 = zone_2 + if match_arg_181.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_181.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_182 = situation_familiale_calcul_apl_4 + if match_arg_182.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_182.value + return money_of_cents_string("36626") + elif match_arg_182.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_182.value + return money_of_cents_string("44185") + else: + return (money_of_cents_string("51744") + + (money_of_cents_string("7558") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_181.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_181.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_183 = situation_familiale_calcul_apl_4 + if match_arg_183.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_183.value + return money_of_cents_string("32686") + elif match_arg_183.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_183.value + return money_of_cents_string("39340") + else: + return (money_of_cents_string("45997") + + (money_of_cents_string("6655") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_181.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_181.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_184 = situation_familiale_calcul_apl_4 + if match_arg_184.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_184.value + return money_of_cents_string("30514") + elif match_arg_184.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_184.value + return money_of_cents_string("36589") + else: + return (money_of_cents_string("42665") + + (money_of_cents_string("6075") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) else: - temp_calcul_plafond_mensualite_d832_10_3_143 = (money_of_cents_string("294500") + - (money_of_cents_string("43000") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_349.code == ZoneDHabitation_Code.Zone2: - _ = match_arg_349.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_351 = situation_familiale_calcul_apl_4 - if match_arg_351.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_351.value - temp_calcul_plafond_mensualite_d832_10_3_143 = money_of_cents_string("186000") - elif match_arg_351.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_351.value - temp_calcul_plafond_mensualite_d832_10_3_143 = money_of_cents_string("223900") + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_58(_:Unit): + match_arg_185 = type_pret + if match_arg_185.code == TypePret_Code.D331_32: + _ = match_arg_185.value + temp_calcul_plafond_mensualite_d832_10_3_59 = False + elif match_arg_185.code == TypePret_Code.D331_63_64: + _ = match_arg_185.value + temp_calcul_plafond_mensualite_d832_10_3_59 = True + elif match_arg_185.code == TypePret_Code.D331_59_8: + _ = match_arg_185.value + temp_calcul_plafond_mensualite_d832_10_3_59 = False + elif match_arg_185.code == TypePret_Code.D331_76_1: + _ = match_arg_185.value + temp_calcul_plafond_mensualite_d832_10_3_59 = False + elif match_arg_185.code == TypePret_Code.Autre: + _ = match_arg_185.value + temp_calcul_plafond_mensualite_d832_10_3_59 = False + match_arg_186 = anciennete_logement + if match_arg_186.code == NeufOuAncien_Code.Neuf: + _ = match_arg_186.value + temp_calcul_plafond_mensualite_d832_10_3_60 = False + elif match_arg_186.code == NeufOuAncien_Code.Ancien: + _ = match_arg_186.value + temp_calcul_plafond_mensualite_d832_10_3_60 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2011,12,31)) and ((param_13 < + date_of_numbers(2012,12,31)) and + (temp_calcul_plafond_mensualite_d832_10_3_60 and + temp_calcul_plafond_mensualite_d832_10_3_59)))): + match_arg_187 = zone_2 + if match_arg_187.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_187.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_188 = situation_familiale_calcul_apl_4 + if match_arg_188.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_188.value + return money_of_cents_string("28861") + elif match_arg_188.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_188.value + return money_of_cents_string("34829") + else: + return (money_of_cents_string("40796") + + (money_of_cents_string("5968") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_187.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_187.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_189 = situation_familiale_calcul_apl_4 + if match_arg_189.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_189.value + return money_of_cents_string("25728") + elif match_arg_189.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_189.value + return money_of_cents_string("30987") + else: + return (money_of_cents_string("36244") + + (money_of_cents_string("5258") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_187.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_187.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_190 = situation_familiale_calcul_apl_4 + if match_arg_190.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_190.value + return money_of_cents_string("24027") + elif match_arg_190.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_190.value + return money_of_cents_string("28824") + else: + return (money_of_cents_string("33623") + + (money_of_cents_string("4799") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) else: - temp_calcul_plafond_mensualite_d832_10_3_143 = (money_of_cents_string("261800") + - (money_of_cents_string("37900") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - elif match_arg_349.code == ZoneDHabitation_Code.Zone3: - _ = match_arg_349.value - if (nombre_personnes_a_charge_4 == - integer_of_string("0")): - match_arg_352 = situation_familiale_calcul_apl_4 - if match_arg_352.code == SituationFamilialeCalculAPL_Code.PersonneSeule: - _ = match_arg_352.value - temp_calcul_plafond_mensualite_d832_10_3_143 = money_of_cents_string("173600") - elif match_arg_352.code == SituationFamilialeCalculAPL_Code.Couple: - _ = match_arg_352.value - temp_calcul_plafond_mensualite_d832_10_3_143 = money_of_cents_string("208200") + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_61(_:Unit): + match_arg_191 = type_pret + if match_arg_191.code == TypePret_Code.D331_32: + _ = match_arg_191.value + temp_calcul_plafond_mensualite_d832_10_3_62 = False + elif match_arg_191.code == TypePret_Code.D331_63_64: + _ = match_arg_191.value + temp_calcul_plafond_mensualite_d832_10_3_62 = True + elif match_arg_191.code == TypePret_Code.D331_59_8: + _ = match_arg_191.value + temp_calcul_plafond_mensualite_d832_10_3_62 = False + elif match_arg_191.code == TypePret_Code.D331_76_1: + _ = match_arg_191.value + temp_calcul_plafond_mensualite_d832_10_3_62 = False + elif match_arg_191.code == TypePret_Code.Autre: + _ = match_arg_191.value + temp_calcul_plafond_mensualite_d832_10_3_62 = False + match_arg_192 = anciennete_logement + if match_arg_192.code == NeufOuAncien_Code.Neuf: + _ = match_arg_192.value + temp_calcul_plafond_mensualite_d832_10_3_63 = True + elif match_arg_192.code == NeufOuAncien_Code.Ancien: + _ = match_arg_192.value + temp_calcul_plafond_mensualite_d832_10_3_63 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2011,12,31)) and ((param_13 < + date_of_numbers(2012,12,31)) and + (temp_calcul_plafond_mensualite_d832_10_3_63 and + temp_calcul_plafond_mensualite_d832_10_3_62)))): + match_arg_193 = zone_2 + if match_arg_193.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_193.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_194 = situation_familiale_calcul_apl_4 + if match_arg_194.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_194.value + return money_of_cents_string("35855") + elif match_arg_194.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_194.value + return money_of_cents_string("43255") + else: + return (money_of_cents_string("50655") + + (money_of_cents_string("7399") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_193.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_193.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_195 = situation_familiale_calcul_apl_4 + if match_arg_195.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_195.value + return money_of_cents_string("31998") + elif match_arg_195.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_195.value + return money_of_cents_string("38512") + else: + return (money_of_cents_string("45029") + + (money_of_cents_string("6515") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_193.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_193.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_196 = situation_familiale_calcul_apl_4 + if match_arg_196.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_196.value + return money_of_cents_string("29872") + elif match_arg_196.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_196.value + return money_of_cents_string("35819") + else: + return (money_of_cents_string("41767") + + (money_of_cents_string("5947") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) else: - temp_calcul_plafond_mensualite_d832_10_3_143 = (money_of_cents_string("242800") + - (money_of_cents_string("35600") * - decimal_of_integer((nombre_personnes_a_charge_4 - - integer_of_string("1"))))) - return (temp_calcul_plafond_mensualite_d832_10_3_143 * - taux_francs_vers_euros) - else: - raise EmptyError + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_64(_:Unit): + match_arg_197 = type_pret + if match_arg_197.code == TypePret_Code.D331_32: + _ = match_arg_197.value + temp_calcul_plafond_mensualite_d832_10_3_65 = False + elif match_arg_197.code == TypePret_Code.D331_63_64: + _ = match_arg_197.value + temp_calcul_plafond_mensualite_d832_10_3_65 = True + elif match_arg_197.code == TypePret_Code.D331_59_8: + _ = match_arg_197.value + temp_calcul_plafond_mensualite_d832_10_3_65 = False + elif match_arg_197.code == TypePret_Code.D331_76_1: + _ = match_arg_197.value + temp_calcul_plafond_mensualite_d832_10_3_65 = False + elif match_arg_197.code == TypePret_Code.Autre: + _ = match_arg_197.value + temp_calcul_plafond_mensualite_d832_10_3_65 = False + match_arg_198 = anciennete_logement + if match_arg_198.code == NeufOuAncien_Code.Neuf: + _ = match_arg_198.value + temp_calcul_plafond_mensualite_d832_10_3_66 = False + elif match_arg_198.code == NeufOuAncien_Code.Ancien: + _ = match_arg_198.value + temp_calcul_plafond_mensualite_d832_10_3_66 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2010,12,31)) and ((param_13 < + date_of_numbers(2011,12,31)) and + (temp_calcul_plafond_mensualite_d832_10_3_66 and + temp_calcul_plafond_mensualite_d832_10_3_65)))): + match_arg_199 = zone_2 + if match_arg_199.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_199.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_200 = situation_familiale_calcul_apl_4 + if match_arg_200.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_200.value + return money_of_cents_string("28575") + elif match_arg_200.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_200.value + return money_of_cents_string("34484") + else: + return (money_of_cents_string("40392") + + (money_of_cents_string("5909") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_199.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_199.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_201 = situation_familiale_calcul_apl_4 + if match_arg_201.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_201.value + return money_of_cents_string("25473") + elif match_arg_201.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_201.value + return money_of_cents_string("30680") + else: + return (money_of_cents_string("35885") + + (money_of_cents_string("5206") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_199.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_199.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_202 = situation_familiale_calcul_apl_4 + if match_arg_202.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_202.value + return money_of_cents_string("23789") + elif match_arg_202.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_202.value + return money_of_cents_string("28539") + else: + return (money_of_cents_string("33290") + + (money_of_cents_string("4751") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_67(_:Unit): + match_arg_203 = type_pret + if match_arg_203.code == TypePret_Code.D331_32: + _ = match_arg_203.value + temp_calcul_plafond_mensualite_d832_10_3_68 = False + elif match_arg_203.code == TypePret_Code.D331_63_64: + _ = match_arg_203.value + temp_calcul_plafond_mensualite_d832_10_3_68 = True + elif match_arg_203.code == TypePret_Code.D331_59_8: + _ = match_arg_203.value + temp_calcul_plafond_mensualite_d832_10_3_68 = False + elif match_arg_203.code == TypePret_Code.D331_76_1: + _ = match_arg_203.value + temp_calcul_plafond_mensualite_d832_10_3_68 = False + elif match_arg_203.code == TypePret_Code.Autre: + _ = match_arg_203.value + temp_calcul_plafond_mensualite_d832_10_3_68 = False + match_arg_204 = anciennete_logement + if match_arg_204.code == NeufOuAncien_Code.Neuf: + _ = match_arg_204.value + temp_calcul_plafond_mensualite_d832_10_3_69 = True + elif match_arg_204.code == NeufOuAncien_Code.Ancien: + _ = match_arg_204.value + temp_calcul_plafond_mensualite_d832_10_3_69 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2010,12,31)) and ((param_13 < + date_of_numbers(2011,12,31)) and + (temp_calcul_plafond_mensualite_d832_10_3_69 and + temp_calcul_plafond_mensualite_d832_10_3_68)))): + match_arg_205 = zone_2 + if match_arg_205.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_205.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_206 = situation_familiale_calcul_apl_4 + if match_arg_206.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_206.value + return money_of_cents_string("35500") + elif match_arg_206.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_206.value + return money_of_cents_string("42827") + else: + return (money_of_cents_string("50153") + + (money_of_cents_string("7326") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_205.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_205.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_207 = situation_familiale_calcul_apl_4 + if match_arg_207.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_207.value + return money_of_cents_string("31681") + elif match_arg_207.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_207.value + return money_of_cents_string("38131") + else: + return (money_of_cents_string("44583") + + (money_of_cents_string("6450") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_205.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_205.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_208 = situation_familiale_calcul_apl_4 + if match_arg_208.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_208.value + return money_of_cents_string("29576") + elif match_arg_208.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_208.value + return money_of_cents_string("35464") + else: + return (money_of_cents_string("41353") + + (money_of_cents_string("5888") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_70(_:Unit): + match_arg_209 = type_pret + if match_arg_209.code == TypePret_Code.D331_32: + _ = match_arg_209.value + temp_calcul_plafond_mensualite_d832_10_3_71 = False + elif match_arg_209.code == TypePret_Code.D331_63_64: + _ = match_arg_209.value + temp_calcul_plafond_mensualite_d832_10_3_71 = True + elif match_arg_209.code == TypePret_Code.D331_59_8: + _ = match_arg_209.value + temp_calcul_plafond_mensualite_d832_10_3_71 = False + elif match_arg_209.code == TypePret_Code.D331_76_1: + _ = match_arg_209.value + temp_calcul_plafond_mensualite_d832_10_3_71 = False + elif match_arg_209.code == TypePret_Code.Autre: + _ = match_arg_209.value + temp_calcul_plafond_mensualite_d832_10_3_71 = False + match_arg_210 = anciennete_logement + if match_arg_210.code == NeufOuAncien_Code.Neuf: + _ = match_arg_210.value + temp_calcul_plafond_mensualite_d832_10_3_72 = False + elif match_arg_210.code == NeufOuAncien_Code.Ancien: + _ = match_arg_210.value + temp_calcul_plafond_mensualite_d832_10_3_72 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2009,12,31)) and ((param_13 < + date_of_numbers(2010,12,31)) and + (temp_calcul_plafond_mensualite_d832_10_3_72 and + temp_calcul_plafond_mensualite_d832_10_3_71)))): + match_arg_211 = zone_2 + if match_arg_211.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_211.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_212 = situation_familiale_calcul_apl_4 + if match_arg_212.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_212.value + return money_of_cents_string("28264") + elif match_arg_212.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_212.value + return money_of_cents_string("34109") + else: + return (money_of_cents_string("39953") + + (money_of_cents_string("5845") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_211.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_211.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_213 = situation_familiale_calcul_apl_4 + if match_arg_213.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_213.value + return money_of_cents_string("25196") + elif match_arg_213.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_213.value + return money_of_cents_string("30346") + else: + return (money_of_cents_string("35495") + + (money_of_cents_string("5149") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_211.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_211.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_214 = situation_familiale_calcul_apl_4 + if match_arg_214.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_214.value + return money_of_cents_string("23530") + elif match_arg_214.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_214.value + return money_of_cents_string("28228") + else: + return (money_of_cents_string("32928") + + (money_of_cents_string("4699") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_73(_:Unit): + match_arg_215 = type_pret + if match_arg_215.code == TypePret_Code.D331_32: + _ = match_arg_215.value + temp_calcul_plafond_mensualite_d832_10_3_74 = False + elif match_arg_215.code == TypePret_Code.D331_63_64: + _ = match_arg_215.value + temp_calcul_plafond_mensualite_d832_10_3_74 = True + elif match_arg_215.code == TypePret_Code.D331_59_8: + _ = match_arg_215.value + temp_calcul_plafond_mensualite_d832_10_3_74 = False + elif match_arg_215.code == TypePret_Code.D331_76_1: + _ = match_arg_215.value + temp_calcul_plafond_mensualite_d832_10_3_74 = False + elif match_arg_215.code == TypePret_Code.Autre: + _ = match_arg_215.value + temp_calcul_plafond_mensualite_d832_10_3_74 = False + match_arg_216 = anciennete_logement + if match_arg_216.code == NeufOuAncien_Code.Neuf: + _ = match_arg_216.value + temp_calcul_plafond_mensualite_d832_10_3_75 = True + elif match_arg_216.code == NeufOuAncien_Code.Ancien: + _ = match_arg_216.value + temp_calcul_plafond_mensualite_d832_10_3_75 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2009,12,31)) and ((param_13 < + date_of_numbers(2010,12,31)) and + (temp_calcul_plafond_mensualite_d832_10_3_75 and + temp_calcul_plafond_mensualite_d832_10_3_74)))): + match_arg_217 = zone_2 + if match_arg_217.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_217.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_218 = situation_familiale_calcul_apl_4 + if match_arg_218.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_218.value + return money_of_cents_string("35114") + elif match_arg_218.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_218.value + return money_of_cents_string("42361") + else: + return (money_of_cents_string("49607") + + (money_of_cents_string("7246") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_217.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_217.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_219 = situation_familiale_calcul_apl_4 + if match_arg_219.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_219.value + return money_of_cents_string("31336") + elif match_arg_219.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_219.value + return money_of_cents_string("37716") + else: + return (money_of_cents_string("44098") + + (money_of_cents_string("6380") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_217.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_217.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_220 = situation_familiale_calcul_apl_4 + if match_arg_220.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_220.value + return money_of_cents_string("29254") + elif match_arg_220.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_220.value + return money_of_cents_string("35078") + else: + return (money_of_cents_string("40903") + + (money_of_cents_string("5824") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_76(_:Unit): + match_arg_221 = type_pret + if match_arg_221.code == TypePret_Code.D331_32: + _ = match_arg_221.value + temp_calcul_plafond_mensualite_d832_10_3_77 = False + elif match_arg_221.code == TypePret_Code.D331_63_64: + _ = match_arg_221.value + temp_calcul_plafond_mensualite_d832_10_3_77 = True + elif match_arg_221.code == TypePret_Code.D331_59_8: + _ = match_arg_221.value + temp_calcul_plafond_mensualite_d832_10_3_77 = False + elif match_arg_221.code == TypePret_Code.D331_76_1: + _ = match_arg_221.value + temp_calcul_plafond_mensualite_d832_10_3_77 = False + elif match_arg_221.code == TypePret_Code.Autre: + _ = match_arg_221.value + temp_calcul_plafond_mensualite_d832_10_3_77 = False + match_arg_222 = anciennete_logement + if match_arg_222.code == NeufOuAncien_Code.Neuf: + _ = match_arg_222.value + temp_calcul_plafond_mensualite_d832_10_3_78 = False + elif match_arg_222.code == NeufOuAncien_Code.Ancien: + _ = match_arg_222.value + temp_calcul_plafond_mensualite_d832_10_3_78 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2008,12,31)) and ((param_13 < + date_of_numbers(2009,12,31)) and + (temp_calcul_plafond_mensualite_d832_10_3_78 and + temp_calcul_plafond_mensualite_d832_10_3_77)))): + match_arg_223 = zone_2 + if match_arg_223.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_223.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_224 = situation_familiale_calcul_apl_4 + if match_arg_224.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_224.value + return money_of_cents_string("28174") + elif match_arg_224.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_224.value + return money_of_cents_string("34000") + else: + return (money_of_cents_string("39826") + + (money_of_cents_string("5826") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_223.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_223.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_225 = situation_familiale_calcul_apl_4 + if match_arg_225.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_225.value + return money_of_cents_string("25116") + elif match_arg_225.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_225.value + return money_of_cents_string("30249") + else: + return (money_of_cents_string("35382") + + (money_of_cents_string("5133") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_223.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_223.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_226 = situation_familiale_calcul_apl_4 + if match_arg_226.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_226.value + return money_of_cents_string("23455") + elif match_arg_226.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_226.value + return money_of_cents_string("28138") + else: + return (money_of_cents_string("32823") + + (money_of_cents_string("4684") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_79(_:Unit): + match_arg_227 = type_pret + if match_arg_227.code == TypePret_Code.D331_32: + _ = match_arg_227.value + temp_calcul_plafond_mensualite_d832_10_3_80 = False + elif match_arg_227.code == TypePret_Code.D331_63_64: + _ = match_arg_227.value + temp_calcul_plafond_mensualite_d832_10_3_80 = True + elif match_arg_227.code == TypePret_Code.D331_59_8: + _ = match_arg_227.value + temp_calcul_plafond_mensualite_d832_10_3_80 = False + elif match_arg_227.code == TypePret_Code.D331_76_1: + _ = match_arg_227.value + temp_calcul_plafond_mensualite_d832_10_3_80 = False + elif match_arg_227.code == TypePret_Code.Autre: + _ = match_arg_227.value + temp_calcul_plafond_mensualite_d832_10_3_80 = False + match_arg_228 = anciennete_logement + if match_arg_228.code == NeufOuAncien_Code.Neuf: + _ = match_arg_228.value + temp_calcul_plafond_mensualite_d832_10_3_81 = True + elif match_arg_228.code == NeufOuAncien_Code.Ancien: + _ = match_arg_228.value + temp_calcul_plafond_mensualite_d832_10_3_81 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2008,12,31)) and ((param_13 < + date_of_numbers(2009,12,31)) and + (temp_calcul_plafond_mensualite_d832_10_3_81 and + temp_calcul_plafond_mensualite_d832_10_3_80)))): + match_arg_229 = zone_2 + if match_arg_229.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_229.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_230 = situation_familiale_calcul_apl_4 + if match_arg_230.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_230.value + return money_of_cents_string("35002") + elif match_arg_230.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_230.value + return money_of_cents_string("42226") + else: + return (money_of_cents_string("49449") + + (money_of_cents_string("7223") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_229.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_229.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_231 = situation_familiale_calcul_apl_4 + if match_arg_231.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_231.value + return money_of_cents_string("31236") + elif match_arg_231.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_231.value + return money_of_cents_string("37596") + else: + return (money_of_cents_string("43957") + + (money_of_cents_string("6360") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_229.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_229.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_232 = situation_familiale_calcul_apl_4 + if match_arg_232.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_232.value + return money_of_cents_string("29161") + elif match_arg_232.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_232.value + return money_of_cents_string("34966") + else: + return (money_of_cents_string("40773") + + (money_of_cents_string("5805") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_82(_:Unit): + match_arg_233 = type_pret + if match_arg_233.code == TypePret_Code.D331_32: + _ = match_arg_233.value + temp_calcul_plafond_mensualite_d832_10_3_83 = False + elif match_arg_233.code == TypePret_Code.D331_63_64: + _ = match_arg_233.value + temp_calcul_plafond_mensualite_d832_10_3_83 = True + elif match_arg_233.code == TypePret_Code.D331_59_8: + _ = match_arg_233.value + temp_calcul_plafond_mensualite_d832_10_3_83 = False + elif match_arg_233.code == TypePret_Code.D331_76_1: + _ = match_arg_233.value + temp_calcul_plafond_mensualite_d832_10_3_83 = False + elif match_arg_233.code == TypePret_Code.Autre: + _ = match_arg_233.value + temp_calcul_plafond_mensualite_d832_10_3_83 = False + match_arg_234 = anciennete_logement + if match_arg_234.code == NeufOuAncien_Code.Neuf: + _ = match_arg_234.value + temp_calcul_plafond_mensualite_d832_10_3_84 = False + elif match_arg_234.code == NeufOuAncien_Code.Ancien: + _ = match_arg_234.value + temp_calcul_plafond_mensualite_d832_10_3_84 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2007,12,31)) and ((param_13 < + date_of_numbers(2008,12,31)) and + (temp_calcul_plafond_mensualite_d832_10_3_84 and + temp_calcul_plafond_mensualite_d832_10_3_83)))): + match_arg_235 = zone_2 + if match_arg_235.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_235.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_236 = situation_familiale_calcul_apl_4 + if match_arg_236.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_236.value + return money_of_cents_string("27367") + elif match_arg_236.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_236.value + return money_of_cents_string("33026") + else: + return (money_of_cents_string("38685") + + (money_of_cents_string("5659") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_235.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_235.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_237 = situation_familiale_calcul_apl_4 + if match_arg_237.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_237.value + return money_of_cents_string("24396") + elif match_arg_237.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_237.value + return money_of_cents_string("29382") + else: + return (money_of_cents_string("34368") + + (money_of_cents_string("4986") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_235.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_235.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_238 = situation_familiale_calcul_apl_4 + if match_arg_238.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_238.value + return money_of_cents_string("22783") + elif match_arg_238.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_238.value + return money_of_cents_string("27332") + else: + return (money_of_cents_string("31882") + + (money_of_cents_string("4550") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_85(_:Unit): + match_arg_239 = type_pret + if match_arg_239.code == TypePret_Code.D331_32: + _ = match_arg_239.value + temp_calcul_plafond_mensualite_d832_10_3_86 = False + elif match_arg_239.code == TypePret_Code.D331_63_64: + _ = match_arg_239.value + temp_calcul_plafond_mensualite_d832_10_3_86 = True + elif match_arg_239.code == TypePret_Code.D331_59_8: + _ = match_arg_239.value + temp_calcul_plafond_mensualite_d832_10_3_86 = False + elif match_arg_239.code == TypePret_Code.D331_76_1: + _ = match_arg_239.value + temp_calcul_plafond_mensualite_d832_10_3_86 = False + elif match_arg_239.code == TypePret_Code.Autre: + _ = match_arg_239.value + temp_calcul_plafond_mensualite_d832_10_3_86 = False + match_arg_240 = anciennete_logement + if match_arg_240.code == NeufOuAncien_Code.Neuf: + _ = match_arg_240.value + temp_calcul_plafond_mensualite_d832_10_3_87 = True + elif match_arg_240.code == NeufOuAncien_Code.Ancien: + _ = match_arg_240.value + temp_calcul_plafond_mensualite_d832_10_3_87 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2007,12,31)) and ((param_13 < + date_of_numbers(2008,12,31)) and + (temp_calcul_plafond_mensualite_d832_10_3_87 and + temp_calcul_plafond_mensualite_d832_10_3_86)))): + match_arg_241 = zone_2 + if match_arg_241.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_241.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_242 = situation_familiale_calcul_apl_4 + if match_arg_242.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_242.value + return money_of_cents_string("33999") + elif match_arg_242.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_242.value + return money_of_cents_string("41016") + else: + return (money_of_cents_string("48032") + + (money_of_cents_string("7016") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_241.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_241.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_243 = situation_familiale_calcul_apl_4 + if match_arg_243.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_243.value + return money_of_cents_string("30341") + elif match_arg_243.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_243.value + return money_of_cents_string("36519") + else: + return (money_of_cents_string("42697") + + (money_of_cents_string("6178") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_241.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_241.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_244 = situation_familiale_calcul_apl_4 + if match_arg_244.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_244.value + return money_of_cents_string("28325") + elif match_arg_244.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_244.value + return money_of_cents_string("33964") + else: + return (money_of_cents_string("39605") + + (money_of_cents_string("5639") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_88(_:Unit): + match_arg_245 = type_pret + if match_arg_245.code == TypePret_Code.D331_32: + _ = match_arg_245.value + temp_calcul_plafond_mensualite_d832_10_3_89 = False + elif match_arg_245.code == TypePret_Code.D331_63_64: + _ = match_arg_245.value + temp_calcul_plafond_mensualite_d832_10_3_89 = True + elif match_arg_245.code == TypePret_Code.D331_59_8: + _ = match_arg_245.value + temp_calcul_plafond_mensualite_d832_10_3_89 = False + elif match_arg_245.code == TypePret_Code.D331_76_1: + _ = match_arg_245.value + temp_calcul_plafond_mensualite_d832_10_3_89 = False + elif match_arg_245.code == TypePret_Code.Autre: + _ = match_arg_245.value + temp_calcul_plafond_mensualite_d832_10_3_89 = False + match_arg_246 = anciennete_logement + if match_arg_246.code == NeufOuAncien_Code.Neuf: + _ = match_arg_246.value + temp_calcul_plafond_mensualite_d832_10_3_90 = False + elif match_arg_246.code == NeufOuAncien_Code.Ancien: + _ = match_arg_246.value + temp_calcul_plafond_mensualite_d832_10_3_90 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2006,12,31)) and ((param_13 < + date_of_numbers(2007,12,31)) and + (temp_calcul_plafond_mensualite_d832_10_3_90 and + temp_calcul_plafond_mensualite_d832_10_3_89)))): + match_arg_247 = zone_2 + if match_arg_247.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_247.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_248 = situation_familiale_calcul_apl_4 + if match_arg_248.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_248.value + return money_of_cents_string("26632") + elif match_arg_248.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_248.value + return money_of_cents_string("32139") + else: + return (money_of_cents_string("37646") + + (money_of_cents_string("5507") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_247.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_247.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_249 = situation_familiale_calcul_apl_4 + if match_arg_249.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_249.value + return money_of_cents_string("23741") + elif match_arg_249.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_249.value + return money_of_cents_string("28593") + else: + return (money_of_cents_string("33445") + + (money_of_cents_string("4852") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_247.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_247.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_250 = situation_familiale_calcul_apl_4 + if match_arg_250.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_250.value + return money_of_cents_string("22171") + elif match_arg_250.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_250.value + return money_of_cents_string("36598") + else: + return (money_of_cents_string("31026") + + (money_of_cents_string("4428") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_91(_:Unit): + match_arg_251 = type_pret + if match_arg_251.code == TypePret_Code.D331_32: + _ = match_arg_251.value + temp_calcul_plafond_mensualite_d832_10_3_92 = False + elif match_arg_251.code == TypePret_Code.D331_63_64: + _ = match_arg_251.value + temp_calcul_plafond_mensualite_d832_10_3_92 = True + elif match_arg_251.code == TypePret_Code.D331_59_8: + _ = match_arg_251.value + temp_calcul_plafond_mensualite_d832_10_3_92 = False + elif match_arg_251.code == TypePret_Code.D331_76_1: + _ = match_arg_251.value + temp_calcul_plafond_mensualite_d832_10_3_92 = False + elif match_arg_251.code == TypePret_Code.Autre: + _ = match_arg_251.value + temp_calcul_plafond_mensualite_d832_10_3_92 = False + match_arg_252 = anciennete_logement + if match_arg_252.code == NeufOuAncien_Code.Neuf: + _ = match_arg_252.value + temp_calcul_plafond_mensualite_d832_10_3_93 = True + elif match_arg_252.code == NeufOuAncien_Code.Ancien: + _ = match_arg_252.value + temp_calcul_plafond_mensualite_d832_10_3_93 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2006,12,31)) and ((param_13 < + date_of_numbers(2007,12,31)) and + (temp_calcul_plafond_mensualite_d832_10_3_93 and + temp_calcul_plafond_mensualite_d832_10_3_92)))): + match_arg_253 = zone_2 + if match_arg_253.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_253.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_254 = situation_familiale_calcul_apl_4 + if match_arg_254.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_254.value + return money_of_cents_string("33086") + elif match_arg_254.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_254.value + return money_of_cents_string("39914") + else: + return (money_of_cents_string("46742") + + (money_of_cents_string("6828") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_253.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_253.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_255 = situation_familiale_calcul_apl_4 + if match_arg_255.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_255.value + return money_of_cents_string("29526") + elif match_arg_255.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_255.value + return money_of_cents_string("35538") + else: + return (money_of_cents_string("41550") + + (money_of_cents_string("6012") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_253.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_253.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_256 = situation_familiale_calcul_apl_4 + if match_arg_256.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_256.value + return money_of_cents_string("27564") + elif match_arg_256.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_256.value + return money_of_cents_string("33052") + else: + return (money_of_cents_string("38541") + + (money_of_cents_string("5488") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_94(_:Unit): + match_arg_257 = type_pret + if match_arg_257.code == TypePret_Code.D331_32: + _ = match_arg_257.value + temp_calcul_plafond_mensualite_d832_10_3_95 = False + elif match_arg_257.code == TypePret_Code.D331_63_64: + _ = match_arg_257.value + temp_calcul_plafond_mensualite_d832_10_3_95 = True + elif match_arg_257.code == TypePret_Code.D331_59_8: + _ = match_arg_257.value + temp_calcul_plafond_mensualite_d832_10_3_95 = False + elif match_arg_257.code == TypePret_Code.D331_76_1: + _ = match_arg_257.value + temp_calcul_plafond_mensualite_d832_10_3_95 = False + elif match_arg_257.code == TypePret_Code.Autre: + _ = match_arg_257.value + temp_calcul_plafond_mensualite_d832_10_3_95 = False + match_arg_258 = anciennete_logement + if match_arg_258.code == NeufOuAncien_Code.Neuf: + _ = match_arg_258.value + temp_calcul_plafond_mensualite_d832_10_3_96 = False + elif match_arg_258.code == NeufOuAncien_Code.Ancien: + _ = match_arg_258.value + temp_calcul_plafond_mensualite_d832_10_3_96 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2005,8,31)) and ((param_13 < + date_of_numbers(2006,12,31)) and + (temp_calcul_plafond_mensualite_d832_10_3_96 and + temp_calcul_plafond_mensualite_d832_10_3_95)))): + match_arg_259 = zone_2 + if match_arg_259.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_259.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_260 = situation_familiale_calcul_apl_4 + if match_arg_260.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_260.value + return money_of_cents_string("25907") + elif match_arg_260.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_260.value + return money_of_cents_string("31264") + else: + return (money_of_cents_string("36621") + + (money_of_cents_string("5357") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_259.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_259.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_261 = situation_familiale_calcul_apl_4 + if match_arg_261.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_261.value + return money_of_cents_string("23094") + elif match_arg_261.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_261.value + return money_of_cents_string("27814") + else: + return (money_of_cents_string("32534") + + (money_of_cents_string("4720") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_259.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_259.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_262 = situation_familiale_calcul_apl_4 + if match_arg_262.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_262.value + return money_of_cents_string("21567") + elif match_arg_262.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_262.value + return money_of_cents_string("25874") + else: + return (money_of_cents_string("30181") + + (money_of_cents_string("4307") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_97(_:Unit): + match_arg_263 = type_pret + if match_arg_263.code == TypePret_Code.D331_32: + _ = match_arg_263.value + temp_calcul_plafond_mensualite_d832_10_3_98 = False + elif match_arg_263.code == TypePret_Code.D331_63_64: + _ = match_arg_263.value + temp_calcul_plafond_mensualite_d832_10_3_98 = True + elif match_arg_263.code == TypePret_Code.D331_59_8: + _ = match_arg_263.value + temp_calcul_plafond_mensualite_d832_10_3_98 = False + elif match_arg_263.code == TypePret_Code.D331_76_1: + _ = match_arg_263.value + temp_calcul_plafond_mensualite_d832_10_3_98 = False + elif match_arg_263.code == TypePret_Code.Autre: + _ = match_arg_263.value + temp_calcul_plafond_mensualite_d832_10_3_98 = False + match_arg_264 = anciennete_logement + if match_arg_264.code == NeufOuAncien_Code.Neuf: + _ = match_arg_264.value + temp_calcul_plafond_mensualite_d832_10_3_99 = True + elif match_arg_264.code == NeufOuAncien_Code.Ancien: + _ = match_arg_264.value + temp_calcul_plafond_mensualite_d832_10_3_99 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2005,8,31)) and ((param_13 < + date_of_numbers(2006,12,31)) and + (temp_calcul_plafond_mensualite_d832_10_3_99 and + temp_calcul_plafond_mensualite_d832_10_3_98)))): + match_arg_265 = zone_2 + if match_arg_265.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_265.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_266 = situation_familiale_calcul_apl_4 + if match_arg_266.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_266.value + return money_of_cents_string("32185") + elif match_arg_266.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_266.value + return money_of_cents_string("38827") + else: + return (money_of_cents_string("45469") + + (money_of_cents_string("6642") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_265.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_265.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_267 = situation_familiale_calcul_apl_4 + if match_arg_267.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_267.value + return money_of_cents_string("28722") + elif match_arg_267.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_267.value + return money_of_cents_string("34570") + else: + return (money_of_cents_string("40418") + + (money_of_cents_string("5848") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_265.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_265.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_268 = situation_familiale_calcul_apl_4 + if match_arg_268.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_268.value + return money_of_cents_string("26813") + elif match_arg_268.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_268.value + return money_of_cents_string("32152") + else: + return (money_of_cents_string("37491") + + (money_of_cents_string("5339") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_100(_:Unit): + match_arg_269 = type_pret + if match_arg_269.code == TypePret_Code.D331_32: + _ = match_arg_269.value + temp_calcul_plafond_mensualite_d832_10_3_101 = False + elif match_arg_269.code == TypePret_Code.D331_63_64: + _ = match_arg_269.value + temp_calcul_plafond_mensualite_d832_10_3_101 = True + elif match_arg_269.code == TypePret_Code.D331_59_8: + _ = match_arg_269.value + temp_calcul_plafond_mensualite_d832_10_3_101 = False + elif match_arg_269.code == TypePret_Code.D331_76_1: + _ = match_arg_269.value + temp_calcul_plafond_mensualite_d832_10_3_101 = False + elif match_arg_269.code == TypePret_Code.Autre: + _ = match_arg_269.value + temp_calcul_plafond_mensualite_d832_10_3_101 = False + match_arg_270 = anciennete_logement + if match_arg_270.code == NeufOuAncien_Code.Neuf: + _ = match_arg_270.value + temp_calcul_plafond_mensualite_d832_10_3_102 = False + elif match_arg_270.code == NeufOuAncien_Code.Ancien: + _ = match_arg_270.value + temp_calcul_plafond_mensualite_d832_10_3_102 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2003,6,30)) and ((param_13 < + date_of_numbers(2005,8,31)) and + (temp_calcul_plafond_mensualite_d832_10_3_102 and + temp_calcul_plafond_mensualite_d832_10_3_101)))): + match_arg_271 = zone_2 + if match_arg_271.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_271.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_272 = situation_familiale_calcul_apl_4 + if match_arg_272.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_272.value + return money_of_cents_string("25449") + elif match_arg_272.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_272.value + return money_of_cents_string("30711") + else: + return (money_of_cents_string("35973") + + (money_of_cents_string("5262") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_271.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_271.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_273 = situation_familiale_calcul_apl_4 + if match_arg_273.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_273.value + return money_of_cents_string("22686") + elif match_arg_273.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_273.value + return money_of_cents_string("27323") + else: + return (money_of_cents_string("31960") + + (money_of_cents_string("4637") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_271.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_271.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_274 = situation_familiale_calcul_apl_4 + if match_arg_274.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_274.value + return money_of_cents_string("21186") + elif match_arg_274.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_274.value + return money_of_cents_string("25417") + else: + return (money_of_cents_string("29648") + + (money_of_cents_string("4231") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_103(_:Unit): + match_arg_275 = type_pret + if match_arg_275.code == TypePret_Code.D331_32: + _ = match_arg_275.value + temp_calcul_plafond_mensualite_d832_10_3_104 = False + elif match_arg_275.code == TypePret_Code.D331_63_64: + _ = match_arg_275.value + temp_calcul_plafond_mensualite_d832_10_3_104 = True + elif match_arg_275.code == TypePret_Code.D331_59_8: + _ = match_arg_275.value + temp_calcul_plafond_mensualite_d832_10_3_104 = False + elif match_arg_275.code == TypePret_Code.D331_76_1: + _ = match_arg_275.value + temp_calcul_plafond_mensualite_d832_10_3_104 = False + elif match_arg_275.code == TypePret_Code.Autre: + _ = match_arg_275.value + temp_calcul_plafond_mensualite_d832_10_3_104 = False + match_arg_276 = anciennete_logement + if match_arg_276.code == NeufOuAncien_Code.Neuf: + _ = match_arg_276.value + temp_calcul_plafond_mensualite_d832_10_3_105 = True + elif match_arg_276.code == NeufOuAncien_Code.Ancien: + _ = match_arg_276.value + temp_calcul_plafond_mensualite_d832_10_3_105 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2003,6,30)) and ((param_13 < + date_of_numbers(2005,8,31)) and + (temp_calcul_plafond_mensualite_d832_10_3_105 and + temp_calcul_plafond_mensualite_d832_10_3_104)))): + match_arg_277 = zone_2 + if match_arg_277.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_277.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_278 = situation_familiale_calcul_apl_4 + if match_arg_278.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_278.value + return money_of_cents_string("31616") + elif match_arg_278.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_278.value + return money_of_cents_string("38141") + else: + return (money_of_cents_string("44666") + + (money_of_cents_string("6525") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_277.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_277.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_279 = situation_familiale_calcul_apl_4 + if match_arg_279.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_279.value + return money_of_cents_string("28214") + elif match_arg_279.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_279.value + return money_of_cents_string("33959") + else: + return (money_of_cents_string("39704") + + (money_of_cents_string("5745") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_277.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_277.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_280 = situation_familiale_calcul_apl_4 + if match_arg_280.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_280.value + return money_of_cents_string("26339") + elif match_arg_280.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_280.value + return money_of_cents_string("31584") + else: + return (money_of_cents_string("36829") + + (money_of_cents_string("5245") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_106(_:Unit): + match_arg_281 = type_pret + if match_arg_281.code == TypePret_Code.D331_32: + _ = match_arg_281.value + temp_calcul_plafond_mensualite_d832_10_3_107 = False + elif match_arg_281.code == TypePret_Code.D331_63_64: + _ = match_arg_281.value + temp_calcul_plafond_mensualite_d832_10_3_107 = True + elif match_arg_281.code == TypePret_Code.D331_59_8: + _ = match_arg_281.value + temp_calcul_plafond_mensualite_d832_10_3_107 = False + elif match_arg_281.code == TypePret_Code.D331_76_1: + _ = match_arg_281.value + temp_calcul_plafond_mensualite_d832_10_3_107 = False + elif match_arg_281.code == TypePret_Code.Autre: + _ = match_arg_281.value + temp_calcul_plafond_mensualite_d832_10_3_107 = False + match_arg_282 = anciennete_logement + if match_arg_282.code == NeufOuAncien_Code.Neuf: + _ = match_arg_282.value + temp_calcul_plafond_mensualite_d832_10_3_108 = False + elif match_arg_282.code == NeufOuAncien_Code.Ancien: + _ = match_arg_282.value + temp_calcul_plafond_mensualite_d832_10_3_108 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2002,6,30)) and ((param_13 < + date_of_numbers(2003,6,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_108 and + temp_calcul_plafond_mensualite_d832_10_3_107)))): + match_arg_283 = zone_2 + if match_arg_283.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_283.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_284 = situation_familiale_calcul_apl_4 + if match_arg_284.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_284.value + return money_of_cents_string("25147") + elif match_arg_284.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_284.value + return money_of_cents_string("30347") + else: + return (money_of_cents_string("35547") + + (money_of_cents_string("5200") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_283.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_283.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_285 = situation_familiale_calcul_apl_4 + if match_arg_285.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_285.value + return money_of_cents_string("22417") + elif match_arg_285.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_285.value + return money_of_cents_string("26999") + else: + return (money_of_cents_string("31581") + + (money_of_cents_string("4582") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_283.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_283.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_286 = situation_familiale_calcul_apl_4 + if match_arg_286.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_286.value + return money_of_cents_string("20935") + elif match_arg_286.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_286.value + return money_of_cents_string("25116") + else: + return (money_of_cents_string("29297") + + (money_of_cents_string("4181") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_109(_:Unit): + match_arg_287 = type_pret + if match_arg_287.code == TypePret_Code.D331_32: + _ = match_arg_287.value + temp_calcul_plafond_mensualite_d832_10_3_110 = False + elif match_arg_287.code == TypePret_Code.D331_63_64: + _ = match_arg_287.value + temp_calcul_plafond_mensualite_d832_10_3_110 = True + elif match_arg_287.code == TypePret_Code.D331_59_8: + _ = match_arg_287.value + temp_calcul_plafond_mensualite_d832_10_3_110 = False + elif match_arg_287.code == TypePret_Code.D331_76_1: + _ = match_arg_287.value + temp_calcul_plafond_mensualite_d832_10_3_110 = False + elif match_arg_287.code == TypePret_Code.Autre: + _ = match_arg_287.value + temp_calcul_plafond_mensualite_d832_10_3_110 = False + match_arg_288 = anciennete_logement + if match_arg_288.code == NeufOuAncien_Code.Neuf: + _ = match_arg_288.value + temp_calcul_plafond_mensualite_d832_10_3_111 = True + elif match_arg_288.code == NeufOuAncien_Code.Ancien: + _ = match_arg_288.value + temp_calcul_plafond_mensualite_d832_10_3_111 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2002,6,30)) and ((param_13 < + date_of_numbers(2003,6,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_111 and + temp_calcul_plafond_mensualite_d832_10_3_110)))): + match_arg_289 = zone_2 + if match_arg_289.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_289.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_290 = situation_familiale_calcul_apl_4 + if match_arg_290.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_290.value + return money_of_cents_string("31241") + elif match_arg_290.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_290.value + return money_of_cents_string("37689") + else: + return (money_of_cents_string("44137") + + (money_of_cents_string("6448") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_289.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_289.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_291 = situation_familiale_calcul_apl_4 + if match_arg_291.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_291.value + return money_of_cents_string("27879") + elif match_arg_291.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_291.value + return money_of_cents_string("33556") + else: + return (money_of_cents_string("39233") + + (money_of_cents_string("5677") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_289.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_289.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_292 = situation_familiale_calcul_apl_4 + if match_arg_292.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_292.value + return money_of_cents_string("26027") + elif match_arg_292.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_292.value + return money_of_cents_string("31210") + else: + return (money_of_cents_string("36393") + + (money_of_cents_string("5183") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_112(_:Unit): + match_arg_293 = type_pret + if match_arg_293.code == TypePret_Code.D331_32: + _ = match_arg_293.value + temp_calcul_plafond_mensualite_d832_10_3_113 = False + elif match_arg_293.code == TypePret_Code.D331_63_64: + _ = match_arg_293.value + temp_calcul_plafond_mensualite_d832_10_3_113 = True + elif match_arg_293.code == TypePret_Code.D331_59_8: + _ = match_arg_293.value + temp_calcul_plafond_mensualite_d832_10_3_113 = False + elif match_arg_293.code == TypePret_Code.D331_76_1: + _ = match_arg_293.value + temp_calcul_plafond_mensualite_d832_10_3_113 = False + elif match_arg_293.code == TypePret_Code.Autre: + _ = match_arg_293.value + temp_calcul_plafond_mensualite_d832_10_3_113 = False + match_arg_294 = anciennete_logement + if match_arg_294.code == NeufOuAncien_Code.Neuf: + _ = match_arg_294.value + temp_calcul_plafond_mensualite_d832_10_3_114 = False + elif match_arg_294.code == NeufOuAncien_Code.Ancien: + _ = match_arg_294.value + temp_calcul_plafond_mensualite_d832_10_3_114 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2002,1,1)) and ((param_13 < + date_of_numbers(2002,6,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_114 and + temp_calcul_plafond_mensualite_d832_10_3_113)))): + match_arg_295 = zone_2 + if match_arg_295.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_295.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_296 = situation_familiale_calcul_apl_4 + if match_arg_296.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_296.value + return money_of_cents_string("24849") + elif match_arg_296.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_296.value + return money_of_cents_string("29987") + else: + return (money_of_cents_string("35125") + + (money_of_cents_string("5138") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_295.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_295.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_297 = situation_familiale_calcul_apl_4 + if match_arg_297.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_297.value + return money_of_cents_string("22151") + elif match_arg_297.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_297.value + return money_of_cents_string("26679") + else: + return (money_of_cents_string("31207") + + (money_of_cents_string("4528") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_295.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_295.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_298 = situation_familiale_calcul_apl_4 + if match_arg_298.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_298.value + return money_of_cents_string("20687") + elif match_arg_298.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_298.value + return money_of_cents_string("24818") + else: + return (money_of_cents_string("28949") + + (money_of_cents_string("4131") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_115(_:Unit): + match_arg_299 = type_pret + if match_arg_299.code == TypePret_Code.D331_32: + _ = match_arg_299.value + temp_calcul_plafond_mensualite_d832_10_3_116 = False + elif match_arg_299.code == TypePret_Code.D331_63_64: + _ = match_arg_299.value + temp_calcul_plafond_mensualite_d832_10_3_116 = True + elif match_arg_299.code == TypePret_Code.D331_59_8: + _ = match_arg_299.value + temp_calcul_plafond_mensualite_d832_10_3_116 = False + elif match_arg_299.code == TypePret_Code.D331_76_1: + _ = match_arg_299.value + temp_calcul_plafond_mensualite_d832_10_3_116 = False + elif match_arg_299.code == TypePret_Code.Autre: + _ = match_arg_299.value + temp_calcul_plafond_mensualite_d832_10_3_116 = False + match_arg_300 = anciennete_logement + if match_arg_300.code == NeufOuAncien_Code.Neuf: + _ = match_arg_300.value + temp_calcul_plafond_mensualite_d832_10_3_117 = False + elif match_arg_300.code == NeufOuAncien_Code.Ancien: + _ = match_arg_300.value + temp_calcul_plafond_mensualite_d832_10_3_117 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2001,7,1)) and ((param_13 < + date_of_numbers(2001,12,31)) and + (temp_calcul_plafond_mensualite_d832_10_3_117 and + temp_calcul_plafond_mensualite_d832_10_3_116)))): + match_arg_301 = zone_2 + if match_arg_301.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_301.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_302 = situation_familiale_calcul_apl_4 + if match_arg_302.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_302.value + temp_calcul_plafond_mensualite_d832_10_3_118 = money_of_cents_string("163000") + elif match_arg_302.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_302.value + temp_calcul_plafond_mensualite_d832_10_3_118 = money_of_cents_string("196700") + else: + temp_calcul_plafond_mensualite_d832_10_3_118 = (money_of_cents_string("230400") + + (money_of_cents_string("33700") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_301.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_301.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_303 = situation_familiale_calcul_apl_4 + if match_arg_303.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_303.value + temp_calcul_plafond_mensualite_d832_10_3_118 = money_of_cents_string("145300") + elif match_arg_303.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_303.value + temp_calcul_plafond_mensualite_d832_10_3_118 = money_of_cents_string("175000") + else: + temp_calcul_plafond_mensualite_d832_10_3_118 = (money_of_cents_string("204700") + + (money_of_cents_string("29700") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_301.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_301.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_304 = situation_familiale_calcul_apl_4 + if match_arg_304.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_304.value + temp_calcul_plafond_mensualite_d832_10_3_118 = money_of_cents_string("135700") + elif match_arg_304.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_304.value + temp_calcul_plafond_mensualite_d832_10_3_118 = money_of_cents_string("162800") + else: + temp_calcul_plafond_mensualite_d832_10_3_118 = (money_of_cents_string("189900") + + (money_of_cents_string("27100") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + return (temp_calcul_plafond_mensualite_d832_10_3_118 * + taux_francs_vers_euros) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_119(_:Unit): + match_arg_305 = type_pret + if match_arg_305.code == TypePret_Code.D331_32: + _ = match_arg_305.value + temp_calcul_plafond_mensualite_d832_10_3_120 = False + elif match_arg_305.code == TypePret_Code.D331_63_64: + _ = match_arg_305.value + temp_calcul_plafond_mensualite_d832_10_3_120 = True + elif match_arg_305.code == TypePret_Code.D331_59_8: + _ = match_arg_305.value + temp_calcul_plafond_mensualite_d832_10_3_120 = False + elif match_arg_305.code == TypePret_Code.D331_76_1: + _ = match_arg_305.value + temp_calcul_plafond_mensualite_d832_10_3_120 = False + elif match_arg_305.code == TypePret_Code.Autre: + _ = match_arg_305.value + temp_calcul_plafond_mensualite_d832_10_3_120 = False + match_arg_306 = anciennete_logement + if match_arg_306.code == NeufOuAncien_Code.Neuf: + _ = match_arg_306.value + temp_calcul_plafond_mensualite_d832_10_3_121 = True + elif match_arg_306.code == NeufOuAncien_Code.Ancien: + _ = match_arg_306.value + temp_calcul_plafond_mensualite_d832_10_3_121 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2002,1,1)) and ((param_13 < + date_of_numbers(2002,6,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_121 and + temp_calcul_plafond_mensualite_d832_10_3_120)))): + match_arg_307 = zone_2 + if match_arg_307.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_307.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_308 = situation_familiale_calcul_apl_4 + if match_arg_308.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_308.value + return money_of_cents_string("30871") + elif match_arg_308.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_308.value + return money_of_cents_string("37243") + else: + return (money_of_cents_string("43615") + + (money_of_cents_string("6372") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_307.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_307.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_309 = situation_familiale_calcul_apl_4 + if match_arg_309.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_309.value + return money_of_cents_string("27548") + elif match_arg_309.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_309.value + return money_of_cents_string("33148") + else: + return (money_of_cents_string("38768") + + (money_of_cents_string("5610") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_307.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_307.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_310 = situation_familiale_calcul_apl_4 + if match_arg_310.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_310.value + return money_of_cents_string("25718") + elif match_arg_310.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_310.value + return money_of_cents_string("30840") + else: + return (money_of_cents_string("35962") + + (money_of_cents_string("5122") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_122(_:Unit): + match_arg_311 = type_pret + if match_arg_311.code == TypePret_Code.D331_32: + _ = match_arg_311.value + temp_calcul_plafond_mensualite_d832_10_3_123 = False + elif match_arg_311.code == TypePret_Code.D331_63_64: + _ = match_arg_311.value + temp_calcul_plafond_mensualite_d832_10_3_123 = True + elif match_arg_311.code == TypePret_Code.D331_59_8: + _ = match_arg_311.value + temp_calcul_plafond_mensualite_d832_10_3_123 = False + elif match_arg_311.code == TypePret_Code.D331_76_1: + _ = match_arg_311.value + temp_calcul_plafond_mensualite_d832_10_3_123 = False + elif match_arg_311.code == TypePret_Code.Autre: + _ = match_arg_311.value + temp_calcul_plafond_mensualite_d832_10_3_123 = False + match_arg_312 = anciennete_logement + if match_arg_312.code == NeufOuAncien_Code.Neuf: + _ = match_arg_312.value + temp_calcul_plafond_mensualite_d832_10_3_124 = True + elif match_arg_312.code == NeufOuAncien_Code.Ancien: + _ = match_arg_312.value + temp_calcul_plafond_mensualite_d832_10_3_124 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2001,7,1)) and ((param_13 < + date_of_numbers(2001,12,31)) and + (temp_calcul_plafond_mensualite_d832_10_3_124 and + temp_calcul_plafond_mensualite_d832_10_3_123)))): + match_arg_313 = zone_2 + if match_arg_313.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_313.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_314 = situation_familiale_calcul_apl_4 + if match_arg_314.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_314.value + temp_calcul_plafond_mensualite_d832_10_3_125 = money_of_cents_string("202500") + elif match_arg_314.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_314.value + temp_calcul_plafond_mensualite_d832_10_3_125 = money_of_cents_string("244300") + else: + temp_calcul_plafond_mensualite_d832_10_3_125 = (money_of_cents_string("286100") + + (money_of_cents_string("41800") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_313.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_313.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_315 = situation_familiale_calcul_apl_4 + if match_arg_315.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_315.value + temp_calcul_plafond_mensualite_d832_10_3_125 = money_of_cents_string("180700") + elif match_arg_315.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_315.value + temp_calcul_plafond_mensualite_d832_10_3_125 = money_of_cents_string("217500") + else: + temp_calcul_plafond_mensualite_d832_10_3_125 = (money_of_cents_string("254300") + + (money_of_cents_string("36800") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_313.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_313.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_316 = situation_familiale_calcul_apl_4 + if match_arg_316.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_316.value + temp_calcul_plafond_mensualite_d832_10_3_125 = money_of_cents_string("168700") + elif match_arg_316.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_316.value + temp_calcul_plafond_mensualite_d832_10_3_125 = money_of_cents_string("202300") + else: + temp_calcul_plafond_mensualite_d832_10_3_125 = (money_of_cents_string("235900") + + (money_of_cents_string("33600") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + return (temp_calcul_plafond_mensualite_d832_10_3_125 * + taux_francs_vers_euros) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_126(_:Unit): + match_arg_317 = type_pret + if match_arg_317.code == TypePret_Code.D331_32: + _ = match_arg_317.value + temp_calcul_plafond_mensualite_d832_10_3_127 = False + elif match_arg_317.code == TypePret_Code.D331_63_64: + _ = match_arg_317.value + temp_calcul_plafond_mensualite_d832_10_3_127 = True + elif match_arg_317.code == TypePret_Code.D331_59_8: + _ = match_arg_317.value + temp_calcul_plafond_mensualite_d832_10_3_127 = False + elif match_arg_317.code == TypePret_Code.D331_76_1: + _ = match_arg_317.value + temp_calcul_plafond_mensualite_d832_10_3_127 = False + elif match_arg_317.code == TypePret_Code.Autre: + _ = match_arg_317.value + temp_calcul_plafond_mensualite_d832_10_3_127 = False + match_arg_318 = anciennete_logement + if match_arg_318.code == NeufOuAncien_Code.Neuf: + _ = match_arg_318.value + temp_calcul_plafond_mensualite_d832_10_3_128 = False + elif match_arg_318.code == NeufOuAncien_Code.Ancien: + _ = match_arg_318.value + temp_calcul_plafond_mensualite_d832_10_3_128 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2000,6,30)) and ((param_13 <= + date_of_numbers(2001,6,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_128 and + temp_calcul_plafond_mensualite_d832_10_3_127)))): + match_arg_319 = zone_2 + if match_arg_319.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_319.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_320 = situation_familiale_calcul_apl_4 + if match_arg_320.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_320.value + temp_calcul_plafond_mensualite_d832_10_3_129 = money_of_cents_string("161100") + elif match_arg_320.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_320.value + temp_calcul_plafond_mensualite_d832_10_3_129 = money_of_cents_string("194400") + else: + temp_calcul_plafond_mensualite_d832_10_3_129 = (money_of_cents_string("227700") + + (money_of_cents_string("33300") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_319.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_319.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_321 = situation_familiale_calcul_apl_4 + if match_arg_321.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_321.value + temp_calcul_plafond_mensualite_d832_10_3_129 = money_of_cents_string("143600") + elif match_arg_321.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_321.value + temp_calcul_plafond_mensualite_d832_10_3_129 = money_of_cents_string("172900") + else: + temp_calcul_plafond_mensualite_d832_10_3_129 = (money_of_cents_string("202200") + + (money_of_cents_string("29300") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_319.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_319.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_322 = situation_familiale_calcul_apl_4 + if match_arg_322.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_322.value + temp_calcul_plafond_mensualite_d832_10_3_129 = money_of_cents_string("134100") + elif match_arg_322.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_322.value + temp_calcul_plafond_mensualite_d832_10_3_129 = money_of_cents_string("160900") + else: + temp_calcul_plafond_mensualite_d832_10_3_129 = (money_of_cents_string("187700") + + (money_of_cents_string("26800") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + return (temp_calcul_plafond_mensualite_d832_10_3_129 * + taux_francs_vers_euros) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_130(_:Unit): + match_arg_323 = type_pret + if match_arg_323.code == TypePret_Code.D331_32: + _ = match_arg_323.value + temp_calcul_plafond_mensualite_d832_10_3_131 = False + elif match_arg_323.code == TypePret_Code.D331_63_64: + _ = match_arg_323.value + temp_calcul_plafond_mensualite_d832_10_3_131 = True + elif match_arg_323.code == TypePret_Code.D331_59_8: + _ = match_arg_323.value + temp_calcul_plafond_mensualite_d832_10_3_131 = False + elif match_arg_323.code == TypePret_Code.D331_76_1: + _ = match_arg_323.value + temp_calcul_plafond_mensualite_d832_10_3_131 = False + elif match_arg_323.code == TypePret_Code.Autre: + _ = match_arg_323.value + temp_calcul_plafond_mensualite_d832_10_3_131 = False + match_arg_324 = anciennete_logement + if match_arg_324.code == NeufOuAncien_Code.Neuf: + _ = match_arg_324.value + temp_calcul_plafond_mensualite_d832_10_3_132 = True + elif match_arg_324.code == NeufOuAncien_Code.Ancien: + _ = match_arg_324.value + temp_calcul_plafond_mensualite_d832_10_3_132 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(2000,6,30)) and ((param_13 <= + date_of_numbers(2001,6,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_132 and + temp_calcul_plafond_mensualite_d832_10_3_131)))): + match_arg_325 = zone_2 + if match_arg_325.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_325.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_326 = situation_familiale_calcul_apl_4 + if match_arg_326.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_326.value + temp_calcul_plafond_mensualite_d832_10_3_133 = money_of_cents_string("200100") + elif match_arg_326.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_326.value + temp_calcul_plafond_mensualite_d832_10_3_133 = money_of_cents_string("141400") + else: + temp_calcul_plafond_mensualite_d832_10_3_133 = (money_of_cents_string("182700") + + (money_of_cents_string("41300") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_325.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_325.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_327 = situation_familiale_calcul_apl_4 + if match_arg_327.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_327.value + temp_calcul_plafond_mensualite_d832_10_3_133 = money_of_cents_string("178600") + elif match_arg_327.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_327.value + temp_calcul_plafond_mensualite_d832_10_3_133 = money_of_cents_string("215000") + else: + temp_calcul_plafond_mensualite_d832_10_3_133 = (money_of_cents_string("251400") + + (money_of_cents_string("36400") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_325.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_325.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_328 = situation_familiale_calcul_apl_4 + if match_arg_328.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_328.value + temp_calcul_plafond_mensualite_d832_10_3_133 = money_of_cents_string("166700") + elif match_arg_328.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_328.value + temp_calcul_plafond_mensualite_d832_10_3_133 = money_of_cents_string("199900") + else: + temp_calcul_plafond_mensualite_d832_10_3_133 = (money_of_cents_string("233100") + + (money_of_cents_string("33200") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + return (temp_calcul_plafond_mensualite_d832_10_3_133 * + taux_francs_vers_euros) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_134(_:Unit): + match_arg_329 = type_pret + if match_arg_329.code == TypePret_Code.D331_32: + _ = match_arg_329.value + temp_calcul_plafond_mensualite_d832_10_3_135 = False + elif match_arg_329.code == TypePret_Code.D331_63_64: + _ = match_arg_329.value + temp_calcul_plafond_mensualite_d832_10_3_135 = True + elif match_arg_329.code == TypePret_Code.D331_59_8: + _ = match_arg_329.value + temp_calcul_plafond_mensualite_d832_10_3_135 = False + elif match_arg_329.code == TypePret_Code.D331_76_1: + _ = match_arg_329.value + temp_calcul_plafond_mensualite_d832_10_3_135 = False + elif match_arg_329.code == TypePret_Code.Autre: + _ = match_arg_329.value + temp_calcul_plafond_mensualite_d832_10_3_135 = False + match_arg_330 = anciennete_logement + if match_arg_330.code == NeufOuAncien_Code.Neuf: + _ = match_arg_330.value + temp_calcul_plafond_mensualite_d832_10_3_136 = False + elif match_arg_330.code == NeufOuAncien_Code.Ancien: + _ = match_arg_330.value + temp_calcul_plafond_mensualite_d832_10_3_136 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(1994,11,27)) and ((param_13 < + date_of_numbers(2000,6,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_136 and + temp_calcul_plafond_mensualite_d832_10_3_135)))): + match_arg_331 = zone_2 + if match_arg_331.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_331.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_332 = situation_familiale_calcul_apl_4 + if match_arg_332.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_332.value + temp_calcul_plafond_mensualite_d832_10_3_137 = money_of_cents_string("159500") + elif match_arg_332.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_332.value + temp_calcul_plafond_mensualite_d832_10_3_137 = money_of_cents_string("192500") + else: + temp_calcul_plafond_mensualite_d832_10_3_137 = (money_of_cents_string("225500") + + (money_of_cents_string("33000") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_331.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_331.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_333 = situation_familiale_calcul_apl_4 + if match_arg_333.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_333.value + temp_calcul_plafond_mensualite_d832_10_3_137 = money_of_cents_string("142200") + elif match_arg_333.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_333.value + temp_calcul_plafond_mensualite_d832_10_3_137 = money_of_cents_string("171200") + else: + temp_calcul_plafond_mensualite_d832_10_3_137 = (money_of_cents_string("200200") + + (money_of_cents_string("29000") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_331.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_331.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_334 = situation_familiale_calcul_apl_4 + if match_arg_334.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_334.value + temp_calcul_plafond_mensualite_d832_10_3_137 = money_of_cents_string("132800") + elif match_arg_334.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_334.value + temp_calcul_plafond_mensualite_d832_10_3_137 = money_of_cents_string("159300") + else: + temp_calcul_plafond_mensualite_d832_10_3_137 = (money_of_cents_string("185800") + + (money_of_cents_string("26500") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + return (temp_calcul_plafond_mensualite_d832_10_3_137 * + taux_francs_vers_euros) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_138(_:Unit): + match_arg_335 = type_pret + if match_arg_335.code == TypePret_Code.D331_32: + _ = match_arg_335.value + temp_calcul_plafond_mensualite_d832_10_3_139 = False + elif match_arg_335.code == TypePret_Code.D331_63_64: + _ = match_arg_335.value + temp_calcul_plafond_mensualite_d832_10_3_139 = True + elif match_arg_335.code == TypePret_Code.D331_59_8: + _ = match_arg_335.value + temp_calcul_plafond_mensualite_d832_10_3_139 = False + elif match_arg_335.code == TypePret_Code.D331_76_1: + _ = match_arg_335.value + temp_calcul_plafond_mensualite_d832_10_3_139 = False + elif match_arg_335.code == TypePret_Code.Autre: + _ = match_arg_335.value + temp_calcul_plafond_mensualite_d832_10_3_139 = False + match_arg_336 = anciennete_logement + if match_arg_336.code == NeufOuAncien_Code.Neuf: + _ = match_arg_336.value + temp_calcul_plafond_mensualite_d832_10_3_140 = True + elif match_arg_336.code == NeufOuAncien_Code.Ancien: + _ = match_arg_336.value + temp_calcul_plafond_mensualite_d832_10_3_140 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(1994,11,27)) and ((param_13 < + date_of_numbers(2000,6,30)) and + (temp_calcul_plafond_mensualite_d832_10_3_140 and + temp_calcul_plafond_mensualite_d832_10_3_139)))): + match_arg_337 = zone_2 + if match_arg_337.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_337.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_338 = situation_familiale_calcul_apl_4 + if match_arg_338.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_338.value + temp_calcul_plafond_mensualite_d832_10_3_141 = money_of_cents_string("198100") + elif match_arg_338.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_338.value + temp_calcul_plafond_mensualite_d832_10_3_141 = money_of_cents_string("239000") + else: + temp_calcul_plafond_mensualite_d832_10_3_141 = (money_of_cents_string("279900") + + (money_of_cents_string("40900") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_337.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_337.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_339 = situation_familiale_calcul_apl_4 + if match_arg_339.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_339.value + temp_calcul_plafond_mensualite_d832_10_3_141 = money_of_cents_string("176800") + elif match_arg_339.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_339.value + temp_calcul_plafond_mensualite_d832_10_3_141 = money_of_cents_string("212800") + else: + temp_calcul_plafond_mensualite_d832_10_3_141 = (money_of_cents_string("248800") + + (money_of_cents_string("36000") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_337.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_337.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_340 = situation_familiale_calcul_apl_4 + if match_arg_340.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_340.value + temp_calcul_plafond_mensualite_d832_10_3_141 = money_of_cents_string("165000") + elif match_arg_340.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_340.value + temp_calcul_plafond_mensualite_d832_10_3_141 = money_of_cents_string("197900") + else: + temp_calcul_plafond_mensualite_d832_10_3_141 = (money_of_cents_string("230800") + + (money_of_cents_string("32900") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + return (temp_calcul_plafond_mensualite_d832_10_3_141 * + taux_francs_vers_euros) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_142(_:Unit): + match_arg_341 = type_pret + if match_arg_341.code == TypePret_Code.D331_32: + _ = match_arg_341.value + temp_calcul_plafond_mensualite_d832_10_3_143 = False + elif match_arg_341.code == TypePret_Code.D331_63_64: + _ = match_arg_341.value + temp_calcul_plafond_mensualite_d832_10_3_143 = True + elif match_arg_341.code == TypePret_Code.D331_59_8: + _ = match_arg_341.value + temp_calcul_plafond_mensualite_d832_10_3_143 = False + elif match_arg_341.code == TypePret_Code.D331_76_1: + _ = match_arg_341.value + temp_calcul_plafond_mensualite_d832_10_3_143 = False + elif match_arg_341.code == TypePret_Code.Autre: + _ = match_arg_341.value + temp_calcul_plafond_mensualite_d832_10_3_143 = False + match_arg_342 = anciennete_logement + if match_arg_342.code == NeufOuAncien_Code.Neuf: + _ = match_arg_342.value + temp_calcul_plafond_mensualite_d832_10_3_144 = False + elif match_arg_342.code == NeufOuAncien_Code.Ancien: + _ = match_arg_342.value + temp_calcul_plafond_mensualite_d832_10_3_144 = True + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(1992,6,30)) and ((param_13 < + date_of_numbers(1994,11,27)) and + (temp_calcul_plafond_mensualite_d832_10_3_144 and + temp_calcul_plafond_mensualite_d832_10_3_143)))): + match_arg_343 = zone_2 + if match_arg_343.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_343.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_344 = situation_familiale_calcul_apl_4 + if match_arg_344.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_344.value + temp_calcul_plafond_mensualite_d832_10_3_145 = money_of_cents_string("167800") + elif match_arg_344.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_344.value + temp_calcul_plafond_mensualite_d832_10_3_145 = money_of_cents_string("202500") + else: + temp_calcul_plafond_mensualite_d832_10_3_145 = (money_of_cents_string("237200") + + (money_of_cents_string("34700") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_343.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_343.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_345 = situation_familiale_calcul_apl_4 + if match_arg_345.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_345.value + temp_calcul_plafond_mensualite_d832_10_3_145 = money_of_cents_string("149600") + elif match_arg_345.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_345.value + temp_calcul_plafond_mensualite_d832_10_3_145 = money_of_cents_string("180100") + else: + temp_calcul_plafond_mensualite_d832_10_3_145 = (money_of_cents_string("210600") + + (money_of_cents_string("30500") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_343.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_343.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_346 = situation_familiale_calcul_apl_4 + if match_arg_346.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_346.value + temp_calcul_plafond_mensualite_d832_10_3_145 = money_of_cents_string("139700") + elif match_arg_346.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_346.value + temp_calcul_plafond_mensualite_d832_10_3_145 = money_of_cents_string("167600") + else: + temp_calcul_plafond_mensualite_d832_10_3_145 = (money_of_cents_string("195500") + + (money_of_cents_string("27900") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + return (temp_calcul_plafond_mensualite_d832_10_3_145 * + taux_francs_vers_euros) + else: + raise EmptyError + def temp_calcul_plafond_mensualite_d832_10_3_146(_:Unit): + match_arg_347 = type_pret + if match_arg_347.code == TypePret_Code.D331_32: + _ = match_arg_347.value + temp_calcul_plafond_mensualite_d832_10_3_147 = False + elif match_arg_347.code == TypePret_Code.D331_63_64: + _ = match_arg_347.value + temp_calcul_plafond_mensualite_d832_10_3_147 = True + elif match_arg_347.code == TypePret_Code.D331_59_8: + _ = match_arg_347.value + temp_calcul_plafond_mensualite_d832_10_3_147 = False + elif match_arg_347.code == TypePret_Code.D331_76_1: + _ = match_arg_347.value + temp_calcul_plafond_mensualite_d832_10_3_147 = False + elif match_arg_347.code == TypePret_Code.Autre: + _ = match_arg_347.value + temp_calcul_plafond_mensualite_d832_10_3_147 = False + match_arg_348 = anciennete_logement + if match_arg_348.code == NeufOuAncien_Code.Neuf: + _ = match_arg_348.value + temp_calcul_plafond_mensualite_d832_10_3_148 = True + elif match_arg_348.code == NeufOuAncien_Code.Ancien: + _ = match_arg_348.value + temp_calcul_plafond_mensualite_d832_10_3_148 = False + if ((date_courante_5 >= + date_of_numbers(2020,10,1)) and ((param_13 >= + date_of_numbers(1992,6,30)) and ((param_13 < + date_of_numbers(1994,11,27)) and + (temp_calcul_plafond_mensualite_d832_10_3_148 and + temp_calcul_plafond_mensualite_d832_10_3_147)))): + match_arg_349 = zone_2 + if match_arg_349.code == ZoneDHabitation_Code.Zone1: + _ = match_arg_349.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_350 = situation_familiale_calcul_apl_4 + if match_arg_350.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_350.value + temp_calcul_plafond_mensualite_d832_10_3_149 = money_of_cents_string("208500") + elif match_arg_350.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_350.value + temp_calcul_plafond_mensualite_d832_10_3_149 = money_of_cents_string("251500") + else: + temp_calcul_plafond_mensualite_d832_10_3_149 = (money_of_cents_string("294500") + + (money_of_cents_string("43000") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_349.code == ZoneDHabitation_Code.Zone2: + _ = match_arg_349.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_351 = situation_familiale_calcul_apl_4 + if match_arg_351.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_351.value + temp_calcul_plafond_mensualite_d832_10_3_149 = money_of_cents_string("186000") + elif match_arg_351.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_351.value + temp_calcul_plafond_mensualite_d832_10_3_149 = money_of_cents_string("223900") + else: + temp_calcul_plafond_mensualite_d832_10_3_149 = (money_of_cents_string("261800") + + (money_of_cents_string("37900") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + elif match_arg_349.code == ZoneDHabitation_Code.Zone3: + _ = match_arg_349.value + if (nombre_personnes_a_charge_4 == + integer_of_string("0")): + match_arg_352 = situation_familiale_calcul_apl_4 + if match_arg_352.code == SituationFamilialeCalculAPL_Code.PersonneSeule: + _ = match_arg_352.value + temp_calcul_plafond_mensualite_d832_10_3_149 = money_of_cents_string("173600") + elif match_arg_352.code == SituationFamilialeCalculAPL_Code.Couple: + _ = match_arg_352.value + temp_calcul_plafond_mensualite_d832_10_3_149 = money_of_cents_string("208200") + else: + temp_calcul_plafond_mensualite_d832_10_3_149 = (money_of_cents_string("242800") + + (money_of_cents_string("34600") * + decimal_of_integer((nombre_personnes_a_charge_4 - + integer_of_string("1"))))) + return (temp_calcul_plafond_mensualite_d832_10_3_149 * + taux_francs_vers_euros) + else: + raise EmptyError + return handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", + start_line=684, + start_column=11, + end_line=684, end_column=46, + law_headings=["Secteur accession à la propriété", + "Calcul du montant de l'aide personnalisée au logement", + "Déclarations des champs d'application", + "Prologue : aides au logement"]), [temp_calcul_plafond_mensualite_d832_10_3_146, + temp_calcul_plafond_mensualite_d832_10_3_142, + temp_calcul_plafond_mensualite_d832_10_3_138, + temp_calcul_plafond_mensualite_d832_10_3_134, + temp_calcul_plafond_mensualite_d832_10_3_130, + temp_calcul_plafond_mensualite_d832_10_3_126, + temp_calcul_plafond_mensualite_d832_10_3_122, + temp_calcul_plafond_mensualite_d832_10_3_119, + temp_calcul_plafond_mensualite_d832_10_3_115, + temp_calcul_plafond_mensualite_d832_10_3_112, + temp_calcul_plafond_mensualite_d832_10_3_109, + temp_calcul_plafond_mensualite_d832_10_3_106, + temp_calcul_plafond_mensualite_d832_10_3_103, + temp_calcul_plafond_mensualite_d832_10_3_100, + temp_calcul_plafond_mensualite_d832_10_3_97, + temp_calcul_plafond_mensualite_d832_10_3_94, + temp_calcul_plafond_mensualite_d832_10_3_91, + temp_calcul_plafond_mensualite_d832_10_3_88, + temp_calcul_plafond_mensualite_d832_10_3_85, + temp_calcul_plafond_mensualite_d832_10_3_82, + temp_calcul_plafond_mensualite_d832_10_3_79, + temp_calcul_plafond_mensualite_d832_10_3_76, + temp_calcul_plafond_mensualite_d832_10_3_73, + temp_calcul_plafond_mensualite_d832_10_3_70, + temp_calcul_plafond_mensualite_d832_10_3_67, + temp_calcul_plafond_mensualite_d832_10_3_64, + temp_calcul_plafond_mensualite_d832_10_3_61, + temp_calcul_plafond_mensualite_d832_10_3_58, + temp_calcul_plafond_mensualite_d832_10_3_55, + temp_calcul_plafond_mensualite_d832_10_3_52, + temp_calcul_plafond_mensualite_d832_10_3_49, + temp_calcul_plafond_mensualite_d832_10_3_46, + temp_calcul_plafond_mensualite_d832_10_3_43, + temp_calcul_plafond_mensualite_d832_10_3_40, + temp_calcul_plafond_mensualite_d832_10_3_37, + temp_calcul_plafond_mensualite_d832_10_3_34, + temp_calcul_plafond_mensualite_d832_10_3_31, + temp_calcul_plafond_mensualite_d832_10_3_28], + temp_calcul_plafond_mensualite_d832_10_3_27, + temp_calcul_plafond_mensualite_d832_10_3_26) return handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", start_line=684, start_column=11, end_line=684, end_column=46, law_headings=["Secteur accession à la propriété", "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", - "Prologue : aides au logement"]), [temp_calcul_plafond_mensualite_d832_10_3_140, - temp_calcul_plafond_mensualite_d832_10_3_136, - temp_calcul_plafond_mensualite_d832_10_3_132, - temp_calcul_plafond_mensualite_d832_10_3_128, - temp_calcul_plafond_mensualite_d832_10_3_121, - temp_calcul_plafond_mensualite_d832_10_3_117, - temp_calcul_plafond_mensualite_d832_10_3_113, - temp_calcul_plafond_mensualite_d832_10_3_109, - temp_calcul_plafond_mensualite_d832_10_3_105, - temp_calcul_plafond_mensualite_d832_10_3_101, - temp_calcul_plafond_mensualite_d832_10_3_97, - temp_calcul_plafond_mensualite_d832_10_3_94, - temp_calcul_plafond_mensualite_d832_10_3_90, - temp_calcul_plafond_mensualite_d832_10_3_87, - temp_calcul_plafond_mensualite_d832_10_3_84, - temp_calcul_plafond_mensualite_d832_10_3_81, - temp_calcul_plafond_mensualite_d832_10_3_78, - temp_calcul_plafond_mensualite_d832_10_3_75, - temp_calcul_plafond_mensualite_d832_10_3_72, - temp_calcul_plafond_mensualite_d832_10_3_69, - temp_calcul_plafond_mensualite_d832_10_3_66, - temp_calcul_plafond_mensualite_d832_10_3_63, - temp_calcul_plafond_mensualite_d832_10_3_60, - temp_calcul_plafond_mensualite_d832_10_3_57, - temp_calcul_plafond_mensualite_d832_10_3_54, - temp_calcul_plafond_mensualite_d832_10_3_51, - temp_calcul_plafond_mensualite_d832_10_3_48, - temp_calcul_plafond_mensualite_d832_10_3_45, - temp_calcul_plafond_mensualite_d832_10_3_42, - temp_calcul_plafond_mensualite_d832_10_3_39, - temp_calcul_plafond_mensualite_d832_10_3_36, - temp_calcul_plafond_mensualite_d832_10_3_33, - temp_calcul_plafond_mensualite_d832_10_3_30, - temp_calcul_plafond_mensualite_d832_10_3_27, - temp_calcul_plafond_mensualite_d832_10_3_24, - temp_calcul_plafond_mensualite_d832_10_3_21, - temp_calcul_plafond_mensualite_d832_10_3_18, - temp_calcul_plafond_mensualite_d832_10_3_15, - temp_calcul_plafond_mensualite_d832_10_3_12, - temp_calcul_plafond_mensualite_d832_10_3_9, - temp_calcul_plafond_mensualite_d832_10_3_6, + "Prologue : aides au logement"]), [temp_calcul_plafond_mensualite_d832_10_3_22, temp_calcul_plafond_mensualite_d832_10_3_3], temp_calcul_plafond_mensualite_d832_10_3_2, temp_calcul_plafond_mensualite_d832_10_3_1) @@ -10297,8 +10500,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_calcul_equivalence_loyer_minimale_dot_ressources_menage_arrondies_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=3475, - start_column=14, end_line=3475, + start_line=3487, + start_column=14, end_line=3487, end_column=75, law_headings=["Article D832-15", "Section 2 : Accession à la propriété", @@ -10313,8 +10516,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_calcul_equivalence_loyer_minimale_dot_condition_2_du_832_25_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=3474, - start_column=14, end_line=3474, + start_line=3486, + start_column=14, end_line=3486, end_column=69, law_headings=["Article D832-15", "Section 2 : Accession à la propriété", @@ -10329,8 +10532,8 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal except EmptyError: temp_calcul_equivalence_loyer_minimale_dot_n_nombre_parts_d832_25_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=3477, - start_column=14, end_line=3477, + start_line=3489, + start_column=14, end_line=3489, end_column=70, law_headings=["Article D832-15", "Section 2 : Accession à la propriété", @@ -11025,33 +11228,41 @@ def eligibilite_aides_personnelle_logement(eligibilite_aides_personnelle_logemen else: raise EmptyError def temp_plafond_individuel_l815_9_secu_4(_:Unit): + if ((date_courante_6 >= date_of_numbers(2023,1,1)) and + (date_courante_6 < + date_of_numbers(2024,1,1))): + return money_of_cents_string("1153302") + else: + raise EmptyError + def temp_plafond_individuel_l815_9_secu_5(_:Unit): if ((date_courante_6 >= date_of_numbers(2020,1,4)) and (date_courante_6 < date_of_numbers(2021,1,1))): return money_of_cents_string("1083840") else: raise EmptyError - def temp_plafond_individuel_l815_9_secu_5(_:Unit): + def temp_plafond_individuel_l815_9_secu_6(_:Unit): if ((date_courante_6 >= date_of_numbers(2019,1,1)) and (date_courante_6 < date_of_numbers(2020,1,1))): return money_of_cents_string("1041840") else: raise EmptyError - def temp_plafond_individuel_l815_9_secu_6(_:Unit): + def temp_plafond_individuel_l815_9_secu_7(_:Unit): if ((date_courante_6 >= date_of_numbers(2018,1,4)) and (date_courante_6 < date_of_numbers(2019,1,1))): return money_of_cents_string("999840") else: raise EmptyError - temp_plafond_individuel_l815_9_secu_7 = handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", + temp_plafond_individuel_l815_9_secu_8 = handle_default(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", start_line=317, start_column=11, end_line=317, end_column=41, law_headings=["Éligibilité aux aides personnelles au logement", "Déclarations des champs d'application", - "Prologue : aides au logement"]), [temp_plafond_individuel_l815_9_secu_6, + "Prologue : aides au logement"]), [temp_plafond_individuel_l815_9_secu_7, + temp_plafond_individuel_l815_9_secu_6, temp_plafond_individuel_l815_9_secu_5, temp_plafond_individuel_l815_9_secu_4, temp_plafond_individuel_l815_9_secu_3, @@ -11059,14 +11270,14 @@ def eligibilite_aides_personnelle_logement(eligibilite_aides_personnelle_logemen temp_plafond_individuel_l815_9_secu_1, temp_plafond_individuel_l815_9_secu) except EmptyError: - temp_plafond_individuel_l815_9_secu_7 = dead_value + temp_plafond_individuel_l815_9_secu_8 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", start_line=317, start_column=11, end_line=317, end_column=41, law_headings=["Éligibilité aux aides personnelles au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) - plafond_individuel_l815_9_secu = temp_plafond_individuel_l815_9_secu_7 + plafond_individuel_l815_9_secu = temp_plafond_individuel_l815_9_secu_8 try: try: try: @@ -11680,8 +11891,8 @@ def ressources_aides_personnelle_logement(ressources_aides_personnelle_logement_ except EmptyError: temp_base_mensuelle_allocations_familiales_dot_date_courante = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=417, start_column=14, - end_line=417, end_column=65, + start_line=418, start_column=14, + end_line=418, end_column=65, law_headings=["Article R822-7", "Sous-section 2 : Principes de neutralisation et d'abattement", "Section 2 : Conditions relatives aux ressources", @@ -11792,8 +12003,8 @@ def ressources_aides_personnelle_logement(ressources_aides_personnelle_logement_ except EmptyError: temp___6 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=141, start_column=13, - end_line=142, end_column=74, + start_line=142, start_column=13, + end_line=143, end_column=74, law_headings=["Article R822-2", "Sous-section 1 : Modalités générales de l'appréciation des ressources", "Section 2 : Conditions relatives aux ressources", @@ -11804,8 +12015,8 @@ def ressources_aides_personnelle_logement(ressources_aides_personnelle_logement_ "Code de la construction et de l'habitation"])) if not (temp___6): raise AssertionFailure(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=141, - start_column=13, end_line=142, + start_line=142, + start_column=13, end_line=143, end_column=74, law_headings=["Article R822-2", "Sous-section 1 : Modalités générales de l'appréciation des ressources", @@ -12322,8 +12533,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_calcul_nombre_parts_dot_condition_2_du_832_25_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=4827, - start_column=14, end_line=4827, + start_line=4839, + start_column=14, end_line=4839, end_column=55, law_headings=["Article D842-15", "Section 3 : Logements-foyers", @@ -12338,8 +12549,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_calcul_nombre_parts_dot_nombre_personnes_a_charge_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=4823, - start_column=14, end_line=4823, + start_line=4835, + start_column=14, end_line=4835, end_column=59, law_headings=["Article D842-15", "Section 3 : Logements-foyers", @@ -12354,8 +12565,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_calcul_nombre_parts_dot_situation_familiale_calcul_apl_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=4825, - start_column=14, end_line=4825, + start_line=4837, + start_column=14, end_line=4837, end_column=64, law_headings=["Article D842-15", "Section 3 : Logements-foyers", @@ -12811,8 +13022,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_calcul_equivalence_loyer_minimale_dot_ressources_menage_arrondies_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=4820, - start_column=14, end_line=4820, + start_line=4832, + start_column=14, end_line=4832, end_column=75, law_headings=["Article D842-15", "Section 3 : Logements-foyers", @@ -12827,8 +13038,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_calcul_equivalence_loyer_minimale_dot_condition_2_du_832_25_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=4819, - start_column=14, end_line=4819, + start_line=4831, + start_column=14, end_line=4831, end_column=69, law_headings=["Article D842-15", "Section 3 : Logements-foyers", @@ -12843,8 +13054,8 @@ def calcul_allocation_logement_foyer(calcul_allocation_logement_foyer_in:CalculA except EmptyError: temp_calcul_equivalence_loyer_minimale_dot_n_nombre_parts_d832_25_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=4829, - start_column=14, end_line=4829, + start_line=4841, + start_column=14, end_line=4841, end_column=70, law_headings=["Article D842-15", "Section 3 : Logements-foyers", @@ -13171,8 +13382,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_calcul_nombre_parts_dot_nombre_personnes_a_charge_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=4434, - start_column=14, end_line=4434, + start_line=4446, + start_column=14, end_line=4446, end_column=59, law_headings=["Article D842-6", "Section 2 : Accession à la propriété", @@ -13187,8 +13398,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_calcul_nombre_parts_dot_situation_familiale_calcul_apl_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=4436, - start_column=14, end_line=4436, + start_line=4448, + start_column=14, end_line=4448, end_column=64, law_headings=["Article D842-6", "Section 2 : Accession à la propriété", @@ -16165,8 +16376,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_calcul_equivalence_loyer_minimale_dot_ressources_menage_arrondies_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=4430, - start_column=14, end_line=4430, + start_line=4442, + start_column=14, end_line=4442, end_column=75, law_headings=["Article D842-6", "Section 2 : Accession à la propriété", @@ -16181,8 +16392,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_calcul_equivalence_loyer_minimale_dot_condition_2_du_832_25_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=4429, - start_column=14, end_line=4429, + start_line=4441, + start_column=14, end_line=4441, end_column=69, law_headings=["Article D842-6", "Section 2 : Accession à la propriété", @@ -16197,8 +16408,8 @@ def calcul_allocation_logement_accession_propriete(calcul_allocation_logement_ac except EmptyError: temp_calcul_equivalence_loyer_minimale_dot_n_nombre_parts_d832_25_3 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=4432, - start_column=14, end_line=4432, + start_line=4444, + start_column=14, end_line=4444, end_column=70, law_headings=["Article D842-6", "Section 2 : Accession à la propriété", @@ -16658,215 +16869,246 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal match_arg_503 = categorie_calcul_apl if match_arg_503.code == CategorieCalculAPL_Code.Location: location_2 = match_arg_503.value + def temp_sous_calcul_traitement(param_40:Money): + try: + temp_sous_calcul_traitement_1 = location_2.loyer_principal + except EmptyError: + temp_sous_calcul_traitement_1 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1446, + start_column=31, + end_line=1446, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_2 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_2 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1441, + start_column=43, + end_line=1441, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_3 = location_2.beneficiaire_aide_adulte_ou_enfant_handicapes + except EmptyError: + temp_sous_calcul_traitement_3 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1448, + start_column=15, + end_line=1448, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_4 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_4 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1444, + start_column=29, + end_line=1444, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_5 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_5 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1442, + start_column=41, + end_line=1442, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_6 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_6 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1445, + start_column=46, + end_line=1445, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_7 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_7 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1443, + start_column=20, + end_line=1443, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_8 = location_2.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_8 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1449, + start_column=36, + end_line=1449, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_9 = location_2.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_9 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1452, + start_column=15, + end_line=1452, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_10 = type_aide_2 + except EmptyError: + temp_sous_calcul_traitement_10 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1453, + start_column=25, + end_line=1453, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_11 = location_2.colocation + except EmptyError: + temp_sous_calcul_traitement_11 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1450, + start_column=26, + end_line=1450, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_504 = location_2.bailleur + if match_arg_504.code == TypeBailleur_Code.BailleurSocial: + bailleur = match_arg_504.value + temp_sous_calcul_traitement_12 = bailleur.reduction_loyer_solidarite_percue + elif match_arg_504.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_504.value + temp_sous_calcul_traitement_12 = money_of_cents_string("0") + elif match_arg_504.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_504.value + temp_sous_calcul_traitement_12 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_12 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1455, + start_column=16, + end_line=1458, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_13 = location_2.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_13 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1459, + start_column=38, + end_line=1459, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + return calcul_aide_personnalisee_logement_locatif(CalculAidePersonnaliseeLogementLocatifIn(loyer_principal_base_in = temp_sous_calcul_traitement_1, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_2, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_3, + date_courante_in = temp_sous_calcul_traitement_4, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_5, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_6, + zone_in = temp_sous_calcul_traitement_7, + logement_est_chambre_in = temp_sous_calcul_traitement_8, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_9, + type_aide_in = temp_sous_calcul_traitement_10, + colocation_in = temp_sous_calcul_traitement_11, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_12, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_13)).traitement_aide_finale( + param_40) try: - temp_sous_calcul_traitement = location_2.logement_meuble_d842_2 + temp_sous_calcul_traitement_14 = location_2.loyer_principal except EmptyError: - temp_sous_calcul_traitement = dead_value + temp_sous_calcul_traitement_14 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1447, - start_column=38, - end_line=1447, - end_column=69, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - match_arg_504 = location_2.bailleur - if match_arg_504.code == TypeBailleur_Code.BailleurSocial: - bailleur = match_arg_504.value - temp_sous_calcul_traitement_1 = bailleur.reduction_loyer_solidarite_percue - elif match_arg_504.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: - _ = match_arg_504.value - temp_sous_calcul_traitement_1 = money_of_cents_string("0") - elif match_arg_504.code == TypeBailleur_Code.BailleurPrive: - _ = match_arg_504.value - temp_sous_calcul_traitement_1 = money_of_cents_string("0") - except EmptyError: - temp_sous_calcul_traitement_1 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1443, - start_column=16, - end_line=1446, - end_column=39, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_2 = location_2.colocation - except EmptyError: - temp_sous_calcul_traitement_2 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1438, - start_column=26, - end_line=1438, - end_column=45, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_3 = type_aide_2 - except EmptyError: - temp_sous_calcul_traitement_3 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1441, - start_column=25, - end_line=1441, - end_column=34, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_4 = location_2.agees_ou_handicap_adultes_hebergees_onereux_particuliers - except EmptyError: - temp_sous_calcul_traitement_4 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1440, - start_column=15, - end_line=1440, - end_column=80, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_5 = location_2.logement_est_chambre - except EmptyError: - temp_sous_calcul_traitement_5 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1437, - start_column=36, - end_line=1437, - end_column=65, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_6 = zone_6 - except EmptyError: - temp_sous_calcul_traitement_6 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1431, - start_column=20, - end_line=1431, - end_column=24, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_7 = situation_familiale_calcul_apl_8 - except EmptyError: - temp_sous_calcul_traitement_7 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1433, - start_column=46, - end_line=1433, - end_column=76, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_8 = nombre_personnes_a_charge_8 - except EmptyError: - temp_sous_calcul_traitement_8 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1430, - start_column=41, - end_line=1430, - end_column=66, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_9 = date_courante_11 - except EmptyError: - temp_sous_calcul_traitement_9 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1432, - start_column=29, - end_line=1432, - end_column=42, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_10 = location_2.beneficiaire_aide_adulte_ou_enfant_handicapes - except EmptyError: - temp_sous_calcul_traitement_10 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1436, - start_column=15, - end_line=1436, - end_column=69, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_11 = ressources_menage_avec_arrondi - except EmptyError: - temp_sous_calcul_traitement_11 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1429, - start_column=43, - end_line=1429, - end_column=60, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_12 = location_2.loyer_principal - except EmptyError: - temp_sous_calcul_traitement_12 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1434, + start_line=1446, start_column=31, - end_line=1434, + end_line=1446, end_column=55, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -16876,13 +17118,29 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_13 = location_2.logement_meuble_d842_2 + temp_sous_calcul_traitement_15 = ressources_menage_avec_arrondi except EmptyError: - temp_sous_calcul_traitement_13 = dead_value + temp_sous_calcul_traitement_15 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1447, - start_column=38, - end_line=1447, + start_line=1441, + start_column=43, + end_line=1441, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_16 = location_2.beneficiaire_aide_adulte_ou_enfant_handicapes + except EmptyError: + temp_sous_calcul_traitement_16 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1448, + start_column=15, + end_line=1448, end_column=69, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -16891,23 +17149,151 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Livre VIII : Aides personnelles au logement", "Partie réglementaire", "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_17 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_17 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1444, + start_column=29, + end_line=1444, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_18 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_18 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1442, + start_column=41, + end_line=1442, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_19 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_19 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1445, + start_column=46, + end_line=1445, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_20 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_20 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1443, + start_column=20, + end_line=1443, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_21 = location_2.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_21 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1449, + start_column=36, + end_line=1449, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_22 = location_2.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_22 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1452, + start_column=15, + end_line=1452, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_23 = type_aide_2 + except EmptyError: + temp_sous_calcul_traitement_23 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1453, + start_column=25, + end_line=1453, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_24 = location_2.colocation + except EmptyError: + temp_sous_calcul_traitement_24 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1450, + start_column=26, + end_line=1450, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) try: match_arg_505 = location_2.bailleur if match_arg_505.code == TypeBailleur_Code.BailleurSocial: bailleur_1 = match_arg_505.value - temp_sous_calcul_traitement_14 = bailleur_1.reduction_loyer_solidarite_percue + temp_sous_calcul_traitement_25 = bailleur_1.reduction_loyer_solidarite_percue elif match_arg_505.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: _ = match_arg_505.value - temp_sous_calcul_traitement_14 = money_of_cents_string("0") + temp_sous_calcul_traitement_25 = money_of_cents_string("0") elif match_arg_505.code == TypeBailleur_Code.BailleurPrive: _ = match_arg_505.value - temp_sous_calcul_traitement_14 = money_of_cents_string("0") + temp_sous_calcul_traitement_25 = money_of_cents_string("0") except EmptyError: - temp_sous_calcul_traitement_14 = dead_value + temp_sous_calcul_traitement_25 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1443, + start_line=1455, start_column=16, - end_line=1446, + end_line=1458, end_column=39, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -16917,141 +17303,13 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_15 = location_2.colocation + temp_sous_calcul_traitement_26 = location_2.logement_meuble_d842_2 except EmptyError: - temp_sous_calcul_traitement_15 = dead_value + temp_sous_calcul_traitement_26 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1438, - start_column=26, - end_line=1438, - end_column=45, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_16 = type_aide_2 - except EmptyError: - temp_sous_calcul_traitement_16 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1441, - start_column=25, - end_line=1441, - end_column=34, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_17 = location_2.agees_ou_handicap_adultes_hebergees_onereux_particuliers - except EmptyError: - temp_sous_calcul_traitement_17 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1440, - start_column=15, - end_line=1440, - end_column=80, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_18 = location_2.logement_est_chambre - except EmptyError: - temp_sous_calcul_traitement_18 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1437, - start_column=36, - end_line=1437, - end_column=65, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_19 = zone_6 - except EmptyError: - temp_sous_calcul_traitement_19 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1431, - start_column=20, - end_line=1431, - end_column=24, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_20 = situation_familiale_calcul_apl_8 - except EmptyError: - temp_sous_calcul_traitement_20 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1433, - start_column=46, - end_line=1433, - end_column=76, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_21 = nombre_personnes_a_charge_8 - except EmptyError: - temp_sous_calcul_traitement_21 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1430, - start_column=41, - end_line=1430, - end_column=66, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_22 = date_courante_11 - except EmptyError: - temp_sous_calcul_traitement_22 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1432, - start_column=29, - end_line=1432, - end_column=42, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_23 = location_2.beneficiaire_aide_adulte_ou_enfant_handicapes - except EmptyError: - temp_sous_calcul_traitement_23 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1436, - start_column=15, - end_line=1436, + start_line=1459, + start_column=38, + end_line=1459, end_column=69, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -17061,13 +17319,29 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_24 = ressources_menage_avec_arrondi + temp_sous_calcul_traitement_27 = location_2.loyer_principal except EmptyError: - temp_sous_calcul_traitement_24 = dead_value + temp_sous_calcul_traitement_27 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1429, + start_line=1446, + start_column=31, + end_line=1446, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_28 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_28 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1441, start_column=43, - end_line=1429, + end_line=1441, end_column=60, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -17077,13 +17351,198 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_25 = location_2.loyer_principal + temp_sous_calcul_traitement_29 = location_2.beneficiaire_aide_adulte_ou_enfant_handicapes except EmptyError: - temp_sous_calcul_traitement_25 = dead_value + temp_sous_calcul_traitement_29 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1434, + start_line=1448, + start_column=15, + end_line=1448, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_30 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_30 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1444, + start_column=29, + end_line=1444, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_31 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_31 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1442, + start_column=41, + end_line=1442, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_32 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_32 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1445, + start_column=46, + end_line=1445, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_33 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_33 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1443, + start_column=20, + end_line=1443, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_34 = location_2.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_34 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1449, + start_column=36, + end_line=1449, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_35 = location_2.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_35 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1452, + start_column=15, + end_line=1452, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_36 = type_aide_2 + except EmptyError: + temp_sous_calcul_traitement_36 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1453, + start_column=25, + end_line=1453, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_37 = location_2.colocation + except EmptyError: + temp_sous_calcul_traitement_37 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1450, + start_column=26, + end_line=1450, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_506 = location_2.bailleur + if match_arg_506.code == TypeBailleur_Code.BailleurSocial: + bailleur_2 = match_arg_506.value + temp_sous_calcul_traitement_38 = bailleur_2.reduction_loyer_solidarite_percue + elif match_arg_506.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_506.value + temp_sous_calcul_traitement_38 = money_of_cents_string("0") + elif match_arg_506.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_506.value + temp_sous_calcul_traitement_38 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_38 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1455, + start_column=16, + end_line=1458, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_39 = location_2.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_39 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1459, + start_column=38, + end_line=1459, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_40 = location_2.loyer_principal + except EmptyError: + temp_sous_calcul_traitement_40 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1446, start_column=31, - end_line=1434, + end_line=1446, end_column=55, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -17092,269 +17551,15 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Livre VIII : Aides personnelles au logement", "Partie réglementaire", "Code de la construction et de l'habitation"])) - temp_sous_calcul_traitement_26 = TraitementFormuleAideFinale(aide_finale_formule = calcul_aide_personnalisee_logement_locatif( - CalculAidePersonnaliseeLogementLocatifIn(loyer_principal_base_in = temp_sous_calcul_traitement_12, - ressources_menage_arrondies_in = temp_sous_calcul_traitement_11, - beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_10, - date_courante_in = temp_sous_calcul_traitement_9, - nombre_personnes_a_charge_in = temp_sous_calcul_traitement_8, - situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_7, - zone_in = temp_sous_calcul_traitement_6, - logement_est_chambre_in = temp_sous_calcul_traitement_5, - agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_4, - type_aide_in = temp_sous_calcul_traitement_3, - colocation_in = temp_sous_calcul_traitement_2, - reduction_loyer_solidarite_in = temp_sous_calcul_traitement_1, - logement_meuble_d842_2_in = temp_sous_calcul_traitement)).aide_finale_formule, - traitement_aide_finale = calcul_aide_personnalisee_logement_locatif( - CalculAidePersonnaliseeLogementLocatifIn(loyer_principal_base_in = temp_sous_calcul_traitement_25, - ressources_menage_arrondies_in = temp_sous_calcul_traitement_24, - beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_23, - date_courante_in = temp_sous_calcul_traitement_22, - nombre_personnes_a_charge_in = temp_sous_calcul_traitement_21, - situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_20, - zone_in = temp_sous_calcul_traitement_19, - logement_est_chambre_in = temp_sous_calcul_traitement_18, - agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_17, - type_aide_in = temp_sous_calcul_traitement_16, - colocation_in = temp_sous_calcul_traitement_15, - reduction_loyer_solidarite_in = temp_sous_calcul_traitement_14, - logement_meuble_d842_2_in = temp_sous_calcul_traitement_13)).traitement_aide_finale) - elif match_arg_503.code == CategorieCalculAPL_Code.AccessionPropriete: - proprietaire_2 = match_arg_503.value try: - temp_sous_calcul_traitement_27 = date_courante_11 - except EmptyError: - temp_sous_calcul_traitement_27 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1483, - start_column=30, - end_line=1483, - end_column=43, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_28 = proprietaire_2.anciennete_logement - except EmptyError: - temp_sous_calcul_traitement_28 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1494, - start_column=36, - end_line=1494, - end_column=68, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_29 = proprietaire_2.pret.type_pret - except EmptyError: - temp_sous_calcul_traitement_29 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1493, - start_column=26, - end_line=1493, - end_column=53, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_30 = zone_6 - except EmptyError: - temp_sous_calcul_traitement_30 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1482, - start_column=21, - end_line=1482, - end_column=25, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_31 = proprietaire_2.situation_r822_11_13_17 - except EmptyError: - temp_sous_calcul_traitement_31 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1492, - start_column=40, - end_line=1492, - end_column=76, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_32 = proprietaire_2.copropriete - except EmptyError: - temp_sous_calcul_traitement_32 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1491, - start_column=28, - end_line=1491, - end_column=52, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_33 = proprietaire_2.date_entree_logement - except EmptyError: - temp_sous_calcul_traitement_33 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1490, - start_column=37, - end_line=1490, - end_column=70, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_34 = proprietaire_2.local_habite_premiere_fois_beneficiaire - except EmptyError: - temp_sous_calcul_traitement_34 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1489, - start_column=14, - end_line=1489, - end_column=66, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_35 = proprietaire_2.pret.date_signature - except EmptyError: - temp_sous_calcul_traitement_35 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1487, - start_column=36, - end_line=1487, - end_column=68, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_36 = proprietaire_2.type_travaux_logement_d832_15 - except EmptyError: - temp_sous_calcul_traitement_36 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1486, - start_column=38, - end_line=1486, - end_column=80, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_37 = situation_familiale_calcul_apl_8 - except EmptyError: - temp_sous_calcul_traitement_37 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1484, - start_column=47, - end_line=1484, - end_column=77, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_38 = nombre_personnes_a_charge_8 - except EmptyError: - temp_sous_calcul_traitement_38 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1481, - start_column=42, - end_line=1481, - end_column=67, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_39 = ressources_menage_avec_arrondi - except EmptyError: - temp_sous_calcul_traitement_39 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1480, - start_column=44, - end_line=1480, - end_column=61, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_40 = proprietaire_2.mensualite_principale - except EmptyError: - temp_sous_calcul_traitement_40 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1485, - start_column=38, - end_line=1485, - end_column=72, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_41 = date_courante_11 + temp_sous_calcul_traitement_41 = ressources_menage_avec_arrondi except EmptyError: temp_sous_calcul_traitement_41 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1483, - start_column=30, - end_line=1483, - end_column=43, + start_line=1441, + start_column=43, + end_line=1441, + end_column=60, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -17363,14 +17568,14 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_42 = proprietaire_2.anciennete_logement + temp_sous_calcul_traitement_42 = location_2.beneficiaire_aide_adulte_ou_enfant_handicapes except EmptyError: temp_sous_calcul_traitement_42 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1494, - start_column=36, - end_line=1494, - end_column=68, + start_line=1448, + start_column=15, + end_line=1448, + end_column=69, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -17379,14 +17584,14 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_43 = proprietaire_2.pret.type_pret + temp_sous_calcul_traitement_43 = date_courante_11 except EmptyError: temp_sous_calcul_traitement_43 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1493, - start_column=26, - end_line=1493, - end_column=53, + start_line=1444, + start_column=29, + end_line=1444, + end_column=42, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -17395,77 +17600,13 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_44 = zone_6 + temp_sous_calcul_traitement_44 = nombre_personnes_a_charge_8 except EmptyError: temp_sous_calcul_traitement_44 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1482, - start_column=21, - end_line=1482, - end_column=25, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_45 = proprietaire_2.situation_r822_11_13_17 - except EmptyError: - temp_sous_calcul_traitement_45 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1492, - start_column=40, - end_line=1492, - end_column=76, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_46 = proprietaire_2.copropriete - except EmptyError: - temp_sous_calcul_traitement_46 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1491, - start_column=28, - end_line=1491, - end_column=52, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_47 = proprietaire_2.date_entree_logement - except EmptyError: - temp_sous_calcul_traitement_47 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1490, - start_column=37, - end_line=1490, - end_column=70, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_48 = proprietaire_2.local_habite_premiere_fois_beneficiaire - except EmptyError: - temp_sous_calcul_traitement_48 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1489, - start_column=14, - end_line=1489, + start_line=1442, + start_column=41, + end_line=1442, end_column=66, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -17475,14 +17616,14 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_49 = proprietaire_2.pret.date_signature + temp_sous_calcul_traitement_45 = situation_familiale_calcul_apl_8 except EmptyError: - temp_sous_calcul_traitement_49 = dead_value + temp_sous_calcul_traitement_45 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1487, - start_column=36, - end_line=1487, - end_column=68, + start_line=1445, + start_column=46, + end_line=1445, + end_column=76, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -17491,13 +17632,45 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_50 = proprietaire_2.type_travaux_logement_d832_15 + temp_sous_calcul_traitement_46 = zone_6 except EmptyError: - temp_sous_calcul_traitement_50 = dead_value + temp_sous_calcul_traitement_46 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1486, - start_column=38, - end_line=1486, + start_line=1443, + start_column=20, + end_line=1443, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_47 = location_2.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_47 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1449, + start_column=36, + end_line=1449, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_48 = location_2.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_48 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1452, + start_column=15, + end_line=1452, end_column=80, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -17507,14 +17680,55 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_51 = situation_familiale_calcul_apl_8 + temp_sous_calcul_traitement_49 = type_aide_2 + except EmptyError: + temp_sous_calcul_traitement_49 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1453, + start_column=25, + end_line=1453, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_50 = location_2.colocation + except EmptyError: + temp_sous_calcul_traitement_50 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1450, + start_column=26, + end_line=1450, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_507 = location_2.bailleur + if match_arg_507.code == TypeBailleur_Code.BailleurSocial: + bailleur_3 = match_arg_507.value + temp_sous_calcul_traitement_51 = bailleur_3.reduction_loyer_solidarite_percue + elif match_arg_507.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_507.value + temp_sous_calcul_traitement_51 = money_of_cents_string("0") + elif match_arg_507.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_507.value + temp_sous_calcul_traitement_51 = money_of_cents_string("0") except EmptyError: temp_sous_calcul_traitement_51 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1484, - start_column=47, - end_line=1484, - end_column=77, + start_line=1455, + start_column=16, + end_line=1458, + end_column=39, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -17523,14 +17737,14 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_52 = nombre_personnes_a_charge_8 + temp_sous_calcul_traitement_52 = location_2.logement_meuble_d842_2 except EmptyError: temp_sous_calcul_traitement_52 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1481, - start_column=42, - end_line=1481, - end_column=67, + start_line=1459, + start_column=38, + end_line=1459, + end_column=69, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -17539,14 +17753,14 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_53 = ressources_menage_avec_arrondi + temp_sous_calcul_traitement_53 = location_2.loyer_principal except EmptyError: temp_sous_calcul_traitement_53 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1480, - start_column=44, - end_line=1480, - end_column=61, + start_line=1446, + start_column=31, + end_line=1446, + end_column=55, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -17555,14 +17769,14 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_54 = proprietaire_2.mensualite_principale + temp_sous_calcul_traitement_54 = ressources_menage_avec_arrondi except EmptyError: temp_sous_calcul_traitement_54 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1485, - start_column=38, - end_line=1485, - end_column=72, + start_line=1441, + start_column=43, + end_line=1441, + end_column=60, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -17570,51 +17784,47 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Livre VIII : Aides personnelles au logement", "Partie réglementaire", "Code de la construction et de l'habitation"])) - temp_sous_calcul_traitement_26 = TraitementFormuleAideFinale(aide_finale_formule = calcul_aide_personnalisee_logement_accession_propriete( - CalculAidePersonnaliseeLogementAccessionProprieteIn(mensualite_principale_in = temp_sous_calcul_traitement_40, - ressources_menage_arrondies_in = temp_sous_calcul_traitement_39, - nombre_personnes_a_charge_in = temp_sous_calcul_traitement_38, - situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_37, - type_travaux_logement_in = temp_sous_calcul_traitement_36, - date_signature_pret_in = temp_sous_calcul_traitement_35, - local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_34, - date_entree_logement_in = temp_sous_calcul_traitement_33, - copropriete_in = temp_sous_calcul_traitement_32, - situation_r822_11_13_17_in = temp_sous_calcul_traitement_31, - zone_in = temp_sous_calcul_traitement_30, - type_pret_in = temp_sous_calcul_traitement_29, - anciennete_logement_in = temp_sous_calcul_traitement_28, - date_courante_in = temp_sous_calcul_traitement_27)).aide_finale_formule, - traitement_aide_finale = calcul_aide_personnalisee_logement_accession_propriete( - CalculAidePersonnaliseeLogementAccessionProprieteIn(mensualite_principale_in = temp_sous_calcul_traitement_54, - ressources_menage_arrondies_in = temp_sous_calcul_traitement_53, - nombre_personnes_a_charge_in = temp_sous_calcul_traitement_52, - situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_51, - type_travaux_logement_in = temp_sous_calcul_traitement_50, - date_signature_pret_in = temp_sous_calcul_traitement_49, - local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_48, - date_entree_logement_in = temp_sous_calcul_traitement_47, - copropriete_in = temp_sous_calcul_traitement_46, - situation_r822_11_13_17_in = temp_sous_calcul_traitement_45, - zone_in = temp_sous_calcul_traitement_44, - type_pret_in = temp_sous_calcul_traitement_43, - anciennete_logement_in = temp_sous_calcul_traitement_42, - date_courante_in = temp_sous_calcul_traitement_41)).traitement_aide_finale) - elif match_arg_503.code == CategorieCalculAPL_Code.LogementFoyer: - logement_foyer_ = match_arg_503.value - def temp_sous_calcul_traitement_55(_:Unit): - raise EmptyError - def temp_sous_calcul_traitement_56(_:Unit): - raise EmptyError try: - temp_sous_calcul_traitement_57 = logement_foyer_.redevance + temp_sous_calcul_traitement_55 = location_2.beneficiaire_aide_adulte_ou_enfant_handicapes + except EmptyError: + temp_sous_calcul_traitement_55 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1448, + start_column=15, + end_line=1448, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_56 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_56 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1444, + start_column=29, + end_line=1444, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_57 = nombre_personnes_a_charge_8 except EmptyError: temp_sous_calcul_traitement_57 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1465, - start_column=25, - end_line=1465, - end_column=50, + start_line=1442, + start_column=41, + end_line=1442, + end_column=66, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -17623,14 +17833,14 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_58 = date_courante_11 + temp_sous_calcul_traitement_58 = situation_familiale_calcul_apl_8 except EmptyError: temp_sous_calcul_traitement_58 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1463, - start_column=29, - end_line=1463, - end_column=42, + start_line=1445, + start_column=46, + end_line=1445, + end_column=76, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -17643,9 +17853,9 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal except EmptyError: temp_sous_calcul_traitement_59 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1462, + start_line=1443, start_column=20, - end_line=1462, + end_line=1443, end_column=24, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -17655,14 +17865,14 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_60 = situation_familiale_calcul_apl_8 + temp_sous_calcul_traitement_60 = location_2.logement_est_chambre except EmptyError: temp_sous_calcul_traitement_60 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1464, - start_column=46, - end_line=1464, - end_column=76, + start_line=1449, + start_column=36, + end_line=1449, + end_column=65, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -17671,14 +17881,14 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_61 = nombre_personnes_a_charge_8 + temp_sous_calcul_traitement_61 = location_2.agees_ou_handicap_adultes_hebergees_onereux_particuliers except EmptyError: temp_sous_calcul_traitement_61 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1461, - start_column=41, - end_line=1461, - end_column=66, + start_line=1452, + start_column=15, + end_line=1452, + end_column=80, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -17687,13 +17897,102 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_62 = ressources_menage_avec_arrondi + temp_sous_calcul_traitement_62 = type_aide_2 except EmptyError: temp_sous_calcul_traitement_62 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1460, + start_line=1453, + start_column=25, + end_line=1453, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_63 = location_2.colocation + except EmptyError: + temp_sous_calcul_traitement_63 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1450, + start_column=26, + end_line=1450, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_508 = location_2.bailleur + if match_arg_508.code == TypeBailleur_Code.BailleurSocial: + bailleur_4 = match_arg_508.value + temp_sous_calcul_traitement_64 = bailleur_4.reduction_loyer_solidarite_percue + elif match_arg_508.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_508.value + temp_sous_calcul_traitement_64 = money_of_cents_string("0") + elif match_arg_508.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_508.value + temp_sous_calcul_traitement_64 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_64 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1455, + start_column=16, + end_line=1458, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_65 = location_2.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_65 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1459, + start_column=38, + end_line=1459, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_66 = location_2.loyer_principal + except EmptyError: + temp_sous_calcul_traitement_66 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1446, + start_column=31, + end_line=1446, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_67 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_67 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1441, start_column=43, - end_line=1460, + end_line=1441, end_column=60, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -17703,65 +18002,29 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_63 = logement_foyer_.date_conventionnement - except EmptyError: - temp_sous_calcul_traitement_63 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1467, - start_column=37, - end_line=1467, - end_column=74, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_64 = logement_foyer_.type - except EmptyError: - temp_sous_calcul_traitement_64 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1466, - start_column=35, - end_line=1466, - end_column=55, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - def temp_sous_calcul_traitement_65(_:Unit): - raise EmptyError - def temp_sous_calcul_traitement_66(_:Unit): - raise EmptyError - try: - temp_sous_calcul_traitement_67 = logement_foyer_.redevance - except EmptyError: - temp_sous_calcul_traitement_67 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1465, - start_column=25, - end_line=1465, - end_column=50, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_68 = date_courante_11 + temp_sous_calcul_traitement_68 = location_2.beneficiaire_aide_adulte_ou_enfant_handicapes except EmptyError: temp_sous_calcul_traitement_68 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1463, + start_line=1448, + start_column=15, + end_line=1448, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_69 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_69 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1444, start_column=29, - end_line=1463, + end_line=1444, end_column=42, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -17771,45 +18034,13 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_69 = zone_6 - except EmptyError: - temp_sous_calcul_traitement_69 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1462, - start_column=20, - end_line=1462, - end_column=24, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_70 = situation_familiale_calcul_apl_8 + temp_sous_calcul_traitement_70 = nombre_personnes_a_charge_8 except EmptyError: temp_sous_calcul_traitement_70 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1464, - start_column=46, - end_line=1464, - end_column=76, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_71 = nombre_personnes_a_charge_8 - except EmptyError: - temp_sous_calcul_traitement_71 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1461, + start_line=1442, start_column=41, - end_line=1461, + end_line=1442, end_column=66, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -17819,13 +18050,166 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_72 = ressources_menage_avec_arrondi + temp_sous_calcul_traitement_71 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_71 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1445, + start_column=46, + end_line=1445, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_72 = zone_6 except EmptyError: temp_sous_calcul_traitement_72 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1460, + start_line=1443, + start_column=20, + end_line=1443, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_73 = location_2.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_73 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1449, + start_column=36, + end_line=1449, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_74 = location_2.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_74 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1452, + start_column=15, + end_line=1452, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_75 = type_aide_2 + except EmptyError: + temp_sous_calcul_traitement_75 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1453, + start_column=25, + end_line=1453, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_76 = location_2.colocation + except EmptyError: + temp_sous_calcul_traitement_76 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1450, + start_column=26, + end_line=1450, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_509 = location_2.bailleur + if match_arg_509.code == TypeBailleur_Code.BailleurSocial: + bailleur_5 = match_arg_509.value + temp_sous_calcul_traitement_77 = bailleur_5.reduction_loyer_solidarite_percue + elif match_arg_509.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_509.value + temp_sous_calcul_traitement_77 = money_of_cents_string("0") + elif match_arg_509.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_509.value + temp_sous_calcul_traitement_77 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_77 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1455, + start_column=16, + end_line=1458, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_78 = location_2.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_78 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1459, + start_column=38, + end_line=1459, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_79 = location_2.loyer_principal + except EmptyError: + temp_sous_calcul_traitement_79 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1446, + start_column=31, + end_line=1446, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_80 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_80 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1441, start_column=43, - end_line=1460, + end_line=1441, end_column=60, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -17835,13 +18219,4462 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_73 = logement_foyer_.date_conventionnement + temp_sous_calcul_traitement_81 = location_2.beneficiaire_aide_adulte_ou_enfant_handicapes except EmptyError: - temp_sous_calcul_traitement_73 = dead_value + temp_sous_calcul_traitement_81 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1467, + start_line=1448, + start_column=15, + end_line=1448, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_82 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_82 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1444, + start_column=29, + end_line=1444, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_83 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_83 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1442, + start_column=41, + end_line=1442, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_84 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_84 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1445, + start_column=46, + end_line=1445, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_85 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_85 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1443, + start_column=20, + end_line=1443, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_86 = location_2.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_86 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1449, + start_column=36, + end_line=1449, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_87 = location_2.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_87 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1452, + start_column=15, + end_line=1452, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_88 = type_aide_2 + except EmptyError: + temp_sous_calcul_traitement_88 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1453, + start_column=25, + end_line=1453, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_89 = location_2.colocation + except EmptyError: + temp_sous_calcul_traitement_89 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1450, + start_column=26, + end_line=1450, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_510 = location_2.bailleur + if match_arg_510.code == TypeBailleur_Code.BailleurSocial: + bailleur_6 = match_arg_510.value + temp_sous_calcul_traitement_90 = bailleur_6.reduction_loyer_solidarite_percue + elif match_arg_510.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_510.value + temp_sous_calcul_traitement_90 = money_of_cents_string("0") + elif match_arg_510.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_510.value + temp_sous_calcul_traitement_90 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_90 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1455, + start_column=16, + end_line=1458, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_91 = location_2.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_91 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1459, + start_column=38, + end_line=1459, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_92(param_41:Money): + try: + temp_sous_calcul_traitement_93 = location_2.loyer_principal + except EmptyError: + temp_sous_calcul_traitement_93 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1446, + start_column=31, + end_line=1446, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_94 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_94 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1441, + start_column=43, + end_line=1441, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_95 = location_2.beneficiaire_aide_adulte_ou_enfant_handicapes + except EmptyError: + temp_sous_calcul_traitement_95 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1448, + start_column=15, + end_line=1448, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_96 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_96 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1444, + start_column=29, + end_line=1444, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_97 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_97 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1442, + start_column=41, + end_line=1442, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_98 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_98 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1445, + start_column=46, + end_line=1445, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_99 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_99 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1443, + start_column=20, + end_line=1443, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_100 = location_2.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_100 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1449, + start_column=36, + end_line=1449, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_101 = location_2.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_101 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1452, + start_column=15, + end_line=1452, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_102 = type_aide_2 + except EmptyError: + temp_sous_calcul_traitement_102 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1453, + start_column=25, + end_line=1453, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_103 = location_2.colocation + except EmptyError: + temp_sous_calcul_traitement_103 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1450, + start_column=26, + end_line=1450, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_511 = location_2.bailleur + if match_arg_511.code == TypeBailleur_Code.BailleurSocial: + bailleur_7 = match_arg_511.value + temp_sous_calcul_traitement_104 = bailleur_7.reduction_loyer_solidarite_percue + elif match_arg_511.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_511.value + temp_sous_calcul_traitement_104 = money_of_cents_string("0") + elif match_arg_511.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_511.value + temp_sous_calcul_traitement_104 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_104 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1455, + start_column=16, + end_line=1458, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_105 = location_2.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_105 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1459, + start_column=38, + end_line=1459, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + return calcul_aide_personnalisee_logement_locatif(CalculAidePersonnaliseeLogementLocatifIn(loyer_principal_base_in = temp_sous_calcul_traitement_93, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_94, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_95, + date_courante_in = temp_sous_calcul_traitement_96, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_97, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_98, + zone_in = temp_sous_calcul_traitement_99, + logement_est_chambre_in = temp_sous_calcul_traitement_100, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_101, + type_aide_in = temp_sous_calcul_traitement_102, + colocation_in = temp_sous_calcul_traitement_103, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_104, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_105)).traitement_aide_finale( + param_41) + try: + temp_sous_calcul_traitement_106 = location_2.loyer_principal + except EmptyError: + temp_sous_calcul_traitement_106 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1446, + start_column=31, + end_line=1446, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_107 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_107 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1441, + start_column=43, + end_line=1441, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_108 = location_2.beneficiaire_aide_adulte_ou_enfant_handicapes + except EmptyError: + temp_sous_calcul_traitement_108 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1448, + start_column=15, + end_line=1448, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_109 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_109 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1444, + start_column=29, + end_line=1444, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_110 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_110 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1442, + start_column=41, + end_line=1442, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_111 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_111 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1445, + start_column=46, + end_line=1445, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_112 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_112 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1443, + start_column=20, + end_line=1443, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_113 = location_2.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_113 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1449, + start_column=36, + end_line=1449, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_114 = location_2.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_114 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1452, + start_column=15, + end_line=1452, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_115 = type_aide_2 + except EmptyError: + temp_sous_calcul_traitement_115 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1453, + start_column=25, + end_line=1453, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_116 = location_2.colocation + except EmptyError: + temp_sous_calcul_traitement_116 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1450, + start_column=26, + end_line=1450, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_512 = location_2.bailleur + if match_arg_512.code == TypeBailleur_Code.BailleurSocial: + bailleur_8 = match_arg_512.value + temp_sous_calcul_traitement_117 = bailleur_8.reduction_loyer_solidarite_percue + elif match_arg_512.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_512.value + temp_sous_calcul_traitement_117 = money_of_cents_string("0") + elif match_arg_512.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_512.value + temp_sous_calcul_traitement_117 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_117 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1455, + start_column=16, + end_line=1458, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_118 = location_2.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_118 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1459, + start_column=38, + end_line=1459, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_119 = location_2.loyer_principal + except EmptyError: + temp_sous_calcul_traitement_119 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1446, + start_column=31, + end_line=1446, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_120 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_120 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1441, + start_column=43, + end_line=1441, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_121 = location_2.beneficiaire_aide_adulte_ou_enfant_handicapes + except EmptyError: + temp_sous_calcul_traitement_121 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1448, + start_column=15, + end_line=1448, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_122 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_122 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1444, + start_column=29, + end_line=1444, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_123 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_123 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1442, + start_column=41, + end_line=1442, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_124 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_124 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1445, + start_column=46, + end_line=1445, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_125 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_125 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1443, + start_column=20, + end_line=1443, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_126 = location_2.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_126 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1449, + start_column=36, + end_line=1449, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_127 = location_2.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_127 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1452, + start_column=15, + end_line=1452, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_128 = type_aide_2 + except EmptyError: + temp_sous_calcul_traitement_128 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1453, + start_column=25, + end_line=1453, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_129 = location_2.colocation + except EmptyError: + temp_sous_calcul_traitement_129 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1450, + start_column=26, + end_line=1450, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_513 = location_2.bailleur + if match_arg_513.code == TypeBailleur_Code.BailleurSocial: + bailleur_9 = match_arg_513.value + temp_sous_calcul_traitement_130 = bailleur_9.reduction_loyer_solidarite_percue + elif match_arg_513.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_513.value + temp_sous_calcul_traitement_130 = money_of_cents_string("0") + elif match_arg_513.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_513.value + temp_sous_calcul_traitement_130 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_130 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1455, + start_column=16, + end_line=1458, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_131 = location_2.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_131 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1459, + start_column=38, + end_line=1459, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_132 = location_2.loyer_principal + except EmptyError: + temp_sous_calcul_traitement_132 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1446, + start_column=31, + end_line=1446, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_133 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_133 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1441, + start_column=43, + end_line=1441, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_134 = location_2.beneficiaire_aide_adulte_ou_enfant_handicapes + except EmptyError: + temp_sous_calcul_traitement_134 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1448, + start_column=15, + end_line=1448, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_135 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_135 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1444, + start_column=29, + end_line=1444, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_136 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_136 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1442, + start_column=41, + end_line=1442, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_137 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_137 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1445, + start_column=46, + end_line=1445, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_138 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_138 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1443, + start_column=20, + end_line=1443, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_139 = location_2.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_139 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1449, + start_column=36, + end_line=1449, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_140 = location_2.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_140 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1452, + start_column=15, + end_line=1452, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_141 = type_aide_2 + except EmptyError: + temp_sous_calcul_traitement_141 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1453, + start_column=25, + end_line=1453, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_142 = location_2.colocation + except EmptyError: + temp_sous_calcul_traitement_142 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1450, + start_column=26, + end_line=1450, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_514 = location_2.bailleur + if match_arg_514.code == TypeBailleur_Code.BailleurSocial: + bailleur_10 = match_arg_514.value + temp_sous_calcul_traitement_143 = bailleur_10.reduction_loyer_solidarite_percue + elif match_arg_514.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_514.value + temp_sous_calcul_traitement_143 = money_of_cents_string("0") + elif match_arg_514.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_514.value + temp_sous_calcul_traitement_143 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_143 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1455, + start_column=16, + end_line=1458, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_144 = location_2.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_144 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1459, + start_column=38, + end_line=1459, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_145 = location_2.loyer_principal + except EmptyError: + temp_sous_calcul_traitement_145 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1446, + start_column=31, + end_line=1446, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_146 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_146 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1441, + start_column=43, + end_line=1441, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_147 = location_2.beneficiaire_aide_adulte_ou_enfant_handicapes + except EmptyError: + temp_sous_calcul_traitement_147 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1448, + start_column=15, + end_line=1448, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_148 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_148 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1444, + start_column=29, + end_line=1444, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_149 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_149 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1442, + start_column=41, + end_line=1442, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_150 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_150 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1445, + start_column=46, + end_line=1445, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_151 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_151 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1443, + start_column=20, + end_line=1443, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_152 = location_2.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_152 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1449, + start_column=36, + end_line=1449, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_153 = location_2.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_153 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1452, + start_column=15, + end_line=1452, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_154 = type_aide_2 + except EmptyError: + temp_sous_calcul_traitement_154 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1453, + start_column=25, + end_line=1453, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_155 = location_2.colocation + except EmptyError: + temp_sous_calcul_traitement_155 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1450, + start_column=26, + end_line=1450, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_515 = location_2.bailleur + if match_arg_515.code == TypeBailleur_Code.BailleurSocial: + bailleur_11 = match_arg_515.value + temp_sous_calcul_traitement_156 = bailleur_11.reduction_loyer_solidarite_percue + elif match_arg_515.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_515.value + temp_sous_calcul_traitement_156 = money_of_cents_string("0") + elif match_arg_515.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_515.value + temp_sous_calcul_traitement_156 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_156 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1455, + start_column=16, + end_line=1458, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_157 = location_2.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_157 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1459, + start_column=38, + end_line=1459, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_158 = location_2.loyer_principal + except EmptyError: + temp_sous_calcul_traitement_158 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1446, + start_column=31, + end_line=1446, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_159 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_159 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1441, + start_column=43, + end_line=1441, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_160 = location_2.beneficiaire_aide_adulte_ou_enfant_handicapes + except EmptyError: + temp_sous_calcul_traitement_160 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1448, + start_column=15, + end_line=1448, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_161 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_161 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1444, + start_column=29, + end_line=1444, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_162 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_162 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1442, + start_column=41, + end_line=1442, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_163 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_163 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1445, + start_column=46, + end_line=1445, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_164 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_164 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1443, + start_column=20, + end_line=1443, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_165 = location_2.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_165 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1449, + start_column=36, + end_line=1449, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_166 = location_2.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_166 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1452, + start_column=15, + end_line=1452, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_167 = type_aide_2 + except EmptyError: + temp_sous_calcul_traitement_167 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1453, + start_column=25, + end_line=1453, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_168 = location_2.colocation + except EmptyError: + temp_sous_calcul_traitement_168 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1450, + start_column=26, + end_line=1450, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_516 = location_2.bailleur + if match_arg_516.code == TypeBailleur_Code.BailleurSocial: + bailleur_12 = match_arg_516.value + temp_sous_calcul_traitement_169 = bailleur_12.reduction_loyer_solidarite_percue + elif match_arg_516.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_516.value + temp_sous_calcul_traitement_169 = money_of_cents_string("0") + elif match_arg_516.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_516.value + temp_sous_calcul_traitement_169 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_169 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1455, + start_column=16, + end_line=1458, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_170 = location_2.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_170 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1459, + start_column=38, + end_line=1459, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_171 = location_2.loyer_principal + except EmptyError: + temp_sous_calcul_traitement_171 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1446, + start_column=31, + end_line=1446, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_172 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_172 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1441, + start_column=43, + end_line=1441, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_173 = location_2.beneficiaire_aide_adulte_ou_enfant_handicapes + except EmptyError: + temp_sous_calcul_traitement_173 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1448, + start_column=15, + end_line=1448, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_174 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_174 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1444, + start_column=29, + end_line=1444, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_175 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_175 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1442, + start_column=41, + end_line=1442, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_176 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_176 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1445, + start_column=46, + end_line=1445, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_177 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_177 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1443, + start_column=20, + end_line=1443, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_178 = location_2.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_178 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1449, + start_column=36, + end_line=1449, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_179 = location_2.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_179 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1452, + start_column=15, + end_line=1452, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_180 = type_aide_2 + except EmptyError: + temp_sous_calcul_traitement_180 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1453, + start_column=25, + end_line=1453, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_181 = location_2.colocation + except EmptyError: + temp_sous_calcul_traitement_181 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1450, + start_column=26, + end_line=1450, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_517 = location_2.bailleur + if match_arg_517.code == TypeBailleur_Code.BailleurSocial: + bailleur_13 = match_arg_517.value + temp_sous_calcul_traitement_182 = bailleur_13.reduction_loyer_solidarite_percue + elif match_arg_517.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_517.value + temp_sous_calcul_traitement_182 = money_of_cents_string("0") + elif match_arg_517.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_517.value + temp_sous_calcul_traitement_182 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_182 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1455, + start_column=16, + end_line=1458, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_183 = location_2.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_183 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1459, + start_column=38, + end_line=1459, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + temp_sous_calcul_traitement_184 = TraitementFormuleAideFinale(aide_finale_formule = CalculAidePersonnaliseeLogementLocatif(montant_forfaitaire_charges_d823_16 = calcul_aide_personnalisee_logement_locatif( + CalculAidePersonnaliseeLogementLocatifIn(loyer_principal_base_in = temp_sous_calcul_traitement_79, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_80, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_81, + date_courante_in = temp_sous_calcul_traitement_82, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_83, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_84, + zone_in = temp_sous_calcul_traitement_85, + logement_est_chambre_in = temp_sous_calcul_traitement_86, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_87, + type_aide_in = temp_sous_calcul_traitement_88, + colocation_in = temp_sous_calcul_traitement_89, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_90, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_91)).montant_forfaitaire_charges_d823_16, + plafond_loyer_d823_16_2 = calcul_aide_personnalisee_logement_locatif( + CalculAidePersonnaliseeLogementLocatifIn(loyer_principal_base_in = temp_sous_calcul_traitement_66, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_67, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_68, + date_courante_in = temp_sous_calcul_traitement_69, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_70, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_71, + zone_in = temp_sous_calcul_traitement_72, + logement_est_chambre_in = temp_sous_calcul_traitement_73, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_74, + type_aide_in = temp_sous_calcul_traitement_75, + colocation_in = temp_sous_calcul_traitement_76, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_77, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_78)).plafond_loyer_d823_16_2, + participation_minimale = calcul_aide_personnalisee_logement_locatif( + CalculAidePersonnaliseeLogementLocatifIn(loyer_principal_base_in = temp_sous_calcul_traitement_53, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_54, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_55, + date_courante_in = temp_sous_calcul_traitement_56, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_57, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_58, + zone_in = temp_sous_calcul_traitement_59, + logement_est_chambre_in = temp_sous_calcul_traitement_60, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_61, + type_aide_in = temp_sous_calcul_traitement_62, + colocation_in = temp_sous_calcul_traitement_63, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_64, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_65)).participation_minimale, + taux_composition_familiale = calcul_aide_personnalisee_logement_locatif( + CalculAidePersonnaliseeLogementLocatifIn(loyer_principal_base_in = temp_sous_calcul_traitement_40, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_41, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_42, + date_courante_in = temp_sous_calcul_traitement_43, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_44, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_45, + zone_in = temp_sous_calcul_traitement_46, + logement_est_chambre_in = temp_sous_calcul_traitement_47, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_48, + type_aide_in = temp_sous_calcul_traitement_49, + colocation_in = temp_sous_calcul_traitement_50, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_51, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_52)).taux_composition_familiale, + participation_personnelle = calcul_aide_personnalisee_logement_locatif( + CalculAidePersonnaliseeLogementLocatifIn(loyer_principal_base_in = temp_sous_calcul_traitement_27, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_28, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_29, + date_courante_in = temp_sous_calcul_traitement_30, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_31, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_32, + zone_in = temp_sous_calcul_traitement_33, + logement_est_chambre_in = temp_sous_calcul_traitement_34, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_35, + type_aide_in = temp_sous_calcul_traitement_36, + colocation_in = temp_sous_calcul_traitement_37, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_38, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_39)).participation_personnelle, + aide_finale_formule = calcul_aide_personnalisee_logement_locatif( + CalculAidePersonnaliseeLogementLocatifIn(loyer_principal_base_in = temp_sous_calcul_traitement_14, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_15, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_16, + date_courante_in = temp_sous_calcul_traitement_17, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_18, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_19, + zone_in = temp_sous_calcul_traitement_20, + logement_est_chambre_in = temp_sous_calcul_traitement_21, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_22, + type_aide_in = temp_sous_calcul_traitement_23, + colocation_in = temp_sous_calcul_traitement_24, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_25, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_26)).aide_finale_formule, + traitement_aide_finale = temp_sous_calcul_traitement).aide_finale_formule, + traitement_aide_finale = CalculAidePersonnaliseeLogementLocatif(montant_forfaitaire_charges_d823_16 = calcul_aide_personnalisee_logement_locatif( + CalculAidePersonnaliseeLogementLocatifIn(loyer_principal_base_in = temp_sous_calcul_traitement_171, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_172, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_173, + date_courante_in = temp_sous_calcul_traitement_174, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_175, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_176, + zone_in = temp_sous_calcul_traitement_177, + logement_est_chambre_in = temp_sous_calcul_traitement_178, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_179, + type_aide_in = temp_sous_calcul_traitement_180, + colocation_in = temp_sous_calcul_traitement_181, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_182, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_183)).montant_forfaitaire_charges_d823_16, + plafond_loyer_d823_16_2 = calcul_aide_personnalisee_logement_locatif( + CalculAidePersonnaliseeLogementLocatifIn(loyer_principal_base_in = temp_sous_calcul_traitement_158, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_159, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_160, + date_courante_in = temp_sous_calcul_traitement_161, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_162, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_163, + zone_in = temp_sous_calcul_traitement_164, + logement_est_chambre_in = temp_sous_calcul_traitement_165, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_166, + type_aide_in = temp_sous_calcul_traitement_167, + colocation_in = temp_sous_calcul_traitement_168, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_169, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_170)).plafond_loyer_d823_16_2, + participation_minimale = calcul_aide_personnalisee_logement_locatif( + CalculAidePersonnaliseeLogementLocatifIn(loyer_principal_base_in = temp_sous_calcul_traitement_145, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_146, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_147, + date_courante_in = temp_sous_calcul_traitement_148, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_149, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_150, + zone_in = temp_sous_calcul_traitement_151, + logement_est_chambre_in = temp_sous_calcul_traitement_152, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_153, + type_aide_in = temp_sous_calcul_traitement_154, + colocation_in = temp_sous_calcul_traitement_155, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_156, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_157)).participation_minimale, + taux_composition_familiale = calcul_aide_personnalisee_logement_locatif( + CalculAidePersonnaliseeLogementLocatifIn(loyer_principal_base_in = temp_sous_calcul_traitement_132, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_133, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_134, + date_courante_in = temp_sous_calcul_traitement_135, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_136, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_137, + zone_in = temp_sous_calcul_traitement_138, + logement_est_chambre_in = temp_sous_calcul_traitement_139, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_140, + type_aide_in = temp_sous_calcul_traitement_141, + colocation_in = temp_sous_calcul_traitement_142, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_143, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_144)).taux_composition_familiale, + participation_personnelle = calcul_aide_personnalisee_logement_locatif( + CalculAidePersonnaliseeLogementLocatifIn(loyer_principal_base_in = temp_sous_calcul_traitement_119, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_120, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_121, + date_courante_in = temp_sous_calcul_traitement_122, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_123, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_124, + zone_in = temp_sous_calcul_traitement_125, + logement_est_chambre_in = temp_sous_calcul_traitement_126, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_127, + type_aide_in = temp_sous_calcul_traitement_128, + colocation_in = temp_sous_calcul_traitement_129, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_130, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_131)).participation_personnelle, + aide_finale_formule = calcul_aide_personnalisee_logement_locatif( + CalculAidePersonnaliseeLogementLocatifIn(loyer_principal_base_in = temp_sous_calcul_traitement_106, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_107, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_108, + date_courante_in = temp_sous_calcul_traitement_109, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_110, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_111, + zone_in = temp_sous_calcul_traitement_112, + logement_est_chambre_in = temp_sous_calcul_traitement_113, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_114, + type_aide_in = temp_sous_calcul_traitement_115, + colocation_in = temp_sous_calcul_traitement_116, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_117, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_118)).aide_finale_formule, + traitement_aide_finale = temp_sous_calcul_traitement_92).traitement_aide_finale) + elif match_arg_503.code == CategorieCalculAPL_Code.AccessionPropriete: + proprietaire_2 = match_arg_503.value + def temp_sous_calcul_traitement_185(param_42:Money): + try: + temp_sous_calcul_traitement_186 = proprietaire_2.mensualite_principale + except EmptyError: + temp_sous_calcul_traitement_186 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1497, + start_column=38, + end_line=1497, + end_column=72, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_187 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_187 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1492, + start_column=44, + end_line=1492, + end_column=61, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_188 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_188 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1493, + start_column=42, + end_line=1493, + end_column=67, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_189 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_189 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1496, + start_column=47, + end_line=1496, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_190 = proprietaire_2.type_travaux_logement_d832_15 + except EmptyError: + temp_sous_calcul_traitement_190 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1498, + start_column=38, + end_line=1498, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_191 = proprietaire_2.pret.date_signature + except EmptyError: + temp_sous_calcul_traitement_191 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1499, + start_column=36, + end_line=1499, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_192 = proprietaire_2.local_habite_premiere_fois_beneficiaire + except EmptyError: + temp_sous_calcul_traitement_192 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1501, + start_column=14, + end_line=1501, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_193 = proprietaire_2.date_entree_logement + except EmptyError: + temp_sous_calcul_traitement_193 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1502, + start_column=37, + end_line=1502, + end_column=70, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_194 = proprietaire_2.copropriete + except EmptyError: + temp_sous_calcul_traitement_194 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1503, + start_column=28, + end_line=1503, + end_column=52, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_195 = proprietaire_2.situation_r822_11_13_17 + except EmptyError: + temp_sous_calcul_traitement_195 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1504, + start_column=40, + end_line=1504, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_196 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_196 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1494, + start_column=21, + end_line=1494, + end_column=25, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_197 = proprietaire_2.pret.type_pret + except EmptyError: + temp_sous_calcul_traitement_197 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1505, + start_column=26, + end_line=1505, + end_column=53, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_198 = proprietaire_2.anciennete_logement + except EmptyError: + temp_sous_calcul_traitement_198 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1506, + start_column=36, + end_line=1506, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_199 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_199 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1495, + start_column=30, + end_line=1495, + end_column=43, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + return calcul_aide_personnalisee_logement_accession_propriete( + CalculAidePersonnaliseeLogementAccessionProprieteIn(mensualite_principale_in = temp_sous_calcul_traitement_186, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_187, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_188, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_189, + type_travaux_logement_in = temp_sous_calcul_traitement_190, + date_signature_pret_in = temp_sous_calcul_traitement_191, + local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_192, + date_entree_logement_in = temp_sous_calcul_traitement_193, + copropriete_in = temp_sous_calcul_traitement_194, + situation_r822_11_13_17_in = temp_sous_calcul_traitement_195, + zone_in = temp_sous_calcul_traitement_196, + type_pret_in = temp_sous_calcul_traitement_197, + anciennete_logement_in = temp_sous_calcul_traitement_198, + date_courante_in = temp_sous_calcul_traitement_199)).traitement_aide_finale( + param_42) + try: + temp_sous_calcul_traitement_200 = proprietaire_2.mensualite_principale + except EmptyError: + temp_sous_calcul_traitement_200 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1497, + start_column=38, + end_line=1497, + end_column=72, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_201 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_201 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1492, + start_column=44, + end_line=1492, + end_column=61, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_202 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_202 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1493, + start_column=42, + end_line=1493, + end_column=67, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_203 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_203 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1496, + start_column=47, + end_line=1496, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_204 = proprietaire_2.type_travaux_logement_d832_15 + except EmptyError: + temp_sous_calcul_traitement_204 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1498, + start_column=38, + end_line=1498, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_205 = proprietaire_2.pret.date_signature + except EmptyError: + temp_sous_calcul_traitement_205 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1499, + start_column=36, + end_line=1499, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_206 = proprietaire_2.local_habite_premiere_fois_beneficiaire + except EmptyError: + temp_sous_calcul_traitement_206 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1501, + start_column=14, + end_line=1501, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_207 = proprietaire_2.date_entree_logement + except EmptyError: + temp_sous_calcul_traitement_207 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1502, start_column=37, - end_line=1467, + end_line=1502, + end_column=70, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_208 = proprietaire_2.copropriete + except EmptyError: + temp_sous_calcul_traitement_208 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1503, + start_column=28, + end_line=1503, + end_column=52, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_209 = proprietaire_2.situation_r822_11_13_17 + except EmptyError: + temp_sous_calcul_traitement_209 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1504, + start_column=40, + end_line=1504, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_210 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_210 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1494, + start_column=21, + end_line=1494, + end_column=25, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_211 = proprietaire_2.pret.type_pret + except EmptyError: + temp_sous_calcul_traitement_211 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1505, + start_column=26, + end_line=1505, + end_column=53, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_212 = proprietaire_2.anciennete_logement + except EmptyError: + temp_sous_calcul_traitement_212 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1506, + start_column=36, + end_line=1506, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_213 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_213 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1495, + start_column=30, + end_line=1495, + end_column=43, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_214 = proprietaire_2.mensualite_principale + except EmptyError: + temp_sous_calcul_traitement_214 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1497, + start_column=38, + end_line=1497, + end_column=72, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_215 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_215 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1492, + start_column=44, + end_line=1492, + end_column=61, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_216 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_216 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1493, + start_column=42, + end_line=1493, + end_column=67, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_217 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_217 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1496, + start_column=47, + end_line=1496, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_218 = proprietaire_2.type_travaux_logement_d832_15 + except EmptyError: + temp_sous_calcul_traitement_218 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1498, + start_column=38, + end_line=1498, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_219 = proprietaire_2.pret.date_signature + except EmptyError: + temp_sous_calcul_traitement_219 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1499, + start_column=36, + end_line=1499, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_220 = proprietaire_2.local_habite_premiere_fois_beneficiaire + except EmptyError: + temp_sous_calcul_traitement_220 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1501, + start_column=14, + end_line=1501, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_221 = proprietaire_2.date_entree_logement + except EmptyError: + temp_sous_calcul_traitement_221 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1502, + start_column=37, + end_line=1502, + end_column=70, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_222 = proprietaire_2.copropriete + except EmptyError: + temp_sous_calcul_traitement_222 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1503, + start_column=28, + end_line=1503, + end_column=52, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_223 = proprietaire_2.situation_r822_11_13_17 + except EmptyError: + temp_sous_calcul_traitement_223 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1504, + start_column=40, + end_line=1504, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_224 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_224 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1494, + start_column=21, + end_line=1494, + end_column=25, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_225 = proprietaire_2.pret.type_pret + except EmptyError: + temp_sous_calcul_traitement_225 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1505, + start_column=26, + end_line=1505, + end_column=53, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_226 = proprietaire_2.anciennete_logement + except EmptyError: + temp_sous_calcul_traitement_226 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1506, + start_column=36, + end_line=1506, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_227 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_227 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1495, + start_column=30, + end_line=1495, + end_column=43, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_228 = proprietaire_2.mensualite_principale + except EmptyError: + temp_sous_calcul_traitement_228 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1497, + start_column=38, + end_line=1497, + end_column=72, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_229 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_229 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1492, + start_column=44, + end_line=1492, + end_column=61, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_230 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_230 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1493, + start_column=42, + end_line=1493, + end_column=67, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_231 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_231 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1496, + start_column=47, + end_line=1496, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_232 = proprietaire_2.type_travaux_logement_d832_15 + except EmptyError: + temp_sous_calcul_traitement_232 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1498, + start_column=38, + end_line=1498, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_233 = proprietaire_2.pret.date_signature + except EmptyError: + temp_sous_calcul_traitement_233 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1499, + start_column=36, + end_line=1499, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_234 = proprietaire_2.local_habite_premiere_fois_beneficiaire + except EmptyError: + temp_sous_calcul_traitement_234 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1501, + start_column=14, + end_line=1501, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_235 = proprietaire_2.date_entree_logement + except EmptyError: + temp_sous_calcul_traitement_235 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1502, + start_column=37, + end_line=1502, + end_column=70, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_236 = proprietaire_2.copropriete + except EmptyError: + temp_sous_calcul_traitement_236 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1503, + start_column=28, + end_line=1503, + end_column=52, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_237 = proprietaire_2.situation_r822_11_13_17 + except EmptyError: + temp_sous_calcul_traitement_237 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1504, + start_column=40, + end_line=1504, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_238 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_238 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1494, + start_column=21, + end_line=1494, + end_column=25, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_239 = proprietaire_2.pret.type_pret + except EmptyError: + temp_sous_calcul_traitement_239 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1505, + start_column=26, + end_line=1505, + end_column=53, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_240 = proprietaire_2.anciennete_logement + except EmptyError: + temp_sous_calcul_traitement_240 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1506, + start_column=36, + end_line=1506, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_241 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_241 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1495, + start_column=30, + end_line=1495, + end_column=43, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_242 = proprietaire_2.mensualite_principale + except EmptyError: + temp_sous_calcul_traitement_242 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1497, + start_column=38, + end_line=1497, + end_column=72, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_243 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_243 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1492, + start_column=44, + end_line=1492, + end_column=61, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_244 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_244 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1493, + start_column=42, + end_line=1493, + end_column=67, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_245 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_245 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1496, + start_column=47, + end_line=1496, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_246 = proprietaire_2.type_travaux_logement_d832_15 + except EmptyError: + temp_sous_calcul_traitement_246 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1498, + start_column=38, + end_line=1498, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_247 = proprietaire_2.pret.date_signature + except EmptyError: + temp_sous_calcul_traitement_247 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1499, + start_column=36, + end_line=1499, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_248 = proprietaire_2.local_habite_premiere_fois_beneficiaire + except EmptyError: + temp_sous_calcul_traitement_248 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1501, + start_column=14, + end_line=1501, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_249 = proprietaire_2.date_entree_logement + except EmptyError: + temp_sous_calcul_traitement_249 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1502, + start_column=37, + end_line=1502, + end_column=70, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_250 = proprietaire_2.copropriete + except EmptyError: + temp_sous_calcul_traitement_250 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1503, + start_column=28, + end_line=1503, + end_column=52, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_251 = proprietaire_2.situation_r822_11_13_17 + except EmptyError: + temp_sous_calcul_traitement_251 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1504, + start_column=40, + end_line=1504, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_252 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_252 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1494, + start_column=21, + end_line=1494, + end_column=25, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_253 = proprietaire_2.pret.type_pret + except EmptyError: + temp_sous_calcul_traitement_253 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1505, + start_column=26, + end_line=1505, + end_column=53, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_254 = proprietaire_2.anciennete_logement + except EmptyError: + temp_sous_calcul_traitement_254 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1506, + start_column=36, + end_line=1506, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_255 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_255 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1495, + start_column=30, + end_line=1495, + end_column=43, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_256(param_43:Money): + try: + temp_sous_calcul_traitement_257 = proprietaire_2.mensualite_principale + except EmptyError: + temp_sous_calcul_traitement_257 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1497, + start_column=38, + end_line=1497, + end_column=72, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_258 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_258 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1492, + start_column=44, + end_line=1492, + end_column=61, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_259 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_259 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1493, + start_column=42, + end_line=1493, + end_column=67, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_260 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_260 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1496, + start_column=47, + end_line=1496, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_261 = proprietaire_2.type_travaux_logement_d832_15 + except EmptyError: + temp_sous_calcul_traitement_261 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1498, + start_column=38, + end_line=1498, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_262 = proprietaire_2.pret.date_signature + except EmptyError: + temp_sous_calcul_traitement_262 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1499, + start_column=36, + end_line=1499, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_263 = proprietaire_2.local_habite_premiere_fois_beneficiaire + except EmptyError: + temp_sous_calcul_traitement_263 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1501, + start_column=14, + end_line=1501, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_264 = proprietaire_2.date_entree_logement + except EmptyError: + temp_sous_calcul_traitement_264 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1502, + start_column=37, + end_line=1502, + end_column=70, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_265 = proprietaire_2.copropriete + except EmptyError: + temp_sous_calcul_traitement_265 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1503, + start_column=28, + end_line=1503, + end_column=52, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_266 = proprietaire_2.situation_r822_11_13_17 + except EmptyError: + temp_sous_calcul_traitement_266 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1504, + start_column=40, + end_line=1504, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_267 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_267 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1494, + start_column=21, + end_line=1494, + end_column=25, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_268 = proprietaire_2.pret.type_pret + except EmptyError: + temp_sous_calcul_traitement_268 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1505, + start_column=26, + end_line=1505, + end_column=53, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_269 = proprietaire_2.anciennete_logement + except EmptyError: + temp_sous_calcul_traitement_269 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1506, + start_column=36, + end_line=1506, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_270 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_270 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1495, + start_column=30, + end_line=1495, + end_column=43, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + return calcul_aide_personnalisee_logement_accession_propriete( + CalculAidePersonnaliseeLogementAccessionProprieteIn(mensualite_principale_in = temp_sous_calcul_traitement_257, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_258, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_259, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_260, + type_travaux_logement_in = temp_sous_calcul_traitement_261, + date_signature_pret_in = temp_sous_calcul_traitement_262, + local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_263, + date_entree_logement_in = temp_sous_calcul_traitement_264, + copropriete_in = temp_sous_calcul_traitement_265, + situation_r822_11_13_17_in = temp_sous_calcul_traitement_266, + zone_in = temp_sous_calcul_traitement_267, + type_pret_in = temp_sous_calcul_traitement_268, + anciennete_logement_in = temp_sous_calcul_traitement_269, + date_courante_in = temp_sous_calcul_traitement_270)).traitement_aide_finale( + param_43) + try: + temp_sous_calcul_traitement_271 = proprietaire_2.mensualite_principale + except EmptyError: + temp_sous_calcul_traitement_271 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1497, + start_column=38, + end_line=1497, + end_column=72, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_272 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_272 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1492, + start_column=44, + end_line=1492, + end_column=61, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_273 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_273 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1493, + start_column=42, + end_line=1493, + end_column=67, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_274 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_274 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1496, + start_column=47, + end_line=1496, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_275 = proprietaire_2.type_travaux_logement_d832_15 + except EmptyError: + temp_sous_calcul_traitement_275 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1498, + start_column=38, + end_line=1498, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_276 = proprietaire_2.pret.date_signature + except EmptyError: + temp_sous_calcul_traitement_276 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1499, + start_column=36, + end_line=1499, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_277 = proprietaire_2.local_habite_premiere_fois_beneficiaire + except EmptyError: + temp_sous_calcul_traitement_277 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1501, + start_column=14, + end_line=1501, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_278 = proprietaire_2.date_entree_logement + except EmptyError: + temp_sous_calcul_traitement_278 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1502, + start_column=37, + end_line=1502, + end_column=70, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_279 = proprietaire_2.copropriete + except EmptyError: + temp_sous_calcul_traitement_279 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1503, + start_column=28, + end_line=1503, + end_column=52, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_280 = proprietaire_2.situation_r822_11_13_17 + except EmptyError: + temp_sous_calcul_traitement_280 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1504, + start_column=40, + end_line=1504, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_281 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_281 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1494, + start_column=21, + end_line=1494, + end_column=25, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_282 = proprietaire_2.pret.type_pret + except EmptyError: + temp_sous_calcul_traitement_282 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1505, + start_column=26, + end_line=1505, + end_column=53, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_283 = proprietaire_2.anciennete_logement + except EmptyError: + temp_sous_calcul_traitement_283 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1506, + start_column=36, + end_line=1506, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_284 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_284 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1495, + start_column=30, + end_line=1495, + end_column=43, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_285 = proprietaire_2.mensualite_principale + except EmptyError: + temp_sous_calcul_traitement_285 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1497, + start_column=38, + end_line=1497, + end_column=72, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_286 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_286 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1492, + start_column=44, + end_line=1492, + end_column=61, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_287 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_287 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1493, + start_column=42, + end_line=1493, + end_column=67, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_288 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_288 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1496, + start_column=47, + end_line=1496, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_289 = proprietaire_2.type_travaux_logement_d832_15 + except EmptyError: + temp_sous_calcul_traitement_289 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1498, + start_column=38, + end_line=1498, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_290 = proprietaire_2.pret.date_signature + except EmptyError: + temp_sous_calcul_traitement_290 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1499, + start_column=36, + end_line=1499, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_291 = proprietaire_2.local_habite_premiere_fois_beneficiaire + except EmptyError: + temp_sous_calcul_traitement_291 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1501, + start_column=14, + end_line=1501, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_292 = proprietaire_2.date_entree_logement + except EmptyError: + temp_sous_calcul_traitement_292 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1502, + start_column=37, + end_line=1502, + end_column=70, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_293 = proprietaire_2.copropriete + except EmptyError: + temp_sous_calcul_traitement_293 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1503, + start_column=28, + end_line=1503, + end_column=52, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_294 = proprietaire_2.situation_r822_11_13_17 + except EmptyError: + temp_sous_calcul_traitement_294 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1504, + start_column=40, + end_line=1504, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_295 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_295 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1494, + start_column=21, + end_line=1494, + end_column=25, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_296 = proprietaire_2.pret.type_pret + except EmptyError: + temp_sous_calcul_traitement_296 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1505, + start_column=26, + end_line=1505, + end_column=53, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_297 = proprietaire_2.anciennete_logement + except EmptyError: + temp_sous_calcul_traitement_297 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1506, + start_column=36, + end_line=1506, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_298 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_298 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1495, + start_column=30, + end_line=1495, + end_column=43, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_299 = proprietaire_2.mensualite_principale + except EmptyError: + temp_sous_calcul_traitement_299 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1497, + start_column=38, + end_line=1497, + end_column=72, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_300 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_300 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1492, + start_column=44, + end_line=1492, + end_column=61, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_301 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_301 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1493, + start_column=42, + end_line=1493, + end_column=67, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_302 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_302 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1496, + start_column=47, + end_line=1496, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_303 = proprietaire_2.type_travaux_logement_d832_15 + except EmptyError: + temp_sous_calcul_traitement_303 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1498, + start_column=38, + end_line=1498, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_304 = proprietaire_2.pret.date_signature + except EmptyError: + temp_sous_calcul_traitement_304 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1499, + start_column=36, + end_line=1499, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_305 = proprietaire_2.local_habite_premiere_fois_beneficiaire + except EmptyError: + temp_sous_calcul_traitement_305 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1501, + start_column=14, + end_line=1501, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_306 = proprietaire_2.date_entree_logement + except EmptyError: + temp_sous_calcul_traitement_306 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1502, + start_column=37, + end_line=1502, + end_column=70, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_307 = proprietaire_2.copropriete + except EmptyError: + temp_sous_calcul_traitement_307 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1503, + start_column=28, + end_line=1503, + end_column=52, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_308 = proprietaire_2.situation_r822_11_13_17 + except EmptyError: + temp_sous_calcul_traitement_308 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1504, + start_column=40, + end_line=1504, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_309 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_309 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1494, + start_column=21, + end_line=1494, + end_column=25, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_310 = proprietaire_2.pret.type_pret + except EmptyError: + temp_sous_calcul_traitement_310 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1505, + start_column=26, + end_line=1505, + end_column=53, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_311 = proprietaire_2.anciennete_logement + except EmptyError: + temp_sous_calcul_traitement_311 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1506, + start_column=36, + end_line=1506, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_312 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_312 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1495, + start_column=30, + end_line=1495, + end_column=43, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_313 = proprietaire_2.mensualite_principale + except EmptyError: + temp_sous_calcul_traitement_313 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1497, + start_column=38, + end_line=1497, + end_column=72, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_314 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_314 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1492, + start_column=44, + end_line=1492, + end_column=61, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_315 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_315 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1493, + start_column=42, + end_line=1493, + end_column=67, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_316 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_316 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1496, + start_column=47, + end_line=1496, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_317 = proprietaire_2.type_travaux_logement_d832_15 + except EmptyError: + temp_sous_calcul_traitement_317 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1498, + start_column=38, + end_line=1498, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_318 = proprietaire_2.pret.date_signature + except EmptyError: + temp_sous_calcul_traitement_318 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1499, + start_column=36, + end_line=1499, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_319 = proprietaire_2.local_habite_premiere_fois_beneficiaire + except EmptyError: + temp_sous_calcul_traitement_319 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1501, + start_column=14, + end_line=1501, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_320 = proprietaire_2.date_entree_logement + except EmptyError: + temp_sous_calcul_traitement_320 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1502, + start_column=37, + end_line=1502, + end_column=70, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_321 = proprietaire_2.copropriete + except EmptyError: + temp_sous_calcul_traitement_321 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1503, + start_column=28, + end_line=1503, + end_column=52, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_322 = proprietaire_2.situation_r822_11_13_17 + except EmptyError: + temp_sous_calcul_traitement_322 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1504, + start_column=40, + end_line=1504, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_323 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_323 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1494, + start_column=21, + end_line=1494, + end_column=25, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_324 = proprietaire_2.pret.type_pret + except EmptyError: + temp_sous_calcul_traitement_324 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1505, + start_column=26, + end_line=1505, + end_column=53, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_325 = proprietaire_2.anciennete_logement + except EmptyError: + temp_sous_calcul_traitement_325 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1506, + start_column=36, + end_line=1506, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_326 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_326 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1495, + start_column=30, + end_line=1495, + end_column=43, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + temp_sous_calcul_traitement_184 = TraitementFormuleAideFinale(aide_finale_formule = CalculAidePersonnaliseeLogementAccessionPropriete(mensualite_eligible = calcul_aide_personnalisee_logement_accession_propriete( + CalculAidePersonnaliseeLogementAccessionProprieteIn(mensualite_principale_in = temp_sous_calcul_traitement_242, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_243, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_244, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_245, + type_travaux_logement_in = temp_sous_calcul_traitement_246, + date_signature_pret_in = temp_sous_calcul_traitement_247, + local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_248, + date_entree_logement_in = temp_sous_calcul_traitement_249, + copropriete_in = temp_sous_calcul_traitement_250, + situation_r822_11_13_17_in = temp_sous_calcul_traitement_251, + zone_in = temp_sous_calcul_traitement_252, + type_pret_in = temp_sous_calcul_traitement_253, + anciennete_logement_in = temp_sous_calcul_traitement_254, + date_courante_in = temp_sous_calcul_traitement_255)).mensualite_eligible, + mensualite_minimale = calcul_aide_personnalisee_logement_accession_propriete( + CalculAidePersonnaliseeLogementAccessionProprieteIn(mensualite_principale_in = temp_sous_calcul_traitement_228, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_229, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_230, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_231, + type_travaux_logement_in = temp_sous_calcul_traitement_232, + date_signature_pret_in = temp_sous_calcul_traitement_233, + local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_234, + date_entree_logement_in = temp_sous_calcul_traitement_235, + copropriete_in = temp_sous_calcul_traitement_236, + situation_r822_11_13_17_in = temp_sous_calcul_traitement_237, + zone_in = temp_sous_calcul_traitement_238, + type_pret_in = temp_sous_calcul_traitement_239, + anciennete_logement_in = temp_sous_calcul_traitement_240, + date_courante_in = temp_sous_calcul_traitement_241)).mensualite_minimale, + coefficient_prise_en_charge_d832_10 = calcul_aide_personnalisee_logement_accession_propriete( + CalculAidePersonnaliseeLogementAccessionProprieteIn(mensualite_principale_in = temp_sous_calcul_traitement_214, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_215, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_216, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_217, + type_travaux_logement_in = temp_sous_calcul_traitement_218, + date_signature_pret_in = temp_sous_calcul_traitement_219, + local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_220, + date_entree_logement_in = temp_sous_calcul_traitement_221, + copropriete_in = temp_sous_calcul_traitement_222, + situation_r822_11_13_17_in = temp_sous_calcul_traitement_223, + zone_in = temp_sous_calcul_traitement_224, + type_pret_in = temp_sous_calcul_traitement_225, + anciennete_logement_in = temp_sous_calcul_traitement_226, + date_courante_in = temp_sous_calcul_traitement_227)).coefficient_prise_en_charge_d832_10, + aide_finale_formule = calcul_aide_personnalisee_logement_accession_propriete( + CalculAidePersonnaliseeLogementAccessionProprieteIn(mensualite_principale_in = temp_sous_calcul_traitement_200, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_201, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_202, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_203, + type_travaux_logement_in = temp_sous_calcul_traitement_204, + date_signature_pret_in = temp_sous_calcul_traitement_205, + local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_206, + date_entree_logement_in = temp_sous_calcul_traitement_207, + copropriete_in = temp_sous_calcul_traitement_208, + situation_r822_11_13_17_in = temp_sous_calcul_traitement_209, + zone_in = temp_sous_calcul_traitement_210, + type_pret_in = temp_sous_calcul_traitement_211, + anciennete_logement_in = temp_sous_calcul_traitement_212, + date_courante_in = temp_sous_calcul_traitement_213)).aide_finale_formule, + traitement_aide_finale = temp_sous_calcul_traitement_185).aide_finale_formule, + traitement_aide_finale = CalculAidePersonnaliseeLogementAccessionPropriete(mensualite_eligible = calcul_aide_personnalisee_logement_accession_propriete( + CalculAidePersonnaliseeLogementAccessionProprieteIn(mensualite_principale_in = temp_sous_calcul_traitement_313, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_314, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_315, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_316, + type_travaux_logement_in = temp_sous_calcul_traitement_317, + date_signature_pret_in = temp_sous_calcul_traitement_318, + local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_319, + date_entree_logement_in = temp_sous_calcul_traitement_320, + copropriete_in = temp_sous_calcul_traitement_321, + situation_r822_11_13_17_in = temp_sous_calcul_traitement_322, + zone_in = temp_sous_calcul_traitement_323, + type_pret_in = temp_sous_calcul_traitement_324, + anciennete_logement_in = temp_sous_calcul_traitement_325, + date_courante_in = temp_sous_calcul_traitement_326)).mensualite_eligible, + mensualite_minimale = calcul_aide_personnalisee_logement_accession_propriete( + CalculAidePersonnaliseeLogementAccessionProprieteIn(mensualite_principale_in = temp_sous_calcul_traitement_299, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_300, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_301, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_302, + type_travaux_logement_in = temp_sous_calcul_traitement_303, + date_signature_pret_in = temp_sous_calcul_traitement_304, + local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_305, + date_entree_logement_in = temp_sous_calcul_traitement_306, + copropriete_in = temp_sous_calcul_traitement_307, + situation_r822_11_13_17_in = temp_sous_calcul_traitement_308, + zone_in = temp_sous_calcul_traitement_309, + type_pret_in = temp_sous_calcul_traitement_310, + anciennete_logement_in = temp_sous_calcul_traitement_311, + date_courante_in = temp_sous_calcul_traitement_312)).mensualite_minimale, + coefficient_prise_en_charge_d832_10 = calcul_aide_personnalisee_logement_accession_propriete( + CalculAidePersonnaliseeLogementAccessionProprieteIn(mensualite_principale_in = temp_sous_calcul_traitement_285, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_286, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_287, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_288, + type_travaux_logement_in = temp_sous_calcul_traitement_289, + date_signature_pret_in = temp_sous_calcul_traitement_290, + local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_291, + date_entree_logement_in = temp_sous_calcul_traitement_292, + copropriete_in = temp_sous_calcul_traitement_293, + situation_r822_11_13_17_in = temp_sous_calcul_traitement_294, + zone_in = temp_sous_calcul_traitement_295, + type_pret_in = temp_sous_calcul_traitement_296, + anciennete_logement_in = temp_sous_calcul_traitement_297, + date_courante_in = temp_sous_calcul_traitement_298)).coefficient_prise_en_charge_d832_10, + aide_finale_formule = calcul_aide_personnalisee_logement_accession_propriete( + CalculAidePersonnaliseeLogementAccessionProprieteIn(mensualite_principale_in = temp_sous_calcul_traitement_271, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_272, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_273, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_274, + type_travaux_logement_in = temp_sous_calcul_traitement_275, + date_signature_pret_in = temp_sous_calcul_traitement_276, + local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_277, + date_entree_logement_in = temp_sous_calcul_traitement_278, + copropriete_in = temp_sous_calcul_traitement_279, + situation_r822_11_13_17_in = temp_sous_calcul_traitement_280, + zone_in = temp_sous_calcul_traitement_281, + type_pret_in = temp_sous_calcul_traitement_282, + anciennete_logement_in = temp_sous_calcul_traitement_283, + date_courante_in = temp_sous_calcul_traitement_284)).aide_finale_formule, + traitement_aide_finale = temp_sous_calcul_traitement_256).traitement_aide_finale) + elif match_arg_503.code == CategorieCalculAPL_Code.LogementFoyer: + logement_foyer_ = match_arg_503.value + def temp_sous_calcul_traitement_327(param_44:Money): + try: + temp_sous_calcul_traitement_328 = logement_foyer_.type + except EmptyError: + temp_sous_calcul_traitement_328 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1478, + start_column=35, + end_line=1478, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_329 = logement_foyer_.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_329 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1479, + start_column=37, + end_line=1479, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_330 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_330 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1472, + start_column=43, + end_line=1472, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_331 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_331 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1473, + start_column=41, + end_line=1473, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_332 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_332 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1476, + start_column=46, + end_line=1476, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_333 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_333 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1474, + start_column=20, + end_line=1474, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_334 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_334 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1475, + start_column=29, + end_line=1475, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_335 = logement_foyer_.redevance + except EmptyError: + temp_sous_calcul_traitement_335 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1477, + start_column=25, + end_line=1477, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_336(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_337(_:Unit): + raise EmptyError + return calcul_aide_personnalisee_logement_foyer(CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_328, + date_conventionnement_in = temp_sous_calcul_traitement_329, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_330, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_331, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_332, + zone_in = temp_sous_calcul_traitement_333, + date_courante_in = temp_sous_calcul_traitement_334, + redevance_in = temp_sous_calcul_traitement_335, + condition_2_du_832_25_in = temp_sous_calcul_traitement_336, + n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_337)).traitement_aide_finale( + param_44) + try: + temp_sous_calcul_traitement_338 = logement_foyer_.type + except EmptyError: + temp_sous_calcul_traitement_338 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1478, + start_column=35, + end_line=1478, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_339 = logement_foyer_.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_339 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1479, + start_column=37, + end_line=1479, end_column=74, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -17851,13 +22684,113 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_74 = logement_foyer_.type + temp_sous_calcul_traitement_340 = ressources_menage_avec_arrondi except EmptyError: - temp_sous_calcul_traitement_74 = dead_value + temp_sous_calcul_traitement_340 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1466, + start_line=1472, + start_column=43, + end_line=1472, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_341 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_341 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1473, + start_column=41, + end_line=1473, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_342 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_342 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1476, + start_column=46, + end_line=1476, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_343 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_343 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1474, + start_column=20, + end_line=1474, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_344 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_344 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1475, + start_column=29, + end_line=1475, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_345 = logement_foyer_.redevance + except EmptyError: + temp_sous_calcul_traitement_345 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1477, + start_column=25, + end_line=1477, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_346(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_347(_:Unit): + raise EmptyError + try: + temp_sous_calcul_traitement_348 = logement_foyer_.type + except EmptyError: + temp_sous_calcul_traitement_348 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1478, start_column=35, - end_line=1466, + end_line=1478, end_column=55, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -17866,30 +22799,2294 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Livre VIII : Aides personnelles au logement", "Partie réglementaire", "Code de la construction et de l'habitation"])) - temp_sous_calcul_traitement_26 = TraitementFormuleAideFinale(aide_finale_formule = calcul_aide_personnalisee_logement_foyer( - CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_64, - date_conventionnement_in = temp_sous_calcul_traitement_63, - ressources_menage_arrondies_in = temp_sous_calcul_traitement_62, - nombre_personnes_a_charge_in = temp_sous_calcul_traitement_61, - situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_60, - zone_in = temp_sous_calcul_traitement_59, - date_courante_in = temp_sous_calcul_traitement_58, - redevance_in = temp_sous_calcul_traitement_57, - condition_2_du_832_25_in = temp_sous_calcul_traitement_56, - n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_55)).aide_finale_formule, - traitement_aide_finale = calcul_aide_personnalisee_logement_foyer( - CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_74, - date_conventionnement_in = temp_sous_calcul_traitement_73, - ressources_menage_arrondies_in = temp_sous_calcul_traitement_72, - nombre_personnes_a_charge_in = temp_sous_calcul_traitement_71, - situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_70, - zone_in = temp_sous_calcul_traitement_69, - date_courante_in = temp_sous_calcul_traitement_68, - redevance_in = temp_sous_calcul_traitement_67, - condition_2_du_832_25_in = temp_sous_calcul_traitement_66, - n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_65)).traitement_aide_finale) + try: + temp_sous_calcul_traitement_349 = logement_foyer_.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_349 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1479, + start_column=37, + end_line=1479, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_350 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_350 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1472, + start_column=43, + end_line=1472, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_351 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_351 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1473, + start_column=41, + end_line=1473, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_352 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_352 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1476, + start_column=46, + end_line=1476, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_353 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_353 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1474, + start_column=20, + end_line=1474, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_354 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_354 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1475, + start_column=29, + end_line=1475, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_355 = logement_foyer_.redevance + except EmptyError: + temp_sous_calcul_traitement_355 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1477, + start_column=25, + end_line=1477, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_356(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_357(_:Unit): + raise EmptyError + try: + temp_sous_calcul_traitement_358 = logement_foyer_.type + except EmptyError: + temp_sous_calcul_traitement_358 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1478, + start_column=35, + end_line=1478, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_359 = logement_foyer_.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_359 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1479, + start_column=37, + end_line=1479, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_360 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_360 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1472, + start_column=43, + end_line=1472, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_361 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_361 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1473, + start_column=41, + end_line=1473, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_362 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_362 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1476, + start_column=46, + end_line=1476, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_363 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_363 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1474, + start_column=20, + end_line=1474, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_364 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_364 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1475, + start_column=29, + end_line=1475, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_365 = logement_foyer_.redevance + except EmptyError: + temp_sous_calcul_traitement_365 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1477, + start_column=25, + end_line=1477, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_366(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_367(_:Unit): + raise EmptyError + try: + temp_sous_calcul_traitement_368 = logement_foyer_.type + except EmptyError: + temp_sous_calcul_traitement_368 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1478, + start_column=35, + end_line=1478, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_369 = logement_foyer_.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_369 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1479, + start_column=37, + end_line=1479, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_370 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_370 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1472, + start_column=43, + end_line=1472, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_371 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_371 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1473, + start_column=41, + end_line=1473, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_372 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_372 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1476, + start_column=46, + end_line=1476, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_373 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_373 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1474, + start_column=20, + end_line=1474, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_374 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_374 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1475, + start_column=29, + end_line=1475, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_375 = logement_foyer_.redevance + except EmptyError: + temp_sous_calcul_traitement_375 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1477, + start_column=25, + end_line=1477, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_376(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_377(_:Unit): + raise EmptyError + try: + temp_sous_calcul_traitement_378 = logement_foyer_.type + except EmptyError: + temp_sous_calcul_traitement_378 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1478, + start_column=35, + end_line=1478, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_379 = logement_foyer_.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_379 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1479, + start_column=37, + end_line=1479, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_380 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_380 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1472, + start_column=43, + end_line=1472, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_381 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_381 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1473, + start_column=41, + end_line=1473, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_382 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_382 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1476, + start_column=46, + end_line=1476, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_383 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_383 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1474, + start_column=20, + end_line=1474, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_384 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_384 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1475, + start_column=29, + end_line=1475, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_385 = logement_foyer_.redevance + except EmptyError: + temp_sous_calcul_traitement_385 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1477, + start_column=25, + end_line=1477, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_386(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_387(_:Unit): + raise EmptyError + try: + temp_sous_calcul_traitement_388 = logement_foyer_.type + except EmptyError: + temp_sous_calcul_traitement_388 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1478, + start_column=35, + end_line=1478, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_389 = logement_foyer_.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_389 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1479, + start_column=37, + end_line=1479, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_390 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_390 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1472, + start_column=43, + end_line=1472, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_391 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_391 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1473, + start_column=41, + end_line=1473, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_392 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_392 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1476, + start_column=46, + end_line=1476, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_393 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_393 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1474, + start_column=20, + end_line=1474, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_394 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_394 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1475, + start_column=29, + end_line=1475, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_395 = logement_foyer_.redevance + except EmptyError: + temp_sous_calcul_traitement_395 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1477, + start_column=25, + end_line=1477, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_396(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_397(_:Unit): + raise EmptyError + try: + temp_sous_calcul_traitement_398 = logement_foyer_.type + except EmptyError: + temp_sous_calcul_traitement_398 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1478, + start_column=35, + end_line=1478, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_399 = logement_foyer_.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_399 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1479, + start_column=37, + end_line=1479, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_400 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_400 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1472, + start_column=43, + end_line=1472, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_401 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_401 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1473, + start_column=41, + end_line=1473, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_402 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_402 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1476, + start_column=46, + end_line=1476, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_403 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_403 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1474, + start_column=20, + end_line=1474, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_404 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_404 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1475, + start_column=29, + end_line=1475, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_405 = logement_foyer_.redevance + except EmptyError: + temp_sous_calcul_traitement_405 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1477, + start_column=25, + end_line=1477, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_406(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_407(_:Unit): + raise EmptyError + try: + temp_sous_calcul_traitement_408 = logement_foyer_.type + except EmptyError: + temp_sous_calcul_traitement_408 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1478, + start_column=35, + end_line=1478, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_409 = logement_foyer_.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_409 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1479, + start_column=37, + end_line=1479, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_410 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_410 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1472, + start_column=43, + end_line=1472, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_411 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_411 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1473, + start_column=41, + end_line=1473, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_412 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_412 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1476, + start_column=46, + end_line=1476, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_413 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_413 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1474, + start_column=20, + end_line=1474, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_414 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_414 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1475, + start_column=29, + end_line=1475, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_415 = logement_foyer_.redevance + except EmptyError: + temp_sous_calcul_traitement_415 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1477, + start_column=25, + end_line=1477, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_416(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_417(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_418(param_45:Money): + try: + temp_sous_calcul_traitement_419 = logement_foyer_.type + except EmptyError: + temp_sous_calcul_traitement_419 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1478, + start_column=35, + end_line=1478, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_420 = logement_foyer_.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_420 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1479, + start_column=37, + end_line=1479, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_421 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_421 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1472, + start_column=43, + end_line=1472, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_422 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_422 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1473, + start_column=41, + end_line=1473, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_423 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_423 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1476, + start_column=46, + end_line=1476, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_424 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_424 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1474, + start_column=20, + end_line=1474, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_425 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_425 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1475, + start_column=29, + end_line=1475, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_426 = logement_foyer_.redevance + except EmptyError: + temp_sous_calcul_traitement_426 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1477, + start_column=25, + end_line=1477, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_427(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_428(_:Unit): + raise EmptyError + return calcul_aide_personnalisee_logement_foyer(CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_419, + date_conventionnement_in = temp_sous_calcul_traitement_420, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_421, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_422, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_423, + zone_in = temp_sous_calcul_traitement_424, + date_courante_in = temp_sous_calcul_traitement_425, + redevance_in = temp_sous_calcul_traitement_426, + condition_2_du_832_25_in = temp_sous_calcul_traitement_427, + n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_428)).traitement_aide_finale( + param_45) + try: + temp_sous_calcul_traitement_429 = logement_foyer_.type + except EmptyError: + temp_sous_calcul_traitement_429 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1478, + start_column=35, + end_line=1478, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_430 = logement_foyer_.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_430 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1479, + start_column=37, + end_line=1479, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_431 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_431 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1472, + start_column=43, + end_line=1472, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_432 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_432 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1473, + start_column=41, + end_line=1473, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_433 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_433 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1476, + start_column=46, + end_line=1476, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_434 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_434 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1474, + start_column=20, + end_line=1474, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_435 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_435 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1475, + start_column=29, + end_line=1475, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_436 = logement_foyer_.redevance + except EmptyError: + temp_sous_calcul_traitement_436 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1477, + start_column=25, + end_line=1477, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_437(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_438(_:Unit): + raise EmptyError + try: + temp_sous_calcul_traitement_439 = logement_foyer_.type + except EmptyError: + temp_sous_calcul_traitement_439 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1478, + start_column=35, + end_line=1478, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_440 = logement_foyer_.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_440 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1479, + start_column=37, + end_line=1479, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_441 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_441 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1472, + start_column=43, + end_line=1472, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_442 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_442 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1473, + start_column=41, + end_line=1473, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_443 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_443 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1476, + start_column=46, + end_line=1476, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_444 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_444 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1474, + start_column=20, + end_line=1474, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_445 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_445 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1475, + start_column=29, + end_line=1475, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_446 = logement_foyer_.redevance + except EmptyError: + temp_sous_calcul_traitement_446 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1477, + start_column=25, + end_line=1477, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_447(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_448(_:Unit): + raise EmptyError + try: + temp_sous_calcul_traitement_449 = logement_foyer_.type + except EmptyError: + temp_sous_calcul_traitement_449 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1478, + start_column=35, + end_line=1478, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_450 = logement_foyer_.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_450 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1479, + start_column=37, + end_line=1479, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_451 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_451 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1472, + start_column=43, + end_line=1472, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_452 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_452 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1473, + start_column=41, + end_line=1473, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_453 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_453 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1476, + start_column=46, + end_line=1476, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_454 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_454 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1474, + start_column=20, + end_line=1474, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_455 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_455 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1475, + start_column=29, + end_line=1475, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_456 = logement_foyer_.redevance + except EmptyError: + temp_sous_calcul_traitement_456 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1477, + start_column=25, + end_line=1477, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_457(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_458(_:Unit): + raise EmptyError + try: + temp_sous_calcul_traitement_459 = logement_foyer_.type + except EmptyError: + temp_sous_calcul_traitement_459 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1478, + start_column=35, + end_line=1478, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_460 = logement_foyer_.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_460 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1479, + start_column=37, + end_line=1479, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_461 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_461 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1472, + start_column=43, + end_line=1472, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_462 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_462 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1473, + start_column=41, + end_line=1473, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_463 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_463 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1476, + start_column=46, + end_line=1476, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_464 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_464 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1474, + start_column=20, + end_line=1474, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_465 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_465 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1475, + start_column=29, + end_line=1475, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_466 = logement_foyer_.redevance + except EmptyError: + temp_sous_calcul_traitement_466 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1477, + start_column=25, + end_line=1477, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_467(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_468(_:Unit): + raise EmptyError + try: + temp_sous_calcul_traitement_469 = logement_foyer_.type + except EmptyError: + temp_sous_calcul_traitement_469 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1478, + start_column=35, + end_line=1478, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_470 = logement_foyer_.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_470 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1479, + start_column=37, + end_line=1479, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_471 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_471 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1472, + start_column=43, + end_line=1472, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_472 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_472 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1473, + start_column=41, + end_line=1473, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_473 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_473 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1476, + start_column=46, + end_line=1476, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_474 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_474 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1474, + start_column=20, + end_line=1474, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_475 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_475 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1475, + start_column=29, + end_line=1475, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_476 = logement_foyer_.redevance + except EmptyError: + temp_sous_calcul_traitement_476 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1477, + start_column=25, + end_line=1477, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_477(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_478(_:Unit): + raise EmptyError + try: + temp_sous_calcul_traitement_479 = logement_foyer_.type + except EmptyError: + temp_sous_calcul_traitement_479 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1478, + start_column=35, + end_line=1478, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_480 = logement_foyer_.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_480 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1479, + start_column=37, + end_line=1479, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_481 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_481 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1472, + start_column=43, + end_line=1472, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_482 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_482 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1473, + start_column=41, + end_line=1473, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_483 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_483 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1476, + start_column=46, + end_line=1476, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_484 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_484 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1474, + start_column=20, + end_line=1474, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_485 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_485 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1475, + start_column=29, + end_line=1475, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_486 = logement_foyer_.redevance + except EmptyError: + temp_sous_calcul_traitement_486 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1477, + start_column=25, + end_line=1477, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_487(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_488(_:Unit): + raise EmptyError + try: + temp_sous_calcul_traitement_489 = logement_foyer_.type + except EmptyError: + temp_sous_calcul_traitement_489 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1478, + start_column=35, + end_line=1478, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_490 = logement_foyer_.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_490 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1479, + start_column=37, + end_line=1479, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_491 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_491 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1472, + start_column=43, + end_line=1472, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_492 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_492 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1473, + start_column=41, + end_line=1473, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_493 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_493 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1476, + start_column=46, + end_line=1476, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_494 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_494 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1474, + start_column=20, + end_line=1474, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_495 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_495 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1475, + start_column=29, + end_line=1475, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_496 = logement_foyer_.redevance + except EmptyError: + temp_sous_calcul_traitement_496 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1477, + start_column=25, + end_line=1477, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_497(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_498(_:Unit): + raise EmptyError + try: + temp_sous_calcul_traitement_499 = logement_foyer_.type + except EmptyError: + temp_sous_calcul_traitement_499 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1478, + start_column=35, + end_line=1478, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_500 = logement_foyer_.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_500 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1479, + start_column=37, + end_line=1479, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_501 = ressources_menage_avec_arrondi + except EmptyError: + temp_sous_calcul_traitement_501 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1472, + start_column=43, + end_line=1472, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_502 = nombre_personnes_a_charge_8 + except EmptyError: + temp_sous_calcul_traitement_502 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1473, + start_column=41, + end_line=1473, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_503 = situation_familiale_calcul_apl_8 + except EmptyError: + temp_sous_calcul_traitement_503 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1476, + start_column=46, + end_line=1476, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_504 = zone_6 + except EmptyError: + temp_sous_calcul_traitement_504 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1474, + start_column=20, + end_line=1474, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_505 = date_courante_11 + except EmptyError: + temp_sous_calcul_traitement_505 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1475, + start_column=29, + end_line=1475, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_506 = logement_foyer_.redevance + except EmptyError: + temp_sous_calcul_traitement_506 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1477, + start_column=25, + end_line=1477, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_507(_:Unit): + raise EmptyError + def temp_sous_calcul_traitement_508(_:Unit): + raise EmptyError + temp_sous_calcul_traitement_184 = TraitementFormuleAideFinale(aide_finale_formule = CalculAidePersonnaliseeLogementFoyer(coefficient_multiplicateur_d832_25 = calcul_aide_personnalisee_logement_foyer( + CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_408, + date_conventionnement_in = temp_sous_calcul_traitement_409, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_410, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_411, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_412, + zone_in = temp_sous_calcul_traitement_413, + date_courante_in = temp_sous_calcul_traitement_414, + redevance_in = temp_sous_calcul_traitement_415, + condition_2_du_832_25_in = temp_sous_calcul_traitement_416, + n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_417)).coefficient_multiplicateur_d832_25, + coefficient_r_d832_25 = calcul_aide_personnalisee_logement_foyer( + CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_398, + date_conventionnement_in = temp_sous_calcul_traitement_399, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_400, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_401, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_402, + zone_in = temp_sous_calcul_traitement_403, + date_courante_in = temp_sous_calcul_traitement_404, + redevance_in = temp_sous_calcul_traitement_405, + condition_2_du_832_25_in = temp_sous_calcul_traitement_406, + n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_407)).coefficient_r_d832_25, + n_nombre_parts_d832_25 = calcul_aide_personnalisee_logement_foyer( + CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_388, + date_conventionnement_in = temp_sous_calcul_traitement_389, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_390, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_391, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_392, + zone_in = temp_sous_calcul_traitement_393, + date_courante_in = temp_sous_calcul_traitement_394, + redevance_in = temp_sous_calcul_traitement_395, + condition_2_du_832_25_in = temp_sous_calcul_traitement_396, + n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_397)).n_nombre_parts_d832_25, + equivalence_loyer_eligible = calcul_aide_personnalisee_logement_foyer( + CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_378, + date_conventionnement_in = temp_sous_calcul_traitement_379, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_380, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_381, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_382, + zone_in = temp_sous_calcul_traitement_383, + date_courante_in = temp_sous_calcul_traitement_384, + redevance_in = temp_sous_calcul_traitement_385, + condition_2_du_832_25_in = temp_sous_calcul_traitement_386, + n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_387)).equivalence_loyer_eligible, + plafond_equivalence_loyer_eligible = calcul_aide_personnalisee_logement_foyer( + CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_368, + date_conventionnement_in = temp_sous_calcul_traitement_369, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_370, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_371, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_372, + zone_in = temp_sous_calcul_traitement_373, + date_courante_in = temp_sous_calcul_traitement_374, + redevance_in = temp_sous_calcul_traitement_375, + condition_2_du_832_25_in = temp_sous_calcul_traitement_376, + n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_377)).plafond_equivalence_loyer_eligible, + equivalence_loyer_minimale = calcul_aide_personnalisee_logement_foyer( + CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_358, + date_conventionnement_in = temp_sous_calcul_traitement_359, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_360, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_361, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_362, + zone_in = temp_sous_calcul_traitement_363, + date_courante_in = temp_sous_calcul_traitement_364, + redevance_in = temp_sous_calcul_traitement_365, + condition_2_du_832_25_in = temp_sous_calcul_traitement_366, + n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_367)).equivalence_loyer_minimale, + coefficient_prise_en_charge_d832_25 = calcul_aide_personnalisee_logement_foyer( + CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_348, + date_conventionnement_in = temp_sous_calcul_traitement_349, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_350, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_351, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_352, + zone_in = temp_sous_calcul_traitement_353, + date_courante_in = temp_sous_calcul_traitement_354, + redevance_in = temp_sous_calcul_traitement_355, + condition_2_du_832_25_in = temp_sous_calcul_traitement_356, + n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_357)).coefficient_prise_en_charge_d832_25, + aide_finale_formule = calcul_aide_personnalisee_logement_foyer( + CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_338, + date_conventionnement_in = temp_sous_calcul_traitement_339, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_340, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_341, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_342, + zone_in = temp_sous_calcul_traitement_343, + date_courante_in = temp_sous_calcul_traitement_344, + redevance_in = temp_sous_calcul_traitement_345, + condition_2_du_832_25_in = temp_sous_calcul_traitement_346, + n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_347)).aide_finale_formule, + traitement_aide_finale = temp_sous_calcul_traitement_327).aide_finale_formule, + traitement_aide_finale = CalculAidePersonnaliseeLogementFoyer(coefficient_multiplicateur_d832_25 = calcul_aide_personnalisee_logement_foyer( + CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_499, + date_conventionnement_in = temp_sous_calcul_traitement_500, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_501, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_502, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_503, + zone_in = temp_sous_calcul_traitement_504, + date_courante_in = temp_sous_calcul_traitement_505, + redevance_in = temp_sous_calcul_traitement_506, + condition_2_du_832_25_in = temp_sous_calcul_traitement_507, + n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_508)).coefficient_multiplicateur_d832_25, + coefficient_r_d832_25 = calcul_aide_personnalisee_logement_foyer( + CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_489, + date_conventionnement_in = temp_sous_calcul_traitement_490, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_491, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_492, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_493, + zone_in = temp_sous_calcul_traitement_494, + date_courante_in = temp_sous_calcul_traitement_495, + redevance_in = temp_sous_calcul_traitement_496, + condition_2_du_832_25_in = temp_sous_calcul_traitement_497, + n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_498)).coefficient_r_d832_25, + n_nombre_parts_d832_25 = calcul_aide_personnalisee_logement_foyer( + CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_479, + date_conventionnement_in = temp_sous_calcul_traitement_480, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_481, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_482, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_483, + zone_in = temp_sous_calcul_traitement_484, + date_courante_in = temp_sous_calcul_traitement_485, + redevance_in = temp_sous_calcul_traitement_486, + condition_2_du_832_25_in = temp_sous_calcul_traitement_487, + n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_488)).n_nombre_parts_d832_25, + equivalence_loyer_eligible = calcul_aide_personnalisee_logement_foyer( + CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_469, + date_conventionnement_in = temp_sous_calcul_traitement_470, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_471, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_472, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_473, + zone_in = temp_sous_calcul_traitement_474, + date_courante_in = temp_sous_calcul_traitement_475, + redevance_in = temp_sous_calcul_traitement_476, + condition_2_du_832_25_in = temp_sous_calcul_traitement_477, + n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_478)).equivalence_loyer_eligible, + plafond_equivalence_loyer_eligible = calcul_aide_personnalisee_logement_foyer( + CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_459, + date_conventionnement_in = temp_sous_calcul_traitement_460, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_461, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_462, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_463, + zone_in = temp_sous_calcul_traitement_464, + date_courante_in = temp_sous_calcul_traitement_465, + redevance_in = temp_sous_calcul_traitement_466, + condition_2_du_832_25_in = temp_sous_calcul_traitement_467, + n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_468)).plafond_equivalence_loyer_eligible, + equivalence_loyer_minimale = calcul_aide_personnalisee_logement_foyer( + CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_449, + date_conventionnement_in = temp_sous_calcul_traitement_450, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_451, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_452, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_453, + zone_in = temp_sous_calcul_traitement_454, + date_courante_in = temp_sous_calcul_traitement_455, + redevance_in = temp_sous_calcul_traitement_456, + condition_2_du_832_25_in = temp_sous_calcul_traitement_457, + n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_458)).equivalence_loyer_minimale, + coefficient_prise_en_charge_d832_25 = calcul_aide_personnalisee_logement_foyer( + CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_439, + date_conventionnement_in = temp_sous_calcul_traitement_440, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_441, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_442, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_443, + zone_in = temp_sous_calcul_traitement_444, + date_courante_in = temp_sous_calcul_traitement_445, + redevance_in = temp_sous_calcul_traitement_446, + condition_2_du_832_25_in = temp_sous_calcul_traitement_447, + n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_448)).coefficient_prise_en_charge_d832_25, + aide_finale_formule = calcul_aide_personnalisee_logement_foyer( + CalculAidePersonnaliseeLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_429, + date_conventionnement_in = temp_sous_calcul_traitement_430, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_431, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_432, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_433, + zone_in = temp_sous_calcul_traitement_434, + date_courante_in = temp_sous_calcul_traitement_435, + redevance_in = temp_sous_calcul_traitement_436, + condition_2_du_832_25_in = temp_sous_calcul_traitement_437, + n_nombre_parts_d832_25_in = temp_sous_calcul_traitement_438)).aide_finale_formule, + traitement_aide_finale = temp_sous_calcul_traitement_418).traitement_aide_finale) except EmptyError: - temp_sous_calcul_traitement_26 = dead_value + temp_sous_calcul_traitement_184 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", start_line=743, start_column=11, end_line=743, end_column=33, @@ -17897,12 +25094,12 @@ def calcul_aide_personnalisee_logement(calcul_aide_personnalisee_logement_in:Cal "Calcul du montant de l'aide personnalisée au logement", "Déclarations des champs d'application", "Prologue : aides au logement"])) - sous_calcul_traitement = temp_sous_calcul_traitement_26 + sous_calcul_traitement = temp_sous_calcul_traitement_184 try: - def temp_traitement_aide_finale_2(param_40:Money): + def temp_traitement_aide_finale_2(param_46:Money): try: return sous_calcul_traitement.traitement_aide_finale( - param_40) + param_46) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", start_line=746, @@ -17959,12 +25156,12 @@ def eligibilite_prime_de_demenagement(eligibilite_prime_de_demenagement_in:Eligi try: try: def temp_condition_rang_enfant(personne_a_charge_3:PersonneACharge): - match_arg_506 = personne_a_charge_3 - if match_arg_506.code == PersonneACharge_Code.EnfantACharge: - _ = match_arg_506.value + match_arg_518 = personne_a_charge_3 + if match_arg_518.code == PersonneACharge_Code.EnfantACharge: + _ = match_arg_518.value return True - elif match_arg_506.code == PersonneACharge_Code.AutrePersonneACharge: - _ = match_arg_506.value + elif match_arg_518.code == PersonneACharge_Code.AutrePersonneACharge: + _ = match_arg_518.value return False if ((list_length(list_filter(temp_condition_rang_enfant, menage_1.personnes_a_charge)) + @@ -18053,24 +25250,24 @@ def eligibilite_prime_de_demenagement(eligibilite_prime_de_demenagement_in:Eligi eligibilite_apl_dot_condition_2_r823_4 = result_20.condition_2_r823_4 try: try: - match_arg_507 = informations.date_naissance_troisieme_enfant_ou_dernier_si_plus - if match_arg_507.code == DateNaissanceTroisiemeOuDernierPlusEnfant_Code.MoinsDeTroisEnfants: - _ = match_arg_507.value + match_arg_519 = informations.date_naissance_troisieme_enfant_ou_dernier_si_plus + if match_arg_519.code == DateNaissanceTroisiemeOuDernierPlusEnfant_Code.MoinsDeTroisEnfants: + _ = match_arg_519.value temp_condition_periode_demenagement = False - elif match_arg_507.code == DateNaissanceTroisiemeOuDernierPlusEnfant_Code.PlusDeTroisEnfants: - date_naissance_ou_grossesse = match_arg_507.value - match_arg_508 = date_naissance_ou_grossesse - if match_arg_508.code == DateDeNaissanceOuMoisDeGrossesse_Code.DateDeNaissance: - date_naissance = match_arg_508.value + elif match_arg_519.code == DateNaissanceTroisiemeOuDernierPlusEnfant_Code.PlusDeTroisEnfants: + date_naissance_ou_grossesse = match_arg_519.value + match_arg_520 = date_naissance_ou_grossesse + if match_arg_520.code == DateDeNaissanceOuMoisDeGrossesse_Code.DateDeNaissance: + date_naissance = match_arg_520.value temp_condition_periode_demenagement = (date_courante_12 <= (first_day_of_month((date_naissance + duration_of_numbers(2,0,0))) + duration_of_numbers(0,0,-1))) - elif match_arg_508.code == DateDeNaissanceOuMoisDeGrossesse_Code.AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse: - _ = match_arg_508.value + elif match_arg_520.code == DateDeNaissanceOuMoisDeGrossesse_Code.AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse: + _ = match_arg_520.value temp_condition_periode_demenagement = False - elif match_arg_508.code == DateDeNaissanceOuMoisDeGrossesse_Code.ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse: - _ = match_arg_508.value + elif match_arg_520.code == DateDeNaissanceOuMoisDeGrossesse_Code.ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse: + _ = match_arg_520.value temp_condition_periode_demenagement = True if temp_condition_periode_demenagement: temp_condition_periode_demenagement_1 = True @@ -18090,23 +25287,23 @@ def eligibilite_prime_de_demenagement(eligibilite_prime_de_demenagement_in:Eligi condition_periode_demenagement = temp_condition_periode_demenagement_1 try: def temp_plafond_d823_22(personne_a_charge_4:PersonneACharge): - match_arg_509 = personne_a_charge_4 - if match_arg_509.code == PersonneACharge_Code.EnfantACharge: - _ = match_arg_509.value + match_arg_521 = personne_a_charge_4 + if match_arg_521.code == PersonneACharge_Code.EnfantACharge: + _ = match_arg_521.value return True - elif match_arg_509.code == PersonneACharge_Code.AutrePersonneACharge: - _ = match_arg_509.value + elif match_arg_521.code == PersonneACharge_Code.AutrePersonneACharge: + _ = match_arg_521.value return False if (list_length(list_filter(temp_plafond_d823_22, menage_1.personnes_a_charge)) > integer_of_string("3")): def temp_plafond_d823_22_1(personne_a_charge_5:PersonneACharge): - match_arg_510 = personne_a_charge_5 - if match_arg_510.code == PersonneACharge_Code.EnfantACharge: - _ = match_arg_510.value + match_arg_522 = personne_a_charge_5 + if match_arg_522.code == PersonneACharge_Code.EnfantACharge: + _ = match_arg_522.value return True - elif match_arg_510.code == PersonneACharge_Code.AutrePersonneACharge: - _ = match_arg_510.value + elif match_arg_522.code == PersonneACharge_Code.AutrePersonneACharge: + _ = match_arg_522.value return False temp_plafond_d823_22_2 = (base_mensuelle_allocations_familiales_dot_montant_1 * (decimal_of_integer((list_length(list_filter(temp_plafond_d823_22_1, @@ -18169,48 +25366,48 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem demandeur_2 = eligibilite_aide_personnalisee_logement_in.demandeur_in date_courante_13 = eligibilite_aide_personnalisee_logement_in.date_courante_in try: - def temp_caracteristiques_pret_l831_1_1(param_41:Pret): + def temp_caracteristiques_pret_l831_1_1(param_47:Pret): try: try: try: - match_arg_511 = param_41.type_pret - if match_arg_511.code == TypePret_Code.D331_32: - _ = match_arg_511.value + match_arg_523 = param_47.type_pret + if match_arg_523.code == TypePret_Code.D331_32: + _ = match_arg_523.value temp_caracteristiques_pret_l831_1_1_1 = False - elif match_arg_511.code == TypePret_Code.D331_63_64: - _ = match_arg_511.value + elif match_arg_523.code == TypePret_Code.D331_63_64: + _ = match_arg_523.value temp_caracteristiques_pret_l831_1_1_1 = False - elif match_arg_511.code == TypePret_Code.D331_59_8: - _ = match_arg_511.value + elif match_arg_523.code == TypePret_Code.D331_59_8: + _ = match_arg_523.value temp_caracteristiques_pret_l831_1_1_1 = False - elif match_arg_511.code == TypePret_Code.D331_76_1: - _ = match_arg_511.value + elif match_arg_523.code == TypePret_Code.D331_76_1: + _ = match_arg_523.value temp_caracteristiques_pret_l831_1_1_1 = True - elif match_arg_511.code == TypePret_Code.Autre: - _ = match_arg_511.value + elif match_arg_523.code == TypePret_Code.Autre: + _ = match_arg_523.value temp_caracteristiques_pret_l831_1_1_1 = False - match_arg_512 = param_41.type_pret - if match_arg_512.code == TypePret_Code.D331_32: - _ = match_arg_512.value + match_arg_524 = param_47.type_pret + if match_arg_524.code == TypePret_Code.D331_32: + _ = match_arg_524.value temp_caracteristiques_pret_l831_1_1_2 = False - elif match_arg_512.code == TypePret_Code.D331_63_64: - _ = match_arg_512.value + elif match_arg_524.code == TypePret_Code.D331_63_64: + _ = match_arg_524.value temp_caracteristiques_pret_l831_1_1_2 = False - elif match_arg_512.code == TypePret_Code.D331_59_8: - _ = match_arg_512.value + elif match_arg_524.code == TypePret_Code.D331_59_8: + _ = match_arg_524.value temp_caracteristiques_pret_l831_1_1_2 = True - elif match_arg_512.code == TypePret_Code.D331_76_1: - _ = match_arg_512.value + elif match_arg_524.code == TypePret_Code.D331_76_1: + _ = match_arg_524.value temp_caracteristiques_pret_l831_1_1_2 = False - elif match_arg_512.code == TypePret_Code.Autre: - _ = match_arg_512.value + elif match_arg_524.code == TypePret_Code.Autre: + _ = match_arg_524.value temp_caracteristiques_pret_l831_1_1_2 = False - match_arg_513 = param_41.titulaire_pret - if match_arg_513.code == TitulairePret_Code.Demandeur: - _ = match_arg_513.value + match_arg_525 = param_47.titulaire_pret + if match_arg_525.code == TitulairePret_Code.Demandeur: + _ = match_arg_525.value temp_caracteristiques_pret_l831_1_1_3 = False - elif match_arg_513.code == TitulairePret_Code.VendeurQuandDemandeurAContratLocationAccession: - _ = match_arg_513.value + elif match_arg_525.code == TitulairePret_Code.VendeurQuandDemandeurAContratLocationAccession: + _ = match_arg_525.value temp_caracteristiques_pret_l831_1_1_3 = True if (temp_caracteristiques_pret_l831_1_1_3 and (temp_caracteristiques_pret_l831_1_1_2 or @@ -18219,44 +25416,44 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem else: raise EmptyError except EmptyError: - match_arg_514 = param_41.type_pret - if match_arg_514.code == TypePret_Code.D331_32: - _ = match_arg_514.value + match_arg_526 = param_47.type_pret + if match_arg_526.code == TypePret_Code.D331_32: + _ = match_arg_526.value temp_caracteristiques_pret_l831_1_1_4 = False - elif match_arg_514.code == TypePret_Code.D331_63_64: - _ = match_arg_514.value + elif match_arg_526.code == TypePret_Code.D331_63_64: + _ = match_arg_526.value temp_caracteristiques_pret_l831_1_1_4 = True - elif match_arg_514.code == TypePret_Code.D331_59_8: - _ = match_arg_514.value + elif match_arg_526.code == TypePret_Code.D331_59_8: + _ = match_arg_526.value temp_caracteristiques_pret_l831_1_1_4 = False - elif match_arg_514.code == TypePret_Code.D331_76_1: - _ = match_arg_514.value + elif match_arg_526.code == TypePret_Code.D331_76_1: + _ = match_arg_526.value temp_caracteristiques_pret_l831_1_1_4 = False - elif match_arg_514.code == TypePret_Code.Autre: - _ = match_arg_514.value + elif match_arg_526.code == TypePret_Code.Autre: + _ = match_arg_526.value temp_caracteristiques_pret_l831_1_1_4 = False - match_arg_515 = param_41.type_pret - if match_arg_515.code == TypePret_Code.D331_32: - _ = match_arg_515.value + match_arg_527 = param_47.type_pret + if match_arg_527.code == TypePret_Code.D331_32: + _ = match_arg_527.value temp_caracteristiques_pret_l831_1_1_5 = True - elif match_arg_515.code == TypePret_Code.D331_63_64: - _ = match_arg_515.value + elif match_arg_527.code == TypePret_Code.D331_63_64: + _ = match_arg_527.value temp_caracteristiques_pret_l831_1_1_5 = False - elif match_arg_515.code == TypePret_Code.D331_59_8: - _ = match_arg_515.value + elif match_arg_527.code == TypePret_Code.D331_59_8: + _ = match_arg_527.value temp_caracteristiques_pret_l831_1_1_5 = False - elif match_arg_515.code == TypePret_Code.D331_76_1: - _ = match_arg_515.value + elif match_arg_527.code == TypePret_Code.D331_76_1: + _ = match_arg_527.value temp_caracteristiques_pret_l831_1_1_5 = False - elif match_arg_515.code == TypePret_Code.Autre: - _ = match_arg_515.value + elif match_arg_527.code == TypePret_Code.Autre: + _ = match_arg_527.value temp_caracteristiques_pret_l831_1_1_5 = False - match_arg_516 = param_41.titulaire_pret - if match_arg_516.code == TitulairePret_Code.Demandeur: - _ = match_arg_516.value + match_arg_528 = param_47.titulaire_pret + if match_arg_528.code == TitulairePret_Code.Demandeur: + _ = match_arg_528.value temp_caracteristiques_pret_l831_1_1_6 = True - elif match_arg_516.code == TitulairePret_Code.VendeurQuandDemandeurAContratLocationAccession: - _ = match_arg_516.value + elif match_arg_528.code == TitulairePret_Code.VendeurQuandDemandeurAContratLocationAccession: + _ = match_arg_528.value temp_caracteristiques_pret_l831_1_1_6 = False if (temp_caracteristiques_pret_l831_1_1_6 and (temp_caracteristiques_pret_l831_1_1_5 or @@ -18285,7 +25482,7 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem "Prologue : aides au logement"])) caracteristiques_pret_l831_1_1 = temp_caracteristiques_pret_l831_1_1 try: - def temp_caracteristiques_pret_l831_1_6(param_42:Pret): + def temp_caracteristiques_pret_l831_1_6(param_48:Pret): try: return False except EmptyError: @@ -18310,21 +25507,21 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem try: try: try: - match_arg_517 = menage_2.logement.mode_occupation - if match_arg_517.code == ModeOccupation_Code.Locataire: - _ = match_arg_517.value + match_arg_529 = menage_2.logement.mode_occupation + if match_arg_529.code == ModeOccupation_Code.Locataire: + _ = match_arg_529.value temp_condition_logement_pret = False - elif match_arg_517.code == ModeOccupation_Code.ResidentLogementFoyer: - _ = match_arg_517.value + elif match_arg_529.code == ModeOccupation_Code.ResidentLogementFoyer: + _ = match_arg_529.value temp_condition_logement_pret = False - elif match_arg_517.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: - propriete = match_arg_517.value - match_arg_518 = propriete.anciennete_logement - if match_arg_518.code == NeufOuAncien_Code.Neuf: - _ = match_arg_518.value + elif match_arg_529.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: + propriete = match_arg_529.value + match_arg_530 = propriete.anciennete_logement + if match_arg_530.code == NeufOuAncien_Code.Neuf: + _ = match_arg_530.value temp_condition_logement_pret_1 = False - elif match_arg_518.code == NeufOuAncien_Code.Ancien: - _ = match_arg_518.value + elif match_arg_530.code == NeufOuAncien_Code.Ancien: + _ = match_arg_530.value temp_condition_logement_pret_1 = True temp_condition_logement_pret = ((propriete.pret.date_signature >= date_of_numbers(2018,1,1)) and @@ -18332,17 +25529,17 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem date_of_numbers(2020,1,1)) and (temp_condition_logement_pret_1 and propriete.logement_situe_commune_desequilibre_l831_2))) - elif match_arg_517.code == ModeOccupation_Code.SousLocataire: - _ = match_arg_517.value + elif match_arg_529.code == ModeOccupation_Code.SousLocataire: + _ = match_arg_529.value temp_condition_logement_pret = False - elif match_arg_517.code == ModeOccupation_Code.LocationAccession: - propriete_1 = match_arg_517.value - match_arg_519 = propriete_1.anciennete_logement - if match_arg_519.code == NeufOuAncien_Code.Neuf: - _ = match_arg_519.value + elif match_arg_529.code == ModeOccupation_Code.LocationAccession: + propriete_1 = match_arg_529.value + match_arg_531 = propriete_1.anciennete_logement + if match_arg_531.code == NeufOuAncien_Code.Neuf: + _ = match_arg_531.value temp_condition_logement_pret_2 = False - elif match_arg_519.code == NeufOuAncien_Code.Ancien: - _ = match_arg_519.value + elif match_arg_531.code == NeufOuAncien_Code.Ancien: + _ = match_arg_531.value temp_condition_logement_pret_2 = True temp_condition_logement_pret = ((propriete_1.pret.date_signature >= date_of_numbers(2018,1,1)) and @@ -18356,22 +25553,22 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem temp_condition_logement_pret_3 = dead_value raise EmptyError except EmptyError: - match_arg_520 = menage_2.logement.mode_occupation - if match_arg_520.code == ModeOccupation_Code.Locataire: - _ = match_arg_520.value + match_arg_532 = menage_2.logement.mode_occupation + if match_arg_532.code == ModeOccupation_Code.Locataire: + _ = match_arg_532.value temp_condition_logement_pret_4 = False - elif match_arg_520.code == ModeOccupation_Code.ResidentLogementFoyer: - _ = match_arg_520.value + elif match_arg_532.code == ModeOccupation_Code.ResidentLogementFoyer: + _ = match_arg_532.value temp_condition_logement_pret_4 = False - elif match_arg_520.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: - propriete_2 = match_arg_520.value + elif match_arg_532.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: + propriete_2 = match_arg_532.value temp_condition_logement_pret_4 = (propriete_2.pret.date_signature >= date_of_numbers(2017,12,31)) - elif match_arg_520.code == ModeOccupation_Code.SousLocataire: - _ = match_arg_520.value + elif match_arg_532.code == ModeOccupation_Code.SousLocataire: + _ = match_arg_532.value temp_condition_logement_pret_4 = False - elif match_arg_520.code == ModeOccupation_Code.LocationAccession: - propriete_3 = match_arg_520.value + elif match_arg_532.code == ModeOccupation_Code.LocationAccession: + propriete_3 = match_arg_532.value temp_condition_logement_pret_4 = (propriete_3.pret.date_signature >= date_of_numbers(2017,12,31)) if temp_condition_logement_pret_4: @@ -18451,21 +25648,21 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem try: try: try: - match_arg_521 = menage_2.logement.mode_occupation - if match_arg_521.code == ModeOccupation_Code.Locataire: - _ = match_arg_521.value + match_arg_533 = menage_2.logement.mode_occupation + if match_arg_533.code == ModeOccupation_Code.Locataire: + _ = match_arg_533.value temp_condition_logement_bailleur = False - elif match_arg_521.code == ModeOccupation_Code.ResidentLogementFoyer: - logement_foyer = match_arg_521.value + elif match_arg_533.code == ModeOccupation_Code.ResidentLogementFoyer: + logement_foyer = match_arg_533.value temp_condition_logement_bailleur = logement_foyer.remplit_conditions_r832_21 - elif match_arg_521.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: - _ = match_arg_521.value + elif match_arg_533.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: + _ = match_arg_533.value temp_condition_logement_bailleur = False - elif match_arg_521.code == ModeOccupation_Code.SousLocataire: - _ = match_arg_521.value + elif match_arg_533.code == ModeOccupation_Code.SousLocataire: + _ = match_arg_533.value temp_condition_logement_bailleur = False - elif match_arg_521.code == ModeOccupation_Code.LocationAccession: - _ = match_arg_521.value + elif match_arg_533.code == ModeOccupation_Code.LocationAccession: + _ = match_arg_533.value temp_condition_logement_bailleur = False if temp_condition_logement_bailleur: temp_condition_logement_bailleur_1 = True @@ -18473,21 +25670,21 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem temp_condition_logement_bailleur_1 = dead_value raise EmptyError except EmptyError: - match_arg_522 = menage_2.logement.mode_occupation - if match_arg_522.code == ModeOccupation_Code.Locataire: - _ = match_arg_522.value + match_arg_534 = menage_2.logement.mode_occupation + if match_arg_534.code == ModeOccupation_Code.Locataire: + _ = match_arg_534.value temp_condition_logement_bailleur_2 = False - elif match_arg_522.code == ModeOccupation_Code.ResidentLogementFoyer: - _ = match_arg_522.value + elif match_arg_534.code == ModeOccupation_Code.ResidentLogementFoyer: + _ = match_arg_534.value temp_condition_logement_bailleur_2 = False - elif match_arg_522.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: - _ = match_arg_522.value + elif match_arg_534.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: + _ = match_arg_534.value temp_condition_logement_bailleur_2 = False - elif match_arg_522.code == ModeOccupation_Code.SousLocataire: - _ = match_arg_522.value + elif match_arg_534.code == ModeOccupation_Code.SousLocataire: + _ = match_arg_534.value temp_condition_logement_bailleur_2 = False - elif match_arg_522.code == ModeOccupation_Code.LocationAccession: - propriete_4 = match_arg_522.value + elif match_arg_534.code == ModeOccupation_Code.LocationAccession: + propriete_4 = match_arg_534.value temp_condition_logement_bailleur_2 = caracteristiques_pret_l831_1_6( propriete_4.pret) if temp_condition_logement_bailleur_2: @@ -18496,21 +25693,21 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem temp_condition_logement_bailleur_1 = dead_value raise EmptyError except EmptyError: - match_arg_523 = menage_2.logement.mode_occupation - if match_arg_523.code == ModeOccupation_Code.Locataire: - _ = match_arg_523.value + match_arg_535 = menage_2.logement.mode_occupation + if match_arg_535.code == ModeOccupation_Code.Locataire: + _ = match_arg_535.value temp_condition_logement_bailleur_3 = False - elif match_arg_523.code == ModeOccupation_Code.ResidentLogementFoyer: - location_3 = match_arg_523.value + elif match_arg_535.code == ModeOccupation_Code.ResidentLogementFoyer: + location_3 = match_arg_535.value temp_condition_logement_bailleur_3 = location_3.conventionne_livre_III_titre_V_chap_III - elif match_arg_523.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: - _ = match_arg_523.value + elif match_arg_535.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: + _ = match_arg_535.value temp_condition_logement_bailleur_3 = False - elif match_arg_523.code == ModeOccupation_Code.SousLocataire: - _ = match_arg_523.value + elif match_arg_535.code == ModeOccupation_Code.SousLocataire: + _ = match_arg_535.value temp_condition_logement_bailleur_3 = False - elif match_arg_523.code == ModeOccupation_Code.LocationAccession: - _ = match_arg_523.value + elif match_arg_535.code == ModeOccupation_Code.LocationAccession: + _ = match_arg_535.value temp_condition_logement_bailleur_3 = False if temp_condition_logement_bailleur_3: temp_condition_logement_bailleur_1 = True @@ -18518,30 +25715,30 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem temp_condition_logement_bailleur_1 = dead_value raise EmptyError except EmptyError: - match_arg_524 = menage_2.logement.mode_occupation - if match_arg_524.code == ModeOccupation_Code.Locataire: - location_4 = match_arg_524.value - match_arg_525 = location_4.bailleur - if match_arg_525.code == TypeBailleur_Code.BailleurSocial: - convention = match_arg_525.value + match_arg_536 = menage_2.logement.mode_occupation + if match_arg_536.code == ModeOccupation_Code.Locataire: + location_4 = match_arg_536.value + match_arg_537 = location_4.bailleur + if match_arg_537.code == TypeBailleur_Code.BailleurSocial: + convention = match_arg_537.value temp_condition_logement_bailleur_4 = convention.conventionne_livre_III_titre_V_chap_III - elif match_arg_525.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: - convention_1 = match_arg_525.value + elif match_arg_537.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + convention_1 = match_arg_537.value temp_condition_logement_bailleur_4 = convention_1.conventionne_livre_III_titre_II_chap_I_sec_3 - elif match_arg_525.code == TypeBailleur_Code.BailleurPrive: - _ = match_arg_525.value + elif match_arg_537.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_537.value temp_condition_logement_bailleur_4 = False - elif match_arg_524.code == ModeOccupation_Code.ResidentLogementFoyer: - _ = match_arg_524.value + elif match_arg_536.code == ModeOccupation_Code.ResidentLogementFoyer: + _ = match_arg_536.value temp_condition_logement_bailleur_4 = False - elif match_arg_524.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: - _ = match_arg_524.value + elif match_arg_536.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: + _ = match_arg_536.value temp_condition_logement_bailleur_4 = False - elif match_arg_524.code == ModeOccupation_Code.SousLocataire: - _ = match_arg_524.value + elif match_arg_536.code == ModeOccupation_Code.SousLocataire: + _ = match_arg_536.value temp_condition_logement_bailleur_4 = False - elif match_arg_524.code == ModeOccupation_Code.LocationAccession: - _ = match_arg_524.value + elif match_arg_536.code == ModeOccupation_Code.LocationAccession: + _ = match_arg_536.value temp_condition_logement_bailleur_4 = False if temp_condition_logement_bailleur_4: temp_condition_logement_bailleur_1 = True @@ -18549,22 +25746,22 @@ def eligibilite_aide_personnalisee_logement(eligibilite_aide_personnalisee_logem temp_condition_logement_bailleur_1 = dead_value raise EmptyError except EmptyError: - match_arg_526 = menage_2.logement.mode_occupation - if match_arg_526.code == ModeOccupation_Code.Locataire: - _ = match_arg_526.value + match_arg_538 = menage_2.logement.mode_occupation + if match_arg_538.code == ModeOccupation_Code.Locataire: + _ = match_arg_538.value temp_condition_logement_bailleur_5 = False - elif match_arg_526.code == ModeOccupation_Code.ResidentLogementFoyer: - _ = match_arg_526.value + elif match_arg_538.code == ModeOccupation_Code.ResidentLogementFoyer: + _ = match_arg_538.value temp_condition_logement_bailleur_5 = False - elif match_arg_526.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: - propriete_5 = match_arg_526.value + elif match_arg_538.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: + propriete_5 = match_arg_538.value temp_condition_logement_bailleur_5 = caracteristiques_pret_l831_1_1( propriete_5.pret) - elif match_arg_526.code == ModeOccupation_Code.SousLocataire: - _ = match_arg_526.value + elif match_arg_538.code == ModeOccupation_Code.SousLocataire: + _ = match_arg_538.value temp_condition_logement_bailleur_5 = False - elif match_arg_526.code == ModeOccupation_Code.LocationAccession: - _ = match_arg_526.value + elif match_arg_538.code == ModeOccupation_Code.LocationAccession: + _ = match_arg_538.value temp_condition_logement_bailleur_5 = False if temp_condition_logement_bailleur_5: temp_condition_logement_bailleur_1 = True @@ -18691,42 +25888,42 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili try: try: try: - match_arg_527 = menage_3.logement.mode_occupation - if match_arg_527.code == ModeOccupation_Code.Locataire: - _ = match_arg_527.value + match_arg_539 = menage_3.logement.mode_occupation + if match_arg_539.code == ModeOccupation_Code.Locataire: + _ = match_arg_539.value temp_condition_accession_propriete = False - elif match_arg_527.code == ModeOccupation_Code.ResidentLogementFoyer: - _ = match_arg_527.value + elif match_arg_539.code == ModeOccupation_Code.ResidentLogementFoyer: + _ = match_arg_539.value temp_condition_accession_propriete = False - elif match_arg_527.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: - proprietaire_3 = match_arg_527.value - match_arg_528 = proprietaire_3.type_travaux_logement_r842_5 - if match_arg_528.code == TypeTravauxLogementR8425_Code.ObjectifDecenceLogement: - _ = match_arg_528.value + elif match_arg_539.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: + proprietaire_3 = match_arg_539.value + match_arg_540 = proprietaire_3.type_travaux_logement_r842_5 + if match_arg_540.code == TypeTravauxLogementR8425_Code.ObjectifDecenceLogement: + _ = match_arg_540.value temp_condition_accession_propriete_1 = False - elif match_arg_528.code == TypeTravauxLogementR8425_Code.PrevuDansListeR321_15: - _ = match_arg_528.value + elif match_arg_540.code == TypeTravauxLogementR8425_Code.PrevuDansListeR321_15: + _ = match_arg_540.value temp_condition_accession_propriete_1 = False - elif match_arg_528.code == TypeTravauxLogementR8425_Code.AgrandirOuRendreHabitableD331_63: - _ = match_arg_528.value + elif match_arg_540.code == TypeTravauxLogementR8425_Code.AgrandirOuRendreHabitableD331_63: + _ = match_arg_540.value temp_condition_accession_propriete_1 = True - elif match_arg_528.code == TypeTravauxLogementR8425_Code.PasDeTravaux: - _ = match_arg_528.value + elif match_arg_540.code == TypeTravauxLogementR8425_Code.PasDeTravaux: + _ = match_arg_540.value temp_condition_accession_propriete_1 = False - match_arg_529 = proprietaire_3.pret.titulaire_pret - if match_arg_529.code == TitulairePret_Code.Demandeur: - _ = match_arg_529.value + match_arg_541 = proprietaire_3.pret.titulaire_pret + if match_arg_541.code == TitulairePret_Code.Demandeur: + _ = match_arg_541.value temp_condition_accession_propriete_2 = True - elif match_arg_529.code == TitulairePret_Code.VendeurQuandDemandeurAContratLocationAccession: - _ = match_arg_529.value + elif match_arg_541.code == TitulairePret_Code.VendeurQuandDemandeurAContratLocationAccession: + _ = match_arg_541.value temp_condition_accession_propriete_2 = False temp_condition_accession_propriete = (temp_condition_accession_propriete_2 and temp_condition_accession_propriete_1) - elif match_arg_527.code == ModeOccupation_Code.SousLocataire: - _ = match_arg_527.value + elif match_arg_539.code == ModeOccupation_Code.SousLocataire: + _ = match_arg_539.value temp_condition_accession_propriete = False - elif match_arg_527.code == ModeOccupation_Code.LocationAccession: - _ = match_arg_527.value + elif match_arg_539.code == ModeOccupation_Code.LocationAccession: + _ = match_arg_539.value temp_condition_accession_propriete = False if temp_condition_accession_propriete: temp_condition_accession_propriete_3 = True @@ -18734,42 +25931,42 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili temp_condition_accession_propriete_3 = dead_value raise EmptyError except EmptyError: - match_arg_530 = menage_3.logement.mode_occupation - if match_arg_530.code == ModeOccupation_Code.Locataire: - _ = match_arg_530.value + match_arg_542 = menage_3.logement.mode_occupation + if match_arg_542.code == ModeOccupation_Code.Locataire: + _ = match_arg_542.value temp_condition_accession_propriete_4 = False - elif match_arg_530.code == ModeOccupation_Code.ResidentLogementFoyer: - _ = match_arg_530.value + elif match_arg_542.code == ModeOccupation_Code.ResidentLogementFoyer: + _ = match_arg_542.value temp_condition_accession_propriete_4 = False - elif match_arg_530.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: - proprietaire_4 = match_arg_530.value - match_arg_531 = proprietaire_4.type_travaux_logement_r842_5 - if match_arg_531.code == TypeTravauxLogementR8425_Code.ObjectifDecenceLogement: - _ = match_arg_531.value + elif match_arg_542.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: + proprietaire_4 = match_arg_542.value + match_arg_543 = proprietaire_4.type_travaux_logement_r842_5 + if match_arg_543.code == TypeTravauxLogementR8425_Code.ObjectifDecenceLogement: + _ = match_arg_543.value temp_condition_accession_propriete_5 = False - elif match_arg_531.code == TypeTravauxLogementR8425_Code.PrevuDansListeR321_15: - _ = match_arg_531.value + elif match_arg_543.code == TypeTravauxLogementR8425_Code.PrevuDansListeR321_15: + _ = match_arg_543.value temp_condition_accession_propriete_5 = True - elif match_arg_531.code == TypeTravauxLogementR8425_Code.AgrandirOuRendreHabitableD331_63: - _ = match_arg_531.value + elif match_arg_543.code == TypeTravauxLogementR8425_Code.AgrandirOuRendreHabitableD331_63: + _ = match_arg_543.value temp_condition_accession_propriete_5 = False - elif match_arg_531.code == TypeTravauxLogementR8425_Code.PasDeTravaux: - _ = match_arg_531.value + elif match_arg_543.code == TypeTravauxLogementR8425_Code.PasDeTravaux: + _ = match_arg_543.value temp_condition_accession_propriete_5 = False - match_arg_532 = proprietaire_4.pret.titulaire_pret - if match_arg_532.code == TitulairePret_Code.Demandeur: - _ = match_arg_532.value + match_arg_544 = proprietaire_4.pret.titulaire_pret + if match_arg_544.code == TitulairePret_Code.Demandeur: + _ = match_arg_544.value temp_condition_accession_propriete_6 = True - elif match_arg_532.code == TitulairePret_Code.VendeurQuandDemandeurAContratLocationAccession: - _ = match_arg_532.value + elif match_arg_544.code == TitulairePret_Code.VendeurQuandDemandeurAContratLocationAccession: + _ = match_arg_544.value temp_condition_accession_propriete_6 = False temp_condition_accession_propriete_4 = (temp_condition_accession_propriete_6 and temp_condition_accession_propriete_5) - elif match_arg_530.code == ModeOccupation_Code.SousLocataire: - _ = match_arg_530.value + elif match_arg_542.code == ModeOccupation_Code.SousLocataire: + _ = match_arg_542.value temp_condition_accession_propriete_4 = False - elif match_arg_530.code == ModeOccupation_Code.LocationAccession: - _ = match_arg_530.value + elif match_arg_542.code == ModeOccupation_Code.LocationAccession: + _ = match_arg_542.value temp_condition_accession_propriete_4 = False if temp_condition_accession_propriete_4: temp_condition_accession_propriete_3 = True @@ -18777,56 +25974,56 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili temp_condition_accession_propriete_3 = dead_value raise EmptyError except EmptyError: - match_arg_533 = menage_3.logement.mode_occupation - if match_arg_533.code == ModeOccupation_Code.Locataire: - _ = match_arg_533.value + match_arg_545 = menage_3.logement.mode_occupation + if match_arg_545.code == ModeOccupation_Code.Locataire: + _ = match_arg_545.value temp_condition_accession_propriete_7 = False - elif match_arg_533.code == ModeOccupation_Code.ResidentLogementFoyer: - _ = match_arg_533.value + elif match_arg_545.code == ModeOccupation_Code.ResidentLogementFoyer: + _ = match_arg_545.value temp_condition_accession_propriete_7 = False - elif match_arg_533.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: - proprietaire_5 = match_arg_533.value - match_arg_534 = proprietaire_5.type_travaux_logement_r842_5 - if match_arg_534.code == TypeTravauxLogementR8425_Code.ObjectifDecenceLogement: - _ = match_arg_534.value + elif match_arg_545.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: + proprietaire_5 = match_arg_545.value + match_arg_546 = proprietaire_5.type_travaux_logement_r842_5 + if match_arg_546.code == TypeTravauxLogementR8425_Code.ObjectifDecenceLogement: + _ = match_arg_546.value temp_condition_accession_propriete_8 = True - elif match_arg_534.code == TypeTravauxLogementR8425_Code.PrevuDansListeR321_15: - _ = match_arg_534.value + elif match_arg_546.code == TypeTravauxLogementR8425_Code.PrevuDansListeR321_15: + _ = match_arg_546.value temp_condition_accession_propriete_8 = False - elif match_arg_534.code == TypeTravauxLogementR8425_Code.AgrandirOuRendreHabitableD331_63: - _ = match_arg_534.value + elif match_arg_546.code == TypeTravauxLogementR8425_Code.AgrandirOuRendreHabitableD331_63: + _ = match_arg_546.value temp_condition_accession_propriete_8 = False - elif match_arg_534.code == TypeTravauxLogementR8425_Code.PasDeTravaux: - _ = match_arg_534.value + elif match_arg_546.code == TypeTravauxLogementR8425_Code.PasDeTravaux: + _ = match_arg_546.value temp_condition_accession_propriete_8 = False - match_arg_535 = proprietaire_5.type_travaux_logement_r842_5 - if match_arg_535.code == TypeTravauxLogementR8425_Code.ObjectifDecenceLogement: - _ = match_arg_535.value + match_arg_547 = proprietaire_5.type_travaux_logement_r842_5 + if match_arg_547.code == TypeTravauxLogementR8425_Code.ObjectifDecenceLogement: + _ = match_arg_547.value temp_condition_accession_propriete_9 = False - elif match_arg_535.code == TypeTravauxLogementR8425_Code.PrevuDansListeR321_15: - _ = match_arg_535.value + elif match_arg_547.code == TypeTravauxLogementR8425_Code.PrevuDansListeR321_15: + _ = match_arg_547.value temp_condition_accession_propriete_9 = False - elif match_arg_535.code == TypeTravauxLogementR8425_Code.AgrandirOuRendreHabitableD331_63: - _ = match_arg_535.value + elif match_arg_547.code == TypeTravauxLogementR8425_Code.AgrandirOuRendreHabitableD331_63: + _ = match_arg_547.value temp_condition_accession_propriete_9 = False - elif match_arg_535.code == TypeTravauxLogementR8425_Code.PasDeTravaux: - _ = match_arg_535.value + elif match_arg_547.code == TypeTravauxLogementR8425_Code.PasDeTravaux: + _ = match_arg_547.value temp_condition_accession_propriete_9 = True - match_arg_536 = proprietaire_5.pret.titulaire_pret - if match_arg_536.code == TitulairePret_Code.Demandeur: - _ = match_arg_536.value + match_arg_548 = proprietaire_5.pret.titulaire_pret + if match_arg_548.code == TitulairePret_Code.Demandeur: + _ = match_arg_548.value temp_condition_accession_propriete_10 = True - elif match_arg_536.code == TitulairePret_Code.VendeurQuandDemandeurAContratLocationAccession: - _ = match_arg_536.value + elif match_arg_548.code == TitulairePret_Code.VendeurQuandDemandeurAContratLocationAccession: + _ = match_arg_548.value temp_condition_accession_propriete_10 = False temp_condition_accession_propriete_7 = (temp_condition_accession_propriete_10 and (temp_condition_accession_propriete_9 or temp_condition_accession_propriete_8)) - elif match_arg_533.code == ModeOccupation_Code.SousLocataire: - _ = match_arg_533.value + elif match_arg_545.code == ModeOccupation_Code.SousLocataire: + _ = match_arg_545.value temp_condition_accession_propriete_7 = False - elif match_arg_533.code == ModeOccupation_Code.LocationAccession: - _ = match_arg_533.value + elif match_arg_545.code == ModeOccupation_Code.LocationAccession: + _ = match_arg_545.value temp_condition_accession_propriete_7 = False if temp_condition_accession_propriete_7: temp_condition_accession_propriete_3 = True @@ -18834,21 +26031,21 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili temp_condition_accession_propriete_3 = dead_value raise EmptyError except EmptyError: - match_arg_537 = menage_3.logement.mode_occupation - if match_arg_537.code == ModeOccupation_Code.Locataire: - _ = match_arg_537.value + match_arg_549 = menage_3.logement.mode_occupation + if match_arg_549.code == ModeOccupation_Code.Locataire: + _ = match_arg_549.value temp_condition_accession_propriete_11 = True - elif match_arg_537.code == ModeOccupation_Code.ResidentLogementFoyer: - _ = match_arg_537.value + elif match_arg_549.code == ModeOccupation_Code.ResidentLogementFoyer: + _ = match_arg_549.value temp_condition_accession_propriete_11 = True - elif match_arg_537.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: - _ = match_arg_537.value + elif match_arg_549.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: + _ = match_arg_549.value temp_condition_accession_propriete_11 = False - elif match_arg_537.code == ModeOccupation_Code.SousLocataire: - _ = match_arg_537.value + elif match_arg_549.code == ModeOccupation_Code.SousLocataire: + _ = match_arg_549.value temp_condition_accession_propriete_11 = True - elif match_arg_537.code == ModeOccupation_Code.LocationAccession: - _ = match_arg_537.value + elif match_arg_549.code == ModeOccupation_Code.LocationAccession: + _ = match_arg_549.value temp_condition_accession_propriete_11 = True if temp_condition_accession_propriete_11: temp_condition_accession_propriete_3 = True @@ -18900,21 +26097,21 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili "Prologue : aides au logement"])) eligibilite_commune_dot_date_courante_2 = temp_eligibilite_commune_dot_date_courante_1 def temp_eligibilite_commune_dot_condition_logement_residence_principale_2(_:Unit): - match_arg_538 = menage_3.logement.mode_occupation - if match_arg_538.code == ModeOccupation_Code.Locataire: - _ = match_arg_538.value + match_arg_550 = menage_3.logement.mode_occupation + if match_arg_550.code == ModeOccupation_Code.Locataire: + _ = match_arg_550.value temp_eligibilite_commune_dot_condition_logement_residence_principale_3 = False - elif match_arg_538.code == ModeOccupation_Code.ResidentLogementFoyer: - logement_foyer_1 = match_arg_538.value + elif match_arg_550.code == ModeOccupation_Code.ResidentLogementFoyer: + logement_foyer_1 = match_arg_550.value temp_eligibilite_commune_dot_condition_logement_residence_principale_3 = logement_foyer_1.construit_application_loi_1957_12_III - elif match_arg_538.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: - _ = match_arg_538.value + elif match_arg_550.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: + _ = match_arg_550.value temp_eligibilite_commune_dot_condition_logement_residence_principale_3 = False - elif match_arg_538.code == ModeOccupation_Code.SousLocataire: - _ = match_arg_538.value + elif match_arg_550.code == ModeOccupation_Code.SousLocataire: + _ = match_arg_550.value temp_eligibilite_commune_dot_condition_logement_residence_principale_3 = False - elif match_arg_538.code == ModeOccupation_Code.LocationAccession: - _ = match_arg_538.value + elif match_arg_550.code == ModeOccupation_Code.LocationAccession: + _ = match_arg_550.value temp_eligibilite_commune_dot_condition_logement_residence_principale_3 = False if temp_eligibilite_commune_dot_condition_logement_residence_principale_3: temp_eligibilite_commune_dot_condition_logement_residence_principale_4 = True @@ -18924,21 +26121,21 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili return temp_eligibilite_commune_dot_condition_logement_residence_principale_4 eligibilite_commune_dot_condition_logement_residence_principale_1 = temp_eligibilite_commune_dot_condition_logement_residence_principale_2 def temp_eligibilite_commune_dot_condition_logement_surface_2(_:Unit): - match_arg_539 = menage_3.logement.mode_occupation - if match_arg_539.code == ModeOccupation_Code.Locataire: - _ = match_arg_539.value + match_arg_551 = menage_3.logement.mode_occupation + if match_arg_551.code == ModeOccupation_Code.Locataire: + _ = match_arg_551.value temp_eligibilite_commune_dot_condition_logement_surface_3 = False - elif match_arg_539.code == ModeOccupation_Code.ResidentLogementFoyer: - logement_foyer_2 = match_arg_539.value + elif match_arg_551.code == ModeOccupation_Code.ResidentLogementFoyer: + logement_foyer_2 = match_arg_551.value temp_eligibilite_commune_dot_condition_logement_surface_3 = logement_foyer_2.construit_application_loi_1957_12_III - elif match_arg_539.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: - _ = match_arg_539.value + elif match_arg_551.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: + _ = match_arg_551.value temp_eligibilite_commune_dot_condition_logement_surface_3 = False - elif match_arg_539.code == ModeOccupation_Code.SousLocataire: - _ = match_arg_539.value + elif match_arg_551.code == ModeOccupation_Code.SousLocataire: + _ = match_arg_551.value temp_eligibilite_commune_dot_condition_logement_surface_3 = False - elif match_arg_539.code == ModeOccupation_Code.LocationAccession: - _ = match_arg_539.value + elif match_arg_551.code == ModeOccupation_Code.LocationAccession: + _ = match_arg_551.value temp_eligibilite_commune_dot_condition_logement_surface_3 = False if temp_eligibilite_commune_dot_condition_logement_surface_3: temp_eligibilite_commune_dot_condition_logement_surface_4 = True @@ -19002,26 +26199,26 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili try: try: try: - match_arg_540 = menage_3.situation_familiale - if match_arg_540.code == SituationFamiliale_Code.Celibataire: - _ = match_arg_540.value + match_arg_552 = menage_3.situation_familiale + if match_arg_552.code == SituationFamiliale_Code.Celibataire: + _ = match_arg_552.value temp_eligibilite_allocation_logement_familiale = ((list_length(menage_3.personnes_a_charge) == integer_of_string("0")) and menage_3.enfant_a_naitre_apres_quatrieme_mois_grossesse) - elif match_arg_540.code == SituationFamiliale_Code.Maries: - _ = match_arg_540.value + elif match_arg_552.code == SituationFamiliale_Code.Maries: + _ = match_arg_552.value temp_eligibilite_allocation_logement_familiale = False - elif match_arg_540.code == SituationFamiliale_Code.Pacses: - _ = match_arg_540.value + elif match_arg_552.code == SituationFamiliale_Code.Pacses: + _ = match_arg_552.value temp_eligibilite_allocation_logement_familiale = False - elif match_arg_540.code == SituationFamiliale_Code.Concubins: - _ = match_arg_540.value + elif match_arg_552.code == SituationFamiliale_Code.Concubins: + _ = match_arg_552.value temp_eligibilite_allocation_logement_familiale = False - elif match_arg_540.code == SituationFamiliale_Code.CelibataireSepareDeFait: - _ = match_arg_540.value + elif match_arg_552.code == SituationFamiliale_Code.CelibataireSepareDeFait: + _ = match_arg_552.value temp_eligibilite_allocation_logement_familiale = False - elif match_arg_540.code == SituationFamiliale_Code.ConcubinageDontSepareDeFait: - _ = match_arg_540.value + elif match_arg_552.code == SituationFamiliale_Code.ConcubinageDontSepareDeFait: + _ = match_arg_552.value temp_eligibilite_allocation_logement_familiale = False if temp_eligibilite_allocation_logement_familiale: temp_eligibilite_allocation_logement_familiale_1 = True @@ -19031,12 +26228,12 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili except EmptyError: try: def temp_eligibilite_allocation_logement_familiale_2(personne_a_charge_6:PersonneACharge): - match_arg_541 = personne_a_charge_6 - if match_arg_541.code == PersonneACharge_Code.EnfantACharge: - enfant_5 = match_arg_541.value + match_arg_553 = personne_a_charge_6 + if match_arg_553.code == PersonneACharge_Code.EnfantACharge: + enfant_5 = match_arg_553.value return False - elif match_arg_541.code == PersonneACharge_Code.AutrePersonneACharge: - parent_3 = match_arg_541.value + elif match_arg_553.code == PersonneACharge_Code.AutrePersonneACharge: + parent_3 = match_arg_553.value return (parent_3.ascendant_descendant_collateral_deuxieme_troisieme_degre and parent_3.incapacite_80_pourcent_ou_restriction_emploi) if (list_length(list_filter(temp_eligibilite_allocation_logement_familiale_2, @@ -19058,37 +26255,37 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili temp_eligibilite_allocation_logement_familiale_1 = dead_value raise EmptyError except EmptyError: - match_arg_542 = menage_3.situation_familiale - if match_arg_542.code == SituationFamiliale_Code.Celibataire: - _ = match_arg_542.value + match_arg_554 = menage_3.situation_familiale + if match_arg_554.code == SituationFamiliale_Code.Celibataire: + _ = match_arg_554.value temp_eligibilite_allocation_logement_familiale_4 = False - elif match_arg_542.code == SituationFamiliale_Code.Maries: - date_mariage = match_arg_542.value + elif match_arg_554.code == SituationFamiliale_Code.Maries: + date_mariage = match_arg_554.value temp_eligibilite_allocation_logement_familiale_4 = (date_courante_14 <= (date_mariage + duree_l841_1_3)) - elif match_arg_542.code == SituationFamiliale_Code.Pacses: - _ = match_arg_542.value + elif match_arg_554.code == SituationFamiliale_Code.Pacses: + _ = match_arg_554.value temp_eligibilite_allocation_logement_familiale_4 = False - elif match_arg_542.code == SituationFamiliale_Code.Concubins: - _ = match_arg_542.value + elif match_arg_554.code == SituationFamiliale_Code.Concubins: + _ = match_arg_554.value temp_eligibilite_allocation_logement_familiale_4 = False - elif match_arg_542.code == SituationFamiliale_Code.CelibataireSepareDeFait: - _ = match_arg_542.value + elif match_arg_554.code == SituationFamiliale_Code.CelibataireSepareDeFait: + _ = match_arg_554.value temp_eligibilite_allocation_logement_familiale_4 = False - elif match_arg_542.code == SituationFamiliale_Code.ConcubinageDontSepareDeFait: - _ = match_arg_542.value + elif match_arg_554.code == SituationFamiliale_Code.ConcubinageDontSepareDeFait: + _ = match_arg_554.value temp_eligibilite_allocation_logement_familiale_4 = False def temp_eligibilite_allocation_logement_familiale_5(personne_a_charge_8:PersonneACharge): - match_arg_543 = personne_a_charge_8 - if match_arg_543.code == PersonneACharge_Code.EnfantACharge: - enfant_6 = match_arg_543.value - match_arg_544 = enfant_6.situation_garde_alternee - if match_arg_544.code == SituationGardeAlternee_Code.PasDeGardeAlternee: - _ = match_arg_544.value + match_arg_555 = personne_a_charge_8 + if match_arg_555.code == PersonneACharge_Code.EnfantACharge: + enfant_6 = match_arg_555.value + match_arg_556 = enfant_6.situation_garde_alternee + if match_arg_556.code == SituationGardeAlternee_Code.PasDeGardeAlternee: + _ = match_arg_556.value temp_eligibilite_allocation_logement_familiale_6 = PriseEnChargeEnfant(PriseEnChargeEnfant_Code.EffectiveEtPermanente, Unit()) - elif match_arg_544.code == SituationGardeAlternee_Code.GardeAlterneeCoefficientPriseEnCharge: - _ = match_arg_544.value + elif match_arg_556.code == SituationGardeAlternee_Code.GardeAlterneeCoefficientPriseEnCharge: + _ = match_arg_556.value temp_eligibilite_allocation_logement_familiale_6 = PriseEnChargeEnfant(PriseEnChargeEnfant_Code.GardeAlterneePartageAllocations, Unit()) return not prestations_familiales_dot_droit_ouvert( @@ -19099,8 +26296,8 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili prise_en_charge = temp_eligibilite_allocation_logement_familiale_6, a_deja_ouvert_droit_aux_allocations_familiales = enfant_6.a_deja_ouvert_droit_aux_allocations_familiales, beneficie_titre_personnel_aide_personnelle_logement = enfant_6.beneficie_titre_personnel_aide_personnelle_logement)) - elif match_arg_543.code == PersonneACharge_Code.AutrePersonneACharge: - _ = match_arg_543.value + elif match_arg_555.code == PersonneACharge_Code.AutrePersonneACharge: + _ = match_arg_555.value return False if ((list_length(list_filter(temp_eligibilite_allocation_logement_familiale_5, menage_3.personnes_a_charge)) == @@ -19112,16 +26309,16 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili raise EmptyError except EmptyError: def temp_eligibilite_allocation_logement_familiale_7(personne_a_charge_9:PersonneACharge): - match_arg_545 = personne_a_charge_9 - if match_arg_545.code == PersonneACharge_Code.EnfantACharge: - enfant_7 = match_arg_545.value - match_arg_546 = enfant_7.situation_garde_alternee - if match_arg_546.code == SituationGardeAlternee_Code.PasDeGardeAlternee: - _ = match_arg_546.value + match_arg_557 = personne_a_charge_9 + if match_arg_557.code == PersonneACharge_Code.EnfantACharge: + enfant_7 = match_arg_557.value + match_arg_558 = enfant_7.situation_garde_alternee + if match_arg_558.code == SituationGardeAlternee_Code.PasDeGardeAlternee: + _ = match_arg_558.value temp_eligibilite_allocation_logement_familiale_8 = PriseEnChargeEnfant(PriseEnChargeEnfant_Code.EffectiveEtPermanente, Unit()) - elif match_arg_546.code == SituationGardeAlternee_Code.GardeAlterneeCoefficientPriseEnCharge: - _ = match_arg_546.value + elif match_arg_558.code == SituationGardeAlternee_Code.GardeAlterneeCoefficientPriseEnCharge: + _ = match_arg_558.value temp_eligibilite_allocation_logement_familiale_8 = PriseEnChargeEnfant(PriseEnChargeEnfant_Code.GardeAlterneePartageAllocations, Unit()) return prestations_familiales_dot_droit_ouvert( @@ -19132,8 +26329,8 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili prise_en_charge = temp_eligibilite_allocation_logement_familiale_8, a_deja_ouvert_droit_aux_allocations_familiales = enfant_7.a_deja_ouvert_droit_aux_allocations_familiales, beneficie_titre_personnel_aide_personnelle_logement = enfant_7.beneficie_titre_personnel_aide_personnelle_logement)) - elif match_arg_545.code == PersonneACharge_Code.AutrePersonneACharge: - _ = match_arg_545.value + elif match_arg_557.code == PersonneACharge_Code.AutrePersonneACharge: + _ = match_arg_557.value return False if (list_length(list_filter(temp_eligibilite_allocation_logement_familiale_7, menage_3.personnes_a_charge)) == @@ -19177,22 +26374,22 @@ def eligibilite_allocation_logement(eligibilite_allocation_logement_in:Eligibili def temp_eligibilite_l841_2_1(_:Unit): return False def temp_eligibilite_l841_2_2(_:Unit): - match_arg_547 = menage_3.logement.mode_occupation - if match_arg_547.code == ModeOccupation_Code.Locataire: - _ = match_arg_547.value + match_arg_559 = menage_3.logement.mode_occupation + if match_arg_559.code == ModeOccupation_Code.Locataire: + _ = match_arg_559.value temp_eligibilite_l841_2_3 = False - elif match_arg_547.code == ModeOccupation_Code.ResidentLogementFoyer: - _ = match_arg_547.value + elif match_arg_559.code == ModeOccupation_Code.ResidentLogementFoyer: + _ = match_arg_559.value temp_eligibilite_l841_2_3 = False - elif match_arg_547.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: - proprietaire_6 = match_arg_547.value + elif match_arg_559.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: + proprietaire_6 = match_arg_559.value temp_eligibilite_l841_2_3 = (proprietaire_6.pret.date_signature > date_of_numbers(2017,12,31)) - elif match_arg_547.code == ModeOccupation_Code.SousLocataire: - _ = match_arg_547.value + elif match_arg_559.code == ModeOccupation_Code.SousLocataire: + _ = match_arg_559.value temp_eligibilite_l841_2_3 = False - elif match_arg_547.code == ModeOccupation_Code.LocationAccession: - _ = match_arg_547.value + elif match_arg_559.code == ModeOccupation_Code.LocationAccession: + _ = match_arg_559.value temp_eligibilite_l841_2_3 = False if temp_eligibilite_l841_2_3: return TypeEligibiliteAllocationLogement(TypeEligibiliteAllocationLogement_Code.PasEligible, @@ -19251,25 +26448,25 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog date_courante_15 = calcul_allocation_logement_in.date_courante_in type_aide_3 = calcul_allocation_logement_in.type_aide_in try: - match_arg_548 = mode_occupation_3 - if match_arg_548.code == ModeOccupation_Code.Locataire: - location_5 = match_arg_548.value + match_arg_560 = mode_occupation_3 + if match_arg_560.code == ModeOccupation_Code.Locataire: + location_5 = match_arg_560.value temp_categorie_calcul_apl_1 = CategorieCalculAPL(CategorieCalculAPL_Code.Location, location_5) - elif match_arg_548.code == ModeOccupation_Code.ResidentLogementFoyer: - logementfoyer_1 = match_arg_548.value + elif match_arg_560.code == ModeOccupation_Code.ResidentLogementFoyer: + logementfoyer_1 = match_arg_560.value temp_categorie_calcul_apl_1 = CategorieCalculAPL(CategorieCalculAPL_Code.LogementFoyer, logementfoyer_1) - elif match_arg_548.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: - proprietaire_7 = match_arg_548.value + elif match_arg_560.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: + proprietaire_7 = match_arg_560.value temp_categorie_calcul_apl_1 = CategorieCalculAPL(CategorieCalculAPL_Code.AccessionPropriete, proprietaire_7) - elif match_arg_548.code == ModeOccupation_Code.SousLocataire: - location_6 = match_arg_548.value + elif match_arg_560.code == ModeOccupation_Code.SousLocataire: + location_6 = match_arg_560.value temp_categorie_calcul_apl_1 = CategorieCalculAPL(CategorieCalculAPL_Code.Location, location_6) - elif match_arg_548.code == ModeOccupation_Code.LocationAccession: - proprietaire_8 = match_arg_548.value + elif match_arg_560.code == ModeOccupation_Code.LocationAccession: + proprietaire_8 = match_arg_560.value temp_categorie_calcul_apl_1 = CategorieCalculAPL(CategorieCalculAPL_Code.AccessionPropriete, proprietaire_8) except EmptyError: @@ -19297,29 +26494,29 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Prologue : aides au logement"])) ressources_menage_avec_arrondi_1 = temp_ressources_menage_avec_arrondi_1 try: - match_arg_549 = situation_familiale_2 - if match_arg_549.code == SituationFamiliale_Code.Celibataire: - _ = match_arg_549.value + match_arg_561 = situation_familiale_2 + if match_arg_561.code == SituationFamiliale_Code.Celibataire: + _ = match_arg_561.value temp_situation_familiale_calcul_apl_1 = SituationFamilialeCalculAPL(SituationFamilialeCalculAPL_Code.PersonneSeule, Unit()) - elif match_arg_549.code == SituationFamiliale_Code.Maries: - _ = match_arg_549.value + elif match_arg_561.code == SituationFamiliale_Code.Maries: + _ = match_arg_561.value temp_situation_familiale_calcul_apl_1 = SituationFamilialeCalculAPL(SituationFamilialeCalculAPL_Code.Couple, Unit()) - elif match_arg_549.code == SituationFamiliale_Code.Pacses: - _ = match_arg_549.value + elif match_arg_561.code == SituationFamiliale_Code.Pacses: + _ = match_arg_561.value temp_situation_familiale_calcul_apl_1 = SituationFamilialeCalculAPL(SituationFamilialeCalculAPL_Code.Couple, Unit()) - elif match_arg_549.code == SituationFamiliale_Code.Concubins: - _ = match_arg_549.value + elif match_arg_561.code == SituationFamiliale_Code.Concubins: + _ = match_arg_561.value temp_situation_familiale_calcul_apl_1 = SituationFamilialeCalculAPL(SituationFamilialeCalculAPL_Code.Couple, Unit()) - elif match_arg_549.code == SituationFamiliale_Code.CelibataireSepareDeFait: - _ = match_arg_549.value + elif match_arg_561.code == SituationFamiliale_Code.CelibataireSepareDeFait: + _ = match_arg_561.value temp_situation_familiale_calcul_apl_1 = SituationFamilialeCalculAPL(SituationFamilialeCalculAPL_Code.PersonneSeule, Unit()) - elif match_arg_549.code == SituationFamiliale_Code.ConcubinageDontSepareDeFait: - _ = match_arg_549.value + elif match_arg_561.code == SituationFamiliale_Code.ConcubinageDontSepareDeFait: + _ = match_arg_561.value temp_situation_familiale_calcul_apl_1 = SituationFamilialeCalculAPL(SituationFamilialeCalculAPL_Code.Couple, Unit()) except EmptyError: @@ -19333,234 +26530,266 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Prologue : aides au logement"])) situation_familiale_calcul_apl_9 = temp_situation_familiale_calcul_apl_1 try: - match_arg_550 = mode_occupation_3 - if match_arg_550.code == ModeOccupation_Code.Locataire: - location_7 = match_arg_550.value + match_arg_562 = mode_occupation_3 + if match_arg_562.code == ModeOccupation_Code.Locataire: + location_7 = match_arg_562.value + def temp_sous_calcul_traitement_509(param_49:Money): + try: + temp_sous_calcul_traitement_510 = location_7.loyer_principal + except EmptyError: + temp_sous_calcul_traitement_510 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1530, + start_column=31, + end_line=1530, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_511 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_511 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1525, + start_column=43, + end_line=1525, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_512 = location_7.beneficiaire_aide_adulte_ou_enfant_handicapes + except EmptyError: + temp_sous_calcul_traitement_512 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1532, + start_column=15, + end_line=1532, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_513 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_513 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1528, + start_column=29, + end_line=1528, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_514 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_514 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1526, + start_column=41, + end_line=1526, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_515 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_515 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1529, + start_column=46, + end_line=1529, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_516 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_516 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1527, + start_column=20, + end_line=1527, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_517 = location_7.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_517 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1533, + start_column=36, + end_line=1533, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_518 = location_7.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_518 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1536, + start_column=15, + end_line=1536, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_519 = type_aide_3 + except EmptyError: + temp_sous_calcul_traitement_519 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1537, + start_column=25, + end_line=1537, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_520 = location_7.colocation + except EmptyError: + temp_sous_calcul_traitement_520 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1534, + start_column=26, + end_line=1534, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_563 = location_7.bailleur + if match_arg_563.code == TypeBailleur_Code.BailleurSocial: + bailleur_14 = match_arg_563.value + temp_sous_calcul_traitement_521 = bailleur_14.reduction_loyer_solidarite_percue + elif match_arg_563.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_563.value + temp_sous_calcul_traitement_521 = money_of_cents_string("0") + elif match_arg_563.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_563.value + temp_sous_calcul_traitement_521 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_521 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1539, + start_column=16, + end_line=1542, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_522 = location_7.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_522 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1543, + start_column=38, + end_line=1543, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_523 = location_7.changement_logement_d842_4 + except EmptyError: + temp_sous_calcul_traitement_523 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1544, + start_column=42, + end_line=1544, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + return calcul_allocation_logement_locatif(CalculAllocationLogementLocatifIn(loyer_principal_in = temp_sous_calcul_traitement_510, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_511, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_512, + date_courante_in = temp_sous_calcul_traitement_513, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_514, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_515, + zone_in = temp_sous_calcul_traitement_516, + logement_est_chambre_in = temp_sous_calcul_traitement_517, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_518, + type_aide_in = temp_sous_calcul_traitement_519, + colocation_in = temp_sous_calcul_traitement_520, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_521, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_522, + changement_logement_d842_4_in = temp_sous_calcul_traitement_523)).traitement_aide_finale( + param_49) try: - temp_sous_calcul_traitement_75 = location_7.changement_logement_d842_4 + temp_sous_calcul_traitement_524 = location_7.loyer_principal except EmptyError: - temp_sous_calcul_traitement_75 = dead_value + temp_sous_calcul_traitement_524 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1532, - start_column=42, - end_line=1532, - end_column=77, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_76 = location_7.logement_meuble_d842_2 - except EmptyError: - temp_sous_calcul_traitement_76 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1531, - start_column=38, - end_line=1531, - end_column=69, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - match_arg_551 = location_7.bailleur - if match_arg_551.code == TypeBailleur_Code.BailleurSocial: - bailleur_2 = match_arg_551.value - temp_sous_calcul_traitement_77 = bailleur_2.reduction_loyer_solidarite_percue - elif match_arg_551.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: - _ = match_arg_551.value - temp_sous_calcul_traitement_77 = money_of_cents_string("0") - elif match_arg_551.code == TypeBailleur_Code.BailleurPrive: - _ = match_arg_551.value - temp_sous_calcul_traitement_77 = money_of_cents_string("0") - except EmptyError: - temp_sous_calcul_traitement_77 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1527, - start_column=16, - end_line=1530, - end_column=39, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_78 = location_7.colocation - except EmptyError: - temp_sous_calcul_traitement_78 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1522, - start_column=26, - end_line=1522, - end_column=45, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_79 = type_aide_3 - except EmptyError: - temp_sous_calcul_traitement_79 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1525, - start_column=25, - end_line=1525, - end_column=34, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_80 = location_7.agees_ou_handicap_adultes_hebergees_onereux_particuliers - except EmptyError: - temp_sous_calcul_traitement_80 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1524, - start_column=15, - end_line=1524, - end_column=80, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_81 = location_7.logement_est_chambre - except EmptyError: - temp_sous_calcul_traitement_81 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1521, - start_column=36, - end_line=1521, - end_column=65, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_82 = zone_7 - except EmptyError: - temp_sous_calcul_traitement_82 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1515, - start_column=20, - end_line=1515, - end_column=24, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_83 = situation_familiale_calcul_apl_9 - except EmptyError: - temp_sous_calcul_traitement_83 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1517, - start_column=46, - end_line=1517, - end_column=76, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_84 = nombre_personnes_a_charge_9 - except EmptyError: - temp_sous_calcul_traitement_84 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1514, - start_column=41, - end_line=1514, - end_column=66, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_85 = date_courante_15 - except EmptyError: - temp_sous_calcul_traitement_85 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1516, - start_column=29, - end_line=1516, - end_column=42, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_86 = location_7.beneficiaire_aide_adulte_ou_enfant_handicapes - except EmptyError: - temp_sous_calcul_traitement_86 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1520, - start_column=15, - end_line=1520, - end_column=69, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_87 = ressources_menage_avec_arrondi_1 - except EmptyError: - temp_sous_calcul_traitement_87 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1513, - start_column=43, - end_line=1513, - end_column=60, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_88 = location_7.loyer_principal - except EmptyError: - temp_sous_calcul_traitement_88 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1518, + start_line=1530, start_column=31, - end_line=1518, + end_line=1530, end_column=55, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -19570,14 +26799,14 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_89 = location_7.changement_logement_d842_4 + temp_sous_calcul_traitement_525 = ressources_menage_avec_arrondi_1 except EmptyError: - temp_sous_calcul_traitement_89 = dead_value + temp_sous_calcul_traitement_525 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1532, - start_column=42, - end_line=1532, - end_column=77, + start_line=1525, + start_column=43, + end_line=1525, + end_column=60, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -19586,13 +26815,13 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_90 = location_7.logement_meuble_d842_2 + temp_sous_calcul_traitement_526 = location_7.beneficiaire_aide_adulte_ou_enfant_handicapes except EmptyError: - temp_sous_calcul_traitement_90 = dead_value + temp_sous_calcul_traitement_526 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1531, - start_column=38, - end_line=1531, + start_line=1532, + start_column=15, + end_line=1532, end_column=69, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -19602,23 +26831,62 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - match_arg_552 = location_7.bailleur - if match_arg_552.code == TypeBailleur_Code.BailleurSocial: - bailleur_3 = match_arg_552.value - temp_sous_calcul_traitement_91 = bailleur_3.reduction_loyer_solidarite_percue - elif match_arg_552.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: - _ = match_arg_552.value - temp_sous_calcul_traitement_91 = money_of_cents_string("0") - elif match_arg_552.code == TypeBailleur_Code.BailleurPrive: - _ = match_arg_552.value - temp_sous_calcul_traitement_91 = money_of_cents_string("0") + temp_sous_calcul_traitement_527 = date_courante_15 except EmptyError: - temp_sous_calcul_traitement_91 = dead_value + temp_sous_calcul_traitement_527 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1528, + start_column=29, + end_line=1528, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_528 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_528 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1526, + start_column=41, + end_line=1526, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_529 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_529 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1529, + start_column=46, + end_line=1529, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_530 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_530 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", start_line=1527, - start_column=16, - end_line=1530, - end_column=39, + start_column=20, + end_line=1527, + end_column=24, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -19627,61 +26895,13 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_92 = location_7.colocation + temp_sous_calcul_traitement_531 = location_7.logement_est_chambre except EmptyError: - temp_sous_calcul_traitement_92 = dead_value + temp_sous_calcul_traitement_531 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1522, - start_column=26, - end_line=1522, - end_column=45, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_93 = type_aide_3 - except EmptyError: - temp_sous_calcul_traitement_93 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1525, - start_column=25, - end_line=1525, - end_column=34, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_94 = location_7.agees_ou_handicap_adultes_hebergees_onereux_particuliers - except EmptyError: - temp_sous_calcul_traitement_94 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1524, - start_column=15, - end_line=1524, - end_column=80, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_95 = location_7.logement_est_chambre - except EmptyError: - temp_sous_calcul_traitement_95 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1521, + start_line=1533, start_column=36, - end_line=1521, + end_line=1533, end_column=65, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -19691,77 +26911,86 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_96 = zone_7 + temp_sous_calcul_traitement_532 = location_7.agees_ou_handicap_adultes_hebergees_onereux_particuliers except EmptyError: - temp_sous_calcul_traitement_96 = dead_value + temp_sous_calcul_traitement_532 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1515, - start_column=20, - end_line=1515, - end_column=24, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_97 = situation_familiale_calcul_apl_9 - except EmptyError: - temp_sous_calcul_traitement_97 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1517, - start_column=46, - end_line=1517, - end_column=76, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_98 = nombre_personnes_a_charge_9 - except EmptyError: - temp_sous_calcul_traitement_98 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1514, - start_column=41, - end_line=1514, - end_column=66, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_99 = date_courante_15 - except EmptyError: - temp_sous_calcul_traitement_99 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1516, - start_column=29, - end_line=1516, - end_column=42, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_100 = location_7.beneficiaire_aide_adulte_ou_enfant_handicapes - except EmptyError: - temp_sous_calcul_traitement_100 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1520, + start_line=1536, start_column=15, - end_line=1520, + end_line=1536, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_533 = type_aide_3 + except EmptyError: + temp_sous_calcul_traitement_533 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1537, + start_column=25, + end_line=1537, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_534 = location_7.colocation + except EmptyError: + temp_sous_calcul_traitement_534 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1534, + start_column=26, + end_line=1534, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_564 = location_7.bailleur + if match_arg_564.code == TypeBailleur_Code.BailleurSocial: + bailleur_15 = match_arg_564.value + temp_sous_calcul_traitement_535 = bailleur_15.reduction_loyer_solidarite_percue + elif match_arg_564.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_564.value + temp_sous_calcul_traitement_535 = money_of_cents_string("0") + elif match_arg_564.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_564.value + temp_sous_calcul_traitement_535 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_535 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1539, + start_column=16, + end_line=1542, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_536 = location_7.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_536 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1543, + start_column=38, + end_line=1543, end_column=69, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -19771,13 +27000,294 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_101 = ressources_menage_avec_arrondi_1 + temp_sous_calcul_traitement_537 = location_7.changement_logement_d842_4 except EmptyError: - temp_sous_calcul_traitement_101 = dead_value + temp_sous_calcul_traitement_537 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1513, + start_line=1544, + start_column=42, + end_line=1544, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_538(param_50:Money): + try: + temp_sous_calcul_traitement_539 = location_7.loyer_principal + except EmptyError: + temp_sous_calcul_traitement_539 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1530, + start_column=31, + end_line=1530, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_540 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_540 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1525, + start_column=43, + end_line=1525, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_541 = location_7.beneficiaire_aide_adulte_ou_enfant_handicapes + except EmptyError: + temp_sous_calcul_traitement_541 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1532, + start_column=15, + end_line=1532, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_542 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_542 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1528, + start_column=29, + end_line=1528, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_543 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_543 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1526, + start_column=41, + end_line=1526, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_544 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_544 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1529, + start_column=46, + end_line=1529, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_545 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_545 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1527, + start_column=20, + end_line=1527, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_546 = location_7.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_546 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1533, + start_column=36, + end_line=1533, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_547 = location_7.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_547 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1536, + start_column=15, + end_line=1536, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_548 = type_aide_3 + except EmptyError: + temp_sous_calcul_traitement_548 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1537, + start_column=25, + end_line=1537, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_549 = location_7.colocation + except EmptyError: + temp_sous_calcul_traitement_549 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1534, + start_column=26, + end_line=1534, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_565 = location_7.bailleur + if match_arg_565.code == TypeBailleur_Code.BailleurSocial: + bailleur_16 = match_arg_565.value + temp_sous_calcul_traitement_550 = bailleur_16.reduction_loyer_solidarite_percue + elif match_arg_565.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_565.value + temp_sous_calcul_traitement_550 = money_of_cents_string("0") + elif match_arg_565.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_565.value + temp_sous_calcul_traitement_550 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_550 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1539, + start_column=16, + end_line=1542, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_551 = location_7.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_551 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1543, + start_column=38, + end_line=1543, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_552 = location_7.changement_logement_d842_4 + except EmptyError: + temp_sous_calcul_traitement_552 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1544, + start_column=42, + end_line=1544, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + return calcul_allocation_logement_locatif(CalculAllocationLogementLocatifIn(loyer_principal_in = temp_sous_calcul_traitement_539, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_540, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_541, + date_courante_in = temp_sous_calcul_traitement_542, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_543, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_544, + zone_in = temp_sous_calcul_traitement_545, + logement_est_chambre_in = temp_sous_calcul_traitement_546, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_547, + type_aide_in = temp_sous_calcul_traitement_548, + colocation_in = temp_sous_calcul_traitement_549, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_550, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_551, + changement_logement_d842_4_in = temp_sous_calcul_traitement_552)).traitement_aide_finale( + param_50) + try: + temp_sous_calcul_traitement_553 = location_7.loyer_principal + except EmptyError: + temp_sous_calcul_traitement_553 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1530, + start_column=31, + end_line=1530, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_554 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_554 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1525, start_column=43, - end_line=1513, + end_line=1525, end_column=60, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -19787,62 +27297,14 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_102 = location_7.loyer_principal + temp_sous_calcul_traitement_555 = location_7.beneficiaire_aide_adulte_ou_enfant_handicapes except EmptyError: - temp_sous_calcul_traitement_102 = dead_value + temp_sous_calcul_traitement_555 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1518, - start_column=31, - end_line=1518, - end_column=55, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - temp_sous_calcul_traitement_103 = TraitementFormuleAideFinale(aide_finale_formule = calcul_allocation_logement_locatif( - CalculAllocationLogementLocatifIn(loyer_principal_in = temp_sous_calcul_traitement_88, - ressources_menage_arrondies_in = temp_sous_calcul_traitement_87, - beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_86, - date_courante_in = temp_sous_calcul_traitement_85, - nombre_personnes_a_charge_in = temp_sous_calcul_traitement_84, - situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_83, - zone_in = temp_sous_calcul_traitement_82, - logement_est_chambre_in = temp_sous_calcul_traitement_81, - agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_80, - type_aide_in = temp_sous_calcul_traitement_79, - colocation_in = temp_sous_calcul_traitement_78, - reduction_loyer_solidarite_in = temp_sous_calcul_traitement_77, - logement_meuble_d842_2_in = temp_sous_calcul_traitement_76, - changement_logement_d842_4_in = temp_sous_calcul_traitement_75)).aide_finale_formule, - traitement_aide_finale = calcul_allocation_logement_locatif( - CalculAllocationLogementLocatifIn(loyer_principal_in = temp_sous_calcul_traitement_102, - ressources_menage_arrondies_in = temp_sous_calcul_traitement_101, - beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_100, - date_courante_in = temp_sous_calcul_traitement_99, - nombre_personnes_a_charge_in = temp_sous_calcul_traitement_98, - situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_97, - zone_in = temp_sous_calcul_traitement_96, - logement_est_chambre_in = temp_sous_calcul_traitement_95, - agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_94, - type_aide_in = temp_sous_calcul_traitement_93, - colocation_in = temp_sous_calcul_traitement_92, - reduction_loyer_solidarite_in = temp_sous_calcul_traitement_91, - logement_meuble_d842_2_in = temp_sous_calcul_traitement_90, - changement_logement_d842_4_in = temp_sous_calcul_traitement_89)).traitement_aide_finale) - elif match_arg_550.code == ModeOccupation_Code.ResidentLogementFoyer: - logement_foyer__1 = match_arg_550.value - try: - temp_sous_calcul_traitement_104 = logement_foyer__1.categorie_equivalence_loyer_d842_16 - except EmptyError: - temp_sous_calcul_traitement_104 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1584, - start_column=13, - end_line=1584, - end_column=64, + start_line=1532, + start_column=15, + end_line=1532, + end_column=69, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -19851,13 +27313,13 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_105 = date_courante_15 + temp_sous_calcul_traitement_556 = date_courante_15 except EmptyError: - temp_sous_calcul_traitement_105 = dead_value + temp_sous_calcul_traitement_556 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1580, + start_line=1528, start_column=29, - end_line=1580, + end_line=1528, end_column=42, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -19867,45 +27329,13 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_106 = zone_7 + temp_sous_calcul_traitement_557 = nombre_personnes_a_charge_9 except EmptyError: - temp_sous_calcul_traitement_106 = dead_value + temp_sous_calcul_traitement_557 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1579, - start_column=20, - end_line=1579, - end_column=24, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_107 = situation_familiale_calcul_apl_9 - except EmptyError: - temp_sous_calcul_traitement_107 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1581, - start_column=46, - end_line=1581, - end_column=76, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_108 = nombre_personnes_a_charge_9 - except EmptyError: - temp_sous_calcul_traitement_108 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1578, + start_line=1526, start_column=41, - end_line=1578, + end_line=1526, end_column=66, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -19915,14 +27345,14 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_109 = ressources_menage_avec_arrondi_1 + temp_sous_calcul_traitement_558 = situation_familiale_calcul_apl_9 except EmptyError: - temp_sous_calcul_traitement_109 = dead_value + temp_sous_calcul_traitement_558 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1577, - start_column=43, - end_line=1577, - end_column=60, + start_line=1529, + start_column=46, + end_line=1529, + end_column=76, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -19931,14 +27361,62 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_110 = logement_foyer__1.redevance + temp_sous_calcul_traitement_559 = zone_7 except EmptyError: - temp_sous_calcul_traitement_110 = dead_value + temp_sous_calcul_traitement_559 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1582, + start_line=1527, + start_column=20, + end_line=1527, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_560 = location_7.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_560 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1533, + start_column=36, + end_line=1533, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_561 = location_7.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_561 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1536, + start_column=15, + end_line=1536, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_562 = type_aide_3 + except EmptyError: + temp_sous_calcul_traitement_562 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1537, start_column=25, - end_line=1582, - end_column=50, + end_line=1537, + end_column=34, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -19947,13 +27425,291 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_111 = logement_foyer__1.date_conventionnement + temp_sous_calcul_traitement_563 = location_7.colocation except EmptyError: - temp_sous_calcul_traitement_111 = dead_value + temp_sous_calcul_traitement_563 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1586, + start_line=1534, + start_column=26, + end_line=1534, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_566 = location_7.bailleur + if match_arg_566.code == TypeBailleur_Code.BailleurSocial: + bailleur_17 = match_arg_566.value + temp_sous_calcul_traitement_564 = bailleur_17.reduction_loyer_solidarite_percue + elif match_arg_566.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_566.value + temp_sous_calcul_traitement_564 = money_of_cents_string("0") + elif match_arg_566.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_566.value + temp_sous_calcul_traitement_564 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_564 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1539, + start_column=16, + end_line=1542, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_565 = location_7.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_565 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1543, + start_column=38, + end_line=1543, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_566 = location_7.changement_logement_d842_4 + except EmptyError: + temp_sous_calcul_traitement_566 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1544, + start_column=42, + end_line=1544, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + temp_sous_calcul_traitement_567 = TraitementFormuleAideFinale(aide_finale_formule = CalculAllocationLogementLocatif(aide_finale_formule = calcul_allocation_logement_locatif( + CalculAllocationLogementLocatifIn(loyer_principal_in = temp_sous_calcul_traitement_524, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_525, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_526, + date_courante_in = temp_sous_calcul_traitement_527, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_528, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_529, + zone_in = temp_sous_calcul_traitement_530, + logement_est_chambre_in = temp_sous_calcul_traitement_531, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_532, + type_aide_in = temp_sous_calcul_traitement_533, + colocation_in = temp_sous_calcul_traitement_534, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_535, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_536, + changement_logement_d842_4_in = temp_sous_calcul_traitement_537)).aide_finale_formule, + traitement_aide_finale = temp_sous_calcul_traitement_509).aide_finale_formule, + traitement_aide_finale = CalculAllocationLogementLocatif(aide_finale_formule = calcul_allocation_logement_locatif( + CalculAllocationLogementLocatifIn(loyer_principal_in = temp_sous_calcul_traitement_553, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_554, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_555, + date_courante_in = temp_sous_calcul_traitement_556, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_557, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_558, + zone_in = temp_sous_calcul_traitement_559, + logement_est_chambre_in = temp_sous_calcul_traitement_560, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_561, + type_aide_in = temp_sous_calcul_traitement_562, + colocation_in = temp_sous_calcul_traitement_563, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_564, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_565, + changement_logement_d842_4_in = temp_sous_calcul_traitement_566)).aide_finale_formule, + traitement_aide_finale = temp_sous_calcul_traitement_538).traitement_aide_finale) + elif match_arg_562.code == ModeOccupation_Code.ResidentLogementFoyer: + logement_foyer__1 = match_arg_562.value + def temp_sous_calcul_traitement_568(param_51:Money): + try: + temp_sous_calcul_traitement_569 = logement_foyer__1.type + except EmptyError: + temp_sous_calcul_traitement_569 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1597, + start_column=35, + end_line=1597, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_570 = logement_foyer__1.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_570 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1598, + start_column=37, + end_line=1598, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_571 = logement_foyer__1.redevance + except EmptyError: + temp_sous_calcul_traitement_571 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1594, + start_column=25, + end_line=1594, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_572 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_572 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1589, + start_column=43, + end_line=1589, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_573 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_573 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1590, + start_column=41, + end_line=1590, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_574 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_574 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1593, + start_column=46, + end_line=1593, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_575 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_575 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1591, + start_column=20, + end_line=1591, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_576 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_576 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1592, + start_column=29, + end_line=1592, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_577 = logement_foyer__1.categorie_equivalence_loyer_d842_16 + except EmptyError: + temp_sous_calcul_traitement_577 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1596, + start_column=13, + end_line=1596, + end_column=64, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + return calcul_allocation_logement_foyer(CalculAllocationLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_569, + date_conventionnement_in = temp_sous_calcul_traitement_570, + redevance_in = temp_sous_calcul_traitement_571, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_572, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_573, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_574, + zone_in = temp_sous_calcul_traitement_575, + date_courante_in = temp_sous_calcul_traitement_576, + categorie_equivalence_loyer_d842_16_in = temp_sous_calcul_traitement_577)).traitement_aide_finale( + param_51) + try: + temp_sous_calcul_traitement_578 = logement_foyer__1.type + except EmptyError: + temp_sous_calcul_traitement_578 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1597, + start_column=35, + end_line=1597, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_579 = logement_foyer__1.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_579 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1598, start_column=37, - end_line=1586, + end_line=1598, end_column=74, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -19963,125 +27719,13 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_112 = logement_foyer__1.type + temp_sous_calcul_traitement_580 = logement_foyer__1.redevance except EmptyError: - temp_sous_calcul_traitement_112 = dead_value + temp_sous_calcul_traitement_580 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1585, - start_column=35, - end_line=1585, - end_column=55, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_113 = logement_foyer__1.categorie_equivalence_loyer_d842_16 - except EmptyError: - temp_sous_calcul_traitement_113 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1584, - start_column=13, - end_line=1584, - end_column=64, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_114 = date_courante_15 - except EmptyError: - temp_sous_calcul_traitement_114 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1580, - start_column=29, - end_line=1580, - end_column=42, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_115 = zone_7 - except EmptyError: - temp_sous_calcul_traitement_115 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1579, - start_column=20, - end_line=1579, - end_column=24, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_116 = situation_familiale_calcul_apl_9 - except EmptyError: - temp_sous_calcul_traitement_116 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1581, - start_column=46, - end_line=1581, - end_column=76, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_117 = nombre_personnes_a_charge_9 - except EmptyError: - temp_sous_calcul_traitement_117 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1578, - start_column=41, - end_line=1578, - end_column=66, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_118 = ressources_menage_avec_arrondi_1 - except EmptyError: - temp_sous_calcul_traitement_118 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1577, - start_column=43, - end_line=1577, - end_column=60, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_119 = logement_foyer__1.redevance - except EmptyError: - temp_sous_calcul_traitement_119 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1582, + start_line=1594, start_column=25, - end_line=1582, + end_line=1594, end_column=50, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -20091,13 +27735,125 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_120 = logement_foyer__1.date_conventionnement + temp_sous_calcul_traitement_581 = ressources_menage_avec_arrondi_1 except EmptyError: - temp_sous_calcul_traitement_120 = dead_value + temp_sous_calcul_traitement_581 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1586, + start_line=1589, + start_column=43, + end_line=1589, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_582 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_582 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1590, + start_column=41, + end_line=1590, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_583 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_583 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1593, + start_column=46, + end_line=1593, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_584 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_584 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1591, + start_column=20, + end_line=1591, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_585 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_585 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1592, + start_column=29, + end_line=1592, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_586 = logement_foyer__1.categorie_equivalence_loyer_d842_16 + except EmptyError: + temp_sous_calcul_traitement_586 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1596, + start_column=13, + end_line=1596, + end_column=64, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_587 = logement_foyer__1.type + except EmptyError: + temp_sous_calcul_traitement_587 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1597, + start_column=35, + end_line=1597, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_588 = logement_foyer__1.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_588 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1598, start_column=37, - end_line=1586, + end_line=1598, end_column=74, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -20107,13 +27863,125 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_121 = logement_foyer__1.type + temp_sous_calcul_traitement_589 = logement_foyer__1.redevance except EmptyError: - temp_sous_calcul_traitement_121 = dead_value + temp_sous_calcul_traitement_589 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1585, + start_line=1594, + start_column=25, + end_line=1594, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_590 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_590 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1589, + start_column=43, + end_line=1589, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_591 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_591 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1590, + start_column=41, + end_line=1590, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_592 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_592 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1593, + start_column=46, + end_line=1593, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_593 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_593 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1591, + start_column=20, + end_line=1591, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_594 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_594 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1592, + start_column=29, + end_line=1592, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_595 = logement_foyer__1.categorie_equivalence_loyer_d842_16 + except EmptyError: + temp_sous_calcul_traitement_595 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1596, + start_column=13, + end_line=1596, + end_column=64, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_596 = logement_foyer__1.type + except EmptyError: + temp_sous_calcul_traitement_596 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1597, start_column=35, - end_line=1585, + end_line=1597, end_column=55, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -20122,483 +27990,15 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Livre VIII : Aides personnelles au logement", "Partie réglementaire", "Code de la construction et de l'habitation"])) - temp_sous_calcul_traitement_103 = TraitementFormuleAideFinale(aide_finale_formule = calcul_allocation_logement_foyer( - CalculAllocationLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_112, - date_conventionnement_in = temp_sous_calcul_traitement_111, - redevance_in = temp_sous_calcul_traitement_110, - ressources_menage_arrondies_in = temp_sous_calcul_traitement_109, - nombre_personnes_a_charge_in = temp_sous_calcul_traitement_108, - situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_107, - zone_in = temp_sous_calcul_traitement_106, - date_courante_in = temp_sous_calcul_traitement_105, - categorie_equivalence_loyer_d842_16_in = temp_sous_calcul_traitement_104)).aide_finale_formule, - traitement_aide_finale = calcul_allocation_logement_foyer( - CalculAllocationLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_121, - date_conventionnement_in = temp_sous_calcul_traitement_120, - redevance_in = temp_sous_calcul_traitement_119, - ressources_menage_arrondies_in = temp_sous_calcul_traitement_118, - nombre_personnes_a_charge_in = temp_sous_calcul_traitement_117, - situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_116, - zone_in = temp_sous_calcul_traitement_115, - date_courante_in = temp_sous_calcul_traitement_114, - categorie_equivalence_loyer_d842_16_in = temp_sous_calcul_traitement_113)).traitement_aide_finale) - elif match_arg_550.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: - proprietaire_9 = match_arg_550.value try: - temp_sous_calcul_traitement_122 = proprietaire_9.copropriete + temp_sous_calcul_traitement_597 = logement_foyer__1.date_conventionnement except EmptyError: - temp_sous_calcul_traitement_122 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1610, - start_column=28, - end_line=1610, - end_column=52, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_123 = proprietaire_9.charges_mensuelles_pret - except EmptyError: - temp_sous_calcul_traitement_123 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1604, - start_column=40, - end_line=1604, - end_column=76, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_124 = proprietaire_9.date_entree_logement - except EmptyError: - temp_sous_calcul_traitement_124 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1609, - start_column=37, - end_line=1609, - end_column=70, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_125 = proprietaire_9.local_habite_premiere_fois_beneficiaire - except EmptyError: - temp_sous_calcul_traitement_125 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1608, - start_column=14, - end_line=1608, - end_column=66, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_126 = proprietaire_9.type_travaux_logement_r842_5 - except EmptyError: - temp_sous_calcul_traitement_126 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1605, - start_column=38, - end_line=1605, - end_column=79, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_127 = proprietaire_9.pret.date_signature - except EmptyError: - temp_sous_calcul_traitement_127 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1606, - start_column=36, - end_line=1606, - end_column=68, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_128 = proprietaire_9.situation_r822_11_13_17 - except EmptyError: - temp_sous_calcul_traitement_128 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1611, - start_column=40, - end_line=1611, - end_column=76, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_129 = proprietaire_9.mensualite_principale - except EmptyError: - temp_sous_calcul_traitement_129 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1603, - start_column=38, - end_line=1603, - end_column=72, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_130 = date_courante_15 - except EmptyError: - temp_sous_calcul_traitement_130 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1601, - start_column=30, - end_line=1601, - end_column=43, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_131 = zone_7 - except EmptyError: - temp_sous_calcul_traitement_131 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1600, - start_column=21, - end_line=1600, - end_column=25, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_132 = situation_familiale_calcul_apl_9 - except EmptyError: - temp_sous_calcul_traitement_132 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1602, - start_column=47, - end_line=1602, - end_column=77, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_133 = nombre_personnes_a_charge_9 - except EmptyError: - temp_sous_calcul_traitement_133 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1599, - start_column=42, - end_line=1599, - end_column=67, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_134 = ressources_menage_avec_arrondi_1 - except EmptyError: - temp_sous_calcul_traitement_134 = dead_value + temp_sous_calcul_traitement_597 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", start_line=1598, - start_column=44, - end_line=1598, - end_column=61, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_135 = proprietaire_9.copropriete - except EmptyError: - temp_sous_calcul_traitement_135 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1610, - start_column=28, - end_line=1610, - end_column=52, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_136 = proprietaire_9.charges_mensuelles_pret - except EmptyError: - temp_sous_calcul_traitement_136 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1604, - start_column=40, - end_line=1604, - end_column=76, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_137 = proprietaire_9.date_entree_logement - except EmptyError: - temp_sous_calcul_traitement_137 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1609, start_column=37, - end_line=1609, - end_column=70, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_138 = proprietaire_9.local_habite_premiere_fois_beneficiaire - except EmptyError: - temp_sous_calcul_traitement_138 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1608, - start_column=14, - end_line=1608, - end_column=66, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_139 = proprietaire_9.type_travaux_logement_r842_5 - except EmptyError: - temp_sous_calcul_traitement_139 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1605, - start_column=38, - end_line=1605, - end_column=79, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_140 = proprietaire_9.pret.date_signature - except EmptyError: - temp_sous_calcul_traitement_140 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1606, - start_column=36, - end_line=1606, - end_column=68, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_141 = proprietaire_9.situation_r822_11_13_17 - except EmptyError: - temp_sous_calcul_traitement_141 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1611, - start_column=40, - end_line=1611, - end_column=76, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_142 = proprietaire_9.mensualite_principale - except EmptyError: - temp_sous_calcul_traitement_142 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1603, - start_column=38, - end_line=1603, - end_column=72, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_143 = date_courante_15 - except EmptyError: - temp_sous_calcul_traitement_143 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1601, - start_column=30, - end_line=1601, - end_column=43, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_144 = zone_7 - except EmptyError: - temp_sous_calcul_traitement_144 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1600, - start_column=21, - end_line=1600, - end_column=25, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_145 = situation_familiale_calcul_apl_9 - except EmptyError: - temp_sous_calcul_traitement_145 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1602, - start_column=47, - end_line=1602, - end_column=77, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_146 = nombre_personnes_a_charge_9 - except EmptyError: - temp_sous_calcul_traitement_146 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1599, - start_column=42, - end_line=1599, - end_column=67, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_147 = ressources_menage_avec_arrondi_1 - except EmptyError: - temp_sous_calcul_traitement_147 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1598, - start_column=44, end_line=1598, - end_column=61, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - temp_sous_calcul_traitement_103 = TraitementFormuleAideFinale(aide_finale_formule = calcul_allocation_logement_accession_propriete( - CalculAllocationLogementAccessionProprieteIn(ressources_menage_arrondies_base_in = temp_sous_calcul_traitement_134, - nombre_personnes_a_charge_in = temp_sous_calcul_traitement_133, - situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_132, - zone_in = temp_sous_calcul_traitement_131, - date_courante_in = temp_sous_calcul_traitement_130, - mensualite_principale_in = temp_sous_calcul_traitement_129, - situation_r822_11_13_17_in = temp_sous_calcul_traitement_128, - date_signature_pret_in = temp_sous_calcul_traitement_127, - type_travaux_logement_in = temp_sous_calcul_traitement_126, - local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_125, - date_entree_logement_in = temp_sous_calcul_traitement_124, - charges_mensuelles_pret_in = temp_sous_calcul_traitement_123, - copropriete_in = temp_sous_calcul_traitement_122)).aide_finale_formule, - traitement_aide_finale = calcul_allocation_logement_accession_propriete( - CalculAllocationLogementAccessionProprieteIn(ressources_menage_arrondies_base_in = temp_sous_calcul_traitement_147, - nombre_personnes_a_charge_in = temp_sous_calcul_traitement_146, - situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_145, - zone_in = temp_sous_calcul_traitement_144, - date_courante_in = temp_sous_calcul_traitement_143, - mensualite_principale_in = temp_sous_calcul_traitement_142, - situation_r822_11_13_17_in = temp_sous_calcul_traitement_141, - date_signature_pret_in = temp_sous_calcul_traitement_140, - type_travaux_logement_in = temp_sous_calcul_traitement_139, - local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_138, - date_entree_logement_in = temp_sous_calcul_traitement_137, - charges_mensuelles_pret_in = temp_sous_calcul_traitement_136, - copropriete_in = temp_sous_calcul_traitement_135)).traitement_aide_finale) - elif match_arg_550.code == ModeOccupation_Code.SousLocataire: - location_8 = match_arg_550.value - try: - temp_sous_calcul_traitement_148 = location_8.changement_logement_d842_4 - except EmptyError: - temp_sous_calcul_traitement_148 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1564, - start_column=42, - end_line=1564, - end_column=77, + end_column=74, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -20607,71 +28007,14 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_149 = location_8.logement_meuble_d842_2 + temp_sous_calcul_traitement_598 = logement_foyer__1.redevance except EmptyError: - temp_sous_calcul_traitement_149 = dead_value + temp_sous_calcul_traitement_598 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1563, - start_column=38, - end_line=1563, - end_column=69, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - match_arg_553 = location_8.bailleur - if match_arg_553.code == TypeBailleur_Code.BailleurSocial: - bailleur_4 = match_arg_553.value - temp_sous_calcul_traitement_150 = bailleur_4.reduction_loyer_solidarite_percue - elif match_arg_553.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: - _ = match_arg_553.value - temp_sous_calcul_traitement_150 = money_of_cents_string("0") - elif match_arg_553.code == TypeBailleur_Code.BailleurPrive: - _ = match_arg_553.value - temp_sous_calcul_traitement_150 = money_of_cents_string("0") - except EmptyError: - temp_sous_calcul_traitement_150 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1559, - start_column=16, - end_line=1562, - end_column=39, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_151 = location_8.colocation - except EmptyError: - temp_sous_calcul_traitement_151 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1554, - start_column=26, - end_line=1554, - end_column=45, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_152 = type_aide_3 - except EmptyError: - temp_sous_calcul_traitement_152 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1557, + start_line=1594, start_column=25, - end_line=1557, - end_column=34, + end_line=1594, + end_column=50, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -20680,125 +28023,13 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_153 = location_8.agees_ou_handicap_adultes_hebergees_onereux_particuliers + temp_sous_calcul_traitement_599 = ressources_menage_avec_arrondi_1 except EmptyError: - temp_sous_calcul_traitement_153 = dead_value + temp_sous_calcul_traitement_599 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1556, - start_column=15, - end_line=1556, - end_column=80, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_154 = location_8.logement_est_chambre - except EmptyError: - temp_sous_calcul_traitement_154 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1553, - start_column=36, - end_line=1553, - end_column=65, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_155 = zone_7 - except EmptyError: - temp_sous_calcul_traitement_155 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1547, - start_column=20, - end_line=1547, - end_column=24, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_156 = situation_familiale_calcul_apl_9 - except EmptyError: - temp_sous_calcul_traitement_156 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1549, - start_column=46, - end_line=1549, - end_column=76, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_157 = nombre_personnes_a_charge_9 - except EmptyError: - temp_sous_calcul_traitement_157 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1546, - start_column=41, - end_line=1546, - end_column=66, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_158 = date_courante_15 - except EmptyError: - temp_sous_calcul_traitement_158 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1548, - start_column=29, - end_line=1548, - end_column=42, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_159 = location_8.beneficiaire_aide_adulte_ou_enfant_handicapes - except EmptyError: - temp_sous_calcul_traitement_159 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1552, - start_column=15, - end_line=1552, - end_column=69, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_160 = ressources_menage_avec_arrondi_1 - except EmptyError: - temp_sous_calcul_traitement_160 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1545, + start_line=1589, start_column=43, - end_line=1545, + end_line=1589, end_column=60, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -20808,14 +28039,14 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_161 = location_8.loyer_principal + temp_sous_calcul_traitement_600 = nombre_personnes_a_charge_9 except EmptyError: - temp_sous_calcul_traitement_161 = dead_value + temp_sous_calcul_traitement_600 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1550, - start_column=31, - end_line=1550, - end_column=55, + start_line=1590, + start_column=41, + end_line=1590, + end_column=66, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -20824,14 +28055,14 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_162 = location_8.changement_logement_d842_4 + temp_sous_calcul_traitement_601 = situation_familiale_calcul_apl_9 except EmptyError: - temp_sous_calcul_traitement_162 = dead_value + temp_sous_calcul_traitement_601 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1564, - start_column=42, - end_line=1564, - end_column=77, + start_line=1593, + start_column=46, + end_line=1593, + end_column=76, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -20840,118 +28071,13 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_163 = location_8.logement_meuble_d842_2 + temp_sous_calcul_traitement_602 = zone_7 except EmptyError: - temp_sous_calcul_traitement_163 = dead_value + temp_sous_calcul_traitement_602 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1563, - start_column=38, - end_line=1563, - end_column=69, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - match_arg_554 = location_8.bailleur - if match_arg_554.code == TypeBailleur_Code.BailleurSocial: - bailleur_5 = match_arg_554.value - temp_sous_calcul_traitement_164 = bailleur_5.reduction_loyer_solidarite_percue - elif match_arg_554.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: - _ = match_arg_554.value - temp_sous_calcul_traitement_164 = money_of_cents_string("0") - elif match_arg_554.code == TypeBailleur_Code.BailleurPrive: - _ = match_arg_554.value - temp_sous_calcul_traitement_164 = money_of_cents_string("0") - except EmptyError: - temp_sous_calcul_traitement_164 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1559, - start_column=16, - end_line=1562, - end_column=39, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_165 = location_8.colocation - except EmptyError: - temp_sous_calcul_traitement_165 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1554, - start_column=26, - end_line=1554, - end_column=45, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_166 = type_aide_3 - except EmptyError: - temp_sous_calcul_traitement_166 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1557, - start_column=25, - end_line=1557, - end_column=34, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_167 = location_8.agees_ou_handicap_adultes_hebergees_onereux_particuliers - except EmptyError: - temp_sous_calcul_traitement_167 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1556, - start_column=15, - end_line=1556, - end_column=80, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_168 = location_8.logement_est_chambre - except EmptyError: - temp_sous_calcul_traitement_168 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1553, - start_column=36, - end_line=1553, - end_column=65, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_169 = zone_7 - except EmptyError: - temp_sous_calcul_traitement_169 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1547, + start_line=1591, start_column=20, - end_line=1547, + end_line=1591, end_column=24, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -20961,45 +28087,13 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_170 = situation_familiale_calcul_apl_9 + temp_sous_calcul_traitement_603 = date_courante_15 except EmptyError: - temp_sous_calcul_traitement_170 = dead_value + temp_sous_calcul_traitement_603 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1549, - start_column=46, - end_line=1549, - end_column=76, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_171 = nombre_personnes_a_charge_9 - except EmptyError: - temp_sous_calcul_traitement_171 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1546, - start_column=41, - end_line=1546, - end_column=66, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_172 = date_courante_15 - except EmptyError: - temp_sous_calcul_traitement_172 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1548, + start_line=1592, start_column=29, - end_line=1548, + end_line=1592, end_column=42, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -21009,14 +28103,14 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_173 = location_8.beneficiaire_aide_adulte_ou_enfant_handicapes + temp_sous_calcul_traitement_604 = logement_foyer__1.categorie_equivalence_loyer_d842_16 except EmptyError: - temp_sous_calcul_traitement_173 = dead_value + temp_sous_calcul_traitement_604 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1552, - start_column=15, - end_line=1552, - end_column=69, + start_line=1596, + start_column=13, + end_line=1596, + end_column=64, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -21025,13 +28119,61 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_174 = ressources_menage_avec_arrondi_1 + temp_sous_calcul_traitement_605 = logement_foyer__1.type except EmptyError: - temp_sous_calcul_traitement_174 = dead_value + temp_sous_calcul_traitement_605 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1545, + start_line=1597, + start_column=35, + end_line=1597, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_606 = logement_foyer__1.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_606 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1598, + start_column=37, + end_line=1598, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_607 = logement_foyer__1.redevance + except EmptyError: + temp_sous_calcul_traitement_607 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1594, + start_column=25, + end_line=1594, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_608 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_608 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1589, start_column=43, - end_line=1545, + end_line=1589, end_column=60, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -21041,13 +28183,93 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_175 = location_8.loyer_principal + temp_sous_calcul_traitement_609 = nombre_personnes_a_charge_9 except EmptyError: - temp_sous_calcul_traitement_175 = dead_value + temp_sous_calcul_traitement_609 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1550, - start_column=31, - end_line=1550, + start_line=1590, + start_column=41, + end_line=1590, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_610 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_610 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1593, + start_column=46, + end_line=1593, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_611 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_611 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1591, + start_column=20, + end_line=1591, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_612 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_612 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1592, + start_column=29, + end_line=1592, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_613 = logement_foyer__1.categorie_equivalence_loyer_d842_16 + except EmptyError: + temp_sous_calcul_traitement_613 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1596, + start_column=13, + end_line=1596, + end_column=64, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_614 = logement_foyer__1.type + except EmptyError: + temp_sous_calcul_traitement_614 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1597, + start_column=35, + end_line=1597, end_column=55, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -21056,79 +28278,15 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Livre VIII : Aides personnelles au logement", "Partie réglementaire", "Code de la construction et de l'habitation"])) - temp_sous_calcul_traitement_103 = TraitementFormuleAideFinale(aide_finale_formule = calcul_allocation_logement_locatif( - CalculAllocationLogementLocatifIn(loyer_principal_in = temp_sous_calcul_traitement_161, - ressources_menage_arrondies_in = temp_sous_calcul_traitement_160, - beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_159, - date_courante_in = temp_sous_calcul_traitement_158, - nombre_personnes_a_charge_in = temp_sous_calcul_traitement_157, - situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_156, - zone_in = temp_sous_calcul_traitement_155, - logement_est_chambre_in = temp_sous_calcul_traitement_154, - agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_153, - type_aide_in = temp_sous_calcul_traitement_152, - colocation_in = temp_sous_calcul_traitement_151, - reduction_loyer_solidarite_in = temp_sous_calcul_traitement_150, - logement_meuble_d842_2_in = temp_sous_calcul_traitement_149, - changement_logement_d842_4_in = temp_sous_calcul_traitement_148)).aide_finale_formule, - traitement_aide_finale = calcul_allocation_logement_locatif( - CalculAllocationLogementLocatifIn(loyer_principal_in = temp_sous_calcul_traitement_175, - ressources_menage_arrondies_in = temp_sous_calcul_traitement_174, - beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_173, - date_courante_in = temp_sous_calcul_traitement_172, - nombre_personnes_a_charge_in = temp_sous_calcul_traitement_171, - situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_170, - zone_in = temp_sous_calcul_traitement_169, - logement_est_chambre_in = temp_sous_calcul_traitement_168, - agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_167, - type_aide_in = temp_sous_calcul_traitement_166, - colocation_in = temp_sous_calcul_traitement_165, - reduction_loyer_solidarite_in = temp_sous_calcul_traitement_164, - logement_meuble_d842_2_in = temp_sous_calcul_traitement_163, - changement_logement_d842_4_in = temp_sous_calcul_traitement_162)).traitement_aide_finale) - elif match_arg_550.code == ModeOccupation_Code.LocationAccession: - proprietaire_10 = match_arg_550.value try: - temp_sous_calcul_traitement_176 = proprietaire_10.copropriete + temp_sous_calcul_traitement_615 = logement_foyer__1.date_conventionnement except EmptyError: - temp_sous_calcul_traitement_176 = dead_value + temp_sous_calcul_traitement_615 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1637, - start_column=28, - end_line=1637, - end_column=52, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_177 = proprietaire_10.charges_mensuelles_pret - except EmptyError: - temp_sous_calcul_traitement_177 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1631, - start_column=40, - end_line=1631, - end_column=76, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_178 = proprietaire_10.date_entree_logement - except EmptyError: - temp_sous_calcul_traitement_178 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1636, + start_line=1598, start_column=37, - end_line=1636, - end_column=70, + end_line=1598, + end_column=74, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -21137,13 +28295,45 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_179 = proprietaire_10.local_habite_premiere_fois_beneficiaire + temp_sous_calcul_traitement_616 = logement_foyer__1.redevance except EmptyError: - temp_sous_calcul_traitement_179 = dead_value + temp_sous_calcul_traitement_616 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1635, - start_column=14, - end_line=1635, + start_line=1594, + start_column=25, + end_line=1594, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_617 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_617 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1589, + start_column=43, + end_line=1589, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_618 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_618 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1590, + start_column=41, + end_line=1590, end_column=66, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -21153,45 +28343,13 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_180 = proprietaire_10.type_travaux_logement_r842_5 + temp_sous_calcul_traitement_619 = situation_familiale_calcul_apl_9 except EmptyError: - temp_sous_calcul_traitement_180 = dead_value + temp_sous_calcul_traitement_619 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1632, - start_column=38, - end_line=1632, - end_column=79, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_181 = proprietaire_10.pret.date_signature - except EmptyError: - temp_sous_calcul_traitement_181 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1633, - start_column=36, - end_line=1633, - end_column=68, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_182 = proprietaire_10.situation_r822_11_13_17 - except EmptyError: - temp_sous_calcul_traitement_182 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1638, - start_column=40, - end_line=1638, + start_line=1593, + start_column=46, + end_line=1593, end_column=76, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -21201,14 +28359,14 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_183 = proprietaire_10.mensualite_principale + temp_sous_calcul_traitement_620 = zone_7 except EmptyError: - temp_sous_calcul_traitement_183 = dead_value + temp_sous_calcul_traitement_620 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1630, - start_column=38, - end_line=1630, - end_column=72, + start_line=1591, + start_column=20, + end_line=1591, + end_column=24, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -21217,14 +28375,14 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_184 = date_courante_15 + temp_sous_calcul_traitement_621 = date_courante_15 except EmptyError: - temp_sous_calcul_traitement_184 = dead_value + temp_sous_calcul_traitement_621 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1628, - start_column=30, - end_line=1628, - end_column=43, + start_line=1592, + start_column=29, + end_line=1592, + end_column=42, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -21233,14 +28391,185 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_185 = zone_7 + temp_sous_calcul_traitement_622 = logement_foyer__1.categorie_equivalence_loyer_d842_16 except EmptyError: - temp_sous_calcul_traitement_185 = dead_value + temp_sous_calcul_traitement_622 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1627, - start_column=21, - end_line=1627, - end_column=25, + start_line=1596, + start_column=13, + end_line=1596, + end_column=64, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_623(param_52:Money): + try: + temp_sous_calcul_traitement_624 = logement_foyer__1.type + except EmptyError: + temp_sous_calcul_traitement_624 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1597, + start_column=35, + end_line=1597, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_625 = logement_foyer__1.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_625 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1598, + start_column=37, + end_line=1598, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_626 = logement_foyer__1.redevance + except EmptyError: + temp_sous_calcul_traitement_626 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1594, + start_column=25, + end_line=1594, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_627 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_627 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1589, + start_column=43, + end_line=1589, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_628 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_628 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1590, + start_column=41, + end_line=1590, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_629 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_629 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1593, + start_column=46, + end_line=1593, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_630 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_630 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1591, + start_column=20, + end_line=1591, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_631 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_631 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1592, + start_column=29, + end_line=1592, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_632 = logement_foyer__1.categorie_equivalence_loyer_d842_16 + except EmptyError: + temp_sous_calcul_traitement_632 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1596, + start_column=13, + end_line=1596, + end_column=64, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + return calcul_allocation_logement_foyer(CalculAllocationLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_624, + date_conventionnement_in = temp_sous_calcul_traitement_625, + redevance_in = temp_sous_calcul_traitement_626, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_627, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_628, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_629, + zone_in = temp_sous_calcul_traitement_630, + date_courante_in = temp_sous_calcul_traitement_631, + categorie_equivalence_loyer_d842_16_in = temp_sous_calcul_traitement_632)).traitement_aide_finale( + param_52) + try: + temp_sous_calcul_traitement_633 = logement_foyer__1.type + except EmptyError: + temp_sous_calcul_traitement_633 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1597, + start_column=35, + end_line=1597, + end_column=55, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -21249,94 +28578,14 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_186 = situation_familiale_calcul_apl_9 + temp_sous_calcul_traitement_634 = logement_foyer__1.date_conventionnement except EmptyError: - temp_sous_calcul_traitement_186 = dead_value + temp_sous_calcul_traitement_634 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1629, - start_column=47, - end_line=1629, - end_column=77, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_187 = nombre_personnes_a_charge_9 - except EmptyError: - temp_sous_calcul_traitement_187 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1626, - start_column=42, - end_line=1626, - end_column=67, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_188 = ressources_menage_avec_arrondi_1 - except EmptyError: - temp_sous_calcul_traitement_188 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1625, - start_column=44, - end_line=1625, - end_column=61, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_189 = proprietaire_10.copropriete - except EmptyError: - temp_sous_calcul_traitement_189 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1637, - start_column=28, - end_line=1637, - end_column=52, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_190 = proprietaire_10.charges_mensuelles_pret - except EmptyError: - temp_sous_calcul_traitement_190 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1631, - start_column=40, - end_line=1631, - end_column=76, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_191 = proprietaire_10.date_entree_logement - except EmptyError: - temp_sous_calcul_traitement_191 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1636, + start_line=1598, start_column=37, - end_line=1636, - end_column=70, + end_line=1598, + end_column=74, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -21345,13 +28594,45 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_192 = proprietaire_10.local_habite_premiere_fois_beneficiaire + temp_sous_calcul_traitement_635 = logement_foyer__1.redevance except EmptyError: - temp_sous_calcul_traitement_192 = dead_value + temp_sous_calcul_traitement_635 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1635, - start_column=14, - end_line=1635, + start_line=1594, + start_column=25, + end_line=1594, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_636 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_636 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1589, + start_column=43, + end_line=1589, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_637 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_637 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1590, + start_column=41, + end_line=1590, end_column=66, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -21361,45 +28642,13 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_193 = proprietaire_10.type_travaux_logement_r842_5 + temp_sous_calcul_traitement_638 = situation_familiale_calcul_apl_9 except EmptyError: - temp_sous_calcul_traitement_193 = dead_value + temp_sous_calcul_traitement_638 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1632, - start_column=38, - end_line=1632, - end_column=79, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_194 = proprietaire_10.pret.date_signature - except EmptyError: - temp_sous_calcul_traitement_194 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1633, - start_column=36, - end_line=1633, - end_column=68, - law_headings=["Article D823-9", - "Section 1 : Calcul, liquidation et versement des aides", - "Chapitre III : Modalités de liquidation et de versement", - "Titre II : Dispositions communes aux aides personnelles au logement", - "Livre VIII : Aides personnelles au logement", - "Partie réglementaire", - "Code de la construction et de l'habitation"])) - try: - temp_sous_calcul_traitement_195 = proprietaire_10.situation_r822_11_13_17 - except EmptyError: - temp_sous_calcul_traitement_195 = dead_value - raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1638, - start_column=40, - end_line=1638, + start_line=1593, + start_column=46, + end_line=1593, end_column=76, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -21409,14 +28658,14 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_196 = proprietaire_10.mensualite_principale + temp_sous_calcul_traitement_639 = zone_7 except EmptyError: - temp_sous_calcul_traitement_196 = dead_value + temp_sous_calcul_traitement_639 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1630, - start_column=38, - end_line=1630, - end_column=72, + start_line=1591, + start_column=20, + end_line=1591, + end_column=24, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -21425,14 +28674,14 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_197 = date_courante_15 + temp_sous_calcul_traitement_640 = date_courante_15 except EmptyError: - temp_sous_calcul_traitement_197 = dead_value + temp_sous_calcul_traitement_640 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1628, - start_column=30, - end_line=1628, - end_column=43, + start_line=1592, + start_column=29, + end_line=1592, + end_column=42, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -21441,14 +28690,14 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_198 = zone_7 + temp_sous_calcul_traitement_641 = logement_foyer__1.categorie_equivalence_loyer_d842_16 except EmptyError: - temp_sous_calcul_traitement_198 = dead_value + temp_sous_calcul_traitement_641 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1627, - start_column=21, - end_line=1627, - end_column=25, + start_line=1596, + start_column=13, + end_line=1596, + end_column=64, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -21457,14 +28706,14 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_199 = situation_familiale_calcul_apl_9 + temp_sous_calcul_traitement_642 = logement_foyer__1.type except EmptyError: - temp_sous_calcul_traitement_199 = dead_value + temp_sous_calcul_traitement_642 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1629, - start_column=47, - end_line=1629, - end_column=77, + start_line=1597, + start_column=35, + end_line=1597, + end_column=55, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", "Chapitre III : Modalités de liquidation et de versement", @@ -21473,13 +28722,915 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_200 = nombre_personnes_a_charge_9 + temp_sous_calcul_traitement_643 = logement_foyer__1.date_conventionnement except EmptyError: - temp_sous_calcul_traitement_200 = dead_value + temp_sous_calcul_traitement_643 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1626, + start_line=1598, + start_column=37, + end_line=1598, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_644 = logement_foyer__1.redevance + except EmptyError: + temp_sous_calcul_traitement_644 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1594, + start_column=25, + end_line=1594, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_645 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_645 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1589, + start_column=43, + end_line=1589, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_646 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_646 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1590, + start_column=41, + end_line=1590, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_647 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_647 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1593, + start_column=46, + end_line=1593, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_648 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_648 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1591, + start_column=20, + end_line=1591, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_649 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_649 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1592, + start_column=29, + end_line=1592, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_650 = logement_foyer__1.categorie_equivalence_loyer_d842_16 + except EmptyError: + temp_sous_calcul_traitement_650 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1596, + start_column=13, + end_line=1596, + end_column=64, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_651 = logement_foyer__1.type + except EmptyError: + temp_sous_calcul_traitement_651 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1597, + start_column=35, + end_line=1597, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_652 = logement_foyer__1.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_652 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1598, + start_column=37, + end_line=1598, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_653 = logement_foyer__1.redevance + except EmptyError: + temp_sous_calcul_traitement_653 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1594, + start_column=25, + end_line=1594, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_654 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_654 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1589, + start_column=43, + end_line=1589, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_655 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_655 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1590, + start_column=41, + end_line=1590, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_656 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_656 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1593, + start_column=46, + end_line=1593, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_657 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_657 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1591, + start_column=20, + end_line=1591, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_658 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_658 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1592, + start_column=29, + end_line=1592, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_659 = logement_foyer__1.categorie_equivalence_loyer_d842_16 + except EmptyError: + temp_sous_calcul_traitement_659 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1596, + start_column=13, + end_line=1596, + end_column=64, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_660 = logement_foyer__1.type + except EmptyError: + temp_sous_calcul_traitement_660 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1597, + start_column=35, + end_line=1597, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_661 = logement_foyer__1.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_661 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1598, + start_column=37, + end_line=1598, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_662 = logement_foyer__1.redevance + except EmptyError: + temp_sous_calcul_traitement_662 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1594, + start_column=25, + end_line=1594, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_663 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_663 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1589, + start_column=43, + end_line=1589, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_664 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_664 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1590, + start_column=41, + end_line=1590, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_665 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_665 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1593, + start_column=46, + end_line=1593, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_666 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_666 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1591, + start_column=20, + end_line=1591, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_667 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_667 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1592, + start_column=29, + end_line=1592, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_668 = logement_foyer__1.categorie_equivalence_loyer_d842_16 + except EmptyError: + temp_sous_calcul_traitement_668 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1596, + start_column=13, + end_line=1596, + end_column=64, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_669 = logement_foyer__1.type + except EmptyError: + temp_sous_calcul_traitement_669 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1597, + start_column=35, + end_line=1597, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_670 = logement_foyer__1.date_conventionnement + except EmptyError: + temp_sous_calcul_traitement_670 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1598, + start_column=37, + end_line=1598, + end_column=74, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_671 = logement_foyer__1.redevance + except EmptyError: + temp_sous_calcul_traitement_671 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1594, + start_column=25, + end_line=1594, + end_column=50, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_672 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_672 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1589, + start_column=43, + end_line=1589, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_673 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_673 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1590, + start_column=41, + end_line=1590, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_674 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_674 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1593, + start_column=46, + end_line=1593, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_675 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_675 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1591, + start_column=20, + end_line=1591, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_676 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_676 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1592, + start_column=29, + end_line=1592, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_677 = logement_foyer__1.categorie_equivalence_loyer_d842_16 + except EmptyError: + temp_sous_calcul_traitement_677 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1596, + start_column=13, + end_line=1596, + end_column=64, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + temp_sous_calcul_traitement_567 = TraitementFormuleAideFinale(aide_finale_formule = CalculAllocationLogementFoyer(coefficient_prise_en_charge = calcul_allocation_logement_foyer( + CalculAllocationLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_614, + date_conventionnement_in = temp_sous_calcul_traitement_615, + redevance_in = temp_sous_calcul_traitement_616, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_617, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_618, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_619, + zone_in = temp_sous_calcul_traitement_620, + date_courante_in = temp_sous_calcul_traitement_621, + categorie_equivalence_loyer_d842_16_in = temp_sous_calcul_traitement_622)).coefficient_prise_en_charge, + equivalence_loyer = calcul_allocation_logement_foyer( + CalculAllocationLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_605, + date_conventionnement_in = temp_sous_calcul_traitement_606, + redevance_in = temp_sous_calcul_traitement_607, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_608, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_609, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_610, + zone_in = temp_sous_calcul_traitement_611, + date_courante_in = temp_sous_calcul_traitement_612, + categorie_equivalence_loyer_d842_16_in = temp_sous_calcul_traitement_613)).equivalence_loyer, + montant_forfaitaire_charges = calcul_allocation_logement_foyer( + CalculAllocationLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_596, + date_conventionnement_in = temp_sous_calcul_traitement_597, + redevance_in = temp_sous_calcul_traitement_598, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_599, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_600, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_601, + zone_in = temp_sous_calcul_traitement_602, + date_courante_in = temp_sous_calcul_traitement_603, + categorie_equivalence_loyer_d842_16_in = temp_sous_calcul_traitement_604)).montant_forfaitaire_charges, + loyer_minimal = calcul_allocation_logement_foyer(CalculAllocationLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_587, + date_conventionnement_in = temp_sous_calcul_traitement_588, + redevance_in = temp_sous_calcul_traitement_589, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_590, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_591, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_592, + zone_in = temp_sous_calcul_traitement_593, + date_courante_in = temp_sous_calcul_traitement_594, + categorie_equivalence_loyer_d842_16_in = temp_sous_calcul_traitement_595)).loyer_minimal, + aide_finale_formule = calcul_allocation_logement_foyer( + CalculAllocationLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_578, + date_conventionnement_in = temp_sous_calcul_traitement_579, + redevance_in = temp_sous_calcul_traitement_580, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_581, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_582, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_583, + zone_in = temp_sous_calcul_traitement_584, + date_courante_in = temp_sous_calcul_traitement_585, + categorie_equivalence_loyer_d842_16_in = temp_sous_calcul_traitement_586)).aide_finale_formule, + traitement_aide_finale = temp_sous_calcul_traitement_568).aide_finale_formule, + traitement_aide_finale = CalculAllocationLogementFoyer(coefficient_prise_en_charge = calcul_allocation_logement_foyer( + CalculAllocationLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_669, + date_conventionnement_in = temp_sous_calcul_traitement_670, + redevance_in = temp_sous_calcul_traitement_671, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_672, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_673, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_674, + zone_in = temp_sous_calcul_traitement_675, + date_courante_in = temp_sous_calcul_traitement_676, + categorie_equivalence_loyer_d842_16_in = temp_sous_calcul_traitement_677)).coefficient_prise_en_charge, + equivalence_loyer = calcul_allocation_logement_foyer( + CalculAllocationLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_660, + date_conventionnement_in = temp_sous_calcul_traitement_661, + redevance_in = temp_sous_calcul_traitement_662, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_663, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_664, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_665, + zone_in = temp_sous_calcul_traitement_666, + date_courante_in = temp_sous_calcul_traitement_667, + categorie_equivalence_loyer_d842_16_in = temp_sous_calcul_traitement_668)).equivalence_loyer, + montant_forfaitaire_charges = calcul_allocation_logement_foyer( + CalculAllocationLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_651, + date_conventionnement_in = temp_sous_calcul_traitement_652, + redevance_in = temp_sous_calcul_traitement_653, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_654, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_655, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_656, + zone_in = temp_sous_calcul_traitement_657, + date_courante_in = temp_sous_calcul_traitement_658, + categorie_equivalence_loyer_d842_16_in = temp_sous_calcul_traitement_659)).montant_forfaitaire_charges, + loyer_minimal = calcul_allocation_logement_foyer(CalculAllocationLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_642, + date_conventionnement_in = temp_sous_calcul_traitement_643, + redevance_in = temp_sous_calcul_traitement_644, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_645, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_646, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_647, + zone_in = temp_sous_calcul_traitement_648, + date_courante_in = temp_sous_calcul_traitement_649, + categorie_equivalence_loyer_d842_16_in = temp_sous_calcul_traitement_650)).loyer_minimal, + aide_finale_formule = calcul_allocation_logement_foyer( + CalculAllocationLogementFoyerIn(type_logement_foyer_in = temp_sous_calcul_traitement_633, + date_conventionnement_in = temp_sous_calcul_traitement_634, + redevance_in = temp_sous_calcul_traitement_635, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_636, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_637, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_638, + zone_in = temp_sous_calcul_traitement_639, + date_courante_in = temp_sous_calcul_traitement_640, + categorie_equivalence_loyer_d842_16_in = temp_sous_calcul_traitement_641)).aide_finale_formule, + traitement_aide_finale = temp_sous_calcul_traitement_623).traitement_aide_finale) + elif match_arg_562.code == ModeOccupation_Code.AccessionProprieteLocalUsageExclusifHabitation: + proprietaire_9 = match_arg_562.value + def temp_sous_calcul_traitement_678(param_53:Money): + try: + temp_sous_calcul_traitement_679 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_679 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1610, + start_column=44, + end_line=1610, + end_column=61, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_680 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_680 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1611, + start_column=42, + end_line=1611, + end_column=67, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_681 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_681 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1614, + start_column=47, + end_line=1614, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_682 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_682 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1612, + start_column=21, + end_line=1612, + end_column=25, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_683 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_683 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1613, + start_column=30, + end_line=1613, + end_column=43, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_684 = proprietaire_9.mensualite_principale + except EmptyError: + temp_sous_calcul_traitement_684 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1615, + start_column=38, + end_line=1615, + end_column=72, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_685 = proprietaire_9.situation_r822_11_13_17 + except EmptyError: + temp_sous_calcul_traitement_685 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1623, + start_column=40, + end_line=1623, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_686 = proprietaire_9.pret.date_signature + except EmptyError: + temp_sous_calcul_traitement_686 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1618, + start_column=36, + end_line=1618, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_687 = proprietaire_9.type_travaux_logement_r842_5 + except EmptyError: + temp_sous_calcul_traitement_687 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1617, + start_column=38, + end_line=1617, + end_column=79, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_688 = proprietaire_9.local_habite_premiere_fois_beneficiaire + except EmptyError: + temp_sous_calcul_traitement_688 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1620, + start_column=14, + end_line=1620, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_689 = proprietaire_9.date_entree_logement + except EmptyError: + temp_sous_calcul_traitement_689 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1621, + start_column=37, + end_line=1621, + end_column=70, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_690 = proprietaire_9.charges_mensuelles_pret + except EmptyError: + temp_sous_calcul_traitement_690 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1616, + start_column=40, + end_line=1616, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_691 = proprietaire_9.copropriete + except EmptyError: + temp_sous_calcul_traitement_691 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1622, + start_column=28, + end_line=1622, + end_column=52, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + return calcul_allocation_logement_accession_propriete( + CalculAllocationLogementAccessionProprieteIn(ressources_menage_arrondies_base_in = temp_sous_calcul_traitement_679, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_680, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_681, + zone_in = temp_sous_calcul_traitement_682, + date_courante_in = temp_sous_calcul_traitement_683, + mensualite_principale_in = temp_sous_calcul_traitement_684, + situation_r822_11_13_17_in = temp_sous_calcul_traitement_685, + date_signature_pret_in = temp_sous_calcul_traitement_686, + type_travaux_logement_in = temp_sous_calcul_traitement_687, + local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_688, + date_entree_logement_in = temp_sous_calcul_traitement_689, + charges_mensuelles_pret_in = temp_sous_calcul_traitement_690, + copropriete_in = temp_sous_calcul_traitement_691)).traitement_aide_finale( + param_53) + try: + temp_sous_calcul_traitement_692 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_692 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1610, + start_column=44, + end_line=1610, + end_column=61, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_693 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_693 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1611, start_column=42, - end_line=1626, + end_line=1611, end_column=67, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -21489,13 +29640,413 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Partie réglementaire", "Code de la construction et de l'habitation"])) try: - temp_sous_calcul_traitement_201 = ressources_menage_avec_arrondi_1 + temp_sous_calcul_traitement_694 = situation_familiale_calcul_apl_9 except EmptyError: - temp_sous_calcul_traitement_201 = dead_value + temp_sous_calcul_traitement_694 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", - start_line=1625, + start_line=1614, + start_column=47, + end_line=1614, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_695 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_695 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1612, + start_column=21, + end_line=1612, + end_column=25, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_696 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_696 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1613, + start_column=30, + end_line=1613, + end_column=43, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_697 = proprietaire_9.mensualite_principale + except EmptyError: + temp_sous_calcul_traitement_697 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1615, + start_column=38, + end_line=1615, + end_column=72, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_698 = proprietaire_9.situation_r822_11_13_17 + except EmptyError: + temp_sous_calcul_traitement_698 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1623, + start_column=40, + end_line=1623, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_699 = proprietaire_9.pret.date_signature + except EmptyError: + temp_sous_calcul_traitement_699 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1618, + start_column=36, + end_line=1618, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_700 = proprietaire_9.type_travaux_logement_r842_5 + except EmptyError: + temp_sous_calcul_traitement_700 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1617, + start_column=38, + end_line=1617, + end_column=79, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_701 = proprietaire_9.local_habite_premiere_fois_beneficiaire + except EmptyError: + temp_sous_calcul_traitement_701 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1620, + start_column=14, + end_line=1620, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_702 = proprietaire_9.date_entree_logement + except EmptyError: + temp_sous_calcul_traitement_702 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1621, + start_column=37, + end_line=1621, + end_column=70, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_703 = proprietaire_9.charges_mensuelles_pret + except EmptyError: + temp_sous_calcul_traitement_703 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1616, + start_column=40, + end_line=1616, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_704 = proprietaire_9.copropriete + except EmptyError: + temp_sous_calcul_traitement_704 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1622, + start_column=28, + end_line=1622, + end_column=52, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_705(param_54:Money): + try: + temp_sous_calcul_traitement_706 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_706 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1610, + start_column=44, + end_line=1610, + end_column=61, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_707 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_707 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1611, + start_column=42, + end_line=1611, + end_column=67, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_708 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_708 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1614, + start_column=47, + end_line=1614, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_709 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_709 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1612, + start_column=21, + end_line=1612, + end_column=25, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_710 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_710 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1613, + start_column=30, + end_line=1613, + end_column=43, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_711 = proprietaire_9.mensualite_principale + except EmptyError: + temp_sous_calcul_traitement_711 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1615, + start_column=38, + end_line=1615, + end_column=72, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_712 = proprietaire_9.situation_r822_11_13_17 + except EmptyError: + temp_sous_calcul_traitement_712 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1623, + start_column=40, + end_line=1623, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_713 = proprietaire_9.pret.date_signature + except EmptyError: + temp_sous_calcul_traitement_713 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1618, + start_column=36, + end_line=1618, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_714 = proprietaire_9.type_travaux_logement_r842_5 + except EmptyError: + temp_sous_calcul_traitement_714 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1617, + start_column=38, + end_line=1617, + end_column=79, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_715 = proprietaire_9.local_habite_premiere_fois_beneficiaire + except EmptyError: + temp_sous_calcul_traitement_715 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1620, + start_column=14, + end_line=1620, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_716 = proprietaire_9.date_entree_logement + except EmptyError: + temp_sous_calcul_traitement_716 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1621, + start_column=37, + end_line=1621, + end_column=70, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_717 = proprietaire_9.charges_mensuelles_pret + except EmptyError: + temp_sous_calcul_traitement_717 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1616, + start_column=40, + end_line=1616, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_718 = proprietaire_9.copropriete + except EmptyError: + temp_sous_calcul_traitement_718 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1622, + start_column=28, + end_line=1622, + end_column=52, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + return calcul_allocation_logement_accession_propriete( + CalculAllocationLogementAccessionProprieteIn(ressources_menage_arrondies_base_in = temp_sous_calcul_traitement_706, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_707, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_708, + zone_in = temp_sous_calcul_traitement_709, + date_courante_in = temp_sous_calcul_traitement_710, + mensualite_principale_in = temp_sous_calcul_traitement_711, + situation_r822_11_13_17_in = temp_sous_calcul_traitement_712, + date_signature_pret_in = temp_sous_calcul_traitement_713, + type_travaux_logement_in = temp_sous_calcul_traitement_714, + local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_715, + date_entree_logement_in = temp_sous_calcul_traitement_716, + charges_mensuelles_pret_in = temp_sous_calcul_traitement_717, + copropriete_in = temp_sous_calcul_traitement_718)).traitement_aide_finale( + param_54) + try: + temp_sous_calcul_traitement_719 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_719 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1610, start_column=44, - end_line=1625, + end_line=1610, end_column=61, law_headings=["Article D823-9", "Section 1 : Calcul, liquidation et versement des aides", @@ -21504,36 +30055,2124 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Livre VIII : Aides personnelles au logement", "Partie réglementaire", "Code de la construction et de l'habitation"])) - temp_sous_calcul_traitement_103 = TraitementFormuleAideFinale(aide_finale_formule = calcul_allocation_logement_accession_propriete( - CalculAllocationLogementAccessionProprieteIn(ressources_menage_arrondies_base_in = temp_sous_calcul_traitement_188, - nombre_personnes_a_charge_in = temp_sous_calcul_traitement_187, - situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_186, - zone_in = temp_sous_calcul_traitement_185, - date_courante_in = temp_sous_calcul_traitement_184, - mensualite_principale_in = temp_sous_calcul_traitement_183, - situation_r822_11_13_17_in = temp_sous_calcul_traitement_182, - date_signature_pret_in = temp_sous_calcul_traitement_181, - type_travaux_logement_in = temp_sous_calcul_traitement_180, - local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_179, - date_entree_logement_in = temp_sous_calcul_traitement_178, - charges_mensuelles_pret_in = temp_sous_calcul_traitement_177, - copropriete_in = temp_sous_calcul_traitement_176)).aide_finale_formule, - traitement_aide_finale = calcul_allocation_logement_accession_propriete( - CalculAllocationLogementAccessionProprieteIn(ressources_menage_arrondies_base_in = temp_sous_calcul_traitement_201, - nombre_personnes_a_charge_in = temp_sous_calcul_traitement_200, - situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_199, - zone_in = temp_sous_calcul_traitement_198, - date_courante_in = temp_sous_calcul_traitement_197, - mensualite_principale_in = temp_sous_calcul_traitement_196, - situation_r822_11_13_17_in = temp_sous_calcul_traitement_195, - date_signature_pret_in = temp_sous_calcul_traitement_194, - type_travaux_logement_in = temp_sous_calcul_traitement_193, - local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_192, - date_entree_logement_in = temp_sous_calcul_traitement_191, - charges_mensuelles_pret_in = temp_sous_calcul_traitement_190, - copropriete_in = temp_sous_calcul_traitement_189)).traitement_aide_finale) + try: + temp_sous_calcul_traitement_720 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_720 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1611, + start_column=42, + end_line=1611, + end_column=67, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_721 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_721 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1614, + start_column=47, + end_line=1614, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_722 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_722 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1612, + start_column=21, + end_line=1612, + end_column=25, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_723 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_723 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1613, + start_column=30, + end_line=1613, + end_column=43, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_724 = proprietaire_9.mensualite_principale + except EmptyError: + temp_sous_calcul_traitement_724 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1615, + start_column=38, + end_line=1615, + end_column=72, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_725 = proprietaire_9.situation_r822_11_13_17 + except EmptyError: + temp_sous_calcul_traitement_725 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1623, + start_column=40, + end_line=1623, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_726 = proprietaire_9.pret.date_signature + except EmptyError: + temp_sous_calcul_traitement_726 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1618, + start_column=36, + end_line=1618, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_727 = proprietaire_9.type_travaux_logement_r842_5 + except EmptyError: + temp_sous_calcul_traitement_727 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1617, + start_column=38, + end_line=1617, + end_column=79, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_728 = proprietaire_9.local_habite_premiere_fois_beneficiaire + except EmptyError: + temp_sous_calcul_traitement_728 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1620, + start_column=14, + end_line=1620, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_729 = proprietaire_9.date_entree_logement + except EmptyError: + temp_sous_calcul_traitement_729 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1621, + start_column=37, + end_line=1621, + end_column=70, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_730 = proprietaire_9.charges_mensuelles_pret + except EmptyError: + temp_sous_calcul_traitement_730 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1616, + start_column=40, + end_line=1616, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_731 = proprietaire_9.copropriete + except EmptyError: + temp_sous_calcul_traitement_731 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1622, + start_column=28, + end_line=1622, + end_column=52, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + temp_sous_calcul_traitement_567 = TraitementFormuleAideFinale(aide_finale_formule = CalculAllocationLogementAccessionPropriete(aide_finale_formule = calcul_allocation_logement_accession_propriete( + CalculAllocationLogementAccessionProprieteIn(ressources_menage_arrondies_base_in = temp_sous_calcul_traitement_692, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_693, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_694, + zone_in = temp_sous_calcul_traitement_695, + date_courante_in = temp_sous_calcul_traitement_696, + mensualite_principale_in = temp_sous_calcul_traitement_697, + situation_r822_11_13_17_in = temp_sous_calcul_traitement_698, + date_signature_pret_in = temp_sous_calcul_traitement_699, + type_travaux_logement_in = temp_sous_calcul_traitement_700, + local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_701, + date_entree_logement_in = temp_sous_calcul_traitement_702, + charges_mensuelles_pret_in = temp_sous_calcul_traitement_703, + copropriete_in = temp_sous_calcul_traitement_704)).aide_finale_formule, + traitement_aide_finale = temp_sous_calcul_traitement_678).aide_finale_formule, + traitement_aide_finale = CalculAllocationLogementAccessionPropriete(aide_finale_formule = calcul_allocation_logement_accession_propriete( + CalculAllocationLogementAccessionProprieteIn(ressources_menage_arrondies_base_in = temp_sous_calcul_traitement_719, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_720, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_721, + zone_in = temp_sous_calcul_traitement_722, + date_courante_in = temp_sous_calcul_traitement_723, + mensualite_principale_in = temp_sous_calcul_traitement_724, + situation_r822_11_13_17_in = temp_sous_calcul_traitement_725, + date_signature_pret_in = temp_sous_calcul_traitement_726, + type_travaux_logement_in = temp_sous_calcul_traitement_727, + local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_728, + date_entree_logement_in = temp_sous_calcul_traitement_729, + charges_mensuelles_pret_in = temp_sous_calcul_traitement_730, + copropriete_in = temp_sous_calcul_traitement_731)).aide_finale_formule, + traitement_aide_finale = temp_sous_calcul_traitement_705).traitement_aide_finale) + elif match_arg_562.code == ModeOccupation_Code.SousLocataire: + location_8 = match_arg_562.value + def temp_sous_calcul_traitement_732(param_55:Money): + try: + temp_sous_calcul_traitement_733 = location_8.loyer_principal + except EmptyError: + temp_sous_calcul_traitement_733 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1562, + start_column=31, + end_line=1562, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_734 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_734 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1557, + start_column=43, + end_line=1557, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_735 = location_8.beneficiaire_aide_adulte_ou_enfant_handicapes + except EmptyError: + temp_sous_calcul_traitement_735 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1564, + start_column=15, + end_line=1564, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_736 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_736 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1560, + start_column=29, + end_line=1560, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_737 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_737 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1558, + start_column=41, + end_line=1558, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_738 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_738 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1561, + start_column=46, + end_line=1561, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_739 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_739 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1559, + start_column=20, + end_line=1559, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_740 = location_8.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_740 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1565, + start_column=36, + end_line=1565, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_741 = location_8.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_741 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1568, + start_column=15, + end_line=1568, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_742 = type_aide_3 + except EmptyError: + temp_sous_calcul_traitement_742 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1569, + start_column=25, + end_line=1569, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_743 = location_8.colocation + except EmptyError: + temp_sous_calcul_traitement_743 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1566, + start_column=26, + end_line=1566, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_567 = location_8.bailleur + if match_arg_567.code == TypeBailleur_Code.BailleurSocial: + bailleur_18 = match_arg_567.value + temp_sous_calcul_traitement_744 = bailleur_18.reduction_loyer_solidarite_percue + elif match_arg_567.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_567.value + temp_sous_calcul_traitement_744 = money_of_cents_string("0") + elif match_arg_567.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_567.value + temp_sous_calcul_traitement_744 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_744 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1571, + start_column=16, + end_line=1574, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_745 = location_8.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_745 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1575, + start_column=38, + end_line=1575, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_746 = location_8.changement_logement_d842_4 + except EmptyError: + temp_sous_calcul_traitement_746 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1576, + start_column=42, + end_line=1576, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + return calcul_allocation_logement_locatif(CalculAllocationLogementLocatifIn(loyer_principal_in = temp_sous_calcul_traitement_733, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_734, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_735, + date_courante_in = temp_sous_calcul_traitement_736, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_737, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_738, + zone_in = temp_sous_calcul_traitement_739, + logement_est_chambre_in = temp_sous_calcul_traitement_740, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_741, + type_aide_in = temp_sous_calcul_traitement_742, + colocation_in = temp_sous_calcul_traitement_743, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_744, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_745, + changement_logement_d842_4_in = temp_sous_calcul_traitement_746)).traitement_aide_finale( + param_55) + try: + temp_sous_calcul_traitement_747 = location_8.loyer_principal + except EmptyError: + temp_sous_calcul_traitement_747 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1562, + start_column=31, + end_line=1562, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_748 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_748 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1557, + start_column=43, + end_line=1557, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_749 = location_8.beneficiaire_aide_adulte_ou_enfant_handicapes + except EmptyError: + temp_sous_calcul_traitement_749 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1564, + start_column=15, + end_line=1564, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_750 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_750 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1560, + start_column=29, + end_line=1560, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_751 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_751 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1558, + start_column=41, + end_line=1558, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_752 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_752 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1561, + start_column=46, + end_line=1561, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_753 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_753 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1559, + start_column=20, + end_line=1559, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_754 = location_8.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_754 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1565, + start_column=36, + end_line=1565, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_755 = location_8.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_755 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1568, + start_column=15, + end_line=1568, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_756 = type_aide_3 + except EmptyError: + temp_sous_calcul_traitement_756 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1569, + start_column=25, + end_line=1569, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_757 = location_8.colocation + except EmptyError: + temp_sous_calcul_traitement_757 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1566, + start_column=26, + end_line=1566, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_568 = location_8.bailleur + if match_arg_568.code == TypeBailleur_Code.BailleurSocial: + bailleur_19 = match_arg_568.value + temp_sous_calcul_traitement_758 = bailleur_19.reduction_loyer_solidarite_percue + elif match_arg_568.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_568.value + temp_sous_calcul_traitement_758 = money_of_cents_string("0") + elif match_arg_568.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_568.value + temp_sous_calcul_traitement_758 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_758 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1571, + start_column=16, + end_line=1574, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_759 = location_8.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_759 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1575, + start_column=38, + end_line=1575, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_760 = location_8.changement_logement_d842_4 + except EmptyError: + temp_sous_calcul_traitement_760 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1576, + start_column=42, + end_line=1576, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_761(param_56:Money): + try: + temp_sous_calcul_traitement_762 = location_8.loyer_principal + except EmptyError: + temp_sous_calcul_traitement_762 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1562, + start_column=31, + end_line=1562, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_763 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_763 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1557, + start_column=43, + end_line=1557, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_764 = location_8.beneficiaire_aide_adulte_ou_enfant_handicapes + except EmptyError: + temp_sous_calcul_traitement_764 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1564, + start_column=15, + end_line=1564, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_765 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_765 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1560, + start_column=29, + end_line=1560, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_766 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_766 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1558, + start_column=41, + end_line=1558, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_767 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_767 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1561, + start_column=46, + end_line=1561, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_768 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_768 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1559, + start_column=20, + end_line=1559, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_769 = location_8.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_769 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1565, + start_column=36, + end_line=1565, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_770 = location_8.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_770 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1568, + start_column=15, + end_line=1568, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_771 = type_aide_3 + except EmptyError: + temp_sous_calcul_traitement_771 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1569, + start_column=25, + end_line=1569, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_772 = location_8.colocation + except EmptyError: + temp_sous_calcul_traitement_772 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1566, + start_column=26, + end_line=1566, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_569 = location_8.bailleur + if match_arg_569.code == TypeBailleur_Code.BailleurSocial: + bailleur_20 = match_arg_569.value + temp_sous_calcul_traitement_773 = bailleur_20.reduction_loyer_solidarite_percue + elif match_arg_569.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_569.value + temp_sous_calcul_traitement_773 = money_of_cents_string("0") + elif match_arg_569.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_569.value + temp_sous_calcul_traitement_773 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_773 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1571, + start_column=16, + end_line=1574, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_774 = location_8.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_774 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1575, + start_column=38, + end_line=1575, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_775 = location_8.changement_logement_d842_4 + except EmptyError: + temp_sous_calcul_traitement_775 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1576, + start_column=42, + end_line=1576, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + return calcul_allocation_logement_locatif(CalculAllocationLogementLocatifIn(loyer_principal_in = temp_sous_calcul_traitement_762, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_763, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_764, + date_courante_in = temp_sous_calcul_traitement_765, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_766, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_767, + zone_in = temp_sous_calcul_traitement_768, + logement_est_chambre_in = temp_sous_calcul_traitement_769, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_770, + type_aide_in = temp_sous_calcul_traitement_771, + colocation_in = temp_sous_calcul_traitement_772, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_773, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_774, + changement_logement_d842_4_in = temp_sous_calcul_traitement_775)).traitement_aide_finale( + param_56) + try: + temp_sous_calcul_traitement_776 = location_8.loyer_principal + except EmptyError: + temp_sous_calcul_traitement_776 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1562, + start_column=31, + end_line=1562, + end_column=55, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_777 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_777 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1557, + start_column=43, + end_line=1557, + end_column=60, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_778 = location_8.beneficiaire_aide_adulte_ou_enfant_handicapes + except EmptyError: + temp_sous_calcul_traitement_778 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1564, + start_column=15, + end_line=1564, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_779 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_779 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1560, + start_column=29, + end_line=1560, + end_column=42, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_780 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_780 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1558, + start_column=41, + end_line=1558, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_781 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_781 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1561, + start_column=46, + end_line=1561, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_782 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_782 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1559, + start_column=20, + end_line=1559, + end_column=24, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_783 = location_8.logement_est_chambre + except EmptyError: + temp_sous_calcul_traitement_783 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1565, + start_column=36, + end_line=1565, + end_column=65, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_784 = location_8.agees_ou_handicap_adultes_hebergees_onereux_particuliers + except EmptyError: + temp_sous_calcul_traitement_784 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1568, + start_column=15, + end_line=1568, + end_column=80, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_785 = type_aide_3 + except EmptyError: + temp_sous_calcul_traitement_785 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1569, + start_column=25, + end_line=1569, + end_column=34, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_786 = location_8.colocation + except EmptyError: + temp_sous_calcul_traitement_786 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1566, + start_column=26, + end_line=1566, + end_column=45, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + match_arg_570 = location_8.bailleur + if match_arg_570.code == TypeBailleur_Code.BailleurSocial: + bailleur_21 = match_arg_570.value + temp_sous_calcul_traitement_787 = bailleur_21.reduction_loyer_solidarite_percue + elif match_arg_570.code == TypeBailleur_Code.BailleurPriveAvecConventionnementSocial: + _ = match_arg_570.value + temp_sous_calcul_traitement_787 = money_of_cents_string("0") + elif match_arg_570.code == TypeBailleur_Code.BailleurPrive: + _ = match_arg_570.value + temp_sous_calcul_traitement_787 = money_of_cents_string("0") + except EmptyError: + temp_sous_calcul_traitement_787 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1571, + start_column=16, + end_line=1574, + end_column=39, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_788 = location_8.logement_meuble_d842_2 + except EmptyError: + temp_sous_calcul_traitement_788 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1575, + start_column=38, + end_line=1575, + end_column=69, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_789 = location_8.changement_logement_d842_4 + except EmptyError: + temp_sous_calcul_traitement_789 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1576, + start_column=42, + end_line=1576, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + temp_sous_calcul_traitement_567 = TraitementFormuleAideFinale(aide_finale_formule = CalculAllocationLogementLocatif(aide_finale_formule = calcul_allocation_logement_locatif( + CalculAllocationLogementLocatifIn(loyer_principal_in = temp_sous_calcul_traitement_747, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_748, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_749, + date_courante_in = temp_sous_calcul_traitement_750, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_751, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_752, + zone_in = temp_sous_calcul_traitement_753, + logement_est_chambre_in = temp_sous_calcul_traitement_754, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_755, + type_aide_in = temp_sous_calcul_traitement_756, + colocation_in = temp_sous_calcul_traitement_757, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_758, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_759, + changement_logement_d842_4_in = temp_sous_calcul_traitement_760)).aide_finale_formule, + traitement_aide_finale = temp_sous_calcul_traitement_732).aide_finale_formule, + traitement_aide_finale = CalculAllocationLogementLocatif(aide_finale_formule = calcul_allocation_logement_locatif( + CalculAllocationLogementLocatifIn(loyer_principal_in = temp_sous_calcul_traitement_776, + ressources_menage_arrondies_in = temp_sous_calcul_traitement_777, + beneficiaire_aide_adulte_ou_enfant_handicapes_in = temp_sous_calcul_traitement_778, + date_courante_in = temp_sous_calcul_traitement_779, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_780, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_781, + zone_in = temp_sous_calcul_traitement_782, + logement_est_chambre_in = temp_sous_calcul_traitement_783, + agees_ou_handicap_adultes_hebergees_onereux_particuliers_in = temp_sous_calcul_traitement_784, + type_aide_in = temp_sous_calcul_traitement_785, + colocation_in = temp_sous_calcul_traitement_786, + reduction_loyer_solidarite_in = temp_sous_calcul_traitement_787, + logement_meuble_d842_2_in = temp_sous_calcul_traitement_788, + changement_logement_d842_4_in = temp_sous_calcul_traitement_789)).aide_finale_formule, + traitement_aide_finale = temp_sous_calcul_traitement_761).traitement_aide_finale) + elif match_arg_562.code == ModeOccupation_Code.LocationAccession: + proprietaire_10 = match_arg_562.value + def temp_sous_calcul_traitement_790(param_57:Money): + try: + temp_sous_calcul_traitement_791 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_791 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1637, + start_column=44, + end_line=1637, + end_column=61, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_792 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_792 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1638, + start_column=42, + end_line=1638, + end_column=67, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_793 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_793 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1641, + start_column=47, + end_line=1641, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_794 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_794 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1639, + start_column=21, + end_line=1639, + end_column=25, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_795 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_795 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1640, + start_column=30, + end_line=1640, + end_column=43, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_796 = proprietaire_10.mensualite_principale + except EmptyError: + temp_sous_calcul_traitement_796 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1642, + start_column=38, + end_line=1642, + end_column=72, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_797 = proprietaire_10.situation_r822_11_13_17 + except EmptyError: + temp_sous_calcul_traitement_797 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1650, + start_column=40, + end_line=1650, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_798 = proprietaire_10.pret.date_signature + except EmptyError: + temp_sous_calcul_traitement_798 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1645, + start_column=36, + end_line=1645, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_799 = proprietaire_10.type_travaux_logement_r842_5 + except EmptyError: + temp_sous_calcul_traitement_799 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1644, + start_column=38, + end_line=1644, + end_column=79, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_800 = proprietaire_10.local_habite_premiere_fois_beneficiaire + except EmptyError: + temp_sous_calcul_traitement_800 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1647, + start_column=14, + end_line=1647, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_801 = proprietaire_10.date_entree_logement + except EmptyError: + temp_sous_calcul_traitement_801 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1648, + start_column=37, + end_line=1648, + end_column=70, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_802 = proprietaire_10.charges_mensuelles_pret + except EmptyError: + temp_sous_calcul_traitement_802 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1643, + start_column=40, + end_line=1643, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_803 = proprietaire_10.copropriete + except EmptyError: + temp_sous_calcul_traitement_803 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1649, + start_column=28, + end_line=1649, + end_column=52, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + return calcul_allocation_logement_accession_propriete( + CalculAllocationLogementAccessionProprieteIn(ressources_menage_arrondies_base_in = temp_sous_calcul_traitement_791, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_792, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_793, + zone_in = temp_sous_calcul_traitement_794, + date_courante_in = temp_sous_calcul_traitement_795, + mensualite_principale_in = temp_sous_calcul_traitement_796, + situation_r822_11_13_17_in = temp_sous_calcul_traitement_797, + date_signature_pret_in = temp_sous_calcul_traitement_798, + type_travaux_logement_in = temp_sous_calcul_traitement_799, + local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_800, + date_entree_logement_in = temp_sous_calcul_traitement_801, + charges_mensuelles_pret_in = temp_sous_calcul_traitement_802, + copropriete_in = temp_sous_calcul_traitement_803)).traitement_aide_finale( + param_57) + try: + temp_sous_calcul_traitement_804 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_804 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1637, + start_column=44, + end_line=1637, + end_column=61, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_805 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_805 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1638, + start_column=42, + end_line=1638, + end_column=67, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_806 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_806 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1641, + start_column=47, + end_line=1641, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_807 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_807 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1639, + start_column=21, + end_line=1639, + end_column=25, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_808 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_808 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1640, + start_column=30, + end_line=1640, + end_column=43, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_809 = proprietaire_10.mensualite_principale + except EmptyError: + temp_sous_calcul_traitement_809 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1642, + start_column=38, + end_line=1642, + end_column=72, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_810 = proprietaire_10.situation_r822_11_13_17 + except EmptyError: + temp_sous_calcul_traitement_810 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1650, + start_column=40, + end_line=1650, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_811 = proprietaire_10.pret.date_signature + except EmptyError: + temp_sous_calcul_traitement_811 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1645, + start_column=36, + end_line=1645, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_812 = proprietaire_10.type_travaux_logement_r842_5 + except EmptyError: + temp_sous_calcul_traitement_812 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1644, + start_column=38, + end_line=1644, + end_column=79, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_813 = proprietaire_10.local_habite_premiere_fois_beneficiaire + except EmptyError: + temp_sous_calcul_traitement_813 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1647, + start_column=14, + end_line=1647, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_814 = proprietaire_10.date_entree_logement + except EmptyError: + temp_sous_calcul_traitement_814 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1648, + start_column=37, + end_line=1648, + end_column=70, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_815 = proprietaire_10.charges_mensuelles_pret + except EmptyError: + temp_sous_calcul_traitement_815 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1643, + start_column=40, + end_line=1643, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_816 = proprietaire_10.copropriete + except EmptyError: + temp_sous_calcul_traitement_816 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1649, + start_column=28, + end_line=1649, + end_column=52, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + def temp_sous_calcul_traitement_817(param_58:Money): + try: + temp_sous_calcul_traitement_818 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_818 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1637, + start_column=44, + end_line=1637, + end_column=61, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_819 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_819 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1638, + start_column=42, + end_line=1638, + end_column=67, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_820 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_820 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1641, + start_column=47, + end_line=1641, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_821 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_821 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1639, + start_column=21, + end_line=1639, + end_column=25, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_822 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_822 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1640, + start_column=30, + end_line=1640, + end_column=43, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_823 = proprietaire_10.mensualite_principale + except EmptyError: + temp_sous_calcul_traitement_823 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1642, + start_column=38, + end_line=1642, + end_column=72, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_824 = proprietaire_10.situation_r822_11_13_17 + except EmptyError: + temp_sous_calcul_traitement_824 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1650, + start_column=40, + end_line=1650, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_825 = proprietaire_10.pret.date_signature + except EmptyError: + temp_sous_calcul_traitement_825 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1645, + start_column=36, + end_line=1645, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_826 = proprietaire_10.type_travaux_logement_r842_5 + except EmptyError: + temp_sous_calcul_traitement_826 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1644, + start_column=38, + end_line=1644, + end_column=79, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_827 = proprietaire_10.local_habite_premiere_fois_beneficiaire + except EmptyError: + temp_sous_calcul_traitement_827 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1647, + start_column=14, + end_line=1647, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_828 = proprietaire_10.date_entree_logement + except EmptyError: + temp_sous_calcul_traitement_828 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1648, + start_column=37, + end_line=1648, + end_column=70, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_829 = proprietaire_10.charges_mensuelles_pret + except EmptyError: + temp_sous_calcul_traitement_829 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1643, + start_column=40, + end_line=1643, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_830 = proprietaire_10.copropriete + except EmptyError: + temp_sous_calcul_traitement_830 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1649, + start_column=28, + end_line=1649, + end_column=52, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + return calcul_allocation_logement_accession_propriete( + CalculAllocationLogementAccessionProprieteIn(ressources_menage_arrondies_base_in = temp_sous_calcul_traitement_818, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_819, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_820, + zone_in = temp_sous_calcul_traitement_821, + date_courante_in = temp_sous_calcul_traitement_822, + mensualite_principale_in = temp_sous_calcul_traitement_823, + situation_r822_11_13_17_in = temp_sous_calcul_traitement_824, + date_signature_pret_in = temp_sous_calcul_traitement_825, + type_travaux_logement_in = temp_sous_calcul_traitement_826, + local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_827, + date_entree_logement_in = temp_sous_calcul_traitement_828, + charges_mensuelles_pret_in = temp_sous_calcul_traitement_829, + copropriete_in = temp_sous_calcul_traitement_830)).traitement_aide_finale( + param_58) + try: + temp_sous_calcul_traitement_831 = ressources_menage_avec_arrondi_1 + except EmptyError: + temp_sous_calcul_traitement_831 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1637, + start_column=44, + end_line=1637, + end_column=61, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_832 = nombre_personnes_a_charge_9 + except EmptyError: + temp_sous_calcul_traitement_832 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1638, + start_column=42, + end_line=1638, + end_column=67, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_833 = situation_familiale_calcul_apl_9 + except EmptyError: + temp_sous_calcul_traitement_833 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1641, + start_column=47, + end_line=1641, + end_column=77, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_834 = zone_7 + except EmptyError: + temp_sous_calcul_traitement_834 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1639, + start_column=21, + end_line=1639, + end_column=25, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_835 = date_courante_15 + except EmptyError: + temp_sous_calcul_traitement_835 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1640, + start_column=30, + end_line=1640, + end_column=43, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_836 = proprietaire_10.mensualite_principale + except EmptyError: + temp_sous_calcul_traitement_836 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1642, + start_column=38, + end_line=1642, + end_column=72, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_837 = proprietaire_10.situation_r822_11_13_17 + except EmptyError: + temp_sous_calcul_traitement_837 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1650, + start_column=40, + end_line=1650, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_838 = proprietaire_10.pret.date_signature + except EmptyError: + temp_sous_calcul_traitement_838 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1645, + start_column=36, + end_line=1645, + end_column=68, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_839 = proprietaire_10.type_travaux_logement_r842_5 + except EmptyError: + temp_sous_calcul_traitement_839 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1644, + start_column=38, + end_line=1644, + end_column=79, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_840 = proprietaire_10.local_habite_premiere_fois_beneficiaire + except EmptyError: + temp_sous_calcul_traitement_840 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1647, + start_column=14, + end_line=1647, + end_column=66, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_841 = proprietaire_10.date_entree_logement + except EmptyError: + temp_sous_calcul_traitement_841 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1648, + start_column=37, + end_line=1648, + end_column=70, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_842 = proprietaire_10.charges_mensuelles_pret + except EmptyError: + temp_sous_calcul_traitement_842 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1643, + start_column=40, + end_line=1643, + end_column=76, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + try: + temp_sous_calcul_traitement_843 = proprietaire_10.copropriete + except EmptyError: + temp_sous_calcul_traitement_843 = dead_value + raise NoValueProvided(SourcePosition(filename="examples/aides_logement/code_construction_reglementaire.catala_fr", + start_line=1649, + start_column=28, + end_line=1649, + end_column=52, + law_headings=["Article D823-9", + "Section 1 : Calcul, liquidation et versement des aides", + "Chapitre III : Modalités de liquidation et de versement", + "Titre II : Dispositions communes aux aides personnelles au logement", + "Livre VIII : Aides personnelles au logement", + "Partie réglementaire", + "Code de la construction et de l'habitation"])) + temp_sous_calcul_traitement_567 = TraitementFormuleAideFinale(aide_finale_formule = CalculAllocationLogementAccessionPropriete(aide_finale_formule = calcul_allocation_logement_accession_propriete( + CalculAllocationLogementAccessionProprieteIn(ressources_menage_arrondies_base_in = temp_sous_calcul_traitement_804, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_805, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_806, + zone_in = temp_sous_calcul_traitement_807, + date_courante_in = temp_sous_calcul_traitement_808, + mensualite_principale_in = temp_sous_calcul_traitement_809, + situation_r822_11_13_17_in = temp_sous_calcul_traitement_810, + date_signature_pret_in = temp_sous_calcul_traitement_811, + type_travaux_logement_in = temp_sous_calcul_traitement_812, + local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_813, + date_entree_logement_in = temp_sous_calcul_traitement_814, + charges_mensuelles_pret_in = temp_sous_calcul_traitement_815, + copropriete_in = temp_sous_calcul_traitement_816)).aide_finale_formule, + traitement_aide_finale = temp_sous_calcul_traitement_790).aide_finale_formule, + traitement_aide_finale = CalculAllocationLogementAccessionPropriete(aide_finale_formule = calcul_allocation_logement_accession_propriete( + CalculAllocationLogementAccessionProprieteIn(ressources_menage_arrondies_base_in = temp_sous_calcul_traitement_831, + nombre_personnes_a_charge_in = temp_sous_calcul_traitement_832, + situation_familiale_calcul_apl_in = temp_sous_calcul_traitement_833, + zone_in = temp_sous_calcul_traitement_834, + date_courante_in = temp_sous_calcul_traitement_835, + mensualite_principale_in = temp_sous_calcul_traitement_836, + situation_r822_11_13_17_in = temp_sous_calcul_traitement_837, + date_signature_pret_in = temp_sous_calcul_traitement_838, + type_travaux_logement_in = temp_sous_calcul_traitement_839, + local_habite_premiere_fois_beneficiaire_in = temp_sous_calcul_traitement_840, + date_entree_logement_in = temp_sous_calcul_traitement_841, + charges_mensuelles_pret_in = temp_sous_calcul_traitement_842, + copropriete_in = temp_sous_calcul_traitement_843)).aide_finale_formule, + traitement_aide_finale = temp_sous_calcul_traitement_817).traitement_aide_finale) except EmptyError: - temp_sous_calcul_traitement_103 = dead_value + temp_sous_calcul_traitement_567 = dead_value raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", start_line=988, start_column=11, end_line=988, end_column=33, @@ -21541,12 +32180,12 @@ def calcul_allocation_logement(calcul_allocation_logement_in:CalculAllocationLog "Secteur logement-foyer", "Calcul du montant de l'allocation logement", "Prologue : aides au logement"])) - sous_calcul_traitement_1 = temp_sous_calcul_traitement_103 + sous_calcul_traitement_1 = temp_sous_calcul_traitement_567 try: - def temp_traitement_aide_finale_3(param_43:Money): + def temp_traitement_aide_finale_3(param_59:Money): try: return sous_calcul_traitement_1.traitement_aide_finale( - param_43) + param_59) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", start_line=991, @@ -21748,17 +32387,17 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides "Prologue : aides au logement"])) calcul_allocation_logement_dot_date_courante = temp_calcul_allocation_logement_dot_date_courante try: - match_arg_555 = eligibilite_allocation_logement_dot_eligibilite_l841_2 - if match_arg_555.code == TypeEligibiliteAllocationLogement_Code.PasEligible: - _ = match_arg_555.value + match_arg_571 = eligibilite_allocation_logement_dot_eligibilite_l841_2 + if match_arg_571.code == TypeEligibiliteAllocationLogement_Code.PasEligible: + _ = match_arg_571.value temp_calcul_allocation_logement_dot_type_aide = TypeAidesPersonnelleLogement(TypeAidesPersonnelleLogement_Code.AllocationLogementSociale, Unit()) - elif match_arg_555.code == TypeEligibiliteAllocationLogement_Code.AllocationLogementFamiliale: - _ = match_arg_555.value + elif match_arg_571.code == TypeEligibiliteAllocationLogement_Code.AllocationLogementFamiliale: + _ = match_arg_571.value temp_calcul_allocation_logement_dot_type_aide = TypeAidesPersonnelleLogement(TypeAidesPersonnelleLogement_Code.AllocationLogementFamiliale, Unit()) - elif match_arg_555.code == TypeEligibiliteAllocationLogement_Code.AllocationLogementSociale: - _ = match_arg_555.value + elif match_arg_571.code == TypeEligibiliteAllocationLogement_Code.AllocationLogementSociale: + _ = match_arg_571.value temp_calcul_allocation_logement_dot_type_aide = TypeAidesPersonnelleLogement(TypeAidesPersonnelleLogement_Code.AllocationLogementSociale, Unit()) temp_calcul_allocation_logement_dot_type_aide_1 = temp_calcul_allocation_logement_dot_type_aide @@ -21886,15 +32525,15 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides "Prologue : aides au logement"])) coefficents_enfants_garde_alternee_pris_en_compte_3 = temp_coefficents_enfants_garde_alternee_pris_en_compte_5 try: - match_arg_556 = eligibilite_allocation_logement_dot_eligibilite_l841_2 - if match_arg_556.code == TypeEligibiliteAllocationLogement_Code.PasEligible: - _ = match_arg_556.value + match_arg_572 = eligibilite_allocation_logement_dot_eligibilite_l841_2 + if match_arg_572.code == TypeEligibiliteAllocationLogement_Code.PasEligible: + _ = match_arg_572.value temp_eligibilite_2 = False - elif match_arg_556.code == TypeEligibiliteAllocationLogement_Code.AllocationLogementFamiliale: - _ = match_arg_556.value + elif match_arg_572.code == TypeEligibiliteAllocationLogement_Code.AllocationLogementFamiliale: + _ = match_arg_572.value temp_eligibilite_2 = True - elif match_arg_556.code == TypeEligibiliteAllocationLogement_Code.AllocationLogementSociale: - _ = match_arg_556.value + elif match_arg_572.code == TypeEligibiliteAllocationLogement_Code.AllocationLogementSociale: + _ = match_arg_572.value temp_eligibilite_2 = True temp_eligibilite_3 = (eligibilite_aide_personnalisee_logement_dot_eligibilite or temp_eligibilite_2) @@ -21908,39 +32547,39 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides "Prologue : aides au logement"])) eligibilite_2 = temp_eligibilite_3 try: - def temp_traitement_aide_finale_4(param_44:Money): + def temp_traitement_aide_finale_4(param_60:Money): try: if not eligibilite_2: - return param_44 + return param_60 else: - match_arg_557 = eligibilite_allocation_logement_dot_eligibilite_l841_2 - if match_arg_557.code == TypeEligibiliteAllocationLogement_Code.PasEligible: - _ = match_arg_557.value + match_arg_573 = eligibilite_allocation_logement_dot_eligibilite_l841_2 + if match_arg_573.code == TypeEligibiliteAllocationLogement_Code.PasEligible: + _ = match_arg_573.value temp_traitement_aide_finale_5 = True - elif match_arg_557.code == TypeEligibiliteAllocationLogement_Code.AllocationLogementFamiliale: - _ = match_arg_557.value + elif match_arg_573.code == TypeEligibiliteAllocationLogement_Code.AllocationLogementFamiliale: + _ = match_arg_573.value temp_traitement_aide_finale_5 = False - elif match_arg_557.code == TypeEligibiliteAllocationLogement_Code.AllocationLogementSociale: - _ = match_arg_557.value + elif match_arg_573.code == TypeEligibiliteAllocationLogement_Code.AllocationLogementSociale: + _ = match_arg_573.value temp_traitement_aide_finale_5 = False if (eligibilite_aide_personnalisee_logement_dot_eligibilite and not temp_traitement_aide_finale_5): if (calcul_aide_personnalisee_logement_dot_traitement_aide_finale( - param_44) > + param_60) > calcul_allocation_logement_dot_traitement_aide_finale( - param_44)): + param_60)): return calcul_aide_personnalisee_logement_dot_traitement_aide_finale( - param_44) + param_60) else: return calcul_allocation_logement_dot_traitement_aide_finale( - param_44) + param_60) else: if eligibilite_aide_personnalisee_logement_dot_eligibilite: return calcul_aide_personnalisee_logement_dot_traitement_aide_finale( - param_44) + param_60) else: return calcul_allocation_logement_dot_traitement_aide_finale( - param_44) + param_60) except EmptyError: raise NoValueProvided(SourcePosition(filename="examples/aides_logement/prologue.catala_fr", start_line=1054, @@ -21962,15 +32601,15 @@ def calculette_aides_au_logement(calculette_aides_au_logement_in:CalculetteAides if not eligibilite_2: temp_aide_finale_formule_9 = money_of_cents_string("0") else: - match_arg_558 = eligibilite_allocation_logement_dot_eligibilite_l841_2 - if match_arg_558.code == TypeEligibiliteAllocationLogement_Code.PasEligible: - _ = match_arg_558.value + match_arg_574 = eligibilite_allocation_logement_dot_eligibilite_l841_2 + if match_arg_574.code == TypeEligibiliteAllocationLogement_Code.PasEligible: + _ = match_arg_574.value temp_aide_finale_formule_10 = True - elif match_arg_558.code == TypeEligibiliteAllocationLogement_Code.AllocationLogementFamiliale: - _ = match_arg_558.value + elif match_arg_574.code == TypeEligibiliteAllocationLogement_Code.AllocationLogementFamiliale: + _ = match_arg_574.value temp_aide_finale_formule_10 = False - elif match_arg_558.code == TypeEligibiliteAllocationLogement_Code.AllocationLogementSociale: - _ = match_arg_558.value + elif match_arg_574.code == TypeEligibiliteAllocationLogement_Code.AllocationLogementSociale: + _ = match_arg_574.value temp_aide_finale_formule_10 = False if (eligibilite_aide_personnalisee_logement_dot_eligibilite and not temp_aide_finale_formule_10): @@ -22007,18 +32646,18 @@ def calculette_aides_au_logement_garde_alternee(calculette_aides_au_logement_gar ressources_menage_prises_en_compte_1 = calculette_aides_au_logement_garde_alternee_in.ressources_menage_prises_en_compte_in try: def temp_menage_sans_enfants_garde_alternee(personne_a_charge_10:PersonneACharge): - match_arg_559 = personne_a_charge_10 - if match_arg_559.code == PersonneACharge_Code.EnfantACharge: - enfant_8 = match_arg_559.value - match_arg_560 = enfant_8.situation_garde_alternee - if match_arg_560.code == SituationGardeAlternee_Code.PasDeGardeAlternee: - _ = match_arg_560.value + match_arg_575 = personne_a_charge_10 + if match_arg_575.code == PersonneACharge_Code.EnfantACharge: + enfant_8 = match_arg_575.value + match_arg_576 = enfant_8.situation_garde_alternee + if match_arg_576.code == SituationGardeAlternee_Code.PasDeGardeAlternee: + _ = match_arg_576.value return True - elif match_arg_560.code == SituationGardeAlternee_Code.GardeAlterneeCoefficientPriseEnCharge: - _ = match_arg_560.value + elif match_arg_576.code == SituationGardeAlternee_Code.GardeAlterneeCoefficientPriseEnCharge: + _ = match_arg_576.value return False - elif match_arg_559.code == PersonneACharge_Code.AutrePersonneACharge: - _ = match_arg_559.value + elif match_arg_575.code == PersonneACharge_Code.AutrePersonneACharge: + _ = match_arg_575.value return True temp_menage_sans_enfants_garde_alternee_1 = Menage(prestations_recues = menage_5.prestations_recues, logement = menage_5.logement, diff --git a/french_law/python/src/allocations_familiales.py b/french_law/python/src/allocations_familiales.py index fdbe5703..5bbcd8eb 100644 --- a/french_law/python/src/allocations_familiales.py +++ b/french_law/python/src/allocations_familiales.py @@ -551,16 +551,70 @@ def smic(smic_in:SmicIn): def temp_brut_horaire_1(_:Unit): return False def temp_brut_horaire_2(_:Unit): - if ((date_courante >= date_of_numbers(2022,5,1)) and + if ((date_courante >= date_of_numbers(2023,1,1)) and + ((date_courante <= date_of_numbers(2023,12,31)) and + (residence == Collectivite(Collectivite_Code.Mayotte, + Unit())))): + return money_of_cents_string("851") + else: + raise EmptyError + def temp_brut_horaire_3(_:Unit): + if ((date_courante >= date_of_numbers(2023,1,1)) and + ((date_courante <= date_of_numbers(2023,12,31)) and + ((residence == Collectivite(Collectivite_Code.Metropole, + Unit())) or ((residence == + Collectivite(Collectivite_Code.Guadeloupe, Unit())) or + ((residence == Collectivite(Collectivite_Code.Guyane, + Unit())) or ((residence == + Collectivite(Collectivite_Code.Martinique, Unit())) or + ((residence == Collectivite(Collectivite_Code.LaReunion, + Unit())) or ((residence == + Collectivite(Collectivite_Code.SaintBarthelemy, Unit())) or + ((residence == Collectivite(Collectivite_Code.SaintMartin, + Unit())) or (residence == + Collectivite(Collectivite_Code.SaintPierreEtMiquelon, + Unit()))))))))))): + return money_of_cents_string("1127") + else: + raise EmptyError + def temp_brut_horaire_4(_:Unit): + if ((date_courante >= date_of_numbers(2022,8,1)) and ((date_courante <= date_of_numbers(2022,12,31)) and (residence == Collectivite(Collectivite_Code.Mayotte, Unit())))): + return money_of_cents_string("835") + else: + raise EmptyError + def temp_brut_horaire_5(_:Unit): + if ((date_courante >= date_of_numbers(2022,8,1)) and + ((date_courante <= date_of_numbers(2022,12,31)) and + ((residence == Collectivite(Collectivite_Code.Metropole, + Unit())) or ((residence == + Collectivite(Collectivite_Code.Guadeloupe, Unit())) or + ((residence == Collectivite(Collectivite_Code.Guyane, + Unit())) or ((residence == + Collectivite(Collectivite_Code.Martinique, Unit())) or + ((residence == Collectivite(Collectivite_Code.LaReunion, + Unit())) or ((residence == + Collectivite(Collectivite_Code.SaintBarthelemy, Unit())) or + ((residence == Collectivite(Collectivite_Code.SaintMartin, + Unit())) or (residence == + Collectivite(Collectivite_Code.SaintPierreEtMiquelon, + Unit()))))))))))): + return money_of_cents_string("1107") + else: + raise EmptyError + def temp_brut_horaire_6(_:Unit): + if ((date_courante >= date_of_numbers(2022,5,1)) and + ((date_courante <= date_of_numbers(2022,7,31)) and + (residence == Collectivite(Collectivite_Code.Mayotte, + Unit())))): return money_of_cents_string("819") else: raise EmptyError - def temp_brut_horaire_3(_:Unit): + def temp_brut_horaire_7(_:Unit): if ((date_courante >= date_of_numbers(2022,5,1)) and - ((date_courante <= date_of_numbers(2022,12,31)) and + ((date_courante <= date_of_numbers(2022,7,31)) and ((residence == Collectivite(Collectivite_Code.Metropole, Unit())) or ((residence == Collectivite(Collectivite_Code.Guadeloupe, Unit())) or @@ -577,7 +631,7 @@ def smic(smic_in:SmicIn): return money_of_cents_string("1085") else: raise EmptyError - def temp_brut_horaire_4(_:Unit): + def temp_brut_horaire_8(_:Unit): if ((date_courante >= date_of_numbers(2022,1,1)) and ((date_courante <= date_of_numbers(2022,4,30)) and (residence == Collectivite(Collectivite_Code.Mayotte, @@ -585,7 +639,7 @@ def smic(smic_in:SmicIn): return money_of_cents_string("798") else: raise EmptyError - def temp_brut_horaire_5(_:Unit): + def temp_brut_horaire_9(_:Unit): if ((date_courante >= date_of_numbers(2022,1,1)) and ((date_courante <= date_of_numbers(2022,4,30)) and ((residence == Collectivite(Collectivite_Code.Metropole, @@ -604,7 +658,7 @@ def smic(smic_in:SmicIn): return money_of_cents_string("1057") else: raise EmptyError - def temp_brut_horaire_6(_:Unit): + def temp_brut_horaire_10(_:Unit): if ((date_courante >= date_of_numbers(2021,1,1)) and ((date_courante <= date_of_numbers(2021,12,31)) and (residence == Collectivite(Collectivite_Code.Mayotte, @@ -612,7 +666,7 @@ def smic(smic_in:SmicIn): return money_of_cents_string("774") else: raise EmptyError - def temp_brut_horaire_7(_:Unit): + def temp_brut_horaire_11(_:Unit): if ((date_courante >= date_of_numbers(2021,1,1)) and ((date_courante <= date_of_numbers(2021,12,31)) and ((residence == Collectivite(Collectivite_Code.Metropole, @@ -631,7 +685,7 @@ def smic(smic_in:SmicIn): return money_of_cents_string("1025") else: raise EmptyError - def temp_brut_horaire_8(_:Unit): + def temp_brut_horaire_12(_:Unit): if ((date_courante >= date_of_numbers(2020,1,1)) and ((date_courante <= date_of_numbers(2020,12,31)) and (residence == Collectivite(Collectivite_Code.Mayotte, @@ -639,7 +693,7 @@ def smic(smic_in:SmicIn): return money_of_cents_string("766") else: raise EmptyError - def temp_brut_horaire_9(_:Unit): + def temp_brut_horaire_13(_:Unit): if ((date_courante >= date_of_numbers(2020,1,1)) and ((date_courante <= date_of_numbers(2020,12,31)) and ((residence == Collectivite(Collectivite_Code.Metropole, @@ -658,7 +712,7 @@ def smic(smic_in:SmicIn): return money_of_cents_string("1015") else: raise EmptyError - def temp_brut_horaire_10(_:Unit): + def temp_brut_horaire_14(_:Unit): if ((date_courante >= date_of_numbers(2019,1,1)) and ((date_courante <= date_of_numbers(2019,12,31)) and (residence == Collectivite(Collectivite_Code.Mayotte, @@ -666,7 +720,7 @@ def smic(smic_in:SmicIn): return money_of_cents_string("757") else: raise EmptyError - def temp_brut_horaire_11(_:Unit): + def temp_brut_horaire_15(_:Unit): if ((date_courante >= date_of_numbers(2019,1,1)) and ((date_courante <= date_of_numbers(2019,12,31)) and ((residence == Collectivite(Collectivite_Code.Metropole, @@ -685,11 +739,15 @@ def smic(smic_in:SmicIn): return money_of_cents_string("1003") else: raise EmptyError - temp_brut_horaire_12 = handle_default(SourcePosition(filename="examples/allocations_familiales/../smic/smic.catala_fr", + temp_brut_horaire_16 = handle_default(SourcePosition(filename="examples/allocations_familiales/../smic/smic.catala_fr", start_line=11, start_column=12, end_line=11, end_column=24, law_headings=["Prologue", - "Montant du salaire minimum de croissance"]), [temp_brut_horaire_11, + "Montant du salaire minimum de croissance"]), [temp_brut_horaire_15, + temp_brut_horaire_14, + temp_brut_horaire_13, + temp_brut_horaire_12, + temp_brut_horaire_11, temp_brut_horaire_10, temp_brut_horaire_9, temp_brut_horaire_8, @@ -702,13 +760,13 @@ def smic(smic_in:SmicIn): temp_brut_horaire_1, temp_brut_horaire) except EmptyError: - temp_brut_horaire_12 = dead_value + temp_brut_horaire_16 = dead_value raise NoValueProvided(SourcePosition(filename="examples/allocations_familiales/../smic/smic.catala_fr", start_line=11, start_column=12, end_line=11, end_column=24, law_headings=["Prologue", "Montant du salaire minimum de croissance"])) - brut_horaire = temp_brut_horaire_12 + brut_horaire = temp_brut_horaire_16 return Smic(brut_horaire = brut_horaire) def base_mensuelle_allocations_familiales(base_mensuelle_allocations_familiales_in:BaseMensuelleAllocationsFamilialesIn): @@ -1374,8 +1432,8 @@ def allocations_familiales(allocations_familiales_in:AllocationsFamilialesIn): except EmptyError: temp_enfant_le_plus_age_dot_enfants = dead_value raise NoValueProvided(SourcePosition(filename="examples/allocations_familiales/epilogue.catala_fr", - start_line=32, start_column=14, - end_line=32, end_column=40, + start_line=33, start_column=14, + end_line=33, end_column=40, law_headings=["Règles diverses", "Épilogue"])) enfant_le_plus_age_dot_enfants = temp_enfant_le_plus_age_dot_enfants @@ -2996,8 +3054,8 @@ def interface_allocations_familiales(interface_allocations_familiales_in:Interfa except EmptyError: temp_enfants_a_charge_2 = dead_value raise NoValueProvided(SourcePosition(filename="examples/allocations_familiales/epilogue.catala_fr", - start_line=75, start_column=11, - end_line=75, end_column=27, + start_line=76, start_column=11, + end_line=76, end_column=27, law_headings=["Interface du programme", "Épilogue"])) enfants_a_charge_1 = temp_enfants_a_charge_2 @@ -3014,8 +3072,8 @@ def interface_allocations_familiales(interface_allocations_familiales_in:Interfa except EmptyError: temp_allocations_familiales_dot_personne_charge_effective_permanente_est_parent_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/allocations_familiales/epilogue.catala_fr", - start_line=91, start_column=5, - end_line=91, end_column=75, + start_line=92, start_column=5, + end_line=92, end_column=75, law_headings=["Interface du programme", "Épilogue"])) allocations_familiales_dot_personne_charge_effective_permanente_est_parent = temp_allocations_familiales_dot_personne_charge_effective_permanente_est_parent_1 @@ -3032,8 +3090,8 @@ def interface_allocations_familiales(interface_allocations_familiales_in:Interfa except EmptyError: temp_allocations_familiales_dot_personne_charge_effective_permanente_remplit_titre__i_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/allocations_familiales/epilogue.catala_fr", - start_line=95, start_column=5, - end_line=95, end_column=80, + start_line=96, start_column=5, + end_line=96, end_column=80, law_headings=["Interface du programme", "Épilogue"])) allocations_familiales_dot_personne_charge_effective_permanente_remplit_titre__i = temp_allocations_familiales_dot_personne_charge_effective_permanente_remplit_titre__i_1 @@ -3042,8 +3100,8 @@ def interface_allocations_familiales(interface_allocations_familiales_in:Interfa except EmptyError: temp_allocations_familiales_dot_ressources_menage = dead_value raise NoValueProvided(SourcePosition(filename="examples/allocations_familiales/epilogue.catala_fr", - start_line=87, start_column=14, - end_line=87, end_column=54, + start_line=88, start_column=14, + end_line=88, end_column=54, law_headings=["Interface du programme", "Épilogue"])) allocations_familiales_dot_ressources_menage = temp_allocations_familiales_dot_ressources_menage @@ -3052,8 +3110,8 @@ def interface_allocations_familiales(interface_allocations_familiales_in:Interfa except EmptyError: temp_allocations_familiales_dot_residence = dead_value raise NoValueProvided(SourcePosition(filename="examples/allocations_familiales/epilogue.catala_fr", - start_line=88, start_column=14, - end_line=88, end_column=46, + start_line=89, start_column=14, + end_line=89, end_column=46, law_headings=["Interface du programme", "Épilogue"])) allocations_familiales_dot_residence = temp_allocations_familiales_dot_residence @@ -3062,8 +3120,8 @@ def interface_allocations_familiales(interface_allocations_familiales_in:Interfa except EmptyError: temp_allocations_familiales_dot_date_courante = dead_value raise NoValueProvided(SourcePosition(filename="examples/allocations_familiales/epilogue.catala_fr", - start_line=85, start_column=14, - end_line=85, end_column=50, + start_line=86, start_column=14, + end_line=86, end_column=50, law_headings=["Interface du programme", "Épilogue"])) allocations_familiales_dot_date_courante = temp_allocations_familiales_dot_date_courante @@ -3072,8 +3130,8 @@ def interface_allocations_familiales(interface_allocations_familiales_in:Interfa except EmptyError: temp_allocations_familiales_dot_enfants_a_charge = dead_value raise NoValueProvided(SourcePosition(filename="examples/allocations_familiales/epilogue.catala_fr", - start_line=86, start_column=14, - end_line=86, end_column=53, + start_line=87, start_column=14, + end_line=87, end_column=53, law_headings=["Interface du programme", "Épilogue"])) allocations_familiales_dot_enfants_a_charge = temp_allocations_familiales_dot_enfants_a_charge @@ -3090,8 +3148,8 @@ def interface_allocations_familiales(interface_allocations_familiales_in:Interfa except EmptyError: temp_allocations_familiales_dot_avait_enfant_a_charge_avant_1er_janvier_2012_1 = dead_value raise NoValueProvided(SourcePosition(filename="examples/allocations_familiales/epilogue.catala_fr", - start_line=99, start_column=5, - end_line=99, end_column=72, + start_line=100, start_column=5, + end_line=100, end_column=72, law_headings=["Interface du programme", "Épilogue"])) allocations_familiales_dot_avait_enfant_a_charge_avant_1er_janvier_2012 = temp_allocations_familiales_dot_avait_enfant_a_charge_avant_1er_janvier_2012_1 @@ -3108,8 +3166,8 @@ def interface_allocations_familiales(interface_allocations_familiales_in:Interfa except EmptyError: temp_i_montant_verse = dead_value raise NoValueProvided(SourcePosition(filename="examples/allocations_familiales/epilogue.catala_fr", - start_line=79, start_column=12, - end_line=79, end_column=27, + start_line=80, start_column=12, + end_line=80, end_column=27, law_headings=["Interface du programme", "Épilogue"])) i_montant_verse = temp_i_montant_verse From d66cd1e29c268740f6aa88c6cf80876e6a27c969 Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Wed, 8 Feb 2023 16:55:07 +0100 Subject: [PATCH 05/10] Toplevel defs: tests & fixes --- compiler/dcalc/from_scopelang.ml | 2 + compiler/dcalc/interpreter.ml | 2 +- compiler/desugared/disambiguate.ml | 14 +++- compiler/scopelang/print.ml | 23 ++++++ compiler/shared_ast/scope.ml | 2 +- compiler/surface/parser.messages | 22 +++--- compiler/surface/parser.mly | 1 + .../bad/toplevel_defs.catala_en | 24 ++++++ .../good/toplevel_defs.catala_en | 74 +++++++++++++++++++ 9 files changed, 151 insertions(+), 13 deletions(-) create mode 100644 tests/test_name_resolution/bad/toplevel_defs.catala_en create mode 100644 tests/test_name_resolution/good/toplevel_defs.catala_en diff --git a/compiler/dcalc/from_scopelang.ml b/compiler/dcalc/from_scopelang.ml index 9db3d3aa..50d408d9 100644 --- a/compiler/dcalc/from_scopelang.ml +++ b/compiler/dcalc/from_scopelang.ml @@ -989,6 +989,8 @@ let translate_scope_decl (input_destructurings rules_with_return_expr)), new_struct_ctx ) +(* TODO: rename "scope" here to avoid confusion, since it now includes toplevel + defs and scopes *) let translate_program (prgm : 'm Scopelang.Ast.program) : 'm Ast.program = let scope_dependencies = Scopelang.Dependency.build_program_dep_graph prgm in Scopelang.Dependency.check_for_cycle_in_scope scope_dependencies; diff --git a/compiler/dcalc/interpreter.ml b/compiler/dcalc/interpreter.ml index 22d9a7ed..4040fef1 100644 --- a/compiler/dcalc/interpreter.ml +++ b/compiler/dcalc/interpreter.ml @@ -314,7 +314,7 @@ and evaluate_expr (ctx : decl_ctx) (e : 'm Ast.expr) : 'm Ast.expr = | EVar _ -> Errors.raise_spanned_error (Expr.pos e) "free variable found at evaluation (should not happen if term was \ - well-typed" + well-typed)" | EApp { f = e1; args } -> ( let e1 = evaluate_expr ctx e1 in let args = List.map (evaluate_expr ctx) args in diff --git a/compiler/desugared/disambiguate.ml b/compiler/desugared/disambiguate.ml index 7392edc7..bb298803 100644 --- a/compiler/desugared/disambiguate.ml +++ b/compiler/desugared/disambiguate.ml @@ -58,6 +58,16 @@ let scope ctx env scope = { scope with scope_defs; scope_assertions } let program prg = + let env = + TopdefName.Map.fold + (fun name (_e, ty) env -> Typing.Env.add_global_var name ty env) + prg.program_globals Typing.Env.empty + in + let program_globals = + TopdefName.Map.map + (fun (e, ty) -> Expr.unbox (expr prg.program_ctx env (Expr.box e)), ty) + prg.program_globals + in let env = ScopeName.Map.fold (fun scope_name scope env -> @@ -70,9 +80,9 @@ let program prg = scope.scope_defs ScopeVar.Map.empty in Typing.Env.add_scope scope_name ~vars env) - prg.program_scopes Typing.Env.empty + prg.program_scopes env in let program_scopes = ScopeName.Map.map (scope prg.program_ctx env) prg.program_scopes in - { prg with program_scopes } + { prg with program_globals; program_scopes } diff --git a/compiler/scopelang/print.ml b/compiler/scopelang/print.ml index ddc5b157..66b57607 100644 --- a/compiler/scopelang/print.ml +++ b/compiler/scopelang/print.ml @@ -98,6 +98,24 @@ let scope ?(debug = false) ctx fmt (name, decl) = SubScopeName.format_t subscope_name Print.punctuation "]")) decl.scope_decl_rules +let print_topdef ctx ppf name (e, ty) = + Format.pp_open_vbox ppf 2; + let () = + Format.pp_open_hovbox ppf 2; + Print.keyword ppf "let"; + Format.pp_print_space ppf (); + TopdefName.format_t ppf name; + Print.punctuation ppf ":"; + Format.pp_print_space ppf (); + Print.typ ctx ppf ty; + Format.pp_print_space ppf (); + Print.punctuation ppf "="; + Format.pp_close_box ppf () + in + Format.pp_print_cut ppf (); + Print.expr ctx ppf e; + Format.pp_close_box ppf () + let program ?(debug : bool = false) (fmt : Format.formatter) (p : 'm program) : unit = let ctx = p.program_ctx in @@ -116,6 +134,11 @@ let program ?(debug : bool = false) (fmt : Format.formatter) (p : 'm program) : enum ctx fmt n e; pp_sep fmt ()) ctx.ctx_enums; + TopdefName.Map.iter + (fun name def -> + print_topdef ctx fmt name def; + pp_sep fmt ()) + p.program_globals; Format.pp_print_list ~pp_sep (scope ~debug ctx) fmt (ScopeName.Map.bindings p.program_scopes); Format.pp_close_box fmt () diff --git a/compiler/shared_ast/scope.ml b/compiler/shared_ast/scope.ml index 2ccc9e01..5d4b49d9 100644 --- a/compiler/shared_ast/scope.ml +++ b/compiler/shared_ast/scope.ml @@ -211,7 +211,7 @@ let rec unfold typ, expr, pos, is_main | Topdef (name, typ, expr) -> let pos = Marked.get_mark (TopdefName.get_info name) in - typ, Expr.box expr, pos, false + typ, Expr.rebox expr, pos, false in let main_scope = if is_main then ScopeVar var else main_scope in let next = unfold ctx next mark main_scope in diff --git a/compiler/surface/parser.messages b/compiler/surface/parser.messages index e1187a53..16dbec5b 100644 --- a/compiler/surface/parser.messages +++ b/compiler/surface/parser.messages @@ -259,6 +259,7 @@ source_file: BEGIN_CODE DECLARATION YEAR ## code_item -> DECLARATION . ENUM UIDENT COLON list(addpos(enum_decl_line)) [ SCOPE END_CODE DECLARATION ] ## code_item -> DECLARATION . lident CONTENT typ DEPENDS separated_nonempty_list(COMMA,var_content) DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] ## code_item -> DECLARATION . lident CONTENT typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] +## code_item -> DECLARATION . lident CONTENT typ DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] ## ## The known suffix of the stack is as follows: ## DECLARATION @@ -973,7 +974,7 @@ expected the name of the scope being used source_file: BEGIN_CODE YEAR ## -## Ends in an error in state: 368. +## Ends in an error in state: 370. ## ## source_file_item -> BEGIN_CODE . code END_CODE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] ## @@ -1034,8 +1035,8 @@ source_file: BEGIN_METADATA LAW_TEXT LAW_HEADING ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 1, spurious reduction of production nonempty_list(LAW_TEXT) -> LAW_TEXT -## In state 357, spurious reduction of production law_text -> nonempty_list(LAW_TEXT) -## In state 358, spurious reduction of production option(law_text) -> law_text +## In state 359, spurious reduction of production law_text -> nonempty_list(LAW_TEXT) +## In state 360, spurious reduction of production option(law_text) -> law_text ## expected some law text or code block @@ -3902,6 +3903,7 @@ source_file: BEGIN_CODE DECLARATION LIDENT YEAR ## ## code_item -> DECLARATION lident . CONTENT typ DEPENDS separated_nonempty_list(COMMA,var_content) DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] ## code_item -> DECLARATION lident . CONTENT typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] +## code_item -> DECLARATION lident . CONTENT typ DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] ## ## The known suffix of the stack is as follows: ## DECLARATION lident @@ -3915,6 +3917,7 @@ source_file: BEGIN_CODE DECLARATION LIDENT CONTENT YEAR ## ## code_item -> DECLARATION lident CONTENT . typ DEPENDS separated_nonempty_list(COMMA,var_content) DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] ## code_item -> DECLARATION lident CONTENT . typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] +## code_item -> DECLARATION lident CONTENT . typ DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] ## ## The known suffix of the stack is as follows: ## DECLARATION lident CONTENT @@ -3928,6 +3931,7 @@ source_file: BEGIN_CODE DECLARATION LIDENT CONTENT BOOLEAN YEAR ## ## code_item -> DECLARATION lident CONTENT typ . DEPENDS separated_nonempty_list(COMMA,var_content) DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] ## code_item -> DECLARATION lident CONTENT typ . DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] +## code_item -> DECLARATION lident CONTENT typ . DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] ## ## The known suffix of the stack is as follows: ## DECLARATION lident CONTENT typ @@ -4157,7 +4161,7 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_DIRECTIVE YEAR ## -## Ends in an error in state: 359. +## Ends in an error in state: 361. ## ## source_file_item -> BEGIN_DIRECTIVE . LAW_INCLUDE COLON nonempty_list(DIRECTIVE_ARG) option(AT_PAGE) END_DIRECTIVE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] ## @@ -4169,7 +4173,7 @@ expected a directive, e.g. 'Include: ' source_file: BEGIN_DIRECTIVE LAW_INCLUDE YEAR ## -## Ends in an error in state: 360. +## Ends in an error in state: 362. ## ## source_file_item -> BEGIN_DIRECTIVE LAW_INCLUDE . COLON nonempty_list(DIRECTIVE_ARG) option(AT_PAGE) END_DIRECTIVE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] ## @@ -4181,7 +4185,7 @@ expected ':', then a file name or 'JORFTEXTNNNNNNNNNNNN' source_file: BEGIN_DIRECTIVE LAW_INCLUDE COLON YEAR ## -## Ends in an error in state: 361. +## Ends in an error in state: 363. ## ## source_file_item -> BEGIN_DIRECTIVE LAW_INCLUDE COLON . nonempty_list(DIRECTIVE_ARG) option(AT_PAGE) END_DIRECTIVE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] ## @@ -4193,7 +4197,7 @@ expected a file name or 'JORFTEXTNNNNNNNNNNNN' source_file: BEGIN_DIRECTIVE LAW_INCLUDE COLON DIRECTIVE_ARG YEAR ## -## Ends in an error in state: 362. +## Ends in an error in state: 364. ## ## nonempty_list(DIRECTIVE_ARG) -> DIRECTIVE_ARG . [ END_DIRECTIVE AT_PAGE ] ## nonempty_list(DIRECTIVE_ARG) -> DIRECTIVE_ARG . nonempty_list(DIRECTIVE_ARG) [ END_DIRECTIVE AT_PAGE ] @@ -4206,7 +4210,7 @@ expected a page specification in the form '@p.', or a newline source_file: BEGIN_DIRECTIVE LAW_INCLUDE COLON DIRECTIVE_ARG AT_PAGE YEAR ## -## Ends in an error in state: 366. +## Ends in an error in state: 368. ## ## source_file_item -> BEGIN_DIRECTIVE LAW_INCLUDE COLON nonempty_list(DIRECTIVE_ARG) option(AT_PAGE) . END_DIRECTIVE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] ## @@ -4218,7 +4222,7 @@ expected a newline source_file: LAW_HEADING YEAR ## -## Ends in an error in state: 371. +## Ends in an error in state: 373. ## ## source_file -> source_file_item . source_file [ # ] ## diff --git a/compiler/surface/parser.mly b/compiler/surface/parser.mly index 0645bb73..c7af9031 100644 --- a/compiler/surface/parser.mly +++ b/compiler/surface/parser.mly @@ -604,6 +604,7 @@ let var_content == let depends_stance == | DEPENDS ; args = separated_nonempty_list(COMMA,var_content) ; <> | DEPENDS ; LPAREN ; args = separated_nonempty_list(COMMA,var_content) ; RPAREN ; <> +| { [] } let code_item := | SCOPE ; c = uident ; diff --git a/tests/test_name_resolution/bad/toplevel_defs.catala_en b/tests/test_name_resolution/bad/toplevel_defs.catala_en new file mode 100644 index 00000000..49c526af --- /dev/null +++ b/tests/test_name_resolution/bad/toplevel_defs.catala_en @@ -0,0 +1,24 @@ +## Scope calls are not allowed outside of scopes + +```catala +declaration scope S1: + output a content decimal + +scope S1: + definition a equals 44.2 + +declaration glob5 content decimal + equals (output of S1).a +``` + +```catala-test-inline +$ catala typecheck +[ERROR] Scope calls are not allowed outside of a scope + +┌─⯈ tests/test_name_resolution/bad/toplevel_defs.catala_en:11.10-22: +└──┐ +11 │ equals (output of S1).a + │ ‾‾‾‾‾‾‾‾‾‾‾‾ + └─ Scope calls are not allowed outside of scopes +#return code 255# +``` diff --git a/tests/test_name_resolution/good/toplevel_defs.catala_en b/tests/test_name_resolution/good/toplevel_defs.catala_en new file mode 100644 index 00000000..ee6cb079 --- /dev/null +++ b/tests/test_name_resolution/good/toplevel_defs.catala_en @@ -0,0 +1,74 @@ +## Test basic toplevel values defs + +```catala +declaration glob1 content decimal equals 44.12 + +declaration scope S: + output a content decimal + output b content A + +declaration structure A: + data y content boolean + data z content decimal + +declaration glob2 content A equals + A { --y: glob1 >= 30. --z: 123. * 17. } + +scope S: + definition a equals glob1 * glob1 + definition b equals glob2 +``` + +```catala-test-inline +$ catala Interpret -s S +[RESULT] Computation successful! Results: +[RESULT] a = 1946.5744 +[RESULT] b = A { "y"= true; "z"= 2091. } +``` + +## Test toplevel function defs + +```catala +declaration glob3 content decimal + depends on x content money + equals decimal of x + 10. + +declaration scope S2: + output a content decimal + +scope S2: + definition a equals glob3 of $44 + 100. +``` + +```catala-test-inline +$ catala Interpret -s S2 +[RESULT] Computation successful! Results: +[RESULT] a = 154. +``` + +## Test function def with two args + +```catala +declaration glob4 content decimal + depends on x content money, y content decimal + equals decimal of x * y + 10. + +declaration scope S3: + output a content decimal + +#scope S3: +# definition a equals 50 + glob3 of ($44, 55.) +# TODO: no syntax yet +``` + +```catala-test-inline +$ catala Interpret -s S3 +[ERROR] This variable evaluated to an empty term (no rule that defined it applied in this situation) + +┌─⯈ tests/test_name_resolution/good/toplevel_defs.catala_en:57.9-10: +└──┐ +57 │ output a content decimal + │ ‾ + └─ Test function def with two args +#return code 255# +``` From 03f31b4923efba19c25f24e6aa455b22fa7f10be Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Thu, 9 Feb 2023 15:05:21 +0100 Subject: [PATCH 06/10] Cheat-sheet: small fixes --- doc/syntax/syntax.pdf | Bin 216913 -> 217820 bytes doc/syntax/syntax_en.tex | 7 ++++--- doc/syntax/syntax_fr.tex | 9 +++++---- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/doc/syntax/syntax.pdf b/doc/syntax/syntax.pdf index c4f9571e6522837b4871bf41f877e04450d513ab..853315936cbd506783f4cfa75887a87f0535024f 100644 GIT binary patch delta 38814 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�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�w901 zWl)@Jw=IeVclR{z?hxF9yE}B_bmNww!3n|L-Q5EOx8NEGuEE_chwOFtT5Esz&pvgk ztGeDXbxeC`C{#6A#DNfVkPHOu%EH0QE(nkU*_vs)X_$dslptUTfRmMr8<~bi)5g^v z^q)#(8f}oXiwy)U_}^xd&LA__SAl<&nd_^yh8q~50dfRzasoJb1vv!-xw!$H>>OPG zZ3uA|1gM(1gX{q^X3l2L%*@QlG?EZUFJ~JoYga+Q-=6?_3x-!mb}oRq7eK z1po+fFtY(8(*R^aV36}GYv7+8f4U(9akc{eq07O}`C0(IwX3V6ARC+ItIG0^iq*xE z6%2A^V|cAb8Vr<#I5>d7t}e(N>;RyRg)6`uWc3=D?N2C8FGmo70{{eB{)LsyT%Bz^ z0S4@>?Ccx>_CLSBzl>f>144hm_Fn&(E1Nlh0BrBYRdjTenf_xue;Y|iKs*5-Sa^8& z0W4g6JODlpegFqMHz&a7e+E>2E%z@%?Eg5+fh{2b4vxQw1Kk||o4os9;|0+F87~9i ze@0SO-q&_Hn|UF#zwR|B4-eo2 z$7}C^AWs0u^OY1ED;VPX>hju5S0BLZxgh^pDqbD{oA@8mUx*LDCiypdy)yutw3&sQ zE9h?-9~Xd4?r+5ZiZuR40goB+Ozy|ym zd`S`d0x$3Uf;ui99~nq{-b_n?P~1|`d4dT%X0OA{LA5W8{Gbx|7!-f zKfCT?0df8}t=C?;{{uN+qx_SU`&H=;a{epm|5$qqH)nt6*Sq+yxAFBR{u^7`yp{|C zd4epE7v~`sLP555LG5=n;v^m{JLBB3ztP}MrEC}6GdIyS2>?G#7@OQaex&?jyhC!M zP`2`N-}S%+-A{ulOzD5?;;(t7nl5aC&GyiUZMgU3Qc)>Hjwf;((RKi=f2MnL#`I!c zsqIMhE^~j)+y0mMbaRfUQpiKkk9W(5!O;}$y_WOp#r(a&?`iLSxquA(k|#T;zxhE4 zAy8_M#W0&=o7rk!@z83&YR5u1UJg0NnTQK=e3Vz+6CaP1DG77&x8uw-^U68D zb@k*pRa+pu4cAw3Qnug1j_;I_ZAV$|idRx3tzLiUDZlykZu;1?U_cxKclgyp@<zPT>MeL|{(d!dhLGpc9G8U?#!FOMLLg@@t+=(y8)cVo>JcJ~`O;$)}3b z>tHg07Y%rXy@{d>=F}Da6nfSUT7y{!Z2$B>8)vCB(N~VbmKhS>_KY^%3N=;~XN!MS zA-)$syzfn~{lI}1OGa^K(&Sndghat5Qxk;qgpZ!-W2m2ZzrkQ}e2|tzyQ~bJzBY!q z-&PTP@>r#;P7wP`{AERh0e*^(r(*>=)o3)R@FlGSN@4M20xl%Te;|D7sz0N@vxu0N ziBk1J{K)eX=3L%}r{$>~tiN7iQLc5khg_I&-s4M)xwxoIOwTU1jmBLNeLjCoER~+g zX;eCRk!yX=h6OM)tF}a;ILh;IkAL^C7^I5 zd=~wSTv1mrmepjiq%X>?UhaQ@{-o~1Zri2OGdjBtP>W!W=5&-?8%nZ(syP*t=MHUW z!D?LinP39$WdhiUP3W4>Z$Xrf_^98)ryF#z%Zvf~D=I zkGgt#Cp!Tw6?l}2#6`L~7=XyiFt)$7bF=D}%7`r-`mJ&I+J(+gfO>~8Z{{P?#s=`%vl4JSYra)QO7vi8CaHG zFef;J5!)5x^w(7V@IRkmC`_)FmWZGHhW|A)j9R|9fwNp!Vv|~EScWg}$~MVSWQeyf zx}U-%;u&4spfurA%#hjv!?M$JnRk23!6;2YFCdgDLv{1HCU<|CYfVb~jUf$GVq?^i zR#$ODN+8j_ZKbADc$*{r7Grk|8)`%hs|T(y5o{=xUTmnsw#wJRs%dI?|Aii3)}DR- z3-eMTOjXKqo3D63AN!3X=q(1a9znzY4$t!#pNXTz#sCKWd|z*X)4IKmZX?=>&U)JW zxsU<0Scbd6r%8W`POk9-iENudRAVUFH|R;T%|X`$sVY`oavDSmUkHYmO`P? zKRD>y>TjqiGonF{?{7c;p!1f^*HtZodEoH+SCI~HA1+IXdiRf?4Wj2*6KXlYjqAvw zBC{e+Is$*33Ig!<2Mf#!eK9;bCVv)d&y~`&JL3efwsAUJqX#(?e7d4Zti}b!QhDiy z-R4|=E8XOfVE7v@8jc0j;F~5;ppj)pL7%#GpS%@|c>z=i;Iie&#Xt5m5ShcAqZl?`Zsj7p|*7#@?*0jd}WAbPYb*Lw)>@z1A(^N zb{)N;g#=LF?qIlxvz#JO<(u@qm5JVg5MhhRZ`m^*LM=Ct9vqypOro=kM3J&qDv+Yi z%8GybjSPUy{VbzN&!)cALW)v(451INc#HpQNVg}_%4k>UodU~V2qLu1k{Gb}3o?^7 ze>9Y!RG(pzL#>yn)dNRs3pbk}bea#G-yQU=dqtRhhI6vh`FBz}5|mO)k+5YvVb@D< z<-MO{?K(b2RkIn7-mt^XeP+g7cMXO%7vg_Z6|LFK&Xv)8Hn8?8_&l&1TDs(<2J|o% zo&q8!E4>>nRhEv>1(M_BoJ&`uE0euTp9M56m=b@PTUb1cHq&?)=D12;pYqmu$ zr|^zd!=Ot@bOUx}|7XixQ9UK0m!|ITkCxm4LJIP;6hFwmG-YH)e%<|kw&6fIOI4CY-O`tUmOx0r*D$Ucg0-bv?J z<<=A@3}5Tt_PUJ_I{3v`u3$jgM}pe(AbmGu*z4^)%@;P~=S$S3-n^!CZdg|p1 z+;v#hF@37_R|hnfq(sx~d6O7>vf-cH`|5EW^<{SgMZW%Wn5}=^?!`isedlD|4I^Ij zu*V_GA460x*)ZxVYW@v+XO(mTKb7V`1oHw}9 zuK5u^>7!LLl0tu0p|J}=rM%-ES!1GqcOmG<2mRz}vu*YO+9uidPZMXMGB0j;H>DuD zxeN+T8pXF;F_OR^+&kyHg|3S_N|oenZJxA?}EqE3Li6;2b+VnIqOU& zIMHy(_YS+Ti78*4_nmLxq9tTLQ3m||`%juDjil+@@dFh*SkuhrdN}aPw=|U{GL8b- znJ$Y(_h*S0xz+gujmmR?^VydM&dw(Vqega9(JSfe`c2Ou(*zF%FgHhFe^a%~PS;3G z%i-cpZgPKS)Y|oj9PR5W-33`@=H=knaCUgBx>mfmCPcQJAf`A8J@;FNj$GYk=SvaM zw1}$TF-{yB(8}C!+Bx6S0vNkAu$W6Hktc^Wsw_Gkux7eLdob-iwBo{kEza`F8^{oQ zQZU#J9kT~xxz6?Z z@6*J}Z5~NQUb8B7BV^xIp7c{vXfc`V9TP6(Q0FY(Z1$eP={eZA8qvZAEK(`T)- z!JWt~LWE_xyiQT~DjF{c!2yGN27#(Q1Z#REb^Y#;xEXzQN^z7Oy&tgN-!HwAWwP2Gp z9QWsN0XprsIyW3kLH(&P%xDlP_7oRiOci9Up-Xf7y3{|r z+S5w0IWbO2=f|tuRR(}C83c2nJ~1^$CVJQd1+?u5W)l;M4ruN!v5HMvl>tt=jz)jV zQxuZR6i?UA+e${mAGJ*VtDBtwt5^&V)QF6Xdwg7mw4f{dffWov{B?=I?Pk9j`dN+T zmLcDPFE(Ms7_Dg=#QY=QQ}^#RQ4&%;TrXGIn;>(S^@!k zL~Up6t(yD??uZJO76)W114HIRKK_3NI)&_vUZ0hc=g}h6XE{GZ<3M5v0&5^IOXSbIg|CyzJe~QSNVT}kYREr zG^Di?Xf?DKNRPcm-kBEcM?}IHXx=hp>}vn&UE3>9_Aj205Uqa?1!TLhS1d zC()|}N;69)pkY>~;r&o9zi&!RlcWlvwl+OBYmIJm|J~}B+sK}z=`;_&y10Hx9%kHP zA=tpoT^!HovD9x6G|a#QDExTOk%li*~Djit*_b_vOD^@&W6f0KUSV{8EuZCCF_5b9}M zc>|N9gs1IWJRH+jwx2@1TBU!7r0K+U<4k#X zOl?S;&){7d7t9-0Ns%)Od$jgNb-^C4RS7o&%<&2ly5L0~N1jNRH|$drcXd+Zk$E_Y z&Z=@^gC+*QS)~Il_E!ka-FS)OrSrrM+{eZ*c4*y-}AZ z$I%mYBQAQnaQwaA#s(k6Co+PgYQ{^%K2O8vl;W^Mal>@Kx*ay7si-64DC53Lga2$z z;+>VZG?%WHNZE@-W5yQ3*rXbwwm*6rs9;igBwW4ItrE9~>ojND4N8&y!v6aOs5<8#H2`Lz(`O=nzznR+2zO7VB@@pd0Y*0;fCU;3M) z=LZy{=L(x{<}H7Jn(m?WeceGHI{s3gcqdv&c0(~>!|Soi*+$g{9&z5Fw#9%T4P8c% zM%Mb@LE)>a@x=t_n+6Yb#I_DK9BqA{=I`O?>}`+~&h-@Abw6e;Wj1>*d{!79+TG9~ zPMB4mvWta?Rtvw&eyO%J&q|Lc>-DcDgrg();yP1i^6Y;|tIpFCt|32f3`iT_o^5u% zO4RM#b^AdSk@sa4EhBC#Gmjw)dmw?Mf?1-N?*v0Os8(f8Y7j#jurqG=ZG6PAepDrR zsQ5yU=(E_JH8>?vkny~Dw;@7IO*Ad>Q=_Uhp_ISIrD1jCL+JrvWg%xfyRasxTC$$- z;WGGA$y$F+Ek1kNQ)wbORmy$AX#aCt&X1dis_CNg4f!(0R?W>ks%6T{Y3n7D;2-BU zIwm|g-%}Hb3C$G7G)u~eFR6b}g+hh4vc5Su0R#*rpP}f%n!R!O<=-m|6Ek6Xp|eTV zhmRAz?>b;h>unz_x2`KjjEi*4VDe+Q7?oFKJP-D1JO0~Y(C@^FlVJW@qPgbqTut`uRp#_sh)K7jH1&f@`c~C z;ZrP%rHC^sf|kZA8uF73CafU7q-rg`9FE@cbSk%rF$e zE1G|~v96)o<(QHgjWWzK6|b~I7}OB8ZF#?$v>?c&fhyH3XvFlsP_v(h0JkU75--+J zJ6h22yH({i`_O4s=_VjSZo1CZ2f4QaBGqe$apCe?glTpdpS(|M;hBH=foIJp(SGCe zai9jX*lC_2Yxj+A&g#n0f#Cjx5O!Ev(-?osst*;Ccd`&rRCsUSSyuuhJ#RqOEe(ZY zGFxVV3(;Y)dYsgVZ*SiGiB<31^{jxFQ~cpRAxw0sM(9}>y8u&MyF`9PL#i6Bar8Mo ziXpM2v@KDrK|pJgE7bbBH%>3>L3fM|ZN3ywtD!OOJLqDGr(%V{na?fK?fr#uo9=&# z*~6WEAIbVx8te9dNTZ;gP$T*lilq0{Zrsma0HK za$89oPOGpk4mpF3Ln|kjL&w;5GEUy#v_+8x;^^S(W8$xdAKphFQf^7G)=~t25?Q#; z<4*tjbyzu@B(*;7mysPSpZG6KssMjSNHz0~YbEmyZyjkBT(yhg=9leyE7{)dL;9$C z3MB=>AVq30p8;caghFRKiDxByjg}CB>m%eGRWN4%z0uGvRc&~*e4%|(t?6Cx)lj#B zdU|rmq%IWAi*o~VZ>k!MdESsGsI!zBn9TObNRmy$gPWuCC0MAalK{M?TF-x|O#=5L zG~FXNVCar>I*uNafB;!1X<0MWrHHpARhRa`%vXZ+X-NNb6 z54amom|ll_;?9YtkR-;cW@gKud_)lcGV<0W)5@k!ghk7blICH`!&pEGTg_*1d$ZZ4#tUq~eH@5lNv7S>NypbC=)A5?3HkB{T zPOM?yS~y^<8nk}|R;o>(?A2}NauR&{*+r74 zz3TE5xyzM2bP!HDOLnT~x|d&3rpW`YyLVt`y^DQk*Mzjap3XutN|2)3FRw9MJb4rQ zNobJR=>SJ+VEerdjvCHb4089`^_A{5+=tR}Zs9(4Gvj|7v?X81v&7svEIE?0ao@MS zt2*LnxvY+Uyge&aE>b&*1f@=6`{o%a_!5ejrg6bP525k4t6?--tc*TgFR0DLaU&m# zv1UF&Nk7RRtbC}mmLMtrvP@0Z%Zn&giCz1f_zh||IfxtMyOZrSC&|bIc^9gGWRw!d z@PXl|UIBkRwzf+9Qxk4uHEiJ>z`vIW!_m;`Ll-W<)ti)U@|@4F?|XlfSU@S_ub>}( zCT0nCZi;L>6vz|Eg3?XvRzSMKD%;e-4~|jt`{ZtHF^%%8fdO44r8E7h9xPnZnDqMV z0)eFXSTG4K1;Y445+7NmQ`*^+BHG2;`=_(Rs`h`?dZbw>%aVLJdoR6XJ7YKp@=M2I zpQF4IdmY~UNx5`Z?l}R-p}3b{bQ|=YX7``hM#4YH%nv*^>C?4!3_9Z-n=EH%A;YVgDT(QYZ0#G+RGY4#j>igNFLF-}55 zXUTu~WFJ0o?SnxZv?1Ps$cz&PCdZD37?mVxEl)>i!){|k%DTO_UuO$XGh3npbrh03 zrlXXx3Pa&CM6@5eASYKuQrD83fzG)*6oFWC$wdX~-N_(KNDRX;*-<_Gt?}XQwEz7; z!i|t*-^5dZZb?sDHD&eO!^-85(osoTCgFc9Pb~wRMCWXBvWCC2-k_7{WMrcSI&jjZG&L06m7#)IWeqN~bUv*f3xb8uFmheB52w#NL7+f=@y{Y5 zIVX~1_x2cO4Y7Py!5BDJsb>yz&G5zo3R&cJS|+>UqvJ-uBmw7q*y0e&P7&|S4q<lYR$wBF~efZd*J!kcD$;rBJdB}-k%9bD&|RJ0G+{))zF86pI?BDQ*K z34L3aKK@>DL@hFu+$a$ds0{Pyop67Caxiqch^@5;t`uc<-h?|#IH_+lKFkbYHHsp- zT=}5UEf`Y>%DABKe2r-|1ULtEVV#7w=~8%aMH2btg-^#2^}KdsQ^%F?Dl~AFV3~eYa!4)! z84K+0z%o7&(-lu_;fi!rvh;ry7H$S%F$o4d=zjsTc=ZSyx)829qw4(?PJ-En1InP2 zd9e)y=|7!A53StrHZj2_LTTAl!+F5fSd#7}9B9j;Me^K%3H~Kg?>aaXNWLhs4S-VCs&&S(4g@7P2XFdFz7h*np>{n6P$lG^BB&Q(EttQ zZN9xxN4tXFsk`ns+8}*l-DPo*lAN2<^IpN`ol$Nc&YgT#*@AENLiuB<&F;kF!>tqc z*O4)7qUo+k!LQ?M#$S6D@|on`<@B*n{=86557@*^p&Y6TM$feiD^qtTHo5TY=43i$ z=VB`+icX1zWw8vOe`bFT=ABDJ-;byHI;gv>nVg4LdSZflxkF*Ow1b6C#@lnROu0l^ z);lBaoG7RYf-~VS!}p~!>!6K!;NKX1u7r4A?~v1qF2|3g;eIv_<|Z`5=Lkds8STnu z`A5EFlpfz);+dv5^2diYJ1Qp9kd=J`nHHth3GUjFdLe1)KEr>cQsOHOBl7^qrr)5y zUwUx?S~`iX(HJXEq26w!H$Gkk>NUI8YquK;ZLKcpOBE!v6XslTJIs^Yl-s$mnj%z_ zQuT;D49?Mvu08(l$Z&yLTp)7M8)?3gC(jkMcJarSm?oI(Lr}`pN(9%M$McZe(8X%9jv_-h zQs)bzpRdpuJLwSd z=-Ap$u}A7LB;oE_M&b`u2+B^;b~!iZ-q~cF^4k2unWMAFM7cAlL<}23qNJ3UYnc03 zto?($0%LxZNH-O^Iy7hy9uxVD^IF|06hxy$31!ak?M==HwF9R_x#Z{Qj{ zc-E0N5a3~1)dK2n;&rpa=Bf5Xx<8Y-TpG4%Sf^Y9o{(Q`r&{r6vVSs?p{;c|oSSJ{ zvrEdFM*TM0WRs_xc)8Wcl7~`9pFIp~d3bL`U?G2Ne~g?m*BD_OVYgx8xlzuuxgfp_ zqYSs&v9m`em_hp6=gHvA$`+op8+?`Td;`1Gt&54LJ~T2BK}sZvM^}l{p%kcQM$uKR zo8MjaUaOfvji8>H(;+o!RPqfMnii02^l`f!n8hi}(rEcyElY&rBYzQlyP#eSWjjS7 z8DW1f#gpb7SWYpaWVd4_;|X+$pFW(V2ac%HNI?=gGXu)@5F@LYAr%XSD_I1q_>43U z0rG3^&@ShIK<3En!VWkcwd-!y=1L~@4?k?y%D~~1qeoLzleg#Xw-xV=45&BW@S_~R zFw+|B3hM4WsaUzsKActrmGFC&_Z~|9tnz=0XD1CexuJe+u4c^03iT9IP_Tyw{si7b z+kxd+51WoEd3Ph|F|)X+HS=2evzvuy4@KT>MNS#8CrP0tkW(#r{c;RkRNgEz=8D1; zO68@1)bALKa9&?8`lXlK+Pow5o634mS|dc;moEv`x%Um1j@CN3Vsdy>j-9pwI55KOkTb$kyJ`b` z`)vwDdHbZ1L>WNSs^Ru>972fv-lZ2Q5xgKvb-3drG%e;=t<@u-Tq_(g`KUA2EWqma zoPK~`|4e!Kn2Gc2$D!U211Z&l&!rn9a>PGmb>ccs#`_k@tjwhATt#LNC?S8Mj*nH$ zG{u#O`})imm3;RbLRc+v zG50m!6Ljn~PSce*Qbqv%@cLAl@x~&YdQ6&;ZU@iCsTZBnj<2qbki%E- z&iHIyf2oD?!FG>o!Ra~5SAXdzD>suwuhiY?PW zi235k&6LU8r=Ph~gW}zs$++n;2gQJ=FcdatlAoT2oT?Fjjs3I{Knj0e;HQ7tNp;(` zO-+0-!1CV5rRhaR2_B9-olXVWpZ4ih?dx_zpdQNLC=T=Bs||Ble9nLHwr-=eeOJab zqmbC>)*R(iq1lpoV@YatQCS-jwrF+;Z+A-_(VE}hsA`Xr-noQP ztx|<>>X*+FSkz`I2%Uc>=q7V}e2Pefj}x9Kfv#9^rT${?p7VSGD6vxc351uIy!I{` zsG~AFAiMTAM#wGe*=k;~i^N4GxlDwqQIo`STe1S~`wlJAMtE@#jCrFHNIJ#R8Xa|J z+$NgBDYqT}P-Ry;BU!Yfix?y2?)*64TP_7B%|zeybB2lq1$BSME%{D2xa`?BMj9w< zYSXS=Ut}h@(*2^zA1H8qXrCRl_?Fz$BQ)jRiF5RHEWvlOZdLrL4WDQew$B2+^jqK? zKHSaJ=2&BXYV>zz7-4TU1wZaWepb}?jkSnPnx`+BP@W^t2vOn<9ODq7LL)b~;oV$< zRTV{j3%Exvf^&bM)RZEVk88~|7Uue?yR|LIx}MN=iOg*a#d=pgzYNXi`uawBsVHoG zyn?wD@a<+m->y;!Rh!;y?Kio=g%<1&Z|BygqrWzHz*$u&vbIT+d=i0wuK{ihe)DWj z{S-wyXdhTTS{`qg;IX68#%!Yu^YOZIP>T0H5YR3+O;>+jFn~hm+oWF{_(s11HSP&k zn*GATKy>kUF72IQ2Sy=th;V;TtmE2Se4x2kNzHJ7gZQ8(Df2g-?^M^4l4F@4tZSHy z_BFvYt?88*0OrWw0<|EBM1p?dzOi^>h~NEhT;|5cAtB z2jRUs`=o!>SC1~|CM}WA*+0ie2YW1&UNR5%oG-uVzzboU4do^++RU+6fJQDC2c?`NDsH;jZC0y))XfJWYu zmAw04v^$m|+WCRWWP&M)D*lCMZzx7@v!v)XU`5B!+nfgIU3;Cloh& za*R~CCD_dxA;dYNF?V~vJHIX2uq zEUQdvCAklKFdz++n+fQ=)rJ+kjuZ7WWnK3+*va?1(C1puiIB_@XgdNTOip}vh~I?A zKZ1E{vAmlsdZ1sfw8*6+FaO9`;}WTrN)hg_Jzjc$q5Z=d!J~+R)R9m8+gInU8>ayt z`(NMYU^#3LGgmebBHBrx;pINF?`H5@`_^c=s(5AIVJQKm)C(0v7 zW!pJ_lC>@(d)85?pm8>U23LW;6_Be5K`vf{@}Iz)A=XG!cT(I)(IO+5ST>c4S2RR5 zcF5}5ivfJd+HUw!>7435z04H)(>wU>YBRP&0fQZWCUW^6$H3}0!*sZ;ayQ1`f&xxu zX(X|7ANd5$``R+PC>v>Uibe#>WGLfn>2wBv3^wxbb?;V#D<04HMsTyLI zp-yi@iwdyQFbIwTVO=;;oW?xa zB&R;j7@+#78){V~!kDp=Nab3Rf%e20>qHoa2UT-Rm^5fJ(qrgmg+vKX&l%$bDK-_*A%&{qBZJyJVg?l9J5jO08 zH|;{4NnegB^zbH|1%~lKb@PYZXdACgdT%c|*U1GjuelWdb-VA4z2k#Mk(O4xO2@Fz zG4Ao$Z4Zrtw;wmr+2Aj$TbUWQsOM`KmWG{E52KFHL8TX^w%Xe~&Mx5uAo+2B-4WR* zS0m&Z#xH!0I^4xJ?-&WW5Qj2;UVKa%{z{bt-8A0+6YK20i`I@_(bNVA|CD1X*11)T zSx0JNL{B=fIgYZy#`j1?zZ!n?^J{lg9dOzFEAm`iw1R&9aJX8z=%xYk6g{F`k|ZOz zQ=jU(G`z4;qdH}HRd$IXK?^Z|iLsKnE-!8T^LsZ1-#oaFG$x1=5Z@2nZlin_HE_?G zb7Vt4$yiMeG;fE1A8ZFL3C2xqvE;joYkXugp>rzx$4FWY@B*QUmTIp+G8#9(>GH%h zsr;6gE!f^q+rzb+8;R3Sq=BHQ}PI&6nhf}MNOYB64C-exoU<62XxONFQR1uZog6)Uo zr#h2R^>-WO&~$QA4&O|FCrCl%WDPqmfK-({O!h60$;D0`JR%JA=z_|(DD+%zMCWj> zcOTJ9?GE{{IcBGN%fV9YS`{bQoZ(A@p6w)IO^k!oA8;%gAKZ66|-M#{%yC-v=r&{qY!c*)1`L0iA8 zU`3l(4nC7Uorp|z?{FP`qSIAsMS8Y}u%PR%!IUmcP+Vbda|U$KqNQSjIt>WS0fIgx zjB}l6IB`9Mqn|HU5zHNNvV{?5vBB8(#45m8Gy5^LM6#K zGb$xKx;LmS29+Bm;~$oyHoc{0m#czI`+wVHk}~S4+f51^qIv&xT$}noEFAL_mvQt0 z6qo-G0}%xvGdVdnmmw_zAAju~Yj5Mm@%#M>B|&jg@3^;5KGGzB@8SzC2%6^N7AbOR zz>{g41x4ye%5c&2zjv2QQe29XDe-BW32?G$Y9BMRGqdxAv+Eh0efJFUf8h+xun7p& zXN*Ds37aif&ptf^P&W`z)cq<>Zz^Yz8ES8u5` zLj)KGrn8GHKCuN%i_92>Iybe4or<0Avs(CP0=Bu)+A6lA&*%FmeN5j&K#){s%%0+l`$3s|+y1 zO1_E-118yi6#^4L`F|c}GaXn4G369|29&+_0YX$U7zK!Cue@JSHvd2vx^=gU`2tl8 z%~t?TV|QqV)uD-%zk^xT^adb|Wba^ziFoH3Ov!)`Ncbz30h5~+&q`0;Cre|65fQ`*HKjZGVxj2}&oA6q&Y$n7&d_3c7N9yy$NC~2?dM<L9e?RaG}{~b`R`y8F8HT!d-6f>0TO-bI$pb=ISXTV z={fQjBtQO;AAjHf`2OwL`-^vw|A#Q4OgGHNK&+S*E3^J^{@uIQW~Iuk-wJpy(=#O= z5M|~!=ND%e=f7O+oq0cUIU_LB9lrL0rNr1}iqd6pnGy-$JO=_jSuB<-SDr|u>4l?) zAObomoN%Hq5QL>4x9RE(b&&C zzL6&;pY2Qe`&AGC39H{7|DXiPj}9jMp&ayLfsi%-&zd7UkseMgKCOZj+1#b;M_g6` zY>D$uSGXi30?UmT;4zM>{ksT!!+l&T&f*S2}jOEO=Qfk@_irk zWvIv;$B%RDSMX62mH8-tl5Q3g3(j@MO5}LLA}%HWUD@7A3rV1!EaWBDF`~2q^lQzS zK%W?;X-qLF(dFC8SCuEpSLc5^6;_C)9KjB+Ie*el#~A7wI*I5ew2x`HBz|dHN8^F> z0JF%$s0k3HTTR$7j>b}nt!UYp2@}r58J7{xNr)rNqVqqv`i(S*IOG1K@rm1n37b2O zjQE9Xj#(27*EuT*h7)zS2TJN?GpoRjy59_Gbi`|K#`c>M;WF?%XPMjzI~JE>y_J%# z)_-o9p&RpG`=COEPmw8q>4l@y(JpOA0qKO^e>wnQG(2&I^BqY^dQ#A6AbW{pmvCk18<5SEYlWgo}DdVF}nIxr1Vzzc2# zFGd@9sV&YcEKHrC=6{Vj7KRpJd;`LoM@VKoB?$SO)oCm%x#hmGBh;rHMi>FSrGJ{h zj~#zA$jzhE!=ZDg1@mokAmhVE;Y=KHQKy@!srLMC9XgRPGDrJ8h%lvu#KR+u-M$;= zMsP1!3N7bE%W+9bjRH6Bo$s?pt1OP<%BS^W!|a}slli6XM}0sH0C3nhg-u{VQ#Fge zT^MBUdU0r9r*5gW9j5NSAa<|XI)9;#*T~Xzyb7Qw<__mqy^0b=F%)45nJ+F}Img>_ zG>U~}DtdW)R&-#rf_u@Q0 zECHAWbd1!1#Wy$hYOQkrD1Y%EY-C_`Q&yfGd@*KYlev1+1E<7+?$t(iOvknE)Mx9p zNi^IhTFL(^lCdI<)=ejk6MwZE50`f9a-1g|?g%?l1@>@0XdB5DUbu1K7(WRd?@37AHK8$Jm?#Z@qX#(mbAR#B->hWfZ1cP9fP8z; zPWquoE^>v}3LcC!9JkX~W#H_I26gBUk#pDf%a1Bz=RP|&0vKCr&eS38QyS+A#=A@h zY0pweXT@=Q=Wwa{G0ERbqZW$RWdj3?;&NQW-dLXUYd&we} z37|+eD%?sg7Kj@2(DtL`x*8Q79XZzexplzl#_{O1m2KK9+h)A?%nj7@Xy4j?+-nqN zI=@old4F&ytOaX^(c#JwLz1FO3|3@ z&ACfT$zRn7f01e-gK0OIv(SxiWWb|f)-CbsUOngvwohTya)5ELniqpX?qk=TO@H?F!@6puR>X10|8FL;?1(JCn&kh$^)FgE(e0BZMyy}hstLkhjRv@f zicaOR#%}^YZSxtml-1dD$A_NkVw}_nqj=h@nnXNch+y&(u_L;DqRc)a`gkURb0XBT zEt<2#Pz?8Yz-zs<8n^gj24JRMzYa@Yk$*^}QyJSFpClJcB!Wk3DuU?j)!M~jxl9}z zzc=iCbu=L0QQ*;!bl5!=vViHM3lc(YC{O#bfoz8J1J8}PdbSJK|Z|pr)YB0a_U}Hv2 z43N3EAq!2lX}YbtM=PrC9q#k;_t^E^sFf0ZM`VA|2a)|{c94S0Mpa52Lj+8Q)QXP_ zX3g`;;M=6e z=4qg&lGWcTGapaF04!%JMFQoYHjck^`YMVw!c&(f$Q1eU`vqlUx$xR^Du1f@e1HsI zRvpZ|{7*(V{7uwGL2kNDD9_e3OslxQ3x8C_^H0jwz{*zJiA;trD+CV8okC~DuQSb9 zMRNFk$>(DC))^qduQkBcX0U!g1;>uY&mj$}+<4?wRwQQ2T_1@;_27G<^xm~-L`{b~ z>14O((y1PS)MJu>dU=WQ;Y!2uf$n% zb>XF6rk#bhPVGvCyc-I3?v~EFZ?sM1`aR4cC7XHn#YE&9!Eb-cbeTz@J9lEq(R3Jij) z%77%%2GJ&zKX_TgoMqs7&hl`j5FP3VyH>CB;;7NqT+ld7SgdT=8b5BcDE``(F>-&| zc#?KMC0VWcB)0z2_3gGAbos&RW9U4fsQS}d`jv_5P>0f7wwCGsxr}jjqqsot&DAV1 z-f&&@dbf7uAs}lzTz|R4c_W5pG_mN{Dvm{7!efXUCr`UUH%11)&?r~kE1vmvkcdtZ z_bwbq?Hu`a*9kD`?)j4A;dt(FX4EImSi~JL2|OO|iZXGPGFLe(L^~$jWaDe%)}(Fx zmg+Z&u!5#h=1PF(-2*SE)I|*7HX@^2#@$drOpLoF#=RSUiGO8dx#BJ1?ZO~)*Na2@ zx~)6#gn>Z{LJz8w<4Jl-VlNg=E=*XFPRdcn; zyfOk-UWgmYYYSu{k7(m>xpo^qgI*oCD#5>aFXWvpysM}F_XZa1a^A@yZm{6@$CPX@yy53JqC}$_X^0&`ER( zH*kS5|DVmy9X30~mp?CW-n?Rrh;w38G=}mMBmQV@ZAEm_&Nn`{PWao=2bw1wZ()DO zdJgR+813nul>_rUOi0&Id#rGpeRy?x=FA1`q`}z>CU5j6tggIuqsK7WGHbW&EZ!YV qn7Pj~DYwt?qwwF2ZkG*WB{?-URdF1rmn2SNJDbZtWSOyOkp#Brt(Wk{}ASjDk4O zkqK~zr#uXzI1D%sxQK8ScqfcO@IS&0>d*rBI^YpqO~4a_YZQnui~=6xO7A6s;6mUg z5F$~y3523dWGRipGC=jX;!%Xkg~k<)5cnU(^e~W8;Ti`rO7Kz=$XJ>{qAN)V!UGl3 zLlG#h1PTYrM7URffflGtYV-{Kz$;pDssvY5F45OGp-KW13aTV99OV=bj8G~-RYu@B zK5dLf|t#f<7*SL_$VJ;u_((3KBz& z)VRjf=pc!xT!d?kYaApAbr$s{w$YGqXsC5aaMVCT4HftqNlKsqGI^NbqY;G6A@%?b z=3FEw0||4IA6U(~hSVdd3^!;wDUArh_n1^CL>pq#9b#%s$|GVtA`Mg!H_}`hN*GGu zi!o}3gi#NFDOU&)gUd)jKwt;A!a)PLA#H?0aHFWNsM*8`5~w*M1x!dW>Fdbk5eKW1 zh*TAyNMftA$U)7KlGI;R9cg+eMBPv{%0uOG2nO;Hcd-;?6sSH{5H`t{$C}I{G?Y@r zEYf>J-yur@=je@uQkH`-fsk|J6Q>k$gOg=Qn+F|#50$kzm_lf53dRt|HU)Fwic>10 zlp#UD#9(V^fwd<=dDhG%p8WN%?C=~$76xzF`wt&sKl>8QfTZ>{J}_R4Mi+nk8x=eK zc9*gzgZW@Ixn?g1x9NUJb5s2m32-UQDi1 zb~a0Yi;~_qjwa*zVLBU5v%C3ZYH#Ut?DXf4M{l3~aF~7`yj`3O#E4+R)n4YBbN9+lId&+)dCv3nj*^mthYwQ?en`>IXit%@PdeuD9-sTkBAcCxsf(+%Ztb}*QwF8kHtn~$#>g4;WojIJ88 zwpvRcJj$lCIk6h!E_*)6(>&qqU3N9UnbFuo<(`g*ldEieZ55v~PA6yM40+&-(iLB9 z6N|#^F#Gf=ou=bqIy;vkWHk7iUTmO$fRB$4Umm|~@5hoBDlltLVwi!Nkr{Ye81b4G zhQ1a?+iBqmJB0=gX2UESX4B!~7HQ~PHv1K7c{!M}%jsa4j?zzamzq))Hu-BhFSC($ z4+=#dPHt}pQ0J@3XoN~qWt-kh=x&g>H3G)uYY>?=7%RQPCi5}+6~_A5&YnSfJ^Kt zw+=n!2EwS6naCJey8$dJ?RFYKZ^K-#d`T*=A5V~rBC~T2d`7HiZzgjn zBdq5|dX){R!66>Riths>VD{b@kwK|+2HnLVfI6sVx)2UJ_5Jj+>Z-o+G`D#D4&UA9{o-1_mft6;<(}qy@9^1wfGNcP(5_`2>C3sC2<7n|5l2v;_p`M$O6!RLbGF8s&l0CB&S7A zq0LEBYO}1gInHaKRY;zS2spQ@xG)b>@pGX0i&hPe8v4}K;Ha+)37-S1qn2|l+V**{ zqdU3*y;y@4Wr2OZEGF~x>T={^8h8u}#QFo_H>eO%!>vXe;Kn<8h_ zn-vpD=wUefIv!4X*ZAx8*%J~sntBMKKRW!22nGCV@Vw~Igi)Vi-QDp7qx97R9Dj5( zpWn^?!dP~H3qIj58~(aKnO^s4RE;pzz|UhTW=riZhVpO|!|i2YOd3Eemgpw=!1ieo z4(~%8k)6Rghivi)(H~rIxN}AGCt#RMNkg@}3LZvfV(YQgeZ!|Z4)x25TJeIFBv6TPm;zp%q8d2vK;ibHYRJb)_cYB4+bByDWAM~bBdM7x3`w-W zYPnW_NYWU%M~UC)4jRU-3M9lQN2#m1Vz_4}tjbvqyILMbT@8-5sD=!k*1~TZE2{$5 zjcc1rzEnof@kg3G&XjW0Xe$>Tk(iB@4mp0~$j&sfNF}Odk>T`7_zJ8j=$lC# zQ+`a6bWdG6XOioHO?$dw*<-jU>(wgpzCkU2mfFsDE=Q6e;Ycs3hB$bhhGW>4w8G}R zs>cZxInLB&BFb_)p>nZphf7;}@mns2)kce9(QpwZ&9$(MRswQi&~6WqWBO0_Vy&9PUtq4DW3Il!A6?yYaER%7VCV4qf-qlgZs;ibaQ5-+)sg3a zeC%+b#tq{Tab+9=2sXElxZx_IosEWlXj3(B2`BNspI*jEysvcA57r8*xk-Rt@4i{2 zw}}__^W0jJ;kZ$~%c<|L5 z71uaH4txJ-IzDp!4`2Z|(EeNCTgv$#r0?*L(Cu*9Dnz)tdCrfr)V#KhtEzRcV1ERW zr?wrp)mKZDJxBZLX$G3+ZPBvJU);G%cDR;huG|TGHaVSC#gDT2MfZnlYX%g5L+`(4 z!}QIwgRVD#?)Rgp+Vt5Wv>ifQiO^6^l_K-Smy6iA{yAP-YPsFyxucHfj=MQE!f{yD zIPLiBb6GYy?(;q8zQ=2y>Xa zJTCqmuYHdDe0N-~QD|b68=zBv>)Z@{UU$%3{!S7e|9$Ffy-#zyC}q(_F$WU6@+?mb zEh4eww9oJ^n#A;0E(l))L@x^OZO06t)T$XkqPbDL(!W9|tvT*5diVLLZ<0UEze0mK zdNm7pvf)16kI#?Z9liXs1Vs=ma*n#z*a+vQE1Y(<4dmtR$1e;p9jb{3OdKvkezB1eF0M~a~8*sk4)a70@L;>aHa_B?20=ci>2F$lnAKZUq zR=uzLetP+R-IuzJe{I@-cJ})1^MhtY#_{DS`?5&ef-*vrTLB3>6tTB&t-FIVlE%I@ zUuOq{+((_e!E?PQZ+O;!2KCGBgu*L+UyE8WYf$KNNX`S6Yr^CC;o8m5O(TDn*J^bI zSE8xl#t--csQFF9fKF%YT%8eqsBCaBbijAVuAlSEB_=j0Nj@K}NUHw>(56PiOHLqR&mi^60`)zEgg{`=vEd8>SUYsadN@Y2S3)fldn_C_mF zP00=KTD0VR)+*S4-1m3*_`{pyS1X3mWYb~P1&jJ_zj$dJO}1#++2PNp?@l`>;0Brr zo6VG}m3^G+b^KEvl4}V&s*>egS7rGDdTryiXdkaz<7uk_`w52V5&n_Gw{kAIxFFB@ zTMpu?sR7%^92D`Hf9|*g4F6bDv8OiP0PX}EVes1p7j%bz7C8Us%Fu#_Gi|rGv!gq@ zqyHuve$U(Mg4H?>Hax@)5pUv#FiS{6sSTGYfAU~+sUD6sj2|DpRtO#5yt*{BSph=5 zEnYfiRzp$F`&A2pC|0h!z^+|j*K%MNSXtEK8tl@p$t2L6zmCd^c5&HpGp9;aJoRbC z(~_?~bv&+rIBmJ@vA0H*s^sZdN;^W9#f~}_FEiRvm*ZHfARba-ZtJpJA08zxJI?z2 z^(pbX;UuL@IkcGNo(Sy?Fh|bs?M~Unc8Gc94>IHHN$P(aVyV_SZ5sCPCrdUze|IeE-d9ez-|eRko2OGA@{5OGpMT@u zJoH4nH^m%v&A41et%`)}LE`FH;n>SF-4lo#HMkFG7?xyhO# z?Y71RHZ)y9Nhg~aMXDm@I9T_;@5m!59!1NNNFF7d2oTFMd5`aP-}{Ww&Bz%21evR`0WB1rfrD_N*~id<*#L5ynM5Oqi@5DfAD|#pY&`y= z5!Nn~KUmtkfBhi7{pa|X>%XRhS^!!YCS&rSz@dB<>0m6l@xAC)40y*@krxKVOB7Jc zNnb()1A?9WtvdtQz!1;zm72h@uz#Hn?f{g6B7N+=VZfTf2;f`F9{F)hsK)NRbl!9k zpTU}OF$IQg)r{-N<8GGt9?`nFEr2P`pFsw~$uk#5hVYlKslgv{EF*nbw@eI7VvTe{ z`S!7R>#Y~Fl^Zj@Tw-g>Rd};<7Yi@ADW)?4w#;+{W28e0Ow$ste#hKd_J807$2+G5 z@gJXcbu+4b^JBUmR2mH$C?%F``Jat-(?Hs_7yC@w#y&$QOLG7*X*Skp*=X<96Fpi_ z;;lg|JJa*UBpbACB8IsNXH1}R;)m1!WEHxXb_W3bjg*a%S$wu6Z<>M#)|{KgPEz zb^}%H<|A`gjSr1!==*G1Ly4`Qx5<+0Ps+V^Orc4&pOqjF9e*Rz{-k1Qh@9-wwls%M zX#SVRa<^7V>V(*5Y{`OIBs6z5{8guLZ181lS>cB9xFIs{bm0|4!UCpc=QD@%RtR_B zZ9_m|VZ7e=wrlp=y0FC5>>QcEwn!U0f1HnZ?fj(*338lLjg)D*MpO3Hp@~7_)h#Q& z@3=)hjp4y#7k{>4{Q#ZP2E+(hq~OT^s-O;CS1NKG03EXswEhepOlDP>QGjVN;+HB8 ze&^}oB^8LcgcsBbUaU6ovbQc!=i2H7H~(uav5?^a%6E{6EQo9Yq*uXuah$+PohMgr z#GuMU93lz~vk3i6xvj~9xEF(^Q|2(a&@u|*+EY*ajJ-E73A~NbdIYj$9oJ{EQn@cl=_jFTo`iL%tJn%v<0$DK zURVPF><)WnB2Drb{XGemyK&4`V`yoC2=*`BczU}DDmUfFbU39aKIYRGCJ^J&N$Jrc z>46`-_EAw3>Gb}z16 z-J}3oKL;IuJ4Q6l_!1_gezmnFias zjeounqAdDCjYsl89bj>&%3QUcMALAYG1Q&A^4v+Dw%nYH){~Zl0`2k;-|izILohW( z%PjP*Cq&RR7BDM;uSH%8*YP@jRtJA!{k%&6s#NLGvzSTw^iP#Q1w!QsMh3ABumgw4 z;1C(?z`5KoyZ*?)VD(@?1_f2$@>Lkjynl`3p#@K}H}A(~)(zrrS@49m!xROmx3*LH zS&3LCmXpDaXks}@QRP;d6iGsmQ{UYraMy${34awnXmwTIZ-LIYM(h@KQMMU&>=y1yzB{qNtks=~Vo)OC==hG0*th6JAbmt(xpu(S2m%eqlax4*3$3eAP;rxul z=4U0F_rWhFfKqhAA?h8zvz#8^ZCqvNuSBMM=`D4!)=Ac5+Sp|(M znhy6)2}atufCmk-Jrq-%Ry~vtp?{OWalcyR%u}t-NQj^hMq?Bv1}c}AazG=MmyZN{ zC$nei1V>C%U_R{F{D%!hcN)u3~p}T^h2eH{yY@Uucv5r$S zQtPdXl4BPS*lh*7#1u*B(t)TNxssO0kxK^Twu9VFqB?B{w|lE|>P3W{n19Hrhz?ZL z3Kf;}UrA|y_e#-=jWjuEgI;q$Z#zO_ySAV?dQVtRPzzAoED@6RED34Ly0A?^9NByS zE>4@EA{%S*$_=8_OpL@A?K{W@tKn(ul~KIiAWorPIbri~#nh(li3Lbbj(&mQ&f|)Y zZL6X@Z46?k=K`{_EZn~>lYfv`xRP6&+S+98`LXWps53`csx!awic0ga7*mLk!{b-7 z_z1!t%go&)>WZ=v%GBZZR#nk!G0Efz=w!TL2@=AeFum z!_f!*pjngfPx+RFf)?Mh)dw$PpEmA9Qj@;XAIk0(<7_9vAC5CAv41tg8M{xrWZ$t2 zbE`+vH4H$IC}KjHoWERo@$G`e-n1p5tTX~F3$!C-iWuNDM9PcaAUElB=DcmRQpgHN zSno7>%sE#s{Onz5{&676j)?N*i9mL{($(S?jw2W4U4@IKyYiyK^lw^C)*nTGJy3K< z6#dE9r=t@e+UBA6(|`Y)fh;>B%ddvhzvs>it#EYvWQibE3tPDi^{bNs?v@H*!8G^0 z92vL@gX}7~sJ--9RlVa|Djt9A(hYJ{JN*);*EO6!V}Ky6tkVRfdtPi;x=$#*r!ZWX z+ix|c=~Xh^$s@4a{vwVtq&v<5NY9&Ph+7_^t#N}UZmT=b4S$P&ZFaTK!IYP#M)qv2b0yx?lR< z)QkO(g6-pvOE#+yNS?1#vP_v?3Mowp2%;?|upZY!!tAp% z@172Y(_m4DzlG(N13v}RQd_o`uizmY=jz-Gl+&gZcYo{zRPT-4R@+&oPkRvU@d@aZ&})`WTsQBJaipISyaC)VX1lgLGRkp za2NcUUC`N{&QgYTFWhA`t${47yZW6EUr`4qj~6448F(toF8yEoL2A0lVYUX4D_0s%{b0uFC(7vgAc^EsZx< z-ucK;f6YSsb1=AzFfS$O!=Ub0xJ2t|c1d-7>&E?Y!}GqV81bXfwrTZ}U2GN(q~uD_ zwpo52DiN}-@Aub%au6%Mh?NgnbDLZDj(?pe@}GiGNt`XFEL6UCm&;A%T+_ZmNmRaR zg0gg#^8J}N^64TeZj;f_ar{qht1Y<}X^_(oN1bd=6{egi^LlJy&GU;ck&R8<=LUZ| zsNbMRvFn`DK?xlj7)34`+2XKN?|vbEEZpUAc2-$fAI{FS$%nPBcd`lZQef+trzEU z(c$5tV$qC$|MBIivwCR_*c5QphL4igK~UgXr+7}^W>-dm`lZMEQ*G9Vfr*$2ze zx(o<4Zf|d{VwUM9Zmyz!Xt9iyv|~DpZ<&Hz1-xas?ANwz?*#cm7r7Lwh|b2)(za#C z;JrB$?@e7UQEL{!-WfJ+xDF(#eE$qvmESk*E+IKzR5=>FNX0A*FKDQX>_N+VR@pZk z&BM{$&Cy)_`Re-O|Bu5O36s&;69O_avu>W<0+Xu}6SMc(y8@F^Ari9@CwnykHM5Oe zjwzBS3y~TVliJuO0Wp&S*-HU6lTO)|lZ#vx5I8eAFHB`_XLM*XATcpEF_&>i0~7=@ zHa9evkx>H^m%v&A4S%(BbR2ryHX0{Q(%76Njcq55jmA!ciEXPU+!-qgv&wt^=TG7!8pa`@9Ffjob z*|?ZExmZ{LObm?7|6^!v#|4nra{^ibMD^_S>}Y6cU`d6nZCve4jZGZ50Du1kP#92t zI5IE;^j!ghrVjQFAKsQU00}DtI)H$M1wi4Cl|4WKXb-e=0vgi&N0`4j0}M>`tc-#7 z06jY(z|;z0|q%h0EVUp4gh_i@ke0#KcSRd zZGZqqfFaQ6FD#?yU}x$A&}5)vU|<9={Q3O-OZ%fVLw{>43)g?lW%Vq90D5t0QB_e{ z>i-(g-$sIh)-C{dT2@vL04*~+D}bGm1Hj0@!UXXA&w%nD<^Dy8;U8xSDk*U3?sSD6h-qgXs1Yo3RVGsOEu54upw6id^0?J$4oBp{%04)n6 z9V-Jf=YQ#yOiT^Tt$_CS02XFCP8L??zw~=yQuK6I)(#&oAI)^|1bmze?4PA#V+GI) z{1N?y*a7rHf1{5(1JH};88|us|CX^c1L!6GMjRhV@o&WW;jQ-%;sDU=|AROI^ag*U zkAH)pH?X#_w)$Jb$iM)gH~bg;Nc~S%CgzVs!2e{z#LV;|Gq(G9tN!KoAv5|X&4-tf z>A&=>f7I5FcK;OoAu#^)>;dim6@&#qZ}K-}`RI^|tBncp-(){zrvHL$0D7~3!H?=J z{sliuxBLfwyhZf?3iWZ}^w$3*`>?gP`hQnJj2{GT{!xD<0k9Y4MhmRBv|ENFMIhfc1|JA||`VP+4|8n@4y5m1{ z{>b3?XQ%BAtnL0?$45_`{((#%QT|EF@}YDC+Wi&uKi1p8(a!E;|NrkB__6!{gMW=o zKQ0dlbO9Q`F3wpSaQmCp__sY&3E(=@?vArWzkh}}7dBgPO5Z|I!UW9gQZ+bwco0YE z?Bd=@m8`x!c0MtK_K_m-68qfS`zYPWr}7%0&_C6qXdS%Rmz8r9p!3~_v>qAOzLG;; zP`{a!tJsk6q_4YK>PJr=b2cFZ_VjgyzG!;T0e@?V;}!#< z6V7P7oGT4~zAmdgSd%crGRC^$GRH-_#zr1`ZxH1veo7B2H8Lnenp+M!GPt;S)O7x@ zMDBae$qIbj<2t9=bM`wC|qHSYut3hkLrPus3`!LoZ6!le~FUc$|2%x#^CVc?ppdEaaasSAXF=2g_huwqyEX z=(xZ&z@jBn0>_U%snza`pMRtAi7s>-94h=j5iyHa`J=vIAf$V0Y2-X^QW`v7a5FO_phZi6 z%1`3|d}SNk(MHPDEz>VVEj7Gu@yH;e32Cx&p95N%=#oNVil@x!U^E@J%0oX_p%0WC)KS@OcY&1 z1yR6zy8tS2tXxdhpW!X`x~xtUBT3c8rVN2(G!mHqmeLL)wRkoG5$NyJ|8w%DFRibm z0Edm5SpG@i#N`_7Qqq*Q>7~s|W24NVRQdP-Hb3sN+lvfoaZwhBg5m4VXO_Ik%OM=$ z)O058;xQ%Yv44|yH1L<(#S1T#=Y+Xo`DOVpS)|46d5XcNP9aR2-fV}@EOGB8^Oi4M z@afSb5OAEAv~4&GKb|2r9l8yr7XSlVs%A15Favh-j^d1$kv^T3NP4+e!F$ZJU*jg0 z4S7SMGAQ083OWOjjeiFSdBNSQXZLITR(slOy_R`JV1H0GRK}boJs%}d0TIe0X-r09 zefYe)U_8$Iia7!CHepzgg5{9QVSt?q^Q_UtuAVh_GH!i2*-(Bpfk1~4Y_4RX3--KL z&5*bO&D0aXq}W5;8?;*!4F&evE#q$Dd#@pJD6q2Qwjat z@}p6gtdeiK`7yYm!W3bVM4~ByAOQ9~`YDzx+J8#}Erl9`RY~Xfv_74$3|*988~hk! z8zt?EJ<7jK;dWH%8bQqSWuT;v#{wcc}g8A^6h8P1Kc|BGcr2tr84L2m0TP z1zPBb{D(=@d@hlNbuts4g_OzdV6?m4*E#q1j8r0+6r9}Yq9k`=RoN@d>%uCKTBIQH z^?%_f%AJLENq*RmX5~t@KU-}mwyCcH~+HDyF_b`7CsM z(RCkkT-jb%ry0b*M9*KgZyntQpfvyv8a`2$peTXz4L{fS4c%< zQgMam&cbAfC|6AZo3sN*if7;^{!uy%gt104VshF)jlMlGDM~<{q;(n(9;{Ky&i-xLfOgS;nC_T02eip`?`v%!@8My}88GlEY z+DHzz_eV)Acd}D}+SmO=<&#*pb59g=#WeXxiBN%+Vy4=V{@vxdz{>q~+MJ zBqGJWfdQ{(A1x)(5k(3NAB*uPRYH0%hi@S?{l~Za1*&YlXtaR}UGqzI{FlfR-?9uh zZ$k?T^a_~BF;UAft#;fEkjgZ^qJNW9`_P)WtQMy{=)_s6=%muuI}=btrAq5YD_#*T zmlkiDZ_Va5lm8y%`U%NQ%D4a@aMu9z(>6-W>s1ixl{BW+&jSerTsNKAYkvJ?_uvCvo+;OnMB_EjriXf8x>pSsRg_}2Dg4ipCH7RqRbl;GQ6dl9{i z&}3a^8whnxxPaO=ORYuJl_bszuY}=dY6?p%=xuE86_;4+FB1K!0Rd?%xT<@fh?3Te zIg=FV=-_|h17KNRMU^P%6@QkS@Zic%ttoz%5n}8Qs&$7NYwvOMNYNey!hnh{e>Loh zfTdR9hy>vh?$t`Ltajx$eqwBHVxi{(P4R^AegM69DhrlOvrDwS9L6KZg)27V3tmCz zb+~quJy;rRQ}xuYm`Qtf10QPa)ze{qsM9jN5+EsS&ZMy`k7PFmw||hsU^QW^0sJs z>eOf17)EHFKwp&-=`dPZJ0J>6`Q0(%sjt5N0?WPuFL?;CM83ziyE~L6l!a{T#X4eq z;62!nPrwE`+mCAC>GRIJa^fH=2UCz0Dh2~Oxk!8MRN5EnVSh7~PkNwhYBN;7UKkRZ zMMuyeq)Dl_5NeUy2)+XRcRVP)03Hb}20a~Ytxouogqw*;$m~;ZVLIZ)jZ;flsPP(Om-18nvIRdE z^<2(}cH@@a%nn1omVL{a>YW~B7%?7OlP)lU zs(+^gj;J~ZYr~Ga92ljitm4q2$5+9rG&+`@M*)%Wc)cgV-2UQ$qLEK4t2keF8YbwI zgwT+N#SkW@y0cwluTSB)kHyrYt~PCYL8S0*9f`O6%V_ddnb3b}nIheih$MiWm|?-@ z3~aV3d0-@X7$<&`%E;HT$1In$dBCra_kZci2hO`|Bu?q=F!+)+h_(HgxCjz`b40%@ z29nRF5h;;M6K+Qd8CDTp%Fik`7b+X(#>j*sD0|mZNm9TPkWoiuRA+RMuY$$Fm{55` zoh5F2*)cyF8oH_XS^u}5UtJPmAa?ALP zd1BL@28&Lwf^QOQb8(90mjJtqh&rZ@7b)#}hVT40BDb|$F8<%+oTaQ-82$PhD(!bW zN1~dJ7w@tY)5F(q-Lq6~E7TUmXn$x{0-}F1KpEFGqZ8_4n=t{YV+7Tm?kU@|)mH4T z`S?>pD&C`P85KcgSs+xhex>+Qbt)p$6#s_(J)~G+&|!%@-4)c0WZ|qF6TH7T!zQUI zisM2=X+C(`JiGhVWdKb%x62J2BFJ^npa2e=Y%DDLy0W{jU0le6usI)Iw13*B(VX-+ zE_0~8)CKIP9u6YWW&>ddcnvo4wh?!A=VX>s{pIr0!9f5z>lOp?}X6k>I$}lvUGke+aiHru=BRa!}q@_J#pi!py-&pjoB64AD2>R_bdQVf# zD6TXOdi6(`2IC+$r)=VIj0`6qJ}SY*B|AG@RmVsPk?RYzeu_~~l=Sq=S7c*UzyT<8 z`W|4nUNAH(aU40pNEsO%;mh?8>JNJQIO%3!Q|9viwf+nc6m<8}@k?H!{*R0P$4N}2PVgUS9v%q{ZdD+s(hWHdAlE5z}-%s_LBU_!`o4vE^84{Fi=b+XWH?9eS zb(##g>S$OBW2v0?dT%+K+WO(J6!*bCb4)*AuTrJCihm&?>zqovcm}z8UbsZ=QX+uj z#6|zSj=m$eqAA@766$ZdtFhGDmIp(Pvo%6NR--Jrw$5z!3{8!NOnvOuF#z(nDfB>d zch|2%f@P^X?NUFJB#1Sd#IB%K@s6JStnWeMh7<^7ZT%GsLA{;nEmixi+*#=R#BKd_ zX;)NrV1KLUz(WZ$7$lt#-vyDy=e9)!u5RWvK}Sra@iIR0fJIgt)=+y$hRKPC8sYKK z9MpI_d5NzBx|;8FB7O#kt62JuY}m0P>gvC%I(G9~@sBiuJVy1EzTxhxn6gHfxjFd; z)uNAC<%|FFBnKQ7(~fQ#&MIL+X}S%+WR1A>uYVg(!uE}7*3z^X59olCJ=jsy+4SPw zDM%8as`ESI6uey7yl=G9L;17wjiAcwv0*dJk+Rz+S?&_uQ9rKj1WzkTtBTr)I<1jn zyqe&;W#lZ+rhbbj?)gNjM;}PlARqYcaP-_yO1J!kw{o{jF6Q8qTQa4EltVlk`x-Wr z41cZ??GzQ1qfBPXhEbspnqfzqGaQR$;(W59FcGKSr0H%tc5Pz;)+yZG?~c1>;Exrd z&t`WzQIfps>!?%dq1$l}qf+uY0%5|eo;MswE%|Ve9Wi-&3i;$og~Kf4ZJyF}gaLXH zeT|WG{nC-M`3-k-MoZrh;Cfqj5e82qN`K=Y`1A4ai26<0oY$CINm{K&>^8rcAzFVL zybi$&t@e2U!I1yP9_6d?J)plmx_PkfWP5muqnoj#r%s4B+vV$?(+>Gp`d9*cuB`;6rTcweHMrtg6k545Q1UY7e!*q%6s|}d~Yxhq@$vGWB%76II zOrzaRyjsVe<2-gqPQ=>hw3zMm9Lfxo{y4@m8o@&LGej}}YPnhA0YnkN?zs7{@e!@s zQMrJ@!Yg&`u&)m$R!Q+(RF{Q&bs=BB@u$T9sFxSP682HN)~XDBDn0_NE@bUw=2!Vw z3e{pgT?bstn0)&dn>pnoGm)4q?0>YNeHhl7HGlV1F;!5yDOp0*thALwvO;`4WwMML zFn?*Ps>_NxoE(pXr6)C}R8)d<{bimc2qdVP4)W*>;M<>g0jCbG2Wh$Q)58lEHDPq6 zx<%59ff{+}&~HZOW)UE$tAfS7-`LOw{qWhcxmki4#Y>nSUbCL_s~Eds~|hrw#G@%%O^f7aeTia-|6 z{_~L@y&?^}Cgtt~RwUMiN<9??`u@D=%ffDV-)ceUX83eYLDp%;^_h1`;5lO)>-!*9 znid~=!StO;70Djsr08h4R)5BKfpT-`0Y!eZCh@I=1ukkuc;QAaZEEp+r9M_nwC+$N z^k^-WNG`2mitY)_rFaF03SmHj&(^~?|kL9g(_E62(c>$+#W z#b(&4pCZlI^BgU@t~<4?wbj8RuEPm#l;D(xF}O8Pl22}l+=l$T2Y-ilYJ!NVIsNjE zDR4x;Ge!HEVJrtK$MLk;59ah==+rMAF7n8j1fCw_g87%LxLMRg)2YT zkG`gcQ^pq+x5j_1<5d359At9a6QiE-q&7zXd9D~;xvoBD7>4&Oe)*K=8r;lM`eL2CL%OMHZmW#$!Dq3|_|0i+-GfooNqWVfh? zgoL~kcWyYn4*|nX2Tf z9)jM4u6@lpScn;#)U@~A5L|Q_7_VN7Zow}sxbA(Wsis?RWLO7ip%HV!ZB#Q9Ft$Y~ zo*RfVI_KT(VG1b1=;MCqdkD`5I9L9nh=1*6=iuj>a5H^YKbe)RlY>Umlm2faAjLwz zd1-Fv{jde9fById89<)~B8aU5l zXylwp27|Y`^6=7;q$vQRljV#bMS+DmgdI<`WDXLnSWLoIWs>CAazdW;eJllRQ-6sf z&?Apvlz*EyEOtr=Vl^P}ly5slyk<$CH+ufs2wN;i zPR7ez?uPO+Itc@(G1*GRN!6Cci+}dMk}~;wI^l&YeB#Zh1D`ot_$IDm42$UWvx-z7 z*yx@%9;5sEy~=VTpS_0%IMHf0kC*K$wPHXOP9fSgVEhbrpzELurm>#K?i+$Rc=!C?r-f(H%$^KNUlbUxRmNbQK#%e=u~N83+D^Sg~UZ+QVfv&f?9}G zr;XrKraDmz`PBM0Poo3_P`>(mo)sY$7WUxLWL&+nhH@8!ZG@|}lb6|za^H3Vk2Ef^ zW|2T`!C@$z@vq2`B`>JxlhVp;D)fIRPUb8$mz8Nf=1EW4J$p}b>r>wm+4{{1yGsue zY0bMpp3;3TaY%lwvP{cPg4p|Y`l2JA+<7#=!7L24NZYdQrSc0gD{HMjXr41VBxY_@ z_5y1_J=%UZaTrY|oT3}lL;F(s2&fa1=1`z@IkAf|`P-qQNy=&`fG@w^DKvkmPViuU zYRVR>2!>|yP|@)H@trAv8wz|xYvJfX$xW`HD8BPc+~wr{E0(O6|MUY-_4nrno4hJR ziujirrL&ccge%|0+6$QZ8?c`nP-5Q!vEI#re27)?41IG#+>O+1vwE z{gG7{zR`o~wS(q3M#OBG$-F*mnyA4zq)2VU-%fb*k5`=|3phdC?U{dBt>EuVG)+jL z*9S5o1Wbro!s^YX|NgYn2@VT7-)%(p3GAIg&Sn^PMwGejZ~Zhrv3aFlVd6+je#X3|pj{_oeNa~OMSV&LEbIUY@go?vvU@9Y9 z8J!0;%Y0EhjCq=8BFe$_St_xrrMCzMh}{`6#$lRPlcTSb!L$VK8|kJaXy!Xv0=6Y9 zbax(U1m>I?Aj5$OE&h;%p=`}FgX}!RM#_IeRL_b(9DBSnnIQo+xoab*w?NEYpE_%` zjGlvoB>~14I|W2^cy>lA@<5sog;qS|z8?%=SI1ldu;0T0J1p(8_vjNDM=6si=wDJu zTLsaX#x~m6(hUk%2vG5nHj)aa^X!Fq3TooqLxnDb(k`FCMAHmNMVD>#v{n$ui0Oai zEThh3c$;I^O{lARg`dwRzQ}^@XIo}bCGAhJStFW#8s0BKmA&K+OK!(%Q=1l-mdHLw z^nxTjD!bRFRJ3?S70zb^r@z0qlNzP$ZBGk#cxpZvOdtpn?ty&=NnOO$VK4ZU^vXO0 zEgT1-xbT*MZj;;Y%uUc$aCy-zgouB~9(^|giV`Tq`8%3K>UR=<0w?xDP&r5lwtX4* z$|W}6lPlW+&)v>x-f&8$X(UR;b2JjfMDVVKlxQQF+M5laY+@Ztr61(QT~fCYrY$&E*l=x`!-e&nMG&KYw4IqX zrpY~Xx~GL3ad&0iPh##BP}YC)_K|ieXY?_XX(|mI(^x*(V+x53r;^@8v*V!32dJFv z`xps>jB`J$=4DPJty<#YEYj)(QO}qBY{02Z)7KUu&48Kxwf>xvK!$wra8+(OnSc_$ z&uCcv%VW|3N(Dm{F^xh@Tq^si?kvX-Fhb@WLPRq_LEdDgCNaZ1G^u~25$>>%^Qfm_ z5CS9C&4Z|=`lW&=gE}m)=jXt9NCnwThO95jX^fWgPSrYs=9v`b?vk(bi~&S4${i?m zq6|Q9f3v;h7A`%DFAsM+K}lVt?>KAc)jTd$$!sPaw_0xx@9bRG#R)NlwEvUu9y^`H zJO*0pSISE|#=Se$?1ZM?lkczEo0n}fEow+J2z9U>%5TTP*>ws-UaL~ ztNm`3nCsbS4%ue{%5Du?7_*lJSS0qPExW#`^LZ1qay`B4%6(qG1 za~p}XSeDX?JG)mr-`-iH+p?IoYkRc2xl;4ixxmCJdba3E(9>G#s$(eHK`$QKfF4D? zX_USz!3NpIUcXx{Zm0;Lf4MB9;cMgq|DNU@ZI}%ERAd2h%E&kJ{(YDg{hq3qTzB<| zO$s4=ykK`x6P|xNgC#fldt_$EI_aEqvMrMMYS=h)T1^3pLj$7O!IOts_}f)n9a#Y8 zWq|9K1lV6@^`sPKO_t7VNz+}FF5nbOwTFCBX= zz9tv5bA?dU=~e1QaFpsXYvI@c9aL7C3g?r`gch1s)u_Ia$(G#xbLZ!?Ql^Tr&hUlYeT;` zU)3~Ss`7t&8!eU>NI}iG^1>H<0);VmA~h0g39Z)D3$s*;7LTtRHfQJb#%!n=_0>`qu0y@ld|b=ixGooIHCn6e7esy2 zJQzh5jj|IOXx8;dlR_!&I(eBjKPR_fzgAWagTa4_7U!bzr&kJi-5bNq!JcC)FiiLCUbscBKI*wOiF zRUQ6{$)-1>V$@6pTV-b5*rn}H{NB0KtBXk|r%2NL5r>9PuhuxE4G)QOmklkZg8Icb zbs&F9aN782-pZ>?EmUSNoMjSOw3J-n1k#IyJ9srpWiH<19xTmdjfo+aTIbcK;JCBF z2)P2HleFA|Di-J+Z2mQY@-3gdvQ&rX6SORcLD6PYbO?BCFS&NUaj*^7G5G{73Fm|! z7WjxNyB2v;$F0W`+|ED|b`WPs)KiejXt;lv*cf)ke~*m_kil|CLZIe!e)^7yPqg(^ zRBop^u?~&h_J{^^=fBORk18{Lz8L{0JCfhk(~}aoHv*n|piap;r`hQ8$;;stp zM~4WKRVqQ}?^v9%F!&Eru1OX|*I>rzMSgq4(G4>|SVYP0 zyx%gPeHxb~^WmK*&FztDaxY@lpk@W9;jfGXW|lIcW}{nlJS%6@DN%y<#viYu(d%bk zKyLW3O9gS&S_(vcEr(1F4Ag%&En*fTmcG*SDuHt6nhj5Jzo#egI)TiC0|PTX>4t>HV zMJ*?dQ&IlJ8oON5cWj0p5#HqzJmrkDe>AjRrgt=Sesd=oC;?XPEUtf4aZ(I9?F`FM zK*!j?hPh~)F83oTNo2~eSiC_(5rwc1^5Tqfe>uClE*6Zyn!z!|l0Y6~JU`jV3Fdl0 zs;{oB^j!=dE23oG7!(DzZJs)K5S%wfiOlFzZY%`m#CP@nK2JMnv8)m6OpJY~#d>O~ zl@W}B3l0grGtoyPv+sXvyl%GbWy-H&Ve>x(JxN@nbMW6R(~&lyGG)J@vg5XgfkU9I zJH8)T@Dk}-q#wTlFsmkJ``hJ}EHu1TpH()Cr9NRN4L-+DIi~k=w3EfIOZ7`5=`>vS zXH{pKd`2gN?7b^e!=e-R{oK+VumpImH{k8RB4RX+`?+8SIxT-nc9E@&C1UM~Q4pS= z2G(#UH+6DIHQ-1N5!6e4@^lVJF7{=PiUMl^GyC63Be}rSx zdj_(L0OV~Vs|@xI+o6m7ZLnCwi6Vi?&$yFIn)F0S?4L7EeoXo6>C7AisR80X8Za_5 z_g5fMGcdxcjhKHqOYVr9;iFm_4q=^*4$^#aLd?mtrt*xkeN+zmtIDyhWlJ<%9UNmi zsk}xm5}}H?}~rQdjaA?-;iA)$u8zF)q2=q zGIti--nr@+jN7f^+rw(XEDLm|dABx&5BV{Jb{e&WoK!3zmy+@?CA%Jel4u>m%28ZM zI`jyQnsEQxtPID6cX2#ADOcNKznIN_XG~Uf?h8rCSx#!s;FW>7yzHgTQ8gs=drmb8+W1N&WC(4{>1s2s#w_9cLv8>;Wbz`qQgxI5$pl5t~ z-_H%V!u#FYN{fS-yI(l5*XWY9d)&MRU1Z}~wgrD}vEeaTr7AQwsk7F(tBRJ;P?#up zgR#9j=+OBG<>LCxQGaF(X;tNPQ&O?^`c~&DY$`hZmP<-uAXH052cGDX1Fc4Yn+g=V znj!K4TVrNNWq!{X?chCnUG`xJ7Fg--Z!PRF)XxVCY8lUwcdeCji-h;(VawSe5qeSX z+x%iUt^8xtuO$TM<@jz8mb-py258Vx{ZezmVluoS7T5bDUNH4PL~Zs~ZS=aw*<@g% zUgSB=4@Q3D^^h7Srok)}Brs9o+0`;g`6@xwK_n?_TGY6bZjiHz3@<$WA6X9ISCi4% z6O$T-6tmZfn*)=>i4(K;*}MXibBz=~?!T z-!8vTXD|RV2udbEmJYDN_?pt8@0>7l17D1A9oqg!LJixEocyZ{FvCi}iU|WIDZUDU z37~k7e=lAKmO)H01)l+BuYH6N)eJ@fqS-4SW|U1o5{B;FVliK#nxXj$plPfR&7e9o zvGR8?tDD{cgpuqW3^7UGc?KmJ@BtBj#WG;}vS#Q6==}Q{Wq=YQzV){-xC!mW!j8q7 zsX6uBI8OEv+HP1tPzS`&(}CbbLk#G;Ax60Hf3@Uw96OPi9zaek;vc@F@McnZ@*!Os zDUFCAPN_-mB$PX8ksS_gtQ-UL}t^jfGrD$Tze==M*FJ}wP#D)aS=q8vg5>&ac`CxQ@>pI~+U}T$_#~X2C^4VUC->-uJ z2w45@_**4NesnP555=IDGlZ<^f0i8Csq}E-k)Oqp;d&bW+l4niDZ7M=dV)o-Lh#2NP=jZfSvOxfIFWW)`wDP~PDyvtch zF`TNqJy23Fn^^>I)cs~iqa(iaW^BJH5zYh8bLOd4*s-`w)>|v-cG@j7e{^H|YadjI z@F6ngFTHSdI@+bJDIlHD`)`MnJ94e_X*_MufB~HT24P6+45&b%-m359(^fk0p&(gqZEQUo_b;Z;8j z|0QgyzH&>MTk%`8*S%4oe<6!cNQl&4r62d_I9$zRwD;h-iB>;Arx-;91B2#g>c4#m z3Qg;kX;=VRdhU?AU7|ziNr4#ygykc??&BC(j}I?c2c|(vc)_jU#b^UBJB#xg4^tg`ou)-$3HcBP4U45`_HK;xLw#TDj+Tg!+`j2qSH}f`fbFp|VEZLLIM>f2V1G6+ltU9nPdT4D)_Dg zzZ4fg1<)Q!f8L-kS>rH@8h2U?qpYElLM|9}c@m^g>L1C?0&crnh*OqE3?wmXq*6

s&;?&u>S4F1V5hcRm-HmQg+yu3#kdxU5UEER{)SQnxHaBzecizjCEhp)EhMJB-h)n}jVd z2%|@|pUCwaIr$IYPvx@`!$dmQuaGsNCI&j9rKsfGv%}KW$gAv@OYKdknkXj)P)8fa zd%z+)fAA#aTH=*DUmxg|yXe*XVNyU@uFTeFG3~E!3vH(#uB{$Ioff1Jv_*%J-E>&M8pcfqc7JdP-{;vpwC z0vKEB-Ii^tr|`_JM}b>()6sIgw|})%`X1AJHnL_w*|lt7VA0%x_gucQF(+dUDnsz* zS_fc5uX5*FE-?Xyx;q9R_j0oqyYUu2zmF>A{X%{CNvDK^azdY93M5O9*-}!j!lmuc*;>sPAF~##c5uap(X}${xYz)i6fYv z5ZskJu?+<8tWOTaFl54OK~L;NPp#0Cf62eAmI+L^cON^0$^-p`-qz&-YYo4n=N8IM zR!&aFF*`=vyD4Is03xhdC6_ZqjcI86QEIM6QCoAF+X&}XwLsmqLdOqRm z8ME(fKkhXxQqHfG*Bu-R%Y@y+X#1`GG^y80jX~3tae^P0MKp8sy?vTh{?1=7f7}>e zaN~Yn<%NIuPnT2qh2O7#M@^!%54eyeM^LWQ4R$AG$eTEy4gsEEmP(HCV89Dj;{jem zlOQ=2Tx^TslqX_1W1}7|3#os}w^Y=DD9X@X+pGA?#x-7QJPv~*Ph@?#jz65T(HM;? zKayz7_U7EDWxTI<$Y&9%9)q$If5%zq#fgF)_7 z*J(XzG45U=t6T%tMg!TMZgY#grE##(Kc9%QBcgmY63DK}3f z@S~QlL=H#O-<)W=Bbxr=o8vMyq-Ss(toF@`EIT60ua8##53ZEH8PSPuf1fNdV*SEa zz480?Xn?z>1Q-Y)qGl|e2fpmE7_}4!=(*T_PjxO1>OoMJKy~%`j~F7DyhLn|MvEwO zPb4iA(_FYDd$KK>v%@eM?(u-vdTBN8uEY$$OnvvdDtU#W2frUPn(5f~*2TyZP14{h_F& z9}fe@^-4=cE4AFgToV`+F^A-*IPDd=e&NVTxc+^T*X_2zGe%+9z4+pYV@PUHSq2{- z=t#Ni!IIkWILz-C;IUz8hnAg(U}_wJl4@nR^1YCn{yM{%{O#bff1RdXBRg^bdUPkQ zwq@r7RcA0ada#jJok8ZtUKmtr)3m6fM{BC+ZEvyh_t^E^sFjj?dtB(EM{%Lc?BG`I zxJrX#h=9pZ#mt^DYnqq(E-osjzuu(PAA}ayS{Ih5LNeW^9M*&`imKa#+&5L72n|zg z8&->vPxhg2!!L>KKbbD5~w9Wx)#g#lQ-eH0}q|GaYic`tX6MtbVxRr@kO{xG8~SuVWs z>iV;MgbZHQ9n8F>PewQVP1Ht(ZCYFs&(<_do36f#dDP|ef1i}Cft9VcFESarDET)i zcM6>aH)oo$iuCaNg3rb7U9Y7=V9S8pnZf$~6cO7SKif2@YA2CbS>cz0yFLgb!B z^xlSOL=9itQ*vsOiYf;~JpwXhC@-kQCD&@>b5V@ib7=!50W4j`=OJ5^JqCNLq5ATm z+Y}=JbCWo0e{7wEspqm)P!ZLxRmi)cVCR1BEc-^=iF}Woe33%Gl7K3y8SX-+UyO)S zcTc(-iX=qooFPd<-( z;Yt~hECCx+U=Una1|&^4h*qKa!OJ?}%mdGJ=G!ZUf9O!(+J<_W7d(v$cR}Mk;bdjQ z*7$LorSb3V86yvuf+uP_({npbuD^19yRD8}ez5oyI!BaNe^`&cDp74~Iht!*Rl0vJ zl3d*=F422)Eh`ysxHfscdpq(Jkfj|i+~J}T!!nvUX~3Esi@b!#5H(JocE@du41l3g zt)y2zfAh;A6`e`qdlEQm=g2R+z5ye5&zBqz$8(2sqdsZIlGuQ0=J9YQ%89E~xyo57 z+cD)PD_={jCT-=nRKF=nD`=W#t|VyQA9+EgE^+{ijErs>cS8YjV%#k;?)CIbESklY zt%P?ogG^m74(*$^Y~T|H1}XA9s7{Vg(o;AafB7Ut_2DTeEES(G#K(G%yOS6-+pV5= z5~C+EI&vmn*AeODUKs%^FXas}h}4uvwDJqC-A2ry*SM`p@Go8rm#mg-{Q)!(J6W6^@m>})JB1T0#O-~@|hTo?+c=uLOgn~QtVk?dZWs2w%ZGb>09W!X8Vc~exoKUVMbJxM-Kdv>VnwjMkJ;|rt6n&Q?FC`feHH{+ zGh}vAPo`+cOp#5M(1d{*IbPZ(?c+JUlN`O<{9uATcvDm&>~WBmp_M z@Vfz?5&|_bw+K7}qyv|~M*<9&n$7_V5H>U~Ol59obZ9alF)%ndF_Uqj69X|hF_Xa( zAb+KFbyVD2vn3YX-D%vVad$~@w;%z!u>g%*a1Tjvceen+-Q5Z9F2UU`L*~xA_r7ob zd9!BqTD^Yz)UK*sat0@*kO0n%V=6Kxj_6FVm*h#dsL$;QQv zOiQb2w&b1^DA4!#SWkWwg+%>0)V`NoC1Q} z+yG7vAlH8pA&!CoRTEdR4M5h!(ZrF3g$0>b3S#f!Xk}sPEC~4f6To1``0B{P1u*ph zNLo2NIlp?_vH;%MnXv&RY-|APe^^ccb+8lI(G?70`)^_X(hM-OG_kV)I{{1_!G8cN zJAl25sg0Ex00gl$v9d#^1;~Nzz>cq~L4R`m>4q%C(E|KOE|7!swEzZ7XJ>msc6Reu zlldPLo0B=49oU(j@wFNmJCGE_))s8%?1T*D0D!E_oB^g_i`T&He?n<`*nN_yysx!-~a+R{`~&_GJkw64Fs{X@%V?XY+?%ruxrZe%WBIp|HpX#CP_*{ z+yS3hd3g8%tXzCN06ri;0La133Gn{!0aahi{YwzXKhE#$%pm|E@Gs#Y7yJJb@A}tx z0Ste}%Lw@Ik(43MR%T!T!#`s(;Namfd;J6cKMl)(1IYP5n9(2Fe@LMH|9@JM|IuQw z%evUu{OVW?eEeU~q{J-L8{Chm_oK0TkNZ47} z{C#BQBx~gk2B}&(n^^+PO>CUNf1PXDfxwP7R(4=jh?CWyTL@s~2D0&Ra0&c}UDMLa z?4upn$qB&C#U{Yb!}XWl#DB@`b%OzXynp2Z+kyT=nT(wo1Y~7r0pR4}eQlSci3c*r z>t1v6@BlsmUwa1vy92=PucFx5>>$psF0ajW_6EFO7vw)n#mfg^m-=(`7ZL!l%lwV_ zxB%?${zm+-NaJrL@akvs58?-~oBo4dqnQ1TUYDQU3}OSZ`}+jQ!G8f@2mK2I0qo#^ zK~4a>`9JQjY0a%%|FQG@F+*G&|K;#XvG}KkSG&cZmkj)G3O9h=@^8q^^NKv|Ey4fR z^eWTlU+}dC+kfEe1H%3<^6Rx^hx`-nl?$=^R|UXV3HJY(d0!FO(F*dfl7X*!{v{9i zD#+=d3jZLm>%Y|TynoW2USFqw9A0BO|6_iY<80{&{#TP;^*Xyj{^jsGFPDEN^qRrt z&*nLqK^*@r{IvyDE~^z`I^S#pR!)Lo?yqna{RZQG;?uud|lfA{cyc5?0;c% ztJmuS2D^jJkQZhlW4rA~HG zfAfRmLZH+h3x8oYM>jLoJYu2MepQZ!ZoC`<$C!!pvb>d7UE?2*l&J`bQ#Jh7Vz*;V zG;_Xlwsmx6Is7m~p!lq>;-GA^g&o^2E7yXu+!3p!Ncv-)=ljhs;mP9tSpi*GXP^rrTTYbGSyDya1q<Jc#9*pN$SBE*>Xc zOq}x5?r%>$73hHqsqo(L`v%rjPIj??w1C{F}x#VCT1V(_p&!s<>=jo1qUZ40kSQlFU^WUjU_Omifm*U z^x@r2o_}w{mhGaBhT&Qh+3pGnCi6Ysv`q5i{t)zvgE3gQv$51cSIrd_3`Kx?RC#

UQBN42icn_2!Hf_c9 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 GPeuxOt>)DL diff --git a/doc/syntax/syntax_en.tex b/doc/syntax/syntax_en.tex index 50971643..656b44e2 100644 --- a/doc/syntax/syntax_en.tex +++ b/doc/syntax/syntax_en.tex @@ -358,6 +358,7 @@ match expr with pattern -- Case1 of x: ... -- Case2 : ... + -- anything : ... ``` \end{catala} \\ @@ -444,9 +445,9 @@ \\ State transitions declaration & \begin{catala} ```catala - internal var1 content ... - state before - state after + internal var1 content ... + state before + state after ``` \end{catala} \\ diff --git a/doc/syntax/syntax_fr.tex b/doc/syntax/syntax_fr.tex index da3e0b90..10c66186 100644 --- a/doc/syntax/syntax_fr.tex +++ b/doc/syntax/syntax_fr.tex @@ -364,6 +364,7 @@ selon expr sous forme -- Cas1 de x: ... -- Cas2 : ... + -- n'importe quel : ... ``` \end{catala} \\ @@ -422,7 +423,7 @@ \\ Déclaration d'énumération & \begin{catala} ```catala - déclaration énumeration Énum1: + déclaration énumération Énum1: -- Cas1 contenu entier -- Cas2 ``` @@ -450,9 +451,9 @@ \\ Transitions d'état & \begin{catala} ```catala - interne var1 contenu ... - état avant - état après + interne var1 contenu ... + état avant + état après ``` \end{catala} \\ From 6f1ac5837d42b2e509aadd52ed6952f8c0cb01dd Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Thu, 9 Feb 2023 15:44:27 +0100 Subject: [PATCH 07/10] Add syntax for calling multi-argument functions * temporary and undocumented while waiting for discussion an approval * previous patches already allowed definition (at toplevel) but there was no syntax for calls * no syntax for multi-args _local_ functions yet --- compiler/desugared/from_surface.ml | 3 +- compiler/surface/ast.ml | 2 +- compiler/surface/parser.messages | 2109 +++++++++-------- compiler/surface/parser.mly | 11 +- .../good/toplevel_defs.catala_en | 15 +- 5 files changed, 1070 insertions(+), 1070 deletions(-) diff --git a/compiler/desugared/from_surface.ml b/compiler/desugared/from_surface.ml index a27da9a8..7c141797 100644 --- a/compiler/desugared/from_surface.ml +++ b/compiler/desugared/from_surface.ml @@ -398,7 +398,8 @@ let rec translate_expr Errors.raise_spanned_error pos "Qualified paths are not supported yet" in Expr.edstructaccess e (Marked.unmark x) str emark) - | FunCall (f, arg) -> Expr.eapp (rec_helper f) [rec_helper arg] emark + | FunCall (f, args) -> + Expr.eapp (rec_helper f) (List.map rec_helper args) emark | ScopeCall ((([], sc_name), _), fields) -> if scope = None then Errors.raise_spanned_error pos diff --git a/compiler/surface/ast.ml b/compiler/surface/ast.ml index 8ffdfa77..a34d8a66 100644 --- a/compiler/surface/ast.ml +++ b/compiler/surface/ast.ml @@ -433,7 +433,7 @@ and naked_expression = | CollectionOp of collection_op * expression | MemCollection of expression * expression | TestMatchCase of expression * match_case_pattern Marked.pos - | FunCall of expression * expression + | FunCall of expression * expression list | ScopeCall of (path * uident Marked.pos) Marked.pos * (lident Marked.pos * expression) list diff --git a/compiler/surface/parser.messages b/compiler/surface/parser.messages index 16dbec5b..c0c95828 100644 --- a/compiler/surface/parser.messages +++ b/compiler/surface/parser.messages @@ -1,6 +1,6 @@ source_file: BEGIN_CODE DECLARATION ENUM UIDENT COLON ALT UIDENT CONTENT TEXT YEAR ## -## Ends in an error in state: 333. +## Ends in an error in state: 336. ## ## list(addpos(enum_decl_line)) -> enum_decl_line . list(addpos(enum_decl_line)) [ SCOPE END_CODE DECLARATION ] ## @@ -12,7 +12,7 @@ expected another enum case, or a new declaration or scope use source_file: BEGIN_CODE DECLARATION ENUM UIDENT COLON ALT UIDENT CONTENT YEAR ## -## Ends in an error in state: 329. +## Ends in an error in state: 332. ## ## option(preceded(CONTENT,addpos(typ))) -> CONTENT . typ [ SCOPE END_CODE DECLARATION ALT ] ## @@ -24,7 +24,7 @@ expected a content type source_file: BEGIN_CODE DECLARATION ENUM UIDENT COLON ALT UIDENT YEAR ## -## Ends in an error in state: 328. +## Ends in an error in state: 331. ## ## enum_decl_line -> ALT UIDENT . option(preceded(CONTENT,addpos(typ))) [ SCOPE END_CODE DECLARATION ALT ] ## @@ -36,7 +36,7 @@ expected a payload for your enum case, or another case or declaration source_file: BEGIN_CODE DECLARATION ENUM UIDENT COLON ALT YEAR ## -## Ends in an error in state: 327. +## Ends in an error in state: 330. ## ## enum_decl_line -> ALT . UIDENT option(preceded(CONTENT,addpos(typ))) [ SCOPE END_CODE DECLARATION ALT ] ## @@ -48,7 +48,7 @@ expected the name of an enum case source_file: BEGIN_CODE DECLARATION ENUM UIDENT COLON YEAR ## -## Ends in an error in state: 326. +## Ends in an error in state: 329. ## ## code_item -> DECLARATION ENUM UIDENT COLON . list(addpos(enum_decl_line)) [ SCOPE END_CODE DECLARATION ] ## @@ -60,7 +60,7 @@ expected an enum case source_file: BEGIN_CODE DECLARATION ENUM UIDENT YEAR ## -## Ends in an error in state: 325. +## Ends in an error in state: 328. ## ## code_item -> DECLARATION ENUM UIDENT . COLON list(addpos(enum_decl_line)) [ SCOPE END_CODE DECLARATION ] ## @@ -72,7 +72,7 @@ expected a colon source_file: BEGIN_CODE DECLARATION ENUM YEAR ## -## Ends in an error in state: 324. +## Ends in an error in state: 327. ## ## code_item -> DECLARATION ENUM . UIDENT COLON list(addpos(enum_decl_line)) [ SCOPE END_CODE DECLARATION ] ## @@ -84,7 +84,7 @@ expected the name of your enum source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON YEAR ## -## Ends in an error in state: 299. +## Ends in an error in state: 302. ## ## code_item -> DECLARATION SCOPE UIDENT COLON . nonempty_list(addpos(scope_decl_item)) [ SCOPE END_CODE DECLARATION ] ## @@ -96,7 +96,7 @@ expected a context item introduced by "context" source_file: BEGIN_CODE DECLARATION SCOPE UIDENT YEAR ## -## Ends in an error in state: 298. +## Ends in an error in state: 301. ## ## code_item -> DECLARATION SCOPE UIDENT . COLON nonempty_list(addpos(scope_decl_item)) [ SCOPE END_CODE DECLARATION ] ## @@ -108,7 +108,7 @@ expected a colon followed by the list of context items of this scope source_file: BEGIN_CODE DECLARATION SCOPE YEAR ## -## Ends in an error in state: 297. +## Ends in an error in state: 300. ## ## code_item -> DECLARATION SCOPE . UIDENT COLON nonempty_list(addpos(scope_decl_item)) [ SCOPE END_CODE DECLARATION ] ## @@ -120,7 +120,7 @@ expected the name of the scope you are declaring source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON CONDITION LIDENT DEPENDS COLLECTION YEAR ## -## Ends in an error in state: 284. +## Ends in an error in state: 287. ## ## typ -> COLLECTION . typ [ STATE SCOPE RPAREN OUTPUT LIDENT INTERNAL INPUT END_CODE DEPENDS DEFINED_AS DECLARATION DATA CONTEXT CONDITION COMMA ALT ] ## @@ -132,7 +132,7 @@ expected a new struct data, or another declaration or scope use source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON CONDITION LIDENT DEPENDS TEXT YEAR ## -## Ends in an error in state: 294. +## Ends in an error in state: 297. ## ## list(addpos(struct_scope)) -> struct_scope . list(addpos(struct_scope)) [ SCOPE END_CODE DECLARATION ] ## @@ -144,7 +144,7 @@ expected a new struct data, or another declaration or scope use source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON CONDITION LIDENT DEPENDS YEAR ## -## Ends in an error in state: 291. +## Ends in an error in state: 294. ## ## option(struct_scope_func) -> DEPENDS . typ [ STATE SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION DATA CONTEXT CONDITION ] ## @@ -156,7 +156,7 @@ expected the type of the parameter of this struct data function source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON CONDITION LIDENT YEAR ## -## Ends in an error in state: 290. +## Ends in an error in state: 293. ## ## struct_scope -> struct_scope_base . option(struct_scope_func) [ SCOPE END_CODE DECLARATION DATA CONDITION ] ## @@ -168,7 +168,7 @@ expected a new struct data, or another declaration or scope use source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON CONDITION YEAR ## -## Ends in an error in state: 288. +## Ends in an error in state: 291. ## ## struct_scope_base -> CONDITION . lident [ SCOPE END_CODE DEPENDS DECLARATION DATA CONDITION ] ## @@ -180,7 +180,7 @@ expected the name of this struct condition source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON DATA LIDENT CONTENT YEAR ## -## Ends in an error in state: 283. +## Ends in an error in state: 286. ## ## struct_scope_base -> DATA lident CONTENT . typ [ SCOPE END_CODE DEPENDS DECLARATION DATA CONDITION ] ## @@ -192,7 +192,7 @@ expected the type of this struct data source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON DATA LIDENT YEAR ## -## Ends in an error in state: 282. +## Ends in an error in state: 285. ## ## struct_scope_base -> DATA lident . CONTENT typ [ SCOPE END_CODE DEPENDS DECLARATION DATA CONDITION ] ## @@ -204,7 +204,7 @@ expected the type of this struct data, introduced by the content keyword source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON DATA YEAR ## -## Ends in an error in state: 281. +## Ends in an error in state: 284. ## ## struct_scope_base -> DATA . lident CONTENT typ [ SCOPE END_CODE DEPENDS DECLARATION DATA CONDITION ] ## @@ -216,7 +216,7 @@ expected the name of this struct data source_file: BEGIN_CODE DECLARATION STRUCT UIDENT COLON YEAR ## -## Ends in an error in state: 280. +## Ends in an error in state: 283. ## ## code_item -> DECLARATION STRUCT UIDENT COLON . list(addpos(struct_scope)) [ SCOPE END_CODE DECLARATION ] ## @@ -228,7 +228,7 @@ expected struct data or condition source_file: BEGIN_CODE DECLARATION STRUCT UIDENT YEAR ## -## Ends in an error in state: 279. +## Ends in an error in state: 282. ## ## code_item -> DECLARATION STRUCT UIDENT . COLON list(addpos(struct_scope)) [ SCOPE END_CODE DECLARATION ] ## @@ -240,7 +240,7 @@ expected a colon source_file: BEGIN_CODE DECLARATION STRUCT YEAR ## -## Ends in an error in state: 278. +## Ends in an error in state: 281. ## ## code_item -> DECLARATION STRUCT . UIDENT COLON list(addpos(struct_scope)) [ SCOPE END_CODE DECLARATION ] ## @@ -252,7 +252,7 @@ expected the struct name source_file: BEGIN_CODE DECLARATION YEAR ## -## Ends in an error in state: 277. +## Ends in an error in state: 280. ## ## code_item -> DECLARATION . STRUCT UIDENT COLON list(addpos(struct_scope)) [ SCOPE END_CODE DECLARATION ] ## code_item -> DECLARATION . SCOPE UIDENT COLON nonempty_list(addpos(scope_decl_item)) [ SCOPE END_CODE DECLARATION ] @@ -269,11 +269,11 @@ expected the kind of the declaration (struct, scope or enum) source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION CARDINAL THEN ## -## Ends in an error in state: 239. +## Ends in an error in state: 242. ## ## assertion -> option(condition_consequence) expression . [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## expression -> expression . DOT qlident [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] -## expression -> expression . OF expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . OF funcall_args [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] ## expression -> expression . CONTAINS expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] @@ -301,7 +301,7 @@ expected a new scope use item source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION FIXED LIDENT BY YEAR ## -## Ends in an error in state: 236. +## Ends in an error in state: 239. ## ## assertion -> FIXED separated_nonempty_list(DOT,addpos(LIDENT)) BY . lident [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -313,7 +313,7 @@ expected the legislative text by which the value of the variable is fixed source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION FIXED LIDENT WITH_V ## -## Ends in an error in state: 235. +## Ends in an error in state: 238. ## ## assertion -> FIXED separated_nonempty_list(DOT,addpos(LIDENT)) . BY lident [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -324,14 +324,14 @@ source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION FIXED LIDENT WITH_V ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 221, spurious reduction of production separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT +## In state 224, spurious reduction of production separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT ## expected the legislative text by which the value of the variable is fixed source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION FIXED YEAR ## -## Ends in an error in state: 234. +## Ends in an error in state: 237. ## ## assertion -> FIXED . separated_nonempty_list(DOT,addpos(LIDENT)) BY lident [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -343,11 +343,11 @@ expected the name of the variable that should be fixed source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION UNDER_CONDITION TRUE THEN ## -## Ends in an error in state: 232. +## Ends in an error in state: 235. ## ## condition_consequence -> UNDER_CONDITION expression . CONSEQUENCE [ UIDENT TRUE SUM STATE OUTPUT NOT MONEY_AMOUNT MONEY MINUS MINIMUM MAXIMUM MATCH LPAREN LIDENT LET LBRACKET INT_LITERAL IF FOR FILLED FALSE EXISTS DEFINED_AS DECIMAL_LITERAL DECIMAL DATE_LITERAL CARDINAL ] ## expression -> expression . DOT qlident [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS CONSEQUENCE AND ] -## expression -> expression . OF expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS CONSEQUENCE AND ] +## expression -> expression . OF funcall_args [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS CONSEQUENCE AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS CONSEQUENCE AND ] ## expression -> expression . CONTAINS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS CONSEQUENCE AND ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS CONSEQUENCE AND ] @@ -375,7 +375,7 @@ expected a consequence for this definition under condition source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION UNDER_CONDITION YEAR ## -## Ends in an error in state: 231. +## Ends in an error in state: 234. ## ## condition_consequence -> UNDER_CONDITION . expression CONSEQUENCE [ UIDENT TRUE SUM STATE OUTPUT NOT MONEY_AMOUNT MONEY MINUS MINIMUM MAXIMUM MATCH LPAREN LIDENT LET LBRACKET INT_LITERAL IF FOR FILLED FALSE EXISTS DEFINED_AS DECIMAL_LITERAL DECIMAL DATE_LITERAL CARDINAL ] ## @@ -387,7 +387,7 @@ expected an expression for this condition source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION VARIES LIDENT UNDER_CONDITION ## -## Ends in an error in state: 224. +## Ends in an error in state: 227. ## ## assertion -> VARIES separated_nonempty_list(DOT,addpos(LIDENT)) . WITH_V expression option(addpos(variation_type)) [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -398,14 +398,14 @@ source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION VARIES LIDENT UNDER_CONDITI ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 221, spurious reduction of production separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT +## In state 224, spurious reduction of production separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT ## expected an indication about what this variable varies with source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION VARIES LIDENT WITH_V YEAR ## -## Ends in an error in state: 225. +## Ends in an error in state: 228. ## ## assertion -> VARIES separated_nonempty_list(DOT,addpos(LIDENT)) WITH_V . expression option(addpos(variation_type)) [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -417,7 +417,7 @@ the variable varies with an expression that was expected here source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION VARIES YEAR ## -## Ends in an error in state: 220. +## Ends in an error in state: 223. ## ## assertion -> VARIES . separated_nonempty_list(DOT,addpos(LIDENT)) WITH_V expression option(addpos(variation_type)) [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -429,7 +429,7 @@ expecting the name of the varying variable source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION YEAR ## -## Ends in an error in state: 219. +## Ends in an error in state: 222. ## ## scope_item -> ASSERTION . assertion [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -441,7 +441,7 @@ expected an expression that shoud be asserted during execution source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION LIDENT DEFINED_AS YEAR ## -## Ends in an error in state: 270. +## Ends in an error in state: 273. ## ## definition -> option(label) option(exception_to) DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) option(state) option(condition_consequence) DEFINED_AS . expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -453,7 +453,7 @@ expected an expression for the definition source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION LIDENT OF LIDENT DECREASING ## -## Ends in an error in state: 267. +## Ends in an error in state: 270. ## ## definition -> option(label) option(exception_to) DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) . option(state) option(condition_consequence) DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -465,7 +465,7 @@ expected a expression for defining this function, introduced by the defined as k source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION LIDENT WITH_V ## -## Ends in an error in state: 266. +## Ends in an error in state: 269. ## ## definition -> option(label) option(exception_to) DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) . option(definition_parameters) option(state) option(condition_consequence) DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -476,14 +476,14 @@ source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION LIDENT WITH_V ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 221, spurious reduction of production separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT +## In state 224, spurious reduction of production separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT ## expected the defined as keyword to introduce the definition of this variable source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION YEAR ## -## Ends in an error in state: 265. +## Ends in an error in state: 268. ## ## definition -> option(label) option(exception_to) DEFINITION . separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) option(state) option(condition_consequence) DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -495,7 +495,7 @@ expected the name of the variable you want to define source_file: BEGIN_CODE SCOPE UIDENT COLON EXCEPTION LIDENT YEAR ## -## Ends in an error in state: 248. +## Ends in an error in state: 251. ## ## definition -> option(label) option(exception_to) . DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) option(state) option(condition_consequence) DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## rule -> option(label) option(exception_to) . RULE rule_expr option(condition_consequence) option(state) rule_consequence [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] @@ -508,7 +508,7 @@ expected a rule or a definition after the exception declaration source_file: BEGIN_CODE SCOPE UIDENT COLON EXCEPTION YEAR ## -## Ends in an error in state: 245. +## Ends in an error in state: 248. ## ## exception_to -> EXCEPTION . option(lident) [ RULE DEFINITION ] ## @@ -520,7 +520,7 @@ expected the label to which the exception is referring back source_file: BEGIN_CODE SCOPE UIDENT COLON LABEL LIDENT DEFINED_AS ## -## Ends in an error in state: 244. +## Ends in an error in state: 247. ## ## definition -> option(label) . option(exception_to) DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) option(state) option(condition_consequence) DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## rule -> option(label) . option(exception_to) RULE rule_expr option(condition_consequence) option(state) rule_consequence [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] @@ -533,7 +533,7 @@ expected a rule or a definition after the label declaration source_file: BEGIN_CODE SCOPE UIDENT COLON LABEL YEAR ## -## Ends in an error in state: 217. +## Ends in an error in state: 220. ## ## label -> LABEL . lident [ RULE EXCEPTION DEFINITION ] ## @@ -545,7 +545,7 @@ expected the name of the label source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT DOT YEAR ## -## Ends in an error in state: 222. +## Ends in an error in state: 225. ## ## separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT DOT . separated_nonempty_list(DOT,addpos(LIDENT)) [ WITH_V UNDER_CONDITION STATE OF NOT FILLED DEFINED_AS BY ] ## @@ -557,7 +557,7 @@ expected a struct field or a sub-scope context item after the dot source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT NOT FALSE ## -## Ends in an error in state: 263. +## Ends in an error in state: 266. ## ## rule_consequence -> option(NOT) . FILLED [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -569,7 +569,7 @@ expected the filled keyword the this rule source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT OF LIDENT YEAR ## -## Ends in an error in state: 255. +## Ends in an error in state: 258. ## ## rule -> option(label) option(exception_to) RULE rule_expr . option(condition_consequence) option(state) rule_consequence [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -581,7 +581,7 @@ expected the expression of the rule source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT OF YEAR ## -## Ends in an error in state: 251. +## Ends in an error in state: 254. ## ## definition_parameters -> OF . lident [ UNDER_CONDITION STATE NOT FILLED DEFINED_AS ] ## @@ -593,7 +593,7 @@ expected the name of the parameter for this dependent variable source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT WITH_V ## -## Ends in an error in state: 250. +## Ends in an error in state: 253. ## ## rule_expr -> separated_nonempty_list(DOT,addpos(LIDENT)) . option(definition_parameters) [ UNDER_CONDITION STATE NOT FILLED ] ## @@ -604,14 +604,14 @@ source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT WITH_V ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 221, spurious reduction of production separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT +## In state 224, spurious reduction of production separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT ## expected a condition or a consequence for this rule source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT YEAR ## -## Ends in an error in state: 221. +## Ends in an error in state: 224. ## ## separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT . [ WITH_V UNDER_CONDITION STATE OF NOT FILLED DEFINED_AS BY ] ## separated_nonempty_list(DOT,addpos(LIDENT)) -> LIDENT . DOT separated_nonempty_list(DOT,addpos(LIDENT)) [ WITH_V UNDER_CONDITION STATE OF NOT FILLED DEFINED_AS BY ] @@ -624,7 +624,7 @@ expected a condition or a consequence for this rule, or the rest of the variable source_file: BEGIN_CODE SCOPE UIDENT COLON RULE YEAR ## -## Ends in an error in state: 249. +## Ends in an error in state: 252. ## ## rule -> option(label) option(exception_to) RULE . rule_expr option(condition_consequence) option(state) rule_consequence [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -636,7 +636,7 @@ expected the name of the variable subject to the rule source_file: BEGIN_CODE SCOPE UIDENT COLON YEAR ## -## Ends in an error in state: 216. +## Ends in an error in state: 219. ## ## code_item -> SCOPE UIDENT option(preceded(UNDER_CONDITION,expression)) COLON . nonempty_list(addpos(scope_item)) [ SCOPE END_CODE DECLARATION ] ## @@ -650,9 +650,9 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT YEAR ## ## Ends in an error in state: 10. ## -## expression -> UIDENT . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## quident -> UIDENT . DOT quident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LBRACE LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTENT CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## quident -> UIDENT . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LBRACE LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTENT CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> UIDENT . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## quident -> UIDENT . DOT quident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LBRACE LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTENT CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## quident -> UIDENT . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LBRACE LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTENT CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## UIDENT @@ -664,7 +664,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION EXISTS LIDENT YEAR ## ## Ends in an error in state: 70. ## -## expression -> EXISTS lident . AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> EXISTS lident . AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## EXISTS lident @@ -676,7 +676,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION EXISTS YEAR ## ## Ends in an error in state: 69. ## -## expression -> EXISTS . lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> EXISTS . lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## EXISTS @@ -688,7 +688,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION FOR ALL LIDENT YEAR ## ## Ends in an error in state: 66. ## -## expression -> FOR ALL lident . AMONG expression WE_HAVE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> FOR ALL lident . AMONG expression WE_HAVE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## FOR ALL lident @@ -700,7 +700,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION FOR ALL YEAR ## ## Ends in an error in state: 65. ## -## expression -> FOR ALL . lident AMONG expression WE_HAVE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> FOR ALL . lident AMONG expression WE_HAVE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## FOR ALL @@ -712,7 +712,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION FOR YEAR ## ## Ends in an error in state: 64. ## -## expression -> FOR . ALL lident AMONG expression WE_HAVE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> FOR . ALL lident AMONG expression WE_HAVE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## FOR @@ -722,10 +722,10 @@ expected the "all" keyword to mean the "for all" construction of the universal t source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION IF TRUE SEMICOLON ## -## Ends in an error in state: 164. +## Ends in an error in state: 167. ## ## expression -> expression . DOT qlident [ XOR WITH THEN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> expression . OF expression [ XOR WITH THEN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OF funcall_args [ XOR WITH THEN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH THEN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . CONTAINS expression [ XOR WITH THEN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH THEN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] @@ -743,7 +743,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION IF TRUE SEMICOLON ## expression -> expression . AND expression [ XOR WITH THEN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . OR expression [ XOR WITH THEN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . XOR expression [ XOR WITH THEN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> IF expression . THEN expression ELSE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> IF expression . THEN expression ELSE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH THEN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## ## The known suffix of the stack is as follows: @@ -756,7 +756,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION IF YEAR ## ## Ends in an error in state: 63. ## -## expression -> IF . expression THEN expression ELSE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> IF . expression THEN expression ELSE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## IF @@ -768,7 +768,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION INT_LITERAL WITH_V ## ## Ends in an error in state: 57. ## -## literal -> INT_LITERAL . option(addpos(unit_literal)) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## literal -> INT_LITERAL . option(addpos(unit_literal)) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## INT_LITERAL @@ -778,11 +778,11 @@ expected a unit for this literal, or a valid operator to complete the expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LPAREN TRUE THEN ## -## Ends in an error in state: 178. +## Ends in an error in state: 181. ## -## expression -> LPAREN expression . RPAREN [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> LPAREN expression . RPAREN [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## expression -> expression . DOT qlident [ XOR WITH RPAREN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> expression . OF expression [ XOR WITH RPAREN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OF funcall_args [ XOR WITH RPAREN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH RPAREN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . CONTAINS expression [ XOR WITH RPAREN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH RPAREN PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] @@ -812,7 +812,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LPAREN YEAR ## ## Ends in an error in state: 51. ## -## expression -> LPAREN . expression RPAREN [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> LPAREN . expression RPAREN [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## LPAREN @@ -822,10 +822,10 @@ expected an expression inside the parenthesis source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LBRACKET TRUE THEN ## -## Ends in an error in state: 172. +## Ends in an error in state: 175. ## ## expression -> expression . DOT qlident [ XOR WITH SEMICOLON RBRACKET PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> expression . OF expression [ XOR WITH SEMICOLON RBRACKET PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OF funcall_args [ XOR WITH SEMICOLON RBRACKET PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH SEMICOLON RBRACKET PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . CONTAINS expression [ XOR WITH SEMICOLON RBRACKET PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH SEMICOLON RBRACKET PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] @@ -857,7 +857,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LBRACKET YEAR ## ## Ends in an error in state: 56. ## -## expression -> LBRACKET . loption(separated_nonempty_list(SEMICOLON,expression)) RBRACKET [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> LBRACKET . loption(separated_nonempty_list(SEMICOLON,expression)) RBRACKET [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## LBRACKET @@ -867,10 +867,10 @@ expected a collection element source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH TRUE WITH ALT YEAR ## -## Ends in an error in state: 182. +## Ends in an error in state: 185. ## -## nonempty_list(addpos(preceded(ALT,match_arm))) -> ALT . match_arm [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## nonempty_list(addpos(preceded(ALT,match_arm))) -> ALT . match_arm nonempty_list(addpos(preceded(ALT,match_arm))) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## nonempty_list(addpos(preceded(ALT,match_arm))) -> ALT . match_arm [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## nonempty_list(addpos(preceded(ALT,match_arm))) -> ALT . match_arm nonempty_list(addpos(preceded(ALT,match_arm))) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## ALT @@ -880,10 +880,10 @@ expected the name of the constructor for the enum case in the pattern matching source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH TRUE WITH YEAR ## -## Ends in an error in state: 181. +## Ends in an error in state: 184. ## ## expression -> expression WITH . constructor_binding [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> MATCH expression WITH . nonempty_list(addpos(preceded(ALT,match_arm))) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MATCH expression WITH . nonempty_list(addpos(preceded(ALT,match_arm))) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## MATCH expression WITH @@ -895,7 +895,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH YEAR ## ## Ends in an error in state: 50. ## -## expression -> MATCH . expression WITH nonempty_list(addpos(preceded(ALT,match_arm))) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MATCH . expression WITH nonempty_list(addpos(preceded(ALT,match_arm))) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## MATCH @@ -905,10 +905,10 @@ expected an expression to match with source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION TRUE YEAR ## -## Ends in an error in state: 214. +## Ends in an error in state: 217. ## ## expression -> expression . DOT qlident [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS COLON AND ] -## expression -> expression . OF expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS COLON AND ] +## expression -> expression . OF funcall_args [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS COLON AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS COLON AND ] ## expression -> expression . CONTAINS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS COLON AND ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS COLON AND ] @@ -974,7 +974,7 @@ expected the name of the scope being used source_file: BEGIN_CODE YEAR ## -## Ends in an error in state: 370. +## Ends in an error in state: 373. ## ## source_file_item -> BEGIN_CODE . code END_CODE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] ## @@ -1035,8 +1035,8 @@ source_file: BEGIN_METADATA LAW_TEXT LAW_HEADING ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 1, spurious reduction of production nonempty_list(LAW_TEXT) -> LAW_TEXT -## In state 359, spurious reduction of production law_text -> nonempty_list(LAW_TEXT) -## In state 360, spurious reduction of production option(law_text) -> law_text +## In state 362, spurious reduction of production law_text -> nonempty_list(LAW_TEXT) +## In state 363, spurious reduction of production option(law_text) -> law_text ## expected some law text or code block @@ -1045,8 +1045,8 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT DOT YEAR ## ## Ends in an error in state: 11. ## -## expression -> UIDENT DOT . qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## quident -> UIDENT DOT . quident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LBRACE LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTENT CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> UIDENT DOT . qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## quident -> UIDENT DOT . quident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LBRACE LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTENT CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## UIDENT DOT @@ -1059,9 +1059,9 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT DOT UIDENT YEAR ## ## Ends in an error in state: 12. ## -## qlident -> UIDENT . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## quident -> UIDENT . DOT quident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LBRACE LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTENT CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## quident -> UIDENT . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LBRACE LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTENT CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## qlident -> UIDENT . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## quident -> UIDENT . DOT quident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LBRACE LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTENT CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## quident -> UIDENT . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LBRACE LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTENT CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## UIDENT @@ -1076,8 +1076,8 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT DOT UIDENT DOT YEAR ## ## Ends in an error in state: 13. ## -## qlident -> UIDENT DOT . qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## quident -> UIDENT DOT . quident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LBRACE LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTENT CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## qlident -> UIDENT DOT . qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## quident -> UIDENT DOT . quident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LBRACE LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTENT CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## UIDENT DOT @@ -1090,7 +1090,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION SUM YEAR ## ## Ends in an error in state: 20. ## -## expression -> SUM . typ_base OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> SUM . typ_base OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## SUM @@ -1130,7 +1130,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION SUM BOOLEAN YEAR ## ## Ends in an error in state: 30. ## -## expression -> SUM typ_base . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> SUM typ_base . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## SUM typ_base @@ -1142,7 +1142,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION SUM UIDENT OF YEAR ## ## Ends in an error in state: 31. ## -## expression -> SUM typ_base OF . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> SUM typ_base OF . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## SUM typ_base OF @@ -1154,7 +1154,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION OUTPUT YEAR ## ## Ends in an error in state: 32. ## -## expression -> OUTPUT . OF quident option(scope_call_args) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> OUTPUT . OF quident option(scope_call_args) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## OUTPUT @@ -1166,7 +1166,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION OUTPUT OF YEAR ## ## Ends in an error in state: 33. ## -## expression -> OUTPUT OF . quident option(scope_call_args) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> OUTPUT OF . quident option(scope_call_args) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## OUTPUT OF @@ -1178,7 +1178,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION OUTPUT OF UIDENT STATE ## ## Ends in an error in state: 34. ## -## expression -> OUTPUT OF quident . option(scope_call_args) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> OUTPUT OF quident . option(scope_call_args) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## OUTPUT OF quident @@ -1197,7 +1197,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION OUTPUT OF UIDENT WITH_V YEA ## ## Ends in an error in state: 35. ## -## option(scope_call_args) -> WITH_V . LBRACE list(preceded(ALT,struct_content_field)) RBRACE [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## option(scope_call_args) -> WITH_V . LBRACE list(preceded(ALT,struct_content_field)) RBRACE [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## WITH_V @@ -1209,7 +1209,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION OUTPUT OF UIDENT WITH_V LBR ## ## Ends in an error in state: 36. ## -## option(scope_call_args) -> WITH_V LBRACE . list(preceded(ALT,struct_content_field)) RBRACE [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## option(scope_call_args) -> WITH_V LBRACE . list(preceded(ALT,struct_content_field)) RBRACE [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## WITH_V LBRACE @@ -1257,7 +1257,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION NOT YEAR ## ## Ends in an error in state: 42. ## -## expression -> NOT . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> NOT . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## NOT @@ -1269,7 +1269,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINUS YEAR ## ## Ends in an error in state: 45. ## -## expression -> MINUS . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MINUS . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## MINUS @@ -1281,7 +1281,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINIMUM YEAR ## ## Ends in an error in state: 46. ## -## expression -> MINIMUM . OF expression OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MINIMUM . OF expression OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## MINIMUM @@ -1293,7 +1293,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINIMUM OF YEAR ## ## Ends in an error in state: 47. ## -## expression -> MINIMUM OF . expression OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MINIMUM OF . expression OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## MINIMUM OF @@ -1305,7 +1305,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MAXIMUM YEAR ## ## Ends in an error in state: 48. ## -## expression -> MAXIMUM . OF expression OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MAXIMUM . OF expression OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## MAXIMUM @@ -1317,7 +1317,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MAXIMUM OF YEAR ## ## Ends in an error in state: 49. ## -## expression -> MAXIMUM OF . expression OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MAXIMUM OF . expression OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## MAXIMUM OF @@ -1329,7 +1329,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT YEAR ## ## Ends in an error in state: 52. ## -## expression -> LIDENT . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> LIDENT . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## lident -> LIDENT . [ AMONG ] ## ## The known suffix of the stack is as follows: @@ -1342,7 +1342,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LET YEAR ## ## Ends in an error in state: 53. ## -## expression -> LET . lident DEFINED_AS expression IN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> LET . lident DEFINED_AS expression IN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## LET @@ -1354,7 +1354,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LET LIDENT YEAR ## ## Ends in an error in state: 54. ## -## expression -> LET lident . DEFINED_AS expression IN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> LET lident . DEFINED_AS expression IN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## LET lident @@ -1366,7 +1366,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LET LIDENT DEFINED_AS YEAR ## ## Ends in an error in state: 55. ## -## expression -> LET lident DEFINED_AS . expression IN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> LET lident DEFINED_AS . expression IN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## LET lident DEFINED_AS @@ -1378,7 +1378,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION FOR ALL LIDENT AMONG YEAR ## ## Ends in an error in state: 67. ## -## expression -> FOR ALL lident AMONG . expression WE_HAVE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> FOR ALL lident AMONG . expression WE_HAVE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## FOR ALL lident AMONG @@ -1390,7 +1390,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION EXISTS LIDENT AMONG YEAR ## ## Ends in an error in state: 71. ## -## expression -> EXISTS lident AMONG . expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> EXISTS lident AMONG . expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## EXISTS lident AMONG @@ -1402,7 +1402,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION DECIMAL_LITERAL WITH_V ## ## Ends in an error in state: 72. ## -## literal -> DECIMAL_LITERAL . option(addpos(unit_literal)) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## literal -> DECIMAL_LITERAL . option(addpos(unit_literal)) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## DECIMAL_LITERAL @@ -1414,7 +1414,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT LBRACE YEAR ## ## Ends in an error in state: 78. ## -## expression -> quident LBRACE . nonempty_list(preceded(ALT,struct_content_field)) RBRACE [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> quident LBRACE . nonempty_list(preceded(ALT,struct_content_field)) RBRACE [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## quident LBRACE @@ -1439,7 +1439,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT CONTENT YEAR ## ## Ends in an error in state: 84. ## -## option(preceded(CONTENT,expression)) -> CONTENT . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## option(preceded(CONTENT,expression)) -> CONTENT . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## CONTENT @@ -1451,9 +1451,9 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG YEAR ## ## Ends in an error in state: 87. ## -## expression -> lident AMONG . expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> lident AMONG . expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> lident AMONG . expression SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG . expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> lident AMONG . expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> lident AMONG . expression SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG @@ -1466,7 +1466,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG FALSE YEAR ## Ends in an error in state: 88. ## ## expression -> expression . DOT qlident [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> expression . OF expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OF funcall_args [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . CONTAINS expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] @@ -1484,10 +1484,10 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG FALSE YEAR ## expression -> expression . AND expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . OR expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . XOR expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> lident AMONG expression . SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression . SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> lident AMONG expression . SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> lident AMONG expression . SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression . SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression . SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression @@ -1499,7 +1499,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT XOR YEAR ## ## Ends in an error in state: 89. ## -## expression -> expression XOR . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression XOR . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression XOR @@ -1511,27 +1511,27 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT XOR FALSE YEAR ## ## Ends in an error in state: 90. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression XOR expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression XOR expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression XOR expression @@ -1543,7 +1543,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT WITH YEAR ## ## Ends in an error in state: 91. ## -## expression -> expression WITH . constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression WITH . constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression WITH @@ -1555,8 +1555,8 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT WITH UIDENT WITH_V ## ## Ends in an error in state: 92. ## -## constructor_binding -> quident . OF lident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## constructor_binding -> quident . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## constructor_binding -> quident . OF lident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## constructor_binding -> quident . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## quident @@ -1576,7 +1576,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT WITH UIDENT OF YEAR ## ## Ends in an error in state: 93. ## -## constructor_binding -> quident OF . lident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## constructor_binding -> quident OF . lident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## quident OF @@ -1588,7 +1588,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT PLUSPLUS YEAR ## ## Ends in an error in state: 96. ## -## expression -> expression PLUSPLUS . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression PLUSPLUS . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression PLUSPLUS @@ -1600,27 +1600,27 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT PLUSPLUS FALSE YEAR ## ## Ends in an error in state: 97. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression PLUSPLUS expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression PLUSPLUS expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression PLUSPLUS expression @@ -1632,7 +1632,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT OF YEAR ## ## Ends in an error in state: 98. ## -## expression -> expression OF . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression OF . funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression OF @@ -1642,42 +1642,43 @@ expected an expression specifying the function argument source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT OF FALSE YEAR ## -## Ends in an error in state: 99. +## Ends in an error in state: 100. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression OF expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## funcall_args -> expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## funcall_args -> expression . COMMA funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: -## expression OF expression +## expression ## expected a binary operator continuing the expression, or a keyword ending the expression and starting the next item source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT FOR YEAR ## -## Ends in an error in state: 100. +## Ends in an error in state: 101. ## -## expression -> expression FOR . lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression FOR . lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression FOR . lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression FOR . lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression FOR @@ -1687,10 +1688,10 @@ Expected an identifier as in the form ' for among expression FOR lident . AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression FOR lident . AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression FOR lident . AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression FOR lident . AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression FOR lident @@ -1700,10 +1701,10 @@ Expected 'in', as in the form ' for among ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT FOR LIDENT AMONG YEAR ## -## Ends in an error in state: 102. +## Ends in an error in state: 103. ## -## expression -> expression FOR lident AMONG . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression FOR lident AMONG . expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression FOR lident AMONG . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression FOR lident AMONG . expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression FOR lident AMONG @@ -1713,30 +1714,30 @@ expected an expression defining a collection source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT FOR LIDENT AMONG FALSE YEAR ## -## Ends in an error in state: 103. +## Ends in an error in state: 104. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression FOR lident AMONG expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression FOR lident AMONG expression . SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression FOR lident AMONG expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression FOR lident AMONG expression . SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression FOR lident AMONG expression @@ -1746,9 +1747,9 @@ Expected 'such that ', or a binary operator continuing the expressio source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT FOR LIDENT AMONG UIDENT SUCH YEAR ## -## Ends in an error in state: 104. +## Ends in an error in state: 105. ## -## expression -> expression FOR lident AMONG expression SUCH . THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression FOR lident AMONG expression SUCH . THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression FOR lident AMONG expression SUCH @@ -1758,9 +1759,9 @@ expected the form 'such that ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT FOR LIDENT AMONG UIDENT SUCH THAT YEAR ## -## Ends in an error in state: 105. +## Ends in an error in state: 106. ## -## expression -> expression FOR lident AMONG expression SUCH THAT . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression FOR lident AMONG expression SUCH THAT . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression FOR lident AMONG expression SUCH THAT @@ -1771,29 +1772,29 @@ collection source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT FOR LIDENT AMONG UIDENT SUCH THAT FALSE YEAR ## -## Ends in an error in state: 106. +## Ends in an error in state: 107. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression FOR lident AMONG expression SUCH THAT expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression FOR lident AMONG expression SUCH THAT expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression FOR lident AMONG expression SUCH THAT expression @@ -1803,9 +1804,9 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT PLUS YEAR ## -## Ends in an error in state: 107. +## Ends in an error in state: 108. ## -## expression -> expression PLUS . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression PLUS . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression PLUS @@ -1815,29 +1816,29 @@ expected an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT PLUS FALSE YEAR ## -## Ends in an error in state: 108. +## Ends in an error in state: 109. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression PLUS expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression PLUS expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression PLUS expression @@ -1847,9 +1848,9 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT MULT YEAR ## -## Ends in an error in state: 109. +## Ends in an error in state: 110. ## -## expression -> expression MULT . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression MULT . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression MULT @@ -1859,29 +1860,29 @@ expected an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT MULT FALSE YEAR ## -## Ends in an error in state: 110. +## Ends in an error in state: 111. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression MULT expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression MULT expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression MULT expression @@ -1891,9 +1892,9 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION DECIMAL_LITERAL DOT YEAR ## -## Ends in an error in state: 111. +## Ends in an error in state: 112. ## -## expression -> expression DOT . qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression DOT . qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression DOT @@ -1903,9 +1904,9 @@ expected a structure field or sub-scope variable name source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION DECIMAL_LITERAL DOT UIDENT YEAR ## -## Ends in an error in state: 112. +## Ends in an error in state: 113. ## -## qlident -> UIDENT . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## qlident -> UIDENT . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## UIDENT @@ -1915,9 +1916,9 @@ expected a dot forming a module path, as in 'Module.variable', or a binary opera source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION DECIMAL_LITERAL DOT UIDENT DOT YEAR ## -## Ends in an error in state: 113. +## Ends in an error in state: 114. ## -## qlident -> UIDENT DOT . qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## qlident -> UIDENT DOT . qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## UIDENT DOT @@ -1927,9 +1928,9 @@ expected a module path, as in 'Module.Submodule.variable' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT CONTAINS YEAR ## -## Ends in an error in state: 115. +## Ends in an error in state: 116. ## -## expression -> expression CONTAINS . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression CONTAINS . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression CONTAINS @@ -1939,29 +1940,29 @@ expected an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT CONTAINS FALSE YEAR ## -## Ends in an error in state: 116. +## Ends in an error in state: 117. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression CONTAINS expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression CONTAINS expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression CONTAINS expression @@ -1971,9 +1972,9 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT DIV YEAR ## -## Ends in an error in state: 117. +## Ends in an error in state: 118. ## -## expression -> expression DIV . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression DIV . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression DIV @@ -1983,29 +1984,29 @@ expected an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT DIV FALSE YEAR ## -## Ends in an error in state: 118. +## Ends in an error in state: 119. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression DIV expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression DIV expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression DIV expression @@ -2015,9 +2016,9 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT OR YEAR ## -## Ends in an error in state: 119. +## Ends in an error in state: 120. ## -## expression -> expression OR . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression OR . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression OR @@ -2027,29 +2028,29 @@ expected an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT OR FALSE YEAR ## -## Ends in an error in state: 120. +## Ends in an error in state: 121. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression OR expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression OR expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression OR expression @@ -2059,9 +2060,9 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT NOT_EQUAL YEAR ## -## Ends in an error in state: 121. +## Ends in an error in state: 122. ## -## expression -> expression NOT_EQUAL . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression NOT_EQUAL . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression NOT_EQUAL @@ -2071,29 +2072,29 @@ expected an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT NOT_EQUAL FALSE YEAR ## -## Ends in an error in state: 122. +## Ends in an error in state: 123. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression NOT_EQUAL expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression NOT_EQUAL expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression NOT_EQUAL expression @@ -2103,9 +2104,9 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT MINUS YEAR ## -## Ends in an error in state: 123. +## Ends in an error in state: 124. ## -## expression -> expression MINUS . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression MINUS . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression MINUS @@ -2115,29 +2116,29 @@ expected an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT MINUS FALSE YEAR ## -## Ends in an error in state: 124. +## Ends in an error in state: 125. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression MINUS expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression MINUS expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression MINUS expression @@ -2147,9 +2148,9 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT LESSER_EQUAL YEAR ## -## Ends in an error in state: 125. +## Ends in an error in state: 126. ## -## expression -> expression LESSER_EQUAL . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression LESSER_EQUAL . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression LESSER_EQUAL @@ -2159,29 +2160,29 @@ expected an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT LESSER_EQUAL FALSE YEAR ## -## Ends in an error in state: 126. +## Ends in an error in state: 127. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression LESSER_EQUAL expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression LESSER_EQUAL expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression LESSER_EQUAL expression @@ -2191,9 +2192,9 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT LESSER YEAR ## -## Ends in an error in state: 127. +## Ends in an error in state: 128. ## -## expression -> expression LESSER . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression LESSER . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression LESSER @@ -2203,29 +2204,29 @@ expected an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT LESSER FALSE YEAR ## -## Ends in an error in state: 128. +## Ends in an error in state: 129. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression LESSER expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression LESSER expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression LESSER expression @@ -2235,9 +2236,9 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT GREATER_EQUAL YEAR ## -## Ends in an error in state: 129. +## Ends in an error in state: 130. ## -## expression -> expression GREATER_EQUAL . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression GREATER_EQUAL . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression GREATER_EQUAL @@ -2247,29 +2248,29 @@ expected an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT GREATER_EQUAL FALSE YEAR ## -## Ends in an error in state: 130. +## Ends in an error in state: 131. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression GREATER_EQUAL expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression GREATER_EQUAL expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression GREATER_EQUAL expression @@ -2279,9 +2280,9 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT GREATER YEAR ## -## Ends in an error in state: 131. +## Ends in an error in state: 132. ## -## expression -> expression GREATER . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression GREATER . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression GREATER @@ -2291,29 +2292,29 @@ expected an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT GREATER FALSE YEAR ## -## Ends in an error in state: 132. +## Ends in an error in state: 133. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression GREATER expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression GREATER expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression GREATER expression @@ -2323,9 +2324,9 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT EQUAL YEAR ## -## Ends in an error in state: 133. +## Ends in an error in state: 134. ## -## expression -> expression EQUAL . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression EQUAL . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression EQUAL @@ -2335,29 +2336,29 @@ expected an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT EQUAL FALSE YEAR ## -## Ends in an error in state: 134. +## Ends in an error in state: 135. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression EQUAL expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression EQUAL expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression EQUAL expression @@ -2367,9 +2368,9 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT AND YEAR ## -## Ends in an error in state: 135. +## Ends in an error in state: 136. ## -## expression -> expression AND . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression AND . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression AND @@ -2379,29 +2380,29 @@ expected an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT AND FALSE YEAR ## -## Ends in an error in state: 136. +## Ends in an error in state: 137. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression AND expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression AND expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## expression AND expression @@ -2411,11 +2412,11 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH YEAR ## -## Ends in an error in state: 137. +## Ends in an error in state: 140. ## -## expression -> lident AMONG expression SUCH . THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> lident AMONG expression SUCH . THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> lident AMONG expression SUCH . THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH . THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH . THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH . THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression SUCH @@ -2425,11 +2426,11 @@ expected the form ' among such that ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT YEAR ## -## Ends in an error in state: 138. +## Ends in an error in state: 141. ## -## expression -> lident AMONG expression SUCH THAT . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> lident AMONG expression SUCH THAT . expression IS MAXIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> lident AMONG expression SUCH THAT . expression IS MINIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT . expression IS MAXIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT . expression IS MINIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression SUCH THAT @@ -2439,31 +2440,31 @@ expected the form ' among such that ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT FALSE YEAR ## -## Ends in an error in state: 139. +## Ends in an error in state: 142. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> lident AMONG expression SUCH THAT expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> lident AMONG expression SUCH THAT expression . IS MAXIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> lident AMONG expression SUCH THAT expression . IS MINIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression . IS MAXIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression . IS MINIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression SUCH THAT expression @@ -2473,10 +2474,10 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS YEAR ## -## Ends in an error in state: 140. +## Ends in an error in state: 143. ## -## expression -> lident AMONG expression SUCH THAT expression IS . MAXIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> lident AMONG expression SUCH THAT expression IS . MINIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS . MAXIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS . MINIMUM OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression SUCH THAT expression IS @@ -2486,9 +2487,9 @@ expected 'maximum' or 'minimum' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MINIMUM YEAR ## -## Ends in an error in state: 141. +## Ends in an error in state: 144. ## -## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM . OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM . OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression SUCH THAT expression IS MINIMUM @@ -2498,9 +2499,9 @@ expected 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MINIMUM OR YEAR ## -## Ends in an error in state: 142. +## Ends in an error in state: 145. ## -## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM OR . IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM OR . IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression SUCH THAT expression IS MINIMUM OR @@ -2510,9 +2511,9 @@ expected the form 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MINIMUM OR IF YEAR ## -## Ends in an error in state: 143. +## Ends in an error in state: 146. ## -## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM OR IF . COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM OR IF . COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression SUCH THAT expression IS MINIMUM OR IF @@ -2522,9 +2523,9 @@ expected the form 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MINIMUM OR IF COLLECTION YEAR ## -## Ends in an error in state: 144. +## Ends in an error in state: 147. ## -## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION . EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION . EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION @@ -2534,9 +2535,9 @@ expected the form 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MINIMUM OR IF COLLECTION EMPTY YEAR ## -## Ends in an error in state: 145. +## Ends in an error in state: 148. ## -## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY . THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY . THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY @@ -2546,9 +2547,9 @@ expected the form 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MINIMUM OR IF COLLECTION EMPTY THEN YEAR ## -## Ends in an error in state: 146. +## Ends in an error in state: 149. ## -## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN @@ -2559,29 +2560,29 @@ expected an expression, following the form 'or if collection empty then source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MINIMUM OR IF COLLECTION EMPTY THEN FALSE YEAR ## -## Ends in an error in state: 147. +## Ends in an error in state: 150. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression SUCH THAT expression IS MINIMUM OR IF COLLECTION EMPTY THEN expression @@ -2591,9 +2592,9 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MAXIMUM YEAR ## -## Ends in an error in state: 148. +## Ends in an error in state: 151. ## -## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM . OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM . OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression SUCH THAT expression IS MAXIMUM @@ -2603,9 +2604,9 @@ expected 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MAXIMUM OR YEAR ## -## Ends in an error in state: 149. +## Ends in an error in state: 152. ## -## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM OR . IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM OR . IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression SUCH THAT expression IS MAXIMUM OR @@ -2615,9 +2616,9 @@ expected the form 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MAXIMUM OR IF YEAR ## -## Ends in an error in state: 150. +## Ends in an error in state: 153. ## -## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF . COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF . COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF @@ -2627,9 +2628,9 @@ expected the form 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MAXIMUM OR IF COLLECTION YEAR ## -## Ends in an error in state: 151. +## Ends in an error in state: 154. ## -## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION . EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION . EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION @@ -2639,9 +2640,9 @@ expected the form 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MAXIMUM OR IF COLLECTION EMPTY YEAR ## -## Ends in an error in state: 152. +## Ends in an error in state: 155. ## -## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY . THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY . THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY @@ -2651,9 +2652,9 @@ expected the form 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LIDENT AMONG UIDENT SUCH THAT UIDENT IS MAXIMUM OR IF COLLECTION EMPTY THEN YEAR ## -## Ends in an error in state: 153. +## Ends in an error in state: 156. ## -## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN @@ -2663,29 +2664,29 @@ expected an expression, following the form 'or if collection empty then expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## lident AMONG expression SUCH THAT expression IS MAXIMUM OR IF COLLECTION EMPTY THEN expression @@ -2695,29 +2696,29 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT CONTENT FALSE YEAR ## -## Ends in an error in state: 155. +## Ends in an error in state: 158. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## option(preceded(CONTENT,expression)) -> CONTENT expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## option(preceded(CONTENT,expression)) -> CONTENT expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## CONTENT expression @@ -2727,10 +2728,10 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION EXISTS LIDENT AMONG FALSE YEAR ## -## Ends in an error in state: 157. +## Ends in an error in state: 160. ## ## expression -> expression . DOT qlident [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> expression . OF expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OF funcall_args [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . CONTAINS expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] @@ -2748,7 +2749,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION EXISTS LIDENT AMONG FALSE Y ## expression -> expression . AND expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . OR expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . XOR expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> EXISTS lident AMONG expression . SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> EXISTS lident AMONG expression . SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH SUCH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## ## The known suffix of the stack is as follows: @@ -2759,9 +2760,9 @@ expected 'such that ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION EXISTS LIDENT AMONG UIDENT SUCH YEAR ## -## Ends in an error in state: 158. +## Ends in an error in state: 161. ## -## expression -> EXISTS lident AMONG expression SUCH . THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> EXISTS lident AMONG expression SUCH . THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## EXISTS lident AMONG expression SUCH @@ -2771,9 +2772,9 @@ expected the form 'such that ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION EXISTS LIDENT AMONG UIDENT SUCH THAT YEAR ## -## Ends in an error in state: 159. +## Ends in an error in state: 162. ## -## expression -> EXISTS lident AMONG expression SUCH THAT . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> EXISTS lident AMONG expression SUCH THAT . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## EXISTS lident AMONG expression SUCH THAT @@ -2783,29 +2784,29 @@ expected an expression, following the form 'such that ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION EXISTS LIDENT AMONG UIDENT SUCH THAT FALSE YEAR ## -## Ends in an error in state: 160. +## Ends in an error in state: 163. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> EXISTS lident AMONG expression SUCH THAT expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> EXISTS lident AMONG expression SUCH THAT expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## EXISTS lident AMONG expression SUCH THAT expression @@ -2815,10 +2816,10 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION FOR ALL LIDENT AMONG FALSE YEAR ## -## Ends in an error in state: 161. +## Ends in an error in state: 164. ## ## expression -> expression . DOT qlident [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] @@ -2836,7 +2837,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION FOR ALL LIDENT AMONG FALSE ## expression -> expression . AND expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . OR expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . XOR expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> FOR ALL lident AMONG expression . WE_HAVE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> FOR ALL lident AMONG expression . WE_HAVE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## ## The known suffix of the stack is as follows: @@ -2847,9 +2848,9 @@ expected 'we have ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION FOR ALL LIDENT AMONG UIDENT WE_HAVE YEAR ## -## Ends in an error in state: 162. +## Ends in an error in state: 165. ## -## expression -> FOR ALL lident AMONG expression WE_HAVE . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> FOR ALL lident AMONG expression WE_HAVE . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## FOR ALL lident AMONG expression WE_HAVE @@ -2859,29 +2860,29 @@ expected the form 'we have ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION FOR ALL LIDENT AMONG UIDENT WE_HAVE FALSE YEAR ## -## Ends in an error in state: 163. +## Ends in an error in state: 166. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> FOR ALL lident AMONG expression WE_HAVE expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> FOR ALL lident AMONG expression WE_HAVE expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## FOR ALL lident AMONG expression WE_HAVE expression @@ -2891,9 +2892,9 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION IF UIDENT THEN YEAR ## -## Ends in an error in state: 165. +## Ends in an error in state: 168. ## -## expression -> IF expression THEN . expression ELSE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> IF expression THEN . expression ELSE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## IF expression THEN @@ -2903,10 +2904,10 @@ expected an expression, followed by 'else ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION IF UIDENT THEN FALSE YEAR ## -## Ends in an error in state: 166. +## Ends in an error in state: 169. ## ## expression -> expression . DOT qlident [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] -## expression -> expression . OF expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] +## expression -> expression . OF funcall_args [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] ## expression -> expression . CONTAINS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] @@ -2924,7 +2925,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION IF UIDENT THEN FALSE YEAR ## expression -> expression . AND expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] ## expression -> expression . OR expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] ## expression -> expression . XOR expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] -## expression -> IF expression THEN expression . ELSE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> IF expression THEN expression . ELSE expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL ELSE DOT DIV CONTAINS AND ] ## ## The known suffix of the stack is as follows: @@ -2935,9 +2936,9 @@ expected 'else ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION IF UIDENT THEN UIDENT ELSE YEAR ## -## Ends in an error in state: 167. +## Ends in an error in state: 170. ## -## expression -> IF expression THEN expression ELSE . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> IF expression THEN expression ELSE . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## IF expression THEN expression ELSE @@ -2947,29 +2948,29 @@ expected an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION IF UIDENT THEN UIDENT ELSE FALSE YEAR ## -## Ends in an error in state: 168. +## Ends in an error in state: 171. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> IF expression THEN expression ELSE expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> IF expression THEN expression ELSE expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## IF expression THEN expression ELSE expression @@ -2979,7 +2980,7 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LBRACKET UIDENT SEMICOLON YEAR ## -## Ends in an error in state: 173. +## Ends in an error in state: 176. ## ## separated_nonempty_list(SEMICOLON,expression) -> expression SEMICOLON . separated_nonempty_list(SEMICOLON,expression) [ RBRACKET ] ## @@ -2991,10 +2992,10 @@ expected an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LET LIDENT DEFINED_AS FALSE YEAR ## -## Ends in an error in state: 175. +## Ends in an error in state: 178. ## ## expression -> expression . DOT qlident [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> expression . OF expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OF funcall_args [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . CONTAINS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] @@ -3012,7 +3013,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LET LIDENT DEFINED_AS FALSE ## expression -> expression . AND expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . OR expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . XOR expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> LET lident DEFINED_AS expression . IN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> LET lident DEFINED_AS expression . IN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER IN GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## ## The known suffix of the stack is as follows: @@ -3023,9 +3024,9 @@ expected the keyword 'in' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LET LIDENT DEFINED_AS UIDENT IN YEAR ## -## Ends in an error in state: 176. +## Ends in an error in state: 179. ## -## expression -> LET lident DEFINED_AS expression IN . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> LET lident DEFINED_AS expression IN . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## LET lident DEFINED_AS expression IN @@ -3035,29 +3036,29 @@ expected an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION LET LIDENT DEFINED_AS UIDENT IN FALSE YEAR ## -## Ends in an error in state: 177. +## Ends in an error in state: 180. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> LET lident DEFINED_AS expression IN expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> LET lident DEFINED_AS expression IN expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## LET lident DEFINED_AS expression IN expression @@ -3067,10 +3068,10 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH FALSE YEAR ## -## Ends in an error in state: 180. +## Ends in an error in state: 183. ## ## expression -> expression . DOT qlident [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> expression . OF expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OF funcall_args [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . CONTAINS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] @@ -3088,7 +3089,7 @@ source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH FALSE YEAR ## expression -> expression . AND expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . OR expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . XOR expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> MATCH expression . WITH nonempty_list(addpos(preceded(ALT,match_arm))) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MATCH expression . WITH nonempty_list(addpos(preceded(ALT,match_arm))) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## ## The known suffix of the stack is as follows: @@ -3099,9 +3100,9 @@ expected 'with pattern -- : ...' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH UIDENT WITH ALT WILDCARD YEAR ## -## Ends in an error in state: 183. +## Ends in an error in state: 186. ## -## match_arm -> WILDCARD . COLON expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## match_arm -> WILDCARD . COLON expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## WILDCARD @@ -3111,9 +3112,9 @@ expected ':' followed by an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH UIDENT WITH ALT WILDCARD COLON YEAR ## -## Ends in an error in state: 184. +## Ends in an error in state: 187. ## -## match_arm -> WILDCARD COLON . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## match_arm -> WILDCARD COLON . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## WILDCARD COLON @@ -3123,29 +3124,29 @@ expected an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH UIDENT WITH ALT WILDCARD COLON FALSE YEAR ## -## Ends in an error in state: 185. +## Ends in an error in state: 188. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## match_arm -> WILDCARD COLON expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## match_arm -> WILDCARD COLON expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## WILDCARD COLON expression @@ -3155,9 +3156,9 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH UIDENT WITH ALT UIDENT XOR ## -## Ends in an error in state: 188. +## Ends in an error in state: 191. ## -## match_arm -> constructor_binding . COLON expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## match_arm -> constructor_binding . COLON expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## constructor_binding @@ -3174,9 +3175,9 @@ expected a colon followed by an expression, as in '-- Case : ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH UIDENT WITH ALT UIDENT COLON YEAR ## -## Ends in an error in state: 189. +## Ends in an error in state: 192. ## -## match_arm -> constructor_binding COLON . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## match_arm -> constructor_binding COLON . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## constructor_binding COLON @@ -3186,29 +3187,29 @@ expected an expression source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MATCH UIDENT WITH ALT UIDENT COLON FALSE YEAR ## -## Ends in an error in state: 190. +## Ends in an error in state: 193. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## match_arm -> constructor_binding COLON expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## match_arm -> constructor_binding COLON expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## constructor_binding COLON expression @@ -3219,14 +3220,14 @@ expected a binary operator, or the next case in the form '-- NextCase : expression . DOT qlident [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> expression . OF expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OF funcall_args [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . CONTAINS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> MAXIMUM OF expression . OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MAXIMUM OF expression . OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## expression -> expression . MULT expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . DIV expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . PLUS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] @@ -3251,9 +3252,9 @@ expected 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MAXIMUM OF UIDENT OR YEAR ## -## Ends in an error in state: 193. +## Ends in an error in state: 196. ## -## expression -> MAXIMUM OF expression OR . IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MAXIMUM OF expression OR . IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## expression -> expression OR . expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## ## The known suffix of the stack is as follows: @@ -3264,9 +3265,9 @@ expected the form 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MAXIMUM OF UIDENT OR IF YEAR ## -## Ends in an error in state: 194. +## Ends in an error in state: 197. ## -## expression -> MAXIMUM OF expression OR IF . COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MAXIMUM OF expression OR IF . COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## expression -> IF . expression THEN expression ELSE expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## ## The known suffix of the stack is as follows: @@ -3277,9 +3278,9 @@ expected the form 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MAXIMUM OF UIDENT OR IF COLLECTION YEAR ## -## Ends in an error in state: 195. +## Ends in an error in state: 198. ## -## expression -> MAXIMUM OF expression OR IF COLLECTION . EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MAXIMUM OF expression OR IF COLLECTION . EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## MAXIMUM OF expression OR IF COLLECTION @@ -3289,9 +3290,9 @@ expected the form 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MAXIMUM OF UIDENT OR IF COLLECTION EMPTY YEAR ## -## Ends in an error in state: 196. +## Ends in an error in state: 199. ## -## expression -> MAXIMUM OF expression OR IF COLLECTION EMPTY . THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MAXIMUM OF expression OR IF COLLECTION EMPTY . THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## MAXIMUM OF expression OR IF COLLECTION EMPTY @@ -3301,9 +3302,9 @@ expected the form 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MAXIMUM OF UIDENT OR IF COLLECTION EMPTY THEN YEAR ## -## Ends in an error in state: 197. +## Ends in an error in state: 200. ## -## expression -> MAXIMUM OF expression OR IF COLLECTION EMPTY THEN . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MAXIMUM OF expression OR IF COLLECTION EMPTY THEN . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## MAXIMUM OF expression OR IF COLLECTION EMPTY THEN @@ -3313,29 +3314,29 @@ expected an expression, following the form 'or if collection empty then expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> MAXIMUM OF expression OR IF COLLECTION EMPTY THEN expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> MAXIMUM OF expression OR IF COLLECTION EMPTY THEN expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## MAXIMUM OF expression OR IF COLLECTION EMPTY THEN expression @@ -3345,14 +3346,14 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINIMUM OF FALSE YEAR ## -## Ends in an error in state: 199. +## Ends in an error in state: 202. ## ## expression -> expression . DOT qlident [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> expression . OF expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] +## expression -> expression . OF funcall_args [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . CONTAINS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] -## expression -> MINIMUM OF expression . OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MINIMUM OF expression . OR IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## expression -> expression . MULT expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . DIV expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## expression -> expression . PLUS expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] @@ -3377,9 +3378,9 @@ expected 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINIMUM OF UIDENT OR YEAR ## -## Ends in an error in state: 200. +## Ends in an error in state: 203. ## -## expression -> MINIMUM OF expression OR . IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MINIMUM OF expression OR . IF COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## expression -> expression OR . expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## ## The known suffix of the stack is as follows: @@ -3390,9 +3391,9 @@ expected the form 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINIMUM OF UIDENT OR IF YEAR ## -## Ends in an error in state: 201. +## Ends in an error in state: 204. ## -## expression -> MINIMUM OF expression OR IF . COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MINIMUM OF expression OR IF . COLLECTION EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## expression -> IF . expression THEN expression ELSE expression [ XOR WITH PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ] ## ## The known suffix of the stack is as follows: @@ -3403,9 +3404,9 @@ expected the form 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINIMUM OF UIDENT OR IF COLLECTION YEAR ## -## Ends in an error in state: 202. +## Ends in an error in state: 205. ## -## expression -> MINIMUM OF expression OR IF COLLECTION . EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MINIMUM OF expression OR IF COLLECTION . EMPTY THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## MINIMUM OF expression OR IF COLLECTION @@ -3415,9 +3416,9 @@ expected the form 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINIMUM OF UIDENT OR IF COLLECTION EMPTY YEAR ## -## Ends in an error in state: 203. +## Ends in an error in state: 206. ## -## expression -> MINIMUM OF expression OR IF COLLECTION EMPTY . THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MINIMUM OF expression OR IF COLLECTION EMPTY . THEN expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## MINIMUM OF expression OR IF COLLECTION EMPTY @@ -3427,9 +3428,9 @@ expected the form 'or if collection empty then ' source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINIMUM OF UIDENT OR IF COLLECTION EMPTY THEN YEAR ## -## Ends in an error in state: 204. +## Ends in an error in state: 207. ## -## expression -> MINIMUM OF expression OR IF COLLECTION EMPTY THEN . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> MINIMUM OF expression OR IF COLLECTION EMPTY THEN . expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## MINIMUM OF expression OR IF COLLECTION EMPTY THEN @@ -3440,29 +3441,29 @@ expected an expression, following the form 'or if collection empty then source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINIMUM OF UIDENT OR IF COLLECTION EMPTY THEN FALSE YEAR ## -## Ends in an error in state: 205. +## Ends in an error in state: 208. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> MINIMUM OF expression OR IF COLLECTION EMPTY THEN expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> MINIMUM OF expression OR IF COLLECTION EMPTY THEN expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## MINIMUM OF expression OR IF COLLECTION EMPTY THEN expression @@ -3472,29 +3473,29 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION MINUS FALSE YEAR ## -## Ends in an error in state: 206. +## Ends in an error in state: 209. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> MINUS expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> MINUS expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## MINUS expression @@ -3504,29 +3505,29 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION NOT FALSE YEAR ## -## Ends in an error in state: 207. +## Ends in an error in state: 210. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> NOT expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> NOT expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## NOT expression @@ -3536,10 +3537,10 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION UIDENT LBRACE ALT LIDENT COLON FALSE YEAR ## -## Ends in an error in state: 208. +## Ends in an error in state: 211. ## ## expression -> expression . DOT qlident [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] -## expression -> expression . OF expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] ## expression -> expression . WITH constructor_binding [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] ## expression -> expression . CONTAINS expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL DOT DIV CONTAINS AND ALT ] @@ -3568,29 +3569,29 @@ expected another field in the form '-- : ', or a closing '}' br source_file: BEGIN_CODE SCOPE UIDENT UNDER_CONDITION SUM UIDENT OF FALSE YEAR ## -## Ends in an error in state: 212. +## Ends in an error in state: 215. ## -## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OF expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> SUM typ_base OF expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] -## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COLON ASSERTION AND ALT ] +## expression -> expression . DOT qlident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OF funcall_args [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . WITH constructor_binding [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . CONTAINS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> SUM typ_base OF expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MULT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . DIV expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . MINUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . PLUSPLUS expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . LESSER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . GREATER_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . NOT_EQUAL expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . AND expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . OR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . XOR expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] +## expression -> expression . FOR lident AMONG expression SUCH THAT expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RPAREN RBRACKET RBRACE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL IS INCREASING IN GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS CONSEQUENCE COMMA COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## SUM typ_base OF expression @@ -3600,11 +3601,11 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION VARIES LIDENT WITH_V FALSE YEAR ## -## Ends in an error in state: 226. +## Ends in an error in state: 229. ## ## assertion -> VARIES separated_nonempty_list(DOT,addpos(LIDENT)) WITH_V expression . option(addpos(variation_type)) [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## expression -> expression . DOT qlident [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] -## expression -> expression . OF expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . OF funcall_args [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] ## expression -> expression . CONTAINS expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL INCREASING GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECREASING DECLARATION CONTAINS ASSERTION AND ] @@ -3632,7 +3633,7 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE SCOPE UIDENT COLON ASSERTION UNDER_CONDITION UIDENT CONSEQUENCE YEAR ## -## Ends in an error in state: 238. +## Ends in an error in state: 241. ## ## assertion -> option(condition_consequence) . expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -3644,7 +3645,7 @@ expected either 'fulfilled' or 'not fulfilled' source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT FILLED YEAR ## -## Ends in an error in state: 242. +## Ends in an error in state: 245. ## ## nonempty_list(addpos(scope_item)) -> scope_item . [ SCOPE END_CODE DECLARATION ] ## nonempty_list(addpos(scope_item)) -> scope_item . nonempty_list(addpos(scope_item)) [ SCOPE END_CODE DECLARATION ] @@ -3657,7 +3658,7 @@ expected the next item in the scope, or the start of a new top-level decleration source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT UNDER_CONDITION UIDENT CONSEQUENCE YEAR ## -## Ends in an error in state: 256. +## Ends in an error in state: 259. ## ## rule -> option(label) option(exception_to) RULE rule_expr option(condition_consequence) . option(state) rule_consequence [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -3669,7 +3670,7 @@ expected either 'fulfilled' or 'not fulfilled' source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION LIDENT STATE YEAR ## -## Ends in an error in state: 257. +## Ends in an error in state: 260. ## ## state -> STATE . lident [ UNDER_CONDITION STATE SCOPE OUTPUT NOT LIDENT INTERNAL INPUT FILLED END_CODE DEFINED_AS DECLARATION CONTEXT ] ## @@ -3681,7 +3682,7 @@ expected an identifier defining the name of the state source_file: BEGIN_CODE SCOPE UIDENT COLON RULE LIDENT STATE LIDENT YEAR ## -## Ends in an error in state: 260. +## Ends in an error in state: 263. ## ## rule -> option(label) option(exception_to) RULE rule_expr option(condition_consequence) option(state) . rule_consequence [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -3693,7 +3694,7 @@ expected 'equals' then an expression defining the rule source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION LIDENT STATE LIDENT YEAR ## -## Ends in an error in state: 268. +## Ends in an error in state: 271. ## ## definition -> option(label) option(exception_to) DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) option(state) . option(condition_consequence) DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -3705,7 +3706,7 @@ expected 'equals' then an expression defining the rule source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION LIDENT UNDER_CONDITION UIDENT CONSEQUENCE YEAR ## -## Ends in an error in state: 269. +## Ends in an error in state: 272. ## ## definition -> option(label) option(exception_to) DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) option(state) option(condition_consequence) . DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -3717,11 +3718,11 @@ expected 'fulfilled' or 'not fulfilled' source_file: BEGIN_CODE SCOPE UIDENT COLON DEFINITION LIDENT DEFINED_AS FALSE YEAR ## -## Ends in an error in state: 271. +## Ends in an error in state: 274. ## ## definition -> option(label) option(exception_to) DEFINITION separated_nonempty_list(DOT,addpos(LIDENT)) option(definition_parameters) option(state) option(condition_consequence) DEFINED_AS expression . [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## expression -> expression . DOT qlident [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] -## expression -> expression . OF expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] +## expression -> expression . OF funcall_args [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] ## expression -> expression . CONTAINS expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH SCOPE RULE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER LABEL GREATER_EQUAL GREATER FOR EXCEPTION EQUAL END_CODE DOT DIV DEFINITION DECLARATION CONTAINS ASSERTION AND ] @@ -3749,7 +3750,7 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON CONTEXT YEAR ## -## Ends in an error in state: 304. +## Ends in an error in state: 307. ## ## scope_decl_item_attribute -> scope_decl_item_attribute_input . scope_decl_item_attribute_output [ LIDENT ] ## @@ -3761,7 +3762,7 @@ expected a variable name, optionally preceded by 'output' source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON INTERNAL YEAR ## -## Ends in an error in state: 307. +## Ends in an error in state: 310. ## ## scope_decl_item -> scope_decl_item_attribute . lident CONTENT typ option(struct_scope_func) list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] ## scope_decl_item -> scope_decl_item_attribute . lident CONDITION option(struct_scope_func) list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] @@ -3774,7 +3775,7 @@ expected a variable name source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON CONTEXT LIDENT YEAR ## -## Ends in an error in state: 308. +## Ends in an error in state: 311. ## ## scope_decl_item -> scope_decl_item_attribute lident . CONTENT typ option(struct_scope_func) list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] ## scope_decl_item -> scope_decl_item_attribute lident . CONDITION option(struct_scope_func) list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] @@ -3787,7 +3788,7 @@ expected either 'condition', or 'content' followed by the expected variable type source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON CONTEXT LIDENT CONTENT YEAR ## -## Ends in an error in state: 309. +## Ends in an error in state: 312. ## ## scope_decl_item -> scope_decl_item_attribute lident CONTENT . typ option(struct_scope_func) list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] ## @@ -3799,7 +3800,7 @@ expected a type source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON CONTEXT LIDENT CONTENT BOOLEAN YEAR ## -## Ends in an error in state: 310. +## Ends in an error in state: 313. ## ## scope_decl_item -> scope_decl_item_attribute lident CONTENT typ . option(struct_scope_func) list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] ## @@ -3812,7 +3813,7 @@ for the scope source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON CONTEXT LIDENT CONTENT UIDENT DEPENDS BOOLEAN YEAR ## -## Ends in an error in state: 311. +## Ends in an error in state: 314. ## ## scope_decl_item -> scope_decl_item_attribute lident CONTENT typ option(struct_scope_func) . list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] ## @@ -3825,7 +3826,7 @@ for the scope source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON CONTEXT LIDENT CONDITION STATE LIDENT YEAR ## -## Ends in an error in state: 312. +## Ends in an error in state: 315. ## ## list(state) -> state . list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] ## @@ -3838,7 +3839,7 @@ declaration for the scope source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON CONTEXT LIDENT CONDITION YEAR ## -## Ends in an error in state: 315. +## Ends in an error in state: 318. ## ## scope_decl_item -> scope_decl_item_attribute lident CONDITION . option(struct_scope_func) list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] ## @@ -3850,7 +3851,7 @@ expected the next declaration for the scope source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON CONTEXT LIDENT CONDITION DEPENDS BOOLEAN YEAR ## -## Ends in an error in state: 316. +## Ends in an error in state: 319. ## ## scope_decl_item -> scope_decl_item_attribute lident CONDITION option(struct_scope_func) . list(state) [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] ## @@ -3862,7 +3863,7 @@ expected the next declaration for the scope source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON LIDENT SCOPE UIDENT YEAR ## -## Ends in an error in state: 318. +## Ends in an error in state: 321. ## ## nonempty_list(addpos(scope_decl_item)) -> scope_decl_item . [ SCOPE END_CODE DECLARATION ] ## nonempty_list(addpos(scope_decl_item)) -> scope_decl_item . nonempty_list(addpos(scope_decl_item)) [ SCOPE END_CODE DECLARATION ] @@ -3875,7 +3876,7 @@ expected the next declaration for the scope source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON LIDENT YEAR ## -## Ends in an error in state: 320. +## Ends in an error in state: 323. ## ## scope_decl_item -> lident . SCOPE UIDENT [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] ## @@ -3887,7 +3888,7 @@ expected the form ' scope ', or a scope variable declaration source_file: BEGIN_CODE DECLARATION SCOPE UIDENT COLON LIDENT SCOPE YEAR ## -## Ends in an error in state: 321. +## Ends in an error in state: 324. ## ## scope_decl_item -> lident SCOPE . UIDENT [ SCOPE OUTPUT LIDENT INTERNAL INPUT END_CODE DECLARATION CONTEXT ] ## @@ -3899,7 +3900,7 @@ expected a scope name source_file: BEGIN_CODE DECLARATION LIDENT YEAR ## -## Ends in an error in state: 335. +## Ends in an error in state: 338. ## ## code_item -> DECLARATION lident . CONTENT typ DEPENDS separated_nonempty_list(COMMA,var_content) DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] ## code_item -> DECLARATION lident . CONTENT typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] @@ -3913,7 +3914,7 @@ expected 'content ' source_file: BEGIN_CODE DECLARATION LIDENT CONTENT YEAR ## -## Ends in an error in state: 336. +## Ends in an error in state: 339. ## ## code_item -> DECLARATION lident CONTENT . typ DEPENDS separated_nonempty_list(COMMA,var_content) DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] ## code_item -> DECLARATION lident CONTENT . typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] @@ -3927,7 +3928,7 @@ expected a type source_file: BEGIN_CODE DECLARATION LIDENT CONTENT BOOLEAN YEAR ## -## Ends in an error in state: 337. +## Ends in an error in state: 340. ## ## code_item -> DECLARATION lident CONTENT typ . DEPENDS separated_nonempty_list(COMMA,var_content) DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] ## code_item -> DECLARATION lident CONTENT typ . DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] @@ -3942,7 +3943,7 @@ expected 'equals ', optionally preceded by 'depends on content source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS YEAR ## -## Ends in an error in state: 338. +## Ends in an error in state: 341. ## ## code_item -> DECLARATION lident CONTENT typ DEPENDS . separated_nonempty_list(COMMA,var_content) DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] ## code_item -> DECLARATION lident CONTENT typ DEPENDS . LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] @@ -3955,7 +3956,7 @@ expected a variable name, following the form 'depends on content ' source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LPAREN YEAR ## -## Ends in an error in state: 339. +## Ends in an error in state: 342. ## ## code_item -> DECLARATION lident CONTENT typ DEPENDS LPAREN . separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] ## @@ -3967,7 +3968,7 @@ expected a variable name, following the form 'depends on ( content , source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LPAREN LIDENT CONTENT UIDENT DEFINED_AS ## -## Ends in an error in state: 340. +## Ends in an error in state: 343. ## ## code_item -> DECLARATION lident CONTENT typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) . RPAREN DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] ## @@ -3979,9 +3980,9 @@ source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LPAREN LIDENT ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 21, spurious reduction of production quident -> UIDENT -## In state 213, spurious reduction of production typ_base -> quident -## In state 285, spurious reduction of production typ -> typ_base -## In state 346, spurious reduction of production separated_nonempty_list(COMMA,var_content) -> lident CONTENT typ +## In state 216, spurious reduction of production typ_base -> quident +## In state 288, spurious reduction of production typ -> typ_base +## In state 349, spurious reduction of production separated_nonempty_list(COMMA,var_content) -> lident CONTENT typ ## expected ')', or ',' followed by another argument declaration in the form ' @@ -3989,7 +3990,7 @@ content ' source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LPAREN LIDENT CONTENT UIDENT RPAREN YEAR ## -## Ends in an error in state: 341. +## Ends in an error in state: 344. ## ## code_item -> DECLARATION lident CONTENT typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN . DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] ## @@ -4001,7 +4002,7 @@ expected 'equals ' source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LPAREN LIDENT CONTENT UIDENT RPAREN DEFINED_AS YEAR ## -## Ends in an error in state: 342. +## Ends in an error in state: 345. ## ## code_item -> DECLARATION lident CONTENT typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS . expression [ SCOPE END_CODE DECLARATION ] ## @@ -4013,11 +4014,11 @@ expected an expression source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LPAREN LIDENT CONTENT UIDENT RPAREN DEFINED_AS FALSE YEAR ## -## Ends in an error in state: 343. +## Ends in an error in state: 346. ## ## code_item -> DECLARATION lident CONTENT typ DEPENDS LPAREN separated_nonempty_list(COMMA,var_content) RPAREN DEFINED_AS expression . [ SCOPE END_CODE DECLARATION ] ## expression -> expression . DOT qlident [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] -## expression -> expression . OF expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . OF funcall_args [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] ## expression -> expression . CONTAINS expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] @@ -4045,7 +4046,7 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LIDENT YEAR ## -## Ends in an error in state: 344. +## Ends in an error in state: 347. ## ## separated_nonempty_list(COMMA,var_content) -> lident . CONTENT typ [ RPAREN DEFINED_AS ] ## separated_nonempty_list(COMMA,var_content) -> lident . CONTENT typ COMMA separated_nonempty_list(COMMA,var_content) [ RPAREN DEFINED_AS ] @@ -4058,7 +4059,7 @@ expected 'content ' source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LIDENT CONTENT YEAR ## -## Ends in an error in state: 345. +## Ends in an error in state: 348. ## ## separated_nonempty_list(COMMA,var_content) -> lident CONTENT . typ [ RPAREN DEFINED_AS ] ## separated_nonempty_list(COMMA,var_content) -> lident CONTENT . typ COMMA separated_nonempty_list(COMMA,var_content) [ RPAREN DEFINED_AS ] @@ -4071,7 +4072,7 @@ expected a type source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LIDENT CONTENT BOOLEAN YEAR ## -## Ends in an error in state: 346. +## Ends in an error in state: 349. ## ## separated_nonempty_list(COMMA,var_content) -> lident CONTENT typ . [ RPAREN DEFINED_AS ] ## separated_nonempty_list(COMMA,var_content) -> lident CONTENT typ . COMMA separated_nonempty_list(COMMA,var_content) [ RPAREN DEFINED_AS ] @@ -4084,7 +4085,7 @@ expected 'equals ' source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LIDENT CONTENT UIDENT COMMA YEAR ## -## Ends in an error in state: 347. +## Ends in an error in state: 350. ## ## separated_nonempty_list(COMMA,var_content) -> lident CONTENT typ COMMA . separated_nonempty_list(COMMA,var_content) [ RPAREN DEFINED_AS ] ## @@ -4096,7 +4097,7 @@ expected the definition of another argument in the form ' content ' source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LIDENT CONTENT UIDENT RPAREN ## -## Ends in an error in state: 349. +## Ends in an error in state: 352. ## ## code_item -> DECLARATION lident CONTENT typ DEPENDS separated_nonempty_list(COMMA,var_content) . DEFINED_AS expression [ SCOPE END_CODE DECLARATION ] ## @@ -4108,16 +4109,16 @@ source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LIDENT CONTENT ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 21, spurious reduction of production quident -> UIDENT -## In state 213, spurious reduction of production typ_base -> quident -## In state 285, spurious reduction of production typ -> typ_base -## In state 346, spurious reduction of production separated_nonempty_list(COMMA,var_content) -> lident CONTENT typ +## In state 216, spurious reduction of production typ_base -> quident +## In state 288, spurious reduction of production typ -> typ_base +## In state 349, spurious reduction of production separated_nonempty_list(COMMA,var_content) -> lident CONTENT typ ## expected 'equals ' source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LIDENT CONTENT UIDENT DEFINED_AS YEAR ## -## Ends in an error in state: 350. +## Ends in an error in state: 353. ## ## code_item -> DECLARATION lident CONTENT typ DEPENDS separated_nonempty_list(COMMA,var_content) DEFINED_AS . expression [ SCOPE END_CODE DECLARATION ] ## @@ -4129,11 +4130,11 @@ expected an expression source_file: BEGIN_CODE DECLARATION LIDENT CONTENT UIDENT DEPENDS LIDENT CONTENT UIDENT DEFINED_AS FALSE YEAR ## -## Ends in an error in state: 351. +## Ends in an error in state: 354. ## ## code_item -> DECLARATION lident CONTENT typ DEPENDS separated_nonempty_list(COMMA,var_content) DEFINED_AS expression . [ SCOPE END_CODE DECLARATION ] ## expression -> expression . DOT qlident [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] -## expression -> expression . OF expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] +## expression -> expression . OF funcall_args [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] ## expression -> expression . WITH constructor_binding [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] ## expression -> expression . CONTAINS expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] ## expression -> expression . FOR lident AMONG expression [ XOR WITH SCOPE PLUSPLUS PLUS OR OF NOT_EQUAL MULT MINUS LESSER_EQUAL LESSER GREATER_EQUAL GREATER FOR EQUAL END_CODE DOT DIV DECLARATION CONTAINS AND ] @@ -4161,7 +4162,7 @@ expected a binary operator continuing the expression, or a keyword ending the ex source_file: BEGIN_DIRECTIVE YEAR ## -## Ends in an error in state: 361. +## Ends in an error in state: 364. ## ## source_file_item -> BEGIN_DIRECTIVE . LAW_INCLUDE COLON nonempty_list(DIRECTIVE_ARG) option(AT_PAGE) END_DIRECTIVE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] ## @@ -4173,7 +4174,7 @@ expected a directive, e.g. 'Include: ' source_file: BEGIN_DIRECTIVE LAW_INCLUDE YEAR ## -## Ends in an error in state: 362. +## Ends in an error in state: 365. ## ## source_file_item -> BEGIN_DIRECTIVE LAW_INCLUDE . COLON nonempty_list(DIRECTIVE_ARG) option(AT_PAGE) END_DIRECTIVE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] ## @@ -4185,7 +4186,7 @@ expected ':', then a file name or 'JORFTEXTNNNNNNNNNNNN' source_file: BEGIN_DIRECTIVE LAW_INCLUDE COLON YEAR ## -## Ends in an error in state: 363. +## Ends in an error in state: 366. ## ## source_file_item -> BEGIN_DIRECTIVE LAW_INCLUDE COLON . nonempty_list(DIRECTIVE_ARG) option(AT_PAGE) END_DIRECTIVE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] ## @@ -4197,7 +4198,7 @@ expected a file name or 'JORFTEXTNNNNNNNNNNNN' source_file: BEGIN_DIRECTIVE LAW_INCLUDE COLON DIRECTIVE_ARG YEAR ## -## Ends in an error in state: 364. +## Ends in an error in state: 367. ## ## nonempty_list(DIRECTIVE_ARG) -> DIRECTIVE_ARG . [ END_DIRECTIVE AT_PAGE ] ## nonempty_list(DIRECTIVE_ARG) -> DIRECTIVE_ARG . nonempty_list(DIRECTIVE_ARG) [ END_DIRECTIVE AT_PAGE ] @@ -4210,7 +4211,7 @@ expected a page specification in the form '@p.', or a newline source_file: BEGIN_DIRECTIVE LAW_INCLUDE COLON DIRECTIVE_ARG AT_PAGE YEAR ## -## Ends in an error in state: 368. +## Ends in an error in state: 371. ## ## source_file_item -> BEGIN_DIRECTIVE LAW_INCLUDE COLON nonempty_list(DIRECTIVE_ARG) option(AT_PAGE) . END_DIRECTIVE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] ## @@ -4222,7 +4223,7 @@ expected a newline source_file: LAW_HEADING YEAR ## -## Ends in an error in state: 373. +## Ends in an error in state: 376. ## ## source_file -> source_file_item . source_file [ # ] ## diff --git a/compiler/surface/parser.mly b/compiler/surface/parser.mly index c7af9031..48857305 100644 --- a/compiler/surface/parser.mly +++ b/compiler/surface/parser.mly @@ -38,6 +38,7 @@ end> %left PLUS MINUS PLUSPLUS %left MULT DIV %right apply OF CONTAINS FOR SUCH WITH +%right COMMA %right unop_expr %right CONTENT %nonassoc UIDENT @@ -181,9 +182,9 @@ let naked_expression == | e = struct_or_enum_inject ; <> | e1 = expression ; OF ; - e2 = expression ; { - FunCall (e1, e2) -} %prec apply + args = funcall_args ; { + FunCall (e1, args) +} | OUTPUT ; OF ; c = addpos(quident) ; fields = option(scope_call_args) ; { @@ -322,6 +323,10 @@ let scope_call_args == fields } +let funcall_args := +| e = expression; { [e] } %prec apply +| e = expression; COMMA; el = funcall_args ; { e :: el } + let minmax == | MAXIMUM ; { true } | MINIMUM ; { false } diff --git a/tests/test_name_resolution/good/toplevel_defs.catala_en b/tests/test_name_resolution/good/toplevel_defs.catala_en index ee6cb079..a1117cfa 100644 --- a/tests/test_name_resolution/good/toplevel_defs.catala_en +++ b/tests/test_name_resolution/good/toplevel_defs.catala_en @@ -56,19 +56,12 @@ declaration glob4 content decimal declaration scope S3: output a content decimal -#scope S3: -# definition a equals 50 + glob3 of ($44, 55.) -# TODO: no syntax yet +scope S3: + definition a equals 50. + glob4 of $44, 55. ``` ```catala-test-inline $ catala Interpret -s S3 -[ERROR] This variable evaluated to an empty term (no rule that defined it applied in this situation) - -┌─⯈ tests/test_name_resolution/good/toplevel_defs.catala_en:57.9-10: -└──┐ -57 │ output a content decimal - │ ‾ - └─ Test function def with two args -#return code 255# +[RESULT] Computation successful! Results: +[RESULT] a = 2480. ``` From 912e1500c4b1bde78dc39e186eb9a103a96a6bcc Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Fri, 10 Feb 2023 18:56:40 +0100 Subject: [PATCH 08/10] Handle toplevel defs down to scalc --- compiler/driver.ml | 10 +- compiler/scalc/ast.ml | 32 +- ...{compile_from_lambda.ml => from_lambda.ml} | 176 +- compiler/scalc/print.ml | 64 +- compiler/scalc/print.mli | 3 + compiler/scalc/scalc.mld | 4 +- compiler/scalc/to_python.ml | 55 +- french_law/js/french_law.js | 6900 ++++++++--------- french_law/ocaml/law_source/aides_logement.ml | 386 +- french_law/python/src/aides_logement.py | 8 +- .../python/src/allocations_familiales.py | 3 +- .../good/toplevel_defs.catala_en | 127 + 12 files changed, 3995 insertions(+), 3773 deletions(-) rename compiler/scalc/{compile_from_lambda.ml => from_lambda.ml} (75%) diff --git a/compiler/driver.ml b/compiler/driver.ml index 250a6f7e..dcc41c56 100644 --- a/compiler/driver.ml +++ b/compiler/driver.ml @@ -356,7 +356,7 @@ let driver source_file (options : Cli.options) : int = p.Plugin.apply ~source_file ~output_file ~scope:options.ex_scope prgm type_ordering | (`Python | `Scalc | `Plugin (Plugin.Scalc _)) as backend -> ( - let prgm = Scalc.Compile_from_lambda.translate_program prgm in + let prgm = Scalc.From_lambda.translate_program prgm in match backend with | `Scalc -> let _output_file, with_output = get_output_format () in @@ -370,13 +370,7 @@ let driver source_file (options : Cli.options) : int = (fun body -> body.Scalc.Ast.scope_body_name = scope_uid) prgm.scopes) - else - Format.fprintf fmt "%a\n" - (Format.pp_print_list - ~pp_sep:(fun fmt () -> Format.fprintf fmt "\n\n") - (fun fmt scope -> - (Scalc.Print.format_scope prgm.decl_ctx) fmt scope)) - prgm.scopes + else Scalc.Print.format_program prgm.decl_ctx fmt prgm | `Python -> let output_file, with_output = get_output_format ~ext:".py" () diff --git a/compiler/scalc/ast.ml b/compiler/scalc/ast.ml index 2d919932..7d6a29e7 100644 --- a/compiler/scalc/ast.ml +++ b/compiler/scalc/ast.ml @@ -18,18 +18,18 @@ open Catala_utils open Shared_ast module D = Dcalc.Ast module L = Lcalc.Ast -module TopLevelName = Uid.Gen () -module LocalName = Uid.Gen () +module FuncName = Uid.Gen () +module VarName = Uid.Gen () -let dead_value = LocalName.fresh ("dead_value", Pos.no_pos) -let handle_default = TopLevelName.fresh ("handle_default", Pos.no_pos) -let handle_default_opt = TopLevelName.fresh ("handle_default_opt", Pos.no_pos) +let dead_value = VarName.fresh ("dead_value", Pos.no_pos) +let handle_default = FuncName.fresh ("handle_default", Pos.no_pos) +let handle_default_opt = FuncName.fresh ("handle_default_opt", Pos.no_pos) type expr = naked_expr Marked.pos and naked_expr = - | EVar : LocalName.t -> naked_expr - | EFunc : TopLevelName.t -> naked_expr + | EVar : VarName.t -> naked_expr + | EFunc : FuncName.t -> naked_expr | EStruct : expr list * StructName.t -> naked_expr | EStructFieldAccess : expr * StructField.t * StructName.t -> naked_expr | EInj : expr * EnumConstructor.t * EnumName.t -> naked_expr @@ -39,9 +39,9 @@ and naked_expr = | EOp : (lcalc, _) operator -> naked_expr type stmt = - | SInnerFuncDef of LocalName.t Marked.pos * func - | SLocalDecl of LocalName.t Marked.pos * typ - | SLocalDef of LocalName.t Marked.pos * expr + | SInnerFuncDef of VarName.t Marked.pos * func + | SLocalDecl of VarName.t Marked.pos * typ + | SLocalDef of VarName.t Marked.pos * expr | STryExcept of block * except * block | SRaise of except | SIfThenElse of expr * block * block @@ -49,7 +49,7 @@ type stmt = expr * EnumName.t * (block (* Statements corresponding to arm closure body*) - * (* Variable instantiated with enum payload *) LocalName.t) + * (* Variable instantiated with enum payload *) VarName.t) list (** Each block corresponds to one case of the enum *) | SReturn of naked_expr | SAssert of naked_expr @@ -57,20 +57,22 @@ type stmt = and block = stmt Marked.pos list and func = { - func_params : (LocalName.t Marked.pos * typ) list; + func_params : (VarName.t Marked.pos * typ) list; func_body : block; } type scope_body = { scope_body_name : ScopeName.t; - scope_body_var : TopLevelName.t; + scope_body_var : FuncName.t; scope_body_func : func; } -type global = GlobalVar of block | GlobalFunc of func +type global = + | GlobalVar of { var : VarName.t; expr : expr } + | GlobalFunc of { var : FuncName.t; func : func } type program = { decl_ctx : decl_ctx; - globals : (TopLevelName.t * global) list; + globals : global list; scopes : scope_body list; } diff --git a/compiler/scalc/compile_from_lambda.ml b/compiler/scalc/from_lambda.ml similarity index 75% rename from compiler/scalc/compile_from_lambda.ml rename to compiler/scalc/from_lambda.ml index a6d9e03d..cf0b6433 100644 --- a/compiler/scalc/compile_from_lambda.ml +++ b/compiler/scalc/from_lambda.ml @@ -21,10 +21,10 @@ module L = Lcalc.Ast module D = Dcalc.Ast type 'm ctxt = { - func_dict : ('m L.expr, A.TopLevelName.t) Var.Map.t; + func_dict : ('m L.expr, A.FuncName.t) Var.Map.t; decl_ctx : decl_ctx; - var_dict : ('m L.expr, A.LocalName.t) Var.Map.t; - inside_definition_of : A.LocalName.t option; + var_dict : ('m L.expr, A.VarName.t) Var.Map.t; + inside_definition_of : A.VarName.t option; context_name : string; } @@ -90,14 +90,14 @@ let rec translate_expr (ctxt : 'm ctxt) (expr : 'm L.expr) : A.block * A.expr = | ELit l -> [], (A.ELit l, Expr.pos expr) | _ -> let tmp_var = - A.LocalName.fresh + A.VarName.fresh ( (*This piece of logic is used to make the code more readable. TODO: should be removed when https://github.com/CatalaLang/catala/issues/240 is fixed. *) (match ctxt.inside_definition_of with | None -> ctxt.context_name | Some v -> - let v = Marked.unmark (A.LocalName.get_info v) in + let v = Marked.unmark (A.VarName.get_info v) in let tmp_rex = Re.Pcre.regexp "^temp_" in if Re.Pcre.pmatch ~rex:tmp_rex v then v else "temp_" ^ v), Expr.pos expr ) @@ -106,7 +106,7 @@ let rec translate_expr (ctxt : 'm ctxt) (expr : 'm L.expr) : A.block * A.expr = { ctxt with inside_definition_of = Some tmp_var; - context_name = Marked.unmark (A.LocalName.get_info tmp_var); + context_name = Marked.unmark (A.VarName.get_info tmp_var); } in let tmp_stmts = translate_statements ctxt expr in @@ -133,7 +133,7 @@ and translate_statements (ctxt : 'm ctxt) (block_expr : 'm L.expr) : A.block = List.fold_left (fun var_dict (x, _) -> Var.Map.add x - (A.LocalName.fresh (Bindlib.name_of x, binder_pos)) + (A.VarName.fresh (Bindlib.name_of x, binder_pos)) var_dict) ctxt.var_dict vars_tau; } @@ -159,7 +159,7 @@ and translate_statements (ctxt : 'm ctxt) (block_expr : 'm L.expr) : A.block = ctxt with inside_definition_of = Some (Marked.unmark x); context_name = - Marked.unmark (A.LocalName.get_info (Marked.unmark x)); + Marked.unmark (A.VarName.get_info (Marked.unmark x)); } in let arg_stmts, new_arg = translate_expr ctxt arg in @@ -174,7 +174,7 @@ and translate_statements (ctxt : 'm ctxt) (block_expr : 'm L.expr) : A.block = let vars_tau = List.map2 (fun x tau -> x, tau) (Array.to_list vars) tys in let closure_name = match ctxt.inside_definition_of with - | None -> A.LocalName.fresh (ctxt.context_name, Expr.pos block_expr) + | None -> A.VarName.fresh (ctxt.context_name, Expr.pos block_expr) | Some x -> x in let ctxt = @@ -184,7 +184,7 @@ and translate_statements (ctxt : 'm ctxt) (block_expr : 'm L.expr) : A.block = List.fold_left (fun var_dict (x, _) -> Var.Map.add x - (A.LocalName.fresh (Bindlib.name_of x, binder_pos)) + (A.VarName.fresh (Bindlib.name_of x, binder_pos)) var_dict) ctxt.var_dict vars_tau; inside_definition_of = None; @@ -215,7 +215,7 @@ and translate_statements (ctxt : 'm ctxt) (block_expr : 'm L.expr) : A.block = assert (Array.length vars = 1); let var = vars.(0) in let scalc_var = - A.LocalName.fresh (Bindlib.name_of var, Expr.pos arg) + A.VarName.fresh (Bindlib.name_of var, Expr.pos arg) in let ctxt = { ctxt with var_dict = Var.Map.add var scalc_var ctxt.var_dict } @@ -272,8 +272,8 @@ and translate_statements (ctxt : 'm ctxt) (block_expr : 'm L.expr) : A.block = let rec translate_scope_body_expr (scope_name : ScopeName.t) (decl_ctx : decl_ctx) - (var_dict : ('m L.expr, A.LocalName.t) Var.Map.t) - (func_dict : ('m L.expr, A.TopLevelName.t) Var.Map.t) + (var_dict : ('m L.expr, A.VarName.t) Var.Map.t) + (func_dict : ('m L.expr, A.FuncName.t) Var.Map.t) (scope_expr : 'm L.expr scope_body_expr) : A.block = match scope_expr with | Result e -> @@ -292,7 +292,7 @@ let rec translate_scope_body_expr | ScopeLet scope_let -> let let_var, scope_let_next = Bindlib.unbind scope_let.scope_let_next in let let_var_id = - A.LocalName.fresh (Bindlib.name_of let_var, scope_let.scope_let_pos) + A.VarName.fresh (Bindlib.name_of let_var, scope_let.scope_let_pos) in let new_var_dict = Var.Map.add let_var let_var_id var_dict in (match scope_let.scope_let_kind with @@ -340,7 +340,7 @@ let translate_program (p : 'm L.program) : A.program = in let input_pos = Marked.get_mark (ScopeName.get_info name) in let scope_input_var_id = - A.LocalName.fresh (Bindlib.name_of scope_input_var, input_pos) + A.VarName.fresh (Bindlib.name_of scope_input_var, input_pos) in let var_dict_local = Var.Map.add scope_input_var scope_input_var_id var_dict @@ -349,9 +349,7 @@ let translate_program (p : 'm L.program) : A.program = translate_scope_body_expr name p.decl_ctx var_dict_local func_dict scope_body_expr in - let func_id = - A.TopLevelName.fresh (Bindlib.name_of var, Pos.no_pos) - in + let func_id = A.FuncName.fresh (Bindlib.name_of var, Pos.no_pos) in ( Var.Map.add var func_id func_dict, var_dict, globals, @@ -369,59 +367,95 @@ let translate_program (p : 'm L.program) : A.program = }; } :: scopes ) - | Topdef _ -> failwith "todo" - (* | Topdef (name, _, (EAbs abs, _)) -> - * let func_id = - * A.TopLevelName.fresh (Bindlib.name_of var, Pos.no_pos) - * in - * let args_a, expr = Bindlib.unmbind abs.binder in - * let args = Array.to_list args_a in - * let args_id = - * List.map2 (fun v ty -> - * let pos = Marked.get_mark ty in - * (A.LocalName.fresh (Bindlib.name_of v, pos), pos), ty) - * args abs.tys - * in - * let block, expr = - * let ctxt = - * { - * func_dict; - * decl_ctx = p.decl_ctx; - * var_dict = - * List.fold_left2 (fun map arg ((id, _), _) -> Var.Map.add arg id map) - * var_dict args args_id; - * inside_definition_of = None; - * context_name = Marked.unmark (TopdefName.get_info name); - * } - * in - * translate_expr ctxt expr - * in - * let body_block = block @ [A.SReturn (Marked.unmark expr), Marked.get_mark expr] - * in - * Var.Map.add var func_id func_dict, - * var_dict, - * A.GlobalFunc { - * A.func_params = args_id; - * A.func_body = body_block; - * } :: globals, - * scopes - * | Topdef (name, ty, expr) -> - * let var_id = - * A.TopLevelName.fresh (Bindlib.name_of var, Pos.no_pos) - * in - * let block, expr = - * let ctxt = - * { - * func_dict; - * decl_ctx = p.decl_ctx; - * var_dict; - * inside_definition_of = None; - * context_name = Marked.unmark (TopdefName.get_info name); - * } - * in - * translate_expr ctxt expr - * in - * let block = block @ [A.SLocalDef (var_id, expr), Marked.get_mark expr] in *)) + | Topdef (name, _, (EAbs abs, _)) -> + (* Toplevel function def *) + let func_id = A.FuncName.fresh (Bindlib.name_of var, Pos.no_pos) in + let args_a, expr = Bindlib.unmbind abs.binder in + let args = Array.to_list args_a in + let args_id = + List.map2 + (fun v ty -> + let pos = Marked.get_mark ty in + (A.VarName.fresh (Bindlib.name_of v, pos), pos), ty) + args abs.tys + in + let block, expr = + let ctxt = + { + func_dict; + decl_ctx = p.decl_ctx; + var_dict = + List.fold_left2 + (fun map arg ((id, _), _) -> Var.Map.add arg id map) + var_dict args args_id; + inside_definition_of = None; + context_name = Marked.unmark (TopdefName.get_info name); + } + in + translate_expr ctxt expr + in + let body_block = + block @ [A.SReturn (Marked.unmark expr), Marked.get_mark expr] + in + ( Var.Map.add var func_id func_dict, + var_dict, + A.GlobalFunc + { + var = func_id; + func = { A.func_params = args_id; A.func_body = body_block }; + } + :: globals, + scopes ) + | Topdef (name, ty, expr) -> + (* Toplevel constant def *) + let var_id = A.VarName.fresh (Bindlib.name_of var, Pos.no_pos) in + let block, expr = + let ctxt = + { + func_dict; + decl_ctx = p.decl_ctx; + var_dict; + inside_definition_of = None; + context_name = Marked.unmark (TopdefName.get_info name); + } + in + translate_expr ctxt expr + in + (* If the evaluation of the toplevel expr requires preliminary + statements, we lift its computation into an auxiliary function *) + let globals = + match block with + | [] -> A.GlobalVar { var = var_id; expr } :: globals + | block -> + let pos = Marked.get_mark expr in + let func_id = + A.FuncName.fresh (Bindlib.name_of var ^ "_aux", pos) + in + (* The list is being built in reverse order *) + A.GlobalVar + { var = var_id; expr = A.EApp ((EFunc func_id, pos), []), pos } + :: A.GlobalFunc + { + var = func_id; + func = + { + A.func_params = []; + A.func_body = + block + @ [ + ( A.SReturn (Marked.unmark expr), + Marked.get_mark expr ); + ]; + }; + } + :: globals + in + ( func_dict, + (* No need to add func_id since the function will only be called + right here *) + Var.Map.add var var_id var_dict, + globals, + scopes )) ~init: ( (if !Cli.avoid_exceptions_flag then Var.Map.singleton L.handle_default_opt A.handle_default_opt diff --git a/compiler/scalc/print.ml b/compiler/scalc/print.ml index 8e3223ae..a67835ec 100644 --- a/compiler/scalc/print.ml +++ b/compiler/scalc/print.ml @@ -20,9 +20,8 @@ open Ast let needs_parens (_e : expr) : bool = false -let format_local_name (fmt : Format.formatter) (v : LocalName.t) : unit = - Format.fprintf fmt "%a_%s" LocalName.format_t v - (string_of_int (LocalName.hash v)) +let format_var_name (fmt : Format.formatter) (v : VarName.t) : unit = + Format.fprintf fmt "%a_%s" VarName.format_t v (string_of_int (VarName.hash v)) let rec format_expr (decl_ctx : decl_ctx) @@ -37,8 +36,8 @@ let rec format_expr else Format.fprintf fmt "%a" format_expr e in match Marked.unmark e with - | EVar v -> Format.fprintf fmt "%a" format_local_name v - | EFunc v -> Format.fprintf fmt "%a" TopLevelName.format_t v + | EVar v -> Format.fprintf fmt "%a" format_var_name v + | EFunc v -> Format.fprintf fmt "%a" FuncName.format_t v | EStruct (es, s) -> Format.fprintf fmt "@[%a@ %a%a%a@]" StructName.format_t s Print.punctuation "{" @@ -75,6 +74,7 @@ let rec format_expr | EApp ((EOp op, _), [arg1]) -> Format.fprintf fmt "@[%a@ %a@]" Print.operator op format_with_parens arg1 + | EApp (f, []) -> Format.fprintf fmt "@[%a@ ()@]" format_expr f | EApp (f, args) -> Format.fprintf fmt "@[%a@ %a@]" format_expr f (Format.pp_print_list @@ -92,22 +92,22 @@ let rec format_statement match Marked.unmark stmt with | SInnerFuncDef (name, func) -> Format.fprintf fmt "@[%a@ %a@ %a@ %a@]@\n@[ %a@]" Print.keyword - "let" format_local_name (Marked.unmark name) + "let" format_var_name (Marked.unmark name) (Format.pp_print_list ~pp_sep:(fun fmt () -> Format.fprintf fmt "@ ") (fun fmt ((name, _), typ) -> Format.fprintf fmt "%a%a %a@ %a%a" Print.punctuation "(" - format_local_name name Print.punctuation ":" (Print.typ decl_ctx) - typ Print.punctuation ")")) + format_var_name name Print.punctuation ":" (Print.typ decl_ctx) typ + Print.punctuation ")")) func.func_params Print.punctuation "=" (format_block decl_ctx ~debug) func.func_body | SLocalDecl (name, typ) -> Format.fprintf fmt "@[%a %a %a@ %a@]" Print.keyword "decl" - format_local_name (Marked.unmark name) Print.punctuation ":" + format_var_name (Marked.unmark name) Print.punctuation ":" (Print.typ decl_ctx) typ | SLocalDef (name, naked_expr) -> - Format.fprintf fmt "@[%a %a@ %a@]" format_local_name + Format.fprintf fmt "@[%a %a@ %a@]" format_var_name (Marked.unmark name) Print.punctuation "=" (format_expr decl_ctx ~debug) naked_expr @@ -147,7 +147,7 @@ let rec format_statement (fun fmt ((case, _), (arm_block, payload_name)) -> Format.fprintf fmt "%a %a%a@ %a @[%a@ %a@]" Print.punctuation "|" Print.enum_constructor case Print.punctuation ":" - format_local_name payload_name Print.punctuation "→" + format_var_name payload_name Print.punctuation "→" (format_block decl_ctx ~debug) arm_block)) (List.combine @@ -171,14 +171,50 @@ let format_scope (fmt : Format.formatter) (body : scope_body) : unit = if debug then () else (); - Format.fprintf fmt "@[%a@ %a@ %a@ %a@]@\n@[ %a@]" Print.keyword - "let" TopLevelName.format_t body.scope_body_var + Format.fprintf fmt "@[%a@ %a@ %a@ %a@]@\n@[ %a@]@," Print.keyword + "let" FuncName.format_t body.scope_body_var (Format.pp_print_list ~pp_sep:(fun fmt () -> Format.fprintf fmt "@ ") (fun fmt ((name, _), typ) -> Format.fprintf fmt "%a%a %a@ %a%a" Print.punctuation "(" - format_local_name name Print.punctuation ":" (Print.typ decl_ctx) typ + format_var_name name Print.punctuation ":" (Print.typ decl_ctx) typ Print.punctuation ")")) body.scope_body_func.func_params Print.punctuation "=" (format_block decl_ctx ~debug) body.scope_body_func.func_body + +let format_global decl_ctx ?debug ppf def = + Format.pp_open_hvbox ppf 2; + Format.pp_open_hovbox ppf 4; + Print.keyword ppf "let "; + let () = + match def with + | GlobalVar { var; expr } -> + VarName.format_t ppf var; + Print.punctuation ppf " ="; + Format.pp_close_box ppf (); + Format.pp_print_space ppf (); + format_expr decl_ctx ?debug ppf expr + | GlobalFunc { var; func = { func_params; func_body } } -> + FuncName.format_t ppf var; + Format.pp_print_list + (fun ppf (arg, ty) -> + Format.fprintf ppf "@ (%a: %a)" VarName.format_t (Marked.unmark arg) + (Print.typ decl_ctx) ty) + ppf func_params; + Print.punctuation ppf " ="; + Format.pp_close_box ppf (); + Format.pp_print_space ppf (); + format_block decl_ctx ?debug ppf func_body + in + Format.pp_close_box ppf (); + Format.pp_print_cut ppf () + +let format_program decl_ctx ?debug ppf prg = + Format.pp_open_vbox ppf 0; + Format.pp_print_list (format_global decl_ctx ?debug) ppf prg.globals; + Format.pp_print_cut ppf (); + Format.pp_print_list + (fun ppf scope -> (format_scope prg.decl_ctx ?debug) ppf scope) + ppf prg.scopes; + Format.pp_close_box ppf () diff --git a/compiler/scalc/print.mli b/compiler/scalc/print.mli index 512694bb..f184b06c 100644 --- a/compiler/scalc/print.mli +++ b/compiler/scalc/print.mli @@ -20,3 +20,6 @@ val format_scope : Format.formatter -> Ast.scope_body -> unit + +val format_program : + Shared_ast.decl_ctx -> ?debug:bool -> Format.formatter -> Ast.program -> unit diff --git a/compiler/scalc/scalc.mld b/compiler/scalc/scalc.mld index 06ad63f7..ba70b7c9 100644 --- a/compiler/scalc/scalc.mld +++ b/compiler/scalc/scalc.mld @@ -12,13 +12,13 @@ The module describing the abstract syntax tree is: {1 Compilation from lambda calculus } -{!module: Scalc.Compile_from_lambda} Performs the classical translation +{!module: Scalc.From_lambda} Performs the classical translation from an expression-based language to a statement-based language. Union types are eliminated in favor of tagged unions. Related modules: -{!modules: Scalc.Compile_from_lambda} +{!modules: Scalc.From_lambda} {1 Backends} diff --git a/compiler/scalc/to_python.ml b/compiler/scalc/to_python.ml index f30ca4db..7beb72ec 100644 --- a/compiler/scalc/to_python.ml +++ b/compiler/scalc/to_python.ml @@ -203,16 +203,16 @@ let format_name_cleaned (fmt : Format.formatter) (s : string) : unit = module StringMap = Map.Make (String) module IntMap = Map.Make (Int) -(** For each `LocalName.t` defined by its string and then by its hash, we keep +(** For each `VarName.t` defined by its string and then by its hash, we keep track of which local integer id we've given it. This is used to keep variable naming with low indices rather than one global counter for all variables. TODO: should be removed when https://github.com/CatalaLang/catala/issues/240 is fixed. *) let string_counter_map : int IntMap.t StringMap.t ref = ref StringMap.empty -let format_var (fmt : Format.formatter) (v : LocalName.t) : unit = - let v_str = Marked.unmark (LocalName.get_info v) in - let hash = LocalName.hash v in +let format_var (fmt : Format.formatter) (v : VarName.t) : unit = + let v_str = Marked.unmark (VarName.get_info v) in + let hash = VarName.hash v in let local_id = match StringMap.find_opt v_str !string_counter_map with | Some ids -> ( @@ -241,10 +241,13 @@ let format_var (fmt : Format.formatter) (v : LocalName.t) : unit = else if local_id = 0 then format_name_cleaned fmt v_str else Format.fprintf fmt "%a_%d" format_name_cleaned v_str local_id -let format_toplevel_name (fmt : Format.formatter) (v : TopLevelName.t) : unit = - let v_str = Marked.unmark (TopLevelName.get_info v) in +let format_func_name (fmt : Format.formatter) (v : FuncName.t) : unit = + let v_str = Marked.unmark (FuncName.get_info v) in format_name_cleaned fmt v_str +let format_var_name (fmt : Format.formatter) (v : VarName.t) : unit = + Format.fprintf fmt "%a_%s" VarName.format_t v (string_of_int (VarName.hash v)) + let needs_parens (e : expr) : bool = match Marked.unmark e with | ELit (LBool _ | LUnit) | EVar _ | EOp _ -> false @@ -276,7 +279,7 @@ let rec format_expression (ctx : decl_ctx) (fmt : Format.formatter) (e : expr) : unit = match Marked.unmark e with | EVar v -> format_var fmt v - | EFunc f -> format_toplevel_name fmt f + | EFunc f -> format_func_name fmt f | EStruct (es, s) -> Format.fprintf fmt "%a(%a)" format_struct_name s (Format.pp_print_list @@ -348,12 +351,12 @@ let rec format_expression (ctx : decl_ctx) (fmt : Format.formatter) (e : expr) : Format.fprintf fmt "%a(%a)" format_op (op, Pos.no_pos) (format_expression ctx) arg1 | EApp ((EFunc x, pos), args) - when Ast.TopLevelName.compare x Ast.handle_default = 0 - || Ast.TopLevelName.compare x Ast.handle_default_opt = 0 -> + when Ast.FuncName.compare x Ast.handle_default = 0 + || Ast.FuncName.compare x Ast.handle_default_opt = 0 -> Format.fprintf fmt "%a(@[SourcePosition(filename=\"%s\",@ start_line=%d,@ \ start_column=%d,@ end_line=%d, end_column=%d,@ law_headings=%a), %a)@]" - format_toplevel_name x (Pos.get_file pos) (Pos.get_start_line pos) + format_func_name x (Pos.get_file pos) (Pos.get_start_line pos) (Pos.get_start_column pos) (Pos.get_end_line pos) (Pos.get_end_column pos) format_string_list (Pos.get_law_info pos) (Format.pp_print_list @@ -400,7 +403,7 @@ let rec format_statement | SSwitch (e1, e_name, [(case_none, _); (case_some, case_some_var)]) when EnumName.compare e_name L.option_enum = 0 -> (* We translate the option type with an overloading by Python's [None] *) - let tmp_var = LocalName.fresh ("perhaps_none_arg", Pos.no_pos) in + let tmp_var = VarName.fresh ("perhaps_none_arg", Pos.no_pos) in Format.fprintf fmt "%a = %a@\n\ @[if %a is None:@\n\ @@ -418,7 +421,7 @@ let rec format_statement cases (EnumConstructor.Map.bindings (EnumName.Map.find e_name ctx.ctx_enums)) in - let tmp_var = LocalName.fresh ("match_arg", Pos.no_pos) in + let tmp_var = VarName.fresh ("match_arg", Pos.no_pos) in Format.fprintf fmt "%a = %a@\n@[if %a@]" format_var tmp_var (format_expression ctx) e1 (Format.pp_print_list @@ -591,16 +594,32 @@ let format_program from typing import Any, List, Callable, Tuple\n\ from enum import Enum\n\ @\n\ - %a@\n\ + @[%a@]@\n\ + @[%a@]@\n\ @\n\ %a@?" (format_ctx type_ordering) p.decl_ctx - (Format.pp_print_list - ~pp_sep:(fun fmt () -> Format.fprintf fmt "@\n@\n") - (fun fmt body -> + (Format.pp_print_list ~pp_sep:Format.pp_print_newline (fun fmt -> + function + | GlobalVar { var; expr } -> + Format.fprintf fmt "@[%a = (@,%a@,@])@," format_var_name var + (format_expression p.decl_ctx) + expr + | GlobalFunc { var; func } -> + let { Ast.func_params; Ast.func_body } = func in + Format.fprintf fmt "@[def %a(%a):@\n%a@]@," format_func_name + var + (Format.pp_print_list + ~pp_sep:(fun fmt () -> Format.fprintf fmt ", ") + (fun fmt (var, typ) -> + Format.fprintf fmt "%a:%a" format_var (Marked.unmark var) + format_typ typ)) + func_params (format_block p.decl_ctx) func_body)) + p.globals + (Format.pp_print_list ~pp_sep:Format.pp_print_newline (fun fmt body -> let { Ast.func_params; Ast.func_body } = body.scope_body_func in - Format.fprintf fmt "@[def %a(%a):@\n%a@]" - format_toplevel_name body.scope_body_var + Format.fprintf fmt "@[def %a(%a):@\n%a@]@," format_func_name + body.scope_body_var (Format.pp_print_list ~pp_sep:(fun fmt () -> Format.fprintf fmt ", ") (fun fmt (var, typ) -> diff --git a/french_law/js/french_law.js b/french_law/js/french_law.js index c8fa4e49..ba2df878 100644 --- a/french_law/js/french_law.js +++ b/french_law/js/french_law.js @@ -4,95 +4,95 @@ globalThis!=="object"&&(this?b():(a.defineProperty(a.prototype,"_T_",{configurab b(){var b=this||self;b.globalThis=b;delete a.prototype._T_}}(Object));(function(aL){"use strict";var -bzx=aL,bzA=typeof -module==="object"&&module.exports||aL,AW="38527",ip=1133,ru=424,AV=1650,gS=857,cq="\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales",Gg="Article L521-1",kv="Paragraphe 2 : Ouverture du droit et liquidation.",nx=365180284,AU="Changement",Gf="26714",Ge=163,AT="redevance_in",o8="SaintMartin",gJ=815,AS="1015",ju=891,ec="Section 1 : Seuils de constitution d'un impay\xc3\xa9",AQ=4865,AR="559500",b6="Article 1",cX="aide_finale_formule",AP="35630",gR=122,ss="Article 31",kY="50",bg="Unexpected '",fY=299,Gd="34700",jt=181,nw="Article 19",o7=862,kX=305,js=4442,ei=128,ku="Avant",rt="identifiant",o6="Oui",Gb=1127,Gc="43000",rs="Article D832-26",eD=683,io=573,rr=383,eY=146,nv=">",o5=575,ge=153,Ga=1027,im=1129,o4=1053,eh=297,AO=4437,o3="Article 17",an="Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9",F$="b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s_in",eX="Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es",AM="local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire_in",nu=933,AN=3942,o1=1125,o2="baseMensuelleAllocationsFamiliales",AL="35762",aM="Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement",jr=804,A="Calcul du montant de l'allocation logement",F_=358,d2=2011,df=2023,d1=295,F9=462,il="Article L841-1",rq="ServicesSociauxAllocationVerseeALaFamille",AJ="186000",AK="Instruction interminist\xc3\xa9rielle no DSS/SD2B/2020/33 du 18 f\xc3\xa9vrier 2020 relative \xc3\xa0 la revalorisation au 1er avril 2020 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",AI="16.25",rp="0.0315",kt="traitement_aide_finale_diminu\xc3\xa9",ks=1118,jq=4835,F8="\xc3\xa9ligibilit\xc3\xa9_commune.date_courante",AH="40758",F7=3996,o0="e",oZ=313,ik="Autre",ij=798,AF=4382,AG=1150,F6="Article L822-2",jp=421,gd="smic",AD="39445",AE=3134,ii=1071,bD="Article D842-6",kr=1052,AB=-43,AC="Neuf",ih=901,sr="Article 27",jo=897,F5="inf",F4="calculetteAidesAuLogementGardeAlternee",AA="27365",F3="Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",nt=685,Az=4637,F2="41392",kW=111,ns=929,F1="Location",F0=4456,Ax="240400",Ay=269,sq=709,sp="Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale",jn=619,FZ="33500",kq="CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9",cp="Article D823-9",bI="traitement_aide_finale_minoration_forfaitaire",ro="\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",FY="infinity",FX=1855,ig="2.5",FW="3663",Av=1134,Aw=278,eg="Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement",Au=3194,eC="examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr",At="\\t",FV=3953,aG="examples/aides_logement/code_construction_legislatif.catala_fr",Ar="situation_r822_11_13_17_in",As=330,FU=385,aP="Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien",kV=112,id="1000",ie=1131,eb=563,c6="examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr",kU=701,Aq="210600",FT="Unexpected '%s' kind for the enumeration 'ElementPrestationsFamiliales.t'",Ap="Couple",kp=687,nr="SaintPierreEtMiquelon",FS="loyer_minimal",ic=110,co="PrestationsFamiliales",oY=464,FR="\xc3\x89l\xc3\xa9mentPrestationsFamiliales",Ao=1103,oX=679,FQ="214700",ib=615,dP="Calcul\xc3\x89quivalenceLoyerMinimale",An=2083,oW=554,FP="42926",jm=1096,rn=265,Am=-32,nq=4408,Al="39016",oV="AllocationLogementFamiliale",ea=1023,FO="interfaceAllocationsFamiliales",cl=561,np="AllocationLogementSociale",FN=3766,Ak=1974,Aj="plafond_l512_3_2",jl=639,rm="Chapitre II : Des contributions pour le remboursement de la dette sociale.",aW="examples/allocations_familiales/decrets_divers.catala_fr",fX=117,Ai=348,kT="compl\xc3\xa9ment_d\xc3\xa9gressif",rl="Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9",FL="240200",FM="Assert_failure",so="Section 1 : Secteur locatif ordinaire",FK="568400",sn="0.32",Ah="40961",FJ=350,kS="Non",jk=508,Ag=185,kR="Article R824-2",FI=219,FH=1e14,Af="D331_76_1",jj=3489,oU="Article R521-3",Ae="17607",ab=2022,FF="34865",FG="Fatal error: exception %s\n",Ad="261800",oT=865,ko=740,fW="Article 2",eB=256,dO=558,ia=786,Ac="Article L521-3",FE="Article R822-1",Ab="45064",FD="taux_francs_vers_euros",kQ="abattement_d\xc3\xa9pense_nette_minimale_d832_10",oS=699,sm="mensualit\xc3\xa9_\xc3\xa9ligible",gc=1075,no="D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance",sl="ENOENT",FC=1395,rk="0.0006",h_=3935,h$=315,ri="EnfantLePlus\xc3\x82g\xc3\xa9",rj=259,nn=556,bw="examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr",Aa="228000",FB="ENOTEMPTY",z$="copropri\xc3\xa9t\xc3\xa9_in",sk="Article 13",FA="calcul_apl_logement_foyer.nombre_personnes_\xc3\xa0_charge",z_="D331_59_8",Fy="Loyer",Fz="35947",ji=3486,eW=564,z9="brut_horaire",z8=172,Fx="x",z7="Sous-section 1 : Aides personnelles au logement",Fw="calculAidePersonnaliseeLogementAccessionPropriete",h9=547,ci="Articles valables du 1er octobre 2020 au 31 septembre 2021",Fv=2641,kn="Article D755-5",fV=680,Fu="Article D842-4",jh=791,dE=314,sj="%d",rh=810,nm=4768,z6="Z.of_substring_base: invalid digit",Ft="ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille",Fs="logement_est_chambre_in",h8=637,nl=285,z5="buffer.ml",e="Prologue : aides au logement",D="Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9",Fq="167600",Fr="39590",Fp=3213,gQ=2008,rg="0.0179",Fo=2371,z4="245700",B="Prologue",z3=3366,nk="calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge",Fn="Metropole",cd=100,Fm=2384,kO="prise_en_compte_personne_\xc3\xa0_charge",kP=851,nj=702,h7=420,fr=300,h6=4831,_="3",a9="Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples",z2=230,oQ=413,Fl="835",oR="169.",z0="plafond_\xc3\xa9quivalence_loyer_\xc3\xa9ligible",z1=3900,zZ=0.5,kN=990,cU="Article D521-1",Fj="conventionn\xc3\xa9_livre_III_titre_V_chap_III",oP=622,Fk="sous_calcul_traitement",ni=4769,zY=374,h5=956,oO="Article D842-11",d0="Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses",zX=4137,c3=107,nh=381,ng="Article D842-12",jg=690,oN="prestations_familiales",kM="est_enfant_le_plus_\xc3\xa2g\xc3\xa9",zW="26440",h4=649,Fi="201700",si="Unix.Unix_error",zV=3631,h3=1139,zU=284,Fg="calculAidePersonnaliseeLogement",oM=553,Fh=3970,h2=1088,zT="Stack_overflow",fk="condition_2_r823_4",a7="Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer",Ff=3042,aU="\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement",Fd=4089,Fe=4843,h1=3487,zS="/static/",rf=253,Fc="Not_found",zR="1085",rd=235,re="\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02",zQ="851",zP="41268",a0="examples/allocations_familiales/epilogue.catala_fr",oL=695,Fb="calcul_apl_logement_foyer.date_courante",ca=848054398,E$=3496,oK="Mayotte",Fa="smic.date_courante",zN=1841,zO=260,oJ="1224",E9="calcul_apl_locatif",E_=243,dz="calcul_plafond_mensualit\xc3\xa9_d832_10_3",h0=1049,rc="rmdir",oI=696,gb=1069,E7="participation_minimale",E8=32752,zM="33623",sh="19100",zL="37478",ga="calcul_nombre_parts",zK=3279,sg="Article 23",oH="Article R842-5",zJ=1026,dq=149,E6="taux_composition_familiale",bQ="montant",dZ="Article L521-2",bu="examples/allocations_familiales/../smic/smic.catala_fr",zG="calculAllocationLogementLocatif",zH="37906",zI="false",dp=849,oG="Invalid integer: ",zF="PasDeChangement",bv="\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement",a_=106,E5=346,hZ=186,dN=0x80,eV="Chapitre 1er : Dispositions relatives aux prestations",sf="Fatal error: exception ",zE=4211,oF="\xc3\xa9ligibilit\xc3\xa9_commune",se="0.0234",E4="43378",zD="calcul_apl_logement_foyer.date_conventionnement",hY=852,E3=234,zC=1413,hX=1054,sd="25978",dY=303,E1=493,E2=3541,E0="Section 2 : R\xc3\xa8gles de non-cumul",hW="zone_in",sc="_",zB="eligibilitePrimeDeDemenagement",hV=517,rb="compare: functional value",b5="0.",zy=114,zz="40928",zA="19300",nf=411,ne=978,zx="197700",zw="Invalid_argument",hU=4832,ra=823,EZ="EndCall([ ",oE="0.9",EX="Article R822-22",EY="prise_en_charge",zv="calcul_aide_personnalis\xc3\xa9e_logement",zu=249,EV="34301",EW="577500",zs=3941,zt="%ni",nd=949,fq=324,zr=2904,W=2020,zp=3783,zq=2430,EU="PersonneSeule",zo=1418,oD=559,q$="0.0238",sb="Article 9",ET="225100",ES="AutresPersonnes",dn="6",jf=495,zn="173600",fU=858,p="0",ap="Section 3 : Logements-foyers",zm="montant_forfaitaire_charges_d823_16",km="Article L161-17-2",d="examples/aides_logement/prologue.catala_fr",ER="eligibiliteAidesPersonnelleLogement",eU=817,bm=248,zk=1905,zl=3406,nc=341,oC=322,EQ=2370,zj=3856,je=2007,EP="208200",ze="Zone1",zf="Locataire",zg=2245,hT=301,zh="R\xc3\xa8glement (CE) n\xc2\xb02866/98 du conseil du 31 d\xc3\xa9cembre 1998 concernant les taux de conversion entre l'euro et les monnaies des \xc3\x89tats membres adoptant l'euro",zi="37457",EO="562800",zd="535744",EN=572,zb=4182,zc="235800",nb=555,b4=403,na=930,EM="resetLog",EL=4811,za="\xc3\xa2ge_l512_3_2",U="AllocationsFamiliales",y$="situation_familiale_calcul_apl",q_="GardeAlterneeAllocataireUnique",m$="D\xc3\xa9cret n\xc2\xb0 2022-1608 du 22 d\xc3\xa9cembre 2022 portant rel\xc3\xa8vement du salaire minimum de croissance",EJ="haut",EK=1215,gI=1024,y9="204761",y_="3.1",jd=802,m_=133,sa="35780",y7="calculAidePersonnaliseeLogementFoyer",y8=4470,EI=4484,oB=945,fi=366,fj=0xffffff,EH="34829",y5=524,y6=4805,m9=876,jc="Titre III: Titre III : Dispositions communes relatives au financement",EG="36378",ax="Calculette globale",hS=286,jb=3775,EF="149600",y4=3586,kL="Article R824-1",de=1994,EE=4568,hR=2010,bK="Prologue : prestations familiales",r$=2147483647,ED="774",oA=689,y3=", characters ",f$=456,q9="180100",f_="BaseMensuelleAllocationsFamiliales",y2="prestations_familiales.r\xc3\xa9sidence",EC="819",bn="Chapitre IV : Calcul des allocations de logement en secteur accession",y1="AllocationJournali\xc3\xa8rePresenceParentale",y0=".0",EB=4038,EA="36733",q8="AllocationFamilialesAvril2008",yZ=328,ja=693,eT=855,Ez="AllocationRentreeScolaire",q7="mensualit\xc3\xa9_minimale",kK="2.",m8=691,fp="5612",yY="Concubins",dD="calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9",yX="date_entr\xc3\xa9e_logement_in",r_="Montants revaloris\xc3\xa9s de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",yW="SaintBarth\xc3\xa9lemy",aa="Partie l\xc3\xa9gislative",yV=357,hQ=2003,kl="Article R823-4",yU="32956",br="examples/allocations_familiales/securite_sociale_D.catala_fr",yT="294500",yS=3085,q6="examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr",dX="RessourcesAidesPersonnelleLogement",f9="Montant des plafonds de ressources",bq="Annexe",eS="Section 1 : B\xc3\xa9n\xc3\xa9ficiaires",Ey="3524",yR="Article D832-27",Ex=3553,yQ="Zone3",kk="500",fT=471,Ew=304,dM=2015,yP="40144",fo="prise_en_compte",yO=3144,Ev="223900",yN="ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux",Eu=138,yM="225500",oz=1998,x="Livre VIII : Aides personnelles au logement",hP=905,kj="caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6",q5="nan",Et="38892",yL=1276,m7=4401,yJ="calculNombrePartLogementFoyer",m6=646,yK=4972,kJ="Impay\xc3\xa9D\xc3\xa9penseLogement",yI=3271,bf="Calculette avec garde altern\xc3\xa9e",Es=0xdfff,hO="4.3",eA="/",Er=4504,r9="ENOTDIR",r8=1073741823,Eq=1426,yH=273,yG="\\r",r7="0.0068",r6=513,Ep="calcul_allocation_logement",q4="coefficient_prise_en_charge",m4=743,m5=734,yF=206,Eo="1107",m3=3811,kI="Article D161-2-1-9",oy="Guyane",ow="PasDeTravaux",ox=311,m2=255,En="Revenu",bH="droit_ouvert_majoration",F="Partie r\xc3\xa9glementaire",c5="Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat",yE=4918,Em="coefficient_r_d832_25",yD="Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s",El="Sous-section 4 : Prise en compte du patrimoine",i="D\xc3\xa9clarations des champs d'application",yC="End_of_file",Ek="calcul_apl_logement_foyer.condition_2_du_832_25",yB="calculAllocationLogementFoyer",ki="traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9",fh="Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer",i$="Article 24",q3="Failure",Ej="267871",Ei=4018,yA="167800",a6="CalculetteAidesAuLogement",Eg=1865,Eh=1347,Y=684,m1=715,q2="\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",yz=0xdc00,yy="389618",ov="3.",i_=788,yx="185800",r5="0.0201",ou=880,Ef="Sys_error",yw=4003,fS="Article D521-2",Ee=3587,m0=703,Ed=3595,yv=2477,r4="nombre_personnes_\xc3\xa0_charge_prises_en_compte",ez="Sous-section 4 : Assurance vieillesse",Eb=3889,Ec="Printexc.handle_uncaught_exception",cT="Article D832-24",kH=618,ot="30500",hN=1079,yu="194810",mY=745,mZ="int_of_string",Q="examples/aides_logement/arrete_2019-09-27.catala_fr",yt="Chapitre Ier : Principes g\xc3\xa9n\xc3\xa9raux",os="Article 37",ys="39340",yr="name",cJ=103,i9=966,yq=447,i8=428,al="Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement",kG="traitement_aide_finale_redevance",dW=132,yp=" ])",Ea="1.4",or=698,mX="31797",ym="type_travaux_logement_in",yn="19484",yo=3210,mW=988,yl=3850,cG="Article 7",D$="%Li",mV=864,D_=4067,gH=591,oq=1014,q1="r\xc3\xa9muneration_mensuelle",dy=302,hM=960,yk=205,cF="Article 14",yj="34570",q0="date_de_naissance",i7=1090,mU="base_mensuelle_allocations_familiales",i6=795,i5=927,mT="_z",i4=2000,r3=1951,mS=860,op="Arr\xc3\xaat\xc3\xa9 du 29 juillet 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance",yi=2269,yh=4109,eR=136,b8="Titre IV : Allocations de logement",D9=2566,yg="retrieveRawEvents",ef="InterfaceAllocationsFamiliales",mR=985,D8=4851,i3=1077,kh="Pendant",qZ="%a",gG=", ",fg="5422",yf=199,dm=2018,D7="17012",oo="calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25",ye="AllocationJournalierePresenceParentale",D6=3542,bX="Chapitre III : Calcul des aides personnelles au logement en secteur locatif",D5="' kind for the enumeration 'ElementPrestationsFamiliales.t'",hL=682,fR=467,bE="Prestations familiales",D2="Enfant\xc3\x80Charge",D3="calculette",D4="GardeAltern\xc3\xa9eAllocataireUnique",ey="Article D823-16",D1="172500",r2="n_nombre_parts_d832_25",r1="Apres",hK=1084,yd=359,bG="examples/aides_logement/../prestations_familiales/prologue.catala_fr",yc=2187,D0="179800",fn=" ",K="Secteur locatif",DZ="Undefined_recursive_module",yb=3721,ae="output",ya="195500",x$=1194,bB="Articles valables du 1er octobre 2021 au 30 juin 2022",DY="base_mensuelle_allocations_familiales.date_courante",qY="199900",x_=1424,cE=-976970511,x8="' kind for the enumeration 'SituationObligationScolaire.t'",x9="%.16g",DX="220100",on=189,x7=4422,kg="droit_ouvert_forfaitaire",kf=620,x6="%i",qX="0.01",DW="262985",x5="409505",x4="LogementFoyer",DV="139700",om="PrestationAccueilJeuneEnfant",DU="Article L822-4",ol=856,x3="41252",DR="0.1",DS="Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9",DT=382,mQ="5399",qW="2805",ff=123,mP=570,x2="calcul_apl_logement_foyer.type_logement_foyer",hJ="0.0173",gF=806,L="Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement",fQ=159,x1="LocationAccession",i2=1067,mO=577,DQ=183,qV="a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales",DP="41338",dx=0xff,x0=2217,mN="Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance",DO=-12,mM="calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies",xZ=3180,mL=458,xY=191,mK="Article 15",dd="0.75",ke="Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin",DN="22355",mJ=3654863,xX=2556,DM="140800",ok=145,r0="Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",ex=455,DL=1997,xW="163000",oj=991,kd="0.5",oi="Article R842-14",kc=641,xV="fd ",DK=2203,xU="41751",xT="181800",rZ=409,xQ="\xc3\xa9quivalence_loyer_\xc3\xa9ligible",xR=2448,xS="41316",DJ=4784,bJ="traitement_aide_finale_contributions_sociales_arrondi",xP="cat\xc3\xa9gorie_calcul_apl",xO="757",cc="Prise en compte des ressources pour les aides personnelles au logement",kF="coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte",hH=377,hI=1081,DI=1290,oh=848,fP=2001,qU="Compl\xc3\xa9mentFamilial",hG=793,xN=633,DH="smic.r\xc3\xa9sidence",xM=3260,az="Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es",f8=1018,mI=108,DG="Article D832-18",mH=-2147483648,eQ=2002,z="1",xL="Chapitre II : Dispositions applicables aux ressources",mG="Article R822-7",DE=2676,DF="42605",xJ="VendeurQuandDemandeurAContratLocationAccession",xK="Article R755-0-2",qT=406,DD="calculNombrePartsAccessionPropriete",DC="allocationFamilialesAvril2008",rY=": Not a directory",xI="b",DA="18900",DB="Article D521-3",cS="CalculAidePersonnalis\xc3\xa9eLogement",xH="D331_63_64",dV=2012,Dz=4725,Dx="42469",Dy="Out_of_memory",xG=4897,E="examples/aides_logement/code_construction_reglementaire.catala_fr",ah="4",rX="index out of bounds",mF=986,xF=3886,Dv="27900",Dw=3481,i1=903,og="_bigarr02",Du=3178,xD=975,xE="31264",mE=881,Dt=0xffffffff,hF=4441,gE=895,Ds="LaR\xc3\xa9union",xC=3531,mD="Article L822-5",mC=574,Dr="981600",hD=3771,hE=292,ew=0xffff,gP=2009,Dq="%.17g",xA=1806,mB="calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25",xB=400,xy=1965,xz=1148,c4="100.",xx=3226,Do="1.25",Dp=143,Dn=2705,xw="44729",xv=1310,eP="\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3",gD=963043957,P="5",mA=142,of=741,dl=126,i0="AllocationSoutienFamilial",xu=840,Dm="SousLocataire",xt="34713",xs=4197,oe=628,bb="Section 1 : Calcul, liquidation et versement des aides",kE=124,xr="0.98",gC="Article L512-3",Dl=2182,xp="633129",xq=422,iZ=427,dk=150,xo="41440",mz=135,iY=899,dj="\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement",dC="Sous-section 2 : Calcul de l'aide en secteur locatif",kb=252,Dk="enfant_le_plus_\xc3\xa2g\xc3\xa9",I="examples/allocations_familiales/prologue.catala_fr",au="CalculAidePersonnalis\xc3\xa9eLogementFoyer",ev=".",od=147,Dj=0xf0,xn="eligibilitePrestationsFamiliales",cI="12.",ch=694,my="Guadeloupe",xm=276,bp=116,oc="230500",xl="enfantLePlusAge",ob=576,mx=627,di=365,hC=813,xk=3954,fm="traitement_aide_finale_montant_minimal",dh=294,xj="impossible case",iX=1073,dU="examples/allocations_familiales/securite_sociale_R.catala_fr",f7=968,eO="R\xc3\xa8gles diverses",mw=500,Di=-1080,Dg="18185",Dh=4043,hB=638,xi="SaintBarthelemy",dB=1063,Df=-1023,Dd="type_logement_foyer_in",oa=859,De=221,gB="1272",xh="ressources_m\xc3\xa9nage_avec_arrondi",Db="ouvertureDroitsRetraite",Dc="\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement",iW=3773,Da="204700",rW="Article L755-12",xg="TravauxPourAcquisitionD832_15_1",C$="Ancien",rV="lib/read.mll",xf=4411,gO="1229",C_="Article premier",mv=501,aZ="\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement",xe=2079,C9=1788,xd=4051,gA=819,mu='"',C8="Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations",mt="examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr",cR="CalculAllocationLogement",xc=231,hA=4448,C7="3539",rU="<",w$="208500",cg=931,xa="prestations_familiales.date_courante",xb=0x800,hz=617,ms=182,w_=398,rT=1152,C6=331,n$="\xc3\xa9ligibilit\xc3\xa9",w8="233000",w9=0.012,w7=2346,w6="calculAidePersonnaliseeLogementLocatif",bW="Article 33",iV=719,C5="M\xc3\xa9tropole",C3="40696",C4=209,w5=131,C2="ressources_m\xc3\xa9nage_arrondies_seuil",w4=204,rS="Article D815-1",iT=834,iU="conditions_hors_\xc3\xa2ge",eN="traitement_aide_finale_abattement",bc="Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte",w2=726928360,ay=562,w3="221100",qS=165,w1="([^/]+)",C1="plafond_loyer_d823_16_2",mr=700,C0="Article 39",rR=0xf,w0=4883,rQ=809,wZ="798",CZ="BailleurSocial",ka="montant_initial_m\xc3\xa9tropole_majoration",n_=372,cs=125,kD="ressources_m\xc3\xa9nage_arrondies_in",iS=907,wX=2950,wY="Division_by_zero",CY=2403,f6=1092,n9=520,CX=4171,qR="Article L832-3",wW=708012133,n8=3976,CW="SituationObligationScolaire",CU="AutrePersonne\xc3\x80Charge",n7=879,CV="44440",wV=3158,CT="AllocationJeuneEnfant",dL=2014,mq=1119,iR=1059,dK=552,CR="22262",CS=3797,hy="date_courante_in",n6=659,CQ="Article D842-17",n5=697,CP="Article L751-1",f5=503,rP=119,wU=2542,j$="montant_avec_garde_altern\xc3\xa9e_majoration",CN="70",CO=4091,eM=412,dT=104,wS="calculette_sans_garde_altern\xc3\xa9e",wT="Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2022/82 du 28 mars 2022 relative \xc3\xa0 la revalorisation au 1er avril 2022 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",n4=321,wR="version_avril_2008",iQ=468,wQ="38361",n3=714,CM=439,fe=2013,CK="ouverture_droits_retraite",CL=102,wP="mensualit\xc3\xa9_principale_in",hx=800,CJ="997500",hw="100000.",wO="18261",fO=101,n2="calcul_nombre_parts.situation_familiale_calcul_apl",CI="participation_personnelle",CH="body",fN="Calcul des contributions sociales s'appliquant aux aides personnelles au logement",wN="Unexpected '%s' kind for the enumeration 'Collectivite.t'",rO="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",gN=1e7,j_=254,CG="calcul_apl_logement_foyer.zone",qQ=407,CF="6.",wL=3676,wM="1003",dw="Article L841-2",CE=" : flags Open_text and Open_binary are not compatible",d$="Article D832-15",eu="Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales",wK="43248",hv=4444,gM=1992,eL="examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr",wJ="\\\\",w="Code de la construction et de l'habitation",wI="Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",CD="Article 38",wG=2297,wH=188,CA=463,CB=160,CC="0.04",wF="0.0226",qP=270,wE="192500",Cy=3346,Cz="230700",wD="217600",n1=926,Cx="0.0463",qO="GardeAlterneePartageAllocations",qN="\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0",n0="0.55",nZ=109,dg="droit_ouvert",H="Champs d'applications",wC=479,iP=952,bk="ContributionsSocialesAidesPersonnelleLogement",iO="Article D832-10",bl="Interface du programme",qM=-97,Cw=944,aO="examples/aides_logement/archives.catala_fr",iN=469,wB="218700",qK="Article D823-20",qL="ServicesSociauxAllocationVerseeAuxServicesSociaux",kC="d\xc3\xa9pense_nette_minimale_d832_27",iM=195,et="1.",fM=1015,hu=1094,wA=2372,wz="45200",dc="d\xc3\xa9pense_nette_minimale",iL=954,qJ="Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es",wy=2226,j9="Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base",rN="Article D823-17",Cv="Instruction minist\xc3\xa9rielle N\xc2\xb0DSS/SD2B/2019/65 du 25 mars 2019 relative \xc3\xa0 la revalorisation au 1er avril 2019 des prestations familiales servies en m\xc3\xa9tropole",iK=596,nY="AllocationLogement",ww="5186",wx="Unexpected '%s' kind for the enumeration 'SituationObligationScolaire.t'",dJ=1065,fL=155,f4=518,Cu="calcul_apl_logement_foyer.situation_familiale_calcul_apl",wu="142303",mp=316,wv="37778",d_=296,nX=565,nW=215,d9="Article D832-11",wt="LaReunion",kB=947,Ct="AgrandirOuRendreHabitableD331_63",aC="Montant du salaire minimum de croissance",mo=557,iJ=3283,ee=621,qI="0.3",ws="true",bd="Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution",f3=370,ad="Titre II : Dispositions communes aux aides personnelles au logement",Cr=214,Cs="25116",j8="Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s.",qH="1500",wr=" is too large for shifting.",Cq="237200",nV=502,mm="242800",mn="Map.bal",rM="5208",Cp="0.08",ht=4841,wq="@[",ag="Titre III : Aide personnalis\xc3\xa9e au logement",Co="Apr\xc3\xa8s",af="Code de la s\xc3\xa9curit\xc3\xa9 sociale",Cn="42892",ml=688,mk="ml_z_overflow",wp="1.8",Cm=807,kA="contributions_sociales.date_courante",kz=850,wo=307,mj=309,wn="calcul_apl_logement_foyer.redevance",Cl=-752863768,Ci=904,rK="202500",rL="Article D832-17",Cj=360,Ck=3088,Cf="Article 10",iI=1144,Cg="allocationsFamiliales",Ch="Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2021/65 du 19 mars 2021 relative \xc3\xa0 la revalorisation au 1er avril 2021 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",wm="582700",nU=167,Ce="4986",nT=274,aD="CalculAidePersonnalis\xc3\xa9eLogementLocatif",Cd=433,nS=531,eK="abattement_d\xc3\xa9pense_nette_minimale",Cb=3769,Cc="Sys_blocked_io",wl=450,qG="b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement",gz="Chapitre 2 : Champ d'application",wk="0.0588",nR="Chapitre 2 : Champ d'application.",rJ=362,wj=3757,iH=3939,wi=2592,iG=3281,nQ=457,Ca="49",wh=1882,Z="\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement",bz="Article D842-15",B$=1010,iF="nombre_personnes_\xc3\xa0_charge_in",B_=3361,mi=246,fK=1016,wf="37900",wg="%u",B9=3316,mh="Article L831-1",mg="Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession",fJ="calcul_\xc3\xa9quivalence_loyer_minimale",fI=298,we=4273,B8="Article 40",b7="\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement",wd="19402",mf=925,X="2",cQ=127,nP=711,wb="Article 30",wc="@{",cf="Montant de la base mensuelle des allocations familiales",wa=" : flags Open_rdonly and Open_wronly are not compatible",v$="0.232",rI="OuvertureDroitsRetraite",v9="Zone2",v_="43505",B7=3451,nO="D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance",cH="-",B6=336,hs=603,B5="type_aide_in",v7="n_nombre_parts_d832_11",v8=" : file already exists",j7="EffectiveEtPermanente",v6="1127",B3="calculAllocationLogementAccessionPropriete",B4="41481",fd="0.0045",fH="Date d'ouverture des droits \xc3\xa0 la retraite",me=866,v5=1099,B2="retrieveEvents",v4="20165",hr=4837,iE="situation_familiale_calcul_apl_in",B1="2699",nN=4802,mc=625,md=644,v2="Infini",v3="prestationsFamiliales",fG="Article 43",v1="\\b",ak="Titre IV : Allocations de Logement",mb="Martinique",nM=404,cr="Article D832-25",v0=487,B0=2322,vZ=12520,BZ="Collectivit\xc3\xa9",cW=401,BY="42228",ck="Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement",aN="Chapitre 1er : Allocations familiales",hq=2016,vY="AllocationEducationEnfantHandicape",BX="832200",vX=1176,vW=1408,BW="AllocationRentr\xc3\xa9eScolaire",iD=1000,V="CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9",$="",rH=737456202,iC="Sous-section 2 : Principes de neutralisation et d'abattement",BV="^",ma="Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement",j6=746,hp=0x3f,BU="' kind for the enumeration 'Collectivite.t'",vV=4281,rG="184000",vU="251500",j5=334,dS="Article 16",BT="Article D842-9",vT="Match_failure",vS=3130,ho=716,at=2021,vR=4735,vQ=2345,hn=4446,iB="0.085",kx="d\xc3\xa9pense_nette_minimale_d832_10",ky="CalculNombrePartLogementFoyer",vO=1241,vP=1436,BS="35130",j4="montant_initial_majoration",fl="+",BR=2996,iA=1061,BQ="1057",BP=179,hm=425,BO=4963,vN=3916,BN="%li",cP=998,hl="Smic",BL="colocation_in",BM="234600",vM=2313,vL="logement_meubl\xc3\xa9_d842_2_in",vK=4659,BK="39051",vJ="20900",nL="calcul_apl_logement_foyer",rF="208600",vI=267,hk=431,BJ="impayeDepenseLogement",iz=962,BI="calcul_nombre_parts.condition_2_du_832_25",vH=0xe0,l$=1126,BH="20100",l_=882,BG="D331_32",eJ="contributions_sociales",iy=580,BF="\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers_in",vG=225,hj=250,vF="calcul_apl_logement_foyer.ressources_m\xc3\xa9nage_arrondies",N="Secteur logement-foyer",qF="Article L831-2",J="Allocations familiales",ix=893,nK=624,qE="0.027",vD="\xc3\xa9ligibilit\xc3\xa9_commune.m\xc3\xa9nage",vE="allocations_familiales",rE=1255,iw="Article 8",bP="examples/allocations_familiales/securite_sociale_L.catala_fr",l9=594,vC=245,bC=2019,nJ="Article R521-1",rD="jsError",eI=0x8000,l8=1055,bj="Chapitre Ier : Champ d'application",BE="Section 1 : Conditions relatives au b\xc3\xa9n\xc3\xa9ficiaire",iv=964,BD="43074",l7=946,vB="6.55957",vA="eligibiliteAidePersonnaliseeLogement",l6="Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources",vz=3964,l5=371,fF=320,iu=129,hi=958,vy="\n",kw="abattement_d\xc3\xa9pense_nette_minimale_d832_27",hh=497,am="Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement",qD="3.7",BC=483,f2=414,l4=310,bO="Tous secteurs",vw="Article 34",b$="calcul_plafond_mensualit\xc3\xa9_d842_6_base",vx=1033,it=2005,BB=-48,qC="9",is=4839,vv=4141,BA="1025",cj="camlinternalFormat.ml",eH=549,nI=312,Bz=686,nG=943,nH=148,By="132000",qB="0.0185",vu="924600",nF=713,c2=2017,vt=1124,Bx="date_naissance",cV=317,l3="Article R822-2",aj="CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9",ed="Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s",hg=1141,rC="obligation_scolaire",vs="EEXIST",Bw="r\xc3\xa9duction_loyer_solidarit\xc3\xa9_in",f1=293,eG=550,es=121,Bv="prestations_familiales.prestation_courante",nE=1999,Br=824,Bs="\xc3\xa9ligibilit\xc3\xa9_commune.demandeur",Bt=1406,Bu="\\n",l2=1858,vr=4025,dv=120,l1="16",Bp="23138",Bq="Article D832-14",rB=512,vq=0x7ff0,vp="eligibiliteAllocationLogement",l0=928,nD=861,qA="montant_forfaitaire_charges",er="traitement_aide_finale_d\xc3\xa9pense_nette_minimale",rA=177,vn=228,vo="\xc3\xa9quivalence_loyer_minimale",vm="0x",Bo="Ascendant",lZ="0.005",Bn=3865,t="Calcul du montant de l'aide personnalis\xc3\xa9e au logement",lX=499,lY="D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance",Bm=2531,nC=645,Bl="40888",vk="bas",vl="0.208",vj="date_conventionnement_in",Bk=2335,vi="210900",Bj="219900",aw="traitement_aide_finale",vg="r\xc3\xa9gime_outre_mer_l751_1",be=105,vh="Invalid function call ([ ",vf="Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",eF=551,lW="Article R512-2",hf=1135,Bi="31664",bo="direct",ve="44693",f0=454,Bh=1520,he="0.45",qz="2710",rz=1914,gy=429,ac="input",vd="39839",Bg="\xc3\xa9ligibilit\xc3\xa9_logement",qy="0.2",fE=157,dR=364,lV="D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance",vc=390,nB=498,Bf=4586,fc="examples/aides_logement/autres_sources.catala_fr",Be=283,vb="calculAllocationLogement",qx="mkdir",gL=379,gx="Article L822-3",va=4080,a4="Chapitre III : Modalit\xc3\xa9s de liquidation et de versement",dQ=1013,nA=592,nz=": No such file or directory",u$="\xc3\xa9quivalence_loyer",hd=378,u_=655,fZ="Chapitre VII : Calcul des allocations de logement en secteur logement-foyer",gK="Titre 5 : D\xc3\xa9partements d'outre-mer",lU=948,u9="766",u7=2355,u8=4648,cO="CalculetteAidesAuLogementGardeAltern\xc3\xa9e",u6=151,Bd="calculetteAidesAuLogement",ry="Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",fb=1137,Bc="Descendant",cb="\xc3\x89ligibilit\xc3\xa9AllocationLogement",ba="D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte",Bb=3832,ny=626,Ba="\xc3\xa9ligibilit\xc3\xa9_apl",u5="taux",qw="Demandeur",bh="CalculAllocationLogementLocatif",A$="BeginCall([ ",u4=332,rx=822,j3="caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1",A_="GardeAltern\xc3\xa9ePartageAllocations",fD=932,A9="coefficient_multiplicateur_d832_25",ir=3937,a1="\xc3\x89pilogue",A8=1931,ao="CalculAllocationLogementFoyer",A7="943900",A6="bmaf",A4="calculEquivalenceLoyerMinimale",A5=4036,lT=2006,hc="0.95",A2="contributionsSocialesAidesPersonnelleLogement",A3="ressourcesAidesPersonnelleLogement",lS=863,cC=363,u2="Pervasives.do_at_exit",u3="utf8",A1="222300",qv="ComplementFamilial",A0="225000",u1=3736,AZ=2324,u0="date_signature_pr\xc3\xaat_in",uZ="\xc3\xa9ligibilit\xc3\xa9_allocation_logement",rw="0.0283",aR=854,rv="0.16",lR=643,aQ="Article 18",uY=3105,iq=418,AY="36815",eE=134,dA="Section 2 : Conditions relatives aux ressources",AX=2109,aK="\xc3\x89ligibilit\xc3\xa9 aux allocations de logement";function -byD(d,b,e,c,f){if(c<=b)for(var +bzw=aL,bzz=typeof +module==="object"&&module.exports||aL,AR="38527",iq=1133,rx=424,gV=857,cq="\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales",Gf="Article L521-1",kt="Paragraphe 2 : Ouverture du droit et liquidation.",nw=365180284,AQ="Changement",Ge="26714",Gd=163,AP="redevance_in",o9="SaintMartin",gM=815,Gc=1197,AO="1015",ju=891,ec="Section 1 : Seuils de constitution d'un impay\xc3\xa9",AM=4865,AN="559500",b6="Article 1",cX="aide_finale_formule",AL="35630",gU=122,sx="Article 31",kW="50",bg="Unexpected '",fY=299,Gb="34700",jt=181,nv="Article 19",o8=862,kV=305,js=4442,ei=128,ks="Avant",rw="identifiant",o7="Oui",sw=1127,Ga="43000",rv="Article D832-26",eD=683,ip=573,ru=383,eY=146,nu=">",o6=575,gf=153,F$=1027,io=1129,o5=1053,eh=297,AK=4437,o4="Article 17",an="Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9",F_="b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s_in",eX="Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es",AJ="local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire_in",nt=933,o2=1125,o3="baseMensuelleAllocationsFamiliales",AI="35762",aM="Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement",jr=804,A="Calcul du montant de l'allocation logement",F9=358,d2=2011,dg=2023,d1=295,F8=462,im="Article L841-1",rt="ServicesSociauxAllocationVerseeALaFamille",F7=3685,AG="186000",AH="Instruction interminist\xc3\xa9rielle no DSS/SD2B/2020/33 du 18 f\xc3\xa9vrier 2020 relative \xc3\xa0 la revalorisation au 1er avril 2020 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",AF="16.25",rs="0.0315",kr="traitement_aide_finale_diminu\xc3\xa9",ns=1118,jq=4835,F6="\xc3\xa9ligibilit\xc3\xa9_commune.date_courante",AE="40758",o1="e",o0=313,il="Autre",ik=798,AC=4382,AD=1150,F5="Article L822-2",AB=3909,jp=421,ge="smic",AA="39445",ij=1071,bD="Article D842-6",nr=1052,Ay=-43,Az="Neuf",Ax=3097,ii=901,Aw=3235,sv="Article 27",jo=897,F4="inf",F3="calculetteAidesAuLogementGardeAlternee",Av="27365",F2="Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",nq=685,Au=4637,F1="41392",kU=111,np=929,F0="Location",FZ=4456,As="240400",At=269,su=709,st="Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale",jn=619,FY="33500",kq="CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9",cp="Article D823-9",bI="traitement_aide_finale_minoration_forfaitaire",rr="\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",FX="infinity",FW=1855,ih="2.5",FV="3663",Aq=1134,Ar=278,eg="Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement",Ap=3194,eC="examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr",Ao="\\t",FT=3953,FU=2457,aG="examples/aides_logement/code_construction_legislatif.catala_fr",Am="situation_r822_11_13_17_in",An=330,FS=385,aP="Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien",kT=112,ig="1000",gL=1131,eb=563,c8="examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr",kS=701,Al="210600",FR="Unexpected '%s' kind for the enumeration 'ElementPrestationsFamiliales.t'",Ak="Couple",kp=687,no="SaintPierreEtMiquelon",FQ="loyer_minimal",ie=110,co="PrestationsFamiliales",oZ=464,FP="\xc3\x89l\xc3\xa9mentPrestationsFamiliales",Aj=1103,oY=679,FO="214700",FN=3973,id=615,dP="Calcul\xc3\x89quivalenceLoyerMinimale",Ai=2083,oX=554,FM="42926",jm=1096,rq=265,Ah=-32,nn=4408,Ag="39016",oW="AllocationLogementFamiliale",ea=1023,FK=2601,FL="interfaceAllocationsFamiliales",cl=561,nm="AllocationLogementSociale",Af=1974,Ae="plafond_l512_3_2",jl=639,rp="Chapitre II : Des contributions pour le remboursement de la dette sociale.",aW="examples/allocations_familiales/decrets_divers.catala_fr",fX=117,Ad=348,kR="compl\xc3\xa9ment_d\xc3\xa9gressif",ro="Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9",FI="240200",FJ="Assert_failure",ss="Section 1 : Secteur locatif ordinaire",FH="568400",sr="0.32",Ac="40961",FG=350,kQ="Non",jk=508,Ab=185,kP="Article R824-2",FF=219,FE=1e14,Aa="D331_76_1",jj=3489,oV="Article R521-3",z$="17607",$=2022,FC="34865",FD="Fatal error: exception %s\n",z_="261800",oU=865,ko=740,fW="Article 2",eB=256,dO=558,ic=786,z9="Article L521-3",FB="Article R822-1",z8="45064",FA="taux_francs_vers_euros",kO="abattement_d\xc3\xa9pense_nette_minimale_d832_10",oT=699,sq="mensualit\xc3\xa9_\xc3\xa9ligible",gd=1075,nl="D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance",sp="ENOENT",so=1395,rn="0.0006",ia=3935,ib=315,rl="EnfantLePlus\xc3\x82g\xc3\xa9",rm=259,z7=2685,nk=556,bw="examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr",z6="228000",Fz="ENOTEMPTY",z5="copropri\xc3\xa9t\xc3\xa9_in",sn="Article 13",Fy="calcul_apl_logement_foyer.nombre_personnes_\xc3\xa0_charge",z4="D331_59_8",Fw="Loyer",Fx="35947",z3=2540,ji=3486,eW=564,z2="brut_horaire",z1=172,Fv="x",z0="Sous-section 1 : Aides personnelles au logement",Fu="calculAidePersonnaliseeLogementAccessionPropriete",h$=547,ci="Articles valables du 1er octobre 2020 au 31 septembre 2021",kn="Article D755-5",fV=680,Ft="Article D842-4",jh=791,dF=314,sm="%d",rk=810,nj=4768,zZ="Z.of_substring_base: invalid digit",Fs="ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille",Fr="logement_est_chambre_in",h_=637,ni=285,zY="buffer.ml",e="Prologue : aides au logement",D="Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9",zX=3640,Fp="167600",Fq="39590",Fo=3213,Fn=2565,gT=2008,rj="0.0179",Fm=3505,zW="245700",B="Prologue",zV=3366,nh="calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge",Fl="Metropole",cd=100,kM="prise_en_compte_personne_\xc3\xa0_charge",kN=851,ng=702,h9=420,fq=300,h8=4831,_="3",a9="Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples",zU=230,oR=413,Fk="835",oS="169.",zT="plafond_\xc3\xa9quivalence_loyer_\xc3\xa9ligible",zS=0.5,Fj=4027,kL=990,cU="Article D521-1",Fh="conventionn\xc3\xa9_livre_III_titre_V_chap_III",oQ=622,Fi="sous_calcul_traitement",nf=4769,zR=374,h7=956,oP="Article D842-11",d0="Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses",zQ=4137,c4=107,ne=381,nd="Article D842-12",jg=690,oO="prestations_familiales",kK="est_enfant_le_plus_\xc3\xa2g\xc3\xa9",zP="26440",h6=649,Fg="201700",sl="Unix.Unix_error",h5=1139,zO=284,Fe="calculAidePersonnaliseeLogement",oN=553,Ff=3970,h4=1088,zN="Stack_overflow",fj="condition_2_r823_4",a7="Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer",aU="\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement",oM=4089,Fd=4843,h3=3487,zL=3460,zM="/static/",ri=253,Fc="Not_found",zK="1085",rg=235,rh="\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02",zJ="851",zI="41268",a0="examples/allocations_familiales/epilogue.catala_fr",oL=695,Fb="calcul_apl_logement_foyer.date_courante",ca=848054398,oK="Mayotte",Fa="smic.date_courante",zG=1841,zH=260,oJ="1224",E_="calcul_apl_locatif",E$=243,dA="calcul_plafond_mensualit\xc3\xa9_d832_10_3",h2=1049,rf="rmdir",oI=696,gc=1069,E8="participation_minimale",E9=32752,zF="33623",sk="19100",zE="37478",gb="calcul_nombre_parts",zD=3279,sj="Article 23",oH="Article R842-5",zC=1026,dq=149,E7="taux_composition_familiale",bQ="montant",dZ="Article L521-2",bu="examples/allocations_familiales/../smic/smic.catala_fr",zz="calculAllocationLogementLocatif",zA="37906",zB="false",dp=849,oG="Invalid integer: ",zy="PasDeChangement",E6=2381,bv="\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement",zx=3325,a_=106,E5=346,h1=186,dN=0x80,eV="Chapitre 1er : Dispositions relatives aux prestations",si="Fatal error: exception ",zw=4211,oF="\xc3\xa9ligibilit\xc3\xa9_commune",sh="0.0234",E4="43378",zv="calcul_apl_logement_foyer.date_conventionnement",h0=852,E3=234,zu=1413,hZ=1054,sg="25978",dY=303,zt=1556,E2=493,E1="Section 2 : R\xc3\xa8gles de non-cumul",hY="zone_in",sf="_",zr="eligibilitePrimeDeDemenagement",hX=517,zs=3143,re="compare: functional value",b5="0.",zo=114,zp="40928",zq="19300",nc=411,nb=978,zn="197700",zm="Invalid_argument",hW=4832,rd=823,E0="EndCall([ ",oE="0.9",EY="Article R822-22",EZ="prise_en_charge",zl="calcul_aide_personnalis\xc3\xa9e_logement",zk=249,EW="34301",EX="577500",zi=3941,zj="%ni",na=949,fp=324,W=2020,zh=3783,EV="PersonneSeule",zg=1418,oD=559,rc="0.0238",se="Article 9",EU="225100",ET="AutresPersonnes",dn="6",jf=495,zf="173600",fU=858,p="0",ap="Section 3 : Logements-foyers",ze="montant_forfaitaire_charges_d823_16",km="Article L161-17-2",d="examples/aides_logement/prologue.catala_fr",ES="eligibiliteAidesPersonnelleLogement",eU=817,bm=248,zd=1905,m$=341,oC=322,je=2007,ER="208200",y_="Zone1",y$="Locataire",za=2245,hV=301,zb="R\xc3\xa8glement (CE) n\xc2\xb02866/98 du conseil du 31 d\xc3\xa9cembre 1998 concernant les taux de conversion entre l'euro et les monnaies des \xc3\x89tats membres adoptant l'euro",zc="37457",EQ="562800",y9="535744",EP=572,y8="235800",m_=555,b4=403,m9=930,EN=2412,EO="resetLog",EM=4811,y7="\xc3\xa2ge_l512_3_2",U="AllocationsFamiliales",y6="situation_familiale_calcul_apl",rb="GardeAlterneeAllocataireUnique",m8="D\xc3\xa9cret n\xc2\xb0 2022-1608 du 22 d\xc3\xa9cembre 2022 portant rel\xc3\xa8vement du salaire minimum de croissance",EK="haut",EL=1215,gK=1024,y4="204761",y5="3.1",jd=802,m7=133,sd="35780",y2="calculAidePersonnaliseeLogementFoyer",y3=4470,EJ=4484,oB=945,fh=366,fi=0xffffff,EI="34829",y0=524,y1=4805,m6=876,jc="Titre III: Titre III : Dispositions communes relatives au financement",EH="36378",ax="Calculette globale",hU=286,EG="149600",ga=3775,yZ=3370,kJ="Article R824-1",c3=1994,EF=4568,hT=2010,bK="Prologue : prestations familiales",sc=2147483647,EE="774",oA=689,yY=", characters ",f$=456,ra="180100",f_="BaseMensuelleAllocationsFamiliales",yX="prestations_familiales.r\xc3\xa9sidence",ED="819",bn="Chapitre IV : Calcul des allocations de logement en secteur accession",yW="AllocationJournali\xc3\xa8rePresenceParentale",yV=".0",EC=4038,EB="36733",q$="AllocationFamilialesAvril2008",yU=328,jb=693,eT=855,EA="AllocationRentreeScolaire",q_="mensualit\xc3\xa9_minimale",kI="2.",m5=691,fo="5612",yT="Concubins",dE="calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9",yS="date_entr\xc3\xa9e_logement_in",sb="Montants revaloris\xc3\xa9s de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",yR="SaintBarth\xc3\xa9lemy",ab="Partie l\xc3\xa9gislative",yQ=357,hS=2003,kl="Article R823-4",yP="32956",br="examples/allocations_familiales/securite_sociale_D.catala_fr",yO="294500",yN=3085,q9="examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr",Ez=3051,dX="RessourcesAidesPersonnelleLogement",f9="Montant des plafonds de ressources",bq="Annexe",eS="Section 1 : B\xc3\xa9n\xc3\xa9ficiaires",Ey=2913,Ex="3524",yM="Article D832-27",Ew=3553,yL="Zone3",kk="500",fT=471,Ev=304,dM=2015,yK="40144",Eu=4052,fn="prise_en_compte",Et=3985,yJ=3144,Es="223900",yI="ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux",Er=138,yH="225500",oz=1998,x="Livre VIII : Aides personnelles au logement",hR=905,kj="caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6",q8="nan",Eq="38892",yG=1276,m4=4401,yE="calculNombrePartLogementFoyer",m3=646,yF=4972,kH="Impay\xc3\xa9D\xc3\xa9penseLogement",bf="Calculette avec garde altern\xc3\xa9e",Ep=0xdfff,hQ="4.3",eA="/",Eo=4504,sa="ENOTDIR",r$=1073741823,En=1426,yD=273,yB=4191,yC="\\r",r_="0.0068",r9=513,Em="calcul_allocation_logement",q7="coefficient_prise_en_charge",yz=4045,m1=743,m2=734,yA=206,El="1107",yy=3811,kG="Article D161-2-1-9",oy="Guyane",ow="PasDeTravaux",ox=311,m0=255,Ek="Revenu",bH="droit_ouvert_majoration",F="Partie r\xc3\xa9glementaire",c7="Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat",yx=4918,Ej="coefficient_r_d832_25",yw="Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s",Ei="Sous-section 4 : Prise en compte du patrimoine",i="D\xc3\xa9clarations des champs d'application",yv="End_of_file",Eh="calcul_apl_logement_foyer.condition_2_du_832_25",yu="calculAllocationLogementFoyer",ki="traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9",fg="Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer",ja="Article 24",q6="Failure",Eg="267871",yt="167800",Ef=2344,a6="CalculetteAidesAuLogement",Ed=1865,Ee=1347,Y=684,mZ=715,q5="\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",ys=0xdc00,yr="389618",ov="3.",i$=788,yq="185800",r8="0.0201",ou=880,Ec="Sys_error",yp=4003,fS="Article D521-2",Eb=3587,mY=703,ot=3595,r7="nombre_personnes_\xc3\xa0_charge_prises_en_compte",ez="Sous-section 4 : Assurance vieillesse",D$=3889,Ea="Printexc.handle_uncaught_exception",cT="Article D832-24",kF=618,os="30500",hP=1079,yo="194810",mW=745,mX="int_of_string",Q="examples/aides_logement/arrete_2019-09-27.catala_fr",yn="Chapitre Ier : Principes g\xc3\xa9n\xc3\xa9raux",or="Article 37",ym="39340",yl="name",cJ=103,i_=966,yj=4118,yk=447,i9=428,al="Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement",kE="traitement_aide_finale_redevance",D_=3951,dW=132,yi=" ])",D8="1.4",oq=698,D9=4005,mV="31797",yf="type_travaux_logement_in",yg="19484",yh=3210,mU=988,ye=3850,cG="Article 7",D7="%Li",mT=864,yd=3963,gJ=591,op=1014,q4="r\xc3\xa9muneration_mensuelle",dz=302,hO=960,yc=205,cF="Article 14",yb="34570",q3="date_de_naissance",i8=1090,mS="base_mensuelle_allocations_familiales",i7=795,D6=2439,i6=927,ya=2380,mR="_z",i5=2000,r6=1951,mQ=860,oo="Arr\xc3\xaat\xc3\xa9 du 29 juillet 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance",x$=2269,eR=136,b8="Titre IV : Allocations de logement",x_="retrieveRawEvents",ef="InterfaceAllocationsFamiliales",mP=985,D5=4851,i4=1077,kh="Pendant",q2="%a",gI=", ",ff="5422",x9=199,c6=2018,D4="17012",on="calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25",x8="AllocationJournalierePresenceParentale",D3=3542,bX="Chapitre III : Calcul des aides personnelles au logement en secteur locatif",D2="' kind for the enumeration 'ElementPrestationsFamiliales.t'",hN=682,fR=467,bE="Prestations familiales",DZ="Enfant\xc3\x80Charge",D0="calculette",D1="GardeAltern\xc3\xa9eAllocataireUnique",ey="Article D823-16",DY="172500",r5="n_nombre_parts_d832_25",r4="Apres",hM=1084,x7=359,bG="examples/aides_logement/../prestations_familiales/prologue.catala_fr",q1=2187,DX="179800",fm=" ",K="Secteur locatif",DW="Undefined_recursive_module",ae="output",x6="195500",x5=1194,x4=2959,bB="Articles valables du 1er octobre 2021 au 30 juin 2022",DV="base_mensuelle_allocations_familiales.date_courante",q0="199900",qZ=1424,cE=-976970511,x2="' kind for the enumeration 'SituationObligationScolaire.t'",x3="%.16g",DU="220100",om=189,x1=4422,kg="droit_ouvert_forfaitaire",kf=620,x0="%i",qY="0.01",DT="262985",xZ="409505",xY="LogementFoyer",DS="139700",ol="PrestationAccueilJeuneEnfant",DR="Article L822-4",ok=856,xX="41252",DO="0.1",DP="Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9",DQ=382,mO="5399",qX="2805",fe=123,mN=570,xW="calcul_apl_logement_foyer.type_logement_foyer",hL="0.0173",gH=806,L="Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement",fQ=159,xV="LocationAccession",i3=1067,mM=577,DN=183,qW="a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales",DM="41338",dy=0xff,xU=2217,mL="Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance",DL=-12,mK="calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies",mJ=458,xT=191,mI="Article 15",df="0.75",ke="Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin",DK="22355",mH=3654863,DJ="140800",oj=145,r3="Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",ex=455,DI=1997,xS="163000",oi=991,kd="0.5",oh="Article R842-14",kc=641,xR="fd ",DH=2203,xQ="41751",xP="181800",r2=409,xN="\xc3\xa9quivalence_loyer_\xc3\xa9ligible",xO="41316",DG=4784,bJ="traitement_aide_finale_contributions_sociales_arrondi",xM="cat\xc3\xa9gorie_calcul_apl",xL="757",cc="Prise en compte des ressources pour les aides personnelles au logement",kD="coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte",hJ=377,hK=1081,DF=1290,og=848,fP=2001,qV="Compl\xc3\xa9mentFamilial",hI=793,xK=633,DE="smic.r\xc3\xa9sidence",xJ=3260,az="Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es",f8=1018,mG=108,DD="Article D832-18",mF=-2147483648,eQ=2002,z="1",xI="Chapitre II : Dispositions applicables aux ressources",mE="Article R822-7",DC="42605",xG="VendeurQuandDemandeurAContratLocationAccession",xH="Article R755-0-2",qU=406,DB="calculNombrePartsAccessionPropriete",DA="allocationFamilialesAvril2008",r1=": Not a directory",xF="b",Dy="18900",Dz="Article D521-3",cS="CalculAidePersonnalis\xc3\xa9eLogement",xE="D331_63_64",dV=2012,Dx=4725,Dv="42469",Dw="Out_of_memory",xD=4897,E="examples/aides_logement/code_construction_reglementaire.catala_fr",ah="4",r0="index out of bounds",mD=986,Du=2379,xC=3886,Ds="27900",Dt=3481,i2=903,of="_bigarr02",Dr=3178,xA=975,xB="31264",mC=881,Dq=0xffffffff,hH=4441,gG=895,Dp="LaR\xc3\xa9union",xz=3531,mB="Article L822-5",mA=574,Do="981600",hF=3771,hG=292,ew=0xffff,i1=2009,Dn="%.17g",xx=1806,mz="calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25",xy=400,xv=1965,xw=1148,c5="100.",Dk="1.25",Dl=143,Dm=4100,xu="44729",xt=1310,eP="\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3",gF=963043957,P="5",my=142,oe=741,dm=126,i0="AllocationSoutienFamilial",xr=2575,xs=840,Dj="SousLocataire",xq="34713",od=628,bb="Section 1 : Calcul, liquidation et versement des aides",kC=124,Di=3550,xp="0.98",gE="Article L512-3",Dg=2182,Dh=1626,xn="633129",xo=422,iZ=427,dl=150,xm="41440",mx=135,iY=899,dk="\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement",dD="Sous-section 2 : Calcul de l'aide en secteur locatif",xl=2393,kb=252,Df="enfant_le_plus_\xc3\xa2g\xc3\xa9",I="examples/allocations_familiales/prologue.catala_fr",au="CalculAidePersonnalis\xc3\xa9eLogementFoyer",ev=".",oc=147,De=0xf0,xk="eligibilitePrestationsFamiliales",cI="12.",ch=694,mw="Guadeloupe",xj=276,bp=116,ob="230500",xi="enfantLePlusAge",oa=576,mv=627,dj=365,hE=813,fl="traitement_aide_finale_montant_minimal",di=294,xh="impossible case",iX=1073,dU="examples/allocations_familiales/securite_sociale_R.catala_fr",f7=968,eO="R\xc3\xa8gles diverses",Dd=3280,mu=500,Dc=-1080,Db="18185",hD=638,xg="SaintBarthelemy",dC=1063,Da=-1023,C_="type_logement_foyer_in",n$=859,C$=221,gD="1272",xf="ressources_m\xc3\xa9nage_avec_arrondi",C8="ouvertureDroitsRetraite",C9="\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement",iW=3773,C7="204700",rZ="Article L755-12",xe="TravauxPourAcquisitionD832_15_1",C6="Ancien",rY="lib/read.mll",xd=4411,gS="1229",C5="Article premier",mt=501,aZ="\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement",C4=1788,xc=4051,gC=819,ms='"',C3="Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations",mr="examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr",cR="CalculAllocationLogement",xb=231,hC=4448,C2="3539",rX="<",w_="208500",cg=931,w$="prestations_familiales.date_courante",xa=0x800,hB=617,mq=182,w9=398,rW=1152,C1=331,n_="\xc3\xa9ligibilit\xc3\xa9",w7="233000",w8=0.012,w6="calculAidePersonnaliseeLogementLocatif",bW="Article 33",iV=719,CZ=3005,C0="M\xc3\xa9tropole",CX="40696",CY=209,w5=131,CW="ressources_m\xc3\xa9nage_arrondies_seuil",w4=204,rV="Article D815-1",iT=834,iU="conditions_hors_\xc3\xa2ge",eN="traitement_aide_finale_abattement",bc="Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte",w2=726928360,ay=562,w3="221100",qT=165,w1="([^/]+)",CV="plafond_loyer_d823_16_2",mp=700,CU="Article 39",rU=0xf,w0=4883,rT=809,wZ="798",CT="BailleurSocial",ka="montant_initial_m\xc3\xa9tropole_majoration",n9=372,cs=125,kB="ressources_m\xc3\xa9nage_arrondies_in",iS=907,wY="Division_by_zero",f6=1092,n8=520,rS=4171,qS="Article L832-3",wX=708012133,CR=3976,CS="SituationObligationScolaire",CQ=4076,CO="AutrePersonne\xc3\x80Charge",n7=879,CP="44440",wW=3158,CN="AllocationJeuneEnfant",dL=2014,mo=1119,iR=1059,dK=552,CL="22262",CM=3797,hA="date_courante_in",n6=659,CK="Article D842-17",n5=697,CJ="Article L751-1",f5=503,rR=119,j$="montant_avec_garde_altern\xc3\xa9e_majoration",CI="70",eM=412,dT=104,wU="calculette_sans_garde_altern\xc3\xa9e",wV="Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2022/82 du 28 mars 2022 relative \xc3\xa0 la revalorisation au 1er avril 2022 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",n4=321,wT="version_avril_2008",iQ=468,wS="38361",n3=714,CH=439,fO=2013,wR=2714,CF="ouverture_droits_retraite",CG=102,wQ="mensualit\xc3\xa9_principale_in",hz=800,CE="997500",hy="100000.",wP="18261",fN=101,n2="calcul_nombre_parts.situation_familiale_calcul_apl",CD="participation_personnelle",CC="body",fM="Calcul des contributions sociales s'appliquant aux aides personnelles au logement",wO="Unexpected '%s' kind for the enumeration 'Collectivite.t'",rQ="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",gR=1e7,wN=3415,j_=254,CA=2333,CB="calcul_apl_logement_foyer.zone",qR=407,Cz="6.",wM="1003",dx="Article L841-2",Cy=" : flags Open_text and Open_binary are not compatible",d$="Article D832-15",eu="Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales",wL="43248",hx=4444,gQ=1992,eL="examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr",wK="\\\\",w="Code de la construction et de l'habitation",wJ="Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",Cx="Article 38",wH=2297,wI=188,Cu=463,Cv=160,Cw="0.04",wG="0.0226",qQ=270,wF="192500",Ct=3820,Cr=3346,Cs="230700",wE="217600",n1=926,Cq="0.0463",qP="GardeAlterneePartageAllocations",qO="\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0",n0="0.55",nZ=109,dh="droit_ouvert",H="Champs d'applications",wD=479,iP=952,bk="ContributionsSocialesAidesPersonnelleLogement",iO="Article D832-10",bl="Interface du programme",qN=-97,Cp=944,aO="examples/aides_logement/archives.catala_fr",iN=469,wC="218700",qL="Article D823-20",qM="ServicesSociauxAllocationVerseeAuxServicesSociaux",Co=2486,kA="d\xc3\xa9pense_nette_minimale_d832_27",iM=195,et="1.",fL=1015,gB=1094,wB="45200",de="d\xc3\xa9pense_nette_minimale",iL=954,qK="Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es",wA=2226,j9="Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base",rP="Article D823-17",Cn="Instruction minist\xc3\xa9rielle N\xc2\xb0DSS/SD2B/2019/65 du 25 mars 2019 relative \xc3\xa0 la revalorisation au 1er avril 2019 des prestations familiales servies en m\xc3\xa9tropole",iK=596,nY="AllocationLogement",wy="5186",wz="Unexpected '%s' kind for the enumeration 'SituationObligationScolaire.t'",dw=1065,fK=155,f4=518,Cm="calcul_apl_logement_foyer.situation_familiale_calcul_apl",ww="142303",mn=316,wx="37778",d_=296,nX=565,nW=215,d9="Article D832-11",wv="LaReunion",kz=947,Cl="AgrandirOuRendreHabitableD331_63",aC="Montant du salaire minimum de croissance",mm=557,iJ=3283,ee=621,qJ="0.3",wu="true",bd="Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution",f3=370,ad="Titre II : Dispositions communes aux aides personnelles au logement",Cj=214,Ck="25116",j8="Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s.",qI="1500",wt=" is too large for shifting.",Ci="237200",nV=502,mk="242800",ml="Map.bal",rO="5208",Ch="0.08",hw=4841,ws="@[",ag="Titre III : Aide personnalis\xc3\xa9e au logement",Cg="Apr\xc3\xa8s",af="Code de la s\xc3\xa9curit\xc3\xa9 sociale",Cf="42892",mj=688,mi="ml_z_overflow",wr="1.8",Ce=807,ky="contributions_sociales.date_courante",kx=850,wq=307,mh=309,wp="calcul_apl_logement_foyer.redevance",Cd=-752863768,Cb=904,rM="202500",rN="Article D832-17",Cc=360,B_="Article 10",iI=1144,B$="allocationsFamiliales",Ca="Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2021/65 du 19 mars 2021 relative \xc3\xa0 la revalorisation au 1er avril 2021 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",wo="582700",nU=167,B9="4986",nT=274,aD="CalculAidePersonnalis\xc3\xa9eLogementLocatif",B8=433,nS=531,eK="abattement_d\xc3\xa9pense_nette_minimale",B6=3769,B7="Sys_blocked_io",wn=450,qH="b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement",gA="Chapitre 2 : Champ d'application",wm="0.0588",nR="Chapitre 2 : Champ d'application.",rL=362,wl=3757,iH=3939,iG=3281,nQ=457,B5="49",wk=1882,Z="\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement",bz="Article D842-15",B4=1010,iF="nombre_personnes_\xc3\xa0_charge_in",mg=246,fJ=1016,wi="37900",wj="%u",mf="Article L831-1",me="Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession",fI="calcul_\xc3\xa9quivalence_loyer_minimale",fH=298,wh=4273,B2="Article 40",B3=4034,b7="\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement",wg="19402",md=925,X="2",cQ=127,nP=711,we="Article 30",wf="@{",cf="Montant de la base mensuelle des allocations familiales",wd=" : flags Open_rdonly and Open_wronly are not compatible",wc="0.232",rK="OuvertureDroitsRetraite",wa="Zone2",wb="43505",nO="D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance",cH="-",B1=336,hv=603,B0="type_aide_in",v_="n_nombre_parts_d832_11",v$=" : file already exists",BZ=2364,j7="EffectiveEtPermanente",v9="1127",BX="calculAllocationLogementAccessionPropriete",BY="41481",fd="0.0045",fG="Date d'ouverture des droits \xc3\xa0 la retraite",mc=866,v8=1099,BW="retrieveEvents",v7="20165",hu=4837,iE="situation_familiale_calcul_apl_in",BV="2699",nN=4802,ma=625,mb=644,v5="Infini",v6="prestationsFamiliales",fF="Article 43",v4="\\b",v3=3730,ak="Titre IV : Allocations de Logement",l$="Martinique",nM=404,cr="Article D832-25",v2=487,BU=2322,v1=12520,BT="Collectivit\xc3\xa9",cW=401,BS="42228",ck="Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement",aN="Chapitre 1er : Allocations familiales",ht=2016,v0="AllocationEducationEnfantHandicape",BR="832200",vZ=1176,vY=1408,BQ="AllocationRentr\xc3\xa9eScolaire",iD=1000,V="CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9",aa="",rJ=737456202,iC="Sous-section 2 : Principes de neutralisation et d'abattement",BP="^",l_="Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement",j6=746,hs=0x3f,BO="' kind for the enumeration 'Collectivite.t'",vX=4281,rI="184000",vW="251500",j5=334,dS="Article 16",BN="Article D842-9",vV="Match_failure",vU=3130,hr=716,BM=3189,at=2021,vT=4735,vS=2345,hq=4446,iB="0.085",kv="d\xc3\xa9pense_nette_minimale_d832_10",kw="CalculNombrePartLogementFoyer",vQ=1241,vR=1436,BL="35130",j4="montant_initial_majoration",fk="+",BK=2551,gP=1061,BI=4206,BJ="1057",BH=179,hp=425,BG=4963,vP=3916,BF="%li",cP=998,ho="Smic",BD="colocation_in",BE="234600",vO=2313,vN="logement_meubl\xc3\xa9_d842_2_in",vM=4659,BC="39051",vL="20900",nL="calcul_apl_logement_foyer",rH="208600",vK=267,hn=431,BB="impayeDepenseLogement",iA=962,BA="calcul_nombre_parts.condition_2_du_832_25",vJ=0xe0,l9=1126,By=2650,Bz="20100",l8=882,Bx="D331_32",eJ="contributions_sociales",iz=580,Bw="\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers_in",vI=225,hm=250,vH="calcul_apl_logement_foyer.ressources_m\xc3\xa9nage_arrondies",N="Secteur logement-foyer",qG="Article L831-2",J="Allocations familiales",iy=893,nK=624,qF="0.027",vF="\xc3\xa9ligibilit\xc3\xa9_commune.m\xc3\xa9nage",vG="allocations_familiales",rG=1255,ix="Article 8",bP="examples/allocations_familiales/securite_sociale_L.catala_fr",l7=594,vE=245,bC=2019,nJ="Article R521-1",rF="jsError",eI=0x8000,l6=1055,bj="Chapitre Ier : Champ d'application",Bv="Section 1 : Conditions relatives au b\xc3\xa9n\xc3\xa9ficiaire",iw=964,Bu="43074",l5=946,vD="6.55957",vC="eligibiliteAidePersonnaliseeLogement",l4="Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources",l3=371,fE=320,iv=129,hl=958,vB="\n",ku="abattement_d\xc3\xa9pense_nette_minimale_d832_27",hk=497,am="Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement",qE="3.7",Bt=483,f2=414,l2=310,bO="Tous secteurs",vz="Article 34",b$="calcul_plafond_mensualit\xc3\xa9_d842_6_base",vA=1033,iu=2005,Bs=-48,qD="9",it=4839,vy=4141,Br="1025",cj="camlinternalFormat.ml",eH=549,nI=312,Bq=686,nG=943,nH=148,Bp="132000",qC="0.0185",vx="924600",nF=713,c2=2017,vw=1124,Bo="date_naissance",cV=317,l1="Article R822-2",aj="CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9",ed="Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s",hj=1141,rE="obligation_scolaire",vv="EEXIST",Bn="r\xc3\xa9duction_loyer_solidarit\xc3\xa9_in",f1=293,eG=550,es=121,Bm="prestations_familiales.prestation_courante",nE=1999,Bi=824,Bj="\xc3\xa9ligibilit\xc3\xa9_commune.demandeur",Bk=1406,Bl="\\n",l0=1858,dv=120,lZ="16",Bg="23138",Bh="Article D832-14",rD=512,vu=0x7ff0,vt="eligibiliteAllocationLogement",lY=928,nD=861,qB="montant_forfaitaire_charges",er="traitement_aide_finale_d\xc3\xa9pense_nette_minimale",rC=177,vr=228,vs="\xc3\xa9quivalence_loyer_minimale",vq="0x",Bf="Ascendant",lX="0.005",nC=3865,t="Calcul du montant de l'aide personnalis\xc3\xa9e au logement",lV=499,lW="D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance",nB=645,Be="40888",vo="bas",vp="0.208",vn="date_conventionnement_in",vm="210900",Bd="219900",aw="traitement_aide_finale",vk="r\xc3\xa9gime_outre_mer_l751_1",be=105,vl="Invalid function call ([ ",vj="Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",eF=551,lU="Article R512-2",hi=1135,Bc="31664",bo="direct",vi="44693",f0=454,Bb=1520,hh="0.45",qA="2710",Ba=1914,gz=429,ac="input",vh="39839",A$="\xc3\xa9ligibilit\xc3\xa9_logement",qz="0.2",fD=157,dR=364,lT="D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance",vg=390,nA=498,A_=4586,fc="examples/aides_logement/autres_sources.catala_fr",A9=283,vf="calculAllocationLogement",qy="mkdir",gO=379,gy="Article L822-3",a4="Chapitre III : Modalit\xc3\xa9s de liquidation et de versement",dQ=1013,nz=592,ny=": No such file or directory",ve="\xc3\xa9quivalence_loyer",hg=378,vd=655,fZ="Chapitre VII : Calcul des allocations de logement en secteur logement-foyer",gN="Titre 5 : D\xc3\xa9partements d'outre-mer",lS=948,vc="766",va=2355,vb=4648,cO="CalculetteAidesAuLogementGardeAltern\xc3\xa9e",u$=151,A8="calculetteAidesAuLogement",rB="Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",fb=1137,A7="Descendant",cb="\xc3\x89ligibilit\xc3\xa9AllocationLogement",ba="D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte",A6=3832,nx=626,A5="\xc3\xa9ligibilit\xc3\xa9_apl",u_="taux",qx="Demandeur",bh="CalculAllocationLogementLocatif",A4="BeginCall([ ",u9=332,rA=822,j3="caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1",A3="GardeAltern\xc3\xa9ePartageAllocations",fC=932,A2="coefficient_multiplicateur_d832_25",is=3937,a1="\xc3\x89pilogue",A1=1931,ao="CalculAllocationLogementFoyer",A0="943900",AZ="bmaf",AY="calculEquivalenceLoyerMinimale",lR=2006,hf="0.95",AW="contributionsSocialesAidesPersonnelleLogement",AX="ressourcesAidesPersonnelleLogement",lQ=863,cC=363,u7="Pervasives.do_at_exit",u8="utf8",AV="222300",qw="ComplementFamilial",AU="225000",u6=3736,u5="date_signature_pr\xc3\xaat_in",u4="\xc3\xa9ligibilit\xc3\xa9_allocation_logement",rz="0.0283",aR=854,ry="0.16",lP=643,aQ="Article 18",u3=3105,ir=418,AT="36815",eE=134,dB="Section 2 : Conditions relatives aux ressources",AS=2109,aK="\xc3\x89ligibilit\xc3\xa9 aux allocations de logement";function +byC(d,b,e,c,f){if(c<=b)for(var a=1;a<=f;a++)e[c+a]=d[b+a];else for(var a=f;a>=1;a--)e[c+a]=d[b+a];return 0}function -byE(b,d,c,e){for(var +byD(b,d,c,e){for(var a=0;a=b.l||b.t==2&&c>=b.c.length)){b.c=d.t==4?pk(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else -if(b.t==2&&f==b.c.length){b.c+=d.t==4?pk(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else{if(b.t!=4)o$(b);var +gh(d,e,b,f,c){if(c==0)return 0;if(f==0&&(c>=b.l||b.t==2&&c>=b.c.length)){b.c=d.t==4?pl(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else +if(b.t==2&&f==b.c.length){b.c+=d.t==4?pl(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else{if(b.t!=4)pa(b);var g=d.c,h=b.c;if(d.t==4)if(f<=e)for(var a=0;a=0;a--)h[f+a]=g[e+a];else{var i=Math.min(c,g.length-e);for(var a=0;a>=1;if(b==0)return d;a+=a;c++;if(c==9)a.slice(0,1)}}function -gT(a){if(a.t==2)a.c+=jz(a.l-a.c.length,"\0");else -a.c=pk(a.c,0,a.c.length);a.t=0}function -GQ(a){if(a.length<24){for(var +fr(a){return a}function +ej(a,b,c,d,e){gh(fr(a),b,c,d,e);return 0}function +bzm(b,a){throw[0,b,a]}function +jz(b,a){if(b==0)return aa;if(a.repeat)return a.repeat(b);var +d=aa,c=0;for(;;){if(b&1)d+=a;b>>=1;if(b==0)return d;a+=a;c++;if(c==9)a.slice(0,1)}}function +gW(a){if(a.t==2)a.c+=jz(a.l-a.c.length,"\0");else +a.c=pl(a.c,0,a.c.length);a.t=0}function +GP(a){if(a.length<24){for(var b=0;bcQ)return false;return true}else return!/[^\x00-\x7f]/.test(a)}function -sK(e){for(var -j=$,c=$,g,f,h,a,b=0,i=e.length;brB){c.substr(0,1);j+=c;c=$;j+=e.slice(b,d)}else -c+=e.slice(b,d);if(d==i)break;b=d}a=1;if(++b=0xd7ff&&a<0xe000)a=2}else{a=3;if(++b0x10ffff)a=3}}}}}if(a<4){b-=a;c+="\ufffd"}else -if(a>ew)c+=String.fromCharCode(0xd7c0+(a>>10),yz+(a&0x3FF));else -c+=String.fromCharCode(a);if(c.length>gI){c.substr(0,1);j+=c;c=$}}return j+c}function +sP(e){for(var +j=aa,c=aa,g,f,h,a,b=0,i=e.length;brD){c.substr(0,1);j+=c;c=aa;j+=e.slice(b,d)}else +c+=e.slice(b,d);if(d==i)break;b=d}a=1;if(++b=0xd7ff&&a<0xe000)a=2}else{a=3;if(++b0x10ffff)a=3}}}}}if(a<4){b-=a;c+="\ufffd"}else +if(a>ew)c+=String.fromCharCode(0xd7c0+(a>>10),ys+(a&0x3FF));else +c+=String.fromCharCode(a);if(c.length>gK){c.substr(0,1);j+=c;c=aa}}return j+c}function eZ(c,a,b){this.t=c;this.c=a;this.l=b}eZ.prototype.toString=function(){switch(this.t){case -9:return this.c;default:gT(this);case -0:if(GQ(this.c)){this.t=9;return this.c}this.t=8;case +9:return this.c;default:gW(this);case +0:if(GP(this.c)){this.t=9;return this.c}this.t=8;case 8:return this.c}};eZ.prototype.toUtf16=function(){var -a=this.toString();if(this.t==9)return a;return sK(a)};eZ.prototype.slice=function(){var +a=this.toString();if(this.t==9)return a;return sP(a)};eZ.prototype.slice=function(){var a=this.t==4?this.c.slice():this.c;return new eZ(this.t,a,this.l)};function -Gr(a){return new +Gq(a){return new eZ(0,a,a.length)}function -a(a){return Gr(a)}function -sG(c,b){bzn(c,a(b))}var +a(a){return Gq(a)}function +sL(c,b){bzm(c,a(b))}var bL=[0];function -bR(a){sG(bL.Invalid_argument,a)}function -Gp(){bR(rX)}function -bY(a,c,b){b&=dx;if(a.t!=4){if(c==a.c.length){a.c+=String.fromCharCode(b);if(c+1==a.l)a.t=0;return 0}o$(a)}a.c[c]=b;return 0}function -d3(b,a,c){if(a>>>0>=b.l)Gp();return bY(b,a,c)}function -k0(a,b){switch(a.t&6){default:if(b>=a.c.length)return 0;case +bR(a){sL(bL.Invalid_argument,a)}function +Go(){bR(r0)}function +bY(a,c,b){b&=dy;if(a.t!=4){if(c==a.c.length){a.c+=String.fromCharCode(b);if(c+1==a.l)a.t=0;return 0}pa(a)}a.c[c]=b;return 0}function +d3(b,a,c){if(a>>>0>=b.l)Go();return bY(b,a,c)}function +kY(a,b){switch(a.t&6){default:if(b>=a.c.length)return 0;case 0:return a.c.charCodeAt(b);case 4:return a.c[b]}}function -dF(c,a){if(c.fun)return dF(c.fun,a);if(typeof +dG(c,a){if(c.fun)return dG(c.fun,a);if(typeof c!=="function")return c;var b=c.length|0;if(b===0)return c.apply(null,a);var e=a.length|0,d=b-e|0;if(d==0)return c.apply(null,a);else -if(d<0)return dF(c.apply(null,a.slice(0,b)),a.slice(b));else +if(d<0)return dG(c.apply(null,a.slice(0,b)),a.slice(b));else return function(){var e=arguments.length==0?1:arguments.length,d=new Array(a.length+e);for(var b=0;b>>0>=a.length-1)kZ();return a}function -o9(a){if(isFinite(a)){if(Math.abs(a)>=2.2250738585072014e-308)return 0;if(a!=0)return 1;return 2}return isNaN(a)?4:3}function -byM(){return[0]}function +b=0;b>>0>=a.length-1)kX();return a}function +o_(a){if(isFinite(a)){if(Math.abs(a)>=2.2250738585072014e-308)return 0;if(a!=0)return 1;return 2}return isNaN(a)?4:3}function +byL(){return[0]}function bZ(a){if(a<0)bR("Bytes.create");return new -eZ(a?2:9,$,a)}function -k8(a){throw a}function -jy(){k8(bL.Division_by_zero)}function -Gu(b,a){if(a==0)jy();return b/a|0}function -d4(a){a.t&6&&gT(a);return a.c}var -bzC=Math.log2&&Math.log2(1.1235582092889474E+307)==1020;function -GP(a){if(bzC)return Math.floor(Math.log2(a));var +eZ(a?2:9,aa,a)}function +k6(a){throw a}function +jy(){k6(bL.Division_by_zero)}function +Gt(b,a){if(a==0)jy();return b/a|0}function +d4(a){a.t&6&&gW(a);return a.c}var +bzB=Math.log2&&Math.log2(1.1235582092889474E+307)==1020;function +GO(a){if(bzB)return Math.floor(Math.log2(a));var b=0;if(a==0)return-Infinity;if(a>=1)while(a>=2){a/=2;b++}else while(a<1){a*=2;b--}return b}function -sz(c){var +sE(c){var a=new(aL.Float32Array)(1);a[0]=c;var b=new(aL.Int32Array)(a.buffer);return b[0]|0}var -GB=Math.pow(2,-24);function -aT(b,c,a){this.lo=b&fj;this.mi=c&fj;this.hi=a&ew}aT.prototype.caml_custom="_j";aT.prototype.copy=function(){return new +GA=Math.pow(2,-24);function +aT(b,c,a){this.lo=b&fi;this.mi=c&fi;this.hi=a&ew}aT.prototype.caml_custom="_j";aT.prototype.copy=function(){return new aT(this.lo,this.mi,this.hi)};aT.prototype.ucompare=function(a){if(this.hi>a.hi)return 1;if(this.hia.mi)return 1;if(this.mia.lo)return 1;if(this.loc)return 1;if(ba.mi)return 1;if(this.mia.lo)return 1;if(this.lo>24),c=-this.hi+(b>>24);return new @@ -101,7 +101,7 @@ b=this.lo+a.lo,c=this.mi+a.mi+(b>>24),d=this.hi+a.hi+(c>>24);return new aT(b,c,d)};aT.prototype.sub=function(a){var b=this.lo-a.lo,c=this.mi-a.mi+(b>>24),d=this.hi-a.hi+(c>>24);return new aT(b,c,d)};aT.prototype.mul=function(a){var -b=this.lo*a.lo,c=(b*GB|0)+this.mi*a.lo+this.lo*a.mi,d=(c*GB|0)+this.hi*a.lo+this.mi*a.mi+this.lo*a.hi;return new +b=this.lo*a.lo,c=(b*GA|0)+this.mi*a.lo+this.lo*a.mi,d=(c*GA|0)+this.hi*a.lo+this.mi*a.mi+this.lo*a.hi;return new aT(b,c,d)};aT.prototype.isZero=function(){return(this.lo|this.mi|this.hi)==0};aT.prototype.isNeg=function(){return this.hi<<16<0};aT.prototype.and=function(a){return new aT(this.lo&a.lo,this.mi&a.mi,this.hi&a.hi)};aT.prototype.or=function(a){return new aT(this.lo|a.lo,this.mi|a.mi,this.hi|a.hi)};aT.prototype.xor=function(a){return new @@ -116,7 +116,7 @@ c=this.hi<<16>>16;if(a<24)return new aT(this.lo>>a|this.mi<<24-a,this.mi>>a|c<<24-a,this.hi<<16>>a>>>16);var b=this.hi<<16>>31;if(a<48)return new aT(this.mi>>a-24|this.hi<<48-a,this.hi<<16>>a-24>>16,b&ew);return new -aT(this.hi<<16>>a-32,b,b)};aT.prototype.lsl1=function(){this.hi=this.hi<<1|this.mi>>23;this.mi=(this.mi<<1|this.lo>>23)&fj;this.lo=this.lo<<1&fj};aT.prototype.lsr1=function(){this.lo=(this.lo>>>1|this.mi<<23)&fj;this.mi=(this.mi>>>1|this.hi<<23)&fj;this.hi=this.hi>>>1};aT.prototype.udivmod=function(e){var +aT(this.hi<<16>>a-32,b,b)};aT.prototype.lsl1=function(){this.hi=this.hi<<1|this.mi>>23;this.mi=(this.mi<<1|this.lo>>23)&fi;this.lo=this.lo<<1&fi};aT.prototype.lsr1=function(){this.lo=(this.lo>>>1|this.mi<<23)&fi;this.mi=(this.mi>>>1|this.hi<<23)&fi;this.hi=this.hi>>>1};aT.prototype.udivmod=function(e){var c=0,b=this.copy(),a=e.copy(),d=new aT(0,0,0);while(b.ucompare(a)>0){c++;a.lsl1()}while(c>=0){c--;d.lsl1();if(b.ucompare(a)>=0){d.lo++;b=b.sub(a)}a.lsr1()}return{quotient:d,modulus:b}};aT.prototype.div=function(a){var b=this;if(a.isZero())jy();var @@ -124,17 +124,17 @@ d=b.hi^a.hi;if(b.hi&eI)b=b.neg();if(a.hi&eI)a=a.neg();var c=b.udivmod(a).quotient;if(d&eI)c=c.neg();return c};aT.prototype.mod=function(b){var a=this;if(b.isZero())jy();var d=a.hi;if(a.hi&eI)a=a.neg();if(b.hi&eI)b=b.neg();var -c=a.udivmod(b).modulus;if(d&eI)c=c.neg();return c};aT.prototype.toInt=function(){return this.lo|this.mi<<24};aT.prototype.toFloat=function(){return(this.hi<<16)*Math.pow(2,32)+this.mi*Math.pow(2,24)+this.lo};aT.prototype.toArray=function(){return[this.hi>>8,this.hi&dx,this.mi>>16,this.mi>>8&dx,this.mi&dx,this.lo>>16,this.lo>>8&dx,this.lo&dx]};aT.prototype.lo32=function(){return this.lo|(this.mi&dx)<<24};aT.prototype.hi32=function(){return this.mi>>>8&ew|this.hi<<16};function -gh(b,c,a){return new +c=a.udivmod(b).modulus;if(d&eI)c=c.neg();return c};aT.prototype.toInt=function(){return this.lo|this.mi<<24};aT.prototype.toFloat=function(){return(this.hi<<16)*Math.pow(2,32)+this.mi*Math.pow(2,24)+this.lo};aT.prototype.toArray=function(){return[this.hi>>8,this.hi&dy,this.mi>>16,this.mi>>8&dy,this.mi&dy,this.lo>>16,this.lo>>8&dy,this.lo&dy]};aT.prototype.lo32=function(){return this.lo|(this.mi&dy)<<24};aT.prototype.hi32=function(){return this.mi>>>8&ew|this.hi<<16};function +gi(b,c,a){return new aT(b,c,a)}function -pc(a){if(!isFinite(a)){if(isNaN(a))return gh(1,0,vq);return a>0?gh(0,0,vq):gh(0,0,0xfff0)}var +pd(a){if(!isFinite(a)){if(isNaN(a))return gi(1,0,vu);return a>0?gi(0,0,vu):gi(0,0,0xfff0)}var f=a==0&&1/a==-Infinity?eI:a>=0?0:eI;if(f)a=-a;var -b=GP(a)+ea;if(b<=0){b=0;a/=Math.pow(2,-zJ)}else{a/=Math.pow(2,b-Ga);if(a<16){a*=2;b-=1}if(b==0)a/=2}var +b=GO(a)+ea;if(b<=0){b=0;a/=Math.pow(2,-zC)}else{a/=Math.pow(2,b-F$);if(a<16){a*=2;b-=1}if(b==0)a/=2}var d=Math.pow(2,24),c=a|0;a=(a-c)*d;var e=a|0;a=(a-e)*d;var -g=a|0;c=c&rR|f|b<<4;return gh(g,e,c)}function -k3(a){return a.toArray()}function -Go(c,b,g){c.write(32,b.dims.length);c.write(32,b.kind|b.layout<<8);if(b.caml_custom==og)for(var +g=a|0;c=c&rU|f|b<<4;return gi(g,e,c)}function +k1(a){return a.toArray()}function +Gn(c,b,g){c.write(32,b.dims.length);c.write(32,b.kind|b.layout<<8);if(b.caml_custom==of)for(var a=0;a>4;if(c==2047)return(f|g|b&rR)==0?b&eI?-Infinity:Infinity:NaN;var -e=Math.pow(2,-24),a=(f*e+g)*e+(b&rR);if(c>0){a+=16;a*=Math.pow(2,c-Ga)}else -a*=Math.pow(2,-zJ);if(b&eI)a=-a;return a}function -st(b){var +f=d.lo,g=d.mi,b=d.hi,c=(b&0x7fff)>>4;if(c==2047)return(f|g|b&rU)==0?b&eI?-Infinity:Infinity:NaN;var +e=Math.pow(2,-24),a=(f*e+g)*e+(b&rU);if(c>0){a+=16;a*=Math.pow(2,c-F$)}else +a*=Math.pow(2,-zC);if(b&eI)a=-a;return a}function +sy(b){var d=b.length,c=1;for(var a=0;a>>24&dx|(a&ew)<<8,a>>>16&ew)}function -sB(a){return a.hi32()}function -sC(a){return a.lo32()}var -byH=og;function -gf(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}gf.prototype.caml_custom=byH;gf.prototype.offset=function(b){var +Gz(b,a){return new +aT(b&fi,b>>>24&dy|(a&ew)<<8,a>>>16&ew)}function +sG(a){return a.hi32()}function +sH(a){return a.lo32()}var +byG=of;function +gg(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}gg.prototype.caml_custom=byG;gg.prototype.offset=function(b){var c=0;if(typeof b==="number")b=[b];if(!(b instanceof Array))bR("bigarray.js: invalid offset");if(this.dims.length!=b.length)bR("Bigarray.get/set: bad number of dimensions");if(this.layout==0)for(var -a=0;a=this.dims[a])kZ();c=c*this.dims[a]+b[a]}else +a=0;a=this.dims[a])kX();c=c*this.dims[a]+b[a]}else for(var -a=this.dims.length-1;a>=0;a--){if(b[a]<1||b[a]>this.dims[a])kZ();c=c*this.dims[a]+(b[a]-1)}return c};gf.prototype.get=function(a){switch(this.kind){case +a=this.dims.length-1;a>=0;a--){if(b[a]<1||b[a]>this.dims[a])kX();c=c*this.dims[a]+(b[a]-1)}return c};gg.prototype.get=function(a){switch(this.kind){case 7:var -d=this.data[a*2+0],b=this.data[a*2+1];return GA(d,b);case +d=this.data[a*2+0],b=this.data[a*2+1];return Gz(d,b);case 10:case 11:var -e=this.data[a*2+0],c=this.data[a*2+1];return[j_,e,c];default:return this.data[a]}};gf.prototype.set=function(a,b){switch(this.kind){case -7:this.data[a*2+0]=sC(b);this.data[a*2+1]=sB(b);break;case +e=this.data[a*2+0],c=this.data[a*2+1];return[j_,e,c];default:return this.data[a]}};gg.prototype.set=function(a,b){switch(this.kind){case +7:this.data[a*2+0]=sH(b);this.data[a*2+1]=sG(b);break;case 10:case -11:this.data[a*2+0]=b[1];this.data[a*2+1]=b[2];break;default:this.data[a]=b;break}return 0};gf.prototype.fill=function(b){switch(this.kind){case +11:this.data[a*2+0]=b[1];this.data[a*2+1]=b[2];break;default:this.data[a]=b;break}return 0};gg.prototype.fill=function(b){switch(this.kind){case 7:var -c=sC(b),e=sB(b);if(c==e)this.data.fill(c);else +c=sH(b),e=sG(b);if(c==e)this.data.fill(c);else for(var a=0;ab.data[a])return 1}break}return 0};function jv(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}jv.prototype=new -gf();jv.prototype.offset=function(a){if(typeof +gg();jv.prototype.offset=function(a){if(typeof a!=="number")if(a instanceof Array&&a.length==1)a=a[0];else -bR("Ml_Bigarray_c_1_1.offset");if(a<0||a>=this.dims[0])kZ();return a};jv.prototype.get=function(a){return this.data[a]};jv.prototype.set=function(a,b){this.data[a]=b;return 0};jv.prototype.fill=function(a){this.data.fill(a);return 0};function -Gk(c,d,a,b){var -e=Gm(c);if(st(a)*e!=b.length)bR("length doesn't match dims");if(d==0&&a.length==1&&e==1)return new +bR("Ml_Bigarray_c_1_1.offset");if(a<0||a>=this.dims[0])kX();return a};jv.prototype.get=function(a){return this.data[a]};jv.prototype.set=function(a,b){this.data[a]=b;return 0};jv.prototype.fill=function(a){this.data.fill(a);return 0};function +Gj(c,d,a,b){var +e=Gl(c);if(sy(a)*e!=b.length)bR("length doesn't match dims");if(d==0&&a.length==1&&e==1)return new jv(c,d,a,b);return new -gf(c,d,a,b)}function -dr(b){if(!bL.Failure)bL.Failure=[bm,a(q3),-3];sG(bL.Failure,b)}function -Gl(b,v,r){var +gg(c,d,a,b)}function +dr(b){if(!bL.Failure)bL.Failure=[bm,a(q6),-3];sL(bL.Failure,b)}function +Gk(b,v,r){var i=b.read32s();if(i<0||i>16)dr("input_value: wrong number of bigarray dimensions");var -p=b.read32s(),j=p&dx,o=p>>8&1,h=[];if(r==og)for(var +p=b.read32s(),j=p&dy,o=p>>8&1,h=[];if(r==of)for(var a=0;a>>32-15;a=gk(a,0x1b873593);b^=a;b=b<<13|b>>>32-13;return(b+(b<<2)|0)+(0xe6546b64|0)|0}function -byW(a,b){a=cv(a,sC(b));a=cv(a,sB(b));return a}function -sx(a,b){return byW(a,pc(b))}function -Gn(c){var -b=st(c.dims),d=0;switch(c.kind){case +l=jx(k0(e));g.set(a,[j_,m,l])}break}v[0]=(4+i)*4;return Gj(j,o,h,f)}function +Gi(a,b,c){return a.compare(b,c)}function +gl(a,b){return Math.imul(a,b)}function +cv(b,a){a=gl(a,0xcc9e2d51|0);a=a<<15|a>>>32-15;a=gl(a,0x1b873593);b^=a;b=b<<13|b>>>32-13;return(b+(b<<2)|0)+(0xe6546b64|0)|0}function +byV(a,b){a=cv(a,sH(b));a=cv(a,sG(b));return a}function +sC(a,b){return byV(a,pd(b))}function +Gm(c){var +b=sy(c.dims),d=0;switch(c.kind){case 2:case 3:case 12:if(b>eB)b=eB;var @@ -339,75 +339,75 @@ a=0;a64)b=64;for(var -a=0;a32)b=32;for(var -a=0;a0?b(c,f,e):b(f,c,e);if(e&&a!=a)return d;if(+a!=+a)return+a;if((a|0)!=0)return a|0}return d}function -k4(a){return a +k2(a){return a instanceof eZ}function -pf(a){return k4(a)}function -Gt(a){if(typeof +pg(a){return k2(a)}function +Gs(a){if(typeof a==="number")return iD;else -if(k4(a))return kb;else -if(pf(a))return 1252;else +if(k2(a))return kb;else +if(pg(a))return 1252;else if(a instanceof -Array&&a[0]===a[0]>>>0&&a[0]<=m2){var +Array&&a[0]===a[0]>>>0&&a[0]<=m0){var b=a[0]|0;return b==j_?0:b}else if(a instanceof -String)return vZ;else +String)return v1;else if(typeof -a=="string")return vZ;else +a=="string")return v1;else if(a instanceof Number)return iD;else -if(a&&a.caml_custom)return rE;else +if(a&&a.caml_custom)return rG;else if(a&&a.compare)return 1256;else if(typeof a=="function")return 1247;else if(typeof a=="symbol")return 1251;return 1001}function -gi(a,b){if(ab.c?1:0}function -sI(a,b){return Gq(a,b)}function -o_(a,b,d){var +gj(a,b){if(ab.c?1:0}function +sN(a,b){return Gp(a,b)}function +o$(a,b,d){var e=[];for(;;){if(!(d&&a===b)){var -f=Gt(a);if(f==hj){a=a[1];continue}var -g=Gt(b);if(g==hj){b=b[1];continue}if(f!==g){if(f==iD){if(g==rE)return Gs(a,b,-1,d);return-1}if(g==iD){if(f==rE)return Gs(b,a,1,d);return 1}return fb)return 1}break;ca 246:case 254:default:if(a.length!=b.length)return a.length1)e.push(a,b,1);break}}if(e.length==0)return 0;var h=e.pop();b=e.pop();a=e.pop();if(h+10)if(c==0&&(b>=a.l||a.t==2&&b>=a.c.length))if(d==0){a.c=$;a.t=2}else{a.c=jz(b,String.fromCharCode(d));a.t=b==a.l?0:2}else{if(a.t!=4)o$(a);for(b+=c;c0&&b===b)return b;a=a.replace(/_/g,$);b=+a;if(a.length>0&&b===b||/^[+-]?nan$/i.test(a))return b;var +f(a,b){return+(o$(a,b,false)==0)}function +byN(a,c,b,d){if(b>0)if(c==0&&(b>=a.l||a.t==2&&b>=a.c.length))if(d==0){a.c=aa;a.t=2}else{a.c=jz(b,String.fromCharCode(d));a.t=b==a.l?0:2}else{if(a.t!=4)pa(a);for(b+=c;c0&&b===b)return b;a=a.replace(/_/g,aa);b=+a;if(a.length>0&&b===b||/^[+-]?nan$/i.test(a))return b;var c=/^ *([+-]?)0x([0-9a-f]+)\.?([0-9a-f]*)(p([+-]?[0-9]+))?/i.exec(a);if(c){var -d=c[3].replace(/0+$/,$),f=parseInt(c[1]+c[2]+d,16),e=(c[5]|0)-4*d.length;b=f*Math.pow(2,e);return b}if(/^\+?inf(inity)?$/i.test(a))return Infinity;if(/^-inf(inity)?$/i.test(a))return-Infinity;dr("float_of_string")}function -sF(d){d=d4(d);var +d=c[3].replace(/0+$/,aa),f=parseInt(c[1]+c[2]+d,16),e=(c[5]|0)-4*d.length;b=f*Math.pow(2,e);return b}if(/^\+?inf(inity)?$/i.test(a))return Infinity;if(/^-inf(inity)?$/i.test(a))return-Infinity;dr("float_of_string")}function +sK(d){d=d4(d);var e=d.length;if(e>31)bR("format_int: format too long");var -a={justify:fl,signstyle:cH,filler:fn,alternate:false,base:0,signedconv:false,width:0,uppercase:false,sign:1,prec:-1,conv:"f"};for(var +a={justify:fk,signstyle:cH,filler:fm,alternate:false,base:0,signedconv:false,width:0,uppercase:false,sign:1,prec:-1,conv:"f"};for(var c=0;c=0&&b<=9){a.width=a.width*10+b;c++}c--;break;case".":a.prec=0;c++;while(b=d.charCodeAt(c)-48,b>=0&&b<=9){a.prec=a.prec*10+b;c++}c--;case"d":case"i":a.signedconv=true;case"u":a.base=10;break;case"x":a.base=16;break;case"X":a.base=16;a.uppercase=true;break;case"o":a.base=8;break;case"e":case"f":case"g":a.signedconv=true;a.conv=b;break;case"E":case"F":case"G":a.signedconv=true;a.uppercase=true;a.conv=b.toLowerCase();break}}return a}function -sv(b,f){if(b.uppercase)f=f.toUpperCase();var +sA(b,f){if(b.uppercase)f=f.toUpperCase();var e=f.length;if(b.signedconv&&(b.sign<0||b.signstyle!=cH))e++;if(b.alternate){if(b.base==8)e+=1;if(b.base==16)e+=2}var -c=$;if(b.justify==fl&&b.filler==fn)for(var -d=e;d20){c-=20;a/=Math.pow(10,c);a+=new +c=parseInt(a.toString().split(fk)[1]);if(c>20){c-=20;a/=Math.pow(10,c);a+=new Array(c+1).join(p);if(b>0)a=a+ev+new Array(b+1).join(p);return a}else return a.toFixed(b)}}var -a,e=sF(i),d=e.prec<0?6:e.prec;if(c<0||c==0&&1/c==-Infinity){e.sign=-1;c=-c}if(isNaN(c)){a=q5;e.filler=fn}else -if(!isFinite(c)){a=F5;e.filler=fn}else +a,e=sK(i),d=e.prec<0?6:e.prec;if(c<0||c==0&&1/c==-Infinity){e.sign=-1;c=-c}if(isNaN(c)){a=q8;e.filler=fm}else +if(!isFinite(c)){a=F4;e.filler=fm}else switch(e.conv){case"e":var -a=c.toExponential(d),b=a.length;if(a.charAt(b-3)==o0)a=a.slice(0,b-1)+p+a.slice(b-1);break;case"f":a=j(c,d);break;case"g":d=d?d:1;a=c.toExponential(d-1);var -h=a.indexOf(o0),g=+a.slice(h+1);if(g<-4||c>=1e21||c.toFixed(0).length>d){var -b=h-1;while(a.charAt(b)==p)b--;if(a.charAt(b)==ev)b--;a=a.slice(0,b+1)+a.slice(h);b=a.length;if(a.charAt(b-3)==o0)a=a.slice(0,b-1)+p+a.slice(b-1);break}else{var +a=c.toExponential(d),b=a.length;if(a.charAt(b-3)==o1)a=a.slice(0,b-1)+p+a.slice(b-1);break;case"f":a=j(c,d);break;case"g":d=d?d:1;a=c.toExponential(d-1);var +h=a.indexOf(o1),g=+a.slice(h+1);if(g<-4||c>=1e21||c.toFixed(0).length>d){var +b=h-1;while(a.charAt(b)==p)b--;if(a.charAt(b)==ev)b--;a=a.slice(0,b+1)+a.slice(h);b=a.length;if(a.charAt(b-3)==o1)a=a.slice(0,b-1)+p+a.slice(b-1);break}else{var f=d;if(g<0){f-=g+1;a=c.toFixed(f)}else while(a=c.toFixed(f),a.length>d+1)f--;if(f){var -b=a.length-1;while(a.charAt(b)==p)b--;if(a.charAt(b)==ev)b--;a=a.slice(0,b+1)}}break}return sv(e,a)}function -pa(e,c){if(d4(e)==sj)return a($+c);var -b=sF(e);if(c<0)if(b.signedconv){b.sign=-1;c=-c}else +b=a.length-1;while(a.charAt(b)==p)b--;if(a.charAt(b)==ev)b--;a=a.slice(0,b+1)}}break}return sA(e,a)}function +pb(e,c){if(d4(e)==sm)return a(aa+c);var +b=sK(e);if(c<0)if(b.signedconv){b.sign=-1;c=-c}else c>>>=0;var -d=c.toString(b.base);if(b.prec>=0){b.filler=fn;var -f=b.prec-d.length;if(f>0)d=jz(f,p)+d}return sv(b,d)}var -GI=0;function -cZ(){return GI++}function -byQ(a){if(a==0||!isFinite(a))return[0,a,0];var +d=c.toString(b.base);if(b.prec>=0){b.filler=fm;var +f=b.prec-d.length;if(f>0)d=jz(f,p)+d}return sA(b,d)}var +GH=0;function +cZ(){return GH++}function +byP(a){if(a==0||!isFinite(a))return[0,a,0];var c=a<0;if(c)a=-a;var -b=Math.max(-ea,GP(a)+1);a*=Math.pow(2,-b);while(a=1){a*=zZ;b++}if(c)a=-a;return[0,a,b]}function +b=Math.max(-ea,GO(a)+1);a*=Math.pow(2,-b);while(a=1){a*=zS;b++}if(c)a=-a;return[0,a,b]}function ek(a){return a.toUtf16()}function -k9(){return typeof +k7(){return typeof aL.process!=="undefined"&&typeof aL.process.versions!=="undefined"&&typeof aL.process.versions.node!=="undefined"}function -bzD(){function -a(a){if(a.charAt(0)===eA)return[$,a.substring(1)];return}function +bzC(){function +a(a){if(a.charAt(0)===eA)return[aa,a.substring(1)];return}function b(c){var -g=/^([a-zA-Z]:|[\\/]{2}[^\\/]+[\\/]+[^\\/]+)?([\\/])?([\s\S]*?)$/,a=g.exec(c),b=a[1]||$,e=Boolean(b&&b.charAt(1)!==":");if(Boolean(a[2]||e)){var -d=a[1]||$,f=a[2]||$;return[d,c.substring(d.length+f.length)]}return}return k9()&&aL.process&&aL.process.platform?aL.process.platform==="win32"?b:a:a}var -sO=bzD();function -GN(a){return a.slice(-1)!==eA?a+eA:a}if(k9()&&aL.process&&aL.process.cwd)var -k1=aL.process.cwd().replace(/\\/g,eA);else +g=/^([a-zA-Z]:|[\\/]{2}[^\\/]+[\\/]+[^\\/]+)?([\\/])?([\s\S]*?)$/,a=g.exec(c),b=a[1]||aa,e=Boolean(b&&b.charAt(1)!==":");if(Boolean(a[2]||e)){var +d=a[1]||aa,f=a[2]||aa;return[d,c.substring(d.length+f.length)]}return}return k7()&&aL.process&&aL.process.platform?aL.process.platform==="win32"?b:a:a}var +sT=bzC();function +GM(a){return a.slice(-1)!==eA?a+eA:a}if(k7()&&aL.process&&aL.process.cwd)var +kZ=aL.process.cwd().replace(/\\/g,eA);else var -k1="/static";k1=GN(k1);function -bza(a){a=ek(a);if(!sO(a))a=k1+a;var -e=sO(a),d=e[1].split(eA),b=[];for(var +kZ="/static";kZ=GM(kZ);function +by$(a){a=ek(a);if(!sT(a))a=kZ+a;var +e=sT(a),d=e[1].split(eA),b=[];for(var c=0;c1)b.pop();break;case".":break;default:b.push(d[c]);break}b.unshift(e[0]);b.orig=a;return b}function -bzu(e){for(var -f=$,b=f,a,h,c=0,g=e.length;crB){b.substr(0,1);f+=b;b=$;f+=e.slice(c,d)}else -b+=e.slice(c,d);if(d==g)break;c=d}if(a>6);b+=String.fromCharCode(dN|a&hp)}else -if(a<0xd800||a>=Es)b+=String.fromCharCode(vH|a>>12,dN|a>>6&hp,dN|a&hp);else -if(a>=0xdbff||c+1==g||(h=e.charCodeAt(c+1))Es)b+="\xef\xbf\xbd";else{c++;a=(a<<10)+h-0x35fdc00;b+=String.fromCharCode(Dj|a>>18,dN|a>>12&hp,dN|a>>6&hp,dN|a&hp)}if(b.length>gI){b.substr(0,1);f+=b;b=$}}return f+b}function -byL(a){var -b=9;if(!GQ(a))b=8,a=bzu(a);return new +bzt(e){for(var +f=aa,b=f,a,h,c=0,g=e.length;crD){b.substr(0,1);f+=b;b=aa;f+=e.slice(c,d)}else +b+=e.slice(c,d);if(d==g)break;c=d}if(a>6);b+=String.fromCharCode(dN|a&hs)}else +if(a<0xd800||a>=Ep)b+=String.fromCharCode(vJ|a>>12,dN|a>>6&hs,dN|a&hs);else +if(a>=0xdbff||c+1==g||(h=e.charCodeAt(c+1))Ep)b+="\xef\xbf\xbd";else{c++;a=(a<<10)+h-0x35fdc00;b+=String.fromCharCode(De|a>>18,dN|a>>12&hs,dN|a>>6&hs,dN|a&hs)}if(b.length>gK){b.substr(0,1);f+=b;b=aa}}return f+b}function +byK(a){var +b=9;if(!GP(a))b=8,a=bzt(a);return new eZ(b,a,a.length)}function -aS(a){return byL(a)}var -bzU=["E2BIG","EACCES","EAGAIN","EBADF","EBUSY","ECHILD","EDEADLK","EDOM",vs,"EFAULT","EFBIG","EINTR","EINVAL","EIO","EISDIR","EMFILE","EMLINK","ENAMETOOLONG","ENFILE","ENODEV",sl,"ENOEXEC","ENOLCK","ENOMEM","ENOSPC","ENOSYS",r9,FB,"ENOTTY","ENXIO","EPERM","EPIPE","ERANGE","EROFS","ESPIPE","ESRCH","EXDEV","EWOULDBLOCK","EINPROGRESS","EALREADY","ENOTSOCK","EDESTADDRREQ","EMSGSIZE","EPROTOTYPE","ENOPROTOOPT","EPROTONOSUPPORT","ESOCKTNOSUPPORT","EOPNOTSUPP","EPFNOSUPPORT","EAFNOSUPPORT","EADDRINUSE","EADDRNOTAVAIL","ENETDOWN","ENETUNREACH","ENETRESET","ECONNABORTED","ECONNRESET","ENOBUFS","EISCONN","ENOTCONN","ESHUTDOWN","ETOOMANYREFS","ETIMEDOUT","ECONNREFUSED","EHOSTDOWN","EHOSTUNREACH","ELOOP","EOVERFLOW"];function -gX(d,f,e,a){var -b=bzU.indexOf(d);if(b<0){if(a==null)a=-9999;b=[0,a]}var -c=[b,aS(f||$),aS(e||$)];return c}var -GG={};function -e3(a){return GG[a]}function -gW(b,a){throw[0,b].concat(a)}function -byK(a){return new +aS(a){return byK(a)}var +bzT=["E2BIG","EACCES","EAGAIN","EBADF","EBUSY","ECHILD","EDEADLK","EDOM",vv,"EFAULT","EFBIG","EINTR","EINVAL","EIO","EISDIR","EMFILE","EMLINK","ENAMETOOLONG","ENFILE","ENODEV",sp,"ENOEXEC","ENOLCK","ENOMEM","ENOSPC","ENOSYS",sa,Fz,"ENOTTY","ENXIO","EPERM","EPIPE","ERANGE","EROFS","ESPIPE","ESRCH","EXDEV","EWOULDBLOCK","EINPROGRESS","EALREADY","ENOTSOCK","EDESTADDRREQ","EMSGSIZE","EPROTOTYPE","ENOPROTOOPT","EPROTONOSUPPORT","ESOCKTNOSUPPORT","EOPNOTSUPP","EPFNOSUPPORT","EAFNOSUPPORT","EADDRINUSE","EADDRNOTAVAIL","ENETDOWN","ENETUNREACH","ENETRESET","ECONNABORTED","ECONNRESET","ENOBUFS","EISCONN","ENOTCONN","ESHUTDOWN","ETOOMANYREFS","ETIMEDOUT","ECONNREFUSED","EHOSTDOWN","EHOSTUNREACH","ELOOP","EOVERFLOW"];function +g0(d,f,e,a){var +b=bzT.indexOf(d);if(b<0){if(a==null)a=-9999;b=[0,a]}var +c=[b,aS(f||aa),aS(e||aa)];return c}var +GF={};function +e3(a){return GF[a]}function +gZ(b,a){throw[0,b].concat(a)}function +byJ(a){return new eZ(4,a,a.length)}function -bx(a){sG(bL.Sys_error,a)}function -bzl(a){bx(a+nz)}function -byJ(b,a){if(a>>>0>=b.l)Gp();return k0(b,a)}function +bx(a){sL(bL.Sys_error,a)}function +bzk(a){bx(a+ny)}function +byI(b,a){if(a>>>0>=b.l)Go();return kY(b,a)}function ds(a){return a.l}function -Gh(){}function +Gg(){}function ct(a){this.data=a}ct.prototype=new -Gh();ct.prototype.truncate=function(a){var -b=this.data;this.data=bZ(a|0);gg(b,0,this.data,0,a)};ct.prototype.length=function(){return ds(this.data)};ct.prototype.write=function(b,d,g,a){var +Gg();ct.prototype.truncate=function(a){var +b=this.data;this.data=bZ(a|0);gh(b,0,this.data,0,a)};ct.prototype.length=function(){return ds(this.data)};ct.prototype.write=function(b,d,g,a){var c=this.length();if(b+a>=c){var -e=bZ(b+a),f=this.data;this.data=e;gg(f,0,this.data,0,c)}ej(d,g,this.data,b,a);return 0};ct.prototype.read=function(c,a,d,b){var -e=this.length();gg(this.data,c,a,d,b);return 0};ct.prototype.read_one=function(a){return byJ(this.data,a)};ct.prototype.close=function(){};ct.prototype.constructor=ct;function +e=bZ(b+a),f=this.data;this.data=e;gh(f,0,this.data,0,c)}ej(d,g,this.data,b,a);return 0};ct.prototype.read=function(c,a,d,b){var +e=this.length();gh(this.data,c,a,d,b);return 0};ct.prototype.read_one=function(a){return byI(this.data,a)};ct.prototype.close=function(){};ct.prototype.constructor=ct;function cY(b,a){this.content={};this.root=b;this.lookupFun=a}cY.prototype.nm=function(a){return this.root+a};cY.prototype.create_dir_if_needed=function(d){var -c=d.split(eA),b=$;for(var +c=d.split(eA),b=aa;for(var a=0;a>1|1;if(h=0)}function -sy(d,b){var +a=c}pi[d]=a+1;return h==b[a+1]?b[a]:0}function +Gy(a,b){return+(o$(a,b,false)>=0)}function +sD(d,b){var e=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b.charCodeAt(a)|b.charCodeAt(a+1)<<8|b.charCodeAt(a+2)<<16|b.charCodeAt(a+3)<<24;d=cv(d,c)}c=0;switch(e&3){case 3:c=b.charCodeAt(a+2)<<16;case 2:c|=b.charCodeAt(a+1)<<8;case 1:c|=b.charCodeAt(a);d=cv(d,c)}d^=e;return d}function -byX(a,b){return sy(a,d4(b))}function -byU(d,b){var +byW(a,b){return sD(a,d4(b))}function +byT(d,b){var e=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b[a]|b[a+1]<<8|b[a+2]<<16|b[a+3]<<24;d=cv(d,c)}c=0;switch(e&3){case 3:c=b[a+2]<<16;case 2:c|=b[a+1]<<8;case 1:c|=b[a];d=cv(d,c)}d^=e;return d}function -GD(a){switch(a.t&6){default:gT(a);case +GC(a){switch(a.t&6){default:gW(a);case 0:return a.c;case 4:return a.c}}function -byT(b,c){var -a=GD(c);return typeof -a==="string"?sy(b,a):byU(b,a)}function -byV(a){a^=a>>>16;a=gk(a,0x85ebca6b|0);a^=a>>>13;a=gk(a,0xc2b2ae35|0);a^=a>>>16;return a}function -byS(j,l,n,m){var +byS(b,c){var +a=GC(c);return typeof +a==="string"?sD(b,a):byT(b,a)}function +byU(a){a^=a>>>16;a=gl(a,0x85ebca6b|0);a^=a>>>13;a=gl(a,0xc2b2ae35|0);a^=a>>>16;return a}function +byR(j,l,n,m){var f,g,h,d,c,b,a,e,i;d=l;if(d<0||d>eB)d=eB;c=j;b=n;f=[m];g=0;h=1;while(g0){a=f[g++];if(a&&a.caml_custom){if(jw[a.caml_custom]&&jw[a.caml_custom].hash){var k=jw[a.caml_custom].hash(a);b=cv(b,k);c--}}else if(a @@ -656,40 +656,40 @@ Array&&a[0]===(a[0]|0))switch(a[0]){case 248:b=cv(b,a[2]);c--;break;case 250:f[--g]=a[1];break;default:var o=a.length-1<<10|a[0];b=cv(b,o);for(e=1,i=a.length;e=d)break;f[h++]=a[e]}break}else -if(k4(a)){b=byT(b,a);c--}else -if(pf(a)){b=byX(b,a);c--}else +if(k2(a)){b=byS(b,a);c--}else +if(pg(a)){b=byW(b,a);c--}else if(typeof -a==="string"){b=sy(b,a);c--}else +a==="string"){b=sD(b,a);c--}else if(a===(a|0)){b=cv(b,a+a+1);c--}else -if(a===+a){b=sx(b,a);c--}}b=byV(b);return b&0x3FFFFFFF}function -byY(a,c,k){if(!isFinite(a)){if(isNaN(a))return aS(q5);return aS(a>0?FY:"-infinity")}var +if(a===+a){b=sC(b,a);c--}}b=byU(b);return b&0x3FFFFFFF}function +byX(a,c,k){if(!isFinite(a)){if(isNaN(a))return aS(q8);return aS(a>0?FX:"-infinity")}var i=a==0&&1/a==-Infinity?1:a>=0?0:1;if(i)a=-a;var d=0;if(a==0);else if(a<1)while(a<1&&d>-1022){a*=2;d--}else while(a>=2){a/=2;d++}var -j=d<0?$:fl,e=$;if(i)e=cH;else +j=d<0?aa:fk,e=aa;if(i)e=cH;else switch(k){case -43:e=fl;break;case -32:e=fn;break;default:break}if(c>=0&&c<13){var +43:e=fk;break;case +32:e=fm;break;default:break}if(c>=0&&c<13){var g=Math.pow(2,c*4);a=Math.round(a*g)/g}var b=a.toString(16);if(c>=0){var h=b.indexOf(ev);if(h<0)b+=ev+jz(c,p);else{var f=h+1+c;if(b.length>24&fj,a>>31&ew)}function -by9(a){return a.toInt()}function -by3(a){return+a.isNeg()}function -by6(a){return a.neg()}function -by1(g,c){var -a=sF(g);if(a.signedconv&&by3(c)){a.sign=-1;c=by6(c)}var -b=$,h=by7(a.base),f="0123456789abcdef";do{var -e=c.udivmod(h);c=e.quotient;b=f.charAt(by9(e.modulus))+b}while(!by4(c));if(a.prec>=0){a.filler=fn;var -d=a.prec-b.length;if(d>0)b=jz(d,p)+b}return sv(a,b)}function -by8(a,b){return a.or(b)}function -pd(a){return a.toFloat()}function -bzk(c){var +b=b.substr(0,f)}}return aS(e+vq+b+"p"+j+d.toString(10))}function +by3(a){return+a.isZero()}function +by6(a){return new +aT(a&fi,a>>24&fi,a>>31&ew)}function +by8(a){return a.toInt()}function +by2(a){return+a.isNeg()}function +by5(a){return a.neg()}function +by0(g,c){var +a=sK(g);if(a.signedconv&&by2(c)){a.sign=-1;c=by5(c)}var +b=aa,h=by6(a.base),f="0123456789abcdef";do{var +e=c.udivmod(h);c=e.quotient;b=f.charAt(by8(e.modulus))+b}while(!by3(c));if(a.prec>=0){a.filler=fm;var +d=a.prec-b.length;if(d>0)b=jz(d,p)+b}return sA(a,b)}function +by7(a,b){return a.or(b)}function +pe(a){return a.toFloat()}function +bzj(c){var a=0,e=aI(c),b=10,d=1;if(e>0)switch(d6(c,a)){case 45:a++;d=-1;break;case 43:a++;d=1;break}if(a+10)switch(d6(c,a)){case 66:b=2;a+=2;break;case 117:case 85:a+=2;break}return[a,d,b]}function -GJ(a){if(a>=48&&a<=57)return a-48;if(a>=65&&a<=90)return a-55;if(a>=97&&a<=gR)return a-87;return-1}function -pe(f){var -h=bzk(f),c=h[0],i=h[1],d=h[2],g=aI(f),j=-1>>>0,e=c=d)dr(mZ);var -a=b;for(c++;c=d)break;a=d*a+b;if(a>j)dr(mZ)}if(c!=g)dr(mZ);a=i*a;if(d==10&&(a|0)!=a)dr(mZ);return a|0}function -gj(a){return a.slice(1)}function -gU(c){var +GI(a){if(a>=48&&a<=57)return a-48;if(a>=65&&a<=90)return a-55;if(a>=97&&a<=gU)return a-87;return-1}function +pf(f){var +h=bzj(f),c=h[0],i=h[1],d=h[2],g=aI(f),j=-1>>>0,e=c=d)dr(mX);var +a=b;for(c++;c=d)break;a=d*a+b;if(a>j)dr(mX)}if(c!=g)dr(mX);a=i*a;if(d==10&&(a|0)!=a)dr(mX);return a|0}function +gk(a){return a.slice(1)}function +gX(c){var d=c.length,b=new Array(d+1);b[0]=0;for(var a=0;a0){var c=new Array(b);for(var -a=0;aea){a-=ea;b*=Math.pow(2,ea);if(a>ea){a-=ea;b*=Math.pow(2,ea)}}if(a<-ea){a+=ea;b*=Math.pow(2,-ea)}b*=Math.pow(2,a);return b}function -GC(a,b){return+(o_(a,b,false)<0)}function -k5(b){b=d4(b);var +a=0;aea){a-=ea;b*=Math.pow(2,ea);if(a>ea){a-=ea;b*=Math.pow(2,ea)}}if(a<-ea){a+=ea;b*=Math.pow(2,-ea)}b*=Math.pow(2,a);return b}function +GB(a,b){return+(o$(a,b,false)<0)}function +k3(b){b=d4(b);var d=b.length/2,c=new Array(d);for(var a=0;a>16;return c}function -sD(b,t,a){var -n=2,o=3,r=5,d=6,h=7,g=8,j=9,m=1,l=2,q=3,s=4,p=5;if(!b.lex_default){b.lex_base=k5(b[m]);b.lex_backtrk=k5(b[l]);b.lex_check=k5(b[p]);b.lex_trans=k5(b[s]);b.lex_default=k5(b[q])}var -e,c=t,k=Gi(a[n]);if(c>=0){a[h]=a[r]=a[d];a[g]=-1}else +sI(b,t,a){var +n=2,o=3,r=5,d=6,h=7,g=8,j=9,m=1,l=2,q=3,s=4,p=5;if(!b.lex_default){b.lex_base=k3(b[m]);b.lex_backtrk=k3(b[l]);b.lex_check=k3(b[p]);b.lex_trans=k3(b[s]);b.lex_default=k3(b[q])}var +e,c=t,k=Gh(a[n]);if(c>=0){a[h]=a[r]=a[d];a[g]=-1}else c=-c-1;for(;;){var f=b.lex_base[c];if(f<0)return-f-1;var i=b.lex_backtrk[c];if(i>=0){a[h]=a[d];a[g]=i}if(a[d]>=a[o])if(a[j]==0)return-c-1;else @@ -736,12 +736,12 @@ e=eB;else{e=k[a[d]];a[d]++}if(b.lex_check[f+e]==c)c=b.lex_trans[f+e];else c=b.lex_default[c];if(c<0){a[d]=a[h];if(a[g]==-1)dr("lexing: empty token");else return a[g]}else if(e==eB)a[j]=0}}function -e1(a,d){if(a<0)kZ();var +e1(a,d){if(a<0)kX();var a=a+1|0,b=new Array(a);b[0]=0;for(var c=1;c>>32-b,c)}function g(c,b,d,e,h,f,g){return a(b&d|~b&e,c,b,h,f,g)}function @@ -756,34 +756,34 @@ o=new Array(16);for(var e=0;e<4;e++)for(var m=0;m<4;m++)o[e*4+m]=k[e]>>8*m&0xFF;return o}return function(i,g,f){var -e=[],h=GD(i);if(typeof +e=[],h=GC(i);if(typeof h==="string"){var d=h;for(var a=0;a>2]=d.charCodeAt(b)|d.charCodeAt(b+1)<<8|d.charCodeAt(b+2)<<16|d.charCodeAt(b+3)<<24}for(;a>2]|=d.charCodeAt(a+g)<<8*(a&3)}else{var c=h;for(var a=0;a>2]=c[b]|c[b+1]<<8|c[b+2]<<16|c[b+3]<<24}for(;a>2]|=c[a+g]<<8*(a&3)}return bzr(k(e,f))}}();function -bzc(c,b,a){return bzb(fs(c),b,a)}function -bzd(){return 0}var +b=a+g;e[a>>2]=c[b]|c[b+1]<<8|c[b+2]<<16|c[b+3]<<24}for(;a>2]|=c[a+g]<<8*(a&3)}return bzq(k(e,f))}}();function +bzb(c,b,a){return bza(fr(c),b,a)}function +bzc(){return 0}var e2=new Array();function -gV(c){var -a=e2[c];if(!a.opened)bx("Cannot flush a closed channel");if(!a.buffer||a.buffer==$)return 0;if(a.fd&&bL.fds[a.fd]&&bL.fds[a.fd].output){var +gY(c){var +a=e2[c];if(!a.opened)bx("Cannot flush a closed channel");if(!a.buffer||a.buffer==aa)return 0;if(a.fd&&bL.fds[a.fd]&&bL.fds[a.fd].output){var b=bL.fds[a.fd].output;switch(b.length){case -2:b(c,a.buffer);break;default:b(a.buffer)}}a.buffer=$;return 0}function -GL(e,f){var +2:b(c,a.buffer);break;default:b(a.buffer)}}a.buffer=aa;return 0}function +GK(e,f){var b=e2[e],d=a(f),c=aI(d);b.file.write(b.offset,d,0,c);b.offset+=c;return 0}function -bzy(a){var -a=sK(a),b=aL;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stderr.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var +bzx(a){var +a=sP(a),b=aL;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stderr.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var c=b.console;c&&c.error&&c.error(a)}}function -bzz(a){var -a=sK(a),b=aL;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stdout.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var +bzy(a){var +a=sP(a),b=aL;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stdout.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var c=b.console;c&&c.log&&c.log(a)}}function -pl(c,e,d,a){if(bL.fds===undefined)bL.fds=new +pm(c,e,d,a){if(bL.fds===undefined)bL.fds=new Array();a=a?a:{};var b={};b.file=d;b.offset=a.append?d.length():0;b.flags=a;b.output=e;bL.fds[c]=b;if(!bL.fd_last_idx||c>bL.fd_last_idx)bL.fd_last_idx=c;return c}function -bzV(c,b,g){var +bzU(c,b,g){var a={};while(b){switch(b[1]){case 0:a.rdonly=1;break;case 1:a.wronly=1;break;case @@ -793,91 +793,91 @@ a={};while(b){switch(b[1]){case 5:a.excl=1;break;case 6:a.binary=1;break;case 7:a.text=1;break;case -8:a.nonblock=1;break}b=b[2]}if(a.rdonly&&a.wronly)bx(d4(c)+wa);if(a.text&&a.binary)bx(d4(c)+CE);var -d=GW(c),e=d.device.open(d.rest,a),f=bL.fd_last_idx?bL.fd_last_idx:0;return pl(f+1,GL,e,a)}pl(0,GL,new -ct(bZ(0)));pl(1,bzz,new -ct(bZ(0)));pl(2,bzy,new +8:a.nonblock=1;break}b=b[2]}if(a.rdonly&&a.wronly)bx(d4(c)+wd);if(a.text&&a.binary)bx(d4(c)+Cy);var +d=GV(c),e=d.device.open(d.rest,a),f=bL.fd_last_idx?bL.fd_last_idx:0;return pm(f+1,GK,e,a)}pm(0,GK,new +ct(bZ(0)));pm(1,bzy,new +ct(bZ(0)));pm(2,bzx,new ct(bZ(0)));function -bze(a){var -c=bL.fds[a];if(c.flags.wronly)bx(xV+a+" is writeonly");var -d=null;if(a==0&&k9()){var -e=require("fs");d=function(){return aS(e.readFileSync(0,u3))}}var +bzd(a){var +c=bL.fds[a];if(c.flags.wronly)bx(xR+a+" is writeonly");var +d=null;if(a==0&&k7()){var +e=require("fs");d=function(){return aS(e.readFileSync(0,u8))}}var b={file:c.file,offset:c.offset,fd:a,opened:true,out:false,refill:d};e2[b.fd]=b;return b.fd}function -GE(c){var -b=bL.fds[c];if(b.flags.rdonly)bx(xV+c+" is readonly");var -a={file:b.file,offset:b.offset,fd:c,opened:true,out:true,buffer:$};e2[a.fd]=a;return a.fd}function -bzf(){var +GD(c){var +b=bL.fds[c];if(b.flags.rdonly)bx(xR+c+" is readonly");var +a={file:b.file,offset:b.offset,fd:c,opened:true,out:true,buffer:aa};e2[a.fd]=a;return a.fd}function +bze(){var b=0;for(var a=0;a>>0)return a[0];else -if(k4(a))return kb;else -if(pf(a))return kb;else +if(k2(a))return kb;else +if(pg(a))return kb;else if(a instanceof Function||typeof a=="function")return 247;else -if(a&&a.caml_custom)return m2;else +if(a&&a.caml_custom)return m0;else return iD}function d5(b,c,a){if(a&&aL.toplevelReloc)b=aL.toplevelReloc(a);bL[b+1]=c;if(a)bL[a]=c}function -sH(a,b){GG[d4(a)]=b;return 0}function -bzo(a){a[2]=GI++;return a}function -byI(a,b){if(a===b)return 1;a.t&6&&gT(a);b.t&6&&gT(b);return a.c==b.c?1:0}function -pj(a,b){return byI(a,b)}function -bzq(){bR(rX)}function -bA(b,a){if(a>>>0>=aI(b))bzq();return d6(b,a)}function -M(a,b){return 1-pj(a,b)}function -bzs(){return 0x7FFFFFFF/4|0}function -bzm(){k8(bL.Not_found)}function -GM(c){var -a=aL,b=ek(c);if(a.process&&a.process.env&&a.process.env[b]!=undefined)return aS(a.process.env[b]);if(aL.jsoo_static_env&&aL.jsoo_static_env[b])return aS(aL.jsoo_static_env[b]);bzm()}function -bzt(){if(aL.crypto)if(typeof +sM(a,b){GF[d4(a)]=b;return 0}function +bzn(a){a[2]=GH++;return a}function +byH(a,b){if(a===b)return 1;a.t&6&&gW(a);b.t&6&&gW(b);return a.c==b.c?1:0}function +pk(a,b){return byH(a,b)}function +bzp(){bR(r0)}function +bA(b,a){if(a>>>0>=aI(b))bzp();return d6(b,a)}function +M(a,b){return 1-pk(a,b)}function +bzr(){return 0x7FFFFFFF/4|0}function +bzl(){k6(bL.Not_found)}function +GL(c){var +a=aL,b=ek(c);if(a.process&&a.process.env&&a.process.env[b]!=undefined)return aS(a.process.env[b]);if(aL.jsoo_static_env&&aL.jsoo_static_env[b])return aS(aL.jsoo_static_env[b]);bzl()}function +bzs(){if(aL.crypto)if(typeof aL.crypto.getRandomValues==="function"){var a=new(aL.Uint32Array)(1);aL.crypto.getRandomValues(a);return[0,a[0]]}else if(aL.crypto.randomBytes==="function"){var b=aL.crypto.randomBytes(4),a=new(aL.Uint32Array)(b);return[0,a[0]]}var c=new -Date().getTime(),d=c^Dt*Math.random();return[0,d]}function -sJ(a){var +Date().getTime(),d=c^Dq*Math.random();return[0,d]}function +sO(a){var b=1;while(a&&a.joo_tramp){a=a.joo_tramp.apply(null,a.joo_args);b++}return a}function cw(b,a){return{joo_tramp:b,joo_args:a}}function -GK(a){return a}function +GJ(a){return a}function o(a){if(a instanceof Array)return a;if(aL.RangeError&&a instanceof -aL.RangeError&&a.message&&a.message.match(/maximum call stack/i))return GK(bL.Stack_overflow);if(aL.InternalError&&a +aL.RangeError&&a.message&&a.message.match(/maximum call stack/i))return GJ(bL.Stack_overflow);if(aL.InternalError&&a instanceof -aL.InternalError&&a.message&&a.message.match(/too much recursion/i))return GK(bL.Stack_overflow);if(a +aL.InternalError&&a.message&&a.message.match(/too much recursion/i))return GJ(bL.Stack_overflow);if(a instanceof -aL.Error&&e3(rD))return[0,e3(rD),a];return[0,bL.Failure,aS(String(a))]}var +aL.Error&&e3(rF))return[0,e3(rF),a];return[0,bL.Failure,aS(String(a))]}var as=function(y){"use strict";var -f=gN,aa=7,s=9007199254740992,H=q(s),M="0123456789abcdefghijklmnopqrstuvwxyz",g=bzx.BigInt,F=typeof +f=gR,$=7,s=9007199254740992,H=q(s),M="0123456789abcdefghijklmnopqrstuvwxyz",g=bzw.BigInt,F=typeof g==="function";function d(a,b,c,f){if(typeof a==="undefined")return d[0];if(typeof b!=="undefined")return+b===10&&!c?e(a):ae(a,b,c,f);return e(a)}function -a(b,a){this.value=b;this.sign=a;this.isSmall=false;this.caml_custom=mT}a.prototype=Object.create(d.prototype);function -b(a){this.value=a;this.sign=a<0;this.isSmall=true;this.caml_custom=mT}b.prototype=Object.create(d.prototype);function -c(a){this.value=a;this.caml_custom=mT}c.prototype=Object.create(d.prototype);function +a(b,a){this.value=b;this.sign=a;this.isSmall=false;this.caml_custom=mR}a.prototype=Object.create(d.prototype);function +b(a){this.value=a;this.sign=a<0;this.isSmall=true;this.caml_custom=mR}b.prototype=Object.create(d.prototype);function +c(a){this.value=a;this.caml_custom=mR}c.prototype=Object.create(d.prototype);function l(a){return-s0)a.push(0);return a.concat(c)}function C(b,c){var a=Math.max(b.length,c.length);if(a<=30)return L(b,c);a=Math.ceil(a/2);var f=b.slice(a),d=b.slice(0,a),i=c.slice(a),h=c.slice(0,a),e=C(d,h),g=C(f,i),k=C(t(d,f),t(h,i)),j=t(t(e,W(w(w(k,e),g),a)),W(g,2*a));m(j);return j}function -aj(a,b){return-(w9*a)-w9*b+0.000015*a*b>0}a.prototype.multiply=function(j){var +aj(a,b){return-(w8*a)-w8*b+0.000015*a*b>0}a.prototype.multiply=function(j){var h=e(j),c=this.value,b=h.value,i=this.sign!==h.sign,g;if(h.isSmall){if(b===0)return d[0];if(b===1)return this;if(b===-1)return this.negate();g=Math.abs(b);if(g=v){b=b.multiply(j);a-=v-1}return b.multiply(h[a])};c.prototype.shiftLeft=b.prototype.shiftLeft=a.prototype.shiftLeft;a.prototype.shiftRight=function(d){var a,b=e(d).toJSNumber();if(!X(b))throw new -Error(String(b)+wr);if(b<0)return this.shiftLeft(-b);var +Error(String(b)+wt);if(b<0)return this.shiftLeft(-b);var c=this;while(b>=v){if(c.isZero()||c.isNegative()&&c.isUnit())return c;a=i(c,j);c=a[1].isNegative()?a[0].prev():a[0];b-=v-1}a=i(c,h[b]);return a[1].isNegative()?a[0].prev():a[0]};c.prototype.shiftRight=b.prototype.shiftRight=a.prototype.shiftRight;function I(h,a,q){a=e(a);var m=h.isNegative(),p=a.isNegative(),l=m?h.not():h,o=p?a.not():a,b=0,c=0,k=null,n=null,f=[];while(!l.isZero()||!o.isZero()){k=i(l,j);b=k[1].toJSNumber();if(m)b=j-1-b;n=i(o,j);c=n[1].toJSNumber();if(p)c=j-1-c;l=k[0];o=n[0];f.push(q(b,c))}var @@ -1080,14 +1080,14 @@ h=[],j=b[0]===cH;for(a=j?1:0;a=0;a--){b=b.add(e[a].times(c));c=c.times(f)}return g?b.negate():b}function -ah(b,a){a=a||M;if(b=0){e=c.divmod(b);c=e.quotient;var d=e.remainder;if(d.isNegative()){d=b.minus(d).abs();c=c.next()}g.push(d.toJSNumber())}g.push(c.toJSNumber());return{value:g.reverse(),isNegative:f}}function Z(d,c,b){var -a=x(d,c);return(a.isNegative?cH:$)+a.value.map(function(a){return ah(a,b)}).join($)}a.prototype.toArray=function(a){return x(this,a)};b.prototype.toArray=function(a){return x(this,a)};c.prototype.toArray=function(a){return x(this,a)};a.prototype.toString=function(a,f){if(a===y)a=10;if(a!==10)return Z(this,a,f);var +a=x(d,c);return(a.isNegative?cH:aa)+a.value.map(function(a){return ah(a,b)}).join(aa)}a.prototype.toArray=function(a){return x(this,a)};b.prototype.toArray=function(a){return x(this,a)};c.prototype.toArray=function(a){return x(this,a)};a.prototype.toString=function(a,f){if(a===y)a=10;if(a!==10)return Z(this,a,f);var d=this.value,c=d.length,e=String(d[--c]),h="0000000",b;while(--c>=0){b=String(d[c]);e+=h.slice(b.length)+b}var -g=this.sign?cH:$;return g+e};b.prototype.toString=function(a,b){if(a===y)a=10;if(a!=10)return Z(this,a,b);return String(this.value)};c.prototype.toString=b.prototype.toString;c.prototype.toJSON=a.prototype.toJSON=b.prototype.toJSON=function(){return this.toString()};a.prototype.valueOf=function(){return parseInt(this.toString(),10)};a.prototype.toJSNumber=a.prototype.valueOf;b.prototype.valueOf=function(){return this.value};b.prototype.toJSNumber=b.prototype.valueOf;c.prototype.valueOf=c.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};function +g=this.sign?cH:aa;return g+e};b.prototype.toString=function(a,b){if(a===y)a=10;if(a!=10)return Z(this,a,b);return String(this.value)};c.prototype.toString=b.prototype.toString;c.prototype.toJSON=a.prototype.toJSON=b.prototype.toJSON=function(){return this.toString()};a.prototype.valueOf=function(){return parseInt(this.toString(),10)};a.prototype.toJSNumber=a.prototype.valueOf;b.prototype.valueOf=function(){return this.value};b.prototype.toJSNumber=b.prototype.valueOf;c.prototype.valueOf=c.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};function V(d){if(l(+d)){var n=+d;if(n===r(n))return F?new c(g(n)):new @@ -1105,8 +1105,8 @@ b(n);throw new Error(oG+d)}var s=d[0]===cH;if(s)d=d.slice(1);var h=d.split(/e/i);if(h.length>2)throw new -Error(oG+h.join(o0));if(h.length===2){var -e=h[1];if(e[0]===fl)e=e.slice(1);e=+e;if(e!==r(e)||!l(e))throw new +Error(oG+h.join(o1));if(h.length===2){var +e=h[1];if(e[0]===fk)e=e.slice(1);e=+e;if(e!==r(e)||!l(e))throw new Error(oG+e+" is not a valid exponent.");var f=h[0],i=f.indexOf(ev);if(i>=0){e-=f.length-i-1;f=f.slice(0,i)+f.slice(i+1)}if(e<0)throw new Error("Cannot include negative exponent part for integers");f+=new @@ -1114,7 +1114,7 @@ Array(e+1).join(p);d=f}var t=/^([0-9][0-9]*)$/.test(d);if(!t)throw new Error(oG+d);if(F)return new c(g(s?cH+d:d));var -q=[],j=d.length,o=aa,k=j-o;while(j>0){q.push(+d.slice(k,j));k-=o;if(k<0)k=0;j-=o}m(q);return new +q=[],j=d.length,o=$,k=j-o;while(j>0){q.push(+d.slice(k,j));k-=o;if(k<0)k=0;j-=o}m(q);return new a(q,s)}function af(a){if(F)return new c(g(a));if(l(a)){if(a!==r(a))throw new @@ -1134,96 +1134,96 @@ instanceof c};d.randBetween=ag;d.fromArray=function(b,a,c){return U(b.map(e),e(a||10),c)};return d}();function cL(a){var b=a.toJSNumber()|0;if(a.equals(as(b)))return b;return a}function -GR(a){return cL(as(a).abs())}function -GS(a,b){return cL(as(a).add(as(b)))}function +GQ(a){return cL(as(a).abs())}function +GR(a,b){return cL(as(a).add(as(b)))}function el(a,b){return as(a).compare(as(b))}function jB(b,a){a=as(a);if(a.equals(as(0)))jy();return cL(as(b).divide(as(a)))}function -bzQ(b,a){a=as(a);if(a.equals(as(0)))jy();return cL(as(b).mod(a))}function -sL(a,b){return[0,jB(a,b),bzQ(a,b)]}function -GT(a,b){return jB(a,b)}function -bzE(a,b){return as(a).equals(as(b))?1:0}function -c7(a){return as(a).compare(as.zero)}function -sN(a,b){return cL(as(a).subtract(as(b)))}function -bzF(a,b){var -c=c7(a),d=c7(b);if(c*d<0)if(!as(a).mod(as(b)).equals(as(0)))return sN(jB(a,b),as(1));return jB(a,b)}function -bzH(a,b){return cL(as.gcd(as(a),as(b)).abs())}function -bzv(c,e,g){e=as(e);var +bzP(b,a){a=as(a);if(a.equals(as(0)))jy();return cL(as(b).mod(a))}function +sQ(a,b){return[0,jB(a,b),bzP(a,b)]}function +GS(a,b){return jB(a,b)}function +bzD(a,b){return as(a).equals(as(b))?1:0}function +c9(a){return as(a).compare(as.zero)}function +sS(a,b){return cL(as(a).subtract(as(b)))}function +bzE(a,b){var +c=c9(a),d=c9(b);if(c*d<0)if(!as(a).mod(as(b)).equals(as(0)))return sS(jB(a,b),as(1));return jB(a,b)}function +bzG(a,b){return cL(as.gcd(as(a),as(b)).abs())}function +bzu(c,e,g){e=as(e);var a=e.toArray(Math.pow(2,32));c.write(8,a.isNegative?1:0);var f=a.value.length,d=f*4;c.write(32,d);for(var -b=f-1;b>=0;b--){c.write(8,a.value[b]>>>0&dx);c.write(8,a.value[b]>>>8&dx);c.write(8,a.value[b]>>>16&dx);c.write(8,a.value[b]>>>24&dx)}g[0]=4*(1+((d+3)/4|0));g[1]=8*(1+((d+7)/8|0))}function -bzw(b,g){var +b=f-1;b>=0;b--){c.write(8,a.value[b]>>>0&dy);c.write(8,a.value[b]>>>8&dy);c.write(8,a.value[b]>>>16&dy);c.write(8,a.value[b]>>>24&dy)}g[0]=4*(1+((d+3)/4|0));g[1]=8*(1+((d+7)/8|0))}function +bzv(b,g){var e;switch(b.read8u()){case 1:e=true;break;case 0:e=false;break;default:dr("input_value: z (malformed input)")}var f=b.read32u(),c=as(0);for(var d=0;d>>0);c=a.shiftLeft(d*32).add(c)}if(e)c=c.negate();g[0]=f+4;return cL(c)}function -bzI(d){var +bzH(d){var b=as(d).toArray(Math.pow(2,32)),a=0;for(var c=0;c=48&&a<=57)return a-48;if(a>=97&&a<=CL)return a-97+10;if(a>=65&&a<=70)return a-65+10}var -d=0;if(a[d]==fl)a=a.substring(1);else -if(a[d]==cH)d++;if(a[d]==sc)bR(z6);a=a.replace(/_/g,$);if(a==cH||a==$)a=p;for(;d=c)bR(z6)}return cL(as(a,c))}function -gY(d,a,b,c){a=d4(a);if(b!=0||c!=a.length){if(a.length-b=0?1:0}function -pm(a){a=as(a);if(!bzG(a))k8(e3(mk));var -b=as(Dt),d=a.and(b).toJSNumber(),c=a.shiftRight(32).and(b).toJSNumber(),e=GA(d,c);return e}function -by$(a){switch(a[2]){case-8:case-11:case-12:return 1;default:return 0}}function -byP(b){var -a=$;if(b[0]==0){a+=b[1][1];if(b.length==3&&b[2][0]==0&&by$(b[1]))var +if(e==Fv||e=="X")c=16;else +if(e==xF||e=="B")c=2;if(c!=10){a=a.substring(b+1);if(g==-1)a=cH+a}}}}function +h(a){if(a>=48&&a<=57)return a-48;if(a>=97&&a<=CG)return a-97+10;if(a>=65&&a<=70)return a-65+10}var +d=0;if(a[d]==fk)a=a.substring(1);else +if(a[d]==cH)d++;if(a[d]==sf)bR(zZ);a=a.replace(/_/g,aa);if(a==cH||a==aa)a=p;for(;d=c)bR(zZ)}return cL(as(a,c))}function +g1(d,a,b,c){a=d4(a);if(b!=0||c!=a.length){if(a.length-b=0?1:0}function +pn(a){a=as(a);if(!bzF(a))k6(e3(mi));var +b=as(Dq),d=a.and(b).toJSNumber(),c=a.shiftRight(32).and(b).toJSNumber(),e=Gz(d,c);return e}function +by_(a){switch(a[2]){case-8:case-11:case-12:return 1;default:return 0}}function +byO(b){var +a=aa;if(b[0]==0){a+=b[1][1];if(b.length==3&&b[2][0]==0&&by_(b[1]))var e=b[2],f=1;else var f=2,e=b;a+="(";for(var -d=f;df)a+=gG;var +d=f;df)a+=gI;var c=e[d];if(typeof c=="number")a+=c.toString();else if(c instanceof -eZ)a+=mu+c.toString()+mu;else +eZ)a+=ms+c.toString()+ms;else if(typeof -c=="string")a+=mu+c.toString()+mu;else -a+=sc}a+=")"}else +c=="string")a+=ms+c.toString()+ms;else +a+=sf}a+=")"}else if(b[0]==bm)a+=b[1];return a}function -Gv(a){if(a +Gu(a){if(a instanceof Array&&(a[0]==0||a[0]==bm)){var -c=e3(Ec);if(c)c(a,false);else{var -d=byP(a),b=e3(u2);if(b)b(0);aL.console.error(sf+d+vy)}}else +c=e3(Ea);if(c)c(a,false);else{var +d=byO(a),b=e3(u7);if(b)b(0);aL.console.error(si+d+vB)}}else throw a}function -bzp(){var -a=aL;if(a.process&&a.process.on)a.process.on("uncaughtException",function(b,c){Gv(b);a.process.exit(2)});else -if(a.addEventListener)a.addEventListener("error",function(a){if(a.error)Gv(a.error)})}bzp();function -r(a,b){return a.length==1?a(b):dF(a,[b])}function -aq(a,b,c){return a.length==2?a(b,c):dF(a,[b,c])}function -cB(a,b,c,d){return a.length==3?a(b,c,d):dF(a,[b,c,d])}function -uX(a,b,c,d,e){return a.length==4?a(b,c,d,e):dF(a,[b,c,d,e])}function -lQ(a,b,c,d,e,f){return a.length==5?a(b,c,d,e,f):dF(a,[b,c,d,e,f])}function -byC(a,b,c,d,e,f,g){return a.length==6?a(b,c,d,e,f,g):dF(a,[b,c,d,e,f,g])}function -byB(a,b,c,d,e,f,g,h){return a.length==7?a(b,c,d,e,f,g,h):dF(a,[b,c,d,e,f,g,h])}byR();var -po=[bm,a(Dy),-1],sT=[bm,a(Ef),-2],k_=[bm,a(q3),-3],sP=[bm,a(zw),-4],pp=[bm,a(wY),-6],cD=[bm,a(Fc),-7],sR=[bm,a(vT),-8],sS=[bm,a(zT),-9],bs=[bm,a(FM),-11],sU=[bm,a(DZ),DO],byy=[4,0,0,0,[12,45,[4,0,0,0,0]]],pF=[0,[11,a('File "'),[2,0,[11,a('", line '),[4,0,0,0,[11,a(y3),[4,0,0,0,[12,45,[4,0,0,0,[11,a(": "),[2,0,0]]]]]]]]]],a('File "%s", line %d, characters %d-%d: %s')],byz=[12,41,0],byA=[4,0,0,0,[12,46,0]],uW=[0,a("eventsManager"),a("computeAllocationsFamiliales"),a("computeAidesAuLogement")];d5(11,sU,DZ);d5(10,bs,FM);d5(9,[bm,a(Cc),-10],Cc);d5(8,sS,zT);d5(7,sR,vT);d5(6,cD,Fc);d5(5,pp,wY);d5(4,[bm,a(yC),-5],yC);d5(3,sP,zw);d5(2,k_,q3);d5(1,sT,Ef);d5(0,po,Dy);var -G_=a("output_substring"),G7=a("%.12g"),G6=a(ev),G4=a(ws),G5=a(zI),GX=a("Stdlib.Exit"),GZ=gh(0,0,E8),G0=gh(0,0,65520),G1=gh(1,0,E8),Ha=a("CamlinternalLazy.Undefined"),Hf=a(wJ),Hg=a("\\'"),Hh=a(v1),Hi=a(At),Hj=a(Bu),Hk=a(yG),He=a("Char.chr"),Hn=a("nth"),Ho=a("List.nth"),Hm=a("tl"),Hl=a("hd"),Hr=a("String.blit / Bytes.blit_string"),Hq=a("Bytes.blit"),Hp=a("String.sub / Bytes.sub"),Hw=a("String.contains_from / Bytes.contains_from"),Ht=a($),Hs=a("String.concat"),Hz=a("Array.blit"),Hy=a("Array.fill"),HE=a("Map.remove_min_elt"),HF=[0,0,0,0],HG=[0,a("map.ml"),xB,10],HH=[0,0,0],HA=a(mn),HB=a(mn),HC=a(mn),HD=a(mn),HI=a("Stdlib.Queue.Empty"),HO=a("Buffer.add_substring/add_subbytes"),HN=a("Buffer.add: cannot grow buffer"),HM=[0,a(z5),93,2],HL=[0,a(z5),94,2],HK=a("Buffer.sub"),HX=a("%c"),HY=a("%s"),HZ=a(x6),H0=a(BN),H1=a(zt),H2=a(D$),H3=a("%f"),H4=a("%B"),H5=a("%{"),H6=a("%}"),H7=a("%("),H8=a("%)"),H9=a(qZ),H_=a("%t"),H$=a("%?"),Ia=a("%r"),Ib=a("%_r"),Ic=[0,a(cj),kz,23],In=[0,a(cj),814,21],If=[0,a(cj),gJ,21],Io=[0,a(cj),818,21],Ig=[0,a(cj),gA,21],Ip=[0,a(cj),rx,19],Ih=[0,a(cj),ra,19],Iq=[0,a(cj),826,22],Ii=[0,a(cj),827,22],Ir=[0,a(cj),831,30],Ij=[0,a(cj),832,30],Il=[0,a(cj),836,26],Id=[0,a(cj),837,26],Im=[0,a(cj),846,28],Ie=[0,a(cj),847,28],Ik=[0,a(cj),kP,23],Ju=a(wg),Js=[0,a(cj),1558,4],Jt=a("Printf: bad conversion %["),Jv=[0,a(cj),1626,39],Jw=[0,a(cj),1649,31],Jx=[0,a(cj),AV,31],Jy=a("Printf: bad conversion %_"),Jz=a(wc),JA=a(wq),JB=a(wc),JC=a(wq),JG=[0,[11,a("invalid box description "),[3,0,0]],a("invalid box description %S")],JE=a($),JF=[0,0,4],JH=a($),JI=a(xI),JJ=a("h"),JK=a("hov"),JL=a("hv"),JM=a("v"),Jq=a(q5),Jo=a("neg_infinity"),Jp=a(FY),Jn=a(ev),Ji=[0,cJ],I8=a("%+nd"),I9=a("% nd"),I$=a("%+ni"),Ja=a("% ni"),Jb=a("%nx"),Jc=a("%#nx"),Jd=a("%nX"),Je=a("%#nX"),Jf=a("%no"),Jg=a("%#no"),I7=a("%nd"),I_=a(zt),Jh=a("%nu"),IV=a("%+ld"),IW=a("% ld"),IY=a("%+li"),IZ=a("% li"),I0=a("%lx"),I1=a("%#lx"),I2=a("%lX"),I3=a("%#lX"),I4=a("%lo"),I5=a("%#lo"),IU=a("%ld"),IX=a(BN),I6=a("%lu"),II=a("%+Ld"),IJ=a("% Ld"),IL=a("%+Li"),IM=a("% Li"),IN=a("%Lx"),IO=a("%#Lx"),IP=a("%LX"),IQ=a("%#LX"),IR=a("%Lo"),IS=a("%#Lo"),IH=a("%Ld"),IK=a(D$),IT=a("%Lu"),Iv=a("%+d"),Iw=a("% d"),Iy=a("%+i"),Iz=a("% i"),IA=a("%x"),IB=a("%#x"),IC=a("%X"),ID=a("%#X"),IE=a("%o"),IF=a("%#o"),Iu=a(sj),Ix=a(x6),IG=a(wg),HP=a("@]"),HQ=a("@}"),HR=a("@?"),HS=a("@\n"),HT=a("@."),HU=a("@@"),HV=a("@%"),HW=a("@"),Is=a("CamlinternalFormat.Type_mismatch"),JQ=a($),JR=[0,[11,a(gG),[2,0,[2,0,0]]],a(", %s%s")],Ke=[0,[11,a(sf),[2,0,[12,10,0]]],a(FG)],Kf=[0,[11,a("Fatal error in uncaught exception handler: exception "),[2,0,[12,10,0]]],a("Fatal error in uncaught exception handler: exception %s\n")],Kd=a("Fatal error: out of memory in uncaught exception handler"),Kb=[0,[11,a(sf),[2,0,[12,10,0]]],a(FG)],J9=[0,[2,0,[12,10,0]],a("%s\n")],J1=a("Raised at"),J2=a("Re-raised at"),J3=a("Raised by primitive operation at"),J4=a("Called from"),J5=a(" (inlined)"),J7=a($),J6=[0,[2,0,[12,32,[2,0,[11,a(' in file "'),[2,0,[12,34,[2,0,[11,a(", line "),[4,0,0,0,[11,a(y3),byy]]]]]]]]]],a('%s %s in file "%s"%s, line %d, characters %d-%d')],J8=[0,[2,0,[11,a(" unknown location"),0]],a("%s unknown location")],JW=a("Out of memory"),JX=a("Stack overflow"),JY=a("Pattern matching failed"),JZ=a("Assertion failed"),J0=a("Undefined recursive module"),JS=[0,[12,40,[2,0,[2,0,[12,41,0]]]],a("(%s%s)")],JT=a($),JU=a($),JV=[0,[12,40,[2,0,[12,41,0]]],a("(%s)")],JP=[0,[4,0,0,0,0],a(sj)],JN=[0,[3,0,0],a("%S")],JO=a(sc),J_=[0,a($),a("(Cannot print locations:\n bytecode executable program file not found)"),a("(Cannot print locations:\n bytecode executable program file appears to be corrupt)"),a("(Cannot print locations:\n bytecode executable program file has wrong magic number)"),a("(Cannot print locations:\n bytecode executable program file cannot be opened;\n -- too many open files. Try running with OCAMLRUNPARAM=b=2)")],Kg=a(Fx),Ku=[0,0],byw=a("OCAMLRUNPARAM"),byu=a("CAMLRUNPARAM"),Kh=a($),KU=[3,0,3],KV=a(ev),KP=a(nv),KQ=a("<\/"),KR=a($),KL=a(nv),KM=a(rU),KN=a($),KJ=a("\n"),KF=a($),KG=a($),KH=a($),KI=a($),KE=[0,a($)],KA=a($),KB=a($),KC=a($),KD=a($),Ky=[0,a($),0,a($)],Kx=a($),Kw=a("Stdlib.Format.String_tag"),K6=a($),Lb=[0,a("lib/dates.ml"),226,2],La=[0,[4,0,[0,2,4],0,[12,45,[4,0,[0,2,2],0,[12,45,[4,0,[0,2,2],0,0]]]]],a("%04d-%02d-%02d")],K_=[0,[12,91,[4,0,0,0,[11,a(" years, "),[4,0,0,0,[11,a(" months, "),[4,0,0,0,[11,a(" days]"),0]]]]]]],a("[%d years, %d months, %d days]")],K7=a("Dates_calc.Dates.InvalidDate"),K8=a("Dates_calc.Dates.AmbiguousComputation"),Lg=gh(1,0,0),Lc=a("Z.Overflow"),Ld=a(mk),Lk=a($),Ll=a("+inf"),Lm=a("-inf"),Ln=a(F5),Lo=a("undef"),Lq=[0,a("q.ml"),486,25],Lp=a("Q.of_string: invalid digit"),Li=a(xj),Lh=a(xj),Lu=a("Buf.extend: reached Sys.max_string_length"),L4=[0,a(rV),72,32],L1=[0,a(rV),72,32],L0=a("Root is not an object or array"),LW=a("NaN value not allowed in standard JSON"),LX=[0,[8,[0,0,3],0,[0,16],0],a(x9)],LZ=[0,[8,[0,0,3],0,[0,17],0],a(Dq)],LY=a(y0),LU=a("Infinity value not allowed in standard JSON"),LV=a("-Infinity value not allowed in standard JSON"),LQ=a("NaN"),LR=[0,[8,[0,0,3],0,[0,16],0],a(x9)],LT=[0,[8,[0,0,3],0,[0,17],0],a(Dq)],LS=a(y0),LO=a("Infinity"),LP=a("-Infinity"),LL=a(ws),LM=a(zI),LK=a("null"),LE=a(v1),LF=a(At),LG=a(Bu),LH=a("\\f"),LI=a(yG),LJ=a('\\"'),LD=a(wJ),LC=[0,[11,a("src="),[3,0,[11,a(" start="),[4,3,0,0,[11,a(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]],a("src=%S start=%i len=%i\n%!")],LA=a("\\u00"),Lx=[0,a(rV),72,32],Lv=a("Yojson.Json_error"),Lz=[0,a(qN),a(q2),a(re),a(rO),a(ro),a($),a($),a($),a($),a($),a($)],L3=[0,a(qN),a(q2),a(re),a(rO),a(ro),a($),a($),a($),a($),a($),a($)],L6=[0,a(qN),a(q2),a(re),a(rO),a(ro),a($),a($),a($),a($),a($),a($)],MZ=a("unreachable due to the [is_subscope_call] test"),M1=a("unreachable due to the [is_subscope_input_var_def] test"),M2=a("]"),M3=a("["),M4=a(" ]): expected variable definition (function output), found: "),M5=a(gG),M6=a(vh),M7=a(" ]): expected variable definition (function output), found: end of tokens"),M8=a(gG),M9=a(vh),M0=a("Unexpected event: "),M$=a("Missing function output variable definition."),M_=a("Invalid start of function call."),MY=a(ac),MX=a(ae),Na=[0,[11,a("An error occurred while parsing raw events: "),[2,0,[12,10,0]]],a("An error occurred while parsing raw events: %s\n")],MN=a(yp),MO=a(gG),MP=[0,[11,a(A$),0],a(A$)],MQ=a(yp),MR=a(gG),MS=[0,[11,a(EZ),0],a(EZ)],MT=a(gG),MU=[0,[11,a("VariableDefinition([ "),[2,0,[11,a(" ], "),[2,0,[12,41,0]]]]],a("VariableDefinition([ %s ], %s)")],MV=[0,[11,a("DecisionTaken("),[2,0,[12,58,[4,0,0,0,[12,46,[4,0,0,0,[12,45,[4,0,0,0,[12,46,[4,0,0,0,byz]]]]]]]]]],a("DecisionTaken(%s:%d.%d-%d.%d)")],Mx=[0,cE,a("VarComputation")],My=[0,cE,a("FunCall")],Mz=a(CH),MA=a("inputs"),MB=a(yr),MC=[0,cE,a("SubScopeCall")],MD=a("fun_calls"),ME=a("value"),MF=a(yr),MG=a("pos"),MH=a(ae),MI=a(CH),MJ=a(ac),MK=a("fun_name"),Mm=[0,ca,[0,[0,cE,a("Unit")],0]],Mn=[0,ca,[0,[0,cE,a("Unembeddable")],0]],Mo=[0,cE,a("Bool")],Mp=[0,cE,a("Money")],Mq=[0,cE,a("Integer")],Mr=[0,cE,a("Decimal")],Ms=[0,cE,a("Date")],Mt=[0,cE,a("Duration")],Mu=[0,cE,a("Enum")],Mv=[0,cE,a("Struct")],Mw=[0,cE,a("Array")],Ml=[0,[15,0],a(qZ)],Mk=[0,[15,0],a(qZ)],L8=a("law_headings"),L9=a("end_column"),L_=a("end_line"),L$=a("start_column"),Ma=a("start_line"),Mb=a("filename"),Mc=a("Runtime_ocaml.Runtime.EmptyError"),Md=a("Runtime_ocaml.Runtime.AssertionFailed"),Me=a("Runtime_ocaml.Runtime.ConflictError"),Mf=a("Runtime_ocaml.Runtime.UncomparableDurations"),Mh=a("Runtime_ocaml.Runtime.ImpossibleDate"),Mj=a("Runtime_ocaml.Runtime.NoValueProvided"),Nb=a("Jsoo_runtime.Error.Exn"),Nc=a(rD),Nu=[0,[2,0,[11,a(" in file "),[2,0,[11,a(", position "),[4,0,0,0,[12,58,[4,0,0,0,[11,a("--"),[4,0,0,0,[12,58,byA]]]]]]]]]],a("%s in file %s, position %d:%d--%d:%d.")],Nv=a("No rule applies in the given context to give a value to the variable"),Nw=a("A conflict happened between two rules giving a value to the variable"),Nx=a("A failure happened in the assertion"),Nn=a("Begin call"),No=a("End call"),Np=a("Variable definition"),Nq=a("Decision taken"),Nl=a($),Nj=a("date_of_jsoo: invalid date"),Nh=[0,a(yg),a(B2),a(EM)],Ni=[0,a(yg),a(EM),a(B2)],aaa=[0,a(a0),90,14,90,29,[0,a(bl),[0,a(a1),0]]],$5=[0,a(a0),fO,18,fO,64,[0,a(bl),[0,a(a1),0]]],$6=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],$4=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],$0=[0,a(a0),87,14,87,53,[0,a(bl),[0,a(a1),0]]],$W=[0,a(a0),86,14,86,50,[0,a(bl),[0,a(a1),0]]],$S=[0,a(a0),89,14,89,46,[0,a(bl),[0,a(a1),0]]],$O=[0,a(a0),88,14,88,54,[0,a(bl),[0,a(a1),0]]],$J=[0,a(a0),97,18,97,72,[0,a(bl),[0,a(a1),0]]],$K=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$I=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$D=[0,a(a0),93,18,93,67,[0,a(bl),[0,a(a1),0]]],$E=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$C=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$y=[0,a(a0),fX,14,fX,30,[0,a("Article L131-1"),[0,a(bl),[0,a(a1),0]]]],$v=[0,0],$w=[1,0],$x=[2,0],$z=[0,a(a0),76,11,76,27,[0,a(bl),[0,a(a1),0]]],$u=[0,a(a0),76,11,76,27,[0,a(bl),[0,a(a1),0]]],$A=[0,a(ef),[0,a("enfants_\xc3\xa0_charge"),0]],$F=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$G=[0,a(ef),[0,a("allocations_familiales.personne_charge_effective_permanente_est_parent"),0]],$B=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$L=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$M=[0,a(ef),[0,a("allocations_familiales.personne_charge_effective_permanente_remplit_titre_I"),0]],$H=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$P=[0,a(a0),88,14,88,54,[0,a(bl),[0,a(a1),0]]],$Q=[0,a(ef),[0,a("allocations_familiales.ressources_m\xc3\xa9nage"),0]],$N=[0,a(a0),88,14,88,54,[0,a(bl),[0,a(a1),0]]],$T=[0,a(a0),89,14,89,46,[0,a(bl),[0,a(a1),0]]],$U=[0,a(ef),[0,a("allocations_familiales.r\xc3\xa9sidence"),0]],$R=[0,a(a0),89,14,89,46,[0,a(bl),[0,a(a1),0]]],$X=[0,a(a0),86,14,86,50,[0,a(bl),[0,a(a1),0]]],$Y=[0,a(ef),[0,a("allocations_familiales.date_courante"),0]],$V=[0,a(a0),86,14,86,50,[0,a(bl),[0,a(a1),0]]],$1=[0,a(a0),87,14,87,53,[0,a(bl),[0,a(a1),0]]],$2=[0,a(ef),[0,a("allocations_familiales.enfants_\xc3\xa0_charge"),0]],$Z=[0,a(a0),87,14,87,53,[0,a(bl),[0,a(a1),0]]],$7=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],$8=[0,a(ef),[0,a("allocations_familiales.avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012"),0]],$3=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],$9=[0,a(ef),[0,a(vE),[0,a(U),0]]],$_=[0,a(ef),[0,a(vE),[0,a(U),0]]],aab=[0,a(a0),80,12,80,27,[0,a(bl),[0,a(a1),0]]],$$=[0,a(a0),80,12,80,27,[0,a(bl),[0,a(a1),0]]],aac=[0,a(ef),[0,a("i_montant_vers\xc3\xa9"),0]],$o=[0,a(a0),45,14,45,27,[0,a(eO),[0,a(a1),0]]],$n=a(p),$j=[0,a(br),DQ,14,DQ,62,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],$e=[0,a(U),[0,a(kT),[0,a(ac),0]]],$f=[0,a(U),[0,a(kT),0]],$g=[0,a(U),[0,a(kT),[0,a(ae),0]]],$h=[0,a(U),[0,a(kT),0]],$i=a(p),$a=[0,a(br),on,14,on,61,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],_8=[0,a(a0),39,14,39,38,[0,a(eO),[0,a(a1),0]]],_2=[0,a(U),[0,a(j$),[0,a(ac),0]]],_3=[0,a(U),[0,a(j$),0]],_4=[0,a(U),[0,a(j$),[0,a(ae),0]]],_5=[0,a(U),[0,a(j$),0]],_6=a(p),_7=a(p),_Y=[0,a(a0),37,14,37,32,[0,a(eO),[0,a(a1),0]]],_X=a(p),_T=[0,a(dU),hZ,5,hZ,43,[0,a("Article R521-4"),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c5),[0,a(af),0]]]]]]],_I=[0,a(U),[0,a(fo),[0,a(ac),0]]],_J=[0,a(U),[0,a(fo),0]],_K=[0,a(U),[0,a(fo),[0,a(ae),0]]],_L=[0,a(U),[0,a(fo),0]],_M=a(et),_R=a(kd),_S=a(b5),_N=[0,a(U),[0,a(j4),[0,a(ac),0]]],_O=[0,a(U),[0,a(j4),0]],_P=[0,a(U),[0,a(j4),[0,a(ae),0]]],_Q=[0,a(U),[0,a(j4),0]],_U=[0,a(I),ei,11,ei,49,[0,a(J),[0,a(H),[0,a(B),0]]]],_H=[0,a(I),ei,11,ei,49,[0,a(J),[0,a(H),[0,a(B),0]]]],_E=[0,a(dU),cs,14,cs,46,[0,a(oU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c5),[0,a(af),0]]]]]]],_x=a(cI),_y=[0,a(br),268,5,qP,41,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],_u=a(cI),_v=a(et),_w=a(cI),_z=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_r=a(cI),_s=[0,a(br),Aw,5,280,40,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],_o=a(cI),_p=a(et),_q=a(cI),_t=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_A=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_n=[0,a(br),hS,14,hS,55,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],_m=a(p),_b=a(z),_c=[0,a(U),[0,a(bH),[0,a(ac),0]]],_d=[0,a(U),[0,a(bH),0]],_e=[0,a(U),[0,a(bH),[0,a(ae),0]]],_f=[0,a(U),[0,a(bH),0]],_g=[0,a(br),gL,5,rr,55,[0,a(kn),[0,a(eX),[0,a(gK),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],_a=a("0.0369"),_h=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],Z5=a(z),Z6=[0,a(U),[0,a(bH),[0,a(ac),0]]],Z7=[0,a(U),[0,a(bH),0]],Z8=[0,a(U),[0,a(bH),[0,a(ae),0]]],Z9=[0,a(U),[0,a(bH),0]],Z_=[0,a(br),389,5,392,56,[0,a(kn),[0,a(eX),[0,a(gK),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],Z4=a("0.0567"),Z$=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],_i=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],Z3=[0,a(br),22,14,22,40,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],ZZ=[0,a(U),[0,a(ka),[0,a(ac),0]]],Z0=[0,a(U),[0,a(ka),0]],Z1=[0,a(U),[0,a(ka),[0,a(ae),0]]],Z2=[0,a(U),[0,a(ka),0]],_j=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],ZY=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],ZS=a(z),ZT=[0,a(br),356,5,yV,69,[0,a(kn),[0,a(eX),[0,a(gK),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],ZU=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZP=[8,0],ZQ=[0,a(aW),u6,24,u6,44,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],ZR=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZV=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZO=[0,a(br),18,14,18,34,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],ZK=[0,a(br),yf,14,yf,39,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],ZG=[0,a(U),[0,a(kg),[0,a(ac),0]]],ZH=[0,a(U),[0,a(kg),0]],ZI=[0,a(U),[0,a(kg),[0,a(ae),0]]],ZJ=[0,a(U),[0,a(kg),0]],Zx=[0,a(U),[0,a(bH),[0,a(ac),0]]],Zy=[0,a(U),[0,a(bH),0]],Zz=[0,a(U),[0,a(bH),[0,a(ae),0]]],ZA=[0,a(U),[0,a(bH),0]],ZB=[0,a(br),60,5,60,38,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Zw=a(rv),ZC=[0,a(I),dl,11,dl,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Zq=[0,a(U),[0,a(bH),[0,a(ac),0]]],Zr=[0,a(U),[0,a(bH),0]],Zs=[0,a(U),[0,a(bH),[0,a(ae),0]]],Zt=[0,a(U),[0,a(bH),0]],Zu=[0,a(br),fO,5,fO,38,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Zp=a(Cp),Zv=[0,a(I),dl,11,dl,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Zj=[0,a(U),[0,a(bH),[0,a(ac),0]]],Zk=[0,a(U),[0,a(bH),0]],Zl=[0,a(U),[0,a(bH),[0,a(ae),0]]],Zm=[0,a(U),[0,a(bH),0]],Zn=[0,a(br),Eu,5,Eu,38,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Zi=a(CC),Zo=[0,a(I),dl,11,dl,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Zc=[0,a(U),[0,a(bH),[0,a(ac),0]]],Zd=[0,a(U),[0,a(bH),0]],Ze=[0,a(U),[0,a(bH),[0,a(ae),0]]],Zf=[0,a(U),[0,a(bH),0]],Zg=[0,a(a0),28,5,28,44,[0,a(eO),[0,a(a1),0]]],Zb=a(p),Zh=[0,a(I),dl,11,dl,47,[0,a(J),[0,a(H),[0,a(B),0]]]],ZD=[0,a(I),dl,11,dl,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Za=[0,a(I),dl,11,dl,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Y9=[0,a(dU),ei,14,ei,41,[0,a(oU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c5),[0,a(af),0]]]]]]],Y7=a(b5),Y8=a(b5),YZ=[8,0],Y0=[0,a(aW),FJ,5,FJ,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],YW=a(z),YX=a(v$),YY=a(p),Y1=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YT=[8,0],YU=[0,a(aW),F_,5,F_,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],YQ=a(z),YR=a("0.2379"),YS=a(p),YV=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YN=[8,0],YO=[0,a(aW),fi,5,fi,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],YK=a(z),YL=a("0.2437"),YM=a(p),YP=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YH=[8,0],YI=[0,a(aW),zY,5,zY,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],YE=a(z),YF=a("0.2496"),YG=a(p),YJ=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YB=[8,0],YC=[0,a(aW),DT,5,DT,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Yy=a(z),Yz=a("0.2555"),YA=a(p),YD=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yv=[8,0],Yw=[0,a(aW),vc,5,vc,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Ys=a(z),Yt=a("0.2613"),Yu=a(p),Yx=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yp=[8,0],Yq=[0,a(aW),w_,5,w_,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Ym=a(z),Yn=a("0.2672"),Yo=a(p),Yr=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yj=[8,0],Yk=[0,a(aW),qT,5,qT,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Yg=a(z),Yh=a("0.2804"),Yi=a(p),Yl=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yd=[8,0],Ye=[0,a(aW),f2,5,f2,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Ya=a(z),Yb=a("0.2936"),Yc=a(p),Yf=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],X9=[8,0],X_=[0,a(aW),xq,5,xq,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],X6=a(z),X7=a("0.3068"),X8=a(p),X$=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Y2=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],X4=[8,0],X5=[0,a(aW),rA,14,rA,50,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],X1=a(z),X2=a(sn),X3=a(p),Y3=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XY=[0,a(br),38,14,38,50,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],XV=a(z),XW=a(sn),XX=a(p),XZ=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XT=[0,a(br),79,14,79,50,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],XQ=a(z),XR=a(rv),XS=a(p),XU=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XO=[0,a(br),fX,14,fX,50,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],XL=a(z),XM=a(Cp),XN=a(p),XP=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],X0=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XG=[0,a(br),43,14,43,59,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],XC=a(X),XD=a(X),XE=a("0.41"),XF=a(p),XH=[0,a(I),c3,11,c3,56,[0,a(J),[0,a(H),[0,a(B),0]]]],XA=[0,a(br),84,14,84,59,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xw=a(X),Xx=a(X),Xy=a("0.205"),Xz=a(p),XB=[0,a(I),c3,11,c3,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Xu=[0,a(br),gR,14,gR,59,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xq=a(X),Xr=a(X),Xs=a("0.1025"),Xt=a(p),Xv=[0,a(I),c3,11,c3,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Xl=[0,a(br),De,5,De,42,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xk=a("0.20234"),Xm=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xi=[0,a(br),rd,5,236,45,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xh=a("0.10117"),Xj=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xf=[0,a(br),zu,5,zu,42,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xe=a("0.05059"),Xg=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],W9=a(cI),W_=[0,a(br),qS,5,166,65,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],W6=a(cI),W7=a(et),W8=a(cI),W$=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],W3=a(cI),W4=[0,a(br),174,5,175,65,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],W0=a(cI),W1=a(et),W2=a(cI),W5=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],Xa=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],WZ=[0,a(br),jt,14,jt,34,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],WY=a(p),Xb=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],WX=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],WO=[0,a(U),[0,a(eP),[0,a(ac),0]]],WP=[0,a(U),[0,a(eP),0]],WQ=[0,a(U),[0,a(eP),[0,a(ae),0]]],WR=[0,a(U),[0,a(eP),0]],WS=[0,a(bP),h$,5,318,21,[0,a(Ac),[0,a(aN),[0,a(aP),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],WT=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WF=[0,a(U),[0,a(eP),[0,a(ac),0]]],WG=[0,a(U),[0,a(eP),0]],WH=[0,a(U),[0,a(eP),[0,a(ae),0]]],WI=[0,a(U),[0,a(eP),0]],WJ=[0,a(U),[0,a(kM),[0,a(ac),0]]],WK=[0,a(U),[0,a(kM),0]],WL=[0,a(U),[0,a(kM),[0,a(ae),0]]],WM=[0,a(U),[0,a(kM),0]],WN=[0,a(bP),fr,5,dy,21,[0,a(Ac),[0,a(aN),[0,a(aP),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],WU=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WE=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WV=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WD=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Wu=a(z),Wv=[8,0],Ww=[0,a(aW),fQ,6,fQ,71,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],Wx=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Ws=a(z),Wt=[0,a(bP),rZ,5,410,72,[0,a(rW),[0,a(eX),[0,a(ke),[0,a(d0),[0,a(aa),[0,a(af),0]]]]]]],Wy=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wz=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wq=a(X),Wr=[0,a(bP),fO,5,fO,70,[0,a(Gg),[0,a(aN),[0,a(aP),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],WA=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wp=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wh=[8,0],Wi=[0,a(aW),251,5,kb,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],We=a(p),Wf=a("0.145"),Wg=a(p),Wj=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Wb=[8,0],Wc=[0,a(aW),zO,5,261,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],V_=a(p),V$=a("0.1393"),Wa=a(p),Wd=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],V7=[8,0],V8=[0,a(aW),Ay,5,qP,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],V4=a(p),V5=a("0.1335"),V6=a(p),V9=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],V1=[8,0],V2=[0,a(aW),Aw,5,279,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],VY=a(p),VZ=a("0.1278"),V0=a(p),V3=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VV=[8,0],VW=[0,a(aW),287,5,288,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],VS=a(p),VT=a("0.122"),VU=a(p),VX=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VP=[8,0],VQ=[0,a(aW),d_,5,eh,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],VM=a(p),VN=a("0.1163"),VO=a(p),VR=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VJ=[8,0],VK=[0,a(aW),kX,5,306,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],VG=a(p),VH=a("0.1105"),VI=a(p),VL=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VD=[8,0],VE=[0,a(aW),dE,5,h$,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],VA=a(p),VB=a("0.0976"),VC=a(p),VF=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vx=[8,0],Vy=[0,a(aW),323,5,fq,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Vu=a(p),Vv=a("0.0847"),Vw=a(p),Vz=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vr=[8,0],Vs=[0,a(aW),u4,5,333,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Vo=a(p),Vp=a("0.0717"),Vq=a(p),Vt=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vl=[8,0],Vm=[0,a(aW),nc,5,nc,49,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Vi=a(p),Vj=a("5728"),Vk=a(p),Vn=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Wk=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vg=[8,0],Vh=[0,a(aW),nU,14,nU,49,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],Vd=a(p),Ve=a(wk),Vf=a(p),Wl=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Va=a(z),Vb=[0,a(br),di,5,fi,71,[0,a(kn),[0,a(eX),[0,a(gK),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],U$=a(wk),Vc=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],U_=[0,a(br),rJ,29,rJ,64,[0,a(kn),[0,a(eX),[0,a(gK),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],U9=a(p),U5=[0,a(dU),mA,14,mA,34,[0,a(oU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c5),[0,a(af),0]]]]]]],UX=[0,a(U),[0,a(fo),[0,a(ac),0]]],UY=[0,a(U),[0,a(fo),0]],UZ=[0,a(U),[0,a(fo),[0,a(ae),0]]],U0=[0,a(U),[0,a(fo),0]],U1=a(et),U2=a(kd),U3=a(b5),U4=a(b5),UT=[0,a(dU),CB,14,CB,34,[0,a(oU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c5),[0,a(af),0]]]]]]],UM=[8,0],UN=[0,a(aW),hk,5,hk,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],UJ=a(X),UK=a(Cx),UL=a(p),UO=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],UG=[8,0],UH=[0,a(aW),CM,5,CM,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],UD=a(X),UE=a("0.0539"),UF=a(p),UI=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],UA=[8,0],UB=[0,a(aW),yq,5,yq,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Ux=a(X),Uy=a("0.0615"),Uz=a(p),UC=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Uu=[8,0],Uv=[0,a(aW),ex,5,ex,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Ur=a(X),Us=a("0.069"),Ut=a(p),Uw=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Uo=[8,0],Up=[0,a(aW),CA,5,CA,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Ul=a(X),Um=a("0.0766"),Un=a(p),Uq=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Ui=[8,0],Uj=[0,a(aW),fT,5,fT,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Uf=a(X),Ug=a("0.0842"),Uh=a(p),Uk=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Uc=[8,0],Ud=[0,a(aW),wC,5,wC,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],T$=a(X),Ua=a("0.0918"),Ub=a(p),Ue=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],T8=[8,0],T9=[0,a(aW),v0,5,v0,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],T5=a(X),T6=a("0.1089"),T7=a(p),T_=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],T2=[8,0],T3=[0,a(aW),jf,5,jf,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],TZ=a(X),T0=a("0.1259"),T1=a(p),T4=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],TW=[8,0],TX=[0,a(aW),f5,5,f5,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],TT=a(X),TU=a("0.143"),TV=a(p),TY=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],UP=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],TS=[0,a(aW),hZ,14,hZ,59,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],TP=a(X),TQ=a(rv),TR=a(p),TL=[0,a(aW),iM,14,iM,67,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],TH=a(_),TI=a(_),TJ=a(Cx),TK=a(p),TA=a(z),TB=[0,a(bP),423,6,ru,72,[0,a(rW),[0,a(eX),[0,a(ke),[0,a(d0),[0,a(aa),[0,a(af),0]]]]]]],TC=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],Tv=[0,a(co),[0,a(iU),[0,a(ac),0]]],Tw=[0,a(co),[0,a(iU),0]],Tx=[0,a(co),[0,a(iU),[0,a(ae),0]]],Ty=[0,a(co),[0,a(iU),0]],Tz=[0,a(bP),rP,5,dl,59,[0,a(Gg),[0,a(aN),[0,a(aP),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],TD=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],Tu=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],TE=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],Tt=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],Tn=a(z),To=[0,a(bP),gy,5,430,71,[0,a(rW),[0,a(eX),[0,a(ke),[0,a(d0),[0,a(aa),[0,a(af),0]]]]]]],Tp=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Tm=[0,a(a0),31,9,31,32,[0,a(eO),[0,a(a1),0]]],Tq=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Tl=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Tf=[0,a(aW),23,5,23,67,[0,a(F3),[0,a(f9),0]]],Td=a(EO),Te=a("5628600"),Tg=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],Tb=[0,a(aW),56,5,56,67,[0,a(vf),[0,a(f9),0]]],S$=a(FK),Ta=a("5684900"),Tc=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],S9=[0,a(aW),89,5,89,67,[0,a(wI),[0,a(f9),0]]],S7=a(EW),S8=a("5775900"),S_=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],S5=[0,a(aW),bp,5,bp,67,[0,a(b6),[0,a(C8),[0,a(f9),0]]]],S3=a(wm),S4=a("5827900"),S6=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],Th=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],S2=[0,a(br),Ew,14,Ew,30,[0,a(DB),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],S0=a(AR),S1=a("5595000"),SU=[0,a(aW),30,5,30,67,[0,a(F3),[0,a(f9),0]]],SS=a(EO),ST=a("7877000"),SV=[0,a(I),dk,11,dk,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SQ=[0,a(aW),63,5,63,67,[0,a(vf),[0,a(f9),0]]],SO=a(FK),SP=a("7955800"),SR=[0,a(I),dk,11,dk,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SM=[0,a(aW),96,5,96,67,[0,a(wI),[0,a(f9),0]]],SK=a(EW),SL=a("8083100"),SN=[0,a(I),dk,11,dk,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SI=[0,a(aW),dW,5,dW,67,[0,a(b6),[0,a(C8),[0,a(f9),0]]]],SG=a(wm),SH=a("8155800"),SJ=[0,a(I),dk,11,dk,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SW=[0,a(I),dk,11,dk,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SF=[0,a(br),dE,14,dE,31,[0,a(DB),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],SD=a(AR),SE=a("7830000"),Sz=[0,a(a0),34,14,34,36,[0,a(eO),[0,a(a1),0]]],SA=[0,a(I),nH,11,nH,33,[0,a(J),[0,a(H),[0,a(B),0]]]],Sy=[0,a(I),nH,11,nH,33,[0,a(J),[0,a(H),[0,a(B),0]]]],Sv=[0,a(bP),75,14,75,64,[0,a(gC),[0,a(gz),[0,a(ed),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],Sr=[0,a(co),[0,a(dg),[0,a(ac),0]]],Ss=[0,a(co),[0,a(dg),0]],St=[0,a(co),[0,a(dg),[0,a(ae),0]]],Su=[0,a(co),[0,a(dg),0]],Sm=[0,a(dU),83,19,83,67,[0,a(nJ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c5),[0,a(af),0]]]]]]],Sn=[0,a(I),eY,11,eY,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Sl=[0,a(dU),56,14,56,41,[0,a(nJ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c5),[0,a(af),0]]]]]]],So=[0,a(I),eY,11,eY,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Sk=[0,a(I),eY,11,eY,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Sf=[0,a(a0),33,14,33,40,[0,a(eO),[0,a(a1),0]]],R$=[0,a(I),fE,14,fE,46,[0,a(J),[0,a(H),[0,a(B),0]]]],R7=[0,a(I),ge,14,ge,56,[0,a(J),[0,a(H),[0,a(B),0]]]],R6=[1,0],R2=[0,a(I),fL,14,fL,50,[0,a(J),[0,a(H),[0,a(B),0]]]],RW=[0,a(I),fQ,14,fQ,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RQ=[0,a(dU),64,14,64,44,[0,a(nJ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c5),[0,a(af),0]]]]]]],RP=a(_),RL=[0,a(br),dh,14,dh,35,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],RK=a(_),RF=[0,a(bP),rj,5,zO,56,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],RE=[1,0],RG=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Rz=[0,a(bP),qP,5,271,48,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],Ry=[0,0],RA=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Rx=[0,a(bP),FI,5,FI,70,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],Rw=[0,0],RB=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Rv=[0,a(bP),C4,5,C4,69,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],Ru=[0,0],RC=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Rt=[0,a(bP),on,5,on,60,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],Rs=[0,0],RD=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],RH=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Rr=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Rn=[0,a(bP),nW,5,nW,70,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],Rm=[1,0],Ro=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rk=[0,a(bP),j_,5,m2,56,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],Rj=[2,0],Rl=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rf=[0,a(bP),264,5,rn,48,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],Re=[0,0],Rg=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rd=[0,a(bP),yk,5,yk,69,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],Rc=[0,0],Rh=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rb=[0,a(bP),Ag,5,Ag,60,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],Ra=[0,0],Ri=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rp=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Q$=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rq=[0,a(U),[0,a(fo),0]],RI=[0,a(U),[0,a("versement"),0]],RM=[0,a(I),ok,11,ok,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RJ=[0,a(I),ok,11,ok,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RN=[0,a(U),[0,a("nombre_enfants_l521_1"),0]],RR=[0,a(I),od,11,od,41,[0,a(J),[0,a(H),[0,a(B),0]]]],RO=[0,a(I),od,11,od,41,[0,a(J),[0,a(H),[0,a(B),0]]]],RS=[0,a(U),[0,a("nombre_enfants_alin\xc3\xa9a_2_l521_3"),0]],RT=[0,a(U),[0,a(wR),[0,a(q8),0]]],RU=[0,a(U),[0,a(wR),[0,a(q8),0]]],RX=[0,a(I),fQ,14,fQ,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RY=[0,a(U),[0,a("bmaf.date_courante"),0]],RV=[0,a(I),fQ,14,fQ,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RZ=[0,a(U),[0,a(A6),[0,a(f_),0]]],R0=[0,a(U),[0,a(A6),[0,a(f_),0]]],R3=[0,a(I),fL,14,fL,50,[0,a(J),[0,a(H),[0,a(B),0]]]],R4=[0,a(U),[0,a(xa),0]],R1=[0,a(I),fL,14,fL,50,[0,a(J),[0,a(H),[0,a(B),0]]]],R8=[0,a(I),ge,14,ge,56,[0,a(J),[0,a(H),[0,a(B),0]]]],R9=[0,a(U),[0,a(Bv),0]],R5=[0,a(I),ge,14,ge,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Sa=[0,a(I),fE,14,fE,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Sb=[0,a(U),[0,a(y2),0]],R_=[0,a(I),fE,14,fE,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Sc=[0,a(U),[0,a(oN),[0,a(co),0]]],Sd=[0,a(U),[0,a(oN),[0,a(co),0]]],Sg=[0,a(a0),33,14,33,40,[0,a(eO),[0,a(a1),0]]],Sh=[0,a(U),[0,a("enfant_le_plus_\xc3\xa2g\xc3\xa9.enfants"),0]],Se=[0,a(a0),33,14,33,40,[0,a(eO),[0,a(a1),0]]],Si=[0,a(U),[0,a(Dk),[0,a(ri),0]]],Sj=[0,a(U),[0,a(Dk),[0,a(ri),0]]],Sp=[0,a(U),[0,a(eP),0]],Sw=[0,a(I),95,11,95,61,[0,a(J),[0,a(H),[0,a(B),0]]]],Sq=[0,a(I),95,11,95,61,[0,a(J),[0,a(H),[0,a(B),0]]]],Sx=[0,a(U),[0,a("enfants_\xc3\xa0_charge_droit_ouvert_prestation_familiale"),0]],SB=[0,a(U),[0,a(kM),0]],SX=[0,a(I),dk,11,dk,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SC=[0,a(I),dk,11,dk,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SY=[0,a(U),[0,a("plafond_II_d521_3"),0]],Ti=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],SZ=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],Tj=[0,a(U),[0,a("plafond_I_d521_3"),0]],Tr=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Tk=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Ts=[0,a(U),[0,a("droit_ouvert_compl\xc3\xa9ment"),0]],TF=[0,a(U),[0,a(kg),0]],TM=[0,a(I),fX,11,fX,64,[0,a(J),[0,a(H),[0,a(B),0]]]],TG=[0,a(I),fX,11,fX,64,[0,a(J),[0,a(H),[0,a(B),0]]]],TN=[0,a(U),[0,a("montant_initial_base_quatri\xc3\xa8me_enfant_et_plus_mayotte"),0]],UQ=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],TO=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],UR=[0,a(U),[0,a("montant_initial_base_troisi\xc3\xa8me_enfant_mayotte"),0]],UU=[0,a(I),ic,11,ic,31,[0,a(J),[0,a(H),[0,a(B),0]]]],US=[0,a(I),ic,11,ic,31,[0,a(J),[0,a(H),[0,a(B),0]]]],UV=[0,a(U),[0,a("nombre_total_enfants"),0]],U6=[0,a(I),nZ,11,nZ,31,[0,a(J),[0,a(H),[0,a(B),0]]]],UW=[0,a(I),nZ,11,nZ,31,[0,a(J),[0,a(H),[0,a(B),0]]]],U7=[0,a(U),[0,a("nombre_moyen_enfants"),0]],Wm=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],U8=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Wn=[0,a(U),[0,a("montant_initial_base_premier_enfant"),0]],WB=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wo=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],WC=[0,a(U),[0,a("droit_ouvert_base"),0]],WW=[0,a(U),[0,a(bH),0]],Xc=[0,a(U),[0,a(kT),0]],Xn=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xd=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xo=[0,a(U),[0,a("montant_vers\xc3\xa9_forfaitaire_par_enfant"),0]],XI=[0,a(I),c3,11,c3,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Xp=[0,a(I),c3,11,c3,56,[0,a(J),[0,a(H),[0,a(B),0]]]],XJ=[0,a(U),[0,a("montant_initial_base_troisi\xc3\xa8me_enfant_et_plus"),0]],Y4=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XK=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Y5=[0,a(U),[0,a("montant_initial_base_deuxi\xc3\xa8me_enfant"),0]],Y_=[0,a(I),mI,11,mI,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Y6=[0,a(I),mI,11,mI,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Y$=[0,a(U),[0,a("rapport_enfants_total_moyen"),0]],ZE=[0,a(U),[0,a(ka),0]],ZL=[0,a(I),gR,11,gR,36,[0,a(J),[0,a(H),[0,a(B),0]]]],ZF=[0,a(I),gR,11,gR,36,[0,a(J),[0,a(H),[0,a(B),0]]]],ZM=[0,a(U),[0,a("montant_vers\xc3\xa9_forfaitaire"),0]],ZW=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZN=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZX=[0,a(U),[0,a("montant_initial_base"),0]],_k=[0,a(U),[0,a(j4),0]],_B=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_l=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_C=[0,a(U),[0,a("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_forfaitaire"),0]],_F=[0,a(I),kW,11,kW,43,[0,a(J),[0,a(H),[0,a(B),0]]]],_D=[0,a(I),kW,11,kW,43,[0,a(J),[0,a(H),[0,a(B),0]]]],_G=[0,a(U),[0,a("montant_avec_garde_altern\xc3\xa9e_base"),0]],_V=[0,a(U),[0,a(j$),0]],_Z=[0,a(I),kV,11,kV,29,[0,a(J),[0,a(H),[0,a(B),0]]]],_W=[0,a(I),kV,11,kV,29,[0,a(J),[0,a(H),[0,a(B),0]]]],_0=[0,a(U),[0,a("montant_vers\xc3\xa9_base"),0]],_9=[0,a(I),iu,11,iu,35,[0,a(J),[0,a(H),[0,a(B),0]]]],_1=[0,a(I),iu,11,iu,35,[0,a(J),[0,a(H),[0,a(B),0]]]],__=[0,a(U),[0,a("montant_vers\xc3\xa9_majoration"),0]],$b=[0,a(I),m_,11,m_,58,[0,a(J),[0,a(H),[0,a(B),0]]]],_$=[0,a(I),m_,11,m_,58,[0,a(J),[0,a(H),[0,a(B),0]]]],$c=[0,a(U),[0,a("montant_base_compl\xc3\xa9ment_pour_base_et_majoration"),0]],$k=[0,a(I),mz,11,mz,59,[0,a(J),[0,a(H),[0,a(B),0]]]],$d=[0,a(I),mz,11,mz,59,[0,a(J),[0,a(H),[0,a(B),0]]]],$l=[0,a(U),[0,a("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_base_et_majoration"),0]],$p=[0,a(I),cd,12,cd,25,[0,a(J),[0,a(H),[0,a(B),0]]]],$m=[0,a(I),cd,12,cd,25,[0,a(J),[0,a(H),[0,a(B),0]]]],$q=[0,a(U),[0,a("montant_vers\xc3\xa9"),0]],$r=[0,a(bP),xc,5,rd,6,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],$s=[0,a(bP),xc,5,rd,6,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],Q6=[0,a("examples/allocations_familiales/autres_codes.catala_fr"),24,5,24,63,[0,a("Article L821-3"),[0,a(z7),[0,a(E0),[0,a(yt),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]]]],Q7=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q2=[0,a(bP),60,5,62,62,[0,a(gC),[0,a(gz),[0,a(ed),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],Q3=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q1=[0,a(bP),49,5,50,50,[0,a(gC),[0,a(gz),[0,a(ed),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],Q4=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q5=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q8=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q0=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q9=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],QZ=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],QV=[0,a(bP),68,5,71,56,[0,a(gC),[0,a(gz),[0,a(ed),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],QW=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],QU=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],QX=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],QT=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],QP=[0,a(dU),nW,18,nW,41,[0,a(xK),[0,a(eX),[0,a(gK),[0,a(d0),[0,a(c5),[0,a(af),0]]]]]]],QN=a(oR),QO=a(n0),QQ=[0,a(I),59,11,59,27,[0,a(bE),[0,a(H),[0,a(B),0]]]],QM=[0,a(dU),31,14,31,30,[0,a(lW),[0,a(nR),[0,a(ed),[0,a(az),[0,a(c5),[0,a(af),0]]]]]]],QK=a(oR),QL=a(n0),Qz=[5,0],QA=[4,0],QB=[3,0],QC=[2,0],QD=[1,0],QE=[0,0],QF=[0,a(bP),yV,5,rJ,30,[0,a(CP),[0,a(yD),[0,a(ke),[0,a(d0),[0,a(aa),[0,a(af),0]]]]]]],QG=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qy=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qs=[0,a(I),68,14,68,28,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qo=[0,a(I),69,14,69,32,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qk=[0,a(dU),21,14,21,26,[0,a(lW),[0,a(nR),[0,a(ed),[0,a(az),[0,a(c5),[0,a(af),0]]]]]]],Ql=[0,a(I),60,12,60,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qj=[0,a(I),60,12,60,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qm=[0,a(co),[0,a(za),0]],Qp=[0,a(I),69,14,69,32,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qq=[0,a(co),[0,a(Fa),0]],Qn=[0,a(I),69,14,69,32,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qt=[0,a(I),68,14,68,28,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qu=[0,a(co),[0,a(DH),0]],Qr=[0,a(I),68,14,68,28,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qv=[0,a(co),[0,a(gd),[0,a(hl),0]]],Qw=[0,a(co),[0,a(gd),[0,a(hl),0]]],QH=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qx=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],QI=[0,a(co),[0,a(vg),0]],QR=[0,a(I),59,11,59,27,[0,a(bE),[0,a(H),[0,a(B),0]]]],QJ=[0,a(I),59,11,59,27,[0,a(bE),[0,a(H),[0,a(B),0]]]],QS=[0,a(co),[0,a(Aj),0]],QY=[0,a(co),[0,a(iU),0]],Q_=[0,a(co),[0,a(dg),0]],Qf=[0,a(eC),28,5,29,33,[0,a(Cv),[0,a(cf),0]]],Qe=a(xS),Qg=[0,a(eC),6,12,6,19,[0,a(cf),0]],Qc=[0,a(eC),48,5,49,33,[0,a(AK),[0,a(cf),0]]],Qb=a(xo),Qd=[0,a(eC),6,12,6,19,[0,a(cf),0]],P$=[0,a(eC),64,5,65,33,[0,a(Ch),[0,a(cf),0]]],P_=a(B4),Qa=[0,a(eC),6,12,6,19,[0,a(cf),0]],P8=[0,a(eC),82,5,83,33,[0,a(wT),[0,a(cf),0]]],P7=a(BY),P9=[0,a(eC),6,12,6,19,[0,a(cf),0]],Qh=[0,a(eC),6,12,6,19,[0,a(cf),0]],P6=[0,a(eC),6,12,6,19,[0,a(cf),0]],Qi=[0,a(f_),[0,a(bQ),0]],PU=[7,0],PV=[5,0],PW=[4,0],PX=[3,0],PY=[2,0],PZ=[1,0],P0=[0,0],P1=[6,0],P2=[0,a(bu),29,5,38,6,[0,a(b6),[0,a(lV),[0,a(aC),0]]]],PT=a(wM),P3=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],PQ=[8,0],PR=[0,a(bu),47,5,49,6,[0,a(b6),[0,a(lV),[0,a(aC),0]]]],PP=a(xO),PS=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],PF=[7,0],PG=[5,0],PH=[4,0],PI=[3,0],PJ=[2,0],PK=[1,0],PL=[0,0],PM=[6,0],PN=[0,a(bu),68,5,77,6,[0,a(b6),[0,a(nO),[0,a(aC),0]]]],PE=a(AS),PO=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],PB=[8,0],PC=[0,a(bu),86,5,88,6,[0,a(b6),[0,a(nO),[0,a(aC),0]]]],PA=a(u9),PD=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Pq=[7,0],Pr=[5,0],Ps=[4,0],Pt=[3,0],Pu=[2,0],Pv=[1,0],Pw=[0,0],Px=[6,0],Py=[0,a(bu),c3,5,bp,6,[0,a(b6),[0,a(lY),[0,a(aC),0]]]],Pp=a(BA),Pz=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Pm=[8,0],Pn=[0,a(bu),cs,5,cQ,6,[0,a(b6),[0,a(lY),[0,a(aC),0]]]],Pl=a(ED),Po=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Pb=[7,0],Pc=[5,0],Pd=[4,0],Pe=[3,0],Pf=[2,0],Pg=[1,0],Ph=[0,0],Pi=[6,0],Pj=[0,a(bu),eY,5,fL,6,[0,a(b6),[0,a(no),[0,a(aC),0]]]],Pa=a(BQ),Pk=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],O9=[8,0],O_=[0,a(bu),qS,5,nU,6,[0,a(b6),[0,a(no),[0,a(aC),0]]]],O8=a(wZ),O$=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OY=[7,0],OZ=[5,0],O0=[4,0],O1=[3,0],O2=[2,0],O3=[1,0],O4=[0,0],O5=[6,0],O6=[0,a(bu),hZ,5,iM,6,[0,a(fW),[0,a(mN),[0,a(aC),0]]]],OX=a(zR),O7=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OU=[8,0],OV=[0,a(bu),w4,5,yF,6,[0,a(fW),[0,a(mN),[0,a(aC),0]]]],OT=a(EC),OW=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OJ=[7,0],OK=[5,0],OL=[4,0],OM=[3,0],ON=[2,0],OO=[1,0],OP=[0,0],OQ=[6,0],OR=[0,a(bu),vG,5,E3,6,[0,a(fW),[0,a(op),[0,a(aC),0]]]],OI=a(Eo),OS=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OF=[8,0],OG=[0,a(bu),E_,5,vC,6,[0,a(fW),[0,a(op),[0,a(aC),0]]]],OE=a(Fl),OH=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Ou=[7,0],Ov=[5,0],Ow=[4,0],Ox=[3,0],Oy=[2,0],Oz=[1,0],OA=[0,0],OB=[6,0],OC=[0,a(bu),rn,5,nT,6,[0,a(b6),[0,a(m$),[0,a(aC),0]]]],Ot=a(v6),OD=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Oq=[8,0],Or=[0,a(bu),Be,5,nl,6,[0,a(b6),[0,a(m$),[0,a(aC),0]]]],Op=a(zQ),Os=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],P4=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Oo=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],P5=[0,a(hl),[0,a(z9),0]],Ol=[0,a(a0),12,14,12,25,[0,a(eO),[0,a(a1),0]]],Oh=[2,0],Oi=a(p),Oj=[1,0],Ok=a("-1"),Om=[0,a(I),80,12,80,23,[0,a(J),[0,a(H),[0,a(B),0]]]],Og=[0,a(I),80,12,80,23,[0,a(J),[0,a(H),[0,a(B),0]]]],On=[0,a(ri),[0,a("le_plus_\xc3\xa2g\xc3\xa9"),0]],Od=[0,a(dU),78,14,78,41,[0,a(nJ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c5),[0,a(af),0]]]]]]],Oe=[0,a(I),76,12,76,39,[0,a(J),[0,a(H),[0,a(B),0]]]],Oc=[0,a(I),76,12,76,39,[0,a(J),[0,a(H),[0,a(B),0]]]],Of=[0,a(q8),[0,a(eP),0]],N6=a(qG),N7=a(qV),N8=a(EY),N9=a(q0),N_=a(q1),N$=a(rC),Oa=a(rt),Ob=[0,a("Enfant"),0],NW=a(my),NY=a(oy),NZ=a(mb),N0=a(Ds),N1=a(yW),N2=a(o8),N3=a(C5),N4=a(nr),N5=a(oK),NX=[0,a(BZ),0],NN=a(om),NP=a(U),NQ=a(qU),NR=a(nY),NS=a(DS),NT=a(i0),NU=a(BW),NV=a(y1),NO=[0,a(FR),0],NI=a("Compl\xc3\xa8te"),NK=a("Partag\xc3\xa9e"),NL=a("Z\xc3\xa9ro"),NJ=[0,a("PriseEnCompte"),0],NE=a(ku),NG=a(kh),NH=a(Co),NF=[0,a(CW),0],Ny=a(A_),NA=a(D4),NB=a(j7),NC=a(Ft),ND=a(yN),Nz=[0,a("PriseEnCharge"),0],abc=a($),aaO=a(my),aaP=a(oy),aaQ=a(wt),aaR=a(mb),aaS=a(oK),aaT=a(Fn),aaU=a(xi),aaV=a(o8),aaW=a(nr),aaY=[7,0],aaZ=[5,0],aa0=[4,0],aa1=[6,0],aa2=[8,0],aa3=[2,0],aa4=[3,0],aa5=[1,0],aa6=[0,0],aaX=[0,[11,a(bg),[2,0,[11,a(BU),0]]],a(wN)],aax=a(vY),aay=a(ye),aaz=a(nY),aaA=a(Ez),aaB=a(i0),aaC=a(U),aaD=a(qv),aaE=a(om),aaG=[0,0],aaH=[2,0],aaI=[1,0],aaJ=[5,0],aaK=[6,0],aaL=[3,0],aaM=[7,0],aaN=[4,0],aaF=[0,[11,a(bg),[2,0,[11,a(D5),0]]],a(FT)],aaq=a(r1),aar=a(ku),aas=a(kh),aau=[1,0],aav=[0,0],aaw=[2,0],aat=[0,[11,a(bg),[2,0,[11,a(x8),0]]],a(wx)],aaf=a(j7),aag=a(q_),aah=a(qO),aai=a(rq),aaj=a(qL),aal=[4,0],aam=[3,0],aan=[0,0],aao=[1,0],aap=[2,0],aak=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PriseEnCharge.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PriseEnCharge.t'")],aad=[0,a(Cg),a(o2),a(gd),a(DC),a(FO),a(v3),a(xl)],aae=[0,a(gd),a(v3),a(FO),a(xl),a(o2),a(Cg),a(DC)],abk=a("AllocationsFamilialesLib"),bt2=[0,a(fc),zU,14,zU,25,[0,a("Conseil d'\xc3\x89tat, 5\xc3\xa8me - 4\xc3\xa8me chambres r\xc3\xa9unies, 21/07/2017, 398563"),0]],btV=a(p),btW=a(p),bt1=a(b5),btX=[0,a(a6),[0,a(aw),[0,a(ac),0]]],btY=[0,a(a6),[0,a(aw),0]],btZ=[0,a(a6),[0,a(aw),[0,a(ae),0]]],bt0=[0,a(a6),[0,a(aw),0]],btR=[0,a(d),xz,14,xz,63,[0,a(bf),[0,a(e),0]]],btN=[0,a(d),vX,14,vX,25,[0,a(bf),[0,a(e),0]]],btH=[0,a(d),iI,5,iI,70,[0,a(bf),[0,a(e),0]]],btD=[0,a(d),hg,14,hg,58,[0,a(bf),[0,a(e),0]]],btz=[0,a(d),h3,14,h3,54,[0,a(bf),[0,a(e),0]]],btv=[0,a(d),fb,14,fb,51,[0,a(bf),[0,a(e),0]]],btp=[0,a(d),hf,14,hf,59,[0,a(bf),[0,a(e),0]]],btl=[0,a(d),ip,14,ip,38,[0,a(bf),[0,a(e),0]]],bth=[0,a(d),ie,14,ie,34,[0,a(bf),[0,a(e),0]]],btd=[0,a(d),im,14,im,31,[0,a(bf),[0,a(e),0]]],bs$=[0,a(d),AG,14,AG,48,[0,a(bf),[0,a(e),0]]],bta=[0,a(d),ks,11,ks,45,[0,a(bf),[0,a(e),0]]],bs_=[0,a(d),ks,11,ks,45,[0,a(bf),[0,a(e),0]]],btb=[0,a(cO),[0,a("m\xc3\xa9nage_sans_enfants_garde_altern\xc3\xa9e"),0]],bte=[0,a(d),im,14,im,31,[0,a(bf),[0,a(e),0]]],btf=[0,a(cO),[0,a("calculette.m\xc3\xa9nage"),0]],btc=[0,a(d),im,14,im,31,[0,a(bf),[0,a(e),0]]],bti=[0,a(d),ie,14,ie,34,[0,a(bf),[0,a(e),0]]],btj=[0,a(cO),[0,a("calculette.demandeur"),0]],btg=[0,a(d),ie,14,ie,34,[0,a(bf),[0,a(e),0]]],btm=[0,a(d),ip,14,ip,38,[0,a(bf),[0,a(e),0]]],btn=[0,a(cO),[0,a("calculette.date_courante"),0]],btk=[0,a(d),ip,14,ip,38,[0,a(bf),[0,a(e),0]]],btq=[0,a(d),hf,14,hf,59,[0,a(bf),[0,a(e),0]]],btr=[0,a(cO),[0,a("calculette.ressources_m\xc3\xa9nage_prises_en_compte"),0]],bto=[0,a(d),hf,14,hf,59,[0,a(bf),[0,a(e),0]]],bts=[0,a(cO),[0,a(D3),[0,a(a6),0]]],btt=[0,a(cO),[0,a(D3),[0,a(a6),0]]],btw=[0,a(d),fb,14,fb,51,[0,a(bf),[0,a(e),0]]],btx=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.m\xc3\xa9nage"),0]],btu=[0,a(d),fb,14,fb,51,[0,a(bf),[0,a(e),0]]],btA=[0,a(d),h3,14,h3,54,[0,a(bf),[0,a(e),0]]],btB=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.demandeur"),0]],bty=[0,a(d),h3,14,h3,54,[0,a(bf),[0,a(e),0]]],btE=[0,a(d),hg,14,hg,58,[0,a(bf),[0,a(e),0]]],btF=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.date_courante"),0]],btC=[0,a(d),hg,14,hg,58,[0,a(bf),[0,a(e),0]]],btI=[0,a(d),iI,5,iI,70,[0,a(bf),[0,a(e),0]]],btJ=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.ressources_m\xc3\xa9nage_prises_en_compte"),0]],btG=[0,a(d),iI,5,iI,70,[0,a(bf),[0,a(e),0]]],btK=[0,a(cO),[0,a(wS),[0,a(a6),0]]],btL=[0,a(cO),[0,a(wS),[0,a(a6),0]]],btO=[0,a(d),o1,12,o1,23,[0,a(bf),[0,a(e),0]]],btM=[0,a(d),o1,12,o1,23,[0,a(bf),[0,a(e),0]]],btP=[0,a(cO),[0,a(n$),0]],btS=[0,a(d),mq,11,mq,60,[0,a(bf),[0,a(e),0]]],btQ=[0,a(d),mq,11,mq,60,[0,a(bf),[0,a(e),0]]],btT=[0,a(cO),[0,a(kF),0]],bt3=[0,a(d),l$,12,l$,23,[0,a(bf),[0,a(e),0]]],btU=[0,a(d),l$,12,l$,23,[0,a(bf),[0,a(e),0]]],bt4=[0,a(cO),[0,a("aide_finale"),0]],bs6=[0,a(aG),gc,14,gc,33,[0,a(dw),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bsX=a(p),bsY=[0,a(cR),[0,a(aw),[0,a(ac),0]]],bsZ=[0,a(cR),[0,a(aw),0]],bs0=[0,a(cR),[0,a(aw),[0,a(ae),0]]],bs1=[0,a(cR),[0,a(aw),0]],bs2=[0,a(cS),[0,a(aw),[0,a(ac),0]]],bs3=[0,a(cS),[0,a(aw),0]],bs4=[0,a(cS),[0,a(aw),[0,a(ae),0]]],bs5=[0,a(cS),[0,a(aw),0]],bsT=[0,a(aG),f6,14,f6,36,[0,a(dw),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bsL=[0,a(cS),[0,a(aw),[0,a(ac),0]]],bsM=[0,a(cS),[0,a(aw),0]],bsN=[0,a(cS),[0,a(aw),[0,a(ae),0]]],bsO=[0,a(cS),[0,a(aw),0]],bsP=[0,a(cR),[0,a(aw),[0,a(ac),0]]],bsQ=[0,a(cR),[0,a(aw),0]],bsR=[0,a(cR),[0,a(aw),[0,a(ae),0]]],bsS=[0,a(cR),[0,a(aw),0]],bsU=[0,a(d),hX,12,hX,34,[0,a(ax),[0,a(e),0]]],bsK=[0,a(d),hX,12,hX,34,[0,a(ax),[0,a(e),0]]],bsH=[0,a(aG),hX,14,hX,25,[0,a(dw),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bsD=[0,a(d),v5,14,v5,63,[0,a(ax),[0,a(e),0]]],bsx=[0,a(d),hu,14,hu,62,[0,a(ax),[0,a(e),0]]],bst=[0,a(d),i7,14,i7,53,[0,a(ax),[0,a(e),0]]],bsp=[0,a(d),hK,5,hK,65,[0,a(ax),[0,a(e),0]]],bsl=[0,a(d),hN,14,hN,68,[0,a(ax),[0,a(e),0]]],bsh=[0,a(d),gc,14,gc,66,[0,a(ax),[0,a(e),0]]],bsd=[0,a(aG),dB,14,dB,58,[0,a(dw),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bsc=[0,0],br_=[0,a(d),ii,14,ii,64,[0,a(ax),[0,a(e),0]]],br4=[0,a(aG),dJ,14,dJ,50,[0,a(dw),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],br1=[2,0],br2=[1,0],br3=[2,0],brX=[0,a(d),jm,14,jm,54,[0,a(ax),[0,a(e),0]]],brT=[0,a(d),f6,14,f6,45,[0,a(ax),[0,a(e),0]]],brP=[0,a(d),h2,14,h2,66,[0,a(ax),[0,a(e),0]]],brL=[0,a(d),hI,14,hI,60,[0,a(ax),[0,a(e),0]]],brH=[0,a(d),i3,14,i3,58,[0,a(ax),[0,a(e),0]]],brD=[0,a(d),iX,14,iX,56,[0,a(ax),[0,a(e),0]]],brx=[0,a(d),i2,14,i2,67,[0,a(ax),[0,a(e),0]]],brt=[0,a(d),dB,14,dB,63,[0,a(ax),[0,a(e),0]]],brp=[0,a(d),iR,14,iR,60,[0,a(ax),[0,a(e),0]]],brj=[0,a(aG),h0,5,h0,74,[0,a(dw),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],brf=[0,a(d),dJ,14,dJ,55,[0,a(ax),[0,a(e),0]]],brb=[0,a(d),iA,14,iA,52,[0,a(ax),[0,a(e),0]]],bq9=[0,a(d),gb,14,gb,59,[0,a(ax),[0,a(e),0]]],bq_=[0,a(d),gb,14,gb,59,[0,a(ax),[0,a(e),0]]],bq$=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.date_courante"),0]],bq8=[0,a(d),gb,14,gb,59,[0,a(ax),[0,a(e),0]]],brc=[0,a(d),iA,14,iA,52,[0,a(ax),[0,a(e),0]]],brd=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.m\xc3\xa9nage"),0]],bra=[0,a(d),iA,14,iA,52,[0,a(ax),[0,a(e),0]]],brg=[0,a(d),dJ,14,dJ,55,[0,a(ax),[0,a(e),0]]],brh=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.demandeur"),0]],bre=[0,a(d),dJ,14,dJ,55,[0,a(ax),[0,a(e),0]]],brk=[0,a(aG),h0,5,h0,74,[0,a(dw),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],brl=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.b\xc3\xa9n\xc3\xa9ficie_aide_personnalis\xc3\xa9e_logement"),0]],bri=[0,a(aG),h0,5,h0,74,[0,a(dw),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],brm=[0,a(a6),[0,a(uZ),[0,a(cb),0]]],brn=[0,a(a6),[0,a(uZ),[0,a(cb),0]]],brq=[0,a(d),iR,14,iR,60,[0,a(ax),[0,a(e),0]]],brr=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.m\xc3\xa9nage"),0]],bro=[0,a(d),iR,14,iR,60,[0,a(ax),[0,a(e),0]]],bru=[0,a(d),dB,14,dB,63,[0,a(ax),[0,a(e),0]]],brv=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.demandeur"),0]],brs=[0,a(d),dB,14,dB,63,[0,a(ax),[0,a(e),0]]],bry=[0,a(d),i2,14,i2,67,[0,a(ax),[0,a(e),0]]],brz=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.date_courante"),0]],brw=[0,a(d),i2,14,i2,67,[0,a(ax),[0,a(e),0]]],brA=[0,a(a6),[0,a(Dc),[0,a(b7),0]]],brB=[0,a(a6),[0,a(Dc),[0,a(b7),0]]],brE=[0,a(d),iX,14,iX,56,[0,a(ax),[0,a(e),0]]],brF=[0,a(a6),[0,a("calcul_allocation_logement.mode_occupation"),0]],brC=[0,a(d),iX,14,iX,56,[0,a(ax),[0,a(e),0]]],brI=[0,a(d),i3,14,i3,58,[0,a(ax),[0,a(e),0]]],brJ=[0,a(a6),[0,a("calcul_allocation_logement.ressources_m\xc3\xa9nage_sans_arrondi"),0]],brG=[0,a(d),i3,14,i3,58,[0,a(ax),[0,a(e),0]]],brM=[0,a(d),hI,14,hI,60,[0,a(ax),[0,a(e),0]]],brN=[0,a(a6),[0,a("calcul_allocation_logement.situation_familiale"),0]],brK=[0,a(d),hI,14,hI,60,[0,a(ax),[0,a(e),0]]],brQ=[0,a(d),h2,14,h2,66,[0,a(ax),[0,a(e),0]]],brR=[0,a(a6),[0,a("calcul_allocation_logement.nombre_personnes_\xc3\xa0_charge"),0]],brO=[0,a(d),h2,14,h2,66,[0,a(ax),[0,a(e),0]]],brU=[0,a(d),f6,14,f6,45,[0,a(ax),[0,a(e),0]]],brV=[0,a(a6),[0,a("calcul_allocation_logement.zone"),0]],brS=[0,a(d),f6,14,f6,45,[0,a(ax),[0,a(e),0]]],brY=[0,a(d),jm,14,jm,54,[0,a(ax),[0,a(e),0]]],brZ=[0,a(a6),[0,a("calcul_allocation_logement.date_courante"),0]],brW=[0,a(d),jm,14,jm,54,[0,a(ax),[0,a(e),0]]],br5=[0,a(aG),dJ,14,dJ,50,[0,a(dw),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],br6=[0,a(a6),[0,a("calcul_allocation_logement.type_aide"),0]],br0=[0,a(aG),dJ,14,dJ,50,[0,a(dw),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],br7=[0,a(a6),[0,a(Ep),[0,a(cR),0]]],br8=[0,a(a6),[0,a(Ep),[0,a(cR),0]]],br$=[0,a(d),ii,14,ii,64,[0,a(ax),[0,a(e),0]]],bsa=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.mode_occupation"),0]],br9=[0,a(d),ii,14,ii,64,[0,a(ax),[0,a(e),0]]],bse=[0,a(aG),dB,14,dB,58,[0,a(dw),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bsf=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.type_aide"),0]],bsb=[0,a(aG),dB,14,dB,58,[0,a(dw),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bsi=[0,a(d),gc,14,gc,66,[0,a(ax),[0,a(e),0]]],bsj=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.ressources_m\xc3\xa9nage_sans_arrondi"),0]],bsg=[0,a(d),gc,14,gc,66,[0,a(ax),[0,a(e),0]]],bsm=[0,a(d),hN,14,hN,68,[0,a(ax),[0,a(e),0]]],bsn=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.situation_familiale"),0]],bsk=[0,a(d),hN,14,hN,68,[0,a(ax),[0,a(e),0]]],bsq=[0,a(d),hK,5,hK,65,[0,a(ax),[0,a(e),0]]],bsr=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.nombre_personnes_\xc3\xa0_charge"),0]],bso=[0,a(d),hK,5,hK,65,[0,a(ax),[0,a(e),0]]],bsu=[0,a(d),i7,14,i7,53,[0,a(ax),[0,a(e),0]]],bsv=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.zone"),0]],bss=[0,a(d),i7,14,i7,53,[0,a(ax),[0,a(e),0]]],bsy=[0,a(d),hu,14,hu,62,[0,a(ax),[0,a(e),0]]],bsz=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.date_courante"),0]],bsw=[0,a(d),hu,14,hu,62,[0,a(ax),[0,a(e),0]]],bsA=[0,a(a6),[0,a(zv),[0,a(cS),0]]],bsB=[0,a(a6),[0,a(zv),[0,a(cS),0]]],bsE=[0,a(d),l8,12,l8,61,[0,a(ax),[0,a(e),0]]],bsC=[0,a(d),l8,12,l8,61,[0,a(ax),[0,a(e),0]]],bsF=[0,a(a6),[0,a(kF),0]],bsI=[0,a(d),kr,12,kr,23,[0,a(ax),[0,a(e),0]]],bsG=[0,a(d),kr,12,kr,23,[0,a(ax),[0,a(e),0]]],bsJ=[0,a(a6),[0,a(n$),0]],bsV=[0,a(a6),[0,a(aw),0]],bs7=[0,a(d),o4,12,o4,31,[0,a(ax),[0,a(e),0]]],bsW=[0,a(d),o4,12,o4,31,[0,a(ax),[0,a(e),0]]],bs8=[0,a(a6),[0,a(cX),0]],bq5=[0,a(E),Bt,14,Bt,33,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bq1=[0,a(E),vW,14,vW,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bq2=[0,a(d),oj,12,oj,34,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bq0=[0,a(d),oj,12,oj,34,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bqX=[0,a(E),Bh,14,Bh,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqQ=[0,a(V),[0,a(aw),[0,a(ac),0]]],bqR=[0,a(V),[0,a(aw),0]],bqS=[0,a(V),[0,a(aw),[0,a(ae),0]]],bqT=[0,a(V),[0,a(aw),0]],bqF=[0,a(bh),[0,a(aw),[0,a(ac),0]]],bqG=[0,a(bh),[0,a(aw),0]],bqH=[0,a(bh),[0,a(aw),[0,a(ae),0]]],bqI=[0,a(bh),[0,a(aw),0]],bqv=[0,a(V),[0,a(aw),[0,a(ac),0]]],bqw=[0,a(V),[0,a(aw),0]],bqx=[0,a(V),[0,a(aw),[0,a(ae),0]]],bqy=[0,a(V),[0,a(aw),0]],bqm=[0,a(ao),[0,a(aw),[0,a(ac),0]]],bqn=[0,a(ao),[0,a(aw),0]],bqo=[0,a(ao),[0,a(aw),[0,a(ae),0]]],bqp=[0,a(ao),[0,a(aw),0]],bqb=[0,a(bh),[0,a(aw),[0,a(ac),0]]],bqc=[0,a(bh),[0,a(aw),0]],bqd=[0,a(bh),[0,a(aw),[0,a(ae),0]]],bqe=[0,a(bh),[0,a(aw),0]],bqi=a(p),bqj=a(p),bp_=[0,a(E),1539,16,1542,39,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bp$=[0,a(bh),[0,a(bo),[0,a(ac),0]]],bqa=[0,a(bh),[0,a(bo),0]],bqf=[0,a(E),1524,9,1545,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqg=[0,a(bh),[0,a(bo),[0,a(ae),0]]],bqh=[0,a(bh),[0,a(bo),0]],bqk=[0,a(ao),[0,a(bo),[0,a(ac),0]]],bql=[0,a(ao),[0,a(bo),0]],bqq=[0,a(E),1588,9,1599,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqr=[0,a(ao),[0,a(bo),[0,a(ae),0]]],bqs=[0,a(ao),[0,a(bo),0]],bqt=[0,a(V),[0,a(bo),[0,a(ac),0]]],bqu=[0,a(V),[0,a(bo),0]],bqz=[0,a(E),1609,10,1624,11,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqA=[0,a(V),[0,a(bo),[0,a(ae),0]]],bqB=[0,a(V),[0,a(bo),0]],bqM=a(p),bqN=a(p),bqC=[0,a(E),1571,16,1574,39,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqD=[0,a(bh),[0,a(bo),[0,a(ac),0]]],bqE=[0,a(bh),[0,a(bo),0]],bqJ=[0,a(E),1556,9,1577,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqK=[0,a(bh),[0,a(bo),[0,a(ae),0]]],bqL=[0,a(bh),[0,a(bo),0]],bqO=[0,a(V),[0,a(bo),[0,a(ac),0]]],bqP=[0,a(V),[0,a(bo),0]],bqU=[0,a(E),1636,10,1651,11,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqV=[0,a(V),[0,a(bo),[0,a(ae),0]]],bqW=[0,a(V),[0,a(bo),0]],bp6=[0,a(Q),88,14,88,44,[0,a(cG),[0,a(bX),[0,a(L),0]]]],bp0=[0,0],bp1=[1,0],bp2=[1,0],bp3=[1,0],bp4=[0,0],bp5=[1,0],bpW=[0,a(E),EL,14,EL,31,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bpT=a(c4),bpU=a(Ca),bpV=a(qX),bpP=[0,a(E),FC,14,FC,34,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bpQ=[0,a(d),mR,11,mR,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpO=[0,a(d),mR,11,mR,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpR=[0,a(cR),[0,a(xP),0]],bpX=[0,a(d),ne,10,ne,22,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpS=[0,a(d),ne,10,ne,22,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpY=[0,a(cR),[0,a(xh),0]],bp7=[0,a(d),mF,11,mF,41,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpZ=[0,a(d),mF,11,mF,41,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bp8=[0,a(cR),[0,a(y$),0]],bqY=[0,a(d),mW,11,mW,33,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bp9=[0,a(d),mW,11,mW,33,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bqZ=[0,a(cR),[0,a(Fk),0]],bq3=[0,a(cR),[0,a(aw),0]],bq6=[0,a(d),kN,12,kN,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bq4=[0,a(d),kN,12,kN,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bq7=[0,a(cR),[0,a(cX),0]],bpJ=[0,a(aG),vt,5,vt,73,[0,a("Article L841-3"),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bpI=[2,0],bpK=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpG=[0,a(aG),fb,5,1140,28,[0,a("Article L841-4"),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bpF=[0,0],bpH=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpL=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpE=[0,a(aG),vx,14,vx,25,[0,a(dw),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bpA=[0,0],bpB=[0,0],bpC=[1,0],bpD=[2,0],bpq=a(p),bpr=[0,a(aG),1002,5,1006,29,[0,a(il),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bps=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpl=a(z),bpm=[0,a(aG),979,5,kN,13,[0,a(il),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bpn=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpg=[0,a(aU),[0,a(fk),[0,a(ac),0]]],bph=[0,a(aU),[0,a(fk),0]],bpi=[0,a(aU),[0,a(fk),[0,a(ae),0]]],bpj=[0,a(aU),[0,a(fk),0]],bpf=a(z),bpk=[0,a(aG),961,5,963,9,[0,a(il),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bpo=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpp=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpt=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bo_=[2,0],bpd=[0,0],bo$=[0,a(cq),[0,a(dg),[0,a(ac),0]]],bpa=[0,a(cq),[0,a(dg),0]],bpb=[0,a(cq),[0,a(dg),[0,a(ae),0]]],bpc=[0,a(cq),[0,a(dg),0]],bo9=a(p),bpe=[0,a(aG),922,5,kB,29,[0,a(il),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bpu=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bo2=[2,0],bo7=[0,0],bo3=[0,a(cq),[0,a(dg),[0,a(ac),0]]],bo4=[0,a(cq),[0,a(dg),0]],bo5=[0,a(cq),[0,a(dg),[0,a(ae),0]]],bo6=[0,a(cq),[0,a(dg),0]],bo1=a(z),bo8=[0,a(aG),890,5,911,8,[0,a(il),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bpv=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],boW=[4,0],boX=[3,0],boY=[1,0],boZ=[0,0],bo0=[0,a(aG),870,5,875,6,[0,a(il),[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bpw=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],boV=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],boR=[0,a(aG),xu,14,xu,25,[0,a(bj),[0,a(b8),[0,a(x),[0,a(aa),[0,a(w),0]]]]]],boP=[0,0],boQ=[2,0],boL=[0,a(d),hk,14,hk,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],boH=[0,a(d),Cd,14,Cd,63,[0,a(aK),[0,a(i),[0,a(e),0]]]],boB=[0,a(E),ni,9,ni,55,[0,a(oi),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boC=[0,a(E),ni,9,ni,55,[0,a(oi),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boD=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_surface"),0]],boy=[0,a(E),nm,9,nm,68,[0,a(oi),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boz=[0,a(E),nm,9,nm,68,[0,a(oi),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boA=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_r\xc3\xa9sidence_principale"),0]],bov=[0,a(d),gy,14,gy,47,[0,a(aK),[0,a(i),[0,a(e),0]]]],bor=[0,a(d),i8,14,i8,43,[0,a(aK),[0,a(i),[0,a(e),0]]]],bon=[0,a(d),iZ,14,iZ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boe=[0,a(E),4364,5,4369,28,[0,a(oH),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bof=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bod=[0,a(E),4347,5,4352,28,[0,a(oH),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bog=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boc=[0,a(E),4330,5,4337,28,[0,a(oH),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boh=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boi=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bob=[0,a(E),4300,5,4302,28,[0,a(oH),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boj=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boa=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn6=[0,a(d),hm,14,hm,46,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn5=[6,0],bn1=[0,a(d),jp,14,jp,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn0=[1,0],bnW=[0,a(d),h7,14,h7,50,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnS=[0,a(E),CX,14,CX,28,[0,a("Article D841-1"),[0,a("Chapitre 1 : Champ d'application"),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]],bnT=[0,a(d),nM,11,nM,25,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnR=[0,a(d),nM,11,nM,25,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnU=[0,a(cb),[0,a("dur\xc3\xa9e_l841_1_3"),0]],bnX=[0,a(d),h7,14,h7,50,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnY=[0,a(cb),[0,a(xa),0]],bnV=[0,a(d),h7,14,h7,50,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn2=[0,a(d),jp,14,jp,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn3=[0,a(cb),[0,a(Bv),0]],bnZ=[0,a(d),jp,14,jp,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn7=[0,a(d),hm,14,hm,46,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn8=[0,a(cb),[0,a(y2),0]],bn4=[0,a(d),hm,14,hm,46,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn9=[0,a(cb),[0,a(oN),[0,a(cq),0]]],bn_=[0,a(cb),[0,a(oN),[0,a(cq),0]]],bok=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn$=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bol=[0,a(cb),[0,a("condition_accession_propri\xc3\xa9t\xc3\xa9"),0]],boo=[0,a(d),iZ,14,iZ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bop=[0,a(cb),[0,a(vD),0]],bom=[0,a(d),iZ,14,iZ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bos=[0,a(d),i8,14,i8,43,[0,a(aK),[0,a(i),[0,a(e),0]]]],bot=[0,a(cb),[0,a(Bs),0]],boq=[0,a(d),i8,14,i8,43,[0,a(aK),[0,a(i),[0,a(e),0]]]],bow=[0,a(d),gy,14,gy,47,[0,a(aK),[0,a(i),[0,a(e),0]]]],box=[0,a(cb),[0,a(F8),0]],bou=[0,a(d),gy,14,gy,47,[0,a(aK),[0,a(i),[0,a(e),0]]]],boE=[0,a(cb),[0,a(oF),[0,a(aU),0]]],boF=[0,a(cb),[0,a(oF),[0,a(aU),0]]],boI=[0,a(d),f2,12,f2,61,[0,a(aK),[0,a(i),[0,a(e),0]]]],boG=[0,a(d),f2,12,f2,61,[0,a(aK),[0,a(i),[0,a(e),0]]]],boJ=[0,a(cb),[0,a(kF),0]],boM=[0,a(d),oQ,12,oQ,54,[0,a(aK),[0,a(i),[0,a(e),0]]]],boK=[0,a(d),oQ,12,oQ,54,[0,a(aK),[0,a(i),[0,a(e),0]]]],boN=[0,a(cb),[0,a(r4),0]],boS=[0,a(d),nf,10,nf,31,[0,a(aK),[0,a(i),[0,a(e),0]]]],boO=[0,a(d),nf,10,nf,31,[0,a(aK),[0,a(i),[0,a(e),0]]]],boT=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_dispositions_communes"),0]],bpx=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],boU=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpy=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement_familiale"),0]],bpM=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpz=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpN=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_l841_2"),0]],bnN=[0,a(aG),gH,5,593,36,[0,a(bj),[0,a(ag),[0,a(x),[0,a(aa),[0,a(w),0]]]]]],bnO=[0,a(d),f3,12,f3,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnM=[0,a(d),f3,12,f3,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnI=[0,a(d),nh,14,nh,56,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnE=[0,a(d),rr,14,rr,63,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnu=[0,a(E),3693,5,3698,30,[0,a("Article R832-21"),[0,a("Sous-Section 1 : Conditions d'assimilation des logements-foyers aux logements \xc3\xa0 usage locatif"),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],bnv=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnq=[0,a(b7),[0,a(kj),[0,a(ac),0]]],bnr=[0,a(b7),[0,a(kj),0]],bns=[0,a(b7),[0,a(kj),[0,a(ae),0]]],bnt=[0,a(b7),[0,a(kj),0]],bnp=[0,a(aG),kU,5,704,30,[0,a(mh),[0,a(bj),[0,a(ag),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bnw=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bno=[0,a(aG),Y,5,kp,30,[0,a(mh),[0,a(bj),[0,a(ag),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bnx=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnn=[0,a(aG),kc,5,650,30,[0,a(mh),[0,a(bj),[0,a(ag),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bny=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnj=[0,a(b7),[0,a(j3),[0,a(ac),0]]],bnk=[0,a(b7),[0,a(j3),0]],bnl=[0,a(b7),[0,a(j3),[0,a(ae),0]]],bnm=[0,a(b7),[0,a(j3),0]],bni=[0,a(aG),kf,5,623,30,[0,a(mh),[0,a(bj),[0,a(ag),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bnz=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnA=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnh=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnb=[0,a(d),gL,14,gL,47,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm9=[0,a(d),hd,14,hd,43,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm5=[0,a(d),hH,14,hH,40,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmY=[0,a(aG),ko,5,753,30,[0,a(qF),[0,a(bj),[0,a(ag),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bmZ=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmX=[0,a(aG),721,5,726,30,[0,a(qF),[0,a(bj),[0,a(ag),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bm0=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmW=[0,a(aG),ho,31,ho,54,[0,a(qF),[0,a(bj),[0,a(ag),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bm1=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmV=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmR=[0,a(d),fi,11,fi,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmS=[0,a(d),fi,11,fi,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmQ=[0,a(d),fi,11,fi,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmK=[0,a(E),3021,5,3024,41,[0,a("Article R832-7"),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmL=[0,a(d),di,11,di,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmJ=[0,a(E),2986,5,2988,42,[0,a("Article R832-5"),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmM=[0,a(d),di,11,di,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmN=[0,a(d),di,11,di,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmI=[0,a(d),di,11,di,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmO=[0,a(d),di,11,di,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmH=[0,a(d),di,11,di,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmP=[0,a(b7),[0,a(j3),0]],bmT=[0,a(b7),[0,a(kj),0]],bm2=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmU=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm3=[0,a(b7),[0,a("condition_logement_pr\xc3\xaat"),0]],bm6=[0,a(d),hH,14,hH,40,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm7=[0,a(b7),[0,a(vD),0]],bm4=[0,a(d),hH,14,hH,40,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm_=[0,a(d),hd,14,hd,43,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm$=[0,a(b7),[0,a(Bs),0]],bm8=[0,a(d),hd,14,hd,43,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnc=[0,a(d),gL,14,gL,47,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnd=[0,a(b7),[0,a(F8),0]],bna=[0,a(d),gL,14,gL,47,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bne=[0,a(b7),[0,a(oF),[0,a(aU),0]]],bnf=[0,a(b7),[0,a(oF),[0,a(aU),0]]],bnB=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bng=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnC=[0,a(b7),[0,a("condition_logement_bailleur"),0]],bnF=[0,a(d),n_,12,n_,61,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnD=[0,a(d),n_,12,n_,61,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnG=[0,a(b7),[0,a(kF),0]],bnJ=[0,a(d),l5,12,l5,54,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnH=[0,a(d),l5,12,l5,54,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnK=[0,a(b7),[0,a(r4),0]],bnP=[0,a(d),f3,12,f3,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnL=[0,a(d),f3,12,f3,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnQ=[0,a(b7),[0,a(n$),0]],bmE=[0,a(E),AX,14,AX,40,[0,a("Article D823-22"),[0,a(ma),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmz=[0,a(aG),eb,5,566,42,[0,a("Article L823-8"),[0,a(a4),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],bmA=[0,a(d),f$,11,f$,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmy=[0,a(d),f$,11,f$,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmu=[0,a(Q),xs,14,xs,29,[0,a("Article 45"),[0,a("Chapitre VIII : Prime de d\xc3\xa9m\xc3\xa9nagement"),[0,a(L),0]]]],bmp=a(_),bmq=a(qy),bmr=a(_),bmt=a(p),bms=a("2.4"),bmk=[0,a(E),2069,6,xe,75,[0,a(qK),[0,a(ma),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bml=[0,a(d),ex,11,ex,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmj=[0,a(d),ex,11,ex,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmd=[0,a(d),iN,14,iN,43,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl$=[0,a(d),iQ,14,iQ,39,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl7=[0,a(d),fR,14,fR,36,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl1=[0,a(d),fT,14,fT,65,[0,a(bv),[0,a(i),[0,a(e),0]]]],blV=a(_),blW=[0,a(E),2060,5,2065,77,[0,a(qK),[0,a(ma),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blX=[0,a(d),f0,11,f0,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],blU=[0,a(d),f0,11,f0,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],blQ=[0,a(E),An,14,An,47,[0,a(qK),[0,a(ma),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blR=[0,a(d),nQ,11,nQ,44,[0,a(bv),[0,a(i),[0,a(e),0]]]],blP=[0,a(d),nQ,11,nQ,44,[0,a(bv),[0,a(i),[0,a(e),0]]]],blS=[0,a(dj),[0,a("d\xc3\xa9lai_apr\xc3\xa8s_emm\xc3\xa9nagement_l823_8_2"),0]],blY=[0,a(d),f0,11,f0,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],blT=[0,a(d),f0,11,f0,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],blZ=[0,a(dj),[0,a("condition_rang_enfant"),0]],bl2=[0,a(d),fT,14,fT,65,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl3=[0,a(dj),[0,a(DY),0]],bl0=[0,a(d),fT,14,fT,65,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl4=[0,a(dj),[0,a(mU),[0,a(f_),0]]],bl5=[0,a(dj),[0,a(mU),[0,a(f_),0]]],bl8=[0,a(d),fR,14,fR,36,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl9=[0,a(dj),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.m\xc3\xa9nage"),0]],bl6=[0,a(d),fR,14,fR,36,[0,a(bv),[0,a(i),[0,a(e),0]]]],bma=[0,a(d),iQ,14,iQ,39,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmb=[0,a(dj),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.demandeur"),0]],bl_=[0,a(d),iQ,14,iQ,39,[0,a(bv),[0,a(i),[0,a(e),0]]]],bme=[0,a(d),iN,14,iN,43,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmf=[0,a(dj),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.date_courante"),0]],bmc=[0,a(d),iN,14,iN,43,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmg=[0,a(dj),[0,a(Ba),[0,a(aU),0]]],bmh=[0,a(dj),[0,a(Ba),[0,a(aU),0]]],bmm=[0,a(d),ex,11,ex,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmi=[0,a(d),ex,11,ex,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmn=[0,a(dj),[0,a("condition_p\xc3\xa9riode_d\xc3\xa9m\xc3\xa9nagement"),0]],bmv=[0,a(d),mL,11,mL,26,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmo=[0,a(d),mL,11,mL,26,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmw=[0,a(dj),[0,a("plafond_d823_22"),0]],bmB=[0,a(d),f$,11,f$,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmx=[0,a(d),f$,11,f$,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmC=[0,a(dj),[0,a(Bg),0]],bmF=[0,a(d),oY,12,oY,38,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmD=[0,a(d),oY,12,oY,38,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmG=[0,a(dj),[0,a("montant_prime_d\xc3\xa9m\xc3\xa9nagement"),0]],blL=[0,a(E),x_,14,x_,33,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blH=[0,a(E),Eq,14,Eq,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blI=[0,a(d),j6,12,j6,34,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blG=[0,a(d),j6,12,j6,34,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blD=[0,a(E),vP,14,vP,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blw=[0,a(au),[0,a(aw),[0,a(ac),0]]],blx=[0,a(au),[0,a(aw),0]],bly=[0,a(au),[0,a(aw),[0,a(ae),0]]],blz=[0,a(au),[0,a(aw),0]],bln=[0,a(aj),[0,a(aw),[0,a(ac),0]]],blo=[0,a(aj),[0,a(aw),0]],blp=[0,a(aj),[0,a(aw),[0,a(ae),0]]],blq=[0,a(aj),[0,a(aw),0]],blc=[0,a(aD),[0,a(aw),[0,a(ac),0]]],bld=[0,a(aD),[0,a(aw),0]],ble=[0,a(aD),[0,a(aw),[0,a(ae),0]]],blf=[0,a(aD),[0,a(aw),0]],blj=a(p),blk=a(p),bk$=[0,a(E),1455,16,1458,39,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bla=[0,a(aD),[0,a(bo),[0,a(ac),0]]],blb=[0,a(aD),[0,a(bo),0]],blg=[0,a(E),1440,9,1460,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blh=[0,a(aD),[0,a(bo),[0,a(ae),0]]],bli=[0,a(aD),[0,a(bo),0]],bll=[0,a(aj),[0,a(bo),[0,a(ac),0]]],blm=[0,a(aj),[0,a(bo),0]],blr=[0,a(E),1491,10,1507,11,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bls=[0,a(aj),[0,a(bo),[0,a(ae),0]]],blt=[0,a(aj),[0,a(bo),0]],blu=[0,a(au),[0,a(bo),[0,a(ac),0]]],blv=[0,a(au),[0,a(bo),0]],blA=[0,a(E),1471,9,1480,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blB=[0,a(au),[0,a(bo),[0,a(ae),0]]],blC=[0,a(au),[0,a(bo),0]],bk7=[0,a(Q),78,14,78,44,[0,a(cG),[0,a(bX),[0,a(L),0]]]],bk1=[0,0],bk2=[1,0],bk3=[1,0],bk4=[1,0],bk5=[0,0],bk6=[1,0],bkX=[0,a(E),Ak,14,Ak,31,[0,a(rN),[0,a(dC),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],bkU=a(c4),bkV=a(Ca),bkW=a(qX),bkQ=[0,a(E),zC,14,zC,34,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bkR=[0,a(d),ko,11,ko,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkP=[0,a(d),ko,11,ko,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkS=[0,a(cS),[0,a(xP),0]],bkY=[0,a(d),m5,10,m5,22,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkT=[0,a(d),m5,10,m5,22,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkZ=[0,a(cS),[0,a(xh),0]],bk8=[0,a(d),of,11,of,41,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bk0=[0,a(d),of,11,of,41,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bk9=[0,a(cS),[0,a(y$),0]],blE=[0,a(d),m4,11,m4,33,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bk_=[0,a(d),m4,11,m4,33,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blF=[0,a(cS),[0,a(Fk),0]],blJ=[0,a(cS),[0,a(aw),0]],blM=[0,a(d),mY,12,mY,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blK=[0,a(d),mY,12,mY,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blN=[0,a(cS),[0,a(cX),0]],bkM=[0,a(E),Er,14,Er,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bkH=[0,a(V),[0,a(bJ),[0,a(ac),0]]],bkI=[0,a(V),[0,a(bJ),0]],bkJ=[0,a(V),[0,a(bJ),[0,a(ae),0]]],bkK=[0,a(V),[0,a(bJ),0]],bkL=a(p),bkN=[0,a(d),l_,10,l_,25,[0,a(D),[0,a(A),[0,a(e),0]]]],bkG=[0,a(d),l_,10,l_,25,[0,a(D),[0,a(A),[0,a(e),0]]]],bkD=[0,a(E),EI,14,EI,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bks=[0,a(V),[0,a(er),[0,a(ac),0]]],bkt=[0,a(V),[0,a(er),0]],bku=[0,a(V),[0,a(er),[0,a(ae),0]]],bkv=[0,a(V),[0,a(er),0]],bkw=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],bkx=[0,a(bk),[0,a(bQ),0]],bky=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],bkz=[0,a(bk),[0,a(bQ),0]],bkA=a(kY),bkB=a(p),bkC=a(p),bkE=[0,a(d),mE,10,mE,40,[0,a(D),[0,a(A),[0,a(e),0]]]],bkr=[0,a(d),mE,10,mE,40,[0,a(D),[0,a(A),[0,a(e),0]]]],bko=[0,a(E),y8,14,y8,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bkf=[0,a(V),[0,a(bI),[0,a(ac),0]]],bkg=[0,a(V),[0,a(bI),0]],bkh=[0,a(V),[0,a(bI),[0,a(ae),0]]],bki=[0,a(V),[0,a(bI),0]],bkj=[0,a(V),[0,a(eK),[0,a(ac),0]]],bkk=[0,a(V),[0,a(eK),0]],bkl=[0,a(V),[0,a(eK),[0,a(ae),0]]],bkm=[0,a(V),[0,a(eK),0]],bkn=a(p),bkp=[0,a(d),ou,10,ou,32,[0,a(D),[0,a(A),[0,a(e),0]]]],bke=[0,a(d),ou,10,ou,32,[0,a(D),[0,a(A),[0,a(e),0]]]],bkb=[0,a(E),AF,14,AF,33,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bj9=[0,a(E),u8,14,u8,47,[0,a(oO),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bj4=[0,a(V),[0,a(dc),[0,a(ac),0]]],bj5=[0,a(V),[0,a(dc),0]],bj6=[0,a(V),[0,a(dc),[0,a(ae),0]]],bj7=[0,a(V),[0,a(dc),0]],bj8=a(p),bj_=[0,a(d),nD,11,nD,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bj3=[0,a(d),nD,11,nD,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bj0=[0,a(E),xf,14,xf,41,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjW=[0,a(E),AO,14,AO,33,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjS=[0,a(E),x7,14,x7,33,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjN=[0,a(E),4671,7,4674,44,[0,a(oO),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjO=[0,a(d),gS,11,gS,47,[0,a(D),[0,a(A),[0,a(e),0]]]],bjM=[0,a(E),vK,14,vK,50,[0,a(oO),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjG=[0,a(E),nq,14,nq,62,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjH=[0,a(E),nq,14,nq,62,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjI=[0,a(V),[0,a("calcul_apl_logement_foyer.n_nombre_parts_d832_25"),0]],bjD=[0,a(E),m7,14,m7,61,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjE=[0,a(E),m7,14,m7,61,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjF=[0,a(V),[0,a(Ek),0]],bjA=[0,a(d),gE,14,gE,49,[0,a(D),[0,a(A),[0,a(e),0]]]],bjz=a(p),bjv=[0,a(d),hP,14,hP,53,[0,a(D),[0,a(A),[0,a(e),0]]]],bjr=[0,a(d),i1,14,i1,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bjn=[0,a(d),ih,14,ih,70,[0,a(D),[0,a(A),[0,a(e),0]]]],bjj=[0,a(d),iY,14,iY,65,[0,a(D),[0,a(A),[0,a(e),0]]]],bjf=[0,a(d),jo,14,jo,67,[0,a(D),[0,a(A),[0,a(e),0]]]],bjb=[0,a(d),ix,14,ix,61,[0,a(D),[0,a(A),[0,a(e),0]]]],bi9=[0,a(d),ju,14,ju,59,[0,a(D),[0,a(A),[0,a(e),0]]]],bi8=[3,0],bi2=[0,a(E),hv,14,hv,70,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biY=[0,a(E),hF,14,hF,69,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biU=[0,a(E),js,14,js,75,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biP=[0,a(E),Bf,5,Bf,44,[0,a(BT),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biH=[0,a(V),[0,a(dD),[0,a(ac),0]]],biI=[0,a(V),[0,a(dD),0]],biJ=[0,a(V),[0,a(dD),[0,a(ae),0]]],biK=[0,a(V),[0,a(dD),0]],biL=[0,a(V),[0,a(dD),[0,a(ac),0]]],biM=[0,a(V),[0,a(dD),0]],biN=[0,a(V),[0,a(dD),[0,a(ae),0]]],biO=[0,a(V),[0,a(dD),0]],biQ=[0,a(d),hY,11,hY,36,[0,a(D),[0,a(A),[0,a(e),0]]]],biG=[0,a(E),EE,14,EE,39,[0,a(BT),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biC=[0,a(V),[0,a(dD),[0,a(ac),0]]],biD=[0,a(V),[0,a(dD),0]],biE=[0,a(V),[0,a(dD),[0,a(ae),0]]],biF=[0,a(V),[0,a(dD),0]],bix=[0,a(E),vR,5,vR,28,[0,a(ng),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biy=[0,a(d),iT,10,iT,15,[0,a(D),[0,a(A),[0,a(e),0]]]],biw=[0,a(E),Dz,14,Dz,41,[0,a(ng),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bit=a(c4),biu=a(qX),biv=a("4999"),bim=[0,a(aO),xN,24,xN,56,[0,a(os),[0,a(bB),[0,a(aM),0]]]],bid=a(dd),bie=[0,a(V),[0,a(b$),[0,a(ac),0]]],bif=[0,a(V),[0,a(b$),0]],big=[0,a(V),[0,a(b$),[0,a(ae),0]]],bih=[0,a(V),[0,a(b$),0]],bii=[0,a(V),[0,a(b$),[0,a(ac),0]]],bij=[0,a(V),[0,a(b$),0]],bik=[0,a(V),[0,a(b$),[0,a(ae),0]]],bil=[0,a(V),[0,a(b$),0]],bin=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bic=[0,a(Q),n8,24,n8,56,[0,a(os),[0,a(bn),[0,a(L),0]]]],bh5=a(dd),bh6=[0,a(V),[0,a(b$),[0,a(ac),0]]],bh7=[0,a(V),[0,a(b$),0]],bh8=[0,a(V),[0,a(b$),[0,a(ae),0]]],bh9=[0,a(V),[0,a(b$),0]],bh_=[0,a(V),[0,a(b$),[0,a(ac),0]]],bh$=[0,a(V),[0,a(b$),0]],bia=[0,a(V),[0,a(b$),[0,a(ae),0]]],bib=[0,a(V),[0,a(b$),0]],bio=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bip=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bh4=[0,a(Q),z1,14,z1,46,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bh0=[0,a(V),[0,a(b$),[0,a(ac),0]]],bh1=[0,a(V),[0,a(b$),0]],bh2=[0,a(V),[0,a(b$),[0,a(ae),0]]],bh3=[0,a(V),[0,a(b$),0]],biq=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bhZ=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bhW=[0,a(E),Az,15,Az,37,[0,a(oO),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bhX=[0,a(d),mS,11,mS,33,[0,a(D),[0,a(A),[0,a(e),0]]]],bhV=[0,a(d),mS,11,mS,33,[0,a(D),[0,a(A),[0,a(e),0]]]],bhR=[0,a(E),4696,6,4702,6,[0,a(ng),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bhS=[0,a(d),fU,11,fU,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bhP=[0,a(E),4714,5,4715,59,[0,a(ng),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bhQ=[0,a(d),fU,11,fU,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bhK=[0,a(Q),zr,5,zr,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bg0=a(p),bg1=a("158700"),bg2=a("191300"),bg3=a(z),bg4=a("205500"),bg5=a(X),bg6=a("211300"),bg7=a(_),bg8=a("217100"),bg9=a(ah),bg_=a("222900"),bg$=a(P),bha=a(Aa),bhb=a(P),bhc=a("19800"),bhd=a(Aa),bhe=a(p),bhf=a("139300"),bhg=a("170600"),bhh=a(z),bhi=a("184700"),bhj=a(X),bhk=a("191200"),bhl=a(_),bhm=a(zx),bhn=a(ah),bho=a("204200"),bhp=a(P),bhq=a(wB),bhr=a(P),bhs=a(sh),bht=a(wB),bhu=a(p),bhv=a("130600"),bhw=a("158400"),bhx=a(z),bhy=a("172600"),bhz=a(X),bhA=a(D0),bhB=a(_),bhC=a("187000"),bhD=a(ah),bhE=a("194200"),bhF=a(P),bhG=a(rF),bhH=a(P),bhI=a("18200"),bhJ=a(rF),bhL=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bgY=[0,a(Q),wX,5,wX,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bgc=a(p),bgd=a("160400"),bge=a("193400"),bgf=a(z),bgg=a("207800"),bgh=a(X),bgi=a("213700"),bgj=a(_),bgk=a("219600"),bgl=a(ah),bgm=a(yM),bgn=a(P),bgo=a(oc),bgp=a(P),bgq=a("20000"),bgr=a(oc),bgs=a(p),bgt=a(DM),bgu=a(D1),bgv=a(z),bgw=a("186700"),bgx=a(X),bgy=a("193300"),bgz=a(_),bgA=a(qY),bgB=a(ah),bgC=a("206500"),bgD=a(P),bgE=a(w3),bgF=a(P),bgG=a(zA),bgH=a(w3),bgI=a(p),bgJ=a(By),bgK=a(q9),bgL=a(z),bgM=a("174500"),bgN=a(X),bgO=a(xT),bgP=a(_),bgQ=a("189100"),bgR=a(ah),bgS=a("196400"),bgT=a(P),bgU=a(vi),bgV=a(P),bgW=a("18400"),bgX=a(vi),bgZ=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bga=[0,a(Q),BR,5,BR,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bfq=a(p),bfr=a("163300"),bfs=a("196900"),bft=a(z),bfu=a("211600"),bfv=a(X),bfw=a(wD),bfx=a(_),bfy=a("223600"),bfz=a(ah),bfA=a("229600"),bfB=a(P),bfC=a(BM),bfD=a(P),bfE=a("20400"),bfF=a(BM),bfG=a(p),bfH=a("143300"),bfI=a("175600"),bfJ=a(z),bfK=a("190100"),bfL=a(X),bfM=a("196600"),bfN=a(_),bfO=a("203500"),bfP=a(ah),bfQ=a("210200"),bfR=a(P),bfS=a(ET),bfT=a(P),bfU=a("19600"),bfV=a(ET),bfW=a(p),bfX=a("134400"),bfY=a(xW),bfZ=a(z),bf0=a("177700"),bf1=a(X),bf2=a("185100"),bf3=a(_),bf4=a(wE),bf5=a(ah),bf6=a(qY),bf7=a(P),bf8=a(FQ),bf9=a(P),bf_=a("18700"),bf$=a(FQ),bgb=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bfo=[0,a(Q),Ff,5,Ff,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],beE=a(p),beF=a("167200"),beG=a("201600"),beH=a(z),beI=a("216700"),beJ=a(X),beK=a("222800"),beL=a(_),beM=a("229000"),beN=a(ah),beO=a("235100"),beP=a(P),beQ=a(FL),beR=a(P),beS=a(vJ),beT=a(FL),beU=a(p),beV=a("146700"),beW=a(D0),beX=a(z),beY=a("194700"),beZ=a(X),be0=a("201500"),be1=a(_),be2=a("208400"),be3=a(ah),be4=a("215200"),be5=a(P),be6=a(oc),be7=a(P),be8=a(BH),be9=a(oc),be_=a(p),be$=a("137600"),bfa=a("166900"),bfb=a(z),bfc=a("182000"),bfd=a(X),bfe=a("189500"),bff=a(_),bfg=a("197100"),bfh=a(ah),bfi=a(Da),bfj=a(P),bfk=a(Bj),bfl=a(P),bfm=a(sh),bfn=a(Bj),bfp=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],beC=[0,a(Q),Ck,5,Ck,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bdS=a(p),bdT=a("167400"),bdU=a("201800"),bdV=a(z),bdW=a("216900"),bdX=a(X),bdY=a("223000"),bdZ=a(_),bd0=a("229200"),bd1=a(ah),bd2=a("235300"),bd3=a(P),bd4=a(Ax),bd5=a(P),bd6=a(vJ),bd7=a(Ax),bd8=a(p),bd9=a("146800"),bd_=a("180000"),bd$=a(z),bea=a("194900"),beb=a(X),bec=a(Fi),bed=a(_),bee=a(rF),bef=a(ah),beg=a("215400"),beh=a(P),bei=a(Cz),bej=a(P),bek=a(BH),bel=a(Cz),bem=a(p),ben=a("137700"),beo=a("167100"),bep=a(z),beq=a("182200"),ber=a(X),bes=a("189700"),bet=a(_),beu=a("197300"),bev=a(ah),bew=a("204900"),bex=a(P),bey=a(DX),bez=a(P),beA=a(sh),beB=a(DX),beD=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bdQ=[0,a(Q),AE,5,AE,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bc6=a(p),bc7=a("169100"),bc8=a("203800"),bc9=a(z),bc_=a("219100"),bc$=a(X),bda=a("225200"),bdb=a(_),bdc=a("231500"),bdd=a(ah),bde=a("237700"),bdf=a(P),bdg=a(mm),bdh=a(P),bdi=a("21100"),bdj=a(mm),bdk=a(p),bdl=a("148300"),bdm=a(xT),bdn=a(z),bdo=a("196800"),bdp=a(X),bdq=a("203700"),bdr=a(_),bds=a("210700"),bdt=a(ah),bdu=a(wD),bdv=a(P),bdw=a(w8),bdx=a(P),bdy=a("20300"),bdz=a(w8),bdA=a(p),bdB=a("139100"),bdC=a("168800"),bdD=a(z),bdE=a(rG),bdF=a(X),bdG=a("191600"),bdH=a(_),bdI=a("199300"),bdJ=a(ah),bdK=a("206900"),bdL=a(P),bdM=a(A1),bdN=a(P),bdO=a(zA),bdP=a(A1),bdR=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bc4=[0,a(Q),xZ,5,xZ,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bci=a(p),bcj=a("171100"),bck=a("206200"),bcl=a(z),bcm=a("221700"),bcn=a(X),bco=a("227900"),bcp=a(_),bcq=a("234300"),bcr=a(ah),bcs=a("240600"),bct=a(P),bcu=a(z4),bcv=a(P),bcw=a("21400"),bcx=a(z4),bcy=a(p),bcz=a("150100"),bcA=a(rG),bcB=a(z),bcC=a("199200"),bcD=a(X),bcE=a("206100"),bcF=a(_),bcG=a("213200"),bcH=a(ah),bcI=a("220200"),bcJ=a(P),bcK=a(zc),bcL=a(P),bcM=a("20500"),bcN=a(zc),bcO=a(p),bcP=a(DM),bcQ=a("170800"),bcR=a(z),bcS=a("186200"),bcT=a(X),bcU=a("193900"),bcV=a(_),bcW=a(Fi),bcX=a(ah),bcY=a("209400"),bcZ=a(P),bc0=a(A0),bc1=a(P),bc2=a("19500"),bc3=a(A0),bc5=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bcg=[0,a(Q),xx,5,xx,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bbw=a(p),bbx=a("26084"),bby=a("31435"),bbz=a(z),bbA=a("33798"),bbB=a(X),bbC=a("34743"),bbD=a(_),bbE=a("35719"),bbF=a(ah),bbG=a("36679"),bbH=a(P),bbI=a(zi),bbJ=a(P),bbK=a("3262"),bbL=a(zi),bbM=a(p),bbN=a("22883"),bbO=a("28051"),bbP=a(z),bbQ=a("30368"),bbR=a(X),bbS=a("31420"),bbT=a(_),bbU=a("32502"),bbV=a(ah),bbW=a("33569"),bbX=a(P),bbY=a(Fz),bbZ=a(P),bb0=a("3125"),bb1=a(Fz),bb2=a(p),bb3=a("21465"),bb4=a("26038"),bb5=a(z),bb6=a("28386"),bb7=a(X),bb8=a("29560"),bb9=a(_),bb_=a("30749"),bb$=a(ah),bca=a("31923"),bcb=a(P),bcc=a(EV),bcd=a(P),bce=a("2973"),bcf=a(EV),bch=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bbu=[0,a(Q),yI,5,yI,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],baK=a(p),baL=a("26397"),baM=a("31812"),baN=a(z),baO=a("34204"),baP=a(X),baQ=a("35160"),baR=a(_),baS=a("36148"),baT=a(ah),baU=a("37119"),baV=a(P),baW=a(zH),baX=a(P),baY=a("3301"),baZ=a(zH),ba0=a(p),ba1=a("23158"),ba2=a("28388"),ba3=a(z),ba4=a("30732"),ba5=a(X),ba6=a(mX),ba7=a(_),ba8=a("32892"),ba9=a(ah),ba_=a("33972"),ba$=a(P),bba=a(EG),bbb=a(P),bbc=a("3163"),bbd=a(EG),bbe=a(p),bbf=a("21723"),bbg=a("26350"),bbh=a(z),bbi=a("28727"),bbj=a(X),bbk=a("29915"),bbl=a(_),bbm=a("31118"),bbn=a(ah),bbo=a("32306"),bbp=a(P),bbq=a(xt),bbr=a(P),bbs=a("3009"),bbt=a(xt),bbv=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],baI=[0,a(Q),B9,5,B9,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a$Y=a(p),a$Z=a(Gf),a$0=a("32194"),a$1=a(z),a$2=a("34614"),a$3=a(X),a$4=a("35582"),a$5=a(_),a$6=a("36582"),a$7=a(ah),a$8=a("37564"),a$9=a(P),a$_=a(wQ),a$$=a(P),baa=a("3341"),bab=a(wQ),bac=a(p),bad=a("23436"),bae=a("28729"),baf=a(z),bag=a("31101"),bah=a(X),bai=a("32179"),baj=a(_),bak=a("33287"),bal=a(ah),bam=a("34380"),ban=a(P),bao=a(AY),bap=a(P),baq=a("3201"),bar=a(AY),bas=a(p),bat=a("21984"),bau=a("26666"),bav=a(z),baw=a("29072"),bax=a(X),bay=a("30274"),baz=a(_),baA=a("31491"),baB=a(ah),baC=a("32694"),baD=a(P),baE=a(BS),baF=a(P),baG=a("3045"),baH=a(BS),baJ=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a$W=[0,a(Q),B_,5,B_,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a$a=a(p),a$b=a("27195"),a$c=a("32773"),a$d=a(z),a$e=a("35237"),a$f=a(X),a$g=a("36222"),a$h=a(_),a$i=a("37240"),a$j=a(ah),a$k=a("38240"),a$l=a(P),a$m=a(BK),a$n=a(P),a$o=a("3401"),a$p=a(BK),a$q=a(p),a$r=a("23858"),a$s=a("29246"),a$t=a(z),a$u=a("31661"),a$v=a(X),a$w=a("32758"),a$x=a(_),a$y=a("33886"),a$z=a(ah),a$A=a("34999"),a$B=a(P),a$C=a(zL),a$D=a(P),a$E=a("3259"),a$F=a(zL),a$G=a(p),a$H=a("22380"),a$I=a("27146"),a$J=a(z),a$K=a("29595"),a$L=a(X),a$M=a("30819"),a$N=a(_),a$O=a("32058"),a$P=a(ah),a$Q=a("33282"),a$R=a(P),a$S=a(AL),a$T=a(P),a$U=a("3100"),a$V=a(AL),a$X=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a__=[0,a(Q),zl,5,zl,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a_o=a(p),a_p=a("27956"),a_q=a("33691"),a_r=a(z),a_s=a("36224"),a_t=a(X),a_u=a("37236"),a_v=a(_),a_w=a("38283"),a_x=a(ah),a_y=a("39311"),a_z=a(P),a_A=a(yP),a_B=a(P),a_C=a("3496"),a_D=a(yP),a_E=a(p),a_F=a("24526"),a_G=a("30065"),a_H=a(z),a_I=a("32548"),a_J=a(X),a_K=a("33675"),a_L=a(_),a_M=a(FF),a_N=a(ah),a_O=a("35979"),a_P=a(P),a_Q=a(AW),a_R=a(P),a_S=a("3350"),a_T=a(AW),a_U=a(p),a_V=a("23007"),a_W=a("27906"),a_X=a(z),a_Y=a("30424"),a_Z=a(X),a_0=a("31682"),a_1=a(_),a_2=a(yU),a_3=a(ah),a_4=a("34214"),a_5=a(P),a_6=a(EA),a_7=a(P),a_8=a("3187"),a_9=a(EA),a_$=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a_m=[0,a(Q),B7,5,B7,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a9C=a(p),a9D=a("28728"),a9E=a("34621"),a9F=a(z),a9G=a("37224"),a9H=a(X),a9I=a("38264"),a9J=a(_),a9K=a(ys),a9L=a(ah),a9M=a("40396"),a9N=a(P),a9O=a(x3),a9P=a(P),a9Q=a("3592"),a9R=a(x3),a9S=a(p),a9T=a("25203"),a9U=a("30895"),a9V=a(z),a9W=a("33446"),a9X=a(X),a9Y=a("34604"),a9Z=a(_),a90=a("35796"),a91=a(ah),a92=a("36972"),a93=a(P),a94=a(Fr),a95=a(P),a96=a("3442"),a97=a(Fr),a98=a(p),a99=a("23642"),a9_=a("28676"),a9$=a(z),a_a=a(xE),a_b=a(X),a_c=a("32556"),a_d=a(_),a_e=a("33866"),a_f=a(ah),a_g=a("35158"),a_h=a(P),a_i=a(wv),a_j=a(P),a_k=a("3275"),a_l=a(wv),a_n=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a9A=[0,a(Q),E$,5,E$,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a8Q=a(p),a8R=a("29575"),a8S=a("35642"),a8T=a(z),a8U=a("38322"),a8V=a(X),a8W=a("39393"),a8X=a(_),a8Y=a("40501"),a8Z=a(ah),a80=a("41588"),a81=a(P),a82=a(Dx),a83=a(P),a84=a("3698"),a85=a(Dx),a86=a(p),a87=a("25946"),a88=a("31806"),a89=a(z),a8_=a("34433"),a8$=a(X),a9a=a("35625"),a9b=a(_),a9c=a("36852"),a9d=a(ah),a9e=a("38063"),a9f=a(P),a9g=a(AH),a9h=a(P),a9i=a("3544"),a9j=a(AH),a9k=a(p),a9l=a("24339"),a9m=a("29522"),a9n=a(z),a9o=a("32186"),a9p=a(X),a9q=a("33516"),a9r=a(_),a9s=a(FF),a9t=a(ah),a9u=a("36195"),a9v=a(P),a9w=a(Et),a9x=a(P),a9y=a("3372"),a9z=a(Et),a9B=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a8O=[0,a(Q),E2,5,E2,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a74=a(p),a75=a("29670"),a76=a("35757"),a77=a(z),a78=a("38445"),a79=a(X),a7_=a("39519"),a7$=a(_),a8a=a("40601"),a8b=a(ah),a8c=a("41721"),a8d=a(P),a8e=a(DF),a8f=a(P),a8g=a("3710"),a8h=a(DF),a8i=a(p),a8j=a("26029"),a8k=a("31908"),a8l=a(z),a8m=a("34643"),a8n=a(X),a8o=a("35739"),a8p=a(_),a8q=a("36970"),a8r=a(ah),a8s=a("38185"),a8t=a(P),a8u=a(Bl),a8v=a(P),a8w=a("3555"),a8x=a(Bl),a8y=a(p),a8z=a("24417"),a8A=a("29616"),a8B=a(z),a8C=a("32289"),a8D=a(X),a8E=a(zM),a8F=a(_),a8G=a("34977"),a8H=a(ah),a8I=a("36311"),a8J=a(P),a8K=a(Al),a8L=a(P),a8M=a("3383"),a8N=a(Al),a8P=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a72=[0,a(Q),y4,5,y4,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a7g=a(p),a7h=a("29996"),a7i=a("36149"),a7j=a(z),a7k=a("38868"),a7l=a(X),a7m=a("39954"),a7n=a(_),a7o=a("41078"),a7p=a(ah),a7q=a("42180"),a7r=a(P),a7s=a(BD),a7t=a(P),a7u=a("3751"),a7v=a(BD),a7w=a(p),a7x=a("26315"),a7y=a("32259"),a7z=a(z),a7A=a("34923"),a7B=a(X),a7C=a("36132"),a7D=a(_),a7E=a("37373"),a7F=a(ah),a7G=a("38605"),a7H=a(P),a7I=a(DP),a7J=a(P),a7K=a("3594"),a7L=a(DP),a7M=a(p),a7N=a("24686"),a7O=a("29942"),a7P=a(z),a7Q=a("32644"),a7R=a(X),a7S=a("33993"),a7T=a(_),a7U=a("35362"),a7V=a(ah),a7W=a("36710"),a7X=a(P),a7Y=a(AD),a7Z=a(P),a70=a("3420"),a71=a(AD),a73=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a7e=[0,a(Q),zV,5,zV,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a6u=a(p),a6v=a("30296"),a6w=a("36510"),a6x=a(z),a6y=a("39257"),a6z=a(X),a6A=a("40354"),a6B=a(_),a6C=a("41489"),a6D=a(ah),a6E=a("42602"),a6F=a(P),a6G=a(v_),a6H=a(P),a6I=a("3789"),a6J=a(v_),a6K=a(p),a6L=a("26578"),a6M=a("32582"),a6N=a(z),a6O=a("35272"),a6P=a(X),a6Q=a("36493"),a6R=a(_),a6S=a("37751"),a6T=a(ah),a6U=a("38991"),a6V=a(P),a6W=a(xU),a6X=a(P),a6Y=a("3630"),a6Z=a(xU),a60=a(p),a61=a("24933"),a62=a("30241"),a63=a(z),a64=a("32970"),a65=a(X),a66=a("34333"),a67=a(_),a68=a("35716"),a69=a(ah),a6_=a("37077"),a6$=a(P),a7a=a(vd),a7b=a(P),a7c=a("3454"),a7d=a(vd),a7f=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a6s=[0,a(Q),wL,5,wL,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a5I=a(p),a5J=a("30947"),a5K=a("37295"),a5L=a(z),a5M=a("40101"),a5N=a(X),a5O=a("41222"),a5P=a(_),a5Q=a("42381"),a5R=a(ah),a5S=a("43518"),a5T=a(P),a5U=a(CV),a5V=a(P),a5W=a("3870"),a5X=a(CV),a5Y=a(p),a5Z=a("27149"),a50=a("33283"),a51=a(z),a52=a("36030"),a53=a(X),a54=a("37278"),a55=a(_),a56=a("38563"),a57=a(ah),a58=a("39829"),a59=a(P),a5_=a("42649"),a5$=a(P),a6a=a("3708"),a6b=a("42659"),a6c=a(p),a6d=a("25469"),a6e=a("30891"),a6f=a(z),a6g=a("33679"),a6h=a(X),a6i=a("35071"),a6j=a(_),a6k=a("36484"),a6l=a(ah),a6m=a("37874"),a6n=a(P),a6o=a(C3),a6p=a(P),a6q=a("3528"),a6r=a(C3),a6t=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a5G=[0,a(Q),yb,5,yb,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a4W=a(p),a4X=a("31123"),a4Y=a("37508"),a4Z=a(z),a40=a("40330"),a41=a(X),a42=a("41457"),a43=a(_),a44=a("42623"),a45=a(ah),a46=a("43766"),a47=a(P),a48=a(ve),a49=a(P),a4_=a("3892"),a4$=a(ve),a5a=a(p),a5b=a("27304"),a5c=a("33473"),a5d=a(z),a5e=a("36235"),a5f=a(X),a5g=a("37490"),a5h=a(_),a5i=a("38783"),a5j=a(ah),a5k=a("40056"),a5l=a(P),a5m=a(Cn),a5n=a(P),a5o=a("3729"),a5p=a(Cn),a5q=a(p),a5r=a("25614"),a5s=a("31067"),a5t=a(z),a5u=a("33871"),a5v=a(X),a5w=a("35271"),a5x=a(_),a5y=a("36692"),a5z=a(ah),a5A=a("38090"),a5B=a(P),a5C=a(zz),a5D=a(P),a5E=a("3548"),a5F=a(zz),a5H=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a4U=[0,a(Q),FN,5,FN,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a3_=a(p),a3$=a("31148"),a4a=a("37538"),a4b=a(z),a4c=a("40362"),a4d=a(X),a4e=a("41490"),a4f=a(_),a4g=a("42657"),a4h=a(ah),a4i=a("43801"),a4j=a(P),a4k=a(xw),a4l=a(P),a4m=a("3895"),a4n=a(xw),a4o=a(p),a4p=a("27326"),a4q=a(FZ),a4r=a(z),a4s=a("36264"),a4t=a(X),a4u=a("37520"),a4v=a(_),a4w=a("38814"),a4x=a(ah),a4y=a("40088"),a4z=a(P),a4A=a(FP),a4B=a(P),a4C=a("3732"),a4D=a(FP),a4E=a(p),a4F=a("25634"),a4G=a("31092"),a4H=a(z),a4I=a("33898"),a4J=a(X),a4K=a("35299"),a4L=a(_),a4M=a("36721"),a4N=a(ah),a4O=a("38120"),a4P=a(P),a4Q=a(Ah),a4R=a(P),a4S=a("3551"),a4T=a(Ah),a4V=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a38=[0,a(Q),m3,5,m3,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a3m=a(p),a3n=a("31382"),a3o=a("37820"),a3p=a(z),a3q=a("40665"),a3r=a(X),a3s=a("41801"),a3t=a(_),a3u=a("42977"),a3v=a(ah),a3w=a("44130"),a3x=a(P),a3y=a(Ab),a3z=a(P),a3A=a("3924"),a3B=a(Ab),a3C=a(p),a3D=a("27531"),a3E=a("33751"),a3F=a(z),a3G=a("36536"),a3H=a(X),a3I=a("37801"),a3J=a(_),a3K=a("39105"),a3L=a(ah),a3M=a("40389"),a3N=a(P),a3O=a(wK),a3P=a(P),a3Q=a("3760"),a3R=a(wK),a3S=a(p),a3T=a("25826"),a3U=a("31325"),a3V=a(z),a3W=a("34152"),a3X=a(X),a3Y=a("35564"),a3Z=a(_),a30=a("36996"),a31=a(ah),a32=a("38406"),a33=a(P),a34=a(zP),a35=a(P),a36=a("3578"),a37=a(zP),a39=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a3k=[0,a(Q),zj,5,zj,32,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a2A=a(p),a2B=a("31476"),a2C=a("37933"),a2D=a(z),a2E=a("40787"),a2F=a(X),a2G=a("41927"),a2H=a(_),a2I=a("43106"),a2J=a(ah),a2K=a("44262"),a2L=a(P),a2M=a(wz),a2N=a(P),a2O=a("3936"),a2P=a(wz),a2Q=a(p),a2R=a("27614"),a2S=a("33853"),a2T=a(z),a2U=a("36646"),a2V=a(X),a2W=a("37915"),a2X=a(_),a2Y=a("39222"),a2Z=a(ah),a20=a("40510"),a21=a(P),a22=a(E4),a23=a(P),a24=a("3771"),a25=a(E4),a26=a(p),a27=a("25904"),a28=a("31419"),a29=a(z),a2_=a("34255"),a2$=a(X),a3a=a("35670"),a3b=a(_),a3c=a("37107"),a3d=a(ah),a3e=a("38521"),a3f=a(P),a3g=a(F2),a3h=a(P),a3i=a("3588"),a3j=a(F2),a3l=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bhM=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a2z=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a2w=[0,a(E),F0,14,F0,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a2u=a(p),a2v=a(p),a2x=[0,a(d),n7,10,n7,32,[0,a(D),[0,a(A),[0,a(e),0]]]],a2t=[0,a(d),n7,10,n7,32,[0,a(D),[0,a(A),[0,a(e),0]]]],a2o=[0,a(aO),u_,5,u_,16,[0,a(os),[0,a(bB),[0,a(aM),0]]]],a2l=a(gO),a2m=a(qz),a2n=a(fg),a2p=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a2k=[0,a(aO),hz,43,hz,70,[0,a(vw),[0,a(bB),[0,a(aM),0]]]],a2g=a(p),a2h=a(fg),a2i=a(gO),a2j=a(fg),a2q=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a2d=[0,a(Q),F7,5,F7,16,[0,a(os),[0,a(bn),[0,a(L),0]]]],a2a=a(gB),a2b=a(qW),a2c=a(fp),a2e=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1$=[0,a(Q),AN,31,AN,58,[0,a(vw),[0,a(bn),[0,a(L),0]]]],a17=a(p),a18=a(fp),a19=a(gB),a1_=a(fp),a2f=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a16=[0,a(d),dp,47,dp,53,[0,a(D),[0,a(A),[0,a(e),0]]]],a10=[0,a(d),iS,14,iS,50,[0,a(D),[0,a(A),[0,a(e),0]]]],a1U=[0,a(E),hA,14,hA,64,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1Q=[0,a(E),hn,14,hn,59,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1M=[0,a(Q),A5,14,A5,33,[0,a(C0),[0,a(bn),[0,a(L),0]]]],a1L=a(AI),a1H=[0,a(Q),vr,14,vr,33,[0,a(CD),[0,a(bn),[0,a(L),0]]]],a1G=a(se),a1C=[0,a(Q),Dh,14,Dh,41,[0,a(C0),[0,a(bn),[0,a(L),0]]]],a1B=a("390000"),a1x=[0,a(Q),Ei,14,Ei,41,[0,a(CD),[0,a(bn),[0,a(L),0]]]],a1w=a(qH),a1s=[0,a(Q),vz,14,vz,41,[0,a("Article 36"),[0,a(bn),[0,a(L),0]]]],a1r=a(id),a1n=[0,a(fc),C6,14,C6,36,[0,a(C_),[0,a(zh),0]]],a1l=a(vB),a1m=a(et),a1h=[0,a(Q),xk,14,xk,40,[0,a("Article 35"),[0,a(bn),[0,a(L),0]]]],a1g=a(kk),a1i=[0,a(d),ol,11,ol,37,[0,a(D),[0,a(A),[0,a(e),0]]]],a1f=[0,a(d),ol,11,ol,37,[0,a(D),[0,a(A),[0,a(e),0]]]],a1j=[0,a(V),[0,a("montant_forfaitaire_d842_6"),0]],a1o=[0,a(d),oa,11,oa,33,[0,a(D),[0,a(A),[0,a(e),0]]]],a1k=[0,a(d),oa,11,oa,33,[0,a(D),[0,a(A),[0,a(e),0]]]],a1p=[0,a(V),[0,a(FD),0]],a1t=[0,a(d),o7,11,o7,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1q=[0,a(d),o7,11,o7,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1u=[0,a(V),[0,a("montant_minimal_aide_d842_6"),0]],a1y=[0,a(d),lS,11,lS,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1v=[0,a(d),lS,11,lS,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1z=[0,a(V),[0,a("montant_forfaitaire_d842_11"),0]],a1D=[0,a(d),mV,11,mV,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1A=[0,a(d),mV,11,mV,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1E=[0,a(V),[0,a("montant_forfaitaire_d842_12"),0]],a1I=[0,a(d),oT,11,oT,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1F=[0,a(d),oT,11,oT,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1J=[0,a(V),[0,a("coefficient_d842_11"),0]],a1N=[0,a(d),me,11,me,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1K=[0,a(d),me,11,me,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1O=[0,a(V),[0,a("coefficient_d842_12"),0]],a1R=[0,a(E),hn,14,hn,59,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1S=[0,a(V),[0,a(nk),0]],a1P=[0,a(E),hn,14,hn,59,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1V=[0,a(E),hA,14,hA,64,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1W=[0,a(V),[0,a(n2),0]],a1T=[0,a(E),hA,14,hA,64,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1X=[0,a(V),[0,a(ga),[0,a(kq),0]]],a1Y=[0,a(V),[0,a(ga),[0,a(kq),0]]],a11=[0,a(d),iS,14,iS,50,[0,a(D),[0,a(A),[0,a(e),0]]]],a12=[0,a(V),[0,a(kA),0]],a1Z=[0,a(d),iS,14,iS,50,[0,a(D),[0,a(A),[0,a(e),0]]]],a13=[0,a(V),[0,a(eJ),[0,a(bk),0]]],a14=[0,a(V),[0,a(eJ),[0,a(bk),0]]],a2r=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a15=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a2s=[0,a(V),[0,a(qA),0]],a2y=[0,a(V),[0,a(bI),0]],bhN=[0,a(V),[0,a(b$),0]],bhT=[0,a(d),fU,11,fU,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bhO=[0,a(d),fU,11,fU,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bhU=[0,a(V),[0,a("seuil_minimal_ressources_m\xc3\xa9nage"),0]],bhY=[0,a(V),[0,a(dc),0]],bir=[0,a(V),[0,a(dD),0]],biz=[0,a(d),iT,10,iT,15,[0,a(D),[0,a(A),[0,a(e),0]]]],bis=[0,a(d),iT,10,iT,15,[0,a(D),[0,a(A),[0,a(e),0]]]],biA=[0,a(V),[0,a(C2),0]],biR=[0,a(d),hY,11,hY,36,[0,a(D),[0,a(A),[0,a(e),0]]]],biB=[0,a(d),hY,11,hY,36,[0,a(D),[0,a(A),[0,a(e),0]]]],biS=[0,a(V),[0,a("plafond_mensualit\xc3\xa9_d842_6"),0]],biV=[0,a(E),js,14,js,75,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biW=[0,a(V),[0,a(mM),0]],biT=[0,a(E),js,14,js,75,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biZ=[0,a(E),hF,14,hF,69,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bi0=[0,a(V),[0,a(oo),0]],biX=[0,a(E),hF,14,hF,69,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bi3=[0,a(E),hv,14,hv,70,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bi4=[0,a(V),[0,a(mB),0]],bi1=[0,a(E),hv,14,hv,70,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bi5=[0,a(V),[0,a(fJ),[0,a(dP),0]]],bi6=[0,a(V),[0,a(fJ),[0,a(dP),0]]],bi_=[0,a(d),ju,14,ju,59,[0,a(D),[0,a(A),[0,a(e),0]]]],bi$=[0,a(V),[0,a(x2),0]],bi7=[0,a(d),ju,14,ju,59,[0,a(D),[0,a(A),[0,a(e),0]]]],bjc=[0,a(d),ix,14,ix,61,[0,a(D),[0,a(A),[0,a(e),0]]]],bjd=[0,a(V),[0,a(zD),0]],bja=[0,a(d),ix,14,ix,61,[0,a(D),[0,a(A),[0,a(e),0]]]],bjg=[0,a(d),jo,14,jo,67,[0,a(D),[0,a(A),[0,a(e),0]]]],bjh=[0,a(V),[0,a(vF),0]],bje=[0,a(d),jo,14,jo,67,[0,a(D),[0,a(A),[0,a(e),0]]]],bjk=[0,a(d),iY,14,iY,65,[0,a(D),[0,a(A),[0,a(e),0]]]],bjl=[0,a(V),[0,a(FA),0]],bji=[0,a(d),iY,14,iY,65,[0,a(D),[0,a(A),[0,a(e),0]]]],bjo=[0,a(d),ih,14,ih,70,[0,a(D),[0,a(A),[0,a(e),0]]]],bjp=[0,a(V),[0,a(Cu),0]],bjm=[0,a(d),ih,14,ih,70,[0,a(D),[0,a(A),[0,a(e),0]]]],bjs=[0,a(d),i1,14,i1,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bjt=[0,a(V),[0,a(CG),0]],bjq=[0,a(d),i1,14,i1,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bjw=[0,a(d),hP,14,hP,53,[0,a(D),[0,a(A),[0,a(e),0]]]],bjx=[0,a(V),[0,a(Fb),0]],bju=[0,a(d),hP,14,hP,53,[0,a(D),[0,a(A),[0,a(e),0]]]],bjB=[0,a(d),gE,14,gE,49,[0,a(D),[0,a(A),[0,a(e),0]]]],bjC=[0,a(V),[0,a(wn),0]],bjy=[0,a(d),gE,14,gE,49,[0,a(D),[0,a(A),[0,a(e),0]]]],bjJ=[0,a(V),[0,a(nL),[0,a(au),0]]],bjK=[0,a(V),[0,a(nL),[0,a(au),0]]],bjP=[0,a(d),gS,11,gS,47,[0,a(D),[0,a(A),[0,a(e),0]]]],bjL=[0,a(d),gS,11,gS,47,[0,a(D),[0,a(A),[0,a(e),0]]]],bjQ=[0,a(V),[0,a("seuil_minimal_d\xc3\xa9pense_nette_minimale"),0]],bjT=[0,a(d),oh,11,oh,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bjR=[0,a(d),oh,11,oh,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bjU=[0,a(V),[0,a(sm),0]],bjX=[0,a(d),kz,11,kz,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bjV=[0,a(d),kz,11,kz,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bjY=[0,a(V),[0,a(q7),0]],bj1=[0,a(d),kP,11,kP,38,[0,a(D),[0,a(A),[0,a(e),0]]]],bjZ=[0,a(d),kP,11,kP,38,[0,a(D),[0,a(A),[0,a(e),0]]]],bj2=[0,a(V),[0,a(q4),0]],bj$=[0,a(V),[0,a(eK),0]],bkc=[0,a(d),m9,12,m9,31,[0,a(D),[0,a(A),[0,a(e),0]]]],bka=[0,a(d),m9,12,m9,31,[0,a(D),[0,a(A),[0,a(e),0]]]],bkd=[0,a(V),[0,a(cX),0]],bkq=[0,a(V),[0,a(er),0]],bkF=[0,a(V),[0,a(bJ),0]],bkO=[0,a(V),[0,a(fm),0]],a1c=[0,a(E),yE,14,yE,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a09=[0,a(ao),[0,a(bJ),[0,a(ac),0]]],a0_=[0,a(ao),[0,a(bJ),0]],a0$=[0,a(ao),[0,a(bJ),[0,a(ae),0]]],a1a=[0,a(ao),[0,a(bJ),0]],a1b=a(p),a1d=[0,a(d),nd,10,nd,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a08=[0,a(d),nd,10,nd,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a05=[0,a(E),xG,14,xG,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0U=[0,a(ao),[0,a(kG),[0,a(ac),0]]],a0V=[0,a(ao),[0,a(kG),0]],a0W=[0,a(ao),[0,a(kG),[0,a(ae),0]]],a0X=[0,a(ao),[0,a(kG),0]],a0Y=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],a0Z=[0,a(bk),[0,a(bQ),0]],a00=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],a01=[0,a(bk),[0,a(bQ),0]],a02=a(kY),a03=a(p),a04=a(p),a06=[0,a(d),lU,10,lU,40,[0,a(N),[0,a(A),[0,a(e),0]]]],a0T=[0,a(d),lU,10,lU,40,[0,a(N),[0,a(A),[0,a(e),0]]]],a0Q=[0,a(E),w0,14,w0,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0M=[0,a(ao),[0,a(er),[0,a(ac),0]]],a0N=[0,a(ao),[0,a(er),0]],a0O=[0,a(ao),[0,a(er),[0,a(ae),0]]],a0P=[0,a(ao),[0,a(er),0]],a0R=[0,a(d),kB,10,kB,19,[0,a(N),[0,a(A),[0,a(e),0]]]],a0L=[0,a(d),kB,10,kB,19,[0,a(N),[0,a(A),[0,a(e),0]]]],a0I=[0,a(E),AQ,14,AQ,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0y=[0,a(ao),[0,a(bI),[0,a(ac),0]]],a0z=[0,a(ao),[0,a(bI),0]],a0A=[0,a(ao),[0,a(bI),[0,a(ae),0]]],a0B=[0,a(ao),[0,a(bI),0]],a0C=[0,a(ao),[0,a(eK),[0,a(ac),0]]],a0D=[0,a(ao),[0,a(eK),0]],a0E=[0,a(ao),[0,a(eK),[0,a(ae),0]]],a0F=[0,a(ao),[0,a(eK),0]],a0G=a(p),a0H=a(p),a0J=[0,a(d),l7,10,l7,32,[0,a(N),[0,a(A),[0,a(e),0]]]],a0x=[0,a(d),l7,10,l7,32,[0,a(N),[0,a(A),[0,a(e),0]]]],a0u=[0,a(E),DJ,14,DJ,33,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0q=[0,a(E),yK,14,yK,47,[0,a(CQ),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0h=[0,a(ao),[0,a(dc),[0,a(ac),0]]],a0i=[0,a(ao),[0,a(dc),0]],a0j=[0,a(ao),[0,a(dc),[0,a(ae),0]]],a0k=[0,a(ao),[0,a(dc),0]],a0l=[0,a(ao),[0,a(dc),[0,a(ac),0]]],a0m=[0,a(ao),[0,a(dc),0]],a0n=[0,a(ao),[0,a(dc),[0,a(ae),0]]],a0o=[0,a(ao),[0,a(dc),0]],a0p=a(p),a0r=[0,a(d),n1,11,n1,44,[0,a(N),[0,a(A),[0,a(e),0]]]],a0g=[0,a(d),n1,11,n1,44,[0,a(N),[0,a(A),[0,a(e),0]]]],a0d=[0,a(E),Fe,14,Fe,27,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ$=[0,a(E),BO,14,BO,36,[0,a(CQ),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0a=[0,a(d),mf,11,mf,33,[0,a(N),[0,a(A),[0,a(e),0]]]],aZ_=[0,a(d),mf,11,mf,33,[0,a(N),[0,a(A),[0,a(e),0]]]],aZ7=[0,a(E),y6,14,y6,41,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ1=[0,a(E),ht,14,ht,70,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZX=[0,a(E),h6,14,h6,69,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZT=[0,a(E),hU,14,hU,75,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZP=[0,a(E),D8,14,D8,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZN=a(p),aZO=a(p),aZQ=[0,a(d),oB,10,oB,32,[0,a(N),[0,a(A),[0,a(e),0]]]],aZM=[0,a(d),oB,10,oB,32,[0,a(N),[0,a(A),[0,a(e),0]]]],aZI=[0,a(Q),yh,6,yh,79,[0,a(fG),[0,a(fZ),[0,a(L),0]]]],aZG=a("8708"),aZH=a("13559"),aZJ=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZE=[0,a(Q),4144,6,4145,38,[0,a(fG),[0,a(fZ),[0,a(L),0]]]],aZC=a("21362"),aZD=a("33196"),aZF=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZz=[0,a(Q),4162,6,4163,24,[0,a(fG),[0,a(fZ),[0,a(L),0]]]],aZx=a(Ae),aZy=a(AA),aZA=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZw=[0,a(Q),4126,6,4127,46,[0,a(fG),[0,a(fZ),[0,a(L),0]]]],aZu=a(Ae),aZv=a(AA),aZB=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZs=[0,a(aO),sq,6,sq,79,[0,a(fG),[0,a(bB),[0,a(aM),0]]]],aZq=a("8414"),aZr=a("13100"),aZt=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZo=[0,a(aO),j6,6,747,38,[0,a(fG),[0,a(bB),[0,a(aM),0]]]],aZm=a("20640"),aZn=a("32073"),aZp=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZj=[0,a(aO),765,6,766,24,[0,a(fG),[0,a(bB),[0,a(aM),0]]]],aZh=a(D7),aZi=a(zW),aZk=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZg=[0,a(aO),727,6,728,46,[0,a(fG),[0,a(bB),[0,a(aM),0]]]],aZe=a(D7),aZf=a(zW),aZl=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aY$=[0,a(Q),D_,14,D_,41,[0,a(B8),[0,a(fZ),[0,a(L),0]]]],aY7=a(p),aY8=a(fp),aY9=a(gB),aY_=a(fp),aZa=[0,a(d),fD,12,fD,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aY5=[0,a(aO),Bz,14,Bz,41,[0,a(B8),[0,a(bB),[0,a(aM),0]]]],aY1=a(p),aY2=a(fg),aY3=a(gO),aY4=a(fg),aY6=[0,a(d),fD,12,fD,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aYV=[0,a(E),nN,14,nN,61,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYW=[0,a(E),nN,14,nN,61,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYX=[0,a(ao),[0,a(Ek),0]],aYS=[0,a(d),h5,14,h5,49,[0,a(N),[0,a(A),[0,a(e),0]]]],aYO=[0,a(d),i9,14,i9,53,[0,a(N),[0,a(A),[0,a(e),0]]]],aYK=[0,a(d),iv,14,iv,44,[0,a(N),[0,a(A),[0,a(e),0]]]],aYG=[0,a(d),iz,14,iz,70,[0,a(N),[0,a(A),[0,a(e),0]]]],aYC=[0,a(d),hM,14,hM,65,[0,a(N),[0,a(A),[0,a(e),0]]]],aYy=[0,a(d),hi,14,hi,67,[0,a(N),[0,a(A),[0,a(e),0]]]],aYu=[0,a(d),iL,14,iL,61,[0,a(N),[0,a(A),[0,a(e),0]]]],aYq=[0,a(d),iP,14,iP,59,[0,a(N),[0,a(A),[0,a(e),0]]]],aYk=[0,a(d),f7,14,f7,50,[0,a(N),[0,a(A),[0,a(e),0]]]],aYe=[0,a(E),hr,14,hr,64,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYa=[0,a(E),jq,14,jq,59,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aX8=[0,a(E),is,14,is,55,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aX4=[0,a(Q),zb,14,zb,51,[0,a("Article 44"),[0,a(fZ),[0,a(L),0]]]],aX3=a(qH),aXZ=[0,a(Q),va,14,va,41,[0,a("Article 41"),[0,a(fZ),[0,a(L),0]]]],aXY=a(kk),aXU=[0,a(Q),CO,14,CO,42,[0,a("Article 42"),[0,a(fZ),[0,a(L),0]]]],aXT=a(id),aXV=[0,a(d),i5,11,i5,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aXS=[0,a(d),i5,11,i5,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aXW=[0,a(ao),[0,a("montant_minimal_aide_d842_15"),0]],aX0=[0,a(d),l0,11,l0,38,[0,a(N),[0,a(A),[0,a(e),0]]]],aXX=[0,a(d),l0,11,l0,38,[0,a(N),[0,a(A),[0,a(e),0]]]],aX1=[0,a(ao),[0,a("montant_forfaitaire_d842_15"),0]],aX5=[0,a(d),ns,11,ns,48,[0,a(N),[0,a(A),[0,a(e),0]]]],aX2=[0,a(d),ns,11,ns,48,[0,a(N),[0,a(A),[0,a(e),0]]]],aX6=[0,a(ao),[0,a("montant_minimal_d\xc3\xa9pense_nette_d842_17"),0]],aX9=[0,a(E),is,14,is,55,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aX_=[0,a(ao),[0,a(BI),0]],aX7=[0,a(E),is,14,is,55,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYb=[0,a(E),jq,14,jq,59,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYc=[0,a(ao),[0,a(nk),0]],aX$=[0,a(E),jq,14,jq,59,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYf=[0,a(E),hr,14,hr,64,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYg=[0,a(ao),[0,a(n2),0]],aYd=[0,a(E),hr,14,hr,64,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYh=[0,a(ao),[0,a(ga),[0,a(ky),0]]],aYi=[0,a(ao),[0,a(ga),[0,a(ky),0]]],aYl=[0,a(d),f7,14,f7,50,[0,a(N),[0,a(A),[0,a(e),0]]]],aYm=[0,a(ao),[0,a(kA),0]],aYj=[0,a(d),f7,14,f7,50,[0,a(N),[0,a(A),[0,a(e),0]]]],aYn=[0,a(ao),[0,a(eJ),[0,a(bk),0]]],aYo=[0,a(ao),[0,a(eJ),[0,a(bk),0]]],aYr=[0,a(d),iP,14,iP,59,[0,a(N),[0,a(A),[0,a(e),0]]]],aYs=[0,a(ao),[0,a(x2),0]],aYp=[0,a(d),iP,14,iP,59,[0,a(N),[0,a(A),[0,a(e),0]]]],aYv=[0,a(d),iL,14,iL,61,[0,a(N),[0,a(A),[0,a(e),0]]]],aYw=[0,a(ao),[0,a(zD),0]],aYt=[0,a(d),iL,14,iL,61,[0,a(N),[0,a(A),[0,a(e),0]]]],aYz=[0,a(d),hi,14,hi,67,[0,a(N),[0,a(A),[0,a(e),0]]]],aYA=[0,a(ao),[0,a(vF),0]],aYx=[0,a(d),hi,14,hi,67,[0,a(N),[0,a(A),[0,a(e),0]]]],aYD=[0,a(d),hM,14,hM,65,[0,a(N),[0,a(A),[0,a(e),0]]]],aYE=[0,a(ao),[0,a(FA),0]],aYB=[0,a(d),hM,14,hM,65,[0,a(N),[0,a(A),[0,a(e),0]]]],aYH=[0,a(d),iz,14,iz,70,[0,a(N),[0,a(A),[0,a(e),0]]]],aYI=[0,a(ao),[0,a(Cu),0]],aYF=[0,a(d),iz,14,iz,70,[0,a(N),[0,a(A),[0,a(e),0]]]],aYL=[0,a(d),iv,14,iv,44,[0,a(N),[0,a(A),[0,a(e),0]]]],aYM=[0,a(ao),[0,a(CG),0]],aYJ=[0,a(d),iv,14,iv,44,[0,a(N),[0,a(A),[0,a(e),0]]]],aYP=[0,a(d),i9,14,i9,53,[0,a(N),[0,a(A),[0,a(e),0]]]],aYQ=[0,a(ao),[0,a(Fb),0]],aYN=[0,a(d),i9,14,i9,53,[0,a(N),[0,a(A),[0,a(e),0]]]],aYT=[0,a(d),h5,14,h5,49,[0,a(N),[0,a(A),[0,a(e),0]]]],aYU=[0,a(ao),[0,a(wn),0]],aYR=[0,a(d),h5,14,h5,49,[0,a(N),[0,a(A),[0,a(e),0]]]],aYY=[0,a(ao),[0,a(nL),[0,a(au),0]]],aYZ=[0,a(ao),[0,a(nL),[0,a(au),0]]],aZb=[0,a(d),fD,12,fD,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aY0=[0,a(d),fD,12,fD,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aZc=[0,a(ao),[0,a(qA),0]],aZK=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZd=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZL=[0,a(ao),[0,a(u$),0]],aZR=[0,a(ao),[0,a(bI),0]],aZU=[0,a(E),hU,14,hU,75,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZV=[0,a(ao),[0,a(mM),0]],aZS=[0,a(E),hU,14,hU,75,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZY=[0,a(E),h6,14,h6,69,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZZ=[0,a(ao),[0,a(oo),0]],aZW=[0,a(E),h6,14,h6,69,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ2=[0,a(E),ht,14,ht,70,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ3=[0,a(ao),[0,a(mB),0]],aZ0=[0,a(E),ht,14,ht,70,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ4=[0,a(ao),[0,a(fJ),[0,a(dP),0]]],aZ5=[0,a(ao),[0,a(fJ),[0,a(dP),0]]],aZ8=[0,a(d),na,12,na,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aZ6=[0,a(d),na,12,na,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aZ9=[0,a(ao),[0,a(q4),0]],a0b=[0,a(ao),[0,a(dc),0]],a0e=[0,a(d),nu,12,nu,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a0c=[0,a(d),nu,12,nu,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a0f=[0,a(ao),[0,a(FS),0]],a0s=[0,a(ao),[0,a(eK),0]],a0v=[0,a(d),nG,12,nG,31,[0,a(N),[0,a(A),[0,a(e),0]]]],a0t=[0,a(d),nG,12,nG,31,[0,a(N),[0,a(A),[0,a(e),0]]]],a0w=[0,a(ao),[0,a(cX),0]],a0K=[0,a(ao),[0,a(er),0]],a0S=[0,a(ao),[0,a(kG),0]],a07=[0,a(ao),[0,a(bJ),0]],a1e=[0,a(ao),[0,a(fm),0]],aXO=[0,a(E),we,24,we,43,[0,a(Fu),[0,a(so),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aXN=a(p),aXP=[0,a(d),ia,12,ia,31,[0,a(K),[0,a(A),[0,a(e),0]]]],aXM=[0,a(d),ra,14,ra,33,[0,a(K),[0,a(A),[0,a(e),0]]]],aXH=[0,a(E),vV,24,vV,46,[0,a(Fu),[0,a(so),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aXI=[0,a(d),i_,12,i_,34,[0,a(K),[0,a(A),[0,a(e),0]]]],aXG=[0,a(d),Br,14,Br,36,[0,a(K),[0,a(A),[0,a(e),0]]]],aXC=[0,a(aD),[0,a(fm),[0,a(ac),0]]],aXD=[0,a(aD),[0,a(fm),0]],aXE=[0,a(aD),[0,a(fm),[0,a(ae),0]]],aXF=[0,a(aD),[0,a(fm),0]],aXJ=[0,a(d),i_,12,i_,34,[0,a(K),[0,a(A),[0,a(e),0]]]],aXB=[0,a(d),i_,12,i_,34,[0,a(K),[0,a(A),[0,a(e),0]]]],aXw=[0,a(d),gA,14,gA,55,[0,a(K),[0,a(A),[0,a(e),0]]]],aXs=[0,a(d),eU,14,eU,59,[0,a(K),[0,a(A),[0,a(e),0]]]],aXo=[0,a(d),gJ,14,gJ,43,[0,a(K),[0,a(A),[0,a(e),0]]]],aXk=[0,a(d),hC,14,hC,42,[0,a(K),[0,a(A),[0,a(e),0]]]],aXg=[0,a(d),rQ,5,rh,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aXc=[0,a(d),gF,14,gF,53,[0,a(K),[0,a(A),[0,a(e),0]]]],aW_=[0,a(d),jr,14,jr,37,[0,a(K),[0,a(A),[0,a(e),0]]]],aW6=[0,a(d),jd,14,jd,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aW2=[0,a(d),hx,14,hx,58,[0,a(K),[0,a(A),[0,a(e),0]]]],aWY=[0,a(d),ij,14,ij,46,[0,a(K),[0,a(A),[0,a(e),0]]]],aWU=[0,a(d),i6,14,i6,78,[0,a(K),[0,a(A),[0,a(e),0]]]],aWQ=[0,a(d),hG,14,hG,60,[0,a(K),[0,a(A),[0,a(e),0]]]],aWM=[0,a(d),jh,14,jh,48,[0,a(K),[0,a(A),[0,a(e),0]]]],aWN=[0,a(d),jh,14,jh,48,[0,a(K),[0,a(A),[0,a(e),0]]]],aWO=[0,a(bh),[0,a("calcul_apl_locatif.loyer_principal_base"),0]],aWL=[0,a(d),jh,14,jh,48,[0,a(K),[0,a(A),[0,a(e),0]]]],aWR=[0,a(d),hG,14,hG,60,[0,a(K),[0,a(A),[0,a(e),0]]]],aWS=[0,a(bh),[0,a("calcul_apl_locatif.ressources_m\xc3\xa9nage_arrondies"),0]],aWP=[0,a(d),hG,14,hG,60,[0,a(K),[0,a(A),[0,a(e),0]]]],aWV=[0,a(d),i6,14,i6,78,[0,a(K),[0,a(A),[0,a(e),0]]]],aWW=[0,a(bh),[0,a("calcul_apl_locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),0]],aWT=[0,a(d),i6,14,i6,78,[0,a(K),[0,a(A),[0,a(e),0]]]],aWZ=[0,a(d),ij,14,ij,46,[0,a(K),[0,a(A),[0,a(e),0]]]],aW0=[0,a(bh),[0,a("calcul_apl_locatif.date_courante"),0]],aWX=[0,a(d),ij,14,ij,46,[0,a(K),[0,a(A),[0,a(e),0]]]],aW3=[0,a(d),hx,14,hx,58,[0,a(K),[0,a(A),[0,a(e),0]]]],aW4=[0,a(bh),[0,a("calcul_apl_locatif.nombre_personnes_\xc3\xa0_charge"),0]],aW1=[0,a(d),hx,14,hx,58,[0,a(K),[0,a(A),[0,a(e),0]]]],aW7=[0,a(d),jd,14,jd,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aW8=[0,a(bh),[0,a("calcul_apl_locatif.situation_familiale_calcul_apl"),0]],aW5=[0,a(d),jd,14,jd,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aW$=[0,a(d),jr,14,jr,37,[0,a(K),[0,a(A),[0,a(e),0]]]],aXa=[0,a(bh),[0,a("calcul_apl_locatif.zone"),0]],aW9=[0,a(d),jr,14,jr,37,[0,a(K),[0,a(A),[0,a(e),0]]]],aXd=[0,a(d),gF,14,gF,53,[0,a(K),[0,a(A),[0,a(e),0]]]],aXe=[0,a(bh),[0,a("calcul_apl_locatif.logement_est_chambre"),0]],aXb=[0,a(d),gF,14,gF,53,[0,a(K),[0,a(A),[0,a(e),0]]]],aXh=[0,a(d),rQ,5,rh,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aXi=[0,a(bh),[0,a("calcul_apl_locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),0]],aXf=[0,a(d),rQ,5,rh,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aXl=[0,a(d),hC,14,hC,42,[0,a(K),[0,a(A),[0,a(e),0]]]],aXm=[0,a(bh),[0,a("calcul_apl_locatif.type_aide"),0]],aXj=[0,a(d),hC,14,hC,42,[0,a(K),[0,a(A),[0,a(e),0]]]],aXp=[0,a(d),gJ,14,gJ,43,[0,a(K),[0,a(A),[0,a(e),0]]]],aXq=[0,a(bh),[0,a("calcul_apl_locatif.colocation"),0]],aXn=[0,a(d),gJ,14,gJ,43,[0,a(K),[0,a(A),[0,a(e),0]]]],aXt=[0,a(d),eU,14,eU,59,[0,a(K),[0,a(A),[0,a(e),0]]]],aXu=[0,a(bh),[0,a("calcul_apl_locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),0]],aXr=[0,a(d),eU,14,eU,59,[0,a(K),[0,a(A),[0,a(e),0]]]],aXx=[0,a(d),gA,14,gA,55,[0,a(K),[0,a(A),[0,a(e),0]]]],aXy=[0,a(bh),[0,a("calcul_apl_locatif.logement_meubl\xc3\xa9_d842_2"),0]],aXv=[0,a(d),gA,14,gA,55,[0,a(K),[0,a(A),[0,a(e),0]]]],aXz=[0,a(bh),[0,a(E9),[0,a(aD),0]]],aXA=[0,a(bh),[0,a(E9),[0,a(aD),0]]],aXK=[0,a(bh),[0,a(aw),0]],aXQ=[0,a(d),ia,12,ia,31,[0,a(K),[0,a(A),[0,a(e),0]]]],aXL=[0,a(d),ia,12,ia,31,[0,a(K),[0,a(A),[0,a(e),0]]]],aXR=[0,a(bh),[0,a(cX),0]],aWF=[0,a(mt),67,5,71,21,[0,a(gC),[0,a(gz),[0,a(ed),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],aWG=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWE=[0,a(mt),56,5,57,50,[0,a(gC),[0,a(gz),[0,a(ed),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],aWH=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWI=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWD=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWJ=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWC=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWy=[0,a(mt),77,5,81,24,[0,a(gC),[0,a(gz),[0,a(ed),[0,a(az),[0,a(aa),[0,a(af),0]]]]]]],aWz=[0,a(bG),41,12,41,31,[0,a(bK),0]],aWx=[0,a(bG),41,12,41,31,[0,a(bK),0]],aWA=[0,a(bG),41,12,41,31,[0,a(bK),0]],aWw=[0,a(bG),41,12,41,31,[0,a(bK),0]],aWs=[0,a(q6),62,18,62,41,[0,a(xK),[0,a(eX),[0,a(gK),[0,a(d0),[0,a(c5),[0,a(af),0]]]]]]],aWq=a(oR),aWr=a(n0),aWt=[0,a(bG),42,11,42,27,[0,a(bK),0]],aWp=[0,a(q6),31,14,31,30,[0,a(lW),[0,a(nR),[0,a(ed),[0,a(az),[0,a(c5),[0,a(af),0]]]]]]],aWn=a(oR),aWo=a(n0),aWc=[5,0],aWd=[4,0],aWe=[3,0],aWf=[2,0],aWg=[1,0],aWh=[0,0],aWi=[0,a(mt),dl,5,w5,30,[0,a(CP),[0,a(yD),[0,a(ke),[0,a(d0),[0,a(aa),[0,a(af),0]]]]]]],aWj=[0,a(bG),44,12,44,35,[0,a(bK),0]],aWb=[0,a(bG),44,12,44,35,[0,a(bK),0]],aV7=[0,a(bG),51,14,51,28,[0,a(bK),0]],aV3=[0,a(bG),52,14,52,32,[0,a(bK),0]],aVZ=[0,a(q6),21,14,21,26,[0,a(lW),[0,a(nR),[0,a(ed),[0,a(az),[0,a(c5),[0,a(af),0]]]]]]],aV0=[0,a(bG),43,12,43,24,[0,a(bK),0]],aVY=[0,a(bG),43,12,43,24,[0,a(bK),0]],aV1=[0,a(cq),[0,a(za),0]],aV4=[0,a(bG),52,14,52,32,[0,a(bK),0]],aV5=[0,a(cq),[0,a(Fa),0]],aV2=[0,a(bG),52,14,52,32,[0,a(bK),0]],aV8=[0,a(bG),51,14,51,28,[0,a(bK),0]],aV9=[0,a(cq),[0,a(DH),0]],aV6=[0,a(bG),51,14,51,28,[0,a(bK),0]],aV_=[0,a(cq),[0,a(gd),[0,a(hl),0]]],aV$=[0,a(cq),[0,a(gd),[0,a(hl),0]]],aWk=[0,a(bG),44,12,44,35,[0,a(bK),0]],aWa=[0,a(bG),44,12,44,35,[0,a(bK),0]],aWl=[0,a(cq),[0,a(vg),0]],aWu=[0,a(bG),42,11,42,27,[0,a(bK),0]],aWm=[0,a(bG),42,11,42,27,[0,a(bK),0]],aWv=[0,a(cq),[0,a(Aj),0]],aWB=[0,a(cq),[0,a(iU),0]],aWK=[0,a(cq),[0,a(dg),0]],aVT=[0,a(E),rZ,14,rZ,32,[0,a(mG),[0,a(iC),[0,a(dA),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVR=a(cI),aVS=a(p),aVM=[0,a(E),aR,6,gS,35,[0,a("Article R822-20"),[0,a("Sous-section 3 : Montant forfaitaire de ressources applicable aux \xc3\xa9tudiants"),[0,a(dA),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVN=[0,a(d),jk,12,jk,39,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVL=[0,a(E),kE,14,kE,41,[0,a(l3),[0,a(l6),[0,a(dA),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVH=[0,a(E),F9,14,F9,32,[0,a("Article R822-8"),[0,a(iC),[0,a(dA),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVG=a(p),aVA=[0,a(E),iq,14,iq,65,[0,a(mG),[0,a(iC),[0,a(dA),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVw=[0,a(E),y5,14,y5,33,[0,a("Article R822-10"),[0,a(iC),[0,a(dA),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVn=a(p),aVo=a(p),aVt=a(X),aVu=a("90100"),aVv=a("135000"),aVp=a(p),aVq=a(p),aVr=a(p),aVs=a(p),aVj=[0,a(E),iu,14,iu,62,[0,a(l3),[0,a(l6),[0,a(dA),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVi=a(p),aVe=[0,a(d),f5,51,f5,57,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVa=[0,a(Q),11,14,11,41,[0,a("Article 3"),[0,a(xL),[0,a(L),0]]]],aU$=a("9500"),aU7=[0,a(Q),21,14,21,41,[0,a("Article 4"),[0,a(xL),[0,a(L),0]]]],aU6=a("258900"),aU2=[0,a(d),E1,46,E1,52,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU3=[0,a(d),jf,10,jf,15,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU1=[0,a(d),jf,10,jf,15,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU4=[0,a(dX),[0,a(C2),0]],aU8=[0,a(d),lX,11,lX,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU5=[0,a(d),lX,11,lX,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU9=[0,a(dX),[0,a("montant_forfaitaire_r_822_8"),0]],aVb=[0,a(d),mv,11,mv,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU_=[0,a(d),mv,11,mv,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVc=[0,a(dX),[0,a("montant_forfaitaire_r_822_7"),0]],aVf=[0,a(d),f5,11,f5,42,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVd=[0,a(d),f5,11,f5,42,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVg=[0,a(dX),[0,a("ressources_forfaitaires_r822_20"),0]],aVk=[0,a(d),hh,11,hh,59,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVh=[0,a(d),hh,11,hh,59,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVl=[0,a(dX),[0,a("ressources_personnes_vivant_habituellement_foyer"),0]],aVx=[0,a(d),nV,11,nV,30,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVm=[0,a(d),nV,11,nV,30,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVy=[0,a(dX),[0,a("abattement_r_822_10"),0]],aVB=[0,a(E),iq,14,iq,65,[0,a(mG),[0,a(iC),[0,a(dA),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVC=[0,a(dX),[0,a(DY),0]],aVz=[0,a(E),iq,14,iq,65,[0,a(mG),[0,a(iC),[0,a(dA),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVD=[0,a(dX),[0,a(mU),[0,a(f_),0]]],aVE=[0,a(dX),[0,a(mU),[0,a(f_),0]]],aVI=[0,a(d),nB,11,nB,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVF=[0,a(d),nB,11,nB,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVJ=[0,a(dX),[0,a("abattement_r_822_8"),0]],aVO=[0,a(d),jk,12,jk,39,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVK=[0,a(d),jk,12,jk,39,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVP=[0,a(dX),[0,a("ressources_prises_en_compte"),0]],aVU=[0,a(d),mw,11,mw,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVQ=[0,a(d),mw,11,mw,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVV=[0,a(dX),[0,a("abattement_r_822_7"),0]],aVW=[0,a(E),mA,13,Dp,74,[0,a(l3),[0,a(l6),[0,a(dA),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVX=[0,a(E),mA,13,Dp,74,[0,a(l3),[0,a(l6),[0,a(dA),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aUR=[0,a(d),j5,14,j5,56,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUN=[0,a(d),B6,14,B6,63,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUL=a(b5),aUM=a(b5),aUH=[0,a(E),fb,14,fb,49,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUD=[0,a(aU),[0,a(kO),[0,a(ac),0]]],aUE=[0,a(aU),[0,a(kO),0]],aUF=[0,a(aU),[0,a(kO),[0,a(ae),0]]],aUG=[0,a(aU),[0,a(kO),0]],aUx=a(Do),aUw=[0,a(E),1213,4,1219,48,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUy=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUr=[0,a(aU),[0,a(fk),[0,a(ac),0]]],aUs=[0,a(aU),[0,a(fk),0]],aUt=[0,a(aU),[0,a(fk),[0,a(ae),0]]],aUu=[0,a(aU),[0,a(fk),0]],aUv=[0,a(E),x$,5,x$,44,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUz=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUp=[0,a(E),1149,5,rT,44,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUq=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUo=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUA=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUn=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUi=a(Do),aUj=[0,0],aUh=[0,a(E),1173,5,1189,10,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUk=[0,a(d),fq,12,fq,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUg=[0,a(d),fq,12,fq,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUl=[0,a(d),fq,12,fq,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUf=[0,a(d),fq,12,fq,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUb=[0,a(d),As,5,u4,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUc=[0,a(d),fF,12,fF,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUa=[0,a(d),fF,12,fF,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT8=[0,a(c6),Ge,14,Ge,31,[0,a("Article L351-8"),[0,a("Section 5 : Taux et montant de la pension"),[0,a("Chapitre 1er : Ouverture du droit, liquidation et calcul des pensions de retraite"),[0,a("Titre V : Assurance vieillesse - Assurance veuvage"),[0,a("Livre III : Dispositions relatives aux assurances sociales et \xc3\xa0 diverses cat\xc3\xa9gories de personnes rattach\xc3\xa9es au r\xc3\xa9gime g\xc3\xa9n\xc3\xa9rale"),[0,a(aa),[0,a(af),0]]]]]]]],aT2=[0,a(aG),72,5,73,52,[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]],aT3=[0,a(d),dy,11,dy,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT1=[0,a(aG),65,5,68,52,[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]],aT4=[0,a(d),dy,11,dy,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT0=[0,a(d),dy,11,dy,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTT=[0,a(aG),hS,18,hS,75,[0,a(mD),[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],aTS=a(p),aTU=[0,a(d),dE,11,dE,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTP=[5,0],aTQ=[4,0],aTR=[0,a(aG),vI,18,Ay,45,[0,a(mD),[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],aTO=a(p),aTV=[0,a(d),dE,11,dE,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTN=[0,a(E),Cw,5,Cw,58,[0,a(EX),[0,a(El),[0,a(dA),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aTW=[0,a(d),dE,11,dE,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTM=[0,a(aG),hj,33,hj,58,[0,a(mD),[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],aTL=a(p),aTH=[0,a(c6),cs,14,cs,32,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(aa),[0,a(af),0]]]]]]]]]],aTC=[0,a(aG),FU,18,FU,44,[0,a("Article L822-10"),[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],aTD=[0,a(d),fr,11,fr,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTB=[0,a(d),fr,11,fr,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTu=a(b5),aTt=a(b5),aTs=[0,a(aG),171,5,rA,65,[0,a(gx),[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],aTv=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTr=[0,a(aG),156,5,158,30,[0,a(gx),[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],aTw=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTq=[0,a(aG),cs,5,w5,33,[0,a(F6),[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],aTx=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTp=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTj=[0,a(aG),203,5,208,39,[0,a(DU),[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],aTk=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTi=[0,a(aG),197,5,198,34,[0,a(DU),[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],aTl=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTh=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTc=[0,a(c6),329,5,As,34,[0,a(rS),[0,a(ry),[0,a(r0),[0,a(qJ),[0,a(rl),[0,a(a9),[0,a(af),0]]]]]]]],aTb=a("999840"),aTd=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS$=[0,a(c6),j5,5,335,34,[0,a(rS),[0,a(ry),[0,a(r0),[0,a(qJ),[0,a(rl),[0,a(a9),[0,a(af),0]]]]]]]],aS_=a("1041840"),aTa=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS8=[0,a(c6),339,5,340,34,[0,a(rS),[0,a(ry),[0,a(r0),[0,a(qJ),[0,a(rl),[0,a(a9),[0,a(af),0]]]]]]]],aS7=a("1083840"),aS9=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS5=[0,a(fc),58,5,59,33,[0,a('Circulaire de la CNAV 2023-3 du 09/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2023"'),[0,a(r_),0]]],aS4=a("1153302"),aS6=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS2=[0,a(fc),90,5,91,33,[0,a('Circulaire de la CNAV 2022-3 du 11/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2022"'),[0,a(r_),0]]],aS1=a("1100144"),aS3=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSZ=[0,a(fc),ff,5,kE,33,[0,a('Circulaire de la CNAV 2021-1 du 11/01/2021 "Revalorisation \xc3\xa0 compter du 1er janvier 2021"'),[0,a(r_),0]]],aSY=a("1088175"),aS0=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aST=[0,a(aG),c3,5,ic,67,[0,a(F6),[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],aSU=[0,a(d),f1,11,f1,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSS=[0,a(d),f1,11,f1,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSO=[0,a(aG),mi,14,mi,40,[0,a(mD),[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],aSI=[0,a(c6),ff,14,ff,61,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(aa),[0,a(af),0]]]]]]]]]],aSC=[0,a(aG),46,5,46,41,[0,a("Article L821-2"),[0,a(z7),[0,a(E0),[0,a(yt),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]]]],aSD=[0,a(d),dh,12,dh,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSB=[0,a(d),dh,12,dh,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSE=[0,a(d),dh,12,dh,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSf=a(z),aSr=a(X),aSs=a(X),aSt=a(X),aSu=a(z),aSv=a(X),aSg=a(qC),aSh=a(qC),aSm=a(l1),aSn=a(l1),aSo=a(l1),aSp=a(qC),aSq=a(l1),aSi=a("8"),aSj=a(CN),aSk=a(CN),aSl=[0,a(E),1035,5,dB,65,[0,a("Article R822-25"),[0,a("Section 3 : Conditions relatives au logement"),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aSw=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSe=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSx=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR$=[0,a(aG),E5,18,E5,67,[0,a("Article L822-8"),[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],aSa=[0,a(d),fI,11,fI,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR_=[0,a(d),fI,11,fI,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR5=[0,a(aG),Cj,18,Cj,61,[0,a("Article L822-9"),[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],aR6=[0,a(d),fY,11,fY,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR4=[0,a(d),fY,11,fY,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR0=[0,a(aG),eY,14,eY,43,[0,a(gx),[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],aRW=[0,a(E),i5,14,i5,37,[0,a(EX),[0,a(El),[0,a(dA),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aRV=a("3000000"),aRR=[0,a(E),a_,14,a_,41,[0,a(FE),[0,a(BE),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRQ=a(DR),aRM=[0,a(E),be,14,be,42,[0,a(FE),[0,a(BE),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRL=a(DR),aRH=[0,a(d),hT,11,hT,48,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRD=[0,a(d),hE,11,hE,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRE=[0,a(d),hE,11,hE,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRC=[0,a(d),hE,11,hE,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRF=[0,a(aU),[0,a("condition_pr\xc3\xaat"),0]],aRI=[0,a(d),hT,11,hT,48,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRG=[0,a(d),hT,11,hT,48,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRJ=[0,a(aU),[0,a("condition_peuplement_logement_l822_10"),0]],aRN=[0,a(d),ox,11,ox,39,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRK=[0,a(d),ox,11,ox,39,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRO=[0,a(aU),[0,a("seuil_l822_3_parts_propri\xc3\xa9t\xc3\xa9"),0]],aRS=[0,a(d),nI,11,nI,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRP=[0,a(d),nI,11,nI,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRT=[0,a(aU),[0,a("seuil_l822_3_parts_usufruit"),0]],aRX=[0,a(d),oZ,11,oZ,34,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRU=[0,a(d),oZ,11,oZ,34,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRY=[0,a(aU),[0,a("seuil_l822_5_patrimoine"),0]],aR1=[0,a(d),l4,11,l4,40,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRZ=[0,a(d),l4,11,l4,40,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR2=[0,a(aU),[0,a("usufruit_ou_propri\xc3\xa9t\xc3\xa9_famille"),0]],aR7=[0,a(d),fY,11,fY,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR3=[0,a(d),fY,11,fY,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR8=[0,a(aU),[0,a("condition_non_ouverture_l822_9_decence_logement"),0]],aSb=[0,a(d),fI,11,fI,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR9=[0,a(d),fI,11,fI,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSc=[0,a(aU),[0,a("condition_non_ouverture_l822_8"),0]],aSy=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSd=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSz=[0,a(aU),[0,a("condition_logement_surface"),0]],aSF=[0,a(d),dh,12,dh,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSA=[0,a(d),dh,12,dh,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSG=[0,a(aU),[0,a("condition_logement_r\xc3\xa9sidence_principale"),0]],aSJ=[0,a(c6),ff,14,ff,61,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(aa),[0,a(af),0]]]]]]]]]],aSK=[0,a(aU),[0,a("ouverture_droits_retraite.date_naissance_assur\xc3\xa9"),0]],aSH=[0,a(c6),ff,14,ff,61,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(aa),[0,a(af),0]]]]]]]]]],aSL=[0,a(aU),[0,a(CK),[0,a(rI),0]]],aSM=[0,a(aU),[0,a(CK),[0,a(rI),0]]],aSP=[0,a(d),mj,11,mj,37,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSN=[0,a(d),mj,11,mj,37,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSQ=[0,a(aU),[0,a("patrimoine_total_demandeur"),0]],aSV=[0,a(d),f1,11,f1,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSR=[0,a(d),f1,11,f1,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSW=[0,a(aU),[0,a("condition_nationalit\xc3\xa9"),0]],aTe=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSX=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTf=[0,a(aU),[0,a("plafond_individuel_l815_9_s\xc3\xa9cu"),0]],aTm=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTg=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTn=[0,a(aU),[0,a("condition_logement_location_tiers"),0]],aTy=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTo=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTz=[0,a(aU),[0,a("condition_logement_mode_occupation"),0]],aTE=[0,a(d),fr,11,fr,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTA=[0,a(d),fr,11,fr,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTF=[0,a(aU),[0,a("condition_ouverture_l822_10_peuplement_logement"),0]],aTI=[0,a(d),mp,11,mp,29,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTG=[0,a(d),mp,11,mp,29,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTJ=[0,a(aU),[0,a("\xc3\xa2ge_l161_17_2_s\xc3\xa9cu"),0]],aTX=[0,a(d),dE,11,dE,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTK=[0,a(d),dE,11,dE,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTY=[0,a(aU),[0,a("patrimoine_pris_en_compte"),0]],aT5=[0,a(d),dy,11,dy,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTZ=[0,a(d),dy,11,dy,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT6=[0,a(aU),[0,a(Bg),0]],aT9=[0,a(d),h$,11,h$,28,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT7=[0,a(d),h$,11,h$,28,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT_=[0,a(aU),[0,a("\xc3\xa2ge_l351_8_1_s\xc3\xa9cu"),0]],aUd=[0,a(d),fF,12,fF,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT$=[0,a(d),fF,12,fF,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUe=[0,a(aU),[0,a(n$),0]],aUm=[0,a(aU),[0,a(fk),0]],aUB=[0,a(aU),[0,a(kO),0]],aUI=[0,a(d),kX,11,kX,46,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUC=[0,a(d),kX,11,kX,46,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUJ=[0,a(aU),[0,a("personnes_\xc3\xa0_charge_prises_en_compte"),0]],aUO=[0,a(d),oC,12,oC,61,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUK=[0,a(d),oC,12,oC,61,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUP=[0,a(aU),[0,a(kF),0]],aUS=[0,a(d),n4,12,n4,54,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUQ=[0,a(d),n4,12,n4,54,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUT=[0,a(aU),[0,a(r4),0]],aUV=a(qy),aUU=[0,a(aG),ms,13,ms,47,[0,a(gx),[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],aUZ=[0,a(aG),ms,13,ms,47,[0,a(gx),[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],aUX=a(qy),aUW=[0,a(aG),jt,13,jt,48,[0,a(gx),[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],aUY=[0,a(aG),jt,13,jt,48,[0,a(gx),[0,a(bd),[0,a(ad),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],aRz=[0,a(E),Du,14,Du,36,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRu=[0,a(aj),[0,a(bJ),[0,a(ac),0]]],aRv=[0,a(aj),[0,a(bJ),0]],aRw=[0,a(aj),[0,a(bJ),[0,a(ae),0]]],aRx=[0,a(aj),[0,a(bJ),0]],aRy=a(p),aRA=[0,a(d),ho,10,ho,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRt=[0,a(d),ho,10,ho,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRq=[0,a(E),yS,14,yS,33,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRo=a(p),aRp=a(p),aRk=[0,a(E),wV,14,wV,36,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQ$=[0,a(aj),[0,a(eN),[0,a(ac),0]]],aRa=[0,a(aj),[0,a(eN),0]],aRb=[0,a(aj),[0,a(eN),[0,a(ae),0]]],aRc=[0,a(aj),[0,a(eN),0]],aRd=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],aRe=[0,a(bk),[0,a(bQ),0]],aRf=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],aRg=[0,a(bk),[0,a(bQ),0]],aRh=a(kY),aRi=a(p),aRj=a(p),aRl=[0,a(d),m1,10,m1,40,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ_=[0,a(d),m1,10,m1,40,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ7=[0,a(E),Fp,14,Fp,49,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQ5=a(hc),aQ6=a(hc),aQ1=[0,a(E),uY,14,uY,33,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQX=[0,a(E),yO,14,yO,36,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQN=[0,a(aj),[0,a(bI),[0,a(ac),0]]],aQO=[0,a(aj),[0,a(bI),0]],aQP=[0,a(aj),[0,a(bI),[0,a(ae),0]]],aQQ=[0,a(aj),[0,a(bI),0]],aQR=[0,a(aj),[0,a(kQ),[0,a(ac),0]]],aQS=[0,a(aj),[0,a(kQ),0]],aQT=[0,a(aj),[0,a(kQ),[0,a(ae),0]]],aQU=[0,a(aj),[0,a(kQ),0]],aQV=a(p),aQW=a(p),aQY=[0,a(d),n3,10,n3,20,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQM=[0,a(d),n3,10,n3,20,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQJ=[0,a(E),yo,14,yo,49,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQG=a(c4),aQH=a(c4),aQI=a(lZ),aQB=[0,a(E),3426,5,3438,77,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQz=a(cI),aQA=a(b5),aQC=[0,a(d),fV,12,fV,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQx=[0,a(E),Dw,5,Dw,75,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQy=[0,a(d),fV,12,fV,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQq=[0,a(aO),DI,14,DI,42,[0,a(i$),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aQp=a(dd),aQr=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQo=[0,a(aO),hh,14,hh,42,[0,a(i$),[0,a(bB),[0,a(aM),0]]]],aQn=a(dd),aQs=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQm=[0,a(Q),Fm,14,Fm,42,[0,a(i$),[0,a(aQ),[0,a(L),0]]]],aQl=a(dd),aQt=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQh=[0,a(E),Ex,14,Ex,55,[0,a(rL),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQc=[0,a(aj),[0,a(kx),[0,a(ac),0]]],aQd=[0,a(aj),[0,a(kx),0]],aQe=[0,a(aj),[0,a(kx),[0,a(ae),0]]],aQf=[0,a(aj),[0,a(kx),0]],aQg=a(p),aQi=[0,a(d),m8,11,m8,52,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQb=[0,a(d),m8,11,m8,52,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aP_=[0,a(E),Au,14,Au,49,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP9=a(hc),aP3=[0,a(E),jj,14,jj,70,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPZ=[0,a(E),ji,14,ji,69,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPV=[0,a(E),h1,14,h1,75,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPQ=[0,a(E),z3,5,z3,44,[0,a(Bq),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPI=[0,a(aj),[0,a(dz),[0,a(ac),0]]],aPJ=[0,a(aj),[0,a(dz),0]],aPK=[0,a(aj),[0,a(dz),[0,a(ae),0]]],aPL=[0,a(aj),[0,a(dz),0]],aPM=[0,a(aj),[0,a(dz),[0,a(ac),0]]],aPN=[0,a(aj),[0,a(dz),0]],aPO=[0,a(aj),[0,a(dz),[0,a(ae),0]]],aPP=[0,a(aj),[0,a(dz),0]],aPR=[0,a(d),hL,10,hL,14,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPH=[0,a(E),Cy,14,Cy,42,[0,a(Bq),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPD=[0,a(aj),[0,a(dz),[0,a(ac),0]]],aPE=[0,a(aj),[0,a(dz),0]],aPF=[0,a(aj),[0,a(dz),[0,a(ae),0]]],aPG=[0,a(aj),[0,a(dz),0]],aPy=[0,a(E),xC,5,xC,40,[0,a(rL),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPz=[0,a(d),jg,11,jg,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPx=[0,a(E),D6,14,D6,44,[0,a(rL),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPA=[0,a(d),jg,11,jg,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPw=[0,a(d),jg,11,jg,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPt=[0,a(E),zK,14,zK,36,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPn=[0,a(Q),gF,5,812,36,[0,a(aQ),[0,a(L),0]]],aPh=a(p),aPi=a("86900"),aPj=a("97100"),aPk=a(z),aPl=a("10200"),aPm=a("107300"),aPo=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPe=[0,a(Q),kr,5,1056,36,[0,a(aQ),[0,a(L),0]]],aOY=a(p),aOZ=a(w$),aO0=a(vU),aO1=a(z),aO2=a(Gc),aO3=a(yT),aO4=a(p),aO5=a(AJ),aO6=a(Ev),aO7=a(z),aO8=a(wf),aO9=a(Ad),aO_=a(p),aO$=a(zn),aPa=a(EP),aPb=a(z),aPc=a("34600"),aPd=a(mm),aPf=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aOW=[0,a(Q),1085,5,1089,36,[0,a(aQ),[0,a(L),0]]],aOE=a(p),aOF=a(yA),aOG=a(rK),aOH=a(z),aOI=a(Gd),aOJ=a(Cq),aOK=a(p),aOL=a(EF),aOM=a(q9),aON=a(z),aOO=a(ot),aOP=a(Aq),aOQ=a(p),aOR=a(DV),aOS=a(Fq),aOT=a(z),aOU=a(Dv),aOV=a(ya),aOX=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aOC=[0,a(Q),ks,5,1122,36,[0,a(aQ),[0,a(L),0]]],aOk=a(p),aOl=a("198100"),aOm=a("239000"),aOn=a(z),aOo=a("40900"),aOp=a("279900"),aOq=a(p),aOr=a("176800"),aOs=a("212800"),aOt=a(z),aOu=a("36000"),aOv=a("248800"),aOw=a(p),aOx=a("165000"),aOy=a("197900"),aOz=a(z),aOA=a("32900"),aOB=a("230800"),aOD=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aOi=[0,a(Q),1151,5,1155,36,[0,a(aQ),[0,a(L),0]]],aN2=a(p),aN3=a("159500"),aN4=a(wE),aN5=a(z),aN6=a("33000"),aN7=a(yM),aN8=a(p),aN9=a("142200"),aN_=a("171200"),aN$=a(z),aOa=a("29000"),aOb=a("200200"),aOc=a(p),aOd=a("132800"),aOe=a("159300"),aOf=a(z),aOg=a("26500"),aOh=a(yx),aOj=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aN0=[0,a(Q),1184,5,1188,36,[0,a(aQ),[0,a(L),0]]],aNI=a(p),aNJ=a("200100"),aNK=a("141400"),aNL=a(z),aNM=a("41300"),aNN=a("182700"),aNO=a(p),aNP=a("178600"),aNQ=a("215000"),aNR=a(z),aNS=a("36400"),aNT=a("251400"),aNU=a(p),aNV=a("166700"),aNW=a(qY),aNX=a(z),aNY=a("33200"),aNZ=a("233100"),aN1=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aNG=[0,a(Q),1217,5,1221,36,[0,a(aQ),[0,a(L),0]]],aNo=a(p),aNp=a("161100"),aNq=a("194400"),aNr=a(z),aNs=a("33300"),aNt=a("227700"),aNu=a(p),aNv=a("143600"),aNw=a("172900"),aNx=a(z),aNy=a("29300"),aNz=a("202200"),aNA=a(p),aNB=a("134100"),aNC=a("160900"),aND=a(z),aNE=a("26800"),aNF=a("187700"),aNH=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aNm=[0,a(Q),1250,5,1254,36,[0,a(aQ),[0,a(L),0]]],aM6=a(p),aM7=a(rK),aM8=a("244300"),aM9=a(z),aM_=a("41800"),aM$=a("286100"),aNa=a(p),aNb=a("180700"),aNc=a("217500"),aNd=a(z),aNe=a("36800"),aNf=a("254300"),aNg=a(p),aNh=a("168700"),aNi=a("202300"),aNj=a(z),aNk=a("33600"),aNl=a("235900"),aNn=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aM4=[0,a(Q),1283,5,1287,36,[0,a(aQ),[0,a(L),0]]],aMM=a(p),aMN=a("30871"),aMO=a("37243"),aMP=a(z),aMQ=a("6372"),aMR=a("43615"),aMS=a(p),aMT=a("27548"),aMU=a("33148"),aMV=a(z),aMW=a("5610"),aMX=a("38768"),aMY=a(p),aMZ=a("25718"),aM0=a("30840"),aM1=a(z),aM2=a("5122"),aM3=a("35962"),aM5=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aMK=[0,a(Q),1316,5,1320,36,[0,a(aQ),[0,a(L),0]]],aMs=a(p),aMt=a(xW),aMu=a("196700"),aMv=a(z),aMw=a("33700"),aMx=a("230400"),aMy=a(p),aMz=a("145300"),aMA=a("175000"),aMB=a(z),aMC=a("29700"),aMD=a(Da),aME=a(p),aMF=a("135700"),aMG=a("162800"),aMH=a(z),aMI=a("27100"),aMJ=a("189900"),aML=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aMq=[0,a(Q),1349,5,1353,36,[0,a(aQ),[0,a(L),0]]],aL_=a(p),aL$=a("24849"),aMa=a("29987"),aMb=a(z),aMc=a("5138"),aMd=a("35125"),aMe=a(p),aMf=a("22151"),aMg=a("26679"),aMh=a(z),aMi=a("4528"),aMj=a("31207"),aMk=a(p),aMl=a("20687"),aMm=a("24818"),aMn=a(z),aMo=a("4131"),aMp=a("28949"),aMr=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aL8=[0,a(Q),1382,5,1386,36,[0,a(aQ),[0,a(L),0]]],aLQ=a(p),aLR=a("31241"),aLS=a("37689"),aLT=a(z),aLU=a("6448"),aLV=a("44137"),aLW=a(p),aLX=a("27879"),aLY=a("33556"),aLZ=a(z),aL0=a("5677"),aL1=a("39233"),aL2=a(p),aL3=a("26027"),aL4=a("31210"),aL5=a(z),aL6=a("5183"),aL7=a("36393"),aL9=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aLO=[0,a(Q),1415,5,1419,36,[0,a(aQ),[0,a(L),0]]],aLw=a(p),aLx=a("25147"),aLy=a("30347"),aLz=a(z),aLA=a("5200"),aLB=a("35547"),aLC=a(p),aLD=a("22417"),aLE=a("26999"),aLF=a(z),aLG=a("4582"),aLH=a("31581"),aLI=a(p),aLJ=a("20935"),aLK=a(Cs),aLL=a(z),aLM=a("4181"),aLN=a("29297"),aLP=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aLu=[0,a(Q),1448,5,1452,36,[0,a(aQ),[0,a(L),0]]],aLc=a(p),aLd=a("31616"),aLe=a("38141"),aLf=a(z),aLg=a("6525"),aLh=a("44666"),aLi=a(p),aLj=a("28214"),aLk=a("33959"),aLl=a(z),aLm=a("5745"),aLn=a("39704"),aLo=a(p),aLp=a("26339"),aLq=a("31584"),aLr=a(z),aLs=a("5245"),aLt=a("36829"),aLv=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aLa=[0,a(Q),1481,5,1485,36,[0,a(aQ),[0,a(L),0]]],aKU=a(p),aKV=a("25449"),aKW=a("30711"),aKX=a(z),aKY=a("5262"),aKZ=a("35973"),aK0=a(p),aK1=a("22686"),aK2=a("27323"),aK3=a(z),aK4=a("4637"),aK5=a("31960"),aK6=a(p),aK7=a("21186"),aK8=a("25417"),aK9=a(z),aK_=a("4231"),aK$=a("29648"),aLb=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aKS=[0,a(Q),1514,5,1518,36,[0,a(aQ),[0,a(L),0]]],aKA=a(p),aKB=a("32185"),aKC=a("38827"),aKD=a(z),aKE=a("6642"),aKF=a("45469"),aKG=a(p),aKH=a("28722"),aKI=a(yj),aKJ=a(z),aKK=a("5848"),aKL=a("40418"),aKM=a(p),aKN=a("26813"),aKO=a("32152"),aKP=a(z),aKQ=a("5339"),aKR=a("37491"),aKT=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aKy=[0,a(Q),1547,5,1551,36,[0,a(aQ),[0,a(L),0]]],aKg=a(p),aKh=a("25907"),aKi=a(xE),aKj=a(z),aKk=a("5357"),aKl=a("36621"),aKm=a(p),aKn=a("23094"),aKo=a("27814"),aKp=a(z),aKq=a("4720"),aKr=a("32534"),aKs=a(p),aKt=a("21567"),aKu=a("25874"),aKv=a(z),aKw=a("4307"),aKx=a("30181"),aKz=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aKe=[0,a(Q),1580,5,1584,36,[0,a(aQ),[0,a(L),0]]],aJY=a(p),aJZ=a("33086"),aJ0=a("39914"),aJ1=a(z),aJ2=a("6828"),aJ3=a("46742"),aJ4=a(p),aJ5=a("29526"),aJ6=a("35538"),aJ7=a(z),aJ8=a("6012"),aJ9=a("41550"),aJ_=a(p),aJ$=a("27564"),aKa=a("33052"),aKb=a(z),aKc=a("5488"),aKd=a("38541"),aKf=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aJW=[0,a(Q),1613,5,1617,36,[0,a(aQ),[0,a(L),0]]],aJE=a(p),aJF=a("26632"),aJG=a("32139"),aJH=a(z),aJI=a("5507"),aJJ=a("37646"),aJK=a(p),aJL=a("23741"),aJM=a("28593"),aJN=a(z),aJO=a("4852"),aJP=a("33445"),aJQ=a(p),aJR=a("22171"),aJS=a("36598"),aJT=a(z),aJU=a("4428"),aJV=a("31026"),aJX=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aJC=[0,a(Q),1646,5,AV,36,[0,a(aQ),[0,a(L),0]]],aJk=a(p),aJl=a("33999"),aJm=a("41016"),aJn=a(z),aJo=a("7016"),aJp=a("48032"),aJq=a(p),aJr=a("30341"),aJs=a("36519"),aJt=a(z),aJu=a("6178"),aJv=a("42697"),aJw=a(p),aJx=a("28325"),aJy=a("33964"),aJz=a(z),aJA=a("5639"),aJB=a("39605"),aJD=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aJi=[0,a(Q),1679,5,1683,36,[0,a(aQ),[0,a(L),0]]],aI2=a(p),aI3=a("27367"),aI4=a("33026"),aI5=a(z),aI6=a("5659"),aI7=a("38685"),aI8=a(p),aI9=a("24396"),aI_=a("29382"),aI$=a(z),aJa=a(Ce),aJb=a("34368"),aJc=a(p),aJd=a("22783"),aJe=a("27332"),aJf=a(z),aJg=a("4550"),aJh=a("31882"),aJj=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aI0=[0,a(Q),1712,5,1716,36,[0,a(aQ),[0,a(L),0]]],aII=a(p),aIJ=a("35002"),aIK=a("42226"),aIL=a(z),aIM=a("7223"),aIN=a("49449"),aIO=a(p),aIP=a("31236"),aIQ=a("37596"),aIR=a(z),aIS=a("6360"),aIT=a("43957"),aIU=a(p),aIV=a("29161"),aIW=a("34966"),aIX=a(z),aIY=a("5805"),aIZ=a("40773"),aI1=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aIG=[0,a(Q),1745,5,1749,36,[0,a(aQ),[0,a(L),0]]],aIo=a(p),aIp=a("28174"),aIq=a("34000"),aIr=a(z),aIs=a("5826"),aIt=a("39826"),aIu=a(p),aIv=a(Cs),aIw=a("30249"),aIx=a(z),aIy=a("5133"),aIz=a("35382"),aIA=a(p),aIB=a("23455"),aIC=a("28138"),aID=a(z),aIE=a("4684"),aIF=a("32823"),aIH=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aIm=[0,a(Q),1778,5,1782,36,[0,a(aQ),[0,a(L),0]]],aH6=a(p),aH7=a("35114"),aH8=a("42361"),aH9=a(z),aH_=a("7246"),aH$=a("49607"),aIa=a(p),aIb=a("31336"),aIc=a("37716"),aId=a(z),aIe=a("6380"),aIf=a("44098"),aIg=a(p),aIh=a("29254"),aIi=a("35078"),aIj=a(z),aIk=a("5824"),aIl=a("40903"),aIn=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aH4=[0,a(Q),1811,5,1815,36,[0,a(aQ),[0,a(L),0]]],aHM=a(p),aHN=a("28264"),aHO=a("34109"),aHP=a(z),aHQ=a("5845"),aHR=a("39953"),aHS=a(p),aHT=a("25196"),aHU=a("30346"),aHV=a(z),aHW=a("5149"),aHX=a("35495"),aHY=a(p),aHZ=a("23530"),aH0=a("28228"),aH1=a(z),aH2=a("4699"),aH3=a("32928"),aH5=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aHK=[0,a(Q),1844,5,1848,36,[0,a(aQ),[0,a(L),0]]],aHs=a(p),aHt=a("35500"),aHu=a("42827"),aHv=a(z),aHw=a("7326"),aHx=a("50153"),aHy=a(p),aHz=a("31681"),aHA=a("38131"),aHB=a(z),aHC=a("6450"),aHD=a("44583"),aHE=a(p),aHF=a("29576"),aHG=a("35464"),aHH=a(z),aHI=a("5888"),aHJ=a("41353"),aHL=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aHq=[0,a(Q),1877,5,1881,36,[0,a(aQ),[0,a(L),0]]],aG_=a(p),aG$=a("28575"),aHa=a("34484"),aHb=a(z),aHc=a("5909"),aHd=a("40392"),aHe=a(p),aHf=a("25473"),aHg=a("30680"),aHh=a(z),aHi=a("5206"),aHj=a("35885"),aHk=a(p),aHl=a("23789"),aHm=a("28539"),aHn=a(z),aHo=a("4751"),aHp=a("33290"),aHr=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aG8=[0,a(Q),1910,5,rz,36,[0,a(aQ),[0,a(L),0]]],aGQ=a(p),aGR=a("35855"),aGS=a("43255"),aGT=a(z),aGU=a("7399"),aGV=a("50655"),aGW=a(p),aGX=a("31998"),aGY=a("38512"),aGZ=a(z),aG0=a("6515"),aG1=a("45029"),aG2=a(p),aG3=a("29872"),aG4=a("35819"),aG5=a(z),aG6=a("5947"),aG7=a("41767"),aG9=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aGO=[0,a(Q),1943,5,1947,36,[0,a(aQ),[0,a(L),0]]],aGw=a(p),aGx=a("28861"),aGy=a(EH),aGz=a(z),aGA=a("5968"),aGB=a("40796"),aGC=a(p),aGD=a("25728"),aGE=a("30987"),aGF=a(z),aGG=a("5258"),aGH=a("36244"),aGI=a(p),aGJ=a("24027"),aGK=a("28824"),aGL=a(z),aGM=a("4799"),aGN=a(zM),aGP=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aGu=[0,a(Q),1976,5,1980,36,[0,a(aQ),[0,a(L),0]]],aGc=a(p),aGd=a("36626"),aGe=a("44185"),aGf=a(z),aGg=a("7558"),aGh=a("51744"),aGi=a(p),aGj=a("32686"),aGk=a(ys),aGl=a(z),aGm=a("6655"),aGn=a("45997"),aGo=a(p),aGp=a("30514"),aGq=a("36589"),aGr=a(z),aGs=a("6075"),aGt=a("42665"),aGv=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aGa=[0,a(Q),gP,5,fe,36,[0,a(aQ),[0,a(L),0]]],aFU=a(p),aFV=a("29482"),aFW=a("35578"),aFX=a(z),aFY=a("6096"),aFZ=a("41673"),aF0=a(p),aF1=a("26281"),aF2=a("31653"),aF3=a(z),aF4=a("5371"),aF5=a("37023"),aF6=a(p),aF7=a("24544"),aF8=a("29444"),aF9=a(z),aF_=a("4902"),aF$=a("34346"),aGb=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aFS=[0,a(Q),2042,5,2046,36,[0,a(aQ),[0,a(L),0]]],aFA=a(p),aFB=a("36835"),aFC=a("44437"),aFD=a(z),aFE=a("7601"),aFF=a("52039"),aFG=a(p),aFH=a("32872"),aFI=a("39564"),aFJ=a(z),aFK=a("6693"),aFL=a("46259"),aFM=a(p),aFN=a("30688"),aFO=a("36798"),aFP=a(z),aFQ=a("6110"),aFR=a("42908"),aFT=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aFy=[0,a(Q),2075,5,xe,36,[0,a(aQ),[0,a(L),0]]],aFg=a(p),aFh=a("29650"),aFi=a("35781"),aFj=a(z),aFk=a("6131"),aFl=a("41911"),aFm=a(p),aFn=a("26431"),aFo=a("31833"),aFp=a(z),aFq=a("5402"),aFr=a("37234"),aFs=a(p),aFt=a("24684"),aFu=a("29612"),aFv=a(z),aFw=a("4930"),aFx=a("34542"),aFz=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aFe=[0,a(Q),2108,5,2112,36,[0,a(aQ),[0,a(L),0]]],aEY=a(p),aEZ=a("36864"),aE0=a("44473"),aE1=a(z),aE2=a("7607"),aE3=a("52081"),aE4=a(p),aE5=a("32898"),aE6=a("39596"),aE7=a(z),aE8=a("6698"),aE9=a("46296"),aE_=a(p),aE$=a("30713"),aFa=a("36827"),aFb=a(z),aFc=a("6115"),aFd=a("42942"),aFf=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aEW=[0,a(Q),2141,5,2145,36,[0,a(aQ),[0,a(L),0]]],aEE=a(p),aEF=a("29674"),aEG=a("35810"),aEH=a(z),aEI=a("6136"),aEJ=a("41945"),aEK=a(p),aEL=a("26452"),aEM=a("31858"),aEN=a(z),aEO=a("5406"),aEP=a("37264"),aEQ=a(p),aER=a("24704"),aES=a("29636"),aET=a(z),aEU=a("4934"),aEV=a(yj),aEX=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aEC=[0,a(Q),2174,5,2178,36,[0,a(aQ),[0,a(L),0]]],aEk=a(p),aEl=a("37140"),aEm=a("44807"),aEn=a(z),aEo=a("7664"),aEp=a("52472"),aEq=a(p),aEr=a("33145"),aEs=a("39893"),aEt=a(z),aEu=a("6748"),aEv=a("46643"),aEw=a(p),aEx=a("30943"),aEy=a("37103"),aEz=a(z),aEA=a("6161"),aEB=a("43264"),aED=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aEi=[0,a(Q),2207,5,2211,36,[0,a(aQ),[0,a(L),0]]],aD2=a(p),aD3=a("29897"),aD4=a("36079"),aD5=a(z),aD6=a("6182"),aD7=a("42260"),aD8=a(p),aD9=a("26650"),aD_=a("32097"),aD$=a(z),aEa=a("5447"),aEb=a("37543"),aEc=a(p),aEd=a("24889"),aEe=a("29858"),aEf=a(z),aEg=a("4971"),aEh=a(EH),aEj=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aD0=[0,a(Q),2240,5,2243,36,[0,a(aQ),[0,a(L),0]]],aDI=a(p),aDJ=a("37252"),aDK=a("44941"),aDL=a(z),aDM=a("7687"),aDN=a("52629"),aDO=a(p),aDP=a("33244"),aDQ=a("40013"),aDR=a(z),aDS=a("6768"),aDT=a("46783"),aDU=a(p),aDV=a("31036"),aDW=a("37215"),aDX=a(z),aDY=a("6179"),aDZ=a("43394"),aD1=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDG=[0,a(Q),2272,5,2275,36,[0,a(aQ),[0,a(L),0]]],aDo=a(p),aDp=a("29986"),aDq=a("36187"),aDr=a(z),aDs=a("6201"),aDt=a("42386"),aDu=a(p),aDv=a("26730"),aDw=a("32193"),aDx=a(z),aDy=a("5463"),aDz=a("37656"),aDA=a(p),aDB=a("24964"),aDC=a("29948"),aDD=a(z),aDE=a(Ce),aDF=a("34934"),aDH=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPg=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPp=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDl=[0,a(Q),kH,5,ee,33,[0,a(o3),[0,a(mg),[0,a(L),0]]]],aC5=a(p),aC6=a(w$),aC7=a(vU),aC8=a(z),aC9=a(Gc),aC_=a(yT),aC$=a(p),aDa=a(AJ),aDb=a(Ev),aDc=a(z),aDd=a(wf),aDe=a(Ad),aDf=a(p),aDg=a(zn),aDh=a(EP),aDi=a(z),aDj=a("35600"),aDk=a(mm),aDm=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aC3=[0,a(Q),662,5,665,33,[0,a(o3),[0,a(mg),[0,a(L),0]]]],aCL=a(p),aCM=a(yA),aCN=a(rK),aCO=a(z),aCP=a(Gd),aCQ=a(Cq),aCR=a(p),aCS=a(EF),aCT=a(q9),aCU=a(z),aCV=a(ot),aCW=a(Aq),aCX=a(p),aCY=a(DV),aCZ=a(Fq),aC0=a(z),aC1=a(Dv),aC2=a(ya),aC4=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aCJ=[0,a(Q),707,5,sq,33,[0,a(o3),[0,a(mg),[0,a(L),0]]]],aCr=a(p),aCs=a(rG),aCt=a("220000"),aCu=a(z),aCv=a("38000"),aCw=a("260000"),aCx=a(p),aCy=a("164200"),aCz=a(zx),aCA=a(z),aCB=a(FZ),aCC=a("231200"),aCD=a(p),aCE=a("153200"),aCF=a("183700"),aCG=a(z),aCH=a(ot),aCI=a("214200"),aCK=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aCp=[0,a(Q),750,5,752,33,[0,a(o3),[0,a(mg),[0,a(L),0]]]],aB9=a(p),aB_=a("148100"),aB$=a("178700"),aCa=a(z),aCb=a("30600"),aCc=a("209300"),aCd=a(p),aCe=a(By),aCf=a("158900"),aCg=a(z),aCh=a("26900"),aCi=a(yx),aCj=a(p),aCk=a("123300"),aCl=a("147900"),aCm=a(z),aCn=a("24600"),aCo=a(D1),aCq=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDn=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB8=[0,a(d),Y,3,Y,76,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPq=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB7=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB3=[0,a(E),Ed,5,Ed,28,[0,a(DG),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aB4=[0,a(d),ja,11,ja,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB2=[0,a(E),Ee,14,Ee,44,[0,a(DG),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aBY=[0,a(E),vS,14,vS,36,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aBW=a(p),aBX=a(p),aBZ=[0,a(d),nF,10,nF,32,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBV=[0,a(d),nF,10,nF,32,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBQ=[0,a(Q),CY,7,CY,18,[0,a(i$),[0,a(aQ),[0,a(L),0]]]],aBN=a(gB),aBO=a(qW),aBP=a(fp),aBR=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBL=[0,a(aO),hV,7,hV,18,[0,a(i$),[0,a(bB),[0,a(aM),0]]]],aBI=a(gO),aBJ=a(qz),aBK=a(fg),aBM=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBG=[0,a(aO),xv,7,xv,18,[0,a(i$),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aBD=a(oJ),aBE=a(B1),aBF=a(mQ),aBH=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBS=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBA=[0,a(Q),AZ,29,AZ,64,[0,a(nw),[0,a(aQ),[0,a(L),0]]]],aBy=a(gB),aBz=a(fp),aBB=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBw=[0,a(aO),BC,29,BC,64,[0,a(nw),[0,a(bB),[0,a(aM),0]]]],aBu=a(gO),aBv=a(fg),aBx=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBs=[0,a(aO),yL,29,yL,64,[0,a(nw),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aBq=a(oJ),aBr=a(mQ),aBt=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBC=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBk=[0,a(d),iV,14,iV,50,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBg=[0,a(Q),zq,14,zq,50,[0,a("Article 25"),[0,a(aQ),[0,a(L),0]]]],aBb=a(wF),aBc=a(se),aBd=a("0.0172"),aBe=a(wF),aBf=a(se),aA7=[0,a(E),iJ,14,iJ,64,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA3=[0,a(E),iG,14,iG,59,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aAZ=[0,a(fc),yZ,14,yZ,36,[0,a(C_),[0,a(zh),0]]],aAX=a(vB),aAY=a(et),aAT=[0,a(Q),wA,14,wA,47,[0,a(sg),[0,a(aQ),[0,a(L),0]]]],aAS=a("0.416"),aAO=[0,a(Q),Fo,14,Fo,47,[0,a(sg),[0,a(aQ),[0,a(L),0]]]],aAN=a(vl),aAJ=[0,a(Q),EQ,14,EQ,47,[0,a(sg),[0,a(aQ),[0,a(L),0]]]],aAI=a("560085"),aAE=[0,a(Q),xR,14,xR,48,[0,a("Article 26"),[0,a(aQ),[0,a(L),0]]]],aAD=a(AI),aAz=[0,a(Q),u7,15,u7,49,[0,a("Article 22"),[0,a(aQ),[0,a(L),0]]]],aAy=a("2211133"),aAu=[0,a(Q),w7,14,w7,42,[0,a("Article 21"),[0,a(aQ),[0,a(L),0]]]],aAt=a(id),aAp=[0,a(Q),Bk,14,Bk,41,[0,a("Article 20"),[0,a(aQ),[0,a(L),0]]]],aAo=a(kk),aAq=[0,a(d),oL,11,oL,38,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAn=[0,a(d),oL,11,oL,38,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAr=[0,a(aj),[0,a("montant_forfaitaire_d832_10"),0]],aAv=[0,a(d),oI,11,oI,39,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAs=[0,a(d),oI,11,oI,39,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAw=[0,a(aj),[0,a("montant_minimal_aide_d832_10"),0]],aAA=[0,a(d),or,11,or,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAx=[0,a(d),or,11,or,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAB=[0,a(aj),[0,a("coefficient_multiplicateur_d832_11"),0]],aAF=[0,a(d),oS,11,oS,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAC=[0,a(d),oS,11,oS,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAG=[0,a(aj),[0,a("coefficient_multiplicateur_d832_18"),0]],aAK=[0,a(d),mr,11,mr,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAH=[0,a(d),mr,11,mr,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAL=[0,a(aj),[0,a("montant_limite_tranches_d832_15_1"),0]],aAP=[0,a(d),kU,11,kU,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAM=[0,a(d),kU,11,kU,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAQ=[0,a(aj),[0,a("taux_tranche_inf\xc3\xa9rieure_d832_15_1"),0]],aAU=[0,a(d),nj,11,nj,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAR=[0,a(d),nj,11,nj,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAV=[0,a(aj),[0,a("taux_tranche_sup\xc3\xa9rieure_d832_15_1"),0]],aA0=[0,a(d),m0,11,m0,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAW=[0,a(d),m0,11,m0,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aA1=[0,a(aj),[0,a(FD),0]],aA4=[0,a(E),iG,14,iG,59,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA5=[0,a(aj),[0,a(nk),0]],aA2=[0,a(E),iG,14,iG,59,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA8=[0,a(E),iJ,14,iJ,64,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA9=[0,a(aj),[0,a(n2),0]],aA6=[0,a(E),iJ,14,iJ,64,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA_=[0,a(aj),[0,a(ga),[0,a(kq),0]]],aA$=[0,a(aj),[0,a(ga),[0,a(kq),0]]],aBh=[0,a(d),n5,11,n5,47,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBa=[0,a(d),n5,11,n5,47,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBi=[0,a(aj),[0,a("coefficient_multiplicateur_d832_17_3"),0]],aBl=[0,a(d),iV,14,iV,50,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBm=[0,a(aj),[0,a(kA),0]],aBj=[0,a(d),iV,14,iV,50,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBn=[0,a(aj),[0,a(eJ),[0,a(bk),0]]],aBo=[0,a(aj),[0,a(eJ),[0,a(bk),0]]],aBT=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBp=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBU=[0,a(aj),[0,a("montant_forfaitaire_charges_d832_10"),0]],aB0=[0,a(aj),[0,a(bI),0]],aB5=[0,a(d),ja,11,ja,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB1=[0,a(d),ja,11,ja,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB6=[0,a(aj),[0,a("ressources_m\xc3\xa9nage_avec_d832_18"),0]],aPr=[0,a(aj),[0,a(dz),0]],aPu=[0,a(d),nt,11,nt,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPs=[0,a(d),nt,11,nt,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPv=[0,a(aj),[0,a(v7),0]],aPB=[0,a(aj),[0,a(kx),0]],aPS=[0,a(d),hL,10,hL,14,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPC=[0,a(d),hL,10,hL,14,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPT=[0,a(aj),[0,a("plafond_mensualit\xc3\xa9_d832_10_3_base"),0]],aPW=[0,a(E),h1,14,h1,75,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPX=[0,a(aj),[0,a(mM),0]],aPU=[0,a(E),h1,14,h1,75,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP0=[0,a(E),ji,14,ji,69,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP1=[0,a(aj),[0,a(oo),0]],aPY=[0,a(E),ji,14,ji,69,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP4=[0,a(E),jj,14,jj,70,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP5=[0,a(aj),[0,a(mB),0]],aP2=[0,a(E),jj,14,jj,70,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP6=[0,a(aj),[0,a(fJ),[0,a(dP),0]]],aP7=[0,a(aj),[0,a(fJ),[0,a(dP),0]]],aP$=[0,a(d),kp,10,kp,17,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aP8=[0,a(d),kp,10,kp,17,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQa=[0,a(aj),[0,a("coefficient_prise_en_charge_d832_10_formule"),0]],aQj=[0,a(aj),[0,a(kQ),0]],aQu=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQk=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQv=[0,a(aj),[0,a("plafond_mensualit\xc3\xa9_d832_10_3_copropri\xc3\xa9taires"),0]],aQD=[0,a(d),fV,12,fV,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQw=[0,a(d),fV,12,fV,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQE=[0,a(aj),[0,a(q7),0]],aQK=[0,a(d),ml,10,ml,23,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQF=[0,a(d),ml,10,ml,23,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQL=[0,a(aj),[0,a("coefficient_prise_en_charge_d832_10_coeff_arrondi"),0]],aQZ=[0,a(aj),[0,a(eN),0]],aQ2=[0,a(d),oX,12,oX,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ0=[0,a(d),oX,12,oX,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ3=[0,a(aj),[0,a(sm),0]],aQ8=[0,a(d),oA,10,oA,15,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ4=[0,a(d),oA,10,oA,15,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ9=[0,a(aj),[0,a("coefficient_prise_en_charge_d832_10_seuil"),0]],aRm=[0,a(aj),[0,a(bJ),0]],aRr=[0,a(d),nP,12,nP,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRn=[0,a(d),nP,12,nP,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRs=[0,a(aj),[0,a(cX),0]],aRB=[0,a(aj),[0,a(fm),0]],aAk=[0,a(E),Bb,14,Bb,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aAf=[0,a(au),[0,a(bJ),[0,a(ac),0]]],aAg=[0,a(au),[0,a(bJ),0]],aAh=[0,a(au),[0,a(bJ),[0,a(ae),0]]],aAi=[0,a(au),[0,a(bJ),0]],aAj=a(p),aAl=[0,a(d),m6,10,m6,25,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAe=[0,a(d),m6,10,m6,25,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAb=[0,a(E),u1,14,u1,33,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],az$=a(p),aAa=a(p),az7=[0,a(E),m3,14,m3,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azW=[0,a(au),[0,a(eN),[0,a(ac),0]]],azX=[0,a(au),[0,a(eN),0]],azY=[0,a(au),[0,a(eN),[0,a(ae),0]]],azZ=[0,a(au),[0,a(eN),0]],az0=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],az1=[0,a(bk),[0,a(bQ),0]],az2=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],az3=[0,a(bk),[0,a(bQ),0]],az4=a(kY),az5=a(p),az6=a(p),az8=[0,a(d),nC,10,nC,40,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azV=[0,a(d),nC,10,nC,40,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azR=[0,a(E),n8,5,n8,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azP=a(oE),azQ=a(oE),azS=[0,a(d),jl,10,jl,15,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azO=[0,a(E),Eb,14,Eb,49,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azM=a(hc),azN=a(hc),azI=[0,a(E),CS,14,CS,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azy=[0,a(au),[0,a(bI),[0,a(ac),0]]],azz=[0,a(au),[0,a(bI),0]],azA=[0,a(au),[0,a(bI),[0,a(ae),0]]],azB=[0,a(au),[0,a(bI),0]],azC=[0,a(au),[0,a(kw),[0,a(ac),0]]],azD=[0,a(au),[0,a(kw),0]],azE=[0,a(au),[0,a(kw),[0,a(ae),0]]],azF=[0,a(au),[0,a(kw),0]],azG=a(p),azH=a(p),azJ=[0,a(d),md,10,md,20,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azx=[0,a(d),md,10,md,20,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azt=[0,a(E),Fh,5,Fh,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azq=a(c4),azr=a(c4),azs=a(lZ),azu=[0,a(d),hB,10,hB,23,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azp=[0,a(E),xF,14,xF,49,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azm=a(c4),azn=a(c4),azo=a(lZ),azi=[0,a(E),Cb,14,Cb,40,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aze=[0,a(E),vv,14,vv,55,[0,a(yR),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay$=[0,a(au),[0,a(kC),[0,a(ac),0]]],aza=[0,a(au),[0,a(kC),0]],azb=[0,a(au),[0,a(kC),[0,a(ae),0]]],azc=[0,a(au),[0,a(kC),0]],azd=a(p),azf=[0,a(d),oP,11,oP,52,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ay_=[0,a(d),oP,11,oP,52,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ay6=[0,a(E),FV,5,FV,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay5=a(oE),ay7=[0,a(d),h8,10,h8,17,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ay4=[0,a(E),Bn,14,Bn,49,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay1=a(p),ay2=a(p),ay3=a(hc),ayV=[0,a(E),jb,14,jb,70,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayR=[0,a(E),hD,14,hD,69,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayN=[0,a(E),iW,14,iW,75,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayJ=[0,a(E),zX,14,zX,44,[0,a(yR),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayK=[0,a(d),nK,11,nK,41,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayI=[0,a(d),nK,11,nK,41,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayE=[0,a(E),zs,14,zs,36,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayF=[0,a(d),jn,21,jn,43,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayA=[0,a(E),wj,14,wj,40,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayw=[0,a(Q),D9,14,D9,48,[0,a(wb),[0,a(fh),[0,a(L),0]]]],ayu=a("2142091"),ayv=a("1339340"),ayq=[0,a(Q),Dn,14,Dn,41,[0,a("Article 32"),[0,a(fh),[0,a(L),0]]]],ayo=a(qH),ayp=a("2668"),ayi=[0,a(E),ir,14,ir,64,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aye=[0,a(E),h_,14,h_,59,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aya=[0,a(E),iH,14,iH,55,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ax8=[0,a(E),zp,14,zp,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ax6=a(p),ax7=a(p),ax9=[0,a(d),lR,10,lR,32,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ax5=[0,a(d),lR,10,lR,32,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ax1=[0,a(Q),yv,14,yv,48,[0,a(sr),[0,a(fh),[0,a(L),0]]]],axr=a(p),axs=a("46192"),axt=a("54152"),axu=a(z),axv=a("57741"),axw=a(X),axx=a("61794"),axy=a(_),axz=a("65862"),axA=a(ah),axB=a("7368"),axC=a("71039"),axD=a(p),axE=a("42242"),axF=a("49299"),axG=a(z),axH=a("52565"),axI=a(X),axJ=a("56268"),axK=a(_),axL=a("59957"),axM=a(ah),axN=a("6659"),axO=a("63887"),axP=a(p),axQ=a("40096"),axR=a("46634"),axS=a(z),axT=a("49475"),axU=a(X),axV=a("52740"),axW=a(_),axX=a("56004"),axY=a(ah),axZ=a("6180"),ax0=a("59675"),ax2=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],axp=[0,a(aO),dK,14,dK,48,[0,a(sr),[0,a(bB),[0,a(aM),0]]]],awR=a(p),awS=a("44630"),awT=a("52321"),awU=a(z),awV=a("55788"),awW=a(X),awX=a("59704"),awY=a(_),awZ=a("63635"),aw0=a(ah),aw1=a("7119"),aw2=a("68637"),aw3=a(p),aw4=a("40814"),aw5=a("47632"),aw6=a(z),aw7=a("50787"),aw8=a(X),aw9=a("54365"),aw_=a(_),aw$=a("57929"),axa=a(ah),axb=a("6434"),axc=a("61727"),axd=a(p),axe=a("38740"),axf=a("45057"),axg=a(z),axh=a("47802"),axi=a(X),axj=a("50957"),axk=a(_),axl=a("54110"),axm=a(ah),axn=a("5971"),axo=a("57657"),axq=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awP=[0,a(aO),Eh,14,Eh,48,[0,a(sr),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],awf=a(p),awg=a("44443"),awh=a("52101"),awi=a(z),awj=a("55555"),awk=a(X),awl=a("59454"),awm=a(_),awn=a("63369"),awo=a(ah),awp=a("7089"),awq=a("68350"),awr=a(p),aws=a("40643"),awt=a("47433"),awu=a(z),awv=a("50575"),aww=a(X),awx=a("54138"),awy=a(_),awz=a("57687"),awA=a(ah),awB=a("6407"),awC=a("61469"),awD=a(p),awE=a("38578"),awF=a("44869"),awG=a(z),awH=a("47602"),awI=a(X),awJ=a("50744"),awK=a(_),awL=a("53884"),awM=a(ah),awN=a("5946"),awO=a("57416"),awQ=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av$=[0,a(d),h4,14,h4,50,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av6=[0,a(E),yl,14,yl,35,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],av7=[0,a(d),ib,12,ib,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av2=[0,a(Q),wU,14,wU,42,[0,a("Article 29"),[0,a(fh),[0,a(L),0]]]],av1=a(id),avX=[0,a(Q),Bm,14,Bm,41,[0,a("Article 28"),[0,a(fh),[0,a(L),0]]]],avW=a(kk),avS=[0,a(Q),xX,14,xX,35,[0,a(wb),[0,a(fh),[0,a(L),0]]]],avR=a("121726"),avT=[0,a(d),kH,12,kH,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avQ=[0,a(d),kH,12,kH,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avU=[0,a(au),[0,a(Em),0]],avY=[0,a(d),mc,11,mc,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avV=[0,a(d),mc,11,mc,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avZ=[0,a(au),[0,a("montant_forfaitaire_d832_24"),0]],av3=[0,a(d),mx,11,mx,39,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av0=[0,a(d),mx,11,mx,39,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av4=[0,a(au),[0,a("montant_minimal_aide_d823_24"),0]],av8=[0,a(d),ib,12,ib,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av5=[0,a(d),ib,12,ib,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av9=[0,a(au),[0,a("condition_2_du_832_25"),0]],awa=[0,a(d),h4,14,h4,50,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awb=[0,a(au),[0,a(kA),0]],av_=[0,a(d),h4,14,h4,50,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awc=[0,a(au),[0,a(eJ),[0,a(bk),0]]],awd=[0,a(au),[0,a(eJ),[0,a(bk),0]]],ax3=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awe=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ax4=[0,a(au),[0,a(z0),0]],ax_=[0,a(au),[0,a(bI),0]],ayb=[0,a(E),iH,14,iH,55,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayc=[0,a(au),[0,a(BI),0]],ax$=[0,a(E),iH,14,iH,55,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayf=[0,a(E),h_,14,h_,59,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayg=[0,a(au),[0,a(nk),0]],ayd=[0,a(E),h_,14,h_,59,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayj=[0,a(E),ir,14,ir,64,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayk=[0,a(au),[0,a(n2),0]],ayh=[0,a(E),ir,14,ir,64,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayl=[0,a(au),[0,a(ga),[0,a(ky),0]]],aym=[0,a(au),[0,a(ga),[0,a(ky),0]]],ayr=[0,a(d),ny,11,ny,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayn=[0,a(d),ny,11,ny,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ays=[0,a(au),[0,a("montant_forfaitaire_d832_27"),0]],ayx=[0,a(d),hz,12,hz,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayt=[0,a(d),hz,12,hz,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayy=[0,a(au),[0,a(A9),0]],ayB=[0,a(d),kf,12,kf,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayz=[0,a(d),kf,12,kf,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayC=[0,a(au),[0,a(xQ),0]],ayG=[0,a(d),jn,21,jn,43,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayD=[0,a(d),jn,21,jn,43,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayH=[0,a(au),[0,a(r2),0]],ayL=[0,a(au),[0,a(kC),0]],ayO=[0,a(E),iW,14,iW,75,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayP=[0,a(au),[0,a(mM),0]],ayM=[0,a(E),iW,14,iW,75,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayS=[0,a(E),hD,14,hD,69,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayT=[0,a(au),[0,a(oo),0]],ayQ=[0,a(E),hD,14,hD,69,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayW=[0,a(E),jb,14,jb,70,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayX=[0,a(au),[0,a(mB),0]],ayU=[0,a(E),jb,14,jb,70,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayY=[0,a(au),[0,a(fJ),[0,a(dP),0]]],ayZ=[0,a(au),[0,a(fJ),[0,a(dP),0]]],ay8=[0,a(d),h8,10,h8,17,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ay0=[0,a(d),h8,10,h8,17,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ay9=[0,a(au),[0,a("coefficient_prise_en_charge_d832_25_formule"),0]],azg=[0,a(au),[0,a(kw),0]],azj=[0,a(d),oe,12,oe,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azh=[0,a(d),oe,12,oe,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azk=[0,a(au),[0,a(vo),0]],azv=[0,a(d),hB,10,hB,23,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azl=[0,a(d),hB,10,hB,23,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azw=[0,a(au),[0,a("coefficient_prise_en_charge_d832_25_coeff_arrondi"),0]],azK=[0,a(au),[0,a(eN),0]],azT=[0,a(d),jl,10,jl,15,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azL=[0,a(d),jl,10,jl,15,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azU=[0,a(au),[0,a("coefficient_prise_en_charge_d832_25_seuil"),0]],az9=[0,a(au),[0,a(bJ),0]],aAc=[0,a(d),kc,12,kc,31,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],az_=[0,a(d),kc,12,kc,31,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAd=[0,a(au),[0,a(cX),0]],aAm=[0,a(au),[0,a(fm),0]],avG=[0,a(E),C9,14,C9,33,[0,a(ey),[0,a(dC),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avE=a(p),avF=a(p),avA=[0,a(E),A8,14,A8,39,[0,a(rN),[0,a(dC),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avy=a(p),avz=a(p),avu=[0,a(E),rz,14,rz,36,[0,a(ey),[0,a(dC),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avp=[0,a(aD),[0,a(ki),[0,a(ac),0]]],avq=[0,a(aD),[0,a(ki),0]],avr=[0,a(aD),[0,a(ki),[0,a(ae),0]]],avs=[0,a(aD),[0,a(ki),0]],avt=a(p),avv=[0,a(d),mO,10,mO,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avo=[0,a(d),mO,10,mO,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avl=[0,a(E),xy,14,xy,42,[0,a(rN),[0,a(dC),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avh=[0,a(aG),Cm,14,Cm,36,[0,a(qR),[0,a(bj),[0,a(ag),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],avb=[0,a(aD),[0,a(bJ),[0,a(ac),0]]],avc=[0,a(aD),[0,a(bJ),0]],avd=[0,a(aD),[0,a(bJ),[0,a(ae),0]]],ave=[0,a(aD),[0,a(bJ),0]],avf=a(p),avg=a(p),avi=[0,a(d),ob,10,ob,36,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ava=[0,a(d),ob,10,ob,36,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],au6=[0,a(aO),Av,14,Av,33,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],au4=a(hw),au5=a(hw),au7=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],au3=[0,a(aO),nc,14,nc,33,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],au1=a(hw),au2=a(hw),au8=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],au0=[0,a(Q),f2,14,f2,33,[0,a(cF),[0,a(bX),[0,a(L),0]]]],auY=a(hw),auZ=a(hw),au9=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auU=[0,a(E),wh,14,wh,36,[0,a(ey),[0,a(dC),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],auJ=[0,a(aD),[0,a(bI),[0,a(ac),0]]],auK=[0,a(aD),[0,a(bI),0]],auL=[0,a(aD),[0,a(bI),[0,a(ae),0]]],auM=[0,a(aD),[0,a(bI),0]],auN=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],auO=[0,a(bk),[0,a(bQ),0]],auP=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],auQ=[0,a(bk),[0,a(bQ),0]],auR=a(kY),auS=a(p),auT=a(p),auV=[0,a(d),o5,10,o5,40,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auI=[0,a(d),o5,10,o5,40,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auC=[0,a(aO),Gb,14,Gb,33,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],auq=a(he),aur=a(b5),aus=a(dd),aut=a(he),auu=a(fd),auv=a(fd),auw=a(dd),aux=a(dd),auy=a(r7),auz=a(qI),auA=a(fd),auB=a(b5),auD=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aup=[0,a(aO),j5,14,j5,33,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],aud=a(he),aue=a(b5),auf=a(dd),aug=a(he),auh=a(fd),aui=a(fd),auj=a(dd),auk=a(dd),aul=a(r7),aum=a(qI),aun=a(fd),auo=a(b5),auE=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auc=[0,a(Q),qQ,14,qQ,33,[0,a(cF),[0,a(bX),[0,a(L),0]]]],at2=a(he),at3=a(b5),at4=a(dd),at5=a(he),at6=a(fd),at7=a(fd),at8=a(dd),at9=a(dd),at_=a(r7),at$=a(qI),aua=a(fd),aub=a(b5),auF=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atY=[0,a(E),Eg,14,Eg,36,[0,a(ey),[0,a(dC),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],atS=[0,a(aD),[0,a(kt),[0,a(ac),0]]],atT=[0,a(aD),[0,a(kt),0]],atU=[0,a(aD),[0,a(kt),[0,a(ae),0]]],atV=[0,a(aD),[0,a(kt),0]],atW=a(p),atX=a(p),atZ=[0,a(d),mC,10,mC,32,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atR=[0,a(d),mC,10,mC,32,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atL=[0,a(aO),Ao,14,Ao,28,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],atJ=a(c4),atK=a(c4),atM=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atI=[0,a(aO),wo,14,wo,28,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],atG=a(c4),atH=a(c4),atN=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atF=[0,a(Q),nh,14,nh,28,[0,a(cF),[0,a(bX),[0,a(L),0]]]],atD=a(c4),atE=a(c4),atO=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aty=[0,a(Q),dy,14,dy,36,[0,a(sk),[0,a(bX),[0,a(L),0]]]],atu=a(FW),atv=a(iB),atw=a(iB),atx=a(FW),atz=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ats=[0,a(aO),vn,14,vn,36,[0,a(sk),[0,a(bB),[0,a(aM),0]]]],ato=a(C7),atp=a(iB),atq=a(iB),atr=a(C7),att=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atm=[0,a(aO),gI,14,gI,36,[0,a(sk),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],ati=a(Ey),atj=a(iB),atk=a(iB),atl=a(Ey),atn=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atd=[0,a(E),FX,5,FX,50,[0,a(ey),[0,a(dC),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ate=[0,a(d),io,10,io,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atc=[0,a(E),zN,14,zN,36,[0,a(ey),[0,a(dC),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],atb=a(p),atf=[0,a(d),io,10,io,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ata=[0,a(d),io,10,io,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as9=[0,a(E),xA,14,xA,28,[0,a(ey),[0,a(dC),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],as5=[0,a(Q),rf,14,rf,42,[0,a(Cf),[0,a(bX),[0,a(L),0]]]],as2=a("3.4"),as3=a(ig),as4=a(ig),asY=[0,a(Q),rj,14,rj,41,[0,a(Cf),[0,a(bX),[0,a(L),0]]]],asV=a("4."),asW=a(y_),asX=a(y_),asR=[0,a(E),zE,14,zE,29,[0,a("Article D842-2"),[0,a(so),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],asP=a(ov),asQ=a(kK),asJ=[0,a(Q),EN,29,EN,64,[0,a(dS),[0,a(bX),[0,a(L),0]]]],asG=a(gB),asH=a(qW),asI=a(fp),asK=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asE=[0,a(aO),wl,29,wl,64,[0,a(dS),[0,a(bB),[0,a(aM),0]]]],asB=a(gO),asC=a(qz),asD=a(fg),asF=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asz=[0,a(aO),vO,29,vO,64,[0,a(dS),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],asw=a(oJ),asx=a(B1),asy=a(mQ),asA=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asL=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ast=[0,a(Q),z2,29,z2,64,[0,a(sb),[0,a(bX),[0,a(L),0]]]],asr=a(gB),ass=a(fp),asu=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asp=[0,a(aO),Cr,29,Cr,64,[0,a(sb),[0,a(bB),[0,a(aM),0]]]],asn=a(gO),aso=a(fg),asq=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asl=[0,a(aO),B$,29,B$,64,[0,a(sb),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],asj=a(oJ),ask=a(mQ),asm=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asv=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asc=a(p),asd=[0,a(Q),529,5,530,34,[0,a(dS),[0,a(bX),[0,a(L),0]]]],ar$=a(Bp),asa=a(v4),asb=a(DA),ase=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ar8=a(p),ar9=[0,a(Q),538,5,539,34,[0,a(dS),[0,a(bX),[0,a(L),0]]]],ar5=a("27905"),ar6=a("24683"),ar7=a("22911"),ar_=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ar2=a(z),ar3=[0,a(Q),h9,5,h9,35,[0,a(dS),[0,a(bX),[0,a(L),0]]]],arT=a(z),arU=a("4576"),arV=a("31539"),arW=a(z),arX=a("4043"),arY=a("27774"),arZ=a(z),ar0=a("3682"),ar1=a("25689"),ar4=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arQ=a(p),arR=[0,a(aO),qT,5,qQ,34,[0,a(dS),[0,a(bB),[0,a(aM),0]]]],arN=a(DN),arO=a(yn),arP=a(wO),arS=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arK=a(p),arL=[0,a(aO),415,5,416,34,[0,a(dS),[0,a(bB),[0,a(aM),0]]]],arH=a("26962"),arI=a("23848"),arJ=a("22136"),arM=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arE=a(z),arF=[0,a(aO),ru,5,ru,35,[0,a(dS),[0,a(bB),[0,a(aM),0]]]],arv=a(z),arw=a("4421"),arx=a("30473"),ary=a(z),arz=a("3906"),arA=a("26835"),arB=a(z),arC=a("3557"),arD=a("24821"),arG=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ars=a(p),art=[0,a(aO),1197,5,1198,34,[0,a(dS),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],arp=a(CR),arq=a(wd),arr=a(Dg),aru=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arm=a(p),arn=[0,a(aO),1206,5,1207,34,[0,a(dS),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],arj=a("26849"),ark=a("23748"),arl=a("22044"),aro=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arg=a(z),arh=[0,a(aO),EK,5,EK,35,[0,a(dS),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aq9=a(z),aq_=a("4403"),aq$=a("30345"),ara=a(z),arb=a("3890"),arc=a("26723"),ard=a(z),are=a("3542"),arf=a("24717"),ari=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asf=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aq5=[0,a(Q),iM,5,iM,61,[0,a(iw),[0,a(bX),[0,a(L),0]]]],aq2=a(Bp),aq3=a(v4),aq4=a(DA),aq6=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aq0=[0,a(aO),BP,5,BP,61,[0,a(iw),[0,a(bB),[0,a(aM),0]]]],aqX=a(DN),aqY=a(yn),aqZ=a(wO),aq1=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqV=[0,a(aO),xD,5,xD,61,[0,a(iw),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aqS=a(CR),aqT=a(wd),aqU=a(Dg),aqW=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aq7=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqP=[0,a(Q),wH,14,wH,37,[0,a(iw),[0,a(bX),[0,a(L),0]]]],aqM=a("27765"),aqN=a("24198"),aqO=a("22680"),aqQ=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqK=[0,a(aO),z8,14,z8,37,[0,a(iw),[0,a(bB),[0,a(aM),0]]]],aqH=a("26826"),aqI=a("23380"),aqJ=a("21913"),aqL=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqF=[0,a(aO),f7,14,f7,37,[0,a(iw),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aqC=a(Gf),aqD=a("23282"),aqE=a("21821"),aqG=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqR=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aq8=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqy=a(p),aqz=[0,a(Q),dT,5,be,34,[0,a(cG),[0,a(bX),[0,a(L),0]]]],aqv=a("30850"),aqw=a("26887"),aqx=a("25200"),aqA=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqs=a(p),aqt=[0,a(Q),zy,5,115,34,[0,a(cG),[0,a(bX),[0,a(L),0]]]],aqp=a("37207"),aqq=a("32910"),aqr=a("30548"),aqu=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqm=a(z),aqn=[0,a(Q),kE,5,kE,35,[0,a(cG),[0,a(bX),[0,a(L),0]]]],aqd=a(z),aqe=a("6101"),aqf=a("42052"),aqg=a(z),aqh=a("5390"),aqi=a("37032"),aqj=a(z),aqk=a("4909"),aql=a("34252"),aqo=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqa=a(p),aqb=[0,a(aO),87,5,88,34,[0,a(cG),[0,a(bB),[0,a(aM),0]]]],ap9=a("29807"),ap_=a(sd),ap$=a("24348"),aqc=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ap6=a(p),ap7=[0,a(aO),97,5,98,34,[0,a(cG),[0,a(bB),[0,a(aM),0]]]],ap3=a("35949"),ap4=a(mX),ap5=a("29515"),ap8=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ap0=a(z),ap1=[0,a(aO),c3,5,c3,35,[0,a(cG),[0,a(bB),[0,a(aM),0]]]],apR=a(z),apS=a("5895"),apT=a("40630"),apU=a(z),apV=a(rM),apW=a(sa),apX=a(z),apY=a("4743"),apZ=a("33094"),ap2=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apO=a(p),apP=[0,a(aO),884,5,885,34,[0,a(cG),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],apL=a("29682"),apM=a("25859"),apN=a("24246"),apQ=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apI=a(p),apJ=[0,a(aO),894,5,gE,34,[0,a(cG),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],apF=a("35799"),apG=a(Bi),apH=a("29392"),apK=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apC=a(z),apD=[0,a(aO),Ci,5,Ci,35,[0,a(cG),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],apt=a(z),apu=a("5870"),apv=a("40460"),apw=a(z),apx=a(ww),apy=a(AP),apz=a(z),apA=a("4723"),apB=a(yU),apE=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqB=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],app=[0,a(Q),hS,14,hS,42,[0,a("Article 12"),[0,a(bX),[0,a(L),0]]]],apm=a(p),apn=a(id),apo=a(id),apg=[0,a(aO),yd,14,yd,29,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],apa=a(p),apb=a(sd),apc=a(mX),apd=a(z),ape=a(rM),apf=a(sa),aph=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ao$=[0,a(Q),hk,14,hk,29,[0,a(cF),[0,a(bX),[0,a(L),0]]]],ao5=a(p),ao6=a(sd),ao7=a(mX),ao8=a(z),ao9=a(rM),ao_=a(sa),api=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ao3=[0,a(aO),rT,14,rT,29,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aoX=a(p),aoY=a("25869"),aoZ=a(Bi),ao0=a(z),ao1=a(ww),ao2=a(AP),ao4=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aoS=[0,a(Q),fR,14,fR,44,[0,a(mK),[0,a(bX),[0,a(L),0]]]],aoA=a(p),aoB=a("494900"),aoC=a("709000"),aoD=a(z),aoE=a("845600"),aoF=a(X),aoG=a("864600"),aoH=a(_),aoI=a("897700"),aoJ=a(ah),aoK=a("931100"),aoL=a(P),aoM=a("964200"),aoN=a(dn),aoO=a(CJ),aoP=a(dn),aoQ=a("32800"),aoR=a(CJ),aoT=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aoy=[0,a(aO),27,14,27,44,[0,a(mK),[0,a("Articles valables du 1er juillet 2022 au 31 d\xc3\xa9cembre 2022"),[0,a(aM),0]]]],aog=a(p),aoh=a("487000"),aoi=a("697700"),aoj=a(z),aok=a(BX),aol=a(X),aom=a("850900"),aon=a(_),aoo=a("883400"),aop=a(ah),aoq=a("916300"),aor=a(P),aos=a("948800"),aot=a(dn),aou=a(Dr),aov=a(dn),aow=a("32300"),aox=a(Dr),aoz=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aoe=[0,a(aO),rx,14,rx,44,[0,a(mK),[0,a("Articles valables du 1er janvier 2022 au 30 juin 2022"),[0,a(aM),0]]]],anY=a(p),anZ=a("468300"),an0=a("670900"),an1=a(z),an2=a("800200"),an3=a(X),an4=a("819200"),an5=a(_),an6=a("849500"),an7=a(ah),an8=a("881100"),an9=a(P),an_=a("912400"),an$=a(dn),aoa=a(A7),aob=a(dn),aoc=a("31100"),aod=a(A7),aof=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anW=[0,a(aO),zo,14,zo,44,[0,a(mK),[0,a("Articles valables du 1er janvier 2020 au 31 d\xc3\xa9cembre 2021"),[0,a(aM),0]]]],anE=a(p),anF=a("458800"),anG=a("657200"),anH=a(z),anI=a("783900"),anJ=a(X),anK=a("801500"),anL=a(_),anM=a(BX),anN=a(ah),anO=a("863100"),anP=a(P),anQ=a("893800"),anR=a(dn),anS=a(vu),anT=a(dn),anU=a(ot),anV=a(vu),anX=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anx=[0,a(aO),gb,14,gb,40,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],anf=a(p),ang=a(rw),anh=a(rp),ani=a(z),anj=a(qE),ank=a(X),anl=a(q$),anm=a(_),ann=a(r5),ano=a(ah),anp=a(qB),anq=a(P),anr=a(rg),ans=a(dn),ant=a(hJ),anu=a(dn),anv=a(rk),anw=a(hJ),any=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ane=[0,a(aO),yH,14,yH,40,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],amY=a(p),amZ=a(rw),am0=a(rp),am1=a(z),am2=a(qE),am3=a(X),am4=a(q$),am5=a(_),am6=a(r5),am7=a(ah),am8=a(qB),am9=a(P),am_=a(rg),am$=a(dn),ana=a(hJ),anb=a(dn),anc=a(rk),and=a(hJ),anz=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amX=[0,a(Q),Ai,14,Ai,40,[0,a(cF),[0,a(bX),[0,a(L),0]]]],amF=a(p),amG=a(rw),amH=a(rp),amI=a(z),amJ=a(qE),amK=a(X),amL=a(q$),amM=a(_),amN=a(r5),amO=a(ah),amP=a(qB),amQ=a(P),amR=a(rg),amS=a(dn),amT=a(hJ),amU=a(dn),amV=a(rk),amW=a(hJ),anA=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amz=[0,a(d),iy,14,iy,50,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amv=[0,a(Q),nT,14,nT,41,[0,a("Article 11"),[0,a(bX),[0,a(L),0]]]],amu=a(kk),amq=[0,a(E),zk,14,zk,29,[0,a(ey),[0,a(dC),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],amp=a(xr),amr=[0,a(d),oM,11,oM,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amo=[0,a(d),oM,11,oM,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ams=[0,a(aD),[0,a("fraction_l832_3"),0]],amw=[0,a(d),nn,11,nn,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amt=[0,a(d),nn,11,nn,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amx=[0,a(aD),[0,a("montant_forfaitaire_d823_16"),0]],amA=[0,a(d),iy,14,iy,50,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amB=[0,a(aD),[0,a(kA),0]],amy=[0,a(d),iy,14,iy,50,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amC=[0,a(aD),[0,a(eJ),[0,a(bk),0]]],amD=[0,a(aD),[0,a(eJ),[0,a(bk),0]]],anB=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amE=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anC=[0,a(aD),[0,a(E6),0]],aoU=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anD=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aoV=[0,a(aD),[0,a("abattement_forfaitaire_d823_17"),0]],apj=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aoW=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apk=[0,a(aD),[0,a("loyer_r\xc3\xa9f\xc3\xa9rence"),0]],apq=[0,a(d),mo,11,mo,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apl=[0,a(d),mo,11,mo,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apr=[0,a(aD),[0,a("montant_minimal_aide_d823_16"),0]],asg=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aps=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ash=[0,a(aD),[0,a(C1),0]],asM=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asi=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asN=[0,a(aD),[0,a(zm),0]],asS=[0,a(d),nS,10,nS,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asO=[0,a(d),nS,10,nS,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asT=[0,a(aD),[0,a("loyer_principal_avec_r\xc3\xa9duction_meubl\xc3\xa9"),0]],asZ=[0,a(d),nb,11,nb,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asU=[0,a(d),nb,11,nb,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as0=[0,a(aD),[0,a("plafond_suppression_d823_16"),0]],as6=[0,a(d),oW,11,oW,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as1=[0,a(d),oW,11,oW,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as7=[0,a(aD),[0,a("plafond_d\xc3\xa9gressivit\xc3\xa9_d823_16"),0]],as_=[0,a(d),h9,11,h9,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as8=[0,a(d),h9,11,h9,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as$=[0,a(aD),[0,a("loyer_\xc3\xa9ligible"),0]],atg=[0,a(aD),[0,a(kt),0]],atA=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ath=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atB=[0,a(aD),[0,a(E7),0]],atP=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atC=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atQ=[0,a(aD),[0,a("rapport_loyers"),0]],at0=[0,a(aD),[0,a(bI),0]],auG=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],at1=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auH=[0,a(aD),[0,a("taux_loyer_\xc3\xa9ligible_formule"),0]],auW=[0,a(aD),[0,a(bJ),0]],au_=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auX=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],au$=[0,a(aD),[0,a("taux_loyer_\xc3\xa9ligible_taux_arrondi"),0]],avj=[0,a(aD),[0,a(ki),0]],avm=[0,a(d),oD,11,oD,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avk=[0,a(d),oD,11,oD,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avn=[0,a(aD),[0,a("taux_prise_compte_ressources"),0]],avw=[0,a(aD),[0,a(fm),0]],avB=[0,a(d),nX,12,nX,37,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avx=[0,a(d),nX,12,nX,37,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avC=[0,a(aD),[0,a(CI),0]],avH=[0,a(d),mP,12,mP,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avD=[0,a(d),mP,12,mP,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avI=[0,a(aD),[0,a(cX),0]],avK=a(ig),avJ=[0,a(E),l2,13,l2,74,[0,a(ey),[0,a(dC),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avP=[0,a(E),l2,13,l2,74,[0,a(ey),[0,a(dC),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avM=a(xr),avN=a(oE),avL=[0,a(aG),eU,13,eU,61,[0,a(qR),[0,a(bj),[0,a(ag),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],avO=[0,a(aG),eU,13,eU,61,[0,a(qR),[0,a(bj),[0,a(ag),[0,a(x),[0,a(aa),[0,a(w),0]]]]]]],amc=[7,0],amd=[5,0],ame=[4,0],amf=[3,0],amg=[2,0],amh=[1,0],ami=[0,0],amj=[6,0],amk=[0,a(bw),29,5,38,6,[0,a(b6),[0,a(lV),[0,a(aC),0]]]],amb=a(wM),aml=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],al_=[8,0],al$=[0,a(bw),47,5,49,6,[0,a(b6),[0,a(lV),[0,a(aC),0]]]],al9=a(xO),ama=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alZ=[7,0],al0=[5,0],al1=[4,0],al2=[3,0],al3=[2,0],al4=[1,0],al5=[0,0],al6=[6,0],al7=[0,a(bw),68,5,77,6,[0,a(b6),[0,a(nO),[0,a(aC),0]]]],alY=a(AS),al8=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alV=[8,0],alW=[0,a(bw),86,5,88,6,[0,a(b6),[0,a(nO),[0,a(aC),0]]]],alU=a(u9),alX=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alK=[7,0],alL=[5,0],alM=[4,0],alN=[3,0],alO=[2,0],alP=[1,0],alQ=[0,0],alR=[6,0],alS=[0,a(bw),c3,5,bp,6,[0,a(b6),[0,a(lY),[0,a(aC),0]]]],alJ=a(BA),alT=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alG=[8,0],alH=[0,a(bw),cs,5,cQ,6,[0,a(b6),[0,a(lY),[0,a(aC),0]]]],alF=a(ED),alI=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alv=[7,0],alw=[5,0],alx=[4,0],aly=[3,0],alz=[2,0],alA=[1,0],alB=[0,0],alC=[6,0],alD=[0,a(bw),eY,5,fL,6,[0,a(b6),[0,a(no),[0,a(aC),0]]]],alu=a(BQ),alE=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alr=[8,0],als=[0,a(bw),qS,5,nU,6,[0,a(b6),[0,a(no),[0,a(aC),0]]]],alq=a(wZ),alt=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alg=[7,0],alh=[5,0],ali=[4,0],alj=[3,0],alk=[2,0],all=[1,0],alm=[0,0],aln=[6,0],alo=[0,a(bw),hZ,5,iM,6,[0,a(fW),[0,a(mN),[0,a(aC),0]]]],alf=a(zR),alp=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alc=[8,0],ald=[0,a(bw),w4,5,yF,6,[0,a(fW),[0,a(mN),[0,a(aC),0]]]],alb=a(EC),ale=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],ak3=[7,0],ak4=[5,0],ak5=[4,0],ak6=[3,0],ak7=[2,0],ak8=[1,0],ak9=[0,0],ak_=[6,0],ak$=[0,a(bw),vG,5,E3,6,[0,a(fW),[0,a(op),[0,a(aC),0]]]],ak2=a(Eo),ala=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],akZ=[8,0],ak0=[0,a(bw),E_,5,vC,6,[0,a(fW),[0,a(op),[0,a(aC),0]]]],akY=a(Fl),ak1=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],akO=[7,0],akP=[5,0],akQ=[4,0],akR=[3,0],akS=[2,0],akT=[1,0],akU=[0,0],akV=[6,0],akW=[0,a(bw),rn,5,nT,6,[0,a(b6),[0,a(m$),[0,a(aC),0]]]],akN=a(v6),akX=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],akK=[8,0],akL=[0,a(bw),Be,5,nl,6,[0,a(b6),[0,a(m$),[0,a(aC),0]]]],akJ=a(zQ),akM=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],amm=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],akI=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],amn=[0,a(hl),[0,a(z9),0]],akE=[0,a(eL),28,5,29,33,[0,a(Cv),[0,a(cf),0]]],akD=a(xS),akF=[0,a(eL),6,12,6,19,[0,a(cf),0]],akB=[0,a(eL),48,5,49,33,[0,a(AK),[0,a(cf),0]]],akA=a(xo),akC=[0,a(eL),6,12,6,19,[0,a(cf),0]],aky=[0,a(eL),64,5,65,33,[0,a(Ch),[0,a(cf),0]]],akx=a(B4),akz=[0,a(eL),6,12,6,19,[0,a(cf),0]],akv=[0,a(eL),82,5,83,33,[0,a(wT),[0,a(cf),0]]],aku=a(BY),akw=[0,a(eL),6,12,6,19,[0,a(cf),0]],akG=[0,a(eL),6,12,6,19,[0,a(cf),0]],akt=[0,a(eL),6,12,6,19,[0,a(cf),0]],akH=[0,a(f_),[0,a(bQ),0]],ako=[0,a(E),zg,14,zg,28,[0,a(kR),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],akn=a(p),akp=[0,a(d),f8,12,f8,26,[0,a(ck),[0,a(A),[0,a(e),0]]]],akm=[0,a(E),Dl,14,Dl,28,[0,a(kL),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],akl=a(p),akq=[0,a(d),f8,12,f8,26,[0,a(ck),[0,a(A),[0,a(e),0]]]],akg=[0,a(E),yc,20,yc,55,[0,a(kL),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],akd=a(p),ake=a(p),akf=a(kK),akh=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],akb=[0,a(E),DK,20,DK,51,[0,a(kL),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aj_=a(p),aj$=a(p),aka=a(kK),akc=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],aj8=[0,a(E),yi,7,yi,42,[0,a(kR),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aj4=a(CF),aj5=a(et),aj6=a(kK),aj7=a(p),aj9=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],aj2=[0,a(E),wG,7,wG,51,[0,a(kR),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajY=a(CF),ajZ=a(et),aj0=a(kK),aj1=a(p),aj3=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajT=[0,a(E),wy,14,wy,36,[0,a(kL),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajU=[0,a(d),fK,11,fK,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajR=[0,a(E),B0,14,B0,36,[0,a(kR),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajQ=a(cI),ajS=[0,a(d),fK,11,fK,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajK=[0,a(E),vM,14,vM,36,[0,a(kR),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajL=[0,a(d),fM,11,fM,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajJ=[0,a(E),x0,14,x0,36,[0,a(kL),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajM=[0,a(d),fM,11,fM,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajF=[0,a(E),vQ,14,vQ,36,[0,a("Article R824-3"),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajA=[0,0],ajB=[1,0],ajC=[1,0],ajD=[0,0],ajE=[0,0],ajG=[0,a(d),oq,11,oq,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajz=[0,a(d),oq,11,oq,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajH=[0,a(kJ),[0,a("mode_occupation_impay\xc3\xa9"),0]],ajN=[0,a(d),fM,11,fM,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajI=[0,a(d),fM,11,fM,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajO=[0,a(kJ),[0,a("d\xc3\xa9pense_logement_brute"),0]],ajV=[0,a(d),fK,11,fK,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajP=[0,a(d),fK,11,fK,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajW=[0,a(kJ),[0,a("d\xc3\xa9pense_logement_nette"),0]],aki=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajX=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],akj=[0,a(kJ),[0,a("seuil_impay\xc3\xa9_d\xc3\xa9pense_de_logement"),0]],akr=[0,a(d),f8,12,f8,26,[0,a(ck),[0,a(A),[0,a(e),0]]]],akk=[0,a(d),f8,12,f8,26,[0,a(ck),[0,a(A),[0,a(e),0]]]],aks=[0,a(kJ),[0,a("montant_impay\xc3\xa9"),0]],aju=[0,a(c6),rP,5,rP,42,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(aa),[0,a(af),0]]]]]]]]]],ajv=[0,a(d),cP,12,cP,31,[0,a(fH),[0,a(A),[0,a(e),0]]]],ajs=[0,a(c6),eB,5,eB,41,[0,a(kI),[0,a(kv),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],ajt=[0,a(d),cP,12,cP,31,[0,a(fH),[0,a(A),[0,a(e),0]]]],ajq=[0,a(c6),266,5,vI,42,[0,a(kI),[0,a(kv),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],ajr=[0,a(d),cP,12,cP,31,[0,a(fH),[0,a(A),[0,a(e),0]]]],ajn=a("1952"),ajo=[0,a(c6),xm,5,xm,48,[0,a(kI),[0,a(kv),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],ajp=[0,a(d),cP,12,cP,31,[0,a(fH),[0,a(A),[0,a(e),0]]]],ajk=a("1953"),ajl=[0,a(c6),nl,5,nl,48,[0,a(kI),[0,a(kv),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],ajm=[0,a(d),cP,12,cP,31,[0,a(fH),[0,a(A),[0,a(e),0]]]],ajh=a("1954"),aji=[0,a(c6),dh,5,dh,48,[0,a(kI),[0,a(kv),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],ajj=[0,a(d),cP,12,cP,31,[0,a(fH),[0,a(A),[0,a(e),0]]]],ajw=[0,a(d),cP,12,cP,31,[0,a(fH),[0,a(A),[0,a(e),0]]]],ajg=[0,a(d),cP,12,cP,31,[0,a(fH),[0,a(A),[0,a(e),0]]]],ajx=[0,a(rI),[0,a("\xc3\xa2ge_ouverture_droit"),0]],ajd=[0,a(E),xM,14,xM,36,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ai1=a(p),ai2=a(Ea),ai3=a(wp),ai4=a(z),ai5=a(ig),ai6=a(X),ai7=a(ov),ai8=a(_),ai9=a(qD),ai_=a(ah),ai$=a(hO),aja=a(ah),ajb=a(kd),ajc=a(hO),aje=[0,a(d),n6,12,n6,34,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],ai0=[0,a(d),n6,12,n6,34,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],ajf=[0,a(kq),[0,a(v7),0]],aiW=[0,a(E),yw,5,yw,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aiI=a(p),aiJ=a("1.2"),aiK=a("1.5"),aiL=a(z),aiM=a(ig),aiN=a(X),aiO=a(ov),aiP=a(_),aiQ=a(qD),aiR=a(ah),aiS=a(hO),aiT=a(ah),aiU=a(kd),aiV=a(hO),aiX=[0,a(d),hs,12,hs,34,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aiH=[0,a(E),vN,14,vN,36,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ait=a(p),aiu=a(Ea),aiv=a(wp),aiw=a(z),aix=a(ig),aiy=a(X),aiz=a(ov),aiA=a(_),aiB=a(qD),aiC=a(ah),aiD=a(hO),aiE=a(ah),aiF=a(kd),aiG=a(hO),aiY=[0,a(d),hs,12,hs,34,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ais=[0,a(d),hs,12,hs,34,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aiZ=[0,a(ky),[0,a(r2),0]],aio=[0,a(E),Fd,5,Fd,26,[0,a(rs),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aim=a(b5),ail=a(cI),ain=a(b5),aip=[0,a(d),iK,12,iK,19,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aik=[0,a(E),xd,14,xd,21,[0,a(rs),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aii=a(b5),aih=a(cI),aij=a(b5),aid=[0,a(E),EB,14,EB,50,[0,a(rs),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aic=[1,0],ah9=[0,a(Q),Fv,5,Fv,26,[0,a(ss),[0,a(fh),[0,a(L),0]]]],ahU=a("0.328"),ahV=a(x5),ahW=[1,0],ahX=a(v$),ahY=a(DW),ahZ=a(x5),ah0=a(vl),ah1=a(y9),ah2=a(DW),ah3=a("0.024"),ah4=a(wu),ah5=a(y9),ah6=a(b5),ah7=a(p),ah8=a(wu),ah_=[0,a(d),gH,11,gH,35,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ahT=[0,a(Q),wi,14,wi,38,[0,a(ss),[0,a(fh),[0,a(L),0]]]],ahB=a("0.48"),ahC=a(xp),ahD=[1,0],ahE=a(sn),ahF=a(zd),ahG=a(xp),ahH=a("0.264"),ahI=a(yy),ahJ=a(zd),ahK=a("0.216"),ahL=a(Ej),ahM=a(yy),ahN=a("0.104"),ahO=a(yu),ahP=a(Ej),ahQ=a(CC),ahR=a(p),ahS=a(yu),ahx=[0,a(Q),DE,14,DE,41,[0,a(ss),[0,a(fh),[0,a(L),0]]]],ahv=a("7632"),ahw=a("4557"),ahy=[0,a(d),l9,11,l9,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ahu=[0,a(d),l9,11,l9,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ahz=[0,a(dP),[0,a("montant_forfaitaire_d832_26"),0]],ah$=[0,a(d),gH,11,gH,35,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ahA=[0,a(d),gH,11,gH,35,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aia=[0,a(dP),[0,a("tranches_revenus_d832_26"),0]],aie=[0,a(d),nA,11,nA,47,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aib=[0,a(d),nA,11,nA,47,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aif=[0,a(dP),[0,a("tranches_revenus_d832_26_multipli\xc3\xa9es"),0]],aiq=[0,a(d),iK,12,iK,19,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aig=[0,a(d),iK,12,iK,19,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],air=[0,a(dP),[0,a(bQ),0]],ahq=[0,a(fc),ge,5,ge,34,[0,a(cF),[0,a(rm),[0,a(sp),0]]]],ahr=[0,a(d),n9,12,n9,19,[0,a(fN),[0,a(i),[0,a(e),0]]]],ahp=[0,a(d),n9,12,n9,19,[0,a(fN),[0,a(i),[0,a(e),0]]]],ahm=[0,a(fc),xY,39,xY,68,[0,a(nw),[0,a(rm),[0,a(sp),0]]]],ahl=a(lZ),ahg=[0,a(c6),37,9,37,20,[0,a("Article L136-1-3"),[0,a("Section 1 : De la contribution sociale sur les revenus d'activit\xc3\xa9 et sur les revenus de remplacement"),[0,a("Chapitre 6 : Contribution sociale g\xc3\xa9n\xc3\xa9ralis\xc3\xa9e"),[0,a(jc),[0,a(aa),[0,a(af),0]]]]]]],ahh=[0,a(d),f4,11,f4,22,[0,a(fN),[0,a(i),[0,a(e),0]]]],ahf=[0,a(d),f4,11,f4,22,[0,a(fN),[0,a(i),[0,a(e),0]]]],ahi=[0,a(d),f4,11,f4,22,[0,a(fN),[0,a(i),[0,a(e),0]]]],ahe=[0,a(d),f4,11,f4,22,[0,a(fN),[0,a(i),[0,a(e),0]]]],ahj=[0,a(bk),[0,a("exon\xc3\xa9r\xc3\xa9_csg"),0]],ahn=[0,a(d),hV,11,hV,20,[0,a(fN),[0,a(i),[0,a(e),0]]]],ahk=[0,a(d),hV,11,hV,20,[0,a(fN),[0,a(i),[0,a(e),0]]]],aho=[0,a(bk),[0,a("taux_crds"),0]],ahs=[0,a(bk),[0,a(bQ),0]],aht=[0,a(fc),fE,13,fE,24,[0,a(cF),[0,a(rm),[0,a(sp),0]]]],ag6=a("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16_in"),ag7=a(hy),ag8=a(hW),ag9=a(iE),ag_=a(iF),ag$=a(kD),aha=a(AT),ahb=a(vj),ahc=a(Dd),ahd=[0,a("CalculAllocationLogementFoyer_in"),0],agR=a(z$),agS=a("charges_mensuelles_pr\xc3\xaat_in"),agT=a(yX),agU=a(AM),agV=a(ym),agW=a(u0),agX=a(Ar),agY=a(wP),agZ=a(hy),ag0=a(hW),ag1=a(iE),ag2=a(iF),ag3=a("ressources_m\xc3\xa9nage_arrondies_base_in"),ag4=[0,a("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"),0],agC=a("changement_logement_d842_4_in"),agD=a(vL),agE=a(Bw),agF=a(BL),agG=a(B5),agH=a(BF),agI=a(Fs),agJ=a(hW),agK=a(iE),agL=a(iF),agM=a(hy),agN=a(F$),agO=a(kD),agP=a("loyer_principal_in"),agQ=[0,a("CalculAllocationLogementLocatif_in"),0],agn=a(hy),ago=a("anciennet\xc3\xa9_logement_in"),agp=a("type_pr\xc3\xaat_in"),agq=a(hW),agr=a(Ar),ags=a(z$),agt=a(yX),agu=a(AM),agv=a(u0),agw=a(ym),agx=a(iE),agy=a(iF),agz=a(kD),agA=a(wP),agB=[0,a("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"),0],agb=a("n_nombre_parts_d832_25_in"),agc=a("condition_2_du_832_25_in"),agd=a(AT),age=a(hy),agf=a(hW),agg=a(iE),agh=a(iF),agi=a(kD),agj=a(vj),agk=a(Dd),agl=[0,a("CalculAidePersonnalis\xc3\xa9eLogementFoyer_in"),0],afY=a(vL),afZ=a(Bw),af0=a(BL),af1=a(B5),af2=a(BF),af3=a(Fs),af4=a(hW),af5=a(iE),af6=a(iF),af7=a(hy),af8=a(F$),af9=a(kD),af_=a("loyer_principal_base_in"),af$=[0,a("CalculAidePersonnalis\xc3\xa9eLogementLocatif_in"),0],afP=a("enfant_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_quatri\xc3\xa8me_mois_grossesse"),afQ=a("condition_rattach\xc3\xa9_foyer_fiscal_parent_ifi"),afR=a("situation_familiale"),afS=a("nombre_autres_occupants_logement"),afT=a("personnes_\xc3\xa0_charge"),afU=a("logement"),afV=a("prestations_re\xc3\xa7ues"),afW=[0,a("M\xc3\xa9nage"),0],afF=a("zone"),afG=a("surface_m_carr\xc3\xa9s"),afH=a("logement_decent_l89_462"),afI=a("usufruit"),afJ=a("lou\xc3\xa9_ou_sous_lou\xc3\xa9_\xc3\xa0_des_tiers"),afK=a("propri\xc3\xa9taire"),afL=a("mode_occupation"),afM=a("est_ehpad_ou_maison_autonomie_l313_12_asf"),afN=a("r\xc3\xa9sidence_principale"),afO=[0,a("Logement"),0],afz=a(zf),afB=a("R\xc3\xa9sidentLogementFoyer"),afC=a("AccessionPropri\xc3\xa9t\xc3\xa9LocalUsageExclusifHabitation"),afD=a(Dm),afE=a(x1),afA=[0,a("ModeOccupation"),0],afv=a(F1),afx=a("AccessionPropri\xc3\xa9t\xc3\xa9"),afy=a(x4),afw=[0,a("Cat\xc3\xa9gorieCalculAPL"),0],afm=a("changement_logement_d842_4"),afn=a("logement_meubl\xc3\xa9_d842_2"),afo=a("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),afp=a("colocation"),afq=a("logement_est_chambre"),afr=a("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),afs=a("loyer_principal"),aft=a("bailleur"),afu=[0,a(F1),0],afh=a("personne_h\xc3\xa9berg\xc3\xa9e_centre_soin_l_L162_22_3_s\xc3\xa9curit\xc3\xa9_sociale"),afi=a("patrimoine"),afj=a("nationalit\xc3\xa9"),afk=a(Bx),afl=[0,a(qw),0],afe=a(D2),afg=a(CU),aff=[0,a("Personne\xc3\x80Charge"),0],ae4=a("pr\xc3\xaat"),ae5=a("anciennet\xc3\xa9_logement"),ae6=a("situation_r822_11_13_17"),ae7=a("copropri\xc3\xa9t\xc3\xa9"),ae8=a("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire"),ae9=a("type_travaux_logement_r842_5"),ae_=a("type_travaux_logement_d832_15"),ae$=a("date_entr\xc3\xa9e_logement"),afa=a("charges_mensuelles_pr\xc3\xaat"),afb=a("mensualit\xc3\xa9_principale"),afc=a("logement_situ\xc3\xa9_commune_d\xc3\xa9s\xc3\xa9quilibre_l831_2"),afd=[0,a("Propri\xc3\xa9taire"),0],ae1=a(AU),ae3=a(zF),ae2=[0,a("ChangementLogementD842_4"),0],aeY=a("Fran\xc3\xa7aise"),ae0=a("\xc3\x89trang\xc3\xa8re"),aeZ=[0,a("Nationalit\xc3\xa9"),0],aeV=a(kS),aeX=a(o6),aeW=[0,a("Lou\xc3\xa9OuSousLou\xc3\xa9\xc3\x80DesTiers"),0],aeR=a(CZ),aeT=a("BailleurPriv\xc3\xa9AvecConventionnementSocial"),aeU=a("BailleurPriv\xc3\xa9"),aeS=[0,a("TypeBailleur"),0],aeJ=a("situation_garde_altern\xc3\xa9e"),aeK=a(rC),aeL=a(q1),aeM=a(q0),aeN=a(qV),aeO=a(qG),aeP=a(rt),aeQ=[0,a(D2),0],aeB=a(qG),aeC=a(qV),aeD=a(EY),aeE=a(q0),aeF=a(q1),aeG=a(rC),aeH=a(rt),aeI=[0,a("EnfantPrestationsFamiliales"),0],aet=a("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16"),aeu=a("redevance"),aev=a("construit_application_loi_1957_12_III"),aew=a("date_conventionnement"),aex=a(Fj),aey=a("remplit_conditions_r832_21"),aez=a("type"),aeA=[0,a(x4),0],ael=a("titulaire_allocation_personne_\xc3\xa2g\xc3\xa9e"),aem=a("b\xc3\xa9n\xc3\xa9ficiaire_l161_19_l351_8_l643_3_s\xc3\xa9cu"),aen=a("incapacit\xc3\xa9_80_pourcent_ou_restriction_emploi"),aeo=a("parent\xc3\xa9"),aep=a("ascendant_descendant_collat\xc3\xa9ral_deuxi\xc3\xa8me_troisi\xc3\xa8me_degr\xc3\xa9"),aeq=a("ressources"),aer=a(Bx),aes=[0,a(CU),0],aeh=a(u5),aei=a(vk),aej=a(EJ),aek=[0,a("TrancheRevenuD\xc3\xa9cimal"),0],aec=a(u5),aed=a(vk),aee=a(EJ),aef=[0,a("TrancheRevenu"),0],ad_=a(AC),aea=a(C$),ad$=[0,a("NeufOuAncien"),0],ad6=a("titulaire_pr\xc3\xaat"),ad7=a("date_signature"),ad8=a("type_pr\xc3\xaat"),ad9=[0,a("Pr\xc3\xaat"),0],adZ=a(aw),ad0=a(cX),ad1=a(FS),ad2=a(qA),ad3=a(u$),ad4=a(q4),ad5=[0,a(ao),0],adV=a(aw),adW=a(cX),adX=[0,a(V),0],adS=a(aw),adT=a(cX),adU=[0,a(bh),0],adP=a("ancienne_allocation_logement"),adQ=a("ancien_loyer_principal"),adR=[0,a("InfosChangementLogementD842_4"),0],adM=a(aw),adN=a(cX),adO=[0,a("Traitement_formule_aide_finale"),0],adG=a(aw),adH=a(cX),adI=a("coefficient_prise_en_charge_d832_10"),adJ=a(q7),adK=a(sm),adL=[0,a(aj),0],adv=a(aw),adw=a(cX),adx=a("coefficient_prise_en_charge_d832_25"),ady=a(vo),adz=a(z0),adA=a(xQ),adB=a(r2),adC=a(Em),adD=a(A9),adE=[0,a(au),0],adm=a(aw),adn=a(cX),ado=a(CI),adp=a(E6),adq=a(E7),adr=a(C1),ads=a(zm),adt=[0,a(aD),0],adj=a("satisfait_conditions_l512_2_code_s\xc3\xa9curit\xc3\xa9_sociale"),adk=[0,a("Conditions\xc3\x89trangers"),0],adg=a("ne_produisant_pas_revenu_p\xc3\xa9riode_r822_3_3_r822_4"),adh=a("produisant_revenu_p\xc3\xa9riode_r822_3_3_r822_4"),adi=[0,a("Patrimoine"),0],add=a("conforme_article_l442_1"),ade=a("date_naissance_personne_sous_location"),adf=[0,a("PersonneSousLocation"),0],adb=a("conventionn\xc3\xa9_livre_III_titre_II_chap_I_sec_3"),adc=[0,a("ConventionANHA"),0],ac_=a("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_per\xc3\xa7ue"),ac$=a(Fj),ada=[0,a("ConventionBailleurSocial"),0],ac1=a(om),ac3=a(U),ac4=a(qU),ac5=a(nY),ac6=a(DS),ac7=a(i0),ac8=a(BW),ac9=a(y1),ac2=[0,a(FR),0],acW=a(ku),acY=a(kh),acZ=a(Co),acX=[0,a(CW),0],acQ=a(A_),acS=a(D4),acT=a(j7),acU=a(Ft),acV=a(yN),acR=[0,a("PriseEnChargeEnfant"),0],acG=a(my),acI=a(oy),acJ=a(mb),acK=a(Ds),acL=a(yW),acM=a(o8),acN=a(C5),acO=a(nr),acP=a(oK),acH=[0,a(BZ),0],acD=a(EU),acF=a(Ap),acE=[0,a("SituationFamilialeCalculAPL"),0],acy=a("\xc3\x89tudiantLog\xc3\xa9EnChambreCROUS"),acA=a("\xc3\x89tudiantLog\xc3\xa9EnChambreCROUSR\xc3\xa9habilit\xc3\xa9e"),acB=a("Personnes\xc3\x82g\xc3\xa9esSelon3DeD842_16"),acC=a(ES),acz=[0,a("Cat\xc3\xa9gorie\xc3\x89quivalenceLoyerAllocationLogementFoyer"),0],act=a("LogementPersonnes\xc3\x82g\xc3\xa9esOuHandicap\xc3\xa9es"),acv=a("R\xc3\xa9sidenceSociale"),acw=a("FoyerJeunesTrvailleursOuMigrantsConventionn\xc3\xa9L353_2Avant1995"),acx=a(ik),acu=[0,a("TypeLogementFoyer"),0],acm=a("C\xc3\xa9libataire"),aco=a("Mari\xc3\xa9s"),acp=a("Pacs\xc3\xa9s"),acq=a(yY),acr=a("C\xc3\xa9libataireS\xc3\xa9par\xc3\xa9DeFait"),acs=a("ConcubinageDontS\xc3\xa9par\xc3\xa9DeFait"),acn=[0,a("SituationFamiliale"),0],aci=a("AidePersonnalis\xc3\xa9eLogement"),ack=a(oV),acl=a(np),acj=[0,a("TypeAidesPersonnelleLogement"),0],ace=a("Pas\xc3\x89ligible"),acg=a(oV),ach=a(np),acf=[0,a("Type\xc3\x89ligibilit\xc3\xa9AllocationLogement"),0],acb=a("Impay\xc3\xa9Loyer"),acd=a("Impay\xc3\xa9Pr\xc3\xaat"),acc=[0,a("ModeOccupationImpay\xc3\xa9"),0],ab8=a("TotalAnnuel\xc3\x89ch\xc3\xa9ances"),ab_=a("Mensualit\xc3\xa9"),ab$=a(Fy),ab9=[0,a("D\xc3\xa9penseLogement"),0],ab4=a(ze),ab6=a(v9),ab7=a(yQ),ab5=[0,a("ZoneDHabitation"),0],ab0=a(Bo),ab2=a(Bc),ab3=a("Collat\xc3\xa9ralDeuxi\xc3\xa8meTroisi\xc3\xa8meDegr\xc3\xa9"),ab1=[0,a("Parent\xc3\xa9"),0],abX=a("PasDeGardeAltern\xc3\xa9e"),abZ=a("GardeAltern\xc3\xa9eCoefficientPriseEnCharge"),abY=[0,a("SituationGardeAltern\xc3\xa9e"),0],abU=a("DemandeurOuConjointOuParentOuViaPartsSoci\xc3\xa9t\xc3\xa9s"),abW=a(ik),abV=[0,a("ParentOuAutre"),0],abN=a(U),abP=a(qU),abQ=a(CT),abR=a(i0),abS=a("AllocationSoutienEnfantHandicap\xc3\xa9"),abT=a("AllocationAdulteHandicap\xc3\xa9"),abO=[0,a("PrestationRe\xc3\xa7ue"),0],abJ=a(En),abL=a(v2),abK=[0,a("LimiteTrancheD\xc3\xa9cimal"),0],abG=a(En),abI=a(v2),abH=[0,a("LimiteTranche"),0],abD=a(o6),abF=a(kS),abE=[0,a("Am\xc3\xa9lior\xc3\xa9ParOccupant"),0],aby=a("ObjectifD\xc3\xa9cenceLogement"),abA=a("Pr\xc3\xa9vuDansListeR321_15"),abB=a(Ct),abC=a(ow),abz=[0,a("TypeTravauxLogementR842_5"),0],abu=a(xg),abw=a("TravauxSurLogementD\xc3\xa9j\xc3\xa0AcquisD832_15_2"),abx=a(ow),abv=[0,a("TypeTravauxLogementD832_15"),0],abr=a(qw),abt=a(xJ),abs=[0,a("TitulairePr\xc3\xaat"),0],abl=a(BG),abn=a(xH),abo=a(z_),abp=a(Af),abq=a(ik),abm=[0,a("TypePr\xc3\xaat"),0],bx2=a($),bxC=a("The function 'n_nombre_parts_d832_25_in' translation isn't yet supported..."),bxD=a("The function 'condition_2_du_832_25_in' translation isn't yet supported..."),bxA=a("The function 'condition_logement_surface_in' translation isn't yet supported..."),bxB=a("The function 'condition_logement_residence_principale_in' translation isn't yet supported..."),bxu=a("AccessionProprieteLocalUsageExclusifHabitation"),bxv=a(zf),bxw=a(x1),bxx=a("ResidentLogementFoyer"),bxy=a(Dm),bxz=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ModeOccupation.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ModeOccupation.t'")],bxr=a("AutrePersonneACharge"),bxs=a("EnfantACharge"),bxt=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PersonneACharge.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PersonneACharge.t'")],bxn=a(AU),bxo=a(zF),bxq=[1,0],bxp=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ChangementLogementD8424.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ChangementLogementD8424.t'")],bxj=a("Etrangere"),bxk=a("Francaise"),bxm=[0,0],bxl=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'Nationalite.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'Nationalite.t'")],bxf=a(kS),bxg=a(o6),bxi=[0,0],bxh=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'LoueOuSousLoueADesTiers.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'LoueOuSousLoueADesTiers.t'")],bxa=a("BailleurPrive"),bxb=a("BailleurPriveAvecConventionnementSocial"),bxc=a(CZ),bxe=[2,0],bxd=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeBailleur.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeBailleur.t'")],bw8=a("MoinsDeTroisEnfants"),bw9=a("PlusDeTroisEnfants"),bw$=[0,0],bw_=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'")],bw4=a(C$),bw5=a(AC),bw7=[0,0],bw6=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'NeufOuAncien.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'NeufOuAncien.t'")],bwN=a(vY),bwO=a(ye),bwP=a(nY),bwQ=a(Ez),bwR=a(i0),bwS=a(U),bwT=a(qv),bwU=a(om),bwW=[0,0],bwX=[2,0],bwY=[1,0],bwZ=[5,0],bw0=[6,0],bw1=[3,0],bw2=[7,0],bw3=[4,0],bwV=[0,[11,a(bg),[2,0,[11,a(D5),0]]],a(FT)],bwG=a(r1),bwH=a(ku),bwI=a(kh),bwK=[1,0],bwL=[0,0],bwM=[2,0],bwJ=[0,[11,a(bg),[2,0,[11,a(x8),0]]],a(wx)],bwv=a(j7),bww=a(q_),bwx=a(qO),bwy=a(rq),bwz=a(qL),bwB=[4,0],bwC=[3,0],bwD=[0,0],bwE=[1,0],bwF=[2,0],bwA=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PriseEnChargeEnfant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PriseEnChargeEnfant.t'")],bwc=a(my),bwd=a(oy),bwe=a(wt),bwf=a(mb),bwg=a(oK),bwh=a(Fn),bwi=a(xi),bwj=a(o8),bwk=a(nr),bwm=[7,0],bwn=[5,0],bwo=[4,0],bwp=[6,0],bwq=[8,0],bwr=[2,0],bws=[3,0],bwt=[1,0],bwu=[0,0],bwl=[0,[11,a(bg),[2,0,[11,a(BU),0]]],a(wN)],bv9=a(Ap),bv_=a(EU),bwa=[0,0],bwb=[1,0],bv$=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'SituationFamilialeCalculAPL.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationFamilialeCalculAPL.t'")],bv0=a(ES),bv1=a("EtudiantLogeEnChambreCROUS"),bv2=a("EtudiantLogeEnChambreCROUSRehabilitee"),bv3=a("PersonnesAgeesSelon3DeD842_16"),bv5=[2,0],bv6=[1,0],bv7=[0,0],bv8=[3,0],bv4=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'")],bvR=a(ik),bvS=a("FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995"),bvT=a("LogementPersonnesAgeesOuHandicapees"),bvU=a("ResidenceSociale"),bvW=[1,0],bvX=[0,0],bvY=[2,0],bvZ=[3,0],bvV=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeLogementFoyer.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeLogementFoyer.t'")],bvF=a("Celibataire"),bvG=a("CelibataireSepareDeFait"),bvH=a("ConcubinageDontSepareDeFait"),bvI=a(yY),bvJ=a("Maries"),bvK=a("Pacses"),bvM=[2,0],bvN=[3,0],bvO=[5,0],bvP=[4,0],bvQ=[0,0],bvL=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'SituationFamiliale.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationFamiliale.t'")],bvy=a("AidePersonnaliseeLogement"),bvz=a(oV),bvA=a(np),bvC=[2,0],bvD=[1,0],bvE=[0,0],bvB=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeAidesPersonnelleLogement.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeAidesPersonnelleLogement.t'")],bvu=a(Fy),bvv=a("Mensualite"),bvw=a("TotalAnnuelEcheances"),bvx=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'DepenseLogement.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DepenseLogement.t'")],bvn=a("Bailleur"),bvo=a("Beneficiaire"),bvp=a("EtablissementHabilite"),bvr=[2,0],bvs=[1,0],bvt=[0,0],bvq=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'VersementA.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'VersementA.t'")],bvj=a(kS),bvk=a("OuiAvecLoyerOuCharges"),bvm=[1,0],bvl=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'")],bvc=a(ze),bvd=a(v9),bve=a(yQ),bvg=[2,0],bvh=[1,0],bvi=[0,0],bvf=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ZoneDHabitation.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ZoneDHabitation.t'")],bu8=a("ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse"),bu9=a("AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse"),bu_=a("DateDeNaissance"),bva=[1,0],bvb=[2,0],bu$=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'")],bu1=a(Bo),bu2=a("CollateralDeuxiemeTroisiemeDegre"),bu3=a(Bc),bu5=[1,0],bu6=[2,0],bu7=[0,0],bu4=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'Parente.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'Parente.t'")],buX=a("GardeAlterneeCoefficientPriseEnCharge"),buY=a("PasDeGardeAlternee"),bu0=[0,0],buZ=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'SituationGardeAlternee.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationGardeAlternee.t'")],buT=a(ik),buU=a("DemandeurOuConjointOuParentOuViaPartsSocietes"),buW=[1,0],buV=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ParentOuAutre.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ParentOuAutre.t'")],buG=a("AllocationAdulteHandicape"),buH=a(CT),buI=a("AllocationSoutienEnfantHandicape"),buJ=a(i0),buK=a(U),buL=a(qv),buN=[1,0],buO=[0,0],buP=[3,0],buQ=[4,0],buR=[2,0],buS=[5,0],buM=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PrestationRecue.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PrestationRecue.t'")],buB=a(kS),buC=a(o6),buE=[0,0],buF=[1,0],buD=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'AmelioreParOccupant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'AmelioreParOccupant.t'")],bus=a(Ct),but=a("ObjectifDecenceLogement"),buu=a(ow),buv=a("PrevuDansListeR321_15"),bux=[1,0],buy=[3,0],buz=[0,0],buA=[2,0],buw=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeTravauxLogementR8425.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementR8425.t'")],bul=a(ow),bum=a(xg),bun=a("TravauxSurLogementDejaAcquisD832_15_2"),bup=[1,0],buq=[0,0],bur=[2,0],buo=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeTravauxLogementD83215.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementD83215.t'")],bug=a(qw),buh=a(xJ),buj=[1,0],buk=[0,0],bui=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TitulairePret.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TitulairePret.t'")],bt7=a(ik),bt8=a(BG),bt9=a(z_),bt_=a(xH),bt$=a(Af),bub=[3,0],buc=[1,0],bud=[2,0],bue=[0,0],buf=[4,0],bua=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypePret.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypePret.t'")],bt5=[0,a(Fw),a(zG),a(ER),a(A3),a(xn),a(o2),a(gd),a(A2),a(y7),a(vA),a(DD),a(yB),a(Bd),a(yJ),a(Fg),a(Db),a(BJ),a(zB),a(F4),a(B3),a(vp),a(w6),a(A4),a(vb)],bt6=[0,a(gd),a(A3),a(Db),a(BJ),a(zB),a(xn),a(vp),a(ER),a(vA),a(A2),a(F4),a(Bd),a(DD),a(yJ),a(A4),a(zG),a(yB),a(B3),a(vb),a(w6),a(y7),a(Fw),a(Fg),a(o2)],byp=a("AidesLogementLib"),byr=a($);function +bzo(){var +a=aL;if(a.process&&a.process.on)a.process.on("uncaughtException",function(b,c){Gu(b);a.process.exit(2)});else +if(a.addEventListener)a.addEventListener("error",function(a){if(a.error)Gu(a.error)})}bzo();function +r(a,b){return a.length==1?a(b):dG(a,[b])}function +aq(a,b,c){return a.length==2?a(b,c):dG(a,[b,c])}function +cB(a,b,c,d){return a.length==3?a(b,c,d):dG(a,[b,c,d])}function +u2(a,b,c,d,e){return a.length==4?a(b,c,d,e):dG(a,[b,c,d,e])}function +lO(a,b,c,d,e,f){return a.length==5?a(b,c,d,e,f):dG(a,[b,c,d,e,f])}function +byB(a,b,c,d,e,f,g){return a.length==6?a(b,c,d,e,f,g):dG(a,[b,c,d,e,f,g])}function +byA(a,b,c,d,e,f,g,h){return a.length==7?a(b,c,d,e,f,g,h):dG(a,[b,c,d,e,f,g,h])}byQ();var +pp=[bm,a(Dw),-1],sY=[bm,a(Ec),-2],k8=[bm,a(q6),-3],sU=[bm,a(zm),-4],pq=[bm,a(wY),-6],cD=[bm,a(Fc),-7],sW=[bm,a(vV),-8],sX=[bm,a(zN),-9],bs=[bm,a(FJ),-11],sZ=[bm,a(DW),DL],byx=[4,0,0,0,[12,45,[4,0,0,0,0]]],pG=[0,[11,a('File "'),[2,0,[11,a('", line '),[4,0,0,0,[11,a(yY),[4,0,0,0,[12,45,[4,0,0,0,[11,a(": "),[2,0,0]]]]]]]]]],a('File "%s", line %d, characters %d-%d: %s')],byy=[12,41,0],byz=[4,0,0,0,[12,46,0]],u1=[0,a("eventsManager"),a("computeAllocationsFamiliales"),a("computeAidesAuLogement")];d5(11,sZ,DW);d5(10,bs,FJ);d5(9,[bm,a(B7),-10],B7);d5(8,sX,zN);d5(7,sW,vV);d5(6,cD,Fc);d5(5,pq,wY);d5(4,[bm,a(yv),-5],yv);d5(3,sU,zm);d5(2,k8,q6);d5(1,sY,Ec);d5(0,pp,Dw);var +G9=a("output_substring"),G6=a("%.12g"),G5=a(ev),G3=a(wu),G4=a(zB),GW=a("Stdlib.Exit"),GY=gi(0,0,E9),GZ=gi(0,0,65520),G0=gi(1,0,E9),G$=a("CamlinternalLazy.Undefined"),He=a(wK),Hf=a("\\'"),Hg=a(v4),Hh=a(Ao),Hi=a(Bl),Hj=a(yC),Hd=a("Char.chr"),Hm=a("nth"),Hn=a("List.nth"),Hl=a("tl"),Hk=a("hd"),Hq=a("String.blit / Bytes.blit_string"),Hp=a("Bytes.blit"),Ho=a("String.sub / Bytes.sub"),Hv=a("String.contains_from / Bytes.contains_from"),Hs=a(aa),Hr=a("String.concat"),Hy=a("Array.blit"),Hx=a("Array.fill"),HD=a("Map.remove_min_elt"),HE=[0,0,0,0],HF=[0,a("map.ml"),xy,10],HG=[0,0,0],Hz=a(ml),HA=a(ml),HB=a(ml),HC=a(ml),HH=a("Stdlib.Queue.Empty"),HN=a("Buffer.add_substring/add_subbytes"),HM=a("Buffer.add: cannot grow buffer"),HL=[0,a(zY),93,2],HK=[0,a(zY),94,2],HJ=a("Buffer.sub"),HW=a("%c"),HX=a("%s"),HY=a(x0),HZ=a(BF),H0=a(zj),H1=a(D7),H2=a("%f"),H3=a("%B"),H4=a("%{"),H5=a("%}"),H6=a("%("),H7=a("%)"),H8=a(q2),H9=a("%t"),H_=a("%?"),H$=a("%r"),Ia=a("%_r"),Ib=[0,a(cj),kx,23],Im=[0,a(cj),814,21],Ie=[0,a(cj),gM,21],In=[0,a(cj),818,21],If=[0,a(cj),gC,21],Io=[0,a(cj),rA,19],Ig=[0,a(cj),rd,19],Ip=[0,a(cj),826,22],Ih=[0,a(cj),827,22],Iq=[0,a(cj),831,30],Ii=[0,a(cj),832,30],Ik=[0,a(cj),836,26],Ic=[0,a(cj),837,26],Il=[0,a(cj),846,28],Id=[0,a(cj),847,28],Ij=[0,a(cj),kN,23],Jt=a(wj),Jr=[0,a(cj),1558,4],Js=a("Printf: bad conversion %["),Ju=[0,a(cj),Dh,39],Jv=[0,a(cj),1649,31],Jw=[0,a(cj),1650,31],Jx=a("Printf: bad conversion %_"),Jy=a(wf),Jz=a(ws),JA=a(wf),JB=a(ws),JF=[0,[11,a("invalid box description "),[3,0,0]],a("invalid box description %S")],JD=a(aa),JE=[0,0,4],JG=a(aa),JH=a(xF),JI=a("h"),JJ=a("hov"),JK=a("hv"),JL=a("v"),Jp=a(q8),Jn=a("neg_infinity"),Jo=a(FX),Jm=a(ev),Jh=[0,cJ],I7=a("%+nd"),I8=a("% nd"),I_=a("%+ni"),I$=a("% ni"),Ja=a("%nx"),Jb=a("%#nx"),Jc=a("%nX"),Jd=a("%#nX"),Je=a("%no"),Jf=a("%#no"),I6=a("%nd"),I9=a(zj),Jg=a("%nu"),IU=a("%+ld"),IV=a("% ld"),IX=a("%+li"),IY=a("% li"),IZ=a("%lx"),I0=a("%#lx"),I1=a("%lX"),I2=a("%#lX"),I3=a("%lo"),I4=a("%#lo"),IT=a("%ld"),IW=a(BF),I5=a("%lu"),IH=a("%+Ld"),II=a("% Ld"),IK=a("%+Li"),IL=a("% Li"),IM=a("%Lx"),IN=a("%#Lx"),IO=a("%LX"),IP=a("%#LX"),IQ=a("%Lo"),IR=a("%#Lo"),IG=a("%Ld"),IJ=a(D7),IS=a("%Lu"),Iu=a("%+d"),Iv=a("% d"),Ix=a("%+i"),Iy=a("% i"),Iz=a("%x"),IA=a("%#x"),IB=a("%X"),IC=a("%#X"),ID=a("%o"),IE=a("%#o"),It=a(sm),Iw=a(x0),IF=a(wj),HO=a("@]"),HP=a("@}"),HQ=a("@?"),HR=a("@\n"),HS=a("@."),HT=a("@@"),HU=a("@%"),HV=a("@"),Ir=a("CamlinternalFormat.Type_mismatch"),JP=a(aa),JQ=[0,[11,a(gI),[2,0,[2,0,0]]],a(", %s%s")],Kd=[0,[11,a(si),[2,0,[12,10,0]]],a(FD)],Ke=[0,[11,a("Fatal error in uncaught exception handler: exception "),[2,0,[12,10,0]]],a("Fatal error in uncaught exception handler: exception %s\n")],Kc=a("Fatal error: out of memory in uncaught exception handler"),Ka=[0,[11,a(si),[2,0,[12,10,0]]],a(FD)],J8=[0,[2,0,[12,10,0]],a("%s\n")],J0=a("Raised at"),J1=a("Re-raised at"),J2=a("Raised by primitive operation at"),J3=a("Called from"),J4=a(" (inlined)"),J6=a(aa),J5=[0,[2,0,[12,32,[2,0,[11,a(' in file "'),[2,0,[12,34,[2,0,[11,a(", line "),[4,0,0,0,[11,a(yY),byx]]]]]]]]]],a('%s %s in file "%s"%s, line %d, characters %d-%d')],J7=[0,[2,0,[11,a(" unknown location"),0]],a("%s unknown location")],JV=a("Out of memory"),JW=a("Stack overflow"),JX=a("Pattern matching failed"),JY=a("Assertion failed"),JZ=a("Undefined recursive module"),JR=[0,[12,40,[2,0,[2,0,[12,41,0]]]],a("(%s%s)")],JS=a(aa),JT=a(aa),JU=[0,[12,40,[2,0,[12,41,0]]],a("(%s)")],JO=[0,[4,0,0,0,0],a(sm)],JM=[0,[3,0,0],a("%S")],JN=a(sf),J9=[0,a(aa),a("(Cannot print locations:\n bytecode executable program file not found)"),a("(Cannot print locations:\n bytecode executable program file appears to be corrupt)"),a("(Cannot print locations:\n bytecode executable program file has wrong magic number)"),a("(Cannot print locations:\n bytecode executable program file cannot be opened;\n -- too many open files. Try running with OCAMLRUNPARAM=b=2)")],Kf=a(Fv),Kt=[0,0],byv=a("OCAMLRUNPARAM"),byt=a("CAMLRUNPARAM"),Kg=a(aa),KT=[3,0,3],KU=a(ev),KO=a(nu),KP=a("<\/"),KQ=a(aa),KK=a(nu),KL=a(rX),KM=a(aa),KI=a("\n"),KE=a(aa),KF=a(aa),KG=a(aa),KH=a(aa),KD=[0,a(aa)],Kz=a(aa),KA=a(aa),KB=a(aa),KC=a(aa),Kx=[0,a(aa),0,a(aa)],Kw=a(aa),Kv=a("Stdlib.Format.String_tag"),K5=a(aa),La=[0,a("lib/dates.ml"),226,2],K$=[0,[4,0,[0,2,4],0,[12,45,[4,0,[0,2,2],0,[12,45,[4,0,[0,2,2],0,0]]]]],a("%04d-%02d-%02d")],K9=[0,[12,91,[4,0,0,0,[11,a(" years, "),[4,0,0,0,[11,a(" months, "),[4,0,0,0,[11,a(" days]"),0]]]]]]],a("[%d years, %d months, %d days]")],K6=a("Dates_calc.Dates.InvalidDate"),K7=a("Dates_calc.Dates.AmbiguousComputation"),Lf=gi(1,0,0),Lb=a("Z.Overflow"),Lc=a(mi),Lj=a(aa),Lk=a("+inf"),Ll=a("-inf"),Lm=a(F4),Ln=a("undef"),Lp=[0,a("q.ml"),486,25],Lo=a("Q.of_string: invalid digit"),Lh=a(xh),Lg=a(xh),Lt=a("Buf.extend: reached Sys.max_string_length"),L3=[0,a(rY),72,32],L0=[0,a(rY),72,32],LZ=a("Root is not an object or array"),LV=a("NaN value not allowed in standard JSON"),LW=[0,[8,[0,0,3],0,[0,16],0],a(x3)],LY=[0,[8,[0,0,3],0,[0,17],0],a(Dn)],LX=a(yV),LT=a("Infinity value not allowed in standard JSON"),LU=a("-Infinity value not allowed in standard JSON"),LP=a("NaN"),LQ=[0,[8,[0,0,3],0,[0,16],0],a(x3)],LS=[0,[8,[0,0,3],0,[0,17],0],a(Dn)],LR=a(yV),LN=a("Infinity"),LO=a("-Infinity"),LK=a(wu),LL=a(zB),LJ=a("null"),LD=a(v4),LE=a(Ao),LF=a(Bl),LG=a("\\f"),LH=a(yC),LI=a('\\"'),LC=a(wK),LB=[0,[11,a("src="),[3,0,[11,a(" start="),[4,3,0,0,[11,a(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]],a("src=%S start=%i len=%i\n%!")],Lz=a("\\u00"),Lw=[0,a(rY),72,32],Lu=a("Yojson.Json_error"),Ly=[0,a(qO),a(q5),a(rh),a(rQ),a(rr),a(aa),a(aa),a(aa),a(aa),a(aa),a(aa)],L2=[0,a(qO),a(q5),a(rh),a(rQ),a(rr),a(aa),a(aa),a(aa),a(aa),a(aa),a(aa)],L5=[0,a(qO),a(q5),a(rh),a(rQ),a(rr),a(aa),a(aa),a(aa),a(aa),a(aa),a(aa)],MY=a("unreachable due to the [is_subscope_call] test"),M0=a("unreachable due to the [is_subscope_input_var_def] test"),M1=a("]"),M2=a("["),M3=a(" ]): expected variable definition (function output), found: "),M4=a(gI),M5=a(vl),M6=a(" ]): expected variable definition (function output), found: end of tokens"),M7=a(gI),M8=a(vl),MZ=a("Unexpected event: "),M_=a("Missing function output variable definition."),M9=a("Invalid start of function call."),MX=a(ac),MW=a(ae),M$=[0,[11,a("An error occurred while parsing raw events: "),[2,0,[12,10,0]]],a("An error occurred while parsing raw events: %s\n")],MM=a(yi),MN=a(gI),MO=[0,[11,a(A4),0],a(A4)],MP=a(yi),MQ=a(gI),MR=[0,[11,a(E0),0],a(E0)],MS=a(gI),MT=[0,[11,a("VariableDefinition([ "),[2,0,[11,a(" ], "),[2,0,[12,41,0]]]]],a("VariableDefinition([ %s ], %s)")],MU=[0,[11,a("DecisionTaken("),[2,0,[12,58,[4,0,0,0,[12,46,[4,0,0,0,[12,45,[4,0,0,0,[12,46,[4,0,0,0,byy]]]]]]]]]],a("DecisionTaken(%s:%d.%d-%d.%d)")],Mw=[0,cE,a("VarComputation")],Mx=[0,cE,a("FunCall")],My=a(CC),Mz=a("inputs"),MA=a(yl),MB=[0,cE,a("SubScopeCall")],MC=a("fun_calls"),MD=a("value"),ME=a(yl),MF=a("pos"),MG=a(ae),MH=a(CC),MI=a(ac),MJ=a("fun_name"),Ml=[0,ca,[0,[0,cE,a("Unit")],0]],Mm=[0,ca,[0,[0,cE,a("Unembeddable")],0]],Mn=[0,cE,a("Bool")],Mo=[0,cE,a("Money")],Mp=[0,cE,a("Integer")],Mq=[0,cE,a("Decimal")],Mr=[0,cE,a("Date")],Ms=[0,cE,a("Duration")],Mt=[0,cE,a("Enum")],Mu=[0,cE,a("Struct")],Mv=[0,cE,a("Array")],Mk=[0,[15,0],a(q2)],Mj=[0,[15,0],a(q2)],L7=a("law_headings"),L8=a("end_column"),L9=a("end_line"),L_=a("start_column"),L$=a("start_line"),Ma=a("filename"),Mb=a("Runtime_ocaml.Runtime.EmptyError"),Mc=a("Runtime_ocaml.Runtime.AssertionFailed"),Md=a("Runtime_ocaml.Runtime.ConflictError"),Me=a("Runtime_ocaml.Runtime.UncomparableDurations"),Mg=a("Runtime_ocaml.Runtime.ImpossibleDate"),Mi=a("Runtime_ocaml.Runtime.NoValueProvided"),Na=a("Jsoo_runtime.Error.Exn"),Nb=a(rF),Nt=[0,[2,0,[11,a(" in file "),[2,0,[11,a(", position "),[4,0,0,0,[12,58,[4,0,0,0,[11,a("--"),[4,0,0,0,[12,58,byz]]]]]]]]]],a("%s in file %s, position %d:%d--%d:%d.")],Nu=a("No rule applies in the given context to give a value to the variable"),Nv=a("A conflict happened between two rules giving a value to the variable"),Nw=a("A failure happened in the assertion"),Nm=a("Begin call"),Nn=a("End call"),No=a("Variable definition"),Np=a("Decision taken"),Nk=a(aa),Ni=a("date_of_jsoo: invalid date"),Ng=[0,a(x_),a(BW),a(EO)],Nh=[0,a(x_),a(EO),a(BW)],$$=[0,a(a0),90,14,90,29,[0,a(bl),[0,a(a1),0]]],$4=[0,a(a0),fN,18,fN,64,[0,a(bl),[0,a(a1),0]]],$5=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],$3=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],$Z=[0,a(a0),87,14,87,53,[0,a(bl),[0,a(a1),0]]],$V=[0,a(a0),86,14,86,50,[0,a(bl),[0,a(a1),0]]],$R=[0,a(a0),89,14,89,46,[0,a(bl),[0,a(a1),0]]],$N=[0,a(a0),88,14,88,54,[0,a(bl),[0,a(a1),0]]],$I=[0,a(a0),97,18,97,72,[0,a(bl),[0,a(a1),0]]],$J=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$H=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$C=[0,a(a0),93,18,93,67,[0,a(bl),[0,a(a1),0]]],$D=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$B=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$x=[0,a(a0),fX,14,fX,30,[0,a("Article L131-1"),[0,a(bl),[0,a(a1),0]]]],$u=[0,0],$v=[1,0],$w=[2,0],$y=[0,a(a0),76,11,76,27,[0,a(bl),[0,a(a1),0]]],$t=[0,a(a0),76,11,76,27,[0,a(bl),[0,a(a1),0]]],$z=[0,a(ef),[0,a("enfants_\xc3\xa0_charge"),0]],$E=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$F=[0,a(ef),[0,a("allocations_familiales.personne_charge_effective_permanente_est_parent"),0]],$A=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$K=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$L=[0,a(ef),[0,a("allocations_familiales.personne_charge_effective_permanente_remplit_titre_I"),0]],$G=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$O=[0,a(a0),88,14,88,54,[0,a(bl),[0,a(a1),0]]],$P=[0,a(ef),[0,a("allocations_familiales.ressources_m\xc3\xa9nage"),0]],$M=[0,a(a0),88,14,88,54,[0,a(bl),[0,a(a1),0]]],$S=[0,a(a0),89,14,89,46,[0,a(bl),[0,a(a1),0]]],$T=[0,a(ef),[0,a("allocations_familiales.r\xc3\xa9sidence"),0]],$Q=[0,a(a0),89,14,89,46,[0,a(bl),[0,a(a1),0]]],$W=[0,a(a0),86,14,86,50,[0,a(bl),[0,a(a1),0]]],$X=[0,a(ef),[0,a("allocations_familiales.date_courante"),0]],$U=[0,a(a0),86,14,86,50,[0,a(bl),[0,a(a1),0]]],$0=[0,a(a0),87,14,87,53,[0,a(bl),[0,a(a1),0]]],$1=[0,a(ef),[0,a("allocations_familiales.enfants_\xc3\xa0_charge"),0]],$Y=[0,a(a0),87,14,87,53,[0,a(bl),[0,a(a1),0]]],$6=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],$7=[0,a(ef),[0,a("allocations_familiales.avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012"),0]],$2=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],$8=[0,a(ef),[0,a(vG),[0,a(U),0]]],$9=[0,a(ef),[0,a(vG),[0,a(U),0]]],aaa=[0,a(a0),80,12,80,27,[0,a(bl),[0,a(a1),0]]],$_=[0,a(a0),80,12,80,27,[0,a(bl),[0,a(a1),0]]],aab=[0,a(ef),[0,a("i_montant_vers\xc3\xa9"),0]],$n=[0,a(a0),45,14,45,27,[0,a(eO),[0,a(a1),0]]],$m=a(p),$i=[0,a(br),DN,14,DN,62,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],$d=[0,a(U),[0,a(kR),[0,a(ac),0]]],$e=[0,a(U),[0,a(kR),0]],$f=[0,a(U),[0,a(kR),[0,a(ae),0]]],$g=[0,a(U),[0,a(kR),0]],$h=a(p),_$=[0,a(br),om,14,om,61,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],_7=[0,a(a0),39,14,39,38,[0,a(eO),[0,a(a1),0]]],_1=[0,a(U),[0,a(j$),[0,a(ac),0]]],_2=[0,a(U),[0,a(j$),0]],_3=[0,a(U),[0,a(j$),[0,a(ae),0]]],_4=[0,a(U),[0,a(j$),0]],_5=a(p),_6=a(p),_X=[0,a(a0),37,14,37,32,[0,a(eO),[0,a(a1),0]]],_W=a(p),_S=[0,a(dU),h1,5,h1,43,[0,a("Article R521-4"),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],_H=[0,a(U),[0,a(fn),[0,a(ac),0]]],_I=[0,a(U),[0,a(fn),0]],_J=[0,a(U),[0,a(fn),[0,a(ae),0]]],_K=[0,a(U),[0,a(fn),0]],_L=a(et),_Q=a(kd),_R=a(b5),_M=[0,a(U),[0,a(j4),[0,a(ac),0]]],_N=[0,a(U),[0,a(j4),0]],_O=[0,a(U),[0,a(j4),[0,a(ae),0]]],_P=[0,a(U),[0,a(j4),0]],_T=[0,a(I),ei,11,ei,49,[0,a(J),[0,a(H),[0,a(B),0]]]],_G=[0,a(I),ei,11,ei,49,[0,a(J),[0,a(H),[0,a(B),0]]]],_D=[0,a(dU),cs,14,cs,46,[0,a(oV),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],_w=a(cI),_x=[0,a(br),268,5,qQ,41,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],_t=a(cI),_u=a(et),_v=a(cI),_y=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_q=a(cI),_r=[0,a(br),Ar,5,280,40,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],_n=a(cI),_o=a(et),_p=a(cI),_s=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_z=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_m=[0,a(br),hU,14,hU,55,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],_l=a(p),_a=a(z),_b=[0,a(U),[0,a(bH),[0,a(ac),0]]],_c=[0,a(U),[0,a(bH),0]],_d=[0,a(U),[0,a(bH),[0,a(ae),0]]],_e=[0,a(U),[0,a(bH),0]],_f=[0,a(br),gO,5,ru,55,[0,a(kn),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],Z$=a("0.0369"),_g=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],Z4=a(z),Z5=[0,a(U),[0,a(bH),[0,a(ac),0]]],Z6=[0,a(U),[0,a(bH),0]],Z7=[0,a(U),[0,a(bH),[0,a(ae),0]]],Z8=[0,a(U),[0,a(bH),0]],Z9=[0,a(br),389,5,392,56,[0,a(kn),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],Z3=a("0.0567"),Z_=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],_h=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],Z2=[0,a(br),22,14,22,40,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],ZY=[0,a(U),[0,a(ka),[0,a(ac),0]]],ZZ=[0,a(U),[0,a(ka),0]],Z0=[0,a(U),[0,a(ka),[0,a(ae),0]]],Z1=[0,a(U),[0,a(ka),0]],_i=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],ZX=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],ZR=a(z),ZS=[0,a(br),356,5,yQ,69,[0,a(kn),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],ZT=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZO=[8,0],ZP=[0,a(aW),u$,24,u$,44,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],ZQ=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZU=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZN=[0,a(br),18,14,18,34,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],ZJ=[0,a(br),x9,14,x9,39,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],ZF=[0,a(U),[0,a(kg),[0,a(ac),0]]],ZG=[0,a(U),[0,a(kg),0]],ZH=[0,a(U),[0,a(kg),[0,a(ae),0]]],ZI=[0,a(U),[0,a(kg),0]],Zw=[0,a(U),[0,a(bH),[0,a(ac),0]]],Zx=[0,a(U),[0,a(bH),0]],Zy=[0,a(U),[0,a(bH),[0,a(ae),0]]],Zz=[0,a(U),[0,a(bH),0]],ZA=[0,a(br),60,5,60,38,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Zv=a(ry),ZB=[0,a(I),dm,11,dm,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Zp=[0,a(U),[0,a(bH),[0,a(ac),0]]],Zq=[0,a(U),[0,a(bH),0]],Zr=[0,a(U),[0,a(bH),[0,a(ae),0]]],Zs=[0,a(U),[0,a(bH),0]],Zt=[0,a(br),fN,5,fN,38,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Zo=a(Ch),Zu=[0,a(I),dm,11,dm,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Zi=[0,a(U),[0,a(bH),[0,a(ac),0]]],Zj=[0,a(U),[0,a(bH),0]],Zk=[0,a(U),[0,a(bH),[0,a(ae),0]]],Zl=[0,a(U),[0,a(bH),0]],Zm=[0,a(br),Er,5,Er,38,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Zh=a(Cw),Zn=[0,a(I),dm,11,dm,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Zb=[0,a(U),[0,a(bH),[0,a(ac),0]]],Zc=[0,a(U),[0,a(bH),0]],Zd=[0,a(U),[0,a(bH),[0,a(ae),0]]],Ze=[0,a(U),[0,a(bH),0]],Zf=[0,a(a0),28,5,28,44,[0,a(eO),[0,a(a1),0]]],Za=a(p),Zg=[0,a(I),dm,11,dm,47,[0,a(J),[0,a(H),[0,a(B),0]]]],ZC=[0,a(I),dm,11,dm,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Y$=[0,a(I),dm,11,dm,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Y8=[0,a(dU),ei,14,ei,41,[0,a(oV),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],Y6=a(b5),Y7=a(b5),YY=[8,0],YZ=[0,a(aW),FG,5,FG,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],YV=a(z),YW=a(wc),YX=a(p),Y0=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YS=[8,0],YT=[0,a(aW),F9,5,F9,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],YP=a(z),YQ=a("0.2379"),YR=a(p),YU=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YM=[8,0],YN=[0,a(aW),fh,5,fh,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],YJ=a(z),YK=a("0.2437"),YL=a(p),YO=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YG=[8,0],YH=[0,a(aW),zR,5,zR,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],YD=a(z),YE=a("0.2496"),YF=a(p),YI=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YA=[8,0],YB=[0,a(aW),DQ,5,DQ,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Yx=a(z),Yy=a("0.2555"),Yz=a(p),YC=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yu=[8,0],Yv=[0,a(aW),vg,5,vg,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Yr=a(z),Ys=a("0.2613"),Yt=a(p),Yw=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yo=[8,0],Yp=[0,a(aW),w9,5,w9,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Yl=a(z),Ym=a("0.2672"),Yn=a(p),Yq=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yi=[8,0],Yj=[0,a(aW),qU,5,qU,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Yf=a(z),Yg=a("0.2804"),Yh=a(p),Yk=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yc=[8,0],Yd=[0,a(aW),f2,5,f2,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],X$=a(z),Ya=a("0.2936"),Yb=a(p),Ye=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],X8=[8,0],X9=[0,a(aW),xo,5,xo,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],X5=a(z),X6=a("0.3068"),X7=a(p),X_=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Y1=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],X3=[8,0],X4=[0,a(aW),rC,14,rC,50,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],X0=a(z),X1=a(sr),X2=a(p),Y2=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XX=[0,a(br),38,14,38,50,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],XU=a(z),XV=a(sr),XW=a(p),XY=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XS=[0,a(br),79,14,79,50,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],XP=a(z),XQ=a(ry),XR=a(p),XT=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XN=[0,a(br),fX,14,fX,50,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],XK=a(z),XL=a(Ch),XM=a(p),XO=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XZ=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XF=[0,a(br),43,14,43,59,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],XB=a(X),XC=a(X),XD=a("0.41"),XE=a(p),XG=[0,a(I),c4,11,c4,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Xz=[0,a(br),84,14,84,59,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xv=a(X),Xw=a(X),Xx=a("0.205"),Xy=a(p),XA=[0,a(I),c4,11,c4,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Xt=[0,a(br),gU,14,gU,59,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xp=a(X),Xq=a(X),Xr=a("0.1025"),Xs=a(p),Xu=[0,a(I),c4,11,c4,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Xk=[0,a(br),C$,5,C$,42,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xj=a("0.20234"),Xl=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xh=[0,a(br),rg,5,236,45,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xg=a("0.10117"),Xi=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xe=[0,a(br),zk,5,zk,42,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xd=a("0.05059"),Xf=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],W8=a(cI),W9=[0,a(br),qT,5,166,65,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],W5=a(cI),W6=a(et),W7=a(cI),W_=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],W2=a(cI),W3=[0,a(br),174,5,175,65,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],WZ=a(cI),W0=a(et),W1=a(cI),W4=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],W$=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],WY=[0,a(br),jt,14,jt,34,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],WX=a(p),Xa=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],WW=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],WN=[0,a(U),[0,a(eP),[0,a(ac),0]]],WO=[0,a(U),[0,a(eP),0]],WP=[0,a(U),[0,a(eP),[0,a(ae),0]]],WQ=[0,a(U),[0,a(eP),0]],WR=[0,a(bP),ib,5,318,21,[0,a(z9),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],WS=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WE=[0,a(U),[0,a(eP),[0,a(ac),0]]],WF=[0,a(U),[0,a(eP),0]],WG=[0,a(U),[0,a(eP),[0,a(ae),0]]],WH=[0,a(U),[0,a(eP),0]],WI=[0,a(U),[0,a(kK),[0,a(ac),0]]],WJ=[0,a(U),[0,a(kK),0]],WK=[0,a(U),[0,a(kK),[0,a(ae),0]]],WL=[0,a(U),[0,a(kK),0]],WM=[0,a(bP),fq,5,dz,21,[0,a(z9),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],WT=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WD=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WU=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WC=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Wt=a(z),Wu=[8,0],Wv=[0,a(aW),fQ,6,fQ,71,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],Ww=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wr=a(z),Ws=[0,a(bP),r2,5,410,72,[0,a(rZ),[0,a(eX),[0,a(ke),[0,a(d0),[0,a(ab),[0,a(af),0]]]]]]],Wx=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wy=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wp=a(X),Wq=[0,a(bP),fN,5,fN,70,[0,a(Gf),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Wz=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wo=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wg=[8,0],Wh=[0,a(aW),251,5,kb,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Wd=a(p),We=a("0.145"),Wf=a(p),Wi=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Wa=[8,0],Wb=[0,a(aW),zH,5,261,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],V9=a(p),V_=a("0.1393"),V$=a(p),Wc=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],V6=[8,0],V7=[0,a(aW),At,5,qQ,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],V3=a(p),V4=a("0.1335"),V5=a(p),V8=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],V0=[8,0],V1=[0,a(aW),Ar,5,279,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],VX=a(p),VY=a("0.1278"),VZ=a(p),V2=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VU=[8,0],VV=[0,a(aW),287,5,288,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],VR=a(p),VS=a("0.122"),VT=a(p),VW=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VO=[8,0],VP=[0,a(aW),d_,5,eh,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],VL=a(p),VM=a("0.1163"),VN=a(p),VQ=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VI=[8,0],VJ=[0,a(aW),kV,5,306,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],VF=a(p),VG=a("0.1105"),VH=a(p),VK=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VC=[8,0],VD=[0,a(aW),dF,5,ib,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Vz=a(p),VA=a("0.0976"),VB=a(p),VE=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vw=[8,0],Vx=[0,a(aW),323,5,fp,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Vt=a(p),Vu=a("0.0847"),Vv=a(p),Vy=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vq=[8,0],Vr=[0,a(aW),u9,5,333,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Vn=a(p),Vo=a("0.0717"),Vp=a(p),Vs=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vk=[8,0],Vl=[0,a(aW),m$,5,m$,49,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Vh=a(p),Vi=a("5728"),Vj=a(p),Vm=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Wj=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vf=[8,0],Vg=[0,a(aW),nU,14,nU,49,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],Vc=a(p),Vd=a(wm),Ve=a(p),Wk=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],U$=a(z),Va=[0,a(br),dj,5,fh,71,[0,a(kn),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],U_=a(wm),Vb=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],U9=[0,a(br),rL,29,rL,64,[0,a(kn),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],U8=a(p),U4=[0,a(dU),my,14,my,34,[0,a(oV),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],UW=[0,a(U),[0,a(fn),[0,a(ac),0]]],UX=[0,a(U),[0,a(fn),0]],UY=[0,a(U),[0,a(fn),[0,a(ae),0]]],UZ=[0,a(U),[0,a(fn),0]],U0=a(et),U1=a(kd),U2=a(b5),U3=a(b5),US=[0,a(dU),Cv,14,Cv,34,[0,a(oV),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],UL=[8,0],UM=[0,a(aW),hn,5,hn,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],UI=a(X),UJ=a(Cq),UK=a(p),UN=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],UF=[8,0],UG=[0,a(aW),CH,5,CH,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],UC=a(X),UD=a("0.0539"),UE=a(p),UH=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Uz=[8,0],UA=[0,a(aW),yk,5,yk,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Uw=a(X),Ux=a("0.0615"),Uy=a(p),UB=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Ut=[8,0],Uu=[0,a(aW),ex,5,ex,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Uq=a(X),Ur=a("0.069"),Us=a(p),Uv=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Un=[8,0],Uo=[0,a(aW),Cu,5,Cu,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Uk=a(X),Ul=a("0.0766"),Um=a(p),Up=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Uh=[8,0],Ui=[0,a(aW),fT,5,fT,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Ue=a(X),Uf=a("0.0842"),Ug=a(p),Uj=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Ub=[8,0],Uc=[0,a(aW),wD,5,wD,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],T_=a(X),T$=a("0.0918"),Ua=a(p),Ud=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],T7=[8,0],T8=[0,a(aW),v2,5,v2,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],T4=a(X),T5=a("0.1089"),T6=a(p),T9=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],T1=[8,0],T2=[0,a(aW),jf,5,jf,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],TY=a(X),TZ=a("0.1259"),T0=a(p),T3=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],TV=[8,0],TW=[0,a(aW),f5,5,f5,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],TS=a(X),TT=a("0.143"),TU=a(p),TX=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],UO=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],TR=[0,a(aW),h1,14,h1,59,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],TO=a(X),TP=a(ry),TQ=a(p),TK=[0,a(aW),iM,14,iM,67,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],TG=a(_),TH=a(_),TI=a(Cq),TJ=a(p),Tz=a(z),TA=[0,a(bP),423,6,rx,72,[0,a(rZ),[0,a(eX),[0,a(ke),[0,a(d0),[0,a(ab),[0,a(af),0]]]]]]],TB=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],Tu=[0,a(co),[0,a(iU),[0,a(ac),0]]],Tv=[0,a(co),[0,a(iU),0]],Tw=[0,a(co),[0,a(iU),[0,a(ae),0]]],Tx=[0,a(co),[0,a(iU),0]],Ty=[0,a(bP),rR,5,dm,59,[0,a(Gf),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],TC=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],Tt=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],TD=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],Ts=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],Tm=a(z),Tn=[0,a(bP),gz,5,430,71,[0,a(rZ),[0,a(eX),[0,a(ke),[0,a(d0),[0,a(ab),[0,a(af),0]]]]]]],To=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Tl=[0,a(a0),31,9,31,32,[0,a(eO),[0,a(a1),0]]],Tp=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Tk=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Te=[0,a(aW),23,5,23,67,[0,a(F2),[0,a(f9),0]]],Tc=a(EQ),Td=a("5628600"),Tf=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],Ta=[0,a(aW),56,5,56,67,[0,a(vj),[0,a(f9),0]]],S_=a(FH),S$=a("5684900"),Tb=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],S8=[0,a(aW),89,5,89,67,[0,a(wJ),[0,a(f9),0]]],S6=a(EX),S7=a("5775900"),S9=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],S4=[0,a(aW),bp,5,bp,67,[0,a(b6),[0,a(C3),[0,a(f9),0]]]],S2=a(wo),S3=a("5827900"),S5=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],Tg=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],S1=[0,a(br),Ev,14,Ev,30,[0,a(Dz),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],SZ=a(AN),S0=a("5595000"),ST=[0,a(aW),30,5,30,67,[0,a(F2),[0,a(f9),0]]],SR=a(EQ),SS=a("7877000"),SU=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SP=[0,a(aW),63,5,63,67,[0,a(vj),[0,a(f9),0]]],SN=a(FH),SO=a("7955800"),SQ=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SL=[0,a(aW),96,5,96,67,[0,a(wJ),[0,a(f9),0]]],SJ=a(EX),SK=a("8083100"),SM=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SH=[0,a(aW),dW,5,dW,67,[0,a(b6),[0,a(C3),[0,a(f9),0]]]],SF=a(wo),SG=a("8155800"),SI=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SV=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SE=[0,a(br),dF,14,dF,31,[0,a(Dz),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],SC=a(AN),SD=a("7830000"),Sy=[0,a(a0),34,14,34,36,[0,a(eO),[0,a(a1),0]]],Sz=[0,a(I),nH,11,nH,33,[0,a(J),[0,a(H),[0,a(B),0]]]],Sx=[0,a(I),nH,11,nH,33,[0,a(J),[0,a(H),[0,a(B),0]]]],Su=[0,a(bP),75,14,75,64,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Sq=[0,a(co),[0,a(dh),[0,a(ac),0]]],Sr=[0,a(co),[0,a(dh),0]],Ss=[0,a(co),[0,a(dh),[0,a(ae),0]]],St=[0,a(co),[0,a(dh),0]],Sl=[0,a(dU),83,19,83,67,[0,a(nJ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],Sm=[0,a(I),eY,11,eY,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Sk=[0,a(dU),56,14,56,41,[0,a(nJ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],Sn=[0,a(I),eY,11,eY,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Sj=[0,a(I),eY,11,eY,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Se=[0,a(a0),33,14,33,40,[0,a(eO),[0,a(a1),0]]],R_=[0,a(I),fD,14,fD,46,[0,a(J),[0,a(H),[0,a(B),0]]]],R6=[0,a(I),gf,14,gf,56,[0,a(J),[0,a(H),[0,a(B),0]]]],R5=[1,0],R1=[0,a(I),fK,14,fK,50,[0,a(J),[0,a(H),[0,a(B),0]]]],RV=[0,a(I),fQ,14,fQ,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RP=[0,a(dU),64,14,64,44,[0,a(nJ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],RO=a(_),RK=[0,a(br),di,14,di,35,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],RJ=a(_),RE=[0,a(bP),rm,5,zH,56,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],RD=[1,0],RF=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Ry=[0,a(bP),qQ,5,271,48,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rx=[0,0],Rz=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Rw=[0,a(bP),FF,5,FF,70,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rv=[0,0],RA=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Ru=[0,a(bP),CY,5,CY,69,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rt=[0,0],RB=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Rs=[0,a(bP),om,5,om,60,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rr=[0,0],RC=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],RG=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Rq=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Rm=[0,a(bP),nW,5,nW,70,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rl=[1,0],Rn=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rj=[0,a(bP),j_,5,m0,56,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Ri=[2,0],Rk=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Re=[0,a(bP),264,5,rq,48,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rd=[0,0],Rf=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rc=[0,a(bP),yc,5,yc,69,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rb=[0,0],Rg=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Ra=[0,a(bP),Ab,5,Ab,60,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Q$=[0,0],Rh=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Ro=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Q_=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rp=[0,a(U),[0,a(fn),0]],RH=[0,a(U),[0,a("versement"),0]],RL=[0,a(I),oj,11,oj,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RI=[0,a(I),oj,11,oj,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RM=[0,a(U),[0,a("nombre_enfants_l521_1"),0]],RQ=[0,a(I),oc,11,oc,41,[0,a(J),[0,a(H),[0,a(B),0]]]],RN=[0,a(I),oc,11,oc,41,[0,a(J),[0,a(H),[0,a(B),0]]]],RR=[0,a(U),[0,a("nombre_enfants_alin\xc3\xa9a_2_l521_3"),0]],RS=[0,a(U),[0,a(wT),[0,a(q$),0]]],RT=[0,a(U),[0,a(wT),[0,a(q$),0]]],RW=[0,a(I),fQ,14,fQ,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RX=[0,a(U),[0,a("bmaf.date_courante"),0]],RU=[0,a(I),fQ,14,fQ,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RY=[0,a(U),[0,a(AZ),[0,a(f_),0]]],RZ=[0,a(U),[0,a(AZ),[0,a(f_),0]]],R2=[0,a(I),fK,14,fK,50,[0,a(J),[0,a(H),[0,a(B),0]]]],R3=[0,a(U),[0,a(w$),0]],R0=[0,a(I),fK,14,fK,50,[0,a(J),[0,a(H),[0,a(B),0]]]],R7=[0,a(I),gf,14,gf,56,[0,a(J),[0,a(H),[0,a(B),0]]]],R8=[0,a(U),[0,a(Bm),0]],R4=[0,a(I),gf,14,gf,56,[0,a(J),[0,a(H),[0,a(B),0]]]],R$=[0,a(I),fD,14,fD,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Sa=[0,a(U),[0,a(yX),0]],R9=[0,a(I),fD,14,fD,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Sb=[0,a(U),[0,a(oO),[0,a(co),0]]],Sc=[0,a(U),[0,a(oO),[0,a(co),0]]],Sf=[0,a(a0),33,14,33,40,[0,a(eO),[0,a(a1),0]]],Sg=[0,a(U),[0,a("enfant_le_plus_\xc3\xa2g\xc3\xa9.enfants"),0]],Sd=[0,a(a0),33,14,33,40,[0,a(eO),[0,a(a1),0]]],Sh=[0,a(U),[0,a(Df),[0,a(rl),0]]],Si=[0,a(U),[0,a(Df),[0,a(rl),0]]],So=[0,a(U),[0,a(eP),0]],Sv=[0,a(I),95,11,95,61,[0,a(J),[0,a(H),[0,a(B),0]]]],Sp=[0,a(I),95,11,95,61,[0,a(J),[0,a(H),[0,a(B),0]]]],Sw=[0,a(U),[0,a("enfants_\xc3\xa0_charge_droit_ouvert_prestation_familiale"),0]],SA=[0,a(U),[0,a(kK),0]],SW=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SB=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SX=[0,a(U),[0,a("plafond_II_d521_3"),0]],Th=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],SY=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],Ti=[0,a(U),[0,a("plafond_I_d521_3"),0]],Tq=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Tj=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Tr=[0,a(U),[0,a("droit_ouvert_compl\xc3\xa9ment"),0]],TE=[0,a(U),[0,a(kg),0]],TL=[0,a(I),fX,11,fX,64,[0,a(J),[0,a(H),[0,a(B),0]]]],TF=[0,a(I),fX,11,fX,64,[0,a(J),[0,a(H),[0,a(B),0]]]],TM=[0,a(U),[0,a("montant_initial_base_quatri\xc3\xa8me_enfant_et_plus_mayotte"),0]],UP=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],TN=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],UQ=[0,a(U),[0,a("montant_initial_base_troisi\xc3\xa8me_enfant_mayotte"),0]],UT=[0,a(I),ie,11,ie,31,[0,a(J),[0,a(H),[0,a(B),0]]]],UR=[0,a(I),ie,11,ie,31,[0,a(J),[0,a(H),[0,a(B),0]]]],UU=[0,a(U),[0,a("nombre_total_enfants"),0]],U5=[0,a(I),nZ,11,nZ,31,[0,a(J),[0,a(H),[0,a(B),0]]]],UV=[0,a(I),nZ,11,nZ,31,[0,a(J),[0,a(H),[0,a(B),0]]]],U6=[0,a(U),[0,a("nombre_moyen_enfants"),0]],Wl=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],U7=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Wm=[0,a(U),[0,a("montant_initial_base_premier_enfant"),0]],WA=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wn=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],WB=[0,a(U),[0,a("droit_ouvert_base"),0]],WV=[0,a(U),[0,a(bH),0]],Xb=[0,a(U),[0,a(kR),0]],Xm=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xc=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xn=[0,a(U),[0,a("montant_vers\xc3\xa9_forfaitaire_par_enfant"),0]],XH=[0,a(I),c4,11,c4,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Xo=[0,a(I),c4,11,c4,56,[0,a(J),[0,a(H),[0,a(B),0]]]],XI=[0,a(U),[0,a("montant_initial_base_troisi\xc3\xa8me_enfant_et_plus"),0]],Y3=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XJ=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Y4=[0,a(U),[0,a("montant_initial_base_deuxi\xc3\xa8me_enfant"),0]],Y9=[0,a(I),mG,11,mG,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Y5=[0,a(I),mG,11,mG,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Y_=[0,a(U),[0,a("rapport_enfants_total_moyen"),0]],ZD=[0,a(U),[0,a(ka),0]],ZK=[0,a(I),gU,11,gU,36,[0,a(J),[0,a(H),[0,a(B),0]]]],ZE=[0,a(I),gU,11,gU,36,[0,a(J),[0,a(H),[0,a(B),0]]]],ZL=[0,a(U),[0,a("montant_vers\xc3\xa9_forfaitaire"),0]],ZV=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZM=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZW=[0,a(U),[0,a("montant_initial_base"),0]],_j=[0,a(U),[0,a(j4),0]],_A=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_k=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_B=[0,a(U),[0,a("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_forfaitaire"),0]],_E=[0,a(I),kU,11,kU,43,[0,a(J),[0,a(H),[0,a(B),0]]]],_C=[0,a(I),kU,11,kU,43,[0,a(J),[0,a(H),[0,a(B),0]]]],_F=[0,a(U),[0,a("montant_avec_garde_altern\xc3\xa9e_base"),0]],_U=[0,a(U),[0,a(j$),0]],_Y=[0,a(I),kT,11,kT,29,[0,a(J),[0,a(H),[0,a(B),0]]]],_V=[0,a(I),kT,11,kT,29,[0,a(J),[0,a(H),[0,a(B),0]]]],_Z=[0,a(U),[0,a("montant_vers\xc3\xa9_base"),0]],_8=[0,a(I),iv,11,iv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],_0=[0,a(I),iv,11,iv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],_9=[0,a(U),[0,a("montant_vers\xc3\xa9_majoration"),0]],$a=[0,a(I),m7,11,m7,58,[0,a(J),[0,a(H),[0,a(B),0]]]],__=[0,a(I),m7,11,m7,58,[0,a(J),[0,a(H),[0,a(B),0]]]],$b=[0,a(U),[0,a("montant_base_compl\xc3\xa9ment_pour_base_et_majoration"),0]],$j=[0,a(I),mx,11,mx,59,[0,a(J),[0,a(H),[0,a(B),0]]]],$c=[0,a(I),mx,11,mx,59,[0,a(J),[0,a(H),[0,a(B),0]]]],$k=[0,a(U),[0,a("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_base_et_majoration"),0]],$o=[0,a(I),cd,12,cd,25,[0,a(J),[0,a(H),[0,a(B),0]]]],$l=[0,a(I),cd,12,cd,25,[0,a(J),[0,a(H),[0,a(B),0]]]],$p=[0,a(U),[0,a("montant_vers\xc3\xa9"),0]],$q=[0,a(bP),xb,5,rg,6,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],$r=[0,a(bP),xb,5,rg,6,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Q5=[0,a("examples/allocations_familiales/autres_codes.catala_fr"),24,5,24,63,[0,a("Article L821-3"),[0,a(z0),[0,a(E1),[0,a(yn),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]]]],Q6=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q1=[0,a(bP),60,5,62,62,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Q2=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q0=[0,a(bP),49,5,50,50,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Q3=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q4=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q7=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],QZ=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q8=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],QY=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],QU=[0,a(bP),68,5,71,56,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],QV=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],QT=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],QW=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],QS=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],QO=[0,a(dU),nW,18,nW,41,[0,a(xH),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(c7),[0,a(af),0]]]]]]],QM=a(oS),QN=a(n0),QP=[0,a(I),59,11,59,27,[0,a(bE),[0,a(H),[0,a(B),0]]]],QL=[0,a(dU),31,14,31,30,[0,a(lU),[0,a(nR),[0,a(ed),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],QJ=a(oS),QK=a(n0),Qy=[5,0],Qz=[4,0],QA=[3,0],QB=[2,0],QC=[1,0],QD=[0,0],QE=[0,a(bP),yQ,5,rL,30,[0,a(CJ),[0,a(yw),[0,a(ke),[0,a(d0),[0,a(ab),[0,a(af),0]]]]]]],QF=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qx=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qr=[0,a(I),68,14,68,28,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qn=[0,a(I),69,14,69,32,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qj=[0,a(dU),21,14,21,26,[0,a(lU),[0,a(nR),[0,a(ed),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],Qk=[0,a(I),60,12,60,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qi=[0,a(I),60,12,60,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Ql=[0,a(co),[0,a(y7),0]],Qo=[0,a(I),69,14,69,32,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qp=[0,a(co),[0,a(Fa),0]],Qm=[0,a(I),69,14,69,32,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qs=[0,a(I),68,14,68,28,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qt=[0,a(co),[0,a(DE),0]],Qq=[0,a(I),68,14,68,28,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qu=[0,a(co),[0,a(ge),[0,a(ho),0]]],Qv=[0,a(co),[0,a(ge),[0,a(ho),0]]],QG=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qw=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],QH=[0,a(co),[0,a(vk),0]],QQ=[0,a(I),59,11,59,27,[0,a(bE),[0,a(H),[0,a(B),0]]]],QI=[0,a(I),59,11,59,27,[0,a(bE),[0,a(H),[0,a(B),0]]]],QR=[0,a(co),[0,a(Ae),0]],QX=[0,a(co),[0,a(iU),0]],Q9=[0,a(co),[0,a(dh),0]],Qe=[0,a(eC),28,5,29,33,[0,a(Cn),[0,a(cf),0]]],Qd=a(xO),Qf=[0,a(eC),6,12,6,19,[0,a(cf),0]],Qb=[0,a(eC),48,5,49,33,[0,a(AH),[0,a(cf),0]]],Qa=a(xm),Qc=[0,a(eC),6,12,6,19,[0,a(cf),0]],P_=[0,a(eC),64,5,65,33,[0,a(Ca),[0,a(cf),0]]],P9=a(BY),P$=[0,a(eC),6,12,6,19,[0,a(cf),0]],P7=[0,a(eC),82,5,83,33,[0,a(wV),[0,a(cf),0]]],P6=a(BS),P8=[0,a(eC),6,12,6,19,[0,a(cf),0]],Qg=[0,a(eC),6,12,6,19,[0,a(cf),0]],P5=[0,a(eC),6,12,6,19,[0,a(cf),0]],Qh=[0,a(f_),[0,a(bQ),0]],PT=[7,0],PU=[5,0],PV=[4,0],PW=[3,0],PX=[2,0],PY=[1,0],PZ=[0,0],P0=[6,0],P1=[0,a(bu),29,5,38,6,[0,a(b6),[0,a(lT),[0,a(aC),0]]]],PS=a(wM),P2=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],PP=[8,0],PQ=[0,a(bu),47,5,49,6,[0,a(b6),[0,a(lT),[0,a(aC),0]]]],PO=a(xL),PR=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],PE=[7,0],PF=[5,0],PG=[4,0],PH=[3,0],PI=[2,0],PJ=[1,0],PK=[0,0],PL=[6,0],PM=[0,a(bu),68,5,77,6,[0,a(b6),[0,a(nO),[0,a(aC),0]]]],PD=a(AO),PN=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],PA=[8,0],PB=[0,a(bu),86,5,88,6,[0,a(b6),[0,a(nO),[0,a(aC),0]]]],Pz=a(vc),PC=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Pp=[7,0],Pq=[5,0],Pr=[4,0],Ps=[3,0],Pt=[2,0],Pu=[1,0],Pv=[0,0],Pw=[6,0],Px=[0,a(bu),c4,5,bp,6,[0,a(b6),[0,a(lW),[0,a(aC),0]]]],Po=a(Br),Py=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Pl=[8,0],Pm=[0,a(bu),cs,5,cQ,6,[0,a(b6),[0,a(lW),[0,a(aC),0]]]],Pk=a(EE),Pn=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Pa=[7,0],Pb=[5,0],Pc=[4,0],Pd=[3,0],Pe=[2,0],Pf=[1,0],Pg=[0,0],Ph=[6,0],Pi=[0,a(bu),eY,5,fK,6,[0,a(b6),[0,a(nl),[0,a(aC),0]]]],O$=a(BJ),Pj=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],O8=[8,0],O9=[0,a(bu),qT,5,nU,6,[0,a(b6),[0,a(nl),[0,a(aC),0]]]],O7=a(wZ),O_=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OX=[7,0],OY=[5,0],OZ=[4,0],O0=[3,0],O1=[2,0],O2=[1,0],O3=[0,0],O4=[6,0],O5=[0,a(bu),h1,5,iM,6,[0,a(fW),[0,a(mL),[0,a(aC),0]]]],OW=a(zK),O6=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OT=[8,0],OU=[0,a(bu),w4,5,yA,6,[0,a(fW),[0,a(mL),[0,a(aC),0]]]],OS=a(ED),OV=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OI=[7,0],OJ=[5,0],OK=[4,0],OL=[3,0],OM=[2,0],ON=[1,0],OO=[0,0],OP=[6,0],OQ=[0,a(bu),vI,5,E3,6,[0,a(fW),[0,a(oo),[0,a(aC),0]]]],OH=a(El),OR=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OE=[8,0],OF=[0,a(bu),E$,5,vE,6,[0,a(fW),[0,a(oo),[0,a(aC),0]]]],OD=a(Fk),OG=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Ot=[7,0],Ou=[5,0],Ov=[4,0],Ow=[3,0],Ox=[2,0],Oy=[1,0],Oz=[0,0],OA=[6,0],OB=[0,a(bu),rq,5,nT,6,[0,a(b6),[0,a(m8),[0,a(aC),0]]]],Os=a(v9),OC=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Op=[8,0],Oq=[0,a(bu),A9,5,ni,6,[0,a(b6),[0,a(m8),[0,a(aC),0]]]],Oo=a(zJ),Or=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],P3=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],On=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],P4=[0,a(ho),[0,a(z2),0]],Ok=[0,a(a0),12,14,12,25,[0,a(eO),[0,a(a1),0]]],Og=[2,0],Oh=a(p),Oi=[1,0],Oj=a("-1"),Ol=[0,a(I),80,12,80,23,[0,a(J),[0,a(H),[0,a(B),0]]]],Of=[0,a(I),80,12,80,23,[0,a(J),[0,a(H),[0,a(B),0]]]],Om=[0,a(rl),[0,a("le_plus_\xc3\xa2g\xc3\xa9"),0]],Oc=[0,a(dU),78,14,78,41,[0,a(nJ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],Od=[0,a(I),76,12,76,39,[0,a(J),[0,a(H),[0,a(B),0]]]],Ob=[0,a(I),76,12,76,39,[0,a(J),[0,a(H),[0,a(B),0]]]],Oe=[0,a(q$),[0,a(eP),0]],N5=a(qH),N6=a(qW),N7=a(EZ),N8=a(q3),N9=a(q4),N_=a(rE),N$=a(rw),Oa=[0,a("Enfant"),0],NV=a(mw),NX=a(oy),NY=a(l$),NZ=a(Dp),N0=a(yR),N1=a(o9),N2=a(C0),N3=a(no),N4=a(oK),NW=[0,a(BT),0],NM=a(ol),NO=a(U),NP=a(qV),NQ=a(nY),NR=a(DP),NS=a(i0),NT=a(BQ),NU=a(yW),NN=[0,a(FP),0],NH=a("Compl\xc3\xa8te"),NJ=a("Partag\xc3\xa9e"),NK=a("Z\xc3\xa9ro"),NI=[0,a("PriseEnCompte"),0],ND=a(ks),NF=a(kh),NG=a(Cg),NE=[0,a(CS),0],Nx=a(A3),Nz=a(D1),NA=a(j7),NB=a(Fs),NC=a(yI),Ny=[0,a("PriseEnCharge"),0],abb=a(aa),aaN=a(mw),aaO=a(oy),aaP=a(wv),aaQ=a(l$),aaR=a(oK),aaS=a(Fl),aaT=a(xg),aaU=a(o9),aaV=a(no),aaX=[7,0],aaY=[5,0],aaZ=[4,0],aa0=[6,0],aa1=[8,0],aa2=[2,0],aa3=[3,0],aa4=[1,0],aa5=[0,0],aaW=[0,[11,a(bg),[2,0,[11,a(BO),0]]],a(wO)],aaw=a(v0),aax=a(x8),aay=a(nY),aaz=a(EA),aaA=a(i0),aaB=a(U),aaC=a(qw),aaD=a(ol),aaF=[0,0],aaG=[2,0],aaH=[1,0],aaI=[5,0],aaJ=[6,0],aaK=[3,0],aaL=[7,0],aaM=[4,0],aaE=[0,[11,a(bg),[2,0,[11,a(D2),0]]],a(FR)],aap=a(r4),aaq=a(ks),aar=a(kh),aat=[1,0],aau=[0,0],aav=[2,0],aas=[0,[11,a(bg),[2,0,[11,a(x2),0]]],a(wz)],aae=a(j7),aaf=a(rb),aag=a(qP),aah=a(rt),aai=a(qM),aak=[4,0],aal=[3,0],aam=[0,0],aan=[1,0],aao=[2,0],aaj=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PriseEnCharge.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PriseEnCharge.t'")],aac=[0,a(B$),a(o3),a(ge),a(DA),a(FL),a(v6),a(xi)],aad=[0,a(ge),a(v6),a(FL),a(xi),a(o3),a(B$),a(DA)],abj=a("AllocationsFamilialesLib"),bt1=[0,a(fc),zO,14,zO,25,[0,a("Conseil d'\xc3\x89tat, 5\xc3\xa8me - 4\xc3\xa8me chambres r\xc3\xa9unies, 21/07/2017, 398563"),0]],btU=a(p),btV=a(p),bt0=a(b5),btW=[0,a(a6),[0,a(aw),[0,a(ac),0]]],btX=[0,a(a6),[0,a(aw),0]],btY=[0,a(a6),[0,a(aw),[0,a(ae),0]]],btZ=[0,a(a6),[0,a(aw),0]],btQ=[0,a(d),xw,14,xw,63,[0,a(bf),[0,a(e),0]]],btM=[0,a(d),vZ,14,vZ,25,[0,a(bf),[0,a(e),0]]],btG=[0,a(d),iI,5,iI,70,[0,a(bf),[0,a(e),0]]],btC=[0,a(d),hj,14,hj,58,[0,a(bf),[0,a(e),0]]],bty=[0,a(d),h5,14,h5,54,[0,a(bf),[0,a(e),0]]],btu=[0,a(d),fb,14,fb,51,[0,a(bf),[0,a(e),0]]],bto=[0,a(d),hi,14,hi,59,[0,a(bf),[0,a(e),0]]],btk=[0,a(d),iq,14,iq,38,[0,a(bf),[0,a(e),0]]],btg=[0,a(d),gL,14,gL,34,[0,a(bf),[0,a(e),0]]],btc=[0,a(d),io,14,io,31,[0,a(bf),[0,a(e),0]]],bs_=[0,a(d),AD,14,AD,48,[0,a(bf),[0,a(e),0]]],bs$=[0,a(d),ns,11,ns,45,[0,a(bf),[0,a(e),0]]],bs9=[0,a(d),ns,11,ns,45,[0,a(bf),[0,a(e),0]]],bta=[0,a(cO),[0,a("m\xc3\xa9nage_sans_enfants_garde_altern\xc3\xa9e"),0]],btd=[0,a(d),io,14,io,31,[0,a(bf),[0,a(e),0]]],bte=[0,a(cO),[0,a("calculette.m\xc3\xa9nage"),0]],btb=[0,a(d),io,14,io,31,[0,a(bf),[0,a(e),0]]],bth=[0,a(d),gL,14,gL,34,[0,a(bf),[0,a(e),0]]],bti=[0,a(cO),[0,a("calculette.demandeur"),0]],btf=[0,a(d),gL,14,gL,34,[0,a(bf),[0,a(e),0]]],btl=[0,a(d),iq,14,iq,38,[0,a(bf),[0,a(e),0]]],btm=[0,a(cO),[0,a("calculette.date_courante"),0]],btj=[0,a(d),iq,14,iq,38,[0,a(bf),[0,a(e),0]]],btp=[0,a(d),hi,14,hi,59,[0,a(bf),[0,a(e),0]]],btq=[0,a(cO),[0,a("calculette.ressources_m\xc3\xa9nage_prises_en_compte"),0]],btn=[0,a(d),hi,14,hi,59,[0,a(bf),[0,a(e),0]]],btr=[0,a(cO),[0,a(D0),[0,a(a6),0]]],bts=[0,a(cO),[0,a(D0),[0,a(a6),0]]],btv=[0,a(d),fb,14,fb,51,[0,a(bf),[0,a(e),0]]],btw=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.m\xc3\xa9nage"),0]],btt=[0,a(d),fb,14,fb,51,[0,a(bf),[0,a(e),0]]],btz=[0,a(d),h5,14,h5,54,[0,a(bf),[0,a(e),0]]],btA=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.demandeur"),0]],btx=[0,a(d),h5,14,h5,54,[0,a(bf),[0,a(e),0]]],btD=[0,a(d),hj,14,hj,58,[0,a(bf),[0,a(e),0]]],btE=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.date_courante"),0]],btB=[0,a(d),hj,14,hj,58,[0,a(bf),[0,a(e),0]]],btH=[0,a(d),iI,5,iI,70,[0,a(bf),[0,a(e),0]]],btI=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.ressources_m\xc3\xa9nage_prises_en_compte"),0]],btF=[0,a(d),iI,5,iI,70,[0,a(bf),[0,a(e),0]]],btJ=[0,a(cO),[0,a(wU),[0,a(a6),0]]],btK=[0,a(cO),[0,a(wU),[0,a(a6),0]]],btN=[0,a(d),o2,12,o2,23,[0,a(bf),[0,a(e),0]]],btL=[0,a(d),o2,12,o2,23,[0,a(bf),[0,a(e),0]]],btO=[0,a(cO),[0,a(n_),0]],btR=[0,a(d),mo,11,mo,60,[0,a(bf),[0,a(e),0]]],btP=[0,a(d),mo,11,mo,60,[0,a(bf),[0,a(e),0]]],btS=[0,a(cO),[0,a(kD),0]],bt2=[0,a(d),l9,12,l9,23,[0,a(bf),[0,a(e),0]]],btT=[0,a(d),l9,12,l9,23,[0,a(bf),[0,a(e),0]]],bt3=[0,a(cO),[0,a("aide_finale"),0]],bs5=[0,a(aG),gd,14,gd,33,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsW=a(p),bsX=[0,a(cR),[0,a(aw),[0,a(ac),0]]],bsY=[0,a(cR),[0,a(aw),0]],bsZ=[0,a(cR),[0,a(aw),[0,a(ae),0]]],bs0=[0,a(cR),[0,a(aw),0]],bs1=[0,a(cS),[0,a(aw),[0,a(ac),0]]],bs2=[0,a(cS),[0,a(aw),0]],bs3=[0,a(cS),[0,a(aw),[0,a(ae),0]]],bs4=[0,a(cS),[0,a(aw),0]],bsS=[0,a(aG),f6,14,f6,36,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsK=[0,a(cS),[0,a(aw),[0,a(ac),0]]],bsL=[0,a(cS),[0,a(aw),0]],bsM=[0,a(cS),[0,a(aw),[0,a(ae),0]]],bsN=[0,a(cS),[0,a(aw),0]],bsO=[0,a(cR),[0,a(aw),[0,a(ac),0]]],bsP=[0,a(cR),[0,a(aw),0]],bsQ=[0,a(cR),[0,a(aw),[0,a(ae),0]]],bsR=[0,a(cR),[0,a(aw),0]],bsT=[0,a(d),hZ,12,hZ,34,[0,a(ax),[0,a(e),0]]],bsJ=[0,a(d),hZ,12,hZ,34,[0,a(ax),[0,a(e),0]]],bsG=[0,a(aG),hZ,14,hZ,25,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsC=[0,a(d),v8,14,v8,63,[0,a(ax),[0,a(e),0]]],bsw=[0,a(d),gB,14,gB,62,[0,a(ax),[0,a(e),0]]],bss=[0,a(d),i8,14,i8,53,[0,a(ax),[0,a(e),0]]],bso=[0,a(d),hM,5,hM,65,[0,a(ax),[0,a(e),0]]],bsk=[0,a(d),hP,14,hP,68,[0,a(ax),[0,a(e),0]]],bsg=[0,a(d),gd,14,gd,66,[0,a(ax),[0,a(e),0]]],bsc=[0,a(aG),dC,14,dC,58,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsb=[0,0],br9=[0,a(d),ij,14,ij,64,[0,a(ax),[0,a(e),0]]],br3=[0,a(aG),dw,14,dw,50,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],br0=[2,0],br1=[1,0],br2=[2,0],brW=[0,a(d),jm,14,jm,54,[0,a(ax),[0,a(e),0]]],brS=[0,a(d),f6,14,f6,45,[0,a(ax),[0,a(e),0]]],brO=[0,a(d),h4,14,h4,66,[0,a(ax),[0,a(e),0]]],brK=[0,a(d),hK,14,hK,60,[0,a(ax),[0,a(e),0]]],brG=[0,a(d),i4,14,i4,58,[0,a(ax),[0,a(e),0]]],brC=[0,a(d),iX,14,iX,56,[0,a(ax),[0,a(e),0]]],brw=[0,a(d),i3,14,i3,67,[0,a(ax),[0,a(e),0]]],brs=[0,a(d),dC,14,dC,63,[0,a(ax),[0,a(e),0]]],bro=[0,a(d),iR,14,iR,60,[0,a(ax),[0,a(e),0]]],bri=[0,a(aG),h2,5,h2,74,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bre=[0,a(d),dw,14,dw,55,[0,a(ax),[0,a(e),0]]],bra=[0,a(d),gP,14,gP,52,[0,a(ax),[0,a(e),0]]],bq8=[0,a(d),gc,14,gc,59,[0,a(ax),[0,a(e),0]]],bq9=[0,a(d),gc,14,gc,59,[0,a(ax),[0,a(e),0]]],bq_=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.date_courante"),0]],bq7=[0,a(d),gc,14,gc,59,[0,a(ax),[0,a(e),0]]],brb=[0,a(d),gP,14,gP,52,[0,a(ax),[0,a(e),0]]],brc=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.m\xc3\xa9nage"),0]],bq$=[0,a(d),gP,14,gP,52,[0,a(ax),[0,a(e),0]]],brf=[0,a(d),dw,14,dw,55,[0,a(ax),[0,a(e),0]]],brg=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.demandeur"),0]],brd=[0,a(d),dw,14,dw,55,[0,a(ax),[0,a(e),0]]],brj=[0,a(aG),h2,5,h2,74,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],brk=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.b\xc3\xa9n\xc3\xa9ficie_aide_personnalis\xc3\xa9e_logement"),0]],brh=[0,a(aG),h2,5,h2,74,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],brl=[0,a(a6),[0,a(u4),[0,a(cb),0]]],brm=[0,a(a6),[0,a(u4),[0,a(cb),0]]],brp=[0,a(d),iR,14,iR,60,[0,a(ax),[0,a(e),0]]],brq=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.m\xc3\xa9nage"),0]],brn=[0,a(d),iR,14,iR,60,[0,a(ax),[0,a(e),0]]],brt=[0,a(d),dC,14,dC,63,[0,a(ax),[0,a(e),0]]],bru=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.demandeur"),0]],brr=[0,a(d),dC,14,dC,63,[0,a(ax),[0,a(e),0]]],brx=[0,a(d),i3,14,i3,67,[0,a(ax),[0,a(e),0]]],bry=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.date_courante"),0]],brv=[0,a(d),i3,14,i3,67,[0,a(ax),[0,a(e),0]]],brz=[0,a(a6),[0,a(C9),[0,a(b7),0]]],brA=[0,a(a6),[0,a(C9),[0,a(b7),0]]],brD=[0,a(d),iX,14,iX,56,[0,a(ax),[0,a(e),0]]],brE=[0,a(a6),[0,a("calcul_allocation_logement.mode_occupation"),0]],brB=[0,a(d),iX,14,iX,56,[0,a(ax),[0,a(e),0]]],brH=[0,a(d),i4,14,i4,58,[0,a(ax),[0,a(e),0]]],brI=[0,a(a6),[0,a("calcul_allocation_logement.ressources_m\xc3\xa9nage_sans_arrondi"),0]],brF=[0,a(d),i4,14,i4,58,[0,a(ax),[0,a(e),0]]],brL=[0,a(d),hK,14,hK,60,[0,a(ax),[0,a(e),0]]],brM=[0,a(a6),[0,a("calcul_allocation_logement.situation_familiale"),0]],brJ=[0,a(d),hK,14,hK,60,[0,a(ax),[0,a(e),0]]],brP=[0,a(d),h4,14,h4,66,[0,a(ax),[0,a(e),0]]],brQ=[0,a(a6),[0,a("calcul_allocation_logement.nombre_personnes_\xc3\xa0_charge"),0]],brN=[0,a(d),h4,14,h4,66,[0,a(ax),[0,a(e),0]]],brT=[0,a(d),f6,14,f6,45,[0,a(ax),[0,a(e),0]]],brU=[0,a(a6),[0,a("calcul_allocation_logement.zone"),0]],brR=[0,a(d),f6,14,f6,45,[0,a(ax),[0,a(e),0]]],brX=[0,a(d),jm,14,jm,54,[0,a(ax),[0,a(e),0]]],brY=[0,a(a6),[0,a("calcul_allocation_logement.date_courante"),0]],brV=[0,a(d),jm,14,jm,54,[0,a(ax),[0,a(e),0]]],br4=[0,a(aG),dw,14,dw,50,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],br5=[0,a(a6),[0,a("calcul_allocation_logement.type_aide"),0]],brZ=[0,a(aG),dw,14,dw,50,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],br6=[0,a(a6),[0,a(Em),[0,a(cR),0]]],br7=[0,a(a6),[0,a(Em),[0,a(cR),0]]],br_=[0,a(d),ij,14,ij,64,[0,a(ax),[0,a(e),0]]],br$=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.mode_occupation"),0]],br8=[0,a(d),ij,14,ij,64,[0,a(ax),[0,a(e),0]]],bsd=[0,a(aG),dC,14,dC,58,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bse=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.type_aide"),0]],bsa=[0,a(aG),dC,14,dC,58,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsh=[0,a(d),gd,14,gd,66,[0,a(ax),[0,a(e),0]]],bsi=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.ressources_m\xc3\xa9nage_sans_arrondi"),0]],bsf=[0,a(d),gd,14,gd,66,[0,a(ax),[0,a(e),0]]],bsl=[0,a(d),hP,14,hP,68,[0,a(ax),[0,a(e),0]]],bsm=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.situation_familiale"),0]],bsj=[0,a(d),hP,14,hP,68,[0,a(ax),[0,a(e),0]]],bsp=[0,a(d),hM,5,hM,65,[0,a(ax),[0,a(e),0]]],bsq=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.nombre_personnes_\xc3\xa0_charge"),0]],bsn=[0,a(d),hM,5,hM,65,[0,a(ax),[0,a(e),0]]],bst=[0,a(d),i8,14,i8,53,[0,a(ax),[0,a(e),0]]],bsu=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.zone"),0]],bsr=[0,a(d),i8,14,i8,53,[0,a(ax),[0,a(e),0]]],bsx=[0,a(d),gB,14,gB,62,[0,a(ax),[0,a(e),0]]],bsy=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.date_courante"),0]],bsv=[0,a(d),gB,14,gB,62,[0,a(ax),[0,a(e),0]]],bsz=[0,a(a6),[0,a(zl),[0,a(cS),0]]],bsA=[0,a(a6),[0,a(zl),[0,a(cS),0]]],bsD=[0,a(d),l6,12,l6,61,[0,a(ax),[0,a(e),0]]],bsB=[0,a(d),l6,12,l6,61,[0,a(ax),[0,a(e),0]]],bsE=[0,a(a6),[0,a(kD),0]],bsH=[0,a(d),nr,12,nr,23,[0,a(ax),[0,a(e),0]]],bsF=[0,a(d),nr,12,nr,23,[0,a(ax),[0,a(e),0]]],bsI=[0,a(a6),[0,a(n_),0]],bsU=[0,a(a6),[0,a(aw),0]],bs6=[0,a(d),o5,12,o5,31,[0,a(ax),[0,a(e),0]]],bsV=[0,a(d),o5,12,o5,31,[0,a(ax),[0,a(e),0]]],bs7=[0,a(a6),[0,a(cX),0]],bq4=[0,a(E),Bk,14,Bk,33,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bq0=[0,a(E),vY,14,vY,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bq1=[0,a(d),oi,12,oi,34,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bqZ=[0,a(d),oi,12,oi,34,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bqW=[0,a(E),Bb,14,Bb,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqP=[0,a(V),[0,a(aw),[0,a(ac),0]]],bqQ=[0,a(V),[0,a(aw),0]],bqR=[0,a(V),[0,a(aw),[0,a(ae),0]]],bqS=[0,a(V),[0,a(aw),0]],bqE=[0,a(bh),[0,a(aw),[0,a(ac),0]]],bqF=[0,a(bh),[0,a(aw),0]],bqG=[0,a(bh),[0,a(aw),[0,a(ae),0]]],bqH=[0,a(bh),[0,a(aw),0]],bqu=[0,a(V),[0,a(aw),[0,a(ac),0]]],bqv=[0,a(V),[0,a(aw),0]],bqw=[0,a(V),[0,a(aw),[0,a(ae),0]]],bqx=[0,a(V),[0,a(aw),0]],bql=[0,a(ao),[0,a(aw),[0,a(ac),0]]],bqm=[0,a(ao),[0,a(aw),0]],bqn=[0,a(ao),[0,a(aw),[0,a(ae),0]]],bqo=[0,a(ao),[0,a(aw),0]],bqa=[0,a(bh),[0,a(aw),[0,a(ac),0]]],bqb=[0,a(bh),[0,a(aw),0]],bqc=[0,a(bh),[0,a(aw),[0,a(ae),0]]],bqd=[0,a(bh),[0,a(aw),0]],bqh=a(p),bqi=a(p),bp9=[0,a(E),1539,16,1542,39,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bp_=[0,a(bh),[0,a(bo),[0,a(ac),0]]],bp$=[0,a(bh),[0,a(bo),0]],bqe=[0,a(E),1524,9,1545,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqf=[0,a(bh),[0,a(bo),[0,a(ae),0]]],bqg=[0,a(bh),[0,a(bo),0]],bqj=[0,a(ao),[0,a(bo),[0,a(ac),0]]],bqk=[0,a(ao),[0,a(bo),0]],bqp=[0,a(E),1588,9,1599,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqq=[0,a(ao),[0,a(bo),[0,a(ae),0]]],bqr=[0,a(ao),[0,a(bo),0]],bqs=[0,a(V),[0,a(bo),[0,a(ac),0]]],bqt=[0,a(V),[0,a(bo),0]],bqy=[0,a(E),1609,10,1624,11,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqz=[0,a(V),[0,a(bo),[0,a(ae),0]]],bqA=[0,a(V),[0,a(bo),0]],bqL=a(p),bqM=a(p),bqB=[0,a(E),1571,16,1574,39,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqC=[0,a(bh),[0,a(bo),[0,a(ac),0]]],bqD=[0,a(bh),[0,a(bo),0]],bqI=[0,a(E),zt,9,1577,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqJ=[0,a(bh),[0,a(bo),[0,a(ae),0]]],bqK=[0,a(bh),[0,a(bo),0]],bqN=[0,a(V),[0,a(bo),[0,a(ac),0]]],bqO=[0,a(V),[0,a(bo),0]],bqT=[0,a(E),1636,10,1651,11,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqU=[0,a(V),[0,a(bo),[0,a(ae),0]]],bqV=[0,a(V),[0,a(bo),0]],bp5=[0,a(Q),88,14,88,44,[0,a(cG),[0,a(bX),[0,a(L),0]]]],bpZ=[0,0],bp0=[1,0],bp1=[1,0],bp2=[1,0],bp3=[0,0],bp4=[1,0],bpV=[0,a(E),EM,14,EM,31,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bpS=a(c5),bpT=a(B5),bpU=a(qY),bpO=[0,a(E),so,14,so,34,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bpP=[0,a(d),mP,11,mP,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpN=[0,a(d),mP,11,mP,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpQ=[0,a(cR),[0,a(xM),0]],bpW=[0,a(d),nb,10,nb,22,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpR=[0,a(d),nb,10,nb,22,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpX=[0,a(cR),[0,a(xf),0]],bp6=[0,a(d),mD,11,mD,41,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpY=[0,a(d),mD,11,mD,41,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bp7=[0,a(cR),[0,a(y6),0]],bqX=[0,a(d),mU,11,mU,33,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bp8=[0,a(d),mU,11,mU,33,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bqY=[0,a(cR),[0,a(Fi),0]],bq2=[0,a(cR),[0,a(aw),0]],bq5=[0,a(d),kL,12,kL,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bq3=[0,a(d),kL,12,kL,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bq6=[0,a(cR),[0,a(cX),0]],bpI=[0,a(aG),vw,5,vw,73,[0,a("Article L841-3"),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpH=[2,0],bpJ=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpF=[0,a(aG),fb,5,1140,28,[0,a("Article L841-4"),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpE=[0,0],bpG=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpK=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpD=[0,a(aG),vA,14,vA,25,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpz=[0,0],bpA=[0,0],bpB=[1,0],bpC=[2,0],bpp=a(p),bpq=[0,a(aG),1002,5,1006,29,[0,a(im),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpr=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpk=a(z),bpl=[0,a(aG),979,5,kL,13,[0,a(im),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpm=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpf=[0,a(aU),[0,a(fj),[0,a(ac),0]]],bpg=[0,a(aU),[0,a(fj),0]],bph=[0,a(aU),[0,a(fj),[0,a(ae),0]]],bpi=[0,a(aU),[0,a(fj),0]],bpe=a(z),bpj=[0,a(aG),961,5,963,9,[0,a(im),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpn=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpo=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bps=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bo9=[2,0],bpc=[0,0],bo_=[0,a(cq),[0,a(dh),[0,a(ac),0]]],bo$=[0,a(cq),[0,a(dh),0]],bpa=[0,a(cq),[0,a(dh),[0,a(ae),0]]],bpb=[0,a(cq),[0,a(dh),0]],bo8=a(p),bpd=[0,a(aG),922,5,kz,29,[0,a(im),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpt=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bo1=[2,0],bo6=[0,0],bo2=[0,a(cq),[0,a(dh),[0,a(ac),0]]],bo3=[0,a(cq),[0,a(dh),0]],bo4=[0,a(cq),[0,a(dh),[0,a(ae),0]]],bo5=[0,a(cq),[0,a(dh),0]],bo0=a(z),bo7=[0,a(aG),890,5,911,8,[0,a(im),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpu=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],boV=[4,0],boW=[3,0],boX=[1,0],boY=[0,0],boZ=[0,a(aG),870,5,875,6,[0,a(im),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpv=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],boU=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],boQ=[0,a(aG),xs,14,xs,25,[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]],boO=[0,0],boP=[2,0],boK=[0,a(d),hn,14,hn,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],boG=[0,a(d),B8,14,B8,63,[0,a(aK),[0,a(i),[0,a(e),0]]]],boA=[0,a(E),nf,9,nf,55,[0,a(oh),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boB=[0,a(E),nf,9,nf,55,[0,a(oh),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boC=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_surface"),0]],box=[0,a(E),nj,9,nj,68,[0,a(oh),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boy=[0,a(E),nj,9,nj,68,[0,a(oh),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boz=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_r\xc3\xa9sidence_principale"),0]],bou=[0,a(d),gz,14,gz,47,[0,a(aK),[0,a(i),[0,a(e),0]]]],boq=[0,a(d),i9,14,i9,43,[0,a(aK),[0,a(i),[0,a(e),0]]]],bom=[0,a(d),iZ,14,iZ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bod=[0,a(E),4364,5,4369,28,[0,a(oH),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boe=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boc=[0,a(E),4347,5,4352,28,[0,a(oH),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bof=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bob=[0,a(E),4330,5,4337,28,[0,a(oH),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bog=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boh=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boa=[0,a(E),4300,5,4302,28,[0,a(oH),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boi=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn$=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn5=[0,a(d),hp,14,hp,46,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn4=[6,0],bn0=[0,a(d),jp,14,jp,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnZ=[1,0],bnV=[0,a(d),h9,14,h9,50,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnR=[0,a(E),rS,14,rS,28,[0,a("Article D841-1"),[0,a("Chapitre 1 : Champ d'application"),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]],bnS=[0,a(d),nM,11,nM,25,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnQ=[0,a(d),nM,11,nM,25,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnT=[0,a(cb),[0,a("dur\xc3\xa9e_l841_1_3"),0]],bnW=[0,a(d),h9,14,h9,50,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnX=[0,a(cb),[0,a(w$),0]],bnU=[0,a(d),h9,14,h9,50,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn1=[0,a(d),jp,14,jp,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn2=[0,a(cb),[0,a(Bm),0]],bnY=[0,a(d),jp,14,jp,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn6=[0,a(d),hp,14,hp,46,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn7=[0,a(cb),[0,a(yX),0]],bn3=[0,a(d),hp,14,hp,46,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn8=[0,a(cb),[0,a(oO),[0,a(cq),0]]],bn9=[0,a(cb),[0,a(oO),[0,a(cq),0]]],boj=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn_=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bok=[0,a(cb),[0,a("condition_accession_propri\xc3\xa9t\xc3\xa9"),0]],bon=[0,a(d),iZ,14,iZ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boo=[0,a(cb),[0,a(vF),0]],bol=[0,a(d),iZ,14,iZ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bor=[0,a(d),i9,14,i9,43,[0,a(aK),[0,a(i),[0,a(e),0]]]],bos=[0,a(cb),[0,a(Bj),0]],bop=[0,a(d),i9,14,i9,43,[0,a(aK),[0,a(i),[0,a(e),0]]]],bov=[0,a(d),gz,14,gz,47,[0,a(aK),[0,a(i),[0,a(e),0]]]],bow=[0,a(cb),[0,a(F6),0]],bot=[0,a(d),gz,14,gz,47,[0,a(aK),[0,a(i),[0,a(e),0]]]],boD=[0,a(cb),[0,a(oF),[0,a(aU),0]]],boE=[0,a(cb),[0,a(oF),[0,a(aU),0]]],boH=[0,a(d),f2,12,f2,61,[0,a(aK),[0,a(i),[0,a(e),0]]]],boF=[0,a(d),f2,12,f2,61,[0,a(aK),[0,a(i),[0,a(e),0]]]],boI=[0,a(cb),[0,a(kD),0]],boL=[0,a(d),oR,12,oR,54,[0,a(aK),[0,a(i),[0,a(e),0]]]],boJ=[0,a(d),oR,12,oR,54,[0,a(aK),[0,a(i),[0,a(e),0]]]],boM=[0,a(cb),[0,a(r7),0]],boR=[0,a(d),nc,10,nc,31,[0,a(aK),[0,a(i),[0,a(e),0]]]],boN=[0,a(d),nc,10,nc,31,[0,a(aK),[0,a(i),[0,a(e),0]]]],boS=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_dispositions_communes"),0]],bpw=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],boT=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpx=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement_familiale"),0]],bpL=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpy=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpM=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_l841_2"),0]],bnM=[0,a(aG),gJ,5,593,36,[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]],bnN=[0,a(d),f3,12,f3,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnL=[0,a(d),f3,12,f3,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnH=[0,a(d),ne,14,ne,56,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnD=[0,a(d),ru,14,ru,63,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnt=[0,a(E),3693,5,3698,30,[0,a("Article R832-21"),[0,a("Sous-Section 1 : Conditions d'assimilation des logements-foyers aux logements \xc3\xa0 usage locatif"),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],bnu=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnp=[0,a(b7),[0,a(kj),[0,a(ac),0]]],bnq=[0,a(b7),[0,a(kj),0]],bnr=[0,a(b7),[0,a(kj),[0,a(ae),0]]],bns=[0,a(b7),[0,a(kj),0]],bno=[0,a(aG),kS,5,704,30,[0,a(mf),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bnv=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnn=[0,a(aG),Y,5,kp,30,[0,a(mf),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bnw=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnm=[0,a(aG),kc,5,650,30,[0,a(mf),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bnx=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bni=[0,a(b7),[0,a(j3),[0,a(ac),0]]],bnj=[0,a(b7),[0,a(j3),0]],bnk=[0,a(b7),[0,a(j3),[0,a(ae),0]]],bnl=[0,a(b7),[0,a(j3),0]],bnh=[0,a(aG),kf,5,623,30,[0,a(mf),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bny=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnz=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bng=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bna=[0,a(d),gO,14,gO,47,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm8=[0,a(d),hg,14,hg,43,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm4=[0,a(d),hJ,14,hJ,40,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmX=[0,a(aG),ko,5,753,30,[0,a(qG),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bmY=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmW=[0,a(aG),721,5,726,30,[0,a(qG),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bmZ=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmV=[0,a(aG),hr,31,hr,54,[0,a(qG),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bm0=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmU=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmQ=[0,a(d),fh,11,fh,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmR=[0,a(d),fh,11,fh,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmP=[0,a(d),fh,11,fh,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmJ=[0,a(E),3021,5,3024,41,[0,a("Article R832-7"),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmK=[0,a(d),dj,11,dj,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmI=[0,a(E),2986,5,2988,42,[0,a("Article R832-5"),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmL=[0,a(d),dj,11,dj,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmM=[0,a(d),dj,11,dj,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmH=[0,a(d),dj,11,dj,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmN=[0,a(d),dj,11,dj,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmG=[0,a(d),dj,11,dj,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmO=[0,a(b7),[0,a(j3),0]],bmS=[0,a(b7),[0,a(kj),0]],bm1=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmT=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm2=[0,a(b7),[0,a("condition_logement_pr\xc3\xaat"),0]],bm5=[0,a(d),hJ,14,hJ,40,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm6=[0,a(b7),[0,a(vF),0]],bm3=[0,a(d),hJ,14,hJ,40,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm9=[0,a(d),hg,14,hg,43,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm_=[0,a(b7),[0,a(Bj),0]],bm7=[0,a(d),hg,14,hg,43,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnb=[0,a(d),gO,14,gO,47,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnc=[0,a(b7),[0,a(F6),0]],bm$=[0,a(d),gO,14,gO,47,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnd=[0,a(b7),[0,a(oF),[0,a(aU),0]]],bne=[0,a(b7),[0,a(oF),[0,a(aU),0]]],bnA=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnf=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnB=[0,a(b7),[0,a("condition_logement_bailleur"),0]],bnE=[0,a(d),n9,12,n9,61,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnC=[0,a(d),n9,12,n9,61,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnF=[0,a(b7),[0,a(kD),0]],bnI=[0,a(d),l3,12,l3,54,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnG=[0,a(d),l3,12,l3,54,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnJ=[0,a(b7),[0,a(r7),0]],bnO=[0,a(d),f3,12,f3,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnK=[0,a(d),f3,12,f3,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnP=[0,a(b7),[0,a(n_),0]],bmD=[0,a(E),AS,14,AS,40,[0,a("Article D823-22"),[0,a(l_),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmy=[0,a(aG),eb,5,566,42,[0,a("Article L823-8"),[0,a(a4),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bmz=[0,a(d),f$,11,f$,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmx=[0,a(d),f$,11,f$,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmt=[0,a(Q),BI,14,BI,29,[0,a("Article 45"),[0,a("Chapitre VIII : Prime de d\xc3\xa9m\xc3\xa9nagement"),[0,a(L),0]]]],bmo=a(_),bmp=a(qz),bmq=a(_),bms=a(p),bmr=a("2.4"),bmj=[0,a(E),2069,6,2079,75,[0,a(qL),[0,a(l_),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmk=[0,a(d),ex,11,ex,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmi=[0,a(d),ex,11,ex,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmc=[0,a(d),iN,14,iN,43,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl_=[0,a(d),iQ,14,iQ,39,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl6=[0,a(d),fR,14,fR,36,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl0=[0,a(d),fT,14,fT,65,[0,a(bv),[0,a(i),[0,a(e),0]]]],blU=a(_),blV=[0,a(E),2060,5,2065,77,[0,a(qL),[0,a(l_),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blW=[0,a(d),f0,11,f0,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],blT=[0,a(d),f0,11,f0,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],blP=[0,a(E),Ai,14,Ai,47,[0,a(qL),[0,a(l_),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blQ=[0,a(d),nQ,11,nQ,44,[0,a(bv),[0,a(i),[0,a(e),0]]]],blO=[0,a(d),nQ,11,nQ,44,[0,a(bv),[0,a(i),[0,a(e),0]]]],blR=[0,a(dk),[0,a("d\xc3\xa9lai_apr\xc3\xa8s_emm\xc3\xa9nagement_l823_8_2"),0]],blX=[0,a(d),f0,11,f0,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],blS=[0,a(d),f0,11,f0,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],blY=[0,a(dk),[0,a("condition_rang_enfant"),0]],bl1=[0,a(d),fT,14,fT,65,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl2=[0,a(dk),[0,a(DV),0]],blZ=[0,a(d),fT,14,fT,65,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl3=[0,a(dk),[0,a(mS),[0,a(f_),0]]],bl4=[0,a(dk),[0,a(mS),[0,a(f_),0]]],bl7=[0,a(d),fR,14,fR,36,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl8=[0,a(dk),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.m\xc3\xa9nage"),0]],bl5=[0,a(d),fR,14,fR,36,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl$=[0,a(d),iQ,14,iQ,39,[0,a(bv),[0,a(i),[0,a(e),0]]]],bma=[0,a(dk),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.demandeur"),0]],bl9=[0,a(d),iQ,14,iQ,39,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmd=[0,a(d),iN,14,iN,43,[0,a(bv),[0,a(i),[0,a(e),0]]]],bme=[0,a(dk),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.date_courante"),0]],bmb=[0,a(d),iN,14,iN,43,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmf=[0,a(dk),[0,a(A5),[0,a(aU),0]]],bmg=[0,a(dk),[0,a(A5),[0,a(aU),0]]],bml=[0,a(d),ex,11,ex,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmh=[0,a(d),ex,11,ex,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmm=[0,a(dk),[0,a("condition_p\xc3\xa9riode_d\xc3\xa9m\xc3\xa9nagement"),0]],bmu=[0,a(d),mJ,11,mJ,26,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmn=[0,a(d),mJ,11,mJ,26,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmv=[0,a(dk),[0,a("plafond_d823_22"),0]],bmA=[0,a(d),f$,11,f$,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmw=[0,a(d),f$,11,f$,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmB=[0,a(dk),[0,a(A$),0]],bmE=[0,a(d),oZ,12,oZ,38,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmC=[0,a(d),oZ,12,oZ,38,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmF=[0,a(dk),[0,a("montant_prime_d\xc3\xa9m\xc3\xa9nagement"),0]],blK=[0,a(E),qZ,14,qZ,33,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blG=[0,a(E),En,14,En,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blH=[0,a(d),j6,12,j6,34,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blF=[0,a(d),j6,12,j6,34,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blC=[0,a(E),vR,14,vR,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blv=[0,a(au),[0,a(aw),[0,a(ac),0]]],blw=[0,a(au),[0,a(aw),0]],blx=[0,a(au),[0,a(aw),[0,a(ae),0]]],bly=[0,a(au),[0,a(aw),0]],blm=[0,a(aj),[0,a(aw),[0,a(ac),0]]],bln=[0,a(aj),[0,a(aw),0]],blo=[0,a(aj),[0,a(aw),[0,a(ae),0]]],blp=[0,a(aj),[0,a(aw),0]],blb=[0,a(aD),[0,a(aw),[0,a(ac),0]]],blc=[0,a(aD),[0,a(aw),0]],bld=[0,a(aD),[0,a(aw),[0,a(ae),0]]],ble=[0,a(aD),[0,a(aw),0]],bli=a(p),blj=a(p),bk_=[0,a(E),1455,16,1458,39,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bk$=[0,a(aD),[0,a(bo),[0,a(ac),0]]],bla=[0,a(aD),[0,a(bo),0]],blf=[0,a(E),1440,9,1460,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blg=[0,a(aD),[0,a(bo),[0,a(ae),0]]],blh=[0,a(aD),[0,a(bo),0]],blk=[0,a(aj),[0,a(bo),[0,a(ac),0]]],bll=[0,a(aj),[0,a(bo),0]],blq=[0,a(E),1491,10,1507,11,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blr=[0,a(aj),[0,a(bo),[0,a(ae),0]]],bls=[0,a(aj),[0,a(bo),0]],blt=[0,a(au),[0,a(bo),[0,a(ac),0]]],blu=[0,a(au),[0,a(bo),0]],blz=[0,a(E),1471,9,1480,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blA=[0,a(au),[0,a(bo),[0,a(ae),0]]],blB=[0,a(au),[0,a(bo),0]],bk6=[0,a(Q),78,14,78,44,[0,a(cG),[0,a(bX),[0,a(L),0]]]],bk0=[0,0],bk1=[1,0],bk2=[1,0],bk3=[1,0],bk4=[0,0],bk5=[1,0],bkW=[0,a(E),Af,14,Af,31,[0,a(rP),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],bkT=a(c5),bkU=a(B5),bkV=a(qY),bkP=[0,a(E),zu,14,zu,34,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bkQ=[0,a(d),ko,11,ko,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkO=[0,a(d),ko,11,ko,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkR=[0,a(cS),[0,a(xM),0]],bkX=[0,a(d),m2,10,m2,22,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkS=[0,a(d),m2,10,m2,22,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkY=[0,a(cS),[0,a(xf),0]],bk7=[0,a(d),oe,11,oe,41,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkZ=[0,a(d),oe,11,oe,41,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bk8=[0,a(cS),[0,a(y6),0]],blD=[0,a(d),m1,11,m1,33,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bk9=[0,a(d),m1,11,m1,33,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blE=[0,a(cS),[0,a(Fi),0]],blI=[0,a(cS),[0,a(aw),0]],blL=[0,a(d),mW,12,mW,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blJ=[0,a(d),mW,12,mW,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blM=[0,a(cS),[0,a(cX),0]],bkL=[0,a(E),Eo,14,Eo,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bkG=[0,a(V),[0,a(bJ),[0,a(ac),0]]],bkH=[0,a(V),[0,a(bJ),0]],bkI=[0,a(V),[0,a(bJ),[0,a(ae),0]]],bkJ=[0,a(V),[0,a(bJ),0]],bkK=a(p),bkM=[0,a(d),l8,10,l8,25,[0,a(D),[0,a(A),[0,a(e),0]]]],bkF=[0,a(d),l8,10,l8,25,[0,a(D),[0,a(A),[0,a(e),0]]]],bkC=[0,a(E),EJ,14,EJ,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bkr=[0,a(V),[0,a(er),[0,a(ac),0]]],bks=[0,a(V),[0,a(er),0]],bkt=[0,a(V),[0,a(er),[0,a(ae),0]]],bku=[0,a(V),[0,a(er),0]],bkv=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],bkw=[0,a(bk),[0,a(bQ),0]],bkx=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],bky=[0,a(bk),[0,a(bQ),0]],bkz=a(kW),bkA=a(p),bkB=a(p),bkD=[0,a(d),mC,10,mC,40,[0,a(D),[0,a(A),[0,a(e),0]]]],bkq=[0,a(d),mC,10,mC,40,[0,a(D),[0,a(A),[0,a(e),0]]]],bkn=[0,a(E),y3,14,y3,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bke=[0,a(V),[0,a(bI),[0,a(ac),0]]],bkf=[0,a(V),[0,a(bI),0]],bkg=[0,a(V),[0,a(bI),[0,a(ae),0]]],bkh=[0,a(V),[0,a(bI),0]],bki=[0,a(V),[0,a(eK),[0,a(ac),0]]],bkj=[0,a(V),[0,a(eK),0]],bkk=[0,a(V),[0,a(eK),[0,a(ae),0]]],bkl=[0,a(V),[0,a(eK),0]],bkm=a(p),bko=[0,a(d),ou,10,ou,32,[0,a(D),[0,a(A),[0,a(e),0]]]],bkd=[0,a(d),ou,10,ou,32,[0,a(D),[0,a(A),[0,a(e),0]]]],bka=[0,a(E),AC,14,AC,33,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bj8=[0,a(E),vb,14,vb,47,[0,a(oP),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bj3=[0,a(V),[0,a(de),[0,a(ac),0]]],bj4=[0,a(V),[0,a(de),0]],bj5=[0,a(V),[0,a(de),[0,a(ae),0]]],bj6=[0,a(V),[0,a(de),0]],bj7=a(p),bj9=[0,a(d),nD,11,nD,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bj2=[0,a(d),nD,11,nD,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bjZ=[0,a(E),xd,14,xd,41,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjV=[0,a(E),AK,14,AK,33,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjR=[0,a(E),x1,14,x1,33,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjM=[0,a(E),4671,7,4674,44,[0,a(oP),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjN=[0,a(d),gV,11,gV,47,[0,a(D),[0,a(A),[0,a(e),0]]]],bjL=[0,a(E),vM,14,vM,50,[0,a(oP),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjF=[0,a(E),nn,14,nn,62,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjG=[0,a(E),nn,14,nn,62,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjH=[0,a(V),[0,a("calcul_apl_logement_foyer.n_nombre_parts_d832_25"),0]],bjC=[0,a(E),m4,14,m4,61,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjD=[0,a(E),m4,14,m4,61,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjE=[0,a(V),[0,a(Eh),0]],bjz=[0,a(d),gG,14,gG,49,[0,a(D),[0,a(A),[0,a(e),0]]]],bjy=a(p),bju=[0,a(d),hR,14,hR,53,[0,a(D),[0,a(A),[0,a(e),0]]]],bjq=[0,a(d),i2,14,i2,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bjm=[0,a(d),ii,14,ii,70,[0,a(D),[0,a(A),[0,a(e),0]]]],bji=[0,a(d),iY,14,iY,65,[0,a(D),[0,a(A),[0,a(e),0]]]],bje=[0,a(d),jo,14,jo,67,[0,a(D),[0,a(A),[0,a(e),0]]]],bja=[0,a(d),iy,14,iy,61,[0,a(D),[0,a(A),[0,a(e),0]]]],bi8=[0,a(d),ju,14,ju,59,[0,a(D),[0,a(A),[0,a(e),0]]]],bi7=[3,0],bi1=[0,a(E),hx,14,hx,70,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biX=[0,a(E),hH,14,hH,69,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biT=[0,a(E),js,14,js,75,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biO=[0,a(E),A_,5,A_,44,[0,a(BN),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biG=[0,a(V),[0,a(dE),[0,a(ac),0]]],biH=[0,a(V),[0,a(dE),0]],biI=[0,a(V),[0,a(dE),[0,a(ae),0]]],biJ=[0,a(V),[0,a(dE),0]],biK=[0,a(V),[0,a(dE),[0,a(ac),0]]],biL=[0,a(V),[0,a(dE),0]],biM=[0,a(V),[0,a(dE),[0,a(ae),0]]],biN=[0,a(V),[0,a(dE),0]],biP=[0,a(d),h0,11,h0,36,[0,a(D),[0,a(A),[0,a(e),0]]]],biF=[0,a(E),EF,14,EF,39,[0,a(BN),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biB=[0,a(V),[0,a(dE),[0,a(ac),0]]],biC=[0,a(V),[0,a(dE),0]],biD=[0,a(V),[0,a(dE),[0,a(ae),0]]],biE=[0,a(V),[0,a(dE),0]],biw=[0,a(E),vT,5,vT,28,[0,a(nd),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bix=[0,a(d),iT,10,iT,15,[0,a(D),[0,a(A),[0,a(e),0]]]],biv=[0,a(E),Dx,14,Dx,41,[0,a(nd),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bis=a(c5),bit=a(qY),biu=a("4999"),bil=[0,a(aO),xK,24,xK,56,[0,a(or),[0,a(bB),[0,a(aM),0]]]],bic=a(df),bid=[0,a(V),[0,a(b$),[0,a(ac),0]]],bie=[0,a(V),[0,a(b$),0]],bif=[0,a(V),[0,a(b$),[0,a(ae),0]]],big=[0,a(V),[0,a(b$),0]],bih=[0,a(V),[0,a(b$),[0,a(ac),0]]],bii=[0,a(V),[0,a(b$),0]],bij=[0,a(V),[0,a(b$),[0,a(ae),0]]],bik=[0,a(V),[0,a(b$),0]],bim=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bib=[0,a(Q),Et,24,Et,56,[0,a(or),[0,a(bn),[0,a(L),0]]]],bh4=a(df),bh5=[0,a(V),[0,a(b$),[0,a(ac),0]]],bh6=[0,a(V),[0,a(b$),0]],bh7=[0,a(V),[0,a(b$),[0,a(ae),0]]],bh8=[0,a(V),[0,a(b$),0]],bh9=[0,a(V),[0,a(b$),[0,a(ac),0]]],bh_=[0,a(V),[0,a(b$),0]],bh$=[0,a(V),[0,a(b$),[0,a(ae),0]]],bia=[0,a(V),[0,a(b$),0]],bin=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bio=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bh3=[0,a(Q),AB,14,AB,46,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bhZ=[0,a(V),[0,a(b$),[0,a(ac),0]]],bh0=[0,a(V),[0,a(b$),0]],bh1=[0,a(V),[0,a(b$),[0,a(ae),0]]],bh2=[0,a(V),[0,a(b$),0]],bip=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bhY=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bhV=[0,a(E),Au,15,Au,37,[0,a(oP),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bhW=[0,a(d),mQ,11,mQ,33,[0,a(D),[0,a(A),[0,a(e),0]]]],bhU=[0,a(d),mQ,11,mQ,33,[0,a(D),[0,a(A),[0,a(e),0]]]],bhQ=[0,a(E),4696,6,4702,6,[0,a(nd),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bhR=[0,a(d),fU,11,fU,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bhO=[0,a(E),4714,5,4715,59,[0,a(nd),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bhP=[0,a(d),fU,11,fU,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bhJ=[0,a(Q),Ey,5,Ey,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bgZ=a(p),bg0=a("158700"),bg1=a("191300"),bg2=a(z),bg3=a("205500"),bg4=a(X),bg5=a("211300"),bg6=a(_),bg7=a("217100"),bg8=a(ah),bg9=a("222900"),bg_=a(P),bg$=a(z6),bha=a(P),bhb=a("19800"),bhc=a(z6),bhd=a(p),bhe=a("139300"),bhf=a("170600"),bhg=a(z),bhh=a("184700"),bhi=a(X),bhj=a("191200"),bhk=a(_),bhl=a(zn),bhm=a(ah),bhn=a("204200"),bho=a(P),bhp=a(wC),bhq=a(P),bhr=a(sk),bhs=a(wC),bht=a(p),bhu=a("130600"),bhv=a("158400"),bhw=a(z),bhx=a("172600"),bhy=a(X),bhz=a(DX),bhA=a(_),bhB=a("187000"),bhC=a(ah),bhD=a("194200"),bhE=a(P),bhF=a(rH),bhG=a(P),bhH=a("18200"),bhI=a(rH),bhK=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bgX=[0,a(Q),x4,5,x4,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bgb=a(p),bgc=a("160400"),bgd=a("193400"),bge=a(z),bgf=a("207800"),bgg=a(X),bgh=a("213700"),bgi=a(_),bgj=a("219600"),bgk=a(ah),bgl=a(yH),bgm=a(P),bgn=a(ob),bgo=a(P),bgp=a("20000"),bgq=a(ob),bgr=a(p),bgs=a(DJ),bgt=a(DY),bgu=a(z),bgv=a("186700"),bgw=a(X),bgx=a("193300"),bgy=a(_),bgz=a(q0),bgA=a(ah),bgB=a("206500"),bgC=a(P),bgD=a(w3),bgE=a(P),bgF=a(zq),bgG=a(w3),bgH=a(p),bgI=a(Bp),bgJ=a(ra),bgK=a(z),bgL=a("174500"),bgM=a(X),bgN=a(xP),bgO=a(_),bgP=a("189100"),bgQ=a(ah),bgR=a("196400"),bgS=a(P),bgT=a(vm),bgU=a(P),bgV=a("18400"),bgW=a(vm),bgY=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bf$=[0,a(Q),CZ,5,CZ,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bfp=a(p),bfq=a("163300"),bfr=a("196900"),bfs=a(z),bft=a("211600"),bfu=a(X),bfv=a(wE),bfw=a(_),bfx=a("223600"),bfy=a(ah),bfz=a("229600"),bfA=a(P),bfB=a(BE),bfC=a(P),bfD=a("20400"),bfE=a(BE),bfF=a(p),bfG=a("143300"),bfH=a("175600"),bfI=a(z),bfJ=a("190100"),bfK=a(X),bfL=a("196600"),bfM=a(_),bfN=a("203500"),bfO=a(ah),bfP=a("210200"),bfQ=a(P),bfR=a(EU),bfS=a(P),bfT=a("19600"),bfU=a(EU),bfV=a(p),bfW=a("134400"),bfX=a(xS),bfY=a(z),bfZ=a("177700"),bf0=a(X),bf1=a("185100"),bf2=a(_),bf3=a(wF),bf4=a(ah),bf5=a(q0),bf6=a(P),bf7=a(FO),bf8=a(P),bf9=a("18700"),bf_=a(FO),bga=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bfn=[0,a(Q),Ez,5,Ez,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],beD=a(p),beE=a("167200"),beF=a("201600"),beG=a(z),beH=a("216700"),beI=a(X),beJ=a("222800"),beK=a(_),beL=a("229000"),beM=a(ah),beN=a("235100"),beO=a(P),beP=a(FI),beQ=a(P),beR=a(vL),beS=a(FI),beT=a(p),beU=a("146700"),beV=a(DX),beW=a(z),beX=a("194700"),beY=a(X),beZ=a("201500"),be0=a(_),be1=a("208400"),be2=a(ah),be3=a("215200"),be4=a(P),be5=a(ob),be6=a(P),be7=a(Bz),be8=a(ob),be9=a(p),be_=a("137600"),be$=a("166900"),bfa=a(z),bfb=a("182000"),bfc=a(X),bfd=a("189500"),bfe=a(_),bff=a("197100"),bfg=a(ah),bfh=a(C7),bfi=a(P),bfj=a(Bd),bfk=a(P),bfl=a(sk),bfm=a(Bd),bfo=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],beB=[0,a(Q),Ax,5,Ax,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bdR=a(p),bdS=a("167400"),bdT=a("201800"),bdU=a(z),bdV=a("216900"),bdW=a(X),bdX=a("223000"),bdY=a(_),bdZ=a("229200"),bd0=a(ah),bd1=a("235300"),bd2=a(P),bd3=a(As),bd4=a(P),bd5=a(vL),bd6=a(As),bd7=a(p),bd8=a("146800"),bd9=a("180000"),bd_=a(z),bd$=a("194900"),bea=a(X),beb=a(Fg),bec=a(_),bed=a(rH),bee=a(ah),bef=a("215400"),beg=a(P),beh=a(Cs),bei=a(P),bej=a(Bz),bek=a(Cs),bel=a(p),bem=a("137700"),ben=a("167100"),beo=a(z),bep=a("182200"),beq=a(X),ber=a("189700"),bes=a(_),bet=a("197300"),beu=a(ah),bev=a("204900"),bew=a(P),bex=a(DU),bey=a(P),bez=a(sk),beA=a(DU),beC=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bdP=[0,a(Q),zs,5,zs,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bc5=a(p),bc6=a("169100"),bc7=a("203800"),bc8=a(z),bc9=a("219100"),bc_=a(X),bc$=a("225200"),bda=a(_),bdb=a("231500"),bdc=a(ah),bdd=a("237700"),bde=a(P),bdf=a(mk),bdg=a(P),bdh=a("21100"),bdi=a(mk),bdj=a(p),bdk=a("148300"),bdl=a(xP),bdm=a(z),bdn=a("196800"),bdo=a(X),bdp=a("203700"),bdq=a(_),bdr=a("210700"),bds=a(ah),bdt=a(wE),bdu=a(P),bdv=a(w7),bdw=a(P),bdx=a("20300"),bdy=a(w7),bdz=a(p),bdA=a("139100"),bdB=a("168800"),bdC=a(z),bdD=a(rI),bdE=a(X),bdF=a("191600"),bdG=a(_),bdH=a("199300"),bdI=a(ah),bdJ=a("206900"),bdK=a(P),bdL=a(AV),bdM=a(P),bdN=a(zq),bdO=a(AV),bdQ=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bc3=[0,a(Q),BM,5,BM,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bch=a(p),bci=a("171100"),bcj=a("206200"),bck=a(z),bcl=a("221700"),bcm=a(X),bcn=a("227900"),bco=a(_),bcp=a("234300"),bcq=a(ah),bcr=a("240600"),bcs=a(P),bct=a(zW),bcu=a(P),bcv=a("21400"),bcw=a(zW),bcx=a(p),bcy=a("150100"),bcz=a(rI),bcA=a(z),bcB=a("199200"),bcC=a(X),bcD=a("206100"),bcE=a(_),bcF=a("213200"),bcG=a(ah),bcH=a("220200"),bcI=a(P),bcJ=a(y8),bcK=a(P),bcL=a("20500"),bcM=a(y8),bcN=a(p),bcO=a(DJ),bcP=a("170800"),bcQ=a(z),bcR=a("186200"),bcS=a(X),bcT=a("193900"),bcU=a(_),bcV=a(Fg),bcW=a(ah),bcX=a("209400"),bcY=a(P),bcZ=a(AU),bc0=a(P),bc1=a("19500"),bc2=a(AU),bc4=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bcf=[0,a(Q),Aw,5,Aw,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bbv=a(p),bbw=a("26084"),bbx=a("31435"),bby=a(z),bbz=a("33798"),bbA=a(X),bbB=a("34743"),bbC=a(_),bbD=a("35719"),bbE=a(ah),bbF=a("36679"),bbG=a(P),bbH=a(zc),bbI=a(P),bbJ=a("3262"),bbK=a(zc),bbL=a(p),bbM=a("22883"),bbN=a("28051"),bbO=a(z),bbP=a("30368"),bbQ=a(X),bbR=a("31420"),bbS=a(_),bbT=a("32502"),bbU=a(ah),bbV=a("33569"),bbW=a(P),bbX=a(Fx),bbY=a(P),bbZ=a("3125"),bb0=a(Fx),bb1=a(p),bb2=a("21465"),bb3=a("26038"),bb4=a(z),bb5=a("28386"),bb6=a(X),bb7=a("29560"),bb8=a(_),bb9=a("30749"),bb_=a(ah),bb$=a("31923"),bca=a(P),bcb=a(EW),bcc=a(P),bcd=a("2973"),bce=a(EW),bcg=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bbt=[0,a(Q),Dd,5,Dd,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],baJ=a(p),baK=a("26397"),baL=a("31812"),baM=a(z),baN=a("34204"),baO=a(X),baP=a("35160"),baQ=a(_),baR=a("36148"),baS=a(ah),baT=a("37119"),baU=a(P),baV=a(zA),baW=a(P),baX=a("3301"),baY=a(zA),baZ=a(p),ba0=a("23158"),ba1=a("28388"),ba2=a(z),ba3=a("30732"),ba4=a(X),ba5=a(mV),ba6=a(_),ba7=a("32892"),ba8=a(ah),ba9=a("33972"),ba_=a(P),ba$=a(EH),bba=a(P),bbb=a("3163"),bbc=a(EH),bbd=a(p),bbe=a("21723"),bbf=a("26350"),bbg=a(z),bbh=a("28727"),bbi=a(X),bbj=a("29915"),bbk=a(_),bbl=a("31118"),bbm=a(ah),bbn=a("32306"),bbo=a(P),bbp=a(xq),bbq=a(P),bbr=a("3009"),bbs=a(xq),bbu=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],baH=[0,a(Q),zx,5,zx,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a$X=a(p),a$Y=a(Ge),a$Z=a("32194"),a$0=a(z),a$1=a("34614"),a$2=a(X),a$3=a("35582"),a$4=a(_),a$5=a("36582"),a$6=a(ah),a$7=a("37564"),a$8=a(P),a$9=a(wS),a$_=a(P),a$$=a("3341"),baa=a(wS),bab=a(p),bac=a("23436"),bad=a("28729"),bae=a(z),baf=a("31101"),bag=a(X),bah=a("32179"),bai=a(_),baj=a("33287"),bak=a(ah),bal=a("34380"),bam=a(P),ban=a(AT),bao=a(P),bap=a("3201"),baq=a(AT),bar=a(p),bas=a("21984"),bat=a("26666"),bau=a(z),bav=a("29072"),baw=a(X),bax=a("30274"),bay=a(_),baz=a("31491"),baA=a(ah),baB=a("32694"),baC=a(P),baD=a(BL),baE=a(P),baF=a("3045"),baG=a(BL),baI=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a$V=[0,a(Q),yZ,5,yZ,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a_$=a(p),a$a=a("27195"),a$b=a("32773"),a$c=a(z),a$d=a("35237"),a$e=a(X),a$f=a("36222"),a$g=a(_),a$h=a("37240"),a$i=a(ah),a$j=a("38240"),a$k=a(P),a$l=a(BC),a$m=a(P),a$n=a("3401"),a$o=a(BC),a$p=a(p),a$q=a("23858"),a$r=a("29246"),a$s=a(z),a$t=a("31661"),a$u=a(X),a$v=a("32758"),a$w=a(_),a$x=a("33886"),a$y=a(ah),a$z=a("34999"),a$A=a(P),a$B=a(zE),a$C=a(P),a$D=a("3259"),a$E=a(zE),a$F=a(p),a$G=a("22380"),a$H=a("27146"),a$I=a(z),a$J=a("29595"),a$K=a(X),a$L=a("30819"),a$M=a(_),a$N=a("32058"),a$O=a(ah),a$P=a("33282"),a$Q=a(P),a$R=a(AI),a$S=a(P),a$T=a("3100"),a$U=a(AI),a$W=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a_9=[0,a(Q),wN,5,wN,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a_n=a(p),a_o=a("27956"),a_p=a("33691"),a_q=a(z),a_r=a("36224"),a_s=a(X),a_t=a("37236"),a_u=a(_),a_v=a("38283"),a_w=a(ah),a_x=a("39311"),a_y=a(P),a_z=a(yK),a_A=a(P),a_B=a("3496"),a_C=a(yK),a_D=a(p),a_E=a("24526"),a_F=a("30065"),a_G=a(z),a_H=a("32548"),a_I=a(X),a_J=a("33675"),a_K=a(_),a_L=a(FC),a_M=a(ah),a_N=a("35979"),a_O=a(P),a_P=a(AR),a_Q=a(P),a_R=a("3350"),a_S=a(AR),a_T=a(p),a_U=a("23007"),a_V=a("27906"),a_W=a(z),a_X=a("30424"),a_Y=a(X),a_Z=a("31682"),a_0=a(_),a_1=a(yP),a_2=a(ah),a_3=a("34214"),a_4=a(P),a_5=a(EB),a_6=a(P),a_7=a("3187"),a_8=a(EB),a__=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a_l=[0,a(Q),zL,5,zL,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a9B=a(p),a9C=a("28728"),a9D=a("34621"),a9E=a(z),a9F=a("37224"),a9G=a(X),a9H=a("38264"),a9I=a(_),a9J=a(ym),a9K=a(ah),a9L=a("40396"),a9M=a(P),a9N=a(xX),a9O=a(P),a9P=a("3592"),a9Q=a(xX),a9R=a(p),a9S=a("25203"),a9T=a("30895"),a9U=a(z),a9V=a("33446"),a9W=a(X),a9X=a("34604"),a9Y=a(_),a9Z=a("35796"),a90=a(ah),a91=a("36972"),a92=a(P),a93=a(Fq),a94=a(P),a95=a("3442"),a96=a(Fq),a97=a(p),a98=a("23642"),a99=a("28676"),a9_=a(z),a9$=a(xB),a_a=a(X),a_b=a("32556"),a_c=a(_),a_d=a("33866"),a_e=a(ah),a_f=a("35158"),a_g=a(P),a_h=a(wx),a_i=a(P),a_j=a("3275"),a_k=a(wx),a_m=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a9z=[0,a(Q),Fm,5,Fm,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a8P=a(p),a8Q=a("29575"),a8R=a("35642"),a8S=a(z),a8T=a("38322"),a8U=a(X),a8V=a("39393"),a8W=a(_),a8X=a("40501"),a8Y=a(ah),a8Z=a("41588"),a80=a(P),a81=a(Dv),a82=a(P),a83=a("3698"),a84=a(Dv),a85=a(p),a86=a("25946"),a87=a("31806"),a88=a(z),a89=a("34433"),a8_=a(X),a8$=a("35625"),a9a=a(_),a9b=a("36852"),a9c=a(ah),a9d=a("38063"),a9e=a(P),a9f=a(AE),a9g=a(P),a9h=a("3544"),a9i=a(AE),a9j=a(p),a9k=a("24339"),a9l=a("29522"),a9m=a(z),a9n=a("32186"),a9o=a(X),a9p=a("33516"),a9q=a(_),a9r=a(FC),a9s=a(ah),a9t=a("36195"),a9u=a(P),a9v=a(Eq),a9w=a(P),a9x=a("3372"),a9y=a(Eq),a9A=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a8N=[0,a(Q),Di,5,Di,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a73=a(p),a74=a("29670"),a75=a("35757"),a76=a(z),a77=a("38445"),a78=a(X),a79=a("39519"),a7_=a(_),a7$=a("40601"),a8a=a(ah),a8b=a("41721"),a8c=a(P),a8d=a(DC),a8e=a(P),a8f=a("3710"),a8g=a(DC),a8h=a(p),a8i=a("26029"),a8j=a("31908"),a8k=a(z),a8l=a("34643"),a8m=a(X),a8n=a("35739"),a8o=a(_),a8p=a("36970"),a8q=a(ah),a8r=a("38185"),a8s=a(P),a8t=a(Be),a8u=a(P),a8v=a("3555"),a8w=a(Be),a8x=a(p),a8y=a("24417"),a8z=a("29616"),a8A=a(z),a8B=a("32289"),a8C=a(X),a8D=a(zF),a8E=a(_),a8F=a("34977"),a8G=a(ah),a8H=a("36311"),a8I=a(P),a8J=a(Ag),a8K=a(P),a8L=a("3383"),a8M=a(Ag),a8O=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a71=[0,a(Q),ot,5,ot,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a7f=a(p),a7g=a("29996"),a7h=a("36149"),a7i=a(z),a7j=a("38868"),a7k=a(X),a7l=a("39954"),a7m=a(_),a7n=a("41078"),a7o=a(ah),a7p=a("42180"),a7q=a(P),a7r=a(Bu),a7s=a(P),a7t=a("3751"),a7u=a(Bu),a7v=a(p),a7w=a("26315"),a7x=a("32259"),a7y=a(z),a7z=a("34923"),a7A=a(X),a7B=a("36132"),a7C=a(_),a7D=a("37373"),a7E=a(ah),a7F=a("38605"),a7G=a(P),a7H=a(DM),a7I=a(P),a7J=a("3594"),a7K=a(DM),a7L=a(p),a7M=a("24686"),a7N=a("29942"),a7O=a(z),a7P=a("32644"),a7Q=a(X),a7R=a("33993"),a7S=a(_),a7T=a("35362"),a7U=a(ah),a7V=a("36710"),a7W=a(P),a7X=a(AA),a7Y=a(P),a7Z=a("3420"),a70=a(AA),a72=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a7d=[0,a(Q),zX,5,zX,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a6t=a(p),a6u=a("30296"),a6v=a("36510"),a6w=a(z),a6x=a("39257"),a6y=a(X),a6z=a("40354"),a6A=a(_),a6B=a("41489"),a6C=a(ah),a6D=a("42602"),a6E=a(P),a6F=a(wb),a6G=a(P),a6H=a("3789"),a6I=a(wb),a6J=a(p),a6K=a("26578"),a6L=a("32582"),a6M=a(z),a6N=a("35272"),a6O=a(X),a6P=a("36493"),a6Q=a(_),a6R=a("37751"),a6S=a(ah),a6T=a("38991"),a6U=a(P),a6V=a(xQ),a6W=a(P),a6X=a("3630"),a6Y=a(xQ),a6Z=a(p),a60=a("24933"),a61=a("30241"),a62=a(z),a63=a("32970"),a64=a(X),a65=a("34333"),a66=a(_),a67=a("35716"),a68=a(ah),a69=a("37077"),a6_=a(P),a6$=a(vh),a7a=a(P),a7b=a("3454"),a7c=a(vh),a7e=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a6r=[0,a(Q),F7,5,F7,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a5H=a(p),a5I=a("30947"),a5J=a("37295"),a5K=a(z),a5L=a("40101"),a5M=a(X),a5N=a("41222"),a5O=a(_),a5P=a("42381"),a5Q=a(ah),a5R=a("43518"),a5S=a(P),a5T=a(CP),a5U=a(P),a5V=a("3870"),a5W=a(CP),a5X=a(p),a5Y=a("27149"),a5Z=a("33283"),a50=a(z),a51=a("36030"),a52=a(X),a53=a("37278"),a54=a(_),a55=a("38563"),a56=a(ah),a57=a("39829"),a58=a(P),a59=a("42649"),a5_=a(P),a5$=a("3708"),a6a=a("42659"),a6b=a(p),a6c=a("25469"),a6d=a("30891"),a6e=a(z),a6f=a("33679"),a6g=a(X),a6h=a("35071"),a6i=a(_),a6j=a("36484"),a6k=a(ah),a6l=a("37874"),a6m=a(P),a6n=a(CX),a6o=a(P),a6p=a("3528"),a6q=a(CX),a6s=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a5F=[0,a(Q),v3,5,v3,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a4V=a(p),a4W=a("31123"),a4X=a("37508"),a4Y=a(z),a4Z=a("40330"),a40=a(X),a41=a("41457"),a42=a(_),a43=a("42623"),a44=a(ah),a45=a("43766"),a46=a(P),a47=a(vi),a48=a(P),a49=a("3892"),a4_=a(vi),a4$=a(p),a5a=a("27304"),a5b=a("33473"),a5c=a(z),a5d=a("36235"),a5e=a(X),a5f=a("37490"),a5g=a(_),a5h=a("38783"),a5i=a(ah),a5j=a("40056"),a5k=a(P),a5l=a(Cf),a5m=a(P),a5n=a("3729"),a5o=a(Cf),a5p=a(p),a5q=a("25614"),a5r=a("31067"),a5s=a(z),a5t=a("33871"),a5u=a(X),a5v=a("35271"),a5w=a(_),a5x=a("36692"),a5y=a(ah),a5z=a("38090"),a5A=a(P),a5B=a(zp),a5C=a(P),a5D=a("3548"),a5E=a(zp),a5G=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a4T=[0,a(Q),ga,5,ga,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a39=a(p),a3_=a("31148"),a3$=a("37538"),a4a=a(z),a4b=a("40362"),a4c=a(X),a4d=a("41490"),a4e=a(_),a4f=a("42657"),a4g=a(ah),a4h=a("43801"),a4i=a(P),a4j=a(xu),a4k=a(P),a4l=a("3895"),a4m=a(xu),a4n=a(p),a4o=a("27326"),a4p=a(FY),a4q=a(z),a4r=a("36264"),a4s=a(X),a4t=a("37520"),a4u=a(_),a4v=a("38814"),a4w=a(ah),a4x=a("40088"),a4y=a(P),a4z=a(FM),a4A=a(P),a4B=a("3732"),a4C=a(FM),a4D=a(p),a4E=a("25634"),a4F=a("31092"),a4G=a(z),a4H=a("33898"),a4I=a(X),a4J=a("35299"),a4K=a(_),a4L=a("36721"),a4M=a(ah),a4N=a("38120"),a4O=a(P),a4P=a(Ac),a4Q=a(P),a4R=a("3551"),a4S=a(Ac),a4U=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a37=[0,a(Q),Ct,5,Ct,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a3l=a(p),a3m=a("31382"),a3n=a("37820"),a3o=a(z),a3p=a("40665"),a3q=a(X),a3r=a("41801"),a3s=a(_),a3t=a("42977"),a3u=a(ah),a3v=a("44130"),a3w=a(P),a3x=a(z8),a3y=a(P),a3z=a("3924"),a3A=a(z8),a3B=a(p),a3C=a("27531"),a3D=a("33751"),a3E=a(z),a3F=a("36536"),a3G=a(X),a3H=a("37801"),a3I=a(_),a3J=a("39105"),a3K=a(ah),a3L=a("40389"),a3M=a(P),a3N=a(wL),a3O=a(P),a3P=a("3760"),a3Q=a(wL),a3R=a(p),a3S=a("25826"),a3T=a("31325"),a3U=a(z),a3V=a("34152"),a3W=a(X),a3X=a("35564"),a3Y=a(_),a3Z=a("36996"),a30=a(ah),a31=a("38406"),a32=a(P),a33=a(zI),a34=a(P),a35=a("3578"),a36=a(zI),a38=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a3j=[0,a(Q),nC,5,nC,32,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a2z=a(p),a2A=a("31476"),a2B=a("37933"),a2C=a(z),a2D=a("40787"),a2E=a(X),a2F=a("41927"),a2G=a(_),a2H=a("43106"),a2I=a(ah),a2J=a("44262"),a2K=a(P),a2L=a(wB),a2M=a(P),a2N=a("3936"),a2O=a(wB),a2P=a(p),a2Q=a("27614"),a2R=a("33853"),a2S=a(z),a2T=a("36646"),a2U=a(X),a2V=a("37915"),a2W=a(_),a2X=a("39222"),a2Y=a(ah),a2Z=a("40510"),a20=a(P),a21=a(E4),a22=a(P),a23=a("3771"),a24=a(E4),a25=a(p),a26=a("25904"),a27=a("31419"),a28=a(z),a29=a("34255"),a2_=a(X),a2$=a("35670"),a3a=a(_),a3b=a("37107"),a3c=a(ah),a3d=a("38521"),a3e=a(P),a3f=a(F1),a3g=a(P),a3h=a("3588"),a3i=a(F1),a3k=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bhL=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a2y=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a2v=[0,a(E),FZ,14,FZ,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a2t=a(p),a2u=a(p),a2w=[0,a(d),n7,10,n7,32,[0,a(D),[0,a(A),[0,a(e),0]]]],a2s=[0,a(d),n7,10,n7,32,[0,a(D),[0,a(A),[0,a(e),0]]]],a2n=[0,a(aO),vd,5,vd,16,[0,a(or),[0,a(bB),[0,a(aM),0]]]],a2k=a(gS),a2l=a(qA),a2m=a(ff),a2o=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a2j=[0,a(aO),hB,43,hB,70,[0,a(vz),[0,a(bB),[0,a(aM),0]]]],a2f=a(p),a2g=a(ff),a2h=a(gS),a2i=a(ff),a2p=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a2c=[0,a(Q),D9,5,D9,16,[0,a(or),[0,a(bn),[0,a(L),0]]]],a1$=a(gD),a2a=a(qX),a2b=a(fo),a2d=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1_=[0,a(Q),D_,31,D_,58,[0,a(vz),[0,a(bn),[0,a(L),0]]]],a16=a(p),a17=a(fo),a18=a(gD),a19=a(fo),a2e=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a15=[0,a(d),dp,47,dp,53,[0,a(D),[0,a(A),[0,a(e),0]]]],a1Z=[0,a(d),iS,14,iS,50,[0,a(D),[0,a(A),[0,a(e),0]]]],a1T=[0,a(E),hC,14,hC,64,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1P=[0,a(E),hq,14,hq,59,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1L=[0,a(Q),yz,14,yz,33,[0,a(CU),[0,a(bn),[0,a(L),0]]]],a1K=a(AF),a1G=[0,a(Q),B3,14,B3,33,[0,a(Cx),[0,a(bn),[0,a(L),0]]]],a1F=a(sh),a1B=[0,a(Q),Eu,14,Eu,41,[0,a(CU),[0,a(bn),[0,a(L),0]]]],a1A=a("390000"),a1w=[0,a(Q),Fj,14,Fj,41,[0,a(Cx),[0,a(bn),[0,a(L),0]]]],a1v=a(qI),a1r=[0,a(Q),FN,14,FN,41,[0,a("Article 36"),[0,a(bn),[0,a(L),0]]]],a1q=a(ig),a1m=[0,a(fc),C1,14,C1,36,[0,a(C5),[0,a(zb),0]]],a1k=a(vD),a1l=a(et),a1g=[0,a(Q),yd,14,yd,40,[0,a("Article 35"),[0,a(bn),[0,a(L),0]]]],a1f=a(kk),a1h=[0,a(d),ok,11,ok,37,[0,a(D),[0,a(A),[0,a(e),0]]]],a1e=[0,a(d),ok,11,ok,37,[0,a(D),[0,a(A),[0,a(e),0]]]],a1i=[0,a(V),[0,a("montant_forfaitaire_d842_6"),0]],a1n=[0,a(d),n$,11,n$,33,[0,a(D),[0,a(A),[0,a(e),0]]]],a1j=[0,a(d),n$,11,n$,33,[0,a(D),[0,a(A),[0,a(e),0]]]],a1o=[0,a(V),[0,a(FA),0]],a1s=[0,a(d),o8,11,o8,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1p=[0,a(d),o8,11,o8,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1t=[0,a(V),[0,a("montant_minimal_aide_d842_6"),0]],a1x=[0,a(d),lQ,11,lQ,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1u=[0,a(d),lQ,11,lQ,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1y=[0,a(V),[0,a("montant_forfaitaire_d842_11"),0]],a1C=[0,a(d),mT,11,mT,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1z=[0,a(d),mT,11,mT,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1D=[0,a(V),[0,a("montant_forfaitaire_d842_12"),0]],a1H=[0,a(d),oU,11,oU,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1E=[0,a(d),oU,11,oU,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1I=[0,a(V),[0,a("coefficient_d842_11"),0]],a1M=[0,a(d),mc,11,mc,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1J=[0,a(d),mc,11,mc,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1N=[0,a(V),[0,a("coefficient_d842_12"),0]],a1Q=[0,a(E),hq,14,hq,59,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1R=[0,a(V),[0,a(nh),0]],a1O=[0,a(E),hq,14,hq,59,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1U=[0,a(E),hC,14,hC,64,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1V=[0,a(V),[0,a(n2),0]],a1S=[0,a(E),hC,14,hC,64,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1W=[0,a(V),[0,a(gb),[0,a(kq),0]]],a1X=[0,a(V),[0,a(gb),[0,a(kq),0]]],a10=[0,a(d),iS,14,iS,50,[0,a(D),[0,a(A),[0,a(e),0]]]],a11=[0,a(V),[0,a(ky),0]],a1Y=[0,a(d),iS,14,iS,50,[0,a(D),[0,a(A),[0,a(e),0]]]],a12=[0,a(V),[0,a(eJ),[0,a(bk),0]]],a13=[0,a(V),[0,a(eJ),[0,a(bk),0]]],a2q=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a14=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a2r=[0,a(V),[0,a(qB),0]],a2x=[0,a(V),[0,a(bI),0]],bhM=[0,a(V),[0,a(b$),0]],bhS=[0,a(d),fU,11,fU,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bhN=[0,a(d),fU,11,fU,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bhT=[0,a(V),[0,a("seuil_minimal_ressources_m\xc3\xa9nage"),0]],bhX=[0,a(V),[0,a(de),0]],biq=[0,a(V),[0,a(dE),0]],biy=[0,a(d),iT,10,iT,15,[0,a(D),[0,a(A),[0,a(e),0]]]],bir=[0,a(d),iT,10,iT,15,[0,a(D),[0,a(A),[0,a(e),0]]]],biz=[0,a(V),[0,a(CW),0]],biQ=[0,a(d),h0,11,h0,36,[0,a(D),[0,a(A),[0,a(e),0]]]],biA=[0,a(d),h0,11,h0,36,[0,a(D),[0,a(A),[0,a(e),0]]]],biR=[0,a(V),[0,a("plafond_mensualit\xc3\xa9_d842_6"),0]],biU=[0,a(E),js,14,js,75,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biV=[0,a(V),[0,a(mK),0]],biS=[0,a(E),js,14,js,75,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biY=[0,a(E),hH,14,hH,69,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biZ=[0,a(V),[0,a(on),0]],biW=[0,a(E),hH,14,hH,69,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bi2=[0,a(E),hx,14,hx,70,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bi3=[0,a(V),[0,a(mz),0]],bi0=[0,a(E),hx,14,hx,70,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bi4=[0,a(V),[0,a(fI),[0,a(dP),0]]],bi5=[0,a(V),[0,a(fI),[0,a(dP),0]]],bi9=[0,a(d),ju,14,ju,59,[0,a(D),[0,a(A),[0,a(e),0]]]],bi_=[0,a(V),[0,a(xW),0]],bi6=[0,a(d),ju,14,ju,59,[0,a(D),[0,a(A),[0,a(e),0]]]],bjb=[0,a(d),iy,14,iy,61,[0,a(D),[0,a(A),[0,a(e),0]]]],bjc=[0,a(V),[0,a(zv),0]],bi$=[0,a(d),iy,14,iy,61,[0,a(D),[0,a(A),[0,a(e),0]]]],bjf=[0,a(d),jo,14,jo,67,[0,a(D),[0,a(A),[0,a(e),0]]]],bjg=[0,a(V),[0,a(vH),0]],bjd=[0,a(d),jo,14,jo,67,[0,a(D),[0,a(A),[0,a(e),0]]]],bjj=[0,a(d),iY,14,iY,65,[0,a(D),[0,a(A),[0,a(e),0]]]],bjk=[0,a(V),[0,a(Fy),0]],bjh=[0,a(d),iY,14,iY,65,[0,a(D),[0,a(A),[0,a(e),0]]]],bjn=[0,a(d),ii,14,ii,70,[0,a(D),[0,a(A),[0,a(e),0]]]],bjo=[0,a(V),[0,a(Cm),0]],bjl=[0,a(d),ii,14,ii,70,[0,a(D),[0,a(A),[0,a(e),0]]]],bjr=[0,a(d),i2,14,i2,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bjs=[0,a(V),[0,a(CB),0]],bjp=[0,a(d),i2,14,i2,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bjv=[0,a(d),hR,14,hR,53,[0,a(D),[0,a(A),[0,a(e),0]]]],bjw=[0,a(V),[0,a(Fb),0]],bjt=[0,a(d),hR,14,hR,53,[0,a(D),[0,a(A),[0,a(e),0]]]],bjA=[0,a(d),gG,14,gG,49,[0,a(D),[0,a(A),[0,a(e),0]]]],bjB=[0,a(V),[0,a(wp),0]],bjx=[0,a(d),gG,14,gG,49,[0,a(D),[0,a(A),[0,a(e),0]]]],bjI=[0,a(V),[0,a(nL),[0,a(au),0]]],bjJ=[0,a(V),[0,a(nL),[0,a(au),0]]],bjO=[0,a(d),gV,11,gV,47,[0,a(D),[0,a(A),[0,a(e),0]]]],bjK=[0,a(d),gV,11,gV,47,[0,a(D),[0,a(A),[0,a(e),0]]]],bjP=[0,a(V),[0,a("seuil_minimal_d\xc3\xa9pense_nette_minimale"),0]],bjS=[0,a(d),og,11,og,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bjQ=[0,a(d),og,11,og,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bjT=[0,a(V),[0,a(sq),0]],bjW=[0,a(d),kx,11,kx,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bjU=[0,a(d),kx,11,kx,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bjX=[0,a(V),[0,a(q_),0]],bj0=[0,a(d),kN,11,kN,38,[0,a(D),[0,a(A),[0,a(e),0]]]],bjY=[0,a(d),kN,11,kN,38,[0,a(D),[0,a(A),[0,a(e),0]]]],bj1=[0,a(V),[0,a(q7),0]],bj_=[0,a(V),[0,a(eK),0]],bkb=[0,a(d),m6,12,m6,31,[0,a(D),[0,a(A),[0,a(e),0]]]],bj$=[0,a(d),m6,12,m6,31,[0,a(D),[0,a(A),[0,a(e),0]]]],bkc=[0,a(V),[0,a(cX),0]],bkp=[0,a(V),[0,a(er),0]],bkE=[0,a(V),[0,a(bJ),0]],bkN=[0,a(V),[0,a(fl),0]],a1b=[0,a(E),yx,14,yx,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a08=[0,a(ao),[0,a(bJ),[0,a(ac),0]]],a09=[0,a(ao),[0,a(bJ),0]],a0_=[0,a(ao),[0,a(bJ),[0,a(ae),0]]],a0$=[0,a(ao),[0,a(bJ),0]],a1a=a(p),a1c=[0,a(d),na,10,na,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a07=[0,a(d),na,10,na,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a04=[0,a(E),xD,14,xD,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0T=[0,a(ao),[0,a(kE),[0,a(ac),0]]],a0U=[0,a(ao),[0,a(kE),0]],a0V=[0,a(ao),[0,a(kE),[0,a(ae),0]]],a0W=[0,a(ao),[0,a(kE),0]],a0X=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],a0Y=[0,a(bk),[0,a(bQ),0]],a0Z=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],a00=[0,a(bk),[0,a(bQ),0]],a01=a(kW),a02=a(p),a03=a(p),a05=[0,a(d),lS,10,lS,40,[0,a(N),[0,a(A),[0,a(e),0]]]],a0S=[0,a(d),lS,10,lS,40,[0,a(N),[0,a(A),[0,a(e),0]]]],a0P=[0,a(E),w0,14,w0,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0L=[0,a(ao),[0,a(er),[0,a(ac),0]]],a0M=[0,a(ao),[0,a(er),0]],a0N=[0,a(ao),[0,a(er),[0,a(ae),0]]],a0O=[0,a(ao),[0,a(er),0]],a0Q=[0,a(d),kz,10,kz,19,[0,a(N),[0,a(A),[0,a(e),0]]]],a0K=[0,a(d),kz,10,kz,19,[0,a(N),[0,a(A),[0,a(e),0]]]],a0H=[0,a(E),AM,14,AM,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0x=[0,a(ao),[0,a(bI),[0,a(ac),0]]],a0y=[0,a(ao),[0,a(bI),0]],a0z=[0,a(ao),[0,a(bI),[0,a(ae),0]]],a0A=[0,a(ao),[0,a(bI),0]],a0B=[0,a(ao),[0,a(eK),[0,a(ac),0]]],a0C=[0,a(ao),[0,a(eK),0]],a0D=[0,a(ao),[0,a(eK),[0,a(ae),0]]],a0E=[0,a(ao),[0,a(eK),0]],a0F=a(p),a0G=a(p),a0I=[0,a(d),l5,10,l5,32,[0,a(N),[0,a(A),[0,a(e),0]]]],a0w=[0,a(d),l5,10,l5,32,[0,a(N),[0,a(A),[0,a(e),0]]]],a0t=[0,a(E),DG,14,DG,33,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0p=[0,a(E),yF,14,yF,47,[0,a(CK),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0g=[0,a(ao),[0,a(de),[0,a(ac),0]]],a0h=[0,a(ao),[0,a(de),0]],a0i=[0,a(ao),[0,a(de),[0,a(ae),0]]],a0j=[0,a(ao),[0,a(de),0]],a0k=[0,a(ao),[0,a(de),[0,a(ac),0]]],a0l=[0,a(ao),[0,a(de),0]],a0m=[0,a(ao),[0,a(de),[0,a(ae),0]]],a0n=[0,a(ao),[0,a(de),0]],a0o=a(p),a0q=[0,a(d),n1,11,n1,44,[0,a(N),[0,a(A),[0,a(e),0]]]],a0f=[0,a(d),n1,11,n1,44,[0,a(N),[0,a(A),[0,a(e),0]]]],a0c=[0,a(E),Fd,14,Fd,27,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ_=[0,a(E),BG,14,BG,36,[0,a(CK),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ$=[0,a(d),md,11,md,33,[0,a(N),[0,a(A),[0,a(e),0]]]],aZ9=[0,a(d),md,11,md,33,[0,a(N),[0,a(A),[0,a(e),0]]]],aZ6=[0,a(E),y1,14,y1,41,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ0=[0,a(E),hw,14,hw,70,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZW=[0,a(E),h8,14,h8,69,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZS=[0,a(E),hW,14,hW,75,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZO=[0,a(E),D5,14,D5,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZM=a(p),aZN=a(p),aZP=[0,a(d),oB,10,oB,32,[0,a(N),[0,a(A),[0,a(e),0]]]],aZL=[0,a(d),oB,10,oB,32,[0,a(N),[0,a(A),[0,a(e),0]]]],aZH=[0,a(Q),yj,6,yj,79,[0,a(fF),[0,a(fZ),[0,a(L),0]]]],aZF=a("8708"),aZG=a("13559"),aZI=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZD=[0,a(Q),4153,6,4154,38,[0,a(fF),[0,a(fZ),[0,a(L),0]]]],aZB=a("21362"),aZC=a("33196"),aZE=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZy=[0,a(Q),rS,6,4172,24,[0,a(fF),[0,a(fZ),[0,a(L),0]]]],aZw=a(z$),aZx=a(Av),aZz=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZv=[0,a(Q),4135,6,4136,46,[0,a(fF),[0,a(fZ),[0,a(L),0]]]],aZt=a(z$),aZu=a(Av),aZA=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZr=[0,a(aO),su,6,su,79,[0,a(fF),[0,a(bB),[0,a(aM),0]]]],aZp=a("8414"),aZq=a("13100"),aZs=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZn=[0,a(aO),j6,6,747,38,[0,a(fF),[0,a(bB),[0,a(aM),0]]]],aZl=a("20640"),aZm=a("32073"),aZo=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZi=[0,a(aO),765,6,766,24,[0,a(fF),[0,a(bB),[0,a(aM),0]]]],aZg=a(D4),aZh=a(zP),aZj=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZf=[0,a(aO),727,6,728,46,[0,a(fF),[0,a(bB),[0,a(aM),0]]]],aZd=a(D4),aZe=a(zP),aZk=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aY_=[0,a(Q),CQ,14,CQ,41,[0,a(B2),[0,a(fZ),[0,a(L),0]]]],aY6=a(p),aY7=a(fo),aY8=a(gD),aY9=a(fo),aY$=[0,a(d),fC,12,fC,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aY4=[0,a(aO),Bq,14,Bq,41,[0,a(B2),[0,a(bB),[0,a(aM),0]]]],aY0=a(p),aY1=a(ff),aY2=a(gS),aY3=a(ff),aY5=[0,a(d),fC,12,fC,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aYU=[0,a(E),nN,14,nN,61,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYV=[0,a(E),nN,14,nN,61,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYW=[0,a(ao),[0,a(Eh),0]],aYR=[0,a(d),h7,14,h7,49,[0,a(N),[0,a(A),[0,a(e),0]]]],aYN=[0,a(d),i_,14,i_,53,[0,a(N),[0,a(A),[0,a(e),0]]]],aYJ=[0,a(d),iw,14,iw,44,[0,a(N),[0,a(A),[0,a(e),0]]]],aYF=[0,a(d),iA,14,iA,70,[0,a(N),[0,a(A),[0,a(e),0]]]],aYB=[0,a(d),hO,14,hO,65,[0,a(N),[0,a(A),[0,a(e),0]]]],aYx=[0,a(d),hl,14,hl,67,[0,a(N),[0,a(A),[0,a(e),0]]]],aYt=[0,a(d),iL,14,iL,61,[0,a(N),[0,a(A),[0,a(e),0]]]],aYp=[0,a(d),iP,14,iP,59,[0,a(N),[0,a(A),[0,a(e),0]]]],aYj=[0,a(d),f7,14,f7,50,[0,a(N),[0,a(A),[0,a(e),0]]]],aYd=[0,a(E),hu,14,hu,64,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aX$=[0,a(E),jq,14,jq,59,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aX7=[0,a(E),it,14,it,55,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aX3=[0,a(Q),yB,14,yB,51,[0,a("Article 44"),[0,a(fZ),[0,a(L),0]]]],aX2=a(qI),aXY=[0,a(Q),oM,14,oM,41,[0,a("Article 41"),[0,a(fZ),[0,a(L),0]]]],aXX=a(kk),aXT=[0,a(Q),Dm,14,Dm,42,[0,a("Article 42"),[0,a(fZ),[0,a(L),0]]]],aXS=a(ig),aXU=[0,a(d),i6,11,i6,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aXR=[0,a(d),i6,11,i6,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aXV=[0,a(ao),[0,a("montant_minimal_aide_d842_15"),0]],aXZ=[0,a(d),lY,11,lY,38,[0,a(N),[0,a(A),[0,a(e),0]]]],aXW=[0,a(d),lY,11,lY,38,[0,a(N),[0,a(A),[0,a(e),0]]]],aX0=[0,a(ao),[0,a("montant_forfaitaire_d842_15"),0]],aX4=[0,a(d),np,11,np,48,[0,a(N),[0,a(A),[0,a(e),0]]]],aX1=[0,a(d),np,11,np,48,[0,a(N),[0,a(A),[0,a(e),0]]]],aX5=[0,a(ao),[0,a("montant_minimal_d\xc3\xa9pense_nette_d842_17"),0]],aX8=[0,a(E),it,14,it,55,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aX9=[0,a(ao),[0,a(BA),0]],aX6=[0,a(E),it,14,it,55,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYa=[0,a(E),jq,14,jq,59,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYb=[0,a(ao),[0,a(nh),0]],aX_=[0,a(E),jq,14,jq,59,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYe=[0,a(E),hu,14,hu,64,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYf=[0,a(ao),[0,a(n2),0]],aYc=[0,a(E),hu,14,hu,64,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYg=[0,a(ao),[0,a(gb),[0,a(kw),0]]],aYh=[0,a(ao),[0,a(gb),[0,a(kw),0]]],aYk=[0,a(d),f7,14,f7,50,[0,a(N),[0,a(A),[0,a(e),0]]]],aYl=[0,a(ao),[0,a(ky),0]],aYi=[0,a(d),f7,14,f7,50,[0,a(N),[0,a(A),[0,a(e),0]]]],aYm=[0,a(ao),[0,a(eJ),[0,a(bk),0]]],aYn=[0,a(ao),[0,a(eJ),[0,a(bk),0]]],aYq=[0,a(d),iP,14,iP,59,[0,a(N),[0,a(A),[0,a(e),0]]]],aYr=[0,a(ao),[0,a(xW),0]],aYo=[0,a(d),iP,14,iP,59,[0,a(N),[0,a(A),[0,a(e),0]]]],aYu=[0,a(d),iL,14,iL,61,[0,a(N),[0,a(A),[0,a(e),0]]]],aYv=[0,a(ao),[0,a(zv),0]],aYs=[0,a(d),iL,14,iL,61,[0,a(N),[0,a(A),[0,a(e),0]]]],aYy=[0,a(d),hl,14,hl,67,[0,a(N),[0,a(A),[0,a(e),0]]]],aYz=[0,a(ao),[0,a(vH),0]],aYw=[0,a(d),hl,14,hl,67,[0,a(N),[0,a(A),[0,a(e),0]]]],aYC=[0,a(d),hO,14,hO,65,[0,a(N),[0,a(A),[0,a(e),0]]]],aYD=[0,a(ao),[0,a(Fy),0]],aYA=[0,a(d),hO,14,hO,65,[0,a(N),[0,a(A),[0,a(e),0]]]],aYG=[0,a(d),iA,14,iA,70,[0,a(N),[0,a(A),[0,a(e),0]]]],aYH=[0,a(ao),[0,a(Cm),0]],aYE=[0,a(d),iA,14,iA,70,[0,a(N),[0,a(A),[0,a(e),0]]]],aYK=[0,a(d),iw,14,iw,44,[0,a(N),[0,a(A),[0,a(e),0]]]],aYL=[0,a(ao),[0,a(CB),0]],aYI=[0,a(d),iw,14,iw,44,[0,a(N),[0,a(A),[0,a(e),0]]]],aYO=[0,a(d),i_,14,i_,53,[0,a(N),[0,a(A),[0,a(e),0]]]],aYP=[0,a(ao),[0,a(Fb),0]],aYM=[0,a(d),i_,14,i_,53,[0,a(N),[0,a(A),[0,a(e),0]]]],aYS=[0,a(d),h7,14,h7,49,[0,a(N),[0,a(A),[0,a(e),0]]]],aYT=[0,a(ao),[0,a(wp),0]],aYQ=[0,a(d),h7,14,h7,49,[0,a(N),[0,a(A),[0,a(e),0]]]],aYX=[0,a(ao),[0,a(nL),[0,a(au),0]]],aYY=[0,a(ao),[0,a(nL),[0,a(au),0]]],aZa=[0,a(d),fC,12,fC,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aYZ=[0,a(d),fC,12,fC,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aZb=[0,a(ao),[0,a(qB),0]],aZJ=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZc=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZK=[0,a(ao),[0,a(ve),0]],aZQ=[0,a(ao),[0,a(bI),0]],aZT=[0,a(E),hW,14,hW,75,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZU=[0,a(ao),[0,a(mK),0]],aZR=[0,a(E),hW,14,hW,75,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZX=[0,a(E),h8,14,h8,69,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZY=[0,a(ao),[0,a(on),0]],aZV=[0,a(E),h8,14,h8,69,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ1=[0,a(E),hw,14,hw,70,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ2=[0,a(ao),[0,a(mz),0]],aZZ=[0,a(E),hw,14,hw,70,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ3=[0,a(ao),[0,a(fI),[0,a(dP),0]]],aZ4=[0,a(ao),[0,a(fI),[0,a(dP),0]]],aZ7=[0,a(d),m9,12,m9,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aZ5=[0,a(d),m9,12,m9,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aZ8=[0,a(ao),[0,a(q7),0]],a0a=[0,a(ao),[0,a(de),0]],a0d=[0,a(d),nt,12,nt,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a0b=[0,a(d),nt,12,nt,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a0e=[0,a(ao),[0,a(FQ),0]],a0r=[0,a(ao),[0,a(eK),0]],a0u=[0,a(d),nG,12,nG,31,[0,a(N),[0,a(A),[0,a(e),0]]]],a0s=[0,a(d),nG,12,nG,31,[0,a(N),[0,a(A),[0,a(e),0]]]],a0v=[0,a(ao),[0,a(cX),0]],a0J=[0,a(ao),[0,a(er),0]],a0R=[0,a(ao),[0,a(kE),0]],a06=[0,a(ao),[0,a(bJ),0]],a1d=[0,a(ao),[0,a(fl),0]],aXN=[0,a(E),wh,24,wh,43,[0,a(Ft),[0,a(ss),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aXM=a(p),aXO=[0,a(d),ic,12,ic,31,[0,a(K),[0,a(A),[0,a(e),0]]]],aXL=[0,a(d),rd,14,rd,33,[0,a(K),[0,a(A),[0,a(e),0]]]],aXG=[0,a(E),vX,24,vX,46,[0,a(Ft),[0,a(ss),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aXH=[0,a(d),i$,12,i$,34,[0,a(K),[0,a(A),[0,a(e),0]]]],aXF=[0,a(d),Bi,14,Bi,36,[0,a(K),[0,a(A),[0,a(e),0]]]],aXB=[0,a(aD),[0,a(fl),[0,a(ac),0]]],aXC=[0,a(aD),[0,a(fl),0]],aXD=[0,a(aD),[0,a(fl),[0,a(ae),0]]],aXE=[0,a(aD),[0,a(fl),0]],aXI=[0,a(d),i$,12,i$,34,[0,a(K),[0,a(A),[0,a(e),0]]]],aXA=[0,a(d),i$,12,i$,34,[0,a(K),[0,a(A),[0,a(e),0]]]],aXv=[0,a(d),gC,14,gC,55,[0,a(K),[0,a(A),[0,a(e),0]]]],aXr=[0,a(d),eU,14,eU,59,[0,a(K),[0,a(A),[0,a(e),0]]]],aXn=[0,a(d),gM,14,gM,43,[0,a(K),[0,a(A),[0,a(e),0]]]],aXj=[0,a(d),hE,14,hE,42,[0,a(K),[0,a(A),[0,a(e),0]]]],aXf=[0,a(d),rT,5,rk,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aXb=[0,a(d),gH,14,gH,53,[0,a(K),[0,a(A),[0,a(e),0]]]],aW9=[0,a(d),jr,14,jr,37,[0,a(K),[0,a(A),[0,a(e),0]]]],aW5=[0,a(d),jd,14,jd,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aW1=[0,a(d),hz,14,hz,58,[0,a(K),[0,a(A),[0,a(e),0]]]],aWX=[0,a(d),ik,14,ik,46,[0,a(K),[0,a(A),[0,a(e),0]]]],aWT=[0,a(d),i7,14,i7,78,[0,a(K),[0,a(A),[0,a(e),0]]]],aWP=[0,a(d),hI,14,hI,60,[0,a(K),[0,a(A),[0,a(e),0]]]],aWL=[0,a(d),jh,14,jh,48,[0,a(K),[0,a(A),[0,a(e),0]]]],aWM=[0,a(d),jh,14,jh,48,[0,a(K),[0,a(A),[0,a(e),0]]]],aWN=[0,a(bh),[0,a("calcul_apl_locatif.loyer_principal_base"),0]],aWK=[0,a(d),jh,14,jh,48,[0,a(K),[0,a(A),[0,a(e),0]]]],aWQ=[0,a(d),hI,14,hI,60,[0,a(K),[0,a(A),[0,a(e),0]]]],aWR=[0,a(bh),[0,a("calcul_apl_locatif.ressources_m\xc3\xa9nage_arrondies"),0]],aWO=[0,a(d),hI,14,hI,60,[0,a(K),[0,a(A),[0,a(e),0]]]],aWU=[0,a(d),i7,14,i7,78,[0,a(K),[0,a(A),[0,a(e),0]]]],aWV=[0,a(bh),[0,a("calcul_apl_locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),0]],aWS=[0,a(d),i7,14,i7,78,[0,a(K),[0,a(A),[0,a(e),0]]]],aWY=[0,a(d),ik,14,ik,46,[0,a(K),[0,a(A),[0,a(e),0]]]],aWZ=[0,a(bh),[0,a("calcul_apl_locatif.date_courante"),0]],aWW=[0,a(d),ik,14,ik,46,[0,a(K),[0,a(A),[0,a(e),0]]]],aW2=[0,a(d),hz,14,hz,58,[0,a(K),[0,a(A),[0,a(e),0]]]],aW3=[0,a(bh),[0,a("calcul_apl_locatif.nombre_personnes_\xc3\xa0_charge"),0]],aW0=[0,a(d),hz,14,hz,58,[0,a(K),[0,a(A),[0,a(e),0]]]],aW6=[0,a(d),jd,14,jd,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aW7=[0,a(bh),[0,a("calcul_apl_locatif.situation_familiale_calcul_apl"),0]],aW4=[0,a(d),jd,14,jd,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aW_=[0,a(d),jr,14,jr,37,[0,a(K),[0,a(A),[0,a(e),0]]]],aW$=[0,a(bh),[0,a("calcul_apl_locatif.zone"),0]],aW8=[0,a(d),jr,14,jr,37,[0,a(K),[0,a(A),[0,a(e),0]]]],aXc=[0,a(d),gH,14,gH,53,[0,a(K),[0,a(A),[0,a(e),0]]]],aXd=[0,a(bh),[0,a("calcul_apl_locatif.logement_est_chambre"),0]],aXa=[0,a(d),gH,14,gH,53,[0,a(K),[0,a(A),[0,a(e),0]]]],aXg=[0,a(d),rT,5,rk,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aXh=[0,a(bh),[0,a("calcul_apl_locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),0]],aXe=[0,a(d),rT,5,rk,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aXk=[0,a(d),hE,14,hE,42,[0,a(K),[0,a(A),[0,a(e),0]]]],aXl=[0,a(bh),[0,a("calcul_apl_locatif.type_aide"),0]],aXi=[0,a(d),hE,14,hE,42,[0,a(K),[0,a(A),[0,a(e),0]]]],aXo=[0,a(d),gM,14,gM,43,[0,a(K),[0,a(A),[0,a(e),0]]]],aXp=[0,a(bh),[0,a("calcul_apl_locatif.colocation"),0]],aXm=[0,a(d),gM,14,gM,43,[0,a(K),[0,a(A),[0,a(e),0]]]],aXs=[0,a(d),eU,14,eU,59,[0,a(K),[0,a(A),[0,a(e),0]]]],aXt=[0,a(bh),[0,a("calcul_apl_locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),0]],aXq=[0,a(d),eU,14,eU,59,[0,a(K),[0,a(A),[0,a(e),0]]]],aXw=[0,a(d),gC,14,gC,55,[0,a(K),[0,a(A),[0,a(e),0]]]],aXx=[0,a(bh),[0,a("calcul_apl_locatif.logement_meubl\xc3\xa9_d842_2"),0]],aXu=[0,a(d),gC,14,gC,55,[0,a(K),[0,a(A),[0,a(e),0]]]],aXy=[0,a(bh),[0,a(E_),[0,a(aD),0]]],aXz=[0,a(bh),[0,a(E_),[0,a(aD),0]]],aXJ=[0,a(bh),[0,a(aw),0]],aXP=[0,a(d),ic,12,ic,31,[0,a(K),[0,a(A),[0,a(e),0]]]],aXK=[0,a(d),ic,12,ic,31,[0,a(K),[0,a(A),[0,a(e),0]]]],aXQ=[0,a(bh),[0,a(cX),0]],aWE=[0,a(mr),67,5,71,21,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],aWF=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWD=[0,a(mr),56,5,57,50,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],aWG=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWH=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWC=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWI=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWB=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWx=[0,a(mr),77,5,81,24,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],aWy=[0,a(bG),41,12,41,31,[0,a(bK),0]],aWw=[0,a(bG),41,12,41,31,[0,a(bK),0]],aWz=[0,a(bG),41,12,41,31,[0,a(bK),0]],aWv=[0,a(bG),41,12,41,31,[0,a(bK),0]],aWr=[0,a(q9),62,18,62,41,[0,a(xH),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(c7),[0,a(af),0]]]]]]],aWp=a(oS),aWq=a(n0),aWs=[0,a(bG),42,11,42,27,[0,a(bK),0]],aWo=[0,a(q9),31,14,31,30,[0,a(lU),[0,a(nR),[0,a(ed),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],aWm=a(oS),aWn=a(n0),aWb=[5,0],aWc=[4,0],aWd=[3,0],aWe=[2,0],aWf=[1,0],aWg=[0,0],aWh=[0,a(mr),dm,5,w5,30,[0,a(CJ),[0,a(yw),[0,a(ke),[0,a(d0),[0,a(ab),[0,a(af),0]]]]]]],aWi=[0,a(bG),44,12,44,35,[0,a(bK),0]],aWa=[0,a(bG),44,12,44,35,[0,a(bK),0]],aV6=[0,a(bG),51,14,51,28,[0,a(bK),0]],aV2=[0,a(bG),52,14,52,32,[0,a(bK),0]],aVY=[0,a(q9),21,14,21,26,[0,a(lU),[0,a(nR),[0,a(ed),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],aVZ=[0,a(bG),43,12,43,24,[0,a(bK),0]],aVX=[0,a(bG),43,12,43,24,[0,a(bK),0]],aV0=[0,a(cq),[0,a(y7),0]],aV3=[0,a(bG),52,14,52,32,[0,a(bK),0]],aV4=[0,a(cq),[0,a(Fa),0]],aV1=[0,a(bG),52,14,52,32,[0,a(bK),0]],aV7=[0,a(bG),51,14,51,28,[0,a(bK),0]],aV8=[0,a(cq),[0,a(DE),0]],aV5=[0,a(bG),51,14,51,28,[0,a(bK),0]],aV9=[0,a(cq),[0,a(ge),[0,a(ho),0]]],aV_=[0,a(cq),[0,a(ge),[0,a(ho),0]]],aWj=[0,a(bG),44,12,44,35,[0,a(bK),0]],aV$=[0,a(bG),44,12,44,35,[0,a(bK),0]],aWk=[0,a(cq),[0,a(vk),0]],aWt=[0,a(bG),42,11,42,27,[0,a(bK),0]],aWl=[0,a(bG),42,11,42,27,[0,a(bK),0]],aWu=[0,a(cq),[0,a(Ae),0]],aWA=[0,a(cq),[0,a(iU),0]],aWJ=[0,a(cq),[0,a(dh),0]],aVS=[0,a(E),r2,14,r2,32,[0,a(mE),[0,a(iC),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVQ=a(cI),aVR=a(p),aVL=[0,a(E),aR,6,gV,35,[0,a("Article R822-20"),[0,a("Sous-section 3 : Montant forfaitaire de ressources applicable aux \xc3\xa9tudiants"),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVM=[0,a(d),jk,12,jk,39,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVK=[0,a(E),kC,14,kC,41,[0,a(l1),[0,a(l4),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVG=[0,a(E),F8,14,F8,32,[0,a("Article R822-8"),[0,a(iC),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVF=a(p),aVz=[0,a(E),ir,14,ir,65,[0,a(mE),[0,a(iC),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVv=[0,a(E),y0,14,y0,33,[0,a("Article R822-10"),[0,a(iC),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVm=a(p),aVn=a(p),aVs=a(X),aVt=a("90100"),aVu=a("135000"),aVo=a(p),aVp=a(p),aVq=a(p),aVr=a(p),aVi=[0,a(E),iv,14,iv,62,[0,a(l1),[0,a(l4),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVh=a(p),aVd=[0,a(d),f5,51,f5,57,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU$=[0,a(Q),11,14,11,41,[0,a("Article 3"),[0,a(xI),[0,a(L),0]]]],aU_=a("9500"),aU6=[0,a(Q),21,14,21,41,[0,a("Article 4"),[0,a(xI),[0,a(L),0]]]],aU5=a("258900"),aU1=[0,a(d),E2,46,E2,52,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU2=[0,a(d),jf,10,jf,15,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU0=[0,a(d),jf,10,jf,15,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU3=[0,a(dX),[0,a(CW),0]],aU7=[0,a(d),lV,11,lV,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU4=[0,a(d),lV,11,lV,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU8=[0,a(dX),[0,a("montant_forfaitaire_r_822_8"),0]],aVa=[0,a(d),mt,11,mt,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU9=[0,a(d),mt,11,mt,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVb=[0,a(dX),[0,a("montant_forfaitaire_r_822_7"),0]],aVe=[0,a(d),f5,11,f5,42,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVc=[0,a(d),f5,11,f5,42,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVf=[0,a(dX),[0,a("ressources_forfaitaires_r822_20"),0]],aVj=[0,a(d),hk,11,hk,59,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVg=[0,a(d),hk,11,hk,59,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVk=[0,a(dX),[0,a("ressources_personnes_vivant_habituellement_foyer"),0]],aVw=[0,a(d),nV,11,nV,30,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVl=[0,a(d),nV,11,nV,30,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVx=[0,a(dX),[0,a("abattement_r_822_10"),0]],aVA=[0,a(E),ir,14,ir,65,[0,a(mE),[0,a(iC),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVB=[0,a(dX),[0,a(DV),0]],aVy=[0,a(E),ir,14,ir,65,[0,a(mE),[0,a(iC),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVC=[0,a(dX),[0,a(mS),[0,a(f_),0]]],aVD=[0,a(dX),[0,a(mS),[0,a(f_),0]]],aVH=[0,a(d),nA,11,nA,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVE=[0,a(d),nA,11,nA,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVI=[0,a(dX),[0,a("abattement_r_822_8"),0]],aVN=[0,a(d),jk,12,jk,39,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVJ=[0,a(d),jk,12,jk,39,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVO=[0,a(dX),[0,a("ressources_prises_en_compte"),0]],aVT=[0,a(d),mu,11,mu,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVP=[0,a(d),mu,11,mu,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVU=[0,a(dX),[0,a("abattement_r_822_7"),0]],aVV=[0,a(E),my,13,Dl,74,[0,a(l1),[0,a(l4),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVW=[0,a(E),my,13,Dl,74,[0,a(l1),[0,a(l4),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aUQ=[0,a(d),j5,14,j5,56,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUM=[0,a(d),B1,14,B1,63,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUK=a(b5),aUL=a(b5),aUG=[0,a(E),fb,14,fb,49,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUC=[0,a(aU),[0,a(kM),[0,a(ac),0]]],aUD=[0,a(aU),[0,a(kM),0]],aUE=[0,a(aU),[0,a(kM),[0,a(ae),0]]],aUF=[0,a(aU),[0,a(kM),0]],aUw=a(Dk),aUv=[0,a(E),1213,4,1219,48,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUx=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUq=[0,a(aU),[0,a(fj),[0,a(ac),0]]],aUr=[0,a(aU),[0,a(fj),0]],aUs=[0,a(aU),[0,a(fj),[0,a(ae),0]]],aUt=[0,a(aU),[0,a(fj),0]],aUu=[0,a(E),x5,5,x5,44,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUy=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUo=[0,a(E),1149,5,rW,44,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUp=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUn=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUz=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUm=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUh=a(Dk),aUi=[0,0],aUg=[0,a(E),1173,5,1189,10,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUj=[0,a(d),fp,12,fp,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUf=[0,a(d),fp,12,fp,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUk=[0,a(d),fp,12,fp,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUe=[0,a(d),fp,12,fp,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUa=[0,a(d),An,5,u9,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUb=[0,a(d),fE,12,fE,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT$=[0,a(d),fE,12,fE,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT7=[0,a(c8),Gd,14,Gd,31,[0,a("Article L351-8"),[0,a("Section 5 : Taux et montant de la pension"),[0,a("Chapitre 1er : Ouverture du droit, liquidation et calcul des pensions de retraite"),[0,a("Titre V : Assurance vieillesse - Assurance veuvage"),[0,a("Livre III : Dispositions relatives aux assurances sociales et \xc3\xa0 diverses cat\xc3\xa9gories de personnes rattach\xc3\xa9es au r\xc3\xa9gime g\xc3\xa9n\xc3\xa9rale"),[0,a(ab),[0,a(af),0]]]]]]]],aT1=[0,a(aG),72,5,73,52,[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]],aT2=[0,a(d),dz,11,dz,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT0=[0,a(aG),65,5,68,52,[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]],aT3=[0,a(d),dz,11,dz,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTZ=[0,a(d),dz,11,dz,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTS=[0,a(aG),hU,18,hU,75,[0,a(mB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTR=a(p),aTT=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTO=[5,0],aTP=[4,0],aTQ=[0,a(aG),vK,18,At,45,[0,a(mB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTN=a(p),aTU=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTM=[0,a(E),Cp,5,Cp,58,[0,a(EY),[0,a(Ei),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aTV=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTL=[0,a(aG),hm,33,hm,58,[0,a(mB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTK=a(p),aTG=[0,a(c8),cs,14,cs,32,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(ab),[0,a(af),0]]]]]]]]]],aTB=[0,a(aG),FS,18,FS,44,[0,a("Article L822-10"),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTC=[0,a(d),fq,11,fq,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTA=[0,a(d),fq,11,fq,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTt=a(b5),aTs=a(b5),aTr=[0,a(aG),171,5,rC,65,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTu=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTq=[0,a(aG),156,5,158,30,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTv=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTp=[0,a(aG),cs,5,w5,33,[0,a(F5),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTw=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTo=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTi=[0,a(aG),203,5,208,39,[0,a(DR),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTj=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTh=[0,a(aG),197,5,198,34,[0,a(DR),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTk=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTg=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTb=[0,a(c8),329,5,An,34,[0,a(rV),[0,a(rB),[0,a(r3),[0,a(qK),[0,a(ro),[0,a(a9),[0,a(af),0]]]]]]]],aTa=a("999840"),aTc=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS_=[0,a(c8),j5,5,335,34,[0,a(rV),[0,a(rB),[0,a(r3),[0,a(qK),[0,a(ro),[0,a(a9),[0,a(af),0]]]]]]]],aS9=a("1041840"),aS$=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS7=[0,a(c8),339,5,340,34,[0,a(rV),[0,a(rB),[0,a(r3),[0,a(qK),[0,a(ro),[0,a(a9),[0,a(af),0]]]]]]]],aS6=a("1083840"),aS8=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS4=[0,a(fc),58,5,59,33,[0,a('Circulaire de la CNAV 2023-3 du 09/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2023"'),[0,a(sb),0]]],aS3=a("1153302"),aS5=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS1=[0,a(fc),90,5,91,33,[0,a('Circulaire de la CNAV 2022-3 du 11/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2022"'),[0,a(sb),0]]],aS0=a("1100144"),aS2=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSY=[0,a(fc),fe,5,kC,33,[0,a('Circulaire de la CNAV 2021-1 du 11/01/2021 "Revalorisation \xc3\xa0 compter du 1er janvier 2021"'),[0,a(sb),0]]],aSX=a("1088175"),aSZ=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSS=[0,a(aG),c4,5,ie,67,[0,a(F5),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aST=[0,a(d),f1,11,f1,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSR=[0,a(d),f1,11,f1,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSN=[0,a(aG),mg,14,mg,40,[0,a(mB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aSH=[0,a(c8),fe,14,fe,61,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(ab),[0,a(af),0]]]]]]]]]],aSB=[0,a(aG),46,5,46,41,[0,a("Article L821-2"),[0,a(z0),[0,a(E1),[0,a(yn),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]]]],aSC=[0,a(d),di,12,di,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSA=[0,a(d),di,12,di,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSD=[0,a(d),di,12,di,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSe=a(z),aSq=a(X),aSr=a(X),aSs=a(X),aSt=a(z),aSu=a(X),aSf=a(qD),aSg=a(qD),aSl=a(lZ),aSm=a(lZ),aSn=a(lZ),aSo=a(qD),aSp=a(lZ),aSh=a("8"),aSi=a(CI),aSj=a(CI),aSk=[0,a(E),1035,5,dC,65,[0,a("Article R822-25"),[0,a("Section 3 : Conditions relatives au logement"),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aSv=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSd=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSw=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR_=[0,a(aG),E5,18,E5,67,[0,a("Article L822-8"),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aR$=[0,a(d),fH,11,fH,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR9=[0,a(d),fH,11,fH,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR4=[0,a(aG),Cc,18,Cc,61,[0,a("Article L822-9"),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aR5=[0,a(d),fY,11,fY,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR3=[0,a(d),fY,11,fY,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRZ=[0,a(aG),eY,14,eY,43,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aRV=[0,a(E),i6,14,i6,37,[0,a(EY),[0,a(Ei),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aRU=a("3000000"),aRQ=[0,a(E),a_,14,a_,41,[0,a(FB),[0,a(Bv),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRP=a(DO),aRL=[0,a(E),be,14,be,42,[0,a(FB),[0,a(Bv),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRK=a(DO),aRG=[0,a(d),hV,11,hV,48,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRC=[0,a(d),hG,11,hG,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRD=[0,a(d),hG,11,hG,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRB=[0,a(d),hG,11,hG,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRE=[0,a(aU),[0,a("condition_pr\xc3\xaat"),0]],aRH=[0,a(d),hV,11,hV,48,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRF=[0,a(d),hV,11,hV,48,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRI=[0,a(aU),[0,a("condition_peuplement_logement_l822_10"),0]],aRM=[0,a(d),ox,11,ox,39,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRJ=[0,a(d),ox,11,ox,39,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRN=[0,a(aU),[0,a("seuil_l822_3_parts_propri\xc3\xa9t\xc3\xa9"),0]],aRR=[0,a(d),nI,11,nI,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRO=[0,a(d),nI,11,nI,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRS=[0,a(aU),[0,a("seuil_l822_3_parts_usufruit"),0]],aRW=[0,a(d),o0,11,o0,34,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRT=[0,a(d),o0,11,o0,34,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRX=[0,a(aU),[0,a("seuil_l822_5_patrimoine"),0]],aR0=[0,a(d),l2,11,l2,40,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRY=[0,a(d),l2,11,l2,40,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR1=[0,a(aU),[0,a("usufruit_ou_propri\xc3\xa9t\xc3\xa9_famille"),0]],aR6=[0,a(d),fY,11,fY,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR2=[0,a(d),fY,11,fY,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR7=[0,a(aU),[0,a("condition_non_ouverture_l822_9_decence_logement"),0]],aSa=[0,a(d),fH,11,fH,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR8=[0,a(d),fH,11,fH,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSb=[0,a(aU),[0,a("condition_non_ouverture_l822_8"),0]],aSx=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSc=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSy=[0,a(aU),[0,a("condition_logement_surface"),0]],aSE=[0,a(d),di,12,di,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSz=[0,a(d),di,12,di,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSF=[0,a(aU),[0,a("condition_logement_r\xc3\xa9sidence_principale"),0]],aSI=[0,a(c8),fe,14,fe,61,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(ab),[0,a(af),0]]]]]]]]]],aSJ=[0,a(aU),[0,a("ouverture_droits_retraite.date_naissance_assur\xc3\xa9"),0]],aSG=[0,a(c8),fe,14,fe,61,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(ab),[0,a(af),0]]]]]]]]]],aSK=[0,a(aU),[0,a(CF),[0,a(rK),0]]],aSL=[0,a(aU),[0,a(CF),[0,a(rK),0]]],aSO=[0,a(d),mh,11,mh,37,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSM=[0,a(d),mh,11,mh,37,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSP=[0,a(aU),[0,a("patrimoine_total_demandeur"),0]],aSU=[0,a(d),f1,11,f1,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSQ=[0,a(d),f1,11,f1,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSV=[0,a(aU),[0,a("condition_nationalit\xc3\xa9"),0]],aTd=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSW=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTe=[0,a(aU),[0,a("plafond_individuel_l815_9_s\xc3\xa9cu"),0]],aTl=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTf=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTm=[0,a(aU),[0,a("condition_logement_location_tiers"),0]],aTx=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTn=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTy=[0,a(aU),[0,a("condition_logement_mode_occupation"),0]],aTD=[0,a(d),fq,11,fq,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTz=[0,a(d),fq,11,fq,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTE=[0,a(aU),[0,a("condition_ouverture_l822_10_peuplement_logement"),0]],aTH=[0,a(d),mn,11,mn,29,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTF=[0,a(d),mn,11,mn,29,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTI=[0,a(aU),[0,a("\xc3\xa2ge_l161_17_2_s\xc3\xa9cu"),0]],aTW=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTJ=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTX=[0,a(aU),[0,a("patrimoine_pris_en_compte"),0]],aT4=[0,a(d),dz,11,dz,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTY=[0,a(d),dz,11,dz,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT5=[0,a(aU),[0,a(A$),0]],aT8=[0,a(d),ib,11,ib,28,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT6=[0,a(d),ib,11,ib,28,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT9=[0,a(aU),[0,a("\xc3\xa2ge_l351_8_1_s\xc3\xa9cu"),0]],aUc=[0,a(d),fE,12,fE,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT_=[0,a(d),fE,12,fE,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUd=[0,a(aU),[0,a(n_),0]],aUl=[0,a(aU),[0,a(fj),0]],aUA=[0,a(aU),[0,a(kM),0]],aUH=[0,a(d),kV,11,kV,46,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUB=[0,a(d),kV,11,kV,46,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUI=[0,a(aU),[0,a("personnes_\xc3\xa0_charge_prises_en_compte"),0]],aUN=[0,a(d),oC,12,oC,61,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUJ=[0,a(d),oC,12,oC,61,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUO=[0,a(aU),[0,a(kD),0]],aUR=[0,a(d),n4,12,n4,54,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUP=[0,a(d),n4,12,n4,54,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUS=[0,a(aU),[0,a(r7),0]],aUU=a(qz),aUT=[0,a(aG),mq,13,mq,47,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aUY=[0,a(aG),mq,13,mq,47,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aUW=a(qz),aUV=[0,a(aG),jt,13,jt,48,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aUX=[0,a(aG),jt,13,jt,48,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aRy=[0,a(E),Dr,14,Dr,36,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRt=[0,a(aj),[0,a(bJ),[0,a(ac),0]]],aRu=[0,a(aj),[0,a(bJ),0]],aRv=[0,a(aj),[0,a(bJ),[0,a(ae),0]]],aRw=[0,a(aj),[0,a(bJ),0]],aRx=a(p),aRz=[0,a(d),hr,10,hr,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRs=[0,a(d),hr,10,hr,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRp=[0,a(E),yN,14,yN,33,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRn=a(p),aRo=a(p),aRj=[0,a(E),wW,14,wW,36,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQ_=[0,a(aj),[0,a(eN),[0,a(ac),0]]],aQ$=[0,a(aj),[0,a(eN),0]],aRa=[0,a(aj),[0,a(eN),[0,a(ae),0]]],aRb=[0,a(aj),[0,a(eN),0]],aRc=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],aRd=[0,a(bk),[0,a(bQ),0]],aRe=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],aRf=[0,a(bk),[0,a(bQ),0]],aRg=a(kW),aRh=a(p),aRi=a(p),aRk=[0,a(d),mZ,10,mZ,40,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ9=[0,a(d),mZ,10,mZ,40,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ6=[0,a(E),Fo,14,Fo,49,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQ4=a(hf),aQ5=a(hf),aQ0=[0,a(E),u3,14,u3,33,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQW=[0,a(E),yJ,14,yJ,36,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQM=[0,a(aj),[0,a(bI),[0,a(ac),0]]],aQN=[0,a(aj),[0,a(bI),0]],aQO=[0,a(aj),[0,a(bI),[0,a(ae),0]]],aQP=[0,a(aj),[0,a(bI),0]],aQQ=[0,a(aj),[0,a(kO),[0,a(ac),0]]],aQR=[0,a(aj),[0,a(kO),0]],aQS=[0,a(aj),[0,a(kO),[0,a(ae),0]]],aQT=[0,a(aj),[0,a(kO),0]],aQU=a(p),aQV=a(p),aQX=[0,a(d),n3,10,n3,20,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQL=[0,a(d),n3,10,n3,20,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQI=[0,a(E),yh,14,yh,49,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQF=a(c5),aQG=a(c5),aQH=a(lX),aQA=[0,a(E),3426,5,3438,77,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQy=a(cI),aQz=a(b5),aQB=[0,a(d),fV,12,fV,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQw=[0,a(E),Dt,5,Dt,75,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQx=[0,a(d),fV,12,fV,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQp=[0,a(aO),DF,14,DF,42,[0,a(ja),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aQo=a(df),aQq=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQn=[0,a(aO),hk,14,hk,42,[0,a(ja),[0,a(bB),[0,a(aM),0]]]],aQm=a(df),aQr=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQl=[0,a(Q),xl,14,xl,42,[0,a(ja),[0,a(aQ),[0,a(L),0]]]],aQk=a(df),aQs=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQg=[0,a(E),Ew,14,Ew,55,[0,a(rN),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQb=[0,a(aj),[0,a(kv),[0,a(ac),0]]],aQc=[0,a(aj),[0,a(kv),0]],aQd=[0,a(aj),[0,a(kv),[0,a(ae),0]]],aQe=[0,a(aj),[0,a(kv),0]],aQf=a(p),aQh=[0,a(d),m5,11,m5,52,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQa=[0,a(d),m5,11,m5,52,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aP9=[0,a(E),Ap,14,Ap,49,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP8=a(hf),aP2=[0,a(E),jj,14,jj,70,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPY=[0,a(E),ji,14,ji,69,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPU=[0,a(E),h3,14,h3,75,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPP=[0,a(E),zV,5,zV,44,[0,a(Bh),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPH=[0,a(aj),[0,a(dA),[0,a(ac),0]]],aPI=[0,a(aj),[0,a(dA),0]],aPJ=[0,a(aj),[0,a(dA),[0,a(ae),0]]],aPK=[0,a(aj),[0,a(dA),0]],aPL=[0,a(aj),[0,a(dA),[0,a(ac),0]]],aPM=[0,a(aj),[0,a(dA),0]],aPN=[0,a(aj),[0,a(dA),[0,a(ae),0]]],aPO=[0,a(aj),[0,a(dA),0]],aPQ=[0,a(d),hN,10,hN,14,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPG=[0,a(E),Cr,14,Cr,42,[0,a(Bh),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPC=[0,a(aj),[0,a(dA),[0,a(ac),0]]],aPD=[0,a(aj),[0,a(dA),0]],aPE=[0,a(aj),[0,a(dA),[0,a(ae),0]]],aPF=[0,a(aj),[0,a(dA),0]],aPx=[0,a(E),xz,5,xz,40,[0,a(rN),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPy=[0,a(d),jg,11,jg,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPw=[0,a(E),D3,14,D3,44,[0,a(rN),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPz=[0,a(d),jg,11,jg,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPv=[0,a(d),jg,11,jg,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPs=[0,a(E),zD,14,zD,36,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPm=[0,a(Q),gH,5,821,36,[0,a(aQ),[0,a(L),0]]],aPg=a(p),aPh=a("86900"),aPi=a("97100"),aPj=a(z),aPk=a("10200"),aPl=a("107300"),aPn=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPd=[0,a(Q),gP,5,dw,36,[0,a(aQ),[0,a(L),0]]],aOX=a(p),aOY=a(w_),aOZ=a(vW),aO0=a(z),aO1=a(Ga),aO2=a(yO),aO3=a(p),aO4=a(AG),aO5=a(Es),aO6=a(z),aO7=a(wi),aO8=a(z_),aO9=a(p),aO_=a(zf),aO$=a(ER),aPa=a(z),aPb=a("34600"),aPc=a(mk),aPe=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aOV=[0,a(Q),gB,5,1098,36,[0,a(aQ),[0,a(L),0]]],aOD=a(p),aOE=a(yt),aOF=a(rM),aOG=a(z),aOH=a(Gb),aOI=a(Ci),aOJ=a(p),aOK=a(EG),aOL=a(ra),aOM=a(z),aON=a(os),aOO=a(Al),aOP=a(p),aOQ=a(DS),aOR=a(Fp),aOS=a(z),aOT=a(Ds),aOU=a(x6),aOW=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aOB=[0,a(Q),sw,5,gL,36,[0,a(aQ),[0,a(L),0]]],aOj=a(p),aOk=a("198100"),aOl=a("239000"),aOm=a(z),aOn=a("40900"),aOo=a("279900"),aOp=a(p),aOq=a("176800"),aOr=a("212800"),aOs=a(z),aOt=a("36000"),aOu=a("248800"),aOv=a(p),aOw=a("165000"),aOx=a("197900"),aOy=a(z),aOz=a("32900"),aOA=a("230800"),aOC=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aOh=[0,a(Q),1160,5,1164,36,[0,a(aQ),[0,a(L),0]]],aN1=a(p),aN2=a("159500"),aN3=a(wF),aN4=a(z),aN5=a("33000"),aN6=a(yH),aN7=a(p),aN8=a("142200"),aN9=a("171200"),aN_=a(z),aN$=a("29000"),aOa=a("200200"),aOb=a(p),aOc=a("132800"),aOd=a("159300"),aOe=a(z),aOf=a("26500"),aOg=a(yq),aOi=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aNZ=[0,a(Q),1193,5,Gc,36,[0,a(aQ),[0,a(L),0]]],aNH=a(p),aNI=a("200100"),aNJ=a("141400"),aNK=a(z),aNL=a("41300"),aNM=a("182700"),aNN=a(p),aNO=a("178600"),aNP=a("215000"),aNQ=a(z),aNR=a("36400"),aNS=a("251400"),aNT=a(p),aNU=a("166700"),aNV=a(q0),aNW=a(z),aNX=a("33200"),aNY=a("233100"),aN0=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aNF=[0,a(Q),1226,5,1230,36,[0,a(aQ),[0,a(L),0]]],aNn=a(p),aNo=a("161100"),aNp=a("194400"),aNq=a(z),aNr=a("33300"),aNs=a("227700"),aNt=a(p),aNu=a("143600"),aNv=a("172900"),aNw=a(z),aNx=a("29300"),aNy=a("202200"),aNz=a(p),aNA=a("134100"),aNB=a("160900"),aNC=a(z),aND=a("26800"),aNE=a("187700"),aNG=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aNl=[0,a(Q),1259,5,1263,36,[0,a(aQ),[0,a(L),0]]],aM5=a(p),aM6=a(rM),aM7=a("244300"),aM8=a(z),aM9=a("41800"),aM_=a("286100"),aM$=a(p),aNa=a("180700"),aNb=a("217500"),aNc=a(z),aNd=a("36800"),aNe=a("254300"),aNf=a(p),aNg=a("168700"),aNh=a("202300"),aNi=a(z),aNj=a("33600"),aNk=a("235900"),aNm=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aM3=[0,a(Q),1292,5,1296,36,[0,a(aQ),[0,a(L),0]]],aML=a(p),aMM=a("30871"),aMN=a("37243"),aMO=a(z),aMP=a("6372"),aMQ=a("43615"),aMR=a(p),aMS=a("27548"),aMT=a("33148"),aMU=a(z),aMV=a("5610"),aMW=a("38768"),aMX=a(p),aMY=a("25718"),aMZ=a("30840"),aM0=a(z),aM1=a("5122"),aM2=a("35962"),aM4=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aMJ=[0,a(Q),1325,5,1329,36,[0,a(aQ),[0,a(L),0]]],aMr=a(p),aMs=a(xS),aMt=a("196700"),aMu=a(z),aMv=a("33700"),aMw=a("230400"),aMx=a(p),aMy=a("145300"),aMz=a("175000"),aMA=a(z),aMB=a("29700"),aMC=a(C7),aMD=a(p),aME=a("135700"),aMF=a("162800"),aMG=a(z),aMH=a("27100"),aMI=a("189900"),aMK=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aMp=[0,a(Q),1358,5,1362,36,[0,a(aQ),[0,a(L),0]]],aL9=a(p),aL_=a("24849"),aL$=a("29987"),aMa=a(z),aMb=a("5138"),aMc=a("35125"),aMd=a(p),aMe=a("22151"),aMf=a("26679"),aMg=a(z),aMh=a("4528"),aMi=a("31207"),aMj=a(p),aMk=a("20687"),aMl=a("24818"),aMm=a(z),aMn=a("4131"),aMo=a("28949"),aMq=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aL7=[0,a(Q),1391,5,so,36,[0,a(aQ),[0,a(L),0]]],aLP=a(p),aLQ=a("31241"),aLR=a("37689"),aLS=a(z),aLT=a("6448"),aLU=a("44137"),aLV=a(p),aLW=a("27879"),aLX=a("33556"),aLY=a(z),aLZ=a("5677"),aL0=a("39233"),aL1=a(p),aL2=a("26027"),aL3=a("31210"),aL4=a(z),aL5=a("5183"),aL6=a("36393"),aL8=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aLN=[0,a(Q),qZ,5,1428,36,[0,a(aQ),[0,a(L),0]]],aLv=a(p),aLw=a("25147"),aLx=a("30347"),aLy=a(z),aLz=a("5200"),aLA=a("35547"),aLB=a(p),aLC=a("22417"),aLD=a("26999"),aLE=a(z),aLF=a("4582"),aLG=a("31581"),aLH=a(p),aLI=a("20935"),aLJ=a(Ck),aLK=a(z),aLL=a("4181"),aLM=a("29297"),aLO=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aLt=[0,a(Q),1457,5,1461,36,[0,a(aQ),[0,a(L),0]]],aLb=a(p),aLc=a("31616"),aLd=a("38141"),aLe=a(z),aLf=a("6525"),aLg=a("44666"),aLh=a(p),aLi=a("28214"),aLj=a("33959"),aLk=a(z),aLl=a("5745"),aLm=a("39704"),aLn=a(p),aLo=a("26339"),aLp=a("31584"),aLq=a(z),aLr=a("5245"),aLs=a("36829"),aLu=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aK$=[0,a(Q),1490,5,1494,36,[0,a(aQ),[0,a(L),0]]],aKT=a(p),aKU=a("25449"),aKV=a("30711"),aKW=a(z),aKX=a("5262"),aKY=a("35973"),aKZ=a(p),aK0=a("22686"),aK1=a("27323"),aK2=a(z),aK3=a("4637"),aK4=a("31960"),aK5=a(p),aK6=a("21186"),aK7=a("25417"),aK8=a(z),aK9=a("4231"),aK_=a("29648"),aLa=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aKR=[0,a(Q),1523,5,1527,36,[0,a(aQ),[0,a(L),0]]],aKz=a(p),aKA=a("32185"),aKB=a("38827"),aKC=a(z),aKD=a("6642"),aKE=a("45469"),aKF=a(p),aKG=a("28722"),aKH=a(yb),aKI=a(z),aKJ=a("5848"),aKK=a("40418"),aKL=a(p),aKM=a("26813"),aKN=a("32152"),aKO=a(z),aKP=a("5339"),aKQ=a("37491"),aKS=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aKx=[0,a(Q),zt,5,1560,36,[0,a(aQ),[0,a(L),0]]],aKf=a(p),aKg=a("25907"),aKh=a(xB),aKi=a(z),aKj=a("5357"),aKk=a("36621"),aKl=a(p),aKm=a("23094"),aKn=a("27814"),aKo=a(z),aKp=a("4720"),aKq=a("32534"),aKr=a(p),aKs=a("21567"),aKt=a("25874"),aKu=a(z),aKv=a("4307"),aKw=a("30181"),aKy=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aKd=[0,a(Q),1589,5,1593,36,[0,a(aQ),[0,a(L),0]]],aJX=a(p),aJY=a("33086"),aJZ=a("39914"),aJ0=a(z),aJ1=a("6828"),aJ2=a("46742"),aJ3=a(p),aJ4=a("29526"),aJ5=a("35538"),aJ6=a(z),aJ7=a("6012"),aJ8=a("41550"),aJ9=a(p),aJ_=a("27564"),aJ$=a("33052"),aKa=a(z),aKb=a("5488"),aKc=a("38541"),aKe=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aJV=[0,a(Q),1622,5,Dh,36,[0,a(aQ),[0,a(L),0]]],aJD=a(p),aJE=a("26632"),aJF=a("32139"),aJG=a(z),aJH=a("5507"),aJI=a("37646"),aJJ=a(p),aJK=a("23741"),aJL=a("28593"),aJM=a(z),aJN=a("4852"),aJO=a("33445"),aJP=a(p),aJQ=a("22171"),aJR=a("36598"),aJS=a(z),aJT=a("4428"),aJU=a("31026"),aJW=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aJB=[0,a(Q),1655,5,1659,36,[0,a(aQ),[0,a(L),0]]],aJj=a(p),aJk=a("33999"),aJl=a("41016"),aJm=a(z),aJn=a("7016"),aJo=a("48032"),aJp=a(p),aJq=a("30341"),aJr=a("36519"),aJs=a(z),aJt=a("6178"),aJu=a("42697"),aJv=a(p),aJw=a("28325"),aJx=a("33964"),aJy=a(z),aJz=a("5639"),aJA=a("39605"),aJC=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aJh=[0,a(Q),1688,5,1692,36,[0,a(aQ),[0,a(L),0]]],aI1=a(p),aI2=a("27367"),aI3=a("33026"),aI4=a(z),aI5=a("5659"),aI6=a("38685"),aI7=a(p),aI8=a("24396"),aI9=a("29382"),aI_=a(z),aI$=a(B9),aJa=a("34368"),aJb=a(p),aJc=a("22783"),aJd=a("27332"),aJe=a(z),aJf=a("4550"),aJg=a("31882"),aJi=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aIZ=[0,a(Q),1721,5,1725,36,[0,a(aQ),[0,a(L),0]]],aIH=a(p),aII=a("35002"),aIJ=a("42226"),aIK=a(z),aIL=a("7223"),aIM=a("49449"),aIN=a(p),aIO=a("31236"),aIP=a("37596"),aIQ=a(z),aIR=a("6360"),aIS=a("43957"),aIT=a(p),aIU=a("29161"),aIV=a("34966"),aIW=a(z),aIX=a("5805"),aIY=a("40773"),aI0=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aIF=[0,a(Q),1754,5,1758,36,[0,a(aQ),[0,a(L),0]]],aIn=a(p),aIo=a("28174"),aIp=a("34000"),aIq=a(z),aIr=a("5826"),aIs=a("39826"),aIt=a(p),aIu=a(Ck),aIv=a("30249"),aIw=a(z),aIx=a("5133"),aIy=a("35382"),aIz=a(p),aIA=a("23455"),aIB=a("28138"),aIC=a(z),aID=a("4684"),aIE=a("32823"),aIG=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aIl=[0,a(Q),1787,5,1791,36,[0,a(aQ),[0,a(L),0]]],aH5=a(p),aH6=a("35114"),aH7=a("42361"),aH8=a(z),aH9=a("7246"),aH_=a("49607"),aH$=a(p),aIa=a("31336"),aIb=a("37716"),aIc=a(z),aId=a("6380"),aIe=a("44098"),aIf=a(p),aIg=a("29254"),aIh=a("35078"),aIi=a(z),aIj=a("5824"),aIk=a("40903"),aIm=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aH3=[0,a(Q),1820,5,1824,36,[0,a(aQ),[0,a(L),0]]],aHL=a(p),aHM=a("28264"),aHN=a("34109"),aHO=a(z),aHP=a("5845"),aHQ=a("39953"),aHR=a(p),aHS=a("25196"),aHT=a("30346"),aHU=a(z),aHV=a("5149"),aHW=a("35495"),aHX=a(p),aHY=a("23530"),aHZ=a("28228"),aH0=a(z),aH1=a("4699"),aH2=a("32928"),aH4=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aHJ=[0,a(Q),1853,5,1857,36,[0,a(aQ),[0,a(L),0]]],aHr=a(p),aHs=a("35500"),aHt=a("42827"),aHu=a(z),aHv=a("7326"),aHw=a("50153"),aHx=a(p),aHy=a("31681"),aHz=a("38131"),aHA=a(z),aHB=a("6450"),aHC=a("44583"),aHD=a(p),aHE=a("29576"),aHF=a("35464"),aHG=a(z),aHH=a("5888"),aHI=a("41353"),aHK=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aHp=[0,a(Q),1886,5,1890,36,[0,a(aQ),[0,a(L),0]]],aG9=a(p),aG_=a("28575"),aG$=a("34484"),aHa=a(z),aHb=a("5909"),aHc=a("40392"),aHd=a(p),aHe=a("25473"),aHf=a("30680"),aHg=a(z),aHh=a("5206"),aHi=a("35885"),aHj=a(p),aHk=a("23789"),aHl=a("28539"),aHm=a(z),aHn=a("4751"),aHo=a("33290"),aHq=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aG7=[0,a(Q),1919,5,1923,36,[0,a(aQ),[0,a(L),0]]],aGP=a(p),aGQ=a("35855"),aGR=a("43255"),aGS=a(z),aGT=a("7399"),aGU=a("50655"),aGV=a(p),aGW=a("31998"),aGX=a("38512"),aGY=a(z),aGZ=a("6515"),aG0=a("45029"),aG1=a(p),aG2=a("29872"),aG3=a("35819"),aG4=a(z),aG5=a("5947"),aG6=a("41767"),aG8=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aGN=[0,a(Q),1952,5,1956,36,[0,a(aQ),[0,a(L),0]]],aGv=a(p),aGw=a("28861"),aGx=a(EI),aGy=a(z),aGz=a("5968"),aGA=a("40796"),aGB=a(p),aGC=a("25728"),aGD=a("30987"),aGE=a(z),aGF=a("5258"),aGG=a("36244"),aGH=a(p),aGI=a("24027"),aGJ=a("28824"),aGK=a(z),aGL=a("4799"),aGM=a(zF),aGO=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aGt=[0,a(Q),1985,5,1989,36,[0,a(aQ),[0,a(L),0]]],aGb=a(p),aGc=a("36626"),aGd=a("44185"),aGe=a(z),aGf=a("7558"),aGg=a("51744"),aGh=a(p),aGi=a("32686"),aGj=a(ym),aGk=a(z),aGl=a("6655"),aGm=a("45997"),aGn=a(p),aGo=a("30514"),aGp=a("36589"),aGq=a(z),aGr=a("6075"),aGs=a("42665"),aGu=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aF$=[0,a(Q),c6,5,$,36,[0,a(aQ),[0,a(L),0]]],aFT=a(p),aFU=a("29482"),aFV=a("35578"),aFW=a(z),aFX=a("6096"),aFY=a("41673"),aFZ=a(p),aF0=a("26281"),aF1=a("31653"),aF2=a(z),aF3=a("5371"),aF4=a("37023"),aF5=a(p),aF6=a("24544"),aF7=a("29444"),aF8=a(z),aF9=a("4902"),aF_=a("34346"),aGa=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aFR=[0,a(Q),2051,5,2055,36,[0,a(aQ),[0,a(L),0]]],aFz=a(p),aFA=a("36835"),aFB=a("44437"),aFC=a(z),aFD=a("7601"),aFE=a("52039"),aFF=a(p),aFG=a("32872"),aFH=a("39564"),aFI=a(z),aFJ=a("6693"),aFK=a("46259"),aFL=a(p),aFM=a("30688"),aFN=a("36798"),aFO=a(z),aFP=a("6110"),aFQ=a("42908"),aFS=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aFx=[0,a(Q),2084,5,2088,36,[0,a(aQ),[0,a(L),0]]],aFf=a(p),aFg=a("29650"),aFh=a("35781"),aFi=a(z),aFj=a("6131"),aFk=a("41911"),aFl=a(p),aFm=a("26431"),aFn=a("31833"),aFo=a(z),aFp=a("5402"),aFq=a("37234"),aFr=a(p),aFs=a("24684"),aFt=a("29612"),aFu=a(z),aFv=a("4930"),aFw=a("34542"),aFy=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aFd=[0,a(Q),2117,5,2121,36,[0,a(aQ),[0,a(L),0]]],aEX=a(p),aEY=a("36864"),aEZ=a("44473"),aE0=a(z),aE1=a("7607"),aE2=a("52081"),aE3=a(p),aE4=a("32898"),aE5=a("39596"),aE6=a(z),aE7=a("6698"),aE8=a("46296"),aE9=a(p),aE_=a("30713"),aE$=a("36827"),aFa=a(z),aFb=a("6115"),aFc=a("42942"),aFe=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aEV=[0,a(Q),2150,5,2154,36,[0,a(aQ),[0,a(L),0]]],aED=a(p),aEE=a("29674"),aEF=a("35810"),aEG=a(z),aEH=a("6136"),aEI=a("41945"),aEJ=a(p),aEK=a("26452"),aEL=a("31858"),aEM=a(z),aEN=a("5406"),aEO=a("37264"),aEP=a(p),aEQ=a("24704"),aER=a("29636"),aES=a(z),aET=a("4934"),aEU=a(yb),aEW=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aEB=[0,a(Q),2183,5,q1,36,[0,a(aQ),[0,a(L),0]]],aEj=a(p),aEk=a("37140"),aEl=a("44807"),aEm=a(z),aEn=a("7664"),aEo=a("52472"),aEp=a(p),aEq=a("33145"),aEr=a("39893"),aEs=a(z),aEt=a("6748"),aEu=a("46643"),aEv=a(p),aEw=a("30943"),aEx=a("37103"),aEy=a(z),aEz=a("6161"),aEA=a("43264"),aEC=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aEh=[0,a(Q),2216,5,2220,36,[0,a(aQ),[0,a(L),0]]],aD1=a(p),aD2=a("29897"),aD3=a("36079"),aD4=a(z),aD5=a("6182"),aD6=a("42260"),aD7=a(p),aD8=a("26650"),aD9=a("32097"),aD_=a(z),aD$=a("5447"),aEa=a("37543"),aEb=a(p),aEc=a("24889"),aEd=a("29858"),aEe=a(z),aEf=a("4971"),aEg=a(EI),aEi=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDZ=[0,a(Q),2249,5,2252,36,[0,a(aQ),[0,a(L),0]]],aDH=a(p),aDI=a("37252"),aDJ=a("44941"),aDK=a(z),aDL=a("7687"),aDM=a("52629"),aDN=a(p),aDO=a("33244"),aDP=a("40013"),aDQ=a(z),aDR=a("6768"),aDS=a("46783"),aDT=a(p),aDU=a("31036"),aDV=a("37215"),aDW=a(z),aDX=a("6179"),aDY=a("43394"),aD0=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDF=[0,a(Q),2281,5,2284,36,[0,a(aQ),[0,a(L),0]]],aDn=a(p),aDo=a("29986"),aDp=a("36187"),aDq=a(z),aDr=a("6201"),aDs=a("42386"),aDt=a(p),aDu=a("26730"),aDv=a("32193"),aDw=a(z),aDx=a("5463"),aDy=a("37656"),aDz=a(p),aDA=a("24964"),aDB=a("29948"),aDC=a(z),aDD=a(B9),aDE=a("34934"),aDG=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPf=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPo=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDk=[0,a(Q),kF,5,ee,33,[0,a(o4),[0,a(me),[0,a(L),0]]]],aC4=a(p),aC5=a(w_),aC6=a(vW),aC7=a(z),aC8=a(Ga),aC9=a(yO),aC_=a(p),aC$=a(AG),aDa=a(Es),aDb=a(z),aDc=a(wi),aDd=a(z_),aDe=a(p),aDf=a(zf),aDg=a(ER),aDh=a(z),aDi=a("35600"),aDj=a(mk),aDl=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aC2=[0,a(Q),662,5,665,33,[0,a(o4),[0,a(me),[0,a(L),0]]]],aCK=a(p),aCL=a(yt),aCM=a(rM),aCN=a(z),aCO=a(Gb),aCP=a(Ci),aCQ=a(p),aCR=a(EG),aCS=a(ra),aCT=a(z),aCU=a(os),aCV=a(Al),aCW=a(p),aCX=a(DS),aCY=a(Fp),aCZ=a(z),aC0=a(Ds),aC1=a(x6),aC3=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aCI=[0,a(Q),707,5,su,33,[0,a(o4),[0,a(me),[0,a(L),0]]]],aCq=a(p),aCr=a(rI),aCs=a("220000"),aCt=a(z),aCu=a("38000"),aCv=a("260000"),aCw=a(p),aCx=a("164200"),aCy=a(zn),aCz=a(z),aCA=a(FY),aCB=a("231200"),aCC=a(p),aCD=a("153200"),aCE=a("183700"),aCF=a(z),aCG=a(os),aCH=a("214200"),aCJ=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aCo=[0,a(Q),750,5,752,33,[0,a(o4),[0,a(me),[0,a(L),0]]]],aB8=a(p),aB9=a("148100"),aB_=a("178700"),aB$=a(z),aCa=a("30600"),aCb=a("209300"),aCc=a(p),aCd=a(Bp),aCe=a("158900"),aCf=a(z),aCg=a("26900"),aCh=a(yq),aCi=a(p),aCj=a("123300"),aCk=a("147900"),aCl=a(z),aCm=a("24600"),aCn=a(DY),aCp=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDm=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB7=[0,a(d),Y,3,Y,76,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPp=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB6=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB2=[0,a(E),ot,5,ot,28,[0,a(DD),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aB3=[0,a(d),jb,11,jb,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB1=[0,a(E),Eb,14,Eb,44,[0,a(DD),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aBX=[0,a(E),vU,14,vU,36,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aBV=a(p),aBW=a(p),aBY=[0,a(d),nF,10,nF,32,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBU=[0,a(d),nF,10,nF,32,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBP=[0,a(Q),EN,7,EN,18,[0,a(ja),[0,a(aQ),[0,a(L),0]]]],aBM=a(gD),aBN=a(qX),aBO=a(fo),aBQ=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBK=[0,a(aO),hX,7,hX,18,[0,a(ja),[0,a(bB),[0,a(aM),0]]]],aBH=a(gS),aBI=a(qA),aBJ=a(ff),aBL=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBF=[0,a(aO),xt,7,xt,18,[0,a(ja),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aBC=a(oJ),aBD=a(BV),aBE=a(mO),aBG=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBR=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBz=[0,a(Q),CA,29,CA,64,[0,a(nv),[0,a(aQ),[0,a(L),0]]]],aBx=a(gD),aBy=a(fo),aBA=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBv=[0,a(aO),Bt,29,Bt,64,[0,a(nv),[0,a(bB),[0,a(aM),0]]]],aBt=a(gS),aBu=a(ff),aBw=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBr=[0,a(aO),yG,29,yG,64,[0,a(nv),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aBp=a(oJ),aBq=a(mO),aBs=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBB=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBj=[0,a(d),iV,14,iV,50,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBf=[0,a(Q),D6,14,D6,50,[0,a("Article 25"),[0,a(aQ),[0,a(L),0]]]],aBa=a(wG),aBb=a(sh),aBc=a("0.0172"),aBd=a(wG),aBe=a(sh),aA6=[0,a(E),iJ,14,iJ,64,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA2=[0,a(E),iG,14,iG,59,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aAY=[0,a(fc),yU,14,yU,36,[0,a(C5),[0,a(zb),0]]],aAW=a(vD),aAX=a(et),aAS=[0,a(Q),E6,14,E6,47,[0,a(sj),[0,a(aQ),[0,a(L),0]]]],aAR=a("0.416"),aAN=[0,a(Q),ya,14,ya,47,[0,a(sj),[0,a(aQ),[0,a(L),0]]]],aAM=a(vp),aAI=[0,a(Q),Du,14,Du,47,[0,a(sj),[0,a(aQ),[0,a(L),0]]]],aAH=a("560085"),aAD=[0,a(Q),FU,14,FU,48,[0,a("Article 26"),[0,a(aQ),[0,a(L),0]]]],aAC=a(AF),aAy=[0,a(Q),BZ,15,BZ,49,[0,a("Article 22"),[0,a(aQ),[0,a(L),0]]]],aAx=a("2211133"),aAt=[0,a(Q),va,14,va,42,[0,a("Article 21"),[0,a(aQ),[0,a(L),0]]]],aAs=a(ig),aAo=[0,a(Q),Ef,14,Ef,41,[0,a("Article 20"),[0,a(aQ),[0,a(L),0]]]],aAn=a(kk),aAp=[0,a(d),oL,11,oL,38,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAm=[0,a(d),oL,11,oL,38,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAq=[0,a(aj),[0,a("montant_forfaitaire_d832_10"),0]],aAu=[0,a(d),oI,11,oI,39,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAr=[0,a(d),oI,11,oI,39,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAv=[0,a(aj),[0,a("montant_minimal_aide_d832_10"),0]],aAz=[0,a(d),oq,11,oq,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAw=[0,a(d),oq,11,oq,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAA=[0,a(aj),[0,a("coefficient_multiplicateur_d832_11"),0]],aAE=[0,a(d),oT,11,oT,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAB=[0,a(d),oT,11,oT,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAF=[0,a(aj),[0,a("coefficient_multiplicateur_d832_18"),0]],aAJ=[0,a(d),mp,11,mp,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAG=[0,a(d),mp,11,mp,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAK=[0,a(aj),[0,a("montant_limite_tranches_d832_15_1"),0]],aAO=[0,a(d),kS,11,kS,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAL=[0,a(d),kS,11,kS,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAP=[0,a(aj),[0,a("taux_tranche_inf\xc3\xa9rieure_d832_15_1"),0]],aAT=[0,a(d),ng,11,ng,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAQ=[0,a(d),ng,11,ng,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAU=[0,a(aj),[0,a("taux_tranche_sup\xc3\xa9rieure_d832_15_1"),0]],aAZ=[0,a(d),mY,11,mY,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAV=[0,a(d),mY,11,mY,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aA0=[0,a(aj),[0,a(FA),0]],aA3=[0,a(E),iG,14,iG,59,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA4=[0,a(aj),[0,a(nh),0]],aA1=[0,a(E),iG,14,iG,59,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA7=[0,a(E),iJ,14,iJ,64,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA8=[0,a(aj),[0,a(n2),0]],aA5=[0,a(E),iJ,14,iJ,64,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA9=[0,a(aj),[0,a(gb),[0,a(kq),0]]],aA_=[0,a(aj),[0,a(gb),[0,a(kq),0]]],aBg=[0,a(d),n5,11,n5,47,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aA$=[0,a(d),n5,11,n5,47,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBh=[0,a(aj),[0,a("coefficient_multiplicateur_d832_17_3"),0]],aBk=[0,a(d),iV,14,iV,50,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBl=[0,a(aj),[0,a(ky),0]],aBi=[0,a(d),iV,14,iV,50,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBm=[0,a(aj),[0,a(eJ),[0,a(bk),0]]],aBn=[0,a(aj),[0,a(eJ),[0,a(bk),0]]],aBS=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBo=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBT=[0,a(aj),[0,a("montant_forfaitaire_charges_d832_10"),0]],aBZ=[0,a(aj),[0,a(bI),0]],aB4=[0,a(d),jb,11,jb,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB0=[0,a(d),jb,11,jb,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB5=[0,a(aj),[0,a("ressources_m\xc3\xa9nage_avec_d832_18"),0]],aPq=[0,a(aj),[0,a(dA),0]],aPt=[0,a(d),nq,11,nq,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPr=[0,a(d),nq,11,nq,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPu=[0,a(aj),[0,a(v_),0]],aPA=[0,a(aj),[0,a(kv),0]],aPR=[0,a(d),hN,10,hN,14,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPB=[0,a(d),hN,10,hN,14,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPS=[0,a(aj),[0,a("plafond_mensualit\xc3\xa9_d832_10_3_base"),0]],aPV=[0,a(E),h3,14,h3,75,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPW=[0,a(aj),[0,a(mK),0]],aPT=[0,a(E),h3,14,h3,75,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPZ=[0,a(E),ji,14,ji,69,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP0=[0,a(aj),[0,a(on),0]],aPX=[0,a(E),ji,14,ji,69,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP3=[0,a(E),jj,14,jj,70,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP4=[0,a(aj),[0,a(mz),0]],aP1=[0,a(E),jj,14,jj,70,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP5=[0,a(aj),[0,a(fI),[0,a(dP),0]]],aP6=[0,a(aj),[0,a(fI),[0,a(dP),0]]],aP_=[0,a(d),kp,10,kp,17,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aP7=[0,a(d),kp,10,kp,17,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aP$=[0,a(aj),[0,a("coefficient_prise_en_charge_d832_10_formule"),0]],aQi=[0,a(aj),[0,a(kO),0]],aQt=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQj=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQu=[0,a(aj),[0,a("plafond_mensualit\xc3\xa9_d832_10_3_copropri\xc3\xa9taires"),0]],aQC=[0,a(d),fV,12,fV,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQv=[0,a(d),fV,12,fV,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQD=[0,a(aj),[0,a(q_),0]],aQJ=[0,a(d),mj,10,mj,23,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQE=[0,a(d),mj,10,mj,23,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQK=[0,a(aj),[0,a("coefficient_prise_en_charge_d832_10_coeff_arrondi"),0]],aQY=[0,a(aj),[0,a(eN),0]],aQ1=[0,a(d),oY,12,oY,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQZ=[0,a(d),oY,12,oY,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ2=[0,a(aj),[0,a(sq),0]],aQ7=[0,a(d),oA,10,oA,15,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ3=[0,a(d),oA,10,oA,15,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ8=[0,a(aj),[0,a("coefficient_prise_en_charge_d832_10_seuil"),0]],aRl=[0,a(aj),[0,a(bJ),0]],aRq=[0,a(d),nP,12,nP,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRm=[0,a(d),nP,12,nP,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRr=[0,a(aj),[0,a(cX),0]],aRA=[0,a(aj),[0,a(fl),0]],aAj=[0,a(E),A6,14,A6,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aAe=[0,a(au),[0,a(bJ),[0,a(ac),0]]],aAf=[0,a(au),[0,a(bJ),0]],aAg=[0,a(au),[0,a(bJ),[0,a(ae),0]]],aAh=[0,a(au),[0,a(bJ),0]],aAi=a(p),aAk=[0,a(d),m3,10,m3,25,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAd=[0,a(d),m3,10,m3,25,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAa=[0,a(E),u6,14,u6,33,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],az_=a(p),az$=a(p),az6=[0,a(E),yy,14,yy,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azV=[0,a(au),[0,a(eN),[0,a(ac),0]]],azW=[0,a(au),[0,a(eN),0]],azX=[0,a(au),[0,a(eN),[0,a(ae),0]]],azY=[0,a(au),[0,a(eN),0]],azZ=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],az0=[0,a(bk),[0,a(bQ),0]],az1=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],az2=[0,a(bk),[0,a(bQ),0]],az3=a(kW),az4=a(p),az5=a(p),az7=[0,a(d),nB,10,nB,40,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azU=[0,a(d),nB,10,nB,40,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azQ=[0,a(E),CR,5,CR,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azO=a(oE),azP=a(oE),azR=[0,a(d),jl,10,jl,15,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azN=[0,a(E),D$,14,D$,49,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azL=a(hf),azM=a(hf),azH=[0,a(E),CM,14,CM,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azx=[0,a(au),[0,a(bI),[0,a(ac),0]]],azy=[0,a(au),[0,a(bI),0]],azz=[0,a(au),[0,a(bI),[0,a(ae),0]]],azA=[0,a(au),[0,a(bI),0]],azB=[0,a(au),[0,a(ku),[0,a(ac),0]]],azC=[0,a(au),[0,a(ku),0]],azD=[0,a(au),[0,a(ku),[0,a(ae),0]]],azE=[0,a(au),[0,a(ku),0]],azF=a(p),azG=a(p),azI=[0,a(d),mb,10,mb,20,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azw=[0,a(d),mb,10,mb,20,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azs=[0,a(E),Ff,5,Ff,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azp=a(c5),azq=a(c5),azr=a(lX),azt=[0,a(d),hD,10,hD,23,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azo=[0,a(E),xC,14,xC,49,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azl=a(c5),azm=a(c5),azn=a(lX),azh=[0,a(E),B6,14,B6,40,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azd=[0,a(E),vy,14,vy,55,[0,a(yM),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay_=[0,a(au),[0,a(kA),[0,a(ac),0]]],ay$=[0,a(au),[0,a(kA),0]],aza=[0,a(au),[0,a(kA),[0,a(ae),0]]],azb=[0,a(au),[0,a(kA),0]],azc=a(p),aze=[0,a(d),oQ,11,oQ,52,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ay9=[0,a(d),oQ,11,oQ,52,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ay5=[0,a(E),FT,5,FT,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay4=a(oE),ay6=[0,a(d),h_,10,h_,17,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ay3=[0,a(E),nC,14,nC,49,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay0=a(p),ay1=a(p),ay2=a(hf),ayU=[0,a(E),ga,14,ga,70,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayQ=[0,a(E),hF,14,hF,69,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayM=[0,a(E),iW,14,iW,75,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayI=[0,a(E),zQ,14,zQ,44,[0,a(yM),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayJ=[0,a(d),nK,11,nK,41,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayH=[0,a(d),nK,11,nK,41,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayD=[0,a(E),zi,14,zi,36,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayE=[0,a(d),jn,21,jn,43,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayz=[0,a(E),wl,14,wl,40,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayv=[0,a(Q),xr,14,xr,48,[0,a(we),[0,a(fg),[0,a(L),0]]]],ayt=a("2142091"),ayu=a("1339340"),ayp=[0,a(Q),wR,14,wR,41,[0,a("Article 32"),[0,a(fg),[0,a(L),0]]]],ayn=a(qI),ayo=a("2668"),ayh=[0,a(E),is,14,is,64,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayd=[0,a(E),ia,14,ia,59,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ax$=[0,a(E),iH,14,iH,55,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ax7=[0,a(E),zh,14,zh,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ax5=a(p),ax6=a(p),ax8=[0,a(d),lP,10,lP,32,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ax4=[0,a(d),lP,10,lP,32,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ax0=[0,a(Q),Co,14,Co,48,[0,a(sv),[0,a(fg),[0,a(L),0]]]],axq=a(p),axr=a("46192"),axs=a("54152"),axt=a(z),axu=a("57741"),axv=a(X),axw=a("61794"),axx=a(_),axy=a("65862"),axz=a(ah),axA=a("7368"),axB=a("71039"),axC=a(p),axD=a("42242"),axE=a("49299"),axF=a(z),axG=a("52565"),axH=a(X),axI=a("56268"),axJ=a(_),axK=a("59957"),axL=a(ah),axM=a("6659"),axN=a("63887"),axO=a(p),axP=a("40096"),axQ=a("46634"),axR=a(z),axS=a("49475"),axT=a(X),axU=a("52740"),axV=a(_),axW=a("56004"),axX=a(ah),axY=a("6180"),axZ=a("59675"),ax1=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],axo=[0,a(aO),dK,14,dK,48,[0,a(sv),[0,a(bB),[0,a(aM),0]]]],awQ=a(p),awR=a("44630"),awS=a("52321"),awT=a(z),awU=a("55788"),awV=a(X),awW=a("59704"),awX=a(_),awY=a("63635"),awZ=a(ah),aw0=a("7119"),aw1=a("68637"),aw2=a(p),aw3=a("40814"),aw4=a("47632"),aw5=a(z),aw6=a("50787"),aw7=a(X),aw8=a("54365"),aw9=a(_),aw_=a("57929"),aw$=a(ah),axa=a("6434"),axb=a("61727"),axc=a(p),axd=a("38740"),axe=a("45057"),axf=a(z),axg=a("47802"),axh=a(X),axi=a("50957"),axj=a(_),axk=a("54110"),axl=a(ah),axm=a("5971"),axn=a("57657"),axp=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awO=[0,a(aO),Ee,14,Ee,48,[0,a(sv),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],awe=a(p),awf=a("44443"),awg=a("52101"),awh=a(z),awi=a("55555"),awj=a(X),awk=a("59454"),awl=a(_),awm=a("63369"),awn=a(ah),awo=a("7089"),awp=a("68350"),awq=a(p),awr=a("40643"),aws=a("47433"),awt=a(z),awu=a("50575"),awv=a(X),aww=a("54138"),awx=a(_),awy=a("57687"),awz=a(ah),awA=a("6407"),awB=a("61469"),awC=a(p),awD=a("38578"),awE=a("44869"),awF=a(z),awG=a("47602"),awH=a(X),awI=a("50744"),awJ=a(_),awK=a("53884"),awL=a(ah),awM=a("5946"),awN=a("57416"),awP=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av_=[0,a(d),h6,14,h6,50,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av5=[0,a(E),ye,14,ye,35,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],av6=[0,a(d),id,12,id,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av1=[0,a(Q),BK,14,BK,42,[0,a("Article 29"),[0,a(fg),[0,a(L),0]]]],av0=a(ig),avW=[0,a(Q),z3,14,z3,41,[0,a("Article 28"),[0,a(fg),[0,a(L),0]]]],avV=a(kk),avR=[0,a(Q),Fn,14,Fn,35,[0,a(we),[0,a(fg),[0,a(L),0]]]],avQ=a("121726"),avS=[0,a(d),kF,12,kF,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avP=[0,a(d),kF,12,kF,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avT=[0,a(au),[0,a(Ej),0]],avX=[0,a(d),ma,11,ma,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avU=[0,a(d),ma,11,ma,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avY=[0,a(au),[0,a("montant_forfaitaire_d832_24"),0]],av2=[0,a(d),mv,11,mv,39,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avZ=[0,a(d),mv,11,mv,39,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av3=[0,a(au),[0,a("montant_minimal_aide_d823_24"),0]],av7=[0,a(d),id,12,id,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av4=[0,a(d),id,12,id,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av8=[0,a(au),[0,a("condition_2_du_832_25"),0]],av$=[0,a(d),h6,14,h6,50,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awa=[0,a(au),[0,a(ky),0]],av9=[0,a(d),h6,14,h6,50,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awb=[0,a(au),[0,a(eJ),[0,a(bk),0]]],awc=[0,a(au),[0,a(eJ),[0,a(bk),0]]],ax2=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awd=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ax3=[0,a(au),[0,a(zT),0]],ax9=[0,a(au),[0,a(bI),0]],aya=[0,a(E),iH,14,iH,55,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayb=[0,a(au),[0,a(BA),0]],ax_=[0,a(E),iH,14,iH,55,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aye=[0,a(E),ia,14,ia,59,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayf=[0,a(au),[0,a(nh),0]],ayc=[0,a(E),ia,14,ia,59,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayi=[0,a(E),is,14,is,64,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayj=[0,a(au),[0,a(n2),0]],ayg=[0,a(E),is,14,is,64,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayk=[0,a(au),[0,a(gb),[0,a(kw),0]]],ayl=[0,a(au),[0,a(gb),[0,a(kw),0]]],ayq=[0,a(d),nx,11,nx,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aym=[0,a(d),nx,11,nx,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayr=[0,a(au),[0,a("montant_forfaitaire_d832_27"),0]],ayw=[0,a(d),hB,12,hB,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ays=[0,a(d),hB,12,hB,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayx=[0,a(au),[0,a(A2),0]],ayA=[0,a(d),kf,12,kf,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayy=[0,a(d),kf,12,kf,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayB=[0,a(au),[0,a(xN),0]],ayF=[0,a(d),jn,21,jn,43,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayC=[0,a(d),jn,21,jn,43,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayG=[0,a(au),[0,a(r5),0]],ayK=[0,a(au),[0,a(kA),0]],ayN=[0,a(E),iW,14,iW,75,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayO=[0,a(au),[0,a(mK),0]],ayL=[0,a(E),iW,14,iW,75,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayR=[0,a(E),hF,14,hF,69,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayS=[0,a(au),[0,a(on),0]],ayP=[0,a(E),hF,14,hF,69,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayV=[0,a(E),ga,14,ga,70,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayW=[0,a(au),[0,a(mz),0]],ayT=[0,a(E),ga,14,ga,70,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayX=[0,a(au),[0,a(fI),[0,a(dP),0]]],ayY=[0,a(au),[0,a(fI),[0,a(dP),0]]],ay7=[0,a(d),h_,10,h_,17,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayZ=[0,a(d),h_,10,h_,17,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ay8=[0,a(au),[0,a("coefficient_prise_en_charge_d832_25_formule"),0]],azf=[0,a(au),[0,a(ku),0]],azi=[0,a(d),od,12,od,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azg=[0,a(d),od,12,od,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azj=[0,a(au),[0,a(vs),0]],azu=[0,a(d),hD,10,hD,23,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azk=[0,a(d),hD,10,hD,23,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azv=[0,a(au),[0,a("coefficient_prise_en_charge_d832_25_coeff_arrondi"),0]],azJ=[0,a(au),[0,a(eN),0]],azS=[0,a(d),jl,10,jl,15,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azK=[0,a(d),jl,10,jl,15,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azT=[0,a(au),[0,a("coefficient_prise_en_charge_d832_25_seuil"),0]],az8=[0,a(au),[0,a(bJ),0]],aAb=[0,a(d),kc,12,kc,31,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],az9=[0,a(d),kc,12,kc,31,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAc=[0,a(au),[0,a(cX),0]],aAl=[0,a(au),[0,a(fl),0]],avF=[0,a(E),C4,14,C4,33,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avD=a(p),avE=a(p),avz=[0,a(E),A1,14,A1,39,[0,a(rP),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avx=a(p),avy=a(p),avt=[0,a(E),Ba,14,Ba,36,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avo=[0,a(aD),[0,a(ki),[0,a(ac),0]]],avp=[0,a(aD),[0,a(ki),0]],avq=[0,a(aD),[0,a(ki),[0,a(ae),0]]],avr=[0,a(aD),[0,a(ki),0]],avs=a(p),avu=[0,a(d),mM,10,mM,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avn=[0,a(d),mM,10,mM,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avk=[0,a(E),xv,14,xv,42,[0,a(rP),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avg=[0,a(aG),Ce,14,Ce,36,[0,a(qS),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],ava=[0,a(aD),[0,a(bJ),[0,a(ac),0]]],avb=[0,a(aD),[0,a(bJ),0]],avc=[0,a(aD),[0,a(bJ),[0,a(ae),0]]],avd=[0,a(aD),[0,a(bJ),0]],ave=a(p),avf=a(p),avh=[0,a(d),oa,10,oa,36,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],au$=[0,a(d),oa,10,oa,36,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],au5=[0,a(aO),Aq,14,Aq,33,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],au3=a(hy),au4=a(hy),au6=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],au2=[0,a(aO),m$,14,m$,33,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],au0=a(hy),au1=a(hy),au7=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auZ=[0,a(Q),f2,14,f2,33,[0,a(cF),[0,a(bX),[0,a(L),0]]]],auX=a(hy),auY=a(hy),au8=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auT=[0,a(E),wk,14,wk,36,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],auI=[0,a(aD),[0,a(bI),[0,a(ac),0]]],auJ=[0,a(aD),[0,a(bI),0]],auK=[0,a(aD),[0,a(bI),[0,a(ae),0]]],auL=[0,a(aD),[0,a(bI),0]],auM=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],auN=[0,a(bk),[0,a(bQ),0]],auO=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],auP=[0,a(bk),[0,a(bQ),0]],auQ=a(kW),auR=a(p),auS=a(p),auU=[0,a(d),o6,10,o6,40,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auH=[0,a(d),o6,10,o6,40,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auB=[0,a(aO),sw,14,sw,33,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aup=a(hh),auq=a(b5),aur=a(df),aus=a(hh),aut=a(fd),auu=a(fd),auv=a(df),auw=a(df),aux=a(r_),auy=a(qJ),auz=a(fd),auA=a(b5),auC=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auo=[0,a(aO),j5,14,j5,33,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],auc=a(hh),aud=a(b5),aue=a(df),auf=a(hh),aug=a(fd),auh=a(fd),aui=a(df),auj=a(df),auk=a(r_),aul=a(qJ),aum=a(fd),aun=a(b5),auD=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aub=[0,a(Q),qR,14,qR,33,[0,a(cF),[0,a(bX),[0,a(L),0]]]],at1=a(hh),at2=a(b5),at3=a(df),at4=a(hh),at5=a(fd),at6=a(fd),at7=a(df),at8=a(df),at9=a(r_),at_=a(qJ),at$=a(fd),aua=a(b5),auE=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atX=[0,a(E),Ed,14,Ed,36,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],atR=[0,a(aD),[0,a(kr),[0,a(ac),0]]],atS=[0,a(aD),[0,a(kr),0]],atT=[0,a(aD),[0,a(kr),[0,a(ae),0]]],atU=[0,a(aD),[0,a(kr),0]],atV=a(p),atW=a(p),atY=[0,a(d),mA,10,mA,32,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atQ=[0,a(d),mA,10,mA,32,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atK=[0,a(aO),Aj,14,Aj,28,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],atI=a(c5),atJ=a(c5),atL=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atH=[0,a(aO),wq,14,wq,28,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],atF=a(c5),atG=a(c5),atM=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atE=[0,a(Q),ne,14,ne,28,[0,a(cF),[0,a(bX),[0,a(L),0]]]],atC=a(c5),atD=a(c5),atN=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atx=[0,a(Q),dz,14,dz,36,[0,a(sn),[0,a(bX),[0,a(L),0]]]],att=a(FV),atu=a(iB),atv=a(iB),atw=a(FV),aty=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atr=[0,a(aO),vr,14,vr,36,[0,a(sn),[0,a(bB),[0,a(aM),0]]]],atn=a(C2),ato=a(iB),atp=a(iB),atq=a(C2),ats=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atl=[0,a(aO),gK,14,gK,36,[0,a(sn),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],ath=a(Ex),ati=a(iB),atj=a(iB),atk=a(Ex),atm=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atc=[0,a(E),FW,5,FW,50,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],atd=[0,a(d),ip,10,ip,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atb=[0,a(E),zG,14,zG,36,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ata=a(p),ate=[0,a(d),ip,10,ip,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as$=[0,a(d),ip,10,ip,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as8=[0,a(E),xx,14,xx,28,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],as4=[0,a(Q),ri,14,ri,42,[0,a(B_),[0,a(bX),[0,a(L),0]]]],as1=a("3.4"),as2=a(ih),as3=a(ih),asX=[0,a(Q),rm,14,rm,41,[0,a(B_),[0,a(bX),[0,a(L),0]]]],asU=a("4."),asV=a(y5),asW=a(y5),asQ=[0,a(E),zw,14,zw,29,[0,a("Article D842-2"),[0,a(ss),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],asO=a(ov),asP=a(kI),asI=[0,a(Q),EP,29,EP,64,[0,a(dS),[0,a(bX),[0,a(L),0]]]],asF=a(gD),asG=a(qX),asH=a(fo),asJ=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asD=[0,a(aO),wn,29,wn,64,[0,a(dS),[0,a(bB),[0,a(aM),0]]]],asA=a(gS),asB=a(qA),asC=a(ff),asE=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asy=[0,a(aO),vQ,29,vQ,64,[0,a(dS),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],asv=a(oJ),asw=a(BV),asx=a(mO),asz=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asK=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ass=[0,a(Q),zU,29,zU,64,[0,a(se),[0,a(bX),[0,a(L),0]]]],asq=a(gD),asr=a(fo),ast=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aso=[0,a(aO),Cj,29,Cj,64,[0,a(se),[0,a(bB),[0,a(aM),0]]]],asm=a(gS),asn=a(ff),asp=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ask=[0,a(aO),B4,29,B4,64,[0,a(se),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],asi=a(oJ),asj=a(mO),asl=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asu=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asb=a(p),asc=[0,a(Q),529,5,530,34,[0,a(dS),[0,a(bX),[0,a(L),0]]]],ar_=a(Bg),ar$=a(v7),asa=a(Dy),asd=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ar7=a(p),ar8=[0,a(Q),538,5,539,34,[0,a(dS),[0,a(bX),[0,a(L),0]]]],ar4=a("27905"),ar5=a("24683"),ar6=a("22911"),ar9=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ar1=a(z),ar2=[0,a(Q),h$,5,h$,35,[0,a(dS),[0,a(bX),[0,a(L),0]]]],arS=a(z),arT=a("4576"),arU=a("31539"),arV=a(z),arW=a("4043"),arX=a("27774"),arY=a(z),arZ=a("3682"),ar0=a("25689"),ar3=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arP=a(p),arQ=[0,a(aO),qU,5,qR,34,[0,a(dS),[0,a(bB),[0,a(aM),0]]]],arM=a(DK),arN=a(yg),arO=a(wP),arR=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arJ=a(p),arK=[0,a(aO),415,5,416,34,[0,a(dS),[0,a(bB),[0,a(aM),0]]]],arG=a("26962"),arH=a("23848"),arI=a("22136"),arL=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arD=a(z),arE=[0,a(aO),rx,5,rx,35,[0,a(dS),[0,a(bB),[0,a(aM),0]]]],aru=a(z),arv=a("4421"),arw=a("30473"),arx=a(z),ary=a("3906"),arz=a("26835"),arA=a(z),arB=a("3557"),arC=a("24821"),arF=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arr=a(p),ars=[0,a(aO),Gc,5,1198,34,[0,a(dS),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aro=a(CL),arp=a(wg),arq=a(Db),art=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arl=a(p),arm=[0,a(aO),1206,5,1207,34,[0,a(dS),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],ari=a("26849"),arj=a("23748"),ark=a("22044"),arn=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arf=a(z),arg=[0,a(aO),EL,5,EL,35,[0,a(dS),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aq8=a(z),aq9=a("4403"),aq_=a("30345"),aq$=a(z),ara=a("3890"),arb=a("26723"),arc=a(z),ard=a("3542"),are=a("24717"),arh=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ase=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aq4=[0,a(Q),iM,5,iM,61,[0,a(ix),[0,a(bX),[0,a(L),0]]]],aq1=a(Bg),aq2=a(v7),aq3=a(Dy),aq5=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqZ=[0,a(aO),BH,5,BH,61,[0,a(ix),[0,a(bB),[0,a(aM),0]]]],aqW=a(DK),aqX=a(yg),aqY=a(wP),aq0=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqU=[0,a(aO),xA,5,xA,61,[0,a(ix),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aqR=a(CL),aqS=a(wg),aqT=a(Db),aqV=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aq6=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqO=[0,a(Q),wI,14,wI,37,[0,a(ix),[0,a(bX),[0,a(L),0]]]],aqL=a("27765"),aqM=a("24198"),aqN=a("22680"),aqP=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqJ=[0,a(aO),z1,14,z1,37,[0,a(ix),[0,a(bB),[0,a(aM),0]]]],aqG=a("26826"),aqH=a("23380"),aqI=a("21913"),aqK=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqE=[0,a(aO),f7,14,f7,37,[0,a(ix),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aqB=a(Ge),aqC=a("23282"),aqD=a("21821"),aqF=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqQ=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aq7=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqx=a(p),aqy=[0,a(Q),dT,5,be,34,[0,a(cG),[0,a(bX),[0,a(L),0]]]],aqu=a("30850"),aqv=a("26887"),aqw=a("25200"),aqz=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqr=a(p),aqs=[0,a(Q),zo,5,115,34,[0,a(cG),[0,a(bX),[0,a(L),0]]]],aqo=a("37207"),aqp=a("32910"),aqq=a("30548"),aqt=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aql=a(z),aqm=[0,a(Q),kC,5,kC,35,[0,a(cG),[0,a(bX),[0,a(L),0]]]],aqc=a(z),aqd=a("6101"),aqe=a("42052"),aqf=a(z),aqg=a("5390"),aqh=a("37032"),aqi=a(z),aqj=a("4909"),aqk=a("34252"),aqn=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ap$=a(p),aqa=[0,a(aO),87,5,88,34,[0,a(cG),[0,a(bB),[0,a(aM),0]]]],ap8=a("29807"),ap9=a(sg),ap_=a("24348"),aqb=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ap5=a(p),ap6=[0,a(aO),97,5,98,34,[0,a(cG),[0,a(bB),[0,a(aM),0]]]],ap2=a("35949"),ap3=a(mV),ap4=a("29515"),ap7=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apZ=a(z),ap0=[0,a(aO),c4,5,c4,35,[0,a(cG),[0,a(bB),[0,a(aM),0]]]],apQ=a(z),apR=a("5895"),apS=a("40630"),apT=a(z),apU=a(rO),apV=a(sd),apW=a(z),apX=a("4743"),apY=a("33094"),ap1=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apN=a(p),apO=[0,a(aO),884,5,885,34,[0,a(cG),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],apK=a("29682"),apL=a("25859"),apM=a("24246"),apP=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apH=a(p),apI=[0,a(aO),894,5,gG,34,[0,a(cG),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],apE=a("35799"),apF=a(Bc),apG=a("29392"),apJ=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apB=a(z),apC=[0,a(aO),Cb,5,Cb,35,[0,a(cG),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aps=a(z),apt=a("5870"),apu=a("40460"),apv=a(z),apw=a(wy),apx=a(AL),apy=a(z),apz=a("4723"),apA=a(yP),apD=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqA=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apo=[0,a(Q),hU,14,hU,42,[0,a("Article 12"),[0,a(bX),[0,a(L),0]]]],apl=a(p),apm=a(ig),apn=a(ig),apf=[0,a(aO),x7,14,x7,29,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],ao$=a(p),apa=a(sg),apb=a(mV),apc=a(z),apd=a(rO),ape=a(sd),apg=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ao_=[0,a(Q),hn,14,hn,29,[0,a(cF),[0,a(bX),[0,a(L),0]]]],ao4=a(p),ao5=a(sg),ao6=a(mV),ao7=a(z),ao8=a(rO),ao9=a(sd),aph=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ao2=[0,a(aO),rW,14,rW,29,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aoW=a(p),aoX=a("25869"),aoY=a(Bc),aoZ=a(z),ao0=a(wy),ao1=a(AL),ao3=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aoR=[0,a(Q),fR,14,fR,44,[0,a(mI),[0,a(bX),[0,a(L),0]]]],aoz=a(p),aoA=a("494900"),aoB=a("709000"),aoC=a(z),aoD=a("845600"),aoE=a(X),aoF=a("864600"),aoG=a(_),aoH=a("897700"),aoI=a(ah),aoJ=a("931100"),aoK=a(P),aoL=a("964200"),aoM=a(dn),aoN=a(CE),aoO=a(dn),aoP=a("32800"),aoQ=a(CE),aoS=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aox=[0,a(aO),27,14,27,44,[0,a(mI),[0,a("Articles valables du 1er juillet 2022 au 31 d\xc3\xa9cembre 2022"),[0,a(aM),0]]]],aof=a(p),aog=a("487000"),aoh=a("697700"),aoi=a(z),aoj=a(BR),aok=a(X),aol=a("850900"),aom=a(_),aon=a("883400"),aoo=a(ah),aop=a("916300"),aoq=a(P),aor=a("948800"),aos=a(dn),aot=a(Do),aou=a(dn),aov=a("32300"),aow=a(Do),aoy=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aod=[0,a(aO),rA,14,rA,44,[0,a(mI),[0,a("Articles valables du 1er janvier 2022 au 30 juin 2022"),[0,a(aM),0]]]],anX=a(p),anY=a("468300"),anZ=a("670900"),an0=a(z),an1=a("800200"),an2=a(X),an3=a("819200"),an4=a(_),an5=a("849500"),an6=a(ah),an7=a("881100"),an8=a(P),an9=a("912400"),an_=a(dn),an$=a(A0),aoa=a(dn),aob=a("31100"),aoc=a(A0),aoe=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anV=[0,a(aO),zg,14,zg,44,[0,a(mI),[0,a("Articles valables du 1er janvier 2020 au 31 d\xc3\xa9cembre 2021"),[0,a(aM),0]]]],anD=a(p),anE=a("458800"),anF=a("657200"),anG=a(z),anH=a("783900"),anI=a(X),anJ=a("801500"),anK=a(_),anL=a(BR),anM=a(ah),anN=a("863100"),anO=a(P),anP=a("893800"),anQ=a(dn),anR=a(vx),anS=a(dn),anT=a(os),anU=a(vx),anW=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anw=[0,a(aO),gc,14,gc,40,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],ane=a(p),anf=a(rz),ang=a(rs),anh=a(z),ani=a(qF),anj=a(X),ank=a(rc),anl=a(_),anm=a(r8),ann=a(ah),ano=a(qC),anp=a(P),anq=a(rj),anr=a(dn),ans=a(hL),ant=a(dn),anu=a(rn),anv=a(hL),anx=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],and=[0,a(aO),yD,14,yD,40,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],amX=a(p),amY=a(rz),amZ=a(rs),am0=a(z),am1=a(qF),am2=a(X),am3=a(rc),am4=a(_),am5=a(r8),am6=a(ah),am7=a(qC),am8=a(P),am9=a(rj),am_=a(dn),am$=a(hL),ana=a(dn),anb=a(rn),anc=a(hL),any=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amW=[0,a(Q),Ad,14,Ad,40,[0,a(cF),[0,a(bX),[0,a(L),0]]]],amE=a(p),amF=a(rz),amG=a(rs),amH=a(z),amI=a(qF),amJ=a(X),amK=a(rc),amL=a(_),amM=a(r8),amN=a(ah),amO=a(qC),amP=a(P),amQ=a(rj),amR=a(dn),amS=a(hL),amT=a(dn),amU=a(rn),amV=a(hL),anz=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amy=[0,a(d),iz,14,iz,50,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amu=[0,a(Q),nT,14,nT,41,[0,a("Article 11"),[0,a(bX),[0,a(L),0]]]],amt=a(kk),amp=[0,a(E),zd,14,zd,29,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],amo=a(xp),amq=[0,a(d),oN,11,oN,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amn=[0,a(d),oN,11,oN,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amr=[0,a(aD),[0,a("fraction_l832_3"),0]],amv=[0,a(d),nk,11,nk,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ams=[0,a(d),nk,11,nk,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amw=[0,a(aD),[0,a("montant_forfaitaire_d823_16"),0]],amz=[0,a(d),iz,14,iz,50,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amA=[0,a(aD),[0,a(ky),0]],amx=[0,a(d),iz,14,iz,50,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amB=[0,a(aD),[0,a(eJ),[0,a(bk),0]]],amC=[0,a(aD),[0,a(eJ),[0,a(bk),0]]],anA=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amD=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anB=[0,a(aD),[0,a(E7),0]],aoT=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anC=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aoU=[0,a(aD),[0,a("abattement_forfaitaire_d823_17"),0]],api=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aoV=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apj=[0,a(aD),[0,a("loyer_r\xc3\xa9f\xc3\xa9rence"),0]],app=[0,a(d),mm,11,mm,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apk=[0,a(d),mm,11,mm,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apq=[0,a(aD),[0,a("montant_minimal_aide_d823_16"),0]],asf=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apr=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asg=[0,a(aD),[0,a(CV),0]],asL=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ash=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asM=[0,a(aD),[0,a(ze),0]],asR=[0,a(d),nS,10,nS,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asN=[0,a(d),nS,10,nS,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asS=[0,a(aD),[0,a("loyer_principal_avec_r\xc3\xa9duction_meubl\xc3\xa9"),0]],asY=[0,a(d),m_,11,m_,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asT=[0,a(d),m_,11,m_,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asZ=[0,a(aD),[0,a("plafond_suppression_d823_16"),0]],as5=[0,a(d),oX,11,oX,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as0=[0,a(d),oX,11,oX,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as6=[0,a(aD),[0,a("plafond_d\xc3\xa9gressivit\xc3\xa9_d823_16"),0]],as9=[0,a(d),h$,11,h$,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as7=[0,a(d),h$,11,h$,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as_=[0,a(aD),[0,a("loyer_\xc3\xa9ligible"),0]],atf=[0,a(aD),[0,a(kr),0]],atz=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atg=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atA=[0,a(aD),[0,a(E8),0]],atO=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atB=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atP=[0,a(aD),[0,a("rapport_loyers"),0]],atZ=[0,a(aD),[0,a(bI),0]],auF=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],at0=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auG=[0,a(aD),[0,a("taux_loyer_\xc3\xa9ligible_formule"),0]],auV=[0,a(aD),[0,a(bJ),0]],au9=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auW=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],au_=[0,a(aD),[0,a("taux_loyer_\xc3\xa9ligible_taux_arrondi"),0]],avi=[0,a(aD),[0,a(ki),0]],avl=[0,a(d),oD,11,oD,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avj=[0,a(d),oD,11,oD,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avm=[0,a(aD),[0,a("taux_prise_compte_ressources"),0]],avv=[0,a(aD),[0,a(fl),0]],avA=[0,a(d),nX,12,nX,37,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avw=[0,a(d),nX,12,nX,37,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avB=[0,a(aD),[0,a(CD),0]],avG=[0,a(d),mN,12,mN,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avC=[0,a(d),mN,12,mN,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avH=[0,a(aD),[0,a(cX),0]],avJ=a(ih),avI=[0,a(E),l0,13,l0,74,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avO=[0,a(E),l0,13,l0,74,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avL=a(xp),avM=a(oE),avK=[0,a(aG),eU,13,eU,61,[0,a(qS),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],avN=[0,a(aG),eU,13,eU,61,[0,a(qS),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],amb=[7,0],amc=[5,0],amd=[4,0],ame=[3,0],amf=[2,0],amg=[1,0],amh=[0,0],ami=[6,0],amj=[0,a(bw),29,5,38,6,[0,a(b6),[0,a(lT),[0,a(aC),0]]]],ama=a(wM),amk=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],al9=[8,0],al_=[0,a(bw),47,5,49,6,[0,a(b6),[0,a(lT),[0,a(aC),0]]]],al8=a(xL),al$=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alY=[7,0],alZ=[5,0],al0=[4,0],al1=[3,0],al2=[2,0],al3=[1,0],al4=[0,0],al5=[6,0],al6=[0,a(bw),68,5,77,6,[0,a(b6),[0,a(nO),[0,a(aC),0]]]],alX=a(AO),al7=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alU=[8,0],alV=[0,a(bw),86,5,88,6,[0,a(b6),[0,a(nO),[0,a(aC),0]]]],alT=a(vc),alW=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alJ=[7,0],alK=[5,0],alL=[4,0],alM=[3,0],alN=[2,0],alO=[1,0],alP=[0,0],alQ=[6,0],alR=[0,a(bw),c4,5,bp,6,[0,a(b6),[0,a(lW),[0,a(aC),0]]]],alI=a(Br),alS=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alF=[8,0],alG=[0,a(bw),cs,5,cQ,6,[0,a(b6),[0,a(lW),[0,a(aC),0]]]],alE=a(EE),alH=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alu=[7,0],alv=[5,0],alw=[4,0],alx=[3,0],aly=[2,0],alz=[1,0],alA=[0,0],alB=[6,0],alC=[0,a(bw),eY,5,fK,6,[0,a(b6),[0,a(nl),[0,a(aC),0]]]],alt=a(BJ),alD=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alq=[8,0],alr=[0,a(bw),qT,5,nU,6,[0,a(b6),[0,a(nl),[0,a(aC),0]]]],alp=a(wZ),als=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alf=[7,0],alg=[5,0],alh=[4,0],ali=[3,0],alj=[2,0],alk=[1,0],all=[0,0],alm=[6,0],aln=[0,a(bw),h1,5,iM,6,[0,a(fW),[0,a(mL),[0,a(aC),0]]]],ale=a(zK),alo=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alb=[8,0],alc=[0,a(bw),w4,5,yA,6,[0,a(fW),[0,a(mL),[0,a(aC),0]]]],ala=a(ED),ald=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],ak2=[7,0],ak3=[5,0],ak4=[4,0],ak5=[3,0],ak6=[2,0],ak7=[1,0],ak8=[0,0],ak9=[6,0],ak_=[0,a(bw),vI,5,E3,6,[0,a(fW),[0,a(oo),[0,a(aC),0]]]],ak1=a(El),ak$=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],akY=[8,0],akZ=[0,a(bw),E$,5,vE,6,[0,a(fW),[0,a(oo),[0,a(aC),0]]]],akX=a(Fk),ak0=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],akN=[7,0],akO=[5,0],akP=[4,0],akQ=[3,0],akR=[2,0],akS=[1,0],akT=[0,0],akU=[6,0],akV=[0,a(bw),rq,5,nT,6,[0,a(b6),[0,a(m8),[0,a(aC),0]]]],akM=a(v9),akW=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],akJ=[8,0],akK=[0,a(bw),A9,5,ni,6,[0,a(b6),[0,a(m8),[0,a(aC),0]]]],akI=a(zJ),akL=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],aml=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],akH=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],amm=[0,a(ho),[0,a(z2),0]],akD=[0,a(eL),28,5,29,33,[0,a(Cn),[0,a(cf),0]]],akC=a(xO),akE=[0,a(eL),6,12,6,19,[0,a(cf),0]],akA=[0,a(eL),48,5,49,33,[0,a(AH),[0,a(cf),0]]],akz=a(xm),akB=[0,a(eL),6,12,6,19,[0,a(cf),0]],akx=[0,a(eL),64,5,65,33,[0,a(Ca),[0,a(cf),0]]],akw=a(BY),aky=[0,a(eL),6,12,6,19,[0,a(cf),0]],aku=[0,a(eL),82,5,83,33,[0,a(wV),[0,a(cf),0]]],akt=a(BS),akv=[0,a(eL),6,12,6,19,[0,a(cf),0]],akF=[0,a(eL),6,12,6,19,[0,a(cf),0]],aks=[0,a(eL),6,12,6,19,[0,a(cf),0]],akG=[0,a(f_),[0,a(bQ),0]],akn=[0,a(E),za,14,za,28,[0,a(kP),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],akm=a(p),ako=[0,a(d),f8,12,f8,26,[0,a(ck),[0,a(A),[0,a(e),0]]]],akl=[0,a(E),Dg,14,Dg,28,[0,a(kJ),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],akk=a(p),akp=[0,a(d),f8,12,f8,26,[0,a(ck),[0,a(A),[0,a(e),0]]]],akf=[0,a(E),q1,20,q1,55,[0,a(kJ),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],akc=a(p),akd=a(p),ake=a(kI),akg=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],aka=[0,a(E),DH,20,DH,51,[0,a(kJ),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aj9=a(p),aj_=a(p),aj$=a(kI),akb=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],aj7=[0,a(E),x$,7,x$,42,[0,a(kP),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aj3=a(Cz),aj4=a(et),aj5=a(kI),aj6=a(p),aj8=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],aj1=[0,a(E),wH,7,wH,51,[0,a(kP),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajX=a(Cz),ajY=a(et),ajZ=a(kI),aj0=a(p),aj2=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajS=[0,a(E),wA,14,wA,36,[0,a(kJ),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajT=[0,a(d),fJ,11,fJ,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajQ=[0,a(E),BU,14,BU,36,[0,a(kP),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajP=a(cI),ajR=[0,a(d),fJ,11,fJ,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajJ=[0,a(E),vO,14,vO,36,[0,a(kP),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajK=[0,a(d),fL,11,fL,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajI=[0,a(E),xU,14,xU,36,[0,a(kJ),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajL=[0,a(d),fL,11,fL,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajE=[0,a(E),vS,14,vS,36,[0,a("Article R824-3"),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajz=[0,0],ajA=[1,0],ajB=[1,0],ajC=[0,0],ajD=[0,0],ajF=[0,a(d),op,11,op,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajy=[0,a(d),op,11,op,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajG=[0,a(kH),[0,a("mode_occupation_impay\xc3\xa9"),0]],ajM=[0,a(d),fL,11,fL,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajH=[0,a(d),fL,11,fL,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajN=[0,a(kH),[0,a("d\xc3\xa9pense_logement_brute"),0]],ajU=[0,a(d),fJ,11,fJ,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajO=[0,a(d),fJ,11,fJ,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajV=[0,a(kH),[0,a("d\xc3\xa9pense_logement_nette"),0]],akh=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajW=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],aki=[0,a(kH),[0,a("seuil_impay\xc3\xa9_d\xc3\xa9pense_de_logement"),0]],akq=[0,a(d),f8,12,f8,26,[0,a(ck),[0,a(A),[0,a(e),0]]]],akj=[0,a(d),f8,12,f8,26,[0,a(ck),[0,a(A),[0,a(e),0]]]],akr=[0,a(kH),[0,a("montant_impay\xc3\xa9"),0]],ajt=[0,a(c8),rR,5,rR,42,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(ab),[0,a(af),0]]]]]]]]]],aju=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajr=[0,a(c8),eB,5,eB,41,[0,a(kG),[0,a(kt),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],ajs=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajp=[0,a(c8),266,5,vK,42,[0,a(kG),[0,a(kt),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],ajq=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajm=a("1952"),ajn=[0,a(c8),xj,5,xj,48,[0,a(kG),[0,a(kt),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],ajo=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajj=a("1953"),ajk=[0,a(c8),ni,5,ni,48,[0,a(kG),[0,a(kt),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],ajl=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajg=a("1954"),ajh=[0,a(c8),di,5,di,48,[0,a(kG),[0,a(kt),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],aji=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajv=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajf=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajw=[0,a(rK),[0,a("\xc3\xa2ge_ouverture_droit"),0]],ajc=[0,a(E),xJ,14,xJ,36,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ai0=a(p),ai1=a(D8),ai2=a(wr),ai3=a(z),ai4=a(ih),ai5=a(X),ai6=a(ov),ai7=a(_),ai8=a(qE),ai9=a(ah),ai_=a(hQ),ai$=a(ah),aja=a(kd),ajb=a(hQ),ajd=[0,a(d),n6,12,n6,34,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aiZ=[0,a(d),n6,12,n6,34,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aje=[0,a(kq),[0,a(v_),0]],aiV=[0,a(E),yp,5,yp,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aiH=a(p),aiI=a("1.2"),aiJ=a("1.5"),aiK=a(z),aiL=a(ih),aiM=a(X),aiN=a(ov),aiO=a(_),aiP=a(qE),aiQ=a(ah),aiR=a(hQ),aiS=a(ah),aiT=a(kd),aiU=a(hQ),aiW=[0,a(d),hv,12,hv,34,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aiG=[0,a(E),vP,14,vP,36,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ais=a(p),ait=a(D8),aiu=a(wr),aiv=a(z),aiw=a(ih),aix=a(X),aiy=a(ov),aiz=a(_),aiA=a(qE),aiB=a(ah),aiC=a(hQ),aiD=a(ah),aiE=a(kd),aiF=a(hQ),aiX=[0,a(d),hv,12,hv,34,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],air=[0,a(d),hv,12,hv,34,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aiY=[0,a(kw),[0,a(r5),0]],ain=[0,a(E),oM,5,oM,26,[0,a(rv),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ail=a(b5),aik=a(cI),aim=a(b5),aio=[0,a(d),iK,12,iK,19,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aij=[0,a(E),xc,14,xc,21,[0,a(rv),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aih=a(b5),aig=a(cI),aii=a(b5),aic=[0,a(E),EC,14,EC,50,[0,a(rv),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aib=[1,0],ah8=[0,a(Q),By,5,By,26,[0,a(sx),[0,a(fg),[0,a(L),0]]]],ahT=a("0.328"),ahU=a(xZ),ahV=[1,0],ahW=a(wc),ahX=a(DT),ahY=a(xZ),ahZ=a(vp),ah0=a(y4),ah1=a(DT),ah2=a("0.024"),ah3=a(ww),ah4=a(y4),ah5=a(b5),ah6=a(p),ah7=a(ww),ah9=[0,a(d),gJ,11,gJ,35,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ahS=[0,a(Q),FK,14,FK,38,[0,a(sx),[0,a(fg),[0,a(L),0]]]],ahA=a("0.48"),ahB=a(xn),ahC=[1,0],ahD=a(sr),ahE=a(y9),ahF=a(xn),ahG=a("0.264"),ahH=a(yr),ahI=a(y9),ahJ=a("0.216"),ahK=a(Eg),ahL=a(yr),ahM=a("0.104"),ahN=a(yo),ahO=a(Eg),ahP=a(Cw),ahQ=a(p),ahR=a(yo),ahw=[0,a(Q),z7,14,z7,41,[0,a(sx),[0,a(fg),[0,a(L),0]]]],ahu=a("7632"),ahv=a("4557"),ahx=[0,a(d),l7,11,l7,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aht=[0,a(d),l7,11,l7,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ahy=[0,a(dP),[0,a("montant_forfaitaire_d832_26"),0]],ah_=[0,a(d),gJ,11,gJ,35,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ahz=[0,a(d),gJ,11,gJ,35,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ah$=[0,a(dP),[0,a("tranches_revenus_d832_26"),0]],aid=[0,a(d),nz,11,nz,47,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aia=[0,a(d),nz,11,nz,47,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aie=[0,a(dP),[0,a("tranches_revenus_d832_26_multipli\xc3\xa9es"),0]],aip=[0,a(d),iK,12,iK,19,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aif=[0,a(d),iK,12,iK,19,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aiq=[0,a(dP),[0,a(bQ),0]],ahp=[0,a(fc),gf,5,gf,34,[0,a(cF),[0,a(rp),[0,a(st),0]]]],ahq=[0,a(d),n8,12,n8,19,[0,a(fM),[0,a(i),[0,a(e),0]]]],aho=[0,a(d),n8,12,n8,19,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahl=[0,a(fc),xT,39,xT,68,[0,a(nv),[0,a(rp),[0,a(st),0]]]],ahk=a(lX),ahf=[0,a(c8),37,9,37,20,[0,a("Article L136-1-3"),[0,a("Section 1 : De la contribution sociale sur les revenus d'activit\xc3\xa9 et sur les revenus de remplacement"),[0,a("Chapitre 6 : Contribution sociale g\xc3\xa9n\xc3\xa9ralis\xc3\xa9e"),[0,a(jc),[0,a(ab),[0,a(af),0]]]]]]],ahg=[0,a(d),f4,11,f4,22,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahe=[0,a(d),f4,11,f4,22,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahh=[0,a(d),f4,11,f4,22,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahd=[0,a(d),f4,11,f4,22,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahi=[0,a(bk),[0,a("exon\xc3\xa9r\xc3\xa9_csg"),0]],ahm=[0,a(d),hX,11,hX,20,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahj=[0,a(d),hX,11,hX,20,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahn=[0,a(bk),[0,a("taux_crds"),0]],ahr=[0,a(bk),[0,a(bQ),0]],ahs=[0,a(fc),fD,13,fD,24,[0,a(cF),[0,a(rp),[0,a(st),0]]]],ag5=a("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16_in"),ag6=a(hA),ag7=a(hY),ag8=a(iE),ag9=a(iF),ag_=a(kB),ag$=a(AP),aha=a(vn),ahb=a(C_),ahc=[0,a("CalculAllocationLogementFoyer_in"),0],agQ=a(z5),agR=a("charges_mensuelles_pr\xc3\xaat_in"),agS=a(yS),agT=a(AJ),agU=a(yf),agV=a(u5),agW=a(Am),agX=a(wQ),agY=a(hA),agZ=a(hY),ag0=a(iE),ag1=a(iF),ag2=a("ressources_m\xc3\xa9nage_arrondies_base_in"),ag3=[0,a("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"),0],agB=a("changement_logement_d842_4_in"),agC=a(vN),agD=a(Bn),agE=a(BD),agF=a(B0),agG=a(Bw),agH=a(Fr),agI=a(hY),agJ=a(iE),agK=a(iF),agL=a(hA),agM=a(F_),agN=a(kB),agO=a("loyer_principal_in"),agP=[0,a("CalculAllocationLogementLocatif_in"),0],agm=a(hA),agn=a("anciennet\xc3\xa9_logement_in"),ago=a("type_pr\xc3\xaat_in"),agp=a(hY),agq=a(Am),agr=a(z5),ags=a(yS),agt=a(AJ),agu=a(u5),agv=a(yf),agw=a(iE),agx=a(iF),agy=a(kB),agz=a(wQ),agA=[0,a("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"),0],aga=a("n_nombre_parts_d832_25_in"),agb=a("condition_2_du_832_25_in"),agc=a(AP),agd=a(hA),age=a(hY),agf=a(iE),agg=a(iF),agh=a(kB),agi=a(vn),agj=a(C_),agk=[0,a("CalculAidePersonnalis\xc3\xa9eLogementFoyer_in"),0],afX=a(vN),afY=a(Bn),afZ=a(BD),af0=a(B0),af1=a(Bw),af2=a(Fr),af3=a(hY),af4=a(iE),af5=a(iF),af6=a(hA),af7=a(F_),af8=a(kB),af9=a("loyer_principal_base_in"),af_=[0,a("CalculAidePersonnalis\xc3\xa9eLogementLocatif_in"),0],afO=a("enfant_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_quatri\xc3\xa8me_mois_grossesse"),afP=a("condition_rattach\xc3\xa9_foyer_fiscal_parent_ifi"),afQ=a("situation_familiale"),afR=a("nombre_autres_occupants_logement"),afS=a("personnes_\xc3\xa0_charge"),afT=a("logement"),afU=a("prestations_re\xc3\xa7ues"),afV=[0,a("M\xc3\xa9nage"),0],afE=a("zone"),afF=a("surface_m_carr\xc3\xa9s"),afG=a("logement_decent_l89_462"),afH=a("usufruit"),afI=a("lou\xc3\xa9_ou_sous_lou\xc3\xa9_\xc3\xa0_des_tiers"),afJ=a("propri\xc3\xa9taire"),afK=a("mode_occupation"),afL=a("est_ehpad_ou_maison_autonomie_l313_12_asf"),afM=a("r\xc3\xa9sidence_principale"),afN=[0,a("Logement"),0],afy=a(y$),afA=a("R\xc3\xa9sidentLogementFoyer"),afB=a("AccessionPropri\xc3\xa9t\xc3\xa9LocalUsageExclusifHabitation"),afC=a(Dj),afD=a(xV),afz=[0,a("ModeOccupation"),0],afu=a(F0),afw=a("AccessionPropri\xc3\xa9t\xc3\xa9"),afx=a(xY),afv=[0,a("Cat\xc3\xa9gorieCalculAPL"),0],afl=a("changement_logement_d842_4"),afm=a("logement_meubl\xc3\xa9_d842_2"),afn=a("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),afo=a("colocation"),afp=a("logement_est_chambre"),afq=a("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),afr=a("loyer_principal"),afs=a("bailleur"),aft=[0,a(F0),0],afg=a("personne_h\xc3\xa9berg\xc3\xa9e_centre_soin_l_L162_22_3_s\xc3\xa9curit\xc3\xa9_sociale"),afh=a("patrimoine"),afi=a("nationalit\xc3\xa9"),afj=a(Bo),afk=[0,a(qx),0],afd=a(DZ),aff=a(CO),afe=[0,a("Personne\xc3\x80Charge"),0],ae3=a("pr\xc3\xaat"),ae4=a("anciennet\xc3\xa9_logement"),ae5=a("situation_r822_11_13_17"),ae6=a("copropri\xc3\xa9t\xc3\xa9"),ae7=a("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire"),ae8=a("type_travaux_logement_r842_5"),ae9=a("type_travaux_logement_d832_15"),ae_=a("date_entr\xc3\xa9e_logement"),ae$=a("charges_mensuelles_pr\xc3\xaat"),afa=a("mensualit\xc3\xa9_principale"),afb=a("logement_situ\xc3\xa9_commune_d\xc3\xa9s\xc3\xa9quilibre_l831_2"),afc=[0,a("Propri\xc3\xa9taire"),0],ae0=a(AQ),ae2=a(zy),ae1=[0,a("ChangementLogementD842_4"),0],aeX=a("Fran\xc3\xa7aise"),aeZ=a("\xc3\x89trang\xc3\xa8re"),aeY=[0,a("Nationalit\xc3\xa9"),0],aeU=a(kQ),aeW=a(o7),aeV=[0,a("Lou\xc3\xa9OuSousLou\xc3\xa9\xc3\x80DesTiers"),0],aeQ=a(CT),aeS=a("BailleurPriv\xc3\xa9AvecConventionnementSocial"),aeT=a("BailleurPriv\xc3\xa9"),aeR=[0,a("TypeBailleur"),0],aeI=a("situation_garde_altern\xc3\xa9e"),aeJ=a(rE),aeK=a(q4),aeL=a(q3),aeM=a(qW),aeN=a(qH),aeO=a(rw),aeP=[0,a(DZ),0],aeA=a(qH),aeB=a(qW),aeC=a(EZ),aeD=a(q3),aeE=a(q4),aeF=a(rE),aeG=a(rw),aeH=[0,a("EnfantPrestationsFamiliales"),0],aes=a("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16"),aet=a("redevance"),aeu=a("construit_application_loi_1957_12_III"),aev=a("date_conventionnement"),aew=a(Fh),aex=a("remplit_conditions_r832_21"),aey=a("type"),aez=[0,a(xY),0],aek=a("titulaire_allocation_personne_\xc3\xa2g\xc3\xa9e"),ael=a("b\xc3\xa9n\xc3\xa9ficiaire_l161_19_l351_8_l643_3_s\xc3\xa9cu"),aem=a("incapacit\xc3\xa9_80_pourcent_ou_restriction_emploi"),aen=a("parent\xc3\xa9"),aeo=a("ascendant_descendant_collat\xc3\xa9ral_deuxi\xc3\xa8me_troisi\xc3\xa8me_degr\xc3\xa9"),aep=a("ressources"),aeq=a(Bo),aer=[0,a(CO),0],aeg=a(u_),aeh=a(vo),aei=a(EK),aej=[0,a("TrancheRevenuD\xc3\xa9cimal"),0],aeb=a(u_),aec=a(vo),aed=a(EK),aee=[0,a("TrancheRevenu"),0],ad9=a(Az),ad$=a(C6),ad_=[0,a("NeufOuAncien"),0],ad5=a("titulaire_pr\xc3\xaat"),ad6=a("date_signature"),ad7=a("type_pr\xc3\xaat"),ad8=[0,a("Pr\xc3\xaat"),0],adY=a(aw),adZ=a(cX),ad0=a(FQ),ad1=a(qB),ad2=a(ve),ad3=a(q7),ad4=[0,a(ao),0],adU=a(aw),adV=a(cX),adW=[0,a(V),0],adR=a(aw),adS=a(cX),adT=[0,a(bh),0],adO=a("ancienne_allocation_logement"),adP=a("ancien_loyer_principal"),adQ=[0,a("InfosChangementLogementD842_4"),0],adL=a(aw),adM=a(cX),adN=[0,a("Traitement_formule_aide_finale"),0],adF=a(aw),adG=a(cX),adH=a("coefficient_prise_en_charge_d832_10"),adI=a(q_),adJ=a(sq),adK=[0,a(aj),0],adu=a(aw),adv=a(cX),adw=a("coefficient_prise_en_charge_d832_25"),adx=a(vs),ady=a(zT),adz=a(xN),adA=a(r5),adB=a(Ej),adC=a(A2),adD=[0,a(au),0],adl=a(aw),adm=a(cX),adn=a(CD),ado=a(E7),adp=a(E8),adq=a(CV),adr=a(ze),ads=[0,a(aD),0],adi=a("satisfait_conditions_l512_2_code_s\xc3\xa9curit\xc3\xa9_sociale"),adj=[0,a("Conditions\xc3\x89trangers"),0],adf=a("ne_produisant_pas_revenu_p\xc3\xa9riode_r822_3_3_r822_4"),adg=a("produisant_revenu_p\xc3\xa9riode_r822_3_3_r822_4"),adh=[0,a("Patrimoine"),0],adc=a("conforme_article_l442_1"),add=a("date_naissance_personne_sous_location"),ade=[0,a("PersonneSousLocation"),0],ada=a("conventionn\xc3\xa9_livre_III_titre_II_chap_I_sec_3"),adb=[0,a("ConventionANHA"),0],ac9=a("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_per\xc3\xa7ue"),ac_=a(Fh),ac$=[0,a("ConventionBailleurSocial"),0],ac0=a(ol),ac2=a(U),ac3=a(qV),ac4=a(nY),ac5=a(DP),ac6=a(i0),ac7=a(BQ),ac8=a(yW),ac1=[0,a(FP),0],acV=a(ks),acX=a(kh),acY=a(Cg),acW=[0,a(CS),0],acP=a(A3),acR=a(D1),acS=a(j7),acT=a(Fs),acU=a(yI),acQ=[0,a("PriseEnChargeEnfant"),0],acF=a(mw),acH=a(oy),acI=a(l$),acJ=a(Dp),acK=a(yR),acL=a(o9),acM=a(C0),acN=a(no),acO=a(oK),acG=[0,a(BT),0],acC=a(EV),acE=a(Ak),acD=[0,a("SituationFamilialeCalculAPL"),0],acx=a("\xc3\x89tudiantLog\xc3\xa9EnChambreCROUS"),acz=a("\xc3\x89tudiantLog\xc3\xa9EnChambreCROUSR\xc3\xa9habilit\xc3\xa9e"),acA=a("Personnes\xc3\x82g\xc3\xa9esSelon3DeD842_16"),acB=a(ET),acy=[0,a("Cat\xc3\xa9gorie\xc3\x89quivalenceLoyerAllocationLogementFoyer"),0],acs=a("LogementPersonnes\xc3\x82g\xc3\xa9esOuHandicap\xc3\xa9es"),acu=a("R\xc3\xa9sidenceSociale"),acv=a("FoyerJeunesTrvailleursOuMigrantsConventionn\xc3\xa9L353_2Avant1995"),acw=a(il),act=[0,a("TypeLogementFoyer"),0],acl=a("C\xc3\xa9libataire"),acn=a("Mari\xc3\xa9s"),aco=a("Pacs\xc3\xa9s"),acp=a(yT),acq=a("C\xc3\xa9libataireS\xc3\xa9par\xc3\xa9DeFait"),acr=a("ConcubinageDontS\xc3\xa9par\xc3\xa9DeFait"),acm=[0,a("SituationFamiliale"),0],ach=a("AidePersonnalis\xc3\xa9eLogement"),acj=a(oW),ack=a(nm),aci=[0,a("TypeAidesPersonnelleLogement"),0],acd=a("Pas\xc3\x89ligible"),acf=a(oW),acg=a(nm),ace=[0,a("Type\xc3\x89ligibilit\xc3\xa9AllocationLogement"),0],aca=a("Impay\xc3\xa9Loyer"),acc=a("Impay\xc3\xa9Pr\xc3\xaat"),acb=[0,a("ModeOccupationImpay\xc3\xa9"),0],ab7=a("TotalAnnuel\xc3\x89ch\xc3\xa9ances"),ab9=a("Mensualit\xc3\xa9"),ab_=a(Fw),ab8=[0,a("D\xc3\xa9penseLogement"),0],ab3=a(y_),ab5=a(wa),ab6=a(yL),ab4=[0,a("ZoneDHabitation"),0],abZ=a(Bf),ab1=a(A7),ab2=a("Collat\xc3\xa9ralDeuxi\xc3\xa8meTroisi\xc3\xa8meDegr\xc3\xa9"),ab0=[0,a("Parent\xc3\xa9"),0],abW=a("PasDeGardeAltern\xc3\xa9e"),abY=a("GardeAltern\xc3\xa9eCoefficientPriseEnCharge"),abX=[0,a("SituationGardeAltern\xc3\xa9e"),0],abT=a("DemandeurOuConjointOuParentOuViaPartsSoci\xc3\xa9t\xc3\xa9s"),abV=a(il),abU=[0,a("ParentOuAutre"),0],abM=a(U),abO=a(qV),abP=a(CN),abQ=a(i0),abR=a("AllocationSoutienEnfantHandicap\xc3\xa9"),abS=a("AllocationAdulteHandicap\xc3\xa9"),abN=[0,a("PrestationRe\xc3\xa7ue"),0],abI=a(Ek),abK=a(v5),abJ=[0,a("LimiteTrancheD\xc3\xa9cimal"),0],abF=a(Ek),abH=a(v5),abG=[0,a("LimiteTranche"),0],abC=a(o7),abE=a(kQ),abD=[0,a("Am\xc3\xa9lior\xc3\xa9ParOccupant"),0],abx=a("ObjectifD\xc3\xa9cenceLogement"),abz=a("Pr\xc3\xa9vuDansListeR321_15"),abA=a(Cl),abB=a(ow),aby=[0,a("TypeTravauxLogementR842_5"),0],abt=a(xe),abv=a("TravauxSurLogementD\xc3\xa9j\xc3\xa0AcquisD832_15_2"),abw=a(ow),abu=[0,a("TypeTravauxLogementD832_15"),0],abq=a(qx),abs=a(xG),abr=[0,a("TitulairePr\xc3\xaat"),0],abk=a(Bx),abm=a(xE),abn=a(z4),abo=a(Aa),abp=a(il),abl=[0,a("TypePr\xc3\xaat"),0],bx1=a(aa),bxB=a("The function 'n_nombre_parts_d832_25_in' translation isn't yet supported..."),bxC=a("The function 'condition_2_du_832_25_in' translation isn't yet supported..."),bxz=a("The function 'condition_logement_surface_in' translation isn't yet supported..."),bxA=a("The function 'condition_logement_residence_principale_in' translation isn't yet supported..."),bxt=a("AccessionProprieteLocalUsageExclusifHabitation"),bxu=a(y$),bxv=a(xV),bxw=a("ResidentLogementFoyer"),bxx=a(Dj),bxy=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ModeOccupation.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ModeOccupation.t'")],bxq=a("AutrePersonneACharge"),bxr=a("EnfantACharge"),bxs=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PersonneACharge.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PersonneACharge.t'")],bxm=a(AQ),bxn=a(zy),bxp=[1,0],bxo=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ChangementLogementD8424.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ChangementLogementD8424.t'")],bxi=a("Etrangere"),bxj=a("Francaise"),bxl=[0,0],bxk=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'Nationalite.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'Nationalite.t'")],bxe=a(kQ),bxf=a(o7),bxh=[0,0],bxg=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'LoueOuSousLoueADesTiers.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'LoueOuSousLoueADesTiers.t'")],bw$=a("BailleurPrive"),bxa=a("BailleurPriveAvecConventionnementSocial"),bxb=a(CT),bxd=[2,0],bxc=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeBailleur.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeBailleur.t'")],bw7=a("MoinsDeTroisEnfants"),bw8=a("PlusDeTroisEnfants"),bw_=[0,0],bw9=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'")],bw3=a(C6),bw4=a(Az),bw6=[0,0],bw5=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'NeufOuAncien.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'NeufOuAncien.t'")],bwM=a(v0),bwN=a(x8),bwO=a(nY),bwP=a(EA),bwQ=a(i0),bwR=a(U),bwS=a(qw),bwT=a(ol),bwV=[0,0],bwW=[2,0],bwX=[1,0],bwY=[5,0],bwZ=[6,0],bw0=[3,0],bw1=[7,0],bw2=[4,0],bwU=[0,[11,a(bg),[2,0,[11,a(D2),0]]],a(FR)],bwF=a(r4),bwG=a(ks),bwH=a(kh),bwJ=[1,0],bwK=[0,0],bwL=[2,0],bwI=[0,[11,a(bg),[2,0,[11,a(x2),0]]],a(wz)],bwu=a(j7),bwv=a(rb),bww=a(qP),bwx=a(rt),bwy=a(qM),bwA=[4,0],bwB=[3,0],bwC=[0,0],bwD=[1,0],bwE=[2,0],bwz=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PriseEnChargeEnfant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PriseEnChargeEnfant.t'")],bwb=a(mw),bwc=a(oy),bwd=a(wv),bwe=a(l$),bwf=a(oK),bwg=a(Fl),bwh=a(xg),bwi=a(o9),bwj=a(no),bwl=[7,0],bwm=[5,0],bwn=[4,0],bwo=[6,0],bwp=[8,0],bwq=[2,0],bwr=[3,0],bws=[1,0],bwt=[0,0],bwk=[0,[11,a(bg),[2,0,[11,a(BO),0]]],a(wO)],bv8=a(Ak),bv9=a(EV),bv$=[0,0],bwa=[1,0],bv_=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'SituationFamilialeCalculAPL.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationFamilialeCalculAPL.t'")],bvZ=a(ET),bv0=a("EtudiantLogeEnChambreCROUS"),bv1=a("EtudiantLogeEnChambreCROUSRehabilitee"),bv2=a("PersonnesAgeesSelon3DeD842_16"),bv4=[2,0],bv5=[1,0],bv6=[0,0],bv7=[3,0],bv3=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'")],bvQ=a(il),bvR=a("FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995"),bvS=a("LogementPersonnesAgeesOuHandicapees"),bvT=a("ResidenceSociale"),bvV=[1,0],bvW=[0,0],bvX=[2,0],bvY=[3,0],bvU=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeLogementFoyer.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeLogementFoyer.t'")],bvE=a("Celibataire"),bvF=a("CelibataireSepareDeFait"),bvG=a("ConcubinageDontSepareDeFait"),bvH=a(yT),bvI=a("Maries"),bvJ=a("Pacses"),bvL=[2,0],bvM=[3,0],bvN=[5,0],bvO=[4,0],bvP=[0,0],bvK=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'SituationFamiliale.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationFamiliale.t'")],bvx=a("AidePersonnaliseeLogement"),bvy=a(oW),bvz=a(nm),bvB=[2,0],bvC=[1,0],bvD=[0,0],bvA=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeAidesPersonnelleLogement.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeAidesPersonnelleLogement.t'")],bvt=a(Fw),bvu=a("Mensualite"),bvv=a("TotalAnnuelEcheances"),bvw=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'DepenseLogement.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DepenseLogement.t'")],bvm=a("Bailleur"),bvn=a("Beneficiaire"),bvo=a("EtablissementHabilite"),bvq=[2,0],bvr=[1,0],bvs=[0,0],bvp=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'VersementA.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'VersementA.t'")],bvi=a(kQ),bvj=a("OuiAvecLoyerOuCharges"),bvl=[1,0],bvk=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'")],bvb=a(y_),bvc=a(wa),bvd=a(yL),bvf=[2,0],bvg=[1,0],bvh=[0,0],bve=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ZoneDHabitation.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ZoneDHabitation.t'")],bu7=a("ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse"),bu8=a("AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse"),bu9=a("DateDeNaissance"),bu$=[1,0],bva=[2,0],bu_=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'")],bu0=a(Bf),bu1=a("CollateralDeuxiemeTroisiemeDegre"),bu2=a(A7),bu4=[1,0],bu5=[2,0],bu6=[0,0],bu3=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'Parente.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'Parente.t'")],buW=a("GardeAlterneeCoefficientPriseEnCharge"),buX=a("PasDeGardeAlternee"),buZ=[0,0],buY=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'SituationGardeAlternee.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationGardeAlternee.t'")],buS=a(il),buT=a("DemandeurOuConjointOuParentOuViaPartsSocietes"),buV=[1,0],buU=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ParentOuAutre.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ParentOuAutre.t'")],buF=a("AllocationAdulteHandicape"),buG=a(CN),buH=a("AllocationSoutienEnfantHandicape"),buI=a(i0),buJ=a(U),buK=a(qw),buM=[1,0],buN=[0,0],buO=[3,0],buP=[4,0],buQ=[2,0],buR=[5,0],buL=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PrestationRecue.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PrestationRecue.t'")],buA=a(kQ),buB=a(o7),buD=[0,0],buE=[1,0],buC=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'AmelioreParOccupant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'AmelioreParOccupant.t'")],bur=a(Cl),bus=a("ObjectifDecenceLogement"),but=a(ow),buu=a("PrevuDansListeR321_15"),buw=[1,0],bux=[3,0],buy=[0,0],buz=[2,0],buv=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeTravauxLogementR8425.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementR8425.t'")],buk=a(ow),bul=a(xe),bum=a("TravauxSurLogementDejaAcquisD832_15_2"),buo=[1,0],bup=[0,0],buq=[2,0],bun=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeTravauxLogementD83215.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementD83215.t'")],buf=a(qx),bug=a(xG),bui=[1,0],buj=[0,0],buh=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TitulairePret.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TitulairePret.t'")],bt6=a(il),bt7=a(Bx),bt8=a(z4),bt9=a(xE),bt_=a(Aa),bua=[3,0],bub=[1,0],buc=[2,0],bud=[0,0],bue=[4,0],bt$=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypePret.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypePret.t'")],bt4=[0,a(Fu),a(zz),a(ES),a(AX),a(xk),a(o3),a(ge),a(AW),a(y2),a(vC),a(DB),a(yu),a(A8),a(yE),a(Fe),a(C8),a(BB),a(zr),a(F3),a(BX),a(vt),a(w6),a(AY),a(vf)],bt5=[0,a(ge),a(AX),a(C8),a(BB),a(zr),a(xk),a(vt),a(ES),a(vC),a(AW),a(F3),a(A8),a(DB),a(yE),a(AY),a(zz),a(yu),a(BX),a(vf),a(w6),a(y2),a(Fu),a(Fe),a(o3)],byo=a("AidesLogementLib"),byq=a(aa);function bM(a){if(typeof a==="number")return 0;else switch(a[0]){case @@ -1307,94 +1307,94 @@ E=a[1];return[21,E,bF(a[2],b)];case 23:var F=a[1];return[23,F,bF(a[2],b)];default:var G=a[2],H=a[1];return[24,H,G,bF(a[3],b)]}}function -pn(a,c,b){return a[1]===c?(a[1]=b,1):0}function -aH(a){throw[0,k_,a]}function -b0(a){throw[0,sP,a]}var -sQ=[bm,GX,cZ(0)];function -sV(b,a){return Gz(b,a)?b:a}function -gl(a){return 0<=a?a:-a|0}var -sW=jx(GZ),sX=jx(G0),GY=r$,G2=jx(G1);function +po(a,c,b){return a[1]===c?(a[1]=b,1):0}function +aH(a){throw[0,k8,a]}function +b0(a){throw[0,sU,a]}var +sV=[bm,GW,cZ(0)];function +s0(b,a){return Gy(b,a)?b:a}function +gm(a){return 0<=a?a:-a|0}var +s1=jx(GY),s2=jx(GZ),GX=sc,G1=jx(G0);function bS(d,c){var a=aI(d),e=aI(c),b=bZ(a+e|0);ej(d,0,b,0,a);ej(c,0,b,a,e);return cK(b)}function -G3(a){return a?G4:G5}bze(0);var -G8=GE(1),em=GE(2);function -G9(b){function +G2(a){return a?G3:G4}bzd(0);var +G7=GD(1),em=GD(2);function +G8(b){function a(b){var a=b;for(;;){if(a){var -c=a[2],d=a[1];try{gV(d)}catch(a){a=o(a);if(a[1]!==sT)throw a;var +c=a[2],d=a[1];try{gY(d)}catch(a){a=o(a);if(a[1]!==sY)throw a;var e=a}var -a=c;continue}return 0}}return a(bzf(0))}function -jC(b,a){return sE(b,a,0,aI(a))}function -sY(a){jC(em,a);GF(em,10);return gV(em)}var -pq=[0,G9];function -G$(c){for(;;){var -a=pq[1],d=[0,1],b=1-pn(pq,a,function(a,b){return function(d){if(pn(a,1,0))r(c,0);return r(b,0)}}(d,a));if(b)continue;return b}}function -pr(a){return r(pq[1],0)}sH(a(u2),pr);var -ps=bzs(0),ft=(4*ps|0)-1|0,Hb=[bm,Ha,cZ(0)];function -Hc(a){throw Hb}function -Hd(a){var -c=a[1];a[1]=Hc;try{var -b=r(c,0);bzj(a,b);return b}catch(b){b=o(b);a[1]=function(a){throw b};throw b}}function -pt(b,c,g){var +a=c;continue}return 0}}return a(bze(0))}function +jC(b,a){return sJ(b,a,0,aI(a))}function +s3(a){jC(em,a);GE(em,10);return gY(em)}var +pr=[0,G8];function +G_(c){for(;;){var +a=pr[1],d=[0,1],b=1-po(pr,a,function(a,b){return function(d){if(po(a,1,0))r(c,0);return r(b,0)}}(d,a));if(b)continue;return b}}function +ps(a){return r(pr[1],0)}sM(a(u7),ps);var +pt=bzr(0),fs=(4*pt|0)-1|0,Ha=[bm,G$,cZ(0)];function +Hb(a){throw Ha}function +Hc(a){var +c=a[1];a[1]=Hb;try{var +b=r(c,0);bzi(a,b);return b}catch(b){b=o(b);a[1]=function(a){throw b};throw b}}function +pu(b,c,g){var a=r(c,0);if(a){var -d=a[2],e=a[1],f=function(a){return pt(b,d,a)};return[0,r(b,e),f]}return 0}function -sZ(d,c){var +d=a[2],e=a[1],f=function(a){return pu(b,d,a)};return[0,r(b,e),f]}return 0}function +s4(d,c){var b=c;for(;;){var a=r(b,0);if(a){var e=a[2];r(d,a[1]);var b=e;continue}return 0}}function -s0(a){if(0<=a&&!(m2>>0))e=1}else +g6(k,b){var +c=gm(k),a=aI(b),d=bA(b,0),e=0;if(58<=d){if(71<=d){if(!(5>>0))e=1}else if(65<=d)e=1}else{var -f=0;if(32!==d)if(43<=d)switch(d+AB|0){case +f=0;if(32!==d)if(43<=d)switch(d+Ay|0){case 5:if(a<(c+2|0)&&1>>0){if(33>>0)p=1}else +n=d6(k,j)+Ah|0,p=0;if(59>>0){if(33>>0)p=1}else if(2===n)p=1;if(!p){var j=j+1|0;continue}var -e=fs(k),a=[0,0],t=ds(e)-1|0,y=0;if(!(t<0)){var +e=fr(k),a=[0,0],t=ds(e)-1|0,y=0;if(!(t<0)){var i=y;for(;;){var -f=k0(e,i),g=0;if(32<=f){var +f=kY(e,i),g=0;if(32<=f){var l=f-34|0,q=0;if(58>>0){if(93<=l)q=1}else if(56>>0){g=1;q=1}if(!q){var m=1;g=2}}else @@ -2125,12 +2125,12 @@ m=4;break;case m=2;break}a[1]=a[1]+m|0;var B=i+1|0;if(t!==i){var i=B;continue}break}}if(a[1]===ds(e)){var -r=ds(e),s=bZ(r);gg(e,0,s,0,r);var +r=ds(e),s=bZ(r);gh(e,0,s,0,r);var v=s}else{var b=bZ(a[1]);a[1]=0;var u=ds(e)-1|0,z=0;if(!(u<0)){var h=z;for(;;){var -c=k0(e,h),d=0;if(35<=c)if(92===c)d=2;else +c=kY(e,h),d=0;if(35<=c)if(92===c)d=2;else if(cQ<=c)d=1;else d=3;else if(32<=c)if(34<=c)d=2;else @@ -2139,8 +2139,8 @@ if(14<=c)d=1;else switch(c){case 8:bY(b,a[1],92);a[1]++;bY(b,a[1],98);break;case 9:bY(b,a[1],92);a[1]++;bY(b,a[1],bp);break;case -10:bY(b,a[1],92);a[1]++;bY(b,a[1],ic);break;case -13:bY(b,a[1],92);a[1]++;bY(b,a[1],zy);break;default:d=1}switch(d){case +10:bY(b,a[1],92);a[1]++;bY(b,a[1],ie);break;case +13:bY(b,a[1],92);a[1]++;bY(b,a[1],zo);break;default:d=1}switch(d){case 1:bY(b,a[1],92);a[1]++;bY(b,a[1],48+(c/cd|0)|0);a[1]++;bY(b,a[1],48+((c/10|0)%10|0)|0);a[1]++;bY(b,a[1],48+(c%10|0)|0);break;case 2:bY(b,a[1],92);a[1]++;bY(b,a[1],c);break;case 3:bY(b,a[1],c);break}a[1]++;var @@ -2148,13 +2148,13 @@ A=h+1|0;if(u!==h){var h=A;continue}break}}var v=b}var o=cK(v)}var -w=aI(o),x=gm(w+2|0,34);ej(o,0,x,1,w);return cK(x)}}function -s_(d,f){var -g=gl(f),e=Ji[1];switch(d[2]){case +w=aI(o),x=gn(w+2|0,34);ej(o,0,x,1,w);return cK(x)}}function +td(d,f){var +g=gm(f),e=Jh[1];switch(d[2]){case 0:var -b=CL;break;case +b=CG;break;case 1:var -b=fO;break;case +b=fN;break;case 2:var b=69;break;case 3:var @@ -2168,159 +2168,159 @@ b=dT;break;case 7:var b=72;break;default:var b=70}var -c=s6(16);g2(c,37);switch(d[1]){case +c=s$(16);g5(c,37);switch(d[1]){case 0:break;case -1:g2(c,43);break;default:g2(c,32)}if(8<=d[2])g2(c,35);g2(c,46);cx(c,a($+g));g2(c,b);return s8(c)}function -lf(m,a){if(13<=m){var +1:g5(c,43);break;default:g5(c,32)}if(8<=d[2])g5(c,35);g5(c,46);cx(c,a(aa+g));g5(c,b);return tb(c)}function +ld(m,a){if(13<=m){var g=[0,0],h=aI(a)-1|0,n=0;if(!(h<0)){var -c=n;for(;;){if(!(9>>0))g[1]++;var +c=n;for(;;){if(!(9>>0))g[1]++;var q=c+1|0;if(h!==c){var c=q;continue}break}}var i=g[1],j=bZ(aI(a)+((i-1|0)/3|0)|0),k=[0,0],d=function(a){d3(j,k[1],a);k[1]++;return 0},e=[0,((i-1|0)%3|0)+1|0],l=aI(a)-1|0,o=0;if(!(l<0)){var b=o;for(;;){var -f=d6(a,b);if(9>>0)d(f);else{if(0===e[1]){d(95);e[1]=3}e[1]+=-1;d(f)}var +f=d6(a,b);if(9>>0)d(f);else{if(0===e[1]){d(95);e[1]=3}e[1]+=-1;d(f)}var p=b+1|0;if(l!==b){var b=p;continue}break}}return cK(j)}return a}function +Ji(b,c){switch(b){case +1:var +a=Iu;break;case +2:var +a=Iv;break;case +4:var +a=Ix;break;case +5:var +a=Iy;break;case +6:var +a=Iz;break;case +7:var +a=IA;break;case +8:var +a=IB;break;case +9:var +a=IC;break;case +10:var +a=ID;break;case +11:var +a=IE;break;case +0:case +13:var +a=It;break;case +3:case +14:var +a=Iw;break;default:var +a=IF}return ld(b,pb(a,c))}function Jj(b,c){switch(b){case 1:var -a=Iv;break;case +a=IU;break;case 2:var -a=Iw;break;case +a=IV;break;case 4:var -a=Iy;break;case +a=IX;break;case 5:var -a=Iz;break;case +a=IY;break;case 6:var -a=IA;break;case +a=IZ;break;case 7:var -a=IB;break;case +a=I0;break;case 8:var -a=IC;break;case +a=I1;break;case 9:var -a=ID;break;case +a=I2;break;case 10:var -a=IE;break;case +a=I3;break;case 11:var -a=IF;break;case +a=I4;break;case 0:case 13:var -a=Iu;break;case +a=IT;break;case 3:case 14:var -a=Ix;break;default:var -a=IG}return lf(b,pa(a,c))}function +a=IW;break;default:var +a=I5}return ld(b,pb(a,c))}function Jk(b,c){switch(b){case 1:var -a=IV;break;case +a=I7;break;case 2:var -a=IW;break;case +a=I8;break;case 4:var -a=IY;break;case +a=I_;break;case 5:var -a=IZ;break;case +a=I$;break;case 6:var -a=I0;break;case +a=Ja;break;case 7:var -a=I1;break;case +a=Jb;break;case 8:var -a=I2;break;case +a=Jc;break;case 9:var -a=I3;break;case +a=Jd;break;case 10:var -a=I4;break;case +a=Je;break;case 11:var -a=I5;break;case +a=Jf;break;case 0:case 13:var -a=IU;break;case +a=I6;break;case 3:case 14:var -a=IX;break;default:var -a=I6}return lf(b,pa(a,c))}function +a=I9;break;default:var +a=Jg}return ld(b,pb(a,c))}function Jl(b,c){switch(b){case 1:var -a=I8;break;case -2:var -a=I9;break;case -4:var -a=I$;break;case -5:var -a=Ja;break;case -6:var -a=Jb;break;case -7:var -a=Jc;break;case -8:var -a=Jd;break;case -9:var -a=Je;break;case -10:var -a=Jf;break;case -11:var -a=Jg;break;case -0:case -13:var -a=I7;break;case -3:case -14:var -a=I_;break;default:var -a=Jh}return lf(b,pa(a,c))}function -Jm(b,c){switch(b){case -1:var -a=II;break;case -2:var -a=IJ;break;case -4:var -a=IL;break;case -5:var -a=IM;break;case -6:var -a=IN;break;case -7:var -a=IO;break;case -8:var -a=IP;break;case -9:var -a=IQ;break;case -10:var -a=IR;break;case -11:var -a=IS;break;case -0:case -13:var a=IH;break;case +2:var +a=II;break;case +4:var +a=IK;break;case +5:var +a=IL;break;case +6:var +a=IM;break;case +7:var +a=IN;break;case +8:var +a=IO;break;case +9:var +a=IP;break;case +10:var +a=IQ;break;case +11:var +a=IR;break;case +0:case +13:var +a=IG;break;case 3:case 14:var -a=IK;break;default:var -a=IT}return lf(b,by1(a,c))}function +a=IJ;break;default:var +a=IS}return ld(b,by0(a,c))}function e5(c,i,b){function j(d){switch(c[1]){case 0:var a=45;break;case 1:var a=43;break;default:var -a=32}return byY(b,i,a)}function +a=32}return byX(b,i,a)}function q(c){var -a=o9(b);return 3===a?b<0.?Jo:Jp:4<=a?Jq:c}switch(c[2]){case +a=o_(b);return 3===a?b<0.?Jn:Jo:4<=a?Jp:c}switch(c[2]){case 5:var -e=sw(s_(c,i),b),d=0,u=aI(e);for(;;){if(d===u)var +e=sB(td(c,i),b),d=0,u=aI(e);for(;;){if(d===u)var p=0;else{var k=bA(e,d)-46|0,l=0;if(23>>0){if(55===k)l=1}else if(21>>0)l=1;if(!l){var d=d+1|0;continue}var p=1}var -v=p?e:bS(e,Jn);return q(v)}case +v=p?e:bS(e,Jm);return q(v)}case 6:return j(0);case 7:var -h=fs(j(0)),f=ds(h);if(0===f)var +h=fr(j(0)),f=ds(h);if(0===f)var o=h;else{var m=bZ(f),n=f-1|0,r=0;if(!(n<0)){var a=r;for(;;){var -g=k0(h,a),s=25>>0?g:g+Am|0;bY(m,a,s);var +g=kY(h,a),s=25>>0?g:g+Ah|0;bY(m,a,s);var t=a+1|0;if(n!==a){var a=t;continue}break}}var o=m}return cK(o);case -8:return q(j(0));default:return sw(s_(c,i),b)}}function +8:return q(j(0));default:return sB(td(c,i),b)}}function j2(d,x,w,v){var b=x,a=w,c=v;for(;;)if(typeof c==="number")return r(b,a);else @@ -2330,48 +2330,48 @@ y=c[1];return function(c){return a$(b,[5,a,c],y)};case 1:var z=c[1];return function(c){var e=0;if(40<=c)if(92===c)var -d=Hf;else +d=He;else if(cQ<=c)e=1;else e=2;else if(32<=c)if(39<=c)var -d=Hg;else +d=Hf;else e=2;else if(14<=c)e=1;else switch(c){case 8:var -d=Hh;break;case +d=Hg;break;case 9:var -d=Hi;break;case +d=Hh;break;case 10:var -d=Hj;break;case +d=Hi;break;case 13:var -d=Hk;break;default:e=1}switch(e){case +d=Hj;break;default:e=1}switch(e){case 1:var f=bZ(4);bY(f,0,92);bY(f,1,48+(c/cd|0)|0);bY(f,2,48+((c/10|0)%10|0)|0);bY(f,3,48+(c%10|0)|0);var d=cK(f);break;case 2:var g=bZ(1);bY(g,0,c);var d=cK(g);break}var -h=aI(d),i=gm(h+2|0,39);ej(d,0,i,1,h);return a$(b,[4,a,cK(i)],z)};case +h=aI(d),i=gn(h+2|0,39);ej(d,0,i,1,h);return a$(b,[4,a,cK(i)],z)};case 2:var -A=c[2],B=c[1];return pD(b,a,A,B,function(a){return a});case -3:return pD(b,a,c[2],c[1],It);case -4:return lg(b,a,c[4],c[2],c[3],Jj,c[1]);case -5:return lg(b,a,c[4],c[2],c[3],Jk,c[1]);case -6:return lg(b,a,c[4],c[2],c[3],Jl,c[1]);case -7:return lg(b,a,c[4],c[2],c[3],Jm,c[1]);case +A=c[2],B=c[1];return pE(b,a,A,B,function(a){return a});case +3:return pE(b,a,c[2],c[1],Is);case +4:return le(b,a,c[4],c[2],c[3],Ji,c[1]);case +5:return le(b,a,c[4],c[2],c[3],Jj,c[1]);case +6:return le(b,a,c[4],c[2],c[3],Jk,c[1]);case +7:return le(b,a,c[4],c[2],c[3],Jl,c[1]);case 8:var g=c[4],h=c[3],i=c[2],f=c[1];if(typeof i==="number"){if(typeof -h==="number")return h?function(d,c){return a$(b,[4,a,e5(f,d,c)],g)}:function(c){return a$(b,[4,a,e5(f,pB(f),c)],g)};var +h==="number")return h?function(d,c){return a$(b,[4,a,e5(f,d,c)],g)}:function(c){return a$(b,[4,a,e5(f,pC(f),c)],g)};var S=h[1];return function(c){return a$(b,[4,a,e5(f,S,c)],g)}}else{if(0===i[0]){var l=i[2],m=i[1];if(typeof -h==="number")return h?function(d,c){return a$(b,[4,a,c9(m,l,e5(f,d,c))],g)}:function(c){return a$(b,[4,a,c9(m,l,e5(f,pB(f),c))],g)};var -T=h[1];return function(c){return a$(b,[4,a,c9(m,l,e5(f,T,c))],g)}}var +h==="number")return h?function(d,c){return a$(b,[4,a,c$(m,l,e5(f,d,c))],g)}:function(c){return a$(b,[4,a,c$(m,l,e5(f,pC(f),c))],g)};var +T=h[1];return function(c){return a$(b,[4,a,c$(m,l,e5(f,T,c))],g)}}var n=i[1];if(typeof -h==="number")return h?function(e,d,c){return a$(b,[4,a,c9(n,e,e5(f,d,c))],g)}:function(d,c){return a$(b,[4,a,c9(n,d,e5(f,pB(f),c))],g)};var -U=h[1];return function(d,c){return a$(b,[4,a,c9(n,d,e5(f,U,c))],g)}}case -9:return pD(b,a,c[2],c[1],G3);case +h==="number")return h?function(e,d,c){return a$(b,[4,a,c$(n,e,e5(f,d,c))],g)}:function(d,c){return a$(b,[4,a,c$(n,d,e5(f,pC(f),c))],g)};var +U=h[1];return function(d,c){return a$(b,[4,a,c$(n,d,e5(f,U,c))],g)}}case +9:return pE(b,a,c[2],c[1],G2);case 10:var a=[7,a],c=c[1];continue;case 11:var @@ -2379,8 +2379,8 @@ a=[2,a,c[1]],c=c[2];continue;case 12:var a=[3,a,c[1]],c=c[2];continue;case 13:var -C=c[3],D=c[2],o=s6(16);pC(o,D);var -u=s8(o);return function(c){return a$(b,[4,a,u],C)};case +C=c[3],D=c[2],o=s$(16);pD(o,D);var +u=tb(o);return function(c){return a$(b,[4,a,u],C)};case 14:var E=c[3],F=c[2];return function(d){var e=d[1],c=by(e,bM(b9(F)));if(typeof @@ -2395,11 +2395,11 @@ a=[0,a,c[1]],c=c[2];continue;case k=c[1];if(0===k[0]){var I=c[2],J=k[1][1],K=0,b=function(b,c,d){return function(a){return a$(c,[1,b,[0,a]],d)}}(a,b,I),a=K,c=J;continue}var L=c[2],M=k[1][1],N=0,b=function(b,c,d){return function(a){return a$(c,[1,b,[1,a]],d)}}(a,b,L),a=N,c=M;continue;case -19:throw[0,bs,Js];case +19:throw[0,bs,Jr];case 20:var -O=c[3],P=[8,a,Jt];return function(a){return a$(b,P,O)};case +O=c[3],P=[8,a,Js];return function(a){return a$(b,P,O)};case 21:var -Q=c[2];return function(c){return a$(b,[4,a,pa(Ju,c)],Q)};case +Q=c[2];return function(c){return a$(b,[4,a,pb(Jt,c)],Q)};case 22:var R=c[1];return function(c){return a$(b,[5,a,c],R)};case 23:var @@ -2407,7 +2407,7 @@ e=c[2],j=c[1];if(typeof j==="number")switch(j){case 0:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case 1:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -2:throw[0,bs,Jv];default:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e])}else +2:throw[0,bs,Ju];default:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e])}else switch(j[0]){case 0:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case 1:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case @@ -2419,10 +2419,10 @@ switch(j[0]){case 7:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case 8:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case 9:var -t=j[2];return d<50?qu(d+1|0,b,a,t,e):cw(qu,[0,b,a,t,e]);case +t=j[2];return d<50?qv(d+1|0,b,a,t,e):cw(qv,[0,b,a,t,e]);case 10:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);default:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e])}default:var -p=c[3],q=c[1],s=r(c[2],0);return d<50?qt(d+1|0,b,a,p,q,s):cw(qt,[0,b,a,p,q,s])}}function -qu(e,d,c,a,b){if(typeof +p=c[3],q=c[1],s=r(c[2],0);return d<50?qu(d+1|0,b,a,p,q,s):cw(qu,[0,b,a,p,q,s])}}function +qv(e,d,c,a,b){if(typeof a==="number")return e<50?bt(e+1|0,d,c,b):cw(bt,[0,d,c,b]);else switch(a[0]){case 0:var @@ -2451,61 +2451,61 @@ r=a[1];return function(e,a){return dt(d,c,r,b)};case s=a[1];return function(a){return dt(d,c,s,b)};case 12:var t=a[1];return function(a){return dt(d,c,t,b)};case -13:throw[0,bs,Jw];default:throw[0,bs,Jx]}}function +13:throw[0,bs,Jv];default:throw[0,bs,Jw]}}function bt(d,b,e,a){var -c=[8,e,Jy];return d<50?j2(d+1|0,b,c,a):cw(j2,[0,b,c,a])}function -qt(g,b,e,a,d,c){if(d){var -h=d[1];return function(d){return Jr(b,e,a,h,r(c,d))}}var +c=[8,e,Jx];return d<50?j2(d+1|0,b,c,a):cw(j2,[0,b,c,a])}function +qu(g,b,e,a,d,c){if(d){var +h=d[1];return function(d){return Jq(b,e,a,h,r(c,d))}}var f=[4,e,c];return g<50?j2(g+1|0,b,f,a):cw(j2,[0,b,f,a])}function -a$(a,b,c){return sJ(j2(0,a,b,c))}function -dt(a,b,c,d){return sJ(qu(0,a,b,c,d))}function -Jr(a,b,c,d,e){return sJ(qt(0,a,b,c,d,e))}function -pD(e,d,c,a,b){if(typeof +a$(a,b,c){return sO(j2(0,a,b,c))}function +dt(a,b,c,d){return sO(qv(0,a,b,c,d))}function +Jq(a,b,c,d,e){return sO(qu(0,a,b,c,d,e))}function +pE(e,d,c,a,b){if(typeof a==="number")return function(a){return a$(e,[4,d,r(b,a)],c)};else{if(0===a[0]){var -f=a[2],g=a[1];return function(a){return a$(e,[4,d,c9(g,f,r(b,a))],c)}}var -h=a[1];return function(f,a){return a$(e,[4,d,c9(h,f,r(b,a))],c)}}}function -lg(f,e,d,g,c,b,a){if(typeof +f=a[2],g=a[1];return function(a){return a$(e,[4,d,c$(g,f,r(b,a))],c)}}var +h=a[1];return function(f,a){return a$(e,[4,d,c$(h,f,r(b,a))],c)}}}function +le(f,e,d,g,c,b,a){if(typeof g==="number"){if(typeof -c==="number")return c?function(g,c){return a$(f,[4,e,g3(g,aq(b,a,c))],d)}:function(c){return a$(f,[4,e,aq(b,a,c)],d)};var -k=c[1];return function(c){return a$(f,[4,e,g3(k,aq(b,a,c))],d)}}else{if(0===g[0]){var +c==="number")return c?function(g,c){return a$(f,[4,e,g6(g,aq(b,a,c))],d)}:function(c){return a$(f,[4,e,aq(b,a,c)],d)};var +k=c[1];return function(c){return a$(f,[4,e,g6(k,aq(b,a,c))],d)}}else{if(0===g[0]){var h=g[2],i=g[1];if(typeof -c==="number")return c?function(g,c){return a$(f,[4,e,c9(i,h,g3(g,aq(b,a,c)))],d)}:function(c){return a$(f,[4,e,c9(i,h,aq(b,a,c))],d)};var -l=c[1];return function(c){return a$(f,[4,e,c9(i,h,g3(l,aq(b,a,c)))],d)}}var +c==="number")return c?function(g,c){return a$(f,[4,e,c$(i,h,g6(g,aq(b,a,c)))],d)}:function(c){return a$(f,[4,e,c$(i,h,aq(b,a,c))],d)};var +l=c[1];return function(c){return a$(f,[4,e,c$(i,h,g6(l,aq(b,a,c)))],d)}}var j=g[1];if(typeof -c==="number")return c?function(h,g,c){return a$(f,[4,e,c9(j,h,g3(g,aq(b,a,c)))],d)}:function(g,c){return a$(f,[4,e,c9(j,g,aq(b,a,c))],d)};var -m=c[1];return function(g,c){return a$(f,[4,e,c9(j,g,g3(m,aq(b,a,c)))],d)}}}function +c==="number")return c?function(h,g,c){return a$(f,[4,e,c$(j,h,g6(g,aq(b,a,c)))],d)}:function(g,c){return a$(f,[4,e,c$(j,g,aq(b,a,c))],d)};var +m=c[1];return function(g,c){return a$(f,[4,e,c$(j,g,g6(m,aq(b,a,c)))],d)}}}function e6(b,e){var a=e;for(;;)if(typeof a==="number")return 0;else switch(a[0]){case 0:var -f=a[1],g=s9(a[2]);e6(b,f);return jC(b,g);case +f=a[1],g=tc(a[2]);e6(b,f);return jC(b,g);case 1:var c=a[2],d=a[1];if(0===c[0]){var -h=c[1];e6(b,d);jC(b,Jz);var +h=c[1];e6(b,d);jC(b,Jy);var a=h;continue}var -i=c[1];e6(b,d);jC(b,JA);var +i=c[1];e6(b,d);jC(b,Jz);var a=i;continue;case 6:var l=a[2];e6(b,a[1]);return r(l,b);case -7:e6(b,a[1]);return gV(b);case +7:e6(b,a[1]);return gY(b);case 8:var m=a[2];e6(b,a[1]);return b0(m);case 2:case 4:var j=a[2];e6(b,a[1]);return jC(b,j);default:var -k=a[2];e6(b,a[1]);return GF(b,k)}}function +k=a[2];e6(b,a[1]);return GE(b,k)}}function e7(b,f){var a=f;for(;;)if(typeof a==="number")return 0;else switch(a[0]){case 0:var -g=a[1],h=s9(a[2]);e7(b,g);return jK(b,h);case +g=a[1],h=tc(a[2]);e7(b,g);return jK(b,h);case 1:var d=a[2],e=a[1];if(0===d[0]){var -i=d[1];e7(b,e);jK(b,JB);var +i=d[1];e7(b,e);jK(b,JA);var a=i;continue}var -j=d[1];e7(b,e);jK(b,JC);var +j=d[1];e7(b,e);jK(b,JB);var a=j;continue;case 6:var m=a[2];e7(b,a[1]);return jK(b,r(m,0));case @@ -2517,125 +2517,125 @@ n=a[2];e7(b,a[1]);return b0(n);case 4:var k=a[2];e7(b,a[1]);return jK(b,k);default:var l=a[2];e7(b,a[1]);var -c=b[2];if(b[3]<=c)pA(b,1);bY(b[1],c,l);b[2]=c+1|0;return 0}}function -JD(a){if(pj(a,JE))return JF;var +c=b[2];if(b[3]<=c)pB(b,1);bY(b[1],c,l);b[2]=c+1|0;return 0}}function +JC(a){if(pk(a,JD))return JE;var d=aI(a);function f(d){var -c=JG[1],b=lc(eB);return r(a$(function(a){e7(b,a);return aH(ld(b))},0,c),a)}function +c=JF[1],b=la(eB);return r(a$(function(a){e7(b,a);return aH(lb(b))},0,c),a)}function g(e){var b=e;for(;;){if(b===d)return b;var c=bA(a,b);if(9!==c&&32!==c)return b;var b=b+1|0;continue}}function m(e,c){var -b=c;for(;;){if(b===d)return b;if(25>>0)return b;var +b=c;for(;;){if(b===d)return b;if(25>>0)return b;var b=b+1|0;continue}}function n(g,f){var b=f;for(;;){if(b===d)return b;var c=bA(a,b),e=0;if(48<=c){if(!(58<=c))e=1}else if(45===c)e=1;if(e){var b=b+1|0;continue}return b}}var -e=g(0),j=m(e,e),b=gZ(a,e,j-e|0),c=g(j),h=n(c,c);if(c===h)var +e=g(0),j=m(e,e),b=g2(a,e,j-e|0),c=g(j),h=n(c,c);if(c===h)var i=0;else try{var -p=pe(gZ(a,c,h-c|0)),i=p}catch(a){a=o(a);if(a[1]!==k_)throw a;var +p=pf(g2(a,c,h-c|0)),i=p}catch(a){a=o(a);if(a[1]!==k8)throw a;var i=f(0)}if(g(h)!==d)f(0);var -l=0;if(M(b,JH)&&M(b,JI))var -k=M(b,JJ)?M(b,JK)?M(b,JL)?M(b,JM)?f(0):1:2:3:0;else +l=0;if(M(b,JG)&&M(b,JH))var +k=M(b,JI)?M(b,JJ)?M(b,JK)?M(b,JL)?f(0):1:2:3:0;else l=1;if(l)var k=4;return[0,i,k]}function -s$(d,c){var +te(d,c){var a=c[1],b=0;return a$(function(a){e6(d,a);return 0},b,a)}function -jM(a){return s$(em,a)}function +jM(a){return te(em,a)}function aJ(b){var a=b[1];return a$(function(b){var -a=lc(64);e7(a,b);return ld(a)},0,a)}var -pE=[0,0];function -pG(h,g){var +a=la(64);e7(a,b);return lb(a)},0,a)}var +pF=[0,0];function +pH(h,g){var a=h[1+g];if(1-(typeof -a==="number"?1:0)){if(k7(a)===kb)return r(aJ(JN),a);if(k7(a)===rf){var -c=sw(G7,a),b=0,f=aI(c);for(;;){if(f<=b)return bS(c,G6);var +a==="number"?1:0)){if(k5(a)===kb)return r(aJ(JM),a);if(k5(a)===ri){var +c=sB(G6,a),b=0,f=aI(c);for(;;){if(f<=b)return bS(c,G5);var d=bA(c,b),e=0;if(48<=d){if(!(58<=d))e=1}else if(45===d)e=1;if(e){var -b=b+1|0;continue}return c}}return JO}return r(aJ(JP),a)}function -ta(b,a){if(b.length-1<=a)return JQ;var -c=ta(b,a+1|0),d=pG(b,a);return aq(aJ(JR),d,c)}function -pH(a){function +b=b+1|0;continue}return c}}return JN}return r(aJ(JO),a)}function +tf(b,a){if(b.length-1<=a)return JP;var +c=tf(b,a+1|0),d=pH(b,a);return aq(aJ(JQ),d,c)}function +pI(a){function n(e){var b=e;for(;;){if(b){var f=b[2],g=b[1];try{var d=0,c=r(g,a);d=1}catch(a){}if(d&&c)return[0,c[1]];var b=f;continue}return 0}}var -g=n(pE[1]);if(g)return g[1];if(a===po)return JW;if(a===sS)return JX;if(a[1]===sR){var -c=a[2],h=c[3],o=c[2],p=c[1];return lQ(aJ(pF),p,o,h,h+5|0,JY)}if(a[1]===bs){var -d=a[2],i=d[3],q=d[2],s=d[1];return lQ(aJ(pF),s,q,i,i+6|0,JZ)}if(a[1]===sU){var -e=a[2],j=e[3],t=e[2],u=e[1];return lQ(aJ(pF),u,t,j,j+6|0,J0)}if(0===k7(a)){var +g=n(pF[1]);if(g)return g[1];if(a===pp)return JV;if(a===sX)return JW;if(a[1]===sW){var +c=a[2],h=c[3],o=c[2],p=c[1];return lO(aJ(pG),p,o,h,h+5|0,JX)}if(a[1]===bs){var +d=a[2],i=d[3],q=d[2],s=d[1];return lO(aJ(pG),s,q,i,i+6|0,JY)}if(a[1]===sZ){var +e=a[2],j=e[3],t=e[2],u=e[1];return lO(aJ(pG),u,t,j,j+6|0,JZ)}if(0===k5(a)){var f=a.length-1,v=a[1][1];if(2>>0)var -k=ta(a,2),l=pG(a,1),b=aq(aJ(JS),l,k);else +k=tf(a,2),l=pH(a,1),b=aq(aJ(JR),l,k);else switch(f){case 0:var -b=JT;break;case +b=JS;break;case 1:var -b=JU;break;default:var -m=pG(a,1),b=r(aJ(JV),m)}return bS(v,b)}return a[1]}function -pI(t,s){var -d=byM(s),f=d.length-1-1|0,o=0;if(!(f<0)){var +b=JT;break;default:var +m=pH(a,1),b=r(aJ(JU),m)}return bS(v,b)}return a[1]}function +pJ(t,s){var +d=byL(s),f=d.length-1-1|0,o=0;if(!(f<0)){var b=o;for(;;){var -a=aY(d,b)[1+b],e=function(a){return function(b){return b?0===a?J1:J2:0===a?J3:J4}}(b);if(0===a[0])var -g=a[5],h=a[4],i=a[3],j=a[6]?J5:J7,k=a[2],l=a[7],m=e(a[1]),c=[0,byB(aJ(J6),m,l,k,j,i,h,g)];else +a=aY(d,b)[1+b],e=function(a){return function(b){return b?0===a?J0:J1:0===a?J2:J3}}(b);if(0===a[0])var +g=a[5],h=a[4],i=a[3],j=a[6]?J4:J6,k=a[2],l=a[7],m=e(a[1]),c=[0,byA(aJ(J5),m,l,k,j,i,h,g)];else if(a[1])var c=0;else var -n=e(0),c=[0,r(aJ(J8),n)];if(c){var -p=c[1];r(s$(t,J9),p)}var +n=e(0),c=[0,r(aJ(J7),n)];if(c){var +p=c[1];r(te(t,J8),p)}var q=b+1|0;if(f!==b){var b=q;continue}break}}return 0}function -tb(c){for(;;){var -a=pE[1],b=1-pn(pE,a,[0,c,a]);if(b)continue;return b}}var -J$=J_.slice();function -Ka(d,c){var -e=pH(d);r(jM(Kb),e);pI(em,c);var -a=bzd(0);if(a<0){var -b=gl(a);sY(aY(J$,b)[1+b])}return gV(em)}var -Kc=[0];sH(a(Ec),function(d,h){try{try{var -b=h?Kc:Gx(0);try{pr(0)}catch(a){}try{var -a=Ka(d,b),c=a}catch(a){a=o(a);var -f=pH(d);r(jM(Ke),f);pI(em,b);var -g=pH(a);r(jM(Kf),g);pI(em,Gx(0));var -c=gV(em)}var -e=c}catch(a){a=o(a);if(a!==po)throw a;var -e=sY(Kd)}return e}catch(a){return 0}});function -lh(a){var +tg(c){for(;;){var +a=pF[1],b=1-po(pF,a,[0,c,a]);if(b)continue;return b}}var +J_=J9.slice();function +J$(d,c){var +e=pI(d);r(jM(Ka),e);pJ(em,c);var +a=bzc(0);if(a<0){var +b=gm(a);s3(aY(J_,b)[1+b])}return gY(em)}var +Kb=[0];sM(a(Ea),function(d,h){try{try{var +b=h?Kb:Gw(0);try{ps(0)}catch(a){}try{var +a=J$(d,b),c=a}catch(a){a=o(a);var +f=pI(d);r(jM(Kd),f);pJ(em,b);var +g=pI(a);r(jM(Ke),g);pJ(em,Gw(0));var +c=gY(em)}var +e=c}catch(a){a=o(a);if(a!==pp)throw a;var +e=s3(Kc)}return e}catch(a){return 0}});function +lf(a){var b=a.length-1<4?1:0,c=b||(a[4]<0?1:0);return c}function e8(a){a[4]=-a[4]|0;return 0}try{var -byx=GM(byw),td=byx}catch(a){a=o(a);if(a!==cD)throw a;try{var -byv=GM(byu),tc=byv}catch(a){a=o(a);if(a!==cD)throw a;var -tc=Kh}var -td=tc}pw(td,82);var -li=[mi,function(w){var -m=bzt(0),c=[0,e1(55,0),0],i=0===m.length-1?[0,0]:m,j=i.length-1,b=0;for(;;){aY(c[1],b)[1+b]=b;var +byw=GL(byv),ti=byw}catch(a){a=o(a);if(a!==cD)throw a;try{var +byu=GL(byt),th=byu}catch(a){a=o(a);if(a!==cD)throw a;var +th=Kg}var +ti=th}px(ti,82);var +lg=[mg,function(w){var +m=bzs(0),c=[0,e1(55,0),0],i=0===m.length-1?[0,0]:m,j=i.length-1,b=0;for(;;){aY(c[1],b)[1+b]=b;var v=b+1|0;if(54!==b){var b=v;continue}var -g=[0,Kg],k=54+pu(55,j)|0,r=0;if(!(k<0)){var +g=[0,Kf],k=54+pv(55,j)|0,r=0;if(!(k<0)){var d=r;for(;;){var -e=d%55|0,l=bzh(d,j),s=aY(i,l)[1+l],h=bS(g[1],a($+s));g[1]=bzc(h,0,aI(h));var -f=g[1],n=bA(f,3)<<24,o=bA(f,2)<<16,p=bA(f,1)<<8,q=((bA(f,0)+p|0)+o|0)+n|0,t=(aY(c[1],e)[1+e]^q)&r8;aY(c[1],e)[1+e]=t;var +e=d%55|0,l=bzg(d,j),s=aY(i,l)[1+l],h=bS(g[1],a(aa+s));g[1]=bzb(h,0,aI(h));var +f=g[1],n=bA(f,3)<<24,o=bA(f,2)<<16,p=bA(f,1)<<8,q=((bA(f,0)+p|0)+o|0)+n|0,t=(aY(c[1],e)[1+e]^q)&r$;aY(c[1],e)[1+e]=t;var u=d+1|0;if(k!==d){var d=u;continue}break}}c[2]=0;return c}}];function -te(a){var +tj(a){var c=0>>25|0)&31)|0)&r8,g=a[2];aY(a[1],g)[1+g]=f;var +h=k5(lg),a=hm===h?lg[1]:mg===h?Hc(lg):lg;a[2]=(a[2]+1|0)%55|0;var +c=a[2],d=aY(a[1],c)[1+c],e=(a[2]+24|0)%55|0,f=(aY(a[1],e)[1+e]+(d^(d>>>25|0)&31)|0)&r$,g=a[2];aY(a[1],g)[1+g]=f;var i=f}else var -i=0;return[0,0,e1(b,0),i,b]}}return[0,g,te,Ki,Kk,c,h,i,j,k,d,l,Km,Ko,Kp,Kl,Kq,pJ,Kr,Ks,m,e,function(b){var +i=0;return[0,0,e1(b,0),i,b]}}return[0,g,tj,Kh,Kj,c,h,i,j,k,d,l,Kl,Kn,Ko,Kk,Kp,pK,Kq,Kr,m,e,function(b){var a=g(16);e(a,b);return a}]}var -pK=[bm,Kw,cZ(0)];function -Kv(a){return byS(10,cd,0,a)}var -lj=0,th=-1;function -jN(a,b){a[13]=a[13]+b[3]|0;return s5(b,a[28])}var -ti=1000000010;function -pL(b,a){return cB(b[17],a,0,aI(a))}function -lk(a){return r(a[19],0)}function -tj(a,c,b){a[9]=a[9]-c|0;pL(a,b);a[11]=0;return 0}function -ll(c,a){var -b=M(a,Kx);return b?tj(c,aI(a),a):b}function -go(a,b,e){var -f=b[3],g=b[2];ll(a,b[1]);lk(a);a[11]=1;var -c=(a[6]-e|0)+g|0,d=a[8],h=d<=c?d:c;a[10]=h;a[9]=a[6]-a[10]|0;r(a[21],a[10]);return ll(a,f)}function -tk(b,a){return go(b,Ky,a)}function -g4(a,b){var -c=b[2],d=b[3];ll(a,b[1]);a[9]=a[9]-c|0;r(a[20],c);return ll(a,d)}function -Kz(a,i,b){if(typeof +pL=[bm,Kv,cZ(0)];function +Ku(a){return byR(10,cd,0,a)}var +lh=0,tm=-1;function +jN(a,b){a[13]=a[13]+b[3]|0;return s_(b,a[28])}var +tn=1000000010;function +pM(b,a){return cB(b[17],a,0,aI(a))}function +li(a){return r(a[19],0)}function +to(a,c,b){a[9]=a[9]-c|0;pM(a,b);a[11]=0;return 0}function +lj(c,a){var +b=M(a,Kw);return b?to(c,aI(a),a):b}function +gp(a,b,e){var +f=b[3],g=b[2];lj(a,b[1]);li(a);a[11]=1;var +c=(a[6]-e|0)+g|0,d=a[8],h=d<=c?d:c;a[10]=h;a[9]=a[6]-a[10]|0;r(a[21],a[10]);return lj(a,f)}function +tp(b,a){return gp(b,Kx,a)}function +g7(a,b){var +c=b[2],d=b[3];lj(a,b[1]);a[9]=a[9]-c|0;r(a[20],c);return lj(a,d)}function +Ky(a,i,b){if(typeof b==="number")switch(b){case 0:var -s=g1(a[3]);if(s){var +s=g4(a[3]);if(s){var t=s[1][1],u=function(b,a){if(a){var -c=a[1],d=a[2];return GC(b,c)?[0,b,a]:[0,c,u(b,d)]}return[0,b,0]};t[1]=u(a[6]-a[9]|0,t[1]);return 0}return 0;case -1:g0(a[2]);return 0;case -2:g0(a[3]);return 0;case +c=a[1],d=a[2];return GB(b,c)?[0,b,a]:[0,c,u(b,d)]}return[0,b,0]};t[1]=u(a[6]-a[9]|0,t[1]);return 0}return 0;case +1:g3(a[2]);return 0;case +2:g3(a[3]);return 0;case 3:var -v=g1(a[2]);return v?tk(a,v[1][2]):lk(a);case +v=g4(a[2]);return v?tp(a,v[1][2]):li(a);case 4:var w=a[10]!==(a[6]-a[9]|0)?1:0;if(w){var e=a[28],g=e[2];if(g){var m=g[1];if(g[2]){var J=g[2];e[1]=e[1]-1|0;e[2]=J;var -h=[0,m]}else{pz(e);var +h=[0,m]}else{pA(e);var h=[0,m]}}else var h=0;if(h){var q=h[1],L=q[1];a[12]=a[12]-q[3]|0;a[9]=a[9]+L|0;return 0}return 0}return w;default:var -x=g0(a[5]);return x?pL(a,r(a[25],x[1])):0}else +x=g3(a[5]);return x?pM(a,r(a[25],x[1])):0}else switch(b[0]){case -0:return tj(a,i,b[1]);case +0:return to(a,i,b[1]);case 1:var -c=b[2],f=b[1],y=c[1],M=c[2],z=g1(a[2]);if(z){var +c=b[2],f=b[1],y=c[1],M=c[2],z=g4(a[2]);if(z){var A=z[1],d=A[2];switch(A[1]){case -0:return g4(a,f);case -1:return go(a,c,d);case -2:return go(a,c,d);case -3:return a[9]<(i+aI(y)|0)?go(a,c,d):g4(a,f);case -4:return a[11]?g4(a,f):a[9]<(i+aI(y)|0)?go(a,c,d):((a[6]-d|0)+M|0)>>0))tk(a,p)}else -lk(a)}var -S=a[9]-R|0,T=1===H?1:a[9]>>0))tp(a,p)}else +li(a)}var +S=a[9]-R|0,T=1===H?1:a[9]>>0)throw pV;switch(a){case +lu(c,b){var +a=c-1|0;if(11>>0)throw pW;switch(a){case 1:return b?29:28;case 3:case 5:case 8:case 10:return 30;default:return 31}}function -pX(a){try{var +pY(a){try{var b=1<=a[3]?1:0;if(b)var -d=lv(a[1]),e=lw(a[2],d),c=a[3]<=e?1:0;else +d=lt(a[1]),e=lu(a[2],d),c=a[3]<=e?1:0;else var -c=b;return c}catch(a){a=o(a);if(a===pV)return 0;throw a}}function -tG(d,c,b){var -a=[0,d,c,b];if(pX(a))return a;throw pV}function -lx(f,e,d){var +c=b;return c}catch(a){a=o(a);if(a===pW)return 0;throw a}}function +tL(d,c,b){var +a=[0,d,c,b];if(pY(a))return a;throw pW}function +lv(f,e,d){var b=f,a=d;for(;;){var c=e+a|0;if(1<=c&&!(12>a===b?c:GV(b,a)}return GV(b,a)}function -tI(a){return typeof -a==="number"?a:bzT(a)}var -e9=0,lB=1,Le=-1;function -tJ(a){return gY(0,a,0,aI(a))}function -Lf(b,a){return gY(b,a,0,aI(a))}function -pY(a){if(typeof +c=b<>a===b?c:GU(b,a)}return GU(b,a)}function +tN(a){return typeof +a==="number"?a:bzS(a)}var +e9=0,lz=1,Ld=-1;function +tO(a){return g1(0,a,0,aI(a))}function +Le(b,a){return g1(b,a,0,aI(a))}function +pZ(a){if(typeof a==="number")return a;var -e=sM(a);if(63>g;f=1}if(!f)var -c=bzR(a,b);var -i=bzE(a,fw(c,b)),d=pm(c),h=i?d:by8(d,Lg);return pg(pd(h),b)}return pd(pm(a))}function -g6(a,b){if(a!==0&&b!==1){var -c=bzH(a,b);if(c===1)return[0,a,b];var -d=tH(b,c);return[0,tH(a,c),d]}return[0,a,lB]}function -tK(b,a){var -c=c7(a);if(0===c)return[0,c7(b),e9];if(0>>0))switch(b){case +c=bzQ(a,b);var +i=bzD(a,fv(c,b)),d=pn(c),h=i?d:by7(d,Lf);return ph(pe(h),b)}return pe(pn(a))}function +g9(a,b){if(a!==0&&b!==1){var +c=bzG(a,b);if(c===1)return[0,a,b];var +d=tM(b,c);return[0,tM(a,c),d]}return[0,a,lz]}function +tP(b,a){var +c=c9(a);if(0===c)return[0,c9(b),e9];if(0>>0))switch(b){case 0:return 2;case 1:break;default:return 1}return 3}return a[1]===0?0:4}function -pZ(d,c){var -e=gq(d),b=gq(c),a=0;switch(e){case +p0(d,c){var +e=gr(d),b=gr(c),a=0;switch(e){case 1:var j=b-1|0;if(!(2>>0))switch(j){case 0:a=2;break;case @@ -3199,28 +3199,28 @@ h=0;switch(g){case 0:if(2!==b){if(f(d[2],c[2]))return el(d[1],c[1]);var l=cN(c[1],d[2]);return el(cN(d[1],c[2]),l)}h=1;break;case 1:break;default:h=1}if(h)return 1}return-1}function -tN(a){var -b=a[2];return[0,gp(a[1]),b]}function -tO(c,a,b){if(a[2]===b[2]){var -d=a[2];return g6(aq(c,a[1],b[1]),d)}var -e=cN(a[2],b[2]),f=cN(b[1],a[2]);return g6(aq(c,cN(a[1],b[2]),f),e)}function +tS(a){var +b=a[2];return[0,gq(a[1]),b]}function +tT(c,a,b){if(a[2]===b[2]){var +d=a[2];return g9(aq(c,a[1],b[1]),d)}var +e=cN(a[2],b[2]),f=cN(b[1],a[2]);return g9(aq(c,cN(a[1],b[2]),f),e)}function jR(b,a){if(b[2]!==0&&a[2]!==0){var -c=cN(b[2],a[2]);return g6(cN(b[1],a[1]),c)}return[0,gk(c7(b[1]),c7(a[1])),e9]}function -p0(b,a){if(0<=c7(a[1]))return jR(b,[0,a[2],a[1]]);var -c=gp(a[1]);return jR(b,[0,gp(a[2]),c])}function -p1(a){switch(a){case +c=cN(b[2],a[2]);return g9(cN(b[1],a[1]),c)}return[0,gl(c9(b[1]),c9(a[1])),e9]}function +p1(b,a){if(0<=c9(a[1]))return jR(b,[0,a[2],a[1]]);var +c=gq(a[1]);return jR(b,[0,gq(a[2]),c])}function +p2(a){switch(a){case 0:return 2;case 1:return 8;case 2:return 10;default:return 16}}function -p2(e,d,c,b){var +p3(e,d,c,b){var a=d;for(;;){if(c<=a)return 0;if(r(b,bA(e,a)))return[0,a];var a=a+1|0;continue}}var -p3=[0,-1];function -Lj(a){if(M(a,Lk)){if(M(a,Ll)){if(!M(a,Lm))return lD;if(M(a,Ln)){if(M(a,Lo))try{var -k=Hu(a,47),X=gY(0,a,k+1|0,(aI(a)-k|0)-1|0),Y=tK(gY(0,a,0,k),X);return Y}catch(k){k=o(k);if(k===cD){var +p4=[0,-1];function +Li(a){if(M(a,Lj)){if(M(a,Lk)){if(!M(a,Ll))return lB;if(M(a,Lm)){if(M(a,Ln))try{var +k=Ht(a,47),X=g1(0,a,k+1|0,(aI(a)-k|0)-1|0),Y=tP(g1(0,a,0,k),X);return Y}catch(k){k=o(k);if(k===cD){var i=aI(a),x=0;if(i<1)var s=[0,0,x];else{var -N=bA(a,0)+AB|0,Q=0;if(!(2>>0)){var +N=bA(a,0)+Ay|0,Q=0;if(!(2>>0)){var R=0;switch(N){case 0:var P=[0,0,1];break;case @@ -3233,7 +3233,7 @@ c=s[2];if(i<(c+2|0))var t=[0,2,c];else{var W=bA(a,c),g=bA(a,c+1|0),r=0;if(48===W){var h=0;if(89<=g){if(98===g)h=2;else -if(kW===g)h=1;else +if(kU===g)h=1;else if(dv!==g){r=1;h=3}}else if(66===g)h=2;else if(79===g)h=1;else @@ -3247,13 +3247,13 @@ q=[0,0,c+2|0]}}else r=1;if(r)var q=[0,2,c];var t=q}var -d=t[2],b=t[1],S=2===b?function(a){if(69!==a&&fO!==a)return 0;return 1}:3<=b?function(a){if(80!==a&&kV!==a)return 0;return 1}:function(a){return 0},y=p2(a,d,i,S);if(y)var -z=y[1],A=z+1|0,e=z,B=tI(gY(10,a,A,i-A|0));else +d=t[2],b=t[1],S=2===b?function(a){if(69!==a&&fN!==a)return 0;return 1}:3<=b?function(a){if(80!==a&&kT!==a)return 0;return 1}:function(a){return 0},y=p3(a,d,i,S);if(y)var +z=y[1],A=z+1|0,e=z,B=tN(g1(10,a,A,i-A|0));else var e=i,B=0;if(2<=b){var -C=p2(a,d,e,function(a){return 46===a?1:0});if(C){var +C=p3(a,d,e,function(a){return 46===a?1:0});if(C){var u=C[1];if(2===b)var -D=1;else{if(!(3<=b))throw[0,bs,Lq];var +D=1;else{if(!(3<=b))throw[0,bs,Lp];var D=4}var F=u+1|0,G=e-1|0,E=0;if(G>>4|0));d3(h,g+5|0,tR(e&15));c[1]=a+1|0;break}}var +1:lC(b,d,c[1],a-c[1]|0);var +g=tU(b,6),h=b[1];d7(Lz,0,h,g,4);d3(h,g+4|0,tW(e>>>4|0));d3(h,g+5|0,tW(e&15));c[1]=a+1|0;break}}var l=a+1|0;if(i!==a){var -a=l;continue}break}}LB(d,c,b);return bN(b,34)},tS=function(a,b){return d8(a,LK)},tT=function(b,a){var -c=a?LL:LM;return d8(b,c)},LN=sV(10,11),p7=function(c,b,a){if(0===a)return b;var -d=p7(c,b,a/10|0);d3(c,d,s0(gl(a%10|0)+48|0));return d+1|0},tU=function(a,b){p5(a,LN);if(0>>1|0;Lr[1]++;continue}}(globalThis)); +c=lq(0,a);c[1+b]=d;return c};lp(a);qt[1]=m}return r(qt[1],[0,g,d,e,f])},byr=function(a){return bi(function(a){return uc(function(b){return u0(a).aideFinale})})},bys=function(a){return bi(function(a){return uc(function(b){return ul(a).iMontantVerse})})};Nf(function(c,b,a,d){return{"eventsManager":c,"computeAllocationsFamiliales":ar(b),"computeAidesAuLogement":ar(a)}}(Ns,bys,byr,byp));ps(0);return}p4[1]=p4[1]>>>1|0;Lq[1]++;continue}}(globalThis)); diff --git a/french_law/ocaml/law_source/aides_logement.ml b/french_law/ocaml/law_source/aides_logement.ml index 234a8463..a3813b0d 100644 --- a/french_law/ocaml/law_source/aides_logement.ml +++ b/french_law/ocaml/law_source/aides_logement.ml @@ -2201,7 +2201,7 @@ let calcul_equivalence_loyer_minimale (calcul_equivalence_loyer_minimale_in: Cal "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2676; start_column=14; end_line=2676; end_column=41; + start_line=2685; start_column=14; end_line=2685; end_column=41; law_headings=["Article 31"; "Chapitre V : Calcul de l'aide personnalisée au logement en secteur logement-foyer"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -2239,8 +2239,8 @@ let calcul_equivalence_loyer_minimale (calcul_equivalence_loyer_minimale_in: Cal "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2641; start_column=5; - end_line=2641; end_column=26; + start_line=2650; start_column=5; + end_line=2650; end_column=26; law_headings=["Article 31"; "Chapitre V : Calcul de l'aide personnalisée au logement en secteur logement-foyer"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -2275,7 +2275,7 @@ let calcul_equivalence_loyer_minimale (calcul_equivalence_loyer_minimale_in: Cal TrancheRevenu.taux = (decimal_of_string "0.328")})|]))|]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2592; start_column=14; end_line=2592; end_column=38; + start_line=2601; start_column=14; end_line=2601; end_column=38; law_headings=["Article 31"; "Chapitre V : Calcul de l'aide personnalisée au logement en secteur logement-foyer"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -7166,7 +7166,7 @@ let calcul_aide_personnalisee_logement_foyer (calcul_aide_personnalisee_logement "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2556; start_column=14; end_line=2556; end_column=35; + start_line=2565; start_column=14; end_line=2565; end_column=35; law_headings=["Article 30"; "Chapitre V : Calcul de l'aide personnalisée au logement en secteur logement-foyer"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -7192,7 +7192,7 @@ let calcul_aide_personnalisee_logement_foyer (calcul_aide_personnalisee_logement "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2531; start_column=14; end_line=2531; end_column=41; + start_line=2540; start_column=14; end_line=2540; end_column=41; law_headings=["Article 28"; "Chapitre V : Calcul de l'aide personnalisée au logement en secteur logement-foyer"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -7218,7 +7218,7 @@ let calcul_aide_personnalisee_logement_foyer (calcul_aide_personnalisee_logement "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2542; start_column=14; end_line=2542; end_column=42; + start_line=2551; start_column=14; end_line=2551; end_column=42; law_headings=["Article 29"; "Chapitre V : Calcul de l'aide personnalisée au logement en secteur logement-foyer"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -7343,8 +7343,8 @@ let calcul_aide_personnalisee_logement_foyer (calcul_aide_personnalisee_logement "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2477; start_column=14; - end_line=2477; end_column=48; + start_line=2486; start_column=14; + end_line=2486; end_column=48; law_headings=["Article 27"; "Chapitre V : Calcul de l'aide personnalisée au logement en secteur logement-foyer"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -7876,7 +7876,7 @@ let calcul_aide_personnalisee_logement_foyer (calcul_aide_personnalisee_logement "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2705; start_column=14; end_line=2705; end_column=41; + start_line=2714; start_column=14; end_line=2714; end_column=41; law_headings=["Article 32"; "Chapitre V : Calcul de l'aide personnalisée au logement en secteur logement-foyer"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -7905,7 +7905,7 @@ let calcul_aide_personnalisee_logement_foyer (calcul_aide_personnalisee_logement "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2566; start_column=14; end_line=2566; end_column=48; + start_line=2575; start_column=14; end_line=2575; end_column=48; law_headings=["Article 30"; "Chapitre V : Calcul de l'aide personnalisée au logement en secteur logement-foyer"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -8791,7 +8791,7 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2335; start_column=14; end_line=2335; end_column=41; + start_line=2344; start_column=14; end_line=2344; end_column=41; law_headings=["Article 20"; "Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} true)) (fun (_: unit) -> money_of_cents_string "500")) @@ -8816,7 +8816,7 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2346; start_column=14; end_line=2346; end_column=42; + start_line=2355; start_column=14; end_line=2355; end_column=42; law_headings=["Article 21"; "Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} true)) (fun (_: unit) -> money_of_cents_string "1000")) @@ -8841,7 +8841,7 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2355; start_column=15; end_line=2355; end_column=49; + start_line=2364; start_column=15; end_line=2364; end_column=49; law_headings=["Article 22"; "Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} true)) (fun (_: unit) -> money_of_cents_string "2211133")) @@ -8866,7 +8866,7 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2448; start_column=14; end_line=2448; end_column=48; + start_line=2457; start_column=14; end_line=2457; end_column=48; law_headings=["Article 26"; "Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} true)) (fun (_: unit) -> decimal_of_string "16.25")) @@ -8891,7 +8891,7 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2370; start_column=14; end_line=2370; end_column=47; + start_line=2379; start_column=14; end_line=2379; end_column=47; law_headings=["Article 23"; "Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} true)) (fun (_: unit) -> money_of_cents_string "560085")) @@ -8916,7 +8916,7 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2371; start_column=14; end_line=2371; end_column=47; + start_line=2380; start_column=14; end_line=2380; end_column=47; law_headings=["Article 23"; "Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} true)) (fun (_: unit) -> decimal_of_string "0.208")) @@ -8941,7 +8941,7 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2372; start_column=14; end_line=2372; end_column=47; + start_line=2381; start_column=14; end_line=2381; end_column=47; law_headings=["Article 23"; "Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} true)) (fun (_: unit) -> decimal_of_string "0.416")) @@ -9081,7 +9081,7 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2430; start_column=14; end_line=2430; end_column=50; + start_line=2439; start_column=14; end_line=2439; end_column=50; law_headings=["Article 25"; "Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} true)) @@ -9182,8 +9182,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2403; start_column=7; - end_line=2403; end_column=18; + start_line=2412; start_column=7; + end_line=2412; end_column=18; law_headings=["Article 24"; "Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -9291,8 +9291,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2324; start_column=29; - end_line=2324; end_column=64; + start_line=2333; start_column=29; + end_line=2333; end_column=64; law_headings=["Article 19"; "Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_gte_dat_dat date_courante_ @@ -9506,7 +9506,7 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; start_line=806; start_column=5; - end_line=812; end_column=36; + end_line=821; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -9516,23 +9516,27 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna (o_gte_dat_dat param_ (date_of_numbers (1992) (6) (30))) (o_and - (match anciennete_logement_ - with - | NeufOuAncien.Neuf _ -> false - | NeufOuAncien.Ancien ameliore_par_occupant_ -> - (match ameliore_par_occupant_ - with - | AmelioreParOccupant.Oui _ -> - true - | AmelioreParOccupant.Non _ -> - false)) - (match type_pret_ - with - | TypePret.D331_32 _ -> false - | TypePret.D331_63_64 _ -> true - | TypePret.D331_59_8 _ -> false - | TypePret.D331_76_1 _ -> false - | TypePret.Autre _ -> false)))))) + (o_lte_dat_dat param_ + (date_of_numbers (1994) (11) (27))) + (o_and + (match anciennete_logement_ + with + | NeufOuAncien.Neuf _ -> false + | NeufOuAncien.Ancien ameliore_par_occupant_ -> + (match + ameliore_par_occupant_ + with + | AmelioreParOccupant.Oui _ -> + true + | AmelioreParOccupant.Non _ -> + false)) + (match type_pret_ + with + | TypePret.D331_32 _ -> false + | TypePret.D331_63_64 _ -> true + | TypePret.D331_59_8 _ -> false + | TypePret.D331_76_1 _ -> false + | TypePret.Autre _ -> false))))))) (fun (_: unit) -> o_mult_mon_rat ( if @@ -9576,8 +9580,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1052; start_column=5; - end_line=1056; end_column=36; + start_line=1061; start_column=5; + end_line=1065; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -9703,8 +9707,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1085; start_column=5; - end_line=1089; end_column=36; + start_line=1094; start_column=5; + end_line=1098; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -9830,8 +9834,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1118; start_column=5; - end_line=1122; end_column=36; + start_line=1127; start_column=5; + end_line=1131; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -9957,8 +9961,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1151; start_column=5; - end_line=1155; end_column=36; + start_line=1160; start_column=5; + end_line=1164; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -10084,8 +10088,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1184; start_column=5; - end_line=1188; end_column=36; + start_line=1193; start_column=5; + end_line=1197; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -10211,8 +10215,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1217; start_column=5; - end_line=1221; end_column=36; + start_line=1226; start_column=5; + end_line=1230; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -10338,8 +10342,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1250; start_column=5; - end_line=1254; end_column=36; + start_line=1259; start_column=5; + end_line=1263; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -10465,8 +10469,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1283; start_column=5; - end_line=1287; end_column=36; + start_line=1292; start_column=5; + end_line=1296; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -10584,8 +10588,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1316; start_column=5; - end_line=1320; end_column=36; + start_line=1325; start_column=5; + end_line=1329; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -10711,8 +10715,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1349; start_column=5; - end_line=1353; end_column=36; + start_line=1358; start_column=5; + end_line=1362; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -10830,8 +10834,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1382; start_column=5; - end_line=1386; end_column=36; + start_line=1391; start_column=5; + end_line=1395; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -10949,8 +10953,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1415; start_column=5; - end_line=1419; end_column=36; + start_line=1424; start_column=5; + end_line=1428; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -11068,8 +11072,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1448; start_column=5; - end_line=1452; end_column=36; + start_line=1457; start_column=5; + end_line=1461; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -11187,8 +11191,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1481; start_column=5; - end_line=1485; end_column=36; + start_line=1490; start_column=5; + end_line=1494; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -11306,8 +11310,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1514; start_column=5; - end_line=1518; end_column=36; + start_line=1523; start_column=5; + end_line=1527; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -11425,8 +11429,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1547; start_column=5; - end_line=1551; end_column=36; + start_line=1556; start_column=5; + end_line=1560; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -11544,8 +11548,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1580; start_column=5; - end_line=1584; end_column=36; + start_line=1589; start_column=5; + end_line=1593; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -11663,8 +11667,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1613; start_column=5; - end_line=1617; end_column=36; + start_line=1622; start_column=5; + end_line=1626; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -11782,8 +11786,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1646; start_column=5; - end_line=1650; end_column=36; + start_line=1655; start_column=5; + end_line=1659; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -11901,8 +11905,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1679; start_column=5; - end_line=1683; end_column=36; + start_line=1688; start_column=5; + end_line=1692; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -12020,8 +12024,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1712; start_column=5; - end_line=1716; end_column=36; + start_line=1721; start_column=5; + end_line=1725; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -12139,8 +12143,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1745; start_column=5; - end_line=1749; end_column=36; + start_line=1754; start_column=5; + end_line=1758; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -12258,8 +12262,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1778; start_column=5; - end_line=1782; end_column=36; + start_line=1787; start_column=5; + end_line=1791; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -12377,8 +12381,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1811; start_column=5; - end_line=1815; end_column=36; + start_line=1820; start_column=5; + end_line=1824; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -12496,8 +12500,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1844; start_column=5; - end_line=1848; end_column=36; + start_line=1853; start_column=5; + end_line=1857; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -12615,8 +12619,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1877; start_column=5; - end_line=1881; end_column=36; + start_line=1886; start_column=5; + end_line=1890; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -12734,8 +12738,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1910; start_column=5; - end_line=1914; end_column=36; + start_line=1919; start_column=5; + end_line=1923; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -12853,8 +12857,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1943; start_column=5; - end_line=1947; end_column=36; + start_line=1952; start_column=5; + end_line=1956; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -12972,8 +12976,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=1976; start_column=5; - end_line=1980; end_column=36; + start_line=1985; start_column=5; + end_line=1989; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -13091,8 +13095,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2009; start_column=5; - end_line=2013; end_column=36; + start_line=2018; start_column=5; + end_line=2022; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -13210,8 +13214,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2042; start_column=5; - end_line=2046; end_column=36; + start_line=2051; start_column=5; + end_line=2055; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -13329,8 +13333,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2075; start_column=5; - end_line=2079; end_column=36; + start_line=2084; start_column=5; + end_line=2088; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -13448,8 +13452,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2108; start_column=5; - end_line=2112; end_column=36; + start_line=2117; start_column=5; + end_line=2121; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -13567,8 +13571,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2141; start_column=5; - end_line=2145; end_column=36; + start_line=2150; start_column=5; + end_line=2154; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -13686,8 +13690,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2174; start_column=5; - end_line=2178; end_column=36; + start_line=2183; start_column=5; + end_line=2187; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -13805,8 +13809,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2207; start_column=5; - end_line=2211; end_column=36; + start_line=2216; start_column=5; + end_line=2220; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -13924,8 +13928,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2240; start_column=5; - end_line=2243; end_column=36; + start_line=2249; start_column=5; + end_line=2252; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -14037,8 +14041,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2272; start_column=5; - end_line=2275; end_column=36; + start_line=2281; start_column=5; + end_line=2284; end_column=36; law_headings=["Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_and @@ -15123,8 +15127,8 @@ let calcul_aide_personnalisee_logement_accession_propriete (calcul_aide_personna plafond_mensualite_d832_10_3_base_))|]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2384; start_column=14; - end_line=2384; end_column=42; + start_line=2393; start_column=14; + end_line=2393; end_column=42; law_headings=["Article 24"; "Article 18"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} (o_gte_dat_dat date_courante_ @@ -18606,7 +18610,7 @@ let calcul_allocation_logement_foyer (calcul_allocation_logement_foyer_in: Calcu "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=4091; start_column=14; end_line=4091; end_column=42; + start_line=4100; start_column=14; end_line=4100; end_column=42; law_headings=["Article 42"; "Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -18630,7 +18634,7 @@ let calcul_allocation_logement_foyer (calcul_allocation_logement_foyer_in: Calcu "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=4080; start_column=14; end_line=4080; end_column=41; + start_line=4089; start_column=14; end_line=4089; end_column=41; law_headings=["Article 41"; "Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -18654,7 +18658,7 @@ let calcul_allocation_logement_foyer (calcul_allocation_logement_foyer_in: Calcu "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=4182; start_column=14; end_line=4182; end_column=51; + start_line=4191; start_column=14; end_line=4191; end_column=51; law_headings=["Article 44"; "Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -19099,8 +19103,8 @@ let calcul_allocation_logement_foyer (calcul_allocation_logement_foyer_in: Calcu "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=4067; start_column=14; - end_line=4067; end_column=41; + start_line=4076; start_column=14; + end_line=4076; end_column=41; law_headings=["Article 40"; "Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -19167,8 +19171,8 @@ let calcul_allocation_logement_foyer (calcul_allocation_logement_foyer_in: Calcu "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=4109; start_column=6; - end_line=4109; end_column=79; + start_line=4118; start_column=6; + end_line=4118; end_column=79; law_headings=["Article 43"; "Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -19202,8 +19206,8 @@ let calcul_allocation_logement_foyer (calcul_allocation_logement_foyer_in: Calcu "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=4144; start_column=6; - end_line=4145; end_column=38; + start_line=4153; start_column=6; + end_line=4154; end_column=38; law_headings=["Article 43"; "Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -19246,8 +19250,8 @@ let calcul_allocation_logement_foyer (calcul_allocation_logement_foyer_in: Calcu ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=4162; start_column=6; - end_line=4163; end_column=24; + start_line=4171; start_column=6; + end_line=4172; end_column=24; law_headings=["Article 43"; "Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -19273,8 +19277,8 @@ let calcul_allocation_logement_foyer (calcul_allocation_logement_foyer_in: Calcu (money_of_cents_string "27365")))|]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=4126; start_column=6; - end_line=4127; end_column=46; + start_line=4135; start_column=6; + end_line=4136; end_column=46; law_headings=["Article 43"; "Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -20124,7 +20128,7 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3954; start_column=14; end_line=3954; end_column=40; + start_line=3963; start_column=14; end_line=3963; end_column=40; law_headings=["Article 35"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -20174,7 +20178,7 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3964; start_column=14; end_line=3964; end_column=41; + start_line=3973; start_column=14; end_line=3973; end_column=41; law_headings=["Article 36"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -20198,7 +20202,7 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=4018; start_column=14; end_line=4018; end_column=41; + start_line=4027; start_column=14; end_line=4027; end_column=41; law_headings=["Article 38"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -20222,7 +20226,7 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=4043; start_column=14; end_line=4043; end_column=41; + start_line=4052; start_column=14; end_line=4052; end_column=41; law_headings=["Article 39"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -20246,7 +20250,7 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=4025; start_column=14; end_line=4025; end_column=33; + start_line=4034; start_column=14; end_line=4034; end_column=33; law_headings=["Article 38"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -20270,7 +20274,7 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=4036; start_column=14; end_line=4036; end_column=33; + start_line=4045; start_column=14; end_line=4045; end_column=33; law_headings=["Article 39"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -20492,8 +20496,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3996; start_column=5; - end_line=3996; end_column=16; + start_line=4005; start_column=5; + end_line=4005; end_column=16; law_headings=["Article 37"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -20513,8 +20517,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a (o_torat_int nombre_personnes_a_charge_))))|]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3942; start_column=31; - end_line=3942; end_column=58; + start_line=3951; start_column=31; + end_line=3951; end_column=58; law_headings=["Article 34"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -20609,8 +20613,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2904; start_column=5; - end_line=2904; end_column=62; + start_line=2913; start_column=5; + end_line=2913; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -20788,8 +20792,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2950; start_column=5; - end_line=2950; end_column=62; + start_line=2959; start_column=5; + end_line=2959; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -20967,8 +20971,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=2996; start_column=5; - end_line=2996; end_column=62; + start_line=3005; start_column=5; + end_line=3005; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -21146,8 +21150,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3042; start_column=5; - end_line=3042; end_column=62; + start_line=3051; start_column=5; + end_line=3051; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -21325,8 +21329,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3088; start_column=5; - end_line=3088; end_column=62; + start_line=3097; start_column=5; + end_line=3097; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -21504,8 +21508,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3134; start_column=5; - end_line=3134; end_column=62; + start_line=3143; start_column=5; + end_line=3143; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -21683,8 +21687,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3180; start_column=5; - end_line=3180; end_column=62; + start_line=3189; start_column=5; + end_line=3189; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -21862,8 +21866,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3226; start_column=5; - end_line=3226; end_column=62; + start_line=3235; start_column=5; + end_line=3235; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -22024,8 +22028,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3271; start_column=5; - end_line=3271; end_column=62; + start_line=3280; start_column=5; + end_line=3280; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -22186,8 +22190,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3316; start_column=5; - end_line=3316; end_column=62; + start_line=3325; start_column=5; + end_line=3325; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -22348,8 +22352,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3361; start_column=5; - end_line=3361; end_column=62; + start_line=3370; start_column=5; + end_line=3370; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -22510,8 +22514,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3406; start_column=5; - end_line=3406; end_column=62; + start_line=3415; start_column=5; + end_line=3415; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -22672,8 +22676,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3451; start_column=5; - end_line=3451; end_column=62; + start_line=3460; start_column=5; + end_line=3460; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -22834,8 +22838,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3496; start_column=5; - end_line=3496; end_column=62; + start_line=3505; start_column=5; + end_line=3505; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -22996,8 +23000,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3541; start_column=5; - end_line=3541; end_column=62; + start_line=3550; start_column=5; + end_line=3550; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -23158,8 +23162,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3586; start_column=5; - end_line=3586; end_column=62; + start_line=3595; start_column=5; + end_line=3595; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -23320,8 +23324,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3631; start_column=5; - end_line=3631; end_column=62; + start_line=3640; start_column=5; + end_line=3640; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -23482,8 +23486,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3676; start_column=5; - end_line=3676; end_column=62; + start_line=3685; start_column=5; + end_line=3685; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -23644,8 +23648,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3721; start_column=5; - end_line=3721; end_column=62; + start_line=3730; start_column=5; + end_line=3730; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -23806,8 +23810,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3766; start_column=5; - end_line=3766; end_column=62; + start_line=3775; start_column=5; + end_line=3775; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -23968,8 +23972,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3811; start_column=5; - end_line=3811; end_column=62; + start_line=3820; start_column=5; + end_line=3820; end_column=62; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -24130,8 +24134,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3856; start_column=5; - end_line=3856; end_column=32; + start_line=3865; start_column=5; + end_line=3865; end_column=32; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -24536,8 +24540,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a param_)))))))))|]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3976; start_column=24; - end_line=3976; end_column=56; + start_line=3985; start_column=24; + end_line=3985; end_column=56; law_headings=["Article 37"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -24580,8 +24584,8 @@ let calcul_allocation_logement_accession_propriete (calcul_allocation_logement_a (fun (_: unit) -> raise EmptyError))|]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=3900; start_column=14; - end_line=3900; end_column=46; + start_line=3909; start_column=14; + end_line=3909; end_column=46; law_headings=["Article 33"; "Chapitre IV : Calcul des allocations de logement en secteur accession"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} @@ -26917,7 +26921,7 @@ let eligibilite_prime_de_demenagement (eligibilite_prime_de_demenagement_in: Eli "Prologue : aides au logement"]} ([||]) (fun (_: unit) -> (log_decision_taken {filename = "examples/aides_logement/arrete_2019-09-27.catala_fr"; - start_line=4197; start_column=14; end_line=4197; end_column=29; + start_line=4206; start_column=14; end_line=4206; end_column=29; law_headings=["Article 45"; "Chapitre VIII : Prime de déménagement"; "Arrêté du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de déménagement"]} diff --git a/french_law/python/src/aides_logement.py b/french_law/python/src/aides_logement.py index 6bf82207..a3c38c71 100644 --- a/french_law/python/src/aides_logement.py +++ b/french_law/python/src/aides_logement.py @@ -2651,6 +2651,7 @@ class EligibilitePrestationsFamilialesIn: + def contributions_sociales_aides_personnelle_logement(contributions_sociales_aides_personnelle_logement_in:ContributionsSocialesAidesPersonnelleLogementIn): date_courante = contributions_sociales_aides_personnelle_logement_in.date_courante_in try: @@ -7230,9 +7231,10 @@ def calcul_aide_personnalisee_logement_accession_propriete(calcul_aide_personnal temp_calcul_plafond_mensualite_d832_10_3_24 = False if ((date_courante_5 >= date_of_numbers(2023,1,1)) and ((param_13 >= - date_of_numbers(1992,6,30)) and + date_of_numbers(1992,6,30)) and ((param_13 <= + date_of_numbers(1994,11,27)) and (temp_calcul_plafond_mensualite_d832_10_3_24 and - temp_calcul_plafond_mensualite_d832_10_3_23))): + temp_calcul_plafond_mensualite_d832_10_3_23)))): if (nombre_personnes_a_charge_4 == integer_of_string("0")): match_arg_124 = situation_familiale_calcul_apl_4 @@ -32825,4 +32827,4 @@ def calculette_aides_au_logement_garde_alternee(calculette_aides_au_logement_gar "Prologue : aides au logement"])) aide_finale = temp_aide_finale_2 return CalculetteAidesAuLogementGardeAlternee(eligibilite = eligibilite_3, - aide_finale = aide_finale) \ No newline at end of file + aide_finale = aide_finale) diff --git a/french_law/python/src/allocations_familiales.py b/french_law/python/src/allocations_familiales.py index 5bbcd8eb..1bf25ef4 100644 --- a/french_law/python/src/allocations_familiales.py +++ b/french_law/python/src/allocations_familiales.py @@ -497,6 +497,7 @@ class InterfaceAllocationsFamilialesIn: + def allocation_familiales_avril2008(allocation_familiales_avril2008_in:AllocationFamilialesAvril2008In): try: temp_age_minimum_alinea_1_l521_3 = duration_of_numbers(16,0,0) @@ -3171,4 +3172,4 @@ def interface_allocations_familiales(interface_allocations_familiales_in:Interfa law_headings=["Interface du programme", "Épilogue"])) i_montant_verse = temp_i_montant_verse - return InterfaceAllocationsFamiliales(i_montant_verse = i_montant_verse) \ No newline at end of file + return InterfaceAllocationsFamiliales(i_montant_verse = i_montant_verse) diff --git a/tests/test_name_resolution/good/toplevel_defs.catala_en b/tests/test_name_resolution/good/toplevel_defs.catala_en index a1117cfa..8d233461 100644 --- a/tests/test_name_resolution/good/toplevel_defs.catala_en +++ b/tests/test_name_resolution/good/toplevel_defs.catala_en @@ -65,3 +65,130 @@ $ catala Interpret -s S3 [RESULT] Computation successful! Results: [RESULT] a = 2480. ``` + +## Test inline defs in toplevel defs + +(can't define inline functions yet) + +```catala +declaration glob5 content decimal equals + let x equals decimal of 2 * 3. in + let y equals 1000. in + x * y + +declaration scope S4: + output a content decimal + +scope S4: + definition a equals glob5 + 1. +``` + +```catala-test-inline +$ catala Interpret -s S4 +[RESULT] Computation successful! Results: +[RESULT] a = 6001. +``` + + +```catala-test-inline +$ catala scalc +let glob1 = 44.12 + +let glob3 (x: money) = return to_rat_mon x_3 +. 10. + +let glob4 (x: money) (y: decimal) = return to_rat_mon x_4 *. y_5 +. 10. + +let glob5_aux = + decl glob5_7 : any; + let glob5_7 (x_8 : decimal) = + decl y_9 : decimal; + y_9 = 1000.; + return x_8 *. y_9; + return glob5_7 to_rat_int 2 *. 3. + +let glob5 = glob5_aux () + +let glob2 = A {"y": glob1_2 >=. 30., "z": 123. *. 17.} + +let S2 (S2_in_11 : S2_in {}) = + decl temp_a_13 : any; + try: + decl temp_a_16 : any; + let temp_a_16 (__17 : unit) = + return glob3 $44.00 +. 100.; + decl temp_a_14 : any; + let temp_a_14 (__15 : unit) = + return true; + temp_a_13 = handle_default [] temp_a_14 temp_a_16 + with EmptyError: + temp_a_13 = dead_value_1; + raise NoValueProvided; + decl a_12 : decimal; + a_12 = temp_a_13; + return S2 {"a": a_12} + +let S3 (S3_in_18 : S3_in {}) = + decl temp_a_20 : any; + try: + decl temp_a_23 : any; + let temp_a_23 (__24 : unit) = + return 50. +. glob4 $44.00 55.; + decl temp_a_21 : any; + let temp_a_21 (__22 : unit) = + return true; + temp_a_20 = handle_default [] temp_a_21 temp_a_23 + with EmptyError: + temp_a_20 = dead_value_1; + raise NoValueProvided; + decl a_19 : decimal; + a_19 = temp_a_20; + return S3 {"a": a_19} + +let S4 (S4_in_25 : S4_in {}) = + decl temp_a_27 : any; + try: + decl temp_a_30 : any; + let temp_a_30 (__31 : unit) = + return glob5_6 +. 1.; + decl temp_a_28 : any; + let temp_a_28 (__29 : unit) = + return true; + temp_a_27 = handle_default [] temp_a_28 temp_a_30 + with EmptyError: + temp_a_27 = dead_value_1; + raise NoValueProvided; + decl a_26 : decimal; + a_26 = temp_a_27; + return S4 {"a": a_26} + +let S (S_in_32 : S_in {}) = + decl temp_a_40 : any; + try: + decl temp_a_43 : any; + let temp_a_43 (__44 : unit) = + return glob1_2 *. glob1_2; + decl temp_a_41 : any; + let temp_a_41 (__42 : unit) = + return true; + temp_a_40 = handle_default [] temp_a_41 temp_a_43 + with EmptyError: + temp_a_40 = dead_value_1; + raise NoValueProvided; + decl a_33 : decimal; + a_33 = temp_a_40; + decl temp_b_35 : any; + try: + decl temp_b_38 : any; + let temp_b_38 (__39 : unit) = + return glob2_10; + decl temp_b_36 : any; + let temp_b_36 (__37 : unit) = + return true; + temp_b_35 = handle_default [] temp_b_36 temp_b_38 + with EmptyError: + temp_b_35 = dead_value_1; + raise NoValueProvided; + decl b_34 : A {"y": bool; "z": decimal}; + b_34 = temp_b_35; + return S {"a": a_33, "b": b_34} +``` From c3af0b409735d4fff803b40fc9a19f37809641f1 Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Mon, 13 Feb 2023 15:00:23 +0100 Subject: [PATCH 09/10] Toplevel definitions: branch cleanup - fix remaining warnings (mostly unused arguments) - renamings throughout for consistency and clarity --- compiler/dcalc/from_scopelang.ml | 49 +- compiler/desugared/ast.ml | 4 +- compiler/desugared/ast.mli | 2 +- compiler/desugared/disambiguate.ml | 10 +- compiler/desugared/from_surface.ml | 13 +- compiler/driver.ml | 12 +- compiler/lcalc/closure_conversion.ml | 16 +- compiler/lcalc/compile_with_exceptions.ml | 5 +- compiler/lcalc/compile_without_exceptions.ml | 12 +- compiler/lcalc/optimizations.ml | 18 +- compiler/lcalc/to_ocaml.ml | 15 +- compiler/plugins/api_web.ml | 12 +- compiler/plugins/json_schema.ml | 4 +- compiler/scalc/ast.ml | 13 +- compiler/scalc/from_lambda.ml | 63 +- compiler/scalc/print.ml | 47 +- compiler/scalc/print.mli | 4 +- compiler/scalc/to_python.ml | 21 +- compiler/scopelang/ast.ml | 12 +- compiler/scopelang/ast.mli | 2 +- compiler/scopelang/dependency.ml | 34 +- compiler/scopelang/dependency.mli | 6 +- compiler/scopelang/from_desugared.ml | 6 +- compiler/scopelang/print.ml | 4 +- compiler/shared_ast/definitions.ml | 6 +- compiler/shared_ast/expr.ml | 6 +- compiler/shared_ast/print.ml | 2 +- compiler/shared_ast/program.ml | 14 +- compiler/shared_ast/scope.mli | 9 +- compiler/shared_ast/typing.ml | 18 +- compiler/shared_ast/typing.mli | 2 +- compiler/verification/conditions.ml | 12 +- french_law/js/french_law.js | 134042 ++++++++++++++- french_law/python/src/aides_logement.py | 1 - .../python/src/allocations_familiales.py | 1 - .../good/toplevel_defs.catala_en | 34 +- tests/test_scope/good/nothing.catala_en | 3 +- 37 files changed, 126739 insertions(+), 7795 deletions(-) diff --git a/compiler/dcalc/from_scopelang.ml b/compiler/dcalc/from_scopelang.ml index 50d408d9..3849b12c 100644 --- a/compiler/dcalc/from_scopelang.ml +++ b/compiler/dcalc/from_scopelang.ml @@ -51,7 +51,7 @@ type 'm ctx = { enums : enum_ctx; scope_name : ScopeName.t option; scopes_parameters : 'm scope_sigs_ctx; - global_vars : ('m Ast.expr Var.t * naked_typ) TopdefName.Map.t; + toplevel_vars : ('m Ast.expr Var.t * naked_typ) TopdefName.Map.t; scope_vars : ('m Ast.expr Var.t * naked_typ * Desugared.Ast.io) ScopeVar.Map.t; subscope_vars : @@ -434,7 +434,7 @@ let rec translate_expr (ctx : 'm ctx) (e : 'm Scopelang.Ast.expr) : [ScopeName.get_info sname; ScopeVar.get_info v] | SubScopeVar (s, _, (v, _)) -> [ScopeName.get_info s; ScopeVar.get_info v] - | GlobalVar _ -> []) + | ToplevelVar _ -> []) | _ -> [] in let e1_func = @@ -462,15 +462,15 @@ let rec translate_expr (ctx : 'm ctx) (e : 'm Scopelang.Ast.expr) : ctx.subscope_vars |> SubScopeName.Map.find (Marked.unmark sname) |> retrieve_in_and_out_typ_or_any var - | ELocation (GlobalVar glo) -> ( - let var, typ = - TopdefName.Map.find (Marked.unmark glo) ctx.global_vars + | ELocation (ToplevelVar tvar) -> ( + let _, typ = + TopdefName.Map.find (Marked.unmark tvar) ctx.toplevel_vars in match typ with | TArrow ((tin, _), (tout, _)) -> tin, tout | _ -> Errors.raise_spanned_error (Expr.pos e) - "Application of non function global") + "Application of non-function toplevel variable") | _ -> TAny, TAny in let new_args = @@ -538,8 +538,8 @@ let rec translate_expr (ctx : 'm ctx) (e : 'm Scopelang.Ast.expr) : %a's results. Maybe you forgot to qualify it as an output?" SubScopeName.format_t (Marked.unmark s) ScopeVar.format_t (Marked.unmark a) SubScopeName.format_t (Marked.unmark s)) - | ELocation (GlobalVar v) -> - let v, _ = TopdefName.Map.find (Marked.unmark v) ctx.global_vars in + | ELocation (ToplevelVar v) -> + let v, _ = TopdefName.Map.find (Marked.unmark v) ctx.toplevel_vars in Expr.evar v m | EIfThenElse { cond; etrue; efalse } -> Expr.eifthenelse (translate_expr ctx cond) (translate_expr ctx etrue) @@ -663,10 +663,11 @@ let translate_rule (a_var, Marked.unmark tau, a_io))) ctx.subscope_vars; } ) - | Definition ((GlobalVar _, _), _, _, _) -> + | Definition ((ToplevelVar _, _), _, _, _) -> assert false - (* TODO: maybe Definition shouldn't include any Location at the type - level *) + (* A global variable can't be defined locally. The [Definition] constructor + could be made more specific to avoid this case, but the added complexity + didn't seem worth it *) | Call (subname, subindex, m) -> let subscope_sig = ScopeName.Map.find subname ctx.scopes_parameters in let all_subscope_vars = subscope_sig.scope_sig_local_vars in @@ -989,13 +990,11 @@ let translate_scope_decl (input_destructurings rules_with_return_expr)), new_struct_ctx ) -(* TODO: rename "scope" here to avoid confusion, since it now includes toplevel - defs and scopes *) let translate_program (prgm : 'm Scopelang.Ast.program) : 'm Ast.program = - let scope_dependencies = Scopelang.Dependency.build_program_dep_graph prgm in - Scopelang.Dependency.check_for_cycle_in_scope scope_dependencies; - let scope_ordering = - Scopelang.Dependency.get_scope_ordering scope_dependencies + let defs_dependencies = Scopelang.Dependency.build_program_dep_graph prgm in + Scopelang.Dependency.check_for_cycle_in_defs defs_dependencies; + let defs_ordering = + Scopelang.Dependency.get_defs_ordering defs_dependencies in let decl_ctx = prgm.program_ctx in let sctx : 'm scope_sigs_ctx = @@ -1053,11 +1052,11 @@ let translate_program (prgm : 'm Scopelang.Ast.program) : 'm Ast.program = prgm.Scopelang.Ast.program_scopes in let top_ctx = - let global_vars = + let toplevel_vars = TopdefName.Map.mapi (fun name (_, ty) -> Var.make (Marked.unmark (TopdefName.get_info name)), Marked.unmark ty) - prgm.Scopelang.Ast.program_globals + prgm.Scopelang.Ast.program_topdefs in { structs = decl_ctx.ctx_structs; @@ -1067,7 +1066,7 @@ let translate_program (prgm : 'm Scopelang.Ast.program) : 'm Ast.program = scope_vars = ScopeVar.Map.empty; subscope_vars = SubScopeName.Map.empty; local_vars = Var.Map.empty; - global_vars; + toplevel_vars; } in (* the resulting expression is the list of definitions of all the scopes, @@ -1078,11 +1077,11 @@ let translate_program (prgm : 'm Scopelang.Ast.program) : 'm Ast.program = | def :: next -> let ctx, dvar, def = match def with - | Scopelang.Dependency.Global gname -> - let expr, ty = TopdefName.Map.find gname prgm.program_globals in + | Scopelang.Dependency.Topdef gname -> + let expr, ty = TopdefName.Map.find gname prgm.program_topdefs in let expr = translate_expr ctx expr in ( ctx, - fst (TopdefName.Map.find gname ctx.global_vars), + fst (TopdefName.Map.find gname ctx.toplevel_vars), Bindlib.box_apply (fun e -> Topdef (gname, ty, e)) (Expr.Box.lift expr) ) @@ -1110,8 +1109,8 @@ let translate_program (prgm : 'm Scopelang.Ast.program) : 'm Ast.program = def next_bind, ctx ) in - let scopes, ctx = translate_defs top_ctx scope_ordering in + let items, ctx = translate_defs top_ctx defs_ordering in { - scopes = Bindlib.unbox scopes; + code_items = Bindlib.unbox items; decl_ctx = { decl_ctx with ctx_structs = ctx.structs }; } diff --git a/compiler/desugared/ast.ml b/compiler/desugared/ast.ml index aa0ff4e0..98ea3436 100644 --- a/compiler/desugared/ast.ml +++ b/compiler/desugared/ast.ml @@ -197,7 +197,7 @@ type scope = { type program = { program_scopes : scope ScopeName.Map.t; - program_globals : (expr * typ) TopdefName.Map.t; + program_topdefs : (expr * typ) TopdefName.Map.t; program_ctx : decl_ctx; } @@ -227,7 +227,7 @@ let free_variables (def : rule RuleName.Map.t) : Pos.t ScopeDefMap.t = ( Marked.unmark sub_index, Marked.unmark sub_var, Marked.get_mark sub_index )) - | GlobalVar _ -> None + | ToplevelVar _ -> None in match usage with Some u -> ScopeDefMap.add u loc_pos acc | None -> acc) locs acc diff --git a/compiler/desugared/ast.mli b/compiler/desugared/ast.mli index 7f40750f..988fba0b 100644 --- a/compiler/desugared/ast.mli +++ b/compiler/desugared/ast.mli @@ -119,7 +119,7 @@ type scope = { type program = { program_scopes : scope ScopeName.Map.t; - program_globals : (expr * typ) TopdefName.Map.t; + program_topdefs : (expr * typ) TopdefName.Map.t; program_ctx : decl_ctx; } diff --git a/compiler/desugared/disambiguate.ml b/compiler/desugared/disambiguate.ml index bb298803..8ff615b0 100644 --- a/compiler/desugared/disambiguate.ml +++ b/compiler/desugared/disambiguate.ml @@ -60,13 +60,13 @@ let scope ctx env scope = let program prg = let env = TopdefName.Map.fold - (fun name (_e, ty) env -> Typing.Env.add_global_var name ty env) - prg.program_globals Typing.Env.empty + (fun name (_e, ty) env -> Typing.Env.add_toplevel_var name ty env) + prg.program_topdefs Typing.Env.empty in - let program_globals = + let program_topdefs = TopdefName.Map.map (fun (e, ty) -> Expr.unbox (expr prg.program_ctx env (Expr.box e)), ty) - prg.program_globals + prg.program_topdefs in let env = ScopeName.Map.fold @@ -85,4 +85,4 @@ let program prg = let program_scopes = ScopeName.Map.map (scope prg.program_ctx env) prg.program_scopes in - { prg with program_globals; program_scopes } + { prg with program_topdefs; program_scopes } diff --git a/compiler/desugared/from_surface.ml b/compiler/desugared/from_surface.ml index 7c141797..f1d71d7a 100644 --- a/compiler/desugared/from_surface.ml +++ b/compiler/desugared/from_surface.ml @@ -358,7 +358,7 @@ let rec translate_expr match IdentName.Map.find_opt x ctxt.topdefs with | Some v -> Expr.elocation - (GlobalVar (v, Marked.get_mark (TopdefName.get_info v))) + (ToplevelVar (v, Marked.get_mark (TopdefName.get_info v))) emark | None -> Name_resolution.raise_unknown_identifier @@ -1192,10 +1192,9 @@ let process_topdef ctxt prgm def = (ctxt, []) def.S.topdef_args in let body = translate_expr None None ctxt def.S.topdef_expr in - match def.S.topdef_args with + match rv_args with | [] -> body - | args -> - (* FIXME: hmm where do we stand on arg tuplification ? *) + | rv_args -> Expr.make_abs (Array.of_list (List.rev rv_args)) body arg_types @@ -1208,8 +1207,8 @@ let process_topdef ctxt prgm def = in { prgm with - Ast.program_globals = - TopdefName.Map.add id (Expr.unbox expr, typ) prgm.Ast.program_globals; + Ast.program_topdefs = + TopdefName.Map.add id (Expr.unbox expr, typ) prgm.Ast.program_topdefs; } let attribute_to_io (attr : Surface.Ast.scope_decl_context_io) : Ast.io = @@ -1361,7 +1360,7 @@ let translate_program ctxt.Name_resolution.typedefs ScopeName.Map.empty; ctx_struct_fields = ctxt.Name_resolution.field_idmap; }; - Ast.program_globals = TopdefName.Map.empty; + Ast.program_topdefs = TopdefName.Map.empty; Ast.program_scopes; } in diff --git a/compiler/driver.ml b/compiler/driver.ml index dcc41c56..b79cd489 100644 --- a/compiler/driver.ml +++ b/compiler/driver.ml @@ -243,7 +243,7 @@ let driver source_file (options : Cli.options) : int = when Shared_ast.ScopeName.equal name scope_uid -> Some body | _ -> acc) - prgm.scopes) ) + prgm.code_items) ) else let prgrm_dcalc_expr = Shared_ast.Expr.unbox (Shared_ast.Program.to_expr prgm scope_uid) @@ -364,12 +364,14 @@ let driver source_file (options : Cli.options) : int = @@ fun fmt -> if Option.is_some options.ex_scope then Format.fprintf fmt "%a\n" - (Scalc.Print.format_scope ~debug:options.debug + (Scalc.Print.format_item ~debug:options.debug prgm.decl_ctx) (List.find - (fun body -> - body.Scalc.Ast.scope_body_name = scope_uid) - prgm.scopes) + (function + | Scalc.Ast.SScope { scope_body_name; _ } -> + scope_body_name = scope_uid + | _ -> false) + prgm.code_items) else Scalc.Print.format_program prgm.decl_ctx fmt prgm | `Python -> let output_file, with_output = diff --git a/compiler/lcalc/closure_conversion.ml b/compiler/lcalc/closure_conversion.ml index 3e873a68..589ac244 100644 --- a/compiler/lcalc/closure_conversion.ml +++ b/compiler/lcalc/closure_conversion.ml @@ -166,10 +166,10 @@ let closure_conversion_expr (type m) (ctx : m ctx) (e : m expr) : m expr boxed = e' let closure_conversion (p : 'm program) : 'm program Bindlib.box = - let _, new_scopes = + let _, new_code_items = Scope.fold_map - ~f:(fun global_vars var code_item -> - ( Var.Set.add var global_vars, + ~f:(fun toplevel_vars var code_item -> + ( Var.Set.add var toplevel_vars, match code_item with | ScopeDef (name, body) -> let scope_input_var, scope_body_expr = @@ -178,7 +178,7 @@ let closure_conversion (p : 'm program) : 'm program Bindlib.box = let ctx = { name_context = Marked.unmark (ScopeName.get_info name); - globally_bound_vars = global_vars; + globally_bound_vars = toplevel_vars; } in let new_scope_lets = @@ -198,7 +198,7 @@ let closure_conversion (p : 'm program) : 'm program Bindlib.box = let ctx = { name_context = Marked.unmark (TopdefName.get_info name); - globally_bound_vars = global_vars; + globally_bound_vars = toplevel_vars; } in Bindlib.box_apply @@ -207,8 +207,8 @@ let closure_conversion (p : 'm program) : 'm program Bindlib.box = ~varf:(fun v -> v) (Var.Set.of_list (List.map Var.translate [handle_default; handle_default_opt])) - p.scopes + p.code_items in Bindlib.box_apply - (fun new_scopes -> { p with scopes = new_scopes }) - new_scopes + (fun new_code_items -> { p with code_items = new_code_items }) + new_code_items diff --git a/compiler/lcalc/compile_with_exceptions.ml b/compiler/lcalc/compile_with_exceptions.ml index 28e087f2..73ef407b 100644 --- a/compiler/lcalc/compile_with_exceptions.ml +++ b/compiler/lcalc/compile_with_exceptions.ml @@ -136,7 +136,7 @@ let rec translate_scope_lets new_scope_next (Expr.Box.lift new_scope_let_expr) -let rec translate_scopes +let translate_items (decl_ctx : decl_ctx) (ctx : 'm ctx) (scopes : 'm D.expr code_item_list) : 'm A.expr code_item_list Bindlib.box = @@ -167,6 +167,7 @@ let rec translate_scopes let translate_program (prgm : 'm D.program) : 'm A.program = { - scopes = Bindlib.unbox (translate_scopes prgm.decl_ctx () prgm.scopes); + code_items = + Bindlib.unbox (translate_items prgm.decl_ctx () prgm.code_items); decl_ctx = prgm.decl_ctx; } diff --git a/compiler/lcalc/compile_without_exceptions.ml b/compiler/lcalc/compile_without_exceptions.ml index 6fcc21af..aecc1efa 100644 --- a/compiler/lcalc/compile_without_exceptions.ml +++ b/compiler/lcalc/compile_without_exceptions.ml @@ -511,7 +511,7 @@ let translate_scope_body }) (Bindlib.bind_var v' (translate_scope_let ctx' lets)) -let rec translate_scopes (ctx : 'm ctx) (scopes : 'm D.expr code_item_list) : +let translate_code_items (ctx : 'm ctx) (scopes : 'm D.expr code_item_list) : 'm A.expr code_item_list Bindlib.box = let _ctx, scopes = Scope.fold_map @@ -534,9 +534,9 @@ let rec translate_scopes (ctx : 'm ctx) (scopes : 'm D.expr code_item_list) : let translate_program (prgm : 'm D.program) : 'm A.program = let inputs_structs = - Scope.fold_left prgm.scopes ~init:[] ~f:(fun acc def _ -> + Scope.fold_left prgm.code_items ~init:[] ~f:(fun acc def _ -> match def with - | ScopeDef (name, body) -> body.scope_body_input_struct :: acc + | ScopeDef (_, body) -> body.scope_body_input_struct :: acc | Topdef _ -> acc) in (* Cli.debug_print @@ Format.asprintf "List of structs to modify: [%a]" @@ -565,9 +565,9 @@ let translate_program (prgm : 'm D.program) : 'm A.program = } in - let scopes = + let code_items = Bindlib.unbox - (translate_scopes { decl_ctx; vars = Var.Map.empty } prgm.scopes) + (translate_code_items { decl_ctx; vars = Var.Map.empty } prgm.code_items) in - { scopes; decl_ctx } + { code_items; decl_ctx } diff --git a/compiler/lcalc/optimizations.ml b/compiler/lcalc/optimizations.ml index 6551e551..26190f21 100644 --- a/compiler/lcalc/optimizations.ml +++ b/compiler/lcalc/optimizations.ml @@ -53,16 +53,20 @@ let rec beta_expr (e : 'm expr) : 'm expr boxed = | _ -> visitor_map beta_expr e let iota_optimizations (p : 'm program) : 'm program = - let new_scopes = Scope.map_exprs ~f:iota_expr ~varf:(fun v -> v) p.scopes in - { p with scopes = Bindlib.unbox new_scopes } + let new_code_items = + Scope.map_exprs ~f:iota_expr ~varf:(fun v -> v) p.code_items + in + { p with code_items = Bindlib.unbox new_code_items } (* TODO: beta optimizations apply inlining of the program. We left the inclusion of beta-optimization as future work since its produce code that is harder to read, and can produce exponential blowup of the size of the generated program. *) let _beta_optimizations (p : 'm program) : 'm program = - let new_scopes = Scope.map_exprs ~f:beta_expr ~varf:(fun v -> v) p.scopes in - { p with scopes = Bindlib.unbox new_scopes } + let new_code_items = + Scope.map_exprs ~f:beta_expr ~varf:(fun v -> v) p.code_items + in + { p with code_items = Bindlib.unbox new_code_items } let rec peephole_expr (e : 'm expr) : 'm expr boxed = let m = Marked.get_mark e in @@ -95,10 +99,10 @@ let rec peephole_expr (e : 'm expr) : 'm expr boxed = | _ -> visitor_map peephole_expr e let peephole_optimizations (p : 'm program) : 'm program = - let new_scopes = - Scope.map_exprs ~f:peephole_expr ~varf:(fun v -> v) p.scopes + let new_code_items = + Scope.map_exprs ~f:peephole_expr ~varf:(fun v -> v) p.code_items in - { p with scopes = Bindlib.unbox new_scopes } + { p with code_items = Bindlib.unbox new_code_items } let optimize_program (p : 'm program) : untyped program = p |> iota_optimizations |> peephole_optimizations |> Program.untype diff --git a/compiler/lcalc/to_ocaml.ml b/compiler/lcalc/to_ocaml.ml index 991481b7..21887866 100644 --- a/compiler/lcalc/to_ocaml.ml +++ b/compiler/lcalc/to_ocaml.ml @@ -504,17 +504,17 @@ let rec format_scope_body_expr (format_scope_body_expr ctx) scope_let_next -let rec format_scopes +let format_code_items (ctx : decl_ctx) (fmt : Format.formatter) - (scopes : 'm Ast.expr code_item_list) : unit = + (code_items : 'm Ast.expr code_item_list) : unit = Scope.fold_left ~f:(fun () item var -> match item with - | Topdef (name, typ, e) -> + | Topdef (_, typ, e) -> Format.fprintf fmt "@\n@\n@[let %a : %a =@\n%a@]" format_var var format_typ typ (format_expr ctx) e - | ScopeDef (name, body) -> + | ScopeDef (_, body) -> let scope_input_var, scope_body_expr = Bindlib.unbind body.scope_body_expr in @@ -524,7 +524,7 @@ let rec format_scopes (`Sname body.scope_body_output_struct) (format_scope_body_expr ctx) scope_body_expr) - ~init:() scopes + ~init:() code_items let format_program (fmt : Format.formatter) @@ -541,5 +541,6 @@ let format_program @\n\ %a%a@\n\ @?" - (format_ctx type_ordering) p.decl_ctx (format_scopes p.decl_ctx) - p.scopes) + (format_ctx type_ordering) p.decl_ctx + (format_code_items p.decl_ctx) + p.code_items) diff --git a/compiler/plugins/api_web.ml b/compiler/plugins/api_web.ml index 78bd0ac4..caf91ba4 100644 --- a/compiler/plugins/api_web.ml +++ b/compiler/plugins/api_web.ml @@ -336,14 +336,14 @@ module To_jsoo = struct format_struct_name fmt scope_body.scope_body_output_struct let format_scopes_to_fun - (ctx : decl_ctx) + (_ctx : decl_ctx) (fmt : Format.formatter) (scopes : 'e code_item_list) = Scope.fold_left ~f:(fun () code_item var -> match code_item with | Topdef _ -> () - | ScopeDef (name, body) -> + | ScopeDef (_name, body) -> let fmt_fun_call fmt _ = Format.fprintf fmt "@[%a@ |> %a_of_jsoo@ |> %a@ |> %a_to_jsoo@]" fmt_input_struct_name body fmt_input_struct_name body format_var @@ -356,14 +356,14 @@ module To_jsoo = struct ~init:() scopes let format_scopes_to_callbacks - (ctx : decl_ctx) + (_ctx : decl_ctx) (fmt : Format.formatter) (scopes : 'e code_item_list) : unit = Scope.fold_left ~f:(fun () code_item var -> match code_item with | Topdef _ -> () - | ScopeDef (name, body) -> + | ScopeDef (_name, body) -> let fmt_meth_name fmt _ = Format.fprintf fmt "method %a : (%a Js.t -> %a Js.t) Js.callback" format_var_camel_case var fmt_input_struct_name body @@ -412,9 +412,9 @@ module To_jsoo = struct (Option.fold ~none:"" ~some:(fun name -> name) module_name) (format_ctx type_ordering) prgm.decl_ctx (format_scopes_to_fun prgm.decl_ctx) - prgm.scopes fmt_lib_name () + prgm.code_items fmt_lib_name () (format_scopes_to_callbacks prgm.decl_ctx) - prgm.scopes) + prgm.code_items) end let apply diff --git a/compiler/plugins/json_schema.ml b/compiler/plugins/json_schema.ml index fd4922c0..e0f8ce02 100644 --- a/compiler/plugins/json_schema.ml +++ b/compiler/plugins/json_schema.ml @@ -102,7 +102,7 @@ module To_json = struct let fmt_definitions (ctx : decl_ctx) (fmt : Format.formatter) - ((scope_name, scope_body) : ScopeName.t * 'e scope_body) = + ((_scope_name, scope_body) : ScopeName.t * 'e scope_body) = let get_name t = match Marked.unmark t with | TStruct sname -> Format.asprintf "%a" format_struct_name sname @@ -205,7 +205,7 @@ module To_json = struct (fmt : Format.formatter) (scope : string) (prgm : 'm Lcalc.Ast.program) = - match find_scope_def scope prgm.scopes with + match find_scope_def scope prgm.code_items with | None -> Cli.error_print "Internal error: scope '%s' not found." scope | Some scope_def -> Cli.call_unstyled (fun _ -> diff --git a/compiler/scalc/ast.ml b/compiler/scalc/ast.ml index 7d6a29e7..bd1e6f2b 100644 --- a/compiler/scalc/ast.ml +++ b/compiler/scalc/ast.ml @@ -67,12 +67,9 @@ type scope_body = { scope_body_func : func; } -type global = - | GlobalVar of { var : VarName.t; expr : expr } - | GlobalFunc of { var : FuncName.t; func : func } +type code_item = + | SVar of { var : VarName.t; expr : expr } + | SFunc of { var : FuncName.t; func : func } + | SScope of scope_body -type program = { - decl_ctx : decl_ctx; - globals : global list; - scopes : scope_body list; -} +type program = { decl_ctx : decl_ctx; code_items : code_item list } diff --git a/compiler/scalc/from_lambda.ml b/compiler/scalc/from_lambda.ml index cf0b6433..9d6b6f5c 100644 --- a/compiler/scalc/from_lambda.ml +++ b/compiler/scalc/from_lambda.ml @@ -330,9 +330,9 @@ let rec translate_scope_body_expr scope_let_next let translate_program (p : 'm L.program) : A.program = - let _, _, rglobals, rscopes = + let _, _, rev_items = Scope.fold_left - ~f:(fun (func_dict, var_dict, globals, scopes) code_item var -> + ~f:(fun (func_dict, var_dict, rev_items) code_item var -> match code_item with | ScopeDef (name, body) -> let scope_input_var, scope_body_expr = @@ -352,21 +352,21 @@ let translate_program (p : 'm L.program) : A.program = let func_id = A.FuncName.fresh (Bindlib.name_of var, Pos.no_pos) in ( Var.Map.add var func_id func_dict, var_dict, - globals, - { - Ast.scope_body_name = name; - Ast.scope_body_var = func_id; - scope_body_func = - { - A.func_params = - [ - ( (scope_input_var_id, input_pos), - (TStruct body.scope_body_input_struct, input_pos) ); - ]; - A.func_body = new_scope_body; - }; - } - :: scopes ) + A.SScope + { + Ast.scope_body_name = name; + Ast.scope_body_var = func_id; + scope_body_func = + { + A.func_params = + [ + ( (scope_input_var_id, input_pos), + (TStruct body.scope_body_input_struct, input_pos) ); + ]; + A.func_body = new_scope_body; + }; + } + :: rev_items ) | Topdef (name, _, (EAbs abs, _)) -> (* Toplevel function def *) let func_id = A.FuncName.fresh (Bindlib.name_of var, Pos.no_pos) in @@ -399,14 +399,13 @@ let translate_program (p : 'm L.program) : A.program = in ( Var.Map.add var func_id func_dict, var_dict, - A.GlobalFunc + A.SFunc { var = func_id; func = { A.func_params = args_id; A.func_body = body_block }; } - :: globals, - scopes ) - | Topdef (name, ty, expr) -> + :: rev_items ) + | Topdef (name, _ty, expr) -> (* Toplevel constant def *) let var_id = A.VarName.fresh (Bindlib.name_of var, Pos.no_pos) in let block, expr = @@ -423,18 +422,18 @@ let translate_program (p : 'm L.program) : A.program = in (* If the evaluation of the toplevel expr requires preliminary statements, we lift its computation into an auxiliary function *) - let globals = + let rev_items = match block with - | [] -> A.GlobalVar { var = var_id; expr } :: globals + | [] -> A.SVar { var = var_id; expr } :: rev_items | block -> let pos = Marked.get_mark expr in let func_id = A.FuncName.fresh (Bindlib.name_of var ^ "_aux", pos) in (* The list is being built in reverse order *) - A.GlobalVar + A.SVar { var = var_id; expr = A.EApp ((EFunc func_id, pos), []), pos } - :: A.GlobalFunc + :: A.SFunc { var = func_id; func = @@ -448,25 +447,19 @@ let translate_program (p : 'm L.program) : A.program = ]; }; } - :: globals + :: rev_items in ( func_dict, (* No need to add func_id since the function will only be called right here *) Var.Map.add var var_id var_dict, - globals, - scopes )) + rev_items )) ~init: ( (if !Cli.avoid_exceptions_flag then Var.Map.singleton L.handle_default_opt A.handle_default_opt else Var.Map.singleton L.handle_default A.handle_default), Var.Map.empty, - [], [] ) - p.scopes + p.code_items in - { - decl_ctx = p.decl_ctx; - globals = List.rev rglobals; - scopes = List.rev rscopes; - } + { decl_ctx = p.decl_ctx; code_items = List.rev rev_items } diff --git a/compiler/scalc/print.ml b/compiler/scalc/print.ml index a67835ec..625de1f9 100644 --- a/compiler/scalc/print.ml +++ b/compiler/scalc/print.ml @@ -23,6 +23,10 @@ let needs_parens (_e : expr) : bool = false let format_var_name (fmt : Format.formatter) (v : VarName.t) : unit = Format.fprintf fmt "%a_%s" VarName.format_t v (string_of_int (VarName.hash v)) +let format_func_name (fmt : Format.formatter) (v : FuncName.t) : unit = + Format.fprintf fmt "%a_%s" FuncName.format_t v + (string_of_int (FuncName.hash v)) + let rec format_expr (decl_ctx : decl_ctx) ?(debug : bool = false) @@ -37,7 +41,7 @@ let rec format_expr in match Marked.unmark e with | EVar v -> Format.fprintf fmt "%a" format_var_name v - | EFunc v -> Format.fprintf fmt "%a" FuncName.format_t v + | EFunc v -> Format.fprintf fmt "%a" format_func_name v | EStruct (es, s) -> Format.fprintf fmt "@[%a@ %a%a%a@]" StructName.format_t s Print.punctuation "{" @@ -165,56 +169,35 @@ and format_block (format_statement decl_ctx ~debug) fmt block -let format_scope - (decl_ctx : decl_ctx) - ?(debug : bool = false) - (fmt : Format.formatter) - (body : scope_body) : unit = - if debug then () else (); - Format.fprintf fmt "@[%a@ %a@ %a@ %a@]@\n@[ %a@]@," Print.keyword - "let" FuncName.format_t body.scope_body_var - (Format.pp_print_list - ~pp_sep:(fun fmt () -> Format.fprintf fmt "@ ") - (fun fmt ((name, _), typ) -> - Format.fprintf fmt "%a%a %a@ %a%a" Print.punctuation "(" - format_var_name name Print.punctuation ":" (Print.typ decl_ctx) typ - Print.punctuation ")")) - body.scope_body_func.func_params Print.punctuation "=" - (format_block decl_ctx ~debug) - body.scope_body_func.func_body - -let format_global decl_ctx ?debug ppf def = +let format_item decl_ctx ?debug ppf def = Format.pp_open_hvbox ppf 2; Format.pp_open_hovbox ppf 4; Print.keyword ppf "let "; let () = match def with - | GlobalVar { var; expr } -> - VarName.format_t ppf var; + | SVar { var; expr } -> + format_var_name ppf var; Print.punctuation ppf " ="; Format.pp_close_box ppf (); Format.pp_print_space ppf (); format_expr decl_ctx ?debug ppf expr - | GlobalFunc { var; func = { func_params; func_body } } -> - FuncName.format_t ppf var; + | SScope { scope_body_var = var; scope_body_func = func; _ } + | SFunc { var; func } -> + format_func_name ppf var; Format.pp_print_list (fun ppf (arg, ty) -> - Format.fprintf ppf "@ (%a: %a)" VarName.format_t (Marked.unmark arg) + Format.fprintf ppf "@ (%a: %a)" format_var_name (Marked.unmark arg) (Print.typ decl_ctx) ty) - ppf func_params; + ppf func.func_params; Print.punctuation ppf " ="; Format.pp_close_box ppf (); Format.pp_print_space ppf (); - format_block decl_ctx ?debug ppf func_body + format_block decl_ctx ?debug ppf func.func_body in Format.pp_close_box ppf (); Format.pp_print_cut ppf () let format_program decl_ctx ?debug ppf prg = Format.pp_open_vbox ppf 0; - Format.pp_print_list (format_global decl_ctx ?debug) ppf prg.globals; - Format.pp_print_cut ppf (); - Format.pp_print_list - (fun ppf scope -> (format_scope prg.decl_ctx ?debug) ppf scope) - ppf prg.scopes; + Format.pp_print_list (format_item decl_ctx ?debug) ppf prg.code_items; Format.pp_close_box ppf () diff --git a/compiler/scalc/print.mli b/compiler/scalc/print.mli index f184b06c..66cf7a19 100644 --- a/compiler/scalc/print.mli +++ b/compiler/scalc/print.mli @@ -14,11 +14,11 @@ License for the specific language governing permissions and limitations under the License. *) -val format_scope : +val format_item : Shared_ast.decl_ctx -> ?debug:bool -> Format.formatter -> - Ast.scope_body -> + Ast.code_item -> unit val format_program : diff --git a/compiler/scalc/to_python.ml b/compiler/scalc/to_python.ml index 7beb72ec..1f41a7e9 100644 --- a/compiler/scalc/to_python.ml +++ b/compiler/scalc/to_python.ml @@ -586,7 +586,7 @@ let format_program (* We disable the style flag in order to enjoy formatting from the pretty-printers of Dcalc and Lcalc but without the color terminal markers. *) - Cli.call_unstyled (fun _ -> + Cli.call_unstyled (fun () -> Format.fprintf fmt "# This file has been generated by the Catala compiler, do not edit!\n\ @\n\ @@ -595,17 +595,17 @@ let format_program from enum import Enum\n\ @\n\ @[%a@]@\n\ - @[%a@]@\n\ @\n\ %a@?" (format_ctx type_ordering) p.decl_ctx (Format.pp_print_list ~pp_sep:Format.pp_print_newline (fun fmt -> function - | GlobalVar { var; expr } -> + | SVar { var; expr } -> Format.fprintf fmt "@[%a = (@,%a@,@])@," format_var_name var (format_expression p.decl_ctx) expr - | GlobalFunc { var; func } -> + | SFunc { var; func } + | SScope { scope_body_var = var; scope_body_func = func; _ } -> let { Ast.func_params; Ast.func_body } = func in Format.fprintf fmt "@[def %a(%a):@\n%a@]@," format_func_name var @@ -615,15 +615,4 @@ let format_program Format.fprintf fmt "%a:%a" format_var (Marked.unmark var) format_typ typ)) func_params (format_block p.decl_ctx) func_body)) - p.globals - (Format.pp_print_list ~pp_sep:Format.pp_print_newline (fun fmt body -> - let { Ast.func_params; Ast.func_body } = body.scope_body_func in - Format.fprintf fmt "@[def %a(%a):@\n%a@]@," format_func_name - body.scope_body_var - (Format.pp_print_list - ~pp_sep:(fun fmt () -> Format.fprintf fmt ", ") - (fun fmt (var, typ) -> - Format.fprintf fmt "%a:%a" format_var (Marked.unmark var) - format_typ typ)) - func_params (format_block p.decl_ctx) func_body)) - p.scopes) + p.code_items) diff --git a/compiler/scopelang/ast.ml b/compiler/scopelang/ast.ml index 49ef6ef4..a193e256 100644 --- a/compiler/scopelang/ast.ml +++ b/compiler/scopelang/ast.ml @@ -53,7 +53,7 @@ type 'm scope_decl = { type 'm program = { program_scopes : 'm scope_decl ScopeName.Map.t; - program_globals : ('m expr * typ) TopdefName.Map.t; + program_topdefs : ('m expr * typ) TopdefName.Map.t; program_ctx : decl_ctx; } @@ -72,14 +72,14 @@ let type_rule decl_ctx env = function let type_program (prg : 'm program) : typed program = let typing_env = TopdefName.Map.fold - (fun name (_, ty) -> Typing.Env.add_global_var name ty) - prg.program_globals Typing.Env.empty + (fun name (_, ty) -> Typing.Env.add_toplevel_var name ty) + prg.program_topdefs Typing.Env.empty in - let program_globals = + let program_topdefs = TopdefName.Map.map (fun (expr, typ) -> Expr.unbox (Typing.expr prg.program_ctx ~env:typing_env ~typ expr), typ) - prg.program_globals + prg.program_topdefs in let typing_env = ScopeName.Map.fold @@ -110,4 +110,4 @@ let type_program (prg : 'm program) : typed program = { scope_decl with scope_decl_rules; scope_mark }) prg.program_scopes in - { prg with program_globals; program_scopes } + { prg with program_topdefs; program_scopes } diff --git a/compiler/scopelang/ast.mli b/compiler/scopelang/ast.mli index 427ede52..be106d03 100644 --- a/compiler/scopelang/ast.mli +++ b/compiler/scopelang/ast.mli @@ -45,7 +45,7 @@ type 'm scope_decl = { type 'm program = { program_scopes : 'm scope_decl ScopeName.Map.t; - program_globals : ('m expr * typ) TopdefName.Map.t; + program_topdefs : ('m expr * typ) TopdefName.Map.t; program_ctx : decl_ctx; } diff --git a/compiler/scopelang/dependency.ml b/compiler/scopelang/dependency.ml index 3ce56f2a..d4187f93 100644 --- a/compiler/scopelang/dependency.ml +++ b/compiler/scopelang/dependency.ml @@ -20,7 +20,7 @@ open Catala_utils open Shared_ast -type vertex = Scope of ScopeName.t | Global of TopdefName.t +type vertex = Scope of ScopeName.t | Topdef of TopdefName.t module SVertex = struct type t = vertex @@ -31,31 +31,31 @@ module SVertex = struct let compare v1 v2 = match v1, v2 with | Scope s1, Scope s2 -> ScopeName.compare s1 s2 - | Global g1, Global g2 -> TopdefName.compare g1 g2 + | Topdef g1, Topdef g2 -> TopdefName.compare g1 g2 | Scope _, _ -> -1 | _, Scope _ -> 1 - | Global _, _ | _, Global _ -> . + | Topdef _, _ | _, Topdef _ -> . let equal v1 v2 = match v1, v2 with | Scope s1, Scope s2 -> ScopeName.equal s1 s2 - | Global g1, Global g2 -> TopdefName.equal g1 g2 - | (Scope _ | Global _), _ -> false + | Topdef g1, Topdef g2 -> TopdefName.equal g1 g2 + | (Scope _ | Topdef _), _ -> false let hash = function | Scope s -> ScopeName.hash s - | Global g -> TopdefName.hash g + | Topdef g -> TopdefName.hash g let to_string v = Format.asprintf "%a" (fun ppf -> function | Scope s -> ScopeName.format_t ppf s - | Global g -> TopdefName.format_t ppf g) + | Topdef g -> TopdefName.format_t ppf g) v let info = function | Scope s -> ScopeName.get_info s - | Global g -> TopdefName.get_info g + | Topdef g -> TopdefName.get_info g end module VMap = Map.Make (SVertex) @@ -84,7 +84,7 @@ let rec expr_used_defs e = e VMap.empty in match e with - | ELocation (GlobalVar (v, pos)), _ -> VMap.singleton (Global v) pos + | ELocation (ToplevelVar (v, pos)), _ -> VMap.singleton (Topdef v) pos | (EScopeCall { scope; _ }, m) as e -> VMap.add (Scope scope) (Expr.mark_pos m) (recurse_subterms e) | EAbs { binder; _ }, _ -> @@ -105,8 +105,8 @@ let build_program_dep_graph (prgm : 'm Ast.program) : SDependencies.t = let g = SDependencies.empty in let g = TopdefName.Map.fold - (fun v _ g -> SDependencies.add_vertex g (Global v)) - prgm.program_globals g + (fun v _ g -> SDependencies.add_vertex g (Topdef v)) + prgm.program_topdefs g in let g = ScopeName.Map.fold @@ -117,18 +117,18 @@ let build_program_dep_graph (prgm : 'm Ast.program) : SDependencies.t = TopdefName.Map.fold (fun glo_name (expr, _) g -> let used_defs = expr_used_defs expr in - if VMap.mem (Global glo_name) used_defs then + if VMap.mem (Topdef glo_name) used_defs then Errors.raise_spanned_error (Marked.get_mark (TopdefName.get_info glo_name)) - "The global %a has a definition that refers to itself, which is \ + "The Topdef %a has a definition that refers to itself, which is \ forbidden since Catala does not provide recursion" TopdefName.format_t glo_name; VMap.fold (fun def pos g -> - let edge = SDependencies.E.create def pos (Global glo_name) in + let edge = SDependencies.E.create def pos (Topdef glo_name) in SDependencies.add_edge_e g edge) used_defs g) - prgm.program_globals g + prgm.program_topdefs g in ScopeName.Map.fold (fun scope_name scope g -> @@ -151,7 +151,7 @@ let build_program_dep_graph (prgm : 'm Ast.program) : SDependencies.t = g scope.Ast.scope_decl_rules) prgm.program_scopes g -let check_for_cycle_in_scope (g : SDependencies.t) : unit = +let check_for_cycle_in_defs (g : SDependencies.t) : unit = (* if there is a cycle, there will be an strongly connected component of cardinality > 1 *) let sccs = SSCC.scc_list g in @@ -181,7 +181,7 @@ let check_for_cycle_in_scope (g : SDependencies.t) : unit = Errors.raise_multispanned_error spans "Cyclic dependency detected between scopes!" -let get_scope_ordering (g : SDependencies.t) : SVertex.t list = +let get_defs_ordering (g : SDependencies.t) : SVertex.t list = List.rev (STopologicalTraversal.fold (fun sd acc -> sd :: acc) g []) module TVertex = struct diff --git a/compiler/scopelang/dependency.mli b/compiler/scopelang/dependency.mli index 9ad1e1ad..962eb02c 100644 --- a/compiler/scopelang/dependency.mli +++ b/compiler/scopelang/dependency.mli @@ -22,7 +22,7 @@ open Shared_ast (** {1 Scope dependencies} *) -type vertex = Scope of ScopeName.t | Global of TopdefName.t +type vertex = Scope of ScopeName.t | Topdef of TopdefName.t (** On the edges, the label is the expression responsible for the use of the function *) @@ -30,8 +30,8 @@ module SDependencies : Graph.Sig.P with type V.t = vertex and type E.label = Pos.t val build_program_dep_graph : 'm Ast.program -> SDependencies.t -val check_for_cycle_in_scope : SDependencies.t -> unit -val get_scope_ordering : SDependencies.t -> vertex list +val check_for_cycle_in_defs : SDependencies.t -> unit +val get_defs_ordering : SDependencies.t -> vertex list (** {1 Type dependencies} *) diff --git a/compiler/scopelang/from_desugared.ml b/compiler/scopelang/from_desugared.ml index 391c7d5c..fcec0c44 100644 --- a/compiler/scopelang/from_desugared.ml +++ b/compiler/scopelang/from_desugared.ml @@ -71,7 +71,7 @@ let rec translate_expr (ctx : ctx) (e : Desugared.Ast.expr) : | WholeVar _ -> failwith "should not happen" | States states -> Marked.same_mark_as (List.assoc state states) s_var)) m - | ELocation (GlobalVar v) -> Expr.elocation (GlobalVar v) m + | ELocation (ToplevelVar v) -> Expr.elocation (ToplevelVar v) m | EVar v -> Expr.evar (Var.Map.find v ctx.var_mapping) m | EStruct { name; fields } -> Expr.estruct name (StructField.Map.map (translate_expr ctx) fields) m @@ -728,10 +728,10 @@ let translate_program (pgrm : Desugared.Ast.program) : untyped Ast.program = pgrm.Desugared.Ast.program_ctx.ctx_scopes in { - Ast.program_globals = + Ast.program_topdefs = TopdefName.Map.map (fun (e, ty) -> Expr.unbox (translate_expr ctx e), ty) - pgrm.program_globals; + pgrm.program_topdefs; Ast.program_scopes = ScopeName.Map.map (translate_scope ctx) pgrm.program_scopes; program_ctx = { pgrm.program_ctx with ctx_scopes }; diff --git a/compiler/scopelang/print.ml b/compiler/scopelang/print.ml index 66b57607..b7a8c57e 100644 --- a/compiler/scopelang/print.ml +++ b/compiler/scopelang/print.ml @@ -77,7 +77,7 @@ let scope ?(debug = false) ctx fmt (name, decl) = (Print.typ ctx) typ Print.punctuation "=" (fun fmt e -> match Marked.unmark loc with - | SubScopeVar _ | GlobalVar _ -> Print.expr ctx fmt e + | SubScopeVar _ | ToplevelVar _ -> Print.expr ctx fmt e | ScopelangScopeVar v -> ( match Marked.unmark @@ -138,7 +138,7 @@ let program ?(debug : bool = false) (fmt : Format.formatter) (p : 'm program) : (fun name def -> print_topdef ctx fmt name def; pp_sep fmt ()) - p.program_globals; + p.program_topdefs; Format.pp_print_list ~pp_sep (scope ~debug ctx) fmt (ScopeName.Map.bindings p.program_scopes); Format.pp_close_box fmt () diff --git a/compiler/shared_ast/definitions.ml b/compiler/shared_ast/definitions.ml index 1c4e7cb5..2219a566 100644 --- a/compiler/shared_ast/definitions.ml +++ b/compiler/shared_ast/definitions.ml @@ -246,7 +246,9 @@ type 'a glocation = | SubScopeVar : ScopeName.t * SubScopeName.t Marked.pos * ScopeVar.t Marked.pos -> [< desugared | scopelang ] glocation - | GlobalVar : TopdefName.t Marked.pos -> [< desugared | scopelang ] glocation + | ToplevelVar : + TopdefName.t Marked.pos + -> [< desugared | scopelang ] glocation type ('a, 't) gexpr = (('a, 't) naked_gexpr, 't) Marked.t (** General expressions: groups all expression cases of the different ASTs, and @@ -463,4 +465,4 @@ type decl_ctx = { ctx_scopes : scope_out_struct ScopeName.Map.t; } -type 'e program = { decl_ctx : decl_ctx; scopes : 'e code_item_list } +type 'e program = { decl_ctx : decl_ctx; code_items : 'e code_item_list } diff --git a/compiler/shared_ast/expr.ml b/compiler/shared_ast/expr.ml index 808cd624..8d1c3bd2 100644 --- a/compiler/shared_ast/expr.ml +++ b/compiler/shared_ast/expr.ml @@ -469,15 +469,15 @@ let compare_location SubScopeVar (_, (ysubindex, _), (ysubvar, _)) ) -> let c = SubScopeName.compare xsubindex ysubindex in if c = 0 then ScopeVar.compare xsubvar ysubvar else c - | GlobalVar (vx, _), GlobalVar (vy, _) -> TopdefName.compare vx vy + | ToplevelVar (vx, _), ToplevelVar (vy, _) -> TopdefName.compare vx vy | DesugaredScopeVar _, _ -> -1 | _, DesugaredScopeVar _ -> 1 | ScopelangScopeVar _, _ -> -1 | _, ScopelangScopeVar _ -> 1 | SubScopeVar _, _ -> -1 | _, SubScopeVar _ -> 1 - | GlobalVar _, _ -> . - | _, GlobalVar _ -> . + | ToplevelVar _, _ -> . + | _, ToplevelVar _ -> . let equal_location a b = compare_location a b = 0 let equal_except ex1 ex2 = ex1 = ex2 diff --git a/compiler/shared_ast/print.ml b/compiler/shared_ast/print.ml index 23278b9d..e3f6f0a5 100644 --- a/compiler/shared_ast/print.ml +++ b/compiler/shared_ast/print.ml @@ -66,7 +66,7 @@ let location (type a) (fmt : Format.formatter) (l : a glocation) : unit = | SubScopeVar (_, subindex, subvar) -> Format.fprintf fmt "%a.%a" SubScopeName.format_t (Marked.unmark subindex) ScopeVar.format_t (Marked.unmark subvar) - | GlobalVar v -> TopdefName.format_t fmt (Marked.unmark v) + | ToplevelVar v -> TopdefName.format_t fmt (Marked.unmark v) let enum_constructor (fmt : Format.formatter) (c : EnumConstructor.t) : unit = Cli.format_with_style [ANSITerminal.magenta] fmt diff --git a/compiler/shared_ast/program.ml b/compiler/shared_ast/program.ml index 395dde8b..76ac24fd 100644 --- a/compiler/shared_ast/program.ml +++ b/compiler/shared_ast/program.ml @@ -17,19 +17,19 @@ open Definitions -let map_exprs ~f ~varf { scopes; decl_ctx } = +let map_exprs ~f ~varf { code_items; decl_ctx } = Bindlib.box_apply - (fun scopes -> { scopes; decl_ctx }) - (Scope.map_exprs ~f ~varf scopes) + (fun code_items -> { code_items; decl_ctx }) + (Scope.map_exprs ~f ~varf code_items) -let get_scope_body { scopes; _ } scope = +let get_scope_body { code_items; _ } scope = match Scope.fold_left ~init:None ~f:(fun acc item _ -> match item with | ScopeDef (name, body) when ScopeName.equal scope name -> Some body | _ -> acc) - scopes + code_items with | None -> raise Not_found | Some body -> body @@ -47,7 +47,7 @@ let rec find_scope name vars = function find_scope name (var :: vars) next let to_expr p main_scope = - let _, main_scope_body = find_scope main_scope [] p.scopes in - Scope.unfold p.decl_ctx p.scopes + let _, main_scope_body = find_scope main_scope [] p.code_items in + Scope.unfold p.decl_ctx p.code_items (Scope.get_body_mark main_scope_body) (ScopeName main_scope) diff --git a/compiler/shared_ast/scope.mli b/compiler/shared_ast/scope.mli index 1c0f4666..7c429f12 100644 --- a/compiler/shared_ast/scope.mli +++ b/compiler/shared_ast/scope.mli @@ -15,7 +15,8 @@ License for the specific language governing permissions and limitations under the License. *) -(** Functions handling the scope structures of [shared_ast] *) +(** Functions handling the code item structures of [shared_ast], in particular + the scopes *) open Catala_utils open Definitions @@ -53,9 +54,9 @@ val fold_left : init:'a -> 'expr1 code_item_list -> 'a -(** Usage: [fold_left ~f:(fun acc scope_def scope_var -> ...) ~init scope_def], - where [scope_var] is the variable bound to the scope in the next scopes to - be examined. *) +(** Usage: [fold_left ~f:(fun acc code_def code_var -> ...) ~init code_def], + where [code_var] is the variable bound to the code item in the next code + items to be examined. *) val fold_right : f:('expr1 code_item -> 'expr1 Var.t -> 'a -> 'a) -> diff --git a/compiler/shared_ast/typing.ml b/compiler/shared_ast/typing.ml index 64728f76..67466f9e 100644 --- a/compiler/shared_ast/typing.ml +++ b/compiler/shared_ast/typing.ml @@ -276,7 +276,7 @@ module Env = struct vars : ('e, unionfind_typ) Var.Map.t; scope_vars : A.typ A.ScopeVar.Map.t; scopes : A.typ A.ScopeVar.Map.t A.ScopeName.Map.t; - global_vars : A.typ A.TopdefName.Map.t; + toplevel_vars : A.typ A.TopdefName.Map.t; } let empty = @@ -284,12 +284,12 @@ module Env = struct vars = Var.Map.empty; scope_vars = A.ScopeVar.Map.empty; scopes = A.ScopeName.Map.empty; - global_vars = A.TopdefName.Map.empty; + toplevel_vars = A.TopdefName.Map.empty; } let get t v = Var.Map.find_opt v t.vars let get_scope_var t sv = A.ScopeVar.Map.find_opt sv t.scope_vars - let get_global_var t v = A.TopdefName.Map.find_opt v t.global_vars + let get_toplevel_var t v = A.TopdefName.Map.find_opt v t.toplevel_vars let get_subscope_out_var t scope var = Option.bind (A.ScopeName.Map.find_opt scope t.scopes) (fun vmap -> @@ -304,8 +304,8 @@ module Env = struct let add_scope scope_name ~vars t = { t with scopes = A.ScopeName.Map.add scope_name vars t.scopes } - let add_global_var v typ t = - { t with global_vars = A.TopdefName.Map.add v typ t.global_vars } + let add_toplevel_var v typ t = + { t with toplevel_vars = A.TopdefName.Map.add v typ t.toplevel_vars } let open_scope scope_name t = let scope_vars = @@ -367,7 +367,7 @@ and typecheck_expr_top_down : Env.get_scope_var env (Marked.unmark v) | SubScopeVar (scope, _, v) -> Env.get_subscope_out_var env scope (Marked.unmark v) - | GlobalVar v -> Env.get_global_var env (Marked.unmark v) + | ToplevelVar v -> Env.get_toplevel_var env (Marked.unmark v) in let ty = match ty_opt with @@ -816,5 +816,7 @@ let rec scopes ctx env = function Bindlib.box_apply2 (fun item next -> A.Cons (item, next)) def next_bind' let program prg = - let scopes = Bindlib.unbox (scopes prg.A.decl_ctx Env.empty prg.A.scopes) in - { prg with scopes } + let code_items = + Bindlib.unbox (scopes prg.A.decl_ctx Env.empty prg.A.code_items) + in + { prg with code_items } diff --git a/compiler/shared_ast/typing.mli b/compiler/shared_ast/typing.mli index bbe9922c..1154034d 100644 --- a/compiler/shared_ast/typing.mli +++ b/compiler/shared_ast/typing.mli @@ -24,7 +24,7 @@ module Env : sig val empty : 'e t val add_var : 'e Var.t -> typ -> 'e t -> 'e t - val add_global_var : TopdefName.t -> typ -> 'e t -> 'e t + val add_toplevel_var : TopdefName.t -> typ -> 'e t -> 'e t val add_scope_var : ScopeVar.t -> typ -> 'e t -> 'e t val add_scope : ScopeName.t -> vars:typ ScopeVar.Map.t -> 'e t -> 'e t val open_scope : ScopeName.t -> 'e t -> 'e t diff --git a/compiler/verification/conditions.ml b/compiler/verification/conditions.ml index 85603fc6..ec54aa48 100644 --- a/compiler/verification/conditions.ml +++ b/compiler/verification/conditions.ml @@ -370,12 +370,12 @@ let rec generate_verification_conditions_scope_body_expr in new_ctx, vc_list @ new_vcs, assert_list @ new_asserts -let rec generate_verification_conditions_scopes +let generate_verification_conditions_code_items (decl_ctx : decl_ctx) - (scopes : 'm expr code_item_list) + (code_items : 'm expr code_item_list) (s : ScopeName.t option) : verification_condition list = Scope.fold_left - ~f:(fun vcs item var -> + ~f:(fun vcs item _ -> match item with | Topdef _ -> [] | ScopeDef (name, body) -> @@ -419,11 +419,13 @@ let rec generate_verification_conditions_scopes else [] in new_vcs @ vcs) - ~init:[] scopes + ~init:[] code_items let generate_verification_conditions (p : 'm program) (s : ScopeName.t option) : verification_condition list = - let vcs = generate_verification_conditions_scopes p.decl_ctx p.scopes s in + let vcs = + generate_verification_conditions_code_items p.decl_ctx p.code_items s + in (* We sort this list by scope name and then variable name to ensure consistent output for testing*) List.sort diff --git a/french_law/js/french_law.js b/french_law/js/french_law.js index ba2df878..af917bb5 100644 --- a/french_law/js/french_law.js +++ b/french_law/js/french_law.js @@ -1,7537 +1,126507 @@ +//# 1 "api_web.bc.runtime.js" // Generated by js_of_ocaml 4.0.0 -(function(a){typeof -globalThis!=="object"&&(this?b():(a.defineProperty(a.prototype,"_T_",{configurable:true,get:b}),_T_));function -b(){var -b=this||self;b.globalThis=b;delete -a.prototype._T_}}(Object));(function(aL){"use strict";var -bzw=aL,bzz=typeof -module==="object"&&module.exports||aL,AR="38527",iq=1133,rx=424,gV=857,cq="\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales",Gf="Article L521-1",kt="Paragraphe 2 : Ouverture du droit et liquidation.",nw=365180284,AQ="Changement",Ge="26714",Gd=163,AP="redevance_in",o9="SaintMartin",gM=815,Gc=1197,AO="1015",ju=891,ec="Section 1 : Seuils de constitution d'un impay\xc3\xa9",AM=4865,AN="559500",b6="Article 1",cX="aide_finale_formule",AL="35630",gU=122,sx="Article 31",kW="50",bg="Unexpected '",fY=299,Gb="34700",jt=181,nv="Article 19",o8=862,kV=305,js=4442,ei=128,ks="Avant",rw="identifiant",o7="Oui",sw=1127,Ga="43000",rv="Article D832-26",eD=683,ip=573,ru=383,eY=146,nu=">",o6=575,gf=153,F$=1027,io=1129,o5=1053,eh=297,AK=4437,o4="Article 17",an="Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9",F_="b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s_in",eX="Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es",AJ="local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire_in",nt=933,o2=1125,o3="baseMensuelleAllocationsFamiliales",AI="35762",aM="Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement",jr=804,A="Calcul du montant de l'allocation logement",F9=358,d2=2011,dg=2023,d1=295,F8=462,im="Article L841-1",rt="ServicesSociauxAllocationVerseeALaFamille",F7=3685,AG="186000",AH="Instruction interminist\xc3\xa9rielle no DSS/SD2B/2020/33 du 18 f\xc3\xa9vrier 2020 relative \xc3\xa0 la revalorisation au 1er avril 2020 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",AF="16.25",rs="0.0315",kr="traitement_aide_finale_diminu\xc3\xa9",ns=1118,jq=4835,F6="\xc3\xa9ligibilit\xc3\xa9_commune.date_courante",AE="40758",o1="e",o0=313,il="Autre",ik=798,AC=4382,AD=1150,F5="Article L822-2",AB=3909,jp=421,ge="smic",AA="39445",ij=1071,bD="Article D842-6",nr=1052,Ay=-43,Az="Neuf",Ax=3097,ii=901,Aw=3235,sv="Article 27",jo=897,F4="inf",F3="calculetteAidesAuLogementGardeAlternee",Av="27365",F2="Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",nq=685,Au=4637,F1="41392",kU=111,np=929,F0="Location",FZ=4456,As="240400",At=269,su=709,st="Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale",jn=619,FY="33500",kq="CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9",cp="Article D823-9",bI="traitement_aide_finale_minoration_forfaitaire",rr="\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",FX="infinity",FW=1855,ih="2.5",FV="3663",Aq=1134,Ar=278,eg="Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement",Ap=3194,eC="examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr",Ao="\\t",FT=3953,FU=2457,aG="examples/aides_logement/code_construction_legislatif.catala_fr",Am="situation_r822_11_13_17_in",An=330,FS=385,aP="Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien",kT=112,ig="1000",gL=1131,eb=563,c8="examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr",kS=701,Al="210600",FR="Unexpected '%s' kind for the enumeration 'ElementPrestationsFamiliales.t'",Ak="Couple",kp=687,no="SaintPierreEtMiquelon",FQ="loyer_minimal",ie=110,co="PrestationsFamiliales",oZ=464,FP="\xc3\x89l\xc3\xa9mentPrestationsFamiliales",Aj=1103,oY=679,FO="214700",FN=3973,id=615,dP="Calcul\xc3\x89quivalenceLoyerMinimale",Ai=2083,oX=554,FM="42926",jm=1096,rq=265,Ah=-32,nn=4408,Ag="39016",oW="AllocationLogementFamiliale",ea=1023,FK=2601,FL="interfaceAllocationsFamiliales",cl=561,nm="AllocationLogementSociale",Af=1974,Ae="plafond_l512_3_2",jl=639,rp="Chapitre II : Des contributions pour le remboursement de la dette sociale.",aW="examples/allocations_familiales/decrets_divers.catala_fr",fX=117,Ad=348,kR="compl\xc3\xa9ment_d\xc3\xa9gressif",ro="Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9",FI="240200",FJ="Assert_failure",ss="Section 1 : Secteur locatif ordinaire",FH="568400",sr="0.32",Ac="40961",FG=350,kQ="Non",jk=508,Ab=185,kP="Article R824-2",FF=219,FE=1e14,Aa="D331_76_1",jj=3489,oV="Article R521-3",z$="17607",$=2022,FC="34865",FD="Fatal error: exception %s\n",z_="261800",oU=865,ko=740,fW="Article 2",eB=256,dO=558,ic=786,z9="Article L521-3",FB="Article R822-1",z8="45064",FA="taux_francs_vers_euros",kO="abattement_d\xc3\xa9pense_nette_minimale_d832_10",oT=699,sq="mensualit\xc3\xa9_\xc3\xa9ligible",gd=1075,nl="D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance",sp="ENOENT",so=1395,rn="0.0006",ia=3935,ib=315,rl="EnfantLePlus\xc3\x82g\xc3\xa9",rm=259,z7=2685,nk=556,bw="examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr",z6="228000",Fz="ENOTEMPTY",z5="copropri\xc3\xa9t\xc3\xa9_in",sn="Article 13",Fy="calcul_apl_logement_foyer.nombre_personnes_\xc3\xa0_charge",z4="D331_59_8",Fw="Loyer",Fx="35947",z3=2540,ji=3486,eW=564,z2="brut_horaire",z1=172,Fv="x",z0="Sous-section 1 : Aides personnelles au logement",Fu="calculAidePersonnaliseeLogementAccessionPropriete",h$=547,ci="Articles valables du 1er octobre 2020 au 31 septembre 2021",kn="Article D755-5",fV=680,Ft="Article D842-4",jh=791,dF=314,sm="%d",rk=810,nj=4768,zZ="Z.of_substring_base: invalid digit",Fs="ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille",Fr="logement_est_chambre_in",h_=637,ni=285,zY="buffer.ml",e="Prologue : aides au logement",D="Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9",zX=3640,Fp="167600",Fq="39590",Fo=3213,Fn=2565,gT=2008,rj="0.0179",Fm=3505,zW="245700",B="Prologue",zV=3366,nh="calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge",Fl="Metropole",cd=100,kM="prise_en_compte_personne_\xc3\xa0_charge",kN=851,ng=702,h9=420,fq=300,h8=4831,_="3",a9="Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples",zU=230,oR=413,Fk="835",oS="169.",zT="plafond_\xc3\xa9quivalence_loyer_\xc3\xa9ligible",zS=0.5,Fj=4027,kL=990,cU="Article D521-1",Fh="conventionn\xc3\xa9_livre_III_titre_V_chap_III",oQ=622,Fi="sous_calcul_traitement",nf=4769,zR=374,h7=956,oP="Article D842-11",d0="Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses",zQ=4137,c4=107,ne=381,nd="Article D842-12",jg=690,oO="prestations_familiales",kK="est_enfant_le_plus_\xc3\xa2g\xc3\xa9",zP="26440",h6=649,Fg="201700",sl="Unix.Unix_error",h5=1139,zO=284,Fe="calculAidePersonnaliseeLogement",oN=553,Ff=3970,h4=1088,zN="Stack_overflow",fj="condition_2_r823_4",a7="Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer",aU="\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement",oM=4089,Fd=4843,h3=3487,zL=3460,zM="/static/",ri=253,Fc="Not_found",zK="1085",rg=235,rh="\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02",zJ="851",zI="41268",a0="examples/allocations_familiales/epilogue.catala_fr",oL=695,Fb="calcul_apl_logement_foyer.date_courante",ca=848054398,oK="Mayotte",Fa="smic.date_courante",zG=1841,zH=260,oJ="1224",E_="calcul_apl_locatif",E$=243,dA="calcul_plafond_mensualit\xc3\xa9_d832_10_3",h2=1049,rf="rmdir",oI=696,gc=1069,E8="participation_minimale",E9=32752,zF="33623",sk="19100",zE="37478",gb="calcul_nombre_parts",zD=3279,sj="Article 23",oH="Article R842-5",zC=1026,dq=149,E7="taux_composition_familiale",bQ="montant",dZ="Article L521-2",bu="examples/allocations_familiales/../smic/smic.catala_fr",zz="calculAllocationLogementLocatif",zA="37906",zB="false",dp=849,oG="Invalid integer: ",zy="PasDeChangement",E6=2381,bv="\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement",zx=3325,a_=106,E5=346,h1=186,dN=0x80,eV="Chapitre 1er : Dispositions relatives aux prestations",si="Fatal error: exception ",zw=4211,oF="\xc3\xa9ligibilit\xc3\xa9_commune",sh="0.0234",E4="43378",zv="calcul_apl_logement_foyer.date_conventionnement",h0=852,E3=234,zu=1413,hZ=1054,sg="25978",dY=303,zt=1556,E2=493,E1="Section 2 : R\xc3\xa8gles de non-cumul",hY="zone_in",sf="_",zr="eligibilitePrimeDeDemenagement",hX=517,zs=3143,re="compare: functional value",b5="0.",zo=114,zp="40928",zq="19300",nc=411,nb=978,zn="197700",zm="Invalid_argument",hW=4832,rd=823,E0="EndCall([ ",oE="0.9",EY="Article R822-22",EZ="prise_en_charge",zl="calcul_aide_personnalis\xc3\xa9e_logement",zk=249,EW="34301",EX="577500",zi=3941,zj="%ni",na=949,fp=324,W=2020,zh=3783,EV="PersonneSeule",zg=1418,oD=559,rc="0.0238",se="Article 9",EU="225100",ET="AutresPersonnes",dn="6",jf=495,zf="173600",fU=858,p="0",ap="Section 3 : Logements-foyers",ze="montant_forfaitaire_charges_d823_16",km="Article L161-17-2",d="examples/aides_logement/prologue.catala_fr",ES="eligibiliteAidesPersonnelleLogement",eU=817,bm=248,zd=1905,m$=341,oC=322,je=2007,ER="208200",y_="Zone1",y$="Locataire",za=2245,hV=301,zb="R\xc3\xa8glement (CE) n\xc2\xb02866/98 du conseil du 31 d\xc3\xa9cembre 1998 concernant les taux de conversion entre l'euro et les monnaies des \xc3\x89tats membres adoptant l'euro",zc="37457",EQ="562800",y9="535744",EP=572,y8="235800",m_=555,b4=403,m9=930,EN=2412,EO="resetLog",EM=4811,y7="\xc3\xa2ge_l512_3_2",U="AllocationsFamiliales",y6="situation_familiale_calcul_apl",rb="GardeAlterneeAllocataireUnique",m8="D\xc3\xa9cret n\xc2\xb0 2022-1608 du 22 d\xc3\xa9cembre 2022 portant rel\xc3\xa8vement du salaire minimum de croissance",EK="haut",EL=1215,gK=1024,y4="204761",y5="3.1",jd=802,m7=133,sd="35780",y2="calculAidePersonnaliseeLogementFoyer",y3=4470,EJ=4484,oB=945,fh=366,fi=0xffffff,EI="34829",y0=524,y1=4805,m6=876,jc="Titre III: Titre III : Dispositions communes relatives au financement",EH="36378",ax="Calculette globale",hU=286,EG="149600",ga=3775,yZ=3370,kJ="Article R824-1",c3=1994,EF=4568,hT=2010,bK="Prologue : prestations familiales",sc=2147483647,EE="774",oA=689,yY=", characters ",f$=456,ra="180100",f_="BaseMensuelleAllocationsFamiliales",yX="prestations_familiales.r\xc3\xa9sidence",ED="819",bn="Chapitre IV : Calcul des allocations de logement en secteur accession",yW="AllocationJournali\xc3\xa8rePresenceParentale",yV=".0",EC=4038,EB="36733",q$="AllocationFamilialesAvril2008",yU=328,jb=693,eT=855,EA="AllocationRentreeScolaire",q_="mensualit\xc3\xa9_minimale",kI="2.",m5=691,fo="5612",yT="Concubins",dE="calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9",yS="date_entr\xc3\xa9e_logement_in",sb="Montants revaloris\xc3\xa9s de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",yR="SaintBarth\xc3\xa9lemy",ab="Partie l\xc3\xa9gislative",yQ=357,hS=2003,kl="Article R823-4",yP="32956",br="examples/allocations_familiales/securite_sociale_D.catala_fr",yO="294500",yN=3085,q9="examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr",Ez=3051,dX="RessourcesAidesPersonnelleLogement",f9="Montant des plafonds de ressources",bq="Annexe",eS="Section 1 : B\xc3\xa9n\xc3\xa9ficiaires",Ey=2913,Ex="3524",yM="Article D832-27",Ew=3553,yL="Zone3",kk="500",fT=471,Ev=304,dM=2015,yK="40144",Eu=4052,fn="prise_en_compte",Et=3985,yJ=3144,Es="223900",yI="ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux",Er=138,yH="225500",oz=1998,x="Livre VIII : Aides personnelles au logement",hR=905,kj="caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6",q8="nan",Eq="38892",yG=1276,m4=4401,yE="calculNombrePartLogementFoyer",m3=646,yF=4972,kH="Impay\xc3\xa9D\xc3\xa9penseLogement",bf="Calculette avec garde altern\xc3\xa9e",Ep=0xdfff,hQ="4.3",eA="/",Eo=4504,sa="ENOTDIR",r$=1073741823,En=1426,yD=273,yB=4191,yC="\\r",r_="0.0068",r9=513,Em="calcul_allocation_logement",q7="coefficient_prise_en_charge",yz=4045,m1=743,m2=734,yA=206,El="1107",yy=3811,kG="Article D161-2-1-9",oy="Guyane",ow="PasDeTravaux",ox=311,m0=255,Ek="Revenu",bH="droit_ouvert_majoration",F="Partie r\xc3\xa9glementaire",c7="Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat",yx=4918,Ej="coefficient_r_d832_25",yw="Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s",Ei="Sous-section 4 : Prise en compte du patrimoine",i="D\xc3\xa9clarations des champs d'application",yv="End_of_file",Eh="calcul_apl_logement_foyer.condition_2_du_832_25",yu="calculAllocationLogementFoyer",ki="traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9",fg="Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer",ja="Article 24",q6="Failure",Eg="267871",yt="167800",Ef=2344,a6="CalculetteAidesAuLogement",Ed=1865,Ee=1347,Y=684,mZ=715,q5="\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",ys=0xdc00,yr="389618",ov="3.",i$=788,yq="185800",r8="0.0201",ou=880,Ec="Sys_error",yp=4003,fS="Article D521-2",Eb=3587,mY=703,ot=3595,r7="nombre_personnes_\xc3\xa0_charge_prises_en_compte",ez="Sous-section 4 : Assurance vieillesse",D$=3889,Ea="Printexc.handle_uncaught_exception",cT="Article D832-24",kF=618,os="30500",hP=1079,yo="194810",mW=745,mX="int_of_string",Q="examples/aides_logement/arrete_2019-09-27.catala_fr",yn="Chapitre Ier : Principes g\xc3\xa9n\xc3\xa9raux",or="Article 37",ym="39340",yl="name",cJ=103,i_=966,yj=4118,yk=447,i9=428,al="Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement",kE="traitement_aide_finale_redevance",D_=3951,dW=132,yi=" ])",D8="1.4",oq=698,D9=4005,mV="31797",yf="type_travaux_logement_in",yg="19484",yh=3210,mU=988,ye=3850,cG="Article 7",D7="%Li",mT=864,yd=3963,gJ=591,op=1014,q4="r\xc3\xa9muneration_mensuelle",dz=302,hO=960,yc=205,cF="Article 14",yb="34570",q3="date_de_naissance",i8=1090,mS="base_mensuelle_allocations_familiales",i7=795,D6=2439,i6=927,ya=2380,mR="_z",i5=2000,r6=1951,mQ=860,oo="Arr\xc3\xaat\xc3\xa9 du 29 juillet 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance",x$=2269,eR=136,b8="Titre IV : Allocations de logement",x_="retrieveRawEvents",ef="InterfaceAllocationsFamiliales",mP=985,D5=4851,i4=1077,kh="Pendant",q2="%a",gI=", ",ff="5422",x9=199,c6=2018,D4="17012",on="calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25",x8="AllocationJournalierePresenceParentale",D3=3542,bX="Chapitre III : Calcul des aides personnelles au logement en secteur locatif",D2="' kind for the enumeration 'ElementPrestationsFamiliales.t'",hN=682,fR=467,bE="Prestations familiales",DZ="Enfant\xc3\x80Charge",D0="calculette",D1="GardeAltern\xc3\xa9eAllocataireUnique",ey="Article D823-16",DY="172500",r5="n_nombre_parts_d832_25",r4="Apres",hM=1084,x7=359,bG="examples/aides_logement/../prestations_familiales/prologue.catala_fr",q1=2187,DX="179800",fm=" ",K="Secteur locatif",DW="Undefined_recursive_module",ae="output",x6="195500",x5=1194,x4=2959,bB="Articles valables du 1er octobre 2021 au 30 juin 2022",DV="base_mensuelle_allocations_familiales.date_courante",q0="199900",qZ=1424,cE=-976970511,x2="' kind for the enumeration 'SituationObligationScolaire.t'",x3="%.16g",DU="220100",om=189,x1=4422,kg="droit_ouvert_forfaitaire",kf=620,x0="%i",qY="0.01",DT="262985",xZ="409505",xY="LogementFoyer",DS="139700",ol="PrestationAccueilJeuneEnfant",DR="Article L822-4",ok=856,xX="41252",DO="0.1",DP="Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9",DQ=382,mO="5399",qX="2805",fe=123,mN=570,xW="calcul_apl_logement_foyer.type_logement_foyer",hL="0.0173",gH=806,L="Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement",fQ=159,xV="LocationAccession",i3=1067,mM=577,DN=183,qW="a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales",DM="41338",dy=0xff,xU=2217,mL="Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance",DL=-12,mK="calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies",mJ=458,xT=191,mI="Article 15",df="0.75",ke="Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin",DK="22355",mH=3654863,DJ="140800",oj=145,r3="Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",ex=455,DI=1997,xS="163000",oi=991,kd="0.5",oh="Article R842-14",kc=641,xR="fd ",DH=2203,xQ="41751",xP="181800",r2=409,xN="\xc3\xa9quivalence_loyer_\xc3\xa9ligible",xO="41316",DG=4784,bJ="traitement_aide_finale_contributions_sociales_arrondi",xM="cat\xc3\xa9gorie_calcul_apl",xL="757",cc="Prise en compte des ressources pour les aides personnelles au logement",kD="coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte",hJ=377,hK=1081,DF=1290,og=848,fP=2001,qV="Compl\xc3\xa9mentFamilial",hI=793,xK=633,DE="smic.r\xc3\xa9sidence",xJ=3260,az="Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es",f8=1018,mG=108,DD="Article D832-18",mF=-2147483648,eQ=2002,z="1",xI="Chapitre II : Dispositions applicables aux ressources",mE="Article R822-7",DC="42605",xG="VendeurQuandDemandeurAContratLocationAccession",xH="Article R755-0-2",qU=406,DB="calculNombrePartsAccessionPropriete",DA="allocationFamilialesAvril2008",r1=": Not a directory",xF="b",Dy="18900",Dz="Article D521-3",cS="CalculAidePersonnalis\xc3\xa9eLogement",xE="D331_63_64",dV=2012,Dx=4725,Dv="42469",Dw="Out_of_memory",xD=4897,E="examples/aides_logement/code_construction_reglementaire.catala_fr",ah="4",r0="index out of bounds",mD=986,Du=2379,xC=3886,Ds="27900",Dt=3481,i2=903,of="_bigarr02",Dr=3178,xA=975,xB="31264",mC=881,Dq=0xffffffff,hH=4441,gG=895,Dp="LaR\xc3\xa9union",xz=3531,mB="Article L822-5",mA=574,Do="981600",hF=3771,hG=292,ew=0xffff,i1=2009,Dn="%.17g",xx=1806,mz="calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25",xy=400,xv=1965,xw=1148,c5="100.",Dk="1.25",Dl=143,Dm=4100,xu="44729",xt=1310,eP="\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3",gF=963043957,P="5",my=142,oe=741,dm=126,i0="AllocationSoutienFamilial",xr=2575,xs=840,Dj="SousLocataire",xq="34713",od=628,bb="Section 1 : Calcul, liquidation et versement des aides",kC=124,Di=3550,xp="0.98",gE="Article L512-3",Dg=2182,Dh=1626,xn="633129",xo=422,iZ=427,dl=150,xm="41440",mx=135,iY=899,dk="\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement",dD="Sous-section 2 : Calcul de l'aide en secteur locatif",xl=2393,kb=252,Df="enfant_le_plus_\xc3\xa2g\xc3\xa9",I="examples/allocations_familiales/prologue.catala_fr",au="CalculAidePersonnalis\xc3\xa9eLogementFoyer",ev=".",oc=147,De=0xf0,xk="eligibilitePrestationsFamiliales",cI="12.",ch=694,mw="Guadeloupe",xj=276,bp=116,ob="230500",xi="enfantLePlusAge",oa=576,mv=627,dj=365,hE=813,fl="traitement_aide_finale_montant_minimal",di=294,xh="impossible case",iX=1073,dU="examples/allocations_familiales/securite_sociale_R.catala_fr",f7=968,eO="R\xc3\xa8gles diverses",Dd=3280,mu=500,Dc=-1080,Db="18185",hD=638,xg="SaintBarthelemy",dC=1063,Da=-1023,C_="type_logement_foyer_in",n$=859,C$=221,gD="1272",xf="ressources_m\xc3\xa9nage_avec_arrondi",C8="ouvertureDroitsRetraite",C9="\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement",iW=3773,C7="204700",rZ="Article L755-12",xe="TravauxPourAcquisitionD832_15_1",C6="Ancien",rY="lib/read.mll",xd=4411,gS="1229",C5="Article premier",mt=501,aZ="\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement",C4=1788,xc=4051,gC=819,ms='"',C3="Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations",mr="examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr",cR="CalculAllocationLogement",xb=231,hC=4448,C2="3539",rX="<",w_="208500",cg=931,w$="prestations_familiales.date_courante",xa=0x800,hB=617,mq=182,w9=398,rW=1152,C1=331,n_="\xc3\xa9ligibilit\xc3\xa9",w7="233000",w8=0.012,w6="calculAidePersonnaliseeLogementLocatif",bW="Article 33",iV=719,CZ=3005,C0="M\xc3\xa9tropole",CX="40696",CY=209,w5=131,CW="ressources_m\xc3\xa9nage_arrondies_seuil",w4=204,rV="Article D815-1",iT=834,iU="conditions_hors_\xc3\xa2ge",eN="traitement_aide_finale_abattement",bc="Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte",w2=726928360,ay=562,w3="221100",qT=165,w1="([^/]+)",CV="plafond_loyer_d823_16_2",mp=700,CU="Article 39",rU=0xf,w0=4883,rT=809,wZ="798",CT="BailleurSocial",ka="montant_initial_m\xc3\xa9tropole_majoration",n9=372,cs=125,kB="ressources_m\xc3\xa9nage_arrondies_in",iS=907,wY="Division_by_zero",f6=1092,n8=520,rS=4171,qS="Article L832-3",wX=708012133,CR=3976,CS="SituationObligationScolaire",CQ=4076,CO="AutrePersonne\xc3\x80Charge",n7=879,CP="44440",wW=3158,CN="AllocationJeuneEnfant",dL=2014,mo=1119,iR=1059,dK=552,CL="22262",CM=3797,hA="date_courante_in",n6=659,CK="Article D842-17",n5=697,CJ="Article L751-1",f5=503,rR=119,j$="montant_avec_garde_altern\xc3\xa9e_majoration",CI="70",eM=412,dT=104,wU="calculette_sans_garde_altern\xc3\xa9e",wV="Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2022/82 du 28 mars 2022 relative \xc3\xa0 la revalorisation au 1er avril 2022 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",n4=321,wT="version_avril_2008",iQ=468,wS="38361",n3=714,CH=439,fO=2013,wR=2714,CF="ouverture_droits_retraite",CG=102,wQ="mensualit\xc3\xa9_principale_in",hz=800,CE="997500",hy="100000.",wP="18261",fN=101,n2="calcul_nombre_parts.situation_familiale_calcul_apl",CD="participation_personnelle",CC="body",fM="Calcul des contributions sociales s'appliquant aux aides personnelles au logement",wO="Unexpected '%s' kind for the enumeration 'Collectivite.t'",rQ="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",gR=1e7,wN=3415,j_=254,CA=2333,CB="calcul_apl_logement_foyer.zone",qR=407,Cz="6.",wM="1003",dx="Article L841-2",Cy=" : flags Open_text and Open_binary are not compatible",d$="Article D832-15",eu="Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales",wL="43248",hx=4444,gQ=1992,eL="examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr",wK="\\\\",w="Code de la construction et de l'habitation",wJ="Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",Cx="Article 38",wH=2297,wI=188,Cu=463,Cv=160,Cw="0.04",wG="0.0226",qQ=270,wF="192500",Ct=3820,Cr=3346,Cs="230700",wE="217600",n1=926,Cq="0.0463",qP="GardeAlterneePartageAllocations",qO="\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0",n0="0.55",nZ=109,dh="droit_ouvert",H="Champs d'applications",wD=479,iP=952,bk="ContributionsSocialesAidesPersonnelleLogement",iO="Article D832-10",bl="Interface du programme",qN=-97,Cp=944,aO="examples/aides_logement/archives.catala_fr",iN=469,wC="218700",qL="Article D823-20",qM="ServicesSociauxAllocationVerseeAuxServicesSociaux",Co=2486,kA="d\xc3\xa9pense_nette_minimale_d832_27",iM=195,et="1.",fL=1015,gB=1094,wB="45200",de="d\xc3\xa9pense_nette_minimale",iL=954,qK="Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es",wA=2226,j9="Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base",rP="Article D823-17",Cn="Instruction minist\xc3\xa9rielle N\xc2\xb0DSS/SD2B/2019/65 du 25 mars 2019 relative \xc3\xa0 la revalorisation au 1er avril 2019 des prestations familiales servies en m\xc3\xa9tropole",iK=596,nY="AllocationLogement",wy="5186",wz="Unexpected '%s' kind for the enumeration 'SituationObligationScolaire.t'",dw=1065,fK=155,f4=518,Cm="calcul_apl_logement_foyer.situation_familiale_calcul_apl",ww="142303",mn=316,wx="37778",d_=296,nX=565,nW=215,d9="Article D832-11",wv="LaReunion",kz=947,Cl="AgrandirOuRendreHabitableD331_63",aC="Montant du salaire minimum de croissance",mm=557,iJ=3283,ee=621,qJ="0.3",wu="true",bd="Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution",f3=370,ad="Titre II : Dispositions communes aux aides personnelles au logement",Cj=214,Ck="25116",j8="Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s.",qI="1500",wt=" is too large for shifting.",Ci="237200",nV=502,mk="242800",ml="Map.bal",rO="5208",Ch="0.08",hw=4841,ws="@[",ag="Titre III : Aide personnalis\xc3\xa9e au logement",Cg="Apr\xc3\xa8s",af="Code de la s\xc3\xa9curit\xc3\xa9 sociale",Cf="42892",mj=688,mi="ml_z_overflow",wr="1.8",Ce=807,ky="contributions_sociales.date_courante",kx=850,wq=307,mh=309,wp="calcul_apl_logement_foyer.redevance",Cd=-752863768,Cb=904,rM="202500",rN="Article D832-17",Cc=360,B_="Article 10",iI=1144,B$="allocationsFamiliales",Ca="Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2021/65 du 19 mars 2021 relative \xc3\xa0 la revalorisation au 1er avril 2021 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",wo="582700",nU=167,B9="4986",nT=274,aD="CalculAidePersonnalis\xc3\xa9eLogementLocatif",B8=433,nS=531,eK="abattement_d\xc3\xa9pense_nette_minimale",B6=3769,B7="Sys_blocked_io",wn=450,qH="b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement",gA="Chapitre 2 : Champ d'application",wm="0.0588",nR="Chapitre 2 : Champ d'application.",rL=362,wl=3757,iH=3939,iG=3281,nQ=457,B5="49",wk=1882,Z="\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement",bz="Article D842-15",B4=1010,iF="nombre_personnes_\xc3\xa0_charge_in",mg=246,fJ=1016,wi="37900",wj="%u",mf="Article L831-1",me="Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession",fI="calcul_\xc3\xa9quivalence_loyer_minimale",fH=298,wh=4273,B2="Article 40",B3=4034,b7="\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement",wg="19402",md=925,X="2",cQ=127,nP=711,we="Article 30",wf="@{",cf="Montant de la base mensuelle des allocations familiales",wd=" : flags Open_rdonly and Open_wronly are not compatible",wc="0.232",rK="OuvertureDroitsRetraite",wa="Zone2",wb="43505",nO="D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance",cH="-",B1=336,hv=603,B0="type_aide_in",v_="n_nombre_parts_d832_11",v$=" : file already exists",BZ=2364,j7="EffectiveEtPermanente",v9="1127",BX="calculAllocationLogementAccessionPropriete",BY="41481",fd="0.0045",fG="Date d'ouverture des droits \xc3\xa0 la retraite",mc=866,v8=1099,BW="retrieveEvents",v7="20165",hu=4837,iE="situation_familiale_calcul_apl_in",BV="2699",nN=4802,ma=625,mb=644,v5="Infini",v6="prestationsFamiliales",fF="Article 43",v4="\\b",v3=3730,ak="Titre IV : Allocations de Logement",l$="Martinique",nM=404,cr="Article D832-25",v2=487,BU=2322,v1=12520,BT="Collectivit\xc3\xa9",cW=401,BS="42228",ck="Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement",aN="Chapitre 1er : Allocations familiales",ht=2016,v0="AllocationEducationEnfantHandicape",BR="832200",vZ=1176,vY=1408,BQ="AllocationRentr\xc3\xa9eScolaire",iD=1000,V="CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9",aa="",rJ=737456202,iC="Sous-section 2 : Principes de neutralisation et d'abattement",BP="^",l_="Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement",j6=746,hs=0x3f,BO="' kind for the enumeration 'Collectivite.t'",vX=4281,rI="184000",vW="251500",j5=334,dS="Article 16",BN="Article D842-9",vV="Match_failure",vU=3130,hr=716,BM=3189,at=2021,vT=4735,vS=2345,hq=4446,iB="0.085",kv="d\xc3\xa9pense_nette_minimale_d832_10",kw="CalculNombrePartLogementFoyer",vQ=1241,vR=1436,BL="35130",j4="montant_initial_majoration",fk="+",BK=2551,gP=1061,BI=4206,BJ="1057",BH=179,hp=425,BG=4963,vP=3916,BF="%li",cP=998,ho="Smic",BD="colocation_in",BE="234600",vO=2313,vN="logement_meubl\xc3\xa9_d842_2_in",vM=4659,BC="39051",vL="20900",nL="calcul_apl_logement_foyer",rH="208600",vK=267,hn=431,BB="impayeDepenseLogement",iA=962,BA="calcul_nombre_parts.condition_2_du_832_25",vJ=0xe0,l9=1126,By=2650,Bz="20100",l8=882,Bx="D331_32",eJ="contributions_sociales",iz=580,Bw="\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers_in",vI=225,hm=250,vH="calcul_apl_logement_foyer.ressources_m\xc3\xa9nage_arrondies",N="Secteur logement-foyer",qG="Article L831-2",J="Allocations familiales",iy=893,nK=624,qF="0.027",vF="\xc3\xa9ligibilit\xc3\xa9_commune.m\xc3\xa9nage",vG="allocations_familiales",rG=1255,ix="Article 8",bP="examples/allocations_familiales/securite_sociale_L.catala_fr",l7=594,vE=245,bC=2019,nJ="Article R521-1",rF="jsError",eI=0x8000,l6=1055,bj="Chapitre Ier : Champ d'application",Bv="Section 1 : Conditions relatives au b\xc3\xa9n\xc3\xa9ficiaire",iw=964,Bu="43074",l5=946,vD="6.55957",vC="eligibiliteAidePersonnaliseeLogement",l4="Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources",l3=371,fE=320,iv=129,hl=958,vB="\n",ku="abattement_d\xc3\xa9pense_nette_minimale_d832_27",hk=497,am="Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement",qE="3.7",Bt=483,f2=414,l2=310,bO="Tous secteurs",vz="Article 34",b$="calcul_plafond_mensualit\xc3\xa9_d842_6_base",vA=1033,iu=2005,Bs=-48,qD="9",it=4839,vy=4141,Br="1025",cj="camlinternalFormat.ml",eH=549,nI=312,Bq=686,nG=943,nH=148,Bp="132000",qC="0.0185",vx="924600",nF=713,c2=2017,vw=1124,Bo="date_naissance",cV=317,l1="Article R822-2",aj="CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9",ed="Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s",hj=1141,rE="obligation_scolaire",vv="EEXIST",Bn="r\xc3\xa9duction_loyer_solidarit\xc3\xa9_in",f1=293,eG=550,es=121,Bm="prestations_familiales.prestation_courante",nE=1999,Bi=824,Bj="\xc3\xa9ligibilit\xc3\xa9_commune.demandeur",Bk=1406,Bl="\\n",l0=1858,dv=120,lZ="16",Bg="23138",Bh="Article D832-14",rD=512,vu=0x7ff0,vt="eligibiliteAllocationLogement",lY=928,nD=861,qB="montant_forfaitaire_charges",er="traitement_aide_finale_d\xc3\xa9pense_nette_minimale",rC=177,vr=228,vs="\xc3\xa9quivalence_loyer_minimale",vq="0x",Bf="Ascendant",lX="0.005",nC=3865,t="Calcul du montant de l'aide personnalis\xc3\xa9e au logement",lV=499,lW="D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance",nB=645,Be="40888",vo="bas",vp="0.208",vn="date_conventionnement_in",vm="210900",Bd="219900",aw="traitement_aide_finale",vk="r\xc3\xa9gime_outre_mer_l751_1",be=105,vl="Invalid function call ([ ",vj="Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",eF=551,lU="Article R512-2",hi=1135,Bc="31664",bo="direct",vi="44693",f0=454,Bb=1520,hh="0.45",qA="2710",Ba=1914,gz=429,ac="input",vh="39839",A$="\xc3\xa9ligibilit\xc3\xa9_logement",qz="0.2",fD=157,dR=364,lT="D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance",vg=390,nA=498,A_=4586,fc="examples/aides_logement/autres_sources.catala_fr",A9=283,vf="calculAllocationLogement",qy="mkdir",gO=379,gy="Article L822-3",a4="Chapitre III : Modalit\xc3\xa9s de liquidation et de versement",dQ=1013,nz=592,ny=": No such file or directory",ve="\xc3\xa9quivalence_loyer",hg=378,vd=655,fZ="Chapitre VII : Calcul des allocations de logement en secteur logement-foyer",gN="Titre 5 : D\xc3\xa9partements d'outre-mer",lS=948,vc="766",va=2355,vb=4648,cO="CalculetteAidesAuLogementGardeAltern\xc3\xa9e",u$=151,A8="calculetteAidesAuLogement",rB="Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",fb=1137,A7="Descendant",cb="\xc3\x89ligibilit\xc3\xa9AllocationLogement",ba="D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte",A6=3832,nx=626,A5="\xc3\xa9ligibilit\xc3\xa9_apl",u_="taux",qx="Demandeur",bh="CalculAllocationLogementLocatif",A4="BeginCall([ ",u9=332,rA=822,j3="caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1",A3="GardeAltern\xc3\xa9ePartageAllocations",fC=932,A2="coefficient_multiplicateur_d832_25",is=3937,a1="\xc3\x89pilogue",A1=1931,ao="CalculAllocationLogementFoyer",A0="943900",AZ="bmaf",AY="calculEquivalenceLoyerMinimale",lR=2006,hf="0.95",AW="contributionsSocialesAidesPersonnelleLogement",AX="ressourcesAidesPersonnelleLogement",lQ=863,cC=363,u7="Pervasives.do_at_exit",u8="utf8",AV="222300",qw="ComplementFamilial",AU="225000",u6=3736,u5="date_signature_pr\xc3\xaat_in",u4="\xc3\xa9ligibilit\xc3\xa9_allocation_logement",rz="0.0283",aR=854,ry="0.16",lP=643,aQ="Article 18",u3=3105,ir=418,AT="36815",eE=134,dB="Section 2 : Conditions relatives aux ressources",AS=2109,aK="\xc3\x89ligibilit\xc3\xa9 aux allocations de logement";function -byC(d,b,e,c,f){if(c<=b)for(var -a=1;a<=f;a++)e[c+a]=d[b+a];else -for(var -a=f;a>=1;a--)e[c+a]=d[b+a];return 0}function -byD(b,d,c,e){for(var -a=0;a=b.l||b.t==2&&c>=b.c.length)){b.c=d.t==4?pl(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else -if(b.t==2&&f==b.c.length){b.c+=d.t==4?pl(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else{if(b.t!=4)pa(b);var -g=d.c,h=b.c;if(d.t==4)if(f<=e)for(var -a=0;a=0;a--)h[f+a]=g[e+a];else{var -i=Math.min(c,g.length-e);for(var -a=0;a>=1;if(b==0)return d;a+=a;c++;if(c==9)a.slice(0,1)}}function -gW(a){if(a.t==2)a.c+=jz(a.l-a.c.length,"\0");else -a.c=pl(a.c,0,a.c.length);a.t=0}function -GP(a){if(a.length<24){for(var -b=0;bcQ)return false;return true}else -return!/[^\x00-\x7f]/.test(a)}function -sP(e){for(var -j=aa,c=aa,g,f,h,a,b=0,i=e.length;brD){c.substr(0,1);j+=c;c=aa;j+=e.slice(b,d)}else -c+=e.slice(b,d);if(d==i)break;b=d}a=1;if(++b=0xd7ff&&a<0xe000)a=2}else{a=3;if(++b0x10ffff)a=3}}}}}if(a<4){b-=a;c+="\ufffd"}else -if(a>ew)c+=String.fromCharCode(0xd7c0+(a>>10),ys+(a&0x3FF));else -c+=String.fromCharCode(a);if(c.length>gK){c.substr(0,1);j+=c;c=aa}}return j+c}function -eZ(c,a,b){this.t=c;this.c=a;this.l=b}eZ.prototype.toString=function(){switch(this.t){case -9:return this.c;default:gW(this);case -0:if(GP(this.c)){this.t=9;return this.c}this.t=8;case -8:return this.c}};eZ.prototype.toUtf16=function(){var -a=this.toString();if(this.t==9)return a;return sP(a)};eZ.prototype.slice=function(){var -a=this.t==4?this.c.slice():this.c;return new -eZ(this.t,a,this.l)};function -Gq(a){return new -eZ(0,a,a.length)}function -a(a){return Gq(a)}function -sL(c,b){bzm(c,a(b))}var -bL=[0];function -bR(a){sL(bL.Invalid_argument,a)}function -Go(){bR(r0)}function -bY(a,c,b){b&=dy;if(a.t!=4){if(c==a.c.length){a.c+=String.fromCharCode(b);if(c+1==a.l)a.t=0;return 0}pa(a)}a.c[c]=b;return 0}function -d3(b,a,c){if(a>>>0>=b.l)Go();return bY(b,a,c)}function -kY(a,b){switch(a.t&6){default:if(b>=a.c.length)return 0;case -0:return a.c.charCodeAt(b);case -4:return a.c[b]}}function -dG(c,a){if(c.fun)return dG(c.fun,a);if(typeof -c!=="function")return c;var -b=c.length|0;if(b===0)return c.apply(null,a);var -e=a.length|0,d=b-e|0;if(d==0)return c.apply(null,a);else -if(d<0)return dG(c.apply(null,a.slice(0,b)),a.slice(b));else -return function(){var -e=arguments.length==0?1:arguments.length,d=new -Array(a.length+e);for(var -b=0;b>>0>=a.length-1)kX();return a}function -o_(a){if(isFinite(a)){if(Math.abs(a)>=2.2250738585072014e-308)return 0;if(a!=0)return 1;return 2}return isNaN(a)?4:3}function -byL(){return[0]}function -bZ(a){if(a<0)bR("Bytes.create");return new -eZ(a?2:9,aa,a)}function -k6(a){throw a}function -jy(){k6(bL.Division_by_zero)}function -Gt(b,a){if(a==0)jy();return b/a|0}function -d4(a){a.t&6&&gW(a);return a.c}var -bzB=Math.log2&&Math.log2(1.1235582092889474E+307)==1020;function -GO(a){if(bzB)return Math.floor(Math.log2(a));var -b=0;if(a==0)return-Infinity;if(a>=1)while(a>=2){a/=2;b++}else -while(a<1){a*=2;b--}return b}function -sE(c){var -a=new(aL.Float32Array)(1);a[0]=c;var -b=new(aL.Int32Array)(a.buffer);return b[0]|0}var -GA=Math.pow(2,-24);function -aT(b,c,a){this.lo=b&fi;this.mi=c&fi;this.hi=a&ew}aT.prototype.caml_custom="_j";aT.prototype.copy=function(){return new -aT(this.lo,this.mi,this.hi)};aT.prototype.ucompare=function(a){if(this.hi>a.hi)return 1;if(this.hia.mi)return 1;if(this.mia.lo)return 1;if(this.loc)return 1;if(ba.mi)return 1;if(this.mia.lo)return 1;if(this.lo>24),c=-this.hi+(b>>24);return new -aT(a,b,c)};aT.prototype.add=function(a){var -b=this.lo+a.lo,c=this.mi+a.mi+(b>>24),d=this.hi+a.hi+(c>>24);return new -aT(b,c,d)};aT.prototype.sub=function(a){var -b=this.lo-a.lo,c=this.mi-a.mi+(b>>24),d=this.hi-a.hi+(c>>24);return new -aT(b,c,d)};aT.prototype.mul=function(a){var -b=this.lo*a.lo,c=(b*GA|0)+this.mi*a.lo+this.lo*a.mi,d=(c*GA|0)+this.hi*a.lo+this.mi*a.mi+this.lo*a.hi;return new -aT(b,c,d)};aT.prototype.isZero=function(){return(this.lo|this.mi|this.hi)==0};aT.prototype.isNeg=function(){return this.hi<<16<0};aT.prototype.and=function(a){return new -aT(this.lo&a.lo,this.mi&a.mi,this.hi&a.hi)};aT.prototype.or=function(a){return new -aT(this.lo|a.lo,this.mi|a.mi,this.hi|a.hi)};aT.prototype.xor=function(a){return new -aT(this.lo^a.lo,this.mi^a.mi,this.hi^a.hi)};aT.prototype.shift_left=function(a){a=a&63;if(a==0)return this;if(a<24)return new -aT(this.lo<>24-a,this.hi<>24-a);if(a<48)return new -aT(0,this.lo<>48-a);return new -aT(0,0,this.lo<>a|this.mi<<24-a,this.mi>>a|this.hi<<24-a,this.hi>>a);if(a<48)return new -aT(this.mi>>a-24|this.hi<<48-a,this.hi>>a-24,0);return new -aT(this.hi>>a-48,0,0)};aT.prototype.shift_right=function(a){a=a&63;if(a==0)return this;var -c=this.hi<<16>>16;if(a<24)return new -aT(this.lo>>a|this.mi<<24-a,this.mi>>a|c<<24-a,this.hi<<16>>a>>>16);var -b=this.hi<<16>>31;if(a<48)return new -aT(this.mi>>a-24|this.hi<<48-a,this.hi<<16>>a-24>>16,b&ew);return new -aT(this.hi<<16>>a-32,b,b)};aT.prototype.lsl1=function(){this.hi=this.hi<<1|this.mi>>23;this.mi=(this.mi<<1|this.lo>>23)&fi;this.lo=this.lo<<1&fi};aT.prototype.lsr1=function(){this.lo=(this.lo>>>1|this.mi<<23)&fi;this.mi=(this.mi>>>1|this.hi<<23)&fi;this.hi=this.hi>>>1};aT.prototype.udivmod=function(e){var -c=0,b=this.copy(),a=e.copy(),d=new -aT(0,0,0);while(b.ucompare(a)>0){c++;a.lsl1()}while(c>=0){c--;d.lsl1();if(b.ucompare(a)>=0){d.lo++;b=b.sub(a)}a.lsr1()}return{quotient:d,modulus:b}};aT.prototype.div=function(a){var -b=this;if(a.isZero())jy();var -d=b.hi^a.hi;if(b.hi&eI)b=b.neg();if(a.hi&eI)a=a.neg();var -c=b.udivmod(a).quotient;if(d&eI)c=c.neg();return c};aT.prototype.mod=function(b){var -a=this;if(b.isZero())jy();var -d=a.hi;if(a.hi&eI)a=a.neg();if(b.hi&eI)b=b.neg();var -c=a.udivmod(b).modulus;if(d&eI)c=c.neg();return c};aT.prototype.toInt=function(){return this.lo|this.mi<<24};aT.prototype.toFloat=function(){return(this.hi<<16)*Math.pow(2,32)+this.mi*Math.pow(2,24)+this.lo};aT.prototype.toArray=function(){return[this.hi>>8,this.hi&dy,this.mi>>16,this.mi>>8&dy,this.mi&dy,this.lo>>16,this.lo>>8&dy,this.lo&dy]};aT.prototype.lo32=function(){return this.lo|(this.mi&dy)<<24};aT.prototype.hi32=function(){return this.mi>>>8&ew|this.hi<<16};function -gi(b,c,a){return new -aT(b,c,a)}function -pd(a){if(!isFinite(a)){if(isNaN(a))return gi(1,0,vu);return a>0?gi(0,0,vu):gi(0,0,0xfff0)}var -f=a==0&&1/a==-Infinity?eI:a>=0?0:eI;if(f)a=-a;var -b=GO(a)+ea;if(b<=0){b=0;a/=Math.pow(2,-zC)}else{a/=Math.pow(2,b-F$);if(a<16){a*=2;b-=1}if(b==0)a/=2}var -d=Math.pow(2,24),c=a|0;a=(a-c)*d;var -e=a|0;a=(a-e)*d;var -g=a|0;c=c&rU|f|b<<4;return gi(g,e,c)}function -k1(a){return a.toArray()}function -Gn(c,b,g){c.write(32,b.dims.length);c.write(32,b.kind|b.layout<<8);if(b.caml_custom==of)for(var -a=0;a>4;if(c==2047)return(f|g|b&rU)==0?b&eI?-Infinity:Infinity:NaN;var -e=Math.pow(2,-24),a=(f*e+g)*e+(b&rU);if(c>0){a+=16;a*=Math.pow(2,c-F$)}else -a*=Math.pow(2,-zC);if(b&eI)a=-a;return a}function -sy(b){var -d=b.length,c=1;for(var -a=0;a>>24&dy|(a&ew)<<8,a>>>16&ew)}function -sG(a){return a.hi32()}function -sH(a){return a.lo32()}var -byG=of;function -gg(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}gg.prototype.caml_custom=byG;gg.prototype.offset=function(b){var -c=0;if(typeof -b==="number")b=[b];if(!(b -instanceof -Array))bR("bigarray.js: invalid offset");if(this.dims.length!=b.length)bR("Bigarray.get/set: bad number of dimensions");if(this.layout==0)for(var -a=0;a=this.dims[a])kX();c=c*this.dims[a]+b[a]}else -for(var -a=this.dims.length-1;a>=0;a--){if(b[a]<1||b[a]>this.dims[a])kX();c=c*this.dims[a]+(b[a]-1)}return c};gg.prototype.get=function(a){switch(this.kind){case -7:var -d=this.data[a*2+0],b=this.data[a*2+1];return Gz(d,b);case -10:case -11:var -e=this.data[a*2+0],c=this.data[a*2+1];return[j_,e,c];default:return this.data[a]}};gg.prototype.set=function(a,b){switch(this.kind){case -7:this.data[a*2+0]=sH(b);this.data[a*2+1]=sG(b);break;case -10:case -11:this.data[a*2+0]=b[1];this.data[a*2+1]=b[2];break;default:this.data[a]=b;break}return 0};gg.prototype.fill=function(b){switch(this.kind){case -7:var -c=sH(b),e=sG(b);if(c==e)this.data.fill(c);else -for(var -a=0;ad)return 1;if(c!=d){if(!g)return NaN;if(c==c)return 1;if(d==d)return-1}}break;case -7:for(var -a=0;ab.data[a+1])return 1;if(this.data[a]>>>0>>0)return-1;if(this.data[a]>>>0>b.data[a]>>>0)return 1}break;case -2:case -3:case -4:case -5:case -6:case -8:case -9:case -12:for(var -a=0;ab.data[a])return 1}break}return 0};function -jv(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}jv.prototype=new -gg();jv.prototype.offset=function(a){if(typeof -a!=="number")if(a -instanceof -Array&&a.length==1)a=a[0];else -bR("Ml_Bigarray_c_1_1.offset");if(a<0||a>=this.dims[0])kX();return a};jv.prototype.get=function(a){return this.data[a]};jv.prototype.set=function(a,b){this.data[a]=b;return 0};jv.prototype.fill=function(a){this.data.fill(a);return 0};function -Gj(c,d,a,b){var -e=Gl(c);if(sy(a)*e!=b.length)bR("length doesn't match dims");if(d==0&&a.length==1&&e==1)return new -jv(c,d,a,b);return new -gg(c,d,a,b)}function -dr(b){if(!bL.Failure)bL.Failure=[bm,a(q6),-3];sL(bL.Failure,b)}function -Gk(b,v,r){var -i=b.read32s();if(i<0||i>16)dr("input_value: wrong number of bigarray dimensions");var -p=b.read32s(),j=p&dy,o=p>>8&1,h=[];if(r==of)for(var -a=0;a>>32-15;a=gl(a,0x1b873593);b^=a;b=b<<13|b>>>32-13;return(b+(b<<2)|0)+(0xe6546b64|0)|0}function -byV(a,b){a=cv(a,sH(b));a=cv(a,sG(b));return a}function -sC(a,b){return byV(a,pd(b))}function -Gm(c){var -b=sy(c.dims),d=0;switch(c.kind){case -2:case -3:case -12:if(b>eB)b=eB;var -e=0,a=0;for(a=0;a+4<=c.data.length;a+=4){e=c.data[a+0]|c.data[a+1]<<8|c.data[a+2]<<16|c.data[a+3]<<24;d=cv(d,e)}e=0;switch(b&3){case -3:e=c.data[a+2]<<16;case -2:e|=c.data[a+1]<<8;case -1:e|=c.data[a+0];d=cv(d,e)}break;case -4:case -5:if(b>ei)b=ei;var -e=0,a=0;for(a=0;a+2<=c.data.length;a+=2){e=c.data[a+0]|c.data[a+1]<<16;d=cv(d,e)}if((b&1)!=0)d=cv(d,c.data[a]);break;case -6:if(b>64)b=64;for(var -a=0;a64)b=64;for(var -a=0;a32)b=32;b*=2;for(var -a=0;a64)b=64;for(var -a=0;a32)b=32;for(var -a=0;a0?b(c,f,e):b(f,c,e);if(e&&a!=a)return d;if(+a!=+a)return+a;if((a|0)!=0)return a|0}return d}function -k2(a){return a -instanceof -eZ}function -pg(a){return k2(a)}function -Gs(a){if(typeof -a==="number")return iD;else -if(k2(a))return kb;else -if(pg(a))return 1252;else -if(a -instanceof -Array&&a[0]===a[0]>>>0&&a[0]<=m0){var -b=a[0]|0;return b==j_?0:b}else -if(a -instanceof -String)return v1;else -if(typeof -a=="string")return v1;else -if(a -instanceof -Number)return iD;else -if(a&&a.caml_custom)return rG;else -if(a&&a.compare)return 1256;else -if(typeof -a=="function")return 1247;else -if(typeof -a=="symbol")return 1251;return 1001}function -gj(a,b){if(ab.c?1:0}function -sN(a,b){return Gp(a,b)}function -o$(a,b,d){var -e=[];for(;;){if(!(d&&a===b)){var -f=Gs(a);if(f==hm){a=a[1];continue}var -g=Gs(b);if(g==hm){b=b[1];continue}if(f!==g){if(f==iD){if(g==rG)return Gr(a,b,-1,d);return-1}if(g==iD){if(f==rG)return Gr(b,a,1,d);return 1}return fb)return 1;if(a!=b){if(!d)return NaN;if(a==a)return 1;if(b==b)return-1}break;case -1001:if(ab)return 1;if(a!=b){if(!d)return NaN;if(a==a)return 1;if(b==b)return-1}break;case -1251:if(a!==b){if(!d)return NaN;return 1}break;case -1252:var -a=d4(a),b=d4(b);if(a!==b){if(ab)return 1}break;case -12520:var -a=a.toString(),b=b.toString();if(a!==b){if(ab)return 1}break;case -246:case -254:default:if(a.length!=b.length)return a.length1)e.push(a,b,1);break}}if(e.length==0)return 0;var -h=e.pop();b=e.pop();a=e.pop();if(h+10)if(c==0&&(b>=a.l||a.t==2&&b>=a.c.length))if(d==0){a.c=aa;a.t=2}else{a.c=jz(b,String.fromCharCode(d));a.t=b==a.l?0:2}else{if(a.t!=4)pa(a);for(b+=c;c0&&b===b)return b;a=a.replace(/_/g,aa);b=+a;if(a.length>0&&b===b||/^[+-]?nan$/i.test(a))return b;var -c=/^ *([+-]?)0x([0-9a-f]+)\.?([0-9a-f]*)(p([+-]?[0-9]+))?/i.exec(a);if(c){var -d=c[3].replace(/0+$/,aa),f=parseInt(c[1]+c[2]+d,16),e=(c[5]|0)-4*d.length;b=f*Math.pow(2,e);return b}if(/^\+?inf(inity)?$/i.test(a))return Infinity;if(/^-inf(inity)?$/i.test(a))return-Infinity;dr("float_of_string")}function -sK(d){d=d4(d);var -e=d.length;if(e>31)bR("format_int: format too long");var -a={justify:fk,signstyle:cH,filler:fm,alternate:false,base:0,signedconv:false,width:0,uppercase:false,sign:1,prec:-1,conv:"f"};for(var -c=0;c=0&&b<=9){a.width=a.width*10+b;c++}c--;break;case".":a.prec=0;c++;while(b=d.charCodeAt(c)-48,b>=0&&b<=9){a.prec=a.prec*10+b;c++}c--;case"d":case"i":a.signedconv=true;case"u":a.base=10;break;case"x":a.base=16;break;case"X":a.base=16;a.uppercase=true;break;case"o":a.base=8;break;case"e":case"f":case"g":a.signedconv=true;a.conv=b;break;case"E":case"F":case"G":a.signedconv=true;a.uppercase=true;a.conv=b.toLowerCase();break}}return a}function -sA(b,f){if(b.uppercase)f=f.toUpperCase();var -e=f.length;if(b.signedconv&&(b.sign<0||b.signstyle!=cH))e++;if(b.alternate){if(b.base==8)e+=1;if(b.base==16)e+=2}var -c=aa;if(b.justify==fk&&b.filler==fm)for(var -d=e;d20){c-=20;a/=Math.pow(10,c);a+=new -Array(c+1).join(p);if(b>0)a=a+ev+new -Array(b+1).join(p);return a}else -return a.toFixed(b)}}var -a,e=sK(i),d=e.prec<0?6:e.prec;if(c<0||c==0&&1/c==-Infinity){e.sign=-1;c=-c}if(isNaN(c)){a=q8;e.filler=fm}else -if(!isFinite(c)){a=F4;e.filler=fm}else -switch(e.conv){case"e":var -a=c.toExponential(d),b=a.length;if(a.charAt(b-3)==o1)a=a.slice(0,b-1)+p+a.slice(b-1);break;case"f":a=j(c,d);break;case"g":d=d?d:1;a=c.toExponential(d-1);var -h=a.indexOf(o1),g=+a.slice(h+1);if(g<-4||c>=1e21||c.toFixed(0).length>d){var -b=h-1;while(a.charAt(b)==p)b--;if(a.charAt(b)==ev)b--;a=a.slice(0,b+1)+a.slice(h);b=a.length;if(a.charAt(b-3)==o1)a=a.slice(0,b-1)+p+a.slice(b-1);break}else{var -f=d;if(g<0){f-=g+1;a=c.toFixed(f)}else -while(a=c.toFixed(f),a.length>d+1)f--;if(f){var -b=a.length-1;while(a.charAt(b)==p)b--;if(a.charAt(b)==ev)b--;a=a.slice(0,b+1)}}break}return sA(e,a)}function -pb(e,c){if(d4(e)==sm)return a(aa+c);var -b=sK(e);if(c<0)if(b.signedconv){b.sign=-1;c=-c}else -c>>>=0;var -d=c.toString(b.base);if(b.prec>=0){b.filler=fm;var -f=b.prec-d.length;if(f>0)d=jz(f,p)+d}return sA(b,d)}var -GH=0;function -cZ(){return GH++}function -byP(a){if(a==0||!isFinite(a))return[0,a,0];var -c=a<0;if(c)a=-a;var -b=Math.max(-ea,GO(a)+1);a*=Math.pow(2,-b);while(a=1){a*=zS;b++}if(c)a=-a;return[0,a,b]}function -ek(a){return a.toUtf16()}function -k7(){return typeof -aL.process!=="undefined"&&typeof -aL.process.versions!=="undefined"&&typeof -aL.process.versions.node!=="undefined"}function -bzC(){function -a(a){if(a.charAt(0)===eA)return[aa,a.substring(1)];return}function -b(c){var -g=/^([a-zA-Z]:|[\\/]{2}[^\\/]+[\\/]+[^\\/]+)?([\\/])?([\s\S]*?)$/,a=g.exec(c),b=a[1]||aa,e=Boolean(b&&b.charAt(1)!==":");if(Boolean(a[2]||e)){var -d=a[1]||aa,f=a[2]||aa;return[d,c.substring(d.length+f.length)]}return}return k7()&&aL.process&&aL.process.platform?aL.process.platform==="win32"?b:a:a}var -sT=bzC();function -GM(a){return a.slice(-1)!==eA?a+eA:a}if(k7()&&aL.process&&aL.process.cwd)var -kZ=aL.process.cwd().replace(/\\/g,eA);else -var -kZ="/static";kZ=GM(kZ);function -by$(a){a=ek(a);if(!sT(a))a=kZ+a;var -e=sT(a),d=e[1].split(eA),b=[];for(var -c=0;c1)b.pop();break;case".":break;default:b.push(d[c]);break}b.unshift(e[0]);b.orig=a;return b}function -bzt(e){for(var -f=aa,b=f,a,h,c=0,g=e.length;crD){b.substr(0,1);f+=b;b=aa;f+=e.slice(c,d)}else -b+=e.slice(c,d);if(d==g)break;c=d}if(a>6);b+=String.fromCharCode(dN|a&hs)}else -if(a<0xd800||a>=Ep)b+=String.fromCharCode(vJ|a>>12,dN|a>>6&hs,dN|a&hs);else -if(a>=0xdbff||c+1==g||(h=e.charCodeAt(c+1))Ep)b+="\xef\xbf\xbd";else{c++;a=(a<<10)+h-0x35fdc00;b+=String.fromCharCode(De|a>>18,dN|a>>12&hs,dN|a>>6&hs,dN|a&hs)}if(b.length>gK){b.substr(0,1);f+=b;b=aa}}return f+b}function -byK(a){var -b=9;if(!GP(a))b=8,a=bzt(a);return new -eZ(b,a,a.length)}function -aS(a){return byK(a)}var -bzT=["E2BIG","EACCES","EAGAIN","EBADF","EBUSY","ECHILD","EDEADLK","EDOM",vv,"EFAULT","EFBIG","EINTR","EINVAL","EIO","EISDIR","EMFILE","EMLINK","ENAMETOOLONG","ENFILE","ENODEV",sp,"ENOEXEC","ENOLCK","ENOMEM","ENOSPC","ENOSYS",sa,Fz,"ENOTTY","ENXIO","EPERM","EPIPE","ERANGE","EROFS","ESPIPE","ESRCH","EXDEV","EWOULDBLOCK","EINPROGRESS","EALREADY","ENOTSOCK","EDESTADDRREQ","EMSGSIZE","EPROTOTYPE","ENOPROTOOPT","EPROTONOSUPPORT","ESOCKTNOSUPPORT","EOPNOTSUPP","EPFNOSUPPORT","EAFNOSUPPORT","EADDRINUSE","EADDRNOTAVAIL","ENETDOWN","ENETUNREACH","ENETRESET","ECONNABORTED","ECONNRESET","ENOBUFS","EISCONN","ENOTCONN","ESHUTDOWN","ETOOMANYREFS","ETIMEDOUT","ECONNREFUSED","EHOSTDOWN","EHOSTUNREACH","ELOOP","EOVERFLOW"];function -g0(d,f,e,a){var -b=bzT.indexOf(d);if(b<0){if(a==null)a=-9999;b=[0,a]}var -c=[b,aS(f||aa),aS(e||aa)];return c}var -GF={};function -e3(a){return GF[a]}function -gZ(b,a){throw[0,b].concat(a)}function -byJ(a){return new -eZ(4,a,a.length)}function -bx(a){sL(bL.Sys_error,a)}function -bzk(a){bx(a+ny)}function -byI(b,a){if(a>>>0>=b.l)Go();return kY(b,a)}function -ds(a){return a.l}function -Gg(){}function -ct(a){this.data=a}ct.prototype=new -Gg();ct.prototype.truncate=function(a){var -b=this.data;this.data=bZ(a|0);gh(b,0,this.data,0,a)};ct.prototype.length=function(){return ds(this.data)};ct.prototype.write=function(b,d,g,a){var -c=this.length();if(b+a>=c){var -e=bZ(b+a),f=this.data;this.data=e;gh(f,0,this.data,0,c)}ej(d,g,this.data,b,a);return 0};ct.prototype.read=function(c,a,d,b){var -e=this.length();gh(this.data,c,a,d,b);return 0};ct.prototype.read_one=function(a){return byI(this.data,a)};ct.prototype.close=function(){};ct.prototype.constructor=ct;function -cY(b,a){this.content={};this.root=b;this.lookupFun=a}cY.prototype.nm=function(a){return this.root+a};cY.prototype.create_dir_if_needed=function(d){var -c=d.split(eA),b=aa;for(var -a=0;a>1|1;if(h=0)}function -sD(d,b){var -e=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b.charCodeAt(a)|b.charCodeAt(a+1)<<8|b.charCodeAt(a+2)<<16|b.charCodeAt(a+3)<<24;d=cv(d,c)}c=0;switch(e&3){case -3:c=b.charCodeAt(a+2)<<16;case -2:c|=b.charCodeAt(a+1)<<8;case -1:c|=b.charCodeAt(a);d=cv(d,c)}d^=e;return d}function -byW(a,b){return sD(a,d4(b))}function -byT(d,b){var -e=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b[a]|b[a+1]<<8|b[a+2]<<16|b[a+3]<<24;d=cv(d,c)}c=0;switch(e&3){case -3:c=b[a+2]<<16;case -2:c|=b[a+1]<<8;case -1:c|=b[a];d=cv(d,c)}d^=e;return d}function -GC(a){switch(a.t&6){default:gW(a);case -0:return a.c;case -4:return a.c}}function -byS(b,c){var -a=GC(c);return typeof -a==="string"?sD(b,a):byT(b,a)}function -byU(a){a^=a>>>16;a=gl(a,0x85ebca6b|0);a^=a>>>13;a=gl(a,0xc2b2ae35|0);a^=a>>>16;return a}function -byR(j,l,n,m){var -f,g,h,d,c,b,a,e,i;d=l;if(d<0||d>eB)d=eB;c=j;b=n;f=[m];g=0;h=1;while(g0){a=f[g++];if(a&&a.caml_custom){if(jw[a.caml_custom]&&jw[a.caml_custom].hash){var -k=jw[a.caml_custom].hash(a);b=cv(b,k);c--}}else -if(a -instanceof -Array&&a[0]===(a[0]|0))switch(a[0]){case -248:b=cv(b,a[2]);c--;break;case -250:f[--g]=a[1];break;default:var -o=a.length-1<<10|a[0];b=cv(b,o);for(e=1,i=a.length;e=d)break;f[h++]=a[e]}break}else -if(k2(a)){b=byS(b,a);c--}else -if(pg(a)){b=byW(b,a);c--}else -if(typeof -a==="string"){b=sD(b,a);c--}else -if(a===(a|0)){b=cv(b,a+a+1);c--}else -if(a===+a){b=sC(b,a);c--}}b=byU(b);return b&0x3FFFFFFF}function -byX(a,c,k){if(!isFinite(a)){if(isNaN(a))return aS(q8);return aS(a>0?FX:"-infinity")}var -i=a==0&&1/a==-Infinity?1:a>=0?0:1;if(i)a=-a;var -d=0;if(a==0);else -if(a<1)while(a<1&&d>-1022){a*=2;d--}else -while(a>=2){a/=2;d++}var -j=d<0?aa:fk,e=aa;if(i)e=cH;else -switch(k){case -43:e=fk;break;case -32:e=fm;break;default:break}if(c>=0&&c<13){var -g=Math.pow(2,c*4);a=Math.round(a*g)/g}var -b=a.toString(16);if(c>=0){var -h=b.indexOf(ev);if(h<0)b+=ev+jz(c,p);else{var -f=h+1+c;if(b.length>24&fi,a>>31&ew)}function -by8(a){return a.toInt()}function -by2(a){return+a.isNeg()}function -by5(a){return a.neg()}function -by0(g,c){var -a=sK(g);if(a.signedconv&&by2(c)){a.sign=-1;c=by5(c)}var -b=aa,h=by6(a.base),f="0123456789abcdef";do{var -e=c.udivmod(h);c=e.quotient;b=f.charAt(by8(e.modulus))+b}while(!by3(c));if(a.prec>=0){a.filler=fm;var -d=a.prec-b.length;if(d>0)b=jz(d,p)+b}return sA(a,b)}function -by7(a,b){return a.or(b)}function -pe(a){return a.toFloat()}function -bzj(c){var -a=0,e=aI(c),b=10,d=1;if(e>0)switch(d6(c,a)){case -45:a++;d=-1;break;case -43:a++;d=1;break}if(a+1=48&&a<=57)return a-48;if(a>=65&&a<=90)return a-55;if(a>=97&&a<=gU)return a-87;return-1}function -pf(f){var -h=bzj(f),c=h[0],i=h[1],d=h[2],g=aI(f),j=-1>>>0,e=c=d)dr(mX);var -a=b;for(c++;c=d)break;a=d*a+b;if(a>j)dr(mX)}if(c!=g)dr(mX);a=i*a;if(d==10&&(a|0)!=a)dr(mX);return a|0}function -gk(a){return a.slice(1)}function -gX(c){var -d=c.length,b=new -Array(d+1);b[0]=0;for(var -a=0;a0){var -c=new -Array(b);for(var -a=0;aea){a-=ea;b*=Math.pow(2,ea);if(a>ea){a-=ea;b*=Math.pow(2,ea)}}if(a<-ea){a+=ea;b*=Math.pow(2,-ea)}b*=Math.pow(2,a);return b}function -GB(a,b){return+(o$(a,b,false)<0)}function -k3(b){b=d4(b);var -d=b.length/2,c=new -Array(d);for(var -a=0;a>16;return c}function -sI(b,t,a){var -n=2,o=3,r=5,d=6,h=7,g=8,j=9,m=1,l=2,q=3,s=4,p=5;if(!b.lex_default){b.lex_base=k3(b[m]);b.lex_backtrk=k3(b[l]);b.lex_check=k3(b[p]);b.lex_trans=k3(b[s]);b.lex_default=k3(b[q])}var -e,c=t,k=Gh(a[n]);if(c>=0){a[h]=a[r]=a[d];a[g]=-1}else -c=-c-1;for(;;){var -f=b.lex_base[c];if(f<0)return-f-1;var -i=b.lex_backtrk[c];if(i>=0){a[h]=a[d];a[g]=i}if(a[d]>=a[o])if(a[j]==0)return-c-1;else -e=eB;else{e=k[a[d]];a[d]++}if(b.lex_check[f+e]==c)c=b.lex_trans[f+e];else -c=b.lex_default[c];if(c<0){a[d]=a[h];if(a[g]==-1)dr("lexing: empty token");else -return a[g]}else -if(e==eB)a[j]=0}}function -e1(a,d){if(a<0)kX();var -a=a+1|0,b=new -Array(a);b[0]=0;for(var -c=1;c>>32-b,c)}function -g(c,b,d,e,h,f,g){return a(b&d|~b&e,c,b,h,f,g)}function -h(d,b,e,c,h,f,g){return a(b&c|e&~c,d,b,h,f,g)}function -i(c,b,d,e,h,f,g){return a(b^d^e,c,b,h,f,g)}function -j(c,b,d,e,h,f,g){return a(d^(b|~e),c,b,h,f,g)}function -k(f,n){var -e=n;f[e>>2]|=dN<<8*(e&3);for(e=(e&~0x3)+8;(e&0x3F)<60;e+=4)f[(e>>2)-1]=0;f[(e>>2)-1]=n<<3;f[e>>2]=n>>29&0x1FFFFFFF;var -k=[0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476];for(e=0;e>8*m&0xFF;return o}return function(i,g,f){var -e=[],h=GC(i);if(typeof -h==="string"){var -d=h;for(var -a=0;a>2]=d.charCodeAt(b)|d.charCodeAt(b+1)<<8|d.charCodeAt(b+2)<<16|d.charCodeAt(b+3)<<24}for(;a>2]|=d.charCodeAt(a+g)<<8*(a&3)}else{var -c=h;for(var -a=0;a>2]=c[b]|c[b+1]<<8|c[b+2]<<16|c[b+3]<<24}for(;a>2]|=c[a+g]<<8*(a&3)}return bzq(k(e,f))}}();function -bzb(c,b,a){return bza(fr(c),b,a)}function -bzc(){return 0}var -e2=new -Array();function -gY(c){var -a=e2[c];if(!a.opened)bx("Cannot flush a closed channel");if(!a.buffer||a.buffer==aa)return 0;if(a.fd&&bL.fds[a.fd]&&bL.fds[a.fd].output){var -b=bL.fds[a.fd].output;switch(b.length){case -2:b(c,a.buffer);break;default:b(a.buffer)}}a.buffer=aa;return 0}function -GK(e,f){var -b=e2[e],d=a(f),c=aI(d);b.file.write(b.offset,d,0,c);b.offset+=c;return 0}function -bzx(a){var -a=sP(a),b=aL;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stderr.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var -c=b.console;c&&c.error&&c.error(a)}}function -bzy(a){var -a=sP(a),b=aL;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stdout.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var -c=b.console;c&&c.log&&c.log(a)}}function -pm(c,e,d,a){if(bL.fds===undefined)bL.fds=new -Array();a=a?a:{};var -b={};b.file=d;b.offset=a.append?d.length():0;b.flags=a;b.output=e;bL.fds[c]=b;if(!bL.fd_last_idx||c>bL.fd_last_idx)bL.fd_last_idx=c;return c}function -bzU(c,b,g){var -a={};while(b){switch(b[1]){case -0:a.rdonly=1;break;case -1:a.wronly=1;break;case -2:a.append=1;break;case -3:a.create=1;break;case -4:a.truncate=1;break;case -5:a.excl=1;break;case -6:a.binary=1;break;case -7:a.text=1;break;case -8:a.nonblock=1;break}b=b[2]}if(a.rdonly&&a.wronly)bx(d4(c)+wd);if(a.text&&a.binary)bx(d4(c)+Cy);var -d=GV(c),e=d.device.open(d.rest,a),f=bL.fd_last_idx?bL.fd_last_idx:0;return pm(f+1,GK,e,a)}pm(0,GK,new -ct(bZ(0)));pm(1,bzy,new -ct(bZ(0)));pm(2,bzx,new -ct(bZ(0)));function -bzd(a){var -c=bL.fds[a];if(c.flags.wronly)bx(xR+a+" is writeonly");var -d=null;if(a==0&&k7()){var -e=require("fs");d=function(){return aS(e.readFileSync(0,u8))}}var -b={file:c.file,offset:c.offset,fd:a,opened:true,out:false,refill:d};e2[b.fd]=b;return b.fd}function -GD(c){var -b=bL.fds[c];if(b.flags.rdonly)bx(xR+c+" is readonly");var -a={file:b.file,offset:b.offset,fd:c,opened:true,out:true,buffer:aa};e2[a.fd]=a;return a.fd}function -bze(){var -b=0;for(var -a=0;a>>0)return a[0];else -if(k2(a))return kb;else -if(pg(a))return kb;else -if(a -instanceof -Function||typeof -a=="function")return 247;else -if(a&&a.caml_custom)return m0;else -return iD}function -d5(b,c,a){if(a&&aL.toplevelReloc)b=aL.toplevelReloc(a);bL[b+1]=c;if(a)bL[a]=c}function -sM(a,b){GF[d4(a)]=b;return 0}function -bzn(a){a[2]=GH++;return a}function -byH(a,b){if(a===b)return 1;a.t&6&&gW(a);b.t&6&&gW(b);return a.c==b.c?1:0}function -pk(a,b){return byH(a,b)}function -bzp(){bR(r0)}function -bA(b,a){if(a>>>0>=aI(b))bzp();return d6(b,a)}function -M(a,b){return 1-pk(a,b)}function -bzr(){return 0x7FFFFFFF/4|0}function -bzl(){k6(bL.Not_found)}function -GL(c){var -a=aL,b=ek(c);if(a.process&&a.process.env&&a.process.env[b]!=undefined)return aS(a.process.env[b]);if(aL.jsoo_static_env&&aL.jsoo_static_env[b])return aS(aL.jsoo_static_env[b]);bzl()}function -bzs(){if(aL.crypto)if(typeof -aL.crypto.getRandomValues==="function"){var -a=new(aL.Uint32Array)(1);aL.crypto.getRandomValues(a);return[0,a[0]]}else -if(aL.crypto.randomBytes==="function"){var -b=aL.crypto.randomBytes(4),a=new(aL.Uint32Array)(b);return[0,a[0]]}var -c=new -Date().getTime(),d=c^Dq*Math.random();return[0,d]}function -sO(a){var -b=1;while(a&&a.joo_tramp){a=a.joo_tramp.apply(null,a.joo_args);b++}return a}function -cw(b,a){return{joo_tramp:b,joo_args:a}}function -GJ(a){return a}function -o(a){if(a -instanceof -Array)return a;if(aL.RangeError&&a -instanceof -aL.RangeError&&a.message&&a.message.match(/maximum call stack/i))return GJ(bL.Stack_overflow);if(aL.InternalError&&a -instanceof -aL.InternalError&&a.message&&a.message.match(/too much recursion/i))return GJ(bL.Stack_overflow);if(a -instanceof -aL.Error&&e3(rF))return[0,e3(rF),a];return[0,bL.Failure,aS(String(a))]}var -as=function(y){"use strict";var -f=gR,$=7,s=9007199254740992,H=q(s),M="0123456789abcdefghijklmnopqrstuvwxyz",g=bzw.BigInt,F=typeof -g==="function";function -d(a,b,c,f){if(typeof -a==="undefined")return d[0];if(typeof -b!=="undefined")return+b===10&&!c?e(a):ae(a,b,c,f);return e(a)}function -a(b,a){this.value=b;this.sign=a;this.isSmall=false;this.caml_custom=mR}a.prototype=Object.create(d.prototype);function -b(a){this.value=a;this.sign=a<0;this.isSmall=true;this.caml_custom=mR}b.prototype=Object.create(d.prototype);function -c(a){this.value=a;this.caml_custom=mR}c.prototype=Object.create(d.prototype);function -l(a){return-s0)return Math.floor(a);return Math.ceil(a)}function -N(g,h){var -i=g.length,j=h.length,e=new -Array(i),b=0,d=f,c,a;for(a=0;a=d?1:0;e[a]=c-b*d}while(a0)e.push(b);return e}function -t(a,b){if(a.length>=b.length)return N(a,b);return N(b,a)}function -A(g,a){var -h=g.length,d=new -Array(h),c=f,e,b;for(b=0;b0){d[b++]=a%c;a=Math.floor(a/c)}return d}a.prototype.add=function(f){var -b=e(f);if(this.sign!==b.sign)return this.subtract(b.negate());var -c=this.value,d=b.value;if(b.isSmall)return new -a(A(c,Math.abs(d)),this.sign);return new -a(t(c,d),this.sign)};a.prototype.plus=a.prototype.add;b.prototype.add=function(g){var -f=e(g),c=this.value;if(c<0!==f.sign)return this.subtract(f.negate());var -d=f.value;if(f.isSmall){if(l(c+d))return new -b(c+d);d=q(Math.abs(d))}return new -a(A(d,Math.abs(c)),c<0)};b.prototype.plus=b.prototype.add;c.prototype.add=function(a){return new -c(this.value+e(a).value)};c.prototype.plus=c.prototype.add;function -w(d,h){var -g=d.length,i=h.length,c=new -Array(g),e=0,j=f,a,b;for(a=0;a=0)c=w(e,f);else{c=w(f,e);d=!d}c=n(c);if(typeof -c==="number"){if(d)c=-c;return new -b(c)}return new -a(c,d)}function -E(h,l,k){var -j=h.length,c=new -Array(j),i=-l,g=f,e,d;for(e=0;e=0)};b.prototype.minus=b.prototype.subtract;c.prototype.subtract=function(a){return new -c(this.value-e(a).value)};c.prototype.minus=c.prototype.subtract;a.prototype.negate=function(){return new -a(this.value,!this.sign)};b.prototype.negate=function(){var -c=this.sign,a=new -b(-this.value);a.sign=!c;return a};c.prototype.negate=function(){return new -c(-this.value)};a.prototype.abs=function(){return new -a(this.value,false)};b.prototype.abs=function(){return new -b(Math.abs(this.value))};c.prototype.abs=function(){return new -c(this.value>=0?this.value:-this.value)};function -L(g,j){var -i=g.length,l=j.length,o=i+l,c=B(o),n=f,e,d,a,h,k;for(a=0;a0){e[b++]=a%c;a=Math.floor(a/c)}return e}function -W(c,b){var -a=[];while(b-->0)a.push(0);return a.concat(c)}function -C(b,c){var -a=Math.max(b.length,c.length);if(a<=30)return L(b,c);a=Math.ceil(a/2);var -f=b.slice(a),d=b.slice(0,a),i=c.slice(a),h=c.slice(0,a),e=C(d,h),g=C(f,i),k=C(t(d,f),t(h,i)),j=t(t(e,W(w(w(k,e),g),a)),W(g,2*a));m(j);return j}function -aj(a,b){return-(w8*a)-w8*b+0.000015*a*b>0}a.prototype.multiply=function(j){var -h=e(j),c=this.value,b=h.value,i=this.sign!==h.sign,g;if(h.isSmall){if(b===0)return d[0];if(b===1)return this;if(b===-1)return this.negate();g=Math.abs(b);if(g=0;d--){j=g-1;if(b[d+h]!==l)j=Math.floor((b[d+h]*g+b[d+h-1])/l);c=0;e=0;m=i.length;for(a=0;ah)d=(d+1)*i;c=Math.ceil(d/p);do{j=u(b,c);if(o(j,a)<=0)break;c--}while(c);e.push(c);a=w(a,j)}e.reverse();return[n(e),n(a)]}function -O(i,e){var -g=i.length,h=B(g),j=f,a,d,b,c;b=0;for(a=g-1;a>=0;--a){c=b*j+i[a];d=r(c/e);b=c-d*e;h[a]=d|0}return[h,b|0]}function -i(h,w){var -m,j=e(w);if(F)return[new -c(h.value/j.value),new -c(h.value%j.value)];var -l=h.value,i=j.value,g;if(i===0)throw new -Error("Cannot divide by zero");if(h.isSmall){if(j.isSmall)return[new -b(r(l/i)),new -b(l%i)];return[d[0],h]}if(j.isSmall){if(i===1)return[h,d[0]];if(i==-1)return[h.negate(),d[0]];var -s=Math.abs(i);if(sc.length?1:-1;for(var -a=b.length-1;a>=0;a--)if(b[a]!==c[a])return b[a]>c[a]?1:-1;return 0}a.prototype.compareAbs=function(d){var -a=e(d),b=this.value,c=a.value;if(a.isSmall)return 1;return o(b,c)};b.prototype.compareAbs=function(d){var -c=e(d),b=Math.abs(this.value),a=c.value;if(c.isSmall){a=Math.abs(a);return b===a?0:b>a?1:-1}return-1};c.prototype.compareAbs=function(c){var -a=this.value,b=e(c).value;a=a>=0?a:-a;b=b>=0?b:-b;return a===b?0:a>b?1:-1};a.prototype.compare=function(b){if(b===Infinity)return-1;if(b===-Infinity)return 1;var -a=e(b),c=this.value,d=a.value;if(this.sign!==a.sign)return a.sign?1:-1;if(a.isSmall)return this.sign?-1:1;return o(c,d)*(this.sign?-1:1)};a.prototype.compareTo=a.prototype.compare;b.prototype.compare=function(c){if(c===Infinity)return-1;if(c===-Infinity)return 1;var -b=e(c),a=this.value,d=b.value;if(b.isSmall)return a==d?0:a>d?1:-1;if(a<0!==b.sign)return a<0?-1:1;return a<0?1:-1};b.prototype.compareTo=b.prototype.compare;c.prototype.compare=function(a){if(a===Infinity)return-1;if(a===-Infinity)return 1;var -b=this.value,c=e(a).value;return b===c?0:b>c?1:-1};c.prototype.compareTo=c.prototype.compare;a.prototype.equals=function(a){return this.compare(a)===0};c.prototype.eq=c.prototype.equals=b.prototype.eq=b.prototype.equals=a.prototype.eq=a.prototype.equals;a.prototype.notEquals=function(a){return this.compare(a)!==0};c.prototype.neq=c.prototype.notEquals=b.prototype.neq=b.prototype.notEquals=a.prototype.neq=a.prototype.notEquals;a.prototype.greater=function(a){return this.compare(a)>0};c.prototype.gt=c.prototype.greater=b.prototype.gt=b.prototype.greater=a.prototype.gt=a.prototype.greater;a.prototype.lesser=function(a){return this.compare(a)<0};c.prototype.lt=c.prototype.lesser=b.prototype.lt=b.prototype.lesser=a.prototype.lt=a.prototype.lesser;a.prototype.greaterOrEquals=function(a){return this.compare(a)>=0};c.prototype.geq=c.prototype.greaterOrEquals=b.prototype.geq=b.prototype.greaterOrEquals=a.prototype.geq=a.prototype.greaterOrEquals;a.prototype.lesserOrEquals=function(a){return this.compare(a)<=0};c.prototype.leq=c.prototype.lesserOrEquals=b.prototype.leq=b.prototype.lesserOrEquals=a.prototype.leq=a.prototype.lesserOrEquals;a.prototype.isEven=function(){return(this.value[0]&1)===0};b.prototype.isEven=function(){return(this.value&1)===0};c.prototype.isEven=function(){return(this.value&g(1))===g(0)};a.prototype.isOdd=function(){return(this.value[0]&1)===1};b.prototype.isOdd=function(){return(this.value&1)===1};c.prototype.isOdd=function(){return(this.value&g(1))===g(1)};a.prototype.isPositive=function(){return!this.sign};b.prototype.isPositive=function(){return this.value>0};c.prototype.isPositive=b.prototype.isPositive;a.prototype.isNegative=function(){return this.sign};b.prototype.isNegative=function(){return this.value<0};c.prototype.isNegative=b.prototype.isNegative;a.prototype.isUnit=function(){return false};b.prototype.isUnit=function(){return Math.abs(this.value)===1};c.prototype.isUnit=function(){return this.abs().value===g(1)};a.prototype.isZero=function(){return false};b.prototype.isZero=function(){return this.value===0};c.prototype.isZero=function(){return this.value===g(0)};a.prototype.isDivisibleBy=function(b){var -a=e(b);if(a.isZero())return false;if(a.isUnit())return true;if(a.compareAbs(2)===0)return this.isEven();return this.mod(a).isZero()};c.prototype.isDivisibleBy=b.prototype.isDivisibleBy=a.prototype.isDivisibleBy;function -R(b){var -a=b.abs();if(a.isUnit())return false;if(a.equals(2)||a.equals(3)||a.equals(5))return true;if(a.isEven()||a.isDivisibleBy(3)||a.isDivisibleBy(5))return false;if(a.lesser(49))return true}function -J(d,e){var -g=d.prev(),c=g,h=0,f,i,b,a;while(c.isEven())c=c.divide(2),h++;next:for(b=0;b-s)return new -b(c-1);return new -a(H,true)};c.prototype.prev=function(){return new -c(this.value-g(1))};var -h=[1];while(2*h[h.length-1]<=f)h.push(2*h[h.length-1]);var -v=h.length,j=h[v-1];function -X(a){return Math.abs(a)<=f}a.prototype.shiftLeft=function(c){var -a=e(c).toJSNumber();if(!X(a))throw new -Error(String(a)+wt);if(a<0)return this.shiftRight(-a);var -b=this;if(b.isZero())return b;while(a>=v){b=b.multiply(j);a-=v-1}return b.multiply(h[a])};c.prototype.shiftLeft=b.prototype.shiftLeft=a.prototype.shiftLeft;a.prototype.shiftRight=function(d){var -a,b=e(d).toJSNumber();if(!X(b))throw new -Error(String(b)+wt);if(b<0)return this.shiftLeft(-b);var -c=this;while(b>=v){if(c.isZero()||c.isNegative()&&c.isUnit())return c;a=i(c,j);c=a[1].isNegative()?a[0].prev():a[0];b-=v-1}a=i(c,h[b]);return a[1].isNegative()?a[0].prev():a[0]};c.prototype.shiftRight=b.prototype.shiftRight=a.prototype.shiftRight;function -I(h,a,q){a=e(a);var -m=h.isNegative(),p=a.isNegative(),l=m?h.not():h,o=p?a.not():a,b=0,c=0,k=null,n=null,f=[];while(!l.isZero()||!o.isZero()){k=i(l,j);b=k[1].toJSNumber();if(m)b=j-1-b;n=i(o,j);c=n[1].toJSNumber();if(p)c=j-1-c;l=k[0];o=n[0];f.push(q(b,c))}var -g=q(m?1:0,p?1:0)!==0?as(-1):as(0);for(var -d=f.length-1;d>=0;d-=1)g=g.multiply(j).add(as(f[d]));return g}a.prototype.not=function(){return this.negate().prev()};c.prototype.not=b.prototype.not=a.prototype.not;a.prototype.and=function(a){return I(this,a,function(a,b){return a&b})};c.prototype.and=b.prototype.and=a.prototype.and;a.prototype.or=function(a){return I(this,a,function(a,b){return a|b})};c.prototype.or=b.prototype.or=a.prototype.or;a.prototype.xor=function(a){return I(this,a,function(a,b){return a^b})};c.prototype.xor=b.prototype.xor=a.prototype.xor;var -G=1<<30,_=(f&-f)*(f&-f)|G;function -D(c){var -a=c.value,b=typeof -a==="number"?a|G:typeof -a==="bigint"?a|g(G):a[0]+a[1]*f|_;return b&-b}function -Q(b,a){if(a.compareTo(b)<=0){var -f=Q(b,a.square(a)),d=f.p,c=f.e,e=d.multiply(a);return e.compareTo(b)<=0?{p:e,e:c*2+1}:{p:d,e:c*2}}return{p:as(1),e:0}}a.prototype.bitLength=function(){var -a=this;if(a.compareTo(as(0))<0)a=a.negate().subtract(as(1));if(a.compareTo(as(0))===0)return as(0);return as(Q(a,as(2)).e).add(as(1))};c.prototype.bitLength=b.prototype.bitLength=a.prototype.bitLength;function -S(a,b){a=e(a);b=e(b);return a.greater(b)?a:b}function -K(a,b){a=e(a);b=e(b);return a.lesser(b)?a:b}function -P(a,b){a=e(a).abs();b=e(b).abs();if(a.equals(b))return a;if(a.isZero())return b;if(b.isZero())return a;var -c=d[1],f,g;while(a.isEven()&&b.isEven()){f=K(D(a),D(b));a=a.divide(f);b=b.divide(f);c=c.multiply(f)}while(a.isEven())a=a.divide(D(a));do{while(b.isEven())b=b.divide(D(b));if(a.greater(b)){g=b;b=a;a=g}b=b.subtract(a)}while(!b.isZero());return c.isUnit()?a:a.multiply(c)}function -ad(a,b){a=e(a).abs();b=e(b).abs();return a.divide(P(a,b)).multiply(b)}function -ag(a,b){a=e(a);b=e(b);var -g=K(a,b),n=S(a,b),h=n.subtract(g).add(1);if(h.isSmall)return g.add(Math.floor(Math.random()*h));var -j=x(h,f).value,l=[],k=true;for(var -c=0;c=i){if(c===z&&i===1)continue;throw new -Error(c+" is not a valid digit in base "+g+ev)}}g=e(g);var -h=[],j=b[0]===cH;for(a=j?1:0;a=0;a--){b=b.add(e[a].times(c));c=c.times(f)}return g?b.negate():b}function -ah(b,a){a=a||M;if(b=0){e=c.divmod(b);c=e.quotient;var -d=e.remainder;if(d.isNegative()){d=b.minus(d).abs();c=c.next()}g.push(d.toJSNumber())}g.push(c.toJSNumber());return{value:g.reverse(),isNegative:f}}function -Z(d,c,b){var -a=x(d,c);return(a.isNegative?cH:aa)+a.value.map(function(a){return ah(a,b)}).join(aa)}a.prototype.toArray=function(a){return x(this,a)};b.prototype.toArray=function(a){return x(this,a)};c.prototype.toArray=function(a){return x(this,a)};a.prototype.toString=function(a,f){if(a===y)a=10;if(a!==10)return Z(this,a,f);var -d=this.value,c=d.length,e=String(d[--c]),h="0000000",b;while(--c>=0){b=String(d[c]);e+=h.slice(b.length)+b}var -g=this.sign?cH:aa;return g+e};b.prototype.toString=function(a,b){if(a===y)a=10;if(a!=10)return Z(this,a,b);return String(this.value)};c.prototype.toString=b.prototype.toString;c.prototype.toJSON=a.prototype.toJSON=b.prototype.toJSON=function(){return this.toString()};a.prototype.valueOf=function(){return parseInt(this.toString(),10)};a.prototype.toJSNumber=a.prototype.valueOf;b.prototype.valueOf=function(){return this.value};b.prototype.toJSNumber=b.prototype.valueOf;c.prototype.valueOf=c.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};function -V(d){if(l(+d)){var -n=+d;if(n===r(n))return F?new -c(g(n)):new -b(n);throw new -Error(oG+d)}var -s=d[0]===cH;if(s)d=d.slice(1);var -h=d.split(/e/i);if(h.length>2)throw new -Error(oG+h.join(o1));if(h.length===2){var -e=h[1];if(e[0]===fk)e=e.slice(1);e=+e;if(e!==r(e)||!l(e))throw new -Error(oG+e+" is not a valid exponent.");var -f=h[0],i=f.indexOf(ev);if(i>=0){e-=f.length-i-1;f=f.slice(0,i)+f.slice(i+1)}if(e<0)throw new -Error("Cannot include negative exponent part for integers");f+=new -Array(e+1).join(p);d=f}var -t=/^([0-9][0-9]*)$/.test(d);if(!t)throw new -Error(oG+d);if(F)return new -c(g(s?cH+d:d));var -q=[],j=d.length,o=$,k=j-o;while(j>0){q.push(+d.slice(k,j));k-=o;if(k<0)k=0;j-=o}m(q);return new -a(q,s)}function -af(a){if(F)return new -c(g(a));if(l(a)){if(a!==r(a))throw new -Error(a+" is not an integer.");return new -b(a)}return V(a.toString())}function -e(a){if(typeof -a==="number")return af(a);if(typeof -a==="string")return V(a);if(typeof -a==="bigint")return new -c(a);return a}for(var -k=0;k0)d[-k]=e(-k)}d.one=d[1];d.zero=d[0];d.minusOne=d[-1];d.max=S;d.min=K;d.gcd=P;d.lcm=ad;d.isInstance=function(d){return d -instanceof -a||d -instanceof -b||d -instanceof -c};d.randBetween=ag;d.fromArray=function(b,a,c){return U(b.map(e),e(a||10),c)};return d}();function -cL(a){var -b=a.toJSNumber()|0;if(a.equals(as(b)))return b;return a}function -GQ(a){return cL(as(a).abs())}function -GR(a,b){return cL(as(a).add(as(b)))}function -el(a,b){return as(a).compare(as(b))}function -jB(b,a){a=as(a);if(a.equals(as(0)))jy();return cL(as(b).divide(as(a)))}function -bzP(b,a){a=as(a);if(a.equals(as(0)))jy();return cL(as(b).mod(a))}function -sQ(a,b){return[0,jB(a,b),bzP(a,b)]}function -GS(a,b){return jB(a,b)}function -bzD(a,b){return as(a).equals(as(b))?1:0}function -c9(a){return as(a).compare(as.zero)}function -sS(a,b){return cL(as(a).subtract(as(b)))}function -bzE(a,b){var -c=c9(a),d=c9(b);if(c*d<0)if(!as(a).mod(as(b)).equals(as(0)))return sS(jB(a,b),as(1));return jB(a,b)}function -bzG(a,b){return cL(as.gcd(as(a),as(b)).abs())}function -bzu(c,e,g){e=as(e);var -a=e.toArray(Math.pow(2,32));c.write(8,a.isNegative?1:0);var -f=a.value.length,d=f*4;c.write(32,d);for(var -b=f-1;b>=0;b--){c.write(8,a.value[b]>>>0&dy);c.write(8,a.value[b]>>>8&dy);c.write(8,a.value[b]>>>16&dy);c.write(8,a.value[b]>>>24&dy)}g[0]=4*(1+((d+3)/4|0));g[1]=8*(1+((d+7)/8|0))}function -bzv(b,g){var -e;switch(b.read8u()){case -1:e=true;break;case -0:e=false;break;default:dr("input_value: z (malformed input)")}var -f=b.read32u(),c=as(0);for(var -d=0;d>>0);c=a.shiftLeft(d*32).add(c)}if(e)c=c.negate();g[0]=f+4;return cL(c)}function -bzH(d){var -b=as(d).toArray(Math.pow(2,32)),a=0;for(var -c=0;c=48&&a<=57)return a-48;if(a>=97&&a<=CG)return a-97+10;if(a>=65&&a<=70)return a-65+10}var -d=0;if(a[d]==fk)a=a.substring(1);else -if(a[d]==cH)d++;if(a[d]==sf)bR(zZ);a=a.replace(/_/g,aa);if(a==cH||a==aa)a=p;for(;d=c)bR(zZ)}return cL(as(a,c))}function -g1(d,a,b,c){a=d4(a);if(b!=0||c!=a.length){if(a.length-b=0?1:0}function -pn(a){a=as(a);if(!bzF(a))k6(e3(mi));var -b=as(Dq),d=a.and(b).toJSNumber(),c=a.shiftRight(32).and(b).toJSNumber(),e=Gz(d,c);return e}function -by_(a){switch(a[2]){case-8:case-11:case-12:return 1;default:return 0}}function -byO(b){var -a=aa;if(b[0]==0){a+=b[1][1];if(b.length==3&&b[2][0]==0&&by_(b[1]))var -e=b[2],f=1;else -var -f=2,e=b;a+="(";for(var -d=f;df)a+=gI;var -c=e[d];if(typeof -c=="number")a+=c.toString();else -if(c -instanceof -eZ)a+=ms+c.toString()+ms;else -if(typeof -c=="string")a+=ms+c.toString()+ms;else -a+=sf}a+=")"}else -if(b[0]==bm)a+=b[1];return a}function -Gu(a){if(a -instanceof -Array&&(a[0]==0||a[0]==bm)){var -c=e3(Ea);if(c)c(a,false);else{var -d=byO(a),b=e3(u7);if(b)b(0);aL.console.error(si+d+vB)}}else -throw a}function -bzo(){var -a=aL;if(a.process&&a.process.on)a.process.on("uncaughtException",function(b,c){Gu(b);a.process.exit(2)});else -if(a.addEventListener)a.addEventListener("error",function(a){if(a.error)Gu(a.error)})}bzo();function -r(a,b){return a.length==1?a(b):dG(a,[b])}function -aq(a,b,c){return a.length==2?a(b,c):dG(a,[b,c])}function -cB(a,b,c,d){return a.length==3?a(b,c,d):dG(a,[b,c,d])}function -u2(a,b,c,d,e){return a.length==4?a(b,c,d,e):dG(a,[b,c,d,e])}function -lO(a,b,c,d,e,f){return a.length==5?a(b,c,d,e,f):dG(a,[b,c,d,e,f])}function -byB(a,b,c,d,e,f,g){return a.length==6?a(b,c,d,e,f,g):dG(a,[b,c,d,e,f,g])}function -byA(a,b,c,d,e,f,g,h){return a.length==7?a(b,c,d,e,f,g,h):dG(a,[b,c,d,e,f,g,h])}byQ();var -pp=[bm,a(Dw),-1],sY=[bm,a(Ec),-2],k8=[bm,a(q6),-3],sU=[bm,a(zm),-4],pq=[bm,a(wY),-6],cD=[bm,a(Fc),-7],sW=[bm,a(vV),-8],sX=[bm,a(zN),-9],bs=[bm,a(FJ),-11],sZ=[bm,a(DW),DL],byx=[4,0,0,0,[12,45,[4,0,0,0,0]]],pG=[0,[11,a('File "'),[2,0,[11,a('", line '),[4,0,0,0,[11,a(yY),[4,0,0,0,[12,45,[4,0,0,0,[11,a(": "),[2,0,0]]]]]]]]]],a('File "%s", line %d, characters %d-%d: %s')],byy=[12,41,0],byz=[4,0,0,0,[12,46,0]],u1=[0,a("eventsManager"),a("computeAllocationsFamiliales"),a("computeAidesAuLogement")];d5(11,sZ,DW);d5(10,bs,FJ);d5(9,[bm,a(B7),-10],B7);d5(8,sX,zN);d5(7,sW,vV);d5(6,cD,Fc);d5(5,pq,wY);d5(4,[bm,a(yv),-5],yv);d5(3,sU,zm);d5(2,k8,q6);d5(1,sY,Ec);d5(0,pp,Dw);var -G9=a("output_substring"),G6=a("%.12g"),G5=a(ev),G3=a(wu),G4=a(zB),GW=a("Stdlib.Exit"),GY=gi(0,0,E9),GZ=gi(0,0,65520),G0=gi(1,0,E9),G$=a("CamlinternalLazy.Undefined"),He=a(wK),Hf=a("\\'"),Hg=a(v4),Hh=a(Ao),Hi=a(Bl),Hj=a(yC),Hd=a("Char.chr"),Hm=a("nth"),Hn=a("List.nth"),Hl=a("tl"),Hk=a("hd"),Hq=a("String.blit / Bytes.blit_string"),Hp=a("Bytes.blit"),Ho=a("String.sub / Bytes.sub"),Hv=a("String.contains_from / Bytes.contains_from"),Hs=a(aa),Hr=a("String.concat"),Hy=a("Array.blit"),Hx=a("Array.fill"),HD=a("Map.remove_min_elt"),HE=[0,0,0,0],HF=[0,a("map.ml"),xy,10],HG=[0,0,0],Hz=a(ml),HA=a(ml),HB=a(ml),HC=a(ml),HH=a("Stdlib.Queue.Empty"),HN=a("Buffer.add_substring/add_subbytes"),HM=a("Buffer.add: cannot grow buffer"),HL=[0,a(zY),93,2],HK=[0,a(zY),94,2],HJ=a("Buffer.sub"),HW=a("%c"),HX=a("%s"),HY=a(x0),HZ=a(BF),H0=a(zj),H1=a(D7),H2=a("%f"),H3=a("%B"),H4=a("%{"),H5=a("%}"),H6=a("%("),H7=a("%)"),H8=a(q2),H9=a("%t"),H_=a("%?"),H$=a("%r"),Ia=a("%_r"),Ib=[0,a(cj),kx,23],Im=[0,a(cj),814,21],Ie=[0,a(cj),gM,21],In=[0,a(cj),818,21],If=[0,a(cj),gC,21],Io=[0,a(cj),rA,19],Ig=[0,a(cj),rd,19],Ip=[0,a(cj),826,22],Ih=[0,a(cj),827,22],Iq=[0,a(cj),831,30],Ii=[0,a(cj),832,30],Ik=[0,a(cj),836,26],Ic=[0,a(cj),837,26],Il=[0,a(cj),846,28],Id=[0,a(cj),847,28],Ij=[0,a(cj),kN,23],Jt=a(wj),Jr=[0,a(cj),1558,4],Js=a("Printf: bad conversion %["),Ju=[0,a(cj),Dh,39],Jv=[0,a(cj),1649,31],Jw=[0,a(cj),1650,31],Jx=a("Printf: bad conversion %_"),Jy=a(wf),Jz=a(ws),JA=a(wf),JB=a(ws),JF=[0,[11,a("invalid box description "),[3,0,0]],a("invalid box description %S")],JD=a(aa),JE=[0,0,4],JG=a(aa),JH=a(xF),JI=a("h"),JJ=a("hov"),JK=a("hv"),JL=a("v"),Jp=a(q8),Jn=a("neg_infinity"),Jo=a(FX),Jm=a(ev),Jh=[0,cJ],I7=a("%+nd"),I8=a("% nd"),I_=a("%+ni"),I$=a("% ni"),Ja=a("%nx"),Jb=a("%#nx"),Jc=a("%nX"),Jd=a("%#nX"),Je=a("%no"),Jf=a("%#no"),I6=a("%nd"),I9=a(zj),Jg=a("%nu"),IU=a("%+ld"),IV=a("% ld"),IX=a("%+li"),IY=a("% li"),IZ=a("%lx"),I0=a("%#lx"),I1=a("%lX"),I2=a("%#lX"),I3=a("%lo"),I4=a("%#lo"),IT=a("%ld"),IW=a(BF),I5=a("%lu"),IH=a("%+Ld"),II=a("% Ld"),IK=a("%+Li"),IL=a("% Li"),IM=a("%Lx"),IN=a("%#Lx"),IO=a("%LX"),IP=a("%#LX"),IQ=a("%Lo"),IR=a("%#Lo"),IG=a("%Ld"),IJ=a(D7),IS=a("%Lu"),Iu=a("%+d"),Iv=a("% d"),Ix=a("%+i"),Iy=a("% i"),Iz=a("%x"),IA=a("%#x"),IB=a("%X"),IC=a("%#X"),ID=a("%o"),IE=a("%#o"),It=a(sm),Iw=a(x0),IF=a(wj),HO=a("@]"),HP=a("@}"),HQ=a("@?"),HR=a("@\n"),HS=a("@."),HT=a("@@"),HU=a("@%"),HV=a("@"),Ir=a("CamlinternalFormat.Type_mismatch"),JP=a(aa),JQ=[0,[11,a(gI),[2,0,[2,0,0]]],a(", %s%s")],Kd=[0,[11,a(si),[2,0,[12,10,0]]],a(FD)],Ke=[0,[11,a("Fatal error in uncaught exception handler: exception "),[2,0,[12,10,0]]],a("Fatal error in uncaught exception handler: exception %s\n")],Kc=a("Fatal error: out of memory in uncaught exception handler"),Ka=[0,[11,a(si),[2,0,[12,10,0]]],a(FD)],J8=[0,[2,0,[12,10,0]],a("%s\n")],J0=a("Raised at"),J1=a("Re-raised at"),J2=a("Raised by primitive operation at"),J3=a("Called from"),J4=a(" (inlined)"),J6=a(aa),J5=[0,[2,0,[12,32,[2,0,[11,a(' in file "'),[2,0,[12,34,[2,0,[11,a(", line "),[4,0,0,0,[11,a(yY),byx]]]]]]]]]],a('%s %s in file "%s"%s, line %d, characters %d-%d')],J7=[0,[2,0,[11,a(" unknown location"),0]],a("%s unknown location")],JV=a("Out of memory"),JW=a("Stack overflow"),JX=a("Pattern matching failed"),JY=a("Assertion failed"),JZ=a("Undefined recursive module"),JR=[0,[12,40,[2,0,[2,0,[12,41,0]]]],a("(%s%s)")],JS=a(aa),JT=a(aa),JU=[0,[12,40,[2,0,[12,41,0]]],a("(%s)")],JO=[0,[4,0,0,0,0],a(sm)],JM=[0,[3,0,0],a("%S")],JN=a(sf),J9=[0,a(aa),a("(Cannot print locations:\n bytecode executable program file not found)"),a("(Cannot print locations:\n bytecode executable program file appears to be corrupt)"),a("(Cannot print locations:\n bytecode executable program file has wrong magic number)"),a("(Cannot print locations:\n bytecode executable program file cannot be opened;\n -- too many open files. Try running with OCAMLRUNPARAM=b=2)")],Kf=a(Fv),Kt=[0,0],byv=a("OCAMLRUNPARAM"),byt=a("CAMLRUNPARAM"),Kg=a(aa),KT=[3,0,3],KU=a(ev),KO=a(nu),KP=a("<\/"),KQ=a(aa),KK=a(nu),KL=a(rX),KM=a(aa),KI=a("\n"),KE=a(aa),KF=a(aa),KG=a(aa),KH=a(aa),KD=[0,a(aa)],Kz=a(aa),KA=a(aa),KB=a(aa),KC=a(aa),Kx=[0,a(aa),0,a(aa)],Kw=a(aa),Kv=a("Stdlib.Format.String_tag"),K5=a(aa),La=[0,a("lib/dates.ml"),226,2],K$=[0,[4,0,[0,2,4],0,[12,45,[4,0,[0,2,2],0,[12,45,[4,0,[0,2,2],0,0]]]]],a("%04d-%02d-%02d")],K9=[0,[12,91,[4,0,0,0,[11,a(" years, "),[4,0,0,0,[11,a(" months, "),[4,0,0,0,[11,a(" days]"),0]]]]]]],a("[%d years, %d months, %d days]")],K6=a("Dates_calc.Dates.InvalidDate"),K7=a("Dates_calc.Dates.AmbiguousComputation"),Lf=gi(1,0,0),Lb=a("Z.Overflow"),Lc=a(mi),Lj=a(aa),Lk=a("+inf"),Ll=a("-inf"),Lm=a(F4),Ln=a("undef"),Lp=[0,a("q.ml"),486,25],Lo=a("Q.of_string: invalid digit"),Lh=a(xh),Lg=a(xh),Lt=a("Buf.extend: reached Sys.max_string_length"),L3=[0,a(rY),72,32],L0=[0,a(rY),72,32],LZ=a("Root is not an object or array"),LV=a("NaN value not allowed in standard JSON"),LW=[0,[8,[0,0,3],0,[0,16],0],a(x3)],LY=[0,[8,[0,0,3],0,[0,17],0],a(Dn)],LX=a(yV),LT=a("Infinity value not allowed in standard JSON"),LU=a("-Infinity value not allowed in standard JSON"),LP=a("NaN"),LQ=[0,[8,[0,0,3],0,[0,16],0],a(x3)],LS=[0,[8,[0,0,3],0,[0,17],0],a(Dn)],LR=a(yV),LN=a("Infinity"),LO=a("-Infinity"),LK=a(wu),LL=a(zB),LJ=a("null"),LD=a(v4),LE=a(Ao),LF=a(Bl),LG=a("\\f"),LH=a(yC),LI=a('\\"'),LC=a(wK),LB=[0,[11,a("src="),[3,0,[11,a(" start="),[4,3,0,0,[11,a(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]],a("src=%S start=%i len=%i\n%!")],Lz=a("\\u00"),Lw=[0,a(rY),72,32],Lu=a("Yojson.Json_error"),Ly=[0,a(qO),a(q5),a(rh),a(rQ),a(rr),a(aa),a(aa),a(aa),a(aa),a(aa),a(aa)],L2=[0,a(qO),a(q5),a(rh),a(rQ),a(rr),a(aa),a(aa),a(aa),a(aa),a(aa),a(aa)],L5=[0,a(qO),a(q5),a(rh),a(rQ),a(rr),a(aa),a(aa),a(aa),a(aa),a(aa),a(aa)],MY=a("unreachable due to the [is_subscope_call] test"),M0=a("unreachable due to the [is_subscope_input_var_def] test"),M1=a("]"),M2=a("["),M3=a(" ]): expected variable definition (function output), found: "),M4=a(gI),M5=a(vl),M6=a(" ]): expected variable definition (function output), found: end of tokens"),M7=a(gI),M8=a(vl),MZ=a("Unexpected event: "),M_=a("Missing function output variable definition."),M9=a("Invalid start of function call."),MX=a(ac),MW=a(ae),M$=[0,[11,a("An error occurred while parsing raw events: "),[2,0,[12,10,0]]],a("An error occurred while parsing raw events: %s\n")],MM=a(yi),MN=a(gI),MO=[0,[11,a(A4),0],a(A4)],MP=a(yi),MQ=a(gI),MR=[0,[11,a(E0),0],a(E0)],MS=a(gI),MT=[0,[11,a("VariableDefinition([ "),[2,0,[11,a(" ], "),[2,0,[12,41,0]]]]],a("VariableDefinition([ %s ], %s)")],MU=[0,[11,a("DecisionTaken("),[2,0,[12,58,[4,0,0,0,[12,46,[4,0,0,0,[12,45,[4,0,0,0,[12,46,[4,0,0,0,byy]]]]]]]]]],a("DecisionTaken(%s:%d.%d-%d.%d)")],Mw=[0,cE,a("VarComputation")],Mx=[0,cE,a("FunCall")],My=a(CC),Mz=a("inputs"),MA=a(yl),MB=[0,cE,a("SubScopeCall")],MC=a("fun_calls"),MD=a("value"),ME=a(yl),MF=a("pos"),MG=a(ae),MH=a(CC),MI=a(ac),MJ=a("fun_name"),Ml=[0,ca,[0,[0,cE,a("Unit")],0]],Mm=[0,ca,[0,[0,cE,a("Unembeddable")],0]],Mn=[0,cE,a("Bool")],Mo=[0,cE,a("Money")],Mp=[0,cE,a("Integer")],Mq=[0,cE,a("Decimal")],Mr=[0,cE,a("Date")],Ms=[0,cE,a("Duration")],Mt=[0,cE,a("Enum")],Mu=[0,cE,a("Struct")],Mv=[0,cE,a("Array")],Mk=[0,[15,0],a(q2)],Mj=[0,[15,0],a(q2)],L7=a("law_headings"),L8=a("end_column"),L9=a("end_line"),L_=a("start_column"),L$=a("start_line"),Ma=a("filename"),Mb=a("Runtime_ocaml.Runtime.EmptyError"),Mc=a("Runtime_ocaml.Runtime.AssertionFailed"),Md=a("Runtime_ocaml.Runtime.ConflictError"),Me=a("Runtime_ocaml.Runtime.UncomparableDurations"),Mg=a("Runtime_ocaml.Runtime.ImpossibleDate"),Mi=a("Runtime_ocaml.Runtime.NoValueProvided"),Na=a("Jsoo_runtime.Error.Exn"),Nb=a(rF),Nt=[0,[2,0,[11,a(" in file "),[2,0,[11,a(", position "),[4,0,0,0,[12,58,[4,0,0,0,[11,a("--"),[4,0,0,0,[12,58,byz]]]]]]]]]],a("%s in file %s, position %d:%d--%d:%d.")],Nu=a("No rule applies in the given context to give a value to the variable"),Nv=a("A conflict happened between two rules giving a value to the variable"),Nw=a("A failure happened in the assertion"),Nm=a("Begin call"),Nn=a("End call"),No=a("Variable definition"),Np=a("Decision taken"),Nk=a(aa),Ni=a("date_of_jsoo: invalid date"),Ng=[0,a(x_),a(BW),a(EO)],Nh=[0,a(x_),a(EO),a(BW)],$$=[0,a(a0),90,14,90,29,[0,a(bl),[0,a(a1),0]]],$4=[0,a(a0),fN,18,fN,64,[0,a(bl),[0,a(a1),0]]],$5=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],$3=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],$Z=[0,a(a0),87,14,87,53,[0,a(bl),[0,a(a1),0]]],$V=[0,a(a0),86,14,86,50,[0,a(bl),[0,a(a1),0]]],$R=[0,a(a0),89,14,89,46,[0,a(bl),[0,a(a1),0]]],$N=[0,a(a0),88,14,88,54,[0,a(bl),[0,a(a1),0]]],$I=[0,a(a0),97,18,97,72,[0,a(bl),[0,a(a1),0]]],$J=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$H=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$C=[0,a(a0),93,18,93,67,[0,a(bl),[0,a(a1),0]]],$D=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$B=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$x=[0,a(a0),fX,14,fX,30,[0,a("Article L131-1"),[0,a(bl),[0,a(a1),0]]]],$u=[0,0],$v=[1,0],$w=[2,0],$y=[0,a(a0),76,11,76,27,[0,a(bl),[0,a(a1),0]]],$t=[0,a(a0),76,11,76,27,[0,a(bl),[0,a(a1),0]]],$z=[0,a(ef),[0,a("enfants_\xc3\xa0_charge"),0]],$E=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$F=[0,a(ef),[0,a("allocations_familiales.personne_charge_effective_permanente_est_parent"),0]],$A=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$K=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$L=[0,a(ef),[0,a("allocations_familiales.personne_charge_effective_permanente_remplit_titre_I"),0]],$G=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$O=[0,a(a0),88,14,88,54,[0,a(bl),[0,a(a1),0]]],$P=[0,a(ef),[0,a("allocations_familiales.ressources_m\xc3\xa9nage"),0]],$M=[0,a(a0),88,14,88,54,[0,a(bl),[0,a(a1),0]]],$S=[0,a(a0),89,14,89,46,[0,a(bl),[0,a(a1),0]]],$T=[0,a(ef),[0,a("allocations_familiales.r\xc3\xa9sidence"),0]],$Q=[0,a(a0),89,14,89,46,[0,a(bl),[0,a(a1),0]]],$W=[0,a(a0),86,14,86,50,[0,a(bl),[0,a(a1),0]]],$X=[0,a(ef),[0,a("allocations_familiales.date_courante"),0]],$U=[0,a(a0),86,14,86,50,[0,a(bl),[0,a(a1),0]]],$0=[0,a(a0),87,14,87,53,[0,a(bl),[0,a(a1),0]]],$1=[0,a(ef),[0,a("allocations_familiales.enfants_\xc3\xa0_charge"),0]],$Y=[0,a(a0),87,14,87,53,[0,a(bl),[0,a(a1),0]]],$6=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],$7=[0,a(ef),[0,a("allocations_familiales.avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012"),0]],$2=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],$8=[0,a(ef),[0,a(vG),[0,a(U),0]]],$9=[0,a(ef),[0,a(vG),[0,a(U),0]]],aaa=[0,a(a0),80,12,80,27,[0,a(bl),[0,a(a1),0]]],$_=[0,a(a0),80,12,80,27,[0,a(bl),[0,a(a1),0]]],aab=[0,a(ef),[0,a("i_montant_vers\xc3\xa9"),0]],$n=[0,a(a0),45,14,45,27,[0,a(eO),[0,a(a1),0]]],$m=a(p),$i=[0,a(br),DN,14,DN,62,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],$d=[0,a(U),[0,a(kR),[0,a(ac),0]]],$e=[0,a(U),[0,a(kR),0]],$f=[0,a(U),[0,a(kR),[0,a(ae),0]]],$g=[0,a(U),[0,a(kR),0]],$h=a(p),_$=[0,a(br),om,14,om,61,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],_7=[0,a(a0),39,14,39,38,[0,a(eO),[0,a(a1),0]]],_1=[0,a(U),[0,a(j$),[0,a(ac),0]]],_2=[0,a(U),[0,a(j$),0]],_3=[0,a(U),[0,a(j$),[0,a(ae),0]]],_4=[0,a(U),[0,a(j$),0]],_5=a(p),_6=a(p),_X=[0,a(a0),37,14,37,32,[0,a(eO),[0,a(a1),0]]],_W=a(p),_S=[0,a(dU),h1,5,h1,43,[0,a("Article R521-4"),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],_H=[0,a(U),[0,a(fn),[0,a(ac),0]]],_I=[0,a(U),[0,a(fn),0]],_J=[0,a(U),[0,a(fn),[0,a(ae),0]]],_K=[0,a(U),[0,a(fn),0]],_L=a(et),_Q=a(kd),_R=a(b5),_M=[0,a(U),[0,a(j4),[0,a(ac),0]]],_N=[0,a(U),[0,a(j4),0]],_O=[0,a(U),[0,a(j4),[0,a(ae),0]]],_P=[0,a(U),[0,a(j4),0]],_T=[0,a(I),ei,11,ei,49,[0,a(J),[0,a(H),[0,a(B),0]]]],_G=[0,a(I),ei,11,ei,49,[0,a(J),[0,a(H),[0,a(B),0]]]],_D=[0,a(dU),cs,14,cs,46,[0,a(oV),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],_w=a(cI),_x=[0,a(br),268,5,qQ,41,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],_t=a(cI),_u=a(et),_v=a(cI),_y=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_q=a(cI),_r=[0,a(br),Ar,5,280,40,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],_n=a(cI),_o=a(et),_p=a(cI),_s=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_z=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_m=[0,a(br),hU,14,hU,55,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],_l=a(p),_a=a(z),_b=[0,a(U),[0,a(bH),[0,a(ac),0]]],_c=[0,a(U),[0,a(bH),0]],_d=[0,a(U),[0,a(bH),[0,a(ae),0]]],_e=[0,a(U),[0,a(bH),0]],_f=[0,a(br),gO,5,ru,55,[0,a(kn),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],Z$=a("0.0369"),_g=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],Z4=a(z),Z5=[0,a(U),[0,a(bH),[0,a(ac),0]]],Z6=[0,a(U),[0,a(bH),0]],Z7=[0,a(U),[0,a(bH),[0,a(ae),0]]],Z8=[0,a(U),[0,a(bH),0]],Z9=[0,a(br),389,5,392,56,[0,a(kn),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],Z3=a("0.0567"),Z_=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],_h=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],Z2=[0,a(br),22,14,22,40,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],ZY=[0,a(U),[0,a(ka),[0,a(ac),0]]],ZZ=[0,a(U),[0,a(ka),0]],Z0=[0,a(U),[0,a(ka),[0,a(ae),0]]],Z1=[0,a(U),[0,a(ka),0]],_i=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],ZX=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],ZR=a(z),ZS=[0,a(br),356,5,yQ,69,[0,a(kn),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],ZT=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZO=[8,0],ZP=[0,a(aW),u$,24,u$,44,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],ZQ=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZU=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZN=[0,a(br),18,14,18,34,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],ZJ=[0,a(br),x9,14,x9,39,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],ZF=[0,a(U),[0,a(kg),[0,a(ac),0]]],ZG=[0,a(U),[0,a(kg),0]],ZH=[0,a(U),[0,a(kg),[0,a(ae),0]]],ZI=[0,a(U),[0,a(kg),0]],Zw=[0,a(U),[0,a(bH),[0,a(ac),0]]],Zx=[0,a(U),[0,a(bH),0]],Zy=[0,a(U),[0,a(bH),[0,a(ae),0]]],Zz=[0,a(U),[0,a(bH),0]],ZA=[0,a(br),60,5,60,38,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Zv=a(ry),ZB=[0,a(I),dm,11,dm,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Zp=[0,a(U),[0,a(bH),[0,a(ac),0]]],Zq=[0,a(U),[0,a(bH),0]],Zr=[0,a(U),[0,a(bH),[0,a(ae),0]]],Zs=[0,a(U),[0,a(bH),0]],Zt=[0,a(br),fN,5,fN,38,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Zo=a(Ch),Zu=[0,a(I),dm,11,dm,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Zi=[0,a(U),[0,a(bH),[0,a(ac),0]]],Zj=[0,a(U),[0,a(bH),0]],Zk=[0,a(U),[0,a(bH),[0,a(ae),0]]],Zl=[0,a(U),[0,a(bH),0]],Zm=[0,a(br),Er,5,Er,38,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Zh=a(Cw),Zn=[0,a(I),dm,11,dm,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Zb=[0,a(U),[0,a(bH),[0,a(ac),0]]],Zc=[0,a(U),[0,a(bH),0]],Zd=[0,a(U),[0,a(bH),[0,a(ae),0]]],Ze=[0,a(U),[0,a(bH),0]],Zf=[0,a(a0),28,5,28,44,[0,a(eO),[0,a(a1),0]]],Za=a(p),Zg=[0,a(I),dm,11,dm,47,[0,a(J),[0,a(H),[0,a(B),0]]]],ZC=[0,a(I),dm,11,dm,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Y$=[0,a(I),dm,11,dm,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Y8=[0,a(dU),ei,14,ei,41,[0,a(oV),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],Y6=a(b5),Y7=a(b5),YY=[8,0],YZ=[0,a(aW),FG,5,FG,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],YV=a(z),YW=a(wc),YX=a(p),Y0=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YS=[8,0],YT=[0,a(aW),F9,5,F9,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],YP=a(z),YQ=a("0.2379"),YR=a(p),YU=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YM=[8,0],YN=[0,a(aW),fh,5,fh,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],YJ=a(z),YK=a("0.2437"),YL=a(p),YO=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YG=[8,0],YH=[0,a(aW),zR,5,zR,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],YD=a(z),YE=a("0.2496"),YF=a(p),YI=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YA=[8,0],YB=[0,a(aW),DQ,5,DQ,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Yx=a(z),Yy=a("0.2555"),Yz=a(p),YC=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yu=[8,0],Yv=[0,a(aW),vg,5,vg,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Yr=a(z),Ys=a("0.2613"),Yt=a(p),Yw=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yo=[8,0],Yp=[0,a(aW),w9,5,w9,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Yl=a(z),Ym=a("0.2672"),Yn=a(p),Yq=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yi=[8,0],Yj=[0,a(aW),qU,5,qU,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Yf=a(z),Yg=a("0.2804"),Yh=a(p),Yk=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yc=[8,0],Yd=[0,a(aW),f2,5,f2,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],X$=a(z),Ya=a("0.2936"),Yb=a(p),Ye=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],X8=[8,0],X9=[0,a(aW),xo,5,xo,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],X5=a(z),X6=a("0.3068"),X7=a(p),X_=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Y1=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],X3=[8,0],X4=[0,a(aW),rC,14,rC,50,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],X0=a(z),X1=a(sr),X2=a(p),Y2=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XX=[0,a(br),38,14,38,50,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],XU=a(z),XV=a(sr),XW=a(p),XY=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XS=[0,a(br),79,14,79,50,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],XP=a(z),XQ=a(ry),XR=a(p),XT=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XN=[0,a(br),fX,14,fX,50,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],XK=a(z),XL=a(Ch),XM=a(p),XO=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XZ=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XF=[0,a(br),43,14,43,59,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],XB=a(X),XC=a(X),XD=a("0.41"),XE=a(p),XG=[0,a(I),c4,11,c4,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Xz=[0,a(br),84,14,84,59,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xv=a(X),Xw=a(X),Xx=a("0.205"),Xy=a(p),XA=[0,a(I),c4,11,c4,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Xt=[0,a(br),gU,14,gU,59,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xp=a(X),Xq=a(X),Xr=a("0.1025"),Xs=a(p),Xu=[0,a(I),c4,11,c4,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Xk=[0,a(br),C$,5,C$,42,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xj=a("0.20234"),Xl=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xh=[0,a(br),rg,5,236,45,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xg=a("0.10117"),Xi=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xe=[0,a(br),zk,5,zk,42,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xd=a("0.05059"),Xf=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],W8=a(cI),W9=[0,a(br),qT,5,166,65,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],W5=a(cI),W6=a(et),W7=a(cI),W_=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],W2=a(cI),W3=[0,a(br),174,5,175,65,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],WZ=a(cI),W0=a(et),W1=a(cI),W4=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],W$=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],WY=[0,a(br),jt,14,jt,34,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],WX=a(p),Xa=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],WW=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],WN=[0,a(U),[0,a(eP),[0,a(ac),0]]],WO=[0,a(U),[0,a(eP),0]],WP=[0,a(U),[0,a(eP),[0,a(ae),0]]],WQ=[0,a(U),[0,a(eP),0]],WR=[0,a(bP),ib,5,318,21,[0,a(z9),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],WS=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WE=[0,a(U),[0,a(eP),[0,a(ac),0]]],WF=[0,a(U),[0,a(eP),0]],WG=[0,a(U),[0,a(eP),[0,a(ae),0]]],WH=[0,a(U),[0,a(eP),0]],WI=[0,a(U),[0,a(kK),[0,a(ac),0]]],WJ=[0,a(U),[0,a(kK),0]],WK=[0,a(U),[0,a(kK),[0,a(ae),0]]],WL=[0,a(U),[0,a(kK),0]],WM=[0,a(bP),fq,5,dz,21,[0,a(z9),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],WT=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WD=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WU=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WC=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Wt=a(z),Wu=[8,0],Wv=[0,a(aW),fQ,6,fQ,71,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],Ww=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wr=a(z),Ws=[0,a(bP),r2,5,410,72,[0,a(rZ),[0,a(eX),[0,a(ke),[0,a(d0),[0,a(ab),[0,a(af),0]]]]]]],Wx=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wy=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wp=a(X),Wq=[0,a(bP),fN,5,fN,70,[0,a(Gf),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Wz=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wo=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wg=[8,0],Wh=[0,a(aW),251,5,kb,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Wd=a(p),We=a("0.145"),Wf=a(p),Wi=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Wa=[8,0],Wb=[0,a(aW),zH,5,261,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],V9=a(p),V_=a("0.1393"),V$=a(p),Wc=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],V6=[8,0],V7=[0,a(aW),At,5,qQ,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],V3=a(p),V4=a("0.1335"),V5=a(p),V8=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],V0=[8,0],V1=[0,a(aW),Ar,5,279,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],VX=a(p),VY=a("0.1278"),VZ=a(p),V2=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VU=[8,0],VV=[0,a(aW),287,5,288,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],VR=a(p),VS=a("0.122"),VT=a(p),VW=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VO=[8,0],VP=[0,a(aW),d_,5,eh,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],VL=a(p),VM=a("0.1163"),VN=a(p),VQ=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VI=[8,0],VJ=[0,a(aW),kV,5,306,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],VF=a(p),VG=a("0.1105"),VH=a(p),VK=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VC=[8,0],VD=[0,a(aW),dF,5,ib,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Vz=a(p),VA=a("0.0976"),VB=a(p),VE=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vw=[8,0],Vx=[0,a(aW),323,5,fp,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Vt=a(p),Vu=a("0.0847"),Vv=a(p),Vy=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vq=[8,0],Vr=[0,a(aW),u9,5,333,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Vn=a(p),Vo=a("0.0717"),Vp=a(p),Vs=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vk=[8,0],Vl=[0,a(aW),m$,5,m$,49,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Vh=a(p),Vi=a("5728"),Vj=a(p),Vm=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Wj=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vf=[8,0],Vg=[0,a(aW),nU,14,nU,49,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],Vc=a(p),Vd=a(wm),Ve=a(p),Wk=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],U$=a(z),Va=[0,a(br),dj,5,fh,71,[0,a(kn),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],U_=a(wm),Vb=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],U9=[0,a(br),rL,29,rL,64,[0,a(kn),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],U8=a(p),U4=[0,a(dU),my,14,my,34,[0,a(oV),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],UW=[0,a(U),[0,a(fn),[0,a(ac),0]]],UX=[0,a(U),[0,a(fn),0]],UY=[0,a(U),[0,a(fn),[0,a(ae),0]]],UZ=[0,a(U),[0,a(fn),0]],U0=a(et),U1=a(kd),U2=a(b5),U3=a(b5),US=[0,a(dU),Cv,14,Cv,34,[0,a(oV),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],UL=[8,0],UM=[0,a(aW),hn,5,hn,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],UI=a(X),UJ=a(Cq),UK=a(p),UN=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],UF=[8,0],UG=[0,a(aW),CH,5,CH,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],UC=a(X),UD=a("0.0539"),UE=a(p),UH=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Uz=[8,0],UA=[0,a(aW),yk,5,yk,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Uw=a(X),Ux=a("0.0615"),Uy=a(p),UB=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Ut=[8,0],Uu=[0,a(aW),ex,5,ex,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Uq=a(X),Ur=a("0.069"),Us=a(p),Uv=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Un=[8,0],Uo=[0,a(aW),Cu,5,Cu,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Uk=a(X),Ul=a("0.0766"),Um=a(p),Up=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Uh=[8,0],Ui=[0,a(aW),fT,5,fT,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Ue=a(X),Uf=a("0.0842"),Ug=a(p),Uj=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Ub=[8,0],Uc=[0,a(aW),wD,5,wD,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],T_=a(X),T$=a("0.0918"),Ua=a(p),Ud=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],T7=[8,0],T8=[0,a(aW),v2,5,v2,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],T4=a(X),T5=a("0.1089"),T6=a(p),T9=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],T1=[8,0],T2=[0,a(aW),jf,5,jf,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],TY=a(X),TZ=a("0.1259"),T0=a(p),T3=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],TV=[8,0],TW=[0,a(aW),f5,5,f5,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],TS=a(X),TT=a("0.143"),TU=a(p),TX=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],UO=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],TR=[0,a(aW),h1,14,h1,59,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],TO=a(X),TP=a(ry),TQ=a(p),TK=[0,a(aW),iM,14,iM,67,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],TG=a(_),TH=a(_),TI=a(Cq),TJ=a(p),Tz=a(z),TA=[0,a(bP),423,6,rx,72,[0,a(rZ),[0,a(eX),[0,a(ke),[0,a(d0),[0,a(ab),[0,a(af),0]]]]]]],TB=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],Tu=[0,a(co),[0,a(iU),[0,a(ac),0]]],Tv=[0,a(co),[0,a(iU),0]],Tw=[0,a(co),[0,a(iU),[0,a(ae),0]]],Tx=[0,a(co),[0,a(iU),0]],Ty=[0,a(bP),rR,5,dm,59,[0,a(Gf),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],TC=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],Tt=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],TD=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],Ts=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],Tm=a(z),Tn=[0,a(bP),gz,5,430,71,[0,a(rZ),[0,a(eX),[0,a(ke),[0,a(d0),[0,a(ab),[0,a(af),0]]]]]]],To=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Tl=[0,a(a0),31,9,31,32,[0,a(eO),[0,a(a1),0]]],Tp=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Tk=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Te=[0,a(aW),23,5,23,67,[0,a(F2),[0,a(f9),0]]],Tc=a(EQ),Td=a("5628600"),Tf=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],Ta=[0,a(aW),56,5,56,67,[0,a(vj),[0,a(f9),0]]],S_=a(FH),S$=a("5684900"),Tb=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],S8=[0,a(aW),89,5,89,67,[0,a(wJ),[0,a(f9),0]]],S6=a(EX),S7=a("5775900"),S9=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],S4=[0,a(aW),bp,5,bp,67,[0,a(b6),[0,a(C3),[0,a(f9),0]]]],S2=a(wo),S3=a("5827900"),S5=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],Tg=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],S1=[0,a(br),Ev,14,Ev,30,[0,a(Dz),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],SZ=a(AN),S0=a("5595000"),ST=[0,a(aW),30,5,30,67,[0,a(F2),[0,a(f9),0]]],SR=a(EQ),SS=a("7877000"),SU=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SP=[0,a(aW),63,5,63,67,[0,a(vj),[0,a(f9),0]]],SN=a(FH),SO=a("7955800"),SQ=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SL=[0,a(aW),96,5,96,67,[0,a(wJ),[0,a(f9),0]]],SJ=a(EX),SK=a("8083100"),SM=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SH=[0,a(aW),dW,5,dW,67,[0,a(b6),[0,a(C3),[0,a(f9),0]]]],SF=a(wo),SG=a("8155800"),SI=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SV=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SE=[0,a(br),dF,14,dF,31,[0,a(Dz),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],SC=a(AN),SD=a("7830000"),Sy=[0,a(a0),34,14,34,36,[0,a(eO),[0,a(a1),0]]],Sz=[0,a(I),nH,11,nH,33,[0,a(J),[0,a(H),[0,a(B),0]]]],Sx=[0,a(I),nH,11,nH,33,[0,a(J),[0,a(H),[0,a(B),0]]]],Su=[0,a(bP),75,14,75,64,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Sq=[0,a(co),[0,a(dh),[0,a(ac),0]]],Sr=[0,a(co),[0,a(dh),0]],Ss=[0,a(co),[0,a(dh),[0,a(ae),0]]],St=[0,a(co),[0,a(dh),0]],Sl=[0,a(dU),83,19,83,67,[0,a(nJ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],Sm=[0,a(I),eY,11,eY,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Sk=[0,a(dU),56,14,56,41,[0,a(nJ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],Sn=[0,a(I),eY,11,eY,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Sj=[0,a(I),eY,11,eY,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Se=[0,a(a0),33,14,33,40,[0,a(eO),[0,a(a1),0]]],R_=[0,a(I),fD,14,fD,46,[0,a(J),[0,a(H),[0,a(B),0]]]],R6=[0,a(I),gf,14,gf,56,[0,a(J),[0,a(H),[0,a(B),0]]]],R5=[1,0],R1=[0,a(I),fK,14,fK,50,[0,a(J),[0,a(H),[0,a(B),0]]]],RV=[0,a(I),fQ,14,fQ,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RP=[0,a(dU),64,14,64,44,[0,a(nJ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],RO=a(_),RK=[0,a(br),di,14,di,35,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],RJ=a(_),RE=[0,a(bP),rm,5,zH,56,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],RD=[1,0],RF=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Ry=[0,a(bP),qQ,5,271,48,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rx=[0,0],Rz=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Rw=[0,a(bP),FF,5,FF,70,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rv=[0,0],RA=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Ru=[0,a(bP),CY,5,CY,69,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rt=[0,0],RB=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Rs=[0,a(bP),om,5,om,60,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rr=[0,0],RC=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],RG=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Rq=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Rm=[0,a(bP),nW,5,nW,70,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rl=[1,0],Rn=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rj=[0,a(bP),j_,5,m0,56,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Ri=[2,0],Rk=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Re=[0,a(bP),264,5,rq,48,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rd=[0,0],Rf=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rc=[0,a(bP),yc,5,yc,69,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rb=[0,0],Rg=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Ra=[0,a(bP),Ab,5,Ab,60,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Q$=[0,0],Rh=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Ro=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Q_=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rp=[0,a(U),[0,a(fn),0]],RH=[0,a(U),[0,a("versement"),0]],RL=[0,a(I),oj,11,oj,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RI=[0,a(I),oj,11,oj,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RM=[0,a(U),[0,a("nombre_enfants_l521_1"),0]],RQ=[0,a(I),oc,11,oc,41,[0,a(J),[0,a(H),[0,a(B),0]]]],RN=[0,a(I),oc,11,oc,41,[0,a(J),[0,a(H),[0,a(B),0]]]],RR=[0,a(U),[0,a("nombre_enfants_alin\xc3\xa9a_2_l521_3"),0]],RS=[0,a(U),[0,a(wT),[0,a(q$),0]]],RT=[0,a(U),[0,a(wT),[0,a(q$),0]]],RW=[0,a(I),fQ,14,fQ,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RX=[0,a(U),[0,a("bmaf.date_courante"),0]],RU=[0,a(I),fQ,14,fQ,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RY=[0,a(U),[0,a(AZ),[0,a(f_),0]]],RZ=[0,a(U),[0,a(AZ),[0,a(f_),0]]],R2=[0,a(I),fK,14,fK,50,[0,a(J),[0,a(H),[0,a(B),0]]]],R3=[0,a(U),[0,a(w$),0]],R0=[0,a(I),fK,14,fK,50,[0,a(J),[0,a(H),[0,a(B),0]]]],R7=[0,a(I),gf,14,gf,56,[0,a(J),[0,a(H),[0,a(B),0]]]],R8=[0,a(U),[0,a(Bm),0]],R4=[0,a(I),gf,14,gf,56,[0,a(J),[0,a(H),[0,a(B),0]]]],R$=[0,a(I),fD,14,fD,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Sa=[0,a(U),[0,a(yX),0]],R9=[0,a(I),fD,14,fD,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Sb=[0,a(U),[0,a(oO),[0,a(co),0]]],Sc=[0,a(U),[0,a(oO),[0,a(co),0]]],Sf=[0,a(a0),33,14,33,40,[0,a(eO),[0,a(a1),0]]],Sg=[0,a(U),[0,a("enfant_le_plus_\xc3\xa2g\xc3\xa9.enfants"),0]],Sd=[0,a(a0),33,14,33,40,[0,a(eO),[0,a(a1),0]]],Sh=[0,a(U),[0,a(Df),[0,a(rl),0]]],Si=[0,a(U),[0,a(Df),[0,a(rl),0]]],So=[0,a(U),[0,a(eP),0]],Sv=[0,a(I),95,11,95,61,[0,a(J),[0,a(H),[0,a(B),0]]]],Sp=[0,a(I),95,11,95,61,[0,a(J),[0,a(H),[0,a(B),0]]]],Sw=[0,a(U),[0,a("enfants_\xc3\xa0_charge_droit_ouvert_prestation_familiale"),0]],SA=[0,a(U),[0,a(kK),0]],SW=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SB=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SX=[0,a(U),[0,a("plafond_II_d521_3"),0]],Th=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],SY=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],Ti=[0,a(U),[0,a("plafond_I_d521_3"),0]],Tq=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Tj=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Tr=[0,a(U),[0,a("droit_ouvert_compl\xc3\xa9ment"),0]],TE=[0,a(U),[0,a(kg),0]],TL=[0,a(I),fX,11,fX,64,[0,a(J),[0,a(H),[0,a(B),0]]]],TF=[0,a(I),fX,11,fX,64,[0,a(J),[0,a(H),[0,a(B),0]]]],TM=[0,a(U),[0,a("montant_initial_base_quatri\xc3\xa8me_enfant_et_plus_mayotte"),0]],UP=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],TN=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],UQ=[0,a(U),[0,a("montant_initial_base_troisi\xc3\xa8me_enfant_mayotte"),0]],UT=[0,a(I),ie,11,ie,31,[0,a(J),[0,a(H),[0,a(B),0]]]],UR=[0,a(I),ie,11,ie,31,[0,a(J),[0,a(H),[0,a(B),0]]]],UU=[0,a(U),[0,a("nombre_total_enfants"),0]],U5=[0,a(I),nZ,11,nZ,31,[0,a(J),[0,a(H),[0,a(B),0]]]],UV=[0,a(I),nZ,11,nZ,31,[0,a(J),[0,a(H),[0,a(B),0]]]],U6=[0,a(U),[0,a("nombre_moyen_enfants"),0]],Wl=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],U7=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Wm=[0,a(U),[0,a("montant_initial_base_premier_enfant"),0]],WA=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wn=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],WB=[0,a(U),[0,a("droit_ouvert_base"),0]],WV=[0,a(U),[0,a(bH),0]],Xb=[0,a(U),[0,a(kR),0]],Xm=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xc=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xn=[0,a(U),[0,a("montant_vers\xc3\xa9_forfaitaire_par_enfant"),0]],XH=[0,a(I),c4,11,c4,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Xo=[0,a(I),c4,11,c4,56,[0,a(J),[0,a(H),[0,a(B),0]]]],XI=[0,a(U),[0,a("montant_initial_base_troisi\xc3\xa8me_enfant_et_plus"),0]],Y3=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XJ=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Y4=[0,a(U),[0,a("montant_initial_base_deuxi\xc3\xa8me_enfant"),0]],Y9=[0,a(I),mG,11,mG,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Y5=[0,a(I),mG,11,mG,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Y_=[0,a(U),[0,a("rapport_enfants_total_moyen"),0]],ZD=[0,a(U),[0,a(ka),0]],ZK=[0,a(I),gU,11,gU,36,[0,a(J),[0,a(H),[0,a(B),0]]]],ZE=[0,a(I),gU,11,gU,36,[0,a(J),[0,a(H),[0,a(B),0]]]],ZL=[0,a(U),[0,a("montant_vers\xc3\xa9_forfaitaire"),0]],ZV=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZM=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZW=[0,a(U),[0,a("montant_initial_base"),0]],_j=[0,a(U),[0,a(j4),0]],_A=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_k=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_B=[0,a(U),[0,a("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_forfaitaire"),0]],_E=[0,a(I),kU,11,kU,43,[0,a(J),[0,a(H),[0,a(B),0]]]],_C=[0,a(I),kU,11,kU,43,[0,a(J),[0,a(H),[0,a(B),0]]]],_F=[0,a(U),[0,a("montant_avec_garde_altern\xc3\xa9e_base"),0]],_U=[0,a(U),[0,a(j$),0]],_Y=[0,a(I),kT,11,kT,29,[0,a(J),[0,a(H),[0,a(B),0]]]],_V=[0,a(I),kT,11,kT,29,[0,a(J),[0,a(H),[0,a(B),0]]]],_Z=[0,a(U),[0,a("montant_vers\xc3\xa9_base"),0]],_8=[0,a(I),iv,11,iv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],_0=[0,a(I),iv,11,iv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],_9=[0,a(U),[0,a("montant_vers\xc3\xa9_majoration"),0]],$a=[0,a(I),m7,11,m7,58,[0,a(J),[0,a(H),[0,a(B),0]]]],__=[0,a(I),m7,11,m7,58,[0,a(J),[0,a(H),[0,a(B),0]]]],$b=[0,a(U),[0,a("montant_base_compl\xc3\xa9ment_pour_base_et_majoration"),0]],$j=[0,a(I),mx,11,mx,59,[0,a(J),[0,a(H),[0,a(B),0]]]],$c=[0,a(I),mx,11,mx,59,[0,a(J),[0,a(H),[0,a(B),0]]]],$k=[0,a(U),[0,a("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_base_et_majoration"),0]],$o=[0,a(I),cd,12,cd,25,[0,a(J),[0,a(H),[0,a(B),0]]]],$l=[0,a(I),cd,12,cd,25,[0,a(J),[0,a(H),[0,a(B),0]]]],$p=[0,a(U),[0,a("montant_vers\xc3\xa9"),0]],$q=[0,a(bP),xb,5,rg,6,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],$r=[0,a(bP),xb,5,rg,6,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Q5=[0,a("examples/allocations_familiales/autres_codes.catala_fr"),24,5,24,63,[0,a("Article L821-3"),[0,a(z0),[0,a(E1),[0,a(yn),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]]]],Q6=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q1=[0,a(bP),60,5,62,62,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Q2=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q0=[0,a(bP),49,5,50,50,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Q3=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q4=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q7=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],QZ=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q8=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],QY=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],QU=[0,a(bP),68,5,71,56,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],QV=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],QT=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],QW=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],QS=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],QO=[0,a(dU),nW,18,nW,41,[0,a(xH),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(c7),[0,a(af),0]]]]]]],QM=a(oS),QN=a(n0),QP=[0,a(I),59,11,59,27,[0,a(bE),[0,a(H),[0,a(B),0]]]],QL=[0,a(dU),31,14,31,30,[0,a(lU),[0,a(nR),[0,a(ed),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],QJ=a(oS),QK=a(n0),Qy=[5,0],Qz=[4,0],QA=[3,0],QB=[2,0],QC=[1,0],QD=[0,0],QE=[0,a(bP),yQ,5,rL,30,[0,a(CJ),[0,a(yw),[0,a(ke),[0,a(d0),[0,a(ab),[0,a(af),0]]]]]]],QF=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qx=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qr=[0,a(I),68,14,68,28,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qn=[0,a(I),69,14,69,32,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qj=[0,a(dU),21,14,21,26,[0,a(lU),[0,a(nR),[0,a(ed),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],Qk=[0,a(I),60,12,60,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qi=[0,a(I),60,12,60,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Ql=[0,a(co),[0,a(y7),0]],Qo=[0,a(I),69,14,69,32,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qp=[0,a(co),[0,a(Fa),0]],Qm=[0,a(I),69,14,69,32,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qs=[0,a(I),68,14,68,28,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qt=[0,a(co),[0,a(DE),0]],Qq=[0,a(I),68,14,68,28,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qu=[0,a(co),[0,a(ge),[0,a(ho),0]]],Qv=[0,a(co),[0,a(ge),[0,a(ho),0]]],QG=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qw=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],QH=[0,a(co),[0,a(vk),0]],QQ=[0,a(I),59,11,59,27,[0,a(bE),[0,a(H),[0,a(B),0]]]],QI=[0,a(I),59,11,59,27,[0,a(bE),[0,a(H),[0,a(B),0]]]],QR=[0,a(co),[0,a(Ae),0]],QX=[0,a(co),[0,a(iU),0]],Q9=[0,a(co),[0,a(dh),0]],Qe=[0,a(eC),28,5,29,33,[0,a(Cn),[0,a(cf),0]]],Qd=a(xO),Qf=[0,a(eC),6,12,6,19,[0,a(cf),0]],Qb=[0,a(eC),48,5,49,33,[0,a(AH),[0,a(cf),0]]],Qa=a(xm),Qc=[0,a(eC),6,12,6,19,[0,a(cf),0]],P_=[0,a(eC),64,5,65,33,[0,a(Ca),[0,a(cf),0]]],P9=a(BY),P$=[0,a(eC),6,12,6,19,[0,a(cf),0]],P7=[0,a(eC),82,5,83,33,[0,a(wV),[0,a(cf),0]]],P6=a(BS),P8=[0,a(eC),6,12,6,19,[0,a(cf),0]],Qg=[0,a(eC),6,12,6,19,[0,a(cf),0]],P5=[0,a(eC),6,12,6,19,[0,a(cf),0]],Qh=[0,a(f_),[0,a(bQ),0]],PT=[7,0],PU=[5,0],PV=[4,0],PW=[3,0],PX=[2,0],PY=[1,0],PZ=[0,0],P0=[6,0],P1=[0,a(bu),29,5,38,6,[0,a(b6),[0,a(lT),[0,a(aC),0]]]],PS=a(wM),P2=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],PP=[8,0],PQ=[0,a(bu),47,5,49,6,[0,a(b6),[0,a(lT),[0,a(aC),0]]]],PO=a(xL),PR=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],PE=[7,0],PF=[5,0],PG=[4,0],PH=[3,0],PI=[2,0],PJ=[1,0],PK=[0,0],PL=[6,0],PM=[0,a(bu),68,5,77,6,[0,a(b6),[0,a(nO),[0,a(aC),0]]]],PD=a(AO),PN=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],PA=[8,0],PB=[0,a(bu),86,5,88,6,[0,a(b6),[0,a(nO),[0,a(aC),0]]]],Pz=a(vc),PC=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Pp=[7,0],Pq=[5,0],Pr=[4,0],Ps=[3,0],Pt=[2,0],Pu=[1,0],Pv=[0,0],Pw=[6,0],Px=[0,a(bu),c4,5,bp,6,[0,a(b6),[0,a(lW),[0,a(aC),0]]]],Po=a(Br),Py=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Pl=[8,0],Pm=[0,a(bu),cs,5,cQ,6,[0,a(b6),[0,a(lW),[0,a(aC),0]]]],Pk=a(EE),Pn=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Pa=[7,0],Pb=[5,0],Pc=[4,0],Pd=[3,0],Pe=[2,0],Pf=[1,0],Pg=[0,0],Ph=[6,0],Pi=[0,a(bu),eY,5,fK,6,[0,a(b6),[0,a(nl),[0,a(aC),0]]]],O$=a(BJ),Pj=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],O8=[8,0],O9=[0,a(bu),qT,5,nU,6,[0,a(b6),[0,a(nl),[0,a(aC),0]]]],O7=a(wZ),O_=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OX=[7,0],OY=[5,0],OZ=[4,0],O0=[3,0],O1=[2,0],O2=[1,0],O3=[0,0],O4=[6,0],O5=[0,a(bu),h1,5,iM,6,[0,a(fW),[0,a(mL),[0,a(aC),0]]]],OW=a(zK),O6=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OT=[8,0],OU=[0,a(bu),w4,5,yA,6,[0,a(fW),[0,a(mL),[0,a(aC),0]]]],OS=a(ED),OV=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OI=[7,0],OJ=[5,0],OK=[4,0],OL=[3,0],OM=[2,0],ON=[1,0],OO=[0,0],OP=[6,0],OQ=[0,a(bu),vI,5,E3,6,[0,a(fW),[0,a(oo),[0,a(aC),0]]]],OH=a(El),OR=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OE=[8,0],OF=[0,a(bu),E$,5,vE,6,[0,a(fW),[0,a(oo),[0,a(aC),0]]]],OD=a(Fk),OG=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Ot=[7,0],Ou=[5,0],Ov=[4,0],Ow=[3,0],Ox=[2,0],Oy=[1,0],Oz=[0,0],OA=[6,0],OB=[0,a(bu),rq,5,nT,6,[0,a(b6),[0,a(m8),[0,a(aC),0]]]],Os=a(v9),OC=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Op=[8,0],Oq=[0,a(bu),A9,5,ni,6,[0,a(b6),[0,a(m8),[0,a(aC),0]]]],Oo=a(zJ),Or=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],P3=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],On=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],P4=[0,a(ho),[0,a(z2),0]],Ok=[0,a(a0),12,14,12,25,[0,a(eO),[0,a(a1),0]]],Og=[2,0],Oh=a(p),Oi=[1,0],Oj=a("-1"),Ol=[0,a(I),80,12,80,23,[0,a(J),[0,a(H),[0,a(B),0]]]],Of=[0,a(I),80,12,80,23,[0,a(J),[0,a(H),[0,a(B),0]]]],Om=[0,a(rl),[0,a("le_plus_\xc3\xa2g\xc3\xa9"),0]],Oc=[0,a(dU),78,14,78,41,[0,a(nJ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],Od=[0,a(I),76,12,76,39,[0,a(J),[0,a(H),[0,a(B),0]]]],Ob=[0,a(I),76,12,76,39,[0,a(J),[0,a(H),[0,a(B),0]]]],Oe=[0,a(q$),[0,a(eP),0]],N5=a(qH),N6=a(qW),N7=a(EZ),N8=a(q3),N9=a(q4),N_=a(rE),N$=a(rw),Oa=[0,a("Enfant"),0],NV=a(mw),NX=a(oy),NY=a(l$),NZ=a(Dp),N0=a(yR),N1=a(o9),N2=a(C0),N3=a(no),N4=a(oK),NW=[0,a(BT),0],NM=a(ol),NO=a(U),NP=a(qV),NQ=a(nY),NR=a(DP),NS=a(i0),NT=a(BQ),NU=a(yW),NN=[0,a(FP),0],NH=a("Compl\xc3\xa8te"),NJ=a("Partag\xc3\xa9e"),NK=a("Z\xc3\xa9ro"),NI=[0,a("PriseEnCompte"),0],ND=a(ks),NF=a(kh),NG=a(Cg),NE=[0,a(CS),0],Nx=a(A3),Nz=a(D1),NA=a(j7),NB=a(Fs),NC=a(yI),Ny=[0,a("PriseEnCharge"),0],abb=a(aa),aaN=a(mw),aaO=a(oy),aaP=a(wv),aaQ=a(l$),aaR=a(oK),aaS=a(Fl),aaT=a(xg),aaU=a(o9),aaV=a(no),aaX=[7,0],aaY=[5,0],aaZ=[4,0],aa0=[6,0],aa1=[8,0],aa2=[2,0],aa3=[3,0],aa4=[1,0],aa5=[0,0],aaW=[0,[11,a(bg),[2,0,[11,a(BO),0]]],a(wO)],aaw=a(v0),aax=a(x8),aay=a(nY),aaz=a(EA),aaA=a(i0),aaB=a(U),aaC=a(qw),aaD=a(ol),aaF=[0,0],aaG=[2,0],aaH=[1,0],aaI=[5,0],aaJ=[6,0],aaK=[3,0],aaL=[7,0],aaM=[4,0],aaE=[0,[11,a(bg),[2,0,[11,a(D2),0]]],a(FR)],aap=a(r4),aaq=a(ks),aar=a(kh),aat=[1,0],aau=[0,0],aav=[2,0],aas=[0,[11,a(bg),[2,0,[11,a(x2),0]]],a(wz)],aae=a(j7),aaf=a(rb),aag=a(qP),aah=a(rt),aai=a(qM),aak=[4,0],aal=[3,0],aam=[0,0],aan=[1,0],aao=[2,0],aaj=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PriseEnCharge.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PriseEnCharge.t'")],aac=[0,a(B$),a(o3),a(ge),a(DA),a(FL),a(v6),a(xi)],aad=[0,a(ge),a(v6),a(FL),a(xi),a(o3),a(B$),a(DA)],abj=a("AllocationsFamilialesLib"),bt1=[0,a(fc),zO,14,zO,25,[0,a("Conseil d'\xc3\x89tat, 5\xc3\xa8me - 4\xc3\xa8me chambres r\xc3\xa9unies, 21/07/2017, 398563"),0]],btU=a(p),btV=a(p),bt0=a(b5),btW=[0,a(a6),[0,a(aw),[0,a(ac),0]]],btX=[0,a(a6),[0,a(aw),0]],btY=[0,a(a6),[0,a(aw),[0,a(ae),0]]],btZ=[0,a(a6),[0,a(aw),0]],btQ=[0,a(d),xw,14,xw,63,[0,a(bf),[0,a(e),0]]],btM=[0,a(d),vZ,14,vZ,25,[0,a(bf),[0,a(e),0]]],btG=[0,a(d),iI,5,iI,70,[0,a(bf),[0,a(e),0]]],btC=[0,a(d),hj,14,hj,58,[0,a(bf),[0,a(e),0]]],bty=[0,a(d),h5,14,h5,54,[0,a(bf),[0,a(e),0]]],btu=[0,a(d),fb,14,fb,51,[0,a(bf),[0,a(e),0]]],bto=[0,a(d),hi,14,hi,59,[0,a(bf),[0,a(e),0]]],btk=[0,a(d),iq,14,iq,38,[0,a(bf),[0,a(e),0]]],btg=[0,a(d),gL,14,gL,34,[0,a(bf),[0,a(e),0]]],btc=[0,a(d),io,14,io,31,[0,a(bf),[0,a(e),0]]],bs_=[0,a(d),AD,14,AD,48,[0,a(bf),[0,a(e),0]]],bs$=[0,a(d),ns,11,ns,45,[0,a(bf),[0,a(e),0]]],bs9=[0,a(d),ns,11,ns,45,[0,a(bf),[0,a(e),0]]],bta=[0,a(cO),[0,a("m\xc3\xa9nage_sans_enfants_garde_altern\xc3\xa9e"),0]],btd=[0,a(d),io,14,io,31,[0,a(bf),[0,a(e),0]]],bte=[0,a(cO),[0,a("calculette.m\xc3\xa9nage"),0]],btb=[0,a(d),io,14,io,31,[0,a(bf),[0,a(e),0]]],bth=[0,a(d),gL,14,gL,34,[0,a(bf),[0,a(e),0]]],bti=[0,a(cO),[0,a("calculette.demandeur"),0]],btf=[0,a(d),gL,14,gL,34,[0,a(bf),[0,a(e),0]]],btl=[0,a(d),iq,14,iq,38,[0,a(bf),[0,a(e),0]]],btm=[0,a(cO),[0,a("calculette.date_courante"),0]],btj=[0,a(d),iq,14,iq,38,[0,a(bf),[0,a(e),0]]],btp=[0,a(d),hi,14,hi,59,[0,a(bf),[0,a(e),0]]],btq=[0,a(cO),[0,a("calculette.ressources_m\xc3\xa9nage_prises_en_compte"),0]],btn=[0,a(d),hi,14,hi,59,[0,a(bf),[0,a(e),0]]],btr=[0,a(cO),[0,a(D0),[0,a(a6),0]]],bts=[0,a(cO),[0,a(D0),[0,a(a6),0]]],btv=[0,a(d),fb,14,fb,51,[0,a(bf),[0,a(e),0]]],btw=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.m\xc3\xa9nage"),0]],btt=[0,a(d),fb,14,fb,51,[0,a(bf),[0,a(e),0]]],btz=[0,a(d),h5,14,h5,54,[0,a(bf),[0,a(e),0]]],btA=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.demandeur"),0]],btx=[0,a(d),h5,14,h5,54,[0,a(bf),[0,a(e),0]]],btD=[0,a(d),hj,14,hj,58,[0,a(bf),[0,a(e),0]]],btE=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.date_courante"),0]],btB=[0,a(d),hj,14,hj,58,[0,a(bf),[0,a(e),0]]],btH=[0,a(d),iI,5,iI,70,[0,a(bf),[0,a(e),0]]],btI=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.ressources_m\xc3\xa9nage_prises_en_compte"),0]],btF=[0,a(d),iI,5,iI,70,[0,a(bf),[0,a(e),0]]],btJ=[0,a(cO),[0,a(wU),[0,a(a6),0]]],btK=[0,a(cO),[0,a(wU),[0,a(a6),0]]],btN=[0,a(d),o2,12,o2,23,[0,a(bf),[0,a(e),0]]],btL=[0,a(d),o2,12,o2,23,[0,a(bf),[0,a(e),0]]],btO=[0,a(cO),[0,a(n_),0]],btR=[0,a(d),mo,11,mo,60,[0,a(bf),[0,a(e),0]]],btP=[0,a(d),mo,11,mo,60,[0,a(bf),[0,a(e),0]]],btS=[0,a(cO),[0,a(kD),0]],bt2=[0,a(d),l9,12,l9,23,[0,a(bf),[0,a(e),0]]],btT=[0,a(d),l9,12,l9,23,[0,a(bf),[0,a(e),0]]],bt3=[0,a(cO),[0,a("aide_finale"),0]],bs5=[0,a(aG),gd,14,gd,33,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsW=a(p),bsX=[0,a(cR),[0,a(aw),[0,a(ac),0]]],bsY=[0,a(cR),[0,a(aw),0]],bsZ=[0,a(cR),[0,a(aw),[0,a(ae),0]]],bs0=[0,a(cR),[0,a(aw),0]],bs1=[0,a(cS),[0,a(aw),[0,a(ac),0]]],bs2=[0,a(cS),[0,a(aw),0]],bs3=[0,a(cS),[0,a(aw),[0,a(ae),0]]],bs4=[0,a(cS),[0,a(aw),0]],bsS=[0,a(aG),f6,14,f6,36,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsK=[0,a(cS),[0,a(aw),[0,a(ac),0]]],bsL=[0,a(cS),[0,a(aw),0]],bsM=[0,a(cS),[0,a(aw),[0,a(ae),0]]],bsN=[0,a(cS),[0,a(aw),0]],bsO=[0,a(cR),[0,a(aw),[0,a(ac),0]]],bsP=[0,a(cR),[0,a(aw),0]],bsQ=[0,a(cR),[0,a(aw),[0,a(ae),0]]],bsR=[0,a(cR),[0,a(aw),0]],bsT=[0,a(d),hZ,12,hZ,34,[0,a(ax),[0,a(e),0]]],bsJ=[0,a(d),hZ,12,hZ,34,[0,a(ax),[0,a(e),0]]],bsG=[0,a(aG),hZ,14,hZ,25,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsC=[0,a(d),v8,14,v8,63,[0,a(ax),[0,a(e),0]]],bsw=[0,a(d),gB,14,gB,62,[0,a(ax),[0,a(e),0]]],bss=[0,a(d),i8,14,i8,53,[0,a(ax),[0,a(e),0]]],bso=[0,a(d),hM,5,hM,65,[0,a(ax),[0,a(e),0]]],bsk=[0,a(d),hP,14,hP,68,[0,a(ax),[0,a(e),0]]],bsg=[0,a(d),gd,14,gd,66,[0,a(ax),[0,a(e),0]]],bsc=[0,a(aG),dC,14,dC,58,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsb=[0,0],br9=[0,a(d),ij,14,ij,64,[0,a(ax),[0,a(e),0]]],br3=[0,a(aG),dw,14,dw,50,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],br0=[2,0],br1=[1,0],br2=[2,0],brW=[0,a(d),jm,14,jm,54,[0,a(ax),[0,a(e),0]]],brS=[0,a(d),f6,14,f6,45,[0,a(ax),[0,a(e),0]]],brO=[0,a(d),h4,14,h4,66,[0,a(ax),[0,a(e),0]]],brK=[0,a(d),hK,14,hK,60,[0,a(ax),[0,a(e),0]]],brG=[0,a(d),i4,14,i4,58,[0,a(ax),[0,a(e),0]]],brC=[0,a(d),iX,14,iX,56,[0,a(ax),[0,a(e),0]]],brw=[0,a(d),i3,14,i3,67,[0,a(ax),[0,a(e),0]]],brs=[0,a(d),dC,14,dC,63,[0,a(ax),[0,a(e),0]]],bro=[0,a(d),iR,14,iR,60,[0,a(ax),[0,a(e),0]]],bri=[0,a(aG),h2,5,h2,74,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bre=[0,a(d),dw,14,dw,55,[0,a(ax),[0,a(e),0]]],bra=[0,a(d),gP,14,gP,52,[0,a(ax),[0,a(e),0]]],bq8=[0,a(d),gc,14,gc,59,[0,a(ax),[0,a(e),0]]],bq9=[0,a(d),gc,14,gc,59,[0,a(ax),[0,a(e),0]]],bq_=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.date_courante"),0]],bq7=[0,a(d),gc,14,gc,59,[0,a(ax),[0,a(e),0]]],brb=[0,a(d),gP,14,gP,52,[0,a(ax),[0,a(e),0]]],brc=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.m\xc3\xa9nage"),0]],bq$=[0,a(d),gP,14,gP,52,[0,a(ax),[0,a(e),0]]],brf=[0,a(d),dw,14,dw,55,[0,a(ax),[0,a(e),0]]],brg=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.demandeur"),0]],brd=[0,a(d),dw,14,dw,55,[0,a(ax),[0,a(e),0]]],brj=[0,a(aG),h2,5,h2,74,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],brk=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.b\xc3\xa9n\xc3\xa9ficie_aide_personnalis\xc3\xa9e_logement"),0]],brh=[0,a(aG),h2,5,h2,74,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],brl=[0,a(a6),[0,a(u4),[0,a(cb),0]]],brm=[0,a(a6),[0,a(u4),[0,a(cb),0]]],brp=[0,a(d),iR,14,iR,60,[0,a(ax),[0,a(e),0]]],brq=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.m\xc3\xa9nage"),0]],brn=[0,a(d),iR,14,iR,60,[0,a(ax),[0,a(e),0]]],brt=[0,a(d),dC,14,dC,63,[0,a(ax),[0,a(e),0]]],bru=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.demandeur"),0]],brr=[0,a(d),dC,14,dC,63,[0,a(ax),[0,a(e),0]]],brx=[0,a(d),i3,14,i3,67,[0,a(ax),[0,a(e),0]]],bry=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.date_courante"),0]],brv=[0,a(d),i3,14,i3,67,[0,a(ax),[0,a(e),0]]],brz=[0,a(a6),[0,a(C9),[0,a(b7),0]]],brA=[0,a(a6),[0,a(C9),[0,a(b7),0]]],brD=[0,a(d),iX,14,iX,56,[0,a(ax),[0,a(e),0]]],brE=[0,a(a6),[0,a("calcul_allocation_logement.mode_occupation"),0]],brB=[0,a(d),iX,14,iX,56,[0,a(ax),[0,a(e),0]]],brH=[0,a(d),i4,14,i4,58,[0,a(ax),[0,a(e),0]]],brI=[0,a(a6),[0,a("calcul_allocation_logement.ressources_m\xc3\xa9nage_sans_arrondi"),0]],brF=[0,a(d),i4,14,i4,58,[0,a(ax),[0,a(e),0]]],brL=[0,a(d),hK,14,hK,60,[0,a(ax),[0,a(e),0]]],brM=[0,a(a6),[0,a("calcul_allocation_logement.situation_familiale"),0]],brJ=[0,a(d),hK,14,hK,60,[0,a(ax),[0,a(e),0]]],brP=[0,a(d),h4,14,h4,66,[0,a(ax),[0,a(e),0]]],brQ=[0,a(a6),[0,a("calcul_allocation_logement.nombre_personnes_\xc3\xa0_charge"),0]],brN=[0,a(d),h4,14,h4,66,[0,a(ax),[0,a(e),0]]],brT=[0,a(d),f6,14,f6,45,[0,a(ax),[0,a(e),0]]],brU=[0,a(a6),[0,a("calcul_allocation_logement.zone"),0]],brR=[0,a(d),f6,14,f6,45,[0,a(ax),[0,a(e),0]]],brX=[0,a(d),jm,14,jm,54,[0,a(ax),[0,a(e),0]]],brY=[0,a(a6),[0,a("calcul_allocation_logement.date_courante"),0]],brV=[0,a(d),jm,14,jm,54,[0,a(ax),[0,a(e),0]]],br4=[0,a(aG),dw,14,dw,50,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],br5=[0,a(a6),[0,a("calcul_allocation_logement.type_aide"),0]],brZ=[0,a(aG),dw,14,dw,50,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],br6=[0,a(a6),[0,a(Em),[0,a(cR),0]]],br7=[0,a(a6),[0,a(Em),[0,a(cR),0]]],br_=[0,a(d),ij,14,ij,64,[0,a(ax),[0,a(e),0]]],br$=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.mode_occupation"),0]],br8=[0,a(d),ij,14,ij,64,[0,a(ax),[0,a(e),0]]],bsd=[0,a(aG),dC,14,dC,58,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bse=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.type_aide"),0]],bsa=[0,a(aG),dC,14,dC,58,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsh=[0,a(d),gd,14,gd,66,[0,a(ax),[0,a(e),0]]],bsi=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.ressources_m\xc3\xa9nage_sans_arrondi"),0]],bsf=[0,a(d),gd,14,gd,66,[0,a(ax),[0,a(e),0]]],bsl=[0,a(d),hP,14,hP,68,[0,a(ax),[0,a(e),0]]],bsm=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.situation_familiale"),0]],bsj=[0,a(d),hP,14,hP,68,[0,a(ax),[0,a(e),0]]],bsp=[0,a(d),hM,5,hM,65,[0,a(ax),[0,a(e),0]]],bsq=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.nombre_personnes_\xc3\xa0_charge"),0]],bsn=[0,a(d),hM,5,hM,65,[0,a(ax),[0,a(e),0]]],bst=[0,a(d),i8,14,i8,53,[0,a(ax),[0,a(e),0]]],bsu=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.zone"),0]],bsr=[0,a(d),i8,14,i8,53,[0,a(ax),[0,a(e),0]]],bsx=[0,a(d),gB,14,gB,62,[0,a(ax),[0,a(e),0]]],bsy=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.date_courante"),0]],bsv=[0,a(d),gB,14,gB,62,[0,a(ax),[0,a(e),0]]],bsz=[0,a(a6),[0,a(zl),[0,a(cS),0]]],bsA=[0,a(a6),[0,a(zl),[0,a(cS),0]]],bsD=[0,a(d),l6,12,l6,61,[0,a(ax),[0,a(e),0]]],bsB=[0,a(d),l6,12,l6,61,[0,a(ax),[0,a(e),0]]],bsE=[0,a(a6),[0,a(kD),0]],bsH=[0,a(d),nr,12,nr,23,[0,a(ax),[0,a(e),0]]],bsF=[0,a(d),nr,12,nr,23,[0,a(ax),[0,a(e),0]]],bsI=[0,a(a6),[0,a(n_),0]],bsU=[0,a(a6),[0,a(aw),0]],bs6=[0,a(d),o5,12,o5,31,[0,a(ax),[0,a(e),0]]],bsV=[0,a(d),o5,12,o5,31,[0,a(ax),[0,a(e),0]]],bs7=[0,a(a6),[0,a(cX),0]],bq4=[0,a(E),Bk,14,Bk,33,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bq0=[0,a(E),vY,14,vY,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bq1=[0,a(d),oi,12,oi,34,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bqZ=[0,a(d),oi,12,oi,34,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bqW=[0,a(E),Bb,14,Bb,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqP=[0,a(V),[0,a(aw),[0,a(ac),0]]],bqQ=[0,a(V),[0,a(aw),0]],bqR=[0,a(V),[0,a(aw),[0,a(ae),0]]],bqS=[0,a(V),[0,a(aw),0]],bqE=[0,a(bh),[0,a(aw),[0,a(ac),0]]],bqF=[0,a(bh),[0,a(aw),0]],bqG=[0,a(bh),[0,a(aw),[0,a(ae),0]]],bqH=[0,a(bh),[0,a(aw),0]],bqu=[0,a(V),[0,a(aw),[0,a(ac),0]]],bqv=[0,a(V),[0,a(aw),0]],bqw=[0,a(V),[0,a(aw),[0,a(ae),0]]],bqx=[0,a(V),[0,a(aw),0]],bql=[0,a(ao),[0,a(aw),[0,a(ac),0]]],bqm=[0,a(ao),[0,a(aw),0]],bqn=[0,a(ao),[0,a(aw),[0,a(ae),0]]],bqo=[0,a(ao),[0,a(aw),0]],bqa=[0,a(bh),[0,a(aw),[0,a(ac),0]]],bqb=[0,a(bh),[0,a(aw),0]],bqc=[0,a(bh),[0,a(aw),[0,a(ae),0]]],bqd=[0,a(bh),[0,a(aw),0]],bqh=a(p),bqi=a(p),bp9=[0,a(E),1539,16,1542,39,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bp_=[0,a(bh),[0,a(bo),[0,a(ac),0]]],bp$=[0,a(bh),[0,a(bo),0]],bqe=[0,a(E),1524,9,1545,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqf=[0,a(bh),[0,a(bo),[0,a(ae),0]]],bqg=[0,a(bh),[0,a(bo),0]],bqj=[0,a(ao),[0,a(bo),[0,a(ac),0]]],bqk=[0,a(ao),[0,a(bo),0]],bqp=[0,a(E),1588,9,1599,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqq=[0,a(ao),[0,a(bo),[0,a(ae),0]]],bqr=[0,a(ao),[0,a(bo),0]],bqs=[0,a(V),[0,a(bo),[0,a(ac),0]]],bqt=[0,a(V),[0,a(bo),0]],bqy=[0,a(E),1609,10,1624,11,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqz=[0,a(V),[0,a(bo),[0,a(ae),0]]],bqA=[0,a(V),[0,a(bo),0]],bqL=a(p),bqM=a(p),bqB=[0,a(E),1571,16,1574,39,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqC=[0,a(bh),[0,a(bo),[0,a(ac),0]]],bqD=[0,a(bh),[0,a(bo),0]],bqI=[0,a(E),zt,9,1577,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqJ=[0,a(bh),[0,a(bo),[0,a(ae),0]]],bqK=[0,a(bh),[0,a(bo),0]],bqN=[0,a(V),[0,a(bo),[0,a(ac),0]]],bqO=[0,a(V),[0,a(bo),0]],bqT=[0,a(E),1636,10,1651,11,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqU=[0,a(V),[0,a(bo),[0,a(ae),0]]],bqV=[0,a(V),[0,a(bo),0]],bp5=[0,a(Q),88,14,88,44,[0,a(cG),[0,a(bX),[0,a(L),0]]]],bpZ=[0,0],bp0=[1,0],bp1=[1,0],bp2=[1,0],bp3=[0,0],bp4=[1,0],bpV=[0,a(E),EM,14,EM,31,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bpS=a(c5),bpT=a(B5),bpU=a(qY),bpO=[0,a(E),so,14,so,34,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bpP=[0,a(d),mP,11,mP,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpN=[0,a(d),mP,11,mP,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpQ=[0,a(cR),[0,a(xM),0]],bpW=[0,a(d),nb,10,nb,22,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpR=[0,a(d),nb,10,nb,22,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpX=[0,a(cR),[0,a(xf),0]],bp6=[0,a(d),mD,11,mD,41,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpY=[0,a(d),mD,11,mD,41,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bp7=[0,a(cR),[0,a(y6),0]],bqX=[0,a(d),mU,11,mU,33,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bp8=[0,a(d),mU,11,mU,33,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bqY=[0,a(cR),[0,a(Fi),0]],bq2=[0,a(cR),[0,a(aw),0]],bq5=[0,a(d),kL,12,kL,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bq3=[0,a(d),kL,12,kL,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bq6=[0,a(cR),[0,a(cX),0]],bpI=[0,a(aG),vw,5,vw,73,[0,a("Article L841-3"),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpH=[2,0],bpJ=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpF=[0,a(aG),fb,5,1140,28,[0,a("Article L841-4"),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpE=[0,0],bpG=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpK=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpD=[0,a(aG),vA,14,vA,25,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpz=[0,0],bpA=[0,0],bpB=[1,0],bpC=[2,0],bpp=a(p),bpq=[0,a(aG),1002,5,1006,29,[0,a(im),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpr=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpk=a(z),bpl=[0,a(aG),979,5,kL,13,[0,a(im),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpm=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpf=[0,a(aU),[0,a(fj),[0,a(ac),0]]],bpg=[0,a(aU),[0,a(fj),0]],bph=[0,a(aU),[0,a(fj),[0,a(ae),0]]],bpi=[0,a(aU),[0,a(fj),0]],bpe=a(z),bpj=[0,a(aG),961,5,963,9,[0,a(im),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpn=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpo=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bps=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bo9=[2,0],bpc=[0,0],bo_=[0,a(cq),[0,a(dh),[0,a(ac),0]]],bo$=[0,a(cq),[0,a(dh),0]],bpa=[0,a(cq),[0,a(dh),[0,a(ae),0]]],bpb=[0,a(cq),[0,a(dh),0]],bo8=a(p),bpd=[0,a(aG),922,5,kz,29,[0,a(im),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpt=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bo1=[2,0],bo6=[0,0],bo2=[0,a(cq),[0,a(dh),[0,a(ac),0]]],bo3=[0,a(cq),[0,a(dh),0]],bo4=[0,a(cq),[0,a(dh),[0,a(ae),0]]],bo5=[0,a(cq),[0,a(dh),0]],bo0=a(z),bo7=[0,a(aG),890,5,911,8,[0,a(im),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpu=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],boV=[4,0],boW=[3,0],boX=[1,0],boY=[0,0],boZ=[0,a(aG),870,5,875,6,[0,a(im),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpv=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],boU=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],boQ=[0,a(aG),xs,14,xs,25,[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]],boO=[0,0],boP=[2,0],boK=[0,a(d),hn,14,hn,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],boG=[0,a(d),B8,14,B8,63,[0,a(aK),[0,a(i),[0,a(e),0]]]],boA=[0,a(E),nf,9,nf,55,[0,a(oh),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boB=[0,a(E),nf,9,nf,55,[0,a(oh),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boC=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_surface"),0]],box=[0,a(E),nj,9,nj,68,[0,a(oh),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boy=[0,a(E),nj,9,nj,68,[0,a(oh),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boz=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_r\xc3\xa9sidence_principale"),0]],bou=[0,a(d),gz,14,gz,47,[0,a(aK),[0,a(i),[0,a(e),0]]]],boq=[0,a(d),i9,14,i9,43,[0,a(aK),[0,a(i),[0,a(e),0]]]],bom=[0,a(d),iZ,14,iZ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bod=[0,a(E),4364,5,4369,28,[0,a(oH),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boe=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boc=[0,a(E),4347,5,4352,28,[0,a(oH),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bof=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bob=[0,a(E),4330,5,4337,28,[0,a(oH),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bog=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boh=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boa=[0,a(E),4300,5,4302,28,[0,a(oH),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boi=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn$=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn5=[0,a(d),hp,14,hp,46,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn4=[6,0],bn0=[0,a(d),jp,14,jp,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnZ=[1,0],bnV=[0,a(d),h9,14,h9,50,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnR=[0,a(E),rS,14,rS,28,[0,a("Article D841-1"),[0,a("Chapitre 1 : Champ d'application"),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]],bnS=[0,a(d),nM,11,nM,25,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnQ=[0,a(d),nM,11,nM,25,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnT=[0,a(cb),[0,a("dur\xc3\xa9e_l841_1_3"),0]],bnW=[0,a(d),h9,14,h9,50,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnX=[0,a(cb),[0,a(w$),0]],bnU=[0,a(d),h9,14,h9,50,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn1=[0,a(d),jp,14,jp,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn2=[0,a(cb),[0,a(Bm),0]],bnY=[0,a(d),jp,14,jp,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn6=[0,a(d),hp,14,hp,46,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn7=[0,a(cb),[0,a(yX),0]],bn3=[0,a(d),hp,14,hp,46,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn8=[0,a(cb),[0,a(oO),[0,a(cq),0]]],bn9=[0,a(cb),[0,a(oO),[0,a(cq),0]]],boj=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn_=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bok=[0,a(cb),[0,a("condition_accession_propri\xc3\xa9t\xc3\xa9"),0]],bon=[0,a(d),iZ,14,iZ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boo=[0,a(cb),[0,a(vF),0]],bol=[0,a(d),iZ,14,iZ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bor=[0,a(d),i9,14,i9,43,[0,a(aK),[0,a(i),[0,a(e),0]]]],bos=[0,a(cb),[0,a(Bj),0]],bop=[0,a(d),i9,14,i9,43,[0,a(aK),[0,a(i),[0,a(e),0]]]],bov=[0,a(d),gz,14,gz,47,[0,a(aK),[0,a(i),[0,a(e),0]]]],bow=[0,a(cb),[0,a(F6),0]],bot=[0,a(d),gz,14,gz,47,[0,a(aK),[0,a(i),[0,a(e),0]]]],boD=[0,a(cb),[0,a(oF),[0,a(aU),0]]],boE=[0,a(cb),[0,a(oF),[0,a(aU),0]]],boH=[0,a(d),f2,12,f2,61,[0,a(aK),[0,a(i),[0,a(e),0]]]],boF=[0,a(d),f2,12,f2,61,[0,a(aK),[0,a(i),[0,a(e),0]]]],boI=[0,a(cb),[0,a(kD),0]],boL=[0,a(d),oR,12,oR,54,[0,a(aK),[0,a(i),[0,a(e),0]]]],boJ=[0,a(d),oR,12,oR,54,[0,a(aK),[0,a(i),[0,a(e),0]]]],boM=[0,a(cb),[0,a(r7),0]],boR=[0,a(d),nc,10,nc,31,[0,a(aK),[0,a(i),[0,a(e),0]]]],boN=[0,a(d),nc,10,nc,31,[0,a(aK),[0,a(i),[0,a(e),0]]]],boS=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_dispositions_communes"),0]],bpw=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],boT=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpx=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement_familiale"),0]],bpL=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpy=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpM=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_l841_2"),0]],bnM=[0,a(aG),gJ,5,593,36,[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]],bnN=[0,a(d),f3,12,f3,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnL=[0,a(d),f3,12,f3,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnH=[0,a(d),ne,14,ne,56,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnD=[0,a(d),ru,14,ru,63,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnt=[0,a(E),3693,5,3698,30,[0,a("Article R832-21"),[0,a("Sous-Section 1 : Conditions d'assimilation des logements-foyers aux logements \xc3\xa0 usage locatif"),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],bnu=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnp=[0,a(b7),[0,a(kj),[0,a(ac),0]]],bnq=[0,a(b7),[0,a(kj),0]],bnr=[0,a(b7),[0,a(kj),[0,a(ae),0]]],bns=[0,a(b7),[0,a(kj),0]],bno=[0,a(aG),kS,5,704,30,[0,a(mf),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bnv=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnn=[0,a(aG),Y,5,kp,30,[0,a(mf),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bnw=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnm=[0,a(aG),kc,5,650,30,[0,a(mf),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bnx=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bni=[0,a(b7),[0,a(j3),[0,a(ac),0]]],bnj=[0,a(b7),[0,a(j3),0]],bnk=[0,a(b7),[0,a(j3),[0,a(ae),0]]],bnl=[0,a(b7),[0,a(j3),0]],bnh=[0,a(aG),kf,5,623,30,[0,a(mf),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bny=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnz=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bng=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bna=[0,a(d),gO,14,gO,47,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm8=[0,a(d),hg,14,hg,43,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm4=[0,a(d),hJ,14,hJ,40,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmX=[0,a(aG),ko,5,753,30,[0,a(qG),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bmY=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmW=[0,a(aG),721,5,726,30,[0,a(qG),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bmZ=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmV=[0,a(aG),hr,31,hr,54,[0,a(qG),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bm0=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmU=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmQ=[0,a(d),fh,11,fh,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmR=[0,a(d),fh,11,fh,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmP=[0,a(d),fh,11,fh,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmJ=[0,a(E),3021,5,3024,41,[0,a("Article R832-7"),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmK=[0,a(d),dj,11,dj,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmI=[0,a(E),2986,5,2988,42,[0,a("Article R832-5"),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmL=[0,a(d),dj,11,dj,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmM=[0,a(d),dj,11,dj,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmH=[0,a(d),dj,11,dj,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmN=[0,a(d),dj,11,dj,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmG=[0,a(d),dj,11,dj,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmO=[0,a(b7),[0,a(j3),0]],bmS=[0,a(b7),[0,a(kj),0]],bm1=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmT=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm2=[0,a(b7),[0,a("condition_logement_pr\xc3\xaat"),0]],bm5=[0,a(d),hJ,14,hJ,40,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm6=[0,a(b7),[0,a(vF),0]],bm3=[0,a(d),hJ,14,hJ,40,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm9=[0,a(d),hg,14,hg,43,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm_=[0,a(b7),[0,a(Bj),0]],bm7=[0,a(d),hg,14,hg,43,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnb=[0,a(d),gO,14,gO,47,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnc=[0,a(b7),[0,a(F6),0]],bm$=[0,a(d),gO,14,gO,47,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnd=[0,a(b7),[0,a(oF),[0,a(aU),0]]],bne=[0,a(b7),[0,a(oF),[0,a(aU),0]]],bnA=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnf=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnB=[0,a(b7),[0,a("condition_logement_bailleur"),0]],bnE=[0,a(d),n9,12,n9,61,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnC=[0,a(d),n9,12,n9,61,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnF=[0,a(b7),[0,a(kD),0]],bnI=[0,a(d),l3,12,l3,54,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnG=[0,a(d),l3,12,l3,54,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnJ=[0,a(b7),[0,a(r7),0]],bnO=[0,a(d),f3,12,f3,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnK=[0,a(d),f3,12,f3,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnP=[0,a(b7),[0,a(n_),0]],bmD=[0,a(E),AS,14,AS,40,[0,a("Article D823-22"),[0,a(l_),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmy=[0,a(aG),eb,5,566,42,[0,a("Article L823-8"),[0,a(a4),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bmz=[0,a(d),f$,11,f$,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmx=[0,a(d),f$,11,f$,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmt=[0,a(Q),BI,14,BI,29,[0,a("Article 45"),[0,a("Chapitre VIII : Prime de d\xc3\xa9m\xc3\xa9nagement"),[0,a(L),0]]]],bmo=a(_),bmp=a(qz),bmq=a(_),bms=a(p),bmr=a("2.4"),bmj=[0,a(E),2069,6,2079,75,[0,a(qL),[0,a(l_),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmk=[0,a(d),ex,11,ex,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmi=[0,a(d),ex,11,ex,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmc=[0,a(d),iN,14,iN,43,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl_=[0,a(d),iQ,14,iQ,39,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl6=[0,a(d),fR,14,fR,36,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl0=[0,a(d),fT,14,fT,65,[0,a(bv),[0,a(i),[0,a(e),0]]]],blU=a(_),blV=[0,a(E),2060,5,2065,77,[0,a(qL),[0,a(l_),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blW=[0,a(d),f0,11,f0,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],blT=[0,a(d),f0,11,f0,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],blP=[0,a(E),Ai,14,Ai,47,[0,a(qL),[0,a(l_),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blQ=[0,a(d),nQ,11,nQ,44,[0,a(bv),[0,a(i),[0,a(e),0]]]],blO=[0,a(d),nQ,11,nQ,44,[0,a(bv),[0,a(i),[0,a(e),0]]]],blR=[0,a(dk),[0,a("d\xc3\xa9lai_apr\xc3\xa8s_emm\xc3\xa9nagement_l823_8_2"),0]],blX=[0,a(d),f0,11,f0,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],blS=[0,a(d),f0,11,f0,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],blY=[0,a(dk),[0,a("condition_rang_enfant"),0]],bl1=[0,a(d),fT,14,fT,65,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl2=[0,a(dk),[0,a(DV),0]],blZ=[0,a(d),fT,14,fT,65,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl3=[0,a(dk),[0,a(mS),[0,a(f_),0]]],bl4=[0,a(dk),[0,a(mS),[0,a(f_),0]]],bl7=[0,a(d),fR,14,fR,36,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl8=[0,a(dk),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.m\xc3\xa9nage"),0]],bl5=[0,a(d),fR,14,fR,36,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl$=[0,a(d),iQ,14,iQ,39,[0,a(bv),[0,a(i),[0,a(e),0]]]],bma=[0,a(dk),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.demandeur"),0]],bl9=[0,a(d),iQ,14,iQ,39,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmd=[0,a(d),iN,14,iN,43,[0,a(bv),[0,a(i),[0,a(e),0]]]],bme=[0,a(dk),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.date_courante"),0]],bmb=[0,a(d),iN,14,iN,43,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmf=[0,a(dk),[0,a(A5),[0,a(aU),0]]],bmg=[0,a(dk),[0,a(A5),[0,a(aU),0]]],bml=[0,a(d),ex,11,ex,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmh=[0,a(d),ex,11,ex,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmm=[0,a(dk),[0,a("condition_p\xc3\xa9riode_d\xc3\xa9m\xc3\xa9nagement"),0]],bmu=[0,a(d),mJ,11,mJ,26,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmn=[0,a(d),mJ,11,mJ,26,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmv=[0,a(dk),[0,a("plafond_d823_22"),0]],bmA=[0,a(d),f$,11,f$,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmw=[0,a(d),f$,11,f$,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmB=[0,a(dk),[0,a(A$),0]],bmE=[0,a(d),oZ,12,oZ,38,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmC=[0,a(d),oZ,12,oZ,38,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmF=[0,a(dk),[0,a("montant_prime_d\xc3\xa9m\xc3\xa9nagement"),0]],blK=[0,a(E),qZ,14,qZ,33,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blG=[0,a(E),En,14,En,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blH=[0,a(d),j6,12,j6,34,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blF=[0,a(d),j6,12,j6,34,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blC=[0,a(E),vR,14,vR,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blv=[0,a(au),[0,a(aw),[0,a(ac),0]]],blw=[0,a(au),[0,a(aw),0]],blx=[0,a(au),[0,a(aw),[0,a(ae),0]]],bly=[0,a(au),[0,a(aw),0]],blm=[0,a(aj),[0,a(aw),[0,a(ac),0]]],bln=[0,a(aj),[0,a(aw),0]],blo=[0,a(aj),[0,a(aw),[0,a(ae),0]]],blp=[0,a(aj),[0,a(aw),0]],blb=[0,a(aD),[0,a(aw),[0,a(ac),0]]],blc=[0,a(aD),[0,a(aw),0]],bld=[0,a(aD),[0,a(aw),[0,a(ae),0]]],ble=[0,a(aD),[0,a(aw),0]],bli=a(p),blj=a(p),bk_=[0,a(E),1455,16,1458,39,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bk$=[0,a(aD),[0,a(bo),[0,a(ac),0]]],bla=[0,a(aD),[0,a(bo),0]],blf=[0,a(E),1440,9,1460,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blg=[0,a(aD),[0,a(bo),[0,a(ae),0]]],blh=[0,a(aD),[0,a(bo),0]],blk=[0,a(aj),[0,a(bo),[0,a(ac),0]]],bll=[0,a(aj),[0,a(bo),0]],blq=[0,a(E),1491,10,1507,11,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blr=[0,a(aj),[0,a(bo),[0,a(ae),0]]],bls=[0,a(aj),[0,a(bo),0]],blt=[0,a(au),[0,a(bo),[0,a(ac),0]]],blu=[0,a(au),[0,a(bo),0]],blz=[0,a(E),1471,9,1480,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blA=[0,a(au),[0,a(bo),[0,a(ae),0]]],blB=[0,a(au),[0,a(bo),0]],bk6=[0,a(Q),78,14,78,44,[0,a(cG),[0,a(bX),[0,a(L),0]]]],bk0=[0,0],bk1=[1,0],bk2=[1,0],bk3=[1,0],bk4=[0,0],bk5=[1,0],bkW=[0,a(E),Af,14,Af,31,[0,a(rP),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],bkT=a(c5),bkU=a(B5),bkV=a(qY),bkP=[0,a(E),zu,14,zu,34,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bkQ=[0,a(d),ko,11,ko,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkO=[0,a(d),ko,11,ko,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkR=[0,a(cS),[0,a(xM),0]],bkX=[0,a(d),m2,10,m2,22,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkS=[0,a(d),m2,10,m2,22,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkY=[0,a(cS),[0,a(xf),0]],bk7=[0,a(d),oe,11,oe,41,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkZ=[0,a(d),oe,11,oe,41,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bk8=[0,a(cS),[0,a(y6),0]],blD=[0,a(d),m1,11,m1,33,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bk9=[0,a(d),m1,11,m1,33,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blE=[0,a(cS),[0,a(Fi),0]],blI=[0,a(cS),[0,a(aw),0]],blL=[0,a(d),mW,12,mW,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blJ=[0,a(d),mW,12,mW,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blM=[0,a(cS),[0,a(cX),0]],bkL=[0,a(E),Eo,14,Eo,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bkG=[0,a(V),[0,a(bJ),[0,a(ac),0]]],bkH=[0,a(V),[0,a(bJ),0]],bkI=[0,a(V),[0,a(bJ),[0,a(ae),0]]],bkJ=[0,a(V),[0,a(bJ),0]],bkK=a(p),bkM=[0,a(d),l8,10,l8,25,[0,a(D),[0,a(A),[0,a(e),0]]]],bkF=[0,a(d),l8,10,l8,25,[0,a(D),[0,a(A),[0,a(e),0]]]],bkC=[0,a(E),EJ,14,EJ,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bkr=[0,a(V),[0,a(er),[0,a(ac),0]]],bks=[0,a(V),[0,a(er),0]],bkt=[0,a(V),[0,a(er),[0,a(ae),0]]],bku=[0,a(V),[0,a(er),0]],bkv=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],bkw=[0,a(bk),[0,a(bQ),0]],bkx=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],bky=[0,a(bk),[0,a(bQ),0]],bkz=a(kW),bkA=a(p),bkB=a(p),bkD=[0,a(d),mC,10,mC,40,[0,a(D),[0,a(A),[0,a(e),0]]]],bkq=[0,a(d),mC,10,mC,40,[0,a(D),[0,a(A),[0,a(e),0]]]],bkn=[0,a(E),y3,14,y3,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bke=[0,a(V),[0,a(bI),[0,a(ac),0]]],bkf=[0,a(V),[0,a(bI),0]],bkg=[0,a(V),[0,a(bI),[0,a(ae),0]]],bkh=[0,a(V),[0,a(bI),0]],bki=[0,a(V),[0,a(eK),[0,a(ac),0]]],bkj=[0,a(V),[0,a(eK),0]],bkk=[0,a(V),[0,a(eK),[0,a(ae),0]]],bkl=[0,a(V),[0,a(eK),0]],bkm=a(p),bko=[0,a(d),ou,10,ou,32,[0,a(D),[0,a(A),[0,a(e),0]]]],bkd=[0,a(d),ou,10,ou,32,[0,a(D),[0,a(A),[0,a(e),0]]]],bka=[0,a(E),AC,14,AC,33,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bj8=[0,a(E),vb,14,vb,47,[0,a(oP),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bj3=[0,a(V),[0,a(de),[0,a(ac),0]]],bj4=[0,a(V),[0,a(de),0]],bj5=[0,a(V),[0,a(de),[0,a(ae),0]]],bj6=[0,a(V),[0,a(de),0]],bj7=a(p),bj9=[0,a(d),nD,11,nD,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bj2=[0,a(d),nD,11,nD,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bjZ=[0,a(E),xd,14,xd,41,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjV=[0,a(E),AK,14,AK,33,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjR=[0,a(E),x1,14,x1,33,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjM=[0,a(E),4671,7,4674,44,[0,a(oP),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjN=[0,a(d),gV,11,gV,47,[0,a(D),[0,a(A),[0,a(e),0]]]],bjL=[0,a(E),vM,14,vM,50,[0,a(oP),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjF=[0,a(E),nn,14,nn,62,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjG=[0,a(E),nn,14,nn,62,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjH=[0,a(V),[0,a("calcul_apl_logement_foyer.n_nombre_parts_d832_25"),0]],bjC=[0,a(E),m4,14,m4,61,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjD=[0,a(E),m4,14,m4,61,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjE=[0,a(V),[0,a(Eh),0]],bjz=[0,a(d),gG,14,gG,49,[0,a(D),[0,a(A),[0,a(e),0]]]],bjy=a(p),bju=[0,a(d),hR,14,hR,53,[0,a(D),[0,a(A),[0,a(e),0]]]],bjq=[0,a(d),i2,14,i2,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bjm=[0,a(d),ii,14,ii,70,[0,a(D),[0,a(A),[0,a(e),0]]]],bji=[0,a(d),iY,14,iY,65,[0,a(D),[0,a(A),[0,a(e),0]]]],bje=[0,a(d),jo,14,jo,67,[0,a(D),[0,a(A),[0,a(e),0]]]],bja=[0,a(d),iy,14,iy,61,[0,a(D),[0,a(A),[0,a(e),0]]]],bi8=[0,a(d),ju,14,ju,59,[0,a(D),[0,a(A),[0,a(e),0]]]],bi7=[3,0],bi1=[0,a(E),hx,14,hx,70,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biX=[0,a(E),hH,14,hH,69,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biT=[0,a(E),js,14,js,75,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biO=[0,a(E),A_,5,A_,44,[0,a(BN),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biG=[0,a(V),[0,a(dE),[0,a(ac),0]]],biH=[0,a(V),[0,a(dE),0]],biI=[0,a(V),[0,a(dE),[0,a(ae),0]]],biJ=[0,a(V),[0,a(dE),0]],biK=[0,a(V),[0,a(dE),[0,a(ac),0]]],biL=[0,a(V),[0,a(dE),0]],biM=[0,a(V),[0,a(dE),[0,a(ae),0]]],biN=[0,a(V),[0,a(dE),0]],biP=[0,a(d),h0,11,h0,36,[0,a(D),[0,a(A),[0,a(e),0]]]],biF=[0,a(E),EF,14,EF,39,[0,a(BN),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biB=[0,a(V),[0,a(dE),[0,a(ac),0]]],biC=[0,a(V),[0,a(dE),0]],biD=[0,a(V),[0,a(dE),[0,a(ae),0]]],biE=[0,a(V),[0,a(dE),0]],biw=[0,a(E),vT,5,vT,28,[0,a(nd),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bix=[0,a(d),iT,10,iT,15,[0,a(D),[0,a(A),[0,a(e),0]]]],biv=[0,a(E),Dx,14,Dx,41,[0,a(nd),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bis=a(c5),bit=a(qY),biu=a("4999"),bil=[0,a(aO),xK,24,xK,56,[0,a(or),[0,a(bB),[0,a(aM),0]]]],bic=a(df),bid=[0,a(V),[0,a(b$),[0,a(ac),0]]],bie=[0,a(V),[0,a(b$),0]],bif=[0,a(V),[0,a(b$),[0,a(ae),0]]],big=[0,a(V),[0,a(b$),0]],bih=[0,a(V),[0,a(b$),[0,a(ac),0]]],bii=[0,a(V),[0,a(b$),0]],bij=[0,a(V),[0,a(b$),[0,a(ae),0]]],bik=[0,a(V),[0,a(b$),0]],bim=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bib=[0,a(Q),Et,24,Et,56,[0,a(or),[0,a(bn),[0,a(L),0]]]],bh4=a(df),bh5=[0,a(V),[0,a(b$),[0,a(ac),0]]],bh6=[0,a(V),[0,a(b$),0]],bh7=[0,a(V),[0,a(b$),[0,a(ae),0]]],bh8=[0,a(V),[0,a(b$),0]],bh9=[0,a(V),[0,a(b$),[0,a(ac),0]]],bh_=[0,a(V),[0,a(b$),0]],bh$=[0,a(V),[0,a(b$),[0,a(ae),0]]],bia=[0,a(V),[0,a(b$),0]],bin=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bio=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bh3=[0,a(Q),AB,14,AB,46,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bhZ=[0,a(V),[0,a(b$),[0,a(ac),0]]],bh0=[0,a(V),[0,a(b$),0]],bh1=[0,a(V),[0,a(b$),[0,a(ae),0]]],bh2=[0,a(V),[0,a(b$),0]],bip=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bhY=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bhV=[0,a(E),Au,15,Au,37,[0,a(oP),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bhW=[0,a(d),mQ,11,mQ,33,[0,a(D),[0,a(A),[0,a(e),0]]]],bhU=[0,a(d),mQ,11,mQ,33,[0,a(D),[0,a(A),[0,a(e),0]]]],bhQ=[0,a(E),4696,6,4702,6,[0,a(nd),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bhR=[0,a(d),fU,11,fU,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bhO=[0,a(E),4714,5,4715,59,[0,a(nd),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bhP=[0,a(d),fU,11,fU,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bhJ=[0,a(Q),Ey,5,Ey,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bgZ=a(p),bg0=a("158700"),bg1=a("191300"),bg2=a(z),bg3=a("205500"),bg4=a(X),bg5=a("211300"),bg6=a(_),bg7=a("217100"),bg8=a(ah),bg9=a("222900"),bg_=a(P),bg$=a(z6),bha=a(P),bhb=a("19800"),bhc=a(z6),bhd=a(p),bhe=a("139300"),bhf=a("170600"),bhg=a(z),bhh=a("184700"),bhi=a(X),bhj=a("191200"),bhk=a(_),bhl=a(zn),bhm=a(ah),bhn=a("204200"),bho=a(P),bhp=a(wC),bhq=a(P),bhr=a(sk),bhs=a(wC),bht=a(p),bhu=a("130600"),bhv=a("158400"),bhw=a(z),bhx=a("172600"),bhy=a(X),bhz=a(DX),bhA=a(_),bhB=a("187000"),bhC=a(ah),bhD=a("194200"),bhE=a(P),bhF=a(rH),bhG=a(P),bhH=a("18200"),bhI=a(rH),bhK=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bgX=[0,a(Q),x4,5,x4,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bgb=a(p),bgc=a("160400"),bgd=a("193400"),bge=a(z),bgf=a("207800"),bgg=a(X),bgh=a("213700"),bgi=a(_),bgj=a("219600"),bgk=a(ah),bgl=a(yH),bgm=a(P),bgn=a(ob),bgo=a(P),bgp=a("20000"),bgq=a(ob),bgr=a(p),bgs=a(DJ),bgt=a(DY),bgu=a(z),bgv=a("186700"),bgw=a(X),bgx=a("193300"),bgy=a(_),bgz=a(q0),bgA=a(ah),bgB=a("206500"),bgC=a(P),bgD=a(w3),bgE=a(P),bgF=a(zq),bgG=a(w3),bgH=a(p),bgI=a(Bp),bgJ=a(ra),bgK=a(z),bgL=a("174500"),bgM=a(X),bgN=a(xP),bgO=a(_),bgP=a("189100"),bgQ=a(ah),bgR=a("196400"),bgS=a(P),bgT=a(vm),bgU=a(P),bgV=a("18400"),bgW=a(vm),bgY=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bf$=[0,a(Q),CZ,5,CZ,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bfp=a(p),bfq=a("163300"),bfr=a("196900"),bfs=a(z),bft=a("211600"),bfu=a(X),bfv=a(wE),bfw=a(_),bfx=a("223600"),bfy=a(ah),bfz=a("229600"),bfA=a(P),bfB=a(BE),bfC=a(P),bfD=a("20400"),bfE=a(BE),bfF=a(p),bfG=a("143300"),bfH=a("175600"),bfI=a(z),bfJ=a("190100"),bfK=a(X),bfL=a("196600"),bfM=a(_),bfN=a("203500"),bfO=a(ah),bfP=a("210200"),bfQ=a(P),bfR=a(EU),bfS=a(P),bfT=a("19600"),bfU=a(EU),bfV=a(p),bfW=a("134400"),bfX=a(xS),bfY=a(z),bfZ=a("177700"),bf0=a(X),bf1=a("185100"),bf2=a(_),bf3=a(wF),bf4=a(ah),bf5=a(q0),bf6=a(P),bf7=a(FO),bf8=a(P),bf9=a("18700"),bf_=a(FO),bga=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bfn=[0,a(Q),Ez,5,Ez,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],beD=a(p),beE=a("167200"),beF=a("201600"),beG=a(z),beH=a("216700"),beI=a(X),beJ=a("222800"),beK=a(_),beL=a("229000"),beM=a(ah),beN=a("235100"),beO=a(P),beP=a(FI),beQ=a(P),beR=a(vL),beS=a(FI),beT=a(p),beU=a("146700"),beV=a(DX),beW=a(z),beX=a("194700"),beY=a(X),beZ=a("201500"),be0=a(_),be1=a("208400"),be2=a(ah),be3=a("215200"),be4=a(P),be5=a(ob),be6=a(P),be7=a(Bz),be8=a(ob),be9=a(p),be_=a("137600"),be$=a("166900"),bfa=a(z),bfb=a("182000"),bfc=a(X),bfd=a("189500"),bfe=a(_),bff=a("197100"),bfg=a(ah),bfh=a(C7),bfi=a(P),bfj=a(Bd),bfk=a(P),bfl=a(sk),bfm=a(Bd),bfo=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],beB=[0,a(Q),Ax,5,Ax,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bdR=a(p),bdS=a("167400"),bdT=a("201800"),bdU=a(z),bdV=a("216900"),bdW=a(X),bdX=a("223000"),bdY=a(_),bdZ=a("229200"),bd0=a(ah),bd1=a("235300"),bd2=a(P),bd3=a(As),bd4=a(P),bd5=a(vL),bd6=a(As),bd7=a(p),bd8=a("146800"),bd9=a("180000"),bd_=a(z),bd$=a("194900"),bea=a(X),beb=a(Fg),bec=a(_),bed=a(rH),bee=a(ah),bef=a("215400"),beg=a(P),beh=a(Cs),bei=a(P),bej=a(Bz),bek=a(Cs),bel=a(p),bem=a("137700"),ben=a("167100"),beo=a(z),bep=a("182200"),beq=a(X),ber=a("189700"),bes=a(_),bet=a("197300"),beu=a(ah),bev=a("204900"),bew=a(P),bex=a(DU),bey=a(P),bez=a(sk),beA=a(DU),beC=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bdP=[0,a(Q),zs,5,zs,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bc5=a(p),bc6=a("169100"),bc7=a("203800"),bc8=a(z),bc9=a("219100"),bc_=a(X),bc$=a("225200"),bda=a(_),bdb=a("231500"),bdc=a(ah),bdd=a("237700"),bde=a(P),bdf=a(mk),bdg=a(P),bdh=a("21100"),bdi=a(mk),bdj=a(p),bdk=a("148300"),bdl=a(xP),bdm=a(z),bdn=a("196800"),bdo=a(X),bdp=a("203700"),bdq=a(_),bdr=a("210700"),bds=a(ah),bdt=a(wE),bdu=a(P),bdv=a(w7),bdw=a(P),bdx=a("20300"),bdy=a(w7),bdz=a(p),bdA=a("139100"),bdB=a("168800"),bdC=a(z),bdD=a(rI),bdE=a(X),bdF=a("191600"),bdG=a(_),bdH=a("199300"),bdI=a(ah),bdJ=a("206900"),bdK=a(P),bdL=a(AV),bdM=a(P),bdN=a(zq),bdO=a(AV),bdQ=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bc3=[0,a(Q),BM,5,BM,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bch=a(p),bci=a("171100"),bcj=a("206200"),bck=a(z),bcl=a("221700"),bcm=a(X),bcn=a("227900"),bco=a(_),bcp=a("234300"),bcq=a(ah),bcr=a("240600"),bcs=a(P),bct=a(zW),bcu=a(P),bcv=a("21400"),bcw=a(zW),bcx=a(p),bcy=a("150100"),bcz=a(rI),bcA=a(z),bcB=a("199200"),bcC=a(X),bcD=a("206100"),bcE=a(_),bcF=a("213200"),bcG=a(ah),bcH=a("220200"),bcI=a(P),bcJ=a(y8),bcK=a(P),bcL=a("20500"),bcM=a(y8),bcN=a(p),bcO=a(DJ),bcP=a("170800"),bcQ=a(z),bcR=a("186200"),bcS=a(X),bcT=a("193900"),bcU=a(_),bcV=a(Fg),bcW=a(ah),bcX=a("209400"),bcY=a(P),bcZ=a(AU),bc0=a(P),bc1=a("19500"),bc2=a(AU),bc4=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bcf=[0,a(Q),Aw,5,Aw,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bbv=a(p),bbw=a("26084"),bbx=a("31435"),bby=a(z),bbz=a("33798"),bbA=a(X),bbB=a("34743"),bbC=a(_),bbD=a("35719"),bbE=a(ah),bbF=a("36679"),bbG=a(P),bbH=a(zc),bbI=a(P),bbJ=a("3262"),bbK=a(zc),bbL=a(p),bbM=a("22883"),bbN=a("28051"),bbO=a(z),bbP=a("30368"),bbQ=a(X),bbR=a("31420"),bbS=a(_),bbT=a("32502"),bbU=a(ah),bbV=a("33569"),bbW=a(P),bbX=a(Fx),bbY=a(P),bbZ=a("3125"),bb0=a(Fx),bb1=a(p),bb2=a("21465"),bb3=a("26038"),bb4=a(z),bb5=a("28386"),bb6=a(X),bb7=a("29560"),bb8=a(_),bb9=a("30749"),bb_=a(ah),bb$=a("31923"),bca=a(P),bcb=a(EW),bcc=a(P),bcd=a("2973"),bce=a(EW),bcg=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bbt=[0,a(Q),Dd,5,Dd,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],baJ=a(p),baK=a("26397"),baL=a("31812"),baM=a(z),baN=a("34204"),baO=a(X),baP=a("35160"),baQ=a(_),baR=a("36148"),baS=a(ah),baT=a("37119"),baU=a(P),baV=a(zA),baW=a(P),baX=a("3301"),baY=a(zA),baZ=a(p),ba0=a("23158"),ba1=a("28388"),ba2=a(z),ba3=a("30732"),ba4=a(X),ba5=a(mV),ba6=a(_),ba7=a("32892"),ba8=a(ah),ba9=a("33972"),ba_=a(P),ba$=a(EH),bba=a(P),bbb=a("3163"),bbc=a(EH),bbd=a(p),bbe=a("21723"),bbf=a("26350"),bbg=a(z),bbh=a("28727"),bbi=a(X),bbj=a("29915"),bbk=a(_),bbl=a("31118"),bbm=a(ah),bbn=a("32306"),bbo=a(P),bbp=a(xq),bbq=a(P),bbr=a("3009"),bbs=a(xq),bbu=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],baH=[0,a(Q),zx,5,zx,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a$X=a(p),a$Y=a(Ge),a$Z=a("32194"),a$0=a(z),a$1=a("34614"),a$2=a(X),a$3=a("35582"),a$4=a(_),a$5=a("36582"),a$6=a(ah),a$7=a("37564"),a$8=a(P),a$9=a(wS),a$_=a(P),a$$=a("3341"),baa=a(wS),bab=a(p),bac=a("23436"),bad=a("28729"),bae=a(z),baf=a("31101"),bag=a(X),bah=a("32179"),bai=a(_),baj=a("33287"),bak=a(ah),bal=a("34380"),bam=a(P),ban=a(AT),bao=a(P),bap=a("3201"),baq=a(AT),bar=a(p),bas=a("21984"),bat=a("26666"),bau=a(z),bav=a("29072"),baw=a(X),bax=a("30274"),bay=a(_),baz=a("31491"),baA=a(ah),baB=a("32694"),baC=a(P),baD=a(BL),baE=a(P),baF=a("3045"),baG=a(BL),baI=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a$V=[0,a(Q),yZ,5,yZ,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a_$=a(p),a$a=a("27195"),a$b=a("32773"),a$c=a(z),a$d=a("35237"),a$e=a(X),a$f=a("36222"),a$g=a(_),a$h=a("37240"),a$i=a(ah),a$j=a("38240"),a$k=a(P),a$l=a(BC),a$m=a(P),a$n=a("3401"),a$o=a(BC),a$p=a(p),a$q=a("23858"),a$r=a("29246"),a$s=a(z),a$t=a("31661"),a$u=a(X),a$v=a("32758"),a$w=a(_),a$x=a("33886"),a$y=a(ah),a$z=a("34999"),a$A=a(P),a$B=a(zE),a$C=a(P),a$D=a("3259"),a$E=a(zE),a$F=a(p),a$G=a("22380"),a$H=a("27146"),a$I=a(z),a$J=a("29595"),a$K=a(X),a$L=a("30819"),a$M=a(_),a$N=a("32058"),a$O=a(ah),a$P=a("33282"),a$Q=a(P),a$R=a(AI),a$S=a(P),a$T=a("3100"),a$U=a(AI),a$W=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a_9=[0,a(Q),wN,5,wN,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a_n=a(p),a_o=a("27956"),a_p=a("33691"),a_q=a(z),a_r=a("36224"),a_s=a(X),a_t=a("37236"),a_u=a(_),a_v=a("38283"),a_w=a(ah),a_x=a("39311"),a_y=a(P),a_z=a(yK),a_A=a(P),a_B=a("3496"),a_C=a(yK),a_D=a(p),a_E=a("24526"),a_F=a("30065"),a_G=a(z),a_H=a("32548"),a_I=a(X),a_J=a("33675"),a_K=a(_),a_L=a(FC),a_M=a(ah),a_N=a("35979"),a_O=a(P),a_P=a(AR),a_Q=a(P),a_R=a("3350"),a_S=a(AR),a_T=a(p),a_U=a("23007"),a_V=a("27906"),a_W=a(z),a_X=a("30424"),a_Y=a(X),a_Z=a("31682"),a_0=a(_),a_1=a(yP),a_2=a(ah),a_3=a("34214"),a_4=a(P),a_5=a(EB),a_6=a(P),a_7=a("3187"),a_8=a(EB),a__=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a_l=[0,a(Q),zL,5,zL,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a9B=a(p),a9C=a("28728"),a9D=a("34621"),a9E=a(z),a9F=a("37224"),a9G=a(X),a9H=a("38264"),a9I=a(_),a9J=a(ym),a9K=a(ah),a9L=a("40396"),a9M=a(P),a9N=a(xX),a9O=a(P),a9P=a("3592"),a9Q=a(xX),a9R=a(p),a9S=a("25203"),a9T=a("30895"),a9U=a(z),a9V=a("33446"),a9W=a(X),a9X=a("34604"),a9Y=a(_),a9Z=a("35796"),a90=a(ah),a91=a("36972"),a92=a(P),a93=a(Fq),a94=a(P),a95=a("3442"),a96=a(Fq),a97=a(p),a98=a("23642"),a99=a("28676"),a9_=a(z),a9$=a(xB),a_a=a(X),a_b=a("32556"),a_c=a(_),a_d=a("33866"),a_e=a(ah),a_f=a("35158"),a_g=a(P),a_h=a(wx),a_i=a(P),a_j=a("3275"),a_k=a(wx),a_m=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a9z=[0,a(Q),Fm,5,Fm,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a8P=a(p),a8Q=a("29575"),a8R=a("35642"),a8S=a(z),a8T=a("38322"),a8U=a(X),a8V=a("39393"),a8W=a(_),a8X=a("40501"),a8Y=a(ah),a8Z=a("41588"),a80=a(P),a81=a(Dv),a82=a(P),a83=a("3698"),a84=a(Dv),a85=a(p),a86=a("25946"),a87=a("31806"),a88=a(z),a89=a("34433"),a8_=a(X),a8$=a("35625"),a9a=a(_),a9b=a("36852"),a9c=a(ah),a9d=a("38063"),a9e=a(P),a9f=a(AE),a9g=a(P),a9h=a("3544"),a9i=a(AE),a9j=a(p),a9k=a("24339"),a9l=a("29522"),a9m=a(z),a9n=a("32186"),a9o=a(X),a9p=a("33516"),a9q=a(_),a9r=a(FC),a9s=a(ah),a9t=a("36195"),a9u=a(P),a9v=a(Eq),a9w=a(P),a9x=a("3372"),a9y=a(Eq),a9A=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a8N=[0,a(Q),Di,5,Di,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a73=a(p),a74=a("29670"),a75=a("35757"),a76=a(z),a77=a("38445"),a78=a(X),a79=a("39519"),a7_=a(_),a7$=a("40601"),a8a=a(ah),a8b=a("41721"),a8c=a(P),a8d=a(DC),a8e=a(P),a8f=a("3710"),a8g=a(DC),a8h=a(p),a8i=a("26029"),a8j=a("31908"),a8k=a(z),a8l=a("34643"),a8m=a(X),a8n=a("35739"),a8o=a(_),a8p=a("36970"),a8q=a(ah),a8r=a("38185"),a8s=a(P),a8t=a(Be),a8u=a(P),a8v=a("3555"),a8w=a(Be),a8x=a(p),a8y=a("24417"),a8z=a("29616"),a8A=a(z),a8B=a("32289"),a8C=a(X),a8D=a(zF),a8E=a(_),a8F=a("34977"),a8G=a(ah),a8H=a("36311"),a8I=a(P),a8J=a(Ag),a8K=a(P),a8L=a("3383"),a8M=a(Ag),a8O=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a71=[0,a(Q),ot,5,ot,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a7f=a(p),a7g=a("29996"),a7h=a("36149"),a7i=a(z),a7j=a("38868"),a7k=a(X),a7l=a("39954"),a7m=a(_),a7n=a("41078"),a7o=a(ah),a7p=a("42180"),a7q=a(P),a7r=a(Bu),a7s=a(P),a7t=a("3751"),a7u=a(Bu),a7v=a(p),a7w=a("26315"),a7x=a("32259"),a7y=a(z),a7z=a("34923"),a7A=a(X),a7B=a("36132"),a7C=a(_),a7D=a("37373"),a7E=a(ah),a7F=a("38605"),a7G=a(P),a7H=a(DM),a7I=a(P),a7J=a("3594"),a7K=a(DM),a7L=a(p),a7M=a("24686"),a7N=a("29942"),a7O=a(z),a7P=a("32644"),a7Q=a(X),a7R=a("33993"),a7S=a(_),a7T=a("35362"),a7U=a(ah),a7V=a("36710"),a7W=a(P),a7X=a(AA),a7Y=a(P),a7Z=a("3420"),a70=a(AA),a72=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a7d=[0,a(Q),zX,5,zX,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a6t=a(p),a6u=a("30296"),a6v=a("36510"),a6w=a(z),a6x=a("39257"),a6y=a(X),a6z=a("40354"),a6A=a(_),a6B=a("41489"),a6C=a(ah),a6D=a("42602"),a6E=a(P),a6F=a(wb),a6G=a(P),a6H=a("3789"),a6I=a(wb),a6J=a(p),a6K=a("26578"),a6L=a("32582"),a6M=a(z),a6N=a("35272"),a6O=a(X),a6P=a("36493"),a6Q=a(_),a6R=a("37751"),a6S=a(ah),a6T=a("38991"),a6U=a(P),a6V=a(xQ),a6W=a(P),a6X=a("3630"),a6Y=a(xQ),a6Z=a(p),a60=a("24933"),a61=a("30241"),a62=a(z),a63=a("32970"),a64=a(X),a65=a("34333"),a66=a(_),a67=a("35716"),a68=a(ah),a69=a("37077"),a6_=a(P),a6$=a(vh),a7a=a(P),a7b=a("3454"),a7c=a(vh),a7e=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a6r=[0,a(Q),F7,5,F7,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a5H=a(p),a5I=a("30947"),a5J=a("37295"),a5K=a(z),a5L=a("40101"),a5M=a(X),a5N=a("41222"),a5O=a(_),a5P=a("42381"),a5Q=a(ah),a5R=a("43518"),a5S=a(P),a5T=a(CP),a5U=a(P),a5V=a("3870"),a5W=a(CP),a5X=a(p),a5Y=a("27149"),a5Z=a("33283"),a50=a(z),a51=a("36030"),a52=a(X),a53=a("37278"),a54=a(_),a55=a("38563"),a56=a(ah),a57=a("39829"),a58=a(P),a59=a("42649"),a5_=a(P),a5$=a("3708"),a6a=a("42659"),a6b=a(p),a6c=a("25469"),a6d=a("30891"),a6e=a(z),a6f=a("33679"),a6g=a(X),a6h=a("35071"),a6i=a(_),a6j=a("36484"),a6k=a(ah),a6l=a("37874"),a6m=a(P),a6n=a(CX),a6o=a(P),a6p=a("3528"),a6q=a(CX),a6s=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a5F=[0,a(Q),v3,5,v3,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a4V=a(p),a4W=a("31123"),a4X=a("37508"),a4Y=a(z),a4Z=a("40330"),a40=a(X),a41=a("41457"),a42=a(_),a43=a("42623"),a44=a(ah),a45=a("43766"),a46=a(P),a47=a(vi),a48=a(P),a49=a("3892"),a4_=a(vi),a4$=a(p),a5a=a("27304"),a5b=a("33473"),a5c=a(z),a5d=a("36235"),a5e=a(X),a5f=a("37490"),a5g=a(_),a5h=a("38783"),a5i=a(ah),a5j=a("40056"),a5k=a(P),a5l=a(Cf),a5m=a(P),a5n=a("3729"),a5o=a(Cf),a5p=a(p),a5q=a("25614"),a5r=a("31067"),a5s=a(z),a5t=a("33871"),a5u=a(X),a5v=a("35271"),a5w=a(_),a5x=a("36692"),a5y=a(ah),a5z=a("38090"),a5A=a(P),a5B=a(zp),a5C=a(P),a5D=a("3548"),a5E=a(zp),a5G=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a4T=[0,a(Q),ga,5,ga,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a39=a(p),a3_=a("31148"),a3$=a("37538"),a4a=a(z),a4b=a("40362"),a4c=a(X),a4d=a("41490"),a4e=a(_),a4f=a("42657"),a4g=a(ah),a4h=a("43801"),a4i=a(P),a4j=a(xu),a4k=a(P),a4l=a("3895"),a4m=a(xu),a4n=a(p),a4o=a("27326"),a4p=a(FY),a4q=a(z),a4r=a("36264"),a4s=a(X),a4t=a("37520"),a4u=a(_),a4v=a("38814"),a4w=a(ah),a4x=a("40088"),a4y=a(P),a4z=a(FM),a4A=a(P),a4B=a("3732"),a4C=a(FM),a4D=a(p),a4E=a("25634"),a4F=a("31092"),a4G=a(z),a4H=a("33898"),a4I=a(X),a4J=a("35299"),a4K=a(_),a4L=a("36721"),a4M=a(ah),a4N=a("38120"),a4O=a(P),a4P=a(Ac),a4Q=a(P),a4R=a("3551"),a4S=a(Ac),a4U=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a37=[0,a(Q),Ct,5,Ct,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a3l=a(p),a3m=a("31382"),a3n=a("37820"),a3o=a(z),a3p=a("40665"),a3q=a(X),a3r=a("41801"),a3s=a(_),a3t=a("42977"),a3u=a(ah),a3v=a("44130"),a3w=a(P),a3x=a(z8),a3y=a(P),a3z=a("3924"),a3A=a(z8),a3B=a(p),a3C=a("27531"),a3D=a("33751"),a3E=a(z),a3F=a("36536"),a3G=a(X),a3H=a("37801"),a3I=a(_),a3J=a("39105"),a3K=a(ah),a3L=a("40389"),a3M=a(P),a3N=a(wL),a3O=a(P),a3P=a("3760"),a3Q=a(wL),a3R=a(p),a3S=a("25826"),a3T=a("31325"),a3U=a(z),a3V=a("34152"),a3W=a(X),a3X=a("35564"),a3Y=a(_),a3Z=a("36996"),a30=a(ah),a31=a("38406"),a32=a(P),a33=a(zI),a34=a(P),a35=a("3578"),a36=a(zI),a38=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a3j=[0,a(Q),nC,5,nC,32,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a2z=a(p),a2A=a("31476"),a2B=a("37933"),a2C=a(z),a2D=a("40787"),a2E=a(X),a2F=a("41927"),a2G=a(_),a2H=a("43106"),a2I=a(ah),a2J=a("44262"),a2K=a(P),a2L=a(wB),a2M=a(P),a2N=a("3936"),a2O=a(wB),a2P=a(p),a2Q=a("27614"),a2R=a("33853"),a2S=a(z),a2T=a("36646"),a2U=a(X),a2V=a("37915"),a2W=a(_),a2X=a("39222"),a2Y=a(ah),a2Z=a("40510"),a20=a(P),a21=a(E4),a22=a(P),a23=a("3771"),a24=a(E4),a25=a(p),a26=a("25904"),a27=a("31419"),a28=a(z),a29=a("34255"),a2_=a(X),a2$=a("35670"),a3a=a(_),a3b=a("37107"),a3c=a(ah),a3d=a("38521"),a3e=a(P),a3f=a(F1),a3g=a(P),a3h=a("3588"),a3i=a(F1),a3k=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bhL=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a2y=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a2v=[0,a(E),FZ,14,FZ,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a2t=a(p),a2u=a(p),a2w=[0,a(d),n7,10,n7,32,[0,a(D),[0,a(A),[0,a(e),0]]]],a2s=[0,a(d),n7,10,n7,32,[0,a(D),[0,a(A),[0,a(e),0]]]],a2n=[0,a(aO),vd,5,vd,16,[0,a(or),[0,a(bB),[0,a(aM),0]]]],a2k=a(gS),a2l=a(qA),a2m=a(ff),a2o=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a2j=[0,a(aO),hB,43,hB,70,[0,a(vz),[0,a(bB),[0,a(aM),0]]]],a2f=a(p),a2g=a(ff),a2h=a(gS),a2i=a(ff),a2p=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a2c=[0,a(Q),D9,5,D9,16,[0,a(or),[0,a(bn),[0,a(L),0]]]],a1$=a(gD),a2a=a(qX),a2b=a(fo),a2d=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1_=[0,a(Q),D_,31,D_,58,[0,a(vz),[0,a(bn),[0,a(L),0]]]],a16=a(p),a17=a(fo),a18=a(gD),a19=a(fo),a2e=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a15=[0,a(d),dp,47,dp,53,[0,a(D),[0,a(A),[0,a(e),0]]]],a1Z=[0,a(d),iS,14,iS,50,[0,a(D),[0,a(A),[0,a(e),0]]]],a1T=[0,a(E),hC,14,hC,64,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1P=[0,a(E),hq,14,hq,59,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1L=[0,a(Q),yz,14,yz,33,[0,a(CU),[0,a(bn),[0,a(L),0]]]],a1K=a(AF),a1G=[0,a(Q),B3,14,B3,33,[0,a(Cx),[0,a(bn),[0,a(L),0]]]],a1F=a(sh),a1B=[0,a(Q),Eu,14,Eu,41,[0,a(CU),[0,a(bn),[0,a(L),0]]]],a1A=a("390000"),a1w=[0,a(Q),Fj,14,Fj,41,[0,a(Cx),[0,a(bn),[0,a(L),0]]]],a1v=a(qI),a1r=[0,a(Q),FN,14,FN,41,[0,a("Article 36"),[0,a(bn),[0,a(L),0]]]],a1q=a(ig),a1m=[0,a(fc),C1,14,C1,36,[0,a(C5),[0,a(zb),0]]],a1k=a(vD),a1l=a(et),a1g=[0,a(Q),yd,14,yd,40,[0,a("Article 35"),[0,a(bn),[0,a(L),0]]]],a1f=a(kk),a1h=[0,a(d),ok,11,ok,37,[0,a(D),[0,a(A),[0,a(e),0]]]],a1e=[0,a(d),ok,11,ok,37,[0,a(D),[0,a(A),[0,a(e),0]]]],a1i=[0,a(V),[0,a("montant_forfaitaire_d842_6"),0]],a1n=[0,a(d),n$,11,n$,33,[0,a(D),[0,a(A),[0,a(e),0]]]],a1j=[0,a(d),n$,11,n$,33,[0,a(D),[0,a(A),[0,a(e),0]]]],a1o=[0,a(V),[0,a(FA),0]],a1s=[0,a(d),o8,11,o8,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1p=[0,a(d),o8,11,o8,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1t=[0,a(V),[0,a("montant_minimal_aide_d842_6"),0]],a1x=[0,a(d),lQ,11,lQ,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1u=[0,a(d),lQ,11,lQ,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1y=[0,a(V),[0,a("montant_forfaitaire_d842_11"),0]],a1C=[0,a(d),mT,11,mT,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1z=[0,a(d),mT,11,mT,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1D=[0,a(V),[0,a("montant_forfaitaire_d842_12"),0]],a1H=[0,a(d),oU,11,oU,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1E=[0,a(d),oU,11,oU,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1I=[0,a(V),[0,a("coefficient_d842_11"),0]],a1M=[0,a(d),mc,11,mc,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1J=[0,a(d),mc,11,mc,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1N=[0,a(V),[0,a("coefficient_d842_12"),0]],a1Q=[0,a(E),hq,14,hq,59,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1R=[0,a(V),[0,a(nh),0]],a1O=[0,a(E),hq,14,hq,59,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1U=[0,a(E),hC,14,hC,64,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1V=[0,a(V),[0,a(n2),0]],a1S=[0,a(E),hC,14,hC,64,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1W=[0,a(V),[0,a(gb),[0,a(kq),0]]],a1X=[0,a(V),[0,a(gb),[0,a(kq),0]]],a10=[0,a(d),iS,14,iS,50,[0,a(D),[0,a(A),[0,a(e),0]]]],a11=[0,a(V),[0,a(ky),0]],a1Y=[0,a(d),iS,14,iS,50,[0,a(D),[0,a(A),[0,a(e),0]]]],a12=[0,a(V),[0,a(eJ),[0,a(bk),0]]],a13=[0,a(V),[0,a(eJ),[0,a(bk),0]]],a2q=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a14=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a2r=[0,a(V),[0,a(qB),0]],a2x=[0,a(V),[0,a(bI),0]],bhM=[0,a(V),[0,a(b$),0]],bhS=[0,a(d),fU,11,fU,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bhN=[0,a(d),fU,11,fU,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bhT=[0,a(V),[0,a("seuil_minimal_ressources_m\xc3\xa9nage"),0]],bhX=[0,a(V),[0,a(de),0]],biq=[0,a(V),[0,a(dE),0]],biy=[0,a(d),iT,10,iT,15,[0,a(D),[0,a(A),[0,a(e),0]]]],bir=[0,a(d),iT,10,iT,15,[0,a(D),[0,a(A),[0,a(e),0]]]],biz=[0,a(V),[0,a(CW),0]],biQ=[0,a(d),h0,11,h0,36,[0,a(D),[0,a(A),[0,a(e),0]]]],biA=[0,a(d),h0,11,h0,36,[0,a(D),[0,a(A),[0,a(e),0]]]],biR=[0,a(V),[0,a("plafond_mensualit\xc3\xa9_d842_6"),0]],biU=[0,a(E),js,14,js,75,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biV=[0,a(V),[0,a(mK),0]],biS=[0,a(E),js,14,js,75,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biY=[0,a(E),hH,14,hH,69,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biZ=[0,a(V),[0,a(on),0]],biW=[0,a(E),hH,14,hH,69,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bi2=[0,a(E),hx,14,hx,70,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bi3=[0,a(V),[0,a(mz),0]],bi0=[0,a(E),hx,14,hx,70,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bi4=[0,a(V),[0,a(fI),[0,a(dP),0]]],bi5=[0,a(V),[0,a(fI),[0,a(dP),0]]],bi9=[0,a(d),ju,14,ju,59,[0,a(D),[0,a(A),[0,a(e),0]]]],bi_=[0,a(V),[0,a(xW),0]],bi6=[0,a(d),ju,14,ju,59,[0,a(D),[0,a(A),[0,a(e),0]]]],bjb=[0,a(d),iy,14,iy,61,[0,a(D),[0,a(A),[0,a(e),0]]]],bjc=[0,a(V),[0,a(zv),0]],bi$=[0,a(d),iy,14,iy,61,[0,a(D),[0,a(A),[0,a(e),0]]]],bjf=[0,a(d),jo,14,jo,67,[0,a(D),[0,a(A),[0,a(e),0]]]],bjg=[0,a(V),[0,a(vH),0]],bjd=[0,a(d),jo,14,jo,67,[0,a(D),[0,a(A),[0,a(e),0]]]],bjj=[0,a(d),iY,14,iY,65,[0,a(D),[0,a(A),[0,a(e),0]]]],bjk=[0,a(V),[0,a(Fy),0]],bjh=[0,a(d),iY,14,iY,65,[0,a(D),[0,a(A),[0,a(e),0]]]],bjn=[0,a(d),ii,14,ii,70,[0,a(D),[0,a(A),[0,a(e),0]]]],bjo=[0,a(V),[0,a(Cm),0]],bjl=[0,a(d),ii,14,ii,70,[0,a(D),[0,a(A),[0,a(e),0]]]],bjr=[0,a(d),i2,14,i2,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bjs=[0,a(V),[0,a(CB),0]],bjp=[0,a(d),i2,14,i2,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bjv=[0,a(d),hR,14,hR,53,[0,a(D),[0,a(A),[0,a(e),0]]]],bjw=[0,a(V),[0,a(Fb),0]],bjt=[0,a(d),hR,14,hR,53,[0,a(D),[0,a(A),[0,a(e),0]]]],bjA=[0,a(d),gG,14,gG,49,[0,a(D),[0,a(A),[0,a(e),0]]]],bjB=[0,a(V),[0,a(wp),0]],bjx=[0,a(d),gG,14,gG,49,[0,a(D),[0,a(A),[0,a(e),0]]]],bjI=[0,a(V),[0,a(nL),[0,a(au),0]]],bjJ=[0,a(V),[0,a(nL),[0,a(au),0]]],bjO=[0,a(d),gV,11,gV,47,[0,a(D),[0,a(A),[0,a(e),0]]]],bjK=[0,a(d),gV,11,gV,47,[0,a(D),[0,a(A),[0,a(e),0]]]],bjP=[0,a(V),[0,a("seuil_minimal_d\xc3\xa9pense_nette_minimale"),0]],bjS=[0,a(d),og,11,og,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bjQ=[0,a(d),og,11,og,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bjT=[0,a(V),[0,a(sq),0]],bjW=[0,a(d),kx,11,kx,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bjU=[0,a(d),kx,11,kx,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bjX=[0,a(V),[0,a(q_),0]],bj0=[0,a(d),kN,11,kN,38,[0,a(D),[0,a(A),[0,a(e),0]]]],bjY=[0,a(d),kN,11,kN,38,[0,a(D),[0,a(A),[0,a(e),0]]]],bj1=[0,a(V),[0,a(q7),0]],bj_=[0,a(V),[0,a(eK),0]],bkb=[0,a(d),m6,12,m6,31,[0,a(D),[0,a(A),[0,a(e),0]]]],bj$=[0,a(d),m6,12,m6,31,[0,a(D),[0,a(A),[0,a(e),0]]]],bkc=[0,a(V),[0,a(cX),0]],bkp=[0,a(V),[0,a(er),0]],bkE=[0,a(V),[0,a(bJ),0]],bkN=[0,a(V),[0,a(fl),0]],a1b=[0,a(E),yx,14,yx,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a08=[0,a(ao),[0,a(bJ),[0,a(ac),0]]],a09=[0,a(ao),[0,a(bJ),0]],a0_=[0,a(ao),[0,a(bJ),[0,a(ae),0]]],a0$=[0,a(ao),[0,a(bJ),0]],a1a=a(p),a1c=[0,a(d),na,10,na,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a07=[0,a(d),na,10,na,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a04=[0,a(E),xD,14,xD,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0T=[0,a(ao),[0,a(kE),[0,a(ac),0]]],a0U=[0,a(ao),[0,a(kE),0]],a0V=[0,a(ao),[0,a(kE),[0,a(ae),0]]],a0W=[0,a(ao),[0,a(kE),0]],a0X=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],a0Y=[0,a(bk),[0,a(bQ),0]],a0Z=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],a00=[0,a(bk),[0,a(bQ),0]],a01=a(kW),a02=a(p),a03=a(p),a05=[0,a(d),lS,10,lS,40,[0,a(N),[0,a(A),[0,a(e),0]]]],a0S=[0,a(d),lS,10,lS,40,[0,a(N),[0,a(A),[0,a(e),0]]]],a0P=[0,a(E),w0,14,w0,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0L=[0,a(ao),[0,a(er),[0,a(ac),0]]],a0M=[0,a(ao),[0,a(er),0]],a0N=[0,a(ao),[0,a(er),[0,a(ae),0]]],a0O=[0,a(ao),[0,a(er),0]],a0Q=[0,a(d),kz,10,kz,19,[0,a(N),[0,a(A),[0,a(e),0]]]],a0K=[0,a(d),kz,10,kz,19,[0,a(N),[0,a(A),[0,a(e),0]]]],a0H=[0,a(E),AM,14,AM,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0x=[0,a(ao),[0,a(bI),[0,a(ac),0]]],a0y=[0,a(ao),[0,a(bI),0]],a0z=[0,a(ao),[0,a(bI),[0,a(ae),0]]],a0A=[0,a(ao),[0,a(bI),0]],a0B=[0,a(ao),[0,a(eK),[0,a(ac),0]]],a0C=[0,a(ao),[0,a(eK),0]],a0D=[0,a(ao),[0,a(eK),[0,a(ae),0]]],a0E=[0,a(ao),[0,a(eK),0]],a0F=a(p),a0G=a(p),a0I=[0,a(d),l5,10,l5,32,[0,a(N),[0,a(A),[0,a(e),0]]]],a0w=[0,a(d),l5,10,l5,32,[0,a(N),[0,a(A),[0,a(e),0]]]],a0t=[0,a(E),DG,14,DG,33,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0p=[0,a(E),yF,14,yF,47,[0,a(CK),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0g=[0,a(ao),[0,a(de),[0,a(ac),0]]],a0h=[0,a(ao),[0,a(de),0]],a0i=[0,a(ao),[0,a(de),[0,a(ae),0]]],a0j=[0,a(ao),[0,a(de),0]],a0k=[0,a(ao),[0,a(de),[0,a(ac),0]]],a0l=[0,a(ao),[0,a(de),0]],a0m=[0,a(ao),[0,a(de),[0,a(ae),0]]],a0n=[0,a(ao),[0,a(de),0]],a0o=a(p),a0q=[0,a(d),n1,11,n1,44,[0,a(N),[0,a(A),[0,a(e),0]]]],a0f=[0,a(d),n1,11,n1,44,[0,a(N),[0,a(A),[0,a(e),0]]]],a0c=[0,a(E),Fd,14,Fd,27,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ_=[0,a(E),BG,14,BG,36,[0,a(CK),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ$=[0,a(d),md,11,md,33,[0,a(N),[0,a(A),[0,a(e),0]]]],aZ9=[0,a(d),md,11,md,33,[0,a(N),[0,a(A),[0,a(e),0]]]],aZ6=[0,a(E),y1,14,y1,41,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ0=[0,a(E),hw,14,hw,70,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZW=[0,a(E),h8,14,h8,69,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZS=[0,a(E),hW,14,hW,75,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZO=[0,a(E),D5,14,D5,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZM=a(p),aZN=a(p),aZP=[0,a(d),oB,10,oB,32,[0,a(N),[0,a(A),[0,a(e),0]]]],aZL=[0,a(d),oB,10,oB,32,[0,a(N),[0,a(A),[0,a(e),0]]]],aZH=[0,a(Q),yj,6,yj,79,[0,a(fF),[0,a(fZ),[0,a(L),0]]]],aZF=a("8708"),aZG=a("13559"),aZI=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZD=[0,a(Q),4153,6,4154,38,[0,a(fF),[0,a(fZ),[0,a(L),0]]]],aZB=a("21362"),aZC=a("33196"),aZE=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZy=[0,a(Q),rS,6,4172,24,[0,a(fF),[0,a(fZ),[0,a(L),0]]]],aZw=a(z$),aZx=a(Av),aZz=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZv=[0,a(Q),4135,6,4136,46,[0,a(fF),[0,a(fZ),[0,a(L),0]]]],aZt=a(z$),aZu=a(Av),aZA=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZr=[0,a(aO),su,6,su,79,[0,a(fF),[0,a(bB),[0,a(aM),0]]]],aZp=a("8414"),aZq=a("13100"),aZs=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZn=[0,a(aO),j6,6,747,38,[0,a(fF),[0,a(bB),[0,a(aM),0]]]],aZl=a("20640"),aZm=a("32073"),aZo=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZi=[0,a(aO),765,6,766,24,[0,a(fF),[0,a(bB),[0,a(aM),0]]]],aZg=a(D4),aZh=a(zP),aZj=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZf=[0,a(aO),727,6,728,46,[0,a(fF),[0,a(bB),[0,a(aM),0]]]],aZd=a(D4),aZe=a(zP),aZk=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aY_=[0,a(Q),CQ,14,CQ,41,[0,a(B2),[0,a(fZ),[0,a(L),0]]]],aY6=a(p),aY7=a(fo),aY8=a(gD),aY9=a(fo),aY$=[0,a(d),fC,12,fC,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aY4=[0,a(aO),Bq,14,Bq,41,[0,a(B2),[0,a(bB),[0,a(aM),0]]]],aY0=a(p),aY1=a(ff),aY2=a(gS),aY3=a(ff),aY5=[0,a(d),fC,12,fC,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aYU=[0,a(E),nN,14,nN,61,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYV=[0,a(E),nN,14,nN,61,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYW=[0,a(ao),[0,a(Eh),0]],aYR=[0,a(d),h7,14,h7,49,[0,a(N),[0,a(A),[0,a(e),0]]]],aYN=[0,a(d),i_,14,i_,53,[0,a(N),[0,a(A),[0,a(e),0]]]],aYJ=[0,a(d),iw,14,iw,44,[0,a(N),[0,a(A),[0,a(e),0]]]],aYF=[0,a(d),iA,14,iA,70,[0,a(N),[0,a(A),[0,a(e),0]]]],aYB=[0,a(d),hO,14,hO,65,[0,a(N),[0,a(A),[0,a(e),0]]]],aYx=[0,a(d),hl,14,hl,67,[0,a(N),[0,a(A),[0,a(e),0]]]],aYt=[0,a(d),iL,14,iL,61,[0,a(N),[0,a(A),[0,a(e),0]]]],aYp=[0,a(d),iP,14,iP,59,[0,a(N),[0,a(A),[0,a(e),0]]]],aYj=[0,a(d),f7,14,f7,50,[0,a(N),[0,a(A),[0,a(e),0]]]],aYd=[0,a(E),hu,14,hu,64,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aX$=[0,a(E),jq,14,jq,59,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aX7=[0,a(E),it,14,it,55,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aX3=[0,a(Q),yB,14,yB,51,[0,a("Article 44"),[0,a(fZ),[0,a(L),0]]]],aX2=a(qI),aXY=[0,a(Q),oM,14,oM,41,[0,a("Article 41"),[0,a(fZ),[0,a(L),0]]]],aXX=a(kk),aXT=[0,a(Q),Dm,14,Dm,42,[0,a("Article 42"),[0,a(fZ),[0,a(L),0]]]],aXS=a(ig),aXU=[0,a(d),i6,11,i6,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aXR=[0,a(d),i6,11,i6,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aXV=[0,a(ao),[0,a("montant_minimal_aide_d842_15"),0]],aXZ=[0,a(d),lY,11,lY,38,[0,a(N),[0,a(A),[0,a(e),0]]]],aXW=[0,a(d),lY,11,lY,38,[0,a(N),[0,a(A),[0,a(e),0]]]],aX0=[0,a(ao),[0,a("montant_forfaitaire_d842_15"),0]],aX4=[0,a(d),np,11,np,48,[0,a(N),[0,a(A),[0,a(e),0]]]],aX1=[0,a(d),np,11,np,48,[0,a(N),[0,a(A),[0,a(e),0]]]],aX5=[0,a(ao),[0,a("montant_minimal_d\xc3\xa9pense_nette_d842_17"),0]],aX8=[0,a(E),it,14,it,55,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aX9=[0,a(ao),[0,a(BA),0]],aX6=[0,a(E),it,14,it,55,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYa=[0,a(E),jq,14,jq,59,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYb=[0,a(ao),[0,a(nh),0]],aX_=[0,a(E),jq,14,jq,59,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYe=[0,a(E),hu,14,hu,64,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYf=[0,a(ao),[0,a(n2),0]],aYc=[0,a(E),hu,14,hu,64,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYg=[0,a(ao),[0,a(gb),[0,a(kw),0]]],aYh=[0,a(ao),[0,a(gb),[0,a(kw),0]]],aYk=[0,a(d),f7,14,f7,50,[0,a(N),[0,a(A),[0,a(e),0]]]],aYl=[0,a(ao),[0,a(ky),0]],aYi=[0,a(d),f7,14,f7,50,[0,a(N),[0,a(A),[0,a(e),0]]]],aYm=[0,a(ao),[0,a(eJ),[0,a(bk),0]]],aYn=[0,a(ao),[0,a(eJ),[0,a(bk),0]]],aYq=[0,a(d),iP,14,iP,59,[0,a(N),[0,a(A),[0,a(e),0]]]],aYr=[0,a(ao),[0,a(xW),0]],aYo=[0,a(d),iP,14,iP,59,[0,a(N),[0,a(A),[0,a(e),0]]]],aYu=[0,a(d),iL,14,iL,61,[0,a(N),[0,a(A),[0,a(e),0]]]],aYv=[0,a(ao),[0,a(zv),0]],aYs=[0,a(d),iL,14,iL,61,[0,a(N),[0,a(A),[0,a(e),0]]]],aYy=[0,a(d),hl,14,hl,67,[0,a(N),[0,a(A),[0,a(e),0]]]],aYz=[0,a(ao),[0,a(vH),0]],aYw=[0,a(d),hl,14,hl,67,[0,a(N),[0,a(A),[0,a(e),0]]]],aYC=[0,a(d),hO,14,hO,65,[0,a(N),[0,a(A),[0,a(e),0]]]],aYD=[0,a(ao),[0,a(Fy),0]],aYA=[0,a(d),hO,14,hO,65,[0,a(N),[0,a(A),[0,a(e),0]]]],aYG=[0,a(d),iA,14,iA,70,[0,a(N),[0,a(A),[0,a(e),0]]]],aYH=[0,a(ao),[0,a(Cm),0]],aYE=[0,a(d),iA,14,iA,70,[0,a(N),[0,a(A),[0,a(e),0]]]],aYK=[0,a(d),iw,14,iw,44,[0,a(N),[0,a(A),[0,a(e),0]]]],aYL=[0,a(ao),[0,a(CB),0]],aYI=[0,a(d),iw,14,iw,44,[0,a(N),[0,a(A),[0,a(e),0]]]],aYO=[0,a(d),i_,14,i_,53,[0,a(N),[0,a(A),[0,a(e),0]]]],aYP=[0,a(ao),[0,a(Fb),0]],aYM=[0,a(d),i_,14,i_,53,[0,a(N),[0,a(A),[0,a(e),0]]]],aYS=[0,a(d),h7,14,h7,49,[0,a(N),[0,a(A),[0,a(e),0]]]],aYT=[0,a(ao),[0,a(wp),0]],aYQ=[0,a(d),h7,14,h7,49,[0,a(N),[0,a(A),[0,a(e),0]]]],aYX=[0,a(ao),[0,a(nL),[0,a(au),0]]],aYY=[0,a(ao),[0,a(nL),[0,a(au),0]]],aZa=[0,a(d),fC,12,fC,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aYZ=[0,a(d),fC,12,fC,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aZb=[0,a(ao),[0,a(qB),0]],aZJ=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZc=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZK=[0,a(ao),[0,a(ve),0]],aZQ=[0,a(ao),[0,a(bI),0]],aZT=[0,a(E),hW,14,hW,75,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZU=[0,a(ao),[0,a(mK),0]],aZR=[0,a(E),hW,14,hW,75,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZX=[0,a(E),h8,14,h8,69,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZY=[0,a(ao),[0,a(on),0]],aZV=[0,a(E),h8,14,h8,69,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ1=[0,a(E),hw,14,hw,70,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ2=[0,a(ao),[0,a(mz),0]],aZZ=[0,a(E),hw,14,hw,70,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ3=[0,a(ao),[0,a(fI),[0,a(dP),0]]],aZ4=[0,a(ao),[0,a(fI),[0,a(dP),0]]],aZ7=[0,a(d),m9,12,m9,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aZ5=[0,a(d),m9,12,m9,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aZ8=[0,a(ao),[0,a(q7),0]],a0a=[0,a(ao),[0,a(de),0]],a0d=[0,a(d),nt,12,nt,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a0b=[0,a(d),nt,12,nt,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a0e=[0,a(ao),[0,a(FQ),0]],a0r=[0,a(ao),[0,a(eK),0]],a0u=[0,a(d),nG,12,nG,31,[0,a(N),[0,a(A),[0,a(e),0]]]],a0s=[0,a(d),nG,12,nG,31,[0,a(N),[0,a(A),[0,a(e),0]]]],a0v=[0,a(ao),[0,a(cX),0]],a0J=[0,a(ao),[0,a(er),0]],a0R=[0,a(ao),[0,a(kE),0]],a06=[0,a(ao),[0,a(bJ),0]],a1d=[0,a(ao),[0,a(fl),0]],aXN=[0,a(E),wh,24,wh,43,[0,a(Ft),[0,a(ss),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aXM=a(p),aXO=[0,a(d),ic,12,ic,31,[0,a(K),[0,a(A),[0,a(e),0]]]],aXL=[0,a(d),rd,14,rd,33,[0,a(K),[0,a(A),[0,a(e),0]]]],aXG=[0,a(E),vX,24,vX,46,[0,a(Ft),[0,a(ss),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aXH=[0,a(d),i$,12,i$,34,[0,a(K),[0,a(A),[0,a(e),0]]]],aXF=[0,a(d),Bi,14,Bi,36,[0,a(K),[0,a(A),[0,a(e),0]]]],aXB=[0,a(aD),[0,a(fl),[0,a(ac),0]]],aXC=[0,a(aD),[0,a(fl),0]],aXD=[0,a(aD),[0,a(fl),[0,a(ae),0]]],aXE=[0,a(aD),[0,a(fl),0]],aXI=[0,a(d),i$,12,i$,34,[0,a(K),[0,a(A),[0,a(e),0]]]],aXA=[0,a(d),i$,12,i$,34,[0,a(K),[0,a(A),[0,a(e),0]]]],aXv=[0,a(d),gC,14,gC,55,[0,a(K),[0,a(A),[0,a(e),0]]]],aXr=[0,a(d),eU,14,eU,59,[0,a(K),[0,a(A),[0,a(e),0]]]],aXn=[0,a(d),gM,14,gM,43,[0,a(K),[0,a(A),[0,a(e),0]]]],aXj=[0,a(d),hE,14,hE,42,[0,a(K),[0,a(A),[0,a(e),0]]]],aXf=[0,a(d),rT,5,rk,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aXb=[0,a(d),gH,14,gH,53,[0,a(K),[0,a(A),[0,a(e),0]]]],aW9=[0,a(d),jr,14,jr,37,[0,a(K),[0,a(A),[0,a(e),0]]]],aW5=[0,a(d),jd,14,jd,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aW1=[0,a(d),hz,14,hz,58,[0,a(K),[0,a(A),[0,a(e),0]]]],aWX=[0,a(d),ik,14,ik,46,[0,a(K),[0,a(A),[0,a(e),0]]]],aWT=[0,a(d),i7,14,i7,78,[0,a(K),[0,a(A),[0,a(e),0]]]],aWP=[0,a(d),hI,14,hI,60,[0,a(K),[0,a(A),[0,a(e),0]]]],aWL=[0,a(d),jh,14,jh,48,[0,a(K),[0,a(A),[0,a(e),0]]]],aWM=[0,a(d),jh,14,jh,48,[0,a(K),[0,a(A),[0,a(e),0]]]],aWN=[0,a(bh),[0,a("calcul_apl_locatif.loyer_principal_base"),0]],aWK=[0,a(d),jh,14,jh,48,[0,a(K),[0,a(A),[0,a(e),0]]]],aWQ=[0,a(d),hI,14,hI,60,[0,a(K),[0,a(A),[0,a(e),0]]]],aWR=[0,a(bh),[0,a("calcul_apl_locatif.ressources_m\xc3\xa9nage_arrondies"),0]],aWO=[0,a(d),hI,14,hI,60,[0,a(K),[0,a(A),[0,a(e),0]]]],aWU=[0,a(d),i7,14,i7,78,[0,a(K),[0,a(A),[0,a(e),0]]]],aWV=[0,a(bh),[0,a("calcul_apl_locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),0]],aWS=[0,a(d),i7,14,i7,78,[0,a(K),[0,a(A),[0,a(e),0]]]],aWY=[0,a(d),ik,14,ik,46,[0,a(K),[0,a(A),[0,a(e),0]]]],aWZ=[0,a(bh),[0,a("calcul_apl_locatif.date_courante"),0]],aWW=[0,a(d),ik,14,ik,46,[0,a(K),[0,a(A),[0,a(e),0]]]],aW2=[0,a(d),hz,14,hz,58,[0,a(K),[0,a(A),[0,a(e),0]]]],aW3=[0,a(bh),[0,a("calcul_apl_locatif.nombre_personnes_\xc3\xa0_charge"),0]],aW0=[0,a(d),hz,14,hz,58,[0,a(K),[0,a(A),[0,a(e),0]]]],aW6=[0,a(d),jd,14,jd,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aW7=[0,a(bh),[0,a("calcul_apl_locatif.situation_familiale_calcul_apl"),0]],aW4=[0,a(d),jd,14,jd,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aW_=[0,a(d),jr,14,jr,37,[0,a(K),[0,a(A),[0,a(e),0]]]],aW$=[0,a(bh),[0,a("calcul_apl_locatif.zone"),0]],aW8=[0,a(d),jr,14,jr,37,[0,a(K),[0,a(A),[0,a(e),0]]]],aXc=[0,a(d),gH,14,gH,53,[0,a(K),[0,a(A),[0,a(e),0]]]],aXd=[0,a(bh),[0,a("calcul_apl_locatif.logement_est_chambre"),0]],aXa=[0,a(d),gH,14,gH,53,[0,a(K),[0,a(A),[0,a(e),0]]]],aXg=[0,a(d),rT,5,rk,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aXh=[0,a(bh),[0,a("calcul_apl_locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),0]],aXe=[0,a(d),rT,5,rk,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aXk=[0,a(d),hE,14,hE,42,[0,a(K),[0,a(A),[0,a(e),0]]]],aXl=[0,a(bh),[0,a("calcul_apl_locatif.type_aide"),0]],aXi=[0,a(d),hE,14,hE,42,[0,a(K),[0,a(A),[0,a(e),0]]]],aXo=[0,a(d),gM,14,gM,43,[0,a(K),[0,a(A),[0,a(e),0]]]],aXp=[0,a(bh),[0,a("calcul_apl_locatif.colocation"),0]],aXm=[0,a(d),gM,14,gM,43,[0,a(K),[0,a(A),[0,a(e),0]]]],aXs=[0,a(d),eU,14,eU,59,[0,a(K),[0,a(A),[0,a(e),0]]]],aXt=[0,a(bh),[0,a("calcul_apl_locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),0]],aXq=[0,a(d),eU,14,eU,59,[0,a(K),[0,a(A),[0,a(e),0]]]],aXw=[0,a(d),gC,14,gC,55,[0,a(K),[0,a(A),[0,a(e),0]]]],aXx=[0,a(bh),[0,a("calcul_apl_locatif.logement_meubl\xc3\xa9_d842_2"),0]],aXu=[0,a(d),gC,14,gC,55,[0,a(K),[0,a(A),[0,a(e),0]]]],aXy=[0,a(bh),[0,a(E_),[0,a(aD),0]]],aXz=[0,a(bh),[0,a(E_),[0,a(aD),0]]],aXJ=[0,a(bh),[0,a(aw),0]],aXP=[0,a(d),ic,12,ic,31,[0,a(K),[0,a(A),[0,a(e),0]]]],aXK=[0,a(d),ic,12,ic,31,[0,a(K),[0,a(A),[0,a(e),0]]]],aXQ=[0,a(bh),[0,a(cX),0]],aWE=[0,a(mr),67,5,71,21,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],aWF=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWD=[0,a(mr),56,5,57,50,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],aWG=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWH=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWC=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWI=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWB=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWx=[0,a(mr),77,5,81,24,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],aWy=[0,a(bG),41,12,41,31,[0,a(bK),0]],aWw=[0,a(bG),41,12,41,31,[0,a(bK),0]],aWz=[0,a(bG),41,12,41,31,[0,a(bK),0]],aWv=[0,a(bG),41,12,41,31,[0,a(bK),0]],aWr=[0,a(q9),62,18,62,41,[0,a(xH),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(c7),[0,a(af),0]]]]]]],aWp=a(oS),aWq=a(n0),aWs=[0,a(bG),42,11,42,27,[0,a(bK),0]],aWo=[0,a(q9),31,14,31,30,[0,a(lU),[0,a(nR),[0,a(ed),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],aWm=a(oS),aWn=a(n0),aWb=[5,0],aWc=[4,0],aWd=[3,0],aWe=[2,0],aWf=[1,0],aWg=[0,0],aWh=[0,a(mr),dm,5,w5,30,[0,a(CJ),[0,a(yw),[0,a(ke),[0,a(d0),[0,a(ab),[0,a(af),0]]]]]]],aWi=[0,a(bG),44,12,44,35,[0,a(bK),0]],aWa=[0,a(bG),44,12,44,35,[0,a(bK),0]],aV6=[0,a(bG),51,14,51,28,[0,a(bK),0]],aV2=[0,a(bG),52,14,52,32,[0,a(bK),0]],aVY=[0,a(q9),21,14,21,26,[0,a(lU),[0,a(nR),[0,a(ed),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],aVZ=[0,a(bG),43,12,43,24,[0,a(bK),0]],aVX=[0,a(bG),43,12,43,24,[0,a(bK),0]],aV0=[0,a(cq),[0,a(y7),0]],aV3=[0,a(bG),52,14,52,32,[0,a(bK),0]],aV4=[0,a(cq),[0,a(Fa),0]],aV1=[0,a(bG),52,14,52,32,[0,a(bK),0]],aV7=[0,a(bG),51,14,51,28,[0,a(bK),0]],aV8=[0,a(cq),[0,a(DE),0]],aV5=[0,a(bG),51,14,51,28,[0,a(bK),0]],aV9=[0,a(cq),[0,a(ge),[0,a(ho),0]]],aV_=[0,a(cq),[0,a(ge),[0,a(ho),0]]],aWj=[0,a(bG),44,12,44,35,[0,a(bK),0]],aV$=[0,a(bG),44,12,44,35,[0,a(bK),0]],aWk=[0,a(cq),[0,a(vk),0]],aWt=[0,a(bG),42,11,42,27,[0,a(bK),0]],aWl=[0,a(bG),42,11,42,27,[0,a(bK),0]],aWu=[0,a(cq),[0,a(Ae),0]],aWA=[0,a(cq),[0,a(iU),0]],aWJ=[0,a(cq),[0,a(dh),0]],aVS=[0,a(E),r2,14,r2,32,[0,a(mE),[0,a(iC),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVQ=a(cI),aVR=a(p),aVL=[0,a(E),aR,6,gV,35,[0,a("Article R822-20"),[0,a("Sous-section 3 : Montant forfaitaire de ressources applicable aux \xc3\xa9tudiants"),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVM=[0,a(d),jk,12,jk,39,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVK=[0,a(E),kC,14,kC,41,[0,a(l1),[0,a(l4),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVG=[0,a(E),F8,14,F8,32,[0,a("Article R822-8"),[0,a(iC),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVF=a(p),aVz=[0,a(E),ir,14,ir,65,[0,a(mE),[0,a(iC),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVv=[0,a(E),y0,14,y0,33,[0,a("Article R822-10"),[0,a(iC),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVm=a(p),aVn=a(p),aVs=a(X),aVt=a("90100"),aVu=a("135000"),aVo=a(p),aVp=a(p),aVq=a(p),aVr=a(p),aVi=[0,a(E),iv,14,iv,62,[0,a(l1),[0,a(l4),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVh=a(p),aVd=[0,a(d),f5,51,f5,57,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU$=[0,a(Q),11,14,11,41,[0,a("Article 3"),[0,a(xI),[0,a(L),0]]]],aU_=a("9500"),aU6=[0,a(Q),21,14,21,41,[0,a("Article 4"),[0,a(xI),[0,a(L),0]]]],aU5=a("258900"),aU1=[0,a(d),E2,46,E2,52,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU2=[0,a(d),jf,10,jf,15,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU0=[0,a(d),jf,10,jf,15,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU3=[0,a(dX),[0,a(CW),0]],aU7=[0,a(d),lV,11,lV,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU4=[0,a(d),lV,11,lV,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU8=[0,a(dX),[0,a("montant_forfaitaire_r_822_8"),0]],aVa=[0,a(d),mt,11,mt,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU9=[0,a(d),mt,11,mt,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVb=[0,a(dX),[0,a("montant_forfaitaire_r_822_7"),0]],aVe=[0,a(d),f5,11,f5,42,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVc=[0,a(d),f5,11,f5,42,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVf=[0,a(dX),[0,a("ressources_forfaitaires_r822_20"),0]],aVj=[0,a(d),hk,11,hk,59,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVg=[0,a(d),hk,11,hk,59,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVk=[0,a(dX),[0,a("ressources_personnes_vivant_habituellement_foyer"),0]],aVw=[0,a(d),nV,11,nV,30,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVl=[0,a(d),nV,11,nV,30,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVx=[0,a(dX),[0,a("abattement_r_822_10"),0]],aVA=[0,a(E),ir,14,ir,65,[0,a(mE),[0,a(iC),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVB=[0,a(dX),[0,a(DV),0]],aVy=[0,a(E),ir,14,ir,65,[0,a(mE),[0,a(iC),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVC=[0,a(dX),[0,a(mS),[0,a(f_),0]]],aVD=[0,a(dX),[0,a(mS),[0,a(f_),0]]],aVH=[0,a(d),nA,11,nA,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVE=[0,a(d),nA,11,nA,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVI=[0,a(dX),[0,a("abattement_r_822_8"),0]],aVN=[0,a(d),jk,12,jk,39,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVJ=[0,a(d),jk,12,jk,39,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVO=[0,a(dX),[0,a("ressources_prises_en_compte"),0]],aVT=[0,a(d),mu,11,mu,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVP=[0,a(d),mu,11,mu,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVU=[0,a(dX),[0,a("abattement_r_822_7"),0]],aVV=[0,a(E),my,13,Dl,74,[0,a(l1),[0,a(l4),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVW=[0,a(E),my,13,Dl,74,[0,a(l1),[0,a(l4),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aUQ=[0,a(d),j5,14,j5,56,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUM=[0,a(d),B1,14,B1,63,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUK=a(b5),aUL=a(b5),aUG=[0,a(E),fb,14,fb,49,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUC=[0,a(aU),[0,a(kM),[0,a(ac),0]]],aUD=[0,a(aU),[0,a(kM),0]],aUE=[0,a(aU),[0,a(kM),[0,a(ae),0]]],aUF=[0,a(aU),[0,a(kM),0]],aUw=a(Dk),aUv=[0,a(E),1213,4,1219,48,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUx=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUq=[0,a(aU),[0,a(fj),[0,a(ac),0]]],aUr=[0,a(aU),[0,a(fj),0]],aUs=[0,a(aU),[0,a(fj),[0,a(ae),0]]],aUt=[0,a(aU),[0,a(fj),0]],aUu=[0,a(E),x5,5,x5,44,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUy=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUo=[0,a(E),1149,5,rW,44,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUp=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUn=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUz=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUm=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUh=a(Dk),aUi=[0,0],aUg=[0,a(E),1173,5,1189,10,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUj=[0,a(d),fp,12,fp,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUf=[0,a(d),fp,12,fp,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUk=[0,a(d),fp,12,fp,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUe=[0,a(d),fp,12,fp,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUa=[0,a(d),An,5,u9,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUb=[0,a(d),fE,12,fE,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT$=[0,a(d),fE,12,fE,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT7=[0,a(c8),Gd,14,Gd,31,[0,a("Article L351-8"),[0,a("Section 5 : Taux et montant de la pension"),[0,a("Chapitre 1er : Ouverture du droit, liquidation et calcul des pensions de retraite"),[0,a("Titre V : Assurance vieillesse - Assurance veuvage"),[0,a("Livre III : Dispositions relatives aux assurances sociales et \xc3\xa0 diverses cat\xc3\xa9gories de personnes rattach\xc3\xa9es au r\xc3\xa9gime g\xc3\xa9n\xc3\xa9rale"),[0,a(ab),[0,a(af),0]]]]]]]],aT1=[0,a(aG),72,5,73,52,[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]],aT2=[0,a(d),dz,11,dz,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT0=[0,a(aG),65,5,68,52,[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]],aT3=[0,a(d),dz,11,dz,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTZ=[0,a(d),dz,11,dz,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTS=[0,a(aG),hU,18,hU,75,[0,a(mB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTR=a(p),aTT=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTO=[5,0],aTP=[4,0],aTQ=[0,a(aG),vK,18,At,45,[0,a(mB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTN=a(p),aTU=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTM=[0,a(E),Cp,5,Cp,58,[0,a(EY),[0,a(Ei),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aTV=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTL=[0,a(aG),hm,33,hm,58,[0,a(mB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTK=a(p),aTG=[0,a(c8),cs,14,cs,32,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(ab),[0,a(af),0]]]]]]]]]],aTB=[0,a(aG),FS,18,FS,44,[0,a("Article L822-10"),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTC=[0,a(d),fq,11,fq,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTA=[0,a(d),fq,11,fq,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTt=a(b5),aTs=a(b5),aTr=[0,a(aG),171,5,rC,65,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTu=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTq=[0,a(aG),156,5,158,30,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTv=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTp=[0,a(aG),cs,5,w5,33,[0,a(F5),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTw=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTo=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTi=[0,a(aG),203,5,208,39,[0,a(DR),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTj=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTh=[0,a(aG),197,5,198,34,[0,a(DR),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTk=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTg=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTb=[0,a(c8),329,5,An,34,[0,a(rV),[0,a(rB),[0,a(r3),[0,a(qK),[0,a(ro),[0,a(a9),[0,a(af),0]]]]]]]],aTa=a("999840"),aTc=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS_=[0,a(c8),j5,5,335,34,[0,a(rV),[0,a(rB),[0,a(r3),[0,a(qK),[0,a(ro),[0,a(a9),[0,a(af),0]]]]]]]],aS9=a("1041840"),aS$=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS7=[0,a(c8),339,5,340,34,[0,a(rV),[0,a(rB),[0,a(r3),[0,a(qK),[0,a(ro),[0,a(a9),[0,a(af),0]]]]]]]],aS6=a("1083840"),aS8=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS4=[0,a(fc),58,5,59,33,[0,a('Circulaire de la CNAV 2023-3 du 09/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2023"'),[0,a(sb),0]]],aS3=a("1153302"),aS5=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS1=[0,a(fc),90,5,91,33,[0,a('Circulaire de la CNAV 2022-3 du 11/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2022"'),[0,a(sb),0]]],aS0=a("1100144"),aS2=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSY=[0,a(fc),fe,5,kC,33,[0,a('Circulaire de la CNAV 2021-1 du 11/01/2021 "Revalorisation \xc3\xa0 compter du 1er janvier 2021"'),[0,a(sb),0]]],aSX=a("1088175"),aSZ=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSS=[0,a(aG),c4,5,ie,67,[0,a(F5),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aST=[0,a(d),f1,11,f1,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSR=[0,a(d),f1,11,f1,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSN=[0,a(aG),mg,14,mg,40,[0,a(mB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aSH=[0,a(c8),fe,14,fe,61,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(ab),[0,a(af),0]]]]]]]]]],aSB=[0,a(aG),46,5,46,41,[0,a("Article L821-2"),[0,a(z0),[0,a(E1),[0,a(yn),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]]]],aSC=[0,a(d),di,12,di,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSA=[0,a(d),di,12,di,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSD=[0,a(d),di,12,di,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSe=a(z),aSq=a(X),aSr=a(X),aSs=a(X),aSt=a(z),aSu=a(X),aSf=a(qD),aSg=a(qD),aSl=a(lZ),aSm=a(lZ),aSn=a(lZ),aSo=a(qD),aSp=a(lZ),aSh=a("8"),aSi=a(CI),aSj=a(CI),aSk=[0,a(E),1035,5,dC,65,[0,a("Article R822-25"),[0,a("Section 3 : Conditions relatives au logement"),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aSv=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSd=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSw=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR_=[0,a(aG),E5,18,E5,67,[0,a("Article L822-8"),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aR$=[0,a(d),fH,11,fH,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR9=[0,a(d),fH,11,fH,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR4=[0,a(aG),Cc,18,Cc,61,[0,a("Article L822-9"),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aR5=[0,a(d),fY,11,fY,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR3=[0,a(d),fY,11,fY,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRZ=[0,a(aG),eY,14,eY,43,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aRV=[0,a(E),i6,14,i6,37,[0,a(EY),[0,a(Ei),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aRU=a("3000000"),aRQ=[0,a(E),a_,14,a_,41,[0,a(FB),[0,a(Bv),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRP=a(DO),aRL=[0,a(E),be,14,be,42,[0,a(FB),[0,a(Bv),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRK=a(DO),aRG=[0,a(d),hV,11,hV,48,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRC=[0,a(d),hG,11,hG,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRD=[0,a(d),hG,11,hG,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRB=[0,a(d),hG,11,hG,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRE=[0,a(aU),[0,a("condition_pr\xc3\xaat"),0]],aRH=[0,a(d),hV,11,hV,48,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRF=[0,a(d),hV,11,hV,48,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRI=[0,a(aU),[0,a("condition_peuplement_logement_l822_10"),0]],aRM=[0,a(d),ox,11,ox,39,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRJ=[0,a(d),ox,11,ox,39,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRN=[0,a(aU),[0,a("seuil_l822_3_parts_propri\xc3\xa9t\xc3\xa9"),0]],aRR=[0,a(d),nI,11,nI,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRO=[0,a(d),nI,11,nI,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRS=[0,a(aU),[0,a("seuil_l822_3_parts_usufruit"),0]],aRW=[0,a(d),o0,11,o0,34,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRT=[0,a(d),o0,11,o0,34,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRX=[0,a(aU),[0,a("seuil_l822_5_patrimoine"),0]],aR0=[0,a(d),l2,11,l2,40,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRY=[0,a(d),l2,11,l2,40,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR1=[0,a(aU),[0,a("usufruit_ou_propri\xc3\xa9t\xc3\xa9_famille"),0]],aR6=[0,a(d),fY,11,fY,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR2=[0,a(d),fY,11,fY,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR7=[0,a(aU),[0,a("condition_non_ouverture_l822_9_decence_logement"),0]],aSa=[0,a(d),fH,11,fH,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR8=[0,a(d),fH,11,fH,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSb=[0,a(aU),[0,a("condition_non_ouverture_l822_8"),0]],aSx=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSc=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSy=[0,a(aU),[0,a("condition_logement_surface"),0]],aSE=[0,a(d),di,12,di,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSz=[0,a(d),di,12,di,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSF=[0,a(aU),[0,a("condition_logement_r\xc3\xa9sidence_principale"),0]],aSI=[0,a(c8),fe,14,fe,61,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(ab),[0,a(af),0]]]]]]]]]],aSJ=[0,a(aU),[0,a("ouverture_droits_retraite.date_naissance_assur\xc3\xa9"),0]],aSG=[0,a(c8),fe,14,fe,61,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(ab),[0,a(af),0]]]]]]]]]],aSK=[0,a(aU),[0,a(CF),[0,a(rK),0]]],aSL=[0,a(aU),[0,a(CF),[0,a(rK),0]]],aSO=[0,a(d),mh,11,mh,37,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSM=[0,a(d),mh,11,mh,37,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSP=[0,a(aU),[0,a("patrimoine_total_demandeur"),0]],aSU=[0,a(d),f1,11,f1,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSQ=[0,a(d),f1,11,f1,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSV=[0,a(aU),[0,a("condition_nationalit\xc3\xa9"),0]],aTd=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSW=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTe=[0,a(aU),[0,a("plafond_individuel_l815_9_s\xc3\xa9cu"),0]],aTl=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTf=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTm=[0,a(aU),[0,a("condition_logement_location_tiers"),0]],aTx=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTn=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTy=[0,a(aU),[0,a("condition_logement_mode_occupation"),0]],aTD=[0,a(d),fq,11,fq,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTz=[0,a(d),fq,11,fq,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTE=[0,a(aU),[0,a("condition_ouverture_l822_10_peuplement_logement"),0]],aTH=[0,a(d),mn,11,mn,29,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTF=[0,a(d),mn,11,mn,29,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTI=[0,a(aU),[0,a("\xc3\xa2ge_l161_17_2_s\xc3\xa9cu"),0]],aTW=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTJ=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTX=[0,a(aU),[0,a("patrimoine_pris_en_compte"),0]],aT4=[0,a(d),dz,11,dz,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTY=[0,a(d),dz,11,dz,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT5=[0,a(aU),[0,a(A$),0]],aT8=[0,a(d),ib,11,ib,28,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT6=[0,a(d),ib,11,ib,28,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT9=[0,a(aU),[0,a("\xc3\xa2ge_l351_8_1_s\xc3\xa9cu"),0]],aUc=[0,a(d),fE,12,fE,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT_=[0,a(d),fE,12,fE,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUd=[0,a(aU),[0,a(n_),0]],aUl=[0,a(aU),[0,a(fj),0]],aUA=[0,a(aU),[0,a(kM),0]],aUH=[0,a(d),kV,11,kV,46,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUB=[0,a(d),kV,11,kV,46,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUI=[0,a(aU),[0,a("personnes_\xc3\xa0_charge_prises_en_compte"),0]],aUN=[0,a(d),oC,12,oC,61,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUJ=[0,a(d),oC,12,oC,61,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUO=[0,a(aU),[0,a(kD),0]],aUR=[0,a(d),n4,12,n4,54,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUP=[0,a(d),n4,12,n4,54,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUS=[0,a(aU),[0,a(r7),0]],aUU=a(qz),aUT=[0,a(aG),mq,13,mq,47,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aUY=[0,a(aG),mq,13,mq,47,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aUW=a(qz),aUV=[0,a(aG),jt,13,jt,48,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aUX=[0,a(aG),jt,13,jt,48,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aRy=[0,a(E),Dr,14,Dr,36,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRt=[0,a(aj),[0,a(bJ),[0,a(ac),0]]],aRu=[0,a(aj),[0,a(bJ),0]],aRv=[0,a(aj),[0,a(bJ),[0,a(ae),0]]],aRw=[0,a(aj),[0,a(bJ),0]],aRx=a(p),aRz=[0,a(d),hr,10,hr,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRs=[0,a(d),hr,10,hr,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRp=[0,a(E),yN,14,yN,33,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRn=a(p),aRo=a(p),aRj=[0,a(E),wW,14,wW,36,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQ_=[0,a(aj),[0,a(eN),[0,a(ac),0]]],aQ$=[0,a(aj),[0,a(eN),0]],aRa=[0,a(aj),[0,a(eN),[0,a(ae),0]]],aRb=[0,a(aj),[0,a(eN),0]],aRc=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],aRd=[0,a(bk),[0,a(bQ),0]],aRe=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],aRf=[0,a(bk),[0,a(bQ),0]],aRg=a(kW),aRh=a(p),aRi=a(p),aRk=[0,a(d),mZ,10,mZ,40,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ9=[0,a(d),mZ,10,mZ,40,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ6=[0,a(E),Fo,14,Fo,49,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQ4=a(hf),aQ5=a(hf),aQ0=[0,a(E),u3,14,u3,33,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQW=[0,a(E),yJ,14,yJ,36,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQM=[0,a(aj),[0,a(bI),[0,a(ac),0]]],aQN=[0,a(aj),[0,a(bI),0]],aQO=[0,a(aj),[0,a(bI),[0,a(ae),0]]],aQP=[0,a(aj),[0,a(bI),0]],aQQ=[0,a(aj),[0,a(kO),[0,a(ac),0]]],aQR=[0,a(aj),[0,a(kO),0]],aQS=[0,a(aj),[0,a(kO),[0,a(ae),0]]],aQT=[0,a(aj),[0,a(kO),0]],aQU=a(p),aQV=a(p),aQX=[0,a(d),n3,10,n3,20,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQL=[0,a(d),n3,10,n3,20,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQI=[0,a(E),yh,14,yh,49,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQF=a(c5),aQG=a(c5),aQH=a(lX),aQA=[0,a(E),3426,5,3438,77,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQy=a(cI),aQz=a(b5),aQB=[0,a(d),fV,12,fV,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQw=[0,a(E),Dt,5,Dt,75,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQx=[0,a(d),fV,12,fV,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQp=[0,a(aO),DF,14,DF,42,[0,a(ja),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aQo=a(df),aQq=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQn=[0,a(aO),hk,14,hk,42,[0,a(ja),[0,a(bB),[0,a(aM),0]]]],aQm=a(df),aQr=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQl=[0,a(Q),xl,14,xl,42,[0,a(ja),[0,a(aQ),[0,a(L),0]]]],aQk=a(df),aQs=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQg=[0,a(E),Ew,14,Ew,55,[0,a(rN),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQb=[0,a(aj),[0,a(kv),[0,a(ac),0]]],aQc=[0,a(aj),[0,a(kv),0]],aQd=[0,a(aj),[0,a(kv),[0,a(ae),0]]],aQe=[0,a(aj),[0,a(kv),0]],aQf=a(p),aQh=[0,a(d),m5,11,m5,52,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQa=[0,a(d),m5,11,m5,52,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aP9=[0,a(E),Ap,14,Ap,49,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP8=a(hf),aP2=[0,a(E),jj,14,jj,70,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPY=[0,a(E),ji,14,ji,69,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPU=[0,a(E),h3,14,h3,75,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPP=[0,a(E),zV,5,zV,44,[0,a(Bh),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPH=[0,a(aj),[0,a(dA),[0,a(ac),0]]],aPI=[0,a(aj),[0,a(dA),0]],aPJ=[0,a(aj),[0,a(dA),[0,a(ae),0]]],aPK=[0,a(aj),[0,a(dA),0]],aPL=[0,a(aj),[0,a(dA),[0,a(ac),0]]],aPM=[0,a(aj),[0,a(dA),0]],aPN=[0,a(aj),[0,a(dA),[0,a(ae),0]]],aPO=[0,a(aj),[0,a(dA),0]],aPQ=[0,a(d),hN,10,hN,14,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPG=[0,a(E),Cr,14,Cr,42,[0,a(Bh),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPC=[0,a(aj),[0,a(dA),[0,a(ac),0]]],aPD=[0,a(aj),[0,a(dA),0]],aPE=[0,a(aj),[0,a(dA),[0,a(ae),0]]],aPF=[0,a(aj),[0,a(dA),0]],aPx=[0,a(E),xz,5,xz,40,[0,a(rN),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPy=[0,a(d),jg,11,jg,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPw=[0,a(E),D3,14,D3,44,[0,a(rN),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPz=[0,a(d),jg,11,jg,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPv=[0,a(d),jg,11,jg,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPs=[0,a(E),zD,14,zD,36,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPm=[0,a(Q),gH,5,821,36,[0,a(aQ),[0,a(L),0]]],aPg=a(p),aPh=a("86900"),aPi=a("97100"),aPj=a(z),aPk=a("10200"),aPl=a("107300"),aPn=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPd=[0,a(Q),gP,5,dw,36,[0,a(aQ),[0,a(L),0]]],aOX=a(p),aOY=a(w_),aOZ=a(vW),aO0=a(z),aO1=a(Ga),aO2=a(yO),aO3=a(p),aO4=a(AG),aO5=a(Es),aO6=a(z),aO7=a(wi),aO8=a(z_),aO9=a(p),aO_=a(zf),aO$=a(ER),aPa=a(z),aPb=a("34600"),aPc=a(mk),aPe=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aOV=[0,a(Q),gB,5,1098,36,[0,a(aQ),[0,a(L),0]]],aOD=a(p),aOE=a(yt),aOF=a(rM),aOG=a(z),aOH=a(Gb),aOI=a(Ci),aOJ=a(p),aOK=a(EG),aOL=a(ra),aOM=a(z),aON=a(os),aOO=a(Al),aOP=a(p),aOQ=a(DS),aOR=a(Fp),aOS=a(z),aOT=a(Ds),aOU=a(x6),aOW=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aOB=[0,a(Q),sw,5,gL,36,[0,a(aQ),[0,a(L),0]]],aOj=a(p),aOk=a("198100"),aOl=a("239000"),aOm=a(z),aOn=a("40900"),aOo=a("279900"),aOp=a(p),aOq=a("176800"),aOr=a("212800"),aOs=a(z),aOt=a("36000"),aOu=a("248800"),aOv=a(p),aOw=a("165000"),aOx=a("197900"),aOy=a(z),aOz=a("32900"),aOA=a("230800"),aOC=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aOh=[0,a(Q),1160,5,1164,36,[0,a(aQ),[0,a(L),0]]],aN1=a(p),aN2=a("159500"),aN3=a(wF),aN4=a(z),aN5=a("33000"),aN6=a(yH),aN7=a(p),aN8=a("142200"),aN9=a("171200"),aN_=a(z),aN$=a("29000"),aOa=a("200200"),aOb=a(p),aOc=a("132800"),aOd=a("159300"),aOe=a(z),aOf=a("26500"),aOg=a(yq),aOi=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aNZ=[0,a(Q),1193,5,Gc,36,[0,a(aQ),[0,a(L),0]]],aNH=a(p),aNI=a("200100"),aNJ=a("141400"),aNK=a(z),aNL=a("41300"),aNM=a("182700"),aNN=a(p),aNO=a("178600"),aNP=a("215000"),aNQ=a(z),aNR=a("36400"),aNS=a("251400"),aNT=a(p),aNU=a("166700"),aNV=a(q0),aNW=a(z),aNX=a("33200"),aNY=a("233100"),aN0=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aNF=[0,a(Q),1226,5,1230,36,[0,a(aQ),[0,a(L),0]]],aNn=a(p),aNo=a("161100"),aNp=a("194400"),aNq=a(z),aNr=a("33300"),aNs=a("227700"),aNt=a(p),aNu=a("143600"),aNv=a("172900"),aNw=a(z),aNx=a("29300"),aNy=a("202200"),aNz=a(p),aNA=a("134100"),aNB=a("160900"),aNC=a(z),aND=a("26800"),aNE=a("187700"),aNG=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aNl=[0,a(Q),1259,5,1263,36,[0,a(aQ),[0,a(L),0]]],aM5=a(p),aM6=a(rM),aM7=a("244300"),aM8=a(z),aM9=a("41800"),aM_=a("286100"),aM$=a(p),aNa=a("180700"),aNb=a("217500"),aNc=a(z),aNd=a("36800"),aNe=a("254300"),aNf=a(p),aNg=a("168700"),aNh=a("202300"),aNi=a(z),aNj=a("33600"),aNk=a("235900"),aNm=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aM3=[0,a(Q),1292,5,1296,36,[0,a(aQ),[0,a(L),0]]],aML=a(p),aMM=a("30871"),aMN=a("37243"),aMO=a(z),aMP=a("6372"),aMQ=a("43615"),aMR=a(p),aMS=a("27548"),aMT=a("33148"),aMU=a(z),aMV=a("5610"),aMW=a("38768"),aMX=a(p),aMY=a("25718"),aMZ=a("30840"),aM0=a(z),aM1=a("5122"),aM2=a("35962"),aM4=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aMJ=[0,a(Q),1325,5,1329,36,[0,a(aQ),[0,a(L),0]]],aMr=a(p),aMs=a(xS),aMt=a("196700"),aMu=a(z),aMv=a("33700"),aMw=a("230400"),aMx=a(p),aMy=a("145300"),aMz=a("175000"),aMA=a(z),aMB=a("29700"),aMC=a(C7),aMD=a(p),aME=a("135700"),aMF=a("162800"),aMG=a(z),aMH=a("27100"),aMI=a("189900"),aMK=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aMp=[0,a(Q),1358,5,1362,36,[0,a(aQ),[0,a(L),0]]],aL9=a(p),aL_=a("24849"),aL$=a("29987"),aMa=a(z),aMb=a("5138"),aMc=a("35125"),aMd=a(p),aMe=a("22151"),aMf=a("26679"),aMg=a(z),aMh=a("4528"),aMi=a("31207"),aMj=a(p),aMk=a("20687"),aMl=a("24818"),aMm=a(z),aMn=a("4131"),aMo=a("28949"),aMq=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aL7=[0,a(Q),1391,5,so,36,[0,a(aQ),[0,a(L),0]]],aLP=a(p),aLQ=a("31241"),aLR=a("37689"),aLS=a(z),aLT=a("6448"),aLU=a("44137"),aLV=a(p),aLW=a("27879"),aLX=a("33556"),aLY=a(z),aLZ=a("5677"),aL0=a("39233"),aL1=a(p),aL2=a("26027"),aL3=a("31210"),aL4=a(z),aL5=a("5183"),aL6=a("36393"),aL8=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aLN=[0,a(Q),qZ,5,1428,36,[0,a(aQ),[0,a(L),0]]],aLv=a(p),aLw=a("25147"),aLx=a("30347"),aLy=a(z),aLz=a("5200"),aLA=a("35547"),aLB=a(p),aLC=a("22417"),aLD=a("26999"),aLE=a(z),aLF=a("4582"),aLG=a("31581"),aLH=a(p),aLI=a("20935"),aLJ=a(Ck),aLK=a(z),aLL=a("4181"),aLM=a("29297"),aLO=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aLt=[0,a(Q),1457,5,1461,36,[0,a(aQ),[0,a(L),0]]],aLb=a(p),aLc=a("31616"),aLd=a("38141"),aLe=a(z),aLf=a("6525"),aLg=a("44666"),aLh=a(p),aLi=a("28214"),aLj=a("33959"),aLk=a(z),aLl=a("5745"),aLm=a("39704"),aLn=a(p),aLo=a("26339"),aLp=a("31584"),aLq=a(z),aLr=a("5245"),aLs=a("36829"),aLu=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aK$=[0,a(Q),1490,5,1494,36,[0,a(aQ),[0,a(L),0]]],aKT=a(p),aKU=a("25449"),aKV=a("30711"),aKW=a(z),aKX=a("5262"),aKY=a("35973"),aKZ=a(p),aK0=a("22686"),aK1=a("27323"),aK2=a(z),aK3=a("4637"),aK4=a("31960"),aK5=a(p),aK6=a("21186"),aK7=a("25417"),aK8=a(z),aK9=a("4231"),aK_=a("29648"),aLa=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aKR=[0,a(Q),1523,5,1527,36,[0,a(aQ),[0,a(L),0]]],aKz=a(p),aKA=a("32185"),aKB=a("38827"),aKC=a(z),aKD=a("6642"),aKE=a("45469"),aKF=a(p),aKG=a("28722"),aKH=a(yb),aKI=a(z),aKJ=a("5848"),aKK=a("40418"),aKL=a(p),aKM=a("26813"),aKN=a("32152"),aKO=a(z),aKP=a("5339"),aKQ=a("37491"),aKS=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aKx=[0,a(Q),zt,5,1560,36,[0,a(aQ),[0,a(L),0]]],aKf=a(p),aKg=a("25907"),aKh=a(xB),aKi=a(z),aKj=a("5357"),aKk=a("36621"),aKl=a(p),aKm=a("23094"),aKn=a("27814"),aKo=a(z),aKp=a("4720"),aKq=a("32534"),aKr=a(p),aKs=a("21567"),aKt=a("25874"),aKu=a(z),aKv=a("4307"),aKw=a("30181"),aKy=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aKd=[0,a(Q),1589,5,1593,36,[0,a(aQ),[0,a(L),0]]],aJX=a(p),aJY=a("33086"),aJZ=a("39914"),aJ0=a(z),aJ1=a("6828"),aJ2=a("46742"),aJ3=a(p),aJ4=a("29526"),aJ5=a("35538"),aJ6=a(z),aJ7=a("6012"),aJ8=a("41550"),aJ9=a(p),aJ_=a("27564"),aJ$=a("33052"),aKa=a(z),aKb=a("5488"),aKc=a("38541"),aKe=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aJV=[0,a(Q),1622,5,Dh,36,[0,a(aQ),[0,a(L),0]]],aJD=a(p),aJE=a("26632"),aJF=a("32139"),aJG=a(z),aJH=a("5507"),aJI=a("37646"),aJJ=a(p),aJK=a("23741"),aJL=a("28593"),aJM=a(z),aJN=a("4852"),aJO=a("33445"),aJP=a(p),aJQ=a("22171"),aJR=a("36598"),aJS=a(z),aJT=a("4428"),aJU=a("31026"),aJW=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aJB=[0,a(Q),1655,5,1659,36,[0,a(aQ),[0,a(L),0]]],aJj=a(p),aJk=a("33999"),aJl=a("41016"),aJm=a(z),aJn=a("7016"),aJo=a("48032"),aJp=a(p),aJq=a("30341"),aJr=a("36519"),aJs=a(z),aJt=a("6178"),aJu=a("42697"),aJv=a(p),aJw=a("28325"),aJx=a("33964"),aJy=a(z),aJz=a("5639"),aJA=a("39605"),aJC=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aJh=[0,a(Q),1688,5,1692,36,[0,a(aQ),[0,a(L),0]]],aI1=a(p),aI2=a("27367"),aI3=a("33026"),aI4=a(z),aI5=a("5659"),aI6=a("38685"),aI7=a(p),aI8=a("24396"),aI9=a("29382"),aI_=a(z),aI$=a(B9),aJa=a("34368"),aJb=a(p),aJc=a("22783"),aJd=a("27332"),aJe=a(z),aJf=a("4550"),aJg=a("31882"),aJi=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aIZ=[0,a(Q),1721,5,1725,36,[0,a(aQ),[0,a(L),0]]],aIH=a(p),aII=a("35002"),aIJ=a("42226"),aIK=a(z),aIL=a("7223"),aIM=a("49449"),aIN=a(p),aIO=a("31236"),aIP=a("37596"),aIQ=a(z),aIR=a("6360"),aIS=a("43957"),aIT=a(p),aIU=a("29161"),aIV=a("34966"),aIW=a(z),aIX=a("5805"),aIY=a("40773"),aI0=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aIF=[0,a(Q),1754,5,1758,36,[0,a(aQ),[0,a(L),0]]],aIn=a(p),aIo=a("28174"),aIp=a("34000"),aIq=a(z),aIr=a("5826"),aIs=a("39826"),aIt=a(p),aIu=a(Ck),aIv=a("30249"),aIw=a(z),aIx=a("5133"),aIy=a("35382"),aIz=a(p),aIA=a("23455"),aIB=a("28138"),aIC=a(z),aID=a("4684"),aIE=a("32823"),aIG=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aIl=[0,a(Q),1787,5,1791,36,[0,a(aQ),[0,a(L),0]]],aH5=a(p),aH6=a("35114"),aH7=a("42361"),aH8=a(z),aH9=a("7246"),aH_=a("49607"),aH$=a(p),aIa=a("31336"),aIb=a("37716"),aIc=a(z),aId=a("6380"),aIe=a("44098"),aIf=a(p),aIg=a("29254"),aIh=a("35078"),aIi=a(z),aIj=a("5824"),aIk=a("40903"),aIm=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aH3=[0,a(Q),1820,5,1824,36,[0,a(aQ),[0,a(L),0]]],aHL=a(p),aHM=a("28264"),aHN=a("34109"),aHO=a(z),aHP=a("5845"),aHQ=a("39953"),aHR=a(p),aHS=a("25196"),aHT=a("30346"),aHU=a(z),aHV=a("5149"),aHW=a("35495"),aHX=a(p),aHY=a("23530"),aHZ=a("28228"),aH0=a(z),aH1=a("4699"),aH2=a("32928"),aH4=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aHJ=[0,a(Q),1853,5,1857,36,[0,a(aQ),[0,a(L),0]]],aHr=a(p),aHs=a("35500"),aHt=a("42827"),aHu=a(z),aHv=a("7326"),aHw=a("50153"),aHx=a(p),aHy=a("31681"),aHz=a("38131"),aHA=a(z),aHB=a("6450"),aHC=a("44583"),aHD=a(p),aHE=a("29576"),aHF=a("35464"),aHG=a(z),aHH=a("5888"),aHI=a("41353"),aHK=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aHp=[0,a(Q),1886,5,1890,36,[0,a(aQ),[0,a(L),0]]],aG9=a(p),aG_=a("28575"),aG$=a("34484"),aHa=a(z),aHb=a("5909"),aHc=a("40392"),aHd=a(p),aHe=a("25473"),aHf=a("30680"),aHg=a(z),aHh=a("5206"),aHi=a("35885"),aHj=a(p),aHk=a("23789"),aHl=a("28539"),aHm=a(z),aHn=a("4751"),aHo=a("33290"),aHq=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aG7=[0,a(Q),1919,5,1923,36,[0,a(aQ),[0,a(L),0]]],aGP=a(p),aGQ=a("35855"),aGR=a("43255"),aGS=a(z),aGT=a("7399"),aGU=a("50655"),aGV=a(p),aGW=a("31998"),aGX=a("38512"),aGY=a(z),aGZ=a("6515"),aG0=a("45029"),aG1=a(p),aG2=a("29872"),aG3=a("35819"),aG4=a(z),aG5=a("5947"),aG6=a("41767"),aG8=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aGN=[0,a(Q),1952,5,1956,36,[0,a(aQ),[0,a(L),0]]],aGv=a(p),aGw=a("28861"),aGx=a(EI),aGy=a(z),aGz=a("5968"),aGA=a("40796"),aGB=a(p),aGC=a("25728"),aGD=a("30987"),aGE=a(z),aGF=a("5258"),aGG=a("36244"),aGH=a(p),aGI=a("24027"),aGJ=a("28824"),aGK=a(z),aGL=a("4799"),aGM=a(zF),aGO=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aGt=[0,a(Q),1985,5,1989,36,[0,a(aQ),[0,a(L),0]]],aGb=a(p),aGc=a("36626"),aGd=a("44185"),aGe=a(z),aGf=a("7558"),aGg=a("51744"),aGh=a(p),aGi=a("32686"),aGj=a(ym),aGk=a(z),aGl=a("6655"),aGm=a("45997"),aGn=a(p),aGo=a("30514"),aGp=a("36589"),aGq=a(z),aGr=a("6075"),aGs=a("42665"),aGu=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aF$=[0,a(Q),c6,5,$,36,[0,a(aQ),[0,a(L),0]]],aFT=a(p),aFU=a("29482"),aFV=a("35578"),aFW=a(z),aFX=a("6096"),aFY=a("41673"),aFZ=a(p),aF0=a("26281"),aF1=a("31653"),aF2=a(z),aF3=a("5371"),aF4=a("37023"),aF5=a(p),aF6=a("24544"),aF7=a("29444"),aF8=a(z),aF9=a("4902"),aF_=a("34346"),aGa=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aFR=[0,a(Q),2051,5,2055,36,[0,a(aQ),[0,a(L),0]]],aFz=a(p),aFA=a("36835"),aFB=a("44437"),aFC=a(z),aFD=a("7601"),aFE=a("52039"),aFF=a(p),aFG=a("32872"),aFH=a("39564"),aFI=a(z),aFJ=a("6693"),aFK=a("46259"),aFL=a(p),aFM=a("30688"),aFN=a("36798"),aFO=a(z),aFP=a("6110"),aFQ=a("42908"),aFS=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aFx=[0,a(Q),2084,5,2088,36,[0,a(aQ),[0,a(L),0]]],aFf=a(p),aFg=a("29650"),aFh=a("35781"),aFi=a(z),aFj=a("6131"),aFk=a("41911"),aFl=a(p),aFm=a("26431"),aFn=a("31833"),aFo=a(z),aFp=a("5402"),aFq=a("37234"),aFr=a(p),aFs=a("24684"),aFt=a("29612"),aFu=a(z),aFv=a("4930"),aFw=a("34542"),aFy=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aFd=[0,a(Q),2117,5,2121,36,[0,a(aQ),[0,a(L),0]]],aEX=a(p),aEY=a("36864"),aEZ=a("44473"),aE0=a(z),aE1=a("7607"),aE2=a("52081"),aE3=a(p),aE4=a("32898"),aE5=a("39596"),aE6=a(z),aE7=a("6698"),aE8=a("46296"),aE9=a(p),aE_=a("30713"),aE$=a("36827"),aFa=a(z),aFb=a("6115"),aFc=a("42942"),aFe=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aEV=[0,a(Q),2150,5,2154,36,[0,a(aQ),[0,a(L),0]]],aED=a(p),aEE=a("29674"),aEF=a("35810"),aEG=a(z),aEH=a("6136"),aEI=a("41945"),aEJ=a(p),aEK=a("26452"),aEL=a("31858"),aEM=a(z),aEN=a("5406"),aEO=a("37264"),aEP=a(p),aEQ=a("24704"),aER=a("29636"),aES=a(z),aET=a("4934"),aEU=a(yb),aEW=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aEB=[0,a(Q),2183,5,q1,36,[0,a(aQ),[0,a(L),0]]],aEj=a(p),aEk=a("37140"),aEl=a("44807"),aEm=a(z),aEn=a("7664"),aEo=a("52472"),aEp=a(p),aEq=a("33145"),aEr=a("39893"),aEs=a(z),aEt=a("6748"),aEu=a("46643"),aEv=a(p),aEw=a("30943"),aEx=a("37103"),aEy=a(z),aEz=a("6161"),aEA=a("43264"),aEC=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aEh=[0,a(Q),2216,5,2220,36,[0,a(aQ),[0,a(L),0]]],aD1=a(p),aD2=a("29897"),aD3=a("36079"),aD4=a(z),aD5=a("6182"),aD6=a("42260"),aD7=a(p),aD8=a("26650"),aD9=a("32097"),aD_=a(z),aD$=a("5447"),aEa=a("37543"),aEb=a(p),aEc=a("24889"),aEd=a("29858"),aEe=a(z),aEf=a("4971"),aEg=a(EI),aEi=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDZ=[0,a(Q),2249,5,2252,36,[0,a(aQ),[0,a(L),0]]],aDH=a(p),aDI=a("37252"),aDJ=a("44941"),aDK=a(z),aDL=a("7687"),aDM=a("52629"),aDN=a(p),aDO=a("33244"),aDP=a("40013"),aDQ=a(z),aDR=a("6768"),aDS=a("46783"),aDT=a(p),aDU=a("31036"),aDV=a("37215"),aDW=a(z),aDX=a("6179"),aDY=a("43394"),aD0=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDF=[0,a(Q),2281,5,2284,36,[0,a(aQ),[0,a(L),0]]],aDn=a(p),aDo=a("29986"),aDp=a("36187"),aDq=a(z),aDr=a("6201"),aDs=a("42386"),aDt=a(p),aDu=a("26730"),aDv=a("32193"),aDw=a(z),aDx=a("5463"),aDy=a("37656"),aDz=a(p),aDA=a("24964"),aDB=a("29948"),aDC=a(z),aDD=a(B9),aDE=a("34934"),aDG=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPf=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPo=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDk=[0,a(Q),kF,5,ee,33,[0,a(o4),[0,a(me),[0,a(L),0]]]],aC4=a(p),aC5=a(w_),aC6=a(vW),aC7=a(z),aC8=a(Ga),aC9=a(yO),aC_=a(p),aC$=a(AG),aDa=a(Es),aDb=a(z),aDc=a(wi),aDd=a(z_),aDe=a(p),aDf=a(zf),aDg=a(ER),aDh=a(z),aDi=a("35600"),aDj=a(mk),aDl=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aC2=[0,a(Q),662,5,665,33,[0,a(o4),[0,a(me),[0,a(L),0]]]],aCK=a(p),aCL=a(yt),aCM=a(rM),aCN=a(z),aCO=a(Gb),aCP=a(Ci),aCQ=a(p),aCR=a(EG),aCS=a(ra),aCT=a(z),aCU=a(os),aCV=a(Al),aCW=a(p),aCX=a(DS),aCY=a(Fp),aCZ=a(z),aC0=a(Ds),aC1=a(x6),aC3=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aCI=[0,a(Q),707,5,su,33,[0,a(o4),[0,a(me),[0,a(L),0]]]],aCq=a(p),aCr=a(rI),aCs=a("220000"),aCt=a(z),aCu=a("38000"),aCv=a("260000"),aCw=a(p),aCx=a("164200"),aCy=a(zn),aCz=a(z),aCA=a(FY),aCB=a("231200"),aCC=a(p),aCD=a("153200"),aCE=a("183700"),aCF=a(z),aCG=a(os),aCH=a("214200"),aCJ=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aCo=[0,a(Q),750,5,752,33,[0,a(o4),[0,a(me),[0,a(L),0]]]],aB8=a(p),aB9=a("148100"),aB_=a("178700"),aB$=a(z),aCa=a("30600"),aCb=a("209300"),aCc=a(p),aCd=a(Bp),aCe=a("158900"),aCf=a(z),aCg=a("26900"),aCh=a(yq),aCi=a(p),aCj=a("123300"),aCk=a("147900"),aCl=a(z),aCm=a("24600"),aCn=a(DY),aCp=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDm=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB7=[0,a(d),Y,3,Y,76,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPp=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB6=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB2=[0,a(E),ot,5,ot,28,[0,a(DD),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aB3=[0,a(d),jb,11,jb,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB1=[0,a(E),Eb,14,Eb,44,[0,a(DD),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aBX=[0,a(E),vU,14,vU,36,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aBV=a(p),aBW=a(p),aBY=[0,a(d),nF,10,nF,32,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBU=[0,a(d),nF,10,nF,32,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBP=[0,a(Q),EN,7,EN,18,[0,a(ja),[0,a(aQ),[0,a(L),0]]]],aBM=a(gD),aBN=a(qX),aBO=a(fo),aBQ=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBK=[0,a(aO),hX,7,hX,18,[0,a(ja),[0,a(bB),[0,a(aM),0]]]],aBH=a(gS),aBI=a(qA),aBJ=a(ff),aBL=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBF=[0,a(aO),xt,7,xt,18,[0,a(ja),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aBC=a(oJ),aBD=a(BV),aBE=a(mO),aBG=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBR=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBz=[0,a(Q),CA,29,CA,64,[0,a(nv),[0,a(aQ),[0,a(L),0]]]],aBx=a(gD),aBy=a(fo),aBA=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBv=[0,a(aO),Bt,29,Bt,64,[0,a(nv),[0,a(bB),[0,a(aM),0]]]],aBt=a(gS),aBu=a(ff),aBw=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBr=[0,a(aO),yG,29,yG,64,[0,a(nv),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aBp=a(oJ),aBq=a(mO),aBs=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBB=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBj=[0,a(d),iV,14,iV,50,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBf=[0,a(Q),D6,14,D6,50,[0,a("Article 25"),[0,a(aQ),[0,a(L),0]]]],aBa=a(wG),aBb=a(sh),aBc=a("0.0172"),aBd=a(wG),aBe=a(sh),aA6=[0,a(E),iJ,14,iJ,64,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA2=[0,a(E),iG,14,iG,59,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aAY=[0,a(fc),yU,14,yU,36,[0,a(C5),[0,a(zb),0]]],aAW=a(vD),aAX=a(et),aAS=[0,a(Q),E6,14,E6,47,[0,a(sj),[0,a(aQ),[0,a(L),0]]]],aAR=a("0.416"),aAN=[0,a(Q),ya,14,ya,47,[0,a(sj),[0,a(aQ),[0,a(L),0]]]],aAM=a(vp),aAI=[0,a(Q),Du,14,Du,47,[0,a(sj),[0,a(aQ),[0,a(L),0]]]],aAH=a("560085"),aAD=[0,a(Q),FU,14,FU,48,[0,a("Article 26"),[0,a(aQ),[0,a(L),0]]]],aAC=a(AF),aAy=[0,a(Q),BZ,15,BZ,49,[0,a("Article 22"),[0,a(aQ),[0,a(L),0]]]],aAx=a("2211133"),aAt=[0,a(Q),va,14,va,42,[0,a("Article 21"),[0,a(aQ),[0,a(L),0]]]],aAs=a(ig),aAo=[0,a(Q),Ef,14,Ef,41,[0,a("Article 20"),[0,a(aQ),[0,a(L),0]]]],aAn=a(kk),aAp=[0,a(d),oL,11,oL,38,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAm=[0,a(d),oL,11,oL,38,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAq=[0,a(aj),[0,a("montant_forfaitaire_d832_10"),0]],aAu=[0,a(d),oI,11,oI,39,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAr=[0,a(d),oI,11,oI,39,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAv=[0,a(aj),[0,a("montant_minimal_aide_d832_10"),0]],aAz=[0,a(d),oq,11,oq,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAw=[0,a(d),oq,11,oq,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAA=[0,a(aj),[0,a("coefficient_multiplicateur_d832_11"),0]],aAE=[0,a(d),oT,11,oT,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAB=[0,a(d),oT,11,oT,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAF=[0,a(aj),[0,a("coefficient_multiplicateur_d832_18"),0]],aAJ=[0,a(d),mp,11,mp,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAG=[0,a(d),mp,11,mp,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAK=[0,a(aj),[0,a("montant_limite_tranches_d832_15_1"),0]],aAO=[0,a(d),kS,11,kS,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAL=[0,a(d),kS,11,kS,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAP=[0,a(aj),[0,a("taux_tranche_inf\xc3\xa9rieure_d832_15_1"),0]],aAT=[0,a(d),ng,11,ng,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAQ=[0,a(d),ng,11,ng,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAU=[0,a(aj),[0,a("taux_tranche_sup\xc3\xa9rieure_d832_15_1"),0]],aAZ=[0,a(d),mY,11,mY,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAV=[0,a(d),mY,11,mY,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aA0=[0,a(aj),[0,a(FA),0]],aA3=[0,a(E),iG,14,iG,59,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA4=[0,a(aj),[0,a(nh),0]],aA1=[0,a(E),iG,14,iG,59,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA7=[0,a(E),iJ,14,iJ,64,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA8=[0,a(aj),[0,a(n2),0]],aA5=[0,a(E),iJ,14,iJ,64,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA9=[0,a(aj),[0,a(gb),[0,a(kq),0]]],aA_=[0,a(aj),[0,a(gb),[0,a(kq),0]]],aBg=[0,a(d),n5,11,n5,47,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aA$=[0,a(d),n5,11,n5,47,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBh=[0,a(aj),[0,a("coefficient_multiplicateur_d832_17_3"),0]],aBk=[0,a(d),iV,14,iV,50,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBl=[0,a(aj),[0,a(ky),0]],aBi=[0,a(d),iV,14,iV,50,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBm=[0,a(aj),[0,a(eJ),[0,a(bk),0]]],aBn=[0,a(aj),[0,a(eJ),[0,a(bk),0]]],aBS=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBo=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBT=[0,a(aj),[0,a("montant_forfaitaire_charges_d832_10"),0]],aBZ=[0,a(aj),[0,a(bI),0]],aB4=[0,a(d),jb,11,jb,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB0=[0,a(d),jb,11,jb,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB5=[0,a(aj),[0,a("ressources_m\xc3\xa9nage_avec_d832_18"),0]],aPq=[0,a(aj),[0,a(dA),0]],aPt=[0,a(d),nq,11,nq,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPr=[0,a(d),nq,11,nq,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPu=[0,a(aj),[0,a(v_),0]],aPA=[0,a(aj),[0,a(kv),0]],aPR=[0,a(d),hN,10,hN,14,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPB=[0,a(d),hN,10,hN,14,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPS=[0,a(aj),[0,a("plafond_mensualit\xc3\xa9_d832_10_3_base"),0]],aPV=[0,a(E),h3,14,h3,75,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPW=[0,a(aj),[0,a(mK),0]],aPT=[0,a(E),h3,14,h3,75,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPZ=[0,a(E),ji,14,ji,69,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP0=[0,a(aj),[0,a(on),0]],aPX=[0,a(E),ji,14,ji,69,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP3=[0,a(E),jj,14,jj,70,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP4=[0,a(aj),[0,a(mz),0]],aP1=[0,a(E),jj,14,jj,70,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP5=[0,a(aj),[0,a(fI),[0,a(dP),0]]],aP6=[0,a(aj),[0,a(fI),[0,a(dP),0]]],aP_=[0,a(d),kp,10,kp,17,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aP7=[0,a(d),kp,10,kp,17,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aP$=[0,a(aj),[0,a("coefficient_prise_en_charge_d832_10_formule"),0]],aQi=[0,a(aj),[0,a(kO),0]],aQt=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQj=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQu=[0,a(aj),[0,a("plafond_mensualit\xc3\xa9_d832_10_3_copropri\xc3\xa9taires"),0]],aQC=[0,a(d),fV,12,fV,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQv=[0,a(d),fV,12,fV,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQD=[0,a(aj),[0,a(q_),0]],aQJ=[0,a(d),mj,10,mj,23,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQE=[0,a(d),mj,10,mj,23,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQK=[0,a(aj),[0,a("coefficient_prise_en_charge_d832_10_coeff_arrondi"),0]],aQY=[0,a(aj),[0,a(eN),0]],aQ1=[0,a(d),oY,12,oY,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQZ=[0,a(d),oY,12,oY,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ2=[0,a(aj),[0,a(sq),0]],aQ7=[0,a(d),oA,10,oA,15,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ3=[0,a(d),oA,10,oA,15,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ8=[0,a(aj),[0,a("coefficient_prise_en_charge_d832_10_seuil"),0]],aRl=[0,a(aj),[0,a(bJ),0]],aRq=[0,a(d),nP,12,nP,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRm=[0,a(d),nP,12,nP,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRr=[0,a(aj),[0,a(cX),0]],aRA=[0,a(aj),[0,a(fl),0]],aAj=[0,a(E),A6,14,A6,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aAe=[0,a(au),[0,a(bJ),[0,a(ac),0]]],aAf=[0,a(au),[0,a(bJ),0]],aAg=[0,a(au),[0,a(bJ),[0,a(ae),0]]],aAh=[0,a(au),[0,a(bJ),0]],aAi=a(p),aAk=[0,a(d),m3,10,m3,25,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAd=[0,a(d),m3,10,m3,25,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAa=[0,a(E),u6,14,u6,33,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],az_=a(p),az$=a(p),az6=[0,a(E),yy,14,yy,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azV=[0,a(au),[0,a(eN),[0,a(ac),0]]],azW=[0,a(au),[0,a(eN),0]],azX=[0,a(au),[0,a(eN),[0,a(ae),0]]],azY=[0,a(au),[0,a(eN),0]],azZ=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],az0=[0,a(bk),[0,a(bQ),0]],az1=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],az2=[0,a(bk),[0,a(bQ),0]],az3=a(kW),az4=a(p),az5=a(p),az7=[0,a(d),nB,10,nB,40,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azU=[0,a(d),nB,10,nB,40,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azQ=[0,a(E),CR,5,CR,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azO=a(oE),azP=a(oE),azR=[0,a(d),jl,10,jl,15,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azN=[0,a(E),D$,14,D$,49,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azL=a(hf),azM=a(hf),azH=[0,a(E),CM,14,CM,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azx=[0,a(au),[0,a(bI),[0,a(ac),0]]],azy=[0,a(au),[0,a(bI),0]],azz=[0,a(au),[0,a(bI),[0,a(ae),0]]],azA=[0,a(au),[0,a(bI),0]],azB=[0,a(au),[0,a(ku),[0,a(ac),0]]],azC=[0,a(au),[0,a(ku),0]],azD=[0,a(au),[0,a(ku),[0,a(ae),0]]],azE=[0,a(au),[0,a(ku),0]],azF=a(p),azG=a(p),azI=[0,a(d),mb,10,mb,20,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azw=[0,a(d),mb,10,mb,20,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azs=[0,a(E),Ff,5,Ff,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azp=a(c5),azq=a(c5),azr=a(lX),azt=[0,a(d),hD,10,hD,23,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azo=[0,a(E),xC,14,xC,49,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azl=a(c5),azm=a(c5),azn=a(lX),azh=[0,a(E),B6,14,B6,40,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azd=[0,a(E),vy,14,vy,55,[0,a(yM),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay_=[0,a(au),[0,a(kA),[0,a(ac),0]]],ay$=[0,a(au),[0,a(kA),0]],aza=[0,a(au),[0,a(kA),[0,a(ae),0]]],azb=[0,a(au),[0,a(kA),0]],azc=a(p),aze=[0,a(d),oQ,11,oQ,52,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ay9=[0,a(d),oQ,11,oQ,52,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ay5=[0,a(E),FT,5,FT,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay4=a(oE),ay6=[0,a(d),h_,10,h_,17,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ay3=[0,a(E),nC,14,nC,49,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay0=a(p),ay1=a(p),ay2=a(hf),ayU=[0,a(E),ga,14,ga,70,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayQ=[0,a(E),hF,14,hF,69,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayM=[0,a(E),iW,14,iW,75,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayI=[0,a(E),zQ,14,zQ,44,[0,a(yM),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayJ=[0,a(d),nK,11,nK,41,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayH=[0,a(d),nK,11,nK,41,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayD=[0,a(E),zi,14,zi,36,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayE=[0,a(d),jn,21,jn,43,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayz=[0,a(E),wl,14,wl,40,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayv=[0,a(Q),xr,14,xr,48,[0,a(we),[0,a(fg),[0,a(L),0]]]],ayt=a("2142091"),ayu=a("1339340"),ayp=[0,a(Q),wR,14,wR,41,[0,a("Article 32"),[0,a(fg),[0,a(L),0]]]],ayn=a(qI),ayo=a("2668"),ayh=[0,a(E),is,14,is,64,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayd=[0,a(E),ia,14,ia,59,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ax$=[0,a(E),iH,14,iH,55,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ax7=[0,a(E),zh,14,zh,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ax5=a(p),ax6=a(p),ax8=[0,a(d),lP,10,lP,32,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ax4=[0,a(d),lP,10,lP,32,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ax0=[0,a(Q),Co,14,Co,48,[0,a(sv),[0,a(fg),[0,a(L),0]]]],axq=a(p),axr=a("46192"),axs=a("54152"),axt=a(z),axu=a("57741"),axv=a(X),axw=a("61794"),axx=a(_),axy=a("65862"),axz=a(ah),axA=a("7368"),axB=a("71039"),axC=a(p),axD=a("42242"),axE=a("49299"),axF=a(z),axG=a("52565"),axH=a(X),axI=a("56268"),axJ=a(_),axK=a("59957"),axL=a(ah),axM=a("6659"),axN=a("63887"),axO=a(p),axP=a("40096"),axQ=a("46634"),axR=a(z),axS=a("49475"),axT=a(X),axU=a("52740"),axV=a(_),axW=a("56004"),axX=a(ah),axY=a("6180"),axZ=a("59675"),ax1=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],axo=[0,a(aO),dK,14,dK,48,[0,a(sv),[0,a(bB),[0,a(aM),0]]]],awQ=a(p),awR=a("44630"),awS=a("52321"),awT=a(z),awU=a("55788"),awV=a(X),awW=a("59704"),awX=a(_),awY=a("63635"),awZ=a(ah),aw0=a("7119"),aw1=a("68637"),aw2=a(p),aw3=a("40814"),aw4=a("47632"),aw5=a(z),aw6=a("50787"),aw7=a(X),aw8=a("54365"),aw9=a(_),aw_=a("57929"),aw$=a(ah),axa=a("6434"),axb=a("61727"),axc=a(p),axd=a("38740"),axe=a("45057"),axf=a(z),axg=a("47802"),axh=a(X),axi=a("50957"),axj=a(_),axk=a("54110"),axl=a(ah),axm=a("5971"),axn=a("57657"),axp=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awO=[0,a(aO),Ee,14,Ee,48,[0,a(sv),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],awe=a(p),awf=a("44443"),awg=a("52101"),awh=a(z),awi=a("55555"),awj=a(X),awk=a("59454"),awl=a(_),awm=a("63369"),awn=a(ah),awo=a("7089"),awp=a("68350"),awq=a(p),awr=a("40643"),aws=a("47433"),awt=a(z),awu=a("50575"),awv=a(X),aww=a("54138"),awx=a(_),awy=a("57687"),awz=a(ah),awA=a("6407"),awB=a("61469"),awC=a(p),awD=a("38578"),awE=a("44869"),awF=a(z),awG=a("47602"),awH=a(X),awI=a("50744"),awJ=a(_),awK=a("53884"),awL=a(ah),awM=a("5946"),awN=a("57416"),awP=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av_=[0,a(d),h6,14,h6,50,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av5=[0,a(E),ye,14,ye,35,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],av6=[0,a(d),id,12,id,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av1=[0,a(Q),BK,14,BK,42,[0,a("Article 29"),[0,a(fg),[0,a(L),0]]]],av0=a(ig),avW=[0,a(Q),z3,14,z3,41,[0,a("Article 28"),[0,a(fg),[0,a(L),0]]]],avV=a(kk),avR=[0,a(Q),Fn,14,Fn,35,[0,a(we),[0,a(fg),[0,a(L),0]]]],avQ=a("121726"),avS=[0,a(d),kF,12,kF,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avP=[0,a(d),kF,12,kF,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avT=[0,a(au),[0,a(Ej),0]],avX=[0,a(d),ma,11,ma,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avU=[0,a(d),ma,11,ma,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avY=[0,a(au),[0,a("montant_forfaitaire_d832_24"),0]],av2=[0,a(d),mv,11,mv,39,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avZ=[0,a(d),mv,11,mv,39,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av3=[0,a(au),[0,a("montant_minimal_aide_d823_24"),0]],av7=[0,a(d),id,12,id,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av4=[0,a(d),id,12,id,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av8=[0,a(au),[0,a("condition_2_du_832_25"),0]],av$=[0,a(d),h6,14,h6,50,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awa=[0,a(au),[0,a(ky),0]],av9=[0,a(d),h6,14,h6,50,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awb=[0,a(au),[0,a(eJ),[0,a(bk),0]]],awc=[0,a(au),[0,a(eJ),[0,a(bk),0]]],ax2=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awd=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ax3=[0,a(au),[0,a(zT),0]],ax9=[0,a(au),[0,a(bI),0]],aya=[0,a(E),iH,14,iH,55,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayb=[0,a(au),[0,a(BA),0]],ax_=[0,a(E),iH,14,iH,55,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aye=[0,a(E),ia,14,ia,59,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayf=[0,a(au),[0,a(nh),0]],ayc=[0,a(E),ia,14,ia,59,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayi=[0,a(E),is,14,is,64,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayj=[0,a(au),[0,a(n2),0]],ayg=[0,a(E),is,14,is,64,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayk=[0,a(au),[0,a(gb),[0,a(kw),0]]],ayl=[0,a(au),[0,a(gb),[0,a(kw),0]]],ayq=[0,a(d),nx,11,nx,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aym=[0,a(d),nx,11,nx,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayr=[0,a(au),[0,a("montant_forfaitaire_d832_27"),0]],ayw=[0,a(d),hB,12,hB,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ays=[0,a(d),hB,12,hB,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayx=[0,a(au),[0,a(A2),0]],ayA=[0,a(d),kf,12,kf,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayy=[0,a(d),kf,12,kf,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayB=[0,a(au),[0,a(xN),0]],ayF=[0,a(d),jn,21,jn,43,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayC=[0,a(d),jn,21,jn,43,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayG=[0,a(au),[0,a(r5),0]],ayK=[0,a(au),[0,a(kA),0]],ayN=[0,a(E),iW,14,iW,75,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayO=[0,a(au),[0,a(mK),0]],ayL=[0,a(E),iW,14,iW,75,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayR=[0,a(E),hF,14,hF,69,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayS=[0,a(au),[0,a(on),0]],ayP=[0,a(E),hF,14,hF,69,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayV=[0,a(E),ga,14,ga,70,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayW=[0,a(au),[0,a(mz),0]],ayT=[0,a(E),ga,14,ga,70,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayX=[0,a(au),[0,a(fI),[0,a(dP),0]]],ayY=[0,a(au),[0,a(fI),[0,a(dP),0]]],ay7=[0,a(d),h_,10,h_,17,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayZ=[0,a(d),h_,10,h_,17,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ay8=[0,a(au),[0,a("coefficient_prise_en_charge_d832_25_formule"),0]],azf=[0,a(au),[0,a(ku),0]],azi=[0,a(d),od,12,od,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azg=[0,a(d),od,12,od,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azj=[0,a(au),[0,a(vs),0]],azu=[0,a(d),hD,10,hD,23,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azk=[0,a(d),hD,10,hD,23,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azv=[0,a(au),[0,a("coefficient_prise_en_charge_d832_25_coeff_arrondi"),0]],azJ=[0,a(au),[0,a(eN),0]],azS=[0,a(d),jl,10,jl,15,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azK=[0,a(d),jl,10,jl,15,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azT=[0,a(au),[0,a("coefficient_prise_en_charge_d832_25_seuil"),0]],az8=[0,a(au),[0,a(bJ),0]],aAb=[0,a(d),kc,12,kc,31,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],az9=[0,a(d),kc,12,kc,31,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAc=[0,a(au),[0,a(cX),0]],aAl=[0,a(au),[0,a(fl),0]],avF=[0,a(E),C4,14,C4,33,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avD=a(p),avE=a(p),avz=[0,a(E),A1,14,A1,39,[0,a(rP),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avx=a(p),avy=a(p),avt=[0,a(E),Ba,14,Ba,36,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avo=[0,a(aD),[0,a(ki),[0,a(ac),0]]],avp=[0,a(aD),[0,a(ki),0]],avq=[0,a(aD),[0,a(ki),[0,a(ae),0]]],avr=[0,a(aD),[0,a(ki),0]],avs=a(p),avu=[0,a(d),mM,10,mM,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avn=[0,a(d),mM,10,mM,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avk=[0,a(E),xv,14,xv,42,[0,a(rP),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avg=[0,a(aG),Ce,14,Ce,36,[0,a(qS),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],ava=[0,a(aD),[0,a(bJ),[0,a(ac),0]]],avb=[0,a(aD),[0,a(bJ),0]],avc=[0,a(aD),[0,a(bJ),[0,a(ae),0]]],avd=[0,a(aD),[0,a(bJ),0]],ave=a(p),avf=a(p),avh=[0,a(d),oa,10,oa,36,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],au$=[0,a(d),oa,10,oa,36,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],au5=[0,a(aO),Aq,14,Aq,33,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],au3=a(hy),au4=a(hy),au6=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],au2=[0,a(aO),m$,14,m$,33,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],au0=a(hy),au1=a(hy),au7=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auZ=[0,a(Q),f2,14,f2,33,[0,a(cF),[0,a(bX),[0,a(L),0]]]],auX=a(hy),auY=a(hy),au8=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auT=[0,a(E),wk,14,wk,36,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],auI=[0,a(aD),[0,a(bI),[0,a(ac),0]]],auJ=[0,a(aD),[0,a(bI),0]],auK=[0,a(aD),[0,a(bI),[0,a(ae),0]]],auL=[0,a(aD),[0,a(bI),0]],auM=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],auN=[0,a(bk),[0,a(bQ),0]],auO=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],auP=[0,a(bk),[0,a(bQ),0]],auQ=a(kW),auR=a(p),auS=a(p),auU=[0,a(d),o6,10,o6,40,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auH=[0,a(d),o6,10,o6,40,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auB=[0,a(aO),sw,14,sw,33,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aup=a(hh),auq=a(b5),aur=a(df),aus=a(hh),aut=a(fd),auu=a(fd),auv=a(df),auw=a(df),aux=a(r_),auy=a(qJ),auz=a(fd),auA=a(b5),auC=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auo=[0,a(aO),j5,14,j5,33,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],auc=a(hh),aud=a(b5),aue=a(df),auf=a(hh),aug=a(fd),auh=a(fd),aui=a(df),auj=a(df),auk=a(r_),aul=a(qJ),aum=a(fd),aun=a(b5),auD=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aub=[0,a(Q),qR,14,qR,33,[0,a(cF),[0,a(bX),[0,a(L),0]]]],at1=a(hh),at2=a(b5),at3=a(df),at4=a(hh),at5=a(fd),at6=a(fd),at7=a(df),at8=a(df),at9=a(r_),at_=a(qJ),at$=a(fd),aua=a(b5),auE=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atX=[0,a(E),Ed,14,Ed,36,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],atR=[0,a(aD),[0,a(kr),[0,a(ac),0]]],atS=[0,a(aD),[0,a(kr),0]],atT=[0,a(aD),[0,a(kr),[0,a(ae),0]]],atU=[0,a(aD),[0,a(kr),0]],atV=a(p),atW=a(p),atY=[0,a(d),mA,10,mA,32,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atQ=[0,a(d),mA,10,mA,32,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atK=[0,a(aO),Aj,14,Aj,28,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],atI=a(c5),atJ=a(c5),atL=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atH=[0,a(aO),wq,14,wq,28,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],atF=a(c5),atG=a(c5),atM=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atE=[0,a(Q),ne,14,ne,28,[0,a(cF),[0,a(bX),[0,a(L),0]]]],atC=a(c5),atD=a(c5),atN=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atx=[0,a(Q),dz,14,dz,36,[0,a(sn),[0,a(bX),[0,a(L),0]]]],att=a(FV),atu=a(iB),atv=a(iB),atw=a(FV),aty=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atr=[0,a(aO),vr,14,vr,36,[0,a(sn),[0,a(bB),[0,a(aM),0]]]],atn=a(C2),ato=a(iB),atp=a(iB),atq=a(C2),ats=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atl=[0,a(aO),gK,14,gK,36,[0,a(sn),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],ath=a(Ex),ati=a(iB),atj=a(iB),atk=a(Ex),atm=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atc=[0,a(E),FW,5,FW,50,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],atd=[0,a(d),ip,10,ip,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atb=[0,a(E),zG,14,zG,36,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ata=a(p),ate=[0,a(d),ip,10,ip,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as$=[0,a(d),ip,10,ip,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as8=[0,a(E),xx,14,xx,28,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],as4=[0,a(Q),ri,14,ri,42,[0,a(B_),[0,a(bX),[0,a(L),0]]]],as1=a("3.4"),as2=a(ih),as3=a(ih),asX=[0,a(Q),rm,14,rm,41,[0,a(B_),[0,a(bX),[0,a(L),0]]]],asU=a("4."),asV=a(y5),asW=a(y5),asQ=[0,a(E),zw,14,zw,29,[0,a("Article D842-2"),[0,a(ss),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],asO=a(ov),asP=a(kI),asI=[0,a(Q),EP,29,EP,64,[0,a(dS),[0,a(bX),[0,a(L),0]]]],asF=a(gD),asG=a(qX),asH=a(fo),asJ=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asD=[0,a(aO),wn,29,wn,64,[0,a(dS),[0,a(bB),[0,a(aM),0]]]],asA=a(gS),asB=a(qA),asC=a(ff),asE=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asy=[0,a(aO),vQ,29,vQ,64,[0,a(dS),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],asv=a(oJ),asw=a(BV),asx=a(mO),asz=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asK=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ass=[0,a(Q),zU,29,zU,64,[0,a(se),[0,a(bX),[0,a(L),0]]]],asq=a(gD),asr=a(fo),ast=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aso=[0,a(aO),Cj,29,Cj,64,[0,a(se),[0,a(bB),[0,a(aM),0]]]],asm=a(gS),asn=a(ff),asp=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ask=[0,a(aO),B4,29,B4,64,[0,a(se),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],asi=a(oJ),asj=a(mO),asl=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asu=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asb=a(p),asc=[0,a(Q),529,5,530,34,[0,a(dS),[0,a(bX),[0,a(L),0]]]],ar_=a(Bg),ar$=a(v7),asa=a(Dy),asd=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ar7=a(p),ar8=[0,a(Q),538,5,539,34,[0,a(dS),[0,a(bX),[0,a(L),0]]]],ar4=a("27905"),ar5=a("24683"),ar6=a("22911"),ar9=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ar1=a(z),ar2=[0,a(Q),h$,5,h$,35,[0,a(dS),[0,a(bX),[0,a(L),0]]]],arS=a(z),arT=a("4576"),arU=a("31539"),arV=a(z),arW=a("4043"),arX=a("27774"),arY=a(z),arZ=a("3682"),ar0=a("25689"),ar3=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arP=a(p),arQ=[0,a(aO),qU,5,qR,34,[0,a(dS),[0,a(bB),[0,a(aM),0]]]],arM=a(DK),arN=a(yg),arO=a(wP),arR=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arJ=a(p),arK=[0,a(aO),415,5,416,34,[0,a(dS),[0,a(bB),[0,a(aM),0]]]],arG=a("26962"),arH=a("23848"),arI=a("22136"),arL=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arD=a(z),arE=[0,a(aO),rx,5,rx,35,[0,a(dS),[0,a(bB),[0,a(aM),0]]]],aru=a(z),arv=a("4421"),arw=a("30473"),arx=a(z),ary=a("3906"),arz=a("26835"),arA=a(z),arB=a("3557"),arC=a("24821"),arF=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arr=a(p),ars=[0,a(aO),Gc,5,1198,34,[0,a(dS),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aro=a(CL),arp=a(wg),arq=a(Db),art=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arl=a(p),arm=[0,a(aO),1206,5,1207,34,[0,a(dS),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],ari=a("26849"),arj=a("23748"),ark=a("22044"),arn=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arf=a(z),arg=[0,a(aO),EL,5,EL,35,[0,a(dS),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aq8=a(z),aq9=a("4403"),aq_=a("30345"),aq$=a(z),ara=a("3890"),arb=a("26723"),arc=a(z),ard=a("3542"),are=a("24717"),arh=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ase=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aq4=[0,a(Q),iM,5,iM,61,[0,a(ix),[0,a(bX),[0,a(L),0]]]],aq1=a(Bg),aq2=a(v7),aq3=a(Dy),aq5=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqZ=[0,a(aO),BH,5,BH,61,[0,a(ix),[0,a(bB),[0,a(aM),0]]]],aqW=a(DK),aqX=a(yg),aqY=a(wP),aq0=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqU=[0,a(aO),xA,5,xA,61,[0,a(ix),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aqR=a(CL),aqS=a(wg),aqT=a(Db),aqV=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aq6=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqO=[0,a(Q),wI,14,wI,37,[0,a(ix),[0,a(bX),[0,a(L),0]]]],aqL=a("27765"),aqM=a("24198"),aqN=a("22680"),aqP=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqJ=[0,a(aO),z1,14,z1,37,[0,a(ix),[0,a(bB),[0,a(aM),0]]]],aqG=a("26826"),aqH=a("23380"),aqI=a("21913"),aqK=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqE=[0,a(aO),f7,14,f7,37,[0,a(ix),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aqB=a(Ge),aqC=a("23282"),aqD=a("21821"),aqF=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqQ=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aq7=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqx=a(p),aqy=[0,a(Q),dT,5,be,34,[0,a(cG),[0,a(bX),[0,a(L),0]]]],aqu=a("30850"),aqv=a("26887"),aqw=a("25200"),aqz=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqr=a(p),aqs=[0,a(Q),zo,5,115,34,[0,a(cG),[0,a(bX),[0,a(L),0]]]],aqo=a("37207"),aqp=a("32910"),aqq=a("30548"),aqt=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aql=a(z),aqm=[0,a(Q),kC,5,kC,35,[0,a(cG),[0,a(bX),[0,a(L),0]]]],aqc=a(z),aqd=a("6101"),aqe=a("42052"),aqf=a(z),aqg=a("5390"),aqh=a("37032"),aqi=a(z),aqj=a("4909"),aqk=a("34252"),aqn=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ap$=a(p),aqa=[0,a(aO),87,5,88,34,[0,a(cG),[0,a(bB),[0,a(aM),0]]]],ap8=a("29807"),ap9=a(sg),ap_=a("24348"),aqb=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ap5=a(p),ap6=[0,a(aO),97,5,98,34,[0,a(cG),[0,a(bB),[0,a(aM),0]]]],ap2=a("35949"),ap3=a(mV),ap4=a("29515"),ap7=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apZ=a(z),ap0=[0,a(aO),c4,5,c4,35,[0,a(cG),[0,a(bB),[0,a(aM),0]]]],apQ=a(z),apR=a("5895"),apS=a("40630"),apT=a(z),apU=a(rO),apV=a(sd),apW=a(z),apX=a("4743"),apY=a("33094"),ap1=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apN=a(p),apO=[0,a(aO),884,5,885,34,[0,a(cG),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],apK=a("29682"),apL=a("25859"),apM=a("24246"),apP=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apH=a(p),apI=[0,a(aO),894,5,gG,34,[0,a(cG),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],apE=a("35799"),apF=a(Bc),apG=a("29392"),apJ=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apB=a(z),apC=[0,a(aO),Cb,5,Cb,35,[0,a(cG),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aps=a(z),apt=a("5870"),apu=a("40460"),apv=a(z),apw=a(wy),apx=a(AL),apy=a(z),apz=a("4723"),apA=a(yP),apD=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqA=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apo=[0,a(Q),hU,14,hU,42,[0,a("Article 12"),[0,a(bX),[0,a(L),0]]]],apl=a(p),apm=a(ig),apn=a(ig),apf=[0,a(aO),x7,14,x7,29,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],ao$=a(p),apa=a(sg),apb=a(mV),apc=a(z),apd=a(rO),ape=a(sd),apg=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ao_=[0,a(Q),hn,14,hn,29,[0,a(cF),[0,a(bX),[0,a(L),0]]]],ao4=a(p),ao5=a(sg),ao6=a(mV),ao7=a(z),ao8=a(rO),ao9=a(sd),aph=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ao2=[0,a(aO),rW,14,rW,29,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aoW=a(p),aoX=a("25869"),aoY=a(Bc),aoZ=a(z),ao0=a(wy),ao1=a(AL),ao3=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aoR=[0,a(Q),fR,14,fR,44,[0,a(mI),[0,a(bX),[0,a(L),0]]]],aoz=a(p),aoA=a("494900"),aoB=a("709000"),aoC=a(z),aoD=a("845600"),aoE=a(X),aoF=a("864600"),aoG=a(_),aoH=a("897700"),aoI=a(ah),aoJ=a("931100"),aoK=a(P),aoL=a("964200"),aoM=a(dn),aoN=a(CE),aoO=a(dn),aoP=a("32800"),aoQ=a(CE),aoS=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aox=[0,a(aO),27,14,27,44,[0,a(mI),[0,a("Articles valables du 1er juillet 2022 au 31 d\xc3\xa9cembre 2022"),[0,a(aM),0]]]],aof=a(p),aog=a("487000"),aoh=a("697700"),aoi=a(z),aoj=a(BR),aok=a(X),aol=a("850900"),aom=a(_),aon=a("883400"),aoo=a(ah),aop=a("916300"),aoq=a(P),aor=a("948800"),aos=a(dn),aot=a(Do),aou=a(dn),aov=a("32300"),aow=a(Do),aoy=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aod=[0,a(aO),rA,14,rA,44,[0,a(mI),[0,a("Articles valables du 1er janvier 2022 au 30 juin 2022"),[0,a(aM),0]]]],anX=a(p),anY=a("468300"),anZ=a("670900"),an0=a(z),an1=a("800200"),an2=a(X),an3=a("819200"),an4=a(_),an5=a("849500"),an6=a(ah),an7=a("881100"),an8=a(P),an9=a("912400"),an_=a(dn),an$=a(A0),aoa=a(dn),aob=a("31100"),aoc=a(A0),aoe=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anV=[0,a(aO),zg,14,zg,44,[0,a(mI),[0,a("Articles valables du 1er janvier 2020 au 31 d\xc3\xa9cembre 2021"),[0,a(aM),0]]]],anD=a(p),anE=a("458800"),anF=a("657200"),anG=a(z),anH=a("783900"),anI=a(X),anJ=a("801500"),anK=a(_),anL=a(BR),anM=a(ah),anN=a("863100"),anO=a(P),anP=a("893800"),anQ=a(dn),anR=a(vx),anS=a(dn),anT=a(os),anU=a(vx),anW=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anw=[0,a(aO),gc,14,gc,40,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],ane=a(p),anf=a(rz),ang=a(rs),anh=a(z),ani=a(qF),anj=a(X),ank=a(rc),anl=a(_),anm=a(r8),ann=a(ah),ano=a(qC),anp=a(P),anq=a(rj),anr=a(dn),ans=a(hL),ant=a(dn),anu=a(rn),anv=a(hL),anx=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],and=[0,a(aO),yD,14,yD,40,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],amX=a(p),amY=a(rz),amZ=a(rs),am0=a(z),am1=a(qF),am2=a(X),am3=a(rc),am4=a(_),am5=a(r8),am6=a(ah),am7=a(qC),am8=a(P),am9=a(rj),am_=a(dn),am$=a(hL),ana=a(dn),anb=a(rn),anc=a(hL),any=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amW=[0,a(Q),Ad,14,Ad,40,[0,a(cF),[0,a(bX),[0,a(L),0]]]],amE=a(p),amF=a(rz),amG=a(rs),amH=a(z),amI=a(qF),amJ=a(X),amK=a(rc),amL=a(_),amM=a(r8),amN=a(ah),amO=a(qC),amP=a(P),amQ=a(rj),amR=a(dn),amS=a(hL),amT=a(dn),amU=a(rn),amV=a(hL),anz=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amy=[0,a(d),iz,14,iz,50,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amu=[0,a(Q),nT,14,nT,41,[0,a("Article 11"),[0,a(bX),[0,a(L),0]]]],amt=a(kk),amp=[0,a(E),zd,14,zd,29,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],amo=a(xp),amq=[0,a(d),oN,11,oN,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amn=[0,a(d),oN,11,oN,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amr=[0,a(aD),[0,a("fraction_l832_3"),0]],amv=[0,a(d),nk,11,nk,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ams=[0,a(d),nk,11,nk,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amw=[0,a(aD),[0,a("montant_forfaitaire_d823_16"),0]],amz=[0,a(d),iz,14,iz,50,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amA=[0,a(aD),[0,a(ky),0]],amx=[0,a(d),iz,14,iz,50,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amB=[0,a(aD),[0,a(eJ),[0,a(bk),0]]],amC=[0,a(aD),[0,a(eJ),[0,a(bk),0]]],anA=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amD=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anB=[0,a(aD),[0,a(E7),0]],aoT=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anC=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aoU=[0,a(aD),[0,a("abattement_forfaitaire_d823_17"),0]],api=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aoV=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apj=[0,a(aD),[0,a("loyer_r\xc3\xa9f\xc3\xa9rence"),0]],app=[0,a(d),mm,11,mm,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apk=[0,a(d),mm,11,mm,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apq=[0,a(aD),[0,a("montant_minimal_aide_d823_16"),0]],asf=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apr=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asg=[0,a(aD),[0,a(CV),0]],asL=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ash=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asM=[0,a(aD),[0,a(ze),0]],asR=[0,a(d),nS,10,nS,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asN=[0,a(d),nS,10,nS,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asS=[0,a(aD),[0,a("loyer_principal_avec_r\xc3\xa9duction_meubl\xc3\xa9"),0]],asY=[0,a(d),m_,11,m_,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asT=[0,a(d),m_,11,m_,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asZ=[0,a(aD),[0,a("plafond_suppression_d823_16"),0]],as5=[0,a(d),oX,11,oX,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as0=[0,a(d),oX,11,oX,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as6=[0,a(aD),[0,a("plafond_d\xc3\xa9gressivit\xc3\xa9_d823_16"),0]],as9=[0,a(d),h$,11,h$,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as7=[0,a(d),h$,11,h$,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as_=[0,a(aD),[0,a("loyer_\xc3\xa9ligible"),0]],atf=[0,a(aD),[0,a(kr),0]],atz=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atg=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atA=[0,a(aD),[0,a(E8),0]],atO=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atB=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atP=[0,a(aD),[0,a("rapport_loyers"),0]],atZ=[0,a(aD),[0,a(bI),0]],auF=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],at0=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auG=[0,a(aD),[0,a("taux_loyer_\xc3\xa9ligible_formule"),0]],auV=[0,a(aD),[0,a(bJ),0]],au9=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auW=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],au_=[0,a(aD),[0,a("taux_loyer_\xc3\xa9ligible_taux_arrondi"),0]],avi=[0,a(aD),[0,a(ki),0]],avl=[0,a(d),oD,11,oD,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avj=[0,a(d),oD,11,oD,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avm=[0,a(aD),[0,a("taux_prise_compte_ressources"),0]],avv=[0,a(aD),[0,a(fl),0]],avA=[0,a(d),nX,12,nX,37,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avw=[0,a(d),nX,12,nX,37,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avB=[0,a(aD),[0,a(CD),0]],avG=[0,a(d),mN,12,mN,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avC=[0,a(d),mN,12,mN,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avH=[0,a(aD),[0,a(cX),0]],avJ=a(ih),avI=[0,a(E),l0,13,l0,74,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avO=[0,a(E),l0,13,l0,74,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avL=a(xp),avM=a(oE),avK=[0,a(aG),eU,13,eU,61,[0,a(qS),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],avN=[0,a(aG),eU,13,eU,61,[0,a(qS),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],amb=[7,0],amc=[5,0],amd=[4,0],ame=[3,0],amf=[2,0],amg=[1,0],amh=[0,0],ami=[6,0],amj=[0,a(bw),29,5,38,6,[0,a(b6),[0,a(lT),[0,a(aC),0]]]],ama=a(wM),amk=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],al9=[8,0],al_=[0,a(bw),47,5,49,6,[0,a(b6),[0,a(lT),[0,a(aC),0]]]],al8=a(xL),al$=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alY=[7,0],alZ=[5,0],al0=[4,0],al1=[3,0],al2=[2,0],al3=[1,0],al4=[0,0],al5=[6,0],al6=[0,a(bw),68,5,77,6,[0,a(b6),[0,a(nO),[0,a(aC),0]]]],alX=a(AO),al7=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alU=[8,0],alV=[0,a(bw),86,5,88,6,[0,a(b6),[0,a(nO),[0,a(aC),0]]]],alT=a(vc),alW=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alJ=[7,0],alK=[5,0],alL=[4,0],alM=[3,0],alN=[2,0],alO=[1,0],alP=[0,0],alQ=[6,0],alR=[0,a(bw),c4,5,bp,6,[0,a(b6),[0,a(lW),[0,a(aC),0]]]],alI=a(Br),alS=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alF=[8,0],alG=[0,a(bw),cs,5,cQ,6,[0,a(b6),[0,a(lW),[0,a(aC),0]]]],alE=a(EE),alH=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alu=[7,0],alv=[5,0],alw=[4,0],alx=[3,0],aly=[2,0],alz=[1,0],alA=[0,0],alB=[6,0],alC=[0,a(bw),eY,5,fK,6,[0,a(b6),[0,a(nl),[0,a(aC),0]]]],alt=a(BJ),alD=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alq=[8,0],alr=[0,a(bw),qT,5,nU,6,[0,a(b6),[0,a(nl),[0,a(aC),0]]]],alp=a(wZ),als=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alf=[7,0],alg=[5,0],alh=[4,0],ali=[3,0],alj=[2,0],alk=[1,0],all=[0,0],alm=[6,0],aln=[0,a(bw),h1,5,iM,6,[0,a(fW),[0,a(mL),[0,a(aC),0]]]],ale=a(zK),alo=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alb=[8,0],alc=[0,a(bw),w4,5,yA,6,[0,a(fW),[0,a(mL),[0,a(aC),0]]]],ala=a(ED),ald=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],ak2=[7,0],ak3=[5,0],ak4=[4,0],ak5=[3,0],ak6=[2,0],ak7=[1,0],ak8=[0,0],ak9=[6,0],ak_=[0,a(bw),vI,5,E3,6,[0,a(fW),[0,a(oo),[0,a(aC),0]]]],ak1=a(El),ak$=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],akY=[8,0],akZ=[0,a(bw),E$,5,vE,6,[0,a(fW),[0,a(oo),[0,a(aC),0]]]],akX=a(Fk),ak0=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],akN=[7,0],akO=[5,0],akP=[4,0],akQ=[3,0],akR=[2,0],akS=[1,0],akT=[0,0],akU=[6,0],akV=[0,a(bw),rq,5,nT,6,[0,a(b6),[0,a(m8),[0,a(aC),0]]]],akM=a(v9),akW=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],akJ=[8,0],akK=[0,a(bw),A9,5,ni,6,[0,a(b6),[0,a(m8),[0,a(aC),0]]]],akI=a(zJ),akL=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],aml=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],akH=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],amm=[0,a(ho),[0,a(z2),0]],akD=[0,a(eL),28,5,29,33,[0,a(Cn),[0,a(cf),0]]],akC=a(xO),akE=[0,a(eL),6,12,6,19,[0,a(cf),0]],akA=[0,a(eL),48,5,49,33,[0,a(AH),[0,a(cf),0]]],akz=a(xm),akB=[0,a(eL),6,12,6,19,[0,a(cf),0]],akx=[0,a(eL),64,5,65,33,[0,a(Ca),[0,a(cf),0]]],akw=a(BY),aky=[0,a(eL),6,12,6,19,[0,a(cf),0]],aku=[0,a(eL),82,5,83,33,[0,a(wV),[0,a(cf),0]]],akt=a(BS),akv=[0,a(eL),6,12,6,19,[0,a(cf),0]],akF=[0,a(eL),6,12,6,19,[0,a(cf),0]],aks=[0,a(eL),6,12,6,19,[0,a(cf),0]],akG=[0,a(f_),[0,a(bQ),0]],akn=[0,a(E),za,14,za,28,[0,a(kP),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],akm=a(p),ako=[0,a(d),f8,12,f8,26,[0,a(ck),[0,a(A),[0,a(e),0]]]],akl=[0,a(E),Dg,14,Dg,28,[0,a(kJ),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],akk=a(p),akp=[0,a(d),f8,12,f8,26,[0,a(ck),[0,a(A),[0,a(e),0]]]],akf=[0,a(E),q1,20,q1,55,[0,a(kJ),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],akc=a(p),akd=a(p),ake=a(kI),akg=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],aka=[0,a(E),DH,20,DH,51,[0,a(kJ),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aj9=a(p),aj_=a(p),aj$=a(kI),akb=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],aj7=[0,a(E),x$,7,x$,42,[0,a(kP),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aj3=a(Cz),aj4=a(et),aj5=a(kI),aj6=a(p),aj8=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],aj1=[0,a(E),wH,7,wH,51,[0,a(kP),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajX=a(Cz),ajY=a(et),ajZ=a(kI),aj0=a(p),aj2=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajS=[0,a(E),wA,14,wA,36,[0,a(kJ),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajT=[0,a(d),fJ,11,fJ,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajQ=[0,a(E),BU,14,BU,36,[0,a(kP),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajP=a(cI),ajR=[0,a(d),fJ,11,fJ,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajJ=[0,a(E),vO,14,vO,36,[0,a(kP),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajK=[0,a(d),fL,11,fL,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajI=[0,a(E),xU,14,xU,36,[0,a(kJ),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajL=[0,a(d),fL,11,fL,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajE=[0,a(E),vS,14,vS,36,[0,a("Article R824-3"),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajz=[0,0],ajA=[1,0],ajB=[1,0],ajC=[0,0],ajD=[0,0],ajF=[0,a(d),op,11,op,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajy=[0,a(d),op,11,op,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajG=[0,a(kH),[0,a("mode_occupation_impay\xc3\xa9"),0]],ajM=[0,a(d),fL,11,fL,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajH=[0,a(d),fL,11,fL,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajN=[0,a(kH),[0,a("d\xc3\xa9pense_logement_brute"),0]],ajU=[0,a(d),fJ,11,fJ,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajO=[0,a(d),fJ,11,fJ,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajV=[0,a(kH),[0,a("d\xc3\xa9pense_logement_nette"),0]],akh=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajW=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],aki=[0,a(kH),[0,a("seuil_impay\xc3\xa9_d\xc3\xa9pense_de_logement"),0]],akq=[0,a(d),f8,12,f8,26,[0,a(ck),[0,a(A),[0,a(e),0]]]],akj=[0,a(d),f8,12,f8,26,[0,a(ck),[0,a(A),[0,a(e),0]]]],akr=[0,a(kH),[0,a("montant_impay\xc3\xa9"),0]],ajt=[0,a(c8),rR,5,rR,42,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(ab),[0,a(af),0]]]]]]]]]],aju=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajr=[0,a(c8),eB,5,eB,41,[0,a(kG),[0,a(kt),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],ajs=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajp=[0,a(c8),266,5,vK,42,[0,a(kG),[0,a(kt),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],ajq=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajm=a("1952"),ajn=[0,a(c8),xj,5,xj,48,[0,a(kG),[0,a(kt),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],ajo=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajj=a("1953"),ajk=[0,a(c8),ni,5,ni,48,[0,a(kG),[0,a(kt),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],ajl=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajg=a("1954"),ajh=[0,a(c8),di,5,di,48,[0,a(kG),[0,a(kt),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],aji=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajv=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajf=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajw=[0,a(rK),[0,a("\xc3\xa2ge_ouverture_droit"),0]],ajc=[0,a(E),xJ,14,xJ,36,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ai0=a(p),ai1=a(D8),ai2=a(wr),ai3=a(z),ai4=a(ih),ai5=a(X),ai6=a(ov),ai7=a(_),ai8=a(qE),ai9=a(ah),ai_=a(hQ),ai$=a(ah),aja=a(kd),ajb=a(hQ),ajd=[0,a(d),n6,12,n6,34,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aiZ=[0,a(d),n6,12,n6,34,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aje=[0,a(kq),[0,a(v_),0]],aiV=[0,a(E),yp,5,yp,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aiH=a(p),aiI=a("1.2"),aiJ=a("1.5"),aiK=a(z),aiL=a(ih),aiM=a(X),aiN=a(ov),aiO=a(_),aiP=a(qE),aiQ=a(ah),aiR=a(hQ),aiS=a(ah),aiT=a(kd),aiU=a(hQ),aiW=[0,a(d),hv,12,hv,34,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aiG=[0,a(E),vP,14,vP,36,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ais=a(p),ait=a(D8),aiu=a(wr),aiv=a(z),aiw=a(ih),aix=a(X),aiy=a(ov),aiz=a(_),aiA=a(qE),aiB=a(ah),aiC=a(hQ),aiD=a(ah),aiE=a(kd),aiF=a(hQ),aiX=[0,a(d),hv,12,hv,34,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],air=[0,a(d),hv,12,hv,34,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aiY=[0,a(kw),[0,a(r5),0]],ain=[0,a(E),oM,5,oM,26,[0,a(rv),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ail=a(b5),aik=a(cI),aim=a(b5),aio=[0,a(d),iK,12,iK,19,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aij=[0,a(E),xc,14,xc,21,[0,a(rv),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aih=a(b5),aig=a(cI),aii=a(b5),aic=[0,a(E),EC,14,EC,50,[0,a(rv),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aib=[1,0],ah8=[0,a(Q),By,5,By,26,[0,a(sx),[0,a(fg),[0,a(L),0]]]],ahT=a("0.328"),ahU=a(xZ),ahV=[1,0],ahW=a(wc),ahX=a(DT),ahY=a(xZ),ahZ=a(vp),ah0=a(y4),ah1=a(DT),ah2=a("0.024"),ah3=a(ww),ah4=a(y4),ah5=a(b5),ah6=a(p),ah7=a(ww),ah9=[0,a(d),gJ,11,gJ,35,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ahS=[0,a(Q),FK,14,FK,38,[0,a(sx),[0,a(fg),[0,a(L),0]]]],ahA=a("0.48"),ahB=a(xn),ahC=[1,0],ahD=a(sr),ahE=a(y9),ahF=a(xn),ahG=a("0.264"),ahH=a(yr),ahI=a(y9),ahJ=a("0.216"),ahK=a(Eg),ahL=a(yr),ahM=a("0.104"),ahN=a(yo),ahO=a(Eg),ahP=a(Cw),ahQ=a(p),ahR=a(yo),ahw=[0,a(Q),z7,14,z7,41,[0,a(sx),[0,a(fg),[0,a(L),0]]]],ahu=a("7632"),ahv=a("4557"),ahx=[0,a(d),l7,11,l7,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aht=[0,a(d),l7,11,l7,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ahy=[0,a(dP),[0,a("montant_forfaitaire_d832_26"),0]],ah_=[0,a(d),gJ,11,gJ,35,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ahz=[0,a(d),gJ,11,gJ,35,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ah$=[0,a(dP),[0,a("tranches_revenus_d832_26"),0]],aid=[0,a(d),nz,11,nz,47,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aia=[0,a(d),nz,11,nz,47,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aie=[0,a(dP),[0,a("tranches_revenus_d832_26_multipli\xc3\xa9es"),0]],aip=[0,a(d),iK,12,iK,19,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aif=[0,a(d),iK,12,iK,19,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aiq=[0,a(dP),[0,a(bQ),0]],ahp=[0,a(fc),gf,5,gf,34,[0,a(cF),[0,a(rp),[0,a(st),0]]]],ahq=[0,a(d),n8,12,n8,19,[0,a(fM),[0,a(i),[0,a(e),0]]]],aho=[0,a(d),n8,12,n8,19,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahl=[0,a(fc),xT,39,xT,68,[0,a(nv),[0,a(rp),[0,a(st),0]]]],ahk=a(lX),ahf=[0,a(c8),37,9,37,20,[0,a("Article L136-1-3"),[0,a("Section 1 : De la contribution sociale sur les revenus d'activit\xc3\xa9 et sur les revenus de remplacement"),[0,a("Chapitre 6 : Contribution sociale g\xc3\xa9n\xc3\xa9ralis\xc3\xa9e"),[0,a(jc),[0,a(ab),[0,a(af),0]]]]]]],ahg=[0,a(d),f4,11,f4,22,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahe=[0,a(d),f4,11,f4,22,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahh=[0,a(d),f4,11,f4,22,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahd=[0,a(d),f4,11,f4,22,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahi=[0,a(bk),[0,a("exon\xc3\xa9r\xc3\xa9_csg"),0]],ahm=[0,a(d),hX,11,hX,20,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahj=[0,a(d),hX,11,hX,20,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahn=[0,a(bk),[0,a("taux_crds"),0]],ahr=[0,a(bk),[0,a(bQ),0]],ahs=[0,a(fc),fD,13,fD,24,[0,a(cF),[0,a(rp),[0,a(st),0]]]],ag5=a("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16_in"),ag6=a(hA),ag7=a(hY),ag8=a(iE),ag9=a(iF),ag_=a(kB),ag$=a(AP),aha=a(vn),ahb=a(C_),ahc=[0,a("CalculAllocationLogementFoyer_in"),0],agQ=a(z5),agR=a("charges_mensuelles_pr\xc3\xaat_in"),agS=a(yS),agT=a(AJ),agU=a(yf),agV=a(u5),agW=a(Am),agX=a(wQ),agY=a(hA),agZ=a(hY),ag0=a(iE),ag1=a(iF),ag2=a("ressources_m\xc3\xa9nage_arrondies_base_in"),ag3=[0,a("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"),0],agB=a("changement_logement_d842_4_in"),agC=a(vN),agD=a(Bn),agE=a(BD),agF=a(B0),agG=a(Bw),agH=a(Fr),agI=a(hY),agJ=a(iE),agK=a(iF),agL=a(hA),agM=a(F_),agN=a(kB),agO=a("loyer_principal_in"),agP=[0,a("CalculAllocationLogementLocatif_in"),0],agm=a(hA),agn=a("anciennet\xc3\xa9_logement_in"),ago=a("type_pr\xc3\xaat_in"),agp=a(hY),agq=a(Am),agr=a(z5),ags=a(yS),agt=a(AJ),agu=a(u5),agv=a(yf),agw=a(iE),agx=a(iF),agy=a(kB),agz=a(wQ),agA=[0,a("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"),0],aga=a("n_nombre_parts_d832_25_in"),agb=a("condition_2_du_832_25_in"),agc=a(AP),agd=a(hA),age=a(hY),agf=a(iE),agg=a(iF),agh=a(kB),agi=a(vn),agj=a(C_),agk=[0,a("CalculAidePersonnalis\xc3\xa9eLogementFoyer_in"),0],afX=a(vN),afY=a(Bn),afZ=a(BD),af0=a(B0),af1=a(Bw),af2=a(Fr),af3=a(hY),af4=a(iE),af5=a(iF),af6=a(hA),af7=a(F_),af8=a(kB),af9=a("loyer_principal_base_in"),af_=[0,a("CalculAidePersonnalis\xc3\xa9eLogementLocatif_in"),0],afO=a("enfant_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_quatri\xc3\xa8me_mois_grossesse"),afP=a("condition_rattach\xc3\xa9_foyer_fiscal_parent_ifi"),afQ=a("situation_familiale"),afR=a("nombre_autres_occupants_logement"),afS=a("personnes_\xc3\xa0_charge"),afT=a("logement"),afU=a("prestations_re\xc3\xa7ues"),afV=[0,a("M\xc3\xa9nage"),0],afE=a("zone"),afF=a("surface_m_carr\xc3\xa9s"),afG=a("logement_decent_l89_462"),afH=a("usufruit"),afI=a("lou\xc3\xa9_ou_sous_lou\xc3\xa9_\xc3\xa0_des_tiers"),afJ=a("propri\xc3\xa9taire"),afK=a("mode_occupation"),afL=a("est_ehpad_ou_maison_autonomie_l313_12_asf"),afM=a("r\xc3\xa9sidence_principale"),afN=[0,a("Logement"),0],afy=a(y$),afA=a("R\xc3\xa9sidentLogementFoyer"),afB=a("AccessionPropri\xc3\xa9t\xc3\xa9LocalUsageExclusifHabitation"),afC=a(Dj),afD=a(xV),afz=[0,a("ModeOccupation"),0],afu=a(F0),afw=a("AccessionPropri\xc3\xa9t\xc3\xa9"),afx=a(xY),afv=[0,a("Cat\xc3\xa9gorieCalculAPL"),0],afl=a("changement_logement_d842_4"),afm=a("logement_meubl\xc3\xa9_d842_2"),afn=a("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),afo=a("colocation"),afp=a("logement_est_chambre"),afq=a("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),afr=a("loyer_principal"),afs=a("bailleur"),aft=[0,a(F0),0],afg=a("personne_h\xc3\xa9berg\xc3\xa9e_centre_soin_l_L162_22_3_s\xc3\xa9curit\xc3\xa9_sociale"),afh=a("patrimoine"),afi=a("nationalit\xc3\xa9"),afj=a(Bo),afk=[0,a(qx),0],afd=a(DZ),aff=a(CO),afe=[0,a("Personne\xc3\x80Charge"),0],ae3=a("pr\xc3\xaat"),ae4=a("anciennet\xc3\xa9_logement"),ae5=a("situation_r822_11_13_17"),ae6=a("copropri\xc3\xa9t\xc3\xa9"),ae7=a("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire"),ae8=a("type_travaux_logement_r842_5"),ae9=a("type_travaux_logement_d832_15"),ae_=a("date_entr\xc3\xa9e_logement"),ae$=a("charges_mensuelles_pr\xc3\xaat"),afa=a("mensualit\xc3\xa9_principale"),afb=a("logement_situ\xc3\xa9_commune_d\xc3\xa9s\xc3\xa9quilibre_l831_2"),afc=[0,a("Propri\xc3\xa9taire"),0],ae0=a(AQ),ae2=a(zy),ae1=[0,a("ChangementLogementD842_4"),0],aeX=a("Fran\xc3\xa7aise"),aeZ=a("\xc3\x89trang\xc3\xa8re"),aeY=[0,a("Nationalit\xc3\xa9"),0],aeU=a(kQ),aeW=a(o7),aeV=[0,a("Lou\xc3\xa9OuSousLou\xc3\xa9\xc3\x80DesTiers"),0],aeQ=a(CT),aeS=a("BailleurPriv\xc3\xa9AvecConventionnementSocial"),aeT=a("BailleurPriv\xc3\xa9"),aeR=[0,a("TypeBailleur"),0],aeI=a("situation_garde_altern\xc3\xa9e"),aeJ=a(rE),aeK=a(q4),aeL=a(q3),aeM=a(qW),aeN=a(qH),aeO=a(rw),aeP=[0,a(DZ),0],aeA=a(qH),aeB=a(qW),aeC=a(EZ),aeD=a(q3),aeE=a(q4),aeF=a(rE),aeG=a(rw),aeH=[0,a("EnfantPrestationsFamiliales"),0],aes=a("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16"),aet=a("redevance"),aeu=a("construit_application_loi_1957_12_III"),aev=a("date_conventionnement"),aew=a(Fh),aex=a("remplit_conditions_r832_21"),aey=a("type"),aez=[0,a(xY),0],aek=a("titulaire_allocation_personne_\xc3\xa2g\xc3\xa9e"),ael=a("b\xc3\xa9n\xc3\xa9ficiaire_l161_19_l351_8_l643_3_s\xc3\xa9cu"),aem=a("incapacit\xc3\xa9_80_pourcent_ou_restriction_emploi"),aen=a("parent\xc3\xa9"),aeo=a("ascendant_descendant_collat\xc3\xa9ral_deuxi\xc3\xa8me_troisi\xc3\xa8me_degr\xc3\xa9"),aep=a("ressources"),aeq=a(Bo),aer=[0,a(CO),0],aeg=a(u_),aeh=a(vo),aei=a(EK),aej=[0,a("TrancheRevenuD\xc3\xa9cimal"),0],aeb=a(u_),aec=a(vo),aed=a(EK),aee=[0,a("TrancheRevenu"),0],ad9=a(Az),ad$=a(C6),ad_=[0,a("NeufOuAncien"),0],ad5=a("titulaire_pr\xc3\xaat"),ad6=a("date_signature"),ad7=a("type_pr\xc3\xaat"),ad8=[0,a("Pr\xc3\xaat"),0],adY=a(aw),adZ=a(cX),ad0=a(FQ),ad1=a(qB),ad2=a(ve),ad3=a(q7),ad4=[0,a(ao),0],adU=a(aw),adV=a(cX),adW=[0,a(V),0],adR=a(aw),adS=a(cX),adT=[0,a(bh),0],adO=a("ancienne_allocation_logement"),adP=a("ancien_loyer_principal"),adQ=[0,a("InfosChangementLogementD842_4"),0],adL=a(aw),adM=a(cX),adN=[0,a("Traitement_formule_aide_finale"),0],adF=a(aw),adG=a(cX),adH=a("coefficient_prise_en_charge_d832_10"),adI=a(q_),adJ=a(sq),adK=[0,a(aj),0],adu=a(aw),adv=a(cX),adw=a("coefficient_prise_en_charge_d832_25"),adx=a(vs),ady=a(zT),adz=a(xN),adA=a(r5),adB=a(Ej),adC=a(A2),adD=[0,a(au),0],adl=a(aw),adm=a(cX),adn=a(CD),ado=a(E7),adp=a(E8),adq=a(CV),adr=a(ze),ads=[0,a(aD),0],adi=a("satisfait_conditions_l512_2_code_s\xc3\xa9curit\xc3\xa9_sociale"),adj=[0,a("Conditions\xc3\x89trangers"),0],adf=a("ne_produisant_pas_revenu_p\xc3\xa9riode_r822_3_3_r822_4"),adg=a("produisant_revenu_p\xc3\xa9riode_r822_3_3_r822_4"),adh=[0,a("Patrimoine"),0],adc=a("conforme_article_l442_1"),add=a("date_naissance_personne_sous_location"),ade=[0,a("PersonneSousLocation"),0],ada=a("conventionn\xc3\xa9_livre_III_titre_II_chap_I_sec_3"),adb=[0,a("ConventionANHA"),0],ac9=a("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_per\xc3\xa7ue"),ac_=a(Fh),ac$=[0,a("ConventionBailleurSocial"),0],ac0=a(ol),ac2=a(U),ac3=a(qV),ac4=a(nY),ac5=a(DP),ac6=a(i0),ac7=a(BQ),ac8=a(yW),ac1=[0,a(FP),0],acV=a(ks),acX=a(kh),acY=a(Cg),acW=[0,a(CS),0],acP=a(A3),acR=a(D1),acS=a(j7),acT=a(Fs),acU=a(yI),acQ=[0,a("PriseEnChargeEnfant"),0],acF=a(mw),acH=a(oy),acI=a(l$),acJ=a(Dp),acK=a(yR),acL=a(o9),acM=a(C0),acN=a(no),acO=a(oK),acG=[0,a(BT),0],acC=a(EV),acE=a(Ak),acD=[0,a("SituationFamilialeCalculAPL"),0],acx=a("\xc3\x89tudiantLog\xc3\xa9EnChambreCROUS"),acz=a("\xc3\x89tudiantLog\xc3\xa9EnChambreCROUSR\xc3\xa9habilit\xc3\xa9e"),acA=a("Personnes\xc3\x82g\xc3\xa9esSelon3DeD842_16"),acB=a(ET),acy=[0,a("Cat\xc3\xa9gorie\xc3\x89quivalenceLoyerAllocationLogementFoyer"),0],acs=a("LogementPersonnes\xc3\x82g\xc3\xa9esOuHandicap\xc3\xa9es"),acu=a("R\xc3\xa9sidenceSociale"),acv=a("FoyerJeunesTrvailleursOuMigrantsConventionn\xc3\xa9L353_2Avant1995"),acw=a(il),act=[0,a("TypeLogementFoyer"),0],acl=a("C\xc3\xa9libataire"),acn=a("Mari\xc3\xa9s"),aco=a("Pacs\xc3\xa9s"),acp=a(yT),acq=a("C\xc3\xa9libataireS\xc3\xa9par\xc3\xa9DeFait"),acr=a("ConcubinageDontS\xc3\xa9par\xc3\xa9DeFait"),acm=[0,a("SituationFamiliale"),0],ach=a("AidePersonnalis\xc3\xa9eLogement"),acj=a(oW),ack=a(nm),aci=[0,a("TypeAidesPersonnelleLogement"),0],acd=a("Pas\xc3\x89ligible"),acf=a(oW),acg=a(nm),ace=[0,a("Type\xc3\x89ligibilit\xc3\xa9AllocationLogement"),0],aca=a("Impay\xc3\xa9Loyer"),acc=a("Impay\xc3\xa9Pr\xc3\xaat"),acb=[0,a("ModeOccupationImpay\xc3\xa9"),0],ab7=a("TotalAnnuel\xc3\x89ch\xc3\xa9ances"),ab9=a("Mensualit\xc3\xa9"),ab_=a(Fw),ab8=[0,a("D\xc3\xa9penseLogement"),0],ab3=a(y_),ab5=a(wa),ab6=a(yL),ab4=[0,a("ZoneDHabitation"),0],abZ=a(Bf),ab1=a(A7),ab2=a("Collat\xc3\xa9ralDeuxi\xc3\xa8meTroisi\xc3\xa8meDegr\xc3\xa9"),ab0=[0,a("Parent\xc3\xa9"),0],abW=a("PasDeGardeAltern\xc3\xa9e"),abY=a("GardeAltern\xc3\xa9eCoefficientPriseEnCharge"),abX=[0,a("SituationGardeAltern\xc3\xa9e"),0],abT=a("DemandeurOuConjointOuParentOuViaPartsSoci\xc3\xa9t\xc3\xa9s"),abV=a(il),abU=[0,a("ParentOuAutre"),0],abM=a(U),abO=a(qV),abP=a(CN),abQ=a(i0),abR=a("AllocationSoutienEnfantHandicap\xc3\xa9"),abS=a("AllocationAdulteHandicap\xc3\xa9"),abN=[0,a("PrestationRe\xc3\xa7ue"),0],abI=a(Ek),abK=a(v5),abJ=[0,a("LimiteTrancheD\xc3\xa9cimal"),0],abF=a(Ek),abH=a(v5),abG=[0,a("LimiteTranche"),0],abC=a(o7),abE=a(kQ),abD=[0,a("Am\xc3\xa9lior\xc3\xa9ParOccupant"),0],abx=a("ObjectifD\xc3\xa9cenceLogement"),abz=a("Pr\xc3\xa9vuDansListeR321_15"),abA=a(Cl),abB=a(ow),aby=[0,a("TypeTravauxLogementR842_5"),0],abt=a(xe),abv=a("TravauxSurLogementD\xc3\xa9j\xc3\xa0AcquisD832_15_2"),abw=a(ow),abu=[0,a("TypeTravauxLogementD832_15"),0],abq=a(qx),abs=a(xG),abr=[0,a("TitulairePr\xc3\xaat"),0],abk=a(Bx),abm=a(xE),abn=a(z4),abo=a(Aa),abp=a(il),abl=[0,a("TypePr\xc3\xaat"),0],bx1=a(aa),bxB=a("The function 'n_nombre_parts_d832_25_in' translation isn't yet supported..."),bxC=a("The function 'condition_2_du_832_25_in' translation isn't yet supported..."),bxz=a("The function 'condition_logement_surface_in' translation isn't yet supported..."),bxA=a("The function 'condition_logement_residence_principale_in' translation isn't yet supported..."),bxt=a("AccessionProprieteLocalUsageExclusifHabitation"),bxu=a(y$),bxv=a(xV),bxw=a("ResidentLogementFoyer"),bxx=a(Dj),bxy=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ModeOccupation.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ModeOccupation.t'")],bxq=a("AutrePersonneACharge"),bxr=a("EnfantACharge"),bxs=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PersonneACharge.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PersonneACharge.t'")],bxm=a(AQ),bxn=a(zy),bxp=[1,0],bxo=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ChangementLogementD8424.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ChangementLogementD8424.t'")],bxi=a("Etrangere"),bxj=a("Francaise"),bxl=[0,0],bxk=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'Nationalite.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'Nationalite.t'")],bxe=a(kQ),bxf=a(o7),bxh=[0,0],bxg=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'LoueOuSousLoueADesTiers.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'LoueOuSousLoueADesTiers.t'")],bw$=a("BailleurPrive"),bxa=a("BailleurPriveAvecConventionnementSocial"),bxb=a(CT),bxd=[2,0],bxc=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeBailleur.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeBailleur.t'")],bw7=a("MoinsDeTroisEnfants"),bw8=a("PlusDeTroisEnfants"),bw_=[0,0],bw9=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'")],bw3=a(C6),bw4=a(Az),bw6=[0,0],bw5=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'NeufOuAncien.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'NeufOuAncien.t'")],bwM=a(v0),bwN=a(x8),bwO=a(nY),bwP=a(EA),bwQ=a(i0),bwR=a(U),bwS=a(qw),bwT=a(ol),bwV=[0,0],bwW=[2,0],bwX=[1,0],bwY=[5,0],bwZ=[6,0],bw0=[3,0],bw1=[7,0],bw2=[4,0],bwU=[0,[11,a(bg),[2,0,[11,a(D2),0]]],a(FR)],bwF=a(r4),bwG=a(ks),bwH=a(kh),bwJ=[1,0],bwK=[0,0],bwL=[2,0],bwI=[0,[11,a(bg),[2,0,[11,a(x2),0]]],a(wz)],bwu=a(j7),bwv=a(rb),bww=a(qP),bwx=a(rt),bwy=a(qM),bwA=[4,0],bwB=[3,0],bwC=[0,0],bwD=[1,0],bwE=[2,0],bwz=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PriseEnChargeEnfant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PriseEnChargeEnfant.t'")],bwb=a(mw),bwc=a(oy),bwd=a(wv),bwe=a(l$),bwf=a(oK),bwg=a(Fl),bwh=a(xg),bwi=a(o9),bwj=a(no),bwl=[7,0],bwm=[5,0],bwn=[4,0],bwo=[6,0],bwp=[8,0],bwq=[2,0],bwr=[3,0],bws=[1,0],bwt=[0,0],bwk=[0,[11,a(bg),[2,0,[11,a(BO),0]]],a(wO)],bv8=a(Ak),bv9=a(EV),bv$=[0,0],bwa=[1,0],bv_=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'SituationFamilialeCalculAPL.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationFamilialeCalculAPL.t'")],bvZ=a(ET),bv0=a("EtudiantLogeEnChambreCROUS"),bv1=a("EtudiantLogeEnChambreCROUSRehabilitee"),bv2=a("PersonnesAgeesSelon3DeD842_16"),bv4=[2,0],bv5=[1,0],bv6=[0,0],bv7=[3,0],bv3=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'")],bvQ=a(il),bvR=a("FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995"),bvS=a("LogementPersonnesAgeesOuHandicapees"),bvT=a("ResidenceSociale"),bvV=[1,0],bvW=[0,0],bvX=[2,0],bvY=[3,0],bvU=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeLogementFoyer.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeLogementFoyer.t'")],bvE=a("Celibataire"),bvF=a("CelibataireSepareDeFait"),bvG=a("ConcubinageDontSepareDeFait"),bvH=a(yT),bvI=a("Maries"),bvJ=a("Pacses"),bvL=[2,0],bvM=[3,0],bvN=[5,0],bvO=[4,0],bvP=[0,0],bvK=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'SituationFamiliale.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationFamiliale.t'")],bvx=a("AidePersonnaliseeLogement"),bvy=a(oW),bvz=a(nm),bvB=[2,0],bvC=[1,0],bvD=[0,0],bvA=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeAidesPersonnelleLogement.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeAidesPersonnelleLogement.t'")],bvt=a(Fw),bvu=a("Mensualite"),bvv=a("TotalAnnuelEcheances"),bvw=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'DepenseLogement.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DepenseLogement.t'")],bvm=a("Bailleur"),bvn=a("Beneficiaire"),bvo=a("EtablissementHabilite"),bvq=[2,0],bvr=[1,0],bvs=[0,0],bvp=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'VersementA.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'VersementA.t'")],bvi=a(kQ),bvj=a("OuiAvecLoyerOuCharges"),bvl=[1,0],bvk=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'")],bvb=a(y_),bvc=a(wa),bvd=a(yL),bvf=[2,0],bvg=[1,0],bvh=[0,0],bve=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ZoneDHabitation.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ZoneDHabitation.t'")],bu7=a("ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse"),bu8=a("AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse"),bu9=a("DateDeNaissance"),bu$=[1,0],bva=[2,0],bu_=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'")],bu0=a(Bf),bu1=a("CollateralDeuxiemeTroisiemeDegre"),bu2=a(A7),bu4=[1,0],bu5=[2,0],bu6=[0,0],bu3=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'Parente.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'Parente.t'")],buW=a("GardeAlterneeCoefficientPriseEnCharge"),buX=a("PasDeGardeAlternee"),buZ=[0,0],buY=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'SituationGardeAlternee.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationGardeAlternee.t'")],buS=a(il),buT=a("DemandeurOuConjointOuParentOuViaPartsSocietes"),buV=[1,0],buU=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ParentOuAutre.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ParentOuAutre.t'")],buF=a("AllocationAdulteHandicape"),buG=a(CN),buH=a("AllocationSoutienEnfantHandicape"),buI=a(i0),buJ=a(U),buK=a(qw),buM=[1,0],buN=[0,0],buO=[3,0],buP=[4,0],buQ=[2,0],buR=[5,0],buL=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PrestationRecue.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PrestationRecue.t'")],buA=a(kQ),buB=a(o7),buD=[0,0],buE=[1,0],buC=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'AmelioreParOccupant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'AmelioreParOccupant.t'")],bur=a(Cl),bus=a("ObjectifDecenceLogement"),but=a(ow),buu=a("PrevuDansListeR321_15"),buw=[1,0],bux=[3,0],buy=[0,0],buz=[2,0],buv=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeTravauxLogementR8425.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementR8425.t'")],buk=a(ow),bul=a(xe),bum=a("TravauxSurLogementDejaAcquisD832_15_2"),buo=[1,0],bup=[0,0],buq=[2,0],bun=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeTravauxLogementD83215.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementD83215.t'")],buf=a(qx),bug=a(xG),bui=[1,0],buj=[0,0],buh=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TitulairePret.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TitulairePret.t'")],bt6=a(il),bt7=a(Bx),bt8=a(z4),bt9=a(xE),bt_=a(Aa),bua=[3,0],bub=[1,0],buc=[2,0],bud=[0,0],bue=[4,0],bt$=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypePret.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypePret.t'")],bt4=[0,a(Fu),a(zz),a(ES),a(AX),a(xk),a(o3),a(ge),a(AW),a(y2),a(vC),a(DB),a(yu),a(A8),a(yE),a(Fe),a(C8),a(BB),a(zr),a(F3),a(BX),a(vt),a(w6),a(AY),a(vf)],bt5=[0,a(ge),a(AX),a(C8),a(BB),a(zr),a(xk),a(vt),a(ES),a(vC),a(AW),a(F3),a(A8),a(DB),a(yE),a(AY),a(zz),a(yu),a(BX),a(vf),a(w6),a(y2),a(Fu),a(Fe),a(o3)],byo=a("AidesLogementLib"),byq=a(aa);function -bM(a){if(typeof -a==="number")return 0;else -switch(a[0]){case -0:return[0,bM(a[1])];case -1:return[1,bM(a[1])];case -2:return[2,bM(a[1])];case -3:return[3,bM(a[1])];case -4:return[4,bM(a[1])];case -5:return[5,bM(a[1])];case -6:return[6,bM(a[1])];case -7:return[7,bM(a[1])];case -8:var -c=a[1];return[8,c,bM(a[2])];case -9:var -b=a[1];return[9,b,b,bM(a[3])];case -10:return[10,bM(a[1])];case -11:return[11,bM(a[1])];case -12:return[12,bM(a[1])];case -13:return[13,bM(a[1])];default:return[14,bM(a[1])]}}function -cM(a,b){if(typeof -a==="number")return b;else -switch(a[0]){case -0:return[0,cM(a[1],b)];case -1:return[1,cM(a[1],b)];case -2:return[2,cM(a[1],b)];case -3:return[3,cM(a[1],b)];case -4:return[4,cM(a[1],b)];case -5:return[5,cM(a[1],b)];case -6:return[6,cM(a[1],b)];case -7:return[7,cM(a[1],b)];case -8:var -c=a[1];return[8,c,cM(a[2],b)];case -9:var -d=a[2],e=a[1];return[9,e,d,cM(a[3],b)];case -10:return[10,cM(a[1],b)];case -11:return[11,cM(a[1],b)];case -12:return[12,cM(a[1],b)];case -13:return[13,cM(a[1],b)];default:return[14,cM(a[1],b)]}}function -bF(a,b){if(typeof -a==="number")return b;else -switch(a[0]){case -0:return[0,bF(a[1],b)];case -1:return[1,bF(a[1],b)];case -2:var -c=a[1];return[2,c,bF(a[2],b)];case -3:var -d=a[1];return[3,d,bF(a[2],b)];case -4:var -e=a[3],f=a[2],g=a[1];return[4,g,f,e,bF(a[4],b)];case -5:var -h=a[3],i=a[2],j=a[1];return[5,j,i,h,bF(a[4],b)];case -6:var -k=a[3],l=a[2],m=a[1];return[6,m,l,k,bF(a[4],b)];case -7:var -n=a[3],o=a[2],p=a[1];return[7,p,o,n,bF(a[4],b)];case -8:var -q=a[3],r=a[2],s=a[1];return[8,s,r,q,bF(a[4],b)];case -9:var -t=a[1];return[9,t,bF(a[2],b)];case -10:return[10,bF(a[1],b)];case -11:var -u=a[1];return[11,u,bF(a[2],b)];case -12:var -v=a[1];return[12,v,bF(a[2],b)];case -13:var -w=a[2],x=a[1];return[13,x,w,bF(a[3],b)];case -14:var -y=a[2],z=a[1];return[14,z,y,bF(a[3],b)];case -15:return[15,bF(a[1],b)];case -16:return[16,bF(a[1],b)];case -17:var -A=a[1];return[17,A,bF(a[2],b)];case -18:var -B=a[1];return[18,B,bF(a[2],b)];case -19:return[19,bF(a[1],b)];case -20:var -C=a[2],D=a[1];return[20,D,C,bF(a[3],b)];case -21:var -E=a[1];return[21,E,bF(a[2],b)];case -22:return[22,bF(a[1],b)];case -23:var -F=a[1];return[23,F,bF(a[2],b)];default:var -G=a[2],H=a[1];return[24,H,G,bF(a[3],b)]}}function -po(a,c,b){return a[1]===c?(a[1]=b,1):0}function -aH(a){throw[0,k8,a]}function -b0(a){throw[0,sU,a]}var -sV=[bm,GW,cZ(0)];function -s0(b,a){return Gy(b,a)?b:a}function -gm(a){return 0<=a?a:-a|0}var -s1=jx(GY),s2=jx(GZ),GX=sc,G1=jx(G0);function -bS(d,c){var -a=aI(d),e=aI(c),b=bZ(a+e|0);ej(d,0,b,0,a);ej(c,0,b,a,e);return cK(b)}function -G2(a){return a?G3:G4}bzd(0);var -G7=GD(1),em=GD(2);function -G8(b){function -a(b){var -a=b;for(;;){if(a){var -c=a[2],d=a[1];try{gY(d)}catch(a){a=o(a);if(a[1]!==sY)throw a;var -e=a}var -a=c;continue}return 0}}return a(bze(0))}function -jC(b,a){return sJ(b,a,0,aI(a))}function -s3(a){jC(em,a);GE(em,10);return gY(em)}var -pr=[0,G8];function -G_(c){for(;;){var -a=pr[1],d=[0,1],b=1-po(pr,a,function(a,b){return function(d){if(po(a,1,0))r(c,0);return r(b,0)}}(d,a));if(b)continue;return b}}function -ps(a){return r(pr[1],0)}sM(a(u7),ps);var -pt=bzr(0),fs=(4*pt|0)-1|0,Ha=[bm,G$,cZ(0)];function -Hb(a){throw Ha}function -Hc(a){var -c=a[1];a[1]=Hb;try{var -b=r(c,0);bzi(a,b);return b}catch(b){b=o(b);a[1]=function(a){throw b};throw b}}function -pu(b,c,g){var -a=r(c,0);if(a){var -d=a[2],e=a[1],f=function(a){return pu(b,d,a)};return[0,r(b,e),f]}return 0}function -s4(d,c){var -b=c;for(;;){var -a=r(b,0);if(a){var -e=a[2];r(d,a[1]);var -b=e;continue}return 0}}function -s5(a){if(0<=a&&!(m0>>0))e=1}else -if(65<=d)e=1}else{var -f=0;if(32!==d)if(43<=d)switch(d+Ay|0){case -5:if(a<(c+2|0)&&1>>0){if(33>>0)p=1}else -if(2===n)p=1;if(!p){var -j=j+1|0;continue}var -e=fr(k),a=[0,0],t=ds(e)-1|0,y=0;if(!(t<0)){var -i=y;for(;;){var -f=kY(e,i),g=0;if(32<=f){var -l=f-34|0,q=0;if(58>>0){if(93<=l)q=1}else -if(56>>0){g=1;q=1}if(!q){var -m=1;g=2}}else -if(11<=f){if(13===f)g=1}else -if(8<=f)g=1;switch(g){case -0:var -m=4;break;case -1:var -m=2;break}a[1]=a[1]+m|0;var -B=i+1|0;if(t!==i){var -i=B;continue}break}}if(a[1]===ds(e)){var -r=ds(e),s=bZ(r);gh(e,0,s,0,r);var -v=s}else{var -b=bZ(a[1]);a[1]=0;var -u=ds(e)-1|0,z=0;if(!(u<0)){var -h=z;for(;;){var -c=kY(e,h),d=0;if(35<=c)if(92===c)d=2;else -if(cQ<=c)d=1;else -d=3;else -if(32<=c)if(34<=c)d=2;else -d=3;else -if(14<=c)d=1;else -switch(c){case -8:bY(b,a[1],92);a[1]++;bY(b,a[1],98);break;case -9:bY(b,a[1],92);a[1]++;bY(b,a[1],bp);break;case -10:bY(b,a[1],92);a[1]++;bY(b,a[1],ie);break;case -13:bY(b,a[1],92);a[1]++;bY(b,a[1],zo);break;default:d=1}switch(d){case -1:bY(b,a[1],92);a[1]++;bY(b,a[1],48+(c/cd|0)|0);a[1]++;bY(b,a[1],48+((c/10|0)%10|0)|0);a[1]++;bY(b,a[1],48+(c%10|0)|0);break;case -2:bY(b,a[1],92);a[1]++;bY(b,a[1],c);break;case -3:bY(b,a[1],c);break}a[1]++;var -A=h+1|0;if(u!==h){var -h=A;continue}break}}var -v=b}var -o=cK(v)}var -w=aI(o),x=gn(w+2|0,34);ej(o,0,x,1,w);return cK(x)}}function -td(d,f){var -g=gm(f),e=Jh[1];switch(d[2]){case -0:var -b=CG;break;case -1:var -b=fN;break;case -2:var -b=69;break;case -3:var -b=cJ;break;case -4:var -b=71;break;case -5:var -b=e;break;case -6:var -b=dT;break;case -7:var -b=72;break;default:var -b=70}var -c=s$(16);g5(c,37);switch(d[1]){case -0:break;case -1:g5(c,43);break;default:g5(c,32)}if(8<=d[2])g5(c,35);g5(c,46);cx(c,a(aa+g));g5(c,b);return tb(c)}function -ld(m,a){if(13<=m){var -g=[0,0],h=aI(a)-1|0,n=0;if(!(h<0)){var -c=n;for(;;){if(!(9>>0))g[1]++;var -q=c+1|0;if(h!==c){var -c=q;continue}break}}var -i=g[1],j=bZ(aI(a)+((i-1|0)/3|0)|0),k=[0,0],d=function(a){d3(j,k[1],a);k[1]++;return 0},e=[0,((i-1|0)%3|0)+1|0],l=aI(a)-1|0,o=0;if(!(l<0)){var -b=o;for(;;){var -f=d6(a,b);if(9>>0)d(f);else{if(0===e[1]){d(95);e[1]=3}e[1]+=-1;d(f)}var -p=b+1|0;if(l!==b){var -b=p;continue}break}}return cK(j)}return a}function -Ji(b,c){switch(b){case -1:var -a=Iu;break;case -2:var -a=Iv;break;case -4:var -a=Ix;break;case -5:var -a=Iy;break;case -6:var -a=Iz;break;case -7:var -a=IA;break;case -8:var -a=IB;break;case -9:var -a=IC;break;case -10:var -a=ID;break;case -11:var -a=IE;break;case -0:case -13:var -a=It;break;case -3:case -14:var -a=Iw;break;default:var -a=IF}return ld(b,pb(a,c))}function -Jj(b,c){switch(b){case -1:var -a=IU;break;case -2:var -a=IV;break;case -4:var -a=IX;break;case -5:var -a=IY;break;case -6:var -a=IZ;break;case -7:var -a=I0;break;case -8:var -a=I1;break;case -9:var -a=I2;break;case -10:var -a=I3;break;case -11:var -a=I4;break;case -0:case -13:var -a=IT;break;case -3:case -14:var -a=IW;break;default:var -a=I5}return ld(b,pb(a,c))}function -Jk(b,c){switch(b){case -1:var -a=I7;break;case -2:var -a=I8;break;case -4:var -a=I_;break;case -5:var -a=I$;break;case -6:var -a=Ja;break;case -7:var -a=Jb;break;case -8:var -a=Jc;break;case -9:var -a=Jd;break;case -10:var -a=Je;break;case -11:var -a=Jf;break;case -0:case -13:var -a=I6;break;case -3:case -14:var -a=I9;break;default:var -a=Jg}return ld(b,pb(a,c))}function -Jl(b,c){switch(b){case -1:var -a=IH;break;case -2:var -a=II;break;case -4:var -a=IK;break;case -5:var -a=IL;break;case -6:var -a=IM;break;case -7:var -a=IN;break;case -8:var -a=IO;break;case -9:var -a=IP;break;case -10:var -a=IQ;break;case -11:var -a=IR;break;case -0:case -13:var -a=IG;break;case -3:case -14:var -a=IJ;break;default:var -a=IS}return ld(b,by0(a,c))}function -e5(c,i,b){function -j(d){switch(c[1]){case -0:var -a=45;break;case -1:var -a=43;break;default:var -a=32}return byX(b,i,a)}function -q(c){var -a=o_(b);return 3===a?b<0.?Jn:Jo:4<=a?Jp:c}switch(c[2]){case -5:var -e=sB(td(c,i),b),d=0,u=aI(e);for(;;){if(d===u)var -p=0;else{var -k=bA(e,d)-46|0,l=0;if(23>>0){if(55===k)l=1}else -if(21>>0)l=1;if(!l){var -d=d+1|0;continue}var -p=1}var -v=p?e:bS(e,Jm);return q(v)}case -6:return j(0);case -7:var -h=fr(j(0)),f=ds(h);if(0===f)var -o=h;else{var -m=bZ(f),n=f-1|0,r=0;if(!(n<0)){var -a=r;for(;;){var -g=kY(h,a),s=25>>0?g:g+Ah|0;bY(m,a,s);var -t=a+1|0;if(n!==a){var -a=t;continue}break}}var -o=m}return cK(o);case -8:return q(j(0));default:return sB(td(c,i),b)}}function -j2(d,x,w,v){var -b=x,a=w,c=v;for(;;)if(typeof -c==="number")return r(b,a);else -switch(c[0]){case -0:var -y=c[1];return function(c){return a$(b,[5,a,c],y)};case -1:var -z=c[1];return function(c){var -e=0;if(40<=c)if(92===c)var -d=He;else -if(cQ<=c)e=1;else -e=2;else -if(32<=c)if(39<=c)var -d=Hf;else -e=2;else -if(14<=c)e=1;else -switch(c){case -8:var -d=Hg;break;case -9:var -d=Hh;break;case -10:var -d=Hi;break;case -13:var -d=Hj;break;default:e=1}switch(e){case -1:var -f=bZ(4);bY(f,0,92);bY(f,1,48+(c/cd|0)|0);bY(f,2,48+((c/10|0)%10|0)|0);bY(f,3,48+(c%10|0)|0);var -d=cK(f);break;case -2:var -g=bZ(1);bY(g,0,c);var -d=cK(g);break}var -h=aI(d),i=gn(h+2|0,39);ej(d,0,i,1,h);return a$(b,[4,a,cK(i)],z)};case -2:var -A=c[2],B=c[1];return pE(b,a,A,B,function(a){return a});case -3:return pE(b,a,c[2],c[1],Is);case -4:return le(b,a,c[4],c[2],c[3],Ji,c[1]);case -5:return le(b,a,c[4],c[2],c[3],Jj,c[1]);case -6:return le(b,a,c[4],c[2],c[3],Jk,c[1]);case -7:return le(b,a,c[4],c[2],c[3],Jl,c[1]);case -8:var -g=c[4],h=c[3],i=c[2],f=c[1];if(typeof -i==="number"){if(typeof -h==="number")return h?function(d,c){return a$(b,[4,a,e5(f,d,c)],g)}:function(c){return a$(b,[4,a,e5(f,pC(f),c)],g)};var -S=h[1];return function(c){return a$(b,[4,a,e5(f,S,c)],g)}}else{if(0===i[0]){var -l=i[2],m=i[1];if(typeof -h==="number")return h?function(d,c){return a$(b,[4,a,c$(m,l,e5(f,d,c))],g)}:function(c){return a$(b,[4,a,c$(m,l,e5(f,pC(f),c))],g)};var -T=h[1];return function(c){return a$(b,[4,a,c$(m,l,e5(f,T,c))],g)}}var -n=i[1];if(typeof -h==="number")return h?function(e,d,c){return a$(b,[4,a,c$(n,e,e5(f,d,c))],g)}:function(d,c){return a$(b,[4,a,c$(n,d,e5(f,pC(f),c))],g)};var -U=h[1];return function(d,c){return a$(b,[4,a,c$(n,d,e5(f,U,c))],g)}}case -9:return pE(b,a,c[2],c[1],G2);case -10:var -a=[7,a],c=c[1];continue;case -11:var -a=[2,a,c[1]],c=c[2];continue;case -12:var -a=[3,a,c[1]],c=c[2];continue;case -13:var -C=c[3],D=c[2],o=s$(16);pD(o,D);var -u=tb(o);return function(c){return a$(b,[4,a,u],C)};case -14:var -E=c[3],F=c[2];return function(d){var -e=d[1],c=by(e,bM(b9(F)));if(typeof -c[2]==="number")return a$(b,a,bF(c[1],E));throw cm};case -15:var -G=c[1];return function(d,c){return a$(b,[6,a,function(a){return aq(d,a,c)}],G)};case -16:var -H=c[1];return function(c){return a$(b,[6,a,c],H)};case -17:var -a=[0,a,c[1]],c=c[2];continue;case -18:var -k=c[1];if(0===k[0]){var -I=c[2],J=k[1][1],K=0,b=function(b,c,d){return function(a){return a$(c,[1,b,[0,a]],d)}}(a,b,I),a=K,c=J;continue}var -L=c[2],M=k[1][1],N=0,b=function(b,c,d){return function(a){return a$(c,[1,b,[1,a]],d)}}(a,b,L),a=N,c=M;continue;case -19:throw[0,bs,Jr];case -20:var -O=c[3],P=[8,a,Js];return function(a){return a$(b,P,O)};case -21:var -Q=c[2];return function(c){return a$(b,[4,a,pb(Jt,c)],Q)};case -22:var -R=c[1];return function(c){return a$(b,[5,a,c],R)};case -23:var -e=c[2],j=c[1];if(typeof -j==="number")switch(j){case -0:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -1:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -2:throw[0,bs,Ju];default:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e])}else -switch(j[0]){case -0:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -1:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -2:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -3:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -4:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -5:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -6:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -7:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -8:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -9:var -t=j[2];return d<50?qv(d+1|0,b,a,t,e):cw(qv,[0,b,a,t,e]);case -10:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);default:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e])}default:var -p=c[3],q=c[1],s=r(c[2],0);return d<50?qu(d+1|0,b,a,p,q,s):cw(qu,[0,b,a,p,q,s])}}function -qv(e,d,c,a,b){if(typeof -a==="number")return e<50?bt(e+1|0,d,c,b):cw(bt,[0,d,c,b]);else -switch(a[0]){case -0:var -f=a[1];return function(a){return dt(d,c,f,b)};case -1:var -g=a[1];return function(a){return dt(d,c,g,b)};case -2:var -h=a[1];return function(a){return dt(d,c,h,b)};case -3:var -i=a[1];return function(a){return dt(d,c,i,b)};case -4:var -j=a[1];return function(a){return dt(d,c,j,b)};case -5:var -k=a[1];return function(a){return dt(d,c,k,b)};case -6:var -l=a[1];return function(a){return dt(d,c,l,b)};case -7:var -m=a[1];return function(a){return dt(d,c,m,b)};case -8:var -n=a[2];return function(a){return dt(d,c,n,b)};case -9:var -o=a[3],p=a[2],q=ce(b9(a[1]),p);return function(a){return dt(d,c,cM(q,o),b)};case -10:var -r=a[1];return function(e,a){return dt(d,c,r,b)};case -11:var -s=a[1];return function(a){return dt(d,c,s,b)};case -12:var -t=a[1];return function(a){return dt(d,c,t,b)};case -13:throw[0,bs,Jv];default:throw[0,bs,Jw]}}function -bt(d,b,e,a){var -c=[8,e,Jx];return d<50?j2(d+1|0,b,c,a):cw(j2,[0,b,c,a])}function -qu(g,b,e,a,d,c){if(d){var -h=d[1];return function(d){return Jq(b,e,a,h,r(c,d))}}var -f=[4,e,c];return g<50?j2(g+1|0,b,f,a):cw(j2,[0,b,f,a])}function -a$(a,b,c){return sO(j2(0,a,b,c))}function -dt(a,b,c,d){return sO(qv(0,a,b,c,d))}function -Jq(a,b,c,d,e){return sO(qu(0,a,b,c,d,e))}function -pE(e,d,c,a,b){if(typeof -a==="number")return function(a){return a$(e,[4,d,r(b,a)],c)};else{if(0===a[0]){var -f=a[2],g=a[1];return function(a){return a$(e,[4,d,c$(g,f,r(b,a))],c)}}var -h=a[1];return function(f,a){return a$(e,[4,d,c$(h,f,r(b,a))],c)}}}function -le(f,e,d,g,c,b,a){if(typeof -g==="number"){if(typeof -c==="number")return c?function(g,c){return a$(f,[4,e,g6(g,aq(b,a,c))],d)}:function(c){return a$(f,[4,e,aq(b,a,c)],d)};var -k=c[1];return function(c){return a$(f,[4,e,g6(k,aq(b,a,c))],d)}}else{if(0===g[0]){var -h=g[2],i=g[1];if(typeof -c==="number")return c?function(g,c){return a$(f,[4,e,c$(i,h,g6(g,aq(b,a,c)))],d)}:function(c){return a$(f,[4,e,c$(i,h,aq(b,a,c))],d)};var -l=c[1];return function(c){return a$(f,[4,e,c$(i,h,g6(l,aq(b,a,c)))],d)}}var -j=g[1];if(typeof -c==="number")return c?function(h,g,c){return a$(f,[4,e,c$(j,h,g6(g,aq(b,a,c)))],d)}:function(g,c){return a$(f,[4,e,c$(j,g,aq(b,a,c))],d)};var -m=c[1];return function(g,c){return a$(f,[4,e,c$(j,g,g6(m,aq(b,a,c)))],d)}}}function -e6(b,e){var -a=e;for(;;)if(typeof -a==="number")return 0;else -switch(a[0]){case -0:var -f=a[1],g=tc(a[2]);e6(b,f);return jC(b,g);case -1:var -c=a[2],d=a[1];if(0===c[0]){var -h=c[1];e6(b,d);jC(b,Jy);var -a=h;continue}var -i=c[1];e6(b,d);jC(b,Jz);var -a=i;continue;case -6:var -l=a[2];e6(b,a[1]);return r(l,b);case -7:e6(b,a[1]);return gY(b);case -8:var -m=a[2];e6(b,a[1]);return b0(m);case -2:case -4:var -j=a[2];e6(b,a[1]);return jC(b,j);default:var -k=a[2];e6(b,a[1]);return GE(b,k)}}function -e7(b,f){var -a=f;for(;;)if(typeof -a==="number")return 0;else -switch(a[0]){case -0:var -g=a[1],h=tc(a[2]);e7(b,g);return jK(b,h);case -1:var -d=a[2],e=a[1];if(0===d[0]){var -i=d[1];e7(b,e);jK(b,JA);var -a=i;continue}var -j=d[1];e7(b,e);jK(b,JB);var -a=j;continue;case -6:var -m=a[2];e7(b,a[1]);return jK(b,r(m,0));case -7:var -a=a[1];continue;case -8:var -n=a[2];e7(b,a[1]);return b0(n);case -2:case -4:var -k=a[2];e7(b,a[1]);return jK(b,k);default:var -l=a[2];e7(b,a[1]);var -c=b[2];if(b[3]<=c)pB(b,1);bY(b[1],c,l);b[2]=c+1|0;return 0}}function -JC(a){if(pk(a,JD))return JE;var -d=aI(a);function -f(d){var -c=JF[1],b=la(eB);return r(a$(function(a){e7(b,a);return aH(lb(b))},0,c),a)}function -g(e){var -b=e;for(;;){if(b===d)return b;var -c=bA(a,b);if(9!==c&&32!==c)return b;var -b=b+1|0;continue}}function -m(e,c){var -b=c;for(;;){if(b===d)return b;if(25>>0)return b;var -b=b+1|0;continue}}function -n(g,f){var -b=f;for(;;){if(b===d)return b;var -c=bA(a,b),e=0;if(48<=c){if(!(58<=c))e=1}else -if(45===c)e=1;if(e){var -b=b+1|0;continue}return b}}var -e=g(0),j=m(e,e),b=g2(a,e,j-e|0),c=g(j),h=n(c,c);if(c===h)var -i=0;else -try{var -p=pf(g2(a,c,h-c|0)),i=p}catch(a){a=o(a);if(a[1]!==k8)throw a;var -i=f(0)}if(g(h)!==d)f(0);var -l=0;if(M(b,JG)&&M(b,JH))var -k=M(b,JI)?M(b,JJ)?M(b,JK)?M(b,JL)?f(0):1:2:3:0;else -l=1;if(l)var -k=4;return[0,i,k]}function -te(d,c){var -a=c[1],b=0;return a$(function(a){e6(d,a);return 0},b,a)}function -jM(a){return te(em,a)}function -aJ(b){var -a=b[1];return a$(function(b){var -a=la(64);e7(a,b);return lb(a)},0,a)}var -pF=[0,0];function -pH(h,g){var -a=h[1+g];if(1-(typeof -a==="number"?1:0)){if(k5(a)===kb)return r(aJ(JM),a);if(k5(a)===ri){var -c=sB(G6,a),b=0,f=aI(c);for(;;){if(f<=b)return bS(c,G5);var -d=bA(c,b),e=0;if(48<=d){if(!(58<=d))e=1}else -if(45===d)e=1;if(e){var -b=b+1|0;continue}return c}}return JN}return r(aJ(JO),a)}function -tf(b,a){if(b.length-1<=a)return JP;var -c=tf(b,a+1|0),d=pH(b,a);return aq(aJ(JQ),d,c)}function -pI(a){function -n(e){var -b=e;for(;;){if(b){var -f=b[2],g=b[1];try{var -d=0,c=r(g,a);d=1}catch(a){}if(d&&c)return[0,c[1]];var -b=f;continue}return 0}}var -g=n(pF[1]);if(g)return g[1];if(a===pp)return JV;if(a===sX)return JW;if(a[1]===sW){var -c=a[2],h=c[3],o=c[2],p=c[1];return lO(aJ(pG),p,o,h,h+5|0,JX)}if(a[1]===bs){var -d=a[2],i=d[3],q=d[2],s=d[1];return lO(aJ(pG),s,q,i,i+6|0,JY)}if(a[1]===sZ){var -e=a[2],j=e[3],t=e[2],u=e[1];return lO(aJ(pG),u,t,j,j+6|0,JZ)}if(0===k5(a)){var -f=a.length-1,v=a[1][1];if(2>>0)var -k=tf(a,2),l=pH(a,1),b=aq(aJ(JR),l,k);else -switch(f){case -0:var -b=JS;break;case -1:var -b=JT;break;default:var -m=pH(a,1),b=r(aJ(JU),m)}return bS(v,b)}return a[1]}function -pJ(t,s){var -d=byL(s),f=d.length-1-1|0,o=0;if(!(f<0)){var -b=o;for(;;){var -a=aY(d,b)[1+b],e=function(a){return function(b){return b?0===a?J0:J1:0===a?J2:J3}}(b);if(0===a[0])var -g=a[5],h=a[4],i=a[3],j=a[6]?J4:J6,k=a[2],l=a[7],m=e(a[1]),c=[0,byA(aJ(J5),m,l,k,j,i,h,g)];else -if(a[1])var -c=0;else -var -n=e(0),c=[0,r(aJ(J7),n)];if(c){var -p=c[1];r(te(t,J8),p)}var -q=b+1|0;if(f!==b){var -b=q;continue}break}}return 0}function -tg(c){for(;;){var -a=pF[1],b=1-po(pF,a,[0,c,a]);if(b)continue;return b}}var -J_=J9.slice();function -J$(d,c){var -e=pI(d);r(jM(Ka),e);pJ(em,c);var -a=bzc(0);if(a<0){var -b=gm(a);s3(aY(J_,b)[1+b])}return gY(em)}var -Kb=[0];sM(a(Ea),function(d,h){try{try{var -b=h?Kb:Gw(0);try{ps(0)}catch(a){}try{var -a=J$(d,b),c=a}catch(a){a=o(a);var -f=pI(d);r(jM(Kd),f);pJ(em,b);var -g=pI(a);r(jM(Ke),g);pJ(em,Gw(0));var -c=gY(em)}var -e=c}catch(a){a=o(a);if(a!==pp)throw a;var -e=s3(Kc)}return e}catch(a){return 0}});function -lf(a){var -b=a.length-1<4?1:0,c=b||(a[4]<0?1:0);return c}function -e8(a){a[4]=-a[4]|0;return 0}try{var -byw=GL(byv),ti=byw}catch(a){a=o(a);if(a!==cD)throw a;try{var -byu=GL(byt),th=byu}catch(a){a=o(a);if(a!==cD)throw a;var -th=Kg}var -ti=th}px(ti,82);var -lg=[mg,function(w){var -m=bzs(0),c=[0,e1(55,0),0],i=0===m.length-1?[0,0]:m,j=i.length-1,b=0;for(;;){aY(c[1],b)[1+b]=b;var -v=b+1|0;if(54!==b){var -b=v;continue}var -g=[0,Kf],k=54+pv(55,j)|0,r=0;if(!(k<0)){var -d=r;for(;;){var -e=d%55|0,l=bzg(d,j),s=aY(i,l)[1+l],h=bS(g[1],a(aa+s));g[1]=bzb(h,0,aI(h));var -f=g[1],n=bA(f,3)<<24,o=bA(f,2)<<16,p=bA(f,1)<<8,q=((bA(f,0)+p|0)+o|0)+n|0,t=(aY(c[1],e)[1+e]^q)&r$;aY(c[1],e)[1+e]=t;var -u=d+1|0;if(k!==d){var -d=u;continue}break}}c[2]=0;return c}}];function -tj(a){var -c=0>>25|0)&31)|0)&r$,g=a[2];aY(a[1],g)[1+g]=f;var -i=f}else -var -i=0;return[0,0,e1(b,0),i,b]}}return[0,g,tj,Kh,Kj,c,h,i,j,k,d,l,Kl,Kn,Ko,Kk,Kp,pK,Kq,Kr,m,e,function(b){var -a=g(16);e(a,b);return a}]}var -pL=[bm,Kv,cZ(0)];function -Ku(a){return byR(10,cd,0,a)}var -lh=0,tm=-1;function -jN(a,b){a[13]=a[13]+b[3]|0;return s_(b,a[28])}var -tn=1000000010;function -pM(b,a){return cB(b[17],a,0,aI(a))}function -li(a){return r(a[19],0)}function -to(a,c,b){a[9]=a[9]-c|0;pM(a,b);a[11]=0;return 0}function -lj(c,a){var -b=M(a,Kw);return b?to(c,aI(a),a):b}function -gp(a,b,e){var -f=b[3],g=b[2];lj(a,b[1]);li(a);a[11]=1;var -c=(a[6]-e|0)+g|0,d=a[8],h=d<=c?d:c;a[10]=h;a[9]=a[6]-a[10]|0;r(a[21],a[10]);return lj(a,f)}function -tp(b,a){return gp(b,Kx,a)}function -g7(a,b){var -c=b[2],d=b[3];lj(a,b[1]);a[9]=a[9]-c|0;r(a[20],c);return lj(a,d)}function -Ky(a,i,b){if(typeof -b==="number")switch(b){case -0:var -s=g4(a[3]);if(s){var -t=s[1][1],u=function(b,a){if(a){var -c=a[1],d=a[2];return GB(b,c)?[0,b,a]:[0,c,u(b,d)]}return[0,b,0]};t[1]=u(a[6]-a[9]|0,t[1]);return 0}return 0;case -1:g3(a[2]);return 0;case -2:g3(a[3]);return 0;case -3:var -v=g4(a[2]);return v?tp(a,v[1][2]):li(a);case -4:var -w=a[10]!==(a[6]-a[9]|0)?1:0;if(w){var -e=a[28],g=e[2];if(g){var -m=g[1];if(g[2]){var -J=g[2];e[1]=e[1]-1|0;e[2]=J;var -h=[0,m]}else{pA(e);var -h=[0,m]}}else -var -h=0;if(h){var -q=h[1],L=q[1];a[12]=a[12]-q[3]|0;a[9]=a[9]+L|0;return 0}return 0}return w;default:var -x=g3(a[5]);return x?pM(a,r(a[25],x[1])):0}else -switch(b[0]){case -0:return to(a,i,b[1]);case -1:var -c=b[2],f=b[1],y=c[1],M=c[2],z=g4(a[2]);if(z){var -A=z[1],d=A[2];switch(A[1]){case -0:return g7(a,f);case -1:return gp(a,c,d);case -2:return gp(a,c,d);case -3:return a[9]<(i+aI(y)|0)?gp(a,c,d):g7(a,f);case -4:return a[11]?g7(a,f):a[9]<(i+aI(y)|0)?gp(a,c,d):((a[6]-d|0)+M|0)>>0))tp(a,p)}else -li(a)}var -S=a[9]-R|0,T=1===H?1:a[9]>>0)throw pW;switch(a){case -1:return b?29:28;case -3:case -5:case -8:case -10:return 30;default:return 31}}function -pY(a){try{var -b=1<=a[3]?1:0;if(b)var -d=lt(a[1]),e=lu(a[2],d),c=a[3]<=e?1:0;else -var -c=b;return c}catch(a){a=o(a);if(a===pW)return 0;throw a}}function -tL(d,c,b){var -a=[0,d,c,b];if(pY(a))return a;throw pW}function -lv(f,e,d){var -b=f,a=d;for(;;){var -c=e+a|0;if(1<=c&&!(12>a===b?c:GU(b,a)}return GU(b,a)}function -tN(a){return typeof -a==="number"?a:bzS(a)}var -e9=0,lz=1,Ld=-1;function -tO(a){return g1(0,a,0,aI(a))}function -Le(b,a){return g1(b,a,0,aI(a))}function -pZ(a){if(typeof -a==="number")return a;var -e=sR(a);if(63>g;f=1}if(!f)var -c=bzQ(a,b);var -i=bzD(a,fv(c,b)),d=pn(c),h=i?d:by7(d,Lf);return ph(pe(h),b)}return pe(pn(a))}function -g9(a,b){if(a!==0&&b!==1){var -c=bzG(a,b);if(c===1)return[0,a,b];var -d=tM(b,c);return[0,tM(a,c),d]}return[0,a,lz]}function -tP(b,a){var -c=c9(a);if(0===c)return[0,c9(b),e9];if(0>>0))switch(b){case -0:return 2;case -1:break;default:return 1}return 3}return a[1]===0?0:4}function -p0(d,c){var -e=gr(d),b=gr(c),a=0;switch(e){case -1:var -j=b-1|0;if(!(2>>0))switch(j){case -0:a=2;break;case -1:break;default:a=1}break;case -2:if(1===b)a=1;else -if(b)switch(b-2|0){case -1:a=1;break;case -2:break;default:a=2}break;case -3:if(3!==b)return-1;a=2;break;default:a=1}var -k=0;switch(a){case -1:var -i=b-1|0;if(!(2>>0))switch(i){case -0:k=1;break;case -1:break;default:return 1}break;case -0:break;default:return 0}if(!k){var -g=0;if(!(4<=e))switch(e){case -0:break;case -2:g=1;break;default:g=2}var -h=0;switch(g){case -0:if(2!==b){if(f(d[2],c[2]))return el(d[1],c[1]);var -l=cN(c[1],d[2]);return el(cN(d[1],c[2]),l)}h=1;break;case -1:break;default:h=1}if(h)return 1}return-1}function -tS(a){var -b=a[2];return[0,gq(a[1]),b]}function -tT(c,a,b){if(a[2]===b[2]){var -d=a[2];return g9(aq(c,a[1],b[1]),d)}var -e=cN(a[2],b[2]),f=cN(b[1],a[2]);return g9(aq(c,cN(a[1],b[2]),f),e)}function -jR(b,a){if(b[2]!==0&&a[2]!==0){var -c=cN(b[2],a[2]);return g9(cN(b[1],a[1]),c)}return[0,gl(c9(b[1]),c9(a[1])),e9]}function -p1(b,a){if(0<=c9(a[1]))return jR(b,[0,a[2],a[1]]);var -c=gq(a[1]);return jR(b,[0,gq(a[2]),c])}function -p2(a){switch(a){case -0:return 2;case -1:return 8;case -2:return 10;default:return 16}}function -p3(e,d,c,b){var -a=d;for(;;){if(c<=a)return 0;if(r(b,bA(e,a)))return[0,a];var -a=a+1|0;continue}}var -p4=[0,-1];function -Li(a){if(M(a,Lj)){if(M(a,Lk)){if(!M(a,Ll))return lB;if(M(a,Lm)){if(M(a,Ln))try{var -k=Ht(a,47),X=g1(0,a,k+1|0,(aI(a)-k|0)-1|0),Y=tP(g1(0,a,0,k),X);return Y}catch(k){k=o(k);if(k===cD){var -i=aI(a),x=0;if(i<1)var -s=[0,0,x];else{var -N=bA(a,0)+Ay|0,Q=0;if(!(2>>0)){var -R=0;switch(N){case -0:var -P=[0,0,1];break;case -1:R=1;break;default:var -P=[0,1,1]}if(!R){var -O=P;Q=1}}if(!Q)var -O=[0,0,x];var -s=O}var -c=s[2];if(i<(c+2|0))var -t=[0,2,c];else{var -W=bA(a,c),g=bA(a,c+1|0),r=0;if(48===W){var -h=0;if(89<=g){if(98===g)h=2;else -if(kU===g)h=1;else -if(dv!==g){r=1;h=3}}else -if(66===g)h=2;else -if(79===g)h=1;else -if(!(88<=g)){r=1;h=3}switch(h){case -3:break;case -0:var -q=[0,3,c+2|0];break;case -1:var -q=[0,1,c+2|0];break;default:var -q=[0,0,c+2|0]}}else -r=1;if(r)var -q=[0,2,c];var -t=q}var -d=t[2],b=t[1],S=2===b?function(a){if(69!==a&&fN!==a)return 0;return 1}:3<=b?function(a){if(80!==a&&kT!==a)return 0;return 1}:function(a){return 0},y=p3(a,d,i,S);if(y)var -z=y[1],A=z+1|0,e=z,B=tN(g1(10,a,A,i-A|0));else -var -e=i,B=0;if(2<=b){var -C=p3(a,d,e,function(a){return 46===a?1:0});if(C){var -u=C[1];if(2===b)var -D=1;else{if(!(3<=b))throw[0,bs,Lp];var -D=4}var -F=u+1|0,G=e-1|0,E=0;if(G>>4|0));d3(h,g+5|0,tW(e&15));c[1]=a+1|0;break}}var -l=a+1|0;if(i!==a){var -a=l;continue}break}}LA(d,c,b);return bN(b,34)},tX=function(a,b){return d8(a,LJ)},tY=function(b,a){var -c=a?LK:LL;return d8(b,c)},LM=s0(10,11),p8=function(c,b,a){if(0===a)return b;var -d=p8(c,b,a/10|0);d3(c,d,s5(gm(a%10|0)+48|0));return d+1|0},tZ=function(a,b){p6(a,LM);if(0>>1|0;Lq[1]++;continue}}(globalThis)); +(function(Object) + {typeof globalThis + !== + "object" + && + (this + ?get() + :(Object.defineProperty + (Object.prototype,"_T_",{configurable:true,get:get}), + _T_)); + function get() + {var global=this || self; + global.globalThis = global; + delete Object.prototype._T_}} + (Object)); +(function(globalThis) + {"use strict"; + var joo_global_object=globalThis; + function caml_int64_is_zero(x){return + x.isZero()} + function caml_str_repeat(n,s) + {if(n == 0)return ""; + if(s.repeat)return s.repeat(n); + var r="",l=0; + for(;;) + {if(n & 1)r += s; + n >>= 1; + if(n == 0)return r; + s += s; + l++; + if(l == 9)s.slice(0,1)}} + var caml_int64_offset=Math.pow(2,- 24); + function caml_raise_constant(tag){throw tag} + var caml_global_data=[0]; + function caml_raise_zero_divide() + {caml_raise_constant(caml_global_data.Division_by_zero)} + function MlInt64(lo,mi,hi) + {this.lo = lo & 0xffffff;this.mi = mi & 0xffffff;this.hi = hi & 0xffff} + MlInt64.prototype.caml_custom = "_j"; + MlInt64.prototype.copy + = + function(){return new MlInt64(this.lo,this.mi,this.hi)}; + MlInt64.prototype.ucompare + = + function(x) + {if(this.hi > x.hi)return 1; + if(this.hi < x.hi)return - 1; + if(this.mi > x.mi)return 1; + if(this.mi < x.mi)return - 1; + if(this.lo > x.lo)return 1; + if(this.lo < x.lo)return - 1; + return 0}; + MlInt64.prototype.compare + = + function(x) + {var hi=this.hi << 16,xhi=x.hi << 16; + if(hi > xhi)return 1; + if(hi < xhi)return - 1; + if(this.mi > x.mi)return 1; + if(this.mi < x.mi)return - 1; + if(this.lo > x.lo)return 1; + if(this.lo < x.lo)return - 1; + return 0}; + MlInt64.prototype.neg + = + function() + {var lo=- this.lo,mi=- this.mi + (lo >> 24),hi=- this.hi + (mi >> 24); + return new MlInt64(lo,mi,hi)}; + MlInt64.prototype.add + = + function(x) + {var + lo=this.lo + x.lo, + mi=this.mi + x.mi + (lo >> 24), + hi=this.hi + x.hi + (mi >> 24); + return new MlInt64(lo,mi,hi)}; + MlInt64.prototype.sub + = + function(x) + {var + lo=this.lo - x.lo, + mi=this.mi - x.mi + (lo >> 24), + hi=this.hi - x.hi + (mi >> 24); + return new MlInt64(lo,mi,hi)}; + MlInt64.prototype.mul + = + function(x) + {var + lo=this.lo * x.lo, + mi=(lo * caml_int64_offset | 0) + this.mi * x.lo + this.lo * x.mi, + hi= + (mi * caml_int64_offset | 0) + + + this.hi + * + x.lo + + + this.mi + * + x.mi + + + this.lo + * + x.hi; + return new MlInt64(lo,mi,hi)}; + MlInt64.prototype.isZero + = + function(){return (this.lo | this.mi | this.hi) == 0}; + MlInt64.prototype.isNeg = function(){return this.hi << 16 < 0}; + MlInt64.prototype.and + = + function(x) + {return new MlInt64(this.lo & x.lo,this.mi & x.mi,this.hi & x.hi)}; + MlInt64.prototype.or + = + function(x) + {return new MlInt64(this.lo | x.lo,this.mi | x.mi,this.hi | x.hi)}; + MlInt64.prototype.xor + = + function(x) + {return new MlInt64(this.lo ^ x.lo,this.mi ^ x.mi,this.hi ^ x.hi)}; + MlInt64.prototype.shift_left + = + function(s) + {s = s & 63; + if(s == 0)return this; + if(s < 24) + return new + MlInt64 + (this.lo << s, + this.mi << s | this.lo >> 24 - s, + this.hi << s | this.mi >> 24 - s); + if(s < 48) + return new + MlInt64 + (0,this.lo << s - 24,this.mi << s - 24 | this.lo >> 48 - s); + return new MlInt64(0,0,this.lo << s - 48)}; + MlInt64.prototype.shift_right_unsigned + = + function(s) + {s = s & 63; + if(s == 0)return this; + if(s < 24) + return new + MlInt64 + (this.lo >> s | this.mi << 24 - s, + this.mi >> s | this.hi << 24 - s, + this.hi >> s); + if(s < 48) + return new + MlInt64 + (this.mi >> s - 24 | this.hi << 48 - s,this.hi >> s - 24,0); + return new MlInt64(this.hi >> s - 48,0,0)}; + MlInt64.prototype.shift_right + = + function(s) + {s = s & 63; + if(s == 0)return this; + var h=this.hi << 16 >> 16; + if(s < 24) + return new + MlInt64 + (this.lo >> s | this.mi << 24 - s, + this.mi >> s | h << 24 - s, + this.hi << 16 >> s >>> 16); + var sign=this.hi << 16 >> 31; + if(s < 48) + return new + MlInt64 + (this.mi >> s - 24 | this.hi << 48 - s, + this.hi << 16 >> s - 24 >> 16, + sign & 0xffff); + return new MlInt64(this.hi << 16 >> s - 32,sign,sign)}; + MlInt64.prototype.lsl1 + = + function() + {this.hi = this.hi << 1 | this.mi >> 23; + this.mi = (this.mi << 1 | this.lo >> 23) & 0xffffff; + this.lo = this.lo << 1 & 0xffffff}; + MlInt64.prototype.lsr1 + = + function() + {this.lo = (this.lo >>> 1 | this.mi << 23) & 0xffffff; + this.mi = (this.mi >>> 1 | this.hi << 23) & 0xffffff; + this.hi = this.hi >>> 1}; + MlInt64.prototype.udivmod + = + function(x) + {var + offset=0, + modulus=this.copy(), + divisor=x.copy(), + quotient=new MlInt64(0,0,0); + while(modulus.ucompare(divisor) > 0){offset++;divisor.lsl1()} + while(offset >= 0) + {offset--; + quotient.lsl1(); + if(modulus.ucompare(divisor) >= 0) + {quotient.lo++;modulus = modulus.sub(divisor)} + divisor.lsr1()} + return {quotient:quotient,modulus:modulus}}; + MlInt64.prototype.div + = + function(y) + {var x=this; + if(y.isZero())caml_raise_zero_divide(); + var sign=x.hi ^ y.hi; + if(x.hi & 0x8000)x = x.neg(); + if(y.hi & 0x8000)y = y.neg(); + var q=x.udivmod(y).quotient; + if(sign & 0x8000)q = q.neg(); + return q}; + MlInt64.prototype.mod + = + function(y) + {var x=this; + if(y.isZero())caml_raise_zero_divide(); + var sign=x.hi; + if(x.hi & 0x8000)x = x.neg(); + if(y.hi & 0x8000)y = y.neg(); + var r=x.udivmod(y).modulus; + if(sign & 0x8000)r = r.neg(); + return r}; + MlInt64.prototype.toInt = function(){return this.lo | this.mi << 24}; + MlInt64.prototype.toFloat + = + function() + {return (this.hi << 16) + * + Math.pow(2,32) + + + this.mi + * + Math.pow(2,24) + + + this.lo}; + MlInt64.prototype.toArray + = + function() + {return [this.hi >> 8, + this.hi & 0xff, + this.mi >> 16, + this.mi >> 8 & 0xff, + this.mi & 0xff, + this.lo >> 16, + this.lo >> 8 & 0xff, + this.lo & 0xff]}; + MlInt64.prototype.lo32 + = + function(){return this.lo | (this.mi & 0xff) << 24}; + MlInt64.prototype.hi32 + = + function(){return this.mi >>> 8 & 0xffff | this.hi << 16}; + function caml_int64_of_int32(x) + {return new MlInt64(x & 0xffffff,x >> 24 & 0xffffff,x >> 31 & 0xffff)} + function caml_int64_to_int32(x){return x.toInt()} + function caml_int64_is_negative(x){return + x.isNeg()} + function caml_int64_neg(x){return x.neg()} + function caml_subarray_to_jsbytes(a,i,len) + {var f=String.fromCharCode; + if(i == 0 && len <= 4096 && len == a.length)return f.apply(null,a); + var s=""; + for(;0 < len;i += 1024,len -= 1024) + s += f.apply(null,a.slice(i,i + Math.min(len,1024))); + return s} + function caml_convert_string_to_bytes(s) + {if(s.t == 2) + s.c += caml_str_repeat(s.l - s.c.length,"\0"); + else + s.c = caml_subarray_to_jsbytes(s.c,0,s.c.length); + s.t = 0} + function caml_jsbytes_of_string(s) + {s.t & 6 && caml_convert_string_to_bytes(s);return s.c} + function caml_raise_with_arg(tag,arg){throw [0,tag,arg]} + function jsoo_is_ascii(s) + {if(s.length < 24) + {for(var i=0;i < s.length;i++)if(s.charCodeAt(i) > 127)return false; + return true} + else + return ! /[^\x00-\x7f]/.test(s)} + function caml_utf16_of_utf8(s) + {for(var b="",t="",c,c1,c2,v,i=0,l=s.length;i < l;i++) + {c1 = s.charCodeAt(i); + if(c1 < 0x80) + {for(var j=i + 1;j < l && (c1 = s.charCodeAt(j)) < 0x80;j++); + if(j - i > 512) + {t.substr(0,1);b += t;t = "";b += s.slice(i,j)} + else + t += s.slice(i,j); + if(j == l)break; + i = j} + v = 1; + if(++i < l && ((c2 = s.charCodeAt(i)) & - 64) == 128) + {c = c2 + (c1 << 6); + if(c1 < 0xe0) + {v = c - 0x3080;if(v < 0x80)v = 1} + else + {v = 2; + if(++i < l && ((c2 = s.charCodeAt(i)) & - 64) == 128) + {c = c2 + (c << 6); + if(c1 < 0xf0) + {v = c - 0xe2080; + if(v < 0x800 || v >= 0xd7ff && v < 0xe000)v = 2} + else + {v = 3; + if + (++i + < + l + && + ((c2 = s.charCodeAt(i)) & - 64) + == + 128 + && + c1 + < + 0xf5) + {v = c2 - 0x3c82080 + (c << 6); + if(v < 0x10000 || v > 0x10ffff)v = 3}}}}} + if(v < 4) + {i -= v;t += "\ufffd"} + else + if(v > 0xffff) + t += String.fromCharCode(0xd7c0 + (v >> 10),0xdc00 + (v & 0x3FF)); + else + t += String.fromCharCode(v); + if(t.length > 1024){t.substr(0,1);b += t;t = ""}} + return b + t} + function MlBytes(tag,contents,length) + {this.t = tag;this.c = contents;this.l = length} + MlBytes.prototype.toString + = + function() + {switch(this.t) + {case 9:return this.c; + default:caml_convert_string_to_bytes(this);case 0: + if(jsoo_is_ascii(this.c)){this.t = 9;return this.c}this.t = 8; + case 8:return this.c + }}; + MlBytes.prototype.toUtf16 + = + function() + {var r=this.toString(); + if(this.t == 9)return r; + return caml_utf16_of_utf8(r)}; + MlBytes.prototype.slice + = + function() + {var content=this.t == 4?this.c.slice():this.c; + return new MlBytes(this.t,content,this.l)}; + function caml_bytes_of_jsbytes(s){return new MlBytes(0,s,s.length)} + function caml_string_of_jsbytes(s){return caml_bytes_of_jsbytes(s)} + function caml_raise_with_string(tag,msg) + {caml_raise_with_arg(tag,caml_string_of_jsbytes(msg))} + function caml_invalid_argument(msg) + {caml_raise_with_string(caml_global_data.Invalid_argument,msg)} + function caml_parse_format(fmt) + {fmt = caml_jsbytes_of_string(fmt); + var len=fmt.length; + if(len > 31)caml_invalid_argument("format_int: format too long"); + var + f= + {justify:"+", + signstyle:"-", + filler:" ", + alternate:false, + base:0, + signedconv:false, + width:0, + uppercase:false, + sign:1, + prec:- 1, + conv:"f"}; + for(var i=0;i < len;i++) + {var c=fmt.charAt(i); + switch(c) + {case "-":f.justify = "-";break; + case "+": + case " ":f.signstyle = c;break; + case "0":f.filler = "0";break; + case "#":f.alternate = true;break; + case "1": + case "2": + case "3": + case "4": + case "5": + case "6": + case "7": + case "8": + case "9": + f.width = 0; + while(c = fmt.charCodeAt(i) - 48,c >= 0 && c <= 9) + {f.width = f.width * 10 + c;i++} + i--; + break; + case ".": + f.prec = 0; + i++; + while(c = fmt.charCodeAt(i) - 48,c >= 0 && c <= 9) + {f.prec = f.prec * 10 + c;i++} + i--; + case "d": + case "i":f.signedconv = true; + case "u":f.base = 10;break; + case "x":f.base = 16;break; + case "X":f.base = 16;f.uppercase = true;break; + case "o":f.base = 8;break; + case "e": + case "f": + case "g":f.signedconv = true;f.conv = c;break; + case "E": + case "F": + case "G": + f.signedconv = true; + f.uppercase = true; + f.conv = c.toLowerCase(); + break + }} + return f} + function caml_finish_formatting(f,rawbuffer) + {if(f.uppercase)rawbuffer = rawbuffer.toUpperCase(); + var len=rawbuffer.length; + if(f.signedconv && (f.sign < 0 || f.signstyle != "-"))len++; + if(f.alternate){if(f.base == 8)len += 1;if(f.base == 16)len += 2} + var buffer=""; + if(f.justify == "+" && f.filler == " ") + for(var i=len;i < f.width;i++)buffer += " "; + if(f.signedconv) + if(f.sign < 0) + buffer += "-"; + 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.justify == "+" && f.filler == "0") + for(var i=len;i < f.width;i++)buffer += "0"; + buffer += rawbuffer; + if(f.justify == "-")for(var i=len;i < f.width;i++)buffer += " "; + return caml_string_of_jsbytes(buffer)} + function caml_int64_format(fmt,x) + {var f=caml_parse_format(fmt); + if(f.signedconv && caml_int64_is_negative(x)) + {f.sign = - 1;x = caml_int64_neg(x)} + var + buffer="", + wbase=caml_int64_of_int32(f.base), + cvtbl="0123456789abcdef"; + do + {var p=x.udivmod(wbase); + x = p.quotient; + buffer = cvtbl.charAt(caml_int64_to_int32(p.modulus)) + buffer} + while + (! caml_int64_is_zero(x)); + if(f.prec >= 0) + {f.filler = " "; + var n=f.prec - buffer.length; + 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_jsstring_of_string(s){return s.toUtf16()} + function fs_node_supported() + {return typeof globalThis.process + !== + "undefined" + && + typeof globalThis.process.versions + !== + "undefined" + && + typeof globalThis.process.versions.node + !== + "undefined"} + function make_path_is_absolute() + {function posix(path) + {if(path.charAt(0) === "/")return ["",path.substring(1)];return} + function win32(path) + {var + splitDeviceRe= + /^([a-zA-Z]:|[\\/]{2}[^\\/]+[\\/]+[^\\/]+)?([\\/])?([\s\S]*?)$/, + result=splitDeviceRe.exec(path), + device=result[1] || "", + isUnc=Boolean(device && device.charAt(1) !== ":"); + if(Boolean(result[2] || isUnc)) + {var root=result[1] || "",sep=result[2] || ""; + return [root,path.substring(root.length + sep.length)]} + return} + return fs_node_supported() + && + globalThis.process + && + globalThis.process.platform + ?globalThis.process.platform === "win32"?win32:posix + :posix} + var path_is_absolute=make_path_is_absolute(); + function caml_trailing_slash(name) + {return name.slice(- 1) !== "/"?name + "/":name} + if(fs_node_supported() && globalThis.process && globalThis.process.cwd) + var caml_current_dir=globalThis.process.cwd().replace(/\\/g,"/"); + else + var caml_current_dir="/static"; + caml_current_dir = caml_trailing_slash(caml_current_dir); + function caml_make_path(name) + {name = caml_jsstring_of_string(name); + if(! path_is_absolute(name))name = caml_current_dir + name; + var comp0=path_is_absolute(name),comp=comp0[1].split("/"),ncomp=[]; + for(var i=0;i < comp.length;i++) + switch(comp[i]) + {case "..":if(ncomp.length > 1)ncomp.pop();break; + case ".":break; + default:ncomp.push(comp[i]);break} + ncomp.unshift(comp0[0]); + ncomp.orig = name; + return ncomp} + function caml_utf8_of_utf16(s) + {for(var b="",t=b,c,d,i=0,l=s.length;i < l;i++) + {c = s.charCodeAt(i); + if(c < 0x80) + {for(var j=i + 1;j < l && (c = s.charCodeAt(j)) < 0x80;j++); + if(j - i > 512) + {t.substr(0,1);b += t;t = "";b += s.slice(i,j)} + else + t += s.slice(i,j); + if(j == l)break; + i = j} + if(c < 0x800) + {t += String.fromCharCode(0xc0 | c >> 6); + t += String.fromCharCode(0x80 | c & 0x3f)} + else + if(c < 0xd800 || c >= 0xdfff) + t + += + String.fromCharCode + (0xe0 | c >> 12,0x80 | c >> 6 & 0x3f,0x80 | c & 0x3f); + else + if + (c + >= + 0xdbff + || + i + + + 1 + == + l + || + (d = s.charCodeAt(i + 1)) + < + 0xdc00 + || + d + > + 0xdfff) + t += "\xef\xbf\xbd"; + else + {i++; + c = (c << 10) + d - 0x35fdc00; + t + += + String.fromCharCode + (0xf0 | c >> 18, + 0x80 | c >> 12 & 0x3f, + 0x80 | c >> 6 & 0x3f, + 0x80 | c & 0x3f)} + if(t.length > 1024){t.substr(0,1);b += t;t = ""}} + return b + t} + function caml_bytes_of_utf16_jsstring(s) + {var tag=9; + if(! jsoo_is_ascii(s))tag = 8,s = caml_utf8_of_utf16(s); + return new MlBytes(tag,s,s.length)} + function caml_string_of_jsstring(s) + {return caml_bytes_of_utf16_jsstring(s)} + var + unix_error= + ["E2BIG", + "EACCES", + "EAGAIN", + "EBADF", + "EBUSY", + "ECHILD", + "EDEADLK", + "EDOM", + "EEXIST", + "EFAULT", + "EFBIG", + "EINTR", + "EINVAL", + "EIO", + "EISDIR", + "EMFILE", + "EMLINK", + "ENAMETOOLONG", + "ENFILE", + "ENODEV", + "ENOENT", + "ENOEXEC", + "ENOLCK", + "ENOMEM", + "ENOSPC", + "ENOSYS", + "ENOTDIR", + "ENOTEMPTY", + "ENOTTY", + "ENXIO", + "EPERM", + "EPIPE", + "ERANGE", + "EROFS", + "ESPIPE", + "ESRCH", + "EXDEV", + "EWOULDBLOCK", + "EINPROGRESS", + "EALREADY", + "ENOTSOCK", + "EDESTADDRREQ", + "EMSGSIZE", + "EPROTOTYPE", + "ENOPROTOOPT", + "EPROTONOSUPPORT", + "ESOCKTNOSUPPORT", + "EOPNOTSUPP", + "EPFNOSUPPORT", + "EAFNOSUPPORT", + "EADDRINUSE", + "EADDRNOTAVAIL", + "ENETDOWN", + "ENETUNREACH", + "ENETRESET", + "ECONNABORTED", + "ECONNRESET", + "ENOBUFS", + "EISCONN", + "ENOTCONN", + "ESHUTDOWN", + "ETOOMANYREFS", + "ETIMEDOUT", + "ECONNREFUSED", + "EHOSTDOWN", + "EHOSTUNREACH", + "ELOOP", + "EOVERFLOW"]; + function make_unix_err_args(code,syscall,path,errno) + {var variant=unix_error.indexOf(code); + if(variant < 0){if(errno == null)errno = - 9999;variant = [0,errno]} + var + args= + [variant, + caml_string_of_jsstring(syscall || ""), + caml_string_of_jsstring(path || "")]; + return args} + var caml_named_values={}; + function caml_named_value(nm){return caml_named_values[nm]} + 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_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; + 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_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)) + {s2.c + = + s1.t == 4 + ?caml_subarray_to_jsbytes(s1.c,i1,len) + :i1 == 0 && s1.c.length == len?s1.c:s1.c.substr(i1,len); + s2.t = s2.c.length == s2.l?0:2} + else + if(s2.t == 2 && i2 == s2.c.length) + {s2.c + += + s1.t == 4 + ?caml_subarray_to_jsbytes(s1.c,i1,len) + :i1 == 0 && s1.c.length == len?s1.c:s1.c.substr(i1,len); + s2.t = s2.c.length == s2.l?0:2} + else + {if(s2.t != 4)caml_convert_bytes_to_array(s2); + var c1=s1.c,c2=s2.c; + if(s1.t == 4) + if(i2 <= i1) + for(var i=0;i < len;i++)c2[i2 + i] = c1[i1 + i]; + else + for(var i=len - 1;i >= 0;i--)c2[i2 + i] = c1[i1 + i]; + else + {var l=Math.min(len,c1.length - i1); + 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.truncate + = + function(len) + {var old=this.data; + this.data = caml_create_bytes(len | 0); + caml_blit_bytes(old,0,this.data,0,len)}; + MlFakeFile.prototype.length + = + function(){return caml_ml_bytes_length(this.data)}; + MlFakeFile.prototype.write + = + function(offset,buf,pos,len) + {var clen=this.length(); + if(offset + len >= clen) + {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); + 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 + = + function(offset){return caml_bytes_get(this.data,offset)}; + MlFakeFile.prototype.close = function(){}; + MlFakeFile.prototype.constructor = MlFakeFile; + function MlFakeDevice(root,f) + {this.content = {};this.root = root;this.lookupFun = f} + MlFakeDevice.prototype.nm = function(name){return this.root + name}; + MlFakeDevice.prototype.create_dir_if_needed + = + function(name) + {var comp=name.split("/"),res=""; + for(var i=0;i < comp.length - 1;i++) + {res += comp[i] + "/"; + if(this.content[res])continue; + this.content[res] = Symbol("directory")}}; + MlFakeDevice.prototype.slash + = + function(name){return /\/$/.test(name)?name:name + "/"}; + MlFakeDevice.prototype.lookup + = + function(name) + {if(! this.content[name] && this.lookupFun) + {var + res= + this.lookupFun + (caml_string_of_jsbytes(this.root),caml_string_of_jsbytes(name)); + if(res !== 0) + {this.create_dir_if_needed(name); + this.content[name] = new MlFakeFile(caml_bytes_of_string(res[1]))}}}; + MlFakeDevice.prototype.exists + = + function(name) + {if(name == "")return 1; + var name_slash=this.slash(name); + if(this.content[name_slash])return 1; + this.lookup(name); + return this.content[name]?1:0}; + MlFakeDevice.prototype.mkdir + = + function(name,mode,raise_unix) + {var unix_error=raise_unix && caml_named_value("Unix.Unix_error"); + if(this.exists(name)) + if(unix_error) + caml_raise_with_args + (unix_error,make_unix_err_args("EEXIST","mkdir",this.nm(name))); + else + caml_raise_sys_error(name + ": File exists"); + var parent=/^(.*)\/[^/]+/.exec(name); + parent = parent && parent[1] || ""; + if(! this.exists(parent)) + if(unix_error) + caml_raise_with_args + (unix_error,make_unix_err_args("ENOENT","mkdir",this.nm(parent))); + else + caml_raise_sys_error(parent + ": No such file or directory"); + if(! this.is_dir(parent)) + if(unix_error) + caml_raise_with_args + (unix_error,make_unix_err_args("ENOTDIR","mkdir",this.nm(parent))); + else + caml_raise_sys_error(parent + ": Not a directory"); + this.create_dir_if_needed(this.slash(name))}; + MlFakeDevice.prototype.rmdir + = + function(name,raise_unix) + {var + unix_error=raise_unix && caml_named_value("Unix.Unix_error"), + name_slash=name == ""?"":this.slash(name), + r=new RegExp("^" + name_slash + "([^/]+)"); + if(! this.exists(name)) + if(unix_error) + caml_raise_with_args + (unix_error,make_unix_err_args("ENOENT","rmdir",this.nm(name))); + else + caml_raise_sys_error(name + ": No such file or directory"); + if(! this.is_dir(name)) + if(unix_error) + caml_raise_with_args + (unix_error,make_unix_err_args("ENOTDIR","rmdir",this.nm(name))); + else + caml_raise_sys_error(name + ": Not a directory"); + for(var n in this.content) + if(n.match(r)) + if(unix_error) + caml_raise_with_args + (unix_error,make_unix_err_args("ENOTEMPTY","rmdir",this.nm(name))); + else + caml_raise_sys_error(this.nm(name) + ": Directory not empty"); + delete this.content[name_slash]}; + MlFakeDevice.prototype.readdir + = + function(name) + {var name_slash=name == ""?"":this.slash(name); + if(! this.exists(name)) + caml_raise_sys_error(name + ": No such file or directory"); + if(! this.is_dir(name))caml_raise_sys_error(name + ": Not a directory"); + var r=new RegExp("^" + name_slash + "([^/]+)"),seen={},a=[]; + for(var n in this.content) + {var m=n.match(r); + if(m && ! seen[m[1]]){seen[m[1]] = true;a.push(m[1])}} + return a}; + MlFakeDevice.prototype.is_dir + = + function(name) + {if(name == "")return true; + var name_slash=this.slash(name); + return this.content[name_slash]?1:0}; + MlFakeDevice.prototype.unlink + = + function(name) + {var ok=this.content[name]?true:false; + delete this.content[name]; + return ok}; + MlFakeDevice.prototype.open + = + function(name,f) + {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"); + var file=this.content[name]; + if(f.truncate)file.truncate(); + return file} + else + if(f.create) + {this.create_dir_if_needed(name); + this.content[name] = new MlFakeFile(caml_create_bytes(0)); + return this.content[name]} + else + caml_raise_no_such_file(this.nm(name))}; + MlFakeDevice.prototype.register + = + function(name,content) + {var file; + if(this.content[name]) + caml_raise_sys_error(this.nm(name) + " : file already exists"); + if(caml_is_ml_bytes(content))file = new MlFakeFile(content); + if(caml_is_ml_string(content)) + file = new MlFakeFile(caml_bytes_of_string(content)); + else + if(content instanceof Array) + file = new MlFakeFile(caml_bytes_of_array(content)); + else + if(typeof content === "string") + file = new MlFakeFile(caml_bytes_of_jsbytes(content)); + else + if(content.toString) + {var + bytes= + caml_bytes_of_string(caml_string_of_jsstring(content.toString())); + file = new MlFakeFile(bytes)} + if(file) + {this.create_dir_if_needed(name);this.content[name] = file} + else + caml_raise_sys_error + (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_string_unsafe_get(s,i){return caml_bytes_unsafe_get(s,i)} + function caml_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_unsafe_set(s,i,c) + {c &= 0xff; + if(s.t != 4) + {if(i == s.c.length) + {s.c += String.fromCharCode(c);if(i + 1 == s.l)s.t = 0;return 0} + caml_convert_bytes_to_array(s)} + s.c[i] = c; + return 0} + 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(len) + {try + {this.fs.ftruncateSync(this.fd,len | 0)} + catch(err){caml_raise_sys_error(err.toString())}}; + MlNodeFile.prototype.length + = + function() + {try + {return this.fs.fstatSync(this.fd).size} + catch(err){caml_raise_sys_error(err.toString())}}; + MlNodeFile.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)} + 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 + = + 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() + {try + {this.fs.closeSync(this.fd)} + 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 + = + function(name) + {try {return this.fs.existsSync(this.nm(name))?1:0}catch(err){return 0}}; + MlNodeDevice.prototype.mkdir + = + function(name,mode,raise_unix) + {try + {this.fs.mkdirSync(this.nm(name),{mode:mode});return 0} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.rmdir + = + function(name,raise_unix) + {try + {this.fs.rmdirSync(this.nm(name));return 0} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.readdir + = + function(name,raise_unix) + {try + {return this.fs.readdirSync(this.nm(name))} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.is_dir + = + function(name) + {try + {return this.fs.statSync(this.nm(name)).isDirectory()?1:0} + catch(err){caml_raise_sys_error(err.toString())}}; + MlNodeDevice.prototype.unlink + = + function(name,raise_unix) + {try + {var b=this.fs.existsSync(this.nm(name))?1:0; + this.fs.unlinkSync(this.nm(name)); + return b} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.open + = + function(name,f,raise_unix) + {var consts=require("constants"),res=0; + for(var key in f) + switch(key) + {case "rdonly":res |= consts.O_RDONLY;break; + case "wronly":res |= consts.O_WRONLY;break; + case "append":res |= consts.O_WRONLY | consts.O_APPEND;break; + case "create":res |= consts.O_CREAT;break; + case "truncate":res |= consts.O_TRUNC;break; + case "excl":res |= consts.O_EXCL;break; + case "binary":res |= consts.O_BINARY;break; + case "text":res |= consts.O_TEXT;break; + case "nonblock":res |= consts.O_NONBLOCK;break + } + try + {var fd=this.fs.openSync(this.nm(name),res);return new MlNodeFile(fd)} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.rename + = + function(o,n,raise_unix) + {try + {this.fs.renameSync(this.nm(o),this.nm(n))} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.stat + = + function(name,raise_unix) + {try + {var js_stats=this.fs.statSync(this.nm(name)); + return this.stats_from_js(js_stats)} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.lstat + = + function(name,raise_unix) + {try + {var js_stats=this.fs.lstatSync(this.nm(name)); + return this.stats_from_js(js_stats)} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.symlink + = + function(to_dir,target,path,raise_unix) + {try + {this.fs.symlinkSync(this.nm(target),this.nm(path),to_dir?"dir":"file"); + return 0} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.readlink + = + function(name,raise_unix) + {try + {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.raise_nodejs_error + = + function(err,raise_unix) + {var unix_error=caml_named_value("Unix.Unix_error"); + if(raise_unix && unix_error) + {var args=make_unix_err_args(err.code,err.syscall,err.path,err.errno); + caml_raise_with_args(unix_error,args)} + else + caml_raise_sys_error(err.toString())}; + MlNodeDevice.prototype.stats_from_js + = + function(js_stats) + {var file_kind; + if(js_stats.isFile()) + file_kind = 0; + else + if(js_stats.isDirectory()) + file_kind = 1; + else + if(js_stats.isCharacterDevice()) + file_kind = 2; + else + if(js_stats.isBlockDevice()) + file_kind = 3; + else + if(js_stats.isSymbolicLink()) + file_kind = 4; + else + if(js_stats.isFIFO()) + file_kind = 5; + else + if(js_stats.isSocket())file_kind = 6; + return [0, + js_stats.dev, + js_stats.ino, + file_kind, + js_stats.mode, + js_stats.nlink, + js_stats.uid, + js_stats.gid, + js_stats.rdev, + js_stats.size, + js_stats.atimeMs, + js_stats.mtimeMs, + js_stats.ctimeMs]}; + MlNodeDevice.prototype.constructor = MlNodeDevice; + function caml_get_root(path) + {var x=path_is_absolute(path);if(! x)return;return x[0] + "/"} + function caml_failwith(msg) + {if(! caml_global_data.Failure) + caml_global_data.Failure = [248,caml_string_of_jsbytes("Failure"),- 3]; + caml_raise_with_string(caml_global_data.Failure,msg)} + var + caml_root= + caml_get_root(caml_current_dir) + || + caml_failwith("unable to compute caml_root"), + jsoo_mount_point=[]; + if(fs_node_supported()) + jsoo_mount_point.push + ({path:caml_root,device:new MlNodeDevice(caml_root)}); + else + jsoo_mount_point.push + ({path:caml_root,device:new MlFakeDevice(caml_root)}); + jsoo_mount_point.push + ({path:"/static/",device:new MlFakeDevice("/static/")}); + function resolve_fs_device(name) + {var + path=caml_make_path(name), + name=path.join("/"), + name_slash=caml_trailing_slash(name), + res; + for(var i=0;i < jsoo_mount_point.length;i++) + {var m=jsoo_mount_point[i]; + if + (name_slash.search(m.path) + == + 0 + && + (! res || res.path.length < m.path.length)) + res + = + {path:m.path, + device:m.device, + rest:name.substring(m.path.length,name.length)}} + if(! res && fs_node_supported()) + {var root=caml_get_root(name); + if(root && root.match(/^[a-zA-Z]:\/$/)) + {var m={path:root,device:new MlNodeDevice(root)}; + jsoo_mount_point.push(m); + res + = + {path:m.path, + device:m.device, + rest:name.substring(m.path.length,name.length)}}} + if(res)return res; + caml_raise_sys_error("no device found for " + name_slash)} + function caml_sys_is_directory(name) + {var root=resolve_fs_device(name),a=root.device.is_dir(root.rest); + return a?1:0} + 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]); + if(globalThis.jsoo_static_env && globalThis.jsoo_static_env[n]) + return caml_string_of_jsstring(globalThis.jsoo_static_env[n]); + caml_raise_not_found()} + function shift_right_nat(nat1,ofs1,len1,nat2,ofs2,nbits) + {if(nbits == 0){nat2.data[ofs2] = 0;return 0} + var wrap=0; + for(var i=len1 - 1;i >= 0;i--) + {var a=nat1.data[ofs1 + i] >>> 0; + nat1.data[ofs1 + i] = a >>> nbits | wrap; + wrap = a << 32 - nbits} + nat2.data[ofs2] = wrap; + return 0} + var caml_gr_state; + function caml_gr_state_get() + {if(caml_gr_state)return caml_gr_state; + throw [0, + caml_named_value("Graphics.Graphic_failure"), + caml_string_of_jsbytes("Not initialized")]} + function caml_gr_point_color(x,y) + {var + s=caml_gr_state_get(), + im=s.context.getImageData(x,s.height - y,1,1), + d=im.data; + return (d[0] << 16) + (d[1] << 8) + d[2]} + var MlObjectTable; + if(typeof globalThis.WeakMap === "undefined") + MlObjectTable + = + function() + {function NaiveLookup(objs){this.objs = objs} + NaiveLookup.prototype.get + = + function(v) + {for(var i=0;i < this.objs.length;i++)if(this.objs[i] === v)return i}; + NaiveLookup.prototype.set = function(){}; + return function() + {this.objs = [];this.lookup = new NaiveLookup(this.objs)}} + (); + else + MlObjectTable + = + function(){this.objs = [];this.lookup = new (globalThis.WeakMap)()}; + MlObjectTable.prototype.store + = + function(v){this.lookup.set(v,this.objs.length);this.objs.push(v)}; + MlObjectTable.prototype.recall + = + function(v) + {var i=this.lookup.get(v); + return i === undefined?undefined:this.objs.length - i}; + function caml_sys_rename(o,n) + {var o_root=resolve_fs_device(o),n_root=resolve_fs_device(n); + if(o_root.device != n_root.device) + caml_failwith + ("caml_sys_rename: cannot move file between two filesystem"); + if(! o_root.device.rename) + 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} + function caml_classify_float(x) + {if(isFinite(x)) + {if(Math.abs(x) >= 2.2250738585072014e-308)return 0; + 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_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 + bigInt= + function(undefined) + {"use strict"; + var + BASE=1e7, + LOG_BASE=7, + MAX_INT=9007199254740992, + MAX_INT_ARR=smallToArray(MAX_INT), + DEFAULT_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyz", + BigInt=joo_global_object.BigInt, + supportsNativeBigInt=typeof BigInt === "function"; + function Integer(v,radix,alphabet,caseSensitive) + {if(typeof v === "undefined")return Integer[0]; + if(typeof radix !== "undefined") + return + radix === 10 && ! alphabet + ?parseValue(v) + :parseBase(v,radix,alphabet,caseSensitive); + return parseValue(v)} + function BigInteger(value,sign) + {this.value = value; + this.sign = sign; + this.isSmall = false; + this.caml_custom = "_z"} + BigInteger.prototype = Object.create(Integer.prototype); + function SmallInteger(value) + {this.value = value; + this.sign = value < 0; + this.isSmall = true; + this.caml_custom = "_z"} + SmallInteger.prototype = Object.create(Integer.prototype); + function NativeBigInt(value) + {this.value = value;this.caml_custom = "_z"} + NativeBigInt.prototype = Object.create(Integer.prototype); + function isPrecise(n){return - MAX_INT < n && n < MAX_INT} + function smallToArray(n) + {if(n < 1e7)return [n]; + if(n < 1e14)return [n % 1e7,Math.floor(n / 1e7)]; + return [n % 1e7,Math.floor(n / 1e7) % 1e7,Math.floor(n / 1e14)]} + function arrayToSmall(arr) + {trim(arr); + var length=arr.length; + if(length < 4 && compareAbs(arr,MAX_INT_ARR) < 0) + switch(length) + {case 0:return 0; + case 1:return arr[0]; + case 2:return arr[0] + arr[1] * BASE; + default:return arr[0] + (arr[1] + arr[2] * BASE) * BASE} + return arr} + function trim(v){var i=v.length;while(v[--i] === 0);v.length = i + 1} + function createArray(length) + {var x=new Array(length),i=- 1;while(++i < length)x[i] = 0;return x} + function truncate(n) + {if(n > 0)return Math.floor(n);return Math.ceil(n)} + function add(a,b) + {var + l_a=a.length, + l_b=b.length, + r=new Array(l_a), + carry=0, + base=BASE, + sum, + i; + for(i = 0;i < l_b;i++) + {sum = a[i] + b[i] + carry; + carry = sum >= base?1:0; + r[i] = sum - carry * base} + while(i < l_a) + {sum = a[i] + carry; + carry = sum === base?1:0; + r[i++] = sum - carry * base} + if(carry > 0)r.push(carry); + return r} + function addAny(a,b) + {if(a.length >= b.length)return add(a,b);return add(b,a)} + function addSmall(a,carry) + {var l=a.length,r=new Array(l),base=BASE,sum,i; + for(i = 0;i < l;i++) + {sum = a[i] - base + carry; + carry = Math.floor(sum / base); + r[i] = sum - carry * base; + carry += 1} + while(carry > 0) + {r[i++] = carry % base;carry = Math.floor(carry / base)} + return r} + BigInteger.prototype.add + = + function(v) + {var n=parseValue(v); + if(this.sign !== n.sign)return this.subtract(n.negate()); + var a=this.value,b=n.value; + if(n.isSmall) + return new BigInteger(addSmall(a,Math.abs(b)),this.sign); + return new BigInteger(addAny(a,b),this.sign)}; + BigInteger.prototype.plus = BigInteger.prototype.add; + SmallInteger.prototype.add + = + function(v) + {var n=parseValue(v),a=this.value; + if(a < 0 !== n.sign)return this.subtract(n.negate()); + var b=n.value; + if(n.isSmall) + {if(isPrecise(a + b))return new SmallInteger(a + b); + b = smallToArray(Math.abs(b))} + return new BigInteger(addSmall(b,Math.abs(a)),a < 0)}; + SmallInteger.prototype.plus = SmallInteger.prototype.add; + NativeBigInt.prototype.add + = + function(v) + {return new NativeBigInt(this.value + parseValue(v).value)}; + NativeBigInt.prototype.plus = NativeBigInt.prototype.add; + function subtract(a,b) + {var + a_l=a.length, + b_l=b.length, + r=new Array(a_l), + borrow=0, + base=BASE, + i, + difference; + for(i = 0;i < b_l;i++) + {difference = a[i] - borrow - b[i]; + if(difference < 0){difference += base;borrow = 1}else borrow = 0; + r[i] = difference} + for(i = b_l;i < a_l;i++) + {difference = a[i] - borrow; + if(difference < 0) + difference += base; + else + {r[i++] = difference;break} + r[i] = difference} + for(;i < a_l;i++)r[i] = a[i]; + trim(r); + return r} + function subtractAny(a,b,sign) + {var value; + if(compareAbs(a,b) >= 0) + value = subtract(a,b); + else + {value = subtract(b,a);sign = ! sign} + value = arrayToSmall(value); + if(typeof value === "number") + {if(sign)value = - value;return new SmallInteger(value)} + return new BigInteger(value,sign)} + function subtractSmall(a,b,sign) + {var l=a.length,r=new Array(l),carry=- b,base=BASE,i,difference; + for(i = 0;i < l;i++) + {difference = a[i] + carry; + carry = Math.floor(difference / base); + difference %= base; + r[i] = difference < 0?difference + base:difference} + r = arrayToSmall(r); + if(typeof r === "number") + {if(sign)r = - r;return new SmallInteger(r)} + return new BigInteger(r,sign)} + BigInteger.prototype.subtract + = + function(v) + {var n=parseValue(v); + if(this.sign !== n.sign)return this.add(n.negate()); + var a=this.value,b=n.value; + if(n.isSmall)return subtractSmall(a,Math.abs(b),this.sign); + return subtractAny(a,b,this.sign)}; + BigInteger.prototype.minus = BigInteger.prototype.subtract; + SmallInteger.prototype.subtract + = + function(v) + {var n=parseValue(v),a=this.value; + if(a < 0 !== n.sign)return this.add(n.negate()); + var b=n.value; + if(n.isSmall)return new SmallInteger(a - b); + return subtractSmall(b,Math.abs(a),a >= 0)}; + SmallInteger.prototype.minus = SmallInteger.prototype.subtract; + NativeBigInt.prototype.subtract + = + function(v) + {return new NativeBigInt(this.value - parseValue(v).value)}; + NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract; + BigInteger.prototype.negate + = + function(){return new BigInteger(this.value,! this.sign)}; + SmallInteger.prototype.negate + = + function() + {var sign=this.sign,small=new SmallInteger(- this.value); + small.sign = ! sign; + return small}; + NativeBigInt.prototype.negate + = + function(){return new NativeBigInt(- this.value)}; + BigInteger.prototype.abs + = + function(){return new BigInteger(this.value,false)}; + SmallInteger.prototype.abs + = + function(){return new SmallInteger(Math.abs(this.value))}; + NativeBigInt.prototype.abs + = + function() + {return new NativeBigInt(this.value >= 0?this.value:- this.value)}; + function multiplyLong(a,b) + {var + a_l=a.length, + b_l=b.length, + l=a_l + b_l, + r=createArray(l), + base=BASE, + product, + carry, + i, + a_i, + b_j; + for(i = 0;i < a_l;++i) + {a_i = a[i]; + for(var j=0;j < b_l;++j) + {b_j = b[j]; + product = a_i * b_j + r[i + j]; + carry = Math.floor(product / base); + r[i + j] = product - carry * base; + r[i + j + 1] += carry}} + trim(r); + return r} + function multiplySmall(a,b) + {var l=a.length,r=new Array(l),base=BASE,carry=0,product,i; + for(i = 0;i < l;i++) + {product = a[i] * b + carry; + carry = Math.floor(product / base); + r[i] = product - carry * base} + while(carry > 0) + {r[i++] = carry % base;carry = Math.floor(carry / base)} + return r} + function shiftLeft(x,n) + {var r=[];while(n-- > 0)r.push(0);return r.concat(x)} + function multiplyKaratsuba(x,y) + {var n=Math.max(x.length,y.length); + if(n <= 30)return multiplyLong(x,y); + n = Math.ceil(n / 2); + var + b=x.slice(n), + a=x.slice(0,n), + d=y.slice(n), + c=y.slice(0,n), + ac=multiplyKaratsuba(a,c), + bd=multiplyKaratsuba(b,d), + abcd=multiplyKaratsuba(addAny(a,b),addAny(c,d)), + product= + addAny + (addAny(ac,shiftLeft(subtract(subtract(abcd,ac),bd),n)), + shiftLeft(bd,2 * n)); + trim(product); + return product} + function useKaratsuba(l1,l2) + {return - (0.012 * l1) - 0.012 * l2 + 0.000015 * l1 * l2 > 0} + BigInteger.prototype.multiply + = + function(v) + {var + n=parseValue(v), + a=this.value, + b=n.value, + sign=this.sign !== n.sign, + abs; + if(n.isSmall) + {if(b === 0)return Integer[0]; + if(b === 1)return this; + if(b === - 1)return this.negate(); + abs = Math.abs(b); + if(abs < BASE)return new BigInteger(multiplySmall(a,abs),sign); + b = smallToArray(abs)} + if(useKaratsuba(a.length,b.length)) + return new BigInteger(multiplyKaratsuba(a,b),sign); + return new BigInteger(multiplyLong(a,b),sign)}; + BigInteger.prototype.times = BigInteger.prototype.multiply; + function multiplySmallAndArray(a,b,sign) + {if(a < BASE)return new BigInteger(multiplySmall(b,a),sign); + return new BigInteger(multiplyLong(b,smallToArray(a)),sign)} + SmallInteger.prototype._multiplyBySmall + = + function(a) + {if(isPrecise(a.value * this.value)) + return new SmallInteger(a.value * this.value); + return multiplySmallAndArray + (Math.abs(a.value), + smallToArray(Math.abs(this.value)), + this.sign !== a.sign)}; + BigInteger.prototype._multiplyBySmall + = + function(a) + {if(a.value === 0)return Integer[0]; + if(a.value === 1)return this; + if(a.value === - 1)return this.negate(); + return multiplySmallAndArray + (Math.abs(a.value),this.value,this.sign !== a.sign)}; + SmallInteger.prototype.multiply + = + function(v){return parseValue(v)._multiplyBySmall(this)}; + SmallInteger.prototype.times = SmallInteger.prototype.multiply; + NativeBigInt.prototype.multiply + = + function(v) + {return new NativeBigInt(this.value * parseValue(v).value)}; + NativeBigInt.prototype.times = NativeBigInt.prototype.multiply; + function square(a) + {var + l=a.length, + r=createArray(l + l), + base=BASE, + product, + carry, + i, + a_i, + a_j; + for(i = 0;i < l;i++) + {a_i = a[i]; + carry = 0 - a_i * a_i; + for(var j=i;j < l;j++) + {a_j = a[j]; + product = 2 * (a_i * a_j) + r[i + j] + carry; + carry = Math.floor(product / base); + r[i + j] = product - carry * base} + r[i + l] = carry} + trim(r); + return r} + BigInteger.prototype.square + = + function(){return new BigInteger(square(this.value),false)}; + SmallInteger.prototype.square + = + function() + {var value=this.value * this.value; + if(isPrecise(value))return new SmallInteger(value); + return new + BigInteger + (square(smallToArray(Math.abs(this.value))),false)}; + NativeBigInt.prototype.square + = + function(v){return new NativeBigInt(this.value * this.value)}; + function divMod1(a,b) + {var + a_l=a.length, + b_l=b.length, + base=BASE, + result=createArray(b.length), + divisorMostSignificantDigit=b[b_l - 1], + lambda=Math.ceil(base / (2 * divisorMostSignificantDigit)), + remainder=multiplySmall(a,lambda), + divisor=multiplySmall(b,lambda), + quotientDigit, + shift, + carry, + borrow, + i, + l, + q; + if(remainder.length <= a_l)remainder.push(0); + divisor.push(0); + divisorMostSignificantDigit = divisor[b_l - 1]; + for(shift = a_l - b_l;shift >= 0;shift--) + {quotientDigit = base - 1; + if(remainder[shift + b_l] !== divisorMostSignificantDigit) + quotientDigit + = + Math.floor + ((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) + / + divisorMostSignificantDigit); + carry = 0; + borrow = 0; + l = divisor.length; + for(i = 0;i < l;i++) + {carry += quotientDigit * divisor[i]; + q = Math.floor(carry / base); + borrow += remainder[shift + i] - (carry - q * base); + carry = q; + if(borrow < 0) + {remainder[shift + i] = borrow + base;borrow = - 1} + else + {remainder[shift + i] = borrow;borrow = 0}} + while(borrow !== 0) + {quotientDigit -= 1; + carry = 0; + for(i = 0;i < l;i++) + {carry += remainder[shift + i] - base + divisor[i]; + if(carry < 0) + {remainder[shift + i] = carry + base;carry = 0} + else + {remainder[shift + i] = carry;carry = 1}} + borrow += carry} + result[shift] = quotientDigit} + remainder = divModSmall(remainder,lambda)[0]; + return [arrayToSmall(result),arrayToSmall(remainder)]} + function divMod2(a,b) + {var + a_l=a.length, + b_l=b.length, + result=[], + part=[], + base=BASE, + guess, + xlen, + highx, + highy, + check; + while(a_l) + {part.unshift(a[--a_l]); + trim(part); + if(compareAbs(part,b) < 0){result.push(0);continue} + xlen = part.length; + highx = part[xlen - 1] * base + part[xlen - 2]; + highy = b[b_l - 1] * base + b[b_l - 2]; + if(xlen > b_l)highx = (highx + 1) * base; + guess = Math.ceil(highx / highy); + do + {check = multiplySmall(b,guess); + if(compareAbs(check,part) <= 0)break; + guess--} + while + (guess); + result.push(guess); + part = subtract(part,check)} + result.reverse(); + return [arrayToSmall(result),arrayToSmall(part)]} + function divModSmall(value,lambda) + {var + length=value.length, + quotient=createArray(length), + base=BASE, + i, + q, + remainder, + divisor; + remainder = 0; + for(i = length - 1;i >= 0;--i) + {divisor = remainder * base + value[i]; + q = truncate(divisor / lambda); + remainder = divisor - q * lambda; + quotient[i] = q | 0} + return [quotient,remainder | 0]} + function divModAny(self,v) + {var value,n=parseValue(v); + if(supportsNativeBigInt) + return [new NativeBigInt(self.value / n.value), + new NativeBigInt(self.value % n.value)]; + var a=self.value,b=n.value,quotient; + if(b === 0)throw new Error("Cannot divide by zero"); + if(self.isSmall) + {if(n.isSmall) + return [new SmallInteger(truncate(a / b)), + new SmallInteger(a % b)]; + return [Integer[0],self]} + if(n.isSmall) + {if(b === 1)return [self,Integer[0]]; + if(b == - 1)return [self.negate(),Integer[0]]; + var abs=Math.abs(b); + if(abs < BASE) + {value = divModSmall(a,abs); + quotient = arrayToSmall(value[0]); + var remainder=value[1]; + if(self.sign)remainder = - remainder; + if(typeof quotient === "number") + {if(self.sign !== n.sign)quotient = - quotient; + return [new SmallInteger(quotient), + new SmallInteger(remainder)]} + return [new BigInteger(quotient,self.sign !== n.sign), + new SmallInteger(remainder)]} + b = smallToArray(abs)} + var comparison=compareAbs(a,b); + if(comparison === - 1)return [Integer[0],self]; + if(comparison === 0) + return [Integer[self.sign === n.sign?1:- 1],Integer[0]]; + if(a.length + b.length <= 200) + value = divMod1(a,b); + else + value = divMod2(a,b); + quotient = value[0]; + var qSign=self.sign !== n.sign,mod=value[1],mSign=self.sign; + if(typeof quotient === "number") + {if(qSign)quotient = - quotient; + quotient = new SmallInteger(quotient)} + else + quotient = new BigInteger(quotient,qSign); + if(typeof mod === "number") + {if(mSign)mod = - mod;mod = new SmallInteger(mod)} + else + mod = new BigInteger(mod,mSign); + return [quotient,mod]} + BigInteger.prototype.divmod + = + function(v) + {var result=divModAny(this,v); + return {quotient:result[0],remainder:result[1]}}; + NativeBigInt.prototype.divmod + = + SmallInteger.prototype.divmod + = + BigInteger.prototype.divmod; + BigInteger.prototype.divide + = + function(v){return divModAny(this,v)[0]}; + NativeBigInt.prototype.over + = + NativeBigInt.prototype.divide + = + function(v) + {return new NativeBigInt(this.value / parseValue(v).value)}; + SmallInteger.prototype.over + = + SmallInteger.prototype.divide + = + BigInteger.prototype.over + = + BigInteger.prototype.divide; + BigInteger.prototype.mod = function(v){return divModAny(this,v)[1]}; + NativeBigInt.prototype.mod + = + NativeBigInt.prototype.remainder + = + function(v) + {return new NativeBigInt(this.value % parseValue(v).value)}; + SmallInteger.prototype.remainder + = + SmallInteger.prototype.mod + = + BigInteger.prototype.remainder + = + BigInteger.prototype.mod; + BigInteger.prototype.pow + = + function(v) + {var n=parseValue(v),a=this.value,b=n.value,value,x,y; + if(b === 0)return Integer[1]; + if(a === 0)return Integer[0]; + if(a === 1)return Integer[1]; + if(a === - 1)return n.isEven()?Integer[1]:Integer[- 1]; + if(n.sign)return Integer[0]; + if(! n.isSmall) + throw new Error("The exponent " + n.toString() + " is too large."); + if(this.isSmall) + if(isPrecise(value = Math.pow(a,b))) + return new SmallInteger(truncate(value)); + x = this; + y = Integer[1]; + while(true) + {if(b & 1 === 1){y = y.times(x);--b} + if(b === 0)break; + b /= 2; + x = x.square()} + return y}; + SmallInteger.prototype.pow = BigInteger.prototype.pow; + NativeBigInt.prototype.pow + = + function(v) + {var + n=parseValue(v), + a=this.value, + b=n.value, + _0=BigInt(0), + _1=BigInt(1), + _2=BigInt(2); + if(b === _0)return Integer[1]; + if(a === _0)return Integer[0]; + if(a === _1)return Integer[1]; + if(a === BigInt(- 1))return n.isEven()?Integer[1]:Integer[- 1]; + if(n.isNegative())return new NativeBigInt(_0); + var x=this,y=Integer[1]; + while(true) + {if((b & _1) === _1){y = y.times(x);--b} + if(b === _0)break; + b /= _2; + x = x.square()} + return y}; + BigInteger.prototype.modPow + = + function(exp,mod) + {exp = parseValue(exp); + mod = parseValue(mod); + if(mod.isZero()) + throw new Error("Cannot take modPow with modulus 0"); + var r=Integer[1],base=this.mod(mod); + if(exp.isNegative()) + {exp = exp.multiply(Integer[- 1]);base = base.modInv(mod)} + while(exp.isPositive()) + {if(base.isZero())return Integer[0]; + if(exp.isOdd())r = r.multiply(base).mod(mod); + exp = exp.divide(2); + base = base.square().mod(mod)} + return r}; + NativeBigInt.prototype.modPow + = + SmallInteger.prototype.modPow + = + BigInteger.prototype.modPow; + function compareAbs(a,b) + {if(a.length !== b.length)return a.length > b.length?1:- 1; + for(var i=a.length - 1;i >= 0;i--) + if(a[i] !== b[i])return a[i] > b[i]?1:- 1; + return 0} + BigInteger.prototype.compareAbs + = + function(v) + {var n=parseValue(v),a=this.value,b=n.value; + if(n.isSmall)return 1; + return compareAbs(a,b)}; + SmallInteger.prototype.compareAbs + = + function(v) + {var n=parseValue(v),a=Math.abs(this.value),b=n.value; + if(n.isSmall){b = Math.abs(b);return a === b?0:a > b?1:- 1} + return - 1}; + NativeBigInt.prototype.compareAbs + = + function(v) + {var a=this.value,b=parseValue(v).value; + a = a >= 0?a:- a; + b = b >= 0?b:- b; + return a === b?0:a > b?1:- 1}; + BigInteger.prototype.compare + = + function(v) + {if(v === Infinity)return - 1; + if(v === - Infinity)return 1; + var n=parseValue(v),a=this.value,b=n.value; + if(this.sign !== n.sign)return n.sign?1:- 1; + if(n.isSmall)return this.sign?- 1:1; + return compareAbs(a,b) * (this.sign?- 1:1)}; + BigInteger.prototype.compareTo = BigInteger.prototype.compare; + SmallInteger.prototype.compare + = + function(v) + {if(v === Infinity)return - 1; + if(v === - Infinity)return 1; + var n=parseValue(v),a=this.value,b=n.value; + if(n.isSmall)return a == b?0:a > b?1:- 1; + if(a < 0 !== n.sign)return a < 0?- 1:1; + return a < 0?1:- 1}; + SmallInteger.prototype.compareTo = SmallInteger.prototype.compare; + NativeBigInt.prototype.compare + = + function(v) + {if(v === Infinity)return - 1; + if(v === - Infinity)return 1; + var a=this.value,b=parseValue(v).value; + return a === b?0:a > b?1:- 1}; + NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare; + BigInteger.prototype.equals + = + function(v){return this.compare(v) === 0}; + NativeBigInt.prototype.eq + = + NativeBigInt.prototype.equals + = + SmallInteger.prototype.eq + = + SmallInteger.prototype.equals + = + BigInteger.prototype.eq + = + BigInteger.prototype.equals; + BigInteger.prototype.notEquals + = + function(v){return this.compare(v) !== 0}; + NativeBigInt.prototype.neq + = + NativeBigInt.prototype.notEquals + = + SmallInteger.prototype.neq + = + SmallInteger.prototype.notEquals + = + BigInteger.prototype.neq + = + BigInteger.prototype.notEquals; + BigInteger.prototype.greater + = + function(v){return this.compare(v) > 0}; + NativeBigInt.prototype.gt + = + NativeBigInt.prototype.greater + = + SmallInteger.prototype.gt + = + SmallInteger.prototype.greater + = + BigInteger.prototype.gt + = + BigInteger.prototype.greater; + BigInteger.prototype.lesser + = + function(v){return this.compare(v) < 0}; + NativeBigInt.prototype.lt + = + NativeBigInt.prototype.lesser + = + SmallInteger.prototype.lt + = + SmallInteger.prototype.lesser + = + BigInteger.prototype.lt + = + BigInteger.prototype.lesser; + BigInteger.prototype.greaterOrEquals + = + function(v){return this.compare(v) >= 0}; + NativeBigInt.prototype.geq + = + NativeBigInt.prototype.greaterOrEquals + = + SmallInteger.prototype.geq + = + SmallInteger.prototype.greaterOrEquals + = + BigInteger.prototype.geq + = + BigInteger.prototype.greaterOrEquals; + BigInteger.prototype.lesserOrEquals + = + function(v){return this.compare(v) <= 0}; + NativeBigInt.prototype.leq + = + NativeBigInt.prototype.lesserOrEquals + = + SmallInteger.prototype.leq + = + SmallInteger.prototype.lesserOrEquals + = + BigInteger.prototype.leq + = + BigInteger.prototype.lesserOrEquals; + BigInteger.prototype.isEven + = + function(){return (this.value[0] & 1) === 0}; + SmallInteger.prototype.isEven + = + function(){return (this.value & 1) === 0}; + NativeBigInt.prototype.isEven + = + function(){return (this.value & BigInt(1)) === BigInt(0)}; + BigInteger.prototype.isOdd + = + function(){return (this.value[0] & 1) === 1}; + SmallInteger.prototype.isOdd + = + function(){return (this.value & 1) === 1}; + NativeBigInt.prototype.isOdd + = + function(){return (this.value & BigInt(1)) === BigInt(1)}; + BigInteger.prototype.isPositive = function(){return ! this.sign}; + SmallInteger.prototype.isPositive + = + function(){return this.value > 0}; + NativeBigInt.prototype.isPositive + = + SmallInteger.prototype.isPositive; + BigInteger.prototype.isNegative = function(){return this.sign}; + SmallInteger.prototype.isNegative + = + function(){return this.value < 0}; + NativeBigInt.prototype.isNegative + = + SmallInteger.prototype.isNegative; + BigInteger.prototype.isUnit = function(){return false}; + SmallInteger.prototype.isUnit + = + function(){return Math.abs(this.value) === 1}; + NativeBigInt.prototype.isUnit + = + function(){return this.abs().value === BigInt(1)}; + BigInteger.prototype.isZero = function(){return false}; + SmallInteger.prototype.isZero = function(){return this.value === 0}; + NativeBigInt.prototype.isZero + = + function(){return this.value === BigInt(0)}; + BigInteger.prototype.isDivisibleBy + = + function(v) + {var n=parseValue(v); + if(n.isZero())return false; + if(n.isUnit())return true; + if(n.compareAbs(2) === 0)return this.isEven(); + return this.mod(n).isZero()}; + NativeBigInt.prototype.isDivisibleBy + = + SmallInteger.prototype.isDivisibleBy + = + BigInteger.prototype.isDivisibleBy; + function isBasicPrime(v) + {var n=v.abs(); + if(n.isUnit())return false; + if(n.equals(2) || n.equals(3) || n.equals(5))return true; + if(n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) + return false; + if(n.lesser(49))return true} + function millerRabinTest(n,a) + {var nPrev=n.prev(),b=nPrev,r=0,d,t,i,x; + while(b.isEven())b = b.divide(2),r++; + next: + for(i = 0;i < a.length;i++) + {if(n.lesser(a[i]))continue; + x = bigInt(a[i]).modPow(b,n); + if(x.isUnit() || x.equals(nPrev))continue; + for(d = r - 1;d != 0;d--) + {x = x.square().mod(n); + if(x.isUnit())return false; + if(x.equals(nPrev))continue next} + return false} + return true} + BigInteger.prototype.isPrime + = + function(strict) + {var isPrime=isBasicPrime(this); + if(isPrime !== undefined)return isPrime; + var n=this.abs(),bits=n.bitLength(); + if(bits <= 64) + return millerRabinTest(n,[2,3,5,7,11,13,17,19,23,29,31,37]); + var + logN=Math.log(2) * bits.toJSNumber(), + t=Math.ceil(strict === true?2 * Math.pow(logN,2):logN); + for(var a=[],i=0;i < t;i++)a.push(bigInt(i + 2)); + return millerRabinTest(n,a)}; + NativeBigInt.prototype.isPrime + = + SmallInteger.prototype.isPrime + = + BigInteger.prototype.isPrime; + BigInteger.prototype.isProbablePrime + = + function(iterations) + {var isPrime=isBasicPrime(this); + if(isPrime !== undefined)return isPrime; + var n=this.abs(),t=iterations === undefined?5:iterations; + for(var a=[],i=0;i < t;i++) + a.push(bigInt.randBetween(2,n.minus(2))); + return millerRabinTest(n,a)}; + NativeBigInt.prototype.isProbablePrime + = + SmallInteger.prototype.isProbablePrime + = + BigInteger.prototype.isProbablePrime; + BigInteger.prototype.modInv + = + function(n) + {var + t=bigInt.zero, + newT=bigInt.one, + r=parseValue(n), + newR=this.abs(), + q, + lastT, + lastR; + while(! newR.isZero()) + {q = r.divide(newR); + lastT = t; + lastR = r; + t = newT; + r = newR; + newT = lastT.subtract(q.multiply(newT)); + newR = lastR.subtract(q.multiply(newR))} + if(! r.isUnit()) + throw new + Error + (this.toString() + + + " and " + + + n.toString() + + + " are not co-prime"); + if(t.compare(0) === - 1)t = t.add(n); + if(this.isNegative())return t.negate(); + return t}; + NativeBigInt.prototype.modInv + = + SmallInteger.prototype.modInv + = + BigInteger.prototype.modInv; + BigInteger.prototype.next + = + function() + {var value=this.value; + if(this.sign)return subtractSmall(value,1,this.sign); + return new BigInteger(addSmall(value,1),this.sign)}; + SmallInteger.prototype.next + = + function() + {var value=this.value; + if(value + 1 < MAX_INT)return new SmallInteger(value + 1); + return new BigInteger(MAX_INT_ARR,false)}; + NativeBigInt.prototype.next + = + function(){return new NativeBigInt(this.value + BigInt(1))}; + BigInteger.prototype.prev + = + function() + {var value=this.value; + if(this.sign)return new BigInteger(addSmall(value,1),true); + return subtractSmall(value,1,this.sign)}; + SmallInteger.prototype.prev + = + function() + {var value=this.value; + if(value - 1 > - MAX_INT)return new SmallInteger(value - 1); + return new BigInteger(MAX_INT_ARR,true)}; + NativeBigInt.prototype.prev + = + function(){return new NativeBigInt(this.value - BigInt(1))}; + var powersOfTwo=[1]; + while(2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) + powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]); + var + powers2Length=powersOfTwo.length, + highestPower2=powersOfTwo[powers2Length - 1]; + function shift_isSmall(n){return Math.abs(n) <= BASE} + BigInteger.prototype.shiftLeft + = + function(v) + {var n=parseValue(v).toJSNumber(); + if(! shift_isSmall(n)) + throw new Error(String(n) + " is too large for shifting."); + if(n < 0)return this.shiftRight(- n); + var result=this; + if(result.isZero())return result; + while(n >= powers2Length) + {result = result.multiply(highestPower2);n -= powers2Length - 1} + return result.multiply(powersOfTwo[n])}; + NativeBigInt.prototype.shiftLeft + = + SmallInteger.prototype.shiftLeft + = + BigInteger.prototype.shiftLeft; + BigInteger.prototype.shiftRight + = + function(v) + {var remQuo,n=parseValue(v).toJSNumber(); + if(! shift_isSmall(n)) + throw new Error(String(n) + " is too large for shifting."); + if(n < 0)return this.shiftLeft(- n); + var result=this; + while(n >= powers2Length) + {if(result.isZero() || result.isNegative() && result.isUnit()) + return result; + remQuo = divModAny(result,highestPower2); + result = remQuo[1].isNegative()?remQuo[0].prev():remQuo[0]; + n -= powers2Length - 1} + remQuo = divModAny(result,powersOfTwo[n]); + return remQuo[1].isNegative()?remQuo[0].prev():remQuo[0]}; + NativeBigInt.prototype.shiftRight + = + SmallInteger.prototype.shiftRight + = + BigInteger.prototype.shiftRight; + function bitwise(x,y,fn) + {y = parseValue(y); + var + xSign=x.isNegative(), + ySign=y.isNegative(), + xRem=xSign?x.not():x, + yRem=ySign?y.not():y, + xDigit=0, + yDigit=0, + xDivMod=null, + yDivMod=null, + result=[]; + while(! xRem.isZero() || ! yRem.isZero()) + {xDivMod = divModAny(xRem,highestPower2); + xDigit = xDivMod[1].toJSNumber(); + if(xSign)xDigit = highestPower2 - 1 - xDigit; + yDivMod = divModAny(yRem,highestPower2); + yDigit = yDivMod[1].toJSNumber(); + if(ySign)yDigit = highestPower2 - 1 - yDigit; + xRem = xDivMod[0]; + yRem = yDivMod[0]; + result.push(fn(xDigit,yDigit))} + var sum=fn(xSign?1:0,ySign?1:0) !== 0?bigInt(- 1):bigInt(0); + for(var i=result.length - 1;i >= 0;i -= 1) + sum = sum.multiply(highestPower2).add(bigInt(result[i])); + return sum} + BigInteger.prototype.not = function(){return this.negate().prev()}; + NativeBigInt.prototype.not + = + SmallInteger.prototype.not + = + BigInteger.prototype.not; + BigInteger.prototype.and + = + function(n){return bitwise(this,n,function(a,b){return a & b})}; + NativeBigInt.prototype.and + = + SmallInteger.prototype.and + = + BigInteger.prototype.and; + BigInteger.prototype.or + = + function(n){return bitwise(this,n,function(a,b){return a | b})}; + NativeBigInt.prototype.or + = + SmallInteger.prototype.or + = + BigInteger.prototype.or; + BigInteger.prototype.xor + = + function(n){return bitwise(this,n,function(a,b){return a ^ b})}; + NativeBigInt.prototype.xor + = + SmallInteger.prototype.xor + = + BigInteger.prototype.xor; + var + LOBMASK_I=1 << 30, + LOBMASK_BI=(BASE & - BASE) * (BASE & - BASE) | LOBMASK_I; + function roughLOB(n) + {var + v=n.value, + x= + typeof v === "number" + ?v | LOBMASK_I + :typeof v === "bigint" + ?v | BigInt(LOBMASK_I) + :v[0] + v[1] * BASE | LOBMASK_BI; + return x & - x} + function integerLogarithm(value,base) + {if(base.compareTo(value) <= 0) + {var + tmp=integerLogarithm(value,base.square(base)), + p=tmp.p, + e=tmp.e, + t=p.multiply(base); + return t.compareTo(value) <= 0?{p:t,e:e * 2 + 1}:{p:p,e:e * 2}} + return {p:bigInt(1),e:0}} + BigInteger.prototype.bitLength + = + function() + {var n=this; + if(n.compareTo(bigInt(0)) < 0)n = n.negate().subtract(bigInt(1)); + if(n.compareTo(bigInt(0)) === 0)return bigInt(0); + return bigInt(integerLogarithm(n,bigInt(2)).e).add(bigInt(1))}; + NativeBigInt.prototype.bitLength + = + SmallInteger.prototype.bitLength + = + BigInteger.prototype.bitLength; + function max(a,b) + {a = parseValue(a);b = parseValue(b);return a.greater(b)?a:b} + function min(a,b) + {a = parseValue(a);b = parseValue(b);return a.lesser(b)?a:b} + function gcd(a,b) + {a = parseValue(a).abs(); + b = parseValue(b).abs(); + if(a.equals(b))return a; + if(a.isZero())return b; + if(b.isZero())return a; + var c=Integer[1],d,t; + while(a.isEven() && b.isEven()) + {d = min(roughLOB(a),roughLOB(b)); + a = a.divide(d); + b = b.divide(d); + c = c.multiply(d)} + while(a.isEven())a = a.divide(roughLOB(a)); + do + {while(b.isEven())b = b.divide(roughLOB(b)); + if(a.greater(b)){t = b;b = a;a = t} + b = b.subtract(a)} + while + (! b.isZero()); + return c.isUnit()?a:a.multiply(c)} + function lcm(a,b) + {a = parseValue(a).abs(); + b = parseValue(b).abs(); + return a.divide(gcd(a,b)).multiply(b)} + function randBetween(a,b) + {a = parseValue(a); + b = parseValue(b); + var low=min(a,b),high=max(a,b),range=high.subtract(low).add(1); + if(range.isSmall)return low.add(Math.floor(Math.random() * range)); + var digits=toBase(range,BASE).value,result=[],restricted=true; + for(var i=0;i < digits.length;i++) + {var + top=restricted?digits[i]:BASE, + digit=truncate(Math.random() * top); + result.push(digit); + if(digit < top)restricted = false} + return low.add(Integer.fromArray(result,BASE,false))} + function parseBase(text,base,alphabet,caseSensitive) + {alphabet = alphabet || DEFAULT_ALPHABET; + text = String(text); + if(! caseSensitive) + {text = text.toLowerCase();alphabet = alphabet.toLowerCase()} + var length=text.length,i,absBase=Math.abs(base),alphabetValues={}; + for(i = 0;i < alphabet.length;i++)alphabetValues[alphabet[i]] = i; + for(i = 0;i < length;i++) + {var c=text[i]; + if(c === "-")continue; + if(c in alphabetValues) + if(alphabetValues[c] >= absBase) + {if(c === "1" && absBase === 1)continue; + throw new + Error + (c + " is not a valid digit in base " + base + ".")}} + base = parseValue(base); + var digits=[],isNegative=text[0] === "-"; + for(i = isNegative?1:0;i < text.length;i++) + {var c=text[i]; + if(c in alphabetValues) + digits.push(parseValue(alphabetValues[c])); + else + if(c === "<") + {var start=i; + do i++;while(text[i] !== ">" && i < text.length); + digits.push(parseValue(text.slice(start + 1,i)))} + else + throw new Error(c + " is not a valid character")} + return parseBaseFromArray(digits,base,isNegative)} + function parseBaseFromArray(digits,base,isNegative) + {var val=Integer[0],pow=Integer[1],i; + for(i = digits.length - 1;i >= 0;i--) + {val = val.add(digits[i].times(pow));pow = pow.times(base)} + return isNegative?val.negate():val} + function stringify(digit,alphabet) + {alphabet = alphabet || DEFAULT_ALPHABET; + if(digit < alphabet.length)return alphabet[digit]; + return "<" + digit + ">"} + function toBase(n,base) + {base = bigInt(base); + if(base.isZero()) + {if(n.isZero())return {value:[0],isNegative:false}; + throw new Error("Cannot convert nonzero numbers to base 0.")} + if(base.equals(- 1)) + {if(n.isZero())return {value:[0],isNegative:false}; + if(n.isNegative()) + return {value: + [].concat.apply + ([], + Array.apply(null,Array(- n.toJSNumber())).map + (Array.prototype.valueOf,[1,0])), + isNegative:false}; + var + arr= + Array.apply(null,Array(n.toJSNumber() - 1)).map + (Array.prototype.valueOf,[0,1]); + arr.unshift([1]); + return {value:[].concat.apply([],arr),isNegative:false}} + var neg=false; + if(n.isNegative() && base.isPositive()){neg = true;n = n.abs()} + if(base.isUnit()) + {if(n.isZero())return {value:[0],isNegative:false}; + return {value: + Array.apply(null,Array(n.toJSNumber())).map + (Number.prototype.valueOf,1), + isNegative:neg}} + var out=[],left=n,divmod; + while(left.isNegative() || left.compareAbs(base) >= 0) + {divmod = left.divmod(base); + left = divmod.quotient; + var digit=divmod.remainder; + if(digit.isNegative()) + {digit = base.minus(digit).abs();left = left.next()} + out.push(digit.toJSNumber())} + out.push(left.toJSNumber()); + return {value:out.reverse(),isNegative:neg}} + function toBaseString(n,base,alphabet) + {var arr=toBase(n,base); + return (arr.isNegative?"-":"") + + + arr.value.map(function(x){return stringify(x,alphabet)}).join + ("")} + BigInteger.prototype.toArray + = + function(radix){return toBase(this,radix)}; + SmallInteger.prototype.toArray + = + function(radix){return toBase(this,radix)}; + NativeBigInt.prototype.toArray + = + function(radix){return toBase(this,radix)}; + BigInteger.prototype.toString + = + function(radix,alphabet) + {if(radix === undefined)radix = 10; + if(radix !== 10)return toBaseString(this,radix,alphabet); + var + v=this.value, + l=v.length, + str=String(v[--l]), + zeros="0000000", + digit; + while(--l >= 0) + {digit = String(v[l]);str += zeros.slice(digit.length) + digit} + var sign=this.sign?"-":""; + return sign + str}; + SmallInteger.prototype.toString + = + function(radix,alphabet) + {if(radix === undefined)radix = 10; + if(radix != 10)return toBaseString(this,radix,alphabet); + return String(this.value)}; + NativeBigInt.prototype.toString = SmallInteger.prototype.toString; + NativeBigInt.prototype.toJSON + = + BigInteger.prototype.toJSON + = + SmallInteger.prototype.toJSON + = + function(){return this.toString()}; + BigInteger.prototype.valueOf + = + function(){return parseInt(this.toString(),10)}; + BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf; + SmallInteger.prototype.valueOf = function(){return this.value}; + SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf; + NativeBigInt.prototype.valueOf + = + NativeBigInt.prototype.toJSNumber + = + function(){return parseInt(this.toString(),10)}; + function parseStringValue(v) + {if(isPrecise(+ v)) + {var x=+ v; + if(x === truncate(x)) + return supportsNativeBigInt + ?new NativeBigInt(BigInt(x)) + :new SmallInteger(x); + throw new Error("Invalid integer: " + v)} + var sign=v[0] === "-"; + if(sign)v = v.slice(1); + var split=v.split(/e/i); + if(split.length > 2) + throw new Error("Invalid integer: " + split.join("e")); + if(split.length === 2) + {var exp=split[1]; + if(exp[0] === "+")exp = exp.slice(1); + exp = + exp; + if(exp !== truncate(exp) || ! isPrecise(exp)) + throw new + Error + ("Invalid integer: " + exp + " is not a valid exponent."); + var text=split[0],decimalPlace=text.indexOf("."); + if(decimalPlace >= 0) + {exp -= text.length - decimalPlace - 1; + text + = + text.slice(0,decimalPlace) + + + text.slice(decimalPlace + 1)} + if(exp < 0) + throw new + Error + ("Cannot include negative exponent part for integers"); + text += new Array(exp + 1).join("0"); + v = text} + var isValid=/^([0-9][0-9]*)$/.test(v); + if(! isValid)throw new Error("Invalid integer: " + v); + if(supportsNativeBigInt) + return new NativeBigInt(BigInt(sign?"-" + v:v)); + var r=[],max=v.length,l=LOG_BASE,min=max - l; + while(max > 0) + {r.push(+ v.slice(min,max));min -= l;if(min < 0)min = 0;max -= l} + trim(r); + return new BigInteger(r,sign)} + function parseNumberValue(v) + {if(supportsNativeBigInt)return new NativeBigInt(BigInt(v)); + if(isPrecise(v)) + {if(v !== truncate(v))throw new Error(v + " is not an integer."); + return new SmallInteger(v)} + return parseStringValue(v.toString())} + function parseValue(v) + {if(typeof v === "number")return parseNumberValue(v); + if(typeof v === "string")return parseStringValue(v); + if(typeof v === "bigint")return new NativeBigInt(v); + return v} + for(var i=0;i < 1000;i++) + {Integer[i] = parseValue(i);if(i > 0)Integer[- i] = parseValue(- i)} + Integer.one = Integer[1]; + Integer.zero = Integer[0]; + Integer.minusOne = Integer[- 1]; + Integer.max = max; + Integer.min = min; + Integer.gcd = gcd; + Integer.lcm = lcm; + Integer.isInstance + = + function(x) + {return x instanceof BigInteger + || + x instanceof SmallInteger + || + x instanceof NativeBigInt}; + Integer.randBetween = randBetween; + Integer.fromArray + = + function(digits,base,isNegative) + {return parseBaseFromArray + (digits.map(parseValue),parseValue(base || 10),isNegative)}; + return Integer} + (); + function ml_z_normalize(x) + {var y=x.toJSNumber() | 0;if(x.equals(bigInt(y)))return y;return x} + function ml_z_pow(z1,i1) + {i1 = bigInt(i1); + if(i1.lt(bigInt(0))) + caml_invalid_argument("Z.pow: exponent must be nonnegative"); + return ml_z_normalize(bigInt(z1).pow(i1))} + function ml_z_root(z,i) + {var zero=bigInt(0),one=bigInt(1); + z = bigInt(z); + if(i % 2 === 0 && z.lt(zero)) + caml_invalid_argument("Z.root: even root of a negative number"); + if(z.equals(zero) || z.equals(one))return ml_z_normalize(z); + var start=zero,end=z,ans=null,two=bigInt(2); + while(start.leq(end)) + {var mid=start.add(end).divide(two),po=mid.pow(i); + if(po.equals(z)) + return ml_z_normalize(mid); + else + if(po.lt(z)){start = mid.next();ans = mid}else end = mid.prev()} + return ml_z_normalize(ans)} + function ml_z_rootrem(z,i) + {var zero=bigInt(0),one=bigInt(1); + z = bigInt(z); + if(i % 2 === 0 && z.lt(zero)) + caml_invalid_argument("Z.rootrem: even root of a negative number"); + if(z.equals(zero) || z.equals(one))return [0,ml_z_normalize(z),zero]; + var start=zero,end=z,ans=null,two=bigInt(2); + while(start.leq(end)) + {var mid=start.add(end).divide(two),po=mid.pow(i); + if(po.equals(z)) + return [0,ml_z_normalize(mid),zero]; + 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_int64_of_bytes(a) + {return new + MlInt64 + (a[7] << 0 | a[6] << 8 | a[5] << 16, + a[4] << 0 | a[3] << 8 | a[2] << 16, + a[1] << 0 | a[0] << 8)} + function caml_ba_uint8_get64(ba,i0) + {var ofs=ba.offset(i0); + if(ofs + 7 >= ba.data.length)caml_array_bound_error(); + var + b1=ba.get(ofs + 0), + b2=ba.get(ofs + 1), + b3=ba.get(ofs + 2), + b4=ba.get(ofs + 3), + b5=ba.get(ofs + 4), + b6=ba.get(ofs + 5), + b7=ba.get(ofs + 6), + b8=ba.get(ofs + 7); + return caml_int64_of_bytes([b8,b7,b6,b5,b4,b3,b2,b1])} + function caml_int64_to_bytes(x){return x.toArray()} + function caml_int64_marshal(writer,v,sizes) + {var b=caml_int64_to_bytes(v); + for(var i=0;i < 8;i++)writer.write(8,b[i]); + sizes[0] = 8; + sizes[1] = 8} + function caml_ba_num_dims(ba){return ba.dims.length} + function caml_return_exn_constant(tag){return tag} + function caml_wrap_exception(e) + {if(e instanceof Array)return e; + if + (globalThis.RangeError + && + e instanceof globalThis.RangeError + && + e.message + && + e.message.match(/maximum call stack/i)) + return caml_return_exn_constant(caml_global_data.Stack_overflow); + if + (globalThis.InternalError + && + e instanceof globalThis.InternalError + && + e.message + && + e.message.match(/too much recursion/i)) + return caml_return_exn_constant(caml_global_data.Stack_overflow); + if(e instanceof globalThis.Error && caml_named_value("jsError")) + return [0,caml_named_value("jsError"),e]; + return [0,caml_global_data.Failure,caml_string_of_jsstring(String(e))]} + function caml_create_file(name,content) + {var root=resolve_fs_device(name); + if(! root.device.register)caml_failwith("cannot register file"); + root.device.register(root.rest,content); + return 0} + function jsoo_create_file(name,content) + {var + name=caml_string_of_jsbytes(name), + content=caml_string_of_jsbytes(content); + return caml_create_file(name,content)} + function caml_fs_init() + {var tmp=globalThis.caml_fs_tmp; + if(tmp) + for(var i=0;i < tmp.length;i++) + jsoo_create_file(tmp[i].name,tmp[i].content); + globalThis.jsoo_create_file = jsoo_create_file; + globalThis.caml_fs_tmp = []; + return 0} + function caml_set_parser_trace(){return 0} + 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); + d = d << 15 | d >>> 32 - 15; + d = caml_mul(d,0x1b873593); + h ^= d; + h = h << 13 | h >>> 32 - 13; + return (h + (h << 2) | 0) + (0xe6546b64 | 0) | 0} + function num_digits_nat(nat,ofs,len) + {for(var i=len - 1;i >= 0;i--)if(nat.data[ofs + i] != 0)return i + 1; + return 1} + function caml_hash_nat(x) + {var len=num_digits_nat(x,0,x.data.length),h=0; + for(var i=0;i < len;i++)h = caml_hash_mix_int(h,x.data[i]); + return h} + function caml_call_gen(f,args) + {if(f.fun)return caml_call_gen(f.fun,args); + if(typeof f !== "function")return f; + var n=f.length | 0; + if(n === 0)return f.apply(null,args); + var argsLen=args.length | 0,d=n - argsLen | 0; + if(d == 0) + return f.apply(null,args); + else + if(d < 0) + return caml_call_gen(f.apply(null,args.slice(0,n)),args.slice(n)); + else + return function() + {var + extra_args=arguments.length == 0?1:arguments.length, + nargs=new Array(args.length + extra_args); + for(var i=0;i < args.length;i++)nargs[i] = args[i]; + for(var i=0;i < arguments.length;i++) + nargs[args.length + i] = arguments[i]; + return caml_call_gen(f,nargs)}} + function caml_js_wrap_callback_arguments(f) + {return function() + {var len=arguments.length,args=new Array(len); + for(var i=0;i < len;i++)args[i] = arguments[i]; + return caml_call_gen(f,[args])}} + function caml_sys_chdir(dir) + {var root=resolve_fs_device(dir); + if(root.device.exists(root.rest)) + {if(root.rest) + caml_current_dir = caml_trailing_slash(root.path + root.rest); + else + caml_current_dir = root.path; + return 0} + else + caml_raise_no_such_file(caml_jsbytes_of_string(dir))} + function caml_gc_counters(){return [254,0,0,0]} + function ml_z_div(z1,z2) + {z2 = bigInt(z2); + if(z2.equals(bigInt(0)))caml_raise_zero_divide(); + return ml_z_normalize(bigInt(z1).divide(bigInt(z2)))} + function ml_z_sign(z1){return bigInt(z1).compare(bigInt.zero)} + function ml_z_add(z1,z2) + {return ml_z_normalize(bigInt(z1).add(bigInt(z2)))} + function ml_z_cdiv(z1,z2) + {var z1_pos=ml_z_sign(z1),z2_pos=ml_z_sign(z2); + if(z1_pos * z2_pos > 0) + if(! bigInt(z1).mod(bigInt(z2)).equals(bigInt(0))) + return ml_z_add(ml_z_div(z1,z2),bigInt(1)); + 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} + 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)); + var i=0; + if(x == 0)return - Infinity; + 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); + float32a[0] = x; + var int32a=new (globalThis.Int32Array)(float32a.buffer); + return int32a[0] | 0} + function caml_int64_create_lo_mi_hi(lo,mi,hi) + {return new MlInt64(lo,mi,hi)} + function caml_int64_bits_of_float(x) + {if(! isFinite(x)) + {if(isNaN(x))return caml_int64_create_lo_mi_hi(1,0,0x7ff0); + return x > 0 + ?caml_int64_create_lo_mi_hi(0,0,0x7ff0) + :caml_int64_create_lo_mi_hi(0,0,0xfff0)} + var sign=x == 0 && 1 / x == - Infinity?0x8000:x >= 0?0:0x8000; + if(sign)x = - x; + var exp=jsoo_floor_log2(x) + 1023; + if(exp <= 0) + {exp = 0;x /= Math.pow(2,- 1026)} + else + {x /= Math.pow(2,exp - 1027); + if(x < 16){x *= 2;exp -= 1} + if(exp == 0)x /= 2} + var k=Math.pow(2,24),r3=x | 0; + x = (x - r3) * k; + var r2=x | 0; + x = (x - r2) * k; + var r1=x | 0; + r3 = r3 & 0xf | sign | exp << 4; + return caml_int64_create_lo_mi_hi(r1,r2,r3)} + function caml_ba_serialize(writer,ba,sz) + {writer.write(32,ba.dims.length); + writer.write(32,ba.kind | ba.layout << 8); + if(ba.caml_custom == "_bigarr02") + for(var i=0;i < ba.dims.length;i++) + if(ba.dims[i] < 0xffff) + writer.write(16,ba.dims[i]); + else + {writer.write(16,0xffff); + writer.write(32,0); + writer.write(32,ba.dims[i])} + else + for(var i=0;i < ba.dims.length;i++)writer.write(32,ba.dims[i]); + switch(ba.kind) + {case 2: + case 3: + case 12: + for(var i=0;i < ba.data.length;i++)writer.write(8,ba.data[i]);break; + case 4: + case 5: + for(var i=0;i < ba.data.length;i++)writer.write(16,ba.data[i]);break; + case 6: + for(var i=0;i < ba.data.length;i++)writer.write(32,ba.data[i]);break; + case 8: + case 9: + writer.write(8,0); + for(var i=0;i < ba.data.length;i++)writer.write(32,ba.data[i]); + break; + case 7: + for(var i=0;i < ba.data.length / 2;i++) + {var b=caml_int64_to_bytes(ba.get(i)); + for(var j=0;j < 8;j++)writer.write(8,b[j])} + break; + case 1: + for(var i=0;i < ba.data.length;i++) + {var b=caml_int64_to_bytes(caml_int64_bits_of_float(ba.get(i))); + for(var j=0;j < 8;j++)writer.write(8,b[j])} + break; + case 0: + for(var i=0;i < ba.data.length;i++) + {var b=caml_int32_bits_of_float(ba.get(i));writer.write(32,b)} + break; + case 10: + for(var i=0;i < ba.data.length / 2;i++) + {var j=ba.get(i); + writer.write(32,caml_int32_bits_of_float(j[1])); + writer.write(32,caml_int32_bits_of_float(j[2]))} + break; + case 11: + for(var i=0;i < ba.data.length / 2;i++) + {var + complex=ba.get(i), + b=caml_int64_to_bytes(caml_int64_bits_of_float(complex[1])); + for(var j=0;j < 8;j++)writer.write(8,b[j]); + var b=caml_int64_to_bytes(caml_int64_bits_of_float(complex[2])); + for(var j=0;j < 8;j++)writer.write(8,b[j])} + break + } + sz[0] = (4 + ba.dims.length) * 4; + sz[1] = (4 + ba.dims.length) * 8} + 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; + 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 + } + 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); + int32a[0] = x; + var float32a=new (globalThis.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; + if(exp == 2047) + return (lo | mi | hi & 0xf) == 0?hi & 0x8000?- Infinity:Infinity:NaN; + var k=Math.pow(2,- 24),res=(lo * k + mi) * k + (hi & 0xf); + if(exp > 0) + {res += 16;res *= Math.pow(2,exp - 1027)} + else + res *= Math.pow(2,- 1026); + if(hi & 0x8000)res = - res; + return res} + function caml_ba_get_size(dims) + {var n_dims=dims.length,size=1; + for(var i=0;i < n_dims;i++) + {if(dims[i] < 0) + caml_invalid_argument("Bigarray.create: negative dimension"); + size = size * dims[i]} + return size} + function caml_int64_create_lo_hi(lo,hi) + {return new + MlInt64 + (lo & 0xffffff, + lo >>> 24 & 0xff | (hi & 0xffff) << 8, + hi >>> 16 & 0xffff)} + function caml_int64_hi32(v){return v.hi32()} + function caml_int64_lo32(v){return v.lo32()} + var caml_ba_custom_name="_bigarr02"; + function Ml_Bigarray(kind,layout,dims,buffer) + {this.kind = kind; + this.layout = layout; + this.dims = dims; + this.data = buffer} + Ml_Bigarray.prototype.caml_custom = caml_ba_custom_name; + Ml_Bigarray.prototype.offset + = + function(arg) + {var ofs=0; + if(typeof arg === "number")arg = [arg]; + if(! (arg instanceof Array)) + caml_invalid_argument("bigarray.js: invalid offset"); + if(this.dims.length != arg.length) + caml_invalid_argument("Bigarray.get/set: bad number of dimensions"); + if(this.layout == 0) + for(var i=0;i < this.dims.length;i++) + {if(arg[i] < 0 || arg[i] >= this.dims[i])caml_array_bound_error(); + ofs = ofs * this.dims[i] + arg[i]} + else + for(var i=this.dims.length - 1;i >= 0;i--) + {if(arg[i] < 1 || arg[i] > this.dims[i])caml_array_bound_error(); + ofs = ofs * this.dims[i] + (arg[i] - 1)} + return ofs}; + Ml_Bigarray.prototype.get + = + function(ofs) + {switch(this.kind) + {case 7: + var l=this.data[ofs * 2 + 0],h=this.data[ofs * 2 + 1]; + return caml_int64_create_lo_hi(l,h); + case 10: + case 11: + var r=this.data[ofs * 2 + 0],i=this.data[ofs * 2 + 1]; + return [254,r,i]; + default:return this.data[ofs]}}; + Ml_Bigarray.prototype.set + = + function(ofs,v) + {switch(this.kind) + {case 7: + this.data[ofs * 2 + 0] = caml_int64_lo32(v); + this.data[ofs * 2 + 1] = caml_int64_hi32(v); + break; + case 10: + case 11: + this.data[ofs * 2 + 0] = v[1];this.data[ofs * 2 + 1] = v[2];break; + default:this.data[ofs] = v;break} + return 0}; + Ml_Bigarray.prototype.fill + = + function(v) + {switch(this.kind) + {case 7: + var a=caml_int64_lo32(v),b=caml_int64_hi32(v); + if(a == b) + this.data.fill(a); + else + for(var i=0;i < this.data.length;i++)this.data[i] = i % 2 == 0?a:b; + break; + case 10: + case 11: + var im=v[1],re=v[2]; + if(im == re) + this.data.fill(im); + else + for(var i=0;i < this.data.length;i++) + this.data[i] = i % 2 == 0?im:re; + break; + default:this.data.fill(v);break}}; + Ml_Bigarray.prototype.compare + = + function(b,total) + {if(this.layout != b.layout || this.kind != b.kind) + {var k1=this.kind | this.layout << 8,k2=b.kind | b.layout << 8; + return k2 - k1} + if(this.dims.length != b.dims.length) + return b.dims.length - this.dims.length; + for(var i=0;i < this.dims.length;i++) + if(this.dims[i] != b.dims[i])return this.dims[i] < b.dims[i]?- 1:1; + switch(this.kind) + {case 0: + case 1: + case 10: + case 11: + var x,y; + for(var i=0;i < this.data.length;i++) + {x = this.data[i]; + y = b.data[i]; + if(x < y)return - 1; + if(x > y)return 1; + if(x != y) + {if(! total)return NaN;if(x == x)return 1;if(y == y)return - 1}} + break; + case 7: + for(var i=0;i < this.data.length;i += 2) + {if(this.data[i + 1] < b.data[i + 1])return - 1; + if(this.data[i + 1] > b.data[i + 1])return 1; + if(this.data[i] >>> 0 < b.data[i] >>> 0)return - 1; + if(this.data[i] >>> 0 > b.data[i] >>> 0)return 1} + break; + case 2: + case 3: + case 4: + case 5: + case 6: + case 8: + case 9: + case 12: + for(var i=0;i < this.data.length;i++) + {if(this.data[i] < b.data[i])return - 1; + if(this.data[i] > b.data[i])return 1} + break + } + return 0}; + function Ml_Bigarray_c_1_1(kind,layout,dims,buffer) + {this.kind = kind; + this.layout = layout; + this.dims = dims; + this.data = buffer} + Ml_Bigarray_c_1_1.prototype = new Ml_Bigarray(); + Ml_Bigarray_c_1_1.prototype.offset + = + function(arg) + {if(typeof arg !== "number") + if(arg instanceof Array && arg.length == 1) + arg = arg[0]; + else + caml_invalid_argument("Ml_Bigarray_c_1_1.offset"); + if(arg < 0 || arg >= this.dims[0])caml_array_bound_error(); + return arg}; + Ml_Bigarray_c_1_1.prototype.get = function(ofs){return this.data[ofs]}; + Ml_Bigarray_c_1_1.prototype.set + = + function(ofs,v){this.data[ofs] = v;return 0}; + Ml_Bigarray_c_1_1.prototype.fill + = + function(v){this.data.fill(v);return 0}; + function caml_ba_create_unsafe(kind,layout,dims,data) + {var size_per_element=caml_ba_get_size_per_element(kind); + if(caml_ba_get_size(dims) * size_per_element != data.length) + caml_invalid_argument("length doesn't match dims"); + if(layout == 0 && dims.length == 1 && size_per_element == 1) + return new Ml_Bigarray_c_1_1(kind,layout,dims,data); + return new Ml_Bigarray(kind,layout,dims,data)} + function caml_ba_deserialize(reader,sz,name) + {var num_dims=reader.read32s(); + if(num_dims < 0 || num_dims > 16) + caml_failwith("input_value: wrong number of bigarray dimensions"); + var tag=reader.read32s(),kind=tag & 0xff,layout=tag >> 8 & 1,dims=[]; + if(name == "_bigarr02") + for(var i=0;i < num_dims;i++) + {var size_dim=reader.read16u(); + if(size_dim == 0xffff) + {var size_dim_hi=reader.read32u(),size_dim_lo=reader.read32u(); + if(size_dim_hi != 0) + caml_failwith("input_value: bigarray dimension overflow in 32bit"); + size_dim = size_dim_lo} + dims.push(size_dim)} + else + for(var i=0;i < num_dims;i++)dims.push(reader.read32u()); + var + size=caml_ba_get_size(dims), + data=caml_ba_create_buffer(kind,size), + ba=caml_ba_create_unsafe(kind,layout,dims,data); + switch(kind) + {case 2:for(var i=0;i < size;i++)data[i] = reader.read8s();break; + case 3: + case 12:for(var i=0;i < size;i++)data[i] = reader.read8u();break; + case 4:for(var i=0;i < size;i++)data[i] = reader.read16s();break; + case 5:for(var i=0;i < size;i++)data[i] = reader.read16u();break; + case 6:for(var i=0;i < size;i++)data[i] = reader.read32s();break; + case 8: + case 9: + var sixty=reader.read8u(); + if(sixty) + caml_failwith + ("input_value: cannot read bigarray with 64-bit OCaml ints"); + for(var i=0;i < size;i++)data[i] = reader.read32s(); + break; + case 7: + var t=new Array(8); + for(var i=0;i < size;i++) + {for(var j=0;j < 8;j++)t[j] = reader.read8u(); + var int64=caml_int64_of_bytes(t); + ba.set(i,int64)} + break; + case 1: + var t=new Array(8); + for(var i=0;i < size;i++) + {for(var j=0;j < 8;j++)t[j] = reader.read8u(); + var f=caml_int64_float_of_bits(caml_int64_of_bytes(t)); + ba.set(i,f)} + break; + case 0: + for(var i=0;i < size;i++) + {var f=caml_int32_float_of_bits(reader.read32s());ba.set(i,f)} + break; + case 10: + for(var i=0;i < size;i++) + {var + re=caml_int32_float_of_bits(reader.read32s()), + im=caml_int32_float_of_bits(reader.read32s()); + ba.set(i,[254,re,im])} + break; + case 11: + var t=new Array(8); + for(var i=0;i < size;i++) + {for(var j=0;j < 8;j++)t[j] = reader.read8u(); + var re=caml_int64_float_of_bits(caml_int64_of_bytes(t)); + for(var j=0;j < 8;j++)t[j] = reader.read8u(); + var im=caml_int64_float_of_bits(caml_int64_of_bytes(t)); + ba.set(i,[254,re,im])} + break + } + sz[0] = (4 + num_dims) * 4; + return caml_ba_create_unsafe(kind,layout,dims,data)} + function caml_ba_compare(a,b,total){return a.compare(b,total)} + function caml_hash_mix_int64(h,v) + {h = caml_hash_mix_int(h,caml_int64_lo32(v)); + h = caml_hash_mix_int(h,caml_int64_hi32(v)); + return h} + function caml_hash_mix_float(h,v0) + {return caml_hash_mix_int64(h,caml_int64_bits_of_float(v0))} + function caml_ba_hash(ba) + {var num_elts=caml_ba_get_size(ba.dims),h=0; + switch(ba.kind) + {case 2: + case 3: + case 12: + if(num_elts > 256)num_elts = 256; + var w=0,i=0; + for(i = 0;i + 4 <= ba.data.length;i += 4) + {w + = + ba.data[i + 0] + | + ba.data[i + 1] + << + 8 + | + ba.data[i + 2] + << + 16 + | + ba.data[i + 3] + << + 24; + h = caml_hash_mix_int(h,w)} + w = 0; + switch(num_elts & 3) + {case 3:w = ba.data[i + 2] << 16; + case 2:w |= ba.data[i + 1] << 8; + case 1:w |= ba.data[i + 0];h = caml_hash_mix_int(h,w) + } + break; + case 4: + case 5: + if(num_elts > 128)num_elts = 128; + var w=0,i=0; + for(i = 0;i + 2 <= ba.data.length;i += 2) + {w = ba.data[i + 0] | ba.data[i + 1] << 16; + h = caml_hash_mix_int(h,w)} + if((num_elts & 1) != 0)h = caml_hash_mix_int(h,ba.data[i]); + break; + case 6: + if(num_elts > 64)num_elts = 64; + for(var i=0;i < num_elts;i++)h = caml_hash_mix_int(h,ba.data[i]); + break; + case 8: + case 9: + if(num_elts > 64)num_elts = 64; + for(var i=0;i < num_elts;i++)h = caml_hash_mix_int(h,ba.data[i]); + break; + case 7: + if(num_elts > 32)num_elts = 32; + num_elts *= 2; + for(var i=0;i < num_elts;i++)h = caml_hash_mix_int(h,ba.data[i]); + break; + case 10:num_elts *= 2; + case 0: + if(num_elts > 64)num_elts = 64; + for(var i=0;i < num_elts;i++)h = caml_hash_mix_float(h,ba.data[i]); + break; + case 11:num_elts *= 2; + case 1: + if(num_elts > 32)num_elts = 32; + for(var i=0;i < num_elts;i++)h = caml_hash_mix_float(h,ba.data[i]); + break + } + return h} + function caml_int32_unmarshal(reader,size) + {size[0] = 4;return reader.read32s()} + function caml_nativeint_unmarshal(reader,size) + {switch(reader.read8u()) + {case 1:size[0] = 4;return reader.read32s(); + case 2:caml_failwith("input_value: native integer value too large"); + default:caml_failwith("input_value: ill-formed native integer")}} + function caml_int64_unmarshal(reader,size) + {var t=new Array(8); + for(var j=0;j < 8;j++)t[j] = reader.read8u(); + size[0] = 8; + return caml_int64_of_bytes(t)} + function caml_int64_compare(x,y,total){return x.compare(y)} + function caml_int64_hash(v){return v.lo32() ^ v.hi32()} + var + caml_custom_ops= + {"_j": + {deserialize:caml_int64_unmarshal, + serialize:caml_int64_marshal, + fixed_length:8, + compare:caml_int64_compare, + hash:caml_int64_hash}, + "_i":{deserialize:caml_int32_unmarshal,fixed_length:4}, + "_n":{deserialize:caml_nativeint_unmarshal,fixed_length:4}, + "_bigarray": + {deserialize: + function(reader,sz){return caml_ba_deserialize(reader,sz,"_bigarray")}, + serialize:caml_ba_serialize, + compare:caml_ba_compare, + hash:caml_ba_hash}, + "_bigarr02": + {deserialize: + function(reader,sz){return caml_ba_deserialize(reader,sz,"_bigarr02")}, + serialize:caml_ba_serialize, + compare:caml_ba_compare, + hash:caml_ba_hash}}; + function caml_compare_val_get_custom(a) + {return caml_custom_ops[a.caml_custom] + && + caml_custom_ops[a.caml_custom].compare} + function caml_compare_val_number_custom(num,custom,swap,total) + {var comp=caml_compare_val_get_custom(custom); + if(comp) + {var x=swap > 0?comp(custom,num,total):comp(num,custom,total); + if(total && x != x)return swap; + if(+ x != + x)return + x; + if((x | 0) != 0)return x | 0} + return swap} + function caml_compare_val_tag(a) + {if(typeof a === "number") + return 1000; + else + if(caml_is_ml_bytes(a)) + return 252; + else + if(caml_is_ml_string(a)) + return 1252; + else + if(a instanceof Array && a[0] === a[0] >>> 0 && a[0] <= 255) + {var tag=a[0] | 0;return tag == 254?0:tag} + else + if(a instanceof String) + return 12520; + else + if(typeof a == "string") + return 12520; + else + if(a instanceof Number) + return 1000; + else + if(a && a.caml_custom) + return 1255; + else + if(a && a.compare) + return 1256; + else + if(typeof a == "function") + return 1247; + else + if(typeof a == "symbol")return 1251; + return 1001} + function caml_int_compare(a,b) + {if(a < b)return - 1;if(a == b)return 0;return 1} + function caml_bytes_compare(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:s1.c > s2.c?1:0} + function caml_string_compare(s1,s2){return caml_bytes_compare(s1,s2)} + function caml_compare_val(a,b,total) + {var stack=[]; + for(;;) + {if(! (total && a === b)) + {var tag_a=caml_compare_val_tag(a); + if(tag_a == 250){a = a[1];continue} + var tag_b=caml_compare_val_tag(b); + if(tag_b == 250){b = b[1];continue} + if(tag_a !== tag_b) + {if(tag_a == 1000) + {if(tag_b == 1255) + return caml_compare_val_number_custom(a,b,- 1,total); + return - 1} + if(tag_b == 1000) + {if(tag_a == 1255) + return caml_compare_val_number_custom(b,a,1,total); + return 1} + return tag_a < tag_b?- 1:1} + switch(tag_a) + {case 247:caml_invalid_argument("compare: functional value");break; + case 248: + var x=caml_int_compare(a[2],b[2]);if(x != 0)return x | 0;break; + case 249:caml_invalid_argument("compare: functional value");break; + case 250: + caml_invalid_argument + ("equal: got Forward_tag, should not happen"); + break; + case 251:caml_invalid_argument("equal: abstract value");break; + case 252: + if(a !== b){var x=caml_bytes_compare(a,b);if(x != 0)return x | 0} + break; + case 253: + caml_invalid_argument("equal: got Double_tag, should not happen"); + break; + case 254: + caml_invalid_argument + ("equal: got Double_array_tag, should not happen"); + break; + case 255: + caml_invalid_argument("equal: got Custom_tag, should not happen"); + break; + case 1247: + caml_invalid_argument("compare: functional value");break; + case 1255: + var comp=caml_compare_val_get_custom(a); + if(comp != caml_compare_val_get_custom(b)) + return a.caml_custom < b.caml_custom?- 1:1; + if(! comp)caml_invalid_argument("compare: abstract value"); + var x=comp(a,b,total); + if(x != x)return total?- 1:x; + if(x !== (x | 0))return - 1; + if(x != 0)return x | 0; + break; + case 1256: + var x=a.compare(b,total); + if(x != x)return total?- 1:x; + if(x !== (x | 0))return - 1; + if(x != 0)return x | 0; + break; + case 1000: + a = + a; + b = + b; + if(a < b)return - 1; + if(a > b)return 1; + if(a != b) + {if(! total)return NaN;if(a == a)return 1;if(b == b)return - 1} + break; + case 1001: + if(a < b)return - 1; + if(a > b)return 1; + if(a != b) + {if(! total)return NaN;if(a == a)return 1;if(b == b)return - 1} + break; + case 1251:if(a !== b){if(! total)return NaN;return 1}break; + case 1252: + var a=caml_jsbytes_of_string(a),b=caml_jsbytes_of_string(b); + if(a !== b){if(a < b)return - 1;if(a > b)return 1} + break; + case 12520: + var a=a.toString(),b=b.toString(); + if(a !== b){if(a < b)return - 1;if(a > b)return 1} + break; + case 246: + case 254: + default: + if(a.length != b.length)return a.length < b.length?- 1:1; + if(a.length > 1)stack.push(a,b,1); + break}} + if(stack.length == 0)return 0; + var i=stack.pop(); + b = stack.pop(); + a = stack.pop(); + if(i + 1 < a.length)stack.push(a,b,i + 1); + a = a[i]; + b = b[i]}} + function caml_greaterthan(x,y){return + (caml_compare_val(x,y,false) > 0)} + function div_helper(a,b,c) + {var + x=a * 65536 + (b >>> 16), + y=Math.floor(x / c) * 65536, + z=x % c * 65536, + w=z + (b & 0x0000FFFF); + return [y + Math.floor(w / c),w % c]} + function div_digit_nat(natq,ofsq,natr,ofsr,nat1,ofs1,len,nat2,ofs2) + {var rem=nat1.data[ofs1 + len - 1] >>> 0; + for(var i=len - 2;i >= 0;i--) + {var x=div_helper(rem,nat1.data[ofs1 + i] >>> 0,nat2.data[ofs2] >>> 0); + natq.data[ofsq + i] = x[0]; + rem = x[1]} + natr.data[ofsr] = rem; + return 0} + function num_leading_zero_bits_in_digit(nat,ofs) + {var a=nat.data[ofs],b=0; + if(a & 0xFFFF0000){b += 16;a >>>= 16} + if(a & 0xFF00){b += 8;a >>>= 8} + if(a & 0xF0){b += 4;a >>>= 4} + if(a & 12){b += 2;a >>>= 2} + if(a & 2){b += 1;a >>>= 1} + if(a & 1)b += 1; + return 32 - b} + function shift_left_nat(nat1,ofs1,len1,nat2,ofs2,nbits) + {if(nbits == 0){nat2.data[ofs2] = 0;return 0} + var wrap=0; + for(var i=0;i < len1;i++) + {var a=nat1.data[ofs1 + i] >>> 0; + nat1.data[ofs1 + i] = a << nbits | wrap; + wrap = a >>> 32 - nbits} + nat2.data[ofs2] = wrap; + return 0} + function MlNat(x) + {this.data = new (globalThis.Int32Array)(x); + this.length = this.data.length + 2} + MlNat.prototype.caml_custom = "_nat"; + function create_nat(size) + {var arr=new MlNat(size); + for(var i=0;i < size;i++)arr.data[i] = - 1; + return arr} + function set_to_zero_nat(nat,ofs,len) + {for(var i=0;i < len;i++)nat.data[ofs + i] = 0;return 0} + function incr_nat(nat,ofs,len,carry_in) + {var carry=carry_in; + for(var i=0;i < len;i++) + {var x=(nat.data[ofs + i] >>> 0) + carry; + nat.data[ofs + i] = x | 0; + if(x == x >>> 0){carry = 0;break}else carry = 1} + return carry} + function add_nat(nat1,ofs1,len1,nat2,ofs2,len2,carry_in) + {var carry=carry_in; + for(var i=0;i < len2;i++) + {var + x= + (nat1.data[ofs1 + i] >>> 0) + (nat2.data[ofs2 + i] >>> 0) + carry; + nat1.data[ofs1 + i] = x; + if(x == x >>> 0)carry = 0;else carry = 1} + return incr_nat(nat1,ofs1 + len2,len1 - len2,carry)} + function nat_of_array(l){return new MlNat(l)} + function mult_digit_nat(nat1,ofs1,len1,nat2,ofs2,len2,nat3,ofs3) + {var carry=0,a=nat3.data[ofs3] >>> 0; + for(var i=0;i < len2;i++) + {var + x1= + (nat1.data[ofs1 + i] >>> 0) + + + (nat2.data[ofs2 + i] >>> 0) + * + (a & 0x0000FFFF) + + + carry, + x2=(nat2.data[ofs2 + i] >>> 0) * (a >>> 16); + carry = Math.floor(x2 / 65536); + var x3=x1 + x2 % 65536 * 65536; + nat1.data[ofs1 + i] = x3; + carry += Math.floor(x3 / 4294967296)} + return len2 < len1 && carry + ?add_nat + (nat1,ofs1 + len2,len1 - len2,nat_of_array([carry]),0,1,0) + :carry} + function decr_nat(nat,ofs,len,carry_in) + {var borrow=carry_in == 1?0:1; + for(var i=0;i < len;i++) + {var x=(nat.data[ofs + i] >>> 0) - borrow; + nat.data[ofs + i] = x; + if(x >= 0){borrow = 0;break}else borrow = 1} + return borrow == 1?0:1} + function sub_nat(nat1,ofs1,len1,nat2,ofs2,len2,carry_in) + {var borrow=carry_in == 1?0:1; + for(var i=0;i < len2;i++) + {var + x= + (nat1.data[ofs1 + i] >>> 0) - (nat2.data[ofs2 + i] >>> 0) - borrow; + nat1.data[ofs1 + i] = x; + if(x >= 0)borrow = 0;else borrow = 1} + return decr_nat(nat1,ofs1 + len2,len1 - len2,borrow == 1?0:1)} + function compare_nat(nat1,ofs1,len1,nat2,ofs2,len2) + {var a=num_digits_nat(nat1,ofs1,len1),b=num_digits_nat(nat2,ofs2,len2); + if(a > b)return 1; + if(a < b)return - 1; + for(var i=len1 - 1;i >= 0;i--) + {if(nat1.data[ofs1 + i] >>> 0 > nat2.data[ofs2 + i] >>> 0)return 1; + if(nat1.data[ofs1 + i] >>> 0 < nat2.data[ofs2 + i] >>> 0)return - 1} + return 0} + function div_nat(nat1,ofs1,len1,nat2,ofs2,len2) + {if(len2 == 1) + {div_digit_nat(nat1,ofs1 + 1,nat1,ofs1,nat1,ofs1,len1,nat2,ofs2); + return 0} + var s=num_leading_zero_bits_in_digit(nat2,ofs2 + len2 - 1); + shift_left_nat(nat2,ofs2,len2,nat_of_array([0]),0,s); + shift_left_nat(nat1,ofs1,len1,nat_of_array([0]),0,s); + var d=(nat2.data[ofs2 + len2 - 1] >>> 0) + 1,a=create_nat(len2 + 1); + for(var i=len1 - 1;i >= len2;i--) + {var + quo= + d == 4294967296 + ?nat1.data[ofs1 + i] >>> 0 + :div_helper + (nat1.data[ofs1 + i] >>> 0,nat1.data[ofs1 + i - 1] >>> 0,d) + [0]; + set_to_zero_nat(a,0,len2 + 1); + mult_digit_nat(a,0,len2 + 1,nat2,ofs2,len2,nat_of_array([quo]),0); + sub_nat(nat1,ofs1 + i - len2,len2 + 1,a,0,len2 + 1,1); + while + (nat1.data[ofs1 + i] + != + 0 + || + compare_nat(nat1,ofs1 + i - len2,len2,nat2,ofs2,len2) + >= + 0) + {quo = quo + 1; + sub_nat(nat1,ofs1 + i - len2,len2 + 1,nat2,ofs2,len2,1)} + nat1.data[ofs1 + i] = quo} + shift_right_nat(nat1,ofs1,len2,nat_of_array([0]),0,s); + shift_right_nat(nat2,ofs2,len2,nat_of_array([0]),0,s); + return 0} + function caml_ba_blit(src,dst) + {if(dst.dims.length != src.dims.length) + caml_invalid_argument("Bigarray.blit: dimension mismatch"); + for(var i=0;i < dst.dims.length;i++) + if(dst.dims[i] != src.dims[i]) + caml_invalid_argument("Bigarray.blit: dimension mismatch"); + dst.data.set(src.data); + return 0} + function is_digit_int(nat,ofs){if(nat.data[ofs] >= 0)return 1;return 0} + function caml_int64_div(x,y){return x.div(y)} + function caml_js_html_entities(s) + {var entity=/^&#?[0-9a-zA-Z]+;$/; + if(s.match(entity)) + {var str,temp=document.createElement("p"); + temp.innerHTML = s; + str = temp.textContent || temp.innerText; + temp = null; + return str} + else + caml_failwith("Invalid entity " + s)} + function caml_string_unsafe_set(s,i,c) + {return caml_bytes_unsafe_set(s,i,c)} + function caml_int64_of_float(x) + {if(x < 0)x = Math.ceil(x); + return new + MlInt64 + (x & 0xffffff, + Math.floor(x * caml_int64_offset) & 0xffffff, + Math.floor(x * caml_int64_offset * caml_int64_offset) & 0xffff)} + function caml_ml_channel_size_64(chanid) + {var chan=caml_ml_channels[chanid]; + return caml_int64_of_float(chan.file.length())} + function caml_ba_set_2(ba,i0,i1,v){ba.set(ba.offset([i0,i1]),v);return 0} + function ml_z_of_int64(i64) + {var neg=false; + if(caml_int64_compare(i64,caml_int64_create_lo_hi(0,0)) < 0) + {neg = true;i64 = caml_int64_neg(i64)} + var + lo=caml_int64_lo32(i64) >>> 0, + hi=caml_int64_hi32(i64) >>> 0, + x=bigInt(lo).add(bigInt(hi).shiftLeft(32)); + if(neg)x = x.negate(); + return ml_z_normalize(x)} + function ml_z_kronecker(n,k) + {caml_failwith("ml_z_kronecker is not implemented")} + 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 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])); + return args2} + (), + caml_executable_name=caml_argv[1]; + function caml_js_eval_string(s){return eval(caml_jsstring_of_string(s))} + function serialize_nat(writer,nat,sz) + {var len=nat.data.length; + writer.write(32,len); + for(var i=0;i < len;i++)writer.write(32,nat.data[i]); + sz[0] = len * 4; + sz[1] = len * 8} + 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); + caml_invalid_argument("Function 'exit' not implemented")} + function caml_channel_descriptor(chanid) + {var chan=caml_ml_channels[chanid];return chan.fd} + function caml_js_from_array(a){return a.slice(1)} + function caml_ba_reshape(ba,vind) + {vind = caml_js_from_array(vind); + var new_dim=[],num_dims=vind.length; + if(num_dims < 0 || num_dims > 16) + caml_invalid_argument("Bigarray.reshape: bad number of dimensions"); + var num_elts=1; + for(var i=0;i < num_dims;i++) + {new_dim[i] = vind[i]; + if(new_dim[i] < 0) + caml_invalid_argument("Bigarray.reshape: negative dimension"); + num_elts = num_elts * new_dim[i]} + var size=caml_ba_get_size(ba.dims); + if(num_elts != size) + caml_invalid_argument("Bigarray.reshape: size mismatch"); + return caml_ba_create_unsafe(ba.kind,ba.layout,new_dim,ba.data)} + var caml_oo_last_id=0; + function caml_set_oo_id(b){b[2] = caml_oo_last_id++;return b} + function caml_gr_fill_rect(x,y,w,h) + {var s=caml_gr_state_get(); + s.context.fillRect(x,s.height - y,w,- h); + return 0} + function caml_bigstring_blit_string_to_ba(str1,pos1,ba2,pos2,len) + {if(12 != ba2.kind) + caml_invalid_argument + ("caml_bigstring_blit_string_to_ba: kind mismatch"); + if(len == 0)return 0; + 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); + ba2.data.set(slice,ofs2); + return 0} + function caml_gr_set_window_title(name) + {var s=caml_gr_state_get(); + s.title = name; + var jsname=caml_jsstring_of_string(name); + if(s.set_title)s.set_title(jsname); + return 0} + function caml_get_global_data(){return caml_global_data} + function caml_int64_shift_right_unsigned(x,s) + {return x.shift_right_unsigned(s)} + function caml_ba_uint8_get16(ba,i0) + {var ofs=ba.offset(i0); + if(ofs + 1 >= ba.data.length)caml_array_bound_error(); + var b1=ba.get(ofs),b2=ba.get(ofs + 1); + 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)} + 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))} + function caml_bigstring_memcmp(s1,pos1,s2,pos2,len) + {for(var i=0;i < len;i++) + {var a=caml_ba_get_1(s1,pos1 + i),b=caml_ba_get_1(s2,pos2 + i); + if(a < b)return - 1; + if(a > b)return 1} + return 0} + function caml_new_string(s){return caml_string_of_jsbytes(s)} + function caml_erf_float(x) + {var + a1=0.254829592, + a2=- 0.284496736, + a3=1.421413741, + a4=- 1.453152027, + a5=1.061405429, + p=0.3275911, + sign=1; + if(x < 0)sign = - 1; + x = Math.abs(x); + var + t=1.0 / (1.0 + p * x), + y= + 1.0 + - + ((((a5 * t + a4) * t + a3) * t + a2) * t + a1) + * + t + * + Math.exp(- (x * x)); + return sign * y} + function caml_ba_uint8_get32(ba,i0) + {var ofs=ba.offset(i0); + if(ofs + 3 >= ba.data.length)caml_array_bound_error(); + var + b1=ba.get(ofs + 0), + b2=ba.get(ofs + 1), + b3=ba.get(ofs + 2), + b4=ba.get(ofs + 3); + return b1 << 0 | b2 << 8 | b3 << 16 | b4 << 24} + function caml_raw_backtrace_length(){return 0} + function ml_z_shift_right(z1,amt) + {return ml_z_normalize(bigInt(z1).shiftRight(amt))} + function caml_obj_block(tag,size) + {var o=new Array(size + 1); + o[0] = tag; + for(var i=1;i <= size;i++)o[i] = 0; + return o} + function caml_gr_clear_graph() + {var s=caml_gr_state_get(); + s.canvas.width = s.width; + s.canvas.height = s.height; + return 0} + function bigstring_to_array_buffer(bs){return bs.data.buffer} + function caml_sys_const_naked_pointers_checked(_unit){return 0} + function lxor_digit_nat(nat1,ofs1,nat2,ofs2) + {nat1.data[ofs1] ^= nat2.data[ofs2];return 0} + function caml_obj_add_offset(v,offset) + {caml_failwith("Obj.add_offset is not supported")} + function caml_final_release(){return 0} + function caml_js_to_array(a) + {var len=a.length,b=new Array(len + 1); + b[0] = 0; + for(var i=0;i < len;i++)b[i + 1] = a[i]; + return b} + function ml_z_logor(z1,z2) + {return ml_z_normalize(bigInt(z1).or(bigInt(z2)))} + function caml_gr_plot(x,y) + {var + s=caml_gr_state_get(), + im=s.context.createImageData(1,1), + d=im.data, + color=s.color; + d[0] = color >> 16 & 0xff; + d[1] = color >> 8 & 0xff,d[2] = color >> 0 & 0xff; + d[3] = 0xFF; + s.x = x; + s.y = y; + s.context.putImageData(im,x,s.height - y); + return 0} + function caml_bytes_set16(s,i,i16) + {if(i >>> 0 >= s.l - 1)caml_bytes_bound_error(); + var b2=0xFF & i16 >> 8,b1=0xFF & i16; + caml_bytes_unsafe_set(s,i + 0,b1); + caml_bytes_unsafe_set(s,i + 1,b2); + return 0} + function caml_string_set16(s,i,i16){return caml_bytes_set16(s,i,i16)} + function caml_bytes_set64(s,i,i64) + {if(i >>> 0 >= s.l - 7)caml_bytes_bound_error(); + var a=caml_int64_to_bytes(i64); + for(var j=0;j < 8;j++)caml_bytes_unsafe_set(s,i + 7 - j,a[j]); + return 0} + function caml_int64_bswap(x) + {var y=caml_int64_to_bytes(x); + 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 ml_z_shift_left(z1,amt) + {return ml_z_normalize(bigInt(z1).shiftLeft(amt))} + function caml_lex_array(s) + {s = caml_jsbytes_of_string(s); + var l=s.length / 2,a=new Array(l); + for(var i=0;i < l;i++) + a[i] + = + (s.charCodeAt(2 * i) | s.charCodeAt(2 * i + 1) << 8) + << + 16 + >> + 16; + return a} + function caml_lex_engine(tbl,start_state,lexbuf) + {var + lex_buffer=2, + lex_buffer_len=3, + lex_start_pos=5, + lex_curr_pos=6, + lex_last_pos=7, + lex_last_action=8, + lex_eof_reached=9, + lex_base=1, + lex_backtrk=2, + lex_default=3, + lex_trans=4, + lex_check=5; + if(! tbl.lex_default) + {tbl.lex_base = caml_lex_array(tbl[lex_base]); + tbl.lex_backtrk = caml_lex_array(tbl[lex_backtrk]); + 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]); + if(state >= 0) + {lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos]; + lexbuf[lex_last_action] = - 1} + else + state = - state - 1; + for(;;) + {var base=tbl.lex_base[state]; + if(base < 0)return - base - 1; + var backtrk=tbl.lex_backtrk[state]; + if(backtrk >= 0) + {lexbuf[lex_last_pos] = lexbuf[lex_curr_pos]; + lexbuf[lex_last_action] = backtrk} + if(lexbuf[lex_curr_pos] >= lexbuf[lex_buffer_len]) + if(lexbuf[lex_eof_reached] == 0)return - state - 1;else c = 256; + else + {c = buffer[lexbuf[lex_curr_pos]];lexbuf[lex_curr_pos]++} + if(tbl.lex_check[base + c] == state) + state = tbl.lex_trans[base + c]; + else + state = tbl.lex_default[state]; + if(state < 0) + {lexbuf[lex_curr_pos] = lexbuf[lex_last_pos]; + if(lexbuf[lex_last_action] == - 1) + caml_failwith("lexing: empty token"); + else + 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() + {caml_failwith("caml_convert_raw_backtrace_slot")} + function caml_array_sub(a,i,len) + {var a2=new Array(len + 1); + a2[0] = 0; + for(var i2=1,i1=i + 1;i2 <= len;i2++,i1++)a2[i2] = a[i1]; + return a2} + function caml_bytes_equal(s1,s2) + {if(s1 === s2)return 1; + 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_gr_size_x(){var s=caml_gr_state_get();return s.width} + function caml_ml_debug_info_status(){return 0} + var + os_type= + globalThis.process + && + globalThis.process.platform + && + globalThis.process.platform + == + "win32" + ?"Cygwin" + :"Unix"; + function caml_sys_const_ostype_cygwin(){return os_type == "Cygwin"?1:0} + function caml_cosh_float(x){return Math.cosh(x)} + 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_hash_mix_final(h) + {h ^= h >>> 16; + h = caml_mul(h,0x85ebca6b | 0); + h ^= h >>> 13; + h = caml_mul(h,0xc2b2ae35 | 0); + h ^= h >>> 16; + return h} + function caml_gr_text_size(txt) + {var + s=caml_gr_state_get(), + w=s.context.measureText(caml_jsstring_of_string(txt)).width; + return [0,w,s.text_size]} + function caml_lex_run_mem(s,i,mem,curr_pos) + {for(;;) + {var dst=s.charCodeAt(i); + i++; + if(dst == 0xff)return; + var src=s.charCodeAt(i); + i++; + if(src == 0xff) + mem[dst + 1] = curr_pos; + else + mem[dst + 1] = mem[src + 1]}} + function caml_lex_run_tag(s,i,mem) + {for(;;) + {var dst=s.charCodeAt(i); + i++; + if(dst == 0xff)return; + var src=s.charCodeAt(i); + i++; + if(src == 0xff)mem[dst + 1] = - 1;else mem[dst + 1] = mem[src + 1]}} + function caml_new_lex_engine(tbl,start_state,lexbuf) + {var + lex_buffer=2, + lex_buffer_len=3, + lex_start_pos=5, + lex_curr_pos=6, + lex_last_pos=7, + lex_last_action=8, + lex_eof_reached=9, + lex_mem=10, + lex_base=1, + lex_backtrk=2, + lex_default=3, + lex_trans=4, + lex_check=5, + lex_base_code=6, + lex_backtrk_code=7, + lex_default_code=8, + lex_trans_code=9, + lex_check_code=10, + lex_code=11; + if(! tbl.lex_default) + {tbl.lex_base = caml_lex_array(tbl[lex_base]); + tbl.lex_backtrk = caml_lex_array(tbl[lex_backtrk]); + 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])} + if(! tbl.lex_default_code) + {tbl.lex_base_code = caml_lex_array(tbl[lex_base_code]); + tbl.lex_backtrk_code = caml_lex_array(tbl[lex_backtrk_code]); + tbl.lex_check_code = caml_lex_array(tbl[lex_check_code]); + tbl.lex_trans_code = caml_lex_array(tbl[lex_trans_code]); + 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]); + if(state >= 0) + {lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos]; + lexbuf[lex_last_action] = - 1} + else + state = - state - 1; + for(;;) + {var base=tbl.lex_base[state]; + if(base < 0) + {var pc_off=tbl.lex_base_code[state]; + caml_lex_run_tag(tbl.lex_code,pc_off,lexbuf[lex_mem]); + return - base - 1} + var backtrk=tbl.lex_backtrk[state]; + if(backtrk >= 0) + {var pc_off=tbl.lex_backtrk_code[state]; + caml_lex_run_tag(tbl.lex_code,pc_off,lexbuf[lex_mem]); + lexbuf[lex_last_pos] = lexbuf[lex_curr_pos]; + lexbuf[lex_last_action] = backtrk} + if(lexbuf[lex_curr_pos] >= lexbuf[lex_buffer_len]) + if(lexbuf[lex_eof_reached] == 0)return - state - 1;else c = 256; + else + {c = buffer[lexbuf[lex_curr_pos]];lexbuf[lex_curr_pos]++} + var pstate=state; + if(tbl.lex_check[base + c] == state) + state = tbl.lex_trans[base + c]; + else + state = tbl.lex_default[state]; + if(state < 0) + {lexbuf[lex_curr_pos] = lexbuf[lex_last_pos]; + if(lexbuf[lex_last_action] == - 1) + caml_failwith("lexing: empty token"); + else + return lexbuf[lex_last_action]} + else + {var base_code=tbl.lex_base_code[pstate],pc_off; + if(tbl.lex_check_code[base_code + c] == pstate) + pc_off = tbl.lex_trans_code[base_code + c]; + else + pc_off = tbl.lex_default_code[pstate]; + if(pc_off > 0) + caml_lex_run_mem + (tbl.lex_code,pc_off,lexbuf[lex_mem],lexbuf[lex_curr_pos]); + if(c == 256)lexbuf[lex_eof_reached] = 0}}} + function caml_ba_uint8_set64(ba,i0,v) + {var ofs=ba.offset(i0); + if(ofs + 7 >= ba.data.length)caml_array_bound_error(); + var v=caml_int64_to_bytes(v); + for(var i=0;i < 8;i++)ba.set(ofs + i,v[7 - i]); + return 0} + function ml_z_popcount(z) + {z = bigInt(z); + var zero=bigInt(0),one=bigInt(1); + if(z.lt(zero))caml_raise_constant(caml_named_value("ml_z_overflow")); + var i; + for(i = 0;! z.equals(zero);i++)z = z.and(z.prev()); + if(i != (i | 0))caml_raise_constant(caml_named_value("ml_z_overflow")); + return i | 0} + 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_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 = ""; + return 0} + function caml_ml_seek_out_64(chanid,pos) + {caml_ml_flush(chanid); + caml_ml_channels[chanid].offset = caml_int64_to_float(pos); + return 0} + 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_gc_compaction(){return 0} + function caml_weak_get(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; + function jsoo_z_of_js_string_base(base,s) + {if(base == 0) + {base = 10; + var p=0,sign=1; + if(s[p] == "-"){sign = - 1;p++}else if(s[p] == "+")p++; + if(s[p] == "0") + {p++; + if(s.length == p) + return 0; + else + {var bc=s[p]; + if(bc == "o" || bc == "O") + base = 8; + else + if(bc == "x" || bc == "X") + base = 16; + else + if(bc == "b" || bc == "B")base = 2; + if(base != 10){s = s.substring(p + 1);if(sign == - 1)s = "-" + s}}}} + function digit(code) + {if(code >= 48 && code <= 57)return code - 48; + if(code >= 97 && code <= 102)return code - 97 + 10; + if(code >= 65 && code <= 70)return code - 65 + 10} + var i=0; + if(s[i] == "+")s = s.substring(1);else if(s[i] == "-")i++; + if(s[i] == "_") + caml_invalid_argument("Z.of_substring_base: invalid digit"); + s = s.replace(/_/g,""); + if(s == "-" || s == "")s = "0"; + for(;i < s.length;i++) + {var c=digit(s.charCodeAt(i)); + if(c == undefined || c >= base) + caml_invalid_argument("Z.of_substring_base: invalid digit")} + return ml_z_normalize(bigInt(s,base))} + function ml_z_of_substring_base(base,s,pos,len) + {s = caml_jsbytes_of_string(s); + if(pos != 0 || len != s.length) + {if(s.length - pos < len) + caml_invalid_argument + ("Z.of_substring_base: invalid offset or length"); + s = s.slice(pos,pos + len)} + return jsoo_z_of_js_string_base(base,s)} + function caml_bigstring_blit_bytes_to_ba(str1,pos1,ba2,pos2,len) + {if(12 != ba2.kind) + caml_invalid_argument + ("caml_bigstring_blit_string_to_ba: kind mismatch"); + if(len == 0)return 0; + 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); + ba2.data.set(slice,ofs2); + return 0} + function win_cleanup(){} + function caml_sys_close(fd){delete caml_global_data.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) + {if(! exn.js_error || force || exn[0] == 248) + exn.js_error + = + new (globalThis.Error)("Js exception containing backtrace"); + return exn} + 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_js_set(o,f,v){o[f] = v;return 0} + function ml_z_gcdext_intern(z1,z2) + {z1 = bigInt(z1); + z2 = bigInt(z2); + var + gcd=bigInt.gcd(z1,z2), + a=z1, + b=z2, + x=bigInt(0), + lastx=bigInt(1), + y=bigInt(1), + lasty=bigInt(1), + q, + t, + r; + if(z1.equals(bigInt(0)))caml_raise_zero_divide(); + while(! b.equals(bigInt(0))) + {q = a.divide(b); + r = a.subtract(q.multiply(b)); + t = x; + x = lastx.subtract(q.multiply(x)); + lastx = t; + t = y; + y = lasty.subtract(q.multiply(y)); + lasty = t; + a = b; + b = r} + return a.lt(bigInt(0)) + ?[0,ml_z_normalize(a.negate()),ml_z_normalize(lastx.negate()),1] + :[0,ml_z_normalize(a),ml_z_normalize(lastx),1]} + function ml_z_testbit(z,pos) + {z = bigInt(z);return z.shiftRight(pos).and(bigInt(1)).toJSNumber() | 0} + function caml_array_get(array,index) + {if(index < 0 || index >= array.length - 1)caml_array_bound_error(); + return array[index + 1]} + 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) + {var zero=bigInt(0); + a = bigInt(a); + b = bigInt(b); + c = bigInt(c); + if(c.equals(zero) && a.equals(b))return 1; + return a.minus(b).isDivisibleBy(c)?1:0} + 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) + {var chan=caml_ml_channels[chanid]; + if(chan.refill != null)caml_raise_sys_error("Illegal seek"); + chan.offset = caml_int64_to_float(pos); + return 0} + 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())} + function caml_sys_const_int_size(){return 32} + function caml_js_wrap_meth_callback(f) + {return function() + {var len=arguments.length,args=new Array(len + 1); + args[0] = this; + 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_ba_dim(ba,i) + {if(i < 0 || i >= ba.dims.length)caml_invalid_argument("Bigarray.dim"); + return ba.dims[i]} + function caml_ba_dim_1(ba){return caml_ba_dim(ba,0)} + function ml_z_sqrt(z1) + {var z=bigInt(z1),zero=bigInt(0); + 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) + {if(i < 0)caml_invalid_argument("Z.lucnum: negative arguments"); + if(i == 0)return 2; + if(i == 1)return 1; + 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)} + 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_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_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 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) + {if(i < 0 || caml_ephe_key_offset + i >= x.length) + caml_invalid_argument("Weak.set"); + x[caml_ephe_key_offset + i] = v; + return 0} + function caml_sys_remove(name) + {var root=resolve_fs_device(name),ok=root.device.unlink(root.rest); + if(ok == 0)caml_raise_no_such_file(caml_jsbytes_of_string(name)); + return 0} + function caml_string_bound_error() + {caml_invalid_argument("index out of bounds")} + function caml_string_get32(s,i) + {if(i >>> 0 >= caml_ml_string_length(s) - 3)caml_string_bound_error(); + var + b1=caml_string_unsafe_get(s,i), + b2=caml_string_unsafe_get(s,i + 1), + 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_hypot_float(x,y){return Math.hypot(x,y)} + function ml_z_facM(i,m) + {if(i <= 0 || m <= 0) + caml_invalid_argument("Z.factM: negative arguments"); + m = bigInt(m); + var current=bigInt(i),res=bigInt(1); + while(current.isPositive()) + {res = res.multiply(current);current = current.minus(m)} + return ml_z_normalize(res)} + 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 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; + caml_raise_constant(caml_named_value("ml_z_overflow"))} + function caml_hash_mix_bytes_arr(h,s) + {var len=s.length,i,w; + for(i = 0;i + 4 <= len;i += 4) + {w = s[i] | s[i + 1] << 8 | s[i + 2] << 16 | s[i + 3] << 24; + h = caml_hash_mix_int(h,w)} + w = 0; + switch(len & 3) + {case 3:w = s[i + 2] << 16; + case 2:w |= s[i + 1] << 8; + case 1:w |= s[i];h = caml_hash_mix_int(h,w) + } + h ^= len; + return h} + function caml_hash_mix_jsbytes(h,s) + {var len=s.length,i,w; + for(i = 0;i + 4 <= len;i += 4) + {w + = + s.charCodeAt(i) + | + s.charCodeAt(i + 1) + << + 8 + | + s.charCodeAt(i + 2) + << + 16 + | + s.charCodeAt(i + 3) + << + 24; + h = caml_hash_mix_int(h,w)} + w = 0; + switch(len & 3) + {case 3:w = s.charCodeAt(i + 2) << 16; + case 2:w |= s.charCodeAt(i + 1) << 8; + case 1:w |= s.charCodeAt(i);h = caml_hash_mix_int(h,w) + } + h ^= len; + return h} + function caml_ml_bytes_content(s) + {switch(s.t & 6) + {default:caml_convert_string_to_bytes(s);case 0:return s.c; + case 4:return s.c + }} + function caml_hash_mix_bytes(h,v) + {var content=caml_ml_bytes_content(v); + return typeof content === "string" + ?caml_hash_mix_jsbytes(h,content) + :caml_hash_mix_bytes_arr(h,content)} + function caml_bytes_lessthan(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_erfc_float(x){return 1 - caml_erf_float(x)} + function caml_gr_fill_poly(ar) + {var s=caml_gr_state_get(); + s.context.beginPath(); + s.context.moveTo(ar[1][1],s.height - ar[1][2]); + for(var i=2;i < ar.length;i++) + s.context.lineTo(ar[i][1],s.height - ar[i][2]); + s.context.lineTo(ar[1][1],s.height - ar[1][2]); + s.context.fill(); + return 0} + function caml_gc_quick_stat(){return [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} + 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_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} + function caml_gr_display_mode() + {caml_failwith("caml_gr_display_mode not Implemented")} + function ml_z_divisible(a,b) + {var zero=bigInt(0); + a = bigInt(a); + b = bigInt(b); + if(a.equals(zero) && b.equals(zero))return 1; + return a.isDivisibleBy(b)?1:0} + function caml_obj_reachable_words(o){return 0} + function nth_digit_nat(nat,ofs){return nat.data[ofs]} + function caml_array_blit(a1,i1,a2,i2,len) + {if(i2 <= i1) + for(var j=1;j <= len;j++)a2[i2 + j] = a1[i1 + j]; + else + for(var j=len;j >= 1;j--)a2[i2 + j] = a1[i1 + j]; + return 0} + function caml_float_of_string(s) + {var res; + s = caml_jsbytes_of_string(s); + res = + s; + if(s.length > 0 && res === res)return res; + s = s.replace(/_/g,""); + res = + s; + if(s.length > 0 && res === res || /^[+-]?nan$/i.test(s))return res; + var m=/^ *([+-]?)0x([0-9a-f]+)\.?([0-9a-f]*)(p([+-]?[0-9]+))?/i.exec(s); + if(m) + {var + m3=m[3].replace(/0+$/,""), + mantissa=parseInt(m[1] + m[2] + m3,16), + exponent=(m[5] | 0) - 4 * m3.length; + res = mantissa * Math.pow(2,exponent); + return res} + if(/^\+?inf(inity)?$/i.test(s))return Infinity; + if(/^-inf(inity)?$/i.test(s))return - Infinity; + caml_failwith("float_of_string")} + function caml_sys_getcwd() + {return caml_string_of_jsbytes(caml_current_dir)} + 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} + var + caml_legacy_custom_code=false, + caml_output_val= + function() + {function Writer(){this.chunk = []} + Writer.prototype + = + {chunk_idx:20, + block_len:0, + obj_counter:0, + size_32:0, + size_64:0, + write: + function(size,value) + {for(var i=size - 8;i >= 0;i -= 8) + this.chunk[this.chunk_idx++] = value >> i & 0xFF}, + write_at: + function(pos,size,value) + {var pos=pos; + for(var i=size - 8;i >= 0;i -= 8) + this.chunk[pos++] = value >> i & 0xFF}, + write_code: + function(size,code,value) + {this.chunk[this.chunk_idx++] = code; + for(var i=size - 8;i >= 0;i -= 8) + this.chunk[this.chunk_idx++] = value >> i & 0xFF}, + write_shared: + function(offset) + {if(offset < 1 << 8) + this.write_code(8,0x04,offset); + else + if(offset < 1 << 16) + this.write_code(16,0x05,offset); + else + this.write_code(32,0x06,offset)}, + pos:function(){return this.chunk_idx}, + finalize: + function() + {this.block_len = this.chunk_idx - 20; + this.chunk_idx = 0; + this.write(32,0x8495A6BE); + this.write(32,this.block_len); + this.write(32,this.obj_counter); + this.write(32,this.size_32); + this.write(32,this.size_64); + return this.chunk}}; + return function(v,flags) + {flags = caml_list_to_js_array(flags); + var + no_sharing=flags.indexOf(0) !== - 1, + closures=flags.indexOf(1) !== - 1; + if(closures) + globalThis.console.warn + ("in caml_output_val: flag Marshal.Closures is not supported."); + var + writer=new Writer(), + stack=[], + intern_obj_table=no_sharing?null:new MlObjectTable(); + function memo(v) + {if(no_sharing)return false; + var existing_offset=intern_obj_table.recall(v); + if(existing_offset) + {writer.write_shared(existing_offset);return true} + else + {intern_obj_table.store(v);return false}} + function extern_rec(v) + {if(v.caml_custom) + {if(memo(v))return; + var + name=v.caml_custom, + ops=caml_custom_ops[name], + sz_32_64=[0,0]; + if(! ops.serialize) + caml_invalid_argument("output_value: abstract value (Custom)"); + if(caml_legacy_custom_code) + {writer.write(8,0x12); + for(var i=0;i < name.length;i++) + writer.write(8,name.charCodeAt(i)); + writer.write(8,0); + ops.serialize(writer,v,sz_32_64)} + else + if(ops.fixed_length == undefined) + {writer.write(8,0x18); + for(var i=0;i < name.length;i++) + writer.write(8,name.charCodeAt(i)); + writer.write(8,0); + var header_pos=writer.pos(); + for(var i=0;i < 12;i++)writer.write(8,0); + ops.serialize(writer,v,sz_32_64); + writer.write_at(header_pos,32,sz_32_64[0]); + writer.write_at(header_pos + 4,32,0); + writer.write_at(header_pos + 8,32,sz_32_64[1])} + else + {writer.write(8,0x19); + for(var i=0;i < name.length;i++) + writer.write(8,name.charCodeAt(i)); + writer.write(8,0); + var old_pos=writer.pos(); + ops.serialize(writer,v,sz_32_64); + if(ops.fixed_length != writer.pos() - old_pos) + caml_failwith + ("output_value: incorrect fixed sizes specified by " + name)} + writer.size_32 += 2 + (sz_32_64[0] + 3 >> 2); + writer.size_64 += 2 + (sz_32_64[1] + 7 >> 3)} + else + if(v instanceof Array && v[0] === (v[0] | 0)) + {if(v[0] == 251) + caml_failwith("output_value: abstract value (Abstract)"); + if(v.length > 1 && memo(v))return; + if(v[0] < 16 && v.length - 1 < 8) + writer.write(8,0x80 + v[0] + (v.length - 1 << 4)); + else + writer.write_code(32,0x08,v.length - 1 << 10 | v[0]); + writer.size_32 += v.length; + writer.size_64 += v.length; + if(v.length > 1)stack.push(v,1)} + else + if(caml_is_ml_bytes(v)) + {if(! caml_is_ml_bytes(caml_string_of_jsbytes(""))) + caml_failwith + ("output_value: [Bytes.t] cannot safely be marshaled with [--enable use-js-string]"); + if(memo(v))return; + var len=caml_ml_bytes_length(v); + if(len < 0x20) + writer.write(8,0x20 + len); + else + if(len < 0x100) + writer.write_code(8,0x09,len); + else + writer.write_code(32,0x0A,len); + for(var i=0;i < len;i++) + writer.write(8,caml_bytes_unsafe_get(v,i)); + writer.size_32 += 1 + ((len + 4) / 4 | 0); + writer.size_64 += 1 + ((len + 8) / 8 | 0)} + else + if(caml_is_ml_string(v)) + {var len=caml_ml_string_length(v); + if(len < 0x20) + writer.write(8,0x20 + len); + else + if(len < 0x100) + writer.write_code(8,0x09,len); + else + writer.write_code(32,0x0A,len); + for(var i=0;i < len;i++) + writer.write(8,caml_string_unsafe_get(v,i)); + writer.size_32 += 1 + ((len + 4) / 4 | 0); + writer.size_64 += 1 + ((len + 8) / 8 | 0)} + else + if(v != (v | 0)) + {var type_of_v=typeof v; + caml_failwith + ("output_value: abstract value (" + type_of_v + ")")} + else + if(v >= 0 && v < 0x40) + writer.write(8,0X40 + v); + else + if(v >= - (1 << 7) && v < 1 << 7) + writer.write_code(8,0x00,v); + else + if(v >= - (1 << 15) && v < 1 << 15) + writer.write_code(16,0x01,v); + else + writer.write_code(32,0x02,v)} + extern_rec(v); + while(stack.length > 0) + {var i=stack.pop(),v=stack.pop(); + if(i + 1 < v.length)stack.push(v,i + 1); + extern_rec(v[i])} + if(intern_obj_table) + writer.obj_counter = intern_obj_table.objs.length; + writer.finalize(); + return writer.chunk}} + (); + function caml_string_of_array(a) + {return caml_string_of_jsbytes(caml_subarray_to_jsbytes(a,0,a.length))} + function caml_output_value_to_string(v,flags) + {return caml_string_of_array(caml_output_val(v,flags))} + function caml_raise_not_a_dir(name) + {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} + 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 deserialize_nat(reader,sz) + {var len=reader.read32s(),nat=new MlNat(len); + for(var i=0;i < len;i++)nat.data[i] = reader.read32s(); + sz[0] = len * 4; + return nat} + function initialize_nat() + {caml_custom_ops["_nat"] + = + {deserialize:deserialize_nat,serialize:serialize_nat,hash:caml_hash_nat}} + 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) + << + 8 + | + b.charCodeAt(j + 2) + << + 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] + << + 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())} + function MlStringReader(s,i) + {this.s = caml_jsbytes_of_string(s);this.i = i} + MlStringReader.prototype + = + {read8u:function(){return this.s.charCodeAt(this.i++)}, + read8s:function(){return this.s.charCodeAt(this.i++) << 24 >> 24}, + read16u: + function() + {var s=this.s,i=this.i; + this.i = i + 2; + return s.charCodeAt(i) << 8 | s.charCodeAt(i + 1)}, + read16s: + function() + {var s=this.s,i=this.i; + this.i = i + 2; + return s.charCodeAt(i) << 24 >> 16 | s.charCodeAt(i + 1)}, + read32u: + function() + {var s=this.s,i=this.i; + this.i = i + 4; + return (s.charCodeAt(i) + << + 24 + | + s.charCodeAt(i + 1) + << + 16 + | + s.charCodeAt(i + 2) + << + 8 + | + s.charCodeAt(i + 3)) + >>> + 0}, + read32s: + function() + {var s=this.s,i=this.i; + this.i = i + 4; + return s.charCodeAt(i) + << + 24 + | + s.charCodeAt(i + 1) + << + 16 + | + s.charCodeAt(i + 2) + << + 8 + | + s.charCodeAt(i + 3)}, + readstr: + function(len) + {var i=this.i; + this.i = i + len; + return caml_string_of_jsbytes(this.s.substring(i,i + len))}}; + function caml_float_of_bytes(a) + {return caml_int64_float_of_bits(caml_int64_of_bytes(a))} + function caml_input_value_from_reader(reader,ofs) + {var + _magic=reader.read32u(), + _block_len=reader.read32u(), + num_objects=reader.read32u(), + _size_32=reader.read32u(), + _size_64=reader.read32u(), + stack=[], + intern_obj_table=num_objects > 0?[]:null, + obj_counter=0; + function intern_rec() + {var code=reader.read8u(); + if(code >= 0x40) + if(code >= 0x80) + {var tag=code & 0xF,size=code >> 4 & 0x7,v=[tag]; + if(size == 0)return v; + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + stack.push(v,size); + return v} + else + return code & 0x3F; + else + if(code >= 0x20) + {var len=code & 0x1F,v=reader.readstr(len); + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + return v} + else + switch(code) + {case 0x00:return reader.read8s(); + case 0x01:return reader.read16s(); + case 0x02:return reader.read32s(); + case 0x03:caml_failwith("input_value: integer too large");break; + case 0x04: + var offset=reader.read8u(); + return intern_obj_table[obj_counter - offset]; + case 0x05: + var offset=reader.read16u(); + return intern_obj_table[obj_counter - offset]; + case 0x06: + var offset=reader.read32u(); + return intern_obj_table[obj_counter - offset]; + case 0x08: + var + header=reader.read32u(), + tag=header & 0xFF, + size=header >> 10, + v=[tag]; + if(size == 0)return v; + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + stack.push(v,size); + return v; + case 0x13: + caml_failwith("input_value: data block too large");break; + case 0x09: + var len=reader.read8u(),v=reader.readstr(len); + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + return v; + case 0x0A: + var len=reader.read32u(),v=reader.readstr(len); + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + return v; + case 0x0C: + var t=new Array(8); + for(var i=0;i < 8;i++)t[7 - i] = reader.read8u(); + var v=caml_float_of_bytes(t); + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + return v; + case 0x0B: + var t=new Array(8); + for(var i=0;i < 8;i++)t[i] = reader.read8u(); + var v=caml_float_of_bytes(t); + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + return v; + case 0x0E: + var len=reader.read8u(),v=new Array(len + 1); + v[0] = 254; + var t=new Array(8); + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + for(var i=1;i <= len;i++) + {for(var j=0;j < 8;j++)t[7 - j] = reader.read8u(); + v[i] = caml_float_of_bytes(t)} + return v; + case 0x0D: + var len=reader.read8u(),v=new Array(len + 1); + v[0] = 254; + var t=new Array(8); + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + for(var i=1;i <= len;i++) + {for(var j=0;j < 8;j++)t[j] = reader.read8u(); + v[i] = caml_float_of_bytes(t)} + return v; + case 0x07: + var len=reader.read32u(),v=new Array(len + 1); + v[0] = 254; + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + var t=new Array(8); + for(var i=1;i <= len;i++) + {for(var j=0;j < 8;j++)t[7 - j] = reader.read8u(); + v[i] = caml_float_of_bytes(t)} + return v; + case 0x0F: + var len=reader.read32u(),v=new Array(len + 1); + v[0] = 254; + var t=new Array(8); + for(var i=1;i <= len;i++) + {for(var j=0;j < 8;j++)t[j] = reader.read8u(); + v[i] = caml_float_of_bytes(t)} + return v; + case 0x10: + case 0x11:caml_failwith("input_value: code pointer");break; + case 0x12: + case 0x18: + case 0x19: + var c,s=""; + while((c = reader.read8u()) != 0)s += String.fromCharCode(c); + var ops=caml_custom_ops[s],expected_size; + if(! ops) + caml_failwith("input_value: unknown custom block identifier"); + switch(code) + {case 0x12:break; + case 0x19: + if(! ops.fixed_length) + caml_failwith + ("input_value: expected a fixed-size custom block"); + expected_size = ops.fixed_length; + break; + case 0x18: + expected_size = reader.read32u(); + reader.read32s(); + reader.read32s(); + break + } + var old_pos=reader.i,size=[0],v=ops.deserialize(reader,size); + if(expected_size != undefined) + if(expected_size != size[0]) + caml_failwith + ("input_value: incorrect length of serialized custom block"); + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + return v; + default:caml_failwith("input_value: ill-formed message")}} + var res=intern_rec(); + while(stack.length > 0) + {var size=stack.pop(),v=stack.pop(),d=v.length; + if(d < size)stack.push(v,size); + v[d] = intern_rec()} + if(typeof ofs != "number")ofs[0] = reader.i; + return res} + function caml_string_of_bytes(s){return s} + function caml_input_value_from_bytes(s,ofs) + {var + reader= + new + MlStringReader + (caml_string_of_bytes(s),typeof ofs == "number"?ofs:ofs[0]); + return caml_input_value_from_reader(reader,ofs)} + function ml_z_mul(z1,z2) + {return ml_z_normalize(bigInt(z1).multiply(bigInt(z2)))} + function ml_z_hamdist(z1,z2) + {if(bigInt(z1).isNegative() != bigInt(z2).isNegative()) + caml_raise_constant(caml_named_value("ml_z_overflow")); + if + ((z1 != (z1 | 0) || z2 != (z2 | 0)) + && + (bigInt(z1).isNegative() || bigInt(z2).isNegative())) + caml_invalid_argument("Z.hamdist: negative arguments"); + return ml_z_popcount(bigInt(z1).xor(bigInt(z2)))} + function caml_string_get(s,i) + {if(i >>> 0 >= caml_ml_string_length(s))caml_string_bound_error(); + return caml_string_unsafe_get(s,i)} + var + re_match= + function() + {var + re_word_letters= + [0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xFF, + 0x03, + 0xFE, + 0xFF, + 0xFF, + 0x87, + 0xFE, + 0xFF, + 0xFF, + 0x07, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xFF, + 0xFF, + 0x7F, + 0xFF, + 0xFF, + 0xFF, + 0x7F, + 0xFF], + opcodes= + {CHAR:0, + CHARNORM:1, + STRING:2, + STRINGNORM:3, + CHARCLASS:4, + BOL:5, + EOL:6, + WORDBOUNDARY:7, + BEGGROUP:8, + ENDGROUP:9, + REFGROUP:10, + ACCEPT:11, + SIMPLEOPT:12, + SIMPLESTAR:13, + SIMPLEPLUS:14, + GOTO:15, + PUSHBACK:16, + SETMARK:17, + CHECKPROGRESS:18}; + function is_word_letter(c) + {return re_word_letters[c >> 3] >> (c & 7) & 1} + function in_bitset(s,i) + {return caml_string_get(s,i >> 3) >> (i & 7) & 1} + function re_match_impl(re,s,pos,partial) + {var + prog=caml_js_from_array(re[1]), + cpool=caml_js_from_array(re[2]), + normtable=caml_jsbytes_of_string(re[3]), + numgroups=re[4] | 0, + numregisters=re[5] | 0, + startchars=re[6] | 0, + s=caml_array_of_string(s), + pc=0, + quit=false, + stack=[], + groups=new Array(numgroups), + re_register=new Array(numregisters); + for(var i=0;i < groups.length;i++)groups[i] = {start:- 1,end:- 1}; + groups[0].start = pos; + function backtrack() + {while(stack.length) + {var item=stack.pop(); + if(item.undo) + item.undo.obj[item.undo.prop] = item.undo.value; + else + if(item.pos){pc = item.pos.pc;pos = item.pos.txt;return}} + quit = true} + function push(item){stack.push(item)} + function accept() + {groups[0].end = pos; + var result=new Array(1 + groups.length * 2); + result[0] = 0; + for(var i=0;i < groups.length;i++) + {var g=groups[i]; + if(g.start < 0 || g.end < 0)g.start = g.end = - 1; + result[2 * i + 1] = g.start; + result[2 * i + 1 + 1] = g.end} + return result} + function prefix_match() + {if(partial)return accept();else backtrack()} + while(! quit) + {var + op=prog[pc] & 0xff, + sarg=prog[pc] >> 8, + uarg=sarg & 0xff, + c=s[pos], + group; + pc++; + switch(op) + {case opcodes.CHAR: + if(pos === s.length){prefix_match();break} + if(c === uarg)pos++;else backtrack(); + break; + case opcodes.CHARNORM: + if(pos === s.length){prefix_match();break} + if(normtable.charCodeAt(c) === uarg)pos++;else backtrack(); + break; + case opcodes.STRING: + for + (var arg=caml_jsbytes_of_string(cpool[uarg]),i=0; + i + < + arg.length; + i++) + {if(pos === s.length){prefix_match();break} + if(c === arg.charCodeAt(i)) + c = s[++pos]; + else + {backtrack();break}} + break; + case opcodes.STRINGNORM: + for + (var arg=caml_jsbytes_of_string(cpool[uarg]),i=0; + i + < + arg.length; + i++) + {if(pos === s.length){prefix_match();break} + if(normtable.charCodeAt(c) === arg.charCodeAt(i)) + c = s[++pos]; + else + {backtrack();break}} + break; + case opcodes.CHARCLASS: + if(pos === s.length){prefix_match();break} + if(in_bitset(cpool[uarg],c))pos++;else backtrack(); + break; + case opcodes.BOL: + if(pos > 0 && s[pos - 1] != 10)backtrack();break; + case opcodes.EOL: + if(pos < s.length && s[pos] != 10)backtrack();break; + case opcodes.WORDBOUNDARY: + if(pos == 0) + {if(pos === s.length){prefix_match();break} + if(is_word_letter(s[0]))break; + backtrack()} + else + if(pos === s.length) + {if(is_word_letter(s[pos - 1]))break;backtrack()} + else + {if(is_word_letter(s[pos - 1]) != is_word_letter(s[pos])) + break; + backtrack()} + break; + case opcodes.BEGGROUP: + group = groups[uarg]; + push({undo:{obj:group,prop:"start",value:group.start}}); + group.start = pos; + break; + case opcodes.ENDGROUP: + group = groups[uarg]; + push({undo:{obj:group,prop:"end",value:group.end}}); + group.end = pos; + break; + case opcodes.REFGROUP: + group = groups[uarg]; + if(group.start < 0 || group.end < 0){backtrack();break} + for(var i=group.start;i < group.end;i++) + {if(pos === s.length){prefix_match();break} + if(s[i] != s[pos]){backtrack();break} + pos++} + break; + case opcodes.SIMPLEOPT:if(in_bitset(cpool[uarg],c))pos++;break; + case opcodes.SIMPLESTAR: + while(in_bitset(cpool[uarg],c))c = s[++pos];break; + case opcodes.SIMPLEPLUS: + if(pos === s.length){prefix_match();break} + if(in_bitset(cpool[uarg],c)) + do c = s[++pos];while(in_bitset(cpool[uarg],c)); + else + backtrack(); + break; + case opcodes.ACCEPT:return accept(); + case opcodes.GOTO:pc = pc + sarg;break; + case opcodes.PUSHBACK:push({pos:{pc:pc + sarg,txt:pos}});break; + case opcodes.SETMARK: + push + ({undo:{obj:re_register,prop:uarg,value:re_register[uarg]}}); + re_register[uarg] = pos; + break; + case opcodes.CHECKPROGRESS: + if(re_register[uarg] === pos)backtrack();break; + default:throw new Error("Invalid bytecode")}} + return 0} + return re_match_impl} + (); + function re_search_backward(re,s,pos) + {if(pos < 0 || pos > caml_ml_string_length(s)) + caml_invalid_argument("Str.search_backward"); + while(pos >= 0){var res=re_match(re,s,pos,0);if(res)return res;pos--} + return [0]} + function ml_z_logand(z1,z2) + {return ml_z_normalize(bigInt(z1).and(bigInt(z2)))} + function caml_js_from_string(s){return caml_jsstring_of_string(s)} + function caml_ba_sub(ba,ofs,len) + {var changed_dim,mul=1; + if(ba.layout == 0) + {for(var i=1;i < ba.dims.length;i++)mul = mul * ba.dims[i]; + changed_dim = 0} + else + {for(var i=0;i < ba.dims.length - 1;i++)mul = mul * ba.dims[i]; + changed_dim = ba.dims.length - 1; + ofs = ofs - 1} + if(ofs < 0 || len < 0 || ofs + len > ba.dims[changed_dim]) + caml_invalid_argument("Bigarray.sub: bad sub-array"); + var new_dims=[]; + for(var i=0;i < ba.dims.length;i++)new_dims[i] = ba.dims[i]; + new_dims[changed_dim] = len; + 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_bytes_set32(s,i,i32) + {if(i >>> 0 >= s.l - 3)caml_bytes_bound_error(); + var + b4=0xFF & i32 >> 24, + b3=0xFF & i32 >> 16, + b2=0xFF & i32 >> 8, + b1=0xFF & i32; + caml_bytes_unsafe_set(s,i + 0,b1); + caml_bytes_unsafe_set(s,i + 1,b2); + caml_bytes_unsafe_set(s,i + 2,b3); + caml_bytes_unsafe_set(s,i + 3,b4); + return 0} + function caml_gr_sigio_signal(){return 0} + function caml_ba_uint8_set32(ba,i0,v) + {var ofs=ba.offset(i0); + if(ofs + 3 >= ba.data.length)caml_array_bound_error(); + ba.set(ofs + 0,v & 0xff); + ba.set(ofs + 1,v >>> 8 & 0xff); + ba.set(ofs + 2,v >>> 16 & 0xff); + ba.set(ofs + 3,v >>> 24 & 0xff); + 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_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(); + s.line_width = w; + s.context.lineWidth = w; + return 0} + function caml_gr_set_font(f) + {var s=caml_gr_state_get(); + s.font = f; + s.context.font = s.text_size + "px " + caml_jsstring_of_string(s.font); + return 0} + function caml_gr_set_color(color) + {var s=caml_gr_state_get(); + function convert(number) + {var str="" + number.toString(16); + while(str.length < 2)str = "0" + str; + return str} + var r=color >> 16 & 0xff,g=color >> 8 & 0xff,b=color >> 0 & 0xff; + s.color = color; + var c_str="#" + convert(r) + convert(g) + convert(b); + s.context.fillStyle = c_str; + s.context.strokeStyle = c_str; + return 0} + function caml_gr_moveto(x,y) + {var s=caml_gr_state_get();s.x = x;s.y = y;return 0} + function caml_gr_resize_window(w,h) + {var s=caml_gr_state_get(); + s.width = w; + s.height = h; + s.canvas.width = w; + s.canvas.height = h; + return 0} + function caml_gr_state_init() + {caml_gr_moveto(caml_gr_state.x,caml_gr_state.y); + caml_gr_resize_window(caml_gr_state.width,caml_gr_state.height); + caml_gr_set_line_width(caml_gr_state.line_width); + caml_gr_set_text_size(caml_gr_state.text_size); + caml_gr_set_font(caml_gr_state.font); + caml_gr_set_color(caml_gr_state.color); + caml_gr_set_window_title(caml_gr_state.title); + 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) + kind = 0; + else + if(ta instanceof g.Float64Array) + kind = 1; + else + if(ta instanceof g.Int8Array) + kind = 2; + else + if(ta instanceof g.Uint8Array) + kind = 3; + else + if(ta instanceof g.Int16Array) + kind = 4; + else + if(ta instanceof g.Uint16Array) + kind = 5; + else + if(ta instanceof g.Int32Array) + kind = 6; + else + if(ta instanceof g.Uint32Array) + kind = 6; + else + caml_invalid_argument + ("caml_ba_kind_of_typed_array: unsupported kind"); + return kind} + 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_js_typeof(o){return typeof o} + function caml_restore_raw_backtrace(exn,bt){return 0} + function caml_gr_lineto(x,y) + {var s=caml_gr_state_get(); + s.context.beginPath(); + s.context.moveTo(s.x,s.height - s.y); + s.context.lineTo(x,s.height - y); + s.context.stroke(); + s.x = x; + s.y = y; + return 0} + function caml_js_wrap_meth_callback_unsafe(f) + {return function() + {var len=arguments.length,args=new Array(len + 1); + args[0] = this; + for(var i=0;i < len;i++)args[i + 1] = arguments[i]; + return f.apply(null,args)}} + function caml_ba_dim_3(ba){return caml_ba_dim(ba,2)} + function caml_is_special_exception(exn) + {switch(exn[2]){case - 8:case - 11:case - 12:return 1;default:return 0}} + function caml_format_exception(exn) + {var r=""; + if(exn[0] == 0) + {r += exn[1][1]; + if + (exn.length + == + 3 + && + exn[2][0] + == + 0 + && + caml_is_special_exception(exn[1])) + var bucket=exn[2],start=1; + else + var start=2,bucket=exn; + r += "("; + for(var i=start;i < bucket.length;i++) + {if(i > start)r += ", "; + var v=bucket[i]; + if(typeof v == "number") + r += v.toString(); + else + if(v instanceof MlBytes) + r += '"' + v.toString() + '"'; + else + if(typeof v == "string") + r += '"' + v.toString() + '"'; + else + r += "_"} + r += ")"} + else + if(exn[0] == 248)r += exn[1]; + return r} + function caml_fatal_uncaught_exception(err) + {if(err instanceof Array && (err[0] == 0 || err[0] == 248)) + {var handler=caml_named_value("Printexc.handle_uncaught_exception"); + if(handler) + handler(err,false); + else + {var + 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")}} + 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) + {if(i >>> 0 >= s.l - 1)caml_bytes_bound_error(); + var b1=caml_bytes_unsafe_get(s,i),b2=caml_bytes_unsafe_get(s,i + 1); + 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_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_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_atanh_float(x){return Math.atanh(x)} + 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)} + 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_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){}} + 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_array_append(a1,a2) + {var l1=a1.length,l2=a2.length,l=l1 + l2 - 1,a=new Array(l); + a[0] = 0; + var i=1,j=1; + for(;i < l1;i++)a[i] = a1[i]; + for(;i < l;i++,j++)a[i] = a2[j]; + return a} + function caml_ml_set_channel_refill(chanid,f) + {caml_ml_channels[chanid].refill = f;return 0} + function ml_z_nextprime(z1) + {z1 = bigInt(z1); + var one=bigInt(1),two=bigInt(2); + if(z1.lt(one) || z1.equals(one))return 2; + if(z1.and(one).equals(one))z1 = z1.add(two);else z1 = z1.add(one); + while(true) + if(z1.isProbablePrime(25)) + return ml_z_normalize(z1); + else + z1 = z1.add(two)} + function caml_js_expr(s) + {js_print_stderr("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) + {return ml_z_normalize(bigInt(z1).subtract(bigInt(z2)))} + function ml_z_fdiv(z1,z2) + {var z1_pos=ml_z_sign(z1),z2_pos=ml_z_sign(z2); + if(z1_pos * z2_pos < 0) + if(! bigInt(z1).mod(bigInt(z2)).equals(bigInt(0))) + return ml_z_sub(ml_z_div(z1,z2),bigInt(1)); + return ml_z_div(z1,z2)} + function ml_z_to_bits(z1) + {z1 = bigInt(z1).abs(); + var res=""; + while(! z1.equals(bigInt(0))) + {res += String.fromCharCode(z1.mod(bigInt(256))); + z1 = z1.divide(bigInt(256))} + while(res.length % 4 != 0)res += String.fromCharCode(0); + return caml_string_of_jsbytes(res)} + function caml_output_value_to_bytes(v,flags) + {return caml_bytes_of_array(caml_output_val(v,flags))} + function caml_eventlog_resume(unit){return 0} + function caml_hash_univ_param(count,limit,obj) + {var hash_accu=0; + function hash_aux(obj) + {limit--; + if(count < 0 || limit < 0)return; + if(obj instanceof Array && obj[0] === (obj[0] | 0)) + switch(obj[0]) + {case 248:count--;hash_accu = hash_accu * 65599 + obj[2] | 0;break; + case 250:limit++;hash_aux(obj);break; + default: + count--; + hash_accu = hash_accu * 19 + obj[0] | 0; + for(var i=obj.length - 1;i > 0;i--)hash_aux(obj[i])} + else + if(caml_is_ml_bytes(obj)) + {count--; + var content=caml_ml_bytes_content(obj); + if(typeof content === "string") + for(var b=content,l=b.length,i=0;i < l;i++) + hash_accu = hash_accu * 19 + b.charCodeAt(i) | 0; + else + for(var a=content,l=a.length,i=0;i < l;i++) + hash_accu = hash_accu * 19 + a[i] | 0} + else + if(caml_is_ml_string(obj)) + {var jsbytes=caml_jsbytes_of_string(obj); + for(var b=jsbytes,l=jsbytes.length,i=0;i < l;i++) + hash_accu = hash_accu * 19 + b.charCodeAt(i) | 0} + else + if(typeof obj === "string") + for(var b=obj,l=obj.length,i=0;i < l;i++) + hash_accu = hash_accu * 19 + b.charCodeAt(i) | 0; + else + if(obj === (obj | 0)) + {count--;hash_accu = hash_accu * 65599 + obj | 0} + else + if(obj === + obj) + {count--; + var p=caml_int64_to_bytes(caml_int64_bits_of_float(obj)); + for(var i=7;i >= 0;i--)hash_accu = hash_accu * 19 + p[i] | 0} + else + if(obj && obj.caml_custom) + if + (caml_custom_ops[obj.caml_custom] + && + caml_custom_ops[obj.caml_custom].hash) + {var h=caml_custom_ops[obj.caml_custom].hash(obj) | 0; + hash_accu = hash_accu * 65599 + h | 0}} + hash_aux(obj); + return hash_accu & 0x3FFFFFFF} + function caml_string_equal(s1,s2){return caml_bytes_equal(s1,s2)} + 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); + if(t.length > len)caml_failwith("Marshal.to_buffer: buffer overflow"); + caml_blit_bytes(t,0,s,ofs,t.length); + return 0} + function re_replacement_text(repl,groups,orig) + {var + repl=caml_jsbytes_of_string(repl), + len=repl.length, + orig=caml_jsbytes_of_string(orig), + res="", + n=0, + cur, + start, + end, + c; + while(n < len) + {cur = repl.charAt(n++); + if(cur != "\\") + res += cur; + else + {if(n == len) + caml_failwith("Str.replace: illegal backslash sequence"); + cur = repl.charAt(n++); + switch(cur) + {case "\\":res += cur;break; + case "0": + case "1": + case "2": + case "3": + case "4": + case "5": + case "6": + case "7": + case "8": + case "9": + c = + cur; + if(c * 2 >= groups.length - 1) + caml_failwith("Str.replace: reference to unmatched group"); + start = caml_array_get(groups,c * 2); + end = caml_array_get(groups,c * 2 + 1); + if(start == - 1) + caml_failwith("Str.replace: reference to unmatched group"); + res += orig.slice(start,end); + break; + 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"); + return eval(caml_jsstring_of_string(s))} + 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 + ("caml_bigstring_blit_string_to_ba: kind mismatch"); + if(len == 0)return 0; + var ofs1=ba1.offset(pos1); + if(ofs1 + len > ba1.data.length)caml_array_bound_error(); + if(pos2 + len > caml_ml_bytes_length(bytes2))caml_array_bound_error(); + var slice=ba1.data.slice(ofs1,ofs1 + len); + caml_blit_bytes(caml_bytes_of_array(slice),0,bytes2,pos2,len); + return 0} + 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) + {if(globalThis.jsoo_create_file) + globalThis.jsoo_create_file(name,content); + else + {if(! globalThis.caml_fs_tmp)globalThis.caml_fs_tmp = []; + globalThis.caml_fs_tmp.push({name:name,content:content})} + return 0} + 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 re_search_forward(re,s,pos) + {if(pos < 0 || pos > caml_ml_string_length(s)) + caml_invalid_argument("Str.search_forward"); + while(pos <= caml_ml_string_length(s)) + {var res=re_match(re,s,pos,0);if(res)return res;pos++} + return [0]} + var caml_blit_string_to_bigstring=caml_bigstring_blit_string_to_ba; + function caml_make_vect(len,init) + {if(len < 0)caml_array_bound_error(); + var len=len + 1 | 0,b=new Array(len); + 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_sys_read_directory(name) + {var + root=resolve_fs_device(name), + a=root.device.readdir(root.rest), + l=new Array(a.length + 1); + l[0] = 0; + for(var i=0;i < a.length;i++)l[i + 1] = caml_string_of_jsbytes(a[i]); + return l} + function caml_ml_output_char(chanid,c) + {var s=caml_string_of_jsbytes(String.fromCharCode(c)); + caml_ml_output(chanid,s,0,1); + 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 + ('caml_js_var: "' + + + x + + + '" is not a valid JavaScript variable. continuing ..'); + return eval(x)} + function caml_trunc_float(x){return Math.trunc(x)} + function caml_zarith_marshal(writer,v,sz) + {v = bigInt(v); + var bits=v.toArray(Math.pow(2,32)); + writer.write(8,bits.isNegative?1:0); + var block=bits.value.length,len=block * 4; + writer.write(32,len); + for(var i=block - 1;i >= 0;i--) + {writer.write(8,bits.value[i] >>> 0 & 0xff); + writer.write(8,bits.value[i] >>> 8 & 0xff); + writer.write(8,bits.value[i] >>> 16 & 0xff); + 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_blit_data(src,dst) + {dst[caml_ephe_data_offset] = src[caml_ephe_data_offset];return 0} + function caml_is_printable(c){return + (c > 31 && c < 127)} + 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)) + caml_invalid_argument("Str.partial_match"); + var res=re_match(re,s,pos,1); + return res?res:[0]} + function caml_sys_random_seed() + {if(globalThis.crypto) + if(typeof globalThis.crypto.getRandomValues === "function") + {var a=new (globalThis.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); + 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} + 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_js_delete(o,f){delete o[f];return 0} + function caml_int_of_string(s) + {var + r=caml_parse_sign_and_base(s), + i=r[0], + sign=r[1], + base=r[2], + len=caml_ml_string_length(s), + threshold=- 1 >>> 0, + c=i < len?caml_string_unsafe_get(s,i):0, + d=caml_parse_digit(c); + if(d < 0 || d >= base)caml_failwith("int_of_string"); + var res=d; + for(i++;i < len;i++) + {c = caml_string_unsafe_get(s,i); + if(c == 95)continue; + d = caml_parse_digit(c); + if(d < 0 || d >= base)break; + res = base * res + d; + if(res > threshold)caml_failwith("int_of_string")} + if(i != len)caml_failwith("int_of_string"); + res = sign * res; + if(base == 10 && (res | 0) != res)caml_failwith("int_of_string"); + return res | 0} + function caml_list_mount_point() + {var prev=0; + for(var i=0;i < jsoo_mount_point.length;i++) + {var old=prev; + prev = [0,caml_string_of_jsbytes(jsoo_mount_point[i].path),old]} + return prev} + var + caml_marshal_constants= + {PREFIX_SMALL_BLOCK:0x80, + PREFIX_SMALL_INT:0x40, + PREFIX_SMALL_STRING:0x20, + CODE_INT8:0x00, + CODE_INT16:0x01, + CODE_INT32:0x02, + CODE_INT64:0x03, + CODE_SHARED8:0x04, + CODE_SHARED16:0x05, + CODE_SHARED32:0x06, + CODE_BLOCK32:0x08, + CODE_BLOCK64:0x13, + CODE_STRING8:0x09, + CODE_STRING32:0x0A, + CODE_DOUBLE_BIG:0x0B, + CODE_DOUBLE_LITTLE:0x0C, + CODE_DOUBLE_ARRAY8_BIG:0x0D, + CODE_DOUBLE_ARRAY8_LITTLE:0x0E, + CODE_DOUBLE_ARRAY32_BIG:0x0F, + CODE_DOUBLE_ARRAY32_LITTLE:0x07, + CODE_CODEPOINTER:0x10, + CODE_INFIXPOINTER:0x11, + CODE_CUSTOM:0x12, + CODE_CUSTOM_LEN:0x18, + 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 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) + {while(a1 > a2)a2 += 360; + a1 /= 180; + a2 /= 180; + var + rot=0, + xPos, + yPos, + xPos_prev, + yPos_prev, + space=2, + num=(a2 - a1) * Math.PI * ((rx + ry) / 2) / space | 0, + delta=(a2 - a1) * Math.PI / num, + i=a1 * Math.PI; + for(var j=0;j <= num;j++) + {xPos + = + cx + - + rx + * + Math.sin(i) + * + Math.sin(rot * Math.PI) + + + ry + * + Math.cos(i) + * + Math.cos(rot * Math.PI); + xPos = xPos.toFixed(2); + yPos + = + cy + + + ry + * + Math.cos(i) + * + Math.sin(rot * Math.PI) + + + rx + * + Math.sin(i) + * + Math.cos(rot * Math.PI); + yPos = yPos.toFixed(2); + if(j == 0) + ctx.moveTo(xPos,yPos); + else + if(xPos_prev != xPos || yPos_prev != yPos)ctx.lineTo(xPos,yPos); + xPos_prev = xPos; + yPos_prev = yPos; + i -= delta} + return 0} + function caml_gr_fill_arc(x,y,rx,ry,a1,a2) + {var s=caml_gr_state_get(); + s.context.beginPath(); + caml_gr_arc_aux(s.context,x,s.height - y,rx,ry,a1,a2); + s.context.fill(); + return 0} + function caml_ba_slice(ba,vind) + {vind = caml_js_from_array(vind); + var num_inds=vind.length,index=[],sub_dims=[],ofs; + if(num_inds > ba.dims.length) + caml_invalid_argument("Bigarray.slice: too many indices"); + if(ba.layout == 0) + {for(var i=0;i < num_inds;i++)index[i] = vind[i]; + for(;i < ba.dims.length;i++)index[i] = 0; + sub_dims = ba.dims.slice(num_inds)} + else + {for(var i=0;i < num_inds;i++) + index[ba.dims.length - num_inds + i] = vind[i]; + for(var i=0;i < ba.dims.length - num_inds;i++)index[i] = 1; + sub_dims = ba.dims.slice(0,ba.dims.length - num_inds)} + ofs = ba.offset(index); + var + size=caml_ba_get_size(sub_dims), + size_per_element=caml_ba_get_size_per_element(ba.kind), + new_data= + ba.data.subarray + (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) + {case 1:return f(); + case 2:return f(a[1]); + case 3:return f(a[1],a[2]); + case 4:return f(a[1],a[2],a[3]); + case 5:return f(a[1],a[2],a[3],a[4]); + case 6:return f(a[1],a[2],a[3],a[4],a[5]); + case 7:return f(a[1],a[2],a[3],a[4],a[5],a[6]); + case 8:return f(a[1],a[2],a[3],a[4],a[5],a[6],a[7]) + } + return f.apply(null,caml_js_from_array(a))} + function caml_gc_major_slice(work){return 0} + function ml_z_invert(a,n) + {a = bigInt(a); + n = bigInt(n); + var zero=bigInt(0),one=bigInt(1); + if(n.abs().equals(one))return 0; + if(n.equals(zero) && a.abs().equals(one))return a; + if(n.equals(zero) || a.equals(zero))caml_raise_zero_divide(); + var + x=ml_z_gcdext_intern(a,n), + r=bigInt(x[2]), + tmp=bigInt(a).multiply(r).mod(n); + if(tmp.lt(zero))tmp = tmp.add(n.abs()); + if(r.lt(zero))r = r.add(n.abs()); + if(tmp.equals(one))return ml_z_normalize(r); + caml_raise_zero_divide()} + function ml_z_powm(z1,z2,z3) + {var zero=bigInt(0),one=bigInt(1); + z1 = bigInt(z1); + z2 = bigInt(z2); + z3 = bigInt(z3); + if(z3.equals(zero))caml_raise_zero_divide(); + if(z3.abs().equals(one))return 0; + if(z2.equals(zero))return 1; + if(z2.lt(0)) + {var inv=bigInt(ml_z_invert(z1,z3)),r=inv.modPow(z2.negate(),z3); + if(r.lt(zero))r = r.add(z3.abs()); + return ml_z_normalize(r)} + else + {var r=bigInt(z1).modPow(z2,z3); + if(r.lt(zero))r = r.add(z3.abs()); + return ml_z_normalize(r)}} + function ml_z_powm_sec(z1,z2,z3) + {z3 = bigInt(z3).abs(); + var one=bigInt(1); + if(bigInt(z2).lt(one)) + caml_invalid_argument("Z.powm_sec: exponent must be positive"); + if(! bigInt(z3).and(one).equals(one)) + caml_invalid_argument("Z.powm_sec: modulus must be odd"); + return ml_z_powm(z1,z2,z3)} + function caml_js_pure_expr(f){return f()} + function compare_digits_nat(nat1,ofs1,nat2,ofs2) + {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_gr_wait_event(_evl) + {caml_failwith + ("caml_gr_wait_event not Implemented: use Graphics_js instead")} + function caml_gr_sigio_handler(){return 0} + 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_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_ml_out_channels_list() + {var l=0; + for(var c=0;c < caml_ml_channels.length;c++) + if + (caml_ml_channels[c] + && + caml_ml_channels[c].opened + && + caml_ml_channels[c].out) + l = [0,caml_ml_channels[c].fd,l]; + return l} + function caml_asinh_float(x){return Math.asinh(x)} + function ml_z_hash(z1) + {var a=bigInt(z1).toArray(Math.pow(2,32)),acc=0; + for(var i=0;i < a.value.length;i++) + acc = caml_hash_mix_int(acc,a.value[i]); + if(a.value.length % 2 != 0)acc = caml_hash_mix_int(acc,0); + if(a.isNegative)acc = acc + 1; + return acc | 0} + function bigstring_of_array_buffer(ab) + {var ta=new (globalThis.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 re_string_match(re,s,pos) + {if(pos < 0 || pos > caml_ml_string_length(s)) + caml_invalid_argument("Str.string_match"); + var res=re_match(re,s,pos,0); + return res?res:[0]} + function BigStringReader(bs,i){this.s = bs;this.i = i} + BigStringReader.prototype + = + {read8u:function(){return caml_ba_get_1(this.s,this.i++)}, + read8s:function(){return caml_ba_get_1(this.s,this.i++) << 24 >> 24}, + read16u: + function() + {var s=this.s,i=this.i; + this.i = i + 2; + return caml_ba_get_1(s,i) << 8 | caml_ba_get_1(s,i + 1)}, + read16s: + function() + {var s=this.s,i=this.i; + this.i = i + 2; + return caml_ba_get_1(s,i) << 24 >> 16 | caml_ba_get_1(s,i + 1)}, + read32u: + function() + {var s=this.s,i=this.i; + this.i = i + 4; + return (caml_ba_get_1(s,i) + << + 24 + | + caml_ba_get_1(s,i + 1) + << + 16 + | + caml_ba_get_1(s,i + 2) + << + 8 + | + caml_ba_get_1(s,i + 3)) + >>> + 0}, + read32s: + function() + {var s=this.s,i=this.i; + this.i = i + 4; + return caml_ba_get_1(s,i) + << + 24 + | + caml_ba_get_1(s,i + 1) + << + 16 + | + caml_ba_get_1(s,i + 2) + << + 8 + | + caml_ba_get_1(s,i + 3)}, + readstr: + function(len) + {var i=this.i,arr=new Array(len); + for(var j=0;j < len;j++)arr[j] = caml_ba_get_1(this.s,i + j); + this.i = i + len; + return caml_string_of_array(arr)}}; + function caml_gr_dump_image(im) + {var data=[0]; + for(var i=0;i < im.height;i++) + {data[i + 1] = [0]; + for(var j=0;j < im.width;j++) + {var + o=i * (im.width * 4) + j * 4, + r=im.data[o + 0], + g=im.data[o + 1], + b=im.data[o + 2]; + data[i + 1][j + 1] = (r << 16) + (g << 8) + b}} + return data} + function caml_ba_get_generic(ba,i) + {var ofs=ba.offset(caml_js_from_array(i));return ba.get(ofs)} + function caml_get_exception_backtrace(){return 0} + function caml_format_float(fmt,x) + {function toFixed(x,dp) + {if(Math.abs(x) < 1.0) + return x.toFixed(dp); + else + {var e=parseInt(x.toString().split("+")[1]); + if(e > 20) + {e -= 20; + x /= Math.pow(10,e); + x += new Array(e + 1).join("0"); + if(dp > 0)x = x + "." + new Array(dp + 1).join("0"); + return x} + else + return x.toFixed(dp)}} + var s,f=caml_parse_format(fmt),prec=f.prec < 0?6:f.prec; + if(x < 0 || x == 0 && 1 / x == - Infinity){f.sign = - 1;x = - x} + if(isNaN(x)) + {s = "nan";f.filler = " "} + else + if(! isFinite(x)) + {s = "inf";f.filler = " "} + else + switch(f.conv) + {case "e": + var s=x.toExponential(prec),i=s.length; + if(s.charAt(i - 3) == "e") + s = s.slice(0,i - 1) + "0" + s.slice(i - 1); + break; + case "f":s = toFixed(x,prec);break; + case "g": + prec = prec?prec:1; + s = x.toExponential(prec - 1); + var j=s.indexOf("e"),exp=+ s.slice(j + 1); + if(exp < - 4 || x >= 1e21 || x.toFixed(0).length > prec) + {var i=j - 1; + while(s.charAt(i) == "0")i--; + if(s.charAt(i) == ".")i--; + s = s.slice(0,i + 1) + s.slice(j); + i = s.length; + if(s.charAt(i - 3) == "e") + s = s.slice(0,i - 1) + "0" + s.slice(i - 1); + break} + else + {var p=prec; + if(exp < 0) + {p -= exp + 1;s = x.toFixed(p)} + else + while(s = x.toFixed(p),s.length > prec + 1)p--; + if(p) + {var i=s.length - 1; + while(s.charAt(i) == "0")i--; + if(s.charAt(i) == ".")i--; + s = s.slice(0,i + 1)}} + break + } + return caml_finish_formatting(f,s)} + function caml_mount_autoload(name,f) + {var path=caml_make_path(name),name=caml_trailing_slash(path.join("/")); + jsoo_mount_point.push({path:name,device:new MlFakeDevice(name,f)}); + return 0} + function ml_z_equal(z1,z2){return bigInt(z1).equals(bigInt(z2))?1:0} + function ml_z_fits_int64(z1) + {z1 = bigInt(z1); + return z1.compare(bigInt("9223372036854775807")) + <= + 0 + && + z1.compare(bigInt("-9223372036854775808")) + >= + 0 + ?1 + :0} + function caml_bigstring_blit_ba_to_ba(ba1,pos1,ba2,pos2,len) + {if(12 != ba1.kind) + caml_invalid_argument("caml_bigstring_blit_ba_to_ba: kind mismatch"); + if(12 != ba2.kind) + caml_invalid_argument("caml_bigstring_blit_ba_to_ba: kind mismatch"); + if(len == 0)return 0; + var ofs1=ba1.offset(pos1),ofs2=ba2.offset(pos2); + if(ofs1 + len > ba1.data.length)caml_array_bound_error(); + if(ofs2 + len > ba2.data.length)caml_array_bound_error(); + var slice=ba1.data.subarray(ofs1,ofs1 + len); + ba2.data.set(slice,pos2); + return 0} + var caml_blit_bigstring_to_bigstring=caml_bigstring_blit_ba_to_ba; + function ml_z_sqrt_rem(z) + {z = bigInt(z); + var zero=bigInt(0); + if(z.lt(zero)) + caml_invalid_argument("Z.sqrt_rem: square root of a negative number"); + var + root=bigInt(ml_z_root(z,2)), + mul=root.multiply(root), + diff=z.subtract(mul); + return [0,ml_z_normalize(root),ml_z_normalize(diff)]} + function caml_string_lessthan(s1,s2){return caml_bytes_lessthan(s1,s2)} + function caml_string_greaterthan(s1,s2) + {return caml_string_lessthan(s2,s1)} + function caml_div(x,y) + {if(y == 0)caml_raise_zero_divide();return x / y | 0} + function caml_ephe_get_data_copy(x) + {return x[caml_ephe_data_offset] === undefined + ?0 + :[0,caml_obj_dup(x[caml_ephe_data_offset])]} + function caml_memprof_start(rate,stack_size,tracker){return 0} + function ml_z_perfect_square(z) + {z = bigInt(z); + if(z.lt(bigInt(0)))return 0; + 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_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_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)} + function caml_register_global(n,v,name_opt) + {if(name_opt && globalThis.toplevelReloc) + n = globalThis.toplevelReloc(name_opt); + caml_global_data[n + 1] = v; + if(name_opt)caml_global_data[name_opt] = v} + function mult_nat(nat1,ofs1,len1,nat2,ofs2,len2,nat3,ofs3,len3) + {var carry=0; + for(var i=0;i < len3;i++) + carry + += + mult_digit_nat(nat1,ofs1 + i,len1 - i,nat2,ofs2,len2,nat3,ofs3 + i); + return carry} + function square_nat(nat1,ofs1,len1,nat2,ofs2,len2) + {var carry=0; + carry += add_nat(nat1,ofs1,len1,nat1,ofs1,len1,0); + carry += mult_nat(nat1,ofs1,len1,nat2,ofs2,len2,nat2,ofs2,len2); + return carry} + function caml_js_from_float(x){return x} + function caml_floatarray_create(len) + {if(len < 0)caml_array_bound_error(); + var len=len + 1 | 0,b=new Array(len); + b[0] = 254; + for(var i=1;i < len;i++)b[i] = 0; + return b} + function caml_gc_stat(){return [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} + function caml_get_major_credit(n){return 0} + function caml_sys_modify_argv(arg){caml_argv = arg;return 0} + var caml_method_cache=[]; + function caml_get_public_method(obj,tag,cacheid) + {var meths=obj[1],ofs=caml_method_cache[cacheid]; + if(ofs === undefined) + for(var i=caml_method_cache.length;i < cacheid;i++) + caml_method_cache[i] = 0; + else + if(meths[ofs] === tag)return meths[ofs - 1]; + var li=3,hi=meths[1] * 2 + 1,mi; + while(li < hi) + {mi = li + hi >> 1 | 1;if(tag < meths[mi + 1])hi = mi - 2;else li = mi} + caml_method_cache[cacheid] = li + 1; + return tag == meths[li + 1]?meths[li]:0} + function caml_js_get_console() + {var + c=globalThis.console?globalThis.console:{}, + m= + ["log", + "debug", + "info", + "warn", + "error", + "assert", + "dir", + "dirxml", + "trace", + "group", + "groupCollapsed", + "groupEnd", + "time", + "timeEnd"]; + function f(){} + for(var i=0;i < m.length;i++)if(! c[m[i]])c[m[i]] = f; + 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 + channel= + {file:data.file, + offset:data.offset, + fd:fd, + opened:true, + out:false, + refill:refill}; + caml_ml_channels[channel.fd] = channel; + return channel.fd} + function bigstring_of_typed_array(ba) + {var + ta= + new + (globalThis.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)} + function ml_z_of_bits(z1) + {var r=bigInt.zero,base1=bigInt(256),base=bigInt.one; + for(var i=0;i < caml_ml_string_length(z1);i++) + {var d=caml_string_unsafe_get(z1,i); + 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(); + case 1:return new c(a[0]); + case 2:return new c(a[0],a[1]); + case 3:return new c(a[0],a[1],a[2]); + case 4:return new c(a[0],a[1],a[2],a[3]); + case 5:return new c(a[0],a[1],a[2],a[3],a[4]); + case 6:return new c(a[0],a[1],a[2],a[3],a[4],a[5]); + case 7:return new c(a[0],a[1],a[2],a[3],a[4],a[5],a[6]) + } + function F(){return c.apply(this,a)} + F.prototype = c.prototype; + return new F()} + function complement_nat(nat,ofs,len) + {for(var i=0;i < len;i++) + 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_js_regexps={amp:/&/g,lt:/ 1023) + {exp -= 1023; + x *= Math.pow(2,1023); + if(exp > 1023){exp -= 1023;x *= Math.pow(2,1023)}} + if(exp < - 1023){exp += 1023;x *= Math.pow(2,- 1023)} + x *= Math.pow(2,exp); + return x} + function caml_gr_state_set(ctx) + {caml_gr_state = ctx;caml_gr_state_init();return 0} + function caml_zarith_unmarshal(reader,sz) + {var negate; + switch(reader.read8u()) + {case 1:negate = true;break; + case 0:negate = false;break; + default:caml_failwith("input_value: z (malformed input)")} + var len=reader.read32u(),x=bigInt(0); + for(var i=0;i < len / 4;i++) + {var y=bigInt(reader.read8u()); + y = y.add(reader.read8u() << 8); + y = y.add(reader.read8u() << 16); + y = y.add(reader.read8u() << 24 >>> 0); + x = y.shiftLeft(i * 32).add(x)} + if(negate)x = x.negate(); + sz[0] = len + 4; + return ml_z_normalize(x)} + function ml_z_trailing_zeros(z) + {z = bigInt(z).abs(); + var zero=bigInt(0),one=bigInt(1); + if(z.equals(zero))return 0x7fffffff; + var i=0; + z = z.xor(z.prev()).shiftRight(1); + for(i = 0;! z.equals(bigInt.zero);i++)z = z.shiftRight(1); + return i} + function caml_js_wrap_callback_strict(arity,f) + {return function() + {var n=arguments.length; + if(n == arity && f.length == arity)return f.apply(null,arguments); + var args=new Array(arity),len=Math.min(arguments.length,arity); + for(var i=0;i < len;i++)args[i] = arguments[i]; + return caml_call_gen(f,args)}} + function caml_gc_minor_words(unit){return 0} + function caml_ba_set_1(ba,i0,v){ba.set(ba.offset(i0),v);return 0} + function caml_get_current_callstack(){return [0]} + function land_digit_nat(nat1,ofs1,nat2,ofs2) + {nat1.data[ofs1] &= nat2.data[ofs2];return 0} + function caml_int64_mod(x,y){return x.mod(y)} + function unix_readlink(name) + {var root=resolve_fs_device(name); + if(! root.device.readlink) + caml_failwith("unix_readlink: not implemented"); + return root.device.readlink(root.rest,true)} + function caml_obj_set_tag(x,tag){x[0] = tag;return 0} + function caml_int32_bswap(x) + {return (x & 0x000000FF) + << + 24 + | + (x & 0x0000FF00) + << + 8 + | + (x & 0x00FF0000) + >>> + 8 + | + (x & 0xFF000000) + >>> + 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) + {n = bigInt(n); + k = bigInt(k); + if(k.leq(bigInt(0)) || k.mod(bigInt(2)).neq(bigInt(1))) + caml_invalid_argument("Z.jacobi: second argument is negative or even"); + n = n.mod(k); + if(n.lt(bigInt(0)))n = n.add(k); + var t=1; + while(! n.equals(bigInt(0))) + {while(n.isDivisibleBy(bigInt(2))) + {n = n.divide(bigInt(2)); + var r=k.mod(bigInt(8)); + if(r.equals(bigInt(3)) || r.equals(bigInt(5)))t = - t} + var n1=n,k1=k; + n = k1; + k = n1; + if + (n.mod(bigInt(4)).equals(bigInt(3)) + && + k.mod(bigInt(4)).equals(bigInt(3))) + t = - t; + n = n.mod(k)} + return k.equals(bigInt(1))?t:0} + function ml_z_legendre(a,b){return ml_z_jacobi(a,b)} + function caml_js_instanceof(o,c){return o instanceof c?1:0} + function caml_get_major_bucket(n){return 0} + var caml_blit_bigstring_to_string=caml_bigstring_blit_ba_to_bytes; + function set_digit_nat_native(nat,ofs,digit) + {nat.data[ofs] = digit;return 0} + function nth_digit_nat_native(nat,ofs){return nat.data[ofs]} + function caml_string_set64(s,i,i64){return caml_bytes_set64(s,i,i64)} + function caml_gr_state_create(canvas,w,h) + {var context=canvas.getContext("2d"); + return {context:context, + canvas:canvas, + x:0, + y:0, + width:w, + height:h, + line_width:1, + font:caml_string_of_jsbytes("fixed"), + text_size:26, + color:0x000000, + title:caml_string_of_jsbytes("")}} + function caml_js_wrap_callback(f) + {return function() + {var len=arguments.length; + if(len > 0) + {var args=new Array(len); + for(var i=0;i < len;i++)args[i] = arguments[i]; + return caml_call_gen(f,args)} + else + return caml_call_gen(f,[undefined])}} + function caml_gr_draw_arc(x,y,rx,ry,a1,a2) + {var s=caml_gr_state_get(); + s.context.beginPath(); + caml_gr_arc_aux(s.context,x,s.height - y,rx,ry,a1,a2); + s.context.stroke(); + return 0} + function caml_ba_map_file(vfd,kind,layout,shared,dims,pos) + {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 + ("caml_ba_create_from: use return caml_ba_create_unsafe"); + return caml_ba_create_unsafe(kind,layout,dims,data1)} + function caml_tanh_float(x){return Math.tanh(x)} + function caml_gr_draw_str(str) + {var s=caml_gr_state_get(),m=s.context.measureText(str),dx=m.width; + s.context.fillText(str,s.x,s.height - s.y); + s.x += dx | 0; + return 0} + function caml_gr_draw_string(str) + {caml_gr_draw_str(caml_jsstring_of_string(str));return 0} + function ml_z_primorial(a) + {var one=bigInt(1),two=bigInt(2),z1=one,res=one; + a = bigInt(a); + while(z1.leq(a)) + {if(z1.isProbablePrime(25))res = res.multiply(z1); + if(z1.equals(one) || z1.equals(two)) + z1 = z1.add(one); + else + z1 = z1.add(two)} + return ml_z_normalize(res)} + function caml_gr_draw_char(c) + {caml_gr_draw_str(String.fromCharCode(c));return 0} + function caml_unmount(name) + {var + path=caml_make_path(name), + name=caml_trailing_slash(path.join("/")), + idx=- 1; + for(var i=0;i < jsoo_mount_point.length;i++) + if(jsoo_mount_point[i].path == name)idx = i; + if(idx > - 1)jsoo_mount_point.splice(idx,1); + return 0} + function ml_z_fib(i) + {if(i < 0)caml_invalid_argument("Z.fib: negative arguments"); + if(i == 0 || i == 1)return i; + var a=bigInt(0),b=bigInt(1); + for(var k=1;k < i;k++){var b2=b;b = a.add(b);a = b2} + return ml_z_normalize(b)} + function caml_input_value_from_string(s,ofs) + {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)} + function caml_gr_draw_image(im,x,y) + {var s=caml_gr_state_get(); + if(! im.image) + {var canvas=document.createElement("canvas"); + canvas.width = s.width; + canvas.height = s.height; + canvas.getContext("2d").putImageData(im,0,0); + var image=new (globalThis.Image)(); + image.onload + = + function() + {s.context.drawImage(image,x,s.height - im.height - y); + im.image = image}; + image.src = canvas.toDataURL("image/png")} + else + s.context.drawImage(im.image,x,s.height - im.height - y); + return 0} + function caml_register_channel_for_spacetime(_channel){return 0} + function caml_string_set(s,i,c) + {if(i >>> 0 >= s.l)caml_string_bound_error(); + 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_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("")} + function caml_js_object(a) + {var o={}; + for(var i=1;i < a.length;i++) + {var p=a[i];o[caml_jsstring_of_string(p[1])] = p[2]} + return o} + function caml_ba_create(kind,layout,dims_ml) + {var + 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) + {var + SPLIT=Math.pow(2,27) + 1, + MIN_VALUE=Math.pow(2,- 1022), + EPSILON=Math.pow(2,- 52), + C=416, + A=Math.pow(2,+ C), + B=Math.pow(2,- C); + function multiply(a,b) + {var + at=SPLIT * a, + ahi=at - (at - a), + alo=a - ahi, + bt=SPLIT * b, + bhi=bt - (bt - b), + blo=b - bhi, + p=a * b, + e=ahi * bhi - p + ahi * blo + alo * bhi + alo * blo; + return {p:p,e:e}} + function add(a,b) + {var s=a + b,v=s - a,e=a - (s - v) + (b - v);return {s:s,e:e}} + function adjust(x,y) + {return x !== 0 && y !== 0 && SPLIT * x - (SPLIT * x - x) === x + ?x * (1 + (x < 0?- 1:+ 1) * (y < 0?- 1:+ 1) * EPSILON) + :x} + if + (x + === + 0 + || + x + !== + x + || + x + === + + + (1 / 0) + || + x + === + - + (1 / 0) + || + y + === + 0 + || + y + !== + y + || + y + === + + + (1 / 0) + || + y + === + - + (1 / 0)) + return x * y + z; + if(z === 0)return x * y; + if(z !== z || z === + (1 / 0) || z === - (1 / 0))return z; + var scale=1; + while(Math.abs(x) > A){scale *= A;x *= B} + while(Math.abs(y) > A){scale *= A;y *= B} + if(scale === 1 / 0)return x * y * scale; + while(Math.abs(x) < B){scale *= B;x *= A} + while(Math.abs(y) < B){scale *= B;y *= A} + if(scale === 0)return z; + var xs=x,ys=y,zs=z / scale; + if(Math.abs(zs) > Math.abs(xs * ys) * 4 / EPSILON)return z; + if(Math.abs(zs) < Math.abs(xs * ys) * EPSILON / 4 * EPSILON / 4) + zs = (z < 0?- 1:+ 1) * MIN_VALUE; + var + xy=multiply(xs,ys), + s=add(xy.p,zs), + u=add(xy.e,s.e), + i=add(s.s,u.s), + f=i.s + adjust(i.e,u.e); + if(f === 0)return f; + var fs=f * scale; + if(Math.abs(fs) > MIN_VALUE)return fs; + return fs + adjust(f - fs / scale,i.e) * scale} + 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; + return 0} + function caml_final_register(){return 0} + function caml_gr_draw_rect(x,y,w,h) + {var s=caml_gr_state_get(); + s.context.strokeRect(x,s.height - y,w,- h); + return 0} + function caml_string_get16(s,i) + {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 ml_z_to_int32(z1){return ml_z_to_int(z1)} + var caml_initial_time=new Date().getTime() * 0.001; + function caml_sys_time() + {var now=new Date().getTime();return now * 0.001 - caml_initial_time} + function caml_sys_time_include_children(b){return caml_sys_time()} + 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 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; + if(sz < 0 || sz > 256)sz = 256; + num = count; + h = seed; + queue = [obj]; + rd = 0; + wr = 1; + while(rd < wr && num > 0) + {v = queue[rd++]; + if(v && v.caml_custom) + {if + (caml_custom_ops[v.caml_custom] + && + caml_custom_ops[v.caml_custom].hash) + {var hh=caml_custom_ops[v.caml_custom].hash(v); + h = caml_hash_mix_int(h,hh); + num--}} + else + if(v instanceof Array && v[0] === (v[0] | 0)) + switch(v[0]) + {case 248:h = caml_hash_mix_int(h,v[2]);num--;break; + case 250:queue[--rd] = v[1];break; + default: + var tag=v.length - 1 << 10 | v[0]; + h = caml_hash_mix_int(h,tag); + for(i = 1,len = v.length;i < len;i++) + {if(wr >= sz)break;queue[wr++] = v[i]} + break} + else + if(caml_is_ml_bytes(v)) + {h = caml_hash_mix_bytes(h,v);num--} + else + if(caml_is_ml_string(v)) + {h = caml_hash_mix_string(h,v);num--} + else + if(typeof v === "string") + {h = caml_hash_mix_jsbytes(h,v);num--} + else + if(v === (v | 0)) + {h = caml_hash_mix_int(h,v + v + 1);num--} + else + 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_bytes_get32(s,i) + {if(i >>> 0 >= s.l - 3)caml_bytes_bound_error(); + var + b1=caml_bytes_unsafe_get(s,i), + b2=caml_bytes_unsafe_get(s,i + 1), + b3=caml_bytes_unsafe_get(s,i + 2), + b4=caml_bytes_unsafe_get(s,i + 3); + return b4 << 24 | b3 << 16 | b2 << 8 | b1} + function caml_frexp_float(x) + {if(x == 0 || ! isFinite(x))return [0,x,0]; + var neg=x < 0; + if(neg)x = - x; + var exp=Math.max(- 1023,jsoo_floor_log2(x) + 1); + x *= Math.pow(2,- exp); + while(x < 0.5){x *= 2;exp--} + while(x >= 1){x *= 0.5;exp++} + if(neg)x = - x; + return [0,x,exp]} + function ml_z_pred(z1){return ml_z_normalize(bigInt(z1).prev())} + function caml_string_get64(s,i) + {if(i >>> 0 >= caml_ml_string_length(s) - 7)caml_string_bound_error(); + var a=new Array(8); + for(var j=0;j < 8;j++)a[7 - j] = caml_string_unsafe_get(s,i + j); + return caml_int64_of_bytes(a)} + 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)} + function ml_z_extract(z1,pos,len) + {z1 = bigInt(z1); + return ml_z_normalize + (z1.shiftRight(pos).and(bigInt(2).pow(len).subtract(1)))} + function ml_z_remove(a,b) + {var zero=bigInt(0),one=bigInt(1); + a = bigInt(a); + b = bigInt(b); + if(b.equals(zero))caml_raise_zero_divide(); + if(a.equals(zero) || b.abs().equals(one))return [0,a,0]; + var i=0; + while(a.isDivisibleBy(b)){a = a.divide(b);i++} + return [0,ml_z_normalize(a),i]} + function ml_z_of_float(f1) + {if(f1 == Infinity || f1 == - Infinity || f1 != f1) + 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_gr_close_subwindow(a) + {caml_failwith("caml_gr_close_subwindow not Implemented")} + function caml_floatarray_blit(a1,i1,a2,i2,len) + {if(i2 <= i1) + for(var j=1;j <= len;j++)a2[i2 + j] = a1[i1 + j]; + else + for(var j=len;j >= 1;j--)a2[i2 + j] = a1[i1 + j]; + return 0} + function caml_get_minor_free(unit){return 0} + function caml_set_static_env(k,v) + {if(! globalThis.jsoo_static_env)globalThis.jsoo_static_env = {}; + globalThis.jsoo_static_env[k] = v; + return 0} + function caml_ba_change_layout(ba,layout) + {if(ba.layout == layout)return ba; + var new_dims=[]; + for(var i=0;i < ba.dims.length;i++) + new_dims[i] = ba.dims[ba.dims.length - i - 1]; + return caml_ba_create_unsafe(ba.kind,layout,new_dims,ba.data)} + function caml_js_new(c,a) + {switch(a.length) + {case 1:return new c(); + case 2:return new c(a[1]); + case 3:return new c(a[1],a[2]); + case 4:return new c(a[1],a[2],a[3]); + case 5:return new c(a[1],a[2],a[3],a[4]); + case 6:return new c(a[1],a[2],a[3],a[4],a[5]); + case 7:return new c(a[1],a[2],a[3],a[4],a[5],a[6]); + case 8:return new c(a[1],a[2],a[3],a[4],a[5],a[6],a[7]) + } + 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") + return caml_string_of_jsbytes("" + i); + var f=caml_parse_format(fmt); + if(i < 0)if(f.signedconv){f.sign = - 1;i = - i}else i >>>= 0; + var s=i.toString(f.base); + if(f.prec >= 0) + {f.filler = " "; + var n=f.prec - s.length; + if(n > 0)s = caml_str_repeat(n,"0") + s} + return caml_finish_formatting(f,s)} + function caml_obj_truncate(x,s) + {if(s <= 0 || s + 1 > x.length)caml_invalid_argument("Obj.truncate"); + if(x.length != s + 1)x.length = s + 1; + return 0} + function caml_js_to_string(s){return caml_string_of_jsstring(s)} + 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 + channel= + {file:data.file, + offset:data.offset, + fd:fd, + opened:true, + out:true, + buffer:""}; + caml_ml_channels[channel.fd] = channel; + return channel.fd} + function caml_array_concat(l) + {var a=[0]; + while(l !== 0) + {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); + function get(name) + {var res=info.match("(^|,) *" + name + " *= *([a-zA-Z0-9_]+) *(,|$)"); + if(res)return res[2]} + var specs=[]; + if(! (info == ""))specs.push(info); + var target=get("target"); + if(! target)target = ""; + var status=get("status"); + if(! status)specs.push("status=1"); + var w=get("width"); + w = w?parseInt(w):200; + specs.push("width=" + w); + var h=get("height"); + h = h?parseInt(h):200; + specs.push("height=" + h); + var win=g.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; + canvas.height = h; + var ctx=caml_gr_state_create(canvas,w,h); + ctx.set_title = function(title){doc.title = title}; + caml_gr_state_set(ctx); + var body=doc.body; + 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); + b[0] = 254; + for(var i=1;i < len;i++)b[i] = 0; + return b} + function caml_cbrt_float(x){return Math.cbrt(x)} + function caml_memprof_stop(unit){return 0} + function caml_eventlog_pause(unit){return 0} + function caml_greaterequal(x,y) + {return + (caml_compare_val(x,y,false) >= 0)} + function ml_z_numbits(z1) + {z1 = bigInt(z1).abs(); + var n=0,upperBound=bigInt.one; + while(upperBound.leq(z1)){n += 1;upperBound = upperBound.multiply(2)} + 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} + function caml_gr_blit_image(im,x,y) + {var + s=caml_gr_state_get(), + im2= + s.context.getImageData(x,s.height - im.height - y,im.width,im.height); + for(var i=0;i < im2.data.length;i += 4) + {im.data[i] = im2.data[i]; + im.data[i + 1] = im2.data[i + 1]; + im.data[i + 2] = im2.data[i + 2]; + im.data[i + 3] = im2.data[i + 3]} + return 0} + function caml_gr_window_id(a) + {caml_failwith("caml_gr_window_id not Implemented")} + function caml_js_on_ie() + {var ua=globalThis.navigator?globalThis.navigator.userAgent:""; + return ua.indexOf("MSIE") != - 1 && ua.indexOf("Opera") != 0} + function caml_int64_shift_right(x,s){return x.shift_right(s)} + function caml_ba_layout(ba){return ba.layout} + function caml_convert_raw_backtrace(){return [0]} + function caml_array_set(array,index,newval) + {if(index < 0 || index >= array.length - 1)caml_array_bound_error(); + array[index + 1] = newval; + return 0} + function caml_bytes_greaterequal(s1,s2) + {return caml_bytes_lessequal(s2,s1)} + function ml_z_perfect_power(z) + {z = bigInt(z); + var zero=bigInt(0),one=bigInt(1); + if(z.equals(zero) || z.equals(one) || z.equals(one.negate()))return 1; + var log2z=ml_z_numbits(z.abs()); + for(var b=2;b <= log2z;b++) + {if(z.lt(zero) && b % 2 == 0)continue; + var zp=z.abs(),p=bigInt(ml_z_root(zp,b)); + if(z.lt(zero))p = p.negate(); + var r=bigInt(ml_z_pow(p,b)); + if(z.equals(r))return 1} + return 0} + function set_digit_nat(nat,ofs,digit){nat.data[ofs] = digit;return 0} + function ml_z_init(unit) + {caml_custom_ops["_z"] + = + {serialize:caml_zarith_marshal, + deserialize:caml_zarith_unmarshal, + hash:ml_z_hash, + compare:ml_z_compare}; + return 0} + function caml_gr_doc_of_state(state) + {if(state.canvas.ownerDocument)return state.canvas.ownerDocument} + function caml_ml_output_int(chanid,i) + {var + arr=[i >> 24 & 0xFF,i >> 16 & 0xFF,i >> 8 & 0xFF,i & 0xFF], + s=caml_string_of_array(arr); + caml_ml_output(chanid,s,0,4); + return 0} + function caml_obj_with_tag(tag,x) + {var l=x.length,a=new Array(l); + a[0] = tag; + for(var i=1;i < l;i++)a[i] = x[i]; + return a} + function caml_ml_channel_size(chanid) + {var chan=caml_ml_channels[chanid];return chan.file.length()} + function caml_raw_backtrace_slot() + {caml_invalid_argument + ("Printexc.get_raw_backtrace_slot: index out of bounds")} + function caml_hexstring_of_float(x,prec,style) + {if(! isFinite(x)) + {if(isNaN(x))return caml_string_of_jsstring("nan"); + return caml_string_of_jsstring(x > 0?"infinity":"-infinity")} + var sign=x == 0 && 1 / x == - Infinity?1:x >= 0?0:1; + if(sign)x = - x; + var exp=0; + if(x == 0) + ; + else + if(x < 1) + while(x < 1 && exp > - 1022){x *= 2;exp--} + else + while(x >= 2){x /= 2;exp++} + var exp_sign=exp < 0?"":"+",sign_str=""; + if(sign) + sign_str = "-"; + else + switch(style) + {case 43:sign_str = "+";break; + case 32:sign_str = " ";break; + default:break} + if(prec >= 0 && prec < 13) + {var cst=Math.pow(2,prec * 4);x = Math.round(x * cst) / cst} + var x_str=x.toString(16); + if(prec >= 0) + {var idx=x_str.indexOf("."); + if(idx < 0) + x_str += "." + caml_str_repeat(prec,"0"); + else + {var size=idx + 1 + prec; + if(x_str.length < size) + x_str += caml_str_repeat(size - x_str.length,"0"); + else + x_str = x_str.substr(0,size)}} + return caml_string_of_jsstring + (sign_str + "0x" + x_str + "p" + exp_sign + exp.toString(10))} + function caml_js_wrap_meth_callback_strict(arity,f) + {return function() + {var args=new Array(arity + 1),len=Math.min(arguments.length,arity); + args[0] = this; + for(var i=0;i < len;i++)args[i + 1] = arguments[i]; + return caml_call_gen(f,args)}} + function ml_z_format(fmt,z1) + {z1 = bigInt(z1); + var + fmt=caml_jsbytes_of_string(fmt), + base=10, + cas=0, + width=0, + alt=0, + dir=0, + sign="", + pad=" ", + idx=0, + prefix=""; + while(fmt[idx] == "%")idx++; + for(;;idx++) + if(fmt[idx] == "#") + alt = 1; + else + if(fmt[idx] == "0") + pad = "0"; + else + if(fmt[idx] == "-") + dir = 1; + else + if(fmt[idx] == " " || fmt[idx] == "+")sign = fmt[idx];else break; + if(z1.lt(bigInt(0))){sign = "-";z1 = z1.negate()} + for(;fmt[idx] >= "0" && fmt[idx] <= "9";idx++) + width = 10 * width + + fmt[idx]; + switch(fmt[idx]) + {case "i": + case "d": + case "u":break; + case "b":base = 2;if(alt)prefix = "0b";break; + case "o":base = 8;if(alt)prefix = "0o";break; + case "x":base = 16;if(alt)prefix = "0x";break; + case "X":base = 16;if(alt)prefix = "0X";cas = 1;break; + default:caml_failwith("Unsupported format '" + fmt + "'")} + if(dir)pad = " "; + var res=z1.toString(base); + if(cas === 1)res = res.toUpperCase(); + var size=res.length; + if(pad == " ") + if(dir) + {res = sign + prefix + res;for(;res.length < width;)res = res + pad} + else + {res = sign + prefix + res;for(;res.length < width;)res = pad + res} + else + {var pre=sign + prefix; + for(;res.length + pre.length < width;)res = pad + res; + res = pre + res} + return caml_string_of_jsbytes(res)} + function ml_z_to_int64(z1) + {z1 = bigInt(z1); + if(! ml_z_fits_int64(z1)) + caml_raise_constant(caml_named_value("ml_z_overflow")); + var + mask=bigInt(0xffffffff), + lo=z1.and(mask).toJSNumber(), + hi=z1.shiftRight(32).and(mask).toJSNumber(), + x=caml_int64_create_lo_hi(lo,hi); + return x} + function ml_z_size(z1) + {return bigInt(z1).toArray(Math.pow(2,32)).value.length} + function caml_backtrace_status(){return 0} + function caml_sys_argv(a){return caml_argv} + function caml_install_signal_handler(){return 0} + function caml_ba_fill(ba,v){ba.fill(v);return 0} + function caml_modf_float(x) + {if(isFinite(x)) + {var neg=1 / x < 0; + x = Math.abs(x); + var i=Math.floor(x),f=x - i; + if(neg){i = - i;f = - f} + return [0,f,i]} + if(isNaN(x))return [0,NaN,NaN]; + return [0,1 / x,x]} + function caml_gc_get(){return [0,0,0,0,0,0,0,0,0]} + function caml_float_compare(x,y) + {if(x === y)return 0; + if(x < y)return - 1; + if(x > y)return 1; + if(x === x)return 1; + if(y === y)return - 1; + return 0} + function ml_z_shift_right_trunc(z1,z2) + {return ml_z_div(bigInt(z1),bigInt(2).pow(z2))} + function caml_string_set32(s,i,i32){return caml_bytes_set32(s,i,i32)} + function caml_parse_engine(tables,env,cmd,arg) + {var + ERRCODE=256, + loop=6, + testshift=7, + shift=8, + shift_recover=9, + reduce=10, + READ_TOKEN=0, + RAISE_PARSE_ERROR=1, + GROW_STACKS_1=2, + GROW_STACKS_2=3, + COMPUTE_SEMANTIC_ACTION=4, + CALL_ERROR_FUNCTION=5, + env_s_stack=1, + env_v_stack=2, + env_symb_start_stack=3, + env_symb_end_stack=4, + env_stacksize=5, + env_stackbase=6, + env_curr_char=7, + env_lval=8, + env_symb_start=9, + env_symb_end=10, + env_asp=11, + env_rule_len=12, + env_rule_number=13, + env_sp=14, + env_state=15, + env_errflag=16, + tbl_transl_const=2, + tbl_transl_block=3, + tbl_lhs=4, + tbl_len=5, + tbl_defred=6, + tbl_dgoto=7, + tbl_sindex=8, + tbl_rindex=9, + tbl_gindex=10, + tbl_tablesize=11, + tbl_table=12, + tbl_check=13; + if(! tables.dgoto) + {tables.defred = caml_lex_array(tables[tbl_defred]); + tables.sindex = caml_lex_array(tables[tbl_sindex]); + tables.check = caml_lex_array(tables[tbl_check]); + tables.rindex = caml_lex_array(tables[tbl_rindex]); + tables.table = caml_lex_array(tables[tbl_table]); + tables.len = caml_lex_array(tables[tbl_len]); + tables.lhs = caml_lex_array(tables[tbl_lhs]); + tables.gindex = caml_lex_array(tables[tbl_gindex]); + tables.dgoto = caml_lex_array(tables[tbl_dgoto])} + var + res=0, + n, + n1, + n2, + state1, + sp=env[env_sp], + state=env[env_state], + errflag=env[env_errflag]; + exit: + for(;;) + switch(cmd) + {case 0:state = 0;errflag = 0; + case 6: + n = tables.defred[state]; + if(n != 0){cmd = reduce;break} + if(env[env_curr_char] >= 0){cmd = testshift;break} + res = READ_TOKEN; + break exit; + case 1: + if(arg instanceof Array) + {env[env_curr_char] = tables[tbl_transl_block][arg[0] + 1]; + env[env_lval] = arg[1]} + else + {env[env_curr_char] = tables[tbl_transl_const][arg + 1]; + env[env_lval] = 0} + case 7: + n1 = tables.sindex[state]; + n2 = n1 + env[env_curr_char]; + if + (n1 + != + 0 + && + n2 + >= + 0 + && + n2 + <= + tables[tbl_tablesize] + && + tables.check[n2] + == + env[env_curr_char]) + {cmd = shift;break} + n1 = tables.rindex[state]; + n2 = n1 + env[env_curr_char]; + if + (n1 + != + 0 + && + n2 + >= + 0 + && + n2 + <= + tables[tbl_tablesize] + && + tables.check[n2] + == + env[env_curr_char]) + {n = tables.table[n2];cmd = reduce;break} + if(errflag <= 0){res = CALL_ERROR_FUNCTION;break exit} + case 5: + if(errflag < 3) + {errflag = 3; + for(;;) + {state1 = env[env_s_stack][sp + 1]; + n1 = tables.sindex[state1]; + n2 = n1 + ERRCODE; + if + (n1 + != + 0 + && + n2 + >= + 0 + && + n2 + <= + tables[tbl_tablesize] + && + tables.check[n2] + == + ERRCODE) + {cmd = shift_recover;break} + else + {if(sp <= env[env_stackbase])return RAISE_PARSE_ERROR;sp--}}} + else + {if(env[env_curr_char] == 0)return RAISE_PARSE_ERROR; + env[env_curr_char] = - 1; + cmd = loop; + break} + case 8:env[env_curr_char] = - 1;if(errflag > 0)errflag--; + case 9: + state = tables.table[n2]; + sp++; + if(sp >= env[env_stacksize]){res = GROW_STACKS_1;break exit} + case 2: + env[env_s_stack][sp + 1] = state; + env[env_v_stack][sp + 1] = env[env_lval]; + env[env_symb_start_stack][sp + 1] = env[env_symb_start]; + env[env_symb_end_stack][sp + 1] = env[env_symb_end]; + cmd = loop; + break; + case 10: + var m=tables.len[n]; + env[env_asp] = sp; + env[env_rule_number] = n; + env[env_rule_len] = m; + sp = sp - m + 1; + m = tables.lhs[n]; + state1 = env[env_s_stack][sp]; + n1 = tables.gindex[m]; + n2 = n1 + state1; + if + (n1 + != + 0 + && + n2 + >= + 0 + && + n2 + <= + tables[tbl_tablesize] + && + tables.check[n2] + == + state1) + state = tables.table[n2]; + else + state = tables.dgoto[m]; + if(sp >= env[env_stacksize]){res = GROW_STACKS_2;break exit} + case 3:res = COMPUTE_SEMANTIC_ACTION;break exit; + case 4: + env[env_s_stack][sp + 1] = state; + env[env_v_stack][sp + 1] = arg; + var asp=env[env_asp]; + env[env_symb_end_stack][sp + 1] = env[env_symb_end_stack][asp + 1]; + if(sp > asp) + env[env_symb_start_stack][sp + 1] + = + env[env_symb_end_stack][asp + 1]; + cmd = loop; + break; + default:return RAISE_PARSE_ERROR} + env[env_sp] = sp; + env[env_state] = state; + env[env_errflag] = errflag; + return res} + function caml_update_dummy(x,y) + {if(typeof y === "function"){x.fun = y;return 0} + if(y.fun){x.fun = y.fun;return 0} + var i=y.length; + while(i--)x[i] = y[i]; + return 0} + function caml_array_fill(array,ofs,len,v) + {for(var i=0;i < len;i++)array[ofs + i + 1] = v;return 0} + function caml_sys_mkdir(name,perm) + {var root=resolve_fs_device(name); + root.device.mkdir(root.rest,perm); + return 0} + function caml_string_notequal(s1,s2){return 1 - caml_string_equal(s1,s2)} + function caml_bytes_greaterthan(s1,s2){return caml_bytes_lessthan(s2,s1)} + function caml_gr_make_image(arr) + {var + s=caml_gr_state_get(), + h=arr.length - 1, + w=arr[1].length - 1, + im=s.context.createImageData(w,h); + for(var i=0;i < h;i++) + for(var j=0;j < w;j++) + {var c=arr[i + 1][j + 1],o=i * (w * 4) + j * 4; + if(c == - 1) + {im.data[o + 0] = 0; + im.data[o + 1] = 0; + im.data[o + 2] = 0; + im.data[o + 3] = 0} + else + {im.data[o + 0] = c >> 16 & 0xff; + im.data[o + 1] = c >> 8 & 0xff; + im.data[o + 2] = c >> 0 & 0Xff; + im.data[o + 3] = 0xff}} + return im} + function caml_ml_set_channel_output(chanid,f) + {var chan=caml_ml_channels[chanid]; + caml_global_data.fds[chan.fd].output = f; + return 0} + function caml_read_file_content(name) + {var + name=typeof name == "string"?caml_string_of_jsbytes(name):name, + root=resolve_fs_device(name); + if(root.device.exists(root.rest)) + {var + file=root.device.open(root.rest,{rdonly:1}), + len=file.length(), + buf=caml_create_bytes(len); + file.read(0,buf,0,len); + return caml_string_of_bytes(buf)} + 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 + ("uncaughtException", + function(err,origin) + {caml_fatal_uncaught_exception(err);g.process.exit(2)}); + else + if(g.addEventListener) + g.addEventListener + ("error", + function(event) + {if(event.error)caml_fatal_uncaught_exception(event.error)})} + caml_setup_uncaught_exception_handler(); + globalThis.jsoo_runtime + = + {ml_z_normalize:ml_z_normalize, + ml_z_mul_overflows:ml_z_mul_overflows, + ml_z_init:ml_z_init, + ml_z_neg:ml_z_neg, + ml_z_add:ml_z_add, + ml_z_sub:ml_z_sub, + ml_z_mul:ml_z_mul, + ml_z_div:ml_z_div, + ml_z_cdiv:ml_z_cdiv, + ml_z_fdiv:ml_z_fdiv, + ml_z_rem:ml_z_rem, + ml_z_div_rem:ml_z_div_rem, + ml_z_succ:ml_z_succ, + ml_z_pred:ml_z_pred, + ml_z_abs:ml_z_abs, + ml_z_logand:ml_z_logand, + ml_z_logor:ml_z_logor, + ml_z_logxor:ml_z_logxor, + ml_z_lognot:ml_z_lognot, + ml_z_shift_left:ml_z_shift_left, + ml_z_shift_right:ml_z_shift_right, + ml_z_shift_right_trunc:ml_z_shift_right_trunc, + ml_z_of_int32:ml_z_of_int32, + ml_z_of_nativeint:ml_z_of_nativeint, + ml_z_of_int64:ml_z_of_int64, + ml_z_of_float:ml_z_of_float, + ml_z_to_int:ml_z_to_int, + ml_z_to_int32:ml_z_to_int32, + ml_z_to_int64:ml_z_to_int64, + ml_z_testbit:ml_z_testbit, + ml_z_to_nativeint:ml_z_to_nativeint, + ml_z_format:ml_z_format, + jsoo_z_of_js_string_base:jsoo_z_of_js_string_base, + ml_z_of_substring_base:ml_z_of_substring_base, + ml_z_compare:ml_z_compare, + ml_z_equal:ml_z_equal, + ml_z_sign:ml_z_sign, + ml_z_gcd:ml_z_gcd, + ml_z_numbits:ml_z_numbits, + ml_z_fits_int:ml_z_fits_int, + ml_z_fits_int32:ml_z_fits_int32, + ml_z_fits_int64:ml_z_fits_int64, + ml_z_fits_nativeint:ml_z_fits_nativeint, + ml_z_powm:ml_z_powm, + ml_z_pow:ml_z_pow, + ml_z_hash:ml_z_hash, + ml_z_to_bits:ml_z_to_bits, + ml_z_of_bits:ml_z_of_bits, + ml_z_powm_sec:ml_z_powm_sec, + ml_z_root:ml_z_root, + ml_z_rootrem:ml_z_rootrem, + ml_z_invert:ml_z_invert, + ml_z_perfect_power:ml_z_perfect_power, + ml_z_perfect_square:ml_z_perfect_square, + ml_z_probab_prime:ml_z_probab_prime, + ml_z_nextprime:ml_z_nextprime, + ml_z_extract:ml_z_extract, + ml_z_gcdext_intern:ml_z_gcdext_intern, + ml_z_sqrt:ml_z_sqrt, + ml_z_sqrt_rem:ml_z_sqrt_rem, + ml_z_trailing_zeros:ml_z_trailing_zeros, + ml_z_popcount:ml_z_popcount, + ml_z_hamdist:ml_z_hamdist, + ml_z_size:ml_z_size, + ml_z_divexact:ml_z_divexact, + caml_zarith_marshal:caml_zarith_marshal, + caml_zarith_unmarshal:caml_zarith_unmarshal, + ml_z_divisible:ml_z_divisible, + ml_z_congruent:ml_z_congruent, + ml_z_remove:ml_z_remove, + ml_z_fac:ml_z_fac, + ml_z_fac2:ml_z_fac2, + ml_z_facM:ml_z_facM, + ml_z_fib:ml_z_fib, + ml_z_lucnum:ml_z_lucnum, + ml_z_jacobi:ml_z_jacobi, + ml_z_legendre:ml_z_legendre, + ml_z_kronecker:ml_z_kronecker, + ml_z_primorial:ml_z_primorial, + ml_z_bin:ml_z_bin, + bigInt:bigInt, + caml_ephe_key_offset:caml_ephe_key_offset, + caml_ephe_data_offset:caml_ephe_data_offset, + 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_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, + 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, + 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_raise_sys_error:caml_raise_sys_error, + caml_sys_exit:caml_sys_exit, + caml_is_special_exception:caml_is_special_exception, + caml_format_exception:caml_format_exception, + caml_fatal_uncaught_exception:caml_fatal_uncaught_exception, + caml_set_static_env:caml_set_static_env, + caml_sys_getenv:caml_sys_getenv, + caml_sys_unsafe_getenv:caml_sys_unsafe_getenv, + caml_argv:caml_argv, + caml_executable_name:caml_executable_name, + caml_sys_get_argv:caml_sys_get_argv, + caml_sys_argv:caml_sys_argv, + caml_sys_modify_argv:caml_sys_modify_argv, + caml_sys_executable_name:caml_sys_executable_name, + caml_sys_system_command:caml_sys_system_command, + caml_sys_time:caml_sys_time, + caml_sys_time_include_children:caml_sys_time_include_children, + caml_sys_random_seed:caml_sys_random_seed, + caml_sys_const_big_endian:caml_sys_const_big_endian, + caml_sys_const_word_size:caml_sys_const_word_size, + caml_sys_const_int_size:caml_sys_const_int_size, + caml_sys_const_max_wosize:caml_sys_const_max_wosize, + caml_sys_const_ostype_unix:caml_sys_const_ostype_unix, + caml_sys_const_ostype_win32:caml_sys_const_ostype_win32, + caml_sys_const_ostype_cygwin:caml_sys_const_ostype_cygwin, + caml_sys_const_backend_type:caml_sys_const_backend_type, + os_type:os_type, + caml_sys_get_config:caml_sys_get_config, + caml_sys_isatty:caml_sys_isatty, + 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, + caml_spacetime_enabled:caml_spacetime_enabled, + caml_sys_const_naked_pointers_checked: + caml_sys_const_naked_pointers_checked, + caml_register_channel_for_spacetime:caml_register_channel_for_spacetime, + caml_spacetime_only_works_for_native_code: + caml_spacetime_only_works_for_native_code, + caml_call_gen:caml_call_gen, + caml_named_values:caml_named_values, + caml_register_named_value:caml_register_named_value, + caml_named_value:caml_named_value, + caml_global_data:caml_global_data, + caml_register_global:caml_register_global, + caml_get_global_data:caml_get_global_data, + caml_is_printable:caml_is_printable, + caml_parse_engine:caml_parse_engine, + caml_set_parser_trace:caml_set_parser_trace, + caml_update_dummy:caml_update_dummy, + caml_obj_is_block:caml_obj_is_block, + caml_obj_tag:caml_obj_tag, + caml_obj_set_tag:caml_obj_set_tag, + caml_obj_block:caml_obj_block, + caml_obj_with_tag:caml_obj_with_tag, + caml_obj_dup:caml_obj_dup, + caml_obj_truncate:caml_obj_truncate, + caml_obj_make_forward:caml_obj_make_forward, + caml_lazy_make_forward:caml_lazy_make_forward, + caml_get_public_method:caml_get_public_method, + caml_oo_last_id:caml_oo_last_id, + caml_set_oo_id:caml_set_oo_id, + caml_fresh_oo_id:caml_fresh_oo_id, + caml_obj_raw_field:caml_obj_raw_field, + 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, + initialize_nat:initialize_nat, + MlNat:MlNat, + caml_hash_nat:caml_hash_nat, + nat_of_array:nat_of_array, + create_nat:create_nat, + set_to_zero_nat:set_to_zero_nat, + blit_nat:blit_nat, + set_digit_nat:set_digit_nat, + nth_digit_nat:nth_digit_nat, + set_digit_nat_native:set_digit_nat_native, + nth_digit_nat_native:nth_digit_nat_native, + num_digits_nat:num_digits_nat, + num_leading_zero_bits_in_digit:num_leading_zero_bits_in_digit, + is_digit_int:is_digit_int, + is_digit_zero:is_digit_zero, + is_digit_odd:is_digit_odd, + incr_nat:incr_nat, + add_nat:add_nat, + complement_nat:complement_nat, + decr_nat:decr_nat, + sub_nat:sub_nat, + mult_digit_nat:mult_digit_nat, + mult_nat:mult_nat, + square_nat:square_nat, + shift_left_nat:shift_left_nat, + div_helper:div_helper, + div_digit_nat:div_digit_nat, + div_nat:div_nat, + shift_right_nat:shift_right_nat, + compare_digits_nat:compare_digits_nat, + compare_nat:compare_nat, + compare_nat_real:compare_nat_real, + land_digit_nat:land_digit_nat, + lor_digit_nat:lor_digit_nat, + lxor_digit_nat:lxor_digit_nat, + serialize_nat:serialize_nat, + deserialize_nat:deserialize_nat, + caml_str_repeat:caml_str_repeat, + caml_subarray_to_jsbytes:caml_subarray_to_jsbytes, + caml_utf8_of_utf16:caml_utf8_of_utf16, + caml_utf16_of_utf8:caml_utf16_of_utf8, + jsoo_is_ascii:jsoo_is_ascii, + caml_bytes_unsafe_get:caml_bytes_unsafe_get, + caml_bytes_unsafe_set:caml_bytes_unsafe_set, + caml_string_bound_error:caml_string_bound_error, + caml_bytes_bound_error:caml_bytes_bound_error, + caml_string_get:caml_string_get, + caml_string_get16:caml_string_get16, + caml_bytes_get16:caml_bytes_get16, + caml_string_get32:caml_string_get32, + caml_bytes_get32:caml_bytes_get32, + caml_string_get64:caml_string_get64, + caml_bytes_get64:caml_bytes_get64, + caml_bytes_get:caml_bytes_get, + caml_string_set:caml_string_set, + caml_bytes_set16:caml_bytes_set16, + caml_string_set16:caml_string_set16, + caml_bytes_set32:caml_bytes_set32, + caml_string_set32:caml_string_set32, + caml_bytes_set64:caml_bytes_set64, + caml_string_set64:caml_string_set64, + caml_bytes_set:caml_bytes_set, + caml_bytes_of_utf16_jsstring:caml_bytes_of_utf16_jsstring, + 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_create_string:caml_create_string, + caml_create_bytes:caml_create_bytes, + caml_string_of_array:caml_string_of_array, + caml_bytes_of_array:caml_bytes_of_array, + caml_bytes_compare:caml_bytes_compare, + caml_bytes_equal:caml_bytes_equal, + caml_string_notequal:caml_string_notequal, + caml_bytes_notequal:caml_bytes_notequal, + caml_bytes_lessequal:caml_bytes_lessequal, + caml_bytes_lessthan:caml_bytes_lessthan, + caml_string_greaterequal:caml_string_greaterequal, + caml_bytes_greaterequal:caml_bytes_greaterequal, + 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, + caml_bytes_of_jsbytes:caml_bytes_of_jsbytes, + caml_string_unsafe_get:caml_string_unsafe_get, + caml_string_unsafe_set:caml_string_unsafe_set, + caml_ml_string_length:caml_ml_string_length, + caml_string_compare:caml_string_compare, + caml_string_equal:caml_string_equal, + caml_string_lessequal:caml_string_lessequal, + caml_string_lessthan:caml_string_lessthan, + caml_string_of_bytes:caml_string_of_bytes, + caml_bytes_of_string:caml_bytes_of_string, + caml_string_of_jsbytes:caml_string_of_jsbytes, + caml_jsbytes_of_string:caml_jsbytes_of_string, + caml_jsstring_of_string:caml_jsstring_of_string, + caml_string_of_jsstring:caml_string_of_jsstring, + caml_is_ml_bytes:caml_is_ml_bytes, + caml_ml_bytes_content:caml_ml_bytes_content, + caml_is_ml_string:caml_is_ml_string, + caml_js_to_byte_string:caml_js_to_byte_string, + caml_new_string:caml_new_string, + 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_md5_chan:caml_md5_chan, + caml_md5_string:caml_md5_string, + caml_md5_bytes:caml_md5_bytes, + caml_marshal_constants:caml_marshal_constants, + MlStringReader:MlStringReader, + BigStringReader:BigStringReader, + caml_float_of_bytes:caml_float_of_bytes, + caml_input_value_from_string:caml_input_value_from_string, + caml_input_value_from_bytes:caml_input_value_from_bytes, + caml_int64_unmarshal:caml_int64_unmarshal, + caml_int64_marshal:caml_int64_marshal, + caml_int32_unmarshal:caml_int32_unmarshal, + caml_nativeint_unmarshal:caml_nativeint_unmarshal, + caml_custom_ops:caml_custom_ops, + caml_input_value_from_reader:caml_input_value_from_reader, + caml_marshal_data_size:caml_marshal_data_size, + MlObjectTable:MlObjectTable, + caml_legacy_custom_code:caml_legacy_custom_code, + caml_output_val:caml_output_val, + caml_output_value_to_string:caml_output_value_to_string, + caml_output_value_to_bytes:caml_output_value_to_bytes, + caml_output_value_to_buffer:caml_output_value_to_buffer, + caml_lex_array:caml_lex_array, + caml_lex_engine:caml_lex_engine, + caml_new_lex_engine:caml_new_lex_engine, + caml_js_on_ie:caml_js_on_ie, + caml_js_html_escape:caml_js_html_escape, + caml_js_html_entities:caml_js_html_entities, + caml_js_get_console:caml_js_get_console, + caml_xmlhttprequest_create:caml_xmlhttprequest_create, + caml_js_error_of_exception:caml_js_error_of_exception, + caml_js_pure_expr:caml_js_pure_expr, + caml_js_set:caml_js_set, + caml_js_get:caml_js_get, + caml_js_delete:caml_js_delete, + caml_js_instanceof:caml_js_instanceof, + 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, + caml_js_error_option_of_exception:caml_js_error_option_of_exception, + caml_js_from_bool:caml_js_from_bool, + caml_js_to_bool:caml_js_to_bool, + caml_js_from_float:caml_js_from_float, + caml_js_to_float:caml_js_to_float, + caml_js_from_array:caml_js_from_array, + caml_js_to_array:caml_js_to_array, + caml_list_of_js_array:caml_list_of_js_array, + caml_list_to_js_array:caml_list_to_js_array, + caml_js_var:caml_js_var, + caml_js_call:caml_js_call, + caml_js_fun_call:caml_js_fun_call, + caml_js_meth_call:caml_js_meth_call, + caml_js_new:caml_js_new, + caml_ojs_new_arr:caml_ojs_new_arr, + caml_js_wrap_callback:caml_js_wrap_callback, + caml_js_wrap_callback_arguments:caml_js_wrap_callback_arguments, + caml_js_wrap_callback_strict:caml_js_wrap_callback_strict, + caml_js_wrap_meth_callback:caml_js_wrap_meth_callback, + caml_js_wrap_meth_callback_arguments:caml_js_wrap_meth_callback_arguments, + caml_js_wrap_meth_callback_strict:caml_js_wrap_meth_callback_strict, + caml_js_wrap_meth_callback_unsafe:caml_js_wrap_meth_callback_unsafe, + caml_js_equals:caml_js_equals, + caml_js_eval_string:caml_js_eval_string, + caml_js_expr:caml_js_expr, + caml_pure_js_expr:caml_pure_js_expr, + caml_js_object:caml_js_object, + 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, + caml_ml_out_channels_list:caml_ml_out_channels_list, + 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_ml_input:caml_ml_input, + caml_input_value:caml_input_value, + caml_ml_input_char:caml_ml_input_char, + caml_ml_input_int:caml_ml_input_int, + caml_ml_seek_in:caml_ml_seek_in, + caml_ml_seek_in_64:caml_ml_seek_in_64, + 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, + caml_ml_flush:caml_ml_flush, + caml_ml_output_bytes:caml_ml_output_bytes, + caml_ml_output:caml_ml_output, + caml_ml_output_char:caml_ml_output_char, + caml_output_value:caml_output_value, + caml_ml_seek_out:caml_ml_seek_out, + caml_ml_seek_out_64:caml_ml_seek_out_64, + 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, + caml_ml_is_buffered:caml_ml_is_buffered, + caml_ml_set_buffered:caml_ml_set_buffered, + caml_format_int:caml_format_int, + caml_parse_sign_and_base:caml_parse_sign_and_base, + caml_parse_digit:caml_parse_digit, + caml_int_of_string:caml_int_of_string, + caml_mul:caml_mul, + caml_div:caml_div, + caml_mod:caml_mod, + caml_bswap16:caml_bswap16, + caml_int32_bswap:caml_int32_bswap, + caml_int64_bswap:caml_int64_bswap, + caml_int64_offset:caml_int64_offset, + MlInt64:MlInt64, + caml_int64_ult:caml_int64_ult, + caml_int64_compare:caml_int64_compare, + caml_int64_neg:caml_int64_neg, + caml_int64_add:caml_int64_add, + caml_int64_sub:caml_int64_sub, + caml_int64_mul:caml_int64_mul, + caml_int64_is_zero:caml_int64_is_zero, + caml_int64_is_negative:caml_int64_is_negative, + caml_int64_and:caml_int64_and, + caml_int64_or:caml_int64_or, + caml_int64_xor:caml_int64_xor, + caml_int64_shift_left:caml_int64_shift_left, + caml_int64_shift_right_unsigned:caml_int64_shift_right_unsigned, + caml_int64_shift_right:caml_int64_shift_right, + caml_int64_div:caml_int64_div, + caml_int64_mod:caml_int64_mod, + caml_int64_of_int32:caml_int64_of_int32, + caml_int64_to_int32:caml_int64_to_int32, + caml_int64_to_float:caml_int64_to_float, + caml_int64_of_float:caml_int64_of_float, + caml_int64_format:caml_int64_format, + caml_int64_of_string:caml_int64_of_string, + caml_int64_create_lo_mi_hi:caml_int64_create_lo_mi_hi, + caml_int64_create_lo_hi:caml_int64_create_lo_hi, + caml_int64_lo32:caml_int64_lo32, + caml_int64_hi32:caml_int64_hi32, + caml_int64_of_bytes:caml_int64_of_bytes, + caml_int64_to_bytes:caml_int64_to_bytes, + caml_int64_hash:caml_int64_hash, + jsoo_floor_log2:jsoo_floor_log2, + caml_int64_bits_of_float:caml_int64_bits_of_float, + caml_int32_bits_of_float:caml_int32_bits_of_float, + caml_hexstring_of_float:caml_hexstring_of_float, + caml_int64_float_of_bits:caml_int64_float_of_bits, + caml_nextafter_float:caml_nextafter_float, + caml_trunc_float:caml_trunc_float, + caml_int32_float_of_bits:caml_int32_float_of_bits, + caml_classify_float:caml_classify_float, + caml_modf_float:caml_modf_float, + caml_ldexp_float:caml_ldexp_float, + caml_frexp_float:caml_frexp_float, + caml_float_compare:caml_float_compare, + caml_copysign_float:caml_copysign_float, + caml_signbit_float:caml_signbit_float, + caml_expm1_float:caml_expm1_float, + caml_exp2_float:caml_exp2_float, + caml_log1p_float:caml_log1p_float, + caml_log2_float:caml_log2_float, + caml_hypot_float:caml_hypot_float, + caml_log10_float:caml_log10_float, + caml_cosh_float:caml_cosh_float, + caml_acosh_float:caml_acosh_float, + caml_sinh_float:caml_sinh_float, + caml_asinh_float:caml_asinh_float, + caml_tanh_float:caml_tanh_float, + caml_atanh_float:caml_atanh_float, + caml_round_float:caml_round_float, + caml_cbrt_float:caml_cbrt_float, + caml_erf_float:caml_erf_float, + caml_erfc_float:caml_erfc_float, + caml_fma_float:caml_fma_float, + caml_format_float:caml_format_float, + caml_float_of_string:caml_float_of_string, + caml_hash_univ_param:caml_hash_univ_param, + caml_hash_mix_int:caml_hash_mix_int, + caml_hash_mix_final:caml_hash_mix_final, + caml_hash_mix_float:caml_hash_mix_float, + caml_hash_mix_int64:caml_hash_mix_int64, + caml_hash_mix_jsbytes:caml_hash_mix_jsbytes, + caml_hash_mix_bytes_arr:caml_hash_mix_bytes_arr, + caml_hash_mix_bytes:caml_hash_mix_bytes, + caml_hash_mix_string:caml_hash_mix_string, + caml_hash:caml_hash, + caml_gr_state:caml_gr_state, + caml_gr_state_get:caml_gr_state_get, + caml_gr_state_set:caml_gr_state_set, + caml_gr_open_graph:caml_gr_open_graph, + caml_gr_state_init:caml_gr_state_init, + caml_gr_state_create:caml_gr_state_create, + caml_gr_doc_of_state:caml_gr_doc_of_state, + caml_gr_close_graph:caml_gr_close_graph, + caml_gr_set_window_title:caml_gr_set_window_title, + caml_gr_resize_window:caml_gr_resize_window, + caml_gr_clear_graph:caml_gr_clear_graph, + caml_gr_size_x:caml_gr_size_x, + caml_gr_size_y:caml_gr_size_y, + caml_gr_set_color:caml_gr_set_color, + caml_gr_plot:caml_gr_plot, + caml_gr_point_color:caml_gr_point_color, + caml_gr_moveto:caml_gr_moveto, + caml_gr_current_x:caml_gr_current_x, + caml_gr_current_y:caml_gr_current_y, + caml_gr_lineto:caml_gr_lineto, + caml_gr_draw_rect:caml_gr_draw_rect, + caml_gr_arc_aux:caml_gr_arc_aux, + caml_gr_draw_arc:caml_gr_draw_arc, + caml_gr_set_line_width:caml_gr_set_line_width, + caml_gr_fill_rect:caml_gr_fill_rect, + caml_gr_fill_poly:caml_gr_fill_poly, + caml_gr_fill_arc:caml_gr_fill_arc, + caml_gr_draw_str:caml_gr_draw_str, + caml_gr_draw_char:caml_gr_draw_char, + caml_gr_draw_string:caml_gr_draw_string, + caml_gr_set_font:caml_gr_set_font, + caml_gr_set_text_size:caml_gr_set_text_size, + caml_gr_text_size:caml_gr_text_size, + caml_gr_make_image:caml_gr_make_image, + caml_gr_dump_image:caml_gr_dump_image, + caml_gr_draw_image:caml_gr_draw_image, + caml_gr_create_image:caml_gr_create_image, + caml_gr_blit_image:caml_gr_blit_image, + caml_gr_sigio_handler:caml_gr_sigio_handler, + caml_gr_sigio_signal:caml_gr_sigio_signal, + caml_gr_wait_event:caml_gr_wait_event, + caml_gr_synchronize:caml_gr_synchronize, + caml_gr_remember_mode:caml_gr_remember_mode, + caml_gr_display_mode:caml_gr_display_mode, + caml_gr_window_id:caml_gr_window_id, + caml_gr_open_subwindow:caml_gr_open_subwindow, + caml_gr_close_subwindow:caml_gr_close_subwindow, + caml_gc_minor:caml_gc_minor, + caml_gc_major:caml_gc_major, + caml_gc_full_major:caml_gc_full_major, + caml_gc_compaction:caml_gc_compaction, + caml_gc_counters:caml_gc_counters, + caml_gc_quick_stat:caml_gc_quick_stat, + caml_gc_stat:caml_gc_stat, + caml_gc_set:caml_gc_set, + caml_gc_get:caml_gc_get, + caml_memprof_set:caml_memprof_set, + caml_final_register:caml_final_register, + caml_final_register_called_without_value: + caml_final_register_called_without_value, + caml_final_release:caml_final_release, + caml_memprof_start:caml_memprof_start, + caml_memprof_stop:caml_memprof_stop, + caml_eventlog_resume:caml_eventlog_resume, + caml_eventlog_pause:caml_eventlog_pause, + caml_gc_huge_fallback_count:caml_gc_huge_fallback_count, + caml_gc_major_slice:caml_gc_major_slice, + caml_gc_minor_words:caml_gc_minor_words, + caml_get_minor_free:caml_get_minor_free, + caml_get_major_bucket:caml_get_major_bucket, + caml_get_major_credit:caml_get_major_credit, + fs_node_supported:fs_node_supported, + MlNodeDevice:MlNodeDevice, + MlNodeFile:MlNodeFile, + MlFakeDevice:MlFakeDevice, + MlFakeFile:MlFakeFile, + caml_trailing_slash:caml_trailing_slash, + caml_current_dir:caml_current_dir, + caml_get_root:caml_get_root, + caml_root:caml_root, + MlFile:MlFile, + path_is_absolute:path_is_absolute, + caml_make_path:caml_make_path, + jsoo_mount_point:jsoo_mount_point, + caml_list_mount_point:caml_list_mount_point, + resolve_fs_device:resolve_fs_device, + caml_mount_autoload:caml_mount_autoload, + caml_unmount:caml_unmount, + caml_sys_getcwd:caml_sys_getcwd, + caml_sys_chdir:caml_sys_chdir, + caml_raise_no_such_file:caml_raise_no_such_file, + caml_raise_not_a_dir:caml_raise_not_a_dir, + caml_sys_file_exists:caml_sys_file_exists, + caml_sys_read_directory:caml_sys_read_directory, + caml_sys_remove:caml_sys_remove, + caml_sys_is_directory:caml_sys_is_directory, + caml_sys_rename:caml_sys_rename, + caml_sys_mkdir:caml_sys_mkdir, + caml_sys_rmdir:caml_sys_rmdir, + caml_ba_map_file:caml_ba_map_file, + caml_ba_map_file_bytecode:caml_ba_map_file_bytecode, + jsoo_create_file_extern:jsoo_create_file_extern, + caml_fs_init:caml_fs_init, + caml_create_file:caml_create_file, + jsoo_create_file:jsoo_create_file, + caml_read_file_content:caml_read_file_content, + caml_parse_format:caml_parse_format, + caml_finish_formatting:caml_finish_formatting, + caml_raise_constant:caml_raise_constant, + caml_return_exn_constant:caml_return_exn_constant, + caml_raise_with_arg:caml_raise_with_arg, + caml_raise_with_args:caml_raise_with_args, + caml_raise_with_string:caml_raise_with_string, + caml_failwith:caml_failwith, + caml_invalid_argument:caml_invalid_argument, + caml_raise_end_of_file:caml_raise_end_of_file, + caml_raise_zero_divide:caml_raise_zero_divide, + caml_raise_not_found:caml_raise_not_found, + caml_array_bound_error:caml_array_bound_error, + caml_compare_val_tag:caml_compare_val_tag, + caml_compare_val_get_custom:caml_compare_val_get_custom, + caml_compare_val_number_custom:caml_compare_val_number_custom, + caml_compare_val:caml_compare_val, + caml_compare:caml_compare, + caml_int_compare:caml_int_compare, + caml_equal:caml_equal, + caml_notequal:caml_notequal, + caml_greaterequal:caml_greaterequal, + caml_greaterthan:caml_greaterthan, + caml_lessequal:caml_lessequal, + caml_lessthan:caml_lessthan, + caml_blit_bigstring_to_bigstring:caml_blit_bigstring_to_bigstring, + caml_blit_bigstring_to_string:caml_blit_bigstring_to_string, + caml_blit_string_to_bigstring:caml_blit_string_to_bigstring, + caml_hash_mix_bigstring:caml_hash_mix_bigstring, + bigstring_to_array_buffer:bigstring_to_array_buffer, + bigstring_to_typed_array:bigstring_to_typed_array, + bigstring_of_array_buffer:bigstring_of_array_buffer, + bigstring_of_typed_array:bigstring_of_typed_array, + caml_bigstring_memcmp:caml_bigstring_memcmp, + caml_bigstring_blit_ba_to_ba:caml_bigstring_blit_ba_to_ba, + caml_bigstring_blit_string_to_ba:caml_bigstring_blit_string_to_ba, + caml_bigstring_blit_bytes_to_ba:caml_bigstring_blit_bytes_to_ba, + caml_bigstring_blit_ba_to_bytes:caml_bigstring_blit_ba_to_bytes, + caml_ba_init:caml_ba_init, + caml_ba_get_size:caml_ba_get_size, + caml_ba_get_size_per_element:caml_ba_get_size_per_element, + caml_ba_create_buffer:caml_ba_create_buffer, + caml_ba_custom_name:caml_ba_custom_name, + Ml_Bigarray:Ml_Bigarray, + Ml_Bigarray_c_1_1:Ml_Bigarray_c_1_1, + caml_ba_compare:caml_ba_compare, + caml_ba_create_unsafe:caml_ba_create_unsafe, + caml_ba_create:caml_ba_create, + caml_ba_change_layout:caml_ba_change_layout, + caml_ba_kind:caml_ba_kind, + caml_ba_layout:caml_ba_layout, + caml_ba_num_dims:caml_ba_num_dims, + caml_ba_dim:caml_ba_dim, + caml_ba_dim_1:caml_ba_dim_1, + caml_ba_dim_2:caml_ba_dim_2, + caml_ba_dim_3:caml_ba_dim_3, + caml_ba_get_generic:caml_ba_get_generic, + caml_ba_uint8_get16:caml_ba_uint8_get16, + caml_ba_uint8_get32:caml_ba_uint8_get32, + caml_ba_uint8_get64:caml_ba_uint8_get64, + caml_ba_get_1:caml_ba_get_1, + caml_ba_get_2:caml_ba_get_2, + caml_ba_get_3:caml_ba_get_3, + caml_ba_set_generic:caml_ba_set_generic, + caml_ba_uint8_set16:caml_ba_uint8_set16, + caml_ba_uint8_set32:caml_ba_uint8_set32, + caml_ba_uint8_set64:caml_ba_uint8_set64, + caml_ba_set_1:caml_ba_set_1, + caml_ba_set_2:caml_ba_set_2, + caml_ba_set_3:caml_ba_set_3, + caml_ba_fill:caml_ba_fill, + caml_ba_blit:caml_ba_blit, + caml_ba_sub:caml_ba_sub, + caml_ba_slice:caml_ba_slice, + caml_ba_reshape:caml_ba_reshape, + caml_ba_serialize:caml_ba_serialize, + caml_ba_deserialize:caml_ba_deserialize, + caml_ba_create_from:caml_ba_create_from, + caml_ba_hash:caml_ba_hash, + caml_ba_to_typed_array:caml_ba_to_typed_array, + caml_ba_kind_of_typed_array:caml_ba_kind_of_typed_array, + caml_ba_from_typed_array:caml_ba_from_typed_array, + caml_ml_debug_info_status:caml_ml_debug_info_status, + caml_backtrace_status:caml_backtrace_status, + caml_get_exception_backtrace:caml_get_exception_backtrace, + caml_get_exception_raw_backtrace:caml_get_exception_raw_backtrace, + caml_record_backtrace:caml_record_backtrace, + caml_convert_raw_backtrace:caml_convert_raw_backtrace, + caml_raw_backtrace_length:caml_raw_backtrace_length, + caml_raw_backtrace_next_slot:caml_raw_backtrace_next_slot, + caml_raw_backtrace_slot:caml_raw_backtrace_slot, + caml_restore_raw_backtrace:caml_restore_raw_backtrace, + caml_get_current_callstack:caml_get_current_callstack, + caml_convert_raw_backtrace_slot:caml_convert_raw_backtrace_slot, + caml_array_sub:caml_array_sub, + caml_array_append:caml_array_append, + caml_array_concat:caml_array_concat, + caml_array_blit:caml_array_blit, + caml_floatarray_blit:caml_floatarray_blit, + caml_array_set:caml_array_set, + caml_array_get:caml_array_get, + caml_array_fill:caml_array_fill, + caml_check_bound:caml_check_bound, + caml_make_vect:caml_make_vect, + caml_make_float_vect:caml_make_float_vect, + caml_floatarray_create:caml_floatarray_create}; + caml_fs_init(); + caml_register_global + (0,[248,caml_string_of_jsbytes("Out_of_memory"),-1],"Out_of_memory"); + caml_register_global + (1,[248,caml_string_of_jsbytes("Sys_error"),-2],"Sys_error"); + caml_register_global + (2,[248,caml_string_of_jsbytes("Failure"),-3],"Failure"); + caml_register_global + (3, + [248,caml_string_of_jsbytes("Invalid_argument"),-4], + "Invalid_argument"); + caml_register_global + (4,[248,caml_string_of_jsbytes("End_of_file"),-5],"End_of_file"); + caml_register_global + (5, + [248,caml_string_of_jsbytes("Division_by_zero"),-6], + "Division_by_zero"); + caml_register_global + (6,[248,caml_string_of_jsbytes("Not_found"),-7],"Not_found"); + caml_register_global + (7,[248,caml_string_of_jsbytes("Match_failure"),-8],"Match_failure"); + caml_register_global + (8,[248,caml_string_of_jsbytes("Stack_overflow"),-9],"Stack_overflow"); + caml_register_global + (9,[248,caml_string_of_jsbytes("Sys_blocked_io"),-10],"Sys_blocked_io"); + caml_register_global + (10,[248,caml_string_of_jsbytes("Assert_failure"),-11],"Assert_failure"); + caml_register_global + (11, + [248,caml_string_of_jsbytes("Undefined_recursive_module"),-12], + "Undefined_recursive_module"); + return} + (globalThis)); + + +//# 1 "../../.js/stdlib/stdlib.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_array_concat=runtime.caml_array_concat, + caml_array_get=runtime.caml_array_get, + caml_array_set=runtime.caml_array_set, + caml_array_sub=runtime.caml_array_sub, + caml_ba_change_layout=runtime.caml_ba_change_layout, + caml_ba_create=runtime.caml_ba_create, + caml_ba_dim_1=runtime.caml_ba_dim_1, + caml_ba_dim_2=runtime.caml_ba_dim_2, + caml_ba_kind=runtime.caml_ba_kind, + caml_ba_num_dims=runtime.caml_ba_num_dims, + caml_ba_reshape=runtime.caml_ba_reshape, + caml_ba_set_1=runtime.caml_ba_set_1, + caml_ba_set_2=runtime.caml_ba_set_2, + caml_ba_set_3=runtime.caml_ba_set_3, + caml_ba_set_generic=runtime.caml_ba_set_generic, + caml_ba_slice=runtime.caml_ba_slice, + caml_blit_bytes=runtime.caml_blit_bytes, + caml_blit_string=runtime.caml_blit_string, + caml_bswap16=runtime.caml_bswap16, + caml_bytes_get=runtime.caml_bytes_get, + caml_bytes_get16=runtime.caml_bytes_get16, + caml_bytes_get32=runtime.caml_bytes_get32, + caml_bytes_get64=runtime.caml_bytes_get64, + caml_bytes_of_string=runtime.caml_bytes_of_string, + caml_bytes_set=runtime.caml_bytes_set, + caml_bytes_set16=runtime.caml_bytes_set16, + caml_bytes_set32=runtime.caml_bytes_set32, + caml_bytes_set64=runtime.caml_bytes_set64, + 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_compare=runtime.caml_compare, + caml_create_bytes=runtime.caml_create_bytes, + caml_div=runtime.caml_div, + caml_ephe_set_key=runtime.caml_ephe_set_key, + caml_ephe_unset_key=runtime.caml_ephe_unset_key, + caml_equal=runtime.caml_equal, + caml_fill_bytes=runtime.caml_fill_bytes, + caml_float_compare=runtime.caml_float_compare, + caml_float_of_string=runtime.caml_float_of_string, + caml_floatarray_blit=runtime.caml_floatarray_blit, + caml_floatarray_create=runtime.caml_floatarray_create, + caml_format_float=runtime.caml_format_float, + caml_format_int=runtime.caml_format_int, + caml_fresh_oo_id=runtime.caml_fresh_oo_id, + caml_get_exception_raw_backtra=runtime.caml_get_exception_raw_backtrace, + caml_get_public_method=runtime.caml_get_public_method, + caml_greaterequal=runtime.caml_greaterequal, + caml_greaterthan=runtime.caml_greaterthan, + caml_hash=runtime.caml_hash, + caml_input_value=runtime.caml_input_value, + caml_int32_bswap=runtime.caml_int32_bswap, + caml_int64_add=runtime.caml_int64_add, + caml_int64_bswap=runtime.caml_int64_bswap, + caml_int64_compare=runtime.caml_int64_compare, + caml_int64_float_of_bits=runtime.caml_int64_float_of_bits, + caml_int64_format=runtime.caml_int64_format, + caml_int64_mul=runtime.caml_int64_mul, + caml_int64_of_int32=runtime.caml_int64_of_int32, + caml_int64_of_string=runtime.caml_int64_of_string, + caml_int64_or=runtime.caml_int64_or, + caml_int64_shift_left=runtime.caml_int64_shift_left, + caml_int64_shift_right_unsigne=runtime.caml_int64_shift_right_unsigned, + caml_int64_sub=runtime.caml_int64_sub, + caml_int_compare=runtime.caml_int_compare, + caml_int_of_string=runtime.caml_int_of_string, + caml_lessequal=runtime.caml_lessequal, + caml_lessthan=runtime.caml_lessthan, + caml_make_vect=runtime.caml_make_vect, + caml_marshal_data_size=runtime.caml_marshal_data_size, + caml_md5_string=runtime.caml_md5_string, + caml_ml_bytes_length=runtime.caml_ml_bytes_length, + caml_ml_channel_size=runtime.caml_ml_channel_size, + caml_ml_channel_size_64=runtime.caml_ml_channel_size_64, + caml_ml_close_channel=runtime.caml_ml_close_channel, + caml_ml_flush=runtime.caml_ml_flush, + caml_ml_input=runtime.caml_ml_input, + caml_ml_input_char=runtime.caml_ml_input_char, + caml_ml_open_descriptor_in=runtime.caml_ml_open_descriptor_in, + caml_ml_open_descriptor_out=runtime.caml_ml_open_descriptor_out, + caml_ml_output=runtime.caml_ml_output, + caml_ml_output_bytes=runtime.caml_ml_output_bytes, + caml_ml_output_char=runtime.caml_ml_output_char, + caml_ml_pos_in=runtime.caml_ml_pos_in, + caml_ml_set_binary_mode=runtime.caml_ml_set_binary_mode, + caml_ml_set_channel_name=runtime.caml_ml_set_channel_name, + caml_ml_string_length=runtime.caml_ml_string_length, + caml_mod=runtime.caml_mod, + caml_mul=runtime.caml_mul, + caml_nextafter_float=runtime.caml_nextafter_float, + caml_notequal=runtime.caml_notequal, + caml_obj_block=runtime.caml_obj_block, + caml_obj_make_forward=runtime.caml_obj_make_forward, + caml_obj_tag=runtime.caml_obj_tag, + caml_output_value=runtime.caml_output_value, + caml_register_global=runtime.caml_register_global, + caml_register_named_value=runtime.caml_register_named_value, + caml_restore_raw_backtrace=runtime.caml_restore_raw_backtrace, + caml_set_oo_id=runtime.caml_set_oo_id, + caml_signbit_float=runtime.caml_signbit_float, + caml_string_compare=runtime.caml_string_compare, + caml_string_equal=runtime.caml_string_equal, + caml_string_get=runtime.caml_string_get, + caml_string_notequal=runtime.caml_string_notequal, + caml_string_of_bytes=runtime.caml_string_of_bytes, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, + caml_string_unsafe_get=runtime.caml_string_unsafe_get, + caml_sys_argv=runtime.caml_sys_argv, + caml_sys_getenv=runtime.caml_sys_getenv, + caml_sys_open=runtime.caml_sys_open, + caml_sys_random_seed=runtime.caml_sys_random_seed, + caml_trampoline=runtime.caml_trampoline, + caml_trampoline_return=runtime.caml_trampoline_return, + 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])} + function caml_call7(f,a0,a1,a2,a3,a4,a5,a6) + {return f.length == 7 + ?f(a0,a1,a2,a3,a4,a5,a6) + :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])} + var + global_data=runtime.caml_get_global_data(), + cst$0=caml_string_of_jsbytes("%,"), + cst_really_input=caml_string_of_jsbytes("really_input"), + cst_input=caml_string_of_jsbytes("input"), + cst_output_substring=caml_string_of_jsbytes("output_substring"), + cst_output=caml_string_of_jsbytes("output"), + cst_12g=caml_string_of_jsbytes("%.12g"), + cst=caml_string_of_jsbytes("."), + cst_false$1=caml_string_of_jsbytes("false"), + cst_true$1=caml_string_of_jsbytes("true"), + cst_false$0=caml_string_of_jsbytes("false"), + cst_true$0=caml_string_of_jsbytes("true"), + cst_bool_of_string=caml_string_of_jsbytes("bool_of_string"), + cst_true=caml_string_of_jsbytes("true"), + cst_false=caml_string_of_jsbytes("false"), + cst_char_of_int=caml_string_of_jsbytes("char_of_int"), + cst_Stdlib_Exit=caml_string_of_jsbytes("Stdlib.Exit"), + 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], + cst_Obj_Ephemeron_blit_key= + caml_string_of_jsbytes("Obj.Ephemeron.blit_key"), + cst_Obj_Ephemeron_check_key= + caml_string_of_jsbytes("Obj.Ephemeron.check_key"), + cst_Obj_Ephemeron_unset_key= + caml_string_of_jsbytes("Obj.Ephemeron.unset_key"), + cst_Obj_Ephemeron_set_key=caml_string_of_jsbytes("Obj.Ephemeron.set_key"), + cst_Obj_Ephemeron_get_key_copy= + caml_string_of_jsbytes("Obj.Ephemeron.get_key_copy"), + cst_Obj_Ephemeron_get_key=caml_string_of_jsbytes("Obj.Ephemeron.get_key"), + cst_Obj_Ephemeron_create=caml_string_of_jsbytes("Obj.Ephemeron.create"), + cst_Obj_extension_constructor$0= + caml_string_of_jsbytes("Obj.extension_constructor"), + cst_Obj_extension_constructor= + caml_string_of_jsbytes("Obj.extension_constructor"), + cst_CamlinternalLazy_Undefined= + caml_string_of_jsbytes("CamlinternalLazy.Undefined"), + cst_Seq_drop=caml_string_of_jsbytes("Seq.drop"), + cst_Seq_take=caml_string_of_jsbytes("Seq.take"), + cst_Seq_init=caml_string_of_jsbytes("Seq.init"), + cst_Stdlib_Seq_Forced_twice= + caml_string_of_jsbytes("Stdlib.Seq.Forced_twice"), + cst_option_is_None=caml_string_of_jsbytes("option is None"), + cst_result_is_Ok=caml_string_of_jsbytes("result is Ok _"), + cst_result_is_Error=caml_string_of_jsbytes("result is Error _"), + cst_true$2=caml_string_of_jsbytes("true"), + cst_false$2=caml_string_of_jsbytes("false"), + cst$1=caml_string_of_jsbytes("\\\\"), + cst$2=caml_string_of_jsbytes("\\'"), + cst_b=caml_string_of_jsbytes("\\b"), + cst_t=caml_string_of_jsbytes("\\t"), + cst_n=caml_string_of_jsbytes("\\n"), + cst_r=caml_string_of_jsbytes("\\r"), + cst_Char_chr=caml_string_of_jsbytes("Char.chr"), + cst_is_not_a_latin1_character= + caml_string_of_jsbytes(" is not a latin1 character"), + cst_04X=caml_string_of_jsbytes("%04X"), + cst_U=caml_string_of_jsbytes("U+"), + cst_is_not_an_Unicode_scalar_v= + caml_string_of_jsbytes(" is not an Unicode scalar value"), + cst_X=caml_string_of_jsbytes("%X"), + err_no_pred=caml_string_of_jsbytes("U+0000 has no predecessor"), + err_no_succ=caml_string_of_jsbytes("U+10FFFF has no successor"), + cst_List_map2=caml_string_of_jsbytes("List.map2"), + cst_List_iter2=caml_string_of_jsbytes("List.iter2"), + cst_List_fold_left2=caml_string_of_jsbytes("List.fold_left2"), + cst_List_fold_right2=caml_string_of_jsbytes("List.fold_right2"), + cst_List_for_all2=caml_string_of_jsbytes("List.for_all2"), + cst_List_exists2=caml_string_of_jsbytes("List.exists2"), + cst_List_combine=caml_string_of_jsbytes("List.combine"), + cst_List_rev_map2=caml_string_of_jsbytes("List.rev_map2"), + cst_List_init=caml_string_of_jsbytes("List.init"), + cst_List_nth$0=caml_string_of_jsbytes("List.nth"), + cst_nth=caml_string_of_jsbytes("nth"), + cst_List_nth=caml_string_of_jsbytes("List.nth"), + cst_tl=caml_string_of_jsbytes("tl"), + cst_hd=caml_string_of_jsbytes("hd"), + cst_index_out_of_bounds$2=caml_string_of_jsbytes("index out of bounds"), + cst_index_out_of_bounds$1=caml_string_of_jsbytes("index out of bounds"), + cst_index_out_of_bounds$0=caml_string_of_jsbytes("index out of bounds"), + cst_index_out_of_bounds=caml_string_of_jsbytes("index out of bounds"), + cst_Bytes_of_seq_cannot_grow_b= + caml_string_of_jsbytes("Bytes.of_seq: cannot grow bytes"), + cst_String_rcontains_from_Byte= + caml_string_of_jsbytes("String.rcontains_from / Bytes.rcontains_from"), + cst_String_contains_from_Bytes= + caml_string_of_jsbytes("String.contains_from / Bytes.contains_from"), + cst_String_rindex_from_opt_Byt= + caml_string_of_jsbytes("String.rindex_from_opt / Bytes.rindex_from_opt"), + cst_String_rindex_from_Bytes_r= + caml_string_of_jsbytes("String.rindex_from / Bytes.rindex_from"), + cst_String_index_from_opt_Byte= + caml_string_of_jsbytes("String.index_from_opt / Bytes.index_from_opt"), + cst_String_index_from_Bytes_in= + caml_string_of_jsbytes("String.index_from / Bytes.index_from"), + cst_Bytes_concat=caml_string_of_jsbytes("Bytes.concat"), + cst_String_blit_Bytes_blit_str= + caml_string_of_jsbytes("String.blit / Bytes.blit_string"), + cst_Bytes_blit=caml_string_of_jsbytes("Bytes.blit"), + cst_String_fill_Bytes_fill= + caml_string_of_jsbytes("String.fill / Bytes.fill"), + cst_Bytes_extend=caml_string_of_jsbytes("Bytes.extend"), + cst_String_sub_Bytes_sub=caml_string_of_jsbytes("String.sub / Bytes.sub"), + cst_String_rcontains_from_Byte$0= + caml_string_of_jsbytes("String.rcontains_from / Bytes.rcontains_from"), + cst_String_contains_from_Bytes$0= + caml_string_of_jsbytes("String.contains_from / Bytes.contains_from"), + cst_String_rindex_from_opt_Byt$0= + caml_string_of_jsbytes("String.rindex_from_opt / Bytes.rindex_from_opt"), + cst_String_rindex_from_Bytes_r$0= + caml_string_of_jsbytes("String.rindex_from / Bytes.rindex_from"), + cst_String_index_from_opt_Byte$0= + caml_string_of_jsbytes("String.index_from_opt / Bytes.index_from_opt"), + cst_String_index_from_Bytes_in$0= + caml_string_of_jsbytes("String.index_from / Bytes.index_from"), + cst$4=caml_string_of_jsbytes(""), + cst$3=caml_string_of_jsbytes(""), + cst_String_concat=caml_string_of_jsbytes("String.concat"), + empty$1=caml_string_of_jsbytes(""), + cst$5=caml_string_of_jsbytes("()"), + cst_Marshal_from_bytes=caml_string_of_jsbytes("Marshal.from_bytes"), + cst_Marshal_from_bytes$0=caml_string_of_jsbytes("Marshal.from_bytes"), + cst_Marshal_data_size=caml_string_of_jsbytes("Marshal.data_size"), + cst_Marshal_to_buffer_substrin= + caml_string_of_jsbytes("Marshal.to_buffer: substring out of bounds"), + cst_Array_combine=caml_string_of_jsbytes("Array.combine"), + cst_Array_exists2=caml_string_of_jsbytes("Array.exists2"), + cst_Array_for_all2=caml_string_of_jsbytes("Array.for_all2"), + cst_Array_map2_arrays_must_hav= + caml_string_of_jsbytes("Array.map2: arrays must have the same length"), + cst_Array_iter2_arrays_must_ha= + caml_string_of_jsbytes("Array.iter2: arrays must have the same length"), + cst_Array_blit=caml_string_of_jsbytes("Array.blit"), + cst_Array_fill=caml_string_of_jsbytes("Array.fill"), + cst_Array_sub=caml_string_of_jsbytes("Array.sub"), + cst_Array_init=caml_string_of_jsbytes("Array.init"), + cst_Stdlib_Array_Bottom=caml_string_of_jsbytes("Stdlib.Array.Bottom"), + cst_Float_Array_map2_arrays_mu= + caml_string_of_jsbytes + ("Float.Array.map2: arrays must have the same length"), + cst_Float_Array_iter2_arrays_m= + caml_string_of_jsbytes + ("Float.Array.iter2: arrays must have the same length"), + cst_Float_array_blit=caml_string_of_jsbytes("Float.array.blit"), + cst_Float_array_blit$0=caml_string_of_jsbytes("Float.array.blit"), + cst_Float_Array_fill=caml_string_of_jsbytes("Float.Array.fill"), + cst_Float_Array_sub=caml_string_of_jsbytes("Float.Array.sub"), + cst_Float_Array_concat=caml_string_of_jsbytes("Float.Array.concat"), + cst_Float_Array_init=caml_string_of_jsbytes("Float.Array.init"), + cst_Stdlib_Float_Array_Bottom= + caml_string_of_jsbytes("Stdlib.Float.Array.Bottom"), + cst_d=caml_string_of_jsbytes("%d"), + cst_d$0=caml_string_of_jsbytes("%d"), + zero$2=runtime.caml_int64_create_lo_mi_hi(0,0,0), + one$2=runtime.caml_int64_create_lo_mi_hi(1,0,0), + minus_one$2=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65535), + min_int$2=runtime.caml_int64_create_lo_mi_hi(0,0,32768), + max_int$2=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,32767), + cst_d$1=caml_string_of_jsbytes("%d"), + cst_Lexing_lex_refill_cannot_g= + caml_string_of_jsbytes("Lexing.lex_refill: cannot grow buffer"), + dummy_pos=[0,caml_string_of_jsbytes(""),0,0,-1], + zero_pos=[0,caml_string_of_jsbytes(""),1,0,0], + cst_syntax_error=caml_string_of_jsbytes("syntax error"), + cst_Stdlib_Parsing_YYexit=caml_string_of_jsbytes("Stdlib.Parsing.YYexit"), + cst_Stdlib_Parsing_Parse_error= + caml_string_of_jsbytes("Stdlib.Parsing.Parse_error"), + cst_Set_remove_min_elt=caml_string_of_jsbytes("Set.remove_min_elt"), + cst_Set_bal=caml_string_of_jsbytes("Set.bal"), + cst_Set_bal$0=caml_string_of_jsbytes("Set.bal"), + cst_Set_bal$1=caml_string_of_jsbytes("Set.bal"), + cst_Set_bal$2=caml_string_of_jsbytes("Set.bal"), + cst_Map_remove_min_elt=caml_string_of_jsbytes("Map.remove_min_elt"), + cst_Map_bal=caml_string_of_jsbytes("Map.bal"), + cst_Map_bal$0=caml_string_of_jsbytes("Map.bal"), + cst_Map_bal$1=caml_string_of_jsbytes("Map.bal"), + cst_Map_bal$2=caml_string_of_jsbytes("Map.bal"), + cst_Stdlib_Stack_Empty=caml_string_of_jsbytes("Stdlib.Stack.Empty"), + cst_Stdlib_Queue_Empty=caml_string_of_jsbytes("Stdlib.Queue.Empty"), + cst_count=caml_string_of_jsbytes("{count = "), + cst_data=caml_string_of_jsbytes("; data = "), + cst$6=caml_string_of_jsbytes("}"), + cst_Sempty=caml_string_of_jsbytes("Sempty"), + cst_Scons=caml_string_of_jsbytes("Scons ("), + cst$7=caml_string_of_jsbytes(", "), + cst$8=caml_string_of_jsbytes(")"), + cst_Sapp=caml_string_of_jsbytes("Sapp ("), + cst$9=caml_string_of_jsbytes(", "), + cst$10=caml_string_of_jsbytes(")"), + cst_Slazy=caml_string_of_jsbytes("Slazy"), + cst_Sgen=caml_string_of_jsbytes("Sgen"), + cst_Sbuffio=caml_string_of_jsbytes("Sbuffio"), + cst_Stdlib_Stream_Failure=caml_string_of_jsbytes("Stdlib.Stream.Failure"), + cst_Stdlib_Stream_Error=caml_string_of_jsbytes("Stdlib.Stream.Error"), + cst_Buffer_truncate=caml_string_of_jsbytes("Buffer.truncate"), + cst_Buffer_add_channel=caml_string_of_jsbytes("Buffer.add_channel"), + cst_Buffer_add_substring_add_s= + caml_string_of_jsbytes("Buffer.add_substring/add_subbytes"), + cst_Buffer_add_cannot_grow_buf= + caml_string_of_jsbytes("Buffer.add: cannot grow buffer"), + cst_Buffer_nth=caml_string_of_jsbytes("Buffer.nth"), + cst_Buffer_blit=caml_string_of_jsbytes("Buffer.blit"), + cst_Buffer_sub=caml_string_of_jsbytes("Buffer.sub"), + cst_c=caml_string_of_jsbytes("%c"), + cst_s=caml_string_of_jsbytes("%s"), + cst_i=caml_string_of_jsbytes("%i"), + cst_li=caml_string_of_jsbytes("%li"), + cst_ni=caml_string_of_jsbytes("%ni"), + cst_Li=caml_string_of_jsbytes("%Li"), + cst_f=caml_string_of_jsbytes("%f"), + cst_B=caml_string_of_jsbytes("%B"), + cst$21=caml_string_of_jsbytes("%{"), + cst$22=caml_string_of_jsbytes("%}"), + cst$23=caml_string_of_jsbytes("%("), + cst$24=caml_string_of_jsbytes("%)"), + cst_a=caml_string_of_jsbytes("%a"), + cst_t$0=caml_string_of_jsbytes("%t"), + cst$25=caml_string_of_jsbytes("%?"), + cst_r$0=caml_string_of_jsbytes("%r"), + cst_r$1=caml_string_of_jsbytes("%_r"), + cst_u$0=caml_string_of_jsbytes("%u"), + cst_Printf_bad_conversion= + caml_string_of_jsbytes("Printf: bad conversion %["), + cst_Printf_bad_conversion$0= + caml_string_of_jsbytes("Printf: bad conversion %_"), + 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$34=caml_string_of_jsbytes("@{"), + cst$35=caml_string_of_jsbytes("@["), + cst_0=caml_string_of_jsbytes("0"), + cst_padding=caml_string_of_jsbytes("padding"), + cst_precision=caml_string_of_jsbytes("precision"), + cst$40=caml_string_of_jsbytes("'*'"), + cst$38=caml_string_of_jsbytes("'-'"), + cst_0$2=caml_string_of_jsbytes("'0'"), + cst$39=caml_string_of_jsbytes("'*'"), + cst_0$0=caml_string_of_jsbytes("0"), + cst_0$1=caml_string_of_jsbytes("0"), + cst_precision$0=caml_string_of_jsbytes("precision"), + cst_precision$1=caml_string_of_jsbytes("precision"), + cst$41=caml_string_of_jsbytes("'+'"), + cst$42=caml_string_of_jsbytes("'#'"), + cst$43=caml_string_of_jsbytes("' '"), + cst_padding$0=caml_string_of_jsbytes("`padding'"), + cst_precision$2=caml_string_of_jsbytes("`precision'"), + cst$44=caml_string_of_jsbytes("'+'"), + cst$45=caml_string_of_jsbytes("'_'"), + sub_format=[0,0,caml_string_of_jsbytes("")], + formatting_lit=[0,caml_string_of_jsbytes("@;"),1,0], + cst_digit=caml_string_of_jsbytes("digit"), + cst_character=caml_string_of_jsbytes("character ')'"), + cst_character$0=caml_string_of_jsbytes("character '}'"), + cst$49=caml_string_of_jsbytes("'#'"), + cst$46=caml_string_of_jsbytes("'+'"), + cst$47=caml_string_of_jsbytes("'+'"), + cst$48=caml_string_of_jsbytes("' '"), + cst$50=caml_string_of_jsbytes("'+'"), + cst_non_zero_widths_are_unsupp= + caml_string_of_jsbytes + ("non-zero widths are unsupported for %c conversions"), + cst_unexpected_end_of_format= + caml_string_of_jsbytes("unexpected end of format"), + cst$36=caml_string_of_jsbytes(""), + cst$37=caml_string_of_jsbytes(""), + cst_b$0=caml_string_of_jsbytes("b"), + cst_h=caml_string_of_jsbytes("h"), + cst_hov=caml_string_of_jsbytes("hov"), + cst_hv=caml_string_of_jsbytes("hv"), + cst_v=caml_string_of_jsbytes("v"), + cst_nan=caml_string_of_jsbytes("nan"), + cst_neg_infinity=caml_string_of_jsbytes("neg_infinity"), + cst_infinity=caml_string_of_jsbytes("infinity"), + cst$29=caml_string_of_jsbytes("."), + cst_nd$0=caml_string_of_jsbytes("%+nd"), + cst_nd$1=caml_string_of_jsbytes("% nd"), + cst_ni$1=caml_string_of_jsbytes("%+ni"), + cst_ni$2=caml_string_of_jsbytes("% ni"), + cst_nx=caml_string_of_jsbytes("%nx"), + cst_nx$0=caml_string_of_jsbytes("%#nx"), + cst_nX=caml_string_of_jsbytes("%nX"), + cst_nX$0=caml_string_of_jsbytes("%#nX"), + cst_no=caml_string_of_jsbytes("%no"), + cst_no$0=caml_string_of_jsbytes("%#no"), + cst_nd=caml_string_of_jsbytes("%nd"), + cst_ni$0=caml_string_of_jsbytes("%ni"), + cst_nu=caml_string_of_jsbytes("%nu"), + cst_ld$0=caml_string_of_jsbytes("%+ld"), + cst_ld$1=caml_string_of_jsbytes("% ld"), + cst_li$1=caml_string_of_jsbytes("%+li"), + cst_li$2=caml_string_of_jsbytes("% li"), + cst_lx=caml_string_of_jsbytes("%lx"), + cst_lx$0=caml_string_of_jsbytes("%#lx"), + cst_lX=caml_string_of_jsbytes("%lX"), + cst_lX$0=caml_string_of_jsbytes("%#lX"), + cst_lo=caml_string_of_jsbytes("%lo"), + cst_lo$0=caml_string_of_jsbytes("%#lo"), + cst_ld=caml_string_of_jsbytes("%ld"), + cst_li$0=caml_string_of_jsbytes("%li"), + cst_lu=caml_string_of_jsbytes("%lu"), + cst_Ld$0=caml_string_of_jsbytes("%+Ld"), + cst_Ld$1=caml_string_of_jsbytes("% Ld"), + cst_Li$1=caml_string_of_jsbytes("%+Li"), + cst_Li$2=caml_string_of_jsbytes("% Li"), + cst_Lx=caml_string_of_jsbytes("%Lx"), + cst_Lx$0=caml_string_of_jsbytes("%#Lx"), + cst_LX=caml_string_of_jsbytes("%LX"), + cst_LX$0=caml_string_of_jsbytes("%#LX"), + cst_Lo=caml_string_of_jsbytes("%Lo"), + cst_Lo$0=caml_string_of_jsbytes("%#Lo"), + cst_Ld=caml_string_of_jsbytes("%Ld"), + cst_Li$0=caml_string_of_jsbytes("%Li"), + cst_Lu=caml_string_of_jsbytes("%Lu"), + cst_d$3=caml_string_of_jsbytes("%+d"), + cst_d$4=caml_string_of_jsbytes("% d"), + cst_i$1=caml_string_of_jsbytes("%+i"), + cst_i$2=caml_string_of_jsbytes("% i"), + cst_x=caml_string_of_jsbytes("%x"), + cst_x$0=caml_string_of_jsbytes("%#x"), + cst_X$0=caml_string_of_jsbytes("%X"), + cst_X$1=caml_string_of_jsbytes("%#X"), + cst_o=caml_string_of_jsbytes("%o"), + cst_o$0=caml_string_of_jsbytes("%#o"), + cst_d$2=caml_string_of_jsbytes("%d"), + cst_i$0=caml_string_of_jsbytes("%i"), + cst_u=caml_string_of_jsbytes("%u"), + cst$26=caml_string_of_jsbytes("%!"), + cst$27=caml_string_of_jsbytes("@{"), + cst$28=caml_string_of_jsbytes("@["), + cst_0c=caml_string_of_jsbytes("0c"), + cst$20=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("@\n"), + 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$11=caml_string_of_jsbytes(".*"), + cst_CamlinternalFormat_Type_mi= + caml_string_of_jsbytes("CamlinternalFormat.Type_mismatch"), + cst$58=caml_string_of_jsbytes(""), + cst$59=caml_string_of_jsbytes("\n"), + cst_a_boolean=caml_string_of_jsbytes("a boolean"), + cst_an_integer=caml_string_of_jsbytes("an integer"), + cst_an_integer$0=caml_string_of_jsbytes("an integer"), + cst_a_float=caml_string_of_jsbytes("a float"), + cst_a_float$0=caml_string_of_jsbytes("a float"), + cst$55=caml_string_of_jsbytes(""), + cst$56=caml_string_of_jsbytes(" "), + cst$57=caml_string_of_jsbytes(""), + cst_one_of=caml_string_of_jsbytes("one of: "), + cst_Arg_Expand_is_is_only_allo= + caml_string_of_jsbytes + ("Arg.Expand is is only allowed with Arg.parse_and_expand_argv_dynamic"), + cst_no_argument=caml_string_of_jsbytes("no argument"), + cst$54=caml_string_of_jsbytes("(?)"), + cst_help$3=caml_string_of_jsbytes("--help"), + cst_help$4=caml_string_of_jsbytes("-help"), + cst_help$2=caml_string_of_jsbytes("-help"), + cst_Display_this_list_of_optio= + caml_string_of_jsbytes(" Display this list of options"), + cst_help=caml_string_of_jsbytes("-help"), + cst_help$1=caml_string_of_jsbytes("--help"), + cst_Display_this_list_of_optio$0= + caml_string_of_jsbytes(" Display this list of options"), + cst_help$0=caml_string_of_jsbytes("--help"), + cst$51=caml_string_of_jsbytes("}"), + cst$52=caml_string_of_jsbytes("|"), + cst$53=caml_string_of_jsbytes("{"), + cst_none=caml_string_of_jsbytes(""), + cst_Stdlib_Arg_Bad=caml_string_of_jsbytes("Stdlib.Arg.Bad"), + cst_Stdlib_Arg_Help=caml_string_of_jsbytes("Stdlib.Arg.Help"), + cst_Stdlib_Arg_Stop=caml_string_of_jsbytes("Stdlib.Arg.Stop"), + cst$61=caml_string_of_jsbytes(""), + cst_Fatal_error_out_of_memory_= + caml_string_of_jsbytes + ("Fatal error: out of memory in uncaught exception handler"), + cst$65=caml_string_of_jsbytes(""), + cst_Program_not_linked_with_g_= + caml_string_of_jsbytes + ("(Program not linked with -g, cannot print stack backtrace)\n"), + cst_Raised_at=caml_string_of_jsbytes("Raised at"), + cst_Re_raised_at=caml_string_of_jsbytes("Re-raised at"), + cst_Raised_by_primitive_operat= + caml_string_of_jsbytes("Raised by primitive operation at"), + cst_Called_from=caml_string_of_jsbytes("Called from"), + cst_inlined=caml_string_of_jsbytes(" (inlined)"), + cst$64=caml_string_of_jsbytes(""), + partial=[4,0,0,0,[12,45,[4,0,0,0,0]]], + cst_Out_of_memory=caml_string_of_jsbytes("Out of memory"), + cst_Stack_overflow=caml_string_of_jsbytes("Stack overflow"), + cst_Pattern_matching_failed= + caml_string_of_jsbytes("Pattern matching failed"), + cst_Assertion_failed=caml_string_of_jsbytes("Assertion failed"), + cst_Undefined_recursive_module= + caml_string_of_jsbytes("Undefined recursive module"), + cst$62=caml_string_of_jsbytes(""), + cst$63=caml_string_of_jsbytes(""), + cst$60=caml_string_of_jsbytes("_"), + locfmt= + [0, + [11, + caml_string_of_jsbytes('File "'), + [2, + 0, + [11, + caml_string_of_jsbytes('", line '), + [4, + 0, + 0, + 0, + [11, + caml_string_of_jsbytes(", characters "), + [4, + 0, + 0, + 0, + [12,45,[4,0,0,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]]]]]]]], + caml_string_of_jsbytes('File "%s", line %d, characters %d-%d: %s')], + cst_Fun_Finally_raised=caml_string_of_jsbytes("Fun.Finally_raised: "), + cst_Stdlib_Fun_Finally_raised= + caml_string_of_jsbytes("Stdlib.Fun.Finally_raised"), + cst_Digest_from_hex$0=caml_string_of_jsbytes("Digest.from_hex"), + cst_Digest_from_hex=caml_string_of_jsbytes("Digest.from_hex"), + cst_Digest_to_hex=caml_string_of_jsbytes("Digest.to_hex"), + cst_Digest_substring=caml_string_of_jsbytes("Digest.substring"), + cst_Random_int64=caml_string_of_jsbytes("Random.int64"), + cst_Random_int32=caml_string_of_jsbytes("Random.int32"), + cst_Random_full_int=caml_string_of_jsbytes("Random.full_int"), + cst_Random_int=caml_string_of_jsbytes("Random.int"), + cst_x$1=caml_string_of_jsbytes("x"), + cst_Hashtbl_unsupported_hash_t= + caml_string_of_jsbytes("Hashtbl: unsupported hash table format"), + cst_OCAMLRUNPARAM=caml_string_of_jsbytes("OCAMLRUNPARAM"), + cst_CAMLRUNPARAM=caml_string_of_jsbytes("CAMLRUNPARAM"), + cst$66=caml_string_of_jsbytes(""), + cst_Weak_Make_hash_bucket_cann= + caml_string_of_jsbytes("Weak.Make: hash bucket cannot grow more"), + cst_Weak_fill=caml_string_of_jsbytes("Weak.fill"), + cst_Weak_blit=caml_string_of_jsbytes("Weak.blit"), + cst_Weak_check=caml_string_of_jsbytes("Weak.check"), + cst_Weak_get_copy=caml_string_of_jsbytes("Weak.get_copy"), + cst_Weak_get=caml_string_of_jsbytes("Weak.get"), + cst_Weak_set=caml_string_of_jsbytes("Weak.set"), + cst_Weak_create=caml_string_of_jsbytes("Weak.create"), + cst$84=caml_string_of_jsbytes(""), + cst$85=caml_string_of_jsbytes(""), + cst$83=caml_string_of_jsbytes("."), + cst$80=caml_string_of_jsbytes(">"), + cst$81=caml_string_of_jsbytes("<\/"), + cst$82=caml_string_of_jsbytes(""), + cst$77=caml_string_of_jsbytes(">"), + cst$78=caml_string_of_jsbytes("<"), + cst$79=caml_string_of_jsbytes(""), + cst$76=caml_string_of_jsbytes("\n"), + cst_Format_pp_set_geometry= + caml_string_of_jsbytes("Format.pp_set_geometry: "), + 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$68=caml_string_of_jsbytes(""), + cst$69=caml_string_of_jsbytes(""), + cst$70=caml_string_of_jsbytes(""), + cst$71=caml_string_of_jsbytes(""), + cst$67=caml_string_of_jsbytes(""), + cst_Stdlib_Format_String_tag= + caml_string_of_jsbytes("Stdlib.Format.String_tag"), + cst_end_of_input_not_found= + caml_string_of_jsbytes("end of input not found"), + cst_scanf_bad_conversion_a= + caml_string_of_jsbytes('scanf: bad conversion "%a"'), + cst_scanf_bad_conversion_t= + caml_string_of_jsbytes('scanf: bad conversion "%t"'), + cst_scanf_missing_reader=caml_string_of_jsbytes("scanf: missing reader"), + cst_scanf_bad_conversion_custo= + caml_string_of_jsbytes('scanf: bad conversion "%?" (custom converter)'), + cst_scanf_bad_conversion= + caml_string_of_jsbytes('scanf: bad conversion "%*"'), + cst_scanf_bad_conversion$0= + caml_string_of_jsbytes('scanf: bad conversion "%*"'), + cst_scanf_bad_conversion$1= + caml_string_of_jsbytes('scanf: bad conversion "%-"'), + cst_scanf_bad_conversion$2= + caml_string_of_jsbytes('scanf: bad conversion "%*"'), + cst$91=caml_string_of_jsbytes('"'), + cst$92=caml_string_of_jsbytes('"'), + cst$89=caml_string_of_jsbytes('"'), + cst$90=caml_string_of_jsbytes('"'), + cst$88=caml_string_of_jsbytes('"'), + cst_in_format=caml_string_of_jsbytes(' in format "'), + cst_an=caml_string_of_jsbytes("an"), + cst_x$2=caml_string_of_jsbytes("x"), + cst_nfinity=caml_string_of_jsbytes("nfinity"), + cst_digits=caml_string_of_jsbytes("digits"), + cst_decimal_digits=caml_string_of_jsbytes("decimal digits"), + cst_0b=caml_string_of_jsbytes("0b"), + cst_0o=caml_string_of_jsbytes("0o"), + cst_0u=caml_string_of_jsbytes("0u"), + cst_0x=caml_string_of_jsbytes("0x"), + cst_false$3=caml_string_of_jsbytes("false"), + cst_true$3=caml_string_of_jsbytes("true"), + cst_not_a_valid_float_in_hexad= + caml_string_of_jsbytes("not a valid float in hexadecimal notation"), + cst_no_dot_or_exponent_part_fo= + caml_string_of_jsbytes("no dot or exponent part found in float token"), + cst$87=caml_string_of_jsbytes("-"), + cst_unnamed_function=caml_string_of_jsbytes("unnamed function"), + cst_unnamed_character_string= + caml_string_of_jsbytes("unnamed character string"), + cst_unnamed_Stdlib_input_chann= + caml_string_of_jsbytes("unnamed Stdlib input channel"), + cst$86=caml_string_of_jsbytes("-"), + cst_Stdlib_Scanf_Scan_failure= + caml_string_of_jsbytes("Stdlib.Scanf.Scan_failure"), + cst_binary=caml_string_of_jsbytes("binary"), + cst_octal=caml_string_of_jsbytes("octal"), + cst_hexadecimal=caml_string_of_jsbytes("hexadecimal"), + cst_a_Char=caml_string_of_jsbytes("a Char"), + cst_a_String=caml_string_of_jsbytes("a String"), + cst$93=caml_string_of_jsbytes(""), + cst_CamlinternalMod_update_mod= + caml_string_of_jsbytes("CamlinternalMod.update_mod: not a module"), + cst_CamlinternalMod_init_mod_n= + caml_string_of_jsbytes("CamlinternalMod.init_mod: not a module"), + cst$94=caml_string_of_jsbytes(""), + cst$95=caml_string_of_jsbytes(""), + cst$96=caml_string_of_jsbytes(""), + cst$97=caml_string_of_jsbytes(""), + cst$99=caml_string_of_jsbytes(""), + cst$98=caml_string_of_jsbytes(""), + cst_Illegal_character=caml_string_of_jsbytes("Illegal character "), + cst_Filename_chop_extension= + caml_string_of_jsbytes("Filename.chop_extension"), + cst$127=caml_string_of_jsbytes(""), + cst_Filename_chop_suffix=caml_string_of_jsbytes("Filename.chop_suffix"), + cst$126=caml_string_of_jsbytes(""), + cst_2_1$0=caml_string_of_jsbytes(" 2>&1"), + cst_2$0=caml_string_of_jsbytes(" 2>"), + cst$125=caml_string_of_jsbytes(""), + cst$117=caml_string_of_jsbytes(" >"), + cst$124=caml_string_of_jsbytes(""), + cst$118=caml_string_of_jsbytes(" <"), + cst$123=caml_string_of_jsbytes(""), + cst$119=caml_string_of_jsbytes(" "), + cst$120=caml_string_of_jsbytes(" "), + cst$121=caml_string_of_jsbytes('"'), + cst$122=caml_string_of_jsbytes(""), + cst_Filename_quote_command_bad= + caml_string_of_jsbytes("Filename.quote_command: bad file name "), + cst$115=caml_string_of_jsbytes('"'), + cst$116=caml_string_of_jsbytes('"'), + cst$113=caml_string_of_jsbytes("./"), + cst$112=caml_string_of_jsbytes(".\\"), + cst$111=caml_string_of_jsbytes("../"), + cst$110=caml_string_of_jsbytes("..\\"), + cst_2_1=caml_string_of_jsbytes(" 2>&1"), + cst_2=caml_string_of_jsbytes(" 2>"), + cst$109=caml_string_of_jsbytes(""), + cst$104=caml_string_of_jsbytes(" >"), + cst$108=caml_string_of_jsbytes(""), + cst$105=caml_string_of_jsbytes(" <"), + cst$107=caml_string_of_jsbytes(""), + cst$106=caml_string_of_jsbytes(" "), + cst$103=caml_string_of_jsbytes("./"), + cst$102=caml_string_of_jsbytes("../"), + cst$101=caml_string_of_jsbytes(""), + cst$100=caml_string_of_jsbytes(""), + null$0=caml_string_of_jsbytes("/dev/null"), + current_dir_name=caml_string_of_jsbytes("."), + parent_dir_name=caml_string_of_jsbytes(".."), + dir_sep=caml_string_of_jsbytes("/"), + cst_TMPDIR=caml_string_of_jsbytes("TMPDIR"), + cst_tmp=caml_string_of_jsbytes("/tmp"), + quotequote=caml_string_of_jsbytes("'\\''"), + null$1=caml_string_of_jsbytes("NUL"), + current_dir_name$0=caml_string_of_jsbytes("."), + parent_dir_name$0=caml_string_of_jsbytes(".."), + dir_sep$0=caml_string_of_jsbytes("\\"), + cst_TEMP=caml_string_of_jsbytes("TEMP"), + cst$114=caml_string_of_jsbytes("."), + null$2=caml_string_of_jsbytes("/dev/null"), + current_dir_name$1=caml_string_of_jsbytes("."), + parent_dir_name$1=caml_string_of_jsbytes(".."), + dir_sep$1=caml_string_of_jsbytes("/"), + cst_Cygwin=caml_string_of_jsbytes("Cygwin"), + cst_Win32=caml_string_of_jsbytes("Win32"), + zero$4=[254,0.,0.], + one$4=[254,1.,0.], + i=[254,0.,1.], + cst_Bigarray_array3_of_genarra= + caml_string_of_jsbytes("Bigarray.array3_of_genarray"), + cst_Bigarray_array2_of_genarra= + caml_string_of_jsbytes("Bigarray.array2_of_genarray"), + cst_Bigarray_array1_of_genarra= + caml_string_of_jsbytes("Bigarray.array1_of_genarray"), + cst_Bigarray_array0_of_genarra= + caml_string_of_jsbytes("Bigarray.array0_of_genarray"), + cst_Bigarray_Array3_of_array_n= + caml_string_of_jsbytes("Bigarray.Array3.of_array: non-cubic data"), + cst_Bigarray_Array3_of_array_n$0= + caml_string_of_jsbytes("Bigarray.Array3.of_array: non-cubic data"), + cst_Bigarray_Array2_of_array_n= + caml_string_of_jsbytes("Bigarray.Array2.of_array: non-rectangular data"), + cst_In_channel_input_all_chann= + caml_string_of_jsbytes + ("In_channel.input_all: channel content is larger than maximum string length"), + Invalid_argument=global_data.Invalid_argument, + Failure=global_data.Failure, + Match_failure=global_data.Match_failure, + Assert_failure=global_data.Assert_failure, + Not_found=global_data.Not_found, + Out_of_memory=global_data.Out_of_memory, + Stack_overflow=global_data.Stack_overflow, + Sys_error=global_data.Sys_error, + End_of_file=global_data.End_of_file, + Division_by_zero=global_data.Division_by_zero, + Sys_blocked_io=global_data.Sys_blocked_io, + Undefined_recursive_module=global_data.Undefined_recursive_module, + _l_=[0,0,[0,6,0]], + _k_=[0,0,[0,7,0]], + _j_=[0,1,[0,3,[0,4,[0,6,0]]]], + _i_=[0,1,[0,3,[0,4,[0,7,0]]]], + _g_=[0,1], + _h_=[0,0], + _a_=runtime.caml_int64_create_lo_mi_hi(0,0,32752), + _b_=runtime.caml_int64_create_lo_mi_hi(0,0,65520), + _c_=runtime.caml_int64_create_lo_mi_hi(1,0,32752), + _d_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,32751), + _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_= + [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_= + [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_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(": at character number "), + [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], + _aM_=[1,1], + _aO_=[1,1], + _aN_=[1,1], + _aS_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(": at character number "), + [4, + 0, + 0, + 0, + [11, + caml_string_of_jsbytes(", flag "), + [1, + [11, + caml_string_of_jsbytes(" is only allowed after the '"), + [12, + 37, + [11, + caml_string_of_jsbytes("', before padding and precision"), + 0]]]]]]]]], + caml_string_of_jsbytes + ("invalid format %S: at character number %d, flag %C is only allowed after the '%%', before padding and precision")], + _aP_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(": at character number "), + [4, + 0, + 0, + 0, + [11, + caml_string_of_jsbytes(', invalid conversion "'), + [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_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(": '"), + [12, + 37, + [11, + caml_string_of_jsbytes + ("' alone is not accepted in character sets, use "), + [12, + 37, + [12, + 37, + [11, + caml_string_of_jsbytes(" instead at position "), + [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_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(": integer "), + [4, + 0, + 0, + 0, + [11, + caml_string_of_jsbytes(" is greater than the limit "), + [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_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(': unclosed sub-format, expected "'), + [12, + 37, + [0, + [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_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(": at character number "), + [4, + 0, + 0, + 0, + [11, + caml_string_of_jsbytes(", "), + [2, + 0, + [11, + caml_string_of_jsbytes(" is incompatible with '"), + [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_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(": at character number "), + [4, + 0, + 0, + 0, + [11, + caml_string_of_jsbytes(", "), + [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_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(": at character number "), + [4, + 0, + 0, + 0, + [11, + caml_string_of_jsbytes(", '"), + [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_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + 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_= + [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")], + _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_= + [0, + [2, + 0, + [11, + 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_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes(": wrong argument '"), + [2, + 0, + [11, + caml_string_of_jsbytes("'; option '"), + [2, + 0, + [11, + caml_string_of_jsbytes("' expects "), + [2,0,[11,caml_string_of_jsbytes(".\n"),0]]]]]]]], + caml_string_of_jsbytes + ("%s: wrong argument '%s'; option '%s' expects %s.\n")], + _be_= + [0, + [2, + 0, + [11, + 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_= + [0, + [2, + 0, + [11, + 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_= + [0, + [11,caml_string_of_jsbytes(" "),[2,0,[12,32,[2,0,[12,10,0]]]]], + caml_string_of_jsbytes(" %s %s\n")], + _a8_= + [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_= + [0, + [11,caml_string_of_jsbytes(", "),[2,0,[2,0,0]]], + caml_string_of_jsbytes(", %s%s")], + _bH_= + [0, + [11,caml_string_of_jsbytes("Fatal error: exception "),[2,0,[12,10,0]]], + caml_string_of_jsbytes("Fatal error: exception %s\n")], + _bI_= + [0, + [11, + caml_string_of_jsbytes + ("Fatal error in uncaught exception handler: exception "), + [2,0,[12,10,0]]], + caml_string_of_jsbytes + ("Fatal error in uncaught exception handler: exception %s\n")], + _bG_= + [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_= + [0, + [11, + caml_string_of_jsbytes + ("(Program not linked with -g, cannot print stack backtrace)\n"), + 0], + caml_string_of_jsbytes + ("(Program not linked with -g, cannot print stack backtrace)\n")], + _bA_= + [0, + [2, + 0, + [12, + 32, + [2, + 0, + [11, + caml_string_of_jsbytes(' in file "'), + [2, + 0, + [12, + 34, + [2, + 0, + [11, + caml_string_of_jsbytes(", line "), + [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_= + [0, + [2,0,[11,caml_string_of_jsbytes(" unknown location"),0]], + caml_string_of_jsbytes("%s unknown location")], + _bz_= + [0, + [11,caml_string_of_jsbytes("Uncaught exception: "),[2,0,[12,10,0]]], + caml_string_of_jsbytes("Uncaught exception: %s\n")], + _by_= + [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_= + [0, + caml_string_of_jsbytes(""), + caml_string_of_jsbytes + ("(Cannot print locations:\n bytecode executable program file not found)"), + caml_string_of_jsbytes + ("(Cannot print locations:\n bytecode executable program file appears to be corrupt)"), + caml_string_of_jsbytes + ("(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_= + [0, + [11, + caml_string_of_jsbytes("minor_collections: "), + [4,0,0,0,[12,10,0]]], + caml_string_of_jsbytes("minor_collections: %d\n")], + _bQ_= + [0, + [11, + caml_string_of_jsbytes("major_collections: "), + [4,0,0,0,[12,10,0]]], + caml_string_of_jsbytes("major_collections: %d\n")], + _bR_= + [0, + [11, + caml_string_of_jsbytes("compactions: "), + [4,0,0,0,[12,10,0]]], + caml_string_of_jsbytes("compactions: %d\n")], + _bS_= + [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_= + [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_= + [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_= + [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_= + [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_= + [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_= + [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_= + [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_= + [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_= + [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_= + [0, + [11,caml_string_of_jsbytes("live_blocks: "),[4,0,0,0,[12,10,0]]], + caml_string_of_jsbytes("live_blocks: %d\n")], + _b8_= + [0, + [11,caml_string_of_jsbytes("free_blocks: "),[4,0,0,0,[12,10,0]]], + caml_string_of_jsbytes("free_blocks: %d\n")], + _b9_= + [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_= + [0, + 987910699, + 495797812, + 364182224, + 414272206, + 318284740, + 990407751, + 383018966, + 270373319, + 840823159, + 24560019, + 536292337, + 512266505, + 189156120, + 730249596, + 143776328, + 51606627, + 140166561, + 366354223, + 1003410265, + 700563762, + 981890670, + 913149062, + 526082594, + 1021425055, + 784300257, + 667753350, + 630144451, + 949649812, + 48546892, + 415514493, + 258888527, + 511570777, + 89983870, + 283659902, + 308386020, + 242688715, + 482270760, + 865188196, + 1027664170, + 207196989, + 193777847, + 619708188, + 671350186, + 149669678, + 257044018, + 87658204, + 558145612, + 183450813, + 28133145, + 901332182, + 710253903, + 510646120, + 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_= + [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_= + [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_= + [0, + [11, + caml_string_of_jsbytes("bad character hexadecimal encoding \\"), + [0,[0,0]]], + caml_string_of_jsbytes("bad character hexadecimal encoding \\%c%c")], + _cA_= + [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_= + [0, + [11, + caml_string_of_jsbytes("character "), + [1, + [11, + 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_= + [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_= + [0, + [11,caml_string_of_jsbytes("invalid boolean '"),[2,0,[12,39,0]]], + caml_string_of_jsbytes("invalid boolean '%s'")], + _cv_= + [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_= + [0, + [11, + caml_string_of_jsbytes("scanning of "), + [2, + 0, + [11, + caml_string_of_jsbytes + (" failed: premature end of file occurred before end of token"), + 0]]], + caml_string_of_jsbytes + ("scanning of %s failed: premature end of file occurred before end of token")], + _ct_= + [0, + [11, + caml_string_of_jsbytes("scanning of "), + [2, + 0, + [11, + caml_string_of_jsbytes + (" failed: the specified length was too short for token"), + 0]]], + caml_string_of_jsbytes + ("scanning of %s failed: the specified length was too short for token")], + _cs_= + [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], + _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]; + function erase_rel(param) + {if(typeof param === "number") + return 0; + else + switch(param[0]) + {case 0:var rest=param[1];return [0,erase_rel(rest)]; + case 1:var rest$0=param[1];return [1,erase_rel(rest$0)]; + case 2:var rest$1=param[1];return [2,erase_rel(rest$1)]; + case 3:var rest$2=param[1];return [3,erase_rel(rest$2)]; + case 4:var rest$3=param[1];return [4,erase_rel(rest$3)]; + case 5:var rest$4=param[1];return [5,erase_rel(rest$4)]; + case 6:var rest$5=param[1];return [6,erase_rel(rest$5)]; + case 7:var rest$6=param[1];return [7,erase_rel(rest$6)]; + case 8: + var rest$7=param[2],ty=param[1];return [8,ty,erase_rel(rest$7)]; + case 9: + var rest$8=param[3],ty1=param[1]; + return [9,ty1,ty1,erase_rel(rest$8)]; + case 10:var rest$9=param[1];return [10,erase_rel(rest$9)]; + case 11:var rest$10=param[1];return [11,erase_rel(rest$10)]; + case 12:var rest$11=param[1];return [12,erase_rel(rest$11)]; + case 13:var rest$12=param[1];return [13,erase_rel(rest$12)]; + default:var rest$13=param[1];return [14,erase_rel(rest$13)]}} + function concat_fmtty(fmtty1,fmtty2) + {if(typeof fmtty1 === "number") + return fmtty2; + else + switch(fmtty1[0]) + {case 0:var rest=fmtty1[1];return [0,concat_fmtty(rest,fmtty2)]; + case 1:var rest$0=fmtty1[1];return [1,concat_fmtty(rest$0,fmtty2)]; + case 2:var rest$1=fmtty1[1];return [2,concat_fmtty(rest$1,fmtty2)]; + case 3:var rest$2=fmtty1[1];return [3,concat_fmtty(rest$2,fmtty2)]; + case 4:var rest$3=fmtty1[1];return [4,concat_fmtty(rest$3,fmtty2)]; + case 5:var rest$4=fmtty1[1];return [5,concat_fmtty(rest$4,fmtty2)]; + case 6:var rest$5=fmtty1[1];return [6,concat_fmtty(rest$5,fmtty2)]; + case 7:var rest$6=fmtty1[1];return [7,concat_fmtty(rest$6,fmtty2)]; + case 8: + var rest$7=fmtty1[2],ty=fmtty1[1]; + return [8,ty,concat_fmtty(rest$7,fmtty2)]; + case 9: + var rest$8=fmtty1[3],ty2=fmtty1[2],ty1=fmtty1[1]; + return [9,ty1,ty2,concat_fmtty(rest$8,fmtty2)]; + case 10:var rest$9=fmtty1[1];return [10,concat_fmtty(rest$9,fmtty2)]; + case 11: + var rest$10=fmtty1[1];return [11,concat_fmtty(rest$10,fmtty2)]; + case 12: + var rest$11=fmtty1[1];return [12,concat_fmtty(rest$11,fmtty2)]; + case 13: + var rest$12=fmtty1[1];return [13,concat_fmtty(rest$12,fmtty2)]; + default: + var rest$13=fmtty1[1];return [14,concat_fmtty(rest$13,fmtty2)]}} + function concat_fmt(fmt1,fmt2) + {if(typeof fmt1 === "number") + return fmt2; + else + switch(fmt1[0]) + {case 0:var rest=fmt1[1];return [0,concat_fmt(rest,fmt2)]; + case 1:var rest$0=fmt1[1];return [1,concat_fmt(rest$0,fmt2)]; + case 2: + var rest$1=fmt1[2],pad=fmt1[1]; + return [2,pad,concat_fmt(rest$1,fmt2)]; + case 3: + var rest$2=fmt1[2],pad$0=fmt1[1]; + return [3,pad$0,concat_fmt(rest$2,fmt2)]; + case 4: + var rest$3=fmt1[4],prec=fmt1[3],pad$1=fmt1[2],iconv=fmt1[1]; + return [4,iconv,pad$1,prec,concat_fmt(rest$3,fmt2)]; + case 5: + var rest$4=fmt1[4],prec$0=fmt1[3],pad$2=fmt1[2],iconv$0=fmt1[1]; + return [5,iconv$0,pad$2,prec$0,concat_fmt(rest$4,fmt2)]; + case 6: + var rest$5=fmt1[4],prec$1=fmt1[3],pad$3=fmt1[2],iconv$1=fmt1[1]; + return [6,iconv$1,pad$3,prec$1,concat_fmt(rest$5,fmt2)]; + case 7: + var rest$6=fmt1[4],prec$2=fmt1[3],pad$4=fmt1[2],iconv$2=fmt1[1]; + return [7,iconv$2,pad$4,prec$2,concat_fmt(rest$6,fmt2)]; + case 8: + var rest$7=fmt1[4],prec$3=fmt1[3],pad$5=fmt1[2],fconv=fmt1[1]; + return [8,fconv,pad$5,prec$3,concat_fmt(rest$7,fmt2)]; + case 9: + var rest$8=fmt1[2],pad$6=fmt1[1]; + return [9,pad$6,concat_fmt(rest$8,fmt2)]; + case 10:var rest$9=fmt1[1];return [10,concat_fmt(rest$9,fmt2)]; + case 11: + var rest$10=fmt1[2],str=fmt1[1]; + return [11,str,concat_fmt(rest$10,fmt2)]; + case 12: + var rest$11=fmt1[2],chr=fmt1[1]; + return [12,chr,concat_fmt(rest$11,fmt2)]; + case 13: + var rest$12=fmt1[3],fmtty=fmt1[2],pad$7=fmt1[1]; + return [13,pad$7,fmtty,concat_fmt(rest$12,fmt2)]; + case 14: + var rest$13=fmt1[3],fmtty$0=fmt1[2],pad$8=fmt1[1]; + return [14,pad$8,fmtty$0,concat_fmt(rest$13,fmt2)]; + case 15:var rest$14=fmt1[1];return [15,concat_fmt(rest$14,fmt2)]; + case 16:var rest$15=fmt1[1];return [16,concat_fmt(rest$15,fmt2)]; + case 17: + var rest$16=fmt1[2],fmting_lit=fmt1[1]; + return [17,fmting_lit,concat_fmt(rest$16,fmt2)]; + case 18: + var rest$17=fmt1[2],fmting_gen=fmt1[1]; + return [18,fmting_gen,concat_fmt(rest$17,fmt2)]; + case 19:var rest$18=fmt1[1];return [19,concat_fmt(rest$18,fmt2)]; + case 20: + var rest$19=fmt1[3],char_set=fmt1[2],width_opt=fmt1[1]; + return [20,width_opt,char_set,concat_fmt(rest$19,fmt2)]; + case 21: + var rest$20=fmt1[2],counter=fmt1[1]; + return [21,counter,concat_fmt(rest$20,fmt2)]; + case 22:var rest$21=fmt1[1];return [22,concat_fmt(rest$21,fmt2)]; + case 23: + var rest$22=fmt1[2],ign=fmt1[1]; + return [23,ign,concat_fmt(rest$22,fmt2)]; + default: + var rest$23=fmt1[3],f=fmt1[2],arity=fmt1[1]; + return [24,arity,f,concat_fmt(rest$23,fmt2)]}} + var CamlinternalFormatBasics=[0,concat_fmtty,erase_rel,concat_fmt]; + caml_register_global + (761,CamlinternalFormatBasics,"CamlinternalFormatBasics"); + function make(v){return [0,v]} + function get(r){return r[1]} + function set(r,v){r[1] = v;return 0} + function exchange(r,v){var cur=r[1];r[1] = v;return cur} + function compare_and_set(r,seen,v) + {var cur=r[1];return cur === seen?(r[1] = v,1):0} + function fetch_and_add(r,n){var cur=r[1];r[1] = cur + n | 0;return cur} + function incr(r){fetch_and_add(r,1);return 0} + function decr(r){fetch_and_add(r,-1);return 0} + var + include= + [0,make,get,set,exchange,compare_and_set,fetch_and_add,incr,decr]; + caml_register_global(762,include,"CamlinternalAtomic"); + function failwith(s){throw [0,Failure,s]} + function invalid_arg(s){throw [0,Invalid_argument,s]} + var Exit=[248,cst_Stdlib_Exit,caml_fresh_oo_id(0)]; + function min(x,y){return caml_lessequal(x,y)?x:y} + function max(x,y){return caml_greaterequal(x,y)?x:y} + function abs(x){return 0 <= x?x:- x | 0} + function lnot(x){return x ^ -1} + var + infinity=caml_int64_float_of_bits(_a_), + neg_infinity=caml_int64_float_of_bits(_b_), + nan=caml_int64_float_of_bits(_c_), + max_float=caml_int64_float_of_bits(_d_), + min_float=caml_int64_float_of_bits(_e_), + epsilon=caml_int64_float_of_bits(_f_), + max_int=2147483647, + min_int=-2147483648; + function cat(s1,s2) + {var + l1=caml_ml_string_length(s1), + l2=caml_ml_string_length(s2), + s=caml_create_bytes(l1 + l2 | 0); + caml_blit_string(s1,0,s,0,l1); + caml_blit_string(s2,0,s,l1,l2); + return caml_string_of_bytes(s)} + function char_of_int(n) + {if(0 <= n && ! (255 < n))return n;return invalid_arg(cst_char_of_int)} + function string_of_bool(b){return b?cst_true:cst_false} + function bool_of_string(param) + {return caml_string_notequal(param,cst_false$0) + ?caml_string_notequal(param,cst_true$0) + ?invalid_arg(cst_bool_of_string) + :1 + :0} + function bool_of_string_opt(param) + {return caml_string_notequal(param,cst_false$1) + ?caml_string_notequal(param,cst_true$1)?0:_g_ + :_h_} + 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_}} + function valid_float_lexem(s) + {var l=caml_ml_string_length(s),i=0; + for(;;) + {if(l <= i)return cat(s,cst); + var match=caml_string_get(s,i),switch$0=0; + if(48 <= match) + {if(! (58 <= match))switch$0 = 1} + else + if(45 === match)switch$0 = 1; + if(switch$0){var i$0=i + 1 | 0,i=i$0;continue} + return s}} + function to_string(f) + {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_}} + function append(l1,l2) + {if(l1){var tl=l1[2],hd=l1[1];return [0,hd,append(tl,l2)]}return l2} + var + stdin=caml_ml_open_descriptor_in(0), + stdout=caml_ml_open_descriptor_out(1), + stderr=caml_ml_open_descriptor_out(2); + function open_gen(mode,perm,name) + {var c=caml_ml_open_descriptor_out(caml_sys_open(name,mode,perm)); + caml_ml_set_channel_name(c,name); + return c} + function open_text(name){return open_gen(_i_,438,name)} + function open_bin(name){return open_gen(_j_,438,name)} + function flush_all(param) + {function iter(param) + {var param$0=param; + for(;;) + {if(param$0) + {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_} + var param$0=l; + continue} + return 0}} + return iter(runtime.caml_ml_out_channels_list(0))} + function output_bytes(oc,s) + {return caml_ml_output_bytes(oc,s,0,caml_ml_bytes_length(s))} + function output_string(oc,s) + {return caml_ml_output(oc,s,0,caml_ml_string_length(s))} + function output(oc,s,ofs,len) + {if + (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) + return caml_ml_output_bytes(oc,s,ofs,len); + return invalid_arg(cst_output)} + function output_substring(oc,s,ofs,len) + {if + (0 + <= + ofs + && + 0 + <= + len + && + ! + ((caml_ml_string_length(s) - len | 0) < ofs)) + return caml_ml_output(oc,s,ofs,len); + return invalid_arg(cst_output_substring)} + 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 + {var _Ex_=caml_ml_close_channel(oc);return _Ex_} + catch(_Ey_){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); + return c} + function open_text$0(name){return open_gen$0(_k_,0,name)} + function open_bin$0(name){return open_gen$0(_l_,0,name)} + function input(ic,s,ofs,len) + {if + (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) + return caml_ml_input(ic,s,ofs,len); + return invalid_arg(cst_input)} + function unsafe_really_input(ic,s,ofs,len) + {var ofs$0=ofs,len$0=len; + for(;;) + {if(0 < len$0) + {var r=caml_ml_input(ic,s,ofs$0,len$0); + if(0 === r)throw End_of_file; + var len$1=len$0 - r | 0,ofs$1=ofs$0 + r | 0,ofs$0=ofs$1,len$0=len$1; + continue} + return 0}} + function really_input(ic,s,ofs,len) + {if + (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) + return unsafe_really_input(ic,s,ofs,len); + return invalid_arg(cst_really_input)} + function really_input_string(ic,len) + {var s=caml_create_bytes(len); + really_input(ic,s,0,len); + return caml_string_of_bytes(s)} + function input_line(chan) + {function build_result(buf,pos,param) + {var pos$0=pos,param$0=param; + for(;;) + {if(param$0) + {var tl=param$0[2],hd=param$0[1],len=caml_ml_bytes_length(hd); + caml_blit_bytes(hd,0,buf,pos$0 - len | 0,len); + var pos$1=pos$0 - len | 0,pos$0=pos$1,param$0=tl; + continue} + return buf}} + var accu=0,len=0; + for(;;) + {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)} + else + {if(! (0 < n)) + {var beg=caml_create_bytes(- n | 0); + caml_ml_input(chan,beg,0,- n | 0); + var len$1=len - n | 0,accu$0=[0,beg,accu],accu=accu$0,len=len$1; + continue} + var res=caml_create_bytes(n - 1 | 0); + caml_ml_input(chan,res,0,n - 1 | 0); + caml_ml_input_char(chan); + if(accu) + var + len$0=(len + n | 0) - 1 | 0, + _Ew_=build_result(caml_create_bytes(len$0),len$0,[0,res,accu]); + else + var _Ew_=res} + return caml_string_of_bytes(_Ew_)}} + function close_noerr$0(ic) + {try + {var _Eu_=caml_ml_close_channel(ic);return _Eu_} + catch(_Ev_){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)} + function print_int(i) + {return output_string(stdout,caml_string_of_jsbytes("" + i))} + function print_float(f){return output_string(stdout,to_string(f))} + function print_endline(s) + {output_string(stdout,s); + caml_ml_output_char(stdout,10); + return caml_ml_flush(stdout)} + function print_newline(param) + {caml_ml_output_char(stdout,10);return caml_ml_flush(stdout)} + function prerr_char(c){return caml_ml_output_char(stderr,c)} + function prerr_string(s){return output_string(stderr,s)} + function prerr_bytes(s){return output_bytes(stderr,s)} + function prerr_int(i) + {return output_string(stderr,caml_string_of_jsbytes("" + i))} + function prerr_float(f){return output_string(stderr,to_string(f))} + function prerr_endline(s) + {output_string(stderr,s); + caml_ml_output_char(stderr,10); + return caml_ml_flush(stderr)} + function prerr_newline(param) + {caml_ml_output_char(stderr,10);return caml_ml_flush(stderr)} + function read_line(param){caml_ml_flush(stdout);return input_line(stdin)} + function read_int(param){return caml_int_of_string(read_line(0))} + function read_int_opt(param){return int_of_string_opt(read_line(0))} + 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_) + {var + str2=_Es_[2], + fmt2=_Es_[1], + str1=param[2], + fmt1=param[1], + _Et_=cat(str1,cat(cst$0,str2)); + return [0,concat_fmt(fmt1,fmt2),_Et_]} + var exit_function=[0,flush_all]; + function at_exit(f) + {for(;;) + {var + f_yet_to_run=[0,1], + old_exit=exit_function[1], + new_exit$0= + function(f_yet_to_run,old_exit) + {function new_exit(param) + {if(compare_and_set(f_yet_to_run,1,0))caml_call1(f,0); + return caml_call1(old_exit,0)} + 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_}} + 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)} + caml_register_named_value + (caml_string_of_jsbytes("Pervasives.do_at_exit"),do_at_exit); + var + _m_= + [0, + runtime.caml_ml_seek_out_64, + runtime.caml_ml_pos_out_64, + caml_ml_channel_size_64, + runtime.caml_ml_seek_in_64, + runtime.caml_ml_pos_in_64, + caml_ml_channel_size_64], + set_binary_mode=caml_ml_set_binary_mode, + close$0=caml_ml_close_channel, + in_channel_length=caml_ml_channel_size, + pos_in=caml_ml_pos_in, + seek_in=runtime.caml_ml_seek_in, + input_value=caml_input_value, + input_binary_int=runtime.caml_ml_input_int, + input_byte=caml_ml_input_char, + input_char=caml_ml_input_char, + set_binary_mode$0=caml_ml_set_binary_mode, + out_channel_length=caml_ml_channel_size, + pos_out=runtime.caml_ml_pos_out, + seek_out=runtime.caml_ml_seek_out, + output_binary_int=runtime.caml_ml_output_int, + output_byte=caml_ml_output_char, + output_char=caml_ml_output_char, + flush=caml_ml_flush, + Stdlib= + [0, + invalid_arg, + failwith, + Exit, + Match_failure, + Assert_failure, + Invalid_argument, + Failure, + Not_found, + Out_of_memory, + Stack_overflow, + Sys_error, + End_of_file, + Division_by_zero, + Sys_blocked_io, + Undefined_recursive_module, + min, + max, + abs, + max_int, + min_int, + lnot, + infinity, + neg_infinity, + nan, + max_float, + min_float, + epsilon, + cat, + char_of_int, + string_of_bool, + bool_of_string_opt, + bool_of_string, + string_of_int, + int_of_string_opt, + to_string, + of_string_opt, + append, + stdin, + stdout, + stderr, + print_char, + print_string, + print_bytes, + print_int, + print_float, + print_endline, + print_newline, + prerr_char, + prerr_string, + prerr_bytes, + prerr_int, + prerr_float, + prerr_endline, + prerr_newline, + read_line, + read_int_opt, + read_int, + read_float_opt, + read_float, + open_text, + open_bin, + open_gen, + flush, + flush_all, + output_char, + output_string, + output_bytes, + output, + output_substring, + output_byte, + output_binary_int, + output_value, + seek_out, + pos_out, + out_channel_length, + close, + close_noerr, + set_binary_mode$0, + open_text$0, + open_bin$0, + open_gen$0, + input_char, + input_line, + input, + really_input, + really_input_string, + input_byte, + input_binary_int, + input_value, + seek_in, + pos_in, + in_channel_length, + close$0, + close_noerr$0, + set_binary_mode, + _m_, + string_of_format, + symbol, + exit, + at_exit, + valid_float_lexem, + unsafe_really_input, + do_at_exit]; + caml_register_global(775,Stdlib,"Stdlib"); + var + Exit$0=[248,cst_Stdlib_Pervasives_Exit,caml_fresh_oo_id(0)], + Stdlib_Pervasives= + [0, + invalid_arg, + failwith, + Exit$0, + min, + max, + abs, + max_int, + min_int, + lnot, + infinity, + neg_infinity, + nan, + max_float, + min_float, + epsilon, + cat, + char_of_int, + string_of_bool, + bool_of_string, + bool_of_string_opt, + string_of_int, + int_of_string_opt, + to_string, + of_string_opt, + append, + stdin, + stdout, + stderr, + print_char, + print_string, + print_bytes, + print_int, + print_float, + print_endline, + print_newline, + prerr_char, + prerr_string, + prerr_bytes, + prerr_int, + prerr_float, + prerr_endline, + prerr_newline, + read_line, + read_int, + read_int_opt, + read_float, + read_float_opt, + open_text, + open_bin, + open_gen, + flush, + flush_all, + output_char, + output_string, + output_bytes, + output, + output_substring, + output_byte, + output_binary_int, + output_value, + seek_out, + pos_out, + out_channel_length, + close, + close_noerr, + set_binary_mode$0, + open_text$0, + open_bin$0, + open_gen$0, + input_char, + input_line, + input, + really_input, + really_input_string, + input_byte, + input_binary_int, + input_value, + seek_in, + pos_in, + in_channel_length, + close$0, + close_noerr$0, + set_binary_mode, + string_of_format, + symbol, + exit, + at_exit, + valid_float_lexem, + do_at_exit]; + caml_register_global(776,Stdlib_Pervasives,"Stdlib__Pervasives"); + function left(v){return [0,v]} + function right(v){return [1,v]} + function is_left(param){return 0 === param[0]?1:0} + function is_right(param){return 0 === param[0]?0:1} + function find_left(param) + {if(0 === param[0]){var v=param[1];return [0,v]}return 0} + function find_right(param) + {if(0 === param[0])return 0;var v=param[1];return [0,v]} + function map_left(f,e) + {if(0 === e[0]){var v=e[1];return [0,caml_call1(f,v)]}return e} + function map_right(f,e) + {if(0 === e[0])return e;var v=e[1];return [1,caml_call1(f,v)]} + function map(left,right,param) + {if(0 === param[0]){var v=param[1];return [0,caml_call1(left,v)]} + var v$0=param[1]; + return [1,caml_call1(right,v$0)]} + function fold(left,right,param) + {if(0 === param[0]){var v=param[1];return caml_call1(left,v)} + var v$0=param[1]; + 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)}} + else + {var _Eq_=e1[1]; + if(0 !== e2[0]){var v2$0=e2[1];return caml_call2(right,_Eq_,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)} + return -1} + var _Eo_=e1[1]; + if(0 === e2[0])return 1; + var v2$0=e2[1]; + return caml_call2(right,_Eo_,v2$0)} + var + Stdlib_Either= + [0, + left, + right, + is_left, + is_right, + find_left, + find_right, + map_left, + map_right, + map, + fold, + fold, + fold, + equal, + compare]; + caml_register_global(777,Stdlib_Either,"Stdlib__Either"); + var + executable_name=runtime.caml_sys_executable_name(0), + match=runtime.caml_sys_get_config(0), + os_type=match[1], + match$0=[0,caml_string_of_jsbytes("js_of_ocaml")], + unix=runtime.caml_sys_const_ostype_unix(0), + win32=runtime.caml_sys_const_ostype_win32(0), + cygwin=runtime.caml_sys_const_ostype_cygwin(0), + max_array_length=runtime.caml_sys_const_max_wosize(0), + max_floatarray_length=max_array_length / 2 | 0, + max_string_length=(4 * max_array_length | 0) - 1 | 0, + big_endian=0, + match$1=32, + 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 interactive=[0,0]; + function set_signal(sig_num,sig_beh){return 0} + var + Break=[248,cst_Stdlib_Sys_Break,caml_fresh_oo_id(0)], + sigabrt=-1, + sigalrm=-2, + sigfpe=-3, + sighup=-4, + sigill=-5, + sigint=-6, + sigkill=-7, + sigpipe=-8, + sigquit=-9, + sigsegv=-10, + sigterm=-11, + sigusr1=-12, + sigusr2=-13, + sigchld=-14, + sigcont=-15, + sigstop=-16, + sigtstp=-17, + sigttin=-18, + sigttou=-19, + sigvtalrm=-20, + sigprof=-21, + sigbus=-22, + sigpoll=-23, + sigsys=-24, + sigtrap=-25, + sigurg=-26, + sigxcpu=-27, + sigxfsz=-28; + function catch_break(on){return on?0:0} + var development_version=0; + function Make(_Ek_,_Ej_){return [0,1]} + var + Immediate64=[0,Make], + Stdlib_Sys= + [0, + executable_name, + getenv_opt, + interactive, + os_type, + match$0, + unix, + win32, + cygwin, + match$1, + int_size, + big_endian, + max_string_length, + max_array_length, + max_floatarray_length, + set_signal, + sigabrt, + sigalrm, + sigfpe, + sighup, + sigill, + sigint, + sigkill, + sigpipe, + sigquit, + sigsegv, + sigterm, + sigusr1, + sigusr2, + sigchld, + sigcont, + sigstop, + sigtstp, + sigttin, + sigttou, + sigvtalrm, + sigprof, + sigbus, + sigpoll, + sigsys, + sigtrap, + sigurg, + sigxcpu, + sigxfsz, + Break, + catch_break, + ocaml_version, + development_version, + ocaml_release, + runtime.caml_ml_enable_runtime_warnings, + runtime.caml_ml_runtime_warnings_enabled, + Immediate64]; + caml_register_global(778,Stdlib_Sys,"Stdlib__Sys"); + function is_block(a){return 1 - (typeof a === "number"?1:0)} + function double_field(x,i){return caml_array_get(x,i)} + function set_double_field(x,i,v){return caml_array_set(x,i,v)} + var + first_non_constant_constructor=0, + last_non_constant_constructor_=245, + lazy_tag=246, + closure_tag=247, + object_tag=248, + infix_tag=249, + forward_tag=250, + no_scan_tag=251, + abstract_tag=251, + string_tag=252, + double_tag=253, + double_array_tag=254, + custom_tag=255, + int_tag=1000, + out_of_heap_tag=1001, + unaligned_tag=1002; + function info(obj) + {if(caml_obj_tag(obj) === 247) + {var + info=runtime.caml_obj_raw_field(obj,1), + arity=info >> 24, + start_env=info << 8 >>> 9 | 0; + return [0,arity,start_env]} + throw [0,Assert_failure,_n_]} + function of_val(x) + {var switch$0=0; + if(is_block(x) && caml_obj_tag(x) !== 248 && 1 <= x.length - 1) + {var slot=x[1];switch$0 = 1} + if(! switch$0)var slot=x; + var switch$1=0; + if(is_block(slot) && caml_obj_tag(slot) === 248) + {var name=slot[1];switch$1 = 1} + if(! switch$1)var name=invalid_arg(cst_Obj_extension_constructor$0); + return caml_obj_tag(name) === 252 + ?slot + :invalid_arg(cst_Obj_extension_constructor)} + function name(slot){return slot[1]} + function id(slot){return slot[2]} + var + Extension_constructor=[0,of_val,name,id], + extension_constructor=Extension_constructor[1], + extension_name=Extension_constructor[2], + 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); + 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_} + function get_key(e,o) + {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_get_key); + return runtime.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)} + 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)} + function unset_key(e,o) + {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_unset_key); + 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)} + function blit_key(e1,o1,e2,o2,l) + {if + (0 + <= + l + && + 0 + <= + o1 + && + ! + ((length(e1) - l | 0) < o1) + && + 0 + <= + o2 + && + ! + ((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_} + return invalid_arg(cst_Obj_Ephemeron_blit_key)} + var + _o_=runtime.caml_ephe_blit_data, + _p_=runtime.caml_ephe_check_data, + _q_= + [0, + create, + length, + get_key, + get_key_copy, + set_key, + unset_key, + check_key, + blit_key, + 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_, + max_ephe_length], + Stdlib_Obj= + [0, + is_block, + double_field, + set_double_field, + first_non_constant_constructor, + last_non_constant_constructor_, + lazy_tag, + closure_tag, + object_tag, + infix_tag, + forward_tag, + no_scan_tag, + abstract_tag, + string_tag, + double_tag, + double_array_tag, + custom_tag, + custom_tag, + int_tag, + out_of_heap_tag, + unaligned_tag, + [0,info], + Extension_constructor, + extension_constructor, + extension_name, + extension_id, + _q_]; + 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} + function force_lazy_block(blk) + {var closure=blk[1]; + blk[1] = raise_undefined; + try + {var result=caml_call1(closure,0); + caml_obj_make_forward(blk,result); + return result} + catch(e) + {e = caml_wrap_exception(e);blk[1] = function(param){throw e};throw e}} + function force_val_lazy_block(blk) + {var closure=blk[1]; + blk[1] = raise_undefined; + var result=caml_call1(closure,0); + caml_obj_make_forward(blk,result); + return result} + function force(lzv) + {var t=caml_obj_tag(lzv); + return t === 250?lzv[1]:t !== 246?lzv:force_lazy_block(lzv)} + function force_val(lzv) + {var t=caml_obj_tag(lzv); + return t === 250?lzv[1]:t !== 246?lzv:force_val_lazy_block(lzv)} + var + CamlinternalLazy= + [0,Undefined,force_lazy_block,force_val_lazy_block,force,force_val]; + caml_register_global(780,CamlinternalLazy,"CamlinternalLazy"); + function to_lazy(f){var x=caml_obj_block(246,1);x[1] = f;return x} + function from_val(v) + {var t=caml_obj_tag(v); + if(t !== 250 && t !== 246 && t !== 253)return v; + return runtime.caml_lazy_make_forward(v)} + function is_val(l){return caml_obj_tag(l) !== 246?1:0} + function map$0(f,x) + {return [246, + function(_D__) + {var + _D$_=caml_obj_tag(x), + _Ea_=250 === _D$_?x[1]:246 === _D$_?force_lazy_block(x):x; + return caml_call1(f,_Ea_)}]} + 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_))} + return [246, + function(_D7_) + {var + _D8_=caml_obj_tag(x), + _D9_=250 === _D8_?x[1]:246 === _D8_?force_lazy_block(x):x; + return caml_call1(f,_D9_)}]} + var + Stdlib_Lazy= + [0, + Undefined, + map$0, + is_val, + from_val, + map_val, + to_lazy, + force_val, + to_lazy, + from_val, + is_val]; + caml_register_global(781,Stdlib_Lazy,"Stdlib__Lazy"); + function empty(param){return 0} + function return$0(x,param){return [0,x,empty]} + function cons(x,next,param){return [0,x,next]} + function append$0(seq1,seq2,param) + {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 caml_call1(seq2,0)} + function map$1(f,seq,param) + {var match=caml_call1(seq,0); + if(match) + {var + next=match[2], + x=match[1], + _D2_=function(_D3_){return map$1(f,next,_D3_)}; + return [0,caml_call1(f,x),_D2_]} + return 0} + function filter_map(f,seq,param) + {var seq$0=seq; + for(;;) + {var match=caml_call1(seq$0,0); + if(match) + {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_)}]} + var seq$0=next; + continue} + return 0}} + function filter(f,seq,param) + {var seq$0=seq; + for(;;) + {var match=caml_call1(seq$0,0); + if(match) + {var next=match[2],x=match[1]; + if(caml_call1(f,x)) + return [0,x,function(_D0_){return filter(f,next,_D0_)}]; + 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_)} + return 0} + function flat_map(f,seq,param) + {var match=caml_call1(seq,0); + if(match) + {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_)} + return 0} + function fold_left(f,acc,seq) + {var acc$0=acc,seq$0=seq; + for(;;) + {var match=caml_call1(seq$0,0); + if(match) + {var + next=match[2], + x=match[1], + acc$1=caml_call2(f,acc$0,x), + acc$0=acc$1, + seq$0=next; + continue} + return acc$0}} + function iter(f,seq) + {var seq$0=seq; + for(;;) + {var match=caml_call1(seq$0,0); + if(match) + {var next=match[2],x=match[1]; + caml_call1(f,x); + var seq$0=next; + continue} + return 0}} + function unfold(f,u,param) + {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} + function is_empty(xs){var match=caml_call1(xs,0);return match?0:1} + function uncons(xs) + {var match=caml_call1(xs,0); + if(match){var xs$0=match[2],x=match[1];return [0,[0,x,xs$0]]} + return 0} + function length$0(xs$1) + {var accu=0,xs=xs$1; + for(;;) + {var match=caml_call1(xs,0); + if(match) + {var xs$0=match[2],accu$0=accu + 1 | 0,accu=accu$0,xs=xs$0;continue} + return accu}} + function iteri(f,xs$1) + {var i=0,xs=xs$1; + for(;;) + {var match=caml_call1(xs,0); + if(match) + {var xs$0=match[2],x=match[1]; + caml_call2(f,i,x); + var i$0=i + 1 | 0,i=i$0,xs=xs$0; + continue} + return 0}} + function fold_lefti(f,accu$1,xs$1) + {var accu=accu$1,i=0,xs=xs$1; + for(;;) + {var match=caml_call1(xs,0); + if(match) + {var + xs$0=match[2], + x=match[1], + accu$0=caml_call3(f,accu,i,x), + i$0=i + 1 | 0, + accu=accu$0, + i=i$0, + xs=xs$0; + continue} + return accu}} + function for_all(p,xs) + {var xs$0=xs; + 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_} + 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$0=xs$1; + continue} + return 0}} + function find(p,xs) + {var xs$0=xs; + for(;;) + {var match=caml_call1(xs$0,0); + if(match) + {var xs$1=match[2],x=match[1]; + if(caml_call1(p,x))return [0,x]; + var xs$0=xs$1; + continue} + return 0}} + function find_map(f,xs) + {var xs$0=xs; + for(;;) + {var match=caml_call1(xs$0,0); + if(match) + {var xs$1=match[2],x=match[1],result=caml_call1(f,x); + if(result)return result; + var xs$0=xs$1; + continue} + return 0}} + function iter2(f,xs,ys) + {var xs$0=xs,ys$0=ys; + for(;;) + {var match=caml_call1(xs$0,0); + 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]; + caml_call2(f,x,y); + var xs$0=xs$1,ys$0=ys$1; + continue} + return 0} + return 0}} + function fold_left2(f,accu,xs,ys) + {var accu$0=accu,xs$0=xs,ys$0=ys; + for(;;) + {var match=caml_call1(xs$0,0); + 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], + accu$1=caml_call3(f,accu$0,x,y), + accu$0=accu$1, + xs$0=xs$1, + ys$0=ys$1; + continue} + return accu$0} + return accu$0}} + function for_all2(f,xs,ys) + {var xs$0=xs,ys$0=ys; + for(;;) + {var match=caml_call1(xs$0,0); + 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_} + return 1} + return 1}} + function exists2(f,xs,ys) + {var xs$0=xs,ys$0=ys; + for(;;) + {var match=caml_call1(xs$0,0); + 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 xs$0=xs$1,ys$0=ys$1; + continue} + return 0} + return 0}} + function equal$0(eq,xs,ys) + {var xs$0=xs,ys$0=ys; + for(;;) + {var match=caml_call1(xs$0,0),match$0=caml_call1(ys$0,0); + if(match) + {if(match$0) + {var + ys$1=match$0[2], + 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_}} + else + if(! match$0)return 1; + return 0}} + function compare$0(cmp,xs,ys) + {var xs$0=xs,ys$0=ys; + for(;;) + {var match=caml_call1(xs$0,0),match$0=caml_call1(ys$0,0); + if(match) + {var _DN_=match[2],_DO_=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} + 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_]} + return 0} + function init(n,f) + {if(0 <= n) + {var _DI_=0;return function(_DJ_){return init_aux(f,_DI_,n,_DJ_)}} + return invalid_arg(cst_Seq_init)} + function repeat(x,param) + {return [0,x,function(_DH_){return repeat(x,_DH_)}]} + function forever(f,param) + {function _DF_(_DG_){return forever(f,_DG_)} + return [0,caml_call1(f,0),_DF_]} + function cycle_nonempty(xs,param) + {var _DD_=0; + return append$0(xs,function(_DE_){return cycle_nonempty(xs,_DE_)},_DD_)} + 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_)}]} + return 0} + function iterate1(f,x,param) + {var y=caml_call1(f,x); + return [0,y,function(_Dz_){return iterate1(f,y,_Dz_)}]} + function iterate(f,x) + {function _Dw_(_Dy_){return iterate1(f,x,_Dy_)} + return function(_Dx_){return [0,x,_Dw_]}} + 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_]} + return 0} + function mapi(f,xs) + {var _Dr_=0;return function(_Ds_){return mapi_aux(f,_Dr_,xs,_Ds_)}} + 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} + function scan(f,s,xs) + {function _Dn_(_Dp_){return tail_scan(f,s,xs,_Dp_)} + return function(_Do_){return [0,s,_Dn_]}} + function take_aux(n,xs) + {return 0 === n + ?empty + :function(param) + {var match=caml_call1(xs,0); + if(match) + {var xs$0=match[2],x=match[1]; + return [0,x,take_aux(n - 1 | 0,xs$0)]} + return 0}} + function take(n,xs) + {if(n < 0)invalid_arg(cst_Seq_take);return take_aux(n,xs)} + function drop(n,xs) + {return 0 <= n + ?0 === n + ?xs + :function(param) + {var n$0=n,xs$0=xs; + for(;;) + {var match=caml_call1(xs$0,0); + if(match) + {var xs$1=match[2],n$1=n$0 - 1 | 0; + if(0 === n$1)return caml_call1(xs$1,0); + var n$0=n$1,xs$0=xs$1; + continue} + return 0}} + :invalid_arg(cst_Seq_drop)} + function take_while(p,xs,param) + {var match=caml_call1(xs,0); + 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} + return 0} + function drop_while(p,xs,param) + {var xs$0=xs; + for(;;) + {var node=caml_call1(xs$0,0); + if(node) + {var xs$1=node[2],x=node[1]; + if(caml_call1(p,x)){var xs$0=xs$1;continue} + return node} + return 0}} + function group(eq,xs,param) + {var match=caml_call1(xs,0); + if(match) + {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_]} + return 0} + var Forced_twice=[248,cst_Stdlib_Seq_Forced_twice,caml_fresh_oo_id(0)]; + function failure(param){throw Forced_twice} + function memoize(xs) + {function s$0(param) + {var match=caml_call1(xs,0); + 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}} + function once(xs) + {function f(param) + {var match=caml_call1(xs,0); + if(match){var xs$0=match[2],x=match[1];return [0,x,once(xs$0)]} + return 0} + var action=[0,f]; + return function(param) + {var f=exchange(action,failure);return caml_call1(f,0)}} + function zip(xs,ys,param) + {var match=caml_call1(xs,0); + if(match) + {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} + return 0} + function map2(f,xs,ys,param) + {var match=caml_call1(xs,0); + if(match) + {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], + _C__=function(_C$_){return map2(f,xs$0,ys$0,_C$_)}; + return [0,caml_call2(f,x,y),_C__]} + 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 caml_call1(ys,0)} + function sorted_merge1(cmp,x,xs,y,ys) + {return 0 < caml_call2(cmp,x,y) + ?[0, + y, + function(_C7_) + {var match=caml_call1(ys,0); + if(match) + {var ys$0=match[2],y=match[1]; + return sorted_merge1(cmp,x,xs,y,ys$0)} + return [0,x,xs]}] + :[0, + x, + function(_C8_) + {var match=caml_call1(xs,0); + if(match) + {var xs$0=match[2],x=match[1]; + return sorted_merge1(cmp,x,xs$0,y,ys)} + return [0,y,ys]}]} + function sorted_merge(cmp,xs,ys,param) + {var match=caml_call1(xs,0),match$0=caml_call1(ys,0); + if(match) + {if(match$0) + {var ys$0=match$0[2],y=match$0[1],xs$0=match[2],x=match[1]; + return sorted_merge1(cmp,x,xs$0,y,ys$0)} + var c=match} + else + {if(! match$0)return 0;var c=match$0} + return c} + function map_fst(xys,param) + {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} + 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} + function unzip(xys) + {function _C2_(_C4_){return map_snd(xys,_C4_)} + return [0,function(_C3_){return map_fst(xys,_C3_)},_C2_]} + function filter_map_find_left_map(f,xs,param) + {var xs$0=xs; + for(;;) + {var match=caml_call1(xs$0,0); + if(match) + {var xs$1=match[2],x=match[1],match$0=caml_call1(f,x); + if(0 === match$0[0]) + {var y=match$0[1]; + return [0, + y, + function(_C1_){return filter_map_find_left_map(f,xs$1,_C1_)}]} + var xs$0=xs$1; + continue} + return 0}} + function filter_map_find_right_map(f,xs,param) + {var xs$0=xs; + for(;;) + {var match=caml_call1(xs$0,0); + if(match) + {var xs$1=match[2],x=match[1],match$0=caml_call1(f,x); + if(0 === match$0[0]){var xs$0=xs$1;continue} + var z=match$0[1]; + return [0, + z, + function(_C0_) + {return filter_map_find_right_map(f,xs$1,_C0_)}]} + return 0}} + function partition_map(f,xs) + {function _CX_(_CZ_){return filter_map_find_right_map(f,xs,_CZ_)} + return [0, + function(_CY_){return filter_map_find_left_map(f,xs,_CY_)}, + _CX_]} + 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 peel(xss) + {return unzip(function(_CS_){return filter_map(uncons,xss,_CS_)})} + 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) + {var match=caml_call1(xss,0); + if(match) + {var xss$0=match[2],xs=match[1],match$0=caml_call1(xs,0); + if(match$0) + {var + xs$0=match$0[2], + x=match$0[1], + 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_]} + 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 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 product(xs,ys) + {return map_product(function(x,y){return [0,x,y]},xs,ys)} + function of_dispenser(it) + {function c(param) + {var match=caml_call1(it,0); + if(match){var x=match[1];return [0,x,c]} + return 0} + return c} + function to_dispenser(xs) + {var s=[0,xs]; + return function(param) + {var match=caml_call1(s[1],0); + 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 + Stdlib_Seq= + [0, + is_empty, + uncons, + length$0, + iter, + fold_left, + iteri, + fold_lefti, + for_all, + exists, + find, + find_map, + iter2, + fold_left2, + for_all2, + exists2, + equal$0, + compare$0, + empty, + return$0, + cons, + init, + unfold, + repeat, + forever, + cycle, + iterate, + map$1, + mapi, + filter, + filter_map, + scan, + take, + drop, + take_while, + drop_while, + group, + memoize, + Forced_twice, + once, + transpose, + append$0, + concat, + flat_map, + flat_map, + zip, + map2, + interleave, + sorted_merge, + product, + map_product, + unzip, + unzip, + partition_map, + partition, + of_dispenser, + to_dispenser, + ints]; + caml_register_global(782,Stdlib_Seq,"Stdlib__Seq"); + var none=0; + function some(v){return [0,v]} + function value(o,default$0){if(o){var v=o[1];return v}return default$0} + function get$0(param) + {if(param){var v=param[1];return v} + return invalid_arg(cst_option_is_None)} + function bind(o,f){if(o){var v=o[1];return caml_call1(f,v)}return 0} + function join(param){if(param){var o=param[1];return o}return 0} + function map$2(f,o){if(o){var v=o[1];return [0,caml_call1(f,v)]}return 0} + function fold$0(none,some,param) + {if(param){var v=param[1];return caml_call1(some,v)}return none} + function iter$0(f,param) + {if(param){var v=param[1];return caml_call1(f,v)}return 0} + function is_none(param){return param?0:1} + function is_some(param){return param?1:0} + function equal$1(eq,o0,o1) + {if(o0) + {if(o1){var v1=o1[1],v0=o0[1];return caml_call2(eq,v0,v1)}} + else + if(! o1)return 1; + 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)} + 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_)}} + return empty} + var + Stdlib_Option= + [0, + none, + some, + value, + get$0, + bind, + join, + map$2, + fold$0, + iter$0, + is_none, + is_some, + equal$1, + compare$1, + to_result, + to_list, + to_seq]; + caml_register_global(783,Stdlib_Option,"Stdlib__Option"); + function ok(v){return [0,v]} + function error(e){return [1,e]} + function value$0(r,default$0) + {if(0 === r[0]){var v=r[1];return v}return default$0} + function get_ok(param) + {if(0 === param[0]){var v=param[1];return v} + return invalid_arg(cst_result_is_Error)} + function get_error(param) + {if(0 === param[0])return invalid_arg(cst_result_is_Ok); + var e=param[1]; + return e} + function bind$0(r,f) + {if(0 === r[0]){var v=r[1];return caml_call1(f,v)}return r} + function join$0(e){if(0 === e[0]){var r=e[1];return r}return e} + function map$3(f,e) + {if(0 === e[0]){var v=e[1];return [0,caml_call1(f,v)]}return e} + function map_error(f,v) + {if(0 === v[0])return v;var e=v[1];return [1,caml_call1(f,e)]} + function fold$1(ok,error,param) + {if(0 === param[0]){var v=param[1];return caml_call1(ok,v)} + var e=param[1]; + return caml_call1(error,e)} + function iter$1(f,param) + {if(0 === param[0]){var v=param[1];return caml_call1(f,v)}return 0} + function iter_error(f,param) + {if(0 === param[0])return 0;var e=param[1];return caml_call1(f,e)} + function is_ok(param){return 0 === param[0]?1:0} + 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)}} + else + {var _Cz_=r0[1]; + if(0 !== r1[0]){var e1=r1[1];return caml_call2(error,_Cz_,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)} + return -1} + var _Cx_=r0[1]; + if(0 === r1[0])return 1; + var e1=r1[1]; + return caml_call2(error,_Cx_,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_)}} + return empty} + var + Stdlib_Result= + [0, + ok, + error, + value$0, + get_ok, + get_error, + bind$0, + join$0, + map$3, + map_error, + fold$1, + iter$1, + iter_error, + is_ok, + is_error, + equal$2, + compare$2, + to_option, + to_list$0, + to_seq$0]; + caml_register_global(784,Stdlib_Result,"Stdlib__Result"); + function equal$3(_Cu_,_Ct_){return _Cu_ === _Ct_?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_} + var + Stdlib_Bool= + [0, + function(_Cr_){return 1 - _Cr_}, + equal$3, + compare$3, + _t_, + to_float, + to_string$0]; + caml_register_global(785,Stdlib_Bool,"Stdlib__Bool"); + function chr(n) + {if(0 <= n && ! (255 < n))return n;return invalid_arg(cst_Char_chr)} + function escaped(c) + {var switch$0=0; + if(40 <= c) + {if(92 === c)return cst$1;if(! (127 <= c))switch$0 = 1} + else + if(32 <= c) + {if(39 <= c)return cst$2;switch$0 = 1} + else + if(! (14 <= c)) + switch(c) + {case 8:return cst_b; + case 9:return cst_t; + case 10:return cst_n; + case 13:return cst_r + } + if(switch$0) + {var s$0=caml_create_bytes(1); + caml_bytes_unsafe_set(s$0,0,c); + return caml_string_of_bytes(s$0)} + var s=caml_create_bytes(4); + caml_bytes_unsafe_set(s,0,92); + caml_bytes_unsafe_set(s,1,48 + (c / 100 | 0) | 0); + caml_bytes_unsafe_set(s,2,48 + ((c / 10 | 0) % 10 | 0) | 0); + 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} + else + if(23 !== _Cq_)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} + else + if(23 !== _Cp_)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} + function compare$4(c1,c2){return c1 - c2 | 0} + function equal$4(c1,c2){return 0 === (c1 - c2 | 0)?1:0} + var + Stdlib_Char= + [0, + chr, + escaped, + lowercase, + uppercase, + lowercase_ascii, + uppercase_ascii, + compare$4, + equal$4]; + caml_register_global(786,Stdlib_Char,"Stdlib__Char"); + var + min$0=0, + max$0=1114111, + lo_bound=55295, + hi_bound=57344, + bom=65279, + rep=65533; + function succ(u) + {return u === 55295 + ?hi_bound + :u === 1114111?invalid_arg(err_no_succ):u + 1 | 0} + 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_; + else + var _Co_=57344 <= i?1:0,_Cn_=_Co_?i <= 1114111?1:0:_Co_; + return _Cn_} + function of_int(i) + {return is_valid(i) + ?i + :invalid_arg + (cat(caml_format_int(cst_X,i),cst_is_not_an_Unicode_scalar_v))} + function is_char(u){return u < 256?1:0} + function of_char(c){return c} + function to_char(u) + {return 255 < u + ?invalid_arg + (cat + (cst_U, + 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} + var compare$5=caml_int_compare; + function hash(_Ch_){return _Ch_} + 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} + function utf_decode(n,u){return (8 | n) << 24 | u} + function dec_invalid(n){return n << 24 | 65533} + function utf_8_byte_length(u) + {if(0 <= u) + {if(127 < u) + {if(2047 < u) + {if(65535 < u) + {if(1114111 < u)throw [0,Assert_failure,_u_];return 4} + return 3} + return 2} + return 1} + throw [0,Assert_failure,_v_]} + function utf_16_byte_length(u) + {if(0 <= u) + {if(65535 < u){if(1114111 < u)throw [0,Assert_failure,_w_];return 4} + return 2} + throw [0,Assert_failure,_x_]} + function _y_(_Cg_){return _Cg_} + var + Stdlib_Uchar= + [0, + min$0, + max$0, + bom, + rep, + succ, + pred, + is_valid, + of_int, + function(_Cf_){return _Cf_}, + _y_, + is_char, + of_char, + to_char, + unsafe_to_char, + equal$5, + compare$5, + hash, + utf_decode_is_valid, + utf_decode_uchar, + utf_decode_length, + utf_decode, + dec_invalid, + utf_8_byte_length, + utf_16_byte_length]; + caml_register_global(787,Stdlib_Uchar,"Stdlib__Uchar"); + function length$1(l) + {var len=0,param=l; + for(;;) + {if(param) + {var param$0=param[2],len$0=len + 1 | 0,len=len$0,param=param$0; + continue} + return len}} + function cons$0(a,l){return [0,a,l]} + function hd(param) + {if(param){var a=param[1];return a}return failwith(cst_hd)} + function tl(param) + {if(param){var l=param[2];return l}return failwith(cst_tl)} + function nth(l,n) + {if(0 <= n) + {var l$0=l,n$0=n; + for(;;) + {if(l$0) + {var l$1=l$0[2],a=l$0[1]; + if(0 === n$0)return a; + var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1; + continue} + return failwith(cst_nth)}} + return invalid_arg(cst_List_nth)} + function nth_opt(l,n) + {if(0 <= n) + {var l$0=l,n$0=n; + for(;;) + {if(l$0) + {var l$1=l$0[2],a=l$0[1]; + if(0 === n$0)return [0,a]; + var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1; + continue} + return 0}} + return invalid_arg(cst_List_nth$0)} + function rev_append(l1,l2) + {var l1$0=l1,l2$0=l2; + for(;;) + {if(l1$0) + {var l1$1=l1$0[2],a=l1$0[1],l2$1=[0,a,l2$0],l1$0=l1$1,l2$0=l2$1; + continue} + return l2$0}} + function rev(l){return rev_append(l,0)} + function init_aux$0(i,n,f) + {if(n <= i)return 0; + var r=caml_call1(f,i); + return [0,r,init_aux$0(i + 1 | 0,n,f)]} + function init$0(len,f) + {if(0 <= len) + {if(50 < len) + {var acc=0,i=0; + for(;;) + {if(len <= i)return rev(acc); + var i$0=i + 1 | 0,acc$0=[0,caml_call1(f,i),acc],acc=acc$0,i=i$0; + continue}} + return init_aux$0(0,len,f)} + return invalid_arg(cst_List_init)} + function flatten(param) + {if(param){var r=param[2],l=param[1];return append(l,flatten(r))} + return 0} + function map$4(f,param) + {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) + {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} + function mapi$0(f,l){return _z_(0,f,l)} + function rev_map(f,param) + {var accu=0,param$0=param; + for(;;) + {if(param$0) + {var + l=param$0[2], + a=param$0[1], + accu$0=[0,caml_call1(f,a),accu], + accu=accu$0, + param$0=l; + continue} + return accu}} + function iter$2(f,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],a=param$0[1]; + caml_call1(f,a); + var param$0=l; + continue} + return 0}} + function iteri$0(f,l$0) + {var i=0,param=l$0; + for(;;) + {if(param) + {var l=param[2],a=param[1]; + caml_call2(f,i,a); + var i$0=i + 1 | 0,i=i$0,param=l; + continue} + return 0}} + function fold_left$0(f,accu,l) + {var accu$0=accu,l$0=l; + for(;;) + {if(l$0) + {var + l$1=l$0[2], + a=l$0[1], + accu$1=caml_call2(f,accu$0,a), + accu$0=accu$1, + l$0=l$1; + continue} + return accu$0}} + function fold_right(f,l,accu) + {if(l){var l$0=l[2],a=l[1];return caml_call2(f,a,fold_right(f,l$0,accu))} + return accu} + function map2$0(f,l1,l2) + {if(l1) + {if(l2) + {var l2$0=l2[2],a2=l2[1],l1$0=l1[2],a1=l1[1],r=caml_call2(f,a1,a2); + return [0,r,map2$0(f,l1$0,l2$0)]}} + else + if(! l2)return 0; + return invalid_arg(cst_List_map2)} + function rev_map2(f,l1,l2) + {var accu=0,l1$0=l1,l2$0=l2; + for(;;) + {if(l1$0) + {if(l2$0) + {var + l2$1=l2$0[2], + a2=l2$0[1], + l1$1=l1$0[2], + a1=l1$0[1], + accu$0=[0,caml_call2(f,a1,a2),accu], + accu=accu$0, + l1$0=l1$1, + l2$0=l2$1; + continue}} + else + if(! l2$0)return accu; + return invalid_arg(cst_List_rev_map2)}} + function iter2$0(f,l1,l2) + {var l1$0=l1,l2$0=l2; + for(;;) + {if(l1$0) + {if(l2$0) + {var l2$1=l2$0[2],a2=l2$0[1],l1$1=l1$0[2],a1=l1$0[1]; + caml_call2(f,a1,a2); + var l1$0=l1$1,l2$0=l2$1; + continue}} + else + if(! l2$0)return 0; + return invalid_arg(cst_List_iter2)}} + function fold_left2$0(f,accu,l1,l2) + {var accu$0=accu,l1$0=l1,l2$0=l2; + for(;;) + {if(l1$0) + {if(l2$0) + {var + l2$1=l2$0[2], + a2=l2$0[1], + l1$1=l1$0[2], + a1=l1$0[1], + accu$1=caml_call3(f,accu$0,a1,a2), + accu$0=accu$1, + l1$0=l1$1, + l2$0=l2$1; + continue}} + else + if(! l2$0)return accu$0; + return invalid_arg(cst_List_fold_left2)}} + function fold_right2(f,l1,l2,accu) + {if(l1) + {if(l2) + {var l2$0=l2[2],a2=l2[1],l1$0=l1[2],a1=l1[1]; + return caml_call3(f,a1,a2,fold_right2(f,l1$0,l2$0,accu))}} + else + if(! l2)return accu; + return invalid_arg(cst_List_fold_right2)} + function for_all$0(p,param) + {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_} + 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 param$0=l; + continue} + return 0}} + function for_all2$0(p,l1,l2) + {var l1$0=l1,l2$0=l2; + for(;;) + {if(l1$0) + {if(l2$0) + {var + l2$1=l2$0[2], + 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_}} + else + if(! l2$0)return 1; + return invalid_arg(cst_List_for_all2)}} + function exists2$0(p,l1,l2) + {var l1$0=l1,l2$0=l2; + for(;;) + {if(l1$0) + {if(l2$0) + {var + l2$1=l2$0[2], + a2=l2$0[1], + l1$1=l1$0[2], + a1=l1$0[1], + _Cb_=caml_call2(p,a1,a2); + if(_Cb_)return _Cb_; + var l1$0=l1$1,l2$0=l2$1; + continue}} + else + if(! l2$0)return 0; + return invalid_arg(cst_List_exists2)}} + function mem(x,param) + {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 param$0=l; + continue} + return 0}} + function memq(x,param) + {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 param$0=l; + continue} + return 0}} + function assoc(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],match=param$0[1],b=match[2],a=match[1]; + if(0 === caml_compare(a,x))return b; + var param$0=l; + continue} + throw Not_found}} + function assoc_opt(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],match=param$0[1],b=match[2],a=match[1]; + if(0 === caml_compare(a,x))return [0,b]; + var param$0=l; + continue} + return 0}} + function assq(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],match=param$0[1],b=match[2],a=match[1]; + if(a === x)return b; + var param$0=l; + continue} + throw Not_found}} + function assq_opt(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],match=param$0[1],b=match[2],a=match[1]; + if(a === x)return [0,b]; + var param$0=l; + continue} + return 0}} + function mem_assoc(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + l=param$0[2], + match=param$0[1], + a=match[1], + _B__=0 === caml_compare(a,x)?1:0; + if(_B__)return _B__; + var param$0=l; + continue} + return 0}} + function mem_assq(x,param) + {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 param$0=l; + continue} + return 0}} + function remove_assoc(x,param) + {if(param) + {var l=param[2],pair=param[1],a=pair[1]; + return 0 === caml_compare(a,x)?l:[0,pair,remove_assoc(x,l)]} + return 0} + function remove_assq(x,param) + {if(param) + {var l=param[2],pair=param[1],a=pair[1]; + return a === x?l:[0,pair,remove_assq(x,l)]} + return 0} + function find$0(p,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],x=param$0[1]; + if(caml_call1(p,x))return x; + var param$0=l; + continue} + throw Not_found}} + function find_opt(p,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],x=param$0[1]; + if(caml_call1(p,x))return [0,x]; + var param$0=l; + continue} + return 0}} + function find_map$0(f,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],x=param$0[1],result=caml_call1(f,x); + if(result)return result; + var param$0=l; + continue} + return 0}} + function find_all(p) + {var accu=0; + return function(param$0) + {var accu$0=accu,param=param$0; + for(;;) + {if(param) + {var l=param[2],x=param[1]; + if(caml_call1(p,x)) + {var accu$1=[0,x,accu$0],accu$0=accu$1,param=l;continue} + var param=l; + continue} + return rev(accu$0)}}} + function filteri(p,param) + {var i=0,acc=0,param$0=param; + for(;;) + {if(param$0) + {var + l=param$0[2], + x=param$0[1], + acc$0=caml_call2(p,i,x)?[0,x,acc]:acc, + i$0=i + 1 | 0, + i=i$0, + acc=acc$0, + param$0=l; + continue} + return rev(acc)}} + function filter_map$0(f) + {var accu=0; + return function(param$0) + {var accu$0=accu,param=param$0; + for(;;) + {if(param) + {var l=param[2],x=param[1],match=caml_call1(f,x); + if(match) + {var v=match[1],accu$1=[0,v,accu$0],accu$0=accu$1,param=l; + continue} + var param=l; + continue} + return rev(accu$0)}}} + function concat_map(f,param) + {var acc=0,param$0=param; + for(;;) + {if(param$0) + {var + l=param$0[2], + x=param$0[1], + xs=caml_call1(f,x), + acc$0=rev_append(xs,acc), + acc=acc$0, + param$0=l; + continue} + return rev(acc)}} + function fold_left_map(f,accu,param) + {var accu$0=accu,l_accu=0,param$0=param; + for(;;) + {if(param$0) + {var + l=param$0[2], + x=param$0[1], + match=caml_call2(f,accu$0,x), + x$0=match[2], + accu$1=match[1], + l_accu$0=[0,x$0,l_accu], + accu$0=accu$1, + l_accu=l_accu$0, + param$0=l; + continue} + return [0,accu$0,rev(l_accu)]}} + function partition$0(p,param) + {var yes=0,no=0,param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],x=param$0[1]; + if(caml_call1(p,x)) + {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_]}} + function partition_map$0(p,param) + {var left=0,right=0,param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],x=param$0[1],match=caml_call1(p,x); + if(0 === match[0]) + {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_]}} + function split(param) + {if(param) + {var + l=param[2], + match=param[1], + y=match[2], + x=match[1], + match$0=split(l), + ry=match$0[2], + rx=match$0[1]; + return [0,[0,x,rx],[0,y,ry]]} + return _A_} + function combine(l1,l2) + {if(l1) + {if(l2) + {var l2$0=l2[2],a2=l2[1],l1$0=l1[2],a1=l1[1]; + return [0,[0,a1,a2],combine(l1$0,l2$0)]}} + else + if(! l2)return 0; + return invalid_arg(cst_List_combine)} + function merge(cmp,l1,l2) + {if(l1) + {if(l2) + {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1]; + return 0 < caml_call2(cmp,h1,h2) + ?[0,h2,merge(cmp,l1,t2)] + :[0,h1,merge(cmp,t1,l2)]} + return l1} + return l2} + function fast_sort(cmp,l) + {function rev_sort(n,l) + {if(2 === n) + {if(l) + {var _B3_=l[2]; + if(_B3_) + {var + tl=_B3_[2], + x2=_B3_[1], + x1=l[1], + 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 _B5_=l[2]; + if(_B5_) + {var _B6_=_B5_[2]; + if(_B6_) + {var + tl$1=_B6_[2], + x3=_B6_[1], + x2$0=_B5_[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]]]; + return [0,s$0,tl$1]}}} + var + n1=n >> 1, + n2=n - n1 | 0, + match=sort(n1,l), + l2$0=match[2], + s1=match[1], + match$0=sort(n2,l2$0), + tl$0=match$0[2], + s2=match$0[1], + l1=s1, + l2=s2, + accu=0; + for(;;) + {if(l1) + {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; + continue} + var _B4_=rev_append(l1,accu)} + else + var _B4_=rev_append(l2,accu); + return [0,_B4_,tl$0]}} + function sort(n,l) + {if(2 === n) + {if(l) + {var _BZ_=l[2]; + if(_BZ_) + {var + tl=_BZ_[2], + x2=_BZ_[1], + x1=l[1], + 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 _B1_=l[2]; + if(_B1_) + {var _B2_=_B1_[2]; + if(_B2_) + {var + tl$1=_B2_[2], + x3=_B2_[1], + x2$0=_B1_[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]]]; + return [0,s$0,tl$1]}}} + var + n1=n >> 1, + n2=n - n1 | 0, + match=rev_sort(n1,l), + l2$0=match[2], + s1=match[1], + match$0=rev_sort(n2,l2$0), + tl$0=match$0[2], + s2=match$0[1], + l1=s1, + l2=s2, + accu=0; + for(;;) + {if(l1) + {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; + continue} + var _B0_=rev_append(l1,accu)} + else + var _B0_=rev_append(l2,accu); + return [0,_B0_,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) + {if(2 === n) + {if(l) + {var _BQ_=l[2]; + if(_BQ_) + {var + tl=_BQ_[2], + x2=_BQ_[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]]; + return [0,s,tl]}}} + else + if(3 === n && l) + {var _BS_=l[2]; + if(_BS_) + {var _BT_=_BS_[2]; + if(_BT_) + {var + tl$1=_BT_[2], + x3=_BT_[1], + x2$0=_BS_[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_= + 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_; + else + if(0 < c$1) + {var c$3=caml_call2(cmp,x2$0,x3); + if(0 === c$3) + var _BV_=[0,x1$0,[0,x2$0,0]]; + else + if(0 < c$3) + var _BV_=[0,x1$0,[0,x2$0,[0,x3,0]]]; + else + var + c$4=caml_call2(cmp,x1$0,x3), + _BW_= + 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_} + else + {var c$5=caml_call2(cmp,x1$0,x3); + if(0 === c$5) + var _BX_=[0,x2$0,[0,x1$0,0]]; + else + if(0 < c$5) + var _BX_=[0,x2$0,[0,x1$0,[0,x3,0]]]; + else + var + c$6=caml_call2(cmp,x2$0,x3), + _BY_= + 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_} + return [0,s$0,tl$1]}}} + var + n1=n >> 1, + n2=n - n1 | 0, + match=sort(n1,l), + l2$0=match[2], + s1=match[1], + match$0=sort(n2,l2$0), + tl$0=match$0[2], + s2=match$0[1], + l1=s1, + l2=s2, + accu=0; + for(;;) + {if(l1) + {if(l2) + {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; + continue} + var _BR_=rev_append(l1,accu)} + else + var _BR_=rev_append(l2,accu); + return [0,_BR_,tl$0]}} + function sort(n,l) + {if(2 === n) + {if(l) + {var _BH_=l[2]; + if(_BH_) + {var + tl=_BH_[2], + x2=_BH_[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]]; + return [0,s,tl]}}} + else + if(3 === n && l) + {var _BJ_=l[2]; + if(_BJ_) + {var _BK_=_BJ_[2]; + if(_BK_) + {var + tl$1=_BK_[2], + x3=_BK_[1], + x2$0=_BJ_[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_= + 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_; + else + if(0 <= c$1) + {var c$3=caml_call2(cmp,x1$0,x3); + if(0 === c$3) + var _BM_=[0,x2$0,[0,x1$0,0]]; + else + if(0 <= c$3) + var + c$4=caml_call2(cmp,x2$0,x3), + _BN_= + 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_} + else + {var c$5=caml_call2(cmp,x2$0,x3); + if(0 === c$5) + var _BO_=[0,x1$0,[0,x2$0,0]]; + else + if(0 <= c$5) + var + c$6=caml_call2(cmp,x1$0,x3), + _BP_= + 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_} + return [0,s$0,tl$1]}}} + var + n1=n >> 1, + n2=n - n1 | 0, + match=rev_sort(n1,l), + l2$0=match[2], + s1=match[1], + match$0=rev_sort(n2,l2$0), + tl$0=match$0[2], + s2=match$0[1], + l1=s1, + l2=s2, + accu=0; + for(;;) + {if(l1) + {if(l2) + {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; + continue} + var _BI_=rev_append(l1,accu)} + else + var _BI_=rev_append(l2,accu); + return [0,_BI_,tl$0]}} + var len=length$1(l); + return 2 <= len?sort(len,l)[1]:l} + function compare_lengths(l1,l2) + {var l1$0=l1,l2$0=l2; + for(;;) + {if(l1$0) + {if(l2$0){var l2$1=l2$0[2],l1$1=l1$0[2],l1$0=l1$1,l2$0=l2$1;continue} + return 1} + return l2$0?-1:0}} + function compare_length_with(l,n) + {var l$0=l,n$0=n; + for(;;) + {if(l$0) + {var l$1=l$0[2]; + if(0 < n$0){var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1;continue} + return 1} + return 0 === n$0?0:0 < n$0?-1:1}} + function equal$6(eq,l1,l2) + {var l1$0=l1,l2$0=l2; + for(;;) + {if(l1$0) + {if(l2$0) + {var + l2$1=l2$0[2], + 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_}} + else + if(! l2$0)return 1; + return 0}} + function compare$6(cmp,l1,l2) + {var l1$0=l1,l2$0=l2; + for(;;) + {if(l1$0) + {var _BE_=l1$0[2],_BF_=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} + return c} + return 1} + return l2$0?-1:0}} + function to_seq$1(l) + {function aux(l,param) + {if(l) + {var tail=l[2],x=l[1]; + return [0,x,function(_BD_){return aux(tail,_BD_)}]} + return 0} + return function(_BC_){return aux(l,_BC_)}} + 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 match=caml_call1(seq,0); + if(match) + {var next=match[2],x=match[1]; + return [0,x,direct(depth - 1 | 0,next)]} + return 0} + return direct(500,seq)} + var + include$0= + [0, + length$1, + compare_lengths, + compare_length_with, + cons$0, + hd, + tl, + nth, + nth_opt, + rev, + init$0, + append, + rev_append, + flatten, + flatten, + equal$6, + compare$6, + iter$2, + iteri$0, + map$4, + mapi$0, + rev_map, + filter_map$0, + concat_map, + fold_left_map, + fold_left$0, + fold_right, + iter2$0, + map2$0, + rev_map2, + fold_left2$0, + fold_right2, + for_all$0, + exists$0, + for_all2$0, + exists2$0, + mem, + memq, + find$0, + find_opt, + find_map$0, + find_all, + find_all, + filteri, + partition$0, + partition_map$0, + assoc, + assoc_opt, + assq, + assq_opt, + mem_assoc, + mem_assq, + remove_assoc, + remove_assq, + split, + combine, + fast_sort, + fast_sort, + fast_sort, + sort_uniq, + merge, + to_seq$1, + of_seq]; + caml_register_global(788,include$0,"Stdlib__List"); + var zero=0,one=1,minus_one=-1; + 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} + 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} + function to_string$1(x){return caml_string_of_jsbytes("" + x)} + var + Stdlib_Int= + [0, + zero, + one, + minus_one, + abs$0, + max_int$0, + min_int$0, + lognot, + equal$7, + compare$7, + min$1, + max$1, + to_string$1]; + caml_register_global(789,Stdlib_Int,"Stdlib__Int"); + 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_; + for(;;) + {caml_bytes_unsafe_set(s,i,caml_call1(f,i)); + var _By_=i + 1 | 0; + if(_Bx_ !== i){var i=_By_;continue} + break}} + return s} + var empty$0=caml_create_bytes(0); + function copy(s) + {var len=caml_ml_bytes_length(s),r=caml_create_bytes(len); + caml_blit_bytes(s,0,r,0,len); + return r} + function of_bytes(b){return caml_string_of_bytes(copy(b))} + function to_bytes(s){return copy(caml_bytes_of_string(s))} + function sub(s,ofs,len) + {if + (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) + {var r=caml_create_bytes(len);caml_blit_bytes(s,ofs,r,0,len);return r} + return invalid_arg(cst_String_sub_Bytes_sub)} + 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; + if(a < 0) + {if(_Bv_ && ! match)switch$0 = 1} + else + if(! _Bv_ && match)switch$0 = 1; + return switch$0?invalid_arg(cst_Bytes_extend):c} + function extend(s,left,right) + {var + len=symbol$0(symbol$0(caml_ml_bytes_length(s),left),right), + r=caml_create_bytes(len); + if(0 <= left) + var dstoff=left,srcoff=0; + else + var dstoff=0,srcoff=- left | 0; + var cpylen=min$1(caml_ml_bytes_length(s) - srcoff | 0,len - dstoff | 0); + if(0 < cpylen)caml_blit_bytes(s,srcoff,r,dstoff,cpylen); + return r} + function fill(s,ofs,len,c) + {if + (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) + return caml_fill_bytes(s,ofs,len,c); + return invalid_arg(cst_String_fill_Bytes_fill)} + function blit(s1,ofs1,s2,ofs2,len) + {if + (0 + <= + len + && + 0 + <= + ofs1 + && + ! + ((caml_ml_bytes_length(s1) - len | 0) < ofs1) + && + 0 + <= + ofs2 + && + ! + ((caml_ml_bytes_length(s2) - len | 0) < ofs2)) + return caml_blit_bytes(s1,ofs1,s2,ofs2,len); + return invalid_arg(cst_Bytes_blit)} + function blit$0(s1,ofs1,s2,ofs2,len) + {if + (0 + <= + len + && + 0 + <= + ofs1 + && + ! + ((caml_ml_string_length(s1) - len | 0) < ofs1) + && + 0 + <= + ofs2 + && + ! + ((caml_ml_bytes_length(s2) - len | 0) < ofs2)) + 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_; + for(;;) + {caml_call1(f,caml_bytes_unsafe_get(a,i)); + var _Bu_=i + 1 | 0; + if(_Bt_ !== i){var i=_Bu_;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_; + for(;;) + {caml_call2(f,i,caml_bytes_unsafe_get(a,i)); + var _Br_=i + 1 | 0; + if(_Bq_ !== i){var i=_Br_;continue} + break}} + return 0} + function concat$0(sep,l) + {if(l) + {var seplen=caml_ml_bytes_length(sep),acc=0,param=l,pos$1=0; + for(;;) + {if(param) + {var _Bm_=param[1]; + if(param[2]) + {var + tl=param[2], + x=(caml_ml_bytes_length(_Bm_) + 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} + else + var _Bo_=acc; + var dst=caml_create_bytes(_Bo_),pos=pos$1,param$0=l; + for(;;) + {if(param$0) + {var _Bn_=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 + (sep,0,dst,pos + caml_ml_bytes_length(_Bn_) | 0,seplen); + var + pos$0=(pos + caml_ml_bytes_length(_Bn_) | 0) + seplen | 0, + pos=pos$0, + param$0=tl$0; + continue} + caml_blit_bytes(_Bn_,0,dst,pos,caml_ml_bytes_length(_Bn_)); + return dst} + return dst}}} + return empty$0} + function cat$0(s1,s2) + {var + l1=caml_ml_bytes_length(s1), + l2=caml_ml_bytes_length(s2), + r=caml_create_bytes(l1 + l2 | 0); + caml_blit_bytes(s1,0,r,0,l1); + 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} + else + if(2 !== _Bl_)switch$0 = 1; + return switch$0?1:0} + function trim(s) + {var len=caml_ml_bytes_length(s),i=[0,0]; + for(;;) + {if(i[1] < len && is_space(caml_bytes_unsafe_get(s,i[1]))) + {i[1]++;continue} + var j=[0,len - 1 | 0]; + for(;;) + {if(i[1] <= j[1] && is_space(caml_bytes_unsafe_get(s,j[1]))) + {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_; + 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} + else + if(56 < _Bi_ - 1 >>> 0){switch$0 = 1;switch$1 = 1} + if(! switch$1){var _Bj_=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} + 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_; + for(;;) + {var c=caml_bytes_unsafe_get(s,i),switch$2=0; + if(35 <= c) + if(92 === c) + switch$2 = 2; + else + if(127 <= c)switch$2 = 1;else switch$2 = 3; + else + if(32 <= c) + if(34 <= c)switch$2 = 2;else switch$2 = 3; + else + if(14 <= c) + switch$2 = 1; + else + switch(c) + {case 8: + caml_bytes_unsafe_set(s$0,n[1],92); + n[1]++; + caml_bytes_unsafe_set(s$0,n[1],98); + break; + case 9: + caml_bytes_unsafe_set(s$0,n[1],92); + n[1]++; + caml_bytes_unsafe_set(s$0,n[1],116); + break; + case 10: + caml_bytes_unsafe_set(s$0,n[1],92); + n[1]++; + caml_bytes_unsafe_set(s$0,n[1],110); + break; + case 13: + caml_bytes_unsafe_set(s$0,n[1],92); + n[1]++; + caml_bytes_unsafe_set(s$0,n[1],114); + break; + default:switch$2 = 1} + switch(switch$2) + {case 1: + caml_bytes_unsafe_set(s$0,n[1],92); + n[1]++; + caml_bytes_unsafe_set(s$0,n[1],48 + (c / 100 | 0) | 0); + n[1]++; + caml_bytes_unsafe_set(s$0,n[1],48 + ((c / 10 | 0) % 10 | 0) | 0); + n[1]++; + caml_bytes_unsafe_set(s$0,n[1],48 + (c % 10 | 0) | 0); + break; + case 2: + caml_bytes_unsafe_set(s$0,n[1],92); + n[1]++; + caml_bytes_unsafe_set(s$0,n[1],c); + break; + 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} + 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_; + 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} + 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_; + 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} + 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_; + 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} + 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_; + 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} + break}} + return r[1]} + function exists$1(p,s) + {var n=caml_ml_bytes_length(s),i=0; + for(;;) + {if(i === n)return 0; + if(caml_call1(p,caml_bytes_unsafe_get(s,i)))return 1; + var i$0=i + 1 | 0,i=i$0; + continue}} + function for_all$1(p,s) + {var n=caml_ml_bytes_length(s),i=0; + for(;;) + {if(i === n)return 1; + if(caml_call1(p,caml_bytes_unsafe_get(s,i))) + {var i$0=i + 1 | 0,i=i$0;continue} + return 0}} + function uppercase_ascii$0(s){return map$5(uppercase_ascii,s)} + function lowercase_ascii$0(s){return map$5(lowercase_ascii,s)} + function apply1(f,s) + {if(0 === caml_ml_bytes_length(s))return s; + var r=copy(s); + caml_bytes_unsafe_set(r,0,caml_call1(f,caml_bytes_unsafe_get(s,0))); + return r} + function capitalize_ascii(s){return apply1(uppercase_ascii,s)} + function uncapitalize_ascii(s){return apply1(lowercase_ascii,s)} + function starts_with(prefix,s) + {var + len_s=caml_ml_bytes_length(s), + len_pre=caml_ml_bytes_length(prefix), + _A3_=len_pre <= len_s?1:0; + if(_A3_) + {var i=0; + for(;;) + {if(i === len_pre)return 1; + if(caml_bytes_unsafe_get(s,i) !== caml_bytes_unsafe_get(prefix,i)) + return 0; + var i$0=i + 1 | 0,i=i$0; + continue}} + return _A3_} + 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_) + {var i=0; + for(;;) + {if(i === len_suf)return 1; + if + (caml_bytes_unsafe_get(s,diff + i | 0) + !== + caml_bytes_unsafe_get(suffix,i)) + return 0; + var i$0=i + 1 | 0,i=i$0; + continue}} + return _A2_} + function index_rec(s,lim,i,c) + {var i$0=i; + for(;;) + {if(lim <= i$0)throw Not_found; + if(caml_bytes_unsafe_get(s,i$0) === c)return i$0; + var i$1=i$0 + 1 | 0,i$0=i$1; + continue}} + function index(s,c){return index_rec(s,caml_ml_bytes_length(s),0,c)} + function index_rec_opt(s,lim,i,c) + {var i$0=i; + for(;;) + {if(lim <= i$0)return 0; + if(caml_bytes_unsafe_get(s,i$0) === c)return [0,i$0]; + var i$1=i$0 + 1 | 0,i$0=i$1; + continue}} + function index_opt(s,c) + {return index_rec_opt(s,caml_ml_bytes_length(s),0,c)} + function index_from(s,i,c) + {var l=caml_ml_bytes_length(s); + if(0 <= i && ! (l < i))return index_rec(s,l,i,c); + return invalid_arg(cst_String_index_from_Bytes_in)} + function index_from_opt(s,i,c) + {var l=caml_ml_bytes_length(s); + if(0 <= i && ! (l < i))return index_rec_opt(s,l,i,c); + return invalid_arg(cst_String_index_from_opt_Byte)} + function rindex_rec(s,i,c) + {var i$0=i; + for(;;) + {if(0 <= i$0) + {if(caml_bytes_unsafe_get(s,i$0) === c)return i$0; + var i$1=i$0 - 1 | 0,i$0=i$1; + continue} + throw Not_found}} + function rindex(s,c) + {return rindex_rec(s,caml_ml_bytes_length(s) - 1 | 0,c)} + function rindex_from(s,i,c) + {if(-1 <= i && ! (caml_ml_bytes_length(s) <= i))return rindex_rec(s,i,c); + return invalid_arg(cst_String_rindex_from_Bytes_r)} + function rindex_rec_opt(s,i,c) + {var i$0=i; + for(;;) + {if(0 <= i$0) + {if(caml_bytes_unsafe_get(s,i$0) === c)return [0,i$0]; + var i$1=i$0 - 1 | 0,i$0=i$1; + continue} + return 0}} + function rindex_opt(s,c) + {return rindex_rec_opt(s,caml_ml_bytes_length(s) - 1 | 0,c)} + function rindex_from_opt(s,i,c) + {if(-1 <= i && ! (caml_ml_bytes_length(s) <= i)) + return rindex_rec_opt(s,i,c); + return invalid_arg(cst_String_rindex_from_opt_Byt)} + function contains_from(s,i,c) + {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_} + 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_} + 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_; + 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_]; + j[1] = i} + var _AX_=i - 1 | 0; + if(0 !== i){var i=_AX_;continue} + break}} + var _AV_=r[1]; + return [0,sub(s,0,j[1]),_AV_]} + 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)} + function uncapitalize(s){return apply1(lowercase,s)} + 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_)}} + 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_)}} + function of_seq$0(i) + {var n=[0,0],buf=[0,make$0(256,0)]; + iter + (function(c) + {if(n[1] === caml_ml_bytes_length(buf[1])) + {var + new_len= + min$1(2 * caml_ml_bytes_length(buf[1]) | 0,max_string_length); + if(caml_ml_bytes_length(buf[1]) === new_len) + failwith(cst_Bytes_of_seq_cannot_grow_b); + var new_buf=make$0(new_len,0); + blit(buf[1],0,new_buf,0,n[1]); + buf[1] = new_buf} + caml_bytes_set(buf[1],n[1],c); + n[1]++; + return 0}, + i); + return sub(buf[1],0,n[1])} + function get$1(b,i){return caml_bswap16(caml_bytes_get16(b,i))} + function get_int8(b,i){return caml_bytes_get(b,i) << 24 >> 24} + function get_uint16_le(b,i){return caml_bytes_get16(b,i)} + function get_uint16_be(b,i){return caml_bswap16(caml_bytes_get16(b,i))} + function get_int16_ne(b,i){return caml_bytes_get16(b,i) << 16 >> 16} + function get_int16_le(b,i){return caml_bytes_get16(b,i) << 16 >> 16} + function get_int16_be(b,i){return get_uint16_be(b,i) << 16 >> 16} + function get_int32_le(b,i){return caml_bytes_get32(b,i)} + function get_int32_be(b,i){return caml_int32_bswap(caml_bytes_get32(b,i))} + function get_int64_le(b,i){return caml_bytes_get64(b,i)} + function get_int64_be(b,i){return caml_int64_bswap(caml_bytes_get64(b,i))} + function set$0(b,i,x){return caml_bytes_set16(b,i,caml_bswap16(x))} + function set_int16_le(b,i,x){return caml_bytes_set16(b,i,x)} + function set_int16_be(b,i,x){return caml_bytes_set16(b,i,caml_bswap16(x))} + function set_int32_le(b,i,x){return caml_bytes_set32(b,i,x)} + function set_int32_be(b,i,x) + {return caml_bytes_set32(b,i,caml_int32_bswap(x))} + function set_int64_le(b,i,x){return caml_bytes_set64(b,i,x)} + function set_int64_be(b,i,x) + {return caml_bytes_set64(b,i,caml_int64_bswap(x))} + var set_uint8=caml_bytes_set,set_uint16_ne=caml_bytes_set16; + function dec_ret(n,u){return utf_decode(n,u)} + function not_in_x80_to_xBF(b){return 2 !== (b >>> 6 | 0)?1:0} + 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_} + 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} + function utf_8_uchar_4(b0,b1,b2,b3) + {return (b0 & 7) << 18 | (b1 & 63) << 12 | (b2 & 63) << 6 | b3 & 63} + function get_utf_8_uchar(b,i) + {var b0=caml_bytes_get(b,i),max=caml_ml_bytes_length(b) - 1 | 0; + if(224 <= b0) + {var switch$0=0; + if(237 <= b0) + {if(! (245 <= b0)) + switch(b0 - 237 | 0) + {case 0: + var i$0=i + 1 | 0; + if(max < i$0)return dec_invalid(1); + var b1=caml_bytes_unsafe_get(b,i$0); + if(not_in_x80_to_x9F(b1))return dec_invalid(1); + var i$1=i$0 + 1 | 0; + if(max < i$1)return dec_invalid(2); + var b2=caml_bytes_unsafe_get(b,i$1); + return not_in_x80_to_xBF(b2) + ?dec_invalid(2) + :dec_ret(3,utf_8_uchar_3(b0,b1,b2)); + case 3: + var i$4=i + 1 | 0; + if(max < i$4)return dec_invalid(1); + var b1$1=caml_bytes_unsafe_get(b,i$4); + if(not_in_x90_to_xBF(b1$1))return dec_invalid(1); + var i$5=i$4 + 1 | 0; + if(max < i$5)return dec_invalid(2); + var b2$1=caml_bytes_unsafe_get(b,i$5); + if(not_in_x80_to_xBF(b2$1))return dec_invalid(2); + var i$6=i$5 + 1 | 0; + if(max < i$6)return dec_invalid(3); + var b3=caml_bytes_unsafe_get(b,i$6); + return not_in_x80_to_xBF(b3) + ?dec_invalid(3) + :dec_ret(4,utf_8_uchar_4(b0,b1$1,b2$1,b3)); + case 7: + var i$10=i + 1 | 0; + if(max < i$10)return dec_invalid(1); + var b1$3=caml_bytes_unsafe_get(b,i$10); + if(not_in_x80_to_x8F(b1$3))return dec_invalid(1); + var i$11=i$10 + 1 | 0; + if(max < i$11)return dec_invalid(2); + var b2$3=caml_bytes_unsafe_get(b,i$11); + if(not_in_x80_to_xBF(b2$3))return dec_invalid(2); + var i$12=i$11 + 1 | 0; + if(max < i$12)return dec_invalid(3); + var b3$1=caml_bytes_unsafe_get(b,i$12); + return not_in_x80_to_xBF(b3$1) + ?dec_invalid(3) + :dec_ret(4,utf_8_uchar_4(b0,b1$3,b2$3,b3$1)); + case 1: + case 2:switch$0 = 1;break; + default: + var i$7=i + 1 | 0; + if(max < i$7)return dec_invalid(1); + var b1$2=caml_bytes_unsafe_get(b,i$7); + if(not_in_x80_to_xBF(b1$2))return dec_invalid(1); + var i$8=i$7 + 1 | 0; + if(max < i$8)return dec_invalid(2); + var b2$2=caml_bytes_unsafe_get(b,i$8); + if(not_in_x80_to_xBF(b2$2))return dec_invalid(2); + var i$9=i$8 + 1 | 0; + if(max < i$9)return dec_invalid(3); + var b3$0=caml_bytes_unsafe_get(b,i$9); + return not_in_x80_to_xBF(b3$0) + ?dec_invalid(3) + :dec_ret(4,utf_8_uchar_4(b0,b1$2,b2$2,b3$0))}} + else + {if(! (225 <= b0)) + {var i$13=i + 1 | 0; + if(max < i$13)return dec_invalid(1); + var b1$4=caml_bytes_unsafe_get(b,i$13); + if(not_in_xA0_to_xBF(b1$4))return dec_invalid(1); + var i$14=i$13 + 1 | 0; + if(max < i$14)return dec_invalid(2); + var b2$4=caml_bytes_unsafe_get(b,i$14); + return not_in_x80_to_xBF(b2$4) + ?dec_invalid(2) + :dec_ret(3,utf_8_uchar_3(b0,b1$4,b2$4))} + switch$0 = 1} + if(switch$0) + {var i$2=i + 1 | 0; + if(max < i$2)return dec_invalid(1); + var b1$0=caml_bytes_unsafe_get(b,i$2); + if(not_in_x80_to_xBF(b1$0))return dec_invalid(1); + var i$3=i$2 + 1 | 0; + if(max < i$3)return dec_invalid(2); + var b2$0=caml_bytes_unsafe_get(b,i$3); + return not_in_x80_to_xBF(b2$0) + ?dec_invalid(2) + :dec_ret(3,utf_8_uchar_3(b0,b1$0,b2$0))}} + else + {if(! (128 <= b0))return dec_ret(1,b0); + if(194 <= b0) + {var i$15=i + 1 | 0; + if(max < i$15)return dec_invalid(1); + var b1$5=caml_bytes_unsafe_get(b,i$15); + return not_in_x80_to_xBF(b1$5) + ?dec_invalid(1) + :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} + 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_]; + var last=i + 3 | 0; + return max < last + ?0 + :(caml_bytes_set(b,i,240 | u >>> 18 | 0), + set(b,i + 1 | 0,128 | (u >>> 12 | 0) & 63), + set(b,i + 2 | 0,128 | (u >>> 6 | 0) & 63), + set(b,last,128 | u & 63), + 4)} + var last$0=i + 2 | 0; + return max < last$0 + ?0 + :(caml_bytes_set(b,i,224 | u >>> 12 | 0), + set(b,i + 1 | 0,128 | (u >>> 6 | 0) & 63), + set(b,last$0,128 | u & 63), + 3)} + var last$1=i + 1 | 0; + return max < last$1 + ?0 + :(caml_bytes_set(b,i,192 | u >>> 6 | 0), + set(b,last$1,128 | u & 63), + 2)} + caml_bytes_set(b,i,u); + return 1} + throw [0,Assert_failure,_C_]} + function is_valid_utf_8(b) + {var max=caml_ml_bytes_length(b) - 1 | 0,i=0; + for(;;) + {if(max < i)return 1; + var match=caml_bytes_unsafe_get(b,i); + if(224 <= match) + {var switch$0=0; + if(237 <= match) + {if(! (245 <= match)) + switch(match - 237 | 0) + {case 0: + var last=i + 2 | 0; + if + (! + (max < last) + && + ! + not_in_x80_to_x9F(caml_bytes_unsafe_get(b,i + 1 | 0)) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last))) + {var i$0=last + 1 | 0,i=i$0;continue} + return 0; + case 3: + var last$1=i + 3 | 0; + if + (! + (max < last$1) + && + ! + not_in_x90_to_xBF(caml_bytes_unsafe_get(b,i + 1 | 0)) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,i + 2 | 0)) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$1))) + {var i$2=last$1 + 1 | 0,i=i$2;continue} + return 0; + case 7: + var last$3=i + 3 | 0; + if + (! + (max < last$3) + && + ! + not_in_x80_to_x8F(caml_bytes_unsafe_get(b,i + 1 | 0)) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,i + 2 | 0)) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$3))) + {var i$4=last$3 + 1 | 0,i=i$4;continue} + return 0; + case 1: + case 2:switch$0 = 1;break; + default: + var last$2=i + 3 | 0; + if + (! + (max < last$2) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,i + 1 | 0)) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,i + 2 | 0)) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$2))) + {var i$3=last$2 + 1 | 0,i=i$3;continue} + return 0}} + else + {if(! (225 <= match)) + {var last$4=i + 2 | 0; + if + (! + (max < last$4) + && + ! + not_in_xA0_to_xBF(caml_bytes_unsafe_get(b,i + 1 | 0)) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$4))) + {var i$5=last$4 + 1 | 0,i=i$5;continue} + return 0} + switch$0 = 1} + if(switch$0) + {var last$0=i + 2 | 0; + if + (! + (max < last$0) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,i + 1 | 0)) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$0))) + {var i$1=last$0 + 1 | 0,i=i$1;continue} + return 0}} + else + {if(! (128 <= match)){var i$7=i + 1 | 0,i=i$7;continue} + if(194 <= match) + {var last$5=i + 1 | 0; + if + (! + (max < last$5) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$5))) + {var i$6=last$5 + 1 | 0,i=i$6;continue} + return 0}} + return 0}} + function get_utf_16be_uchar(b,i) + {var max=caml_ml_bytes_length(b) - 1 | 0; + if(0 <= i && ! (max < i)) + {if(i === max)return dec_invalid(1); + var hi=get$1(b,i); + if(55296 <= hi && ! (57343 < hi)) + {if(56319 < hi)return dec_invalid(2); + var last=i + 3 | 0; + if(max < last)return dec_invalid((max - i | 0) + 1 | 0); + var u=get$1(b,i + 2 | 0); + if(56320 <= u && ! (57343 < u)) + {var u$0=((hi & 1023) << 10 | u & 1023) + 65536 | 0; + return dec_ret(4,u$0)} + return dec_invalid(2)} + return dec_ret(2,hi)} + return invalid_arg(cst_index_out_of_bounds)} + function set_utf_16be_uchar(b,i,u) + {var max=caml_ml_bytes_length(b) - 1 | 0; + if(0 <= i && ! (max < i)) + {if(0 <= u) + {if(65535 < u) + {if(1114111 < u)throw [0,Assert_failure,_D_]; + var last=i + 3 | 0; + if(max < last)return 0; + var + u$0=u - 65536 | 0, + hi=55296 | u$0 >>> 10 | 0, + lo=56320 | u$0 & 1023; + set$0(b,i,hi); + set$0(b,i + 2 | 0,lo); + return 4} + var last$0=i + 1 | 0; + return max < last$0?0:(set$0(b,i,u),2)} + throw [0,Assert_failure,_E_]} + 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; + for(;;) + {if(max < i)return 1; + if(i === max)return 0; + var u=get$1(b,i); + if(55296 <= u && ! (57343 < u)) + {if(56319 < u)return 0; + var last=i + 3 | 0; + if(max < last)return 0; + var u$0=get$1(b,i + 2 | 0); + if(56320 <= u$0 && ! (57343 < u$0)) + {var i$1=i + 4 | 0,i=i$1;continue} + return 0} + var i$0=i + 2 | 0,i=i$0; + continue}} + function get_utf_16le_uchar(b,i) + {var max=caml_ml_bytes_length(b) - 1 | 0; + if(0 <= i && ! (max < i)) + {if(i === max)return dec_invalid(1); + var hi=caml_bytes_get16(b,i); + if(55296 <= hi && ! (57343 < hi)) + {if(56319 < hi)return dec_invalid(2); + var last=i + 3 | 0; + if(max < last)return dec_invalid((max - i | 0) + 1 | 0); + var u=caml_bytes_get16(b,i + 2 | 0); + if(56320 <= u && ! (57343 < u)) + {var u$0=((hi & 1023) << 10 | u & 1023) + 65536 | 0; + return dec_ret(4,u$0)} + return dec_invalid(2)} + return dec_ret(2,hi)} + return invalid_arg(cst_index_out_of_bounds$1)} + function set_utf_16le_uchar(b,i,u) + {var max=caml_ml_bytes_length(b) - 1 | 0; + if(0 <= i && ! (max < i)) + {if(0 <= u) + {if(65535 < u) + {if(1114111 < u)throw [0,Assert_failure,_F_]; + var last=i + 3 | 0; + if(max < last)return 0; + var + u$0=u - 65536 | 0, + hi=55296 | u$0 >>> 10 | 0, + lo=56320 | u$0 & 1023; + caml_bytes_set16(b,i,hi); + caml_bytes_set16(b,i + 2 | 0,lo); + 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_]} + 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; + for(;;) + {if(max < i)return 1; + if(i === max)return 0; + var u=caml_bytes_get16(b,i); + if(55296 <= u && ! (57343 < u)) + {if(56319 < u)return 0; + var last=i + 3 | 0; + if(max < last)return 0; + var u$0=caml_bytes_get16(b,i + 2 | 0); + if(56320 <= u$0 && ! (57343 < u$0)) + {var i$1=i + 4 | 0,i=i$1;continue} + return 0} + var i$0=i + 2 | 0,i=i$0; + continue}} + var + set_int64_ne=caml_bytes_set64, + set_int32_ne=caml_bytes_set32, + set_int16_ne=caml_bytes_set16, + set_int8=caml_bytes_set, + get_int64_ne=caml_bytes_get64, + get_int32_ne=caml_bytes_get32, + get_uint16_ne=caml_bytes_get16, + get_uint8=caml_bytes_get, + unsafe_of_string=caml_bytes_of_string, + unsafe_to_string=caml_string_of_bytes, + equal$8=runtime.caml_bytes_equal, + include$1= + [0, + make$0, + init$1, + empty$0, + copy, + to_bytes, + of_bytes, + sub, + sub_string, + extend, + fill, + blit, + blit$0, + concat$0, + cat$0, + iter$3, + iteri$1, + map$5, + mapi$1, + fold_left$1, + fold_right$0, + for_all$1, + exists$1, + trim, + escaped$0, + index, + index_opt, + rindex, + rindex_opt, + index_from, + index_from_opt, + rindex_from, + rindex_from_opt, + contains, + contains_from, + rcontains_from, + uppercase$0, + lowercase$0, + capitalize, + uncapitalize, + uppercase_ascii$0, + lowercase_ascii$0, + capitalize_ascii, + uncapitalize_ascii, + compare$8, + equal$8, + starts_with, + ends_with, + unsafe_to_string, + unsafe_of_string, + split_on_char, + to_seq$2, + to_seqi, + of_seq$0, + get_utf_8_uchar, + set_utf_8_uchar, + is_valid_utf_8, + get_utf_16be_uchar, + set_utf_16be_uchar, + is_valid_utf_16be, + get_utf_16le_uchar, + set_utf_16le_uchar, + is_valid_utf_16le, + get_uint8, + get_int8, + get_uint16_ne, + get_uint16_be, + get_uint16_le, + get_int16_ne, + get_int16_be, + get_int16_le, + get_int32_ne, + get_int32_be, + get_int32_le, + get_int64_ne, + get_int64_be, + get_int64_le, + set_uint8, + set_int8, + set_uint16_ne, + set_int16_be, + set_int16_le, + set_int16_ne, + set_int16_be, + set_int16_le, + set_int32_ne, + set_int32_be, + set_int32_le, + set_int64_ne, + set_int64_be, + set_int64_le]; + caml_register_global(790,include$1,"Stdlib__Bytes"); + function make$1(n,c){return caml_string_of_bytes(make$0(n,c))} + function init$2(n,f){return caml_string_of_bytes(init$1(n,f))} + function copy$0(s) + {return caml_string_of_bytes(copy(caml_bytes_of_string(s)))} + function sub$0(s,ofs,len) + {return caml_string_of_bytes(sub(caml_bytes_of_string(s),ofs,len))} + function concat$1(sep,l) + {if(l) + {var seplen=caml_ml_string_length(sep),acc=0,param=l,pos$1=0; + for(;;) + {if(param) + {var _AE_=param[1]; + if(param[2]) + {var + tl=param[2], + x=(caml_ml_string_length(_AE_) + 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} + else + var _AG_=acc; + var dst=caml_create_bytes(_AG_),pos=pos$1,param$0=l; + for(;;) + {if(param$0) + {var _AF_=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 + (sep,0,dst,pos + caml_ml_string_length(_AF_) | 0,seplen); + var + pos$0=(pos + caml_ml_string_length(_AF_) | 0) + seplen | 0, + pos=pos$0, + param$0=tl$0; + continue} + caml_blit_string(_AF_,0,dst,pos,caml_ml_string_length(_AF_))} + 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_; + for(;;) + {caml_call1(f,caml_string_unsafe_get(s,i)); + var _AD_=i + 1 | 0; + if(_AC_ !== i){var i=_AD_;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_; + for(;;) + {caml_call2(f,i,caml_string_unsafe_get(s,i)); + var _AA_=i + 1 | 0; + if(_Az_ !== i){var i=_AA_;continue} + break}} + return 0} + function map$6(f,s) + {return caml_string_of_bytes(map$5(f,caml_bytes_of_string(s)))} + function mapi$2(f,s) + {return caml_string_of_bytes(mapi$1(f,caml_bytes_of_string(s)))} + function fold_right$1(f,x,a) + {return fold_right$0(f,caml_bytes_of_string(x),a)} + function fold_left$2(f,a,x) + {return fold_left$1(f,a,caml_bytes_of_string(x))} + 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} + else + if(2 !== _Ax_)switch$0 = 1; + return switch$0?1:0} + function trim$0(s) + {if(caml_string_equal(s,cst$4))return s; + if + (! + is_space$0(caml_string_unsafe_get(s,0)) + && + ! + is_space$0(caml_string_unsafe_get(s,caml_ml_string_length(s) - 1 | 0))) + return s; + return caml_string_of_bytes(trim(caml_bytes_of_string(s)))} + function escaped$1(s) + {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} + else + if(2 === _Aw_)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; + continue}} + function index_rec$0(s,lim,i,c) + {var i$0=i; + for(;;) + {if(lim <= i$0)throw Not_found; + if(caml_string_unsafe_get(s,i$0) === c)return i$0; + var i$1=i$0 + 1 | 0,i$0=i$1; + continue}} + function index$0(s,c){return index_rec$0(s,caml_ml_string_length(s),0,c)} + function index_rec_opt$0(s,lim,i,c) + {var i$0=i; + for(;;) + {if(lim <= i$0)return 0; + if(caml_string_unsafe_get(s,i$0) === c)return [0,i$0]; + var i$1=i$0 + 1 | 0,i$0=i$1; + continue}} + function index_opt$0(s,c) + {return index_rec_opt$0(s,caml_ml_string_length(s),0,c)} + function index_from$0(s,i,c) + {var l=caml_ml_string_length(s); + if(0 <= i && ! (l < i))return index_rec$0(s,l,i,c); + return invalid_arg(cst_String_index_from_Bytes_in$0)} + function index_from_opt$0(s,i,c) + {var l=caml_ml_string_length(s); + if(0 <= i && ! (l < i))return index_rec_opt$0(s,l,i,c); + return invalid_arg(cst_String_index_from_opt_Byte$0)} + function rindex_rec$0(s,i,c) + {var i$0=i; + for(;;) + {if(0 <= i$0) + {if(caml_string_unsafe_get(s,i$0) === c)return i$0; + var i$1=i$0 - 1 | 0,i$0=i$1; + continue} + throw Not_found}} + function rindex$0(s,c) + {return rindex_rec$0(s,caml_ml_string_length(s) - 1 | 0,c)} + function rindex_from$0(s,i,c) + {if(-1 <= i && ! (caml_ml_string_length(s) <= i)) + return rindex_rec$0(s,i,c); + return invalid_arg(cst_String_rindex_from_Bytes_r$0)} + function rindex_rec_opt$0(s,i,c) + {var i$0=i; + for(;;) + {if(0 <= i$0) + {if(caml_string_unsafe_get(s,i$0) === c)return [0,i$0]; + var i$1=i$0 - 1 | 0,i$0=i$1; + continue} + return 0}} + function rindex_opt$0(s,c) + {return rindex_rec_opt$0(s,caml_ml_string_length(s) - 1 | 0,c)} + function rindex_from_opt$0(s,i,c) + {if(-1 <= i && ! (caml_ml_string_length(s) <= i)) + return rindex_rec_opt$0(s,i,c); + return invalid_arg(cst_String_rindex_from_opt_Byt$0)} + function contains_from$0(s,i,c) + {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_} + 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_} + 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)))} + function lowercase_ascii$1(s) + {return caml_string_of_bytes(lowercase_ascii$0(caml_bytes_of_string(s)))} + function capitalize_ascii$0(s) + {return caml_string_of_bytes(capitalize_ascii(caml_bytes_of_string(s)))} + function uncapitalize_ascii$0(s) + {return caml_string_of_bytes(uncapitalize_ascii(caml_bytes_of_string(s)))} + function starts_with$0(prefix,s) + {var + len_s=caml_ml_string_length(s), + len_pre=caml_ml_string_length(prefix), + _Ar_=len_pre <= len_s?1:0; + if(_Ar_) + {var i=0; + for(;;) + {if(i === len_pre)return 1; + if(caml_string_unsafe_get(s,i) !== caml_string_unsafe_get(prefix,i)) + return 0; + var i$0=i + 1 | 0,i=i$0; + continue}} + return _Ar_} + 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_) + {var i=0; + for(;;) + {if(i === len_suf)return 1; + if + (caml_string_unsafe_get(s,diff + i | 0) + !== + caml_string_unsafe_get(suffix,i)) + return 0; + var i$0=i + 1 | 0,i=i$0; + continue}} + return _Aq_} + 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_; + 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_]; + j[1] = i} + var _Ap_=i - 1 | 0; + if(0 !== i){var i=_Ap_;continue} + break}} + var _An_=r[1]; + return [0,sub$0(s,0,j[1]),_An_]} + function uppercase$1(s) + {return caml_string_of_bytes(uppercase$0(caml_bytes_of_string(s)))} + function lowercase$1(s) + {return caml_string_of_bytes(lowercase$0(caml_bytes_of_string(s)))} + function capitalize$0(s) + {return caml_string_of_bytes(capitalize(caml_bytes_of_string(s)))} + function uncapitalize$0(s) + {return caml_string_of_bytes(uncapitalize(caml_bytes_of_string(s)))} + function compare$9(x,y){return caml_string_compare(x,y)} + function to_seq$3(s){return to_seq$2(caml_bytes_of_string(s))} + function to_seqi$0(s){return to_seqi(caml_bytes_of_string(s))} + function of_seq$1(g){return caml_string_of_bytes(of_seq$0(g))} + function get_utf_8_uchar$0(s,i) + {return get_utf_8_uchar(caml_bytes_of_string(s),i)} + function is_valid_utf_8$0(s) + {return is_valid_utf_8(caml_bytes_of_string(s))} + function get_utf_16be_uchar$0(s,i) + {return get_utf_16be_uchar(caml_bytes_of_string(s),i)} + function is_valid_utf_16be$0(s) + {return is_valid_utf_16be(caml_bytes_of_string(s))} + function get_utf_16le_uchar$0(s,i) + {return get_utf_16le_uchar(caml_bytes_of_string(s),i)} + function is_valid_utf_16le$0(s) + {return is_valid_utf_16le(caml_bytes_of_string(s))} + function get_int8$0(s,i){return get_int8(caml_bytes_of_string(s),i)} + function get_uint16_le$0(s,i) + {return caml_bytes_get16(caml_bytes_of_string(s),i)} + function get_uint16_be$0(s,i) + {return get_uint16_be(caml_bytes_of_string(s),i)} + function get_int16_ne$0(s,i) + {return get_int16_ne(caml_bytes_of_string(s),i)} + function get_int16_le$0(s,i) + {return get_int16_le(caml_bytes_of_string(s),i)} + function get_int16_be$0(s,i) + {return get_int16_be(caml_bytes_of_string(s),i)} + function get_int32_le$0(s,i) + {return caml_bytes_get32(caml_bytes_of_string(s),i)} + function get_int32_be$0(s,i) + {return get_int32_be(caml_bytes_of_string(s),i)} + function get_int64_le$0(s,i) + {return caml_bytes_get64(caml_bytes_of_string(s),i)} + function get_int64_be$0(s,i) + {return get_int64_be(caml_bytes_of_string(s),i)} + var + get_int64_ne$0=runtime.caml_string_get64, + get_int32_ne$0=runtime.caml_string_get32, + get_uint16_ne$0=runtime.caml_string_get16, + get_uint8$0=caml_string_get, + equal$9=caml_string_equal, + include$2= + [0, + make$1, + init$2, + empty$1, + of_bytes, + to_bytes, + concat$1, + cat, + equal$9, + compare$9, + starts_with$0, + ends_with$0, + contains_from$0, + rcontains_from$0, + contains$0, + sub$0, + split_on_char$0, + map$6, + mapi$2, + fold_left$2, + fold_right$1, + for_all$2, + exists$2, + trim$0, + escaped$1, + uppercase_ascii$1, + lowercase_ascii$1, + capitalize_ascii$0, + uncapitalize_ascii$0, + iter$4, + iteri$2, + index_from$0, + index_from_opt$0, + rindex_from$0, + rindex_from_opt$0, + index$0, + index_opt$0, + rindex$0, + rindex_opt$0, + to_seq$3, + to_seqi$0, + of_seq$1, + get_utf_8_uchar$0, + is_valid_utf_8$0, + get_utf_16be_uchar$0, + is_valid_utf_16be$0, + get_utf_16le_uchar$0, + is_valid_utf_16le$0, + blit$0, + copy$0, + fill, + uppercase$1, + lowercase$1, + capitalize$0, + uncapitalize$0, + get_uint8$0, + get_int8$0, + get_uint16_ne$0, + get_uint16_be$0, + get_uint16_le$0, + get_int16_ne$0, + get_int16_be$0, + get_int16_le$0, + get_int32_ne$0, + get_int32_be$0, + get_int32_le$0, + get_int64_ne$0, + 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 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"); + function to_buffer(buff,ofs,len,v,flags) + {if + (0 + <= + ofs + && + 0 + <= + len + && + ! + ((caml_ml_bytes_length(buff) - len | 0) < ofs)) + return runtime.caml_output_value_to_buffer(buff,ofs,len,v,flags); + return invalid_arg(cst_Marshal_to_buffer_substrin)} + var header_size=20; + function data_size(buff,ofs) + {if(0 <= ofs && ! ((caml_ml_bytes_length(buff) - 20 | 0) < ofs)) + return caml_marshal_data_size(buff,ofs); + return invalid_arg(cst_Marshal_data_size)} + function total_size(buff,ofs){return 20 + data_size(buff,ofs) | 0} + function from_bytes(buff,ofs) + {if(0 <= ofs && ! ((caml_ml_bytes_length(buff) - 20 | 0) < ofs)) + {var len=caml_marshal_data_size(buff,ofs); + return (caml_ml_bytes_length(buff) - (20 + len | 0) | 0) < ofs + ?invalid_arg(cst_Marshal_from_bytes$0) + :runtime.caml_input_value_from_bytes(buff,ofs)} + return invalid_arg(cst_Marshal_from_bytes)} + function from_string(buff,ofs) + {return from_bytes(caml_bytes_of_string(buff),ofs)} + var + Stdlib_Marshal= + [0, + caml_output_value, + to_buffer, + caml_input_value, + from_bytes, + from_string, + header_size, + data_size, + total_size]; + caml_register_global(793,Stdlib_Marshal,"Stdlib__Marshal"); + var make_float=runtime.caml_make_float_vect,Floatarray=[0]; + 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_; + for(;;) + {res[1 + i] = caml_call1(f,i); + var _Aj_=i + 1 | 0; + if(_Ai_ !== i){var i=_Aj_;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_; + for(;;) + {res[1 + x] = caml_make_vect(sy,init); + var _Ag_=x + 1 | 0; + if(_Af_ !== x){var x=_Ag_;continue} + break}} + return res} + function copy$1(a) + {var l=a.length - 1;return 0 === l?[0]:caml_array_sub(a,0,l)} + function append$1(a1,a2) + {var l1=a1.length - 1; + return 0 === l1 + ?copy$1(a2) + :0 === a2.length - 1 + ?caml_array_sub(a1,0,l1) + :runtime.caml_array_append(a1,a2)} + function sub$1(a,ofs,len) + {if(0 <= ofs && 0 <= len && ! ((a.length - 1 - len | 0) < ofs)) + return caml_array_sub(a,ofs,len); + return invalid_arg(cst_Array_sub)} + function fill$0(a,ofs,len,v) + {if(0 <= ofs && 0 <= len && ! ((a.length - 1 - len | 0) < ofs)) + return runtime.caml_array_fill(a,ofs,len,v); + return invalid_arg(cst_Array_fill)} + function blit$1(a1,ofs1,a2,ofs2,len) + {if + (0 + <= + len + && + 0 + <= + ofs1 + && + ! + ((a1.length - 1 - len | 0) < ofs1) + && + 0 + <= + ofs2 + && + ! + ((a2.length - 1 - len | 0) < ofs2)) + 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_; + for(;;) + {caml_call1(f,a[1 + i]); + var _Ad_=i + 1 | 0; + if(_Ac_ !== i){var i=_Ad_;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__; + for(;;) + {caml_call2(f,a[1 + i],b[1 + i]); + var _Aa_=i + 1 | 0; + if(_z$_ !== i){var i=_Aa_;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_; + for(;;) + {r[1 + i] = caml_call1(f,a[1 + i]); + var _z9_=i + 1 | 0; + if(_z8_ !== i){var i=_z9_;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_; + 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} + break}} + return r} + function iteri$3(f,a) + {var _z2_=a.length - 1 - 1 | 0,_z1_=0; + if(! (_z2_ < 0)) + {var i=_z1_; + for(;;) + {caml_call2(f,i,a[1 + i]); + var _z3_=i + 1 | 0; + if(_z2_ !== i){var i=_z3_;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_; + for(;;) + {r[1 + i] = caml_call2(f,i,a[1 + i]); + var _z0_=i + 1 | 0; + if(_zZ_ !== i){var i=_z0_;continue} + break}} + return r} + function to_list$1(a) + {var i$1=a.length - 1 - 1 | 0,i=i$1,res=0; + for(;;) + {if(0 <= i) + {var res$0=[0,a[1 + i],res],i$0=i - 1 | 0,i=i$0,res=res$0;continue} + return res}} + function list_length(accu,param) + {var accu$0=accu,param$0=param; + for(;;) + {if(param$0) + {var + param$1=param$0[2], + accu$1=accu$0 + 1 | 0, + accu$0=accu$1, + param$0=param$1; + continue} + return accu$0}} + function of_list(l) + {if(l) + {var + tl=l[2], + hd=l[1], + a=caml_make_vect(list_length(0,l),hd), + i=1, + param=tl; + for(;;) + {if(param) + {var tl$0=param[2],hd$0=param[1]; + a[1 + i] = hd$0; + var i$0=i + 1 | 0,i=i$0,param=tl$0; + continue} + 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_; + for(;;) + {r[1] = caml_call2(f,r[1],a[1 + i]); + var _zX_=i + 1 | 0; + if(_zW_ !== i){var i=_zX_;continue} + break}} + return r[1]} + function fold_left_map$0(f,acc,input_array) + {var len=input_array.length - 1; + if(0 === len)return [0,acc,[0]]; + var + match=caml_call2(f,acc,input_array[1]), + elt=match[2], + 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_; + for(;;) + {var + match$0=caml_call2(f,acc$1[1],input_array[1 + i]), + elt$0=match$0[2], + 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} + 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_; + for(;;) + {r[1] = caml_call2(f,a[1 + i],r[1]); + var _zR_=i - 1 | 0; + if(0 !== i){var i=_zR_;continue} + break}} + return r[1]} + function exists$3(p,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 0; + if(caml_call1(p,a[1 + i]))return 1; + var i$0=i + 1 | 0,i=i$0; + continue}} + function for_all$3(p,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 1; + if(caml_call1(p,a[1 + i])){var i$0=i + 1 | 0,i=i$0;continue} + return 0}} + function for_all2$1(p,l1,l2) + {var n1=l1.length - 1,n2=l2.length - 1; + if(n1 !== n2)return invalid_arg(cst_Array_for_all2); + var i=0; + for(;;) + {if(i === n1)return 1; + if(caml_call2(p,l1[1 + i],l2[1 + i])) + {var i$0=i + 1 | 0,i=i$0;continue} + return 0}} + function exists2$1(p,l1,l2) + {var n1=l1.length - 1,n2=l2.length - 1; + if(n1 !== n2)return invalid_arg(cst_Array_exists2); + var i=0; + for(;;) + {if(i === n1)return 0; + if(caml_call2(p,l1[1 + i],l2[1 + i]))return 1; + var i$0=i + 1 | 0,i=i$0; + continue}} + function mem$0(x,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 0; + if(0 === caml_compare(a[1 + i],x))return 1; + var i$0=i + 1 | 0,i=i$0; + continue}} + function memq$0(x,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 0; + if(x === a[1 + i])return 1; + var i$0=i + 1 | 0,i=i$0; + continue}} + function find_opt$0(p,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 0; + var x=a[1 + i]; + if(caml_call1(p,x))return [0,x]; + var i$0=i + 1 | 0,i=i$0; + continue}} + function find_map$1(f,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 0; + var r=caml_call1(f,a[1 + i]); + if(r)return r; + var i$0=i + 1 | 0,i=i$0; + continue}} + function split$0(x) + {if(caml_equal(x,[0]))return [0,[0],[0]]; + var + match=x[1], + b0=match[2], + a0=match[1], + 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_; + 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} + 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_; + for(;;) + {x[1 + i] = [0,a[1 + i],b[1 + i]]; + var _zM_=i + 1 | 0; + if(_zL_ !== i){var i=_zM_;continue} + break}} + return x} + var Bottom=[248,cst_Stdlib_Array_Bottom,caml_fresh_oo_id(0)]; + function sort(cmp,a) + {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) + 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) + 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_))) + return i31 + 1 | 0} + if(i31 < l)return i31; + throw [0,Bottom,i]} + function trickledown(l,i,e) + {var i$0=i; + 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 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_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] === Bottom) + {var i$0=exn[2];caml_check_bound(a,i$0)[1 + i$0] = e;return 0} + throw exn}} + 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$0=i$1; + continue}} + function bubble(l,i) + {try + {var _zz_=bubbledown(l,i);return _zz_} + 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_; + 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} + break}} + var _zs_=l - 1 | 0; + if(! (_zs_ < 2)) + {var i$0=_zs_; + 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_; + 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 + (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_; + 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} + 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_; + caml_check_bound(a,0)[1] = e; + var _zv_=0} + else + var _zv_=_zt_; + return _zv_} + function fast_sort$0(cmp,a) + {function merge(src1ofs,src1len,src2,src2ofs,src2len,dst,dstofs) + {var + src1r=src1ofs + src1len | 0, + src2r=src2ofs + src2len | 0, + s2$1=caml_check_bound(src2,src2ofs)[1 + src2ofs], + s1$1=caml_check_bound(a,src1ofs)[1 + src1ofs], + i1=src1ofs, + s1=s1$1, + i2=src2ofs, + s2=s2$1, + d=dstofs; + for(;;) + {if(0 < caml_call2(cmp,s1,s2)) + {caml_check_bound(dst,d)[1 + d] = s2; + var i2$0=i2 + 1 | 0; + if(i2$0 < src2r) + {var + d$0=d + 1 | 0, + s2$0=caml_check_bound(src2,i2$0)[1 + i2$0], + i2=i2$0, + s2=s2$0, + d=d$0; + continue} + return blit$1(a,i1,dst,d + 1 | 0,src1r - i1 | 0)} + caml_check_bound(dst,d)[1 + d] = s1; + var i1$0=i1 + 1 | 0; + if(i1$0 < src1r) + {var + d$1=d + 1 | 0, + s1$0=caml_check_bound(a,i1$0)[1 + i1$0], + i1=i1$0, + s1=s1$0, + d=d$1; + 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_; + a: + for(;;) + {var + _zj_=srcofs + i | 0, + e=caml_check_bound(a,_zj_)[1 + _zj_], + 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 + _zl_=j[1], + _zm_=caml_check_bound(dst,_zl_)[1 + _zl_], + _zn_=j[1] + 1 | 0; + caml_check_bound(dst,_zn_)[1 + _zn_] = _zm_; + 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} + break} + break}} + return 0} + function sortto(srcofs,dst,dstofs,len) + {if(len <= 5)return isortto(srcofs,dst,dstofs,len); + var l1=len / 2 | 0,l2=len - l1 | 0; + sortto(srcofs + l1 | 0,dst,dstofs + l1 | 0,l2); + sortto(srcofs,a,srcofs + l2 | 0,l1); + return merge(srcofs + l2 | 0,l1,dst,dstofs + l1 | 0,l2,dst,dstofs)} + var l=a.length - 1; + if(l <= 5)return isortto(0,a,0,l); + var + l1=l / 2 | 0, + l2=l - l1 | 0, + t=caml_make_vect(l2,caml_check_bound(a,0)[1]); + sortto(l1,t,0,l2); + sortto(0,a,l2,l1); + return merge(l2,l1,t,0,l2,a,0)} + 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_)}]} + return 0} + var _zd_=0; + return function(_ze_){return aux(_zd_,_ze_)}} + 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_)}]} + return 0} + var _y$_=0; + return function(_za_){return aux(_y$_,_za_)}} + function of_seq$2(i$2) + {var _y__=0,l=fold_left(function(acc,x){return [0,x,acc]},_y__,i$2); + if(l) + {var + tl=l[2], + hd=l[1], + len=list_length(0,l), + a=caml_make_vect(len,hd), + i$1=len - 2 | 0, + i=i$1, + param=tl; + for(;;) + {if(param) + {var tl$0=param[2],hd$0=param[1]; + a[1 + i] = hd$0; + var i$0=i - 1 | 0,i=i$0,param=tl$0; + continue} + return a}} + return [0]} + var + concat$2=caml_array_concat, + include$3= + [0, + make_float, + init$3, + create_matrix, + create_matrix, + append$1, + concat$2, + sub$1, + copy$1, + fill$0, + blit$1, + to_list$1, + of_list, + iter$5, + iteri$3, + map$7, + mapi$3, + fold_left$3, + fold_left_map$0, + fold_right$2, + iter2$1, + map2$1, + for_all$3, + exists$3, + for_all2$1, + exists2$1, + mem$0, + memq$0, + find_opt$0, + find_map$1, + split$0, + combine$0, + sort, + fast_sort$0, + fast_sort$0, + to_seq$4, + to_seqi$1, + of_seq$2, + Floatarray]; + caml_register_global(794,include$3,"Stdlib__Array"); + var zero$0=0.,one$0=1.,minus_one$0=-1.; + function is_finite(x){return x - x == 0.?1:0} + function is_infinite(x){return 1. / x == 0.?1:0} + 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_} + 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} + function min$2(x,y) + {if(! (x < y)) + {var switch$0=0; + if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; + if(switch$0)return x != x?x:y} + return y != y?y:x} + function max$2(x,y) + {if(! (x < y)) + {var switch$0=0; + if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; + if(switch$0)return y != y?y:x} + return x != x?x:y} + function min_max(x,y) + {if(x == x && y == y) + {if(! (x < y)) + {var switch$0=0; + if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; + if(switch$0)return [0,y,x]} + return [0,x,y]} + return [0,nan,nan]} + function min_num(x,y) + {if(! (x < y)) + {var switch$0=0; + if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; + if(switch$0)return y != y?x:y} + return x != x?y:x} + function max_num(x,y) + {if(! (x < y)) + {var switch$0=0; + if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; + if(switch$0)return x != x?y:x} + return y != y?x:y} + function min_max_num(x,y) + {if(x != x)return [0,y,y]; + if(y != y)return [0,x,x]; + if(! (x < y)) + {var switch$0=0; + if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; + if(switch$0)return [0,y,x]} + 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 i=ofs; + for(;;) + {a[1 + i] = v; + var _y8_=i + 1 | 0; + if(_y7_ !== i){var i=_y8_;continue} + break}} + return 0} + function check(a,ofs,len,msg) + {var _y3_=ofs < 0?1:0; + if(_y3_) + var _y4_=_y3_; + else + {var _y5_=len < 0?1:0; + if(_y5_) + var _y4_=_y5_; + 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_} + 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_; + for(;;) + {res[1 + i] = caml_call1(f,i); + var _y2_=i + 1 | 0; + if(_y1_ !== i){var i=_y2_;continue} + break}} + return res} + return invalid_arg(cst_Float_Array_init)} + function append$2(a1,a2) + {var + l1=a1.length - 1, + l2=a2.length - 1, + result=caml_floatarray_create(l1 + l2 | 0); + caml_floatarray_blit(a1,0,result,0,l1); + caml_floatarray_blit(a2,0,result,l1,l2); + return result} + function concat$3(l) + {var acc=0,param=l; + for(;;) + {if(param) + {var + tl=param[2], + hd=param[1], + x=hd.length - 1 + acc | 0, + acc$0=acc <= x?x:invalid_arg(cst_Float_Array_concat), + acc=acc$0, + param=tl; + continue} + var result=caml_floatarray_create(acc),l$0=l,i=0; + for(;;) + {if(l$0) + {var tl$0=l$0[2],hd$0=l$0[1],hlen=hd$0.length - 1; + caml_floatarray_blit(hd$0,0,result,i,hlen); + var i$0=i + hlen | 0,l$0=tl$0,i=i$0; + continue} + if(i === acc)return result; + throw [0,Assert_failure,_I_]}}} + function sub$2(a,ofs,len) + {check(a,ofs,len,cst_Float_Array_sub); + var result=caml_floatarray_create(len); + caml_floatarray_blit(a,ofs,result,0,len); + return result} + function copy$2(a) + {var l=a.length - 1,result=caml_floatarray_create(l); + caml_floatarray_blit(a,0,result,0,l); + return result} + function fill$1(a,ofs,len,v) + {check(a,ofs,len,cst_Float_Array_fill);return unsafe_fill(a,ofs,len,v)} + function blit$2(src,sofs,dst,dofs,len) + {check(src,sofs,len,cst_Float_array_blit); + 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_]})} + function of_list$0(l) + {var result=caml_floatarray_create(length$1(l)),i=0,l$0=l; + for(;;) + {if(l$0) + {var t=l$0[2],h=l$0[1]; + result[1 + i] = h; + var i$0=i + 1 | 0,i=i$0,l$0=t; + continue} + return result}} + function iter$6(f,a) + {var _yX_=a.length - 1 - 1 | 0,_yW_=0; + if(! (_yX_ < 0)) + {var i=_yW_; + for(;;) + {caml_call1(f,a[1 + i]); + var _yY_=i + 1 | 0; + if(_yX_ !== i){var i=_yY_;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_; + for(;;) + {caml_call2(f,a[1 + i],b[1 + i]); + var _yV_=i + 1 | 0; + if(_yU_ !== i){var i=_yV_;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_; + for(;;) + {r[1 + i] = caml_call1(f,a[1 + i]); + var _yS_=i + 1 | 0; + if(_yR_ !== i){var i=_yS_;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_; + 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} + break}} + return r} + function iteri$4(f,a) + {var _yL_=a.length - 1 - 1 | 0,_yK_=0; + if(! (_yL_ < 0)) + {var i=_yK_; + for(;;) + {caml_call2(f,i,a[1 + i]); + var _yM_=i + 1 | 0; + if(_yL_ !== i){var i=_yM_;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_; + for(;;) + {r[1 + i] = caml_call2(f,i,a[1 + i]); + var _yJ_=i + 1 | 0; + if(_yI_ !== i){var i=_yJ_;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_; + for(;;) + {r[1] = caml_call2(f,r[1],a[1 + i]); + var _yG_=i + 1 | 0; + if(_yF_ !== i){var i=_yG_;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_; + for(;;) + {r[1] = caml_call2(f,a[1 + i],r[1]); + var _yD_=i - 1 | 0; + if(0 !== i){var i=_yD_;continue} + break}} + return r[1]} + function exists$4(p,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 0; + if(caml_call1(p,a[1 + i]))return 1; + var i$0=i + 1 | 0,i=i$0; + continue}} + function for_all$4(p,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 1; + if(caml_call1(p,a[1 + i])){var i$0=i + 1 | 0,i=i$0;continue} + return 0}} + function mem$1(x,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 0; + if(0 === caml_float_compare(a[1 + i],x))return 1; + var i$0=i + 1 | 0,i=i$0; + continue}} + function mem_ieee(x,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 0; + if(x == a[1 + i])return 1; + var i$0=i + 1 | 0,i=i$0; + continue}} + var Bottom$0=[248,cst_Stdlib_Float_Array_Bottom,caml_fresh_oo_id(0)]; + function sort$0(cmp,a) + {function maxson(l,i) + {var i31=((i + i | 0) + i | 0) + 1 | 0,x=[0,i31]; + if((i31 + 2 | 0) < l) + {if + (caml_call2 + (cmp,caml_array_get(a,i31),caml_array_get(a,i31 + 1 | 0)) + < + 0) + x[1] = i31 + 1 | 0; + if + (caml_call2 + (cmp,caml_array_get(a,x[1]),caml_array_get(a,i31 + 2 | 0)) + < + 0) + x[1] = i31 + 2 | 0; + return x[1]} + if + ((i31 + 1 | 0) + < + l + && + ! + (0 + <= + caml_call2(cmp,caml_array_get(a,i31),caml_array_get(a,i31 + 1 | 0)))) + return i31 + 1 | 0; + if(i31 < l)return i31; + throw [0,Bottom$0,i]} + function trickledown(l,i,e) + {var i$0=i; + for(;;) + {var j=maxson(l,i$0); + if(0 < caml_call2(cmp,caml_array_get(a,j),e)) + {caml_array_set(a,i$0,caml_array_get(a,j));var i$0=j;continue} + return caml_array_set(a,i$0,e)}} + function trickle(l,i,e) + {try + {var _yB_=trickledown(l,i,e);return _yB_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] === Bottom$0) + {var i$0=exn[2];return caml_array_set(a,i$0,e)} + throw exn}} + function bubbledown(l,i) + {var i$0=i; + for(;;) + {var i$1=maxson(l,i$0); + caml_array_set(a,i$0,caml_array_get(a,i$1)); + var i$0=i$1; + continue}} + function bubble(l,i) + {try + {var _yA_=bubbledown(l,i);return _yA_} + 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_; + 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} + break}} + var _yv_=l - 1 | 0; + if(! (_yv_ < 2)) + {var i$0=_yv_; + a: + for(;;) + {var e$0=caml_array_get(a,i$0); + caml_array_set(a,i$0,caml_array_get(a,0)); + 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(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} + break} + break}} + var _yw_=1 < l?1:0; + if(_yw_) + {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)} + else + var _yx_=_yw_; + return _yx_} + function stable_sort(cmp,a) + {function merge(src1ofs,src1len,src2,src2ofs,src2len,dst,dstofs) + {var + src1r=src1ofs + src1len | 0, + src2r=src2ofs + src2len | 0, + s2$1=caml_array_get(src2,src2ofs), + s1$1=caml_array_get(a,src1ofs), + i1=src1ofs, + s1=s1$1, + i2=src2ofs, + s2=s2$1, + d=dstofs; + for(;;) + {if(0 < caml_call2(cmp,s1,s2)) + {caml_array_set(dst,d,s2); + var i2$0=i2 + 1 | 0; + if(i2$0 < src2r) + {var + d$0=d + 1 | 0, + s2$0=caml_array_get(src2,i2$0), + i2=i2$0, + s2=s2$0, + d=d$0; + continue} + return blit$2(a,i1,dst,d + 1 | 0,src1r - i1 | 0)} + caml_array_set(dst,d,s1); + var i1$0=i1 + 1 | 0; + if(i1$0 < src1r) + {var + d$1=d + 1 | 0, + s1$0=caml_array_get(a,i1$0), + i1=i1$0, + s1=s1$0, + d=d$1; + 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_; + a: + for(;;) + {var + e=caml_array_get(a,srcofs + i | 0), + j=[0,(dstofs + i | 0) - 1 | 0]; + for(;;) + {if + (dstofs + <= + j[1] + && + 0 + < + caml_call2(cmp,caml_array_get(dst,j[1]),e)) + {caml_array_set(dst,j[1] + 1 | 0,caml_array_get(dst,j[1])); + 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} + break} + break}} + return 0} + function sortto(srcofs,dst,dstofs,len) + {if(len <= 5)return isortto(srcofs,dst,dstofs,len); + var l1=len / 2 | 0,l2=len - l1 | 0; + sortto(srcofs + l1 | 0,dst,dstofs + l1 | 0,l2); + sortto(srcofs,a,srcofs + l2 | 0,l1); + return merge(srcofs + l2 | 0,l1,dst,dstofs + l1 | 0,l2,dst,dstofs)} + var l=a.length - 1; + if(l <= 5)return isortto(0,a,0,l); + var l1=l / 2 | 0,l2=l - l1 | 0,t=caml_floatarray_create(l2); + sortto(l1,t,0,l2); + sortto(0,a,l2,l1); + return merge(l2,l1,t,0,l2,a,0)} + 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_)}]} + return 0} + var _yn_=0; + return function(_yo_){return aux(_yn_,_yo_)}} + 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_)}]} + return 0} + var _yj_=0; + return function(_yk_){return aux(_yj_,_yk_)}} + function of_seq$3(i$2) + {var + _yi_=0, + param$0=fold_left(function(acc,x){return [0,x,acc]},_yi_,i$2), + len=length$1(param$0), + a=caml_floatarray_create(len), + i$1=len - 1 | 0, + i=i$1, + param=param$0; + for(;;) + {if(param) + {var tl=param[2],hd=param[1]; + a[1 + i] = hd; + var i$0=i - 1 | 0,i=i$0,param=tl; + continue} + return a}} + 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_; + for(;;) + {r[1 + i] = caml_call1(f,a[1 + i]); + var _yh_=i + 1 | 0; + if(_yg_ !== i){var i=_yh_;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_; + for(;;) + {r[1 + i] = caml_call1(f,a[1 + i]); + var _ye_=i + 1 | 0; + if(_yd_ !== i){var i=_ye_;continue} + break}} + return r} + var + _K_=caml_floatarray_create, + _L_=caml_array_set, + _M_=caml_array_get, + _N_= + [0, + function(_yb_){return _yb_.length - 1}, + _M_, + _L_, + make$2, + _K_, + init$4, + append$2, + concat$3, + sub$2, + copy$2, + fill$1, + blit$2, + to_list$2, + of_list$0, + iter$6, + iteri$4, + map$8, + mapi$4, + fold_left$4, + fold_right$3, + iter2$2, + map2$2, + for_all$4, + exists$4, + mem$1, + mem_ieee, + sort$0, + stable_sort, + stable_sort, + to_seq$5, + to_seqi$2, + of_seq$3, + map_to_array, + map_from_array], + _O_=caml_floatarray_create, + _P_=caml_array_set, + _Q_=caml_array_get, + Stdlib_Float= + [0, + zero$0, + one$0, + minus_one$0, + succ$0, + pred$0, + infinity, + neg_infinity, + nan, + pi, + max_float, + min_float, + epsilon, + is_finite, + is_infinite, + is_nan, + is_integer, + of_string_opt, + to_string, + caml_float_compare, + equal$11, + min$2, + max$2, + min_max, + min_num, + max_num, + min_max_num, + hash$0, + [0, + function(_ya_){return _ya_.length - 1}, + _Q_, + _P_, + make$2, + _O_, + init$4, + append$2, + concat$3, + sub$2, + copy$2, + fill$1, + blit$2, + to_list$2, + of_list$0, + iter$6, + iteri$4, + map$8, + mapi$4, + fold_left$4, + fold_right$3, + iter2$2, + map2$2, + for_all$4, + exists$4, + mem$1, + mem_ieee, + sort$0, + stable_sort, + stable_sort, + to_seq$5, + to_seqi$2, + of_seq$3, + map_to_array, + map_from_array], + _N_]; + 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} + function pred$1(n){return n - 1 | 0} + function abs$1(n){return caml_greaterequal(n,0)?n:- n | 0} + var min_int$1=-2147483648,max_int$1=2147483647; + function lognot$0(n){return n ^ -1} + function unsigned_to_int(n) + {if + (! + (0 < caml_int_compare(0,n)) + && + ! + (0 < caml_int_compare(n,2147483647))) + return [0,n]; + return 0} + 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$_}} + 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) + {return caml_int_compare(n + 2147483648 | 0,m + 2147483648 | 0)} + function min$3(x,y){return caml_lessequal(x,y)?x:y} + function max$3(x,y){return caml_greaterequal(x,y)?x:y} + function unsigned_div(n,d) + {if(caml_lessthan(d,0))return 0 <= unsigned_compare(n,d)?one$1:zero$1; + var q=caml_div(n >>> 1 | 0,d) << 1,r=n - caml_mul(q,d) | 0; + return 0 <= unsigned_compare(r,d)?q + 1 | 0:q} + function unsigned_rem(n,d){return n - caml_mul(unsigned_div(n,d),d) | 0} + var + Stdlib_Int32= + [0, + zero$1, + one$1, + minus_one$1, + unsigned_div, + unsigned_rem, + succ$1, + pred$1, + abs$1, + max_int$1, + min_int$1, + lognot$0, + unsigned_to_int, + of_string_opt$0, + to_string$3, + compare$11, + unsigned_compare, + equal$12, + 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 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_)} + var max_int$3=caml_int64_of_int32(2147483647); + function unsigned_to_int$0(n) + {if + (! + (0 < caml_int64_compare(zero$2,n)) + && + ! + (0 < caml_int64_compare(n,max_int$3))) + return [0,runtime.caml_int64_to_int32(n)]; + return 0} + 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_}} + 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) + {return caml_int64_compare + (caml_int64_sub(n,min_int$2),caml_int64_sub(m,min_int$2))} + function min$4(x,y){return caml_lessequal(x,y)?x:y} + function max$4(x,y){return caml_greaterequal(x,y)?x:y} + function unsigned_div$0(n,d) + {if(caml_lessthan(d,zero$2)) + return 0 <= unsigned_compare$0(n,d)?one$2:zero$2; + var + q= + caml_int64_shift_left + (runtime.caml_int64_div(caml_int64_shift_right_unsigne(n,1),d),1), + r=caml_int64_sub(n,caml_int64_mul(q,d)); + return 0 <= unsigned_compare$0(r,d)?succ$2(q):q} + function unsigned_rem$0(n,d) + {return caml_int64_sub(n,caml_int64_mul(unsigned_div$0(n,d),d))} + var + Stdlib_Int64= + [0, + zero$2, + one$2, + minus_one$2, + unsigned_div$0, + unsigned_rem$0, + succ$2, + pred$2, + abs$2, + max_int$2, + min_int$2, + lognot$1, + unsigned_to_int$0, + of_string_opt$1, + to_string$4, + compare$12, + unsigned_compare$0, + equal$13, + min$4, + max$4]; + caml_register_global(797,Stdlib_Int64,"Stdlib__Int64"); + var zero$3=0,one$3=1,minus_one$3=-1; + function succ$3(n){return n + 1 | 0} + function pred$3(n){return n - 1 | 0} + function abs$3(n){return caml_greaterequal(n,0)?n:- n | 0} + var min_int$3=-2147483648,max_int$4=2147483647; + function lognot$2(n){return n ^ -1} + function unsigned_to_int$1(n) + {if + (! + (0 < caml_int_compare(0,n)) + && + ! + (0 < caml_int_compare(n,2147483647))) + return [0,n]; + return 0} + 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_}} + 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) + {return caml_int_compare(n + 2147483648 | 0,m + 2147483648 | 0)} + function min$5(x,y){return caml_lessequal(x,y)?x:y} + function max$5(x,y){return caml_greaterequal(x,y)?x:y} + function unsigned_div$1(n,d) + {if(caml_lessthan(d,0))return 0 <= unsigned_compare$1(n,d)?one$3:zero$3; + var q=caml_div(n >>> 1 | 0,d) << 1,r=n - caml_mul(q,d) | 0; + return 0 <= unsigned_compare$1(r,d)?q + 1 | 0:q} + function unsigned_rem$1(n,d) + {return n - caml_mul(unsigned_div$1(n,d),d) | 0} + var + Stdlib_Nativeint= + [0, + zero$3, + one$3, + minus_one$3, + unsigned_div$1, + unsigned_rem$1, + succ$3, + pred$3, + abs$3, + match$1, + max_int$4, + min_int$3, + lognot$2, + unsigned_to_int$1, + of_string_opt$2, + to_string$5, + compare$13, + unsigned_compare$1, + equal$14, + min$5, + max$5]; + caml_register_global(798,Stdlib_Nativeint,"Stdlib__Nativeint"); + 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_) + {buf[11] = buf[12]; + var _x5_=buf[12]; + buf[12] = [0,_x5_[1],_x5_[2],_x5_[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_) + {buf[11] = buf[12]; + var _x2_=buf[12]; + buf[12] = [0,_x2_[1],_x2_[2],_x2_[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, + aux_buffer=caml_create_bytes(512), + _xO_=[0], + _xP_=0, + _xQ_=0, + _xR_=0, + _xS_=0, + _xT_=0, + _xU_=0, + _xV_=0, + _xW_=caml_create_bytes(1024); + return [0, + function(lexbuf) + {var + read= + caml_call2(f,aux_buffer,caml_ml_bytes_length(aux_buffer)), + n=0 < read?read:(lexbuf[9] = 1,0); + if(caml_ml_bytes_length(lexbuf[2]) < (lexbuf[3] + n | 0)) + {if + (((lexbuf[3] - lexbuf[5] | 0) + n | 0) + <= + caml_ml_bytes_length(lexbuf[2])) + blit + (lexbuf[2],lexbuf[5],lexbuf[2],0,lexbuf[3] - lexbuf[5] | 0); + else + {var + newlen= + min$1 + (2 * caml_ml_bytes_length(lexbuf[2]) | 0,max_string_length); + if(newlen < ((lexbuf[3] - lexbuf[5] | 0) + n | 0)) + failwith(cst_Lexing_lex_refill_cannot_g); + var newbuf=caml_create_bytes(newlen); + blit(lexbuf[2],lexbuf[5],newbuf,0,lexbuf[3] - lexbuf[5] | 0); + lexbuf[2] = newbuf} + var s=lexbuf[5]; + lexbuf[4] = lexbuf[4] + s | 0; + lexbuf[6] = lexbuf[6] - s | 0; + 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_; + 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} + 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_]} + 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); + return [0, + function(lexbuf){lexbuf[9] = 1;return 0}, + _xL_, + _xK_, + _xJ_, + _xI_, + _xH_, + _xG_, + _xF_, + _xE_, + _xD_, + _xC_, + _xB_]} + 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]]; + return 0} + function with_positions(lexbuf){return lexbuf[12] !== dummy_pos?1:0} + function lexeme(lexbuf) + {var len=lexbuf[6] - lexbuf[5] | 0; + return sub_string(lexbuf[2],lexbuf[5],len)} + function sub_lexeme(lexbuf,i1,i2) + {var len=i2 - i1 | 0;return sub_string(lexbuf[2],i1,len)} + function sub_lexeme_opt(lexbuf,i1,i2) + {if(0 <= i1){var len=i2 - i1 | 0;return [0,sub_string(lexbuf[2],i1,len)]} + return 0} + function sub_lexeme_char(lexbuf,i){return caml_bytes_get(lexbuf[2],i)} + function sub_lexeme_char_opt(lexbuf,i) + {return 0 <= i?[0,caml_bytes_get(lexbuf[2],i)]:0} + function lexeme_char(lexbuf,i) + {return caml_bytes_get(lexbuf[2],lexbuf[5] + i | 0)} + function lexeme_start(lexbuf){return lexbuf[11][4]} + function lexeme_end(lexbuf){return lexbuf[12][4]} + function lexeme_start_p(lexbuf){return lexbuf[11]} + function lexeme_end_p(lexbuf){return lexbuf[12]} + 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_} + function flush_input(lb) + {lb[6] = 0; + lb[4] = 0; + var lcp=lb[12]; + if(lcp !== dummy_pos) + lb[12] = [0,lcp[1],zero_pos[2],zero_pos[3],zero_pos[4]]; + lb[3] = 0; + return 0} + var + Stdlib_Lexing= + [0, + dummy_pos, + from_channel, + from_string$0, + from_function, + set_position, + set_filename, + with_positions, + lexeme, + lexeme_char, + lexeme_start, + lexeme_end, + lexeme_start_p, + lexeme_end_p, + new_line, + flush_input, + sub_lexeme, + sub_lexeme_opt, + sub_lexeme_char, + sub_lexeme_char_opt, + engine, + new_engine]; + caml_register_global(799,Stdlib_Lexing,"Stdlib__Lexing"); + var + YYexit=[248,cst_Stdlib_Parsing_YYexit,caml_fresh_oo_id(0)], + Parse_error=[248,cst_Stdlib_Parsing_Parse_error,caml_fresh_oo_id(0)], + env= + [0, + caml_make_vect(100,0), + caml_make_vect(100,0), + caml_make_vect(100,dummy_pos), + caml_make_vect(100,dummy_pos), + 100, + 0, + 0, + 0, + dummy_pos, + dummy_pos, + 0, + 0, + 0, + 0, + 0, + 0]; + function grow_stacks(param) + {var + oldsize=env[5], + newsize=oldsize * 2 | 0, + new_s=caml_make_vect(newsize,0), + new_v=caml_make_vect(newsize,0), + new_start=caml_make_vect(newsize,dummy_pos), + new_end=caml_make_vect(newsize,dummy_pos); + blit$1(env[1],0,new_s,0,oldsize); + env[1] = new_s; + blit$1(env[2],0,new_v,0,oldsize); + env[2] = new_v; + blit$1(env[3],0,new_start,0,oldsize); + env[3] = new_start; + blit$1(env[4],0,new_end,0,oldsize); + env[4] = new_end; + env[5] = newsize; + return 0} + function clear_parser(param) + {fill$0(env[2],0,env[5],0);env[8] = 0;return 0} + var current_lookahead_fun=[0,function(param){return 0}]; + function yyparse(tables,start,lexer,lexbuf) + {var + init_asp=env[11], + init_sp=env[14], + init_stackbase=env[6], + init_state=env[15], + init_curr_char=env[7], + init_lval=env[8], + init_errflag=env[16]; + env[6] = env[14] + 1 | 0; + env[7] = start; + env[10] = lexbuf[12]; + try + {var cmd=0,arg=0; + for(;;) + {var match=runtime.caml_parse_engine(tables,env,cmd,arg); + switch(match) + {case 0: + var arg$0=caml_call1(lexer,lexbuf); + env[9] = lexbuf[11]; + env[10] = lexbuf[12]; + var cmd=1,arg=arg$0; + continue; + case 1:throw Parse_error; + case 2:grow_stacks(0);var cmd=2,arg=0;continue; + case 3:grow_stacks(0);var cmd=3,arg=0;continue; + 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_} + var cmd=cmd$0,arg=arg$1; + continue; + default: + caml_call1(tables[14],cst_syntax_error);var cmd=5,arg=0;continue}}} + catch(exn) + {exn = caml_wrap_exception(exn); + var curr_char=env[7]; + env[11] = init_asp; + env[14] = init_sp; + env[6] = init_stackbase; + env[15] = init_state; + env[7] = init_curr_char; + env[8] = init_lval; + env[16] = init_errflag; + if(exn[1] === YYexit){var v=exn[2];return v} + current_lookahead_fun[1] + = + function(tok) + {if(is_block(tok)) + {var _xw_=caml_obj_tag(tok); + return caml_check_bound(tables[3],_xw_)[1 + _xw_] === 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_]} + 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_]; + 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_]}} + function symbol_end_pos(param) + {var _xn_=env[11];return caml_check_bound(env[4],_xn_)[1 + _xn_]} + function rhs_start_pos(n) + {var _xm_=env[11] - (env[12] - n | 0) | 0; + return caml_check_bound(env[3],_xm_)[1 + _xm_]} + function rhs_end_pos(n) + {var _xl_=env[11] - (env[12] - n | 0) | 0; + return caml_check_bound(env[4],_xl_)[1 + _xl_]} + 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]} + function rhs_end(n){return rhs_end_pos(n)[4]} + function is_current_lookahead(tok) + {return caml_call1(current_lookahead_fun[1],tok)} + function parse_error(param){return 0} + var + Stdlib_Parsing= + [0, + symbol_start, + symbol_end, + rhs_start, + rhs_end, + symbol_start_pos, + symbol_end_pos, + rhs_start_pos, + rhs_end_pos, + clear_parser, + Parse_error, + function(_xk_){return runtime.caml_set_parser_trace(_xk_)}, + YYexit, + yyparse, + peek_val, + is_current_lookahead, + parse_error]; + caml_register_global(800,Stdlib_Parsing,"Stdlib__Parsing"); + var + Stdlib_Set= + [0, + function(Ord) + {function height(param){if(param){var h=param[4];return h}return 0} + 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_]} + 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)); + 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_)} + 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); + 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_)} + 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_]} + function add(x,t) + {if(t) + {var r=t[3],v=t[2],l=t[1],c=caml_call2(Ord[1],x,v); + if(0 === c)return t; + if(0 <= c){var rr=add(x,r);return r === rr?t:bal(l,v,rr)} + var ll=add(x,l); + return l === ll?t:bal(ll,v,r)} + return [0,0,x,0,1]} + function singleton(x){return [0,0,x,0,1]} + function add_min_element(x,param) + {if(param) + {var r=param[3],v=param[2],l=param[1]; + return bal(add_min_element(x,l),v,r)} + return singleton(x)} + function add_max_element(x,param) + {if(param) + {var r=param[3],v=param[2],l=param[1]; + return bal(l,v,add_max_element(x,r))} + return singleton(x)} + function join(l,v,r) + {if(l) + {if(r) + {var + rh=r[4], + rr=r[3], + rv=r[2], + rl=r[1], + lh=l[4], + lr=l[3], + lv=l[2], + ll=l[1]; + return (rh + 2 | 0) < lh + ?bal(ll,lv,join(lr,v,r)) + :(lh + 2 | 0) < rh?bal(join(l,v,rl),rv,rr):create(l,v,r)} + return add_max_element(v,l)} + return add_min_element(v,r)} + function min_elt(param) + {var param$0=param; + for(;;) + {if(param$0) + {var _xd_=param$0[1]; + if(_xd_){var param$0=_xd_;continue} + var v=param$0[2]; + return v} + throw Not_found}} + function min_elt_opt(param) + {var param$0=param; + for(;;) + {if(param$0) + {var _xc_=param$0[1]; + if(_xc_){var param$0=_xc_;continue} + var v=param$0[2]; + return [0,v]} + return 0}} + function max_elt(param) + {var param$0=param; + for(;;) + {if(param$0) + {if(param$0[3]){var param$1=param$0[3],param$0=param$1;continue} + var v=param$0[2]; + return v} + throw Not_found}} + function max_elt_opt(param) + {var param$0=param; + for(;;) + {if(param$0) + {if(param$0[3]){var param$1=param$0[3],param$0=param$1;continue} + var v=param$0[2]; + return [0,v]} + 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 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_)} + return t1} + return t2} + function split(x,param) + {if(param) + {var r=param[3],v=param[2],l=param[1],c=caml_call2(Ord[1],x,v); + if(0 === c)return [0,l,1,r]; + if(0 <= c) + {var match=split(x,r),rr=match[3],pres=match[2],lr=match[1]; + return [0,join(l,v,lr),pres,rr]} + var + match$0=split(x,l), + rl=match$0[3], + pres$0=match$0[2], + ll=match$0[1]; + return [0,ll,pres$0,join(rl,v,r)]} + return _V_} + var empty=0; + function is_empty(param){return param?0:1} + function mem(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[3], + v=param$0[2], + l=param$0[1], + c=caml_call2(Ord[1],x,v), + _w$_=0 === c?1:0; + if(_w$_)return _w$_; + var param$1=0 <= c?r:l,param$0=param$1; + continue} + return 0}} + function remove(x,t) + {if(t) + {var r=t[3],v=t[2],l=t[1],c=caml_call2(Ord[1],x,v); + if(0 === c) + {if(l) + {if(r) + {var _w__=remove_min_elt(r);return bal(l,min_elt(r),_w__)} + return l} + return r} + if(0 <= c){var rr=remove(x,r);return r === rr?t:bal(l,v,rr)} + var ll=remove(x,l); + return l === ll?t:bal(ll,v,r)} + return 0} + function union(s1,s2) + {if(s1) + {if(s2) + {var + h2=s2[4], + r2=s2[3], + v2=s2[2], + l2=s2[1], + h1=s1[4], + r1=s1[3], + v1=s1[2], + l1=s1[1]; + if(h2 <= h1) + {if(1 === h2)return add(v2,s1); + var + 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_)} + 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_)} + 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_)} + return 0} + return 0} + function split_bis(x,param) + {if(param) + {var r=param[3],v=param[2],l=param[1],c=caml_call2(Ord[1],x,v); + if(0 === c)return 0; + if(0 <= c) + {var match=split_bis(x,r); + if(match) + {var rr=match[2],lr=match[1];return [0,join(l,v,lr),rr]} + return 0} + var match$0=split_bis(x,l); + if(match$0) + {var rl=match$0[2],ll=match$0[1]; + return [0, + ll, + function(param){return join(caml_call1(rl,0),v,r)}]} + return 0} + return [0,0,function(param){return 0}]} + function disjoint(s1,s2) + {var s1$0=s1,s2$0=s2; + for(;;) + {if(s1$0 && s2$0) + {var r1=s1$0[3],v1=s1$0[2],l1=s1$0[1]; + 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 s2$1=caml_call1(r2,0),s1$0=r1,s2$0=s2$1;continue} + return _w3_} + 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_)} + return s1} + return 0} + function cons_enum(s,e) + {var s$0=s,e$0=e; + for(;;) + {if(s$0) + {var + r=s$0[3], + v=s$0[2], + s$1=s$0[1], + e$1=[0,v,r,e$0], + s$0=s$1, + e$0=e$1; + continue} + return e$0}} + function compare(s1,s2) + {var e2$2=cons_enum(s2,0),e1$2=cons_enum(s1,0),e1=e1$2,e2=e2$2; + for(;;) + {if(e1) + {if(e2) + {var + e2$0=e2[3], + r2=e2[2], + v2=e2[1], + e1$0=e1[3], + r1=e1[2], + v1=e1[1], + c=caml_call2(Ord[1],v1,v2); + if(0 === c) + {var + e2$1=cons_enum(r2,e2$0), + e1$1=cons_enum(r1,e1$0), + e1=e1$1, + e2=e2$1; + continue} + return c} + return 1} + return e2?-1:0}} + function equal(s1,s2){return 0 === compare(s1,s2)?1:0} + function subset(s1,s2) + {var s1$0=s1,s2$0=s2; + for(;;) + {if(s1$0) + {if(s2$0) + {var + r2=s2$0[3], + v2=s2$0[2], + l2=s2$0[1], + r1=s1$0[3], + v1=s1$0[2], + 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_} + 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_} + return 0} + return 1}} + function iter(f,param) + {var param$0=param; + for(;;) + {if(param$0) + {var r=param$0[3],v=param$0[2],l=param$0[1]; + iter(f,l); + caml_call1(f,v); + var param$0=r; + continue} + return 0}} + function fold(f,s,accu) + {var s$0=s,accu$0=accu; + for(;;) + {if(s$0) + {var + r=s$0[3], + v=s$0[2], + l=s$0[1], + accu$1=caml_call2(f,v,fold(f,l,accu$0)), + s$0=r, + accu$0=accu$1; + continue} + return accu$0}} + function for_all(p,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + 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_} + else + var _wV_=_wT_; + return _wV_} + return 1}} + function exists(p,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[3], + v=param$0[2], + l=param$0[1], + _wQ_=caml_call1(p,v); + if(_wQ_) + var _wR_=_wQ_; + else + {var _wS_=exists(p,l); + if(! _wS_){var param$0=r;continue} + var _wR_=_wS_} + return _wR_} + return 0}} + function filter(p,t) + {if(t) + {var + r=t[3], + v=t[2], + l=t[1], + l$0=filter(p,l), + pv=caml_call1(p,v), + r$0=filter(p,r); + if(pv){if(l === l$0 && r === r$0)return t;return join(l$0,v,r$0)} + return concat(l$0,r$0)} + return 0} + function partition(p,param) + {if(param) + {var + r=param[3], + v=param[2], + l=param[1], + match=partition(p,l), + lf=match[2], + lt=match[1], + pv=caml_call1(p,v), + 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_} + function cardinal(param) + {if(param) + {var r=param[3],l=param[1],_wN_=cardinal(r); + return (cardinal(l) + 1 | 0) + _wN_ | 0} + return 0} + function elements_aux(accu,param) + {var accu$0=accu,param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[3], + v=param$0[2], + l=param$0[1], + accu$1=[0,v,elements_aux(accu$0,r)], + accu$0=accu$1, + param$0=l; + continue} + return accu$0}} + function elements(s){return elements_aux(0,s)} + function find(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[3], + v=param$0[2], + l=param$0[1], + c=caml_call2(Ord[1],x,v); + if(0 === c)return v; + var param$1=0 <= c?r:l,param$0=param$1; + continue} + throw Not_found}} + function find_first(f,param$0) + {var param$1=param$0; + for(;;) + {if(param$1) + {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; + if(caml_call1(f,v$0)) + {var v0=v$0,param=l$0; + for(;;) + {if(param) + {var r=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,param=l;continue} + var param=r; + continue} + return v0}} + var param$1=r$0; + continue} + throw Not_found}} + function find_first_opt(f,param$0) + {var param$1=param$0; + for(;;) + {if(param$1) + {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; + if(caml_call1(f,v$0)) + {var v0=v$0,param=l$0; + for(;;) + {if(param) + {var r=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,param=l;continue} + var param=r; + continue} + return [0,v0]}} + var param$1=r$0; + continue} + return 0}} + function find_last(f,param$0) + {var param$1=param$0; + for(;;) + {if(param$1) + {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; + if(caml_call1(f,v$0)) + {var v0=v$0,param=r$0; + for(;;) + {if(param) + {var r=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,param=r;continue} + var param=l; + continue} + return v0}} + var param$1=l$0; + continue} + throw Not_found}} + function find_last_opt(f,param$0) + {var param$1=param$0; + for(;;) + {if(param$1) + {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; + if(caml_call1(f,v$0)) + {var v0=v$0,param=r$0; + for(;;) + {if(param) + {var r=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,param=r;continue} + var param=l; + continue} + return [0,v0]}} + var param$1=l$0; + continue} + return 0}} + function find_opt(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[3], + v=param$0[2], + l=param$0[1], + c=caml_call2(Ord[1],x,v); + if(0 === c)return [0,v]; + var param$1=0 <= c?r:l,param$0=param$1; + continue} + return 0}} + 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} + 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} + if(! switch$1)return join(l,v,r)} + return union(l,add(v,r))} + function map(f,t) + {if(t) + {var + r=t[3], + v=t[2], + l=t[1], + l$0=map(f,l), + v$0=caml_call1(f,v), + r$0=map(f,r); + if(l === l$0 && v === v$0 && r === r$0)return t; + return try_join(l$0,v$0,r$0)} + return 0} + function filter_map(f,t) + {if(t) + {var + r=t[3], + v=t[2], + l=t[1], + t1=filter_map(f,l), + v$0=caml_call1(f,v), + t2=filter_map(f,r); + if(v$0) + {var v$1=v$0[1]; + if(l === t1 && v === v$1 && r === t2)return t; + 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_)} + 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 + l$0=sort_uniq(Ord[1],l), + sub= + function(n,l) + {if(! (3 < n >>> 0)) + switch(n) + {case 0:return [0,0,l]; + case 1: + if(l){var l$3=l[2],x0=l[1];return [0,[0,0,x0,0,1],l$3]} + break; + case 2: + if(l) + {var _wH_=l[2]; + if(_wH_) + {var l$4=_wH_[2],x1=_wH_[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]; + 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) + {var + l$1=l$0[2], + mid=l$0[1], + match$0=sub((n - nl | 0) - 1 | 0,l$1), + l$2=match$0[2], + right=match$0[1]; + return [0,create(left,mid,right),l$2]} + throw [0,Assert_failure,_X_]}; + 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_)} + 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_)}]} + return 0} + function to_seq(c) + {var _wv_=cons_enum(c,0); + return function(_ww_){return seq_of_enum(_wv_,_ww_)}} + function snoc_enum(s,e) + {var s$0=s,e$0=e; + for(;;) + {if(s$0) + {var + s$1=s$0[3], + v=s$0[2], + l=s$0[1], + e$1=[0,v,l,e$0], + s$0=s$1, + e$0=e$1; + continue} + 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_)}]} + return 0} + function to_rev_seq(c) + {var _wr_=snoc_enum(c,0); + return function(_ws_){return rev_seq_of_enum(_wr_,_ws_)}} + function to_seq_from(low,s) + {var s$0=s,c=0; + for(;;) + {if(s$0) + {var r=s$0[3],v=s$0[2],l=s$0[1],n=caml_call2(Ord[1],v,low); + if(0 !== n) + {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]} + else + var _wp_=c; + return function(_wq_){return seq_of_enum(_wp_,_wq_)}}} + return [0, + empty, + is_empty, + mem, + add, + singleton, + remove, + union, + inter, + disjoint, + diff, + compare, + equal, + subset, + iter, + map, + fold, + for_all, + exists, + filter, + filter_map, + partition, + cardinal, + elements, + min_elt, + min_elt_opt, + max_elt, + max_elt_opt, + min_elt, + min_elt_opt, + split, + find, + find_opt, + find_first, + find_first_opt, + find_last, + find_last_opt, + of_list, + to_seq_from, + to_seq, + to_rev_seq, + add_seq, + of_seq]}]; + caml_register_global(801,Stdlib_Set,"Stdlib__Set"); + var + Stdlib_Map= + [0, + 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_]} + 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)); + 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_)} + 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); + 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_)} + 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 empty=0; + function is_empty(param){return param?0:1} + function add(x,data,m) + {if(m) + {var h=m[5],r=m[4],d=m[3],v=m[2],l=m[1],c=caml_call2(Ord[1],x,v); + if(0 === c)return d === data?m:[0,l,x,data,r,h]; + if(0 <= c){var rr=add(x,data,r);return r === rr?m:bal(l,v,d,rr)} + var ll=add(x,data,l); + return l === ll?m:bal(ll,v,d,r)} + return [0,0,x,data,0,1]} + function find(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[4], + d=param$0[3], + v=param$0[2], + l=param$0[1], + c=caml_call2(Ord[1],x,v); + if(0 === c)return d; + var param$1=0 <= c?r:l,param$0=param$1; + continue} + throw Not_found}} + function find_first(f,param$0) + {var param$1=param$0; + for(;;) + {if(param$1) + {var + r$0=param$1[4], + d$0=param$1[3], + v$0=param$1[2], + l$0=param$1[1]; + if(caml_call1(f,v$0)) + {var v0=v$0,d0=d$0,param=l$0; + for(;;) + {if(param) + {var r=param[4],d=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,d0=d,param=l;continue} + var param=r; + continue} + return [0,v0,d0]}} + var param$1=r$0; + continue} + throw Not_found}} + function find_first_opt(f,param$0) + {var param$1=param$0; + for(;;) + {if(param$1) + {var + r$0=param$1[4], + d$0=param$1[3], + v$0=param$1[2], + l$0=param$1[1]; + if(caml_call1(f,v$0)) + {var v0=v$0,d0=d$0,param=l$0; + for(;;) + {if(param) + {var r=param[4],d=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,d0=d,param=l;continue} + var param=r; + continue} + return [0,[0,v0,d0]]}} + var param$1=r$0; + continue} + return 0}} + function find_last(f,param$0) + {var param$1=param$0; + for(;;) + {if(param$1) + {var + r$0=param$1[4], + d$0=param$1[3], + v$0=param$1[2], + l$0=param$1[1]; + if(caml_call1(f,v$0)) + {var v0=v$0,d0=d$0,param=r$0; + for(;;) + {if(param) + {var r=param[4],d=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,d0=d,param=r;continue} + var param=l; + continue} + return [0,v0,d0]}} + var param$1=l$0; + continue} + throw Not_found}} + function find_last_opt(f,param$0) + {var param$1=param$0; + for(;;) + {if(param$1) + {var + r$0=param$1[4], + d$0=param$1[3], + v$0=param$1[2], + l$0=param$1[1]; + if(caml_call1(f,v$0)) + {var v0=v$0,d0=d$0,param=r$0; + for(;;) + {if(param) + {var r=param[4],d=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,d0=d,param=r;continue} + var param=l; + continue} + return [0,[0,v0,d0]]}} + var param$1=l$0; + continue} + return 0}} + function find_opt(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[4], + d=param$0[3], + v=param$0[2], + l=param$0[1], + c=caml_call2(Ord[1],x,v); + if(0 === c)return [0,d]; + var param$1=0 <= c?r:l,param$0=param$1; + continue} + return 0}} + function mem(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[4], + v=param$0[2], + l=param$0[1], + c=caml_call2(Ord[1],x,v), + _wi_=0 === c?1:0; + if(_wi_)return _wi_; + var param$1=0 <= c?r:l,param$0=param$1; + continue} + return 0}} + function min_binding(param) + {var param$0=param; + for(;;) + {if(param$0) + {var _wh_=param$0[1]; + if(_wh_){var param$0=_wh_;continue} + var d=param$0[3],v=param$0[2]; + return [0,v,d]} + throw Not_found}} + function min_binding_opt(param) + {var param$0=param; + for(;;) + {if(param$0) + {var _wg_=param$0[1]; + if(_wg_){var param$0=_wg_;continue} + var d=param$0[3],v=param$0[2]; + return [0,[0,v,d]]} + return 0}} + function max_binding(param) + {var param$0=param; + for(;;) + {if(param$0) + {if(param$0[4]){var param$1=param$0[4],param$0=param$1;continue} + var d=param$0[3],v=param$0[2]; + return [0,v,d]} + throw Not_found}} + function max_binding_opt(param) + {var param$0=param; + for(;;) + {if(param$0) + {if(param$0[4]){var param$1=param$0[4],param$0=param$1;continue} + var d=param$0[3],v=param$0[2]; + return [0,[0,v,d]]} + return 0}} + function remove_min_binding(param) + {if(param) + {var _wf_=param[1]; + if(_wf_) + {var r=param[4],d=param[3],v=param[2]; + return bal(remove_min_binding(_wf_),v,d,r)} + var r$0=param[4]; + return r$0} + return invalid_arg(cst_Map_remove_min_elt)} + function _vQ_(t1,t2) + {if(t1) + {if(t2) + {var match=min_binding(t2),d=match[2],x=match[1]; + return bal(t1,x,d,remove_min_binding(t2))} + return t1} + return t2} + 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){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)} + return 0} + function update(x,f,m) + {if(m) + {var h=m[5],r=m[4],d=m[3],v=m[2],l=m[1],c=caml_call2(Ord[1],x,v); + if(0 === c) + {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)} + 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)} + var match$0=caml_call1(f,0); + if(match$0){var data$0=match$0[1];return [0,0,x,data$0,0,1]} + return 0} + function iter(f,param) + {var param$0=param; + for(;;) + {if(param$0) + {var r=param$0[4],d=param$0[3],v=param$0[2],l=param$0[1]; + iter(f,l); + caml_call2(f,v,d); + var param$0=r; + continue} + return 0}} + function map(f,param) + {if(param) + {var + h=param[5], + r=param[4], + d=param[3], + v=param[2], + l=param[1], + l$0=map(f,l), + d$0=caml_call1(f,d), + r$0=map(f,r); + return [0,l$0,v,d$0,r$0,h]} + return 0} + function mapi(f,param) + {if(param) + {var + h=param[5], + r=param[4], + d=param[3], + v=param[2], + l=param[1], + l$0=mapi(f,l), + d$0=caml_call2(f,v,d), + r$0=mapi(f,r); + return [0,l$0,v,d$0,r$0,h]} + return 0} + function fold(f,m,accu) + {var m$0=m,accu$0=accu; + for(;;) + {if(m$0) + {var + r=m$0[4], + d=m$0[3], + v=m$0[2], + l=m$0[1], + accu$1=caml_call3(f,v,d,fold(f,l,accu$0)), + m$0=r, + accu$0=accu$1; + continue} + return accu$0}} + function for_all(p,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[4], + 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_} + else + var _we_=_wc_; + return _we_} + return 1}} + function exists(p,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[4], + d=param$0[3], + v=param$0[2], + l=param$0[1], + _v$_=caml_call2(p,v,d); + if(_v$_) + var _wa_=_v$_; + else + {var _wb_=exists(p,l); + if(! _wb_){var param$0=r;continue} + var _wa_=_wb_} + return _wa_} + return 0}} + function add_min_binding(k,x,param) + {if(param) + {var r=param[4],d=param[3],v=param[2],l=param[1]; + return bal(add_min_binding(k,x,l),v,d,r)} + return singleton(k,x)} + function add_max_binding(k,x,param) + {if(param) + {var r=param[4],d=param[3],v=param[2],l=param[1]; + return bal(l,v,d,add_max_binding(k,x,r))} + return singleton(k,x)} + function join(l,v,d,r) + {if(l) + {if(r) + {var + rh=r[5], + rr=r[4], + rd=r[3], + rv=r[2], + rl=r[1], + lh=l[5], + lr=l[4], + ld=l[3], + lv=l[2], + ll=l[1]; + return (rh + 2 | 0) < lh + ?bal(ll,lv,ld,join(lr,v,d,r)) + :(lh + 2 | 0) < rh + ?bal(join(l,v,d,rl),rv,rd,rr) + :create(l,v,d,r)} + return add_max_binding(v,d,l)} + return add_min_binding(v,d,r)} + function concat(t1,t2) + {if(t1) + {if(t2) + {var match=min_binding(t2),d=match[2],x=match[1]; + return join(t1,x,d,remove_min_binding(t2))} + return t1} + return t2} + function concat_or_join(t1,v,d,t2) + {if(d){var d$0=d[1];return join(t1,v,d$0,t2)}return concat(t1,t2)} + function split(x,param) + {if(param) + {var + r=param[4], + d=param[3], + v=param[2], + l=param[1], + c=caml_call2(Ord[1],x,v); + if(0 === c)return [0,l,[0,d],r]; + if(0 <= c) + {var match=split(x,r),rr=match[3],pres=match[2],lr=match[1]; + return [0,join(l,v,d,lr),pres,rr]} + var + match$0=split(x,l), + rl=match$0[3], + pres$0=match$0[2], + ll=match$0[1]; + return [0,ll,pres$0,join(rl,v,d,r)]} + return _Y_} + function merge(f,s1,s2) + {if(s1) + {var h1=s1[5],r1=s1[4],d1=s1[3],v1=s1[2],l1=s1[1]; + if(height(s2) <= h1) + {var + match=split(v1,s2), + 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_)}} + else + if(! s2)return 0; + if(s2) + {var + r2$0=s2[4], + d2$0=s2[3], + v2=s2[2], + l2$0=s2[1], + match$0=split(v2,s1), + 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_]} + function union(f,s1,s2) + {if(s1) + {if(s2) + {var + h2=s2[5], + r2=s2[4], + d2=s2[3], + v2=s2[2], + l2=s2[1], + h1=s1[5], + r1=s1[4], + d1=s1[3], + v1=s1[2], + l1=s1[1]; + if(h2 <= h1) + {var + match=split(v1,s2), + r2$0=match[3], + d2$0=match[2], + l2$0=match[1], + l=union(f,l1,l2$0), + r=union(f,r1,r2$0); + if(d2$0) + {var d2$1=d2$0[1]; + return concat_or_join(l,v1,caml_call3(f,v1,d1,d2$1),r)} + return join(l,v1,d1,r)} + var + match$0=split(v2,s1), + r1$0=match$0[3], + d1$0=match$0[2], + l1$0=match$0[1], + l$0=union(f,l1$0,l2), + r$0=union(f,r1$0,r2); + if(d1$0) + {var d1$1=d1$0[1]; + return concat_or_join(l$0,v2,caml_call3(f,v2,d1$1,d2),r$0)} + return join(l$0,v2,d2,r$0)} + var s=s1} + else + var s=s2; + return s} + function filter(p,m) + {if(m) + {var + r=m[4], + d=m[3], + v=m[2], + l=m[1], + l$0=filter(p,l), + pvd=caml_call2(p,v,d), + r$0=filter(p,r); + if(pvd) + {if(l === l$0 && r === r$0)return m;return join(l$0,v,d,r$0)} + return concat(l$0,r$0)} + return 0} + function filter_map(f,param) + {if(param) + {var + r=param[4], + d=param[3], + v=param[2], + l=param[1], + l$0=filter_map(f,l), + fvd=caml_call2(f,v,d), + r$0=filter_map(f,r); + if(fvd){var d$0=fvd[1];return join(l$0,v,d$0,r$0)} + return concat(l$0,r$0)} + return 0} + function partition(p,param) + {if(param) + {var + r=param[4], + d=param[3], + v=param[2], + l=param[1], + match=partition(p,l), + lf=match[2], + lt=match[1], + pvd=caml_call2(p,v,d), + 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 ___} + function cons_enum(m,e) + {var m$0=m,e$0=e; + for(;;) + {if(m$0) + {var + r=m$0[4], + d=m$0[3], + v=m$0[2], + m$1=m$0[1], + e$1=[0,v,d,r,e$0], + m$0=m$1, + e$0=e$1; + continue} + return e$0}} + function compare(cmp,m1,m2) + {var e2$2=cons_enum(m2,0),e1$2=cons_enum(m1,0),e1=e1$2,e2=e2$2; + for(;;) + {if(e1) + {if(e2) + {var + e2$0=e2[4], + r2=e2[3], + d2=e2[2], + v2=e2[1], + e1$0=e1[4], + r1=e1[3], + d1=e1[2], + v1=e1[1], + c=caml_call2(Ord[1],v1,v2); + if(0 === c) + {var c$0=caml_call2(cmp,d1,d2); + if(0 === c$0) + {var + e2$1=cons_enum(r2,e2$0), + e1$1=cons_enum(r1,e1$0), + e1=e1$1, + e2=e2$1; + continue} + return c$0} + return c} + return 1} + return e2?-1:0}} + function equal(cmp,m1,m2) + {var e2$2=cons_enum(m2,0),e1$2=cons_enum(m1,0),e1=e1$2,e2=e2$2; + for(;;) + {if(e1) + {if(e2) + {var + e2$0=e2[4], + r2=e2[3], + d2=e2[2], + v2=e2[1], + e1$0=e1[4], + 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_) + {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_} + else + var _v4_=_v2_; + return _v4_} + 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} + return 0} + function bindings_aux(accu,param) + {var accu$0=accu,param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[4], + d=param$0[3], + v=param$0[2], + l=param$0[1], + accu$1=[0,[0,v,d],bindings_aux(accu$0,r)], + accu$0=accu$1, + param$0=l; + continue} + return accu$0}} + function bindings(s){return bindings_aux(0,s)} + function add_seq(i,m) + {return fold_left + (function(m,param) + {var v=param[2],k=param[1];return add(k,v,m)}, + m, + i)} + 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_)}]} + return 0} + function to_seq(m) + {var _vX_=cons_enum(m,0); + return function(_vY_){return seq_of_enum(_vX_,_vY_)}} + function snoc_enum(s,e) + {var s$0=s,e$0=e; + for(;;) + {if(s$0) + {var + s$1=s$0[4], + d=s$0[3], + v=s$0[2], + l=s$0[1], + e$1=[0,v,d,l,e$0], + s$0=s$1, + e$0=e$1; + continue} + 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); + return [0, + [0,k,v], + function(_vW_){return rev_seq_of_enum(_vV_,_vW_)}]} + return 0} + function to_rev_seq(c) + {var _vT_=snoc_enum(c,0); + return function(_vU_){return rev_seq_of_enum(_vT_,_vU_)}} + function to_seq_from(low,m) + {var m$0=m,c=0; + for(;;) + {if(m$0) + {var + r=m$0[4], + d=m$0[3], + v=m$0[2], + l=m$0[1], + n=caml_call2(Ord[1],v,low); + if(0 !== n) + {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]} + else + var _vR_=c; + return function(_vS_){return seq_of_enum(_vR_,_vS_)}}} + return [0, + empty, + is_empty, + mem, + add, + update, + singleton, + remove, + merge, + union, + compare, + equal, + iter, + fold, + for_all, + exists, + filter, + filter_map, + partition, + cardinal, + bindings, + min_binding, + min_binding_opt, + max_binding, + max_binding_opt, + min_binding, + min_binding_opt, + split, + find, + find_opt, + find_first, + find_first_opt, + find_last, + find_last_opt, + map, + mapi, + to_seq, + to_rev_seq, + to_seq_from, + add_seq, + of_seq]}]; + caml_register_global(802,Stdlib_Map,"Stdlib__Map"); + var Empty=[248,cst_Stdlib_Stack_Empty,caml_fresh_oo_id(0)]; + function create$0(param){return [0,0,0]} + function clear(s){s[1] = 0;s[2] = 0;return 0} + 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} + 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]} + return 0} + function top(s) + {var _vN_=s[1];if(_vN_){var hd=_vN_[1];return hd}throw Empty} + function top_opt(s) + {var _vM_=s[1];if(_vM_){var hd=_vM_[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])} + function fold$2(f,acc,s){return fold_left$0(f,acc,s[1])} + function to_seq$6(s){return to_seq$1(s[1])} + function add_seq(q,i){return iter(function(x){return push(x,q)},i)} + function of_seq$4(g){var s=create$0(0);add_seq(s,g);return s} + var + Stdlib_Stack= + [0, + Empty, + create$0, + push, + pop, + pop_opt, + top, + top_opt, + clear, + copy$3, + is_empty$0, + length$2, + iter$7, + fold$2, + to_seq$6, + add_seq, + of_seq$4]; + caml_register_global(803,Stdlib_Stack,"Stdlib__Stack"); + var Empty$0=[248,cst_Stdlib_Queue_Empty,caml_fresh_oo_id(0)]; + 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) + :(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} + function peek_opt(q) + {var _vJ_=q[2];if(_vJ_){var content=_vJ_[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_} + clear$0(q); + return _vI_} + 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_]} + clear$0(q); + return [0,_vG_]} + return 0} + function copy$4(q) + {var q_res=[0,q[1],0,0],prev=0,cell=q[2]; + for(;;) + {if(cell) + {var content=cell[1],next=cell[2],res=[0,content,0]; + if(prev)prev[2] = res;else q_res[2] = res; + var prev=res,cell=next; + continue} + q_res[3] = prev; + return q_res}} + function is_empty$1(q){return 0 === q[1]?1:0} + function length$3(q){return q[1]} + function iter$8(f,q) + {var cell=q[2]; + for(;;) + {if(cell) + {var content=cell[1],next=cell[2]; + caml_call1(f,content); + var cell=next; + continue} + return 0}} + function fold$3(f,accu$1,q) + {var accu=accu$1,cell=q[2]; + for(;;) + {if(cell) + {var + content=cell[1], + next=cell[2], + accu$0=caml_call2(f,accu,content), + accu=accu$0, + cell=next; + continue} + return accu}} + function transfer(q1,q2) + {var _vD_=0 < q1[1]?1:0; + if(_vD_) + {var _vE_=q2[3]; + return _vE_ + ?(q2[1] + = + q2[1] + + + q1[1] + | + 0, + _vE_[2] + = + q1[2], + q2[3] + = + q1[3], + clear$0(q1)) + :(q2[1] = q1[1],q2[2] = q1[2],q2[3] = q1[3],clear$0(q1))} + return _vD_} + 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} + var _vA_=q[2]; + return function(_vB_){return aux(_vA_,_vB_)}} + 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 + Stdlib_Queue= + [0, + Empty$0, + create$1, + add, + add, + take$0, + take_opt, + take$0, + peek, + peek_opt, + peek, + clear$0, + copy$4, + is_empty$1, + length$3, + iter$8, + fold$3, + transfer, + to_seq$7, + add_seq$0, + of_seq$5]; + caml_register_global(804,Stdlib_Queue,"Stdlib__Queue"); + var + Failure$0=[248,cst_Stdlib_Stream_Failure,caml_fresh_oo_id(0)], + Error=[248,cst_Stdlib_Stream_Error,caml_fresh_oo_id(0)]; + function count(param) + {if(param){var match=param[1],count=match[1];return count}return 0} + function data(param) + {if(param){var match=param[1],data=match[2];return data}return 0} + function fill_buff(b) + {b[3] = input(b[1],b[2],0,caml_ml_bytes_length(b[2]));b[4] = 0;return 0} + function get_data(count,d) + {var d$0=d; + for(;;) + {if(typeof d$0 !== "number") + switch(d$0[0]) + {case 1: + var d2=d$0[2],d1=d$0[1],match=get_data(count,d1); + if(typeof match === "number") + {var d$0=d2;continue} + else + {if(0 === match[0]) + {var d11=match[2],a=match[1];return [0,a,[1,d11,d2]]} + throw [0,Assert_failure,_$_]} + 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, + 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]} + return 0} + var match$0=caml_call1(_vx_[2],count); + if(match$0){var a$1=match$0[1];return [0,a$1,d$0]} + _vx_[1] = _aa_; + return 0; + case 4: + var b=d$0[1]; + if(b[3] <= b[4])fill_buff(b); + if(0 === b[3])return 0; + var r=caml_bytes_unsafe_get(b[2],b[4]); + b[4] = b[4] + 1 | 0; + return [0,r,d$0] + } + return d$0}} + function peek_data(s) + {for(;;) + {var _vr_=s[2]; + if(typeof _vr_ === "number") + return 0; + else + switch(_vr_[0]) + {case 0:var a=_vr_[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_]} + 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_; + 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]; + return x; + default: + var b=_vr_[1]; + if(b[3] <= b[4])fill_buff(b); + return 0 === b[3] + ?(s[2] = 0,0) + :[0,caml_bytes_unsafe_get(b[2],b[4])]}}} + function peek$0(param) + {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; + case 3: + var _vq_=_vp_[1]; + if(_vq_[1]){s[1] = s[1] + 1 | 0;_vq_[1] = 0;return 0} + break; + case 4: + var b=_vp_[1]; + if(b[3] <= b[4])fill_buff(b); + return 0 === b[3] + ?(s[2] = 0,0) + :(s[1] = s[1] + 1 | 0,b[4] = b[4] + 1 | 0,0) + } + var match=peek_data(s); + if(match)continue; + return 0}} + function junk(param) + {if(param){var data=param[1];return junk_data(data)}return 0} + function nget_data(n,s) + {if(0 < n) + {var match=peek_data(s); + if(match) + {var a=match[1]; + junk_data(s); + var + match$0=nget_data(n - 1 | 0,s), + k=match$0[3], + d=match$0[2], + al=match$0[1]; + return [0,[0,a,al],[0,a,d],k + 1 | 0]} + return [0,0,s[2],0]} + return [0,0,s[2],0]} + function npeek(n,param) + {if(param) + {var + d$0=param[1], + match=nget_data(n,d$0), + len=match[3], + d=match[2], + al=match[1]; + d$0[1] = d$0[1] - len | 0; + d$0[2] = d; + return al} + return 0} + function next(s) + {var match=peek$0(s); + if(match){var a=match[1];junk(s);return a} + throw Failure$0} + function empty$2(s){var match=peek$0(s);if(match)throw Failure$0;return 0} + function iter$9(f,strm) + {for(;;) + {var match=peek$0(strm); + if(match){var a=match[1];junk(strm);caml_call1(f,a);continue} + 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_)]]} + function of_string(s) + {var count=[0,0]; + return from + (function(param) + {var c=count[1]; + return c < caml_ml_string_length(s) + ?(count[1]++,[0,caml_string_get(s,c)]) + :0})} + function of_bytes$0(s) + {var count=[0,0]; + return from + (function(param) + {var c=count[1]; + return c < caml_ml_bytes_length(s) + ?(count[1]++,[0,caml_bytes_get(s,c)]) + :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 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) + {return [0, + [0, + 0, + [2, + [246, + function(_vl_) + {var _vm_=data(s);return [1,data(caml_call1(f,0)),_vm_]}]]]]} + function lcons(f,s) + {return [0, + [0, + 0, + [2, + [246, + function(_vj_) + {var _vk_=data(s);return [0,caml_call1(f,0),_vk_]}]]]]} + function lsing(f) + {return [0,[0,0,[2,[246,function(_vi_){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))}]]]]} + function dump_data(f,param) + {if(typeof param === "number") + return print_string(cst_Sempty); + else + switch(param[0]) + {case 0: + var d=param[2],a=param[1]; + print_string(cst_Scons); + caml_call1(f,a); + print_string(cst$7); + dump_data(f,d); + return print_string(cst$8); + case 1: + var d2=param[2],d1=param[1]; + print_string(cst_Sapp); + dump_data(f,d1); + print_string(cst$9); + dump_data(f,d2); + return print_string(cst$10); + 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, + Failure$0, + Error, + from, + of_list$1, + of_string, + of_bytes$0, + of_channel, + iter$9, + next, + empty$2, + peek$0, + junk, + count, + npeek, + iapp, + icons, + ising, + lapp, + lcons, + lsing, + sempty, + slazy, + dump]; + caml_register_global(805,Stdlib_Stream,"Stdlib__Stream"); + function create$2(n) + {var + n$0=1 <= n?n:1, + n$1=max_string_length < n$0?max_string_length:n$0, + s=caml_create_bytes(n$1); + return [0,s,0,n$1,s]} + function contents(b){return sub_string(b[1],0,b[2])} + function to_bytes$0(b){return sub(b[1],0,b[2])} + function sub$3(b,ofs,len) + {if(0 <= ofs && 0 <= len && ! ((b[2] - len | 0) < ofs)) + return sub_string(b[1],ofs,len); + return invalid_arg(cst_Buffer_sub)} + function blit$3(src,srcoff,dst,dstoff,len) + {if + (0 + <= + len + && + 0 + <= + srcoff + && + ! + ((src[2] - len | 0) < srcoff) + && + 0 + <= + dstoff + && + ! + ((caml_ml_bytes_length(dst) - len | 0) < dstoff)) + return caml_blit_bytes(src[1],srcoff,dst,dstoff,len); + return invalid_arg(cst_Buffer_blit)} + function nth$0(b,ofs) + {if(0 <= ofs && ! (b[2] <= ofs))return caml_bytes_unsafe_get(b[1],ofs); + return invalid_arg(cst_Buffer_nth)} + function length$4(b){return b[2]} + function clear$1(b){b[2] = 0;return 0} + function reset(b) + {b[2] = 0;b[1] = b[4];b[3] = caml_ml_bytes_length(b[1]);return 0} + function resize(b,more) + {var old_pos=b[2],old_len=b[3],new_len=[0,old_len]; + for(;;) + {if(new_len[1] < (old_pos + more | 0)) + {new_len[1] = 2 * new_len[1] | 0;continue} + if(max_string_length < new_len[1]) + if((old_pos + more | 0) <= max_string_length) + new_len[1] = max_string_length; + else + failwith(cst_Buffer_add_cannot_grow_buf); + var new_buffer=caml_create_bytes(new_len[1]); + blit(b[1],0,new_buffer,0,b[2]); + b[1] = new_buffer; + 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_]}} + function add_char(b,c) + {var pos=b[2]; + if(b[3] <= pos)resize(b,1); + caml_bytes_unsafe_set(b[1],pos,c); + b[2] = pos + 1 | 0; + return 0} + var uchar_utf_8_byte_length_max=4,uchar_utf_16_byte_length_max=4; + function add_utf_8_uchar(b,u) + {for(;;) + {var pos=b[2]; + if(b[3] <= pos)resize(b,uchar_utf_8_byte_length_max); + var n=set_utf_8_uchar(b[1],pos,u); + if(0 === n){resize(b,uchar_utf_8_byte_length_max);continue} + b[2] = pos + n | 0; + return 0}} + function add_utf_16be_uchar(b,u) + {for(;;) + {var pos=b[2]; + if(b[3] <= pos)resize(b,uchar_utf_16_byte_length_max); + var n=set_utf_16be_uchar(b[1],pos,u); + if(0 === n){resize(b,uchar_utf_16_byte_length_max);continue} + b[2] = pos + n | 0; + return 0}} + function add_utf_16le_uchar(b,u) + {for(;;) + {var pos=b[2]; + if(b[3] <= pos)resize(b,uchar_utf_16_byte_length_max); + var n=set_utf_16le_uchar(b[1],pos,u); + if(0 === n){resize(b,uchar_utf_16_byte_length_max);continue} + 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_; + 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); + 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); + b[2] = new_position; + return 0} + function add_subbytes(b,s,offset,len) + {return add_substring(b,caml_string_of_bytes(s),offset,len)} + function add_string(b,s) + {var len=caml_ml_string_length(s),new_position=b[2] + len | 0; + if(b[3] < new_position)resize(b,len); + caml_blit_string(s,0,b[1],b[2],len); + b[2] = new_position; + return 0} + 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); + if(b[3] < (b[2] + len | 0))resize(b,len); + var already_read=0,ofs=b[2],to_read=len,_vb_=b[1]; + for(;;) + {if(0 !== to_read) + {var r=input(ic,_vb_,ofs,to_read); + if(0 !== r) + {var + already_read$0=already_read + r | 0, + ofs$0=ofs + r | 0, + to_read$0=to_read - r | 0, + already_read=already_read$0, + ofs=ofs$0, + to_read=to_read$0; + continue}} + if((b[2] + already_read | 0) <= b[3]) + {b[2] = b[2] + already_read | 0; + if(already_read < len)throw End_of_file; + return 0} + throw [0,Assert_failure,_ae_]}} + 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; + for(;;) + {if(i$7 < lim$1) + {var current=caml_string_get(s,i$7); + if(36 === current) + {if(92 === previous) + {add_char(b,current); + var i$8=i$7 + 1 | 0,previous=32,i$7=i$8; + continue} + var start=i$7 + 1 | 0; + if(lim$1 <= start)throw Not_found; + var opening=caml_string_get(s,start),switch$0=0; + if(40 !== opening && 123 !== opening) + {var i$6=start + 1 | 0,lim$0=caml_ml_string_length(s),i$3=i$6; + for(;;) + {if(lim$0 <= i$3) + var stop=lim$0; + else + {var match=caml_string_get(s,i$3),switch$1=0; + if(91 <= match) + {if(97 <= match) + {if(! (123 <= match))switch$1 = 1} + else + if(95 === match)switch$1 = 1} + else + if(58 <= match) + {if(65 <= match)switch$1 = 1} + else + if(48 <= match)switch$1 = 1; + if(switch$1){var i$4=i$3 + 1 | 0,i$3=i$4;continue} + var stop=i$3} + var match$0=[0,sub$0(s,start,stop - start | 0),stop]; + switch$0 = 1; + break}} + if(! switch$0) + {var i$5=start + 1 | 0,k$2=0; + if(40 === opening) + var _u$_=41; + else + {if(123 !== opening)throw [0,Assert_failure,_af_];var _u$_=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$_) + {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} + var + match$0= + [0,sub$0(s,i$5,(i - start | 0) - 1 | 0),i + 1 | 0]; + break}} + var next_i=match$0[2],ident=match$0[1]; + add_string(b,caml_call1(f,ident)); + var previous=32,i$7=next_i; + continue} + if(92 === previous) + {add_char(b,92); + add_char(b,current); + var i$9=i$7 + 1 | 0,previous=32,i$7=i$9; + continue} + if(92 === current) + {var i$10=i$7 + 1 | 0,previous=current,i$7=i$10;continue} + 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_}} + 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_)}]} + var _u3_=0; + return function(_u4_){return aux(_u3_,_u4_)}} + function add_seq$1(b,seq) + {return iter(function(_u2_){return add_char(b,_u2_)},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; + if(b[3] < new_position)resize(b,1); + caml_bytes_unsafe_set(b[1],b[2],x); + b[2] = new_position; + return 0} + function add_int16_ne(b,x) + {var new_position=b[2] + 2 | 0; + if(b[3] < new_position)resize(b,2); + caml_bytes_set16(b[1],b[2],x); + b[2] = new_position; + return 0} + function add_int32_ne(b,x) + {var new_position=b[2] + 4 | 0; + if(b[3] < new_position)resize(b,4); + caml_bytes_set32(b[1],b[2],x); + b[2] = new_position; + return 0} + function add_int64_ne(b,x) + {var new_position=b[2] + 8 | 0; + if(b[3] < new_position)resize(b,8); + caml_bytes_set64(b[1],b[2],x); + b[2] = new_position; + return 0} + function add_int16_le(b,x){return add_int16_ne(b,x)} + function add_int16_be(b,x) + {var x$0=caml_bswap16(x);return add_int16_ne(b,x$0)} + function add_int32_le(b,x){return add_int32_ne(b,x)} + function add_int32_be(b,x) + {var x$0=caml_int32_bswap(x);return add_int32_ne(b,x$0)} + function add_int64_le(b,x){return add_int64_ne(b,x)} + function add_int64_be(b,x) + {var x$0=caml_int64_bswap(x);return add_int64_ne(b,x$0)} + var + Stdlib_Buffer= + [0, + create$2, + contents, + to_bytes$0, + sub$3, + blit$3, + nth$0, + length$4, + clear$1, + reset, + output_buffer, + truncate, + add_char, + add_utf_8_uchar, + add_utf_16le_uchar, + add_utf_16be_uchar, + add_string, + add_bytes, + add_substring, + add_subbytes, + add_substitute, + add_buffer, + add_channel, + to_seq$8, + to_seqi$3, + add_seq$1, + of_seq$6, + add_int8, + add_int8, + add_int16_ne, + add_int16_be, + add_int16_le, + add_int16_ne, + add_int16_be, + add_int16_le, + add_int32_ne, + add_int32_be, + add_int32_le, + add_int64_ne, + add_int64_be, + add_int64_le]; + caml_register_global(806,Stdlib_Buffer,"Stdlib__Buffer"); + function create_char_set(param){return make$0(32,0)} + function add_in_char_set(char_set,c) + {var str_ind=c >>> 3 | 0,mask=1 << (c & 7); + return caml_bytes_set + (char_set, + str_ind, + char_of_int(caml_bytes_get(char_set,str_ind) | mask))} + function freeze_char_set(char_set){return of_bytes(char_set)} + function rev_char_set(char_set) + {var char_set$0=create_char_set(0),i=0; + 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} + 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); + return 0 !== (caml_string_get(char_set,str_ind) & mask)?1:0} + function pad_of_pad_opt(pad_opt) + {if(pad_opt){var width=pad_opt[1];return [0,1,width]}return 0} + function param_format_of_ignored_format(ign,fmt) + {if(typeof ign === "number") + switch(ign) + {case 0:return [0,[0,fmt]]; + case 1:return [0,[1,fmt]]; + case 2:return [0,[19,fmt]]; + default:return [0,[22,fmt]]} + else + switch(ign[0]) + {case 0:var pad_opt=ign[1];return [0,[2,pad_of_pad_opt(pad_opt),fmt]]; + case 1: + var pad_opt$0=ign[1];return [0,[3,pad_of_pad_opt(pad_opt$0),fmt]]; + case 2: + var pad_opt$1=ign[2],iconv=ign[1]; + return [0,[4,iconv,pad_of_pad_opt(pad_opt$1),0,fmt]]; + case 3: + var pad_opt$2=ign[2],iconv$0=ign[1]; + return [0,[5,iconv$0,pad_of_pad_opt(pad_opt$2),0,fmt]]; + case 4: + var pad_opt$3=ign[2],iconv$1=ign[1]; + return [0,[6,iconv$1,pad_of_pad_opt(pad_opt$3),0,fmt]]; + case 5: + var pad_opt$4=ign[2],iconv$2=ign[1]; + 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]]; + case 7: + var pad_opt$6=ign[1];return [0,[9,pad_of_pad_opt(pad_opt$6),fmt]]; + case 8: + var fmtty=ign[2],pad_opt$7=ign[1]; + return [0,[13,pad_opt$7,fmtty,fmt]]; + case 9: + var fmtty$0=ign[2],pad_opt$8=ign[1]; + return [0,[14,pad_opt$8,fmtty$0,fmt]]; + case 10: + var char_set=ign[2],width_opt=ign[1]; + return [0,[20,width_opt,char_set,fmt]]; + default:var counter=ign[1];return [0,[21,counter,fmt]]}} + function default_float_precision(fconv){return 5 === fconv[2]?12:-6} + function buffer_create(init_size) + {return [0,0,caml_create_bytes(init_size)]} + function buffer_check_size(buf,overhead) + {var + len=caml_ml_bytes_length(buf[2]), + min_len=buf[1] + overhead | 0, + _uY_=len < min_len?1:0; + if(_uY_) + {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} + else + var _uZ_=_uY_; + return _uZ_} + function buffer_add_char(buf,c) + {buffer_check_size(buf,1); + caml_bytes_set(buf[2],buf[1],c); + buf[1] = buf[1] + 1 | 0; + return 0} + function buffer_add_string(buf,s) + {var str_len=caml_ml_string_length(s); + buffer_check_size(buf,str_len); + blit$0(s,0,buf[2],buf[1],str_len); + buf[1] = buf[1] + str_len | 0; + return 0} + function buffer_contents(buf){return sub_string(buf[2],0,buf[1])} + function char_of_iconv(iconv) + {switch(iconv) + {case 6: + case 7:return 120; + case 8: + case 9:return 88; + case 10: + case 11:return 111; + case 12: + case 15:return 117; + case 0: + case 1: + case 2: + case 13:return 100; + default:return 105}} + function char_of_fconv(opt,fconv) + {if(opt)var sth=opt[1],cF=sth;else var cF=70; + switch(fconv[2]) + {case 0:return 102; + case 1:return 101; + case 2:return 69; + case 3:return 103; + case 4:return 71; + case 5:return cF; + case 6:return 104; + case 7:return 72; + default:return 70}} + function bprint_padty(buf,padty) + {switch(padty) + {case 0:return buffer_add_char(buf,45); + case 1:return 0; + default:return buffer_add_char(buf,48)}} + function bprint_ignored_flag(buf,ign_flag) + {return ign_flag?buffer_add_char(buf,95):ign_flag} + function bprint_pad_opt(buf,pad_opt) + {if(pad_opt) + {var width=pad_opt[1]; + return buffer_add_string(buf,caml_string_of_jsbytes("" + width))} + return 0} + function bprint_padding(buf,pad) + {if(typeof pad === "number") + return 0; + else + {if(0 === pad[0]) + {var n=pad[2],padty=pad[1]; + bprint_padty(buf,padty); + return buffer_add_string(buf,caml_string_of_jsbytes("" + n))} + var padty$0=pad[1]; + bprint_padty(buf,padty$0); + return buffer_add_char(buf,42)}} + function bprint_precision(buf,prec) + {if(typeof prec === "number")return prec?buffer_add_string(buf,cst$11):0; + var n=prec[1]; + buffer_add_char(buf,46); + return buffer_add_string(buf,caml_string_of_jsbytes("" + n))} + function bprint_iconv_flag(buf,iconv) + {switch(iconv) + {case 1: + case 4:return buffer_add_char(buf,43); + case 2: + case 5:return buffer_add_char(buf,32); + case 7: + case 9: + case 11: + case 13: + case 14: + case 15:return buffer_add_char(buf,35); + default:return 0}} + function bprint_altint_fmt(buf,ign_flag,iconv,pad,prec,c) + {buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag); + bprint_iconv_flag(buf,iconv); + bprint_padding(buf,pad); + bprint_precision(buf,prec); + buffer_add_char(buf,c); + return buffer_add_char(buf,char_of_iconv(iconv))} + function bprint_fconv_flag(buf,fconv) + {switch(fconv[1]) + {case 0:break; + case 1:buffer_add_char(buf,43);break; + default:buffer_add_char(buf,32)} + return 8 <= fconv[2]?buffer_add_char(buf,35):0} + function string_of_formatting_lit(formatting_lit) + {if(typeof formatting_lit === "number") + switch(formatting_lit) + {case 0:return cst$12; + case 1:return cst$13; + case 2:return cst$14; + case 3:return cst$15; + case 4:return cst$16; + case 5:return cst$17; + default:return cst$18} + else + switch(formatting_lit[0]) + {case 0:var str=formatting_lit[1];return str; + case 1:var str$0=formatting_lit[1];return str$0; + default:var c=formatting_lit[1];return cat(cst$19,make$1(1,c))}} + 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_; + for(;;) + {bprint_char_literal(buf,caml_string_get(str,i)); + var _uX_=i + 1 | 0; + if(_uW_ !== i){var i=_uX_;continue} + break}} + return 0} + function bprint_fmtty(buf,fmtty) + {var fmtty$0=fmtty; + for(;;) + if(typeof fmtty$0 === "number") + return 0; + else + switch(fmtty$0[0]) + {case 0: + var rest=fmtty$0[1]; + buffer_add_string(buf,cst_c); + var fmtty$0=rest; + continue; + case 1: + var rest$0=fmtty$0[1]; + buffer_add_string(buf,cst_s); + var fmtty$0=rest$0; + continue; + case 2: + var rest$1=fmtty$0[1]; + buffer_add_string(buf,cst_i); + var fmtty$0=rest$1; + continue; + case 3: + var rest$2=fmtty$0[1]; + buffer_add_string(buf,cst_li); + var fmtty$0=rest$2; + continue; + case 4: + var rest$3=fmtty$0[1]; + buffer_add_string(buf,cst_ni); + var fmtty$0=rest$3; + continue; + case 5: + var rest$4=fmtty$0[1]; + buffer_add_string(buf,cst_Li); + var fmtty$0=rest$4; + continue; + case 6: + var rest$5=fmtty$0[1]; + buffer_add_string(buf,cst_f); + var fmtty$0=rest$5; + continue; + case 7: + var rest$6=fmtty$0[1]; + buffer_add_string(buf,cst_B); + var fmtty$0=rest$6; + continue; + case 8: + var rest$7=fmtty$0[2],sub_fmtty=fmtty$0[1]; + buffer_add_string(buf,cst$21); + bprint_fmtty(buf,sub_fmtty); + buffer_add_string(buf,cst$22); + var fmtty$0=rest$7; + continue; + case 9: + var rest$8=fmtty$0[3],sub_fmtty$0=fmtty$0[1]; + buffer_add_string(buf,cst$23); + bprint_fmtty(buf,sub_fmtty$0); + buffer_add_string(buf,cst$24); + var fmtty$0=rest$8; + continue; + case 10: + var rest$9=fmtty$0[1]; + buffer_add_string(buf,cst_a); + var fmtty$0=rest$9; + continue; + case 11: + var rest$10=fmtty$0[1]; + buffer_add_string(buf,cst_t$0); + var fmtty$0=rest$10; + continue; + case 12: + var rest$11=fmtty$0[1]; + buffer_add_string(buf,cst$25); + var fmtty$0=rest$11; + continue; + case 13: + var rest$12=fmtty$0[1]; + buffer_add_string(buf,cst_r$0); + var fmtty$0=rest$12; + continue; + default: + var rest$13=fmtty$0[1]; + buffer_add_string(buf,cst_r$1); + var fmtty$0=rest$13; + continue}} + function int_of_custom_arity(param) + {if(param){var x=param[1];return 1 + int_of_custom_arity(x) | 0}return 0} + function string_of_fmt(fmt) + {var buf=buffer_create(16); + function fmtiter(fmt,ign_flag) + {var fmt$0=fmt,ign_flag$0=ign_flag; + a: + for(;;) + if(typeof fmt$0 === "number") + return 0; + else + switch(fmt$0[0]) + {case 0: + var rest=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + buffer_add_char(buf,99); + var fmt$0=rest,ign_flag$0=0; + continue; + case 1: + var rest$0=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + buffer_add_char(buf,67); + var fmt$0=rest$0,ign_flag$0=0; + continue; + case 2: + var rest$1=fmt$0[2],pad=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + bprint_padding(buf,pad); + buffer_add_char(buf,115); + var fmt$0=rest$1,ign_flag$0=0; + continue; + case 3: + var rest$2=fmt$0[2],pad$0=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + bprint_padding(buf,pad$0); + buffer_add_char(buf,83); + var fmt$0=rest$2,ign_flag$0=0; + continue; + case 4: + var rest$3=fmt$0[4],prec=fmt$0[3],pad$1=fmt$0[2],iconv=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + bprint_iconv_flag(buf,iconv); + bprint_padding(buf,pad$1); + bprint_precision(buf,prec); + buffer_add_char(buf,char_of_iconv(iconv)); + var fmt$0=rest$3,ign_flag$0=0; + continue; + case 5: + var + rest$4=fmt$0[4], + prec$0=fmt$0[3], + pad$2=fmt$0[2], + iconv$0=fmt$0[1]; + bprint_altint_fmt(buf,ign_flag$0,iconv$0,pad$2,prec$0,108); + var fmt$0=rest$4,ign_flag$0=0; + continue; + case 6: + var + rest$5=fmt$0[4], + prec$1=fmt$0[3], + pad$3=fmt$0[2], + iconv$1=fmt$0[1]; + bprint_altint_fmt(buf,ign_flag$0,iconv$1,pad$3,prec$1,110); + var fmt$0=rest$5,ign_flag$0=0; + continue; + case 7: + var + rest$6=fmt$0[4], + prec$2=fmt$0[3], + pad$4=fmt$0[2], + iconv$2=fmt$0[1]; + bprint_altint_fmt(buf,ign_flag$0,iconv$2,pad$4,prec$2,76); + var fmt$0=rest$6,ign_flag$0=0; + continue; + case 8: + var + rest$7=fmt$0[4], + prec$3=fmt$0[3], + pad$5=fmt$0[2], + fconv=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + bprint_fconv_flag(buf,fconv); + bprint_padding(buf,pad$5); + bprint_precision(buf,prec$3); + buffer_add_char(buf,char_of_fconv(0,fconv)); + var fmt$0=rest$7,ign_flag$0=0; + continue; + case 9: + var rest$8=fmt$0[2],pad$6=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + bprint_padding(buf,pad$6); + buffer_add_char(buf,66); + var fmt$0=rest$8,ign_flag$0=0; + continue; + case 10: + var rest$9=fmt$0[1]; + buffer_add_string(buf,cst$26); + var fmt$0=rest$9; + continue; + case 11: + var rest$10=fmt$0[2],str=fmt$0[1]; + bprint_string_literal(buf,str); + var fmt$0=rest$10; + continue; + case 12: + var rest$11=fmt$0[2],chr$0=fmt$0[1]; + bprint_char_literal(buf,chr$0); + var fmt$0=rest$11; + continue; + case 13: + var rest$12=fmt$0[3],fmtty=fmt$0[2],pad_opt=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + bprint_pad_opt(buf,pad_opt); + buffer_add_char(buf,123); + bprint_fmtty(buf,fmtty); + buffer_add_char(buf,37); + buffer_add_char(buf,125); + var fmt$0=rest$12,ign_flag$0=0; + continue; + case 14: + var rest$13=fmt$0[3],fmtty$0=fmt$0[2],pad_opt$0=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + bprint_pad_opt(buf,pad_opt$0); + buffer_add_char(buf,40); + bprint_fmtty(buf,fmtty$0); + buffer_add_char(buf,37); + buffer_add_char(buf,41); + var fmt$0=rest$13,ign_flag$0=0; + continue; + case 15: + var rest$14=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + buffer_add_char(buf,97); + var fmt$0=rest$14,ign_flag$0=0; + continue; + case 16: + var rest$15=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + buffer_add_char(buf,116); + var fmt$0=rest$15,ign_flag$0=0; + continue; + case 17: + var rest$16=fmt$0[2],fmting_lit=fmt$0[1]; + bprint_string_literal(buf,string_of_formatting_lit(fmting_lit)); + var fmt$0=rest$16; + continue; + case 18: + var rest$17=fmt$0[2],fmting_gen=fmt$0[1]; + if(0 === fmting_gen[0]) + {var match$1=fmting_gen[1],str$0=match$1[2]; + buffer_add_string(buf,cst$27); + buffer_add_string(buf,str$0)} + else + {var match$2=fmting_gen[1],str$1=match$2[2]; + buffer_add_string(buf,cst$28); + buffer_add_string(buf,str$1)} + var fmt$0=rest$17; + continue; + case 19: + var rest$18=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + buffer_add_char(buf,114); + var fmt$0=rest$18,ign_flag$0=0; + continue; + case 20: + var rest$19=fmt$0[3],char_set=fmt$0[2],width_opt=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + bprint_pad_opt(buf,width_opt); + var + print_char= + function(buf,i) + {var c=char_of_int(i); + return 37 === c + ?(buffer_add_char(buf,37),buffer_add_char(buf,37)) + :64 === c + ?(buffer_add_char(buf,37),buffer_add_char(buf,64)) + :buffer_add_char(buf,c)}; + buffer_add_char(buf,91); + var + _uL_= + 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 is_alone(c) + {var + after=chr(c + 1 | 0), + before=chr(c - 1 | 0), + _uR_=is_in_char_set(_uQ_,c); + if(_uR_) + var + _uS_=is_in_char_set(_uQ_,before), + _uT_=_uS_?is_in_char_set(_uQ_,after):_uS_, + _uU_=1 - _uT_; + else + var _uU_=_uR_; + return _uU_} + return is_alone}, + is_alone=is_alone$0(_uL_); + 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))) + {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) + if(210 <= switcher)print_char(buf,255);else switch$0 = 1; + else + {if(46 < switcher - 1 >>> 0) + {var i$2=i + 1 | 0,i=i$2;continue} + switch$0 = 1} + if(switch$0) + {var i$1=i + 1 | 0; + if(! is_in_char_set(_uL_,char_of_int(i$1))) + {print_char(buf,i$1 - 1 | 0); + var i$6=i$1 + 1 | 0,i=i$6; + continue} + var + match$0=char_of_int(i$1), + switcher$0=match$0 - 45 | 0, + switch$1=0; + if(48 < switcher$0 >>> 0) + if(210 <= switcher$0) + {print_char(buf,254);print_char(buf,255)} + else + switch$1 = 1; + else + if(46 < switcher$0 - 1 >>> 0) + {if(! is_in_char_set(_uL_,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} + switch$1 = 1} + else + switch$1 = 1; + if(switch$1) + {if(! is_in_char_set(_uL_,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))) + {var j$1=j$0 + 1 | 0,j$0=j$1;continue} + print_char(buf,i$3); + print_char(buf,45); + print_char(buf,j$0 - 1 | 0); + if(j$0 < 256){var i$7=j$0 + 1 | 0,i=i$7;continue b} + break}}}} + if(is_alone(45))buffer_add_char(buf,45); + buffer_add_char(buf,93); + var fmt$0=rest$19,ign_flag$0=0; + continue a} + case 21: + var rest$20=fmt$0[2],counter=fmt$0[1]; + 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_); + var fmt$0=rest$20,ign_flag$0=0; + continue; + case 22: + var rest$21=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + bprint_string_literal(buf,cst_0c); + var fmt$0=rest$21,ign_flag$0=0; + continue; + case 23: + var + rest$22=fmt$0[2], + ign=fmt$0[1], + match$3=param_format_of_ignored_format(ign,rest$22), + fmt$1=match$3[1], + fmt$0=fmt$1, + ign_flag$0=1; + continue; + default: + 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_; + 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} + break}} + var fmt$0=rest$23,ign_flag$0=0; + continue}} + fmtiter(fmt,0); + return buffer_contents(buf)} + function symm(param) + {if(typeof param === "number") + return 0; + else + switch(param[0]) + {case 0:var rest=param[1];return [0,symm(rest)]; + case 1:var rest$0=param[1];return [1,symm(rest$0)]; + case 2:var rest$1=param[1];return [2,symm(rest$1)]; + case 3:var rest$2=param[1];return [3,symm(rest$2)]; + case 4:var rest$3=param[1];return [4,symm(rest$3)]; + case 5:var rest$4=param[1];return [5,symm(rest$4)]; + case 6:var rest$5=param[1];return [6,symm(rest$5)]; + case 7:var rest$6=param[1];return [7,symm(rest$6)]; + case 8:var rest$7=param[2],ty=param[1];return [8,ty,symm(rest$7)]; + case 9: + var rest$8=param[3],ty2=param[2],ty1=param[1]; + return [9,ty2,ty1,symm(rest$8)]; + case 10:var rest$9=param[1];return [10,symm(rest$9)]; + case 11:var rest$10=param[1];return [11,symm(rest$10)]; + 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 trans(ty1,ty2) + {var switch$0=0; + if(typeof ty1 === "number") + if(typeof ty2 === "number") + return 0; + else + switch(ty2[0]) + {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; + case 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + default:throw [0,Assert_failure,_ah_]} + else + switch(ty1[0]) + {case 0: + var switch$1=0,_us_=ty1[1]; + if(typeof ty2 !== "number") + switch(ty2[0]) + {case 0:var rest2=ty2[1];return [0,trans(_us_,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; + case 11:switch$0 = 1;switch$1 = 1;break; + case 12:switch$0 = 2;switch$1 = 1;break; + case 13:switch$0 = 3;switch$1 = 1;break; + case 14:switch$0 = 4;switch$1 = 1;break + } + if(! switch$1)switch$0 = 7; + break; + case 1: + var switch$2=0,_ut_=ty1[1]; + if(typeof ty2 !== "number") + switch(ty2[0]) + {case 1:var rest2$0=ty2[1];return [1,trans(_ut_,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; + case 11:switch$0 = 1;switch$2 = 1;break; + case 12:switch$0 = 2;switch$2 = 1;break; + case 13:switch$0 = 3;switch$2 = 1;break; + case 14:switch$0 = 4;switch$2 = 1;break + } + if(! switch$2)switch$0 = 7; + break; + case 2: + var switch$3=0,_uu_=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 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + 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$3 = 1} + if(switch$3)switch$0 = 7; + break; + case 3: + var switch$4=0,_uv_=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 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + 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$4 = 1} + if(switch$4)switch$0 = 7; + break; + case 4: + var switch$5=0,_uw_=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 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + 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$5 = 1} + if(switch$5)switch$0 = 7; + break; + case 5: + var switch$6=0,_ux_=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 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + 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$6 = 1} + if(switch$6)switch$0 = 7; + break; + case 6: + var switch$7=0,_uy_=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 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + 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$7 = 1} + if(switch$7)switch$0 = 7; + break; + case 7: + var switch$8=0,_uz_=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 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + 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$8 = 1} + if(switch$8)switch$0 = 7; + break; + case 8: + var switch$9=0,_uA_=ty1[2],_uB_=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_]; + 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_]; + break; + case 9: + var switch$10=0,_uD_=ty1[3],_uE_=ty1[2],_uF_=ty1[1]; + if(typeof ty2 === "number") + switch$10 = 1; + else + switch(ty2[0]) + {case 8:switch$0 = 5;break; + case 9: + var + rest2$8=ty2[3], + ty22=ty2[2], + ty21=ty2[1], + ty=trans(symm(_uE_),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)]; + 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_]; + break; + case 10: + var _uG_=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_]; + case 11: + var switch$11=0,_uH_=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)]; + default:switch$11 = 1} + if(switch$11)throw [0,Assert_failure,_at_]; + break; + case 12: + var switch$12=0,_uI_=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)]; + default:switch$12 = 1} + if(switch$12)throw [0,Assert_failure,_au_]; + break; + case 13: + var switch$13=0,_uJ_=ty1[1]; + if(typeof ty2 === "number") + switch$13 = 1; + else + switch(ty2[0]) + {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)]; + default:switch$13 = 1} + if(switch$13)throw [0,Assert_failure,_av_]; + break; + default: + var switch$14=0,_uK_=ty1[1]; + if(typeof ty2 === "number") + switch$14 = 1; + else + switch(ty2[0]) + {case 10:break; + 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)]; + default:switch$14 = 1} + if(switch$14)throw [0,Assert_failure,_aw_]} + 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} + function fmtty_of_padding_fmtty(pad,fmtty) + {return typeof pad === "number"?fmtty:0 === pad[0]?fmtty:[2,fmtty]} + function fmtty_of_custom(arity,fmtty) + {if(arity) + {var arity$0=arity[1];return [12,fmtty_of_custom(arity$0,fmtty)]} + return fmtty} + function fmtty_of_fmt(fmtty) + {var fmtty$0=fmtty; + for(;;) + if(typeof fmtty$0 === "number") + return 0; + else + switch(fmtty$0[0]) + {case 0:var rest=fmtty$0[1];return [0,fmtty_of_fmt(rest)]; + case 1:var rest$0=fmtty$0[1];return [0,fmtty_of_fmt(rest$0)]; + case 2: + var rest$1=fmtty$0[2],pad=fmtty$0[1]; + return fmtty_of_padding_fmtty(pad,[1,fmtty_of_fmt(rest$1)]); + case 3: + var rest$2=fmtty$0[2],pad$0=fmtty$0[1]; + return fmtty_of_padding_fmtty(pad$0,[1,fmtty_of_fmt(rest$2)]); + case 4: + var + rest$3=fmtty$0[4], + prec=fmtty$0[3], + pad$1=fmtty$0[2], + ty_rest=fmtty_of_fmt(rest$3), + prec_ty=fmtty_of_precision_fmtty(prec,[2,ty_rest]); + return fmtty_of_padding_fmtty(pad$1,prec_ty); + case 5: + var + rest$4=fmtty$0[4], + prec$0=fmtty$0[3], + pad$2=fmtty$0[2], + ty_rest$0=fmtty_of_fmt(rest$4), + prec_ty$0=fmtty_of_precision_fmtty(prec$0,[3,ty_rest$0]); + return fmtty_of_padding_fmtty(pad$2,prec_ty$0); + case 6: + var + rest$5=fmtty$0[4], + prec$1=fmtty$0[3], + pad$3=fmtty$0[2], + ty_rest$1=fmtty_of_fmt(rest$5), + prec_ty$1=fmtty_of_precision_fmtty(prec$1,[4,ty_rest$1]); + return fmtty_of_padding_fmtty(pad$3,prec_ty$1); + case 7: + var + rest$6=fmtty$0[4], + prec$2=fmtty$0[3], + pad$4=fmtty$0[2], + ty_rest$2=fmtty_of_fmt(rest$6), + prec_ty$2=fmtty_of_precision_fmtty(prec$2,[5,ty_rest$2]); + return fmtty_of_padding_fmtty(pad$4,prec_ty$2); + case 8: + var + rest$7=fmtty$0[4], + prec$3=fmtty$0[3], + pad$5=fmtty$0[2], + ty_rest$3=fmtty_of_fmt(rest$7), + prec_ty$3=fmtty_of_precision_fmtty(prec$3,[6,ty_rest$3]); + return fmtty_of_padding_fmtty(pad$5,prec_ty$3); + case 9: + var rest$8=fmtty$0[2],pad$6=fmtty$0[1]; + return fmtty_of_padding_fmtty(pad$6,[7,fmtty_of_fmt(rest$8)]); + case 10:var fmtty$1=fmtty$0[1],fmtty$0=fmtty$1;continue; + case 11:var fmtty$2=fmtty$0[2],fmtty$0=fmtty$2;continue; + case 12:var fmtty$3=fmtty$0[2],fmtty$0=fmtty$3;continue; + case 13: + var rest$9=fmtty$0[3],ty=fmtty$0[2]; + return [8,ty,fmtty_of_fmt(rest$9)]; + case 14: + var rest$10=fmtty$0[3],ty$0=fmtty$0[2]; + return [9,ty$0,ty$0,fmtty_of_fmt(rest$10)]; + case 15:var rest$11=fmtty$0[1];return [10,fmtty_of_fmt(rest$11)]; + case 16:var rest$12=fmtty$0[1];return [11,fmtty_of_fmt(rest$12)]; + case 17:var fmtty$4=fmtty$0[2],fmtty$0=fmtty$4;continue; + case 18: + var + rest$13=fmtty$0[2], + fmting_gen=fmtty$0[1], + _t4_=fmtty_of_fmt(rest$13); + if(0 === fmting_gen[0]) + var match=fmting_gen[1],fmt=match[1],_t5_=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_); + 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)]; + case 22:var rest$17=fmtty$0[1];return [0,fmtty_of_fmt(rest$17)]; + case 23: + var rest$18=fmtty$0[2],ign=fmtty$0[1]; + if(typeof ign === "number") + switch(ign) + {case 0:var fmtty$0=rest$18;continue; + case 1:var fmtty$0=rest$18;continue; + case 2:return [14,fmtty_of_fmt(rest$18)]; + default:var fmtty$0=rest$18;continue} + else + switch(ign[0]) + {case 0:var fmtty$0=rest$18;continue; + case 1:var fmtty$0=rest$18;continue; + case 2:var fmtty$0=rest$18;continue; + case 3:var fmtty$0=rest$18;continue; + case 4:var fmtty$0=rest$18;continue; + case 5:var fmtty$0=rest$18;continue; + case 6:var fmtty$0=rest$18;continue; + case 7:var fmtty$0=rest$18;continue; + case 8:var fmtty$0=rest$18;continue; + case 9: + var fmtty$5=ign[2]; + return concat_fmtty(fmtty$5,fmtty_of_fmt(rest$18)); + case 10:var fmtty$0=rest$18;continue; + default:var fmtty$0=rest$18;continue} + default: + var rest$19=fmtty$0[3],arity=fmtty$0[1]; + return fmtty_of_custom(arity,fmtty_of_fmt(rest$19))}} + var + Type_mismatch= + [248,cst_CamlinternalFormat_Type_mi,caml_fresh_oo_id(0)]; + function type_padding(pad,fmtty) + {if(typeof pad === "number") + return [0,0,fmtty]; + else + {if(0 === pad[0]) + {var w=pad[2],padty=pad[1];return [0,[0,padty,w],fmtty]} + if(typeof fmtty !== "number" && 2 === fmtty[0]) + {var rest=fmtty[1],padty$0=pad[1];return [0,[1,padty$0],rest]} + throw Type_mismatch}} + function type_padprec(pad,prec,fmtty) + {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]} + 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 + } + throw Type_mismatch} + function type_format_gen(fmt,fmtty) + {if(typeof fmt === "number") + return [0,0,fmtty]; + else + switch(fmt[0]) + {case 0: + if(typeof fmtty !== "number" && 0 === fmtty[0]) + {var + fmtty_rest=fmtty[1], + fmt_rest=fmt[1], + match=type_format_gen(fmt_rest,fmtty_rest), + fmtty$0=match[2], + fmt$0=match[1]; + return [0,[0,fmt$0],fmtty$0]} + break; + case 1: + if(typeof fmtty !== "number" && 0 === fmtty[0]) + {var + fmtty_rest$0=fmtty[1], + fmt_rest$0=fmt[1], + match$0=type_format_gen(fmt_rest$0,fmtty_rest$0), + fmtty$1=match$0[2], + fmt$1=match$0[1]; + return [0,[1,fmt$1],fmtty$1]} + break; + case 2: + var + 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]) + {var + fmtty_rest$1=_tK_[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]} + 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]) + {var + fmtty_rest$2=_tM_[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]} + throw Type_mismatch; + case 4: + var + fmt_rest$3=fmt[4], + prec=fmt[3], + 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]) + {var + fmtty_rest$3=_tO_[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]} + throw Type_mismatch; + case 5: + var + fmt_rest$4=fmt[4], + prec$1=fmt[3], + 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]) + {var + fmtty_rest$4=_tQ_[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]} + throw Type_mismatch; + case 6: + var + fmt_rest$5=fmt[4], + prec$3=fmt[3], + 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]) + {var + fmtty_rest$5=_tS_[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]} + throw Type_mismatch; + case 7: + var + fmt_rest$6=fmt[4], + prec$5=fmt[3], + 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]) + {var + fmtty_rest$6=_tU_[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]} + throw Type_mismatch; + case 8: + var + fmt_rest$7=fmt[4], + prec$7=fmt[3], + 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]) + {var + fmtty_rest$7=_tW_[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]} + 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]) + {var + fmtty_rest$8=_tY_[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]} + throw Type_mismatch; + case 10: + var + fmt_rest$9=fmt[1], + match$17=type_format_gen(fmt_rest$9,fmtty), + fmtty$10=match$17[2], + fmt$10=match$17[1]; + return [0,[10,fmt$10],fmtty$10]; + case 11: + var + fmt_rest$10=fmt[2], + str=fmt[1], + match$18=type_format_gen(fmt_rest$10,fmtty), + fmtty$11=match$18[2], + fmt$11=match$18[1]; + return [0,[11,str,fmt$11],fmtty$11]; + case 12: + var + fmt_rest$11=fmt[2], + chr=fmt[1], + match$19=type_format_gen(fmt_rest$11,fmtty), + fmtty$12=match$19[2], + fmt$12=match$19[1]; + return [0,[12,chr,fmt$12],fmtty$12]; + case 13: + if(typeof fmtty !== "number" && 8 === fmtty[0]) + {var + fmtty_rest$9=fmtty[2], + sub_fmtty=fmtty[1], + fmt_rest$12=fmt[3], + sub_fmtty$0=fmt[2], + pad_opt=fmt[1]; + if(caml_notequal([0,sub_fmtty$0],[0,sub_fmtty])) + throw Type_mismatch; + var + match$20=type_format_gen(fmt_rest$12,fmtty_rest$9), + fmtty$13=match$20[2], + fmt$13=match$20[1]; + return [0,[13,pad_opt,sub_fmtty,fmt$13],fmtty$13]} + break; + case 14: + if(typeof fmtty !== "number" && 9 === fmtty[0]) + {var + fmtty_rest$10=fmtty[3], + sub_fmtty1=fmtty[1], + 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_)) + throw Type_mismatch; + var + match$21=type_format_gen(fmt_rest$13,erase_rel(fmtty_rest$10)), + fmtty$14=match$21[2], + fmt$14=match$21[1]; + return [0,[14,pad_opt$0,sub_fmtty1,fmt$14],fmtty$14]} + break; + case 15: + if(typeof fmtty !== "number" && 10 === fmtty[0]) + {var + fmtty_rest$11=fmtty[1], + fmt_rest$14=fmt[1], + match$22=type_format_gen(fmt_rest$14,fmtty_rest$11), + fmtty$15=match$22[2], + fmt$15=match$22[1]; + return [0,[15,fmt$15],fmtty$15]} + break; + case 16: + if(typeof fmtty !== "number" && 11 === fmtty[0]) + {var + fmtty_rest$12=fmtty[1], + fmt_rest$15=fmt[1], + match$23=type_format_gen(fmt_rest$15,fmtty_rest$12), + fmtty$16=match$23[2], + fmt$16=match$23[1]; + return [0,[16,fmt$16],fmtty$16]} + break; + case 17: + var + fmt_rest$16=fmt[2], + formatting_lit=fmt[1], + match$24=type_format_gen(fmt_rest$16,fmtty), + fmtty$17=match$24[2], + fmt$17=match$24[1]; + return [0,[17,formatting_lit,fmt$17],fmtty$17]; + case 18: + var fmt_rest$17=fmt[2],formatting_gen=fmt[1]; + if(0 === formatting_gen[0]) + {var + match$28=formatting_gen[1], + str$0=match$28[2], + fmt1=match$28[1], + match$29=type_format_gen(fmt1,fmtty), + fmtty2=match$29[2], + fmt2=match$29[1], + match$30=type_format_gen(fmt_rest$17,fmtty2), + fmtty3=match$30[2], + fmt3=match$30[1]; + return [0,[18,[0,[0,fmt2,str$0]],fmt3],fmtty3]} + var + match$31=formatting_gen[1], + str$1=match$31[2], + fmt1$0=match$31[1], + match$32=type_format_gen(fmt1$0,fmtty), + fmtty2$0=match$32[2], + fmt2$0=match$32[1], + match$33=type_format_gen(fmt_rest$17,fmtty2$0), + fmtty3$0=match$33[2], + fmt3$0=match$33[1]; + return [0,[18,[1,[0,fmt2$0,str$1]],fmt3$0],fmtty3$0]; + case 19: + if(typeof fmtty !== "number" && 13 === fmtty[0]) + {var + fmtty_rest$13=fmtty[1], + fmt_rest$18=fmt[1], + match$25=type_format_gen(fmt_rest$18,fmtty_rest$13), + fmtty$18=match$25[2], + fmt$18=match$25[1]; + return [0,[19,fmt$18],fmtty$18]} + break; + case 20: + if(typeof fmtty !== "number" && 1 === fmtty[0]) + {var + fmtty_rest$14=fmtty[1], + fmt_rest$19=fmt[3], + char_set=fmt[2], + width_opt=fmt[1], + match$26=type_format_gen(fmt_rest$19,fmtty_rest$14), + fmtty$19=match$26[2], + fmt$19=match$26[1]; + return [0,[20,width_opt,char_set,fmt$19],fmtty$19]} + break; + case 21: + if(typeof fmtty !== "number" && 2 === fmtty[0]) + {var + fmtty_rest$15=fmtty[1], + fmt_rest$20=fmt[2], + counter=fmt[1], + match$27=type_format_gen(fmt_rest$20,fmtty_rest$15), + fmtty$20=match$27[2], + fmt$20=match$27[1]; + return [0,[21,counter,fmt$20],fmtty$20]} + break; + case 23: + var rest=fmt[2],ign=fmt[1]; + if(typeof ign === "number") + switch(ign) + {case 0:return type_ignored_param_one(ign,rest,fmtty); + case 1:return type_ignored_param_one(ign,rest,fmtty); + case 2: + if(typeof fmtty !== "number" && 14 === fmtty[0]) + {var + fmtty_rest$16=fmtty[1], + match$34=type_format_gen(rest,fmtty_rest$16), + fmtty$21=match$34[2], + fmt$21=match$34[1]; + return [0,[23,2,fmt$21],fmtty$21]} + throw Type_mismatch; + default:return type_ignored_param_one(ign,rest,fmtty)} + else + switch(ign[0]) + {case 0:return type_ignored_param_one(ign,rest,fmtty); + case 1:return type_ignored_param_one(ign,rest,fmtty); + case 2:return type_ignored_param_one(ign,rest,fmtty); + case 3:return type_ignored_param_one(ign,rest,fmtty); + case 4:return type_ignored_param_one(ign,rest,fmtty); + case 5:return type_ignored_param_one(ign,rest,fmtty); + case 6:return type_ignored_param_one(ign,rest,fmtty); + case 7:return type_ignored_param_one(ign,rest,fmtty); + case 8: + var sub_fmtty$2=ign[2],pad_opt$1=ign[1]; + return type_ignored_param_one + ([8,pad_opt$1,sub_fmtty$2],rest,fmtty); + case 9: + 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], + fmtty$22=match$35[2], + fmt$22=match$35[1], + sub_fmtty$4=_t0_[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} + 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), + buf=buffer_create(16); + buffer_add_char(buf,37); + bprint_fconv_flag(buf,fconv); + buffer_add_char(buf,46); + buffer_add_string(buf,caml_string_of_jsbytes("" + prec$0)); + buffer_add_char(buf,symb); + 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_; + 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} + break}} + var + digits=n[1], + buf= + caml_create_bytes + (caml_ml_string_length(s) + ((digits - 1 | 0) / 3 | 0) | 0), + 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_; + 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} + 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 0: + case 13:var _tA_=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))} + 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 0: + case 13:var _tz_=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))} + 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 0: + case 13:var _ty_=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))} + 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 0: + case 13:var _tx_=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))} + function convert_float(fconv,prec,x) + {function hex(param) + {switch(fconv[1]) + {case 0:var sign=45;break; + case 1:var sign=43;break; + default:var sign=32} + return runtime.caml_hexstring_of_float(x,prec,sign)} + function caml_special_val(str) + {var match=runtime.caml_classify_float(x); + return 3 === match + ?x < 0.?cst_neg_infinity:cst_infinity + :4 <= match?cst_nan:str} + switch(fconv[2]) + {case 5: + var + str=caml_format_float(format_of_fconv(fconv,prec),x), + len=caml_ml_string_length(str), + i=0; + for(;;) + {if(i === len) + var _tv_=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} + else + if(21 < _tu_ - 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_)} + case 6:return hex(0); + case 7:return uppercase_ascii$1(hex(0)); + case 8:return caml_special_val(hex(0)); + default:return caml_format_float(format_of_fconv(fconv,prec),x)}} + function string_of_fmtty(fmtty) + {var buf=buffer_create(16); + bprint_fmtty(buf,fmtty); + return buffer_contents(buf)} + function make_printf$0(counter,k,acc,fmt) + {var k$0=k,acc$0=acc,fmt$0=fmt; + for(;;) + if(typeof fmt$0 === "number") + return caml_call1(k$0,acc$0); + else + switch(fmt$0[0]) + {case 0: + var rest=fmt$0[1]; + return function(c) + {var new_acc=[5,acc$0,c];return make_printf(k$0,new_acc,rest)}; + case 1: + var rest$0=fmt$0[1]; + return function(c) + {var + str=escaped(c), + l=caml_ml_string_length(str), + res=make$0(l + 2 | 0,39); + caml_blit_string(str,0,res,1,l); + var new_acc=[4,acc$0,caml_string_of_bytes(res)]; + return make_printf(k$0,new_acc,rest$0)}; + case 2: + var rest$1=fmt$0[2],pad=fmt$0[1]; + return make_padding(k$0,acc$0,rest$1,pad,function(str){return str}); + case 3: + var rest$2=fmt$0[2],pad$0=fmt$0[1]; + return make_padding(k$0,acc$0,rest$2,pad$0,string_to_caml_string); + case 4: + var rest$3=fmt$0[4],prec=fmt$0[3],pad$1=fmt$0[2],iconv=fmt$0[1]; + return make_int_padding_precision + (k$0,acc$0,rest$3,pad$1,prec,convert_int,iconv); + case 5: + var + rest$4=fmt$0[4], + prec$0=fmt$0[3], + pad$2=fmt$0[2], + iconv$0=fmt$0[1]; + return make_int_padding_precision + (k$0,acc$0,rest$4,pad$2,prec$0,convert_int32,iconv$0); + case 6: + var + rest$5=fmt$0[4], + prec$1=fmt$0[3], + pad$3=fmt$0[2], + iconv$1=fmt$0[1]; + return make_int_padding_precision + (k$0,acc$0,rest$5,pad$3,prec$1,convert_nativeint,iconv$1); + case 7: + var + rest$6=fmt$0[4], + prec$2=fmt$0[3], + pad$4=fmt$0[2], + iconv$2=fmt$0[1]; + return make_int_padding_precision + (k$0,acc$0,rest$6,pad$4,prec$2,convert_int64,iconv$2); + case 8: + var rest$7=fmt$0[4],prec$3=fmt$0[3],pad$5=fmt$0[2],fconv=fmt$0[1]; + if(typeof pad$5 === "number") + {if(typeof prec$3 === "number") + return prec$3 + ?function(p,x) + {var str=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); + return make_printf(k$0,[4,acc$0,str],rest$7)}; + var p=prec$3[1]; + return function(x) + {var str=convert_float(fconv,p,x); + 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]; + if(typeof prec$3 === "number") + return prec$3 + ?function(p,x) + {var str=fix_padding(_ts_,_tr_,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); + 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)); + return make_printf(k$0,[4,acc$0,str],rest$7)}} + var _tt_=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)); + 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); + 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)); + return make_printf(k$0,[4,acc$0,str],rest$7)}} + case 9: + var rest$8=fmt$0[2],pad$6=fmt$0[1]; + return make_padding(k$0,acc$0,rest$8,pad$6,string_of_bool); + case 10: + var fmt$1=fmt$0[1],acc$1=[7,acc$0],acc$0=acc$1,fmt$0=fmt$1; + continue; + case 11: + var + fmt$2=fmt$0[2], + str=fmt$0[1], + acc$2=[2,acc$0,str], + acc$0=acc$2, + fmt$0=fmt$2; + continue; + case 12: + var + fmt$3=fmt$0[2], + chr=fmt$0[1], + acc$3=[3,acc$0,chr], + acc$0=acc$3, + fmt$0=fmt$3; + continue; + case 13: + var + rest$9=fmt$0[3], + sub_fmtty=fmt$0[2], + ty=string_of_fmtty(sub_fmtty); + return function(str){return make_printf(k$0,[4,acc$0,ty],rest$9)}; + case 14: + var rest$10=fmt$0[3],fmtty=fmt$0[2]; + return function(param) + {var fmt=param[1]; + return make_printf + (k$0,acc$0,concat_fmt(recast(fmt,fmtty),rest$10))}; + case 15: + var rest$11=fmt$0[1]; + return function(f,x) + {return make_printf + (k$0, + [6,acc$0,function(o){return caml_call2(f,o,x)}], + rest$11)}; + case 16: + var rest$12=fmt$0[1]; + return function(f){return make_printf(k$0,[6,acc$0,f],rest$12)}; + case 17: + var + fmt$4=fmt$0[2], + fmting_lit=fmt$0[1], + acc$4=[0,acc$0,fmting_lit], + acc$0=acc$4, + fmt$0=fmt$4; + continue; + case 18: + var _tp_=fmt$0[1]; + if(0 === _tp_[0]) + {var + rest$13=fmt$0[2], + match=_tp_[1], + fmt$5=match[1], + k$3= + function(acc,k,rest) + {function k$0(kacc) + {return make_printf(k,[1,acc,[0,kacc]],rest)} + return k$0}, + k$1=k$3(acc$0,k$0,rest$13), + k$0=k$1, + acc$0=0, + fmt$0=fmt$5; + continue} + var + rest$14=fmt$0[2], + match$0=_tp_[1], + fmt$6=match$0[1], + k$4= + function(acc,k,rest) + {function k$0(kacc){return make_printf(k,[1,acc,[1,kacc]],rest)} + return k$0}, + k$2=k$4(acc$0,k$0,rest$14), + k$0=k$2, + acc$0=0, + fmt$0=fmt$6; + continue; + case 19:throw [0,Assert_failure,_ay_]; + 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)}; + case 21: + var rest$16=fmt$0[2]; + return function(n) + {var new_acc=[4,acc$0,caml_format_int(cst_u$0,n)]; + return make_printf(k$0,new_acc,rest$16)}; + case 22: + var rest$17=fmt$0[1]; + return function(c) + {var new_acc=[5,acc$0,c];return make_printf(k$0,new_acc,rest$17)}; + case 23: + var rest$18=fmt$0[2],ign=fmt$0[1]; + if(counter < 50) + {var counter$1=counter + 1 | 0; + return make_ignored_param$0(counter$1,k$0,acc$0,ign,rest$18)} + return caml_trampoline_return + (make_ignored_param$0,[0,k$0,acc$0,ign,rest$18]); + default: + var + rest$19=fmt$0[3], + f=fmt$0[2], + arity=fmt$0[1], + _tq_=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 caml_trampoline_return + (make_custom$0,[0,k$0,acc$0,rest$19,arity,_tq_])}} + function make_ignored_param$0(counter,k,acc,ign,fmt) + {if(typeof ign === "number") + switch(ign) + {case 0: + if(counter < 50) + {var counter$0=counter + 1 | 0; + return make_invalid_arg(counter$0,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 1: + if(counter < 50) + {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_]; + default: + if(counter < 50) + {var counter$2=counter + 1 | 0; + return make_invalid_arg(counter$2,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt])} + else + switch(ign[0]) + {case 0: + if(counter < 50) + {var counter$3=counter + 1 | 0; + return make_invalid_arg(counter$3,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 1: + if(counter < 50) + {var counter$4=counter + 1 | 0; + return make_invalid_arg(counter$4,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 2: + if(counter < 50) + {var counter$5=counter + 1 | 0; + return make_invalid_arg(counter$5,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 3: + if(counter < 50) + {var counter$6=counter + 1 | 0; + return make_invalid_arg(counter$6,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 4: + if(counter < 50) + {var counter$7=counter + 1 | 0; + return make_invalid_arg(counter$7,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 5: + if(counter < 50) + {var counter$8=counter + 1 | 0; + return make_invalid_arg(counter$8,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 6: + if(counter < 50) + {var counter$9=counter + 1 | 0; + return make_invalid_arg(counter$9,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 7: + if(counter < 50) + {var counter$10=counter + 1 | 0; + return make_invalid_arg(counter$10,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 8: + if(counter < 50) + {var counter$11=counter + 1 | 0; + return make_invalid_arg(counter$11,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 9: + var fmtty=ign[2]; + if(counter < 50) + {var counter$14=counter + 1 | 0; + return make_from_fmtty$0(counter$14,k,acc,fmtty,fmt)} + return caml_trampoline_return(make_from_fmtty$0,[0,k,acc,fmtty,fmt]); + case 10: + if(counter < 50) + {var counter$12=counter + 1 | 0; + return make_invalid_arg(counter$12,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + default: + if(counter < 50) + {var counter$13=counter + 1 | 0; + return make_invalid_arg(counter$13,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt])}} + function make_from_fmtty$0(counter,k,acc,fmtty,fmt) + {if(typeof fmtty === "number") + {if(counter < 50) + {var counter$0=counter + 1 | 0; + return make_invalid_arg(counter$0,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt])} + else + switch(fmtty[0]) + {case 0: + var rest=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest,fmt)}; + case 1: + var rest$0=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest$0,fmt)}; + case 2: + var rest$1=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest$1,fmt)}; + case 3: + var rest$2=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest$2,fmt)}; + case 4: + var rest$3=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest$3,fmt)}; + case 5: + var rest$4=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest$4,fmt)}; + case 6: + var rest$5=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest$5,fmt)}; + case 7: + var rest$6=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest$6,fmt)}; + case 8: + var rest$7=fmtty[2]; + return function(param){return make_from_fmtty(k,acc,rest$7,fmt)}; + case 9: + var + rest$8=fmtty[3], + ty2=fmtty[2], + ty1=fmtty[1], + ty=trans(symm(ty1),ty2); + return function(param) + {return make_from_fmtty(k,acc,concat_fmtty(ty,rest$8),fmt)}; + case 10: + var rest$9=fmtty[1]; + return function(param,_to_) + {return make_from_fmtty(k,acc,rest$9,fmt)}; + case 11: + var rest$10=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest$10,fmt)}; + 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_]}} + function make_invalid_arg(counter,k,acc,fmt) + {var _tn_=[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])} + 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]; + 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])} + function make_printf(k,acc,fmt) + {return caml_trampoline(make_printf$0(0,k,acc,fmt))} + function make_ignored_param(k,acc,ign,fmt) + {return caml_trampoline(make_ignored_param$0(0,k,acc,ign,fmt))} + function make_from_fmtty(k,acc,fmtty,fmt) + {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) + {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 _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") + 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)}}} + function make_iprintf$0(counter,k,o,fmt) + {var k$0=k,fmt$0=fmt; + for(;;) + if(typeof fmt$0 === "number") + return caml_call1(k$0,o); + else + switch(fmt$0[0]) + {case 0: + var rest=fmt$0[1],_sA_=make_iprintf(k$0,o,rest); + return function(_ti_){return _sA_}; + case 1: + var rest$0=fmt$0[1],_sB_=make_iprintf(k$0,o,rest$0); + return function(_th_){return _sB_}; + 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_}} + else + {if(0 === _sC_[0]) + {var rest$2=fmt$0[2],_sE_=make_iprintf(k$0,o,rest$2); + return function(_tg_){return _sE_}} + var + rest$3=fmt$0[2], + _sF_=make_iprintf(k$0,o,rest$3), + _sG_=function(_tf_){return _sF_}; + return function(_te_){return _sG_}} + 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_}} + else + {if(0 === _sH_[0]) + {var rest$5=fmt$0[2],_sJ_=make_iprintf(k$0,o,rest$5); + return function(_tc_){return _sJ_}} + var + rest$6=fmt$0[2], + _sK_=make_iprintf(k$0,o,rest$6), + _sL_=function(_tb_){return _sK_}; + return function(_ta_){return _sL_}} + 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); + case 5: + var rest$8=fmt$0[4],prec$0=fmt$0[3],pad$0=fmt$0[2]; + return fn_of_padding_precision(k$0,o,rest$8,pad$0,prec$0); + case 6: + var rest$9=fmt$0[4],prec$1=fmt$0[3],pad$1=fmt$0[2]; + return fn_of_padding_precision(k$0,o,rest$9,pad$1,prec$1); + case 7: + var rest$10=fmt$0[4],prec$2=fmt$0[3],pad$2=fmt$0[2]; + return fn_of_padding_precision(k$0,o,rest$10,pad$2,prec$2); + case 8: + 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_}} + else + {if(0 === _sM_[0]) + {var rest$13=fmt$0[2],_sO_=make_iprintf(k$0,o,rest$13); + return function(_s__){return _sO_}} + var + rest$14=fmt$0[2], + _sP_=make_iprintf(k$0,o,rest$14), + _sQ_=function(_s9_){return _sP_}; + return function(_s8_){return _sQ_}} + 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_}; + case 14: + var rest$16=fmt$0[3],fmtty=fmt$0[2]; + return function(param) + {var fmt=param[1]; + return make_iprintf(k$0,o,concat_fmt(recast(fmt,fmtty),rest$16))}; + 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_}; + case 16: + var rest$18=fmt$0[1],_sU_=make_iprintf(k$0,o,rest$18); + return function(_s3_){return _sU_}; + 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 + rest$19=fmt$0[2], + match=_sV_[1], + fmt$5=match[1], + k$3= + function(k,rest) + {function k$0(koc){return make_iprintf(k,koc,rest)}return k$0}, + k$1=k$3(k$0,rest$19), + k$0=k$1, + fmt$0=fmt$5; + continue} + var + rest$20=fmt$0[2], + match$0=_sV_[1], + fmt$6=match$0[1], + k$4= + function(k,rest) + {function k$0(koc){return make_iprintf(k,koc,rest)}return k$0}, + k$2=k$4(k$0,rest$20), + k$0=k$2, + fmt$0=fmt$6; + continue; + case 19:throw [0,Assert_failure,_aC_]; + case 20: + var rest$21=fmt$0[3],_sW_=make_iprintf(k$0,o,rest$21); + return function(_s2_){return _sW_}; + case 21: + var rest$22=fmt$0[2],_sX_=make_iprintf(k$0,o,rest$22); + return function(_s1_){return _sX_}; + case 22: + var rest$23=fmt$0[1],_sY_=make_iprintf(k$0,o,rest$23); + return function(_s0_){return _sY_}; + case 23: + var rest$24=fmt$0[2],ign=fmt$0[1],_sZ_=0; + return make_ignored_param + (function(param){return caml_call1(k$0,o)},_sZ_,ign,rest$24); + default: + var rest$25=fmt$0[3],arity=fmt$0[1]; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return fn_of_custom_arity$0(counter$0,k$0,o,rest$25,arity)} + return caml_trampoline_return + (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_}} + if(counter < 50) + {var counter$0=counter + 1 | 0; + return make_iprintf$0(counter$0,k,o,fmt)} + return caml_trampoline_return(make_iprintf$0,[0,k,o,fmt])} + function make_iprintf(k,o,fmt) + {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(;;) + if(typeof acc$0 === "number") + return 0; + else + switch(acc$0[0]) + {case 0: + var + fmting_lit=acc$0[2], + p=acc$0[1], + s=string_of_formatting_lit(fmting_lit); + 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_); + output_string(o,cst$30); + var acc$0=acc$1; + continue} + var acc$2=_r4_[1]; + output_acc(o,_r5_); + output_string(o,cst$31); + var acc$0=acc$2; + continue; + case 6: + var f=acc$0[2],p$2=acc$0[1]; + output_acc(o,p$2); + return caml_call1(f,o); + case 7:var p$3=acc$0[1];output_acc(o,p$3);return caml_ml_flush(o); + case 8: + var msg=acc$0[2],p$4=acc$0[1]; + output_acc(o,p$4); + return invalid_arg(msg); + case 2: + case 4: + var s$0=acc$0[2],p$0=acc$0[1]; + output_acc(o,p$0); + return output_string(o,s$0); + default: + var c=acc$0[2],p$1=acc$0[1]; + output_acc(o,p$1); + return caml_ml_output_char(o,c)}} + function bufput_acc(b,acc) + {var acc$0=acc; + for(;;) + if(typeof acc$0 === "number") + return 0; + else + switch(acc$0[0]) + {case 0: + var + fmting_lit=acc$0[2], + p=acc$0[1], + s=string_of_formatting_lit(fmting_lit); + 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_); + add_string(b,cst$32); + var acc$0=acc$1; + continue} + var acc$2=_r2_[1]; + bufput_acc(b,_r3_); + add_string(b,cst$33); + var acc$0=acc$2; + continue; + case 6: + var f=acc$0[2],p$2=acc$0[1]; + bufput_acc(b,p$2); + return caml_call1(f,b); + case 7:var acc$3=acc$0[1],acc$0=acc$3;continue; + case 8: + var msg=acc$0[2],p$3=acc$0[1]; + bufput_acc(b,p$3); + return invalid_arg(msg); + case 2: + case 4: + var s$0=acc$0[2],p$0=acc$0[1]; + bufput_acc(b,p$0); + return add_string(b,s$0); + default: + var c=acc$0[2],p$1=acc$0[1];bufput_acc(b,p$1);return add_char(b,c)}} + function strput_acc(b,acc) + {var acc$0=acc; + for(;;) + if(typeof acc$0 === "number") + return 0; + else + switch(acc$0[0]) + {case 0: + var + fmting_lit=acc$0[2], + p=acc$0[1], + s=string_of_formatting_lit(fmting_lit); + 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_); + add_string(b,cst$34); + var acc$0=acc$1; + continue} + var acc$2=_r0_[1]; + strput_acc(b,_r1_); + add_string(b,cst$35); + var acc$0=acc$2; + continue; + case 6: + var f=acc$0[2],p$2=acc$0[1]; + strput_acc(b,p$2); + return add_string(b,caml_call1(f,0)); + case 7:var acc$3=acc$0[1],acc$0=acc$3;continue; + case 8: + var msg=acc$0[2],p$3=acc$0[1]; + strput_acc(b,p$3); + return invalid_arg(msg); + case 2: + case 4: + var s$0=acc$0[2],p$0=acc$0[1]; + strput_acc(b,p$0); + return add_string(b,s$0); + default: + var c=acc$0[2],p$1=acc$0[1];strput_acc(b,p$1);return add_char(b,c)}} + function failwith_message(param) + {var fmt=param[1],buf=create$2(256); + 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_; + var len=caml_ml_string_length(str); + function invalid_box(param) + {return caml_call1(failwith_message(_aE_),str)} + function parse_spaces(i) + {var i$0=i; + for(;;) + {if(i$0 === len)return i$0; + var match=caml_string_get(str,i$0); + if(9 !== match && 32 !== match)return i$0; + var i$1=i$0 + 1 | 0,i$0=i$1; + continue}} + function parse_lword(i,j) + {var j$0=j; + for(;;) + {if(j$0 === len)return j$0; + var match=caml_string_get(str,j$0); + if(25 < match - 97 >>> 0)return j$0; + var j$1=j$0 + 1 | 0,j$0=j$1; + continue}} + function parse_int(i,j) + {var j$0=j; + for(;;) + {if(j$0 === len)return j$0; + var match=caml_string_get(str,j$0),switch$0=0; + if(48 <= match) + {if(! (58 <= match))switch$0 = 1} + else + if(45 === match)switch$0 = 1; + if(switch$0){var j$1=j$0 + 1 | 0,j$0=j$1;continue} + return j$0}} + var + wstart=parse_spaces(0), + wend=parse_lword(wstart,wstart), + box_name=sub$0(str,wstart,wend - wstart | 0), + nstart=parse_spaces(wend), + nend=parse_int(nstart,nstart); + if(nstart === nend) + var indent=0; + 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_; + var indent=invalid_box(0)} + var exp_end=parse_spaces(nend); + if(exp_end !== len)invalid_box(0); + var switch$0=0; + if + (caml_string_notequal(box_name,cst$37) + && + caml_string_notequal(box_name,cst_b$0)) + var + box_type= + caml_string_notequal(box_name,cst_h) + ?caml_string_notequal(box_name,cst_hov) + ?caml_string_notequal(box_name,cst_hv) + ?caml_string_notequal(box_name,cst_v)?invalid_box(0):1 + :2 + :3 + :0; + else + switch$0 = 1; + if(switch$0)var box_type=4; + return [0,indent,box_type]} + function make_padding_fmt_ebb(pad,fmt) + {if(typeof pad === "number") + return [0,0,fmt]; + else + {if(0 === pad[0]){var w=pad[2],s=pad[1];return [0,[0,s,w],fmt]} + var s$0=pad[1]; + return [0,[1,s$0],fmt]}} + function make_padprec_fmt_ebb(pad,prec,fmt) + {if(typeof prec === "number") + var match=prec?[0,1,fmt]:[0,0,fmt]; + else + var p=prec[1],match=[0,[0,p],fmt]; + var prec$0=match[1]; + if(typeof pad === "number") + return [0,0,prec$0,fmt]; + else + {if(0 === pad[0]){var w=pad[2],s=pad[1];return [0,[0,s,w],prec$0,fmt]} + var s$0=pad[1]; + return [0,[1,s$0],prec$0,fmt]}} + function fmt_ebb_of_string(legacy_behavior,str) + {if(legacy_behavior) + var flag=legacy_behavior[1],legacy_behavior$0=flag; + else + var legacy_behavior$0=1; + function invalid_format_message(str_ind,msg) + {return caml_call3(failwith_message(_aF_),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)} + function expected_character(str_ind,expected,read) + {return caml_call4(failwith_message(_aH_),str,str_ind,expected,read)} + function add_literal(lit_start,str_ind,fmt) + {var size=str_ind - lit_start | 0; + return 0 === size + ?[0,fmt] + :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; + 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,_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) + {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; + default: + return expected_character + (str_ind$0 + 1 | 0,cst_character,125)}} + 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; + 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 + plus_used=[0,0], + hash_used=[0,0], + space_used=[0,0], + ign_used=[0,0], + pad_used=[0,0], + prec_used=[0,0]; + function get_plus(param){plus_used[1] = 1;return plus} + function get_hash(param){hash_used[1] = 1;return hash} + function get_space(param){space_used[1] = 1;return space} + function get_ign(param){ign_used[1] = 1;return ign} + function get_pad(param){pad_used[1] = 1;return pad} + function get_prec(param){prec_used[1] = 1;return prec} + function get_padprec(param){pad_used[1] = 1;return padprec} + function get_int_pad(param) + {var pad=get_pad(0),match=get_prec(0); + if(typeof match === "number" && ! match)return pad; + if(typeof pad === "number") + return 0; + else + {if(0 === pad[0]) + {if(2 <= pad[1]) + {var n=pad[2]; + return legacy_behavior$0 + ?[0,1,n] + :incompatible_flag(pct_ind,str_ind,48,cst_precision$0)} + return pad} + return 2 <= pad[1] + ?legacy_behavior$0 + ?_aN_ + :incompatible_flag(pct_ind,str_ind,48,cst_precision$1) + :pad}} + function check_no_0(symb,pad) + {if(typeof pad === "number") + return pad; + else + {if(0 === pad[0]) + {if(2 <= pad[1]) + {var width=pad[2]; + return legacy_behavior$0 + ?[0,1,width] + :incompatible_flag(pct_ind,str_ind,symb,cst_0$0)} + return pad} + return 2 <= pad[1] + ?legacy_behavior$0 + ?_aO_ + :incompatible_flag(pct_ind,str_ind,symb,cst_0$1) + :pad}} + function opt_of_pad(c,pad) + {if(typeof pad === "number") + return 0; + else + {if(0 === pad[0]) + switch(pad[1]) + {case 0: + var width=pad[2]; + return legacy_behavior$0 + ?[0,width] + :incompatible_flag(pct_ind,str_ind,c,cst$38); + case 1:var width$0=pad[2];return [0,width$0]; + default: + var width$1=pad[2]; + return legacy_behavior$0 + ?[0,width$1] + :incompatible_flag(pct_ind,str_ind,c,cst_0$2)} + return incompatible_flag(pct_ind,str_ind,c,cst$39)}} + function get_pad_opt(c){return opt_of_pad(c,get_pad(0))} + function get_padprec_opt(c){return opt_of_pad(c,get_padprec(0))} + var switch$0=0; + if(124 <= symb) + switch$0 = 1; + else + switch(symb) + {case 33: + var + match$6=parse(str_ind,end_ind), + fmt_rest$5=match$6[1], + fmt_result=[0,[10,fmt_rest$5]]; + break; + case 40: + var + sub_end=search_subformat_end(str_ind,end_ind,41), + match$8=parse(sub_end + 2 | 0,end_ind), + fmt_rest$7=match$8[1], + match$9=parse(str_ind,sub_end), + sub_fmt=match$9[1], + sub_fmtty=fmtty_of_fmt(sub_fmt); + if(get_ign(0)) + var + ignored$2=[9,get_pad_opt(95),sub_fmtty], + _ra_=[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_; + 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_; + break; + case 78: + var + match$16=parse(str_ind,end_ind), + 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]]; + else + var _ri_=[0,[21,counter$0,fmt_rest$14]]; + var fmt_result=_ri_; + break; + case 83: + var + pad$6=check_no_0(symb,get_padprec(0)), + match$17=parse(str_ind,end_ind), + fmt_rest$15=match$17[1]; + if(get_ign(0)) + var + ignored$7=[1,get_padprec_opt(95)], + _rj_=[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_; + break; + case 91: + if(str_ind === end_ind)unexpected_end_of_format(end_ind); + var + char_set=create_char_set(0), + add_char=function(c){return add_in_char_set(char_set,c)}, + add_range= + function(c$0,c) + {if(! (c < c$0)) + {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} + break}} + return 0}, + fail_single_percent= + function(str_ind) + {return caml_call2(failwith_message(_aX_),str,str_ind)}, + parse_char_set_content= + function(counter,str_ind,end_ind) + {var str_ind$0=str_ind; + for(;;) + {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + var c=caml_string_get(str,str_ind$0); + if(45 === c) + {add_char(45); + 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; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return parse_char_set_after_char$0(counter$0,_rB_,end_ind,c)} + return caml_trampoline_return + (parse_char_set_after_char$0,[0,_rB_,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; + for(;;) + {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + var c$1=caml_string_get(str,str_ind$0),switch$0=0; + if(46 <= c$1) + {if(64 === c$1) + switch$0 = 1; + else + if(93 === c$1){add_char(c$0);return str_ind$0 + 1 | 0}} + else + if(37 === c$1) + switch$0 = 1; + else + if(45 <= c$1) + {var str_ind$2=str_ind$0 + 1 | 0; + if(str_ind$2 === end_ind)unexpected_end_of_format(end_ind); + var c$2=caml_string_get(str,str_ind$2); + if(37 === c$2) + {if((str_ind$2 + 1 | 0) === end_ind) + unexpected_end_of_format(end_ind); + var c$3=caml_string_get(str,str_ind$2 + 1 | 0); + 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; + if(counter < 50) + {var counter$2=counter + 1 | 0; + return parse_char_set_content(counter$2,_rz_,end_ind)} + return caml_trampoline_return + (parse_char_set_content,[0,_rz_,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; + if(counter < 50) + {var counter$1=counter + 1 | 0; + return parse_char_set_content(counter$1,_rA_,end_ind)} + return caml_trampoline_return + (parse_char_set_content,[0,_rA_,end_ind])} + if(switch$0 && 37 === c$0) + {add_char(c$1); + var _ry_=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 caml_trampoline_return + (parse_char_set_content,[0,_ry_,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; + continue}}, + parse_char_set_after_char= + function(str_ind,end_ind,c) + {return caml_trampoline + (parse_char_set_after_char$0(0,str_ind,end_ind,c))}; + if(str_ind === end_ind)unexpected_end_of_format(end_ind); + var match$31=caml_string_get(str,str_ind); + if(94 === match$31) + var str_ind$0=str_ind + 1 | 0,reverse=1,str_ind$1=str_ind$0; + else + var reverse=0,str_ind$1=str_ind; + if(str_ind$1 === end_ind)unexpected_end_of_format(end_ind); + var + c=caml_string_get(str,str_ind$1), + next_ind=parse_char_set_after_char(str_ind$1 + 1 | 0,end_ind,c), + char_set$0=freeze_char_set(char_set), + char_set$1=reverse?rev_char_set(char_set$0):char_set$0, + match$21=parse(next_ind,end_ind), + fmt_rest$19=match$21[1]; + if(get_ign(0)) + var + ignored$9=[10,get_pad_opt(95),char_set$1], + _ro_=[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_; + break; + case 97: + var + match$22=parse(str_ind,end_ind), + fmt_rest$20=match$22[1], + fmt_result=[0,[15,fmt_rest$20]]; + break; + case 99: + var + char_format= + function(fmt_rest) + {return get_ign(0)?[0,[23,0,fmt_rest]]:[0,[0,fmt_rest]]}, + match$23=parse(str_ind,end_ind), + fmt_rest$21=match$23[1], + match$24=get_pad_opt(99); + 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_; + else + var + _rq_= + legacy_behavior$0 + ?char_format(fmt_rest$21) + :invalid_format_message + (str_ind,cst_non_zero_widths_are_unsupp); + var _rr_=_rq_} + else + var _rr_=char_format(fmt_rest$21); + var fmt_result=_rr_; + 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_; + break; + case 115: + var + pad$9=check_no_0(symb,get_padprec(0)), + match$26=parse(str_ind,end_ind), + fmt_rest$23=match$26[1]; + if(get_ign(0)) + var + ignored$10=[0,get_padprec_opt(95)], + _rt_=[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_; + break; + case 116: + var + match$28=parse(str_ind,end_ind), + fmt_rest$25=match$28[1], + fmt_result=[0,[16,fmt_rest$25]]; + break; + case 123: + var + sub_end$0=search_subformat_end(str_ind,end_ind,125), + match$29=parse(str_ind,sub_end$0), + sub_fmt$0=match$29[1], + match$30=parse(sub_end$0 + 2 | 0,end_ind), + fmt_rest$26=match$30[1], + sub_fmtty$0=fmtty_of_fmt(sub_fmt$0); + if(get_ign(0)) + var + ignored$11=[8,get_pad_opt(95),sub_fmtty$0], + _ru_=[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_; + break; + case 66: + case 98: + var + pad$3=check_no_0(symb,get_padprec(0)), + match$10=parse(str_ind,end_ind), + fmt_rest$8=match$10[1]; + if(get_ign(0)) + var + ignored$3=[7,get_padprec_opt(95)], + _rb_=[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_; + break; + case 37: + case 64: + var + match$7=parse(str_ind,end_ind), + fmt_rest$6=match$7[1], + fmt_result=[0,[12,symb,fmt_rest$6]]; + break; + case 76: + case 108: + case 110: + var switch$1=0; + if(str_ind !== end_ind) + {var + symb$0=caml_string_get(str,str_ind), + _rv_=symb$0 - 88 | 0, + switch$2=0; + if(! (32 < _rv_ >>> 0)) + switch(_rv_) + {case 0: + case 12: + case 17: + case 23: + case 29: + case 32:var _rh_=1;switch$2 = 1;break + } + if(! switch$2)var _rh_=0; + if(_rh_){switch$0 = 1;switch$1 = 1}} + if(! switch$1) + {var + match$15=parse(str_ind,end_ind), + fmt_rest$13=match$15[1], + switch$3=0; + if(108 <= symb) + {if(! (111 <= symb)) + switch(symb - 108 | 0) + {case 0:var counter=0;switch$3 = 1;break; + case 1:break; + 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(get_ign(0)) + var ignored$5=[11,counter],_rg_=[0,[23,ignored$5,fmt_rest$13]]; + else + var _rg_=[0,[21,counter,fmt_rest$13]]; + var fmt_result=_rg_} + break; + case 32: + case 35: + case 43: + case 45: + case 95: + var + fmt_result= + caml_call3(failwith_message(_aS_),str,pct_ind,symb); + break; + case 88: + case 100: + case 105: + case 111: + case 117: + case 120: + var + _rk_=get_space(0), + _rl_=get_hash(0), + iconv$2= + compute_int_conv(pct_ind,str_ind,get_plus(0),_rl_,_rk_,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]]; + else + var + _rn_=get_prec(0), + match$20=make_padprec_fmt_ebb(get_int_pad(0),_rn_,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_; + break; + case 69: + case 70: + case 71: + case 72: + case 101: + case 102: + 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_]} + 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; + 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_} + else + if(76 === symb) + {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__} + 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} + 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; + for(;;) + {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), + _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) + {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; + 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; + continue}} + 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_}} + function format_of_string_format(str,param) + {var + str$0=param[2], + fmt=param[1], + 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 + CamlinternalFormat= + [0, + is_in_char_set, + rev_char_set, + create_char_set, + add_in_char_set, + freeze_char_set, + param_format_of_ignored_format, + make_printf, + make_iprintf, + output_acc, + bufput_acc, + strput_acc, + type_format, + fmt_ebb_of_string, + format_of_string_fmtty, + format_of_string_format, + char_of_iconv, + string_of_formatting_lit, + string_of_fmtty, + string_of_fmt, + open_box_of_string, + symm, + trans, + recast]; + caml_register_global(807,CamlinternalFormat,"CamlinternalFormat"); + function kfprintf(k,o,param) + {var fmt=param[1],_qG_=0; + return make_printf + (function(acc){output_acc(o,acc);return caml_call1(k,o)}, + _qG_, + fmt)} + function kbprintf(k,b,param) + {var fmt=param[1],_qF_=0; + return make_printf + (function(acc){bufput_acc(b,acc);return caml_call1(k,b)}, + _qF_, + 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 ifprintf(oc,fmt) + {return ikfprintf(function(_qC_){return 0},oc,fmt)} + function ibprintf(b,fmt){return ikfprintf(function(_qB_){return 0},b,fmt)} + function printf(fmt){return fprintf(stdout,fmt)} + function eprintf(fmt){return fprintf(stderr,fmt)} + function ksprintf(k,param) + {var fmt=param[1]; + function k$0(acc) + {var buf=create$2(64); + strput_acc(buf,acc); + return caml_call1(k,contents(buf))} + return make_printf(k$0,0,fmt)} + function sprintf(fmt){return ksprintf(function(s){return s},fmt)} + var + Stdlib_Printf= + [0, + fprintf, + printf, + eprintf, + sprintf, + bprintf, + ifprintf, + ibprintf, + kfprintf, + ikfprintf, + ksprintf, + kbprintf, + ikfprintf, + ksprintf]; + caml_register_global(808,Stdlib_Printf,"Stdlib__Printf"); + var + Bad=[248,cst_Stdlib_Arg_Bad,caml_fresh_oo_id(0)], + Help=[248,cst_Stdlib_Arg_Help,caml_fresh_oo_id(0)], + Stop=[248,cst_Stdlib_Arg_Stop,caml_fresh_oo_id(0)]; + function assoc3(x,l) + {var l$0=l; + for(;;) + {if(l$0) + {var match=l$0[1],y2=match[2],y1=match[1]; + if(caml_equal(y1,x))return y2; + var l$1=l$0[2],l$0=l$1; + continue} + throw Not_found}} + function split$1(s) + {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_]} + function make_symlist(prefix,sep,suffix,l) + {if(l) + {var t=l[2],h=l[1],_qz_=cat(prefix,h); + return cat + (fold_left$0(function(x,y){return cat(x,cat(sep,y))},_qz_,t), + suffix)} + return cst_none} + function help_action(param){throw [0,Stop,_a9_]} + 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_; + var + _qu_= + [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_; + var + add2= + [0, + [0,cst_help$0,[0,help_action],cst_Display_this_list_of_optio$0], + 0]} + return append(speclist,append(_qu_,add2))} + function usage_b(buf,speclist,errmsg) + {caml_call1(bprintf(buf,_a__),errmsg); + var _qr_=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_) + {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_)} + 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 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_}} + 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_}} + 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_}} + function parse_and_expand_argv_dynamic_ + (allow_expand,current,argv,speclist,anonfun,errmsg) + {var initpos=current[1]; + function convert_error(error) + {var + b=create$2(200), + progname= + initpos < argv[1].length - 1 + ?caml_check_bound(argv[1],initpos)[1 + initpos] + :cst$54; + switch(error[0]) + {case 0: + var _qj_=error[1]; + if + (caml_string_notequal(_qj_,cst_help$3) + && + caml_string_notequal(_qj_,cst_help$4)) + caml_call2(bprintf(b,_ba_),progname,_qj_); + break; + case 1: + var expected=error[3],arg=error[2],opt=error[1]; + caml_call4(bprintf(b,_bd_),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)} + usage_b(b,speclist[1],errmsg); + if(! caml_equal(error,_bb_) && ! caml_equal(error,_bc_)) + return [0,Bad,contents(b)]; + return [0,Help,contents(b)]} + current[1]++; + for(;;) + {if(current[1] < argv[1].length - 1) + {try + {var + _p__=current[1], + s=caml_check_bound(argv[1],_p__)[1 + _p__], + 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]), + follow$0=follow$1, + action=_qa_} + catch(_qh_) + {_qh_ = caml_wrap_exception(_qh_); + if(_qh_ !== Not_found)throw _qh_; + 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_} + var + no_arg$0= + function(s,follow) + {function no_arg(param) + {if(follow) + {var arg=follow[1];throw [0,Stop,[1,s,arg,cst_no_argument]]} + return 0} + return no_arg}, + no_arg=no_arg$0(s,follow$0), + get_arg$0= + function(s,follow) + {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_]} + throw [0,Stop,[2,s]]} + return get_arg}, + get_arg=get_arg$0(s,follow$0), + consume_arg$0= + function(follow) + {function consume_arg(param) + {return follow?0:(current[1]++,0)} + return consume_arg}, + consume_arg=consume_arg$0(follow$0), + treat_action$0= + function(s,no_arg,get_arg,consume_arg) + {function treat_action(param) + {switch(param[0]) + {case 0:var f=param[1];no_arg(0);return caml_call1(f,0); + case 1: + var + f$0=param[1], + arg=get_arg(0), + match=bool_of_string_opt$0(arg); + if(match) + {var s$0=match[1];caml_call1(f$0,s$0);return consume_arg(0)} + throw [0,Stop,[1,s,arg,cst_a_boolean]]; + case 2:var r=param[1];no_arg(0);r[1] = 1;return 0; + case 3:var r$0=param[1];no_arg(0);r$0[1] = 0;return 0; + case 4: + var f$1=param[1],arg$0=get_arg(0); + caml_call1(f$1,arg$0); + return consume_arg(0); + case 5: + var r$1=param[1];r$1[1] = get_arg(0);return consume_arg(0); + case 6: + var + f$2=param[1], + arg$1=get_arg(0), + match$0=int_of_string_opt$0(arg$1); + if(match$0) + {var x=match$0[1];caml_call1(f$2,x);return consume_arg(0)} + throw [0,Stop,[1,s,arg$1,cst_an_integer]]; + case 7: + var + r$2=param[1], + arg$2=get_arg(0), + match$1=int_of_string_opt$0(arg$2); + if(match$1) + {var x$0=match$1[1];r$2[1] = x$0;return consume_arg(0)} + throw [0,Stop,[1,s,arg$2,cst_an_integer$0]]; + case 8: + var + f$3=param[1], + arg$3=get_arg(0), + match$2=float_of_string_opt(arg$3); + if(match$2) + {var x$1=match$2[1]; + caml_call1(f$3,x$1); + return consume_arg(0)} + throw [0,Stop,[1,s,arg$3,cst_a_float]]; + case 9: + var + r$3=param[1], + arg$4=get_arg(0), + match$3=float_of_string_opt(arg$4); + if(match$3) + {var x$2=match$3[1];r$3[1] = x$2;return consume_arg(0)} + throw [0,Stop,[1,s,arg$4,cst_a_float$0]]; + case 10: + var specs=param[1]; + no_arg(0); + return iter$2(treat_action,specs); + case 11: + var f$4=param[2],symb=param[1],arg$5=get_arg(0); + if(mem(arg$5,symb)) + {caml_call1(f$4,arg$5);return consume_arg(0)} + throw [0, + Stop, + [1, + s, + arg$5, + cat(cst_one_of,make_symlist(cst$57,cst$56,cst$55,symb))]]; + case 12: + var f$5=param[1]; + 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_]); + consume_arg(0); + continue} + return 0} + case 13: + var f$6=param[1]; + no_arg(0); + 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_]; + consume_arg(0); + continue} + return caml_call1(f$6,rev(acc[1]))} + default: + var f$7=param[1]; + if(1 - allow_expand) + throw [0,Invalid_argument,cst_Arg_Expand_is_is_only_allo]; + var arg$6=get_arg(0),newarg=caml_call1(f$7,arg$6); + consume_arg(0); + var + before=sub$1(argv[1],0,current[1] + 1 | 0), + after= + sub$1 + (argv[1], + current[1] + 1 | 0, + (argv[1].length - 1 - current[1] | 0) - 1 | 0); + argv[1] + = + caml_array_concat([0,before,[0,newarg,[0,after,0]]]); + return 0}} + return treat_action}, + treat_action=treat_action$0(s,no_arg,get_arg,consume_arg); + treat_action(action); + switch$0 = 1} + if(! switch$0)caml_call1(anonfun,s)} + catch(exn$0) + {exn$0 = caml_wrap_exception(exn$0); + if(exn$0[1] === Bad){var m=exn$0[2];throw convert_error([3,m])} + if(exn$0[1] === Stop){var e=exn$0[2];throw convert_error(e)} + throw exn$0; + var exn=exn$0} + current[1]++; + continue} + return 0}} + function parse_and_expand_argv_dynamic + (current,argv,speclist,anonfun,errmsg) + {return parse_and_expand_argv_dynamic_ + (1,current,argv,speclist,anonfun,errmsg)} + function parse_argv_dynamic(opt,argv,speclist,anonfun,errmsg) + {if(opt)var sth=opt[1],current$0=sth;else var current$0=current; + return parse_and_expand_argv_dynamic_ + (0,current$0,[0,argv],speclist,anonfun,errmsg)} + function parse_argv(opt,argv,speclist,anonfun,errmsg) + {if(opt)var sth=opt[1],current$0=sth;else var current$0=current; + return parse_argv_dynamic + ([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_} + 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)} + if(exn[1] === Help) + {var msg$1=exn[2];caml_call1(printf(_bh_),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_} + 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)} + if(exn[1] === Help) + {var msg$1=exn[2];caml_call1(printf(_bj_),msg$1);return exit(0)} + throw exn}} + function parse_expand(l,f,msg) + {try + {var + 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_} + 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)} + if(exn[1] === Help) + {var msg$1=exn[2];caml_call1(printf(_bl_),msg$1);return exit(0)} + throw exn}} + function second_word(s) + {var len=caml_ml_string_length(s); + function loop(n) + {var n$0=n; + for(;;) + {if(len <= n$0)return len; + if(32 === caml_string_get(s,n$0)) + {var n$1=n$0 + 1 | 0,n$0=n$1;continue} + return n$0}} + try + {var n$0=index$0(s,9)} + catch(_p5_) + {_p5_ = caml_wrap_exception(_p5_); + if(_p5_ === Not_found) + {try + {var n=index$0(s,32)} + catch(_p6_) + {_p6_ = caml_wrap_exception(_p6_); + if(_p6_ === Not_found)return len; + throw _p6_} + return loop(n + 1 | 0)} + throw _p5_} + return loop(n$0 + 1 | 0)} + function max_arg_len(cur,param) + {var doc=param[3],spec=param[2],kwd=param[1]; + return 11 === spec[0] + ?max$1(cur,caml_ml_string_length(kwd)) + :max$1(cur,caml_ml_string_length(kwd) + second_word(doc) | 0)} + function replace_leading_tab(s) + {var seen=[0,0]; + return map$6 + (function(c) + {if(9 === c && ! seen[1]){seen[1] = 1;return 32}return c}, + s)} + function align(opt,speclist) + {if(opt)var sth=opt[1],limit=sth;else var limit=max_int; + var + completed=add_help(speclist), + len=fold_left$0(max_arg_len,0,completed), + len$0=min$1(len,limit); + return map$4 + (function(ksd) + {var _p3_=ksd[1],_p4_=ksd[2]; + if(caml_string_notequal(ksd[3],cst$58)) + {if(11 === _p4_[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_, + 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_), + diff=(len$0 - kwd_len | 0) - cutcol | 0; + if(0 < diff) + {var + spaces=make$1(diff,32), + 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 ksd}, + completed)} + function read_aux(trim,sep,file) + {var ic=open_bin$0(file),buf=create$2(200),words=[0,0]; + function stash(param) + {var s=contents(buf); + 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_} + else + var word=s; + words[1] = [0,word,words[1]]; + return clear$1(buf)} + try + {for(;;) + {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) + {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_)} + function write_aux(sep,file,args) + {var oc=open_bin(file); + iter$5(function(s){return caml_call2(fprintf(oc,_bq_),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 + Stdlib_Arg= + [0, + parse, + parse_dynamic, + parse_argv, + parse_argv_dynamic, + parse_and_expand_argv_dynamic, + parse_expand, + Help, + Bad, + usage, + usage_string, + align, + current, + read_arg, + read_arg0, + write_arg, + write_arg0]; + caml_register_global(809,Stdlib_Arg,"Stdlib__Arg"); + var + Stdlib_Atomic= + [0,make,get,set,exchange,compare_and_set,fetch_and_add,incr,decr]; + caml_register_global(810,Stdlib_Atomic,"Stdlib__Atomic"); + var printers=[0,0]; + function field(x,i) + {var f=x[1 + i]; + return is_block(f) + ?caml_obj_tag(f) === 252 + ?caml_call1(sprintf(_bt_),f) + :caml_obj_tag(f) === 253?to_string(f):cst$60 + :caml_call1(sprintf(_bu_),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_)} + function use_printers(x) + {function conv(param) + {var param$0=param; + for(;;) + {if(param$0) + {var tl=param$0[2],hd=param$0[1]; + try + {var switch$0=0,val=caml_call1(hd,x);switch$0 = 1} + catch(_pS_){} + if(switch$0 && val){var s=val[1];return [0,s]} + var param$0=tl; + continue} + return 0}} + return conv(printers[1])} + function to_string_default(x) + {if(x === Out_of_memory)return cst_Out_of_memory; + if(x === Stack_overflow)return cst_Stack_overflow; + if(x[1] === Match_failure) + {var match$0=x[2],char$0=match$0[3],line=match$0[2],file=match$0[1]; + return caml_call5 + (sprintf(locfmt), + file, + line, + char$0, + char$0 + 5 | 0, + cst_Pattern_matching_failed)} + if(x[1] === Assert_failure) + {var + match$1=x[2], + char$1=match$1[3], + line$0=match$1[2], + file$0=match$1[1]; + return caml_call5 + (sprintf(locfmt), + file$0, + line$0, + char$1, + char$1 + 6 | 0, + cst_Assertion_failed)} + if(x[1] === Undefined_recursive_module) + {var + match$2=x[2], + char$2=match$2[3], + line$1=match$2[2], + file$1=match$2[1]; + return caml_call5 + (sprintf(locfmt), + file$1, + line$1, + char$2, + char$2 + 6 | 0, + cst_Undefined_recursive_module)} + if(0 === caml_obj_tag(x)) + {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_); + 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_)} + return x[1]} + function to_string$6(e) + {var match=use_printers(e); + if(match){var s=match[1];return s} + return to_string_default(e)} + function print(fct,arg) + {try + {var _pN_=caml_call1(fct,arg);return _pN_} + catch(x) + {x = caml_wrap_exception(x); + var _pM_=to_string$6(x); + caml_call1(eprintf(_by_),_pM_); + caml_ml_flush(stderr); + throw x}} + function catch$0(fct,arg) + {try + {var _pL_=caml_call1(fct,arg);return _pL_} + catch(x) + {x = caml_wrap_exception(x); + caml_ml_flush(stdout); + var _pK_=to_string$6(x); + caml_call1(eprintf(_bz_),_pK_); + return exit(2)}} + function raw_backtrace_entries(bt){return bt} + function convert_raw_backtrace(bt) + {return [0,runtime.caml_convert_raw_backtrace(bt)]} + function format_backtrace_slot(pos,slot) + {function info(is_raise) + {return is_raise + ?0 === pos?cst_Raised_at:cst_Re_raised_at + :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]); + return [0, + caml_call7(sprintf(_bA_),_pI_,_pH_,_pG_,_pF_,_pE_,_pD_,_pC_)]} + if(slot[1])return 0; + var _pJ_=info(0); + return [0,caml_call1(sprintf(_bB_),_pJ_)]} + 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_; + 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} + break}} + return 0} + return fprintf(outchan,_bD_)} + 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_; + 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} + break}} + return contents(b)} + return cst_Program_not_linked_with_g_} + function backtrace_slot_is_raise(param) + {return 0 === param[0]?param[1]:param[1]} + function backtrace_slot_is_inline(param){return 0 === param[0]?param[6]:0} + function backtrace_slot_location(param) + {return 0 === param[0]?[0,[0,param[2],param[3],param[4],param[5]]]:0} + function backtrace_slot_defname(param) + {if(0 === param[0] && caml_string_notequal(param[7],cst$65)) + return [0,param[7]]; + return 0} + function backtrace_slots(raw_backtrace) + {var match=convert_raw_backtrace(raw_backtrace); + if(match) + {var backtrace=match[1],i$1=backtrace.length - 1 - 1 | 0,i=i$1; + for(;;) + {if(-1 === i) + var _pv_=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}} + return 0} + function backtrace_slots_of_raw_entry(entry) + {return backtrace_slots([0,entry])} + function raw_backtrace_length(bt){return bt.length - 1} + function get_backtrace(param) + {return raw_backtrace_to_string(caml_get_exception_raw_backtra(0))} + function register_printer(fn) + {for(;;) + {var + 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_}} + 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(); + function default_uncaught_exception_han(exn,raw_backtrace) + {var _pr_=to_string$6(exn); + caml_call1(eprintf(_bG_),_pr_); + 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_])} + return caml_ml_flush(stderr)} + var uncaught_exception_handler=[0,default_uncaught_exception_han]; + function set_uncaught_exception_handler(fn) + {uncaught_exception_handler[1] = fn;return 0} + var empty_backtrace=[0]; + function handle_uncaught_exception(exn,debugger_in_use) + {try + {try + {var + raw_backtrace= + debugger_in_use?empty_backtrace:caml_get_exception_raw_backtra(0); + try {do_at_exit(0)}catch(_pq_){} + try + {var + _pm_=caml_call2(uncaught_exception_handler[1],exn,raw_backtrace), + _pl_=_pm_} + 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_); + print_raw_backtrace(stderr,raw_backtrace); + var _pk_=to_string$6(exn$0); + caml_call1(eprintf(_bI_),_pk_); + 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}} + 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_)} + var + _bM_= + [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_)} + var + Stdlib_Printexc= + [0, + to_string$6, + to_string_default, + print, + catch$0, + print_backtrace, + get_backtrace, + function(_pc_){return runtime.caml_record_backtrace(_pc_)}, + _bO_, + register_printer, + use_printers, + raw_backtrace_entries, + _bN_, + 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_, + _bJ_, + exn_slot_id, + exn_slot_name]; + caml_register_global(811,Stdlib_Printexc,"Stdlib__Printexc"); + function const$0(c,param){return c} + function flip(f,x,y){return caml_call2(f,y,x)} + function negate(p,v){return 1 - caml_call1(p,v)} + var + Finally_raised= + [248,cst_Stdlib_Fun_Finally_raised,caml_fresh_oo_id(0)]; + register_printer + (function(param) + {if(param[1] === Finally_raised) + {var exn=param[2]; + return [0,cat(cst_Fun_Finally_raised,to_string$6(exn))]} + return 0}); + function protect(finally$0,work) + {function finally_no_exn(param) + {try + {var _pb_=caml_call1(finally$0,0);return _pb_} + catch(e) + {e = caml_wrap_exception(e); + var bt=caml_get_exception_raw_backtra(0),exn=[0,Finally_raised,e]; + caml_restore_raw_backtrace(exn,bt); + throw exn}} + try + {var result=caml_call1(work,0)} + catch(work_exn) + {work_exn = caml_wrap_exception(work_exn); + var work_bt=caml_get_exception_raw_backtra(0); + finally_no_exn(0); + caml_restore_raw_backtrace(work_exn,work_bt); + throw work_exn} + finally_no_exn(0); + return result} + 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 + _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_); + 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_)} + function allocated_bytes(param) + {var + match=runtime.caml_gc_counters(0), + ma=match[3], + pro=match[2], + mi=match[1]; + return (mi + ma - pro) * 4} + function create_alarm(f){return [0,1]} + function delete_alarm(a){a[1] = 0;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__]; + 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 + Stdlib_Gc= + [0, + print_stat, + allocated_bytes, + function(_oR_,_oQ_){return runtime.caml_final_register(_oR_,_oQ_)}, + _ce_, + _cd_, + create_alarm, + delete_alarm, + _cc_]; + caml_register_global(813,Stdlib_Gc,"Stdlib__Gc"); + function string(str) + {return caml_md5_string(str,0,caml_ml_string_length(str))} + function bytes(b){return string(caml_string_of_bytes(b))} + function substring(str,ofs,len) + {if + (0 + <= + ofs + && + 0 + <= + len + && + ! + ((caml_ml_string_length(str) - len | 0) < ofs)) + return caml_md5_string(str,ofs,len); + return invalid_arg(cst_Digest_substring)} + function subbytes(b,ofs,len) + {return substring(caml_string_of_bytes(b),ofs,len)} + function file(filename) + {var ic=open_bin$0(filename); + try + {var d=runtime.caml_md5_chan(ic,-1)} + catch(e){e = caml_wrap_exception(e);caml_ml_close_channel(ic);throw e} + caml_ml_close_channel(ic); + 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 to_hex(d) + {if(16 !== caml_ml_string_length(d))invalid_arg(cst_Digest_to_hex); + var result=caml_create_bytes(32),i=0; + for(;;) + {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} + return caml_string_of_bytes(result)}} + function from_hex(s) + {if(32 !== caml_ml_string_length(s))invalid_arg(cst_Digest_from_hex); + function digit(c) + {if(65 <= c) + {if(97 <= c) + {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} + else + if(! (71 <= c))return (c - 65 | 0) + 10 | 0} + else + if(! (9 < c - 48 >>> 0))return c - 48 | 0; + 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)); + 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} + return caml_string_of_bytes(result)}} + var + Stdlib_Digest= + [0, + compare$9, + equal$9, + string, + bytes, + substring, + subbytes, + file, + output$0, + input$0, + to_hex, + from_hex]; + caml_register_global(814,Stdlib_Digest,"Stdlib__Digest"); + function new_state(param){return [0,caml_make_vect(55,0),0]} + function assign(st1,st2) + {blit$1(st2[1],0,st1[1],0,55);st1[2] = st2[2];return 0} + function full_init(s,seed) + {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_; + for(;;) + {var + j=i % 55 | 0, + k=caml_mod(i,l), + 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} + break}} + s[2] = 0; + return 0}} + function make$3(seed) + {var result=new_state(0);full_init(result,seed);return result} + function make_self_init(param){return make$3(caml_sys_random_seed(0))} + function copy$5(s){var result=new_state(0);assign(result,s);return result} + 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, + newval= + caml_check_bound(s[1],_oA_)[1 + _oA_] + + + (curval ^ (curval >>> 25 | 0) & 31) + | + 0, + newval30=newval & 1073741823, + _oB_=s[2]; + caml_check_bound(s[1],_oB_)[1 + _oB_] = newval30; + return newval30} + function intaux(s,n) + {for(;;) + {var r=bits(s),v=caml_mod(r,n); + if(((1073741823 - n | 0) + 1 | 0) < (r - v | 0))continue; + return v}} + function int$0(s,bound) + {if(! (1073741823 < bound) && 0 < bound)return intaux(s,bound); + return invalid_arg(cst_Random_int)} + function full_int(s,bound) + {if(0 < bound) + {if(1073741823 < bound) + for(;;) + {var b1=bits(s),b2=bits(s); + if(bound <= 2147483647) + var bpos=(b2 & 1073725440) << 1 | b1 >>> 15 | 0,r=bpos; + else + var + b3=bits(s), + bpos$0= + ((b3 & 1073741312) << 12 | b2 >>> 9 | 0) + << + 20 + | + b1 + >>> + 10 + | + 0, + r=bpos$0; + var v=caml_mod(r,bound); + if(((2147483647 - bound | 0) + 1 | 0) < (r - v | 0))continue; + return v} + return intaux(s,bound)} + return invalid_arg(cst_Random_full_int)} + function int32(s,bound) + {if(caml_lessequal(bound,0))return invalid_arg(cst_Random_int32); + for(;;) + {var b1=bits(s),b2=(bits(s) & 1) << 30,r=b1 | b2,v=caml_mod(r,bound); + if(caml_greaterthan(r - v | 0,(2147483647 - bound | 0) + 1 | 0)) + continue; + return v}} + function int64(s,bound) + {if(caml_lessequal(bound,_cg_))return invalid_arg(cst_Random_int64); + for(;;) + {var + b1=caml_int64_of_int32(bits(s)), + b2=caml_int64_shift_left(caml_int64_of_int32(bits(s)),30), + b3=caml_int64_shift_left(caml_int64_of_int32(bits(s) & 7),60), + r=caml_int64_or(b1,caml_int64_or(b2,b3)), + v=runtime.caml_int64_mod(r,bound); + if + (caml_greaterthan + (caml_int64_sub(r,v), + caml_int64_add(caml_int64_sub(max_int$2,bound),_cf_))) + continue; + return v}} + function nativeint(s,bound){return int32(s,bound)} + function float$0(s,bound) + {var r1=bits(s),r2=bits(s); + return (r1 / 1073741824. + r2) / 1073741824. * bound} + function bool(s){return 0 === (bits(s) & 1)?1:0} + function bits32(s) + {var b1=bits(s) >>> 14 | 0,b2=bits(s) >>> 14 | 0;return b1 | b2 << 16} + function bits64(s) + {var + b1=caml_int64_shift_right_unsigne(caml_int64_of_int32(bits(s)),9), + b2=caml_int64_shift_right_unsigne(caml_int64_of_int32(bits(s)),9), + b3=caml_int64_shift_right_unsigne(caml_int64_of_int32(bits(s)),8); + return caml_int64_or + (b1, + 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]; + 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)} + function int32$0(bound){return int32(default$0,bound)} + function nativeint$0(bound){return nativeint(default$0,bound)} + function int64$0(bound){return int64(default$0,bound)} + function float$1(scale){return float$0(default$0,scale)} + function bool$0(param){return bool(default$0)} + function bits32$0(param){return bits32(default$0)} + function bits64$0(param){return bits64(default$0)} + function nativebits$0(param){return nativebits(default$0)} + function full_init$0(seed){return full_init(default$0,seed)} + function init$5(seed){return full_init(default$0,[0,seed])} + function self_init(param){return full_init$0(caml_sys_random_seed(0))} + function get_state(param){return copy$5(default$0)} + function set_state(s){return assign(default$0,s)} + var + _ci_= + [0, + make$3, + make_self_init, + copy$5, + bits, + int$0, + full_int, + int32, + nativeint, + int64, + float$0, + bool, + bits32, + bits64, + nativebits], + Stdlib_Random= + [0, + init$5, + full_init$0, + self_init, + bits$0, + int$1, + full_int$0, + int32$0, + nativeint$0, + int64$0, + float$1, + bool$0, + bits32$0, + bits64$0, + nativebits$0, + _ci_, + 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_} + 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_; + 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 + 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)}]; + function power_2_above(x,n) + {var x$0=x; + for(;;) + {if(n <= x$0)return x$0; + if(max_array_length < (x$0 * 2 | 0))return x$0; + var x$1=x$0 * 2 | 0,x$0=x$1; + continue}} + function create$3(opt,initial_size) + {if(opt)var sth=opt[1],random=sth;else var random=randomized[1]; + 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_); + 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_} + function reset$0(h) + {var len=h[2].length - 1; + if(4 <= h.length - 1 && len !== abs(h[4])) + {h[1] = 0;h[2] = caml_make_vect(abs(h[4]),0);return 0} + return clear$2(h)} + function copy_bucketlist(param) + {if(param) + {var + key=param[1], + data=param[2], + next=param[3], + prec$0=[0,key,data,next], + prec=prec$0, + param$0=next; + for(;;) + {if(param$0) + {var + key$0=param$0[1], + data$0=param$0[2], + next$0=param$0[3], + r=[0,key$0,data$0,next$0]; + prec[3] = r; + var prec=r,param$0=next$0; + continue} + 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_]} + 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_; + a: + for(;;) + {var cell$1=caml_check_bound(odata,i$0)[1 + i$0],cell=cell$1; + for(;;) + {if(cell) + {var + key=cell[1], + data=cell[2], + next=cell[3], + cell$0=inplace?cell:[0,key,data,0], + nidx=caml_call1(indexfun,key), + match=caml_check_bound(ndata_tail,nidx)[1 + nidx]; + if(match) + match[3] = cell$0; + else + caml_check_bound(ndata,nidx)[1 + nidx] = cell$0; + 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} + break} + break}} + if(inplace) + {var _ok_=nsize - 1 | 0,_oj_=0; + if(! (_ok_ < 0)) + {var i=_oj_; + 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} + break}} + var _ol_=0} + else + var _ol_=inplace; + return _ol_} + 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_) + {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_} + function iter$10(f,h) + {function do_bucket(param) + {var param$0=param; + for(;;) + {if(param$0) + {var key=param$0[1],data=param$0[2],next=param$0[3]; + caml_call2(f,key,data); + var param$0=next; + continue} + return 0}} + 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_; + for(;;) + {do_bucket(caml_check_bound(d,i)[1 + i]); + var _of_=i + 1 | 0; + if(_oc_ !== i){var i=_of_;continue} + break}} + var _od_=1 - old_trav,_oe_=_od_?flip_ongoing_traversal(h):_od_; + return _oe_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(old_trav)throw exn; + flip_ongoing_traversal(h); + throw exn}} + function filter_map_inplace_bucket(f,h,i,prec,slot) + {var prec$0=prec,slot$0=slot; + for(;;) + {if(slot$0) + {var + key=slot$0[1], + data=slot$0[2], + next=slot$0[3], + match=caml_call2(f,key,data); + if(match) + {var data$0=match[1]; + if(prec$0) + prec$0[3] = slot$0; + else + caml_check_bound(h[2],i)[1 + i] = slot$0; + slot$0[2] = data$0; + var prec$0=slot$0,slot$0=next; + continue} + h[1] = h[1] - 1 | 0; + var slot$0=next; + continue} + return prec$0 + ?(prec$0[3] = 0,0) + :(caml_check_bound(h[2],i)[1 + i] = 0,0)}} + function filter_map_inplace(f,h) + {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_; + 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} + break}} + var _n__=1 - old_trav,_n$_=_n__?flip_ongoing_traversal(h):_n__; + return _n$_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(old_trav)throw exn; + flip_ongoing_traversal(h); + throw exn}} + function fold$4(f,h,init) + {function do_bucket(b,accu) + {var b$0=b,accu$0=accu; + for(;;) + {if(b$0) + {var + key=b$0[1], + data=b$0[2], + next=b$0[3], + accu$1=caml_call3(f,key,data,accu$0), + b$0=next, + accu$0=accu$1; + continue} + return accu$0}} + 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_; + 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} + break}} + if(1 - old_trav)flip_ongoing_traversal(h); + var _n5_=accu[1]; + return _n5_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(old_trav)throw exn; + flip_ongoing_traversal(h); + throw exn}} + function bucket_length(accu,param) + {var accu$0=accu,param$0=param; + for(;;) + {if(param$0) + {var + param$1=param$0[3], + accu$1=accu$0 + 1 | 0, + accu$0=accu$1, + param$0=param$1; + continue} + return accu$0}} + function stats(h) + {var + _nZ_=h[2], + _n0_=0, + mbl= + fold_left$3 + (function(m,b){return max$1(m,bucket_length(0,b))},_n0_,_nZ_), + histo=caml_make_vect(mbl + 1 | 0,0), + _n1_=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_; + return 0}, + _n1_); + return [0,h[1],h[2].length - 1,mbl,histo]} + function to_seq$9(tbl) + {var tbl_data=tbl[2]; + function aux(i,buck,param) + {var i$0=i,buck$0=buck; + 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_)}]} + if(i$0 === tbl_data.length - 1)return 0; + var + buck$1=caml_check_bound(tbl_data,i$0)[1 + i$0], + i$1=i$0 + 1 | 0, + i$0=i$1, + buck$0=buck$1; + continue}} + var _nV_=0,_nW_=0; + return function(_nX_){return aux(_nW_,_nV_,_nX_)}} + 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_)}} + 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_)}} + 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_} + 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_} + 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(;;) + {if(c) + {var k=c[1],next=c[3]; + if(caml_call2(H[1],k,key)) + {h[1] = h[1] - 1 | 0; + return prec + ?(prec[3] = next,0) + :(caml_check_bound(h[2],i)[1 + i] = next,0)} + var prec=c,c=next; + continue} + return 0}} + function find(h,key) + {var _nK_=key_index(h,key),match=caml_check_bound(h[2],_nK_)[1 + _nK_]; + if(match) + {var k1=match[1],d1=match[2],next1=match[3]; + if(caml_call2(H[1],key,k1))return d1; + if(next1) + {var k2=next1[1],d2=next1[2],next2=next1[3]; + if(caml_call2(H[1],key,k2))return d2; + if(next2) + {var k3=next2[1],d3=next2[2],next3=next2[3]; + if(caml_call2(H[1],key,k3))return d3; + var param=next3; + for(;;) + {if(param) + {var k=param[1],data=param[2],next=param[3]; + if(caml_call2(H[1],key,k))return data; + var param=next; + continue} + throw Not_found}} + throw Not_found} + 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_]; + if(match) + {var k1=match[1],d1=match[2],next1=match[3]; + if(caml_call2(H[1],key,k1))return [0,d1]; + if(next1) + {var k2=next1[1],d2=next1[2],next2=next1[3]; + if(caml_call2(H[1],key,k2))return [0,d2]; + if(next2) + {var k3=next2[1],d3=next2[2],next3=next2[3]; + if(caml_call2(H[1],key,k3))return [0,d3]; + var param=next3; + for(;;) + {if(param) + {var k=param[1],data=param[2],next=param[3]; + if(caml_call2(H[1],key,k))return [0,data]; + var param=next; + continue} + return 0}} + return 0} + return 0} + return 0} + function find_all(h,key) + {function find_in_bucket(param) + {var param$0=param; + for(;;) + {if(param$0) + {var k=param$0[1],d=param$0[2],next=param$0[3]; + if(caml_call2(H[1],k,key))return [0,d,find_in_bucket(next)]; + 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_])} + function replace(h,key,data) + {var + i=key_index(h,key), + param$0=caml_check_bound(h[2],i)[1 + i], + param=param$0; + for(;;) + {if(param) + {var k=param[1],next=param[3]; + if(! caml_call2(H[1],k,key)){var param=next;continue} + param[1] = key; + param[2] = data; + var _nF_=0} + else + var _nF_=1; + if(_nF_) + {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_} + else + var _nH_=_nF_; + return _nH_}} + function mem(h,key) + {var + _nE_=key_index(h,key), + param$0=caml_check_bound(h[2],_nE_)[1 + _nE_], + 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 param=next; + continue} + return 0}} + function add_seq(tbl,i) + {return iter + (function(param) + {var v=param[2],k=param[1];return add(tbl,k,v)}, + i)} + function replace_seq(tbl,i) + {return iter + (function(param) + {var v=param[2],k=param[1];return replace(tbl,k,v)}, + i)} + function of_seq(i){var tbl=create$3(0,16);replace_seq(tbl,i);return tbl} + return [0, + create$3, + clear$2, + reset$0, + copy$6, + add, + remove, + find, + find_opt, + find_all, + replace, + mem, + iter$10, + filter_map_inplace, + fold$4, + length$5, + stats, + to_seq$9, + to_seq_keys, + to_seq_values, + add_seq, + replace_seq, + of_seq]} + function Make$0(H) + {var equal=H[1]; + function hash(seed,x){return caml_call1(H[2],x)} + var + include=MakeSeeded([0,equal,hash]), + clear=include[2], + reset=include[3], + copy=include[4], + add=include[5], + remove=include[6], + find=include[7], + find_opt=include[8], + find_all=include[9], + replace=include[10], + mem=include[11], + iter=include[12], + filter_map_inplace=include[13], + fold=include[14], + length=include[15], + stats=include[16], + to_seq=include[17], + to_seq_keys=include[18], + 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)} + function of_seq(i) + {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} + return [0, + create, + clear, + reset, + copy, + add, + remove, + find, + find_opt, + find_all, + replace, + mem, + iter, + filter_map_inplace, + fold, + length, + stats, + to_seq, + to_seq_keys, + to_seq_values, + add_seq, + replace_seq, + of_seq]} + function hash$1(x){return caml_hash(10,100,0,x)} + function hash_param(n1,n2,x){return caml_hash(n1,n2,0,x)} + function seeded_hash(seed,x){return caml_hash(10,100,seed,x)} + function key_index(h,key) + {return 4 <= h.length - 1 + ?caml_hash(10,100,h[3],key) & (h[2].length - 1 - 1 | 0) + :invalid_arg(cst_Hashtbl_unsupported_hash_t)} + function add$0(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 _nB_=h[2].length - 1 << 1 < h[1]?1:0; + return _nB_?resize$0(key_index,h):_nB_} + 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(;;) + {if(c) + {var k=c[1],next=c[3]; + if(0 === caml_compare(k,key)) + {h[1] = h[1] - 1 | 0; + return prec + ?(prec[3] = next,0) + :(caml_check_bound(h[2],i)[1 + i] = next,0)} + var prec=c,c=next; + continue} + return 0}} + function find$1(h,key) + {var _nA_=key_index(h,key),match=caml_check_bound(h[2],_nA_)[1 + _nA_]; + if(match) + {var k1=match[1],d1=match[2],next1=match[3]; + if(0 === caml_compare(key,k1))return d1; + if(next1) + {var k2=next1[1],d2=next1[2],next2=next1[3]; + if(0 === caml_compare(key,k2))return d2; + if(next2) + {var k3=next2[1],d3=next2[2],next3=next2[3]; + if(0 === caml_compare(key,k3))return d3; + var param=next3; + for(;;) + {if(param) + {var k=param[1],data=param[2],next=param[3]; + if(0 === caml_compare(key,k))return data; + var param=next; + continue} + throw Not_found}} + throw Not_found} + 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_]; + if(match) + {var k1=match[1],d1=match[2],next1=match[3]; + if(0 === caml_compare(key,k1))return [0,d1]; + if(next1) + {var k2=next1[1],d2=next1[2],next2=next1[3]; + if(0 === caml_compare(key,k2))return [0,d2]; + if(next2) + {var k3=next2[1],d3=next2[2],next3=next2[3]; + if(0 === caml_compare(key,k3))return [0,d3]; + var param=next3; + for(;;) + {if(param) + {var k=param[1],data=param[2],next=param[3]; + if(0 === caml_compare(key,k))return [0,data]; + var param=next; + continue} + return 0}} + return 0} + return 0} + return 0} + function find_all$0(h,key) + {function find_in_bucket(param) + {var param$0=param; + for(;;) + {if(param$0) + {var k=param$0[1],data=param$0[2],next=param$0[3]; + if(0 === caml_compare(k,key))return [0,data,find_in_bucket(next)]; + 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_])} + function replace(h,key,data) + {var + i=key_index(h,key), + param$0=caml_check_bound(h[2],i)[1 + i], + param=param$0; + for(;;) + {if(param) + {var k=param[1],next=param[3]; + if(0 !== caml_compare(k,key)){var param=next;continue} + param[1] = key; + param[2] = data; + var _nv_=0} + else + var _nv_=1; + if(_nv_) + {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_} + else + var _nx_=_nv_; + return _nx_}} + function mem$2(h,key) + {var + _nu_=key_index(h,key), + param$0=caml_check_bound(h[2],_nu_)[1 + _nu_], + 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 param=next; + continue} + return 0}} + function add_seq$2(tbl,i) + {return iter + (function(param) + {var v=param[2],k=param[1];return add$0(tbl,k,v)}, + i)} + function replace_seq(tbl,i) + {return iter + (function(param) + {var v=param[2],k=param[1];return replace(tbl,k,v)}, + i)} + function of_seq$7(i){var tbl=create$3(0,16);replace_seq(tbl,i);return tbl} + function rebuild(opt,h) + {if(opt)var sth=opt[1],random=sth;else var random=randomized[1]; + 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_); + 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; + insert_all_buckets + (function(_ns_){return key_index(h$0,_ns_)},_nr_,_nq_,_np_); + return h$0} + var + Stdlib_Hashtbl= + [0, + create$3, + clear$2, + reset$0, + copy$6, + add$0, + find$1, + find_opt$1, + find_all$0, + mem$2, + remove, + replace, + iter$10, + filter_map_inplace, + fold$4, + length$5, + randomize, + is_randomized, + rebuild, + stats, + to_seq$9, + to_seq_keys, + to_seq_values, + add_seq$2, + replace_seq, + of_seq$7, + Make$0, + MakeSeeded, + hash$1, + seeded_hash, + hash_param, + 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); + 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_} + 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)} + function get_copy(e,o) + {raise_if_invalid_offset$0(e,o,cst_Weak_get_copy); + return runtime.caml_weak_get_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)} + function blit$4(e1,o1,e2,o2,l) + {if + (0 + <= + l + && + 0 + <= + o1 + && + ! + ((length$6(e1) - l | 0) < o1) + && + 0 + <= + o2 + && + ! + ((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_} + 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 i=ofs; + for(;;) + {set$1(ar,i,x); + var _ne_=i + 1 | 0; + if(_nd_ !== i){var i=_ne_;continue} + break}} + return 0} + throw [0,Invalid_argument,cst_Weak_fill]} + function Make$1(H) + {var emptybucket=weak_create(0); + function get_index(t,h){return caml_mod(h & 2147483647,t[1].length - 1)} + var limit=7; + function create(sz) + {var + sz$0=7 <= sz?sz:7, + sz$1=max_array_length < sz$0?max_array_length:sz$0; + return [0, + caml_make_vect(sz$1,emptybucket), + caml_make_vect(sz$1,[0]), + limit, + 0, + 0]} + function clear(t) + {var _nb_=t[1].length - 1 - 1 | 0,_na_=0; + if(! (_nb_ < 0)) + {var i=_na_; + 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} + break}} + t[3] = limit; + t[4] = 0; + return 0} + function fold(f,t,init) + {var _m$_=t[1],i=0; + return fold_right$2 + (function(b,accu$1) + {var i$0=i,accu=accu$1; + for(;;) + {if(length$6(b) <= i$0)return accu; + var match=get$2(b,i$0); + if(match) + {var + v=match[1], + accu$0=caml_call2(f,v,accu), + i$1=i$0 + 1 | 0, + i$0=i$1, + accu=accu$0; + continue} + var i$2=i$0 + 1 | 0,i$0=i$2; + continue}}, + _m$_, + init)} + function iter(f,t) + {var _m__=t[1],i=0; + return iter$5 + (function(b) + {var i$0=i; + for(;;) + {if(length$6(b) <= i$0)return 0; + var match=get$2(b,i$0); + if(match) + {var v=match[1]; + caml_call1(f,v); + var i$1=i$0 + 1 | 0,i$0=i$1; + continue} + var i$2=i$0 + 1 | 0,i$0=i$2; + continue}}, + _m__)} + 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, + 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; + return fold_right$2 + (function(_m7_,_m8_){return count_bucket(_m6_,_m7_,_m8_)}, + _m5_, + _m4_)} + function add_aux(t,setter,d,h,index) + {var + bucket$0=caml_check_bound(t[1],index)[1 + index], + hashes=caml_check_bound(t[2],index)[1 + index], + sz=length$6(bucket$0), + i$3=0; + for(;;) + {if(sz <= i$3) + {var + newsz= + min$1(((3 * sz | 0) / 2 | 0) + 3 | 0,max_array_length - 2 | 0); + if(newsz <= sz)failwith(cst_Weak_Make_hash_bucket_cann); + var + newbucket$0=weak_create(newsz), + newhashes=caml_make_vect(newsz,0); + blit$4(bucket$0,0,newbucket$0,0,sz); + blit$1(hashes,0,newhashes,0,sz); + caml_call3(setter,newbucket$0,sz,d); + 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_) + {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_], + n=length$6(bucket), + prev_len=(((n - 3 | 0) * 2 | 0) + 2 | 0) / 3 | 0, + live=count_bucket(0,bucket,0); + if(live <= prev_len) + {var j$2=length$6(bucket) - 1 | 0,i$0=0,j=j$2; + for(;;) + {if(prev_len <= j) + {if(check$0(bucket,i$0)) + {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 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]} + 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; + 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} + break}} + var _m2_=((t[1].length - 1) / 2 | 0) < t[4]?1:0; + if(_m2_) + {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; + iteri$3 + (function(j,ob) + {var i$0=i; + for(;;) + {if(length$6(ob) <= i$0)return 0; + var match=check$0(ob,i$0); + if(match) + {var + oh=caml_check_bound(t[2],j)[1 + j], + setter$0= + function(i) + {function setter(nb,ni,param){return blit$4(ob,i,nb,ni,1)} + return setter}, + setter=setter$0(i$0), + h=caml_check_bound(oh,i$0)[1 + i$0]; + add_aux(newt,setter,0,h,get_index(newt,h)); + var i$1=i$0 + 1 | 0,i$0=i$1; + continue} + var i$2=i$0 + 1 | 0,i$0=i$2; + continue}}, + _mP_); + t[1] = newt[1]; + t[2] = newt[2]; + t[3] = newt[3]; + t[4] = newt[4]; + t[5] = caml_mod(t[5],newt[1].length - 1); + return 0} + t[3] = max_int; + t[4] = 0; + return 0} + return _m2_} + 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; + return 0}} + function add(t,d) + {var h=caml_call1(H[2],d); + return add_aux(t,set$1,[0,d],h,get_index(t,h))} + function find_or(t,d,ifnotfound) + {var + h=caml_call1(H[2],d), + index=get_index(t,h), + bucket=caml_check_bound(t[1],index)[1 + index], + hashes=caml_check_bound(t[2],index)[1 + index], + sz=length$6(bucket), + i=0; + for(;;) + {if(sz <= i)return caml_call2(ifnotfound,h,index); + if(h === caml_check_bound(hashes,i)[1 + i]) + {var match=get_copy(bucket,i); + if(match) + {var v=match[1]; + if(caml_call2(H[1],v,d)) + {var match$0=get$2(bucket,i); + if(match$0){var v$0=match$0[1];return v$0} + var i$0=i + 1 | 0,i=i$0; + continue}} + var i$1=i + 1 | 0,i=i$1; + continue} + var i$2=i + 1 | 0,i=i$2; + continue}} + function merge(t,d) + {return find_or + (t, + d, + function(h,index){add_aux(t,set$1,[0,d],h,index);return d})} + function find(t,d) + {return find_or(t,d,function(h,index){throw Not_found})} + function find_opt(t,d) + {var + h=caml_call1(H[2],d), + index=get_index(t,h), + bucket=caml_check_bound(t[1],index)[1 + index], + hashes=caml_check_bound(t[2],index)[1 + index], + sz=length$6(bucket), + i=0; + for(;;) + {if(sz <= i)return 0; + if(h === caml_check_bound(hashes,i)[1 + i]) + {var match=get_copy(bucket,i); + if(match) + {var v=match[1]; + if(caml_call2(H[1],v,d)) + {var v$0=get$2(bucket,i); + if(v$0)return v$0; + var i$0=i + 1 | 0,i=i$0; + continue}} + var i$1=i + 1 | 0,i=i$1; + continue} + var i$2=i + 1 | 0,i=i$2; + continue}} + function find_shadow(t,d,iffound,ifnotfound) + {var + h=caml_call1(H[2],d), + index=get_index(t,h), + bucket=caml_check_bound(t[1],index)[1 + index], + hashes=caml_check_bound(t[2],index)[1 + index], + sz=length$6(bucket), + i=0; + for(;;) + {if(sz <= i)return ifnotfound; + if(h === caml_check_bound(hashes,i)[1 + i]) + {var match=get_copy(bucket,i); + if(match) + {var v=match[1]; + if(caml_call2(H[1],v,d))return caml_call2(iffound,bucket,i)} + var i$0=i + 1 | 0,i=i$0; + continue} + 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_)} + function mem(t,d) + {var _mN_=0;return find_shadow(t,d,function(w,i){return 1},_mN_)} + function find_all(t,d) + {var + h=caml_call1(H[2],d), + index=get_index(t,h), + bucket=caml_check_bound(t[1],index)[1 + index], + hashes=caml_check_bound(t[2],index)[1 + index], + sz=length$6(bucket), + i=0, + accu=0; + for(;;) + {if(sz <= i)return accu; + if(h === caml_check_bound(hashes,i)[1 + i]) + {var match=get_copy(bucket,i); + if(match) + {var v=match[1]; + if(caml_call2(H[1],v,d)) + {var match$0=get$2(bucket,i); + if(match$0) + {var + v$0=match$0[1], + accu$0=[0,v$0,accu], + i$0=i + 1 | 0, + i=i$0, + accu=accu$0; + continue} + var i$1=i + 1 | 0,i=i$1; + continue}} + var i$2=i + 1 | 0,i=i$2; + continue} + var i$3=i + 1 | 0,i=i$3; + continue}} + function stats(t) + {var len=t[1].length - 1,lens=map$7(length$6,t[1]); + sort(caml_int_compare,lens); + var + _mF_=0, + totlen= + fold_left$3(function(_mM_,_mL_){return _mM_ + _mL_ | 0},_mF_,lens), + _mG_=len - 1 | 0, + _mI_=len / 2 | 0, + _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_]} + return [0, + create, + clear, + merge, + add, + remove, + find, + find_opt, + find_all, + mem, + iter, + fold, + count, + stats]} + var + Stdlib_Weak= + [0, + weak_create, + length$6, + set$1, + get$2, + get_copy, + check$0, + fill$2, + blit$4, + Make$1]; + caml_register_global(817,Stdlib_Weak,"Stdlib__Weak"); + function id$0(x){return x} + var + String_tag=[248,cst_Stdlib_Format_String_tag,caml_fresh_oo_id(0)], + size=0, + unknown=-1; + function pp_enqueue(state,token) + {state[13] = state[13] + token[3] | 0;return add(token,state[28])} + var pp_infinity=1000000010; + function pp_output_string(state,s) + {return caml_call3(state[17],s,0,caml_ml_string_length(s))} + function pp_output_newline(state){return caml_call1(state[19],0)} + function format_pp_text(state,size,text) + {state[9] = state[9] - size | 0; + pp_output_string(state,text); + 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_} + function break_new_line(state,param,width) + {var after=param[3],offset=param[2],before=param[1]; + format_string(state,before); + pp_output_newline(state); + state[11] = 1; + var + indent=(state[6] - width | 0) + offset | 0, + real_indent=min$1(state[8],indent); + state[10] = real_indent; + 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_same_line(state,param) + {var after=param[3],width=param[2],before=param[1]; + format_string(state,before); + state[9] = state[9] - width | 0; + caml_call1(state[20],width); + return format_string(state,after)} + function format_pp_token(state,size$0,param) + {if(typeof param === "number") + switch(param) + {case 0: + var match$3=top_opt(state[3]); + if(match$3) + {var + match$4=match$3[1], + tabs=match$4[1], + add_tab= + function(n,ls) + {if(ls) + {var l=ls[2],x=ls[1]; + return caml_lessthan(n,x)?[0,n,ls]:[0,x,add_tab(n,l)]} + return [0,n,0]}; + tabs[1] = add_tab(state[6] - state[9] | 0,tabs[1]); + return 0} + return 0; + case 1:pop_opt(state[2]);return 0; + case 2:pop_opt(state[3]);return 0; + case 3: + var match$5=top_opt(state[2]); + if(match$5) + {var match$6=match$5[1],width$0=match$6[2]; + 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 match$1=take_opt(state[28]); + if(match$1) + {var match$2=match$1[1],size=match$2[1],length=match$2[3]; + state[12] = state[12] - length | 0; + state[9] = state[9] + size | 0; + return 0} + return 0} + return _mB_; + default: + var match$7=pop_opt(state[5]); + if(match$7) + {var tag_name=match$7[1],marker=caml_call1(state[25],tag_name); + return pp_output_string(state,marker)} + return 0} + else + switch(param[0]) + {case 0:var s=param[1];return format_pp_text(state,size$0,s); + case 1: + var + breaks=param[2], + fits=param[1], + off=breaks[2], + before=breaks[1], + match$8=top_opt(state[2]); + if(match$8) + {var match$9=match$8[1],width$1=match$9[2],box_type$0=match$9[1]; + switch(box_type$0) + {case 0:return break_same_line(state,fits); + case 1:return break_new_line(state,breaks,width$1); + case 2:return break_new_line(state,breaks,width$1); + case 3: + return state[9] < (size$0 + caml_ml_string_length(before) | 0) + ?break_new_line(state,breaks,width$1) + :break_same_line(state,fits); + case 4: + return state[11] + ?break_same_line(state,fits) + :state[9] < (size$0 + caml_ml_string_length(before) | 0) + ?break_new_line(state,breaks,width$1) + :((state[6] - width$1 | 0) + off | 0) < state[10] + ?break_new_line(state,breaks,width$1) + :break_same_line(state,fits); + default:return break_same_line(state,fits)}} + return 0; + case 2: + var + off$0=param[2], + n=param[1], + 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]; + 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} + else + var _mD_=first; + var tab=_mD_; + break}} + else + var tab=insertion_point; + var offset=tab - insertion_point | 0; + return 0 <= offset + ?break_same_line(state,[0,cst$69,offset + n | 0,cst$68]) + :break_new_line + (state,[0,cst$71,tab + off$0 | 0,cst$70],state[6])} + return 0; + case 3: + var + ty=param[2], + off$1=param[1], + insertion_point$0=state[6] - state[9] | 0; + if(state[8] < insertion_point$0) + {var match=top_opt(state[2]); + if(match) + {var match$0=match[1],width=match$0[2],box_type=match$0[1]; + if(state[9] < width && ! (3 < box_type - 1 >>> 0)) + break_line(state,width)} + else + pp_output_newline(state)} + var + width$2=state[9] - off$1 | 0, + box_type$1=1 === ty?1:state[9] < size$0?ty:5; + return push([0,box_type$1,width$2],state[2]); + case 4:var tbox=param[1];return push(tbox,state[3]); + default: + var tag_name$0=param[1],marker$0=caml_call1(state[24],tag_name$0); + pp_output_string(state,marker$0); + return push(tag_name$0,state[5])}} + function advance_left(state) + {for(;;) + {var match=peek_opt(state[28]); + if(match) + {var + match$0=match[1], + size=match$0[1], + 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_) + {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 0}} + function enqueue_advance(state,tok) + {pp_enqueue(state,tok);return advance_left(state)} + function enqueue_string_as(state,size,s) + {return enqueue_advance(state,[0,size,[0,s],size])} + function initialize_scan_stack(stack) + {clear(stack); + var queue_elem=[0,unknown,_cm_,0]; + return push([0,-1,queue_elem],stack)} + function set_size(state,ty) + {var match=top_opt(state[1]); + if(match) + {var + match$0=match[1], + queue_elem=match$0[2], + left_total=match$0[1], + _mu_=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]) + {case 3: + var + _mx_=1 - ty, + _my_= + _mx_ + ?(queue_elem[1] = state[13] + _mu_ | 0,pop_opt(state[1]),0) + :_mx_; + return _my_; + case 1: + case 2: + var + _mw_= + ty?(queue_elem[1] = state[13] + _mu_ | 0,pop_opt(state[1]),0):ty; + return _mw_ + } + return 0} + return 0} + function scan_push(state,b,token) + {pp_enqueue(state,token); + if(b)set_size(state,1); + var elem=[0,state[13],token]; + return push(elem,state[1])} + function pp_open_box_gen(state,indent,br_ty) + {state[14] = state[14] + 1 | 0; + 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; + if(_mq_) + {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} + else + var _mr_=_mq_; + return _mr_} + 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 token=[5,tag_name];return pp_enqueue(state,[0,size,token,0])} + return _mp_} + function pp_close_stag(state,param) + {if(state[23])pp_enqueue(state,[0,size,5,0]); + var _mn_=state[22]; + if(_mn_) + {var match=pop_opt(state[4]); + if(match){var tag_name=match[1];return caml_call1(state[27],tag_name)} + var _mo_=0} + else + var _mo_=_mn_; + return _mo_} + 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} + function pp_set_mark_tags(state,b){state[23] = b;return 0} + function pp_get_print_tags(state,param){return state[22]} + function pp_get_mark_tags(state,param){return state[23]} + function pp_set_tags(state,b) + {pp_set_print_tags(state,b);return pp_set_mark_tags(state,b)} + function pp_get_formatter_stag_function(state,param) + {return [0,state[24],state[25],state[26],state[27]]} + function pp_set_formatter_stag_function(state,param) + {var pct=param[4],pot=param[3],mct=param[2],mot=param[1]; + state[24] = mot; + state[25] = mct; + state[26] = pot; + state[27] = pct; + return 0} + function pp_rinit(state) + {state[12] = 1; + state[13] = 1; + clear$0(state[28]); + initialize_scan_stack(state[1]); + clear(state[2]); + clear(state[3]); + clear(state[4]); + clear(state[5]); + state[10] = 0; + state[14] = 0; + 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_); + for(;;) + {if(1 < state[14]){pp_close_box(state,0);continue} + state[13] = pp_infinity; + advance_left(state); + 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_} + function pp_print_as(state,isize,s) + {return pp_print_as_size(state,isize,s)} + function pp_print_string(state,s) + {return pp_print_as(state,caml_ml_string_length(s),s)} + function pp_print_bytes(state,s) + {return pp_print_as(state,caml_ml_bytes_length(s),of_bytes(s))} + function pp_print_int(state,i) + {return pp_print_string(state,caml_string_of_jsbytes("" + i))} + function pp_print_float(state,f) + {return pp_print_string(state,to_string(f))} + function pp_print_bool(state,b) + {return pp_print_string(state,string_of_bool(b))} + function pp_print_char(state,c){return pp_print_as(state,1,make$1(1,c))} + function pp_open_hbox(state,param){return pp_open_box_gen(state,0,0)} + function pp_open_vbox(state,indent) + {return pp_open_box_gen(state,indent,1)} + function pp_open_hvbox(state,indent) + {return pp_open_box_gen(state,indent,2)} + function pp_open_hovbox(state,indent) + {return pp_open_box_gen(state,indent,3)} + function pp_open_box(state,indent){return pp_open_box_gen(state,indent,4)} + function pp_print_newline(state,param) + {pp_flush_queue(state,1);return caml_call1(state[18],0)} + 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_} + 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_} + 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_) + {var + size=- state[13] | 0, + token=[1,fits,breaks], + length= + (caml_ml_string_length(before) + width | 0) + + + caml_ml_string_length(after) + | + 0, + elem=[0,size,token,length]; + return scan_push(state,1,elem)} + return _mi_} + 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])} + function pp_print_space(state,param){return pp_print_break(state,1,0)} + 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 elem=[0,size,[4,[0,[0,0]]],0];return enqueue_advance(state,elem)} + return _mh_} + 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 elem=[0,size,2,0]; + enqueue_advance(state,elem); + state[14] = state[14] - 1 | 0; + var _mg_=0} + else + var _mg_=_mf_} + else + var _mg_=_me_; + return _mg_} + function pp_print_tbreak(state,width,offset) + {var _md_=state[14] < state[15]?1:0; + if(_md_) + {var size=- state[13] | 0,elem=[0,size,[2,width,offset],width]; + return scan_push(state,1,elem)} + return _md_} + 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_} + function pp_set_max_boxes(state,n) + {var _ma_=1 < n?1:0,_mb_=_ma_?(state[15] = n,0):_ma_;return _mb_} + function pp_get_max_boxes(state,param){return state[15]} + function pp_over_max_boxes(state,param) + {return state[14] === state[15]?1:0} + function pp_set_ellipsis_text(state,s){state[16] = s;return 0} + 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 n=pp_limit(n$1); + state[7] = n; + state[8] = state[6] - state[7] | 0; + return pp_rinit(state)} + return _l__} + return _l$_} + 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 n$0=pp_limit(n); + state[6] = n$0; + var + new_max_indent= + state[8] <= state[6] + ?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_} + function validate_geometry(param) + {var margin=param[2],max_indent=param[1]; + return 2 <= max_indent?margin <= max_indent?_cn_:_co_:_cp_} + function check_geometry(geometry) + {var match=validate_geometry(geometry);return 0 === match[0]?1:0} + function pp_get_margin(state,param){return state[6]} + function pp_set_full_geometry(state,param) + {var margin=param[2],max_indent=param[1]; + pp_set_margin(state,margin); + pp_set_max_indent(state,max_indent); + return 0} + function pp_set_geometry(state,max_indent,margin) + {var geometry=[0,max_indent,margin],match=validate_geometry(geometry); + if(0 === match[0])return pp_set_full_geometry(state,geometry); + var msg=match[1]; + throw [0,Invalid_argument,cat(cst_Format_pp_set_geometry,msg)]} + function pp_safe_set_geometry(state,max_indent,margin) + {var geometry=[0,max_indent,margin],match=validate_geometry(geometry); + return 0 === match[0]?pp_set_full_geometry(state,geometry):0} + function pp_get_geometry(state,param){return [0,state[8],state[6]]} + function pp_update_geometry(state,update) + {var geometry=pp_get_geometry(state,0); + return pp_set_full_geometry(state,caml_call1(update,geometry))} + function pp_set_formatter_out_functions(state,param) + {var j=param[5],i=param[4],h=param[3],g=param[2],f=param[1]; + state[17] = f; + state[18] = g; + state[19] = h; + state[20] = i; + state[21] = j; + return 0} + function pp_get_formatter_out_functions(state,param) + {return [0,state[17],state[18],state[19],state[20],state[21]]} + function pp_set_formatter_output_functi(state,f,g) + {state[17] = f;state[18] = g;return 0} + function pp_get_formatter_output_functi(state,param) + {return [0,state[17],state[18]]} + function display_newline(state,param) + {return caml_call3(state[17],cst$76,0,1)} + var blank_line=make$1(80,32); + function display_indent(state,n) + {var n$0=n; + for(;;) + {var _l8_=0 < n$0?1:0; + if(_l8_) + {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_}} + function pp_set_formatter_out_channel(state,oc) + {state[17] + = + function(_l5_,_l6_,_l7_){return output_substring(oc,_l5_,_l6_,_l7_)}; + 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_)}; + return 0} + function default_pp_mark_open_tag(param) + {if(param[1] === String_tag) + {var s=param[2];return cat(cst$78,cat(s,cst$77))} + return cst$79} + function default_pp_mark_close_tag(param) + {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 pp_make_formatter(f,g,h,i,j) + {var pp_queue=create$1(0),sys_tok=[0,unknown,_cq_,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); + return [0, + scan_stack, + create$0(0), + _lZ_, + _lY_, + _lX_, + 78, + 10, + 68, + 78, + 0, + 1, + 1, + 1, + 1, + max_int, + cst$83, + f, + g, + h, + i, + j, + 0, + 0, + default_pp_mark_open_tag, + default_pp_mark_close_tag, + default_pp_print_open_tag, + default_pp_print_close_tag, + pp_queue]} + function formatter_of_out_functions(out_funs) + {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} + 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_)}; + return ppf} + function formatter_of_out_channel(oc) + {function _lL_(param){return caml_ml_flush(oc)} + return make_formatter + (function(_lM_,_lN_,_lO_) + {return output_substring(oc,_lM_,_lN_,_lO_)}, + _lL_)} + function formatter_of_buffer(b) + {function _lG_(_lK_){return 0} + return make_formatter + (function(_lH_,_lI_,_lJ_) + {return add_substring(b,_lH_,_lI_,_lJ_)}, + _lG_)} + var pp_buffer_size=512; + function pp_make_buffer(param){return create$2(pp_buffer_size)} + var + stdbuf=pp_make_buffer(0), + std_formatter=formatter_of_out_channel(stdout), + err_formatter=formatter_of_out_channel(stderr), + str_formatter=formatter_of_buffer(stdbuf); + function flush_buffer_formatter(buf,ppf) + {pp_flush_queue(ppf,0);var s=contents(buf);reset(buf);return s} + function flush_str_formatter(param) + {return flush_buffer_formatter(stdbuf,str_formatter)} + function make_symbolic_output_buffer(param){return [0,0]} + function clear_symbolic_output_buffer(sob){sob[1] = 0;return 0} + function get_symbolic_output_buffer(sob){return rev(sob[1])} + function flush_symbolic_output_buffer(sob) + {var items=get_symbolic_output_buffer(sob); + clear_symbolic_output_buffer(sob); + return items} + function add_symbolic_output_item(sob,item) + {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 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 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]; + if(param$0[2]) + {var vs=param$0[2]; + caml_call2(pp_v,ppf,_kH_); + 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 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; + var match$0=caml_call1(seq$1,0); + if(match$0) + {var seq$2=match$0[2],v$0=match$0[1]; + caml_call2(pp_v,ppf,v$0); + var seq=seq$2; + for(;;) + {var match=caml_call1(seq,0); + if(match) + {var seq$0=match[2],v=match[1]; + caml_call2(pp_sep,ppf,0); + caml_call2(pp_v,ppf,v); + var seq=seq$0; + continue} + return 0}} + return 0} + function pp_print_text(ppf,s) + {var len=caml_ml_string_length(s),left=[0,0],right=[0,0]; + function flush(param) + {pp_print_string(ppf,sub$0(s,left[1],right[1] - left[1] | 0)); + right[1]++; + left[1] = right[1]; + return 0} + for(;;) + {if(right[1] !== len) + {var match=caml_string_get(s,right[1]); + if(10 === match) + {flush(0);pp_force_newline(ppf,0)} + 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_}} + 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}; + 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) + {if(0 === param[0]){var v=param[1];return caml_call2(ok,ppf,v)} + var e=param[1]; + return caml_call2(error,ppf,e)} + function pp_print_either(left,right,ppf,param) + {if(0 === param[0]){var l=param[1];return caml_call2(left,ppf,l)} + var r=param[1]; + return caml_call2(right,ppf,r)} + function compute_tag(output,tag_acc) + {var buf=create$2(16),ppf=formatter_of_buffer(buf); + caml_call2(output,ppf,tag_acc); + pp_print_flush(ppf,0); + var len=buf[2]; + return 2 <= len?sub$3(buf,1,len - 2 | 0):contents(buf)} + function output_formatting_lit(ppf,fmting_lit) + {if(typeof fmting_lit === "number") + switch(fmting_lit) + {case 0:return pp_close_box(ppf,0); + case 1:return pp_close_tag(ppf,0); + case 2:return pp_print_flush(ppf,0); + case 3:return pp_force_newline(ppf,0); + case 4:return pp_print_newline(ppf,0); + case 5:return pp_print_char(ppf,64); + default:return pp_print_char(ppf,37)} + else + switch(fmting_lit[0]) + {case 0: + var offset=fmting_lit[3],width=fmting_lit[2]; + return pp_print_break(ppf,width,offset); + case 1:return 0; + default: + var c=fmting_lit[1]; + pp_print_char(ppf,64); + return pp_print_char(ppf,c)}} + function output_acc$0(ppf,acc) + {var switch$0=0; + if(typeof acc === "number") + return 0; + else + switch(acc[0]) + {case 0: + var f=acc[2],p=acc[1]; + 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_); + 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 + 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]; + switch$1 = 1; + switch$2 = 1}} + if(! switch$1){var s=acc[2],p$0=_kx_;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]; + switch$0 = 1; + switch$3 = 1; + switch$4 = 1}} + if(! switch$3){var c=acc[2],p$2=_kz_;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]; + switch$5 = 1; + switch$6 = 1}} + if(! switch$5){var s=acc[2],p$0=_kB_;switch$0 = 2} + break; + case 5: + var _kD_=acc[1],switch$7=0; + if(typeof _kD_ === "number" || ! (0 === _kD_[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]; + 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} + break; + case 6: + var f$0=acc[2],p$4=acc[1]; + output_acc$0(ppf,p$4); + return caml_call1(f$0,ppf); + case 7: + var p$5=acc[1];output_acc$0(ppf,p$5);return pp_print_flush(ppf,0); + default: + var msg=acc[2],p$6=acc[1]; + output_acc$0(ppf,p$6); + return invalid_arg(msg)} + switch(switch$0) + {case 0:output_acc$0(ppf,p$1);return pp_print_as_size(ppf,size,s$0); + case 1: + output_acc$0(ppf,p$3); + return pp_print_as_size(ppf,size$0,make$1(1,c$0)); + case 2:output_acc$0(ppf,p$0);return pp_print_string(ppf,s); + default:output_acc$0(ppf,p$2);return pp_print_char(ppf,c)}} + function strput_acc$0(ppf,acc) + {var switch$0=0; + if(typeof acc === "number") + return 0; + else + switch(acc[0]) + {case 0: + var f=acc[2],p=acc[1]; + 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_); + 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 + 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]; + switch$1 = 1; + switch$2 = 1}} + if(! switch$1){var s=acc[2],p$0=_kl_;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]; + switch$0 = 1; + switch$3 = 1; + switch$4 = 1}} + if(! switch$3){var c=acc[2],p$2=_kn_;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]; + switch$5 = 1; + switch$6 = 1}} + if(! switch$5){var s=acc[2],p$0=_kp_;switch$0 = 2} + break; + case 5: + var _kr_=acc[1],switch$7=0; + if(typeof _kr_ === "number" || ! (0 === _kr_[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]; + 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} + 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]; + 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_); + 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); + default: + var msg=acc[2],p$6=acc[1]; + strput_acc$0(ppf,p$6); + return invalid_arg(msg)} + switch(switch$0) + {case 0:strput_acc$0(ppf,p$1);return pp_print_as_size(ppf,size,s$0); + case 1: + strput_acc$0(ppf,p$3); + return pp_print_as_size(ppf,size$0,make$1(1,c$0)); + 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; + return make_printf + (function(acc){output_acc$0(ppf,acc);return caml_call1(k,ppf)}, + _ki_, + 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)} + function fprintf$0(ppf) + {function _kd_(_kf_){return 0} + return function(_ke_){return kfprintf$0(_kd_,ppf,_ke_)}} + 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; + return make_printf + (function(acc) + {return caml_call1 + (k,function(ppf){return output_acc$0(ppf,acc)})}, + _kc_, + fmt)} + function dprintf(fmt){return kdprintf(function(i){return i},fmt)} + function kprintf(k,param) + {var fmt=param[1],b=pp_make_buffer(0),ppf=formatter_of_buffer(b); + function k$0(acc) + {strput_acc$0(ppf,acc); + return caml_call1(k,flush_buffer_formatter(b,ppf))} + return make_printf(k$0,0,fmt)} + function sprintf$0(fmt){return kprintf(id$0,fmt)} + function kasprintf(k,param) + {var fmt=param[1],b=pp_make_buffer(0),ppf=formatter_of_buffer(b); + function k$0(acc) + {output_acc$0(ppf,acc); + return caml_call1(k,flush_buffer_formatter(b,ppf))} + return make_printf(k$0,0,fmt)} + function asprintf(fmt){return kasprintf(id$0,fmt)} + function flush_standard_formatters(param) + {pp_print_flush(std_formatter,0);return pp_print_flush(err_formatter,0)} + at_exit(flush_standard_formatters); + function pp_set_all_formatter_output_fu(state,f,g,h,i) + {pp_set_formatter_output_functi(state,f,g); + state[19] = h; + state[20] = i; + 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 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)} + return make_printf(k,0,fmt)} + function pp_set_formatter_tag_functions(state,param) + {var pct=param[4],pot=param[3],mct=param[2],mot=param[1]; + 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_)}; + return 0} + function pp_get_formatter_tag_functions(fmt,param) + {var funs=pp_get_formatter_stag_function(fmt,0); + function mark_open_tag(s){return caml_call1(funs[1],[0,String_tag,s])} + function mark_close_tag(s){return caml_call1(funs[2],[0,String_tag,s])} + 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_)} + var + Stdlib_Format= + [0, + pp_open_box, + open_box, + pp_close_box, + close_box, + pp_open_hbox, + open_hbox, + pp_open_vbox, + open_vbox, + pp_open_hvbox, + open_hvbox, + pp_open_hovbox, + open_hovbox, + pp_print_string, + print_string$0, + pp_print_bytes, + print_bytes$0, + pp_print_as, + print_as, + pp_print_int, + print_int$0, + pp_print_float, + print_float$0, + pp_print_char, + print_char$0, + pp_print_bool, + print_bool, + pp_print_space, + print_space, + pp_print_cut, + print_cut, + pp_print_break, + print_break, + pp_print_custom_break, + pp_force_newline, + force_newline, + pp_print_if_newline, + print_if_newline, + pp_print_flush, + print_flush, + pp_print_newline, + print_newline$0, + pp_set_margin, + set_margin, + pp_get_margin, + get_margin, + pp_set_max_indent, + set_max_indent, + pp_get_max_indent, + get_max_indent, + check_geometry, + pp_set_geometry, + set_geometry, + pp_safe_set_geometry, + safe_set_geometry, + pp_update_geometry, + update_geometry, + pp_get_geometry, + get_geometry, + pp_set_max_boxes, + set_max_boxes, + pp_get_max_boxes, + get_max_boxes, + pp_over_max_boxes, + over_max_boxes, + pp_open_tbox, + open_tbox, + pp_close_tbox, + close_tbox, + pp_set_tab, + set_tab, + pp_print_tab, + print_tab, + pp_print_tbreak, + print_tbreak, + pp_set_ellipsis_text, + set_ellipsis_text, + pp_get_ellipsis_text, + get_ellipsis_text, + String_tag, + pp_open_stag, + open_stag, + pp_close_stag, + close_stag, + pp_set_tags, + set_tags, + pp_set_print_tags, + set_print_tags, + pp_set_mark_tags, + set_mark_tags, + pp_get_print_tags, + get_print_tags, + pp_get_mark_tags, + get_mark_tags, + pp_set_formatter_out_channel, + set_formatter_out_channel, + pp_set_formatter_output_functi, + set_formatter_output_functions, + pp_get_formatter_output_functi, + get_formatter_output_functions, + pp_set_formatter_out_functions, + set_formatter_out_functions, + pp_get_formatter_out_functions, + get_formatter_out_functions, + pp_set_formatter_stag_function, + set_formatter_stag_functions, + pp_get_formatter_stag_function, + get_formatter_stag_functions, + formatter_of_out_channel, + std_formatter, + err_formatter, + formatter_of_buffer, + stdbuf, + str_formatter, + flush_str_formatter, + make_formatter, + formatter_of_out_functions, + make_symbolic_output_buffer, + clear_symbolic_output_buffer, + get_symbolic_output_buffer, + flush_symbolic_output_buffer, + add_symbolic_output_item, + formatter_of_symbolic_output_b, + pp_print_list, + pp_print_seq, + pp_print_text, + pp_print_option, + pp_print_result, + pp_print_either, + fprintf$0, + printf$0, + eprintf$0, + sprintf$0, + asprintf, + dprintf, + ifprintf$0, + kfprintf$0, + kdprintf, + ikfprintf$0, + kprintf, + kasprintf, + bprintf$0, + kprintf, + set_all_formatter_output_funct, + get_all_formatter_output_funct, + pp_set_all_formatter_output_fu, + pp_get_all_formatter_output_fu, + pp_open_tag, + open_tag, + pp_close_tag, + close_tag, + pp_set_formatter_tag_functions, + set_formatter_tag_functions, + pp_get_formatter_tag_functions, + get_formatter_tag_functions]; + caml_register_global(818,Stdlib_Format,"Stdlib__Format"); + var null_char=0; + function next_char(ib) + {try + {var c=caml_call1(ib[7],0); + ib[2] = c; + ib[3] = 1; + 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) + {ib[2] = null_char;ib[3] = 0;ib[1] = 1;return null_char} + throw _j0_}} + 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; + else + {if(0 === _jZ_[0])return cst_unnamed_Stdlib_input_chann; + var fname=_jZ_[1]; + return fname}} + function char_count(ib){return ib[3]?ib[4] - 1 | 0:ib[4]} + function reset_token(ib){return reset(ib[8])} + function invalidate_current_char(ib){ib[3] = 0;return 0} + function token_string(ib) + {var token_buffer=ib[8],tok=contents(token_buffer); + clear$1(token_buffer); + ib[6] = ib[6] + 1 | 0; + return tok} + function skip_char(width,ib){invalidate_current_char(ib);return width} + function ignore_char(width,ib){return skip_char(width - 1 | 0,ib)} + function store_char(width,ib,c) + {add_char(ib[8],c);return ignore_char(width,ib)} + var default_token_buffer_size=1024; + function create$4(iname,next) + {return [0, + 0, + null_char, + 0, + 0, + 0, + 0, + next, + create$2(default_token_buffer_size), + iname]} + function from_string$1(s) + {var i=[0,0],len=caml_ml_string_length(s); + function next(param) + {if(len <= i[1])throw End_of_file; + var c=caml_string_get(s,i[1]); + i[1]++; + return c} + return create$4(1,next)} + var _cr_=0; + function from_function$0(_jY_){return create$4(_cr_,_jY_)} + var len=1024; + function scan_close_at_end(ic) + {caml_ml_close_channel(ic);throw End_of_file} + function scan_raise_at_end(ic){throw End_of_file} + function from_ic(scan_close_ic,iname,ic) + {var buf=caml_create_bytes(1024),i=[0,0],lim=[0,0],eof=[0,0]; + function next(param) + {if(i[1] < lim[1]){var c=caml_bytes_get(buf,i[1]);i[1]++;return c} + if(eof[1])throw End_of_file; + lim[1] = input(ic,buf,0,len); + return 0 === lim[1] + ?(eof[1] = 1,caml_call1(scan_close_ic,ic)) + :(i[1] = 1,caml_bytes_get(buf,0))} + return create$4(iname,next)} + var stdib=from_ic(scan_raise_at_end,[1,cst$86,stdin],stdin); + function open_in_file(open_in,fname) + {if(caml_string_notequal(fname,cst$87)) + {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_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") + return 0; + else + {if(0 === _jV_[0]){var ic=_jV_[1];return caml_ml_close_channel(ic)} + var ic$0=_jV_[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 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_)} + 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))} + function bad_token_length(message) + {return bad_input(caml_call1(sprintf(_ct_),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))} + function check_this_char(ib,c) + {var ci=checked_peek_char(ib); + return ci === c?invalidate_current_char(ib):character_mismatch(c,ci)} + function check_char(ib,c$0) + {if(10 === c$0) + {var ci=checked_peek_char(ib); + return 10 === ci + ?invalidate_current_char(ib) + :13 === ci + ?(invalidate_current_char(ib),check_this_char(ib,10)) + :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} + else + if(1 < _jR_ - 2 >>> 0)switch$0 = 1; + if(switch$0){invalidate_current_char(ib);continue} + return 0} + return _jQ_} + 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)) + :1 + :0} + function integer_conversion_of_char(param) + {var switcher=param - 88 | 0; + if(! (32 < switcher >>> 0)) + switch(switcher) + {case 10:return 0; + case 12:return 1; + case 17:return 2; + case 23:return 3; + case 29:return 4; + case 0: + case 32:return 5 + } + throw [0,Assert_failure,_cx_]} + function token_int_literal(conv,ib) + {switch(conv) + {case 0:var tok=cat(cst_0b,token_string(ib));break; + case 3:var tok=cat(cst_0o,token_string(ib));break; + case 4:var tok=cat(cst_0u,token_string(ib));break; + case 5:var tok=cat(cst_0x,token_string(ib));break; + default:var tok=token_string(ib)} + var l=caml_ml_string_length(tok); + if(0 !== l && 43 === caml_string_get(tok,0)) + return sub$0(tok,1,l - 1 | 0); + return tok} + function token_float(ib){return caml_float_of_string(token_string(ib))} + function scan_decimal_digit_star(width,ib) + {var width$0=width; + for(;;) + {if(0 === width$0)return width$0; + var c=peek_char(ib); + if(ib[1])return width$0; + if(58 <= c) + {if(95 === c) + {var width$1=ignore_char(width$0,ib),width$0=width$1;continue}} + else + if(48 <= c) + {var width$2=store_char(width$0,ib,c),width$0=width$2;continue} + return width$0}} + 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)); + 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) + {if(0 === width$2)return bad_token_length(cst_digits); + var c$0=checked_peek_char(ib); + if(caml_call1(digitp,c$0)) + {var width$3=store_char(width$2,ib,c$0),width=width$3; + for(;;) + {if(0 === width)return width; + var c=peek_char(ib); + if(ib[1])return width; + if(caml_call1(digitp,c)) + {var width$0=store_char(width,ib,c),width=width$0;continue} + 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))} + 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 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 is_hexa_digit(param) + {var _jL_=param - 48 | 0,switch$0=0; + if(22 < _jL_ >>> 0) + {if(! (5 < _jL_ - 49 >>> 0))switch$0 = 1} + else + if(6 < _jL_ - 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_sign(width,ib) + {var c=checked_peek_char(ib),switcher=c - 43 | 0; + if(! (2 < switcher >>> 0)) + switch(switcher) + {case 0:return store_char(width,ib,c); + case 1:break; + default:return store_char(width,ib,c)} + return width} + function scan_optionally_signed_decimal(width,ib) + {var width$0=scan_sign(width,ib); + return scan_unsigned_decimal_int(width$0,ib)} + function scan_int_conversion(conv,width$1,ib) + {switch(conv) + {case 0:return scan_binary_int(width$1,ib); + case 1:return scan_optionally_signed_decimal(width$1,ib); + case 2: + var width$0=scan_sign(width$1,ib),c=checked_peek_char(ib); + if(48 === c) + {var width=store_char(width$0,ib,c); + if(0 === width)return width; + var c$0=peek_char(ib); + if(ib[1])return width; + var switch$0=0; + if(99 <= c$0) + {if(111 === c$0) + return scan_octal_int(store_char(width,ib,c$0),ib); + if(120 === c$0)switch$0 = 1} + else + if(88 === c$0) + switch$0 = 1; + else + if(98 <= c$0)return scan_binary_int(store_char(width,ib,c$0),ib); + return switch$0 + ?scan_hexadecimal_int(store_char(width,ib,c$0),ib) + :scan_decimal_digit_star(width,ib)} + return scan_unsigned_decimal_int(width$0,ib); + case 3:return scan_octal_int(width$1,ib); + case 4:return scan_unsigned_decimal_int(width$1,ib); + default:return scan_hexadecimal_int(width$1,ib)}} + function scan_fractional_part(width,ib) + {if(0 === width)return width; + var c=peek_char(ib); + return ib[1] + ?width + :9 < c - 48 >>> 0 + ?width + :scan_decimal_digit_star(store_char(width,ib,c),ib)} + function scan_exponent_part(width,ib) + {if(0 === width)return width; + var c=peek_char(ib); + if(ib[1])return width; + if(69 !== c && 101 !== c)return width; + return scan_optionally_signed_decimal(store_char(width,ib,c),ib)} + function scan_float(width$1,precision,ib) + {var + width=scan_sign(width$1,ib), + width$0=scan_decimal_digit_star(width,ib); + if(0 === width$0)return [0,width$0,precision]; + var c=peek_char(ib); + if(ib[1])return [0,width$0,precision]; + if(46 === c) + {var + width$2=store_char(width$0,ib,c), + precision$0=min$1(width$2,precision), + width$3= + width$2 + - + (precision$0 - scan_fractional_part(precision$0,ib) | 0) + | + 0; + return [0,scan_exponent_part(width$3,ib),precision$0]} + return [0,scan_exponent_part(width$0,ib),precision]} + function check_case_insensitive_string(width,ib,error,str) + {function lowercase(c) + {return 25 < c - 65 >>> 0?c:char_of_int((c - 65 | 0) + 97 | 0)} + var + len=caml_ml_string_length(str), + width$0=[0,width], + _jG_=len - 1 | 0, + _jF_=0; + if(! (_jG_ < 0)) + {var i=_jF_; + for(;;) + {var c=peek_char(ib),_jH_=lowercase(caml_string_get(str,i)); + if(lowercase(c) !== _jH_)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} + 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 + width$0=scan_sign(width,ib), + _ju_=0 === width$0?1:0, + _jv_=_ju_ || end_of_input(ib); + if(_jv_)bad_hex_float(0); + var c=peek_char(ib),switch$0=0; + if(78 <= c) + {var switcher=c - 79 | 0; + if(30 < switcher >>> 0) + {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); + return check_case_insensitive_string + (width$1,ib,bad_hex_float,cst_an)}} + else + if(26 === switcher)switch$0 = 1} + else + {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); + 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} + else + if(32 < _jC_ - 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); + if(46 === c$0) + {var width$6=store_char(width$5,ib,c$0),switch$2=0; + if(0 !== width$6 && ! end_of_input(ib)) + {var match$0=peek_char(ib),switch$3=0; + if(80 !== match$0 && 112 !== match$0) + {var + precision$0=min$1(width$6,precision), + width$10= + width$6 + - + (precision$0 - scan_hexadecimal_int(precision$0,ib) | 0) + | + 0; + switch$3 = 1} + if(! switch$3)var width$10=width$6; + var width$7=width$10; + switch$2 = 1} + if(! switch$2)var width$7=width$6; + var width$8=width$7} + else + var width$8=width$5; + if(0 !== width$8 && ! end_of_input(ib)) + {var c$1=peek_char(ib); + 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); + return scan_optionally_signed_decimal(width$9,ib)} + return width$8} + return width$5} + return width$4} + if(73 === c)switch$0 = 1} + 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); + 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 + 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); + var c=peek_char(ib),switcher=c - 69 | 0; + if(32 < switcher >>> 0) + {if(-23 === switcher) + {var + width$1=store_char(width$0,ib,c), + precision$0=min$1(width$1,precision), + width_precision=scan_fractional_part(precision$0,ib), + frac_width=precision$0 - width_precision | 0, + width$2=width$1 - frac_width | 0; + return scan_exponent_part(width$2,ib)}} + else + 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 + width$0=scan_sign(width,ib), + _jc_=0 === width$0?1:0, + _jd_=_jc_ || end_of_input(ib); + if(_jd_)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); + 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); + 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); + 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); + var c$1=peek_char(ib),switcher=c$1 - 80 | 0,switch$0=0; + if(32 < switcher >>> 0) + if(-34 === switcher) + {var width$5=store_char(width$4,ib,c$1),switch$1=0; + if(0 !== width$5 && ! end_of_input(ib)) + {var match=peek_char(ib),switch$2=0; + if(80 !== match && 112 !== match) + {var + precision$0=min$1(width$5,precision), + width$10= + width$5 + - + (precision$0 - scan_hexadecimal_int(precision$0,ib) | 0) + | + 0; + switch$2 = 1} + if(! switch$2)var width$10=width$5; + var width$6=width$10; + switch$1 = 1} + if(! switch$1)var width$6=width$5; + var width$7=width$6} + else + switch$0 = 1; + else + if(30 < switcher - 1 >>> 0)var width$7=width$4;else switch$0 = 1; + var width$8=switch$0?bad_float(0):width$7; + if(0 !== width$8 && ! end_of_input(ib)) + {var c$2=peek_char(ib); + 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); + return scan_optionally_signed_decimal(width$9,ib)} + return width$8} + return bad_float(0)} + function scan_string(stp,width,ib) + {var width$0=width; + for(;;) + {if(0 === width$0)return width$0; + var c=peek_char(ib); + if(ib[1])return width$0; + if(stp) + {var c$0=stp[1]; + 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} + else + if(1 < _i$_ - 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}} + function scan_char(width,ib) + {return store_char(width,ib,checked_peek_char(ib))} + function hexadecimal_value_of_char(d) + {return 97 <= d?d - 87 | 0:65 <= d?d - 55 | 0:d - 48 | 0} + 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_)} + function scan_backslash_char(width,ib) + {var c0=check_next_char_for_char(width,ib),switch$0=0; + if(40 <= c0) + {if(58 <= c0) + {var switcher=c0 - 92 | 0; + if(! (28 < switcher >>> 0)) + switch(switcher) + {case 28: + 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} + else + if(6 < _i6_ - 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, + switch$1=0; + if(0 <= c$0 && ! (255 < c$0)) + {var _i4_=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_); + case 0: + case 6: + case 18: + case 22: + case 24:switch$0 = 1;break + }} + else + if(48 <= c0) + {var + get_digit$0= + function(param) + {var c=next_char(ib); + return 9 < c - 48 >>> 0?bad_input_escape(c):c}, + c1$0=get_digit$0(0), + c2$0=get_digit$0(0), + c= + ((100 * (c0 - 48 | 0) | 0) + (10 * (c1$0 - 48 | 0) | 0) | 0) + + + (c2$0 - 48 | 0) + | + 0, + switch$2=0; + if(0 <= c && ! (255 < c)){var _i5_=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_)}} + else + if(34 === c0 || 39 <= c0)switch$0 = 1; + if(switch$0) + {var switch$3=0; + if(110 <= c0) + if(117 <= c0) + 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; + 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_)} + return bad_input_escape(c0)} + function scan_caml_char(width,ib) + {function find_stop(width) + {var c=check_next_char_for_char(width,ib); + return 39 === c?ignore_char(width,ib):character_mismatch(39,c)} + var c=checked_peek_char(ib); + if(39 === c) + {var + width$0=ignore_char(width,ib), + c$0=check_next_char_for_char(width$0,ib); + return 92 === c$0 + ?find_stop(scan_backslash_char(ignore_char(width$0,ib),ib)) + :find_stop(store_char(width$0,ib,c$0))} + return character_mismatch(39,c)} + function scan_caml_string(width,ib) + {function find_stop$0(counter,width) + {var width$0=width; + for(;;) + {var c=check_next_char_for_string(width$0,ib); + if(34 === c)return ignore_char(width$0,ib); + if(92 === c) + {var + 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); + if(counter < 50) + {var counter$0=counter + 1 | 0; + return skip_spaces(counter$0,_i0_)} + return caml_trampoline_return(skip_spaces,[0,_i0_])} + 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); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return skip_spaces(counter$1,_i1_)} + return caml_trampoline_return(skip_spaces,[0,_i1_])} + 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; + continue} + var width$2=store_char(width$0,ib,c),width$0=width$2; + continue}} + function skip_spaces(counter,width) + {var width$0=width; + for(;;) + {var match=check_next_char_for_string(width$0,ib); + if(32 === match) + {var width$1=ignore_char(width$0,ib),width$0=width$1;continue} + if(counter < 50) + {var counter$0=counter + 1 | 0; + return find_stop$0(counter$0,width$0)} + return caml_trampoline_return(find_stop$0,[0,width$0])}} + function find_stop(width){return caml_trampoline(find_stop$0(0,width))} + var c=checked_peek_char(ib); + return 34 === c + ?find_stop(ignore_char(width,ib)) + :character_mismatch(34,c)} + function scan_chars_in_char_set(char_set,scan_indic,width,ib) + {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_; + else + var _iZ_=_iX_} + else + var _iZ_=_iW_; + if(_iZ_) + {store_char(max_int,ib,c);var i$1=i$0 - 1 | 0,i$0=i$1;continue} + return _iZ_}} + if(scan_indic) + {var c=scan_indic[1]; + scan_chars(width,c); + var _iV_=1 - ib[1]; + if(_iV_) + {var ci=peek_char(ib); + return c === ci?invalidate_current_char(ib):character_mismatch(c,ci)} + return _iV_} + return scan_chars(width,-1)} + function scanf_bad_input(ib,x) + {if(x[1] === Scan_failure) + var s=x[2]; + 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))} + 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_; + var + str=string_of_formatting_lit(fmting), + stp=caml_string_get(str,1), + sub_str=sub$0(str,2,caml_ml_string_length(str) - 2 | 0); + return [0,stp,sub_str]} + function take_format_readers$0(counter,k,fmt) + {var fmt$0=fmt; + for(;;) + if(typeof fmt$0 === "number") + return caml_call1(k,0); + else + switch(fmt$0[0]) + {case 0:var fmt$1=fmt$0[1],fmt$0=fmt$1;continue; + case 1:var fmt$2=fmt$0[1],fmt$0=fmt$2;continue; + case 2:var fmt$3=fmt$0[2],fmt$0=fmt$3;continue; + case 3:var fmt$4=fmt$0[2],fmt$0=fmt$4;continue; + case 4:var fmt$5=fmt$0[4],fmt$0=fmt$5;continue; + case 5:var fmt$6=fmt$0[4],fmt$0=fmt$6;continue; + case 6:var fmt$7=fmt$0[4],fmt$0=fmt$7;continue; + case 7:var fmt$8=fmt$0[4],fmt$0=fmt$8;continue; + case 8:var fmt$9=fmt$0[4],fmt$0=fmt$9;continue; + case 9:var fmt$10=fmt$0[2],fmt$0=fmt$10;continue; + case 10:var fmt$11=fmt$0[1],fmt$0=fmt$11;continue; + case 11:var fmt$12=fmt$0[2],fmt$0=fmt$12;continue; + 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)); + if(counter < 50) + {var counter$0=counter + 1 | 0; + return take_fmtty_format_readers$0(counter$0,k,_iT_,rest)} + return caml_trampoline_return + (take_fmtty_format_readers$0,[0,k,_iT_,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 + rest$0=fmt$0[2], + match=_iU_[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], + fmt$20=match$0[1], + fmt$21=concat_fmt(fmt$20,rest$1), + fmt$0=fmt$21; + continue; + case 19: + var fmt_rest=fmt$0[1]; + return function(reader) + {function new_k(readers_rest) + {return caml_call1(k,[0,reader,readers_rest])} + return take_format_readers(new_k,fmt_rest)}; + case 20:var fmt$22=fmt$0[3],fmt$0=fmt$22;continue; + case 21:var fmt$23=fmt$0[2],fmt$0=fmt$23;continue; + case 22:var fmt$24=fmt$0[1],fmt$0=fmt$24;continue; + case 23: + var rest$2=fmt$0[2],ign=fmt$0[1]; + if(typeof ign === "number") + switch(ign) + {case 0:var fmt$0=rest$2;continue; + case 1:var fmt$0=rest$2;continue; + case 2: + return function(reader) + {function new_k(readers_rest) + {return caml_call1(k,[0,reader,readers_rest])} + return take_format_readers(new_k,rest$2)}; + default:var fmt$0=rest$2;continue} + else + switch(ign[0]) + {case 0:var fmt$0=rest$2;continue; + case 1:var fmt$0=rest$2;continue; + case 2:var fmt$0=rest$2;continue; + case 3:var fmt$0=rest$2;continue; + case 4:var fmt$0=rest$2;continue; + case 5:var fmt$0=rest$2;continue; + case 6:var fmt$0=rest$2;continue; + case 7:var fmt$0=rest$2;continue; + case 8:var fmt$0=rest$2;continue; + case 9: + var fmtty$0=ign[2]; + if(counter < 50) + {var counter$1=counter + 1 | 0; + return take_fmtty_format_readers$0 + (counter$1,k,fmtty$0,rest$2)} + return caml_trampoline_return + (take_fmtty_format_readers$0,[0,k,fmtty$0,rest$2]); + case 10:var fmt$0=rest$2;continue; + default:var fmt$0=rest$2;continue} + default:var fmt$25=fmt$0[3],fmt$0=fmt$25;continue}} + function take_fmtty_format_readers$0(counter,k,fmtty,fmt) + {var fmtty$0=fmtty; + for(;;) + if(typeof fmtty$0 === "number") + {if(counter < 50) + {var counter$0=counter + 1 | 0; + return take_format_readers$0(counter$0,k,fmt)} + return caml_trampoline_return(take_format_readers$0,[0,k,fmt])} + else + switch(fmtty$0[0]) + {case 0:var fmtty$1=fmtty$0[1],fmtty$0=fmtty$1;continue; + case 1:var fmtty$2=fmtty$0[1],fmtty$0=fmtty$2;continue; + case 2:var fmtty$3=fmtty$0[1],fmtty$0=fmtty$3;continue; + case 3:var fmtty$4=fmtty$0[1],fmtty$0=fmtty$4;continue; + case 4:var fmtty$5=fmtty$0[1],fmtty$0=fmtty$5;continue; + case 5:var fmtty$6=fmtty$0[1],fmtty$0=fmtty$6;continue; + case 6:var fmtty$7=fmtty$0[1],fmtty$0=fmtty$7;continue; + case 7:var fmtty$8=fmtty$0[1],fmtty$0=fmtty$8;continue; + case 8:var fmtty$9=fmtty$0[2],fmtty$0=fmtty$9;continue; + case 9: + var + rest=fmtty$0[3], + ty2=fmtty$0[2], + ty1=fmtty$0[1], + ty=trans(symm(ty1),ty2), + fmtty$10=concat_fmtty(ty,rest), + fmtty$0=fmtty$10; + continue; + case 10:var fmtty$11=fmtty$0[1],fmtty$0=fmtty$11;continue; + case 11:var fmtty$12=fmtty$0[1],fmtty$0=fmtty$12;continue; + case 12:var fmtty$13=fmtty$0[1],fmtty$0=fmtty$13;continue; + case 13: + var fmt_rest=fmtty$0[1]; + return function(reader) + {function new_k(readers_rest) + {return caml_call1(k,[0,reader,readers_rest])} + return take_fmtty_format_readers(new_k,fmt_rest,fmt)}; + default: + var fmt_rest$0=fmtty$0[1]; + return function(reader) + {function new_k(readers_rest) + {return caml_call1(k,[0,reader,readers_rest])} + return take_fmtty_format_readers(new_k,fmt_rest$0,fmt)}}} + function take_format_readers(k,fmt) + {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 make_scanf(ib,fmt,readers) + {var fmt$0=fmt; + for(;;) + if(typeof fmt$0 === "number") + return 0; + else + switch(fmt$0[0]) + {case 0: + var rest=fmt$0[1]; + scan_char(0,ib); + var c=token_char(ib); + return [0,c,make_scanf(ib,rest,readers)]; + case 1: + var rest$0=fmt$0[1]; + scan_caml_char(0,ib); + 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]) + {case 17: + var + rest$2=_iH_[2], + fmting_lit=_iH_[1], + match=stopper_of_formatting_lit(fmting_lit), + str=match[2], + stp=match[1], + scan$0= + function(width,param,ib) + {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); + case 18: + var _iI_=_iH_[1]; + if(0 === _iI_[0]) + {var + rest$3=_iH_[2], + match$0=_iI_[1], + fmt$1=match$0[1], + scan$1= + function(width,param,ib){return scan_string(_cF_,width,ib)}; + return pad_prec_scanf + (ib, + concat_fmt(fmt$1,rest$3), + readers, + _iG_, + 0, + scan$1, + token_string)} + var + rest$4=_iH_[2], + match$1=_iI_[1], + fmt$2=match$1[1], + scan$2= + function(width,param,ib){return scan_string(_cG_,width,ib)}; + return pad_prec_scanf + (ib, + concat_fmt(fmt$2,rest$4), + readers, + _iG_, + 0, + scan$2, + token_string) + } + 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); + case 3: + var + rest$5=fmt$0[2], + pad=fmt$0[1], + scan$3=function(width,param,ib){return scan_caml_string(width,ib)}; + return pad_prec_scanf(ib,rest$5,readers,pad,0,scan$3,token_string); + case 4: + var + rest$6=fmt$0[4], + prec=fmt$0[3], + pad$0=fmt$0[2], + iconv=fmt$0[1], + conv=integer_conversion_of_char(char_of_iconv(iconv)), + scan$4= + function(width,param,ib) + {return scan_int_conversion(conv,width,ib)}; + return pad_prec_scanf + (ib, + rest$6, + readers, + pad$0, + prec, + scan$4, + function(ib) + {return caml_int_of_string(token_int_literal(conv,ib))}); + case 5: + var + rest$7=fmt$0[4], + prec$0=fmt$0[3], + pad$1=fmt$0[2], + iconv$0=fmt$0[1], + conv$0=integer_conversion_of_char(char_of_iconv(iconv$0)), + scan$5= + function(width,param,ib) + {return scan_int_conversion(conv$0,width,ib)}; + return pad_prec_scanf + (ib, + rest$7, + readers, + pad$1, + prec$0, + scan$5, + function(ib) + {return caml_int_of_string(token_int_literal(conv$0,ib))}); + case 6: + var + rest$8=fmt$0[4], + prec$1=fmt$0[3], + pad$2=fmt$0[2], + iconv$1=fmt$0[1], + conv$1=integer_conversion_of_char(char_of_iconv(iconv$1)), + scan$6= + function(width,param,ib) + {return scan_int_conversion(conv$1,width,ib)}; + return pad_prec_scanf + (ib, + rest$8, + readers, + pad$2, + prec$1, + scan$6, + function(ib) + {return caml_int_of_string(token_int_literal(conv$1,ib))}); + case 7: + var + rest$9=fmt$0[4], + prec$2=fmt$0[3], + pad$3=fmt$0[2], + iconv$2=fmt$0[1], + conv$2=integer_conversion_of_char(char_of_iconv(iconv$2)), + scan$7= + function(width,param,ib) + {return scan_int_conversion(conv$2,width,ib)}; + return pad_prec_scanf + (ib, + rest$9, + readers, + pad$3, + prec$2, + scan$7, + function(ib) + {return caml_int64_of_string(token_int_literal(conv$2,ib))}); + case 8: + switch(fmt$0[1][2]) + {case 5: + case 8: + var rest$11=fmt$0[4],prec$4=fmt$0[3],pad$5=fmt$0[2]; + return pad_prec_scanf + (ib, + rest$11, + readers, + pad$5, + prec$4, + scan_caml_float, + token_float); + case 6: + case 7: + var rest$12=fmt$0[4],prec$5=fmt$0[3],pad$6=fmt$0[2]; + return pad_prec_scanf + (ib,rest$12,readers,pad$6,prec$5,scan_hex_float,token_float); + default: + var rest$10=fmt$0[4],prec$3=fmt$0[3],pad$4=fmt$0[2]; + return pad_prec_scanf + (ib,rest$10,readers,pad$4,prec$3,scan_float,token_float)} + case 9: + var + rest$13=fmt$0[2], + pad$7=fmt$0[1], + scan$8= + function(param,_iS_,ib) + {var + c=checked_peek_char(ib), + m= + 102 === c + ?5 + :116 === c?4:bad_input(caml_call1(sprintf(_cC_),c)); + return scan_string(0,m,ib)}; + return pad_prec_scanf(ib,rest$13,readers,pad$7,0,scan$8,token_bool); + case 10: + var rest$14=fmt$0[1]; + if(end_of_input(ib)){var fmt$0=rest$14;continue} + 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); + var fmt$0=rest$15; + continue; + case 12: + var rest$16=fmt$0[2],chr=fmt$0[1]; + check_char(ib,chr); + var fmt$0=rest$16; + continue; + case 13: + var rest$17=fmt$0[3],fmtty=fmt$0[2],pad_opt=fmt$0[1]; + 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_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] !== Failure)throw exn; + var msg=exn[2],fmt$3=bad_input(msg)} + return [0,fmt$3,make_scanf(ib,rest$17,readers)]; + case 14: + var rest$18=fmt$0[3],fmtty$0=fmt$0[2],pad_opt$0=fmt$0[1]; + scan_caml_string(width_of_pad_opt(pad_opt$0),ib); + var s$0=token_string(ib); + try + {var + match$2=fmt_ebb_of_string(0,s$0), + fmt$6=match$2[1], + 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)), + fmt$5=fmt$8, + fmt$4=_iL_} + 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]} + return [0, + [0,fmt$4,s$0], + make_scanf(ib,concat_fmt(fmt$5,rest$18),readers)]; + case 15:return invalid_arg(cst_scanf_bad_conversion_a); + case 16:return invalid_arg(cst_scanf_bad_conversion_t); + case 17: + 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_); + 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]; + 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]; + check_char(ib,64); + check_char(ib,91); + var fmt$12=concat_fmt(fmt$11,rest$21),fmt$0=fmt$12; + continue; + case 19: + var fmt_rest=fmt$0[1]; + if(readers) + {var + readers_rest=readers[2], + reader=readers[1], + x=caml_call1(reader,ib); + 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 + rest$23=_iP_[2], + fmting_lit$0=_iP_[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_); + 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_); + 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)]; + case 21: + var + rest$24=fmt$0[2], + counter=fmt$0[1], + count=get_counter(ib,counter); + return [0,count,make_scanf(ib,rest$24,readers)]; + case 22: + var rest$25=fmt$0[1],c$1=checked_peek_char(ib); + return [0,c$1,make_scanf(ib,rest$25,readers)]; + case 23: + var + rest$26=fmt$0[2], + ign=fmt$0[1], + match$7=param_format_of_ignored_format(ign,rest$26), + 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_]; + 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) + {var f$0=f,args$0=args; + for(;;) + {if(args$0) + {var + r=args$0[2], + x=args$0[1], + f$1=caml_call1(f$0,x), + f$0=f$1, + args$0=r; + continue} + return f$0}} + function k(readers,f) + {reset_token(ib); + try + {var _iE_=[0,make_scanf(ib,fmt,readers)],_iD_=_iE_} + catch(exc) + {exc = caml_wrap_exception(exc); + var switch$0=0; + if + (exc[1] + !== + Scan_failure + && + exc[1] + !== + Failure + && + exc + !== + End_of_file) + {if(exc[1] !== Invalid_argument)throw exc; + var + msg=exc[2], + _iC_= + 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]; + return caml_call2(ef,ib,exc)} + return take_format_readers(k,fmt)} + function bscanf(ib,fmt){return kscanf(ib,scanf_bad_input,fmt)} + function ksscanf(s,ef,fmt){return kscanf(from_string$1(s),ef,fmt)} + function sscanf(s,fmt) + {return kscanf(from_string$1(s),scanf_bad_input,fmt)} + function scanf(fmt){return kscanf(stdib,scanf_bad_input,fmt)} + function bscanf_format(ib,format,f) + {scan_caml_string(max_int,ib); + var str=token_string(ib); + try + {var _iB_=format_of_string_format(str,format),fmt=_iB_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] !== Failure)throw exn; + var msg=exn[2],fmt=bad_input(msg)} + return caml_call1(f,fmt)} + 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 unescaped(s) + {function _iz_(x){return x} + return caml_call1(sscanf(cat(cst$92,cat(s,cst$91)),_cI_),_iz_)} + 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)} + var + Stdlib_Scanf= + [0, + [0, + stdib, + from_file, + from_file_bin, + close_in, + from_file, + from_file_bin, + from_string$1, + from_function$0, + from_channel$0, + end_of_input, + beginning_of_input, + name_of_input, + stdib], + Scan_failure, + bscanf, + sscanf, + scanf, + kscanf, + ksscanf, + bscanf_format, + sscanf_format, + format_from_string, + unescaped, + fscanf, + kfscanf]; + caml_register_global(819,Stdlib_Scanf,"Stdlib__Scanf"); + function register(name,v){return caml_register_named_value(name,v)} + function register_exception(name,exn) + {var slot=caml_obj_tag(exn) === 248?exn:exn[1]; + return caml_register_named_value(name,slot)} + var Stdlib_Callback=[0,register,register_exception]; + caml_register_global(820,Stdlib_Callback,"Stdlib__Callback"); + 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_; + 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} + break}} + accu[1] = accu[1] & 2147483647; + var tag=1073741823 < accu[1]?accu[1] + 2147483648 | 0:accu[1]; + return tag} + function compare$14(x,y){return caml_string_compare(x,y)} + var Vars=caml_call1(Stdlib_Map[1],[0,compare$14]); + function compare$15(x,y){return caml_string_compare(x,y)} + var + Meths=caml_call1(Stdlib_Map[1],[0,compare$15]), + compare$16=caml_int_compare, + Labs=caml_call1(Stdlib_Map[1],[0,compare$16]), + dummy_table=[0,0,[0,dummy_item],Meths[1],Labs[1],0,0,Vars[1],0], + table_count=[0,0], + dummy_met=caml_obj_block(0,0); + function fit_size(n){return 2 < n?fit_size((n + 1 | 0) / 2 | 0) * 2 | 0:n} + function new_table(pub_labels) + {table_count[1]++; + var + 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_; + 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} + 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 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} + else + var _io_=_in_; + return _io_} + var method_count=[0,0],inst_var_count=[0,0]; + function new_method(table) + {var index=table[2].length - 1; + resize$1(table,index + 1 | 0); + 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 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_}} + function get_method_labels(table,names) + {return map$7(function(_ik_){return get_method_label(table,_ik_)},names)} + function set_method(table,label,element) + {method_count[1]++; + return caml_call2(Labs[28],label,table[4]) + ?(resize$1(table,label + 1 | 0), + caml_check_bound(table[2],label)[1 + label] + = + element, + 0) + :(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) + return caml_check_bound(table[2],label)[1 + label]; + throw _ij_}} + function to_list$3(arr){return 0 === arr?0:to_list$1(arr)} + function narrow(table,vars,virt_meths,concr_meths) + {var + vars$0=to_list$3(vars), + virt_meths$0=to_list$3(virt_meths), + concr_meths$0=to_list$3(concr_meths), + virt_meth_labs= + map$4 + (function(_ih_){return get_method_label(table,_ih_)},virt_meths$0), + concr_meth_labs= + map$4 + (function(_ig_){return get_method_label(table,_ig_)},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) + {return mem(lab,vars$0)?caml_call3(Vars[4],lab,info,tvars):tvars} + table[7] = caml_call3(Vars[13],_h$_,_h__,_h9_); + 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]; + 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_); + return 0}, + concr_meths$0, + concr_meth_labs); + iter2$0 + (function(met,label) + {by_name[1] = caml_call3(Meths[4],met,label,by_name[1]); + by_label[1] = caml_call3(Labs[4],label,0,by_label[1]); + return 0}, + virt_meths$0, + virt_meth_labs); + table[3] = by_name[1]; + table[4] = by_label[1]; + var _ia_=0,_ib_=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_); + return 0} + function widen(table) + {var + match=hd(table[5]), + vars=match[6], + virt_meths=match[5], + saved_vars=match[4], + saved_hidden_meths=match[3], + by_label=match[2], + by_name=match[1]; + table[5] = tl(table[5]); + table[7] + = + fold_left$0 + (function(s,v) + {var _h8_=caml_call2(Vars[28],v,table[7]); + return caml_call3(Vars[4],v,_h8_,s)}, + saved_vars, + vars); + table[3] = by_name; + table[4] = by_label; + var _h7_=table[6]; + table[6] + = + fold_right + (function(met,hm) + {var lab=met[1];return mem(lab,virt_meths)?hm:[0,met,hm]}, + _h7_, + 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 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_}} + function to_array(arr){return caml_equal(arr,0)?[0]:arr} + function new_methods_variables(table,meths,vals) + {var + meths$0=to_array(meths), + 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_; + for(;;) + {var + _h3_= + 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} + break}} + var _hZ_=nvals - 1 | 0,_hY_=0; + if(! (_hZ_ < 0)) + {var i=_hY_; + 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} + 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_}} + function get_variables(table,names) + {return map$7(function(_hT_){return get_variable(table,_hT_)},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]); + var + tags=map$7(public_method_label,public_methods), + table=new_table(tags); + iteri$3 + (function(i,met) + {var lab=(i * 2 | 0) + 2 | 0; + table[3] = caml_call3(Meths[4],met,lab,table[3]); + table[4] = caml_call3(Labs[4],lab,1,table[4]); + return 0}, + public_methods); + return table} + function init_class(table) + {inst_var_count[1] = (inst_var_count[1] + table[1] | 0) - 1 | 0; + table[8] = rev(table[8]); + return resize$1 + (table, + 3 + ((caml_check_bound(table[2],1)[2] * 16 | 0) / 32 | 0) | 0)} + function inherits(cla,vals,virt_meths,concr_meths,param,top) + {var env=param[4],super$0=param[2]; + narrow(cla,vals,virt_meths,concr_meths); + 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_= + [0, + map$7 + (function(nm){return get_method(cla,get_method_label(cla,nm))},_hP_), + _hO_], + _hR_=to_array(vals); + return caml_array_concat + ([0, + [0,init], + [0, + map$7(function(_hS_){return get_variable(cla,_hS_)},_hR_), + _hQ_]])} + function make_class(pub_meths,class_init) + {var table=create_table(pub_meths),env_init=caml_call1(class_init,table); + init_class(table); + return [0,caml_call1(env_init,0),class_init,env_init,0]} + function make_class_store(pub_meths,class_init,init_table) + {var table=create_table(pub_meths),env_init=caml_call1(class_init,table); + init_class(table); + init_table[2] = class_init; + init_table[1] = env_init; + return 0} + function dummy_class(loc) + {function undef(param){throw [0,Undefined_recursive_module,loc]} + return [0,undef,undef,undef,0]} + function create_object(table) + {var obj=caml_obj_block(248,table[1]); + obj[1] = table[2]; + return caml_set_oo_id(obj)} + function create_object_opt(obj_0,table) + {if(obj_0)return obj_0; + var obj=caml_obj_block(248,table[1]); + obj[1] = table[2]; + return caml_set_oo_id(obj)} + function iter_f(obj,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],f=param$0[1]; + caml_call1(f,obj); + var param$0=l; + continue} + return 0}} + function run_initializers(obj,table) + {var inits=table[8],_hN_=0 !== inits?1:0; + return _hN_?iter_f(obj,inits):_hN_} + function run_initializers_opt(obj_0,obj,table) + {if(obj_0)return obj; + var inits=table[8]; + if(0 !== inits)iter_f(obj,inits); + return obj} + function create_object_and_run_initiali(obj_0,table) + {if(obj_0)return obj_0; + var obj=create_object(table); + run_initializers(obj,table); + return obj} + function get_data$0(param) + {if(param)return param[2];throw [0,Assert_failure,_cN_]} + function build_path(n,keys,tables) + {var res=[0,0,0,0],r=[0,res],_hJ_=0; + if(! (n < 0)) + {var i=_hJ_; + 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} + break}} + var _hK_=r[1]; + if(tables){tables[2] = _hK_;return res} + throw [0,Assert_failure,_cK_]} + function lookup_tables(root,keys) + {var tables$2=get_data$0(root); + if(tables$2) + {var i$1=keys.length - 1 - 1 | 0,i=i$1,tables=tables$2; + a: + for(;;) + {if(0 <= i) + {var key=caml_check_bound(keys,i)[1 + i],tables$0=tables; + for(;;) + {if(tables$0) + {if(tables$0[1] === key) + {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_]} + if(tables$0) + {var _hI_=tables$0[3]; + if(_hI_){var tables$0=_hI_;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_]}} + return tables}} + return build_path(keys.length - 1 - 1 | 0,keys,root)} + function new_cache(table) + {var n=new_method(table),switch$0=0; + if + (0 + !== + (n % 2 | 0) + && + ! + ((2 + ((caml_check_bound(table[2],1)[2] * 16 | 0) / 32 | 0) | 0) < n)) + {var n$0=new_method(table);switch$0 = 1} + if(! switch$0)var n$0=n; + caml_check_bound(table[2],n$0)[1 + n$0] = 0; + return n$0} + function set_methods(table,methods) + {var len=methods.length - 1,i=[0,0]; + for(;;) + {if(i[1] < len) + {var + _hC_=i[1], + label=caml_check_bound(methods,_hC_)[1 + _hC_], + next= + function(param) + {i[1]++; + var _hH_=i[1]; + return caml_check_bound(methods,_hH_)[1 + _hH_]}, + clo=next(0); + if(typeof clo === "number") + switch(clo) + {case 0: + var + x=next(0), + clo$0=function(x){return function(obj){return x}}(x); + break; + case 1: + var + n=next(0), + clo$0=function(n){return function(obj){return obj[1 + n]}}(n); + break; + case 2: + var + e=next(0), + n$0=next(0), + clo$0= + function(e,n){return function(obj){return obj[1 + e][1 + n]}} + (e,n$0); + break; + case 3: + var + n$1=next(0), + clo$0= + function(n) + {return function(obj){return caml_call1(obj[1][1 + n],obj)}} + (n$1); + break; + case 4: + var + n$2=next(0), + clo$0= + function(n){return function(obj,x){obj[1 + n] = x;return 0}} + (n$2); + break; + case 5: + var + f=next(0), + x$0=next(0), + clo$0= + function(f,x){return function(obj){return caml_call1(f,x)}} + (f,x$0); + break; + case 6: + var + f$0=next(0), + n$3=next(0), + clo$0= + function(f,n) + {return function(obj){return caml_call1(f,obj[1 + n])}} + (f$0,n$3); + break; + case 7: + var + f$1=next(0), + e$0=next(0), + n$4=next(0), + clo$0= + function(f,e,n) + {return function(obj) + {return caml_call1(f,obj[1 + e][1 + n])}} + (f$1,e$0,n$4); + break; + case 8: + var + f$2=next(0), + n$5=next(0), + clo$0= + function(f,n) + {return function(obj) + {return caml_call1(f,caml_call1(obj[1][1 + n],obj))}} + (f$2,n$5); + break; + case 9: + var + f$3=next(0), + x$1=next(0), + y=next(0), + clo$0= + function(f,x,y) + {return function(obj){return caml_call2(f,x,y)}} + (f$3,x$1,y); + break; + case 10: + var + f$4=next(0), + x$2=next(0), + n$6=next(0), + clo$0= + function(f,x,n) + {return function(obj){return caml_call2(f,x,obj[1 + n])}} + (f$4,x$2,n$6); + break; + case 11: + var + f$5=next(0), + x$3=next(0), + e$1=next(0), + n$7=next(0), + clo$0= + function(f,x,e,n) + {return function(obj) + {return caml_call2(f,x,obj[1 + e][1 + n])}} + (f$5,x$3,e$1,n$7); + break; + case 12: + var + f$6=next(0), + x$4=next(0), + n$8=next(0), + clo$0= + function(f,x,n) + {return function(obj) + {return caml_call2(f,x,caml_call1(obj[1][1 + n],obj))}} + (f$6,x$4,n$8); + break; + case 13: + var + f$7=next(0), + n$9=next(0), + x$5=next(0), + clo$0= + function(f,n,x) + {return function(obj){return caml_call2(f,obj[1 + n],x)}} + (f$7,n$9,x$5); + break; + case 14: + var + f$8=next(0), + e$2=next(0), + n$10=next(0), + x$6=next(0), + clo$0= + function(f,e,n,x) + {return function(obj) + {return caml_call2(f,obj[1 + e][1 + n],x)}} + (f$8,e$2,n$10,x$6); + break; + case 15: + var + f$9=next(0), + n$11=next(0), + x$7=next(0), + clo$0= + function(f,n,x) + {return function(obj) + {return caml_call2(f,caml_call1(obj[1][1 + n],obj),x)}} + (f$9,n$11,x$7); + break; + case 16: + var + n$12=next(0), + x$8=next(0), + clo$0= + function(n,x) + {return function(obj) + {return caml_call2(obj[1][1 + n],obj,x)}} + (n$12,x$8); + break; + case 17: + var + n$13=next(0), + m=next(0), + clo$0= + function(n,m) + {return function(obj) + {return caml_call2(obj[1][1 + n],obj,obj[1 + m])}} + (n$13,m); + break; + case 18: + var + n$14=next(0), + e$3=next(0), + m$0=next(0), + clo$0= + function(n,e,m) + {return function(obj) + {return caml_call2(obj[1][1 + n],obj,obj[1 + e][1 + m])}} + (n$14,e$3,m$0); + break; + case 19: + var + n$15=next(0), + m$1=next(0), + 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_)}} + (n$15,m$1); + break; + case 20: + var m$2=next(0),x$9=next(0); + new_cache(table); + var + clo$0= + function(m,x) + {return function(obj) + {return caml_call1(caml_get_public_method(x,m,0),x)}} + (m$2,x$9); + break; + case 21: + var m$3=next(0),n$16=next(0); + new_cache(table); + var + clo$0= + function(m,n) + {return function(obj) + {var _hE_=obj[1 + n]; + return caml_call1(caml_get_public_method(_hE_,m,0),_hE_)}} + (m$3,n$16); + break; + case 22: + var m$4=next(0),e$4=next(0),n$17=next(0); + new_cache(table); + var + 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_)}} + (m$4,e$4,n$17); + break; + default: + var m$5=next(0),n$18=next(0); + new_cache(table); + var + 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_)}} + (m$5,n$18)} + else + var clo$0=clo; + set_method(table,label,clo$0); + i[1]++; + continue} + return 0}} + function stats$0(param) + {return [0,table_count[1],method_count[1],inst_var_count[1]]} + var + CamlinternalOO= + [0, + public_method_label, + new_method, + new_variable, + new_methods_variables, + get_variable, + get_variables, + get_method_label, + get_method_labels, + get_method, + set_method, + set_methods, + narrow, + widen, + add_initializer, + dummy_table, + create_table, + init_class, + inherits, + make_class, + make_class_store, + dummy_class, + copy$7, + create_object, + create_object_opt, + run_initializers, + run_initializers_opt, + create_object_and_run_initiali, + lookup_tables, + params$0, + stats$0]; + caml_register_global(821,CamlinternalOO,"CamlinternalOO"); + var Stdlib_Oo=[0,copy$7,public_method_label,public_method_label]; + caml_register_global(822,Stdlib_Oo,"Stdlib__Oo"); + function init_mod_block(loc,comps$0) + {var + length=comps$0.length - 1, + modu=caml_obj_block(0,length), + _hy_=length - 1 | 0, + _hx_=0; + if(! (_hy_ < 0)) + {var i=_hx_; + for(;;) + {var shape=caml_check_bound(comps$0,i)[1 + i]; + if(typeof shape === "number") + switch(shape) + {case 0: + var + fn$0= + function(i) + {function fn(x) + {var fn$0=modu[1 + i]; + if(fn === fn$0)throw [0,Undefined_recursive_module,loc]; + return caml_call1(fn$0,x)} + return fn}, + fn=fn$0(i), + init=fn; + break; + case 1: + var l=[]; + runtime.caml_update_dummy + (l, + [246, + function(l,i) + {return function(_hA_) + {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_ + ?l$0[1] + :246 === _hB_?force_lazy_block(l$0):l$0}} + (l,i)]); + var init=l; + break; + default:var init=dummy_class(loc)} + else + if(0 === shape[0]) + var comps=shape[1],init=init_mod_block(loc,comps); + else + var v=shape[1],init=v; + modu[1 + i] = init; + var _hz_=i + 1 | 0; + if(_hy_ !== i){var i=_hz_;continue} + break}} + return modu} + function init_mod(loc,shape) + {if(typeof shape !== "number" && 0 === shape[0]) + {var comps=shape[1];return init_mod_block(loc,comps)} + 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_; + for(;;) + {var n$0=n[1 + i],shape=caml_check_bound(comps$0,i)[1 + i]; + if(typeof shape === "number") + if(2 === shape) + {var switch$0=0; + if(0 === caml_obj_tag(n$0) && 4 === n$0.length - 1) + {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} + break}} + else + switch$0 = 1; + if(switch$0)throw [0,Assert_failure,_cQ_]} + 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} + break}} + return 0} + throw [0,Assert_failure,_cR_]} + function update_mod(shape,o,n) + {if(typeof shape !== "number" && 0 === shape[0]) + {var comps=shape[1];return update_mod_block(comps,o,n)} + return failwith(cst_CamlinternalMod_update_mod)} + var CamlinternalMod=[0,init_mod,update_mod]; + caml_register_global(823,CamlinternalMod,"CamlinternalMod"); + var + initial_buffer=caml_create_bytes(32), + buffer=[0,initial_buffer], + bufpos=[0,0]; + function reset_buffer(param) + {buffer[1] = initial_buffer;bufpos[1] = 0;return 0} + function store(c) + {if(caml_ml_bytes_length(buffer[1]) <= bufpos[1]) + {var newbuffer=caml_create_bytes(2 * bufpos[1] | 0); + blit(buffer[1],0,newbuffer,0,bufpos[1]); + buffer[1] = newbuffer} + caml_bytes_set(buffer[1],bufpos[1],c); + bufpos[1]++; + return 0} + function get_string(param) + {var s=sub_string(buffer[1],0,bufpos[1]); + buffer[1] = initial_buffer; + return s} + function make_lexer(keywords) + {var kwd_table=caml_call2(Stdlib_Hashtbl[1],0,17); + iter$2 + (function(s){return caml_call3(Stdlib_Hashtbl[5],kwd_table,s,[0,s])}, + 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_} + catch(_hq_) + {_hq_ = caml_wrap_exception(_hq_); + if(_hq_ === Not_found)throw [0,Error,cat(cst_Illegal_character,s)]; + 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 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}} + 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; + if(! switch$0) + {junk(strm);store(_hj_);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 switch$0=0; + if(69 === _hg_ || 101 === _hg_)switch$0 = 1; + if(switch$0){junk(s);store(69);return exponent_part(s)}} + else + {if(46 === _hg_) + {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}} + else + if(30 < _hi_ - 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}}} + 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} + else + if(29 === _hf_)switch$0 = 1} + else + if(65 <= _he_) + {if(92 === _he_)switch$0 = 1} + else + if(33 <= _he_) + switch(_he_ - 33 | 0) + {case 0: + case 2: + case 3: + case 4: + case 5: + case 9: + case 10: + case 12: + case 14: + case 25: + case 27: + case 28: + case 29: + case 30: + case 31:switch$0 = 1;break + } + if(switch$0){junk(strm);store(_he_);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)}} + reset_buffer(0); + store(45); + return ident2(s)} + function ident(strm) + {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} + else + if(1 !== _hc_)switch$0 = 1} + else + if(48 <= _hb_) + {if(6 < _hb_ - 58 >>> 0)switch$0 = 1} + else + if(39 === _hb_)switch$0 = 1; + if(switch$0){junk(strm);store(_hb_);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} + else + if(125 !== _g3_)switch$0 = 2} + else + {var _g4_=_g3_ - 65 | 0; + if(57 < _g4_ >>> 0) + {if(! (58 <= _g4_)) + switch(_g4_ + 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_) + {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_} + store(c$0); + continue} + junk(strm); + store(_g6_); + continue} + throw Failure$0} + case 39: + junk(strm); + try + {var match$2=peek$0(strm); + if(! match$2)throw Failure$0; + var _g7_=match$2[1]; + if(92 === _g7_) + {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_} + else + {junk(strm);var c=_g7_}} + catch(_g__) + {_g__ = caml_wrap_exception(_g__); + if(_g__ === Failure$0)throw [0,Error,cst$94]; + throw _g__} + var match$0=peek$0(strm); + if(match$0 && 39 === match$0[1]) + {junk(strm);return [0,[5,c]]} + throw [0,Error,cst$95]; + case 40: + junk(strm); + if(counter < 50) + {var counter$0=counter + 1 | 0; + return maybe_comment(counter$0,strm)} + return caml_trampoline_return(maybe_comment,[0,strm]); + case 45:junk(strm);return neg_number(strm); + case 9: + case 10: + case 12: + case 13: + case 26: + case 32:junk(strm);continue; + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + junk(strm);reset_buffer(0);store(_g3_);return number(strm); + case 33: + case 35: + case 36: + case 37: + case 38: + case 42: + case 43: + case 47: + case 58: + case 60: + case 61: + case 62: + case 63: + case 64:switch$0 = 2;break + }} + else + {var _g5_=_g4_ - 26 | 0; + if(5 < _g5_ >>> 0) + switch$0 = 1; + else + switch(_g5_) + {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 1: + junk(strm);reset_buffer(0);store(_g3_);return ident(strm); + default: + junk(strm);reset_buffer(0);store(_g3_);return ident2(strm)}} + return 0}} + function maybe_comment(counter,strm) + {var match=peek$0(strm); + if(match && 42 === match[1]) + {junk(strm); + comment(strm); + if(counter < 50) + {var counter$0=counter + 1 | 0;return next_token$0(counter$0,strm)} + 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))} + 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)}]; + function create(opt,initial_size) + {if(opt) + var sth=opt[1],random=sth; + else + var random=caml_call1(Stdlib_Hashtbl[17],0); + var x=16; + for(;;) + {if(! (initial_size <= x) && ! (max_array_length < (x * 2 | 0))) + {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_); + 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_; + for(;;) + {caml_check_bound(h[2],i)[1 + i] = 0; + var _gZ_=i + 1 | 0; + if(_gY_ !== i){var i=_gZ_;continue} + break}} + return 0} + function reset(h) + {var len=h[2].length - 1; + return len === h[4] + ?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_]} + function key_index(h,hkey){return hkey & (h[2].length - 1 - 1 | 0)} + function clean(h) + {function do_bucket(param) + {var param$0=param; + for(;;) + {if(param$0) + {var hkey=param$0[1],rest=param$0[3],c=param$0[2]; + if(caml_call1(H[7],c)) + {var rest$0=param$0[3],c$0=param$0[2]; + return [0,hkey,c$0,do_bucket(rest$0)]} + h[1] = h[1] - 1 | 0; + 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_; + 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} + 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_) + {var ndata=caml_make_vect(nsize,0); + h[2] = ndata; + var + insert_bucket= + function(param) + {if(param) + {var rest=param[3],data=param[2],hkey=param[1]; + 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_; + return 0} + return 0}, + _gM_=osize - 1 | 0, + _gL_=0; + if(! (_gM_ < 0)) + {var i=_gL_; + for(;;) + {insert_bucket(caml_check_bound(odata,i)[1 + i]); + var _gO_=i + 1 | 0; + if(_gM_ !== i){var i=_gO_;continue} + break}} + var _gN_=0} + else + var _gN_=_gK_; + return _gN_} + function add(h,key,info) + {var + hkey=caml_call2(H[2],h[3],key), + i=key_index(h,hkey), + container=caml_call2(H[1],key,info), + 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_} + function remove(h,key) + {var hkey=caml_call2(H[2],h[3],key); + function remove_bucket(param) + {var param$0=param; + for(;;) + {if(param$0) + {var hk=param$0[1],next=param$0[3],c=param$0[2]; + if(hkey === hk) + {var match=caml_call2(H[3],c,key); + switch(match) + {case 0:h[1] = h[1] - 1 | 0;return next; + case 1:return [0,hk,c,remove_bucket(next)]; + default:h[1] = h[1] - 1 | 0;var param$0=next;continue}} + var next$0=param$0[3],c$0=param$0[2]; + return [0,hk,c$0,remove_bucket(next$0)]} + 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_; + 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_], + param=param$1; + for(;;) + {if(param) + {var hk=param[1],rest=param[3],c=param[2]; + if(hkey === hk) + {var match=caml_call2(H[3],c,key); + switch(match) + {case 0: + var match$0=caml_call1(H[4],c); + if(match$0){var d=match$0[1];return d} + var param=rest; + continue; + case 1:var param=rest;continue; + default:var param=rest;continue}} + var param$0=param[3],param=param$0; + continue} + throw Not_found}} + 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_], + param=param$1; + for(;;) + {if(param) + {var hk=param[1],rest=param[3],c=param[2]; + if(hkey === hk) + {var match=caml_call2(H[3],c,key); + switch(match) + {case 0: + var d=caml_call1(H[4],c); + if(d)return d; + var param=rest; + continue; + case 1:var param=rest;continue; + default:var param=rest;continue}} + var param$0=param[3],param=param$0; + continue} + return 0}} + function find_all(h,key) + {var hkey=caml_call2(H[2],h[3],key); + function find_in_bucket(param) + {var param$0=param; + for(;;) + {if(param$0) + {var hk=param$0[1],rest=param$0[3],c=param$0[2]; + if(hkey === hk) + {var match=caml_call2(H[3],c,key); + switch(match) + {case 0: + var match$0=caml_call1(H[4],c); + if(match$0) + {var d=match$0[1];return [0,d,find_in_bucket(rest)]} + var param$0=rest; + continue; + case 1:var param$0=rest;continue; + default:var param$0=rest;continue}} + 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_])} + function replace(h,key,info) + {var hkey=caml_call2(H[2],h[3],key); + function replace_bucket(param) + {var param$0=param; + for(;;) + {if(param$0) + {var hk=param$0[1],next=param$0[3],c=param$0[2]; + if(hkey === hk) + {var match=caml_call2(H[3],c,key); + if(match){var param$0=next;continue} + return caml_call3(H[6],c,key,info)} + var param$1=param$0[3],param$0=param$1; + continue} + 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 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_}} + 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_], + param=param$1; + for(;;) + {if(param) + {var hk=param[1],rest=param[3],c=param[2]; + if(hk === hkey) + {var match=caml_call2(H[3],c,key); + if(match){var param=rest;continue} + return 1} + var param$0=param[3],param=param$0; + 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_; + a: + for(;;) + {var param$0=caml_check_bound(d$0,i)[1 + i],param=param$0; + for(;;) + {if(param) + {var + rest=param[3], + c=param[2], + match=caml_call1(H[5],c), + match$0=caml_call1(H[4],c), + switch$0=0; + if(match && match$0) + {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} + 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_; + a: + for(;;) + {var + _gv_=accu$1[1], + b$0=caml_check_bound(d$0,i)[1 + i], + b=b$0, + accu=_gv_; + for(;;) + {if(b) + {var + rest=b[3], + c=b[2], + match=caml_call1(H[5],c), + match$0=caml_call1(H[4],c), + switch$0=0; + if(match && match$0) + {var d=match$0[1],k=match[1],accu$0=caml_call3(f,k,d,accu); + switch$0 = 1} + if(! switch$0)var accu$0=accu; + var b=rest,accu=accu$0; + continue} + accu$1[1] = accu; + var _gw_=i + 1 | 0; + if(_gu_ !== i){var i=_gw_;continue a} + break} + break}} + return accu$1[1]} + function filter_map_inplace(f,h) + {function do_bucket(param) + {var param$0=param; + for(;;) + {if(param$0) + {var + rest=param$0[3], + c=param$0[2], + hk=param$0[1], + match=caml_call1(H[5],c), + match$0=caml_call1(H[4],c); + if(match && match$0) + {var d=match$0[1],k=match[1],match$1=caml_call2(f,k,d); + if(match$1) + {var new_d=match$1[1]; + caml_call3(H[6],c,k,new_d); + return [0,hk,c,do_bucket(rest)]} + var param$0=rest; + continue} + 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_; + 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} + break}} + return 0} + function length(h){return h[1]} + function bucket_length(accu,param) + {var accu$0=accu,param$0=param; + for(;;) + {if(param$0) + {var + param$1=param$0[3], + accu$1=accu$0 + 1 | 0, + accu$0=accu$1, + param$0=param$1; + continue} + return accu$0}} + function stats(h) + {var + _gl_=h[2], + _gm_=0, + mbl= + fold_left$3 + (function(m,b){return max$1(m,bucket_length(0,b))},_gm_,_gl_), + histo=caml_make_vect(mbl + 1 | 0,0), + _gn_=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_; + return 0}, + _gn_); + return [0,h[1],h[2].length - 1,mbl,histo]} + function bucket_length_alive(accu,param) + {var accu$0=accu,param$0=param; + for(;;) + {if(param$0) + {var rest=param$0[3],c=param$0[2]; + if(caml_call1(H[7],c)) + {var accu$1=accu$0 + 1 | 0,accu$0=accu$1,param$0=rest;continue} + var param$1=param$0[3],param$0=param$1; + continue} + return accu$0}} + function stats_alive(h) + {var + size=[0,0], + _gh_=h[2], + _gi_=0, + mbl= + fold_left$3 + (function(m,b){return max$1(m,bucket_length_alive(0,b))},_gi_,_gh_), + histo=caml_make_vect(mbl + 1 | 0,0), + _gj_=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_; + return 0}, + _gj_); + return [0,size[1],h[2].length - 1,mbl,histo]} + function to_seq(tbl) + {var tbl_data=tbl[2]; + function aux(i,buck,param) + {var i$0=i,buck$0=buck; + for(;;) + {if(buck$0) + {var + next=buck$0[3], + c=buck$0[2], + match=caml_call1(H[5],c), + match$0=caml_call1(H[4],c); + if(match && match$0) + {var data=match$0[1],key=match[1]; + return [0, + [0,key,data], + function(_gg_){return aux(i$0,next,_gg_)}]} + var buck$0=next; + continue} + if(i$0 === tbl_data.length - 1)return 0; + var + buck$1=caml_check_bound(tbl_data,i$0)[1 + i$0], + i$1=i$0 + 1 | 0, + i$0=i$1, + buck$0=buck$1; + continue}} + var _gd_=0,_ge_=0; + return function(_gf_){return aux(_ge_,_gd_,_gf_)}} + 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_)}} + 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_)}} + function add_seq(tbl,i) + {return iter + (function(param) + {var v=param[2],k=param[1];return add(tbl,k,v)}, + i)} + function replace_seq(tbl,i) + {return iter + (function(param) + {var v=param[2],k=param[1];return replace(tbl,k,v)}, + i)} + function of_seq(i){var tbl=create(0,16);replace_seq(tbl,i);return tbl} + return [0, + create, + clear, + reset, + copy, + add, + remove, + find, + find_opt, + find_all, + replace, + mem, + iter$0, + filter_map_inplace, + fold, + length, + stats, + to_seq, + to_seq_keys, + to_seq_values, + add_seq, + replace_seq, + 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 make$4(key,data) + {var eph=create$5(0);set_data(eph,data);set_key$0(eph,key);return eph} + function query(eph,key) + {var match=get_key$0(eph); + if(match){var k=match[1];return k === key?get_data$1(eph):0} + return 0} + function MakeSeeded$1(H) + {function create(k,d) + {var c=create$5(0);set_data(c,d);set_key$0(c,k);return c} + var hash=H[2]; + function equal(c,k) + {var match=get_key$0(c); + if(match){var k$0=match[1];return caml_call2(H[1],k,k$0)?0:1} + return 2} + function set_key_data(c,k,d) + {unset_data(c);set_key$0(c,k);return set_data(c,d)} + return MakeSeeded$0 + ([0, + create, + hash, + equal, + get_data$1, + get_key$0, + set_key_data, + check_key$0])} + function Make$2(H) + {var equal=H[1]; + function hash(seed,x){return caml_call1(H[2],x)} + var + include=MakeSeeded$1([0,equal,hash]), + clear=include[2], + reset=include[3], + copy=include[4], + add=include[5], + remove=include[6], + find=include[7], + find_opt=include[8], + find_all=include[9], + replace=include[10], + mem=include[11], + iter=include[12], + filter_map_inplace=include[13], + fold=include[14], + length=include[15], + stats=include[16], + to_seq=include[17], + to_seq_keys=include[18], + to_seq_values=include[19], + add_seq=include[20], + replace_seq=include[21], + clean=include[23], + stats_alive=include[24], + _f6_=include[1]; + function create(sz){return caml_call2(_f6_,_cS_,sz)} + function of_seq(i) + {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} + return [0, + create, + clear, + reset, + copy, + add, + remove, + find, + find_opt, + find_all, + replace, + mem, + iter, + filter_map_inplace, + fold, + length, + stats, + to_seq, + to_seq_keys, + to_seq_values, + add_seq, + replace_seq, + of_seq, + 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 test_key(k,e) + {var match=get_key$0(e); + if(match){var x=match[1];if(x === k)return 1} + return 0} + function remove$0(b,k) + {var l=b[1],acc=0; + for(;;) + {if(l) + {var h=l[1],t=l[2]; + if(test_key(k,h)){b[1] = rev_append(acc,t);return 0} + var l$0=l[2],acc$0=[0,h,acc],l=l$0,acc=acc$0; + continue} + return 0}} + function find$2(b,k) + {var + _f3_=b[1], + match=find_opt(function(_f4_){return test_key(k,_f4_)},_f3_); + 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 make$6(key1,key2,data) + {var eph=create$6(0); + set_data$0(eph,data); + set_key1(eph,key1); + set_key2(eph,key2); + return eph} + function query$0(eph,key1,key2) + {var match=get_key1(eph); + if(match) + {var k=match[1]; + if(k === key1) + {var match$0=get_key2(eph); + if(match$0) + {var k$0=match$0[1];return k$0 === key2?get_data$2(eph):0} + return 0} + return 0} + return 0} + function MakeSeeded$2(H1,H2) + {function create(param,d) + {var k2=param[2],k1=param[1],c=create$6(0); + set_data$0(c,d); + set_key1(c,k1); + set_key2(c,k2); + return c} + function hash(seed,param) + {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} + function equal(c,param) + {var k2=param[2],k1=param[1],match=get_key1(c),match$0=get_key2(c); + if(match && match$0) + {var k2$0=match$0[1],k1$0=match[1]; + if(caml_call2(H1[1],k1,k1$0) && caml_call2(H2[1],k2,k2$0))return 0; + return 1} + return 2} + function get_key(c) + {var match=get_key1(c),match$0=get_key2(c); + if(match && match$0) + {var k2=match$0[1],k1=match[1];return [0,[0,k1,k2]]} + return 0} + function set_key_data(c,param,d) + {var k2=param[2],k1=param[1]; + unset_data$0(c); + set_key1(c,k1); + 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_} + 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]; + function hash$0(seed,x){return caml_call1(H1[2],x)} + var + include=MakeSeeded$2([0,equal$0,hash$0],_fZ_), + clear=include[2], + reset=include[3], + copy=include[4], + add=include[5], + remove=include[6], + find=include[7], + find_opt=include[8], + find_all=include[9], + replace=include[10], + mem=include[11], + iter=include[12], + filter_map_inplace=include[13], + fold=include[14], + length=include[15], + stats=include[16], + to_seq=include[17], + to_seq_keys=include[18], + to_seq_values=include[19], + add_seq=include[20], + replace_seq=include[21], + clean=include[23], + stats_alive=include[24], + _f0_=include[1]; + function create(sz){return caml_call2(_f0_,_cT_,sz)} + function of_seq(i) + {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} + return [0, + create, + clear, + reset, + copy, + add, + remove, + find, + find_opt, + find_all, + replace, + mem, + iter, + filter_map_inplace, + fold, + length, + stats, + to_seq, + to_seq_keys, + to_seq_values, + add_seq, + replace_seq, + of_seq, + clean, + 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} + function test_keys(k1,k2,e) + {var match=get_key1(e),match$0=get_key2(e); + if(match && match$0) + {var x2=match$0[1],x1=match[1];if(x1 === k1 && x2 === k2)return 1} + return 0} + function remove$1(b,k1,k2) + {var l=b[1],acc=0; + for(;;) + {if(l) + {var h=l[1],t=l[2]; + if(test_keys(k1,k2,h)){b[1] = rev_append(acc,t);return 0} + var l$0=l[2],acc$0=[0,h,acc],l=l$0,acc=acc$0; + continue} + return 0}} + function find$3(b,k1,k2) + {var + _fW_=b[1], + match=find_opt(function(_fX_){return test_keys(k1,k2,_fX_)},_fW_); + 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 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)} + 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_; + 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} + 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_; + 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} + break}} + var _fQ_=get_data$3(eph); + return _fQ_} + catch(_fS_) + {_fS_ = caml_wrap_exception(_fS_);if(_fS_ === Exit)return 0;throw _fS_}} + 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_; + 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} + 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_; + 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} + break}} + return h[1]} + function equal(c,k) + {var len=k.length - 1,len$0=length$9(c); + if(len !== len$0)return 1; + var i$1=len - 1 | 0,i=i$1; + for(;;) + {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} + return 1} + return 2} + return 0}} + function get_key(c) + {var len=length$9(c); + if(0 === len)return [0,[0]]; + var match=get_key$1(c,0); + if(match) + {var k0=match[1],a=caml_make_vect(len,k0),i$1=len - 1 | 0,i=i$1; + for(;;) + {if(1 <= i) + {var match$0=get_key$1(c,i); + if(match$0) + {var ki=match$0[1]; + caml_check_bound(a,i)[1 + i] = ki; + var i$0=i - 1 | 0,i=i$0; + continue} + return 0} + return [0,a]}} + 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_; + 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} + 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_; + 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_}} + return MakeSeeded$0 + ([0,create,hash,equal,get_data$3,get_key,set_key_data,check_key])} + function Make$4(H) + {var equal=H[1]; + function hash(seed,x){return caml_call1(H[2],x)} + var + include=MakeSeeded$3([0,equal,hash]), + clear=include[2], + reset=include[3], + copy=include[4], + add=include[5], + remove=include[6], + find=include[7], + find_opt=include[8], + find_all=include[9], + replace=include[10], + mem=include[11], + iter=include[12], + filter_map_inplace=include[13], + fold=include[14], + length=include[15], + stats=include[16], + to_seq=include[17], + to_seq_keys=include[18], + to_seq_values=include[19], + add_seq=include[20], + replace_seq=include[21], + clean=include[23], + stats_alive=include[24], + _fy_=include[1]; + function create(sz){return caml_call2(_fy_,_cU_,sz)} + function of_seq(i) + {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} + return [0, + create, + clear, + reset, + copy, + add, + remove, + find, + find_opt, + find_all, + replace, + mem, + iter, + filter_map_inplace, + fold, + length, + stats, + to_seq, + to_seq_keys, + to_seq_values, + add_seq, + replace_seq, + of_seq, + 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 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_; + 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} + 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_}} + function remove$2(b,k) + {var l=b[1],acc=0; + for(;;) + {if(l) + {var h=l[1],t=l[2]; + if(test_keys$0(k,h)){b[1] = rev_append(acc,t);return 0} + var l$0=l[2],acc$0=[0,h,acc],l=l$0,acc=acc$0; + continue} + return 0}} + function find$4(b,k) + {var + _fq_=b[1], + match=find_opt(function(_fr_){return test_keys$0(k,_fr_)},_fq_); + if(match){var e=match[1];return get_data$3(e)} + return 0} + function length$10(b){return length$1(b[1])} + function clear$5(b){b[1] = 0;return 0} + var + Stdlib_Ephemeron= + [0, + [0, + create$5, + get_key$0, + get_key_copy$0, + set_key$0, + unset_key$0, + check_key$0, + blit_key$0, + get_data$1, + get_data_copy, + set_data, + unset_data, + check_data, + blit_data, + make$4, + query, + Make$2, + MakeSeeded$1, + [0,make$5,add$1,remove$0,find$2,length$7,clear$3]], + [0, + create$6, + get_key1, + get_key1_copy, + set_key1, + unset_key1, + check_key1, + get_key2, + get_key2_copy, + set_key2, + unset_key2, + check_key2, + blit_key1, + blit_key2, + blit_key12, + get_data$2, + get_data_copy$0, + set_data$0, + unset_data$0, + check_data$0, + blit_data$0, + make$6, + query$0, + Make$3, + MakeSeeded$2, + [0,make$7,add$2,remove$1,find$3,length$8,clear$4]], + [0, + create$7, + get_key$1, + get_key_copy$1, + set_key$1, + unset_key$1, + check_key$1, + blit_key$1, + get_data$3, + get_data_copy$1, + set_data$1, + unset_data$1, + check_data$1, + blit_data$1, + make$8, + query$1, + Make$4, + MakeSeeded$3, + [0,make$9,add$3,remove$2,find$4,length$10,clear$5]], + [0, + function(_fp_) + {return MakeSeeded$0 + ([0,_fp_[3],_fp_[1],_fp_[2],_fp_[5],_fp_[4],_fp_[6],_fp_[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; + var n$3=caml_ml_string_length(name) - 1 | 0,n=n$3; + for(;;) + {if(0 <= n) + {if(caml_call2(is_dir_sep,name,n)){var n$0=n - 1 | 0,n=n$0;continue} + var p=n + 1 | 0,n$1=n; + for(;;) + {if(0 <= n$1) + {if(caml_call2(is_dir_sep,name,n$1)) + return sub$0(name,n$1 + 1 | 0,(p - n$1 | 0) - 1 | 0); + var n$2=n$1 - 1 | 0,n$1=n$2; + continue} + return sub$0(name,0,p)}} + return sub$0(name,0,1)}} + function generic_dirname(is_dir_sep,current_dir_name,name) + {if(caml_string_equal(name,cst$101))return current_dir_name; + var n$5=caml_ml_string_length(name) - 1 | 0,n=n$5; + for(;;) + {if(0 <= n) + {if(caml_call2(is_dir_sep,name,n)){var n$0=n - 1 | 0,n=n$0;continue} + var n$1=n; + for(;;) + {if(0 <= n$1) + {if(caml_call2(is_dir_sep,name,n$1)) + {var n$3=n$1; + for(;;) + {if(0 <= n$3) + {if(caml_call2(is_dir_sep,name,n$3)) + {var n$4=n$3 - 1 | 0,n$3=n$4;continue} + return sub$0(name,0,n$3 + 1 | 0)} + return sub$0(name,0,1)}} + var n$2=n$1 - 1 | 0,n$1=n$2; + continue} + return current_dir_name}} + return sub$0(name,0,1)}} + 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_} + function is_implicit(n) + {var _fi_=is_relative(n); + if(_fi_) + {var + _fj_=caml_ml_string_length(n) < 2?1:0, + _fk_=_fj_ || caml_string_notequal(sub$0(n,0,2),cst$103); + if(_fk_) + var + _fl_=caml_ml_string_length(n) < 3?1:0, + _fm_=_fl_ || caml_string_notequal(sub$0(n,0,3),cst$102); + else + var _fm_=_fk_} + else + var _fm_=_fi_; + return _fm_} + function check_suffix(name,suff){return ends_with$0(suff,name)} + function chop_suffix_opt(suffix,filename) + {var + len_s=caml_ml_string_length(suffix), + len_f=caml_ml_string_length(filename); + if(len_s <= len_f) + {var r=sub$0(filename,len_f - len_s | 0,len_s); + return caml_string_equal(r,suffix) + ?[0,sub$0(filename,0,len_f - len_s | 0)] + :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} + 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_; + 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} + break}} + add_char(b,39); + return contents(b)} + function quote_command(cmd,stdin,stdout,stderr,args) + {if(stderr) + var + f=stderr[1], + _e__=caml_equal(stderr,stdout)?cst_2_1:cat(cst_2,quote(f)), + _e$_=_e__; + else + var _e$_=cst$109; + if(stdout) + var f$0=stdout[1],_fa_=cat(cst$104,quote(f$0)); + else + var _fa_=cst$108; + var _fb_=cat(_fa_,_e$_); + if(stdin) + var f$1=stdin[1],_fc_=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 + Unix= + [0, + null$0, + current_dir_name, + parent_dir_name, + dir_sep, + is_dir_sep, + is_relative, + is_implicit, + check_suffix, + chop_suffix_opt, + _cV_, + 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_; + else + var _e7_=92 === c?1:0,_e6_=_e7_ || (58 === c?1:0); + return _e6_} + 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_) + {var + _e1_=caml_ml_string_length(n) < 1?1:0, + _e2_=_e1_ || (92 !== caml_string_get(n,0)?1:0); + if(_e2_) + var + _e3_=caml_ml_string_length(n) < 2?1:0, + _e4_=_e3_ || (58 !== caml_string_get(n,1)?1:0); + else + var _e4_=_e2_} + else + var _e4_=_e0_; + return _e4_} + function is_implicit$0(n) + {var _eQ_=is_relative$0(n); + if(_eQ_) + {var + _eR_=caml_ml_string_length(n) < 2?1:0, + _eS_=_eR_ || caml_string_notequal(sub$0(n,0,2),cst$113); + if(_eS_) + {var + _eT_=caml_ml_string_length(n) < 2?1:0, + _eU_=_eT_ || caml_string_notequal(sub$0(n,0,2),cst$112); + if(_eU_) + {var + _eV_=caml_ml_string_length(n) < 3?1:0, + _eW_=_eV_ || caml_string_notequal(sub$0(n,0,3),cst$111); + if(_eW_) + var + _eX_=caml_ml_string_length(n) < 3?1:0, + _eY_=_eX_ || caml_string_notequal(sub$0(n,0,3),cst$110); + else + var _eY_=_eW_} + else + var _eY_=_eU_} + else + var _eY_=_eS_} + else + var _eY_=_eQ_; + return _eY_} + function check_suffix$0(name,suff) + {var _eN_=caml_ml_string_length(suff) <= caml_ml_string_length(name)?1:0; + if(_eN_) + 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_); + else + var _eP_=_eN_; + return _eP_} + function chop_suffix_opt$0(suffix,filename) + {var + len_s=caml_ml_string_length(suffix), + len_f=caml_ml_string_length(filename); + 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_) + ?[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 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; + if(! (n < 1)) + {var j=_eJ_; + for(;;) + {add_char(b,92); + var _eK_=j + 1 | 0; + if(n !== j){var j=_eK_;continue} + break}} + return 0} + function loop$0(counter,i) + {var i$0=i; + for(;;) + {if(i$0 === l)return add_char(b,34); + var c=caml_string_get(s,i$0); + if(34 === c) + {var _eH_=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])} + if(92 === c) + {var _eI_=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])} + add_char(b,c); + var i$1=i$0 + 1 | 0,i$0=i$1; + continue}} + function loop_bs(counter,n,i) + {var n$0=n,i$0=i; + for(;;) + {if(i$0 === l){add_char(b,34);return add_bs(n$0)} + var match=caml_string_get(s,i$0); + if(34 === match) + {add_bs((2 * n$0 | 0) + 1 | 0); + add_char(b,34); + var _eG_=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_])} + 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); + if(counter < 50) + {var counter$0=counter + 1 | 0;return loop$0(counter$0,i$0)} + return caml_trampoline_return(loop$0,[0,i$0])}} + function loop(i){return caml_trampoline(loop$0(0,i))} + loop(0); + return contents(b)} + function quote_cmd_filename(f) + {if(! contains$0(f,34) && ! contains$0(f,37)) + return contains$0(f,32)?cat(cst$116,cat(f,cst$115)):f; + return failwith(cat(cst_Filename_quote_command_bad,f))} + function quote_command$0(cmd,stdin,stdout,stderr,args) + {if(stderr) + var + f=stderr[1], + _ex_= + caml_equal(stderr,stdout) + ?cst_2_1$0 + :cat(cst_2$0,quote_cmd_filename(f)), + _ey_=_ex_; + else + var _ey_=cst$125; + var _ez_=[0,_ey_,_cW_]; + if(stdout) + var f$0=stdout[1],_eA_=cat(cst$117,quote_cmd_filename(f$0)); + else + var _eA_=cst$124; + var _eB_=[0,_eA_,_ez_]; + if(stdin) + var f$1=stdin[1],_eC_=cat(cst$118,quote_cmd_filename(f$1)); + else + var _eC_=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_]; + 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} + else + if(31 === _eF_)switch$0 = 1} + else + if(42 <= c) + {if(60 === c)switch$0 = 1} + else + if(33 <= c) + switch(c - 33 | 0) + {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_]])} + function drive_and_path(s) + {var _et_=2 <= caml_ml_string_length(s)?1:0; + if(_et_) + {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_} + 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_]} + return [0,cst$126,s]} + function dirname$0(s) + {var + match=drive_and_path(s), + path=match[2], + drive=match[1], + dir=generic_dirname(is_dir_sep$0,current_dir_name$0,path); + return cat(drive,dir)} + function basename$0(s) + {var match=drive_and_path(s),path=match[2]; + return generic_basename(is_dir_sep$0,current_dir_name$0,path)} + var + Win32= + [0, + null$1, + current_dir_name$0, + parent_dir_name$0, + dir_sep$0, + is_dir_sep$0, + is_relative$0, + is_implicit$0, + check_suffix$0, + chop_suffix_opt$0, + temp_dir_name, + quote$0, + 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_)} + var + Cygwin= + [0, + null$2, + current_dir_name$1, + parent_dir_name$1, + dir_sep$1, + is_dir_sep$0, + is_relative$0, + is_implicit$0, + check_suffix$0, + chop_suffix_opt$0, + _cV_, + quote, + quote_command, + basename$1, + dirname$1], + Sysdeps= + caml_string_notequal(os_type,cst_Cygwin) + ?caml_string_notequal(os_type,cst_Win32)?Unix:Win32 + :Cygwin, + null$3=Sysdeps[1], + current_dir_name$2=Sysdeps[2], + parent_dir_name$2=Sysdeps[3], + dir_sep$2=Sysdeps[4], + is_dir_sep$1=Sysdeps[5], + is_relative$1=Sysdeps[6], + is_implicit$1=Sysdeps[7], + check_suffix$1=Sysdeps[8], + chop_suffix_opt$1=Sysdeps[9], + temp_dir_name$0=Sysdeps[10], + quote$1=Sysdeps[11], + quote_command$1=Sysdeps[12], + basename$2=Sysdeps[13], + dirname$2=Sysdeps[14]; + function concat$4(dirname,filename) + {var l=caml_ml_string_length(dirname); + if(0 !== l && ! is_dir_sep$1(dirname,l - 1 | 0)) + return cat(dirname,cat(dir_sep$2,filename)); + return cat(dirname,filename)} + function chop_suffix(name,suff) + {return check_suffix$1(name,suff) + ?sub$0 + (name, + 0, + caml_ml_string_length(name) - caml_ml_string_length(suff) | 0) + :invalid_arg(cst_Filename_chop_suffix)} + function extension_len(name) + {var i$4=caml_ml_string_length(name) - 1 | 0,i$1=i$4; + for(;;) + {if(0 <= i$1 && ! is_dir_sep$1(name,i$1)) + {if(46 === caml_string_get(name,i$1)) + {var i$2=i$1 - 1 | 0,i=i$2; + for(;;) + {if(0 <= i && ! is_dir_sep$1(name,i)) + {if(46 === caml_string_get(name,i)) + {var i$0=i - 1 | 0,i=i$0;continue} + return caml_ml_string_length(name) - i$1 | 0} + return 0}} + var i$3=i$1 - 1 | 0,i$1=i$3; + continue} + return 0}} + function extension(name) + {var l=extension_len(name); + return 0 === l?cst$127:sub$0(name,caml_ml_string_length(name) - l | 0,l)} + function chop_extension(name) + {var l=extension_len(name); + return 0 === l + ?invalid_arg(cst_Filename_chop_extension) + :sub$0(name,0,caml_ml_string_length(name) - l | 0)} + 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)}]; + 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))} + 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]} + function temp_file(opt,prefix,suffix) + {if(opt) + var sth=opt[1],temp_dir=sth; + else + var temp_dir=current_temp_dir_name[1]; + function try_name(counter) + {var counter$0=counter; + for(;;) + {var name=temp_file_name(temp_dir,prefix,suffix); + try + {runtime.caml_sys_close(caml_sys_open(name,_cY_,384));return name} + catch(e) + {e = caml_wrap_exception(e); + if(e[1] === Sys_error) + {if(1000 <= counter$0)throw e; + var counter$1=counter$0 + 1 | 0,counter$0=counter$1; + 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; + else + var temp_dir=current_temp_dir_name[1]; + function try_name(counter) + {var counter$0=counter; + 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_} + catch(e) + {e = caml_wrap_exception(e); + if(e[1] === Sys_error) + {if(1000 <= counter$0)throw e; + var counter$1=counter$0 + 1 | 0,counter$0=counter$1; + continue} + throw e}}} + return try_name(0)} + var + Stdlib_Filename= + [0, + current_dir_name$2, + parent_dir_name$2, + dir_sep$2, + concat$4, + is_relative$1, + is_implicit$1, + check_suffix$1, + chop_suffix, + chop_suffix_opt$1, + extension, + remove_extension, + chop_extension, + basename$2, + dirname$2, + null$3, + temp_file, + open_temp_file, + get_temp_dir_name, + set_temp_dir_name, + temp_dir_name$0, + quote$1, + quote_command$1]; + caml_register_global(826,Stdlib_Filename,"Stdlib__Filename"); + function add$4(x,y){return [254,x[1] + y[1],x[2] + y[2]]} + function sub$4(x,y){return [254,x[1] - y[1],x[2] - y[2]]} + function neg(x){return [254,- x[1],- x[2]]} + function conj(x){return [254,x[1],- x[2]]} + function mul(x,y) + {return [254,x[1] * y[1] - x[2] * y[2],x[1] * y[2] + x[2] * y[1]]} + function div(x,y) + {if(Math.abs(y[2]) <= Math.abs(y[1])) + {var r=y[2] / y[1],d=y[1] + r * y[2]; + return [254,(x[1] + r * x[2]) / d,(x[2] - r * x[1]) / d]} + var r$0=y[1] / y[2],d$0=y[2] + r$0 * y[1]; + return [254,(r$0 * x[1] + x[2]) / d$0,(r$0 * x[2] - x[1]) / d$0]} + function inv(x){return div(one$4,x)} + function norm2(x){return x[1] * x[1] + x[2] * x[2]} + function norm(x) + {var r=Math.abs(x[1]),i=Math.abs(x[2]); + if(r == 0.)return i; + if(i == 0.)return r; + if(i <= r){var q=i / r;return r * Math.sqrt(1. + q * q)} + var q$0=r / i; + return i * Math.sqrt(1. + q$0 * q$0)} + 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_; + var r=Math.abs(x[1]),i=Math.abs(x[2]); + if(i <= r) + var + q=i / r, + w=Math.sqrt(r) * Math.sqrt(0.5 * (1. + Math.sqrt(1. + q * q))); + else + var + q$0=r / i, + w=Math.sqrt(i) * Math.sqrt(0.5 * (q$0 + Math.sqrt(1. + q$0 * q$0))); + if(0. <= x[1])return [254,w,0.5 * x[2] / w]; + var w$0=0. <= x[2]?w:- w; + return [254,0.5 * i / w,w$0]} + 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_]} + function pow(x,y){return exp(mul(y,log(x)))} + var + Stdlib_Complex= + [0, + zero$4, + one$4, + i, + neg, + conj, + add$4, + sub$4, + mul, + inv, + div, + sqrt, + norm2, + norm, + arg, + polar, + exp, + log, + pow]; + caml_register_global(827,Stdlib_Complex,"Stdlib__Complex"); + var + Stdlib_ArrayLabels= + [0, + make_float, + init$3, + create_matrix, + create_matrix, + append$1, + concat$2, + sub$1, + copy$1, + fill$0, + blit$1, + to_list$1, + of_list, + iter$5, + iteri$3, + map$7, + mapi$3, + fold_left$3, + fold_left_map$0, + fold_right$2, + iter2$1, + map2$1, + for_all$3, + exists$3, + for_all2$1, + exists2$1, + mem$0, + memq$0, + find_opt$0, + find_map$1, + split$0, + combine$0, + sort, + fast_sort$0, + fast_sort$0, + to_seq$4, + to_seqi$1, + of_seq$2, + Floatarray]; + caml_register_global(828,Stdlib_ArrayLabels,"Stdlib__ArrayLabels"); + var + Stdlib_ListLabels= + [0, + length$1, + compare_lengths, + compare_length_with, + cons$0, + hd, + tl, + nth, + nth_opt, + rev, + init$0, + append, + rev_append, + flatten, + flatten, + equal$6, + compare$6, + iter$2, + iteri$0, + map$4, + mapi$0, + rev_map, + filter_map$0, + concat_map, + fold_left_map, + fold_left$0, + fold_right, + iter2$0, + map2$0, + rev_map2, + fold_left2$0, + fold_right2, + for_all$0, + exists$0, + for_all2$0, + exists2$0, + mem, + memq, + find$0, + find_opt, + find_map$0, + find_all, + find_all, + filteri, + partition$0, + partition_map$0, + assoc, + assoc_opt, + assq, + assq_opt, + mem_assoc, + mem_assq, + remove_assoc, + remove_assq, + split, + combine, + fast_sort, + fast_sort, + fast_sort, + sort_uniq, + merge, + to_seq$1, + of_seq]; + caml_register_global(829,Stdlib_ListLabels,"Stdlib__ListLabels"); + var + Stdlib_BytesLabels= + [0, + make$0, + init$1, + empty$0, + copy, + to_bytes, + of_bytes, + sub, + sub_string, + extend, + fill, + blit, + blit$0, + concat$0, + cat$0, + iter$3, + iteri$1, + map$5, + mapi$1, + fold_left$1, + fold_right$0, + for_all$1, + exists$1, + trim, + escaped$0, + index, + index_opt, + rindex, + rindex_opt, + index_from, + index_from_opt, + rindex_from, + rindex_from_opt, + contains, + contains_from, + rcontains_from, + uppercase$0, + lowercase$0, + capitalize, + uncapitalize, + uppercase_ascii$0, + lowercase_ascii$0, + capitalize_ascii, + uncapitalize_ascii, + compare$8, + equal$8, + starts_with, + ends_with, + unsafe_to_string, + unsafe_of_string, + split_on_char, + to_seq$2, + to_seqi, + of_seq$0, + get_utf_8_uchar, + set_utf_8_uchar, + is_valid_utf_8, + get_utf_16be_uchar, + set_utf_16be_uchar, + is_valid_utf_16be, + get_utf_16le_uchar, + set_utf_16le_uchar, + is_valid_utf_16le, + get_uint8, + get_int8, + get_uint16_ne, + get_uint16_be, + get_uint16_le, + get_int16_ne, + get_int16_be, + get_int16_le, + get_int32_ne, + get_int32_be, + get_int32_le, + get_int64_ne, + get_int64_be, + get_int64_le, + set_uint8, + set_int8, + set_uint16_ne, + set_int16_be, + set_int16_le, + set_int16_ne, + set_int16_be, + set_int16_le, + set_int32_ne, + set_int32_be, + set_int32_le, + set_int64_ne, + set_int64_be, + set_int64_le]; + caml_register_global(830,Stdlib_BytesLabels,"Stdlib__BytesLabels"); + var + Stdlib_StringLabels= + [0, + make$1, + init$2, + empty$1, + of_bytes, + to_bytes, + concat$1, + cat, + equal$9, + compare$9, + starts_with$0, + ends_with$0, + contains_from$0, + rcontains_from$0, + contains$0, + sub$0, + split_on_char$0, + map$6, + mapi$2, + fold_left$2, + fold_right$1, + for_all$2, + exists$2, + trim$0, + escaped$1, + uppercase_ascii$1, + lowercase_ascii$1, + capitalize_ascii$0, + uncapitalize_ascii$0, + iter$4, + iteri$2, + index_from$0, + index_from_opt$0, + rindex_from$0, + rindex_from_opt$0, + index$0, + index_opt$0, + rindex$0, + rindex_opt$0, + to_seq$3, + to_seqi$0, + of_seq$1, + get_utf_8_uchar$0, + is_valid_utf_8$0, + get_utf_16be_uchar$0, + is_valid_utf_16be$0, + get_utf_16le_uchar$0, + is_valid_utf_16le$0, + blit$0, + copy$0, + fill, + uppercase$1, + lowercase$1, + capitalize$0, + uncapitalize$0, + get_uint8$0, + get_int8$0, + get_uint16_ne$0, + get_uint16_be$0, + get_uint16_le$0, + get_int16_ne$0, + get_int16_be$0, + get_int16_le$0, + get_int32_ne$0, + get_int32_be$0, + get_int32_le$0, + get_int64_ne$0, + get_int64_be$0, + get_int64_le$0]; + caml_register_global(831,Stdlib_StringLabels,"Stdlib__StringLabels"); + var Stdlib_MoreLabels=[0,Stdlib_Hashtbl,Stdlib_Map,Stdlib_Set]; + caml_register_global(832,Stdlib_MoreLabels,"Stdlib__MoreLabels"); + var Stdlib_StdLabels=[0]; + caml_register_global(833,Stdlib_StdLabels,"Stdlib__StdLabels"); + var + float32=0, + float64=1, + int8_signed=2, + int8_unsigned=3, + int16_signed=4, + int16_unsigned=5, + int32$1=6, + int64$1=7, + int$2=8, + nativeint$1=9, + complex32=10, + complex64=11, + char$0=12; + function kind_size_in_bytes(param) + {switch(param) + {case 0:return 4; + case 1:return 8; + case 2:return 1; + case 3:return 1; + case 4:return 2; + case 5:return 2; + case 6:return 4; + case 7:return 8; + case 8:return 4; + case 9:return 4; + case 10:return 8; + case 11:return 16; + default:return 1}} + var c_layout=0,fortran_layout=1; + 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_; + 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} + 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_; + 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} + break}} + return 0} + return caml_ba_set_generic(arr,idx,caml_call1(f,idx))} + function init$6(kind,layout,dims,f) + {var arr=caml_ba_create(kind,layout,dims),dlen=dims.length - 1; + return 0 === dlen + ?arr + :layout + ?(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_; + 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} + 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$_)} + 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__)}} + function size_in_bytes$0(arr) + {return kind_size_in_bytes(caml_ba_kind(arr))} + function of_value(kind,layout,v) + {var a=create$8(kind,layout);caml_call1(set$2(a),v);return a} + 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_)} + 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; + if(! (dim < 1)) + {var i$0=_d6_; + 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} + break}} + return arr} + var _d4_=dim - 1 | 0,_d3_=0; + if(! (_d4_ < 0)) + {var i=_d3_; + for(;;) + {caml_ba_set_1(arr,i,caml_call1(f,i)); + var _d5_=i + 1 | 0; + if(_d4_ !== i){var i=_d5_;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_; + 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} + 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); + return caml_mul + (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dZ_),_dY_)} + 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; + if(! (dim2 < 1)) + {var j$0=_dU_; + for(;;) + {var _dV_=1; + if(! (dim1 < 1)) + {var i$0=_dV_; + 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} + break}} + var _dW_=j$0 + 1 | 0; + if(dim2 !== j$0){var j$0=_dW_;continue} + break}} + return arr} + var _dP_=dim1 - 1 | 0,_dO_=0; + if(! (_dP_ < 0)) + {var i=_dO_; + for(;;) + {var _dR_=dim2 - 1 | 0,_dQ_=0; + if(! (_dR_ < 0)) + {var j=_dQ_; + 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} + break}} + var _dS_=i + 1 | 0; + if(_dP_ !== i){var i=_dS_;continue} + break}} + return arr} + function of_array$0(kind,layout,data) + {var + dim1=data.length - 1, + 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_; + 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_; + 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} + break}} + var _dM_=i + 1 | 0; + if(_dJ_ !== i){var i=_dM_;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); + return caml_mul + (caml_mul + (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dH_),_dG_), + _dF_)} + 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])} + function slice_right_2(a,n){return caml_ba_slice(a,[0,n])} + function init$9(kind,layout,dim1,dim2,dim3,f) + {var arr=create$11(kind,layout,dim1,dim2,dim3); + if(layout) + {var _dz_=1; + if(! (dim3 < 1)) + {var k$0=_dz_; + for(;;) + {var _dA_=1; + if(! (dim2 < 1)) + {var j$0=_dA_; + for(;;) + {var _dC_=1; + if(! (dim1 < 1)) + {var i$0=_dC_; + 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} + break}} + var _dD_=j$0 + 1 | 0; + if(dim2 !== j$0){var j$0=_dD_;continue} + break}} + var _dB_=k$0 + 1 | 0; + if(dim3 !== k$0){var k$0=_dB_;continue} + break}} + return arr} + var _dr_=dim1 - 1 | 0,_dq_=0; + if(! (_dr_ < 0)) + {var i=_dq_; + for(;;) + {var _dt_=dim2 - 1 | 0,_ds_=0; + if(! (_dt_ < 0)) + {var j=_ds_; + for(;;) + {var _dw_=dim3 - 1 | 0,_dv_=0; + if(! (_dw_ < 0)) + {var k=_dv_; + 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} + break}} + var _dx_=j + 1 | 0; + if(_dt_ !== j){var j=_dx_;continue} + break}} + var _du_=i + 1 | 0; + if(_dr_ !== i){var i=_du_;continue} + break}} + return arr} + function of_array$1(kind,layout,data) + {var + dim1=data.length - 1, + dim2=0 === dim1?0:caml_check_bound(data,0)[1].length - 1, + dim3= + 0 === dim2 + ?0 + :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_; + 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_; + 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_; + for(;;) + {caml_ba_set_3 + (ba, + i + ofs | 0, + 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} + break}} + var _do_=j + 1 | 0; + if(_dk_ !== j){var j=_do_;continue} + break}} + var _dl_=i + 1 | 0; + if(_di_ !== i){var i=_dl_;continue} + break}} + return ba} + function array0_of_genarray(a) + {return 0 === caml_ba_num_dims(a) + ?a + :invalid_arg(cst_Bigarray_array0_of_genarra)} + function array1_of_genarray(a) + {return 1 === caml_ba_num_dims(a) + ?a + :invalid_arg(cst_Bigarray_array1_of_genarra)} + function array2_of_genarray(a) + {return 2 === caml_ba_num_dims(a) + ?a + :invalid_arg(cst_Bigarray_array2_of_genarra)} + function array3_of_genarray(a) + {return 3 === caml_ba_num_dims(a) + ?a + :invalid_arg(cst_Bigarray_array3_of_genarra)} + function reshape_0(a){return caml_ba_reshape(a,[0])} + function reshape_1(a,dim1){return caml_ba_reshape(a,[0,dim1])} + function reshape_2(a,dim1,dim2){return caml_ba_reshape(a,[0,dim1,dim2])} + function reshape_3(a,dim1,dim2,dim3) + {return caml_ba_reshape(a,[0,dim1,dim2,dim3])} + var + Stdlib_Bigarray= + [0, + float32, + float64, + complex32, + complex64, + int8_signed, + int8_unsigned, + int16_signed, + int16_unsigned, + int$2, + int32$1, + int64$1, + nativeint$1, + char$0, + kind_size_in_bytes, + c_layout, + fortran_layout, + [0,init$6,dims,size_in_bytes], + [0, + create$8, + of_value, + caml_ba_change_layout, + size_in_bytes$0, + get$3, + set$2, + of_value], + [0, + create$9, + init$7, + caml_ba_change_layout, + size_in_bytes$1, + slice, + of_array], + [0, + create$10, + init$8, + caml_ba_change_layout, + size_in_bytes$2, + slice_left, + slice_right, + of_array$0], + [0, + create$11, + init$9, + caml_ba_change_layout, + size_in_bytes$3, + slice_left_1, + slice_right_1, + slice_left_2, + slice_right_2, + of_array$1], + array0_of_genarray, + array1_of_genarray, + array2_of_genarray, + array3_of_genarray, + caml_ba_reshape, + reshape_0, + reshape_1, + reshape_2, + reshape_3]; + 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 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)} + 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_} + 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_} + 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_} + 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_}} + 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_} + return [0,s]} + function read_upto(ic,buf,ofs,len) + {var ofs$0=ofs,len$0=len; + for(;;) + {if(0 !== len$0) + {var r=input(ic,buf,ofs$0,len$0); + if(0 !== r) + {var + len$1=len$0 - r | 0, + ofs$1=ofs$0 + r | 0, + ofs$0=ofs$1, + len$0=len$1; + continue}} + return ofs$0 - ofs | 0}} + function ensure(buf,ofs,n) + {var len=caml_ml_bytes_length(buf); + if((ofs + n | 0) <= len)return buf; + var new_len=[0,len]; + for(;;) + {if(new_len[1] < (ofs + n | 0)) + {new_len[1] = (2 * new_len[1] | 0) + 1 | 0;continue} + var + new_len$0=new_len[1], + new_len$1= + new_len$0 <= max_string_length + ?new_len$0 + :ofs < max_string_length + ?max_string_length + :failwith(cst_In_channel_input_all_chann), + new_buf=caml_create_bytes(new_len$1); + blit(buf,0,new_buf,0,ofs); + return new_buf}} + function input_all(ic) + {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$_; + var initial_size=-1} + var + initial_size$0=0 <= initial_size?initial_size:chunk_size, + initial_size$1= + initial_size$0 <= max_string_length?initial_size$0:max_string_length, + buf=caml_create_bytes(initial_size$1), + nread=read_upto(ic,buf,0,initial_size$1); + 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__} + function loop(buf,ofs) + {var buf$0=buf,ofs$0=ofs; + for(;;) + {var + buf$1=ensure(buf$0,ofs$0,chunk_size), + rem=caml_ml_bytes_length(buf$1) - ofs$0 | 0, + r=read_upto(ic,buf$1,ofs$0,rem); + if(r < rem)return sub_string(buf$1,0,ofs$0 + r | 0); + var ofs$1=ofs$0 + rem | 0,buf$0=buf$1,ofs$0=ofs$1; + continue}} + var buf$0=ensure(buf,nread,65537); + caml_bytes_set(buf$0,nread,c); + return loop(buf$0,nread + 1 | 0)} + var + Stdlib_In_channel= + [0, + stdin, + open_bin$0, + open_text$0, + open_gen$0, + with_open_bin, + with_open_text, + with_open_gen, + seek, + pos, + length$11, + close$0, + close_noerr$0, + input_char$0, + input_byte$0, + input_line$0, + input, + really_input$0, + really_input_string$0, + input_all, + set_binary_mode]; + 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 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)} + var + seek$0=_m_[1], + pos$0=_m_[2], + length$12=_m_[3], + Stdlib_Out_channel= + [0, + stdout, + stderr, + open_bin, + open_text, + open_gen, + with_open_bin$0, + with_open_text$0, + with_open_gen$0, + seek$0, + pos$0, + length$12, + close, + close_noerr, + flush, + flush_all, + output_char, + output_byte, + output_string, + output_bytes, + output, + output_substring, + set_binary_mode$0, + runtime.caml_ml_set_buffered, + runtime.caml_ml_is_buffered]; + caml_register_global(836,Stdlib_Out_channel,"Stdlib__Out_channel"); + return} + (globalThis)); + + +//# 1 "../../.js/dates_calc/dates_calc.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_fresh_oo_id=runtime.caml_fresh_oo_id, + caml_mul=runtime.caml_mul, + caml_register_global=runtime.caml_register_global, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, + caml_wrap_exception=runtime.caml_wrap_exception; + function caml_call2(f,a0,a1) + {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} + 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_Dates_calc_Dates_InvalidDa= + caml_string_of_jsbytes("Dates_calc.Dates.InvalidDate"), + cst_Dates_calc_Dates_Ambiguous= + caml_string_of_jsbytes("Dates_calc.Dates.AmbiguousComputation"), + Assert_failure=global_data.Assert_failure, + Stdlib_Format=global_data.Stdlib__Format, + Stdlib_Int=global_data.Stdlib__Int, + Dates_calc=[0]; + caml_register_global(10,Dates_calc,"Dates_calc"); + var + InvalidDate=[248,cst_Dates_calc_Dates_InvalidDa,caml_fresh_oo_id(0)], + AmbiguousComputation= + [248,cst_Dates_calc_Dates_Ambiguous,caml_fresh_oo_id(0)], + _h_=[0,caml_string_of_jsbytes("lib/dates.ml"),230,2], + _g_=[0,caml_string_of_jsbytes("lib/dates.ml"),226,2], + _f_= + [0, + [4,0,[0,2,4],0,[12,45,[4,0,[0,2,2],0,[12,45,[4,0,[0,2,2],0,0]]]]], + caml_string_of_jsbytes("%04d-%02d-%02d")], + _d_=[0,caml_string_of_jsbytes("lib/dates.ml"),123,2], + _e_=[0,caml_string_of_jsbytes("lib/dates.ml"),124,2], + _b_=[0,caml_string_of_jsbytes("lib/dates.ml"),109,2], + _c_=[0,caml_string_of_jsbytes("lib/dates.ml"),110,2], + _a_= + [0, + [12, + 91, + [4, + 0, + 0, + 0, + [11, + caml_string_of_jsbytes(" years, "), + [4, + 0, + 0, + 0, + [11, + caml_string_of_jsbytes(" months, "), + [4,0,0,0,[11,caml_string_of_jsbytes(" days]"),0]]]]]]], + caml_string_of_jsbytes("[%d years, %d months, %d days]")]; + function format_period(fmt,p) + {return caml_call5(Stdlib_Format[129],fmt,_a_,p[1],p[2],p[3])} + function make_period(years,months,days){return [0,years,months,days]} + function add_periods(d1,d2) + {return [0,d1[1] + d2[1] | 0,d1[2] + d2[2] | 0,d1[3] + d2[3] | 0]} + function sub_periods(d1,d2) + {return [0,d1[1] - d2[1] | 0,d1[2] - d2[2] | 0,d1[3] - d2[3] | 0]} + function mul_period(d1,m) + {return [0,caml_mul(d1[1],m),caml_mul(d1[2],m),caml_mul(d1[3],m)]} + function period_to_days(p) + {if(0 === p[1] && 0 === p[2])return p[3];throw AmbiguousComputation} + function is_leap_year(year) + {var _w_=0 === (year % 400 | 0)?1:0; + if(_w_) + var _x_=_w_; + else + var + _y_=0 === (year % 4 | 0)?1:0, + _x_=_y_?0 !== (year % 100 | 0)?1:0:_y_; + return _x_} + function days_in_month(month,is_leap_year) + {var switcher=month - 1 | 0; + if(11 < switcher >>> 0)throw InvalidDate; + switch(switcher) + {case 1:return is_leap_year?29:28; + case 3: + case 5: + case 8: + case 10:return 30; + default:return 31}} + function is_valid_date(d) + {try + {var _r_=1 <= d[3]?1:0; + if(_r_) + var + _s_=is_leap_year(d[1]), + _t_=days_in_month(d[2],_s_), + _u_=d[3] <= _t_?1:0; + else + var _u_=_r_; + return _u_} + catch(_v_) + {_v_ = caml_wrap_exception(_v_); + if(_v_ === InvalidDate)return 0; + throw _v_}} + function make_date(year,month,day) + {var d=[0,year,month,day];if(is_valid_date(d))return d;throw InvalidDate} + function add_months_to_first_of_month_d(year,month,months) + {var year$0=year,months$0=months; + for(;;) + {var new_month=month + months$0 | 0; + if(1 <= new_month && ! (12 < new_month))return [0,year$0,new_month]; + if(12 < new_month) + {var + months$1=months$0 - 12 | 0, + year$1=year$0 + 1 | 0, + year$0=year$1, + months$0=months$1; + continue} + var + months$2=months$0 + 12 | 0, + year$2=year$0 - 1 | 0, + year$0=year$2, + months$0=months$2; + continue}} + function add_dates(opt,d) + {if(opt)var sth=opt[1],round=sth;else var round=2; + return function(p) + {var + _o_=d[3], + match$0=add_months_to_first_of_month_d(d[1] + p[1] | 0,d[2],p[2]), + new_month$0=match$0[2], + new_year$0=match$0[1], + new_date=[0,new_year$0,new_month$0,_o_]; + if(is_valid_date(new_date)) + var _p_=new_date; + else + switch(round) + {case 0: + var switch$0=0; + if(1 <= new_date[2] && ! (12 < new_date[2])) + {var switch$1=0; + if(1 <= new_date[3] && ! (31 < new_date[3])) + if(is_valid_date(new_date)) + {var _p_=new_date;switch$1 = 1} + else + {var + match= + add_months_to_first_of_month_d(new_date[1],new_date[2],1), + new_month=match[2], + new_year=match[1], + _p_=[0,new_year,new_month,1]; + switch$1 = 1} + if(! switch$1)throw [0,Assert_failure,_e_]} + else + switch$0 = 1; + if(switch$0)throw [0,Assert_failure,_d_]; + break; + case 1: + var switch$2=0; + if(1 <= new_date[2] && ! (12 < new_date[2])) + {var switch$3=0; + if(1 <= new_date[3] && ! (31 < new_date[3])) + if(is_valid_date(new_date)) + {var _p_=new_date;switch$3 = 1} + else + {var + _m_=is_leap_year(new_date[1]), + _n_=days_in_month(new_date[2],_m_), + _p_=[0,new_date[1],new_date[2],_n_]; + switch$3 = 1} + if(! switch$3)throw [0,Assert_failure,_c_]} + else + switch$2 = 1; + if(switch$2)throw [0,Assert_failure,_b_]; + break; + default:throw AmbiguousComputation} + var d$0=_p_,days=p[3]; + for(;;) + {var + _q_=is_leap_year(d$0[1]), + days_in_d_month=days_in_month(d$0[2],_q_), + new_day=d$0[3] + days | 0; + if(1 <= new_day && new_day <= days_in_d_month) + return [0,d$0[1],d$0[2],new_day]; + if(days_in_d_month <= new_day) + {var + match$1=add_months_to_first_of_month_d(d$0[1],d$0[2],1), + new_month$1=match$1[2], + new_year$1=match$1[1], + days$0=(days - (days_in_d_month - d$0[3] | 0) | 0) - 1 | 0, + d$1=[0,new_year$1,new_month$1,1], + d$0=d$1, + days=days$0; + continue} + var + match$2=add_months_to_first_of_month_d(d$0[1],d$0[2],-1), + new_month$2=match$2[2], + new_year$2=match$2[1], + days$1=days + d$0[3] | 0, + d$2= + [0, + new_year$2, + new_month$2, + days_in_month(new_month$2,is_leap_year(new_year$2))], + d$0=d$2, + days=days$1; + continue}}} + function compare_dates(d1,d2) + {return 0 === caml_call2(Stdlib_Int[9],d1[1],d2[1]) + ?0 === caml_call2(Stdlib_Int[9],d1[2],d2[2]) + ?caml_call2(Stdlib_Int[9],d1[3],d2[3]) + :caml_call2(Stdlib_Int[9],d1[2],d2[2]) + :caml_call2(Stdlib_Int[9],d1[1],d2[1])} + function format_date(fmt,d) + {return caml_call5(Stdlib_Format[129],fmt,_f_,d[1],d[2],d[3])} + function first_day_of_month(d) + {if(is_valid_date(d))return make_date(d[1],d[2],1); + throw [0,Assert_failure,_g_]} + function last_day_of_month(d) + {if(is_valid_date(d)) + {var _l_=is_leap_year(d[1]),days_month=days_in_month(d[2],_l_); + return make_date(d[1],d[2],days_month)} + throw [0,Assert_failure,_h_]} + function neg_period(p){return [0,- p[1] | 0,- p[2] | 0,- p[3] | 0]} + function sub_dates(d1,d2) + {if(d1[1] === d2[1] && d1[2] === d2[2])return [0,0,0,d1[3] - d2[3] | 0]; + var cmp=compare_dates(d1,d2); + if(0 <= cmp) + {var + match=add_months_to_first_of_month_d(d2[1],d2[2],1), + new_d2_month=match[2], + new_d2_year=match[1], + new_d2=[0,new_d2_year,new_d2_month,1], + _i_=sub_dates(d1,new_d2), + _j_=d2[3], + _k_=is_leap_year(d2[1]); + return add_periods + ([0,0,0,(days_in_month(d2[2],_k_) - _j_ | 0) + 1 | 0],_i_)} + return neg_period(sub_dates(d2,d1))} + function date_to_ymd(d){return [0,d[1],d[2],d[3]]} + function period_to_ymds(p){return [0,p[1],p[2],p[3]]} + var + Dates_calc_Dates= + [0, + InvalidDate, + AmbiguousComputation, + make_date, + add_dates, + sub_dates, + compare_dates, + date_to_ymd, + format_date, + first_day_of_month, + last_day_of_month, + is_leap_year, + make_period, + neg_period, + add_periods, + sub_periods, + mul_period, + format_period, + period_to_days, + period_to_ymds]; + caml_register_global(14,Dates_calc_Dates,"Dates_calc__Dates"); + return} + (globalThis)); + + +//# 1 "../../.js/zarith/zarith.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_div=runtime.caml_div, + caml_equal=runtime.caml_equal, + caml_int64_to_float=runtime.caml_int64_to_float, + caml_ldexp_float=runtime.caml_ldexp_float, + caml_ml_string_length=runtime.caml_ml_string_length, + caml_mul=runtime.caml_mul, + 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_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])} + var + global_data=runtime.caml_get_global_data(), + cst_1_12=caml_string_of_jsbytes("1.12"), + cst_Z_log2up=caml_string_of_jsbytes("Z.log2up"), + cst_Z_log2=caml_string_of_jsbytes("Z.log2"), + cst_Z_signed_extract_negative_= + caml_string_of_jsbytes("Z.signed_extract: negative bit offset"), + cst_Z_signed_extract_nonpositi= + caml_string_of_jsbytes("Z.signed_extract: nonpositive bit length"), + cst_Z_testbit=caml_string_of_jsbytes("Z.testbit"), + cst_Z_Overflow=caml_string_of_jsbytes("Z.Overflow"), + cst_ml_z_overflow=caml_string_of_jsbytes("ml_z_overflow"), + cst_d=caml_string_of_jsbytes("%d"), + cst$0=caml_string_of_jsbytes(""), + cst_inf$1=caml_string_of_jsbytes("+inf"), + cst_inf$2=caml_string_of_jsbytes("-inf"), + cst_inf$3=caml_string_of_jsbytes("inf"), + cst_undef$0=caml_string_of_jsbytes("undef"), + cst_Q_of_string_invalid_digit= + caml_string_of_jsbytes("Q.of_string: invalid digit"), + cst_impossible_case$0=caml_string_of_jsbytes("impossible case"), + cst_impossible_case=caml_string_of_jsbytes("impossible case"), + cst_0=caml_string_of_jsbytes("0"), + cst_inf=caml_string_of_jsbytes("+inf"), + cst_inf$0=caml_string_of_jsbytes("-inf"), + cst_undef=caml_string_of_jsbytes("undef"), + cst=caml_string_of_jsbytes("/"), + cst_int64_of_big_int=caml_string_of_jsbytes("int64_of_big_int"), + cst_nativeint_of_big_int=caml_string_of_jsbytes("nativeint_of_big_int"), + cst_int32_of_big_int=caml_string_of_jsbytes("int32_of_big_int"), + cst_int_of_big_int=caml_string_of_jsbytes("int_of_big_int"), + cst_power_big_int_positive_big= + caml_string_of_jsbytes("power_big_int_positive_big_int"), + cst_power_int_positive_big_int= + caml_string_of_jsbytes("power_int_positive_big_int"), + cst_power_big_int_positive_int= + caml_string_of_jsbytes("power_big_int_positive_int"), + cst_power_int_positive_int= + caml_string_of_jsbytes("power_int_positive_int"), + Stdlib_Format=global_data.Stdlib__Format, + Stdlib_Buffer=global_data.Stdlib__Buffer, + Stdlib=global_data.Stdlib, + Stdlib_Sys=global_data.Stdlib__Sys, + Stdlib_Callback=global_data.Stdlib__Callback, + Stdlib_String=global_data.Stdlib__String, + Assert_failure=global_data.Assert_failure, + Zarith_version=[0,cst_1_12]; + caml_register_global(33,Zarith_version,"Zarith_version"); + var _a_=[248,cst_Z_Overflow,runtime.caml_fresh_oo_id(0)]; + runtime.ml_z_init(0); + caml_call2(Stdlib_Callback[2],cst_ml_z_overflow,_a_); + var + _S_=runtime.caml_int64_create_lo_mi_hi(1,0,0), + _aV_=[0,caml_string_of_jsbytes("q.ml"),486,25]; + function _b_(_gZ_) + {if(typeof _gZ_ === "number" && _gZ_ !== Stdlib[20])return - _gZ_ | 0; + return runtime.ml_z_neg(_gZ_)} + function _c_(_gX_,_gW_) + {if(typeof _gX_ === "number" && typeof _gW_ === "number") + {var _gY_=_gX_ + _gW_ | 0; + return 0 <= ((_gY_ ^ _gX_) & (_gY_ ^ _gW_)) + ?_gY_ + :runtime.ml_z_add(_gX_,_gW_)} + return runtime.ml_z_add(_gX_,_gW_)} + function _d_(_gU_,_gT_) + {if(typeof _gU_ === "number" && typeof _gT_ === "number") + {var _gV_=_gU_ - _gT_ | 0; + return 0 <= ((_gU_ ^ _gT_) & (_gV_ ^ _gU_)) + ?_gV_ + :runtime.ml_z_sub(_gU_,_gT_)} + return runtime.ml_z_sub(_gU_,_gT_)} + function _e_(_gS_,_gR_) + {if + (typeof _gS_ + === + "number" + && + typeof _gR_ + === + "number" + && + ! + runtime.ml_z_mul_overflows(_gS_,_gR_)) + return caml_mul(_gS_,_gR_); + return runtime.ml_z_mul(_gS_,_gR_)} + function _f_(_gQ_,_gP_) + {return typeof _gP_ === "number" + ?-1 === _gP_ + ?_b_(_gQ_) + :typeof _gQ_ === "number" + ?caml_div(_gQ_,_gP_) + :runtime.ml_z_div(_gQ_,_gP_) + :runtime.ml_z_div(_gQ_,_gP_)} + function _g_(_gO_,_gN_) + {return typeof _gN_ === "number" + ?-1 === _gN_ + ?0 + :typeof _gO_ === "number" + ?runtime.caml_mod(_gO_,_gN_) + :runtime.ml_z_rem(_gO_,_gN_) + :runtime.ml_z_rem(_gO_,_gN_)} + function _h_(_gM_,_gL_) + {return typeof _gL_ === "number" + ?-1 === _gL_ + ?_b_(_gM_) + :typeof _gM_ === "number" + ?caml_div(_gM_,_gL_) + :runtime.ml_z_divexact(_gM_,_gL_) + :runtime.ml_z_divexact(_gM_,_gL_)} + function _i_(_gK_) + {if(typeof _gK_ === "number" && _gK_ !== Stdlib[19])return _gK_ + 1 | 0; + return runtime.ml_z_succ(_gK_)} + function _j_(_gJ_) + {if(typeof _gJ_ === "number" && _gJ_ !== Stdlib[20])return _gJ_ - 1 | 0; + return runtime.ml_z_pred(_gJ_)} + function _k_(_gI_) + {return typeof _gI_ === "number" + ?0 <= _gI_ + ?_gI_ + :_gI_ !== Stdlib[20]?- _gI_ | 0:runtime.ml_z_abs(_gI_) + :runtime.ml_z_abs(_gI_)} + function _l_(_gH_,_gG_) + {if(typeof _gH_ === "number" && typeof _gG_ === "number") + return _gH_ & _gG_; + return runtime.ml_z_logand(_gH_,_gG_)} + function _m_(_gF_,_gE_) + {if(typeof _gF_ === "number" && typeof _gE_ === "number") + return _gF_ | _gE_; + return runtime.ml_z_logor(_gF_,_gE_)} + function _n_(_gD_,_gC_) + {if(typeof _gD_ === "number" && typeof _gC_ === "number") + return _gD_ ^ _gC_; + return runtime.ml_z_logxor(_gD_,_gC_)} + function _o_(_gB_) + {return typeof _gB_ === "number"?_gB_ ^ -1:runtime.ml_z_lognot(_gB_)} + function _p_(_gz_,_gy_) + {if(typeof _gz_ === "number" && 0 <= _gy_ && _gy_ < Stdlib_Sys[9]) + {var _gA_=_gz_ << _gy_; + return _gA_ >> _gy_ === _gz_?_gA_:runtime.ml_z_shift_left(_gz_,_gy_)} + return runtime.ml_z_shift_left(_gz_,_gy_)} + function _q_(_gw_,_gv_) + {if(typeof _gw_ === "number" && 0 <= _gv_) + {var _gx_=_gv_ < Stdlib_Sys[9]?_gv_:Stdlib_Sys[9] - 1 | 0; + return _gw_ >> _gx_} + return runtime.ml_z_shift_right(_gw_,_gv_)} + function _r_(_gu_,_gt_) + {if(typeof _gu_ === "number" && 0 <= _gt_) + return Stdlib_Sys[9] <= _gt_ + ?0 + :0 <= _gu_?_gu_ >>> _gt_ | 0:- ((- _gu_ | 0) >>> _gt_ | 0) | 0; + return runtime.ml_z_shift_right_trunc(_gu_,_gt_)} + function _s_(_gs_) + {return typeof _gs_ === "number"?_gs_:runtime.ml_z_to_int(_gs_)} + var _t_=0,_u_=1,_v_=-1; + function _w_(_gr_,_gq_) + {return 0 < runtime.ml_z_compare(_gr_,_gq_)?_gq_:_gr_} + function _x_(_gp_,_go_) + {return 0 <= runtime.ml_z_compare(_gp_,_go_)?_gp_:_go_} + function _y_(_gn_,_gm_){return runtime.ml_z_compare(_gn_,_gm_) <= 0?1:0} + function _z_(_gl_,_gk_){return 0 <= runtime.ml_z_compare(_gl_,_gk_)?1:0} + function _A_(_gj_,_gi_){return runtime.ml_z_compare(_gj_,_gi_) < 0?1:0} + function _B_(_gh_,_gg_){return 0 < runtime.ml_z_compare(_gh_,_gg_)?1:0} + function _C_(_gf_){return runtime.ml_z_format(cst_d,_gf_)} + function _D_(_ge_) + {return runtime.ml_z_of_substring_base + (0,_ge_,0,caml_ml_string_length(_ge_))} + function _E_(_gb_,_gc_,_gd_) + {return runtime.ml_z_of_substring_base(0,_gb_,_gc_,_gd_)} + function _F_(_ga_,_f$_) + {return runtime.ml_z_of_substring_base + (_ga_,_f$_,0,caml_ml_string_length(_f$_))} + function _G_(_f5_,_f4_) + {var _f6_=runtime.ml_z_div_rem(_f5_,_f4_),_f7_=_f6_[2],_f8_=_f6_[1]; + if(0 <= runtime.ml_z_sign(_f7_))return [0,_f8_,_f7_]; + if(0 <= runtime.ml_z_sign(_f4_)) + {var _f9_=_c_(_f7_,_f4_);return [0,_j_(_f8_),_f9_]} + var _f__=_d_(_f7_,_f4_); + return [0,_i_(_f8_),_f__]} + function _H_(_f3_,_f2_) + {return 0 <= runtime.ml_z_sign(_f2_) + ?runtime.ml_z_fdiv(_f3_,_f2_) + :runtime.ml_z_cdiv(_f3_,_f2_)} + function _I_(_f0_,_fZ_) + {var _f1_=_g_(_f0_,_fZ_); + return 0 <= runtime.ml_z_sign(_f1_)?_f1_:_c_(_f1_,_k_(_fZ_))} + function _J_(_fR_,_fQ_) + {var + _fS_=runtime.ml_z_sign(_fR_), + _fT_=runtime.ml_z_sign(_fQ_), + _fU_=_fS_ + 1 | 0; + if(! (2 < _fU_ >>> 0)) + switch(_fU_) + {case 0:if(0 === _fT_)return [0,_b_(_fR_),_v_,_t_];break; + case 1: + var _fY_=_fT_ + 1 | 0; + if(! (2 < _fY_ >>> 0)) + switch(_fY_) + {case 0:return [0,_b_(_fQ_),_t_,_v_]; + case 1:return [0,_t_,_t_,_t_]; + default:return [0,_fQ_,_t_,_u_]} + break; + default:if(0 === _fT_)return [0,_fR_,_u_,_t_]} + var + _fV_=runtime.ml_z_gcdext_intern(_fR_,_fQ_), + _fW_=_fV_[2], + _fX_=_fV_[1]; + return _fV_[3] + ?[0,_fX_,_fW_,_f_(_d_(_fX_,_e_(_fR_,_fW_)),_fQ_)] + :[0,_fX_,_f_(_d_(_fX_,_e_(_fQ_,_fW_)),_fR_),_fW_]} + function _K_(_fP_,_fO_) + {if(! caml_equal(_fP_,_t_) && ! caml_equal(_fO_,_t_)) + return _k_(_e_(_h_(_fP_,runtime.ml_z_gcd(_fP_,_fO_)),_fO_)); + return _t_} + function _L_(_fN_,_fM_) + {return 0 <= _fM_ + ?runtime.ml_z_testbit(_fN_,_fM_) + :caml_call1(Stdlib[1],cst_Z_testbit)} + function _M_(_fL_){return runtime.ml_z_testbit(_fL_,0)} + function _N_(_fK_){return 1 - runtime.ml_z_testbit(_fK_,0)} + function _O_(_fJ_,_fI_,_fH_) + {if(_fI_ < 0)caml_call1(Stdlib[1],cst_Z_signed_extract_negative_); + if(_fH_ < 1)caml_call1(Stdlib[1],cst_Z_signed_extract_nonpositi); + return _L_(_fJ_,(_fI_ + _fH_ | 0) - 1 | 0) + ?_o_(runtime.ml_z_extract(_o_(_fJ_),_fI_,_fH_)) + :runtime.ml_z_extract(_fJ_,_fI_,_fH_)} + function _P_(_fG_) + {return 0 < runtime.ml_z_sign(_fG_) + ?runtime.ml_z_numbits(_fG_) - 1 | 0 + :caml_call1(Stdlib[1],cst_Z_log2)} + function _Q_(_fF_) + {return 0 < runtime.ml_z_sign(_fF_) + ?runtime.ml_z_numbits(_j_(_fF_)) + :caml_call1(Stdlib[1],cst_Z_log2up)} + function _R_(_fC_,_fB_) + {var + _fD_=runtime.ml_z_to_int64(_fC_), + _fE_=_fB_?_fD_:runtime.caml_int64_or(_fD_,_S_); + return caml_int64_to_float(_fE_)} + function _T_(_fx_) + {if(typeof _fx_ === "number")return _fx_; + var _fy_=runtime.ml_z_numbits(_fx_); + if(63 < _fy_) + {var _fz_=_fy_ - 55 | 0,_fA_=_q_(_fx_,_fz_); + return caml_ldexp_float + (_R_(_fA_,runtime.ml_z_equal(_fx_,_p_(_fA_,_fz_))),_fz_)} + return caml_int64_to_float(runtime.ml_z_to_int64(_fx_))} + function _U_(_fv_){var _fw_=_C_(_fv_);return caml_call1(Stdlib[42],_fw_)} + function _V_(_ft_,_fs_) + {var _fu_=_C_(_fs_);return caml_call2(Stdlib[66],_ft_,_fu_)} + function _W_(_fr_,_fq_){return _C_(_fq_)} + function _X_(_fo_,_fn_) + {var _fp_=_C_(_fn_);return caml_call2(Stdlib_Buffer[16],_fo_,_fp_)} + function _Y_(_fl_,_fk_) + {var _fm_=_C_(_fk_);return caml_call2(Stdlib_Format[13],_fl_,_fm_)} + function _Z_(_fj_){return _fj_} + function ___(_fi_,_fh_){return runtime.ml_z_equal(_fi_,_fh_)} + var + Z= + [0, + _a_, + _t_, + _u_, + _v_, + _D_, + _E_, + _F_, + _i_, + _j_, + _k_, + _b_, + _c_, + _d_, + _e_, + _f_, + _g_, + _G_, + _H_, + _I_, + _h_, + _l_, + _m_, + _n_, + _o_, + _p_, + _q_, + _r_, + _L_, + _s_, + _T_, + _C_, + _U_, + _V_, + _W_, + _X_, + _Y_, + _y_, + _z_, + _A_, + _B_, + _w_, + _x_, + _N_, + _M_, + _J_, + _K_, + _P_, + _Q_, + _O_, + _b_, + _Z_, + _c_, + _d_, + _e_, + _f_, + _h_, + _g_, + _l_, + _m_, + _n_, + _o_, + _p_, + _q_, + [0, + ___, + _A_, + _B_, + _y_, + _z_, + function(_fg_,_ff_){return 1 - runtime.ml_z_equal(_fg_,_ff_)}], + cst_1_12, + _R_]; + caml_register_global(39,Z,"Z"); + function _$_(_fc_,_fb_) + {if(_fc_ !== 0 && _fb_ !== 1) + {var _fd_=runtime.ml_z_gcd(_fc_,_fb_); + if(_fd_ === 1)return [0,_fc_,_fb_]; + var _fe_=_h_(_fb_,_fd_); + return [0,_h_(_fc_,_fd_),_fe_]} + return [0,_fc_,_u_]} + function _aa_(_e__,_e9_) + {var _e$_=runtime.ml_z_sign(_e9_); + if(0 === _e$_)return [0,runtime.ml_z_sign(_e__),_t_]; + if(0 < _e$_)return _$_(_e__,_e9_); + var _fa_=_b_(_e9_); + return _$_(_b_(_e__),_fa_)} + function _ab_(_e8_){return [0,_e8_,_u_]} + function _ac_(_e7_){return _ab_(_e7_)} + function _ad_(_e6_){return _ab_(runtime.ml_z_of_int32(_e6_))} + function _ae_(_e5_){return _ab_(runtime.ml_z_of_int64(_e5_))} + function _af_(_e4_){return _ab_(runtime.ml_z_of_nativeint(_e4_))} + function _ag_(_e3_,_e2_){return _aa_(_e3_,_e2_)} + var + _ah_=_ab_(_t_), + _ai_=_ab_(_u_), + _ak_=[0,_u_,_t_], + _al_=[0,_v_,_t_], + _am_=[0,_t_,_t_], + _aj_=_ab_(_v_); + function _an_(_eY_) + {if(_eY_ == Stdlib[22])return _ak_; + if(_eY_ == Stdlib[23])return _al_; + if(4 === runtime.caml_classify_float(_eY_))return _am_; + var + _eZ_=runtime.caml_frexp_float(_eY_), + _e0_=_eZ_[2] - 53 | 0, + _e1_=runtime.ml_z_of_float(caml_ldexp_float(_eZ_[1],53)); + return 0 <= _e0_?_ab_(_p_(_e1_,_e0_)):_$_(_e1_,_p_(_u_,- _e0_ | 0))} + function _ao_(_eW_) + {if(_eW_[2] === 0) + {var _eX_=runtime.ml_z_sign(_eW_[1]) + 1 | 0; + if(! (2 < _eX_ >>> 0)) + switch(_eX_){case 0:return 2;case 1:break;default:return 1} + return 3} + return _eW_[1] === 0?0:4} + function _ap_(_eV_){return _eV_[2] !== 0?1:0} + function _aq_(_eU_){return _eU_[1]} + function _ar_(_eT_){return _eT_[2]} + function _as_(_eS_){return runtime.ml_z_sign(_eS_[1])} + function _at_(_eO_,_eN_) + {var _eP_=runtime.ml_z_equal(_eO_[1],_eN_[1]); + if(_eP_) + var + _eQ_=runtime.ml_z_equal(_eO_[2],_eN_[2]), + _eR_=_eQ_?3 !== _ao_(_eO_)?1:0:_eQ_; + else + var _eR_=_eP_; + return _eR_} + function _au_(_eH_,_eG_) + {var _eI_=_ao_(_eH_),_eJ_=_ao_(_eG_),switch$0=0; + switch(_eI_) + {case 1: + var _eM_=_eJ_ - 1 | 0; + if(! (2 < _eM_ >>> 0)) + switch(_eM_) + {case 0:switch$0 = 2;break;case 1:break;default:switch$0 = 1} + break; + case 2: + if(1 === _eJ_) + switch$0 = 1; + else + if(_eJ_) + switch(_eJ_ - 2 | 0) + {case 1:switch$0 = 1;break;case 2:break;default:switch$0 = 2} + break; + case 3:if(3 !== _eJ_)return -1;switch$0 = 2;break; + default:switch$0 = 1} + var switch$1=0; + switch(switch$0) + {case 1: + var _eK_=_eJ_ - 1 | 0; + if(! (2 < _eK_ >>> 0)) + switch(_eK_) + {case 0:switch$1 = 1;break;case 1:break;default:return 1} + break; + case 0:break; + default:return 0} + if(! switch$1) + {var switch$2=0; + if(! (4 <= _eI_)) + switch(_eI_) + {case 0:break;case 2:switch$2 = 1;break;default:switch$2 = 2} + var switch$3=0; + switch(switch$2) + {case 0: + if(2 !== _eJ_) + {if(caml_equal(_eH_[2],_eG_[2])) + return runtime.ml_z_compare(_eH_[1],_eG_[1]); + var _eL_=_e_(_eG_[1],_eH_[2]); + return runtime.ml_z_compare(_e_(_eH_[1],_eG_[2]),_eL_)} + switch$3 = 1; + break; + case 1:break; + default:switch$3 = 1} + if(switch$3)return 1} + return -1} + function _av_(_eF_,_eE_){return 0 < _au_(_eF_,_eE_)?_eE_:_eF_} + function _aw_(_eD_,_eC_){return 0 <= _au_(_eD_,_eC_)?_eD_:_eC_} + function _ax_(_ex_,_ew_) + {var _ey_=_ao_(_ex_),_ez_=_ao_(_ew_); + if(3 !== _ey_) + {var _eA_=_ez_ - 1 | 0,switch$0=0; + if(! (2 < _eA_ >>> 0)) + switch(_eA_) + {case 0:switch$0 = 2;break;case 1:break;default:switch$0 = 1} + var switch$1=0; + switch(switch$0) + {case 0: + var switch$2=0; + if(! (4 <= _ey_)) + switch(_ey_) + {case 0:break; + case 2:switch$1 = 1;switch$2 = 2;break; + default:switch$2 = 1} + var switch$3=0; + switch(switch$2) + {case 2:switch$3 = 1;break; + case 0: + if(2 !== _ez_) + {if(caml_equal(_ex_[2],_ew_[2]))return _y_(_ex_[1],_ew_[1]); + var _eB_=_e_(_ew_[1],_ex_[2]); + return _y_(_e_(_ex_[1],_ew_[2]),_eB_)} + break + } + if(! switch$3)return 0; + break; + case 1:break; + default:switch$1 = 1} + if(switch$1)return 1} + return 0} + function _ay_(_es_,_er_) + {var _et_=_ao_(_es_),_eu_=_ao_(_er_); + if(3 !== _et_) + {var switch$0=0; + if(2 <= _eu_) + switch(_eu_ - 2 | 0) + {case 2:break;case 1:switch$0 = 1;break;default:switch$0 = 2} + var switch$1=0; + switch(switch$0) + {case 0: + var switch$2=0; + if(! (4 <= _et_)) + switch(_et_) + {case 0:break; + case 1:switch$1 = 1;switch$2 = 2;break; + default:switch$2 = 1} + var switch$3=0; + switch(switch$2) + {case 2:switch$3 = 1;break; + case 0: + if(1 !== _eu_) + {if(caml_equal(_es_[2],_er_[2]))return _A_(_es_[1],_er_[1]); + var _ev_=_e_(_er_[1],_es_[2]); + return _A_(_e_(_es_[1],_er_[2]),_ev_)} + break + } + if(! switch$3)return 1; + break; + case 1:break; + default:switch$1 = 1} + if(switch$1)return 0} + return 0} + function _az_(_eq_,_ep_){return _ax_(_ep_,_eq_)} + function _aA_(_eo_,_en_){return _ay_(_en_,_eo_)} + function _aB_(_ej_) + {switch(_ao_(_ej_)) + {case 0:return cst_0; + case 1:return cst_inf; + case 2:return cst_inf$0; + case 3:return cst_undef; + default: + if(runtime.ml_z_equal(_ej_[2],1))return _C_(_ej_[1]); + var + _ek_=_C_(_ej_[2]), + _el_=caml_call2(Stdlib[28],cst,_ek_), + _em_=_C_(_ej_[1]); + return caml_call2(Stdlib[28],_em_,_el_)}} + function _aC_(_ei_){return _f_(_ei_[1],_ei_[2])} + function _aD_(_eh_){return _s_(_aC_(_eh_))} + function _aE_(_eg_){return runtime.ml_z_to_int32(_aC_(_eg_))} + function _aF_(_ef_){return runtime.ml_z_to_int64(_aC_(_ef_))} + function _aG_(_ee_){return runtime.ml_z_to_nativeint(_aC_(_ee_))} + function _aH_(_dZ_) + {switch(_ao_(_dZ_)) + {case 0:return 0.; + case 1:return Stdlib[22]; + case 2:return Stdlib[23]; + case 3:return Stdlib[24]; + default: + var + _d0_=_dZ_[1], + _d1_=_dZ_[2], + _d2_=runtime.ml_z_numbits(_d0_), + _d3_=runtime.ml_z_numbits(_d1_); + if(! (53 < _d2_) && ! (53 < _d3_)) + {var _ed_=caml_int64_to_float(runtime.ml_z_to_int64(_d1_)); + return caml_int64_to_float(runtime.ml_z_to_int64(_d0_)) / _ed_} + var _d4_=0 <= runtime.ml_z_sign(_d0_)?1:-1,_d5_=_d2_ - _d3_ | 0; + if(0 <= _d5_) + var _d7_=_p_(_d1_,_d5_),_d6_=_d0_; + else + var _d7_=_d1_,_d6_=_p_(_d0_,- _d5_ | 0); + if(_z_(_k_(_d6_),_d7_)) + var _d9_=_d5_,_d8_=_d6_; + else + var _d9_=_d5_ - 1 | 0,_d8_=_p_(_d6_,1); + var _d__=_G_(_p_(_d8_,54),_d7_); + if(-1080 < _d9_) + {var + _d$_=-1023 < _d9_?_t_:_p_(_d4_,55 + (-1023 - _d9_ | 0) | 0), + _ea_=_c_(_d$_,_d__[1]), + _eb_=0 === runtime.ml_z_sign(_d__[2])?_ea_:_m_(_u_,_ea_), + _ec_=_T_(_eb_); + return caml_ldexp_float(_ec_ - _T_(_d$_),_d9_ - 54 | 0)} + return caml_ldexp_float(_d4_,-1080)}} + function _aI_(_dX_){var _dY_=_dX_[2];return [0,_b_(_dX_[1]),_dY_]} + function _aJ_(_dV_){var _dW_=_dV_[2];return [0,_k_(_dV_[1]),_dW_]} + function _aK_(_dR_,_dQ_,_dP_) + {if(_dQ_[2] === _dP_[2]) + {var _dS_=_dQ_[2];return _$_(caml_call2(_dR_,_dQ_[1],_dP_[1]),_dS_)} + var _dT_=_e_(_dQ_[2],_dP_[2]),_dU_=_e_(_dP_[1],_dQ_[2]); + return _$_(caml_call2(_dR_,_e_(_dQ_[1],_dP_[2]),_dU_),_dT_)} + function _aL_(_dM_,_dL_) + {if(_dM_[2] !== 0 && _dL_[2] !== 0)return _aK_(_c_,_dM_,_dL_); + var _dN_=_ao_(_dM_),_dO_=_ao_(_dL_),switch$0=0; + switch(_dN_) + {case 0:return _dL_; + case 1: + switch(_dO_) + {case 2:switch$0 = 3;break;case 0:case 3:break;default:switch$0 = 1} + break; + case 2: + switch(_dO_) + {case 2:switch$0 = 2;break; + case 1:switch$0 = 3;break; + case 4:switch$0 = 4;break + } + break; + case 4: + switch(_dO_) + {case 4:return caml_call1(Stdlib[2],cst_impossible_case); + case 0: + case 3:break; + default:switch$0 = 2} + break + } + var switch$1=0; + switch(switch$0) + {case 0:if(3 === _dO_)switch$1 = 1;else if(! _dO_)return _dM_;break; + case 1:break; + case 2:switch$1 = 2 <= _dO_?3:2;break; + case 3:return _am_; + default:switch$1 = 3} + var switch$2=0; + switch(switch$1) + {case 0:if(! (3 <= _dN_))switch$2 = 1;break; + case 1:break; + case 2:switch$2 = 1;break; + default:return _al_} + return switch$2?_ak_:_am_} + function _aM_(_dI_,_dH_) + {if(_dI_[2] !== 0 && _dH_[2] !== 0)return _aK_(_d_,_dI_,_dH_); + var _dJ_=_ao_(_dI_),_dK_=_ao_(_dH_),switch$0=0; + switch(_dJ_) + {case 0:return _aI_(_dH_); + case 1: + switch(_dK_) + {case 1:switch$0 = 3;break;case 0:case 3:break;default:switch$0 = 1} + break; + case 2: + switch(_dK_) + {case 1:switch$0 = 2;break; + case 2:switch$0 = 3;break; + case 4:switch$0 = 4;break + } + break; + case 4: + switch(_dK_) + {case 4:return caml_call1(Stdlib[2],cst_impossible_case$0); + case 0: + case 3:break; + default:switch$0 = 2} + break + } + var switch$1=0; + switch(switch$0) + {case 0:if(3 === _dK_)switch$1 = 1;else if(! _dK_)return _dI_;break; + case 1:break; + case 2:switch$1 = 2 <= _dK_?2:3;break; + case 3:return _am_; + default:switch$1 = 3} + var switch$2=0; + switch(switch$1) + {case 0:if(! (3 <= _dJ_))switch$2 = 1;break; + case 1:break; + case 2:switch$2 = 1;break; + default:return _al_} + return switch$2?_ak_:_am_} + function _aN_(_dE_,_dD_) + {if(_dE_[2] !== 0 && _dD_[2] !== 0) + {var _dG_=_e_(_dE_[2],_dD_[2]);return _$_(_e_(_dE_[1],_dD_[1]),_dG_)} + var _dF_=runtime.ml_z_sign(_dD_[1]); + return [0,caml_mul(runtime.ml_z_sign(_dE_[1]),_dF_),_t_]} + function _aO_(_dA_) + {var _dB_=runtime.ml_z_sign(_dA_[1]) + 1 | 0; + if(! (2 < _dB_ >>> 0)) + switch(_dB_) + {case 0:var _dC_=_b_(_dA_[1]);return [0,_b_(_dA_[2]),_dC_]; + case 1:break; + default:return [0,_dA_[2],_dA_[1]]} + return _dA_[2] === 0?_am_:_ak_} + function _aP_(_dy_,_dx_) + {if(0 <= runtime.ml_z_sign(_dx_[1])) + return _aN_(_dy_,[0,_dx_[2],_dx_[1]]); + var _dz_=_b_(_dx_[1]); + return _aN_(_dy_,[0,_b_(_dx_[2]),_dz_])} + function _aQ_(_dv_,_du_) + {if(_dv_[2] === 0)return _dv_; + var _dw_=_dv_[2]; + return _$_(_p_(_dv_[1],_du_),_dw_)} + function _aR_(_ds_,_dr_) + {if(_ds_[2] === 0)return _ds_; + var _dt_=_p_(_ds_[2],_dr_); + return _$_(_ds_[1],_dt_)} + function _aS_(_dq_) + {switch(_dq_) + {case 0:return 2;case 1:return 8;case 2:return 10;default:return 16}} + function _aT_(_do_,_dn_,_dm_,_dl_) + {var _dp_=_dn_; + for(;;) + {if(_dm_ <= _dp_)return 0; + if(caml_call1(_dl_,caml_string_get(_do_,_dp_)))return [0,_dp_]; + var _dp_=_dp_ + 1 | 0; + continue}} + function _aU_(_cy_) + {if(caml_string_notequal(_cy_,cst$0)) + {if(caml_string_notequal(_cy_,cst_inf$1)) + {if(! caml_string_notequal(_cy_,cst_inf$2))return _al_; + if(caml_string_notequal(_cy_,cst_inf$3)) + {if(caml_string_notequal(_cy_,cst_undef$0)) + try + {var + _dc_=caml_call2(Stdlib_String[35],_cy_,47), + _dd_= + runtime.ml_z_of_substring_base + (0, + _cy_, + _dc_ + 1 | 0, + (caml_ml_string_length(_cy_) - _dc_ | 0) - 1 | 0), + _de_=_aa_(runtime.ml_z_of_substring_base(0,_cy_,0,_dc_),_dd_); + return _de_} + catch(_df_) + {_df_ = caml_wrap_exception(_df_); + if(_df_ === Stdlib[8]) + {var _cA_=caml_ml_string_length(_cy_),_cz_=0; + if(_cA_ < 1) + var _cB_=[0,0,_cz_]; + else + {var _c$_=caml_string_get(_cy_,0) - 43 | 0,switch$0=0; + if(! (2 < _c$_ >>> 0)) + {var switch$1=0; + switch(_c$_) + {case 0:var _db_=[0,0,1];break; + case 1:switch$1 = 1;break; + default:var _db_=[0,1,1]} + if(! switch$1){var _da_=_db_;switch$0 = 1}} + if(! switch$0)var _da_=[0,0,_cz_]; + var _cB_=_da_} + var _cC_=_cB_[2]; + if(_cA_ < (_cC_ + 2 | 0)) + var _cD_=[0,2,_cC_]; + else + {var + _c8_=caml_string_get(_cy_,_cC_), + _c9_=caml_string_get(_cy_,_cC_ + 1 | 0), + switch$2=0; + if(48 === _c8_) + {var switch$3=0; + if(89 <= _c9_) + {if(98 === _c9_) + switch$3 = 2; + else + if(111 === _c9_) + switch$3 = 1; + else + if(120 !== _c9_){switch$2 = 1;switch$3 = 3}} + else + if(66 === _c9_) + switch$3 = 2; + else + if(79 === _c9_) + switch$3 = 1; + else + if(! (88 <= _c9_)){switch$2 = 1;switch$3 = 3} + switch(switch$3) + {case 3:break; + case 0:var _c__=[0,3,_cC_ + 2 | 0];break; + case 1:var _c__=[0,1,_cC_ + 2 | 0];break; + default:var _c__=[0,0,_cC_ + 2 | 0]}} + else + switch$2 = 1; + if(switch$2)var _c__=[0,2,_cC_]; + var _cD_=_c__} + var + _cE_=_cD_[2], + _cF_=_cD_[1], + _cG_= + 2 === _cF_ + ?function(_di_) + {if(69 !== _di_ && 101 !== _di_)return 0;return 1} + :3 <= _cF_ + ?function(_dj_) + {if(80 !== _dj_ && 112 !== _dj_)return 0;return 1} + :function(_dk_){return 0}, + _cH_=_aT_(_cy_,_cE_,_cA_,_cG_); + if(_cH_) + var + _cI_=_cH_[1], + _cJ_=_cI_ + 1 | 0, + _cL_=_cI_, + _cK_= + _s_ + (runtime.ml_z_of_substring_base + (10,_cy_,_cJ_,_cA_ - _cJ_ | 0)); + else + var _cL_=_cA_,_cK_=0; + if(2 <= _cF_) + {var + _cM_= + _aT_(_cy_,_cE_,_cL_,function(_dh_){return 46 === _dh_?1:0}); + if(_cM_) + {var _cN_=_cM_[1]; + if(2 === _cF_) + var _cO_=1; + else + {if(! (3 <= _cF_))throw [0,Assert_failure,_aV_];var _cO_=4} + var _cQ_=_cN_ + 1 | 0,_cR_=_cL_ - 1 | 0,_cP_=0; + if(_cR_ < _cQ_) + var _cS_=_cP_; + else + {var _c4_=_cQ_,_c3_=_cP_; + for(;;) + {var _c5_=caml_string_get(_cy_,_c4_),switch$4=0; + if(71 <= _c5_) + {if(97 <= _c5_) + {if(! (103 <= _c5_))switch$4 = 1} + else + if(95 === _c5_){var _c6_=_c3_;switch$4 = 2}} + else + if(58 <= _c5_) + {if(65 <= _c5_)switch$4 = 1} + else + if(48 <= _c5_)switch$4 = 1; + switch(switch$4) + {case 0: + caml_call1(Stdlib[1],cst_Q_of_string_invalid_digit); + var _c6_=_c3_; + break; + case 1:var _c6_=_c3_ + 1 | 0;break + } + var _c7_=_c4_ + 1 | 0; + if(_cR_ !== _c4_){var _c4_=_c7_,_c3_=_c6_;continue} + var _cS_=_c6_; + break}} + var + _cT_= + _aT_ + (_cy_, + _cN_ + 1 | 0, + _cL_, + function(_dg_){return 95 !== _dg_?1:0}), + _cU_=_cT_?_cT_[1]:_cL_, + _cV_=caml_call3(Stdlib_String[15],_cy_,_cU_,_cL_ - _cU_ | 0), + _cW_=caml_call3(Stdlib_String[15],_cy_,_cE_,_cN_ - _cE_ | 0), + _cX_=caml_call2(Stdlib[28],_cW_,_cV_), + _cZ_=caml_mul(_cS_,_cO_), + _cY_=_F_(_aS_(_cF_),_cX_)} + else + var + _cZ_=0, + _cY_= + runtime.ml_z_of_substring_base + (_aS_(_cF_),_cy_,_cE_,_cL_ - _cE_ | 0)} + else + var + _cZ_=0, + _cY_= + runtime.ml_z_of_substring_base + (_aS_(_cF_),_cy_,_cE_,_cL_ - _cE_ | 0); + var + _c0_=_cK_ - _cZ_ | 0, + _c1_=2 === _cF_?10:3 <= _cF_?2:1, + _c2_= + 0 <= _c0_ + ?_ab_(_e_(_cY_,runtime.ml_z_pow(_c1_,_c0_))) + :_aa_(_cY_,runtime.ml_z_pow(_c1_,- _c0_ | 0)); + return _cB_[1]?_aI_(_c2_):_c2_} + throw _df_} + return _am_}} + return _ak_} + return _ah_} + function _aW_(_cw_) + {var _cx_=_aB_(_cw_);return caml_call1(Stdlib[42],_cx_)} + function _aX_(_cu_,_ct_) + {var _cv_=_aB_(_ct_);return caml_call2(Stdlib[66],_cu_,_cv_)} + function _aY_(_cs_,_cr_){return _aB_(_cr_)} + function _aZ_(_cp_,_co_) + {var _cq_=_aB_(_co_);return caml_call2(Stdlib_Buffer[16],_cp_,_cq_)} + function _a0_(_cm_,_cl_) + {var _cn_=_aB_(_cl_);return caml_call2(Stdlib_Format[13],_cm_,_cn_)} + function _a1_(_ck_){return _ck_} + var + Q= + [0, + _aa_, + _ah_, + _ai_, + _aj_, + _ak_, + _al_, + _am_, + _ab_, + _ac_, + _ad_, + _ae_, + _af_, + _ag_, + _an_, + _aU_, + _aq_, + _ar_, + _ao_, + _ap_, + _as_, + _au_, + _at_, + _av_, + _aw_, + _ax_, + _az_, + _ay_, + _aA_, + _aC_, + _aD_, + _aE_, + _aF_, + _aG_, + _aB_, + _aH_, + _aI_, + _aJ_, + _aL_, + _aM_, + _aN_, + _aO_, + _aP_, + _aQ_, + _aR_, + _aW_, + _aX_, + _aY_, + _aZ_, + _a0_, + _aI_, + _a1_, + _aL_, + _aM_, + _aN_, + _aP_, + _aQ_, + _aR_, + _ac_, + _ag_, + _ab_, + _aa_, + _at_, + _ay_, + _aA_, + _ax_, + _az_, + function(_cj_,_ci_){return 1 - _at_(_cj_,_ci_)}]; + caml_register_global(42,Q,"Q"); + function _a2_(_ch_,_cg_){return _c_(_ch_,_cg_)} + function _a3_(_cf_,_ce_){return _e_(_cf_,_ce_)} + function _a4_(_cd_){return _e_(_cd_,_cd_)} + function _a5_(_cc_){return runtime.ml_z_sqrt(_cc_)} + function _a6_(_cb_,_ca_){return runtime.ml_z_gcd(_cb_,_ca_)} + function _a7_(_b$_,_b__){return runtime.ml_z_pow(_b$_,_b__)} + function _a8_(_b9_,_b8_){return runtime.ml_z_pow(_b9_,_s_(_b8_))} + function _a9_(_b7_,_b6_) + {if(_b6_ < 0)throw [0,Stdlib[6],cst_power_int_positive_int]; + return runtime.ml_z_pow(_b7_,_b6_)} + function _a__(_b5_,_b4_) + {if(_b4_ < 0)throw [0,Stdlib[6],cst_power_big_int_positive_int]; + return runtime.ml_z_pow(_b5_,_b4_)} + function _a$_(_b3_,_b2_) + {if(runtime.ml_z_sign(_b2_) < 0) + throw [0,Stdlib[6],cst_power_int_positive_big_int]; + return _a8_(_b3_,_b2_)} + function _ba_(_b1_,_b0_) + {if(runtime.ml_z_sign(_b0_) < 0) + throw [0,Stdlib[6],cst_power_big_int_positive_big]; + return _a8_(_b1_,_b0_)} + function _bb_(_bZ_){return runtime.ml_z_sign(_bZ_)} + function _bc_(_bY_,_bX_){return runtime.ml_z_compare(_bY_,_bX_)} + function _bd_(_bW_,_bV_){return runtime.ml_z_equal(_bW_,_bV_)} + function _be_(_bU_,_bT_){return runtime.ml_z_compare(_bU_,_bT_) <= 0?1:0} + function _bf_(_bS_,_bR_){return 0 <= runtime.ml_z_compare(_bS_,_bR_)?1:0} + function _bg_(_bQ_,_bP_){return runtime.ml_z_compare(_bQ_,_bP_) < 0?1:0} + function _bh_(_bO_,_bN_){return 0 < runtime.ml_z_compare(_bO_,_bN_)?1:0} + function _bi_(_bM_){return runtime.ml_z_size(_bM_)} + function _bj_(_bL_){return _bL_} + function _bk_(_bK_){return runtime.ml_z_fits_int(_bK_)} + function _bl_(_bH_) + {try + {var _bI_=_s_(_bH_);return _bI_} + catch(_bJ_) + {_bJ_ = caml_wrap_exception(_bJ_); + if(_bJ_ === _a_)return caml_call1(Stdlib[2],cst_int_of_big_int); + throw _bJ_}} + function _bm_(_bG_){return runtime.ml_z_of_int32(_bG_)} + function _bn_(_bF_){return runtime.ml_z_of_nativeint(_bF_)} + function _bo_(_bE_){return runtime.ml_z_of_int64(_bE_)} + function _bp_(_bB_) + {try + {var _bC_=runtime.ml_z_to_int32(_bB_);return _bC_} + catch(_bD_) + {_bD_ = caml_wrap_exception(_bD_); + if(_bD_ === _a_)return caml_call1(Stdlib[2],cst_int32_of_big_int); + throw _bD_}} + function _bq_(_by_) + {try + {var _bz_=runtime.ml_z_to_nativeint(_by_);return _bz_} + catch(_bA_) + {_bA_ = caml_wrap_exception(_bA_); + if(_bA_ === _a_)return caml_call1(Stdlib[2],cst_nativeint_of_big_int); + throw _bA_}} + function _br_(_bv_) + {try + {var _bw_=runtime.ml_z_to_int64(_bv_);return _bw_} + catch(_bx_) + {_bx_ = caml_wrap_exception(_bx_); + if(_bx_ === _a_)return caml_call1(Stdlib[2],cst_int64_of_big_int); + throw _bx_}} + var + Big_int_Z= + [0, + _t_, + _u_, + _b_, + _k_, + _c_, + _i_, + _a2_, + _d_, + _j_, + _e_, + _a3_, + _a4_, + _a5_, + _G_, + _H_, + _I_, + _a6_, + _a7_, + _a8_, + _a9_, + _a__, + _a$_, + _ba_, + _bb_, + _bc_, + _bd_, + _be_, + _bf_, + _bg_, + _bh_, + _x_, + _w_, + _bi_, + _C_, + _D_, + _bj_, + _bk_, + _bl_, + _bm_, + _bn_, + _bo_, + _bp_, + _bq_, + _br_, + _T_, + _l_, + _m_, + _n_, + _p_, + _q_, + _r_, + function(_bu_,_bt_,_bs_){return runtime.ml_z_extract(_bu_,_bt_,_bs_)}]; + caml_register_global(43,Big_int_Z,"Big_int_Z"); + return} + (globalThis)); + + +//# 1 "../../.js/zarith_stubs_js/zarith_stubs_js.cma.js" +(function(globalThis) + {"use strict"; + var runtime=globalThis.jsoo_runtime,Zarith_stubs_js=[0]; + runtime.caml_register_global(0,Zarith_stubs_js,"Zarith_stubs_js"); + return} + (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" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_bytes_get=runtime.caml_bytes_get, + caml_bytes_set=runtime.caml_bytes_set, + caml_check_bound=runtime.caml_check_bound, + caml_classify_float=runtime.caml_classify_float, + caml_create_bytes=runtime.caml_create_bytes, + caml_equal=runtime.caml_equal, + caml_float_of_string=runtime.caml_float_of_string, + caml_fresh_oo_id=runtime.caml_fresh_oo_id, + 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, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, + caml_trampoline=runtime.caml_trampoline, + caml_trampoline_return=runtime.caml_trampoline_return, + 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_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_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_None$1=caml_string_of_jsbytes("None"), + cst_Unexpected_end_of_input$92= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$12=caml_string_of_jsbytes("Invalid token"), + cst_Unexpected_end_of_input$93= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Unexpected_end_of_input$94= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_escape_sequence$1= + caml_string_of_jsbytes("Invalid escape sequence"), + cst_Unexpected_end_of_input$95= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_low_surrogate_for_$1= + caml_string_of_jsbytes + ("Invalid low surrogate for code point beyond U+FFFF"), + cst_Missing_escape_sequence_re$1= + caml_string_of_jsbytes + ("Missing escape sequence representing low surrogate for code point beyond U+FFFF"), + cst_Unexpected_end_of_input$96= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_string_literal$5= + caml_string_of_jsbytes("Invalid string literal"), + cst_Unexpected_end_of_input$97= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$29= + caml_string_of_jsbytes("Expected ':' or '>' but found"), + cst_Unexpected_end_of_input$98= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$30= + caml_string_of_jsbytes("Expected '<' but found"), + cst_Unexpected_end_of_input$99= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$31= + caml_string_of_jsbytes("Expected '>' but found"), + cst_Unexpected_end_of_input$100= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$32= + caml_string_of_jsbytes("Expected ',' but found"), + cst_Unexpected_end_of_input$101= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$30= + caml_string_of_jsbytes("Expected '<', '\"' or '[' but found"), + cst_Unexpected_end_of_input$102= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Unterminated_comment$3=caml_string_of_jsbytes("Unterminated comment"), + cst_Expected_null_but_found$1= + caml_string_of_jsbytes("Expected 'null' but found"), + cst_Unexpected_end_of_input$103= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_true_or_false_but$1= + caml_string_of_jsbytes("Expected 'true' or 'false' but found"), + cst_Unexpected_end_of_input$104= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Int_overflow$5=caml_string_of_jsbytes("Int overflow"), + cst_Int_overflow$6=caml_string_of_jsbytes("Int overflow"), + cst_Expected_an_integer_but_fo$1= + caml_string_of_jsbytes + ("Expected an integer but found a string that doesn't even represent an integer"), + cst_Expected_integer_but_found$1= + caml_string_of_jsbytes("Expected integer but found"), + cst_Unexpected_end_of_input$105= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Int32_overflow$3=caml_string_of_jsbytes("Int32 overflow"), + cst_Expected_an_int32_but_foun$1= + caml_string_of_jsbytes + ("Expected an int32 but found a string that doesn't even represent an integer"), + cst_Expected_int32_but_found$1= + caml_string_of_jsbytes("Expected int32 but found"), + cst_Unexpected_end_of_input$106= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Int32_overflow$4=caml_string_of_jsbytes("Int32 overflow"), + cst_Expected_an_int64_but_foun$1= + caml_string_of_jsbytes + ("Expected an int64 but found a string that doesn't even represent an integer"), + cst_Expected_int64_but_found$1= + 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_Expected_a_number_but_foun$1= + caml_string_of_jsbytes + ("Expected a number but found a string that doesn't even represent a number"), + cst_Expected_number_but_found$1= + caml_string_of_jsbytes("Expected number but found"), + cst_Unexpected_end_of_input$108= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$33= + caml_string_of_jsbytes("Expected '\"' but found"), + cst_Unexpected_end_of_input$109= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$7= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$110= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$8= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$111= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$34= + caml_string_of_jsbytes("Expected '[' but found"), + cst_Unexpected_end_of_input$112= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$35= + caml_string_of_jsbytes("Expected '[' but found"), + cst_Unexpected_end_of_input$113= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$31= + caml_string_of_jsbytes("Expected ',' or ']' but found"), + cst_Unexpected_end_of_input$114= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$36= + caml_string_of_jsbytes("Expected ')' but found"), + cst_Unexpected_end_of_input$115= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$32= + caml_string_of_jsbytes("Expected ')' or '' but found"), + cst_Expected_or_but_found$33= + caml_string_of_jsbytes("Expected ']' or '' but found"), + cst_Expected_or_but_found$34= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Unexpected_end_of_input$116= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$35= + caml_string_of_jsbytes("Expected ',' or ']' but found"), + cst_Expected_or_but_found$36= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Expected_or_but_found$37= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Unexpected_end_of_input$117= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$37= + caml_string_of_jsbytes("Expected '{' but found"), + cst_Unexpected_end_of_input$118= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$38= + caml_string_of_jsbytes("Expected '{' but found"), + cst_Unexpected_end_of_input$119= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$38= + caml_string_of_jsbytes("Expected ',' or '}' but found"), + cst_Unexpected_end_of_input$120= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$39= + caml_string_of_jsbytes("Expected ':' but found"), + cst_Unexpected_end_of_input$121= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$39= + caml_string_of_jsbytes("Expected '(' or '[' but found"), + cst_Unexpected_end_of_input$122= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$40= + caml_string_of_jsbytes("Expected '(' but found"), + cst_Unexpected_end_of_input$123= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$41= + caml_string_of_jsbytes("Expected ')' but found"), + cst_Unexpected_end_of_input$124= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$42= + caml_string_of_jsbytes("Expected '[' but found"), + cst_Unexpected_end_of_input$125= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$43= + caml_string_of_jsbytes("Expected ']' but found"), + cst_Unexpected_end_of_input$126= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Unexpected_end_of_input$127= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$13=caml_string_of_jsbytes("Invalid token"), + cst_Invalid_string_literal$6= + caml_string_of_jsbytes("Invalid string literal"), + cst_Unexpected_end_of_input$128= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$40= + caml_string_of_jsbytes("Expected ':' or '>' but found"), + cst_Unexpected_end_of_input$129= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$9= + 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_Unexpected_end_of_input$131= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$14=caml_string_of_jsbytes("Invalid token"), + cst_Invalid_string_literal$7= + caml_string_of_jsbytes("Invalid string literal"), + cst_Unexpected_end_of_input$132= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$41= + caml_string_of_jsbytes("Expected ':' or '>' but found"), + cst_Unexpected_end_of_input$133= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$10= + 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_Expected_or_but_found$42= + caml_string_of_jsbytes("Expected ',' or '}' but found"), + cst_Unexpected_end_of_input$135= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$43= + caml_string_of_jsbytes("Expected ',' or ']' but found"), + cst_Unexpected_end_of_input$136= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$44= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Unexpected_end_of_input$137= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$44= + caml_string_of_jsbytes("Expected ':' but found"), + cst_Unexpected_end_of_input$138= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$45= + 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_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"), + cst_Blank_input_data$3=caml_string_of_jsbytes("Blank input data"), + cst_Junk_after_end_of_JSON_val$1= + 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_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_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_None$0=caml_string_of_jsbytes("None"), + cst_Unexpected_end_of_input$44= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$9=caml_string_of_jsbytes("Invalid token"), + cst_Unexpected_end_of_input$45= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Unexpected_end_of_input$46= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_escape_sequence$0= + caml_string_of_jsbytes("Invalid escape sequence"), + cst_Unexpected_end_of_input$47= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_low_surrogate_for_$0= + caml_string_of_jsbytes + ("Invalid low surrogate for code point beyond U+FFFF"), + cst_Missing_escape_sequence_re$0= + caml_string_of_jsbytes + ("Missing escape sequence representing low surrogate for code point beyond U+FFFF"), + cst_Unexpected_end_of_input$48= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_string_literal$2= + caml_string_of_jsbytes("Invalid string literal"), + cst_Unexpected_end_of_input$49= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$13= + caml_string_of_jsbytes("Expected ':' or '>' but found"), + cst_Unexpected_end_of_input$50= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$14= + caml_string_of_jsbytes("Expected '<' but found"), + cst_Unexpected_end_of_input$51= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$15= + caml_string_of_jsbytes("Expected '>' but found"), + cst_Unexpected_end_of_input$52= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$16= + caml_string_of_jsbytes("Expected ',' but found"), + cst_Unexpected_end_of_input$53= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$14= + caml_string_of_jsbytes("Expected '<', '\"' or '[' but found"), + cst_Unexpected_end_of_input$54= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Unterminated_comment$1=caml_string_of_jsbytes("Unterminated comment"), + cst_Expected_null_but_found$0= + caml_string_of_jsbytes("Expected 'null' but found"), + cst_Unexpected_end_of_input$55= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_true_or_false_but$0= + caml_string_of_jsbytes("Expected 'true' or 'false' but found"), + cst_Unexpected_end_of_input$56= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Int_overflow$3=caml_string_of_jsbytes("Int overflow"), + cst_Int_overflow$4=caml_string_of_jsbytes("Int overflow"), + cst_Expected_an_integer_but_fo$0= + caml_string_of_jsbytes + ("Expected an integer but found a string that doesn't even represent an integer"), + cst_Expected_integer_but_found$0= + caml_string_of_jsbytes("Expected integer but found"), + cst_Unexpected_end_of_input$57= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Int32_overflow$1=caml_string_of_jsbytes("Int32 overflow"), + cst_Expected_an_int32_but_foun$0= + caml_string_of_jsbytes + ("Expected an int32 but found a string that doesn't even represent an integer"), + cst_Expected_int32_but_found$0= + caml_string_of_jsbytes("Expected int32 but found"), + cst_Unexpected_end_of_input$58= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Int32_overflow$2=caml_string_of_jsbytes("Int32 overflow"), + cst_Expected_an_int64_but_foun$0= + caml_string_of_jsbytes + ("Expected an int64 but found a string that doesn't even represent an integer"), + cst_Expected_int64_but_found$0= + 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_Expected_a_number_but_foun$0= + caml_string_of_jsbytes + ("Expected a number but found a string that doesn't even represent a number"), + cst_Expected_number_but_found$0= + caml_string_of_jsbytes("Expected number but found"), + cst_Unexpected_end_of_input$60= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$17= + caml_string_of_jsbytes("Expected '\"' but found"), + cst_Unexpected_end_of_input$61= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$3= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$62= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$4= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$63= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$18= + caml_string_of_jsbytes("Expected '[' but found"), + cst_Unexpected_end_of_input$64= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$19= + caml_string_of_jsbytes("Expected '[' but found"), + cst_Unexpected_end_of_input$65= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$15= + caml_string_of_jsbytes("Expected ',' or ']' but found"), + cst_Unexpected_end_of_input$66= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$20= + caml_string_of_jsbytes("Expected ')' but found"), + cst_Unexpected_end_of_input$67= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$16= + caml_string_of_jsbytes("Expected ')' or '' but found"), + cst_Expected_or_but_found$17= + caml_string_of_jsbytes("Expected ']' or '' but found"), + cst_Expected_or_but_found$18= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Unexpected_end_of_input$68= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$19= + caml_string_of_jsbytes("Expected ',' or ']' but found"), + cst_Expected_or_but_found$20= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Expected_or_but_found$21= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Unexpected_end_of_input$69= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$21= + caml_string_of_jsbytes("Expected '{' but found"), + cst_Unexpected_end_of_input$70= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$22= + caml_string_of_jsbytes("Expected '{' but found"), + cst_Unexpected_end_of_input$71= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$22= + caml_string_of_jsbytes("Expected ',' or '}' but found"), + cst_Unexpected_end_of_input$72= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$23= + caml_string_of_jsbytes("Expected ':' but found"), + cst_Unexpected_end_of_input$73= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$23= + caml_string_of_jsbytes("Expected '(' or '[' but found"), + cst_Unexpected_end_of_input$74= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$24= + caml_string_of_jsbytes("Expected '(' but found"), + cst_Unexpected_end_of_input$75= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$25= + caml_string_of_jsbytes("Expected ')' but found"), + cst_Unexpected_end_of_input$76= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$26= + caml_string_of_jsbytes("Expected '[' but found"), + cst_Unexpected_end_of_input$77= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$27= + caml_string_of_jsbytes("Expected ']' but found"), + cst_Unexpected_end_of_input$78= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Unexpected_end_of_input$79= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$10=caml_string_of_jsbytes("Invalid token"), + cst_Invalid_string_literal$3= + caml_string_of_jsbytes("Invalid string literal"), + cst_Unexpected_end_of_input$80= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$24= + caml_string_of_jsbytes("Expected ':' or '>' but found"), + cst_Unexpected_end_of_input$81= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$5= + 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_Unexpected_end_of_input$83= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$11=caml_string_of_jsbytes("Invalid token"), + cst_Invalid_string_literal$4= + caml_string_of_jsbytes("Invalid string literal"), + cst_Unexpected_end_of_input$84= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$25= + caml_string_of_jsbytes("Expected ':' or '>' but found"), + cst_Unexpected_end_of_input$85= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$6= + 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_Expected_or_but_found$26= + caml_string_of_jsbytes("Expected ',' or '}' but found"), + cst_Unexpected_end_of_input$87= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$27= + caml_string_of_jsbytes("Expected ',' or ']' but found"), + cst_Unexpected_end_of_input$88= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$28= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Unexpected_end_of_input$89= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$28= + caml_string_of_jsbytes("Expected ':' but found"), + cst_Unexpected_end_of_input$90= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$29= + 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_Unterminated_comment$2=caml_string_of_jsbytes("Unterminated comment"), + cst_Expected_two_objects_check$0= + caml_string_of_jsbytes("Expected two objects, check inputs"), + cst_Can_t_convert_each_element$0= + caml_string_of_jsbytes("Can't convert each element of non-array type "), + cst_Expected_string_or_null_go$0= + caml_string_of_jsbytes("Expected string or null, got "), + cst_Expected_string_got$0=caml_string_of_jsbytes("Expected string, got "), + cst_Expected_array_got$0=caml_string_of_jsbytes("Expected array, got "), + cst_Expected_int_or_null_got$0= + caml_string_of_jsbytes("Expected int or null, got "), + cst_Expected_int_got$0=caml_string_of_jsbytes("Expected int, got "), + cst_Expected_float_or_null_got$0= + caml_string_of_jsbytes("Expected float or null, got "), + cst_Expected_float_got$0=caml_string_of_jsbytes("Expected float, got "), + cst_Expected_number_or_null_go$0= + caml_string_of_jsbytes("Expected number or null, got "), + cst_Expected_number_got$0=caml_string_of_jsbytes("Expected number, got "), + cst_Expected_bool_or_null_got$0= + caml_string_of_jsbytes("Expected bool or null, got "), + cst_Expected_bool_got$0=caml_string_of_jsbytes("Expected bool, got "), + cst_Expected_object_got$0=caml_string_of_jsbytes("Expected object, got "), + cst_Can_t_map_function_over_no$0= + caml_string_of_jsbytes("Can't map function over non-array type "), + cst_out_of_bounds$0=caml_string_of_jsbytes(" out of bounds"), + cst_Index$0=caml_string_of_jsbytes("Index "), + cst_of_non_array_type$0=caml_string_of_jsbytes(" of non-array type "), + 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_object$0=caml_string_of_jsbytes("object"), + cst_array$0=caml_string_of_jsbytes("array"), + cst_bool$0=caml_string_of_jsbytes("bool"), + cst_variant$0=caml_string_of_jsbytes("variant"), + cst_tuple$0=caml_string_of_jsbytes("tuple"), + cst_float$0=caml_string_of_jsbytes("float"), + cst_int$0=caml_string_of_jsbytes("int"), + cst_intlit$0=caml_string_of_jsbytes("intlit"), + cst_string$0=caml_string_of_jsbytes("string"), + stream$0=[0,1], + cst_Blank_input_data$2=caml_string_of_jsbytes("Blank input data"), + cst_Blank_input_data$1=caml_string_of_jsbytes("Blank input data"), + cst_Junk_after_end_of_JSON_val$0= + 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= + 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= + caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$14= + caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), + cst_NaN_value_not_allowed_in_s$5= + 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= + caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$12= + 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_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_u00$1=caml_string_of_jsbytes("\\u00"), + cst_Null$0=caml_string_of_jsbytes("`Null"), + cst_Invalid_token=caml_string_of_jsbytes("Invalid token"), + cst_Invalid_token$0=caml_string_of_jsbytes("Invalid token"), + cst_Unexpected_end_of_input= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$1=caml_string_of_jsbytes("Invalid token"), + cst_Unexpected_end_of_input$0= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Unexpected_end_of_input$1= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_escape_sequence= + caml_string_of_jsbytes("Invalid escape sequence"), + cst_Unexpected_end_of_input$2= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_low_surrogate_for_= + caml_string_of_jsbytes + ("Invalid low surrogate for code point beyond U+FFFF"), + cst_Missing_escape_sequence_re= + caml_string_of_jsbytes + ("Missing escape sequence representing low surrogate for code point beyond U+FFFF"), + cst_Unexpected_end_of_input$3= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_string_literal= + caml_string_of_jsbytes("Invalid string literal"), + cst_Unexpected_end_of_input$4= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found= + caml_string_of_jsbytes("Expected ':' or '>' but found"), + cst_Unexpected_end_of_input$5= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found=caml_string_of_jsbytes("Expected '<' but found"), + cst_Unexpected_end_of_input$6= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$0=caml_string_of_jsbytes("Expected '>' but found"), + cst_Unexpected_end_of_input$7= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$1=caml_string_of_jsbytes("Expected ',' but found"), + cst_Unexpected_end_of_input$8= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$0= + caml_string_of_jsbytes("Expected '<', '\"' or '[' but found"), + cst_Unexpected_end_of_input$9= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Unterminated_comment=caml_string_of_jsbytes("Unterminated comment"), + cst_Expected_null_but_found= + caml_string_of_jsbytes("Expected 'null' but found"), + cst_Unexpected_end_of_input$10= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_true_or_false_but= + caml_string_of_jsbytes("Expected 'true' or 'false' but found"), + cst_Unexpected_end_of_input$11= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Int_overflow$1=caml_string_of_jsbytes("Int overflow"), + cst_Int_overflow$2=caml_string_of_jsbytes("Int overflow"), + cst_Expected_an_integer_but_fo= + caml_string_of_jsbytes + ("Expected an integer but found a string that doesn't even represent an integer"), + cst_Expected_integer_but_found= + caml_string_of_jsbytes("Expected integer but found"), + cst_Unexpected_end_of_input$12= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Int32_overflow=caml_string_of_jsbytes("Int32 overflow"), + cst_Expected_an_int32_but_foun= + caml_string_of_jsbytes + ("Expected an int32 but found a string that doesn't even represent an integer"), + cst_Expected_int32_but_found= + caml_string_of_jsbytes("Expected int32 but found"), + cst_Unexpected_end_of_input$13= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Int32_overflow$0=caml_string_of_jsbytes("Int32 overflow"), + cst_Expected_an_int64_but_foun= + caml_string_of_jsbytes + ("Expected an int64 but found a string that doesn't even represent an integer"), + cst_Expected_int64_but_found= + 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_Expected_a_number_but_foun= + caml_string_of_jsbytes + ("Expected a number but found a string that doesn't even represent a number"), + cst_Expected_number_but_found= + caml_string_of_jsbytes("Expected number but found"), + cst_Unexpected_end_of_input$15= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$2= + caml_string_of_jsbytes("Expected '\"' but found"), + cst_Unexpected_end_of_input$16= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$17= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$0= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$18= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$3=caml_string_of_jsbytes("Expected '[' but found"), + cst_Unexpected_end_of_input$19= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$4=caml_string_of_jsbytes("Expected '[' but found"), + cst_Unexpected_end_of_input$20= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$1= + caml_string_of_jsbytes("Expected ',' or ']' but found"), + cst_Unexpected_end_of_input$21= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$2=caml_string_of_jsbytes("Invalid token"), + cst_Expected_but_found$5=caml_string_of_jsbytes("Expected ')' but found"), + cst_Unexpected_end_of_input$22= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$2= + caml_string_of_jsbytes("Expected ')' or '' but found"), + cst_Expected_or_but_found$3= + caml_string_of_jsbytes("Expected ']' or '' but found"), + cst_Expected_or_but_found$4= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Unexpected_end_of_input$23= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$5= + caml_string_of_jsbytes("Expected ',' or ']' but found"), + cst_Expected_or_but_found$6= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Expected_or_but_found$7= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Unexpected_end_of_input$24= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$6=caml_string_of_jsbytes("Expected '{' but found"), + cst_Unexpected_end_of_input$25= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$7=caml_string_of_jsbytes("Expected '{' but found"), + cst_Unexpected_end_of_input$26= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$8= + caml_string_of_jsbytes("Expected ',' or '}' but found"), + cst_Unexpected_end_of_input$27= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$8=caml_string_of_jsbytes("Expected ':' but found"), + cst_Unexpected_end_of_input$28= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$9= + caml_string_of_jsbytes("Expected '(' or '[' but found"), + cst_Unexpected_end_of_input$29= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$9=caml_string_of_jsbytes("Expected '(' but found"), + cst_Unexpected_end_of_input$30= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$10= + caml_string_of_jsbytes("Expected ')' but found"), + cst_Unexpected_end_of_input$31= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$11= + caml_string_of_jsbytes("Expected '[' but found"), + cst_Unexpected_end_of_input$32= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$12= + caml_string_of_jsbytes("Expected ']' but found"), + cst_Unexpected_end_of_input$33= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$3=caml_string_of_jsbytes("Invalid token"), + cst_Invalid_token$4=caml_string_of_jsbytes("Invalid token"), + cst_Unexpected_end_of_input$34= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$5=caml_string_of_jsbytes("Invalid token"), + cst_Invalid_string_literal$0= + caml_string_of_jsbytes("Invalid string literal"), + cst_Unexpected_end_of_input$35= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$10= + caml_string_of_jsbytes("Expected ':' or '>' but found"), + cst_Unexpected_end_of_input$36= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$1= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$37= + 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_Unexpected_end_of_input$38= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$8=caml_string_of_jsbytes("Invalid token"), + cst_Invalid_string_literal$1= + caml_string_of_jsbytes("Invalid string literal"), + cst_Unexpected_end_of_input$39= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$2= + 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_Expected_or_but_found$11= + caml_string_of_jsbytes("Expected ',' or '}' but found"), + cst_Unexpected_end_of_input$41= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$12= + caml_string_of_jsbytes("Expected ',' or ']' but found"), + cst_Unexpected_end_of_input$42= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$13= + 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_Unterminated_comment$0=caml_string_of_jsbytes("Unterminated comment"), + cst_Expected_two_objects_check= + caml_string_of_jsbytes("Expected two objects, check inputs"), + cst_Can_t_convert_each_element= + caml_string_of_jsbytes("Can't convert each element of non-array type "), + cst_Expected_string_or_null_go= + caml_string_of_jsbytes("Expected string or null, got "), + cst_Expected_string_got=caml_string_of_jsbytes("Expected string, got "), + cst_Expected_array_got=caml_string_of_jsbytes("Expected array, got "), + cst_Expected_int_or_null_got= + caml_string_of_jsbytes("Expected int or null, got "), + cst_Expected_int_got=caml_string_of_jsbytes("Expected int, got "), + cst_Expected_float_or_null_got= + caml_string_of_jsbytes("Expected float or null, got "), + cst_Expected_float_got=caml_string_of_jsbytes("Expected float, got "), + cst_Expected_number_or_null_go= + caml_string_of_jsbytes("Expected number or null, got "), + cst_Expected_number_got=caml_string_of_jsbytes("Expected number, got "), + cst_Expected_bool_or_null_got= + caml_string_of_jsbytes("Expected bool or null, got "), + cst_Expected_bool_got=caml_string_of_jsbytes("Expected bool, got "), + cst_Expected_object_got=caml_string_of_jsbytes("Expected object, got "), + cst_Can_t_map_function_over_no= + caml_string_of_jsbytes("Can't map function over non-array type "), + cst_out_of_bounds=caml_string_of_jsbytes(" out of bounds"), + cst_Index=caml_string_of_jsbytes("Index "), + cst_of_non_array_type=caml_string_of_jsbytes(" of non-array type "), + 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_object=caml_string_of_jsbytes("object"), + cst_array=caml_string_of_jsbytes("array"), + cst_bool=caml_string_of_jsbytes("bool"), + cst_variant=caml_string_of_jsbytes("variant"), + cst_tuple=caml_string_of_jsbytes("tuple"), + cst_float=caml_string_of_jsbytes("float"), + cst_int=caml_string_of_jsbytes("int"), + cst_intlit=caml_string_of_jsbytes("intlit"), + cst_string=caml_string_of_jsbytes("string"), + stream=[0,1], + cst_Blank_input_data$0=caml_string_of_jsbytes("Blank input data"), + cst_Blank_input_data=caml_string_of_jsbytes("Blank input data"), + cst_Junk_after_end_of_JSON_val= + caml_string_of_jsbytes("Junk after end of JSON value:"), + cst_Int8_overflow=caml_string_of_jsbytes("Int8 overflow"), + 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_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_0$4=caml_string_of_jsbytes(".0"), + 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_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_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_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_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_NaN=caml_string_of_jsbytes("NaN"), + cst_0=caml_string_of_jsbytes(".0"), + cst_Infinity=caml_string_of_jsbytes("Infinity"), + cst_Infinity$0=caml_string_of_jsbytes("-Infinity"), + cst_true=caml_string_of_jsbytes("true"), + cst_false=caml_string_of_jsbytes("false"), + cst_null=caml_string_of_jsbytes("null"), + cst_b=caml_string_of_jsbytes("\\b"), + cst_t=caml_string_of_jsbytes("\\t"), + cst_n=caml_string_of_jsbytes("\\n"), + cst_f=caml_string_of_jsbytes("\\f"), + cst_r=caml_string_of_jsbytes("\\r"), + 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"), + 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"), + cst_Yojson_End_of_tuple=caml_string_of_jsbytes("Yojson.End_of_tuple"), + cst_Yojson_End_of_input=caml_string_of_jsbytes("Yojson.End_of_input"), + cst_Yojson_Basic_Int_overflow= + caml_string_of_jsbytes("Yojson.Basic.Int_overflow"), + ocaml_lex_tables= + [0, + caml_string_of_jsbytes + ("\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0"), + caml_string_of_jsbytes + ("\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), + caml_string_of_jsbytes + ("\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02"), + caml_string_of_jsbytes + ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), + caml_string_of_jsbytes + ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes("")], + cst_Yojson_Basic_Finally=caml_string_of_jsbytes("Yojson.Basic.Finally"), + cst_Yojson_Basic_Util_Type_err= + caml_string_of_jsbytes("Yojson.Basic.Util.Type_error"), + cst_Yojson_Basic_Util_Undefine= + caml_string_of_jsbytes("Yojson.Basic.Util.Undefined"), + cst_Yojson_Safe_Int_overflow= + caml_string_of_jsbytes("Yojson.Safe.Int_overflow"), + ocaml_lex_tables$0= + [0, + caml_string_of_jsbytes + ("\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0"), + caml_string_of_jsbytes + ("\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), + caml_string_of_jsbytes + ("\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02"), + caml_string_of_jsbytes + ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), + caml_string_of_jsbytes + ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes("")], + cst_Yojson_Safe_Finally=caml_string_of_jsbytes("Yojson.Safe.Finally"), + cst_Yojson_Safe_Util_Type_erro= + caml_string_of_jsbytes("Yojson.Safe.Util.Type_error"), + cst_Yojson_Safe_Util_Undefined= + caml_string_of_jsbytes("Yojson.Safe.Util.Undefined"), + cst_Yojson_Raw_Int_overflow= + caml_string_of_jsbytes("Yojson.Raw.Int_overflow"), + ocaml_lex_tables$1= + [0, + caml_string_of_jsbytes + ("\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0"), + caml_string_of_jsbytes + ("\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), + caml_string_of_jsbytes + ("\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02"), + caml_string_of_jsbytes + ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), + caml_string_of_jsbytes + ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + 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_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_Char=global_data.Stdlib__Char, + Stdlib_Lexing=global_data.Stdlib__Lexing, + _a_=[0,951901561,0], + _b_=[0,848054398,0], + _c_=[0,848054398,0], + ___= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _S_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _G_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _H_= + [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_= + [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_= + [0, + [11, + caml_string_of_jsbytes("`Assoc ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Assoc (@[")], + _F_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _L_= + [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_= + [0, + [11, + caml_string_of_jsbytes("`Floatlit ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [0, + [11, + caml_string_of_jsbytes("`List ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`List (@[")], + _R_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _T_= + [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_= + [0, + [11, + caml_string_of_jsbytes("`Bool ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [0, + [11, + caml_string_of_jsbytes("`Tuple ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Tuple (@[")], + _Z_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _$_= + [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_= + [0, + [11, + caml_string_of_jsbytes("`Variant ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Variant (@[")], + _ac_= + [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, + [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_= + [0, + [11, + caml_string_of_jsbytes("`Float ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [0, + [11, + caml_string_of_jsbytes("`Int ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [0, + [11, + caml_string_of_jsbytes("`Stringlit ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [0, + [11, + caml_string_of_jsbytes("`String ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [0, + [11, + caml_string_of_jsbytes("`Intlit ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _c8_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _cW_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _cX_= + [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_= + [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_= + [0, + [11, + caml_string_of_jsbytes("`Assoc ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Assoc (@[")], + _cV_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _c1_= + [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_= + [0, + [11, + caml_string_of_jsbytes("`Floatlit ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [0, + [11, + caml_string_of_jsbytes("`List ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`List (@[")], + _c7_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _c9_= + [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$_= + [0, + [11, + caml_string_of_jsbytes("`Bool ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [0, + [11, + caml_string_of_jsbytes("`Tuple ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Tuple (@[")], + _dd_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _df_= + [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_= + [0, + [11, + caml_string_of_jsbytes("`Variant ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Variant (@[")], + _di_= + [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_= + [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_= + [0, + [11, + caml_string_of_jsbytes("`Stringlit ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [0, + [11, + caml_string_of_jsbytes("`Intlit ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [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_= + [0, + [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], + caml_string_of_jsbytes("%s '%s'")], + _dv_= + [0, + [11, + caml_string_of_jsbytes("File "), + [2,0,[11,caml_string_of_jsbytes(", line"),0]]], + caml_string_of_jsbytes("File %s, line")], + _dw_= + [0, + [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], + caml_string_of_jsbytes("byte %i")], + _dy_= + [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_= + [0, + [2, + 0, + [12, + 32, + [4, + 3, + 0, + 0, + [11, + 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_= + [0, + [11, + caml_string_of_jsbytes("src="), + [3, + 0, + [11, + caml_string_of_jsbytes(" start="), + [4, + 3, + 0, + 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_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _cg_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _b9_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _b__= + [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_= + [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_= + [0, + [11, + caml_string_of_jsbytes("`Assoc ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Assoc (@[")], + _b8_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _cc_= + [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_= + [0, + [11, + caml_string_of_jsbytes("`List ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`List (@[")], + _cf_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _ch_= + [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_= + [0, + [11, + caml_string_of_jsbytes("`Bool ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [0, + [11, + caml_string_of_jsbytes("`Variant ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Variant (@[")], + _cn_= + [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_= + [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_= + [0, + [11, + caml_string_of_jsbytes("`Tuple ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Tuple (@[")], + _b3_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _b5_= + [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_= + [0, + [11, + caml_string_of_jsbytes("`Float ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [0, + [11, + caml_string_of_jsbytes("`Int ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [0, + [11, + caml_string_of_jsbytes("`Intlit ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [0, + [11, + caml_string_of_jsbytes("`String ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [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_= + [0, + [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], + caml_string_of_jsbytes("%s '%s'")], + _cG_= + [0, + [11, + caml_string_of_jsbytes("File "), + [2,0,[11,caml_string_of_jsbytes(", line"),0]]], + caml_string_of_jsbytes("File %s, line")], + _cH_= + [0, + [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], + caml_string_of_jsbytes("byte %i")], + _cJ_= + [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_= + [0, + [2, + 0, + [12, + 32, + [4, + 3, + 0, + 0, + [11, + 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")], + _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_= + [0, + [11, + caml_string_of_jsbytes("src="), + [3, + 0, + [11, + caml_string_of_jsbytes(" start="), + [4, + 3, + 0, + 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_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _a3_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _a4_= + [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_= + [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_= + [0, + [11, + caml_string_of_jsbytes("`Assoc ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Assoc (@[")], + _a2_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _a8_= + [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__= + [0, + [11, + caml_string_of_jsbytes("`List ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`List (@[")], + _a$_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _bb_= + [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_= + [0, + [11, + caml_string_of_jsbytes("`Bool ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [0, + [11, + caml_string_of_jsbytes("`Float ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [0, + [11, + caml_string_of_jsbytes("`Int ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [0, + [11, + caml_string_of_jsbytes("`String ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + 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_= + [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_= + [0, + [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], + caml_string_of_jsbytes("%s '%s'")], + _br_= + [0, + [11, + caml_string_of_jsbytes("File "), + [2,0,[11,caml_string_of_jsbytes(", line"),0]]], + caml_string_of_jsbytes("File %s, line")], + _bs_= + [0, + [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], + caml_string_of_jsbytes("byte %i")], + _bu_= + [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_= + [0, + [2, + 0, + [12, + 32, + [4, + 3, + 0, + 0, + [11, + 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_= + [0, + [11, + caml_string_of_jsbytes("src="), + [3, + 0, + [11, + caml_string_of_jsbytes(" start="), + [4, + 3, + 0, + 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_= + [0, + [11, + caml_string_of_jsbytes("src="), + [3, + 0, + [11, + caml_string_of_jsbytes(" start="), + [4, + 3, + 0, + 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)]; + function json_error(s){throw [0,Json_error,s]} + var + End_of_array=[248,cst_Yojson_End_of_array,caml_fresh_oo_id(0)], + End_of_object=[248,cst_Yojson_End_of_object,caml_fresh_oo_id(0)], + 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]; + 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)) + {caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],192 | (x >>> 6 | 0) & 31)); + return caml_call2(add,buf,caml_call1(Stdlib_Char[1],128 | x & 63))} + if(maxbits(16,x)) + {caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],224 | (x >>> 12 | 0) & 15)); + 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))} + if(maxbits(21,x)) + {caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],240 | (x >>> 18 | 0) & 7)); + caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 12 | 0) & 63)); + 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))} + if(maxbits(26,x)) + {caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],248 | (x >>> 24 | 0) & 3)); + caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 18 | 0) & 63)); + caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 12 | 0) & 63)); + 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))} + if(maxbits(31,x)) + {caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],252 | (x >>> 30 | 0) & 1)); + caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 24 | 0) & 63)); + caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 18 | 0) & 63)); + caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 12 | 0) & 63)); + 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_]} + 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); + 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_)} + 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); + start[1] = stop + 1 | 0; + return 0} + function finish_string(src,start,ob) + {try + {var + _k0_= + caml_call4 + (Bi_outbuf[14], + ob, + src, + start[1], + caml_ml_string_length(src) - start[1] | 0); + return _k0_} + catch(exc) + {exc = caml_wrap_exception(exc); + caml_call4 + (Stdlib_Printf[3], + _e_, + 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_; + for(;;) + {var c=caml_string_get(s,i$0); + if(92 === c) + write_special(s,start,i$0,ob,cst); + else + {var switch$0=0; + if(35 <= c) + if(127 === c)switch$0 = 1;else switch$0 = 2; + else + 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 24: + case 25:switch$0 = 2;switch$1 = 1;break; + default:switch$0 = 1;switch$1 = 1}} + else + switch$0 = 1; + 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; + break + }} + var _kZ_=i$0 + 1 | 0; + if(_kY_ !== i$0){var i$0=_kZ_;continue} + break}} + finish_string(s,start,ob); + return caml_call2(Bi_outbuf[15],ob,34)} + function json_string_of_string(s) + {var ob=caml_call3(Bi_outbuf[3],0,0,10); + write_string(ob,s); + return caml_call1(Bi_outbuf[4],ob)} + function write_null(ob,param) + {return caml_call2(Bi_outbuf[13],ob,cst_null)} + function write_bool(ob,x) + {var _kW_=x?cst_true:cst_false;return caml_call2(Bi_outbuf[13],ob,_kW_)} + 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; + 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} + 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} + function float_needs_period(s) + {try + {var _kS_=caml_ml_string_length(s) - 1 | 0,_kR_=0; + if(! (_kS_ < 0)) + {var i=_kR_; + for(;;) + {var match=caml_string_get(s,i),switch$0=0; + if(48 <= match) + {if(! (58 <= match))switch$0 = 1} + 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} + 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_} + 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 + 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_} + 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); + 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_} + 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_)} + return 4 <= match + ?caml_call2(Bi_outbuf[13],ob,cst_NaN$1) + :write_normal_float_prec(significant_figures,ob,x)} + function write_std_float_fast(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var + _kJ_= + 0. < x + ?cst_Infinity_value_not_allowed + :cst_Infinity_value_not_allowed$0; + return json_error(_kJ_)} + 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_} + function write_std_float_prec(significant_figures,ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var + _kG_= + 0. < x + ?cst_Infinity_value_not_allowed$3 + :cst_Infinity_value_not_allowed$4; + return json_error(_kG_)} + return 4 <= match + ?json_error(cst_NaN_value_not_allowed_in_s$1) + :write_normal_float_prec(significant_figures,ob,x)} + var + write_intlit=Bi_outbuf[13], + write_floatlit=Bi_outbuf[13], + write_stringlit=Bi_outbuf[13]; + function iter2(f_elt,f_sep,x,param$0) + {if(param$0) + {var l$0=param$0[2],y$0=param$0[1]; + caml_call2(f_elt,x,y$0); + var param=l$0; + for(;;) + {if(param) + {var l=param[2],y=param[1]; + caml_call1(f_sep,x); + caml_call2(f_elt,x,y); + var param=l; + continue} + return 0}} + return 0} + function f_sep(ob){return caml_call2(Bi_outbuf[15],ob,44)} + function write_tuple(ob,l) + {caml_call2(Bi_outbuf[15],ob,40); + iter2(write_t,f_sep,ob,l); + return caml_call2(Bi_outbuf[15],ob,41)} + function write_list(ob,l) + {caml_call2(Bi_outbuf[15],ob,91); + iter2(write_t,f_sep,ob,l); + return caml_call2(Bi_outbuf[15],ob,93)} + 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 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)} + var b=x[2]; + return write_bool(ob,b)} + if(726928360 <= _kF_){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)} + 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)} + 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]; + 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)} + function write_std_tuple(ob,l) + {caml_call2(Bi_outbuf[15],ob,91); + iter2(write_std_json,f_sep,ob,l); + return caml_call2(Bi_outbuf[15],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 + 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); + return write_std_json(ob,x)}; + caml_call2(Bi_outbuf[15],ob,123); + iter2(f_elt,f_sep,ob,l); + return caml_call2(Bi_outbuf[15],ob,125)} + var s=x[2]; + return caml_call2(Bi_outbuf[13],ob,s)} + if(848054398 <= _kE_) + {var l$0=x[2]; + caml_call2(Bi_outbuf[15],ob,91); + iter2(write_std_json,f_sep,ob,l$0); + return caml_call2(Bi_outbuf[15],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)} + 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)} + 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)} + 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) + {if(opt)var sth=opt[1],len=sth;else var len=256; + if(buf) + {var ob=buf[1];caml_call1(Bi_outbuf[19],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); + return s} + function to_channel(buf,len,std,oc,x) + {if(buf) + var ob=buf[1],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; + 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); + try + {to_channel(0,len,std,oc,x); + var _kD_=caml_call1(Stdlib[76],oc); + return _kD_} + 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) + {if(opt)var sth=opt[1],len=sth;else var len=256; + if(buf) + {var ob=buf[1];caml_call1(Bi_outbuf[19],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); + return s} + function stream_to_channel(buf,len,std,oc,st) + {if(buf) + var ob=buf[1],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); + try + {stream_to_channel(0,len,std,oc,st); + var _kA_=caml_call1(Stdlib[76],oc); + return _kA_} + 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 + l$0=x[2], + _kt_= + 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]; + return caml_call2(Stdlib_String[9],a,b)}; + return [0,963043957,caml_call2(Stdlib_List[57],_kv_,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); + 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_)]}} + 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 xs=param[2]; + caml_call2(Stdlib_Format[129],fmt,_E_); + caml_call2(Stdlib_Format[129],fmt,_F_); + var + _kl_=0, + _km_= + 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_); + pp(fmt,value); + caml_call2(Stdlib_Format[129],fmt,_K_); + 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_)} + 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_) + {var xs$0=param[2]; + caml_call2(Stdlib_Format[129],fmt,_Q_); + caml_call2(Stdlib_Format[129],fmt,_R_); + var + _kn_=0, + _ko_= + function(sep,x) + {if(sep)caml_call2(Stdlib_Format[129],fmt,_S_); + 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_)} + 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_) + {var tup=param[2]; + caml_call2(Stdlib_Format[129],fmt,_Y_); + caml_call2(Stdlib_Format[129],fmt,_Z_); + var + _kp_=0, + _kq_= + function(sep,e) + {if(sep)caml_call2(Stdlib_Format[129],fmt,___); + 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_)} + 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_); + 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)} + 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_) + {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_) + {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_)} + 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_) + {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_)} + 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)} + 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 switch$0=0; + if(848054398 <= _kd_) + {if(928231259 === _kd_) + {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(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]; + 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_) + {var + value=_ki_[2], + key=_ki_[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); + return result} + catch(_kh_) + {_kh_ = caml_wrap_exception(_kh_); + if(_kh_[1] === Stdlib[6])return 0; + throw _kh_}}} + else + if + (! + (848054399 <= _kd_) + && + typeof b$0 + !== + "number" + && + 848054398 + === + b$0[1]) + {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} + else + if(726928360 === _kd_) + {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(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_) + && + typeof b$0 + !== + "number" + && + 708012133 + === + b$0[1]) + {var + _kf_=b$0[2], + value=_kf_[2], + name=_kf_[1], + match=a$0[2], + value$0=match[2], + name$0=match[1], + match$0=caml_equal(name$0,name); + if(match$0) + {if(value$0) + {if(value) + {var b$3=value[1],a$3=value$0[1],a$0=a$3,b$0=b$3;continue}} + else + if(! value)return 1; + return 0} + return 0} + if(switch$0) + 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_}} + else + if(-375152890 <= _kd_) + {if(3654863 === _kd_) + {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(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_) + && + typeof b$0 + !== + "number" + && + -375152890 + === + 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(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_ + && + typeof b$0 + !== + "number" + && + -752863768 + === + 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) + {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) + {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) + {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]; + 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)} + 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) + {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)} + function hex$0(n) + {var _jP_=10 <= n?n + 87 | 0:n + 48 | 0; + return caml_call1(Stdlib_Char[1],_jP_)} + 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); + start[1] = stop + 1 | 0; + return 0} + function finish_string$0(src,start,ob) + {try + {var + _jO_= + caml_call4 + (Bi_outbuf[14], + ob, + src, + start[1], + caml_ml_string_length(src) - start[1] | 0); + return _jO_} + catch(exc) + {exc = caml_wrap_exception(exc); + caml_call4 + (Stdlib_Printf[3], + _aB_, + 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_; + for(;;) + {var c=caml_string_get(s,i$0); + if(92 === c) + write_special$0(s,start,i$0,ob,cst$20); + else + {var switch$0=0; + if(35 <= c) + if(127 === c)switch$0 = 1;else switch$0 = 2; + else + 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 24: + case 25:switch$0 = 2;switch$1 = 1;break; + default:switch$0 = 1;switch$1 = 1}} + else + switch$0 = 1; + 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; + break + }} + var _jN_=i$0 + 1 | 0; + if(_jM_ !== i$0){var i$0=_jN_;continue} + break}} + finish_string$0(s,start,ob); + return caml_call2(Bi_outbuf[15],ob,34)} + function write_null$0(ob,param) + {return caml_call2(Bi_outbuf[13],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 + _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; + 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} + 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} + function float_needs_period$0(s) + {try + {var _jG_=caml_ml_string_length(s) - 1 | 0,_jF_=0; + if(! (_jG_ < 0)) + {var i=_jF_; + for(;;) + {var match=caml_string_get(s,i),switch$0=0; + if(48 <= match) + {if(! (58 <= match))switch$0 = 1} + 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} + 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_} + 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 + 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_} + 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); + 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_} + 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_)} + return 4 <= match + ?caml_call2(Bi_outbuf[13],ob,cst_NaN$4) + :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_= + 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); + 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_} + function write_std_float_prec$0(significant_figures,ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var + _ju_= + 0. < x + ?cst_Infinity_value_not_allowed$9 + :cst_Infinity_value_not_allowed$10; + return json_error(_ju_)} + return 4 <= match + ?json_error(cst_NaN_value_not_allowed_in_s$4) + :write_normal_float_prec$0(significant_figures,ob,x)} + function iter2$0(f_elt,f_sep,x,param$0) + {if(param$0) + {var l$0=param$0[2],y$0=param$0[1]; + caml_call2(f_elt,x,y$0); + var param=l$0; + for(;;) + {if(param) + {var l=param[2],y=param[1]; + caml_call1(f_sep,x); + caml_call2(f_elt,x,y); + var param=l; + continue} + return 0}} + return 0} + function f_sep$0(ob){return caml_call2(Bi_outbuf[15],ob,44)} + function write_list$0(ob,l) + {caml_call2(Bi_outbuf[15],ob,91); + iter2$0(write_t$0,f_sep$0,ob,l); + return caml_call2(Bi_outbuf[15],ob,93)} + 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 l$0=x[2]; + return write_list$0(ob,l$0)} + if(737456202 <= _jt_){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)} + 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 + 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); + return write_std_json$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)} + var l$0=x[2]; + caml_call2(Bi_outbuf[15],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)} + var f=x[2]; + return write_std_float$0(ob,f)} + if(3654863 <= _js_){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) + {if(opt)var sth=opt[1],len=sth;else var len=256; + if(buf) + {var ob=buf[1];caml_call1(Bi_outbuf[19],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); + return s} + function to_channel$1(buf,len,std,oc,x) + {if(buf) + var ob=buf[1],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; + 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); + try + {to_channel$1(0,len,std,oc,x); + var _jr_=caml_call1(Stdlib[76],oc); + return _jr_} + 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) + {if(opt)var sth=opt[1],len=sth;else var len=256; + if(buf) + {var ob=buf[1];caml_call1(Bi_outbuf[19],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); + return s} + function stream_to_channel$0(buf,len,std,oc,st) + {if(buf) + var ob=buf[1],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); + try + {stream_to_channel$0(0,len,std,oc,st); + var _jo_=caml_call1(Stdlib[76],oc); + return _jo_} + 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 + l$0=x[2], + _jk_= + 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]; + return caml_call2(Stdlib_String[9],a,b)}; + return [0,963043957,caml_call2(Stdlib_List[57],_jm_,l$1)]}} + return x} + function pp$0(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 xs=param[2]; + caml_call2(Stdlib_Format[129],fmt,_a1_); + caml_call2(Stdlib_Format[129],fmt,_a2_); + var + _je_=0, + _jf_= + 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_); + 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_)} + var xs$0=param[2]; + caml_call2(Stdlib_Format[129],fmt,_a__); + caml_call2(Stdlib_Format[129],fmt,_a$_); + var + _jg_=0, + _jh_= + function(sep,x) + {if(sep)caml_call2(Stdlib_Format[129],fmt,_ba_); + pp$0(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_) + {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_)} + 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_) + {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_)} + 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)} + 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_) + {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(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$_}}} + else + if + (963043957 + === + _i9_ + && + typeof b + !== + "number" + && + 963043957 + === + b[1]) + {var + ys$0=b[2], + xs$0=a[2], + compare_keys= + function(param,_jc_) + {var key=_jc_[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_) + {var + value=_jb_[2], + key=_jb_[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); + return result$0} + catch(_ja_) + {_ja_ = caml_wrap_exception(_ja_); + if(_ja_[1] === Stdlib[6])return 0; + throw _ja_}}} + else + if(-976970511 === _i9_) + {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(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]) + {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)} + var + from_channel=Stdlib_Lexing[2], + from_string=Stdlib_Lexing[3], + lexeme=Stdlib_Lexing[8], + sub_lexeme=Stdlib_Lexing[16], + sub_lexeme_char=Stdlib_Lexing[18]; + function hex$1(c) + {if(65 <= c) + {if(97 <= c) + {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} + else + if(! (71 <= c))return (c - 65 | 0) + 10 | 0} + else + if(! (9 < c - 48 >>> 0))return c - 48 | 0; + throw [0,Assert_failure,_bq_]} + 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); + 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); + return json_error(msg)} + function lexer_error(descr,v,lexbuf) + {var _i6_=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_]}]; + 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), + 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, + Int_overflow=[248,cst_Yojson_Basic_Int_overflow,caml_fresh_oo_id(0)]; + function extract_positive_int(lexbuf) + {var + start=lexbuf[5], + stop=lexbuf[6], + s=lexbuf[2], + n=[0,0], + _i3_=stop - 1 | 0; + if(! (_i3_ < 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} + break}} + if(0 <= n[1])return n[1]; + throw Int_overflow} + function extract_negative_int(lexbuf) + {var + start=lexbuf[5] + 1 | 0, + stop=lexbuf[6], + s=lexbuf[2], + n=[0,0], + _i0_=stop - 1 | 0; + if(! (_i0_ < 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} + break}} + if(0 < n[1])throw Int_overflow; + return n[1]} + function newline(v,lexbuf) + {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}}}} + function read_json$2(counter,v,lexbuf) + {var _iT_=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_])} + function ocaml_lex_read_json_rec(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,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 _bA_; + case 1:return _bB_; + 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]); + 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) + return lexer_error(cst_Int_overflow,v,lexbuf); + throw _iS_} + case 8: + try + {var _iK_=[0,3654863,extract_negative_int(lexbuf)];return _iK_} + catch(_iR_) + {_iR_ = caml_wrap_exception(_iR_); + if(_iR_ === Int_overflow) + return lexer_error(cst_Int_overflow$0,v,lexbuf); + throw _iR_} + case 9: + return [0, + 365180284, + caml_float_of_string(caml_call1(lexeme,lexbuf))]; + case 10: + var acc=[0,0]; + try + {read_space(v,lexbuf); + read_object_end(lexbuf); + var field_name=read_ident(v,lexbuf); + 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_]; + for(;;) + {read_space(v,lexbuf); + read_object_sep(v,lexbuf); + read_space(v,lexbuf); + var field_name$0=read_ident(v,lexbuf); + 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_]; + continue}} + catch(_iQ_) + {_iQ_ = caml_wrap_exception(_iQ_); + if(_iQ_ === End_of_object) + return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; + throw _iQ_} + 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_]; + 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_]; + continue}} + catch(_iP_) + {_iP_ = caml_wrap_exception(_iP_); + if(_iP_ === End_of_array) + return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; + throw _iP_} + case 12:return long_error(cst_Invalid_token,v,lexbuf); + case 13:return long_error(cst_Invalid_token$0,v,lexbuf); + case 14: + if(counter < 50) + {var counter$0=counter + 1 | 0; + return read_json$2(counter$0,v,lexbuf)} + return caml_trampoline_return(read_json$2,[0,v,lexbuf]); + case 15: + finish_comment(v,lexbuf); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return read_json$2(counter$1,v,lexbuf)} + return caml_trampoline_return(read_json$2,[0,v,lexbuf]); + case 16: + newline(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return read_json$2(counter$2,v,lexbuf)} + return caml_trampoline_return(read_json$2,[0,v,lexbuf]); + case 17: + if(counter < 50) + {var counter$3=counter + 1 | 0; + return read_json$2(counter$3,v,lexbuf)} + return caml_trampoline_return(read_json$2,[0,v,lexbuf]); + case 18:return custom_error(cst_Unexpected_end_of_input,v,lexbuf); + 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 map_string(v,f,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=63; + 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: + var b=v[1],_iI_=b[3]; + return caml_call3(f,caml_call1(Stdlib_Bytes[6],b[1]),0,_iI_); + 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; + 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: + 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; + 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 finish_variant(v,lexbuf) + {var ocaml_lex_state=102; + 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: + var x=read_json(v,lexbuf); + read_space(v,lexbuf); + read_gt(v,lexbuf); + return [0,x]; + case 1:return 0; + case 2:return long_error(cst_Expected_or_but_found,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$5,v,lexbuf)}}} + function read_lt(v,lexbuf) + {var ocaml_lex_state=107; + 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,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$6,v,lexbuf)}}} + function read_comma(v,lexbuf) + {var ocaml_lex_state=115; + 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$1,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$8,v,lexbuf)}}} + function start_any_variant(v,lexbuf) + {var ocaml_lex_state=119; + 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:return -154522342; + case 1:caml_call1(Bi_outbuf[19],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 read_eof(lexbuf) + {var ocaml_lex_state=131; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)return 1; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_null(v,lexbuf) + {var ocaml_lex_state=140; + 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_null_but_found,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$10,v,lexbuf)}}} + function read_null_if_possible(v,lexbuf) + {var ocaml_lex_state=147; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)return 1; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_bool(v,lexbuf) + {var ocaml_lex_state=152; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(5 < 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 1; + case 1:return 0; + case 2:return 1; + case 3:return 0; + case 4:return long_error(cst_Expected_true_or_false_but,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$11,v,lexbuf)}}} + function ocaml_lex_read_int_rec(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,ocaml_lex_state$0,lexbuf); + if(4 < 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: + try + {var _iC_=extract_positive_int(lexbuf);return _iC_} + catch(_iH_) + {_iH_ = caml_wrap_exception(_iH_); + if(_iH_ === Int_overflow) + return lexer_error(cst_Int_overflow$1,v,lexbuf); + throw _iH_} + case 1: + try + {var _iD_=extract_negative_int(lexbuf);return _iD_} + catch(_iG_) + {_iG_ = caml_wrap_exception(_iG_); + if(_iG_ === Int_overflow) + return lexer_error(cst_Int_overflow$2,v,lexbuf); + throw _iG_} + case 2: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$1(v,lexbuf); + try + {var _iE_=caml_int_of_string(s);return _iE_} + catch(_iF_) + {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)}}} + function read_int(v,lexbuf){return ocaml_lex_read_int_rec(v,lexbuf,176)} + function ocaml_lex_read_int32_rec(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,ocaml_lex_state$0,lexbuf); + if(3 < 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: + try + {var _iy_=caml_int_of_string(caml_call1(lexeme,lexbuf)); + return _iy_} + catch(_iB_){return lexer_error(cst_Int32_overflow,v,lexbuf)} + case 1: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$1(v,lexbuf); + try + {var _iz_=caml_int_of_string(s);return _iz_} + catch(_iA_) + {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)}}} + function read_int32(v,lexbuf) + {return ocaml_lex_read_int32_rec(v,lexbuf,185)} + function ocaml_lex_read_int64_rec(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,ocaml_lex_state$0,lexbuf); + if(3 < 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: + try + {var _iu_=caml_int64_of_string(caml_call1(lexeme,lexbuf)); + return _iu_} + catch(_ix_){return lexer_error(cst_Int32_overflow$0,v,lexbuf)} + case 1: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$1(v,lexbuf); + try + {var _iv_=caml_int64_of_string(s);return _iv_} + catch(_iw_) + {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)}}} + function read_int64(v,lexbuf) + {return ocaml_lex_read_int64_rec(v,lexbuf,192)} + function ocaml_lex_read_number_rec(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,ocaml_lex_state$0,lexbuf); + if(6 < 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 Stdlib[24]; + case 1:return Stdlib[22]; + 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]); + 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) + ?custom_error(cst_Expected_a_number_but_foun,v,lexbuf) + :Stdlib[24] + :Stdlib[22] + :Stdlib[23]} + case 5:return long_error(cst_Expected_number_but_found,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$15,v,lexbuf)}}} + function read_number(v,lexbuf) + {return ocaml_lex_read_number_rec(v,lexbuf,199)} + function read_string(v,lexbuf) + {var ocaml_lex_state=233; + 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: + caml_call1(Bi_outbuf[19],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 map_ident(v,f,lexbuf) + {var ocaml_lex_state=242; + 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 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); + 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 + (read_cell,init_acc,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,ocaml_lex_state$0,lexbuf); + if(2 < 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: + var acc=[0,init_acc]; + try + {read_space(v,lexbuf); + read_array_end(lexbuf); + acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); + for(;;) + {read_space(v,lexbuf); + read_array_sep(v,lexbuf); + 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_} + 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) + {return ocaml_lex_read_sequence_rec(read_cell,init_acc,v,lexbuf,247)} + function ocaml_lex_read_list_rev_rec(read_cell,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,ocaml_lex_state$0,lexbuf); + if(2 < 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: + var acc=[0,0]; + try + {read_space(v,lexbuf); + read_array_end(lexbuf); + var _in_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_in_]; + 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_]; + continue}} + catch(_ip_) + {_ip_ = caml_wrap_exception(_ip_); + if(_ip_ === End_of_array)return acc[1]; + throw _ip_} + 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_tuple(read_cell,init_acc,v,lexbuf) + {var ocaml_lex_state=262; + 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 long_error(cst_Invalid_token$2,v,lexbuf); + case 1:return long_error(cst_Expected_but_found$5,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$22,v,lexbuf)}}} + function read_tuple_end(lexbuf) + {var ocaml_lex_state=266; + 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_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(v,std,lexbuf) + {var ocaml_lex_state=268; + 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: + if(std)return long_error(cst_Expected_or_but_found$2,v,lexbuf); + throw End_of_tuple; + case 1: + if(std)throw End_of_tuple; + return long_error(cst_Expected_or_but_found$3,v,lexbuf); + default:return 0}}} + function read_tuple_sep(v,lexbuf) + {var ocaml_lex_state=271; + 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_tuple; + case 2:return long_error(cst_Expected_or_but_found$4,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$23,v,lexbuf)}}} + function read_tuple_sep2(v,std,lexbuf) + {var ocaml_lex_state=276; + 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:return 0; + case 1: + if(std)return long_error(cst_Expected_or_but_found$5,v,lexbuf); + throw End_of_tuple; + case 2: + if(std)throw End_of_tuple; + return long_error(cst_Expected_or_but_found$6,v,lexbuf); + case 3:return long_error(cst_Expected_or_but_found$7,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$24,v,lexbuf)}}} + function ocaml_lex_read_abstract_fields + (read_key,read_field,init_acc,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,ocaml_lex_state$0,lexbuf); + if(2 < 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: + var acc=[0,init_acc]; + try + {read_space(v,lexbuf); + read_object_end(lexbuf); + var field_name=caml_call2(read_key,v,lexbuf); + read_space(v,lexbuf); + read_colon(v,lexbuf); + read_space(v,lexbuf); + acc[1] = caml_call4(read_field,acc[1],field_name,v,lexbuf); + for(;;) + {read_space(v,lexbuf); + read_object_sep(v,lexbuf); + read_space(v,lexbuf); + var field_name$0=caml_call2(read_key,v,lexbuf); + read_space(v,lexbuf); + read_colon(v,lexbuf); + 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_} + 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) + {return ocaml_lex_read_abstract_fields + (read_key,read_field,init_acc,v,lexbuf,282)} + function read_lcurl(v,lexbuf) + {var ocaml_lex_state=286; + 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$7,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$26,v,lexbuf)}}} + function start_any_tuple(v,lexbuf) + {var ocaml_lex_state=301; + 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 1; + case 2:return long_error(cst_Expected_or_but_found$9,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$29,v,lexbuf)}}} + function read_lpar(v,lexbuf) + {var ocaml_lex_state=306; + 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$9,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$30,v,lexbuf)}}} + function read_rpar(v,lexbuf) + {var ocaml_lex_state=310; + 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$10,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$31,v,lexbuf)}}} + function read_lbr(v,lexbuf) + {var ocaml_lex_state=314; + 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$11,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$32,v,lexbuf)}}} + function read_rbr(v,lexbuf) + {var ocaml_lex_state=318; + 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$12,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$33,v,lexbuf)}}} + function finish_skip_stringlit(v,lexbuf) + {var ocaml_lex_state=378; + 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_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; + 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_])} + function ocaml_lex_skip_json_rec(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,ocaml_lex_state$0,lexbuf); + if(18 < 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 0; + case 1:return 0; + case 2:return 0; + case 3:return 0; + case 4:return 0; + case 5:return 0; + case 6:return finish_skip_stringlit(v,lexbuf); + case 7:return 0; + case 8:return 0; + case 9: + try + {read_space(v,lexbuf); + read_object_end(lexbuf); + skip_ident(v,lexbuf); + read_space(v,lexbuf); + read_colon(v,lexbuf); + read_space(v,lexbuf); + skip_json(v,lexbuf); + for(;;) + {read_space(v,lexbuf); + read_object_sep(v,lexbuf); + read_space(v,lexbuf); + skip_ident(v,lexbuf); + read_space(v,lexbuf); + read_colon(v,lexbuf); + 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_} + case 10: + try + {read_space(v,lexbuf); + read_array_end(lexbuf); + skip_json(v,lexbuf); + for(;;) + {read_space(v,lexbuf); + read_array_sep(v,lexbuf); + 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_} + case 11:return long_error(cst_Invalid_token$3,v,lexbuf); + case 12:return long_error(cst_Invalid_token$4,v,lexbuf); + case 13: + if(counter < 50) + {var counter$0=counter + 1 | 0; + return skip_json$2(counter$0,v,lexbuf)} + return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); + case 14: + finish_comment(v,lexbuf); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return skip_json$2(counter$1,v,lexbuf)} + return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); + case 15: + newline(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return skip_json$2(counter$2,v,lexbuf)} + return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); + case 16: + if(counter < 50) + {var counter$3=counter + 1 | 0; + return skip_json$2(counter$3,v,lexbuf)} + return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); + case 17: + return custom_error(cst_Unexpected_end_of_input$34,v,lexbuf); + default:return long_error(cst_Invalid_token$5,v,lexbuf)}}} + function skip_json(v,lexbuf) + {return caml_trampoline(skip_json$2(0,v,lexbuf))} + function finish_skip_variant(v,lexbuf) + {var ocaml_lex_state=389; + 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: + skip_json(v,lexbuf);read_space(v,lexbuf);return read_gt(v,lexbuf); + 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; + 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],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}}}} + function finish_buffer_stringlit(v,lexbuf) + {var ocaml_lex_state=450; + 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: + caml_call2(Bi_outbuf[15],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; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return ocaml_lex_buffer_json_rec(counter$0,v,lexbuf,_ii_)} + return caml_trampoline_return + (ocaml_lex_buffer_json_rec,[0,v,lexbuf,_ii_])} + function ocaml_lex_buffer_json_rec(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,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(v[1],lexbuf); + case 1:return finish_buffer_stringlit(v,lexbuf); + case 2: + try + {caml_call2(Bi_outbuf[15],v[1],123); + buffer_space(v,lexbuf); + buffer_object_end(v,lexbuf); + buffer_ident(v,lexbuf); + buffer_space(v,lexbuf); + buffer_colon(v,lexbuf); + buffer_space(v,lexbuf); + buffer_json(v,lexbuf); + for(;;) + {buffer_space(v,lexbuf); + buffer_object_sep(v,lexbuf); + buffer_space(v,lexbuf); + buffer_ident(v,lexbuf); + buffer_space(v,lexbuf); + buffer_colon(v,lexbuf); + 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_} + case 3: + try + {caml_call2(Bi_outbuf[15],v[1],91); + buffer_space(v,lexbuf); + buffer_array_end(v,lexbuf); + buffer_json(v,lexbuf); + for(;;) + {buffer_space(v,lexbuf); + buffer_array_sep(v,lexbuf); + 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_} + case 4:return long_error(cst_Invalid_token$6,v,lexbuf); + case 5:return long_error(cst_Invalid_token$7,v,lexbuf); + case 6: + add_lexeme(v[1],lexbuf); + if(counter < 50) + {var counter$0=counter + 1 | 0; + 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); + 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); + newline(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return buffer_json$2(counter$2,v,lexbuf)} + return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); + case 9: + add_lexeme(v[1],lexbuf); + if(counter < 50) + {var counter$3=counter + 1 | 0; + return buffer_json$2(counter$3,v,lexbuf)} + return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); + case 10: + return custom_error(cst_Unexpected_end_of_input$38,v,lexbuf); + 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 junk(lexbuf) + {var ocaml_lex_state=513; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)return caml_call1(lexeme,lexbuf); + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + read_junk[1] = junk; + function read_int8(v,lexbuf) + {var n=read_int(v,lexbuf); + 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_)} + function read_array(read_cell,v,lexbuf) + {var l=read_list_rev(read_cell,v,lexbuf); + if(l) + {var + tl=l[2], + x=l[1], + 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_; + for(;;) + {var _id_=caml_call1(Stdlib_List[5],r[1]); + caml_check_bound(a,i)[1 + i] = _id_; + r[1] = caml_call1(Stdlib_List[6],r[1]); + var _ie_=i - 1 | 0; + if(0 !== i){var i=_ie_;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_)}} + function from_lexbuf(v,opt,lexbuf) + {if(opt)var sth=opt[1],stream=sth;else var stream=0; + read_space(v,lexbuf); + if(read_eof(lexbuf))throw End_of_input; + var x=read_json(v,lexbuf); + if(1 - stream) + {read_space(v,lexbuf); + if(1 - read_eof(lexbuf)) + long_error(cst_Junk_after_end_of_JSON_val,v,lexbuf)} + return x} + function from_string$0(buf,fname,lnum,s) + {try + {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_}} + 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__}} + function from_file(buf,fname,lnum,file) + {var ic=caml_call1(Stdlib[79],file); + try + {var x=from_channel$0(buf,fname,lnum,ic); + caml_call1(Stdlib[93],ic); + 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) + {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; + function f(i) + {try + {var _h8_=[0,from_lexbuf(v,stream,lexbuf)];return _h8_} + catch(e) + {e = caml_wrap_exception(e); + if(e === End_of_input){caml_call1(fin,0);return 0} + try + {caml_call1(fin,0)} + 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) + {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) + {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) + {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) + {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) + {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_} + 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) + {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)} + 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} + 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; + else + var + _h4_=js[1], + _h5_= + 708012133 <= _h4_ + ?726928360 === _h4_ + ?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]} + 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_}} + 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)} + function index(i,js) + {if(typeof js !== "number" && 848054398 === js[1]) + {var + l=js[2], + len=caml_call1(Stdlib_List[1],l), + wrapped_index=0 <= i?i:len + i | 0; + 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]} + 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)} + 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)]} + return typerr(cst_Can_t_map_function_over_no,js)} + function to_assoc(js) + {if(typeof js !== "number" && 963043957 === js[1]) + {var obj=js[2];return obj} + return typerr(cst_Expected_object_got,js)} + function to_option(f,x){return 870828711 === x?0:[0,caml_call1(f,x)]} + function to_bool(js) + {if(typeof js !== "number" && 737456202 === js[1]){var b=js[2];return b} + return typerr(cst_Expected_bool_got,js)} + function to_bool_option(js) + {if(typeof js === "number") + {if(870828711 === js)return 0} + else + if(737456202 === js[1]){var b=js[2];return [0,b]} + 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}} + 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]}} + 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} + return typerr(cst_Expected_float_got,js)} + function to_float_option(js) + {if(typeof js === "number") + {if(870828711 === js)return 0} + else + if(365180284 === js[1]){var f=js[2];return [0,f]} + return typerr(cst_Expected_float_or_null_got,js)} + function to_int(js) + {if(typeof js !== "number" && 3654863 === js[1]){var i=js[2];return i} + return typerr(cst_Expected_int_got,js)} + function to_int_option(js) + {if(typeof js === "number") + {if(870828711 === js)return 0} + else + if(3654863 === js[1]){var i=js[2];return [0,i]} + return typerr(cst_Expected_int_or_null_got,js)} + 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) + {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) + {if(typeof js === "number") + {if(870828711 === js)return 0} + else + if(-976970511 === js[1]){var s=js[2];return [0,s]} + return typerr(cst_Expected_string_or_null_go,js)} + function convert_each(f,js) + {if(typeof js !== "number" && 848054398 === js[1]) + {var l=js[2];return caml_call2(Stdlib_List[19],f,l)} + return typerr(cst_Can_t_convert_each_element,js)} + function filter_map(f,l$0) + {var acc=0,l=l$0; + for(;;) + {if(l) + {var tl=l[2],x=l[1],match=caml_call1(f,x); + if(match){var y=match[1],acc$0=[0,y,acc],acc=acc$0,l=tl;continue} + var l=tl; + continue} + return caml_call1(Stdlib_List[9],acc)}} + function flatten(l$0) + {var acc=0,l=l$0; + for(;;) + {if(l) + {var tl=l[2],x=l[1]; + if(typeof x !== "number" && 848054398 === x[1]) + {var + l2=x[2], + acc$0=caml_call2(Stdlib_List[12],l2,acc), + acc=acc$0, + l=tl; + continue} + var l=tl; + continue} + return caml_call1(Stdlib_List[9],acc)}} + function filter_index(i,l) + {return filter_map + (function(param) + {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}} + return 0}, + l)} + function filter_list(l) + {return filter_map + (function(param) + {if(typeof param !== "number" && 848054398 === param[1]) + {var l=param[2];return [0,l]} + return 0}, + l)} + function filter_member(k,l) + {return filter_map + (function(param) + {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}} + return 0}, + l)} + function filter_assoc(l) + {return filter_map + (function(param) + {if(typeof param !== "number" && 963043957 === param[1]) + {var l=param[2];return [0,l]} + return 0}, + l)} + function filter_bool(l) + {return filter_map + (function(param) + {if(typeof param !== "number" && 737456202 === param[1]) + {var x=param[2];return [0,x]} + return 0}, + l)} + function filter_int(l) + {return filter_map + (function(param) + {if(typeof param !== "number" && 3654863 === param[1]) + {var x=param[2];return [0,x]} + return 0}, + l)} + function filter_float(l) + {return filter_map + (function(param) + {if(typeof param !== "number" && 365180284 === param[1]) + {var x=param[2];return [0,x]} + return 0}, + l)} + function filter_number(l) + {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]}} + return 0}, + l)} + function filter_string(l) + {return filter_map + (function(param) + {if(typeof param !== "number" && -976970511 === param[1]) + {var x=param[2];return [0,x]} + 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_)} + 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_)} + function combine(first,second) + {if + (typeof first + !== + "number" + && + 963043957 + === + first[1] + && + typeof second + !== + "number" + && + 963043957 + === + second[1]) + {var b=second[2],a=first[2]; + return [0,963043957,caml_call2(Stdlib[37],a,b)]} + 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 + l=x[2], + _hE_= + 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_)]}} + 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_]}}} + return x} + function hex$2(n) + {var _hC_=10 <= n?n + 87 | 0:n + 48 | 0; + return caml_call1(Stdlib_Char[1],_hC_)} + 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); + start[1] = stop + 1 | 0; + return 0} + function finish_string$2(src,start,ob) + {try + {var + _hB_= + caml_call4 + (Bi_outbuf[14], + ob, + src, + start[1], + caml_ml_string_length(src) - start[1] | 0); + return _hB_} + catch(exc) + {exc = caml_wrap_exception(exc); + caml_call4 + (Stdlib_Printf[3], + _bC_, + 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_; + for(;;) + {var c=caml_string_get(s,i$0); + if(92 === c) + write_special$1(s,start,i$0,ob,cst$25); + else + {var switch$0=0; + if(35 <= c) + if(127 === c)switch$0 = 1;else switch$0 = 2; + else + 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 24: + case 25:switch$0 = 2;switch$1 = 1;break; + default:switch$0 = 1;switch$1 = 1}} + else + switch$0 = 1; + 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; + break + }} + var _hA_=i$0 + 1 | 0; + if(_hz_ !== i$0){var i$0=_hA_;continue} + break}} + finish_string$2(s,start,ob); + return caml_call2(Bi_outbuf[15],ob,34)} + function write_null$1(ob,param) + {return caml_call2(Bi_outbuf[13],ob,cst_null$3)} + function write_bool$1(ob,x) + {var _hx_=x?cst_true$2:cst_false$2; + return caml_call2(Bi_outbuf[13],ob,_hx_)} + 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; + 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} + 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} + function float_needs_period$1(s) + {try + {var _ht_=caml_ml_string_length(s) - 1 | 0,_hs_=0; + if(! (_ht_ < 0)) + {var i=_hs_; + for(;;) + {var match=caml_string_get(s,i),switch$0=0; + if(48 <= match) + {if(! (58 <= match))switch$0 = 1} + 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} + 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_} + 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 + 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_} + 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); + 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_} + 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_)} + return 4 <= match + ?caml_call2(Bi_outbuf[13],ob,cst_NaN$8) + :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_= + 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); + 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_} + function write_std_float_prec$1(significant_figures,ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var + _hh_= + 0. < x + ?cst_Infinity_value_not_allowed$15 + :cst_Infinity_value_not_allowed$16; + return json_error(_hh_)} + return 4 <= match + ?json_error(cst_NaN_value_not_allowed_in_s$7) + :write_normal_float_prec$1(significant_figures,ob,x)} + var write_intlit$0=Bi_outbuf[13]; + function iter2$1(f_elt,f_sep,x,param$0) + {if(param$0) + {var l$0=param$0[2],y$0=param$0[1]; + caml_call2(f_elt,x,y$0); + var param=l$0; + for(;;) + {if(param) + {var l=param[2],y=param[1]; + caml_call1(f_sep,x); + caml_call2(f_elt,x,y); + var param=l; + continue} + return 0}} + return 0} + function f_sep$1(ob){return caml_call2(Bi_outbuf[15],ob,44)} + function write_tuple$0(ob,l) + {caml_call2(Bi_outbuf[15],ob,40); + iter2$1(write_t$1,f_sep$1,ob,l); + return caml_call2(Bi_outbuf[15],ob,41)} + function write_list$1(ob,l) + {caml_call2(Bi_outbuf[15],ob,91); + iter2$1(write_t$1,f_sep$1,ob,l); + return caml_call2(Bi_outbuf[15],ob,93)} + 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 l$1=x[2]; + return write_list$1(ob,l$1)} + if(737456202 <= _hg_){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)} + 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)} + 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]; + 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)} + function write_std_tuple$0(ob,l) + {caml_call2(Bi_outbuf[15],ob,91); + iter2$1(write_std_json$1,f_sep$1,ob,l); + return caml_call2(Bi_outbuf[15],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 + 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); + return write_std_json$1(ob,x)}; + caml_call2(Bi_outbuf[15],ob,123); + iter2$1(f_elt,f_sep$1,ob,l$0); + return caml_call2(Bi_outbuf[15],ob,125)} + var l$1=x[2]; + caml_call2(Bi_outbuf[15],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)} + 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)} + 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)} + 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) + {if(opt)var sth=opt[1],len=sth;else var len=256; + if(buf) + {var ob=buf[1];caml_call1(Bi_outbuf[19],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); + return s} + function to_channel$2(buf,len,std,oc,x) + {if(buf) + var ob=buf[1],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; + 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); + try + {to_channel$2(0,len,std,oc,x); + var _he_=caml_call1(Stdlib[76],oc); + return _he_} + 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) + {if(opt)var sth=opt[1],len=sth;else var len=256; + if(buf) + {var ob=buf[1];caml_call1(Bi_outbuf[19],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); + return s} + function stream_to_channel$1(buf,len,std,oc,st) + {if(buf) + var ob=buf[1],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); + try + {stream_to_channel$1(0,len,std,oc,st); + var _hb_=caml_call1(Stdlib[76],oc); + return _hb_} + 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 + l$0=x[2], + _g6_= + 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]; + return caml_call2(Stdlib_String[9],a,b)}; + return [0,963043957,caml_call2(Stdlib_List[57],_g8_,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); + 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$_)]}} + return x} + function pp$1(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 tup=param[2]; + caml_call2(Stdlib_Format[129],fmt,_b2_); + caml_call2(Stdlib_Format[129],fmt,_b3_); + var + _gY_=0, + _gZ_= + function(sep,e) + {if(sep)caml_call2(Stdlib_Format[129],fmt,_b4_); + pp$1(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_) + {var xs=param[2]; + caml_call2(Stdlib_Format[129],fmt,_b7_); + caml_call2(Stdlib_Format[129],fmt,_b8_); + var + _g0_=0, + _g1_= + 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_); + 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_)} + var xs$0=param[2]; + caml_call2(Stdlib_Format[129],fmt,_ce_); + caml_call2(Stdlib_Format[129],fmt,_cf_); + var + _g2_=0, + _g3_= + function(sep,x) + {if(sep)caml_call2(Stdlib_Format[129],fmt,_cg_); + pp$1(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_) + {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_)} + 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_); + 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)} + 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_) + {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_)} + 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_) + {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_)} + 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)} + 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 switch$0=0; + if(737456203 <= _gQ_) + {if(848054398 === _gQ_) + {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_ + && + typeof b$0 + !== + "number" + && + 963043957 + === + b$0[1]) + {var + ys$0=b$0[2], + xs$0=a$0[2], + compare_keys= + function(param,_gW_) + {var key=_gW_[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_) + {var + value=_gV_[2], + key=_gV_[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); + return result$0} + catch(_gU_) + {_gU_ = caml_wrap_exception(_gU_); + if(_gU_[1] === Stdlib[6])return 0; + throw _gU_}}} + else + if(726928360 === _gQ_) + {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 + (737456202 + <= + _gQ_ + && + typeof b$0 + !== + "number" + && + 737456202 + === + b$0[1]) + {var b$1=b$0[2],a$1=a$0[2];return caml_equal(a$1,b$1)}} + else + if(typeof b$0 !== "number" && 708012133 === b$0[1]) + {var + _gS_=b$0[2], + value=_gS_[2], + name=_gS_[1], + match=a$0[2], + value$0=match[2], + name$0=match[1], + match$0=caml_equal(name$0,name); + if(match$0) + {if(value$0) + {if(value) + {var b$2=value[1],a$2=value$0[1],a$0=a$2,b$0=b$2;continue}} + else + if(! value)return 1; + return 0} + return 0} + if(switch$0) + 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_}} + else + if(-752863767 <= _gQ_) + {if(3654863 === _gQ_) + {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_ + && + typeof b$0 + !== + "number" + && + 365180284 + === + 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(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_ + && + typeof b$0 + !== + "number" + && + -752863768 + === + 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)} + var + from_channel$1=Stdlib_Lexing[2], + from_string$1=Stdlib_Lexing[3], + lexeme$0=Stdlib_Lexing[8], + sub_lexeme$0=Stdlib_Lexing[16], + sub_lexeme_char$0=Stdlib_Lexing[18]; + function hex$3(c) + {if(65 <= c) + {if(97 <= c) + {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} + else + if(! (71 <= c))return (c - 65 | 0) + 10 | 0} + else + if(! (9 < c - 48 >>> 0))return c - 48 | 0; + throw [0,Assert_failure,_cF_]} + 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); + 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); + return json_error(msg)} + function lexer_error$0(descr,v,lexbuf) + {var _gN_=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_]}]; + 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), + 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, + Int_overflow$0=[248,cst_Yojson_Safe_Int_overflow,caml_fresh_oo_id(0)]; + function extract_positive_int$0(lexbuf) + {var + start=lexbuf[5], + stop=lexbuf[6], + s=lexbuf[2], + n=[0,0], + _gK_=stop - 1 | 0; + if(! (_gK_ < 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} + break}} + if(0 <= n[1])return n[1]; + throw Int_overflow$0} + function extract_negative_int$0(lexbuf) + {var + start=lexbuf[5] + 1 | 0, + stop=lexbuf[6], + s=lexbuf[2], + n=[0,0], + _gH_=stop - 1 | 0; + if(! (_gH_ < 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} + break}} + if(0 < n[1])throw Int_overflow$0; + return n[1]} + function newline$0(v,lexbuf) + {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)}}} + function read_json$3(counter,v,lexbuf) + {var _gA_=0; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return ocaml_lex_read_json_rec$0(counter$0,v,lexbuf,_gA_)} + return caml_trampoline_return + (ocaml_lex_read_json_rec$0,[0,v,lexbuf,_gA_])} + function ocaml_lex_read_json_rec$0(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$0,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 _cP_; + case 1:return _cQ_; + 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]); + 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) + return [0,-752863768,caml_call1(lexeme$0,lexbuf)]; + throw _gz_} + 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) + return [0,-752863768,caml_call1(lexeme$0,lexbuf)]; + throw _gy_} + case 9: + return [0, + 365180284, + caml_float_of_string(caml_call1(lexeme$0,lexbuf))]; + case 10: + var acc=[0,0]; + try + {read_space$0(v,lexbuf); + read_object_end$0(lexbuf); + var field_name=read_ident$0(v,lexbuf); + 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_]; + for(;;) + {read_space$0(v,lexbuf); + read_object_sep$0(v,lexbuf); + read_space$0(v,lexbuf); + var field_name$0=read_ident$0(v,lexbuf); + 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_]; + continue}} + catch(_gx_) + {_gx_ = caml_wrap_exception(_gx_); + if(_gx_ === End_of_object) + return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; + throw _gx_} + 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_]; + 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_]; + continue}} + catch(_gw_) + {_gw_ = caml_wrap_exception(_gw_); + if(_gw_ === End_of_array) + return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; + throw _gw_} + 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_]; + 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_]; + continue}} + catch(_gv_) + {_gv_ = caml_wrap_exception(_gv_); + if(_gv_ === End_of_tuple) + return [0,726928360,caml_call1(Stdlib_List[9],acc$1[1])]; + throw _gv_} + case 13: + read_space$0(v,lexbuf); + var cons=read_ident$0(v,lexbuf); + read_space$0(v,lexbuf); + return [0,708012133,[0,cons,finish_variant$0(v,lexbuf)]]; + case 14: + if(counter < 50) + {var counter$0=counter + 1 | 0; + return read_json$3(counter$0,v,lexbuf)} + return caml_trampoline_return(read_json$3,[0,v,lexbuf]); + case 15: + finish_comment$0(v,lexbuf); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return read_json$3(counter$1,v,lexbuf)} + return caml_trampoline_return(read_json$3,[0,v,lexbuf]); + case 16: + newline$0(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return read_json$3(counter$2,v,lexbuf)} + return caml_trampoline_return(read_json$3,[0,v,lexbuf]); + case 17: + if(counter < 50) + {var counter$3=counter + 1 | 0; + return read_json$3(counter$3,v,lexbuf)} + return caml_trampoline_return(read_json$3,[0,v,lexbuf]); + 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 map_string$0(v,f,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=63; + 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 b=v[1],_gm_=b[3]; + return caml_call3(f,caml_call1(Stdlib_Bytes[6],b[1]),0,_gm_); + 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_stringlit$0(v,lexbuf) + {var ocaml_lex_state=91; + 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: + 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$0(cst_Invalid_string_literal$2,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$49,v,lexbuf)}}} + function read_lt$0(v,lexbuf) + {var ocaml_lex_state=107; + 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$14,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$51,v,lexbuf)}}} + function read_comma$0(v,lexbuf) + {var ocaml_lex_state=115; + 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$16,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$53,v,lexbuf)}}} + function start_any_variant$0(v,lexbuf) + {var ocaml_lex_state=119; + 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:return -154522342; + case 1:caml_call1(Bi_outbuf[19],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 read_eof$0(lexbuf) + {var ocaml_lex_state=131; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)return 1; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_null$0(v,lexbuf) + {var ocaml_lex_state=140; + 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_null_but_found$0,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$55,v,lexbuf)}}} + function read_null_if_possible$0(v,lexbuf) + {var ocaml_lex_state=147; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)return 1; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_bool$0(v,lexbuf) + {var ocaml_lex_state=152; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(5 < 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 1; + case 1:return 0; + case 2:return 1; + case 3:return 0; + case 4: + return long_error$0(cst_Expected_true_or_false_but$0,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$56,v,lexbuf)}}} + function ocaml_lex_read_int_rec$0(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$0,ocaml_lex_state$0,lexbuf); + if(4 < 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: + try + {var _gg_=extract_positive_int$0(lexbuf);return _gg_} + catch(_gl_) + {_gl_ = caml_wrap_exception(_gl_); + if(_gl_ === Int_overflow$0) + return lexer_error$0(cst_Int_overflow$3,v,lexbuf); + throw _gl_} + case 1: + try + {var _gh_=extract_negative_int$0(lexbuf);return _gh_} + catch(_gk_) + {_gk_ = caml_wrap_exception(_gk_); + if(_gk_ === Int_overflow$0) + return lexer_error$0(cst_Int_overflow$4,v,lexbuf); + throw _gk_} + case 2: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$3(v,lexbuf); + try + {var _gi_=caml_int_of_string(s);return _gi_} + catch(_gj_) + {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); + default: + return custom_error$0(cst_Unexpected_end_of_input$57,v,lexbuf)}}} + function read_int$0(v,lexbuf) + {return ocaml_lex_read_int_rec$0(v,lexbuf,176)} + function ocaml_lex_read_int32_rec$0(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$0,ocaml_lex_state$0,lexbuf); + if(3 < 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: + 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)} + case 1: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$3(v,lexbuf); + try + {var _gd_=caml_int_of_string(s);return _gd_} + catch(_ge_) + {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: + return custom_error$0(cst_Unexpected_end_of_input$58,v,lexbuf)}}} + function read_int32$0(v,lexbuf) + {return ocaml_lex_read_int32_rec$0(v,lexbuf,185)} + function ocaml_lex_read_int64_rec$0(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$0,ocaml_lex_state$0,lexbuf); + if(3 < 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: + 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)} + case 1: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$3(v,lexbuf); + try + {var _f$_=caml_int64_of_string(s);return _f$_} + catch(_ga_) + {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: + return custom_error$0(cst_Unexpected_end_of_input$59,v,lexbuf)}}} + function read_int64$0(v,lexbuf) + {return ocaml_lex_read_int64_rec$0(v,lexbuf,192)} + function ocaml_lex_read_number_rec$0(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$0,ocaml_lex_state$0,lexbuf); + if(6 < 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 Stdlib[24]; + case 1:return Stdlib[22]; + 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]); + 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) + ?custom_error$0(cst_Expected_a_number_but_foun$0,v,lexbuf) + :Stdlib[24] + :Stdlib[22] + :Stdlib[23]} + case 5: + return long_error$0(cst_Expected_number_but_found$0,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$60,v,lexbuf)}}} + function read_number$0(v,lexbuf) + {return ocaml_lex_read_number_rec$0(v,lexbuf,199)} + function read_string$0(v,lexbuf) + {var ocaml_lex_state=233; + 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: + caml_call1(Bi_outbuf[19],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 map_ident$0(v,f,lexbuf) + {var ocaml_lex_state=242; + 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 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); + case 2: + return long_error$0(cst_Expected_string_or_identif$4,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$63,v,lexbuf)}}} + function ocaml_lex_read_sequence_rec$0 + (read_cell,init_acc,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$0,ocaml_lex_state$0,lexbuf); + if(2 < 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: + var acc=[0,init_acc]; + try + {read_space$0(v,lexbuf); + read_array_end$0(lexbuf); + acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); + for(;;) + {read_space$0(v,lexbuf); + read_array_sep$0(v,lexbuf); + 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_} + 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)}}} + function read_sequence$0(read_cell,init_acc,v,lexbuf) + {return ocaml_lex_read_sequence_rec$0(read_cell,init_acc,v,lexbuf,247)} + function ocaml_lex_read_list_rev_rec$0(read_cell,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$0,ocaml_lex_state$0,lexbuf); + if(2 < 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: + var acc=[0,0]; + 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_]; + 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_]; + continue}} + catch(_f5_) + {_f5_ = caml_wrap_exception(_f5_); + if(_f5_ === End_of_array)return acc[1]; + throw _f5_} + 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 ocaml_lex_read_tuple_rec + (read_cell,init_acc,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$0,ocaml_lex_state$0,lexbuf); + if(2 < 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: + var pos=[0,0],acc=[0,init_acc]; + try + {read_space$0(v,lexbuf); + read_tuple_end$0(lexbuf); + acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf); + pos[1]++; + for(;;) + {read_space$0(v,lexbuf); + read_tuple_sep$0(v,lexbuf); + read_space$0(v,lexbuf); + 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_} + 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_end2$0(v,std,lexbuf) + {var ocaml_lex_state=268; + 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: + if(std)return long_error$0(cst_Expected_or_but_found$16,v,lexbuf); + throw End_of_tuple; + case 1: + if(std)throw End_of_tuple; + return long_error$0(cst_Expected_or_but_found$17,v,lexbuf); + default:return 0}}} + function read_tuple_sep2$0(v,std,lexbuf) + {var ocaml_lex_state=276; + 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:return 0; + case 1: + if(std)return long_error$0(cst_Expected_or_but_found$19,v,lexbuf); + throw End_of_tuple; + case 2: + if(std)throw End_of_tuple; + return long_error$0(cst_Expected_or_but_found$20,v,lexbuf); + case 3:return long_error$0(cst_Expected_or_but_found$21,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$69,v,lexbuf)}}} + function ocaml_lex_read_abstract_fields$0 + (read_key,read_field,init_acc,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$0,ocaml_lex_state$0,lexbuf); + if(2 < 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: + var acc=[0,init_acc]; + try + {read_space$0(v,lexbuf); + read_object_end$0(lexbuf); + var field_name=caml_call2(read_key,v,lexbuf); + read_space$0(v,lexbuf); + read_colon$0(v,lexbuf); + read_space$0(v,lexbuf); + acc[1] = caml_call4(read_field,acc[1],field_name,v,lexbuf); + for(;;) + {read_space$0(v,lexbuf); + read_object_sep$0(v,lexbuf); + read_space$0(v,lexbuf); + var field_name$0=caml_call2(read_key,v,lexbuf); + read_space$0(v,lexbuf); + read_colon$0(v,lexbuf); + 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_} + 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)}}} + function read_abstract_fields$0(read_key,read_field,init_acc,v,lexbuf) + {return ocaml_lex_read_abstract_fields$0 + (read_key,read_field,init_acc,v,lexbuf,282)} + function read_lcurl$0(v,lexbuf) + {var ocaml_lex_state=286; + 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$22,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$71,v,lexbuf)}}} + function start_any_tuple$0(v,lexbuf) + {var ocaml_lex_state=301; + 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 1; + case 2:return long_error$0(cst_Expected_or_but_found$23,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$74,v,lexbuf)}}} + function read_lpar$0(v,lexbuf) + {var ocaml_lex_state=306; + 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$24,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$75,v,lexbuf)}}} + function read_rpar$0(v,lexbuf) + {var ocaml_lex_state=310; + 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$25,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$76,v,lexbuf)}}} + function read_lbr$0(v,lexbuf) + {var ocaml_lex_state=314; + 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$26,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$77,v,lexbuf)}}} + function read_rbr$0(v,lexbuf) + {var ocaml_lex_state=318; + 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$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; + 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_Invalid_string_literal$3,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; + 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_skip_stringlit$0(v,lexbuf); + case 1:return 0; + case 2: + return long_error$0(cst_Expected_string_or_identif$5,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$82,v,lexbuf)}}} + function skip_json$3(counter,v,lexbuf) + {var _f0_=322; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return ocaml_lex_skip_json_rec$0(counter$0,v,lexbuf,_f0_)} + return caml_trampoline_return + (ocaml_lex_skip_json_rec$0,[0,v,lexbuf,_f0_])} + function ocaml_lex_skip_json_rec$0(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$0,ocaml_lex_state$0,lexbuf); + if(18 < 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 0; + case 1:return 0; + case 2:return 0; + case 3:return 0; + case 4:return 0; + case 5:return 0; + case 6:return finish_skip_stringlit$0(v,lexbuf); + case 7:return 0; + case 8:return 0; + case 9: + try + {read_space$0(v,lexbuf); + read_object_end$0(lexbuf); + skip_ident$0(v,lexbuf); + read_space$0(v,lexbuf); + read_colon$0(v,lexbuf); + read_space$0(v,lexbuf); + skip_json$0(v,lexbuf); + for(;;) + {read_space$0(v,lexbuf); + read_object_sep$0(v,lexbuf); + read_space$0(v,lexbuf); + skip_ident$0(v,lexbuf); + read_space$0(v,lexbuf); + read_colon$0(v,lexbuf); + 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_} + case 10: + try + {read_space$0(v,lexbuf); + read_array_end$0(lexbuf); + skip_json$0(v,lexbuf); + for(;;) + {read_space$0(v,lexbuf); + read_array_sep$0(v,lexbuf); + 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_} + case 11: + try + {read_space$0(v,lexbuf); + read_tuple_end$0(lexbuf); + skip_json$0(v,lexbuf); + for(;;) + {read_space$0(v,lexbuf); + read_tuple_sep$0(v,lexbuf); + 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_} + case 12: + read_space$0(v,lexbuf); + skip_ident$0(v,lexbuf); + read_space$0(v,lexbuf); + return finish_skip_variant$0(v,lexbuf); + case 13: + if(counter < 50) + {var counter$0=counter + 1 | 0; + return skip_json$3(counter$0,v,lexbuf)} + return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); + case 14: + finish_comment$0(v,lexbuf); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return skip_json$3(counter$1,v,lexbuf)} + return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); + case 15: + newline$0(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return skip_json$3(counter$2,v,lexbuf)} + return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); + case 16: + if(counter < 50) + {var counter$3=counter + 1 | 0; + return skip_json$3(counter$3,v,lexbuf)} + return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); + case 17: + return custom_error$0(cst_Unexpected_end_of_input$79,v,lexbuf); + 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; + 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: + 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$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); + 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; + 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],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_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}}}} + function finish_buffer_stringlit$0(v,lexbuf) + {var ocaml_lex_state=450; + 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: + caml_call2(Bi_outbuf[15],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; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return ocaml_lex_buffer_json_rec$0(counter$0,v,lexbuf,_fW_)} + return caml_trampoline_return + (ocaml_lex_buffer_json_rec$0,[0,v,lexbuf,_fW_])} + function ocaml_lex_buffer_json_rec$0(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$0,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$0(v[1],lexbuf); + case 1:return finish_buffer_stringlit$0(v,lexbuf); + case 2: + try + {caml_call2(Bi_outbuf[15],v[1],123); + buffer_space$0(v,lexbuf); + buffer_object_end$0(v,lexbuf); + buffer_ident$0(v,lexbuf); + buffer_space$0(v,lexbuf); + buffer_colon$0(v,lexbuf); + buffer_space$0(v,lexbuf); + buffer_json$0(v,lexbuf); + for(;;) + {buffer_space$0(v,lexbuf); + buffer_object_sep$0(v,lexbuf); + buffer_space$0(v,lexbuf); + buffer_ident$0(v,lexbuf); + buffer_space$0(v,lexbuf); + buffer_colon$0(v,lexbuf); + 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_} + case 3: + try + {caml_call2(Bi_outbuf[15],v[1],91); + buffer_space$0(v,lexbuf); + buffer_array_end$0(v,lexbuf); + buffer_json$0(v,lexbuf); + for(;;) + {buffer_space$0(v,lexbuf); + buffer_array_sep$0(v,lexbuf); + 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_} + case 4: + try + {caml_call2(Bi_outbuf[15],v[1],40); + buffer_space$0(v,lexbuf); + buffer_tuple_end(v,lexbuf); + buffer_json$0(v,lexbuf); + for(;;) + {buffer_space$0(v,lexbuf); + buffer_tuple_sep(v,lexbuf); + 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_} + case 5: + caml_call2(Bi_outbuf[15],v[1],60); + buffer_space$0(v,lexbuf); + buffer_ident$0(v,lexbuf); + buffer_space$0(v,lexbuf); + return finish_buffer_variant(v,lexbuf); + case 6: + add_lexeme$0(v[1],lexbuf); + if(counter < 50) + {var counter$0=counter + 1 | 0; + 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); + 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); + newline$0(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return buffer_json$3(counter$2,v,lexbuf)} + return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); + case 9: + add_lexeme$0(v[1],lexbuf); + if(counter < 50) + {var counter$3=counter + 1 | 0; + return buffer_json$3(counter$3,v,lexbuf)} + return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); + case 10: + return custom_error$0(cst_Unexpected_end_of_input$83,v,lexbuf); + 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; + 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_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); + default: + return custom_error$0(cst_Unexpected_end_of_input$85,v,lexbuf)}}} + function junk$0(lexbuf) + {var ocaml_lex_state=513; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)return caml_call1(lexeme$0,lexbuf); + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + read_junk$0[1] = junk$0; + function read_int8$0(v,lexbuf) + {var n=read_int$0(v,lexbuf); + 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_)} + function read_array$0(read_cell,v,lexbuf) + {var l=read_list_rev$0(read_cell,v,lexbuf); + if(l) + {var + tl=l[2], + x=l[1], + 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_; + for(;;) + {var _fQ_=caml_call1(Stdlib_List[5],r[1]); + caml_check_bound(a,i)[1 + i] = _fQ_; + r[1] = caml_call1(Stdlib_List[6],r[1]); + var _fR_=i - 1 | 0; + if(0 !== i){var i=_fR_;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_)}} + function from_lexbuf$0(v,opt,lexbuf) + {if(opt)var sth=opt[1],stream=sth;else var stream=0; + read_space$0(v,lexbuf); + if(read_eof$0(lexbuf))throw End_of_input; + var x=read_json$0(v,lexbuf); + if(1 - stream) + {read_space$0(v,lexbuf); + if(1 - read_eof$0(lexbuf)) + long_error$0(cst_Junk_after_end_of_JSON_val$0,v,lexbuf)} + return x} + function from_string$2(buf,fname,lnum,s) + {try + {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_}} + 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_}} + function from_file$0(buf,fname,lnum,file) + {var ic=caml_call1(Stdlib[79],file); + try + {var x=from_channel$2(buf,fname,lnum,ic); + caml_call1(Stdlib[93],ic); + 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) + {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; + function f(i) + {try + {var _fJ_=[0,from_lexbuf$0(v,stream$0,lexbuf)];return _fJ_} + catch(e) + {e = caml_wrap_exception(e); + if(e === End_of_input){caml_call1(fin,0);return 0} + try + {caml_call1(fin,0)} + 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) + {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) + {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) + {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) + {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) + {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_} + 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) + {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)} + 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} + 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; + else + var + _fF_=js[1], + _fG_= + 708012133 <= _fF_ + ?726928360 === _fF_ + ?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]} + 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_}} + 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)} + function index$0(i,js) + {if(typeof js !== "number" && 848054398 === js[1]) + {var + l=js[2], + len=caml_call1(Stdlib_List[1],l), + wrapped_index=0 <= i?i:len + i | 0; + 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]} + 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)} + 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)]} + return typerr$0(cst_Can_t_map_function_over_no$0,js)} + function to_assoc$0(js) + {if(typeof js !== "number" && 963043957 === js[1]) + {var obj=js[2];return obj} + return typerr$0(cst_Expected_object_got$0,js)} + function to_option$0(f,x){return 870828711 === x?0:[0,caml_call1(f,x)]} + function to_bool$0(js) + {if(typeof js !== "number" && 737456202 === js[1]){var b=js[2];return b} + return typerr$0(cst_Expected_bool_got$0,js)} + function to_bool_option$0(js) + {if(typeof js === "number") + {if(870828711 === js)return 0} + else + if(737456202 === js[1]){var b=js[2];return [0,b]} + 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}} + 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]}} + 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} + return typerr$0(cst_Expected_float_got$0,js)} + function to_float_option$0(js) + {if(typeof js === "number") + {if(870828711 === js)return 0} + else + if(365180284 === js[1]){var f=js[2];return [0,f]} + return typerr$0(cst_Expected_float_or_null_got$0,js)} + function to_int$0(js) + {if(typeof js !== "number" && 3654863 === js[1]){var i=js[2];return i} + return typerr$0(cst_Expected_int_got$0,js)} + function to_int_option$0(js) + {if(typeof js === "number") + {if(870828711 === js)return 0} + else + if(3654863 === js[1]){var i=js[2];return [0,i]} + return typerr$0(cst_Expected_int_or_null_got$0,js)} + 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) + {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) + {if(typeof js === "number") + {if(870828711 === js)return 0} + else + if(-976970511 === js[1]){var s=js[2];return [0,s]} + return typerr$0(cst_Expected_string_or_null_go$0,js)} + function convert_each$0(f,js) + {if(typeof js !== "number" && 848054398 === js[1]) + {var l=js[2];return caml_call2(Stdlib_List[19],f,l)} + return typerr$0(cst_Can_t_convert_each_element$0,js)} + function filter_map$0(f,l$0) + {var acc=0,l=l$0; + for(;;) + {if(l) + {var tl=l[2],x=l[1],match=caml_call1(f,x); + if(match){var y=match[1],acc$0=[0,y,acc],acc=acc$0,l=tl;continue} + var l=tl; + continue} + return caml_call1(Stdlib_List[9],acc)}} + function flatten$0(l$0) + {var acc=0,l=l$0; + for(;;) + {if(l) + {var tl=l[2],x=l[1]; + if(typeof x !== "number" && 848054398 === x[1]) + {var + l2=x[2], + acc$0=caml_call2(Stdlib_List[12],l2,acc), + acc=acc$0, + l=tl; + continue} + var l=tl; + continue} + return caml_call1(Stdlib_List[9],acc)}} + function filter_index$0(i,l) + {return filter_map$0 + (function(param) + {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}} + return 0}, + l)} + function filter_list$0(l) + {return filter_map$0 + (function(param) + {if(typeof param !== "number" && 848054398 === param[1]) + {var l=param[2];return [0,l]} + return 0}, + l)} + function filter_member$0(k,l) + {return filter_map$0 + (function(param) + {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}} + return 0}, + l)} + function filter_assoc$0(l) + {return filter_map$0 + (function(param) + {if(typeof param !== "number" && 963043957 === param[1]) + {var l=param[2];return [0,l]} + return 0}, + l)} + function filter_bool$0(l) + {return filter_map$0 + (function(param) + {if(typeof param !== "number" && 737456202 === param[1]) + {var x=param[2];return [0,x]} + return 0}, + l)} + function filter_int$0(l) + {return filter_map$0 + (function(param) + {if(typeof param !== "number" && 3654863 === param[1]) + {var x=param[2];return [0,x]} + return 0}, + l)} + function filter_float$0(l) + {return filter_map$0 + (function(param) + {if(typeof param !== "number" && 365180284 === param[1]) + {var x=param[2];return [0,x]} + return 0}, + l)} + function filter_number$0(l) + {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]}} + return 0}, + l)} + function filter_string$0(l) + {return filter_map$0 + (function(param) + {if(typeof param !== "number" && -976970511 === param[1]) + {var x=param[2];return [0,x]} + 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_)} + 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_)} + function combine$0(first,second) + {if + (typeof first + !== + "number" + && + 963043957 + === + first[1] + && + typeof second + !== + "number" + && + 963043957 + === + second[1]) + {var b=second[2],a=first[2]; + 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_)} + 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); + start[1] = stop + 1 | 0; + return 0} + function finish_string$4(src,start,ob) + {try + {var + _fj_= + caml_call4 + (Bi_outbuf[14], + ob, + src, + start[1], + caml_ml_string_length(src) - start[1] | 0); + return _fj_} + catch(exc) + {exc = caml_wrap_exception(exc); + caml_call4 + (Stdlib_Printf[3], + _cR_, + 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_; + for(;;) + {var c=caml_string_get(s,i$0); + if(92 === c) + write_special$2(s,start,i$0,ob,cst$31); + else + {var switch$0=0; + if(35 <= c) + if(127 === c)switch$0 = 1;else switch$0 = 2; + else + 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 24: + case 25:switch$0 = 2;switch$1 = 1;break; + default:switch$0 = 1;switch$1 = 1}} + else + switch$0 = 1; + 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; + break + }} + var _fi_=i$0 + 1 | 0; + if(_fh_ !== i$0){var i$0=_fi_;continue} + break}} + finish_string$4(s,start,ob); + return caml_call2(Bi_outbuf[15],ob,34)} + function write_null$2(ob,param) + {return caml_call2(Bi_outbuf[13],ob,cst_null$5)} + function write_bool$2(ob,x) + {var _ff_=x?cst_true$3:cst_false$3; + return caml_call2(Bi_outbuf[13],ob,_ff_)} + 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_); + var + write_intlit$1=Bi_outbuf[13], + write_floatlit$0=Bi_outbuf[13], + write_stringlit$0=Bi_outbuf[13]; + function iter2$2(f_elt,f_sep,x,param$0) + {if(param$0) + {var l$0=param$0[2],y$0=param$0[1]; + caml_call2(f_elt,x,y$0); + var param=l$0; + for(;;) + {if(param) + {var l=param[2],y=param[1]; + caml_call1(f_sep,x); + caml_call2(f_elt,x,y); + var param=l; + continue} + return 0}} + return 0} + function f_sep$2(ob){return caml_call2(Bi_outbuf[15],ob,44)} + function write_tuple$1(ob,l) + {caml_call2(Bi_outbuf[15],ob,40); + iter2$2(write_t$2,f_sep$2,ob,l); + return caml_call2(Bi_outbuf[15],ob,41)} + function write_list$2(ob,l) + {caml_call2(Bi_outbuf[15],ob,91); + iter2$2(write_t$2,f_sep$2,ob,l); + return caml_call2(Bi_outbuf[15],ob,93)} + 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 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)} + 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)} + 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)} + 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]; + 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)} + function write_std_tuple$1(ob,l) + {caml_call2(Bi_outbuf[15],ob,91); + iter2$2(write_std_json$2,f_sep$2,ob,l); + return caml_call2(Bi_outbuf[15],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 + 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); + return write_std_json$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)} + var s=x[2]; + return caml_call2(Bi_outbuf[13],ob,s)} + if(848054398 <= _fd_) + {var l$0=x[2]; + caml_call2(Bi_outbuf[15],ob,91); + iter2$2(write_std_json$2,f_sep$2,ob,l$0); + return caml_call2(Bi_outbuf[15],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)} + 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)} + 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) + {if(opt)var sth=opt[1],len=sth;else var len=256; + if(buf) + {var ob=buf[1];caml_call1(Bi_outbuf[19],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); + return s} + function to_channel$3(buf,len,std,oc,x) + {if(buf) + var ob=buf[1],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; + 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); + try + {to_channel$3(0,len,std,oc,x); + var _fc_=caml_call1(Stdlib[76],oc); + return _fc_} + 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) + {if(opt)var sth=opt[1],len=sth;else var len=256; + if(buf) + {var ob=buf[1];caml_call1(Bi_outbuf[19],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); + return s} + function stream_to_channel$2(buf,len,std,oc,st) + {if(buf) + var ob=buf[1],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); + try + {stream_to_channel$2(0,len,std,oc,st); + var _e$_=caml_call1(Stdlib[76],oc); + return _e$_} + 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 + l$0=x[2], + _e4_= + 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]; + return caml_call2(Stdlib_String[9],a,b)}; + return [0,963043957,caml_call2(Stdlib_List[57],_e6_,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); + 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_)]}} + return x} + function pp$2(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 xs=param[2]; + caml_call2(Stdlib_Format[129],fmt,_cU_); + caml_call2(Stdlib_Format[129],fmt,_cV_); + var + _eW_=0, + _eX_= + 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_); + 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_)} + 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_) + {var xs$0=param[2]; + caml_call2(Stdlib_Format[129],fmt,_c6_); + caml_call2(Stdlib_Format[129],fmt,_c7_); + var + _eY_=0, + _eZ_= + function(sep,x) + {if(sep)caml_call2(Stdlib_Format[129],fmt,_c8_); + pp$2(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__)} + 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_) + {var tup=param[2]; + caml_call2(Stdlib_Format[129],fmt,_dc_); + caml_call2(Stdlib_Format[129],fmt,_dd_); + var + _e0_=0, + _e1_= + function(sep,e) + {if(sep)caml_call2(Stdlib_Format[129],fmt,_de_); + pp$2(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_)} + 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_); + 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)} + 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_) + {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_)} + 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)} + 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_) + {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_ + && + typeof b$0 + !== + "number" + && + 963043957 + === + b$0[1]) + {var + ys=b$0[2], + xs=a$0[2], + compare_keys= + function(param,_eU_) + {var key=_eU_[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_) + {var + value=_eT_[2], + key=_eT_[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); + return result} + catch(_eS_) + {_eS_ = caml_wrap_exception(_eS_); + if(_eS_[1] === Stdlib[6])return 0; + throw _eS_}}} + else + if(737456202 === _eO_) + {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_ + && + typeof b$0 + !== + "number" + && + 848054398 + === + 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(typeof b$0 !== "number" && 708012133 === b$0[1]) + {var + _eQ_=b$0[2], + value=_eQ_[2], + name=_eQ_[1], + match=a$0[2], + value$0=match[2], + name$0=match[1], + match$0=caml_equal(name$0,name); + if(match$0) + {if(value$0) + {if(value) + {var b$3=value[1],a$3=value$0[1],a$0=a$3,b$0=b$3;continue}} + else + if(! value)return 1; + return 0} + return 0}} + else + if + (726928360 + <= + _eO_ + && + typeof b$0 + !== + "number" + && + 726928360 + === + b$0[1]) + {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} + else + if(-752863768 === _eO_) + {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_ + && + typeof b$0 + !== + "number" + && + -375152890 + === + b$0[1]) + {var b$5=b$0[2],a$5=a$0[2];return caml_equal(a$5,b$5)} + if(switch$0) + 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_}} + 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)} + var + from_channel$3=Stdlib_Lexing[2], + from_string$3=Stdlib_Lexing[3], + lexeme$1=Stdlib_Lexing[8], + sub_lexeme$1=Stdlib_Lexing[16], + sub_lexeme_char$1=Stdlib_Lexing[18]; + function hex$5(c) + {if(65 <= c) + {if(97 <= c) + {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} + else + if(! (71 <= c))return (c - 65 | 0) + 10 | 0} + else + if(! (9 < c - 48 >>> 0))return c - 48 | 0; + throw [0,Assert_failure,_du_]} + 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); + 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); + return json_error(msg)} + function lexer_error$1(descr,v,lexbuf) + {var _eL_=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_]}]; + 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), + 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, + Int_overflow$1=[248,cst_Yojson_Raw_Int_overflow,caml_fresh_oo_id(0)]; + function extract_positive_int$1(lexbuf) + {var + start=lexbuf[5], + stop=lexbuf[6], + s=lexbuf[2], + n=[0,0], + _eI_=stop - 1 | 0; + if(! (_eI_ < 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} + break}} + if(0 <= n[1])return n[1]; + throw Int_overflow$1} + function make_positive_int(v,lexbuf) + {return [0,-752863768,caml_call1(lexeme$1,lexbuf)]} + function extract_negative_int$1(lexbuf) + {var + start=lexbuf[5] + 1 | 0, + stop=lexbuf[6], + s=lexbuf[2], + n=[0,0], + _eF_=stop - 1 | 0; + if(! (_eF_ < 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} + break}} + if(0 < n[1])throw Int_overflow$1; + return n[1]} + function make_negative_int(v,lexbuf) + {return [0,-752863768,caml_call1(lexeme$1,lexbuf)]} + function newline$1(v,lexbuf) + {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; + 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_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; + 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; + 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 finish_escaped_char$1(v,lexbuf) + {var ocaml_lex_state=68; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,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$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); + 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_; + if(55296 <= x && ! (56319 < x)) + {var ocaml_lex_state$1=82; + 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: + var + a$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 2 | 0), + 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_; + if(56320 <= y && ! (57343 < y)) + return utf8_of_surrogate_pair(v[1],x,y); + return long_error$1 + (cst_Invalid_low_surrogate_for_$1,v,lexbuf); + case 1: + return long_error$1 + (cst_Missing_escape_sequence_re$1,v,lexbuf); + default: + return custom_error$1 + (cst_Unexpected_end_of_input$96,v,lexbuf)}}} + return utf8_of_code(v[1],x); + 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(;;) + {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: + 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$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(;;) + {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 x=read_json$1(v,lexbuf); + read_space$1(v,lexbuf); + read_gt$1(v,lexbuf); + return [0,x]; + case 1:return 0; + 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(;;) + {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$30,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$99,v,lexbuf)}}} + function read_comma$1(v,lexbuf) + {var ocaml_lex_state=115; + 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$32,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$101,v,lexbuf)}}} + function start_any_variant$1(v,lexbuf) + {var ocaml_lex_state=119; + 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:return -154522342; + case 1:caml_call1(Bi_outbuf[19],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 read_eof$1(lexbuf) + {var ocaml_lex_state=131; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)return 1; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_null$1(v,lexbuf) + {var ocaml_lex_state=140; + 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_null_but_found$1,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$103,v,lexbuf)}}} + function read_null_if_possible$1(v,lexbuf) + {var ocaml_lex_state=147; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)return 1; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_bool$1(v,lexbuf) + {var ocaml_lex_state=152; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(5 < 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 1; + case 1:return 0; + case 2:return 1; + case 3:return 0; + case 4: + return long_error$1(cst_Expected_true_or_false_but$1,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$104,v,lexbuf)}}} + function ocaml_lex_read_int_rec$1(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(4 < 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: + try + {var _ei_=extract_positive_int$1(lexbuf);return _ei_} + catch(_en_) + {_en_ = caml_wrap_exception(_en_); + if(_en_ === Int_overflow$1) + return lexer_error$1(cst_Int_overflow$5,v,lexbuf); + throw _en_} + case 1: + try + {var _ej_=extract_negative_int$1(lexbuf);return _ej_} + catch(_em_) + {_em_ = caml_wrap_exception(_em_); + if(_em_ === Int_overflow$1) + return lexer_error$1(cst_Int_overflow$6,v,lexbuf); + throw _em_} + case 2: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$5(v,lexbuf); + try + {var _ek_=caml_int_of_string(s);return _ek_} + catch(_el_) + {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); + default: + return custom_error$1(cst_Unexpected_end_of_input$105,v,lexbuf)}}} + function read_int$1(v,lexbuf) + {return ocaml_lex_read_int_rec$1(v,lexbuf,176)} + function ocaml_lex_read_int32_rec$1(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(3 < 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: + 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)} + case 1: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$5(v,lexbuf); + try + {var _ef_=caml_int_of_string(s);return _ef_} + catch(_eg_) + {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: + return custom_error$1(cst_Unexpected_end_of_input$106,v,lexbuf)}}} + function read_int32$1(v,lexbuf) + {return ocaml_lex_read_int32_rec$1(v,lexbuf,185)} + function ocaml_lex_read_int64_rec$1(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(3 < 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: + 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)} + case 1: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$5(v,lexbuf); + try + {var _eb_=caml_int64_of_string(s);return _eb_} + catch(_ec_) + {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: + return custom_error$1(cst_Unexpected_end_of_input$107,v,lexbuf)}}} + function read_int64$1(v,lexbuf) + {return ocaml_lex_read_int64_rec$1(v,lexbuf,192)} + function ocaml_lex_read_number_rec$1(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(6 < 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 Stdlib[24]; + case 1:return Stdlib[22]; + 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]); + 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) + ?custom_error$1(cst_Expected_a_number_but_foun$1,v,lexbuf) + :Stdlib[24] + :Stdlib[22] + :Stdlib[23]} + case 5: + return long_error$1(cst_Expected_number_but_found$1,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$108,v,lexbuf)}}} + function read_number$1(v,lexbuf) + {return ocaml_lex_read_number_rec$1(v,lexbuf,199)} + function read_string$1(v,lexbuf) + {var ocaml_lex_state=233; + 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: + caml_call1(Bi_outbuf[19],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 map_ident$1(v,f,lexbuf) + {var ocaml_lex_state=242; + 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 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); + case 2: + return long_error$1(cst_Expected_string_or_identif$8,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$111,v,lexbuf)}}} + function ocaml_lex_read_sequence_rec$1 + (read_cell,init_acc,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(2 < 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: + var acc=[0,init_acc]; + try + {read_space$1(v,lexbuf); + read_array_end$1(lexbuf); + acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); + for(;;) + {read_space$1(v,lexbuf); + read_array_sep$1(v,lexbuf); + 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_} + 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)}}} + function read_sequence$1(read_cell,init_acc,v,lexbuf) + {return ocaml_lex_read_sequence_rec$1(read_cell,init_acc,v,lexbuf,247)} + function ocaml_lex_read_list_rev_rec$1(read_cell,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(2 < 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: + var acc=[0,0]; + 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_]; + 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_]; + continue}} + catch(_d7_) + {_d7_ = caml_wrap_exception(_d7_); + if(_d7_ === End_of_array)return acc[1]; + throw _d7_} + 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 ocaml_lex_read_tuple_rec$0 + (read_cell,init_acc,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(2 < 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: + var pos=[0,0],acc=[0,init_acc]; + try + {read_space$1(v,lexbuf); + read_tuple_end$1(lexbuf); + acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf); + pos[1]++; + for(;;) + {read_space$1(v,lexbuf); + read_tuple_sep$1(v,lexbuf); + read_space$1(v,lexbuf); + 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_} + 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_end2$1(v,std,lexbuf) + {var ocaml_lex_state=268; + 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: + if(std)return long_error$1(cst_Expected_or_but_found$32,v,lexbuf); + throw End_of_tuple; + case 1: + if(std)throw End_of_tuple; + return long_error$1(cst_Expected_or_but_found$33,v,lexbuf); + default:return 0}}} + function read_tuple_sep2$1(v,std,lexbuf) + {var ocaml_lex_state=276; + 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:return 0; + case 1: + if(std)return long_error$1(cst_Expected_or_but_found$35,v,lexbuf); + throw End_of_tuple; + case 2: + if(std)throw End_of_tuple; + return long_error$1(cst_Expected_or_but_found$36,v,lexbuf); + case 3:return long_error$1(cst_Expected_or_but_found$37,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$117,v,lexbuf)}}} + function ocaml_lex_read_abstract_fields$1 + (read_key,read_field,init_acc,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(2 < 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: + var acc=[0,init_acc]; + try + {read_space$1(v,lexbuf); + read_object_end$1(lexbuf); + var field_name=caml_call2(read_key,v,lexbuf); + read_space$1(v,lexbuf); + read_colon$1(v,lexbuf); + read_space$1(v,lexbuf); + acc[1] = caml_call4(read_field,acc[1],field_name,v,lexbuf); + for(;;) + {read_space$1(v,lexbuf); + read_object_sep$1(v,lexbuf); + read_space$1(v,lexbuf); + var field_name$0=caml_call2(read_key,v,lexbuf); + read_space$1(v,lexbuf); + read_colon$1(v,lexbuf); + 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_} + 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)}}} + function read_abstract_fields$1(read_key,read_field,init_acc,v,lexbuf) + {return ocaml_lex_read_abstract_fields$1 + (read_key,read_field,init_acc,v,lexbuf,282)} + function read_lcurl$1(v,lexbuf) + {var ocaml_lex_state=286; + 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$38,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$119,v,lexbuf)}}} + function start_any_tuple$1(v,lexbuf) + {var ocaml_lex_state=301; + 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 1; + case 2:return long_error$1(cst_Expected_or_but_found$39,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$122,v,lexbuf)}}} + function read_lpar$1(v,lexbuf) + {var ocaml_lex_state=306; + 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$40,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$123,v,lexbuf)}}} + function read_rpar$1(v,lexbuf) + {var ocaml_lex_state=310; + 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$41,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$124,v,lexbuf)}}} + function read_lbr$1(v,lexbuf) + {var ocaml_lex_state=314; + 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$42,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$125,v,lexbuf)}}} + function read_rbr$1(v,lexbuf) + {var ocaml_lex_state=318; + 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$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; + 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_Invalid_string_literal$6,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; + 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 finish_skip_stringlit$1(v,lexbuf); + case 1:return 0; + case 2: + return long_error$1(cst_Expected_string_or_identif$9,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$130,v,lexbuf)}}} + function skip_json$4(counter,v,lexbuf) + {var _d2_=322; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return ocaml_lex_skip_json_rec$1(counter$0,v,lexbuf,_d2_)} + return caml_trampoline_return + (ocaml_lex_skip_json_rec$1,[0,v,lexbuf,_d2_])} + function ocaml_lex_skip_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(18 < 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 0; + case 1:return 0; + case 2:return 0; + case 3:return 0; + case 4:return 0; + case 5:return 0; + case 6:return finish_skip_stringlit$1(v,lexbuf); + case 7:return 0; + case 8:return 0; + case 9: + try + {read_space$1(v,lexbuf); + read_object_end$1(lexbuf); + skip_ident$1(v,lexbuf); + read_space$1(v,lexbuf); + read_colon$1(v,lexbuf); + read_space$1(v,lexbuf); + skip_json$1(v,lexbuf); + for(;;) + {read_space$1(v,lexbuf); + read_object_sep$1(v,lexbuf); + read_space$1(v,lexbuf); + skip_ident$1(v,lexbuf); + read_space$1(v,lexbuf); + read_colon$1(v,lexbuf); + 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_} + case 10: + try + {read_space$1(v,lexbuf); + read_array_end$1(lexbuf); + skip_json$1(v,lexbuf); + for(;;) + {read_space$1(v,lexbuf); + read_array_sep$1(v,lexbuf); + 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_} + case 11: + try + {read_space$1(v,lexbuf); + read_tuple_end$1(lexbuf); + skip_json$1(v,lexbuf); + for(;;) + {read_space$1(v,lexbuf); + read_tuple_sep$1(v,lexbuf); + 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_} + case 12: + read_space$1(v,lexbuf); + skip_ident$1(v,lexbuf); + read_space$1(v,lexbuf); + return finish_skip_variant$1(v,lexbuf); + case 13: + if(counter < 50) + {var counter$0=counter + 1 | 0; + return skip_json$4(counter$0,v,lexbuf)} + return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); + case 14: + finish_comment$1(v,lexbuf); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return skip_json$4(counter$1,v,lexbuf)} + return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); + case 15: + newline$1(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return skip_json$4(counter$2,v,lexbuf)} + return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); + case 16: + if(counter < 50) + {var counter$3=counter + 1 | 0; + return skip_json$4(counter$3,v,lexbuf)} + return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); + case 17: + return custom_error$1(cst_Unexpected_end_of_input$127,v,lexbuf); + 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; + 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: + 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$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; + 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 caml_call2(Bi_outbuf[15],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$138,v,lexbuf)}}} + function buffer_tuple_sep$0(v,lexbuf) + {var ocaml_lex_state=494; + 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[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); + 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; + 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; + 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[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); + 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; + 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} + 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$1(v,lexbuf) + {var ocaml_lex_state=480; + 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[15],v[1],44); + case 1:caml_call2(Bi_outbuf[15],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; + 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} + 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; + 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: + 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); + default: + return custom_error$1(cst_Unexpected_end_of_input$132,v,lexbuf)}}} + function buffer_ident$1(v,lexbuf) + {var ocaml_lex_state=466; + 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 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$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; + 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_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); + default: + return custom_error$1(cst_Unexpected_end_of_input$133,v,lexbuf)}}} + function junk$1(lexbuf) + {var ocaml_lex_state=513; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)return caml_call1(lexeme$1,lexbuf); + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + read_junk$1[1] = junk$1; + function read_int8$1(v,lexbuf) + {var n=read_int$1(v,lexbuf); + 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_)} + function read_array$1(read_cell,v,lexbuf) + {var l=read_list_rev$1(read_cell,v,lexbuf); + if(l) + {var + tl=l[2], + x=l[1], + 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_; + for(;;) + {var _dS_=caml_call1(Stdlib_List[5],r[1]); + caml_check_bound(a,i)[1 + i] = _dS_; + r[1] = caml_call1(Stdlib_List[6],r[1]); + var _dT_=i - 1 | 0; + if(0 !== i){var i=_dT_;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_)}} + function from_lexbuf$1(v,opt,lexbuf) + {if(opt)var sth=opt[1],stream=sth;else var stream=0; + read_space$1(v,lexbuf); + if(read_eof$1(lexbuf))throw End_of_input; + var x=read_json$1(v,lexbuf); + if(1 - stream) + {read_space$1(v,lexbuf); + if(1 - read_eof$1(lexbuf)) + long_error$1(cst_Junk_after_end_of_JSON_val$1,v,lexbuf)} + return x} + function from_string$4(buf,fname,lnum,s) + {try + {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_}} + 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_}} + function from_file$1(buf,fname,lnum,file) + {var ic=caml_call1(Stdlib[79],file); + try + {var x=from_channel$4(buf,fname,lnum,ic); + caml_call1(Stdlib[93],ic); + 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) + {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; + function f(i) + {try + {var _dL_=[0,from_lexbuf$1(v,stream$1,lexbuf)];return _dL_} + catch(e) + {e = caml_wrap_exception(e); + if(e === End_of_input){caml_call1(fin,0);return 0} + try + {caml_call1(fin,0)} + 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) + {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) + {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) + {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) + {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) + {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_} + 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) + {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)} + 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} + var + Yojson= + [0, + version, + Json_error, + json_error, + Lexer_state, + init_lexer, + End_of_array, + End_of_object, + End_of_tuple, + End_of_input, + [0, + to_string$1, + to_channel$1, + 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, + write_t$0, + sort$0, + write_null$0, + write_bool$0, + 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, + write_assoc$0, + write_list$0, + write_t$0, + write_std_json$0, + pp$0, + show$0, + equal$0, + pretty_format$0, + pretty_print$0, + pretty_to_string$0, + pretty_to_channel$0, + prettify, + compact, + Finally, + from_string$0, + from_channel$0, + from_file, + init_lexer, + from_lexbuf, + stream_from_string, + stream_from_channel, + stream_from_file, + stream_from_lexbuf, + linestream_from_channel, + linestream_from_file, + read_json, + finish_string$1, + read_string, + read_ident, + map_string, + map_ident, + start_any_variant, + finish_variant, + finish_skip_variant, + read_lt, + read_gt, + read_comma, + finish_stringlit, + finish_skip_stringlit, + finish_escaped_char, + finish_comment, + read_space, + read_eof, + read_null, + read_null_if_possible, + read_bool, + read_int, + read_int8, + read_int32, + read_int64, + read_number, + skip_ident, + read_sequence, + read_list, + read_list_rev, + read_array_end, + read_array_sep, + read_array, + read_tuple, + start_any_tuple, + read_lpar, + read_rpar, + read_tuple_end, + read_tuple_end2, + read_tuple_sep, + read_tuple_sep2, + read_lbr, + read_rbr, + read_fields, + read_abstract_fields, + read_lcurl, + read_object_end, + read_object_sep, + read_colon, + read_json, + skip_json, + buffer_json, + validate_json, + [0, + Type_error, + Undefined, + symbol, + keys, + values, + combine, + member, + index, + map, + to_assoc, + to_option, + to_bool, + to_bool_option, + to_number, + to_number_option, + to_float, + to_float_option, + to_int, + to_int_option, + to_list, + to_string$2, + to_string_option, + convert_each, + filter_map, + flatten, + filter_index, + filter_list, + filter_member, + filter_assoc, + filter_bool, + filter_int, + filter_float, + filter_number, + filter_string]], + [0, + pp$1, + show$1, + equal$1, + to_basic, + to_string$3, + to_channel$2, + 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, + write_t$1, + sort$1, + write_null$1, + write_bool$1, + 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, + write_intlit$0, + write_assoc$1, + write_list$1, + write_tuple$0, + write_std_tuple$0, + write_variant$0, + 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, + prettify$0, + compact$0, + Finally$0, + from_string$2, + from_channel$2, + 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, + read_json$0, + finish_string$3, + read_string$0, + read_ident$0, + map_string$0, + map_ident$0, + start_any_variant$0, + finish_variant$0, + finish_skip_variant$0, + read_lt$0, + read_gt$0, + read_comma$0, + finish_stringlit$0, + finish_skip_stringlit$0, + finish_escaped_char$0, + finish_comment$0, + read_space$0, + read_eof$0, + read_null$0, + read_null_if_possible$0, + read_bool$0, + read_int$0, + read_int8$0, + read_int32$0, + read_int64$0, + read_number$0, + skip_ident$0, + read_sequence$0, + read_list$0, + read_list_rev$0, + read_array_end$0, + read_array_sep$0, + read_array$0, + read_tuple$0, + start_any_tuple$0, + read_lpar$0, + read_rpar$0, + read_tuple_end$0, + read_tuple_end2$0, + read_tuple_sep$0, + read_tuple_sep2$0, + read_lbr$0, + read_rbr$0, + read_fields$0, + read_abstract_fields$0, + read_lcurl$0, + read_object_end$0, + read_object_sep$0, + read_colon$0, + 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, + member$0, + index$0, + map$0, + to_assoc$0, + to_option$0, + to_bool$0, + to_bool_option$0, + to_number$0, + to_number_option$0, + to_float$0, + to_float_option$0, + to_int$0, + to_int_option$0, + to_list$0, + to_string$4, + to_string_option$0, + convert_each$0, + filter_map$0, + flatten$0, + filter_index$0, + filter_list$0, + filter_member$0, + filter_assoc$0, + filter_bool$0, + filter_int$0, + filter_float$0, + filter_number$0, + filter_string$0]], + [0, + pp$2, + show$2, + equal$2, + to_string$5, + to_channel$3, + 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, + write_t$2, + sort$2, + write_null$2, + write_bool$2, + write_intlit$1, + write_floatlit$0, + write_stringlit$0, + write_assoc$2, + write_list$2, + write_tuple$1, + write_std_tuple$1, + write_variant$1, + 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, + prettify$1, + compact$1, + Finally$1, + from_string$4, + from_channel$4, + 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, + read_json$1, + finish_string$5, + read_string$1, + read_ident$1, + map_string$1, + map_ident$1, + start_any_variant$1, + finish_variant$1, + finish_skip_variant$1, + read_lt$1, + read_gt$1, + read_comma$1, + finish_stringlit$1, + finish_skip_stringlit$1, + finish_escaped_char$1, + finish_comment$1, + read_space$1, + read_eof$1, + read_null$1, + read_null_if_possible$1, + read_bool$1, + read_int$1, + read_int8$1, + read_int32$1, + read_int64$1, + read_number$1, + skip_ident$1, + read_sequence$1, + read_list$1, + read_list_rev$1, + read_array_end$1, + read_array_sep$1, + read_array$1, + read_tuple$1, + start_any_tuple$1, + read_lpar$1, + read_rpar$1, + read_tuple_end$1, + read_tuple_end2$1, + read_tuple_sep$1, + read_tuple_sep2$1, + read_lbr$1, + read_rbr$1, + read_fields$1, + read_abstract_fields$1, + read_lcurl$1, + read_object_end$1, + read_object_sep$1, + read_colon$1, + read_json$1, + skip_json$1, + buffer_json$1, + validate_json$1], + pp, + show, + equal, + to_string, + to_channel, + to_output, + to_file, + to_outbuf, + stream_to_string, + stream_to_channel, + stream_to_file, + stream_to_outbuf, + write_t, + sort, + write_null, + write_bool, + write_int, + write_float, + write_std_float, + write_float_fast, + write_std_float_fast, + write_float_prec, + write_std_float_prec, + write_string, + write_intlit, + write_floatlit, + write_stringlit, + write_assoc, + write_list, + write_tuple, + write_std_tuple, + write_variant, + write_std_variant, + write_t, + write_std_json, + pretty_format, + pretty_print, + pretty_to_string, + pretty_to_channel]; + caml_register_global(1035,Yojson,"Yojson"); + return} + (globalThis)); + + +//# 1 "../../.js/ppx_yojson_conv_lib/ppx_yojson_conv_lib.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_check_bound=runtime.caml_check_bound, + caml_fresh_oo_id=runtime.caml_fresh_oo_id, + caml_int_of_string=runtime.caml_int_of_string, + caml_register_global=runtime.caml_register_global, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes; + 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_fun_of_yojson_cannot_conve= + caml_string_of_jsbytes("fun_of_yojson: cannot convert function values"), + cst_opaque_of_yojson_cannot_co= + caml_string_of_jsbytes("opaque_of_yojson: cannot convert opaque values"), + cst_hashtbl_of_yojson_tuple_li= + caml_string_of_jsbytes("hashtbl_of_yojson: tuple list needed"), + cst_hashtbl_of_yojson_list_nee= + caml_string_of_jsbytes("hashtbl_of_yojson: list needed"), + cst_array_of_yojson_list_neede= + caml_string_of_jsbytes("array_of_yojson: list needed"), + cst_list_of_yojson_list_needed= + caml_string_of_jsbytes("list_of_yojson: list needed"), + cst_triple_of_yojson_invalid_f= + caml_string_of_jsbytes("triple_of_yojson: invalid format"), + cst_pair_of_yojson_invalid_for= + caml_string_of_jsbytes("pair_of_yojson: invalid format"), + cst_nativeint_of_yojson_intege= + caml_string_of_jsbytes("nativeint_of_yojson: integer needed"), + cst_int64_of_yojson_integer_ne= + caml_string_of_jsbytes("int64_of_yojson: integer needed"), + cst_int32_of_yojson_integer_ne= + caml_string_of_jsbytes("int32_of_yojson: integer needed"), + cst_float_of_yojson_float_need= + caml_string_of_jsbytes("float_of_yojson: float needed"), + cst_int_of_yojson_integer_need= + caml_string_of_jsbytes("int_of_yojson: integer needed"), + cst_char_of_yojson_string_must= + caml_string_of_jsbytes + ("char_of_yojson: string must contain one character only"), + cst_char_of_yojson_string_of_s= + caml_string_of_jsbytes("char_of_yojson: string of size one needed"), + cst_bytes_of_yojson_string_nee= + caml_string_of_jsbytes("bytes_of_yojson: string needed"), + cst_string_of_yojson_string_ne= + caml_string_of_jsbytes("string_of_yojson: string needed"), + cst_bool_of_yojson_true_false_= + caml_string_of_jsbytes("bool_of_yojson: true/false needed"), + cst_unit_of_yojson_Null_needed= + caml_string_of_jsbytes("unit_of_yojson: `Null needed"), + cst_Ppx_yojson_conv_lib_Yojson= + caml_string_of_jsbytes + ("Ppx_yojson_conv_lib__Yojson_conv.Of_yojson_error"), + cst$0=caml_string_of_jsbytes(" "), + cst_of_yojson_trying_to_conver= + caml_string_of_jsbytes("_of_yojson: trying to convert an empty type"), + cst_of_yojson_the_empty_list_i= + caml_string_of_jsbytes + ("_of_yojson: the empty list is an invalid polymorphic variant"), + cst_of_yojson_a_nested_list_is= + caml_string_of_jsbytes + ("_of_yojson: a nested list is an invalid polymorphic variant"), + cst_of_yojson_polymorphic_vari$0= + caml_string_of_jsbytes + ("_of_yojson: polymorphic variant tag takes an argument"), + cst_of_yojson_polymorphic_vari= + caml_string_of_jsbytes + ("_of_yojson: polymorphic variant does not take arguments"), + cst_of_yojson_no_matching_vari= + caml_string_of_jsbytes("_of_yojson: no matching variant found"), + cst_of_yojson_cannot_convert_v= + caml_string_of_jsbytes + ("_of_yojson: cannot convert values of types resulting from polymorphic record fields"), + cst_of_yojson_list_instead_of_= + caml_string_of_jsbytes + ("_of_yojson: list instead of atom for record expected"), + cst_extra_fields=caml_string_of_jsbytes("extra fields"), + cst_duplicate_fields=caml_string_of_jsbytes("duplicate fields"), + cst=caml_string_of_jsbytes(" "), + cst_of_yojson_unexpected_varia= + caml_string_of_jsbytes("_of_yojson: unexpected variant constructor"), + cst_of_yojson_expected_a_varia$0= + caml_string_of_jsbytes + ("_of_yojson: expected a variant type, saw an empty list"), + cst_of_yojson_expected_a_varia= + caml_string_of_jsbytes + ("_of_yojson: expected a variant type, saw a nested list"), + cst_of_yojson_this_constructor$0= + caml_string_of_jsbytes + ("_of_yojson: this constructor requires arguments"), + cst_of_yojson_this_constructor= + caml_string_of_jsbytes + ("_of_yojson: this constructor does not take arguments"), + cst_Ppx_yojson_conv_lib_Yojson$0= + caml_string_of_jsbytes + ("Ppx_yojson_conv_lib__Yojson_conv_error.No_variant_match"), + Stdlib_MoreLabels=global_data.Stdlib__MoreLabels, + Stdlib_ListLabels=global_data.Stdlib__ListLabels, + Stdlib_Lazy=global_data.Stdlib__Lazy, + Stdlib_BytesLabels=global_data.Stdlib__BytesLabels, + Stdlib=global_data.Stdlib, + CamlinternalLazy=global_data.CamlinternalLazy, + Stdlib_Nativeint=global_data.Stdlib__Nativeint, + Stdlib_Int64=global_data.Stdlib__Int64, + Stdlib_Int32=global_data.Stdlib__Int32, + Stdlib_StringLabels=global_data.Stdlib__StringLabels, + Stdlib_Printf=global_data.Stdlib__Printf, + Ppx_yojson_conv_lib=[0]; + caml_register_global(45,Ppx_yojson_conv_lib,"Ppx_yojson_conv_lib__"); + var Ppx_yojson_conv_lib_Yojsonable=[0]; + caml_register_global + (46, + Ppx_yojson_conv_lib_Yojsonable, + "Ppx_yojson_conv_lib__Yojsonable_intf"); + var + _b_=[0,-976970511,caml_string_of_jsbytes("")], + _a_=[0,-976970511,caml_string_of_jsbytes("")], + _g_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes("_of_yojson: polymorphic variant tag "), + [3, + 0, + [11,caml_string_of_jsbytes(" has incorrect number of arguments"),0]]]], + caml_string_of_jsbytes + ("%s_of_yojson: polymorphic variant tag %S has incorrect number of arguments")], + _f_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes + ("_of_yojson: the following record elements were undefined: "), + [2,0,0]]], + caml_string_of_jsbytes + ("%s_of_yojson: the following record elements were undefined: %s")], + _e_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes("_of_yojson: "), + [2,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]]], + caml_string_of_jsbytes("%s_of_yojson: %s: %s")], + _d_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes("_of_yojson: sum tag "), + [3, + 0, + [11,caml_string_of_jsbytes(" has incorrect number of arguments"),0]]]], + caml_string_of_jsbytes + ("%s_of_yojson: sum tag %S has incorrect number of arguments")], + _c_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes("_of_yojson: tuple of size "), + [4,0,0,0,[11,caml_string_of_jsbytes(" expected"),0]]]], + caml_string_of_jsbytes("%s_of_yojson: tuple of size %d expected")]; + function yojson_of_unit(param){return 870828711} + function yojson_of_bool(b){return [0,737456202,b]} + function yojson_of_string(str){return [0,-976970511,str]} + function yojson_of_bytes(bytes) + {return [0,-976970511,caml_call1(Stdlib_BytesLabels[6],bytes)]} + function yojson_of_char(c) + {return [0,-976970511,caml_call2(Stdlib_StringLabels[1],1,c)]} + function yojson_of_int(n){return [0,3654863,n]} + function yojson_of_float(n){return [0,365180284,n]} + function yojson_of_int32(n) + {return [0,-752863768,caml_call1(Stdlib_Int32[14],n)]} + function yojson_of_int64(n) + {return [0,-752863768,caml_call1(Stdlib_Int64[14],n)]} + function yojson_of_nativeint(n) + {return [0,-752863768,caml_call1(Stdlib_Nativeint[15],n)]} + function yojson_of_ref(yojson_of_a,rf) + {return caml_call1(yojson_of_a,rf[1])} + function yojson_of_lazy_t(yojson_of_a,lv) + {var + _I_=runtime.caml_obj_tag(lv), + _J_=250 === _I_?lv[1]:246 === _I_?caml_call1(CamlinternalLazy[2],lv):lv; + return caml_call1(yojson_of_a,_J_)} + function yojson_of_option(yojson_of_a,param) + {if(param){var x=param[1];return caml_call1(yojson_of_a,x)} + return 870828711} + function yojson_of_pair(yojson_of_a,yojson_of_b,param) + {var b=param[2],a=param[1],_H_=[0,caml_call1(yojson_of_b,b),0]; + return [0,848054398,[0,caml_call1(yojson_of_a,a),_H_]]} + function yojson_of_triple(yojson_of_a,yojson_of_b,yojson_of_c,param) + {var + c=param[3], + b=param[2], + a=param[1], + _F_=[0,caml_call1(yojson_of_c,c),0], + _G_=[0,caml_call1(yojson_of_b,b),_F_]; + return [0,848054398,[0,caml_call1(yojson_of_a,a),_G_]]} + function yojson_of_list(yojson_of_a,lst) + {var _E_=caml_call2(Stdlib_ListLabels[21],yojson_of_a,lst); + return [0,848054398,caml_call1(Stdlib_ListLabels[9],_E_)]} + function yojson_of_array(yojson_of_a,ar) + {var lst_ref=[0,0],_B_=ar.length - 1 - 1 | 0; + if(! (_B_ < 0)) + {var i=_B_; + for(;;) + {var _C_=lst_ref[1]; + lst_ref[1] + = + [0,caml_call1(yojson_of_a,caml_check_bound(ar,i)[1 + i]),_C_]; + var _D_=i - 1 | 0; + if(0 !== i){var i=_D_;continue} + break}} + return [0,848054398,lst_ref[1]]} + function yojson_of_hashtbl(yojson_of_key,yojson_of_val,htbl) + {function coll(k,v,acc) + {var _A_=[0,caml_call1(yojson_of_val,v),0]; + return [0,[0,848054398,[0,caml_call1(yojson_of_key,k),_A_]],acc]} + return [0,848054398,caml_call3(Stdlib_MoreLabels[1][14],coll,htbl,0)]} + function yojson_of_opaque(param){return _a_} + function yojson_of_fun(param){return _b_} + var + Of_yojson_error=[248,cst_Ppx_yojson_conv_lib_Yojson,caml_fresh_oo_id(0)], + record_check_extra_fields=[0,1]; + function of_yojson_error_exn(exc,yojson) + {throw [0,Of_yojson_error,exc,yojson]} + function of_yojson_error(what,yojson) + {throw [0,Of_yojson_error,[0,Stdlib[7],what],yojson]} + function unit_of_yojson(yojson) + {return 870828711 === yojson + ?0 + :of_yojson_error(cst_unit_of_yojson_Null_needed,yojson)} + function bool_of_yojson(yojson) + {if(typeof yojson !== "number" && 737456202 === yojson[1]) + {var v=yojson[2];return v} + return of_yojson_error(cst_bool_of_yojson_true_false_,yojson)} + function string_of_yojson(yojson) + {if(typeof yojson !== "number" && -976970511 === yojson[1]) + {var str=yojson[2];return str} + return of_yojson_error(cst_string_of_yojson_string_ne,yojson)} + function bytes_of_yojson(yojson) + {if(typeof yojson !== "number" && -976970511 === yojson[1]) + {var str=yojson[2];return caml_call1(Stdlib_BytesLabels[5],str)} + return of_yojson_error(cst_bytes_of_yojson_string_nee,yojson)} + function char_of_yojson(yojson) + {if(typeof yojson !== "number" && -976970511 === yojson[1]) + {var str=yojson[2]; + if(1 !== runtime.caml_ml_string_length(str)) + of_yojson_error(cst_char_of_yojson_string_must,yojson); + return runtime.caml_string_get(str,0)} + return of_yojson_error(cst_char_of_yojson_string_of_s,yojson)} + function int_of_yojson(yojson) + {if(typeof yojson !== "number" && 3654863 === yojson[1]) + {var v=yojson[2];return v} + return of_yojson_error(cst_int_of_yojson_integer_need,yojson)} + function float_of_yojson(yojson) + {if(typeof yojson !== "number") + {var _z_=yojson[1]; + if(-752863768 === _z_) + {var str=yojson[2];return runtime.caml_float_of_string(str)} + if(3654863 === _z_){var i=yojson[2];return i} + if(365180284 === _z_){var v=yojson[2];return v}} + return of_yojson_error(cst_float_of_yojson_float_need,yojson)} + function int32_of_yojson(yojson) + {if(typeof yojson !== "number") + {var _y_=yojson[1]; + if(-752863768 === _y_) + {var str=yojson[2];return caml_int_of_string(str)} + if(3654863 === _y_){var v=yojson[2];return v}} + return of_yojson_error(cst_int32_of_yojson_integer_ne,yojson)} + function int64_of_yojson(yojson) + {if(typeof yojson !== "number") + {var _x_=yojson[1]; + if(-752863768 === _x_) + {var str=yojson[2];return runtime.caml_int64_of_string(str)} + if(3654863 === _x_) + {var v=yojson[2];return runtime.caml_int64_of_int32(v)}} + return of_yojson_error(cst_int64_of_yojson_integer_ne,yojson)} + function nativeint_of_yojson(yojson) + {if(typeof yojson !== "number") + {var _w_=yojson[1]; + if(-752863768 === _w_) + {var str=yojson[2];return caml_int_of_string(str)} + if(3654863 === _w_){var v=yojson[2];return v}} + return of_yojson_error(cst_nativeint_of_yojson_intege,yojson)} + function ref_of_yojson(a_of_yojson,yojson) + {return [0,caml_call1(a_of_yojson,yojson)]} + function lazy_t_of_yojson(a_of_yojson,yojson) + {var _v_=caml_call1(a_of_yojson,yojson); + return caml_call1(Stdlib_Lazy[4],_v_)} + function option_of_yojson(a_of_yojson,yojson) + {return 870828711 === yojson?0:[0,caml_call1(a_of_yojson,yojson)]} + function pair_of_yojson(a_of_yojson,b_of_yojson,yojson) + {if(typeof yojson !== "number" && 848054398 === yojson[1]) + {var _t_=yojson[2]; + if(_t_) + {var _u_=_t_[2]; + if(_u_ && ! _u_[2]) + {var + b_yojson=_u_[1], + a_yojson=_t_[1], + a=caml_call1(a_of_yojson,a_yojson), + b=caml_call1(b_of_yojson,b_yojson); + return [0,a,b]}}} + return of_yojson_error(cst_pair_of_yojson_invalid_for,yojson)} + function triple_of_yojson(a_of_yojson,b_of_yojson,c_of_yojson,yojson) + {if(typeof yojson !== "number" && 848054398 === yojson[1]) + {var _q_=yojson[2]; + if(_q_) + {var _r_=_q_[2]; + if(_r_) + {var _s_=_r_[2]; + if(_s_ && ! _s_[2]) + {var + c_yojson=_s_[1], + b_yojson=_r_[1], + a_yojson=_q_[1], + a=caml_call1(a_of_yojson,a_yojson), + b=caml_call1(b_of_yojson,b_yojson), + c=caml_call1(c_of_yojson,c_yojson); + return [0,a,b,c]}}}} + return of_yojson_error(cst_triple_of_yojson_invalid_f,yojson)} + function list_of_yojson(a_of_yojson,yojson) + {if(typeof yojson !== "number" && 848054398 === yojson[1]) + {var + lst=yojson[2], + rev_lst=caml_call2(Stdlib_ListLabels[21],a_of_yojson,lst); + return caml_call1(Stdlib_ListLabels[9],rev_lst)} + return of_yojson_error(cst_list_of_yojson_list_needed,yojson)} + function array_of_yojson(a_of_yojson,yojson) + {if(typeof yojson !== "number" && 848054398 === yojson[1]) + {var _o_=yojson[2]; + if(_o_) + {var + t=_o_[2], + h=_o_[1], + len=caml_call1(Stdlib_ListLabels[1],t) + 1 | 0, + res=runtime.caml_make_vect(len,caml_call1(a_of_yojson,h)), + i=1, + param=t; + for(;;) + {if(param) + {var t$0=param[2],h$0=param[1],_p_=caml_call1(a_of_yojson,h$0); + caml_check_bound(res,i)[1 + i] = _p_; + var i$0=i + 1 | 0,i=i$0,param=t$0; + continue} + return res}} + return [0]} + return of_yojson_error(cst_array_of_yojson_list_neede,yojson)} + function hashtbl_of_yojson(key_of_yojson,val_of_yojson,yojson) + {if(typeof yojson !== "number" && 848054398 === yojson[1]) + {var + lst=yojson[2], + htbl=caml_call2(Stdlib_MoreLabels[1][1],0,0), + act= + function(param) + {if(typeof param !== "number" && 848054398 === param[1]) + {var _k_=param[2]; + if(_k_) + {var _l_=_k_[2]; + if(_l_ && ! _l_[2]) + {var + v_yojson=_l_[1], + k_yojson=_k_[1], + _m_=caml_call1(val_of_yojson,v_yojson), + _n_=caml_call1(key_of_yojson,k_yojson); + return caml_call3(Stdlib_MoreLabels[1][5],htbl,_n_,_m_)}}} + return of_yojson_error(cst_hashtbl_of_yojson_tuple_li,yojson)}; + caml_call2(Stdlib_ListLabels[17],act,lst); + return htbl} + return of_yojson_error(cst_hashtbl_of_yojson_list_nee,yojson)} + function opaque_of_yojson(yojson) + {return of_yojson_error(cst_opaque_of_yojson_cannot_co,yojson)} + function fun_of_yojson(yojson) + {return of_yojson_error(cst_fun_of_yojson_cannot_conve,yojson)} + var + Ppx_yojson_conv_lib_Yojson_con= + [0, + yojson_of_unit, + yojson_of_bool, + yojson_of_string, + yojson_of_bytes, + yojson_of_char, + yojson_of_int, + yojson_of_float, + yojson_of_int32, + yojson_of_int64, + yojson_of_nativeint, + yojson_of_ref, + yojson_of_lazy_t, + yojson_of_option, + yojson_of_pair, + yojson_of_triple, + yojson_of_list, + yojson_of_array, + yojson_of_hashtbl, + yojson_of_opaque, + yojson_of_fun, + Of_yojson_error, + record_check_extra_fields, + of_yojson_error, + of_yojson_error_exn, + unit_of_yojson, + bool_of_yojson, + string_of_yojson, + bytes_of_yojson, + char_of_yojson, + int_of_yojson, + float_of_yojson, + int32_of_yojson, + int64_of_yojson, + nativeint_of_yojson, + ref_of_yojson, + lazy_t_of_yojson, + option_of_yojson, + pair_of_yojson, + triple_of_yojson, + list_of_yojson, + array_of_yojson, + hashtbl_of_yojson, + opaque_of_yojson, + fun_of_yojson, + [0, + yojson_of_unit, + yojson_of_bool, + yojson_of_string, + yojson_of_bytes, + yojson_of_char, + yojson_of_int, + yojson_of_float, + yojson_of_int32, + yojson_of_int64, + yojson_of_nativeint, + yojson_of_ref, + yojson_of_lazy_t, + yojson_of_option, + yojson_of_list, + yojson_of_array, + yojson_of_hashtbl, + unit_of_yojson, + bool_of_yojson, + string_of_yojson, + bytes_of_yojson, + char_of_yojson, + int_of_yojson, + float_of_yojson, + int32_of_yojson, + int64_of_yojson, + nativeint_of_yojson, + ref_of_yojson, + lazy_t_of_yojson, + option_of_yojson, + list_of_yojson, + array_of_yojson, + hashtbl_of_yojson]]; + caml_register_global + (57,Ppx_yojson_conv_lib_Yojson_con,"Ppx_yojson_conv_lib__Yojson_conv"); + var sprintf=Stdlib_Printf[4]; + function tuple_of_size_n_expected(loc,n,yojson) + {return of_yojson_error(caml_call3(sprintf,_c_,loc,n),yojson)} + function stag_no_args(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_this_constructor), + yojson)} + function stag_incorrect_n_args(loc,tag,yojson) + {var msg=caml_call3(sprintf,_d_,loc,tag); + return of_yojson_error(msg,yojson)} + function stag_takes_args(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_this_constructor$0), + yojson)} + function nested_list_invalid_sum(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_expected_a_varia), + yojson)} + function empty_list_invalid_sum(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_expected_a_varia$0), + yojson)} + function unexpected_stag(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_unexpected_varia), + yojson)} + function record_superfluous_fields(what,loc,rev_fld_names,yojson) + {var + _j_=caml_call1(Stdlib_ListLabels[9],rev_fld_names), + fld_names_str=caml_call2(Stdlib_StringLabels[6],cst,_j_), + msg=caml_call4(sprintf,_e_,loc,what,fld_names_str); + return of_yojson_error(msg,yojson)} + function record_duplicate_fields(loc,rev_fld_names,yojson) + {return record_superfluous_fields + (cst_duplicate_fields,loc,rev_fld_names,yojson)} + function record_extra_fields(loc,rev_fld_names,yojson) + {return record_superfluous_fields + (cst_extra_fields,loc,rev_fld_names,yojson)} + function record_get_undefined_loop(fields,param) + {var fields$0=fields,param$0=param; + for(;;) + {if(param$0) + {var _h_=param$0[1]; + if(_h_[1]) + {var + param$1=param$0[2], + field=_h_[2], + fields$1=[0,field,fields$0], + fields$0=fields$1, + param$0=param$1; + continue} + var param$2=param$0[2],param$0=param$2; + continue} + var _i_=caml_call1(Stdlib_ListLabels[9],fields$0); + return caml_call2(Stdlib_StringLabels[6],cst$0,_i_)}} + function record_undefined_elements(loc,yojson,lst) + {var + undefined$0=record_get_undefined_loop(0,lst), + msg=caml_call3(sprintf,_f_,loc,undefined$0); + return of_yojson_error(msg,yojson)} + function record_list_instead_atom(loc,yojson) + {var msg=caml_call2(Stdlib[28],loc,cst_of_yojson_list_instead_of_); + return of_yojson_error(msg,yojson)} + function record_poly_field_value(loc,yojson) + {var msg=caml_call2(Stdlib[28],loc,cst_of_yojson_cannot_convert_v); + return of_yojson_error(msg,yojson)} + var + No_variant_match= + [248,cst_Ppx_yojson_conv_lib_Yojson$0,caml_fresh_oo_id(0)]; + function no_variant_match(param){throw No_variant_match} + function no_matching_variant_found(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_no_matching_vari), + yojson)} + function ptag_no_args(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_polymorphic_vari), + yojson)} + function ptag_incorrect_n_args(loc,cnstr,yojson) + {var msg=caml_call3(sprintf,_g_,loc,cnstr); + return of_yojson_error(msg,yojson)} + function ptag_takes_args(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_polymorphic_vari$0), + yojson)} + function nested_list_invalid_poly_var(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_a_nested_list_is), + yojson)} + function empty_list_invalid_poly_var(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_the_empty_list_i), + yojson)} + function empty_type(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_trying_to_conver), + yojson)} + var + Ppx_yojson_conv_lib_Yojson_con$0= + [0, + sprintf, + tuple_of_size_n_expected, + stag_no_args, + stag_incorrect_n_args, + stag_takes_args, + nested_list_invalid_sum, + empty_list_invalid_sum, + unexpected_stag, + record_superfluous_fields, + record_duplicate_fields, + record_extra_fields, + record_get_undefined_loop, + record_undefined_elements, + record_list_instead_atom, + record_poly_field_value, + No_variant_match, + no_variant_match, + no_matching_variant_found, + ptag_no_args, + ptag_incorrect_n_args, + ptag_takes_args, + nested_list_invalid_poly_var, + empty_list_invalid_poly_var, + empty_type]; + caml_register_global + (59, + Ppx_yojson_conv_lib_Yojson_con$0, + "Ppx_yojson_conv_lib__Yojson_conv_error"); + var Option=[0]; + function symbol(x){return x[1]} + var Ppx_yojson_conv_lib$0=[0,Option,symbol]; + caml_register_global(60,Ppx_yojson_conv_lib$0,"Ppx_yojson_conv_lib"); + return} + (globalThis)); + + +//# 1 "../../runtimes/ocaml/.runtime_ocaml.objs/runtime_ocaml.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_check_bound=runtime.caml_check_bound, + caml_equal=runtime.caml_equal, + caml_fresh_oo_id=runtime.caml_fresh_oo_id, + caml_register_global=runtime.caml_register_global, + caml_string_equal=runtime.caml_string_equal, + 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])} + 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_call6(f,a0,a1,a2,a3,a4,a5) + {return f.length == 6 + ?f(a0,a1,a2,a3,a4,a5) + :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])} + function caml_call7(f,a0,a1,a2,a3,a4,a5,a6) + {return f.length == 7 + ?f(a0,a1,a2,a3,a4,a5,a6) + :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])} + function caml_call9(f,a0,a1,a2,a3,a4,a5,a6,a7,a8) + {return f.length == 9 + ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8) + :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7,a8])} + var + global_data=runtime.caml_get_global_data(), + cst$3=caml_string_of_jsbytes("."), + cst$4=caml_string_of_jsbytes("."), + partial= + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [15, + [17, + [0,caml_string_of_jsbytes("@;<1 -2>"),1,-2], + [12,93,[17,0,[12,32,[17,0,0]]]]]]]]]], + cst$5=caml_string_of_jsbytes("."), + cst$6=caml_string_of_jsbytes("."), + partial$0=[11,caml_string_of_jsbytes(""),0], + partial$1= + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@,"),0,0], + [15, + [12, + 93, + [17, + 0, + [17, + [0,caml_string_of_jsbytes("@,"),0,0], + [17,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],[12,125,0]]]]]]]]], + partial$2=[0,caml_string_of_jsbytes("@ "),1,0], + partial$3= + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [15, + [12, + 44, + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [11, + caml_string_of_jsbytes("output:"), + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [15, + [12, + 44, + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [11,caml_string_of_jsbytes("body:"),[17,partial$2,partial$1]]]]]]]]]]], + cst$7=caml_string_of_jsbytes("."), + partial$4=[11,caml_string_of_jsbytes(""),0], + partial$5= + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [15, + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [12, + 93, + [17, + 0, + [17,0,[17,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],[12,125,0]]]]]]]]]], + partial$6= + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + partial$7= + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@,"),0,0], + [15, + [17, + 0, + [11, + caml_string_of_jsbytes("],"), + [17, + [0,caml_string_of_jsbytes("@,"),0,0], + [11, + caml_string_of_jsbytes("body:"), + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [18,partial$6,partial$5]]]]]]]]]]], + cst_unreachable_due_to_the_is_= + caml_string_of_jsbytes("unreachable due to the [is_subscope_call] test"), + cst_unreachable_due_to_the_is_$0= + caml_string_of_jsbytes + ("unreachable due to the [is_subscope_input_var_def] test"), + cst$13=caml_string_of_jsbytes("]"), + cst$14=caml_string_of_jsbytes("["), + cst_expected_variable_definiti= + caml_string_of_jsbytes + (" ]): expected variable definition (function output), found: "), + cst$15=caml_string_of_jsbytes(", "), + cst_Invalid_function_call= + caml_string_of_jsbytes("Invalid function call ([ "), + cst_expected_variable_definiti$0= + caml_string_of_jsbytes + (" ]): expected variable definition (function output), found: end of tokens"), + cst$16=caml_string_of_jsbytes(", "), + cst_Invalid_function_call$0= + caml_string_of_jsbytes("Invalid function call ([ "), + cst_Unexpected_event=caml_string_of_jsbytes("Unexpected event: "), + cst_Missing_function_output_va= + caml_string_of_jsbytes("Missing function output variable definition."), + cst_Invalid_start_of_function_= + caml_string_of_jsbytes("Invalid start of function call."), + cst_input$0=caml_string_of_jsbytes("input"), + cst_output$0=caml_string_of_jsbytes("output"), + 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(", "), + partial$8=[12,41,0], + cst_body=caml_string_of_jsbytes("body"), + cst_inputs=caml_string_of_jsbytes("inputs"), + cst_name=caml_string_of_jsbytes("name"), + cst_fun_calls=caml_string_of_jsbytes("fun_calls"), + cst_value=caml_string_of_jsbytes("value"), + cst_name$0=caml_string_of_jsbytes("name"), + cst_pos=caml_string_of_jsbytes("pos"), + cst_output=caml_string_of_jsbytes("output"), + cst_body$0=caml_string_of_jsbytes("body"), + cst_input=caml_string_of_jsbytes("input"), + cst_fun_name=caml_string_of_jsbytes("fun_name"), + cst=caml_string_of_jsbytes("\xe2\x80\xa6"), + cst$2=caml_string_of_jsbytes(""), + cst$1=caml_string_of_jsbytes("-"), + cst$0=caml_string_of_jsbytes(""), + cst_law_headings=caml_string_of_jsbytes("law_headings"), + cst_end_column=caml_string_of_jsbytes("end_column"), + cst_end_line=caml_string_of_jsbytes("end_line"), + cst_start_column=caml_string_of_jsbytes("start_column"), + cst_start_line=caml_string_of_jsbytes("start_line"), + cst_filename=caml_string_of_jsbytes("filename"), + cst_Runtime_ocaml_Runtime_Empt= + caml_string_of_jsbytes("Runtime_ocaml.Runtime.EmptyError"), + cst_Runtime_ocaml_Runtime_Asse= + caml_string_of_jsbytes("Runtime_ocaml.Runtime.AssertionFailed"), + cst_Runtime_ocaml_Runtime_Conf= + caml_string_of_jsbytes("Runtime_ocaml.Runtime.ConflictError"), + cst_Runtime_ocaml_Runtime_Unco= + caml_string_of_jsbytes("Runtime_ocaml.Runtime.UncomparableDurations"), + cst_Runtime_ocaml_Runtime_Indi= + caml_string_of_jsbytes("Runtime_ocaml.Runtime.IndivisableDurations"), + cst_Runtime_ocaml_Runtime_Impo= + caml_string_of_jsbytes("Runtime_ocaml.Runtime.ImpossibleDate"), + cst_Runtime_ocaml_Runtime_NoVa= + caml_string_of_jsbytes("Runtime_ocaml.Runtime.NoValueProvided"), + Stdlib_String=global_data.Stdlib__String, + Stdlib_Format=global_data.Stdlib__Format, + Stdlib_Array=global_data.Stdlib__Array, + Stdlib_Option=global_data.Stdlib__Option, + Stdlib=global_data.Stdlib, + Dates_calc_Dates=global_data.Dates_calc__Dates, + Q=global_data.Q, + Z=global_data.Z, + Stdlib_List=global_data.Stdlib__List, + Stdlib_Printf=global_data.Stdlib__Printf, + Yojson=global_data.Yojson, + Ppx_yojson_conv_lib_Yojson_con= + global_data.Ppx_yojson_conv_lib__Yojson_conv, + Stdlib_Map=global_data.Stdlib__Map, + Runtime_ocaml=[0]; + caml_register_global(112,Runtime_ocaml,"Runtime_ocaml"); + var + _u_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [11, + caml_string_of_jsbytes("@ %s:@ %a@]")], + _v_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes(" line "), + [4,0,0,0,[11,caml_string_of_jsbytes(" to "),[4,0,0,0,0]]]]], + caml_string_of_jsbytes("%s line %d to %d")], + _w_= + [0, + [11,caml_string_of_jsbytes("no_pos"),0], + caml_string_of_jsbytes("no_pos")], + _x_= + [0, + [17,[0,caml_string_of_jsbytes("@ "),1,0],0], + caml_string_of_jsbytes("@ ")], + _y_= + [0, + [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(",@ ")], + _z_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [11, + caml_string_of_jsbytes(""), + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [2, + 0, + [11, + caml_string_of_jsbytes(": "), + [15, + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [11, + caml_string_of_jsbytes("computed from"), + [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,58,partial]]]]]]]]]], + caml_string_of_jsbytes + ("@[@ %s: %a@ computed from@ :@ @[[@ %a@;<1 -2>]@] @]")], + _M_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _K_= + [0, + [12,44,[17,[0,caml_string_of_jsbytes("@,"),0,0],0]], + caml_string_of_jsbytes(",@,")], + _J_= + [0, + [2,0,[11,caml_string_of_jsbytes(": "),[15,0]]], + caml_string_of_jsbytes("%s: %a")], + _A_=[0,[11,caml_string_of_jsbytes("()"),0],caml_string_of_jsbytes("()")], + _B_= + [0,[11,caml_string_of_jsbytes("fun"),0],caml_string_of_jsbytes("fun")], + _C_=[0,[9,0,0],caml_string_of_jsbytes("%b")], + _D_= + [0, + [2,0,[11,caml_string_of_jsbytes("\xe2\x82\xac"),0]], + caml_string_of_jsbytes("%s\xe2\x82\xac")], + _E_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _F_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _G_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _H_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _I_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _L_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [2, + 0, + [11, + caml_string_of_jsbytes(" = {"), + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [15, + [17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,125,[17,0,0]]]]]]]], + caml_string_of_jsbytes("@[%s = {@ %a@;<1 -2>}@]")], + _N_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [15, + [17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,[17,0,0]]]]]]], + caml_string_of_jsbytes("@[[@ %a@;<1 -2>]@]")], + _O_=[0,[15,0],caml_string_of_jsbytes("%a")], + _P_=[0,[15,0],caml_string_of_jsbytes("%a")], + _Q_=[0,0], + _R_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [11, + caml_string_of_jsbytes(""), + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [2, + 0, + [11, + caml_string_of_jsbytes(" :="), + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [12, + 123, + [18, + [1,[0,partial$0,caml_string_of_jsbytes("")]], + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [11,caml_string_of_jsbytes("input:"),partial$3]]]]]]]]]], + caml_string_of_jsbytes + ("@[@ %s :=@ {@[@ input:@ %a,@ output:@ %a,@ body:@ [@,%a]@]@,@]@,}")], + _S_=[0,0], + _T_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [11, + caml_string_of_jsbytes(""), + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [2, + 0, + [11, + caml_string_of_jsbytes(" :="), + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [12, + 123, + [18, + [1,[0,partial$4,caml_string_of_jsbytes("")]], + [17, + [0,caml_string_of_jsbytes("@,"),0,0], + [11,caml_string_of_jsbytes("inputs:"),partial$7]]]]]]]]]], + caml_string_of_jsbytes + ("@[@ %s :=@ {@[@,inputs:@ @[[@,%a@]],@,body:@ @[[@ %a@ ]@]@]@]@,}")], + _U_= + [0, + [17,[0,caml_string_of_jsbytes("@ "),1,0],0], + caml_string_of_jsbytes("@ ")], + _V_=[0,[17,4,0],caml_string_of_jsbytes("@.")], + _X_=[0,0,caml_string_of_jsbytes("")], + _W_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15,[17,0,0]]], + caml_string_of_jsbytes("@[%a@]")], + _ac_=[0,0], + _ad_=[0,0], + _ae_=[0,0], + _ab_= + [0, + [11, + caml_string_of_jsbytes("An error occurred while parsing raw events: "), + [2,0,[12,10,0]]], + caml_string_of_jsbytes + ("An error occurred while parsing raw events: %s\n")], + _Z_= + [0, + [11,caml_string_of_jsbytes("BeginCall([ "),0], + caml_string_of_jsbytes("BeginCall([ ")], + ___= + [0, + [11,caml_string_of_jsbytes("EndCall([ "),0], + caml_string_of_jsbytes("EndCall([ ")], + _$_= + [0, + [11, + caml_string_of_jsbytes("VariableDefinition([ "), + [2,0,[11,caml_string_of_jsbytes(" ], "),[2,0,[12,41,0]]]]], + caml_string_of_jsbytes("VariableDefinition([ %s ], %s)")], + _aa_= + [0, + [11, + caml_string_of_jsbytes("DecisionTaken("), + [2, + 0, + [12, + 58, + [4, + 0, + 0, + 0, + [12,46,[4,0,0,0,[12,45,[4,0,0,0,[12,46,[4,0,0,0,partial$8]]]]]]]]]], + caml_string_of_jsbytes("DecisionTaken(%s:%d.%d-%d.%d)")], + _r_=[0,-976970511,caml_string_of_jsbytes("VarComputation")], + _s_=[0,-976970511,caml_string_of_jsbytes("FunCall")], + _t_=[0,-976970511,caml_string_of_jsbytes("SubScopeCall")], + _g_=[0,848054398,[0,[0,-976970511,caml_string_of_jsbytes("Unit")],0]], + _h_= + [0, + 848054398, + [0,[0,-976970511,caml_string_of_jsbytes("Unembeddable")],0]], + _i_=[0,-976970511,caml_string_of_jsbytes("Bool")], + _j_=[0,-976970511,caml_string_of_jsbytes("Money")], + _k_=[0,-976970511,caml_string_of_jsbytes("Integer")], + _l_=[0,-976970511,caml_string_of_jsbytes("Decimal")], + _m_=[0,-976970511,caml_string_of_jsbytes("Date")], + _n_=[0,-976970511,caml_string_of_jsbytes("Duration")], + _o_=[0,-976970511,caml_string_of_jsbytes("Enum")], + _p_=[0,-976970511,caml_string_of_jsbytes("Struct")], + _q_=[0,-976970511,caml_string_of_jsbytes("Array")], + _f_=[0,[15,0],caml_string_of_jsbytes("%a")], + _e_=[0,[15,0],caml_string_of_jsbytes("%a")], + _c_=[0,[15,0],caml_string_of_jsbytes("%a")], + _b_=[0,-1014801911,0], + _d_= + [0,[2,0,[15,[12,46,[15,[2,0,0]]]]],caml_string_of_jsbytes("%s%a.%a%s")], + _a_=[0,[8,[0,0,0],0,[0,2],0],caml_string_of_jsbytes("%.2f")]; + function yojson_of_source_position(param) + {var + v_law_headings=param[6], + v_end_column=param[5], + v_end_line=param[4], + v_start_column=param[3], + v_start_line=param[2], + v_filename=param[1], + arg= + caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][14], + Ppx_yojson_conv_lib_Yojson_con[45][3], + v_law_headings), + bnds=[0,[0,cst_law_headings,arg],0], + arg$0=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_end_column), + bnds$0=[0,[0,cst_end_column,arg$0],bnds], + arg$1=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_end_line), + bnds$1=[0,[0,cst_end_line,arg$1],bnds$0], + arg$2=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_start_column), + bnds$2=[0,[0,cst_start_column,arg$2],bnds$1], + arg$3=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_start_line), + bnds$3=[0,[0,cst_start_line,arg$3],bnds$2], + arg$4=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][3],v_filename), + bnds$4=[0,[0,cst_filename,arg$4],bnds$3]; + return [0,963043957,bnds$4]} + var + EmptyError=[248,cst_Runtime_ocaml_Runtime_Empt,caml_fresh_oo_id(0)], + AssertionFailed=[248,cst_Runtime_ocaml_Runtime_Asse,caml_fresh_oo_id(0)], + ConflictError=[248,cst_Runtime_ocaml_Runtime_Conf,caml_fresh_oo_id(0)], + UncomparableDurations= + [248,cst_Runtime_ocaml_Runtime_Unco,caml_fresh_oo_id(0)], + IndivisableDurations= + [248,cst_Runtime_ocaml_Runtime_Indi,caml_fresh_oo_id(0)], + ImpossibleDate=[248,cst_Runtime_ocaml_Runtime_Impo,caml_fresh_oo_id(0)], + NoValueProvided=[248,cst_Runtime_ocaml_Runtime_NoVa,caml_fresh_oo_id(0)]; + function money_of_cents_string(cents){return caml_call1(Z[5],cents)} + function money_of_units_int(units){return caml_call2(Z[54],units,100)} + function money_of_cents_integer(cents){return cents} + function money_to_float(m){return caml_call1(Z[30],m) / 100.} + function money_of_decimal(d) + {var _cH_=caml_call1(Q[9],100),_cI_=caml_call2(Q[40],d,_cH_); + return caml_call1(Q[29],_cI_)} + function money_to_string(m) + {var + _cD_=caml_call1(Q[9],100), + _cE_=caml_call1(Q[8],m), + _cF_=caml_call2(Q[55],_cE_,_cD_), + _cG_=caml_call1(Q[35],_cF_); + return caml_call2(Stdlib_Format[133],_a_,_cG_)} + function money_to_cents(m){return m} + function money_round(m) + {var match=runtime.ml_z_div_rem(m,100),cents=match[2],units=match[1]; + if(runtime.caml_lessthan(caml_call1(Z[10],cents),50)) + return caml_call2(Z[54],units,100); + var _cB_=runtime.ml_z_sign(units),_cC_=caml_call2(Z[52],units,_cB_); + return caml_call2(Z[54],_cC_,100)} + function decimal_of_string(d){return caml_call1(Q[15],d)} + function decimal_to_float(d){return caml_call1(Q[35],d)} + function decimal_of_float(d){return caml_call1(Q[14],d)} + function decimal_of_integer(d){return caml_call1(Q[8],d)} + function decimal_to_string(max_prec_digits,i) + {var + sign=caml_call1(Q[20],i), + _co_=caml_call1(Q[16],i), + n=caml_call1(Z[10],_co_), + _cp_=caml_call1(Q[17],i), + d=caml_call1(Z[10],_cp_), + int_part=caml_call2(Z[18],n,d), + n$0=[0,caml_call2(Z[19],n,d)], + digits=[0,0]; + function leading_zeroes(digits) + {function _cA_(digit,num_leading_zeroes) + {if(3455931 <= num_leading_zeroes[1])return num_leading_zeroes; + var i=num_leading_zeroes[2]; + return caml_equal(digit,Z[2]) + ?[0,-1014801911,i + 1 | 0] + :[0,3455931,i]} + var match=caml_call3(Stdlib_List[26],_cA_,digits,_b_); + if(3455931 <= match[1]){var i=match[2];return i} + var i$0=match[2]; + return i$0} + for(;;) + {if(runtime.caml_notequal(n$0[1],Z[2])) + {var _cq_=leading_zeroes(digits[1]); + if + ((caml_call1(Stdlib_List[1],digits[1]) - _cq_ | 0) + < + max_prec_digits) + {n$0[1] = caml_call2(Z[14],n$0[1],10); + var _cr_=digits[1]; + digits[1] = [0,caml_call2(Z[18],n$0[1],d),_cr_]; + n$0[1] = caml_call2(Z[19],n$0[1],d); + continue}} + var + _cs_=leading_zeroes(digits[1]), + _ct_= + (caml_call1(Stdlib_List[1],digits[1]) - _cs_ | 0) + === + max_prec_digits + ?cst + :cst$2, + _cu_=caml_call1(Stdlib_List[9],digits[1]), + _cv_= + function(fmt,digit) + {return caml_call4(Stdlib_Format[129],fmt,_c_,Z[36],digit)}, + _cw_=[0,function(fmt,param){return 0}], + _cx_=caml_call2(Stdlib_Format[123],_cw_,_cv_), + _cy_=Z[36], + _cz_=0 <= sign?cst$0:cst$1; + return caml_call7 + (Stdlib_Format[133],_d_,_cz_,_cy_,int_part,_cx_,_cu_,_ct_)}} + function decimal_round(q) + {var + n=caml_call1(Q[16],q), + d=caml_call1(Q[17],q), + _cl_=caml_call2(Z[54],2,d), + _cm_=caml_call2(Z[54],2,n), + _cn_=runtime.ml_z_fdiv(caml_call2(Z[52],_cm_,d),_cl_); + return caml_call1(Q[8],_cn_)} + function decimal_of_money(m) + {var _cj_=caml_call1(Q[9],100),_ck_=caml_call1(Q[8],m); + return caml_call2(Q[42],_ck_,_cj_)} + function integer_of_string(s){return caml_call1(Z[5],s)} + function integer_to_string(i){return caml_call1(Z[31],i)} + function integer_to_int(i){return caml_call1(Z[29],i)} + function integer_of_int(i){return i} + function integer_exponentiation(i,e){return runtime.ml_z_pow(i,e)} + var integer_log2=Z[47]; + function year_of_date(d) + {var match=caml_call1(Dates_calc_Dates[7],d),y=match[1];return y} + function month_number_of_date(d) + {var match=caml_call1(Dates_calc_Dates[7],d),m=match[2];return m} + function is_leap_year(y) + {var y$0=caml_call1(Z[29],y);return caml_call1(Dates_calc_Dates[11],y$0)} + function day_of_month_of_date(d) + {var match=caml_call1(Dates_calc_Dates[7],d),d$0=match[3];return d$0} + function date_of_numbers(year,month,day) + {try + {var _ch_=caml_call3(Dates_calc_Dates[3],year,month,day);return _ch_} + catch(_ci_){throw ImpossibleDate}} + function date_to_string(d) + {return caml_call3(Stdlib_Format[133],_e_,Dates_calc_Dates[8],d)} + var + first_day_of_month=Dates_calc_Dates[9], + last_day_of_month=Dates_calc_Dates[10]; + function duration_of_numbers(year,month,day) + {return caml_call3(Dates_calc_Dates[12],year,month,day)} + function duration_to_string(d) + {return caml_call3(Stdlib_Format[133],_f_,Dates_calc_Dates[17],d)} + function duration_to_years_months_days(d) + {return caml_call1(Dates_calc_Dates[19],d)} + function yojson_of_runtime_value(param) + {if(typeof param === "number") + return 0 === param?_g_:_h_; + else + switch(param[0]) + {case 0: + var + v0$4=param[1], + v0$5=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][2],v0$4); + return [0,848054398,[0,_i_,[0,v0$5,0]]]; + case 1: + var v0$6=param[1],v0=[0,365180284,money_to_float(v0$6)]; + return [0,848054398,[0,_j_,[0,v0,0]]]; + case 2: + var v0$7=param[1],v0$0=[0,3654863,integer_to_int(v0$7)]; + return [0,848054398,[0,_k_,[0,v0$0,0]]]; + case 3: + var v0$8=param[1],v0$1=[0,365180284,decimal_to_float(v0$8)]; + return [0,848054398,[0,_l_,[0,v0$1,0]]]; + case 4: + var v0$9=param[1],v0$2=[0,-976970511,date_to_string(v0$9)]; + return [0,848054398,[0,_m_,[0,v0$2,0]]]; + case 5: + var v0$10=param[1],v0$3=[0,-976970511,duration_to_string(v0$10)]; + return [0,848054398,[0,_n_,[0,v0$3,0]]]; + case 6: + var + v1=param[2], + v0$11=param[1], + v0$12= + caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][14], + Ppx_yojson_conv_lib_Yojson_con[45][3], + v0$11), + v1$0=v1[2], + v0$13=v1[1], + v0$14=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][3],v0$13), + v1$1=yojson_of_runtime_value(v1$0), + v1$2=[0,848054398,[0,v0$14,[0,v1$1,0]]]; + return [0,848054398,[0,_o_,[0,v0$12,[0,v1$2,0]]]]; + case 7: + var + v1$3=param[2], + v0$15=param[1], + v0$16= + caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][14], + Ppx_yojson_conv_lib_Yojson_con[45][3], + v0$15), + _cg_= + function(param) + {var + v1=param[2], + v0=param[1], + v0$0=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][3],v0), + v1$0=yojson_of_runtime_value(v1); + return [0,848054398,[0,v0$0,[0,v1$0,0]]]}, + v1$4=caml_call2(Ppx_yojson_conv_lib_Yojson_con[45][14],_cg_,v1$3); + return [0,848054398,[0,_p_,[0,v0$16,[0,v1$4,0]]]]; + default: + var + v0$17=param[1], + v0$18= + caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][15], + yojson_of_runtime_value, + v0$17); + return [0,848054398,[0,_q_,[0,v0$18,0]]]}} + function unembeddable(param){return 1} + function embed_unit(param){return 0} + function embed_bool(x){return [0,x]} + function embed_money(x){return [1,x]} + function embed_integer(x){return [2,x]} + function embed_decimal(x){return [3,x]} + function embed_date(x){return [4,x]} + function embed_duration(x){return [5,x]} + function embed_array(f,x){return [8,caml_call2(Stdlib_Array[15],f,x)]} + function yojson_of_information(v) + {return caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][14], + Ppx_yojson_conv_lib_Yojson_con[45][3], + v)} + function yojson_of_var_def(param) + {var + v_fun_calls=param[4], + v_value=param[3], + v_name=param[2], + v_pos=param[1], + _cf_= + caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][14],yojson_of_fun_call), + arg=caml_call2(Ppx_yojson_conv_lib_Yojson_con[45][13],_cf_,v_fun_calls), + bnds=[0,[0,cst_fun_calls,arg],0], + arg$0=yojson_of_runtime_value(v_value), + bnds$0=[0,[0,cst_value,arg$0],bnds], + arg$1=yojson_of_information(v_name), + bnds$1=[0,[0,cst_name$0,arg$1],bnds$0], + arg$2= + caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][13], + yojson_of_source_position, + v_pos), + bnds$2=[0,[0,cst_pos,arg$2],bnds$1]; + return [0,963043957,bnds$2]} + function yojson_of_fun_call(param) + {var + v_output=param[4], + v_body=param[3], + v_input=param[2], + v_fun_name=param[1], + arg=yojson_of_var_def(v_output), + bnds=[0,[0,cst_output,arg],0], + arg$0= + caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][14],yojson_of_event,v_body), + bnds$0=[0,[0,cst_body$0,arg$0],bnds], + arg$1=yojson_of_var_def(v_input), + bnds$1=[0,[0,cst_input,arg$1],bnds$0], + 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,_r_,[0,v0$0,0]]]; + case 1: + var v0$1=param[1],v0$2=yojson_of_fun_call(v0$1); + return [0,848054398,[0,_s_,[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,_t_,[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])} + function log_begin_call(info,f) + {log_ref[1] = [0,[0,info],log_ref[1]];return f} + function log_end_call(info,x) + {log_ref[1] = [0,[1,info],log_ref[1]];return x} + function log_variable_definition(info,embed,x) + {var _ce_=log_ref[1]; + log_ref[1] = [0,[2,info,caml_call1(embed,x)],_ce_]; + return x} + function log_decision_taken(pos,x) + {if(x)log_ref[1] = [0,[3,pos],log_ref[1]];return x} + function pp_events(opt,ppf,events) + {if(opt)var sth=opt[1],is_first_call=sth;else var is_first_call=1; + function format_var_def(ppf,var$0) + {var _cc_=var$0[3],_cd_=caml_call2(Stdlib_String[6],cst$3,var$0[2]); + return caml_call7 + (Stdlib_Format[129], + ppf, + _u_, + format_pos_opt, + var$0[1], + _cd_, + format_value, + _cc_)} + function format_pos_opt(ppf,param) + {if(param) + {var pos=param[1]; + return caml_call5(Stdlib_Format[129],ppf,_v_,pos[1],pos[2],pos[4])} + return caml_call2(Stdlib_Format[129],ppf,_w_)} + function format_var_defs(ppf) + {var + _cb_= + [0, + function(ppf,param){return caml_call2(Stdlib_Format[129],ppf,_x_)}]; + return caml_call3(Stdlib_Format[123],_cb_,format_var_def,ppf)} + function format_var_def_with_fun_calls(ppf,var_with_fun) + {var _b6_=var_with_fun[4]; + if(_b6_) + {var _b7_=_b6_[1]; + if(_b7_) + {var + _b8_= + function(ppf,fun_call){return format_event(ppf,[1,fun_call])}, + _b9_= + [0, + function(ppf,param) + {return caml_call2(Stdlib_Format[129],ppf,_y_)}], + _b__=caml_call2(Stdlib_Format[123],_b9_,_b8_), + _b$_=var_with_fun[3], + _ca_=caml_call2(Stdlib_String[6],cst$4,var_with_fun[2]); + return caml_call7 + (Stdlib_Format[129], + ppf, + _z_, + _ca_, + format_value, + _b$_, + _b__, + _b7_)}} + return format_var_def(ppf,var_with_fun)} + function format_value(ppf,param) + {if(typeof param === "number") + return 0 === param + ?caml_call2(Stdlib_Format[129],ppf,_A_) + :caml_call2(Stdlib_Format[129],ppf,_B_); + else + switch(param[0]) + {case 0: + var x=param[1];return caml_call3(Stdlib_Format[129],ppf,_C_,x); + case 1: + var x$0=param[1],_bU_=money_to_string(x$0); + return caml_call3(Stdlib_Format[129],ppf,_D_,_bU_); + case 2: + var x$1=param[1],_bV_=integer_to_int(x$1); + return caml_call3(Stdlib_Format[129],ppf,_E_,_bV_); + case 3: + var x$2=param[1],_bW_=decimal_to_string(10,x$2); + return caml_call3(Stdlib_Format[129],ppf,_F_,_bW_); + case 4: + var x$3=param[1],_bX_=date_to_string(x$3); + return caml_call3(Stdlib_Format[129],ppf,_G_,_bX_); + case 5: + var x$4=param[1],_bY_=duration_to_string(x$4); + return caml_call3(Stdlib_Format[129],ppf,_H_,_bY_); + case 6: + var match=param[2],name=match[1]; + return caml_call3(Stdlib_Format[129],ppf,_I_,name); + case 7: + var + attrs=param[2], + name$0=param[1], + _bZ_= + function(fmt,param) + {var value=param[2],name=param[1]; + return caml_call5 + (Stdlib_Format[129],fmt,_J_,name,format_value,value)}, + _b0_= + [0, + function(ppf,param) + {return caml_call2(Stdlib_Format[129],ppf,_K_)}], + _b1_=caml_call2(Stdlib_Format[123],_b0_,_bZ_), + _b2_=caml_call2(Stdlib_String[6],cst$5,name$0); + return caml_call5(Stdlib_Format[129],ppf,_L_,_b2_,_b1_,attrs); + default: + var + elts=param[1], + _b3_=caml_call1(Stdlib_Array[11],elts), + _b4_= + [0, + function(ppf,param) + {return caml_call2(Stdlib_Format[129],ppf,_M_)}], + _b5_=caml_call2(Stdlib_Format[123],_b4_,format_value); + return caml_call4(Stdlib_Format[129],ppf,_N_,_b5_,_b3_)}} + function format_event(ppf,param) + {switch(param[0]) + {case 0: + var var_def_with_fun=param[1]; + return caml_call1(Stdlib_Option[11],var_def_with_fun[4]) + ?caml_call4 + (Stdlib_Format[129], + ppf, + _O_, + format_var_def_with_fun_calls, + var_def_with_fun) + :caml_call4 + (Stdlib_Format[129],ppf,_P_,format_var_def,var_def_with_fun); + case 1: + var + match=param[1], + output=match[4], + body=match[3], + input=match[2], + fun_name=match[1], + _bM_=function(_bQ_,_bR_){return pp_events(_Q_,_bQ_,_bR_)}, + _bN_=caml_call2(Stdlib_String[6],cst$6,fun_name); + return caml_call9 + (Stdlib_Format[129], + ppf, + _R_, + _bN_, + format_var_def, + input, + format_var_def_with_fun_calls, + output, + _bM_, + body); + default: + var + body$0=param[3], + inputs=param[2], + name=param[1], + _bO_=function(_bS_,_bT_){return pp_events(_S_,_bS_,_bT_)}, + _bP_=caml_call2(Stdlib_String[6],cst$7,name); + return caml_call7 + (Stdlib_Format[129], + ppf, + _T_, + _bP_, + format_var_defs, + inputs, + _bO_, + body$0)}} + var + _bI_= + [0,function(ppf,param){return caml_call2(Stdlib_Format[129],ppf,_U_)}], + _bJ_=caml_call2(Stdlib_Format[123],_bI_,format_event), + _bK_=is_first_call?_V_:_X_, + _bL_=caml_call2(Stdlib[98],_W_,_bK_); + return caml_call4(Stdlib_Format[129],ppf,_bL_,_bJ_,events)} + var + StringMap=caml_call1(Stdlib_Map[1],[0,Stdlib_String[9]]), + empty=StringMap[1], + empty_ctx=[0,empty,0,0], + _Y_=0; + function raw_event_to_string(param) + {switch(param[0]) + {case 0: + var + name=param[1], + _bz_=caml_call2(Stdlib_String[6],cst$9,name), + _bA_=caml_call2(Stdlib[28],_bz_,cst$8), + _bB_=caml_call1(Stdlib_Printf[4],_Z_); + return caml_call2(Stdlib[28],_bB_,_bA_); + case 1: + var + name$0=param[1], + _bC_=caml_call2(Stdlib_String[6],cst$11,name$0), + _bD_=caml_call2(Stdlib[28],_bC_,cst$10), + _bE_=caml_call1(Stdlib_Printf[4],___); + return caml_call2(Stdlib[28],_bE_,_bD_); + case 2: + var + value=param[2], + name$1=param[1], + _bF_=yojson_of_runtime_value(value), + _bG_=caml_call4(Yojson[11][5],0,0,0,_bF_), + _bH_=caml_call2(Stdlib_String[6],cst$12,name$1); + return caml_call3(Stdlib_Printf[4],_$_,_bH_,_bG_); + default: + var pos=param[1]; + return caml_call6 + (Stdlib_Printf[4],_aa_,pos[1],pos[2],pos[3],pos[4],pos[5])}} + function parse_raw_events(raw_events) + {var nb_raw_events=caml_call1(Stdlib_List[1],raw_events); + function is_function_call(infos) + {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) + {if(events) + {var _bv_=events[1]; + if(2 === _bv_[0]) + {var _bw_=events[2]; + if(_bw_) + {var _bx_=_bw_[1]; + if(0 === _bx_[0]) + {var rest=_bw_[2],infos=_bx_[1],value=_bv_[2],name=_bv_[1]; + if(is_function_call(infos)) + {var + _bt_=3 === caml_call1(Stdlib_List[1],name)?1:0, + _bu_= + _bt_ + ?caml_string_equal + (cst_input$0,caml_call2(Stdlib_List[7],name,2)) + :_bt_; + if(_bu_) + {var + 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), + _by_=caml_call1(Stdlib_List[6],body_rev), + body=caml_call1(Stdlib_List[9],_by_), + 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,[0,0,name,value,0],body,output$0]]}}}}}} + return caml_call1(Stdlib[2],cst_Invalid_start_of_function_)} + function parse_events(ctx) + {var ctx$0=ctx; + a: + for(;;) + {var _aU_=ctx$0[3]; + if(_aU_) + {var _aV_=_aU_[1]; + switch(_aV_[0]) + {case 0: + var rest=_aU_[2],infos=_aV_[1]; + if(3 === caml_call1(Stdlib_List[1],infos)) + {if(infos) + {var _aW_=infos[2]; + if(_aW_) + {var _aX_=_aW_[2]; + if(_aX_ && ! _aX_[2]) + {var + var_name=_aW_[1], + body_ctx=parse_events([0,empty,_Y_,rest]), + match$0=caml_call2(StringMap[29],var_name,ctx$0[1]); + if(match$0) + var ls$0=match$0[1],inputs=ls$0; + else + var inputs=0; + var + ctx$1= + [0, + ctx$0[1], + [0,[2,infos,inputs,body_ctx[2]],ctx$0[2]], + body_ctx[3]], + ctx$0=ctx$1; + continue}}} + return caml_call1(Stdlib[2],cst_unreachable_due_to_the_is_)} + break; + case 1: + var rest$0=_aU_[2],_a0_=caml_call1(Stdlib_List[9],ctx$0[2]); + return [0,ctx$0[1],_a0_,rest$0]; + case 2: + var rest$1=_aU_[2],name=_aV_[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 _a1_=rest$1[1]; + if(0 === _a1_[0]) + {var infos$0=_a1_[1]; + if(is_function_call(infos$0)) + {var + match$1=parse_fun_call(ctx$0[3]), + fun_call=match$1[2], + rest$2=match$1[1], + ctx$3=[0,ctx$0[1],[0,[1,fun_call],ctx$0[2]],rest$2], + ctx$0=ctx$3; + continue}}} + break; + default: + var _a2_=_aU_[2]; + if(_a2_) + {var _a3_=_a2_[1]; + if(2 === _a3_[0]) + {var + rest$3=_a2_[2], + value=_a3_[2], + name$0=_a3_[1], + pos=_aV_[1], + _aS_=2 === caml_call1(Stdlib_List[1],name$0)?1:0; + if(_aS_) + var + _aT_=caml_call2(Stdlib_List[7],name$0,1), + _a4_=caml_call2(Stdlib_String[14],_aT_,46); + else + var _a4_=_aS_; + if(_a4_) + {if(name$0) + {var _a5_=name$0[2]; + if(_a5_ && ! _a5_[2]) + {var + var_dot_subscope_var_name=_a5_[1], + _a6_= + caml_call2(Stdlib_String[16],46,var_dot_subscope_var_name), + name$1=caml_call2(Stdlib_List[7],_a6_,0), + _a8_=ctx$0[1], + v=[0,[0,pos],name$0,value,0], + _a7_=ctx$0[2], + match=caml_call2(StringMap[29],name$1,_a8_); + if(match) + var + ls=match[1], + _bs_=caml_call3(StringMap[4],name$1,[0,v,ls],_a8_); + else + var _bs_=caml_call3(StringMap[4],name$1,[0,v,0],_a8_); + var ctx$4=[0,_bs_,_a7_,rest$3],ctx$0=ctx$4; + continue}} + return caml_call1 + (Stdlib[2],cst_unreachable_due_to_the_is_$0)} + var switch$0=0; + if(is_var_def(name$0)) + switch$0 = 1; + else + {var + _aQ_=3 === caml_call1(Stdlib_List[1],name$0)?1:0, + _aR_= + _aQ_ + ?caml_string_equal + (cst_output$0,caml_call2(Stdlib_List[7],name$0,2)) + :_aQ_; + if(_aR_) + switch$0 = 1; + else + if(rest$3) + {var _a9_=rest$3[1]; + if(0 === _a9_[0]) + {var infos$1=_a9_[1]; + if(is_function_call(infos$1)) + {var + raw_events$0=caml_call1(Stdlib_List[6],ctx$0[3]), + fun_calls=0, + rest$4=raw_events$0; + for(;;) + {if(rest$4 && 2 === rest$4[1][0]) + {var _a__=rest$4[2]; + if(_a__) + {var _a$_=_a__[1]; + if(0 === _a$_[0]) + {var infos$2=_a$_[1]; + if(is_function_call(infos$2)) + {var + match$2=parse_fun_call(rest$4), + fun_call$0=match$2[2], + raw_events=match$2[1], + fun_calls$1=[0,fun_call$0,fun_calls], + fun_calls=fun_calls$1, + rest$4=raw_events; + continue}}}} + var fun_calls$0=caml_call1(Stdlib_List[9],fun_calls); + if(rest$4) + {var _ba_=rest$4[1]; + if(2 === _ba_[0]) + var + rest$6=rest$4[2], + value$0=_ba_[2], + name$2=_ba_[1], + var_comp=[0,[0,[0,pos],name$2,value$0,[0,fun_calls$0]]], + rest$5=rest$6; + else + var + _bb_= + (nb_raw_events - caml_call1(Stdlib_List[1],rest$4) | 0) + + + 1 + | + 0, + _bc_=caml_call1(Stdlib[33],_bb_), + _bd_=caml_call2(Stdlib[28],_bc_,cst$13), + _be_=caml_call2(Stdlib[28],cst$14,_bd_), + _bf_=raw_event_to_string(_ba_), + _bg_=caml_call2(Stdlib[28],_bf_,_be_), + _bh_= + caml_call2(Stdlib[28],cst_expected_variable_definiti,_bg_), + _bi_=caml_call2(Stdlib_String[6],cst$15,infos$1), + _bj_=caml_call2(Stdlib[28],_bi_,_bh_), + _bk_=caml_call2(Stdlib[28],cst_Invalid_function_call,_bj_), + _bl_=caml_call1(Stdlib[2],_bk_), + var_comp=_bl_[2], + rest$5=_bl_[1]} + else + var + _bm_=caml_call2(Stdlib_String[6],cst$16,infos$1), + _bn_= + caml_call2(Stdlib[28],_bm_,cst_expected_variable_definiti$0), + _bo_=caml_call2(Stdlib[28],cst_Invalid_function_call$0,_bn_), + _bp_=caml_call1(Stdlib[2],_bo_), + var_comp=_bp_[2], + rest$5=_bp_[1]; + var + ctx$6=[0,ctx$0[1],[0,var_comp,ctx$0[2]],rest$5], + ctx$0=ctx$6; + continue a}}}}} + if(switch$0) + {var + ctx$5= + [0, + ctx$0[1], + [0,[0,[0,[0,pos],name$0,value,0]],ctx$0[2]], + rest$3], + ctx$0=ctx$5; + continue}}}} + var + _aY_=raw_event_to_string(_aV_), + _aZ_=caml_call2(Stdlib[28],cst_Unexpected_event,_aY_); + return caml_call1(Stdlib[2],_aZ_)} + var _bq_=ctx$0[3],_br_=caml_call1(Stdlib_List[9],ctx$0[2]); + return [0,ctx$0[1],_br_,_bq_]}} + try + {var _aP_=parse_events([0,empty,_Y_,raw_events]),ctx=_aP_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] !== Stdlib[7])throw exn; + var msg=exn[2]; + caml_call2(Stdlib_Printf[3],_ab_,msg); + var ctx=empty_ctx} + return ctx[2]} + function handle_default(pos,exceptions,just,cons) + {var _aL_=0; + function _aM_(acc,except) + {try + {var _aN_=[0,caml_call1(except,0)],new_val=_aN_} + catch(_aO_) + {_aO_ = caml_wrap_exception(_aO_); + if(_aO_ !== EmptyError)throw _aO_; + var new_val=0} + if(acc){if(new_val)throw [0,ConflictError,pos];return acc} + return new_val} + var except=caml_call3(Stdlib_Array[17],_aM_,_aL_,exceptions); + if(except){var x=except[1];return x} + if(caml_call1(just,0))return caml_call1(cons,0); + throw EmptyError} + function handle_default_opt(pos,exceptions,just,cons) + {function _aK_(acc,except) + {if(0 === acc[0])return except; + if(0 === except[0])return acc; + throw [0,ConflictError,pos]} + var except=caml_call3(Stdlib_Array[17],_aK_,_ac_,exceptions); + if(0 === except[0]) + {if(0 === just[0])return _ad_;var b=just[1];return b?cons:_ae_} + return except} + function no_input(param){throw EmptyError} + function compare_periods(p1,p2) + {try + {var + p1_days=caml_call1(Dates_calc_Dates[18],p1), + p2_days=caml_call1(Dates_calc_Dates[18],p2), + _aI_=runtime.caml_int_compare(p1_days,p2_days); + return _aI_} + catch(_aJ_) + {_aJ_ = caml_wrap_exception(_aJ_); + if(_aJ_ === Dates_calc_Dates[2])throw UncomparableDurations; + throw _aJ_}} + function equal_periods(p1,p2) + {try + {var + _aF_=caml_call2(Dates_calc_Dates[15],p1,p2), + _aG_=0 === caml_call1(Dates_calc_Dates[18],_aF_)?1:0; + return _aG_} + catch(_aH_) + {_aH_ = caml_wrap_exception(_aH_); + if(_aH_ === Dates_calc_Dates[2])throw UncomparableDurations; + throw _aH_}} + function o_not(_aE_){return 1 - _aE_} + function o_length(a){return a.length - 1} + function o_minus_int(i1){return caml_call2(Z[13],Z[2],i1)} + function o_minus_rat(i1){return caml_call2(Q[39],Q[2],i1)} + function o_minus_mon(m1){return caml_call2(Z[13],Z[2],m1)} + var o_minus_dur=Dates_calc_Dates[13]; + function o_and(_aC_,_aB_){var _aD_=_aC_?_aB_:_aC_;return _aD_} + function o_or(_az_,_ay_){var _aA_=_az_ || _ay_;return _aA_} + function o_xor(_ax_,_aw_){return _ax_ !== _aw_?1:0} + var o_eq=caml_equal,o_map=Stdlib_Array[15]; + function o_reduce(f,dft,a) + {var len=a.length - 1; + if(0 === len)return dft; + var r=[0,caml_check_bound(a,0)[1]],_at_=len - 1 | 0,_as_=1; + if(! (_at_ < 1)) + {var i=_as_; + for(;;) + {var _au_=caml_check_bound(a,i)[1 + i]; + r[1] = caml_call2(f,r[1],_au_); + var _av_=i + 1 | 0; + if(_at_ !== i){var i=_av_;continue} + break}} + return r[1]} + var o_concat=Stdlib_Array[5]; + function o_filter(f,a) + {var + _aq_=caml_call1(Stdlib_Array[11],a), + _ar_=caml_call2(Stdlib_List[41],f,_aq_); + return caml_call1(Stdlib_Array[12],_ar_)} + function o_add_int_int(i1,i2){return caml_call2(Z[12],i1,i2)} + function o_add_rat_rat(i1,i2){return caml_call2(Q[38],i1,i2)} + function o_add_mon_mon(m1,m2){return caml_call2(Z[12],m1,m2)} + function o_add_dat_dur(da,du) + {return caml_call3(Dates_calc_Dates[4],0,da,du)} + var o_add_dur_dur=Dates_calc_Dates[14]; + function o_sub_int_int(i1,i2){return caml_call2(Z[13],i1,i2)} + function o_sub_rat_rat(i1,i2){return caml_call2(Q[39],i1,i2)} + function o_sub_mon_mon(m1,m2){return caml_call2(Z[13],m1,m2)} + var o_sub_dat_dat=Dates_calc_Dates[5]; + function o_sub_dat_dur(dat,dur) + {var _ap_=caml_call1(Dates_calc_Dates[13],dur); + return caml_call3(Dates_calc_Dates[4],0,dat,_ap_)} + var o_sub_dur_dur=Dates_calc_Dates[15]; + function o_mult_int_int(i1,i2){return caml_call2(Z[14],i1,i2)} + function o_mult_rat_rat(i1,i2){return caml_call2(Q[40],i1,i2)} + function o_mult_mon_rat(i1,i2) + {var + i1_abs=caml_call1(Z[10],i1), + i2_abs=caml_call1(Q[37],i2), + _ak_=caml_call1(Q[20],i2), + sign_int=runtime.caml_mul(runtime.ml_z_sign(i1),_ak_), + _al_=caml_call1(Q[8],i1_abs), + rat_result=caml_call2(Q[40],_al_,i2_abs), + _am_=caml_call1(Q[17],rat_result), + match=runtime.ml_z_div_rem(caml_call1(Q[16],rat_result),_am_), + remainder=match[2], + res=match[1], + _an_=caml_call1(Q[17],rat_result); + if(runtime.caml_greaterequal(caml_call2(Z[54],2,remainder),_an_)) + {var _ao_=caml_call2(Z[12],res,1); + return caml_call2(Z[54],_ao_,sign_int)} + return caml_call2(Z[54],res,sign_int)} + function o_mult_dur_int(d,m) + {var _aj_=caml_call1(Z[29],m); + return caml_call2(Dates_calc_Dates[16],d,_aj_)} + function o_div_int_int(i1,i2) + {if(caml_equal(Z[2],i2))throw Stdlib[13]; + var _ah_=caml_call1(Q[8],i2),_ai_=caml_call1(Q[8],i1); + return caml_call2(Q[42],_ai_,_ah_)} + function o_div_rat_rat(i1,i2) + {if(caml_equal(Q[2],i2))throw Stdlib[13];return caml_call2(Q[42],i1,i2)} + function o_div_mon_mon(m1,m2) + {if(caml_equal(Z[2],m2))throw Stdlib[13]; + var _af_=caml_call1(Q[8],m2),_ag_=caml_call1(Q[8],m1); + return caml_call2(Q[42],_ag_,_af_)} + function o_div_mon_rat(m1,r1) + {if(caml_equal(Q[2],r1))throw Stdlib[13]; + return o_mult_mon_rat(m1,caml_call1(Q[41],r1))} + function o_lt_int_int(i1,i2){return runtime.ml_z_compare(i1,i2) < 0?1:0} + function o_lt_rat_rat(i1,i2){return caml_call2(Q[21],i1,i2) < 0?1:0} + function o_lt_mon_mon(m1,m2){return runtime.ml_z_compare(m1,m2) < 0?1:0} + function o_lt_dur_dur(d1,d2){return compare_periods(d1,d2) < 0?1:0} + function o_lt_dat_dat(d1,d2) + {return caml_call2(Dates_calc_Dates[6],d1,d2) < 0?1:0} + function o_lte_int_int(i1,i2){return runtime.ml_z_compare(i1,i2) <= 0?1:0} + function o_lte_rat_rat(i1,i2){return caml_call2(Q[21],i1,i2) <= 0?1:0} + function o_lte_mon_mon(m1,m2){return runtime.ml_z_compare(m1,m2) <= 0?1:0} + function o_lte_dur_dur(d1,d2){return compare_periods(d1,d2) <= 0?1:0} + function o_lte_dat_dat(d1,d2) + {return caml_call2(Dates_calc_Dates[6],d1,d2) <= 0?1:0} + function o_gt_int_int(i1,i2){return 0 < runtime.ml_z_compare(i1,i2)?1:0} + function o_gt_rat_rat(i1,i2){return 0 < caml_call2(Q[21],i1,i2)?1:0} + function o_gt_mon_mon(m1,m2){return 0 < runtime.ml_z_compare(m1,m2)?1:0} + function o_gt_dur_dur(d1,d2){return 0 < compare_periods(d1,d2)?1:0} + function o_gt_dat_dat(d1,d2) + {return 0 < caml_call2(Dates_calc_Dates[6],d1,d2)?1:0} + function o_gte_int_int(i1,i2){return 0 <= runtime.ml_z_compare(i1,i2)?1:0} + function o_gte_rat_rat(i1,i2){return 0 <= caml_call2(Q[21],i1,i2)?1:0} + function o_gte_mon_mon(m1,m2){return 0 <= runtime.ml_z_compare(m1,m2)?1:0} + function o_gte_dur_dur(d1,d2){return 0 <= compare_periods(d1,d2)?1:0} + function o_gte_dat_dat(d1,d2) + {return 0 <= caml_call2(Dates_calc_Dates[6],d1,d2)?1:0} + function o_eq_int_int(i1,i2){return runtime.ml_z_equal(i1,i2)} + function o_eq_rat_rat(i1,i2){return caml_call2(Q[22],i1,i2)} + function o_eq_mon_mon(m1,m2){return runtime.ml_z_equal(m1,m2)} + function o_eq_dur_dur(d1,d2){return equal_periods(d1,d2)} + function o_eq_dat_dat(d1,d2) + {return 0 === caml_call2(Dates_calc_Dates[6],d1,d2)?1:0} + var + o_fold=Stdlib_Array[17], + Oper= + [0, + o_not, + o_length, + decimal_of_integer, + decimal_of_money, + money_of_decimal, + day_of_month_of_date, + month_number_of_date, + year_of_date, + first_day_of_month, + last_day_of_month, + money_round, + decimal_round, + o_minus_int, + o_minus_rat, + o_minus_mon, + o_minus_dur, + o_and, + o_or, + o_xor, + o_eq, + o_map, + o_reduce, + o_concat, + o_filter, + o_add_int_int, + o_add_rat_rat, + o_add_mon_mon, + o_add_dat_dur, + o_add_dur_dur, + o_sub_int_int, + o_sub_rat_rat, + o_sub_mon_mon, + o_sub_dat_dat, + o_sub_dat_dur, + o_sub_dur_dur, + o_mult_int_int, + o_mult_rat_rat, + o_mult_mon_rat, + o_mult_dur_int, + o_div_int_int, + o_div_rat_rat, + o_div_mon_mon, + o_div_mon_rat, + o_lt_int_int, + o_lt_rat_rat, + o_lt_mon_mon, + o_lt_dur_dur, + o_lt_dat_dat, + o_lte_int_int, + o_lte_rat_rat, + o_lte_mon_mon, + o_lte_dur_dur, + o_lte_dat_dat, + o_gt_int_int, + o_gt_rat_rat, + o_gt_mon_mon, + o_gt_dur_dur, + o_gt_dat_dat, + o_gte_int_int, + o_gte_rat_rat, + o_gte_mon_mon, + o_gte_dur_dur, + o_gte_dat_dat, + o_eq_int_int, + o_eq_rat_rat, + o_eq_mon_mon, + o_eq_dur_dur, + o_eq_dat_dat, + o_fold], + o_not$0=Oper[1], + o_length$0=Oper[2], + o_torat_int=Oper[3], + o_torat_mon=Oper[4], + o_tomoney_rat=Oper[5], + o_getDay=Oper[6], + o_getMonth=Oper[7], + o_getYear=Oper[8], + o_firstDayOfMonth=Oper[9], + o_lastDayOfMonth=Oper[10], + o_round_mon=Oper[11], + o_round_rat=Oper[12], + o_minus_int$0=Oper[13], + o_minus_rat$0=Oper[14], + o_minus_mon$0=Oper[15], + o_minus_dur$0=Oper[16], + o_and$0=Oper[17], + o_or$0=Oper[18], + o_xor$0=Oper[19], + o_eq$0=Oper[20], + o_map$0=Oper[21], + o_reduce$0=Oper[22], + o_concat$0=Oper[23], + o_filter$0=Oper[24], + o_add_int_int$0=Oper[25], + o_add_rat_rat$0=Oper[26], + o_add_mon_mon$0=Oper[27], + o_add_dat_dur$0=Oper[28], + o_add_dur_dur$0=Oper[29], + o_sub_int_int$0=Oper[30], + o_sub_rat_rat$0=Oper[31], + o_sub_mon_mon$0=Oper[32], + o_sub_dat_dat$0=Oper[33], + o_sub_dat_dur$0=Oper[34], + o_sub_dur_dur$0=Oper[35], + o_mult_int_int$0=Oper[36], + o_mult_rat_rat$0=Oper[37], + o_mult_mon_rat$0=Oper[38], + o_mult_dur_int$0=Oper[39], + o_div_int_int$0=Oper[40], + o_div_rat_rat$0=Oper[41], + o_div_mon_mon$0=Oper[42], + o_div_mon_rat$0=Oper[43], + o_lt_int_int$0=Oper[44], + o_lt_rat_rat$0=Oper[45], + o_lt_mon_mon$0=Oper[46], + o_lt_dur_dur$0=Oper[47], + o_lt_dat_dat$0=Oper[48], + o_lte_int_int$0=Oper[49], + o_lte_rat_rat$0=Oper[50], + o_lte_mon_mon$0=Oper[51], + o_lte_dur_dur$0=Oper[52], + o_lte_dat_dat$0=Oper[53], + o_gt_int_int$0=Oper[54], + o_gt_rat_rat$0=Oper[55], + o_gt_mon_mon$0=Oper[56], + o_gt_dur_dur$0=Oper[57], + o_gt_dat_dat$0=Oper[58], + o_gte_int_int$0=Oper[59], + o_gte_rat_rat$0=Oper[60], + o_gte_mon_mon$0=Oper[61], + o_gte_dur_dur$0=Oper[62], + o_gte_dat_dat$0=Oper[63], + o_eq_int_int$0=Oper[64], + o_eq_rat_rat$0=Oper[65], + o_eq_mon_mon$0=Oper[66], + o_eq_dur_dur$0=Oper[67], + o_eq_dat_dat$0=Oper[68], + o_fold$0=Oper[69], + Runtime_ocaml_Runtime= + [0, + yojson_of_source_position, + EmptyError, + AssertionFailed, + ConflictError, + UncomparableDurations, + IndivisableDurations, + ImpossibleDate, + NoValueProvided, + yojson_of_runtime_value, + unembeddable, + embed_unit, + embed_bool, + embed_money, + embed_integer, + embed_decimal, + embed_date, + embed_duration, + embed_array, + yojson_of_information, + yojson_of_event, + yojson_of_var_def, + yojson_of_fun_call, + retrieve_log, + [0,parse_raw_events], + reset_log, + log_begin_call, + log_end_call, + log_variable_definition, + log_decision_taken, + pp_events, + money_of_cents_string, + money_of_units_int, + money_of_decimal, + money_of_cents_integer, + money_to_float, + money_to_string, + money_to_cents, + money_round, + decimal_of_string, + decimal_to_string, + decimal_of_integer, + decimal_of_float, + decimal_to_float, + decimal_round, + decimal_of_money, + integer_of_string, + integer_to_string, + integer_to_int, + integer_of_int, + integer_log2, + integer_exponentiation, + day_of_month_of_date, + month_number_of_date, + is_leap_year, + year_of_date, + date_to_string, + date_of_numbers, + first_day_of_month, + last_day_of_month, + duration_of_numbers, + duration_to_years_months_days, + duration_to_string, + handle_default, + handle_default_opt, + no_input, + Oper, + o_not$0, + o_length$0, + o_torat_int, + o_torat_mon, + o_tomoney_rat, + o_getDay, + o_getMonth, + o_getYear, + o_firstDayOfMonth, + o_lastDayOfMonth, + o_round_mon, + o_round_rat, + o_minus_int$0, + o_minus_rat$0, + o_minus_mon$0, + o_minus_dur$0, + o_and$0, + o_or$0, + o_xor$0, + o_eq$0, + o_map$0, + o_reduce$0, + o_concat$0, + o_filter$0, + o_add_int_int$0, + o_add_rat_rat$0, + o_add_mon_mon$0, + o_add_dat_dur$0, + o_add_dur_dur$0, + o_sub_int_int$0, + o_sub_rat_rat$0, + o_sub_mon_mon$0, + o_sub_dat_dat$0, + o_sub_dat_dur$0, + o_sub_dur_dur$0, + o_mult_int_int$0, + o_mult_rat_rat$0, + o_mult_mon_rat$0, + o_mult_dur_int$0, + o_div_int_int$0, + o_div_rat_rat$0, + o_div_mon_mon$0, + o_div_mon_rat$0, + o_lt_int_int$0, + o_lt_rat_rat$0, + o_lt_mon_mon$0, + o_lt_dur_dur$0, + o_lt_dat_dat$0, + o_lte_int_int$0, + o_lte_rat_rat$0, + o_lte_mon_mon$0, + o_lte_dur_dur$0, + o_lte_dat_dat$0, + o_gt_int_int$0, + o_gt_rat_rat$0, + o_gt_mon_mon$0, + o_gt_dur_dur$0, + o_gt_dat_dat$0, + o_gte_int_int$0, + o_gte_rat_rat$0, + o_gte_mon_mon$0, + o_gte_dur_dur$0, + o_gte_dat_dat$0, + o_eq_int_int$0, + o_eq_rat_rat$0, + o_eq_mon_mon$0, + o_eq_dur_dur$0, + o_eq_dat_dat$0, + o_fold$0]; + caml_register_global(126,Runtime_ocaml_Runtime,"Runtime_ocaml__Runtime"); + return} + (globalThis)); + + +//# 1 "../../.js/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_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(), + 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, + Js=[0], + Sys=[0], + 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} + var + Error= + [0, + raise, + caml_exn_with_js_backtrace, + runtime.caml_js_error_option_of_exception, + Exn], + For_compatibility_only=[0], + 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"); + return} + (globalThis)); + + +//# 1 "../../.js/js_of_ocaml/js_of_ocaml.cma.js" +(function(globalThis) + {"use strict"; + var + jsoo_exports=typeof module === "object" && module.exports || globalThis, + runtime=globalThis.jsoo_runtime, + caml_float_of_string=runtime.caml_float_of_string, + caml_fresh_oo_id=runtime.caml_fresh_oo_id, + caml_int_of_string=runtime.caml_int_of_string, + caml_js_from_array=runtime.caml_js_from_array, + caml_js_get=runtime.caml_js_get, + caml_js_html_escape=runtime.caml_js_html_escape, + caml_js_set=runtime.caml_js_set, + caml_js_wrap_callback=runtime.caml_js_wrap_callback, + caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback, + caml_jsbytes_of_string=runtime.caml_jsbytes_of_string, + caml_jsstring_of_string=runtime.caml_jsstring_of_string, + caml_list_of_js_array=runtime.caml_list_of_js_array, + caml_ml_string_length=runtime.caml_ml_string_length, + caml_register_global=runtime.caml_register_global, + caml_string_compare=runtime.caml_string_compare, + caml_string_notequal=runtime.caml_string_notequal, + caml_string_of_array=runtime.caml_string_of_array, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, + caml_string_of_jsstring=runtime.caml_string_of_jsstring, + 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_parseFloat=caml_string_of_jsbytes("parseFloat"), + cst_parseInt=caml_string_of_jsbytes("parseInt"), + cst_can_t_retrieve_file_name_n= + caml_string_of_jsbytes("can't retrieve file name: not implemented"), + cst_endings=caml_string_of_jsbytes("endings"), + cst_type=caml_string_of_jsbytes("type"), + cst_loadstart=caml_string_of_jsbytes("loadstart"), + cst_progress=caml_string_of_jsbytes("progress"), + cst_abort=caml_string_of_jsbytes("abort"), + cst_error=caml_string_of_jsbytes("error"), + cst_load=caml_string_of_jsbytes("load"), + cst_loadend=caml_string_of_jsbytes("loadend"), + cst_a$1=caml_string_of_jsbytes("a"), + cst_area$1=caml_string_of_jsbytes("area"), + cst_audio$1=caml_string_of_jsbytes("audio"), + cst_base$1=caml_string_of_jsbytes("base"), + cst_blockquote$1=caml_string_of_jsbytes("blockquote"), + cst_body$1=caml_string_of_jsbytes("body"), + cst_br$1=caml_string_of_jsbytes("br"), + cst_button$1=caml_string_of_jsbytes("button"), + cst_canvas$1=caml_string_of_jsbytes("canvas"), + cst_caption$1=caml_string_of_jsbytes("caption"), + cst_col$1=caml_string_of_jsbytes("col"), + cst_colgroup$1=caml_string_of_jsbytes("colgroup"), + cst_del$1=caml_string_of_jsbytes("del"), + cst_div$1=caml_string_of_jsbytes("div"), + cst_dl$1=caml_string_of_jsbytes("dl"), + cst_embed$1=caml_string_of_jsbytes("embed"), + cst_fieldset$1=caml_string_of_jsbytes("fieldset"), + cst_form$1=caml_string_of_jsbytes("form"), + cst_frame$1=caml_string_of_jsbytes("frame"), + cst_frameset$1=caml_string_of_jsbytes("frameset"), + cst_h1$1=caml_string_of_jsbytes("h1"), + cst_h2$1=caml_string_of_jsbytes("h2"), + cst_h3$1=caml_string_of_jsbytes("h3"), + cst_h4$1=caml_string_of_jsbytes("h4"), + cst_h5$1=caml_string_of_jsbytes("h5"), + cst_h6$1=caml_string_of_jsbytes("h6"), + cst_head$1=caml_string_of_jsbytes("head"), + cst_hr$1=caml_string_of_jsbytes("hr"), + cst_html$1=caml_string_of_jsbytes("html"), + cst_iframe$1=caml_string_of_jsbytes("iframe"), + cst_img$1=caml_string_of_jsbytes("img"), + cst_input$2=caml_string_of_jsbytes("input"), + cst_ins$1=caml_string_of_jsbytes("ins"), + cst_label$1=caml_string_of_jsbytes("label"), + cst_legend$1=caml_string_of_jsbytes("legend"), + cst_li$1=caml_string_of_jsbytes("li"), + cst_link$1=caml_string_of_jsbytes("link"), + cst_map$1=caml_string_of_jsbytes("map"), + cst_meta$1=caml_string_of_jsbytes("meta"), + cst_object$1=caml_string_of_jsbytes("object"), + cst_ol$1=caml_string_of_jsbytes("ol"), + cst_optgroup$1=caml_string_of_jsbytes("optgroup"), + cst_option$1=caml_string_of_jsbytes("option"), + cst_p$1=caml_string_of_jsbytes("p"), + cst_param$1=caml_string_of_jsbytes("param"), + cst_pre$1=caml_string_of_jsbytes("pre"), + cst_q$1=caml_string_of_jsbytes("q"), + cst_script$1=caml_string_of_jsbytes("script"), + cst_select$2=caml_string_of_jsbytes("select"), + cst_style$1=caml_string_of_jsbytes("style"), + cst_table$1=caml_string_of_jsbytes("table"), + cst_tbody$1=caml_string_of_jsbytes("tbody"), + cst_td$1=caml_string_of_jsbytes("td"), + cst_textarea$1=caml_string_of_jsbytes("textarea"), + cst_tfoot$1=caml_string_of_jsbytes("tfoot"), + cst_th$1=caml_string_of_jsbytes("th"), + cst_thead$1=caml_string_of_jsbytes("thead"), + cst_title$1=caml_string_of_jsbytes("title"), + cst_tr$1=caml_string_of_jsbytes("tr"), + cst_ul$1=caml_string_of_jsbytes("ul"), + cst_video$1=caml_string_of_jsbytes("video"), + cst_KeyH=caml_string_of_jsbytes("KeyH"), + cst_Digit6=caml_string_of_jsbytes("Digit6"), + cst_BrowserRefresh=caml_string_of_jsbytes("BrowserRefresh"), + cst_Backslash=caml_string_of_jsbytes("Backslash"), + cst_AltLeft=caml_string_of_jsbytes("AltLeft"), + cst_AltRight=caml_string_of_jsbytes("AltRight"), + cst_ArrowDown=caml_string_of_jsbytes("ArrowDown"), + cst_ArrowLeft=caml_string_of_jsbytes("ArrowLeft"), + cst_ArrowRight=caml_string_of_jsbytes("ArrowRight"), + cst_ArrowUp=caml_string_of_jsbytes("ArrowUp"), + cst_Backquote=caml_string_of_jsbytes("Backquote"), + cst_Backspace=caml_string_of_jsbytes("Backspace"), + cst_BracketLeft=caml_string_of_jsbytes("BracketLeft"), + cst_BracketRight=caml_string_of_jsbytes("BracketRight"), + cst_BrowserBack=caml_string_of_jsbytes("BrowserBack"), + cst_BrowserFavorites=caml_string_of_jsbytes("BrowserFavorites"), + cst_BrowserForward=caml_string_of_jsbytes("BrowserForward"), + cst_BrowserHome=caml_string_of_jsbytes("BrowserHome"), + cst_Delete=caml_string_of_jsbytes("Delete"), + cst_BrowserSearch=caml_string_of_jsbytes("BrowserSearch"), + cst_BrowserStop=caml_string_of_jsbytes("BrowserStop"), + cst_CapsLock=caml_string_of_jsbytes("CapsLock"), + cst_Comma=caml_string_of_jsbytes("Comma"), + cst_ContextMenu=caml_string_of_jsbytes("ContextMenu"), + cst_ControlLeft=caml_string_of_jsbytes("ControlLeft"), + cst_ControlRight=caml_string_of_jsbytes("ControlRight"), + cst_Digit0=caml_string_of_jsbytes("Digit0"), + cst_Digit1=caml_string_of_jsbytes("Digit1"), + cst_Digit2=caml_string_of_jsbytes("Digit2"), + cst_Digit3=caml_string_of_jsbytes("Digit3"), + cst_Digit4=caml_string_of_jsbytes("Digit4"), + cst_Digit5=caml_string_of_jsbytes("Digit5"), + cst_F6=caml_string_of_jsbytes("F6"), + cst_F1=caml_string_of_jsbytes("F1"), + cst_Digit7=caml_string_of_jsbytes("Digit7"), + cst_Digit8=caml_string_of_jsbytes("Digit8"), + cst_Digit9=caml_string_of_jsbytes("Digit9"), + cst_End=caml_string_of_jsbytes("End"), + cst_Enter=caml_string_of_jsbytes("Enter"), + cst_Equal=caml_string_of_jsbytes("Equal"), + cst_Escape=caml_string_of_jsbytes("Escape"), + cst_F10=caml_string_of_jsbytes("F10"), + cst_F11=caml_string_of_jsbytes("F11"), + cst_F12=caml_string_of_jsbytes("F12"), + cst_F2=caml_string_of_jsbytes("F2"), + cst_F3=caml_string_of_jsbytes("F3"), + cst_F4=caml_string_of_jsbytes("F4"), + cst_F5=caml_string_of_jsbytes("F5"), + cst_KeyA=caml_string_of_jsbytes("KeyA"), + cst_F7=caml_string_of_jsbytes("F7"), + cst_F8=caml_string_of_jsbytes("F8"), + cst_F9=caml_string_of_jsbytes("F9"), + cst_Home=caml_string_of_jsbytes("Home"), + cst_Insert=caml_string_of_jsbytes("Insert"), + cst_IntlBackslash=caml_string_of_jsbytes("IntlBackslash"), + cst_IntlYen=caml_string_of_jsbytes("IntlYen"), + cst_KeyB=caml_string_of_jsbytes("KeyB"), + cst_KeyC=caml_string_of_jsbytes("KeyC"), + cst_KeyD=caml_string_of_jsbytes("KeyD"), + cst_KeyE=caml_string_of_jsbytes("KeyE"), + cst_KeyF=caml_string_of_jsbytes("KeyF"), + cst_KeyG=caml_string_of_jsbytes("KeyG"), + cst_Numpad4=caml_string_of_jsbytes("Numpad4"), + cst_KeyX=caml_string_of_jsbytes("KeyX"), + cst_KeyP=caml_string_of_jsbytes("KeyP"), + cst_KeyI=caml_string_of_jsbytes("KeyI"), + cst_KeyJ=caml_string_of_jsbytes("KeyJ"), + cst_KeyK=caml_string_of_jsbytes("KeyK"), + cst_KeyL=caml_string_of_jsbytes("KeyL"), + cst_KeyM=caml_string_of_jsbytes("KeyM"), + cst_KeyN=caml_string_of_jsbytes("KeyN"), + cst_KeyO=caml_string_of_jsbytes("KeyO"), + cst_KeyQ=caml_string_of_jsbytes("KeyQ"), + cst_KeyR=caml_string_of_jsbytes("KeyR"), + cst_KeyS=caml_string_of_jsbytes("KeyS"), + cst_KeyT=caml_string_of_jsbytes("KeyT"), + cst_KeyU=caml_string_of_jsbytes("KeyU"), + cst_KeyV=caml_string_of_jsbytes("KeyV"), + cst_KeyW=caml_string_of_jsbytes("KeyW"), + cst_MetaRight=caml_string_of_jsbytes("MetaRight"), + cst_KeyY=caml_string_of_jsbytes("KeyY"), + cst_KeyZ=caml_string_of_jsbytes("KeyZ"), + cst_MediaPlayPause=caml_string_of_jsbytes("MediaPlayPause"), + cst_MediaStop=caml_string_of_jsbytes("MediaStop"), + cst_MediaTrackNext=caml_string_of_jsbytes("MediaTrackNext"), + cst_MediaTrackPrevious=caml_string_of_jsbytes("MediaTrackPrevious"), + cst_MetaLeft=caml_string_of_jsbytes("MetaLeft"), + cst_Minus=caml_string_of_jsbytes("Minus"), + cst_NumLock=caml_string_of_jsbytes("NumLock"), + cst_Numpad0=caml_string_of_jsbytes("Numpad0"), + cst_Numpad1=caml_string_of_jsbytes("Numpad1"), + cst_Numpad2=caml_string_of_jsbytes("Numpad2"), + cst_Numpad3=caml_string_of_jsbytes("Numpad3"), + cst_PageUp=caml_string_of_jsbytes("PageUp"), + cst_NumpadDivide=caml_string_of_jsbytes("NumpadDivide"), + cst_Numpad5=caml_string_of_jsbytes("Numpad5"), + cst_Numpad6=caml_string_of_jsbytes("Numpad6"), + cst_Numpad7=caml_string_of_jsbytes("Numpad7"), + cst_Numpad8=caml_string_of_jsbytes("Numpad8"), + cst_Numpad9=caml_string_of_jsbytes("Numpad9"), + cst_NumpadAdd=caml_string_of_jsbytes("NumpadAdd"), + cst_NumpadDecimal=caml_string_of_jsbytes("NumpadDecimal"), + cst_NumpadEnter=caml_string_of_jsbytes("NumpadEnter"), + cst_NumpadEqual=caml_string_of_jsbytes("NumpadEqual"), + cst_NumpadMultiply=caml_string_of_jsbytes("NumpadMultiply"), + cst_NumpadSubtract=caml_string_of_jsbytes("NumpadSubtract"), + cst_OSLeft=caml_string_of_jsbytes("OSLeft"), + cst_OSRight=caml_string_of_jsbytes("OSRight"), + cst_PageDown=caml_string_of_jsbytes("PageDown"), + cst_ShiftRight=caml_string_of_jsbytes("ShiftRight"), + cst_Pause=caml_string_of_jsbytes("Pause"), + cst_Period=caml_string_of_jsbytes("Period"), + cst_PrintScreen=caml_string_of_jsbytes("PrintScreen"), + cst_Quote=caml_string_of_jsbytes("Quote"), + cst_ScrollLock=caml_string_of_jsbytes("ScrollLock"), + cst_Semicolon=caml_string_of_jsbytes("Semicolon"), + cst_ShiftLeft=caml_string_of_jsbytes("ShiftLeft"), + cst_Slash=caml_string_of_jsbytes("Slash"), + cst_Space=caml_string_of_jsbytes("Space"), + cst_Tab=caml_string_of_jsbytes("Tab"), + cst_VolumeDown=caml_string_of_jsbytes("VolumeDown"), + cst_VolumeMute=caml_string_of_jsbytes("VolumeMute"), + cst_VolumeUp=caml_string_of_jsbytes("VolumeUp"), + cst_mouseout$0=caml_string_of_jsbytes("mouseout"), + cst_mouseover$0=caml_string_of_jsbytes("mouseover"), + cst_video$0=caml_string_of_jsbytes("video"), + cst_audio$0=caml_string_of_jsbytes("audio"), + cst_ul$0=caml_string_of_jsbytes("ul"), + cst_tr$0=caml_string_of_jsbytes("tr"), + cst_title$0=caml_string_of_jsbytes("title"), + cst_thead$0=caml_string_of_jsbytes("thead"), + cst_th$0=caml_string_of_jsbytes("th"), + cst_tfoot$0=caml_string_of_jsbytes("tfoot"), + cst_textarea$0=caml_string_of_jsbytes("textarea"), + cst_td$0=caml_string_of_jsbytes("td"), + cst_tbody$0=caml_string_of_jsbytes("tbody"), + cst_table$0=caml_string_of_jsbytes("table"), + cst_style$0=caml_string_of_jsbytes("style"), + cst_select$1=caml_string_of_jsbytes("select"), + cst_script$0=caml_string_of_jsbytes("script"), + cst_q$0=caml_string_of_jsbytes("q"), + cst_pre$0=caml_string_of_jsbytes("pre"), + cst_param$0=caml_string_of_jsbytes("param"), + cst_p$0=caml_string_of_jsbytes("p"), + cst_option$0=caml_string_of_jsbytes("option"), + cst_optgroup$0=caml_string_of_jsbytes("optgroup"), + cst_ol$0=caml_string_of_jsbytes("ol"), + cst_object$0=caml_string_of_jsbytes("object"), + cst_meta$0=caml_string_of_jsbytes("meta"), + cst_map$0=caml_string_of_jsbytes("map"), + cst_link$0=caml_string_of_jsbytes("link"), + cst_li$0=caml_string_of_jsbytes("li"), + cst_legend$0=caml_string_of_jsbytes("legend"), + cst_label$0=caml_string_of_jsbytes("label"), + cst_ins$0=caml_string_of_jsbytes("ins"), + cst_input$1=caml_string_of_jsbytes("input"), + cst_img$0=caml_string_of_jsbytes("img"), + cst_iframe$0=caml_string_of_jsbytes("iframe"), + cst_html$0=caml_string_of_jsbytes("html"), + cst_hr$0=caml_string_of_jsbytes("hr"), + cst_head$0=caml_string_of_jsbytes("head"), + cst_h6$0=caml_string_of_jsbytes("h6"), + cst_h5$0=caml_string_of_jsbytes("h5"), + cst_h4$0=caml_string_of_jsbytes("h4"), + cst_h3$0=caml_string_of_jsbytes("h3"), + cst_h2$0=caml_string_of_jsbytes("h2"), + cst_h1$0=caml_string_of_jsbytes("h1"), + cst_frame$0=caml_string_of_jsbytes("frame"), + cst_frameset$0=caml_string_of_jsbytes("frameset"), + cst_form$0=caml_string_of_jsbytes("form"), + cst_embed$0=caml_string_of_jsbytes("embed"), + cst_fieldset$0=caml_string_of_jsbytes("fieldset"), + cst_dl$0=caml_string_of_jsbytes("dl"), + cst_div$0=caml_string_of_jsbytes("div"), + cst_del$0=caml_string_of_jsbytes("del"), + cst_colgroup$0=caml_string_of_jsbytes("colgroup"), + cst_col$0=caml_string_of_jsbytes("col"), + cst_caption$0=caml_string_of_jsbytes("caption"), + cst_canvas$0=caml_string_of_jsbytes("canvas"), + cst_button$0=caml_string_of_jsbytes("button"), + cst_br$0=caml_string_of_jsbytes("br"), + cst_body$0=caml_string_of_jsbytes("body"), + cst_blockquote$0=caml_string_of_jsbytes("blockquote"), + cst_base$0=caml_string_of_jsbytes("base"), + cst_area$0=caml_string_of_jsbytes("area"), + cst_a$0=caml_string_of_jsbytes("a"), + cst_canvas=caml_string_of_jsbytes("canvas"), + cst_video=caml_string_of_jsbytes("video"), + cst_audio=caml_string_of_jsbytes("audio"), + cst_iframe=caml_string_of_jsbytes("iframe"), + cst_frame=caml_string_of_jsbytes("frame"), + cst_frameset=caml_string_of_jsbytes("frameset"), + cst_address=caml_string_of_jsbytes("address"), + cst_noscript=caml_string_of_jsbytes("noscript"), + cst_dt=caml_string_of_jsbytes("dt"), + cst_dd=caml_string_of_jsbytes("dd"), + cst_abbr=caml_string_of_jsbytes("abbr"), + cst_var=caml_string_of_jsbytes("var"), + cst_kbd=caml_string_of_jsbytes("kbd"), + cst_samp=caml_string_of_jsbytes("samp"), + cst_code=caml_string_of_jsbytes("code"), + cst_dfn=caml_string_of_jsbytes("dfn"), + cst_cite=caml_string_of_jsbytes("cite"), + cst_strong=caml_string_of_jsbytes("strong"), + cst_em=caml_string_of_jsbytes("em"), + cst_small=caml_string_of_jsbytes("small"), + cst_big=caml_string_of_jsbytes("big"), + cst_b=caml_string_of_jsbytes("b"), + cst_i=caml_string_of_jsbytes("i"), + cst_tt=caml_string_of_jsbytes("tt"), + cst_span=caml_string_of_jsbytes("span"), + cst_sup=caml_string_of_jsbytes("sup"), + cst_sub=caml_string_of_jsbytes("sub"), + cst_td=caml_string_of_jsbytes("td"), + cst_th=caml_string_of_jsbytes("th"), + cst_tr=caml_string_of_jsbytes("tr"), + cst_tbody=caml_string_of_jsbytes("tbody"), + cst_tfoot=caml_string_of_jsbytes("tfoot"), + cst_thead=caml_string_of_jsbytes("thead"), + cst_colgroup=caml_string_of_jsbytes("colgroup"), + cst_col=caml_string_of_jsbytes("col"), + cst_caption=caml_string_of_jsbytes("caption"), + cst_table=caml_string_of_jsbytes("table"), + cst_script=caml_string_of_jsbytes("script"), + cst_area=caml_string_of_jsbytes("area"), + cst_map=caml_string_of_jsbytes("map"), + cst_param=caml_string_of_jsbytes("param"), + cst_object=caml_string_of_jsbytes("object"), + cst_img=caml_string_of_jsbytes("img"), + cst_a=caml_string_of_jsbytes("a"), + cst_del=caml_string_of_jsbytes("del"), + cst_ins=caml_string_of_jsbytes("ins"), + cst_hr=caml_string_of_jsbytes("hr"), + cst_br=caml_string_of_jsbytes("br"), + cst_pre=caml_string_of_jsbytes("pre"), + cst_blockquote=caml_string_of_jsbytes("blockquote"), + cst_q=caml_string_of_jsbytes("q"), + cst_h6=caml_string_of_jsbytes("h6"), + cst_h5=caml_string_of_jsbytes("h5"), + cst_h4=caml_string_of_jsbytes("h4"), + cst_h3=caml_string_of_jsbytes("h3"), + cst_h2=caml_string_of_jsbytes("h2"), + cst_h1=caml_string_of_jsbytes("h1"), + cst_p=caml_string_of_jsbytes("p"), + cst_embed=caml_string_of_jsbytes("embed"), + cst_div=caml_string_of_jsbytes("div"), + cst_li=caml_string_of_jsbytes("li"), + cst_dl=caml_string_of_jsbytes("dl"), + cst_ol=caml_string_of_jsbytes("ol"), + cst_ul=caml_string_of_jsbytes("ul"), + cst_legend=caml_string_of_jsbytes("legend"), + cst_fieldset=caml_string_of_jsbytes("fieldset"), + cst_label=caml_string_of_jsbytes("label"), + cst_button=caml_string_of_jsbytes("button"), + cst_textarea=caml_string_of_jsbytes("textarea"), + cst_input$0=caml_string_of_jsbytes("input"), + cst_select$0=caml_string_of_jsbytes("select"), + cst_option=caml_string_of_jsbytes("option"), + cst_optgroup=caml_string_of_jsbytes("optgroup"), + cst_form=caml_string_of_jsbytes("form"), + cst_body=caml_string_of_jsbytes("body"), + cst_style=caml_string_of_jsbytes("style"), + cst_base=caml_string_of_jsbytes("base"), + cst_meta=caml_string_of_jsbytes("meta"), + cst_title=caml_string_of_jsbytes("title"), + cst_link=caml_string_of_jsbytes("link"), + cst_head=caml_string_of_jsbytes("head"), + cst_html=caml_string_of_jsbytes("html"), + cst_click=caml_string_of_jsbytes("click"), + cst_copy=caml_string_of_jsbytes("copy"), + cst_cut=caml_string_of_jsbytes("cut"), + cst_paste=caml_string_of_jsbytes("paste"), + cst_dblclick=caml_string_of_jsbytes("dblclick"), + cst_mousedown=caml_string_of_jsbytes("mousedown"), + cst_mouseup=caml_string_of_jsbytes("mouseup"), + cst_mouseover=caml_string_of_jsbytes("mouseover"), + cst_mousemove=caml_string_of_jsbytes("mousemove"), + cst_mouseout=caml_string_of_jsbytes("mouseout"), + cst_keypress=caml_string_of_jsbytes("keypress"), + cst_keydown=caml_string_of_jsbytes("keydown"), + cst_keyup=caml_string_of_jsbytes("keyup"), + cst_mousewheel=caml_string_of_jsbytes("mousewheel"), + cst_DOMMouseScroll=caml_string_of_jsbytes("DOMMouseScroll"), + cst_touchstart=caml_string_of_jsbytes("touchstart"), + cst_touchmove=caml_string_of_jsbytes("touchmove"), + cst_touchend=caml_string_of_jsbytes("touchend"), + cst_touchcancel=caml_string_of_jsbytes("touchcancel"), + cst_dragstart=caml_string_of_jsbytes("dragstart"), + cst_dragend=caml_string_of_jsbytes("dragend"), + cst_dragenter=caml_string_of_jsbytes("dragenter"), + cst_dragover=caml_string_of_jsbytes("dragover"), + cst_dragleave=caml_string_of_jsbytes("dragleave"), + cst_drag=caml_string_of_jsbytes("drag"), + cst_drop=caml_string_of_jsbytes("drop"), + cst_hashchange=caml_string_of_jsbytes("hashchange"), + cst_change=caml_string_of_jsbytes("change"), + cst_input=caml_string_of_jsbytes("input"), + cst_timeupdate=caml_string_of_jsbytes("timeupdate"), + cst_submit=caml_string_of_jsbytes("submit"), + cst_scroll=caml_string_of_jsbytes("scroll"), + cst_focus=caml_string_of_jsbytes("focus"), + cst_blur=caml_string_of_jsbytes("blur"), + cst_load$0=caml_string_of_jsbytes("load"), + cst_unload=caml_string_of_jsbytes("unload"), + cst_beforeunload=caml_string_of_jsbytes("beforeunload"), + cst_resize=caml_string_of_jsbytes("resize"), + cst_orientationchange=caml_string_of_jsbytes("orientationchange"), + cst_popstate=caml_string_of_jsbytes("popstate"), + cst_error$0=caml_string_of_jsbytes("error"), + cst_abort$0=caml_string_of_jsbytes("abort"), + cst_select=caml_string_of_jsbytes("select"), + cst_online=caml_string_of_jsbytes("online"), + cst_offline=caml_string_of_jsbytes("offline"), + cst_checking=caml_string_of_jsbytes("checking"), + cst_noupdate=caml_string_of_jsbytes("noupdate"), + cst_downloading=caml_string_of_jsbytes("downloading"), + cst_progress$0=caml_string_of_jsbytes("progress"), + cst_updateready=caml_string_of_jsbytes("updateready"), + cst_cached=caml_string_of_jsbytes("cached"), + cst_obsolete=caml_string_of_jsbytes("obsolete"), + cst_DOMContentLoaded=caml_string_of_jsbytes("DOMContentLoaded"), + cst_animationstart=caml_string_of_jsbytes("animationstart"), + cst_animationend=caml_string_of_jsbytes("animationend"), + cst_animationiteration=caml_string_of_jsbytes("animationiteration"), + cst_animationcancel=caml_string_of_jsbytes("animationcancel"), + cst_canplay=caml_string_of_jsbytes("canplay"), + cst_canplaythrough=caml_string_of_jsbytes("canplaythrough"), + cst_durationchange=caml_string_of_jsbytes("durationchange"), + cst_emptied=caml_string_of_jsbytes("emptied"), + cst_ended=caml_string_of_jsbytes("ended"), + cst_gotpointercapture=caml_string_of_jsbytes("gotpointercapture"), + cst_loadeddata=caml_string_of_jsbytes("loadeddata"), + cst_loadedmetadata=caml_string_of_jsbytes("loadedmetadata"), + cst_loadstart$0=caml_string_of_jsbytes("loadstart"), + cst_lostpointercapture=caml_string_of_jsbytes("lostpointercapture"), + cst_message=caml_string_of_jsbytes("message"), + cst_pause=caml_string_of_jsbytes("pause"), + cst_play=caml_string_of_jsbytes("play"), + cst_playing=caml_string_of_jsbytes("playing"), + cst_pointerenter=caml_string_of_jsbytes("pointerenter"), + cst_pointercancel=caml_string_of_jsbytes("pointercancel"), + cst_pointerdown=caml_string_of_jsbytes("pointerdown"), + cst_pointerleave=caml_string_of_jsbytes("pointerleave"), + cst_pointermove=caml_string_of_jsbytes("pointermove"), + cst_pointerout=caml_string_of_jsbytes("pointerout"), + cst_pointerover=caml_string_of_jsbytes("pointerover"), + cst_pointerup=caml_string_of_jsbytes("pointerup"), + cst_ratechange=caml_string_of_jsbytes("ratechange"), + cst_seeked=caml_string_of_jsbytes("seeked"), + cst_seeking=caml_string_of_jsbytes("seeking"), + cst_stalled=caml_string_of_jsbytes("stalled"), + cst_suspend=caml_string_of_jsbytes("suspend"), + cst_volumechange=caml_string_of_jsbytes("volumechange"), + cst_waiting=caml_string_of_jsbytes("waiting"), + cst_Js_of_ocaml_Dom_html_Canva= + caml_string_of_jsbytes("Js_of_ocaml__Dom_html.Canvas_not_available"), + cst_checkbox=caml_string_of_jsbytes("checkbox"), + cst_file=caml_string_of_jsbytes("file"), + cst_password=caml_string_of_jsbytes("password"), + cst_radio=caml_string_of_jsbytes("radio"), + cst_reset=caml_string_of_jsbytes("reset"), + cst_submit$0=caml_string_of_jsbytes("submit"), + cst_text=caml_string_of_jsbytes("text"), + cst_readystatechange=caml_string_of_jsbytes("readystatechange"), + cst_loadstart$1=caml_string_of_jsbytes("loadstart"), + cst_progress$1=caml_string_of_jsbytes("progress"), + cst_abort$1=caml_string_of_jsbytes("abort"), + cst_error$1=caml_string_of_jsbytes("error"), + cst_load$1=caml_string_of_jsbytes("load"), + cst_timeout=caml_string_of_jsbytes("timeout"), + cst_loadend$0=caml_string_of_jsbytes("loadend"), + cst_Worker_onmessage_is_undefi$0= + caml_string_of_jsbytes("Worker.onmessage is undefined"), + cst_Worker_onmessage_is_undefi= + caml_string_of_jsbytes("Worker.onmessage is undefined"), + cst_Worker_import_scripts_is_u= + caml_string_of_jsbytes("Worker.import_scripts is undefined"), + cst_webglcontextlost=caml_string_of_jsbytes("webglcontextlost"), + cst_webglcontextrestored=caml_string_of_jsbytes("webglcontextrestored"), + cst_webglcontextcreationerror= + caml_string_of_jsbytes("webglcontextcreationerror"), + cst_g=caml_string_of_jsbytes("g"), + cst=caml_string_of_jsbytes("[\\][()\\\\|+*.?{}^$]"), + cst$37=caml_string_of_jsbytes(""), + cst$13=caml_string_of_jsbytes(""), + cst$21=caml_string_of_jsbytes(""), + cst$14=caml_string_of_jsbytes("#"), + cst$15=caml_string_of_jsbytes("?"), + cst$20=caml_string_of_jsbytes(""), + cst$16=caml_string_of_jsbytes("/"), + cst$17=caml_string_of_jsbytes("/"), + cst$19=caml_string_of_jsbytes(":"), + cst$18=caml_string_of_jsbytes(""), + cst_http$1=caml_string_of_jsbytes("http://"), + cst$22=caml_string_of_jsbytes(""), + cst$30=caml_string_of_jsbytes(""), + cst$23=caml_string_of_jsbytes("#"), + cst$24=caml_string_of_jsbytes("?"), + cst$29=caml_string_of_jsbytes(""), + cst$25=caml_string_of_jsbytes("/"), + cst$26=caml_string_of_jsbytes("/"), + cst$28=caml_string_of_jsbytes(":"), + cst$27=caml_string_of_jsbytes(""), + cst_https$1=caml_string_of_jsbytes("https://"), + cst$31=caml_string_of_jsbytes(""), + cst$36=caml_string_of_jsbytes(""), + cst$32=caml_string_of_jsbytes("#"), + cst$33=caml_string_of_jsbytes("?"), + cst$35=caml_string_of_jsbytes(""), + cst$34=caml_string_of_jsbytes("/"), + cst_file$2=caml_string_of_jsbytes("file://"), + cst$12=caml_string_of_jsbytes(""), + cst$11=caml_string_of_jsbytes(""), + cst$10=caml_string_of_jsbytes(""), + cst$9=caml_string_of_jsbytes(""), + cst$8=caml_string_of_jsbytes(""), + cst$7=caml_string_of_jsbytes(""), + cst$6=caml_string_of_jsbytes(""), + cst$4=caml_string_of_jsbytes("="), + cst$5=caml_string_of_jsbytes("&"), + cst$2=caml_string_of_jsbytes(""), + cst$3=caml_string_of_jsbytes(""), + cst_file$0=caml_string_of_jsbytes("file"), + cst_file$1=caml_string_of_jsbytes("file:"), + cst_http=caml_string_of_jsbytes("http"), + cst_http$0=caml_string_of_jsbytes("http:"), + cst_https=caml_string_of_jsbytes("https"), + cst_https$0=caml_string_of_jsbytes("https:"), + cst$1=caml_string_of_jsbytes(" "), + cst_2B=caml_string_of_jsbytes("%2B"), + cst_Js_of_ocaml_Url_Local_exn= + caml_string_of_jsbytes("Js_of_ocaml__Url.Local_exn"), + cst$0=caml_string_of_jsbytes("+"), + cst_Js_of_ocaml_Url_Not_an_htt= + caml_string_of_jsbytes("Js_of_ocaml__Url.Not_an_http_protocol"), + cst_Hh_Tt_Tt_Pp_Ss_0_9a_zA_Z_0= + caml_string_of_jsbytes + ("^([Hh][Tt][Tt][Pp][Ss]?)://([0-9a-zA-Z.-]+|\\[[0-9a-zA-Z.-]+\\]|\\[[0-9A-Fa-f:.]+\\])?(:([0-9]+))?(/([^\\?#]*)(\\?([^#]*))?(#(.*))?)?$"), + cst_Ff_Ii_Ll_Ee= + caml_string_of_jsbytes + ("^([Ff][Ii][Ll][Ee])://([^\\?#]*)(\\?([^#]*))?(#(.*))?$"), + s=caml_string_of_jsbytes("4.0.0"), + git_version=caml_string_of_jsbytes(""), + cst$38=caml_string_of_jsbytes(""), + cst$41=caml_string_of_jsbytes("+"), + cst_Jstable_keys=caml_string_of_jsbytes("Jstable.keys"), + t5=runtime.caml_int64_create_lo_mi_hi(1,0,0), + cst_is_not_a_valid_length$0= + caml_string_of_jsbytes(" is not a valid length"), + cst_d_d_deg_grad_rad_turns= + caml_string_of_jsbytes("^(\\d*(?:\\.\\d*))(deg|grad|rad|turns)$"), + cst_length_conversion_error$0= + caml_string_of_jsbytes("length conversion error: "), + cst_deg$0=caml_string_of_jsbytes("deg"), + cst_grad$0=caml_string_of_jsbytes("grad"), + cst_rad$0=caml_string_of_jsbytes("rad"), + cst_turns$0=caml_string_of_jsbytes("turns"), + cst_deg=caml_string_of_jsbytes("deg"), + cst_grad=caml_string_of_jsbytes("grad"), + cst_rad=caml_string_of_jsbytes("rad"), + cst_turns=caml_string_of_jsbytes("turns"), + cst_is_not_a_valid_length= + caml_string_of_jsbytes(" is not a valid length"), + cst_0$0=caml_string_of_jsbytes("0"), + cst_d_d_s_S=caml_string_of_jsbytes("^(\\d*(?:\\.\\d*)?)\\s*(\\S*)$"), + cst_length_conversion_error= + caml_string_of_jsbytes("length conversion error: "), + cst_pc$0=caml_string_of_jsbytes("pc"), + cst_ch$0=caml_string_of_jsbytes("ch"), + cst_cm$0=caml_string_of_jsbytes("cm"), + cst_em$1=caml_string_of_jsbytes("em"), + cst_ex$0=caml_string_of_jsbytes("ex"), + cst_gd$0=caml_string_of_jsbytes("gd"), + cst_in$0=caml_string_of_jsbytes("in"), + cst_mm$0=caml_string_of_jsbytes("mm"), + cst_pt$0=caml_string_of_jsbytes("pt"), + cst_px$0=caml_string_of_jsbytes("px"), + cst_rem$0=caml_string_of_jsbytes("rem"), + cst_vh$0=caml_string_of_jsbytes("vh"), + cst_vm$0=caml_string_of_jsbytes("vm"), + cst_vw$0=caml_string_of_jsbytes("vw"), + cst_0=caml_string_of_jsbytes("0"), + cst_em$0=caml_string_of_jsbytes("em"), + cst_ex=caml_string_of_jsbytes("ex"), + cst_px=caml_string_of_jsbytes("px"), + cst_gd=caml_string_of_jsbytes("gd"), + cst_rem=caml_string_of_jsbytes("rem"), + cst_vw=caml_string_of_jsbytes("vw"), + cst_vh=caml_string_of_jsbytes("vh"), + cst_vm=caml_string_of_jsbytes("vm"), + cst_ch=caml_string_of_jsbytes("ch"), + cst_mm=caml_string_of_jsbytes("mm"), + cst_cm=caml_string_of_jsbytes("cm"), + cst_in=caml_string_of_jsbytes("in"), + cst_pt=caml_string_of_jsbytes("pt"), + cst_pc=caml_string_of_jsbytes("pc"), + cst$40=caml_string_of_jsbytes("): "), + cst_color_conversion_error$0= + caml_string_of_jsbytes("color conversion error ("), + cst$39=caml_string_of_jsbytes("): "), + cst_color_conversion_error= + caml_string_of_jsbytes("color conversion error ("), + cst_is_not_a_valid_color$0= + caml_string_of_jsbytes(" is not a valid color"), + cst_rgba_d_d_d_d_d= + caml_string_of_jsbytes + ("(rgba?)\\((?:(\\d*),(\\d*),(\\d*)(?:,(\\d*(?:\\.\\d*)?))?)\\)"), + cst_rgba_d_d_d_d_d$0= + caml_string_of_jsbytes + ("(rgba?)\\((?:(\\d*)%,(\\d*)%,(\\d*)%(?:,(\\d*(?:\\.\\d*)?))?)\\)"), + cst_hsla_d_d_d_d_d= + caml_string_of_jsbytes + ("(hsla?)\\((?:(\\d*),(\\d*)%,(\\d*)%(?:,(\\d*(?:\\.\\d*)?))?)\\)"), + cst_rgb=caml_string_of_jsbytes("rgb"), + cst_rgba=caml_string_of_jsbytes("rgba"), + cst_rgb$0=caml_string_of_jsbytes("rgb"), + cst_rgba$0=caml_string_of_jsbytes("rgba"), + cst_hsl=caml_string_of_jsbytes("hsl"), + cst_hsla=caml_string_of_jsbytes("hsla"), + cst_rgb_s_d_s_d_s_d= + caml_string_of_jsbytes("^rgb\\(\\s*\\d*,\\s*\\d*,\\s*\\d*\\)$"), + cst_rgb_s_d_s_d_s_d$0= + caml_string_of_jsbytes("^rgb\\(\\s*\\d*%,\\s*\\d*%,\\s*\\d*%\\)$"), + cst_rgba_s_d_s_d_s_d_d_d= + caml_string_of_jsbytes + ("^rgba\\(\\s*\\d*,\\s*\\d*,\\s*\\d*,\\d*\\.?\\d*\\)$"), + cst_rgba_s_d_s_d_s_d_d_d$0= + caml_string_of_jsbytes + ("^rgba\\(\\s*\\d*%,\\s*\\d*%,\\s*\\d*%,\\d*\\.?\\d*\\)$"), + cst_hsl_s_d_s_d_s_d= + caml_string_of_jsbytes("^hsl\\(\\s*\\d*,\\s*\\d*%,\\s*\\d*%\\)$"), + cst_hsla_s_d_s_d_s_d_d_d= + caml_string_of_jsbytes + ("^hsla\\(\\s*\\d*,\\s*\\d*%,\\s*\\d*%,\\d*\\.?\\d*\\)$"), + cst_is_not_a_valid_color=caml_string_of_jsbytes(" is not a valid color"), + cst_is_out_of_valid_range= + caml_string_of_jsbytes(" is out of valid range"), + partial=[8,[0,0,0],0,0,[12,41,0]], + partial$0=[12,41,0], + partial$1=[0,0,0], + cst_lightgrey$0=caml_string_of_jsbytes("lightgrey"), + cst_darkslategray$0=caml_string_of_jsbytes("darkslategray"), + cst_cornsilk$0=caml_string_of_jsbytes("cornsilk"), + cst_blue$0=caml_string_of_jsbytes("blue"), + cst_aliceblue$0=caml_string_of_jsbytes("aliceblue"), + cst_antiquewhite$0=caml_string_of_jsbytes("antiquewhite"), + cst_aqua$0=caml_string_of_jsbytes("aqua"), + cst_aquamarine$0=caml_string_of_jsbytes("aquamarine"), + cst_azure$0=caml_string_of_jsbytes("azure"), + cst_beige$0=caml_string_of_jsbytes("beige"), + cst_bisque$0=caml_string_of_jsbytes("bisque"), + cst_black$0=caml_string_of_jsbytes("black"), + cst_blanchedalmond$0=caml_string_of_jsbytes("blanchedalmond"), + cst_blueviolet$0=caml_string_of_jsbytes("blueviolet"), + cst_brown$0=caml_string_of_jsbytes("brown"), + cst_burlywood$0=caml_string_of_jsbytes("burlywood"), + cst_cadetblue$0=caml_string_of_jsbytes("cadetblue"), + cst_chartreuse$0=caml_string_of_jsbytes("chartreuse"), + cst_chocolate$0=caml_string_of_jsbytes("chocolate"), + cst_coral$0=caml_string_of_jsbytes("coral"), + cst_cornflowerblue$0=caml_string_of_jsbytes("cornflowerblue"), + cst_darkkhaki$0=caml_string_of_jsbytes("darkkhaki"), + cst_crimson$0=caml_string_of_jsbytes("crimson"), + cst_cyan$0=caml_string_of_jsbytes("cyan"), + cst_darkblue$0=caml_string_of_jsbytes("darkblue"), + cst_darkcyan$0=caml_string_of_jsbytes("darkcyan"), + cst_darkgoldenrod$0=caml_string_of_jsbytes("darkgoldenrod"), + cst_darkgray$0=caml_string_of_jsbytes("darkgray"), + cst_darkgreen$0=caml_string_of_jsbytes("darkgreen"), + cst_darkgrey$0=caml_string_of_jsbytes("darkgrey"), + cst_darkmagenta$0=caml_string_of_jsbytes("darkmagenta"), + cst_darkolivegreen$0=caml_string_of_jsbytes("darkolivegreen"), + cst_darkorange$0=caml_string_of_jsbytes("darkorange"), + cst_darkorchid$0=caml_string_of_jsbytes("darkorchid"), + cst_darkred$0=caml_string_of_jsbytes("darkred"), + cst_darksalmon$0=caml_string_of_jsbytes("darksalmon"), + cst_darkseagreen$0=caml_string_of_jsbytes("darkseagreen"), + cst_darkslateblue$0=caml_string_of_jsbytes("darkslateblue"), + cst_greenyellow$0=caml_string_of_jsbytes("greenyellow"), + cst_floralwhite$0=caml_string_of_jsbytes("floralwhite"), + cst_darkslategrey$0=caml_string_of_jsbytes("darkslategrey"), + cst_darkturquoise$0=caml_string_of_jsbytes("darkturquoise"), + cst_darkviolet$0=caml_string_of_jsbytes("darkviolet"), + cst_deeppink$0=caml_string_of_jsbytes("deeppink"), + cst_deepskyblue$0=caml_string_of_jsbytes("deepskyblue"), + cst_dimgray$0=caml_string_of_jsbytes("dimgray"), + cst_dimgrey$0=caml_string_of_jsbytes("dimgrey"), + cst_dodgerblue$0=caml_string_of_jsbytes("dodgerblue"), + cst_firebrick$0=caml_string_of_jsbytes("firebrick"), + cst_forestgreen$0=caml_string_of_jsbytes("forestgreen"), + cst_fuchsia$0=caml_string_of_jsbytes("fuchsia"), + cst_gainsboro$0=caml_string_of_jsbytes("gainsboro"), + cst_ghostwhite$0=caml_string_of_jsbytes("ghostwhite"), + cst_gold$0=caml_string_of_jsbytes("gold"), + cst_goldenrod$0=caml_string_of_jsbytes("goldenrod"), + cst_gray$0=caml_string_of_jsbytes("gray"), + cst_green$0=caml_string_of_jsbytes("green"), + cst_lavenderblush$0=caml_string_of_jsbytes("lavenderblush"), + cst_grey$0=caml_string_of_jsbytes("grey"), + cst_honeydew$0=caml_string_of_jsbytes("honeydew"), + cst_hotpink$0=caml_string_of_jsbytes("hotpink"), + cst_indianred$0=caml_string_of_jsbytes("indianred"), + cst_indigo$0=caml_string_of_jsbytes("indigo"), + cst_ivory$0=caml_string_of_jsbytes("ivory"), + cst_khaki$0=caml_string_of_jsbytes("khaki"), + cst_lavender$0=caml_string_of_jsbytes("lavender"), + cst_lawngreen$0=caml_string_of_jsbytes("lawngreen"), + cst_lemonchiffon$0=caml_string_of_jsbytes("lemonchiffon"), + cst_lightblue$0=caml_string_of_jsbytes("lightblue"), + cst_lightcoral$0=caml_string_of_jsbytes("lightcoral"), + cst_lightcyan$0=caml_string_of_jsbytes("lightcyan"), + cst_lightgoldenrodyellow$0=caml_string_of_jsbytes("lightgoldenrodyellow"), + cst_lightgray$0=caml_string_of_jsbytes("lightgray"), + cst_lightgreen$0=caml_string_of_jsbytes("lightgreen"), + cst_paleturquoise$0=caml_string_of_jsbytes("paleturquoise"), + cst_mediumslateblue$0=caml_string_of_jsbytes("mediumslateblue"), + cst_limegreen$0=caml_string_of_jsbytes("limegreen"), + cst_lightpink$0=caml_string_of_jsbytes("lightpink"), + cst_lightsalmon$0=caml_string_of_jsbytes("lightsalmon"), + cst_lightseagreen$0=caml_string_of_jsbytes("lightseagreen"), + cst_lightskyblue$0=caml_string_of_jsbytes("lightskyblue"), + cst_lightslategray$0=caml_string_of_jsbytes("lightslategray"), + cst_lightslategrey$0=caml_string_of_jsbytes("lightslategrey"), + cst_lightsteelblue$0=caml_string_of_jsbytes("lightsteelblue"), + cst_lightyellow$0=caml_string_of_jsbytes("lightyellow"), + cst_lime$0=caml_string_of_jsbytes("lime"), + cst_linen$0=caml_string_of_jsbytes("linen"), + cst_magenta$0=caml_string_of_jsbytes("magenta"), + cst_maroon$0=caml_string_of_jsbytes("maroon"), + cst_mediumaquamarine$0=caml_string_of_jsbytes("mediumaquamarine"), + cst_mediumblue$0=caml_string_of_jsbytes("mediumblue"), + cst_mediumorchid$0=caml_string_of_jsbytes("mediumorchid"), + cst_mediumpurple$0=caml_string_of_jsbytes("mediumpurple"), + cst_mediumseagreen$0=caml_string_of_jsbytes("mediumseagreen"), + cst_navy$0=caml_string_of_jsbytes("navy"), + cst_mediumspringgreen$0=caml_string_of_jsbytes("mediumspringgreen"), + cst_mediumturquoise$0=caml_string_of_jsbytes("mediumturquoise"), + cst_mediumvioletred$0=caml_string_of_jsbytes("mediumvioletred"), + cst_midnightblue$0=caml_string_of_jsbytes("midnightblue"), + cst_mintcream$0=caml_string_of_jsbytes("mintcream"), + cst_mistyrose$0=caml_string_of_jsbytes("mistyrose"), + cst_moccasin$0=caml_string_of_jsbytes("moccasin"), + cst_navajowhite$0=caml_string_of_jsbytes("navajowhite"), + cst_oldlace$0=caml_string_of_jsbytes("oldlace"), + cst_olive$0=caml_string_of_jsbytes("olive"), + cst_olivedrab$0=caml_string_of_jsbytes("olivedrab"), + cst_orange$0=caml_string_of_jsbytes("orange"), + cst_orangered$0=caml_string_of_jsbytes("orangered"), + cst_orchid$0=caml_string_of_jsbytes("orchid"), + cst_palegoldenrod$0=caml_string_of_jsbytes("palegoldenrod"), + cst_palegreen$0=caml_string_of_jsbytes("palegreen"), + cst_skyblue$0=caml_string_of_jsbytes("skyblue"), + cst_rosybrown$0=caml_string_of_jsbytes("rosybrown"), + cst_palevioletred$0=caml_string_of_jsbytes("palevioletred"), + cst_papayawhip$0=caml_string_of_jsbytes("papayawhip"), + cst_peachpuff$0=caml_string_of_jsbytes("peachpuff"), + cst_peru$0=caml_string_of_jsbytes("peru"), + cst_pink$0=caml_string_of_jsbytes("pink"), + cst_plum$0=caml_string_of_jsbytes("plum"), + cst_powderblue$0=caml_string_of_jsbytes("powderblue"), + cst_purple$0=caml_string_of_jsbytes("purple"), + cst_red$0=caml_string_of_jsbytes("red"), + cst_royalblue$0=caml_string_of_jsbytes("royalblue"), + cst_saddlebrown$0=caml_string_of_jsbytes("saddlebrown"), + cst_salmon$0=caml_string_of_jsbytes("salmon"), + cst_sandybrown$0=caml_string_of_jsbytes("sandybrown"), + cst_seagreen$0=caml_string_of_jsbytes("seagreen"), + cst_seashell$0=caml_string_of_jsbytes("seashell"), + cst_sienna$0=caml_string_of_jsbytes("sienna"), + cst_silver$0=caml_string_of_jsbytes("silver"), + cst_thistle$0=caml_string_of_jsbytes("thistle"), + cst_slateblue$0=caml_string_of_jsbytes("slateblue"), + cst_slategray$0=caml_string_of_jsbytes("slategray"), + cst_slategrey$0=caml_string_of_jsbytes("slategrey"), + cst_snow$0=caml_string_of_jsbytes("snow"), + cst_springgreen$0=caml_string_of_jsbytes("springgreen"), + cst_steelblue$0=caml_string_of_jsbytes("steelblue"), + cst_tan$0=caml_string_of_jsbytes("tan"), + cst_teal$0=caml_string_of_jsbytes("teal"), + cst_tomato$0=caml_string_of_jsbytes("tomato"), + cst_turquoise$0=caml_string_of_jsbytes("turquoise"), + cst_violet$0=caml_string_of_jsbytes("violet"), + cst_wheat$0=caml_string_of_jsbytes("wheat"), + cst_white$0=caml_string_of_jsbytes("white"), + cst_whitesmoke$0=caml_string_of_jsbytes("whitesmoke"), + cst_yellow$0=caml_string_of_jsbytes("yellow"), + cst_yellowgreen$0=caml_string_of_jsbytes("yellowgreen"), + cst_is_not_a_valid_color_name= + caml_string_of_jsbytes(" is not a valid color name"), + cst_aliceblue=caml_string_of_jsbytes("aliceblue"), + cst_antiquewhite=caml_string_of_jsbytes("antiquewhite"), + cst_aqua=caml_string_of_jsbytes("aqua"), + cst_aquamarine=caml_string_of_jsbytes("aquamarine"), + cst_azure=caml_string_of_jsbytes("azure"), + cst_beige=caml_string_of_jsbytes("beige"), + cst_bisque=caml_string_of_jsbytes("bisque"), + cst_black=caml_string_of_jsbytes("black"), + cst_blanchedalmond=caml_string_of_jsbytes("blanchedalmond"), + cst_blue=caml_string_of_jsbytes("blue"), + cst_blueviolet=caml_string_of_jsbytes("blueviolet"), + cst_brown=caml_string_of_jsbytes("brown"), + cst_burlywood=caml_string_of_jsbytes("burlywood"), + cst_cadetblue=caml_string_of_jsbytes("cadetblue"), + cst_chartreuse=caml_string_of_jsbytes("chartreuse"), + cst_chocolate=caml_string_of_jsbytes("chocolate"), + cst_coral=caml_string_of_jsbytes("coral"), + cst_cornflowerblue=caml_string_of_jsbytes("cornflowerblue"), + cst_cornsilk=caml_string_of_jsbytes("cornsilk"), + cst_crimson=caml_string_of_jsbytes("crimson"), + cst_cyan=caml_string_of_jsbytes("cyan"), + cst_darkblue=caml_string_of_jsbytes("darkblue"), + cst_darkcyan=caml_string_of_jsbytes("darkcyan"), + cst_darkgoldenrod=caml_string_of_jsbytes("darkgoldenrod"), + cst_darkgray=caml_string_of_jsbytes("darkgray"), + cst_darkgreen=caml_string_of_jsbytes("darkgreen"), + cst_darkgrey=caml_string_of_jsbytes("darkgrey"), + cst_darkkhaki=caml_string_of_jsbytes("darkkhaki"), + cst_darkmagenta=caml_string_of_jsbytes("darkmagenta"), + cst_darkolivegreen=caml_string_of_jsbytes("darkolivegreen"), + cst_darkorange=caml_string_of_jsbytes("darkorange"), + cst_darkorchid=caml_string_of_jsbytes("darkorchid"), + cst_darkred=caml_string_of_jsbytes("darkred"), + cst_darksalmon=caml_string_of_jsbytes("darksalmon"), + cst_darkseagreen=caml_string_of_jsbytes("darkseagreen"), + cst_darkslateblue=caml_string_of_jsbytes("darkslateblue"), + cst_darkslategray=caml_string_of_jsbytes("darkslategray"), + cst_darkslategrey=caml_string_of_jsbytes("darkslategrey"), + cst_darkturquoise=caml_string_of_jsbytes("darkturquoise"), + cst_darkviolet=caml_string_of_jsbytes("darkviolet"), + cst_deeppink=caml_string_of_jsbytes("deeppink"), + cst_deepskyblue=caml_string_of_jsbytes("deepskyblue"), + cst_dimgray=caml_string_of_jsbytes("dimgray"), + cst_dimgrey=caml_string_of_jsbytes("dimgrey"), + cst_dodgerblue=caml_string_of_jsbytes("dodgerblue"), + cst_firebrick=caml_string_of_jsbytes("firebrick"), + cst_floralwhite=caml_string_of_jsbytes("floralwhite"), + cst_forestgreen=caml_string_of_jsbytes("forestgreen"), + cst_fuchsia=caml_string_of_jsbytes("fuchsia"), + cst_gainsboro=caml_string_of_jsbytes("gainsboro"), + cst_ghostwhite=caml_string_of_jsbytes("ghostwhite"), + cst_gold=caml_string_of_jsbytes("gold"), + cst_goldenrod=caml_string_of_jsbytes("goldenrod"), + cst_gray=caml_string_of_jsbytes("gray"), + cst_grey=caml_string_of_jsbytes("grey"), + cst_green=caml_string_of_jsbytes("green"), + cst_greenyellow=caml_string_of_jsbytes("greenyellow"), + cst_honeydew=caml_string_of_jsbytes("honeydew"), + cst_hotpink=caml_string_of_jsbytes("hotpink"), + cst_indianred=caml_string_of_jsbytes("indianred"), + cst_indigo=caml_string_of_jsbytes("indigo"), + cst_ivory=caml_string_of_jsbytes("ivory"), + cst_khaki=caml_string_of_jsbytes("khaki"), + cst_lavender=caml_string_of_jsbytes("lavender"), + cst_lavenderblush=caml_string_of_jsbytes("lavenderblush"), + cst_lawngreen=caml_string_of_jsbytes("lawngreen"), + cst_lemonchiffon=caml_string_of_jsbytes("lemonchiffon"), + cst_lightblue=caml_string_of_jsbytes("lightblue"), + cst_lightcoral=caml_string_of_jsbytes("lightcoral"), + cst_lightcyan=caml_string_of_jsbytes("lightcyan"), + cst_lightgoldenrodyellow=caml_string_of_jsbytes("lightgoldenrodyellow"), + cst_lightgray=caml_string_of_jsbytes("lightgray"), + cst_lightgreen=caml_string_of_jsbytes("lightgreen"), + cst_lightgrey=caml_string_of_jsbytes("lightgrey"), + cst_lightpink=caml_string_of_jsbytes("lightpink"), + cst_lightsalmon=caml_string_of_jsbytes("lightsalmon"), + cst_lightseagreen=caml_string_of_jsbytes("lightseagreen"), + cst_lightskyblue=caml_string_of_jsbytes("lightskyblue"), + cst_lightslategray=caml_string_of_jsbytes("lightslategray"), + cst_lightslategrey=caml_string_of_jsbytes("lightslategrey"), + cst_lightsteelblue=caml_string_of_jsbytes("lightsteelblue"), + cst_lightyellow=caml_string_of_jsbytes("lightyellow"), + cst_lime=caml_string_of_jsbytes("lime"), + cst_limegreen=caml_string_of_jsbytes("limegreen"), + cst_linen=caml_string_of_jsbytes("linen"), + cst_magenta=caml_string_of_jsbytes("magenta"), + cst_maroon=caml_string_of_jsbytes("maroon"), + cst_mediumaquamarine=caml_string_of_jsbytes("mediumaquamarine"), + cst_mediumblue=caml_string_of_jsbytes("mediumblue"), + cst_mediumorchid=caml_string_of_jsbytes("mediumorchid"), + cst_mediumpurple=caml_string_of_jsbytes("mediumpurple"), + cst_mediumseagreen=caml_string_of_jsbytes("mediumseagreen"), + cst_mediumslateblue=caml_string_of_jsbytes("mediumslateblue"), + cst_mediumspringgreen=caml_string_of_jsbytes("mediumspringgreen"), + cst_mediumturquoise=caml_string_of_jsbytes("mediumturquoise"), + cst_mediumvioletred=caml_string_of_jsbytes("mediumvioletred"), + cst_midnightblue=caml_string_of_jsbytes("midnightblue"), + cst_mintcream=caml_string_of_jsbytes("mintcream"), + cst_mistyrose=caml_string_of_jsbytes("mistyrose"), + cst_moccasin=caml_string_of_jsbytes("moccasin"), + cst_navajowhite=caml_string_of_jsbytes("navajowhite"), + cst_navy=caml_string_of_jsbytes("navy"), + cst_oldlace=caml_string_of_jsbytes("oldlace"), + cst_olive=caml_string_of_jsbytes("olive"), + cst_olivedrab=caml_string_of_jsbytes("olivedrab"), + cst_orange=caml_string_of_jsbytes("orange"), + cst_orangered=caml_string_of_jsbytes("orangered"), + cst_orchid=caml_string_of_jsbytes("orchid"), + cst_palegoldenrod=caml_string_of_jsbytes("palegoldenrod"), + cst_palegreen=caml_string_of_jsbytes("palegreen"), + cst_paleturquoise=caml_string_of_jsbytes("paleturquoise"), + cst_palevioletred=caml_string_of_jsbytes("palevioletred"), + cst_papayawhip=caml_string_of_jsbytes("papayawhip"), + cst_peachpuff=caml_string_of_jsbytes("peachpuff"), + cst_peru=caml_string_of_jsbytes("peru"), + cst_pink=caml_string_of_jsbytes("pink"), + cst_plum=caml_string_of_jsbytes("plum"), + cst_powderblue=caml_string_of_jsbytes("powderblue"), + cst_purple=caml_string_of_jsbytes("purple"), + cst_red=caml_string_of_jsbytes("red"), + cst_rosybrown=caml_string_of_jsbytes("rosybrown"), + cst_royalblue=caml_string_of_jsbytes("royalblue"), + cst_saddlebrown=caml_string_of_jsbytes("saddlebrown"), + cst_salmon=caml_string_of_jsbytes("salmon"), + cst_sandybrown=caml_string_of_jsbytes("sandybrown"), + cst_seagreen=caml_string_of_jsbytes("seagreen"), + cst_seashell=caml_string_of_jsbytes("seashell"), + cst_sienna=caml_string_of_jsbytes("sienna"), + cst_silver=caml_string_of_jsbytes("silver"), + cst_skyblue=caml_string_of_jsbytes("skyblue"), + cst_slateblue=caml_string_of_jsbytes("slateblue"), + cst_slategray=caml_string_of_jsbytes("slategray"), + cst_slategrey=caml_string_of_jsbytes("slategrey"), + cst_snow=caml_string_of_jsbytes("snow"), + cst_springgreen=caml_string_of_jsbytes("springgreen"), + cst_steelblue=caml_string_of_jsbytes("steelblue"), + cst_tan=caml_string_of_jsbytes("tan"), + cst_teal=caml_string_of_jsbytes("teal"), + cst_thistle=caml_string_of_jsbytes("thistle"), + cst_tomato=caml_string_of_jsbytes("tomato"), + cst_turquoise=caml_string_of_jsbytes("turquoise"), + cst_violet=caml_string_of_jsbytes("violet"), + cst_wheat=caml_string_of_jsbytes("wheat"), + cst_white=caml_string_of_jsbytes("white"), + cst_whitesmoke=caml_string_of_jsbytes("whitesmoke"), + cst_yellow=caml_string_of_jsbytes("yellow"), + cst_yellowgreen=caml_string_of_jsbytes("yellowgreen"), + cst_vkern$0=caml_string_of_jsbytes("vkern"), + cst_view$0=caml_string_of_jsbytes("view"), + cst_use$0=caml_string_of_jsbytes("use"), + cst_tspan$0=caml_string_of_jsbytes("tspan"), + cst_tref$0=caml_string_of_jsbytes("tref"), + cst_title$3=caml_string_of_jsbytes("title"), + cst_textpath$0=caml_string_of_jsbytes("textpath"), + cst_text$1=caml_string_of_jsbytes("text"), + cst_symbol$0=caml_string_of_jsbytes("symbol"), + cst_switch$0=caml_string_of_jsbytes("switch"), + cst_svg$0=caml_string_of_jsbytes("svg"), + cst_style$3=caml_string_of_jsbytes("style"), + cst_stop$0=caml_string_of_jsbytes("stop"), + cst_set$0=caml_string_of_jsbytes("set"), + cst_script$3=caml_string_of_jsbytes("script"), + cst_rect$0=caml_string_of_jsbytes("rect"), + cst_radialgradient$0=caml_string_of_jsbytes("radialgradient"), + cst_polyline$0=caml_string_of_jsbytes("polyline"), + cst_polygon$0=caml_string_of_jsbytes("polygon"), + cst_pattern$0=caml_string_of_jsbytes("pattern"), + cst_path$0=caml_string_of_jsbytes("path"), + cst_mpath$0=caml_string_of_jsbytes("mpath"), + cst_missing_glyph$0=caml_string_of_jsbytes("missing-glyph"), + cst_metadata$0=caml_string_of_jsbytes("metadata"), + cst_mask$0=caml_string_of_jsbytes("mask"), + cst_lineargradient$0=caml_string_of_jsbytes("lineargradient"), + cst_line$0=caml_string_of_jsbytes("line"), + cst_image$0=caml_string_of_jsbytes("image"), + cst_hkern$0=caml_string_of_jsbytes("hkern"), + cst_glyphref$0=caml_string_of_jsbytes("glyphref"), + cst_glyph$0=caml_string_of_jsbytes("glyph"), + cst_g$1=caml_string_of_jsbytes("g"), + cst_foreignobject=caml_string_of_jsbytes("foreignobject"), + cst_font_face_uri$0=caml_string_of_jsbytes("font-face-uri"), + cst_font_face_src$0=caml_string_of_jsbytes("font-face-src"), + cst_font_face_name$0=caml_string_of_jsbytes("font-face-name"), + cst_font_face_format$0=caml_string_of_jsbytes("font-face-format"), + cst_font_face$0=caml_string_of_jsbytes("font-face"), + cst_font$0=caml_string_of_jsbytes("font"), + cst_filter$0=caml_string_of_jsbytes("filter"), + cst_ellipse$0=caml_string_of_jsbytes("ellipse"), + cst_desc$0=caml_string_of_jsbytes("desc"), + cst_defs$0=caml_string_of_jsbytes("defs"), + cst_cursor$0=caml_string_of_jsbytes("cursor"), + cst_clippath$0=caml_string_of_jsbytes("clippath"), + cst_circle$0=caml_string_of_jsbytes("circle"), + cst_animatetransform$0=caml_string_of_jsbytes("animatetransform"), + cst_animatemotion$0=caml_string_of_jsbytes("animatemotion"), + cst_animatecolor$0=caml_string_of_jsbytes("animatecolor"), + cst_animate$0=caml_string_of_jsbytes("animate"), + cst_altglyphitem$0=caml_string_of_jsbytes("altglyphitem"), + cst_altglyphdef$0=caml_string_of_jsbytes("altglyphdef"), + cst_altglyph$0=caml_string_of_jsbytes("altglyph"), + cst_a$3=caml_string_of_jsbytes("a"), + cst_vkern=caml_string_of_jsbytes("vkern"), + cst_view=caml_string_of_jsbytes("view"), + cst_use=caml_string_of_jsbytes("use"), + cst_tspan=caml_string_of_jsbytes("tspan"), + cst_tref=caml_string_of_jsbytes("tref"), + cst_title$2=caml_string_of_jsbytes("title"), + cst_textpath=caml_string_of_jsbytes("textpath"), + cst_text$0=caml_string_of_jsbytes("text"), + cst_symbol=caml_string_of_jsbytes("symbol"), + cst_switch=caml_string_of_jsbytes("switch"), + cst_svg=caml_string_of_jsbytes("svg"), + cst_style$2=caml_string_of_jsbytes("style"), + cst_stop=caml_string_of_jsbytes("stop"), + cst_set=caml_string_of_jsbytes("set"), + cst_script$2=caml_string_of_jsbytes("script"), + cst_rect=caml_string_of_jsbytes("rect"), + cst_radialgradient=caml_string_of_jsbytes("radialgradient"), + cst_polyline=caml_string_of_jsbytes("polyline"), + cst_polygon=caml_string_of_jsbytes("polygon"), + cst_pattern=caml_string_of_jsbytes("pattern"), + cst_path=caml_string_of_jsbytes("path"), + cst_mpath=caml_string_of_jsbytes("mpath"), + cst_missing_glyph=caml_string_of_jsbytes("missing-glyph"), + cst_metadata=caml_string_of_jsbytes("metadata"), + cst_mask=caml_string_of_jsbytes("mask"), + cst_lineargradient=caml_string_of_jsbytes("lineargradient"), + cst_line=caml_string_of_jsbytes("line"), + cst_image=caml_string_of_jsbytes("image"), + cst_hkern=caml_string_of_jsbytes("hkern"), + cst_glyphref=caml_string_of_jsbytes("glyphref"), + cst_glyph=caml_string_of_jsbytes("glyph"), + cst_g$0=caml_string_of_jsbytes("g"), + cst_foreignObject=caml_string_of_jsbytes("foreignObject"), + cst_font_face_uri=caml_string_of_jsbytes("font-face-uri"), + cst_font_face_src=caml_string_of_jsbytes("font-face-src"), + cst_font_face_name=caml_string_of_jsbytes("font-face-name"), + cst_font_face_format=caml_string_of_jsbytes("font-face-format"), + cst_font_face=caml_string_of_jsbytes("font-face"), + cst_font=caml_string_of_jsbytes("font"), + cst_filter=caml_string_of_jsbytes("filter"), + cst_ellipse=caml_string_of_jsbytes("ellipse"), + cst_desc=caml_string_of_jsbytes("desc"), + cst_defs=caml_string_of_jsbytes("defs"), + cst_cursor=caml_string_of_jsbytes("cursor"), + cst_clippath=caml_string_of_jsbytes("clippath"), + cst_circle=caml_string_of_jsbytes("circle"), + cst_animatetransform=caml_string_of_jsbytes("animatetransform"), + cst_animatemotion=caml_string_of_jsbytes("animatemotion"), + cst_animatecolor=caml_string_of_jsbytes("animatecolor"), + cst_animate=caml_string_of_jsbytes("animate"), + cst_altglyphitem=caml_string_of_jsbytes("altglyphitem"), + cst_altglyphdef=caml_string_of_jsbytes("altglyphdef"), + cst_altglyph=caml_string_of_jsbytes("altglyph"), + cst_a$2=caml_string_of_jsbytes("a"), + cst_Js_of_ocaml_Dom_svg_SVGErr= + caml_string_of_jsbytes("Js_of_ocaml__Dom_svg.SVGError"), + Stdlib_String=global_data.Stdlib__String, + Stdlib_Char=global_data.Stdlib__Char, + Stdlib=global_data.Stdlib, + Jsoo_runtime=global_data.Jsoo_runtime, + Stdlib_Printexc=global_data.Stdlib__Printexc, + Assert_failure=global_data.Assert_failure, + 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__"); + 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], + _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")], + _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")], + _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")], + _ca_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _cb_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _cc_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _cd_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _ce_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _cf_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _cg_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _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_= + caml_list_of_js_array + ([caml_string_of_jsbytes("aliceblue"), + caml_string_of_jsbytes("antiquewhite"), + caml_string_of_jsbytes("aqua"), + caml_string_of_jsbytes("aquamarine"), + caml_string_of_jsbytes("azure"), + caml_string_of_jsbytes("beige"), + caml_string_of_jsbytes("bisque"), + caml_string_of_jsbytes("black"), + caml_string_of_jsbytes("blanchedalmond"), + caml_string_of_jsbytes("blue"), + caml_string_of_jsbytes("blueviolet"), + caml_string_of_jsbytes("brown"), + caml_string_of_jsbytes("burlywood"), + caml_string_of_jsbytes("cadetblue"), + caml_string_of_jsbytes("chartreuse"), + caml_string_of_jsbytes("chocolate"), + caml_string_of_jsbytes("coral"), + caml_string_of_jsbytes("cornflowerblue"), + caml_string_of_jsbytes("cornsilk"), + caml_string_of_jsbytes("crimson"), + caml_string_of_jsbytes("cyan"), + caml_string_of_jsbytes("darkblue"), + caml_string_of_jsbytes("darkcyan"), + caml_string_of_jsbytes("darkgoldenrod"), + caml_string_of_jsbytes("darkgray"), + caml_string_of_jsbytes("darkgreen"), + caml_string_of_jsbytes("darkgrey"), + caml_string_of_jsbytes("darkkhaki"), + caml_string_of_jsbytes("darkmagenta"), + caml_string_of_jsbytes("darkolivegreen"), + caml_string_of_jsbytes("darkorange"), + caml_string_of_jsbytes("darkorchid"), + caml_string_of_jsbytes("darkred"), + caml_string_of_jsbytes("darksalmon"), + caml_string_of_jsbytes("darkseagreen"), + caml_string_of_jsbytes("darkslateblue"), + caml_string_of_jsbytes("darkslategray"), + caml_string_of_jsbytes("darkslategrey"), + caml_string_of_jsbytes("darkturquoise"), + caml_string_of_jsbytes("darkviolet"), + caml_string_of_jsbytes("deeppink"), + caml_string_of_jsbytes("deepskyblue"), + caml_string_of_jsbytes("dimgray"), + caml_string_of_jsbytes("dimgrey"), + caml_string_of_jsbytes("dodgerblue"), + caml_string_of_jsbytes("firebrick"), + caml_string_of_jsbytes("floralwhite"), + caml_string_of_jsbytes("forestgreen"), + caml_string_of_jsbytes("fuchsia"), + caml_string_of_jsbytes("gainsboro"), + caml_string_of_jsbytes("ghostwhite"), + caml_string_of_jsbytes("gold"), + caml_string_of_jsbytes("goldenrod"), + caml_string_of_jsbytes("gray"), + caml_string_of_jsbytes("green"), + caml_string_of_jsbytes("greenyellow"), + caml_string_of_jsbytes("grey"), + caml_string_of_jsbytes("honeydew"), + caml_string_of_jsbytes("hotpink"), + caml_string_of_jsbytes("indianred"), + caml_string_of_jsbytes("indigo"), + caml_string_of_jsbytes("ivory"), + caml_string_of_jsbytes("khaki"), + caml_string_of_jsbytes("lavender"), + caml_string_of_jsbytes("lavenderblush"), + caml_string_of_jsbytes("lawngreen"), + caml_string_of_jsbytes("lemonchiffon"), + caml_string_of_jsbytes("lightblue"), + caml_string_of_jsbytes("lightcoral"), + caml_string_of_jsbytes("lightcyan"), + caml_string_of_jsbytes("lightgoldenrodyellow"), + caml_string_of_jsbytes("lightgray"), + caml_string_of_jsbytes("lightgreen"), + caml_string_of_jsbytes("lightgrey"), + caml_string_of_jsbytes("lightpink"), + caml_string_of_jsbytes("lightsalmon"), + caml_string_of_jsbytes("lightseagreen"), + caml_string_of_jsbytes("lightskyblue"), + caml_string_of_jsbytes("lightslategray"), + caml_string_of_jsbytes("lightslategrey"), + caml_string_of_jsbytes("lightsteelblue"), + caml_string_of_jsbytes("lightyellow"), + caml_string_of_jsbytes("lime"), + caml_string_of_jsbytes("limegreen"), + caml_string_of_jsbytes("linen"), + caml_string_of_jsbytes("magenta"), + caml_string_of_jsbytes("maroon"), + caml_string_of_jsbytes("mediumaquamarine"), + caml_string_of_jsbytes("mediumblue"), + caml_string_of_jsbytes("mediumorchid"), + caml_string_of_jsbytes("mediumpurple"), + caml_string_of_jsbytes("mediumseagreen"), + caml_string_of_jsbytes("mediumslateblue"), + caml_string_of_jsbytes("mediumspringgreen"), + caml_string_of_jsbytes("mediumturquoise"), + caml_string_of_jsbytes("mediumvioletred"), + caml_string_of_jsbytes("midnightblue"), + caml_string_of_jsbytes("mintcream"), + caml_string_of_jsbytes("mistyrose"), + caml_string_of_jsbytes("moccasin"), + caml_string_of_jsbytes("navajowhite"), + caml_string_of_jsbytes("navy"), + caml_string_of_jsbytes("oldlace"), + caml_string_of_jsbytes("olive"), + caml_string_of_jsbytes("olivedrab"), + caml_string_of_jsbytes("orange"), + caml_string_of_jsbytes("orangered"), + caml_string_of_jsbytes("orchid"), + caml_string_of_jsbytes("palegoldenrod"), + caml_string_of_jsbytes("palegreen"), + caml_string_of_jsbytes("paleturquoise"), + caml_string_of_jsbytes("palevioletred"), + caml_string_of_jsbytes("papayawhip"), + caml_string_of_jsbytes("peachpuff"), + caml_string_of_jsbytes("peru"), + caml_string_of_jsbytes("pink"), + caml_string_of_jsbytes("plum"), + caml_string_of_jsbytes("powderblue"), + caml_string_of_jsbytes("purple"), + caml_string_of_jsbytes("red"), + caml_string_of_jsbytes("rosybrown"), + caml_string_of_jsbytes("royalblue"), + caml_string_of_jsbytes("saddlebrown"), + caml_string_of_jsbytes("salmon"), + caml_string_of_jsbytes("sandybrown"), + caml_string_of_jsbytes("seagreen"), + caml_string_of_jsbytes("seashell"), + caml_string_of_jsbytes("sienna"), + caml_string_of_jsbytes("silver"), + caml_string_of_jsbytes("skyblue"), + caml_string_of_jsbytes("slateblue"), + caml_string_of_jsbytes("slategray"), + caml_string_of_jsbytes("slategrey"), + caml_string_of_jsbytes("snow"), + caml_string_of_jsbytes("springgreen"), + caml_string_of_jsbytes("steelblue"), + caml_string_of_jsbytes("tan"), + caml_string_of_jsbytes("teal"), + caml_string_of_jsbytes("thistle"), + caml_string_of_jsbytes("tomato"), + caml_string_of_jsbytes("turquoise"), + caml_string_of_jsbytes("violet"), + caml_string_of_jsbytes("wheat"), + caml_string_of_jsbytes("white"), + caml_string_of_jsbytes("whitesmoke"), + caml_string_of_jsbytes("yellow"), + caml_string_of_jsbytes("yellowgreen")]), + _b6_= + [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_= + [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_= + [0, + [11, + caml_string_of_jsbytes("rgb("), + [4, + 0, + 0, + 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_= + [0, + [11, + caml_string_of_jsbytes("rgba("), + [4, + 0, + 0, + 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_= + [0, + [11, + caml_string_of_jsbytes("rgba("), + [4, + 0, + 0, + 0, + [12, + 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_= + [0, + [11, + caml_string_of_jsbytes("hsl("), + [4, + 0, + 0, + 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_= + [0, + [11, + caml_string_of_jsbytes("hsla("), + [4, + 0, + 0, + 0, + [12, + 44, + [4, + 0, + 0, + 0, + [12, + 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], + _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], + _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], + _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], + _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], + _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]; + 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} + function symbol$2(x,y){return x === y?1:0} + function symbol$3(x,y){return y < x?1:0} + function symbol$4(x,y){return y <= x?1:0} + var compare=runtime.caml_int_compare; + function equal(x,y){return x === y?1:0} + function max(x,y){return y <= x?x:y} + function min(x,y){return x <= y?x:y} + var + Int_replace_polymorphic_compar= + [0, + symbol, + symbol$0, + symbol$1, + symbol$2, + symbol$3, + symbol$4, + compare, + equal, + max, + min], + make=Stdlib_String[1], + init=Stdlib_String[2], + empty=Stdlib_String[3], + of_bytes=Stdlib_String[4], + to_bytes=Stdlib_String[5], + concat=Stdlib_String[6], + cat=Stdlib_String[7], + compare$0=Stdlib_String[9], + starts_with=Stdlib_String[10], + ends_with=Stdlib_String[11], + contains_from=Stdlib_String[12], + rcontains_from=Stdlib_String[13], + contains=Stdlib_String[14], + sub=Stdlib_String[15], + split_on_char=Stdlib_String[16], + map=Stdlib_String[17], + mapi=Stdlib_String[18], + fold_left=Stdlib_String[19], + fold_right=Stdlib_String[20], + for_all=Stdlib_String[21], + exists=Stdlib_String[22], + trim=Stdlib_String[23], + escaped=Stdlib_String[24], + uppercase_ascii=Stdlib_String[25], + lowercase_ascii=Stdlib_String[26], + capitalize_ascii=Stdlib_String[27], + uncapitalize_ascii=Stdlib_String[28], + iter=Stdlib_String[29], + iteri=Stdlib_String[30], + index_from=Stdlib_String[31], + index_from_opt=Stdlib_String[32], + rindex_from=Stdlib_String[33], + rindex_from_opt=Stdlib_String[34], + index=Stdlib_String[35], + index_opt=Stdlib_String[36], + rindex=Stdlib_String[37], + rindex_opt=Stdlib_String[38], + to_seq=Stdlib_String[39], + to_seqi=Stdlib_String[40], + of_seq=Stdlib_String[41], + get_utf_8_uchar=Stdlib_String[42], + is_valid_utf_8=Stdlib_String[43], + get_utf_16be_uchar=Stdlib_String[44], + is_valid_utf_16be=Stdlib_String[45], + get_utf_16le_uchar=Stdlib_String[46], + is_valid_utf_16le=Stdlib_String[47], + blit=Stdlib_String[48], + copy=Stdlib_String[49], + fill=Stdlib_String[50], + uppercase=Stdlib_String[51], + lowercase=Stdlib_String[52], + capitalize=Stdlib_String[53], + uncapitalize=Stdlib_String[54], + get_uint8=Stdlib_String[55], + get_int8=Stdlib_String[56], + get_uint16_ne=Stdlib_String[57], + get_uint16_be=Stdlib_String[58], + get_uint16_le=Stdlib_String[59], + get_int16_ne=Stdlib_String[60], + get_int16_be=Stdlib_String[61], + get_int16_le=Stdlib_String[62], + get_int32_ne=Stdlib_String[63], + get_int32_be=Stdlib_String[64], + get_int32_le=Stdlib_String[65], + get_int64_ne=Stdlib_String[66], + get_int64_be=Stdlib_String[67], + get_int64_le=Stdlib_String[68]; + function equal$0(x,y){return runtime.caml_string_equal(x,y)} + var + String= + [0, + make, + init, + empty, + of_bytes, + to_bytes, + concat, + cat, + compare$0, + starts_with, + ends_with, + contains_from, + rcontains_from, + contains, + sub, + split_on_char, + map, + mapi, + fold_left, + fold_right, + for_all, + exists, + trim, + escaped, + uppercase_ascii, + lowercase_ascii, + capitalize_ascii, + uncapitalize_ascii, + iter, + iteri, + index_from, + index_from_opt, + rindex_from, + rindex_from_opt, + index, + index_opt, + rindex, + rindex_opt, + to_seq, + to_seqi, + of_seq, + get_utf_8_uchar, + is_valid_utf_8, + get_utf_16be_uchar, + is_valid_utf_16be, + get_utf_16le_uchar, + is_valid_utf_16le, + blit, + copy, + fill, + uppercase, + lowercase, + capitalize, + uncapitalize, + get_uint8, + get_int8, + get_uint16_ne, + get_uint16_be, + get_uint16_le, + get_int16_ne, + get_int16_be, + get_int16_le, + get_int32_ne, + get_int32_be, + get_int32_le, + get_int64_ne, + get_int64_be, + get_int64_le, + equal$0], + chr=Stdlib_Char[1], + escaped$0=Stdlib_Char[2], + lowercase$0=Stdlib_Char[3], + uppercase$0=Stdlib_Char[4], + lowercase_ascii$0=Stdlib_Char[5], + uppercase_ascii$0=Stdlib_Char[6], + compare$1=Stdlib_Char[7]; + function equal$1(x,y){return x === y?1:0} + var + Char= + [0, + chr, + escaped$0, + lowercase$0, + uppercase$0, + lowercase_ascii$0, + uppercase_ascii$0, + compare$1, + equal$1], + symbol$5=Int_replace_polymorphic_compar[1], + symbol$6=Int_replace_polymorphic_compar[2], + symbol$7=Int_replace_polymorphic_compar[3], + symbol$8=Int_replace_polymorphic_compar[4], + symbol$9=Int_replace_polymorphic_compar[5], + symbol$10=Int_replace_polymorphic_compar[6], + compare$2=Int_replace_polymorphic_compar[7], + equal$2=Int_replace_polymorphic_compar[8], + max$0=Int_replace_polymorphic_compar[9], + min$0=Int_replace_polymorphic_compar[10], + Js_of_ocaml_Import= + [0, + Poly, + Int_replace_polymorphic_compar, + String, + Char, + symbol$5, + symbol$6, + symbol$7, + symbol$8, + symbol$9, + symbol$10, + compare$2, + equal$2, + max$0, + min$0]; + caml_register_global(1638,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 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_} + 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_)} + var + Opt= + [0, + no_handler, + return$0, + map$0, + bind, + test, + iter$0, + case$0, + get, + option, + to_option]; + function return$1(_gL_){return _gL_} + 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_} + 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_)} + var + Optdef= + [0, + t39, + return$1, + map$1, + bind$0, + test$0, + iter$1, + case$1, + get$0, + 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 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_)} + var + t25=true, + t4=false, + string_constr=Unsafe[1].String, + t11=Unsafe[1].RegExp, + t4$0=Unsafe[1].Object; + function object_keys(t3){return t4$0.keys(t3)} + var + array_length=Unsafe[1].Array, + array_get=caml_js_get, + array_set=caml_js_set; + function array_map(f,a) + {return a.map + (caml_js_wrap_callback + (function(x,idx,param){return caml_call1(f,x)}))} + function array_mapi(f,a) + {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_} + var + t122=Unsafe[1].Date, + math=Unsafe[1].Math, + error_constr=Unsafe[1].Error, + include=Jsoo_runtime[3], + raise=include[1], + attach_js_backtrace=include[2], + of_exn=include[3], + Error=include[4]; + 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_)} + 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)} + var JSON=Unsafe[1].JSON; + function decodeURI(s){return Unsafe[1].decodeURI(s)} + function decodeURIComponent(s){return Unsafe[1].decodeURIComponent(s)} + function encodeURI(s){return Unsafe[1].encodeURI(s)} + function encodeURIComponent(s){return Unsafe[1].encodeURIComponent(s)} + function escape(s){return Unsafe[1].escape(s)} + function unescape(s){return Unsafe[1].unescape(s)} + function isNaN(i){return Unsafe[1].isNaN(i) | 0} + function parseInt(s) + {var s$0=Unsafe[1].parseInt(s); + return isNaN(s$0)?caml_call1(Stdlib[2],cst_parseInt):s$0} + function parseFloat(s) + {var s$0=Unsafe[1].parseFloat(s); + return isNaN(s$0)?caml_call1(Stdlib[2],cst_parseFloat):s$0} + function _a_(param) + {if(param[1] === Error){var e=param[2];return [0,to_string(e)]}return 0} + caml_call1(Stdlib_Printexc[9],_a_); + function _b_(e) + {return e instanceof array_length + ?0 + :[0,caml_string_of_jsstring(e.toString())]} + caml_call1(Stdlib_Printexc[9],_b_); + function export_js(field,x){return jsoo_exports[field] = x} + function export$0(field,x) + {return export_js(caml_jsstring_of_string(field),x)} + function export_all(obj) + {var + t27=object_keys(obj), + t26= + caml_js_wrap_callback + (function(key,param,_gB_){return export_js(key,obj[key])}); + return t27.forEach(t26)} + var _c_=runtime.caml_js_error_of_exception; + function _d_(_gA_){return _gA_} + var + _e_= + [0, + to_string, + name, + message, + stack, + raise, + attach_js_backtrace, + of_exn, + Error, + function(_gz_){return _gz_}, + _d_]; + function _f_(_gy_){return _gy_} + var + Js_of_ocaml_Js= + [0, + no_handler, + function(_gx_){return _gx_}, + t39, + _f_, + Opt, + Optdef, + t25, + t4, + string_constr, + t11, + t11, + t11, + object_keys, + array_length, + array_length, + array_get, + array_set, + array_map, + array_mapi, + str_array, + match_result, + t122, + t122, + t122, + t122, + t122, + t122, + t122, + t122, + t122, + math, + error_constr, + _e_, + JSON, + decodeURI, + decodeURIComponent, + encodeURI, + encodeURIComponent, + escape, + unescape, + isNaN, + parseInt, + parseFloat, + coerce, + coerce_opt, + export$0, + export_all, + Unsafe, + string_of_error, + raise_js_error, + attach_js_backtrace, + _c_, + Error]; + caml_register_global(1642,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_); + if(match) + {var e=match[1],i$0=i + 1 | 0,acc$0=[0,e,acc],acc=acc$0,i=i$0; + continue} + var i$1=i + 1 | 0,i=i$1; + continue} + return caml_call1(Stdlib_List[9],acc)}} + var + disconnected=1, + preceding=2, + following=4, + contains$0=8, + contained_by=16, + implementation_specific=32; + function has(t,mask){return caml_call2(symbol$8,t & mask,mask)} + function add(x,y){return x | y} + var + DocumentPosition= + [0, + disconnected, + preceding, + following, + contains$0, + contained_by, + implementation_specific, + has, + add, + add]; + function appendChild(p,n){p.appendChild(n);return 0} + function removeChild(p,n){p.removeChild(n);return 0} + function replaceChild(p,n,o){p.replaceChild(n,o);return 0} + function insertBefore(p,n,o){p.insertBefore(n,o);return 0} + function nodeType(e) + {var match=e.nodeType; + if(match) + switch(match - 1 | 0) + {case 0:return [0,e];case 1:return [1,e];case 2:case 3:return [2,e]} + return [3,e]} + function cast(e,t){return e.nodeType === t?e:no_handler} + function element(e){return cast(e,1)} + function text(e) + {if(3 !== e.nodeType && 4 !== e.nodeType)return no_handler;return e} + function attr(e){return cast(e,2)} + function handler(f) + {return function(e) + {if(caml_call1(Opt[5],e)) + {var res=caml_call1(f,e); + if(1 - (res | 0))e.preventDefault(); + return res} + var t18=event,t17=caml_call1(f,t18); + if(1 - (t17 | 0))t18.returnValue = t17; + return t17}} + function full_handler(f) + {return runtime.caml_js_wrap_meth_callback_unsafe + (function(this$0,e) + {if(caml_call1(Opt[5],e)) + {var res=caml_call2(f,this$0,e); + if(1 - (res | 0))e.preventDefault(); + return res} + var t21=event,t20=caml_call2(f,this$0,t21); + if(1 - (t20 | 0))t21.returnValue = t20; + 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_); + 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_)} + return t27} + return t27} + function make$0(s){return caml_jsstring_of_string(s)} + var Event=[0,make$0]; + function addEventListenerWithOptions(t50,t47,capture,once,passive,t48) + {if(t50.addEventListener === t39) + {var + 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_)}}; + t50.attachEvent(t34,t35); + return function(param){return t50.detachEvent(t34,t35)}} + var t49={}; + function iter(t,f){if(t){var b=t[1];return caml_call1(f,b)}return 0} + iter(capture,function(t37){return t49.capture = t37}); + iter(once,function(t39){return t49.once = t39}); + iter(passive,function(t41){return t49.passive = t41}); + t50.addEventListener(t47,t48,t49); + return function(param){return t50.removeEventListener(t47,t48,t49)}} + function addEventListener(e,typ,h,capt) + {return addEventListenerWithOptions(e,typ,[0,capt],0,0,h)} + function removeEventListener(id){return caml_call1(id,0)} + function preventDefault(t54) + {if(caml_call1(Optdef[5],t54.preventDefault))return t54.preventDefault(); + var t53=! ! 0; + return t54.returnValue = t53} + function createCustomEvent(bubbles,cancelable,detail,t62) + {function opt_iter(f,param) + {if(param){var x=param[1];return caml_call1(f,x)}return 0} + var t63={}; + opt_iter(function(x){var t55=! ! x;return t63.bubbles = t55},bubbles); + opt_iter + (function(x){var t57=! ! x;return t63.cancelable = t57},cancelable); + opt_iter(function(t59){return t63.detail = t59},detail); + var t64=Unsafe[1].CustomEvent; + return new t64(t62,t63)} + var + Js_of_ocaml_Dom= + [0, + DocumentPosition, + insertBefore, + replaceChild, + removeChild, + appendChild, + list_of_nodeList, + nodeType, + [0,element,text,attr], + no_handler, + handler, + full_handler, + invoke_handler, + eventTarget, + Event, + addEventListenerWithOptions, + addEventListener, + removeEventListener, + preventDefault, + createCustomEvent]; + caml_register_global(1645,Js_of_ocaml_Dom,"Js_of_ocaml__Dom"); + var + arrayBuffer=Unsafe[1].ArrayBuffer, + int8Array_inBuffer=Unsafe[1].Int8Array, + t11$0=Unsafe[1].Uint8Array, + int16Array_inBuffer=Unsafe[1].Int16Array, + uint16Array_inBuffer=Unsafe[1].Uint16Array, + int32Array_inBuffer=Unsafe[1].Int32Array, + uint32Array_inBuffer=Unsafe[1].Uint32Array, + float32Array_inBuffer=Unsafe[1].Float32Array, + float64Array_inBuffer=Unsafe[1].Float64Array, + set=caml_js_set; + function get$1(a,i){return a[i]} + function unsafe_get(a,i){return a[i]} + var dataView=Unsafe[1].DataView; + function of_arrayBuffer(ab) + {var uint8=new t11$0(ab);return caml_string_of_array(uint8)} + var + Js_of_ocaml_Typed_array= + [0, + arrayBuffer, + runtime.caml_ba_kind_of_typed_array, + runtime.caml_ba_to_typed_array, + runtime.caml_ba_from_typed_array, + int8Array_inBuffer, + int8Array_inBuffer, + int8Array_inBuffer, + int8Array_inBuffer, + int8Array_inBuffer, + t11$0, + t11$0, + t11$0, + t11$0, + t11$0, + int16Array_inBuffer, + int16Array_inBuffer, + int16Array_inBuffer, + int16Array_inBuffer, + int16Array_inBuffer, + uint16Array_inBuffer, + uint16Array_inBuffer, + uint16Array_inBuffer, + uint16Array_inBuffer, + uint16Array_inBuffer, + int32Array_inBuffer, + int32Array_inBuffer, + int32Array_inBuffer, + int32Array_inBuffer, + int32Array_inBuffer, + uint32Array_inBuffer, + uint32Array_inBuffer, + uint32Array_inBuffer, + uint32Array_inBuffer, + uint32Array_inBuffer, + float32Array_inBuffer, + float32Array_inBuffer, + float32Array_inBuffer, + float32Array_inBuffer, + float32Array_inBuffer, + float64Array_inBuffer, + float64Array_inBuffer, + float64Array_inBuffer, + float64Array_inBuffer, + float64Array_inBuffer, + set, + get$1, + unsafe_get, + dataView, + dataView, + [0, + runtime.bigstring_to_array_buffer, + runtime.bigstring_to_typed_array, + runtime.bigstring_of_array_buffer, + 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"); + var t3=Unsafe[1].Blob; + function filter_map(f,param) + {var param$0=param; + for(;;) + {if(param$0) + {var q=param$0[2],v=param$0[1],match=caml_call1(f,v); + if(match){var v$0=match[1];return [0,v$0,filter_map(f,q)]} + var param$0=q; + continue} + return 0}} + function blob_raw(contentType,endings,a) + {var _gm_=0; + if(endings) + var _gn_=116179762 <= endings[1]?_h_:_i_,_go_=_gn_; + else + var _go_=0; + var + _gp_=[0,[0,cst_type,contentType],[0,[0,cst_endings,_go_],_gm_]], + options= + filter_map + (function(param) + {var v=param[2],name=param[1]; + if(v) + {var v$0=v[1];return [0,[0,name,caml_jsstring_of_string(v$0)]]} + return 0}, + _gp_), + options$0= + options + ?runtime.caml_js_object(caml_call1(Stdlib_Array[12],options)) + :t39, + t1=caml_js_from_array(a); + return new t3(t1,options$0)} + 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} + var a$0=param[2]; + return a$0} + if(288368849 <= _gl_) + {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); + return blob_raw(contentType,endings,caml_call1(Stdlib_Array[12],l$0))} + function filename(file) + {var match=caml_call1(Optdef[10],file.name); + if(match){var name=match[1];return name} + var match$0=caml_call1(Optdef[10],file.fileName); + if(match$0){var name$0=match$0[1];return name$0} + return caml_call1(Stdlib[2],cst_can_t_retrieve_file_name_n)} + var doc_constr=Unsafe[1].Document; + function document(e){return e instanceof doc_constr?e:no_handler} + function blob(e){return e instanceof t3?e:no_handler} + function string(e){return typeof e === "string"?e:no_handler} + function arrayBuffer$0(e){return e instanceof arrayBuffer?e:no_handler} + var + loadstart=caml_call1(Event[1],cst_loadstart), + progress=caml_call1(Event[1],cst_progress), + abort=caml_call1(Event[1],cst_abort), + error=caml_call1(Event[1],cst_error), + load=caml_call1(Event[1],cst_load), + loadend=caml_call1(Event[1],cst_loadend), + ReaderEvent=[0,loadstart,progress,abort,error,load,loadend], + fileReader=Unsafe[1].FileReader, + Js_of_ocaml_File= + [0, + blob_from_string, + blob_from_any, + [0,document,blob,function(_gj_){return _gj_},string,arrayBuffer$0], + ReaderEvent, + filename, + fileReader, + addEventListener]; + caml_register_global(1648,Js_of_ocaml_File,"Js_of_ocaml__File"); + var + onIE=runtime.caml_js_on_ie(0) | 0, + click=caml_call1(Event[1],cst_click), + copy$0=caml_call1(Event[1],cst_copy), + cut=caml_call1(Event[1],cst_cut), + paste=caml_call1(Event[1],cst_paste), + dblclick=caml_call1(Event[1],cst_dblclick), + mousedown=caml_call1(Event[1],cst_mousedown), + mouseup=caml_call1(Event[1],cst_mouseup), + mouseover=caml_call1(Event[1],cst_mouseover), + mousemove=caml_call1(Event[1],cst_mousemove), + mouseout=caml_call1(Event[1],cst_mouseout), + keypress=caml_call1(Event[1],cst_keypress), + keydown=caml_call1(Event[1],cst_keydown), + keyup=caml_call1(Event[1],cst_keyup), + mousewheel=caml_call1(Event[1],cst_mousewheel), + DOMMouseScroll=caml_call1(Event[1],cst_DOMMouseScroll), + touchstart=caml_call1(Event[1],cst_touchstart), + touchmove=caml_call1(Event[1],cst_touchmove), + touchend=caml_call1(Event[1],cst_touchend), + touchcancel=caml_call1(Event[1],cst_touchcancel), + dragstart=caml_call1(Event[1],cst_dragstart), + dragend=caml_call1(Event[1],cst_dragend), + dragenter=caml_call1(Event[1],cst_dragenter), + dragover=caml_call1(Event[1],cst_dragover), + dragleave=caml_call1(Event[1],cst_dragleave), + drag=caml_call1(Event[1],cst_drag), + drop=caml_call1(Event[1],cst_drop), + hashchange=caml_call1(Event[1],cst_hashchange), + change=caml_call1(Event[1],cst_change), + input=caml_call1(Event[1],cst_input), + timeupdate=caml_call1(Event[1],cst_timeupdate), + submit=caml_call1(Event[1],cst_submit), + scroll=caml_call1(Event[1],cst_scroll), + focus=caml_call1(Event[1],cst_focus), + blur=caml_call1(Event[1],cst_blur), + load$0=caml_call1(Event[1],cst_load$0), + unload=caml_call1(Event[1],cst_unload), + beforeunload=caml_call1(Event[1],cst_beforeunload), + resize=caml_call1(Event[1],cst_resize), + orientationchange=caml_call1(Event[1],cst_orientationchange), + popstate=caml_call1(Event[1],cst_popstate), + error$0=caml_call1(Event[1],cst_error$0), + abort$0=caml_call1(Event[1],cst_abort$0), + select=caml_call1(Event[1],cst_select), + online=caml_call1(Event[1],cst_online), + offline=caml_call1(Event[1],cst_offline), + checking=caml_call1(Event[1],cst_checking), + noupdate=caml_call1(Event[1],cst_noupdate), + downloading=caml_call1(Event[1],cst_downloading), + progress$0=caml_call1(Event[1],cst_progress$0), + updateready=caml_call1(Event[1],cst_updateready), + cached=caml_call1(Event[1],cst_cached), + obsolete=caml_call1(Event[1],cst_obsolete), + domContentLoaded=caml_call1(Event[1],cst_DOMContentLoaded), + animationstart=caml_call1(Event[1],cst_animationstart), + animationend=caml_call1(Event[1],cst_animationend), + animationiteration=caml_call1(Event[1],cst_animationiteration), + animationcancel=caml_call1(Event[1],cst_animationcancel), + canplay=caml_call1(Event[1],cst_canplay), + canplaythrough=caml_call1(Event[1],cst_canplaythrough), + durationchange=caml_call1(Event[1],cst_durationchange), + emptied=caml_call1(Event[1],cst_emptied), + ended=caml_call1(Event[1],cst_ended), + gotpointercapture=caml_call1(Event[1],cst_gotpointercapture), + loadeddata=caml_call1(Event[1],cst_loadeddata), + loadedmetadata=caml_call1(Event[1],cst_loadedmetadata), + loadstart$0=caml_call1(Event[1],cst_loadstart$0), + lostpointercapture=caml_call1(Event[1],cst_lostpointercapture), + message$0=caml_call1(Event[1],cst_message), + pause=caml_call1(Event[1],cst_pause), + play=caml_call1(Event[1],cst_play), + playing=caml_call1(Event[1],cst_playing), + pointerenter=caml_call1(Event[1],cst_pointerenter), + pointercancel=caml_call1(Event[1],cst_pointercancel), + pointerdown=caml_call1(Event[1],cst_pointerdown), + pointerleave=caml_call1(Event[1],cst_pointerleave), + pointermove=caml_call1(Event[1],cst_pointermove), + pointerout=caml_call1(Event[1],cst_pointerout), + pointerover=caml_call1(Event[1],cst_pointerover), + pointerup=caml_call1(Event[1],cst_pointerup), + ratechange=caml_call1(Event[1],cst_ratechange), + seeked=caml_call1(Event[1],cst_seeked), + seeking=caml_call1(Event[1],cst_seeking), + stalled=caml_call1(Event[1],cst_stalled), + suspend=caml_call1(Event[1],cst_suspend), + 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) + {var t8=loc.protocol,t7=loc.hostname,t9=loc.port; + if + (caml_call2(symbol$8,t8.length,0) + && + caml_call2(symbol$8,t7.length,0)) + return ""; + var t13=t8.concat("//",t7); + 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_)} + 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 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 getElementById_opt(id) + {var t19=caml_jsstring_of_string(id),_f$_=t87.getElementById(t19); + return caml_call1(Opt[10],_f$_)} + 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 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)} + function unsafeCreateElement(doc,name){return createElement(doc,name)} + var createElementSyntax=[0,785140586]; + function unsafeCreateElementEx(type,name,doc,elt) + {for(;;) + {if(0 === type && 0 === name)return createElement(doc,elt); + var _f1_=createElementSyntax[1]; + if(785140586 === _f1_) + {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_; + continue} + if(982028505 <= _f1_) + {var t40=new array_length(); + t40.push("<",caml_jsstring_of_string(elt)); + opt_iter + (type, + function(t) + {var t34=caml_js_html_escape(t); + t40.push(' type="',t34,'"'); + return 0}); + opt_iter + (name, + function(n) + {var t38=caml_js_html_escape(n); + t40.push(' name="',t38,'"'); + return 0}); + t40.push(">"); + return doc.createElement(t40.join(""))} + var t28=createElement(doc,elt); + opt_iter(type,function(t25){return t28.type = t25}); + opt_iter(name,function(t27){return t28.name = t27}); + return t28}} + function createHtml(doc){return unsafeCreateElement(doc,cst_html)} + function createHead(doc){return unsafeCreateElement(doc,cst_head)} + function createLink(doc){return unsafeCreateElement(doc,cst_link)} + function createTitle(doc){return unsafeCreateElement(doc,cst_title)} + function createMeta(doc){return unsafeCreateElement(doc,cst_meta)} + function createBase(doc){return unsafeCreateElement(doc,cst_base)} + function createStyle(doc){return unsafeCreateElement(doc,cst_style)} + function createBody(doc){return unsafeCreateElement(doc,cst_body)} + function createForm(doc){return unsafeCreateElement(doc,cst_form)} + function createOptgroup(doc){return unsafeCreateElement(doc,cst_optgroup)} + function createOption(doc){return unsafeCreateElement(doc,cst_option)} + function createSelect(type,name,doc) + {return unsafeCreateElementEx(type,name,doc,cst_select$0)} + function createInput(type,name,doc) + {return unsafeCreateElementEx(type,name,doc,cst_input$0)} + function createTextarea(type,name,doc) + {return unsafeCreateElementEx(type,name,doc,cst_textarea)} + function createButton(type,name,doc) + {return unsafeCreateElementEx(type,name,doc,cst_button)} + function createLabel(doc){return unsafeCreateElement(doc,cst_label)} + function createFieldset(doc){return unsafeCreateElement(doc,cst_fieldset)} + function createLegend(doc){return unsafeCreateElement(doc,cst_legend)} + function createUl(doc){return unsafeCreateElement(doc,cst_ul)} + function createOl(doc){return unsafeCreateElement(doc,cst_ol)} + function createDl(doc){return unsafeCreateElement(doc,cst_dl)} + function createLi(doc){return unsafeCreateElement(doc,cst_li)} + function createDiv(doc){return unsafeCreateElement(doc,cst_div)} + function createEmbed(doc){return unsafeCreateElement(doc,cst_embed)} + function createP(doc){return unsafeCreateElement(doc,cst_p)} + function createH1(doc){return unsafeCreateElement(doc,cst_h1)} + function createH2(doc){return unsafeCreateElement(doc,cst_h2)} + function createH3(doc){return unsafeCreateElement(doc,cst_h3)} + function createH4(doc){return unsafeCreateElement(doc,cst_h4)} + function createH5(doc){return unsafeCreateElement(doc,cst_h5)} + function createH6(doc){return unsafeCreateElement(doc,cst_h6)} + function createQ(doc){return unsafeCreateElement(doc,cst_q)} + function createBlockquote(doc) + {return unsafeCreateElement(doc,cst_blockquote)} + function createPre(doc){return unsafeCreateElement(doc,cst_pre)} + function createBr(doc){return unsafeCreateElement(doc,cst_br)} + function createHr(doc){return unsafeCreateElement(doc,cst_hr)} + function createIns(doc){return unsafeCreateElement(doc,cst_ins)} + function createDel(doc){return unsafeCreateElement(doc,cst_del)} + function createA(doc){return unsafeCreateElement(doc,cst_a)} + function createImg(doc){return unsafeCreateElement(doc,cst_img)} + function createObject(doc){return unsafeCreateElement(doc,cst_object)} + function createParam(doc){return unsafeCreateElement(doc,cst_param)} + function createMap(doc){return unsafeCreateElement(doc,cst_map)} + function createArea(doc){return unsafeCreateElement(doc,cst_area)} + function createScript(doc){return unsafeCreateElement(doc,cst_script)} + function createTable(doc){return unsafeCreateElement(doc,cst_table)} + function createCaption(doc){return unsafeCreateElement(doc,cst_caption)} + function createCol(doc){return unsafeCreateElement(doc,cst_col)} + function createColgroup(doc){return unsafeCreateElement(doc,cst_colgroup)} + function createThead(doc){return unsafeCreateElement(doc,cst_thead)} + function createTfoot(doc){return unsafeCreateElement(doc,cst_tfoot)} + function createTbody(doc){return unsafeCreateElement(doc,cst_tbody)} + function createTr(doc){return unsafeCreateElement(doc,cst_tr)} + function createTh(doc){return unsafeCreateElement(doc,cst_th)} + function createTd(doc){return unsafeCreateElement(doc,cst_td)} + function createSub(doc){return createElement(doc,cst_sub)} + function createSup(doc){return createElement(doc,cst_sup)} + function createSpan(doc){return createElement(doc,cst_span)} + function createTt(doc){return createElement(doc,cst_tt)} + function createI(doc){return createElement(doc,cst_i)} + function createB(doc){return createElement(doc,cst_b)} + function createBig(doc){return createElement(doc,cst_big)} + function createSmall(doc){return createElement(doc,cst_small)} + function createEm(doc){return createElement(doc,cst_em)} + function createStrong(doc){return createElement(doc,cst_strong)} + function createCite(doc){return createElement(doc,cst_cite)} + function createDfn(doc){return createElement(doc,cst_dfn)} + function createCode(doc){return createElement(doc,cst_code)} + function createSamp(doc){return createElement(doc,cst_samp)} + function createKbd(doc){return createElement(doc,cst_kbd)} + function createVar(doc){return createElement(doc,cst_var)} + function createAbbr(doc){return createElement(doc,cst_abbr)} + function createDd(doc){return createElement(doc,cst_dd)} + function createDt(doc){return createElement(doc,cst_dt)} + function createNoscript(doc){return createElement(doc,cst_noscript)} + function createAddress(doc){return createElement(doc,cst_address)} + function createFrameset(doc){return unsafeCreateElement(doc,cst_frameset)} + function createFrame(doc){return unsafeCreateElement(doc,cst_frame)} + function createIframe(doc){return unsafeCreateElement(doc,cst_iframe)} + function createAudio(doc){return unsafeCreateElement(doc,cst_audio)} + function createVideo(doc){return unsafeCreateElement(doc,cst_video)} + var + Canvas_not_available= + [248,cst_Js_of_ocaml_Dom_html_Canva,caml_fresh_oo_id(0)]; + function createCanvas(doc) + {var t52=unsafeCreateElement(doc,cst_canvas); + if(1 - caml_call1(Opt[5],t52.getContext))throw Canvas_not_available; + return t52} + var + html_element=Unsafe[1].HTMLElement, + element$0= + html_element === t39 + ?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} + 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)} + function blockquote(e){return unsafeCoerce(cst_blockquote$0,e)} + function body(e){return unsafeCoerce(cst_body$0,e)} + function br(e){return unsafeCoerce(cst_br$0,e)} + function button(e){return unsafeCoerce(cst_button$0,e)} + function canvas(e){return unsafeCoerce(cst_canvas$0,e)} + function caption(e){return unsafeCoerce(cst_caption$0,e)} + function col(e){return unsafeCoerce(cst_col$0,e)} + function colgroup(e){return unsafeCoerce(cst_colgroup$0,e)} + function del(e){return unsafeCoerce(cst_del$0,e)} + function div(e){return unsafeCoerce(cst_div$0,e)} + function dl(e){return unsafeCoerce(cst_dl$0,e)} + function fieldset(e){return unsafeCoerce(cst_fieldset$0,e)} + function embed(e){return unsafeCoerce(cst_embed$0,e)} + function form(e){return unsafeCoerce(cst_form$0,e)} + function frameset(e){return unsafeCoerce(cst_frameset$0,e)} + function frame(e){return unsafeCoerce(cst_frame$0,e)} + function h1(e){return unsafeCoerce(cst_h1$0,e)} + function h2(e){return unsafeCoerce(cst_h2$0,e)} + function h3(e){return unsafeCoerce(cst_h3$0,e)} + function h4(e){return unsafeCoerce(cst_h4$0,e)} + function h5(e){return unsafeCoerce(cst_h5$0,e)} + function h6(e){return unsafeCoerce(cst_h6$0,e)} + function head(e){return unsafeCoerce(cst_head$0,e)} + function hr(e){return unsafeCoerce(cst_hr$0,e)} + function html(e){return unsafeCoerce(cst_html$0,e)} + function iframe(e){return unsafeCoerce(cst_iframe$0,e)} + function img(e){return unsafeCoerce(cst_img$0,e)} + function input$0(e){return unsafeCoerce(cst_input$1,e)} + function ins(e){return unsafeCoerce(cst_ins$0,e)} + function label(e){return unsafeCoerce(cst_label$0,e)} + function legend(e){return unsafeCoerce(cst_legend$0,e)} + function li(e){return unsafeCoerce(cst_li$0,e)} + function link(e){return unsafeCoerce(cst_link$0,e)} + function map$2(e){return unsafeCoerce(cst_map$0,e)} + function meta(e){return unsafeCoerce(cst_meta$0,e)} + function object(e){return unsafeCoerce(cst_object$0,e)} + function ol(e){return unsafeCoerce(cst_ol$0,e)} + function optgroup(e){return unsafeCoerce(cst_optgroup$0,e)} + function option$1(e){return unsafeCoerce(cst_option$0,e)} + function p(e){return unsafeCoerce(cst_p$0,e)} + function param(e){return unsafeCoerce(cst_param$0,e)} + function pre(e){return unsafeCoerce(cst_pre$0,e)} + function q(e){return unsafeCoerce(cst_q$0,e)} + function script(e){return unsafeCoerce(cst_script$0,e)} + function select$0(e){return unsafeCoerce(cst_select$1,e)} + function style(e){return unsafeCoerce(cst_style$0,e)} + function table(e){return unsafeCoerce(cst_table$0,e)} + function tbody(e){return unsafeCoerce(cst_tbody$0,e)} + function td(e){return unsafeCoerce(cst_td$0,e)} + function textarea(e){return unsafeCoerce(cst_textarea$0,e)} + function tfoot(e){return unsafeCoerce(cst_tfoot$0,e)} + function th(e){return unsafeCoerce(cst_th$0,e)} + function thead(e){return unsafeCoerce(cst_thead$0,e)} + function title(e){return unsafeCoerce(cst_title$0,e)} + function tr(e){return unsafeCoerce(cst_tr$0,e)} + function ul(e){return unsafeCoerce(cst_ul$0,e)} + function audio(e){return unsafeCoerce(cst_audio$0,e)} + function video(e){return unsafeCoerce(cst_video$0,e)} + function unsafeCoerceEvent(constr,ev) + {if(constr !== t39 && ev instanceof constr)return ev;return no_handler} + function mouseEvent(ev){return unsafeCoerceEvent(Unsafe[1].MouseEvent,ev)} + function keyboardEvent(ev) + {return unsafeCoerceEvent(Unsafe[1].KeyboardEvent,ev)} + function wheelEvent(ev){return unsafeCoerceEvent(Unsafe[1].WheelEvent,ev)} + function mouseScrollEvent(ev) + {return unsafeCoerceEvent(Unsafe[1].MouseScrollEvent,ev)} + function popStateEvent(ev) + {return unsafeCoerceEvent(Unsafe[1].PopStateEvent,ev)} + function messageEvent(ev) + {return unsafeCoerceEvent(Unsafe[1].MessageEvent,ev)} + function eventRelatedTarget(e) + {function _fX_(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_)} + 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 elementClientPosition(e) + {var t80=e.getBoundingClientRect(),t81=t87.body,t82=t87.documentElement; + return [0, + ((t80.left | 0) - t81.clientLeft | 0) - t82.clientLeft | 0, + ((t80.top | 0) - t81.clientTop | 0) - t82.clientTop | 0]} + function getDocumentScroll(param) + {var t88=t87.body,t89=t87.documentElement; + return [0, + t88.scrollLeft + t89.scrollLeft | 0, + t88.scrollTop + t89.scrollTop | 0]} + function buttonPressed(ev) + {function _fR_(x){return x} + function _fS_(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_)} + 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_)} + function addMousewheelEventListener(e,h,capt) + {return addMousewheelEventListenerWith(e,[0,capt],0,0,h)} + function f(v) + {var + match=caml_string_of_jsstring(v), + switch$0=caml_string_compare(match,cst_KeyH); + if(0 <= switch$0) + {if(! (0 < switch$0))return 8; + var switch$1=caml_string_compare(match,cst_Numpad4); + if(0 <= switch$1) + {if(! (0 < switch$1))return 72; + var switch$2=caml_string_compare(match,cst_PageUp); + if(0 <= switch$2) + {if(! (0 < switch$2))return 98; + var switch$3=caml_string_compare(match,cst_ShiftRight); + if(0 <= switch$3) + {if(! (0 < switch$3))return 91; + if(! caml_string_notequal(match,cst_Slash))return 55; + if(! caml_string_notequal(match,cst_Space))return 41; + if(! caml_string_notequal(match,cst_Tab))return 39; + if(! caml_string_notequal(match,cst_VolumeDown))return 103; + if(! caml_string_notequal(match,cst_VolumeMute))return 102; + if(! caml_string_notequal(match,cst_VolumeUp))return 104} + else + {if(! caml_string_notequal(match,cst_Pause))return 123; + if(! caml_string_notequal(match,cst_Period))return 54; + if(! caml_string_notequal(match,cst_PrintScreen))return 120; + if(! caml_string_notequal(match,cst_Quote))return 50; + if(! caml_string_notequal(match,cst_ScrollLock))return 119; + if(! caml_string_notequal(match,cst_Semicolon))return 49; + if(! caml_string_notequal(match,cst_ShiftLeft))return 90}} + else + {var switch$4=caml_string_compare(match,cst_NumpadDivide); + if(0 <= switch$4) + {if(! (0 < switch$4))return 84; + if(! caml_string_notequal(match,cst_NumpadEnter))return 83; + if(! caml_string_notequal(match,cst_NumpadEqual))return 82; + if(! caml_string_notequal(match,cst_NumpadMultiply))return 78; + if(! caml_string_notequal(match,cst_NumpadSubtract))return 79; + if(! caml_string_notequal(match,cst_OSLeft))return 117; + if(! caml_string_notequal(match,cst_OSRight))return 118; + if(! caml_string_notequal(match,cst_PageDown))return 99} + else + {if(! caml_string_notequal(match,cst_Numpad5))return 73; + if(! caml_string_notequal(match,cst_Numpad6))return 74; + if(! caml_string_notequal(match,cst_Numpad7))return 75; + if(! caml_string_notequal(match,cst_Numpad8))return 76; + if(! caml_string_notequal(match,cst_Numpad9))return 77; + if(! caml_string_notequal(match,cst_NumpadAdd))return 80; + if(! caml_string_notequal(match,cst_NumpadDecimal))return 81}}} + else + {var switch$5=caml_string_compare(match,cst_KeyX); + if(0 <= switch$5) + {if(! (0 < switch$5))return 24; + var switch$6=caml_string_compare(match,cst_MetaRight); + if(0 <= switch$6) + {if(! (0 < switch$6))return 89; + if(! caml_string_notequal(match,cst_Minus))return 37; + if(! caml_string_notequal(match,cst_NumLock))return 85; + if(! caml_string_notequal(match,cst_Numpad0))return 68; + if(! caml_string_notequal(match,cst_Numpad1))return 69; + if(! caml_string_notequal(match,cst_Numpad2))return 70; + if(! caml_string_notequal(match,cst_Numpad3))return 71} + else + {if(! caml_string_notequal(match,cst_KeyY))return 25; + if(! caml_string_notequal(match,cst_KeyZ))return 26; + if(! caml_string_notequal(match,cst_MediaPlayPause))return 107; + if(! caml_string_notequal(match,cst_MediaStop))return 108; + if(! caml_string_notequal(match,cst_MediaTrackNext))return 106; + if(! caml_string_notequal(match,cst_MediaTrackPrevious)) + return 105; + if(! caml_string_notequal(match,cst_MetaLeft))return 88}} + else + {var switch$7=caml_string_compare(match,cst_KeyP); + if(0 <= switch$7) + {if(! (0 < switch$7))return 16; + if(! caml_string_notequal(match,cst_KeyQ))return 17; + if(! caml_string_notequal(match,cst_KeyR))return 18; + if(! caml_string_notequal(match,cst_KeyS))return 19; + if(! caml_string_notequal(match,cst_KeyT))return 20; + if(! caml_string_notequal(match,cst_KeyU))return 21; + if(! caml_string_notequal(match,cst_KeyV))return 22; + if(! caml_string_notequal(match,cst_KeyW))return 23} + else + {if(! caml_string_notequal(match,cst_KeyI))return 9; + if(! caml_string_notequal(match,cst_KeyJ))return 10; + if(! caml_string_notequal(match,cst_KeyK))return 11; + if(! caml_string_notequal(match,cst_KeyL))return 12; + if(! caml_string_notequal(match,cst_KeyM))return 13; + if(! caml_string_notequal(match,cst_KeyN))return 14; + if(! caml_string_notequal(match,cst_KeyO))return 15}}}} + else + {var switch$8=caml_string_compare(match,cst_Digit6); + if(0 <= switch$8) + {if(! (0 < switch$8))return 33; + var switch$9=caml_string_compare(match,cst_F6); + if(0 <= switch$9) + {if(! (0 < switch$9))return 61; + var switch$10=caml_string_compare(match,cst_KeyA); + if(0 <= switch$10) + {if(! (0 < switch$10))return 1; + if(! caml_string_notequal(match,cst_KeyB))return 2; + if(! caml_string_notequal(match,cst_KeyC))return 3; + if(! caml_string_notequal(match,cst_KeyD))return 4; + if(! caml_string_notequal(match,cst_KeyE))return 5; + if(! caml_string_notequal(match,cst_KeyF))return 6; + if(! caml_string_notequal(match,cst_KeyG))return 7} + else + {if(! caml_string_notequal(match,cst_F7))return 62; + if(! caml_string_notequal(match,cst_F8))return 63; + if(! caml_string_notequal(match,cst_F9))return 64; + if(! caml_string_notequal(match,cst_Home))return 100; + if(! caml_string_notequal(match,cst_Insert))return 44; + if(! caml_string_notequal(match,cst_IntlBackslash))return 121; + if(! caml_string_notequal(match,cst_IntlYen))return 122}} + else + {var switch$11=caml_string_compare(match,cst_F1); + if(0 <= switch$11) + {if(! (0 < switch$11))return 56; + if(! caml_string_notequal(match,cst_F10))return 65; + if(! caml_string_notequal(match,cst_F11))return 66; + if(! caml_string_notequal(match,cst_F12))return 67; + if(! caml_string_notequal(match,cst_F2))return 57; + if(! caml_string_notequal(match,cst_F3))return 58; + if(! caml_string_notequal(match,cst_F4))return 59; + if(! caml_string_notequal(match,cst_F5))return 60} + else + {if(! caml_string_notequal(match,cst_Digit7))return 34; + if(! caml_string_notequal(match,cst_Digit8))return 35; + if(! caml_string_notequal(match,cst_Digit9))return 36; + if(! caml_string_notequal(match,cst_End))return 101; + if(! caml_string_notequal(match,cst_Enter))return 40; + if(! caml_string_notequal(match,cst_Equal))return 38; + if(! caml_string_notequal(match,cst_Escape))return 42}}} + else + {var switch$12=caml_string_compare(match,cst_BrowserRefresh); + if(0 <= switch$12) + {if(! (0 < switch$12))return 113; + var switch$13=caml_string_compare(match,cst_Delete); + if(0 <= switch$13) + {if(! (0 < switch$13))return 45; + if(! caml_string_notequal(match,cst_Digit0))return 27; + if(! caml_string_notequal(match,cst_Digit1))return 28; + if(! caml_string_notequal(match,cst_Digit2))return 29; + if(! caml_string_notequal(match,cst_Digit3))return 30; + if(! caml_string_notequal(match,cst_Digit4))return 31; + if(! caml_string_notequal(match,cst_Digit5))return 32} + else + {if(! caml_string_notequal(match,cst_BrowserSearch))return 110; + if(! caml_string_notequal(match,cst_BrowserStop))return 114; + if(! caml_string_notequal(match,cst_CapsLock))return 46; + if(! caml_string_notequal(match,cst_Comma))return 53; + if(! caml_string_notequal(match,cst_ContextMenu))return 109; + if(! caml_string_notequal(match,cst_ControlLeft))return 86; + if(! caml_string_notequal(match,cst_ControlRight))return 87}} + else + {var switch$14=caml_string_compare(match,cst_Backslash); + if(0 <= switch$14) + {if(! (0 < switch$14))return 52; + if(! caml_string_notequal(match,cst_Backspace))return 43; + if(! caml_string_notequal(match,cst_BracketLeft))return 47; + if(! caml_string_notequal(match,cst_BracketRight))return 48; + if(! caml_string_notequal(match,cst_BrowserBack))return 116; + if(! caml_string_notequal(match,cst_BrowserFavorites)) + return 112; + if(! caml_string_notequal(match,cst_BrowserForward))return 115; + if(! caml_string_notequal(match,cst_BrowserHome))return 111} + else + {if(! caml_string_notequal(match,cst_AltLeft))return 92; + if(! caml_string_notequal(match,cst_AltRight))return 93; + if(! caml_string_notequal(match,cst_ArrowDown))return 97; + if(! caml_string_notequal(match,cst_ArrowLeft))return 94; + if(! caml_string_notequal(match,cst_ArrowRight))return 95; + if(! caml_string_notequal(match,cst_ArrowUp))return 96; + if(! caml_string_notequal(match,cst_Backquote))return 51}}}} + return 0} + function try_key_code_left(param) + {if(19 <= param) + {if(91 === param)return 88} + else + if(16 <= param) + switch(param - 16 | 0) + {case 0:return 90;case 1:return 86;default:return 92} + return 0} + function try_key_code_right(param) + {if(19 <= param) + {if(91 === param)return 89} + else + if(16 <= param) + switch(param - 16 | 0) + {case 0:return 91;case 1:return 87;default:return 93} + return 0} + function try_key_code_numpad(param) + {if(47 <= param) + {var switcher=param - 96 | 0; + if(! (15 < switcher >>> 0)) + switch(switcher) + {case 0:return 68; + case 1:return 69; + case 2:return 70; + case 3:return 71; + case 4:return 72; + case 5:return 73; + case 6:return 74; + case 7:return 75; + case 8:return 76; + case 9:return 77; + case 10:return 78; + case 11:return 80; + case 12:break; + case 13:return 79; + case 14:return 81; + default:return 84}} + else + if(12 <= param) + switch(param - 12 | 0) + {case 0:return 73; + case 1:return 83; + case 21:return 77; + case 22:return 71; + case 23:return 69; + case 24:return 75; + case 25:return 72; + case 26:return 76; + case 27:return 74; + case 28:return 70; + case 33:return 68; + case 34:return 81 + } + return 0} + function try_key_code_normal(param) + {var switcher=param - 8 | 0; + if(! (214 < switcher >>> 0)) + {var _fM_=switcher; + if(67 <= _fM_) + switch(_fM_) + {case 67:return 11; + case 68:return 12; + case 69:return 13; + case 70:return 14; + case 71:return 15; + case 72:return 16; + case 73:return 17; + case 74:return 18; + case 75:return 19; + case 76:return 20; + case 77:return 21; + case 78:return 22; + case 79:return 23; + case 80:return 24; + case 81:return 25; + case 82:return 26; + case 85:return 109; + case 104:return 56; + case 105:return 57; + case 106:return 58; + case 107:return 59; + case 108:return 60; + case 109:return 61; + case 110:return 62; + case 111:return 63; + case 112:return 64; + case 113:return 65; + case 114:return 66; + case 115:return 67; + case 137:return 119; + case 178:return 49; + case 179:return 38; + case 180:return 53; + case 181:return 37; + case 182:return 54; + case 183:return 55; + case 184:return 51; + case 211:return 47; + case 212:return 52; + case 213:return 48; + case 214:return 50 + } + else + switch(_fM_) + {case 0:return 43; + case 1:return 39; + case 5:return 40; + case 11:return 123; + case 12:return 46; + case 19:return 42; + case 24:return 41; + case 25:return 98; + case 26:return 99; + case 27:return 101; + case 28:return 100; + case 29:return 94; + case 30:return 96; + case 31:return 95; + case 32:return 97; + case 34:return 120; + case 37:return 44; + case 38:return 45; + case 40:return 27; + case 41:return 28; + case 42:return 29; + case 43:return 30; + case 44:return 31; + case 45:return 32; + case 46:return 33; + case 47:return 34; + case 48:return 35; + case 49:return 36; + case 57:return 1; + case 58:return 2; + case 59:return 3; + case 60:return 4; + case 61:return 5; + case 62:return 6; + case 63:return 7; + case 64:return 8; + case 65:return 9; + case 66:return 10 + }} + return 0} + function make_unidentified(param){return 0} + 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 match=evt.location,switcher=match - 1 | 0; + if(2 < switcher >>> 0) + var _fH_=make_unidentified; + else + switch(switcher) + {case 0: + var + _fC_=evt.keyCode, + _fH_=function(_fJ_){return run_next(_fC_,try_key_code_left,_fJ_)}; + break; + case 1: + var + _fD_=evt.keyCode, + _fH_=function(_fI_){return run_next(_fD_,try_key_code_right,_fI_)}; + break; + default: + var + _fE_=evt.keyCode, + _fH_=function(_fK_){return run_next(_fE_,try_key_code_numpad,_fK_)}} + var value=evt.code; + return symbol$11 + (symbol$11 + (symbol$11 + (0, + function(v) + {return v?v:caml_call3(Optdef[7],value,make_unidentified,f)}), + _fH_), + _fG_)} + 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} + 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; + 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_} + function tagged(e) + {var t112=e.tagName,tag=caml_string_of_jsbytes(t112.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)) + switch(switcher) + {case 0: + return caml_string_notequal(tag,cst_a$1) + ?caml_string_notequal(tag,cst_area$1) + ?caml_string_notequal(tag,cst_audio$1)?[61,e]:[2,e] + :[1,e] + :[0,e]; + case 1: + return caml_string_notequal(tag,cst_base$1) + ?caml_string_notequal(tag,cst_blockquote$1) + ?caml_string_notequal(tag,cst_body$1) + ?caml_string_notequal(tag,cst_br$1) + ?caml_string_notequal(tag,cst_button$1)?[61,e]:[7,e] + :[6,e] + :[5,e] + :[4,e] + :[3,e]; + case 2: + return caml_string_notequal(tag,cst_canvas$1) + ?caml_string_notequal(tag,cst_caption$1) + ?caml_string_notequal(tag,cst_col$1) + ?caml_string_notequal(tag,cst_colgroup$1)?[61,e]:[11,e] + :[10,e] + :[9,e] + :[8,e]; + case 3: + return caml_string_notequal(tag,cst_del$1) + ?caml_string_notequal(tag,cst_div$1) + ?caml_string_notequal(tag,cst_dl$1)?[61,e]:[14,e] + :[13,e] + :[12,e]; + case 4:return caml_string_notequal(tag,cst_embed$1)?[61,e]:[15,e]; + case 5: + return caml_string_notequal(tag,cst_fieldset$1) + ?caml_string_notequal(tag,cst_form$1) + ?caml_string_notequal(tag,cst_frame$1) + ?caml_string_notequal(tag,cst_frameset$1)?[61,e]:[18,e] + :[19,e] + :[17,e] + :[16,e]; + case 7: + return caml_string_notequal(tag,cst_h1$1) + ?caml_string_notequal(tag,cst_h2$1) + ?caml_string_notequal(tag,cst_h3$1) + ?caml_string_notequal(tag,cst_h4$1) + ?caml_string_notequal(tag,cst_h5$1) + ?caml_string_notequal(tag,cst_h6$1) + ?caml_string_notequal(tag,cst_head$1) + ?caml_string_notequal(tag,cst_hr$1) + ?caml_string_notequal(tag,cst_html$1)?[61,e]:[28,e] + :[27,e] + :[26,e] + :[25,e] + :[24,e] + :[23,e] + :[22,e] + :[21,e] + :[20,e]; + case 8: + return caml_string_notequal(tag,cst_iframe$1) + ?caml_string_notequal(tag,cst_img$1) + ?caml_string_notequal(tag,cst_input$2) + ?caml_string_notequal(tag,cst_ins$1)?[61,e]:[32,e] + :[31,e] + :[30,e] + :[29,e]; + case 11: + return caml_string_notequal(tag,cst_label$1) + ?caml_string_notequal(tag,cst_legend$1) + ?caml_string_notequal(tag,cst_li$1) + ?caml_string_notequal(tag,cst_link$1)?[61,e]:[36,e] + :[35,e] + :[34,e] + :[33,e]; + case 12: + return caml_string_notequal(tag,cst_map$1) + ?caml_string_notequal(tag,cst_meta$1)?[61,e]:[38,e] + :[37,e]; + case 14: + return caml_string_notequal(tag,cst_object$1) + ?caml_string_notequal(tag,cst_ol$1) + ?caml_string_notequal(tag,cst_optgroup$1) + ?caml_string_notequal(tag,cst_option$1)?[61,e]:[42,e] + :[41,e] + :[40,e] + :[39,e]; + case 15: + return caml_string_notequal(tag,cst_p$1) + ?caml_string_notequal(tag,cst_param$1) + ?caml_string_notequal(tag,cst_pre$1)?[61,e]:[45,e] + :[44,e] + :[43,e]; + case 16:return caml_string_notequal(tag,cst_q$1)?[61,e]:[46,e]; + case 18: + return caml_string_notequal(tag,cst_script$1) + ?caml_string_notequal(tag,cst_select$2) + ?caml_string_notequal(tag,cst_style$1)?[61,e]:[49,e] + :[48,e] + :[47,e]; + case 19: + return caml_string_notequal(tag,cst_table$1) + ?caml_string_notequal(tag,cst_tbody$1) + ?caml_string_notequal(tag,cst_td$1) + ?caml_string_notequal(tag,cst_textarea$1) + ?caml_string_notequal(tag,cst_tfoot$1) + ?caml_string_notequal(tag,cst_th$1) + ?caml_string_notequal(tag,cst_thead$1) + ?caml_string_notequal(tag,cst_title$1) + ?caml_string_notequal(tag,cst_tr$1)?[61,e]:[58,e] + :[57,e] + :[56,e] + :[55,e] + :[54,e] + :[53,e] + :[52,e] + :[51,e] + :[50,e]; + case 20:return caml_string_notequal(tag,cst_ul$1)?[61,e]:[59,e]; + case 21:return caml_string_notequal(tag,cst_video$1)?[61,e]:[60,e] + } + 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 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 opt_taggedEvent(ev) + {function _fd_(ev){return [0,taggedEvent(ev)]} + function _fe_(param){return 0} + return caml_call3(Opt[7],ev,_fe_,_fd_)} + 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_)} + var + requestAnimationFrame= + runtime.caml_js_pure_expr + (function(param) + {var + l= + [0, + _j_.requestAnimationFrame, + [0, + _j_.mozRequestAnimationFrame, + [0, + _j_.webkitRequestAnimationFrame, + [0, + _j_.oRequestAnimationFrame, + [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]) + {var + now=function(param){var t123=new t122();return t123.getTime()}, + last=[0,now(0)]; + return function(callback) + {var + t=now(0), + dt=last[1] + 16.6666666666666679 - t, + dt$0=dt < 0.?0.:dt; + last[1] = t; + _j_.setTimeout(callback,dt$0); + return 0}} + throw _fa_}}); + function hasPushState(param) + {var t128=_j_.history;return caml_call1(Optdef[5],t128.pushState)} + function hasPlaceholder(param) + {var t129=createInput(0,0,t87); + return caml_call1(Optdef[5],t129.placeholder)} + function hasRequired(param) + {var t130=createInput(0,0,t87); + return caml_call1(Optdef[5],t130.required)} + var overflow_limit=2147483000.; + function setTimeout(callback,d) + {var id=[0,0]; + function loop(step,param) + {if(2147483000. < step) + var remain=step - 2147483000.,step$0=overflow_limit; + 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)]; + 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)} + return 0} + function js_array_of_collection(c){return [].slice.call(c)} + var + Js_of_ocaml_Dom_html= + [0, + d, + t87, + getElementById_opt, + getElementById_exn, + getElementById_coerce, + getElementById, + location_origin, + _j_, + no_handler, + handler, + full_handler, + invoke_handler, + eventTarget, + eventRelatedTarget, + Event$0, + addEventListenerWithOptions, + addEventListener, + removeEventListener, + addMousewheelEventListenerWith, + addMousewheelEventListener, + createCustomEvent, + buttonPressed, + eventAbsolutePosition$0, + elementClientPosition, + getDocumentScroll, + [0,of_event,try_key_code_normal], + [0,of_event$0], + createHtml, + createHead, + createLink, + createTitle, + createMeta, + createBase, + createStyle, + createBody, + createForm, + createOptgroup, + createOption, + createSelect, + createInput, + createTextarea, + createButton, + createLabel, + createFieldset, + createLegend, + createUl, + createOl, + createDl, + createLi, + createDiv, + createEmbed, + createP, + createH1, + createH2, + createH3, + createH4, + createH5, + createH6, + createQ, + createBlockquote, + createPre, + createBr, + createHr, + createIns, + createDel, + createA, + createImg, + createObject, + createParam, + createMap, + createArea, + createScript, + createTable, + createCaption, + createCol, + createColgroup, + createThead, + createTfoot, + createTbody, + createTr, + createTh, + createTd, + createSub, + createSup, + createSpan, + createTt, + createI, + createB, + createBig, + createSmall, + createEm, + createStrong, + createCite, + createDfn, + createCode, + createSamp, + createKbd, + createVar, + createAbbr, + createDd, + createDt, + createNoscript, + createAddress, + createFrameset, + createFrame, + createIframe, + createAudio, + createVideo, + Canvas_not_available, + createCanvas, + element$1, + tagged, + opt_tagged, + taggedEvent, + opt_taggedEvent, + stopPropagation, + [0, + element$0, + a, + area, + audio, + base, + blockquote, + body, + br, + button, + canvas, + caption, + col, + colgroup, + del, + div, + embed, + dl, + fieldset, + form, + frameset, + frame, + h1, + h2, + h3, + h4, + h5, + h6, + head, + hr, + html, + iframe, + img, + input$0, + ins, + label, + legend, + li, + link, + map$2, + meta, + object, + ol, + optgroup, + option$1, + p, + param, + pre, + q, + script, + select$0, + style, + table, + tbody, + td, + textarea, + tfoot, + th, + thead, + title, + tr, + ul, + video, + mouseEvent, + keyboardEvent, + wheelEvent, + mouseScrollEvent, + popStateEvent, + messageEvent], + setTimeout, + clearTimeout, + js_array_of_collection, + requestAnimationFrame, + runtime.caml_js_html_entities, + onIE, + hasPushState, + hasPlaceholder, + hasRequired]; + caml_register_global(1651,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; + for(;;) + {if(param$0) + {var q=param$0[2],v=param$0[1],match=caml_call1(f,v); + if(match){var v$0=match[1];return [0,v$0,filter_map$0(f,q)]} + var param$0=q; + continue} + return 0}} + 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_} + 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_= + function(v$2) + {var match$3=tagged(v$2); + switch(match$3[0]) + {case 31: + var v=match$3[1]; + if(get)var sth=get[1],get$0=sth;else var get$0=0; + if(have_content(v)) + {var + name$1=caml_string_of_jsstring(v.name), + value=v.value, + t20=v.type, + match=caml_string_of_jsbytes(t20.toLowerCase()); + if(caml_string_notequal(match,cst_checkbox)) + {if(! caml_string_notequal(match,cst_file)) + {if(get$0)return [0,[0,name$1,[0,-976970511,value]],0]; + var match$0=caml_call1(Optdef[10],v.files); + if(match$0) + {var list=match$0[1]; + if(caml_call2(symbol$8,list.length,0)) + return [0,[0,name$1,[0,-976970511,""]],0]; + 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_); + 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_); + if(match$2) + {var file=match$2[1]; + return [0,[0,name$1,[0,781515420,file]],0]} + return 0} + return 0} + var switch$0=0; + if(caml_string_notequal(match,cst_password)) + {if(caml_string_notequal(match,cst_radio)) + {var switch$1=0; + if + (caml_string_notequal(match,cst_reset) + && + caml_string_notequal(match,cst_submit$0)) + {if(caml_string_notequal(match,cst_text)) + return [0,[0,name$1,[0,-976970511,value]],0]; + switch$0 = 1; + switch$1 = 1} + if(! switch$1)return 0}} + else + switch$0 = 1; + if(switch$0)return [0,[0,name$1,[0,-976970511,value]],0]} + return v.checked | 0?[0,[0,name$1,[0,-976970511,value]],0]:0} + return 0; + case 48: + var v$0=match$3[1]; + if(have_content(v$0)) + {var name$0=caml_string_of_jsstring(v$0.name); + if(v$0.multiple | 0) + {var + _eZ_= + function(i) + {var t13=v$0.options,_e5_=t13.item(i); + return caml_call1(Opt[10],_e5_)}, + t10=v$0.options, + options=caml_call2(Stdlib_Array[2],t10.length,_eZ_), + _e0_=caml_call1(Stdlib_Array[11],options); + return filter_map$0 + (function(param) + {if(param) + {var e=param[1]; + return e.selected | 0 + ?[0,[0,name$0,[0,-976970511,e.value]]] + :0} + return 0}, + _e0_)} + return [0,[0,name$0,[0,-976970511,v$0.value]],0]} + return 0; + case 53: + var v$1=match$3[1]; + if(have_content(v$1)) + {var name=caml_string_of_jsstring(v$1.name); + 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_); + if(match) + {var x=match[1],i$0=i - 1 | 0,acc$0=[0,x,acc],acc=acc$0,i=i$0; + continue} + var i$1=i - i | 0,i=i$1; + continue}} + 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_); + return f.append(t38,file)} + var s=_eU_[2],t35=caml_jsstring_of_string(_eV_); + 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_); + 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]; + return [0,name,caml_string_of_jsstring(s)]} + throw [0,Assert_failure,_o_]} + return caml_call2(Stdlib_List[19],_eP_,_eO_)} + var + Js_of_ocaml_Form= + [0, + formData, + formData_form, + append, + post_form_contents, + get_form_contents, + empty_form_contents, + form_elements]; + caml_register_global(1652,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), + progress$1=caml_call1(Event[1],cst_progress$1), + abort$1=caml_call1(Event[1],cst_abort$1), + error$1=caml_call1(Event[1],cst_error$1), + 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= + [0, + readystatechange, + loadstart$1, + progress$1, + abort$1, + error$1, + load$1, + timeout, + loadend$0], + Js_of_ocaml_XmlHttpRequest=[0,runtime.caml_xmlhttprequest_create,Event$1]; + caml_register_global + (1653,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_)} + function set_onmessage(handler) + {if(Unsafe[1].onmessage === t39) + caml_call1(Stdlib[1],cst_Worker_onmessage_is_undefi); + function js_handler(ev){return caml_call1(handler,ev.data)} + var t7=caml_js_wrap_callback(js_handler); + return Unsafe[1].onmessage = t7} + function post_message(t10) + {if(Unsafe[1].postMessage === t39) + caml_call1(Stdlib[1],cst_Worker_onmessage_is_undefi$0); + return Unsafe[1].postMessage(t10)} + 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"); + 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"); + var + defaultContextAttributes= + {"alpha":t25, + "depth":t25, + "stencil":t4, + "antialias":t25, + "premultipliedAlpha":t4, + "preserveDrawingBuffer":t4, + "preferLowPowerToHighPerformance":t4, + "failIfMajorPerformanceCaveat":t4}, + webglcontextlost=caml_call1(Event$0[87],cst_webglcontextlost), + webglcontextrestored=caml_call1(Event$0[87],cst_webglcontextrestored), + webglcontextcreationerror= + caml_call1(Event$0[87],cst_webglcontextcreationerror), + Event$2= + [0,webglcontextlost,webglcontextrestored,webglcontextcreationerror]; + function getContext(t3) + {var ctx=t3.getContext("webgl"); + return caml_call1(Opt[5],ctx)?ctx:t3.getContext("experimental-webgl")} + function getContextWithAttributes(t9,t8) + {var ctx=t9.getContext("webgl",t8); + 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"); + function regexp(s) + {var t0=caml_jsbytes_of_string(s);return new t11(t0,"g")} + function regexp_case_fold(s) + {var t3=caml_jsbytes_of_string(s);return new t11(t3,"gi")} + function regexp_with_flag(s,f) + {var + t7=caml_jsstring_of_string(caml_call2(Stdlib[28],cst_g,f)), + 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 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_)} + 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 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 t21=new t11("[$]","g"); + function quote_repl(s) + {var t23=caml_jsbytes_of_string(s);return t23.replace(t21,"$$$$")} + function global_replace(r,s,s_by) + {r.lastIndex = 0; + var t27=quote_repl(s_by),t28=caml_jsbytes_of_string(s); + return caml_string_of_jsbytes(t28.replace(r,t27))} + function replace_first(r,s,s_by) + {var + match=r.ignoreCase | 0, + match$0=r.multiline | 0, + flags=match?match$0?"mi":"i":match$0?"m":"", + t32=r.source, + t35=new t11(t32,flags), + t36=quote_repl(s_by), + t37=caml_jsbytes_of_string(s); + return caml_string_of_jsbytes(t37.replace(t35,t36))} + function list_of_js_array(a) + {var idx$1=a.length - 1 | 0,accu=0,idx=idx$1; + for(;;) + {if(caml_call2(symbol$5,idx,0))return accu; + var + idx$0=idx - 1 | 0, + accu$0=[0,blunt_str_array_get(a,idx),accu], + accu=accu$0, + idx=idx$0; + continue}} + function split(r,s) + {r.lastIndex = 0; + var t42=caml_jsbytes_of_string(s); + return list_of_js_array(t42.split(r))} + function bounded_split(r,s,i) + {r.lastIndex = 0; + var t47=caml_jsbytes_of_string(s); + return list_of_js_array(t47.split(r,i))} + var t48=regexp(cst); + function quote(s) + {var t50=caml_jsbytes_of_string(s); + return caml_string_of_jsbytes(t50.replace(t48,"\\$&"))} + function regexp_string(s){return regexp(quote(s))} + function regexp_string_case_fold(s){return regexp_case_fold(quote(s))} + var + Js_of_ocaml_Regexp= + [0, + regexp, + regexp_case_fold, + regexp_with_flag, + quote, + regexp_string, + regexp_string_case_fold, + string_match, + search_forward, + search_forward, + matched_string, + matched_group, + global_replace, + replace_first, + split, + bounded_split]; + caml_register_global(1657,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"); + function urldecode_js_string_string(s) + {t14.lastIndex = 0; + return caml_string_of_jsbytes(unescape(s.replace(t14," ")))} + function urldecode(s) + {return caml_string_of_jsbytes + (unescape + (caml_jsbytes_of_string(global_replace(plus_re,s,cst$1))))} + function urlencode(opt,s) + {if(opt)var sth=opt[1],with_plus=sth;else var with_plus=1; + if(with_plus) + {var s$0=caml_string_of_jsbytes(escape(caml_jsbytes_of_string(s))); + return global_replace(plus_re,s$0,cst_2B)} + return caml_string_of_jsbytes(escape(caml_jsbytes_of_string(s)))} + var + Not_an_http_protocol= + [248,cst_Js_of_ocaml_Url_Not_an_htt,caml_fresh_oo_id(0)], + default_http_port=80, + default_https_port=443; + function path_of_path_string(s) + {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 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_} + return a} + function encode_arguments(l) + {function _ew_(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_)} + function decode_arguments_js_string(s) + {var + t0=caml_jsstring_of_string(caml_call2(String[1],1,38)), + t18=s.split(t0), + len=t18.length; + function aux(acc,idx) + {var idx$0=idx; + for(;;) + {if(caml_call2(symbol$5,idx$0,0))return acc; + try + {var + _eo_=idx$0 - 1 | 0, + _ep_= + function(s) + {function _eu_(param) + {var + y=param[2], + x=param[1], + _ev_=urldecode_js_string_string(y); + return [0,urldecode_js_string_string(x),_ev_]} + 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; + 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) + {var idx$1=idx$0 - 1 | 0,idx$0=idx$1;continue} + throw _er_}}} + return aux(0,len - 1 | 0)} + function decode_arguments(s) + {return decode_arguments_js_string(caml_jsbytes_of_string(s))} + var + t19=caml_jsbytes_of_string(cst_Hh_Tt_Tt_Pp_Ss_0_9a_zA_Z_0), + t24=new t11(t19), + 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) + {var + prot_string=caml_call2(Optdef[8],res[1],interrupt), + match=caml_string_of_jsbytes(prot_string.toLowerCase()); + if + (caml_string_notequal(match,cst_file$0) + && + caml_string_notequal(match,cst_file$1)) + {var switch$0=0; + if + (caml_string_notequal(match,cst_http) + && + caml_string_notequal(match,cst_http$0)) + {var switch$1=0; + if + (caml_string_notequal(match,cst_https) + && + caml_string_notequal(match,cst_https$0)) + switch$1 = 1; + if(! switch$1){var ssl=1;switch$0 = 2}} + else + switch$0 = 1; + var switch$2=0; + switch(switch$0) + {case 1:var ssl=0;switch$2 = 1;break; + case 0:break; + default:switch$2 = 1} + if(switch$2) + {var + _ef_=function(param){return caml_jsbytes_of_string(cst$7)}, + 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_= + caml_string_notequal(s,cst$6)?caml_int_of_string(s):ssl?443:80, + url= + [0, + urldecode_js_string_string + (caml_call2(Optdef[8],res[2],interrupt)), + _em_, + _ek_, + path_str, + _ej_, + _eh_], + _en_=ssl?[1,url]:[0,url]; + return [0,_en_]}} + throw Not_an_http_protocol} + function _d8_(param) + {function _d__(res) + {var + 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)} + 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_)} + function url_of_string(s) + {return url_of_js_string(caml_jsbytes_of_string(s))} + function string_of_url(param) + {switch(param[0]) + {case 0: + var + match=param[1], + frag=match[6], + args=match[5], + path=match[3], + 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_); + else + var _dv_=cst$21; + if(args) + var + _dw_=encode_arguments(args), + _dx_=caml_call2(Stdlib[28],cst$15,_dw_); + else + var _dx_=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_); + if(80 === port) + var _dE_=cst$18; + else + var + _dI_=caml_call1(Stdlib[33],port), + _dE_=caml_call2(Stdlib[28],cst$19,_dI_); + 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_); + case 1: + var + match$0=param[1], + frag$0=match$0[6], + args$0=match$0[5], + path$0=match$0[3], + port$0=match$0[2], + 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_); + else + var _dK_=cst$30; + if(args$0) + var + _dL_=encode_arguments(args$0), + _dM_=caml_call2(Stdlib[28],cst$24,_dL_); + else + var _dM_=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_); + if(443 === port$0) + var _dT_=cst$27; + else + var + _dX_=caml_call1(Stdlib[33],port$0), + _dT_=caml_call2(Stdlib[28],cst$28,_dX_); + 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_); + default: + var + match$1=param[1], + frag$1=match$1[4], + args$1=match$1[3], + 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_); + else + var _dZ_=cst$36; + if(args$1) + var + _d0_=encode_arguments(args$1), + _d1_=caml_call2(Stdlib[28],cst$33,_d0_); + else + var _d1_=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; + else + var + t42=function(param,_dt_){return 0}, + t41$0=function(param,_ds_){return 0}, + t40=function(param){return 0}, + _s_= + {"href":"", + "protocol":"", + "host":"", + "hostname":"", + "port":"", + "pathname":"", + "search":"", + "hash":"", + "origin":t39, + "reload":caml_js_wrap_meth_callback(t40), + "replace":caml_js_wrap_meth_callback(t41$0), + "assign":caml_js_wrap_meth_callback(t42)}; + var + host=urldecode_js_string_string(_s_.hostname), + protocol=urldecode_js_string_string(_s_.protocol), + _t_=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), + path=path_of_path_string(path_string), + t49=_s_.search; + if(t49.charAt(0) === "?") + var t52=_s_.search,_u_=t52.slice(1); + else + var _u_=_s_.search; + var arguments$0=decode_arguments_js_string(_u_); + 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 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)} + function set$0(u) + {var t62=caml_jsbytes_of_string(string_of_url(u));return _s_.href = t62} + var + as_string=urldecode_js_string_string(_s_.href), + Js_of_ocaml_Url= + [0, + urldecode, + urlencode, + default_http_port, + default_https_port, + path_of_path_string, + encode_arguments, + decode_arguments, + url_of_string, + string_of_url, + [0, + host, + port, + protocol, + path_string, + path, + arguments$0, + get_fragment, + set_fragment, + get$2, + set$0, + as_string]]; + caml_register_global(1659,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"); + function update_file(name,content) + {var oc=caml_call1(Stdlib[60],name); + caml_call2(Stdlib[66],oc,content); + return caml_call1(Stdlib[76],oc)} + function set_channel_flusher(out_channel,f) + {var + f$0= + caml_js_wrap_callback + (function(s){return caml_call1(f,caml_string_of_jsbytes(s))}); + return runtime.caml_ml_set_channel_output(out_channel,f$0)} + function set_channel_filler(in_channel,f) + {var f$0=caml_js_wrap_callback(f); + return runtime.caml_ml_set_channel_refill(in_channel,f$0)} + function mount(path,f) + {return runtime.caml_mount_autoload + (path, + caml_js_wrap_callback + (function(prefix,path){return caml_call2(f,prefix,path)}))} + function unmount(path){return runtime.caml_unmount(path)} + if(caml_call2(String[68],git_version,cst$38)) + 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_); + var + _v_=runtime.caml_create_file, + _w_=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_)}, + unmount, + mount, + _w_, + _v_, + update_file, + js_of_ocaml_version]; + caml_register_global(1661,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)} + function observe(node,f,box,param) + {var t1=caml_js_wrap_callback(f),t4=new t2$0(t1); + if(box) + {var box$0=box[1],t8={};t8.box = box$0;t4.observe(node,t8)} + else + t4.observe(node); + return t4} + var + 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"); + 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_= + caml_call1 + (caml_call1(Stdlib_List[19],caml_jsstring_of_string),entry_types), + t1=caml_js_from_array(caml_call1(Stdlib_Array[12],_dl_)), + t5={}; + t5.entryTypes = t1; + var t3=caml_js_wrap_callback(f),t6=new t4$1(t3); + t6.observe(t5); + 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"); + 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)} + function observe$1 + (node, + f, + child_list, + attributes, + character_data, + subtree, + attribute_old_value, + character_data_old_value, + attribute_filter, + param) + {function opt_iter(x,f) + {if(x){var x$0=x[1];return caml_call1(f,x$0)}return 0} + var t1=caml_js_wrap_callback(f),t19=new t2$1(t1),t18={}; + opt_iter(child_list,function(t3){return t18.childList = t3}); + opt_iter(attributes,function(t5){return t18.attributes = t5}); + opt_iter(character_data,function(t7){return t18.characterData = t7}); + opt_iter(subtree,function(t9){return t18.subtree = t9}); + opt_iter + (attribute_old_value,function(t11){return t18.attributeOldValue = t11}); + opt_iter + (character_data_old_value, + function(t13){return t18.characterDataOldValue = t13}); + opt_iter + (attribute_filter, + function(l) + {var t15=caml_js_from_array(caml_call1(Stdlib_Array[12],l)); + return t18.attributeFilter = t15}); + t19.observe(node,t18); + return t19} + var + 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"); + var t1=Unsafe[1].Object; + function create$0(param){return new t1()} + function add$0(t,k,v){return t[k.concat("_")] = v} + function remove(t,k){return delete t[k.concat("_")]} + function find(t,k){return t[k.concat("_")]} + function keys(t) + {var + t10=Unsafe[1].Object, + t11=t10.keys(t), + res=[0,0], + _dh_=t11.length - 1 | 0, + _dg_=0; + if(! (_dh_ < 0)) + {var i=_dg_; + for(;;) + {var + _di_=function(param){return caml_call1(Stdlib[2],cst_Jstable_keys)}, + t15=caml_call2(Optdef[8],t11[i],_di_), + 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} + 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"); + var t11$1=Unsafe[1].JSON; + function reviver(this$0,key,value) + {if(typeof value === "string")return caml_string_of_jsbytes(value); + if + (value instanceof array_length + && + 4 + === + value.length + && + 255 + === + value[0]) + return runtime.caml_int64_create_lo_mi_hi(value[1],value[2],value[3]); + 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_) + ?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"); + function string_of_name(param) + {var _de_=param; + if(74 <= _de_) + {if(111 <= _de_) + switch(_de_) + {case 111:return cst_palevioletred; + case 112:return cst_papayawhip; + case 113:return cst_peachpuff; + case 114:return cst_peru; + case 115:return cst_pink; + case 116:return cst_plum; + case 117:return cst_powderblue; + case 118:return cst_purple; + case 119:return cst_red; + case 120:return cst_rosybrown; + case 121:return cst_royalblue; + case 122:return cst_saddlebrown; + case 123:return cst_salmon; + case 124:return cst_sandybrown; + case 125:return cst_seagreen; + case 126:return cst_seashell; + case 127:return cst_sienna; + case 128:return cst_silver; + case 129:return cst_skyblue; + case 130:return cst_slateblue; + case 131:return cst_slategray; + case 132:return cst_slategrey; + case 133:return cst_snow; + case 134:return cst_springgreen; + case 135:return cst_steelblue; + case 136:return cst_tan; + case 137:return cst_teal; + case 138:return cst_thistle; + case 139:return cst_tomato; + case 140:return cst_turquoise; + case 141:return cst_violet; + case 142:return cst_wheat; + case 143:return cst_white; + case 144:return cst_whitesmoke; + case 145:return cst_yellow; + default:return cst_yellowgreen} + switch(_de_) + {case 74:return cst_lightpink; + case 75:return cst_lightsalmon; + case 76:return cst_lightseagreen; + case 77:return cst_lightskyblue; + case 78:return cst_lightslategray; + case 79:return cst_lightslategrey; + case 80:return cst_lightsteelblue; + case 81:return cst_lightyellow; + case 82:return cst_lime; + case 83:return cst_limegreen; + case 84:return cst_linen; + case 85:return cst_magenta; + case 86:return cst_maroon; + case 87:return cst_mediumaquamarine; + case 88:return cst_mediumblue; + case 89:return cst_mediumorchid; + case 90:return cst_mediumpurple; + case 91:return cst_mediumseagreen; + case 92:return cst_mediumslateblue; + case 93:return cst_mediumspringgreen; + case 94:return cst_mediumturquoise; + case 95:return cst_mediumvioletred; + case 96:return cst_midnightblue; + case 97:return cst_mintcream; + case 98:return cst_mistyrose; + case 99:return cst_moccasin; + case 100:return cst_navajowhite; + case 101:return cst_navy; + case 102:return cst_oldlace; + case 103:return cst_olive; + case 104:return cst_olivedrab; + case 105:return cst_orange; + case 106:return cst_orangered; + case 107:return cst_orchid; + case 108:return cst_palegoldenrod; + case 109:return cst_palegreen; + default:return cst_paleturquoise}} + if(37 <= _de_) + switch(_de_) + {case 37:return cst_darkslategrey; + case 38:return cst_darkturquoise; + case 39:return cst_darkviolet; + case 40:return cst_deeppink; + case 41:return cst_deepskyblue; + case 42:return cst_dimgray; + case 43:return cst_dimgrey; + case 44:return cst_dodgerblue; + case 45:return cst_firebrick; + case 46:return cst_floralwhite; + case 47:return cst_forestgreen; + case 48:return cst_fuchsia; + case 49:return cst_gainsboro; + case 50:return cst_ghostwhite; + case 51:return cst_gold; + case 52:return cst_goldenrod; + case 53:return cst_gray; + case 54:return cst_grey; + case 55:return cst_green; + case 56:return cst_greenyellow; + case 57:return cst_honeydew; + case 58:return cst_hotpink; + case 59:return cst_indianred; + case 60:return cst_indigo; + case 61:return cst_ivory; + case 62:return cst_khaki; + case 63:return cst_lavender; + case 64:return cst_lavenderblush; + case 65:return cst_lawngreen; + case 66:return cst_lemonchiffon; + case 67:return cst_lightblue; + case 68:return cst_lightcoral; + case 69:return cst_lightcyan; + case 70:return cst_lightgoldenrodyellow; + case 71:return cst_lightgray; + case 72:return cst_lightgreen; + default:return cst_lightgrey} + switch(_de_) + {case 0:return cst_aliceblue; + case 1:return cst_antiquewhite; + case 2:return cst_aqua; + case 3:return cst_aquamarine; + case 4:return cst_azure; + case 5:return cst_beige; + case 6:return cst_bisque; + case 7:return cst_black; + case 8:return cst_blanchedalmond; + case 9:return cst_blue; + case 10:return cst_blueviolet; + case 11:return cst_brown; + case 12:return cst_burlywood; + case 13:return cst_cadetblue; + case 14:return cst_chartreuse; + case 15:return cst_chocolate; + case 16:return cst_coral; + case 17:return cst_cornflowerblue; + case 18:return cst_cornsilk; + case 19:return cst_crimson; + case 20:return cst_cyan; + case 21:return cst_darkblue; + case 22:return cst_darkcyan; + case 23:return cst_darkgoldenrod; + case 24:return cst_darkgray; + case 25:return cst_darkgreen; + case 26:return cst_darkgrey; + case 27:return cst_darkkhaki; + case 28:return cst_darkmagenta; + case 29:return cst_darkolivegreen; + case 30:return cst_darkorange; + case 31:return cst_darkorchid; + case 32:return cst_darkred; + case 33:return cst_darksalmon; + case 34:return cst_darkseagreen; + case 35:return cst_darkslateblue; + default:return cst_darkslategray}} + function name_of_string(s) + {var switch$0=caml_string_compare(s,cst_lightgrey$0); + if(0 <= switch$0) + {if(! (0 < switch$0))return 73; + var switch$1=caml_string_compare(s,cst_paleturquoise$0); + if(0 <= switch$1) + {if(! (0 < switch$1))return 110; + var switch$2=caml_string_compare(s,cst_skyblue$0); + if(0 <= switch$2) + {if(! (0 < switch$2))return 129; + var switch$3=caml_string_compare(s,cst_thistle$0); + if(0 <= switch$3) + {if(! (0 < switch$3))return 138; + if(! caml_string_notequal(s,cst_tomato$0))return 139; + if(! caml_string_notequal(s,cst_turquoise$0))return 140; + if(! caml_string_notequal(s,cst_violet$0))return 141; + if(! caml_string_notequal(s,cst_wheat$0))return 142; + if(! caml_string_notequal(s,cst_white$0))return 143; + if(! caml_string_notequal(s,cst_whitesmoke$0))return 144; + if(! caml_string_notequal(s,cst_yellow$0))return 145; + if(! caml_string_notequal(s,cst_yellowgreen$0))return 146} + else + {if(! caml_string_notequal(s,cst_slateblue$0))return 130; + if(! caml_string_notequal(s,cst_slategray$0))return 131; + if(! caml_string_notequal(s,cst_slategrey$0))return 132; + if(! caml_string_notequal(s,cst_snow$0))return 133; + if(! caml_string_notequal(s,cst_springgreen$0))return 134; + if(! caml_string_notequal(s,cst_steelblue$0))return 135; + if(! caml_string_notequal(s,cst_tan$0))return 136; + if(! caml_string_notequal(s,cst_teal$0))return 137}} + else + {var switch$4=caml_string_compare(s,cst_rosybrown$0); + if(0 <= switch$4) + {if(! (0 < switch$4))return 120; + if(! caml_string_notequal(s,cst_royalblue$0))return 121; + if(! caml_string_notequal(s,cst_saddlebrown$0))return 122; + if(! caml_string_notequal(s,cst_salmon$0))return 123; + if(! caml_string_notequal(s,cst_sandybrown$0))return 124; + if(! caml_string_notequal(s,cst_seagreen$0))return 125; + if(! caml_string_notequal(s,cst_seashell$0))return 126; + if(! caml_string_notequal(s,cst_sienna$0))return 127; + if(! caml_string_notequal(s,cst_silver$0))return 128} + else + {if(! caml_string_notequal(s,cst_palevioletred$0))return 111; + if(! caml_string_notequal(s,cst_papayawhip$0))return 112; + if(! caml_string_notequal(s,cst_peachpuff$0))return 113; + if(! caml_string_notequal(s,cst_peru$0))return 114; + if(! caml_string_notequal(s,cst_pink$0))return 115; + if(! caml_string_notequal(s,cst_plum$0))return 116; + if(! caml_string_notequal(s,cst_powderblue$0))return 117; + if(! caml_string_notequal(s,cst_purple$0))return 118; + if(! caml_string_notequal(s,cst_red$0))return 119}}} + else + {var switch$5=caml_string_compare(s,cst_mediumslateblue$0); + if(0 <= switch$5) + {if(! (0 < switch$5))return 92; + var switch$6=caml_string_compare(s,cst_navy$0); + if(0 <= switch$6) + {if(! (0 < switch$6))return 101; + if(! caml_string_notequal(s,cst_oldlace$0))return 102; + if(! caml_string_notequal(s,cst_olive$0))return 103; + if(! caml_string_notequal(s,cst_olivedrab$0))return 104; + if(! caml_string_notequal(s,cst_orange$0))return 105; + if(! caml_string_notequal(s,cst_orangered$0))return 106; + if(! caml_string_notequal(s,cst_orchid$0))return 107; + if(! caml_string_notequal(s,cst_palegoldenrod$0))return 108; + if(! caml_string_notequal(s,cst_palegreen$0))return 109} + else + {if(! caml_string_notequal(s,cst_mediumspringgreen$0))return 93; + if(! caml_string_notequal(s,cst_mediumturquoise$0))return 94; + if(! caml_string_notequal(s,cst_mediumvioletred$0))return 95; + if(! caml_string_notequal(s,cst_midnightblue$0))return 96; + if(! caml_string_notequal(s,cst_mintcream$0))return 97; + if(! caml_string_notequal(s,cst_mistyrose$0))return 98; + if(! caml_string_notequal(s,cst_moccasin$0))return 99; + if(! caml_string_notequal(s,cst_navajowhite$0))return 100}} + else + {var switch$7=caml_string_compare(s,cst_limegreen$0); + if(0 <= switch$7) + {if(! (0 < switch$7))return 83; + if(! caml_string_notequal(s,cst_linen$0))return 84; + if(! caml_string_notequal(s,cst_magenta$0))return 85; + if(! caml_string_notequal(s,cst_maroon$0))return 86; + if(! caml_string_notequal(s,cst_mediumaquamarine$0))return 87; + if(! caml_string_notequal(s,cst_mediumblue$0))return 88; + if(! caml_string_notequal(s,cst_mediumorchid$0))return 89; + if(! caml_string_notequal(s,cst_mediumpurple$0))return 90; + if(! caml_string_notequal(s,cst_mediumseagreen$0))return 91} + else + {if(! caml_string_notequal(s,cst_lightpink$0))return 74; + if(! caml_string_notequal(s,cst_lightsalmon$0))return 75; + if(! caml_string_notequal(s,cst_lightseagreen$0))return 76; + if(! caml_string_notequal(s,cst_lightskyblue$0))return 77; + if(! caml_string_notequal(s,cst_lightslategray$0))return 78; + if(! caml_string_notequal(s,cst_lightslategrey$0))return 79; + if(! caml_string_notequal(s,cst_lightsteelblue$0))return 80; + if(! caml_string_notequal(s,cst_lightyellow$0))return 81; + if(! caml_string_notequal(s,cst_lime$0))return 82}}}} + else + {var switch$8=caml_string_compare(s,cst_darkslategray$0); + if(0 <= switch$8) + {if(! (0 < switch$8))return 36; + var switch$9=caml_string_compare(s,cst_greenyellow$0); + if(0 <= switch$9) + {if(! (0 < switch$9))return 56; + var switch$10=caml_string_compare(s,cst_lavenderblush$0); + if(0 <= switch$10) + {if(! (0 < switch$10))return 64; + if(! caml_string_notequal(s,cst_lawngreen$0))return 65; + if(! caml_string_notequal(s,cst_lemonchiffon$0))return 66; + if(! caml_string_notequal(s,cst_lightblue$0))return 67; + if(! caml_string_notequal(s,cst_lightcoral$0))return 68; + if(! caml_string_notequal(s,cst_lightcyan$0))return 69; + if(! caml_string_notequal(s,cst_lightgoldenrodyellow$0)) + return 70; + if(! caml_string_notequal(s,cst_lightgray$0))return 71; + if(! caml_string_notequal(s,cst_lightgreen$0))return 72} + else + {if(! caml_string_notequal(s,cst_grey$0))return 54; + if(! caml_string_notequal(s,cst_honeydew$0))return 57; + if(! caml_string_notequal(s,cst_hotpink$0))return 58; + if(! caml_string_notequal(s,cst_indianred$0))return 59; + if(! caml_string_notequal(s,cst_indigo$0))return 60; + if(! caml_string_notequal(s,cst_ivory$0))return 61; + if(! caml_string_notequal(s,cst_khaki$0))return 62; + if(! caml_string_notequal(s,cst_lavender$0))return 63}} + else + {var switch$11=caml_string_compare(s,cst_floralwhite$0); + if(0 <= switch$11) + {if(! (0 < switch$11))return 46; + if(! caml_string_notequal(s,cst_forestgreen$0))return 47; + if(! caml_string_notequal(s,cst_fuchsia$0))return 48; + if(! caml_string_notequal(s,cst_gainsboro$0))return 49; + if(! caml_string_notequal(s,cst_ghostwhite$0))return 50; + if(! caml_string_notequal(s,cst_gold$0))return 51; + if(! caml_string_notequal(s,cst_goldenrod$0))return 52; + if(! caml_string_notequal(s,cst_gray$0))return 53; + if(! caml_string_notequal(s,cst_green$0))return 55} + else + {if(! caml_string_notequal(s,cst_darkslategrey$0))return 37; + if(! caml_string_notequal(s,cst_darkturquoise$0))return 38; + if(! caml_string_notequal(s,cst_darkviolet$0))return 39; + if(! caml_string_notequal(s,cst_deeppink$0))return 40; + if(! caml_string_notequal(s,cst_deepskyblue$0))return 41; + if(! caml_string_notequal(s,cst_dimgray$0))return 42; + if(! caml_string_notequal(s,cst_dimgrey$0))return 43; + if(! caml_string_notequal(s,cst_dodgerblue$0))return 44; + if(! caml_string_notequal(s,cst_firebrick$0))return 45}}} + else + {var switch$12=caml_string_compare(s,cst_cornsilk$0); + if(0 <= switch$12) + {if(! (0 < switch$12))return 18; + var switch$13=caml_string_compare(s,cst_darkkhaki$0); + if(0 <= switch$13) + {if(! (0 < switch$13))return 27; + if(! caml_string_notequal(s,cst_darkmagenta$0))return 28; + if(! caml_string_notequal(s,cst_darkolivegreen$0))return 29; + if(! caml_string_notequal(s,cst_darkorange$0))return 30; + if(! caml_string_notequal(s,cst_darkorchid$0))return 31; + if(! caml_string_notequal(s,cst_darkred$0))return 32; + if(! caml_string_notequal(s,cst_darksalmon$0))return 33; + if(! caml_string_notequal(s,cst_darkseagreen$0))return 34; + if(! caml_string_notequal(s,cst_darkslateblue$0))return 35} + else + {if(! caml_string_notequal(s,cst_crimson$0))return 19; + if(! caml_string_notequal(s,cst_cyan$0))return 20; + if(! caml_string_notequal(s,cst_darkblue$0))return 21; + if(! caml_string_notequal(s,cst_darkcyan$0))return 22; + if(! caml_string_notequal(s,cst_darkgoldenrod$0))return 23; + if(! caml_string_notequal(s,cst_darkgray$0))return 24; + if(! caml_string_notequal(s,cst_darkgreen$0))return 25; + if(! caml_string_notequal(s,cst_darkgrey$0))return 26}} + else + {var switch$14=caml_string_compare(s,cst_blue$0); + if(0 <= switch$14) + {if(! (0 < switch$14))return 9; + if(! caml_string_notequal(s,cst_blueviolet$0))return 10; + if(! caml_string_notequal(s,cst_brown$0))return 11; + if(! caml_string_notequal(s,cst_burlywood$0))return 12; + if(! caml_string_notequal(s,cst_cadetblue$0))return 13; + if(! caml_string_notequal(s,cst_chartreuse$0))return 14; + if(! caml_string_notequal(s,cst_chocolate$0))return 15; + if(! caml_string_notequal(s,cst_coral$0))return 16; + if(! caml_string_notequal(s,cst_cornflowerblue$0))return 17} + else + {if(! caml_string_notequal(s,cst_aliceblue$0))return 0; + if(! caml_string_notequal(s,cst_antiquewhite$0))return 1; + if(! caml_string_notequal(s,cst_aqua$0))return 2; + if(! caml_string_notequal(s,cst_aquamarine$0))return 3; + if(! caml_string_notequal(s,cst_azure$0))return 4; + if(! caml_string_notequal(s,cst_beige$0))return 5; + 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_]} + 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_}} + 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) + {if(a){var a$0=a[1];return [6,[0,h,s,l,a$0]]}return [5,[0,h,s,l]]} + function string_of_t(param) + {switch(param[0]) + {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); + 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); + case 3: + var + match$1=param[1], + a=match$1[4], + 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); + case 4: + var + match$2=param[1], + a$0=match$2[4], + 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); + 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); + default: + var + match$4=param[1], + a$1=match$4[4], + 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)}} + 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$_) + {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$_} + in_range(red); + in_range(green); + in_range(blue); + return caml_call4(Stdlib_Printf[4],_b6_,red,green,blue)} + function js_t_of_js_string(s) + {var + t0=caml_jsbytes_of_string(cst_rgb_s_d_s_d_s_d), + t13=new t11(t0), + t2=caml_jsbytes_of_string(cst_rgb_s_d_s_d_s_d$0), + t17=new t11(t2), + t4=caml_jsbytes_of_string(cst_rgba_s_d_s_d_s_d_d_d), + t15=new t11(t4), + t6=caml_jsbytes_of_string(cst_rgba_s_d_s_d_s_d_d_d$0), + t19=new t11(t6), + t8=caml_jsbytes_of_string(cst_hsl_s_d_s_d_s_d), + t21=new t11(t8), + t10=caml_jsbytes_of_string(cst_hsla_s_d_s_d_s_d_d_d), + t23=new t11(t10); + if + (! + (t13.test(s) | 0) + && + ! + (t15.test(s) | 0) + && + ! + (t17.test(s) | 0) + && + ! + (t19.test(s) | 0) + && + ! + (t21.test(s) | 0) + && + ! + (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), + _c9_=caml_call2(Stdlib[28],_c8_,cst_is_not_a_valid_color); + throw [0,Stdlib[6],_c9_]} + return s} + function js(c) + {if(0 === c[0]) + {var n=c[1];return caml_jsstring_of_string(string_of_name(n))} + return caml_jsstring_of_string(string_of_t(c))} + 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 + fail= + function(param) + {var _c6_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color$0); + throw [0,Stdlib[6],_c6_]}, + 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), + i_of_s_o= + function(param) + {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]; + else + {if(_c5_[1] !== Stdlib[7])throw _c5_;var s=_c5_[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_]}} + 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]; + else + {if(_c0_[1] !== Stdlib[7])throw _c0_;var s=_c0_[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_]}}, + match=string_match(re_rgb,s,0); + if(match) + {var + r=match[1], + red=matched_group(r,2), + green=matched_group(r,3), + blue=matched_group(r,4), + 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)) + {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)) + {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_]]} + return fail(0)}} + return fail(0)} + var match$1=string_match(re_rgb_pct,s,0); + if(match$1) + {var + r$0=match$1[1], + red$0=matched_group(r$0,2), + green$0=matched_group(r$0,3), + blue$0=matched_group(r$0,4), + 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)) + {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)) + {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_]]} + return fail(0)}} + return fail(0)} + var match$3=string_match(re_hsl,s,0); + if(match$3) + {var + r$1=match$3[1], + red$1=matched_group(r$1,2), + green$1=matched_group(r$1,3), + blue$1=matched_group(r$1,4), + 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)) + {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)) + {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_]]} + return fail(0)}} + return fail(0)} + return fail(0)} + throw _cV_}} + 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); + case 1: + var f$0=param[1]; + return caml_call3(Stdlib_Printf[4],_b9_,f$0,cst_ex); + case 2: + var f$1=param[1]; + 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); + case 4: + var f$3=param[1]; + return caml_call3(Stdlib_Printf[4],_ca_,f$3,cst_rem); + case 5: + var f$4=param[1]; + return caml_call3(Stdlib_Printf[4],_cb_,f$4,cst_vw); + case 6: + var f$5=param[1]; + return caml_call3(Stdlib_Printf[4],_cc_,f$5,cst_vh); + case 7: + var f$6=param[1]; + return caml_call3(Stdlib_Printf[4],_cd_,f$6,cst_vm); + case 8: + var f$7=param[1]; + return caml_call3(Stdlib_Printf[4],_ce_,f$7,cst_ch); + case 9: + var f$8=param[1]; + return caml_call3(Stdlib_Printf[4],_cf_,f$8,cst_mm); + case 10: + var f$9=param[1]; + return caml_call3(Stdlib_Printf[4],_cg_,f$9,cst_cm); + case 11: + var f$10=param[1]; + return caml_call3(Stdlib_Printf[4],_ch_,f$10,cst_in); + case 12: + var f$11=param[1]; + return caml_call3(Stdlib_Printf[4],_ci_,f$11,cst_pt); + default: + var f$12=param[1]; + return caml_call3(Stdlib_Printf[4],_cj_,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 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)} + 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_]} + throw exn} + var f$0=_cz_} + 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); + 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]} + 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]} + return fail(0)} + return fail(0)} + return fail(0)} + var Length=[0,string_of_t$0,js$0,ml$0]; + 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); + case 1: + var f$0=param[1]; + return caml_call3(Stdlib_Printf[4],_cl_,f$0,cst_grad); + case 2: + var f$1=param[1]; + return caml_call3(Stdlib_Printf[4],_cm_,f$1,cst_rad); + default: + var f$2=param[1]; + return caml_call3(Stdlib_Printf[4],_cn_,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 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)} + 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_]} + throw exn} + var f$0=_cv_} + 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]} + return fail(0)} + return fail(0)} + var + Angle=[0,string_of_t$1,js$1,ml$1], + Js_of_ocaml_CSS= + [0, + [0, + string_of_name, + rgb_of_name, + hex_of_rgb, + rgb, + hsl, + string_of_t, + js, + ml, + js_t_of_js_string], + Length, + Angle]; + caml_register_global(1668,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; + 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]; + caml_register_global + (1669,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)]; + function createElement$0(t2,name) + {var t1=caml_jsstring_of_string(name); + return t2.createElementNS("http://www.w3.org/2000/svg",t1)} + function unsafeCreateElement$0(doc,name){return createElement$0(doc,name)} + function createA$0(doc){return unsafeCreateElement$0(doc,cst_a$2)} + function createAltGlyph(doc) + {return unsafeCreateElement$0(doc,cst_altglyph)} + function createAltGlyphDef(doc) + {return unsafeCreateElement$0(doc,cst_altglyphdef)} + function createAltGlyphItem(doc) + {return unsafeCreateElement$0(doc,cst_altglyphitem)} + function createAnimate(doc){return unsafeCreateElement$0(doc,cst_animate)} + function createAnimateColor(doc) + {return unsafeCreateElement$0(doc,cst_animatecolor)} + function createAnimateMotion(doc) + {return unsafeCreateElement$0(doc,cst_animatemotion)} + function createAnimateTransform(doc) + {return unsafeCreateElement$0(doc,cst_animatetransform)} + function createCircle(doc){return unsafeCreateElement$0(doc,cst_circle)} + function createClipPath(doc) + {return unsafeCreateElement$0(doc,cst_clippath)} + function createCursor(doc){return unsafeCreateElement$0(doc,cst_cursor)} + function createDefs(doc){return unsafeCreateElement$0(doc,cst_defs)} + function createDesc(doc){return unsafeCreateElement$0(doc,cst_desc)} + function createEllipse(doc){return unsafeCreateElement$0(doc,cst_ellipse)} + function createFilter(doc){return unsafeCreateElement$0(doc,cst_filter)} + function createFont(doc){return unsafeCreateElement$0(doc,cst_font)} + function createFontFace(doc) + {return unsafeCreateElement$0(doc,cst_font_face)} + function createFontFaceFormat(doc) + {return unsafeCreateElement$0(doc,cst_font_face_format)} + function createFontFaceName(doc) + {return unsafeCreateElement$0(doc,cst_font_face_name)} + function createFontFaceSrc(doc) + {return unsafeCreateElement$0(doc,cst_font_face_src)} + function createFontFaceUri(doc) + {return unsafeCreateElement$0(doc,cst_font_face_uri)} + function createForeignObject(doc) + {return unsafeCreateElement$0(doc,cst_foreignObject)} + function createG(doc){return unsafeCreateElement$0(doc,cst_g$0)} + function createGlyph(doc){return unsafeCreateElement$0(doc,cst_glyph)} + function createGlyphRef(doc) + {return unsafeCreateElement$0(doc,cst_glyphref)} + function createhkern(doc){return unsafeCreateElement$0(doc,cst_hkern)} + function createImage(doc){return unsafeCreateElement$0(doc,cst_image)} + function createLineElement(doc) + {return unsafeCreateElement$0(doc,cst_line)} + function createLinearElement(doc) + {return unsafeCreateElement$0(doc,cst_lineargradient)} + function createMask(doc){return unsafeCreateElement$0(doc,cst_mask)} + function createMetaData(doc) + {return unsafeCreateElement$0(doc,cst_metadata)} + function createMissingGlyph(doc) + {return unsafeCreateElement$0(doc,cst_missing_glyph)} + function createMPath(doc){return unsafeCreateElement$0(doc,cst_mpath)} + function createPath(doc){return unsafeCreateElement$0(doc,cst_path)} + function createPattern(doc){return unsafeCreateElement$0(doc,cst_pattern)} + function createPolygon(doc){return unsafeCreateElement$0(doc,cst_polygon)} + function createPolyline(doc) + {return unsafeCreateElement$0(doc,cst_polyline)} + function createRadialgradient(doc) + {return unsafeCreateElement$0(doc,cst_radialgradient)} + function createRect(doc){return unsafeCreateElement$0(doc,cst_rect)} + function createScript$0(doc) + {return unsafeCreateElement$0(doc,cst_script$2)} + function createSet(doc){return unsafeCreateElement$0(doc,cst_set)} + function createStop(doc){return unsafeCreateElement$0(doc,cst_stop)} + function createStyle$0(doc){return unsafeCreateElement$0(doc,cst_style$2)} + function createSvg(doc){return unsafeCreateElement$0(doc,cst_svg)} + function createSwitch(doc){return unsafeCreateElement$0(doc,cst_switch)} + function createSymbol(doc){return unsafeCreateElement$0(doc,cst_symbol)} + function createTextElement(doc) + {return unsafeCreateElement$0(doc,cst_text$0)} + function createTextpath(doc) + {return unsafeCreateElement$0(doc,cst_textpath)} + function createTitle$0(doc){return unsafeCreateElement$0(doc,cst_title$2)} + function createTref(doc){return unsafeCreateElement$0(doc,cst_tref)} + function createTspan(doc){return unsafeCreateElement$0(doc,cst_tspan)} + function createUse(doc){return unsafeCreateElement$0(doc,cst_use)} + function createView(doc){return unsafeCreateElement$0(doc,cst_view)} + 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]} + var + t6=caml_jsstring_of_string(id), + t7=Unsafe[1].document, + _cs_=t7.getElementById(t6); + return caml_call3(Opt[7],_cs_,_cr_,_cq_)} + 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} + 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)} + function altGlyphItem(e){return unsafeCoerce$0(e,cst_altglyphitem$0)} + function animate(e){return unsafeCoerce$0(e,cst_animate$0)} + function animateColor(e){return unsafeCoerce$0(e,cst_animatecolor$0)} + function animateMotion(e){return unsafeCoerce$0(e,cst_animatemotion$0)} + function animateTransform(e) + {return unsafeCoerce$0(e,cst_animatetransform$0)} + function circle(e){return unsafeCoerce$0(e,cst_circle$0)} + function clipPath(e){return unsafeCoerce$0(e,cst_clippath$0)} + function cursor(e){return unsafeCoerce$0(e,cst_cursor$0)} + function defs(e){return unsafeCoerce$0(e,cst_defs$0)} + function desc(e){return unsafeCoerce$0(e,cst_desc$0)} + function ellipse(e){return unsafeCoerce$0(e,cst_ellipse$0)} + function filter(e){return unsafeCoerce$0(e,cst_filter$0)} + function font(e){return unsafeCoerce$0(e,cst_font$0)} + function fontFace(e){return unsafeCoerce$0(e,cst_font_face$0)} + function fontFaceFormat(e) + {return unsafeCoerce$0(e,cst_font_face_format$0)} + function fontFaceName(e){return unsafeCoerce$0(e,cst_font_face_name$0)} + function fontFaceSrc(e){return unsafeCoerce$0(e,cst_font_face_src$0)} + function fontFaceUri(e){return unsafeCoerce$0(e,cst_font_face_uri$0)} + function foreignObject(e){return unsafeCoerce$0(e,cst_foreignobject)} + function g(e){return unsafeCoerce$0(e,cst_g$1)} + function glyph(e){return unsafeCoerce$0(e,cst_glyph$0)} + function glyphRef(e){return unsafeCoerce$0(e,cst_glyphref$0)} + function hkern(e){return unsafeCoerce$0(e,cst_hkern$0)} + function image(e){return unsafeCoerce$0(e,cst_image$0)} + function lineElement(e){return unsafeCoerce$0(e,cst_line$0)} + function linearElement(e){return unsafeCoerce$0(e,cst_lineargradient$0)} + function mask(e){return unsafeCoerce$0(e,cst_mask$0)} + function metaData(e){return unsafeCoerce$0(e,cst_metadata$0)} + function missingGlyph(e){return unsafeCoerce$0(e,cst_missing_glyph$0)} + function mPath(e){return unsafeCoerce$0(e,cst_mpath$0)} + function path$0(e){return unsafeCoerce$0(e,cst_path$0)} + function pattern(e){return unsafeCoerce$0(e,cst_pattern$0)} + function polygon(e){return unsafeCoerce$0(e,cst_polygon$0)} + function polyline(e){return unsafeCoerce$0(e,cst_polyline$0)} + function radialgradient(e){return unsafeCoerce$0(e,cst_radialgradient$0)} + function rect(e){return unsafeCoerce$0(e,cst_rect$0)} + function script$0(e){return unsafeCoerce$0(e,cst_script$3)} + function set$1(e){return unsafeCoerce$0(e,cst_set$0)} + function stop(e){return unsafeCoerce$0(e,cst_stop$0)} + function style$0(e){return unsafeCoerce$0(e,cst_style$3)} + function svg(e){return unsafeCoerce$0(e,cst_svg$0)} + function switch$0(e){return unsafeCoerce$0(e,cst_switch$0)} + function symbol$12(e){return unsafeCoerce$0(e,cst_symbol$0)} + function textElement(e){return unsafeCoerce$0(e,cst_text$1)} + function textpath(e){return unsafeCoerce$0(e,cst_textpath$0)} + function title$0(e){return unsafeCoerce$0(e,cst_title$3)} + function tref(e){return unsafeCoerce$0(e,cst_tref$0)} + function tspan(e){return unsafeCoerce$0(e,cst_tspan$0)} + function use(e){return unsafeCoerce$0(e,cst_use$0)} + function view(e){return unsafeCoerce$0(e,cst_view$0)} + function vkern(e){return unsafeCoerce$0(e,cst_vkern$0)} + var + Js_of_ocaml_Dom_svg= + [0, + t0, + SVGError, + createElement$0, + createA$0, + createAltGlyph, + createAltGlyphDef, + createAltGlyphItem, + createAnimate, + createAnimateColor, + createAnimateMotion, + createAnimateTransform, + createCircle, + createClipPath, + createCursor, + createDefs, + createDesc, + createEllipse, + createFilter, + createFont, + createFontFace, + createFontFaceFormat, + createFontFaceName, + createFontFaceSrc, + createFontFaceUri, + createForeignObject, + createG, + createGlyph, + createGlyphRef, + createhkern, + createImage, + createLineElement, + createLinearElement, + createMask, + createMetaData, + createMissingGlyph, + createMPath, + createPath, + createPattern, + createPolygon, + createPolyline, + createRadialgradient, + createRect, + createScript$0, + createSet, + createStop, + createStyle$0, + createSvg, + createSwitch, + createSymbol, + createTextElement, + createTextpath, + createTitle$0, + createTref, + createTspan, + createUse, + createView, + createvkern, + svg_element, + document$0, + getElementById$0, + [0, + element$2, + a$0, + altGlyph, + altGlyphDef, + altGlyphItem, + animate, + animateColor, + animateMotion, + animateTransform, + circle, + clipPath, + cursor, + defs, + desc, + ellipse, + filter, + font, + fontFace, + fontFaceFormat, + fontFaceName, + fontFaceSrc, + fontFaceUri, + foreignObject, + g, + glyph, + glyphRef, + hkern, + image, + lineElement, + linearElement, + mask, + metaData, + missingGlyph, + mPath, + path$0, + pattern, + polygon, + polyline, + radialgradient, + rect, + script$0, + set$1, + stop, + style$0, + svg, + switch$0, + symbol$12, + textElement, + textpath, + title$0, + tref, + tspan, + use, + view, + vkern]]; + caml_register_global(1670,Js_of_ocaml_Dom_svg,"Js_of_ocaml__Dom_svg"); + function withCredentials(b) + {var t1={},t0=! ! b;t1.withCredentials = t0;return t1} + var + eventSource=Unsafe[1].EventSource, + eventSource_options=Unsafe[1].EventSource, + Js_of_ocaml_EventSource= + [0,withCredentials,eventSource,eventSource_options,addEventListener]; + caml_register_global + (1671,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"); + function empty_position_options(param){return {}} + var + t1$0=Unsafe[1].navigator, + geolocation=caml_call1(Optdef[5],t1$0)?t1$0.geolocation:t1$0; + function is_supported$3(param){return caml_call1(Optdef[5],geolocation)} + var + Js_of_ocaml_Geolocation= + [0,empty_position_options,geolocation,is_supported$3]; + caml_register_global + (1673,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) + {return caml_call1(Optdef[5],intersectionObserver_unsafe)} + var + Js_of_ocaml_IntersectionObserv= + [0, + empty_intersection_observer_op, + is_supported$4, + intersectionObserver_unsafe]; + caml_register_global + (1674,Js_of_ocaml_IntersectionObserv,"Js_of_ocaml__IntersectionObserver"); + function object_options(param){return {"localeMatcher":"best fit"}} + function options(param) + {return {"localeMatcher":"best fit", + "usage":"sort", + "sensitivity":"variant", + "ignorePunctuation":t4, + "numeric":t4, + "caseFirst":"false"}} + var Collator=[0,object_options,options]; + function options$0(param) + {return {"localeMatcher":"best fit", + "timeZone":t39, + "hour12":t39, + "hourCycle":t39, + "formatMatcher":"best fit", + "weekday":t39, + "era":t39, + "year":t39, + "month":t39, + "day":t39, + "hour":t39, + "minute":t39, + "second":t39, + "timeZoneName":t39}} + var DateTimeFormat=[0,object_options,options$0]; + function options$1(param) + {return {"localeMatcher":"best fit", + "style":"decimal", + "currency":t39, + "currencyDisplay":t39, + "useGrouping":t25, + "minimumIntegerDigits":t39, + "minimumFractionDigits":t39, + "maximumFractionDigits":t39, + "minimumSignificantDigits":t39, + "maximumSignificantDigits":t39}} + var NumberFormat=[0,object_options,options$1]; + function options$2(param) + {return {"localeMatcher":"best fit","type":"cardinal"}} + 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; + function is_supported$5(param){return caml_call1(Optdef[5],intl)} + var + Js_of_ocaml_Intl= + [0, + Collator, + DateTimeFormat, + NumberFormat, + PluralRules, + intl, + collator_constr, + dateTimeFormat_constr, + numberFormat_constr, + pluralRules_constr, + is_supported$5]; + caml_register_global(1675,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"); + return} + (globalThis)); + + +//# 1 "../../runtimes/jsoo/.runtime_jsoo.objs/runtime_jsoo.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_int_of_string=runtime.caml_int_of_string, + caml_js_from_array=runtime.caml_js_from_array, + caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback, + caml_jsstring_of_string=runtime.caml_jsstring_of_string, + caml_register_global=runtime.caml_register_global, + 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])} + function caml_call7(f,a0,a1,a2,a3,a4,a5,a6) + {return f.length == 7 + ?f(a0,a1,a2,a3,a4,a5,a6) + :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])} + var + global_data=runtime.caml_get_global_data(), + partial=[4,0,0,0,[12,46,0]], + cst_No_rule_applies_in_the_giv= + caml_string_of_jsbytes + ("No rule applies in the given context to give a value to the variable"), + cst_A_conflict_happened_betwee= + caml_string_of_jsbytes + ("A conflict happened between two rules giving a value to the variable"), + cst_A_failure_happened_in_the_= + caml_string_of_jsbytes("A failure happened in the assertion"), + cst_Begin_call=caml_string_of_jsbytes("Begin call"), + cst_End_call=caml_string_of_jsbytes("End call"), + 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"), + Stdlib_Format=global_data.Stdlib__Format, + Js_of_ocaml_Js=global_data.Js_of_ocaml__Js, + Runtime_ocaml_Runtime=global_data.Runtime_ocaml__Runtime, + Yojson=global_data.Yojson, + Stdlib_List=global_data.Stdlib__List, + Stdlib_Array=global_data.Stdlib__Array, + Stdlib_String=global_data.Stdlib__String, + Stdlib=global_data.Stdlib, + Runtime_jsoo=[0]; + caml_register_global(52,Runtime_jsoo,"Runtime_jsoo"); + var + _a_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes(" in file "), + [2, + 0, + [11, + caml_string_of_jsbytes(", position "), + [4, + 0, + 0, + 0, + [12, + 58, + [4, + 0, + 0, + 0, + [11,caml_string_of_jsbytes("--"),[4,0,0,0,[12,58,partial]]]]]]]]]], + caml_string_of_jsbytes("%s in file %s, position %d:%d--%d:%d.")]; + function duration_of_jsoo(d) + {return caml_call3(Runtime_ocaml_Runtime[60],d.years,d.months,d.days)} + function duration_to_jsoo(d) + {var + match=caml_call1(Runtime_ocaml_Runtime[61],d), + days=match[3], + months=match[2], + years=match[1]; + return {"years":years,"months":months,"days":days}} + function date_of_jsoo(d) + {var d$0=runtime.caml_string_of_jsstring(d); + if(caml_call2(Stdlib_String[14],d$0,84)) + var + _r_=caml_call1(caml_call1(Stdlib_String[16],84),d$0), + d$1=caml_call1(Stdlib_List[5],_r_); + else + var d$1=d$0; + var match=caml_call2(Stdlib_String[16],45,d$1); + if(match) + {var _s_=match[2]; + if(_s_) + {var _t_=_s_[2]; + if(_t_ && ! _t_[2]) + {var + day=_t_[1], + month=_s_[1], + year=match[1], + _u_=caml_int_of_string(day), + _v_=caml_int_of_string(month), + _w_=caml_int_of_string(year); + return caml_call3(Runtime_ocaml_Runtime[57],_w_,_v_,_u_)}}} + return caml_call1(Stdlib[2],cst_date_of_jsoo_invalid_date)} + function date_to_jsoo(d) + {return caml_jsstring_of_string(caml_call1(Runtime_ocaml_Runtime[56],d))} + function t19(param) + {return caml_js_wrap_meth_callback + (function(param) + {var _i_=caml_call1(Runtime_ocaml_Runtime[23],0); + function _j_(evt) + {if(3 === evt[0]) + var + pos=evt[1], + _q_= + caml_call2(Stdlib_List[19],caml_jsstring_of_string,pos[6]), + t12=caml_js_from_array(caml_call1(Stdlib_Array[12],_q_)), + t7=caml_jsstring_of_string(pos[1]), + _l_= + caml_call1 + (Js_of_ocaml_Js[4], + {"fileName":t7, + "startLine":pos[2], + "endLine":pos[4], + "startColumn":pos[3], + "endColumn":pos[5], + "lawHeadings":t12}); + else + var _l_=Js_of_ocaml_Js[3]; + if(2 === evt[0]) + var v=evt[2],_m_=v; + else + var _m_=caml_call1(Runtime_ocaml_Runtime[10],0); + var + _n_=caml_call1(Runtime_ocaml_Runtime[9],_m_), + t15= + caml_jsstring_of_string(caml_call4(Yojson[11][5],0,0,0,_n_)); + if(3 === evt[0]) + var _o_=0; + else + var + info=evt[1], + _o_=caml_call2(Stdlib_List[19],caml_jsstring_of_string,info); + var + t14= + caml_js_from_array(caml_call1(Stdlib_Array[12],_o_)); + switch(evt[0]) + {case 0:var _p_=cst_Begin_call;break; + case 1:var _p_=cst_End_call;break; + case 2:var _p_=cst_Variable_definition;break; + default:var _p_=cst_Decision_taken} + var t13=caml_jsstring_of_string(_p_); + return {"eventType":t13, + "information":t14, + "loggedValueJson":t15, + "sourcePosition":_l_}} + var _k_=caml_call2(Stdlib_List[19],_j_,_i_); + return caml_js_from_array(caml_call1(Stdlib_Array[12],_k_))})} + function t18(param) + {return caml_js_wrap_meth_callback + (function(param) + {var + _d_=caml_call1(Runtime_ocaml_Runtime[23],0), + _e_=caml_call1(Runtime_ocaml_Runtime[24][1],_d_); + function _f_(event) + {var + _h_=caml_call1(Runtime_ocaml_Runtime[20],event), + t6= + caml_jsstring_of_string(caml_call4(Yojson[11][5],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_))})} + function t17(param) + {return caml_js_wrap_meth_callback(Runtime_ocaml_Runtime[25])} + var + event_manager= + {"resetLog":caml_js_wrap_meth_callback(t17), + "retrieveEvents":caml_js_wrap_meth_callback(t18), + "retrieveRawEvents":caml_js_wrap_meth_callback(t19)}; + function execute_or_throw_error(f) + {function throw_error(descr,pos) + {var + t21= + caml_jsstring_of_string + (caml_call7 + (Stdlib_Format[133],_a_,descr,pos[1],pos[2],pos[3],pos[4],pos[5])); + function t23(param){return t21} + var + _c_= + caml_call1 + (Js_of_ocaml_Js[33][9], + {"name":"NoValueProvided", + "message":t21, + "stack":Js_of_ocaml_Js[6][1], + "toString":caml_js_wrap_meth_callback(t23)}); + return caml_call1(Js_of_ocaml_Js[33][5],_c_)} + try + {var _b_=caml_call1(f,0);return _b_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] === Runtime_ocaml_Runtime[8]) + {var pos=exn[2]; + return throw_error(cst_No_rule_applies_in_the_giv,pos)} + if(exn[1] === Runtime_ocaml_Runtime[4]) + {var pos$0=exn[2]; + return throw_error(cst_A_conflict_happened_betwee,pos$0)} + if(exn[1] === Runtime_ocaml_Runtime[3]) + {var pos$1=exn[2]; + return throw_error(cst_A_failure_happened_in_the_,pos$1)} + throw exn}} + var + Runtime_jsoo_Runtime= + [0, + event_manager, + duration_of_jsoo, + duration_to_jsoo, + date_of_jsoo, + date_to_jsoo, + execute_or_throw_error]; + caml_register_global(62,Runtime_jsoo_Runtime,"Runtime_jsoo__Runtime"); + return} + (globalThis)); + + +//# 1 "law_source/.law_source.objs/law_source.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_js_from_array=runtime.caml_js_from_array, + caml_js_to_array=runtime.caml_js_to_array, + caml_js_wrap_callback=runtime.caml_js_wrap_callback, + caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback, + caml_register_global=runtime.caml_register_global, + caml_string_notequal=runtime.caml_string_notequal, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, + caml_string_of_jsstring=runtime.caml_string_of_jsstring, + 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_0$66=caml_string_of_jsbytes("0"), + cst_0$65=caml_string_of_jsbytes("0"), + cst_0$63=caml_string_of_jsbytes("0"), + cst_0$64=caml_string_of_jsbytes("0"), + cst_0$62=caml_string_of_jsbytes("0"), + cst_1$27=caml_string_of_jsbytes("1."), + cst_0_5$0=caml_string_of_jsbytes("0.5"), + cst_0$61=caml_string_of_jsbytes("0."), + cst_12$10=caml_string_of_jsbytes("12."), + cst_12$8=caml_string_of_jsbytes("12."), + cst_1$26=caml_string_of_jsbytes("1."), + cst_12$9=caml_string_of_jsbytes("12."), + cst_12$7=caml_string_of_jsbytes("12."), + cst_12$5=caml_string_of_jsbytes("12."), + cst_1$25=caml_string_of_jsbytes("1."), + cst_12$6=caml_string_of_jsbytes("12."), + cst_0$60=caml_string_of_jsbytes("0"), + cst_1$24=caml_string_of_jsbytes("1"), + cst_0_0369=caml_string_of_jsbytes("0.0369"), + cst_1$23=caml_string_of_jsbytes("1"), + cst_0_0567=caml_string_of_jsbytes("0.0567"), + cst_1$22=caml_string_of_jsbytes("1"), + cst_0_16$1=caml_string_of_jsbytes("0.16"), + cst_0_08$0=caml_string_of_jsbytes("0.08"), + cst_0_04=caml_string_of_jsbytes("0.04"), + cst_0$59=caml_string_of_jsbytes("0"), + cst_0$57=caml_string_of_jsbytes("0."), + cst_0$58=caml_string_of_jsbytes("0."), + cst_1$21=caml_string_of_jsbytes("1"), + cst_0_232=caml_string_of_jsbytes("0.232"), + cst_0$56=caml_string_of_jsbytes("0"), + cst_1$20=caml_string_of_jsbytes("1"), + cst_0_2379=caml_string_of_jsbytes("0.2379"), + cst_0$55=caml_string_of_jsbytes("0"), + cst_1$19=caml_string_of_jsbytes("1"), + cst_0_2437=caml_string_of_jsbytes("0.2437"), + cst_0$54=caml_string_of_jsbytes("0"), + cst_1$18=caml_string_of_jsbytes("1"), + cst_0_2496=caml_string_of_jsbytes("0.2496"), + cst_0$53=caml_string_of_jsbytes("0"), + cst_1$17=caml_string_of_jsbytes("1"), + cst_0_2555=caml_string_of_jsbytes("0.2555"), + cst_0$52=caml_string_of_jsbytes("0"), + cst_1$16=caml_string_of_jsbytes("1"), + cst_0_2613=caml_string_of_jsbytes("0.2613"), + cst_0$51=caml_string_of_jsbytes("0"), + cst_1$15=caml_string_of_jsbytes("1"), + cst_0_2672=caml_string_of_jsbytes("0.2672"), + cst_0$50=caml_string_of_jsbytes("0"), + cst_1$14=caml_string_of_jsbytes("1"), + cst_0_2804=caml_string_of_jsbytes("0.2804"), + cst_0$49=caml_string_of_jsbytes("0"), + cst_1$13=caml_string_of_jsbytes("1"), + cst_0_2936=caml_string_of_jsbytes("0.2936"), + cst_0$48=caml_string_of_jsbytes("0"), + cst_1$12=caml_string_of_jsbytes("1"), + cst_0_3068=caml_string_of_jsbytes("0.3068"), + cst_0$47=caml_string_of_jsbytes("0"), + cst_1$11=caml_string_of_jsbytes("1"), + cst_0_32$0=caml_string_of_jsbytes("0.32"), + cst_0$46=caml_string_of_jsbytes("0"), + cst_1$10=caml_string_of_jsbytes("1"), + cst_0_32=caml_string_of_jsbytes("0.32"), + cst_0$45=caml_string_of_jsbytes("0"), + cst_1$9=caml_string_of_jsbytes("1"), + cst_0_16$0=caml_string_of_jsbytes("0.16"), + cst_0$44=caml_string_of_jsbytes("0"), + cst_1$8=caml_string_of_jsbytes("1"), + cst_0_08=caml_string_of_jsbytes("0.08"), + cst_0$43=caml_string_of_jsbytes("0"), + cst_2$15=caml_string_of_jsbytes("2"), + cst_2$16=caml_string_of_jsbytes("2"), + cst_0_41=caml_string_of_jsbytes("0.41"), + cst_0$42=caml_string_of_jsbytes("0"), + cst_2$13=caml_string_of_jsbytes("2"), + cst_2$14=caml_string_of_jsbytes("2"), + cst_0_205=caml_string_of_jsbytes("0.205"), + cst_0$41=caml_string_of_jsbytes("0"), + cst_2$11=caml_string_of_jsbytes("2"), + cst_2$12=caml_string_of_jsbytes("2"), + cst_0_1025=caml_string_of_jsbytes("0.1025"), + cst_0$40=caml_string_of_jsbytes("0"), + cst_0_20234=caml_string_of_jsbytes("0.20234"), + cst_0_10117=caml_string_of_jsbytes("0.10117"), + cst_0_05059=caml_string_of_jsbytes("0.05059"), + cst_12$4=caml_string_of_jsbytes("12."), + cst_12$2=caml_string_of_jsbytes("12."), + cst_1$7=caml_string_of_jsbytes("1."), + cst_12$3=caml_string_of_jsbytes("12."), + cst_12$1=caml_string_of_jsbytes("12."), + cst_12=caml_string_of_jsbytes("12."), + cst_1$6=caml_string_of_jsbytes("1."), + cst_12$0=caml_string_of_jsbytes("12."), + cst_0$39=caml_string_of_jsbytes("0"), + cst_1$5=caml_string_of_jsbytes("1"), + cst_1$4=caml_string_of_jsbytes("1"), + cst_2$10=caml_string_of_jsbytes("2"), + cst_0$37=caml_string_of_jsbytes("0"), + cst_0_145=caml_string_of_jsbytes("0.145"), + cst_0$38=caml_string_of_jsbytes("0"), + cst_0$35=caml_string_of_jsbytes("0"), + cst_0_1393=caml_string_of_jsbytes("0.1393"), + cst_0$36=caml_string_of_jsbytes("0"), + cst_0$33=caml_string_of_jsbytes("0"), + cst_0_1335=caml_string_of_jsbytes("0.1335"), + cst_0$34=caml_string_of_jsbytes("0"), + cst_0$31=caml_string_of_jsbytes("0"), + cst_0_1278=caml_string_of_jsbytes("0.1278"), + cst_0$32=caml_string_of_jsbytes("0"), + cst_0$29=caml_string_of_jsbytes("0"), + cst_0_122=caml_string_of_jsbytes("0.122"), + cst_0$30=caml_string_of_jsbytes("0"), + cst_0$27=caml_string_of_jsbytes("0"), + cst_0_1163=caml_string_of_jsbytes("0.1163"), + cst_0$28=caml_string_of_jsbytes("0"), + cst_0$25=caml_string_of_jsbytes("0"), + cst_0_1105=caml_string_of_jsbytes("0.1105"), + cst_0$26=caml_string_of_jsbytes("0"), + cst_0$23=caml_string_of_jsbytes("0"), + cst_0_0976=caml_string_of_jsbytes("0.0976"), + cst_0$24=caml_string_of_jsbytes("0"), + cst_0$21=caml_string_of_jsbytes("0"), + cst_0_0847=caml_string_of_jsbytes("0.0847"), + cst_0$22=caml_string_of_jsbytes("0"), + cst_0$19=caml_string_of_jsbytes("0"), + cst_0_0717=caml_string_of_jsbytes("0.0717"), + cst_0$20=caml_string_of_jsbytes("0"), + cst_0$17=caml_string_of_jsbytes("0"), + cst_5728=caml_string_of_jsbytes("5728"), + cst_0$18=caml_string_of_jsbytes("0"), + cst_0$15=caml_string_of_jsbytes("0"), + cst_0_0588$0=caml_string_of_jsbytes("0.0588"), + cst_0$16=caml_string_of_jsbytes("0"), + cst_1$3=caml_string_of_jsbytes("1"), + cst_0_0588=caml_string_of_jsbytes("0.0588"), + cst_0$14=caml_string_of_jsbytes("0"), + cst_1$2=caml_string_of_jsbytes("1."), + cst_0_5=caml_string_of_jsbytes("0.5"), + cst_0$12=caml_string_of_jsbytes("0."), + cst_0$13=caml_string_of_jsbytes("0."), + cst_2$9=caml_string_of_jsbytes("2"), + cst_0_0463$0=caml_string_of_jsbytes("0.0463"), + cst_0$11=caml_string_of_jsbytes("0"), + cst_2$8=caml_string_of_jsbytes("2"), + cst_0_0539=caml_string_of_jsbytes("0.0539"), + cst_0$10=caml_string_of_jsbytes("0"), + cst_2$7=caml_string_of_jsbytes("2"), + cst_0_0615=caml_string_of_jsbytes("0.0615"), + cst_0$9=caml_string_of_jsbytes("0"), + cst_2$6=caml_string_of_jsbytes("2"), + cst_0_069=caml_string_of_jsbytes("0.069"), + cst_0$8=caml_string_of_jsbytes("0"), + cst_2$5=caml_string_of_jsbytes("2"), + cst_0_0766=caml_string_of_jsbytes("0.0766"), + cst_0$7=caml_string_of_jsbytes("0"), + cst_2$4=caml_string_of_jsbytes("2"), + cst_0_0842=caml_string_of_jsbytes("0.0842"), + cst_0$6=caml_string_of_jsbytes("0"), + cst_2$3=caml_string_of_jsbytes("2"), + cst_0_0918=caml_string_of_jsbytes("0.0918"), + cst_0$5=caml_string_of_jsbytes("0"), + cst_2$2=caml_string_of_jsbytes("2"), + cst_0_1089=caml_string_of_jsbytes("0.1089"), + cst_0$4=caml_string_of_jsbytes("0"), + cst_2$1=caml_string_of_jsbytes("2"), + cst_0_1259=caml_string_of_jsbytes("0.1259"), + cst_0$3=caml_string_of_jsbytes("0"), + cst_2$0=caml_string_of_jsbytes("2"), + cst_0_143=caml_string_of_jsbytes("0.143"), + cst_0$2=caml_string_of_jsbytes("0"), + cst_2=caml_string_of_jsbytes("2"), + cst_0_16=caml_string_of_jsbytes("0.16"), + cst_0$1=caml_string_of_jsbytes("0"), + cst_3$1=caml_string_of_jsbytes("3"), + cst_3$2=caml_string_of_jsbytes("3"), + cst_0_0463=caml_string_of_jsbytes("0.0463"), + cst_0$0=caml_string_of_jsbytes("0"), + cst_1$1=caml_string_of_jsbytes("1"), + cst_1$0=caml_string_of_jsbytes("1"), + cst_562800$0=caml_string_of_jsbytes("562800"), + cst_5628600=caml_string_of_jsbytes("5628600"), + cst_568400$0=caml_string_of_jsbytes("568400"), + cst_5684900=caml_string_of_jsbytes("5684900"), + cst_577500$0=caml_string_of_jsbytes("577500"), + cst_5775900=caml_string_of_jsbytes("5775900"), + cst_582700$0=caml_string_of_jsbytes("582700"), + cst_5827900=caml_string_of_jsbytes("5827900"), + cst_559500$0=caml_string_of_jsbytes("559500"), + cst_5595000=caml_string_of_jsbytes("5595000"), + cst_562800=caml_string_of_jsbytes("562800"), + cst_7877000=caml_string_of_jsbytes("7877000"), + cst_568400=caml_string_of_jsbytes("568400"), + cst_7955800=caml_string_of_jsbytes("7955800"), + cst_577500=caml_string_of_jsbytes("577500"), + cst_8083100=caml_string_of_jsbytes("8083100"), + cst_582700=caml_string_of_jsbytes("582700"), + cst_8155800=caml_string_of_jsbytes("8155800"), + cst_559500=caml_string_of_jsbytes("559500"), + cst_7830000=caml_string_of_jsbytes("7830000"), + cst_3$0=caml_string_of_jsbytes("3"), + cst_3=caml_string_of_jsbytes("3"), + cst_169$0=caml_string_of_jsbytes("169."), + cst_0_55$0=caml_string_of_jsbytes("0.55"), + cst_169=caml_string_of_jsbytes("169."), + cst_0_55=caml_string_of_jsbytes("0.55"), + cst_41316=caml_string_of_jsbytes("41316"), + cst_41440=caml_string_of_jsbytes("41440"), + cst_41481=caml_string_of_jsbytes("41481"), + cst_42228=caml_string_of_jsbytes("42228"), + cst_1003=caml_string_of_jsbytes("1003"), + cst_757=caml_string_of_jsbytes("757"), + cst_1015=caml_string_of_jsbytes("1015"), + cst_766=caml_string_of_jsbytes("766"), + cst_1025=caml_string_of_jsbytes("1025"), + cst_774=caml_string_of_jsbytes("774"), + cst_1057=caml_string_of_jsbytes("1057"), + cst_798=caml_string_of_jsbytes("798"), + cst_1085=caml_string_of_jsbytes("1085"), + cst_819=caml_string_of_jsbytes("819"), + cst_1107=caml_string_of_jsbytes("1107"), + cst_835=caml_string_of_jsbytes("835"), + cst_1127=caml_string_of_jsbytes("1127"), + cst_851=caml_string_of_jsbytes("851"), + cst_0=caml_string_of_jsbytes("0"), + cst_1=caml_string_of_jsbytes("-1"), + cst_i_avait_enfant_charge_avan= + caml_string_of_jsbytes + ("i_avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012_in"), + cst_i_personne_charge_effectiv= + caml_string_of_jsbytes + ("i_personne_charge_effective_permanente_remplit_titre_I_in"), + cst_i_personne_charge_effectiv$0= + caml_string_of_jsbytes + ("i_personne_charge_effective_permanente_est_parent_in"), + cst_i_r_sidence_in=caml_string_of_jsbytes("i_r\xc3\xa9sidence_in"), + cst_i_ressources_m_nage_in= + caml_string_of_jsbytes("i_ressources_m\xc3\xa9nage_in"), + cst_i_enfants_in=caml_string_of_jsbytes("i_enfants_in"), + cst_i_date_courante_in=caml_string_of_jsbytes("i_date_courante_in"), + cst_date_courante_in$2=caml_string_of_jsbytes("date_courante_in"), + cst_r_sidence_in$1=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), + cst_date_courante_in$1=caml_string_of_jsbytes("date_courante_in"), + cst_avait_enfant_charge_avant_= + caml_string_of_jsbytes + ("avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012_in"), + cst_enfants_charge_in= + caml_string_of_jsbytes("enfants_\xc3\xa0_charge_in"), + cst_date_courante_in$0=caml_string_of_jsbytes("date_courante_in"), + cst_r_sidence_in$0=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), + cst_ressources_m_nage_in= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_in"), + cst_personne_charge_effective_= + caml_string_of_jsbytes + ("personne_charge_effective_permanente_remplit_titre_I_in"), + cst_personne_charge_effective_$0= + caml_string_of_jsbytes + ("personne_charge_effective_permanente_est_parent_in"), + cst_enfants_in=caml_string_of_jsbytes("enfants_in"), + cst_r_sidence_in=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), + cst_prestation_courante_in= + caml_string_of_jsbytes("prestation_courante_in"), + cst_date_courante_in=caml_string_of_jsbytes("date_courante_in"), + cst_r_gime_outre_mer_l751_1= + caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1"), + cst_ge_l512_3_2=caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2"), + cst_conditions_hors_ge= + caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"), + cst_droit_ouvert=caml_string_of_jsbytes("droit_ouvert"), + cst_le_plus_g=caml_string_of_jsbytes("le_plus_\xc3\xa2g\xc3\xa9"), + cst_b_n_ficie_titre_personnel_= + caml_string_of_jsbytes + ("b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"), + cst_a_d_j_ouvert_droit_aux_all= + caml_string_of_jsbytes + ("a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"), + cst_prise_en_charge=caml_string_of_jsbytes("prise_en_charge"), + cst_date_de_naissance=caml_string_of_jsbytes("date_de_naissance"), + cst_r_muneration_mensuelle= + caml_string_of_jsbytes("r\xc3\xa9muneration_mensuelle"), + cst_obligation_scolaire=caml_string_of_jsbytes("obligation_scolaire"), + cst_identifiant=caml_string_of_jsbytes("identifiant"), + cst_d_b_n_ficie_titre_personne= + caml_string_of_jsbytes + ("d_b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"), + cst_d_a_d_j_ouvert_droit_aux_a= + caml_string_of_jsbytes + ("d_a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"), + cst_d_prise_en_charge=caml_string_of_jsbytes("d_prise_en_charge"), + cst_d_date_de_naissance=caml_string_of_jsbytes("d_date_de_naissance"), + cst_d_r_muneration_mensuelle= + caml_string_of_jsbytes("d_r\xc3\xa9muneration_mensuelle"), + cst_d_identifiant=caml_string_of_jsbytes("d_identifiant"), + cst_i_montant_vers=caml_string_of_jsbytes("i_montant_vers\xc3\xa9"), + cst_montant=caml_string_of_jsbytes("montant"), + cst_brut_horaire=caml_string_of_jsbytes("brut_horaire"), + cst_montant_vers=caml_string_of_jsbytes("montant_vers\xc3\xa9"), + cst_ge_minimum_alin_a_1_l521_3= + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + cst_Guadeloupe=caml_string_of_jsbytes("Guadeloupe"), + cst_Guyane=caml_string_of_jsbytes("Guyane"), + cst_Martinique=caml_string_of_jsbytes("Martinique"), + cst_LaR_union=caml_string_of_jsbytes("LaR\xc3\xa9union"), + cst_SaintBarth_lemy=caml_string_of_jsbytes("SaintBarth\xc3\xa9lemy"), + cst_SaintMartin=caml_string_of_jsbytes("SaintMartin"), + cst_M_tropole=caml_string_of_jsbytes("M\xc3\xa9tropole"), + cst_SaintPierreEtMiquelon=caml_string_of_jsbytes("SaintPierreEtMiquelon"), + cst_Mayotte=caml_string_of_jsbytes("Mayotte"), + cst_PrestationAccueilJeuneEnfa= + caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"), + cst_AllocationsFamiliales=caml_string_of_jsbytes("AllocationsFamiliales"), + cst_Compl_mentFamilial= + caml_string_of_jsbytes("Compl\xc3\xa9mentFamilial"), + cst_AllocationLogement=caml_string_of_jsbytes("AllocationLogement"), + cst_Allocation_ducationEnfantH= + caml_string_of_jsbytes + ("Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9"), + cst_AllocationSoutienFamilial= + caml_string_of_jsbytes("AllocationSoutienFamilial"), + cst_AllocationRentr_eScolaire= + caml_string_of_jsbytes("AllocationRentr\xc3\xa9eScolaire"), + cst_AllocationJournali_rePrese= + caml_string_of_jsbytes("AllocationJournali\xc3\xa8rePresenceParentale"), + cst_Normal=caml_string_of_jsbytes("Normal"), + cst_AllocationVers_eAuxService= + caml_string_of_jsbytes("AllocationVers\xc3\xa9eAuxServicesSociaux"), + cst_Compl_te=caml_string_of_jsbytes("Compl\xc3\xa8te"), + cst_Partag_e=caml_string_of_jsbytes("Partag\xc3\xa9e"), + cst_Z_ro=caml_string_of_jsbytes("Z\xc3\xa9ro"), + cst_Avant=caml_string_of_jsbytes("Avant"), + cst_Pendant=caml_string_of_jsbytes("Pendant"), + cst_Apr_s=caml_string_of_jsbytes("Apr\xc3\xa8s"), + cst_GardeAltern_ePartageAlloca= + caml_string_of_jsbytes("GardeAltern\xc3\xa9ePartageAllocations"), + cst_GardeAltern_eAllocataireUn= + caml_string_of_jsbytes("GardeAltern\xc3\xa9eAllocataireUnique"), + cst_EffectiveEtPermanente=caml_string_of_jsbytes("EffectiveEtPermanente"), + cst_ServicesSociauxAllocationV= + caml_string_of_jsbytes + ("ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille"), + cst_ServicesSociauxAllocationV$0= + caml_string_of_jsbytes + ("ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux"), + cst_The_function_conditions_ho= + caml_string_of_jsbytes + ("The function 'conditions_hors_age' translation isn't yet supported..."), + cst_The_function_droit_ouvert_= + caml_string_of_jsbytes + ("The function 'droit_ouvert' translation isn't yet supported..."), + cst_Guadeloupe$0=caml_string_of_jsbytes("Guadeloupe"), + cst_Guyane$0=caml_string_of_jsbytes("Guyane"), + cst_LaReunion=caml_string_of_jsbytes("LaReunion"), + cst_Martinique$0=caml_string_of_jsbytes("Martinique"), + cst_Mayotte$0=caml_string_of_jsbytes("Mayotte"), + cst_Metropole=caml_string_of_jsbytes("Metropole"), + cst_SaintBarthelemy=caml_string_of_jsbytes("SaintBarthelemy"), + cst_SaintMartin$0=caml_string_of_jsbytes("SaintMartin"), + cst_SaintPierreEtMiquelon$0= + caml_string_of_jsbytes("SaintPierreEtMiquelon"), + cst_AllocationEducationEnfantH= + caml_string_of_jsbytes("AllocationEducationEnfantHandicape"), + cst_AllocationJournalierePrese= + caml_string_of_jsbytes("AllocationJournalierePresenceParentale"), + cst_AllocationLogement$0=caml_string_of_jsbytes("AllocationLogement"), + cst_AllocationRentreeScolaire= + caml_string_of_jsbytes("AllocationRentreeScolaire"), + cst_AllocationSoutienFamilial$0= + caml_string_of_jsbytes("AllocationSoutienFamilial"), + cst_AllocationsFamiliales$0= + caml_string_of_jsbytes("AllocationsFamiliales"), + cst_ComplementFamilial=caml_string_of_jsbytes("ComplementFamilial"), + cst_PrestationAccueilJeuneEnfa$0= + caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"), + cst_AllocationVerseeAuxService= + caml_string_of_jsbytes("AllocationVerseeAuxServicesSociaux"), + cst_Normal$0=caml_string_of_jsbytes("Normal"), + cst_Complete=caml_string_of_jsbytes("Complete"), + cst_Partagee=caml_string_of_jsbytes("Partagee"), + cst_Zero=caml_string_of_jsbytes("Zero"), + cst_Apres=caml_string_of_jsbytes("Apres"), + cst_Avant$0=caml_string_of_jsbytes("Avant"), + cst_Pendant$0=caml_string_of_jsbytes("Pendant"), + cst_EffectiveEtPermanente$0= + caml_string_of_jsbytes("EffectiveEtPermanente"), + cst_GardeAlterneeAllocataireUn= + caml_string_of_jsbytes("GardeAlterneeAllocataireUnique"), + cst_GardeAlterneePartageAlloca= + caml_string_of_jsbytes("GardeAlterneePartageAllocations"), + cst_ServicesSociauxAllocationV$1= + caml_string_of_jsbytes("ServicesSociauxAllocationVerseeALaFamille"), + cst_ServicesSociauxAllocationV$2= + caml_string_of_jsbytes + ("ServicesSociauxAllocationVerseeAuxServicesSociaux"), + cst_AllocationsFamilialesLib= + caml_string_of_jsbytes("AllocationsFamilialesLib"), + cst_0$398=caml_string_of_jsbytes("0"), + cst_0$399=caml_string_of_jsbytes("0"), + cst_0$400=caml_string_of_jsbytes("0."), + cst_0$397=caml_string_of_jsbytes("0"), + cst_0$393=caml_string_of_jsbytes("0"), + cst_0$394=caml_string_of_jsbytes("0"), + cst_0$395=caml_string_of_jsbytes("0"), + cst_0$396=caml_string_of_jsbytes("0"), + cst_100$13=caml_string_of_jsbytes("100."), + cst_49$0=caml_string_of_jsbytes("49"), + cst_0_01$1=caml_string_of_jsbytes("0.01"), + cst_0$392=caml_string_of_jsbytes("0"), + cst_1$275=caml_string_of_jsbytes("1"), + cst_1$274=caml_string_of_jsbytes("1"), + cst_0$391=caml_string_of_jsbytes("0"), + cst_1$273=caml_string_of_jsbytes("1"), + cst_3$93=caml_string_of_jsbytes("3"), + cst_0_2$1=caml_string_of_jsbytes("0.2"), + cst_3$94=caml_string_of_jsbytes("3"), + cst_0$390=caml_string_of_jsbytes("0"), + cst_2_4=caml_string_of_jsbytes("2.4"), + cst_3$92=caml_string_of_jsbytes("3"), + cst_0$388=caml_string_of_jsbytes("0"), + cst_0$389=caml_string_of_jsbytes("0"), + cst_100$12=caml_string_of_jsbytes("100."), + cst_49=caml_string_of_jsbytes("49"), + cst_0_01$0=caml_string_of_jsbytes("0.01"), + cst_0$387=caml_string_of_jsbytes("0"), + cst_50$3=caml_string_of_jsbytes("50"), + cst_0$385=caml_string_of_jsbytes("0"), + cst_0$386=caml_string_of_jsbytes("0"), + cst_0$384=caml_string_of_jsbytes("0"), + cst_0$383=caml_string_of_jsbytes("0"), + cst_0$382=caml_string_of_jsbytes("0"), + cst_100$11=caml_string_of_jsbytes("100."), + cst_0_01=caml_string_of_jsbytes("0.01"), + cst_4999=caml_string_of_jsbytes("4999"), + cst_0_75$12=caml_string_of_jsbytes("0.75"), + cst_0_75$11=caml_string_of_jsbytes("0.75"), + cst_0$379=caml_string_of_jsbytes("0"), + cst_158700=caml_string_of_jsbytes("158700"), + cst_191300=caml_string_of_jsbytes("191300"), + cst_1$270=caml_string_of_jsbytes("1"), + cst_205500=caml_string_of_jsbytes("205500"), + cst_2$109=caml_string_of_jsbytes("2"), + cst_211300=caml_string_of_jsbytes("211300"), + cst_3$89=caml_string_of_jsbytes("3"), + cst_217100=caml_string_of_jsbytes("217100"), + cst_4$85=caml_string_of_jsbytes("4"), + cst_222900=caml_string_of_jsbytes("222900"), + cst_5$132=caml_string_of_jsbytes("5"), + cst_228000=caml_string_of_jsbytes("228000"), + cst_5$133=caml_string_of_jsbytes("5"), + cst_19800=caml_string_of_jsbytes("19800"), + cst_228000$0=caml_string_of_jsbytes("228000"), + cst_0$380=caml_string_of_jsbytes("0"), + cst_139300=caml_string_of_jsbytes("139300"), + cst_170600=caml_string_of_jsbytes("170600"), + cst_1$271=caml_string_of_jsbytes("1"), + cst_184700=caml_string_of_jsbytes("184700"), + cst_2$110=caml_string_of_jsbytes("2"), + cst_191200=caml_string_of_jsbytes("191200"), + cst_3$90=caml_string_of_jsbytes("3"), + cst_197700$0=caml_string_of_jsbytes("197700"), + cst_4$86=caml_string_of_jsbytes("4"), + cst_204200=caml_string_of_jsbytes("204200"), + cst_5$134=caml_string_of_jsbytes("5"), + cst_218700=caml_string_of_jsbytes("218700"), + cst_5$135=caml_string_of_jsbytes("5"), + cst_19100$1=caml_string_of_jsbytes("19100"), + cst_218700$0=caml_string_of_jsbytes("218700"), + cst_0$381=caml_string_of_jsbytes("0"), + cst_130600=caml_string_of_jsbytes("130600"), + cst_158400=caml_string_of_jsbytes("158400"), + cst_1$272=caml_string_of_jsbytes("1"), + cst_172600=caml_string_of_jsbytes("172600"), + cst_2$111=caml_string_of_jsbytes("2"), + cst_179800$0=caml_string_of_jsbytes("179800"), + cst_3$91=caml_string_of_jsbytes("3"), + cst_187000=caml_string_of_jsbytes("187000"), + cst_4$87=caml_string_of_jsbytes("4"), + cst_194200=caml_string_of_jsbytes("194200"), + cst_5$136=caml_string_of_jsbytes("5"), + cst_208600$0=caml_string_of_jsbytes("208600"), + cst_5$137=caml_string_of_jsbytes("5"), + cst_18200=caml_string_of_jsbytes("18200"), + cst_208600$1=caml_string_of_jsbytes("208600"), + cst_0$376=caml_string_of_jsbytes("0"), + cst_160400=caml_string_of_jsbytes("160400"), + cst_193400=caml_string_of_jsbytes("193400"), + cst_1$267=caml_string_of_jsbytes("1"), + cst_207800=caml_string_of_jsbytes("207800"), + cst_2$106=caml_string_of_jsbytes("2"), + cst_213700=caml_string_of_jsbytes("213700"), + cst_3$86=caml_string_of_jsbytes("3"), + cst_219600=caml_string_of_jsbytes("219600"), + cst_4$82=caml_string_of_jsbytes("4"), + cst_225500$0=caml_string_of_jsbytes("225500"), + cst_5$126=caml_string_of_jsbytes("5"), + cst_230500$1=caml_string_of_jsbytes("230500"), + cst_5$127=caml_string_of_jsbytes("5"), + cst_20000=caml_string_of_jsbytes("20000"), + cst_230500$2=caml_string_of_jsbytes("230500"), + cst_0$377=caml_string_of_jsbytes("0"), + cst_140800$0=caml_string_of_jsbytes("140800"), + cst_172500$0=caml_string_of_jsbytes("172500"), + cst_1$268=caml_string_of_jsbytes("1"), + cst_186700=caml_string_of_jsbytes("186700"), + cst_2$107=caml_string_of_jsbytes("2"), + cst_193300=caml_string_of_jsbytes("193300"), + cst_3$87=caml_string_of_jsbytes("3"), + cst_199900$1=caml_string_of_jsbytes("199900"), + cst_4$83=caml_string_of_jsbytes("4"), + cst_206500=caml_string_of_jsbytes("206500"), + cst_5$128=caml_string_of_jsbytes("5"), + cst_221100=caml_string_of_jsbytes("221100"), + cst_5$129=caml_string_of_jsbytes("5"), + cst_19300$0=caml_string_of_jsbytes("19300"), + cst_221100$0=caml_string_of_jsbytes("221100"), + cst_0$378=caml_string_of_jsbytes("0"), + cst_132000$0=caml_string_of_jsbytes("132000"), + cst_180100$1=caml_string_of_jsbytes("180100"), + cst_1$269=caml_string_of_jsbytes("1"), + cst_174500=caml_string_of_jsbytes("174500"), + cst_2$108=caml_string_of_jsbytes("2"), + cst_181800$0=caml_string_of_jsbytes("181800"), + cst_3$88=caml_string_of_jsbytes("3"), + cst_189100=caml_string_of_jsbytes("189100"), + cst_4$84=caml_string_of_jsbytes("4"), + cst_196400=caml_string_of_jsbytes("196400"), + cst_5$130=caml_string_of_jsbytes("5"), + cst_210900=caml_string_of_jsbytes("210900"), + cst_5$131=caml_string_of_jsbytes("5"), + cst_18400=caml_string_of_jsbytes("18400"), + cst_210900$0=caml_string_of_jsbytes("210900"), + cst_0$373=caml_string_of_jsbytes("0"), + cst_163300=caml_string_of_jsbytes("163300"), + cst_196900=caml_string_of_jsbytes("196900"), + cst_1$264=caml_string_of_jsbytes("1"), + cst_211600=caml_string_of_jsbytes("211600"), + cst_2$103=caml_string_of_jsbytes("2"), + cst_217600$0=caml_string_of_jsbytes("217600"), + cst_3$83=caml_string_of_jsbytes("3"), + cst_223600=caml_string_of_jsbytes("223600"), + cst_4$79=caml_string_of_jsbytes("4"), + cst_229600=caml_string_of_jsbytes("229600"), + cst_5$120=caml_string_of_jsbytes("5"), + cst_234600=caml_string_of_jsbytes("234600"), + cst_5$121=caml_string_of_jsbytes("5"), + cst_20400=caml_string_of_jsbytes("20400"), + cst_234600$0=caml_string_of_jsbytes("234600"), + cst_0$374=caml_string_of_jsbytes("0"), + cst_143300=caml_string_of_jsbytes("143300"), + cst_175600=caml_string_of_jsbytes("175600"), + cst_1$265=caml_string_of_jsbytes("1"), + cst_190100=caml_string_of_jsbytes("190100"), + cst_2$104=caml_string_of_jsbytes("2"), + cst_196600=caml_string_of_jsbytes("196600"), + cst_3$84=caml_string_of_jsbytes("3"), + cst_203500=caml_string_of_jsbytes("203500"), + cst_4$80=caml_string_of_jsbytes("4"), + cst_210200=caml_string_of_jsbytes("210200"), + cst_5$122=caml_string_of_jsbytes("5"), + cst_225100=caml_string_of_jsbytes("225100"), + cst_5$123=caml_string_of_jsbytes("5"), + cst_19600=caml_string_of_jsbytes("19600"), + cst_225100$0=caml_string_of_jsbytes("225100"), + cst_0$375=caml_string_of_jsbytes("0"), + cst_134400=caml_string_of_jsbytes("134400"), + cst_163000$0=caml_string_of_jsbytes("163000"), + cst_1$266=caml_string_of_jsbytes("1"), + cst_177700=caml_string_of_jsbytes("177700"), + cst_2$105=caml_string_of_jsbytes("2"), + cst_185100=caml_string_of_jsbytes("185100"), + cst_3$85=caml_string_of_jsbytes("3"), + cst_192500$0=caml_string_of_jsbytes("192500"), + cst_4$81=caml_string_of_jsbytes("4"), + cst_199900$0=caml_string_of_jsbytes("199900"), + cst_5$124=caml_string_of_jsbytes("5"), + cst_214700=caml_string_of_jsbytes("214700"), + cst_5$125=caml_string_of_jsbytes("5"), + cst_18700=caml_string_of_jsbytes("18700"), + cst_214700$0=caml_string_of_jsbytes("214700"), + cst_0$370=caml_string_of_jsbytes("0"), + cst_167200=caml_string_of_jsbytes("167200"), + cst_201600=caml_string_of_jsbytes("201600"), + cst_1$261=caml_string_of_jsbytes("1"), + cst_216700=caml_string_of_jsbytes("216700"), + cst_2$100=caml_string_of_jsbytes("2"), + cst_222800=caml_string_of_jsbytes("222800"), + cst_3$80=caml_string_of_jsbytes("3"), + cst_229000=caml_string_of_jsbytes("229000"), + cst_4$76=caml_string_of_jsbytes("4"), + cst_235100=caml_string_of_jsbytes("235100"), + cst_5$114=caml_string_of_jsbytes("5"), + cst_240200=caml_string_of_jsbytes("240200"), + cst_5$115=caml_string_of_jsbytes("5"), + cst_20900$0=caml_string_of_jsbytes("20900"), + cst_240200$0=caml_string_of_jsbytes("240200"), + cst_0$371=caml_string_of_jsbytes("0"), + cst_146700=caml_string_of_jsbytes("146700"), + cst_179800=caml_string_of_jsbytes("179800"), + cst_1$262=caml_string_of_jsbytes("1"), + cst_194700=caml_string_of_jsbytes("194700"), + cst_2$101=caml_string_of_jsbytes("2"), + cst_201500=caml_string_of_jsbytes("201500"), + cst_3$81=caml_string_of_jsbytes("3"), + cst_208400=caml_string_of_jsbytes("208400"), + cst_4$77=caml_string_of_jsbytes("4"), + cst_215200=caml_string_of_jsbytes("215200"), + cst_5$116=caml_string_of_jsbytes("5"), + cst_230500=caml_string_of_jsbytes("230500"), + cst_5$117=caml_string_of_jsbytes("5"), + cst_20100$0=caml_string_of_jsbytes("20100"), + cst_230500$0=caml_string_of_jsbytes("230500"), + cst_0$372=caml_string_of_jsbytes("0"), + cst_137600=caml_string_of_jsbytes("137600"), + cst_166900=caml_string_of_jsbytes("166900"), + cst_1$263=caml_string_of_jsbytes("1"), + cst_182000=caml_string_of_jsbytes("182000"), + cst_2$102=caml_string_of_jsbytes("2"), + cst_189500=caml_string_of_jsbytes("189500"), + cst_3$82=caml_string_of_jsbytes("3"), + cst_197100=caml_string_of_jsbytes("197100"), + cst_4$78=caml_string_of_jsbytes("4"), + cst_204700$0=caml_string_of_jsbytes("204700"), + cst_5$118=caml_string_of_jsbytes("5"), + cst_219900=caml_string_of_jsbytes("219900"), + cst_5$119=caml_string_of_jsbytes("5"), + cst_19100$0=caml_string_of_jsbytes("19100"), + cst_219900$0=caml_string_of_jsbytes("219900"), + cst_0$367=caml_string_of_jsbytes("0"), + cst_167400=caml_string_of_jsbytes("167400"), + cst_201800=caml_string_of_jsbytes("201800"), + cst_1$258=caml_string_of_jsbytes("1"), + cst_216900=caml_string_of_jsbytes("216900"), + cst_2$97=caml_string_of_jsbytes("2"), + cst_223000=caml_string_of_jsbytes("223000"), + cst_3$77=caml_string_of_jsbytes("3"), + cst_229200=caml_string_of_jsbytes("229200"), + cst_4$73=caml_string_of_jsbytes("4"), + cst_235300=caml_string_of_jsbytes("235300"), + cst_5$108=caml_string_of_jsbytes("5"), + cst_240400=caml_string_of_jsbytes("240400"), + cst_5$109=caml_string_of_jsbytes("5"), + cst_20900=caml_string_of_jsbytes("20900"), + cst_240400$0=caml_string_of_jsbytes("240400"), + cst_0$368=caml_string_of_jsbytes("0"), + cst_146800=caml_string_of_jsbytes("146800"), + cst_180000=caml_string_of_jsbytes("180000"), + cst_1$259=caml_string_of_jsbytes("1"), + cst_194900=caml_string_of_jsbytes("194900"), + cst_2$98=caml_string_of_jsbytes("2"), + cst_201700$0=caml_string_of_jsbytes("201700"), + cst_3$78=caml_string_of_jsbytes("3"), + cst_208600=caml_string_of_jsbytes("208600"), + cst_4$74=caml_string_of_jsbytes("4"), + cst_215400=caml_string_of_jsbytes("215400"), + cst_5$110=caml_string_of_jsbytes("5"), + cst_230700=caml_string_of_jsbytes("230700"), + cst_5$111=caml_string_of_jsbytes("5"), + cst_20100=caml_string_of_jsbytes("20100"), + cst_230700$0=caml_string_of_jsbytes("230700"), + cst_0$369=caml_string_of_jsbytes("0"), + cst_137700=caml_string_of_jsbytes("137700"), + cst_167100=caml_string_of_jsbytes("167100"), + cst_1$260=caml_string_of_jsbytes("1"), + cst_182200=caml_string_of_jsbytes("182200"), + cst_2$99=caml_string_of_jsbytes("2"), + cst_189700=caml_string_of_jsbytes("189700"), + cst_3$79=caml_string_of_jsbytes("3"), + cst_197300=caml_string_of_jsbytes("197300"), + cst_4$75=caml_string_of_jsbytes("4"), + cst_204900=caml_string_of_jsbytes("204900"), + cst_5$112=caml_string_of_jsbytes("5"), + cst_220100=caml_string_of_jsbytes("220100"), + cst_5$113=caml_string_of_jsbytes("5"), + cst_19100=caml_string_of_jsbytes("19100"), + cst_220100$0=caml_string_of_jsbytes("220100"), + cst_0$364=caml_string_of_jsbytes("0"), + cst_169100=caml_string_of_jsbytes("169100"), + cst_203800=caml_string_of_jsbytes("203800"), + cst_1$255=caml_string_of_jsbytes("1"), + cst_219100=caml_string_of_jsbytes("219100"), + cst_2$94=caml_string_of_jsbytes("2"), + cst_225200=caml_string_of_jsbytes("225200"), + cst_3$74=caml_string_of_jsbytes("3"), + cst_231500=caml_string_of_jsbytes("231500"), + cst_4$70=caml_string_of_jsbytes("4"), + cst_237700=caml_string_of_jsbytes("237700"), + cst_5$102=caml_string_of_jsbytes("5"), + cst_242800$1=caml_string_of_jsbytes("242800"), + cst_5$103=caml_string_of_jsbytes("5"), + cst_21100=caml_string_of_jsbytes("21100"), + cst_242800$2=caml_string_of_jsbytes("242800"), + cst_0$365=caml_string_of_jsbytes("0"), + cst_148300=caml_string_of_jsbytes("148300"), + cst_181800=caml_string_of_jsbytes("181800"), + cst_1$256=caml_string_of_jsbytes("1"), + cst_196800=caml_string_of_jsbytes("196800"), + cst_2$95=caml_string_of_jsbytes("2"), + cst_203700=caml_string_of_jsbytes("203700"), + cst_3$75=caml_string_of_jsbytes("3"), + cst_210700=caml_string_of_jsbytes("210700"), + cst_4$71=caml_string_of_jsbytes("4"), + cst_217600=caml_string_of_jsbytes("217600"), + cst_5$104=caml_string_of_jsbytes("5"), + cst_233000=caml_string_of_jsbytes("233000"), + cst_5$105=caml_string_of_jsbytes("5"), + cst_20300=caml_string_of_jsbytes("20300"), + cst_233000$0=caml_string_of_jsbytes("233000"), + cst_0$366=caml_string_of_jsbytes("0"), + cst_139100=caml_string_of_jsbytes("139100"), + cst_168800=caml_string_of_jsbytes("168800"), + cst_1$257=caml_string_of_jsbytes("1"), + cst_184000$1=caml_string_of_jsbytes("184000"), + cst_2$96=caml_string_of_jsbytes("2"), + cst_191600=caml_string_of_jsbytes("191600"), + cst_3$76=caml_string_of_jsbytes("3"), + cst_199300=caml_string_of_jsbytes("199300"), + cst_4$72=caml_string_of_jsbytes("4"), + cst_206900=caml_string_of_jsbytes("206900"), + cst_5$106=caml_string_of_jsbytes("5"), + cst_222300=caml_string_of_jsbytes("222300"), + cst_5$107=caml_string_of_jsbytes("5"), + cst_19300=caml_string_of_jsbytes("19300"), + cst_222300$0=caml_string_of_jsbytes("222300"), + cst_0$361=caml_string_of_jsbytes("0"), + cst_171100=caml_string_of_jsbytes("171100"), + cst_206200=caml_string_of_jsbytes("206200"), + cst_1$252=caml_string_of_jsbytes("1"), + cst_221700=caml_string_of_jsbytes("221700"), + cst_2$91=caml_string_of_jsbytes("2"), + cst_227900=caml_string_of_jsbytes("227900"), + cst_3$71=caml_string_of_jsbytes("3"), + cst_234300=caml_string_of_jsbytes("234300"), + cst_4$67=caml_string_of_jsbytes("4"), + cst_240600=caml_string_of_jsbytes("240600"), + cst_5$96=caml_string_of_jsbytes("5"), + cst_245700=caml_string_of_jsbytes("245700"), + cst_5$97=caml_string_of_jsbytes("5"), + cst_21400=caml_string_of_jsbytes("21400"), + cst_245700$0=caml_string_of_jsbytes("245700"), + cst_0$362=caml_string_of_jsbytes("0"), + cst_150100=caml_string_of_jsbytes("150100"), + cst_184000$0=caml_string_of_jsbytes("184000"), + cst_1$253=caml_string_of_jsbytes("1"), + cst_199200=caml_string_of_jsbytes("199200"), + cst_2$92=caml_string_of_jsbytes("2"), + cst_206100=caml_string_of_jsbytes("206100"), + cst_3$72=caml_string_of_jsbytes("3"), + cst_213200=caml_string_of_jsbytes("213200"), + cst_4$68=caml_string_of_jsbytes("4"), + cst_220200=caml_string_of_jsbytes("220200"), + cst_5$98=caml_string_of_jsbytes("5"), + cst_235800=caml_string_of_jsbytes("235800"), + cst_5$99=caml_string_of_jsbytes("5"), + cst_20500=caml_string_of_jsbytes("20500"), + cst_235800$0=caml_string_of_jsbytes("235800"), + cst_0$363=caml_string_of_jsbytes("0"), + cst_140800=caml_string_of_jsbytes("140800"), + cst_170800=caml_string_of_jsbytes("170800"), + cst_1$254=caml_string_of_jsbytes("1"), + cst_186200=caml_string_of_jsbytes("186200"), + cst_2$93=caml_string_of_jsbytes("2"), + cst_193900=caml_string_of_jsbytes("193900"), + cst_3$73=caml_string_of_jsbytes("3"), + cst_201700=caml_string_of_jsbytes("201700"), + cst_4$69=caml_string_of_jsbytes("4"), + cst_209400=caml_string_of_jsbytes("209400"), + cst_5$100=caml_string_of_jsbytes("5"), + cst_225000=caml_string_of_jsbytes("225000"), + cst_5$101=caml_string_of_jsbytes("5"), + cst_19500=caml_string_of_jsbytes("19500"), + cst_225000$0=caml_string_of_jsbytes("225000"), + cst_0$358=caml_string_of_jsbytes("0"), + cst_26084=caml_string_of_jsbytes("26084"), + cst_31435=caml_string_of_jsbytes("31435"), + cst_1$249=caml_string_of_jsbytes("1"), + cst_33798=caml_string_of_jsbytes("33798"), + cst_2$88=caml_string_of_jsbytes("2"), + cst_34743=caml_string_of_jsbytes("34743"), + cst_3$68=caml_string_of_jsbytes("3"), + cst_35719=caml_string_of_jsbytes("35719"), + cst_4$64=caml_string_of_jsbytes("4"), + cst_36679=caml_string_of_jsbytes("36679"), + cst_5$90=caml_string_of_jsbytes("5"), + cst_37457=caml_string_of_jsbytes("37457"), + cst_5$91=caml_string_of_jsbytes("5"), + cst_3262=caml_string_of_jsbytes("3262"), + cst_37457$0=caml_string_of_jsbytes("37457"), + cst_0$359=caml_string_of_jsbytes("0"), + cst_22883=caml_string_of_jsbytes("22883"), + cst_28051=caml_string_of_jsbytes("28051"), + cst_1$250=caml_string_of_jsbytes("1"), + cst_30368=caml_string_of_jsbytes("30368"), + cst_2$89=caml_string_of_jsbytes("2"), + cst_31420=caml_string_of_jsbytes("31420"), + cst_3$69=caml_string_of_jsbytes("3"), + cst_32502=caml_string_of_jsbytes("32502"), + cst_4$65=caml_string_of_jsbytes("4"), + cst_33569=caml_string_of_jsbytes("33569"), + cst_5$92=caml_string_of_jsbytes("5"), + cst_35947=caml_string_of_jsbytes("35947"), + cst_5$93=caml_string_of_jsbytes("5"), + cst_3125=caml_string_of_jsbytes("3125"), + cst_35947$0=caml_string_of_jsbytes("35947"), + cst_0$360=caml_string_of_jsbytes("0"), + cst_21465=caml_string_of_jsbytes("21465"), + cst_26038=caml_string_of_jsbytes("26038"), + cst_1$251=caml_string_of_jsbytes("1"), + cst_28386=caml_string_of_jsbytes("28386"), + cst_2$90=caml_string_of_jsbytes("2"), + cst_29560=caml_string_of_jsbytes("29560"), + cst_3$70=caml_string_of_jsbytes("3"), + cst_30749=caml_string_of_jsbytes("30749"), + cst_4$66=caml_string_of_jsbytes("4"), + cst_31923=caml_string_of_jsbytes("31923"), + cst_5$94=caml_string_of_jsbytes("5"), + cst_34301=caml_string_of_jsbytes("34301"), + cst_5$95=caml_string_of_jsbytes("5"), + cst_2973=caml_string_of_jsbytes("2973"), + cst_34301$0=caml_string_of_jsbytes("34301"), + cst_0$355=caml_string_of_jsbytes("0"), + cst_26397=caml_string_of_jsbytes("26397"), + cst_31812=caml_string_of_jsbytes("31812"), + cst_1$246=caml_string_of_jsbytes("1"), + cst_34204=caml_string_of_jsbytes("34204"), + cst_2$85=caml_string_of_jsbytes("2"), + cst_35160=caml_string_of_jsbytes("35160"), + cst_3$65=caml_string_of_jsbytes("3"), + cst_36148=caml_string_of_jsbytes("36148"), + cst_4$61=caml_string_of_jsbytes("4"), + cst_37119=caml_string_of_jsbytes("37119"), + cst_5$84=caml_string_of_jsbytes("5"), + cst_37906=caml_string_of_jsbytes("37906"), + cst_5$85=caml_string_of_jsbytes("5"), + cst_3301=caml_string_of_jsbytes("3301"), + cst_37906$0=caml_string_of_jsbytes("37906"), + cst_0$356=caml_string_of_jsbytes("0"), + cst_23158=caml_string_of_jsbytes("23158"), + cst_28388=caml_string_of_jsbytes("28388"), + cst_1$247=caml_string_of_jsbytes("1"), + cst_30732=caml_string_of_jsbytes("30732"), + cst_2$86=caml_string_of_jsbytes("2"), + cst_31797$2=caml_string_of_jsbytes("31797"), + cst_3$66=caml_string_of_jsbytes("3"), + cst_32892=caml_string_of_jsbytes("32892"), + cst_4$62=caml_string_of_jsbytes("4"), + cst_33972=caml_string_of_jsbytes("33972"), + cst_5$86=caml_string_of_jsbytes("5"), + cst_36378=caml_string_of_jsbytes("36378"), + cst_5$87=caml_string_of_jsbytes("5"), + cst_3163=caml_string_of_jsbytes("3163"), + cst_36378$0=caml_string_of_jsbytes("36378"), + cst_0$357=caml_string_of_jsbytes("0"), + cst_21723=caml_string_of_jsbytes("21723"), + cst_26350=caml_string_of_jsbytes("26350"), + cst_1$248=caml_string_of_jsbytes("1"), + cst_28727=caml_string_of_jsbytes("28727"), + cst_2$87=caml_string_of_jsbytes("2"), + cst_29915=caml_string_of_jsbytes("29915"), + cst_3$67=caml_string_of_jsbytes("3"), + cst_31118=caml_string_of_jsbytes("31118"), + cst_4$63=caml_string_of_jsbytes("4"), + cst_32306=caml_string_of_jsbytes("32306"), + cst_5$88=caml_string_of_jsbytes("5"), + cst_34713=caml_string_of_jsbytes("34713"), + cst_5$89=caml_string_of_jsbytes("5"), + cst_3009=caml_string_of_jsbytes("3009"), + cst_34713$0=caml_string_of_jsbytes("34713"), + cst_0$352=caml_string_of_jsbytes("0"), + cst_26714$0=caml_string_of_jsbytes("26714"), + cst_32194=caml_string_of_jsbytes("32194"), + cst_1$243=caml_string_of_jsbytes("1"), + cst_34614=caml_string_of_jsbytes("34614"), + cst_2$82=caml_string_of_jsbytes("2"), + cst_35582=caml_string_of_jsbytes("35582"), + cst_3$62=caml_string_of_jsbytes("3"), + cst_36582=caml_string_of_jsbytes("36582"), + cst_4$58=caml_string_of_jsbytes("4"), + cst_37564=caml_string_of_jsbytes("37564"), + cst_5$78=caml_string_of_jsbytes("5"), + cst_38361=caml_string_of_jsbytes("38361"), + cst_5$79=caml_string_of_jsbytes("5"), + cst_3341=caml_string_of_jsbytes("3341"), + cst_38361$0=caml_string_of_jsbytes("38361"), + cst_0$353=caml_string_of_jsbytes("0"), + cst_23436=caml_string_of_jsbytes("23436"), + cst_28729=caml_string_of_jsbytes("28729"), + cst_1$244=caml_string_of_jsbytes("1"), + cst_31101=caml_string_of_jsbytes("31101"), + cst_2$83=caml_string_of_jsbytes("2"), + cst_32179=caml_string_of_jsbytes("32179"), + cst_3$63=caml_string_of_jsbytes("3"), + cst_33287=caml_string_of_jsbytes("33287"), + cst_4$59=caml_string_of_jsbytes("4"), + cst_34380=caml_string_of_jsbytes("34380"), + cst_5$80=caml_string_of_jsbytes("5"), + cst_36815=caml_string_of_jsbytes("36815"), + cst_5$81=caml_string_of_jsbytes("5"), + cst_3201=caml_string_of_jsbytes("3201"), + cst_36815$0=caml_string_of_jsbytes("36815"), + cst_0$354=caml_string_of_jsbytes("0"), + cst_21984=caml_string_of_jsbytes("21984"), + cst_26666=caml_string_of_jsbytes("26666"), + cst_1$245=caml_string_of_jsbytes("1"), + cst_29072=caml_string_of_jsbytes("29072"), + cst_2$84=caml_string_of_jsbytes("2"), + cst_30274=caml_string_of_jsbytes("30274"), + cst_3$64=caml_string_of_jsbytes("3"), + cst_31491=caml_string_of_jsbytes("31491"), + cst_4$60=caml_string_of_jsbytes("4"), + cst_32694=caml_string_of_jsbytes("32694"), + cst_5$82=caml_string_of_jsbytes("5"), + cst_35130=caml_string_of_jsbytes("35130"), + cst_5$83=caml_string_of_jsbytes("5"), + cst_3045=caml_string_of_jsbytes("3045"), + cst_35130$0=caml_string_of_jsbytes("35130"), + cst_0$349=caml_string_of_jsbytes("0"), + cst_27195=caml_string_of_jsbytes("27195"), + cst_32773=caml_string_of_jsbytes("32773"), + cst_1$240=caml_string_of_jsbytes("1"), + cst_35237=caml_string_of_jsbytes("35237"), + cst_2$79=caml_string_of_jsbytes("2"), + cst_36222=caml_string_of_jsbytes("36222"), + cst_3$59=caml_string_of_jsbytes("3"), + cst_37240=caml_string_of_jsbytes("37240"), + cst_4$55=caml_string_of_jsbytes("4"), + cst_38240=caml_string_of_jsbytes("38240"), + cst_5$72=caml_string_of_jsbytes("5"), + cst_39051=caml_string_of_jsbytes("39051"), + cst_5$73=caml_string_of_jsbytes("5"), + cst_3401=caml_string_of_jsbytes("3401"), + cst_39051$0=caml_string_of_jsbytes("39051"), + cst_0$350=caml_string_of_jsbytes("0"), + cst_23858=caml_string_of_jsbytes("23858"), + cst_29246=caml_string_of_jsbytes("29246"), + cst_1$241=caml_string_of_jsbytes("1"), + cst_31661=caml_string_of_jsbytes("31661"), + cst_2$80=caml_string_of_jsbytes("2"), + cst_32758=caml_string_of_jsbytes("32758"), + cst_3$60=caml_string_of_jsbytes("3"), + cst_33886=caml_string_of_jsbytes("33886"), + cst_4$56=caml_string_of_jsbytes("4"), + cst_34999=caml_string_of_jsbytes("34999"), + cst_5$74=caml_string_of_jsbytes("5"), + cst_37478=caml_string_of_jsbytes("37478"), + cst_5$75=caml_string_of_jsbytes("5"), + cst_3259=caml_string_of_jsbytes("3259"), + cst_37478$0=caml_string_of_jsbytes("37478"), + cst_0$351=caml_string_of_jsbytes("0"), + cst_22380=caml_string_of_jsbytes("22380"), + cst_27146=caml_string_of_jsbytes("27146"), + cst_1$242=caml_string_of_jsbytes("1"), + cst_29595=caml_string_of_jsbytes("29595"), + cst_2$81=caml_string_of_jsbytes("2"), + cst_30819=caml_string_of_jsbytes("30819"), + cst_3$61=caml_string_of_jsbytes("3"), + cst_32058=caml_string_of_jsbytes("32058"), + cst_4$57=caml_string_of_jsbytes("4"), + cst_33282=caml_string_of_jsbytes("33282"), + cst_5$76=caml_string_of_jsbytes("5"), + cst_35762=caml_string_of_jsbytes("35762"), + cst_5$77=caml_string_of_jsbytes("5"), + cst_3100=caml_string_of_jsbytes("3100"), + cst_35762$0=caml_string_of_jsbytes("35762"), + cst_0$346=caml_string_of_jsbytes("0"), + cst_27956=caml_string_of_jsbytes("27956"), + cst_33691=caml_string_of_jsbytes("33691"), + cst_1$237=caml_string_of_jsbytes("1"), + cst_36224=caml_string_of_jsbytes("36224"), + cst_2$76=caml_string_of_jsbytes("2"), + cst_37236=caml_string_of_jsbytes("37236"), + cst_3$56=caml_string_of_jsbytes("3"), + cst_38283=caml_string_of_jsbytes("38283"), + cst_4$52=caml_string_of_jsbytes("4"), + cst_39311=caml_string_of_jsbytes("39311"), + cst_5$66=caml_string_of_jsbytes("5"), + cst_40144=caml_string_of_jsbytes("40144"), + cst_5$67=caml_string_of_jsbytes("5"), + cst_3496=caml_string_of_jsbytes("3496"), + cst_40144$0=caml_string_of_jsbytes("40144"), + cst_0$347=caml_string_of_jsbytes("0"), + cst_24526=caml_string_of_jsbytes("24526"), + cst_30065=caml_string_of_jsbytes("30065"), + cst_1$238=caml_string_of_jsbytes("1"), + cst_32548=caml_string_of_jsbytes("32548"), + cst_2$77=caml_string_of_jsbytes("2"), + cst_33675=caml_string_of_jsbytes("33675"), + cst_3$57=caml_string_of_jsbytes("3"), + cst_34865$0=caml_string_of_jsbytes("34865"), + cst_4$53=caml_string_of_jsbytes("4"), + cst_35979=caml_string_of_jsbytes("35979"), + cst_5$68=caml_string_of_jsbytes("5"), + cst_38527=caml_string_of_jsbytes("38527"), + cst_5$69=caml_string_of_jsbytes("5"), + cst_3350=caml_string_of_jsbytes("3350"), + cst_38527$0=caml_string_of_jsbytes("38527"), + cst_0$348=caml_string_of_jsbytes("0"), + cst_23007=caml_string_of_jsbytes("23007"), + cst_27906=caml_string_of_jsbytes("27906"), + cst_1$239=caml_string_of_jsbytes("1"), + cst_30424=caml_string_of_jsbytes("30424"), + cst_2$78=caml_string_of_jsbytes("2"), + cst_31682=caml_string_of_jsbytes("31682"), + cst_3$58=caml_string_of_jsbytes("3"), + cst_32956$0=caml_string_of_jsbytes("32956"), + cst_4$54=caml_string_of_jsbytes("4"), + cst_34214=caml_string_of_jsbytes("34214"), + cst_5$70=caml_string_of_jsbytes("5"), + cst_36733=caml_string_of_jsbytes("36733"), + cst_5$71=caml_string_of_jsbytes("5"), + cst_3187=caml_string_of_jsbytes("3187"), + cst_36733$0=caml_string_of_jsbytes("36733"), + cst_0$343=caml_string_of_jsbytes("0"), + cst_28728=caml_string_of_jsbytes("28728"), + cst_34621=caml_string_of_jsbytes("34621"), + cst_1$234=caml_string_of_jsbytes("1"), + cst_37224=caml_string_of_jsbytes("37224"), + cst_2$73=caml_string_of_jsbytes("2"), + cst_38264=caml_string_of_jsbytes("38264"), + cst_3$53=caml_string_of_jsbytes("3"), + cst_39340$0=caml_string_of_jsbytes("39340"), + cst_4$49=caml_string_of_jsbytes("4"), + cst_40396=caml_string_of_jsbytes("40396"), + cst_5$60=caml_string_of_jsbytes("5"), + cst_41252=caml_string_of_jsbytes("41252"), + cst_5$61=caml_string_of_jsbytes("5"), + cst_3592=caml_string_of_jsbytes("3592"), + cst_41252$0=caml_string_of_jsbytes("41252"), + cst_0$344=caml_string_of_jsbytes("0"), + cst_25203=caml_string_of_jsbytes("25203"), + cst_30895=caml_string_of_jsbytes("30895"), + cst_1$235=caml_string_of_jsbytes("1"), + cst_33446=caml_string_of_jsbytes("33446"), + cst_2$74=caml_string_of_jsbytes("2"), + cst_34604=caml_string_of_jsbytes("34604"), + cst_3$54=caml_string_of_jsbytes("3"), + cst_35796=caml_string_of_jsbytes("35796"), + cst_4$50=caml_string_of_jsbytes("4"), + cst_36972=caml_string_of_jsbytes("36972"), + cst_5$62=caml_string_of_jsbytes("5"), + cst_39590=caml_string_of_jsbytes("39590"), + cst_5$63=caml_string_of_jsbytes("5"), + cst_3442=caml_string_of_jsbytes("3442"), + cst_39590$0=caml_string_of_jsbytes("39590"), + cst_0$345=caml_string_of_jsbytes("0"), + cst_23642=caml_string_of_jsbytes("23642"), + cst_28676=caml_string_of_jsbytes("28676"), + cst_1$236=caml_string_of_jsbytes("1"), + cst_31264$0=caml_string_of_jsbytes("31264"), + cst_2$75=caml_string_of_jsbytes("2"), + cst_32556=caml_string_of_jsbytes("32556"), + cst_3$55=caml_string_of_jsbytes("3"), + cst_33866=caml_string_of_jsbytes("33866"), + cst_4$51=caml_string_of_jsbytes("4"), + cst_35158=caml_string_of_jsbytes("35158"), + cst_5$64=caml_string_of_jsbytes("5"), + cst_37778=caml_string_of_jsbytes("37778"), + cst_5$65=caml_string_of_jsbytes("5"), + cst_3275=caml_string_of_jsbytes("3275"), + cst_37778$0=caml_string_of_jsbytes("37778"), + cst_0$340=caml_string_of_jsbytes("0"), + cst_29575=caml_string_of_jsbytes("29575"), + cst_35642=caml_string_of_jsbytes("35642"), + cst_1$231=caml_string_of_jsbytes("1"), + cst_38322=caml_string_of_jsbytes("38322"), + cst_2$70=caml_string_of_jsbytes("2"), + cst_39393=caml_string_of_jsbytes("39393"), + cst_3$50=caml_string_of_jsbytes("3"), + cst_40501=caml_string_of_jsbytes("40501"), + cst_4$46=caml_string_of_jsbytes("4"), + cst_41588=caml_string_of_jsbytes("41588"), + cst_5$54=caml_string_of_jsbytes("5"), + cst_42469=caml_string_of_jsbytes("42469"), + cst_5$55=caml_string_of_jsbytes("5"), + cst_3698=caml_string_of_jsbytes("3698"), + cst_42469$0=caml_string_of_jsbytes("42469"), + cst_0$341=caml_string_of_jsbytes("0"), + cst_25946=caml_string_of_jsbytes("25946"), + cst_31806=caml_string_of_jsbytes("31806"), + cst_1$232=caml_string_of_jsbytes("1"), + cst_34433=caml_string_of_jsbytes("34433"), + cst_2$71=caml_string_of_jsbytes("2"), + cst_35625=caml_string_of_jsbytes("35625"), + cst_3$51=caml_string_of_jsbytes("3"), + cst_36852=caml_string_of_jsbytes("36852"), + cst_4$47=caml_string_of_jsbytes("4"), + cst_38063=caml_string_of_jsbytes("38063"), + cst_5$56=caml_string_of_jsbytes("5"), + cst_40758=caml_string_of_jsbytes("40758"), + cst_5$57=caml_string_of_jsbytes("5"), + cst_3544=caml_string_of_jsbytes("3544"), + cst_40758$0=caml_string_of_jsbytes("40758"), + cst_0$342=caml_string_of_jsbytes("0"), + cst_24339=caml_string_of_jsbytes("24339"), + cst_29522=caml_string_of_jsbytes("29522"), + cst_1$233=caml_string_of_jsbytes("1"), + cst_32186=caml_string_of_jsbytes("32186"), + cst_2$72=caml_string_of_jsbytes("2"), + cst_33516=caml_string_of_jsbytes("33516"), + cst_3$52=caml_string_of_jsbytes("3"), + cst_34865=caml_string_of_jsbytes("34865"), + cst_4$48=caml_string_of_jsbytes("4"), + cst_36195=caml_string_of_jsbytes("36195"), + cst_5$58=caml_string_of_jsbytes("5"), + cst_38892=caml_string_of_jsbytes("38892"), + cst_5$59=caml_string_of_jsbytes("5"), + cst_3372=caml_string_of_jsbytes("3372"), + cst_38892$0=caml_string_of_jsbytes("38892"), + cst_0$337=caml_string_of_jsbytes("0"), + cst_29670=caml_string_of_jsbytes("29670"), + cst_35757=caml_string_of_jsbytes("35757"), + cst_1$228=caml_string_of_jsbytes("1"), + cst_38445=caml_string_of_jsbytes("38445"), + cst_2$67=caml_string_of_jsbytes("2"), + cst_39519=caml_string_of_jsbytes("39519"), + cst_3$47=caml_string_of_jsbytes("3"), + cst_40601=caml_string_of_jsbytes("40601"), + cst_4$43=caml_string_of_jsbytes("4"), + cst_41721=caml_string_of_jsbytes("41721"), + cst_5$48=caml_string_of_jsbytes("5"), + cst_42605=caml_string_of_jsbytes("42605"), + cst_5$49=caml_string_of_jsbytes("5"), + cst_3710=caml_string_of_jsbytes("3710"), + cst_42605$0=caml_string_of_jsbytes("42605"), + cst_0$338=caml_string_of_jsbytes("0"), + cst_26029=caml_string_of_jsbytes("26029"), + cst_31908=caml_string_of_jsbytes("31908"), + cst_1$229=caml_string_of_jsbytes("1"), + cst_34643=caml_string_of_jsbytes("34643"), + cst_2$68=caml_string_of_jsbytes("2"), + cst_35739=caml_string_of_jsbytes("35739"), + cst_3$48=caml_string_of_jsbytes("3"), + cst_36970=caml_string_of_jsbytes("36970"), + cst_4$44=caml_string_of_jsbytes("4"), + cst_38185=caml_string_of_jsbytes("38185"), + cst_5$50=caml_string_of_jsbytes("5"), + cst_40888=caml_string_of_jsbytes("40888"), + cst_5$51=caml_string_of_jsbytes("5"), + cst_3555=caml_string_of_jsbytes("3555"), + cst_40888$0=caml_string_of_jsbytes("40888"), + cst_0$339=caml_string_of_jsbytes("0"), + cst_24417=caml_string_of_jsbytes("24417"), + cst_29616=caml_string_of_jsbytes("29616"), + cst_1$230=caml_string_of_jsbytes("1"), + cst_32289=caml_string_of_jsbytes("32289"), + cst_2$69=caml_string_of_jsbytes("2"), + cst_33623$0=caml_string_of_jsbytes("33623"), + cst_3$49=caml_string_of_jsbytes("3"), + cst_34977=caml_string_of_jsbytes("34977"), + cst_4$45=caml_string_of_jsbytes("4"), + cst_36311=caml_string_of_jsbytes("36311"), + cst_5$52=caml_string_of_jsbytes("5"), + cst_39016=caml_string_of_jsbytes("39016"), + cst_5$53=caml_string_of_jsbytes("5"), + cst_3383=caml_string_of_jsbytes("3383"), + cst_39016$0=caml_string_of_jsbytes("39016"), + cst_0$334=caml_string_of_jsbytes("0"), + cst_29996=caml_string_of_jsbytes("29996"), + cst_36149=caml_string_of_jsbytes("36149"), + cst_1$225=caml_string_of_jsbytes("1"), + cst_38868=caml_string_of_jsbytes("38868"), + cst_2$64=caml_string_of_jsbytes("2"), + cst_39954=caml_string_of_jsbytes("39954"), + cst_3$44=caml_string_of_jsbytes("3"), + cst_41078=caml_string_of_jsbytes("41078"), + cst_4$40=caml_string_of_jsbytes("4"), + cst_42180=caml_string_of_jsbytes("42180"), + cst_5$42=caml_string_of_jsbytes("5"), + cst_43074=caml_string_of_jsbytes("43074"), + cst_5$43=caml_string_of_jsbytes("5"), + cst_3751=caml_string_of_jsbytes("3751"), + cst_43074$0=caml_string_of_jsbytes("43074"), + cst_0$335=caml_string_of_jsbytes("0"), + cst_26315=caml_string_of_jsbytes("26315"), + cst_32259=caml_string_of_jsbytes("32259"), + cst_1$226=caml_string_of_jsbytes("1"), + cst_34923=caml_string_of_jsbytes("34923"), + cst_2$65=caml_string_of_jsbytes("2"), + cst_36132=caml_string_of_jsbytes("36132"), + cst_3$45=caml_string_of_jsbytes("3"), + cst_37373=caml_string_of_jsbytes("37373"), + cst_4$41=caml_string_of_jsbytes("4"), + cst_38605=caml_string_of_jsbytes("38605"), + cst_5$44=caml_string_of_jsbytes("5"), + cst_41338=caml_string_of_jsbytes("41338"), + cst_5$45=caml_string_of_jsbytes("5"), + cst_3594=caml_string_of_jsbytes("3594"), + cst_41338$0=caml_string_of_jsbytes("41338"), + cst_0$336=caml_string_of_jsbytes("0"), + cst_24686=caml_string_of_jsbytes("24686"), + cst_29942=caml_string_of_jsbytes("29942"), + cst_1$227=caml_string_of_jsbytes("1"), + cst_32644=caml_string_of_jsbytes("32644"), + cst_2$66=caml_string_of_jsbytes("2"), + cst_33993=caml_string_of_jsbytes("33993"), + cst_3$46=caml_string_of_jsbytes("3"), + cst_35362=caml_string_of_jsbytes("35362"), + cst_4$42=caml_string_of_jsbytes("4"), + cst_36710=caml_string_of_jsbytes("36710"), + cst_5$46=caml_string_of_jsbytes("5"), + cst_39445=caml_string_of_jsbytes("39445"), + cst_5$47=caml_string_of_jsbytes("5"), + cst_3420=caml_string_of_jsbytes("3420"), + cst_39445$0=caml_string_of_jsbytes("39445"), + cst_0$331=caml_string_of_jsbytes("0"), + cst_30296=caml_string_of_jsbytes("30296"), + cst_36510=caml_string_of_jsbytes("36510"), + cst_1$222=caml_string_of_jsbytes("1"), + cst_39257=caml_string_of_jsbytes("39257"), + cst_2$61=caml_string_of_jsbytes("2"), + cst_40354=caml_string_of_jsbytes("40354"), + cst_3$41=caml_string_of_jsbytes("3"), + cst_41489=caml_string_of_jsbytes("41489"), + cst_4$37=caml_string_of_jsbytes("4"), + cst_42602=caml_string_of_jsbytes("42602"), + cst_5$36=caml_string_of_jsbytes("5"), + cst_43505=caml_string_of_jsbytes("43505"), + cst_5$37=caml_string_of_jsbytes("5"), + cst_3789=caml_string_of_jsbytes("3789"), + cst_43505$0=caml_string_of_jsbytes("43505"), + cst_0$332=caml_string_of_jsbytes("0"), + cst_26578=caml_string_of_jsbytes("26578"), + cst_32582=caml_string_of_jsbytes("32582"), + cst_1$223=caml_string_of_jsbytes("1"), + cst_35272=caml_string_of_jsbytes("35272"), + cst_2$62=caml_string_of_jsbytes("2"), + cst_36493=caml_string_of_jsbytes("36493"), + cst_3$42=caml_string_of_jsbytes("3"), + cst_37751=caml_string_of_jsbytes("37751"), + cst_4$38=caml_string_of_jsbytes("4"), + cst_38991=caml_string_of_jsbytes("38991"), + cst_5$38=caml_string_of_jsbytes("5"), + cst_41751=caml_string_of_jsbytes("41751"), + cst_5$39=caml_string_of_jsbytes("5"), + cst_3630=caml_string_of_jsbytes("3630"), + cst_41751$0=caml_string_of_jsbytes("41751"), + cst_0$333=caml_string_of_jsbytes("0"), + cst_24933=caml_string_of_jsbytes("24933"), + cst_30241=caml_string_of_jsbytes("30241"), + cst_1$224=caml_string_of_jsbytes("1"), + cst_32970=caml_string_of_jsbytes("32970"), + cst_2$63=caml_string_of_jsbytes("2"), + cst_34333=caml_string_of_jsbytes("34333"), + cst_3$43=caml_string_of_jsbytes("3"), + cst_35716=caml_string_of_jsbytes("35716"), + cst_4$39=caml_string_of_jsbytes("4"), + cst_37077=caml_string_of_jsbytes("37077"), + cst_5$40=caml_string_of_jsbytes("5"), + cst_39839=caml_string_of_jsbytes("39839"), + cst_5$41=caml_string_of_jsbytes("5"), + cst_3454=caml_string_of_jsbytes("3454"), + cst_39839$0=caml_string_of_jsbytes("39839"), + cst_0$328=caml_string_of_jsbytes("0"), + cst_30947=caml_string_of_jsbytes("30947"), + cst_37295=caml_string_of_jsbytes("37295"), + cst_1$219=caml_string_of_jsbytes("1"), + cst_40101=caml_string_of_jsbytes("40101"), + cst_2$58=caml_string_of_jsbytes("2"), + cst_41222=caml_string_of_jsbytes("41222"), + cst_3$38=caml_string_of_jsbytes("3"), + cst_42381=caml_string_of_jsbytes("42381"), + cst_4$34=caml_string_of_jsbytes("4"), + cst_43518=caml_string_of_jsbytes("43518"), + cst_5$30=caml_string_of_jsbytes("5"), + cst_44440=caml_string_of_jsbytes("44440"), + cst_5$31=caml_string_of_jsbytes("5"), + cst_3870=caml_string_of_jsbytes("3870"), + cst_44440$0=caml_string_of_jsbytes("44440"), + cst_0$329=caml_string_of_jsbytes("0"), + cst_27149=caml_string_of_jsbytes("27149"), + cst_33283=caml_string_of_jsbytes("33283"), + cst_1$220=caml_string_of_jsbytes("1"), + cst_36030=caml_string_of_jsbytes("36030"), + cst_2$59=caml_string_of_jsbytes("2"), + cst_37278=caml_string_of_jsbytes("37278"), + cst_3$39=caml_string_of_jsbytes("3"), + cst_38563=caml_string_of_jsbytes("38563"), + cst_4$35=caml_string_of_jsbytes("4"), + cst_39829=caml_string_of_jsbytes("39829"), + cst_5$32=caml_string_of_jsbytes("5"), + cst_42649=caml_string_of_jsbytes("42649"), + cst_5$33=caml_string_of_jsbytes("5"), + cst_3708=caml_string_of_jsbytes("3708"), + cst_42659=caml_string_of_jsbytes("42659"), + cst_0$330=caml_string_of_jsbytes("0"), + cst_25469=caml_string_of_jsbytes("25469"), + cst_30891=caml_string_of_jsbytes("30891"), + cst_1$221=caml_string_of_jsbytes("1"), + cst_33679=caml_string_of_jsbytes("33679"), + cst_2$60=caml_string_of_jsbytes("2"), + cst_35071=caml_string_of_jsbytes("35071"), + cst_3$40=caml_string_of_jsbytes("3"), + cst_36484=caml_string_of_jsbytes("36484"), + cst_4$36=caml_string_of_jsbytes("4"), + cst_37874=caml_string_of_jsbytes("37874"), + cst_5$34=caml_string_of_jsbytes("5"), + cst_40696=caml_string_of_jsbytes("40696"), + cst_5$35=caml_string_of_jsbytes("5"), + cst_3528=caml_string_of_jsbytes("3528"), + cst_40696$0=caml_string_of_jsbytes("40696"), + cst_0$325=caml_string_of_jsbytes("0"), + cst_31123=caml_string_of_jsbytes("31123"), + cst_37508=caml_string_of_jsbytes("37508"), + cst_1$216=caml_string_of_jsbytes("1"), + cst_40330=caml_string_of_jsbytes("40330"), + cst_2$55=caml_string_of_jsbytes("2"), + cst_41457=caml_string_of_jsbytes("41457"), + cst_3$35=caml_string_of_jsbytes("3"), + cst_42623=caml_string_of_jsbytes("42623"), + cst_4$31=caml_string_of_jsbytes("4"), + cst_43766=caml_string_of_jsbytes("43766"), + cst_5$24=caml_string_of_jsbytes("5"), + cst_44693=caml_string_of_jsbytes("44693"), + cst_5$25=caml_string_of_jsbytes("5"), + cst_3892=caml_string_of_jsbytes("3892"), + cst_44693$0=caml_string_of_jsbytes("44693"), + cst_0$326=caml_string_of_jsbytes("0"), + cst_27304=caml_string_of_jsbytes("27304"), + cst_33473=caml_string_of_jsbytes("33473"), + cst_1$217=caml_string_of_jsbytes("1"), + cst_36235=caml_string_of_jsbytes("36235"), + cst_2$56=caml_string_of_jsbytes("2"), + cst_37490=caml_string_of_jsbytes("37490"), + cst_3$36=caml_string_of_jsbytes("3"), + cst_38783=caml_string_of_jsbytes("38783"), + cst_4$32=caml_string_of_jsbytes("4"), + cst_40056=caml_string_of_jsbytes("40056"), + cst_5$26=caml_string_of_jsbytes("5"), + cst_42892=caml_string_of_jsbytes("42892"), + cst_5$27=caml_string_of_jsbytes("5"), + cst_3729=caml_string_of_jsbytes("3729"), + cst_42892$0=caml_string_of_jsbytes("42892"), + cst_0$327=caml_string_of_jsbytes("0"), + cst_25614=caml_string_of_jsbytes("25614"), + cst_31067=caml_string_of_jsbytes("31067"), + cst_1$218=caml_string_of_jsbytes("1"), + cst_33871=caml_string_of_jsbytes("33871"), + cst_2$57=caml_string_of_jsbytes("2"), + cst_35271=caml_string_of_jsbytes("35271"), + cst_3$37=caml_string_of_jsbytes("3"), + cst_36692=caml_string_of_jsbytes("36692"), + cst_4$33=caml_string_of_jsbytes("4"), + cst_38090=caml_string_of_jsbytes("38090"), + cst_5$28=caml_string_of_jsbytes("5"), + cst_40928=caml_string_of_jsbytes("40928"), + cst_5$29=caml_string_of_jsbytes("5"), + cst_3548=caml_string_of_jsbytes("3548"), + cst_40928$0=caml_string_of_jsbytes("40928"), + cst_0$322=caml_string_of_jsbytes("0"), + cst_31148=caml_string_of_jsbytes("31148"), + cst_37538=caml_string_of_jsbytes("37538"), + cst_1$213=caml_string_of_jsbytes("1"), + cst_40362=caml_string_of_jsbytes("40362"), + cst_2$52=caml_string_of_jsbytes("2"), + cst_41490=caml_string_of_jsbytes("41490"), + cst_3$32=caml_string_of_jsbytes("3"), + cst_42657=caml_string_of_jsbytes("42657"), + cst_4$28=caml_string_of_jsbytes("4"), + cst_43801=caml_string_of_jsbytes("43801"), + cst_5$18=caml_string_of_jsbytes("5"), + cst_44729=caml_string_of_jsbytes("44729"), + cst_5$19=caml_string_of_jsbytes("5"), + cst_3895=caml_string_of_jsbytes("3895"), + cst_44729$0=caml_string_of_jsbytes("44729"), + cst_0$323=caml_string_of_jsbytes("0"), + cst_27326=caml_string_of_jsbytes("27326"), + cst_33500$0=caml_string_of_jsbytes("33500"), + cst_1$214=caml_string_of_jsbytes("1"), + cst_36264=caml_string_of_jsbytes("36264"), + cst_2$53=caml_string_of_jsbytes("2"), + cst_37520=caml_string_of_jsbytes("37520"), + cst_3$33=caml_string_of_jsbytes("3"), + cst_38814=caml_string_of_jsbytes("38814"), + cst_4$29=caml_string_of_jsbytes("4"), + cst_40088=caml_string_of_jsbytes("40088"), + cst_5$20=caml_string_of_jsbytes("5"), + cst_42926=caml_string_of_jsbytes("42926"), + cst_5$21=caml_string_of_jsbytes("5"), + cst_3732=caml_string_of_jsbytes("3732"), + cst_42926$0=caml_string_of_jsbytes("42926"), + cst_0$324=caml_string_of_jsbytes("0"), + cst_25634=caml_string_of_jsbytes("25634"), + cst_31092=caml_string_of_jsbytes("31092"), + cst_1$215=caml_string_of_jsbytes("1"), + cst_33898=caml_string_of_jsbytes("33898"), + cst_2$54=caml_string_of_jsbytes("2"), + cst_35299=caml_string_of_jsbytes("35299"), + cst_3$34=caml_string_of_jsbytes("3"), + cst_36721=caml_string_of_jsbytes("36721"), + cst_4$30=caml_string_of_jsbytes("4"), + cst_38120=caml_string_of_jsbytes("38120"), + cst_5$22=caml_string_of_jsbytes("5"), + cst_40961=caml_string_of_jsbytes("40961"), + cst_5$23=caml_string_of_jsbytes("5"), + cst_3551=caml_string_of_jsbytes("3551"), + cst_40961$0=caml_string_of_jsbytes("40961"), + cst_0$319=caml_string_of_jsbytes("0"), + cst_31382=caml_string_of_jsbytes("31382"), + cst_37820=caml_string_of_jsbytes("37820"), + cst_1$210=caml_string_of_jsbytes("1"), + cst_40665=caml_string_of_jsbytes("40665"), + cst_2$49=caml_string_of_jsbytes("2"), + cst_41801=caml_string_of_jsbytes("41801"), + cst_3$29=caml_string_of_jsbytes("3"), + cst_42977=caml_string_of_jsbytes("42977"), + cst_4$25=caml_string_of_jsbytes("4"), + cst_44130=caml_string_of_jsbytes("44130"), + cst_5$12=caml_string_of_jsbytes("5"), + cst_45064=caml_string_of_jsbytes("45064"), + cst_5$13=caml_string_of_jsbytes("5"), + cst_3924=caml_string_of_jsbytes("3924"), + cst_45064$0=caml_string_of_jsbytes("45064"), + cst_0$320=caml_string_of_jsbytes("0"), + cst_27531=caml_string_of_jsbytes("27531"), + cst_33751=caml_string_of_jsbytes("33751"), + cst_1$211=caml_string_of_jsbytes("1"), + cst_36536=caml_string_of_jsbytes("36536"), + cst_2$50=caml_string_of_jsbytes("2"), + cst_37801=caml_string_of_jsbytes("37801"), + cst_3$30=caml_string_of_jsbytes("3"), + cst_39105=caml_string_of_jsbytes("39105"), + cst_4$26=caml_string_of_jsbytes("4"), + cst_40389=caml_string_of_jsbytes("40389"), + cst_5$14=caml_string_of_jsbytes("5"), + cst_43248=caml_string_of_jsbytes("43248"), + cst_5$15=caml_string_of_jsbytes("5"), + cst_3760=caml_string_of_jsbytes("3760"), + cst_43248$0=caml_string_of_jsbytes("43248"), + cst_0$321=caml_string_of_jsbytes("0"), + cst_25826=caml_string_of_jsbytes("25826"), + cst_31325=caml_string_of_jsbytes("31325"), + cst_1$212=caml_string_of_jsbytes("1"), + cst_34152=caml_string_of_jsbytes("34152"), + cst_2$51=caml_string_of_jsbytes("2"), + cst_35564=caml_string_of_jsbytes("35564"), + cst_3$31=caml_string_of_jsbytes("3"), + cst_36996=caml_string_of_jsbytes("36996"), + cst_4$27=caml_string_of_jsbytes("4"), + cst_38406=caml_string_of_jsbytes("38406"), + cst_5$16=caml_string_of_jsbytes("5"), + cst_41268=caml_string_of_jsbytes("41268"), + cst_5$17=caml_string_of_jsbytes("5"), + cst_3578=caml_string_of_jsbytes("3578"), + cst_41268$0=caml_string_of_jsbytes("41268"), + cst_0$316=caml_string_of_jsbytes("0"), + cst_31476=caml_string_of_jsbytes("31476"), + cst_37933=caml_string_of_jsbytes("37933"), + cst_1$207=caml_string_of_jsbytes("1"), + cst_40787=caml_string_of_jsbytes("40787"), + cst_2$46=caml_string_of_jsbytes("2"), + cst_41927=caml_string_of_jsbytes("41927"), + cst_3$26=caml_string_of_jsbytes("3"), + cst_43106=caml_string_of_jsbytes("43106"), + cst_4$22=caml_string_of_jsbytes("4"), + cst_44262=caml_string_of_jsbytes("44262"), + cst_5$6=caml_string_of_jsbytes("5"), + cst_45200=caml_string_of_jsbytes("45200"), + cst_5$7=caml_string_of_jsbytes("5"), + cst_3936=caml_string_of_jsbytes("3936"), + cst_45200$0=caml_string_of_jsbytes("45200"), + cst_0$317=caml_string_of_jsbytes("0"), + cst_27614=caml_string_of_jsbytes("27614"), + cst_33853=caml_string_of_jsbytes("33853"), + cst_1$208=caml_string_of_jsbytes("1"), + cst_36646=caml_string_of_jsbytes("36646"), + cst_2$47=caml_string_of_jsbytes("2"), + cst_37915=caml_string_of_jsbytes("37915"), + cst_3$27=caml_string_of_jsbytes("3"), + cst_39222=caml_string_of_jsbytes("39222"), + cst_4$23=caml_string_of_jsbytes("4"), + cst_40510=caml_string_of_jsbytes("40510"), + cst_5$8=caml_string_of_jsbytes("5"), + cst_43378=caml_string_of_jsbytes("43378"), + cst_5$9=caml_string_of_jsbytes("5"), + cst_3771=caml_string_of_jsbytes("3771"), + cst_43378$0=caml_string_of_jsbytes("43378"), + cst_0$318=caml_string_of_jsbytes("0"), + cst_25904=caml_string_of_jsbytes("25904"), + cst_31419=caml_string_of_jsbytes("31419"), + cst_1$209=caml_string_of_jsbytes("1"), + cst_34255=caml_string_of_jsbytes("34255"), + cst_2$48=caml_string_of_jsbytes("2"), + cst_35670=caml_string_of_jsbytes("35670"), + cst_3$28=caml_string_of_jsbytes("3"), + cst_37107=caml_string_of_jsbytes("37107"), + cst_4$24=caml_string_of_jsbytes("4"), + cst_38521=caml_string_of_jsbytes("38521"), + cst_5$10=caml_string_of_jsbytes("5"), + cst_41392=caml_string_of_jsbytes("41392"), + cst_5$11=caml_string_of_jsbytes("5"), + cst_3588=caml_string_of_jsbytes("3588"), + cst_41392$0=caml_string_of_jsbytes("41392"), + cst_0$314=caml_string_of_jsbytes("0"), + cst_0$315=caml_string_of_jsbytes("0"), + cst_1229$5=caml_string_of_jsbytes("1229"), + cst_2710$1=caml_string_of_jsbytes("2710"), + cst_5422$7=caml_string_of_jsbytes("5422"), + cst_0$313=caml_string_of_jsbytes("0"), + cst_5422$5=caml_string_of_jsbytes("5422"), + cst_1229$4=caml_string_of_jsbytes("1229"), + cst_5422$6=caml_string_of_jsbytes("5422"), + cst_1272$5=caml_string_of_jsbytes("1272"), + cst_2805$1=caml_string_of_jsbytes("2805"), + cst_5612$7=caml_string_of_jsbytes("5612"), + cst_0$312=caml_string_of_jsbytes("0"), + cst_5612$5=caml_string_of_jsbytes("5612"), + cst_1272$4=caml_string_of_jsbytes("1272"), + cst_5612$6=caml_string_of_jsbytes("5612"), + cst_16_25$0=caml_string_of_jsbytes("16.25"), + cst_0_0234$1=caml_string_of_jsbytes("0.0234"), + cst_390000=caml_string_of_jsbytes("390000"), + cst_1500$1=caml_string_of_jsbytes("1500"), + cst_1000$4=caml_string_of_jsbytes("1000"), + cst_6_55957$0=caml_string_of_jsbytes("6.55957"), + cst_1$206=caml_string_of_jsbytes("1."), + cst_500$3=caml_string_of_jsbytes("500"), + cst_0$311=caml_string_of_jsbytes("0"), + cst_50$2=caml_string_of_jsbytes("50"), + cst_0$309=caml_string_of_jsbytes("0"), + cst_0$310=caml_string_of_jsbytes("0"), + cst_0$307=caml_string_of_jsbytes("0"), + cst_0$308=caml_string_of_jsbytes("0"), + cst_0$306=caml_string_of_jsbytes("0"), + cst_0$304=caml_string_of_jsbytes("0"), + cst_0$305=caml_string_of_jsbytes("0"), + cst_8708=caml_string_of_jsbytes("8708"), + cst_13559=caml_string_of_jsbytes("13559"), + cst_21362=caml_string_of_jsbytes("21362"), + cst_33196=caml_string_of_jsbytes("33196"), + cst_17607$0=caml_string_of_jsbytes("17607"), + cst_27365$0=caml_string_of_jsbytes("27365"), + cst_17607=caml_string_of_jsbytes("17607"), + cst_27365=caml_string_of_jsbytes("27365"), + cst_8414=caml_string_of_jsbytes("8414"), + cst_13100=caml_string_of_jsbytes("13100"), + cst_20640=caml_string_of_jsbytes("20640"), + cst_32073=caml_string_of_jsbytes("32073"), + cst_17012$0=caml_string_of_jsbytes("17012"), + cst_26440$0=caml_string_of_jsbytes("26440"), + cst_17012=caml_string_of_jsbytes("17012"), + cst_26440=caml_string_of_jsbytes("26440"), + cst_0$303=caml_string_of_jsbytes("0"), + cst_5612$3=caml_string_of_jsbytes("5612"), + cst_1272$3=caml_string_of_jsbytes("1272"), + cst_5612$4=caml_string_of_jsbytes("5612"), + cst_0$302=caml_string_of_jsbytes("0"), + cst_5422$3=caml_string_of_jsbytes("5422"), + cst_1229$3=caml_string_of_jsbytes("1229"), + cst_5422$4=caml_string_of_jsbytes("5422"), + cst_1500$0=caml_string_of_jsbytes("1500"), + cst_500$2=caml_string_of_jsbytes("500"), + cst_1000$3=caml_string_of_jsbytes("1000"), + cst_0$301=caml_string_of_jsbytes("0"), + cst_169$2=caml_string_of_jsbytes("169."), + cst_0_55$2=caml_string_of_jsbytes("0.55"), + cst_169$1=caml_string_of_jsbytes("169."), + cst_0_55$1=caml_string_of_jsbytes("0.55"), + cst_12$15=caml_string_of_jsbytes("12."), + cst_0$300=caml_string_of_jsbytes("0"), + cst_0$299=caml_string_of_jsbytes("0"), + cst_0$293=caml_string_of_jsbytes("0"), + cst_0$294=caml_string_of_jsbytes("0"), + cst_2$45=caml_string_of_jsbytes("2"), + cst_90100=caml_string_of_jsbytes("90100"), + cst_135000=caml_string_of_jsbytes("135000"), + cst_0$295=caml_string_of_jsbytes("0"), + cst_0$296=caml_string_of_jsbytes("0"), + cst_0$297=caml_string_of_jsbytes("0"), + cst_0$298=caml_string_of_jsbytes("0"), + cst_0$292=caml_string_of_jsbytes("0"), + cst_9500=caml_string_of_jsbytes("9500"), + cst_258900=caml_string_of_jsbytes("258900"), + cst_0$290=caml_string_of_jsbytes("0."), + cst_0$291=caml_string_of_jsbytes("0."), + cst_1_25$0=caml_string_of_jsbytes("1.25"), + cst_1_25=caml_string_of_jsbytes("1.25"), + cst_0$289=caml_string_of_jsbytes("0"), + cst_0$288=caml_string_of_jsbytes("0"), + cst_0$287=caml_string_of_jsbytes("0"), + cst_0$286=caml_string_of_jsbytes("0."), + cst_0$285=caml_string_of_jsbytes("0."), + cst_999840=caml_string_of_jsbytes("999840"), + cst_1041840=caml_string_of_jsbytes("1041840"), + cst_1083840=caml_string_of_jsbytes("1083840"), + cst_1153302=caml_string_of_jsbytes("1153302"), + cst_1100144=caml_string_of_jsbytes("1100144"), + cst_1088175=caml_string_of_jsbytes("1088175"), + cst_1$204=caml_string_of_jsbytes("1"), + cst_2$41=caml_string_of_jsbytes("2"), + cst_2$42=caml_string_of_jsbytes("2"), + cst_2$43=caml_string_of_jsbytes("2"), + cst_1$205=caml_string_of_jsbytes("1"), + cst_2$44=caml_string_of_jsbytes("2"), + cst_9=caml_string_of_jsbytes("9"), + cst_9$0=caml_string_of_jsbytes("9"), + cst_16=caml_string_of_jsbytes("16"), + cst_16$0=caml_string_of_jsbytes("16"), + cst_16$1=caml_string_of_jsbytes("16"), + cst_9$1=caml_string_of_jsbytes("9"), + cst_16$2=caml_string_of_jsbytes("16"), + cst_8=caml_string_of_jsbytes("8"), + cst_70=caml_string_of_jsbytes("70"), + cst_70$0=caml_string_of_jsbytes("70"), + cst_3000000=caml_string_of_jsbytes("3000000"), + cst_0_1$0=caml_string_of_jsbytes("0.1"), + cst_0_1=caml_string_of_jsbytes("0.1"), + cst_0_2=caml_string_of_jsbytes("0.2"), + cst_0_2$0=caml_string_of_jsbytes("0.2"), + cst_0$284=caml_string_of_jsbytes("0"), + cst_0$282=caml_string_of_jsbytes("0"), + cst_0$283=caml_string_of_jsbytes("0"), + cst_50$1=caml_string_of_jsbytes("50"), + cst_0$280=caml_string_of_jsbytes("0"), + cst_0$281=caml_string_of_jsbytes("0"), + cst_0_95$3=caml_string_of_jsbytes("0.95"), + cst_0_95$4=caml_string_of_jsbytes("0.95"), + cst_0$278=caml_string_of_jsbytes("0"), + cst_0$279=caml_string_of_jsbytes("0"), + cst_100$9=caml_string_of_jsbytes("100."), + cst_100$10=caml_string_of_jsbytes("100."), + cst_0_005$2=caml_string_of_jsbytes("0.005"), + cst_12$14=caml_string_of_jsbytes("12."), + cst_0$277=caml_string_of_jsbytes("0."), + cst_0_75$10=caml_string_of_jsbytes("0.75"), + cst_0_75$9=caml_string_of_jsbytes("0.75"), + cst_0_75$8=caml_string_of_jsbytes("0.75"), + cst_0$276=caml_string_of_jsbytes("0"), + cst_0_95$2=caml_string_of_jsbytes("0.95"), + cst_0$275=caml_string_of_jsbytes("0"), + cst_86900=caml_string_of_jsbytes("86900"), + cst_97100=caml_string_of_jsbytes("97100"), + cst_1$203=caml_string_of_jsbytes("1"), + cst_10200=caml_string_of_jsbytes("10200"), + cst_107300=caml_string_of_jsbytes("107300"), + cst_0$272=caml_string_of_jsbytes("0"), + cst_208500$0=caml_string_of_jsbytes("208500"), + cst_251500$0=caml_string_of_jsbytes("251500"), + cst_1$200=caml_string_of_jsbytes("1"), + cst_43000$0=caml_string_of_jsbytes("43000"), + cst_294500$0=caml_string_of_jsbytes("294500"), + cst_0$273=caml_string_of_jsbytes("0"), + cst_186000$0=caml_string_of_jsbytes("186000"), + cst_223900$0=caml_string_of_jsbytes("223900"), + cst_1$201=caml_string_of_jsbytes("1"), + cst_37900$0=caml_string_of_jsbytes("37900"), + cst_261800$0=caml_string_of_jsbytes("261800"), + cst_0$274=caml_string_of_jsbytes("0"), + cst_173600$0=caml_string_of_jsbytes("173600"), + cst_208200$0=caml_string_of_jsbytes("208200"), + cst_1$202=caml_string_of_jsbytes("1"), + cst_34600=caml_string_of_jsbytes("34600"), + cst_242800$0=caml_string_of_jsbytes("242800"), + cst_0$269=caml_string_of_jsbytes("0"), + cst_167800$0=caml_string_of_jsbytes("167800"), + cst_202500$1=caml_string_of_jsbytes("202500"), + cst_1$197=caml_string_of_jsbytes("1"), + cst_34700$0=caml_string_of_jsbytes("34700"), + cst_237200$0=caml_string_of_jsbytes("237200"), + cst_0$270=caml_string_of_jsbytes("0"), + cst_149600$0=caml_string_of_jsbytes("149600"), + cst_180100$0=caml_string_of_jsbytes("180100"), + cst_1$198=caml_string_of_jsbytes("1"), + cst_30500$2=caml_string_of_jsbytes("30500"), + cst_210600$0=caml_string_of_jsbytes("210600"), + cst_0$271=caml_string_of_jsbytes("0"), + cst_139700$0=caml_string_of_jsbytes("139700"), + cst_167600$0=caml_string_of_jsbytes("167600"), + cst_1$199=caml_string_of_jsbytes("1"), + cst_27900$0=caml_string_of_jsbytes("27900"), + cst_195500$0=caml_string_of_jsbytes("195500"), + cst_0$266=caml_string_of_jsbytes("0"), + cst_198100=caml_string_of_jsbytes("198100"), + cst_239000=caml_string_of_jsbytes("239000"), + cst_1$194=caml_string_of_jsbytes("1"), + cst_40900=caml_string_of_jsbytes("40900"), + cst_279900=caml_string_of_jsbytes("279900"), + cst_0$267=caml_string_of_jsbytes("0"), + cst_176800=caml_string_of_jsbytes("176800"), + cst_212800=caml_string_of_jsbytes("212800"), + cst_1$195=caml_string_of_jsbytes("1"), + cst_36000=caml_string_of_jsbytes("36000"), + cst_248800=caml_string_of_jsbytes("248800"), + cst_0$268=caml_string_of_jsbytes("0"), + cst_165000=caml_string_of_jsbytes("165000"), + cst_197900=caml_string_of_jsbytes("197900"), + cst_1$196=caml_string_of_jsbytes("1"), + cst_32900=caml_string_of_jsbytes("32900"), + cst_230800=caml_string_of_jsbytes("230800"), + cst_0$263=caml_string_of_jsbytes("0"), + cst_159500=caml_string_of_jsbytes("159500"), + cst_192500=caml_string_of_jsbytes("192500"), + cst_1$191=caml_string_of_jsbytes("1"), + cst_33000=caml_string_of_jsbytes("33000"), + cst_225500=caml_string_of_jsbytes("225500"), + cst_0$264=caml_string_of_jsbytes("0"), + cst_142200=caml_string_of_jsbytes("142200"), + cst_171200=caml_string_of_jsbytes("171200"), + cst_1$192=caml_string_of_jsbytes("1"), + cst_29000=caml_string_of_jsbytes("29000"), + cst_200200=caml_string_of_jsbytes("200200"), + cst_0$265=caml_string_of_jsbytes("0"), + cst_132800=caml_string_of_jsbytes("132800"), + cst_159300=caml_string_of_jsbytes("159300"), + cst_1$193=caml_string_of_jsbytes("1"), + cst_26500=caml_string_of_jsbytes("26500"), + cst_185800$0=caml_string_of_jsbytes("185800"), + cst_0$260=caml_string_of_jsbytes("0"), + cst_200100=caml_string_of_jsbytes("200100"), + cst_141400=caml_string_of_jsbytes("141400"), + cst_1$188=caml_string_of_jsbytes("1"), + cst_41300=caml_string_of_jsbytes("41300"), + cst_182700=caml_string_of_jsbytes("182700"), + cst_0$261=caml_string_of_jsbytes("0"), + cst_178600=caml_string_of_jsbytes("178600"), + cst_215000=caml_string_of_jsbytes("215000"), + cst_1$189=caml_string_of_jsbytes("1"), + cst_36400=caml_string_of_jsbytes("36400"), + cst_251400=caml_string_of_jsbytes("251400"), + cst_0$262=caml_string_of_jsbytes("0"), + cst_166700=caml_string_of_jsbytes("166700"), + cst_199900=caml_string_of_jsbytes("199900"), + cst_1$190=caml_string_of_jsbytes("1"), + cst_33200=caml_string_of_jsbytes("33200"), + cst_233100=caml_string_of_jsbytes("233100"), + cst_0$257=caml_string_of_jsbytes("0"), + cst_161100=caml_string_of_jsbytes("161100"), + cst_194400=caml_string_of_jsbytes("194400"), + cst_1$185=caml_string_of_jsbytes("1"), + cst_33300=caml_string_of_jsbytes("33300"), + cst_227700=caml_string_of_jsbytes("227700"), + cst_0$258=caml_string_of_jsbytes("0"), + cst_143600=caml_string_of_jsbytes("143600"), + cst_172900=caml_string_of_jsbytes("172900"), + cst_1$186=caml_string_of_jsbytes("1"), + cst_29300=caml_string_of_jsbytes("29300"), + cst_202200=caml_string_of_jsbytes("202200"), + cst_0$259=caml_string_of_jsbytes("0"), + cst_134100=caml_string_of_jsbytes("134100"), + cst_160900=caml_string_of_jsbytes("160900"), + cst_1$187=caml_string_of_jsbytes("1"), + cst_26800=caml_string_of_jsbytes("26800"), + cst_187700=caml_string_of_jsbytes("187700"), + cst_0$254=caml_string_of_jsbytes("0"), + cst_202500$0=caml_string_of_jsbytes("202500"), + cst_244300=caml_string_of_jsbytes("244300"), + cst_1$182=caml_string_of_jsbytes("1"), + cst_41800=caml_string_of_jsbytes("41800"), + cst_286100=caml_string_of_jsbytes("286100"), + cst_0$255=caml_string_of_jsbytes("0"), + cst_180700=caml_string_of_jsbytes("180700"), + cst_217500=caml_string_of_jsbytes("217500"), + cst_1$183=caml_string_of_jsbytes("1"), + cst_36800=caml_string_of_jsbytes("36800"), + cst_254300=caml_string_of_jsbytes("254300"), + cst_0$256=caml_string_of_jsbytes("0"), + cst_168700=caml_string_of_jsbytes("168700"), + cst_202300=caml_string_of_jsbytes("202300"), + cst_1$184=caml_string_of_jsbytes("1"), + cst_33600=caml_string_of_jsbytes("33600"), + cst_235900=caml_string_of_jsbytes("235900"), + cst_0$251=caml_string_of_jsbytes("0"), + cst_30871=caml_string_of_jsbytes("30871"), + cst_37243=caml_string_of_jsbytes("37243"), + cst_1$179=caml_string_of_jsbytes("1"), + cst_6372=caml_string_of_jsbytes("6372"), + cst_43615=caml_string_of_jsbytes("43615"), + cst_0$252=caml_string_of_jsbytes("0"), + cst_27548=caml_string_of_jsbytes("27548"), + cst_33148=caml_string_of_jsbytes("33148"), + cst_1$180=caml_string_of_jsbytes("1"), + cst_5610=caml_string_of_jsbytes("5610"), + cst_38768=caml_string_of_jsbytes("38768"), + cst_0$253=caml_string_of_jsbytes("0"), + cst_25718=caml_string_of_jsbytes("25718"), + cst_30840=caml_string_of_jsbytes("30840"), + cst_1$181=caml_string_of_jsbytes("1"), + cst_5122=caml_string_of_jsbytes("5122"), + cst_35962=caml_string_of_jsbytes("35962"), + cst_0$248=caml_string_of_jsbytes("0"), + cst_163000=caml_string_of_jsbytes("163000"), + cst_196700=caml_string_of_jsbytes("196700"), + cst_1$176=caml_string_of_jsbytes("1"), + cst_33700=caml_string_of_jsbytes("33700"), + cst_230400=caml_string_of_jsbytes("230400"), + cst_0$249=caml_string_of_jsbytes("0"), + cst_145300=caml_string_of_jsbytes("145300"), + cst_175000=caml_string_of_jsbytes("175000"), + cst_1$177=caml_string_of_jsbytes("1"), + cst_29700=caml_string_of_jsbytes("29700"), + cst_204700=caml_string_of_jsbytes("204700"), + cst_0$250=caml_string_of_jsbytes("0"), + cst_135700=caml_string_of_jsbytes("135700"), + cst_162800=caml_string_of_jsbytes("162800"), + cst_1$178=caml_string_of_jsbytes("1"), + cst_27100=caml_string_of_jsbytes("27100"), + cst_189900=caml_string_of_jsbytes("189900"), + cst_0$245=caml_string_of_jsbytes("0"), + cst_24849=caml_string_of_jsbytes("24849"), + cst_29987=caml_string_of_jsbytes("29987"), + cst_1$173=caml_string_of_jsbytes("1"), + cst_5138=caml_string_of_jsbytes("5138"), + cst_35125=caml_string_of_jsbytes("35125"), + cst_0$246=caml_string_of_jsbytes("0"), + cst_22151=caml_string_of_jsbytes("22151"), + cst_26679=caml_string_of_jsbytes("26679"), + cst_1$174=caml_string_of_jsbytes("1"), + cst_4528=caml_string_of_jsbytes("4528"), + cst_31207=caml_string_of_jsbytes("31207"), + cst_0$247=caml_string_of_jsbytes("0"), + cst_20687=caml_string_of_jsbytes("20687"), + cst_24818=caml_string_of_jsbytes("24818"), + cst_1$175=caml_string_of_jsbytes("1"), + cst_4131=caml_string_of_jsbytes("4131"), + cst_28949=caml_string_of_jsbytes("28949"), + cst_0$242=caml_string_of_jsbytes("0"), + cst_31241=caml_string_of_jsbytes("31241"), + cst_37689=caml_string_of_jsbytes("37689"), + cst_1$170=caml_string_of_jsbytes("1"), + cst_6448=caml_string_of_jsbytes("6448"), + cst_44137=caml_string_of_jsbytes("44137"), + cst_0$243=caml_string_of_jsbytes("0"), + cst_27879=caml_string_of_jsbytes("27879"), + cst_33556=caml_string_of_jsbytes("33556"), + cst_1$171=caml_string_of_jsbytes("1"), + cst_5677=caml_string_of_jsbytes("5677"), + cst_39233=caml_string_of_jsbytes("39233"), + cst_0$244=caml_string_of_jsbytes("0"), + cst_26027=caml_string_of_jsbytes("26027"), + cst_31210=caml_string_of_jsbytes("31210"), + cst_1$172=caml_string_of_jsbytes("1"), + cst_5183=caml_string_of_jsbytes("5183"), + cst_36393=caml_string_of_jsbytes("36393"), + cst_0$239=caml_string_of_jsbytes("0"), + cst_25147=caml_string_of_jsbytes("25147"), + cst_30347=caml_string_of_jsbytes("30347"), + cst_1$167=caml_string_of_jsbytes("1"), + cst_5200=caml_string_of_jsbytes("5200"), + cst_35547=caml_string_of_jsbytes("35547"), + cst_0$240=caml_string_of_jsbytes("0"), + cst_22417=caml_string_of_jsbytes("22417"), + cst_26999=caml_string_of_jsbytes("26999"), + cst_1$168=caml_string_of_jsbytes("1"), + cst_4582=caml_string_of_jsbytes("4582"), + cst_31581=caml_string_of_jsbytes("31581"), + cst_0$241=caml_string_of_jsbytes("0"), + cst_20935=caml_string_of_jsbytes("20935"), + cst_25116$0=caml_string_of_jsbytes("25116"), + cst_1$169=caml_string_of_jsbytes("1"), + cst_4181=caml_string_of_jsbytes("4181"), + cst_29297=caml_string_of_jsbytes("29297"), + cst_0$236=caml_string_of_jsbytes("0"), + cst_31616=caml_string_of_jsbytes("31616"), + cst_38141=caml_string_of_jsbytes("38141"), + cst_1$164=caml_string_of_jsbytes("1"), + cst_6525=caml_string_of_jsbytes("6525"), + cst_44666=caml_string_of_jsbytes("44666"), + cst_0$237=caml_string_of_jsbytes("0"), + cst_28214=caml_string_of_jsbytes("28214"), + cst_33959=caml_string_of_jsbytes("33959"), + cst_1$165=caml_string_of_jsbytes("1"), + cst_5745=caml_string_of_jsbytes("5745"), + cst_39704=caml_string_of_jsbytes("39704"), + cst_0$238=caml_string_of_jsbytes("0"), + cst_26339=caml_string_of_jsbytes("26339"), + cst_31584=caml_string_of_jsbytes("31584"), + cst_1$166=caml_string_of_jsbytes("1"), + cst_5245=caml_string_of_jsbytes("5245"), + cst_36829=caml_string_of_jsbytes("36829"), + cst_0$233=caml_string_of_jsbytes("0"), + cst_25449=caml_string_of_jsbytes("25449"), + cst_30711=caml_string_of_jsbytes("30711"), + cst_1$161=caml_string_of_jsbytes("1"), + cst_5262=caml_string_of_jsbytes("5262"), + cst_35973=caml_string_of_jsbytes("35973"), + cst_0$234=caml_string_of_jsbytes("0"), + cst_22686=caml_string_of_jsbytes("22686"), + cst_27323=caml_string_of_jsbytes("27323"), + cst_1$162=caml_string_of_jsbytes("1"), + cst_4637=caml_string_of_jsbytes("4637"), + cst_31960=caml_string_of_jsbytes("31960"), + cst_0$235=caml_string_of_jsbytes("0"), + cst_21186=caml_string_of_jsbytes("21186"), + cst_25417=caml_string_of_jsbytes("25417"), + cst_1$163=caml_string_of_jsbytes("1"), + cst_4231=caml_string_of_jsbytes("4231"), + cst_29648=caml_string_of_jsbytes("29648"), + cst_0$230=caml_string_of_jsbytes("0"), + cst_32185=caml_string_of_jsbytes("32185"), + cst_38827=caml_string_of_jsbytes("38827"), + cst_1$158=caml_string_of_jsbytes("1"), + cst_6642=caml_string_of_jsbytes("6642"), + cst_45469=caml_string_of_jsbytes("45469"), + cst_0$231=caml_string_of_jsbytes("0"), + cst_28722=caml_string_of_jsbytes("28722"), + cst_34570$0=caml_string_of_jsbytes("34570"), + cst_1$159=caml_string_of_jsbytes("1"), + cst_5848=caml_string_of_jsbytes("5848"), + cst_40418=caml_string_of_jsbytes("40418"), + cst_0$232=caml_string_of_jsbytes("0"), + cst_26813=caml_string_of_jsbytes("26813"), + cst_32152=caml_string_of_jsbytes("32152"), + cst_1$160=caml_string_of_jsbytes("1"), + cst_5339=caml_string_of_jsbytes("5339"), + cst_37491=caml_string_of_jsbytes("37491"), + cst_0$227=caml_string_of_jsbytes("0"), + cst_25907=caml_string_of_jsbytes("25907"), + cst_31264=caml_string_of_jsbytes("31264"), + cst_1$155=caml_string_of_jsbytes("1"), + cst_5357=caml_string_of_jsbytes("5357"), + cst_36621=caml_string_of_jsbytes("36621"), + cst_0$228=caml_string_of_jsbytes("0"), + cst_23094=caml_string_of_jsbytes("23094"), + cst_27814=caml_string_of_jsbytes("27814"), + cst_1$156=caml_string_of_jsbytes("1"), + cst_4720=caml_string_of_jsbytes("4720"), + cst_32534=caml_string_of_jsbytes("32534"), + cst_0$229=caml_string_of_jsbytes("0"), + cst_21567=caml_string_of_jsbytes("21567"), + cst_25874=caml_string_of_jsbytes("25874"), + cst_1$157=caml_string_of_jsbytes("1"), + cst_4307=caml_string_of_jsbytes("4307"), + cst_30181=caml_string_of_jsbytes("30181"), + cst_0$224=caml_string_of_jsbytes("0"), + cst_33086=caml_string_of_jsbytes("33086"), + cst_39914=caml_string_of_jsbytes("39914"), + cst_1$152=caml_string_of_jsbytes("1"), + cst_6828=caml_string_of_jsbytes("6828"), + cst_46742=caml_string_of_jsbytes("46742"), + cst_0$225=caml_string_of_jsbytes("0"), + cst_29526=caml_string_of_jsbytes("29526"), + cst_35538=caml_string_of_jsbytes("35538"), + cst_1$153=caml_string_of_jsbytes("1"), + cst_6012=caml_string_of_jsbytes("6012"), + cst_41550=caml_string_of_jsbytes("41550"), + cst_0$226=caml_string_of_jsbytes("0"), + cst_27564=caml_string_of_jsbytes("27564"), + cst_33052=caml_string_of_jsbytes("33052"), + cst_1$154=caml_string_of_jsbytes("1"), + cst_5488=caml_string_of_jsbytes("5488"), + cst_38541=caml_string_of_jsbytes("38541"), + cst_0$221=caml_string_of_jsbytes("0"), + cst_26632=caml_string_of_jsbytes("26632"), + cst_32139=caml_string_of_jsbytes("32139"), + cst_1$149=caml_string_of_jsbytes("1"), + cst_5507=caml_string_of_jsbytes("5507"), + cst_37646=caml_string_of_jsbytes("37646"), + cst_0$222=caml_string_of_jsbytes("0"), + cst_23741=caml_string_of_jsbytes("23741"), + cst_28593=caml_string_of_jsbytes("28593"), + cst_1$150=caml_string_of_jsbytes("1"), + cst_4852=caml_string_of_jsbytes("4852"), + cst_33445=caml_string_of_jsbytes("33445"), + cst_0$223=caml_string_of_jsbytes("0"), + cst_22171=caml_string_of_jsbytes("22171"), + cst_36598=caml_string_of_jsbytes("36598"), + cst_1$151=caml_string_of_jsbytes("1"), + cst_4428=caml_string_of_jsbytes("4428"), + cst_31026=caml_string_of_jsbytes("31026"), + cst_0$218=caml_string_of_jsbytes("0"), + cst_33999=caml_string_of_jsbytes("33999"), + cst_41016=caml_string_of_jsbytes("41016"), + cst_1$146=caml_string_of_jsbytes("1"), + cst_7016=caml_string_of_jsbytes("7016"), + cst_48032=caml_string_of_jsbytes("48032"), + cst_0$219=caml_string_of_jsbytes("0"), + cst_30341=caml_string_of_jsbytes("30341"), + cst_36519=caml_string_of_jsbytes("36519"), + cst_1$147=caml_string_of_jsbytes("1"), + cst_6178=caml_string_of_jsbytes("6178"), + cst_42697=caml_string_of_jsbytes("42697"), + cst_0$220=caml_string_of_jsbytes("0"), + cst_28325=caml_string_of_jsbytes("28325"), + cst_33964=caml_string_of_jsbytes("33964"), + cst_1$148=caml_string_of_jsbytes("1"), + cst_5639=caml_string_of_jsbytes("5639"), + cst_39605=caml_string_of_jsbytes("39605"), + cst_0$215=caml_string_of_jsbytes("0"), + cst_27367=caml_string_of_jsbytes("27367"), + cst_33026=caml_string_of_jsbytes("33026"), + cst_1$143=caml_string_of_jsbytes("1"), + cst_5659=caml_string_of_jsbytes("5659"), + cst_38685=caml_string_of_jsbytes("38685"), + cst_0$216=caml_string_of_jsbytes("0"), + cst_24396=caml_string_of_jsbytes("24396"), + cst_29382=caml_string_of_jsbytes("29382"), + cst_1$144=caml_string_of_jsbytes("1"), + cst_4986$0=caml_string_of_jsbytes("4986"), + cst_34368=caml_string_of_jsbytes("34368"), + cst_0$217=caml_string_of_jsbytes("0"), + cst_22783=caml_string_of_jsbytes("22783"), + cst_27332=caml_string_of_jsbytes("27332"), + cst_1$145=caml_string_of_jsbytes("1"), + cst_4550=caml_string_of_jsbytes("4550"), + cst_31882=caml_string_of_jsbytes("31882"), + cst_0$212=caml_string_of_jsbytes("0"), + cst_35002=caml_string_of_jsbytes("35002"), + cst_42226=caml_string_of_jsbytes("42226"), + cst_1$140=caml_string_of_jsbytes("1"), + cst_7223=caml_string_of_jsbytes("7223"), + cst_49449=caml_string_of_jsbytes("49449"), + cst_0$213=caml_string_of_jsbytes("0"), + cst_31236=caml_string_of_jsbytes("31236"), + cst_37596=caml_string_of_jsbytes("37596"), + cst_1$141=caml_string_of_jsbytes("1"), + cst_6360=caml_string_of_jsbytes("6360"), + cst_43957=caml_string_of_jsbytes("43957"), + cst_0$214=caml_string_of_jsbytes("0"), + cst_29161=caml_string_of_jsbytes("29161"), + cst_34966=caml_string_of_jsbytes("34966"), + cst_1$142=caml_string_of_jsbytes("1"), + cst_5805=caml_string_of_jsbytes("5805"), + cst_40773=caml_string_of_jsbytes("40773"), + cst_0$209=caml_string_of_jsbytes("0"), + cst_28174=caml_string_of_jsbytes("28174"), + cst_34000=caml_string_of_jsbytes("34000"), + cst_1$137=caml_string_of_jsbytes("1"), + cst_5826=caml_string_of_jsbytes("5826"), + cst_39826=caml_string_of_jsbytes("39826"), + cst_0$210=caml_string_of_jsbytes("0"), + cst_25116=caml_string_of_jsbytes("25116"), + cst_30249=caml_string_of_jsbytes("30249"), + cst_1$138=caml_string_of_jsbytes("1"), + cst_5133=caml_string_of_jsbytes("5133"), + cst_35382=caml_string_of_jsbytes("35382"), + cst_0$211=caml_string_of_jsbytes("0"), + cst_23455=caml_string_of_jsbytes("23455"), + cst_28138=caml_string_of_jsbytes("28138"), + cst_1$139=caml_string_of_jsbytes("1"), + cst_4684=caml_string_of_jsbytes("4684"), + cst_32823=caml_string_of_jsbytes("32823"), + cst_0$206=caml_string_of_jsbytes("0"), + cst_35114=caml_string_of_jsbytes("35114"), + cst_42361=caml_string_of_jsbytes("42361"), + cst_1$134=caml_string_of_jsbytes("1"), + cst_7246=caml_string_of_jsbytes("7246"), + cst_49607=caml_string_of_jsbytes("49607"), + cst_0$207=caml_string_of_jsbytes("0"), + cst_31336=caml_string_of_jsbytes("31336"), + cst_37716=caml_string_of_jsbytes("37716"), + cst_1$135=caml_string_of_jsbytes("1"), + cst_6380=caml_string_of_jsbytes("6380"), + cst_44098=caml_string_of_jsbytes("44098"), + cst_0$208=caml_string_of_jsbytes("0"), + cst_29254=caml_string_of_jsbytes("29254"), + cst_35078=caml_string_of_jsbytes("35078"), + cst_1$136=caml_string_of_jsbytes("1"), + cst_5824=caml_string_of_jsbytes("5824"), + cst_40903=caml_string_of_jsbytes("40903"), + cst_0$203=caml_string_of_jsbytes("0"), + cst_28264=caml_string_of_jsbytes("28264"), + cst_34109=caml_string_of_jsbytes("34109"), + cst_1$131=caml_string_of_jsbytes("1"), + cst_5845=caml_string_of_jsbytes("5845"), + cst_39953=caml_string_of_jsbytes("39953"), + cst_0$204=caml_string_of_jsbytes("0"), + cst_25196=caml_string_of_jsbytes("25196"), + cst_30346=caml_string_of_jsbytes("30346"), + cst_1$132=caml_string_of_jsbytes("1"), + cst_5149=caml_string_of_jsbytes("5149"), + cst_35495=caml_string_of_jsbytes("35495"), + cst_0$205=caml_string_of_jsbytes("0"), + cst_23530=caml_string_of_jsbytes("23530"), + cst_28228=caml_string_of_jsbytes("28228"), + cst_1$133=caml_string_of_jsbytes("1"), + cst_4699=caml_string_of_jsbytes("4699"), + cst_32928=caml_string_of_jsbytes("32928"), + cst_0$200=caml_string_of_jsbytes("0"), + cst_35500=caml_string_of_jsbytes("35500"), + cst_42827=caml_string_of_jsbytes("42827"), + cst_1$128=caml_string_of_jsbytes("1"), + cst_7326=caml_string_of_jsbytes("7326"), + cst_50153=caml_string_of_jsbytes("50153"), + cst_0$201=caml_string_of_jsbytes("0"), + cst_31681=caml_string_of_jsbytes("31681"), + cst_38131=caml_string_of_jsbytes("38131"), + cst_1$129=caml_string_of_jsbytes("1"), + cst_6450=caml_string_of_jsbytes("6450"), + cst_44583=caml_string_of_jsbytes("44583"), + cst_0$202=caml_string_of_jsbytes("0"), + cst_29576=caml_string_of_jsbytes("29576"), + cst_35464=caml_string_of_jsbytes("35464"), + cst_1$130=caml_string_of_jsbytes("1"), + cst_5888=caml_string_of_jsbytes("5888"), + cst_41353=caml_string_of_jsbytes("41353"), + cst_0$197=caml_string_of_jsbytes("0"), + cst_28575=caml_string_of_jsbytes("28575"), + cst_34484=caml_string_of_jsbytes("34484"), + cst_1$125=caml_string_of_jsbytes("1"), + cst_5909=caml_string_of_jsbytes("5909"), + cst_40392=caml_string_of_jsbytes("40392"), + cst_0$198=caml_string_of_jsbytes("0"), + cst_25473=caml_string_of_jsbytes("25473"), + cst_30680=caml_string_of_jsbytes("30680"), + cst_1$126=caml_string_of_jsbytes("1"), + cst_5206=caml_string_of_jsbytes("5206"), + cst_35885=caml_string_of_jsbytes("35885"), + cst_0$199=caml_string_of_jsbytes("0"), + cst_23789=caml_string_of_jsbytes("23789"), + cst_28539=caml_string_of_jsbytes("28539"), + cst_1$127=caml_string_of_jsbytes("1"), + cst_4751=caml_string_of_jsbytes("4751"), + cst_33290=caml_string_of_jsbytes("33290"), + cst_0$194=caml_string_of_jsbytes("0"), + cst_35855=caml_string_of_jsbytes("35855"), + cst_43255=caml_string_of_jsbytes("43255"), + cst_1$122=caml_string_of_jsbytes("1"), + cst_7399=caml_string_of_jsbytes("7399"), + cst_50655=caml_string_of_jsbytes("50655"), + cst_0$195=caml_string_of_jsbytes("0"), + cst_31998=caml_string_of_jsbytes("31998"), + cst_38512=caml_string_of_jsbytes("38512"), + cst_1$123=caml_string_of_jsbytes("1"), + cst_6515=caml_string_of_jsbytes("6515"), + cst_45029=caml_string_of_jsbytes("45029"), + cst_0$196=caml_string_of_jsbytes("0"), + cst_29872=caml_string_of_jsbytes("29872"), + cst_35819=caml_string_of_jsbytes("35819"), + cst_1$124=caml_string_of_jsbytes("1"), + cst_5947=caml_string_of_jsbytes("5947"), + cst_41767=caml_string_of_jsbytes("41767"), + cst_0$191=caml_string_of_jsbytes("0"), + cst_28861=caml_string_of_jsbytes("28861"), + cst_34829$0=caml_string_of_jsbytes("34829"), + cst_1$119=caml_string_of_jsbytes("1"), + cst_5968=caml_string_of_jsbytes("5968"), + cst_40796=caml_string_of_jsbytes("40796"), + cst_0$192=caml_string_of_jsbytes("0"), + cst_25728=caml_string_of_jsbytes("25728"), + cst_30987=caml_string_of_jsbytes("30987"), + cst_1$120=caml_string_of_jsbytes("1"), + cst_5258=caml_string_of_jsbytes("5258"), + cst_36244=caml_string_of_jsbytes("36244"), + cst_0$193=caml_string_of_jsbytes("0"), + cst_24027=caml_string_of_jsbytes("24027"), + cst_28824=caml_string_of_jsbytes("28824"), + cst_1$121=caml_string_of_jsbytes("1"), + cst_4799=caml_string_of_jsbytes("4799"), + cst_33623=caml_string_of_jsbytes("33623"), + cst_0$188=caml_string_of_jsbytes("0"), + cst_36626=caml_string_of_jsbytes("36626"), + cst_44185=caml_string_of_jsbytes("44185"), + cst_1$116=caml_string_of_jsbytes("1"), + cst_7558=caml_string_of_jsbytes("7558"), + cst_51744=caml_string_of_jsbytes("51744"), + cst_0$189=caml_string_of_jsbytes("0"), + cst_32686=caml_string_of_jsbytes("32686"), + cst_39340=caml_string_of_jsbytes("39340"), + cst_1$117=caml_string_of_jsbytes("1"), + cst_6655=caml_string_of_jsbytes("6655"), + cst_45997=caml_string_of_jsbytes("45997"), + cst_0$190=caml_string_of_jsbytes("0"), + cst_30514=caml_string_of_jsbytes("30514"), + cst_36589=caml_string_of_jsbytes("36589"), + cst_1$118=caml_string_of_jsbytes("1"), + cst_6075=caml_string_of_jsbytes("6075"), + cst_42665=caml_string_of_jsbytes("42665"), + cst_0$185=caml_string_of_jsbytes("0"), + cst_29482=caml_string_of_jsbytes("29482"), + cst_35578=caml_string_of_jsbytes("35578"), + cst_1$113=caml_string_of_jsbytes("1"), + cst_6096=caml_string_of_jsbytes("6096"), + cst_41673=caml_string_of_jsbytes("41673"), + cst_0$186=caml_string_of_jsbytes("0"), + cst_26281=caml_string_of_jsbytes("26281"), + cst_31653=caml_string_of_jsbytes("31653"), + cst_1$114=caml_string_of_jsbytes("1"), + cst_5371=caml_string_of_jsbytes("5371"), + cst_37023=caml_string_of_jsbytes("37023"), + cst_0$187=caml_string_of_jsbytes("0"), + cst_24544=caml_string_of_jsbytes("24544"), + cst_29444=caml_string_of_jsbytes("29444"), + cst_1$115=caml_string_of_jsbytes("1"), + cst_4902=caml_string_of_jsbytes("4902"), + cst_34346=caml_string_of_jsbytes("34346"), + cst_0$182=caml_string_of_jsbytes("0"), + cst_36835=caml_string_of_jsbytes("36835"), + cst_44437=caml_string_of_jsbytes("44437"), + cst_1$110=caml_string_of_jsbytes("1"), + cst_7601=caml_string_of_jsbytes("7601"), + cst_52039=caml_string_of_jsbytes("52039"), + cst_0$183=caml_string_of_jsbytes("0"), + cst_32872=caml_string_of_jsbytes("32872"), + cst_39564=caml_string_of_jsbytes("39564"), + cst_1$111=caml_string_of_jsbytes("1"), + cst_6693=caml_string_of_jsbytes("6693"), + cst_46259=caml_string_of_jsbytes("46259"), + cst_0$184=caml_string_of_jsbytes("0"), + cst_30688=caml_string_of_jsbytes("30688"), + cst_36798=caml_string_of_jsbytes("36798"), + cst_1$112=caml_string_of_jsbytes("1"), + cst_6110=caml_string_of_jsbytes("6110"), + cst_42908=caml_string_of_jsbytes("42908"), + cst_0$179=caml_string_of_jsbytes("0"), + cst_29650=caml_string_of_jsbytes("29650"), + cst_35781=caml_string_of_jsbytes("35781"), + cst_1$107=caml_string_of_jsbytes("1"), + cst_6131=caml_string_of_jsbytes("6131"), + cst_41911=caml_string_of_jsbytes("41911"), + cst_0$180=caml_string_of_jsbytes("0"), + cst_26431=caml_string_of_jsbytes("26431"), + cst_31833=caml_string_of_jsbytes("31833"), + cst_1$108=caml_string_of_jsbytes("1"), + cst_5402=caml_string_of_jsbytes("5402"), + cst_37234=caml_string_of_jsbytes("37234"), + cst_0$181=caml_string_of_jsbytes("0"), + cst_24684=caml_string_of_jsbytes("24684"), + cst_29612=caml_string_of_jsbytes("29612"), + cst_1$109=caml_string_of_jsbytes("1"), + cst_4930=caml_string_of_jsbytes("4930"), + cst_34542=caml_string_of_jsbytes("34542"), + cst_0$176=caml_string_of_jsbytes("0"), + cst_36864=caml_string_of_jsbytes("36864"), + cst_44473=caml_string_of_jsbytes("44473"), + cst_1$104=caml_string_of_jsbytes("1"), + cst_7607=caml_string_of_jsbytes("7607"), + cst_52081=caml_string_of_jsbytes("52081"), + cst_0$177=caml_string_of_jsbytes("0"), + cst_32898=caml_string_of_jsbytes("32898"), + cst_39596=caml_string_of_jsbytes("39596"), + cst_1$105=caml_string_of_jsbytes("1"), + cst_6698=caml_string_of_jsbytes("6698"), + cst_46296=caml_string_of_jsbytes("46296"), + cst_0$178=caml_string_of_jsbytes("0"), + cst_30713=caml_string_of_jsbytes("30713"), + cst_36827=caml_string_of_jsbytes("36827"), + cst_1$106=caml_string_of_jsbytes("1"), + cst_6115=caml_string_of_jsbytes("6115"), + cst_42942=caml_string_of_jsbytes("42942"), + cst_0$173=caml_string_of_jsbytes("0"), + cst_29674=caml_string_of_jsbytes("29674"), + cst_35810=caml_string_of_jsbytes("35810"), + cst_1$101=caml_string_of_jsbytes("1"), + cst_6136=caml_string_of_jsbytes("6136"), + cst_41945=caml_string_of_jsbytes("41945"), + cst_0$174=caml_string_of_jsbytes("0"), + cst_26452=caml_string_of_jsbytes("26452"), + cst_31858=caml_string_of_jsbytes("31858"), + cst_1$102=caml_string_of_jsbytes("1"), + cst_5406=caml_string_of_jsbytes("5406"), + cst_37264=caml_string_of_jsbytes("37264"), + cst_0$175=caml_string_of_jsbytes("0"), + cst_24704=caml_string_of_jsbytes("24704"), + cst_29636=caml_string_of_jsbytes("29636"), + cst_1$103=caml_string_of_jsbytes("1"), + cst_4934=caml_string_of_jsbytes("4934"), + cst_34570=caml_string_of_jsbytes("34570"), + cst_0$170=caml_string_of_jsbytes("0"), + cst_37140=caml_string_of_jsbytes("37140"), + cst_44807=caml_string_of_jsbytes("44807"), + cst_1$98=caml_string_of_jsbytes("1"), + cst_7664=caml_string_of_jsbytes("7664"), + cst_52472=caml_string_of_jsbytes("52472"), + cst_0$171=caml_string_of_jsbytes("0"), + cst_33145=caml_string_of_jsbytes("33145"), + cst_39893=caml_string_of_jsbytes("39893"), + cst_1$99=caml_string_of_jsbytes("1"), + cst_6748=caml_string_of_jsbytes("6748"), + cst_46643=caml_string_of_jsbytes("46643"), + cst_0$172=caml_string_of_jsbytes("0"), + cst_30943=caml_string_of_jsbytes("30943"), + cst_37103=caml_string_of_jsbytes("37103"), + cst_1$100=caml_string_of_jsbytes("1"), + cst_6161=caml_string_of_jsbytes("6161"), + cst_43264=caml_string_of_jsbytes("43264"), + cst_0$167=caml_string_of_jsbytes("0"), + cst_29897=caml_string_of_jsbytes("29897"), + cst_36079=caml_string_of_jsbytes("36079"), + cst_1$95=caml_string_of_jsbytes("1"), + cst_6182=caml_string_of_jsbytes("6182"), + cst_42260=caml_string_of_jsbytes("42260"), + cst_0$168=caml_string_of_jsbytes("0"), + cst_26650=caml_string_of_jsbytes("26650"), + cst_32097=caml_string_of_jsbytes("32097"), + cst_1$96=caml_string_of_jsbytes("1"), + cst_5447=caml_string_of_jsbytes("5447"), + cst_37543=caml_string_of_jsbytes("37543"), + cst_0$169=caml_string_of_jsbytes("0"), + cst_24889=caml_string_of_jsbytes("24889"), + cst_29858=caml_string_of_jsbytes("29858"), + cst_1$97=caml_string_of_jsbytes("1"), + cst_4971=caml_string_of_jsbytes("4971"), + cst_34829=caml_string_of_jsbytes("34829"), + cst_0$164=caml_string_of_jsbytes("0"), + cst_37252=caml_string_of_jsbytes("37252"), + cst_44941=caml_string_of_jsbytes("44941"), + cst_1$92=caml_string_of_jsbytes("1"), + cst_7687=caml_string_of_jsbytes("7687"), + cst_52629=caml_string_of_jsbytes("52629"), + cst_0$165=caml_string_of_jsbytes("0"), + cst_33244=caml_string_of_jsbytes("33244"), + cst_40013=caml_string_of_jsbytes("40013"), + cst_1$93=caml_string_of_jsbytes("1"), + cst_6768=caml_string_of_jsbytes("6768"), + cst_46783=caml_string_of_jsbytes("46783"), + cst_0$166=caml_string_of_jsbytes("0"), + cst_31036=caml_string_of_jsbytes("31036"), + cst_37215=caml_string_of_jsbytes("37215"), + cst_1$94=caml_string_of_jsbytes("1"), + cst_6179=caml_string_of_jsbytes("6179"), + cst_43394=caml_string_of_jsbytes("43394"), + cst_0$161=caml_string_of_jsbytes("0"), + cst_29986=caml_string_of_jsbytes("29986"), + cst_36187=caml_string_of_jsbytes("36187"), + cst_1$89=caml_string_of_jsbytes("1"), + cst_6201=caml_string_of_jsbytes("6201"), + cst_42386=caml_string_of_jsbytes("42386"), + cst_0$162=caml_string_of_jsbytes("0"), + cst_26730=caml_string_of_jsbytes("26730"), + cst_32193=caml_string_of_jsbytes("32193"), + cst_1$90=caml_string_of_jsbytes("1"), + cst_5463=caml_string_of_jsbytes("5463"), + cst_37656=caml_string_of_jsbytes("37656"), + cst_0$163=caml_string_of_jsbytes("0"), + cst_24964=caml_string_of_jsbytes("24964"), + cst_29948=caml_string_of_jsbytes("29948"), + cst_1$91=caml_string_of_jsbytes("1"), + cst_4986=caml_string_of_jsbytes("4986"), + cst_34934=caml_string_of_jsbytes("34934"), + cst_0$158=caml_string_of_jsbytes("0"), + cst_208500=caml_string_of_jsbytes("208500"), + cst_251500=caml_string_of_jsbytes("251500"), + cst_1$86=caml_string_of_jsbytes("1"), + cst_43000=caml_string_of_jsbytes("43000"), + cst_294500=caml_string_of_jsbytes("294500"), + cst_0$159=caml_string_of_jsbytes("0"), + cst_186000=caml_string_of_jsbytes("186000"), + cst_223900=caml_string_of_jsbytes("223900"), + cst_1$87=caml_string_of_jsbytes("1"), + cst_37900=caml_string_of_jsbytes("37900"), + cst_261800=caml_string_of_jsbytes("261800"), + cst_0$160=caml_string_of_jsbytes("0"), + cst_173600=caml_string_of_jsbytes("173600"), + cst_208200=caml_string_of_jsbytes("208200"), + cst_1$88=caml_string_of_jsbytes("1"), + cst_35600=caml_string_of_jsbytes("35600"), + cst_242800=caml_string_of_jsbytes("242800"), + cst_0$155=caml_string_of_jsbytes("0"), + cst_167800=caml_string_of_jsbytes("167800"), + cst_202500=caml_string_of_jsbytes("202500"), + cst_1$83=caml_string_of_jsbytes("1"), + cst_34700=caml_string_of_jsbytes("34700"), + cst_237200=caml_string_of_jsbytes("237200"), + cst_0$156=caml_string_of_jsbytes("0"), + cst_149600=caml_string_of_jsbytes("149600"), + cst_180100=caml_string_of_jsbytes("180100"), + cst_1$84=caml_string_of_jsbytes("1"), + cst_30500$1=caml_string_of_jsbytes("30500"), + cst_210600=caml_string_of_jsbytes("210600"), + cst_0$157=caml_string_of_jsbytes("0"), + cst_139700=caml_string_of_jsbytes("139700"), + cst_167600=caml_string_of_jsbytes("167600"), + cst_1$85=caml_string_of_jsbytes("1"), + cst_27900=caml_string_of_jsbytes("27900"), + cst_195500=caml_string_of_jsbytes("195500"), + cst_0$152=caml_string_of_jsbytes("0"), + cst_184000=caml_string_of_jsbytes("184000"), + cst_220000=caml_string_of_jsbytes("220000"), + cst_1$80=caml_string_of_jsbytes("1"), + cst_38000=caml_string_of_jsbytes("38000"), + cst_260000=caml_string_of_jsbytes("260000"), + cst_0$153=caml_string_of_jsbytes("0"), + cst_164200=caml_string_of_jsbytes("164200"), + cst_197700=caml_string_of_jsbytes("197700"), + cst_1$81=caml_string_of_jsbytes("1"), + cst_33500=caml_string_of_jsbytes("33500"), + cst_231200=caml_string_of_jsbytes("231200"), + cst_0$154=caml_string_of_jsbytes("0"), + cst_153200=caml_string_of_jsbytes("153200"), + cst_183700=caml_string_of_jsbytes("183700"), + cst_1$82=caml_string_of_jsbytes("1"), + cst_30500$0=caml_string_of_jsbytes("30500"), + cst_214200=caml_string_of_jsbytes("214200"), + cst_0$149=caml_string_of_jsbytes("0"), + cst_148100=caml_string_of_jsbytes("148100"), + cst_178700=caml_string_of_jsbytes("178700"), + cst_1$77=caml_string_of_jsbytes("1"), + cst_30600=caml_string_of_jsbytes("30600"), + cst_209300=caml_string_of_jsbytes("209300"), + cst_0$150=caml_string_of_jsbytes("0"), + cst_132000=caml_string_of_jsbytes("132000"), + cst_158900=caml_string_of_jsbytes("158900"), + cst_1$78=caml_string_of_jsbytes("1"), + cst_26900=caml_string_of_jsbytes("26900"), + cst_185800=caml_string_of_jsbytes("185800"), + cst_0$151=caml_string_of_jsbytes("0"), + cst_123300=caml_string_of_jsbytes("123300"), + cst_147900=caml_string_of_jsbytes("147900"), + cst_1$79=caml_string_of_jsbytes("1"), + cst_24600=caml_string_of_jsbytes("24600"), + cst_172500=caml_string_of_jsbytes("172500"), + cst_0$147=caml_string_of_jsbytes("0"), + cst_0$148=caml_string_of_jsbytes("0"), + cst_1272$2=caml_string_of_jsbytes("1272"), + cst_2805$0=caml_string_of_jsbytes("2805"), + cst_5612$2=caml_string_of_jsbytes("5612"), + cst_1229$2=caml_string_of_jsbytes("1229"), + cst_2710$0=caml_string_of_jsbytes("2710"), + cst_5422$2=caml_string_of_jsbytes("5422"), + cst_1224$2=caml_string_of_jsbytes("1224"), + cst_2699$0=caml_string_of_jsbytes("2699"), + cst_5399$2=caml_string_of_jsbytes("5399"), + cst_1272$1=caml_string_of_jsbytes("1272"), + cst_5612$1=caml_string_of_jsbytes("5612"), + cst_1229$1=caml_string_of_jsbytes("1229"), + cst_5422$1=caml_string_of_jsbytes("5422"), + cst_1224$1=caml_string_of_jsbytes("1224"), + cst_5399$1=caml_string_of_jsbytes("5399"), + cst_0_0226=caml_string_of_jsbytes("0.0226"), + cst_0_0234=caml_string_of_jsbytes("0.0234"), + cst_0_0172=caml_string_of_jsbytes("0.0172"), + cst_0_0226$0=caml_string_of_jsbytes("0.0226"), + cst_0_0234$0=caml_string_of_jsbytes("0.0234"), + cst_6_55957=caml_string_of_jsbytes("6.55957"), + cst_1$76=caml_string_of_jsbytes("1."), + cst_0_416=caml_string_of_jsbytes("0.416"), + cst_0_208$0=caml_string_of_jsbytes("0.208"), + cst_560085=caml_string_of_jsbytes("560085"), + cst_16_25=caml_string_of_jsbytes("16.25"), + cst_2211133=caml_string_of_jsbytes("2211133"), + cst_1000$2=caml_string_of_jsbytes("1000"), + cst_500$1=caml_string_of_jsbytes("500"), + cst_0$146=caml_string_of_jsbytes("0"), + cst_0$144=caml_string_of_jsbytes("0"), + cst_0$145=caml_string_of_jsbytes("0"), + cst_50$0=caml_string_of_jsbytes("50"), + cst_0$142=caml_string_of_jsbytes("0"), + cst_0$143=caml_string_of_jsbytes("0"), + cst_0_9$1=caml_string_of_jsbytes("0.9"), + cst_0_9$2=caml_string_of_jsbytes("0.9"), + cst_0_95$0=caml_string_of_jsbytes("0.95"), + cst_0_95$1=caml_string_of_jsbytes("0.95"), + cst_0$140=caml_string_of_jsbytes("0"), + cst_0$141=caml_string_of_jsbytes("0"), + cst_100$7=caml_string_of_jsbytes("100."), + cst_100$8=caml_string_of_jsbytes("100."), + cst_0_005$1=caml_string_of_jsbytes("0.005"), + cst_100$5=caml_string_of_jsbytes("100."), + cst_100$6=caml_string_of_jsbytes("100."), + cst_0_005$0=caml_string_of_jsbytes("0.005"), + cst_0$139=caml_string_of_jsbytes("0"), + cst_0_9$0=caml_string_of_jsbytes("0.9"), + cst_0$137=caml_string_of_jsbytes("0"), + cst_0$138=caml_string_of_jsbytes("0"), + cst_0_95=caml_string_of_jsbytes("0.95"), + cst_2142091=caml_string_of_jsbytes("2142091"), + cst_1339340=caml_string_of_jsbytes("1339340"), + cst_1500=caml_string_of_jsbytes("1500"), + cst_2668=caml_string_of_jsbytes("2668"), + cst_0$135=caml_string_of_jsbytes("0"), + cst_0$136=caml_string_of_jsbytes("0"), + cst_0$132=caml_string_of_jsbytes("0"), + cst_46192=caml_string_of_jsbytes("46192"), + cst_54152=caml_string_of_jsbytes("54152"), + cst_1$73=caml_string_of_jsbytes("1"), + cst_57741=caml_string_of_jsbytes("57741"), + cst_2$38=caml_string_of_jsbytes("2"), + cst_61794=caml_string_of_jsbytes("61794"), + cst_3$23=caml_string_of_jsbytes("3"), + cst_65862=caml_string_of_jsbytes("65862"), + cst_4$19=caml_string_of_jsbytes("4"), + cst_7368=caml_string_of_jsbytes("7368"), + cst_71039=caml_string_of_jsbytes("71039"), + cst_0$133=caml_string_of_jsbytes("0"), + cst_42242=caml_string_of_jsbytes("42242"), + cst_49299=caml_string_of_jsbytes("49299"), + cst_1$74=caml_string_of_jsbytes("1"), + cst_52565=caml_string_of_jsbytes("52565"), + cst_2$39=caml_string_of_jsbytes("2"), + cst_56268=caml_string_of_jsbytes("56268"), + cst_3$24=caml_string_of_jsbytes("3"), + cst_59957=caml_string_of_jsbytes("59957"), + cst_4$20=caml_string_of_jsbytes("4"), + cst_6659=caml_string_of_jsbytes("6659"), + cst_63887=caml_string_of_jsbytes("63887"), + cst_0$134=caml_string_of_jsbytes("0"), + cst_40096=caml_string_of_jsbytes("40096"), + cst_46634=caml_string_of_jsbytes("46634"), + cst_1$75=caml_string_of_jsbytes("1"), + cst_49475=caml_string_of_jsbytes("49475"), + cst_2$40=caml_string_of_jsbytes("2"), + cst_52740=caml_string_of_jsbytes("52740"), + cst_3$25=caml_string_of_jsbytes("3"), + cst_56004=caml_string_of_jsbytes("56004"), + cst_4$21=caml_string_of_jsbytes("4"), + cst_6180=caml_string_of_jsbytes("6180"), + cst_59675=caml_string_of_jsbytes("59675"), + cst_0$129=caml_string_of_jsbytes("0"), + cst_44630=caml_string_of_jsbytes("44630"), + cst_52321=caml_string_of_jsbytes("52321"), + cst_1$70=caml_string_of_jsbytes("1"), + cst_55788=caml_string_of_jsbytes("55788"), + cst_2$35=caml_string_of_jsbytes("2"), + cst_59704=caml_string_of_jsbytes("59704"), + cst_3$20=caml_string_of_jsbytes("3"), + cst_63635=caml_string_of_jsbytes("63635"), + cst_4$16=caml_string_of_jsbytes("4"), + cst_7119=caml_string_of_jsbytes("7119"), + cst_68637=caml_string_of_jsbytes("68637"), + cst_0$130=caml_string_of_jsbytes("0"), + cst_40814=caml_string_of_jsbytes("40814"), + cst_47632=caml_string_of_jsbytes("47632"), + cst_1$71=caml_string_of_jsbytes("1"), + cst_50787=caml_string_of_jsbytes("50787"), + cst_2$36=caml_string_of_jsbytes("2"), + cst_54365=caml_string_of_jsbytes("54365"), + cst_3$21=caml_string_of_jsbytes("3"), + cst_57929=caml_string_of_jsbytes("57929"), + cst_4$17=caml_string_of_jsbytes("4"), + cst_6434=caml_string_of_jsbytes("6434"), + cst_61727=caml_string_of_jsbytes("61727"), + cst_0$131=caml_string_of_jsbytes("0"), + cst_38740=caml_string_of_jsbytes("38740"), + cst_45057=caml_string_of_jsbytes("45057"), + cst_1$72=caml_string_of_jsbytes("1"), + cst_47802=caml_string_of_jsbytes("47802"), + cst_2$37=caml_string_of_jsbytes("2"), + cst_50957=caml_string_of_jsbytes("50957"), + cst_3$22=caml_string_of_jsbytes("3"), + cst_54110=caml_string_of_jsbytes("54110"), + cst_4$18=caml_string_of_jsbytes("4"), + cst_5971=caml_string_of_jsbytes("5971"), + cst_57657=caml_string_of_jsbytes("57657"), + cst_0$126=caml_string_of_jsbytes("0"), + cst_44443=caml_string_of_jsbytes("44443"), + cst_52101=caml_string_of_jsbytes("52101"), + cst_1$67=caml_string_of_jsbytes("1"), + cst_55555=caml_string_of_jsbytes("55555"), + cst_2$32=caml_string_of_jsbytes("2"), + cst_59454=caml_string_of_jsbytes("59454"), + cst_3$17=caml_string_of_jsbytes("3"), + cst_63369=caml_string_of_jsbytes("63369"), + cst_4$13=caml_string_of_jsbytes("4"), + cst_7089=caml_string_of_jsbytes("7089"), + cst_68350=caml_string_of_jsbytes("68350"), + cst_0$127=caml_string_of_jsbytes("0"), + cst_40643=caml_string_of_jsbytes("40643"), + cst_47433=caml_string_of_jsbytes("47433"), + cst_1$68=caml_string_of_jsbytes("1"), + cst_50575=caml_string_of_jsbytes("50575"), + cst_2$33=caml_string_of_jsbytes("2"), + cst_54138=caml_string_of_jsbytes("54138"), + cst_3$18=caml_string_of_jsbytes("3"), + cst_57687=caml_string_of_jsbytes("57687"), + cst_4$14=caml_string_of_jsbytes("4"), + cst_6407=caml_string_of_jsbytes("6407"), + cst_61469=caml_string_of_jsbytes("61469"), + cst_0$128=caml_string_of_jsbytes("0"), + cst_38578=caml_string_of_jsbytes("38578"), + cst_44869=caml_string_of_jsbytes("44869"), + cst_1$69=caml_string_of_jsbytes("1"), + cst_47602=caml_string_of_jsbytes("47602"), + cst_2$34=caml_string_of_jsbytes("2"), + cst_50744=caml_string_of_jsbytes("50744"), + cst_3$19=caml_string_of_jsbytes("3"), + cst_53884=caml_string_of_jsbytes("53884"), + cst_4$15=caml_string_of_jsbytes("4"), + cst_5946=caml_string_of_jsbytes("5946"), + cst_57416=caml_string_of_jsbytes("57416"), + cst_1000$1=caml_string_of_jsbytes("1000"), + cst_500$0=caml_string_of_jsbytes("500"), + cst_121726=caml_string_of_jsbytes("121726"), + cst_0$124=caml_string_of_jsbytes("0"), + cst_0$125=caml_string_of_jsbytes("0"), + cst_0$122=caml_string_of_jsbytes("0"), + cst_0$123=caml_string_of_jsbytes("0"), + cst_0$121=caml_string_of_jsbytes("0"), + cst_0$119=caml_string_of_jsbytes("0"), + cst_0$120=caml_string_of_jsbytes("0"), + cst_100000$3=caml_string_of_jsbytes("100000."), + cst_100000$4=caml_string_of_jsbytes("100000."), + cst_100000$1=caml_string_of_jsbytes("100000."), + cst_100000$2=caml_string_of_jsbytes("100000."), + cst_100000=caml_string_of_jsbytes("100000."), + cst_100000$0=caml_string_of_jsbytes("100000."), + cst_50=caml_string_of_jsbytes("50"), + cst_0$117=caml_string_of_jsbytes("0"), + cst_0$118=caml_string_of_jsbytes("0"), + cst_0_45$3=caml_string_of_jsbytes("0.45"), + cst_0$115=caml_string_of_jsbytes("0."), + cst_0_75$5=caml_string_of_jsbytes("0.75"), + cst_0_45$4=caml_string_of_jsbytes("0.45"), + cst_0_0045$5=caml_string_of_jsbytes("0.0045"), + cst_0_0045$6=caml_string_of_jsbytes("0.0045"), + cst_0_75$6=caml_string_of_jsbytes("0.75"), + cst_0_75$7=caml_string_of_jsbytes("0.75"), + cst_0_0068$1=caml_string_of_jsbytes("0.0068"), + cst_0_3$1=caml_string_of_jsbytes("0.3"), + cst_0_0045$7=caml_string_of_jsbytes("0.0045"), + cst_0$116=caml_string_of_jsbytes("0."), + cst_0_45$1=caml_string_of_jsbytes("0.45"), + cst_0$113=caml_string_of_jsbytes("0."), + cst_0_75$2=caml_string_of_jsbytes("0.75"), + cst_0_45$2=caml_string_of_jsbytes("0.45"), + cst_0_0045$2=caml_string_of_jsbytes("0.0045"), + cst_0_0045$3=caml_string_of_jsbytes("0.0045"), + cst_0_75$3=caml_string_of_jsbytes("0.75"), + cst_0_75$4=caml_string_of_jsbytes("0.75"), + cst_0_0068$0=caml_string_of_jsbytes("0.0068"), + cst_0_3$0=caml_string_of_jsbytes("0.3"), + cst_0_0045$4=caml_string_of_jsbytes("0.0045"), + cst_0$114=caml_string_of_jsbytes("0."), + cst_0_45=caml_string_of_jsbytes("0.45"), + cst_0$111=caml_string_of_jsbytes("0."), + cst_0_75=caml_string_of_jsbytes("0.75"), + cst_0_45$0=caml_string_of_jsbytes("0.45"), + cst_0_0045=caml_string_of_jsbytes("0.0045"), + cst_0_0045$0=caml_string_of_jsbytes("0.0045"), + cst_0_75$0=caml_string_of_jsbytes("0.75"), + cst_0_75$1=caml_string_of_jsbytes("0.75"), + cst_0_0068=caml_string_of_jsbytes("0.0068"), + cst_0_3=caml_string_of_jsbytes("0.3"), + cst_0_0045$1=caml_string_of_jsbytes("0.0045"), + cst_0$112=caml_string_of_jsbytes("0."), + cst_0$109=caml_string_of_jsbytes("0"), + cst_0$110=caml_string_of_jsbytes("0"), + cst_100$3=caml_string_of_jsbytes("100."), + cst_100$4=caml_string_of_jsbytes("100."), + cst_100$1=caml_string_of_jsbytes("100."), + cst_100$2=caml_string_of_jsbytes("100."), + cst_100=caml_string_of_jsbytes("100."), + cst_100$0=caml_string_of_jsbytes("100."), + cst_3663=caml_string_of_jsbytes("3663"), + cst_0_085$3=caml_string_of_jsbytes("0.085"), + cst_0_085$4=caml_string_of_jsbytes("0.085"), + cst_3663$0=caml_string_of_jsbytes("3663"), + cst_3539=caml_string_of_jsbytes("3539"), + cst_0_085$1=caml_string_of_jsbytes("0.085"), + cst_0_085$2=caml_string_of_jsbytes("0.085"), + cst_3539$0=caml_string_of_jsbytes("3539"), + cst_3524=caml_string_of_jsbytes("3524"), + cst_0_085=caml_string_of_jsbytes("0.085"), + cst_0_085$0=caml_string_of_jsbytes("0.085"), + cst_3524$0=caml_string_of_jsbytes("3524"), + cst_0$108=caml_string_of_jsbytes("0"), + cst_3_4=caml_string_of_jsbytes("3.4"), + cst_2_5$2=caml_string_of_jsbytes("2.5"), + cst_2_5$3=caml_string_of_jsbytes("2.5"), + cst_4$12=caml_string_of_jsbytes("4."), + cst_3_1=caml_string_of_jsbytes("3.1"), + cst_3_1$0=caml_string_of_jsbytes("3.1"), + cst_3$16=caml_string_of_jsbytes("3."), + cst_2$31=caml_string_of_jsbytes("2."), + cst_1272$0=caml_string_of_jsbytes("1272"), + cst_2805=caml_string_of_jsbytes("2805"), + cst_5612$0=caml_string_of_jsbytes("5612"), + cst_1229$0=caml_string_of_jsbytes("1229"), + cst_2710=caml_string_of_jsbytes("2710"), + cst_5422$0=caml_string_of_jsbytes("5422"), + cst_1224$0=caml_string_of_jsbytes("1224"), + cst_2699=caml_string_of_jsbytes("2699"), + cst_5399$0=caml_string_of_jsbytes("5399"), + cst_1272=caml_string_of_jsbytes("1272"), + cst_5612=caml_string_of_jsbytes("5612"), + cst_1229=caml_string_of_jsbytes("1229"), + cst_5422=caml_string_of_jsbytes("5422"), + cst_1224=caml_string_of_jsbytes("1224"), + cst_5399=caml_string_of_jsbytes("5399"), + cst_0$107=caml_string_of_jsbytes("0"), + cst_23138$0=caml_string_of_jsbytes("23138"), + cst_20165$0=caml_string_of_jsbytes("20165"), + cst_18900$0=caml_string_of_jsbytes("18900"), + cst_0$106=caml_string_of_jsbytes("0"), + cst_27905=caml_string_of_jsbytes("27905"), + cst_24683=caml_string_of_jsbytes("24683"), + cst_22911=caml_string_of_jsbytes("22911"), + cst_1$66=caml_string_of_jsbytes("1"), + cst_1$63=caml_string_of_jsbytes("1"), + cst_4576=caml_string_of_jsbytes("4576"), + cst_31539=caml_string_of_jsbytes("31539"), + cst_1$64=caml_string_of_jsbytes("1"), + cst_4043=caml_string_of_jsbytes("4043"), + cst_27774=caml_string_of_jsbytes("27774"), + cst_1$65=caml_string_of_jsbytes("1"), + cst_3682=caml_string_of_jsbytes("3682"), + cst_25689=caml_string_of_jsbytes("25689"), + cst_0$105=caml_string_of_jsbytes("0"), + cst_22355$0=caml_string_of_jsbytes("22355"), + cst_19484$0=caml_string_of_jsbytes("19484"), + cst_18261$0=caml_string_of_jsbytes("18261"), + cst_0$104=caml_string_of_jsbytes("0"), + cst_26962=caml_string_of_jsbytes("26962"), + cst_23848=caml_string_of_jsbytes("23848"), + cst_22136=caml_string_of_jsbytes("22136"), + cst_1$62=caml_string_of_jsbytes("1"), + cst_1$59=caml_string_of_jsbytes("1"), + cst_4421=caml_string_of_jsbytes("4421"), + cst_30473=caml_string_of_jsbytes("30473"), + cst_1$60=caml_string_of_jsbytes("1"), + cst_3906=caml_string_of_jsbytes("3906"), + cst_26835=caml_string_of_jsbytes("26835"), + cst_1$61=caml_string_of_jsbytes("1"), + cst_3557=caml_string_of_jsbytes("3557"), + cst_24821=caml_string_of_jsbytes("24821"), + cst_0$103=caml_string_of_jsbytes("0"), + cst_22262$0=caml_string_of_jsbytes("22262"), + cst_19402$0=caml_string_of_jsbytes("19402"), + cst_18185$0=caml_string_of_jsbytes("18185"), + cst_0$102=caml_string_of_jsbytes("0"), + cst_26849=caml_string_of_jsbytes("26849"), + cst_23748=caml_string_of_jsbytes("23748"), + cst_22044=caml_string_of_jsbytes("22044"), + cst_1$58=caml_string_of_jsbytes("1"), + cst_1$55=caml_string_of_jsbytes("1"), + cst_4403=caml_string_of_jsbytes("4403"), + cst_30345=caml_string_of_jsbytes("30345"), + cst_1$56=caml_string_of_jsbytes("1"), + cst_3890=caml_string_of_jsbytes("3890"), + cst_26723=caml_string_of_jsbytes("26723"), + cst_1$57=caml_string_of_jsbytes("1"), + cst_3542=caml_string_of_jsbytes("3542"), + cst_24717=caml_string_of_jsbytes("24717"), + cst_23138=caml_string_of_jsbytes("23138"), + cst_20165=caml_string_of_jsbytes("20165"), + cst_18900=caml_string_of_jsbytes("18900"), + cst_22355=caml_string_of_jsbytes("22355"), + cst_19484=caml_string_of_jsbytes("19484"), + cst_18261=caml_string_of_jsbytes("18261"), + cst_22262=caml_string_of_jsbytes("22262"), + cst_19402=caml_string_of_jsbytes("19402"), + cst_18185=caml_string_of_jsbytes("18185"), + cst_27765=caml_string_of_jsbytes("27765"), + cst_24198=caml_string_of_jsbytes("24198"), + cst_22680=caml_string_of_jsbytes("22680"), + cst_26826=caml_string_of_jsbytes("26826"), + cst_23380=caml_string_of_jsbytes("23380"), + cst_21913=caml_string_of_jsbytes("21913"), + cst_26714=caml_string_of_jsbytes("26714"), + cst_23282=caml_string_of_jsbytes("23282"), + cst_21821=caml_string_of_jsbytes("21821"), + cst_0$101=caml_string_of_jsbytes("0"), + cst_30850=caml_string_of_jsbytes("30850"), + cst_26887=caml_string_of_jsbytes("26887"), + cst_25200=caml_string_of_jsbytes("25200"), + cst_0$100=caml_string_of_jsbytes("0"), + cst_37207=caml_string_of_jsbytes("37207"), + cst_32910=caml_string_of_jsbytes("32910"), + cst_30548=caml_string_of_jsbytes("30548"), + cst_1$54=caml_string_of_jsbytes("1"), + cst_1$51=caml_string_of_jsbytes("1"), + cst_6101=caml_string_of_jsbytes("6101"), + cst_42052=caml_string_of_jsbytes("42052"), + cst_1$52=caml_string_of_jsbytes("1"), + cst_5390=caml_string_of_jsbytes("5390"), + cst_37032=caml_string_of_jsbytes("37032"), + cst_1$53=caml_string_of_jsbytes("1"), + cst_4909=caml_string_of_jsbytes("4909"), + cst_34252=caml_string_of_jsbytes("34252"), + cst_0$99=caml_string_of_jsbytes("0"), + cst_29807=caml_string_of_jsbytes("29807"), + cst_25978$1=caml_string_of_jsbytes("25978"), + cst_24348=caml_string_of_jsbytes("24348"), + cst_0$98=caml_string_of_jsbytes("0"), + cst_35949=caml_string_of_jsbytes("35949"), + cst_31797$1=caml_string_of_jsbytes("31797"), + cst_29515=caml_string_of_jsbytes("29515"), + cst_1$50=caml_string_of_jsbytes("1"), + cst_1$47=caml_string_of_jsbytes("1"), + cst_5895=caml_string_of_jsbytes("5895"), + cst_40630=caml_string_of_jsbytes("40630"), + cst_1$48=caml_string_of_jsbytes("1"), + cst_5208$1=caml_string_of_jsbytes("5208"), + cst_35780$1=caml_string_of_jsbytes("35780"), + cst_1$49=caml_string_of_jsbytes("1"), + cst_4743=caml_string_of_jsbytes("4743"), + cst_33094=caml_string_of_jsbytes("33094"), + cst_0$97=caml_string_of_jsbytes("0"), + cst_29682=caml_string_of_jsbytes("29682"), + cst_25859=caml_string_of_jsbytes("25859"), + cst_24246=caml_string_of_jsbytes("24246"), + cst_0$96=caml_string_of_jsbytes("0"), + cst_35799=caml_string_of_jsbytes("35799"), + cst_31664$0=caml_string_of_jsbytes("31664"), + cst_29392=caml_string_of_jsbytes("29392"), + cst_1$46=caml_string_of_jsbytes("1"), + cst_1$43=caml_string_of_jsbytes("1"), + cst_5870=caml_string_of_jsbytes("5870"), + cst_40460=caml_string_of_jsbytes("40460"), + cst_1$44=caml_string_of_jsbytes("1"), + cst_5186$0=caml_string_of_jsbytes("5186"), + cst_35630$0=caml_string_of_jsbytes("35630"), + cst_1$45=caml_string_of_jsbytes("1"), + cst_4723=caml_string_of_jsbytes("4723"), + cst_32956=caml_string_of_jsbytes("32956"), + cst_0$95=caml_string_of_jsbytes("0"), + cst_1000=caml_string_of_jsbytes("1000"), + cst_1000$0=caml_string_of_jsbytes("1000"), + cst_0$94=caml_string_of_jsbytes("0"), + cst_25978$0=caml_string_of_jsbytes("25978"), + cst_31797$0=caml_string_of_jsbytes("31797"), + cst_1$42=caml_string_of_jsbytes("1"), + cst_5208$0=caml_string_of_jsbytes("5208"), + cst_35780$0=caml_string_of_jsbytes("35780"), + cst_0$93=caml_string_of_jsbytes("0"), + cst_25978=caml_string_of_jsbytes("25978"), + cst_31797=caml_string_of_jsbytes("31797"), + cst_1$41=caml_string_of_jsbytes("1"), + cst_5208=caml_string_of_jsbytes("5208"), + cst_35780=caml_string_of_jsbytes("35780"), + cst_0$92=caml_string_of_jsbytes("0"), + cst_25869=caml_string_of_jsbytes("25869"), + cst_31664=caml_string_of_jsbytes("31664"), + cst_1$40=caml_string_of_jsbytes("1"), + cst_5186=caml_string_of_jsbytes("5186"), + cst_35630=caml_string_of_jsbytes("35630"), + cst_0$91=caml_string_of_jsbytes("0"), + cst_494900=caml_string_of_jsbytes("494900"), + cst_709000=caml_string_of_jsbytes("709000"), + cst_1$39=caml_string_of_jsbytes("1"), + cst_845600=caml_string_of_jsbytes("845600"), + cst_2$30=caml_string_of_jsbytes("2"), + cst_864600=caml_string_of_jsbytes("864600"), + cst_3$15=caml_string_of_jsbytes("3"), + cst_897700=caml_string_of_jsbytes("897700"), + cst_4$11=caml_string_of_jsbytes("4"), + cst_931100=caml_string_of_jsbytes("931100"), + cst_5$5=caml_string_of_jsbytes("5"), + cst_964200=caml_string_of_jsbytes("964200"), + cst_6$13=caml_string_of_jsbytes("6"), + cst_997500=caml_string_of_jsbytes("997500"), + cst_6$14=caml_string_of_jsbytes("6"), + cst_32800=caml_string_of_jsbytes("32800"), + cst_997500$0=caml_string_of_jsbytes("997500"), + cst_0$90=caml_string_of_jsbytes("0"), + cst_487000=caml_string_of_jsbytes("487000"), + cst_697700=caml_string_of_jsbytes("697700"), + cst_1$38=caml_string_of_jsbytes("1"), + cst_832200$0=caml_string_of_jsbytes("832200"), + cst_2$29=caml_string_of_jsbytes("2"), + cst_850900=caml_string_of_jsbytes("850900"), + cst_3$14=caml_string_of_jsbytes("3"), + cst_883400=caml_string_of_jsbytes("883400"), + cst_4$10=caml_string_of_jsbytes("4"), + cst_916300=caml_string_of_jsbytes("916300"), + cst_5$4=caml_string_of_jsbytes("5"), + cst_948800=caml_string_of_jsbytes("948800"), + cst_6$11=caml_string_of_jsbytes("6"), + cst_981600=caml_string_of_jsbytes("981600"), + cst_6$12=caml_string_of_jsbytes("6"), + cst_32300=caml_string_of_jsbytes("32300"), + cst_981600$0=caml_string_of_jsbytes("981600"), + cst_0$89=caml_string_of_jsbytes("0"), + cst_468300=caml_string_of_jsbytes("468300"), + cst_670900=caml_string_of_jsbytes("670900"), + cst_1$37=caml_string_of_jsbytes("1"), + cst_800200=caml_string_of_jsbytes("800200"), + cst_2$28=caml_string_of_jsbytes("2"), + cst_819200=caml_string_of_jsbytes("819200"), + cst_3$13=caml_string_of_jsbytes("3"), + cst_849500=caml_string_of_jsbytes("849500"), + cst_4$9=caml_string_of_jsbytes("4"), + cst_881100=caml_string_of_jsbytes("881100"), + cst_5$3=caml_string_of_jsbytes("5"), + cst_912400=caml_string_of_jsbytes("912400"), + cst_6$9=caml_string_of_jsbytes("6"), + cst_943900=caml_string_of_jsbytes("943900"), + cst_6$10=caml_string_of_jsbytes("6"), + cst_31100=caml_string_of_jsbytes("31100"), + cst_943900$0=caml_string_of_jsbytes("943900"), + cst_0$88=caml_string_of_jsbytes("0"), + cst_458800=caml_string_of_jsbytes("458800"), + cst_657200=caml_string_of_jsbytes("657200"), + cst_1$36=caml_string_of_jsbytes("1"), + cst_783900=caml_string_of_jsbytes("783900"), + cst_2$27=caml_string_of_jsbytes("2"), + cst_801500=caml_string_of_jsbytes("801500"), + cst_3$12=caml_string_of_jsbytes("3"), + cst_832200=caml_string_of_jsbytes("832200"), + cst_4$8=caml_string_of_jsbytes("4"), + cst_863100=caml_string_of_jsbytes("863100"), + cst_5$2=caml_string_of_jsbytes("5"), + cst_893800=caml_string_of_jsbytes("893800"), + cst_6$7=caml_string_of_jsbytes("6"), + cst_924600=caml_string_of_jsbytes("924600"), + cst_6$8=caml_string_of_jsbytes("6"), + cst_30500=caml_string_of_jsbytes("30500"), + cst_924600$0=caml_string_of_jsbytes("924600"), + cst_0$87=caml_string_of_jsbytes("0"), + cst_0_0283$1=caml_string_of_jsbytes("0.0283"), + cst_0_0315$1=caml_string_of_jsbytes("0.0315"), + cst_1$35=caml_string_of_jsbytes("1"), + cst_0_027$1=caml_string_of_jsbytes("0.027"), + cst_2$26=caml_string_of_jsbytes("2"), + cst_0_0238$1=caml_string_of_jsbytes("0.0238"), + cst_3$11=caml_string_of_jsbytes("3"), + cst_0_0201$1=caml_string_of_jsbytes("0.0201"), + cst_4$7=caml_string_of_jsbytes("4"), + cst_0_0185$1=caml_string_of_jsbytes("0.0185"), + cst_5$1=caml_string_of_jsbytes("5"), + cst_0_0179$1=caml_string_of_jsbytes("0.0179"), + cst_6$5=caml_string_of_jsbytes("6"), + cst_0_0173$3=caml_string_of_jsbytes("0.0173"), + cst_6$6=caml_string_of_jsbytes("6"), + cst_0_0006$1=caml_string_of_jsbytes("0.0006"), + cst_0_0173$4=caml_string_of_jsbytes("0.0173"), + cst_0$86=caml_string_of_jsbytes("0"), + cst_0_0283$0=caml_string_of_jsbytes("0.0283"), + cst_0_0315$0=caml_string_of_jsbytes("0.0315"), + cst_1$34=caml_string_of_jsbytes("1"), + cst_0_027$0=caml_string_of_jsbytes("0.027"), + cst_2$25=caml_string_of_jsbytes("2"), + cst_0_0238$0=caml_string_of_jsbytes("0.0238"), + cst_3$10=caml_string_of_jsbytes("3"), + cst_0_0201$0=caml_string_of_jsbytes("0.0201"), + cst_4$6=caml_string_of_jsbytes("4"), + cst_0_0185$0=caml_string_of_jsbytes("0.0185"), + cst_5$0=caml_string_of_jsbytes("5"), + cst_0_0179$0=caml_string_of_jsbytes("0.0179"), + cst_6$3=caml_string_of_jsbytes("6"), + cst_0_0173$1=caml_string_of_jsbytes("0.0173"), + cst_6$4=caml_string_of_jsbytes("6"), + cst_0_0006$0=caml_string_of_jsbytes("0.0006"), + cst_0_0173$2=caml_string_of_jsbytes("0.0173"), + cst_0$85=caml_string_of_jsbytes("0"), + cst_0_0283=caml_string_of_jsbytes("0.0283"), + cst_0_0315=caml_string_of_jsbytes("0.0315"), + cst_1$33=caml_string_of_jsbytes("1"), + cst_0_027=caml_string_of_jsbytes("0.027"), + cst_2$24=caml_string_of_jsbytes("2"), + cst_0_0238=caml_string_of_jsbytes("0.0238"), + cst_3$9=caml_string_of_jsbytes("3"), + cst_0_0201=caml_string_of_jsbytes("0.0201"), + cst_4$5=caml_string_of_jsbytes("4"), + cst_0_0185=caml_string_of_jsbytes("0.0185"), + cst_5=caml_string_of_jsbytes("5"), + cst_0_0179=caml_string_of_jsbytes("0.0179"), + cst_6$1=caml_string_of_jsbytes("6"), + cst_0_0173=caml_string_of_jsbytes("0.0173"), + cst_6$2=caml_string_of_jsbytes("6"), + cst_0_0006=caml_string_of_jsbytes("0.0006"), + cst_0_0173$0=caml_string_of_jsbytes("0.0173"), + cst_500=caml_string_of_jsbytes("500"), + cst_0_98=caml_string_of_jsbytes("0.98"), + cst_2_5$4=caml_string_of_jsbytes("2.5"), + cst_0_98$0=caml_string_of_jsbytes("0.98"), + cst_0_9=caml_string_of_jsbytes("0.9"), + cst_1003$0=caml_string_of_jsbytes("1003"), + cst_757$0=caml_string_of_jsbytes("757"), + cst_1015$0=caml_string_of_jsbytes("1015"), + cst_766$0=caml_string_of_jsbytes("766"), + cst_1025$0=caml_string_of_jsbytes("1025"), + cst_774$0=caml_string_of_jsbytes("774"), + cst_1057$0=caml_string_of_jsbytes("1057"), + cst_798$0=caml_string_of_jsbytes("798"), + cst_1085$0=caml_string_of_jsbytes("1085"), + cst_819$0=caml_string_of_jsbytes("819"), + cst_1107$0=caml_string_of_jsbytes("1107"), + cst_835$0=caml_string_of_jsbytes("835"), + cst_1127$0=caml_string_of_jsbytes("1127"), + cst_851$0=caml_string_of_jsbytes("851"), + cst_41316$0=caml_string_of_jsbytes("41316"), + cst_41440$0=caml_string_of_jsbytes("41440"), + cst_41481$0=caml_string_of_jsbytes("41481"), + cst_42228$0=caml_string_of_jsbytes("42228"), + cst_0$84=caml_string_of_jsbytes("0"), + cst_0$83=caml_string_of_jsbytes("0"), + cst_0$81=caml_string_of_jsbytes("0"), + cst_0$82=caml_string_of_jsbytes("0"), + cst_2$23=caml_string_of_jsbytes("2."), + cst_0$79=caml_string_of_jsbytes("0"), + cst_0$80=caml_string_of_jsbytes("0"), + cst_2$22=caml_string_of_jsbytes("2."), + cst_6$0=caml_string_of_jsbytes("6."), + cst_1$32=caml_string_of_jsbytes("1."), + cst_2$21=caml_string_of_jsbytes("2."), + cst_0$78=caml_string_of_jsbytes("0"), + cst_6=caml_string_of_jsbytes("6."), + cst_1$31=caml_string_of_jsbytes("1."), + cst_2$20=caml_string_of_jsbytes("2."), + cst_0$77=caml_string_of_jsbytes("0"), + cst_12$13=caml_string_of_jsbytes("12."), + cst_1952=caml_string_of_jsbytes("1952"), + cst_1953=caml_string_of_jsbytes("1953"), + cst_1954=caml_string_of_jsbytes("1954"), + cst_0$76=caml_string_of_jsbytes("0"), + cst_1_4$0=caml_string_of_jsbytes("1.4"), + cst_1_8$0=caml_string_of_jsbytes("1.8"), + cst_1$30=caml_string_of_jsbytes("1"), + cst_2_5$1=caml_string_of_jsbytes("2.5"), + cst_2$19=caml_string_of_jsbytes("2"), + cst_3$7=caml_string_of_jsbytes("3."), + cst_3$8=caml_string_of_jsbytes("3"), + cst_3_7$1=caml_string_of_jsbytes("3.7"), + cst_4$3=caml_string_of_jsbytes("4"), + cst_4_3$3=caml_string_of_jsbytes("4.3"), + cst_4$4=caml_string_of_jsbytes("4"), + cst_0_5$3=caml_string_of_jsbytes("0.5"), + cst_4_3$4=caml_string_of_jsbytes("4.3"), + cst_0$75=caml_string_of_jsbytes("0"), + cst_1_2=caml_string_of_jsbytes("1.2"), + cst_1_5=caml_string_of_jsbytes("1.5"), + cst_1$29=caml_string_of_jsbytes("1"), + cst_2_5$0=caml_string_of_jsbytes("2.5"), + cst_2$18=caml_string_of_jsbytes("2"), + cst_3$5=caml_string_of_jsbytes("3."), + cst_3$6=caml_string_of_jsbytes("3"), + cst_3_7$0=caml_string_of_jsbytes("3.7"), + cst_4$1=caml_string_of_jsbytes("4"), + cst_4_3$1=caml_string_of_jsbytes("4.3"), + cst_4$2=caml_string_of_jsbytes("4"), + cst_0_5$2=caml_string_of_jsbytes("0.5"), + cst_4_3$2=caml_string_of_jsbytes("4.3"), + cst_0$74=caml_string_of_jsbytes("0"), + cst_1_4=caml_string_of_jsbytes("1.4"), + cst_1_8=caml_string_of_jsbytes("1.8"), + cst_1$28=caml_string_of_jsbytes("1"), + cst_2_5=caml_string_of_jsbytes("2.5"), + cst_2$17=caml_string_of_jsbytes("2"), + cst_3$3=caml_string_of_jsbytes("3."), + cst_3$4=caml_string_of_jsbytes("3"), + cst_3_7=caml_string_of_jsbytes("3.7"), + cst_4=caml_string_of_jsbytes("4"), + cst_4_3=caml_string_of_jsbytes("4.3"), + cst_4$0=caml_string_of_jsbytes("4"), + cst_0_5$1=caml_string_of_jsbytes("0.5"), + cst_4_3$0=caml_string_of_jsbytes("4.3"), + cst_0$72=caml_string_of_jsbytes("0."), + cst_12$12=caml_string_of_jsbytes("12."), + cst_0$73=caml_string_of_jsbytes("0."), + cst_0$70=caml_string_of_jsbytes("0."), + cst_12$11=caml_string_of_jsbytes("12."), + cst_0$71=caml_string_of_jsbytes("0."), + cst_0_328=caml_string_of_jsbytes("0.328"), + cst_409505=caml_string_of_jsbytes("409505"), + cst_0_232$0=caml_string_of_jsbytes("0.232"), + cst_262985=caml_string_of_jsbytes("262985"), + cst_409505$0=caml_string_of_jsbytes("409505"), + cst_0_208=caml_string_of_jsbytes("0.208"), + cst_204761=caml_string_of_jsbytes("204761"), + cst_262985$0=caml_string_of_jsbytes("262985"), + cst_0_024=caml_string_of_jsbytes("0.024"), + cst_142303=caml_string_of_jsbytes("142303"), + cst_204761$0=caml_string_of_jsbytes("204761"), + cst_0$68=caml_string_of_jsbytes("0."), + cst_0$69=caml_string_of_jsbytes("0"), + cst_142303$0=caml_string_of_jsbytes("142303"), + cst_0_48=caml_string_of_jsbytes("0.48"), + cst_633129=caml_string_of_jsbytes("633129"), + cst_0_32$1=caml_string_of_jsbytes("0.32"), + cst_535744=caml_string_of_jsbytes("535744"), + cst_633129$0=caml_string_of_jsbytes("633129"), + cst_0_264=caml_string_of_jsbytes("0.264"), + cst_389618=caml_string_of_jsbytes("389618"), + cst_535744$0=caml_string_of_jsbytes("535744"), + cst_0_216=caml_string_of_jsbytes("0.216"), + cst_267871=caml_string_of_jsbytes("267871"), + cst_389618$0=caml_string_of_jsbytes("389618"), + cst_0_104=caml_string_of_jsbytes("0.104"), + cst_194810=caml_string_of_jsbytes("194810"), + cst_267871$0=caml_string_of_jsbytes("267871"), + cst_0_04$0=caml_string_of_jsbytes("0.04"), + cst_0$67=caml_string_of_jsbytes("0"), + cst_194810$0=caml_string_of_jsbytes("194810"), + cst_7632=caml_string_of_jsbytes("7632"), + cst_4557=caml_string_of_jsbytes("4557"), + cst_0_005=caml_string_of_jsbytes("0.005"), + cst_r_sidence_in$3=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), + cst_prestation_courante_in$0= + caml_string_of_jsbytes("prestation_courante_in"), + cst_date_courante_in$20=caml_string_of_jsbytes("date_courante_in"), + cst_r_sidence_in$2=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), + cst_date_courante_in$19=caml_string_of_jsbytes("date_courante_in"), + cst_date_courante_in$18=caml_string_of_jsbytes("date_courante_in"), + cst_ressources_m_nage_prises_e$0= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_prises_en_compte_in"), + cst_date_courante_in$17=caml_string_of_jsbytes("date_courante_in"), + cst_demandeur_in$4=caml_string_of_jsbytes("demandeur_in"), + cst_m_nage_in$4=caml_string_of_jsbytes("m\xc3\xa9nage_in"), + cst_ressources_m_nage_prises_e= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_prises_en_compte_in"), + cst_date_courante_in$16=caml_string_of_jsbytes("date_courante_in"), + cst_demandeur_in$3=caml_string_of_jsbytes("demandeur_in"), + cst_m_nage_in$3=caml_string_of_jsbytes("m\xc3\xa9nage_in"), + cst_montant_dette_in=caml_string_of_jsbytes("montant_dette_in"), + cst_d_pense_logement_in= + caml_string_of_jsbytes("d\xc3\xa9pense_logement_in"), + cst_montant_charges_in=caml_string_of_jsbytes("montant_charges_in"), + cst_montant_apl_in=caml_string_of_jsbytes("montant_apl_in"), + cst_aide_vers_e_in=caml_string_of_jsbytes("aide_vers\xc3\xa9e_in"), + cst_mode_occupation_in$2=caml_string_of_jsbytes("mode_occupation_in"), + cst_date_naissance_assur_in= + caml_string_of_jsbytes("date_naissance_assur\xc3\xa9_in"), + cst_type_aide_in$2=caml_string_of_jsbytes("type_aide_in"), + cst_date_courante_in$15=caml_string_of_jsbytes("date_courante_in"), + cst_zone_in$6=caml_string_of_jsbytes("zone_in"), + cst_nombre_personnes_charge_in$8= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_situation_familiale_in$1= + caml_string_of_jsbytes("situation_familiale_in"), + cst_ressources_m_nage_sans_arr$0= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_sans_arrondi_in"), + cst_mode_occupation_in$1=caml_string_of_jsbytes("mode_occupation_in"), + cst_cat_gorie_quivalence_loyer$0= + caml_string_of_jsbytes + ("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16_in"), + cst_date_courante_in$14=caml_string_of_jsbytes("date_courante_in"), + cst_zone_in$5=caml_string_of_jsbytes("zone_in"), + cst_situation_familiale_calcul$6= + caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), + cst_nombre_personnes_charge_in$7= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_ressources_m_nage_arrondie$6= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), + cst_redevance_in$0=caml_string_of_jsbytes("redevance_in"), + cst_date_conventionnement_in$0= + caml_string_of_jsbytes("date_conventionnement_in"), + cst_type_logement_foyer_in$0= + caml_string_of_jsbytes("type_logement_foyer_in"), + cst_copropri_t_in$0= + caml_string_of_jsbytes("copropri\xc3\xa9t\xc3\xa9_in"), + cst_charges_mensuelles_pr_t_in= + caml_string_of_jsbytes("charges_mensuelles_pr\xc3\xaat_in"), + cst_date_entr_e_logement_in$0= + caml_string_of_jsbytes("date_entr\xc3\xa9e_logement_in"), + cst_local_habit_premi_re_fois_$1= + caml_string_of_jsbytes + ("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire_in"), + cst_type_travaux_logement_in$0= + caml_string_of_jsbytes("type_travaux_logement_in"), + cst_date_signature_pr_t_in$0= + caml_string_of_jsbytes("date_signature_pr\xc3\xaat_in"), + cst_situation_r822_11_13_17_in$0= + caml_string_of_jsbytes("situation_r822_11_13_17_in"), + cst_mensualit_principale_in$0= + caml_string_of_jsbytes("mensualit\xc3\xa9_principale_in"), + cst_date_courante_in$13=caml_string_of_jsbytes("date_courante_in"), + cst_zone_in$4=caml_string_of_jsbytes("zone_in"), + cst_situation_familiale_calcul$5= + caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), + cst_nombre_personnes_charge_in$6= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_ressources_m_nage_arrondie$5= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_base_in"), + cst_changement_logement_d842_4$0= + caml_string_of_jsbytes("changement_logement_d842_4_in"), + cst_logement_meubl_d842_2_in$0= + caml_string_of_jsbytes("logement_meubl\xc3\xa9_d842_2_in"), + cst_r_duction_loyer_solidarit_$1= + caml_string_of_jsbytes("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_in"), + cst_colocation_in$0=caml_string_of_jsbytes("colocation_in"), + cst_type_aide_in$1=caml_string_of_jsbytes("type_aide_in"), + cst_g_es_ou_handicap_adultes_h$1= + caml_string_of_jsbytes + ("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers_in"), + cst_logement_est_chambre_in$0= + caml_string_of_jsbytes("logement_est_chambre_in"), + cst_zone_in$3=caml_string_of_jsbytes("zone_in"), + cst_situation_familiale_calcul$4= + caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), + cst_nombre_personnes_charge_in$5= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_date_courante_in$12=caml_string_of_jsbytes("date_courante_in"), + cst_b_n_ficiaire_aide_adulte_o$1= + caml_string_of_jsbytes + ("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s_in"), + cst_ressources_m_nage_arrondie$4= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), + cst_loyer_principal_in=caml_string_of_jsbytes("loyer_principal_in"), + cst_date_courante_in$11=caml_string_of_jsbytes("date_courante_in"), + cst_zone_in$2=caml_string_of_jsbytes("zone_in"), + cst_nombre_personnes_charge_in$4= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_situation_familiale_in$0= + caml_string_of_jsbytes("situation_familiale_in"), + cst_ressources_m_nage_sans_arr= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_sans_arrondi_in"), + cst_type_aide_in$0=caml_string_of_jsbytes("type_aide_in"), + cst_mode_occupation_in$0=caml_string_of_jsbytes("mode_occupation_in"), + cst_date_courante_in$10=caml_string_of_jsbytes("date_courante_in"), + cst_anciennet_logement_in= + caml_string_of_jsbytes("anciennet\xc3\xa9_logement_in"), + cst_type_pr_t_in=caml_string_of_jsbytes("type_pr\xc3\xaat_in"), + cst_zone_in$1=caml_string_of_jsbytes("zone_in"), + cst_situation_r822_11_13_17_in= + caml_string_of_jsbytes("situation_r822_11_13_17_in"), + cst_copropri_t_in=caml_string_of_jsbytes("copropri\xc3\xa9t\xc3\xa9_in"), + cst_date_entr_e_logement_in= + caml_string_of_jsbytes("date_entr\xc3\xa9e_logement_in"), + cst_local_habit_premi_re_fois_$0= + caml_string_of_jsbytes + ("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire_in"), + cst_date_signature_pr_t_in= + caml_string_of_jsbytes("date_signature_pr\xc3\xaat_in"), + cst_type_travaux_logement_in= + caml_string_of_jsbytes("type_travaux_logement_in"), + cst_situation_familiale_calcul$3= + caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), + cst_nombre_personnes_charge_in$3= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_ressources_m_nage_arrondie$3= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), + cst_mensualit_principale_in= + caml_string_of_jsbytes("mensualit\xc3\xa9_principale_in"), + cst_situation_familiale_calcul$2= + caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), + cst_nombre_personnes_charge_in$2= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_n_nombre_parts_d832_25_in$0= + caml_string_of_jsbytes("n_nombre_parts_d832_25_in"), + cst_condition_2_du_832_25_in$1= + caml_string_of_jsbytes("condition_2_du_832_25_in"), + cst_redevance_in=caml_string_of_jsbytes("redevance_in"), + cst_date_courante_in$9=caml_string_of_jsbytes("date_courante_in"), + cst_zone_in$0=caml_string_of_jsbytes("zone_in"), + cst_situation_familiale_calcul$1= + caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), + cst_nombre_personnes_charge_in$1= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_ressources_m_nage_arrondie$2= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), + cst_date_conventionnement_in= + caml_string_of_jsbytes("date_conventionnement_in"), + cst_type_logement_foyer_in= + caml_string_of_jsbytes("type_logement_foyer_in"), + cst_situation_familiale_calcul$0= + caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), + cst_nombre_personnes_charge_in$0= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_condition_2_du_832_25_in$0= + caml_string_of_jsbytes("condition_2_du_832_25_in"), + cst_n_nombre_parts_d832_25_in= + caml_string_of_jsbytes("n_nombre_parts_d832_25_in"), + cst_condition_2_du_832_25_in= + caml_string_of_jsbytes("condition_2_du_832_25_in"), + cst_ressources_m_nage_arrondie$1= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), + cst_logement_meubl_d842_2_in= + caml_string_of_jsbytes("logement_meubl\xc3\xa9_d842_2_in"), + cst_r_duction_loyer_solidarit_$0= + caml_string_of_jsbytes("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_in"), + cst_colocation_in=caml_string_of_jsbytes("colocation_in"), + cst_type_aide_in=caml_string_of_jsbytes("type_aide_in"), + cst_g_es_ou_handicap_adultes_h$0= + caml_string_of_jsbytes + ("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers_in"), + cst_logement_est_chambre_in= + caml_string_of_jsbytes("logement_est_chambre_in"), + cst_zone_in=caml_string_of_jsbytes("zone_in"), + cst_situation_familiale_calcul= + caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), + cst_nombre_personnes_charge_in= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_date_courante_in$8=caml_string_of_jsbytes("date_courante_in"), + cst_b_n_ficiaire_aide_adulte_o$0= + caml_string_of_jsbytes + ("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s_in"), + cst_ressources_m_nage_arrondie$0= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), + cst_loyer_principal_base_in= + caml_string_of_jsbytes("loyer_principal_base_in"), + cst_date_courante_in$7=caml_string_of_jsbytes("date_courante_in"), + cst_ressources_m_nage_arrondie= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_base_in"), + cst_paiement_logement_distinct= + caml_string_of_jsbytes("paiement_logement_distinct_professionnel_in"), + cst_date_demande_ou_reexamen_d= + caml_string_of_jsbytes("date_demande_ou_reexamen_droit_in"), + cst_demandeur_poursuit_des_tud= + caml_string_of_jsbytes("demandeur_poursuit_des_\xc3\xa9tudes_in"), + cst_condition_ge_bourse_enseig= + caml_string_of_jsbytes + ("condition_\xc3\xa2ge_bourse_enseignement_sup\xc3\xa9rieur_in"), + cst_mode_occupation_in=caml_string_of_jsbytes("mode_occupation_in"), + cst_situation_familiale_in= + caml_string_of_jsbytes("situation_familiale_in"), + cst_personnes_charge_in= + caml_string_of_jsbytes("personnes_\xc3\xa0_charge_in"), + cst_conjoint_exerce_activit_r_= + caml_string_of_jsbytes + ("conjoint_exerce_activit\xc3\xa9_r\xc3\xa9mun\xc3\xa9r\xc3\xa9e_in"), + cst_demandeur_exerce_activit_r= + caml_string_of_jsbytes + ("demandeur_exerce_activit\xc3\xa9_r\xc3\xa9mun\xc3\xa9r\xc3\xa9e_in"), + cst_personnes_vivant_habituell= + caml_string_of_jsbytes("personnes_vivant_habituellement_foyer_in"), + cst_ressources_conjoint_in= + caml_string_of_jsbytes("ressources_conjoint_in"), + cst_ressources_demandeur_in= + caml_string_of_jsbytes("ressources_demandeur_in"), + cst_d_penses_justifi_es_r_elle= + caml_string_of_jsbytes + ("d\xc3\xa9penses_justifi\xc3\xa9es_r\xc3\xa9ellement_engag\xc3\xa9es_in"), + cst_date_courante_in$6=caml_string_of_jsbytes("date_courante_in"), + cst_demandeur_in$2=caml_string_of_jsbytes("demandeur_in"), + cst_m_nage_in$2=caml_string_of_jsbytes("m\xc3\xa9nage_in"), + cst_date_emm_nagement_in= + caml_string_of_jsbytes("date_emm\xc3\xa9nagement_in"), + cst_informations_in=caml_string_of_jsbytes("informations_in"), + cst_b_n_ficie_aide_personnalis= + caml_string_of_jsbytes + ("b\xc3\xa9n\xc3\xa9ficie_aide_personnalis\xc3\xa9e_logement_in"), + cst_demandeur_in$1=caml_string_of_jsbytes("demandeur_in"), + cst_m_nage_in$1=caml_string_of_jsbytes("m\xc3\xa9nage_in"), + cst_date_courante_in$5=caml_string_of_jsbytes("date_courante_in"), + cst_date_courante_in$4=caml_string_of_jsbytes("date_courante_in"), + cst_demandeur_in$0=caml_string_of_jsbytes("demandeur_in"), + cst_m_nage_in$0=caml_string_of_jsbytes("m\xc3\xa9nage_in"), + cst_condition_logement_surface= + caml_string_of_jsbytes("condition_logement_surface_in"), + cst_condition_logement_r_siden= + caml_string_of_jsbytes + ("condition_logement_r\xc3\xa9sidence_principale_in"), + cst_date_courante_in$3=caml_string_of_jsbytes("date_courante_in"), + cst_demandeur_in=caml_string_of_jsbytes("demandeur_in"), + cst_m_nage_in=caml_string_of_jsbytes("m\xc3\xa9nage_in"), + cst_enfant_na_tre_apr_s_quatri= + caml_string_of_jsbytes + ("enfant_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_quatri\xc3\xa8me_mois_grossesse"), + cst_condition_rattach_foyer_fi= + caml_string_of_jsbytes + ("condition_rattach\xc3\xa9_foyer_fiscal_parent_ifi"), + cst_situation_familiale=caml_string_of_jsbytes("situation_familiale"), + cst_nombre_autres_occupants_lo= + caml_string_of_jsbytes("nombre_autres_occupants_logement"), + cst_personnes_charge=caml_string_of_jsbytes("personnes_\xc3\xa0_charge"), + cst_logement=caml_string_of_jsbytes("logement"), + cst_prestations_re_ues= + caml_string_of_jsbytes("prestations_re\xc3\xa7ues"), + cst_zone=caml_string_of_jsbytes("zone"), + cst_surface_m_carr_s=caml_string_of_jsbytes("surface_m_carr\xc3\xa9s"), + cst_logement_decent_l89_462= + caml_string_of_jsbytes("logement_decent_l89_462"), + cst_usufruit=caml_string_of_jsbytes("usufruit"), + cst_lou_ou_sous_lou_des_tiers= + caml_string_of_jsbytes + ("lou\xc3\xa9_ou_sous_lou\xc3\xa9_\xc3\xa0_des_tiers"), + cst_propri_taire=caml_string_of_jsbytes("propri\xc3\xa9taire"), + cst_mode_occupation=caml_string_of_jsbytes("mode_occupation"), + cst_est_ehpad_ou_maison_autono= + caml_string_of_jsbytes("est_ehpad_ou_maison_autonomie_l313_12_asf"), + cst_r_sidence_principale= + caml_string_of_jsbytes("r\xc3\xa9sidence_principale"), + cst_Locataire=caml_string_of_jsbytes("Locataire"), + cst_R_sidentLogementFoyer= + caml_string_of_jsbytes("R\xc3\xa9sidentLogementFoyer"), + cst_AccessionPropri_t_LocalUsa= + caml_string_of_jsbytes + ("AccessionPropri\xc3\xa9t\xc3\xa9LocalUsageExclusifHabitation"), + cst_SousLocataire=caml_string_of_jsbytes("SousLocataire"), + cst_LocationAccession=caml_string_of_jsbytes("LocationAccession"), + cst_Location=caml_string_of_jsbytes("Location"), + cst_AccessionPropri_t= + caml_string_of_jsbytes("AccessionPropri\xc3\xa9t\xc3\xa9"), + cst_LogementFoyer=caml_string_of_jsbytes("LogementFoyer"), + cst_condition_2_r823_4=caml_string_of_jsbytes("condition_2_r823_4"), + cst_coefficents_enfants_garde_$2= + caml_string_of_jsbytes + ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), + cst_nombre_personnes_charge_pr$1= + caml_string_of_jsbytes + ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), + cst_ligibilit$3=caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"), + cst_date_courante$0=caml_string_of_jsbytes("date_courante"), + cst_changement_logement_d842_4= + caml_string_of_jsbytes("changement_logement_d842_4"), + cst_logement_meubl_d842_2= + caml_string_of_jsbytes("logement_meubl\xc3\xa9_d842_2"), + cst_g_es_ou_handicap_adultes_h= + caml_string_of_jsbytes + ("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"), + cst_colocation=caml_string_of_jsbytes("colocation"), + cst_logement_est_chambre=caml_string_of_jsbytes("logement_est_chambre"), + cst_b_n_ficiaire_aide_adulte_o= + caml_string_of_jsbytes + ("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"), + cst_loyer_principal=caml_string_of_jsbytes("loyer_principal"), + cst_bailleur=caml_string_of_jsbytes("bailleur"), + cst_personne_h_berg_e_centre_s= + caml_string_of_jsbytes + ("personne_h\xc3\xa9berg\xc3\xa9e_centre_soin_l_L162_22_3_s\xc3\xa9curit\xc3\xa9_sociale"), + cst_patrimoine=caml_string_of_jsbytes("patrimoine"), + cst_nationalit=caml_string_of_jsbytes("nationalit\xc3\xa9"), + cst_date_naissance$0=caml_string_of_jsbytes("date_naissance"), + cst_Enfant_Charge=caml_string_of_jsbytes("Enfant\xc3\x80Charge"), + cst_AutrePersonne_Charge= + caml_string_of_jsbytes("AutrePersonne\xc3\x80Charge"), + cst_r_gime_outre_mer_l751_1$0= + caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1"), + cst_ge_l512_3_2$0=caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2"), + cst_conditions_hors_ge$0= + caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"), + cst_droit_ouvert$0=caml_string_of_jsbytes("droit_ouvert"), + cst_date_naissance_troisi_me_e= + caml_string_of_jsbytes + ("date_naissance_troisi\xc3\xa8me_enfant_ou_dernier_si_plus"), + cst_nombre_enfants_na_tre_apr_= + caml_string_of_jsbytes + ("nombre_enfants_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_troisi\xc3\xa8me_mois_grossesse"), + cst_pr_t=caml_string_of_jsbytes("pr\xc3\xaat"), + cst_anciennet_logement= + caml_string_of_jsbytes("anciennet\xc3\xa9_logement"), + cst_situation_r822_11_13_17= + caml_string_of_jsbytes("situation_r822_11_13_17"), + cst_copropri_t=caml_string_of_jsbytes("copropri\xc3\xa9t\xc3\xa9"), + cst_local_habit_premi_re_fois_= + caml_string_of_jsbytes + ("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire"), + cst_type_travaux_logement_r842= + caml_string_of_jsbytes("type_travaux_logement_r842_5"), + cst_type_travaux_logement_d832= + caml_string_of_jsbytes("type_travaux_logement_d832_15"), + cst_date_entr_e_logement= + caml_string_of_jsbytes("date_entr\xc3\xa9e_logement"), + cst_charges_mensuelles_pr_t= + caml_string_of_jsbytes("charges_mensuelles_pr\xc3\xaat"), + cst_mensualit_principale= + caml_string_of_jsbytes("mensualit\xc3\xa9_principale"), + cst_logement_situ_commune_d_s_= + caml_string_of_jsbytes + ("logement_situ\xc3\xa9_commune_d\xc3\xa9s\xc3\xa9quilibre_l831_2"), + cst_Changement=caml_string_of_jsbytes("Changement"), + cst_PasDeChangement=caml_string_of_jsbytes("PasDeChangement"), + cst_Fran_aise=caml_string_of_jsbytes("Fran\xc3\xa7aise"), + cst_trang_re=caml_string_of_jsbytes("\xc3\x89trang\xc3\xa8re"), + cst_Non$1=caml_string_of_jsbytes("Non"), + cst_Oui$0=caml_string_of_jsbytes("Oui"), + cst_BailleurSocial=caml_string_of_jsbytes("BailleurSocial"), + cst_BailleurPriv_AvecConventio= + caml_string_of_jsbytes("BailleurPriv\xc3\xa9AvecConventionnementSocial"), + cst_BailleurPriv=caml_string_of_jsbytes("BailleurPriv\xc3\xa9"), + cst_situation_garde_altern_e= + caml_string_of_jsbytes("situation_garde_altern\xc3\xa9e"), + cst_obligation_scolaire$1=caml_string_of_jsbytes("obligation_scolaire"), + cst_r_muneration_mensuelle$1= + caml_string_of_jsbytes("r\xc3\xa9muneration_mensuelle"), + cst_date_de_naissance$1=caml_string_of_jsbytes("date_de_naissance"), + cst_a_d_j_ouvert_droit_aux_all$1= + caml_string_of_jsbytes + ("a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"), + cst_b_n_ficie_titre_personnel_$1= + caml_string_of_jsbytes + ("b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"), + cst_identifiant$1=caml_string_of_jsbytes("identifiant"), + cst_b_n_ficie_titre_personnel_$0= + caml_string_of_jsbytes + ("b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"), + cst_a_d_j_ouvert_droit_aux_all$0= + caml_string_of_jsbytes + ("a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"), + cst_prise_en_charge$0=caml_string_of_jsbytes("prise_en_charge"), + cst_date_de_naissance$0=caml_string_of_jsbytes("date_de_naissance"), + cst_r_muneration_mensuelle$0= + caml_string_of_jsbytes("r\xc3\xa9muneration_mensuelle"), + cst_obligation_scolaire$0=caml_string_of_jsbytes("obligation_scolaire"), + cst_identifiant$0=caml_string_of_jsbytes("identifiant"), + cst_cat_gorie_quivalence_loyer= + caml_string_of_jsbytes + ("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16"), + cst_redevance=caml_string_of_jsbytes("redevance"), + cst_construit_application_loi_= + caml_string_of_jsbytes("construit_application_loi_1957_12_III"), + cst_date_conventionnement=caml_string_of_jsbytes("date_conventionnement"), + cst_conventionn_livre_III_titr$1= + caml_string_of_jsbytes("conventionn\xc3\xa9_livre_III_titre_V_chap_III"), + cst_remplit_conditions_r832_21= + caml_string_of_jsbytes("remplit_conditions_r832_21"), + cst_type=caml_string_of_jsbytes("type"), + cst_coefficents_enfants_garde_$1= + caml_string_of_jsbytes + ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), + cst_nombre_personnes_charge_pr$0= + caml_string_of_jsbytes + ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), + cst_ligibilit$2=caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"), + cst_MoinsDeTroisEnfants=caml_string_of_jsbytes("MoinsDeTroisEnfants"), + cst_PlusDeTroisEnfants=caml_string_of_jsbytes("PlusDeTroisEnfants"), + cst_titulaire_allocation_perso= + caml_string_of_jsbytes + ("titulaire_allocation_personne_\xc3\xa2g\xc3\xa9e"), + cst_b_n_ficiaire_l161_19_l351_= + caml_string_of_jsbytes + ("b\xc3\xa9n\xc3\xa9ficiaire_l161_19_l351_8_l643_3_s\xc3\xa9cu"), + cst_incapacit_80_pourcent_ou_r= + caml_string_of_jsbytes + ("incapacit\xc3\xa9_80_pourcent_ou_restriction_emploi"), + cst_parent=caml_string_of_jsbytes("parent\xc3\xa9"), + cst_ascendant_descendant_colla= + caml_string_of_jsbytes + ("ascendant_descendant_collat\xc3\xa9ral_deuxi\xc3\xa8me_troisi\xc3\xa8me_degr\xc3\xa9"), + cst_ressources$0=caml_string_of_jsbytes("ressources"), + cst_date_naissance=caml_string_of_jsbytes("date_naissance"), + cst_taux$0=caml_string_of_jsbytes("taux"), + cst_bas$0=caml_string_of_jsbytes("bas"), + cst_haut$0=caml_string_of_jsbytes("haut"), + cst_taux=caml_string_of_jsbytes("taux"), + cst_bas=caml_string_of_jsbytes("bas"), + cst_haut=caml_string_of_jsbytes("haut"), + cst_Neuf=caml_string_of_jsbytes("Neuf"), + cst_Ancien=caml_string_of_jsbytes("Ancien"), + cst_titulaire_pr_t=caml_string_of_jsbytes("titulaire_pr\xc3\xaat"), + cst_date_signature=caml_string_of_jsbytes("date_signature"), + cst_type_pr_t=caml_string_of_jsbytes("type_pr\xc3\xaat"), + cst_brut_horaire$0=caml_string_of_jsbytes("brut_horaire"), + cst_montant$2=caml_string_of_jsbytes("montant"), + cst_aide_finale=caml_string_of_jsbytes("aide_finale"), + cst_ligibilit$1=caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"), + cst_coefficents_enfants_garde_$0= + caml_string_of_jsbytes + ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), + cst_traitement_aide_finale$8= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule$8=caml_string_of_jsbytes("aide_finale_formule"), + cst_ligibilit$0=caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"), + cst_montant_impay=caml_string_of_jsbytes("montant_impay\xc3\xa9"), + cst_ge_ouverture_droit= + caml_string_of_jsbytes("\xc3\xa2ge_ouverture_droit"), + cst_traitement_aide_finale$7= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule$7=caml_string_of_jsbytes("aide_finale_formule"), + cst_traitement_aide_finale$6= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule$6=caml_string_of_jsbytes("aide_finale_formule"), + cst_loyer_minimal=caml_string_of_jsbytes("loyer_minimal"), + cst_montant_forfaitaire_charge$0= + caml_string_of_jsbytes("montant_forfaitaire_charges"), + cst_quivalence_loyer=caml_string_of_jsbytes("\xc3\xa9quivalence_loyer"), + cst_coefficient_prise_en_charg$1= + caml_string_of_jsbytes("coefficient_prise_en_charge"), + cst_traitement_aide_finale$5= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule$5=caml_string_of_jsbytes("aide_finale_formule"), + cst_traitement_aide_finale$4= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule$4=caml_string_of_jsbytes("aide_finale_formule"), + cst_ancienne_allocation_logeme= + caml_string_of_jsbytes("ancienne_allocation_logement"), + cst_ancien_loyer_principal= + caml_string_of_jsbytes("ancien_loyer_principal"), + cst_traitement_aide_finale$3= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule$3=caml_string_of_jsbytes("aide_finale_formule"), + cst_traitement_aide_finale$2= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule$2=caml_string_of_jsbytes("aide_finale_formule"), + cst_traitement_aide_finale$1= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule$1=caml_string_of_jsbytes("aide_finale_formule"), + cst_coefficient_prise_en_charg$0= + caml_string_of_jsbytes("coefficient_prise_en_charge_d832_10"), + cst_mensualit_minimale= + caml_string_of_jsbytes("mensualit\xc3\xa9_minimale"), + cst_mensualit_ligible= + caml_string_of_jsbytes("mensualit\xc3\xa9_\xc3\xa9ligible"), + cst_n_nombre_parts_d832_11= + caml_string_of_jsbytes("n_nombre_parts_d832_11"), + cst_traitement_aide_finale$0= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule$0=caml_string_of_jsbytes("aide_finale_formule"), + cst_coefficient_prise_en_charg= + caml_string_of_jsbytes("coefficient_prise_en_charge_d832_25"), + cst_quivalence_loyer_minimale= + caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_minimale"), + cst_plafond_quivalence_loyer_l= + caml_string_of_jsbytes + ("plafond_\xc3\xa9quivalence_loyer_\xc3\xa9ligible"), + cst_quivalence_loyer_ligible= + caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_\xc3\xa9ligible"), + cst_n_nombre_parts_d832_25$0= + caml_string_of_jsbytes("n_nombre_parts_d832_25"), + cst_coefficient_r_d832_25=caml_string_of_jsbytes("coefficient_r_d832_25"), + cst_coefficient_multiplicateur= + caml_string_of_jsbytes("coefficient_multiplicateur_d832_25"), + cst_n_nombre_parts_d832_25= + caml_string_of_jsbytes("n_nombre_parts_d832_25"), + cst_montant$1=caml_string_of_jsbytes("montant"), + cst_traitement_aide_finale= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule=caml_string_of_jsbytes("aide_finale_formule"), + cst_participation_personnelle= + caml_string_of_jsbytes("participation_personnelle"), + cst_taux_composition_familiale= + caml_string_of_jsbytes("taux_composition_familiale"), + cst_participation_minimale= + caml_string_of_jsbytes("participation_minimale"), + cst_plafond_loyer_d823_16_2= + caml_string_of_jsbytes("plafond_loyer_d823_16_2"), + cst_montant_forfaitaire_charge= + caml_string_of_jsbytes("montant_forfaitaire_charges_d823_16"), + cst_montant$0=caml_string_of_jsbytes("montant"), + cst_ressources_prises_en_compt= + caml_string_of_jsbytes("ressources_prises_en_compte"), + cst_montant_prime_d_m_nagement= + caml_string_of_jsbytes("montant_prime_d\xc3\xa9m\xc3\xa9nagement"), + cst_coefficents_enfants_garde_= + caml_string_of_jsbytes + ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), + cst_nombre_personnes_charge_pr= + caml_string_of_jsbytes + ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), + cst_ligibilit=caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"), + cst_date_courante=caml_string_of_jsbytes("date_courante"), + cst_ressources=caml_string_of_jsbytes("ressources"), + cst_dur_e_r_sidence_durant_p_r= + caml_string_of_jsbytes + ("dur\xc3\xa9e_r\xc3\xa9sidence_durant_p\xc3\xa9riode_r_822_3_1_sup\xc3\xa9rieure_\xc3\xa0_6_mois"), + cst_satisfait_conditions_l512_= + caml_string_of_jsbytes + ("satisfait_conditions_l512_2_code_s\xc3\xa9curit\xc3\xa9_sociale"), + cst_ne_produisant_pas_revenu_p= + caml_string_of_jsbytes + ("ne_produisant_pas_revenu_p\xc3\xa9riode_r822_3_3_r822_4"), + cst_produisant_revenu_p_riode_= + caml_string_of_jsbytes + ("produisant_revenu_p\xc3\xa9riode_r822_3_3_r822_4"), + cst_conforme_article_l442_1= + caml_string_of_jsbytes("conforme_article_l442_1"), + cst_date_naissance_personne_so= + caml_string_of_jsbytes("date_naissance_personne_sous_location"), + cst_conventionn_livre_III_titr$0= + caml_string_of_jsbytes + ("conventionn\xc3\xa9_livre_III_titre_II_chap_I_sec_3"), + cst_r_duction_loyer_solidarit_= + caml_string_of_jsbytes + ("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_per\xc3\xa7ue"), + cst_conventionn_livre_III_titr= + caml_string_of_jsbytes("conventionn\xc3\xa9_livre_III_titre_V_chap_III"), + cst_PrestationAccueilJeuneEnfa$1= + caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"), + cst_AllocationsFamiliales$2= + caml_string_of_jsbytes("AllocationsFamiliales"), + cst_Compl_mentFamilial$1= + caml_string_of_jsbytes("Compl\xc3\xa9mentFamilial"), + cst_AllocationLogement$1=caml_string_of_jsbytes("AllocationLogement"), + cst_Allocation_ducationEnfantH$0= + caml_string_of_jsbytes + ("Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9"), + cst_AllocationSoutienFamilial$2= + caml_string_of_jsbytes("AllocationSoutienFamilial"), + cst_AllocationRentr_eScolaire$0= + caml_string_of_jsbytes("AllocationRentr\xc3\xa9eScolaire"), + cst_AllocationJournali_rePrese$0= + caml_string_of_jsbytes("AllocationJournali\xc3\xa8rePresenceParentale"), + cst_Avant$1=caml_string_of_jsbytes("Avant"), + cst_Pendant$1=caml_string_of_jsbytes("Pendant"), + cst_Apr_s$0=caml_string_of_jsbytes("Apr\xc3\xa8s"), + cst_GardeAltern_ePartageAlloca$0= + caml_string_of_jsbytes("GardeAltern\xc3\xa9ePartageAllocations"), + cst_GardeAltern_eAllocataireUn$0= + caml_string_of_jsbytes("GardeAltern\xc3\xa9eAllocataireUnique"), + cst_EffectiveEtPermanente$2= + caml_string_of_jsbytes("EffectiveEtPermanente"), + cst_ServicesSociauxAllocationV$3= + caml_string_of_jsbytes + ("ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille"), + cst_ServicesSociauxAllocationV$4= + caml_string_of_jsbytes + ("ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux"), + cst_Guadeloupe$1=caml_string_of_jsbytes("Guadeloupe"), + cst_Guyane$1=caml_string_of_jsbytes("Guyane"), + cst_Martinique$1=caml_string_of_jsbytes("Martinique"), + cst_LaR_union$0=caml_string_of_jsbytes("LaR\xc3\xa9union"), + cst_SaintBarth_lemy$0=caml_string_of_jsbytes("SaintBarth\xc3\xa9lemy"), + cst_SaintMartin$1=caml_string_of_jsbytes("SaintMartin"), + cst_M_tropole$0=caml_string_of_jsbytes("M\xc3\xa9tropole"), + cst_SaintPierreEtMiquelon$1= + caml_string_of_jsbytes("SaintPierreEtMiquelon"), + cst_Mayotte$1=caml_string_of_jsbytes("Mayotte"), + cst_PersonneSeule=caml_string_of_jsbytes("PersonneSeule"), + cst_Couple=caml_string_of_jsbytes("Couple"), + cst_tudiantLog_EnChambreCROUS= + caml_string_of_jsbytes("\xc3\x89tudiantLog\xc3\xa9EnChambreCROUS"), + cst_tudiantLog_EnChambreCROUSR= + caml_string_of_jsbytes + ("\xc3\x89tudiantLog\xc3\xa9EnChambreCROUSR\xc3\xa9habilit\xc3\xa9e"), + cst_Personnes_g_esSelon3DeD842= + caml_string_of_jsbytes("Personnes\xc3\x82g\xc3\xa9esSelon3DeD842_16"), + cst_AutresPersonnes=caml_string_of_jsbytes("AutresPersonnes"), + cst_LogementPersonnes_g_esOuHa= + caml_string_of_jsbytes + ("LogementPersonnes\xc3\x82g\xc3\xa9esOuHandicap\xc3\xa9es"), + cst_R_sidenceSociale=caml_string_of_jsbytes("R\xc3\xa9sidenceSociale"), + cst_FoyerJeunesTrvailleursOuMi= + caml_string_of_jsbytes + ("FoyerJeunesTrvailleursOuMigrantsConventionn\xc3\xa9L353_2Avant1995"), + cst_Autre$1=caml_string_of_jsbytes("Autre"), + cst_EffectiveEtPermanente$1= + caml_string_of_jsbytes("EffectiveEtPermanente"), + cst_R_sidenceAltern_eAllocatai= + caml_string_of_jsbytes + ("R\xc3\xa9sidenceAltern\xc3\xa9eAllocataireUnique"), + cst_R_sidenceAltern_eAllocatio= + caml_string_of_jsbytes + ("R\xc3\xa9sidenceAltern\xc3\xa9eAllocationsPartag\xc3\xa9e"), + cst_C_libataire=caml_string_of_jsbytes("C\xc3\xa9libataire"), + cst_Mari_s=caml_string_of_jsbytes("Mari\xc3\xa9s"), + cst_Pacs_s=caml_string_of_jsbytes("Pacs\xc3\xa9s"), + cst_Concubins=caml_string_of_jsbytes("Concubins"), + cst_C_libataireS_par_DeFait= + caml_string_of_jsbytes("C\xc3\xa9libataireS\xc3\xa9par\xc3\xa9DeFait"), + cst_ConcubinageDontS_par_DeFai= + caml_string_of_jsbytes("ConcubinageDontS\xc3\xa9par\xc3\xa9DeFait"), + cst_AidePersonnalis_eLogement= + caml_string_of_jsbytes("AidePersonnalis\xc3\xa9eLogement"), + cst_AllocationLogementFamilial$0= + caml_string_of_jsbytes("AllocationLogementFamiliale"), + cst_AllocationLogementSociale$0= + caml_string_of_jsbytes("AllocationLogementSociale"), + cst_Pas_ligible=caml_string_of_jsbytes("Pas\xc3\x89ligible"), + cst_AllocationLogementFamilial= + caml_string_of_jsbytes("AllocationLogementFamiliale"), + cst_AllocationLogementSociale= + caml_string_of_jsbytes("AllocationLogementSociale"), + cst_Impay_Loyer=caml_string_of_jsbytes("Impay\xc3\xa9Loyer"), + cst_Impay_Pr_t=caml_string_of_jsbytes("Impay\xc3\xa9Pr\xc3\xaat"), + cst_TotalAnnuel_ch_ances= + caml_string_of_jsbytes("TotalAnnuel\xc3\x89ch\xc3\xa9ances"), + cst_Mensualit=caml_string_of_jsbytes("Mensualit\xc3\xa9"), + cst_Loyer=caml_string_of_jsbytes("Loyer"), + cst_Bailleur=caml_string_of_jsbytes("Bailleur"), + cst_B_n_ficiaire=caml_string_of_jsbytes("B\xc3\xa9n\xc3\xa9ficiaire"), + cst_tablissementHabilit= + caml_string_of_jsbytes("\xc3\x89tablissementHabilit\xc3\xa9"), + cst_OuiAvecLoyerOuCharges=caml_string_of_jsbytes("OuiAvecLoyerOuCharges"), + cst_Non$0=caml_string_of_jsbytes("Non"), + cst_Zone1=caml_string_of_jsbytes("Zone1"), + cst_Zone2=caml_string_of_jsbytes("Zone2"), + cst_Zone3=caml_string_of_jsbytes("Zone3"), + cst_DateDeNaissance=caml_string_of_jsbytes("DateDeNaissance"), + cst_AvantPremierJourMoisCivilT= + caml_string_of_jsbytes + ("AvantPremierJourMoisCivilTroisi\xc3\xa8meMoisDeGrossesse"), + cst_Apr_sPremierJourMoisCivilT= + caml_string_of_jsbytes + ("Apr\xc3\xa8sPremierJourMoisCivilTroisi\xc3\xa8meMoisDeGrossesse"), + cst_Ascendant=caml_string_of_jsbytes("Ascendant"), + cst_Descendant=caml_string_of_jsbytes("Descendant"), + cst_Collat_ralDeuxi_meTroisi_m= + caml_string_of_jsbytes + ("Collat\xc3\xa9ralDeuxi\xc3\xa8meTroisi\xc3\xa8meDegr\xc3\xa9"), + cst_PasDeGardeAltern_e= + caml_string_of_jsbytes("PasDeGardeAltern\xc3\xa9e"), + cst_GardeAltern_eCoefficientPr= + caml_string_of_jsbytes("GardeAltern\xc3\xa9eCoefficientPriseEnCharge"), + cst_DemandeurOuConjointOuParen= + caml_string_of_jsbytes + ("DemandeurOuConjointOuParentOuViaPartsSoci\xc3\xa9t\xc3\xa9s"), + cst_Autre$0=caml_string_of_jsbytes("Autre"), + cst_AllocationsFamiliales$1= + caml_string_of_jsbytes("AllocationsFamiliales"), + cst_Compl_mentFamilial$0= + caml_string_of_jsbytes("Compl\xc3\xa9mentFamilial"), + cst_AllocationJeuneEnfant=caml_string_of_jsbytes("AllocationJeuneEnfant"), + cst_AllocationSoutienFamilial$1= + caml_string_of_jsbytes("AllocationSoutienFamilial"), + cst_AllocationSoutienEnfantHan= + caml_string_of_jsbytes("AllocationSoutienEnfantHandicap\xc3\xa9"), + cst_AllocationAdulteHandicap= + caml_string_of_jsbytes("AllocationAdulteHandicap\xc3\xa9"), + cst_Revenu$0=caml_string_of_jsbytes("Revenu"), + cst_Infini$0=caml_string_of_jsbytes("Infini"), + cst_Revenu=caml_string_of_jsbytes("Revenu"), + cst_Infini=caml_string_of_jsbytes("Infini"), + cst_Oui=caml_string_of_jsbytes("Oui"), + cst_Non=caml_string_of_jsbytes("Non"), + cst_ObjectifD_cenceLogement= + caml_string_of_jsbytes("ObjectifD\xc3\xa9cenceLogement"), + cst_Pr_vuDansListeR321_15= + caml_string_of_jsbytes("Pr\xc3\xa9vuDansListeR321_15"), + cst_AgrandirOuRendreHabitableD= + caml_string_of_jsbytes("AgrandirOuRendreHabitableD331_63"), + cst_PasDeTravaux$0=caml_string_of_jsbytes("PasDeTravaux"), + cst_TravauxPourAcquisitionD832= + caml_string_of_jsbytes("TravauxPourAcquisitionD832_15_1"), + cst_TravauxSurLogementD_j_Acqu= + caml_string_of_jsbytes + ("TravauxSurLogementD\xc3\xa9j\xc3\xa0AcquisD832_15_2"), + cst_PasDeTravaux=caml_string_of_jsbytes("PasDeTravaux"), + cst_Demandeur=caml_string_of_jsbytes("Demandeur"), + cst_VendeurQuandDemandeurACont= + caml_string_of_jsbytes("VendeurQuandDemandeurAContratLocationAccession"), + cst_D331_32=caml_string_of_jsbytes("D331_32"), + cst_D331_63_64=caml_string_of_jsbytes("D331_63_64"), + cst_D331_59_8=caml_string_of_jsbytes("D331_59_8"), + cst_D331_76_1=caml_string_of_jsbytes("D331_76_1"), + cst_Autre=caml_string_of_jsbytes("Autre"), + cst_The_function_n_nombre_part= + caml_string_of_jsbytes + ("The function 'n_nombre_parts_d832_25_in' translation isn't yet supported..."), + cst_The_function_condition_2_d= + caml_string_of_jsbytes + ("The function 'condition_2_du_832_25_in' translation isn't yet supported..."), + cst_The_function_condition_log= + caml_string_of_jsbytes + ("The function 'condition_logement_surface_in' translation isn't yet supported..."), + cst_The_function_condition_log$0= + caml_string_of_jsbytes + ("The function 'condition_logement_residence_principale_in' translation isn't yet supported..."), + cst_AccessionProprieteLocalUsa= + caml_string_of_jsbytes("AccessionProprieteLocalUsageExclusifHabitation"), + cst_Locataire$0=caml_string_of_jsbytes("Locataire"), + cst_LocationAccession$0=caml_string_of_jsbytes("LocationAccession"), + cst_ResidentLogementFoyer=caml_string_of_jsbytes("ResidentLogementFoyer"), + cst_SousLocataire$0=caml_string_of_jsbytes("SousLocataire"), + cst_AccessionPropriete=caml_string_of_jsbytes("AccessionPropriete"), + cst_Location$0=caml_string_of_jsbytes("Location"), + cst_LogementFoyer$0=caml_string_of_jsbytes("LogementFoyer"), + cst_The_function_condition_2_r= + caml_string_of_jsbytes + ("The function 'condition_2_r823_4' translation isn't yet supported..."), + cst_AutrePersonneACharge=caml_string_of_jsbytes("AutrePersonneACharge"), + cst_EnfantACharge=caml_string_of_jsbytes("EnfantACharge"), + cst_The_function_conditions_ho$0= + caml_string_of_jsbytes + ("The function 'conditions_hors_age' translation isn't yet supported..."), + cst_The_function_droit_ouvert_$0= + caml_string_of_jsbytes + ("The function 'droit_ouvert' translation isn't yet supported..."), + cst_Changement$0=caml_string_of_jsbytes("Changement"), + cst_PasDeChangement$0=caml_string_of_jsbytes("PasDeChangement"), + cst_Etrangere=caml_string_of_jsbytes("Etrangere"), + cst_Francaise=caml_string_of_jsbytes("Francaise"), + cst_Non$4=caml_string_of_jsbytes("Non"), + cst_Oui$2=caml_string_of_jsbytes("Oui"), + cst_BailleurPrive=caml_string_of_jsbytes("BailleurPrive"), + cst_BailleurPriveAvecConventio= + caml_string_of_jsbytes("BailleurPriveAvecConventionnementSocial"), + cst_BailleurSocial$0=caml_string_of_jsbytes("BailleurSocial"), + cst_MoinsDeTroisEnfants$0=caml_string_of_jsbytes("MoinsDeTroisEnfants"), + cst_PlusDeTroisEnfants$0=caml_string_of_jsbytes("PlusDeTroisEnfants"), + cst_Ancien$0=caml_string_of_jsbytes("Ancien"), + cst_Neuf$0=caml_string_of_jsbytes("Neuf"), + cst_The_function_traitement_ai$8= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_traitement_ai$7= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_traitement_ai$6= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_traitement_ai$5= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_traitement_ai$4= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_traitement_ai$3= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_traitement_ai$2= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_traitement_ai$1= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_traitement_ai$0= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_traitement_ai= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_montant_trans= + caml_string_of_jsbytes + ("The function 'montant' translation isn't yet supported..."), + cst_AllocationEducationEnfantH$0= + caml_string_of_jsbytes("AllocationEducationEnfantHandicape"), + cst_AllocationJournalierePrese$0= + caml_string_of_jsbytes("AllocationJournalierePresenceParentale"), + cst_AllocationLogement$2=caml_string_of_jsbytes("AllocationLogement"), + cst_AllocationRentreeScolaire$0= + caml_string_of_jsbytes("AllocationRentreeScolaire"), + cst_AllocationSoutienFamilial$4= + caml_string_of_jsbytes("AllocationSoutienFamilial"), + cst_AllocationsFamiliales$4= + caml_string_of_jsbytes("AllocationsFamiliales"), + cst_ComplementFamilial$1=caml_string_of_jsbytes("ComplementFamilial"), + cst_PrestationAccueilJeuneEnfa$2= + caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"), + cst_Apres$0=caml_string_of_jsbytes("Apres"), + cst_Avant$2=caml_string_of_jsbytes("Avant"), + cst_Pendant$2=caml_string_of_jsbytes("Pendant"), + cst_EffectiveEtPermanente$4= + caml_string_of_jsbytes("EffectiveEtPermanente"), + cst_GardeAlterneeAllocataireUn$0= + caml_string_of_jsbytes("GardeAlterneeAllocataireUnique"), + cst_GardeAlterneePartageAlloca$0= + caml_string_of_jsbytes("GardeAlterneePartageAllocations"), + cst_ServicesSociauxAllocationV$5= + caml_string_of_jsbytes("ServicesSociauxAllocationVerseeALaFamille"), + cst_ServicesSociauxAllocationV$6= + caml_string_of_jsbytes + ("ServicesSociauxAllocationVerseeAuxServicesSociaux"), + cst_Guadeloupe$2=caml_string_of_jsbytes("Guadeloupe"), + cst_Guyane$2=caml_string_of_jsbytes("Guyane"), + cst_LaReunion$0=caml_string_of_jsbytes("LaReunion"), + cst_Martinique$2=caml_string_of_jsbytes("Martinique"), + cst_Mayotte$2=caml_string_of_jsbytes("Mayotte"), + cst_Metropole$0=caml_string_of_jsbytes("Metropole"), + cst_SaintBarthelemy$0=caml_string_of_jsbytes("SaintBarthelemy"), + cst_SaintMartin$2=caml_string_of_jsbytes("SaintMartin"), + cst_SaintPierreEtMiquelon$2= + caml_string_of_jsbytes("SaintPierreEtMiquelon"), + cst_Couple$0=caml_string_of_jsbytes("Couple"), + cst_PersonneSeule$0=caml_string_of_jsbytes("PersonneSeule"), + cst_AutresPersonnes$0=caml_string_of_jsbytes("AutresPersonnes"), + cst_EtudiantLogeEnChambreCROUS= + caml_string_of_jsbytes("EtudiantLogeEnChambreCROUS"), + cst_EtudiantLogeEnChambreCROUS$0= + caml_string_of_jsbytes("EtudiantLogeEnChambreCROUSRehabilitee"), + cst_PersonnesAgeesSelon3DeD842= + caml_string_of_jsbytes("PersonnesAgeesSelon3DeD842_16"), + cst_Autre$4=caml_string_of_jsbytes("Autre"), + cst_FoyerJeunesTrvailleursOuMi$0= + caml_string_of_jsbytes + ("FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995"), + cst_LogementPersonnesAgeesOuHa= + caml_string_of_jsbytes("LogementPersonnesAgeesOuHandicapees"), + cst_ResidenceSociale=caml_string_of_jsbytes("ResidenceSociale"), + cst_EffectiveEtPermanente$3= + caml_string_of_jsbytes("EffectiveEtPermanente"), + cst_ResidenceAlterneeAllocatai= + caml_string_of_jsbytes("ResidenceAlterneeAllocataireUnique"), + cst_ResidenceAlterneeAllocatio= + caml_string_of_jsbytes("ResidenceAlterneeAllocationsPartagee"), + cst_Celibataire=caml_string_of_jsbytes("Celibataire"), + cst_CelibataireSepareDeFait= + caml_string_of_jsbytes("CelibataireSepareDeFait"), + cst_ConcubinageDontSepareDeFai= + caml_string_of_jsbytes("ConcubinageDontSepareDeFait"), + cst_Concubins$0=caml_string_of_jsbytes("Concubins"), + cst_Maries=caml_string_of_jsbytes("Maries"), + cst_Pacses=caml_string_of_jsbytes("Pacses"), + cst_AidePersonnaliseeLogement= + caml_string_of_jsbytes("AidePersonnaliseeLogement"), + cst_AllocationLogementFamilial$2= + caml_string_of_jsbytes("AllocationLogementFamiliale"), + cst_AllocationLogementSociale$2= + caml_string_of_jsbytes("AllocationLogementSociale"), + cst_AllocationLogementFamilial$1= + caml_string_of_jsbytes("AllocationLogementFamiliale"), + cst_AllocationLogementSociale$1= + caml_string_of_jsbytes("AllocationLogementSociale"), + cst_PasEligible=caml_string_of_jsbytes("PasEligible"), + cst_ImpayeLoyer=caml_string_of_jsbytes("ImpayeLoyer"), + cst_ImpayePret=caml_string_of_jsbytes("ImpayePret"), + cst_Loyer$0=caml_string_of_jsbytes("Loyer"), + cst_Mensualite=caml_string_of_jsbytes("Mensualite"), + cst_TotalAnnuelEcheances=caml_string_of_jsbytes("TotalAnnuelEcheances"), + cst_Bailleur$0=caml_string_of_jsbytes("Bailleur"), + cst_Beneficiaire=caml_string_of_jsbytes("Beneficiaire"), + cst_EtablissementHabilite=caml_string_of_jsbytes("EtablissementHabilite"), + cst_Non$3=caml_string_of_jsbytes("Non"), + cst_OuiAvecLoyerOuCharges$0= + caml_string_of_jsbytes("OuiAvecLoyerOuCharges"), + cst_Zone1$0=caml_string_of_jsbytes("Zone1"), + cst_Zone2$0=caml_string_of_jsbytes("Zone2"), + cst_Zone3$0=caml_string_of_jsbytes("Zone3"), + cst_ApresPremierJourMoisCivilT= + caml_string_of_jsbytes + ("ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse"), + cst_AvantPremierJourMoisCivilT$0= + caml_string_of_jsbytes + ("AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse"), + cst_DateDeNaissance$0=caml_string_of_jsbytes("DateDeNaissance"), + cst_Ascendant$0=caml_string_of_jsbytes("Ascendant"), + cst_CollateralDeuxiemeTroisiem= + caml_string_of_jsbytes("CollateralDeuxiemeTroisiemeDegre"), + cst_Descendant$0=caml_string_of_jsbytes("Descendant"), + cst_GardeAlterneeCoefficientPr= + caml_string_of_jsbytes("GardeAlterneeCoefficientPriseEnCharge"), + cst_PasDeGardeAlternee=caml_string_of_jsbytes("PasDeGardeAlternee"), + cst_Autre$3=caml_string_of_jsbytes("Autre"), + cst_DemandeurOuConjointOuParen$0= + caml_string_of_jsbytes("DemandeurOuConjointOuParentOuViaPartsSocietes"), + cst_AllocationAdulteHandicape= + caml_string_of_jsbytes("AllocationAdulteHandicape"), + cst_AllocationJeuneEnfant$0= + caml_string_of_jsbytes("AllocationJeuneEnfant"), + cst_AllocationSoutienEnfantHan$0= + caml_string_of_jsbytes("AllocationSoutienEnfantHandicape"), + cst_AllocationSoutienFamilial$3= + caml_string_of_jsbytes("AllocationSoutienFamilial"), + cst_AllocationsFamiliales$3= + caml_string_of_jsbytes("AllocationsFamiliales"), + cst_ComplementFamilial$0=caml_string_of_jsbytes("ComplementFamilial"), + cst_Infini$2=caml_string_of_jsbytes("Infini"), + cst_Revenu$2=caml_string_of_jsbytes("Revenu"), + cst_Infini$1=caml_string_of_jsbytes("Infini"), + cst_Revenu$1=caml_string_of_jsbytes("Revenu"), + cst_Non$2=caml_string_of_jsbytes("Non"), + cst_Oui$1=caml_string_of_jsbytes("Oui"), + cst_AgrandirOuRendreHabitableD$0= + caml_string_of_jsbytes("AgrandirOuRendreHabitableD331_63"), + cst_ObjectifDecenceLogement= + caml_string_of_jsbytes("ObjectifDecenceLogement"), + cst_PasDeTravaux$2=caml_string_of_jsbytes("PasDeTravaux"), + cst_PrevuDansListeR321_15=caml_string_of_jsbytes("PrevuDansListeR321_15"), + cst_PasDeTravaux$1=caml_string_of_jsbytes("PasDeTravaux"), + cst_TravauxPourAcquisitionD832$0= + caml_string_of_jsbytes("TravauxPourAcquisitionD832_15_1"), + cst_TravauxSurLogementDejaAcqu= + caml_string_of_jsbytes("TravauxSurLogementDejaAcquisD832_15_2"), + cst_Demandeur$0=caml_string_of_jsbytes("Demandeur"), + cst_VendeurQuandDemandeurACont$0= + caml_string_of_jsbytes("VendeurQuandDemandeurAContratLocationAccession"), + cst_Autre$2=caml_string_of_jsbytes("Autre"), + cst_D331_32$0=caml_string_of_jsbytes("D331_32"), + cst_D331_59_8$0=caml_string_of_jsbytes("D331_59_8"), + 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, + Stdlib_Array=global_data.Stdlib__Array, + Runtime_jsoo_Runtime=global_data.Runtime_jsoo__Runtime, + Stdlib=global_data.Stdlib, + Stdlib_Printf=global_data.Stdlib__Printf, + Js_of_ocaml_Js=global_data.Js_of_ocaml__Js, + Law_source=[0]; + caml_register_global(8566,Law_source,"Law_source"); + var + PriseEnCharge=[0], + _j7_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 90, + 14, + 90, + 29, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _j0_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 101, + 18, + 101, + 64, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _j1_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 100, + 5, + 100, + 72, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jZ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 100, + 5, + 100, + 72, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jV_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 87, + 14, + 87, + 53, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jR_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 86, + 14, + 86, + 50, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jN_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 89, + 14, + 89, + 46, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jJ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 88, + 14, + 88, + 54, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jE_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 97, + 18, + 97, + 72, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jF_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 96, + 5, + 96, + 80, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jD_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 96, + 5, + 96, + 80, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jy_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 93, + 18, + 93, + 67, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jz_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 92, + 5, + 92, + 75, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jx_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 92, + 5, + 92, + 75, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jt_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 117, + 14, + 117, + 30, + [0, + caml_string_of_jsbytes("Article L131-1"), + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]]], + _jq_=[0,0], + _jr_=[1,0], + _js_=[2,0], + _ju_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 76, + 11, + 76, + 27, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jp_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 76, + 11, + 76, + 27, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jv_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0,caml_string_of_jsbytes("enfants_\xc3\xa0_charge"),0]], + _jA_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 92, + 5, + 92, + 75, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jB_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("allocations_familiales.personne_charge_effective_permanente_est_parent"), + 0]], + _jw_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 92, + 5, + 92, + 75, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jG_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 96, + 5, + 96, + 80, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jH_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("allocations_familiales.personne_charge_effective_permanente_remplit_titre_I"), + 0]], + _jC_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 96, + 5, + 96, + 80, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jK_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 88, + 14, + 88, + 54, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jL_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("allocations_familiales.ressources_m\xc3\xa9nage"), + 0]], + _jI_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 88, + 14, + 88, + 54, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jO_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 89, + 14, + 89, + 46, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jP_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0,caml_string_of_jsbytes("allocations_familiales.r\xc3\xa9sidence"),0]], + _jM_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 89, + 14, + 89, + 46, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jS_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 86, + 14, + 86, + 50, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jT_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0,caml_string_of_jsbytes("allocations_familiales.date_courante"),0]], + _jQ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 86, + 14, + 86, + 50, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jW_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 87, + 14, + 87, + 53, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jX_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("allocations_familiales.enfants_\xc3\xa0_charge"), + 0]], + _jU_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 87, + 14, + 87, + 53, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _j2_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 100, + 5, + 100, + 72, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _j3_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("allocations_familiales.avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012"), + 0]], + _jY_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 100, + 5, + 100, + 72, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _j4_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0, + caml_string_of_jsbytes("allocations_familiales"), + [0,caml_string_of_jsbytes("AllocationsFamiliales"),0]]], + _j5_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0, + caml_string_of_jsbytes("allocations_familiales"), + [0,caml_string_of_jsbytes("AllocationsFamiliales"),0]]], + _j8_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 80, + 12, + 80, + 27, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _j6_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 80, + 12, + 80, + 27, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _j9_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0,caml_string_of_jsbytes("i_montant_vers\xc3\xa9"),0]], + _jk_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 45, + 14, + 45, + 27, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jg_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 183, + 14, + 183, + 62, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _jc_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"), + [0,caml_string_of_jsbytes("input"),0]]], + _jd_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"),0]], + _je_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"), + [0,caml_string_of_jsbytes("output"),0]]], + _jf_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"),0]], + _i__= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 189, + 14, + 189, + 61, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _i6_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 39, + 14, + 39, + 38, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _i2_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_avec_garde_altern\xc3\xa9e_majoration"), + [0,caml_string_of_jsbytes("input"),0]]], + _i3_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_avec_garde_altern\xc3\xa9e_majoration"), + 0]], + _i4_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_avec_garde_altern\xc3\xa9e_majoration"), + [0,caml_string_of_jsbytes("output"),0]]], + _i5_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_avec_garde_altern\xc3\xa9e_majoration"), + 0]], + _iY_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 37, + 14, + 37, + 32, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _iU_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 186, + 5, + 186, + 43, + [0, + caml_string_of_jsbytes("Article R521-4"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _iM_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("prise_en_compte"), + [0,caml_string_of_jsbytes("input"),0]]], + _iN_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("prise_en_compte"),0]], + _iO_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("prise_en_compte"), + [0,caml_string_of_jsbytes("output"),0]]], + _iP_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("prise_en_compte"),0]], + _iQ_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("montant_initial_majoration"), + [0,caml_string_of_jsbytes("input"),0]]], + _iR_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_initial_majoration"),0]], + _iS_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("montant_initial_majoration"), + [0,caml_string_of_jsbytes("output"),0]]], + _iT_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_initial_majoration"),0]], + _iV_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 128, + 11, + 128, + 49, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iL_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 128, + 11, + 128, + 49, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iI_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 125, + 14, + 125, + 46, + [0, + caml_string_of_jsbytes("Article R521-3"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _iC_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 268, + 5, + 270, + 41, + [0, + caml_string_of_jsbytes("Article D521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _iD_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 136, + 11, + 136, + 52, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iA_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 278, + 5, + 280, + 40, + [0, + caml_string_of_jsbytes("Article D521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _iB_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 136, + 11, + 136, + 52, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iE_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 136, + 11, + 136, + 52, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iz_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 286, + 14, + 286, + 55, + [0, + caml_string_of_jsbytes("Article D521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _ip_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("input"),0]]], + _iq_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _ir_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("output"),0]]], + _is_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _it_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 379, + 5, + 383, + 55, + [0, + caml_string_of_jsbytes("Article D755-5"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _iu_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 127, + 11, + 127, + 37, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ij_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("input"),0]]], + _ik_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _il_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("output"),0]]], + _im_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _in_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 389, + 5, + 392, + 56, + [0, + caml_string_of_jsbytes("Article D755-5"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _io_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 127, + 11, + 127, + 37, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iv_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 127, + 11, + 127, + 37, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ii_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 22, + 14, + 22, + 40, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _ie_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), + [0,caml_string_of_jsbytes("input"),0]]], + _if_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), + 0]], + _ig_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), + [0,caml_string_of_jsbytes("output"),0]]], + _ih_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), + 0]], + _iw_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 127, + 11, + 127, + 37, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _id_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 127, + 11, + 127, + 37, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _h__= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 356, + 5, + 357, + 69, + [0, + caml_string_of_jsbytes("Article D755-5"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _h$_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 104, + 11, + 104, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _h7_=[8,0], + _h8_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 151, + 24, + 151, + 44, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _h9_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 104, + 11, + 104, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ia_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 104, + 11, + 104, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _h6_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 18, + 14, + 18, + 34, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _h2_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 199, + 14, + 199, + 39, + [0, + caml_string_of_jsbytes("Article D521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _hY_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_forfaitaire"), + [0,caml_string_of_jsbytes("input"),0]]], + _hZ_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_forfaitaire"),0]], + _h0_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_forfaitaire"), + [0,caml_string_of_jsbytes("output"),0]]], + _h1_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_forfaitaire"),0]], + _hP_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("input"),0]]], + _hQ_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _hR_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("output"),0]]], + _hS_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _hT_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 60, + 5, + 60, + 38, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _hU_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 126, + 11, + 126, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hJ_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("input"),0]]], + _hK_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _hL_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("output"),0]]], + _hM_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _hN_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 101, + 5, + 101, + 38, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _hO_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 126, + 11, + 126, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hD_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("input"),0]]], + _hE_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _hF_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("output"),0]]], + _hG_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _hH_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 138, + 5, + 138, + 38, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _hI_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 126, + 11, + 126, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hx_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("input"),0]]], + _hy_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _hz_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("output"),0]]], + _hA_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _hB_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 28, + 5, + 28, + 44, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _hC_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 126, + 11, + 126, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hV_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 126, + 11, + 126, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hw_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 126, + 11, + 126, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ht_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 128, + 14, + 128, + 41, + [0, + caml_string_of_jsbytes("Article R521-3"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _hl_=[8,0], + _hm_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 350, + 5, + 350, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _hn_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hi_=[8,0], + _hj_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 358, + 5, + 358, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _hk_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hf_=[8,0], + _hg_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 366, + 5, + 366, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _hh_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hc_=[8,0], + _hd_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 374, + 5, + 374, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _he_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _g$_=[8,0], + _ha_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 382, + 5, + 382, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _hb_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _g8_=[8,0], + _g9_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 390, + 5, + 390, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _g__= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _g5_=[8,0], + _g6_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 398, + 5, + 398, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _g7_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _g2_=[8,0], + _g3_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 406, + 5, + 406, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _g4_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gZ_=[8,0], + _g0_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 414, + 5, + 414, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _g1_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gW_=[8,0], + _gX_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 422, + 5, + 422, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _gY_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ho_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gU_=[8,0], + _gV_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 177, + 14, + 177, + 50, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _hp_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gR_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 38, + 14, + 38, + 50, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gS_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gP_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 79, + 14, + 79, + 50, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gQ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gN_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 117, + 14, + 117, + 50, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gO_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gT_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gI_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 43, + 14, + 43, + 59, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gJ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 107, + 11, + 107, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gG_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 84, + 14, + 84, + 59, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gH_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 107, + 11, + 107, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gE_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 122, + 14, + 122, + 59, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gF_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 107, + 11, + 107, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gz_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 221, + 5, + 221, + 42, + [0, + caml_string_of_jsbytes("Article D521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gA_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 121, + 11, + 121, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gx_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 235, + 5, + 236, + 45, + [0, + caml_string_of_jsbytes("Article D521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gy_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 121, + 11, + 121, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gv_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 249, + 5, + 249, + 42, + [0, + caml_string_of_jsbytes("Article D521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gw_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 121, + 11, + 121, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gp_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 165, + 5, + 166, + 65, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gq_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 134, + 11, + 134, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gn_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 174, + 5, + 175, + 65, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _go_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 134, + 11, + 134, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gr_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 134, + 11, + 134, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gm_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 181, + 14, + 181, + 34, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gs_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 134, + 11, + 134, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gl_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 134, + 11, + 134, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gc_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + [0,caml_string_of_jsbytes("input"),0]]], + _gd_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + 0]], + _ge_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + [0,caml_string_of_jsbytes("output"),0]]], + _gf_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + 0]], + _gg_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 315, + 5, + 318, + 21, + [0, + caml_string_of_jsbytes("Article L521-3"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gh_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 125, + 11, + 125, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _f5_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + [0,caml_string_of_jsbytes("input"),0]]], + _f6_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + 0]], + _f7_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + [0,caml_string_of_jsbytes("output"),0]]], + _f8_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + 0]], + _f9_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"), + [0,caml_string_of_jsbytes("input"),0]]], + _f__= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"),0]], + _f$_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"), + [0,caml_string_of_jsbytes("output"),0]]], + _ga_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"),0]], + _gb_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 300, + 5, + 302, + 21, + [0, + caml_string_of_jsbytes("Article L521-3"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gi_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 125, + 11, + 125, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _f4_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 125, + 11, + 125, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gj_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 125, + 11, + 125, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _f3_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 125, + 11, + 125, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fV_=[8,0], + _fW_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 159, + 6, + 159, + 71, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fX_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 103, + 11, + 103, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fU_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 409, + 5, + 410, + 72, + [0, + caml_string_of_jsbytes("Article L755-12"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _fY_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 103, + 11, + 103, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fZ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 103, + 11, + 103, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fT_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 101, + 5, + 101, + 70, + [0, + caml_string_of_jsbytes("Article L521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _f0_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 103, + 11, + 103, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fS_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 103, + 11, + 103, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fK_=[8,0], + _fL_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 251, + 5, + 252, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fM_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fH_=[8,0], + _fI_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 260, + 5, + 261, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fJ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fE_=[8,0], + _fF_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 269, + 5, + 270, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fG_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fB_=[8,0], + _fC_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 278, + 5, + 279, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fD_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fy_=[8,0], + _fz_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 287, + 5, + 288, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fA_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fv_=[8,0], + _fw_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 296, + 5, + 297, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fx_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fs_=[8,0], + _ft_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 305, + 5, + 306, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fu_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fp_=[8,0], + _fq_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 314, + 5, + 315, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fr_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fm_=[8,0], + _fn_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 323, + 5, + 324, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fo_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fj_=[8,0], + _fk_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 332, + 5, + 333, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fl_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fg_=[8,0], + _fh_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 341, + 5, + 341, + 49, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fi_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fN_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fe_=[8,0], + _ff_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 167, + 14, + 167, + 49, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fO_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fc_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 365, + 5, + 366, + 71, + [0, + caml_string_of_jsbytes("Article D755-5"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _fd_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fb_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 362, + 29, + 362, + 64, + [0, + caml_string_of_jsbytes("Article D755-5"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _e9_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 142, + 14, + 142, + 34, + [0, + caml_string_of_jsbytes("Article R521-3"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _e5_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("prise_en_compte"), + [0,caml_string_of_jsbytes("input"),0]]], + _e6_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("prise_en_compte"),0]], + _e7_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("prise_en_compte"), + [0,caml_string_of_jsbytes("output"),0]]], + _e8_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("prise_en_compte"),0]], + _e1_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 160, + 14, + 160, + 34, + [0, + caml_string_of_jsbytes("Article R521-3"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _eU_=[8,0], + _eV_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 431, + 5, + 431, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _eW_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eR_=[8,0], + _eS_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 439, + 5, + 439, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _eT_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eO_=[8,0], + _eP_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 447, + 5, + 447, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _eQ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eL_=[8,0], + _eM_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 455, + 5, + 455, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _eN_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eI_=[8,0], + _eJ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 463, + 5, + 463, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _eK_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eF_=[8,0], + _eG_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 471, + 5, + 471, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _eH_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eC_=[8,0], + _eD_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 479, + 5, + 479, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _eE_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ez_=[8,0], + _eA_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 487, + 5, + 487, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _eB_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ew_=[8,0], + _ex_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 495, + 5, + 495, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _ey_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _et_=[8,0], + _eu_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 503, + 5, + 503, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _ev_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eX_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _es_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 186, + 14, + 186, + 59, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _eo_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 195, + 14, + 195, + 67, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _ei_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 423, + 6, + 424, + 72, + [0, + caml_string_of_jsbytes("Article L755-12"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _ej_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 120, + 11, + 120, + 35, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ed_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0, + caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"), + [0,caml_string_of_jsbytes("input"),0]]], + _ee_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]], + _ef_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0, + caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"), + [0,caml_string_of_jsbytes("output"),0]]], + _eg_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]], + _eh_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 119, + 5, + 126, + 59, + [0, + caml_string_of_jsbytes("Article L521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _ek_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 120, + 11, + 120, + 35, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ec_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 120, + 11, + 120, + 35, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _el_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 120, + 11, + 120, + 35, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eb_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 120, + 11, + 120, + 35, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _d8_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 429, + 5, + 430, + 71, + [0, + caml_string_of_jsbytes("Article L755-12"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _d9_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 132, + 11, + 132, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _d7_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 31, + 9, + 31, + 32, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _d__= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 132, + 11, + 132, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _d6_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 132, + 11, + 132, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _d0_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 23, + 5, + 23, + 67, + [0, + caml_string_of_jsbytes + ("Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), + [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], + _d1_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 149, + 11, + 149, + 27, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dY_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 56, + 5, + 56, + 67, + [0, + caml_string_of_jsbytes + ("Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), + [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], + _dZ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 149, + 11, + 149, + 27, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dW_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 89, + 5, + 89, + 67, + [0, + caml_string_of_jsbytes + ("Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), + [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], + _dX_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 149, + 11, + 149, + 27, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dU_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 116, + 5, + 116, + 67, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations"), + [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]]], + _dV_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 149, + 11, + 149, + 27, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _d2_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 149, + 11, + 149, + 27, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dT_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 304, + 14, + 304, + 30, + [0, + caml_string_of_jsbytes("Article D521-3"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _dN_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 30, + 5, + 30, + 67, + [0, + caml_string_of_jsbytes + ("Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), + [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], + _dO_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 150, + 11, + 150, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dL_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 63, + 5, + 63, + 67, + [0, + caml_string_of_jsbytes + ("Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), + [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], + _dM_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 150, + 11, + 150, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dJ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 96, + 5, + 96, + 67, + [0, + caml_string_of_jsbytes + ("Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), + [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], + _dK_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 150, + 11, + 150, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dH_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 132, + 5, + 132, + 67, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations"), + [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]]], + _dI_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 150, + 11, + 150, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dP_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 150, + 11, + 150, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dG_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 314, + 14, + 314, + 31, + [0, + caml_string_of_jsbytes("Article D521-3"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _dC_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 34, + 14, + 34, + 36, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _dD_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 148, + 11, + 148, + 33, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dB_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 148, + 11, + 148, + 33, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dy_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 75, + 14, + 75, + 64, + [0, + caml_string_of_jsbytes("Article L512-3"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _du_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert"), + [0,caml_string_of_jsbytes("input"),0]]], + _dv_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert"),0]], + _dw_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert"), + [0,caml_string_of_jsbytes("output"),0]]], + _dx_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert"),0]], + _dp_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 83, + 19, + 83, + 67, + [0, + caml_string_of_jsbytes("Article R521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _dq_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 146, + 11, + 146, + 38, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _do_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 56, + 14, + 56, + 41, + [0, + caml_string_of_jsbytes("Article R521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _dr_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 146, + 11, + 146, + 38, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dn_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 146, + 11, + 146, + 38, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _di_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 33, + 14, + 33, + 40, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _dc_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 157, + 14, + 157, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _c__= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 153, + 14, + 153, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _c9_=[1,0], + _c5_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 155, + 14, + 155, + 50, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cZ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 159, + 14, + 159, + 32, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cT_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 64, + 14, + 64, + 44, + [0, + caml_string_of_jsbytes("Article R521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cP_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 294, + 14, + 294, + 35, + [0, + caml_string_of_jsbytes("Article D521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cK_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 259, + 5, + 260, + 56, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cJ_=[1,0], + _cL_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 98, + 11, + 98, + 20, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cE_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 270, + 5, + 271, + 48, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cD_=[0,0], + _cF_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 98, + 11, + 98, + 20, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cC_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 219, + 5, + 219, + 70, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cB_=[0,0], + _cG_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 98, + 11, + 98, + 20, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cA_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 209, + 5, + 209, + 69, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cz_=[0,0], + _cH_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 98, + 11, + 98, + 20, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cy_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 189, + 5, + 189, + 60, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cx_=[0,0], + _cI_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 98, + 11, + 98, + 20, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cM_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 98, + 11, + 98, + 20, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cw_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 98, + 11, + 98, + 20, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cs_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 215, + 5, + 215, + 70, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cr_=[1,0], + _ct_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 97, + 11, + 97, + 26, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cp_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 254, + 5, + 255, + 56, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _co_=[2,0], + _cq_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 97, + 11, + 97, + 26, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ck_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 264, + 5, + 265, + 48, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cj_=[0,0], + _cl_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 97, + 11, + 97, + 26, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ci_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 205, + 5, + 205, + 69, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _ch_=[0,0], + _cm_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 97, + 11, + 97, + 26, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cg_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 185, + 5, + 185, + 60, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cf_=[0,0], + _cn_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 97, + 11, + 97, + 26, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cu_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 97, + 11, + 97, + 26, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ce_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 97, + 11, + 97, + 26, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cv_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("prise_en_compte"),0]], + _cN_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("versement"),0]], + _cQ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 145, + 11, + 145, + 32, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cO_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 145, + 11, + 145, + 32, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cR_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("nombre_enfants_l521_1"),0]], + _cU_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 147, + 11, + 147, + 41, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cS_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 147, + 11, + 147, + 41, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cV_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("nombre_enfants_alin\xc3\xa9a_2_l521_3"),0]], + _cW_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("version_avril_2008"), + [0,caml_string_of_jsbytes("AllocationFamilialesAvril2008"),0]]], + _cX_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("version_avril_2008"), + [0,caml_string_of_jsbytes("AllocationFamilialesAvril2008"),0]]], + _c0_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 159, + 14, + 159, + 32, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _c1_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("bmaf.date_courante"),0]], + _cY_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 159, + 14, + 159, + 32, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _c2_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("bmaf"), + [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], + _c3_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("bmaf"), + [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], + _c6_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 155, + 14, + 155, + 50, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _c7_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("prestations_familiales.date_courante"),0]], + _c4_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 155, + 14, + 155, + 50, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _c$_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 153, + 14, + 153, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _da_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("prestations_familiales.prestation_courante"), + 0]], + _c8_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 153, + 14, + 153, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dd_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 157, + 14, + 157, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _de_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("prestations_familiales.r\xc3\xa9sidence"),0]], + _db_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 157, + 14, + 157, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _df_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("prestations_familiales"), + [0,caml_string_of_jsbytes("PrestationsFamiliales"),0]]], + _dg_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("prestations_familiales"), + [0,caml_string_of_jsbytes("PrestationsFamiliales"),0]]], + _dj_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 33, + 14, + 33, + 40, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _dk_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("enfant_le_plus_\xc3\xa2g\xc3\xa9.enfants"), + 0]], + _dh_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 33, + 14, + 33, + 40, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _dl_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("enfant_le_plus_\xc3\xa2g\xc3\xa9"), + [0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9"),0]]], + _dm_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("enfant_le_plus_\xc3\xa2g\xc3\xa9"), + [0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9"),0]]], + _ds_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + 0]], + _dz_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 95, + 11, + 95, + 61, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dt_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 95, + 11, + 95, + 61, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dA_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("enfants_\xc3\xa0_charge_droit_ouvert_prestation_familiale"), + 0]], + _dE_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"),0]], + _dQ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 150, + 11, + 150, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dF_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 150, + 11, + 150, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dR_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("plafond_II_d521_3"),0]], + _d3_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 149, + 11, + 149, + 27, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dS_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 149, + 11, + 149, + 27, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _d4_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("plafond_I_d521_3"),0]], + _d$_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 132, + 11, + 132, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _d5_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 132, + 11, + 132, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ea_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_compl\xc3\xa9ment"),0]], + _em_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_forfaitaire"),0]], + _ep_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 117, + 11, + 117, + 64, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _en_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 117, + 11, + 117, + 64, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eq_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_initial_base_quatri\xc3\xa8me_enfant_et_plus_mayotte"), + 0]], + _eY_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _er_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eZ_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_initial_base_troisi\xc3\xa8me_enfant_mayotte"), + 0]], + _e2_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 110, + 11, + 110, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _e0_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 110, + 11, + 110, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _e3_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("nombre_total_enfants"),0]], + _e__= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 109, + 11, + 109, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _e4_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 109, + 11, + 109, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _e$_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("nombre_moyen_enfants"),0]], + _fP_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fa_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fQ_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_initial_base_premier_enfant"),0]], + _f1_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 103, + 11, + 103, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fR_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 103, + 11, + 103, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _f2_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_base"),0]], + _gk_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _gt_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"),0]], + _gB_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 121, + 11, + 121, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gu_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 121, + 11, + 121, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gC_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("montant_vers\xc3\xa9_forfaitaire_par_enfant"), + 0]], + _gK_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 107, + 11, + 107, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gD_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 107, + 11, + 107, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gL_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_initial_base_troisi\xc3\xa8me_enfant_et_plus"), + 0]], + _hq_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gM_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hr_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("montant_initial_base_deuxi\xc3\xa8me_enfant"), + 0]], + _hu_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 108, + 11, + 108, + 38, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hs_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 108, + 11, + 108, + 38, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hv_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("rapport_enfants_total_moyen"),0]], + _hW_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), + 0]], + _h3_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 122, + 11, + 122, + 36, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hX_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 122, + 11, + 122, + 36, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _h4_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_vers\xc3\xa9_forfaitaire"),0]], + _ib_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 104, + 11, + 104, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _h5_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 104, + 11, + 104, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ic_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_initial_base"),0]], + _ix_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_initial_majoration"),0]], + _iF_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 136, + 11, + 136, + 52, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iy_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 136, + 11, + 136, + 52, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iG_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_forfaitaire"), + 0]], + _iJ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 111, + 11, + 111, + 43, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iH_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 111, + 11, + 111, + 43, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iK_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_avec_garde_altern\xc3\xa9e_base"),0]], + _iW_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_avec_garde_altern\xc3\xa9e_majoration"), + 0]], + _iZ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 112, + 11, + 112, + 29, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iX_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 112, + 11, + 112, + 29, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _i0_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_vers\xc3\xa9_base"),0]], + _i7_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 129, + 11, + 129, + 35, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _i1_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 129, + 11, + 129, + 35, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _i8_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_vers\xc3\xa9_majoration"),0]], + _i$_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 133, + 11, + 133, + 58, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _i9_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 133, + 11, + 133, + 58, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ja_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_base_compl\xc3\xa9ment_pour_base_et_majoration"), + 0]], + _jh_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 135, + 11, + 135, + 59, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _jb_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 135, + 11, + 135, + 59, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ji_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_base_et_majoration"), + 0]], + _jl_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 100, + 12, + 100, + 25, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _jj_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 100, + 12, + 100, + 25, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _jm_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_vers\xc3\xa9"),0]], + _jn_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 231, + 5, + 235, + 6, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _jo_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 231, + 5, + 235, + 6, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _b$_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/autres_codes.catala_fr"), + 24, + 5, + 24, + 63, + [0, + caml_string_of_jsbytes("Article L821-3"), + [0, + caml_string_of_jsbytes + ("Sous-section 1 : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Section 2 : R\xc3\xa8gles de non-cumul"), + [0, + caml_string_of_jsbytes + ("Chapitre Ier : Principes g\xc3\xa9n\xc3\xa9raux"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _ca_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 57, + 12, + 57, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _b7_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 60, + 5, + 62, + 62, + [0, + caml_string_of_jsbytes("Article L512-3"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _b8_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 57, + 12, + 57, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _b6_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 49, + 5, + 50, + 50, + [0, + caml_string_of_jsbytes("Article L512-3"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _b9_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 57, + 12, + 57, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _b__= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 57, + 12, + 57, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cb_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 57, + 12, + 57, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _b5_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 57, + 12, + 57, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cc_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 57, + 12, + 57, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _b4_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 57, + 12, + 57, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _b0_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 68, + 5, + 71, + 56, + [0, + caml_string_of_jsbytes("Article L512-3"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _b1_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 58, + 12, + 58, + 31, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bZ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 58, + 12, + 58, + 31, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _b2_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 58, + 12, + 58, + 31, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bY_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 58, + 12, + 58, + 31, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bU_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 215, + 18, + 215, + 41, + [0, + caml_string_of_jsbytes("Article R755-0-2"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _bV_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 59, + 11, + 59, + 27, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bT_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 31, + 14, + 31, + 30, + [0, + caml_string_of_jsbytes("Article R512-2"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application."), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _bI_=[5,0], + _bJ_=[4,0], + _bK_=[3,0], + _bL_=[2,0], + _bM_=[1,0], + _bN_=[0,0], + _bO_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 357, + 5, + 362, + 30, + [0, + caml_string_of_jsbytes("Article L751-1"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _bP_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 61, + 12, + 61, + 35, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bH_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 61, + 12, + 61, + 35, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bB_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 68, + 14, + 68, + 28, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bx_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 69, + 14, + 69, + 32, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bt_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 21, + 14, + 21, + 26, + [0, + caml_string_of_jsbytes("Article R512-2"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application."), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _bu_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 60, + 12, + 60, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bs_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 60, + 12, + 60, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bv_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2"),0]], + _by_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 69, + 14, + 69, + 32, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bz_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("smic.date_courante"),0]], + _bw_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 69, + 14, + 69, + 32, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bC_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 68, + 14, + 68, + 28, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bD_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("smic.r\xc3\xa9sidence"),0]], + _bA_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 68, + 14, + 68, + 28, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bE_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]], + _bF_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]], + _bQ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 61, + 12, + 61, + 35, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bG_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 61, + 12, + 61, + 35, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bR_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1"),0]], + _bW_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 59, + 11, + 59, + 27, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bS_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 59, + 11, + 59, + 27, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bX_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("plafond_l512_3_2"),0]], + _b3_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]], + _cd_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert"),0]], + _bo_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 28, + 5, + 29, + 33, + [0, + caml_string_of_jsbytes + ("Instruction minist\xc3\xa9rielle N\xc2\xb0DSS/SD2B/2019/65 du 25 mars 2019 relative \xc3\xa0 la revalorisation au 1er avril 2019 des prestations familiales servies en m\xc3\xa9tropole"), + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]]], + _bp_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _bm_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 48, + 5, + 49, + 33, + [0, + caml_string_of_jsbytes + ("Instruction interminist\xc3\xa9rielle no DSS/SD2B/2020/33 du 18 f\xc3\xa9vrier 2020 relative \xc3\xa0 la revalorisation au 1er avril 2020 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]]], + _bn_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _bk_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 64, + 5, + 65, + 33, + [0, + caml_string_of_jsbytes + ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2021/65 du 19 mars 2021 relative \xc3\xa0 la revalorisation au 1er avril 2021 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]]], + _bl_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _bi_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 82, + 5, + 83, + 33, + [0, + caml_string_of_jsbytes + ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2022/82 du 28 mars 2022 relative \xc3\xa0 la revalorisation au 1er avril 2022 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]]], + _bj_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _bq_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _bh_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _br_= + [0, + caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant"),0]], + _a7_=[7,0], + _a8_=[5,0], + _a9_=[4,0], + _a__=[3,0], + _a$_=[2,0], + _ba_=[1,0], + _bb_=[0,0], + _bc_=[6,0], + _bd_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 29, + 5, + 38, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _be_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _a4_=[8,0], + _a5_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 47, + 5, + 49, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _a6_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _aU_=[7,0], + _aV_=[5,0], + _aW_=[4,0], + _aX_=[3,0], + _aY_=[2,0], + _aZ_=[1,0], + _a0_=[0,0], + _a1_=[6,0], + _a2_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 68, + 5, + 77, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _a3_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _aR_=[8,0], + _aS_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 86, + 5, + 88, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _aT_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _aH_=[7,0], + _aI_=[5,0], + _aJ_=[4,0], + _aK_=[3,0], + _aL_=[2,0], + _aM_=[1,0], + _aN_=[0,0], + _aO_=[6,0], + _aP_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 107, + 5, + 116, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _aQ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _aE_=[8,0], + _aF_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 125, + 5, + 127, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _aG_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _au_=[7,0], + _av_=[5,0], + _aw_=[4,0], + _ax_=[3,0], + _ay_=[2,0], + _az_=[1,0], + _aA_=[0,0], + _aB_=[6,0], + _aC_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 146, + 5, + 155, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _aD_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _ar_=[8,0], + _as_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 165, + 5, + 167, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _at_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _ah_=[7,0], + _ai_=[5,0], + _aj_=[4,0], + _ak_=[3,0], + _al_=[2,0], + _am_=[1,0], + _an_=[0,0], + _ao_=[6,0], + _ap_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 186, + 5, + 195, + 6, + [0, + caml_string_of_jsbytes("Article 2"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _aq_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _ae_=[8,0], + _af_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 204, + 5, + 206, + 6, + [0, + caml_string_of_jsbytes("Article 2"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _ag_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _W_=[7,0], + _X_=[5,0], + _Y_=[4,0], + _Z_=[3,0], + ___=[2,0], + _$_=[1,0], + _aa_=[0,0], + _ab_=[6,0], + _ac_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 225, + 5, + 234, + 6, + [0, + caml_string_of_jsbytes("Article 2"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 29 juillet 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _ad_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _T_=[8,0], + _U_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 243, + 5, + 245, + 6, + [0, + caml_string_of_jsbytes("Article 2"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 29 juillet 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _V_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _J_=[7,0], + _K_=[5,0], + _L_=[4,0], + _M_=[3,0], + _N_=[2,0], + _O_=[1,0], + _P_=[0,0], + _Q_=[6,0], + _R_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 265, + 5, + 274, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2022-1608 du 22 d\xc3\xa9cembre 2022 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _S_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _G_=[8,0], + _H_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 283, + 5, + 285, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2022-1608 du 22 d\xc3\xa9cembre 2022 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _I_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _bf_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _F_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _bg_= + [0, + caml_string_of_jsbytes("Smic"), + [0,caml_string_of_jsbytes("brut_horaire"),0]], + _C_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 12, + 14, + 12, + 25, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _A_=[2,0], + _B_=[1,0], + _D_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 80, + 12, + 80, + 23, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _z_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 80, + 12, + 80, + 23, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _E_= + [0, + caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9"), + [0,caml_string_of_jsbytes("le_plus_\xc3\xa2g\xc3\xa9"),0]], + _w_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 78, + 14, + 78, + 41, + [0, + caml_string_of_jsbytes("Article R521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _x_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 76, + 12, + 76, + 39, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _v_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 76, + 12, + 76, + 39, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _y_= + [0, + caml_string_of_jsbytes("AllocationFamilialesAvril2008"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + 0]], + _u_=[0,caml_string_of_jsbytes("InterfaceAllocationsFamiliales_in"),0], + _t_=[0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales_in"),0], + _s_=[0,caml_string_of_jsbytes("Smic_in"),0], + _r_=[0,caml_string_of_jsbytes("AllocationsFamiliales_in"),0], + _q_=[0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9_in"),0], + _p_=[0,caml_string_of_jsbytes("PrestationsFamiliales_in"),0], + _o_=[0,caml_string_of_jsbytes("PrestationsFamiliales"),0], + _n_=[0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9"),0], + _m_=[0,caml_string_of_jsbytes("Enfant"),0], + _l_=[0,caml_string_of_jsbytes("EnfantEntr\xc3\xa9e"),0], + _k_=[0,caml_string_of_jsbytes("InterfaceAllocationsFamiliales"),0], + _j_=[0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0], + _i_=[0,caml_string_of_jsbytes("Smic"),0], + _h_=[0,caml_string_of_jsbytes("AllocationsFamiliales"),0], + _g_=[0,caml_string_of_jsbytes("AllocationFamilialesAvril2008"),0], + _f_=[0,caml_string_of_jsbytes("Collectivit\xc3\xa9"),0], + _e_= + [0, + caml_string_of_jsbytes("\xc3\x89l\xc3\xa9mentPrestationsFamiliales"), + 0], + _d_=[0,caml_string_of_jsbytes("VersementAllocations"),0], + _c_=[0,caml_string_of_jsbytes("PriseEnCompte"),0], + _b_=[0,caml_string_of_jsbytes("SituationObligationScolaire"),0], + _a_=[0,caml_string_of_jsbytes("PriseEnCharge"),0], + _kz_=[7,0], + _kA_=[5,0], + _kB_=[4,0], + _kC_=[6,0], + _kD_=[8,0], + _kE_=[2,0], + _kF_=[3,0], + _kG_=[1,0], + _kH_=[0,0], + _ky_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'Collectivite.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'Collectivite.t'")], + _kq_=[0,0], + _kr_=[2,0], + _ks_=[1,0], + _kt_=[5,0], + _ku_=[6,0], + _kv_=[3,0], + _kw_=[7,0], + _kx_=[4,0], + _kp_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'ElementPrestationsFamiliales.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'ElementPrestationsFamiliales.t'")], + _kn_=[0,0], + _ko_=[1,0], + _km_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'VersementAllocations.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'VersementAllocations.t'")], + _kj_=[2,0], + _kk_=[1,0], + _kl_=[0,0], + _ki_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'PriseEnCompte.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'PriseEnCompte.t'")], + _kf_=[1,0], + _kg_=[0,0], + _kh_=[2,0], + _ke_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'SituationObligationScolaire.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'SituationObligationScolaire.t'")], + _j$_=[4,0], + _ka_=[3,0], + _kb_=[0,0], + _kc_=[1,0], + _kd_=[2,0], + _j__= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'PriseEnCharge.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'PriseEnCharge.t'")], + _Vy_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/autres_sources.catala_fr"), + 284, + 14, + 284, + 25, + [0, + caml_string_of_jsbytes + ("Conseil d'\xc3\x89tat, 5\xc3\xa8me - 4\xc3\xa8me chambres r\xc3\xa9unies, 21/07/2017, 398563"), + 0]], + _Vu_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input"),0]]], + _Vv_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Vw_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Vx_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Vq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1148, + 14, + 1148, + 63, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1176, + 14, + 1176, + 25, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1144, + 5, + 1144, + 70, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1141, + 14, + 1141, + 58, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _U__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1139, + 14, + 1139, + 54, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _U6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1137, + 14, + 1137, + 51, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _U0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1135, + 14, + 1135, + 59, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1133, + 14, + 1133, + 38, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _US_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1131, + 14, + 1131, + 34, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1129, + 14, + 1129, + 31, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1150, + 14, + 1150, + 48, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1118, + 11, + 1118, + 45, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1118, + 11, + 1118, + 45, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UM_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes + ("m\xc3\xa9nage_sans_enfants_garde_altern\xc3\xa9e"), + 0]], + _UP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1129, + 14, + 1129, + 31, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UQ_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0,caml_string_of_jsbytes("calculette.m\xc3\xa9nage"),0]], + _UN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1129, + 14, + 1129, + 31, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1131, + 14, + 1131, + 34, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UU_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0,caml_string_of_jsbytes("calculette.demandeur"),0]], + _UR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1131, + 14, + 1131, + 34, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1133, + 14, + 1133, + 38, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UY_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0,caml_string_of_jsbytes("calculette.date_courante"),0]], + _UV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1133, + 14, + 1133, + 38, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _U1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1135, + 14, + 1135, + 59, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _U2_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes + ("calculette.ressources_m\xc3\xa9nage_prises_en_compte"), + 0]], + _UZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1135, + 14, + 1135, + 59, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _U3_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes("calculette"), + [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]], + _U4_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes("calculette"), + [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]], + _U7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1137, + 14, + 1137, + 51, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _U8_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes + ("calculette_sans_garde_altern\xc3\xa9e.m\xc3\xa9nage"), + 0]], + _U5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1137, + 14, + 1137, + 51, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _U$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1139, + 14, + 1139, + 54, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Va_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes + ("calculette_sans_garde_altern\xc3\xa9e.demandeur"), + 0]], + _U9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1139, + 14, + 1139, + 54, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1141, + 14, + 1141, + 58, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ve_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes + ("calculette_sans_garde_altern\xc3\xa9e.date_courante"), + 0]], + _Vb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1141, + 14, + 1141, + 58, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1144, + 5, + 1144, + 70, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vi_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes + ("calculette_sans_garde_altern\xc3\xa9e.ressources_m\xc3\xa9nage_prises_en_compte"), + 0]], + _Vf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1144, + 5, + 1144, + 70, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vj_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes("calculette_sans_garde_altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]], + _Vk_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes("calculette_sans_garde_altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]], + _Vn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1125, + 12, + 1125, + 23, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1125, + 12, + 1125, + 23, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vo_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]], + _Vr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1119, + 11, + 1119, + 60, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1119, + 11, + 1119, + 60, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vs_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes + ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), + 0]], + _Vz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1126, + 12, + 1126, + 23, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vt_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1126, + 12, + 1126, + 23, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _VA_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0,caml_string_of_jsbytes("aide_finale"),0]], + _UG_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1075, + 14, + 1075, + 33, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Uy_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input"),0]]], + _Uz_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _UA_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _UB_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _UC_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input"),0]]], + _UD_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _UE_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _UF_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Uu_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1092, + 14, + 1092, + 36, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Um_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input"),0]]], + _Un_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Uo_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Up_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Uq_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input"),0]]], + _Ur_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Us_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Ut_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Uv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1054, + 12, + 1054, + 34, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ul_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1054, + 12, + 1054, + 34, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ui_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1054, + 14, + 1054, + 25, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Ue_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1099, + 14, + 1099, + 63, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _T__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1094, + 14, + 1094, + 62, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _T6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1090, + 14, + 1090, + 53, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _T2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1084, + 5, + 1084, + 65, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1079, + 14, + 1079, + 68, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1075, + 14, + 1075, + 66, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TQ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1063, + 14, + 1063, + 58, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _TP_=[0,0], + _TL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1071, + 14, + 1071, + 64, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TF_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1065, + 14, + 1065, + 50, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _TC_=[2,0], + _TD_=[1,0], + _TE_=[2,0], + _Ty_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1096, + 14, + 1096, + 54, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1092, + 14, + 1092, + 45, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1088, + 14, + 1088, + 66, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1081, + 14, + 1081, + 60, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ti_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1077, + 14, + 1077, + 58, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Te_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1073, + 14, + 1073, + 56, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _S__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1067, + 14, + 1067, + 67, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _S6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1063, + 14, + 1063, + 63, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _S2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1059, + 14, + 1059, + 60, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _SW_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1049, + 5, + 1049, + 74, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _SS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1065, + 14, + 1065, + 55, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _SO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1061, + 14, + 1061, + 52, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _SK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1069, + 14, + 1069, + 59, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _SL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1069, + 14, + 1069, + 59, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _SM_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.date_courante"), + 0]], + _SJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1069, + 14, + 1069, + 59, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _SP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1061, + 14, + 1061, + 52, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _SQ_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.m\xc3\xa9nage"), + 0]], + _SN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1061, + 14, + 1061, + 52, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _ST_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1065, + 14, + 1065, + 55, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _SU_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.demandeur"), + 0]], + _SR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1065, + 14, + 1065, + 55, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _SX_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1049, + 5, + 1049, + 74, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _SY_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.b\xc3\xa9n\xc3\xa9ficie_aide_personnalis\xc3\xa9e_logement"), + 0]], + _SV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1049, + 5, + 1049, + 74, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _SZ_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement"), + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + 0]]], + _S0_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement"), + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + 0]]], + _S3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1059, + 14, + 1059, + 60, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _S4_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.m\xc3\xa9nage"), + 0]], + _S1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1059, + 14, + 1059, + 60, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _S7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1063, + 14, + 1063, + 63, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _S8_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.demandeur"), + 0]], + _S5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1063, + 14, + 1063, + 63, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _S$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1067, + 14, + 1067, + 67, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ta_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.date_courante"), + 0]], + _S9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1067, + 14, + 1067, + 67, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tb_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + 0]]], + _Tc_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + 0]]], + _Tf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1073, + 14, + 1073, + 56, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tg_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes("calcul_allocation_logement.mode_occupation"), + 0]], + _Td_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1073, + 14, + 1073, + 56, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1077, + 14, + 1077, + 58, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tk_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_allocation_logement.ressources_m\xc3\xa9nage_sans_arrondi"), + 0]], + _Th_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1077, + 14, + 1077, + 58, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1081, + 14, + 1081, + 60, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _To_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_allocation_logement.situation_familiale"), + 0]], + _Tl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1081, + 14, + 1081, + 60, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1088, + 14, + 1088, + 66, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ts_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_allocation_logement.nombre_personnes_\xc3\xa0_charge"), + 0]], + _Tp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1088, + 14, + 1088, + 66, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1092, + 14, + 1092, + 45, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tw_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0,caml_string_of_jsbytes("calcul_allocation_logement.zone"),0]], + _Tt_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1092, + 14, + 1092, + 45, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1096, + 14, + 1096, + 54, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TA_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes("calcul_allocation_logement.date_courante"), + 0]], + _Tx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1096, + 14, + 1096, + 54, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TG_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1065, + 14, + 1065, + 50, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _TH_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0,caml_string_of_jsbytes("calcul_allocation_logement.type_aide"),0]], + _TB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1065, + 14, + 1065, + 50, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _TI_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes("calcul_allocation_logement"), + [0,caml_string_of_jsbytes("CalculAllocationLogement"),0]]], + _TJ_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes("calcul_allocation_logement"), + [0,caml_string_of_jsbytes("CalculAllocationLogement"),0]]], + _TM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1071, + 14, + 1071, + 64, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TN_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_aide_personnalis\xc3\xa9e_logement.mode_occupation"), + 0]], + _TK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1071, + 14, + 1071, + 64, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1063, + 14, + 1063, + 58, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _TS_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_aide_personnalis\xc3\xa9e_logement.type_aide"), + 0]], + _TO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1063, + 14, + 1063, + 58, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _TV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1075, + 14, + 1075, + 66, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TW_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_aide_personnalis\xc3\xa9e_logement.ressources_m\xc3\xa9nage_sans_arrondi"), + 0]], + _TT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1075, + 14, + 1075, + 66, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1079, + 14, + 1079, + 68, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _T0_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_aide_personnalis\xc3\xa9e_logement.situation_familiale"), + 0]], + _TX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1079, + 14, + 1079, + 68, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _T3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1084, + 5, + 1084, + 65, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _T4_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_aide_personnalis\xc3\xa9e_logement.nombre_personnes_\xc3\xa0_charge"), + 0]], + _T1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1084, + 5, + 1084, + 65, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _T7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1090, + 14, + 1090, + 53, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _T8_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_aide_personnalis\xc3\xa9e_logement.zone"), + 0]], + _T5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1090, + 14, + 1090, + 53, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _T$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1094, + 14, + 1094, + 62, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ua_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_aide_personnalis\xc3\xa9e_logement.date_courante"), + 0]], + _T9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1094, + 14, + 1094, + 62, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ub_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes("calcul_aide_personnalis\xc3\xa9e_logement"), + [0,caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),0]]], + _Uc_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes("calcul_aide_personnalis\xc3\xa9e_logement"), + [0,caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),0]]], + _Uf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1055, + 12, + 1055, + 61, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ud_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1055, + 12, + 1055, + 61, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ug_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), + 0]], + _Uj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1052, + 12, + 1052, + 23, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Uh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1052, + 12, + 1052, + 23, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Uk_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]], + _Uw_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _UH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1053, + 12, + 1053, + 31, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ux_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1053, + 12, + 1053, + 31, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UI_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0,caml_string_of_jsbytes("aide_finale_formule"),0]], + _SG_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1406, + 14, + 1406, + 33, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _SC_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1408, + 14, + 1408, + 36, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _SD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 991, + 12, + 991, + 34, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _SB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 991, + 12, + 991, + 34, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _Sy_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1520, + 14, + 1520, + 36, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Sr_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input"),0]]], + _Ss_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _St_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Su_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Si_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input"),0]]], + _Sj_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Sk_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Sl_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _R__= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input"),0]]], + _R$_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Sa_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Sb_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _R1_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input"),0]]], + _R2_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _R3_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _R4_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _RS_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input"),0]]], + _RT_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _RU_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _RV_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _RP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1539, + 16, + 1542, + 39, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _RQ_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("input"),0]]], + _RR_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("direct"),0]], + _RW_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1524, + 9, + 1545, + 10, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _RX_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("output"),0]]], + _RY_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("direct"),0]], + _RZ_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("input"),0]]], + _R0_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("direct"),0]], + _R5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1588, + 9, + 1599, + 10, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _R6_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("output"),0]]], + _R7_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("direct"),0]], + _R8_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("input"),0]]], + _R9_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("direct"),0]], + _Sc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1609, + 10, + 1624, + 11, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Sd_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("output"),0]]], + _Se_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("direct"),0]], + _Sf_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1571, + 16, + 1574, + 39, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Sg_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("input"),0]]], + _Sh_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("direct"),0]], + _Sm_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1556, + 9, + 1577, + 10, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Sn_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("output"),0]]], + _So_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("direct"),0]], + _Sp_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("input"),0]]], + _Sq_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("direct"),0]], + _Sv_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1636, + 10, + 1651, + 11, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Sw_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("output"),0]]], + _Sx_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("direct"),0]], + _RL_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 88, + 14, + 88, + 44, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _RF_=[0,0], + _RG_=[1,0], + _RH_=[1,0], + _RI_=[1,0], + _RJ_=[0,0], + _RK_=[1,0], + _RB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4811, + 14, + 4811, + 31, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Rx_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1395, + 14, + 1395, + 34, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Ry_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 985, + 11, + 985, + 31, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _Rw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 985, + 11, + 985, + 31, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _Rz_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("cat\xc3\xa9gorie_calcul_apl"),0]], + _RC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 978, + 10, + 978, + 22, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _RA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 978, + 10, + 978, + 22, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _RD_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("ressources_m\xc3\xa9nage_avec_arrondi"),0]], + _RM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 986, + 11, + 986, + 41, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _RE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 986, + 11, + 986, + 41, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _RN_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("situation_familiale_calcul_apl"),0]], + _Sz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 988, + 11, + 988, + 33, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _RO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 988, + 11, + 988, + 33, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _SA_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("sous_calcul_traitement"),0]], + _SE_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _SH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 990, + 12, + 990, + 31, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _SF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 990, + 12, + 990, + 31, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _SI_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("aide_finale_formule"),0]], + _Rr_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1124, + 5, + 1124, + 73, + [0, + caml_string_of_jsbytes("Article L841-3"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Rq_=[2,0], + _Rs_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 412, + 10, + 412, + 16, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ro_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1137, + 5, + 1140, + 28, + [0, + caml_string_of_jsbytes("Article L841-4"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Rn_=[0,0], + _Rp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 412, + 10, + 412, + 16, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Rt_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 412, + 10, + 412, + 16, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Rm_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1033, + 14, + 1033, + 25, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Ri_=[0,0], + _Rj_=[0,0], + _Rk_=[1,0], + _Rl_=[2,0], + _Q$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1002, + 5, + 1006, + 29, + [0, + caml_string_of_jsbytes("Article L841-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Ra_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 403, + 11, + 403, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Q7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 979, + 5, + 990, + 13, + [0, + caml_string_of_jsbytes("Article L841-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Q8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 403, + 11, + 403, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Q2_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("condition_2_r823_4"), + [0,caml_string_of_jsbytes("input"),0]]], + _Q3_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], + _Q4_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("condition_2_r823_4"), + [0,caml_string_of_jsbytes("output"),0]]], + _Q5_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], + _Q6_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 961, + 5, + 963, + 9, + [0, + caml_string_of_jsbytes("Article L841-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Q9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 403, + 11, + 403, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Q__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 403, + 11, + 403, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Rb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 403, + 11, + 403, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _QV_=[2,0], + _Q0_=[0,0], + _QW_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert"), + [0,caml_string_of_jsbytes("input"),0]]], + _QX_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert"),0]], + _QY_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert"), + [0,caml_string_of_jsbytes("output"),0]]], + _QZ_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert"),0]], + _Q1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 922, + 5, + 947, + 29, + [0, + caml_string_of_jsbytes("Article L841-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Rc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 403, + 11, + 403, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _QO_=[2,0], + _QT_=[0,0], + _QP_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert"), + [0,caml_string_of_jsbytes("input"),0]]], + _QQ_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert"),0]], + _QR_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert"), + [0,caml_string_of_jsbytes("output"),0]]], + _QS_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert"),0]], + _QU_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 890, + 5, + 911, + 8, + [0, + caml_string_of_jsbytes("Article L841-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Rd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 403, + 11, + 403, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _QJ_=[4,0], + _QK_=[3,0], + _QL_=[1,0], + _QM_=[0,0], + _QN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 870, + 5, + 875, + 6, + [0, + caml_string_of_jsbytes("Article L841-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Re_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 403, + 11, + 403, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _QI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 403, + 11, + 403, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _QE_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 840, + 14, + 840, + 25, + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]], + _QC_=[0,0], + _QD_=[2,0], + _Qy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 431, + 14, + 431, + 56, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 433, + 14, + 433, + 63, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qo_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4769, + 9, + 4769, + 55, + [0, + caml_string_of_jsbytes("Article R842-14"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Qp_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4769, + 9, + 4769, + 55, + [0, + caml_string_of_jsbytes("Article R842-14"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Qq_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_surface"), + 0]], + _Ql_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4768, + 9, + 4768, + 68, + [0, + caml_string_of_jsbytes("Article R842-14"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Qm_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4768, + 9, + 4768, + 68, + [0, + caml_string_of_jsbytes("Article R842-14"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Qn_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_r\xc3\xa9sidence_principale"), + 0]], + _Qi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 429, + 14, + 429, + 47, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qe_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 428, + 14, + 428, + 43, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qa_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 427, + 14, + 427, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _P3_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4364, + 5, + 4369, + 28, + [0, + caml_string_of_jsbytes("Article R842-5"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _P4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 401, + 11, + 401, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _P2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4347, + 5, + 4352, + 28, + [0, + caml_string_of_jsbytes("Article R842-5"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _P5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 401, + 11, + 401, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _P1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4330, + 5, + 4337, + 28, + [0, + caml_string_of_jsbytes("Article R842-5"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _P6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 401, + 11, + 401, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _P7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 401, + 11, + 401, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _P0_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4300, + 5, + 4302, + 28, + [0, + caml_string_of_jsbytes("Article R842-5"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _P8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 401, + 11, + 401, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 401, + 11, + 401, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 425, + 14, + 425, + 46, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PS_=[6,0], + _PO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 421, + 14, + 421, + 56, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PN_=[1,0], + _PJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 420, + 14, + 420, + 50, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PF_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4171, + 14, + 4171, + 28, + [0, + caml_string_of_jsbytes("Article D841-1"), + [0, + caml_string_of_jsbytes("Chapitre 1 : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _PG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 404, + 11, + 404, + 25, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 404, + 11, + 404, + 25, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PH_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0,caml_string_of_jsbytes("dur\xc3\xa9e_l841_1_3"),0]], + _PK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 420, + 14, + 420, + 50, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PL_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0,caml_string_of_jsbytes("prestations_familiales.date_courante"),0]], + _PI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 420, + 14, + 420, + 50, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 421, + 14, + 421, + 56, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PQ_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes("prestations_familiales.prestation_courante"), + 0]], + _PM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 421, + 14, + 421, + 56, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 425, + 14, + 425, + 46, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PV_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0,caml_string_of_jsbytes("prestations_familiales.r\xc3\xa9sidence"),0]], + _PR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 425, + 14, + 425, + 46, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PW_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes("prestations_familiales"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + 0]]], + _PX_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes("prestations_familiales"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + 0]]], + _P9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 401, + 11, + 401, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 401, + 11, + 401, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _P__= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes("condition_accession_propri\xc3\xa9t\xc3\xa9"), + 0]], + _Qb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 427, + 14, + 427, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qc_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_commune.m\xc3\xa9nage"), + 0]], + _P$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 427, + 14, + 427, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 428, + 14, + 428, + 43, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qg_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune.demandeur"), + 0]], + _Qd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 428, + 14, + 428, + 43, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 429, + 14, + 429, + 47, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qk_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_commune.date_courante"), + 0]], + _Qh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 429, + 14, + 429, + 47, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qr_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + 0]]], + _Qs_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + 0]]], + _Qv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 414, + 12, + 414, + 61, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qt_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 414, + 12, + 414, + 61, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qw_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes + ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), + 0]], + _Qz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 413, + 12, + 413, + 54, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 413, + 12, + 413, + 54, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _QA_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes + ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), + 0]], + _QF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 411, + 10, + 411, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _QB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 411, + 10, + 411, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _QG_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_dispositions_communes"), + 0]], + _Rf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 403, + 11, + 403, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _QH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 403, + 11, + 403, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Rg_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement_familiale"), + 0]], + _Ru_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 412, + 10, + 412, + 16, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Rh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 412, + 10, + 412, + 16, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Rv_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_l841_2"),0]], + _PA_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 591, + 5, + 593, + 36, + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]], + _PB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 370, + 12, + 370, + 23, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 370, + 12, + 370, + 23, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 381, + 14, + 381, + 56, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 383, + 14, + 383, + 63, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ph_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3693, + 5, + 3698, + 30, + [0, + caml_string_of_jsbytes("Article R832-21"), + [0, + caml_string_of_jsbytes + ("Sous-Section 1 : Conditions d'assimilation des logements-foyers aux logements \xc3\xa0 usage locatif"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Pi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 363, + 11, + 363, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pd_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), + [0,caml_string_of_jsbytes("input"),0]]], + _Pe_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), + 0]], + _Pf_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), + [0,caml_string_of_jsbytes("output"),0]]], + _Pg_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), + 0]], + _Pc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 701, + 5, + 704, + 30, + [0, + caml_string_of_jsbytes("Article L831-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Pj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 363, + 11, + 363, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pb_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 684, + 5, + 687, + 30, + [0, + caml_string_of_jsbytes("Article L831-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Pk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 363, + 11, + 363, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pa_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 641, + 5, + 650, + 30, + [0, + caml_string_of_jsbytes("Article L831-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Pl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 363, + 11, + 363, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _O8_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), + [0,caml_string_of_jsbytes("input"),0]]], + _O9_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), + 0]], + _O__= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), + [0,caml_string_of_jsbytes("output"),0]]], + _O$_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), + 0]], + _O7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 620, + 5, + 623, + 30, + [0, + caml_string_of_jsbytes("Article L831-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Pm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 363, + 11, + 363, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 363, + 11, + 363, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _O6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 363, + 11, + 363, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _O0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 379, + 14, + 379, + 47, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 378, + 14, + 378, + 43, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 377, + 14, + 377, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OL_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 740, + 5, + 753, + 30, + [0, + caml_string_of_jsbytes("Article L831-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _OM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 364, + 11, + 364, + 34, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OK_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 721, + 5, + 726, + 30, + [0, + caml_string_of_jsbytes("Article L831-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _ON_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 364, + 11, + 364, + 34, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 716, + 31, + 716, + 54, + [0, + caml_string_of_jsbytes("Article L831-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _OO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 364, + 11, + 364, + 34, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 364, + 11, + 364, + 34, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 366, + 11, + 366, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 366, + 11, + 366, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 366, + 11, + 366, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ox_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3021, + 5, + 3024, + 41, + [0, + caml_string_of_jsbytes("Article R832-7"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Oy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 365, + 11, + 365, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ow_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2986, + 5, + 2988, + 42, + [0, + caml_string_of_jsbytes("Article R832-5"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Oz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 365, + 11, + 365, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 365, + 11, + 365, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ov_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 365, + 11, + 365, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 365, + 11, + 365, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ou_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 365, + 11, + 365, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OC_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), + 0]], + _OG_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), + 0]], + _OP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 364, + 11, + 364, + 34, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 364, + 11, + 364, + 34, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OQ_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("condition_logement_pr\xc3\xaat"),0]], + _OT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 377, + 14, + 377, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OU_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_commune.m\xc3\xa9nage"), + 0]], + _OR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 377, + 14, + 377, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 378, + 14, + 378, + 43, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OY_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune.demandeur"), + 0]], + _OV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 378, + 14, + 378, + 43, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _O1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 379, + 14, + 379, + 47, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _O2_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_commune.date_courante"), + 0]], + _OZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 379, + 14, + 379, + 47, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _O3_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + 0]]], + _O4_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + 0]]], + _Po_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 363, + 11, + 363, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _O5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 363, + 11, + 363, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pp_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("condition_logement_bailleur"),0]], + _Ps_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 372, + 12, + 372, + 61, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 372, + 12, + 372, + 61, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pt_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes + ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), + 0]], + _Pw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 371, + 12, + 371, + 54, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 371, + 12, + 371, + 54, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Px_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes + ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), + 0]], + _PC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 370, + 12, + 370, + 23, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Py_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 370, + 12, + 370, + 23, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PD_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]], + _Or_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2109, + 14, + 2109, + 40, + [0, + caml_string_of_jsbytes("Article D823-22"), + [0, + caml_string_of_jsbytes + ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Om_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 563, + 5, + 566, + 42, + [0, + caml_string_of_jsbytes("Article L823-8"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _On_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 456, + 11, + 456, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ol_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 456, + 11, + 456, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Oh_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4206, + 14, + 4206, + 29, + [0, + caml_string_of_jsbytes("Article 45"), + [0, + caml_string_of_jsbytes + ("Chapitre VIII : Prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Oc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2069, + 6, + 2079, + 75, + [0, + caml_string_of_jsbytes("Article D823-20"), + [0, + caml_string_of_jsbytes + ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Od_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 455, + 11, + 455, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ob_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 455, + 11, + 455, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _N7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 469, + 14, + 469, + 43, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _N3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 468, + 14, + 468, + 39, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 467, + 14, + 467, + 36, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 471, + 14, + 471, + 65, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2060, + 5, + 2065, + 77, + [0, + caml_string_of_jsbytes("Article D823-20"), + [0, + caml_string_of_jsbytes + ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _NP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 454, + 11, + 454, + 32, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 454, + 11, + 454, + 32, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2083, + 14, + 2083, + 47, + [0, + caml_string_of_jsbytes("Article D823-20"), + [0, + caml_string_of_jsbytes + ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _NK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 457, + 11, + 457, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 457, + 11, + 457, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NL_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("d\xc3\xa9lai_apr\xc3\xa8s_emm\xc3\xa9nagement_l823_8_2"), + 0]], + _NQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 454, + 11, + 454, + 32, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 454, + 11, + 454, + 32, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NR_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0,caml_string_of_jsbytes("condition_rang_enfant"),0]], + _NU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 471, + 14, + 471, + 65, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NV_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("base_mensuelle_allocations_familiales.date_courante"), + 0]], + _NS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 471, + 14, + 471, + 65, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NW_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes("base_mensuelle_allocations_familiales"), + [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], + _NX_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes("base_mensuelle_allocations_familiales"), + [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], + _N0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 467, + 14, + 467, + 36, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _N1_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl.m\xc3\xa9nage"), + 0]], + _NY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 467, + 14, + 467, + 36, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _N4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 468, + 14, + 468, + 39, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _N5_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl.demandeur"),0]], + _N2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 468, + 14, + 468, + 39, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _N8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 469, + 14, + 469, + 43, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _N9_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl.date_courante"), + 0]], + _N6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 469, + 14, + 469, + 43, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _N__= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + 0]]], + _N$_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + 0]]], + _Oe_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 455, + 11, + 455, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Oa_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 455, + 11, + 455, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Of_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("condition_p\xc3\xa9riode_d\xc3\xa9m\xc3\xa9nagement"), + 0]], + _Oi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 458, + 11, + 458, + 26, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Og_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 458, + 11, + 458, + 26, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Oj_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0,caml_string_of_jsbytes("plafond_d823_22"),0]], + _Oo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 456, + 11, + 456, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ok_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 456, + 11, + 456, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Op_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_logement"),0]], + _Os_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 464, + 12, + 464, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Oq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 464, + 12, + 464, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ot_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes("montant_prime_d\xc3\xa9m\xc3\xa9nagement"), + 0]], + _NF_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1424, + 14, + 1424, + 33, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _NB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1426, + 14, + 1426, + 36, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _NC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 746, + 12, + 746, + 34, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _NA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 746, + 12, + 746, + 34, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _Nx_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1436, + 14, + 1436, + 36, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Nq_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input"),0]]], + _Nr_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Ns_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Nt_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Nh_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input"),0]]], + _Ni_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Nj_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Nk_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _M__= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input"),0]]], + _M$_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Na_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Nb_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _M7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1455, + 16, + 1458, + 39, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _M8_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("input"),0]]], + _M9_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("direct"),0]], + _Nc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1440, + 9, + 1460, + 10, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Nd_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("output"),0]]], + _Ne_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("direct"),0]], + _Nf_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("input"),0]]], + _Ng_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("direct"),0]], + _Nl_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1491, + 10, + 1507, + 11, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Nm_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("output"),0]]], + _Nn_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("direct"),0]], + _No_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("input"),0]]], + _Np_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("direct"),0]], + _Nu_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1471, + 9, + 1480, + 10, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Nv_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("output"),0]]], + _Nw_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("direct"),0]], + _M3_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 78, + 14, + 78, + 44, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _MX_=[0,0], + _MY_=[1,0], + _MZ_=[1,0], + _M0_=[1,0], + _M1_=[0,0], + _M2_=[1,0], + _MT_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1974, + 14, + 1974, + 31, + [0, + caml_string_of_jsbytes("Article D823-17"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _MP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1413, + 14, + 1413, + 34, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _MQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 740, + 11, + 740, + 31, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _MO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 740, + 11, + 740, + 31, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _MR_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("cat\xc3\xa9gorie_calcul_apl"),0]], + _MU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 734, + 10, + 734, + 22, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _MS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 734, + 10, + 734, + 22, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _MV_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("ressources_m\xc3\xa9nage_avec_arrondi"),0]], + _M4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 741, + 11, + 741, + 41, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _MW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 741, + 11, + 741, + 41, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _M5_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("situation_familiale_calcul_apl"),0]], + _Ny_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 743, + 11, + 743, + 33, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _M6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 743, + 11, + 743, + 33, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _Nz_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("sous_calcul_traitement"),0]], + _ND_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _NG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 745, + 12, + 745, + 31, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _NE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 745, + 12, + 745, + 31, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _NH_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("aide_finale_formule"),0]], + _ML_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4504, + 14, + 4504, + 36, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _MH_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("input"),0]]], + _MI_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _MJ_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("output"),0]]], + _MK_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _MM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 882, + 10, + 882, + 25, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _MG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 882, + 10, + 882, + 25, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _MD_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4484, + 14, + 4484, + 36, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Mv_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("input"),0]]], + _Mw_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + 0]], + _Mx_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("output"),0]]], + _My_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + 0]], + _Mz_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("input"),0]]], + _MA_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _MB_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("output"),0]]], + _MC_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _ME_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 881, + 10, + 881, + 40, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Mu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 881, + 10, + 881, + 40, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Mr_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4470, + 14, + 4470, + 36, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Mj_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("input"),0]]], + _Mk_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _Ml_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("output"),0]]], + _Mm_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _Mn_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("input"),0]]], + _Mo_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + 0]], + _Mp_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Mq_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + 0]], + _Ms_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 880, + 10, + 880, + 32, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Mi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 880, + 10, + 880, + 32, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Mf_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4382, + 14, + 4382, + 33, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Mb_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4648, + 14, + 4648, + 47, + [0, + caml_string_of_jsbytes("Article D842-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _L9_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("input"),0]]], + _L__= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], + _L$_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Ma_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], + _Mc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 861, + 11, + 861, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _L8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 861, + 11, + 861, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _L5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4411, + 14, + 4411, + 41, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _L1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4437, + 14, + 4437, + 33, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _LX_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4422, + 14, + 4422, + 33, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _LS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4671, + 7, + 4674, + 44, + [0, + caml_string_of_jsbytes("Article D842-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _LT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 857, + 11, + 857, + 47, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4659, + 14, + 4659, + 50, + [0, + caml_string_of_jsbytes("Article D842-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _LL_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4408, + 14, + 4408, + 62, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _LM_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4408, + 14, + 4408, + 62, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _LN_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.n_nombre_parts_d832_25"), + 0]], + _LI_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4401, + 14, + 4401, + 61, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _LJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4401, + 14, + 4401, + 61, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _LK_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.condition_2_du_832_25"), + 0]], + _LF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 895, + 14, + 895, + 49, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 905, + 14, + 905, + 53, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 903, + 14, + 903, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lt_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 901, + 14, + 901, + 70, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 899, + 14, + 899, + 65, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ll_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 897, + 14, + 897, + 67, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 893, + 14, + 893, + 61, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ld_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 891, + 14, + 891, + 59, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lc_=[3,0], + _K8_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4444, + 14, + 4444, + 70, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _K4_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4441, + 14, + 4441, + 69, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _K0_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4442, + 14, + 4442, + 75, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _KV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4586, + 5, + 4586, + 44, + [0, + caml_string_of_jsbytes("Article D842-9"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _KN_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("input"),0]]], + _KO_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + 0]], + _KP_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("output"),0]]], + _KQ_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + 0]], + _KR_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("input"),0]]], + _KS_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + 0]], + _KT_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("output"),0]]], + _KU_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + 0]], + _KW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 852, + 11, + 852, + 36, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _KM_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4568, + 14, + 4568, + 39, + [0, + caml_string_of_jsbytes("Article D842-9"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _KI_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("input"),0]]], + _KJ_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + 0]], + _KK_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("output"),0]]], + _KL_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + 0]], + _KD_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4735, + 5, + 4735, + 28, + [0, + caml_string_of_jsbytes("Article D842-12"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _KE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 834, + 10, + 834, + 15, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _KC_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4725, + 14, + 4725, + 41, + [0, + caml_string_of_jsbytes("Article D842-12"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Kv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 633, + 24, + 633, + 56, + [0, + caml_string_of_jsbytes("Article 37"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Kn_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("input"),0]]], + _Ko_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Kp_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("output"),0]]], + _Kq_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Kr_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("input"),0]]], + _Ks_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Kt_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("output"),0]]], + _Ku_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Kw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 855, + 10, + 855, + 26, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Km_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3985, + 24, + 3985, + 56, + [0, + caml_string_of_jsbytes("Article 37"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Ke_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("input"),0]]], + _Kf_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Kg_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("output"),0]]], + _Kh_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Ki_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("input"),0]]], + _Kj_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Kk_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("output"),0]]], + _Kl_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Kx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 855, + 10, + 855, + 26, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ky_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 855, + 10, + 855, + 26, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Kd_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3909, + 14, + 3909, + 46, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _J$_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("input"),0]]], + _Ka_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Kb_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("output"),0]]], + _Kc_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Kz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 855, + 10, + 855, + 26, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _J__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 855, + 10, + 855, + 26, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _J7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4637, + 15, + 4637, + 37, + [0, + caml_string_of_jsbytes("Article D842-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _J8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 860, + 11, + 860, + 33, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _J6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 860, + 11, + 860, + 33, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _J2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4696, + 6, + 4702, + 6, + [0, + caml_string_of_jsbytes("Article D842-12"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _J3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 858, + 11, + 858, + 42, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _J0_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4714, + 5, + 4715, + 59, + [0, + caml_string_of_jsbytes("Article D842-12"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _J1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 858, + 11, + 858, + 42, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2913, + 5, + 2913, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JT_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2959, + 5, + 2959, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3005, + 5, + 3005, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3051, + 5, + 3051, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3097, + 5, + 3097, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JL_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3143, + 5, + 3143, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3189, + 5, + 3189, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JH_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3235, + 5, + 3235, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JF_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3280, + 5, + 3280, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JD_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3325, + 5, + 3325, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3370, + 5, + 3370, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3415, + 5, + 3415, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jx_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3460, + 5, + 3460, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Jy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jv_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3505, + 5, + 3505, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Jw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jt_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3550, + 5, + 3550, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Ju_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jr_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3595, + 5, + 3595, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Js_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jp_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3640, + 5, + 3640, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Jq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jn_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3685, + 5, + 3685, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Jo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jl_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3730, + 5, + 3730, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Jm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jj_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3775, + 5, + 3775, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Jk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jh_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3820, + 5, + 3820, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Ji_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jf_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3865, + 5, + 3865, + 32, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Jg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Je_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 854, + 10, + 854, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jb_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4456, + 14, + 4456, + 36, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Jc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 879, + 10, + 879, + 32, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ja_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 879, + 10, + 879, + 32, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _I7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 655, + 5, + 655, + 16, + [0, + caml_string_of_jsbytes("Article 37"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _I8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 849, + 11, + 849, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _I6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 617, + 43, + 617, + 70, + [0, + caml_string_of_jsbytes("Article 34"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _I9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 849, + 11, + 849, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _I3_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4005, + 5, + 4005, + 16, + [0, + caml_string_of_jsbytes("Article 37"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _I4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 849, + 11, + 849, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _I2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3951, + 31, + 3951, + 58, + [0, + caml_string_of_jsbytes("Article 34"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _I5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 849, + 11, + 849, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _I1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 849, + 47, + 849, + 53, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _IV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 907, + 14, + 907, + 50, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _IP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4448, + 14, + 4448, + 64, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _IL_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4446, + 14, + 4446, + 59, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _IH_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4045, + 14, + 4045, + 33, + [0, + caml_string_of_jsbytes("Article 39"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _ID_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4034, + 14, + 4034, + 33, + [0, + caml_string_of_jsbytes("Article 38"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Iz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4052, + 14, + 4052, + 41, + [0, + caml_string_of_jsbytes("Article 39"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Iv_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4027, + 14, + 4027, + 41, + [0, + caml_string_of_jsbytes("Article 38"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Ir_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3973, + 14, + 3973, + 41, + [0, + caml_string_of_jsbytes("Article 36"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _In_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/autres_sources.catala_fr"), + 331, + 14, + 331, + 36, + [0, + caml_string_of_jsbytes("Article premier"), + [0, + caml_string_of_jsbytes + ("R\xc3\xa8glement (CE) n\xc2\xb02866/98 du conseil du 31 d\xc3\xa9cembre 1998 concernant les taux de conversion entre l'euro et les monnaies des \xc3\x89tats membres adoptant l'euro"), + 0]]], + _Ij_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3963, + 14, + 3963, + 40, + [0, + caml_string_of_jsbytes("Article 35"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Ik_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 856, + 11, + 856, + 37, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ii_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 856, + 11, + 856, + 37, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Il_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("montant_forfaitaire_d842_6"),0]], + _Io_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 859, + 11, + 859, + 33, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Im_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 859, + 11, + 859, + 33, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ip_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("taux_francs_vers_euros"),0]], + _Is_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 862, + 11, + 862, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Iq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 862, + 11, + 862, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _It_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("montant_minimal_aide_d842_6"),0]], + _Iw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 11, + 863, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Iu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 11, + 863, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ix_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("montant_forfaitaire_d842_11"),0]], + _IA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 864, + 11, + 864, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Iy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 864, + 11, + 864, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _IB_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("montant_forfaitaire_d842_12"),0]], + _IE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 865, + 11, + 865, + 30, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _IC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 865, + 11, + 865, + 30, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _IF_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("coefficient_d842_11"),0]], + _II_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 866, + 11, + 866, + 30, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _IG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 866, + 11, + 866, + 30, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _IJ_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("coefficient_d842_12"),0]], + _IM_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4446, + 14, + 4446, + 59, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _IN_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"), + 0]], + _IK_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4446, + 14, + 4446, + 59, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _IQ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4448, + 14, + 4448, + 64, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _IR_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_nombre_parts.situation_familiale_calcul_apl"), + 0]], + _IO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4448, + 14, + 4448, + 64, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _IS_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts"), + [0, + caml_string_of_jsbytes + ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), + 0]]], + _IT_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts"), + [0, + caml_string_of_jsbytes + ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), + 0]]], + _IW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 907, + 14, + 907, + 50, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _IX_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], + _IU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 907, + 14, + 907, + 50, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _IY_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _IZ_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _I__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 849, + 11, + 849, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _I0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 849, + 11, + 849, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _I$_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("montant_forfaitaire_charges"),0]], + _Jd_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _JY_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _J4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 858, + 11, + 858, + 42, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 858, + 11, + 858, + 42, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _J5_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("seuil_minimal_ressources_m\xc3\xa9nage"),0]], + _J9_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], + _KA_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + 0]], + _KF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 834, + 10, + 834, + 15, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _KB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 834, + 10, + 834, + 15, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _KG_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_seuil"), + 0]], + _KX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 852, + 11, + 852, + 36, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _KH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 852, + 11, + 852, + 36, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _KY_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("plafond_mensualit\xc3\xa9_d842_6"),0]], + _K1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4442, + 14, + 4442, + 75, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _K2_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"), + 0]], + _KZ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4442, + 14, + 4442, + 75, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _K5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4441, + 14, + 4441, + 69, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _K6_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"), + 0]], + _K3_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4441, + 14, + 4441, + 69, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _K9_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4444, + 14, + 4444, + 70, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _K__= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"), + 0]], + _K7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4444, + 14, + 4444, + 70, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _K$_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], + _La_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], + _Le_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 891, + 14, + 891, + 59, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lf_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.type_logement_foyer"), + 0]], + _Lb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 891, + 14, + 891, + 59, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Li_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 893, + 14, + 893, + 61, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lj_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.date_conventionnement"), + 0]], + _Lg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 893, + 14, + 893, + 61, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 897, + 14, + 897, + 67, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ln_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.ressources_m\xc3\xa9nage_arrondies"), + 0]], + _Lk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 897, + 14, + 897, + 67, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 899, + 14, + 899, + 65, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lr_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.nombre_personnes_\xc3\xa0_charge"), + 0]], + _Lo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 899, + 14, + 899, + 65, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 901, + 14, + 901, + 70, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lv_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.situation_familiale_calcul_apl"), + 0]], + _Ls_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 901, + 14, + 901, + 70, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ly_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 903, + 14, + 903, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lz_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.zone"),0]], + _Lw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 903, + 14, + 903, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 905, + 14, + 905, + 53, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LD_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.date_courante"),0]], + _LA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 905, + 14, + 905, + 53, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 895, + 14, + 895, + 49, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LH_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.redevance"),0]], + _LE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 895, + 14, + 895, + 49, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LO_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_apl_logement_foyer"), + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + 0]]], + _LP_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_apl_logement_foyer"), + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + 0]]], + _LU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 857, + 11, + 857, + 47, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 857, + 11, + 857, + 47, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LV_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("seuil_minimal_d\xc3\xa9pense_nette_minimale"), + 0]], + _LY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 848, + 11, + 848, + 30, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 848, + 11, + 848, + 30, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LZ_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("mensualit\xc3\xa9_\xc3\xa9ligible"),0]], + _L2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 850, + 11, + 850, + 30, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _L0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 850, + 11, + 850, + 30, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _L3_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("mensualit\xc3\xa9_minimale"),0]], + _L6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 851, + 11, + 851, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _L4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 851, + 11, + 851, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _L7_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("coefficient_prise_en_charge"),0]], + _Md_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + 0]], + _Mg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 876, + 12, + 876, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Me_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 876, + 12, + 876, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Mh_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("aide_finale_formule"),0]], + _Mt_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + 0]], + _MF_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _MN_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], + _If_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4918, + 14, + 4918, + 36, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Ib_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("input"),0]]], + _Ic_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _Id_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("output"),0]]], + _Ie_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _Ig_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 949, + 10, + 949, + 25, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ia_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 949, + 10, + 949, + 25, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _H9_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4897, + 14, + 4897, + 36, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _H1_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_redevance"), + [0,caml_string_of_jsbytes("input"),0]]], + _H2_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], + _H3_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_redevance"), + [0,caml_string_of_jsbytes("output"),0]]], + _H4_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], + _H5_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("input"),0]]], + _H6_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _H7_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("output"),0]]], + _H8_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _H__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 948, + 10, + 948, + 40, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _H0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 948, + 10, + 948, + 40, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _HX_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4883, + 14, + 4883, + 36, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _HT_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("input"),0]]], + _HU_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + 0]], + _HV_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("output"),0]]], + _HW_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + 0]], + _HY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 947, + 10, + 947, + 19, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _HS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 947, + 10, + 947, + 19, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _HP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4865, + 14, + 4865, + 36, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _HH_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("input"),0]]], + _HI_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _HJ_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("output"),0]]], + _HK_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _HL_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("input"),0]]], + _HM_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + 0]], + _HN_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("output"),0]]], + _HO_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + 0]], + _HQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 946, + 10, + 946, + 32, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _HG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 946, + 10, + 946, + 32, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _HD_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4784, + 14, + 4784, + 33, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Hz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4972, + 14, + 4972, + 47, + [0, + caml_string_of_jsbytes("Article D842-17"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Hr_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("input"),0]]], + _Hs_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], + _Ht_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Hu_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], + _Hv_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("input"),0]]], + _Hw_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], + _Hx_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Hy_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], + _HA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 926, + 11, + 926, + 44, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Hq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 926, + 11, + 926, + 44, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Hn_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4843, + 14, + 4843, + 27, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Hj_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4963, + 14, + 4963, + 36, + [0, + caml_string_of_jsbytes("Article D842-17"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Hk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 925, + 11, + 925, + 33, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Hi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 925, + 11, + 925, + 33, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Hf_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4805, + 14, + 4805, + 41, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _G$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4841, + 14, + 4841, + 70, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _G7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4831, + 14, + 4831, + 69, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _G3_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4832, + 14, + 4832, + 75, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _GZ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4851, + 14, + 4851, + 36, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _G0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 945, + 10, + 945, + 32, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 945, + 10, + 945, + 32, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GU_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4118, + 6, + 4118, + 79, + [0, + caml_string_of_jsbytes("Article 43"), + [0, + caml_string_of_jsbytes + ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 931, + 12, + 931, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4153, + 6, + 4154, + 38, + [0, + caml_string_of_jsbytes("Article 43"), + [0, + caml_string_of_jsbytes + ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 931, + 12, + 931, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4171, + 6, + 4172, + 24, + [0, + caml_string_of_jsbytes("Article 43"), + [0, + caml_string_of_jsbytes + ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 931, + 12, + 931, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4135, + 6, + 4136, + 46, + [0, + caml_string_of_jsbytes("Article 43"), + [0, + caml_string_of_jsbytes + ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 931, + 12, + 931, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 709, + 6, + 709, + 79, + [0, + caml_string_of_jsbytes("Article 43"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 931, + 12, + 931, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 746, + 6, + 747, + 38, + [0, + caml_string_of_jsbytes("Article 43"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 931, + 12, + 931, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 765, + 6, + 766, + 24, + [0, + caml_string_of_jsbytes("Article 43"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 931, + 12, + 931, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 727, + 6, + 728, + 46, + [0, + caml_string_of_jsbytes("Article 43"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 931, + 12, + 931, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4076, + 14, + 4076, + 41, + [0, + caml_string_of_jsbytes("Article 40"), + [0, + caml_string_of_jsbytes + ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 932, + 12, + 932, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 686, + 14, + 686, + 41, + [0, + caml_string_of_jsbytes("Article 40"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 932, + 12, + 932, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gt_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4802, + 14, + 4802, + 61, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Gu_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4802, + 14, + 4802, + 61, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Gv_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.condition_2_du_832_25"), + 0]], + _Gq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 956, + 14, + 956, + 49, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 966, + 14, + 966, + 53, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 964, + 14, + 964, + 44, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ge_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 962, + 14, + 962, + 70, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ga_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 960, + 14, + 960, + 65, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _F8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 958, + 14, + 958, + 67, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _F4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 954, + 14, + 954, + 61, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _F0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 952, + 14, + 952, + 59, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _FU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 968, + 14, + 968, + 50, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _FO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4837, + 14, + 4837, + 64, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _FK_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4835, + 14, + 4835, + 59, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _FG_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4839, + 14, + 4839, + 55, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _FC_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4191, + 14, + 4191, + 51, + [0, + caml_string_of_jsbytes("Article 44"), + [0, + caml_string_of_jsbytes + ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Fy_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4089, + 14, + 4089, + 41, + [0, + caml_string_of_jsbytes("Article 41"), + [0, + caml_string_of_jsbytes + ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Fu_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4100, + 14, + 4100, + 42, + [0, + caml_string_of_jsbytes("Article 42"), + [0, + caml_string_of_jsbytes + ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Fv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 927, + 11, + 927, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ft_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 927, + 11, + 927, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fw_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("montant_minimal_aide_d842_15"),0]], + _Fz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 928, + 11, + 928, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 928, + 11, + 928, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _FA_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("montant_forfaitaire_d842_15"),0]], + _FD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 929, + 11, + 929, + 48, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _FB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 929, + 11, + 929, + 48, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _FE_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("montant_minimal_d\xc3\xa9pense_nette_d842_17"), + 0]], + _FH_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4839, + 14, + 4839, + 55, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _FI_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts.condition_2_du_832_25"), + 0]], + _FF_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4839, + 14, + 4839, + 55, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _FL_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4835, + 14, + 4835, + 59, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _FM_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"), + 0]], + _FJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4835, + 14, + 4835, + 59, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _FP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4837, + 14, + 4837, + 64, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _FQ_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_nombre_parts.situation_familiale_calcul_apl"), + 0]], + _FN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4837, + 14, + 4837, + 64, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _FR_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts"), + [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]], + _FS_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts"), + [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]], + _FV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 968, + 14, + 968, + 50, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _FW_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], + _FT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 968, + 14, + 968, + 50, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _FX_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _FY_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _F1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 952, + 14, + 952, + 59, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _F2_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.type_logement_foyer"), + 0]], + _FZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 952, + 14, + 952, + 59, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _F5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 954, + 14, + 954, + 61, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _F6_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.date_conventionnement"), + 0]], + _F3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 954, + 14, + 954, + 61, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _F9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 958, + 14, + 958, + 67, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _F__= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.ressources_m\xc3\xa9nage_arrondies"), + 0]], + _F7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 958, + 14, + 958, + 67, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 960, + 14, + 960, + 65, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gc_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.nombre_personnes_\xc3\xa0_charge"), + 0]], + _F$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 960, + 14, + 960, + 65, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 962, + 14, + 962, + 70, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gg_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.situation_familiale_calcul_apl"), + 0]], + _Gd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 962, + 14, + 962, + 70, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 964, + 14, + 964, + 44, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gk_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.zone"),0]], + _Gh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 964, + 14, + 964, + 44, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 966, + 14, + 966, + 53, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Go_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.date_courante"),0]], + _Gl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 966, + 14, + 966, + 53, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 956, + 14, + 956, + 49, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gs_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.redevance"),0]], + _Gp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 956, + 14, + 956, + 49, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gw_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_apl_logement_foyer"), + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + 0]]], + _Gx_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_apl_logement_foyer"), + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + 0]]], + _GD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 932, + 12, + 932, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 932, + 12, + 932, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GE_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("montant_forfaitaire_charges"),0]], + _GW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 931, + 12, + 931, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 931, + 12, + 931, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GX_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("\xc3\xa9quivalence_loyer"),0]], + _G1_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _G4_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4832, + 14, + 4832, + 75, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _G5_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"), + 0]], + _G2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4832, + 14, + 4832, + 75, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _G8_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4831, + 14, + 4831, + 69, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _G9_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"), + 0]], + _G6_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4831, + 14, + 4831, + 69, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Ha_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4841, + 14, + 4841, + 70, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Hb_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"), + 0]], + _G__= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4841, + 14, + 4841, + 70, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Hc_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], + _Hd_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], + _Hg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 930, + 12, + 930, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _He_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 930, + 12, + 930, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Hh_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("coefficient_prise_en_charge"),0]], + _Hl_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], + _Ho_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 933, + 12, + 933, + 25, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Hm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 933, + 12, + 933, + 25, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Hp_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("loyer_minimal"),0]], + _HB_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + 0]], + _HE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 943, + 12, + 943, + 31, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _HC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 943, + 12, + 943, + 31, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _HF_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("aide_finale_formule"),0]], + _HR_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + 0]], + _HZ_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], + _H$_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _Ih_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], + _Fp_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4273, + 24, + 4273, + 43, + [0, + caml_string_of_jsbytes("Article D842-4"), + [0, + caml_string_of_jsbytes("Section 1 : Secteur locatif ordinaire"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Fq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 786, + 12, + 786, + 31, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 823, + 14, + 823, + 33, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fj_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4281, + 24, + 4281, + 46, + [0, + caml_string_of_jsbytes("Article D842-4"), + [0, + caml_string_of_jsbytes("Section 1 : Secteur locatif ordinaire"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Fk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 788, + 12, + 788, + 34, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 824, + 14, + 824, + 36, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fe_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"), + [0,caml_string_of_jsbytes("input"),0]]], + _Ff_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], + _Fg_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"), + [0,caml_string_of_jsbytes("output"),0]]], + _Fh_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], + _Fl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 788, + 12, + 788, + 34, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 788, + 12, + 788, + 34, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _E__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 819, + 14, + 819, + 55, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _E6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 817, + 14, + 817, + 59, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _E2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 815, + 14, + 815, + 43, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 813, + 14, + 813, + 42, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 809, + 5, + 810, + 63, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 806, + 14, + 806, + 53, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 804, + 14, + 804, + 37, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 802, + 14, + 802, + 63, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 800, + 14, + 800, + 58, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 798, + 14, + 798, + 46, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ew_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 795, + 14, + 795, + 78, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Es_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 793, + 14, + 793, + 60, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Eo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 791, + 14, + 791, + 48, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ep_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 791, + 14, + 791, + 48, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Eq_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("calcul_apl_locatif.loyer_principal_base"),0]], + _En_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 791, + 14, + 791, + 48, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Et_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 793, + 14, + 793, + 60, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Eu_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes + ("calcul_apl_locatif.ressources_m\xc3\xa9nage_arrondies"), + 0]], + _Er_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 793, + 14, + 793, + 60, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ex_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 795, + 14, + 795, + 78, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ey_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes + ("calcul_apl_locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"), + 0]], + _Ev_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 795, + 14, + 795, + 78, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 798, + 14, + 798, + 46, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EC_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("calcul_apl_locatif.date_courante"),0]], + _Ez_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 798, + 14, + 798, + 46, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 800, + 14, + 800, + 58, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EG_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes + ("calcul_apl_locatif.nombre_personnes_\xc3\xa0_charge"), + 0]], + _ED_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 800, + 14, + 800, + 58, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 802, + 14, + 802, + 63, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EK_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes + ("calcul_apl_locatif.situation_familiale_calcul_apl"), + 0]], + _EH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 802, + 14, + 802, + 63, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 804, + 14, + 804, + 37, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EO_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("calcul_apl_locatif.zone"),0]], + _EL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 804, + 14, + 804, + 37, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _ER_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 806, + 14, + 806, + 53, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _ES_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("calcul_apl_locatif.logement_est_chambre"),0]], + _EP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 806, + 14, + 806, + 53, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 809, + 5, + 810, + 63, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EW_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes + ("calcul_apl_locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"), + 0]], + _ET_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 809, + 5, + 810, + 63, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 813, + 14, + 813, + 42, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _E0_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("calcul_apl_locatif.type_aide"),0]], + _EX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 813, + 14, + 813, + 42, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _E3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 815, + 14, + 815, + 43, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _E4_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("calcul_apl_locatif.colocation"),0]], + _E1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 815, + 14, + 815, + 43, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _E7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 817, + 14, + 817, + 59, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _E8_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes + ("calcul_apl_locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), + 0]], + _E5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 817, + 14, + 817, + 59, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _E$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 819, + 14, + 819, + 55, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fa_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes + ("calcul_apl_locatif.logement_meubl\xc3\xa9_d842_2"), + 0]], + _E9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 819, + 14, + 819, + 55, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fb_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("calcul_apl_locatif"), + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + 0]]], + _Fc_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("calcul_apl_locatif"), + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + 0]]], + _Fm_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Fr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 786, + 12, + 786, + 31, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 786, + 12, + 786, + 31, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fs_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("aide_finale_formule"),0]], + _Eh_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"), + 67, + 5, + 71, + 21, + [0, + caml_string_of_jsbytes("Article L512-3"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _Ei_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 40, + 12, + 40, + 24, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _Eg_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"), + 56, + 5, + 57, + 50, + [0, + caml_string_of_jsbytes("Article L512-3"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _Ej_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 40, + 12, + 40, + 24, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _Ek_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 40, + 12, + 40, + 24, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _Ef_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 40, + 12, + 40, + 24, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _El_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 40, + 12, + 40, + 24, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _Ee_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 40, + 12, + 40, + 24, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _Ea_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"), + 77, + 5, + 81, + 24, + [0, + caml_string_of_jsbytes("Article L512-3"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _Eb_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 41, + 12, + 41, + 31, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _D$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 41, + 12, + 41, + 31, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _Ec_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 41, + 12, + 41, + 31, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _D__= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 41, + 12, + 41, + 31, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _D6_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr"), + 62, + 18, + 62, + 41, + [0, + caml_string_of_jsbytes("Article R755-0-2"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _D7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 42, + 11, + 42, + 27, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _D5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr"), + 31, + 14, + 31, + 30, + [0, + caml_string_of_jsbytes("Article R512-2"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application."), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _DU_=[5,0], + _DV_=[4,0], + _DW_=[3,0], + _DX_=[2,0], + _DY_=[1,0], + _DZ_=[0,0], + _D0_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"), + 126, + 5, + 131, + 30, + [0, + caml_string_of_jsbytes("Article L751-1"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _D1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 44, + 12, + 44, + 35, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DT_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 44, + 12, + 44, + 35, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 51, + 14, + 51, + 28, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 52, + 14, + 52, + 32, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DF_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr"), + 21, + 14, + 21, + 26, + [0, + caml_string_of_jsbytes("Article R512-2"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application."), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _DG_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 43, + 12, + 43, + 24, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DE_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 43, + 12, + 43, + 24, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DH_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2"),0]], + _DK_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 52, + 14, + 52, + 32, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DL_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("smic.date_courante"),0]], + _DI_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 52, + 14, + 52, + 32, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 51, + 14, + 51, + 28, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DP_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("smic.r\xc3\xa9sidence"),0]], + _DM_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 51, + 14, + 51, + 28, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DQ_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]], + _DR_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]], + _D2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 44, + 12, + 44, + 35, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 44, + 12, + 44, + 35, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _D3_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1"),0]], + _D8_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 42, + 11, + 42, + 27, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _D4_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 42, + 11, + 42, + 27, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _D9_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("plafond_l512_3_2"),0]], + _Ed_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]], + _Em_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert"),0]], + _Dz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 409, + 14, + 409, + 32, + [0, + caml_string_of_jsbytes("Article R822-7"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Principes de neutralisation et d'abattement"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Du_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 854, + 6, + 857, + 35, + [0, + caml_string_of_jsbytes("Article R822-20"), + [0, + caml_string_of_jsbytes + ("Sous-section 3 : Montant forfaitaire de ressources applicable aux \xc3\xa9tudiants"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Dv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 508, + 12, + 508, + 39, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Dt_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 124, + 14, + 124, + 41, + [0, + caml_string_of_jsbytes("Article R822-2"), + [0, + caml_string_of_jsbytes + ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Dp_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 462, + 14, + 462, + 32, + [0, + caml_string_of_jsbytes("Article R822-8"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Principes de neutralisation et d'abattement"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Dj_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 418, + 14, + 418, + 65, + [0, + caml_string_of_jsbytes("Article R822-7"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Principes de neutralisation et d'abattement"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Df_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 524, + 14, + 524, + 33, + [0, + caml_string_of_jsbytes("Article R822-10"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Principes de neutralisation et d'abattement"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Db_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 129, + 14, + 129, + 62, + [0, + caml_string_of_jsbytes("Article R822-2"), + [0, + caml_string_of_jsbytes + ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _C9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 503, + 51, + 503, + 57, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _C5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 11, + 14, + 11, + 41, + [0, + caml_string_of_jsbytes("Article 3"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Dispositions applicables aux ressources"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _C1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 21, + 14, + 21, + 41, + [0, + caml_string_of_jsbytes("Article 4"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Dispositions applicables aux ressources"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _CX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 493, + 46, + 493, + 52, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 495, + 10, + 495, + 15, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 495, + 10, + 495, + 15, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CZ_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_seuil"), + 0]], + _C2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 499, + 11, + 499, + 38, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _C0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 499, + 11, + 499, + 38, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _C3_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant_forfaitaire_r_822_8"),0]], + _C6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 501, + 11, + 501, + 38, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _C4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 501, + 11, + 501, + 38, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _C7_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant_forfaitaire_r_822_7"),0]], + _C__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 503, + 11, + 503, + 42, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _C8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 503, + 11, + 503, + 42, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _C$_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("ressources_forfaitaires_r822_20"),0]], + _Dc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 497, + 11, + 497, + 59, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Da_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 497, + 11, + 497, + 59, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Dd_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes + ("ressources_personnes_vivant_habituellement_foyer"), + 0]], + _Dg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 502, + 11, + 502, + 30, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _De_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 502, + 11, + 502, + 30, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Dh_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("abattement_r_822_10"),0]], + _Dk_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 418, + 14, + 418, + 65, + [0, + caml_string_of_jsbytes("Article R822-7"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Principes de neutralisation et d'abattement"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Dl_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes + ("base_mensuelle_allocations_familiales.date_courante"), + 0]], + _Di_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 418, + 14, + 418, + 65, + [0, + caml_string_of_jsbytes("Article R822-7"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Principes de neutralisation et d'abattement"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Dm_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("base_mensuelle_allocations_familiales"), + [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], + _Dn_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("base_mensuelle_allocations_familiales"), + [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], + _Dq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 498, + 11, + 498, + 29, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Do_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 498, + 11, + 498, + 29, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Dr_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("abattement_r_822_8"),0]], + _Dw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 508, + 12, + 508, + 39, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ds_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 508, + 12, + 508, + 39, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Dx_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("ressources_prises_en_compte"),0]], + _DA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 500, + 11, + 500, + 29, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Dy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 500, + 11, + 500, + 29, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _DB_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("abattement_r_822_7"),0]], + _DC_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 142, + 13, + 143, + 74, + [0, + caml_string_of_jsbytes("Article R822-2"), + [0, + caml_string_of_jsbytes + ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _DD_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 142, + 13, + 143, + 74, + [0, + caml_string_of_jsbytes("Article R822-2"), + [0, + caml_string_of_jsbytes + ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _CP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 334, + 14, + 334, + 56, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 336, + 14, + 336, + 63, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CH_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1137, + 14, + 1137, + 49, + [0, + caml_string_of_jsbytes("Article R823-4"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _CD_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), + [0,caml_string_of_jsbytes("input"),0]]], + _CE_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), + 0]], + _CF_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), + [0,caml_string_of_jsbytes("output"),0]]], + _CG_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), + 0]], + _Cx_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1213, + 4, + 1219, + 48, + [0, + caml_string_of_jsbytes("Article R823-4"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Cy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 303, + 11, + 303, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Cs_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("condition_2_r823_4"), + [0,caml_string_of_jsbytes("input"),0]]], + _Ct_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], + _Cu_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("condition_2_r823_4"), + [0,caml_string_of_jsbytes("output"),0]]], + _Cv_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], + _Cw_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1194, + 5, + 1194, + 44, + [0, + caml_string_of_jsbytes("Article R823-4"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Cz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 303, + 11, + 303, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Cq_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1149, + 5, + 1152, + 44, + [0, + caml_string_of_jsbytes("Article R823-4"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Cr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 303, + 11, + 303, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Cp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 303, + 11, + 303, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 303, + 11, + 303, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Co_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 303, + 11, + 303, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ck_=[0,0], + _Cj_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1173, + 5, + 1189, + 10, + [0, + caml_string_of_jsbytes("Article R823-4"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Cl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 324, + 12, + 324, + 30, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ci_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 324, + 12, + 324, + 30, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Cm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 324, + 12, + 324, + 30, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ch_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 324, + 12, + 324, + 30, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Cd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 330, + 5, + 332, + 25, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ce_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 320, + 12, + 320, + 23, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Cc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 320, + 12, + 320, + 23, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _B__= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 163, + 14, + 163, + 31, + [0, + caml_string_of_jsbytes("Article L351-8"), + [0, + caml_string_of_jsbytes("Section 5 : Taux et montant de la pension"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Ouverture du droit, liquidation et calcul des pensions de retraite"), + [0, + caml_string_of_jsbytes + ("Titre V : Assurance vieillesse - Assurance veuvage"), + [0, + caml_string_of_jsbytes + ("Livre III : Dispositions relatives aux assurances sociales et \xc3\xa0 diverses cat\xc3\xa9gories de personnes rattach\xc3\xa9es au r\xc3\xa9gime g\xc3\xa9n\xc3\xa9rale"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]], + _B4_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 72, + 5, + 73, + 52, + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]], + _B5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 302, + 11, + 302, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _B3_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 65, + 5, + 68, + 52, + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]], + _B6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 302, + 11, + 302, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _B2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 302, + 11, + 302, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 286, + 18, + 286, + 75, + [0, + caml_string_of_jsbytes("Article L822-5"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _BW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 314, + 11, + 314, + 36, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BS_=[5,0], + _BT_=[4,0], + _BU_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 267, + 18, + 269, + 45, + [0, + caml_string_of_jsbytes("Article L822-5"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _BX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 314, + 11, + 314, + 36, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 944, + 5, + 944, + 58, + [0, + caml_string_of_jsbytes("Article R822-22"), + [0, + caml_string_of_jsbytes + ("Sous-section 4 : Prise en compte du patrimoine"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _BY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 314, + 11, + 314, + 36, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BQ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 250, + 33, + 250, + 58, + [0, + caml_string_of_jsbytes("Article L822-5"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _BM_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 125, + 14, + 125, + 32, + [0, + caml_string_of_jsbytes("Article L161-17-2"), + [0, + caml_string_of_jsbytes + ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Titre III: Titre III : Dispositions communes relatives au financement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _BH_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 385, + 18, + 385, + 44, + [0, + caml_string_of_jsbytes("Article L822-10"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _BI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 300, + 11, + 300, + 58, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 300, + 11, + 300, + 58, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 171, + 5, + 177, + 65, + [0, + caml_string_of_jsbytes("Article L822-3"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _BA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 295, + 11, + 295, + 45, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _By_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 156, + 5, + 158, + 30, + [0, + caml_string_of_jsbytes("Article L822-3"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _BB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 295, + 11, + 295, + 45, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bx_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 125, + 5, + 131, + 33, + [0, + caml_string_of_jsbytes("Article L822-2"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _BC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 295, + 11, + 295, + 45, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 295, + 11, + 295, + 45, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bq_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 203, + 5, + 208, + 39, + [0, + caml_string_of_jsbytes("Article L822-4"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Br_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 296, + 11, + 296, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bp_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 197, + 5, + 198, + 34, + [0, + caml_string_of_jsbytes("Article L822-4"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Bs_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 296, + 11, + 296, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 296, + 11, + 296, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bj_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 329, + 5, + 330, + 34, + [0, + caml_string_of_jsbytes("Article D815-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]], + _Bk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 317, + 11, + 317, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bh_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 334, + 5, + 335, + 34, + [0, + caml_string_of_jsbytes("Article D815-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]], + _Bi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 317, + 11, + 317, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bf_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 339, + 5, + 340, + 34, + [0, + caml_string_of_jsbytes("Article D815-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]], + _Bg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 317, + 11, + 317, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bd_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/autres_sources.catala_fr"), + 58, + 5, + 59, + 33, + [0, + caml_string_of_jsbytes + ('Circulaire de la CNAV 2023-3 du 09/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2023"'), + [0, + caml_string_of_jsbytes + ("Montants revaloris\xc3\xa9s de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), + 0]]], + _Be_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 317, + 11, + 317, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bb_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/autres_sources.catala_fr"), + 90, + 5, + 91, + 33, + [0, + caml_string_of_jsbytes + ('Circulaire de la CNAV 2022-3 du 11/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2022"'), + [0, + caml_string_of_jsbytes + ("Montants revaloris\xc3\xa9s de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), + 0]]], + _Bc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 317, + 11, + 317, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _A$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/autres_sources.catala_fr"), + 123, + 5, + 124, + 33, + [0, + caml_string_of_jsbytes + ('Circulaire de la CNAV 2021-1 du 11/01/2021 "Revalorisation \xc3\xa0 compter du 1er janvier 2021"'), + [0, + caml_string_of_jsbytes + ("Montants revaloris\xc3\xa9s de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), + 0]]], + _Ba_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 317, + 11, + 317, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _A6_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 107, + 5, + 110, + 67, + [0, + caml_string_of_jsbytes("Article L822-2"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _A7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 293, + 11, + 293, + 32, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _A5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 293, + 11, + 293, + 32, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _A1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 246, + 14, + 246, + 40, + [0, + caml_string_of_jsbytes("Article L822-5"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _AV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 123, + 14, + 123, + 61, + [0, + caml_string_of_jsbytes("Article L161-17-2"), + [0, + caml_string_of_jsbytes + ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Titre III: Titre III : Dispositions communes relatives au financement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _AP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 46, + 5, + 46, + 41, + [0, + caml_string_of_jsbytes("Article L821-2"), + [0, + caml_string_of_jsbytes + ("Sous-section 1 : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Section 2 : R\xc3\xa8gles de non-cumul"), + [0, + caml_string_of_jsbytes + ("Chapitre Ier : Principes g\xc3\xa9n\xc3\xa9raux"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _AQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 294, + 12, + 294, + 51, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 294, + 12, + 294, + 51, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 294, + 12, + 294, + 51, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AI_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1035, + 5, + 1063, + 65, + [0, + caml_string_of_jsbytes("Article R822-25"), + [0, + caml_string_of_jsbytes + ("Section 3 : Conditions relatives au logement"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _AJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 297, + 12, + 297, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 297, + 12, + 297, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 297, + 12, + 297, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AC_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 346, + 18, + 346, + 67, + [0, + caml_string_of_jsbytes("Article L822-8"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _AD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 298, + 11, + 298, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 298, + 11, + 298, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Aw_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 360, + 18, + 360, + 61, + [0, + caml_string_of_jsbytes("Article L822-9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Ax_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 299, + 11, + 299, + 58, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Av_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 299, + 11, + 299, + 58, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ar_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 146, + 14, + 146, + 43, + [0, + caml_string_of_jsbytes("Article L822-3"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _An_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 927, + 14, + 927, + 37, + [0, + caml_string_of_jsbytes("Article R822-22"), + [0, + caml_string_of_jsbytes + ("Sous-section 4 : Prise en compte du patrimoine"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Aj_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 106, + 14, + 106, + 41, + [0, + caml_string_of_jsbytes("Article R822-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Conditions relatives au b\xc3\xa9n\xc3\xa9ficiaire"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Af_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 105, + 14, + 105, + 42, + [0, + caml_string_of_jsbytes("Article R822-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Conditions relatives au b\xc3\xa9n\xc3\xa9ficiaire"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Ab_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 301, + 11, + 301, + 48, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _z9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 292, + 11, + 292, + 25, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _z__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 292, + 11, + 292, + 25, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _z8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 292, + 11, + 292, + 25, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _z$_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_pr\xc3\xaat"),0]], + _Ac_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 301, + 11, + 301, + 48, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Aa_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 301, + 11, + 301, + 48, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ad_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_peuplement_logement_l822_10"),0]], + _Ag_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 311, + 11, + 311, + 39, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ae_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 311, + 11, + 311, + 39, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ah_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("seuil_l822_3_parts_propri\xc3\xa9t\xc3\xa9"), + 0]], + _Ak_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 312, + 11, + 312, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ai_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 312, + 11, + 312, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Al_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("seuil_l822_3_parts_usufruit"),0]], + _Ao_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 313, + 11, + 313, + 34, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Am_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 313, + 11, + 313, + 34, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ap_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("seuil_l822_5_patrimoine"),0]], + _As_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 310, + 11, + 310, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Aq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 310, + 11, + 310, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _At_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("usufruit_ou_propri\xc3\xa9t\xc3\xa9_famille"), + 0]], + _Ay_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 299, + 11, + 299, + 58, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Au_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 299, + 11, + 299, + 58, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Az_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes + ("condition_non_ouverture_l822_9_decence_logement"), + 0]], + _AE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 298, + 11, + 298, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 298, + 11, + 298, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AF_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_non_ouverture_l822_8"),0]], + _AL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 297, + 12, + 297, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 297, + 12, + 297, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AM_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_logement_surface"),0]], + _AS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 294, + 12, + 294, + 51, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 294, + 12, + 294, + 51, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AT_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes + ("condition_logement_r\xc3\xa9sidence_principale"), + 0]], + _AW_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 123, + 14, + 123, + 61, + [0, + caml_string_of_jsbytes("Article L161-17-2"), + [0, + caml_string_of_jsbytes + ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Titre III: Titre III : Dispositions communes relatives au financement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _AX_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes + ("ouverture_droits_retraite.date_naissance_assur\xc3\xa9"), + 0]], + _AU_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 123, + 14, + 123, + 61, + [0, + caml_string_of_jsbytes("Article L161-17-2"), + [0, + caml_string_of_jsbytes + ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Titre III: Titre III : Dispositions communes relatives au financement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _AY_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("ouverture_droits_retraite"), + [0,caml_string_of_jsbytes("OuvertureDroitsRetraite"),0]]], + _AZ_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("ouverture_droits_retraite"), + [0,caml_string_of_jsbytes("OuvertureDroitsRetraite"),0]]], + _A2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 309, + 11, + 309, + 37, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _A0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 309, + 11, + 309, + 37, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _A3_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("patrimoine_total_demandeur"),0]], + _A8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 293, + 11, + 293, + 32, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _A4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 293, + 11, + 293, + 32, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _A9_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_nationalit\xc3\xa9"),0]], + _Bl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 317, + 11, + 317, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _A__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 317, + 11, + 317, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bm_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("plafond_individuel_l815_9_s\xc3\xa9cu"),0]], + _Bt_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 296, + 11, + 296, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 296, + 11, + 296, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bu_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_logement_location_tiers"),0]], + _BD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 295, + 11, + 295, + 45, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 295, + 11, + 295, + 45, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BE_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_logement_mode_occupation"),0]], + _BJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 300, + 11, + 300, + 58, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 300, + 11, + 300, + 58, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BK_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes + ("condition_ouverture_l822_10_peuplement_logement"), + 0]], + _BN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 316, + 11, + 316, + 29, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 316, + 11, + 316, + 29, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BO_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("\xc3\xa2ge_l161_17_2_s\xc3\xa9cu"),0]], + _BZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 314, + 11, + 314, + 36, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 314, + 11, + 314, + 36, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _B0_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("patrimoine_pris_en_compte"),0]], + _B7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 302, + 11, + 302, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _B1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 302, + 11, + 302, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _B8_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_logement"),0]], + _B$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 315, + 11, + 315, + 28, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _B9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 315, + 11, + 315, + 28, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ca_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("\xc3\xa2ge_l351_8_1_s\xc3\xa9cu"),0]], + _Cf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 320, + 12, + 320, + 23, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Cb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 320, + 12, + 320, + 23, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Cg_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]], + _Cn_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], + _CB_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), + 0]], + _CI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 305, + 11, + 305, + 46, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 305, + 11, + 305, + 46, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CJ_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("personnes_\xc3\xa0_charge_prises_en_compte"), + 0]], + _CM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 322, + 12, + 322, + 61, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 322, + 12, + 322, + 61, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CN_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes + ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), + 0]], + _CQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 321, + 12, + 321, + 54, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 321, + 12, + 321, + 54, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CR_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes + ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), + 0]], + _CS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 182, + 13, + 182, + 47, + [0, + caml_string_of_jsbytes("Article L822-3"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _CV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 182, + 13, + 182, + 47, + [0, + caml_string_of_jsbytes("Article L822-3"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _CT_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 181, + 13, + 181, + 48, + [0, + caml_string_of_jsbytes("Article L822-3"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _CU_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 181, + 13, + 181, + 48, + [0, + caml_string_of_jsbytes("Article L822-3"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _z5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3178, + 14, + 3178, + 36, + [0, + caml_string_of_jsbytes("Article D832-10"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _z1_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("input"),0]]], + _z2_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _z3_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("output"),0]]], + _z4_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _z6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 716, + 10, + 716, + 25, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _z0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 716, + 10, + 716, + 25, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zX_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3085, + 14, + 3085, + 33, + [0, + caml_string_of_jsbytes("Article D832-10"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _zT_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3158, + 14, + 3158, + 36, + [0, + caml_string_of_jsbytes("Article D832-10"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _zL_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_abattement"), + [0,caml_string_of_jsbytes("input"),0]]], + _zM_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], + _zN_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_abattement"), + [0,caml_string_of_jsbytes("output"),0]]], + _zO_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], + _zP_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("input"),0]]], + _zQ_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _zR_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("output"),0]]], + _zS_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _zU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 715, + 10, + 715, + 40, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 715, + 10, + 715, + 40, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zH_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3213, + 14, + 3213, + 49, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _zD_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3105, + 14, + 3105, + 33, + [0, + caml_string_of_jsbytes("Article D832-10"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _zz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3144, + 14, + 3144, + 36, + [0, + caml_string_of_jsbytes("Article D832-10"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _zr_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("input"),0]]], + _zs_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _zt_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("output"),0]]], + _zu_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _zv_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), + [0,caml_string_of_jsbytes("input"),0]]], + _zw_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), + 0]], + _zx_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), + [0,caml_string_of_jsbytes("output"),0]]], + _zy_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), + 0]], + _zA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 714, + 10, + 714, + 20, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 714, + 10, + 714, + 20, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zn_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3210, + 14, + 3210, + 49, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _zi_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3426, + 5, + 3438, + 77, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _zj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 680, + 12, + 680, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zg_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3481, + 5, + 3481, + 75, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _zh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 680, + 12, + 680, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _y$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1290, + 14, + 1290, + 42, + [0, + caml_string_of_jsbytes("Article 24"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _za_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 683, + 10, + 683, + 25, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _y__= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 497, + 14, + 497, + 42, + [0, + caml_string_of_jsbytes("Article 24"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _zb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 683, + 10, + 683, + 25, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _y9_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2393, + 14, + 2393, + 42, + [0, + caml_string_of_jsbytes("Article 24"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _zc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 683, + 10, + 683, + 25, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _y5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3553, + 14, + 3553, + 55, + [0, + caml_string_of_jsbytes("Article D832-17"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _y1_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"), + [0,caml_string_of_jsbytes("input"),0]]], + _y2_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]], + _y3_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"), + [0,caml_string_of_jsbytes("output"),0]]], + _y4_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]], + _y6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 691, + 11, + 691, + 52, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _y0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 691, + 11, + 691, + 52, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yX_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3194, + 14, + 3194, + 49, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3489, + 14, + 3489, + 70, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3486, + 14, + 3486, + 69, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3487, + 14, + 3487, + 75, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yE_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3366, + 5, + 3366, + 44, + [0, + caml_string_of_jsbytes("Article D832-14"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yw_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + [0,caml_string_of_jsbytes("input"),0]]], + _yx_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + 0]], + _yy_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + [0,caml_string_of_jsbytes("output"),0]]], + _yz_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + 0]], + _yA_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + [0,caml_string_of_jsbytes("input"),0]]], + _yB_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + 0]], + _yC_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + [0,caml_string_of_jsbytes("output"),0]]], + _yD_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + 0]], + _yF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 682, + 10, + 682, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yv_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3346, + 14, + 3346, + 42, + [0, + caml_string_of_jsbytes("Article D832-14"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yr_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + [0,caml_string_of_jsbytes("input"),0]]], + _ys_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + 0]], + _yt_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + [0,caml_string_of_jsbytes("output"),0]]], + _yu_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + 0]], + _ym_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3531, + 5, + 3531, + 40, + [0, + caml_string_of_jsbytes("Article D832-17"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 690, + 11, + 690, + 41, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yl_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3542, + 14, + 3542, + 44, + [0, + caml_string_of_jsbytes("Article D832-17"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 690, + 11, + 690, + 41, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 690, + 11, + 690, + 41, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yh_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3279, + 14, + 3279, + 36, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yb_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 806, + 5, + 821, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _yc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _x__= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1061, + 5, + 1065, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _x$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _x8_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1094, + 5, + 1098, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _x9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _x6_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1127, + 5, + 1131, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _x7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _x4_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1160, + 5, + 1164, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _x5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _x2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1193, + 5, + 1197, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _x3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _x0_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1226, + 5, + 1230, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _x1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xY_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1259, + 5, + 1263, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xW_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1292, + 5, + 1296, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xU_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1325, + 5, + 1329, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1358, + 5, + 1362, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xQ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1391, + 5, + 1395, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1424, + 5, + 1428, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xM_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1457, + 5, + 1461, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xK_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1490, + 5, + 1494, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xI_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1523, + 5, + 1527, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xG_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1556, + 5, + 1560, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xE_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1589, + 5, + 1593, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xC_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1622, + 5, + 1626, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xA_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1655, + 5, + 1659, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xy_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1688, + 5, + 1692, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xw_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1721, + 5, + 1725, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xu_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1754, + 5, + 1758, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xs_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1787, + 5, + 1791, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xt_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xq_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1820, + 5, + 1824, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xo_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1853, + 5, + 1857, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xm_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1886, + 5, + 1890, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xk_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1919, + 5, + 1923, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xi_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1952, + 5, + 1956, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xg_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1985, + 5, + 1989, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xe_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2018, + 5, + 2022, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2051, + 5, + 2055, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xa_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2084, + 5, + 2088, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _w__= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2117, + 5, + 2121, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _w$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _w8_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2150, + 5, + 2154, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _w9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _w6_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2183, + 5, + 2187, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _w7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _w4_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2216, + 5, + 2220, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _w5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _w2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2249, + 5, + 2252, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _w3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _w0_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2281, + 5, + 2284, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _w1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ya_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wX_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 618, + 5, + 621, + 33, + [0, + caml_string_of_jsbytes("Article 17"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _wY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 662, + 5, + 665, + 33, + [0, + caml_string_of_jsbytes("Article 17"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _wW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wT_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 707, + 5, + 709, + 33, + [0, + caml_string_of_jsbytes("Article 17"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _wU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 750, + 5, + 752, + 33, + [0, + caml_string_of_jsbytes("Article 17"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _wS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 3, + 684, + 76, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ye_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 11, + 684, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wL_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3595, + 5, + 3595, + 28, + [0, + caml_string_of_jsbytes("Article D832-18"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _wM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 693, + 11, + 693, + 41, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wK_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3587, + 14, + 3587, + 44, + [0, + caml_string_of_jsbytes("Article D832-18"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _wG_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3130, + 14, + 3130, + 36, + [0, + caml_string_of_jsbytes("Article D832-10"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _wH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 713, + 10, + 713, + 32, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 713, + 10, + 713, + 32, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wA_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2412, + 7, + 2412, + 18, + [0, + caml_string_of_jsbytes("Article 24"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _wB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 694, + 11, + 694, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 517, + 7, + 517, + 18, + [0, + caml_string_of_jsbytes("Article 24"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _wz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 694, + 11, + 694, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ww_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1310, + 7, + 1310, + 18, + [0, + caml_string_of_jsbytes("Article 24"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _wx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 694, + 11, + 694, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 694, + 11, + 694, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wt_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2333, + 29, + 2333, + 64, + [0, + caml_string_of_jsbytes("Article 19"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _wu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 694, + 11, + 694, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 483, + 29, + 483, + 64, + [0, + caml_string_of_jsbytes("Article 19"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _ws_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 694, + 11, + 694, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1276, + 29, + 1276, + 64, + [0, + caml_string_of_jsbytes("Article 19"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _wq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 694, + 11, + 694, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 694, + 11, + 694, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 719, + 14, + 719, + 50, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wf_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2439, + 14, + 2439, + 50, + [0, + caml_string_of_jsbytes("Article 25"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _v$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3283, + 14, + 3283, + 64, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _v7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3281, + 14, + 3281, + 59, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _v3_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/autres_sources.catala_fr"), + 328, + 14, + 328, + 36, + [0, + caml_string_of_jsbytes("Article premier"), + [0, + caml_string_of_jsbytes + ("R\xc3\xa8glement (CE) n\xc2\xb02866/98 du conseil du 31 d\xc3\xa9cembre 1998 concernant les taux de conversion entre l'euro et les monnaies des \xc3\x89tats membres adoptant l'euro"), + 0]]], + _vZ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2381, + 14, + 2381, + 47, + [0, + caml_string_of_jsbytes("Article 23"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _vV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2380, + 14, + 2380, + 47, + [0, + caml_string_of_jsbytes("Article 23"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _vR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2379, + 14, + 2379, + 47, + [0, + caml_string_of_jsbytes("Article 23"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _vN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2457, + 14, + 2457, + 48, + [0, + caml_string_of_jsbytes("Article 26"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _vJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2364, + 15, + 2364, + 49, + [0, + caml_string_of_jsbytes("Article 22"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _vF_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2355, + 14, + 2355, + 42, + [0, + caml_string_of_jsbytes("Article 21"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _vB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2344, + 14, + 2344, + 41, + [0, + caml_string_of_jsbytes("Article 20"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _vC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 695, + 11, + 695, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 695, + 11, + 695, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vD_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("montant_forfaitaire_d832_10"),0]], + _vG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 696, + 11, + 696, + 39, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 696, + 11, + 696, + 39, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vH_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("montant_minimal_aide_d832_10"),0]], + _vK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 698, + 11, + 698, + 45, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 698, + 11, + 698, + 45, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vL_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_11"),0]], + _vO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 699, + 11, + 699, + 45, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 699, + 11, + 699, + 45, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vP_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_18"),0]], + _vS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 700, + 11, + 700, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 700, + 11, + 700, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vT_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("montant_limite_tranches_d832_15_1"),0]], + _vW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 701, + 11, + 701, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 701, + 11, + 701, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vX_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("taux_tranche_inf\xc3\xa9rieure_d832_15_1"), + 0]], + _v0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 702, + 11, + 702, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 702, + 11, + 702, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _v1_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("taux_tranche_sup\xc3\xa9rieure_d832_15_1"), + 0]], + _v4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 703, + 11, + 703, + 33, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _v2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 703, + 11, + 703, + 33, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _v5_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("taux_francs_vers_euros"),0]], + _v8_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3281, + 14, + 3281, + 59, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _v9_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"), + 0]], + _v6_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3281, + 14, + 3281, + 59, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _wa_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3283, + 14, + 3283, + 64, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _wb_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_nombre_parts.situation_familiale_calcul_apl"), + 0]], + _v__= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3283, + 14, + 3283, + 64, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _wc_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts"), + [0, + caml_string_of_jsbytes + ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), + 0]]], + _wd_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts"), + [0, + caml_string_of_jsbytes + ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), + 0]]], + _wg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 697, + 11, + 697, + 47, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _we_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 697, + 11, + 697, + 47, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wh_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_17_3"),0]], + _wk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 719, + 14, + 719, + 50, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wl_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], + _wi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 719, + 14, + 719, + 50, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wm_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _wn_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _wD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 694, + 11, + 694, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 694, + 11, + 694, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wE_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("montant_forfaitaire_charges_d832_10"),0]], + _wI_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _wN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 693, + 11, + 693, + 41, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 693, + 11, + 693, + 41, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wO_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("ressources_m\xc3\xa9nage_avec_d832_18"),0]], + _yf_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + 0]], + _yi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 685, + 11, + 685, + 33, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 685, + 11, + 685, + 33, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yj_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("n_nombre_parts_d832_11"),0]], + _yp_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]], + _yG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 682, + 10, + 682, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 682, + 10, + 682, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yH_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("plafond_mensualit\xc3\xa9_d832_10_3_base"), + 0]], + _yK_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3487, + 14, + 3487, + 75, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yL_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"), + 0]], + _yI_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3487, + 14, + 3487, + 75, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3486, + 14, + 3486, + 69, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yP_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"), + 0]], + _yM_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3486, + 14, + 3486, + 69, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3489, + 14, + 3489, + 70, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yT_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"), + 0]], + _yQ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3489, + 14, + 3489, + 70, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yU_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], + _yV_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], + _yY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 687, + 10, + 687, + 17, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 687, + 10, + 687, + 17, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yZ_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("coefficient_prise_en_charge_d832_10_formule"), + 0]], + _y7_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), + 0]], + _zd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 683, + 10, + 683, + 25, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _y8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 683, + 10, + 683, + 25, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ze_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("plafond_mensualit\xc3\xa9_d832_10_3_copropri\xc3\xa9taires"), + 0]], + _zk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 680, + 12, + 680, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 680, + 12, + 680, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zl_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("mensualit\xc3\xa9_minimale"),0]], + _zo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 688, + 10, + 688, + 23, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 688, + 10, + 688, + 23, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zp_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("coefficient_prise_en_charge_d832_10_coeff_arrondi"), + 0]], + _zB_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], + _zE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 679, + 12, + 679, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 679, + 12, + 679, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zF_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("mensualit\xc3\xa9_\xc3\xa9ligible"),0]], + _zI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 689, + 10, + 689, + 15, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 689, + 10, + 689, + 15, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zJ_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("coefficient_prise_en_charge_d832_10_seuil"), + 0]], + _zV_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _zY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 711, + 12, + 711, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 711, + 12, + 711, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zZ_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("aide_finale_formule"),0]], + _z7_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], + _vx_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3832, + 14, + 3832, + 36, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _vt_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("input"),0]]], + _vu_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _vv_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("output"),0]]], + _vw_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _vy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 646, + 10, + 646, + 25, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vs_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 646, + 10, + 646, + 25, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vp_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3736, + 14, + 3736, + 33, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _vl_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3811, + 14, + 3811, + 36, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _vd_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_abattement"), + [0,caml_string_of_jsbytes("input"),0]]], + _ve_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], + _vf_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_abattement"), + [0,caml_string_of_jsbytes("output"),0]]], + _vg_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], + _vh_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("input"),0]]], + _vi_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _vj_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("output"),0]]], + _vk_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _vm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 645, + 10, + 645, + 40, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 645, + 10, + 645, + 40, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _u__= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3976, + 5, + 3976, + 26, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _u$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 639, + 10, + 639, + 15, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _u9_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3889, + 14, + 3889, + 49, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _u5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3797, + 14, + 3797, + 36, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uX_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("input"),0]]], + _uY_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _uZ_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("output"),0]]], + _u0_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _u1_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), + [0,caml_string_of_jsbytes("input"),0]]], + _u2_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), + 0]], + _u3_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), + [0,caml_string_of_jsbytes("output"),0]]], + _u4_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), + 0]], + _u6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 644, + 10, + 644, + 20, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 644, + 10, + 644, + 20, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3970, + 5, + 3970, + 26, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 638, + 10, + 638, + 23, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3886, + 14, + 3886, + 49, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3769, + 14, + 3769, + 40, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4141, + 14, + 4141, + 55, + [0, + caml_string_of_jsbytes("Article D832-27"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uF_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"), + [0,caml_string_of_jsbytes("input"),0]]], + _uG_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]], + _uH_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"), + [0,caml_string_of_jsbytes("output"),0]]], + _uI_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]], + _uK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 622, + 11, + 622, + 52, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 622, + 11, + 622, + 52, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uA_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3953, + 5, + 3953, + 26, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 637, + 10, + 637, + 17, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3865, + 14, + 3865, + 49, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _ut_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3775, + 14, + 3775, + 70, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _up_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3771, + 14, + 3771, + 69, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _ul_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3773, + 14, + 3773, + 75, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uh_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4137, + 14, + 4137, + 44, + [0, + caml_string_of_jsbytes("Article D832-27"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _ui_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 624, + 11, + 624, + 41, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ug_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 624, + 11, + 624, + 41, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3941, + 14, + 3941, + 36, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _ud_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 619, + 21, + 619, + 43, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _t__= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3757, + 14, + 3757, + 40, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _t6_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2575, + 14, + 2575, + 48, + [0, + caml_string_of_jsbytes("Article 30"), + [0, + caml_string_of_jsbytes + ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _t2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2714, + 14, + 2714, + 41, + [0, + caml_string_of_jsbytes("Article 32"), + [0, + caml_string_of_jsbytes + ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _tW_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3937, + 14, + 3937, + 64, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3935, + 14, + 3935, + 59, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3939, + 14, + 3939, + 55, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tK_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3783, + 14, + 3783, + 36, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 643, + 10, + 643, + 32, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 643, + 10, + 643, + 32, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tF_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2486, + 14, + 2486, + 48, + [0, + caml_string_of_jsbytes("Article 27"), + [0, + caml_string_of_jsbytes + ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _tG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 621, + 12, + 621, + 46, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 552, + 14, + 552, + 48, + [0, + caml_string_of_jsbytes("Article 27"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _tE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 621, + 12, + 621, + 46, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1347, + 14, + 1347, + 48, + [0, + caml_string_of_jsbytes("Article 27"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _tC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 621, + 12, + 621, + 46, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 649, + 14, + 649, + 50, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tq_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3850, + 14, + 3850, + 35, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 615, + 12, + 615, + 33, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tm_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2551, + 14, + 2551, + 42, + [0, + caml_string_of_jsbytes("Article 29"), + [0, + caml_string_of_jsbytes + ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _ti_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2540, + 14, + 2540, + 41, + [0, + caml_string_of_jsbytes("Article 28"), + [0, + caml_string_of_jsbytes + ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _te_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2565, + 14, + 2565, + 35, + [0, + caml_string_of_jsbytes("Article 30"), + [0, + caml_string_of_jsbytes + ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _tf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 618, + 12, + 618, + 33, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _td_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 618, + 12, + 618, + 33, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tg_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("coefficient_r_d832_25"),0]], + _tj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 625, + 11, + 625, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _th_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 625, + 11, + 625, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tk_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("montant_forfaitaire_d832_24"),0]], + _tn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 627, + 11, + 627, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 627, + 11, + 627, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _to_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("montant_minimal_aide_d823_24"),0]], + _ts_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 615, + 12, + 615, + 33, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 615, + 12, + 615, + 33, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tt_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("condition_2_du_832_25"),0]], + _tw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 649, + 14, + 649, + 50, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tx_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], + _tu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 649, + 14, + 649, + 50, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ty_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _tz_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _tH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 621, + 12, + 621, + 46, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 621, + 12, + 621, + 46, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tI_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("plafond_\xc3\xa9quivalence_loyer_\xc3\xa9ligible"), + 0]], + _tM_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _tP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3939, + 14, + 3939, + 55, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tQ_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts.condition_2_du_832_25"), + 0]], + _tN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3939, + 14, + 3939, + 55, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tT_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3935, + 14, + 3935, + 59, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tU_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"), + 0]], + _tR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3935, + 14, + 3935, + 59, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tX_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3937, + 14, + 3937, + 64, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tY_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_nombre_parts.situation_familiale_calcul_apl"), + 0]], + _tV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3937, + 14, + 3937, + 64, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tZ_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts"), + [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]], + _t0_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts"), + [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]], + _t3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 626, + 11, + 626, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _t1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 626, + 11, + 626, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _t4_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("montant_forfaitaire_d832_27"),0]], + _t7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 617, + 12, + 617, + 46, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _t5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 617, + 12, + 617, + 46, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _t8_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_25"),0]], + _t$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 620, + 12, + 620, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _t9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 620, + 12, + 620, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ua_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_\xc3\xa9ligible"), + 0]], + _ue_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 619, + 21, + 619, + 43, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ub_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 619, + 21, + 619, + 43, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uf_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("n_nombre_parts_d832_25"),0]], + _uj_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]], + _um_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3773, + 14, + 3773, + 75, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _un_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"), + 0]], + _uk_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3773, + 14, + 3773, + 75, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uq_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3771, + 14, + 3771, + 69, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _ur_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"), + 0]], + _uo_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3771, + 14, + 3771, + 69, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uu_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3775, + 14, + 3775, + 70, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uv_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"), + 0]], + _us_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3775, + 14, + 3775, + 70, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uw_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], + _ux_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], + _uC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 637, + 10, + 637, + 17, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 637, + 10, + 637, + 17, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uD_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("coefficient_prise_en_charge_d832_25_formule"), + 0]], + _uL_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), + 0]], + _uO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 628, + 12, + 628, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 628, + 12, + 628, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uP_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_minimale"),0]], + _uU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 638, + 10, + 638, + 23, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 638, + 10, + 638, + 23, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uV_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("coefficient_prise_en_charge_d832_25_coeff_arrondi"), + 0]], + _u7_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], + _va_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 639, + 10, + 639, + 15, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _u8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 639, + 10, + 639, + 15, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vb_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("coefficient_prise_en_charge_d832_25_seuil"), + 0]], + _vn_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _vq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 641, + 12, + 641, + 31, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 641, + 12, + 641, + 31, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vr_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("aide_finale_formule"),0]], + _vz_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], + _s8_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1788, + 14, + 1788, + 33, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _s4_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1931, + 14, + 1931, + 39, + [0, + caml_string_of_jsbytes("Article D823-17"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _s0_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1914, + 14, + 1914, + 36, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _sW_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), + [0,caml_string_of_jsbytes("input"),0]]], + _sX_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), + 0]], + _sY_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), + [0,caml_string_of_jsbytes("output"),0]]], + _sZ_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), + 0]], + _s1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 577, + 10, + 577, + 25, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 577, + 10, + 577, + 25, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1965, + 14, + 1965, + 42, + [0, + caml_string_of_jsbytes("Article D823-17"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _sO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 807, + 14, + 807, + 36, + [0, + caml_string_of_jsbytes("Article L832-3"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _sK_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("input"),0]]], + _sL_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _sM_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("output"),0]]], + _sN_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _sP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 576, + 10, + 576, + 36, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 576, + 10, + 576, + 36, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1134, + 14, + 1134, + 33, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _sE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 550, + 10, + 550, + 22, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 341, + 14, + 341, + 33, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _sF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 550, + 10, + 550, + 22, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 414, + 14, + 414, + 33, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _sG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 550, + 10, + 550, + 22, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sx_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1882, + 14, + 1882, + 36, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _sp_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("input"),0]]], + _sq_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _sr_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("output"),0]]], + _ss_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _st_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("input"),0]]], + _su_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _sv_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("output"),0]]], + _sw_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _sy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 575, + 10, + 575, + 40, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _so_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 575, + 10, + 575, + 40, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _si_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1127, + 14, + 1127, + 33, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _sj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 549, + 10, + 549, + 17, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 334, + 14, + 334, + 33, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _sk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 549, + 10, + 549, + 17, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sg_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 407, + 14, + 407, + 33, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _sl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 549, + 10, + 549, + 17, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1865, + 14, + 1865, + 36, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _r__= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"), + [0,caml_string_of_jsbytes("input"),0]]], + _r$_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]], + _sa_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"), + [0,caml_string_of_jsbytes("output"),0]]], + _sb_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]], + _sd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 574, + 10, + 574, + 32, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _r9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 574, + 10, + 574, + 32, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _r3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1103, + 14, + 1103, + 28, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _r4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 551, + 11, + 551, + 25, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _r2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 307, + 14, + 307, + 28, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _r5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 551, + 11, + 551, + 25, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _r1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 381, + 14, + 381, + 28, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _r6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 551, + 11, + 551, + 25, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rW_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 302, + 14, + 302, + 36, + [0, + caml_string_of_jsbytes("Article 13"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _rX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 34, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 228, + 14, + 228, + 36, + [0, + caml_string_of_jsbytes("Article 13"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _rV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 34, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1024, + 14, + 1024, + 36, + [0, + caml_string_of_jsbytes("Article 13"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _rT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 34, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1855, + 5, + 1855, + 50, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _rO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 573, + 10, + 573, + 17, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rM_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1841, + 14, + 1841, + 36, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _rP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 573, + 10, + 573, + 17, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 573, + 10, + 573, + 17, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rI_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1806, + 14, + 1806, + 28, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _rE_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 253, + 14, + 253, + 42, + [0, + caml_string_of_jsbytes("Article 10"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _rA_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 259, + 14, + 259, + 41, + [0, + caml_string_of_jsbytes("Article 10"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _rw_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4211, + 14, + 4211, + 29, + [0, + caml_string_of_jsbytes("Article D842-2"), + [0, + caml_string_of_jsbytes("Section 1 : Secteur locatif ordinaire"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _rq_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 572, + 29, + 572, + 64, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _rr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 561, + 12, + 561, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ro_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 450, + 29, + 450, + 64, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _rp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 561, + 12, + 561, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1241, + 29, + 1241, + 64, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _rn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 561, + 12, + 561, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rs_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 561, + 12, + 561, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rj_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 230, + 29, + 230, + 64, + [0, + caml_string_of_jsbytes("Article 9"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _rk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 561, + 12, + 561, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 214, + 29, + 214, + 64, + [0, + caml_string_of_jsbytes("Article 9"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _ri_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 561, + 12, + 561, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1010, + 29, + 1010, + 64, + [0, + caml_string_of_jsbytes("Article 9"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _rg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 561, + 12, + 561, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 561, + 12, + 561, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _q$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 529, + 5, + 530, + 34, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _ra_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _q9_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 538, + 5, + 539, + 34, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _q__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _q7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 547, + 5, + 547, + 35, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _q8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _q5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 406, + 5, + 407, + 34, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _q6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _q3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 415, + 5, + 416, + 34, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _q4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _q1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 424, + 5, + 424, + 35, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _q2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1197, + 5, + 1198, + 34, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _q0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1206, + 5, + 1207, + 34, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _qY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1215, + 5, + 1215, + 35, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _qW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 195, + 5, + 195, + 61, + [0, + caml_string_of_jsbytes("Article 8"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 179, + 5, + 179, + 61, + [0, + caml_string_of_jsbytes("Article 8"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 975, + 5, + 975, + 61, + [0, + caml_string_of_jsbytes("Article 8"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _qO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qK_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 188, + 14, + 188, + 37, + [0, + caml_string_of_jsbytes("Article 8"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 172, + 14, + 172, + 37, + [0, + caml_string_of_jsbytes("Article 8"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 968, + 14, + 968, + 37, + [0, + caml_string_of_jsbytes("Article 8"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _qH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qD_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 104, + 5, + 105, + 34, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 114, + 5, + 115, + 34, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 124, + 5, + 124, + 35, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 87, + 5, + 88, + 34, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 97, + 5, + 98, + 34, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qt_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 107, + 5, + 107, + 35, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 884, + 5, + 885, + 34, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _qs_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 894, + 5, + 895, + 34, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _qq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 904, + 5, + 904, + 35, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _qo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qj_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 286, + 14, + 286, + 42, + [0, + caml_string_of_jsbytes("Article 12"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 359, + 14, + 359, + 29, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qe_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 552, + 11, + 552, + 26, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 431, + 14, + 431, + 29, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 552, + 11, + 552, + 26, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qa_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1152, + 14, + 1152, + 29, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _qb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 552, + 11, + 552, + 26, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _p7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 467, + 14, + 467, + 44, + [0, + caml_string_of_jsbytes("Article 15"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _p8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 558, + 11, + 558, + 41, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _p5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 27, + 14, + 27, + 44, + [0, + caml_string_of_jsbytes("Article 15"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er juillet 2022 au 31 d\xc3\xa9cembre 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _p6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 558, + 11, + 558, + 41, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _p3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 822, + 14, + 822, + 44, + [0, + caml_string_of_jsbytes("Article 15"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er janvier 2022 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _p4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 558, + 11, + 558, + 41, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _p1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1418, + 14, + 1418, + 44, + [0, + caml_string_of_jsbytes("Article 15"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er janvier 2020 au 31 d\xc3\xa9cembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _p2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 558, + 11, + 558, + 41, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1069, + 14, + 1069, + 40, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _pV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 564, + 12, + 564, + 38, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 273, + 14, + 273, + 40, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _pW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 564, + 12, + 564, + 38, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 348, + 14, + 348, + 40, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _pX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 564, + 12, + 564, + 38, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 580, + 14, + 580, + 50, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pI_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 274, + 14, + 274, + 41, + [0, + caml_string_of_jsbytes("Article 11"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _pE_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1905, + 14, + 1905, + 29, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _pF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 553, + 11, + 553, + 26, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 553, + 11, + 553, + 26, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pG_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("fraction_l832_3"),0]], + _pJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 556, + 11, + 556, + 38, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 556, + 11, + 556, + 38, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pK_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("montant_forfaitaire_d823_16"),0]], + _pN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 580, + 14, + 580, + 50, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pO_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], + _pL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 580, + 14, + 580, + 50, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pP_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _pQ_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _pY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 564, + 12, + 564, + 38, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 564, + 12, + 564, + 38, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pZ_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("taux_composition_familiale"),0]], + _p9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 558, + 11, + 558, + 41, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _p0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 558, + 11, + 558, + 41, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _p__= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("abattement_forfaitaire_d823_17"),0]], + _qg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 552, + 11, + 552, + 26, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _p$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 552, + 11, + 552, + 26, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qh_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("loyer_r\xc3\xa9f\xc3\xa9rence"),0]], + _qk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 557, + 11, + 557, + 39, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 557, + 11, + 557, + 39, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ql_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("montant_minimal_aide_d823_16"),0]], + _rc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rd_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("plafond_loyer_d823_16_2"),0]], + _rt_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 561, + 12, + 561, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _re_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 561, + 12, + 561, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ru_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("montant_forfaitaire_charges_d823_16"),0]], + _rx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 531, + 10, + 531, + 31, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 531, + 10, + 531, + 31, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ry_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("loyer_principal_avec_r\xc3\xa9duction_meubl\xc3\xa9"), + 0]], + _rB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 555, + 11, + 555, + 38, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 555, + 11, + 555, + 38, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rC_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("plafond_suppression_d823_16"),0]], + _rF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 554, + 11, + 554, + 39, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 554, + 11, + 554, + 39, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rG_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("plafond_d\xc3\xa9gressivit\xc3\xa9_d823_16"), + 0]], + _rJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 547, + 11, + 547, + 25, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 547, + 11, + 547, + 25, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rK_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("loyer_\xc3\xa9ligible"),0]], + _rQ_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]], + _rY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 34, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 34, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rZ_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("participation_minimale"),0]], + _r7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 551, + 11, + 551, + 25, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _r0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 551, + 11, + 551, + 25, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _r8_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("rapport_loyers"),0]], + _se_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _sm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 549, + 10, + 549, + 17, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 549, + 10, + 549, + 17, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sn_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("taux_loyer_\xc3\xa9ligible_formule"),0]], + _sz_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _sH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 550, + 10, + 550, + 22, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 550, + 10, + 550, + 22, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sI_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("taux_loyer_\xc3\xa9ligible_taux_arrondi"),0]], + _sQ_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), + 0]], + _sT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 559, + 11, + 559, + 39, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 559, + 11, + 559, + 39, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sU_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("taux_prise_compte_ressources"),0]], + _s2_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], + _s5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 565, + 12, + 565, + 37, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _s3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 565, + 12, + 565, + 37, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _s6_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("participation_personnelle"),0]], + _s9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 570, + 12, + 570, + 31, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _s7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 570, + 12, + 570, + 31, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _s__= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("aide_finale_formule"),0]], + _s$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1858, + 13, + 1858, + 74, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1858, + 13, + 1858, + 74, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _ta_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 817, + 13, + 817, + 61, + [0, + caml_string_of_jsbytes("Article L832-3"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _tb_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 817, + 13, + 817, + 61, + [0, + caml_string_of_jsbytes("Article L832-3"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _pr_=[7,0], + _ps_=[5,0], + _pt_=[4,0], + _pu_=[3,0], + _pv_=[2,0], + _pw_=[1,0], + _px_=[0,0], + _py_=[6,0], + _pz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 29, + 5, + 38, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _pA_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _po_=[8,0], + _pp_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 47, + 5, + 49, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _pq_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _pe_=[7,0], + _pf_=[5,0], + _pg_=[4,0], + _ph_=[3,0], + _pi_=[2,0], + _pj_=[1,0], + _pk_=[0,0], + _pl_=[6,0], + _pm_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 68, + 5, + 77, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _pn_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _pb_=[8,0], + _pc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 86, + 5, + 88, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _pd_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _o3_=[7,0], + _o4_=[5,0], + _o5_=[4,0], + _o6_=[3,0], + _o7_=[2,0], + _o8_=[1,0], + _o9_=[0,0], + _o__=[6,0], + _o$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 107, + 5, + 116, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _pa_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _o0_=[8,0], + _o1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 125, + 5, + 127, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _o2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _oQ_=[7,0], + _oR_=[5,0], + _oS_=[4,0], + _oT_=[3,0], + _oU_=[2,0], + _oV_=[1,0], + _oW_=[0,0], + _oX_=[6,0], + _oY_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 146, + 5, + 155, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _oZ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _oN_=[8,0], + _oO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 165, + 5, + 167, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _oP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _oD_=[7,0], + _oE_=[5,0], + _oF_=[4,0], + _oG_=[3,0], + _oH_=[2,0], + _oI_=[1,0], + _oJ_=[0,0], + _oK_=[6,0], + _oL_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 186, + 5, + 195, + 6, + [0, + caml_string_of_jsbytes("Article 2"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _oM_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _oA_=[8,0], + _oB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 204, + 5, + 206, + 6, + [0, + caml_string_of_jsbytes("Article 2"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _oC_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _oq_=[7,0], + _or_=[5,0], + _os_=[4,0], + _ot_=[3,0], + _ou_=[2,0], + _ov_=[1,0], + _ow_=[0,0], + _ox_=[6,0], + _oy_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 225, + 5, + 234, + 6, + [0, + caml_string_of_jsbytes("Article 2"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 29 juillet 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _oz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _on_=[8,0], + _oo_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 243, + 5, + 245, + 6, + [0, + caml_string_of_jsbytes("Article 2"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 29 juillet 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _op_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _od_=[7,0], + _oe_=[5,0], + _of_=[4,0], + _og_=[3,0], + _oh_=[2,0], + _oi_=[1,0], + _oj_=[0,0], + _ok_=[6,0], + _ol_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 265, + 5, + 274, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2022-1608 du 22 d\xc3\xa9cembre 2022 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _om_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _oa_=[8,0], + _ob_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 283, + 5, + 285, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2022-1608 du 22 d\xc3\xa9cembre 2022 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _oc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _pB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _n$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _pC_= + [0, + caml_string_of_jsbytes("Smic"), + [0,caml_string_of_jsbytes("brut_horaire"),0]], + _n7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 28, + 5, + 29, + 33, + [0, + caml_string_of_jsbytes + ("Instruction minist\xc3\xa9rielle N\xc2\xb0DSS/SD2B/2019/65 du 25 mars 2019 relative \xc3\xa0 la revalorisation au 1er avril 2019 des prestations familiales servies en m\xc3\xa9tropole"), + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]]], + _n8_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _n5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 48, + 5, + 49, + 33, + [0, + caml_string_of_jsbytes + ("Instruction interminist\xc3\xa9rielle no DSS/SD2B/2020/33 du 18 f\xc3\xa9vrier 2020 relative \xc3\xa0 la revalorisation au 1er avril 2020 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]]], + _n6_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _n3_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 64, + 5, + 65, + 33, + [0, + caml_string_of_jsbytes + ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2021/65 du 19 mars 2021 relative \xc3\xa0 la revalorisation au 1er avril 2021 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]]], + _n4_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _n1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 82, + 5, + 83, + 33, + [0, + caml_string_of_jsbytes + ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2022/82 du 28 mars 2022 relative \xc3\xa0 la revalorisation au 1er avril 2022 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]]], + _n2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _n9_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _n0_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _n__= + [0, + caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant"),0]], + _nV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2245, + 14, + 2245, + 28, + [0, + caml_string_of_jsbytes("Article R824-2"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1018, + 12, + 1018, + 26, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nU_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2182, + 14, + 2182, + 28, + [0, + caml_string_of_jsbytes("Article R824-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1018, + 12, + 1018, + 26, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2187, + 20, + 2187, + 55, + [0, + caml_string_of_jsbytes("Article R824-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1013, + 11, + 1013, + 43, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2203, + 20, + 2203, + 51, + [0, + caml_string_of_jsbytes("Article R824-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1013, + 11, + 1013, + 43, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nL_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2269, + 7, + 2269, + 42, + [0, + caml_string_of_jsbytes("Article R824-2"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1013, + 11, + 1013, + 43, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2297, + 7, + 2297, + 51, + [0, + caml_string_of_jsbytes("Article R824-2"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1013, + 11, + 1013, + 43, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nE_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2226, + 14, + 2226, + 36, + [0, + caml_string_of_jsbytes("Article R824-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1016, + 11, + 1016, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nC_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2322, + 14, + 2322, + 36, + [0, + caml_string_of_jsbytes("Article R824-2"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1016, + 11, + 1016, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nw_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2313, + 14, + 2313, + 36, + [0, + caml_string_of_jsbytes("Article R824-2"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1015, + 11, + 1015, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nv_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2217, + 14, + 2217, + 36, + [0, + caml_string_of_jsbytes("Article R824-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _ny_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1015, + 11, + 1015, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nr_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2345, + 14, + 2345, + 36, + [0, + caml_string_of_jsbytes("Article R824-3"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nm_=[0,0], + _nn_=[1,0], + _no_=[1,0], + _np_=[0,0], + _nq_=[0,0], + _ns_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1014, + 11, + 1014, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1014, + 11, + 1014, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nt_= + [0, + caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), + [0,caml_string_of_jsbytes("mode_occupation_impay\xc3\xa9"),0]], + _nz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1015, + 11, + 1015, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1015, + 11, + 1015, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nA_= + [0, + caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_logement_brute"),0]], + _nG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1016, + 11, + 1016, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1016, + 11, + 1016, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nH_= + [0, + caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_logement_nette"),0]], + _nR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1013, + 11, + 1013, + 43, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1013, + 11, + 1013, + 43, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nS_= + [0, + caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), + [0, + caml_string_of_jsbytes + ("seuil_impay\xc3\xa9_d\xc3\xa9pense_de_logement"), + 0]], + _nY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1018, + 12, + 1018, + 26, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1018, + 12, + 1018, + 26, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nZ_= + [0, + caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), + [0,caml_string_of_jsbytes("montant_impay\xc3\xa9"),0]], + _nh_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 119, + 5, + 119, + 42, + [0, + caml_string_of_jsbytes("Article L161-17-2"), + [0, + caml_string_of_jsbytes + ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Titre III: Titre III : Dispositions communes relatives au financement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _ni_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 998, + 12, + 998, + 31, + [0, + caml_string_of_jsbytes + ("Date d'ouverture des droits \xc3\xa0 la retraite"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nf_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 256, + 5, + 256, + 41, + [0, + caml_string_of_jsbytes("Article D161-2-1-9"), + [0, + caml_string_of_jsbytes + ("Paragraphe 2 : Ouverture du droit et liquidation."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _ng_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 998, + 12, + 998, + 31, + [0, + caml_string_of_jsbytes + ("Date d'ouverture des droits \xc3\xa0 la retraite"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nd_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 266, + 5, + 267, + 42, + [0, + caml_string_of_jsbytes("Article D161-2-1-9"), + [0, + caml_string_of_jsbytes + ("Paragraphe 2 : Ouverture du droit et liquidation."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _ne_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 998, + 12, + 998, + 31, + [0, + caml_string_of_jsbytes + ("Date d'ouverture des droits \xc3\xa0 la retraite"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nb_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 276, + 5, + 276, + 48, + [0, + caml_string_of_jsbytes("Article D161-2-1-9"), + [0, + caml_string_of_jsbytes + ("Paragraphe 2 : Ouverture du droit et liquidation."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _nc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 998, + 12, + 998, + 31, + [0, + caml_string_of_jsbytes + ("Date d'ouverture des droits \xc3\xa0 la retraite"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _m$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 285, + 5, + 285, + 48, + [0, + caml_string_of_jsbytes("Article D161-2-1-9"), + [0, + caml_string_of_jsbytes + ("Paragraphe 2 : Ouverture du droit et liquidation."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _na_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 998, + 12, + 998, + 31, + [0, + caml_string_of_jsbytes + ("Date d'ouverture des droits \xc3\xa0 la retraite"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _m9_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 294, + 5, + 294, + 48, + [0, + caml_string_of_jsbytes("Article D161-2-1-9"), + [0, + caml_string_of_jsbytes + ("Paragraphe 2 : Ouverture du droit et liquidation."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _m__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 998, + 12, + 998, + 31, + [0, + caml_string_of_jsbytes + ("Date d'ouverture des droits \xc3\xa0 la retraite"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 998, + 12, + 998, + 31, + [0, + caml_string_of_jsbytes + ("Date d'ouverture des droits \xc3\xa0 la retraite"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _m8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 998, + 12, + 998, + 31, + [0, + caml_string_of_jsbytes + ("Date d'ouverture des droits \xc3\xa0 la retraite"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nk_= + [0, + caml_string_of_jsbytes("OuvertureDroitsRetraite"), + [0,caml_string_of_jsbytes("\xc3\xa2ge_ouverture_droit"),0]], + _m5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3260, + 14, + 3260, + 36, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _m6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 659, + 12, + 659, + 34, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _m4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 659, + 12, + 659, + 34, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _m7_= + [0, + caml_string_of_jsbytes + ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("n_nombre_parts_d832_11"),0]], + _m0_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4003, + 5, + 4003, + 26, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _m1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 603, + 12, + 603, + 34, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mZ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3916, + 14, + 3916, + 36, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _m2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 603, + 12, + 603, + 34, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 603, + 12, + 603, + 34, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _m3_= + [0, + caml_string_of_jsbytes("CalculNombrePartLogementFoyer"), + [0,caml_string_of_jsbytes("n_nombre_parts_d832_25"),0]], + _mU_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4089, + 5, + 4089, + 26, + [0, + caml_string_of_jsbytes("Article D832-26"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _mV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 596, + 12, + 596, + 19, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mT_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4051, + 14, + 4051, + 21, + [0, + caml_string_of_jsbytes("Article D832-26"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _mP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4038, + 14, + 4038, + 50, + [0, + caml_string_of_jsbytes("Article D832-26"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _mO_=[1,0], + _mJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2650, + 5, + 2650, + 26, + [0, + caml_string_of_jsbytes("Article 31"), + [0, + caml_string_of_jsbytes + ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _mI_=[1,0], + _mK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 591, + 11, + 591, + 35, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mH_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2601, + 14, + 2601, + 38, + [0, + caml_string_of_jsbytes("Article 31"), + [0, + caml_string_of_jsbytes + ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _mG_=[1,0], + _mC_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2685, + 14, + 2685, + 41, + [0, + caml_string_of_jsbytes("Article 31"), + [0, + caml_string_of_jsbytes + ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _mD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 594, + 11, + 594, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 594, + 11, + 594, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mE_= + [0, + caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"), + [0,caml_string_of_jsbytes("montant_forfaitaire_d832_26"),0]], + _mL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 591, + 11, + 591, + 35, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 591, + 11, + 591, + 35, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mM_= + [0, + caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"), + [0,caml_string_of_jsbytes("tranches_revenus_d832_26"),0]], + _mQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 592, + 11, + 592, + 47, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 592, + 11, + 592, + 47, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mR_= + [0, + caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"), + [0, + caml_string_of_jsbytes("tranches_revenus_d832_26_multipli\xc3\xa9es"), + 0]], + _mW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 596, + 12, + 596, + 19, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 596, + 12, + 596, + 19, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mX_= + [0, + caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"), + [0,caml_string_of_jsbytes("montant"),0]], + _mx_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/autres_sources.catala_fr"), + 153, + 5, + 153, + 34, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Des contributions pour le remboursement de la dette sociale."), + [0, + caml_string_of_jsbytes + ("Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale"), + 0]]]], + _my_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 520, + 12, + 520, + 19, + [0, + caml_string_of_jsbytes + ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _mw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 520, + 12, + 520, + 19, + [0, + caml_string_of_jsbytes + ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _mt_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/autres_sources.catala_fr"), + 191, + 39, + 191, + 68, + [0, + caml_string_of_jsbytes("Article 19"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Des contributions pour le remboursement de la dette sociale."), + [0, + caml_string_of_jsbytes + ("Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale"), + 0]]]], + _mo_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 37, + 9, + 37, + 20, + [0, + caml_string_of_jsbytes("Article L136-1-3"), + [0, + caml_string_of_jsbytes + ("Section 1 : De la contribution sociale sur les revenus d'activit\xc3\xa9 et sur les revenus de remplacement"), + [0, + caml_string_of_jsbytes + ("Chapitre 6 : Contribution sociale g\xc3\xa9n\xc3\xa9ralis\xc3\xa9e"), + [0, + caml_string_of_jsbytes + ("Titre III: Titre III : Dispositions communes relatives au financement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _mp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 518, + 11, + 518, + 22, + [0, + caml_string_of_jsbytes + ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _mn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 518, + 11, + 518, + 22, + [0, + caml_string_of_jsbytes + ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _mq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 518, + 11, + 518, + 22, + [0, + caml_string_of_jsbytes + ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _mm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 518, + 11, + 518, + 22, + [0, + caml_string_of_jsbytes + ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _mr_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("exon\xc3\xa9r\xc3\xa9_csg"),0]], + _mu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 517, + 11, + 517, + 20, + [0, + caml_string_of_jsbytes + ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _ms_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 517, + 11, + 517, + 20, + [0, + caml_string_of_jsbytes + ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _mv_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("taux_crds"),0]], + _mz_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _mA_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/autres_sources.catala_fr"), + 157, + 13, + 157, + 24, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Des contributions pour le remboursement de la dette sociale."), + [0, + caml_string_of_jsbytes + ("Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale"), + 0]]]], + _ml_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales_in"), + 0], + _mk_=[0,caml_string_of_jsbytes("Smic_in"),0], + _mj_= + [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales_in"),0], + _mi_= + [0, + caml_string_of_jsbytes + ("CalculetteAidesAuLogementGardeAltern\xc3\xa9e_in"), + 0], + _mh_=[0,caml_string_of_jsbytes("CalculetteAidesAuLogement_in"),0], + _mg_= + [0,caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement_in"),0], + _mf_=[0,caml_string_of_jsbytes("OuvertureDroitsRetraite_in"),0], + _me_=[0,caml_string_of_jsbytes("CalculAllocationLogement_in"),0], + _md_=[0,caml_string_of_jsbytes("CalculAllocationLogementFoyer_in"),0], + _mc_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"), + 0], + _mb_=[0,caml_string_of_jsbytes("CalculAllocationLogementLocatif_in"),0], + _ma_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement_in"), + 0], + _l$_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"), + 0], + _l__= + [0, + caml_string_of_jsbytes + ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9_in"), + 0], + _l9_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementFoyer_in"), + 0], + _l8_=[0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer_in"),0], + _l7_= + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale_in"),0], + _l6_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementLocatif_in"), + 0], + _l5_= + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement_in"), + 0], + _l4_= + [0,caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement_in"),0], + _l3_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement_in"), + 0], + _l2_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AllocationLogement_in"), + 0], + _l1_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement_in"), + 0], + _l0_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement_in"), + 0], + _lZ_=[0,caml_string_of_jsbytes("M\xc3\xa9nage"),0], + _lY_=[0,caml_string_of_jsbytes("Logement"),0], + _lX_=[0,caml_string_of_jsbytes("ModeOccupation"),0], + _lW_=[0,caml_string_of_jsbytes("Cat\xc3\xa9gorieCalculAPL"),0], + _lV_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + 0], + _lU_=[0,caml_string_of_jsbytes("Location"),0], + _lT_=[0,caml_string_of_jsbytes("Demandeur"),0], + _lS_=[0,caml_string_of_jsbytes("Personne\xc3\x80Charge"),0], + _lR_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + 0], + _lQ_= + [0, + caml_string_of_jsbytes("InformationsPrimeDeD\xc3\xa9m\xc3\xa9nagement"), + 0], + _lP_=[0,caml_string_of_jsbytes("Propri\xc3\xa9taire"),0], + _lO_=[0,caml_string_of_jsbytes("ChangementLogementD842_4"),0], + _lN_=[0,caml_string_of_jsbytes("Nationalit\xc3\xa9"),0], + _lM_= + [0, + caml_string_of_jsbytes("Lou\xc3\xa9OuSousLou\xc3\xa9\xc3\x80DesTiers"), + 0], + _lL_=[0,caml_string_of_jsbytes("TypeBailleur"),0], + _lK_=[0,caml_string_of_jsbytes("Enfant\xc3\x80Charge"),0], + _lJ_=[0,caml_string_of_jsbytes("EnfantPrestationsFamiliales"),0], + _lI_=[0,caml_string_of_jsbytes("LogementFoyer"),0], + _lH_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + 0], + _lG_= + [0, + caml_string_of_jsbytes + ("DateNaissanceTroisi\xc3\xa8meOuDernierPlusEnfant"), + 0], + _lF_=[0,caml_string_of_jsbytes("AutrePersonne\xc3\x80Charge"),0], + _lE_=[0,caml_string_of_jsbytes("TrancheRevenuD\xc3\xa9cimal"),0], + _lD_=[0,caml_string_of_jsbytes("TrancheRevenu"),0], + _lC_=[0,caml_string_of_jsbytes("NeufOuAncien"),0], + _lB_=[0,caml_string_of_jsbytes("Pr\xc3\xaat"),0], + _lA_=[0,caml_string_of_jsbytes("Smic"),0], + _lz_=[0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0], + _ly_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + 0], + _lx_=[0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0], + _lw_=[0,caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"),0], + _lv_=[0,caml_string_of_jsbytes("OuvertureDroitsRetraite"),0], + _lu_=[0,caml_string_of_jsbytes("CalculAllocationLogement"),0], + _lt_=[0,caml_string_of_jsbytes("CalculAllocationLogementFoyer"),0], + _ls_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + 0], + _lr_=[0,caml_string_of_jsbytes("CalculAllocationLogementLocatif"),0], + _lq_=[0,caml_string_of_jsbytes("InfosChangementLogementD842_4"),0], + _lp_= + [0,caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),0], + _lo_=[0,caml_string_of_jsbytes("Traitement_formule_aide_finale"),0], + _ln_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + 0], + _lm_= + [0, + caml_string_of_jsbytes + ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), + 0], + _ll_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + 0], + _lk_=[0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0], + _lj_= + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0], + _li_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + 0], + _lh_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + 0], + _lg_=[0,caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"),0], + _lf_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + 0], + _le_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + 0], + _ld_=[0,caml_string_of_jsbytes("PersonneVivantHabituellementAuFoyer"),0], + _lc_=[0,caml_string_of_jsbytes("Conditions\xc3\x89trangers"),0], + _lb_=[0,caml_string_of_jsbytes("Patrimoine"),0], + _la_=[0,caml_string_of_jsbytes("PersonneSousLocation"),0], + _k$_=[0,caml_string_of_jsbytes("ConventionANHA"),0], + _k__=[0,caml_string_of_jsbytes("ConventionBailleurSocial"),0], + _k9_= + [0, + caml_string_of_jsbytes("\xc3\x89l\xc3\xa9mentPrestationsFamiliales"), + 0], + _k8_=[0,caml_string_of_jsbytes("SituationObligationScolaire"),0], + _k7_=[0,caml_string_of_jsbytes("PriseEnChargeEnfant"),0], + _k6_=[0,caml_string_of_jsbytes("Collectivit\xc3\xa9"),0], + _k5_=[0,caml_string_of_jsbytes("SituationFamilialeCalculAPL"),0], + _k4_= + [0, + caml_string_of_jsbytes + ("Cat\xc3\xa9gorie\xc3\x89quivalenceLoyerAllocationLogementFoyer"), + 0], + _k3_=[0,caml_string_of_jsbytes("TypeLogementFoyer"),0], + _k2_=[0,caml_string_of_jsbytes("PriseEnCharge"),0], + _k1_=[0,caml_string_of_jsbytes("SituationFamiliale"),0], + _k0_=[0,caml_string_of_jsbytes("TypeAidesPersonnelleLogement"),0], + _kZ_= + [0, + caml_string_of_jsbytes + ("Type\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + 0], + _kY_=[0,caml_string_of_jsbytes("ModeOccupationImpay\xc3\xa9"),0], + _kX_=[0,caml_string_of_jsbytes("D\xc3\xa9penseLogement"),0], + _kW_=[0,caml_string_of_jsbytes("Versement\xc3\x80"),0], + _kV_= + [0,caml_string_of_jsbytes("PaiementLogementDistinctProfessionnel"),0], + _kU_=[0,caml_string_of_jsbytes("ZoneDHabitation"),0], + _kT_=[0,caml_string_of_jsbytes("DateDeNaissanceOuMoisDeGrossesse"),0], + _kS_=[0,caml_string_of_jsbytes("Parent\xc3\xa9"),0], + _kR_=[0,caml_string_of_jsbytes("SituationGardeAltern\xc3\xa9e"),0], + _kQ_=[0,caml_string_of_jsbytes("ParentOuAutre"),0], + _kP_=[0,caml_string_of_jsbytes("PrestationRe\xc3\xa7ue"),0], + _kO_=[0,caml_string_of_jsbytes("LimiteTrancheD\xc3\xa9cimal"),0], + _kN_=[0,caml_string_of_jsbytes("LimiteTranche"),0], + _kM_=[0,caml_string_of_jsbytes("Am\xc3\xa9lior\xc3\xa9ParOccupant"),0], + _kL_=[0,caml_string_of_jsbytes("TypeTravauxLogementR842_5"),0], + _kK_=[0,caml_string_of_jsbytes("TypeTravauxLogementD832_15"),0], + _kJ_=[0,caml_string_of_jsbytes("TitulairePr\xc3\xaat"),0], + _kI_=[0,caml_string_of_jsbytes("TypePr\xc3\xaat"),0], + _XE_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'ModeOccupation.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'ModeOccupation.t'")], + _XD_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'CategorieCalculAPL.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'CategorieCalculAPL.t'")], + _XC_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'PersonneACharge.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'PersonneACharge.t'")], + _XB_=[1,0], + _XA_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'ChangementLogementD8424.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'ChangementLogementD8424.t'")], + _Xz_=[0,0], + _Xy_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes("' kind for the enumeration 'Nationalite.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'Nationalite.t'")], + _Xx_=[0,0], + _Xw_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'LoueOuSousLoueADesTiers.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'LoueOuSousLoueADesTiers.t'")], + _Xv_=[2,0], + _Xu_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'TypeBailleur.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'TypeBailleur.t'")], + _Xt_=[0,0], + _Xs_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'")], + _Xr_=[0,0], + _Xq_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'NeufOuAncien.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'NeufOuAncien.t'")], + _Xi_=[0,0], + _Xj_=[2,0], + _Xk_=[1,0], + _Xl_=[5,0], + _Xm_=[6,0], + _Xn_=[3,0], + _Xo_=[7,0], + _Xp_=[4,0], + _Xh_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'ElementPrestationsFamiliales.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'ElementPrestationsFamiliales.t'")], + _Xe_=[1,0], + _Xf_=[0,0], + _Xg_=[2,0], + _Xd_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'SituationObligationScolaire.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'SituationObligationScolaire.t'")], + _W__=[4,0], + _W$_=[3,0], + _Xa_=[0,0], + _Xb_=[1,0], + _Xc_=[2,0], + _W9_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'PriseEnChargeEnfant.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'PriseEnChargeEnfant.t'")], + _W0_=[7,0], + _W1_=[5,0], + _W2_=[4,0], + _W3_=[6,0], + _W4_=[8,0], + _W5_=[2,0], + _W6_=[3,0], + _W7_=[1,0], + _W8_=[0,0], + _WZ_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'Collectivite.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'Collectivite.t'")], + _WX_=[0,0], + _WY_=[1,0], + _WW_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'SituationFamilialeCalculAPL.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'SituationFamilialeCalculAPL.t'")], + _WS_=[2,0], + _WT_=[1,0], + _WU_=[0,0], + _WV_=[3,0], + _WR_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'")], + _WN_=[1,0], + _WO_=[0,0], + _WP_=[2,0], + _WQ_=[3,0], + _WM_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'TypeLogementFoyer.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'TypeLogementFoyer.t'")], + _WJ_=[2,0], + _WK_=[1,0], + _WL_=[0,0], + _WI_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'PriseEnCharge.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'PriseEnCharge.t'")], + _WD_=[2,0], + _WE_=[3,0], + _WF_=[5,0], + _WG_=[4,0], + _WH_=[0,0], + _WC_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'SituationFamiliale.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'SituationFamiliale.t'")], + _Wz_=[2,0], + _WA_=[1,0], + _WB_=[0,0], + _Wy_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'TypeAidesPersonnelleLogement.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'TypeAidesPersonnelleLogement.t'")], + _Wv_=[0,0], + _Ww_=[2,0], + _Wx_=[1,0], + _Wu_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'TypeEligibiliteAllocationLogement.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'TypeEligibiliteAllocationLogement.t'")], + _Ws_=[1,0], + _Wt_=[0,0], + _Wr_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'ModeOccupationImpaye.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'ModeOccupationImpaye.t'")], + _Wq_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'DepenseLogement.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'DepenseLogement.t'")], + _Wn_=[2,0], + _Wo_=[1,0], + _Wp_=[0,0], + _Wm_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes("' kind for the enumeration 'VersementA.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'VersementA.t'")], + _Wl_=[1,0], + _Wk_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'")], + _Wh_=[2,0], + _Wi_=[1,0], + _Wj_=[0,0], + _Wg_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'ZoneDHabitation.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'ZoneDHabitation.t'")], + _We_=[1,0], + _Wf_=[2,0], + _Wd_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'")], + _Wa_=[1,0], + _Wb_=[2,0], + _Wc_=[0,0], + _V$_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes("' kind for the enumeration 'Parente.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'Parente.t'")], + _V__=[0,0], + _V9_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'SituationGardeAlternee.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'SituationGardeAlternee.t'")], + _V8_=[1,0], + _V7_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'ParentOuAutre.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'ParentOuAutre.t'")], + _V1_=[1,0], + _V2_=[0,0], + _V3_=[3,0], + _V4_=[4,0], + _V5_=[2,0], + _V6_=[5,0], + _V0_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'PrestationRecue.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'PrestationRecue.t'")], + _VZ_=[1,0], + _VY_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'LimiteTrancheDecimal.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'LimiteTrancheDecimal.t'")], + _VX_=[1,0], + _VW_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'LimiteTranche.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'LimiteTranche.t'")], + _VU_=[0,0], + _VV_=[1,0], + _VT_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'AmelioreParOccupant.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'AmelioreParOccupant.t'")], + _VP_=[1,0], + _VQ_=[3,0], + _VR_=[0,0], + _VS_=[2,0], + _VO_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'TypeTravauxLogementR8425.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementR8425.t'")], + _VL_=[1,0], + _VM_=[0,0], + _VN_=[2,0], + _VK_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'TypeTravauxLogementD83215.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementD83215.t'")], + _VI_=[1,0], + _VJ_=[0,0], + _VH_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'TitulairePret.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'TitulairePret.t'")], + _VC_=[3,0], + _VD_=[1,0], + _VE_=[2,0], + _VF_=[0,0], + _VG_=[4,0], + _VB_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes("' kind for the enumeration 'TypePret.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'TypePret.t'")]; + function embed_prise_en_charge(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _ciM_= + [0, + cst_GardeAltern_ePartageAlloca, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _ciM_= + [0, + cst_GardeAltern_eAllocataireUn, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _ciM_= + [0, + cst_EffectiveEtPermanente, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + case 3: + var + x$3=x[1], + _ciM_= + [0, + cst_ServicesSociauxAllocationV, + caml_call1(Runtime_ocaml_Runtime[11],x$3)]; + break; + default: + var + x$4=x[1], + _ciM_= + [0, + cst_ServicesSociauxAllocationV$0, + caml_call1(Runtime_ocaml_Runtime[11],x$4)]} + return [6,_a_,_ciM_]} + var SituationObligationScolaire=[0]; + function embed_situation_obligation_sco(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _ciL_=[0,cst_Avant,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _ciL_=[0,cst_Pendant,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _ciL_=[0,cst_Apr_s,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_b_,_ciL_]} + var PriseEnCompte=[0]; + function embed_prise_en_compte(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _ciK_=[0,cst_Compl_te,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _ciK_=[0,cst_Partag_e,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _ciK_=[0,cst_Z_ro,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_c_,_ciK_]} + var VersementAllocations=[0]; + function embed_versement_allocations(x) + {if(0 === x[0]) + var + x$0=x[1], + _ciJ_=[0,cst_Normal,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var + x$1=x[1], + _ciJ_= + [0, + cst_AllocationVers_eAuxService, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_d_,_ciJ_]} + var ElementPrestationsFamiliales=[0]; + function embed_element_prestations_fami(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _ciI_= + [0, + cst_PrestationAccueilJeuneEnfa, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _ciI_= + [0, + cst_AllocationsFamiliales, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _ciI_= + [0, + cst_Compl_mentFamilial, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + case 3: + var + x$3=x[1], + _ciI_= + [0, + cst_AllocationLogement, + caml_call1(Runtime_ocaml_Runtime[11],x$3)]; + break; + case 4: + var + x$4=x[1], + _ciI_= + [0, + cst_Allocation_ducationEnfantH, + caml_call1(Runtime_ocaml_Runtime[11],x$4)]; + break; + case 5: + var + x$5=x[1], + _ciI_= + [0, + cst_AllocationSoutienFamilial, + caml_call1(Runtime_ocaml_Runtime[11],x$5)]; + break; + case 6: + var + x$6=x[1], + _ciI_= + [0, + cst_AllocationRentr_eScolaire, + caml_call1(Runtime_ocaml_Runtime[11],x$6)]; + break; + default: + var + x$7=x[1], + _ciI_= + [0, + cst_AllocationJournali_rePrese, + caml_call1(Runtime_ocaml_Runtime[11],x$7)]} + return [6,_e_,_ciI_]} + var Collectivite=[0]; + function embed_collectivite(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _ciH_=[0,cst_Guadeloupe,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _ciH_=[0,cst_Guyane,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _ciH_=[0,cst_Martinique,caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + case 3: + var + x$3=x[1], + _ciH_=[0,cst_LaR_union,caml_call1(Runtime_ocaml_Runtime[11],x$3)]; + break; + case 4: + var + x$4=x[1], + _ciH_= + [0,cst_SaintBarth_lemy,caml_call1(Runtime_ocaml_Runtime[11],x$4)]; + break; + case 5: + var + x$5=x[1], + _ciH_=[0,cst_SaintMartin,caml_call1(Runtime_ocaml_Runtime[11],x$5)]; + break; + case 6: + var + x$6=x[1], + _ciH_=[0,cst_M_tropole,caml_call1(Runtime_ocaml_Runtime[11],x$6)]; + break; + case 7: + var + x$7=x[1], + _ciH_= + [0, + cst_SaintPierreEtMiquelon, + caml_call1(Runtime_ocaml_Runtime[11],x$7)]; + break; + default: + var + x$8=x[1], + _ciH_=[0,cst_Mayotte,caml_call1(Runtime_ocaml_Runtime[11],x$8)]} + return [6,_f_,_ciH_]} + var AllocationFamilialesAvril2008=[0]; + function embed_allocation_familiales_av(x) + {return [7, + _g_, + [0, + [0, + cst_ge_minimum_alin_a_1_l521_3, + caml_call1(Runtime_ocaml_Runtime[17],x[1])], + 0]]} + var AllocationsFamiliales=[0]; + function embed_allocations_familiales(x) + {return [7, + _h_, + [0, + [0,cst_montant_vers,caml_call1(Runtime_ocaml_Runtime[13],x[1])], + 0]]} + var Smic=[0]; + function embed_smic(x) + {return [7, + _i_, + [0, + [0,cst_brut_horaire,caml_call1(Runtime_ocaml_Runtime[13],x[1])], + 0]]} + var BaseMensuelleAllocationsFamili=[0]; + function embed_base_mensuelle_allocatio(x) + {return [7, + _j_, + [0,[0,cst_montant,caml_call1(Runtime_ocaml_Runtime[13],x[1])],0]]} + var InterfaceAllocationsFamiliales=[0]; + function embed_interface_allocations_fa(x) + {return [7, + _k_, + [0, + [0, + cst_i_montant_vers, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + 0]]} + var EnfantEntree=[0]; + function embed_enfant_entree(x) + {var + _ciC_= + [0, + [0, + cst_d_b_n_ficie_titre_personne, + caml_call1(Runtime_ocaml_Runtime[12],x[6])], + 0], + _ciD_= + [0, + [0, + cst_d_a_d_j_ouvert_droit_aux_a, + caml_call1(Runtime_ocaml_Runtime[12],x[5])], + _ciC_], + _ciE_=[0,[0,cst_d_prise_en_charge,embed_prise_en_charge(x[4])],_ciD_], + _ciF_= + [0, + [0, + cst_d_date_de_naissance, + caml_call1(Runtime_ocaml_Runtime[16],x[3])], + _ciE_], + _ciG_= + [0, + [0, + cst_d_r_muneration_mensuelle, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _ciF_]; + return [7, + _l_, + [0, + [0, + cst_d_identifiant, + caml_call1(Runtime_ocaml_Runtime[14],x[1])], + _ciG_]]} + var Enfant=[0]; + function embed_enfant(x) + {var + _ciw_= + [0, + [0, + cst_b_n_ficie_titre_personnel_, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + 0], + _cix_= + [0, + [0, + cst_a_d_j_ouvert_droit_aux_all, + caml_call1(Runtime_ocaml_Runtime[12],x[6])], + _ciw_], + _ciy_=[0,[0,cst_prise_en_charge,embed_prise_en_charge(x[5])],_cix_], + _ciz_= + [0, + [0,cst_date_de_naissance,caml_call1(Runtime_ocaml_Runtime[16],x[4])], + _ciy_], + _ciA_= + [0, + [0, + cst_r_muneration_mensuelle, + caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _ciz_], + _ciB_= + [0, + [0,cst_obligation_scolaire,embed_situation_obligation_sco(x[2])], + _ciA_]; + return [7, + _m_, + [0, + [0,cst_identifiant,caml_call1(Runtime_ocaml_Runtime[14],x[1])], + _ciB_]]} + var EnfantLePlusAge=[0]; + function embed_enfant_le_plus_age(x) + {return [7,_n_,[0,[0,cst_le_plus_g,embed_enfant(x[1])],0]]} + var PrestationsFamiliales=[0]; + function embed_prestations_familiales(x) + {var + _cit_= + [0, + [0, + cst_r_gime_outre_mer_l751_1, + caml_call1(Runtime_ocaml_Runtime[12],x[4])], + 0], + _ciu_= + [0, + [0,cst_ge_l512_3_2,caml_call1(Runtime_ocaml_Runtime[17],x[3])], + _cit_], + _civ_= + [0, + [0,cst_conditions_hors_ge,caml_call1(Runtime_ocaml_Runtime[10],x[2])], + _ciu_]; + return [7, + _o_, + [0, + [0,cst_droit_ouvert,caml_call1(Runtime_ocaml_Runtime[10],x[1])], + _civ_]]} + var PrestationsFamilialesIn=[0]; + function embed_prestations_familiales_i(x) + {var + _cir_=[0,[0,cst_r_sidence_in,embed_collectivite(x[3])],0], + _cis_= + [0, + [0,cst_prestation_courante_in,embed_element_prestations_fami(x[2])], + _cir_]; + return [7, + _p_, + [0, + [0, + cst_date_courante_in, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _cis_]]} + var AllocationFamilialesAvril2008I=[0]; + function embed_allocation_familiales_av$0(param){return 0} + var EnfantLePlusAgeIn=[0]; + function embed_enfant_le_plus_age_in(x) + {return [7, + _q_, + [0, + [0, + cst_enfants_in, + caml_call2(Runtime_ocaml_Runtime[18],embed_enfant,x[1])], + 0]]} + var AllocationsFamilialesIn=[0]; + function embed_allocations_familiales_i(x) + {var + _cil_= + [0, + [0, + cst_avait_enfant_charge_avant_, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + 0], + _cim_= + [0, + [0, + cst_enfants_charge_in, + caml_call2(Runtime_ocaml_Runtime[18],embed_enfant,x[6])], + _cil_], + _cin_= + [0, + [0,cst_date_courante_in$0,caml_call1(Runtime_ocaml_Runtime[16],x[5])], + _cim_], + _cio_=[0,[0,cst_r_sidence_in$0,embed_collectivite(x[4])],_cin_], + _cip_= + [0, + [0, + cst_ressources_m_nage_in, + caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _cio_], + _ciq_= + [0, + [0, + cst_personne_charge_effective_, + caml_call1(Runtime_ocaml_Runtime[12],x[2])], + _cip_]; + return [7, + _r_, + [0, + [0, + cst_personne_charge_effective_$0, + caml_call1(Runtime_ocaml_Runtime[12],x[1])], + _ciq_]]} + var SmicIn=[0]; + function embed_smic_in(x) + {var _cik_=[0,[0,cst_r_sidence_in$1,embed_collectivite(x[2])],0]; + return [7, + _s_, + [0, + [0, + cst_date_courante_in$1, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _cik_]]} + var BaseMensuelleAllocationsFamili$0=[0]; + function embed_base_mensuelle_allocatio$0(x) + {return [7, + _t_, + [0, + [0, + cst_date_courante_in$2, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + 0]]} + var InterfaceAllocationsFamiliales$0=[0]; + function embed_interface_allocations_fa$0(x) + {var + _cie_= + [0, + [0, + cst_i_avait_enfant_charge_avan, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + 0], + _cif_= + [0, + [0, + cst_i_personne_charge_effectiv, + caml_call1(Runtime_ocaml_Runtime[12],x[6])], + _cie_], + _cig_= + [0, + [0, + cst_i_personne_charge_effectiv$0, + caml_call1(Runtime_ocaml_Runtime[12],x[5])], + _cif_], + _cih_=[0,[0,cst_i_r_sidence_in,embed_collectivite(x[4])],_cig_], + _cii_= + [0, + [0, + cst_i_ressources_m_nage_in, + caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _cih_], + _cij_= + [0, + [0, + cst_i_enfants_in, + caml_call2(Runtime_ocaml_Runtime[18],embed_enfant_entree,x[2])], + _cii_]; + return [7, + _u_, + [0, + [0, + cst_i_date_courante_in, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _cij_]]} + function allocation_familiales_avril200(allocation_familiales_avril200) + {try + {var + _cia_= + function(param){return caml_call3(Runtime_ocaml_Runtime[60],16,0,0)}, + _cib_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_w_,1)}, + _cic_=caml_call4(Runtime_ocaml_Runtime[63],_x_,[0],_cib_,_cia_)} + catch(_cid_) + {_cid_ = caml_wrap_exception(_cid_); + if(_cid_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_v_]; + throw _cid_} + var + age_minimum_alinea_1_l521_3= + caml_call3 + (Runtime_ocaml_Runtime[28],_y_,Runtime_ocaml_Runtime[17],_cic_); + return [0,age_minimum_alinea_1_l521_3]} + function enfant_le_plus_age(enfant_le_plus_age_in) + {var enfants=enfant_le_plus_age_in[1]; + try + {var + _ch4_= + function(param) + {var + _ch8_=caml_call3(Runtime_ocaml_Runtime[57],2999,12,31), + _ch9_=caml_call1(Runtime_ocaml_Runtime[31],cst_0), + _ch__= + [0, + caml_call1(Runtime_ocaml_Runtime[46],cst_1), + _B_, + _ch9_, + _ch8_, + _A_, + 0, + 0]; + function _ch$_(potentiel_plus_age_1,potentiel_plus_age_2) + {return caml_call2 + (Runtime_ocaml_Runtime[114], + potentiel_plus_age_1[4], + potentiel_plus_age_2[4]) + ?potentiel_plus_age_1 + :potentiel_plus_age_2} + return caml_call3(Runtime_ocaml_Runtime[88],_ch$_,_ch__,enfants)}, + _ch5_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_C_,1)}, + _ch6_=caml_call4(Runtime_ocaml_Runtime[63],_D_,[0],_ch5_,_ch4_)} + catch(_ch7_) + {_ch7_ = caml_wrap_exception(_ch7_); + if(_ch7_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_z_]; + throw _ch7_} + var + le_plus_age= + caml_call3(Runtime_ocaml_Runtime[28],_E_,embed_enfant,_ch6_); + return [0,le_plus_age]} + function smic(smic_in) + {var date_courante=smic_in[1],residence=smic_in[2]; + try + {var + _ceg_=function(param){throw Runtime_ocaml_Runtime[2]}, + _ceh_=function(param){return 0}, + _cei_= + function(param) + {function _chV_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_851)} + function _chW_(param) + {var + _chX_=caml_call2(Runtime_ocaml_Runtime[86],residence,_G_), + _chY_=caml_call3(Runtime_ocaml_Runtime[57],2023,12,31), + _chZ_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_chY_), + _ch0_=caml_call2(Runtime_ocaml_Runtime[83],_chZ_,_chX_), + _ch1_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), + _ch2_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_ch1_), + _ch3_=caml_call2(Runtime_ocaml_Runtime[83],_ch2_,_ch0_); + return caml_call2(Runtime_ocaml_Runtime[29],_H_,_ch3_)} + return caml_call4(Runtime_ocaml_Runtime[63],_I_,[0],_chW_,_chV_)}, + _cej_= + function(param) + {function _chy_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1127)} + function _chz_(param) + {var + _chA_=caml_call2(Runtime_ocaml_Runtime[86],residence,_J_), + _chB_=caml_call2(Runtime_ocaml_Runtime[86],residence,_K_), + _chC_=caml_call2(Runtime_ocaml_Runtime[84],_chB_,_chA_), + _chD_=caml_call2(Runtime_ocaml_Runtime[86],residence,_L_), + _chE_=caml_call2(Runtime_ocaml_Runtime[84],_chD_,_chC_), + _chF_=caml_call2(Runtime_ocaml_Runtime[86],residence,_M_), + _chG_=caml_call2(Runtime_ocaml_Runtime[84],_chF_,_chE_), + _chH_=caml_call2(Runtime_ocaml_Runtime[86],residence,_N_), + _chI_=caml_call2(Runtime_ocaml_Runtime[84],_chH_,_chG_), + _chJ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_O_), + _chK_=caml_call2(Runtime_ocaml_Runtime[84],_chJ_,_chI_), + _chL_=caml_call2(Runtime_ocaml_Runtime[86],residence,_P_), + _chM_=caml_call2(Runtime_ocaml_Runtime[84],_chL_,_chK_), + _chN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_Q_), + _chO_=caml_call2(Runtime_ocaml_Runtime[84],_chN_,_chM_), + _chP_=caml_call3(Runtime_ocaml_Runtime[57],2023,12,31), + _chQ_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_chP_), + _chR_=caml_call2(Runtime_ocaml_Runtime[83],_chQ_,_chO_), + _chS_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), + _chT_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_chS_), + _chU_=caml_call2(Runtime_ocaml_Runtime[83],_chT_,_chR_); + return caml_call2(Runtime_ocaml_Runtime[29],_R_,_chU_)} + return caml_call4(Runtime_ocaml_Runtime[63],_S_,[0],_chz_,_chy_)}, + _cek_= + function(param) + {function _chp_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_835)} + function _chq_(param) + {var + _chr_=caml_call2(Runtime_ocaml_Runtime[86],residence,_T_), + _chs_=caml_call3(Runtime_ocaml_Runtime[57],2022,12,31), + _cht_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_chs_), + _chu_=caml_call2(Runtime_ocaml_Runtime[83],_cht_,_chr_), + _chv_=caml_call3(Runtime_ocaml_Runtime[57],2022,8,1), + _chw_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_chv_), + _chx_=caml_call2(Runtime_ocaml_Runtime[83],_chw_,_chu_); + return caml_call2(Runtime_ocaml_Runtime[29],_U_,_chx_)} + return caml_call4(Runtime_ocaml_Runtime[63],_V_,[0],_chq_,_chp_)}, + _cel_= + function(param) + {function _cg4_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1107)} + function _cg5_(param) + {var + _cg6_=caml_call2(Runtime_ocaml_Runtime[86],residence,_W_), + _cg7_=caml_call2(Runtime_ocaml_Runtime[86],residence,_X_), + _cg8_=caml_call2(Runtime_ocaml_Runtime[84],_cg7_,_cg6_), + _cg9_=caml_call2(Runtime_ocaml_Runtime[86],residence,_Y_), + _cg__=caml_call2(Runtime_ocaml_Runtime[84],_cg9_,_cg8_), + _cg$_=caml_call2(Runtime_ocaml_Runtime[86],residence,_Z_), + _cha_=caml_call2(Runtime_ocaml_Runtime[84],_cg$_,_cg__), + _chb_=caml_call2(Runtime_ocaml_Runtime[86],residence,___), + _chc_=caml_call2(Runtime_ocaml_Runtime[84],_chb_,_cha_), + _chd_=caml_call2(Runtime_ocaml_Runtime[86],residence,_$_), + _che_=caml_call2(Runtime_ocaml_Runtime[84],_chd_,_chc_), + _chf_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aa_), + _chg_=caml_call2(Runtime_ocaml_Runtime[84],_chf_,_che_), + _chh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ab_), + _chi_=caml_call2(Runtime_ocaml_Runtime[84],_chh_,_chg_), + _chj_=caml_call3(Runtime_ocaml_Runtime[57],2022,12,31), + _chk_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_chj_), + _chl_=caml_call2(Runtime_ocaml_Runtime[83],_chk_,_chi_), + _chm_=caml_call3(Runtime_ocaml_Runtime[57],2022,8,1), + _chn_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_chm_), + _cho_=caml_call2(Runtime_ocaml_Runtime[83],_chn_,_chl_); + return caml_call2(Runtime_ocaml_Runtime[29],_ac_,_cho_)} + return caml_call4(Runtime_ocaml_Runtime[63],_ad_,[0],_cg5_,_cg4_)}, + _cem_= + function(param) + {function _cgV_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_819)} + function _cgW_(param) + {var + _cgX_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ae_), + _cgY_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,31), + _cgZ_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_cgY_), + _cg0_=caml_call2(Runtime_ocaml_Runtime[83],_cgZ_,_cgX_), + _cg1_=caml_call3(Runtime_ocaml_Runtime[57],2022,5,1), + _cg2_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cg1_), + _cg3_=caml_call2(Runtime_ocaml_Runtime[83],_cg2_,_cg0_); + return caml_call2(Runtime_ocaml_Runtime[29],_af_,_cg3_)} + return caml_call4(Runtime_ocaml_Runtime[63],_ag_,[0],_cgW_,_cgV_)}, + _cen_= + function(param) + {function _cgy_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1085)} + function _cgz_(param) + {var + _cgA_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ah_), + _cgB_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ai_), + _cgC_=caml_call2(Runtime_ocaml_Runtime[84],_cgB_,_cgA_), + _cgD_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aj_), + _cgE_=caml_call2(Runtime_ocaml_Runtime[84],_cgD_,_cgC_), + _cgF_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ak_), + _cgG_=caml_call2(Runtime_ocaml_Runtime[84],_cgF_,_cgE_), + _cgH_=caml_call2(Runtime_ocaml_Runtime[86],residence,_al_), + _cgI_=caml_call2(Runtime_ocaml_Runtime[84],_cgH_,_cgG_), + _cgJ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_am_), + _cgK_=caml_call2(Runtime_ocaml_Runtime[84],_cgJ_,_cgI_), + _cgL_=caml_call2(Runtime_ocaml_Runtime[86],residence,_an_), + _cgM_=caml_call2(Runtime_ocaml_Runtime[84],_cgL_,_cgK_), + _cgN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ao_), + _cgO_=caml_call2(Runtime_ocaml_Runtime[84],_cgN_,_cgM_), + _cgP_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,31), + _cgQ_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_cgP_), + _cgR_=caml_call2(Runtime_ocaml_Runtime[83],_cgQ_,_cgO_), + _cgS_=caml_call3(Runtime_ocaml_Runtime[57],2022,5,1), + _cgT_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cgS_), + _cgU_=caml_call2(Runtime_ocaml_Runtime[83],_cgT_,_cgR_); + return caml_call2(Runtime_ocaml_Runtime[29],_ap_,_cgU_)} + return caml_call4(Runtime_ocaml_Runtime[63],_aq_,[0],_cgz_,_cgy_)}, + _ceo_= + function(param) + {function _cgp_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_798)} + function _cgq_(param) + {var + _cgr_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ar_), + _cgs_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,30), + _cgt_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_cgs_), + _cgu_=caml_call2(Runtime_ocaml_Runtime[83],_cgt_,_cgr_), + _cgv_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), + _cgw_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cgv_), + _cgx_=caml_call2(Runtime_ocaml_Runtime[83],_cgw_,_cgu_); + return caml_call2(Runtime_ocaml_Runtime[29],_as_,_cgx_)} + return caml_call4(Runtime_ocaml_Runtime[63],_at_,[0],_cgq_,_cgp_)}, + _cep_= + function(param) + {function _cf4_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1057)} + function _cf5_(param) + {var + _cf6_=caml_call2(Runtime_ocaml_Runtime[86],residence,_au_), + _cf7_=caml_call2(Runtime_ocaml_Runtime[86],residence,_av_), + _cf8_=caml_call2(Runtime_ocaml_Runtime[84],_cf7_,_cf6_), + _cf9_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aw_), + _cf__=caml_call2(Runtime_ocaml_Runtime[84],_cf9_,_cf8_), + _cf$_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ax_), + _cga_=caml_call2(Runtime_ocaml_Runtime[84],_cf$_,_cf__), + _cgb_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ay_), + _cgc_=caml_call2(Runtime_ocaml_Runtime[84],_cgb_,_cga_), + _cgd_=caml_call2(Runtime_ocaml_Runtime[86],residence,_az_), + _cge_=caml_call2(Runtime_ocaml_Runtime[84],_cgd_,_cgc_), + _cgf_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aA_), + _cgg_=caml_call2(Runtime_ocaml_Runtime[84],_cgf_,_cge_), + _cgh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aB_), + _cgi_=caml_call2(Runtime_ocaml_Runtime[84],_cgh_,_cgg_), + _cgj_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,30), + _cgk_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_cgj_), + _cgl_=caml_call2(Runtime_ocaml_Runtime[83],_cgk_,_cgi_), + _cgm_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), + _cgn_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cgm_), + _cgo_=caml_call2(Runtime_ocaml_Runtime[83],_cgn_,_cgl_); + return caml_call2(Runtime_ocaml_Runtime[29],_aC_,_cgo_)} + return caml_call4(Runtime_ocaml_Runtime[63],_aD_,[0],_cf5_,_cf4_)}, + _ceq_= + function(param) + {function _cfV_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_774)} + function _cfW_(param) + {var + _cfX_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aE_), + _cfY_=caml_call3(Runtime_ocaml_Runtime[57],2021,12,31), + _cfZ_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_cfY_), + _cf0_=caml_call2(Runtime_ocaml_Runtime[83],_cfZ_,_cfX_), + _cf1_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), + _cf2_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cf1_), + _cf3_=caml_call2(Runtime_ocaml_Runtime[83],_cf2_,_cf0_); + return caml_call2(Runtime_ocaml_Runtime[29],_aF_,_cf3_)} + return caml_call4(Runtime_ocaml_Runtime[63],_aG_,[0],_cfW_,_cfV_)}, + _cer_= + function(param) + {function _cfy_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1025)} + function _cfz_(param) + {var + _cfA_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aH_), + _cfB_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aI_), + _cfC_=caml_call2(Runtime_ocaml_Runtime[84],_cfB_,_cfA_), + _cfD_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aJ_), + _cfE_=caml_call2(Runtime_ocaml_Runtime[84],_cfD_,_cfC_), + _cfF_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aK_), + _cfG_=caml_call2(Runtime_ocaml_Runtime[84],_cfF_,_cfE_), + _cfH_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aL_), + _cfI_=caml_call2(Runtime_ocaml_Runtime[84],_cfH_,_cfG_), + _cfJ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aM_), + _cfK_=caml_call2(Runtime_ocaml_Runtime[84],_cfJ_,_cfI_), + _cfL_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aN_), + _cfM_=caml_call2(Runtime_ocaml_Runtime[84],_cfL_,_cfK_), + _cfN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aO_), + _cfO_=caml_call2(Runtime_ocaml_Runtime[84],_cfN_,_cfM_), + _cfP_=caml_call3(Runtime_ocaml_Runtime[57],2021,12,31), + _cfQ_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_cfP_), + _cfR_=caml_call2(Runtime_ocaml_Runtime[83],_cfQ_,_cfO_), + _cfS_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), + _cfT_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cfS_), + _cfU_=caml_call2(Runtime_ocaml_Runtime[83],_cfT_,_cfR_); + return caml_call2(Runtime_ocaml_Runtime[29],_aP_,_cfU_)} + return caml_call4(Runtime_ocaml_Runtime[63],_aQ_,[0],_cfz_,_cfy_)}, + _ces_= + function(param) + {function _cfp_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_766)} + function _cfq_(param) + {var + _cfr_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aR_), + _cfs_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), + _cft_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_cfs_), + _cfu_=caml_call2(Runtime_ocaml_Runtime[83],_cft_,_cfr_), + _cfv_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _cfw_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cfv_), + _cfx_=caml_call2(Runtime_ocaml_Runtime[83],_cfw_,_cfu_); + return caml_call2(Runtime_ocaml_Runtime[29],_aS_,_cfx_)} + return caml_call4(Runtime_ocaml_Runtime[63],_aT_,[0],_cfq_,_cfp_)}, + _cet_= + function(param) + {function _ce4_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1015)} + function _ce5_(param) + {var + _ce6_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aU_), + _ce7_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aV_), + _ce8_=caml_call2(Runtime_ocaml_Runtime[84],_ce7_,_ce6_), + _ce9_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aW_), + _ce__=caml_call2(Runtime_ocaml_Runtime[84],_ce9_,_ce8_), + _ce$_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aX_), + _cfa_=caml_call2(Runtime_ocaml_Runtime[84],_ce$_,_ce__), + _cfb_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aY_), + _cfc_=caml_call2(Runtime_ocaml_Runtime[84],_cfb_,_cfa_), + _cfd_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aZ_), + _cfe_=caml_call2(Runtime_ocaml_Runtime[84],_cfd_,_cfc_), + _cff_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a0_), + _cfg_=caml_call2(Runtime_ocaml_Runtime[84],_cff_,_cfe_), + _cfh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a1_), + _cfi_=caml_call2(Runtime_ocaml_Runtime[84],_cfh_,_cfg_), + _cfj_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), + _cfk_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_cfj_), + _cfl_=caml_call2(Runtime_ocaml_Runtime[83],_cfk_,_cfi_), + _cfm_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _cfn_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cfm_), + _cfo_=caml_call2(Runtime_ocaml_Runtime[83],_cfn_,_cfl_); + return caml_call2(Runtime_ocaml_Runtime[29],_a2_,_cfo_)} + return caml_call4(Runtime_ocaml_Runtime[63],_a3_,[0],_ce5_,_ce4_)}, + _ceu_= + function(param) + {function _ceV_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_757)} + function _ceW_(param) + {var + _ceX_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a4_), + _ceY_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), + _ceZ_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_ceY_), + _ce0_=caml_call2(Runtime_ocaml_Runtime[83],_ceZ_,_ceX_), + _ce1_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _ce2_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_ce1_), + _ce3_=caml_call2(Runtime_ocaml_Runtime[83],_ce2_,_ce0_); + return caml_call2(Runtime_ocaml_Runtime[29],_a5_,_ce3_)} + return caml_call4(Runtime_ocaml_Runtime[63],_a6_,[0],_ceW_,_ceV_)}, + _cev_= + [0, + function(param) + {function _cey_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1003)} + function _cez_(param) + {var + _ceA_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a7_), + _ceB_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a8_), + _ceC_=caml_call2(Runtime_ocaml_Runtime[84],_ceB_,_ceA_), + _ceD_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a9_), + _ceE_=caml_call2(Runtime_ocaml_Runtime[84],_ceD_,_ceC_), + _ceF_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a__), + _ceG_=caml_call2(Runtime_ocaml_Runtime[84],_ceF_,_ceE_), + _ceH_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a$_), + _ceI_=caml_call2(Runtime_ocaml_Runtime[84],_ceH_,_ceG_), + _ceJ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ba_), + _ceK_=caml_call2(Runtime_ocaml_Runtime[84],_ceJ_,_ceI_), + _ceL_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bb_), + _ceM_=caml_call2(Runtime_ocaml_Runtime[84],_ceL_,_ceK_), + _ceN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bc_), + _ceO_=caml_call2(Runtime_ocaml_Runtime[84],_ceN_,_ceM_), + _ceP_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), + _ceQ_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_ceP_), + _ceR_=caml_call2(Runtime_ocaml_Runtime[83],_ceQ_,_ceO_), + _ceS_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _ceT_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_ceS_), + _ceU_=caml_call2(Runtime_ocaml_Runtime[83],_ceT_,_ceR_); + return caml_call2(Runtime_ocaml_Runtime[29],_bd_,_ceU_)} + return caml_call4(Runtime_ocaml_Runtime[63],_be_,[0],_cez_,_cey_)}, + _ceu_, + _cet_, + _ces_, + _cer_, + _ceq_, + _cep_, + _ceo_, + _cen_, + _cem_, + _cel_, + _cek_, + _cej_, + _cei_], + _cew_=caml_call4(Runtime_ocaml_Runtime[63],_bf_,_cev_,_ceh_,_ceg_)} + catch(_cex_) + {_cex_ = caml_wrap_exception(_cex_); + if(_cex_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_F_]; + throw _cex_} + var + brut_horaire= + caml_call3 + (Runtime_ocaml_Runtime[28],_bg_,Runtime_ocaml_Runtime[13],_cew_); + return [0,brut_horaire]} + function base_mensuelle_allocations_fam(base_mensuelle_allocations_fam) + {var date_courante=base_mensuelle_allocations_fam[1]; + try + {var + _cdI_=function(param){throw Runtime_ocaml_Runtime[2]}, + _cdJ_=function(param){return 0}, + _cdK_= + function(param) + {function _cd$_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_42228)} + function _cea_(param) + {var + _ceb_=caml_call3(Runtime_ocaml_Runtime[57],2023,4,1), + _cec_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_ceb_), + _ced_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,1), + _cee_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_ced_), + _cef_=caml_call2(Runtime_ocaml_Runtime[83],_cee_,_cec_); + return caml_call2(Runtime_ocaml_Runtime[29],_bi_,_cef_)} + return caml_call4(Runtime_ocaml_Runtime[63],_bj_,[0],_cea_,_cd$_)}, + _cdL_= + function(param) + {function _cd4_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_41481)} + function _cd5_(param) + {var + _cd6_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,1), + _cd7_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_cd6_), + _cd8_=caml_call3(Runtime_ocaml_Runtime[57],2021,4,1), + _cd9_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cd8_), + _cd__=caml_call2(Runtime_ocaml_Runtime[83],_cd9_,_cd7_); + return caml_call2(Runtime_ocaml_Runtime[29],_bk_,_cd__)} + return caml_call4(Runtime_ocaml_Runtime[63],_bl_,[0],_cd5_,_cd4_)}, + _cdM_= + function(param) + {function _cdX_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_41440)} + function _cdY_(param) + {var + _cdZ_=caml_call3(Runtime_ocaml_Runtime[57],2021,4,1), + _cd0_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_cdZ_), + _cd1_=caml_call3(Runtime_ocaml_Runtime[57],2020,4,1), + _cd2_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cd1_), + _cd3_=caml_call2(Runtime_ocaml_Runtime[83],_cd2_,_cd0_); + return caml_call2(Runtime_ocaml_Runtime[29],_bm_,_cd3_)} + return caml_call4(Runtime_ocaml_Runtime[63],_bn_,[0],_cdY_,_cdX_)}, + _cdN_= + [0, + function(param) + {function _cdQ_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_41316)} + function _cdR_(param) + {var + _cdS_=caml_call3(Runtime_ocaml_Runtime[57],2020,4,1), + _cdT_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_cdS_), + _cdU_=caml_call3(Runtime_ocaml_Runtime[57],2019,4,1), + _cdV_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cdU_), + _cdW_=caml_call2(Runtime_ocaml_Runtime[83],_cdV_,_cdT_); + return caml_call2(Runtime_ocaml_Runtime[29],_bo_,_cdW_)} + return caml_call4(Runtime_ocaml_Runtime[63],_bp_,[0],_cdR_,_cdQ_)}, + _cdM_, + _cdL_, + _cdK_], + _cdO_=caml_call4(Runtime_ocaml_Runtime[63],_bq_,_cdN_,_cdJ_,_cdI_)} + catch(_cdP_) + {_cdP_ = caml_wrap_exception(_cdP_); + if(_cdP_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_bh_]; + throw _cdP_} + var + montant= + caml_call3 + (Runtime_ocaml_Runtime[28],_br_,Runtime_ocaml_Runtime[13],_cdO_); + return [0,montant]} + function prestations_familiales(prestations_familiales_in) + {var + date_courante=prestations_familiales_in[1], + residence=prestations_familiales_in[3]; + try + {var + _ccl_= + function(param){return caml_call3(Runtime_ocaml_Runtime[60],20,0,0)}, + _ccm_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bt_,1)}, + _ccn_=caml_call4(Runtime_ocaml_Runtime[63],_bu_,[0],_ccm_,_ccl_)} + catch(_cdH_) + {_cdH_ = caml_wrap_exception(_cdH_); + if(_cdH_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_bs_]; + throw _cdH_} + var + age_l512_3_2= + caml_call3 + (Runtime_ocaml_Runtime[28],_bv_,Runtime_ocaml_Runtime[17],_ccn_); + try + {var + _cco_=function(param){return date_courante}, + _ccp_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bx_,1)}, + _ccq_=caml_call4(Runtime_ocaml_Runtime[63],_by_,[0],_ccp_,_cco_), + smic_dot_date_courante= + caml_call3 + (Runtime_ocaml_Runtime[28],_bz_,Runtime_ocaml_Runtime[16],_ccq_)} + catch(_cdG_) + {_cdG_ = caml_wrap_exception(_cdG_); + if(_cdG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_bw_]; + throw _cdG_} + try + {var + _ccr_=function(param){return residence}, + _ccs_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bB_,1)}, + _cct_=caml_call4(Runtime_ocaml_Runtime[63],_bC_,[0],_ccs_,_ccr_), + smic_dot_residence= + caml_call3(Runtime_ocaml_Runtime[28],_bD_,embed_collectivite,_cct_)} + catch(_cdF_) + {_cdF_ = caml_wrap_exception(_cdF_); + if(_cdF_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_bA_]; + throw _cdF_} + var + _ccu_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_bE_,smic), + [0,smic_dot_date_courante,smic_dot_residence]), + result=caml_call2(Runtime_ocaml_Runtime[27],_bF_,_ccu_), + smic_dot_brut_horaire=result[1]; + try + {var + _ccv_=function(param){return 0}, + _ccw_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bH_,1)}, + _ccx_= + [0, + function(param) + {function _cds_(param){return 1} + function _cdt_(param) + {var + _cdu_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bI_), + _cdv_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bJ_), + _cdw_=caml_call2(Runtime_ocaml_Runtime[84],_cdv_,_cdu_), + _cdx_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bK_), + _cdy_=caml_call2(Runtime_ocaml_Runtime[84],_cdx_,_cdw_), + _cdz_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bL_), + _cdA_=caml_call2(Runtime_ocaml_Runtime[84],_cdz_,_cdy_), + _cdB_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bM_), + _cdC_=caml_call2(Runtime_ocaml_Runtime[84],_cdB_,_cdA_), + _cdD_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bN_), + _cdE_=caml_call2(Runtime_ocaml_Runtime[84],_cdD_,_cdC_); + return caml_call2(Runtime_ocaml_Runtime[29],_bO_,_cdE_)} + return caml_call4(Runtime_ocaml_Runtime[63],_bP_,[0],_cdt_,_cds_)}], + _ccy_=caml_call4(Runtime_ocaml_Runtime[63],_bQ_,_ccx_,_ccw_,_ccv_)} + catch(_cdr_) + {_cdr_ = caml_wrap_exception(_cdr_); + if(_cdr_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_bG_]; + throw _cdr_} + var + regime_outre_mer_l751_1= + caml_call3 + (Runtime_ocaml_Runtime[28],_bR_,Runtime_ocaml_Runtime[12],_ccy_); + try + {var + _ccz_= + function(param) + {var + _cdo_=caml_call1(Runtime_ocaml_Runtime[39],cst_169), + _cdp_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55), + _cdq_= + caml_call2 + (Runtime_ocaml_Runtime[104],smic_dot_brut_horaire,_cdp_); + return caml_call2(Runtime_ocaml_Runtime[104],_cdq_,_cdo_)}, + _ccA_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bT_,1)}, + _ccB_= + [0, + function(param) + {function _cdj_(param) + {var + _cdl_=caml_call1(Runtime_ocaml_Runtime[39],cst_169$0), + _cdm_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55$0), + _cdn_= + caml_call2 + (Runtime_ocaml_Runtime[104],smic_dot_brut_horaire,_cdm_); + return caml_call2(Runtime_ocaml_Runtime[104],_cdn_,_cdl_)} + function _cdk_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_bU_,regime_outre_mer_l751_1)} + return caml_call4(Runtime_ocaml_Runtime[63],_bV_,[0],_cdk_,_cdj_)}], + _ccC_=caml_call4(Runtime_ocaml_Runtime[63],_bW_,_ccB_,_ccA_,_ccz_)} + catch(_cdi_) + {_cdi_ = caml_wrap_exception(_cdi_); + if(_cdi_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_bS_]; + throw _cdi_} + var + plafond_l512_3_2= + caml_call3 + (Runtime_ocaml_Runtime[28],_bX_,Runtime_ocaml_Runtime[13],_ccC_); + function _ccD_(param) + {try + {var + _cc6_=function(param){return 0}, + _cc7_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_bZ_,1)}, + _cc8_= + [0, + function(param$0) + {function _cc$_(param){return 1} + function _cda_(param$0) + {var + _cdb_= + caml_call2 + (Runtime_ocaml_Runtime[117],param[3],plafond_l512_3_2); + switch(param[2][0]) + {case 0:var _cdc_=0;break; + case 1:var _cdc_=0;break; + default:var _cdc_=1} + switch(param[2][0]) + {case 0:var _cdd_=0;break; + case 1:var _cdd_=1;break; + default:var _cdd_=0} + var _cde_=caml_call2(Runtime_ocaml_Runtime[84],_cdd_,_cdc_); + switch(param[2][0]) + {case 0:var _cdf_=1;break; + case 1:var _cdf_=0;break; + default:var _cdf_=0} + var + _cdg_=caml_call2(Runtime_ocaml_Runtime[84],_cdf_,_cde_), + _cdh_=caml_call2(Runtime_ocaml_Runtime[83],_cdg_,_cdb_); + return caml_call2(Runtime_ocaml_Runtime[29],_b0_,_cdh_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_b1_,[0],_cda_,_cc$_)}], + _cc9_=caml_call4(Runtime_ocaml_Runtime[63],_b2_,_cc8_,_cc7_,_cc6_); + return _cc9_} + catch(_cc__) + {_cc__ = caml_wrap_exception(_cc__); + if(_cc__ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_bY_]; + throw _cc__}} + var + conditions_hors_age= + caml_call3 + (Runtime_ocaml_Runtime[28],_b3_,Runtime_ocaml_Runtime[10],_ccD_); + function _ccE_(param) + {try + {var + _ccF_=function(param){return 0}, + _ccG_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_b5_,1)}, + _ccH_= + [0, + function(param$0) + {function _ccK_(param$0) + {function _ccP_(param){throw Runtime_ocaml_Runtime[2]} + function _ccQ_(param){return 0} + var + _ccR_= + [0, + function(param$0) + {function _ccS_(param){return 1} + function _ccT_(param$0) + {switch(param[2][0]) + {case 0:var _cc3_=0;break; + case 1:var _cc3_=1;break; + default:var _cc3_=0} + switch(param[2][0]) + {case 0:var _cc4_=1;break; + case 1:var _cc4_=0;break; + default:var _cc4_=0} + var _cc5_=caml_call2(Runtime_ocaml_Runtime[84],_cc4_,_cc3_); + return caml_call2(Runtime_ocaml_Runtime[29],_b6_,_cc5_)} + var + _ccU_= + [0, + function(param$0) + {function _ccV_(param){return 1} + function _ccW_(param$0) + {var + _ccX_= + caml_call2(Runtime_ocaml_Runtime[94],param[4],age_l512_3_2), + _ccY_= + caml_call2(Runtime_ocaml_Runtime[124],_ccX_,date_courante), + _ccZ_= + caml_call2 + (Runtime_ocaml_Runtime[117],param[3],plafond_l512_3_2), + _cc0_=caml_call2(Runtime_ocaml_Runtime[83],_ccZ_,_ccY_); + switch(param[2][0]) + {case 0:var _cc1_=0;break; + case 1:var _cc1_=0;break; + default:var _cc1_=1} + var _cc2_=caml_call2(Runtime_ocaml_Runtime[83],_cc1_,_cc0_); + return caml_call2(Runtime_ocaml_Runtime[29],_b7_,_cc2_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_b8_,[0],_ccW_,_ccV_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_b9_,_ccU_,_ccT_,_ccS_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_b__,_ccR_,_ccQ_,_ccP_)} + function _ccL_(param){return 1} + var + _ccM_= + [0, + function(param$0) + {function _ccN_(param){return 0} + function _ccO_(param$0) + {return caml_call2(Runtime_ocaml_Runtime[29],_b$_,param[7])} + return caml_call4 + (Runtime_ocaml_Runtime[63],_ca_,[0],_ccO_,_ccN_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_cb_,_ccM_,_ccL_,_ccK_)}], + _ccI_=caml_call4(Runtime_ocaml_Runtime[63],_cc_,_ccH_,_ccG_,_ccF_); + return _ccI_} + catch(_ccJ_) + {_ccJ_ = caml_wrap_exception(_ccJ_); + if(_ccJ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_b4_]; + throw _ccJ_}} + var + droit_ouvert= + caml_call3 + (Runtime_ocaml_Runtime[28],_cd_,Runtime_ocaml_Runtime[10],_ccE_); + return [0, + droit_ouvert, + conditions_hors_age, + age_l512_3_2, + regime_outre_mer_l751_1]} + function allocations_familiales(allocations_familiales_in) + {var + personne_charge_effective_perm=allocations_familiales_in[1], + personne_charge_effective_perm$0=allocations_familiales_in[2], + ressources_menage=allocations_familiales_in[3], + residence=allocations_familiales_in[4], + date_courante=allocations_familiales_in[5], + enfants_a_charge=allocations_familiales_in[6], + avait_enfant_a_charge_avant_1e=allocations_familiales_in[7]; + function _bVU_(param) + {try + {var + _cbZ_=function(param){throw Runtime_ocaml_Runtime[2]}, + _cb0_=function(param){return 0}, + _cb1_= + function(param$0) + {function _cca_(param){return _cf_} + function _ccb_(param$0) + {switch(param[5][0]) + {case 0:var _cck_=0;break; + case 1:var _cck_=0;break; + case 2:var _cck_=1;break; + case 3:var _cck_=0;break; + default:var _cck_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_cg_,_cck_)} + var + _ccc_= + [0, + function(param$0) + {function _ccd_(param){return _ch_} + function _cce_(param$0) + {switch(param[5][0]) + {case 0:var _ccj_=0;break; + case 1:var _ccj_=1;break; + case 2:var _ccj_=0;break; + case 3:var _ccj_=0;break; + default:var _ccj_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_ci_,_ccj_)} + var + _ccf_= + [0, + function(param$0) + {function _ccg_(param){return _cj_} + function _cch_(param$0) + {switch(param[5][0]) + {case 0:var _cci_=0;break; + case 1:var _cci_=0;break; + case 2:var _cci_=0;break; + case 3:var _cci_=1;break; + default:var _cci_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_ck_,_cci_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_cl_,[0],_cch_,_ccg_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_cm_,_ccf_,_cce_,_ccd_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_cn_,_ccc_,_ccb_,_cca_)}, + _cb2_= + function(param$0) + {function _cb9_(param){return _co_} + function _cb__(param$0) + {switch(param[5][0]) + {case 0:var _cb$_=0;break; + case 1:var _cb$_=0;break; + case 2:var _cb$_=0;break; + case 3:var _cb$_=0;break; + default:var _cb$_=1} + return caml_call2(Runtime_ocaml_Runtime[29],_cp_,_cb$_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_cq_,[0],_cb__,_cb9_)}, + _cb3_= + [0, + function(param$0) + {function _cb6_(param){return _cr_} + function _cb7_(param$0) + {switch(param[5][0]) + {case 0:var _cb8_=1;break; + case 1:var _cb8_=0;break; + case 2:var _cb8_=0;break; + case 3:var _cb8_=0;break; + default:var _cb8_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_cs_,_cb8_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_ct_,[0],_cb7_,_cb6_)}, + _cb2_, + _cb1_], + _cb4_=caml_call4(Runtime_ocaml_Runtime[63],_cu_,_cb3_,_cb0_,_cbZ_); + return _cb4_} + catch(_cb5_) + {_cb5_ = caml_wrap_exception(_cb5_); + if(_cb5_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_ce_]; + throw _cb5_}} + var + prise_en_compte= + caml_call3 + (Runtime_ocaml_Runtime[28],_cv_,Runtime_ocaml_Runtime[10],_bVU_); + function _bVV_(param) + {try + {var + _cbB_=function(param){throw Runtime_ocaml_Runtime[2]}, + _cbC_=function(param){return 0}, + _cbD_= + function(param$0) + {function _cbK_(param){return _cx_} + function _cbL_(param$0) + {switch(param[5][0]) + {case 0:var _cbY_=0;break; + case 1:var _cbY_=0;break; + case 2:var _cbY_=1;break; + case 3:var _cbY_=0;break; + default:var _cbY_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_cy_,_cbY_)} + var + _cbM_= + [0, + function(param$0) + {function _cbN_(param){return _cz_} + function _cbO_(param$0) + {switch(param[5][0]) + {case 0:var _cbX_=0;break; + case 1:var _cbX_=1;break; + case 2:var _cbX_=0;break; + case 3:var _cbX_=0;break; + default:var _cbX_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_cA_,_cbX_)} + var + _cbP_= + [0, + function(param$0) + {function _cbQ_(param){return _cB_} + function _cbR_(param$0) + {switch(param[5][0]) + {case 0:var _cbW_=1;break; + case 1:var _cbW_=0;break; + case 2:var _cbW_=0;break; + case 3:var _cbW_=0;break; + default:var _cbW_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_cC_,_cbW_)} + var + _cbS_= + [0, + function(param$0) + {function _cbT_(param){return _cD_} + function _cbU_(param$0) + {switch(param[5][0]) + {case 0:var _cbV_=0;break; + case 1:var _cbV_=0;break; + case 2:var _cbV_=0;break; + case 3:var _cbV_=1;break; + default:var _cbV_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_cE_,_cbV_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_cF_,[0],_cbU_,_cbT_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_cG_,_cbS_,_cbR_,_cbQ_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_cH_,_cbP_,_cbO_,_cbN_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_cI_,_cbM_,_cbL_,_cbK_)}, + _cbE_= + [0, + function(param$0) + {function _cbH_(param){return _cJ_} + function _cbI_(param$0) + {switch(param[5][0]) + {case 0:var _cbJ_=0;break; + case 1:var _cbJ_=0;break; + case 2:var _cbJ_=0;break; + case 3:var _cbJ_=0;break; + default:var _cbJ_=1} + return caml_call2(Runtime_ocaml_Runtime[29],_cK_,_cbJ_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_cL_,[0],_cbI_,_cbH_)}, + _cbD_], + _cbF_=caml_call4(Runtime_ocaml_Runtime[63],_cM_,_cbE_,_cbC_,_cbB_); + return _cbF_} + catch(_cbG_) + {_cbG_ = caml_wrap_exception(_cbG_); + if(_cbG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_cw_]; + throw _cbG_}} + caml_call3 + (Runtime_ocaml_Runtime[28],_cN_,Runtime_ocaml_Runtime[10],_bVV_); + try + {var + _bVW_= + function(param){return caml_call1(Runtime_ocaml_Runtime[46],cst_3)}, + _bVX_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cP_,1)}, + _bVY_=caml_call4(Runtime_ocaml_Runtime[63],_cQ_,[0],_bVX_,_bVW_)} + catch(_cbA_) + {_cbA_ = caml_wrap_exception(_cbA_); + if(_cbA_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_cO_]; + throw _cbA_} + caml_call3 + (Runtime_ocaml_Runtime[28],_cR_,Runtime_ocaml_Runtime[14],_bVY_); + try + {var + _bVZ_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[46],cst_3$0)}, + _bV0_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cT_,1)}, + _bV1_=caml_call4(Runtime_ocaml_Runtime[63],_cU_,[0],_bV0_,_bVZ_)} + catch(_cbz_) + {_cbz_ = caml_wrap_exception(_cbz_); + if(_cbz_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_cS_]; + throw _cbz_} + var + nombre_enfants_alinea_2_l521_3= + caml_call3 + (Runtime_ocaml_Runtime[28],_cV_,Runtime_ocaml_Runtime[14],_bV1_), + _bV2_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_cW_,allocation_familiales_avril200), + 0), + result=caml_call2(Runtime_ocaml_Runtime[27],_cX_,_bV2_), + version_avril_2008_dot_age_min=result[1]; + try + {var + _bV3_=function(param){return date_courante}, + _bV4_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cZ_,1)}, + _bV5_=caml_call4(Runtime_ocaml_Runtime[63],_c0_,[0],_bV4_,_bV3_), + bmaf_dot_date_courante= + caml_call3 + (Runtime_ocaml_Runtime[28],_c1_,Runtime_ocaml_Runtime[16],_bV5_)} + catch(_cby_) + {_cby_ = caml_wrap_exception(_cby_); + if(_cby_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_cY_]; + throw _cby_} + var + _bV6_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_c2_,base_mensuelle_allocations_fam), + [0,bmaf_dot_date_courante]), + result$0=caml_call2(Runtime_ocaml_Runtime[27],_c3_,_bV6_), + bmaf_dot_montant=result$0[1]; + try + {var + _bV7_=function(param){return date_courante}, + _bV8_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_c5_,1)}, + _bV9_=caml_call4(Runtime_ocaml_Runtime[63],_c6_,[0],_bV8_,_bV7_), + prestations_familiales_dot_dat= + caml_call3 + (Runtime_ocaml_Runtime[28],_c7_,Runtime_ocaml_Runtime[16],_bV9_)} + catch(_cbx_) + {_cbx_ = caml_wrap_exception(_cbx_); + if(_cbx_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_c4_]; + throw _cbx_} + try + {var + _bV__=function(param){return _c9_}, + _bV$_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_c__,1)}, + _bWa_=caml_call4(Runtime_ocaml_Runtime[63],_c$_,[0],_bV$_,_bV__), + prestations_familiales_dot_pre= + caml_call3 + (Runtime_ocaml_Runtime[28], + _da_, + embed_element_prestations_fami, + _bWa_)} + catch(_cbw_) + {_cbw_ = caml_wrap_exception(_cbw_); + if(_cbw_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_c8_]; + throw _cbw_} + try + {var + _bWb_=function(param){return residence}, + _bWc_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_dc_,1)}, + _bWd_=caml_call4(Runtime_ocaml_Runtime[63],_dd_,[0],_bWc_,_bWb_), + prestations_familiales_dot_res= + caml_call3(Runtime_ocaml_Runtime[28],_de_,embed_collectivite,_bWd_)} + catch(_cbv_) + {_cbv_ = caml_wrap_exception(_cbv_); + if(_cbv_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_db_]; + throw _cbv_} + var + _bWe_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_df_,prestations_familiales), + [0, + prestations_familiales_dot_dat, + prestations_familiales_dot_pre, + prestations_familiales_dot_res]), + result$1=caml_call2(Runtime_ocaml_Runtime[27],_dg_,_bWe_), + prestations_familiales_dot_dro=result$1[1], + prestations_familiales_dot_con=result$1[2], + prestations_familiales_dot_age=result$1[3], + prestations_familiales_dot_reg=result$1[4]; + try + {var + _bWf_=function(param){return enfants_a_charge}, + _bWg_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_di_,1)}, + _bWh_=caml_call4(Runtime_ocaml_Runtime[63],_dj_,[0],_bWg_,_bWf_), + _bWi_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant), + enfant_le_plus_age_dot_enfants= + caml_call3(Runtime_ocaml_Runtime[28],_dk_,_bWi_,_bWh_)} + catch(_cbu_) + {_cbu_ = caml_wrap_exception(_cbu_); + if(_cbu_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_dh_]; + throw _cbu_} + var + _bWj_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_dl_,enfant_le_plus_age), + [0,enfant_le_plus_age_dot_enfants]), + result$2=caml_call2(Runtime_ocaml_Runtime[27],_dm_,_bWj_), + enfant_le_plus_age_dot_le_plus=result$2[1]; + function _bWk_(param) + {try + {var + _cbj_= + function(param) + {return caml_call3(Runtime_ocaml_Runtime[60],14,0,0)}, + _cbk_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_do_,1)}, + _cbl_= + [0, + function(param$0) + {function _cbo_(param){return version_avril_2008_dot_age_min} + function _cbp_(param$0) + {var + _cbq_=caml_call3(Runtime_ocaml_Runtime[57],2008,4,30), + _cbr_=caml_call3(Runtime_ocaml_Runtime[60],11,0,0), + _cbs_=caml_call2(Runtime_ocaml_Runtime[94],param[4],_cbr_), + _cbt_=caml_call2(Runtime_ocaml_Runtime[119],_cbs_,_cbq_); + return caml_call2(Runtime_ocaml_Runtime[29],_dp_,_cbt_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_dq_,[0],_cbp_,_cbo_)}], + _cbm_=caml_call4(Runtime_ocaml_Runtime[63],_dr_,_cbl_,_cbk_,_cbj_); + return _cbm_} + catch(_cbn_) + {_cbn_ = caml_wrap_exception(_cbn_); + if(_cbn_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_dn_]; + throw _cbn_}} + var + age_minimum_alinea_1_l521_3= + caml_call3 + (Runtime_ocaml_Runtime[28],_ds_,Runtime_ocaml_Runtime[10],_bWk_); + try + {var + _bWl_= + function(param) + {function _cbf_(enfant) + {var + _cbg_= + caml_call3(Runtime_ocaml_Runtime[28],_du_,embed_enfant,enfant), + _cbh_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _dv_, + prestations_familiales_dot_dro), + _cbg_), + _cbi_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _dw_, + Runtime_ocaml_Runtime[12], + _cbh_); + return caml_call2(Runtime_ocaml_Runtime[27],_dx_,_cbi_)} + return caml_call2 + (Runtime_ocaml_Runtime[90],_cbf_,enfants_a_charge)}, + _bWm_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_dy_,1)}, + _bWn_=caml_call4(Runtime_ocaml_Runtime[63],_dz_,[0],_bWm_,_bWl_)} + catch(_cbe_) + {_cbe_ = caml_wrap_exception(_cbe_); + if(_cbe_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_dt_]; + throw _cbe_} + var + _bWo_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant), + enfants_a_charge_droit_ouvert_= + caml_call3(Runtime_ocaml_Runtime[28],_dA_,_bWo_,_bWn_); + function _bWp_(param) + {try + {var + _cba_= + function(param$0) + {return caml_call2 + (Runtime_ocaml_Runtime[86], + enfant_le_plus_age_dot_le_plus, + param)}, + _cbb_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_dC_,1)}, + _cbc_=caml_call4(Runtime_ocaml_Runtime[63],_dD_,[0],_cbb_,_cba_); + return _cbc_} + catch(_cbd_) + {_cbd_ = caml_wrap_exception(_cbd_); + if(_cbd_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_dB_]; + throw _cbd_}} + var + est_enfant_le_plus_age= + caml_call3 + (Runtime_ocaml_Runtime[28],_dE_,Runtime_ocaml_Runtime[10],_bWp_); + try + {var + _bWq_= + function(param) + {var + _ca7_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _ca8_=caml_call1(Runtime_ocaml_Runtime[69],_ca7_), + _ca9_=caml_call1(Runtime_ocaml_Runtime[31],cst_559500), + _ca__=caml_call2(Runtime_ocaml_Runtime[104],_ca9_,_ca8_), + _ca$_=caml_call1(Runtime_ocaml_Runtime[31],cst_7830000); + return caml_call2(Runtime_ocaml_Runtime[93],_ca$_,_ca__)}, + _bWr_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_dG_,1)}, + _bWs_= + [0, + function(param) + {function _caf_(param){throw Runtime_ocaml_Runtime[2]} + function _cag_(param){return 0} + function _cah_(param) + {function _caV_(param) + {var + _ca2_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _ca3_=caml_call1(Runtime_ocaml_Runtime[69],_ca2_), + _ca4_=caml_call1(Runtime_ocaml_Runtime[31],cst_582700), + _ca5_=caml_call2(Runtime_ocaml_Runtime[104],_ca4_,_ca3_), + _ca6_=caml_call1(Runtime_ocaml_Runtime[31],cst_8155800); + return caml_call2(Runtime_ocaml_Runtime[93],_ca6_,_ca5_)} + function _caW_(param) + {var + _caX_=caml_call3(Runtime_ocaml_Runtime[57],2021,12,31), + _caY_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_caX_), + _caZ_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), + _ca0_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_caZ_), + _ca1_=caml_call2(Runtime_ocaml_Runtime[83],_ca0_,_caY_); + return caml_call2(Runtime_ocaml_Runtime[29],_dH_,_ca1_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_dI_,[0],_caW_,_caV_)} + function _cai_(param) + {function _caJ_(param) + {var + _caQ_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _caR_=caml_call1(Runtime_ocaml_Runtime[69],_caQ_), + _caS_=caml_call1(Runtime_ocaml_Runtime[31],cst_577500), + _caT_=caml_call2(Runtime_ocaml_Runtime[104],_caS_,_caR_), + _caU_=caml_call1(Runtime_ocaml_Runtime[31],cst_8083100); + return caml_call2(Runtime_ocaml_Runtime[93],_caU_,_caT_)} + function _caK_(param) + {var + _caL_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), + _caM_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_caL_), + _caN_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _caO_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_caN_), + _caP_=caml_call2(Runtime_ocaml_Runtime[83],_caO_,_caM_); + return caml_call2(Runtime_ocaml_Runtime[29],_dJ_,_caP_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_dK_,[0],_caK_,_caJ_)} + function _caj_(param) + {function _cax_(param) + {var + _caE_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _caF_=caml_call1(Runtime_ocaml_Runtime[69],_caE_), + _caG_=caml_call1(Runtime_ocaml_Runtime[31],cst_568400), + _caH_=caml_call2(Runtime_ocaml_Runtime[104],_caG_,_caF_), + _caI_=caml_call1(Runtime_ocaml_Runtime[31],cst_7955800); + return caml_call2(Runtime_ocaml_Runtime[93],_caI_,_caH_)} + function _cay_(param) + {var + _caz_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), + _caA_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_caz_), + _caB_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _caC_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_caB_), + _caD_=caml_call2(Runtime_ocaml_Runtime[83],_caC_,_caA_); + return caml_call2(Runtime_ocaml_Runtime[29],_dL_,_caD_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_dM_,[0],_cay_,_cax_)} + var + _cak_= + [0, + function(param) + {function _cal_(param) + {var + _cas_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _cat_=caml_call1(Runtime_ocaml_Runtime[69],_cas_), + _cau_=caml_call1(Runtime_ocaml_Runtime[31],cst_562800), + _cav_=caml_call2(Runtime_ocaml_Runtime[104],_cau_,_cat_), + _caw_=caml_call1(Runtime_ocaml_Runtime[31],cst_7877000); + return caml_call2(Runtime_ocaml_Runtime[93],_caw_,_cav_)} + function _cam_(param) + {var + _can_=caml_call3(Runtime_ocaml_Runtime[57],2018,12,31), + _cao_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_can_), + _cap_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), + _caq_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cap_), + _car_=caml_call2(Runtime_ocaml_Runtime[83],_caq_,_cao_); + return caml_call2(Runtime_ocaml_Runtime[29],_dN_,_car_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_dO_,[0],_cam_,_cal_)}, + _caj_, + _cai_, + _cah_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_dP_,_cak_,_cag_,_caf_)}], + _bWt_=caml_call4(Runtime_ocaml_Runtime[63],_dQ_,_bWs_,_bWr_,_bWq_)} + catch(_cae_) + {_cae_ = caml_wrap_exception(_cae_); + if(_cae_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_dF_]; + throw _cae_} + var + plafond_i_i_d521_3= + caml_call3 + (Runtime_ocaml_Runtime[28],_dR_,Runtime_ocaml_Runtime[13],_bWt_); + try + {var + _bWu_= + function(param) + {var + _b$$_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _caa_=caml_call1(Runtime_ocaml_Runtime[69],_b$$_), + _cab_=caml_call1(Runtime_ocaml_Runtime[31],cst_559500$0), + _cac_=caml_call2(Runtime_ocaml_Runtime[104],_cab_,_caa_), + _cad_=caml_call1(Runtime_ocaml_Runtime[31],cst_5595000); + return caml_call2(Runtime_ocaml_Runtime[93],_cad_,_cac_)}, + _bWv_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_dT_,1)}, + _bWw_= + [0, + function(param) + {function _b$j_(param){throw Runtime_ocaml_Runtime[2]} + function _b$k_(param){return 0} + function _b$l_(param) + {function _b$Z_(param) + {var + _b$6_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b$7_=caml_call1(Runtime_ocaml_Runtime[69],_b$6_), + _b$8_=caml_call1(Runtime_ocaml_Runtime[31],cst_582700$0), + _b$9_=caml_call2(Runtime_ocaml_Runtime[104],_b$8_,_b$7_), + _b$__=caml_call1(Runtime_ocaml_Runtime[31],cst_5827900); + return caml_call2(Runtime_ocaml_Runtime[93],_b$__,_b$9_)} + function _b$0_(param) + {var + _b$1_=caml_call3(Runtime_ocaml_Runtime[57],2021,12,31), + _b$2_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b$1_), + _b$3_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), + _b$4_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b$3_), + _b$5_=caml_call2(Runtime_ocaml_Runtime[83],_b$4_,_b$2_); + return caml_call2(Runtime_ocaml_Runtime[29],_dU_,_b$5_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_dV_,[0],_b$0_,_b$Z_)} + function _b$m_(param) + {function _b$N_(param) + {var + _b$U_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b$V_=caml_call1(Runtime_ocaml_Runtime[69],_b$U_), + _b$W_=caml_call1(Runtime_ocaml_Runtime[31],cst_577500$0), + _b$X_=caml_call2(Runtime_ocaml_Runtime[104],_b$W_,_b$V_), + _b$Y_=caml_call1(Runtime_ocaml_Runtime[31],cst_5775900); + return caml_call2(Runtime_ocaml_Runtime[93],_b$Y_,_b$X_)} + function _b$O_(param) + {var + _b$P_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), + _b$Q_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b$P_), + _b$R_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _b$S_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b$R_), + _b$T_=caml_call2(Runtime_ocaml_Runtime[83],_b$S_,_b$Q_); + return caml_call2(Runtime_ocaml_Runtime[29],_dW_,_b$T_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_dX_,[0],_b$O_,_b$N_)} + function _b$n_(param) + {function _b$B_(param) + {var + _b$I_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b$J_=caml_call1(Runtime_ocaml_Runtime[69],_b$I_), + _b$K_=caml_call1(Runtime_ocaml_Runtime[31],cst_568400$0), + _b$L_=caml_call2(Runtime_ocaml_Runtime[104],_b$K_,_b$J_), + _b$M_=caml_call1(Runtime_ocaml_Runtime[31],cst_5684900); + return caml_call2(Runtime_ocaml_Runtime[93],_b$M_,_b$L_)} + function _b$C_(param) + {var + _b$D_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), + _b$E_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b$D_), + _b$F_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _b$G_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b$F_), + _b$H_=caml_call2(Runtime_ocaml_Runtime[83],_b$G_,_b$E_); + return caml_call2(Runtime_ocaml_Runtime[29],_dY_,_b$H_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_dZ_,[0],_b$C_,_b$B_)} + var + _b$o_= + [0, + function(param) + {function _b$p_(param) + {var + _b$w_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b$x_=caml_call1(Runtime_ocaml_Runtime[69],_b$w_), + _b$y_=caml_call1(Runtime_ocaml_Runtime[31],cst_562800$0), + _b$z_=caml_call2(Runtime_ocaml_Runtime[104],_b$y_,_b$x_), + _b$A_=caml_call1(Runtime_ocaml_Runtime[31],cst_5628600); + return caml_call2(Runtime_ocaml_Runtime[93],_b$A_,_b$z_)} + function _b$q_(param) + {var + _b$r_=caml_call3(Runtime_ocaml_Runtime[57],2018,12,31), + _b$s_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b$r_), + _b$t_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), + _b$u_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b$t_), + _b$v_=caml_call2(Runtime_ocaml_Runtime[83],_b$u_,_b$s_); + return caml_call2(Runtime_ocaml_Runtime[29],_d0_,_b$v_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_d1_,[0],_b$q_,_b$p_)}, + _b$n_, + _b$m_, + _b$l_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_d2_,_b$o_,_b$k_,_b$j_)}], + _bWx_=caml_call4(Runtime_ocaml_Runtime[63],_d3_,_bWw_,_bWv_,_bWu_)} + catch(_b$i_) + {_b$i_ = caml_wrap_exception(_b$i_); + if(_b$i_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_dS_]; + throw _b$i_} + var + plafond_i_d521_3= + caml_call3 + (Runtime_ocaml_Runtime[28],_d4_,Runtime_ocaml_Runtime[13],_bWx_); + try + {var + _bWy_=function(param){return 0}, + _bWz_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_d6_,1)}, + _bWA_= + [0, + function(param) + {function _b_$_(param){return 1} + function _b$a_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_d7_,1)} + var + _b$b_= + [0, + function(param) + {function _b$c_(param){return 0} + function _b$d_(param) + {var + _b$e_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$0), + _b$f_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b$g_=caml_call2(Runtime_ocaml_Runtime[86],_b$f_,_b$e_), + _b$h_= + caml_call2 + (Runtime_ocaml_Runtime[83], + prestations_familiales_dot_reg, + _b$g_); + return caml_call2(Runtime_ocaml_Runtime[29],_d8_,_b$h_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_d9_,[0],_b$d_,_b$c_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_d__,_b$b_,_b$a_,_b_$_)}], + _bWB_=caml_call4(Runtime_ocaml_Runtime[63],_d$_,_bWA_,_bWz_,_bWy_)} + catch(_b___) + {_b___ = caml_wrap_exception(_b___); + if(_b___ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_d5_]; + throw _b___} + var + droit_ouvert_complement= + caml_call3 + (Runtime_ocaml_Runtime[28],_ea_,Runtime_ocaml_Runtime[12],_bWB_); + function _bWC_(param) + {try + {var + _b_J_=function(param){return 0}, + _b_K_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_ec_,1)}, + _b_L_= + [0, + function(param$0) + {function _b_O_(param){return 1} + function _b_P_(param$0) + {var + _b_X_= + caml_call3 + (Runtime_ocaml_Runtime[28],_ed_,embed_enfant,param), + _b_Y_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _ee_, + prestations_familiales_dot_con), + _b_X_), + _b_Z_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _ef_, + Runtime_ocaml_Runtime[12], + _b_Y_), + _b_0_=caml_call2(Runtime_ocaml_Runtime[27],_eg_,_b_Z_), + _b_1_=caml_call2(Runtime_ocaml_Runtime[83],param[6],_b_0_), + _b_2_=caml_call3(Runtime_ocaml_Runtime[60],0,0,365), + _b_3_= + caml_call2 + (Runtime_ocaml_Runtime[94], + param[4], + prestations_familiales_dot_age), + _b_4_= + caml_call2(Runtime_ocaml_Runtime[99],_b_3_,date_courante), + _b_5_=caml_call2(Runtime_ocaml_Runtime[113],_b_4_,_b_2_), + _b_6_=caml_call2(Runtime_ocaml_Runtime[83],_b_5_,_b_1_), + _b_7_=caml_call1(Runtime_ocaml_Runtime[68],enfants_a_charge), + _b_8_= + caml_call2 + (Runtime_ocaml_Runtime[125], + _b_7_, + nombre_enfants_alinea_2_l521_3), + _b_9_=caml_call2(Runtime_ocaml_Runtime[83],_b_8_,_b_6_); + return caml_call2(Runtime_ocaml_Runtime[29],_eh_,_b_9_)} + var + _b_Q_= + [0, + function(param) + {function _b_R_(param){return 0} + function _b_S_(param) + {var + _b_T_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$1), + _b_U_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b_V_=caml_call2(Runtime_ocaml_Runtime[86],_b_U_,_b_T_), + _b_W_= + caml_call2 + (Runtime_ocaml_Runtime[83], + prestations_familiales_dot_reg, + _b_V_); + return caml_call2(Runtime_ocaml_Runtime[29],_ei_,_b_W_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_ej_,[0],_b_S_,_b_R_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_ek_,_b_Q_,_b_P_,_b_O_)}], + _b_M_=caml_call4(Runtime_ocaml_Runtime[63],_el_,_b_L_,_b_K_,_b_J_); + return _b_M_} + catch(_b_N_) + {_b_N_ = caml_wrap_exception(_b_N_); + if(_b_N_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_eb_]; + throw _b_N_}} + var + droit_ouvert_forfaitaire= + caml_call3 + (Runtime_ocaml_Runtime[28],_em_,Runtime_ocaml_Runtime[10],_bWC_); + try + {var + _bWD_= + function(param) + {var + _b_B_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$1), + _b_C_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b_C_,_b_B_)) + {var + _b_D_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$2), + _b_E_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b_F_=caml_call2(Runtime_ocaml_Runtime[96],_b_E_,_b_D_), + _b_G_=caml_call1(Runtime_ocaml_Runtime[69],_b_F_), + _b_H_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0463), + _b_I_= + caml_call2(Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_H_); + return caml_call2(Runtime_ocaml_Runtime[104],_b_I_,_b_G_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$0)}, + _bWE_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_eo_,1)}, + _bWF_=caml_call4(Runtime_ocaml_Runtime[63],_ep_,[0],_bWE_,_bWD_)} + catch(_b_A_) + {_b_A_ = caml_wrap_exception(_b_A_); + if(_b_A_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_en_]; + throw _b_A_} + var + montant_initial_base_quatrieme= + caml_call3 + (Runtime_ocaml_Runtime[28],_eq_,Runtime_ocaml_Runtime[13],_bWF_); + try + {var + _bWG_= + function(param) + {var + _b_x_=caml_call1(Runtime_ocaml_Runtime[46],cst_2), + _b_y_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b_y_,_b_x_)) + {var _b_z_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_z_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$1)}, + _bWH_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_es_,1)}, + _bWI_= + [0, + function(param) + {function _b8t_(param){throw Runtime_ocaml_Runtime[2]} + function _b8u_(param){return 0} + function _b8v_(param) + {function _b_l_(param) + {var + _b_u_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$0), + _b_v_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b_v_,_b_u_)) + {var _b_w_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_143); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_w_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$2)} + function _b_m_(param) + {var + _b_n_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), + _b_o_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b_n_), + _b_p_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _b_q_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b_p_), + _b_r_=caml_call2(Runtime_ocaml_Runtime[83],_b_q_,_b_o_), + _b_s_=caml_call2(Runtime_ocaml_Runtime[86],residence,_et_), + _b_t_=caml_call2(Runtime_ocaml_Runtime[83],_b_s_,_b_r_); + return caml_call2(Runtime_ocaml_Runtime[29],_eu_,_b_t_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_ev_,[0],_b_m_,_b_l_)} + function _b8w_(param) + {function _b9$_(param) + {var + _b_i_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$1), + _b_j_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b_j_,_b_i_)) + {var _b_k_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1259); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_k_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$3)} + function _b_a_(param) + {var + _b_b_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), + _b_c_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b_b_), + _b_d_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _b_e_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b_d_), + _b_f_=caml_call2(Runtime_ocaml_Runtime[83],_b_e_,_b_c_), + _b_g_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ew_), + _b_h_=caml_call2(Runtime_ocaml_Runtime[83],_b_g_,_b_f_); + return caml_call2(Runtime_ocaml_Runtime[29],_ex_,_b_h_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_ey_,[0],_b_a_,_b9$_)} + function _b8x_(param) + {function _b9Z_(param) + {var + _b98_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$2), + _b99_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b99_,_b98_)) + {var _b9__=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1089); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9__)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$4)} + function _b90_(param) + {var + _b91_=caml_call3(Runtime_ocaml_Runtime[57],2018,12,31), + _b92_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b91_), + _b93_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), + _b94_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b93_), + _b95_=caml_call2(Runtime_ocaml_Runtime[83],_b94_,_b92_), + _b96_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ez_), + _b97_=caml_call2(Runtime_ocaml_Runtime[83],_b96_,_b95_); + return caml_call2(Runtime_ocaml_Runtime[29],_eA_,_b97_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_eB_,[0],_b90_,_b9Z_)} + function _b8y_(param) + {function _b9N_(param) + {var + _b9W_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$3), + _b9X_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b9X_,_b9W_)) + {var _b9Y_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0918); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9Y_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$5)} + function _b9O_(param) + {var + _b9P_=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), + _b9Q_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b9P_), + _b9R_=caml_call3(Runtime_ocaml_Runtime[57],2017,1,1), + _b9S_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b9R_), + _b9T_=caml_call2(Runtime_ocaml_Runtime[83],_b9S_,_b9Q_), + _b9U_=caml_call2(Runtime_ocaml_Runtime[86],residence,_eC_), + _b9V_=caml_call2(Runtime_ocaml_Runtime[83],_b9U_,_b9T_); + return caml_call2(Runtime_ocaml_Runtime[29],_eD_,_b9V_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_eE_,[0],_b9O_,_b9N_)} + function _b8z_(param) + {function _b9B_(param) + {var + _b9K_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$4), + _b9L_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b9L_,_b9K_)) + {var _b9M_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0842); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9M_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$6)} + function _b9C_(param) + {var + _b9D_=caml_call3(Runtime_ocaml_Runtime[57],2016,12,31), + _b9E_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b9D_), + _b9F_=caml_call3(Runtime_ocaml_Runtime[57],2016,1,1), + _b9G_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b9F_), + _b9H_=caml_call2(Runtime_ocaml_Runtime[83],_b9G_,_b9E_), + _b9I_=caml_call2(Runtime_ocaml_Runtime[86],residence,_eF_), + _b9J_=caml_call2(Runtime_ocaml_Runtime[83],_b9I_,_b9H_); + return caml_call2(Runtime_ocaml_Runtime[29],_eG_,_b9J_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_eH_,[0],_b9C_,_b9B_)} + function _b8A_(param) + {function _b9p_(param) + {var + _b9y_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$5), + _b9z_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b9z_,_b9y_)) + {var _b9A_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0766); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9A_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$7)} + function _b9q_(param) + {var + _b9r_=caml_call3(Runtime_ocaml_Runtime[57],2015,12,31), + _b9s_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b9r_), + _b9t_=caml_call3(Runtime_ocaml_Runtime[57],2015,1,1), + _b9u_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b9t_), + _b9v_=caml_call2(Runtime_ocaml_Runtime[83],_b9u_,_b9s_), + _b9w_=caml_call2(Runtime_ocaml_Runtime[86],residence,_eI_), + _b9x_=caml_call2(Runtime_ocaml_Runtime[83],_b9w_,_b9v_); + return caml_call2(Runtime_ocaml_Runtime[29],_eJ_,_b9x_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_eK_,[0],_b9q_,_b9p_)} + function _b8B_(param) + {function _b9d_(param) + {var + _b9m_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$6), + _b9n_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b9n_,_b9m_)) + {var _b9o_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_069); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9o_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$8)} + function _b9e_(param) + {var + _b9f_=caml_call3(Runtime_ocaml_Runtime[57],2014,12,31), + _b9g_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b9f_), + _b9h_=caml_call3(Runtime_ocaml_Runtime[57],2014,1,1), + _b9i_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b9h_), + _b9j_=caml_call2(Runtime_ocaml_Runtime[83],_b9i_,_b9g_), + _b9k_=caml_call2(Runtime_ocaml_Runtime[86],residence,_eL_), + _b9l_=caml_call2(Runtime_ocaml_Runtime[83],_b9k_,_b9j_); + return caml_call2(Runtime_ocaml_Runtime[29],_eM_,_b9l_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_eN_,[0],_b9e_,_b9d_)} + function _b8C_(param) + {function _b83_(param) + {var + _b9a_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$7), + _b9b_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b9b_,_b9a_)) + {var _b9c_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0615); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9c_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$9)} + function _b84_(param) + {var + _b85_=caml_call3(Runtime_ocaml_Runtime[57],2013,12,31), + _b86_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b85_), + _b87_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), + _b88_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b87_), + _b89_=caml_call2(Runtime_ocaml_Runtime[83],_b88_,_b86_), + _b8__=caml_call2(Runtime_ocaml_Runtime[86],residence,_eO_), + _b8$_=caml_call2(Runtime_ocaml_Runtime[83],_b8__,_b89_); + return caml_call2(Runtime_ocaml_Runtime[29],_eP_,_b8$_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_eQ_,[0],_b84_,_b83_)} + function _b8D_(param) + {function _b8R_(param) + {var + _b80_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$8), + _b81_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b81_,_b80_)) + {var _b82_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0539); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b82_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$10)} + function _b8S_(param) + {var + _b8T_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), + _b8U_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b8T_), + _b8V_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), + _b8W_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b8V_), + _b8X_=caml_call2(Runtime_ocaml_Runtime[83],_b8W_,_b8U_), + _b8Y_=caml_call2(Runtime_ocaml_Runtime[86],residence,_eR_), + _b8Z_=caml_call2(Runtime_ocaml_Runtime[83],_b8Y_,_b8X_); + return caml_call2(Runtime_ocaml_Runtime[29],_eS_,_b8Z_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_eT_,[0],_b8S_,_b8R_)} + var + _b8E_= + [0, + function(param) + {function _b8F_(param) + {var + _b8O_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$9), + _b8P_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b8P_,_b8O_)) + {var + _b8Q_= + caml_call1(Runtime_ocaml_Runtime[39],cst_0_0463$0); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b8Q_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$11)} + function _b8G_(param) + {var + _b8H_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), + _b8I_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b8H_), + _b8J_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), + _b8K_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b8J_), + _b8L_=caml_call2(Runtime_ocaml_Runtime[83],_b8K_,_b8I_), + _b8M_=caml_call2(Runtime_ocaml_Runtime[86],residence,_eU_), + _b8N_=caml_call2(Runtime_ocaml_Runtime[83],_b8M_,_b8L_); + return caml_call2(Runtime_ocaml_Runtime[29],_eV_,_b8N_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_eW_,[0],_b8G_,_b8F_)}, + _b8D_, + _b8C_, + _b8B_, + _b8A_, + _b8z_, + _b8y_, + _b8x_, + _b8w_, + _b8v_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_eX_,_b8E_,_b8u_,_b8t_)}], + _bWJ_=caml_call4(Runtime_ocaml_Runtime[63],_eY_,_bWI_,_bWH_,_bWG_)} + catch(_b8s_) + {_b8s_ = caml_wrap_exception(_b8s_); + if(_b8s_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_er_]; + throw _b8s_} + var + montant_initial_base_troisieme= + caml_call3 + (Runtime_ocaml_Runtime[28],_eZ_,Runtime_ocaml_Runtime[13],_bWJ_); + try + {var + _bWK_= + function(param) + {var + _b8r_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + return caml_call1(Runtime_ocaml_Runtime[69],_b8r_)}, + _bWL_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_e1_,1)}, + _bWM_=caml_call4(Runtime_ocaml_Runtime[63],_e2_,[0],_bWL_,_bWK_)} + catch(_b8q_) + {_b8q_ = caml_wrap_exception(_b8q_); + if(_b8q_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_e0_]; + throw _b8q_} + var + nombre_total_enfants= + caml_call3 + (Runtime_ocaml_Runtime[28],_e3_,Runtime_ocaml_Runtime[15],_bWM_); + try + {var + _bWN_= + function(param) + {function _b8j_(enfant) + {var + _b8n_= + caml_call3(Runtime_ocaml_Runtime[28],_e5_,embed_enfant,enfant), + _b8o_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_e6_,prise_en_compte), + _b8n_), + _b8p_= + caml_call3 + (Runtime_ocaml_Runtime[28],_e7_,embed_prise_en_compte,_b8o_), + match=caml_call2(Runtime_ocaml_Runtime[27],_e8_,_b8p_); + switch(match[0]) + {case 0:return caml_call1(Runtime_ocaml_Runtime[39],cst_1$2); + case 1:return caml_call1(Runtime_ocaml_Runtime[39],cst_0_5); + default:return caml_call1(Runtime_ocaml_Runtime[39],cst_0$12)}} + var + _b8k_= + caml_call2 + (Runtime_ocaml_Runtime[87], + _b8j_, + enfants_a_charge_droit_ouvert_), + _b8l_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$13); + function _b8m_(sum1,sum2) + {return caml_call2(Runtime_ocaml_Runtime[92],sum1,sum2)} + return caml_call3(Runtime_ocaml_Runtime[88],_b8m_,_b8l_,_b8k_)}, + _bWO_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_e9_,1)}, + _bWP_=caml_call4(Runtime_ocaml_Runtime[63],_e__,[0],_bWO_,_bWN_)} + catch(_b8i_) + {_b8i_ = caml_wrap_exception(_b8i_); + if(_b8i_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_e4_]; + throw _b8i_} + var + nombre_moyen_enfants= + caml_call3 + (Runtime_ocaml_Runtime[28],_e$_,Runtime_ocaml_Runtime[15],_bWP_); + try + {var + _bWQ_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$14)}, + _bWR_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_fb_,1)}, + _bWS_= + function(param) + {function _b8b_(param) + {var _b8h_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0588); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b8h_)} + function _b8c_(param) + {var + _b8d_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$3), + _b8e_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b8f_=caml_call2(Runtime_ocaml_Runtime[86],_b8e_,_b8d_), + _b8g_= + caml_call2 + (Runtime_ocaml_Runtime[83], + prestations_familiales_dot_reg, + _b8f_); + return caml_call2(Runtime_ocaml_Runtime[29],_fc_,_b8g_)} + return caml_call4(Runtime_ocaml_Runtime[63],_fd_,[0],_b8c_,_b8b_)}, + _bWT_= + [0, + function(param) + {function _b5B_(param) + {var + _b7__=caml_call1(Runtime_ocaml_Runtime[46],cst_0$15), + _b7$_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b7$_,_b7__)) + {var _b8a_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0588$0); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b8a_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$16)} + function _b5C_(param) + {var _b79_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fe_); + return caml_call2(Runtime_ocaml_Runtime[29],_ff_,_b79_)} + var + _b5D_= + [0, + function(param) + {function _b5E_(param){throw Runtime_ocaml_Runtime[2]} + function _b5F_(param){return 0} + function _b5G_(param) + {function _b73_(param) + {var + _b77_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$17), + _b78_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + return caml_call2(Runtime_ocaml_Runtime[120],_b78_,_b77_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_5728) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$18)} + function _b74_(param) + {var + _b75_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fg_), + _b76_= + caml_call2 + (Runtime_ocaml_Runtime[83], + _b75_, + avait_enfant_a_charge_avant_1e); + return caml_call2(Runtime_ocaml_Runtime[29],_fh_,_b76_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fi_,[0],_b74_,_b73_)} + function _b5H_(param) + {function _b7P_(param) + {var + _b70_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$19), + _b71_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b71_,_b70_)) + {var _b72_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0717); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b72_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$20)} + function _b7Q_(param) + {var + _b7R_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b7S_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), + _b7T_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b7S_), + _b7U_=caml_call2(Runtime_ocaml_Runtime[83],_b7T_,_b7R_), + _b7V_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _b7W_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b7V_), + _b7X_=caml_call2(Runtime_ocaml_Runtime[83],_b7W_,_b7U_), + _b7Y_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fj_), + _b7Z_=caml_call2(Runtime_ocaml_Runtime[83],_b7Y_,_b7X_); + return caml_call2(Runtime_ocaml_Runtime[29],_fk_,_b7Z_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fl_,[0],_b7Q_,_b7P_)} + function _b5I_(param) + {function _b7B_(param) + {var + _b7M_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$21), + _b7N_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b7N_,_b7M_)) + {var _b7O_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0847); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b7O_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$22)} + function _b7C_(param) + {var + _b7D_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b7E_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), + _b7F_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b7E_), + _b7G_=caml_call2(Runtime_ocaml_Runtime[83],_b7F_,_b7D_), + _b7H_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _b7I_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b7H_), + _b7J_=caml_call2(Runtime_ocaml_Runtime[83],_b7I_,_b7G_), + _b7K_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fm_), + _b7L_=caml_call2(Runtime_ocaml_Runtime[83],_b7K_,_b7J_); + return caml_call2(Runtime_ocaml_Runtime[29],_fn_,_b7L_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fo_,[0],_b7C_,_b7B_)} + function _b5J_(param) + {function _b7n_(param) + {var + _b7y_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$23), + _b7z_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b7z_,_b7y_)) + {var _b7A_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0976); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b7A_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$24)} + function _b7o_(param) + {var + _b7p_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b7q_=caml_call3(Runtime_ocaml_Runtime[57],2018,12,31), + _b7r_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b7q_), + _b7s_=caml_call2(Runtime_ocaml_Runtime[83],_b7r_,_b7p_), + _b7t_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), + _b7u_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b7t_), + _b7v_=caml_call2(Runtime_ocaml_Runtime[83],_b7u_,_b7s_), + _b7w_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fp_), + _b7x_=caml_call2(Runtime_ocaml_Runtime[83],_b7w_,_b7v_); + return caml_call2(Runtime_ocaml_Runtime[29],_fq_,_b7x_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fr_,[0],_b7o_,_b7n_)} + function _b5K_(param) + {function _b6$_(param) + {var + _b7k_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$25), + _b7l_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b7l_,_b7k_)) + {var _b7m_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1105); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b7m_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$26)} + function _b7a_(param) + {var + _b7b_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b7c_=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), + _b7d_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b7c_), + _b7e_=caml_call2(Runtime_ocaml_Runtime[83],_b7d_,_b7b_), + _b7f_=caml_call3(Runtime_ocaml_Runtime[57],2017,1,1), + _b7g_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b7f_), + _b7h_=caml_call2(Runtime_ocaml_Runtime[83],_b7g_,_b7e_), + _b7i_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fs_), + _b7j_=caml_call2(Runtime_ocaml_Runtime[83],_b7i_,_b7h_); + return caml_call2(Runtime_ocaml_Runtime[29],_ft_,_b7j_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fu_,[0],_b7a_,_b6$_)} + function _b5L_(param) + {function _b6X_(param) + {var + _b68_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$27), + _b69_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b69_,_b68_)) + {var _b6__=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1163); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b6__)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$28)} + function _b6Y_(param) + {var + _b6Z_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b60_=caml_call3(Runtime_ocaml_Runtime[57],2016,12,31), + _b61_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b60_), + _b62_=caml_call2(Runtime_ocaml_Runtime[83],_b61_,_b6Z_), + _b63_=caml_call3(Runtime_ocaml_Runtime[57],2016,1,1), + _b64_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b63_), + _b65_=caml_call2(Runtime_ocaml_Runtime[83],_b64_,_b62_), + _b66_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fv_), + _b67_=caml_call2(Runtime_ocaml_Runtime[83],_b66_,_b65_); + return caml_call2(Runtime_ocaml_Runtime[29],_fw_,_b67_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fx_,[0],_b6Y_,_b6X_)} + function _b5M_(param) + {function _b6J_(param) + {var + _b6U_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$29), + _b6V_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b6V_,_b6U_)) + {var _b6W_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_122); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b6W_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$30)} + function _b6K_(param) + {var + _b6L_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b6M_=caml_call3(Runtime_ocaml_Runtime[57],2015,12,31), + _b6N_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b6M_), + _b6O_=caml_call2(Runtime_ocaml_Runtime[83],_b6N_,_b6L_), + _b6P_=caml_call3(Runtime_ocaml_Runtime[57],2015,1,1), + _b6Q_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b6P_), + _b6R_=caml_call2(Runtime_ocaml_Runtime[83],_b6Q_,_b6O_), + _b6S_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fy_), + _b6T_=caml_call2(Runtime_ocaml_Runtime[83],_b6S_,_b6R_); + return caml_call2(Runtime_ocaml_Runtime[29],_fz_,_b6T_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fA_,[0],_b6K_,_b6J_)} + function _b5N_(param) + {function _b6v_(param) + {var + _b6G_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$31), + _b6H_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b6H_,_b6G_)) + {var _b6I_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1278); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b6I_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$32)} + function _b6w_(param) + {var + _b6x_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b6y_=caml_call3(Runtime_ocaml_Runtime[57],2014,12,31), + _b6z_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b6y_), + _b6A_=caml_call2(Runtime_ocaml_Runtime[83],_b6z_,_b6x_), + _b6B_=caml_call3(Runtime_ocaml_Runtime[57],2014,1,1), + _b6C_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b6B_), + _b6D_=caml_call2(Runtime_ocaml_Runtime[83],_b6C_,_b6A_), + _b6E_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fB_), + _b6F_=caml_call2(Runtime_ocaml_Runtime[83],_b6E_,_b6D_); + return caml_call2(Runtime_ocaml_Runtime[29],_fC_,_b6F_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fD_,[0],_b6w_,_b6v_)} + function _b5O_(param) + {function _b6h_(param) + {var + _b6s_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$33), + _b6t_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b6t_,_b6s_)) + {var _b6u_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1335); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b6u_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$34)} + function _b6i_(param) + {var + _b6j_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b6k_=caml_call3(Runtime_ocaml_Runtime[57],2013,12,31), + _b6l_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b6k_), + _b6m_=caml_call2(Runtime_ocaml_Runtime[83],_b6l_,_b6j_), + _b6n_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), + _b6o_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b6n_), + _b6p_=caml_call2(Runtime_ocaml_Runtime[83],_b6o_,_b6m_), + _b6q_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fE_), + _b6r_=caml_call2(Runtime_ocaml_Runtime[83],_b6q_,_b6p_); + return caml_call2(Runtime_ocaml_Runtime[29],_fF_,_b6r_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fG_,[0],_b6i_,_b6h_)} + function _b5P_(param) + {function _b55_(param) + {var + _b6e_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$35), + _b6f_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b6f_,_b6e_)) + {var _b6g_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1393); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b6g_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$36)} + function _b56_(param) + {var + _b57_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b58_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), + _b59_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b58_), + _b5__=caml_call2(Runtime_ocaml_Runtime[83],_b59_,_b57_), + _b5$_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), + _b6a_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b5$_), + _b6b_=caml_call2(Runtime_ocaml_Runtime[83],_b6a_,_b5__), + _b6c_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fH_), + _b6d_=caml_call2(Runtime_ocaml_Runtime[83],_b6c_,_b6b_); + return caml_call2(Runtime_ocaml_Runtime[29],_fI_,_b6d_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fJ_,[0],_b56_,_b55_)} + var + _b5Q_= + [0, + function(param) + {function _b5R_(param) + {var + _b52_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$37), + _b53_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b53_,_b52_)) + {var _b54_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_145); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b54_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$38)} + function _b5S_(param) + {var + _b5T_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b5U_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), + _b5V_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b5U_), + _b5W_=caml_call2(Runtime_ocaml_Runtime[83],_b5V_,_b5T_), + _b5X_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), + _b5Y_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b5X_), + _b5Z_=caml_call2(Runtime_ocaml_Runtime[83],_b5Y_,_b5W_), + _b50_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fK_), + _b51_=caml_call2(Runtime_ocaml_Runtime[83],_b50_,_b5Z_); + return caml_call2(Runtime_ocaml_Runtime[29],_fL_,_b51_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fM_,[0],_b5S_,_b5R_)}, + _b5P_, + _b5O_, + _b5N_, + _b5M_, + _b5L_, + _b5K_, + _b5J_, + _b5I_, + _b5H_, + _b5G_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_fN_,_b5Q_,_b5F_,_b5E_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_fO_,_b5D_,_b5C_,_b5B_)}, + _bWS_], + _bWU_=caml_call4(Runtime_ocaml_Runtime[63],_fP_,_bWT_,_bWR_,_bWQ_)} + catch(_b5A_) + {_b5A_ = caml_wrap_exception(_b5A_); + if(_b5A_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_fa_]; + throw _b5A_} + var + montant_initial_base_premier_e= + caml_call3 + (Runtime_ocaml_Runtime[28],_fQ_,Runtime_ocaml_Runtime[13],_bWU_); + try + {var + _bWV_=function(param){return 0}, + _bWW_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_fS_,1)}, + _bWX_= + [0, + function(param) + {function _b5d_(param){return 1} + function _b5e_(param) + {var + _b5x_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$10), + _b5y_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b5z_=caml_call2(Runtime_ocaml_Runtime[125],_b5y_,_b5x_); + return caml_call2(Runtime_ocaml_Runtime[29],_fT_,_b5z_)} + var + _b5f_= + [0, + function(param) + {function _b5g_(param){throw Runtime_ocaml_Runtime[2]} + function _b5h_(param){return 0} + var + _b5i_= + [0, + function(param) + {function _b5j_(param){return 1} + function _b5k_(param) + {var + _b5t_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$4), + _b5u_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b5v_=caml_call2(Runtime_ocaml_Runtime[125],_b5u_,_b5t_), + _b5w_= + caml_call2 + (Runtime_ocaml_Runtime[83], + prestations_familiales_dot_reg, + _b5v_); + return caml_call2(Runtime_ocaml_Runtime[29],_fU_,_b5w_)} + var + _b5l_= + [0, + function(param) + {function _b5m_(param){return 1} + function _b5n_(param) + {var + _b5o_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$5), + _b5p_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b5q_=caml_call2(Runtime_ocaml_Runtime[125],_b5p_,_b5o_), + _b5r_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fV_), + _b5s_=caml_call2(Runtime_ocaml_Runtime[83],_b5r_,_b5q_); + return caml_call2(Runtime_ocaml_Runtime[29],_fW_,_b5s_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fX_,[0],_b5n_,_b5m_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_fY_,_b5l_,_b5k_,_b5j_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_fZ_,_b5i_,_b5h_,_b5g_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_f0_,_b5f_,_b5e_,_b5d_)}], + _bWY_=caml_call4(Runtime_ocaml_Runtime[63],_f1_,_bWX_,_bWW_,_bWV_)} + catch(_b5c_) + {_b5c_ = caml_wrap_exception(_b5c_); + if(_b5c_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_fR_]; + throw _b5c_} + var + droit_ouvert_base= + caml_call3 + (Runtime_ocaml_Runtime[28],_f2_,Runtime_ocaml_Runtime[12],_bWY_); + function _bWZ_(param) + {try + {var + _b4J_=function(param){return 0}, + _b4K_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_f4_,1)}, + _b4L_= + [0, + function(param$0) + {function _b4O_(param){return 1} + function _b4P_(param$0) + {var + _b42_= + caml_call3 + (Runtime_ocaml_Runtime[28],_f5_,embed_enfant,param), + _b43_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_f6_,age_minimum_alinea_1_l521_3), + _b42_), + _b44_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _f7_, + Runtime_ocaml_Runtime[17], + _b43_), + _b45_=caml_call2(Runtime_ocaml_Runtime[27],_f8_,_b44_), + _b46_=caml_call2(Runtime_ocaml_Runtime[94],param[4],_b45_), + _b47_= + caml_call2(Runtime_ocaml_Runtime[119],_b46_,date_courante), + _b48_= + caml_call3 + (Runtime_ocaml_Runtime[28],_f9_,embed_enfant,param), + _b49_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_f__,est_enfant_le_plus_age), + _b48_), + _b4__= + caml_call3 + (Runtime_ocaml_Runtime[28], + _f$_, + Runtime_ocaml_Runtime[12], + _b49_), + _b4$_=caml_call2(Runtime_ocaml_Runtime[27],_ga_,_b4__), + _b5a_=caml_call1(Runtime_ocaml_Runtime[67],_b4$_), + _b5b_=caml_call2(Runtime_ocaml_Runtime[83],_b5a_,_b47_); + return caml_call2(Runtime_ocaml_Runtime[29],_gb_,_b5b_)} + var + _b4Q_= + [0, + function(param$0) + {function _b4R_(param){return 1} + function _b4S_(param$0) + {var + _b4T_= + caml_call3 + (Runtime_ocaml_Runtime[28],_gc_,embed_enfant,param), + _b4U_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_gd_,age_minimum_alinea_1_l521_3), + _b4T_), + _b4V_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _ge_, + Runtime_ocaml_Runtime[17], + _b4U_), + _b4W_=caml_call2(Runtime_ocaml_Runtime[27],_gf_,_b4V_), + _b4X_=caml_call2(Runtime_ocaml_Runtime[94],param[4],_b4W_), + _b4Y_= + caml_call2(Runtime_ocaml_Runtime[119],_b4X_,date_courante), + _b4Z_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b40_= + caml_call2 + (Runtime_ocaml_Runtime[125], + _b4Z_, + nombre_enfants_alinea_2_l521_3), + _b41_=caml_call2(Runtime_ocaml_Runtime[83],_b40_,_b4Y_); + return caml_call2(Runtime_ocaml_Runtime[29],_gg_,_b41_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_gh_,[0],_b4S_,_b4R_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_gi_,_b4Q_,_b4P_,_b4O_)}], + _b4M_=caml_call4(Runtime_ocaml_Runtime[63],_gj_,_b4L_,_b4K_,_b4J_); + return _b4M_} + catch(_b4N_) + {_b4N_ = caml_wrap_exception(_b4N_); + if(_b4N_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_f3_]; + throw _b4N_}} + var + droit_ouvert_majoration= + caml_call3 + (Runtime_ocaml_Runtime[28],_gk_,Runtime_ocaml_Runtime[10],_bWZ_); + function _bW0_(param) + {try + {var + _b38_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$39)}, + _b39_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_gm_,1)}, + _b3__= + [0, + function(param$0) + {function _b4b_(param){throw Runtime_ocaml_Runtime[2]} + function _b4c_(param){return 0} + function _b4d_(param$0) + {function _b4u_(param$0) + {var + _b4C_=caml_call1(Runtime_ocaml_Runtime[39],cst_12), + _b4D_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$6), + _b4E_=caml_call2(Runtime_ocaml_Runtime[107],_b4D_,_b4C_), + _b4F_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$0), + _b4G_=caml_call2(Runtime_ocaml_Runtime[104],param,_b4F_), + _b4H_= + caml_call2 + (Runtime_ocaml_Runtime[93],plafond_i_i_d521_3,_b4G_), + _b4I_= + caml_call2 + (Runtime_ocaml_Runtime[98],_b4H_,ressources_menage); + return caml_call2(Runtime_ocaml_Runtime[104],_b4I_,_b4E_)} + function _b4v_(param$0) + {var + _b4w_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$1), + _b4x_=caml_call2(Runtime_ocaml_Runtime[104],param,_b4w_), + _b4y_= + caml_call2 + (Runtime_ocaml_Runtime[93],plafond_i_i_d521_3,_b4x_), + _b4z_= + caml_call2 + (Runtime_ocaml_Runtime[117],ressources_menage,_b4y_), + _b4A_= + caml_call2 + (Runtime_ocaml_Runtime[122], + ressources_menage, + plafond_i_i_d521_3), + _b4B_=caml_call2(Runtime_ocaml_Runtime[83],_b4A_,_b4z_); + return caml_call2(Runtime_ocaml_Runtime[29],_gn_,_b4B_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_go_,[0],_b4v_,_b4u_)} + var + _b4e_= + [0, + function(param$0) + {function _b4f_(param$0) + {var + _b4n_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$2), + _b4o_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$7), + _b4p_=caml_call2(Runtime_ocaml_Runtime[107],_b4o_,_b4n_), + _b4q_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$3), + _b4r_=caml_call2(Runtime_ocaml_Runtime[104],param,_b4q_), + _b4s_= + caml_call2(Runtime_ocaml_Runtime[93],plafond_i_d521_3,_b4r_), + _b4t_= + caml_call2 + (Runtime_ocaml_Runtime[98],_b4s_,ressources_menage); + return caml_call2(Runtime_ocaml_Runtime[104],_b4t_,_b4p_)} + function _b4g_(param$0) + {var + _b4h_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$4), + _b4i_=caml_call2(Runtime_ocaml_Runtime[104],param,_b4h_), + _b4j_= + caml_call2(Runtime_ocaml_Runtime[93],plafond_i_d521_3,_b4i_), + _b4k_= + caml_call2 + (Runtime_ocaml_Runtime[117],ressources_menage,_b4j_), + _b4l_= + caml_call2 + (Runtime_ocaml_Runtime[122], + ressources_menage, + plafond_i_d521_3), + _b4m_=caml_call2(Runtime_ocaml_Runtime[83],_b4l_,_b4k_); + return caml_call2(Runtime_ocaml_Runtime[29],_gp_,_b4m_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_gq_,[0],_b4g_,_b4f_)}, + _b4d_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_gr_,_b4e_,_b4c_,_b4b_)}], + _b3$_=caml_call4(Runtime_ocaml_Runtime[63],_gs_,_b3__,_b39_,_b38_); + return _b3$_} + catch(_b4a_) + {_b4a_ = caml_wrap_exception(_b4a_); + if(_b4a_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_gl_]; + throw _b4a_}} + var + complement_degressif= + caml_call3 + (Runtime_ocaml_Runtime[28],_gt_,Runtime_ocaml_Runtime[10],_bW0_); + try + {var + _bW1_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bW2_=function(param){return 0}, + _bW3_= + function(param) + {function _b34_(param) + {var _b37_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_05059); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b37_)} + function _b35_(param) + {var + _b36_= + caml_call2 + (Runtime_ocaml_Runtime[122], + ressources_menage, + plafond_i_i_d521_3); + return caml_call2(Runtime_ocaml_Runtime[29],_gv_,_b36_)} + return caml_call4(Runtime_ocaml_Runtime[63],_gw_,[0],_b35_,_b34_)}, + _bW4_= + function(param) + {function _b3Y_(param) + {var _b33_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_10117); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b33_)} + function _b3Z_(param) + {var + _b30_= + caml_call2 + (Runtime_ocaml_Runtime[117], + ressources_menage, + plafond_i_i_d521_3), + _b31_= + caml_call2 + (Runtime_ocaml_Runtime[122], + ressources_menage, + plafond_i_d521_3), + _b32_=caml_call2(Runtime_ocaml_Runtime[83],_b31_,_b30_); + return caml_call2(Runtime_ocaml_Runtime[29],_gx_,_b32_)} + return caml_call4(Runtime_ocaml_Runtime[63],_gy_,[0],_b3Z_,_b3Y_)}, + _bW5_= + [0, + function(param) + {function _b3U_(param) + {var _b3X_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_20234); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3X_)} + function _b3V_(param) + {var + _b3W_= + caml_call2 + (Runtime_ocaml_Runtime[117], + ressources_menage, + plafond_i_d521_3); + return caml_call2(Runtime_ocaml_Runtime[29],_gz_,_b3W_)} + return caml_call4(Runtime_ocaml_Runtime[63],_gA_,[0],_b3V_,_b3U_)}, + _bW4_, + _bW3_], + _bW6_=caml_call4(Runtime_ocaml_Runtime[63],_gB_,_bW5_,_bW2_,_bW1_)} + catch(_b3T_) + {_b3T_ = caml_wrap_exception(_b3T_); + if(_b3T_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_gu_]; + throw _b3T_} + var + montant_verse_forfaitaire_par_= + caml_call3 + (Runtime_ocaml_Runtime[28],_gC_,Runtime_ocaml_Runtime[13],_bW6_); + try + {var + _bW7_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bW8_=function(param){return 0}, + _bW9_= + function(param) + {function _b3I_(param) + {var + _b3L_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$11), + _b3M_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b3M_,_b3L_)) + {var + _b3N_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$12), + _b3O_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b3P_=caml_call2(Runtime_ocaml_Runtime[96],_b3O_,_b3N_), + _b3Q_=caml_call1(Runtime_ocaml_Runtime[69],_b3P_), + _b3R_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1025), + _b3S_= + caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3R_); + return caml_call2(Runtime_ocaml_Runtime[104],_b3S_,_b3Q_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$40)} + function _b3J_(param) + {var + _b3K_= + caml_call2 + (Runtime_ocaml_Runtime[122], + ressources_menage, + plafond_i_i_d521_3); + return caml_call2(Runtime_ocaml_Runtime[29],_gE_,_b3K_)} + return caml_call4(Runtime_ocaml_Runtime[63],_gF_,[0],_b3J_,_b3I_)}, + _bW__= + function(param) + {function _b3v_(param) + {var + _b3A_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$13), + _b3B_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b3B_,_b3A_)) + {var + _b3C_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$14), + _b3D_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b3E_=caml_call2(Runtime_ocaml_Runtime[96],_b3D_,_b3C_), + _b3F_=caml_call1(Runtime_ocaml_Runtime[69],_b3E_), + _b3G_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_205), + _b3H_= + caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3G_); + return caml_call2(Runtime_ocaml_Runtime[104],_b3H_,_b3F_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$41)} + function _b3w_(param) + {var + _b3x_= + caml_call2 + (Runtime_ocaml_Runtime[117], + ressources_menage, + plafond_i_i_d521_3), + _b3y_= + caml_call2 + (Runtime_ocaml_Runtime[122], + ressources_menage, + plafond_i_d521_3), + _b3z_=caml_call2(Runtime_ocaml_Runtime[83],_b3y_,_b3x_); + return caml_call2(Runtime_ocaml_Runtime[29],_gG_,_b3z_)} + return caml_call4(Runtime_ocaml_Runtime[63],_gH_,[0],_b3w_,_b3v_)}, + _bW$_= + [0, + function(param) + {function _b3k_(param) + {var + _b3n_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$15), + _b3o_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b3o_,_b3n_)) + {var + _b3p_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$16), + _b3q_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b3r_=caml_call2(Runtime_ocaml_Runtime[96],_b3q_,_b3p_), + _b3s_=caml_call1(Runtime_ocaml_Runtime[69],_b3r_), + _b3t_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_41), + _b3u_= + caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3t_); + return caml_call2(Runtime_ocaml_Runtime[104],_b3u_,_b3s_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$42)} + function _b3l_(param) + {var + _b3m_= + caml_call2 + (Runtime_ocaml_Runtime[117], + ressources_menage, + plafond_i_d521_3); + return caml_call2(Runtime_ocaml_Runtime[29],_gI_,_b3m_)} + return caml_call4(Runtime_ocaml_Runtime[63],_gJ_,[0],_b3l_,_b3k_)}, + _bW__, + _bW9_], + _bXa_=caml_call4(Runtime_ocaml_Runtime[63],_gK_,_bW$_,_bW8_,_bW7_)} + catch(_b3j_) + {_b3j_ = caml_wrap_exception(_b3j_); + if(_b3j_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_gD_]; + throw _b3j_} + var + montant_initial_base_troisieme$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_gL_,Runtime_ocaml_Runtime[13],_bXa_); + try + {var + _bXb_= + function(param) + {function _b2W_(param){throw Runtime_ocaml_Runtime[2]} + function _b2X_(param){return 0} + function _b2Y_(param) + {function _b3d_(param) + {var + _b3g_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$8), + _b3h_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b3h_,_b3g_)) + {var _b3i_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_08); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3i_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$43)} + function _b3e_(param) + {var + _b3f_= + caml_call2 + (Runtime_ocaml_Runtime[122], + ressources_menage, + plafond_i_i_d521_3); + return caml_call2(Runtime_ocaml_Runtime[29],_gN_,_b3f_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_gO_,[0],_b3e_,_b3d_)} + function _b2Z_(param) + {function _b27_(param) + {var + _b3a_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$9), + _b3b_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b3b_,_b3a_)) + {var _b3c_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16$0); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3c_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$44)} + function _b28_(param) + {var + _b29_= + caml_call2 + (Runtime_ocaml_Runtime[117], + ressources_menage, + plafond_i_i_d521_3), + _b2__= + caml_call2 + (Runtime_ocaml_Runtime[122], + ressources_menage, + plafond_i_d521_3), + _b2$_=caml_call2(Runtime_ocaml_Runtime[83],_b2__,_b29_); + return caml_call2(Runtime_ocaml_Runtime[29],_gP_,_b2$_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_gQ_,[0],_b28_,_b27_)} + var + _b20_= + [0, + function(param) + {function _b21_(param) + {var + _b24_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$10), + _b25_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b25_,_b24_)) + {var _b26_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b26_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$45)} + function _b22_(param) + {var + _b23_= + caml_call2 + (Runtime_ocaml_Runtime[117], + ressources_menage, + plafond_i_d521_3); + return caml_call2(Runtime_ocaml_Runtime[29],_gR_,_b23_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_gS_,[0],_b22_,_b21_)}, + _b2Z_, + _b2Y_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_gT_,_b20_,_b2X_,_b2W_)}, + _bXc_=function(param){return 1}, + _bXd_= + [0, + function(param) + {function _b0L_(param) + {var + _b2T_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$11), + _b2U_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b2U_,_b2T_)) + {var _b2V_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32$0); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2V_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$46)} + function _b0M_(param) + {var _b2S_=caml_call2(Runtime_ocaml_Runtime[86],residence,_gU_); + return caml_call2(Runtime_ocaml_Runtime[29],_gV_,_b2S_)} + var + _b0N_= + [0, + function(param) + {function _b0O_(param){throw Runtime_ocaml_Runtime[2]} + function _b0P_(param){return 0} + function _b0Q_(param) + {function _b2G_(param) + {var + _b2P_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$12), + _b2Q_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b2Q_,_b2P_)) + {var _b2R_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3068); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2R_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$47)} + function _b2H_(param) + {var + _b2I_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), + _b2J_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b2I_), + _b2K_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _b2L_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b2K_), + _b2M_=caml_call2(Runtime_ocaml_Runtime[83],_b2L_,_b2J_), + _b2N_=caml_call2(Runtime_ocaml_Runtime[86],residence,_gW_), + _b2O_=caml_call2(Runtime_ocaml_Runtime[83],_b2N_,_b2M_); + return caml_call2(Runtime_ocaml_Runtime[29],_gX_,_b2O_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_gY_,[0],_b2H_,_b2G_)} + function _b0R_(param) + {function _b2u_(param) + {var + _b2D_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$13), + _b2E_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b2E_,_b2D_)) + {var _b2F_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2936); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2F_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$48)} + function _b2v_(param) + {var + _b2w_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), + _b2x_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b2w_), + _b2y_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _b2z_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b2y_), + _b2A_=caml_call2(Runtime_ocaml_Runtime[83],_b2z_,_b2x_), + _b2B_=caml_call2(Runtime_ocaml_Runtime[86],residence,_gZ_), + _b2C_=caml_call2(Runtime_ocaml_Runtime[83],_b2B_,_b2A_); + return caml_call2(Runtime_ocaml_Runtime[29],_g0_,_b2C_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_g1_,[0],_b2v_,_b2u_)} + function _b0S_(param) + {function _b2i_(param) + {var + _b2r_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$14), + _b2s_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b2s_,_b2r_)) + {var _b2t_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2804); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2t_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$49)} + function _b2j_(param) + {var + _b2k_=caml_call3(Runtime_ocaml_Runtime[57],2018,12,31), + _b2l_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b2k_), + _b2m_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), + _b2n_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b2m_), + _b2o_=caml_call2(Runtime_ocaml_Runtime[83],_b2n_,_b2l_), + _b2p_=caml_call2(Runtime_ocaml_Runtime[86],residence,_g2_), + _b2q_=caml_call2(Runtime_ocaml_Runtime[83],_b2p_,_b2o_); + return caml_call2(Runtime_ocaml_Runtime[29],_g3_,_b2q_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_g4_,[0],_b2j_,_b2i_)} + function _b0T_(param) + {function _b18_(param) + {var + _b2f_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$15), + _b2g_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b2g_,_b2f_)) + {var _b2h_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2672); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2h_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$50)} + function _b19_(param) + {var + _b1__=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), + _b1$_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b1__), + _b2a_=caml_call3(Runtime_ocaml_Runtime[57],2017,1,1), + _b2b_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b2a_), + _b2c_=caml_call2(Runtime_ocaml_Runtime[83],_b2b_,_b1$_), + _b2d_=caml_call2(Runtime_ocaml_Runtime[86],residence,_g5_), + _b2e_=caml_call2(Runtime_ocaml_Runtime[83],_b2d_,_b2c_); + return caml_call2(Runtime_ocaml_Runtime[29],_g6_,_b2e_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_g7_,[0],_b19_,_b18_)} + function _b0U_(param) + {function _b1W_(param) + {var + _b15_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$16), + _b16_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b16_,_b15_)) + {var _b17_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2613); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b17_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$51)} + function _b1X_(param) + {var + _b1Y_=caml_call3(Runtime_ocaml_Runtime[57],2016,12,31), + _b1Z_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b1Y_), + _b10_=caml_call3(Runtime_ocaml_Runtime[57],2016,1,1), + _b11_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b10_), + _b12_=caml_call2(Runtime_ocaml_Runtime[83],_b11_,_b1Z_), + _b13_=caml_call2(Runtime_ocaml_Runtime[86],residence,_g8_), + _b14_=caml_call2(Runtime_ocaml_Runtime[83],_b13_,_b12_); + return caml_call2(Runtime_ocaml_Runtime[29],_g9_,_b14_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_g__,[0],_b1X_,_b1W_)} + function _b0V_(param) + {function _b1K_(param) + {var + _b1T_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$17), + _b1U_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b1U_,_b1T_)) + {var _b1V_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2555); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b1V_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$52)} + function _b1L_(param) + {var + _b1M_=caml_call3(Runtime_ocaml_Runtime[57],2015,12,31), + _b1N_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b1M_), + _b1O_=caml_call3(Runtime_ocaml_Runtime[57],2015,1,1), + _b1P_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b1O_), + _b1Q_=caml_call2(Runtime_ocaml_Runtime[83],_b1P_,_b1N_), + _b1R_=caml_call2(Runtime_ocaml_Runtime[86],residence,_g$_), + _b1S_=caml_call2(Runtime_ocaml_Runtime[83],_b1R_,_b1Q_); + return caml_call2(Runtime_ocaml_Runtime[29],_ha_,_b1S_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_hb_,[0],_b1L_,_b1K_)} + function _b0W_(param) + {function _b1y_(param) + {var + _b1H_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$18), + _b1I_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b1I_,_b1H_)) + {var _b1J_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2496); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b1J_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$53)} + function _b1z_(param) + {var + _b1A_=caml_call3(Runtime_ocaml_Runtime[57],2014,12,31), + _b1B_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b1A_), + _b1C_=caml_call3(Runtime_ocaml_Runtime[57],2014,1,1), + _b1D_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b1C_), + _b1E_=caml_call2(Runtime_ocaml_Runtime[83],_b1D_,_b1B_), + _b1F_=caml_call2(Runtime_ocaml_Runtime[86],residence,_hc_), + _b1G_=caml_call2(Runtime_ocaml_Runtime[83],_b1F_,_b1E_); + return caml_call2(Runtime_ocaml_Runtime[29],_hd_,_b1G_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_he_,[0],_b1z_,_b1y_)} + function _b0X_(param) + {function _b1m_(param) + {var + _b1v_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$19), + _b1w_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b1w_,_b1v_)) + {var _b1x_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2437); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b1x_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$54)} + function _b1n_(param) + {var + _b1o_=caml_call3(Runtime_ocaml_Runtime[57],2013,12,31), + _b1p_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b1o_), + _b1q_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), + _b1r_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b1q_), + _b1s_=caml_call2(Runtime_ocaml_Runtime[83],_b1r_,_b1p_), + _b1t_=caml_call2(Runtime_ocaml_Runtime[86],residence,_hf_), + _b1u_=caml_call2(Runtime_ocaml_Runtime[83],_b1t_,_b1s_); + return caml_call2(Runtime_ocaml_Runtime[29],_hg_,_b1u_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_hh_,[0],_b1n_,_b1m_)} + function _b0Y_(param) + {function _b1a_(param) + {var + _b1j_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$20), + _b1k_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b1k_,_b1j_)) + {var _b1l_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2379); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b1l_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$55)} + function _b1b_(param) + {var + _b1c_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), + _b1d_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b1c_), + _b1e_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), + _b1f_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b1e_), + _b1g_=caml_call2(Runtime_ocaml_Runtime[83],_b1f_,_b1d_), + _b1h_=caml_call2(Runtime_ocaml_Runtime[86],residence,_hi_), + _b1i_=caml_call2(Runtime_ocaml_Runtime[83],_b1h_,_b1g_); + return caml_call2(Runtime_ocaml_Runtime[29],_hj_,_b1i_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_hk_,[0],_b1b_,_b1a_)} + var + _b0Z_= + [0, + function(param) + {function _b00_(param) + {var + _b09_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$21), + _b0__= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[120],_b0__,_b09_)) + {var _b0$_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_232); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b0$_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$56)} + function _b01_(param) + {var + _b02_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), + _b03_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b02_), + _b04_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), + _b05_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b04_), + _b06_=caml_call2(Runtime_ocaml_Runtime[83],_b05_,_b03_), + _b07_=caml_call2(Runtime_ocaml_Runtime[86],residence,_hl_), + _b08_=caml_call2(Runtime_ocaml_Runtime[83],_b07_,_b06_); + return caml_call2(Runtime_ocaml_Runtime[29],_hm_,_b08_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_hn_,[0],_b01_,_b00_)}, + _b0Y_, + _b0X_, + _b0W_, + _b0V_, + _b0U_, + _b0T_, + _b0S_, + _b0R_, + _b0Q_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_ho_,_b0Z_,_b0P_,_b0O_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_hp_,_b0N_,_b0M_,_b0L_)}], + _bXe_=caml_call4(Runtime_ocaml_Runtime[63],_hq_,_bXd_,_bXc_,_bXb_)} + catch(_b0K_) + {_b0K_ = caml_wrap_exception(_b0K_); + if(_b0K_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_gM_]; + throw _b0K_} + var + montant_initial_base_deuxieme_= + caml_call3 + (Runtime_ocaml_Runtime[28],_hr_,Runtime_ocaml_Runtime[13],_bXe_); + try + {var + _bXf_= + function(param) + {var _b0J_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$57); + return caml_call2 + (Runtime_ocaml_Runtime[86],nombre_total_enfants,_b0J_) + ?caml_call1(Runtime_ocaml_Runtime[39],cst_0$58) + :caml_call2 + (Runtime_ocaml_Runtime[107], + nombre_moyen_enfants, + nombre_total_enfants)}, + _bXg_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ht_,1)}, + _bXh_=caml_call4(Runtime_ocaml_Runtime[63],_hu_,[0],_bXg_,_bXf_)} + catch(_b0I_) + {_b0I_ = caml_wrap_exception(_b0I_); + if(_b0I_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_hs_]; + throw _b0I_} + var + rapport_enfants_total_moyen= + caml_call3 + (Runtime_ocaml_Runtime[28],_hv_,Runtime_ocaml_Runtime[15],_bXh_); + function _bXi_(param) + {try + {var + _bZ2_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bZ3_=function(param){return 0}, + _bZ4_= + function(param$0) + {function _b0B_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$59)} + function _b0C_(param$0) + {var + _b0D_= + caml_call3 + (Runtime_ocaml_Runtime[28],_hx_,embed_enfant,param), + _b0E_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_hy_,droit_ouvert_majoration), + _b0D_), + _b0F_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _hz_, + Runtime_ocaml_Runtime[12], + _b0E_), + _b0G_=caml_call2(Runtime_ocaml_Runtime[27],_hA_,_b0F_), + _b0H_=caml_call1(Runtime_ocaml_Runtime[67],_b0G_); + return caml_call2(Runtime_ocaml_Runtime[29],_hB_,_b0H_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_hC_,[0],_b0C_,_b0B_)}, + _bZ5_= + function(param$0) + {function _b0s_(param) + {var _b0A_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_04); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b0A_)} + function _b0t_(param$0) + {var + _b0u_= + caml_call3 + (Runtime_ocaml_Runtime[28],_hD_,embed_enfant,param), + _b0v_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_hE_,droit_ouvert_majoration), + _b0u_), + _b0w_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _hF_, + Runtime_ocaml_Runtime[12], + _b0v_), + _b0x_=caml_call2(Runtime_ocaml_Runtime[27],_hG_,_b0w_), + _b0y_= + caml_call2 + (Runtime_ocaml_Runtime[122], + ressources_menage, + plafond_i_i_d521_3), + _b0z_=caml_call2(Runtime_ocaml_Runtime[83],_b0y_,_b0x_); + return caml_call2(Runtime_ocaml_Runtime[29],_hH_,_b0z_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_hI_,[0],_b0t_,_b0s_)}, + _bZ6_= + function(param$0) + {function _b0h_(param) + {var _b0r_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_08$0); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b0r_)} + function _b0i_(param$0) + {var + _b0j_= + caml_call3 + (Runtime_ocaml_Runtime[28],_hJ_,embed_enfant,param), + _b0k_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_hK_,droit_ouvert_majoration), + _b0j_), + _b0l_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _hL_, + Runtime_ocaml_Runtime[12], + _b0k_), + _b0m_=caml_call2(Runtime_ocaml_Runtime[27],_hM_,_b0l_), + _b0n_= + caml_call2 + (Runtime_ocaml_Runtime[117], + ressources_menage, + plafond_i_i_d521_3), + _b0o_= + caml_call2 + (Runtime_ocaml_Runtime[122], + ressources_menage, + plafond_i_d521_3), + _b0p_=caml_call2(Runtime_ocaml_Runtime[83],_b0o_,_b0n_), + _b0q_=caml_call2(Runtime_ocaml_Runtime[83],_b0p_,_b0m_); + return caml_call2(Runtime_ocaml_Runtime[29],_hN_,_b0q_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_hO_,[0],_b0i_,_b0h_)}, + _bZ7_= + [0, + function(param$0) + {function _bZ__(param) + {var _b0g_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16$1); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b0g_)} + function _bZ$_(param$0) + {var + _b0a_= + caml_call3 + (Runtime_ocaml_Runtime[28],_hP_,embed_enfant,param), + _b0b_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_hQ_,droit_ouvert_majoration), + _b0a_), + _b0c_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _hR_, + Runtime_ocaml_Runtime[12], + _b0b_), + _b0d_=caml_call2(Runtime_ocaml_Runtime[27],_hS_,_b0c_), + _b0e_= + caml_call2 + (Runtime_ocaml_Runtime[117], + ressources_menage, + plafond_i_d521_3), + _b0f_=caml_call2(Runtime_ocaml_Runtime[83],_b0e_,_b0d_); + return caml_call2(Runtime_ocaml_Runtime[29],_hT_,_b0f_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_hU_,[0],_bZ$_,_bZ__)}, + _bZ6_, + _bZ5_, + _bZ4_], + _bZ8_=caml_call4(Runtime_ocaml_Runtime[63],_hV_,_bZ7_,_bZ3_,_bZ2_); + return _bZ8_} + catch(_bZ9_) + {_bZ9_ = caml_wrap_exception(_bZ9_); + if(_bZ9_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_hw_]; + throw _bZ9_}} + var + montant_initial_metropole_majo= + caml_call3 + (Runtime_ocaml_Runtime[28],_hW_,Runtime_ocaml_Runtime[10],_bXi_); + try + {var + _bXj_= + function(param) + {function _bZV_(enfant) + {var + _bZZ_= + caml_call3(Runtime_ocaml_Runtime[28],_hY_,embed_enfant,enfant), + _bZ0_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_hZ_,droit_ouvert_forfaitaire), + _bZZ_), + _bZ1_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _h0_, + Runtime_ocaml_Runtime[12], + _bZ0_); + return caml_call2(Runtime_ocaml_Runtime[27],_h1_,_bZ1_)} + var + _bZW_= + caml_call2(Runtime_ocaml_Runtime[90],_bZV_,enfants_a_charge), + _bZX_=caml_call1(Runtime_ocaml_Runtime[68],_bZW_), + _bZY_=caml_call1(Runtime_ocaml_Runtime[69],_bZX_); + return caml_call2 + (Runtime_ocaml_Runtime[104], + montant_verse_forfaitaire_par_, + _bZY_)}, + _bXk_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_h2_,1)}, + _bXl_=caml_call4(Runtime_ocaml_Runtime[63],_h3_,[0],_bXk_,_bXj_)} + catch(_bZU_) + {_bZU_ = caml_wrap_exception(_bZU_); + if(_bZU_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_hX_]; + throw _bZU_} + var + montant_verse_forfaitaire= + caml_call3 + (Runtime_ocaml_Runtime[28],_h4_,Runtime_ocaml_Runtime[13],_bXl_); + try + {var + _bXm_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[93], + montant_initial_base_deuxieme_, + montant_initial_base_troisieme$0)}, + _bXn_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_h6_,1)}, + _bXo_= + [0, + function(param) + {function _bZF_(param){throw Runtime_ocaml_Runtime[2]} + function _bZG_(param){return 0} + function _bZH_(param) + {function _bZP_(param) + {var + _bZS_= + caml_call2 + (Runtime_ocaml_Runtime[93], + montant_initial_base_premier_e, + montant_initial_base_deuxieme_), + _bZT_= + caml_call2 + (Runtime_ocaml_Runtime[93], + _bZS_, + montant_initial_base_troisieme); + return caml_call2 + (Runtime_ocaml_Runtime[93], + _bZT_, + montant_initial_base_quatrieme)} + function _bZQ_(param) + {var + _bZR_= + caml_call2(Runtime_ocaml_Runtime[86],residence,_h7_); + return caml_call2(Runtime_ocaml_Runtime[29],_h8_,_bZR_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_h9_,[0],_bZQ_,_bZP_)} + var + _bZI_= + [0, + function(param) + {function _bZJ_(param){return montant_initial_base_premier_e} + function _bZK_(param) + {var + _bZL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$22), + _bZM_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _bZN_=caml_call2(Runtime_ocaml_Runtime[86],_bZM_,_bZL_), + _bZO_= + caml_call2 + (Runtime_ocaml_Runtime[83], + prestations_familiales_dot_reg, + _bZN_); + return caml_call2(Runtime_ocaml_Runtime[29],_h__,_bZO_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_h$_,[0],_bZK_,_bZJ_)}, + _bZH_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_ia_,_bZI_,_bZG_,_bZF_)}], + _bXp_=caml_call4(Runtime_ocaml_Runtime[63],_ib_,_bXo_,_bXn_,_bXm_)} + catch(_bZE_) + {_bZE_ = caml_wrap_exception(_bZE_); + if(_bZE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_h5_]; + throw _bZE_} + var + montant_initial_base= + caml_call3 + (Runtime_ocaml_Runtime[28],_ic_,Runtime_ocaml_Runtime[13],_bXp_); + function _bXq_(param) + {try + {var + _bYU_= + function(param$0) + {var + _bZB_= + caml_call3(Runtime_ocaml_Runtime[28],_ie_,embed_enfant,param), + _bZC_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _if_, + montant_initial_metropole_majo), + _bZB_), + _bZD_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _ig_, + Runtime_ocaml_Runtime[13], + _bZC_); + return caml_call2(Runtime_ocaml_Runtime[27],_ih_,_bZD_)}, + _bYV_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_ii_,1)}, + _bYW_= + [0, + function(param$0) + {function _bYZ_(param){throw Runtime_ocaml_Runtime[2]} + function _bY0_(param){return 0} + function _bY1_(param$0) + {function _bZl_(param) + {var _bZA_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0567); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_bZA_)} + function _bZm_(param$0) + {var + _bZn_=caml_call3(Runtime_ocaml_Runtime[60],16,0,0), + _bZo_=caml_call2(Runtime_ocaml_Runtime[94],param[4],_bZn_), + _bZp_= + caml_call2(Runtime_ocaml_Runtime[119],_bZo_,date_courante), + _bZq_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$23), + _bZr_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _bZs_=caml_call2(Runtime_ocaml_Runtime[86],_bZr_,_bZq_), + _bZt_=caml_call2(Runtime_ocaml_Runtime[83],_bZs_,_bZp_), + _bZu_= + caml_call2 + (Runtime_ocaml_Runtime[83], + prestations_familiales_dot_reg, + _bZt_), + _bZv_= + caml_call3 + (Runtime_ocaml_Runtime[28],_ij_,embed_enfant,param), + _bZw_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_ik_,droit_ouvert_majoration), + _bZv_), + _bZx_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _il_, + Runtime_ocaml_Runtime[12], + _bZw_), + _bZy_=caml_call2(Runtime_ocaml_Runtime[27],_im_,_bZx_), + _bZz_=caml_call2(Runtime_ocaml_Runtime[83],_bZy_,_bZu_); + return caml_call2(Runtime_ocaml_Runtime[29],_in_,_bZz_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_io_,[0],_bZm_,_bZl_)} + var + _bY2_= + [0, + function(param$0) + {function _bY3_(param) + {var _bZk_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0369); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_bZk_)} + function _bY4_(param$0) + {var + _bY5_=caml_call3(Runtime_ocaml_Runtime[60],16,0,0), + _bY6_=caml_call2(Runtime_ocaml_Runtime[94],param[4],_bY5_), + _bY7_= + caml_call2(Runtime_ocaml_Runtime[124],_bY6_,date_courante), + _bY8_=caml_call3(Runtime_ocaml_Runtime[60],11,0,0), + _bY9_=caml_call2(Runtime_ocaml_Runtime[94],param[4],_bY8_), + _bY__= + caml_call2(Runtime_ocaml_Runtime[119],_bY9_,date_courante), + _bY$_=caml_call2(Runtime_ocaml_Runtime[83],_bY__,_bY7_), + _bZa_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$24), + _bZb_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _bZc_=caml_call2(Runtime_ocaml_Runtime[86],_bZb_,_bZa_), + _bZd_=caml_call2(Runtime_ocaml_Runtime[83],_bZc_,_bY$_), + _bZe_= + caml_call2 + (Runtime_ocaml_Runtime[83], + prestations_familiales_dot_reg, + _bZd_), + _bZf_= + caml_call3 + (Runtime_ocaml_Runtime[28],_ip_,embed_enfant,param), + _bZg_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_iq_,droit_ouvert_majoration), + _bZf_), + _bZh_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _ir_, + Runtime_ocaml_Runtime[12], + _bZg_), + _bZi_=caml_call2(Runtime_ocaml_Runtime[27],_is_,_bZh_), + _bZj_=caml_call2(Runtime_ocaml_Runtime[83],_bZi_,_bZe_); + return caml_call2(Runtime_ocaml_Runtime[29],_it_,_bZj_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_iu_,[0],_bY4_,_bY3_)}, + _bY1_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_iv_,_bY2_,_bY0_,_bYZ_)}], + _bYX_=caml_call4(Runtime_ocaml_Runtime[63],_iw_,_bYW_,_bYV_,_bYU_); + return _bYX_} + catch(_bYY_) + {_bYY_ = caml_wrap_exception(_bYY_); + if(_bYY_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_id_]; + throw _bYY_}} + var + montant_initial_majoration= + caml_call3 + (Runtime_ocaml_Runtime[28],_ix_,Runtime_ocaml_Runtime[10],_bXq_); + try + {var + _bXr_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$60)}, + _bXs_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iz_,1)}, + _bXt_= + [0, + function(param) + {function _bYm_(param){throw Runtime_ocaml_Runtime[2]} + function _bYn_(param){return 0} + function _bYo_(param) + {function _bYF_(param) + {var + _bYN_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$5), + _bYO_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$25), + _bYP_=caml_call2(Runtime_ocaml_Runtime[107],_bYO_,_bYN_), + _bYQ_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$6), + _bYR_= + caml_call2 + (Runtime_ocaml_Runtime[104],montant_verse_forfaitaire,_bYQ_), + _bYS_= + caml_call2 + (Runtime_ocaml_Runtime[93],plafond_i_i_d521_3,_bYR_), + _bYT_= + caml_call2 + (Runtime_ocaml_Runtime[98],_bYS_,ressources_menage); + return caml_call2(Runtime_ocaml_Runtime[104],_bYT_,_bYP_)} + function _bYG_(param) + {var + _bYH_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$7), + _bYI_= + caml_call2 + (Runtime_ocaml_Runtime[104],montant_verse_forfaitaire,_bYH_), + _bYJ_= + caml_call2 + (Runtime_ocaml_Runtime[93],plafond_i_i_d521_3,_bYI_), + _bYK_= + caml_call2 + (Runtime_ocaml_Runtime[117],ressources_menage,_bYJ_), + _bYL_= + caml_call2 + (Runtime_ocaml_Runtime[122], + ressources_menage, + plafond_i_i_d521_3), + _bYM_=caml_call2(Runtime_ocaml_Runtime[83],_bYL_,_bYK_); + return caml_call2(Runtime_ocaml_Runtime[29],_iA_,_bYM_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_iB_,[0],_bYG_,_bYF_)} + var + _bYp_= + [0, + function(param) + {function _bYq_(param) + {var + _bYy_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$8), + _bYz_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$26), + _bYA_=caml_call2(Runtime_ocaml_Runtime[107],_bYz_,_bYy_), + _bYB_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$9), + _bYC_= + caml_call2 + (Runtime_ocaml_Runtime[104],montant_verse_forfaitaire,_bYB_), + _bYD_= + caml_call2(Runtime_ocaml_Runtime[93],plafond_i_d521_3,_bYC_), + _bYE_= + caml_call2 + (Runtime_ocaml_Runtime[98],_bYD_,ressources_menage); + return caml_call2(Runtime_ocaml_Runtime[104],_bYE_,_bYA_)} + function _bYr_(param) + {var + _bYs_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$10), + _bYt_= + caml_call2 + (Runtime_ocaml_Runtime[104],montant_verse_forfaitaire,_bYs_), + _bYu_= + caml_call2(Runtime_ocaml_Runtime[93],plafond_i_d521_3,_bYt_), + _bYv_= + caml_call2 + (Runtime_ocaml_Runtime[117],ressources_menage,_bYu_), + _bYw_= + caml_call2 + (Runtime_ocaml_Runtime[122], + ressources_menage, + plafond_i_d521_3), + _bYx_=caml_call2(Runtime_ocaml_Runtime[83],_bYw_,_bYv_); + return caml_call2(Runtime_ocaml_Runtime[29],_iC_,_bYx_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_iD_,[0],_bYr_,_bYq_)}, + _bYo_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_iE_,_bYp_,_bYn_,_bYm_)}], + _bXu_=caml_call4(Runtime_ocaml_Runtime[63],_iF_,_bXt_,_bXs_,_bXr_)} + catch(_bYl_) + {_bYl_ = caml_wrap_exception(_bYl_); + if(_bYl_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_iy_]; + throw _bYl_} + var + montant_verse_complement_pour_= + caml_call3 + (Runtime_ocaml_Runtime[28],_iG_,Runtime_ocaml_Runtime[13],_bXu_); + try + {var + _bXv_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[104], + montant_initial_base, + rapport_enfants_total_moyen)}, + _bXw_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iI_,1)}, + _bXx_=caml_call4(Runtime_ocaml_Runtime[63],_iJ_,[0],_bXw_,_bXv_)} + catch(_bYk_) + {_bYk_ = caml_wrap_exception(_bYk_); + if(_bYk_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_iH_]; + throw _bYk_} + var + montant_avec_garde_alternee_ba= + caml_call3 + (Runtime_ocaml_Runtime[28],_iK_,Runtime_ocaml_Runtime[13],_bXx_); + function _bXy_(param) + {try + {var + _bX__= + function(param$0) + {var + _bYc_= + caml_call3(Runtime_ocaml_Runtime[28],_iM_,embed_enfant,param), + _bYd_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_iN_,prise_en_compte), + _bYc_), + _bYe_= + caml_call3 + (Runtime_ocaml_Runtime[28],_iO_,embed_prise_en_compte,_bYd_), + match=caml_call2(Runtime_ocaml_Runtime[27],_iP_,_bYe_); + switch(match[0]) + {case 0: + var _bYf_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$27); + break; + case 1: + var _bYf_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$0); + break; + default: + var _bYf_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$61)} + var + _bYg_= + caml_call3(Runtime_ocaml_Runtime[28],_iQ_,embed_enfant,param), + _bYh_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_iR_,montant_initial_majoration), + _bYg_), + _bYi_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _iS_, + Runtime_ocaml_Runtime[13], + _bYh_), + _bYj_=caml_call2(Runtime_ocaml_Runtime[27],_iT_,_bYi_); + return caml_call2(Runtime_ocaml_Runtime[104],_bYj_,_bYf_)}, + _bX$_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_iU_,1)}, + _bYa_=caml_call4(Runtime_ocaml_Runtime[63],_iV_,[0],_bX$_,_bX__); + return _bYa_} + catch(_bYb_) + {_bYb_ = caml_wrap_exception(_bYb_); + if(_bYb_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_iL_]; + throw _bYb_}} + var + montant_avec_garde_alternee_ma= + caml_call3 + (Runtime_ocaml_Runtime[28],_iW_,Runtime_ocaml_Runtime[10],_bXy_); + try + {var + _bXz_= + function(param) + {return droit_ouvert_base + ?montant_avec_garde_alternee_ba + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$62)}, + _bXA_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iY_,1)}, + _bXB_=caml_call4(Runtime_ocaml_Runtime[63],_iZ_,[0],_bXA_,_bXz_)} + catch(_bX9_) + {_bX9_ = caml_wrap_exception(_bX9_); + if(_bX9_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_iX_]; + throw _bX9_} + var + montant_verse_base= + caml_call3 + (Runtime_ocaml_Runtime[28],_i0_,Runtime_ocaml_Runtime[13],_bXB_); + try + {var + _bXC_= + function(param) + {if(droit_ouvert_base) + {var + _bX2_= + function(enfant) + {var + _bX6_= + caml_call3 + (Runtime_ocaml_Runtime[28],_i2_,embed_enfant,enfant), + _bX7_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _i3_, + montant_avec_garde_alternee_ma), + _bX6_), + _bX8_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _i4_, + Runtime_ocaml_Runtime[13], + _bX7_); + return caml_call2(Runtime_ocaml_Runtime[27],_i5_,_bX8_)}, + _bX3_= + caml_call2(Runtime_ocaml_Runtime[87],_bX2_,enfants_a_charge), + _bX4_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$63), + _bX5_= + function(sum1,sum2) + {return caml_call2(Runtime_ocaml_Runtime[93],sum1,sum2)}; + return caml_call3(Runtime_ocaml_Runtime[88],_bX5_,_bX4_,_bX3_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$64)}, + _bXD_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_i6_,1)}, + _bXE_=caml_call4(Runtime_ocaml_Runtime[63],_i7_,[0],_bXD_,_bXC_)} + catch(_bX1_) + {_bX1_ = caml_wrap_exception(_bX1_); + if(_bX1_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_i1_]; + throw _bX1_} + var + montant_verse_majoration= + caml_call3 + (Runtime_ocaml_Runtime[28],_i8_,Runtime_ocaml_Runtime[13],_bXE_); + try + {var + _bXF_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[93], + montant_verse_base, + montant_verse_majoration)}, + _bXG_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_i__,1)}, + _bXH_=caml_call4(Runtime_ocaml_Runtime[63],_i$_,[0],_bXG_,_bXF_)} + catch(_bX0_) + {_bX0_ = caml_wrap_exception(_bX0_); + if(_bX0_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_i9_]; + throw _bX0_} + var + montant_base_complement_pour_b= + caml_call3 + (Runtime_ocaml_Runtime[28],_ja_,Runtime_ocaml_Runtime[13],_bXH_); + try + {var + _bXI_= + function(param) + {if(droit_ouvert_complement) + {var + _bXX_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _jc_, + Runtime_ocaml_Runtime[13], + montant_base_complement_pour_b), + _bXY_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_jd_,complement_degressif), + _bXX_), + _bXZ_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _je_, + Runtime_ocaml_Runtime[13], + _bXY_); + return caml_call2(Runtime_ocaml_Runtime[27],_jf_,_bXZ_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$65)}, + _bXJ_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jg_,1)}, + _bXK_=caml_call4(Runtime_ocaml_Runtime[63],_jh_,[0],_bXJ_,_bXI_)} + catch(_bXW_) + {_bXW_ = caml_wrap_exception(_bXW_); + if(_bXW_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jb_]; + throw _bXW_} + var + montant_verse_complement_pour_$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_ji_,Runtime_ocaml_Runtime[13],_bXK_); + try + {var + _bXL_= + function(param) + {if(droit_ouvert_base) + {var + _bXT_= + caml_call2 + (Runtime_ocaml_Runtime[93], + montant_verse_base, + montant_verse_majoration), + _bXU_= + caml_call2 + (Runtime_ocaml_Runtime[93],_bXT_,montant_verse_forfaitaire), + _bXV_= + caml_call2 + (Runtime_ocaml_Runtime[93], + _bXU_, + montant_verse_complement_pour_$0); + return caml_call2 + (Runtime_ocaml_Runtime[93], + _bXV_, + montant_verse_complement_pour_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$66)}, + _bXM_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jk_,1)}, + _bXN_=caml_call4(Runtime_ocaml_Runtime[63],_jl_,[0],_bXM_,_bXL_)} + catch(_bXS_) + {_bXS_ = caml_wrap_exception(_bXS_); + if(_bXS_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jj_]; + throw _bXS_} + var + montant_verse= + caml_call3 + (Runtime_ocaml_Runtime[28],_jm_,Runtime_ocaml_Runtime[13],_bXN_); + try + {var + _bXO_= + caml_call1(Runtime_ocaml_Runtime[67],personne_charge_effective_perm), + _bXP_= + caml_call2 + (Runtime_ocaml_Runtime[83],_bXO_,personne_charge_effective_perm$0), + _bXQ_= + caml_call2 + (Runtime_ocaml_Runtime[84],personne_charge_effective_perm,_bXP_)} + catch(_bXR_) + {_bXR_ = caml_wrap_exception(_bXR_); + if(_bXR_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jn_]; + throw _bXR_} + if(_bXQ_)return [0,montant_verse]; + throw [0,Runtime_ocaml_Runtime[3],_jo_]} + function interface_allocations_familial(interface_allocations_familial) + {var + i_date_courante=interface_allocations_familial[1], + i_enfants=interface_allocations_familial[2], + i_ressources_menage=interface_allocations_familial[3], + i_residence=interface_allocations_familial[4], + i_personne_charge_effective_pe=interface_allocations_familial[5], + i_personne_charge_effective_pe$0=interface_allocations_familial[6], + i_avait_enfant_a_charge_avant_=interface_allocations_familial[7]; + try + {var + _bUZ_= + function(param) + {function _bVJ_(enfant) + {var + _bVK_=enfant[6], + _bVL_=enfant[5], + _bVM_=enfant[4], + _bVN_=enfant[3], + _bVO_=enfant[2], + _bVP_=caml_call3(Runtime_ocaml_Runtime[60],3,0,0), + _bVQ_=caml_call2(Runtime_ocaml_Runtime[94],enfant[3],_bVP_); + if(caml_call2(Runtime_ocaml_Runtime[129],_bVQ_,i_date_courante)) + var _bVR_=_jq_; + else + var + _bVS_=caml_call3(Runtime_ocaml_Runtime[60],16,0,0), + _bVT_=caml_call2(Runtime_ocaml_Runtime[94],enfant[3],_bVS_), + _bVR_= + caml_call2(Runtime_ocaml_Runtime[129],_bVT_,i_date_courante) + ?_jr_ + :_js_; + return [0,enfant[1],_bVR_,_bVO_,_bVN_,_bVM_,_bVL_,_bVK_]} + return caml_call2(Runtime_ocaml_Runtime[87],_bVJ_,i_enfants)}, + _bU0_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jt_,1)}, + _bU1_=caml_call4(Runtime_ocaml_Runtime[63],_ju_,[0],_bU0_,_bUZ_)} + catch(_bVI_) + {_bVI_ = caml_wrap_exception(_bVI_); + if(_bVI_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jp_]; + throw _bVI_} + var + _bU2_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant), + enfants_a_charge=caml_call3(Runtime_ocaml_Runtime[28],_jv_,_bU2_,_bU1_); + try + {var + _bU3_=function(param){return 0}, + _bU4_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jx_,1)}, + _bU5_= + [0, + function(param) + {function _bVG_(param){return 1} + function _bVH_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29], + _jy_, + i_personne_charge_effective_pe)} + return caml_call4(Runtime_ocaml_Runtime[63],_jz_,[0],_bVH_,_bVG_)}], + _bU6_=caml_call4(Runtime_ocaml_Runtime[63],_jA_,_bU5_,_bU4_,_bU3_), + allocations_familiales_dot_per= + caml_call3 + (Runtime_ocaml_Runtime[28],_jB_,Runtime_ocaml_Runtime[12],_bU6_)} + catch(_bVF_) + {_bVF_ = caml_wrap_exception(_bVF_); + if(_bVF_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jw_]; + throw _bVF_} + try + {var + _bU7_=function(param){return 0}, + _bU8_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jD_,1)}, + _bU9_= + [0, + function(param) + {function _bVD_(param){return 1} + function _bVE_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29], + _jE_, + i_personne_charge_effective_pe$0)} + return caml_call4(Runtime_ocaml_Runtime[63],_jF_,[0],_bVE_,_bVD_)}], + _bU__=caml_call4(Runtime_ocaml_Runtime[63],_jG_,_bU9_,_bU8_,_bU7_), + allocations_familiales_dot_per$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_jH_,Runtime_ocaml_Runtime[12],_bU__)} + catch(_bVC_) + {_bVC_ = caml_wrap_exception(_bVC_); + if(_bVC_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jC_]; + throw _bVC_} + try + {var + _bU$_=function(param){return i_ressources_menage}, + _bVa_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jJ_,1)}, + _bVb_=caml_call4(Runtime_ocaml_Runtime[63],_jK_,[0],_bVa_,_bU$_), + allocations_familiales_dot_res= + caml_call3 + (Runtime_ocaml_Runtime[28],_jL_,Runtime_ocaml_Runtime[13],_bVb_)} + catch(_bVB_) + {_bVB_ = caml_wrap_exception(_bVB_); + if(_bVB_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jI_]; + throw _bVB_} + try + {var + _bVc_=function(param){return i_residence}, + _bVd_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jN_,1)}, + _bVe_=caml_call4(Runtime_ocaml_Runtime[63],_jO_,[0],_bVd_,_bVc_), + allocations_familiales_dot_res$0= + caml_call3(Runtime_ocaml_Runtime[28],_jP_,embed_collectivite,_bVe_)} + catch(_bVA_) + {_bVA_ = caml_wrap_exception(_bVA_); + if(_bVA_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jM_]; + throw _bVA_} + try + {var + _bVf_=function(param){return i_date_courante}, + _bVg_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jR_,1)}, + _bVh_=caml_call4(Runtime_ocaml_Runtime[63],_jS_,[0],_bVg_,_bVf_), + allocations_familiales_dot_dat= + caml_call3 + (Runtime_ocaml_Runtime[28],_jT_,Runtime_ocaml_Runtime[16],_bVh_)} + catch(_bVz_) + {_bVz_ = caml_wrap_exception(_bVz_); + if(_bVz_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jQ_]; + throw _bVz_} + try + {var + _bVi_=function(param){return enfants_a_charge}, + _bVj_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jV_,1)}, + _bVk_=caml_call4(Runtime_ocaml_Runtime[63],_jW_,[0],_bVj_,_bVi_), + _bVl_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant), + allocations_familiales_dot_enf= + caml_call3(Runtime_ocaml_Runtime[28],_jX_,_bVl_,_bVk_)} + catch(_bVy_) + {_bVy_ = caml_wrap_exception(_bVy_); + if(_bVy_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jU_]; + throw _bVy_} + try + {var + _bVm_=function(param){return 0}, + _bVn_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jZ_,1)}, + _bVo_= + [0, + function(param) + {function _bVw_(param){return 1} + function _bVx_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29], + _j0_, + i_avait_enfant_a_charge_avant_)} + return caml_call4(Runtime_ocaml_Runtime[63],_j1_,[0],_bVx_,_bVw_)}], + _bVp_=caml_call4(Runtime_ocaml_Runtime[63],_j2_,_bVo_,_bVn_,_bVm_), + allocations_familiales_dot_ava= + caml_call3 + (Runtime_ocaml_Runtime[28],_j3_,Runtime_ocaml_Runtime[12],_bVp_)} + catch(_bVv_) + {_bVv_ = caml_wrap_exception(_bVv_); + if(_bVv_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jY_]; + throw _bVv_} + var + _bVq_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_j4_,allocations_familiales), + [0, + allocations_familiales_dot_per, + allocations_familiales_dot_per$0, + allocations_familiales_dot_res, + allocations_familiales_dot_res$0, + allocations_familiales_dot_dat, + allocations_familiales_dot_enf, + allocations_familiales_dot_ava]), + result=caml_call2(Runtime_ocaml_Runtime[27],_j5_,_bVq_), + allocations_familiales_dot_mon=result[1]; + try + {var + _bVr_=function(param){return allocations_familiales_dot_mon}, + _bVs_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_j7_,1)}, + _bVt_=caml_call4(Runtime_ocaml_Runtime[63],_j8_,[0],_bVs_,_bVr_)} + catch(_bVu_) + {_bVu_ = caml_wrap_exception(_bVu_); + if(_bVu_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_j6_]; + throw _bVu_} + var + i_montant_verse= + caml_call3 + (Runtime_ocaml_Runtime[28],_j9_,Runtime_ocaml_Runtime[13],_bVt_); + return [0,i_montant_verse]} + var + Law_source_Allocations_familia= + [0, + PriseEnCharge, + embed_prise_en_charge, + SituationObligationScolaire, + embed_situation_obligation_sco, + PriseEnCompte, + embed_prise_en_compte, + VersementAllocations, + embed_versement_allocations, + ElementPrestationsFamiliales, + embed_element_prestations_fami, + Collectivite, + embed_collectivite, + AllocationFamilialesAvril2008, + embed_allocation_familiales_av, + AllocationsFamiliales, + embed_allocations_familiales, + Smic, + embed_smic, + BaseMensuelleAllocationsFamili, + embed_base_mensuelle_allocatio, + InterfaceAllocationsFamiliales, + embed_interface_allocations_fa, + EnfantEntree, + embed_enfant_entree, + Enfant, + embed_enfant, + EnfantLePlusAge, + embed_enfant_le_plus_age, + PrestationsFamiliales, + embed_prestations_familiales, + PrestationsFamilialesIn, + embed_prestations_familiales_i, + AllocationFamilialesAvril2008I, + embed_allocation_familiales_av$0, + EnfantLePlusAgeIn, + embed_enfant_le_plus_age_in, + AllocationsFamilialesIn, + embed_allocations_familiales_i, + SmicIn, + embed_smic_in, + BaseMensuelleAllocationsFamili$0, + embed_base_mensuelle_allocatio$0, + InterfaceAllocationsFamiliales$0, + embed_interface_allocations_fa$0, + allocation_familiales_avril200, + enfant_le_plus_age, + smic, + base_mensuelle_allocations_fam, + prestations_familiales, + allocations_familiales, + interface_allocations_familial]; + caml_register_global + (8568, + Law_source_Allocations_familia, + "Law_source__Allocations_familiales"); + function prise_en_charge_to_jsoo(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"GardeAlterneePartageAllocations","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"GardeAlterneeAllocataireUnique","payload":arg$0}; + case 2: + var arg$1=param[1]; + return {"kind":"EffectiveEtPermanente","payload":arg$1}; + case 3: + var arg$2=param[1]; + return {"kind":"ServicesSociauxAllocationVerseeALaFamille", + "payload":arg$2}; + default: + var arg$3=param[1]; + return {"kind":"ServicesSociauxAllocationVerseeAuxServicesSociaux", + "payload":arg$3}}} + function prise_en_charge_of_jsoo(prise_en_charge) + {var cons=caml_string_of_jsstring(prise_en_charge.kind); + if(caml_string_notequal(cons,cst_EffectiveEtPermanente$0)) + {if(caml_string_notequal(cons,cst_GardeAlterneeAllocataireUn)) + {if(caml_string_notequal(cons,cst_GardeAlterneePartageAlloca)) + {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$1)) + {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$2)) + {var _bUY_=caml_call2(Stdlib_Printf[4],_j__,cons); + return caml_call1(Stdlib[2],_bUY_)} + return _j$_} + return _ka_} + return _kb_} + return _kc_} + return _kd_} + function situation_obligation_scolaire_(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"Avant","payload":arg}; + case 1:var arg$0=param[1];return {"kind":"Pendant","payload":arg$0}; + default:var arg$1=param[1];return {"kind":"Apres","payload":arg$1}}} + function situation_obligation_scolaire_$0(situation_obligation_scolaire) + {var cons=caml_string_of_jsstring(situation_obligation_scolaire.kind); + if(caml_string_notequal(cons,cst_Apres)) + {if(caml_string_notequal(cons,cst_Avant$0)) + {if(caml_string_notequal(cons,cst_Pendant$0)) + {var _bUX_=caml_call2(Stdlib_Printf[4],_ke_,cons); + return caml_call1(Stdlib[2],_bUX_)} + return _kf_} + return _kg_} + return _kh_} + function prise_en_compte_to_jsoo(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"Complete","payload":arg}; + case 1:var arg$0=param[1];return {"kind":"Partagee","payload":arg$0}; + default:var arg$1=param[1];return {"kind":"Zero","payload":arg$1}}} + function prise_en_compte_of_jsoo(prise_en_compte) + {var cons=caml_string_of_jsstring(prise_en_compte.kind); + if(caml_string_notequal(cons,cst_Complete)) + {if(caml_string_notequal(cons,cst_Partagee)) + {if(caml_string_notequal(cons,cst_Zero)) + {var _bUW_=caml_call2(Stdlib_Printf[4],_ki_,cons); + return caml_call1(Stdlib[2],_bUW_)} + return _kj_} + return _kk_} + return _kl_} + function versement_allocations_to_jsoo(param) + {if(0 === param[0]) + {var arg=param[1];return {"kind":"Normal","payload":arg}} + var arg$0=param[1]; + return {"kind":"AllocationVerseeAuxServicesSociaux","payload":arg$0}} + function versement_allocations_of_jsoo(versement_allocations) + {var cons=caml_string_of_jsstring(versement_allocations.kind); + if(caml_string_notequal(cons,cst_AllocationVerseeAuxService)) + {if(caml_string_notequal(cons,cst_Normal$0)) + {var _bUV_=caml_call2(Stdlib_Printf[4],_km_,cons); + return caml_call1(Stdlib[2],_bUV_)} + return _kn_} + return _ko_} + function element_prestations_familiales(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"PrestationAccueilJeuneEnfant","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"AllocationsFamiliales","payload":arg$0}; + case 2: + var arg$1=param[1]; + return {"kind":"ComplementFamilial","payload":arg$1}; + case 3: + var arg$2=param[1]; + return {"kind":"AllocationLogement","payload":arg$2}; + case 4: + var arg$3=param[1]; + return {"kind":"AllocationEducationEnfantHandicape","payload":arg$3}; + case 5: + var arg$4=param[1]; + return {"kind":"AllocationSoutienFamilial","payload":arg$4}; + case 6: + var arg$5=param[1]; + return {"kind":"AllocationRentreeScolaire","payload":arg$5}; + default: + var arg$6=param[1]; + return {"kind":"AllocationJournalierePresenceParentale", + "payload":arg$6}}} + function element_prestations_familiales$0(element_prestations_familiales) + {var cons=caml_string_of_jsstring(element_prestations_familiales.kind); + if(caml_string_notequal(cons,cst_AllocationEducationEnfantH)) + {if(caml_string_notequal(cons,cst_AllocationJournalierePrese)) + {if(caml_string_notequal(cons,cst_AllocationLogement$0)) + {if(caml_string_notequal(cons,cst_AllocationRentreeScolaire)) + {if(caml_string_notequal(cons,cst_AllocationSoutienFamilial$0)) + {if(caml_string_notequal(cons,cst_AllocationsFamiliales$0)) + {if(caml_string_notequal(cons,cst_ComplementFamilial)) + {if + (caml_string_notequal(cons,cst_PrestationAccueilJeuneEnfa$0)) + {var _bUU_=caml_call2(Stdlib_Printf[4],_kp_,cons); + return caml_call1(Stdlib[2],_bUU_)} + return _kq_} + return _kr_} + return _ks_} + return _kt_} + return _ku_} + return _kv_} + return _kw_} + return _kx_} + function collectivite_to_jsoo(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"Guadeloupe","payload":arg}; + case 1:var arg$0=param[1];return {"kind":"Guyane","payload":arg$0}; + case 2: + var arg$1=param[1];return {"kind":"Martinique","payload":arg$1}; + case 3:var arg$2=param[1];return {"kind":"LaReunion","payload":arg$2}; + case 4: + var arg$3=param[1];return {"kind":"SaintBarthelemy","payload":arg$3}; + case 5: + var arg$4=param[1];return {"kind":"SaintMartin","payload":arg$4}; + case 6:var arg$5=param[1];return {"kind":"Metropole","payload":arg$5}; + case 7: + var arg$6=param[1]; + return {"kind":"SaintPierreEtMiquelon","payload":arg$6}; + default:var arg$7=param[1];return {"kind":"Mayotte","payload":arg$7}}} + function collectivite_of_jsoo(collectivite) + {var cons=caml_string_of_jsstring(collectivite.kind); + if(caml_string_notequal(cons,cst_Guadeloupe$0)) + {if(caml_string_notequal(cons,cst_Guyane$0)) + {if(caml_string_notequal(cons,cst_LaReunion)) + {if(caml_string_notequal(cons,cst_Martinique$0)) + {if(caml_string_notequal(cons,cst_Mayotte$0)) + {if(caml_string_notequal(cons,cst_Metropole)) + {if(caml_string_notequal(cons,cst_SaintBarthelemy)) + {if(caml_string_notequal(cons,cst_SaintMartin$0)) + {if(caml_string_notequal(cons,cst_SaintPierreEtMiquelon$0)) + {var _bUT_=caml_call2(Stdlib_Printf[4],_ky_,cons); + return caml_call1(Stdlib[2],_bUT_)} + return _kz_} + return _kA_} + return _kB_} + return _kC_} + return _kD_} + return _kE_} + return _kF_} + return _kG_} + return _kH_} + function allocation_familiales_avril200$0(allocation_familiales_avril200) + {var + t66= + caml_call1(Runtime_jsoo_Runtime[3],allocation_familiales_avril200[1]); + return {"ageMinimumAlinea1L5213":t66}} + function allocation_familiales_avril200$1(allocation_familiales_avril200) + {return [0, + caml_call1 + (Runtime_jsoo_Runtime[2], + allocation_familiales_avril200.ageMinimumAlinea1L5213)]} + function allocations_familiales_to_jsoo(allocations_familiales) + {var t68=caml_call1(Runtime_ocaml_Runtime[35],allocations_familiales[1]); + return {"montantVerse":t68}} + function allocations_familiales_of_jsoo(allocations_familiales) + {var + _bUS_= + caml_call1 + (Runtime_ocaml_Runtime[42],allocations_familiales.montantVerse); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_bUS_)]} + function smic_to_jsoo(smic) + {var t70=caml_call1(Runtime_ocaml_Runtime[35],smic[1]); + return {"brutHoraire":t70}} + function smic_of_jsoo(smic) + {var _bUR_=caml_call1(Runtime_ocaml_Runtime[42],smic.brutHoraire); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_bUR_)]} + function base_mensuelle_allocations_fam$0(base_mensuelle_allocations_fam) + {var + t72= + caml_call1 + (Runtime_ocaml_Runtime[35],base_mensuelle_allocations_fam[1]); + return {"montant":t72}} + function base_mensuelle_allocations_fam$1(base_mensuelle_allocations_fam) + {var + _bUQ_= + caml_call1 + (Runtime_ocaml_Runtime[42],base_mensuelle_allocations_fam.montant); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_bUQ_)]} + function interface_allocations_familial$0(interface_allocations_familial) + {var + t74= + caml_call1 + (Runtime_ocaml_Runtime[35],interface_allocations_familial[1]); + return {"iMontantVerse":t74}} + function interface_allocations_familial$1(interface_allocations_familial) + {var + _bUP_= + caml_call1 + (Runtime_ocaml_Runtime[42], + interface_allocations_familial.iMontantVerse); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_bUP_)]} + function enfant_entree_to_jsoo(enfant_entree) + {var + t81=! ! enfant_entree[6], + t80=! ! enfant_entree[5], + t79=prise_en_charge_to_jsoo(enfant_entree[4]), + t78=caml_call1(Runtime_jsoo_Runtime[5],enfant_entree[3]), + t77=caml_call1(Runtime_ocaml_Runtime[35],enfant_entree[2]), + t76=caml_call1(Runtime_ocaml_Runtime[48],enfant_entree[1]); + return {"dIdentifiant":t76, + "dRemunerationMensuelle":t77, + "dDateDeNaissance":t78, + "dPriseEnCharge":t79, + "dADejaOuvertDroitAuxAllocationsFamiliales":t80, + "dBeneficieTitrePersonnelAidePersonnelleLogement":t81}} + function enfant_entree_of_jsoo(enfant_entree) + {var + _bUJ_=enfant_entree.dBeneficieTitrePersonnelAidePersonnelleLogement | 0, + _bUK_=enfant_entree.dADejaOuvertDroitAuxAllocationsFamiliales | 0, + _bUL_=prise_en_charge_of_jsoo(enfant_entree.dPriseEnCharge), + _bUM_= + caml_call1(Runtime_jsoo_Runtime[4],enfant_entree.dDateDeNaissance), + _bUN_= + caml_call1 + (Runtime_ocaml_Runtime[42],enfant_entree.dRemunerationMensuelle), + _bUO_=caml_call1(Runtime_ocaml_Runtime[33],_bUN_); + return [0, + caml_call1(Runtime_ocaml_Runtime[49],enfant_entree.dIdentifiant), + _bUO_, + _bUM_, + _bUL_, + _bUK_, + _bUJ_]} + function enfant_to_jsoo(enfant) + {var + t94=! ! enfant[7], + t93=! ! enfant[6], + t92=prise_en_charge_to_jsoo(enfant[5]), + t91=caml_call1(Runtime_jsoo_Runtime[5],enfant[4]), + t90=caml_call1(Runtime_ocaml_Runtime[35],enfant[3]), + t89=situation_obligation_scolaire_(enfant[2]), + t88=caml_call1(Runtime_ocaml_Runtime[48],enfant[1]); + return {"identifiant":t88, + "obligationScolaire":t89, + "remunerationMensuelle":t90, + "dateDeNaissance":t91, + "priseEnCharge":t92, + "aDejaOuvertDroitAuxAllocationsFamiliales":t93, + "beneficieTitrePersonnelAidePersonnelleLogement":t94}} + function enfant_of_jsoo(enfant) + {var + _bUC_=enfant.beneficieTitrePersonnelAidePersonnelleLogement | 0, + _bUD_=enfant.aDejaOuvertDroitAuxAllocationsFamiliales | 0, + _bUE_=prise_en_charge_of_jsoo(enfant.priseEnCharge), + _bUF_=caml_call1(Runtime_jsoo_Runtime[4],enfant.dateDeNaissance), + _bUG_= + caml_call1(Runtime_ocaml_Runtime[42],enfant.remunerationMensuelle), + _bUH_=caml_call1(Runtime_ocaml_Runtime[33],_bUG_), + _bUI_=situation_obligation_scolaire_$0(enfant.obligationScolaire); + return [0, + caml_call1(Runtime_ocaml_Runtime[49],enfant.identifiant), + _bUI_, + _bUH_, + _bUF_, + _bUE_, + _bUD_, + _bUC_]} + function enfant_le_plus_age_to_jsoo(enfant_le_plus_age) + {var t102=enfant_to_jsoo(enfant_le_plus_age[1]); + return {"lePlusAge":t102}} + function enfant_le_plus_age_of_jsoo(enfant_le_plus_age) + {return [0,enfant_of_jsoo(enfant_le_plus_age.lePlusAge)]} + function prestations_familiales_to_jsoo(prestations_familiales) + {var + t107=! ! prestations_familiales[4], + t106=caml_call1(Runtime_jsoo_Runtime[3],prestations_familiales[3]); + function t105(param) + {return caml_js_wrap_meth_callback + (function(input) + {var _bUB_=enfant_of_jsoo(input); + return ! ! caml_call1(prestations_familiales[2],_bUB_)})} + function t104(param) + {return caml_js_wrap_meth_callback + (function(input) + {var _bUA_=enfant_of_jsoo(input); + return ! ! caml_call1(prestations_familiales[1],_bUA_)})} + return {"droitOuvert":caml_js_wrap_meth_callback(t104), + "conditionsHorsAge":caml_js_wrap_meth_callback(t105), + "ageL51232":t106, + "regimeOutreMerL7511":t107}} + function prestations_familiales_of_jsoo(prestations_familiales) + {var + _bUx_=prestations_familiales.regimeOutreMerL7511 | 0, + _bUy_= + caml_call1(Runtime_jsoo_Runtime[2],prestations_familiales.ageL51232), + _bUz_=caml_call1(Stdlib[2],cst_The_function_conditions_ho); + return [0, + caml_call1(Stdlib[2],cst_The_function_droit_ouvert_), + _bUz_, + _bUy_, + _bUx_]} + function prestations_familiales_in_to_j(prestations_familiales_in) + {var + t112=collectivite_to_jsoo(prestations_familiales_in[3]), + t111=element_prestations_familiales(prestations_familiales_in[2]), + t110=caml_call1(Runtime_jsoo_Runtime[5],prestations_familiales_in[1]); + return {"dateCouranteIn":t110, + "prestationCouranteIn":t111, + "residenceIn":t112}} + function prestations_familiales_in_of_j(prestations_familiales_in) + {var + _bUv_=collectivite_of_jsoo(prestations_familiales_in.residenceIn), + _bUw_= + element_prestations_familiales$0 + (prestations_familiales_in.prestationCouranteIn); + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + prestations_familiales_in.dateCouranteIn), + _bUw_, + _bUv_]} + function allocation_familiales_avril200$2(param){return {}} + function allocation_familiales_avril200$3(param){return 0} + function enfant_le_plus_age_in_to_jsoo(enfant_le_plus_age_in) + {var _bUt_=enfant_le_plus_age_in[1]; + function _bUu_(x){return enfant_to_jsoo(x)} + var t116=caml_js_from_array(caml_call2(Stdlib_Array[15],_bUu_,_bUt_)); + return {"enfantsIn":t116}} + function enfant_le_plus_age_in_of_jsoo(enfant_le_plus_age_in) + {var _bUr_=caml_js_to_array(enfant_le_plus_age_in.enfantsIn); + function _bUs_(x){return enfant_of_jsoo(x)} + return [0,caml_call1(caml_call1(Stdlib_Array[15],_bUs_),_bUr_)]} + function allocations_familiales_in_to_j(allocations_familiales_in) + {var + t124=! ! allocations_familiales_in[7], + _bUp_=allocations_familiales_in[6]; + function _bUq_(x){return enfant_to_jsoo(x)} + var + t123=caml_js_from_array(caml_call2(Stdlib_Array[15],_bUq_,_bUp_)), + t122=caml_call1(Runtime_jsoo_Runtime[5],allocations_familiales_in[5]), + t121=collectivite_to_jsoo(allocations_familiales_in[4]), + t120=caml_call1(Runtime_ocaml_Runtime[35],allocations_familiales_in[3]), + t119=! ! allocations_familiales_in[2], + t118=! ! allocations_familiales_in[1]; + return {"personneChargeEffectivePermanenteEstParentIn":t118, + "personneChargeEffectivePermanenteRemplitTitreIIn":t119, + "ressourcesMenageIn":t120, + "residenceIn":t121, + "dateCouranteIn":t122, + "enfantsAChargeIn":t123, + "avaitEnfantAChargeAvant1erJanvier2012In":t124}} + function allocations_familiales_in_of_j(allocations_familiales_in) + {var + _bUh_= + allocations_familiales_in.avaitEnfantAChargeAvant1erJanvier2012In + | + 0, + _bUi_=caml_js_to_array(allocations_familiales_in.enfantsAChargeIn); + function _bUj_(x){return enfant_of_jsoo(x)} + var + _bUk_=caml_call1(caml_call1(Stdlib_Array[15],_bUj_),_bUi_), + _bUl_= + caml_call1 + (Runtime_jsoo_Runtime[4],allocations_familiales_in.dateCouranteIn), + _bUm_=collectivite_of_jsoo(allocations_familiales_in.residenceIn), + _bUn_= + caml_call1 + (Runtime_ocaml_Runtime[42], + allocations_familiales_in.ressourcesMenageIn), + _bUo_=caml_call1(Runtime_ocaml_Runtime[33],_bUn_); + return [0, + allocations_familiales_in.personneChargeEffectivePermanenteEstParentIn + | + 0, + allocations_familiales_in.personneChargeEffectivePermanenteRemplitTitreIIn + | + 0, + _bUo_, + _bUm_, + _bUl_, + _bUk_, + _bUh_]} + function smic_in_to_jsoo(smic_in) + {var + t133=collectivite_to_jsoo(smic_in[2]), + t132=caml_call1(Runtime_jsoo_Runtime[5],smic_in[1]); + return {"dateCouranteIn":t132,"residenceIn":t133}} + function smic_in_of_jsoo(smic_in) + {var _bUg_=collectivite_of_jsoo(smic_in.residenceIn); + return [0, + caml_call1(Runtime_jsoo_Runtime[4],smic_in.dateCouranteIn), + _bUg_]} + function base_mensuelle_allocations_fam$2(base_mensuelle_allocations_fam) + {var + t136= + caml_call1(Runtime_jsoo_Runtime[5],base_mensuelle_allocations_fam[1]); + return {"dateCouranteIn":t136}} + function base_mensuelle_allocations_fam$3(base_mensuelle_allocations_fam) + {return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + base_mensuelle_allocations_fam.dateCouranteIn)]} + function interface_allocations_familial$2(interface_allocations_familial) + {var + t144=! ! interface_allocations_familial[7], + t143=! ! interface_allocations_familial[6], + t142=! ! interface_allocations_familial[5], + t141=collectivite_to_jsoo(interface_allocations_familial[4]), + t140= + caml_call1 + (Runtime_ocaml_Runtime[35],interface_allocations_familial[3]), + _bUe_=interface_allocations_familial[2]; + function _bUf_(x){return enfant_entree_to_jsoo(x)} + var + t139=caml_js_from_array(caml_call2(Stdlib_Array[15],_bUf_,_bUe_)), + t138= + caml_call1(Runtime_jsoo_Runtime[5],interface_allocations_familial[1]); + return {"iDateCouranteIn":t138, + "iEnfantsIn":t139, + "iRessourcesMenageIn":t140, + "iResidenceIn":t141, + "iPersonneChargeEffectivePermanenteEstParentIn":t142, + "iPersonneChargeEffectivePermanenteRemplitTitreIIn":t143, + "iAvaitEnfantAChargeAvant1erJanvier2012In":t144}} + function interface_allocations_familial$3(interface_allocations_familial) + {var + _bT7_= + interface_allocations_familial.iAvaitEnfantAChargeAvant1erJanvier2012In + | + 0, + _bT8_= + interface_allocations_familial.iPersonneChargeEffectivePermanenteRemplitTitreIIn + | + 0, + _bT9_= + interface_allocations_familial.iPersonneChargeEffectivePermanenteEstParentIn + | + 0, + _bT__=collectivite_of_jsoo(interface_allocations_familial.iResidenceIn), + _bT$_= + caml_call1 + (Runtime_ocaml_Runtime[42], + interface_allocations_familial.iRessourcesMenageIn), + _bUa_=caml_call1(Runtime_ocaml_Runtime[33],_bT$_), + _bUb_=caml_js_to_array(interface_allocations_familial.iEnfantsIn); + function _bUc_(x){return enfant_entree_of_jsoo(x)} + var _bUd_=caml_call1(caml_call1(Stdlib_Array[15],_bUc_),_bUb_); + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + interface_allocations_familial.iDateCouranteIn), + _bUd_, + _bUa_, + _bT__, + _bT9_, + _bT8_, + _bT7_]} + function allocation_familiales_avril200$4 + (allocation_familiales_avril200$1) + {return allocation_familiales_avril200$0 + (allocation_familiales_avril200(0))} + function enfant_le_plus_age$0(enfant_le_plus_age_in) + {return enfant_le_plus_age_to_jsoo + (enfant_le_plus_age + (enfant_le_plus_age_in_of_jsoo(enfant_le_plus_age_in)))} + function smic$0(smic_in) + {return smic_to_jsoo(smic(smic_in_of_jsoo(smic_in)))} + function base_mensuelle_allocations_fam$4 + (base_mensuelle_allocations_fam$1) + {return base_mensuelle_allocations_fam$0 + (base_mensuelle_allocations_fam + (base_mensuelle_allocations_fam$3 + (base_mensuelle_allocations_fam$1)))} + function prestations_familiales$0(prestations_familiales_in) + {return prestations_familiales_to_jsoo + (prestations_familiales + (prestations_familiales_in_of_j(prestations_familiales_in)))} + function allocations_familiales$0(allocations_familiales_in) + {return allocations_familiales_to_jsoo + (allocations_familiales + (allocations_familiales_in_of_j(allocations_familiales_in)))} + function interface_allocations_familial$4 + (interface_allocations_familial$1) + {return interface_allocations_familial$0 + (interface_allocations_familial + (interface_allocations_familial$3 + (interface_allocations_familial$1)))} + function t158(param) + {return caml_js_wrap_callback(interface_allocations_familial$4)} + function t157(param) + {return caml_js_wrap_callback(allocations_familiales$0)} + function t156(param) + {return caml_js_wrap_callback(prestations_familiales$0)} + function t155(param) + {return caml_js_wrap_callback(base_mensuelle_allocations_fam$4)} + function t154(param){return caml_js_wrap_callback(smic$0)} + function t153(param){return caml_js_wrap_callback(enfant_le_plus_age$0)} + function t152(param) + {return caml_js_wrap_callback(allocation_familiales_avril200$4)} + caml_call2 + (Js_of_ocaml_Js[46], + cst_AllocationsFamilialesLib, + {"allocationFamilialesAvril2008":caml_js_wrap_meth_callback(t152), + "enfantLePlusAge":caml_js_wrap_meth_callback(t153), + "smic":caml_js_wrap_meth_callback(t154), + "baseMensuelleAllocationsFamiliales":caml_js_wrap_meth_callback(t155), + "prestationsFamiliales":caml_js_wrap_meth_callback(t156), + "allocationsFamiliales":caml_js_wrap_meth_callback(t157), + "interfaceAllocationsFamiliales":caml_js_wrap_meth_callback(t158)}); + var + Law_source_Allocations_familia$0= + [0, + prise_en_charge_to_jsoo, + prise_en_charge_of_jsoo, + situation_obligation_scolaire_, + situation_obligation_scolaire_$0, + prise_en_compte_to_jsoo, + prise_en_compte_of_jsoo, + versement_allocations_to_jsoo, + versement_allocations_of_jsoo, + element_prestations_familiales, + element_prestations_familiales$0, + collectivite_to_jsoo, + collectivite_of_jsoo, + allocation_familiales_avril200$0, + allocation_familiales_avril200$1, + allocations_familiales_to_jsoo, + allocations_familiales_of_jsoo, + smic_to_jsoo, + smic_of_jsoo, + base_mensuelle_allocations_fam$0, + base_mensuelle_allocations_fam$1, + interface_allocations_familial$0, + interface_allocations_familial$1, + enfant_entree_to_jsoo, + enfant_entree_of_jsoo, + enfant_to_jsoo, + enfant_of_jsoo, + enfant_le_plus_age_to_jsoo, + enfant_le_plus_age_of_jsoo, + prestations_familiales_to_jsoo, + prestations_familiales_of_jsoo, + prestations_familiales_in_to_j, + prestations_familiales_in_of_j, + allocation_familiales_avril200$2, + allocation_familiales_avril200$3, + enfant_le_plus_age_in_to_jsoo, + enfant_le_plus_age_in_of_jsoo, + allocations_familiales_in_to_j, + allocations_familiales_in_of_j, + smic_in_to_jsoo, + smic_in_of_jsoo, + base_mensuelle_allocations_fam$2, + base_mensuelle_allocations_fam$3, + interface_allocations_familial$2, + interface_allocations_familial$3, + allocation_familiales_avril200$4, + enfant_le_plus_age$0, + smic$0, + base_mensuelle_allocations_fam$4, + prestations_familiales$0, + allocations_familiales$0, + interface_allocations_familial$4]; + caml_register_global + (8575, + Law_source_Allocations_familia$0, + "Law_source__Allocations_familiales_api_web"); + var TypePret=[0]; + function embed_type_pret(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bT6_=[0,cst_D331_32,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bT6_=[0,cst_D331_63_64,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _bT6_=[0,cst_D331_59_8,caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + case 3: + var + x$3=x[1], + _bT6_=[0,cst_D331_76_1,caml_call1(Runtime_ocaml_Runtime[11],x$3)]; + break; + default: + var + x$4=x[1], + _bT6_=[0,cst_Autre,caml_call1(Runtime_ocaml_Runtime[11],x$4)]} + return [6,_kI_,_bT6_]} + var TitulairePret=[0]; + function embed_titulaire_pret(x) + {if(0 === x[0]) + var + x$0=x[1], + _bT5_=[0,cst_Demandeur,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var + x$1=x[1], + _bT5_= + [0, + cst_VendeurQuandDemandeurACont, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_kJ_,_bT5_]} + var TypeTravauxLogementD83215=[0]; + function embed_type_travaux_logement_d8(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bT4_= + [0, + cst_TravauxPourAcquisitionD832, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bT4_= + [0, + cst_TravauxSurLogementD_j_Acqu, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _bT4_=[0,cst_PasDeTravaux,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_kK_,_bT4_]} + var TypeTravauxLogementR8425=[0]; + function embed_type_travaux_logement_r8(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bT3_= + [0, + cst_ObjectifD_cenceLogement, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bT3_= + [0, + cst_Pr_vuDansListeR321_15, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _bT3_= + [0, + cst_AgrandirOuRendreHabitableD, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + default: + var + x$3=x[1], + _bT3_= + [0,cst_PasDeTravaux$0,caml_call1(Runtime_ocaml_Runtime[11],x$3)]} + return [6,_kL_,_bT3_]} + var AmelioreParOccupant=[0]; + function embed_ameliore_par_occupant(x) + {if(0 === x[0]) + var + x$0=x[1], + _bT2_=[0,cst_Oui,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var + x$1=x[1], + _bT2_=[0,cst_Non,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_kM_,_bT2_]} + var LimiteTranche=[0]; + function embed_limite_tranche(x) + {if(0 === x[0]) + var + x$0=x[1], + _bT1_=[0,cst_Revenu,caml_call1(Runtime_ocaml_Runtime[13],x$0)]; + else + var + x$1=x[1], + _bT1_=[0,cst_Infini,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_kN_,_bT1_]} + var LimiteTrancheDecimal=[0]; + function embed_limite_tranche_decimal(x) + {if(0 === x[0]) + var + x$0=x[1], + _bT0_=[0,cst_Revenu$0,caml_call1(Runtime_ocaml_Runtime[15],x$0)]; + else + var + x$1=x[1], + _bT0_=[0,cst_Infini$0,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_kO_,_bT0_]} + var PrestationRecue=[0]; + function embed_prestation_recue(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTZ_= + [0, + cst_AllocationsFamiliales$1, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTZ_= + [0, + cst_Compl_mentFamilial$0, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _bTZ_= + [0, + cst_AllocationJeuneEnfant, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + case 3: + var + x$3=x[1], + _bTZ_= + [0, + cst_AllocationSoutienFamilial$1, + caml_call1(Runtime_ocaml_Runtime[11],x$3)]; + break; + case 4: + var + x$4=x[1], + _bTZ_= + [0, + cst_AllocationSoutienEnfantHan, + caml_call1(Runtime_ocaml_Runtime[11],x$4)]; + break; + default: + var + x$5=x[1], + _bTZ_= + [0, + cst_AllocationAdulteHandicap, + caml_call1(Runtime_ocaml_Runtime[11],x$5)]} + return [6,_kP_,_bTZ_]} + var ParentOuAutre=[0]; + function embed_parent_ou_autre(x) + {if(0 === x[0]) + var + x$0=x[1], + _bTY_= + [0, + cst_DemandeurOuConjointOuParen, + caml_call1(Runtime_ocaml_Runtime[15],x$0)]; + else + var + x$1=x[1], + _bTY_=[0,cst_Autre$0,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_kQ_,_bTY_]} + var SituationGardeAlternee=[0]; + function embed_situation_garde_alternee(x) + {if(0 === x[0]) + var + x$0=x[1], + _bTX_= + [0,cst_PasDeGardeAltern_e,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var + x$1=x[1], + _bTX_= + [0, + cst_GardeAltern_eCoefficientPr, + caml_call1(Runtime_ocaml_Runtime[15],x$1)]; + return [6,_kR_,_bTX_]} + var Parente=[0]; + function embed_parente(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTW_=[0,cst_Ascendant,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTW_=[0,cst_Descendant,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _bTW_= + [0, + cst_Collat_ralDeuxi_meTroisi_m, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_kS_,_bTW_]} + var DateDeNaissanceOuMoisDeGrosses=[0]; + function embed_date_de_naissance_ou_moi(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTV_= + [0,cst_DateDeNaissance,caml_call1(Runtime_ocaml_Runtime[16],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTV_= + [0, + cst_AvantPremierJourMoisCivilT, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _bTV_= + [0, + cst_Apr_sPremierJourMoisCivilT, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_kT_,_bTV_]} + var ZoneDHabitation=[0]; + function embed_zone_d_habitation(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTU_=[0,cst_Zone1,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTU_=[0,cst_Zone2,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _bTU_=[0,cst_Zone3,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_kU_,_bTU_]} + var PaiementLogementDistinctProfes=[0]; + function embed_paiement_logement_distin(x) + {if(0 === x[0]) + var + x$0=x[1], + _bTT_= + [0, + cst_OuiAvecLoyerOuCharges, + caml_call1(Runtime_ocaml_Runtime[13],x$0)]; + else + var + x$1=x[1], + _bTT_=[0,cst_Non$0,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_kV_,_bTT_]} + var VersementA=[0]; + function embed_versement_a(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTS_=[0,cst_Bailleur,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTS_=[0,cst_B_n_ficiaire,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _bTS_= + [0, + cst_tablissementHabilit, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_kW_,_bTS_]} + var DepenseLogement=[0]; + function embed_depense_logement(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTR_= + [0, + cst_TotalAnnuel_ch_ances, + caml_call1(Runtime_ocaml_Runtime[13],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTR_=[0,cst_Mensualit,caml_call1(Runtime_ocaml_Runtime[13],x$1)]; + break; + default: + var + x$2=x[1], + _bTR_=[0,cst_Loyer,caml_call1(Runtime_ocaml_Runtime[13],x$2)]} + return [6,_kX_,_bTR_]} + var ModeOccupationImpaye=[0]; + function embed_mode_occupation_impaye(x) + {if(0 === x[0]) + var + x$0=x[1], + _bTQ_=[0,cst_Impay_Loyer,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var + x$1=x[1], + _bTQ_=[0,cst_Impay_Pr_t,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_kY_,_bTQ_]} + var TypeEligibiliteAllocationLogem=[0]; + function embed_type_eligibilite_allocat(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTP_=[0,cst_Pas_ligible,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTP_= + [0, + cst_AllocationLogementFamilial, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _bTP_= + [0, + cst_AllocationLogementSociale, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_kZ_,_bTP_]} + var TypeAidesPersonnelleLogement=[0]; + function embed_type_aides_personnelle_l(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTO_= + [0, + cst_AidePersonnalis_eLogement, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTO_= + [0, + cst_AllocationLogementFamilial$0, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _bTO_= + [0, + cst_AllocationLogementSociale$0, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_k0_,_bTO_]} + var SituationFamiliale=[0]; + function embed_situation_familiale(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTN_=[0,cst_C_libataire,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTN_=[0,cst_Mari_s,caml_call1(Runtime_ocaml_Runtime[16],x$1)]; + break; + case 2: + var + x$2=x[1], + _bTN_=[0,cst_Pacs_s,caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + case 3: + var + x$3=x[1], + _bTN_=[0,cst_Concubins,caml_call1(Runtime_ocaml_Runtime[11],x$3)]; + break; + case 4: + var + x$4=x[1], + _bTN_= + [0, + cst_C_libataireS_par_DeFait, + caml_call1(Runtime_ocaml_Runtime[11],x$4)]; + break; + default: + var + x$5=x[1], + _bTN_= + [0, + cst_ConcubinageDontS_par_DeFai, + caml_call1(Runtime_ocaml_Runtime[11],x$5)]} + return [6,_k1_,_bTN_]} + var PriseEnCharge$0=[0]; + function embed_prise_en_charge$0(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTM_= + [0, + cst_EffectiveEtPermanente$1, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTM_= + [0, + cst_R_sidenceAltern_eAllocatai, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _bTM_= + [0, + cst_R_sidenceAltern_eAllocatio, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_k2_,_bTM_]} + var TypeLogementFoyer=[0]; + function embed_type_logement_foyer(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTL_= + [0, + cst_LogementPersonnes_g_esOuHa, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTL_= + [0,cst_R_sidenceSociale,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _bTL_= + [0, + cst_FoyerJeunesTrvailleursOuMi, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + default: + var + x$3=x[1], + _bTL_=[0,cst_Autre$1,caml_call1(Runtime_ocaml_Runtime[11],x$3)]} + return [6,_k3_,_bTL_]} + var CategorieEquivalenceLoyerAlloc=[0]; + function embed_categorie_equivalence_lo(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTK_= + [0, + cst_tudiantLog_EnChambreCROUS, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTK_= + [0, + cst_tudiantLog_EnChambreCROUSR, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _bTK_= + [0, + cst_Personnes_g_esSelon3DeD842, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + default: + var + x$3=x[1], + _bTK_= + [0,cst_AutresPersonnes,caml_call1(Runtime_ocaml_Runtime[11],x$3)]} + return [6,_k4_,_bTK_]} + var SituationFamilialeCalculAPL=[0]; + function embed_situation_familiale_calc(x) + {if(0 === x[0]) + var + x$0=x[1], + _bTJ_=[0,cst_PersonneSeule,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var + x$1=x[1], + _bTJ_=[0,cst_Couple,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_k5_,_bTJ_]} + var Collectivite$0=[0]; + function embed_collectivite$0(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTI_=[0,cst_Guadeloupe$1,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTI_=[0,cst_Guyane$1,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _bTI_=[0,cst_Martinique$1,caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + case 3: + var + x$3=x[1], + _bTI_=[0,cst_LaR_union$0,caml_call1(Runtime_ocaml_Runtime[11],x$3)]; + break; + case 4: + var + x$4=x[1], + _bTI_= + [0,cst_SaintBarth_lemy$0,caml_call1(Runtime_ocaml_Runtime[11],x$4)]; + break; + case 5: + var + x$5=x[1], + _bTI_= + [0,cst_SaintMartin$1,caml_call1(Runtime_ocaml_Runtime[11],x$5)]; + break; + case 6: + var + x$6=x[1], + _bTI_=[0,cst_M_tropole$0,caml_call1(Runtime_ocaml_Runtime[11],x$6)]; + break; + case 7: + var + x$7=x[1], + _bTI_= + [0, + cst_SaintPierreEtMiquelon$1, + caml_call1(Runtime_ocaml_Runtime[11],x$7)]; + break; + default: + var + x$8=x[1], + _bTI_=[0,cst_Mayotte$1,caml_call1(Runtime_ocaml_Runtime[11],x$8)]} + return [6,_k6_,_bTI_]} + var PriseEnChargeEnfant=[0]; + function embed_prise_en_charge_enfant(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTH_= + [0, + cst_GardeAltern_ePartageAlloca$0, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTH_= + [0, + cst_GardeAltern_eAllocataireUn$0, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _bTH_= + [0, + cst_EffectiveEtPermanente$2, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + case 3: + var + x$3=x[1], + _bTH_= + [0, + cst_ServicesSociauxAllocationV$3, + caml_call1(Runtime_ocaml_Runtime[11],x$3)]; + break; + default: + var + x$4=x[1], + _bTH_= + [0, + cst_ServicesSociauxAllocationV$4, + caml_call1(Runtime_ocaml_Runtime[11],x$4)]} + return [6,_k7_,_bTH_]} + var SituationObligationScolaire$0=[0]; + function embed_situation_obligation_sco$0(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTG_=[0,cst_Avant$1,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTG_=[0,cst_Pendant$1,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _bTG_=[0,cst_Apr_s$0,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_k8_,_bTG_]} + var ElementPrestationsFamiliales$0=[0]; + function embed_element_prestations_fami$0(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTF_= + [0, + cst_PrestationAccueilJeuneEnfa$1, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTF_= + [0, + cst_AllocationsFamiliales$2, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _bTF_= + [0, + cst_Compl_mentFamilial$1, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + case 3: + var + x$3=x[1], + _bTF_= + [0, + cst_AllocationLogement$1, + caml_call1(Runtime_ocaml_Runtime[11],x$3)]; + break; + case 4: + var + x$4=x[1], + _bTF_= + [0, + cst_Allocation_ducationEnfantH$0, + caml_call1(Runtime_ocaml_Runtime[11],x$4)]; + break; + case 5: + var + x$5=x[1], + _bTF_= + [0, + cst_AllocationSoutienFamilial$2, + caml_call1(Runtime_ocaml_Runtime[11],x$5)]; + break; + case 6: + var + x$6=x[1], + _bTF_= + [0, + cst_AllocationRentr_eScolaire$0, + caml_call1(Runtime_ocaml_Runtime[11],x$6)]; + break; + default: + var + x$7=x[1], + _bTF_= + [0, + cst_AllocationJournali_rePrese$0, + caml_call1(Runtime_ocaml_Runtime[11],x$7)]} + return [6,_k9_,_bTF_]} + var ConventionBailleurSocial=[0]; + function embed_convention_bailleur_soci(x) + {var + _bTE_= + [0, + [0, + cst_r_duction_loyer_solidarit_, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + 0]; + return [7, + _k__, + [0, + [0, + cst_conventionn_livre_III_titr, + caml_call1(Runtime_ocaml_Runtime[12],x[1])], + _bTE_]]} + var ConventionANHA=[0]; + function embed_convention_a_n_h_a(x) + {return [7, + _k$_, + [0, + [0, + cst_conventionn_livre_III_titr$0, + caml_call1(Runtime_ocaml_Runtime[12],x[1])], + 0]]} + var PersonneSousLocation=[0]; + function embed_personne_sous_location(x) + {var + _bTD_= + [0, + [0, + cst_conforme_article_l442_1, + caml_call1(Runtime_ocaml_Runtime[12],x[2])], + 0]; + return [7, + _la_, + [0, + [0, + cst_date_naissance_personne_so, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _bTD_]]} + var Patrimoine=[0]; + function embed_patrimoine(x) + {var + _bTC_= + [0, + [0, + cst_ne_produisant_pas_revenu_p, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + 0]; + return [7, + _lb_, + [0, + [0, + cst_produisant_revenu_p_riode_, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bTC_]]} + var ConditionsEtrangers=[0]; + function embed_conditions_etrangers(x) + {return [7, + _lc_, + [0, + [0, + cst_satisfait_conditions_l512_, + caml_call1(Runtime_ocaml_Runtime[12],x[1])], + 0]]} + var PersonneVivantHabituellementAu=[0]; + function embed_personne_vivant_habituel(x) + {var + _bTB_= + [0,[0,cst_ressources,caml_call1(Runtime_ocaml_Runtime[13],x[2])],0]; + return [7, + _ld_, + [0, + [0, + cst_dur_e_r_sidence_durant_p_r, + caml_call1(Runtime_ocaml_Runtime[12],x[1])], + _bTB_]]} + var EligibiliteAidePersonnaliseeLo=[0]; + function embed_eligibilite_aide_personn(x) + {var + _bTy_= + [0, + [0, + cst_coefficents_enfants_garde_, + caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[4])], + 0], + _bTz_= + [0, + [0, + cst_nombre_personnes_charge_pr, + caml_call1(Runtime_ocaml_Runtime[14],x[3])], + _bTy_], + _bTA_= + [0,[0,cst_ligibilit,caml_call1(Runtime_ocaml_Runtime[12],x[2])],_bTz_]; + return [7, + _le_, + [0, + [0, + cst_date_courante, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _bTA_]]} + var EligibilitePrimeDeDemenagement=[0]; + function embed_eligibilite_prime_de_dem(x) + {return [7, + _lf_, + [0, + [0, + cst_montant_prime_d_m_nagement, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + 0]]} + var RessourcesAidesPersonnelleLoge=[0]; + function embed_ressources_aides_personn(x) + {return [7, + _lg_, + [0, + [0, + cst_ressources_prises_en_compt, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + 0]]} + var ContributionsSocialesAidesPers=[0]; + function embed_contributions_sociales_a(x) + {return [7, + _lh_, + [0, + [0,cst_montant$0,caml_call1(Runtime_ocaml_Runtime[10],x[1])], + 0]]} + var CalculAidePersonnaliseeLogemen=[0]; + function embed_calcul_aide_personnalise(x) + {var + _bTs_= + [0, + [0, + cst_traitement_aide_finale, + caml_call1(Runtime_ocaml_Runtime[10],x[7])], + 0], + _bTt_= + [0, + [0, + cst_aide_finale_formule, + caml_call1(Runtime_ocaml_Runtime[13],x[6])], + _bTs_], + _bTu_= + [0, + [0, + cst_participation_personnelle, + caml_call1(Runtime_ocaml_Runtime[13],x[5])], + _bTt_], + _bTv_= + [0, + [0, + cst_taux_composition_familiale, + caml_call1(Runtime_ocaml_Runtime[15],x[4])], + _bTu_], + _bTw_= + [0, + [0, + cst_participation_minimale, + caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _bTv_], + _bTx_= + [0, + [0, + cst_plafond_loyer_d823_16_2, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bTw_]; + return [7, + _li_, + [0, + [0, + cst_montant_forfaitaire_charge, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bTx_]]} + var CalculEquivalenceLoyerMinimale=[0]; + function embed_calcul_equivalence_loyer(x) + {return [7, + _lj_, + [0, + [0,cst_montant$1,caml_call1(Runtime_ocaml_Runtime[13],x[1])], + 0]]} + var CalculNombrePartLogementFoyer=[0]; + function embed_calcul_nombre_part_logem(x) + {return [7, + _lk_, + [0, + [0, + cst_n_nombre_parts_d832_25, + caml_call1(Runtime_ocaml_Runtime[15],x[1])], + 0]]} + var CalculAidePersonnaliseeLogemen$0=[0]; + function embed_calcul_aide_personnalise$0(x) + {var + _bTk_= + [0, + [0, + cst_traitement_aide_finale$0, + caml_call1(Runtime_ocaml_Runtime[10],x[9])], + 0], + _bTl_= + [0, + [0, + cst_aide_finale_formule$0, + caml_call1(Runtime_ocaml_Runtime[13],x[8])], + _bTk_], + _bTm_= + [0, + [0, + cst_coefficient_prise_en_charg, + caml_call1(Runtime_ocaml_Runtime[15],x[7])], + _bTl_], + _bTn_= + [0, + [0, + cst_quivalence_loyer_minimale, + caml_call1(Runtime_ocaml_Runtime[13],x[6])], + _bTm_], + _bTo_= + [0, + [0, + cst_plafond_quivalence_loyer_l, + caml_call1(Runtime_ocaml_Runtime[13],x[5])], + _bTn_], + _bTp_= + [0, + [0, + cst_quivalence_loyer_ligible, + caml_call1(Runtime_ocaml_Runtime[13],x[4])], + _bTo_], + _bTq_= + [0, + [0, + cst_n_nombre_parts_d832_25$0, + caml_call1(Runtime_ocaml_Runtime[15],x[3])], + _bTp_], + _bTr_= + [0, + [0, + cst_coefficient_r_d832_25, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bTq_]; + return [7, + _ll_, + [0, + [0, + cst_coefficient_multiplicateur, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bTr_]]} + var CalculNombrePartsAccessionProp=[0]; + function embed_calcul_nombre_parts_acce(x) + {return [7, + _lm_, + [0, + [0, + cst_n_nombre_parts_d832_11, + caml_call1(Runtime_ocaml_Runtime[15],x[1])], + 0]]} + var CalculAidePersonnaliseeLogemen$1=[0]; + function embed_calcul_aide_personnalise$1(x) + {var + _bTg_= + [0, + [0, + cst_traitement_aide_finale$1, + caml_call1(Runtime_ocaml_Runtime[10],x[5])], + 0], + _bTh_= + [0, + [0, + cst_aide_finale_formule$1, + caml_call1(Runtime_ocaml_Runtime[13],x[4])], + _bTg_], + _bTi_= + [0, + [0, + cst_coefficient_prise_en_charg$0, + caml_call1(Runtime_ocaml_Runtime[15],x[3])], + _bTh_], + _bTj_= + [0, + [0,cst_mensualit_minimale,caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bTi_]; + return [7, + _ln_, + [0, + [0, + cst_mensualit_ligible, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bTj_]]} + var TraitementFormuleAideFinale=[0]; + function embed_traitement_formule_aide_(x) + {var + _bTf_= + [0, + [0, + cst_traitement_aide_finale$2, + caml_call1(Runtime_ocaml_Runtime[10],x[2])], + 0]; + return [7, + _lo_, + [0, + [0, + cst_aide_finale_formule$2, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bTf_]]} + var CalculAidePersonnaliseeLogemen$2=[0]; + function embed_calcul_aide_personnalise$2(x) + {var + _bTe_= + [0, + [0, + cst_traitement_aide_finale$3, + caml_call1(Runtime_ocaml_Runtime[10],x[2])], + 0]; + return [7, + _lp_, + [0, + [0, + cst_aide_finale_formule$3, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bTe_]]} + var InfosChangementLogementD8424=[0]; + function embed_infos_changement_logemen(x) + {var + _bTd_= + [0, + [0, + cst_ancienne_allocation_logeme, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + 0]; + return [7, + _lq_, + [0, + [0, + cst_ancien_loyer_principal, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bTd_]]} + var CalculAllocationLogementLocati=[0]; + function embed_calcul_allocation_logeme(x) + {var + _bTc_= + [0, + [0, + cst_traitement_aide_finale$4, + caml_call1(Runtime_ocaml_Runtime[10],x[2])], + 0]; + return [7, + _lr_, + [0, + [0, + cst_aide_finale_formule$4, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bTc_]]} + var CalculAllocationLogementAccess=[0]; + function embed_calcul_allocation_logeme$0(x) + {var + _bTb_= + [0, + [0, + cst_traitement_aide_finale$5, + caml_call1(Runtime_ocaml_Runtime[10],x[2])], + 0]; + return [7, + _ls_, + [0, + [0, + cst_aide_finale_formule$5, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bTb_]]} + var CalculAllocationLogementFoyer=[0]; + function embed_calcul_allocation_logeme$1(x) + {var + _bS8_= + [0, + [0, + cst_traitement_aide_finale$6, + caml_call1(Runtime_ocaml_Runtime[10],x[6])], + 0], + _bS9_= + [0, + [0, + cst_aide_finale_formule$6, + caml_call1(Runtime_ocaml_Runtime[13],x[5])], + _bS8_], + _bS__= + [0, + [0,cst_loyer_minimal,caml_call1(Runtime_ocaml_Runtime[13],x[4])], + _bS9_], + _bS$_= + [0, + [0, + cst_montant_forfaitaire_charge$0, + caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _bS__], + _bTa_= + [0, + [0,cst_quivalence_loyer,caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bS$_]; + return [7, + _lt_, + [0, + [0, + cst_coefficient_prise_en_charg$1, + caml_call1(Runtime_ocaml_Runtime[15],x[1])], + _bTa_]]} + var CalculAllocationLogement=[0]; + function embed_calcul_allocation_logeme$2(x) + {var + _bS7_= + [0, + [0, + cst_traitement_aide_finale$7, + caml_call1(Runtime_ocaml_Runtime[10],x[2])], + 0]; + return [7, + _lu_, + [0, + [0, + cst_aide_finale_formule$7, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bS7_]]} + var OuvertureDroitsRetraite=[0]; + function embed_ouverture_droits_retrait(x) + {return [7, + _lv_, + [0, + [0, + cst_ge_ouverture_droit, + caml_call1(Runtime_ocaml_Runtime[17],x[1])], + 0]]} + var ImpayeDepenseLogement=[0]; + function embed_impaye_depense_logement(x) + {return [7, + _lw_, + [0, + [0, + cst_montant_impay, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + 0]]} + var CalculetteAidesAuLogement=[0]; + function embed_calculette_aides_au_loge(x) + {var + _bS4_= + [0, + [0, + cst_coefficents_enfants_garde_$0, + caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[4])], + 0], + _bS5_= + [0, + [0, + cst_traitement_aide_finale$8, + caml_call1(Runtime_ocaml_Runtime[10],x[3])], + _bS4_], + _bS6_= + [0, + [0, + cst_aide_finale_formule$8, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bS5_]; + return [7, + _lx_, + [0, + [0,cst_ligibilit$0,caml_call1(Runtime_ocaml_Runtime[12],x[1])], + _bS6_]]} + var CalculetteAidesAuLogementGarde=[0]; + function embed_calculette_aides_au_loge$0(x) + {var + _bS3_= + [0,[0,cst_aide_finale,caml_call1(Runtime_ocaml_Runtime[13],x[2])],0]; + return [7, + _ly_, + [0, + [0,cst_ligibilit$1,caml_call1(Runtime_ocaml_Runtime[12],x[1])], + _bS3_]]} + var BaseMensuelleAllocationsFamili$1=[0]; + function embed_base_mensuelle_allocatio$1(x) + {return [7, + _lz_, + [0, + [0,cst_montant$2,caml_call1(Runtime_ocaml_Runtime[13],x[1])], + 0]]} + var Smic$0=[0]; + function embed_smic$0(x) + {return [7, + _lA_, + [0, + [0, + cst_brut_horaire$0, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + 0]]} + var Pret=[0]; + function embed_pret(x) + {var + _bS1_=[0,[0,cst_titulaire_pr_t,embed_titulaire_pret(x[3])],0], + _bS2_= + [0, + [0,cst_date_signature,caml_call1(Runtime_ocaml_Runtime[16],x[2])], + _bS1_]; + return [7,_lB_,[0,[0,cst_type_pr_t,embed_type_pret(x[1])],_bS2_]]} + var NeufOuAncien=[0]; + function embed_neuf_ou_ancien(x) + {if(0 === x[0]) + var + x$0=x[1], + _bS0_=[0,cst_Neuf,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var x$1=x[1],_bS0_=[0,cst_Ancien,embed_ameliore_par_occupant(x$1)]; + return [6,_lC_,_bS0_]} + var TrancheRevenu=[0]; + function embed_tranche_revenu(x) + {var + _bSY_=[0,[0,cst_taux,caml_call1(Runtime_ocaml_Runtime[15],x[3])],0], + _bSZ_=[0,[0,cst_bas,caml_call1(Runtime_ocaml_Runtime[13],x[2])],_bSY_]; + return [7,_lD_,[0,[0,cst_haut,embed_limite_tranche(x[1])],_bSZ_]]} + var TrancheRevenuDecimal=[0]; + function embed_tranche_revenu_decimal(x) + {var + _bSW_=[0,[0,cst_taux$0,caml_call1(Runtime_ocaml_Runtime[15],x[3])],0], + _bSX_= + [0,[0,cst_bas$0,caml_call1(Runtime_ocaml_Runtime[15],x[2])],_bSW_]; + return [7, + _lE_, + [0,[0,cst_haut$0,embed_limite_tranche_decimal(x[1])],_bSX_]]} + var AutrePersonneACharge=[0]; + function embed_autre_personne_a_charge(x) + {var + _bSQ_= + [0, + [0, + cst_titulaire_allocation_perso, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + 0], + _bSR_= + [0, + [0, + cst_b_n_ficiaire_l161_19_l351_, + caml_call1(Runtime_ocaml_Runtime[12],x[6])], + _bSQ_], + _bSS_= + [0, + [0, + cst_incapacit_80_pourcent_ou_r, + caml_call1(Runtime_ocaml_Runtime[12],x[5])], + _bSR_], + _bST_=[0,[0,cst_parent,embed_parente(x[4])],_bSS_], + _bSU_= + [0, + [0, + cst_ascendant_descendant_colla, + caml_call1(Runtime_ocaml_Runtime[12],x[3])], + _bST_], + _bSV_= + [0, + [0,cst_ressources$0,caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bSU_]; + return [7, + _lF_, + [0, + [0, + cst_date_naissance, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _bSV_]]} + var DateNaissanceTroisiemeOuDernie=[0]; + function embed_date_naissance_troisieme(x) + {if(0 === x[0]) + var + x$0=x[1], + _bSP_= + [0,cst_MoinsDeTroisEnfants,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var + x$1=x[1], + _bSP_=[0,cst_PlusDeTroisEnfants,embed_date_de_naissance_ou_moi(x$1)]; + return [6,_lG_,_bSP_]} + var EligibiliteAllocationLogement=[0]; + function embed_eligibilite_allocation_l(x) + {var + _bSN_= + [0, + [0, + cst_coefficents_enfants_garde_$1, + caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[3])], + 0], + _bSO_= + [0, + [0, + cst_nombre_personnes_charge_pr$0, + caml_call1(Runtime_ocaml_Runtime[14],x[2])], + _bSN_]; + return [7, + _lH_, + [0, + [0,cst_ligibilit$2,embed_type_eligibilite_allocat(x[1])], + _bSO_]]} + var LogementFoyer=[0]; + function embed_logement_foyer(x) + {var + _bSH_= + [0, + [0, + cst_cat_gorie_quivalence_loyer, + embed_categorie_equivalence_lo(x[7])], + 0], + _bSI_= + [0,[0,cst_redevance,caml_call1(Runtime_ocaml_Runtime[13],x[6])],_bSH_], + _bSJ_= + [0, + [0, + cst_construit_application_loi_, + caml_call1(Runtime_ocaml_Runtime[12],x[5])], + _bSI_], + _bSK_= + [0, + [0, + cst_date_conventionnement, + caml_call1(Runtime_ocaml_Runtime[16],x[4])], + _bSJ_], + _bSL_= + [0, + [0, + cst_conventionn_livre_III_titr$1, + caml_call1(Runtime_ocaml_Runtime[12],x[3])], + _bSK_], + _bSM_= + [0, + [0, + cst_remplit_conditions_r832_21, + caml_call1(Runtime_ocaml_Runtime[12],x[2])], + _bSL_]; + return [7,_lI_,[0,[0,cst_type,embed_type_logement_foyer(x[1])],_bSM_]]} + var EnfantPrestationsFamiliales=[0]; + function embed_enfant_prestations_famil(x) + {var + _bSB_= + [0, + [0, + cst_b_n_ficie_titre_personnel_$0, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + 0], + _bSC_= + [0, + [0, + cst_a_d_j_ouvert_droit_aux_all$0, + caml_call1(Runtime_ocaml_Runtime[12],x[6])], + _bSB_], + _bSD_= + [0,[0,cst_prise_en_charge$0,embed_prise_en_charge_enfant(x[5])],_bSC_], + _bSE_= + [0, + [0, + cst_date_de_naissance$0, + caml_call1(Runtime_ocaml_Runtime[16],x[4])], + _bSD_], + _bSF_= + [0, + [0, + cst_r_muneration_mensuelle$0, + caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _bSE_], + _bSG_= + [0, + [0,cst_obligation_scolaire$0,embed_situation_obligation_sco$0(x[2])], + _bSF_]; + return [7, + _lJ_, + [0, + [0, + cst_identifiant$0, + caml_call1(Runtime_ocaml_Runtime[14],x[1])], + _bSG_]]} + var EnfantACharge=[0]; + function embed_enfant_a_charge(x) + {var + _bSv_= + [0, + [0,cst_situation_garde_altern_e,embed_situation_garde_alternee(x[7])], + 0], + _bSw_= + [0, + [0,cst_obligation_scolaire$1,embed_situation_obligation_sco$0(x[6])], + _bSv_], + _bSx_= + [0, + [0, + cst_r_muneration_mensuelle$1, + caml_call1(Runtime_ocaml_Runtime[13],x[5])], + _bSw_], + _bSy_= + [0, + [0, + cst_date_de_naissance$1, + caml_call1(Runtime_ocaml_Runtime[16],x[4])], + _bSx_], + _bSz_= + [0, + [0, + cst_a_d_j_ouvert_droit_aux_all$1, + caml_call1(Runtime_ocaml_Runtime[12],x[3])], + _bSy_], + _bSA_= + [0, + [0, + cst_b_n_ficie_titre_personnel_$1, + caml_call1(Runtime_ocaml_Runtime[12],x[2])], + _bSz_]; + return [7, + _lK_, + [0, + [0, + cst_identifiant$1, + caml_call1(Runtime_ocaml_Runtime[14],x[1])], + _bSA_]]} + var TypeBailleur=[0]; + function embed_type_bailleur(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bSu_=[0,cst_BailleurSocial,embed_convention_bailleur_soci(x$0)]; + break; + case 1: + var + x$1=x[1], + _bSu_= + [0,cst_BailleurPriv_AvecConventio,embed_convention_a_n_h_a(x$1)]; + break; + default: + var + x$2=x[1], + _bSu_=[0,cst_BailleurPriv,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_lL_,_bSu_]} + var LoueOuSousLoueADesTiers=[0]; + function embed_loue_ou_sous_loue_a_des_(x) + {if(0 === x[0]) + var + x$0=x[1], + _bSt_=[0,cst_Non$1,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var x$1=x[1],_bSt_=[0,cst_Oui$0,embed_personne_sous_location(x$1)]; + return [6,_lM_,_bSt_]} + var Nationalite=[0]; + function embed_nationalite(x) + {if(0 === x[0]) + var + x$0=x[1], + _bSs_=[0,cst_Fran_aise,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var x$1=x[1],_bSs_=[0,cst_trang_re,embed_conditions_etrangers(x$1)]; + return [6,_lN_,_bSs_]} + var ChangementLogementD8424=[0]; + function embed_changement_logement_d842(x) + {if(0 === x[0]) + var + x$0=x[1], + _bSr_=[0,cst_Changement,embed_infos_changement_logemen(x$0)]; + else + var + x$1=x[1], + _bSr_= + [0,cst_PasDeChangement,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_lO_,_bSr_]} + var Proprietaire=[0]; + function embed_proprietaire(x) + {var + _bSh_=[0,[0,cst_pr_t,embed_pret(x[11])],0], + _bSi_=[0,[0,cst_anciennet_logement,embed_neuf_ou_ancien(x[10])],_bSh_], + _bSj_= + [0, + [0, + cst_situation_r822_11_13_17, + caml_call1(Runtime_ocaml_Runtime[12],x[9])], + _bSi_], + _bSk_= + [0, + [0,cst_copropri_t,caml_call1(Runtime_ocaml_Runtime[12],x[8])], + _bSj_], + _bSl_= + [0, + [0, + cst_local_habit_premi_re_fois_, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + _bSk_], + _bSm_= + [0, + [0, + cst_type_travaux_logement_r842, + embed_type_travaux_logement_r8(x[6])], + _bSl_], + _bSn_= + [0, + [0, + cst_type_travaux_logement_d832, + embed_type_travaux_logement_d8(x[5])], + _bSm_], + _bSo_= + [0, + [0, + cst_date_entr_e_logement, + caml_call1(Runtime_ocaml_Runtime[16],x[4])], + _bSn_], + _bSp_= + [0, + [0, + cst_charges_mensuelles_pr_t, + caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _bSo_], + _bSq_= + [0, + [0, + cst_mensualit_principale, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bSp_]; + return [7, + _lP_, + [0, + [0, + cst_logement_situ_commune_d_s_, + caml_call1(Runtime_ocaml_Runtime[12],x[1])], + _bSq_]]} + var InformationsPrimeDeDemenagemen=[0]; + function embed_informations_prime_de_de(x) + {var + _bSg_= + [0, + [0, + cst_date_naissance_troisi_me_e, + embed_date_naissance_troisieme(x[2])], + 0]; + return [7, + _lQ_, + [0, + [0, + cst_nombre_enfants_na_tre_apr_, + caml_call1(Runtime_ocaml_Runtime[14],x[1])], + _bSg_]]} + var EligibilitePrestationsFamilial=[0]; + function embed_eligibilite_prestations_(x) + {var + _bSd_= + [0, + [0, + cst_r_gime_outre_mer_l751_1$0, + caml_call1(Runtime_ocaml_Runtime[12],x[4])], + 0], + _bSe_= + [0, + [0,cst_ge_l512_3_2$0,caml_call1(Runtime_ocaml_Runtime[17],x[3])], + _bSd_], + _bSf_= + [0, + [0, + cst_conditions_hors_ge$0, + caml_call1(Runtime_ocaml_Runtime[10],x[2])], + _bSe_]; + return [7, + _lR_, + [0, + [0, + cst_droit_ouvert$0, + caml_call1(Runtime_ocaml_Runtime[10],x[1])], + _bSf_]]} + var PersonneACharge=[0]; + function embed_personne_a_charge(x) + {if(0 === x[0]) + var x$0=x[1],_bSc_=[0,cst_Enfant_Charge,embed_enfant_a_charge(x$0)]; + else + var + x$1=x[1], + _bSc_=[0,cst_AutrePersonne_Charge,embed_autre_personne_a_charge(x$1)]; + return [6,_lS_,_bSc_]} + var Demandeur=[0]; + function embed_demandeur(x) + {var + _bR$_= + [0, + [0, + cst_personne_h_berg_e_centre_s, + caml_call1(Runtime_ocaml_Runtime[12],x[4])], + 0], + _bSa_=[0,[0,cst_patrimoine,embed_patrimoine(x[3])],_bR$_], + _bSb_=[0,[0,cst_nationalit,embed_nationalite(x[2])],_bSa_]; + return [7, + _lT_, + [0, + [0, + cst_date_naissance$0, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _bSb_]]} + var Location=[0]; + function embed_location(x) + {var + _bR4_= + [0, + [0, + cst_changement_logement_d842_4, + embed_changement_logement_d842(x[8])], + 0], + _bR5_= + [0, + [0, + cst_logement_meubl_d842_2, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + _bR4_], + _bR6_= + [0, + [0, + cst_g_es_ou_handicap_adultes_h, + caml_call1(Runtime_ocaml_Runtime[12],x[6])], + _bR5_], + _bR7_= + [0, + [0,cst_colocation,caml_call1(Runtime_ocaml_Runtime[12],x[5])], + _bR6_], + _bR8_= + [0, + [0, + cst_logement_est_chambre, + caml_call1(Runtime_ocaml_Runtime[12],x[4])], + _bR7_], + _bR9_= + [0, + [0, + cst_b_n_ficiaire_aide_adulte_o, + caml_call1(Runtime_ocaml_Runtime[12],x[3])], + _bR8_], + _bR__= + [0, + [0,cst_loyer_principal,caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bR9_]; + return [7,_lU_,[0,[0,cst_bailleur,embed_type_bailleur(x[1])],_bR__]]} + var EligibiliteAidesPersonnelleLog=[0]; + function embed_eligibilite_aides_person(x) + {var + _bR0_= + [0, + [0,cst_condition_2_r823_4,caml_call1(Runtime_ocaml_Runtime[10],x[5])], + 0], + _bR1_= + [0, + [0, + cst_coefficents_enfants_garde_$2, + caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[4])], + _bR0_], + _bR2_= + [0, + [0, + cst_nombre_personnes_charge_pr$1, + caml_call1(Runtime_ocaml_Runtime[14],x[3])], + _bR1_], + _bR3_= + [0, + [0,cst_ligibilit$3,caml_call1(Runtime_ocaml_Runtime[12],x[2])], + _bR2_]; + return [7, + _lV_, + [0, + [0, + cst_date_courante$0, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _bR3_]]} + var CategorieCalculAPL=[0]; + function embed_categorie_calcul_a_p_l(x) + {switch(x[0]) + {case 0:var x$0=x[1],_bRZ_=[0,cst_Location,embed_location(x$0)];break; + case 1: + var x$1=x[1],_bRZ_=[0,cst_AccessionPropri_t,embed_proprietaire(x$1)]; + break; + default: + var x$2=x[1],_bRZ_=[0,cst_LogementFoyer,embed_logement_foyer(x$2)]} + return [6,_lW_,_bRZ_]} + var ModeOccupation=[0]; + function embed_mode_occupation(x) + {switch(x[0]) + {case 0:var x$0=x[1],_bRY_=[0,cst_Locataire,embed_location(x$0)];break; + case 1: + var + x$1=x[1], + _bRY_=[0,cst_R_sidentLogementFoyer,embed_logement_foyer(x$1)]; + break; + case 2: + var + x$2=x[1], + _bRY_=[0,cst_AccessionPropri_t_LocalUsa,embed_proprietaire(x$2)]; + break; + case 3: + var x$3=x[1],_bRY_=[0,cst_SousLocataire,embed_location(x$3)];break; + default: + var x$4=x[1],_bRY_=[0,cst_LocationAccession,embed_proprietaire(x$4)]} + return [6,_lX_,_bRY_]} + var Logement=[0]; + function embed_logement(x) + {var + _bRQ_=[0,[0,cst_zone,embed_zone_d_habitation(x[9])],0], + _bRR_= + [0, + [0,cst_surface_m_carr_s,caml_call1(Runtime_ocaml_Runtime[14],x[8])], + _bRQ_], + _bRS_= + [0, + [0, + cst_logement_decent_l89_462, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + _bRR_], + _bRT_=[0,[0,cst_usufruit,embed_parent_ou_autre(x[6])],_bRS_], + _bRU_= + [0, + [0, + cst_lou_ou_sous_lou_des_tiers, + embed_loue_ou_sous_loue_a_des_(x[5])], + _bRT_], + _bRV_=[0,[0,cst_propri_taire,embed_parent_ou_autre(x[4])],_bRU_], + _bRW_=[0,[0,cst_mode_occupation,embed_mode_occupation(x[3])],_bRV_], + _bRX_= + [0, + [0, + cst_est_ehpad_ou_maison_autono, + caml_call1(Runtime_ocaml_Runtime[12],x[2])], + _bRW_]; + return [7, + _lY_, + [0, + [0, + cst_r_sidence_principale, + caml_call1(Runtime_ocaml_Runtime[12],x[1])], + _bRX_]]} + var Menage=[0]; + function embed_menage(x) + {var + _bRK_= + [0, + [0, + cst_enfant_na_tre_apr_s_quatri, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + 0], + _bRL_= + [0, + [0, + cst_condition_rattach_foyer_fi, + caml_call1(Runtime_ocaml_Runtime[12],x[6])], + _bRK_], + _bRM_= + [0,[0,cst_situation_familiale,embed_situation_familiale(x[5])],_bRL_], + _bRN_= + [0, + [0, + cst_nombre_autres_occupants_lo, + caml_call1(Runtime_ocaml_Runtime[14],x[4])], + _bRM_], + _bRO_= + [0, + [0, + cst_personnes_charge, + caml_call2(Runtime_ocaml_Runtime[18],embed_personne_a_charge,x[3])], + _bRN_], + _bRP_=[0,[0,cst_logement,embed_logement(x[2])],_bRO_]; + return [7, + _lZ_, + [0, + [0, + cst_prestations_re_ues, + caml_call2 + (Runtime_ocaml_Runtime[18],embed_prestation_recue,x[1])], + _bRP_]]} + var EligibiliteAidesPersonnelleLog$0=[0]; + function embed_eligibilite_aides_person$0(x) + {var + _bRG_= + [0, + [0, + cst_condition_logement_surface, + caml_call1(Runtime_ocaml_Runtime[10],x[5])], + 0], + _bRH_= + [0, + [0, + cst_condition_logement_r_siden, + caml_call1(Runtime_ocaml_Runtime[10],x[4])], + _bRG_], + _bRI_= + [0, + [0,cst_date_courante_in$3,caml_call1(Runtime_ocaml_Runtime[16],x[3])], + _bRH_], + _bRJ_=[0,[0,cst_demandeur_in,embed_demandeur(x[2])],_bRI_]; + return [7,_l0_,[0,[0,cst_m_nage_in,embed_menage(x[1])],_bRJ_]]} + var EligibiliteAidePersonnaliseeLo$0=[0]; + function embed_eligibilite_aide_personn$0(x) + {var + _bRE_= + [0, + [0,cst_date_courante_in$4,caml_call1(Runtime_ocaml_Runtime[16],x[3])], + 0], + _bRF_=[0,[0,cst_demandeur_in$0,embed_demandeur(x[2])],_bRE_]; + return [7,_l1_,[0,[0,cst_m_nage_in$0,embed_menage(x[1])],_bRF_]]} + var EligibiliteAllocationLogementI=[0]; + function embed_eligibilite_allocation_l$0(x) + {var + _bRB_= + [0, + [0, + cst_b_n_ficie_aide_personnalis, + caml_call1(Runtime_ocaml_Runtime[12],x[4])], + 0], + _bRC_=[0,[0,cst_demandeur_in$1,embed_demandeur(x[3])],_bRB_], + _bRD_=[0,[0,cst_m_nage_in$1,embed_menage(x[2])],_bRC_]; + return [7, + _l2_, + [0, + [0, + cst_date_courante_in$5, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _bRD_]]} + var EligibilitePrimeDeDemenagement$0=[0]; + function embed_eligibilite_prime_de_dem$0(x) + {var + _bRw_= + [0, + [0, + cst_d_penses_justifi_es_r_elle, + caml_call1(Runtime_ocaml_Runtime[13],x[6])], + 0], + _bRx_= + [0, + [0,cst_date_courante_in$6,caml_call1(Runtime_ocaml_Runtime[16],x[5])], + _bRw_], + _bRy_=[0,[0,cst_demandeur_in$2,embed_demandeur(x[4])],_bRx_], + _bRz_=[0,[0,cst_m_nage_in$2,embed_menage(x[3])],_bRy_], + _bRA_= + [0, + [0, + cst_date_emm_nagement_in, + caml_call1(Runtime_ocaml_Runtime[16],x[2])], + _bRz_]; + return [7, + _l3_, + [0, + [0,cst_informations_in,embed_informations_prime_de_de(x[1])], + _bRA_]]} + var RessourcesAidesPersonnelleLoge$0=[0]; + function embed_ressources_aides_personn$0(x) + {var + _bRk_= + [0, + [0, + cst_ressources_m_nage_arrondie, + caml_call1(Runtime_ocaml_Runtime[13],x[13])], + 0], + _bRl_= + [0, + [0, + cst_paiement_logement_distinct, + embed_paiement_logement_distin(x[12])], + _bRk_], + _bRm_= + [0, + [0, + cst_date_demande_ou_reexamen_d, + caml_call1(Runtime_ocaml_Runtime[16],x[11])], + _bRl_], + _bRn_= + [0, + [0, + cst_demandeur_poursuit_des_tud, + caml_call1(Runtime_ocaml_Runtime[12],x[10])], + _bRm_], + _bRo_= + [0, + [0, + cst_condition_ge_bourse_enseig, + caml_call1(Runtime_ocaml_Runtime[12],x[9])], + _bRn_], + _bRp_=[0,[0,cst_mode_occupation_in,embed_mode_occupation(x[8])],_bRo_], + _bRq_= + [0, + [0,cst_situation_familiale_in,embed_situation_familiale(x[7])], + _bRp_], + _bRr_= + [0, + [0, + cst_personnes_charge_in, + caml_call2(Runtime_ocaml_Runtime[18],embed_personne_a_charge,x[6])], + _bRq_], + _bRs_= + [0, + [0, + cst_conjoint_exerce_activit_r_, + caml_call1(Runtime_ocaml_Runtime[12],x[5])], + _bRr_], + _bRt_= + [0, + [0, + cst_demandeur_exerce_activit_r, + caml_call1(Runtime_ocaml_Runtime[12],x[4])], + _bRs_], + _bRu_= + [0, + [0, + cst_personnes_vivant_habituell, + caml_call2 + (Runtime_ocaml_Runtime[18],embed_personne_vivant_habituel,x[3])], + _bRt_], + _bRv_= + [0, + [0, + cst_ressources_conjoint_in, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bRu_]; + return [7, + _l4_, + [0, + [0, + cst_ressources_demandeur_in, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bRv_]]} + var ContributionsSocialesAidesPers$0=[0]; + function embed_contributions_sociales_a$0(x) + {return [7, + _l5_, + [0, + [0, + cst_date_courante_in$7, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + 0]]} + var CalculAidePersonnaliseeLogemen$3=[0]; + function embed_calcul_aide_personnalise$3(x) + {var + _bQ__= + [0, + [0, + cst_logement_meubl_d842_2_in, + caml_call1(Runtime_ocaml_Runtime[12],x[13])], + 0], + _bQ$_= + [0, + [0, + cst_r_duction_loyer_solidarit_$0, + caml_call1(Runtime_ocaml_Runtime[13],x[12])], + _bQ__], + _bRa_= + [0, + [0,cst_colocation_in,caml_call1(Runtime_ocaml_Runtime[12],x[11])], + _bQ$_], + _bRb_= + [0,[0,cst_type_aide_in,embed_type_aides_personnelle_l(x[10])],_bRa_], + _bRc_= + [0, + [0, + cst_g_es_ou_handicap_adultes_h$0, + caml_call1(Runtime_ocaml_Runtime[12],x[9])], + _bRb_], + _bRd_= + [0, + [0, + cst_logement_est_chambre_in, + caml_call1(Runtime_ocaml_Runtime[12],x[8])], + _bRc_], + _bRe_=[0,[0,cst_zone_in,embed_zone_d_habitation(x[7])],_bRd_], + _bRf_= + [0, + [0, + cst_situation_familiale_calcul, + embed_situation_familiale_calc(x[6])], + _bRe_], + _bRg_= + [0, + [0, + cst_nombre_personnes_charge_in, + caml_call1(Runtime_ocaml_Runtime[14],x[5])], + _bRf_], + _bRh_= + [0, + [0,cst_date_courante_in$8,caml_call1(Runtime_ocaml_Runtime[16],x[4])], + _bRg_], + _bRi_= + [0, + [0, + cst_b_n_ficiaire_aide_adulte_o$0, + caml_call1(Runtime_ocaml_Runtime[12],x[3])], + _bRh_], + _bRj_= + [0, + [0, + cst_ressources_m_nage_arrondie$0, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bRi_]; + return [7, + _l6_, + [0, + [0, + cst_loyer_principal_base_in, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bRj_]]} + var CalculEquivalenceLoyerMinimale$0=[0]; + function embed_calcul_equivalence_loyer$0(x) + {var + _bQ8_= + [0, + [0, + cst_n_nombre_parts_d832_25_in, + caml_call1(Runtime_ocaml_Runtime[15],x[3])], + 0], + _bQ9_= + [0, + [0, + cst_condition_2_du_832_25_in, + caml_call1(Runtime_ocaml_Runtime[12],x[2])], + _bQ8_]; + return [7, + _l7_, + [0, + [0, + cst_ressources_m_nage_arrondie$1, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bQ9_]]} + var CalculNombrePartLogementFoyerI=[0]; + function embed_calcul_nombre_part_logem$0(x) + {var + _bQ6_= + [0, + [0, + cst_situation_familiale_calcul$0, + embed_situation_familiale_calc(x[3])], + 0], + _bQ7_= + [0, + [0, + cst_nombre_personnes_charge_in$0, + caml_call1(Runtime_ocaml_Runtime[14],x[2])], + _bQ6_]; + return [7, + _l8_, + [0, + [0, + cst_condition_2_du_832_25_in$0, + caml_call1(Runtime_ocaml_Runtime[12],x[1])], + _bQ7_]]} + var CalculAidePersonnaliseeLogemen$4=[0]; + function embed_calcul_aide_personnalise$4(x) + {var + _bQX_= + [0, + [0, + cst_n_nombre_parts_d832_25_in$0, + caml_call1(Runtime_ocaml_Runtime[10],x[10])], + 0], + _bQY_= + [0, + [0, + cst_condition_2_du_832_25_in$1, + caml_call1(Runtime_ocaml_Runtime[10],x[9])], + _bQX_], + _bQZ_= + [0, + [0,cst_redevance_in,caml_call1(Runtime_ocaml_Runtime[13],x[8])], + _bQY_], + _bQ0_= + [0, + [0,cst_date_courante_in$9,caml_call1(Runtime_ocaml_Runtime[16],x[7])], + _bQZ_], + _bQ1_=[0,[0,cst_zone_in$0,embed_zone_d_habitation(x[6])],_bQ0_], + _bQ2_= + [0, + [0, + cst_situation_familiale_calcul$1, + embed_situation_familiale_calc(x[5])], + _bQ1_], + _bQ3_= + [0, + [0, + cst_nombre_personnes_charge_in$1, + caml_call1(Runtime_ocaml_Runtime[14],x[4])], + _bQ2_], + _bQ4_= + [0, + [0, + cst_ressources_m_nage_arrondie$2, + caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _bQ3_], + _bQ5_= + [0, + [0, + cst_date_conventionnement_in, + caml_call1(Runtime_ocaml_Runtime[16],x[2])], + _bQ4_]; + return [7, + _l9_, + [0, + [0,cst_type_logement_foyer_in,embed_type_logement_foyer(x[1])], + _bQ5_]]} + var CalculNombrePartsAccessionProp$0=[0]; + function embed_calcul_nombre_parts_acce$0(x) + {var + _bQW_= + [0, + [0, + cst_situation_familiale_calcul$2, + embed_situation_familiale_calc(x[2])], + 0]; + return [7, + _l__, + [0, + [0, + cst_nombre_personnes_charge_in$2, + caml_call1(Runtime_ocaml_Runtime[14],x[1])], + _bQW_]]} + var CalculAidePersonnaliseeLogemen$5=[0]; + function embed_calcul_aide_personnalise$5(x) + {var + _bQJ_= + [0, + [0, + cst_date_courante_in$10, + caml_call1(Runtime_ocaml_Runtime[16],x[14])], + 0], + _bQK_= + [0,[0,cst_anciennet_logement_in,embed_neuf_ou_ancien(x[13])],_bQJ_], + _bQL_=[0,[0,cst_type_pr_t_in,embed_type_pret(x[12])],_bQK_], + _bQM_=[0,[0,cst_zone_in$1,embed_zone_d_habitation(x[11])],_bQL_], + _bQN_= + [0, + [0, + cst_situation_r822_11_13_17_in, + caml_call1(Runtime_ocaml_Runtime[12],x[10])], + _bQM_], + _bQO_= + [0, + [0,cst_copropri_t_in,caml_call1(Runtime_ocaml_Runtime[12],x[9])], + _bQN_], + _bQP_= + [0, + [0, + cst_date_entr_e_logement_in, + caml_call1(Runtime_ocaml_Runtime[16],x[8])], + _bQO_], + _bQQ_= + [0, + [0, + cst_local_habit_premi_re_fois_$0, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + _bQP_], + _bQR_= + [0, + [0, + cst_date_signature_pr_t_in, + caml_call1(Runtime_ocaml_Runtime[16],x[6])], + _bQQ_], + _bQS_= + [0, + [0,cst_type_travaux_logement_in,embed_type_travaux_logement_d8(x[5])], + _bQR_], + _bQT_= + [0, + [0, + cst_situation_familiale_calcul$3, + embed_situation_familiale_calc(x[4])], + _bQS_], + _bQU_= + [0, + [0, + cst_nombre_personnes_charge_in$3, + caml_call1(Runtime_ocaml_Runtime[14],x[3])], + _bQT_], + _bQV_= + [0, + [0, + cst_ressources_m_nage_arrondie$3, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bQU_]; + return [7, + _l$_, + [0, + [0, + cst_mensualit_principale_in, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bQV_]]} + var CalculAidePersonnaliseeLogemen$6=[0]; + function embed_calcul_aide_personnalise$6(x) + {var + _bQD_= + [0, + [0, + cst_date_courante_in$11, + caml_call1(Runtime_ocaml_Runtime[16],x[7])], + 0], + _bQE_=[0,[0,cst_zone_in$2,embed_zone_d_habitation(x[6])],_bQD_], + _bQF_= + [0, + [0, + cst_nombre_personnes_charge_in$4, + caml_call1(Runtime_ocaml_Runtime[14],x[5])], + _bQE_], + _bQG_= + [0, + [0,cst_situation_familiale_in$0,embed_situation_familiale(x[4])], + _bQF_], + _bQH_= + [0, + [0, + cst_ressources_m_nage_sans_arr, + caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _bQG_], + _bQI_= + [0,[0,cst_type_aide_in$0,embed_type_aides_personnelle_l(x[2])],_bQH_]; + return [7, + _ma_, + [0, + [0,cst_mode_occupation_in$0,embed_mode_occupation(x[1])], + _bQI_]]} + var CalculAllocationLogementLocati$0=[0]; + function embed_calcul_allocation_logeme$3(x) + {var + _bQq_= + [0, + [0, + cst_changement_logement_d842_4$0, + embed_changement_logement_d842(x[14])], + 0], + _bQr_= + [0, + [0, + cst_logement_meubl_d842_2_in$0, + caml_call1(Runtime_ocaml_Runtime[12],x[13])], + _bQq_], + _bQs_= + [0, + [0, + cst_r_duction_loyer_solidarit_$1, + caml_call1(Runtime_ocaml_Runtime[13],x[12])], + _bQr_], + _bQt_= + [0, + [0,cst_colocation_in$0,caml_call1(Runtime_ocaml_Runtime[12],x[11])], + _bQs_], + _bQu_= + [0,[0,cst_type_aide_in$1,embed_type_aides_personnelle_l(x[10])],_bQt_], + _bQv_= + [0, + [0, + cst_g_es_ou_handicap_adultes_h$1, + caml_call1(Runtime_ocaml_Runtime[12],x[9])], + _bQu_], + _bQw_= + [0, + [0, + cst_logement_est_chambre_in$0, + caml_call1(Runtime_ocaml_Runtime[12],x[8])], + _bQv_], + _bQx_=[0,[0,cst_zone_in$3,embed_zone_d_habitation(x[7])],_bQw_], + _bQy_= + [0, + [0, + cst_situation_familiale_calcul$4, + embed_situation_familiale_calc(x[6])], + _bQx_], + _bQz_= + [0, + [0, + cst_nombre_personnes_charge_in$5, + caml_call1(Runtime_ocaml_Runtime[14],x[5])], + _bQy_], + _bQA_= + [0, + [0, + cst_date_courante_in$12, + caml_call1(Runtime_ocaml_Runtime[16],x[4])], + _bQz_], + _bQB_= + [0, + [0, + cst_b_n_ficiaire_aide_adulte_o$1, + caml_call1(Runtime_ocaml_Runtime[12],x[3])], + _bQA_], + _bQC_= + [0, + [0, + cst_ressources_m_nage_arrondie$4, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bQB_]; + return [7, + _mb_, + [0, + [0, + cst_loyer_principal_in, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bQC_]]} + var CalculAllocationLogementAccess$0=[0]; + function embed_calcul_allocation_logeme$4(x) + {var + _bQe_= + [0, + [0,cst_copropri_t_in$0,caml_call1(Runtime_ocaml_Runtime[12],x[13])], + 0], + _bQf_= + [0, + [0, + cst_charges_mensuelles_pr_t_in, + caml_call1(Runtime_ocaml_Runtime[13],x[12])], + _bQe_], + _bQg_= + [0, + [0, + cst_date_entr_e_logement_in$0, + caml_call1(Runtime_ocaml_Runtime[16],x[11])], + _bQf_], + _bQh_= + [0, + [0, + cst_local_habit_premi_re_fois_$1, + caml_call1(Runtime_ocaml_Runtime[12],x[10])], + _bQg_], + _bQi_= + [0, + [0, + cst_type_travaux_logement_in$0, + embed_type_travaux_logement_r8(x[9])], + _bQh_], + _bQj_= + [0, + [0, + cst_date_signature_pr_t_in$0, + caml_call1(Runtime_ocaml_Runtime[16],x[8])], + _bQi_], + _bQk_= + [0, + [0, + cst_situation_r822_11_13_17_in$0, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + _bQj_], + _bQl_= + [0, + [0, + cst_mensualit_principale_in$0, + caml_call1(Runtime_ocaml_Runtime[13],x[6])], + _bQk_], + _bQm_= + [0, + [0, + cst_date_courante_in$13, + caml_call1(Runtime_ocaml_Runtime[16],x[5])], + _bQl_], + _bQn_=[0,[0,cst_zone_in$4,embed_zone_d_habitation(x[4])],_bQm_], + _bQo_= + [0, + [0, + cst_situation_familiale_calcul$5, + embed_situation_familiale_calc(x[3])], + _bQn_], + _bQp_= + [0, + [0, + cst_nombre_personnes_charge_in$6, + caml_call1(Runtime_ocaml_Runtime[14],x[2])], + _bQo_]; + return [7, + _mc_, + [0, + [0, + cst_ressources_m_nage_arrondie$5, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bQp_]]} + var CalculAllocationLogementFoyerI=[0]; + function embed_calcul_allocation_logeme$5(x) + {var + _bP8_= + [0, + [0, + cst_cat_gorie_quivalence_loyer$0, + embed_categorie_equivalence_lo(x[9])], + 0], + _bP9_= + [0, + [0, + cst_date_courante_in$14, + caml_call1(Runtime_ocaml_Runtime[16],x[8])], + _bP8_], + _bP__=[0,[0,cst_zone_in$5,embed_zone_d_habitation(x[7])],_bP9_], + _bP$_= + [0, + [0, + cst_situation_familiale_calcul$6, + embed_situation_familiale_calc(x[6])], + _bP__], + _bQa_= + [0, + [0, + cst_nombre_personnes_charge_in$7, + caml_call1(Runtime_ocaml_Runtime[14],x[5])], + _bP$_], + _bQb_= + [0, + [0, + cst_ressources_m_nage_arrondie$6, + caml_call1(Runtime_ocaml_Runtime[13],x[4])], + _bQa_], + _bQc_= + [0, + [0,cst_redevance_in$0,caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _bQb_], + _bQd_= + [0, + [0, + cst_date_conventionnement_in$0, + caml_call1(Runtime_ocaml_Runtime[16],x[2])], + _bQc_]; + return [7, + _md_, + [0, + [0, + cst_type_logement_foyer_in$0, + embed_type_logement_foyer(x[1])], + _bQd_]]} + var CalculAllocationLogementIn=[0]; + function embed_calcul_allocation_logeme$6(x) + {var + _bP2_=[0,[0,cst_type_aide_in$2,embed_type_aides_personnelle_l(x[7])],0], + _bP3_= + [0, + [0, + cst_date_courante_in$15, + caml_call1(Runtime_ocaml_Runtime[16],x[6])], + _bP2_], + _bP4_=[0,[0,cst_zone_in$6,embed_zone_d_habitation(x[5])],_bP3_], + _bP5_= + [0, + [0, + cst_nombre_personnes_charge_in$8, + caml_call1(Runtime_ocaml_Runtime[14],x[4])], + _bP4_], + _bP6_= + [0, + [0,cst_situation_familiale_in$1,embed_situation_familiale(x[3])], + _bP5_], + _bP7_= + [0, + [0, + cst_ressources_m_nage_sans_arr$0, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bP6_]; + return [7, + _me_, + [0, + [0,cst_mode_occupation_in$1,embed_mode_occupation(x[1])], + _bP7_]]} + var OuvertureDroitsRetraiteIn=[0]; + function embed_ouverture_droits_retrait$0(x) + {return [7, + _mf_, + [0, + [0, + cst_date_naissance_assur_in, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + 0]]} + var ImpayeDepenseLogementIn=[0]; + function embed_impaye_depense_logement_(x) + {var + _bPX_= + [0, + [0,cst_montant_dette_in,caml_call1(Runtime_ocaml_Runtime[13],x[6])], + 0], + _bPY_= + [0,[0,cst_d_pense_logement_in,embed_depense_logement(x[5])],_bPX_], + _bPZ_= + [0, + [0,cst_montant_charges_in,caml_call1(Runtime_ocaml_Runtime[13],x[4])], + _bPY_], + _bP0_= + [0, + [0,cst_montant_apl_in,caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _bPZ_], + _bP1_=[0,[0,cst_aide_vers_e_in,embed_versement_a(x[2])],_bP0_]; + return [7, + _mg_, + [0, + [0,cst_mode_occupation_in$2,embed_mode_occupation(x[1])], + _bP1_]]} + var CalculetteAidesAuLogementIn=[0]; + function embed_calculette_aides_au_loge$1(x) + {var + _bPU_= + [0, + [0, + cst_ressources_m_nage_prises_e, + caml_call1(Runtime_ocaml_Runtime[13],x[4])], + 0], + _bPV_= + [0, + [0, + cst_date_courante_in$16, + caml_call1(Runtime_ocaml_Runtime[16],x[3])], + _bPU_], + _bPW_=[0,[0,cst_demandeur_in$3,embed_demandeur(x[2])],_bPV_]; + return [7,_mh_,[0,[0,cst_m_nage_in$3,embed_menage(x[1])],_bPW_]]} + var CalculetteAidesAuLogementGarde$0=[0]; + function embed_calculette_aides_au_loge$2(x) + {var + _bPR_= + [0, + [0, + cst_ressources_m_nage_prises_e$0, + caml_call1(Runtime_ocaml_Runtime[13],x[4])], + 0], + _bPS_= + [0, + [0, + cst_date_courante_in$17, + caml_call1(Runtime_ocaml_Runtime[16],x[3])], + _bPR_], + _bPT_=[0,[0,cst_demandeur_in$4,embed_demandeur(x[2])],_bPS_]; + return [7,_mi_,[0,[0,cst_m_nage_in$4,embed_menage(x[1])],_bPT_]]} + var BaseMensuelleAllocationsFamili$2=[0]; + function embed_base_mensuelle_allocatio$2(x) + {return [7, + _mj_, + [0, + [0, + cst_date_courante_in$18, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + 0]]} + var SmicIn$0=[0]; + function embed_smic_in$0(x) + {var _bPQ_=[0,[0,cst_r_sidence_in$2,embed_collectivite$0(x[2])],0]; + return [7, + _mk_, + [0, + [0, + cst_date_courante_in$19, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _bPQ_]]} + var EligibilitePrestationsFamilial$0=[0]; + function embed_eligibilite_prestations_$0(x) + {var + _bPO_=[0,[0,cst_r_sidence_in$3,embed_collectivite$0(x[3])],0], + _bPP_= + [0, + [0, + cst_prestation_courante_in$0, + embed_element_prestations_fami$0(x[2])], + _bPO_]; + return [7, + _ml_, + [0, + [0, + cst_date_courante_in$20, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _bPP_]]} + function contributions_sociales_aides_p(contributions_sociales_aides_p) + {var date_courante=contributions_sociales_aides_p[1]; + try + {var + _bPu_=function(param){return 0}, + _bPv_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mn_,1)}, + _bPw_= + [0, + function(param) + {function _bPM_(param){return 1} + function _bPN_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_mo_,1)} + return caml_call4(Runtime_ocaml_Runtime[63],_mp_,[0],_bPN_,_bPM_)}], + _bPx_=caml_call4(Runtime_ocaml_Runtime[63],_mq_,_bPw_,_bPv_,_bPu_)} + catch(_bPL_) + {_bPL_ = caml_wrap_exception(_bPL_); + if(_bPL_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_mm_]; + throw _bPL_} + var + exonere_csg= + caml_call3 + (Runtime_ocaml_Runtime[28],_mr_,Runtime_ocaml_Runtime[12],_bPx_); + try + {var + _bPy_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_005)}, + _bPz_= + function(param) + {var + _bPJ_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _bPK_=caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bPJ_); + return caml_call2(Runtime_ocaml_Runtime[29],_mt_,_bPK_)}, + _bPA_=caml_call4(Runtime_ocaml_Runtime[63],_mu_,[0],_bPz_,_bPy_)} + catch(_bPI_) + {_bPI_ = caml_wrap_exception(_bPI_); + if(_bPI_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_ms_]; + throw _bPI_} + var + taux_crds= + caml_call3 + (Runtime_ocaml_Runtime[28],_mv_,Runtime_ocaml_Runtime[15],_bPA_); + function _bPB_(param) + {try + {var + _bPC_= + function(param$0) + {return caml_call2(Runtime_ocaml_Runtime[104],param,taux_crds)}, + _bPD_= + function(param) + {var + _bPG_=caml_call3(Runtime_ocaml_Runtime[57],2018,9,1), + _bPH_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bPG_); + return caml_call2(Runtime_ocaml_Runtime[29],_mx_,_bPH_)}, + _bPE_=caml_call4(Runtime_ocaml_Runtime[63],_my_,[0],_bPD_,_bPC_); + return _bPE_} + catch(_bPF_) + {_bPF_ = caml_wrap_exception(_bPF_); + if(_bPF_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_mw_]; + throw _bPF_}} + var + montant= + caml_call3 + (Runtime_ocaml_Runtime[28],_mz_,Runtime_ocaml_Runtime[10],_bPB_); + if(exonere_csg)return [0,montant]; + throw [0,Runtime_ocaml_Runtime[3],_mA_]} + function calcul_equivalence_loyer_minim(calcul_equivalence_loyer_minim) + {var + ressources_menage_arrondies=calcul_equivalence_loyer_minim[1], + condition_2_du_832_25=calcul_equivalence_loyer_minim[2], + n_nombre_parts_d832_25=calcul_equivalence_loyer_minim[3]; + try + {var + _bN3_= + function(param) + {return condition_2_du_832_25 + ?caml_call1(Runtime_ocaml_Runtime[31],cst_7632) + :caml_call1(Runtime_ocaml_Runtime[31],cst_4557)}, + _bN4_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mC_,1)}, + _bN5_=caml_call4(Runtime_ocaml_Runtime[63],_mD_,[0],_bN4_,_bN3_)} + catch(_bPt_) + {_bPt_ = caml_wrap_exception(_bPt_); + if(_bPt_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_mB_]; + throw _bPt_} + var + montant_forfaitaire_d832_26= + caml_call3 + (Runtime_ocaml_Runtime[28],_mE_,Runtime_ocaml_Runtime[13],_bN5_); + try + {var + _bN6_= + function(param) + {var + _bPd_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_48), + _bPe_= + [0,_mG_,caml_call1(Runtime_ocaml_Runtime[31],cst_633129),_bPd_], + _bPf_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32$1), + _bPg_=caml_call1(Runtime_ocaml_Runtime[31],cst_535744), + _bPh_= + [0, + [0,caml_call1(Runtime_ocaml_Runtime[31],cst_633129$0)], + _bPg_, + _bPf_], + _bPi_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_264), + _bPj_=caml_call1(Runtime_ocaml_Runtime[31],cst_389618), + _bPk_= + [0, + [0,caml_call1(Runtime_ocaml_Runtime[31],cst_535744$0)], + _bPj_, + _bPi_], + _bPl_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_216), + _bPm_=caml_call1(Runtime_ocaml_Runtime[31],cst_267871), + _bPn_= + [0, + [0,caml_call1(Runtime_ocaml_Runtime[31],cst_389618$0)], + _bPm_, + _bPl_], + _bPo_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_104), + _bPp_=caml_call1(Runtime_ocaml_Runtime[31],cst_194810), + _bPq_= + [0, + [0,caml_call1(Runtime_ocaml_Runtime[31],cst_267871$0)], + _bPp_, + _bPo_], + _bPr_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_04$0), + _bPs_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$67); + return [0, + [0, + [0,caml_call1(Runtime_ocaml_Runtime[31],cst_194810$0)], + _bPs_, + _bPr_], + _bPq_, + _bPn_, + _bPk_, + _bPh_, + _bPe_]}, + _bN7_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mH_,1)}, + _bN8_= + [0, + function(param) + {function _bO0_(param) + {var + _bO2_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_328), + _bO3_= + [0, + _mI_, + caml_call1(Runtime_ocaml_Runtime[31],cst_409505), + _bO2_], + _bO4_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_232$0), + _bO5_=caml_call1(Runtime_ocaml_Runtime[31],cst_262985), + _bO6_= + [0, + [0,caml_call1(Runtime_ocaml_Runtime[31],cst_409505$0)], + _bO5_, + _bO4_], + _bO7_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_208), + _bO8_=caml_call1(Runtime_ocaml_Runtime[31],cst_204761), + _bO9_= + [0, + [0,caml_call1(Runtime_ocaml_Runtime[31],cst_262985$0)], + _bO8_, + _bO7_], + _bO__=caml_call1(Runtime_ocaml_Runtime[39],cst_0_024), + _bO$_=caml_call1(Runtime_ocaml_Runtime[31],cst_142303), + _bPa_= + [0, + [0,caml_call1(Runtime_ocaml_Runtime[31],cst_204761$0)], + _bO$_, + _bO__], + _bPb_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$68), + _bPc_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$69); + return [0, + [0, + [0,caml_call1(Runtime_ocaml_Runtime[31],cst_142303$0)], + _bPc_, + _bPb_], + _bPa_, + _bO9_, + _bO6_, + _bO3_]} + function _bO1_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_mJ_,condition_2_du_832_25)} + return caml_call4(Runtime_ocaml_Runtime[63],_mK_,[0],_bO1_,_bO0_)}], + _bN9_=caml_call4(Runtime_ocaml_Runtime[63],_mL_,_bN8_,_bN7_,_bN6_)} + catch(_bOZ_) + {_bOZ_ = caml_wrap_exception(_bOZ_); + if(_bOZ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_mF_]; + throw _bOZ_} + var + _bN__=caml_call1(Runtime_ocaml_Runtime[18],embed_tranche_revenu), + tranches_revenus_d832_26= + caml_call3(Runtime_ocaml_Runtime[28],_mM_,_bN__,_bN9_); + try + {var + _bN$_= + function(param) + {function _bOS_(tranche) + {var + _bOT_=tranche[3], + _bOU_=caml_call1(Runtime_ocaml_Runtime[70],tranche[2]), + _bOV_= + caml_call2 + (Runtime_ocaml_Runtime[103],_bOU_,n_nombre_parts_d832_25), + _bOW_=tranche[1]; + if(0 === _bOW_[0]) + var + tranche_haut=_bOW_[1], + _bOX_=caml_call1(Runtime_ocaml_Runtime[70],tranche_haut), + _bOY_= + [0, + caml_call2 + (Runtime_ocaml_Runtime[103],_bOX_,n_nombre_parts_d832_25)]; + else + var _bOY_=_mO_; + return [0,_bOY_,_bOV_,_bOT_]} + return caml_call2 + (Runtime_ocaml_Runtime[87],_bOS_,tranches_revenus_d832_26)}, + _bOa_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mP_,1)}, + _bOb_=caml_call4(Runtime_ocaml_Runtime[63],_mQ_,[0],_bOa_,_bN$_)} + catch(_bOR_) + {_bOR_ = caml_wrap_exception(_bOR_); + if(_bOR_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_mN_]; + throw _bOR_} + var + _bOc_= + caml_call1(Runtime_ocaml_Runtime[18],embed_tranche_revenu_decimal), + tranches_revenus_d832_26_multi= + caml_call3(Runtime_ocaml_Runtime[28],_mR_,_bOc_,_bOb_); + try + {var + _bOd_= + function(param) + {var + ressources_menage_arrondies$0= + caml_call1 + (Runtime_ocaml_Runtime[70],ressources_menage_arrondies), + _bOA_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$11), + _bOB_= + caml_call1 + (Runtime_ocaml_Runtime[70],montant_forfaitaire_d832_26), + _bOC_= + caml_call2 + (Runtime_ocaml_Runtime[103],_bOB_,n_nombre_parts_d832_25); + function _bOD_(tranche) + {if + (caml_call2 + (Runtime_ocaml_Runtime[116], + ressources_menage_arrondies$0, + tranche[2])) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$70); + var _bOK_=tranche[1]; + if(0 === _bOK_[0]) + {var tranche_haut=_bOK_[1]; + if + (caml_call2 + (Runtime_ocaml_Runtime[126], + ressources_menage_arrondies$0, + tranche_haut)) + {var + _bOL_=tranche[3], + _bOM_= + caml_call2 + (Runtime_ocaml_Runtime[97],tranche_haut,tranche[2]); + return caml_call2(Runtime_ocaml_Runtime[103],_bOM_,_bOL_)} + var + _bON_=tranche[3], + _bOO_= + caml_call2 + (Runtime_ocaml_Runtime[97], + ressources_menage_arrondies$0, + tranche[2]); + return caml_call2(Runtime_ocaml_Runtime[103],_bOO_,_bON_)} + var + _bOP_=tranche[3], + _bOQ_= + caml_call2 + (Runtime_ocaml_Runtime[97], + ressources_menage_arrondies$0, + tranche[2]); + return caml_call2(Runtime_ocaml_Runtime[103],_bOQ_,_bOP_)} + var + _bOE_= + caml_call2 + (Runtime_ocaml_Runtime[87], + _bOD_, + tranches_revenus_d832_26_multi), + _bOF_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$71); + function _bOG_(sum1,sum2) + {return caml_call2(Runtime_ocaml_Runtime[92],sum1,sum2)} + var + _bOH_=caml_call3(Runtime_ocaml_Runtime[88],_bOG_,_bOF_,_bOE_), + _bOI_=caml_call2(Runtime_ocaml_Runtime[92],_bOH_,_bOC_), + _bOJ_=caml_call2(Runtime_ocaml_Runtime[107],_bOI_,_bOA_); + return caml_call1(Runtime_ocaml_Runtime[71],_bOJ_)}, + _bOe_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mT_,1)}, + _bOf_= + [0, + function(param) + {function _bOi_(param) + {var + ressources_menage_arrondies$0= + caml_call1 + (Runtime_ocaml_Runtime[70],ressources_menage_arrondies), + _bOk_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$12), + _bOl_= + caml_call1 + (Runtime_ocaml_Runtime[70],montant_forfaitaire_d832_26); + function _bOm_(tranche) + {if + (caml_call2 + (Runtime_ocaml_Runtime[116], + ressources_menage_arrondies$0, + tranche[2])) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$72); + var _bOt_=tranche[1]; + if(0 === _bOt_[0]) + {var tranche_haut=_bOt_[1]; + if + (caml_call2 + (Runtime_ocaml_Runtime[126], + ressources_menage_arrondies$0, + tranche_haut)) + {var + _bOu_=tranche[3], + _bOv_= + caml_call2 + (Runtime_ocaml_Runtime[97],tranche_haut,tranche[2]); + return caml_call2(Runtime_ocaml_Runtime[103],_bOv_,_bOu_)} + var + _bOw_=tranche[3], + _bOx_= + caml_call2 + (Runtime_ocaml_Runtime[97], + ressources_menage_arrondies$0, + tranche[2]); + return caml_call2(Runtime_ocaml_Runtime[103],_bOx_,_bOw_)} + var + _bOy_=tranche[3], + _bOz_= + caml_call2 + (Runtime_ocaml_Runtime[97], + ressources_menage_arrondies$0, + tranche[2]); + return caml_call2(Runtime_ocaml_Runtime[103],_bOz_,_bOy_)} + var + _bOn_= + caml_call2 + (Runtime_ocaml_Runtime[87], + _bOm_, + tranches_revenus_d832_26_multi), + _bOo_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$73); + function _bOp_(sum1,sum2) + {return caml_call2(Runtime_ocaml_Runtime[92],sum1,sum2)} + var + _bOq_=caml_call3(Runtime_ocaml_Runtime[88],_bOp_,_bOo_,_bOn_), + _bOr_=caml_call2(Runtime_ocaml_Runtime[92],_bOq_,_bOl_), + _bOs_=caml_call2(Runtime_ocaml_Runtime[107],_bOr_,_bOk_); + return caml_call1(Runtime_ocaml_Runtime[71],_bOs_)} + function _bOj_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_mU_,condition_2_du_832_25)} + return caml_call4(Runtime_ocaml_Runtime[63],_mV_,[0],_bOj_,_bOi_)}], + _bOg_=caml_call4(Runtime_ocaml_Runtime[63],_mW_,_bOf_,_bOe_,_bOd_)} + catch(_bOh_) + {_bOh_ = caml_wrap_exception(_bOh_); + if(_bOh_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_mS_]; + throw _bOh_} + var + montant= + caml_call3 + (Runtime_ocaml_Runtime[28],_mX_,Runtime_ocaml_Runtime[13],_bOg_); + return [0,montant]} + function calcul_nombre_part_logement_fo(calcul_nombre_part_logement_fo) + {var + condition_2_du_832_25=calcul_nombre_part_logement_fo[1], + nombre_personnes_a_charge=calcul_nombre_part_logement_fo[2], + situation_familiale_calcul_apl=calcul_nombre_part_logement_fo[3]; + try + {var + _bNA_= + function(param) + {var _bNS_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$74); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNS_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[39],cst_1_4) + :caml_call1(Runtime_ocaml_Runtime[39],cst_1_8); + var _bNT_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$28); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNT_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_2_5); + var _bNU_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$17); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNU_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_3$3); + var _bNV_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$4); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNV_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_3_7); + var _bNW_=caml_call1(Runtime_ocaml_Runtime[46],cst_4); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNW_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_4_3); + var + _bNX_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$0), + _bNY_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bNX_), + _bNZ_=caml_call1(Runtime_ocaml_Runtime[69],_bNY_), + _bN0_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$1), + _bN1_=caml_call2(Runtime_ocaml_Runtime[103],_bN0_,_bNZ_), + _bN2_=caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$0); + return caml_call2(Runtime_ocaml_Runtime[92],_bN2_,_bN1_)}, + _bNB_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mZ_,1)}, + _bNC_= + [0, + function(param) + {function _bNF_(param) + {var _bNH_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$75); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNH_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[39],cst_1_2) + :caml_call1(Runtime_ocaml_Runtime[39],cst_1_5); + var _bNI_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$29); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNI_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$0); + var _bNJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$18); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNJ_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_3$5); + var _bNK_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$6); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNK_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_3_7$0); + var _bNL_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$1); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNL_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$1); + var + _bNM_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$2), + _bNN_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bNM_), + _bNO_=caml_call1(Runtime_ocaml_Runtime[69],_bNN_), + _bNP_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$2), + _bNQ_=caml_call2(Runtime_ocaml_Runtime[103],_bNP_,_bNO_), + _bNR_=caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$2); + return caml_call2(Runtime_ocaml_Runtime[92],_bNR_,_bNQ_)} + function _bNG_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_m0_,condition_2_du_832_25)} + return caml_call4(Runtime_ocaml_Runtime[63],_m1_,[0],_bNG_,_bNF_)}], + _bND_=caml_call4(Runtime_ocaml_Runtime[63],_m2_,_bNC_,_bNB_,_bNA_)} + catch(_bNE_) + {_bNE_ = caml_wrap_exception(_bNE_); + if(_bNE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_mY_]; + throw _bNE_} + var + n_nombre_parts_d832_25= + caml_call3 + (Runtime_ocaml_Runtime[28],_m3_,Runtime_ocaml_Runtime[15],_bND_); + return [0,n_nombre_parts_d832_25]} + function calcul_nombre_parts_accession_(calcul_nombre_parts_accession_) + {var + nombre_personnes_a_charge=calcul_nombre_parts_accession_[1], + situation_familiale_calcul_apl=calcul_nombre_parts_accession_[2]; + try + {var + _bNl_= + function(param) + {var _bNp_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$76); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNp_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[39],cst_1_4$0) + :caml_call1(Runtime_ocaml_Runtime[39],cst_1_8$0); + var _bNq_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$30); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNq_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$1); + var _bNr_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$19); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNr_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_3$7); + var _bNs_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$8); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNs_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_3_7$1); + var _bNt_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$3); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNt_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$3); + var + _bNu_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$4), + _bNv_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bNu_), + _bNw_=caml_call1(Runtime_ocaml_Runtime[69],_bNv_), + _bNx_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$3), + _bNy_=caml_call2(Runtime_ocaml_Runtime[103],_bNx_,_bNw_), + _bNz_=caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$4); + return caml_call2(Runtime_ocaml_Runtime[92],_bNz_,_bNy_)}, + _bNm_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_m5_,1)}, + _bNn_=caml_call4(Runtime_ocaml_Runtime[63],_m6_,[0],_bNm_,_bNl_)} + catch(_bNo_) + {_bNo_ = caml_wrap_exception(_bNo_); + if(_bNo_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_m4_]; + throw _bNo_} + var + n_nombre_parts_d832_11= + caml_call3 + (Runtime_ocaml_Runtime[28],_m7_,Runtime_ocaml_Runtime[15],_bNn_); + return [0,n_nombre_parts_d832_11]} + function ouverture_droits_retraite(ouverture_droits_retraite_in) + {var date_naissance_assure=ouverture_droits_retraite_in[1]; + try + {var + _bMB_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bMC_=function(param){return 0}, + _bMD_= + function(param) + {function _bNe_(param) + {var + _bNj_=caml_call3(Runtime_ocaml_Runtime[60],0,7,0), + _bNk_=caml_call3(Runtime_ocaml_Runtime[60],61,0,0); + return caml_call2(Runtime_ocaml_Runtime[95],_bNk_,_bNj_)} + function _bNf_(param) + {var + _bNg_=caml_call1(Runtime_ocaml_Runtime[46],cst_1954), + _bNh_= + caml_call1(Runtime_ocaml_Runtime[74],date_naissance_assure), + _bNi_=caml_call2(Runtime_ocaml_Runtime[86],_bNh_,_bNg_); + return caml_call2(Runtime_ocaml_Runtime[29],_m9_,_bNi_)} + return caml_call4(Runtime_ocaml_Runtime[63],_m__,[0],_bNf_,_bNe_)}, + _bME_= + function(param) + {function _bM9_(param) + {var + _bNc_=caml_call3(Runtime_ocaml_Runtime[60],0,2,0), + _bNd_=caml_call3(Runtime_ocaml_Runtime[60],61,0,0); + return caml_call2(Runtime_ocaml_Runtime[95],_bNd_,_bNc_)} + function _bM__(param) + {var + _bM$_=caml_call1(Runtime_ocaml_Runtime[46],cst_1953), + _bNa_= + caml_call1(Runtime_ocaml_Runtime[74],date_naissance_assure), + _bNb_=caml_call2(Runtime_ocaml_Runtime[86],_bNa_,_bM$_); + return caml_call2(Runtime_ocaml_Runtime[29],_m$_,_bNb_)} + return caml_call4(Runtime_ocaml_Runtime[63],_na_,[0],_bM__,_bM9_)}, + _bMF_= + function(param) + {function _bM2_(param) + {var + _bM7_=caml_call3(Runtime_ocaml_Runtime[60],0,9,0), + _bM8_=caml_call3(Runtime_ocaml_Runtime[60],60,0,0); + return caml_call2(Runtime_ocaml_Runtime[95],_bM8_,_bM7_)} + function _bM3_(param) + {var + _bM4_=caml_call1(Runtime_ocaml_Runtime[46],cst_1952), + _bM5_= + caml_call1(Runtime_ocaml_Runtime[74],date_naissance_assure), + _bM6_=caml_call2(Runtime_ocaml_Runtime[86],_bM5_,_bM4_); + return caml_call2(Runtime_ocaml_Runtime[29],_nb_,_bM6_)} + return caml_call4(Runtime_ocaml_Runtime[63],_nc_,[0],_bM3_,_bM2_)}, + _bMG_= + function(param) + {function _bMT_(param) + {var + _bM0_=caml_call3(Runtime_ocaml_Runtime[60],0,4,0), + _bM1_=caml_call3(Runtime_ocaml_Runtime[60],60,0,0); + return caml_call2(Runtime_ocaml_Runtime[95],_bM1_,_bM0_)} + function _bMU_(param) + {var + _bMV_=caml_call3(Runtime_ocaml_Runtime[57],1951,12,31), + _bMW_= + caml_call2 + (Runtime_ocaml_Runtime[119],date_naissance_assure,_bMV_), + _bMX_=caml_call3(Runtime_ocaml_Runtime[57],1951,7,1), + _bMY_= + caml_call2 + (Runtime_ocaml_Runtime[129],date_naissance_assure,_bMX_), + _bMZ_=caml_call2(Runtime_ocaml_Runtime[83],_bMY_,_bMW_); + return caml_call2(Runtime_ocaml_Runtime[29],_nd_,_bMZ_)} + return caml_call4(Runtime_ocaml_Runtime[63],_ne_,[0],_bMU_,_bMT_)}, + _bMH_= + function(param) + {function _bMP_(param) + {return caml_call3(Runtime_ocaml_Runtime[60],60,0,0)} + function _bMQ_(param) + {var + _bMR_=caml_call3(Runtime_ocaml_Runtime[57],1951,7,1), + _bMS_= + caml_call2 + (Runtime_ocaml_Runtime[114],date_naissance_assure,_bMR_); + return caml_call2(Runtime_ocaml_Runtime[29],_nf_,_bMS_)} + return caml_call4(Runtime_ocaml_Runtime[63],_ng_,[0],_bMQ_,_bMP_)}, + _bMI_= + [0, + function(param) + {function _bML_(param) + {return caml_call3(Runtime_ocaml_Runtime[60],62,0,0)} + function _bMM_(param) + {var + _bMN_=caml_call3(Runtime_ocaml_Runtime[57],1955,1,1), + _bMO_= + caml_call2 + (Runtime_ocaml_Runtime[129],date_naissance_assure,_bMN_); + return caml_call2(Runtime_ocaml_Runtime[29],_nh_,_bMO_)} + return caml_call4(Runtime_ocaml_Runtime[63],_ni_,[0],_bMM_,_bML_)}, + _bMH_, + _bMG_, + _bMF_, + _bME_, + _bMD_], + _bMJ_=caml_call4(Runtime_ocaml_Runtime[63],_nj_,_bMI_,_bMC_,_bMB_)} + catch(_bMK_) + {_bMK_ = caml_wrap_exception(_bMK_); + if(_bMK_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_m8_]; + throw _bMK_} + var + age_ouverture_droit= + caml_call3 + (Runtime_ocaml_Runtime[28],_nk_,Runtime_ocaml_Runtime[17],_bMJ_); + return [0,age_ouverture_droit]} + function impaye_depense_logement(impaye_depense_logement_in) + {var + mode_occupation=impaye_depense_logement_in[1], + aide_versee=impaye_depense_logement_in[2], + montant_apl=impaye_depense_logement_in[3], + montant_charges=impaye_depense_logement_in[4], + depense_logement=impaye_depense_logement_in[5], + montant_dette=impaye_depense_logement_in[6]; + try + {var + _bLj_= + function(param) + {switch(mode_occupation[0]) + {case 0:return _nm_; + case 1:return _nn_; + case 2:return _no_; + case 3:return _np_; + default:return _nq_}}, + _bLk_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_nr_,1)}, + _bLl_=caml_call4(Runtime_ocaml_Runtime[63],_ns_,[0],_bLk_,_bLj_)} + catch(_bMA_) + {_bMA_ = caml_wrap_exception(_bMA_); + if(_bMA_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_nl_]; + throw _bMA_} + var + mode_occupation_impaye= + caml_call3 + (Runtime_ocaml_Runtime[28],_nt_,embed_mode_occupation_impaye,_bLl_); + try + {var + _bLm_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bLn_=function(param){return 0}, + _bLo_= + [0, + function(param) + {function _bMt_(param){return depense_logement} + function _bMu_(param) + {var _bMz_=0 === mode_occupation_impaye[0]?1:0; + return caml_call2(Runtime_ocaml_Runtime[29],_nv_,_bMz_)} + var + _bMv_= + [0, + function(param) + {function _bMw_(param){return depense_logement} + function _bMx_(param) + {var _bMy_=0 === mode_occupation_impaye[0]?0:1; + return caml_call2(Runtime_ocaml_Runtime[29],_nw_,_bMy_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_nx_,[0],_bMx_,_bMw_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_ny_,_bMv_,_bMu_,_bMt_)}], + _bLp_=caml_call4(Runtime_ocaml_Runtime[63],_nz_,_bLo_,_bLn_,_bLm_)} + catch(_bMs_) + {_bMs_ = caml_wrap_exception(_bMs_); + if(_bMs_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_nu_]; + throw _bMs_} + var + depense_logement_brute= + caml_call3 + (Runtime_ocaml_Runtime[28],_nA_,embed_depense_logement,_bLp_); + try + {var + _bLq_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bLr_=function(param){return 0}, + _bLs_= + function(param) + {function _bMn_(param) + {switch(depense_logement[0]) + {case 0: + var + total_echeances=depense_logement[1], + _bMq_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$13), + _bMr_= + caml_call2(Runtime_ocaml_Runtime[104],montant_apl,_bMq_); + return [0, + caml_call2(Runtime_ocaml_Runtime[98],total_echeances,_bMr_)]; + case 1: + var mensualite=depense_logement[1]; + return [1, + caml_call2(Runtime_ocaml_Runtime[98],mensualite,montant_apl)]; + default:var loyer=depense_logement[1];return [2,loyer]}} + function _bMo_(param) + {var _bMp_=0 === mode_occupation_impaye[0]?0:1; + return caml_call2(Runtime_ocaml_Runtime[29],_nC_,_bMp_)} + return caml_call4(Runtime_ocaml_Runtime[63],_nD_,[0],_bMo_,_bMn_)}, + _bLt_= + [0, + function(param) + {function _bMk_(param) + {switch(depense_logement_brute[0]) + {case 0:var total=depense_logement_brute[1];return [0,total]; + case 1: + var mensualite=depense_logement_brute[1]; + return [1,mensualite]; + default: + var montant_loyer=depense_logement_brute[1]; + return [2, + caml_call2 + (Runtime_ocaml_Runtime[98],montant_loyer,montant_apl)]}} + function _bMl_(param) + {var _bMm_=0 === mode_occupation_impaye[0]?1:0; + return caml_call2(Runtime_ocaml_Runtime[29],_nE_,_bMm_)} + return caml_call4(Runtime_ocaml_Runtime[63],_nF_,[0],_bMl_,_bMk_)}, + _bLs_], + _bLu_=caml_call4(Runtime_ocaml_Runtime[63],_nG_,_bLt_,_bLr_,_bLq_)} + catch(_bMj_) + {_bMj_ = caml_wrap_exception(_bMj_); + if(_bMj_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_nB_]; + throw _bMj_} + var + depense_logement_nette= + caml_call3 + (Runtime_ocaml_Runtime[28],_nH_,embed_depense_logement,_bLu_); + try + {var + _bLv_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bLw_=function(param){return 0}, + _bLx_= + function(param) + {function _bMa_(param) + {switch(depense_logement_nette[0]) + {case 0: + var + echeance_pret_nette=depense_logement_nette[1], + _bMf_=caml_call1(Runtime_ocaml_Runtime[39],cst_6), + _bMg_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$31), + _bMh_=caml_call2(Runtime_ocaml_Runtime[107],_bMg_,_bMf_); + return caml_call2 + (Runtime_ocaml_Runtime[104],echeance_pret_nette,_bMh_); + case 1: + var + mensualite_nette=depense_logement_nette[1], + _bMi_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$20); + return caml_call2 + (Runtime_ocaml_Runtime[104],mensualite_nette,_bMi_); + default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$77)}} + function _bMb_(param) + {switch(aide_versee[0]) + {case 0:var _bMc_=0;break; + case 1:var _bMc_=0;break; + default:var _bMc_=1} + var + _bMd_=0 === mode_occupation_impaye[0]?0:1, + _bMe_=caml_call2(Runtime_ocaml_Runtime[83],_bMd_,_bMc_); + return caml_call2(Runtime_ocaml_Runtime[29],_nJ_,_bMe_)} + return caml_call4(Runtime_ocaml_Runtime[63],_nK_,[0],_bMb_,_bMa_)}, + _bLy_= + function(param) + {function _bL3_(param) + {switch(depense_logement_brute[0]) + {case 0: + var + echeance_pret_brute=depense_logement_brute[1], + _bL8_=caml_call1(Runtime_ocaml_Runtime[39],cst_6$0), + _bL9_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$32), + _bL__=caml_call2(Runtime_ocaml_Runtime[107],_bL9_,_bL8_); + return caml_call2 + (Runtime_ocaml_Runtime[104],echeance_pret_brute,_bL__); + case 1: + var + mensualite_brute=depense_logement_brute[1], + _bL$_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$21); + return caml_call2 + (Runtime_ocaml_Runtime[104],mensualite_brute,_bL$_); + default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$78)}} + function _bL4_(param) + {switch(aide_versee[0]) + {case 0:var _bL5_=0;break; + case 1:var _bL5_=1;break; + default:var _bL5_=0} + var + _bL6_=0 === mode_occupation_impaye[0]?0:1, + _bL7_=caml_call2(Runtime_ocaml_Runtime[83],_bL6_,_bL5_); + return caml_call2(Runtime_ocaml_Runtime[29],_nL_,_bL7_)} + return caml_call4(Runtime_ocaml_Runtime[63],_nM_,[0],_bL4_,_bL3_)}, + _bLz_= + function(param) + {function _bLW_(param) + {switch(depense_logement_nette[0]) + {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$79); + case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$80); + default: + var + loyer_net=depense_logement_nette[1], + _bL1_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$22), + _bL2_= + caml_call2 + (Runtime_ocaml_Runtime[93],loyer_net,montant_charges); + return caml_call2(Runtime_ocaml_Runtime[104],_bL2_,_bL1_)}} + function _bLX_(param) + {switch(aide_versee[0]) + {case 0:var _bLY_=1;break; + case 1:var _bLY_=0;break; + default:var _bLY_=0} + var + _bLZ_=0 === mode_occupation_impaye[0]?1:0, + _bL0_=caml_call2(Runtime_ocaml_Runtime[83],_bLZ_,_bLY_); + return caml_call2(Runtime_ocaml_Runtime[29],_nN_,_bL0_)} + return caml_call4(Runtime_ocaml_Runtime[63],_nO_,[0],_bLX_,_bLW_)}, + _bLA_= + [0, + function(param) + {function _bLP_(param) + {switch(depense_logement_brute[0]) + {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$81); + case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$82); + default: + var + loyer_brut=depense_logement_brute[1], + _bLU_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$23), + _bLV_= + caml_call2 + (Runtime_ocaml_Runtime[93],loyer_brut,montant_charges); + return caml_call2(Runtime_ocaml_Runtime[104],_bLV_,_bLU_)}} + function _bLQ_(param) + {switch(aide_versee[0]) + {case 0:var _bLR_=0;break; + case 1:var _bLR_=1;break; + default:var _bLR_=0} + var + _bLS_=0 === mode_occupation_impaye[0]?1:0, + _bLT_=caml_call2(Runtime_ocaml_Runtime[83],_bLS_,_bLR_); + return caml_call2(Runtime_ocaml_Runtime[29],_nP_,_bLT_)} + return caml_call4(Runtime_ocaml_Runtime[63],_nQ_,[0],_bLQ_,_bLP_)}, + _bLz_, + _bLy_, + _bLx_], + _bLB_=caml_call4(Runtime_ocaml_Runtime[63],_nR_,_bLA_,_bLw_,_bLv_)} + catch(_bLO_) + {_bLO_ = caml_wrap_exception(_bLO_); + if(_bLO_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_nI_]; + throw _bLO_} + var + seuil_impaye_depense_de_logeme= + caml_call3 + (Runtime_ocaml_Runtime[28],_nS_,Runtime_ocaml_Runtime[13],_bLB_); + try + {var + _bLC_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bLD_=function(param){return 0}, + _bLE_= + [0, + function(param) + {function _bLH_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[127], + montant_dette, + seuil_impaye_depense_de_logeme) + ?montant_dette + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$83)} + function _bLI_(param) + {var _bLN_=0 === mode_occupation_impaye[0]?1:0; + return caml_call2(Runtime_ocaml_Runtime[29],_nU_,_bLN_)} + var + _bLJ_= + [0, + function(param) + {function _bLK_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[127], + montant_dette, + seuil_impaye_depense_de_logeme) + ?montant_dette + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$84)} + function _bLL_(param) + {var _bLM_=0 === mode_occupation_impaye[0]?0:1; + return caml_call2(Runtime_ocaml_Runtime[29],_nV_,_bLM_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_nW_,[0],_bLL_,_bLK_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_nX_,_bLJ_,_bLI_,_bLH_)}], + _bLF_=caml_call4(Runtime_ocaml_Runtime[63],_nY_,_bLE_,_bLD_,_bLC_)} + catch(_bLG_) + {_bLG_ = caml_wrap_exception(_bLG_); + if(_bLG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_nT_]; + throw _bLG_} + var + montant_impaye= + caml_call3 + (Runtime_ocaml_Runtime[28],_nZ_,Runtime_ocaml_Runtime[13],_bLF_); + return [0,montant_impaye]} + function base_mensuelle_allocations_fam$5(base_mensuelle_allocations_fam) + {var date_courante=base_mensuelle_allocations_fam[1]; + try + {var + _bKL_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bKM_=function(param){return 0}, + _bKN_= + function(param) + {function _bLc_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_42228$0)} + function _bLd_(param) + {var + _bLe_=caml_call3(Runtime_ocaml_Runtime[57],2023,4,1), + _bLf_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bLe_), + _bLg_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,1), + _bLh_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bLg_), + _bLi_=caml_call2(Runtime_ocaml_Runtime[83],_bLh_,_bLf_); + return caml_call2(Runtime_ocaml_Runtime[29],_n1_,_bLi_)} + return caml_call4(Runtime_ocaml_Runtime[63],_n2_,[0],_bLd_,_bLc_)}, + _bKO_= + function(param) + {function _bK7_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_41481$0)} + function _bK8_(param) + {var + _bK9_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,1), + _bK__= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bK9_), + _bK$_=caml_call3(Runtime_ocaml_Runtime[57],2021,4,1), + _bLa_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bK$_), + _bLb_=caml_call2(Runtime_ocaml_Runtime[83],_bLa_,_bK__); + return caml_call2(Runtime_ocaml_Runtime[29],_n3_,_bLb_)} + return caml_call4(Runtime_ocaml_Runtime[63],_n4_,[0],_bK8_,_bK7_)}, + _bKP_= + function(param) + {function _bK0_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_41440$0)} + function _bK1_(param) + {var + _bK2_=caml_call3(Runtime_ocaml_Runtime[57],2021,4,1), + _bK3_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bK2_), + _bK4_=caml_call3(Runtime_ocaml_Runtime[57],2020,4,1), + _bK5_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bK4_), + _bK6_=caml_call2(Runtime_ocaml_Runtime[83],_bK5_,_bK3_); + return caml_call2(Runtime_ocaml_Runtime[29],_n5_,_bK6_)} + return caml_call4(Runtime_ocaml_Runtime[63],_n6_,[0],_bK1_,_bK0_)}, + _bKQ_= + [0, + function(param) + {function _bKT_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_41316$0)} + function _bKU_(param) + {var + _bKV_=caml_call3(Runtime_ocaml_Runtime[57],2020,4,1), + _bKW_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bKV_), + _bKX_=caml_call3(Runtime_ocaml_Runtime[57],2019,4,1), + _bKY_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bKX_), + _bKZ_=caml_call2(Runtime_ocaml_Runtime[83],_bKY_,_bKW_); + return caml_call2(Runtime_ocaml_Runtime[29],_n7_,_bKZ_)} + return caml_call4(Runtime_ocaml_Runtime[63],_n8_,[0],_bKU_,_bKT_)}, + _bKP_, + _bKO_, + _bKN_], + _bKR_=caml_call4(Runtime_ocaml_Runtime[63],_n9_,_bKQ_,_bKM_,_bKL_)} + catch(_bKS_) + {_bKS_ = caml_wrap_exception(_bKS_); + if(_bKS_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_n0_]; + throw _bKS_} + var + montant= + caml_call3 + (Runtime_ocaml_Runtime[28],_n__,Runtime_ocaml_Runtime[13],_bKR_); + return [0,montant]} + function smic$1(smic_in) + {var date_courante=smic_in[1],residence=smic_in[2]; + try + {var + _bGZ_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bG0_=function(param){return 0}, + _bG1_= + function(param) + {function _bKC_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_851$0)} + function _bKD_(param) + {var + _bKE_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oa_), + _bKF_=caml_call3(Runtime_ocaml_Runtime[57],2023,12,31), + _bKG_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bKF_), + _bKH_=caml_call2(Runtime_ocaml_Runtime[83],_bKG_,_bKE_), + _bKI_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), + _bKJ_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bKI_), + _bKK_=caml_call2(Runtime_ocaml_Runtime[83],_bKJ_,_bKH_); + return caml_call2(Runtime_ocaml_Runtime[29],_ob_,_bKK_)} + return caml_call4(Runtime_ocaml_Runtime[63],_oc_,[0],_bKD_,_bKC_)}, + _bG2_= + function(param) + {function _bKf_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1127$0)} + function _bKg_(param) + {var + _bKh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_od_), + _bKi_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oe_), + _bKj_=caml_call2(Runtime_ocaml_Runtime[84],_bKi_,_bKh_), + _bKk_=caml_call2(Runtime_ocaml_Runtime[86],residence,_of_), + _bKl_=caml_call2(Runtime_ocaml_Runtime[84],_bKk_,_bKj_), + _bKm_=caml_call2(Runtime_ocaml_Runtime[86],residence,_og_), + _bKn_=caml_call2(Runtime_ocaml_Runtime[84],_bKm_,_bKl_), + _bKo_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oh_), + _bKp_=caml_call2(Runtime_ocaml_Runtime[84],_bKo_,_bKn_), + _bKq_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oi_), + _bKr_=caml_call2(Runtime_ocaml_Runtime[84],_bKq_,_bKp_), + _bKs_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oj_), + _bKt_=caml_call2(Runtime_ocaml_Runtime[84],_bKs_,_bKr_), + _bKu_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ok_), + _bKv_=caml_call2(Runtime_ocaml_Runtime[84],_bKu_,_bKt_), + _bKw_=caml_call3(Runtime_ocaml_Runtime[57],2023,12,31), + _bKx_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bKw_), + _bKy_=caml_call2(Runtime_ocaml_Runtime[83],_bKx_,_bKv_), + _bKz_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), + _bKA_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bKz_), + _bKB_=caml_call2(Runtime_ocaml_Runtime[83],_bKA_,_bKy_); + return caml_call2(Runtime_ocaml_Runtime[29],_ol_,_bKB_)} + return caml_call4(Runtime_ocaml_Runtime[63],_om_,[0],_bKg_,_bKf_)}, + _bG3_= + function(param) + {function _bJ8_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_835$0)} + function _bJ9_(param) + {var + _bJ__=caml_call2(Runtime_ocaml_Runtime[86],residence,_on_), + _bJ$_=caml_call3(Runtime_ocaml_Runtime[57],2022,12,31), + _bKa_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bJ$_), + _bKb_=caml_call2(Runtime_ocaml_Runtime[83],_bKa_,_bJ__), + _bKc_=caml_call3(Runtime_ocaml_Runtime[57],2022,8,1), + _bKd_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bKc_), + _bKe_=caml_call2(Runtime_ocaml_Runtime[83],_bKd_,_bKb_); + return caml_call2(Runtime_ocaml_Runtime[29],_oo_,_bKe_)} + return caml_call4(Runtime_ocaml_Runtime[63],_op_,[0],_bJ9_,_bJ8_)}, + _bG4_= + function(param) + {function _bJL_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1107$0)} + function _bJM_(param) + {var + _bJN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oq_), + _bJO_=caml_call2(Runtime_ocaml_Runtime[86],residence,_or_), + _bJP_=caml_call2(Runtime_ocaml_Runtime[84],_bJO_,_bJN_), + _bJQ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_os_), + _bJR_=caml_call2(Runtime_ocaml_Runtime[84],_bJQ_,_bJP_), + _bJS_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ot_), + _bJT_=caml_call2(Runtime_ocaml_Runtime[84],_bJS_,_bJR_), + _bJU_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ou_), + _bJV_=caml_call2(Runtime_ocaml_Runtime[84],_bJU_,_bJT_), + _bJW_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ov_), + _bJX_=caml_call2(Runtime_ocaml_Runtime[84],_bJW_,_bJV_), + _bJY_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ow_), + _bJZ_=caml_call2(Runtime_ocaml_Runtime[84],_bJY_,_bJX_), + _bJ0_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ox_), + _bJ1_=caml_call2(Runtime_ocaml_Runtime[84],_bJ0_,_bJZ_), + _bJ2_=caml_call3(Runtime_ocaml_Runtime[57],2022,12,31), + _bJ3_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bJ2_), + _bJ4_=caml_call2(Runtime_ocaml_Runtime[83],_bJ3_,_bJ1_), + _bJ5_=caml_call3(Runtime_ocaml_Runtime[57],2022,8,1), + _bJ6_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bJ5_), + _bJ7_=caml_call2(Runtime_ocaml_Runtime[83],_bJ6_,_bJ4_); + return caml_call2(Runtime_ocaml_Runtime[29],_oy_,_bJ7_)} + return caml_call4(Runtime_ocaml_Runtime[63],_oz_,[0],_bJM_,_bJL_)}, + _bG5_= + function(param) + {function _bJC_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_819$0)} + function _bJD_(param) + {var + _bJE_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oA_), + _bJF_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,31), + _bJG_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bJF_), + _bJH_=caml_call2(Runtime_ocaml_Runtime[83],_bJG_,_bJE_), + _bJI_=caml_call3(Runtime_ocaml_Runtime[57],2022,5,1), + _bJJ_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bJI_), + _bJK_=caml_call2(Runtime_ocaml_Runtime[83],_bJJ_,_bJH_); + return caml_call2(Runtime_ocaml_Runtime[29],_oB_,_bJK_)} + return caml_call4(Runtime_ocaml_Runtime[63],_oC_,[0],_bJD_,_bJC_)}, + _bG6_= + function(param) + {function _bJf_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1085$0)} + function _bJg_(param) + {var + _bJh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oD_), + _bJi_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oE_), + _bJj_=caml_call2(Runtime_ocaml_Runtime[84],_bJi_,_bJh_), + _bJk_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oF_), + _bJl_=caml_call2(Runtime_ocaml_Runtime[84],_bJk_,_bJj_), + _bJm_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oG_), + _bJn_=caml_call2(Runtime_ocaml_Runtime[84],_bJm_,_bJl_), + _bJo_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oH_), + _bJp_=caml_call2(Runtime_ocaml_Runtime[84],_bJo_,_bJn_), + _bJq_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oI_), + _bJr_=caml_call2(Runtime_ocaml_Runtime[84],_bJq_,_bJp_), + _bJs_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oJ_), + _bJt_=caml_call2(Runtime_ocaml_Runtime[84],_bJs_,_bJr_), + _bJu_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oK_), + _bJv_=caml_call2(Runtime_ocaml_Runtime[84],_bJu_,_bJt_), + _bJw_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,31), + _bJx_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bJw_), + _bJy_=caml_call2(Runtime_ocaml_Runtime[83],_bJx_,_bJv_), + _bJz_=caml_call3(Runtime_ocaml_Runtime[57],2022,5,1), + _bJA_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bJz_), + _bJB_=caml_call2(Runtime_ocaml_Runtime[83],_bJA_,_bJy_); + return caml_call2(Runtime_ocaml_Runtime[29],_oL_,_bJB_)} + return caml_call4(Runtime_ocaml_Runtime[63],_oM_,[0],_bJg_,_bJf_)}, + _bG7_= + function(param) + {function _bI8_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_798$0)} + function _bI9_(param) + {var + _bI__=caml_call2(Runtime_ocaml_Runtime[86],residence,_oN_), + _bI$_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,30), + _bJa_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bI$_), + _bJb_=caml_call2(Runtime_ocaml_Runtime[83],_bJa_,_bI__), + _bJc_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), + _bJd_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bJc_), + _bJe_=caml_call2(Runtime_ocaml_Runtime[83],_bJd_,_bJb_); + return caml_call2(Runtime_ocaml_Runtime[29],_oO_,_bJe_)} + return caml_call4(Runtime_ocaml_Runtime[63],_oP_,[0],_bI9_,_bI8_)}, + _bG8_= + function(param) + {function _bIL_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1057$0)} + function _bIM_(param) + {var + _bIN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oQ_), + _bIO_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oR_), + _bIP_=caml_call2(Runtime_ocaml_Runtime[84],_bIO_,_bIN_), + _bIQ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oS_), + _bIR_=caml_call2(Runtime_ocaml_Runtime[84],_bIQ_,_bIP_), + _bIS_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oT_), + _bIT_=caml_call2(Runtime_ocaml_Runtime[84],_bIS_,_bIR_), + _bIU_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oU_), + _bIV_=caml_call2(Runtime_ocaml_Runtime[84],_bIU_,_bIT_), + _bIW_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oV_), + _bIX_=caml_call2(Runtime_ocaml_Runtime[84],_bIW_,_bIV_), + _bIY_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oW_), + _bIZ_=caml_call2(Runtime_ocaml_Runtime[84],_bIY_,_bIX_), + _bI0_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oX_), + _bI1_=caml_call2(Runtime_ocaml_Runtime[84],_bI0_,_bIZ_), + _bI2_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,30), + _bI3_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bI2_), + _bI4_=caml_call2(Runtime_ocaml_Runtime[83],_bI3_,_bI1_), + _bI5_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), + _bI6_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bI5_), + _bI7_=caml_call2(Runtime_ocaml_Runtime[83],_bI6_,_bI4_); + return caml_call2(Runtime_ocaml_Runtime[29],_oY_,_bI7_)} + return caml_call4(Runtime_ocaml_Runtime[63],_oZ_,[0],_bIM_,_bIL_)}, + _bG9_= + function(param) + {function _bIC_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_774$0)} + function _bID_(param) + {var + _bIE_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o0_), + _bIF_=caml_call3(Runtime_ocaml_Runtime[57],2021,12,31), + _bIG_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bIF_), + _bIH_=caml_call2(Runtime_ocaml_Runtime[83],_bIG_,_bIE_), + _bII_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), + _bIJ_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bII_), + _bIK_=caml_call2(Runtime_ocaml_Runtime[83],_bIJ_,_bIH_); + return caml_call2(Runtime_ocaml_Runtime[29],_o1_,_bIK_)} + return caml_call4(Runtime_ocaml_Runtime[63],_o2_,[0],_bID_,_bIC_)}, + _bG__= + function(param) + {function _bIf_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1025$0)} + function _bIg_(param) + {var + _bIh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o3_), + _bIi_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o4_), + _bIj_=caml_call2(Runtime_ocaml_Runtime[84],_bIi_,_bIh_), + _bIk_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o5_), + _bIl_=caml_call2(Runtime_ocaml_Runtime[84],_bIk_,_bIj_), + _bIm_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o6_), + _bIn_=caml_call2(Runtime_ocaml_Runtime[84],_bIm_,_bIl_), + _bIo_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o7_), + _bIp_=caml_call2(Runtime_ocaml_Runtime[84],_bIo_,_bIn_), + _bIq_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o8_), + _bIr_=caml_call2(Runtime_ocaml_Runtime[84],_bIq_,_bIp_), + _bIs_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o9_), + _bIt_=caml_call2(Runtime_ocaml_Runtime[84],_bIs_,_bIr_), + _bIu_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o__), + _bIv_=caml_call2(Runtime_ocaml_Runtime[84],_bIu_,_bIt_), + _bIw_=caml_call3(Runtime_ocaml_Runtime[57],2021,12,31), + _bIx_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bIw_), + _bIy_=caml_call2(Runtime_ocaml_Runtime[83],_bIx_,_bIv_), + _bIz_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), + _bIA_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bIz_), + _bIB_=caml_call2(Runtime_ocaml_Runtime[83],_bIA_,_bIy_); + return caml_call2(Runtime_ocaml_Runtime[29],_o$_,_bIB_)} + return caml_call4(Runtime_ocaml_Runtime[63],_pa_,[0],_bIg_,_bIf_)}, + _bG$_= + function(param) + {function _bH8_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_766$0)} + function _bH9_(param) + {var + _bH__=caml_call2(Runtime_ocaml_Runtime[86],residence,_pb_), + _bH$_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), + _bIa_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bH$_), + _bIb_=caml_call2(Runtime_ocaml_Runtime[83],_bIa_,_bH__), + _bIc_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _bId_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bIc_), + _bIe_=caml_call2(Runtime_ocaml_Runtime[83],_bId_,_bIb_); + return caml_call2(Runtime_ocaml_Runtime[29],_pc_,_bIe_)} + return caml_call4(Runtime_ocaml_Runtime[63],_pd_,[0],_bH9_,_bH8_)}, + _bHa_= + function(param) + {function _bHL_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1015$0)} + function _bHM_(param) + {var + _bHN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pe_), + _bHO_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pf_), + _bHP_=caml_call2(Runtime_ocaml_Runtime[84],_bHO_,_bHN_), + _bHQ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pg_), + _bHR_=caml_call2(Runtime_ocaml_Runtime[84],_bHQ_,_bHP_), + _bHS_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ph_), + _bHT_=caml_call2(Runtime_ocaml_Runtime[84],_bHS_,_bHR_), + _bHU_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pi_), + _bHV_=caml_call2(Runtime_ocaml_Runtime[84],_bHU_,_bHT_), + _bHW_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pj_), + _bHX_=caml_call2(Runtime_ocaml_Runtime[84],_bHW_,_bHV_), + _bHY_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pk_), + _bHZ_=caml_call2(Runtime_ocaml_Runtime[84],_bHY_,_bHX_), + _bH0_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pl_), + _bH1_=caml_call2(Runtime_ocaml_Runtime[84],_bH0_,_bHZ_), + _bH2_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), + _bH3_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bH2_), + _bH4_=caml_call2(Runtime_ocaml_Runtime[83],_bH3_,_bH1_), + _bH5_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _bH6_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bH5_), + _bH7_=caml_call2(Runtime_ocaml_Runtime[83],_bH6_,_bH4_); + return caml_call2(Runtime_ocaml_Runtime[29],_pm_,_bH7_)} + return caml_call4(Runtime_ocaml_Runtime[63],_pn_,[0],_bHM_,_bHL_)}, + _bHb_= + function(param) + {function _bHC_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_757$0)} + function _bHD_(param) + {var + _bHE_=caml_call2(Runtime_ocaml_Runtime[86],residence,_po_), + _bHF_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), + _bHG_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bHF_), + _bHH_=caml_call2(Runtime_ocaml_Runtime[83],_bHG_,_bHE_), + _bHI_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _bHJ_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bHI_), + _bHK_=caml_call2(Runtime_ocaml_Runtime[83],_bHJ_,_bHH_); + return caml_call2(Runtime_ocaml_Runtime[29],_pp_,_bHK_)} + return caml_call4(Runtime_ocaml_Runtime[63],_pq_,[0],_bHD_,_bHC_)}, + _bHc_= + [0, + function(param) + {function _bHf_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1003$0)} + function _bHg_(param) + {var + _bHh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pr_), + _bHi_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ps_), + _bHj_=caml_call2(Runtime_ocaml_Runtime[84],_bHi_,_bHh_), + _bHk_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pt_), + _bHl_=caml_call2(Runtime_ocaml_Runtime[84],_bHk_,_bHj_), + _bHm_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pu_), + _bHn_=caml_call2(Runtime_ocaml_Runtime[84],_bHm_,_bHl_), + _bHo_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pv_), + _bHp_=caml_call2(Runtime_ocaml_Runtime[84],_bHo_,_bHn_), + _bHq_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pw_), + _bHr_=caml_call2(Runtime_ocaml_Runtime[84],_bHq_,_bHp_), + _bHs_=caml_call2(Runtime_ocaml_Runtime[86],residence,_px_), + _bHt_=caml_call2(Runtime_ocaml_Runtime[84],_bHs_,_bHr_), + _bHu_=caml_call2(Runtime_ocaml_Runtime[86],residence,_py_), + _bHv_=caml_call2(Runtime_ocaml_Runtime[84],_bHu_,_bHt_), + _bHw_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), + _bHx_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bHw_), + _bHy_=caml_call2(Runtime_ocaml_Runtime[83],_bHx_,_bHv_), + _bHz_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _bHA_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bHz_), + _bHB_=caml_call2(Runtime_ocaml_Runtime[83],_bHA_,_bHy_); + return caml_call2(Runtime_ocaml_Runtime[29],_pz_,_bHB_)} + return caml_call4(Runtime_ocaml_Runtime[63],_pA_,[0],_bHg_,_bHf_)}, + _bHb_, + _bHa_, + _bG$_, + _bG__, + _bG9_, + _bG8_, + _bG7_, + _bG6_, + _bG5_, + _bG4_, + _bG3_, + _bG2_, + _bG1_], + _bHd_=caml_call4(Runtime_ocaml_Runtime[63],_pB_,_bHc_,_bG0_,_bGZ_)} + catch(_bHe_) + {_bHe_ = caml_wrap_exception(_bHe_); + if(_bHe_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_n$_]; + throw _bHe_} + var + brut_horaire= + caml_call3 + (Runtime_ocaml_Runtime[28],_pC_,Runtime_ocaml_Runtime[13],_bHd_); + return [0,brut_horaire]} + function calcul_aide_personnalisee_loge(calcul_aide_personnalisee_loge) + {var + loyer_principal_base=calcul_aide_personnalisee_loge[1], + ressources_menage_arrondies=calcul_aide_personnalisee_loge[2], + beneficiaire_aide_adulte_ou_en=calcul_aide_personnalisee_loge[3], + date_courante=calcul_aide_personnalisee_loge[4], + nombre_personnes_a_charge=calcul_aide_personnalisee_loge[5], + situation_familiale_calcul_apl=calcul_aide_personnalisee_loge[6], + zone=calcul_aide_personnalisee_loge[7], + logement_est_chambre=calcul_aide_personnalisee_loge[8], + agees_ou_handicap_adultes_hebe=calcul_aide_personnalisee_loge[9], + type_aide=calcul_aide_personnalisee_loge[10], + colocation=calcul_aide_personnalisee_loge[11], + reduction_loyer_solidarite=calcul_aide_personnalisee_loge[12], + logement_meuble_d842_2=calcul_aide_personnalisee_loge[13]; + try + {var + _brE_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_98)}, + _brF_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_pE_,1)}, + _brG_=caml_call4(Runtime_ocaml_Runtime[63],_pF_,[0],_brF_,_brE_)} + catch(_bGY_) + {_bGY_ = caml_wrap_exception(_bGY_); + if(_bGY_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_pD_]; + throw _bGY_} + var + fraction_l832_3= + caml_call3 + (Runtime_ocaml_Runtime[28],_pG_,Runtime_ocaml_Runtime[15],_brG_); + try + {var + _brH_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_500)}, + _brI_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_pI_,1)}, + _brJ_=caml_call4(Runtime_ocaml_Runtime[63],_pJ_,[0],_brI_,_brH_)} + catch(_bGX_) + {_bGX_ = caml_wrap_exception(_bGX_); + if(_bGX_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_pH_]; + throw _bGX_} + var + montant_forfaitaire_d823_16= + caml_call3 + (Runtime_ocaml_Runtime[28],_pK_,Runtime_ocaml_Runtime[13],_brJ_); + try + {var + _brK_=function(param){return date_courante}, + _brL_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_pM_,1)}, + _brM_=caml_call4(Runtime_ocaml_Runtime[63],_pN_,[0],_brL_,_brK_), + contributions_sociales_dot_dat= + caml_call3 + (Runtime_ocaml_Runtime[28],_pO_,Runtime_ocaml_Runtime[16],_brM_)} + catch(_bGW_) + {_bGW_ = caml_wrap_exception(_bGW_); + if(_bGW_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_pL_]; + throw _bGW_} + var + _brN_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_pP_,contributions_sociales_aides_p), + [0,contributions_sociales_dot_dat]), + result=caml_call2(Runtime_ocaml_Runtime[27],_pQ_,_brN_), + contributions_sociales_dot_mon=result[1]; + try + {var + _brO_=function(param){throw Runtime_ocaml_Runtime[2]}, + _brP_=function(param){return 0}, + _brQ_= + [0, + function(param) + {function _bF1_(param) + {var _bGJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$85); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGJ_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0283) + :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0315); + var _bGK_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$33); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGK_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_027); + var _bGL_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$24); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGL_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0238); + var _bGM_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$9); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGM_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0201); + var _bGN_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$5); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGN_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0185); + var _bGO_=caml_call1(Runtime_ocaml_Runtime[46],cst_5); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGO_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0179); + var _bGP_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$1); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGP_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173); + var + _bGQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$2), + _bGR_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bGQ_), + _bGS_=caml_call1(Runtime_ocaml_Runtime[69],_bGR_), + _bGT_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0006), + _bGU_=caml_call2(Runtime_ocaml_Runtime[103],_bGT_,_bGS_), + _bGV_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$0); + return caml_call2(Runtime_ocaml_Runtime[97],_bGV_,_bGU_)} + function _bF2_(param) + {var + _bGH_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bGI_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bGH_); + return caml_call2(Runtime_ocaml_Runtime[29],_pS_,_bGI_)} + var + _bF3_= + [0, + function(param) + {function _bF4_(param) + {var _bGu_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$86); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGu_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0283$0) + :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0315$0); + var _bGv_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$34); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGv_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_027$0); + var _bGw_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$25); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGw_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0238$0); + var _bGx_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$10); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGx_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0201$0); + var _bGy_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$6); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGy_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0185$0); + var _bGz_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$0); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGz_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0179$0); + var _bGA_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$3); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGA_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$1); + var + _bGB_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$4), + _bGC_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bGB_), + _bGD_=caml_call1(Runtime_ocaml_Runtime[69],_bGC_), + _bGE_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0006$0), + _bGF_=caml_call2(Runtime_ocaml_Runtime[103],_bGE_,_bGD_), + _bGG_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$2); + return caml_call2(Runtime_ocaml_Runtime[97],_bGG_,_bGF_)} + function _bF5_(param) + {var + _bGp_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bGq_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bGp_), + _bGr_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bGs_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bGr_), + _bGt_=caml_call2(Runtime_ocaml_Runtime[83],_bGs_,_bGq_); + return caml_call2(Runtime_ocaml_Runtime[29],_pT_,_bGt_)} + var + _bF6_= + [0, + function(param) + {function _bF7_(param) + {var _bGc_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$87); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGc_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0283$1) + :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0315$1); + var _bGd_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$35); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGd_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_027$1); + var _bGe_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$26); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGe_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0238$1); + var _bGf_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$11); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGf_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0201$1); + var _bGg_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$7); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGg_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0185$1); + var _bGh_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$1); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGh_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0179$1); + var _bGi_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$5); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGi_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$3); + var + _bGj_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$6), + _bGk_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bGj_), + _bGl_=caml_call1(Runtime_ocaml_Runtime[69],_bGk_), + _bGm_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0006$1), + _bGn_=caml_call2(Runtime_ocaml_Runtime[103],_bGm_,_bGl_), + _bGo_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$4); + return caml_call2(Runtime_ocaml_Runtime[97],_bGo_,_bGn_)} + function _bF8_(param) + {var + _bF9_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bF__= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bF9_), + _bF$_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bGa_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bF$_), + _bGb_=caml_call2(Runtime_ocaml_Runtime[83],_bGa_,_bF__); + return caml_call2(Runtime_ocaml_Runtime[29],_pU_,_bGb_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_pV_,[0],_bF8_,_bF7_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_pW_,_bF6_,_bF5_,_bF4_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_pX_,_bF3_,_bF2_,_bF1_)}], + _brR_=caml_call4(Runtime_ocaml_Runtime[63],_pY_,_brQ_,_brP_,_brO_)} + catch(_bF0_) + {_bF0_ = caml_wrap_exception(_bF0_); + if(_bF0_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_pR_]; + throw _bF0_} + var + taux_composition_familiale= + caml_call3 + (Runtime_ocaml_Runtime[28],_pZ_,Runtime_ocaml_Runtime[15],_brR_); + try + {var + _brS_=function(param){throw Runtime_ocaml_Runtime[2]}, + _brT_=function(param){return 0}, + _brU_= + function(param) + {function _bFG_(param) + {var _bFN_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$88); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFN_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_458800) + :caml_call1(Runtime_ocaml_Runtime[31],cst_657200); + var _bFO_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$36); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFO_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_783900); + var _bFP_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$27); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFP_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_801500); + var _bFQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$12); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFQ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_832200); + var _bFR_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$8); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFR_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_863100); + var _bFS_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$2); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFS_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_893800); + var _bFT_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$7); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFT_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_924600); + var + _bFU_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$8), + _bFV_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bFU_), + _bFW_=caml_call1(Runtime_ocaml_Runtime[69],_bFV_), + _bFX_=caml_call1(Runtime_ocaml_Runtime[31],cst_30500), + _bFY_=caml_call2(Runtime_ocaml_Runtime[104],_bFX_,_bFW_), + _bFZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_924600$0); + return caml_call2(Runtime_ocaml_Runtime[93],_bFZ_,_bFY_)} + function _bFH_(param) + {var + _bFI_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _bFJ_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bFI_), + _bFK_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), + _bFL_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bFK_), + _bFM_=caml_call2(Runtime_ocaml_Runtime[83],_bFL_,_bFJ_); + return caml_call2(Runtime_ocaml_Runtime[29],_p1_,_bFM_)} + return caml_call4(Runtime_ocaml_Runtime[63],_p2_,[0],_bFH_,_bFG_)}, + _brV_= + function(param) + {function _bFm_(param) + {var _bFt_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$89); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFt_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_468300) + :caml_call1(Runtime_ocaml_Runtime[31],cst_670900); + var _bFu_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$37); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFu_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_800200); + var _bFv_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$28); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFv_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_819200); + var _bFw_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$13); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFw_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_849500); + var _bFx_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$9); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFx_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_881100); + var _bFy_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$3); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFy_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_912400); + var _bFz_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$9); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFz_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_943900); + var + _bFA_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$10), + _bFB_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bFA_), + _bFC_=caml_call1(Runtime_ocaml_Runtime[69],_bFB_), + _bFD_=caml_call1(Runtime_ocaml_Runtime[31],cst_31100), + _bFE_=caml_call2(Runtime_ocaml_Runtime[104],_bFD_,_bFC_), + _bFF_=caml_call1(Runtime_ocaml_Runtime[31],cst_943900$0); + return caml_call2(Runtime_ocaml_Runtime[93],_bFF_,_bFE_)} + function _bFn_(param) + {var + _bFo_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bFp_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bFo_), + _bFq_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), + _bFr_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bFq_), + _bFs_=caml_call2(Runtime_ocaml_Runtime[83],_bFr_,_bFp_); + return caml_call2(Runtime_ocaml_Runtime[29],_p3_,_bFs_)} + return caml_call4(Runtime_ocaml_Runtime[63],_p4_,[0],_bFn_,_bFm_)}, + _brW_= + function(param) + {function _bE4_(param) + {var _bE$_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$90); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bE$_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_487000) + :caml_call1(Runtime_ocaml_Runtime[31],cst_697700); + var _bFa_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$38); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFa_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_832200$0); + var _bFb_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$29); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFb_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_850900); + var _bFc_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$14); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFc_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_883400); + var _bFd_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$10); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFd_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_916300); + var _bFe_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$4); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFe_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_948800); + var _bFf_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$11); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFf_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_981600); + var + _bFg_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$12), + _bFh_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bFg_), + _bFi_=caml_call1(Runtime_ocaml_Runtime[69],_bFh_), + _bFj_=caml_call1(Runtime_ocaml_Runtime[31],cst_32300), + _bFk_=caml_call2(Runtime_ocaml_Runtime[104],_bFj_,_bFi_), + _bFl_=caml_call1(Runtime_ocaml_Runtime[31],cst_981600$0); + return caml_call2(Runtime_ocaml_Runtime[93],_bFl_,_bFk_)} + function _bE5_(param) + {var + _bE6_=caml_call3(Runtime_ocaml_Runtime[57],2022,12,31), + _bE7_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bE6_), + _bE8_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bE9_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bE8_), + _bE__=caml_call2(Runtime_ocaml_Runtime[83],_bE9_,_bE7_); + return caml_call2(Runtime_ocaml_Runtime[29],_p5_,_bE__)} + return caml_call4(Runtime_ocaml_Runtime[63],_p6_,[0],_bE5_,_bE4_)}, + _brX_= + [0, + function(param) + {function _bEN_(param) + {var _bER_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$91); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bER_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_494900) + :caml_call1(Runtime_ocaml_Runtime[31],cst_709000); + var _bES_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$39); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bES_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_845600); + var _bET_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$30); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bET_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_864600); + var _bEU_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$15); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEU_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_897700); + var _bEV_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$11); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEV_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_931100); + var _bEW_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$5); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEW_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_964200); + var _bEX_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$13); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEX_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_997500); + var + _bEY_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$14), + _bEZ_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bEY_), + _bE0_=caml_call1(Runtime_ocaml_Runtime[69],_bEZ_), + _bE1_=caml_call1(Runtime_ocaml_Runtime[31],cst_32800), + _bE2_=caml_call2(Runtime_ocaml_Runtime[104],_bE1_,_bE0_), + _bE3_=caml_call1(Runtime_ocaml_Runtime[31],cst_997500$0); + return caml_call2(Runtime_ocaml_Runtime[93],_bE3_,_bE2_)} + function _bEO_(param) + {var + _bEP_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), + _bEQ_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bEP_); + return caml_call2(Runtime_ocaml_Runtime[29],_p7_,_bEQ_)} + return caml_call4(Runtime_ocaml_Runtime[63],_p8_,[0],_bEO_,_bEN_)}, + _brW_, + _brV_, + _brU_], + _brY_=caml_call4(Runtime_ocaml_Runtime[63],_p9_,_brX_,_brT_,_brS_)} + catch(_bEM_) + {_bEM_ = caml_wrap_exception(_bEM_); + if(_bEM_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_p0_]; + throw _bEM_} + var + abattement_forfaitaire_d823_17= + caml_call3 + (Runtime_ocaml_Runtime[28],_p__,Runtime_ocaml_Runtime[13],_brY_); + try + {var + _brZ_=function(param){throw Runtime_ocaml_Runtime[2]}, + _br0_=function(param){return 0}, + _br1_= + function(param) + {function _bEy_(param) + {var _bEF_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$92); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEF_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25869) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31664); + var + _bEG_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$40), + _bEH_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bEG_), + _bEI_=caml_call1(Runtime_ocaml_Runtime[69],_bEH_), + _bEJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_5186), + _bEK_=caml_call2(Runtime_ocaml_Runtime[104],_bEJ_,_bEI_), + _bEL_=caml_call1(Runtime_ocaml_Runtime[31],cst_35630); + return caml_call2(Runtime_ocaml_Runtime[93],_bEL_,_bEK_)} + function _bEz_(param) + {var + _bEA_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bEB_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bEA_), + _bEC_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bED_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bEC_), + _bEE_=caml_call2(Runtime_ocaml_Runtime[83],_bED_,_bEB_); + return caml_call2(Runtime_ocaml_Runtime[29],_qa_,_bEE_)} + return caml_call4(Runtime_ocaml_Runtime[63],_qb_,[0],_bEz_,_bEy_)}, + _br2_= + [0, + function(param) + {function _bD__(param) + {var _bEr_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$93); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEr_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25978) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31797); + var + _bEs_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$41), + _bEt_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bEs_), + _bEu_=caml_call1(Runtime_ocaml_Runtime[69],_bEt_), + _bEv_=caml_call1(Runtime_ocaml_Runtime[31],cst_5208), + _bEw_=caml_call2(Runtime_ocaml_Runtime[104],_bEv_,_bEu_), + _bEx_=caml_call1(Runtime_ocaml_Runtime[31],cst_35780); + return caml_call2(Runtime_ocaml_Runtime[93],_bEx_,_bEw_)} + function _bD$_(param) + {var + _bEp_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bEq_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bEp_); + return caml_call2(Runtime_ocaml_Runtime[29],_qc_,_bEq_)} + var + _bEa_= + [0, + function(param) + {function _bEb_(param) + {var _bEi_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$94); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEi_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25978$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31797$0); + var + _bEj_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$42), + _bEk_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bEj_), + _bEl_=caml_call1(Runtime_ocaml_Runtime[69],_bEk_), + _bEm_=caml_call1(Runtime_ocaml_Runtime[31],cst_5208$0), + _bEn_=caml_call2(Runtime_ocaml_Runtime[104],_bEm_,_bEl_), + _bEo_=caml_call1(Runtime_ocaml_Runtime[31],cst_35780$0); + return caml_call2(Runtime_ocaml_Runtime[93],_bEo_,_bEn_)} + function _bEc_(param) + {var + _bEd_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bEe_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bEd_), + _bEf_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bEg_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bEf_), + _bEh_=caml_call2(Runtime_ocaml_Runtime[83],_bEg_,_bEe_); + return caml_call2(Runtime_ocaml_Runtime[29],_qd_,_bEh_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qe_,[0],_bEc_,_bEb_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_qf_,_bEa_,_bD$_,_bD__)}, + _br1_], + _br3_=caml_call4(Runtime_ocaml_Runtime[63],_qg_,_br2_,_br0_,_brZ_)} + catch(_bD9_) + {_bD9_ = caml_wrap_exception(_bD9_); + if(_bD9_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_p$_]; + throw _bD9_} + var + loyer_reference= + caml_call3 + (Runtime_ocaml_Runtime[28],_qh_,Runtime_ocaml_Runtime[13],_br3_); + try + {var + _br4_= + function(param) + {switch(type_aide[0]) + {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$95); + case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_1000); + default:return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$0)}}, + _br5_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_qj_,1)}, + _br6_=caml_call4(Runtime_ocaml_Runtime[63],_qk_,[0],_br5_,_br4_)} + catch(_bD8_) + {_bD8_ = caml_wrap_exception(_bD8_); + if(_bD8_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_qi_]; + throw _bD8_} + var + montant_minimal_aide_d823_16= + caml_call3 + (Runtime_ocaml_Runtime[28],_ql_,Runtime_ocaml_Runtime[13],_br6_); + try + {var + _br7_= + function(param) + {function _bBE_(param){throw Runtime_ocaml_Runtime[2]} + function _bBF_(param){return 0} + function _bBG_(param) + {function _bDG_(param) + {switch(zone[0]) + {case 0: + var + _bDQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$43), + _bDR_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bDQ_), + _bDS_=caml_call1(Runtime_ocaml_Runtime[69],_bDR_), + _bDT_=caml_call1(Runtime_ocaml_Runtime[31],cst_5870), + _bDU_=caml_call2(Runtime_ocaml_Runtime[104],_bDT_,_bDS_), + _bDV_=caml_call1(Runtime_ocaml_Runtime[31],cst_40460); + return caml_call2(Runtime_ocaml_Runtime[93],_bDV_,_bDU_); + case 1: + var + _bDW_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$44), + _bDX_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bDW_), + _bDY_=caml_call1(Runtime_ocaml_Runtime[69],_bDX_), + _bDZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_5186$0), + _bD0_=caml_call2(Runtime_ocaml_Runtime[104],_bDZ_,_bDY_), + _bD1_=caml_call1(Runtime_ocaml_Runtime[31],cst_35630$0); + return caml_call2(Runtime_ocaml_Runtime[93],_bD1_,_bD0_); + default: + var + _bD2_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$45), + _bD3_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bD2_), + _bD4_=caml_call1(Runtime_ocaml_Runtime[69],_bD3_), + _bD5_=caml_call1(Runtime_ocaml_Runtime[31],cst_4723), + _bD6_=caml_call2(Runtime_ocaml_Runtime[104],_bD5_,_bD4_), + _bD7_=caml_call1(Runtime_ocaml_Runtime[31],cst_32956); + return caml_call2(Runtime_ocaml_Runtime[93],_bD7_,_bD6_)}} + function _bDH_(param) + {var + _bDI_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$46), + _bDJ_= + caml_call2 + (Runtime_ocaml_Runtime[125],nombre_personnes_a_charge,_bDI_), + _bDK_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bDL_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bDK_), + _bDM_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bDN_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bDM_), + _bDO_=caml_call2(Runtime_ocaml_Runtime[83],_bDN_,_bDL_), + _bDP_=caml_call2(Runtime_ocaml_Runtime[83],_bDO_,_bDJ_); + return caml_call2(Runtime_ocaml_Runtime[29],_qn_,_bDP_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qo_,[0],_bDH_,_bDG_)} + function _bBH_(param) + {function _bDu_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_35799); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_31664$0); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_29392)}} + function _bDv_(param) + {var + _bDw_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$96), + _bDx_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bDw_), + _bDy_=0 === situation_familiale_calcul_apl[0]?0:1, + _bDz_=caml_call2(Runtime_ocaml_Runtime[83],_bDy_,_bDx_), + _bDA_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bDB_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bDA_), + _bDC_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bDD_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bDC_), + _bDE_=caml_call2(Runtime_ocaml_Runtime[83],_bDD_,_bDB_), + _bDF_=caml_call2(Runtime_ocaml_Runtime[83],_bDE_,_bDz_); + return caml_call2(Runtime_ocaml_Runtime[29],_qp_,_bDF_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qq_,[0],_bDv_,_bDu_)} + function _bBI_(param) + {function _bDi_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_29682); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_25859); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_24246)}} + function _bDj_(param) + {var + _bDk_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$97), + _bDl_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bDk_), + _bDm_=0 === situation_familiale_calcul_apl[0]?1:0, + _bDn_=caml_call2(Runtime_ocaml_Runtime[83],_bDm_,_bDl_), + _bDo_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bDp_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bDo_), + _bDq_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bDr_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bDq_), + _bDs_=caml_call2(Runtime_ocaml_Runtime[83],_bDr_,_bDp_), + _bDt_=caml_call2(Runtime_ocaml_Runtime[83],_bDs_,_bDn_); + return caml_call2(Runtime_ocaml_Runtime[29],_qr_,_bDt_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qs_,[0],_bDj_,_bDi_)} + function _bBJ_(param) + {function _bCS_(param) + {switch(zone[0]) + {case 0: + var + _bC2_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$47), + _bC3_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bC2_), + _bC4_=caml_call1(Runtime_ocaml_Runtime[69],_bC3_), + _bC5_=caml_call1(Runtime_ocaml_Runtime[31],cst_5895), + _bC6_=caml_call2(Runtime_ocaml_Runtime[104],_bC5_,_bC4_), + _bC7_=caml_call1(Runtime_ocaml_Runtime[31],cst_40630); + return caml_call2(Runtime_ocaml_Runtime[93],_bC7_,_bC6_); + case 1: + var + _bC8_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$48), + _bC9_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bC8_), + _bC__=caml_call1(Runtime_ocaml_Runtime[69],_bC9_), + _bC$_=caml_call1(Runtime_ocaml_Runtime[31],cst_5208$1), + _bDa_=caml_call2(Runtime_ocaml_Runtime[104],_bC$_,_bC__), + _bDb_=caml_call1(Runtime_ocaml_Runtime[31],cst_35780$1); + return caml_call2(Runtime_ocaml_Runtime[93],_bDb_,_bDa_); + default: + var + _bDc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$49), + _bDd_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bDc_), + _bDe_=caml_call1(Runtime_ocaml_Runtime[69],_bDd_), + _bDf_=caml_call1(Runtime_ocaml_Runtime[31],cst_4743), + _bDg_=caml_call2(Runtime_ocaml_Runtime[104],_bDf_,_bDe_), + _bDh_=caml_call1(Runtime_ocaml_Runtime[31],cst_33094); + return caml_call2(Runtime_ocaml_Runtime[93],_bDh_,_bDg_)}} + function _bCT_(param) + {var + _bCU_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$50), + _bCV_= + caml_call2 + (Runtime_ocaml_Runtime[125],nombre_personnes_a_charge,_bCU_), + _bCW_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bCX_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bCW_), + _bCY_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bCZ_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bCY_), + _bC0_=caml_call2(Runtime_ocaml_Runtime[83],_bCZ_,_bCX_), + _bC1_=caml_call2(Runtime_ocaml_Runtime[83],_bC0_,_bCV_); + return caml_call2(Runtime_ocaml_Runtime[29],_qt_,_bC1_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qu_,[0],_bCT_,_bCS_)} + function _bBK_(param) + {function _bCG_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_35949); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_31797$1); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_29515)}} + function _bCH_(param) + {var + _bCI_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$98), + _bCJ_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bCI_), + _bCK_=0 === situation_familiale_calcul_apl[0]?0:1, + _bCL_=caml_call2(Runtime_ocaml_Runtime[83],_bCK_,_bCJ_), + _bCM_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bCN_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bCM_), + _bCO_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bCP_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bCO_), + _bCQ_=caml_call2(Runtime_ocaml_Runtime[83],_bCP_,_bCN_), + _bCR_=caml_call2(Runtime_ocaml_Runtime[83],_bCQ_,_bCL_); + return caml_call2(Runtime_ocaml_Runtime[29],_qv_,_bCR_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qw_,[0],_bCH_,_bCG_)} + function _bBL_(param) + {function _bCu_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_29807); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_25978$1); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_24348)}} + function _bCv_(param) + {var + _bCw_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$99), + _bCx_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bCw_), + _bCy_=0 === situation_familiale_calcul_apl[0]?1:0, + _bCz_=caml_call2(Runtime_ocaml_Runtime[83],_bCy_,_bCx_), + _bCA_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bCB_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bCA_), + _bCC_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bCD_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bCC_), + _bCE_=caml_call2(Runtime_ocaml_Runtime[83],_bCD_,_bCB_), + _bCF_=caml_call2(Runtime_ocaml_Runtime[83],_bCE_,_bCz_); + return caml_call2(Runtime_ocaml_Runtime[29],_qx_,_bCF_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qy_,[0],_bCv_,_bCu_)} + function _bBM_(param) + {function _bB7_(param) + {switch(zone[0]) + {case 0: + var + _bCc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$51), + _bCd_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bCc_), + _bCe_=caml_call1(Runtime_ocaml_Runtime[69],_bCd_), + _bCf_=caml_call1(Runtime_ocaml_Runtime[31],cst_6101), + _bCg_=caml_call2(Runtime_ocaml_Runtime[104],_bCf_,_bCe_), + _bCh_=caml_call1(Runtime_ocaml_Runtime[31],cst_42052); + return caml_call2(Runtime_ocaml_Runtime[93],_bCh_,_bCg_); + case 1: + var + _bCi_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$52), + _bCj_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bCi_), + _bCk_=caml_call1(Runtime_ocaml_Runtime[69],_bCj_), + _bCl_=caml_call1(Runtime_ocaml_Runtime[31],cst_5390), + _bCm_=caml_call2(Runtime_ocaml_Runtime[104],_bCl_,_bCk_), + _bCn_=caml_call1(Runtime_ocaml_Runtime[31],cst_37032); + return caml_call2(Runtime_ocaml_Runtime[93],_bCn_,_bCm_); + default: + var + _bCo_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$53), + _bCp_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bCo_), + _bCq_=caml_call1(Runtime_ocaml_Runtime[69],_bCp_), + _bCr_=caml_call1(Runtime_ocaml_Runtime[31],cst_4909), + _bCs_=caml_call2(Runtime_ocaml_Runtime[104],_bCr_,_bCq_), + _bCt_=caml_call1(Runtime_ocaml_Runtime[31],cst_34252); + return caml_call2(Runtime_ocaml_Runtime[93],_bCt_,_bCs_)}} + function _bB8_(param) + {var + _bB9_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$54), + _bB__= + caml_call2 + (Runtime_ocaml_Runtime[125],nombre_personnes_a_charge,_bB9_), + _bB$_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bCa_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bB$_), + _bCb_=caml_call2(Runtime_ocaml_Runtime[83],_bCa_,_bB__); + return caml_call2(Runtime_ocaml_Runtime[29],_qz_,_bCb_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qA_,[0],_bB8_,_bB7_)} + function _bBN_(param) + {function _bBY_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_37207); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_32910); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_30548)}} + function _bBZ_(param) + {var + _bB0_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$100), + _bB1_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bB0_), + _bB2_=0 === situation_familiale_calcul_apl[0]?0:1, + _bB3_=caml_call2(Runtime_ocaml_Runtime[83],_bB2_,_bB1_), + _bB4_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bB5_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bB4_), + _bB6_=caml_call2(Runtime_ocaml_Runtime[83],_bB5_,_bB3_); + return caml_call2(Runtime_ocaml_Runtime[29],_qB_,_bB6_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qC_,[0],_bBZ_,_bBY_)} + var + _bBO_= + [0, + function(param) + {function _bBP_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_30850); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_26887); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_25200)}} + function _bBQ_(param) + {var + _bBR_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$101), + _bBS_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bBR_), + _bBT_=0 === situation_familiale_calcul_apl[0]?1:0, + _bBU_=caml_call2(Runtime_ocaml_Runtime[83],_bBT_,_bBS_), + _bBV_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bBW_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bBV_), + _bBX_=caml_call2(Runtime_ocaml_Runtime[83],_bBW_,_bBU_); + return caml_call2(Runtime_ocaml_Runtime[29],_qD_,_bBX_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qE_,[0],_bBQ_,_bBP_)}, + _bBN_, + _bBM_, + _bBL_, + _bBK_, + _bBJ_, + _bBI_, + _bBH_, + _bBG_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_qF_,_bBO_,_bBF_,_bBE_)}, + _br8_=function(param){return 1}, + _br9_= + function(param) + {function _bAK_(param) + {function _bBe_(param){throw Runtime_ocaml_Runtime[2]} + function _bBf_(param){return 0} + function _bBg_(param) + {function _bBw_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_26714); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_23282); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_21821)}} + function _bBx_(param) + {var + _bBy_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bBz_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bBy_), + _bBA_= + caml_call2 + (Runtime_ocaml_Runtime[83],_bBz_,logement_est_chambre), + _bBB_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bBC_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bBB_), + _bBD_=caml_call2(Runtime_ocaml_Runtime[83],_bBC_,_bBA_); + return caml_call2(Runtime_ocaml_Runtime[29],_qG_,_bBD_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qH_,[0],_bBx_,_bBw_)} + function _bBh_(param) + {function _bBo_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_26826); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_23380); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_21913)}} + function _bBp_(param) + {var + _bBq_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bBr_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bBq_), + _bBs_= + caml_call2 + (Runtime_ocaml_Runtime[83],_bBr_,logement_est_chambre), + _bBt_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bBu_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bBt_), + _bBv_=caml_call2(Runtime_ocaml_Runtime[83],_bBu_,_bBs_); + return caml_call2(Runtime_ocaml_Runtime[29],_qI_,_bBv_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qJ_,[0],_bBp_,_bBo_)} + var + _bBi_= + [0, + function(param) + {function _bBj_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_27765); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_24198); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_22680)}} + function _bBk_(param) + {var + _bBl_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bBm_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bBl_), + _bBn_= + caml_call2 + (Runtime_ocaml_Runtime[83],_bBm_,logement_est_chambre); + return caml_call2(Runtime_ocaml_Runtime[29],_qK_,_bBn_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qL_,[0],_bBk_,_bBj_)}, + _bBh_, + _bBg_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_qM_,_bBi_,_bBf_,_bBe_)} + function _bAL_(param){return 1} + var + _bAM_= + [0, + function(param) + {function _bAN_(param){throw Runtime_ocaml_Runtime[2]} + function _bAO_(param){return 0} + function _bAP_(param) + {function _bA7_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_22262); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_19402); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_18185)}} + function _bA8_(param) + {var + _bA9_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bA__= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bA9_), + _bA$_= + caml_call2 + (Runtime_ocaml_Runtime[83],_bA__,logement_est_chambre), + _bBa_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bBb_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bBa_), + _bBc_=caml_call2(Runtime_ocaml_Runtime[83],_bBb_,_bA$_), + _bBd_= + caml_call2 + (Runtime_ocaml_Runtime[83], + _bBc_, + agees_ou_handicap_adultes_hebe); + return caml_call2(Runtime_ocaml_Runtime[29],_qN_,_bBd_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qO_,[0],_bA8_,_bA7_)} + function _bAQ_(param) + {function _bAY_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_22355); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_19484); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_18261)}} + function _bAZ_(param) + {var + _bA0_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bA1_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bA0_), + _bA2_= + caml_call2 + (Runtime_ocaml_Runtime[83],_bA1_,logement_est_chambre), + _bA3_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bA4_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bA3_), + _bA5_=caml_call2(Runtime_ocaml_Runtime[83],_bA4_,_bA2_), + _bA6_= + caml_call2 + (Runtime_ocaml_Runtime[83], + _bA5_, + agees_ou_handicap_adultes_hebe); + return caml_call2(Runtime_ocaml_Runtime[29],_qP_,_bA6_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qQ_,[0],_bAZ_,_bAY_)} + var + _bAR_= + [0, + function(param) + {function _bAS_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_23138); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_20165); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_18900)}} + function _bAT_(param) + {var + _bAU_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bAV_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bAU_), + _bAW_= + caml_call2 + (Runtime_ocaml_Runtime[83],_bAV_,logement_est_chambre), + _bAX_= + caml_call2 + (Runtime_ocaml_Runtime[83], + _bAW_, + agees_ou_handicap_adultes_hebe); + return caml_call2(Runtime_ocaml_Runtime[29],_qR_,_bAX_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qS_,[0],_bAT_,_bAS_)}, + _bAQ_, + _bAP_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_qT_,_bAR_,_bAO_,_bAN_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_qU_,_bAM_,_bAL_,_bAK_)}, + _br__= + [0, + function(param) + {function _bx9_(param){throw Runtime_ocaml_Runtime[2]} + function _bx__(param){return 0} + function _bx$_(param) + {function _bAh_(param) + {switch(zone[0]) + {case 0: + var + _bAs_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$55), + _bAt_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bAs_), + _bAu_=caml_call1(Runtime_ocaml_Runtime[69],_bAt_), + _bAv_=caml_call1(Runtime_ocaml_Runtime[31],cst_4403), + _bAw_=caml_call2(Runtime_ocaml_Runtime[104],_bAv_,_bAu_), + _bAx_=caml_call1(Runtime_ocaml_Runtime[31],cst_30345); + return caml_call2(Runtime_ocaml_Runtime[93],_bAx_,_bAw_); + case 1: + var + _bAy_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$56), + _bAz_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bAy_), + _bAA_=caml_call1(Runtime_ocaml_Runtime[69],_bAz_), + _bAB_=caml_call1(Runtime_ocaml_Runtime[31],cst_3890), + _bAC_=caml_call2(Runtime_ocaml_Runtime[104],_bAB_,_bAA_), + _bAD_=caml_call1(Runtime_ocaml_Runtime[31],cst_26723); + return caml_call2(Runtime_ocaml_Runtime[93],_bAD_,_bAC_); + default: + var + _bAE_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$57), + _bAF_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bAE_), + _bAG_=caml_call1(Runtime_ocaml_Runtime[69],_bAF_), + _bAH_=caml_call1(Runtime_ocaml_Runtime[31],cst_3542), + _bAI_=caml_call2(Runtime_ocaml_Runtime[104],_bAH_,_bAG_), + _bAJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_24717); + return caml_call2(Runtime_ocaml_Runtime[93],_bAJ_,_bAI_)}} + function _bAi_(param) + {var + _bAj_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$58), + _bAk_= + caml_call2 + (Runtime_ocaml_Runtime[125],nombre_personnes_a_charge,_bAj_), + _bAl_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bAm_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bAl_), + _bAn_=caml_call2(Runtime_ocaml_Runtime[83],_bAm_,colocation), + _bAo_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bAp_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bAo_), + _bAq_=caml_call2(Runtime_ocaml_Runtime[83],_bAp_,_bAn_), + _bAr_=caml_call2(Runtime_ocaml_Runtime[83],_bAq_,_bAk_); + return caml_call2(Runtime_ocaml_Runtime[29],_qV_,_bAr_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qW_,[0],_bAi_,_bAh_)} + function _bya_(param) + {function _bz6_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_26849); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_23748); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_22044)}} + function _bz7_(param) + {var + _bz8_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$102), + _bz9_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bz8_), + _bz__=0 === situation_familiale_calcul_apl[0]?0:1, + _bz$_=caml_call2(Runtime_ocaml_Runtime[83],_bz__,_bz9_), + _bAa_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bAb_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bAa_), + _bAc_=caml_call2(Runtime_ocaml_Runtime[83],_bAb_,colocation), + _bAd_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bAe_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bAd_), + _bAf_=caml_call2(Runtime_ocaml_Runtime[83],_bAe_,_bAc_), + _bAg_=caml_call2(Runtime_ocaml_Runtime[83],_bAf_,_bz$_); + return caml_call2(Runtime_ocaml_Runtime[29],_qX_,_bAg_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qY_,[0],_bz7_,_bz6_)} + function _byb_(param) + {function _bzT_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_22262$0); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_19402$0); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_18185$0)}} + function _bzU_(param) + {var + _bzV_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$103), + _bzW_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bzV_), + _bzX_=0 === situation_familiale_calcul_apl[0]?1:0, + _bzY_=caml_call2(Runtime_ocaml_Runtime[83],_bzX_,_bzW_), + _bzZ_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bz0_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bzZ_), + _bz1_=caml_call2(Runtime_ocaml_Runtime[83],_bz0_,colocation), + _bz2_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bz3_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bz2_), + _bz4_=caml_call2(Runtime_ocaml_Runtime[83],_bz3_,_bz1_), + _bz5_=caml_call2(Runtime_ocaml_Runtime[83],_bz4_,_bzY_); + return caml_call2(Runtime_ocaml_Runtime[29],_qZ_,_bz5_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_q0_,[0],_bzU_,_bzT_)} + function _byc_(param) + {function _bzq_(param) + {switch(zone[0]) + {case 0: + var + _bzB_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$59), + _bzC_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bzB_), + _bzD_=caml_call1(Runtime_ocaml_Runtime[69],_bzC_), + _bzE_=caml_call1(Runtime_ocaml_Runtime[31],cst_4421), + _bzF_=caml_call2(Runtime_ocaml_Runtime[104],_bzE_,_bzD_), + _bzG_=caml_call1(Runtime_ocaml_Runtime[31],cst_30473); + return caml_call2(Runtime_ocaml_Runtime[93],_bzG_,_bzF_); + case 1: + var + _bzH_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$60), + _bzI_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bzH_), + _bzJ_=caml_call1(Runtime_ocaml_Runtime[69],_bzI_), + _bzK_=caml_call1(Runtime_ocaml_Runtime[31],cst_3906), + _bzL_=caml_call2(Runtime_ocaml_Runtime[104],_bzK_,_bzJ_), + _bzM_=caml_call1(Runtime_ocaml_Runtime[31],cst_26835); + return caml_call2(Runtime_ocaml_Runtime[93],_bzM_,_bzL_); + default: + var + _bzN_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$61), + _bzO_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bzN_), + _bzP_=caml_call1(Runtime_ocaml_Runtime[69],_bzO_), + _bzQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3557), + _bzR_=caml_call2(Runtime_ocaml_Runtime[104],_bzQ_,_bzP_), + _bzS_=caml_call1(Runtime_ocaml_Runtime[31],cst_24821); + return caml_call2(Runtime_ocaml_Runtime[93],_bzS_,_bzR_)}} + function _bzr_(param) + {var + _bzs_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$62), + _bzt_= + caml_call2 + (Runtime_ocaml_Runtime[125],nombre_personnes_a_charge,_bzs_), + _bzu_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bzv_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bzu_), + _bzw_=caml_call2(Runtime_ocaml_Runtime[83],_bzv_,colocation), + _bzx_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bzy_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bzx_), + _bzz_=caml_call2(Runtime_ocaml_Runtime[83],_bzy_,_bzw_), + _bzA_=caml_call2(Runtime_ocaml_Runtime[83],_bzz_,_bzt_); + return caml_call2(Runtime_ocaml_Runtime[29],_q1_,_bzA_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_q2_,[0],_bzr_,_bzq_)} + function _byd_(param) + {function _bzd_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_26962); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_23848); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_22136)}} + function _bze_(param) + {var + _bzf_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$104), + _bzg_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bzf_), + _bzh_=0 === situation_familiale_calcul_apl[0]?0:1, + _bzi_=caml_call2(Runtime_ocaml_Runtime[83],_bzh_,_bzg_), + _bzj_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bzk_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bzj_), + _bzl_=caml_call2(Runtime_ocaml_Runtime[83],_bzk_,colocation), + _bzm_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bzn_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bzm_), + _bzo_=caml_call2(Runtime_ocaml_Runtime[83],_bzn_,_bzl_), + _bzp_=caml_call2(Runtime_ocaml_Runtime[83],_bzo_,_bzi_); + return caml_call2(Runtime_ocaml_Runtime[29],_q3_,_bzp_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_q4_,[0],_bze_,_bzd_)} + function _bye_(param) + {function _by2_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_22355$0); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_19484$0); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_18261$0)}} + function _by3_(param) + {var + _by4_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$105), + _by5_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_by4_), + _by6_=0 === situation_familiale_calcul_apl[0]?1:0, + _by7_=caml_call2(Runtime_ocaml_Runtime[83],_by6_,_by5_), + _by8_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _by9_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_by8_), + _by__=caml_call2(Runtime_ocaml_Runtime[83],_by9_,colocation), + _by$_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bza_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_by$_), + _bzb_=caml_call2(Runtime_ocaml_Runtime[83],_bza_,_by__), + _bzc_=caml_call2(Runtime_ocaml_Runtime[83],_bzb_,_by7_); + return caml_call2(Runtime_ocaml_Runtime[29],_q5_,_bzc_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_q6_,[0],_by3_,_by2_)} + function _byf_(param) + {function _byC_(param) + {switch(zone[0]) + {case 0: + var + _byK_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$63), + _byL_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_byK_), + _byM_=caml_call1(Runtime_ocaml_Runtime[69],_byL_), + _byN_=caml_call1(Runtime_ocaml_Runtime[31],cst_4576), + _byO_=caml_call2(Runtime_ocaml_Runtime[104],_byN_,_byM_), + _byP_=caml_call1(Runtime_ocaml_Runtime[31],cst_31539); + return caml_call2(Runtime_ocaml_Runtime[93],_byP_,_byO_); + case 1: + var + _byQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$64), + _byR_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_byQ_), + _byS_=caml_call1(Runtime_ocaml_Runtime[69],_byR_), + _byT_=caml_call1(Runtime_ocaml_Runtime[31],cst_4043), + _byU_=caml_call2(Runtime_ocaml_Runtime[104],_byT_,_byS_), + _byV_=caml_call1(Runtime_ocaml_Runtime[31],cst_27774); + return caml_call2(Runtime_ocaml_Runtime[93],_byV_,_byU_); + default: + var + _byW_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$65), + _byX_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_byW_), + _byY_=caml_call1(Runtime_ocaml_Runtime[69],_byX_), + _byZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3682), + _by0_=caml_call2(Runtime_ocaml_Runtime[104],_byZ_,_byY_), + _by1_=caml_call1(Runtime_ocaml_Runtime[31],cst_25689); + return caml_call2(Runtime_ocaml_Runtime[93],_by1_,_by0_)}} + function _byD_(param) + {var + _byE_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$66), + _byF_= + caml_call2 + (Runtime_ocaml_Runtime[125],nombre_personnes_a_charge,_byE_), + _byG_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _byH_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_byG_), + _byI_=caml_call2(Runtime_ocaml_Runtime[83],_byH_,colocation), + _byJ_=caml_call2(Runtime_ocaml_Runtime[83],_byI_,_byF_); + return caml_call2(Runtime_ocaml_Runtime[29],_q7_,_byJ_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_q8_,[0],_byD_,_byC_)} + function _byg_(param) + {function _bys_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_27905); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_24683); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_22911)}} + function _byt_(param) + {var + _byu_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$106), + _byv_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_byu_), + _byw_=0 === situation_familiale_calcul_apl[0]?0:1, + _byx_=caml_call2(Runtime_ocaml_Runtime[83],_byw_,_byv_), + _byy_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _byz_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_byy_), + _byA_=caml_call2(Runtime_ocaml_Runtime[83],_byz_,colocation), + _byB_=caml_call2(Runtime_ocaml_Runtime[83],_byA_,_byx_); + return caml_call2(Runtime_ocaml_Runtime[29],_q9_,_byB_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_q__,[0],_byt_,_bys_)} + var + _byh_= + [0, + function(param) + {function _byi_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_23138$0); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_20165$0); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_18900$0)}} + function _byj_(param) + {var + _byk_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$107), + _byl_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_byk_), + _bym_=0 === situation_familiale_calcul_apl[0]?1:0, + _byn_=caml_call2(Runtime_ocaml_Runtime[83],_bym_,_byl_), + _byo_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _byp_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_byo_), + _byq_=caml_call2(Runtime_ocaml_Runtime[83],_byp_,colocation), + _byr_=caml_call2(Runtime_ocaml_Runtime[83],_byq_,_byn_); + return caml_call2(Runtime_ocaml_Runtime[29],_q$_,_byr_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_ra_,[0],_byj_,_byi_)}, + _byg_, + _byf_, + _bye_, + _byd_, + _byc_, + _byb_, + _bya_, + _bx$_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_rb_,_byh_,_bx__,_bx9_)}, + _br9_], + _br$_=caml_call4(Runtime_ocaml_Runtime[63],_rc_,_br__,_br8_,_br7_)} + catch(_bx8_) + {_bx8_ = caml_wrap_exception(_bx8_); + if(_bx8_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_qm_]; + throw _bx8_} + var + plafond_loyer_d823_16_2= + caml_call3 + (Runtime_ocaml_Runtime[28],_rd_,Runtime_ocaml_Runtime[13],_br$_); + try + {var + _bsa_= + function(param) + {function _bxz_(param){throw Runtime_ocaml_Runtime[2]} + function _bxA_(param){return 0} + function _bxB_(param) + {function _bxX_(param) + {var + _bx4_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bx5_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224), + _bx6_=caml_call2(Runtime_ocaml_Runtime[104],_bx5_,_bx4_), + _bx7_=caml_call1(Runtime_ocaml_Runtime[31],cst_5399); + return caml_call2(Runtime_ocaml_Runtime[93],_bx7_,_bx6_)} + function _bxY_(param) + {var + _bxZ_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bx0_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bxZ_), + _bx1_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bx2_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bx1_), + _bx3_=caml_call2(Runtime_ocaml_Runtime[83],_bx2_,_bx0_); + return caml_call2(Runtime_ocaml_Runtime[29],_rf_,_bx3_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_rg_,[0],_bxY_,_bxX_)} + function _bxC_(param) + {function _bxM_(param) + {var + _bxT_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bxU_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229), + _bxV_=caml_call2(Runtime_ocaml_Runtime[104],_bxU_,_bxT_), + _bxW_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422); + return caml_call2(Runtime_ocaml_Runtime[93],_bxW_,_bxV_)} + function _bxN_(param) + {var + _bxO_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bxP_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bxO_), + _bxQ_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bxR_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bxQ_), + _bxS_=caml_call2(Runtime_ocaml_Runtime[83],_bxR_,_bxP_); + return caml_call2(Runtime_ocaml_Runtime[29],_rh_,_bxS_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_ri_,[0],_bxN_,_bxM_)} + var + _bxD_= + [0, + function(param) + {function _bxE_(param) + {var + _bxI_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bxJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_1272), + _bxK_=caml_call2(Runtime_ocaml_Runtime[104],_bxJ_,_bxI_), + _bxL_=caml_call1(Runtime_ocaml_Runtime[31],cst_5612); + return caml_call2(Runtime_ocaml_Runtime[93],_bxL_,_bxK_)} + function _bxF_(param) + {var + _bxG_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bxH_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bxG_); + return caml_call2(Runtime_ocaml_Runtime[29],_rj_,_bxH_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_rk_,[0],_bxF_,_bxE_)}, + _bxC_, + _bxB_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_rl_,_bxD_,_bxA_,_bxz_)}, + _bsb_=function(param){return 1}, + _bsc_= + [0, + function(param) + {function _bwZ_(param){throw Runtime_ocaml_Runtime[2]} + function _bw0_(param){return 0} + function _bw1_(param) + {function _bxn_(param) + {var + _bxv_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bxw_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224$0), + _bxx_=caml_call2(Runtime_ocaml_Runtime[104],_bxw_,_bxv_), + _bxy_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_2699) + :caml_call1(Runtime_ocaml_Runtime[31],cst_5399$0); + return caml_call2(Runtime_ocaml_Runtime[93],_bxy_,_bxx_)} + function _bxo_(param) + {var + _bxp_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bxq_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bxp_), + _bxr_=caml_call2(Runtime_ocaml_Runtime[83],_bxq_,colocation), + _bxs_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bxt_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bxs_), + _bxu_=caml_call2(Runtime_ocaml_Runtime[83],_bxt_,_bxr_); + return caml_call2(Runtime_ocaml_Runtime[29],_rm_,_bxu_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_rn_,[0],_bxo_,_bxn_)} + function _bw2_(param) + {function _bxb_(param) + {var + _bxj_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bxk_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$0), + _bxl_=caml_call2(Runtime_ocaml_Runtime[104],_bxk_,_bxj_), + _bxm_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_2710) + :caml_call1(Runtime_ocaml_Runtime[31],cst_5422$0); + return caml_call2(Runtime_ocaml_Runtime[93],_bxm_,_bxl_)} + function _bxc_(param) + {var + _bxd_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bxe_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bxd_), + _bxf_=caml_call2(Runtime_ocaml_Runtime[83],_bxe_,colocation), + _bxg_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bxh_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bxg_), + _bxi_=caml_call2(Runtime_ocaml_Runtime[83],_bxh_,_bxf_); + return caml_call2(Runtime_ocaml_Runtime[29],_ro_,_bxi_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_rp_,[0],_bxc_,_bxb_)} + var + _bw3_= + [0, + function(param) + {function _bw4_(param) + {var + _bw9_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bw__=caml_call1(Runtime_ocaml_Runtime[31],cst_1272$0), + _bw$_=caml_call2(Runtime_ocaml_Runtime[104],_bw__,_bw9_), + _bxa_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_2805) + :caml_call1(Runtime_ocaml_Runtime[31],cst_5612$0); + return caml_call2(Runtime_ocaml_Runtime[93],_bxa_,_bw$_)} + function _bw5_(param) + {var + _bw6_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bw7_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bw6_), + _bw8_=caml_call2(Runtime_ocaml_Runtime[83],_bw7_,colocation); + return caml_call2(Runtime_ocaml_Runtime[29],_rq_,_bw8_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_rr_,[0],_bw5_,_bw4_)}, + _bw2_, + _bw1_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_rs_,_bw3_,_bw0_,_bwZ_)}], + _bsd_=caml_call4(Runtime_ocaml_Runtime[63],_rt_,_bsc_,_bsb_,_bsa_)} + catch(_bwY_) + {_bwY_ = caml_wrap_exception(_bwY_); + if(_bwY_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_re_]; + throw _bwY_} + var + montant_forfaitaire_charges_d8= + caml_call3 + (Runtime_ocaml_Runtime[28],_ru_,Runtime_ocaml_Runtime[13],_bsd_); + try + {var + _bse_= + function(param) + {if(logement_meuble_d842_2) + {var + _bwV_=caml_call1(Runtime_ocaml_Runtime[39],cst_3$16), + _bwW_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$31), + _bwX_=caml_call2(Runtime_ocaml_Runtime[107],_bwW_,_bwV_); + return caml_call2 + (Runtime_ocaml_Runtime[104],loyer_principal_base,_bwX_)} + return loyer_principal_base}, + _bsf_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_rw_,1)}, + _bsg_=caml_call4(Runtime_ocaml_Runtime[63],_rx_,[0],_bsf_,_bse_)} + catch(_bwU_) + {_bwU_ = caml_wrap_exception(_bwU_); + if(_bwU_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_rv_]; + throw _bwU_} + var + loyer_principal_avec_reduction= + caml_call3 + (Runtime_ocaml_Runtime[28],_ry_,Runtime_ocaml_Runtime[13],_bsg_); + try + {var + _bsh_= + function(param) + {switch(zone[0]) + {case 0: + var _bwR_=caml_call1(Runtime_ocaml_Runtime[39],cst_4$12); + return caml_call2 + (Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bwR_); + case 1: + var _bwS_=caml_call1(Runtime_ocaml_Runtime[39],cst_3_1); + return caml_call2 + (Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bwS_); + default: + var _bwT_=caml_call1(Runtime_ocaml_Runtime[39],cst_3_1$0); + return caml_call2 + (Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bwT_)}}, + _bsi_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_rA_,1)}, + _bsj_=caml_call4(Runtime_ocaml_Runtime[63],_rB_,[0],_bsi_,_bsh_)} + catch(_bwQ_) + {_bwQ_ = caml_wrap_exception(_bwQ_); + if(_bwQ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_rz_]; + throw _bwQ_} + var + plafond_suppression_d823_16= + caml_call3 + (Runtime_ocaml_Runtime[28],_rC_,Runtime_ocaml_Runtime[13],_bsj_); + try + {var + _bsk_= + function(param) + {switch(zone[0]) + {case 0: + var _bwN_=caml_call1(Runtime_ocaml_Runtime[39],cst_3_4); + return caml_call2 + (Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bwN_); + case 1: + var _bwO_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$2); + return caml_call2 + (Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bwO_); + default: + var _bwP_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$3); + return caml_call2 + (Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bwP_)}}, + _bsl_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_rE_,1)}, + _bsm_=caml_call4(Runtime_ocaml_Runtime[63],_rF_,[0],_bsl_,_bsk_)} + catch(_bwM_) + {_bwM_ = caml_wrap_exception(_bwM_); + if(_bwM_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_rD_]; + throw _bwM_} + var + plafond_degressivite_d823_16= + caml_call3 + (Runtime_ocaml_Runtime[28],_rG_,Runtime_ocaml_Runtime[13],_bsm_); + try + {var + _bsn_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[122], + loyer_principal_avec_reduction, + plafond_loyer_d823_16_2) + ?plafond_loyer_d823_16_2 + :loyer_principal_avec_reduction}, + _bso_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_rI_,1)}, + _bsp_=caml_call4(Runtime_ocaml_Runtime[63],_rJ_,[0],_bso_,_bsn_)} + catch(_bwL_) + {_bwL_ = caml_wrap_exception(_bwL_); + if(_bwL_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_rH_]; + throw _bwL_} + var + loyer_eligible= + caml_call3 + (Runtime_ocaml_Runtime[28],_rK_,Runtime_ocaml_Runtime[13],_bsp_); + function _bsq_(param) + {try + {var + _bwA_= + function(param$0) + {if + (caml_call2 + (Runtime_ocaml_Runtime[122], + loyer_principal_avec_reduction, + plafond_suppression_d823_16)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$108); + if + (caml_call2 + (Runtime_ocaml_Runtime[122], + loyer_principal_avec_reduction, + plafond_degressivite_d823_16)) + {var + _bwH_= + caml_call2 + (Runtime_ocaml_Runtime[98], + plafond_suppression_d823_16, + plafond_degressivite_d823_16), + _bwI_= + caml_call2 + (Runtime_ocaml_Runtime[98], + loyer_principal_avec_reduction, + plafond_degressivite_d823_16), + _bwJ_=caml_call2(Runtime_ocaml_Runtime[108],_bwI_,_bwH_), + _bwK_=caml_call2(Runtime_ocaml_Runtime[104],param,_bwJ_); + return caml_call2(Runtime_ocaml_Runtime[98],param,_bwK_)} + return param}, + _bwB_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_rM_,1)}, + _bwC_= + [0, + function(param$0) + {function _bwF_(param$0){return param} + function _bwG_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29], + _rN_, + beneficiaire_aide_adulte_ou_en)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_rO_,[0],_bwG_,_bwF_)}], + _bwD_=caml_call4(Runtime_ocaml_Runtime[63],_rP_,_bwC_,_bwB_,_bwA_); + return _bwD_} + catch(_bwE_) + {_bwE_ = caml_wrap_exception(_bwE_); + if(_bwE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_rL_]; + throw _bwE_}} + var + traitement_aide_finale_diminue= + caml_call3 + (Runtime_ocaml_Runtime[28],_rQ_,Runtime_ocaml_Runtime[10],_bsq_); + try + {var + _bsr_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bss_=function(param){return 0}, + _bst_= + function(param) + {function _bwn_(param) + {var + _bwu_=caml_call1(Runtime_ocaml_Runtime[31],cst_3524), + _bwv_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085), + _bww_= + caml_call2 + (Runtime_ocaml_Runtime[93], + loyer_eligible, + montant_forfaitaire_charges_d8), + _bwx_=caml_call2(Runtime_ocaml_Runtime[104],_bww_,_bwv_); + if(caml_call2(Runtime_ocaml_Runtime[127],_bwx_,_bwu_)) + {var + _bwy_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$0), + _bwz_= + caml_call2 + (Runtime_ocaml_Runtime[93], + loyer_eligible, + montant_forfaitaire_charges_d8); + return caml_call2(Runtime_ocaml_Runtime[104],_bwz_,_bwy_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_3524$0)} + function _bwo_(param) + {var + _bwp_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bwq_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bwp_), + _bwr_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bws_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bwr_), + _bwt_=caml_call2(Runtime_ocaml_Runtime[83],_bws_,_bwq_); + return caml_call2(Runtime_ocaml_Runtime[29],_rS_,_bwt_)} + return caml_call4(Runtime_ocaml_Runtime[63],_rT_,[0],_bwo_,_bwn_)}, + _bsu_= + function(param) + {function _bwa_(param) + {var + _bwh_=caml_call1(Runtime_ocaml_Runtime[31],cst_3539), + _bwi_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$1), + _bwj_= + caml_call2 + (Runtime_ocaml_Runtime[93], + loyer_eligible, + montant_forfaitaire_charges_d8), + _bwk_=caml_call2(Runtime_ocaml_Runtime[104],_bwj_,_bwi_); + if(caml_call2(Runtime_ocaml_Runtime[127],_bwk_,_bwh_)) + {var + _bwl_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$2), + _bwm_= + caml_call2 + (Runtime_ocaml_Runtime[93], + loyer_eligible, + montant_forfaitaire_charges_d8); + return caml_call2(Runtime_ocaml_Runtime[104],_bwm_,_bwl_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_3539$0)} + function _bwb_(param) + {var + _bwc_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bwd_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bwc_), + _bwe_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bwf_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bwe_), + _bwg_=caml_call2(Runtime_ocaml_Runtime[83],_bwf_,_bwd_); + return caml_call2(Runtime_ocaml_Runtime[29],_rU_,_bwg_)} + return caml_call4(Runtime_ocaml_Runtime[63],_rV_,[0],_bwb_,_bwa_)}, + _bsv_= + [0, + function(param) + {function _bv2_(param) + {var + _bv6_=caml_call1(Runtime_ocaml_Runtime[31],cst_3663), + _bv7_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$3), + _bv8_= + caml_call2 + (Runtime_ocaml_Runtime[93], + loyer_eligible, + montant_forfaitaire_charges_d8), + _bv9_=caml_call2(Runtime_ocaml_Runtime[104],_bv8_,_bv7_); + if(caml_call2(Runtime_ocaml_Runtime[127],_bv9_,_bv6_)) + {var + _bv__=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$4), + _bv$_= + caml_call2 + (Runtime_ocaml_Runtime[93], + loyer_eligible, + montant_forfaitaire_charges_d8); + return caml_call2(Runtime_ocaml_Runtime[104],_bv$_,_bv__)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_3663$0)} + function _bv3_(param) + {var + _bv4_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bv5_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bv4_); + return caml_call2(Runtime_ocaml_Runtime[29],_rW_,_bv5_)} + return caml_call4(Runtime_ocaml_Runtime[63],_rX_,[0],_bv3_,_bv2_)}, + _bsu_, + _bst_], + _bsw_=caml_call4(Runtime_ocaml_Runtime[63],_rY_,_bsv_,_bss_,_bsr_)} + catch(_bv1_) + {_bv1_ = caml_wrap_exception(_bv1_); + if(_bv1_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_rR_]; + throw _bv1_} + var + participation_minimale= + caml_call3 + (Runtime_ocaml_Runtime[28],_rZ_,Runtime_ocaml_Runtime[13],_bsw_); + try + {var + _bsx_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bsy_=function(param){return 0}, + _bsz_= + [0, + function(param) + {function _bvs_(param) + {var + _bvW_=caml_call1(Runtime_ocaml_Runtime[39],cst_100), + _bvX_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$0), + _bvY_= + caml_call2 + (Runtime_ocaml_Runtime[108],loyer_eligible,loyer_reference), + _bvZ_=caml_call2(Runtime_ocaml_Runtime[103],_bvY_,_bvX_), + _bv0_=caml_call1(Runtime_ocaml_Runtime[78],_bvZ_); + return caml_call2(Runtime_ocaml_Runtime[107],_bv0_,_bvW_)} + function _bvt_(param) + {var + _bvU_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bvV_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bvU_); + return caml_call2(Runtime_ocaml_Runtime[29],_r1_,_bvV_)} + var + _bvu_= + [0, + function(param) + {function _bvv_(param) + {var + _bvP_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$1), + _bvQ_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$2), + _bvR_= + caml_call2 + (Runtime_ocaml_Runtime[108],loyer_eligible,loyer_reference), + _bvS_=caml_call2(Runtime_ocaml_Runtime[103],_bvR_,_bvQ_), + _bvT_=caml_call1(Runtime_ocaml_Runtime[78],_bvS_); + return caml_call2(Runtime_ocaml_Runtime[107],_bvT_,_bvP_)} + function _bvw_(param) + {var + _bvK_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bvL_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bvK_), + _bvM_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bvN_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bvM_), + _bvO_=caml_call2(Runtime_ocaml_Runtime[83],_bvN_,_bvL_); + return caml_call2(Runtime_ocaml_Runtime[29],_r2_,_bvO_)} + var + _bvx_= + [0, + function(param) + {function _bvy_(param) + {var + _bvF_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$3), + _bvG_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$4), + _bvH_= + caml_call2 + (Runtime_ocaml_Runtime[108],loyer_eligible,loyer_reference), + _bvI_=caml_call2(Runtime_ocaml_Runtime[103],_bvH_,_bvG_), + _bvJ_=caml_call1(Runtime_ocaml_Runtime[78],_bvI_); + return caml_call2(Runtime_ocaml_Runtime[107],_bvJ_,_bvF_)} + function _bvz_(param) + {var + _bvA_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bvB_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bvA_), + _bvC_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bvD_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bvC_), + _bvE_=caml_call2(Runtime_ocaml_Runtime[83],_bvD_,_bvB_); + return caml_call2(Runtime_ocaml_Runtime[29],_r3_,_bvE_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_r4_,[0],_bvz_,_bvy_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_r5_,_bvx_,_bvw_,_bvv_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_r6_,_bvu_,_bvt_,_bvs_)}], + _bsA_=caml_call4(Runtime_ocaml_Runtime[63],_r7_,_bsz_,_bsy_,_bsx_)} + catch(_bvr_) + {_bvr_ = caml_wrap_exception(_bvr_); + if(_bvr_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_r0_]; + throw _bvr_} + var + rapport_loyers= + caml_call3 + (Runtime_ocaml_Runtime[28],_r8_,Runtime_ocaml_Runtime[15],_bsA_); + function _bsB_(param) + {try + {var + _bvi_= + function(param$0) + {var + _bvm_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _r__, + Runtime_ocaml_Runtime[13], + param), + _bvn_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _r$_, + traitement_aide_finale_diminue), + _bvm_), + _bvo_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _sa_, + Runtime_ocaml_Runtime[13], + _bvn_), + aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_sb_,_bvo_), + _bvp_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$109), + _bvq_= + caml_call2 + (Runtime_ocaml_Runtime[98], + aide_finale, + montant_forfaitaire_d823_16); + return caml_call2(Runtime_ocaml_Runtime[127],_bvq_,_bvp_) + ?caml_call2 + (Runtime_ocaml_Runtime[98], + aide_finale, + montant_forfaitaire_d823_16) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$110)}, + _bvj_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_sc_,1)}, + _bvk_=caml_call4(Runtime_ocaml_Runtime[63],_sd_,[0],_bvj_,_bvi_); + return _bvk_} + catch(_bvl_) + {_bvl_ = caml_wrap_exception(_bvl_); + if(_bvl_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_r9_]; + throw _bvl_}} + var + traitement_aide_finale_minorat= + caml_call3 + (Runtime_ocaml_Runtime[28],_se_,Runtime_ocaml_Runtime[10],_bsB_); + try + {var + _bsC_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bsD_=function(param){return 0}, + _bsE_= + [0, + function(param) + {function _bue_(param) + {var _bu4_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45); + if(caml_call2(Runtime_ocaml_Runtime[111],rapport_loyers,_bu4_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$111); + var + _bu5_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75), + _bu6_= + caml_call2(Runtime_ocaml_Runtime[111],rapport_loyers,_bu5_), + _bu7_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$0), + _bu8_= + caml_call2(Runtime_ocaml_Runtime[126],rapport_loyers,_bu7_); + if(caml_call2(Runtime_ocaml_Runtime[83],_bu8_,_bu6_)) + {var + _bu9_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045), + _bu__= + caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_bu9_), + _bu$_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$0); + return caml_call2(Runtime_ocaml_Runtime[103],_bu$_,_bu__)} + var _bva_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$0); + if(caml_call2(Runtime_ocaml_Runtime[126],rapport_loyers,_bva_)) + {var + _bvb_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$1), + _bvc_= + caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_bvb_), + _bvd_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068), + _bve_=caml_call2(Runtime_ocaml_Runtime[103],_bvd_,_bvc_), + _bvf_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3), + _bvg_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$1), + _bvh_=caml_call2(Runtime_ocaml_Runtime[103],_bvg_,_bvf_); + return caml_call2(Runtime_ocaml_Runtime[92],_bvh_,_bve_)} + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$112)} + function _buf_(param) + {var + _bu2_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bu3_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bu2_); + return caml_call2(Runtime_ocaml_Runtime[29],_sg_,_bu3_)} + var + _bug_= + [0, + function(param) + {function _buh_(param) + {var _buM_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$1); + if + (caml_call2(Runtime_ocaml_Runtime[111],rapport_loyers,_buM_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$113); + var + _buN_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$2), + _buO_= + caml_call2(Runtime_ocaml_Runtime[111],rapport_loyers,_buN_), + _buP_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$2), + _buQ_= + caml_call2(Runtime_ocaml_Runtime[126],rapport_loyers,_buP_); + if(caml_call2(Runtime_ocaml_Runtime[83],_buQ_,_buO_)) + {var + _buR_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$2), + _buS_= + caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_buR_), + _buT_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$3); + return caml_call2(Runtime_ocaml_Runtime[103],_buT_,_buS_)} + var _buU_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$3); + if + (caml_call2(Runtime_ocaml_Runtime[126],rapport_loyers,_buU_)) + {var + _buV_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$4), + _buW_= + caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_buV_), + _buX_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068$0), + _buY_=caml_call2(Runtime_ocaml_Runtime[103],_buX_,_buW_), + _buZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3$0), + _bu0_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$4), + _bu1_=caml_call2(Runtime_ocaml_Runtime[103],_bu0_,_buZ_); + return caml_call2(Runtime_ocaml_Runtime[92],_bu1_,_buY_)} + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$114)} + function _bui_(param) + {var + _buH_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _buI_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_buH_), + _buJ_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _buK_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_buJ_), + _buL_=caml_call2(Runtime_ocaml_Runtime[83],_buK_,_buI_); + return caml_call2(Runtime_ocaml_Runtime[29],_sh_,_buL_)} + var + _buj_= + [0, + function(param) + {function _buk_(param) + {var _bur_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$3); + if + (caml_call2(Runtime_ocaml_Runtime[111],rapport_loyers,_bur_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$115); + var + _bus_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$5), + _but_= + caml_call2(Runtime_ocaml_Runtime[111],rapport_loyers,_bus_), + _buu_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$4), + _buv_= + caml_call2(Runtime_ocaml_Runtime[126],rapport_loyers,_buu_); + if(caml_call2(Runtime_ocaml_Runtime[83],_buv_,_but_)) + {var + _buw_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$5), + _bux_= + caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_buw_), + _buy_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$6); + return caml_call2(Runtime_ocaml_Runtime[103],_buy_,_bux_)} + var _buz_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$6); + if + (caml_call2(Runtime_ocaml_Runtime[126],rapport_loyers,_buz_)) + {var + _buA_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$7), + _buB_= + caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_buA_), + _buC_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068$1), + _buD_=caml_call2(Runtime_ocaml_Runtime[103],_buC_,_buB_), + _buE_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3$1), + _buF_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$7), + _buG_=caml_call2(Runtime_ocaml_Runtime[103],_buF_,_buE_); + return caml_call2(Runtime_ocaml_Runtime[92],_buG_,_buD_)} + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$116)} + function _bul_(param) + {var + _bum_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bun_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bum_), + _buo_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bup_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_buo_), + _buq_=caml_call2(Runtime_ocaml_Runtime[83],_bup_,_bun_); + return caml_call2(Runtime_ocaml_Runtime[29],_si_,_buq_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_sj_,[0],_bul_,_buk_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_sk_,_buj_,_bui_,_buh_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_sl_,_bug_,_buf_,_bue_)}], + _bsF_=caml_call4(Runtime_ocaml_Runtime[63],_sm_,_bsE_,_bsD_,_bsC_)} + catch(_bud_) + {_bud_ = caml_wrap_exception(_bud_); + if(_bud_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_sf_]; + throw _bud_} + var + taux_loyer_eligible_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_sn_,Runtime_ocaml_Runtime[15],_bsF_); + function _bsG_(param) + {try + {var + _bt0_= + function(param$0) + {var + _bt4_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _sp_, + Runtime_ocaml_Runtime[13], + param), + _bt5_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _sq_, + traitement_aide_finale_minorat), + _bt4_), + _bt6_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _sr_, + Runtime_ocaml_Runtime[13], + _bt5_), + aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_ss_,_bt6_), + _bt7_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _st_, + Runtime_ocaml_Runtime[13], + aide_finale), + _bt8_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _su_, + contributions_sociales_dot_mon), + _bt7_), + _bt9_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _sv_, + Runtime_ocaml_Runtime[13], + _bt8_), + crds=caml_call2(Runtime_ocaml_Runtime[27],_sw_,_bt9_), + _bt__=caml_call1(Runtime_ocaml_Runtime[31],cst_50), + _bt$_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale,crds), + _bua_=caml_call2(Runtime_ocaml_Runtime[98],_bt$_,_bt__), + aide_finale_moins_crds_arrondi= + caml_call1(Runtime_ocaml_Runtime[77],_bua_), + _bub_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$117), + _buc_= + caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds); + return caml_call2(Runtime_ocaml_Runtime[127],_buc_,_bub_) + ?caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$118)}, + _bt1_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_sx_,1)}, + _bt2_=caml_call4(Runtime_ocaml_Runtime[63],_sy_,[0],_bt1_,_bt0_); + return _bt2_} + catch(_bt3_) + {_bt3_ = caml_wrap_exception(_bt3_); + if(_bt3_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_so_]; + throw _bt3_}} + var + traitement_aide_finale_contrib= + caml_call3 + (Runtime_ocaml_Runtime[28],_sz_,Runtime_ocaml_Runtime[10],_bsG_); + try + {var + _bsH_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bsI_=function(param){return 0}, + _bsJ_= + [0, + function(param) + {function _btu_(param) + {var + _btW_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000), + _btX_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$0), + _btY_= + caml_call2 + (Runtime_ocaml_Runtime[103], + taux_loyer_eligible_formule, + _btX_), + _btZ_=caml_call1(Runtime_ocaml_Runtime[78],_btY_); + return caml_call2(Runtime_ocaml_Runtime[107],_btZ_,_btW_)} + function _btv_(param) + {var + _btU_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _btV_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_btU_); + return caml_call2(Runtime_ocaml_Runtime[29],_sB_,_btV_)} + var + _btw_= + [0, + function(param) + {function _btx_(param) + {var + _btQ_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$1), + _btR_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$2), + _btS_= + caml_call2 + (Runtime_ocaml_Runtime[103], + taux_loyer_eligible_formule, + _btR_), + _btT_=caml_call1(Runtime_ocaml_Runtime[78],_btS_); + return caml_call2(Runtime_ocaml_Runtime[107],_btT_,_btQ_)} + function _bty_(param) + {var + _btL_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _btM_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_btL_), + _btN_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _btO_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_btN_), + _btP_=caml_call2(Runtime_ocaml_Runtime[83],_btO_,_btM_); + return caml_call2(Runtime_ocaml_Runtime[29],_sC_,_btP_)} + var + _btz_= + [0, + function(param) + {function _btA_(param) + {var + _btH_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$3), + _btI_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$4), + _btJ_= + caml_call2 + (Runtime_ocaml_Runtime[103], + taux_loyer_eligible_formule, + _btI_), + _btK_=caml_call1(Runtime_ocaml_Runtime[78],_btJ_); + return caml_call2(Runtime_ocaml_Runtime[107],_btK_,_btH_)} + function _btB_(param) + {var + _btC_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _btD_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_btC_), + _btE_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _btF_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_btE_), + _btG_=caml_call2(Runtime_ocaml_Runtime[83],_btF_,_btD_); + return caml_call2(Runtime_ocaml_Runtime[29],_sD_,_btG_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_sE_,[0],_btB_,_btA_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_sF_,_btz_,_bty_,_btx_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_sG_,_btw_,_btv_,_btu_)}], + _bsK_=caml_call4(Runtime_ocaml_Runtime[63],_sH_,_bsJ_,_bsI_,_bsH_)} + catch(_btt_) + {_btt_ = caml_wrap_exception(_btt_); + if(_btt_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_sA_]; + throw _btt_} + var + taux_loyer_eligible_taux_arron= + caml_call3 + (Runtime_ocaml_Runtime[28],_sI_,Runtime_ocaml_Runtime[15],_bsK_); + function _bsL_(param) + {try + {var + _bti_= + function(param$0) + {var + _btm_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _sK_, + Runtime_ocaml_Runtime[13], + param), + _btn_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _sL_, + traitement_aide_finale_contrib), + _btm_), + _bto_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _sM_, + Runtime_ocaml_Runtime[13], + _btn_), + aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_sN_,_bto_), + _btp_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$119), + _btq_= + caml_call2 + (Runtime_ocaml_Runtime[104], + reduction_loyer_solidarite, + fraction_l832_3), + _btr_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale,_btq_); + if(caml_call2(Runtime_ocaml_Runtime[127],_btr_,_btp_)) + {var + _bts_= + caml_call2 + (Runtime_ocaml_Runtime[104], + reduction_loyer_solidarite, + fraction_l832_3); + return caml_call2(Runtime_ocaml_Runtime[98],aide_finale,_bts_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$120)}, + _btj_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_sO_,1)}, + _btk_=caml_call4(Runtime_ocaml_Runtime[63],_sP_,[0],_btj_,_bti_); + return _btk_} + catch(_btl_) + {_btl_ = caml_wrap_exception(_btl_); + if(_btl_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_sJ_]; + throw _btl_}} + var + traitement_aide_finale_reducti= + caml_call3 + (Runtime_ocaml_Runtime[28],_sQ_,Runtime_ocaml_Runtime[10],_bsL_); + try + {var + _bsM_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[92], + taux_composition_familiale, + taux_loyer_eligible_taux_arron)}, + _bsN_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_sS_,1)}, + _bsO_=caml_call4(Runtime_ocaml_Runtime[63],_sT_,[0],_bsN_,_bsM_)} + catch(_bth_) + {_bth_ = caml_wrap_exception(_bth_); + if(_bth_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_sR_]; + throw _bth_} + var + taux_prise_compte_ressources= + caml_call3 + (Runtime_ocaml_Runtime[28],_sU_,Runtime_ocaml_Runtime[15],_bsO_); + function _bsP_(param) + {try + {var + _bta_= + function(param$0) + {var + _bte_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _sW_, + Runtime_ocaml_Runtime[13], + param), + _btf_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _sX_, + traitement_aide_finale_reducti), + _bte_), + _btg_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _sY_, + Runtime_ocaml_Runtime[13], + _btf_), + aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_sZ_,_btg_); + return caml_call2 + (Runtime_ocaml_Runtime[112], + aide_finale, + montant_minimal_aide_d823_16) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$121) + :aide_finale}, + _btb_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_s0_,1)}, + _btc_=caml_call4(Runtime_ocaml_Runtime[63],_s1_,[0],_btb_,_bta_); + return _btc_} + catch(_btd_) + {_btd_ = caml_wrap_exception(_btd_); + if(_btd_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_sV_]; + throw _btd_}} + var + traitement_aide_finale_montant= + caml_call3 + (Runtime_ocaml_Runtime[28],_s2_,Runtime_ocaml_Runtime[10],_bsP_); + try + {var + _bsQ_= + function(param) + {var + _bs__= + caml_call2 + (Runtime_ocaml_Runtime[98], + ressources_menage_arrondies, + abattement_forfaitaire_d823_17), + participation_ressources= + caml_call2 + (Runtime_ocaml_Runtime[104],_bs__,taux_prise_compte_ressources), + _bs$_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$122), + participation_ressources$0= + caml_call2 + (Runtime_ocaml_Runtime[112],participation_ressources,_bs$_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$123) + :participation_ressources; + return caml_call2 + (Runtime_ocaml_Runtime[93], + participation_minimale, + participation_ressources$0)}, + _bsR_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_s4_,1)}, + _bsS_=caml_call4(Runtime_ocaml_Runtime[63],_s5_,[0],_bsR_,_bsQ_)} + catch(_bs9_) + {_bs9_ = caml_wrap_exception(_bs9_); + if(_bs9_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_s3_]; + throw _bs9_} + var + participation_personnelle= + caml_call3 + (Runtime_ocaml_Runtime[28],_s6_,Runtime_ocaml_Runtime[13],_bsS_); + try + {var + _bsT_= + function(param) + {var + _bs7_= + caml_call2 + (Runtime_ocaml_Runtime[93], + loyer_eligible, + montant_forfaitaire_charges_d8), + aide_finale= + caml_call2 + (Runtime_ocaml_Runtime[98],_bs7_,participation_personnelle), + _bs8_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$124); + return caml_call2(Runtime_ocaml_Runtime[112],aide_finale,_bs8_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$125) + :aide_finale}, + _bsU_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_s8_,1)}, + _bsV_=caml_call4(Runtime_ocaml_Runtime[63],_s9_,[0],_bsU_,_bsT_)} + catch(_bs6_) + {_bs6_ = caml_wrap_exception(_bs6_); + if(_bs6_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_s7_]; + throw _bs6_} + var + aide_finale_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_s__,Runtime_ocaml_Runtime[13],_bsV_); + try + {var + _bsW_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$4), + _bsX_= + caml_call2(Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bsW_), + _bsY_= + caml_call2 + (Runtime_ocaml_Runtime[127],plafond_degressivite_d823_16,_bsX_)} + catch(_bs5_) + {_bs5_ = caml_wrap_exception(_bs5_); + if(_bs5_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_s$_]; + throw _bs5_} + if(_bsY_) + {try + {var + _bsZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_98$0), + _bs0_=caml_call2(Runtime_ocaml_Runtime[116],fraction_l832_3,_bsZ_), + _bs1_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_9), + _bs2_=caml_call2(Runtime_ocaml_Runtime[126],fraction_l832_3,_bs1_), + _bs3_=caml_call2(Runtime_ocaml_Runtime[83],_bs2_,_bs0_)} + catch(_bs4_) + {_bs4_ = caml_wrap_exception(_bs4_); + if(_bs4_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_ta_]; + throw _bs4_} + if(_bs3_) + return [0, + montant_forfaitaire_charges_d8, + plafond_loyer_d823_16_2, + participation_minimale, + taux_composition_familiale, + participation_personnelle, + aide_finale_formule, + traitement_aide_finale_montant]; + throw [0,Runtime_ocaml_Runtime[3],_tb_]} + throw [0,Runtime_ocaml_Runtime[3],_tc_]} + function calcul_aide_personnalisee_loge$0(calcul_aide_personnalisee_loge) + {var + type_logement_foyer=calcul_aide_personnalisee_loge[1], + date_conventionnement=calcul_aide_personnalisee_loge[2], + ressources_menage_arrondies=calcul_aide_personnalisee_loge[3], + nombre_personnes_a_charge=calcul_aide_personnalisee_loge[4], + situation_familiale_calcul_apl=calcul_aide_personnalisee_loge[5], + zone=calcul_aide_personnalisee_loge[6], + date_courante=calcul_aide_personnalisee_loge[7], + redevance=calcul_aide_personnalisee_loge[8], + condition_2_du_832_25=calcul_aide_personnalisee_loge[9], + n_nombre_parts_d832_25=calcul_aide_personnalisee_loge[10]; + try + {var + _bm2_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_121726)}, + _bm3_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_te_,1)}, + _bm4_=caml_call4(Runtime_ocaml_Runtime[63],_tf_,[0],_bm3_,_bm2_)} + catch(_brD_) + {_brD_ = caml_wrap_exception(_brD_); + if(_brD_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_td_]; + throw _brD_} + var + coefficient_r_d832_25= + caml_call3 + (Runtime_ocaml_Runtime[28],_tg_,Runtime_ocaml_Runtime[13],_bm4_); + try + {var + _bm5_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$0)}, + _bm6_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ti_,1)}, + _bm7_=caml_call4(Runtime_ocaml_Runtime[63],_tj_,[0],_bm6_,_bm5_)} + catch(_brC_) + {_brC_ = caml_wrap_exception(_brC_); + if(_brC_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_th_]; + throw _brC_} + var + montant_forfaitaire_d832_24= + caml_call3 + (Runtime_ocaml_Runtime[28],_tk_,Runtime_ocaml_Runtime[13],_bm7_); + try + {var + _bm8_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$1)}, + _bm9_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tm_,1)}, + _bm__=caml_call4(Runtime_ocaml_Runtime[63],_tn_,[0],_bm9_,_bm8_)} + catch(_brB_) + {_brB_ = caml_wrap_exception(_brB_); + if(_brB_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_tl_]; + throw _brB_} + var + montant_minimal_aide_d823_24= + caml_call3 + (Runtime_ocaml_Runtime[28],_to_,Runtime_ocaml_Runtime[13],_bm__); + try + {var + _bm$_= + function(param) + {function _brx_(param) + {switch(type_logement_foyer[0]) + {case 0:return 0; + case 1: + var _brz_=caml_call3(Runtime_ocaml_Runtime[57],1994,12,31); + return caml_call2 + (Runtime_ocaml_Runtime[129],date_conventionnement,_brz_); + case 2: + var _brA_=caml_call3(Runtime_ocaml_Runtime[57],1990,9,30); + return caml_call2 + (Runtime_ocaml_Runtime[129],date_conventionnement,_brA_); + default:return 0}} + function _bry_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_tq_,1)} + return caml_call4(Runtime_ocaml_Runtime[63],_tr_,[0],_bry_,_brx_)}, + _bna_=function(param){return 1}, + _bnb_=[0,function(param){return caml_call1(condition_2_du_832_25,0)}], + _bnc_=caml_call4(Runtime_ocaml_Runtime[63],_ts_,_bnb_,_bna_,_bm$_)} + catch(_brw_) + {_brw_ = caml_wrap_exception(_brw_); + if(_brw_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_tp_]; + throw _brw_} + var + condition_2_du_832_25$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_tt_,Runtime_ocaml_Runtime[12],_bnc_); + try + {var + _bnd_=function(param){return date_courante}, + _bne_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tv_,1)}, + _bnf_=caml_call4(Runtime_ocaml_Runtime[63],_tw_,[0],_bne_,_bnd_), + contributions_sociales_dot_dat= + caml_call3 + (Runtime_ocaml_Runtime[28],_tx_,Runtime_ocaml_Runtime[16],_bnf_)} + catch(_brv_) + {_brv_ = caml_wrap_exception(_brv_); + if(_brv_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_tu_]; + throw _brv_} + var + _bng_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_ty_,contributions_sociales_aides_p), + [0,contributions_sociales_dot_dat]), + result=caml_call2(Runtime_ocaml_Runtime[27],_tz_,_bng_), + contributions_sociales_dot_mon=result[1]; + try + {var + _bnh_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bni_=function(param){return 0}, + _bnj_= + function(param) + {function _bqW_(param) + {switch(zone[0]) + {case 0: + var _bq3_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$126); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bq3_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_44443) + :caml_call1(Runtime_ocaml_Runtime[31],cst_52101); + var _bq4_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$67); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bq4_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_55555); + var _bq5_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$32); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bq5_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_59454); + var _bq6_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$17); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bq6_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_63369); + var + _bq7_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$13), + _bq8_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bq7_), + _bq9_=caml_call1(Runtime_ocaml_Runtime[69],_bq8_), + _bq__=caml_call1(Runtime_ocaml_Runtime[31],cst_7089), + _bq$_=caml_call2(Runtime_ocaml_Runtime[104],_bq__,_bq9_), + _bra_=caml_call1(Runtime_ocaml_Runtime[31],cst_68350); + return caml_call2(Runtime_ocaml_Runtime[93],_bra_,_bq$_); + case 1: + var _brb_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$127); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_brb_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_40643) + :caml_call1(Runtime_ocaml_Runtime[31],cst_47433); + var _brc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$68); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_brc_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_50575); + var _brd_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$33); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_brd_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_54138); + var _bre_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$18); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bre_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_57687); + var + _brf_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$14), + _brg_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_brf_), + _brh_=caml_call1(Runtime_ocaml_Runtime[69],_brg_), + _bri_=caml_call1(Runtime_ocaml_Runtime[31],cst_6407), + _brj_=caml_call2(Runtime_ocaml_Runtime[104],_bri_,_brh_), + _brk_=caml_call1(Runtime_ocaml_Runtime[31],cst_61469); + return caml_call2(Runtime_ocaml_Runtime[93],_brk_,_brj_); + default: + var _brl_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$128); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_brl_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_38578) + :caml_call1(Runtime_ocaml_Runtime[31],cst_44869); + var _brm_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$69); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_brm_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_47602); + var _brn_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$34); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_brn_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_50744); + var _bro_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$19); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bro_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_53884); + var + _brp_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$15), + _brq_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_brp_), + _brr_=caml_call1(Runtime_ocaml_Runtime[69],_brq_), + _brs_=caml_call1(Runtime_ocaml_Runtime[31],cst_5946), + _brt_=caml_call2(Runtime_ocaml_Runtime[104],_brs_,_brr_), + _bru_=caml_call1(Runtime_ocaml_Runtime[31],cst_57416); + return caml_call2(Runtime_ocaml_Runtime[93],_bru_,_brt_)}} + function _bqX_(param) + {var + _bqY_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bqZ_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bqY_), + _bq0_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bq1_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bq0_), + _bq2_=caml_call2(Runtime_ocaml_Runtime[83],_bq1_,_bqZ_); + return caml_call2(Runtime_ocaml_Runtime[29],_tB_,_bq2_)} + return caml_call4(Runtime_ocaml_Runtime[63],_tC_,[0],_bqX_,_bqW_)}, + _bnk_= + function(param) + {function _bql_(param) + {switch(zone[0]) + {case 0: + var _bqs_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$129); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqs_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_44630) + :caml_call1(Runtime_ocaml_Runtime[31],cst_52321); + var _bqt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$70); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqt_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_55788); + var _bqu_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$35); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqu_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_59704); + var _bqv_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$20); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqv_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_63635); + var + _bqw_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$16), + _bqx_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bqw_), + _bqy_=caml_call1(Runtime_ocaml_Runtime[69],_bqx_), + _bqz_=caml_call1(Runtime_ocaml_Runtime[31],cst_7119), + _bqA_=caml_call2(Runtime_ocaml_Runtime[104],_bqz_,_bqy_), + _bqB_=caml_call1(Runtime_ocaml_Runtime[31],cst_68637); + return caml_call2(Runtime_ocaml_Runtime[93],_bqB_,_bqA_); + case 1: + var _bqC_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$130); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqC_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_40814) + :caml_call1(Runtime_ocaml_Runtime[31],cst_47632); + var _bqD_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$71); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqD_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_50787); + var _bqE_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$36); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqE_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_54365); + var _bqF_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$21); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqF_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_57929); + var + _bqG_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$17), + _bqH_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bqG_), + _bqI_=caml_call1(Runtime_ocaml_Runtime[69],_bqH_), + _bqJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_6434), + _bqK_=caml_call2(Runtime_ocaml_Runtime[104],_bqJ_,_bqI_), + _bqL_=caml_call1(Runtime_ocaml_Runtime[31],cst_61727); + return caml_call2(Runtime_ocaml_Runtime[93],_bqL_,_bqK_); + default: + var _bqM_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$131); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqM_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_38740) + :caml_call1(Runtime_ocaml_Runtime[31],cst_45057); + var _bqN_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$72); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqN_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_47802); + var _bqO_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$37); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqO_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_50957); + var _bqP_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$22); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqP_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_54110); + var + _bqQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$18), + _bqR_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bqQ_), + _bqS_=caml_call1(Runtime_ocaml_Runtime[69],_bqR_), + _bqT_=caml_call1(Runtime_ocaml_Runtime[31],cst_5971), + _bqU_=caml_call2(Runtime_ocaml_Runtime[104],_bqT_,_bqS_), + _bqV_=caml_call1(Runtime_ocaml_Runtime[31],cst_57657); + return caml_call2(Runtime_ocaml_Runtime[93],_bqV_,_bqU_)}} + function _bqm_(param) + {var + _bqn_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bqo_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bqn_), + _bqp_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bqq_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bqp_), + _bqr_=caml_call2(Runtime_ocaml_Runtime[83],_bqq_,_bqo_); + return caml_call2(Runtime_ocaml_Runtime[29],_tD_,_bqr_)} + return caml_call4(Runtime_ocaml_Runtime[63],_tE_,[0],_bqm_,_bql_)}, + _bnl_= + [0, + function(param) + {function _bpP_(param) + {switch(zone[0]) + {case 0: + var _bpT_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$132); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bpT_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_46192) + :caml_call1(Runtime_ocaml_Runtime[31],cst_54152); + var _bpU_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$73); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bpU_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_57741); + var _bpV_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$38); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bpV_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_61794); + var _bpW_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$23); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bpW_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_65862); + var + _bpX_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$19), + _bpY_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bpX_), + _bpZ_=caml_call1(Runtime_ocaml_Runtime[69],_bpY_), + _bp0_=caml_call1(Runtime_ocaml_Runtime[31],cst_7368), + _bp1_=caml_call2(Runtime_ocaml_Runtime[104],_bp0_,_bpZ_), + _bp2_=caml_call1(Runtime_ocaml_Runtime[31],cst_71039); + return caml_call2(Runtime_ocaml_Runtime[93],_bp2_,_bp1_); + case 1: + var _bp3_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$133); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bp3_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_42242) + :caml_call1(Runtime_ocaml_Runtime[31],cst_49299); + var _bp4_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$74); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bp4_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_52565); + var _bp5_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$39); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bp5_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_56268); + var _bp6_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$24); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bp6_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_59957); + var + _bp7_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$20), + _bp8_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bp7_), + _bp9_=caml_call1(Runtime_ocaml_Runtime[69],_bp8_), + _bp__=caml_call1(Runtime_ocaml_Runtime[31],cst_6659), + _bp$_=caml_call2(Runtime_ocaml_Runtime[104],_bp__,_bp9_), + _bqa_=caml_call1(Runtime_ocaml_Runtime[31],cst_63887); + return caml_call2(Runtime_ocaml_Runtime[93],_bqa_,_bp$_); + default: + var _bqb_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$134); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqb_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_40096) + :caml_call1(Runtime_ocaml_Runtime[31],cst_46634); + var _bqc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$75); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqc_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_49475); + var _bqd_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$40); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqd_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_52740); + var _bqe_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$25); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqe_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_56004); + var + _bqf_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$21), + _bqg_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bqf_), + _bqh_=caml_call1(Runtime_ocaml_Runtime[69],_bqg_), + _bqi_=caml_call1(Runtime_ocaml_Runtime[31],cst_6180), + _bqj_=caml_call2(Runtime_ocaml_Runtime[104],_bqi_,_bqh_), + _bqk_=caml_call1(Runtime_ocaml_Runtime[31],cst_59675); + return caml_call2(Runtime_ocaml_Runtime[93],_bqk_,_bqj_)}} + function _bpQ_(param) + {var + _bpR_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bpS_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bpR_); + return caml_call2(Runtime_ocaml_Runtime[29],_tF_,_bpS_)} + return caml_call4(Runtime_ocaml_Runtime[63],_tG_,[0],_bpQ_,_bpP_)}, + _bnk_, + _bnj_], + _bnm_=caml_call4(Runtime_ocaml_Runtime[63],_tH_,_bnl_,_bni_,_bnh_)} + catch(_bpO_) + {_bpO_ = caml_wrap_exception(_bpO_); + if(_bpO_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_tA_]; + throw _bpO_} + var + plafond_equivalence_loyer_elig= + caml_call3 + (Runtime_ocaml_Runtime[28],_tI_,Runtime_ocaml_Runtime[13],_bnm_); + function _bnn_(param) + {try + {var + _bpI_= + function(param$0) + {var + _bpM_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$135), + _bpN_= + caml_call2 + (Runtime_ocaml_Runtime[98],param,montant_forfaitaire_d832_24); + return caml_call2(Runtime_ocaml_Runtime[127],_bpN_,_bpM_) + ?caml_call2 + (Runtime_ocaml_Runtime[98], + param, + montant_forfaitaire_d832_24) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$136)}, + _bpJ_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_tK_,1)}, + _bpK_=caml_call4(Runtime_ocaml_Runtime[63],_tL_,[0],_bpJ_,_bpI_); + return _bpK_} + catch(_bpL_) + {_bpL_ = caml_wrap_exception(_bpL_); + if(_bpL_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_tJ_]; + throw _bpL_}} + var + traitement_aide_finale_minorat= + caml_call3 + (Runtime_ocaml_Runtime[28],_tM_,Runtime_ocaml_Runtime[10],_bnn_); + try + {var + _bno_=function(param){return condition_2_du_832_25$0}, + _bnp_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tO_,1)}, + _bnq_=caml_call4(Runtime_ocaml_Runtime[63],_tP_,[0],_bnp_,_bno_), + calcul_nombre_parts_dot_condit= + caml_call3 + (Runtime_ocaml_Runtime[28],_tQ_,Runtime_ocaml_Runtime[12],_bnq_)} + catch(_bpH_) + {_bpH_ = caml_wrap_exception(_bpH_); + if(_bpH_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_tN_]; + throw _bpH_} + try + {var + _bnr_=function(param){return nombre_personnes_a_charge}, + _bns_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tS_,1)}, + _bnt_=caml_call4(Runtime_ocaml_Runtime[63],_tT_,[0],_bns_,_bnr_), + calcul_nombre_parts_dot_nombre= + caml_call3 + (Runtime_ocaml_Runtime[28],_tU_,Runtime_ocaml_Runtime[14],_bnt_)} + catch(_bpG_) + {_bpG_ = caml_wrap_exception(_bpG_); + if(_bpG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_tR_]; + throw _bpG_} + try + {var + _bnu_=function(param){return situation_familiale_calcul_apl}, + _bnv_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tW_,1)}, + _bnw_=caml_call4(Runtime_ocaml_Runtime[63],_tX_,[0],_bnv_,_bnu_), + calcul_nombre_parts_dot_situat= + caml_call3 + (Runtime_ocaml_Runtime[28], + _tY_, + embed_situation_familiale_calc, + _bnw_)} + catch(_bpF_) + {_bpF_ = caml_wrap_exception(_bpF_); + if(_bpF_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_tV_]; + throw _bpF_} + var + _bnx_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_tZ_,calcul_nombre_part_logement_fo), + [0, + calcul_nombre_parts_dot_condit, + calcul_nombre_parts_dot_nombre, + calcul_nombre_parts_dot_situat]), + result$0=caml_call2(Runtime_ocaml_Runtime[27],_t0_,_bnx_), + calcul_nombre_parts_dot_n_nomb=result$0[1]; + try + {var + _bny_= + function(param) + {return condition_2_du_832_25$0 + ?caml_call1(Runtime_ocaml_Runtime[31],cst_1500) + :caml_call1(Runtime_ocaml_Runtime[31],cst_2668)}, + _bnz_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_t2_,1)}, + _bnA_=caml_call4(Runtime_ocaml_Runtime[63],_t3_,[0],_bnz_,_bny_)} + catch(_bpE_) + {_bpE_ = caml_wrap_exception(_bpE_); + if(_bpE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_t1_]; + throw _bpE_} + var + montant_forfaitaire_d832_27= + caml_call3 + (Runtime_ocaml_Runtime[28],_t4_,Runtime_ocaml_Runtime[13],_bnA_); + try + {var + _bnB_= + function(param) + {return condition_2_du_832_25$0 + ?caml_call1(Runtime_ocaml_Runtime[31],cst_2142091) + :caml_call1(Runtime_ocaml_Runtime[31],cst_1339340)}, + _bnC_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_t6_,1)}, + _bnD_=caml_call4(Runtime_ocaml_Runtime[63],_t7_,[0],_bnC_,_bnB_)} + catch(_bpD_) + {_bpD_ = caml_wrap_exception(_bpD_); + if(_bpD_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_t5_]; + throw _bpD_} + var + coefficient_multiplicateur_d83= + caml_call3 + (Runtime_ocaml_Runtime[28],_t8_,Runtime_ocaml_Runtime[13],_bnD_); + try + {var + _bnE_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[127], + redevance, + plafond_equivalence_loyer_elig) + ?plafond_equivalence_loyer_elig + :redevance}, + _bnF_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_t__,1)}, + _bnG_=caml_call4(Runtime_ocaml_Runtime[63],_t$_,[0],_bnF_,_bnE_)} + catch(_bpC_) + {_bpC_ = caml_wrap_exception(_bpC_); + if(_bpC_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_t9_]; + throw _bpC_} + var + equivalence_loyer_eligible= + caml_call3 + (Runtime_ocaml_Runtime[28],_ua_,Runtime_ocaml_Runtime[13],_bnG_); + try + {var + _bnH_= + function(param) + {function _bpA_(param){return calcul_nombre_parts_dot_n_nomb} + function _bpB_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_uc_,1)} + return caml_call4(Runtime_ocaml_Runtime[63],_ud_,[0],_bpB_,_bpA_)}, + _bnI_=function(param){return 1}, + _bnJ_= + [0,function(param){return caml_call1(n_nombre_parts_d832_25,0)}], + _bnK_=caml_call4(Runtime_ocaml_Runtime[63],_ue_,_bnJ_,_bnI_,_bnH_)} + catch(_bpz_) + {_bpz_ = caml_wrap_exception(_bpz_); + if(_bpz_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_ub_]; + throw _bpz_} + var + n_nombre_parts_d832_25$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_uf_,Runtime_ocaml_Runtime[15],_bnK_); + function _bnL_(param) + {try + {var + _bpv_= + function(param$0) + {return caml_call2 + (Runtime_ocaml_Runtime[98],equivalence_loyer_eligible,param)}, + _bpw_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_uh_,1)}, + _bpx_=caml_call4(Runtime_ocaml_Runtime[63],_ui_,[0],_bpw_,_bpv_); + return _bpx_} + catch(_bpy_) + {_bpy_ = caml_wrap_exception(_bpy_); + if(_bpy_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_ug_]; + throw _bpy_}} + var + depense_nette_minimale_d832_27= + caml_call3 + (Runtime_ocaml_Runtime[28],_uj_,Runtime_ocaml_Runtime[10],_bnL_); + try + {var + _bnM_=function(param){return ressources_menage_arrondies}, + _bnN_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ul_,1)}, + _bnO_=caml_call4(Runtime_ocaml_Runtime[63],_um_,[0],_bnN_,_bnM_), + calcul_equivalence_loyer_minim$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_un_,Runtime_ocaml_Runtime[13],_bnO_)} + catch(_bpu_) + {_bpu_ = caml_wrap_exception(_bpu_); + if(_bpu_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_uk_]; + throw _bpu_} + try + {var + _bnP_=function(param){return condition_2_du_832_25$0}, + _bnQ_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_up_,1)}, + _bnR_=caml_call4(Runtime_ocaml_Runtime[63],_uq_,[0],_bnQ_,_bnP_), + calcul_equivalence_loyer_minim$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_ur_,Runtime_ocaml_Runtime[12],_bnR_)} + catch(_bpt_) + {_bpt_ = caml_wrap_exception(_bpt_); + if(_bpt_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_uo_]; + throw _bpt_} + try + {var + _bnS_=function(param){return n_nombre_parts_d832_25$0}, + _bnT_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ut_,1)}, + _bnU_=caml_call4(Runtime_ocaml_Runtime[63],_uu_,[0],_bnT_,_bnS_), + calcul_equivalence_loyer_minim$2= + caml_call3 + (Runtime_ocaml_Runtime[28],_uv_,Runtime_ocaml_Runtime[15],_bnU_)} + catch(_bps_) + {_bps_ = caml_wrap_exception(_bps_); + if(_bps_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_us_]; + throw _bps_} + var + _bnV_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_uw_,calcul_equivalence_loyer_minim), + [0, + calcul_equivalence_loyer_minim$0, + calcul_equivalence_loyer_minim$1, + calcul_equivalence_loyer_minim$2]), + result$1=caml_call2(Runtime_ocaml_Runtime[27],_ux_,_bnV_), + calcul_equivalence_loyer_minim$3=result$1[1]; + try + {var + _bnW_= + function(param) + {var + _bpn_= + caml_call2 + (Runtime_ocaml_Runtime[104], + coefficient_r_d832_25, + n_nombre_parts_d832_25$0), + denominateur= + caml_call2 + (Runtime_ocaml_Runtime[98],ressources_menage_arrondies,_bpn_), + _bpo_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$137), + denominateur$0= + caml_call2(Runtime_ocaml_Runtime[112],denominateur,_bpo_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$138) + :denominateur, + _bpp_= + caml_call2 + (Runtime_ocaml_Runtime[104], + coefficient_multiplicateur_d83, + n_nombre_parts_d832_25$0), + _bpq_=caml_call2(Runtime_ocaml_Runtime[108],denominateur$0,_bpp_), + _bpr_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95); + return caml_call2(Runtime_ocaml_Runtime[97],_bpr_,_bpq_)}, + _bnX_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_uz_,1)}, + _bnY_= + [0, + function(param) + {function _bpi_(param) + {var + _bpk_= + caml_call2 + (Runtime_ocaml_Runtime[104], + coefficient_multiplicateur_d83, + n_nombre_parts_d832_25$0), + _bpl_= + caml_call2 + (Runtime_ocaml_Runtime[108], + ressources_menage_arrondies, + _bpk_), + _bpm_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_9$0); + return caml_call2(Runtime_ocaml_Runtime[97],_bpm_,_bpl_)} + function _bpj_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_uA_,condition_2_du_832_25$0)} + return caml_call4(Runtime_ocaml_Runtime[63],_uB_,[0],_bpj_,_bpi_)}], + _bnZ_=caml_call4(Runtime_ocaml_Runtime[63],_uC_,_bnY_,_bnX_,_bnW_)} + catch(_bph_) + {_bph_ = caml_wrap_exception(_bph_); + if(_bph_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_uy_]; + throw _bph_} + var + coefficient_prise_en_charge_d8= + caml_call3 + (Runtime_ocaml_Runtime[28],_uD_,Runtime_ocaml_Runtime[15],_bnZ_); + function _bn0_(param) + {try + {var + _bpa_= + function(param$0) + {var + _bpe_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _uF_, + Runtime_ocaml_Runtime[13], + param), + _bpf_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _uG_, + depense_nette_minimale_d832_27), + _bpe_), + _bpg_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _uH_, + Runtime_ocaml_Runtime[13], + _bpf_), + depense_nette_minimale= + caml_call2(Runtime_ocaml_Runtime[27],_uI_,_bpg_); + return caml_call2 + (Runtime_ocaml_Runtime[117], + depense_nette_minimale, + montant_forfaitaire_d832_27) + ?caml_call2 + (Runtime_ocaml_Runtime[98], + montant_forfaitaire_d832_27, + depense_nette_minimale) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$139)}, + _bpb_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_uJ_,1)}, + _bpc_=caml_call4(Runtime_ocaml_Runtime[63],_uK_,[0],_bpb_,_bpa_); + return _bpc_} + catch(_bpd_) + {_bpd_ = caml_wrap_exception(_bpd_); + if(_bpd_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_uE_]; + throw _bpd_}} + var + abattement_depense_nette_minim= + caml_call3 + (Runtime_ocaml_Runtime[28],_uL_,Runtime_ocaml_Runtime[10],_bn0_); + try + {var + _bn1_=function(param){return calcul_equivalence_loyer_minim$3}, + _bn2_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_uN_,1)}, + _bn3_=caml_call4(Runtime_ocaml_Runtime[63],_uO_,[0],_bn2_,_bn1_)} + catch(_bo$_) + {_bo$_ = caml_wrap_exception(_bo$_); + if(_bo$_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_uM_]; + throw _bo$_} + var + equivalence_loyer_minimale= + caml_call3 + (Runtime_ocaml_Runtime[28],_uP_,Runtime_ocaml_Runtime[13],_bn3_); + try + {var + _bn4_= + function(param) + {var + _bo5_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$5), + _bo6_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$6), + _bo7_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_005$0), + _bo8_= + caml_call2 + (Runtime_ocaml_Runtime[97], + coefficient_prise_en_charge_d8, + _bo7_), + _bo9_=caml_call2(Runtime_ocaml_Runtime[103],_bo8_,_bo6_), + _bo__=caml_call1(Runtime_ocaml_Runtime[78],_bo9_); + return caml_call2(Runtime_ocaml_Runtime[107],_bo__,_bo5_)}, + _bn5_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_uR_,1)}, + _bn6_= + [0, + function(param) + {function _boX_(param) + {var + _boZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$7), + _bo0_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$8), + _bo1_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_005$1), + _bo2_= + caml_call2 + (Runtime_ocaml_Runtime[97], + coefficient_prise_en_charge_d8, + _bo1_), + _bo3_=caml_call2(Runtime_ocaml_Runtime[103],_bo2_,_bo0_), + _bo4_=caml_call1(Runtime_ocaml_Runtime[78],_bo3_); + return caml_call2(Runtime_ocaml_Runtime[107],_bo4_,_boZ_)} + function _boY_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_uS_,condition_2_du_832_25$0)} + return caml_call4(Runtime_ocaml_Runtime[63],_uT_,[0],_boY_,_boX_)}], + _bn7_=caml_call4(Runtime_ocaml_Runtime[63],_uU_,_bn6_,_bn5_,_bn4_)} + catch(_boW_) + {_boW_ = caml_wrap_exception(_boW_); + if(_boW_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_uQ_]; + throw _boW_} + var + coefficient_prise_en_charge_d8$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_uV_,Runtime_ocaml_Runtime[15],_bn7_); + function _bn8_(param) + {try + {var + _boK_= + function(param$0) + {var + _boO_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _uX_, + Runtime_ocaml_Runtime[13], + param), + _boP_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _uY_, + traitement_aide_finale_minorat), + _boO_), + _boQ_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _uZ_, + Runtime_ocaml_Runtime[13], + _boP_), + aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_u0_,_boQ_), + _boR_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _u1_, + Runtime_ocaml_Runtime[13], + aide_finale), + _boS_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _u2_, + abattement_depense_nette_minim), + _boR_), + _boT_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _u3_, + Runtime_ocaml_Runtime[13], + _boS_), + _boU_=caml_call2(Runtime_ocaml_Runtime[27],_u4_,_boT_), + aide_finale$0= + caml_call2(Runtime_ocaml_Runtime[98],aide_finale,_boU_), + _boV_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$140); + return caml_call2 + (Runtime_ocaml_Runtime[127],aide_finale$0,_boV_) + ?aide_finale$0 + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$141)}, + _boL_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_u5_,1)}, + _boM_=caml_call4(Runtime_ocaml_Runtime[63],_u6_,[0],_boL_,_boK_); + return _boM_} + catch(_boN_) + {_boN_ = caml_wrap_exception(_boN_); + if(_boN_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_uW_]; + throw _boN_}} + var + traitement_aide_finale_abattem= + caml_call3 + (Runtime_ocaml_Runtime[28],_u7_,Runtime_ocaml_Runtime[10],_bn8_); + try + {var + _bn9_= + function(param) + {var _boJ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$0); + return caml_call2 + (Runtime_ocaml_Runtime[126], + coefficient_prise_en_charge_d8$0, + _boJ_) + ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$1) + :coefficient_prise_en_charge_d8$0}, + _bn__= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_u9_,1)}, + _bn$_= + [0, + function(param) + {function _boG_(param) + {var _boI_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_9$1); + return caml_call2 + (Runtime_ocaml_Runtime[126], + coefficient_prise_en_charge_d8$0, + _boI_) + ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_9$2) + :coefficient_prise_en_charge_d8$0} + function _boH_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_u__,condition_2_du_832_25$0)} + return caml_call4(Runtime_ocaml_Runtime[63],_u$_,[0],_boH_,_boG_)}], + _boa_=caml_call4(Runtime_ocaml_Runtime[63],_va_,_bn$_,_bn__,_bn9_)} + catch(_boF_) + {_boF_ = caml_wrap_exception(_boF_); + if(_boF_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_u8_]; + throw _boF_} + var + coefficient_prise_en_charge_d8$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_vb_,Runtime_ocaml_Runtime[15],_boa_); + function _bob_(param) + {try + {var + _boq_= + function(param$0) + {var + _bou_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _vd_, + Runtime_ocaml_Runtime[13], + param), + _bov_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _ve_, + traitement_aide_finale_abattem), + _bou_), + _bow_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _vf_, + Runtime_ocaml_Runtime[13], + _bov_), + aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_vg_,_bow_), + _box_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _vh_, + Runtime_ocaml_Runtime[13], + aide_finale), + _boy_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _vi_, + contributions_sociales_dot_mon), + _box_), + _boz_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _vj_, + Runtime_ocaml_Runtime[13], + _boy_), + crds=caml_call2(Runtime_ocaml_Runtime[27],_vk_,_boz_), + _boA_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$0), + _boB_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale,crds), + _boC_=caml_call2(Runtime_ocaml_Runtime[98],_boB_,_boA_), + aide_finale_moins_crds_arrondi= + caml_call1(Runtime_ocaml_Runtime[77],_boC_), + _boD_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$142), + _boE_= + caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds); + return caml_call2(Runtime_ocaml_Runtime[127],_boE_,_boD_) + ?caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$143)}, + _bor_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_vl_,1)}, + _bos_=caml_call4(Runtime_ocaml_Runtime[63],_vm_,[0],_bor_,_boq_); + return _bos_} + catch(_bot_) + {_bot_ = caml_wrap_exception(_bot_); + if(_bot_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vc_]; + throw _bot_}} + var + traitement_aide_finale_contrib= + caml_call3 + (Runtime_ocaml_Runtime[28],_vn_,Runtime_ocaml_Runtime[10],_bob_); + try + {var + _boc_= + function(param) + {var + _boo_= + caml_call2 + (Runtime_ocaml_Runtime[98], + equivalence_loyer_eligible, + equivalence_loyer_minimale), + aide_finale= + caml_call2 + (Runtime_ocaml_Runtime[104], + _boo_, + coefficient_prise_en_charge_d8$1), + _bop_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$144); + return caml_call2(Runtime_ocaml_Runtime[112],aide_finale,_bop_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$145) + :aide_finale}, + _bod_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vp_,1)}, + _boe_=caml_call4(Runtime_ocaml_Runtime[63],_vq_,[0],_bod_,_boc_)} + catch(_bon_) + {_bon_ = caml_wrap_exception(_bon_); + if(_bon_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vo_]; + throw _bon_} + var + aide_finale_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_vr_,Runtime_ocaml_Runtime[13],_boe_); + function _bof_(param) + {try + {var + _bog_= + function(param$0) + {var + _bok_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _vt_, + Runtime_ocaml_Runtime[13], + param), + _bol_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _vu_, + traitement_aide_finale_contrib), + _bok_), + _bom_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _vv_, + Runtime_ocaml_Runtime[13], + _bol_), + aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_vw_,_bom_); + return caml_call2 + (Runtime_ocaml_Runtime[112], + aide_finale, + montant_minimal_aide_d823_24) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$146) + :aide_finale}, + _boh_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_vx_,1)}, + _boi_=caml_call4(Runtime_ocaml_Runtime[63],_vy_,[0],_boh_,_bog_); + return _boi_} + catch(_boj_) + {_boj_ = caml_wrap_exception(_boj_); + if(_boj_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vs_]; + throw _boj_}} + var + traitement_aide_finale_montant= + caml_call3 + (Runtime_ocaml_Runtime[28],_vz_,Runtime_ocaml_Runtime[10],_bof_); + return [0, + coefficient_multiplicateur_d83, + coefficient_r_d832_25, + n_nombre_parts_d832_25$0, + equivalence_loyer_eligible, + plafond_equivalence_loyer_elig, + equivalence_loyer_minimale, + coefficient_prise_en_charge_d8$1, + aide_finale_formule, + traitement_aide_finale_montant]} + function calcul_aide_personnalisee_loge$1(calcul_aide_personnalisee_loge) + {var + mensualite_principale=calcul_aide_personnalisee_loge[1], + ressources_menage_arrondies=calcul_aide_personnalisee_loge[2], + nombre_personnes_a_charge=calcul_aide_personnalisee_loge[3], + situation_familiale_calcul_apl=calcul_aide_personnalisee_loge[4], + type_travaux_logement=calcul_aide_personnalisee_loge[5], + date_signature_pret=calcul_aide_personnalisee_loge[6], + local_habite_premiere_fois_ben=calcul_aide_personnalisee_loge[7], + date_entree_logement=calcul_aide_personnalisee_loge[8], + copropriete=calcul_aide_personnalisee_loge[9], + situation_r822_11_13_17=calcul_aide_personnalisee_loge[10], + zone=calcul_aide_personnalisee_loge[11], + type_pret=calcul_aide_personnalisee_loge[12], + anciennete_logement=calcul_aide_personnalisee_loge[13], + date_courante=calcul_aide_personnalisee_loge[14]; + try + {var + _aVY_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$1)}, + _aVZ_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vB_,1)}, + _aV0_=caml_call4(Runtime_ocaml_Runtime[63],_vC_,[0],_aVZ_,_aVY_)} + catch(_bm1_) + {_bm1_ = caml_wrap_exception(_bm1_); + if(_bm1_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vA_]; + throw _bm1_} + var + montant_forfaitaire_d832_10= + caml_call3 + (Runtime_ocaml_Runtime[28],_vD_,Runtime_ocaml_Runtime[13],_aV0_); + try + {var + _aV1_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$2)}, + _aV2_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vF_,1)}, + _aV3_=caml_call4(Runtime_ocaml_Runtime[63],_vG_,[0],_aV2_,_aV1_)} + catch(_bm0_) + {_bm0_ = caml_wrap_exception(_bm0_); + if(_bm0_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vE_]; + throw _bm0_} + var + montant_minimal_aide_d832_10= + caml_call3 + (Runtime_ocaml_Runtime[28],_vH_,Runtime_ocaml_Runtime[13],_aV3_); + try + {var + _aV4_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_2211133)}, + _aV5_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vJ_,1)}, + _aV6_=caml_call4(Runtime_ocaml_Runtime[63],_vK_,[0],_aV5_,_aV4_)} + catch(_bmZ_) + {_bmZ_ = caml_wrap_exception(_bmZ_); + if(_bmZ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vI_]; + throw _bmZ_} + var + coefficient_multiplicateur_d83= + caml_call3 + (Runtime_ocaml_Runtime[28],_vL_,Runtime_ocaml_Runtime[13],_aV6_); + try + {var + _aV7_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[39],cst_16_25)}, + _aV8_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vN_,1)}, + _aV9_=caml_call4(Runtime_ocaml_Runtime[63],_vO_,[0],_aV8_,_aV7_)} + catch(_bmY_) + {_bmY_ = caml_wrap_exception(_bmY_); + if(_bmY_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vM_]; + throw _bmY_} + var + coefficient_multiplicateur_d83$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_vP_,Runtime_ocaml_Runtime[15],_aV9_); + try + {var + _aV__= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_560085)}, + _aV$_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vR_,1)}, + _aWa_=caml_call4(Runtime_ocaml_Runtime[63],_vS_,[0],_aV$_,_aV__)} + catch(_bmX_) + {_bmX_ = caml_wrap_exception(_bmX_); + if(_bmX_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vQ_]; + throw _bmX_} + var + montant_limite_tranches_d832_1= + caml_call3 + (Runtime_ocaml_Runtime[28],_vT_,Runtime_ocaml_Runtime[13],_aWa_); + try + {var + _aWb_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_208$0)}, + _aWc_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vV_,1)}, + _aWd_=caml_call4(Runtime_ocaml_Runtime[63],_vW_,[0],_aWc_,_aWb_)} + catch(_bmW_) + {_bmW_ = caml_wrap_exception(_bmW_); + if(_bmW_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vU_]; + throw _bmW_} + var + taux_tranche_inferieure_d832_1= + caml_call3 + (Runtime_ocaml_Runtime[28],_vX_,Runtime_ocaml_Runtime[15],_aWd_); + try + {var + _aWe_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_416)}, + _aWf_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vZ_,1)}, + _aWg_=caml_call4(Runtime_ocaml_Runtime[63],_v0_,[0],_aWf_,_aWe_)} + catch(_bmV_) + {_bmV_ = caml_wrap_exception(_bmV_); + if(_bmV_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vY_]; + throw _bmV_} + var + taux_tranche_superieure_d832_1= + caml_call3 + (Runtime_ocaml_Runtime[28],_v1_,Runtime_ocaml_Runtime[15],_aWg_); + try + {var + _aWh_= + function(param) + {var + _bmT_=caml_call1(Runtime_ocaml_Runtime[39],cst_6_55957), + _bmU_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$76); + return caml_call2(Runtime_ocaml_Runtime[107],_bmU_,_bmT_)}, + _aWi_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_v3_,1)}, + _aWj_=caml_call4(Runtime_ocaml_Runtime[63],_v4_,[0],_aWi_,_aWh_)} + catch(_bmS_) + {_bmS_ = caml_wrap_exception(_bmS_); + if(_bmS_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_v2_]; + throw _bmS_} + var + taux_francs_vers_euros= + caml_call3 + (Runtime_ocaml_Runtime[28],_v5_,Runtime_ocaml_Runtime[15],_aWj_); + try + {var + _aWk_=function(param){return nombre_personnes_a_charge}, + _aWl_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_v7_,1)}, + _aWm_=caml_call4(Runtime_ocaml_Runtime[63],_v8_,[0],_aWl_,_aWk_), + calcul_nombre_parts_dot_nombre= + caml_call3 + (Runtime_ocaml_Runtime[28],_v9_,Runtime_ocaml_Runtime[14],_aWm_)} + catch(_bmR_) + {_bmR_ = caml_wrap_exception(_bmR_); + if(_bmR_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_v6_]; + throw _bmR_} + try + {var + _aWn_=function(param){return situation_familiale_calcul_apl}, + _aWo_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_v$_,1)}, + _aWp_=caml_call4(Runtime_ocaml_Runtime[63],_wa_,[0],_aWo_,_aWn_), + calcul_nombre_parts_dot_situat= + caml_call3 + (Runtime_ocaml_Runtime[28], + _wb_, + embed_situation_familiale_calc, + _aWp_)} + catch(_bmQ_) + {_bmQ_ = caml_wrap_exception(_bmQ_); + if(_bmQ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_v__]; + throw _bmQ_} + var + _aWq_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_wc_,calcul_nombre_parts_accession_), + [0,calcul_nombre_parts_dot_nombre,calcul_nombre_parts_dot_situat]), + result=caml_call2(Runtime_ocaml_Runtime[27],_wd_,_aWq_), + calcul_nombre_parts_dot_n_nomb=result[1]; + try + {var + _aWr_= + function(param) + {if(0 === anciennete_logement[0]) + {var _bmO_=caml_call3(Runtime_ocaml_Runtime[57],1998,10,1); + return caml_call2 + (Runtime_ocaml_Runtime[119],date_signature_pret,_bmO_) + ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0226) + :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0234)} + var ameliore_par_occupant=anciennete_logement[1]; + if(0 === ameliore_par_occupant[0]) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0172); + var _bmP_=caml_call3(Runtime_ocaml_Runtime[57],1998,10,1); + return caml_call2 + (Runtime_ocaml_Runtime[119],date_signature_pret,_bmP_) + ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0226$0) + :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0234$0)}, + _aWs_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wf_,1)}, + _aWt_=caml_call4(Runtime_ocaml_Runtime[63],_wg_,[0],_aWs_,_aWr_)} + catch(_bmN_) + {_bmN_ = caml_wrap_exception(_bmN_); + if(_bmN_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_we_]; + throw _bmN_} + var + coefficient_multiplicateur_d83$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_wh_,Runtime_ocaml_Runtime[15],_aWt_); + try + {var + _aWu_=function(param){return date_courante}, + _aWv_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wj_,1)}, + _aWw_=caml_call4(Runtime_ocaml_Runtime[63],_wk_,[0],_aWv_,_aWu_), + contributions_sociales_dot_dat= + caml_call3 + (Runtime_ocaml_Runtime[28],_wl_,Runtime_ocaml_Runtime[16],_aWw_)} + catch(_bmM_) + {_bmM_ = caml_wrap_exception(_bmM_); + if(_bmM_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_wi_]; + throw _bmM_} + var + _aWx_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_wm_,contributions_sociales_aides_p), + [0,contributions_sociales_dot_dat]), + result$0=caml_call2(Runtime_ocaml_Runtime[27],_wn_,_aWx_), + contributions_sociales_dot_mon=result$0[1]; + try + {var + _aWy_= + function(param) + {function _bmd_(param){throw Runtime_ocaml_Runtime[2]} + function _bme_(param){return 0} + function _bmf_(param) + {function _bmB_(param) + {var + _bmI_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bmJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224$1), + _bmK_=caml_call2(Runtime_ocaml_Runtime[104],_bmJ_,_bmI_), + _bmL_=caml_call1(Runtime_ocaml_Runtime[31],cst_5399$1); + return caml_call2(Runtime_ocaml_Runtime[93],_bmL_,_bmK_)} + function _bmC_(param) + {var + _bmD_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bmE_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bmD_), + _bmF_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bmG_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bmF_), + _bmH_=caml_call2(Runtime_ocaml_Runtime[83],_bmG_,_bmE_); + return caml_call2(Runtime_ocaml_Runtime[29],_wp_,_bmH_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_wq_,[0],_bmC_,_bmB_)} + function _bmg_(param) + {function _bmq_(param) + {var + _bmx_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bmy_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$1), + _bmz_=caml_call2(Runtime_ocaml_Runtime[104],_bmy_,_bmx_), + _bmA_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422$1); + return caml_call2(Runtime_ocaml_Runtime[93],_bmA_,_bmz_)} + function _bmr_(param) + {var + _bms_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bmt_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bms_), + _bmu_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bmv_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bmu_), + _bmw_=caml_call2(Runtime_ocaml_Runtime[83],_bmv_,_bmt_); + return caml_call2(Runtime_ocaml_Runtime[29],_wr_,_bmw_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_ws_,[0],_bmr_,_bmq_)} + var + _bmh_= + [0, + function(param) + {function _bmi_(param) + {var + _bmm_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bmn_=caml_call1(Runtime_ocaml_Runtime[31],cst_1272$1), + _bmo_=caml_call2(Runtime_ocaml_Runtime[104],_bmn_,_bmm_), + _bmp_=caml_call1(Runtime_ocaml_Runtime[31],cst_5612$1); + return caml_call2(Runtime_ocaml_Runtime[93],_bmp_,_bmo_)} + function _bmj_(param) + {var + _bmk_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bml_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bmk_); + return caml_call2(Runtime_ocaml_Runtime[29],_wt_,_bml_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_wu_,[0],_bmj_,_bmi_)}, + _bmg_, + _bmf_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_wv_,_bmh_,_bme_,_bmd_)}, + _aWz_=function(param){return 1}, + _aWA_= + [0, + function(param) + {function _blD_(param){throw Runtime_ocaml_Runtime[2]} + function _blE_(param){return 0} + function _blF_(param) + {function _bl3_(param) + {var + _bl$_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bma_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224$2), + _bmb_=caml_call2(Runtime_ocaml_Runtime[104],_bma_,_bl$_), + _bmc_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_2699$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_5399$2); + return caml_call2(Runtime_ocaml_Runtime[93],_bmc_,_bmb_)} + function _bl4_(param) + {var + _bl5_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bl6_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bl5_), + _bl7_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bl8_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bl7_), + _bl9_=caml_call2(Runtime_ocaml_Runtime[83],_bl8_,_bl6_), + _bl__= + caml_call2(Runtime_ocaml_Runtime[83],_bl9_,copropriete); + return caml_call2(Runtime_ocaml_Runtime[29],_ww_,_bl__)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_wx_,[0],_bl4_,_bl3_)} + function _blG_(param) + {function _blR_(param) + {var + _blZ_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bl0_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$2), + _bl1_=caml_call2(Runtime_ocaml_Runtime[104],_bl0_,_blZ_), + _bl2_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_2710$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_5422$2); + return caml_call2(Runtime_ocaml_Runtime[93],_bl2_,_bl1_)} + function _blS_(param) + {var + _blT_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _blU_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_blT_), + _blV_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _blW_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_blV_), + _blX_=caml_call2(Runtime_ocaml_Runtime[83],_blW_,_blU_), + _blY_= + caml_call2(Runtime_ocaml_Runtime[83],_blX_,copropriete); + return caml_call2(Runtime_ocaml_Runtime[29],_wy_,_blY_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_wz_,[0],_blS_,_blR_)} + var + _blH_= + [0, + function(param) + {function _blI_(param) + {var + _blN_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _blO_=caml_call1(Runtime_ocaml_Runtime[31],cst_1272$2), + _blP_=caml_call2(Runtime_ocaml_Runtime[104],_blO_,_blN_), + _blQ_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_2805$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_5612$2); + return caml_call2(Runtime_ocaml_Runtime[93],_blQ_,_blP_)} + function _blJ_(param) + {var + _blK_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _blL_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_blK_), + _blM_= + caml_call2(Runtime_ocaml_Runtime[83],_blL_,copropriete); + return caml_call2(Runtime_ocaml_Runtime[29],_wA_,_blM_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_wB_,[0],_blJ_,_blI_)}, + _blG_, + _blF_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_wC_,_blH_,_blE_,_blD_)}], + _aWB_=caml_call4(Runtime_ocaml_Runtime[63],_wD_,_aWA_,_aWz_,_aWy_)} + catch(_blC_) + {_blC_ = caml_wrap_exception(_blC_); + if(_blC_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_wo_]; + throw _blC_} + var + montant_forfaitaire_charges_d8= + caml_call3 + (Runtime_ocaml_Runtime[28],_wE_,Runtime_ocaml_Runtime[13],_aWB_); + function _aWC_(param) + {try + {var + _blw_= + function(param$0) + {var + _blA_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$147), + _blB_= + caml_call2 + (Runtime_ocaml_Runtime[98],param,montant_forfaitaire_d832_10); + return caml_call2(Runtime_ocaml_Runtime[127],_blB_,_blA_) + ?caml_call2 + (Runtime_ocaml_Runtime[98], + param, + montant_forfaitaire_d832_10) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$148)}, + _blx_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_wG_,1)}, + _bly_=caml_call4(Runtime_ocaml_Runtime[63],_wH_,[0],_blx_,_blw_); + return _bly_} + catch(_blz_) + {_blz_ = caml_wrap_exception(_blz_); + if(_blz_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_wF_]; + throw _blz_}} + var + traitement_aide_finale_minorat= + caml_call3 + (Runtime_ocaml_Runtime[28],_wI_,Runtime_ocaml_Runtime[10],_aWC_); + try + {var + _aWD_= + function(param) + {var + _blv_= + caml_call2 + (Runtime_ocaml_Runtime[104], + mensualite_principale, + coefficient_multiplicateur_d83$0); + return caml_call2 + (Runtime_ocaml_Runtime[117], + ressources_menage_arrondies, + _blv_) + ?caml_call2 + (Runtime_ocaml_Runtime[104], + mensualite_principale, + coefficient_multiplicateur_d83$0) + :ressources_menage_arrondies}, + _aWE_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wK_,1)}, + _aWF_= + [0, + function(param) + {function _blt_(param){return ressources_menage_arrondies} + function _blu_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_wL_,situation_r822_11_13_17)} + return caml_call4(Runtime_ocaml_Runtime[63],_wM_,[0],_blu_,_blt_)}], + _aWG_=caml_call4(Runtime_ocaml_Runtime[63],_wN_,_aWF_,_aWE_,_aWD_)} + catch(_bls_) + {_bls_ = caml_wrap_exception(_bls_); + if(_bls_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_wJ_]; + throw _bls_} + var + ressources_menage_avec_d832_18= + caml_call3 + (Runtime_ocaml_Runtime[28],_wO_,Runtime_ocaml_Runtime[13],_aWG_); + function _aWH_(param) + {try + {var + _aZs_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aZt_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_wQ_,0)}, + _aZu_= + function(param$0) + {function _bjo_(param){throw Runtime_ocaml_Runtime[2]} + function _bjp_(param){return 0} + function _bjq_(param$0) + {function _bk0_(param) + {switch(zone[0]) + {case 0: + var _bk8_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$149); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bk8_)) + var + _bk9_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_148100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_178700); + else + var + _bk__=caml_call1(Runtime_ocaml_Runtime[46],cst_1$77), + _bk$_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bk__), + _bla_=caml_call1(Runtime_ocaml_Runtime[69],_bk$_), + _blb_=caml_call1(Runtime_ocaml_Runtime[31],cst_30600), + _blc_=caml_call2(Runtime_ocaml_Runtime[104],_blb_,_bla_), + _bld_=caml_call1(Runtime_ocaml_Runtime[31],cst_209300), + _bk9_=caml_call2(Runtime_ocaml_Runtime[93],_bld_,_blc_); + break; + case 1: + var _ble_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$150); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ble_)) + var + _bk9_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_132000) + :caml_call1(Runtime_ocaml_Runtime[31],cst_158900); + else + var + _blf_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$78), + _blg_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_blf_), + _blh_=caml_call1(Runtime_ocaml_Runtime[69],_blg_), + _bli_=caml_call1(Runtime_ocaml_Runtime[31],cst_26900), + _blj_=caml_call2(Runtime_ocaml_Runtime[104],_bli_,_blh_), + _blk_=caml_call1(Runtime_ocaml_Runtime[31],cst_185800), + _bk9_=caml_call2(Runtime_ocaml_Runtime[93],_blk_,_blj_); + break; + default: + var _bll_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$151); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bll_)) + var + _bk9_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_123300) + :caml_call1(Runtime_ocaml_Runtime[31],cst_147900); + else + var + _blm_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$79), + _bln_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_blm_), + _blo_=caml_call1(Runtime_ocaml_Runtime[69],_bln_), + _blp_=caml_call1(Runtime_ocaml_Runtime[31],cst_24600), + _blq_=caml_call2(Runtime_ocaml_Runtime[104],_blp_,_blo_), + _blr_=caml_call1(Runtime_ocaml_Runtime[31],cst_172500), + _bk9_=caml_call2(Runtime_ocaml_Runtime[93],_blr_,_blq_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_bk9_,taux_francs_vers_euros)} + function _bk1_(param$0) + {switch(type_pret[0]) + {case 0:var _bk2_=1;break; + case 1:var _bk2_=0;break; + case 2:var _bk2_=0;break; + case 3:var _bk2_=0;break; + default:var _bk2_=0} + var + _bk3_=0 === anciennete_logement[0]?0:1, + _bk4_=caml_call2(Runtime_ocaml_Runtime[83],_bk3_,_bk2_), + _bk5_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), + _bk6_=caml_call2(Runtime_ocaml_Runtime[129],param,_bk5_), + _bk7_=caml_call2(Runtime_ocaml_Runtime[83],_bk6_,_bk4_); + return caml_call2(Runtime_ocaml_Runtime[29],_wR_,_bk7_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_wS_,[0],_bk1_,_bk0_)} + function _bjr_(param$0) + {function _bkw_(param) + {switch(zone[0]) + {case 0: + var _bkE_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$152); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bkE_)) + var + _bkF_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_184000) + :caml_call1(Runtime_ocaml_Runtime[31],cst_220000); + else + var + _bkG_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$80), + _bkH_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bkG_), + _bkI_=caml_call1(Runtime_ocaml_Runtime[69],_bkH_), + _bkJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_38000), + _bkK_=caml_call2(Runtime_ocaml_Runtime[104],_bkJ_,_bkI_), + _bkL_=caml_call1(Runtime_ocaml_Runtime[31],cst_260000), + _bkF_=caml_call2(Runtime_ocaml_Runtime[93],_bkL_,_bkK_); + break; + case 1: + var _bkM_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$153); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bkM_)) + var + _bkF_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_164200) + :caml_call1(Runtime_ocaml_Runtime[31],cst_197700); + else + var + _bkN_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$81), + _bkO_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bkN_), + _bkP_=caml_call1(Runtime_ocaml_Runtime[69],_bkO_), + _bkQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_33500), + _bkR_=caml_call2(Runtime_ocaml_Runtime[104],_bkQ_,_bkP_), + _bkS_=caml_call1(Runtime_ocaml_Runtime[31],cst_231200), + _bkF_=caml_call2(Runtime_ocaml_Runtime[93],_bkS_,_bkR_); + break; + default: + var _bkT_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$154); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bkT_)) + var + _bkF_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_153200) + :caml_call1(Runtime_ocaml_Runtime[31],cst_183700); + else + var + _bkU_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$82), + _bkV_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bkU_), + _bkW_=caml_call1(Runtime_ocaml_Runtime[69],_bkV_), + _bkX_=caml_call1(Runtime_ocaml_Runtime[31],cst_30500$0), + _bkY_=caml_call2(Runtime_ocaml_Runtime[104],_bkX_,_bkW_), + _bkZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_214200), + _bkF_=caml_call2(Runtime_ocaml_Runtime[93],_bkZ_,_bkY_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_bkF_,taux_francs_vers_euros)} + function _bkx_(param$0) + {switch(type_pret[0]) + {case 0:var _bky_=1;break; + case 1:var _bky_=0;break; + case 2:var _bky_=0;break; + case 3:var _bky_=0;break; + default:var _bky_=0} + var + _bkz_=0 === anciennete_logement[0]?1:0, + _bkA_=caml_call2(Runtime_ocaml_Runtime[83],_bkz_,_bky_), + _bkB_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), + _bkC_=caml_call2(Runtime_ocaml_Runtime[129],param,_bkB_), + _bkD_=caml_call2(Runtime_ocaml_Runtime[83],_bkC_,_bkA_); + return caml_call2(Runtime_ocaml_Runtime[29],_wT_,_bkD_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_wU_,[0],_bkx_,_bkw_)} + function _bjs_(param$0) + {function _bj1_(param) + {switch(zone[0]) + {case 0: + var _bka_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$155); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bka_)) + var + _bkb_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_167800) + :caml_call1(Runtime_ocaml_Runtime[31],cst_202500); + else + var + _bkc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$83), + _bkd_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bkc_), + _bke_=caml_call1(Runtime_ocaml_Runtime[69],_bkd_), + _bkf_=caml_call1(Runtime_ocaml_Runtime[31],cst_34700), + _bkg_=caml_call2(Runtime_ocaml_Runtime[104],_bkf_,_bke_), + _bkh_=caml_call1(Runtime_ocaml_Runtime[31],cst_237200), + _bkb_=caml_call2(Runtime_ocaml_Runtime[93],_bkh_,_bkg_); + break; + case 1: + var _bki_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$156); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bki_)) + var + _bkb_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_149600) + :caml_call1(Runtime_ocaml_Runtime[31],cst_180100); + else + var + _bkj_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$84), + _bkk_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bkj_), + _bkl_=caml_call1(Runtime_ocaml_Runtime[69],_bkk_), + _bkm_=caml_call1(Runtime_ocaml_Runtime[31],cst_30500$1), + _bkn_=caml_call2(Runtime_ocaml_Runtime[104],_bkm_,_bkl_), + _bko_=caml_call1(Runtime_ocaml_Runtime[31],cst_210600), + _bkb_=caml_call2(Runtime_ocaml_Runtime[93],_bko_,_bkn_); + break; + default: + var _bkp_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$157); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bkp_)) + var + _bkb_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_139700) + :caml_call1(Runtime_ocaml_Runtime[31],cst_167600); + else + var + _bkq_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$85), + _bkr_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bkq_), + _bks_=caml_call1(Runtime_ocaml_Runtime[69],_bkr_), + _bkt_=caml_call1(Runtime_ocaml_Runtime[31],cst_27900), + _bku_=caml_call2(Runtime_ocaml_Runtime[104],_bkt_,_bks_), + _bkv_=caml_call1(Runtime_ocaml_Runtime[31],cst_195500), + _bkb_=caml_call2(Runtime_ocaml_Runtime[93],_bkv_,_bku_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_bkb_,taux_francs_vers_euros)} + function _bj2_(param$0) + {switch(type_pret[0]) + {case 0:var _bj3_=1;break; + case 1:var _bj3_=0;break; + case 2:var _bj3_=0;break; + case 3:var _bj3_=0;break; + default:var _bj3_=0} + var + _bj4_=0 === anciennete_logement[0]?0:1, + _bj5_=caml_call2(Runtime_ocaml_Runtime[83],_bj4_,_bj3_), + _bj6_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), + _bj7_=caml_call2(Runtime_ocaml_Runtime[114],param,_bj6_), + _bj8_=caml_call2(Runtime_ocaml_Runtime[83],_bj7_,_bj5_), + _bj9_=caml_call3(Runtime_ocaml_Runtime[57],1992,6,30), + _bj__=caml_call2(Runtime_ocaml_Runtime[129],param,_bj9_), + _bj$_=caml_call2(Runtime_ocaml_Runtime[83],_bj__,_bj8_); + return caml_call2(Runtime_ocaml_Runtime[29],_wV_,_bj$_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_wW_,[0],_bj2_,_bj1_)} + var + _bjt_= + [0, + function(param$0) + {function _bju_(param) + {switch(zone[0]) + {case 0: + var _bjF_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$158); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bjF_)) + var + _bjG_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_208500) + :caml_call1(Runtime_ocaml_Runtime[31],cst_251500); + else + var + _bjH_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$86), + _bjI_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bjH_), + _bjJ_=caml_call1(Runtime_ocaml_Runtime[69],_bjI_), + _bjK_=caml_call1(Runtime_ocaml_Runtime[31],cst_43000), + _bjL_=caml_call2(Runtime_ocaml_Runtime[104],_bjK_,_bjJ_), + _bjM_=caml_call1(Runtime_ocaml_Runtime[31],cst_294500), + _bjG_=caml_call2(Runtime_ocaml_Runtime[93],_bjM_,_bjL_); + break; + case 1: + var _bjN_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$159); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bjN_)) + var + _bjG_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_186000) + :caml_call1(Runtime_ocaml_Runtime[31],cst_223900); + else + var + _bjO_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$87), + _bjP_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bjO_), + _bjQ_=caml_call1(Runtime_ocaml_Runtime[69],_bjP_), + _bjR_=caml_call1(Runtime_ocaml_Runtime[31],cst_37900), + _bjS_=caml_call2(Runtime_ocaml_Runtime[104],_bjR_,_bjQ_), + _bjT_=caml_call1(Runtime_ocaml_Runtime[31],cst_261800), + _bjG_=caml_call2(Runtime_ocaml_Runtime[93],_bjT_,_bjS_); + break; + default: + var _bjU_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$160); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bjU_)) + var + _bjG_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_173600) + :caml_call1(Runtime_ocaml_Runtime[31],cst_208200); + else + var + _bjV_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$88), + _bjW_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bjV_), + _bjX_=caml_call1(Runtime_ocaml_Runtime[69],_bjW_), + _bjY_=caml_call1(Runtime_ocaml_Runtime[31],cst_35600), + _bjZ_=caml_call2(Runtime_ocaml_Runtime[104],_bjY_,_bjX_), + _bj0_=caml_call1(Runtime_ocaml_Runtime[31],cst_242800), + _bjG_=caml_call2(Runtime_ocaml_Runtime[93],_bj0_,_bjZ_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_bjG_,taux_francs_vers_euros)} + function _bjv_(param$0) + {switch(type_pret[0]) + {case 0:var _bjw_=1;break; + case 1:var _bjw_=0;break; + case 2:var _bjw_=0;break; + case 3:var _bjw_=0;break; + default:var _bjw_=0} + var + _bjx_=0 === anciennete_logement[0]?1:0, + _bjy_=caml_call2(Runtime_ocaml_Runtime[83],_bjx_,_bjw_), + _bjz_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), + _bjA_=caml_call2(Runtime_ocaml_Runtime[114],param,_bjz_), + _bjB_=caml_call2(Runtime_ocaml_Runtime[83],_bjA_,_bjy_), + _bjC_=caml_call3(Runtime_ocaml_Runtime[57],1992,6,30), + _bjD_=caml_call2(Runtime_ocaml_Runtime[129],param,_bjC_), + _bjE_=caml_call2(Runtime_ocaml_Runtime[83],_bjD_,_bjB_); + return caml_call2(Runtime_ocaml_Runtime[29],_wX_,_bjE_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_wY_,[0],_bjv_,_bju_)}, + _bjs_, + _bjr_, + _bjq_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_wZ_,_bjt_,_bjp_,_bjo_)}, + _aZv_= + [0, + function(param$0) + {function _aZy_(param$0) + {function _aZY_(param){throw Runtime_ocaml_Runtime[2]} + function _aZZ_(param){return 0} + function _aZ0_(param$0) + {function _biU_(param) + {switch(zone[0]) + {case 0: + var _bi5_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$161); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bi5_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29986) + :caml_call1(Runtime_ocaml_Runtime[31],cst_36187); + var + _bi6_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$89), + _bi7_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bi6_), + _bi8_=caml_call1(Runtime_ocaml_Runtime[69],_bi7_), + _bi9_=caml_call1(Runtime_ocaml_Runtime[31],cst_6201), + _bi__=caml_call2(Runtime_ocaml_Runtime[104],_bi9_,_bi8_), + _bi$_=caml_call1(Runtime_ocaml_Runtime[31],cst_42386); + return caml_call2(Runtime_ocaml_Runtime[93],_bi$_,_bi__); + case 1: + var _bja_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$162); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bja_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26730) + :caml_call1(Runtime_ocaml_Runtime[31],cst_32193); + var + _bjb_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$90), + _bjc_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bjb_), + _bjd_=caml_call1(Runtime_ocaml_Runtime[69],_bjc_), + _bje_=caml_call1(Runtime_ocaml_Runtime[31],cst_5463), + _bjf_=caml_call2(Runtime_ocaml_Runtime[104],_bje_,_bjd_), + _bjg_=caml_call1(Runtime_ocaml_Runtime[31],cst_37656); + return caml_call2(Runtime_ocaml_Runtime[93],_bjg_,_bjf_); + default: + var _bjh_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$163); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bjh_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24964) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29948); + var + _bji_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$91), + _bjj_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bji_), + _bjk_=caml_call1(Runtime_ocaml_Runtime[69],_bjj_), + _bjl_=caml_call1(Runtime_ocaml_Runtime[31],cst_4986), + _bjm_=caml_call2(Runtime_ocaml_Runtime[104],_bjl_,_bjk_), + _bjn_=caml_call1(Runtime_ocaml_Runtime[31],cst_34934); + return caml_call2(Runtime_ocaml_Runtime[93],_bjn_,_bjm_)}} + function _biV_(param$0) + {switch(type_pret[0]) + {case 0:var _biW_=0;break; + case 1:var _biW_=1;break; + case 2:var _biW_=0;break; + case 3:var _biW_=0;break; + default:var _biW_=0} + var + _biX_=0 === anciennete_logement[0]?0:1, + _biY_=caml_call2(Runtime_ocaml_Runtime[83],_biX_,_biW_), + _biZ_=caml_call3(Runtime_ocaml_Runtime[57],2019,9,30), + _bi0_=caml_call2(Runtime_ocaml_Runtime[129],param,_biZ_), + _bi1_=caml_call2(Runtime_ocaml_Runtime[83],_bi0_,_biY_), + _bi2_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bi3_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bi2_), + _bi4_=caml_call2(Runtime_ocaml_Runtime[83],_bi3_,_bi1_); + return caml_call2(Runtime_ocaml_Runtime[29],_w0_,_bi4_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_w1_,[0],_biV_,_biU_)} + function _aZ1_(param$0) + {function _bio_(param) + {switch(zone[0]) + {case 0: + var _biz_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$164); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_biz_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_37252) + :caml_call1(Runtime_ocaml_Runtime[31],cst_44941); + var + _biA_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$92), + _biB_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_biA_), + _biC_=caml_call1(Runtime_ocaml_Runtime[69],_biB_), + _biD_=caml_call1(Runtime_ocaml_Runtime[31],cst_7687), + _biE_=caml_call2(Runtime_ocaml_Runtime[104],_biD_,_biC_), + _biF_=caml_call1(Runtime_ocaml_Runtime[31],cst_52629); + return caml_call2(Runtime_ocaml_Runtime[93],_biF_,_biE_); + case 1: + var _biG_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$165); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_biG_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_33244) + :caml_call1(Runtime_ocaml_Runtime[31],cst_40013); + var + _biH_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$93), + _biI_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_biH_), + _biJ_=caml_call1(Runtime_ocaml_Runtime[69],_biI_), + _biK_=caml_call1(Runtime_ocaml_Runtime[31],cst_6768), + _biL_=caml_call2(Runtime_ocaml_Runtime[104],_biK_,_biJ_), + _biM_=caml_call1(Runtime_ocaml_Runtime[31],cst_46783); + return caml_call2(Runtime_ocaml_Runtime[93],_biM_,_biL_); + default: + var _biN_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$166); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_biN_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31036) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37215); + var + _biO_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$94), + _biP_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_biO_), + _biQ_=caml_call1(Runtime_ocaml_Runtime[69],_biP_), + _biR_=caml_call1(Runtime_ocaml_Runtime[31],cst_6179), + _biS_=caml_call2(Runtime_ocaml_Runtime[104],_biR_,_biQ_), + _biT_=caml_call1(Runtime_ocaml_Runtime[31],cst_43394); + return caml_call2(Runtime_ocaml_Runtime[93],_biT_,_biS_)}} + function _bip_(param$0) + {switch(type_pret[0]) + {case 0:var _biq_=0;break; + case 1:var _biq_=1;break; + case 2:var _biq_=0;break; + case 3:var _biq_=0;break; + default:var _biq_=0} + var + _bir_=0 === anciennete_logement[0]?1:0, + _bis_=caml_call2(Runtime_ocaml_Runtime[83],_bir_,_biq_), + _bit_=caml_call3(Runtime_ocaml_Runtime[57],2019,9,30), + _biu_=caml_call2(Runtime_ocaml_Runtime[129],param,_bit_), + _biv_=caml_call2(Runtime_ocaml_Runtime[83],_biu_,_bis_), + _biw_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bix_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_biw_), + _biy_=caml_call2(Runtime_ocaml_Runtime[83],_bix_,_biv_); + return caml_call2(Runtime_ocaml_Runtime[29],_w2_,_biy_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_w3_,[0],_bip_,_bio_)} + function _aZ2_(param$0) + {function _bhR_(param) + {switch(zone[0]) + {case 0: + var _bh5_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$167); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bh5_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29897) + :caml_call1(Runtime_ocaml_Runtime[31],cst_36079); + var + _bh6_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$95), + _bh7_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bh6_), + _bh8_=caml_call1(Runtime_ocaml_Runtime[69],_bh7_), + _bh9_=caml_call1(Runtime_ocaml_Runtime[31],cst_6182), + _bh__=caml_call2(Runtime_ocaml_Runtime[104],_bh9_,_bh8_), + _bh$_=caml_call1(Runtime_ocaml_Runtime[31],cst_42260); + return caml_call2(Runtime_ocaml_Runtime[93],_bh$_,_bh__); + case 1: + var _bia_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$168); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bia_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26650) + :caml_call1(Runtime_ocaml_Runtime[31],cst_32097); + var + _bib_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$96), + _bic_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bib_), + _bid_=caml_call1(Runtime_ocaml_Runtime[69],_bic_), + _bie_=caml_call1(Runtime_ocaml_Runtime[31],cst_5447), + _bif_=caml_call2(Runtime_ocaml_Runtime[104],_bie_,_bid_), + _big_=caml_call1(Runtime_ocaml_Runtime[31],cst_37543); + return caml_call2(Runtime_ocaml_Runtime[93],_big_,_bif_); + default: + var _bih_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$169); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bih_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24889) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29858); + var + _bii_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$97), + _bij_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bii_), + _bik_=caml_call1(Runtime_ocaml_Runtime[69],_bij_), + _bil_=caml_call1(Runtime_ocaml_Runtime[31],cst_4971), + _bim_=caml_call2(Runtime_ocaml_Runtime[104],_bil_,_bik_), + _bin_=caml_call1(Runtime_ocaml_Runtime[31],cst_34829); + return caml_call2(Runtime_ocaml_Runtime[93],_bin_,_bim_)}} + function _bhS_(param$0) + {switch(type_pret[0]) + {case 0:var _bhT_=0;break; + case 1:var _bhT_=1;break; + case 2:var _bhT_=0;break; + case 3:var _bhT_=0;break; + default:var _bhT_=0} + var + _bhU_=0 === anciennete_logement[0]?0:1, + _bhV_=caml_call2(Runtime_ocaml_Runtime[83],_bhU_,_bhT_), + _bhW_=caml_call3(Runtime_ocaml_Runtime[57],2019,9,30), + _bhX_=caml_call2(Runtime_ocaml_Runtime[114],param,_bhW_), + _bhY_=caml_call2(Runtime_ocaml_Runtime[83],_bhX_,_bhV_), + _bhZ_=caml_call3(Runtime_ocaml_Runtime[57],2017,9,30), + _bh0_=caml_call2(Runtime_ocaml_Runtime[129],param,_bhZ_), + _bh1_=caml_call2(Runtime_ocaml_Runtime[83],_bh0_,_bhY_), + _bh2_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bh3_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bh2_), + _bh4_=caml_call2(Runtime_ocaml_Runtime[83],_bh3_,_bh1_); + return caml_call2(Runtime_ocaml_Runtime[29],_w4_,_bh4_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_w5_,[0],_bhS_,_bhR_)} + function _aZ3_(param$0) + {function _bhi_(param) + {switch(zone[0]) + {case 0: + var _bhw_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$170); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bhw_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_37140) + :caml_call1(Runtime_ocaml_Runtime[31],cst_44807); + var + _bhx_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$98), + _bhy_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bhx_), + _bhz_=caml_call1(Runtime_ocaml_Runtime[69],_bhy_), + _bhA_=caml_call1(Runtime_ocaml_Runtime[31],cst_7664), + _bhB_=caml_call2(Runtime_ocaml_Runtime[104],_bhA_,_bhz_), + _bhC_=caml_call1(Runtime_ocaml_Runtime[31],cst_52472); + return caml_call2(Runtime_ocaml_Runtime[93],_bhC_,_bhB_); + case 1: + var _bhD_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$171); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bhD_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_33145) + :caml_call1(Runtime_ocaml_Runtime[31],cst_39893); + var + _bhE_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$99), + _bhF_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bhE_), + _bhG_=caml_call1(Runtime_ocaml_Runtime[69],_bhF_), + _bhH_=caml_call1(Runtime_ocaml_Runtime[31],cst_6748), + _bhI_=caml_call2(Runtime_ocaml_Runtime[104],_bhH_,_bhG_), + _bhJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_46643); + return caml_call2(Runtime_ocaml_Runtime[93],_bhJ_,_bhI_); + default: + var _bhK_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$172); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bhK_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_30943) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37103); + var + _bhL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$100), + _bhM_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bhL_), + _bhN_=caml_call1(Runtime_ocaml_Runtime[69],_bhM_), + _bhO_=caml_call1(Runtime_ocaml_Runtime[31],cst_6161), + _bhP_=caml_call2(Runtime_ocaml_Runtime[104],_bhO_,_bhN_), + _bhQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_43264); + return caml_call2(Runtime_ocaml_Runtime[93],_bhQ_,_bhP_)}} + function _bhj_(param$0) + {switch(type_pret[0]) + {case 0:var _bhk_=0;break; + case 1:var _bhk_=1;break; + case 2:var _bhk_=0;break; + case 3:var _bhk_=0;break; + default:var _bhk_=0} + var + _bhl_=0 === anciennete_logement[0]?1:0, + _bhm_=caml_call2(Runtime_ocaml_Runtime[83],_bhl_,_bhk_), + _bhn_=caml_call3(Runtime_ocaml_Runtime[57],2019,9,30), + _bho_=caml_call2(Runtime_ocaml_Runtime[114],param,_bhn_), + _bhp_=caml_call2(Runtime_ocaml_Runtime[83],_bho_,_bhm_), + _bhq_=caml_call3(Runtime_ocaml_Runtime[57],2017,9,30), + _bhr_=caml_call2(Runtime_ocaml_Runtime[129],param,_bhq_), + _bhs_=caml_call2(Runtime_ocaml_Runtime[83],_bhr_,_bhp_), + _bht_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bhu_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bht_), + _bhv_=caml_call2(Runtime_ocaml_Runtime[83],_bhu_,_bhs_); + return caml_call2(Runtime_ocaml_Runtime[29],_w6_,_bhv_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_w7_,[0],_bhj_,_bhi_)} + function _aZ4_(param$0) + {function _bgL_(param) + {switch(zone[0]) + {case 0: + var _bgZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$173); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bgZ_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29674) + :caml_call1(Runtime_ocaml_Runtime[31],cst_35810); + var + _bg0_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$101), + _bg1_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bg0_), + _bg2_=caml_call1(Runtime_ocaml_Runtime[69],_bg1_), + _bg3_=caml_call1(Runtime_ocaml_Runtime[31],cst_6136), + _bg4_=caml_call2(Runtime_ocaml_Runtime[104],_bg3_,_bg2_), + _bg5_=caml_call1(Runtime_ocaml_Runtime[31],cst_41945); + return caml_call2(Runtime_ocaml_Runtime[93],_bg5_,_bg4_); + case 1: + var _bg6_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$174); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bg6_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26452) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31858); + var + _bg7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$102), + _bg8_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bg7_), + _bg9_=caml_call1(Runtime_ocaml_Runtime[69],_bg8_), + _bg__=caml_call1(Runtime_ocaml_Runtime[31],cst_5406), + _bg$_=caml_call2(Runtime_ocaml_Runtime[104],_bg__,_bg9_), + _bha_=caml_call1(Runtime_ocaml_Runtime[31],cst_37264); + return caml_call2(Runtime_ocaml_Runtime[93],_bha_,_bg$_); + default: + var _bhb_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$175); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bhb_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24704) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29636); + var + _bhc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$103), + _bhd_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bhc_), + _bhe_=caml_call1(Runtime_ocaml_Runtime[69],_bhd_), + _bhf_=caml_call1(Runtime_ocaml_Runtime[31],cst_4934), + _bhg_=caml_call2(Runtime_ocaml_Runtime[104],_bhf_,_bhe_), + _bhh_=caml_call1(Runtime_ocaml_Runtime[31],cst_34570); + return caml_call2(Runtime_ocaml_Runtime[93],_bhh_,_bhg_)}} + function _bgM_(param$0) + {switch(type_pret[0]) + {case 0:var _bgN_=0;break; + case 1:var _bgN_=1;break; + case 2:var _bgN_=0;break; + case 3:var _bgN_=0;break; + default:var _bgN_=0} + var + _bgO_=0 === anciennete_logement[0]?0:1, + _bgP_=caml_call2(Runtime_ocaml_Runtime[83],_bgO_,_bgN_), + _bgQ_=caml_call3(Runtime_ocaml_Runtime[57],2017,9,30), + _bgR_=caml_call2(Runtime_ocaml_Runtime[114],param,_bgQ_), + _bgS_=caml_call2(Runtime_ocaml_Runtime[83],_bgR_,_bgP_), + _bgT_=caml_call3(Runtime_ocaml_Runtime[57],2015,9,30), + _bgU_=caml_call2(Runtime_ocaml_Runtime[129],param,_bgT_), + _bgV_=caml_call2(Runtime_ocaml_Runtime[83],_bgU_,_bgS_), + _bgW_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bgX_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bgW_), + _bgY_=caml_call2(Runtime_ocaml_Runtime[83],_bgX_,_bgV_); + return caml_call2(Runtime_ocaml_Runtime[29],_w8_,_bgY_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_w9_,[0],_bgM_,_bgL_)} + function _aZ5_(param$0) + {function _bgc_(param) + {switch(zone[0]) + {case 0: + var _bgq_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$176); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bgq_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_36864) + :caml_call1(Runtime_ocaml_Runtime[31],cst_44473); + var + _bgr_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$104), + _bgs_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bgr_), + _bgt_=caml_call1(Runtime_ocaml_Runtime[69],_bgs_), + _bgu_=caml_call1(Runtime_ocaml_Runtime[31],cst_7607), + _bgv_=caml_call2(Runtime_ocaml_Runtime[104],_bgu_,_bgt_), + _bgw_=caml_call1(Runtime_ocaml_Runtime[31],cst_52081); + return caml_call2(Runtime_ocaml_Runtime[93],_bgw_,_bgv_); + case 1: + var _bgx_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$177); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bgx_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_32898) + :caml_call1(Runtime_ocaml_Runtime[31],cst_39596); + var + _bgy_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$105), + _bgz_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bgy_), + _bgA_=caml_call1(Runtime_ocaml_Runtime[69],_bgz_), + _bgB_=caml_call1(Runtime_ocaml_Runtime[31],cst_6698), + _bgC_=caml_call2(Runtime_ocaml_Runtime[104],_bgB_,_bgA_), + _bgD_=caml_call1(Runtime_ocaml_Runtime[31],cst_46296); + return caml_call2(Runtime_ocaml_Runtime[93],_bgD_,_bgC_); + default: + var _bgE_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$178); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bgE_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_30713) + :caml_call1(Runtime_ocaml_Runtime[31],cst_36827); + var + _bgF_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$106), + _bgG_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bgF_), + _bgH_=caml_call1(Runtime_ocaml_Runtime[69],_bgG_), + _bgI_=caml_call1(Runtime_ocaml_Runtime[31],cst_6115), + _bgJ_=caml_call2(Runtime_ocaml_Runtime[104],_bgI_,_bgH_), + _bgK_=caml_call1(Runtime_ocaml_Runtime[31],cst_42942); + return caml_call2(Runtime_ocaml_Runtime[93],_bgK_,_bgJ_)}} + function _bgd_(param$0) + {switch(type_pret[0]) + {case 0:var _bge_=0;break; + case 1:var _bge_=1;break; + case 2:var _bge_=0;break; + case 3:var _bge_=0;break; + default:var _bge_=0} + var + _bgf_=0 === anciennete_logement[0]?1:0, + _bgg_=caml_call2(Runtime_ocaml_Runtime[83],_bgf_,_bge_), + _bgh_=caml_call3(Runtime_ocaml_Runtime[57],2017,9,30), + _bgi_=caml_call2(Runtime_ocaml_Runtime[114],param,_bgh_), + _bgj_=caml_call2(Runtime_ocaml_Runtime[83],_bgi_,_bgg_), + _bgk_=caml_call3(Runtime_ocaml_Runtime[57],2015,9,30), + _bgl_=caml_call2(Runtime_ocaml_Runtime[129],param,_bgk_), + _bgm_=caml_call2(Runtime_ocaml_Runtime[83],_bgl_,_bgj_), + _bgn_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bgo_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bgn_), + _bgp_=caml_call2(Runtime_ocaml_Runtime[83],_bgo_,_bgm_); + return caml_call2(Runtime_ocaml_Runtime[29],_w__,_bgp_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_w$_,[0],_bgd_,_bgc_)} + function _aZ6_(param$0) + {function _bfF_(param) + {switch(zone[0]) + {case 0: + var _bfT_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$179); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bfT_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29650) + :caml_call1(Runtime_ocaml_Runtime[31],cst_35781); + var + _bfU_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$107), + _bfV_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bfU_), + _bfW_=caml_call1(Runtime_ocaml_Runtime[69],_bfV_), + _bfX_=caml_call1(Runtime_ocaml_Runtime[31],cst_6131), + _bfY_=caml_call2(Runtime_ocaml_Runtime[104],_bfX_,_bfW_), + _bfZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_41911); + return caml_call2(Runtime_ocaml_Runtime[93],_bfZ_,_bfY_); + case 1: + var _bf0_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$180); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bf0_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26431) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31833); + var + _bf1_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$108), + _bf2_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bf1_), + _bf3_=caml_call1(Runtime_ocaml_Runtime[69],_bf2_), + _bf4_=caml_call1(Runtime_ocaml_Runtime[31],cst_5402), + _bf5_=caml_call2(Runtime_ocaml_Runtime[104],_bf4_,_bf3_), + _bf6_=caml_call1(Runtime_ocaml_Runtime[31],cst_37234); + return caml_call2(Runtime_ocaml_Runtime[93],_bf6_,_bf5_); + default: + var _bf7_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$181); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bf7_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24684) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29612); + var + _bf8_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$109), + _bf9_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bf8_), + _bf__=caml_call1(Runtime_ocaml_Runtime[69],_bf9_), + _bf$_=caml_call1(Runtime_ocaml_Runtime[31],cst_4930), + _bga_=caml_call2(Runtime_ocaml_Runtime[104],_bf$_,_bf__), + _bgb_=caml_call1(Runtime_ocaml_Runtime[31],cst_34542); + return caml_call2(Runtime_ocaml_Runtime[93],_bgb_,_bga_)}} + function _bfG_(param$0) + {switch(type_pret[0]) + {case 0:var _bfH_=0;break; + case 1:var _bfH_=1;break; + case 2:var _bfH_=0;break; + case 3:var _bfH_=0;break; + default:var _bfH_=0} + var + _bfI_=0 === anciennete_logement[0]?0:1, + _bfJ_=caml_call2(Runtime_ocaml_Runtime[83],_bfI_,_bfH_), + _bfK_=caml_call3(Runtime_ocaml_Runtime[57],2015,9,30), + _bfL_=caml_call2(Runtime_ocaml_Runtime[114],param,_bfK_), + _bfM_=caml_call2(Runtime_ocaml_Runtime[83],_bfL_,_bfJ_), + _bfN_=caml_call3(Runtime_ocaml_Runtime[57],2014,9,30), + _bfO_=caml_call2(Runtime_ocaml_Runtime[129],param,_bfN_), + _bfP_=caml_call2(Runtime_ocaml_Runtime[83],_bfO_,_bfM_), + _bfQ_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bfR_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bfQ_), + _bfS_=caml_call2(Runtime_ocaml_Runtime[83],_bfR_,_bfP_); + return caml_call2(Runtime_ocaml_Runtime[29],_xa_,_bfS_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xb_,[0],_bfG_,_bfF_)} + function _aZ7_(param$0) + {function _be8_(param) + {switch(zone[0]) + {case 0: + var _bfk_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$182); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bfk_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_36835) + :caml_call1(Runtime_ocaml_Runtime[31],cst_44437); + var + _bfl_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$110), + _bfm_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bfl_), + _bfn_=caml_call1(Runtime_ocaml_Runtime[69],_bfm_), + _bfo_=caml_call1(Runtime_ocaml_Runtime[31],cst_7601), + _bfp_=caml_call2(Runtime_ocaml_Runtime[104],_bfo_,_bfn_), + _bfq_=caml_call1(Runtime_ocaml_Runtime[31],cst_52039); + return caml_call2(Runtime_ocaml_Runtime[93],_bfq_,_bfp_); + case 1: + var _bfr_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$183); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bfr_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_32872) + :caml_call1(Runtime_ocaml_Runtime[31],cst_39564); + var + _bfs_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$111), + _bft_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bfs_), + _bfu_=caml_call1(Runtime_ocaml_Runtime[69],_bft_), + _bfv_=caml_call1(Runtime_ocaml_Runtime[31],cst_6693), + _bfw_=caml_call2(Runtime_ocaml_Runtime[104],_bfv_,_bfu_), + _bfx_=caml_call1(Runtime_ocaml_Runtime[31],cst_46259); + return caml_call2(Runtime_ocaml_Runtime[93],_bfx_,_bfw_); + default: + var _bfy_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$184); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bfy_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_30688) + :caml_call1(Runtime_ocaml_Runtime[31],cst_36798); + var + _bfz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$112), + _bfA_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bfz_), + _bfB_=caml_call1(Runtime_ocaml_Runtime[69],_bfA_), + _bfC_=caml_call1(Runtime_ocaml_Runtime[31],cst_6110), + _bfD_=caml_call2(Runtime_ocaml_Runtime[104],_bfC_,_bfB_), + _bfE_=caml_call1(Runtime_ocaml_Runtime[31],cst_42908); + return caml_call2(Runtime_ocaml_Runtime[93],_bfE_,_bfD_)}} + function _be9_(param$0) + {switch(type_pret[0]) + {case 0:var _be__=0;break; + case 1:var _be__=1;break; + case 2:var _be__=0;break; + case 3:var _be__=0;break; + default:var _be__=0} + var + _be$_=0 === anciennete_logement[0]?1:0, + _bfa_=caml_call2(Runtime_ocaml_Runtime[83],_be$_,_be__), + _bfb_=caml_call3(Runtime_ocaml_Runtime[57],2015,9,30), + _bfc_=caml_call2(Runtime_ocaml_Runtime[114],param,_bfb_), + _bfd_=caml_call2(Runtime_ocaml_Runtime[83],_bfc_,_bfa_), + _bfe_=caml_call3(Runtime_ocaml_Runtime[57],2014,9,30), + _bff_=caml_call2(Runtime_ocaml_Runtime[129],param,_bfe_), + _bfg_=caml_call2(Runtime_ocaml_Runtime[83],_bff_,_bfd_), + _bfh_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bfi_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bfh_), + _bfj_=caml_call2(Runtime_ocaml_Runtime[83],_bfi_,_bfg_); + return caml_call2(Runtime_ocaml_Runtime[29],_xc_,_bfj_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xd_,[0],_be9_,_be8_)} + function _aZ8_(param$0) + {function _bez_(param) + {switch(zone[0]) + {case 0: + var _beN_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$185); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_beN_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29482) + :caml_call1(Runtime_ocaml_Runtime[31],cst_35578); + var + _beO_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$113), + _beP_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_beO_), + _beQ_=caml_call1(Runtime_ocaml_Runtime[69],_beP_), + _beR_=caml_call1(Runtime_ocaml_Runtime[31],cst_6096), + _beS_=caml_call2(Runtime_ocaml_Runtime[104],_beR_,_beQ_), + _beT_=caml_call1(Runtime_ocaml_Runtime[31],cst_41673); + return caml_call2(Runtime_ocaml_Runtime[93],_beT_,_beS_); + case 1: + var _beU_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$186); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_beU_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26281) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31653); + var + _beV_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$114), + _beW_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_beV_), + _beX_=caml_call1(Runtime_ocaml_Runtime[69],_beW_), + _beY_=caml_call1(Runtime_ocaml_Runtime[31],cst_5371), + _beZ_=caml_call2(Runtime_ocaml_Runtime[104],_beY_,_beX_), + _be0_=caml_call1(Runtime_ocaml_Runtime[31],cst_37023); + return caml_call2(Runtime_ocaml_Runtime[93],_be0_,_beZ_); + default: + var _be1_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$187); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_be1_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24544) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29444); + var + _be2_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$115), + _be3_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_be2_), + _be4_=caml_call1(Runtime_ocaml_Runtime[69],_be3_), + _be5_=caml_call1(Runtime_ocaml_Runtime[31],cst_4902), + _be6_=caml_call2(Runtime_ocaml_Runtime[104],_be5_,_be4_), + _be7_=caml_call1(Runtime_ocaml_Runtime[31],cst_34346); + return caml_call2(Runtime_ocaml_Runtime[93],_be7_,_be6_)}} + function _beA_(param$0) + {switch(type_pret[0]) + {case 0:var _beB_=0;break; + case 1:var _beB_=1;break; + case 2:var _beB_=0;break; + case 3:var _beB_=0;break; + default:var _beB_=0} + var + _beC_=0 === anciennete_logement[0]?0:1, + _beD_=caml_call2(Runtime_ocaml_Runtime[83],_beC_,_beB_), + _beE_=caml_call3(Runtime_ocaml_Runtime[57],2014,9,30), + _beF_=caml_call2(Runtime_ocaml_Runtime[114],param,_beE_), + _beG_=caml_call2(Runtime_ocaml_Runtime[83],_beF_,_beD_), + _beH_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), + _beI_=caml_call2(Runtime_ocaml_Runtime[129],param,_beH_), + _beJ_=caml_call2(Runtime_ocaml_Runtime[83],_beI_,_beG_), + _beK_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _beL_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_beK_), + _beM_=caml_call2(Runtime_ocaml_Runtime[83],_beL_,_beJ_); + return caml_call2(Runtime_ocaml_Runtime[29],_xe_,_beM_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xf_,[0],_beA_,_bez_)} + function _aZ9_(param$0) + {function _bd2_(param) + {switch(zone[0]) + {case 0: + var _bee_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$188); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bee_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_36626) + :caml_call1(Runtime_ocaml_Runtime[31],cst_44185); + var + _bef_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$116), + _beg_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bef_), + _beh_=caml_call1(Runtime_ocaml_Runtime[69],_beg_), + _bei_=caml_call1(Runtime_ocaml_Runtime[31],cst_7558), + _bej_=caml_call2(Runtime_ocaml_Runtime[104],_bei_,_beh_), + _bek_=caml_call1(Runtime_ocaml_Runtime[31],cst_51744); + return caml_call2(Runtime_ocaml_Runtime[93],_bek_,_bej_); + case 1: + var _bel_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$189); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bel_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_32686) + :caml_call1(Runtime_ocaml_Runtime[31],cst_39340); + var + _bem_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$117), + _ben_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bem_), + _beo_=caml_call1(Runtime_ocaml_Runtime[69],_ben_), + _bep_=caml_call1(Runtime_ocaml_Runtime[31],cst_6655), + _beq_=caml_call2(Runtime_ocaml_Runtime[104],_bep_,_beo_), + _ber_=caml_call1(Runtime_ocaml_Runtime[31],cst_45997); + return caml_call2(Runtime_ocaml_Runtime[93],_ber_,_beq_); + default: + var _bes_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$190); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bes_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_30514) + :caml_call1(Runtime_ocaml_Runtime[31],cst_36589); + var + _bet_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$118), + _beu_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bet_), + _bev_=caml_call1(Runtime_ocaml_Runtime[69],_beu_), + _bew_=caml_call1(Runtime_ocaml_Runtime[31],cst_6075), + _bex_=caml_call2(Runtime_ocaml_Runtime[104],_bew_,_bev_), + _bey_=caml_call1(Runtime_ocaml_Runtime[31],cst_42665); + return caml_call2(Runtime_ocaml_Runtime[93],_bey_,_bex_)}} + function _bd3_(param$0) + {switch(type_pret[0]) + {case 0:var _bd4_=0;break; + case 1:var _bd4_=1;break; + case 2:var _bd4_=0;break; + case 3:var _bd4_=0;break; + default:var _bd4_=0} + var + _bd5_=0 === anciennete_logement[0]?1:0, + _bd6_=caml_call2(Runtime_ocaml_Runtime[83],_bd5_,_bd4_), + _bd7_=caml_call3(Runtime_ocaml_Runtime[57],2014,9,30), + _bd8_=caml_call2(Runtime_ocaml_Runtime[114],param,_bd7_), + _bd9_=caml_call2(Runtime_ocaml_Runtime[83],_bd8_,_bd6_), + _bd__=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), + _bd$_=caml_call2(Runtime_ocaml_Runtime[129],param,_bd__), + _bea_=caml_call2(Runtime_ocaml_Runtime[83],_bd$_,_bd9_), + _beb_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bec_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_beb_), + _bed_=caml_call2(Runtime_ocaml_Runtime[83],_bec_,_bea_); + return caml_call2(Runtime_ocaml_Runtime[29],_xg_,_bed_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xh_,[0],_bd3_,_bd2_)} + function _aZ__(param$0) + {function _bdt_(param) + {switch(zone[0]) + {case 0: + var _bdH_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$191); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bdH_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_28861) + :caml_call1(Runtime_ocaml_Runtime[31],cst_34829$0); + var + _bdI_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$119), + _bdJ_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bdI_), + _bdK_=caml_call1(Runtime_ocaml_Runtime[69],_bdJ_), + _bdL_=caml_call1(Runtime_ocaml_Runtime[31],cst_5968), + _bdM_=caml_call2(Runtime_ocaml_Runtime[104],_bdL_,_bdK_), + _bdN_=caml_call1(Runtime_ocaml_Runtime[31],cst_40796); + return caml_call2(Runtime_ocaml_Runtime[93],_bdN_,_bdM_); + case 1: + var _bdO_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$192); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bdO_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25728) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30987); + var + _bdP_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$120), + _bdQ_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bdP_), + _bdR_=caml_call1(Runtime_ocaml_Runtime[69],_bdQ_), + _bdS_=caml_call1(Runtime_ocaml_Runtime[31],cst_5258), + _bdT_=caml_call2(Runtime_ocaml_Runtime[104],_bdS_,_bdR_), + _bdU_=caml_call1(Runtime_ocaml_Runtime[31],cst_36244); + return caml_call2(Runtime_ocaml_Runtime[93],_bdU_,_bdT_); + default: + var _bdV_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$193); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bdV_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24027) + :caml_call1(Runtime_ocaml_Runtime[31],cst_28824); + var + _bdW_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$121), + _bdX_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bdW_), + _bdY_=caml_call1(Runtime_ocaml_Runtime[69],_bdX_), + _bdZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_4799), + _bd0_=caml_call2(Runtime_ocaml_Runtime[104],_bdZ_,_bdY_), + _bd1_=caml_call1(Runtime_ocaml_Runtime[31],cst_33623); + return caml_call2(Runtime_ocaml_Runtime[93],_bd1_,_bd0_)}} + function _bdu_(param$0) + {switch(type_pret[0]) + {case 0:var _bdv_=0;break; + case 1:var _bdv_=1;break; + case 2:var _bdv_=0;break; + case 3:var _bdv_=0;break; + default:var _bdv_=0} + var + _bdw_=0 === anciennete_logement[0]?0:1, + _bdx_=caml_call2(Runtime_ocaml_Runtime[83],_bdw_,_bdv_), + _bdy_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), + _bdz_=caml_call2(Runtime_ocaml_Runtime[114],param,_bdy_), + _bdA_=caml_call2(Runtime_ocaml_Runtime[83],_bdz_,_bdx_), + _bdB_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), + _bdC_=caml_call2(Runtime_ocaml_Runtime[129],param,_bdB_), + _bdD_=caml_call2(Runtime_ocaml_Runtime[83],_bdC_,_bdA_), + _bdE_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bdF_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bdE_), + _bdG_=caml_call2(Runtime_ocaml_Runtime[83],_bdF_,_bdD_); + return caml_call2(Runtime_ocaml_Runtime[29],_xi_,_bdG_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xj_,[0],_bdu_,_bdt_)} + function _aZ$_(param$0) + {function _bcW_(param) + {switch(zone[0]) + {case 0: + var _bc__=caml_call1(Runtime_ocaml_Runtime[46],cst_0$194); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bc__)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_35855) + :caml_call1(Runtime_ocaml_Runtime[31],cst_43255); + var + _bc$_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$122), + _bda_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bc$_), + _bdb_=caml_call1(Runtime_ocaml_Runtime[69],_bda_), + _bdc_=caml_call1(Runtime_ocaml_Runtime[31],cst_7399), + _bdd_=caml_call2(Runtime_ocaml_Runtime[104],_bdc_,_bdb_), + _bde_=caml_call1(Runtime_ocaml_Runtime[31],cst_50655); + return caml_call2(Runtime_ocaml_Runtime[93],_bde_,_bdd_); + case 1: + var _bdf_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$195); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bdf_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31998) + :caml_call1(Runtime_ocaml_Runtime[31],cst_38512); + var + _bdg_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$123), + _bdh_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bdg_), + _bdi_=caml_call1(Runtime_ocaml_Runtime[69],_bdh_), + _bdj_=caml_call1(Runtime_ocaml_Runtime[31],cst_6515), + _bdk_=caml_call2(Runtime_ocaml_Runtime[104],_bdj_,_bdi_), + _bdl_=caml_call1(Runtime_ocaml_Runtime[31],cst_45029); + return caml_call2(Runtime_ocaml_Runtime[93],_bdl_,_bdk_); + default: + var _bdm_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$196); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bdm_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29872) + :caml_call1(Runtime_ocaml_Runtime[31],cst_35819); + var + _bdn_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$124), + _bdo_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bdn_), + _bdp_=caml_call1(Runtime_ocaml_Runtime[69],_bdo_), + _bdq_=caml_call1(Runtime_ocaml_Runtime[31],cst_5947), + _bdr_=caml_call2(Runtime_ocaml_Runtime[104],_bdq_,_bdp_), + _bds_=caml_call1(Runtime_ocaml_Runtime[31],cst_41767); + return caml_call2(Runtime_ocaml_Runtime[93],_bds_,_bdr_)}} + function _bcX_(param$0) + {switch(type_pret[0]) + {case 0:var _bcY_=0;break; + case 1:var _bcY_=1;break; + case 2:var _bcY_=0;break; + case 3:var _bcY_=0;break; + default:var _bcY_=0} + var + _bcZ_=0 === anciennete_logement[0]?1:0, + _bc0_=caml_call2(Runtime_ocaml_Runtime[83],_bcZ_,_bcY_), + _bc1_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), + _bc2_=caml_call2(Runtime_ocaml_Runtime[114],param,_bc1_), + _bc3_=caml_call2(Runtime_ocaml_Runtime[83],_bc2_,_bc0_), + _bc4_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), + _bc5_=caml_call2(Runtime_ocaml_Runtime[129],param,_bc4_), + _bc6_=caml_call2(Runtime_ocaml_Runtime[83],_bc5_,_bc3_), + _bc7_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bc8_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bc7_), + _bc9_=caml_call2(Runtime_ocaml_Runtime[83],_bc8_,_bc6_); + return caml_call2(Runtime_ocaml_Runtime[29],_xk_,_bc9_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xl_,[0],_bcX_,_bcW_)} + function _a0a_(param$0) + {function _bcn_(param) + {switch(zone[0]) + {case 0: + var _bcB_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$197); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bcB_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_28575) + :caml_call1(Runtime_ocaml_Runtime[31],cst_34484); + var + _bcC_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$125), + _bcD_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bcC_), + _bcE_=caml_call1(Runtime_ocaml_Runtime[69],_bcD_), + _bcF_=caml_call1(Runtime_ocaml_Runtime[31],cst_5909), + _bcG_=caml_call2(Runtime_ocaml_Runtime[104],_bcF_,_bcE_), + _bcH_=caml_call1(Runtime_ocaml_Runtime[31],cst_40392); + return caml_call2(Runtime_ocaml_Runtime[93],_bcH_,_bcG_); + case 1: + var _bcI_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$198); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bcI_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25473) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30680); + var + _bcJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$126), + _bcK_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bcJ_), + _bcL_=caml_call1(Runtime_ocaml_Runtime[69],_bcK_), + _bcM_=caml_call1(Runtime_ocaml_Runtime[31],cst_5206), + _bcN_=caml_call2(Runtime_ocaml_Runtime[104],_bcM_,_bcL_), + _bcO_=caml_call1(Runtime_ocaml_Runtime[31],cst_35885); + return caml_call2(Runtime_ocaml_Runtime[93],_bcO_,_bcN_); + default: + var _bcP_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$199); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bcP_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23789) + :caml_call1(Runtime_ocaml_Runtime[31],cst_28539); + var + _bcQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$127), + _bcR_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bcQ_), + _bcS_=caml_call1(Runtime_ocaml_Runtime[69],_bcR_), + _bcT_=caml_call1(Runtime_ocaml_Runtime[31],cst_4751), + _bcU_=caml_call2(Runtime_ocaml_Runtime[104],_bcT_,_bcS_), + _bcV_=caml_call1(Runtime_ocaml_Runtime[31],cst_33290); + return caml_call2(Runtime_ocaml_Runtime[93],_bcV_,_bcU_)}} + function _bco_(param$0) + {switch(type_pret[0]) + {case 0:var _bcp_=0;break; + case 1:var _bcp_=1;break; + case 2:var _bcp_=0;break; + case 3:var _bcp_=0;break; + default:var _bcp_=0} + var + _bcq_=0 === anciennete_logement[0]?0:1, + _bcr_=caml_call2(Runtime_ocaml_Runtime[83],_bcq_,_bcp_), + _bcs_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), + _bct_=caml_call2(Runtime_ocaml_Runtime[114],param,_bcs_), + _bcu_=caml_call2(Runtime_ocaml_Runtime[83],_bct_,_bcr_), + _bcv_=caml_call3(Runtime_ocaml_Runtime[57],2010,12,31), + _bcw_=caml_call2(Runtime_ocaml_Runtime[129],param,_bcv_), + _bcx_=caml_call2(Runtime_ocaml_Runtime[83],_bcw_,_bcu_), + _bcy_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bcz_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bcy_), + _bcA_=caml_call2(Runtime_ocaml_Runtime[83],_bcz_,_bcx_); + return caml_call2(Runtime_ocaml_Runtime[29],_xm_,_bcA_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xn_,[0],_bco_,_bcn_)} + function _a0b_(param$0) + {function _bbQ_(param) + {switch(zone[0]) + {case 0: + var _bb4_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$200); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bb4_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_35500) + :caml_call1(Runtime_ocaml_Runtime[31],cst_42827); + var + _bb5_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$128), + _bb6_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bb5_), + _bb7_=caml_call1(Runtime_ocaml_Runtime[69],_bb6_), + _bb8_=caml_call1(Runtime_ocaml_Runtime[31],cst_7326), + _bb9_=caml_call2(Runtime_ocaml_Runtime[104],_bb8_,_bb7_), + _bb__=caml_call1(Runtime_ocaml_Runtime[31],cst_50153); + return caml_call2(Runtime_ocaml_Runtime[93],_bb__,_bb9_); + case 1: + var _bb$_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$201); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bb$_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31681) + :caml_call1(Runtime_ocaml_Runtime[31],cst_38131); + var + _bca_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$129), + _bcb_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bca_), + _bcc_=caml_call1(Runtime_ocaml_Runtime[69],_bcb_), + _bcd_=caml_call1(Runtime_ocaml_Runtime[31],cst_6450), + _bce_=caml_call2(Runtime_ocaml_Runtime[104],_bcd_,_bcc_), + _bcf_=caml_call1(Runtime_ocaml_Runtime[31],cst_44583); + return caml_call2(Runtime_ocaml_Runtime[93],_bcf_,_bce_); + default: + var _bcg_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$202); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bcg_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29576) + :caml_call1(Runtime_ocaml_Runtime[31],cst_35464); + var + _bch_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$130), + _bci_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bch_), + _bcj_=caml_call1(Runtime_ocaml_Runtime[69],_bci_), + _bck_=caml_call1(Runtime_ocaml_Runtime[31],cst_5888), + _bcl_=caml_call2(Runtime_ocaml_Runtime[104],_bck_,_bcj_), + _bcm_=caml_call1(Runtime_ocaml_Runtime[31],cst_41353); + return caml_call2(Runtime_ocaml_Runtime[93],_bcm_,_bcl_)}} + function _bbR_(param$0) + {switch(type_pret[0]) + {case 0:var _bbS_=0;break; + case 1:var _bbS_=1;break; + case 2:var _bbS_=0;break; + case 3:var _bbS_=0;break; + default:var _bbS_=0} + var + _bbT_=0 === anciennete_logement[0]?1:0, + _bbU_=caml_call2(Runtime_ocaml_Runtime[83],_bbT_,_bbS_), + _bbV_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), + _bbW_=caml_call2(Runtime_ocaml_Runtime[114],param,_bbV_), + _bbX_=caml_call2(Runtime_ocaml_Runtime[83],_bbW_,_bbU_), + _bbY_=caml_call3(Runtime_ocaml_Runtime[57],2010,12,31), + _bbZ_=caml_call2(Runtime_ocaml_Runtime[129],param,_bbY_), + _bb0_=caml_call2(Runtime_ocaml_Runtime[83],_bbZ_,_bbX_), + _bb1_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bb2_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bb1_), + _bb3_=caml_call2(Runtime_ocaml_Runtime[83],_bb2_,_bb0_); + return caml_call2(Runtime_ocaml_Runtime[29],_xo_,_bb3_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xp_,[0],_bbR_,_bbQ_)} + function _a0c_(param$0) + {function _bbh_(param) + {switch(zone[0]) + {case 0: + var _bbv_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$203); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bbv_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_28264) + :caml_call1(Runtime_ocaml_Runtime[31],cst_34109); + var + _bbw_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$131), + _bbx_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bbw_), + _bby_=caml_call1(Runtime_ocaml_Runtime[69],_bbx_), + _bbz_=caml_call1(Runtime_ocaml_Runtime[31],cst_5845), + _bbA_=caml_call2(Runtime_ocaml_Runtime[104],_bbz_,_bby_), + _bbB_=caml_call1(Runtime_ocaml_Runtime[31],cst_39953); + return caml_call2(Runtime_ocaml_Runtime[93],_bbB_,_bbA_); + case 1: + var _bbC_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$204); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bbC_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25196) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30346); + var + _bbD_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$132), + _bbE_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bbD_), + _bbF_=caml_call1(Runtime_ocaml_Runtime[69],_bbE_), + _bbG_=caml_call1(Runtime_ocaml_Runtime[31],cst_5149), + _bbH_=caml_call2(Runtime_ocaml_Runtime[104],_bbG_,_bbF_), + _bbI_=caml_call1(Runtime_ocaml_Runtime[31],cst_35495); + return caml_call2(Runtime_ocaml_Runtime[93],_bbI_,_bbH_); + default: + var _bbJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$205); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bbJ_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23530) + :caml_call1(Runtime_ocaml_Runtime[31],cst_28228); + var + _bbK_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$133), + _bbL_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bbK_), + _bbM_=caml_call1(Runtime_ocaml_Runtime[69],_bbL_), + _bbN_=caml_call1(Runtime_ocaml_Runtime[31],cst_4699), + _bbO_=caml_call2(Runtime_ocaml_Runtime[104],_bbN_,_bbM_), + _bbP_=caml_call1(Runtime_ocaml_Runtime[31],cst_32928); + return caml_call2(Runtime_ocaml_Runtime[93],_bbP_,_bbO_)}} + function _bbi_(param$0) + {switch(type_pret[0]) + {case 0:var _bbj_=0;break; + case 1:var _bbj_=1;break; + case 2:var _bbj_=0;break; + case 3:var _bbj_=0;break; + default:var _bbj_=0} + var + _bbk_=0 === anciennete_logement[0]?0:1, + _bbl_=caml_call2(Runtime_ocaml_Runtime[83],_bbk_,_bbj_), + _bbm_=caml_call3(Runtime_ocaml_Runtime[57],2010,12,31), + _bbn_=caml_call2(Runtime_ocaml_Runtime[114],param,_bbm_), + _bbo_=caml_call2(Runtime_ocaml_Runtime[83],_bbn_,_bbl_), + _bbp_=caml_call3(Runtime_ocaml_Runtime[57],2009,12,31), + _bbq_=caml_call2(Runtime_ocaml_Runtime[129],param,_bbp_), + _bbr_=caml_call2(Runtime_ocaml_Runtime[83],_bbq_,_bbo_), + _bbs_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bbt_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bbs_), + _bbu_=caml_call2(Runtime_ocaml_Runtime[83],_bbt_,_bbr_); + return caml_call2(Runtime_ocaml_Runtime[29],_xq_,_bbu_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xr_,[0],_bbi_,_bbh_)} + function _a0d_(param$0) + {function _baK_(param) + {switch(zone[0]) + {case 0: + var _baY_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$206); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_baY_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_35114) + :caml_call1(Runtime_ocaml_Runtime[31],cst_42361); + var + _baZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$134), + _ba0_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_baZ_), + _ba1_=caml_call1(Runtime_ocaml_Runtime[69],_ba0_), + _ba2_=caml_call1(Runtime_ocaml_Runtime[31],cst_7246), + _ba3_=caml_call2(Runtime_ocaml_Runtime[104],_ba2_,_ba1_), + _ba4_=caml_call1(Runtime_ocaml_Runtime[31],cst_49607); + return caml_call2(Runtime_ocaml_Runtime[93],_ba4_,_ba3_); + case 1: + var _ba5_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$207); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ba5_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31336) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37716); + var + _ba6_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$135), + _ba7_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_ba6_), + _ba8_=caml_call1(Runtime_ocaml_Runtime[69],_ba7_), + _ba9_=caml_call1(Runtime_ocaml_Runtime[31],cst_6380), + _ba__=caml_call2(Runtime_ocaml_Runtime[104],_ba9_,_ba8_), + _ba$_=caml_call1(Runtime_ocaml_Runtime[31],cst_44098); + return caml_call2(Runtime_ocaml_Runtime[93],_ba$_,_ba__); + default: + var _bba_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$208); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bba_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29254) + :caml_call1(Runtime_ocaml_Runtime[31],cst_35078); + var + _bbb_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$136), + _bbc_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bbb_), + _bbd_=caml_call1(Runtime_ocaml_Runtime[69],_bbc_), + _bbe_=caml_call1(Runtime_ocaml_Runtime[31],cst_5824), + _bbf_=caml_call2(Runtime_ocaml_Runtime[104],_bbe_,_bbd_), + _bbg_=caml_call1(Runtime_ocaml_Runtime[31],cst_40903); + return caml_call2(Runtime_ocaml_Runtime[93],_bbg_,_bbf_)}} + function _baL_(param$0) + {switch(type_pret[0]) + {case 0:var _baM_=0;break; + case 1:var _baM_=1;break; + case 2:var _baM_=0;break; + case 3:var _baM_=0;break; + default:var _baM_=0} + var + _baN_=0 === anciennete_logement[0]?1:0, + _baO_=caml_call2(Runtime_ocaml_Runtime[83],_baN_,_baM_), + _baP_=caml_call3(Runtime_ocaml_Runtime[57],2010,12,31), + _baQ_=caml_call2(Runtime_ocaml_Runtime[114],param,_baP_), + _baR_=caml_call2(Runtime_ocaml_Runtime[83],_baQ_,_baO_), + _baS_=caml_call3(Runtime_ocaml_Runtime[57],2009,12,31), + _baT_=caml_call2(Runtime_ocaml_Runtime[129],param,_baS_), + _baU_=caml_call2(Runtime_ocaml_Runtime[83],_baT_,_baR_), + _baV_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _baW_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_baV_), + _baX_=caml_call2(Runtime_ocaml_Runtime[83],_baW_,_baU_); + return caml_call2(Runtime_ocaml_Runtime[29],_xs_,_baX_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xt_,[0],_baL_,_baK_)} + function _a0e_(param$0) + {function _bab_(param) + {switch(zone[0]) + {case 0: + var _bap_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$209); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bap_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_28174) + :caml_call1(Runtime_ocaml_Runtime[31],cst_34000); + var + _baq_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$137), + _bar_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_baq_), + _bas_=caml_call1(Runtime_ocaml_Runtime[69],_bar_), + _bat_=caml_call1(Runtime_ocaml_Runtime[31],cst_5826), + _bau_=caml_call2(Runtime_ocaml_Runtime[104],_bat_,_bas_), + _bav_=caml_call1(Runtime_ocaml_Runtime[31],cst_39826); + return caml_call2(Runtime_ocaml_Runtime[93],_bav_,_bau_); + case 1: + var _baw_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$210); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_baw_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25116) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30249); + var + _bax_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$138), + _bay_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bax_), + _baz_=caml_call1(Runtime_ocaml_Runtime[69],_bay_), + _baA_=caml_call1(Runtime_ocaml_Runtime[31],cst_5133), + _baB_=caml_call2(Runtime_ocaml_Runtime[104],_baA_,_baz_), + _baC_=caml_call1(Runtime_ocaml_Runtime[31],cst_35382); + return caml_call2(Runtime_ocaml_Runtime[93],_baC_,_baB_); + default: + var _baD_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$211); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_baD_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23455) + :caml_call1(Runtime_ocaml_Runtime[31],cst_28138); + var + _baE_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$139), + _baF_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_baE_), + _baG_=caml_call1(Runtime_ocaml_Runtime[69],_baF_), + _baH_=caml_call1(Runtime_ocaml_Runtime[31],cst_4684), + _baI_=caml_call2(Runtime_ocaml_Runtime[104],_baH_,_baG_), + _baJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_32823); + return caml_call2(Runtime_ocaml_Runtime[93],_baJ_,_baI_)}} + function _bac_(param$0) + {switch(type_pret[0]) + {case 0:var _bad_=0;break; + case 1:var _bad_=1;break; + case 2:var _bad_=0;break; + case 3:var _bad_=0;break; + default:var _bad_=0} + var + _bae_=0 === anciennete_logement[0]?0:1, + _baf_=caml_call2(Runtime_ocaml_Runtime[83],_bae_,_bad_), + _bag_=caml_call3(Runtime_ocaml_Runtime[57],2009,12,31), + _bah_=caml_call2(Runtime_ocaml_Runtime[114],param,_bag_), + _bai_=caml_call2(Runtime_ocaml_Runtime[83],_bah_,_baf_), + _baj_=caml_call3(Runtime_ocaml_Runtime[57],2008,12,31), + _bak_=caml_call2(Runtime_ocaml_Runtime[129],param,_baj_), + _bal_=caml_call2(Runtime_ocaml_Runtime[83],_bak_,_bai_), + _bam_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _ban_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bam_), + _bao_=caml_call2(Runtime_ocaml_Runtime[83],_ban_,_bal_); + return caml_call2(Runtime_ocaml_Runtime[29],_xu_,_bao_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xv_,[0],_bac_,_bab_)} + function _a0f_(param$0) + {function _a$E_(param) + {switch(zone[0]) + {case 0: + var _a$S_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$212); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a$S_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_35002) + :caml_call1(Runtime_ocaml_Runtime[31],cst_42226); + var + _a$T_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$140), + _a$U_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a$T_), + _a$V_=caml_call1(Runtime_ocaml_Runtime[69],_a$U_), + _a$W_=caml_call1(Runtime_ocaml_Runtime[31],cst_7223), + _a$X_=caml_call2(Runtime_ocaml_Runtime[104],_a$W_,_a$V_), + _a$Y_=caml_call1(Runtime_ocaml_Runtime[31],cst_49449); + return caml_call2(Runtime_ocaml_Runtime[93],_a$Y_,_a$X_); + case 1: + var _a$Z_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$213); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a$Z_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31236) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37596); + var + _a$0_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$141), + _a$1_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a$0_), + _a$2_=caml_call1(Runtime_ocaml_Runtime[69],_a$1_), + _a$3_=caml_call1(Runtime_ocaml_Runtime[31],cst_6360), + _a$4_=caml_call2(Runtime_ocaml_Runtime[104],_a$3_,_a$2_), + _a$5_=caml_call1(Runtime_ocaml_Runtime[31],cst_43957); + return caml_call2(Runtime_ocaml_Runtime[93],_a$5_,_a$4_); + default: + var _a$6_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$214); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a$6_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29161) + :caml_call1(Runtime_ocaml_Runtime[31],cst_34966); + var + _a$7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$142), + _a$8_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a$7_), + _a$9_=caml_call1(Runtime_ocaml_Runtime[69],_a$8_), + _a$__=caml_call1(Runtime_ocaml_Runtime[31],cst_5805), + _a$$_=caml_call2(Runtime_ocaml_Runtime[104],_a$__,_a$9_), + _baa_=caml_call1(Runtime_ocaml_Runtime[31],cst_40773); + return caml_call2(Runtime_ocaml_Runtime[93],_baa_,_a$$_)}} + function _a$F_(param$0) + {switch(type_pret[0]) + {case 0:var _a$G_=0;break; + case 1:var _a$G_=1;break; + case 2:var _a$G_=0;break; + case 3:var _a$G_=0;break; + default:var _a$G_=0} + var + _a$H_=0 === anciennete_logement[0]?1:0, + _a$I_=caml_call2(Runtime_ocaml_Runtime[83],_a$H_,_a$G_), + _a$J_=caml_call3(Runtime_ocaml_Runtime[57],2009,12,31), + _a$K_=caml_call2(Runtime_ocaml_Runtime[114],param,_a$J_), + _a$L_=caml_call2(Runtime_ocaml_Runtime[83],_a$K_,_a$I_), + _a$M_=caml_call3(Runtime_ocaml_Runtime[57],2008,12,31), + _a$N_=caml_call2(Runtime_ocaml_Runtime[129],param,_a$M_), + _a$O_=caml_call2(Runtime_ocaml_Runtime[83],_a$N_,_a$L_), + _a$P_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a$Q_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a$P_), + _a$R_=caml_call2(Runtime_ocaml_Runtime[83],_a$Q_,_a$O_); + return caml_call2(Runtime_ocaml_Runtime[29],_xw_,_a$R_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xx_,[0],_a$F_,_a$E_)} + function _a0g_(param$0) + {function _a_7_(param) + {switch(zone[0]) + {case 0: + var _a$j_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$215); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a$j_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27367) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33026); + var + _a$k_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$143), + _a$l_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a$k_), + _a$m_=caml_call1(Runtime_ocaml_Runtime[69],_a$l_), + _a$n_=caml_call1(Runtime_ocaml_Runtime[31],cst_5659), + _a$o_=caml_call2(Runtime_ocaml_Runtime[104],_a$n_,_a$m_), + _a$p_=caml_call1(Runtime_ocaml_Runtime[31],cst_38685); + return caml_call2(Runtime_ocaml_Runtime[93],_a$p_,_a$o_); + case 1: + var _a$q_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$216); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a$q_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24396) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29382); + var + _a$r_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$144), + _a$s_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a$r_), + _a$t_=caml_call1(Runtime_ocaml_Runtime[69],_a$s_), + _a$u_=caml_call1(Runtime_ocaml_Runtime[31],cst_4986$0), + _a$v_=caml_call2(Runtime_ocaml_Runtime[104],_a$u_,_a$t_), + _a$w_=caml_call1(Runtime_ocaml_Runtime[31],cst_34368); + return caml_call2(Runtime_ocaml_Runtime[93],_a$w_,_a$v_); + default: + var _a$x_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$217); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a$x_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_22783) + :caml_call1(Runtime_ocaml_Runtime[31],cst_27332); + var + _a$y_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$145), + _a$z_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a$y_), + _a$A_=caml_call1(Runtime_ocaml_Runtime[69],_a$z_), + _a$B_=caml_call1(Runtime_ocaml_Runtime[31],cst_4550), + _a$C_=caml_call2(Runtime_ocaml_Runtime[104],_a$B_,_a$A_), + _a$D_=caml_call1(Runtime_ocaml_Runtime[31],cst_31882); + return caml_call2(Runtime_ocaml_Runtime[93],_a$D_,_a$C_)}} + function _a_8_(param$0) + {switch(type_pret[0]) + {case 0:var _a_9_=0;break; + case 1:var _a_9_=1;break; + case 2:var _a_9_=0;break; + case 3:var _a_9_=0;break; + default:var _a_9_=0} + var + _a___=0 === anciennete_logement[0]?0:1, + _a_$_=caml_call2(Runtime_ocaml_Runtime[83],_a___,_a_9_), + _a$a_=caml_call3(Runtime_ocaml_Runtime[57],2008,12,31), + _a$b_=caml_call2(Runtime_ocaml_Runtime[114],param,_a$a_), + _a$c_=caml_call2(Runtime_ocaml_Runtime[83],_a$b_,_a_$_), + _a$d_=caml_call3(Runtime_ocaml_Runtime[57],2007,12,31), + _a$e_=caml_call2(Runtime_ocaml_Runtime[129],param,_a$d_), + _a$f_=caml_call2(Runtime_ocaml_Runtime[83],_a$e_,_a$c_), + _a$g_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a$h_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a$g_), + _a$i_=caml_call2(Runtime_ocaml_Runtime[83],_a$h_,_a$f_); + return caml_call2(Runtime_ocaml_Runtime[29],_xy_,_a$i_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xz_,[0],_a_8_,_a_7_)} + function _a0h_(param$0) + {function _a_y_(param) + {switch(zone[0]) + {case 0: + var _a_M_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$218); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a_M_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_33999) + :caml_call1(Runtime_ocaml_Runtime[31],cst_41016); + var + _a_N_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$146), + _a_O_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a_N_), + _a_P_=caml_call1(Runtime_ocaml_Runtime[69],_a_O_), + _a_Q_=caml_call1(Runtime_ocaml_Runtime[31],cst_7016), + _a_R_=caml_call2(Runtime_ocaml_Runtime[104],_a_Q_,_a_P_), + _a_S_=caml_call1(Runtime_ocaml_Runtime[31],cst_48032); + return caml_call2(Runtime_ocaml_Runtime[93],_a_S_,_a_R_); + case 1: + var _a_T_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$219); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a_T_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_30341) + :caml_call1(Runtime_ocaml_Runtime[31],cst_36519); + var + _a_U_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$147), + _a_V_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a_U_), + _a_W_=caml_call1(Runtime_ocaml_Runtime[69],_a_V_), + _a_X_=caml_call1(Runtime_ocaml_Runtime[31],cst_6178), + _a_Y_=caml_call2(Runtime_ocaml_Runtime[104],_a_X_,_a_W_), + _a_Z_=caml_call1(Runtime_ocaml_Runtime[31],cst_42697); + return caml_call2(Runtime_ocaml_Runtime[93],_a_Z_,_a_Y_); + default: + var _a_0_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$220); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a_0_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_28325) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33964); + var + _a_1_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$148), + _a_2_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a_1_), + _a_3_=caml_call1(Runtime_ocaml_Runtime[69],_a_2_), + _a_4_=caml_call1(Runtime_ocaml_Runtime[31],cst_5639), + _a_5_=caml_call2(Runtime_ocaml_Runtime[104],_a_4_,_a_3_), + _a_6_=caml_call1(Runtime_ocaml_Runtime[31],cst_39605); + return caml_call2(Runtime_ocaml_Runtime[93],_a_6_,_a_5_)}} + function _a_z_(param$0) + {switch(type_pret[0]) + {case 0:var _a_A_=0;break; + case 1:var _a_A_=1;break; + case 2:var _a_A_=0;break; + case 3:var _a_A_=0;break; + default:var _a_A_=0} + var + _a_B_=0 === anciennete_logement[0]?1:0, + _a_C_=caml_call2(Runtime_ocaml_Runtime[83],_a_B_,_a_A_), + _a_D_=caml_call3(Runtime_ocaml_Runtime[57],2008,12,31), + _a_E_=caml_call2(Runtime_ocaml_Runtime[114],param,_a_D_), + _a_F_=caml_call2(Runtime_ocaml_Runtime[83],_a_E_,_a_C_), + _a_G_=caml_call3(Runtime_ocaml_Runtime[57],2007,12,31), + _a_H_=caml_call2(Runtime_ocaml_Runtime[129],param,_a_G_), + _a_I_=caml_call2(Runtime_ocaml_Runtime[83],_a_H_,_a_F_), + _a_J_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a_K_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a_J_), + _a_L_=caml_call2(Runtime_ocaml_Runtime[83],_a_K_,_a_I_); + return caml_call2(Runtime_ocaml_Runtime[29],_xA_,_a_L_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xB_,[0],_a_z_,_a_y_)} + function _a0i_(param$0) + {function _a91_(param) + {switch(zone[0]) + {case 0: + var _a_d_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$221); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a_d_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26632) + :caml_call1(Runtime_ocaml_Runtime[31],cst_32139); + var + _a_e_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$149), + _a_f_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a_e_), + _a_g_=caml_call1(Runtime_ocaml_Runtime[69],_a_f_), + _a_h_=caml_call1(Runtime_ocaml_Runtime[31],cst_5507), + _a_i_=caml_call2(Runtime_ocaml_Runtime[104],_a_h_,_a_g_), + _a_j_=caml_call1(Runtime_ocaml_Runtime[31],cst_37646); + return caml_call2(Runtime_ocaml_Runtime[93],_a_j_,_a_i_); + case 1: + var _a_k_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$222); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a_k_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23741) + :caml_call1(Runtime_ocaml_Runtime[31],cst_28593); + var + _a_l_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$150), + _a_m_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a_l_), + _a_n_=caml_call1(Runtime_ocaml_Runtime[69],_a_m_), + _a_o_=caml_call1(Runtime_ocaml_Runtime[31],cst_4852), + _a_p_=caml_call2(Runtime_ocaml_Runtime[104],_a_o_,_a_n_), + _a_q_=caml_call1(Runtime_ocaml_Runtime[31],cst_33445); + return caml_call2(Runtime_ocaml_Runtime[93],_a_q_,_a_p_); + default: + var _a_r_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$223); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a_r_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_22171) + :caml_call1(Runtime_ocaml_Runtime[31],cst_36598); + var + _a_s_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$151), + _a_t_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a_s_), + _a_u_=caml_call1(Runtime_ocaml_Runtime[69],_a_t_), + _a_v_=caml_call1(Runtime_ocaml_Runtime[31],cst_4428), + _a_w_=caml_call2(Runtime_ocaml_Runtime[104],_a_v_,_a_u_), + _a_x_=caml_call1(Runtime_ocaml_Runtime[31],cst_31026); + return caml_call2(Runtime_ocaml_Runtime[93],_a_x_,_a_w_)}} + function _a92_(param$0) + {switch(type_pret[0]) + {case 0:var _a93_=0;break; + case 1:var _a93_=1;break; + case 2:var _a93_=0;break; + case 3:var _a93_=0;break; + default:var _a93_=0} + var + _a94_=0 === anciennete_logement[0]?0:1, + _a95_=caml_call2(Runtime_ocaml_Runtime[83],_a94_,_a93_), + _a96_=caml_call3(Runtime_ocaml_Runtime[57],2007,12,31), + _a97_=caml_call2(Runtime_ocaml_Runtime[114],param,_a96_), + _a98_=caml_call2(Runtime_ocaml_Runtime[83],_a97_,_a95_), + _a99_=caml_call3(Runtime_ocaml_Runtime[57],2006,12,31), + _a9__=caml_call2(Runtime_ocaml_Runtime[129],param,_a99_), + _a9$_=caml_call2(Runtime_ocaml_Runtime[83],_a9__,_a98_), + _a_a_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a_b_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a_a_), + _a_c_=caml_call2(Runtime_ocaml_Runtime[83],_a_b_,_a9$_); + return caml_call2(Runtime_ocaml_Runtime[29],_xC_,_a_c_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xD_,[0],_a92_,_a91_)} + function _a0j_(param$0) + {function _a9s_(param) + {switch(zone[0]) + {case 0: + var _a9G_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$224); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a9G_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_33086) + :caml_call1(Runtime_ocaml_Runtime[31],cst_39914); + var + _a9H_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$152), + _a9I_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a9H_), + _a9J_=caml_call1(Runtime_ocaml_Runtime[69],_a9I_), + _a9K_=caml_call1(Runtime_ocaml_Runtime[31],cst_6828), + _a9L_=caml_call2(Runtime_ocaml_Runtime[104],_a9K_,_a9J_), + _a9M_=caml_call1(Runtime_ocaml_Runtime[31],cst_46742); + return caml_call2(Runtime_ocaml_Runtime[93],_a9M_,_a9L_); + case 1: + var _a9N_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$225); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a9N_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29526) + :caml_call1(Runtime_ocaml_Runtime[31],cst_35538); + var + _a9O_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$153), + _a9P_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a9O_), + _a9Q_=caml_call1(Runtime_ocaml_Runtime[69],_a9P_), + _a9R_=caml_call1(Runtime_ocaml_Runtime[31],cst_6012), + _a9S_=caml_call2(Runtime_ocaml_Runtime[104],_a9R_,_a9Q_), + _a9T_=caml_call1(Runtime_ocaml_Runtime[31],cst_41550); + return caml_call2(Runtime_ocaml_Runtime[93],_a9T_,_a9S_); + default: + var _a9U_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$226); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a9U_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27564) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33052); + var + _a9V_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$154), + _a9W_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a9V_), + _a9X_=caml_call1(Runtime_ocaml_Runtime[69],_a9W_), + _a9Y_=caml_call1(Runtime_ocaml_Runtime[31],cst_5488), + _a9Z_=caml_call2(Runtime_ocaml_Runtime[104],_a9Y_,_a9X_), + _a90_=caml_call1(Runtime_ocaml_Runtime[31],cst_38541); + return caml_call2(Runtime_ocaml_Runtime[93],_a90_,_a9Z_)}} + function _a9t_(param$0) + {switch(type_pret[0]) + {case 0:var _a9u_=0;break; + case 1:var _a9u_=1;break; + case 2:var _a9u_=0;break; + case 3:var _a9u_=0;break; + default:var _a9u_=0} + var + _a9v_=0 === anciennete_logement[0]?1:0, + _a9w_=caml_call2(Runtime_ocaml_Runtime[83],_a9v_,_a9u_), + _a9x_=caml_call3(Runtime_ocaml_Runtime[57],2007,12,31), + _a9y_=caml_call2(Runtime_ocaml_Runtime[114],param,_a9x_), + _a9z_=caml_call2(Runtime_ocaml_Runtime[83],_a9y_,_a9w_), + _a9A_=caml_call3(Runtime_ocaml_Runtime[57],2006,12,31), + _a9B_=caml_call2(Runtime_ocaml_Runtime[129],param,_a9A_), + _a9C_=caml_call2(Runtime_ocaml_Runtime[83],_a9B_,_a9z_), + _a9D_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a9E_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a9D_), + _a9F_=caml_call2(Runtime_ocaml_Runtime[83],_a9E_,_a9C_); + return caml_call2(Runtime_ocaml_Runtime[29],_xE_,_a9F_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xF_,[0],_a9t_,_a9s_)} + function _a0k_(param$0) + {function _a8V_(param) + {switch(zone[0]) + {case 0: + var _a89_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$227); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a89_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25907) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31264); + var + _a8__=caml_call1(Runtime_ocaml_Runtime[46],cst_1$155), + _a8$_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a8__), + _a9a_=caml_call1(Runtime_ocaml_Runtime[69],_a8$_), + _a9b_=caml_call1(Runtime_ocaml_Runtime[31],cst_5357), + _a9c_=caml_call2(Runtime_ocaml_Runtime[104],_a9b_,_a9a_), + _a9d_=caml_call1(Runtime_ocaml_Runtime[31],cst_36621); + return caml_call2(Runtime_ocaml_Runtime[93],_a9d_,_a9c_); + case 1: + var _a9e_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$228); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a9e_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23094) + :caml_call1(Runtime_ocaml_Runtime[31],cst_27814); + var + _a9f_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$156), + _a9g_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a9f_), + _a9h_=caml_call1(Runtime_ocaml_Runtime[69],_a9g_), + _a9i_=caml_call1(Runtime_ocaml_Runtime[31],cst_4720), + _a9j_=caml_call2(Runtime_ocaml_Runtime[104],_a9i_,_a9h_), + _a9k_=caml_call1(Runtime_ocaml_Runtime[31],cst_32534); + return caml_call2(Runtime_ocaml_Runtime[93],_a9k_,_a9j_); + default: + var _a9l_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$229); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a9l_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_21567) + :caml_call1(Runtime_ocaml_Runtime[31],cst_25874); + var + _a9m_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$157), + _a9n_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a9m_), + _a9o_=caml_call1(Runtime_ocaml_Runtime[69],_a9n_), + _a9p_=caml_call1(Runtime_ocaml_Runtime[31],cst_4307), + _a9q_=caml_call2(Runtime_ocaml_Runtime[104],_a9p_,_a9o_), + _a9r_=caml_call1(Runtime_ocaml_Runtime[31],cst_30181); + return caml_call2(Runtime_ocaml_Runtime[93],_a9r_,_a9q_)}} + function _a8W_(param$0) + {switch(type_pret[0]) + {case 0:var _a8X_=0;break; + case 1:var _a8X_=1;break; + case 2:var _a8X_=0;break; + case 3:var _a8X_=0;break; + default:var _a8X_=0} + var + _a8Y_=0 === anciennete_logement[0]?0:1, + _a8Z_=caml_call2(Runtime_ocaml_Runtime[83],_a8Y_,_a8X_), + _a80_=caml_call3(Runtime_ocaml_Runtime[57],2006,12,31), + _a81_=caml_call2(Runtime_ocaml_Runtime[114],param,_a80_), + _a82_=caml_call2(Runtime_ocaml_Runtime[83],_a81_,_a8Z_), + _a83_=caml_call3(Runtime_ocaml_Runtime[57],2005,8,31), + _a84_=caml_call2(Runtime_ocaml_Runtime[129],param,_a83_), + _a85_=caml_call2(Runtime_ocaml_Runtime[83],_a84_,_a82_), + _a86_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a87_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a86_), + _a88_=caml_call2(Runtime_ocaml_Runtime[83],_a87_,_a85_); + return caml_call2(Runtime_ocaml_Runtime[29],_xG_,_a88_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xH_,[0],_a8W_,_a8V_)} + function _a0l_(param$0) + {function _a8m_(param) + {switch(zone[0]) + {case 0: + var _a8A_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$230); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a8A_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_32185) + :caml_call1(Runtime_ocaml_Runtime[31],cst_38827); + var + _a8B_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$158), + _a8C_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a8B_), + _a8D_=caml_call1(Runtime_ocaml_Runtime[69],_a8C_), + _a8E_=caml_call1(Runtime_ocaml_Runtime[31],cst_6642), + _a8F_=caml_call2(Runtime_ocaml_Runtime[104],_a8E_,_a8D_), + _a8G_=caml_call1(Runtime_ocaml_Runtime[31],cst_45469); + return caml_call2(Runtime_ocaml_Runtime[93],_a8G_,_a8F_); + case 1: + var _a8H_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$231); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a8H_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_28722) + :caml_call1(Runtime_ocaml_Runtime[31],cst_34570$0); + var + _a8I_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$159), + _a8J_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a8I_), + _a8K_=caml_call1(Runtime_ocaml_Runtime[69],_a8J_), + _a8L_=caml_call1(Runtime_ocaml_Runtime[31],cst_5848), + _a8M_=caml_call2(Runtime_ocaml_Runtime[104],_a8L_,_a8K_), + _a8N_=caml_call1(Runtime_ocaml_Runtime[31],cst_40418); + return caml_call2(Runtime_ocaml_Runtime[93],_a8N_,_a8M_); + default: + var _a8O_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$232); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a8O_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26813) + :caml_call1(Runtime_ocaml_Runtime[31],cst_32152); + var + _a8P_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$160), + _a8Q_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a8P_), + _a8R_=caml_call1(Runtime_ocaml_Runtime[69],_a8Q_), + _a8S_=caml_call1(Runtime_ocaml_Runtime[31],cst_5339), + _a8T_=caml_call2(Runtime_ocaml_Runtime[104],_a8S_,_a8R_), + _a8U_=caml_call1(Runtime_ocaml_Runtime[31],cst_37491); + return caml_call2(Runtime_ocaml_Runtime[93],_a8U_,_a8T_)}} + function _a8n_(param$0) + {switch(type_pret[0]) + {case 0:var _a8o_=0;break; + case 1:var _a8o_=1;break; + case 2:var _a8o_=0;break; + case 3:var _a8o_=0;break; + default:var _a8o_=0} + var + _a8p_=0 === anciennete_logement[0]?1:0, + _a8q_=caml_call2(Runtime_ocaml_Runtime[83],_a8p_,_a8o_), + _a8r_=caml_call3(Runtime_ocaml_Runtime[57],2006,12,31), + _a8s_=caml_call2(Runtime_ocaml_Runtime[114],param,_a8r_), + _a8t_=caml_call2(Runtime_ocaml_Runtime[83],_a8s_,_a8q_), + _a8u_=caml_call3(Runtime_ocaml_Runtime[57],2005,8,31), + _a8v_=caml_call2(Runtime_ocaml_Runtime[129],param,_a8u_), + _a8w_=caml_call2(Runtime_ocaml_Runtime[83],_a8v_,_a8t_), + _a8x_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a8y_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a8x_), + _a8z_=caml_call2(Runtime_ocaml_Runtime[83],_a8y_,_a8w_); + return caml_call2(Runtime_ocaml_Runtime[29],_xI_,_a8z_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xJ_,[0],_a8n_,_a8m_)} + function _a0m_(param$0) + {function _a7P_(param) + {switch(zone[0]) + {case 0: + var _a73_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$233); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a73_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25449) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30711); + var + _a74_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$161), + _a75_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a74_), + _a76_=caml_call1(Runtime_ocaml_Runtime[69],_a75_), + _a77_=caml_call1(Runtime_ocaml_Runtime[31],cst_5262), + _a78_=caml_call2(Runtime_ocaml_Runtime[104],_a77_,_a76_), + _a79_=caml_call1(Runtime_ocaml_Runtime[31],cst_35973); + return caml_call2(Runtime_ocaml_Runtime[93],_a79_,_a78_); + case 1: + var _a7__=caml_call1(Runtime_ocaml_Runtime[46],cst_0$234); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a7__)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_22686) + :caml_call1(Runtime_ocaml_Runtime[31],cst_27323); + var + _a7$_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$162), + _a8a_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a7$_), + _a8b_=caml_call1(Runtime_ocaml_Runtime[69],_a8a_), + _a8c_=caml_call1(Runtime_ocaml_Runtime[31],cst_4637), + _a8d_=caml_call2(Runtime_ocaml_Runtime[104],_a8c_,_a8b_), + _a8e_=caml_call1(Runtime_ocaml_Runtime[31],cst_31960); + return caml_call2(Runtime_ocaml_Runtime[93],_a8e_,_a8d_); + default: + var _a8f_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$235); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a8f_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_21186) + :caml_call1(Runtime_ocaml_Runtime[31],cst_25417); + var + _a8g_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$163), + _a8h_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a8g_), + _a8i_=caml_call1(Runtime_ocaml_Runtime[69],_a8h_), + _a8j_=caml_call1(Runtime_ocaml_Runtime[31],cst_4231), + _a8k_=caml_call2(Runtime_ocaml_Runtime[104],_a8j_,_a8i_), + _a8l_=caml_call1(Runtime_ocaml_Runtime[31],cst_29648); + return caml_call2(Runtime_ocaml_Runtime[93],_a8l_,_a8k_)}} + function _a7Q_(param$0) + {switch(type_pret[0]) + {case 0:var _a7R_=0;break; + case 1:var _a7R_=1;break; + case 2:var _a7R_=0;break; + case 3:var _a7R_=0;break; + default:var _a7R_=0} + var + _a7S_=0 === anciennete_logement[0]?0:1, + _a7T_=caml_call2(Runtime_ocaml_Runtime[83],_a7S_,_a7R_), + _a7U_=caml_call3(Runtime_ocaml_Runtime[57],2005,8,31), + _a7V_=caml_call2(Runtime_ocaml_Runtime[114],param,_a7U_), + _a7W_=caml_call2(Runtime_ocaml_Runtime[83],_a7V_,_a7T_), + _a7X_=caml_call3(Runtime_ocaml_Runtime[57],2003,6,30), + _a7Y_=caml_call2(Runtime_ocaml_Runtime[129],param,_a7X_), + _a7Z_=caml_call2(Runtime_ocaml_Runtime[83],_a7Y_,_a7W_), + _a70_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a71_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a70_), + _a72_=caml_call2(Runtime_ocaml_Runtime[83],_a71_,_a7Z_); + return caml_call2(Runtime_ocaml_Runtime[29],_xK_,_a72_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xL_,[0],_a7Q_,_a7P_)} + function _a0n_(param$0) + {function _a7g_(param) + {switch(zone[0]) + {case 0: + var _a7u_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$236); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a7u_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31616) + :caml_call1(Runtime_ocaml_Runtime[31],cst_38141); + var + _a7v_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$164), + _a7w_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a7v_), + _a7x_=caml_call1(Runtime_ocaml_Runtime[69],_a7w_), + _a7y_=caml_call1(Runtime_ocaml_Runtime[31],cst_6525), + _a7z_=caml_call2(Runtime_ocaml_Runtime[104],_a7y_,_a7x_), + _a7A_=caml_call1(Runtime_ocaml_Runtime[31],cst_44666); + return caml_call2(Runtime_ocaml_Runtime[93],_a7A_,_a7z_); + case 1: + var _a7B_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$237); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a7B_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_28214) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33959); + var + _a7C_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$165), + _a7D_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a7C_), + _a7E_=caml_call1(Runtime_ocaml_Runtime[69],_a7D_), + _a7F_=caml_call1(Runtime_ocaml_Runtime[31],cst_5745), + _a7G_=caml_call2(Runtime_ocaml_Runtime[104],_a7F_,_a7E_), + _a7H_=caml_call1(Runtime_ocaml_Runtime[31],cst_39704); + return caml_call2(Runtime_ocaml_Runtime[93],_a7H_,_a7G_); + default: + var _a7I_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$238); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a7I_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26339) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31584); + var + _a7J_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$166), + _a7K_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a7J_), + _a7L_=caml_call1(Runtime_ocaml_Runtime[69],_a7K_), + _a7M_=caml_call1(Runtime_ocaml_Runtime[31],cst_5245), + _a7N_=caml_call2(Runtime_ocaml_Runtime[104],_a7M_,_a7L_), + _a7O_=caml_call1(Runtime_ocaml_Runtime[31],cst_36829); + return caml_call2(Runtime_ocaml_Runtime[93],_a7O_,_a7N_)}} + function _a7h_(param$0) + {switch(type_pret[0]) + {case 0:var _a7i_=0;break; + case 1:var _a7i_=1;break; + case 2:var _a7i_=0;break; + case 3:var _a7i_=0;break; + default:var _a7i_=0} + var + _a7j_=0 === anciennete_logement[0]?1:0, + _a7k_=caml_call2(Runtime_ocaml_Runtime[83],_a7j_,_a7i_), + _a7l_=caml_call3(Runtime_ocaml_Runtime[57],2005,8,31), + _a7m_=caml_call2(Runtime_ocaml_Runtime[114],param,_a7l_), + _a7n_=caml_call2(Runtime_ocaml_Runtime[83],_a7m_,_a7k_), + _a7o_=caml_call3(Runtime_ocaml_Runtime[57],2003,6,30), + _a7p_=caml_call2(Runtime_ocaml_Runtime[129],param,_a7o_), + _a7q_=caml_call2(Runtime_ocaml_Runtime[83],_a7p_,_a7n_), + _a7r_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a7s_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a7r_), + _a7t_=caml_call2(Runtime_ocaml_Runtime[83],_a7s_,_a7q_); + return caml_call2(Runtime_ocaml_Runtime[29],_xM_,_a7t_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xN_,[0],_a7h_,_a7g_)} + function _a0o_(param$0) + {function _a6J_(param) + {switch(zone[0]) + {case 0: + var _a6X_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$239); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a6X_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25147) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30347); + var + _a6Y_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$167), + _a6Z_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a6Y_), + _a60_=caml_call1(Runtime_ocaml_Runtime[69],_a6Z_), + _a61_=caml_call1(Runtime_ocaml_Runtime[31],cst_5200), + _a62_=caml_call2(Runtime_ocaml_Runtime[104],_a61_,_a60_), + _a63_=caml_call1(Runtime_ocaml_Runtime[31],cst_35547); + return caml_call2(Runtime_ocaml_Runtime[93],_a63_,_a62_); + case 1: + var _a64_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$240); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a64_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_22417) + :caml_call1(Runtime_ocaml_Runtime[31],cst_26999); + var + _a65_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$168), + _a66_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a65_), + _a67_=caml_call1(Runtime_ocaml_Runtime[69],_a66_), + _a68_=caml_call1(Runtime_ocaml_Runtime[31],cst_4582), + _a69_=caml_call2(Runtime_ocaml_Runtime[104],_a68_,_a67_), + _a6__=caml_call1(Runtime_ocaml_Runtime[31],cst_31581); + return caml_call2(Runtime_ocaml_Runtime[93],_a6__,_a69_); + default: + var _a6$_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$241); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a6$_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_20935) + :caml_call1(Runtime_ocaml_Runtime[31],cst_25116$0); + var + _a7a_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$169), + _a7b_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a7a_), + _a7c_=caml_call1(Runtime_ocaml_Runtime[69],_a7b_), + _a7d_=caml_call1(Runtime_ocaml_Runtime[31],cst_4181), + _a7e_=caml_call2(Runtime_ocaml_Runtime[104],_a7d_,_a7c_), + _a7f_=caml_call1(Runtime_ocaml_Runtime[31],cst_29297); + return caml_call2(Runtime_ocaml_Runtime[93],_a7f_,_a7e_)}} + function _a6K_(param$0) + {switch(type_pret[0]) + {case 0:var _a6L_=0;break; + case 1:var _a6L_=1;break; + case 2:var _a6L_=0;break; + case 3:var _a6L_=0;break; + default:var _a6L_=0} + var + _a6M_=0 === anciennete_logement[0]?0:1, + _a6N_=caml_call2(Runtime_ocaml_Runtime[83],_a6M_,_a6L_), + _a6O_=caml_call3(Runtime_ocaml_Runtime[57],2003,6,30), + _a6P_=caml_call2(Runtime_ocaml_Runtime[114],param,_a6O_), + _a6Q_=caml_call2(Runtime_ocaml_Runtime[83],_a6P_,_a6N_), + _a6R_=caml_call3(Runtime_ocaml_Runtime[57],2002,6,30), + _a6S_=caml_call2(Runtime_ocaml_Runtime[129],param,_a6R_), + _a6T_=caml_call2(Runtime_ocaml_Runtime[83],_a6S_,_a6Q_), + _a6U_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a6V_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a6U_), + _a6W_=caml_call2(Runtime_ocaml_Runtime[83],_a6V_,_a6T_); + return caml_call2(Runtime_ocaml_Runtime[29],_xO_,_a6W_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xP_,[0],_a6K_,_a6J_)} + function _a0p_(param$0) + {function _a6a_(param) + {switch(zone[0]) + {case 0: + var _a6o_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$242); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a6o_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31241) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37689); + var + _a6p_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$170), + _a6q_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a6p_), + _a6r_=caml_call1(Runtime_ocaml_Runtime[69],_a6q_), + _a6s_=caml_call1(Runtime_ocaml_Runtime[31],cst_6448), + _a6t_=caml_call2(Runtime_ocaml_Runtime[104],_a6s_,_a6r_), + _a6u_=caml_call1(Runtime_ocaml_Runtime[31],cst_44137); + return caml_call2(Runtime_ocaml_Runtime[93],_a6u_,_a6t_); + case 1: + var _a6v_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$243); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a6v_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27879) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33556); + var + _a6w_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$171), + _a6x_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a6w_), + _a6y_=caml_call1(Runtime_ocaml_Runtime[69],_a6x_), + _a6z_=caml_call1(Runtime_ocaml_Runtime[31],cst_5677), + _a6A_=caml_call2(Runtime_ocaml_Runtime[104],_a6z_,_a6y_), + _a6B_=caml_call1(Runtime_ocaml_Runtime[31],cst_39233); + return caml_call2(Runtime_ocaml_Runtime[93],_a6B_,_a6A_); + default: + var _a6C_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$244); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a6C_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26027) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31210); + var + _a6D_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$172), + _a6E_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a6D_), + _a6F_=caml_call1(Runtime_ocaml_Runtime[69],_a6E_), + _a6G_=caml_call1(Runtime_ocaml_Runtime[31],cst_5183), + _a6H_=caml_call2(Runtime_ocaml_Runtime[104],_a6G_,_a6F_), + _a6I_=caml_call1(Runtime_ocaml_Runtime[31],cst_36393); + return caml_call2(Runtime_ocaml_Runtime[93],_a6I_,_a6H_)}} + function _a6b_(param$0) + {switch(type_pret[0]) + {case 0:var _a6c_=0;break; + case 1:var _a6c_=1;break; + case 2:var _a6c_=0;break; + case 3:var _a6c_=0;break; + default:var _a6c_=0} + var + _a6d_=0 === anciennete_logement[0]?1:0, + _a6e_=caml_call2(Runtime_ocaml_Runtime[83],_a6d_,_a6c_), + _a6f_=caml_call3(Runtime_ocaml_Runtime[57],2003,6,30), + _a6g_=caml_call2(Runtime_ocaml_Runtime[114],param,_a6f_), + _a6h_=caml_call2(Runtime_ocaml_Runtime[83],_a6g_,_a6e_), + _a6i_=caml_call3(Runtime_ocaml_Runtime[57],2002,6,30), + _a6j_=caml_call2(Runtime_ocaml_Runtime[129],param,_a6i_), + _a6k_=caml_call2(Runtime_ocaml_Runtime[83],_a6j_,_a6h_), + _a6l_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a6m_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a6l_), + _a6n_=caml_call2(Runtime_ocaml_Runtime[83],_a6m_,_a6k_); + return caml_call2(Runtime_ocaml_Runtime[29],_xQ_,_a6n_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xR_,[0],_a6b_,_a6a_)} + function _a0q_(param$0) + {function _a5D_(param) + {switch(zone[0]) + {case 0: + var _a5R_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$245); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a5R_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24849) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29987); + var + _a5S_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$173), + _a5T_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a5S_), + _a5U_=caml_call1(Runtime_ocaml_Runtime[69],_a5T_), + _a5V_=caml_call1(Runtime_ocaml_Runtime[31],cst_5138), + _a5W_=caml_call2(Runtime_ocaml_Runtime[104],_a5V_,_a5U_), + _a5X_=caml_call1(Runtime_ocaml_Runtime[31],cst_35125); + return caml_call2(Runtime_ocaml_Runtime[93],_a5X_,_a5W_); + case 1: + var _a5Y_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$246); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a5Y_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_22151) + :caml_call1(Runtime_ocaml_Runtime[31],cst_26679); + var + _a5Z_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$174), + _a50_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a5Z_), + _a51_=caml_call1(Runtime_ocaml_Runtime[69],_a50_), + _a52_=caml_call1(Runtime_ocaml_Runtime[31],cst_4528), + _a53_=caml_call2(Runtime_ocaml_Runtime[104],_a52_,_a51_), + _a54_=caml_call1(Runtime_ocaml_Runtime[31],cst_31207); + return caml_call2(Runtime_ocaml_Runtime[93],_a54_,_a53_); + default: + var _a55_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$247); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a55_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_20687) + :caml_call1(Runtime_ocaml_Runtime[31],cst_24818); + var + _a56_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$175), + _a57_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a56_), + _a58_=caml_call1(Runtime_ocaml_Runtime[69],_a57_), + _a59_=caml_call1(Runtime_ocaml_Runtime[31],cst_4131), + _a5__=caml_call2(Runtime_ocaml_Runtime[104],_a59_,_a58_), + _a5$_=caml_call1(Runtime_ocaml_Runtime[31],cst_28949); + return caml_call2(Runtime_ocaml_Runtime[93],_a5$_,_a5__)}} + function _a5E_(param$0) + {switch(type_pret[0]) + {case 0:var _a5F_=0;break; + case 1:var _a5F_=1;break; + case 2:var _a5F_=0;break; + case 3:var _a5F_=0;break; + default:var _a5F_=0} + var + _a5G_=0 === anciennete_logement[0]?0:1, + _a5H_=caml_call2(Runtime_ocaml_Runtime[83],_a5G_,_a5F_), + _a5I_=caml_call3(Runtime_ocaml_Runtime[57],2002,6,30), + _a5J_=caml_call2(Runtime_ocaml_Runtime[114],param,_a5I_), + _a5K_=caml_call2(Runtime_ocaml_Runtime[83],_a5J_,_a5H_), + _a5L_=caml_call3(Runtime_ocaml_Runtime[57],2002,1,1), + _a5M_=caml_call2(Runtime_ocaml_Runtime[129],param,_a5L_), + _a5N_=caml_call2(Runtime_ocaml_Runtime[83],_a5M_,_a5K_), + _a5O_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a5P_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a5O_), + _a5Q_=caml_call2(Runtime_ocaml_Runtime[83],_a5P_,_a5N_); + return caml_call2(Runtime_ocaml_Runtime[29],_xS_,_a5Q_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xT_,[0],_a5E_,_a5D_)} + function _a0r_(param$0) + {function _a45_(param) + {switch(zone[0]) + {case 0: + var _a5h_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$248); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a5h_)) + var + _a5i_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_163000) + :caml_call1(Runtime_ocaml_Runtime[31],cst_196700); + else + var + _a5j_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$176), + _a5k_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a5j_), + _a5l_=caml_call1(Runtime_ocaml_Runtime[69],_a5k_), + _a5m_=caml_call1(Runtime_ocaml_Runtime[31],cst_33700), + _a5n_=caml_call2(Runtime_ocaml_Runtime[104],_a5m_,_a5l_), + _a5o_=caml_call1(Runtime_ocaml_Runtime[31],cst_230400), + _a5i_=caml_call2(Runtime_ocaml_Runtime[93],_a5o_,_a5n_); + break; + case 1: + var _a5p_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$249); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a5p_)) + var + _a5i_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_145300) + :caml_call1(Runtime_ocaml_Runtime[31],cst_175000); + else + var + _a5q_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$177), + _a5r_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a5q_), + _a5s_=caml_call1(Runtime_ocaml_Runtime[69],_a5r_), + _a5t_=caml_call1(Runtime_ocaml_Runtime[31],cst_29700), + _a5u_=caml_call2(Runtime_ocaml_Runtime[104],_a5t_,_a5s_), + _a5v_=caml_call1(Runtime_ocaml_Runtime[31],cst_204700), + _a5i_=caml_call2(Runtime_ocaml_Runtime[93],_a5v_,_a5u_); + break; + default: + var _a5w_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$250); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a5w_)) + var + _a5i_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_135700) + :caml_call1(Runtime_ocaml_Runtime[31],cst_162800); + else + var + _a5x_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$178), + _a5y_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a5x_), + _a5z_=caml_call1(Runtime_ocaml_Runtime[69],_a5y_), + _a5A_=caml_call1(Runtime_ocaml_Runtime[31],cst_27100), + _a5B_=caml_call2(Runtime_ocaml_Runtime[104],_a5A_,_a5z_), + _a5C_=caml_call1(Runtime_ocaml_Runtime[31],cst_189900), + _a5i_=caml_call2(Runtime_ocaml_Runtime[93],_a5C_,_a5B_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_a5i_,taux_francs_vers_euros)} + function _a46_(param$0) + {switch(type_pret[0]) + {case 0:var _a47_=0;break; + case 1:var _a47_=1;break; + case 2:var _a47_=0;break; + case 3:var _a47_=0;break; + default:var _a47_=0} + var + _a48_=0 === anciennete_logement[0]?0:1, + _a49_=caml_call2(Runtime_ocaml_Runtime[83],_a48_,_a47_), + _a4__=caml_call3(Runtime_ocaml_Runtime[57],2001,12,31), + _a4$_=caml_call2(Runtime_ocaml_Runtime[114],param,_a4__), + _a5a_=caml_call2(Runtime_ocaml_Runtime[83],_a4$_,_a49_), + _a5b_=caml_call3(Runtime_ocaml_Runtime[57],2001,7,1), + _a5c_=caml_call2(Runtime_ocaml_Runtime[129],param,_a5b_), + _a5d_=caml_call2(Runtime_ocaml_Runtime[83],_a5c_,_a5a_), + _a5e_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a5f_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a5e_), + _a5g_=caml_call2(Runtime_ocaml_Runtime[83],_a5f_,_a5d_); + return caml_call2(Runtime_ocaml_Runtime[29],_xU_,_a5g_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xV_,[0],_a46_,_a45_)} + function _a0s_(param$0) + {function _a4w_(param) + {switch(zone[0]) + {case 0: + var _a4K_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$251); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a4K_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_30871) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37243); + var + _a4L_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$179), + _a4M_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a4L_), + _a4N_=caml_call1(Runtime_ocaml_Runtime[69],_a4M_), + _a4O_=caml_call1(Runtime_ocaml_Runtime[31],cst_6372), + _a4P_=caml_call2(Runtime_ocaml_Runtime[104],_a4O_,_a4N_), + _a4Q_=caml_call1(Runtime_ocaml_Runtime[31],cst_43615); + return caml_call2(Runtime_ocaml_Runtime[93],_a4Q_,_a4P_); + case 1: + var _a4R_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$252); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a4R_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27548) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33148); + var + _a4S_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$180), + _a4T_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a4S_), + _a4U_=caml_call1(Runtime_ocaml_Runtime[69],_a4T_), + _a4V_=caml_call1(Runtime_ocaml_Runtime[31],cst_5610), + _a4W_=caml_call2(Runtime_ocaml_Runtime[104],_a4V_,_a4U_), + _a4X_=caml_call1(Runtime_ocaml_Runtime[31],cst_38768); + return caml_call2(Runtime_ocaml_Runtime[93],_a4X_,_a4W_); + default: + var _a4Y_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$253); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a4Y_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25718) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30840); + var + _a4Z_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$181), + _a40_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a4Z_), + _a41_=caml_call1(Runtime_ocaml_Runtime[69],_a40_), + _a42_=caml_call1(Runtime_ocaml_Runtime[31],cst_5122), + _a43_=caml_call2(Runtime_ocaml_Runtime[104],_a42_,_a41_), + _a44_=caml_call1(Runtime_ocaml_Runtime[31],cst_35962); + return caml_call2(Runtime_ocaml_Runtime[93],_a44_,_a43_)}} + function _a4x_(param$0) + {switch(type_pret[0]) + {case 0:var _a4y_=0;break; + case 1:var _a4y_=1;break; + case 2:var _a4y_=0;break; + case 3:var _a4y_=0;break; + default:var _a4y_=0} + var + _a4z_=0 === anciennete_logement[0]?1:0, + _a4A_=caml_call2(Runtime_ocaml_Runtime[83],_a4z_,_a4y_), + _a4B_=caml_call3(Runtime_ocaml_Runtime[57],2002,6,30), + _a4C_=caml_call2(Runtime_ocaml_Runtime[114],param,_a4B_), + _a4D_=caml_call2(Runtime_ocaml_Runtime[83],_a4C_,_a4A_), + _a4E_=caml_call3(Runtime_ocaml_Runtime[57],2002,1,1), + _a4F_=caml_call2(Runtime_ocaml_Runtime[129],param,_a4E_), + _a4G_=caml_call2(Runtime_ocaml_Runtime[83],_a4F_,_a4D_), + _a4H_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a4I_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a4H_), + _a4J_=caml_call2(Runtime_ocaml_Runtime[83],_a4I_,_a4G_); + return caml_call2(Runtime_ocaml_Runtime[29],_xW_,_a4J_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xX_,[0],_a4x_,_a4w_)} + function _a0t_(param$0) + {function _a3Y_(param) + {switch(zone[0]) + {case 0: + var _a4a_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$254); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a4a_)) + var + _a4b_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_202500$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_244300); + else + var + _a4c_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$182), + _a4d_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a4c_), + _a4e_=caml_call1(Runtime_ocaml_Runtime[69],_a4d_), + _a4f_=caml_call1(Runtime_ocaml_Runtime[31],cst_41800), + _a4g_=caml_call2(Runtime_ocaml_Runtime[104],_a4f_,_a4e_), + _a4h_=caml_call1(Runtime_ocaml_Runtime[31],cst_286100), + _a4b_=caml_call2(Runtime_ocaml_Runtime[93],_a4h_,_a4g_); + break; + case 1: + var _a4i_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$255); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a4i_)) + var + _a4b_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_180700) + :caml_call1(Runtime_ocaml_Runtime[31],cst_217500); + else + var + _a4j_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$183), + _a4k_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a4j_), + _a4l_=caml_call1(Runtime_ocaml_Runtime[69],_a4k_), + _a4m_=caml_call1(Runtime_ocaml_Runtime[31],cst_36800), + _a4n_=caml_call2(Runtime_ocaml_Runtime[104],_a4m_,_a4l_), + _a4o_=caml_call1(Runtime_ocaml_Runtime[31],cst_254300), + _a4b_=caml_call2(Runtime_ocaml_Runtime[93],_a4o_,_a4n_); + break; + default: + var _a4p_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$256); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a4p_)) + var + _a4b_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_168700) + :caml_call1(Runtime_ocaml_Runtime[31],cst_202300); + else + var + _a4q_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$184), + _a4r_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a4q_), + _a4s_=caml_call1(Runtime_ocaml_Runtime[69],_a4r_), + _a4t_=caml_call1(Runtime_ocaml_Runtime[31],cst_33600), + _a4u_=caml_call2(Runtime_ocaml_Runtime[104],_a4t_,_a4s_), + _a4v_=caml_call1(Runtime_ocaml_Runtime[31],cst_235900), + _a4b_=caml_call2(Runtime_ocaml_Runtime[93],_a4v_,_a4u_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_a4b_,taux_francs_vers_euros)} + function _a3Z_(param$0) + {switch(type_pret[0]) + {case 0:var _a30_=0;break; + case 1:var _a30_=1;break; + case 2:var _a30_=0;break; + case 3:var _a30_=0;break; + default:var _a30_=0} + var + _a31_=0 === anciennete_logement[0]?1:0, + _a32_=caml_call2(Runtime_ocaml_Runtime[83],_a31_,_a30_), + _a33_=caml_call3(Runtime_ocaml_Runtime[57],2001,12,31), + _a34_=caml_call2(Runtime_ocaml_Runtime[114],param,_a33_), + _a35_=caml_call2(Runtime_ocaml_Runtime[83],_a34_,_a32_), + _a36_=caml_call3(Runtime_ocaml_Runtime[57],2001,7,1), + _a37_=caml_call2(Runtime_ocaml_Runtime[129],param,_a36_), + _a38_=caml_call2(Runtime_ocaml_Runtime[83],_a37_,_a35_), + _a39_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a3__= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a39_), + _a3$_=caml_call2(Runtime_ocaml_Runtime[83],_a3__,_a38_); + return caml_call2(Runtime_ocaml_Runtime[29],_xY_,_a3$_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xZ_,[0],_a3Z_,_a3Y_)} + function _a0u_(param$0) + {function _a3o_(param) + {switch(zone[0]) + {case 0: + var _a3C_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$257); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a3C_)) + var + _a3D_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_161100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_194400); + else + var + _a3E_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$185), + _a3F_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a3E_), + _a3G_=caml_call1(Runtime_ocaml_Runtime[69],_a3F_), + _a3H_=caml_call1(Runtime_ocaml_Runtime[31],cst_33300), + _a3I_=caml_call2(Runtime_ocaml_Runtime[104],_a3H_,_a3G_), + _a3J_=caml_call1(Runtime_ocaml_Runtime[31],cst_227700), + _a3D_=caml_call2(Runtime_ocaml_Runtime[93],_a3J_,_a3I_); + break; + case 1: + var _a3K_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$258); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a3K_)) + var + _a3D_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_143600) + :caml_call1(Runtime_ocaml_Runtime[31],cst_172900); + else + var + _a3L_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$186), + _a3M_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a3L_), + _a3N_=caml_call1(Runtime_ocaml_Runtime[69],_a3M_), + _a3O_=caml_call1(Runtime_ocaml_Runtime[31],cst_29300), + _a3P_=caml_call2(Runtime_ocaml_Runtime[104],_a3O_,_a3N_), + _a3Q_=caml_call1(Runtime_ocaml_Runtime[31],cst_202200), + _a3D_=caml_call2(Runtime_ocaml_Runtime[93],_a3Q_,_a3P_); + break; + default: + var _a3R_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$259); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a3R_)) + var + _a3D_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_134100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_160900); + else + var + _a3S_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$187), + _a3T_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a3S_), + _a3U_=caml_call1(Runtime_ocaml_Runtime[69],_a3T_), + _a3V_=caml_call1(Runtime_ocaml_Runtime[31],cst_26800), + _a3W_=caml_call2(Runtime_ocaml_Runtime[104],_a3V_,_a3U_), + _a3X_=caml_call1(Runtime_ocaml_Runtime[31],cst_187700), + _a3D_=caml_call2(Runtime_ocaml_Runtime[93],_a3X_,_a3W_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_a3D_,taux_francs_vers_euros)} + function _a3p_(param$0) + {switch(type_pret[0]) + {case 0:var _a3q_=0;break; + case 1:var _a3q_=1;break; + case 2:var _a3q_=0;break; + case 3:var _a3q_=0;break; + default:var _a3q_=0} + var + _a3r_=0 === anciennete_logement[0]?0:1, + _a3s_=caml_call2(Runtime_ocaml_Runtime[83],_a3r_,_a3q_), + _a3t_=caml_call3(Runtime_ocaml_Runtime[57],2001,6,30), + _a3u_=caml_call2(Runtime_ocaml_Runtime[119],param,_a3t_), + _a3v_=caml_call2(Runtime_ocaml_Runtime[83],_a3u_,_a3s_), + _a3w_=caml_call3(Runtime_ocaml_Runtime[57],2000,6,30), + _a3x_=caml_call2(Runtime_ocaml_Runtime[129],param,_a3w_), + _a3y_=caml_call2(Runtime_ocaml_Runtime[83],_a3x_,_a3v_), + _a3z_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a3A_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a3z_), + _a3B_=caml_call2(Runtime_ocaml_Runtime[83],_a3A_,_a3y_); + return caml_call2(Runtime_ocaml_Runtime[29],_x0_,_a3B_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_x1_,[0],_a3p_,_a3o_)} + function _a0v_(param$0) + {function _a2Q_(param) + {switch(zone[0]) + {case 0: + var _a24_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$260); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a24_)) + var + _a25_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_200100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_141400); + else + var + _a26_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$188), + _a27_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a26_), + _a28_=caml_call1(Runtime_ocaml_Runtime[69],_a27_), + _a29_=caml_call1(Runtime_ocaml_Runtime[31],cst_41300), + _a2__=caml_call2(Runtime_ocaml_Runtime[104],_a29_,_a28_), + _a2$_=caml_call1(Runtime_ocaml_Runtime[31],cst_182700), + _a25_=caml_call2(Runtime_ocaml_Runtime[93],_a2$_,_a2__); + break; + case 1: + var _a3a_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$261); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a3a_)) + var + _a25_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_178600) + :caml_call1(Runtime_ocaml_Runtime[31],cst_215000); + else + var + _a3b_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$189), + _a3c_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a3b_), + _a3d_=caml_call1(Runtime_ocaml_Runtime[69],_a3c_), + _a3e_=caml_call1(Runtime_ocaml_Runtime[31],cst_36400), + _a3f_=caml_call2(Runtime_ocaml_Runtime[104],_a3e_,_a3d_), + _a3g_=caml_call1(Runtime_ocaml_Runtime[31],cst_251400), + _a25_=caml_call2(Runtime_ocaml_Runtime[93],_a3g_,_a3f_); + break; + default: + var _a3h_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$262); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a3h_)) + var + _a25_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_166700) + :caml_call1(Runtime_ocaml_Runtime[31],cst_199900); + else + var + _a3i_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$190), + _a3j_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a3i_), + _a3k_=caml_call1(Runtime_ocaml_Runtime[69],_a3j_), + _a3l_=caml_call1(Runtime_ocaml_Runtime[31],cst_33200), + _a3m_=caml_call2(Runtime_ocaml_Runtime[104],_a3l_,_a3k_), + _a3n_=caml_call1(Runtime_ocaml_Runtime[31],cst_233100), + _a25_=caml_call2(Runtime_ocaml_Runtime[93],_a3n_,_a3m_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_a25_,taux_francs_vers_euros)} + function _a2R_(param$0) + {switch(type_pret[0]) + {case 0:var _a2S_=0;break; + case 1:var _a2S_=1;break; + case 2:var _a2S_=0;break; + case 3:var _a2S_=0;break; + default:var _a2S_=0} + var + _a2T_=0 === anciennete_logement[0]?1:0, + _a2U_=caml_call2(Runtime_ocaml_Runtime[83],_a2T_,_a2S_), + _a2V_=caml_call3(Runtime_ocaml_Runtime[57],2001,6,30), + _a2W_=caml_call2(Runtime_ocaml_Runtime[119],param,_a2V_), + _a2X_=caml_call2(Runtime_ocaml_Runtime[83],_a2W_,_a2U_), + _a2Y_=caml_call3(Runtime_ocaml_Runtime[57],2000,6,30), + _a2Z_=caml_call2(Runtime_ocaml_Runtime[129],param,_a2Y_), + _a20_=caml_call2(Runtime_ocaml_Runtime[83],_a2Z_,_a2X_), + _a21_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a22_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a21_), + _a23_=caml_call2(Runtime_ocaml_Runtime[83],_a22_,_a20_); + return caml_call2(Runtime_ocaml_Runtime[29],_x2_,_a23_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_x3_,[0],_a2R_,_a2Q_)} + function _a0w_(param$0) + {function _a2g_(param) + {switch(zone[0]) + {case 0: + var _a2u_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$263); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a2u_)) + var + _a2v_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_159500) + :caml_call1(Runtime_ocaml_Runtime[31],cst_192500); + else + var + _a2w_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$191), + _a2x_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a2w_), + _a2y_=caml_call1(Runtime_ocaml_Runtime[69],_a2x_), + _a2z_=caml_call1(Runtime_ocaml_Runtime[31],cst_33000), + _a2A_=caml_call2(Runtime_ocaml_Runtime[104],_a2z_,_a2y_), + _a2B_=caml_call1(Runtime_ocaml_Runtime[31],cst_225500), + _a2v_=caml_call2(Runtime_ocaml_Runtime[93],_a2B_,_a2A_); + break; + case 1: + var _a2C_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$264); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a2C_)) + var + _a2v_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_142200) + :caml_call1(Runtime_ocaml_Runtime[31],cst_171200); + else + var + _a2D_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$192), + _a2E_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a2D_), + _a2F_=caml_call1(Runtime_ocaml_Runtime[69],_a2E_), + _a2G_=caml_call1(Runtime_ocaml_Runtime[31],cst_29000), + _a2H_=caml_call2(Runtime_ocaml_Runtime[104],_a2G_,_a2F_), + _a2I_=caml_call1(Runtime_ocaml_Runtime[31],cst_200200), + _a2v_=caml_call2(Runtime_ocaml_Runtime[93],_a2I_,_a2H_); + break; + default: + var _a2J_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$265); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a2J_)) + var + _a2v_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_132800) + :caml_call1(Runtime_ocaml_Runtime[31],cst_159300); + else + var + _a2K_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$193), + _a2L_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a2K_), + _a2M_=caml_call1(Runtime_ocaml_Runtime[69],_a2L_), + _a2N_=caml_call1(Runtime_ocaml_Runtime[31],cst_26500), + _a2O_=caml_call2(Runtime_ocaml_Runtime[104],_a2N_,_a2M_), + _a2P_=caml_call1(Runtime_ocaml_Runtime[31],cst_185800$0), + _a2v_=caml_call2(Runtime_ocaml_Runtime[93],_a2P_,_a2O_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_a2v_,taux_francs_vers_euros)} + function _a2h_(param$0) + {switch(type_pret[0]) + {case 0:var _a2i_=0;break; + case 1:var _a2i_=1;break; + case 2:var _a2i_=0;break; + case 3:var _a2i_=0;break; + default:var _a2i_=0} + var + _a2j_=0 === anciennete_logement[0]?0:1, + _a2k_=caml_call2(Runtime_ocaml_Runtime[83],_a2j_,_a2i_), + _a2l_=caml_call3(Runtime_ocaml_Runtime[57],2000,6,30), + _a2m_=caml_call2(Runtime_ocaml_Runtime[114],param,_a2l_), + _a2n_=caml_call2(Runtime_ocaml_Runtime[83],_a2m_,_a2k_), + _a2o_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), + _a2p_=caml_call2(Runtime_ocaml_Runtime[129],param,_a2o_), + _a2q_=caml_call2(Runtime_ocaml_Runtime[83],_a2p_,_a2n_), + _a2r_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a2s_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a2r_), + _a2t_=caml_call2(Runtime_ocaml_Runtime[83],_a2s_,_a2q_); + return caml_call2(Runtime_ocaml_Runtime[29],_x4_,_a2t_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_x5_,[0],_a2h_,_a2g_)} + function _a0x_(param$0) + {function _a1I_(param) + {switch(zone[0]) + {case 0: + var _a1W_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$266); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a1W_)) + var + _a1X_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_198100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_239000); + else + var + _a1Y_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$194), + _a1Z_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a1Y_), + _a10_=caml_call1(Runtime_ocaml_Runtime[69],_a1Z_), + _a11_=caml_call1(Runtime_ocaml_Runtime[31],cst_40900), + _a12_=caml_call2(Runtime_ocaml_Runtime[104],_a11_,_a10_), + _a13_=caml_call1(Runtime_ocaml_Runtime[31],cst_279900), + _a1X_=caml_call2(Runtime_ocaml_Runtime[93],_a13_,_a12_); + break; + case 1: + var _a14_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$267); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a14_)) + var + _a1X_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_176800) + :caml_call1(Runtime_ocaml_Runtime[31],cst_212800); + else + var + _a15_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$195), + _a16_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a15_), + _a17_=caml_call1(Runtime_ocaml_Runtime[69],_a16_), + _a18_=caml_call1(Runtime_ocaml_Runtime[31],cst_36000), + _a19_=caml_call2(Runtime_ocaml_Runtime[104],_a18_,_a17_), + _a1__=caml_call1(Runtime_ocaml_Runtime[31],cst_248800), + _a1X_=caml_call2(Runtime_ocaml_Runtime[93],_a1__,_a19_); + break; + default: + var _a1$_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$268); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a1$_)) + var + _a1X_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_165000) + :caml_call1(Runtime_ocaml_Runtime[31],cst_197900); + else + var + _a2a_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$196), + _a2b_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a2a_), + _a2c_=caml_call1(Runtime_ocaml_Runtime[69],_a2b_), + _a2d_=caml_call1(Runtime_ocaml_Runtime[31],cst_32900), + _a2e_=caml_call2(Runtime_ocaml_Runtime[104],_a2d_,_a2c_), + _a2f_=caml_call1(Runtime_ocaml_Runtime[31],cst_230800), + _a1X_=caml_call2(Runtime_ocaml_Runtime[93],_a2f_,_a2e_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_a1X_,taux_francs_vers_euros)} + function _a1J_(param$0) + {switch(type_pret[0]) + {case 0:var _a1K_=0;break; + case 1:var _a1K_=1;break; + case 2:var _a1K_=0;break; + case 3:var _a1K_=0;break; + default:var _a1K_=0} + var + _a1L_=0 === anciennete_logement[0]?1:0, + _a1M_=caml_call2(Runtime_ocaml_Runtime[83],_a1L_,_a1K_), + _a1N_=caml_call3(Runtime_ocaml_Runtime[57],2000,6,30), + _a1O_=caml_call2(Runtime_ocaml_Runtime[114],param,_a1N_), + _a1P_=caml_call2(Runtime_ocaml_Runtime[83],_a1O_,_a1M_), + _a1Q_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), + _a1R_=caml_call2(Runtime_ocaml_Runtime[129],param,_a1Q_), + _a1S_=caml_call2(Runtime_ocaml_Runtime[83],_a1R_,_a1P_), + _a1T_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a1U_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a1T_), + _a1V_=caml_call2(Runtime_ocaml_Runtime[83],_a1U_,_a1S_); + return caml_call2(Runtime_ocaml_Runtime[29],_x6_,_a1V_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_x7_,[0],_a1J_,_a1I_)} + function _a0y_(param$0) + {function _a0__(param) + {switch(zone[0]) + {case 0: + var _a1m_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$269); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a1m_)) + var + _a1n_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_167800$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_202500$1); + else + var + _a1o_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$197), + _a1p_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a1o_), + _a1q_=caml_call1(Runtime_ocaml_Runtime[69],_a1p_), + _a1r_=caml_call1(Runtime_ocaml_Runtime[31],cst_34700$0), + _a1s_=caml_call2(Runtime_ocaml_Runtime[104],_a1r_,_a1q_), + _a1t_=caml_call1(Runtime_ocaml_Runtime[31],cst_237200$0), + _a1n_=caml_call2(Runtime_ocaml_Runtime[93],_a1t_,_a1s_); + break; + case 1: + var _a1u_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$270); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a1u_)) + var + _a1n_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_149600$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_180100$0); + else + var + _a1v_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$198), + _a1w_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a1v_), + _a1x_=caml_call1(Runtime_ocaml_Runtime[69],_a1w_), + _a1y_=caml_call1(Runtime_ocaml_Runtime[31],cst_30500$2), + _a1z_=caml_call2(Runtime_ocaml_Runtime[104],_a1y_,_a1x_), + _a1A_=caml_call1(Runtime_ocaml_Runtime[31],cst_210600$0), + _a1n_=caml_call2(Runtime_ocaml_Runtime[93],_a1A_,_a1z_); + break; + default: + var _a1B_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$271); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a1B_)) + var + _a1n_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_139700$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_167600$0); + else + var + _a1C_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$199), + _a1D_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a1C_), + _a1E_=caml_call1(Runtime_ocaml_Runtime[69],_a1D_), + _a1F_=caml_call1(Runtime_ocaml_Runtime[31],cst_27900$0), + _a1G_=caml_call2(Runtime_ocaml_Runtime[104],_a1F_,_a1E_), + _a1H_=caml_call1(Runtime_ocaml_Runtime[31],cst_195500$0), + _a1n_=caml_call2(Runtime_ocaml_Runtime[93],_a1H_,_a1G_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_a1n_,taux_francs_vers_euros)} + function _a0$_(param$0) + {switch(type_pret[0]) + {case 0:var _a1a_=0;break; + case 1:var _a1a_=1;break; + case 2:var _a1a_=0;break; + case 3:var _a1a_=0;break; + default:var _a1a_=0} + var + _a1b_=0 === anciennete_logement[0]?0:1, + _a1c_=caml_call2(Runtime_ocaml_Runtime[83],_a1b_,_a1a_), + _a1d_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), + _a1e_=caml_call2(Runtime_ocaml_Runtime[114],param,_a1d_), + _a1f_=caml_call2(Runtime_ocaml_Runtime[83],_a1e_,_a1c_), + _a1g_=caml_call3(Runtime_ocaml_Runtime[57],1992,6,30), + _a1h_=caml_call2(Runtime_ocaml_Runtime[129],param,_a1g_), + _a1i_=caml_call2(Runtime_ocaml_Runtime[83],_a1h_,_a1f_), + _a1j_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a1k_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a1j_), + _a1l_=caml_call2(Runtime_ocaml_Runtime[83],_a1k_,_a1i_); + return caml_call2(Runtime_ocaml_Runtime[29],_x8_,_a1l_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_x9_,[0],_a0$_,_a0__)} + var + _a0z_= + [0, + function(param$0) + {function _a0A_(param) + {switch(zone[0]) + {case 0: + var _a0O_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$272); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a0O_)) + var + _a0P_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_208500$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_251500$0); + else + var + _a0Q_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$200), + _a0R_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a0Q_), + _a0S_=caml_call1(Runtime_ocaml_Runtime[69],_a0R_), + _a0T_=caml_call1(Runtime_ocaml_Runtime[31],cst_43000$0), + _a0U_=caml_call2(Runtime_ocaml_Runtime[104],_a0T_,_a0S_), + _a0V_=caml_call1(Runtime_ocaml_Runtime[31],cst_294500$0), + _a0P_=caml_call2(Runtime_ocaml_Runtime[93],_a0V_,_a0U_); + break; + case 1: + var _a0W_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$273); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a0W_)) + var + _a0P_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_186000$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_223900$0); + else + var + _a0X_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$201), + _a0Y_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a0X_), + _a0Z_=caml_call1(Runtime_ocaml_Runtime[69],_a0Y_), + _a00_=caml_call1(Runtime_ocaml_Runtime[31],cst_37900$0), + _a01_=caml_call2(Runtime_ocaml_Runtime[104],_a00_,_a0Z_), + _a02_=caml_call1(Runtime_ocaml_Runtime[31],cst_261800$0), + _a0P_=caml_call2(Runtime_ocaml_Runtime[93],_a02_,_a01_); + break; + default: + var _a03_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$274); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a03_)) + var + _a0P_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_173600$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_208200$0); + else + var + _a04_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$202), + _a05_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a04_), + _a06_=caml_call1(Runtime_ocaml_Runtime[69],_a05_), + _a07_=caml_call1(Runtime_ocaml_Runtime[31],cst_34600), + _a08_=caml_call2(Runtime_ocaml_Runtime[104],_a07_,_a06_), + _a09_=caml_call1(Runtime_ocaml_Runtime[31],cst_242800$0), + _a0P_=caml_call2(Runtime_ocaml_Runtime[93],_a09_,_a08_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_a0P_,taux_francs_vers_euros)} + function _a0B_(param$0) + {switch(type_pret[0]) + {case 0:var _a0C_=0;break; + case 1:var _a0C_=1;break; + case 2:var _a0C_=0;break; + case 3:var _a0C_=0;break; + default:var _a0C_=0} + var + _a0D_=0 === anciennete_logement[0]?1:0, + _a0E_=caml_call2(Runtime_ocaml_Runtime[83],_a0D_,_a0C_), + _a0F_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), + _a0G_=caml_call2(Runtime_ocaml_Runtime[114],param,_a0F_), + _a0H_=caml_call2(Runtime_ocaml_Runtime[83],_a0G_,_a0E_), + _a0I_=caml_call3(Runtime_ocaml_Runtime[57],1992,6,30), + _a0J_=caml_call2(Runtime_ocaml_Runtime[129],param,_a0I_), + _a0K_=caml_call2(Runtime_ocaml_Runtime[83],_a0J_,_a0H_), + _a0L_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a0M_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a0L_), + _a0N_=caml_call2(Runtime_ocaml_Runtime[83],_a0M_,_a0K_); + return caml_call2(Runtime_ocaml_Runtime[29],_x__,_a0N_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_x$_,[0],_a0B_,_a0A_)}, + _a0y_, + _a0x_, + _a0w_, + _a0v_, + _a0u_, + _a0t_, + _a0s_, + _a0r_, + _a0q_, + _a0p_, + _a0o_, + _a0n_, + _a0m_, + _a0l_, + _a0k_, + _a0j_, + _a0i_, + _a0h_, + _a0g_, + _a0f_, + _a0e_, + _a0d_, + _a0c_, + _a0b_, + _a0a_, + _aZ$_, + _aZ__, + _aZ9_, + _aZ8_, + _aZ7_, + _aZ6_, + _aZ5_, + _aZ4_, + _aZ3_, + _aZ2_, + _aZ1_, + _aZ0_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_ya_,_a0z_,_aZZ_,_aZY_)} + function _aZz_(param){return 1} + var + _aZA_= + [0, + function(param$0) + {function _aZB_(param) + {var _aZQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$275); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aZQ_)) + var + _aZR_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_86900) + :caml_call1(Runtime_ocaml_Runtime[31],cst_97100); + else + var + _aZS_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$203), + _aZT_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aZS_), + _aZU_=caml_call1(Runtime_ocaml_Runtime[69],_aZT_), + _aZV_=caml_call1(Runtime_ocaml_Runtime[31],cst_10200), + _aZW_=caml_call2(Runtime_ocaml_Runtime[104],_aZV_,_aZU_), + _aZX_=caml_call1(Runtime_ocaml_Runtime[31],cst_107300), + _aZR_=caml_call2(Runtime_ocaml_Runtime[93],_aZX_,_aZW_); + return caml_call2 + (Runtime_ocaml_Runtime[104],_aZR_,taux_francs_vers_euros)} + function _aZC_(param$0) + {switch(type_pret[0]) + {case 0:var _aZD_=0;break; + case 1:var _aZD_=1;break; + case 2:var _aZD_=0;break; + case 3:var _aZD_=0;break; + default:var _aZD_=0} + if(0 === anciennete_logement[0]) + var _aZE_=0; + else + var + ameliore_par_occupant=anciennete_logement[1], + _aZP_=0 === ameliore_par_occupant[0]?1:0, + _aZE_=_aZP_; + var + _aZF_=caml_call2(Runtime_ocaml_Runtime[83],_aZE_,_aZD_), + _aZG_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), + _aZH_=caml_call2(Runtime_ocaml_Runtime[119],param,_aZG_), + _aZI_=caml_call2(Runtime_ocaml_Runtime[83],_aZH_,_aZF_), + _aZJ_=caml_call3(Runtime_ocaml_Runtime[57],1992,6,30), + _aZK_=caml_call2(Runtime_ocaml_Runtime[129],param,_aZJ_), + _aZL_=caml_call2(Runtime_ocaml_Runtime[83],_aZK_,_aZI_), + _aZM_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), + _aZN_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aZM_), + _aZO_=caml_call2(Runtime_ocaml_Runtime[83],_aZN_,_aZL_); + return caml_call2(Runtime_ocaml_Runtime[29],_yb_,_aZO_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_yc_,[0],_aZC_,_aZB_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_yd_,_aZA_,_aZz_,_aZy_)}, + _aZu_], + _aZw_=caml_call4(Runtime_ocaml_Runtime[63],_ye_,_aZv_,_aZt_,_aZs_); + return _aZw_} + catch(_aZx_) + {_aZx_ = caml_wrap_exception(_aZx_); + if(_aZx_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_wP_]; + throw _aZx_}} + var + calcul_plafond_mensualite_d832= + caml_call3 + (Runtime_ocaml_Runtime[28],_yf_,Runtime_ocaml_Runtime[10],_aWH_); + try + {var + _aWI_=function(param){return calcul_nombre_parts_dot_n_nomb}, + _aWJ_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yh_,1)}, + _aWK_=caml_call4(Runtime_ocaml_Runtime[63],_yi_,[0],_aWJ_,_aWI_)} + catch(_aZr_) + {_aZr_ = caml_wrap_exception(_aZr_); + if(_aZr_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_yg_]; + throw _aZr_} + var + n_nombre_parts_d832_11= + caml_call3 + (Runtime_ocaml_Runtime[28],_yj_,Runtime_ocaml_Runtime[15],_aWK_); + function _aWL_(param) + {try + {var + _aZh_= + function(param$0) + {return caml_call2 + (Runtime_ocaml_Runtime[98],mensualite_principale,param)}, + _aZi_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_yl_,1)}, + _aZj_= + [0, + function(param$0) + {function _aZm_(param$0) + {var + _aZq_= + caml_call2 + (Runtime_ocaml_Runtime[93], + mensualite_principale, + montant_forfaitaire_charges_d8); + return caml_call2(Runtime_ocaml_Runtime[98],_aZq_,param)} + function _aZn_(param) + {var + _aZo_=caml_call3(Runtime_ocaml_Runtime[57],1999,6,30), + _aZp_= + caml_call2 + (Runtime_ocaml_Runtime[129],date_signature_pret,_aZo_); + return caml_call2(Runtime_ocaml_Runtime[29],_ym_,_aZp_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_yn_,[0],_aZn_,_aZm_)}], + _aZk_=caml_call4(Runtime_ocaml_Runtime[63],_yo_,_aZj_,_aZi_,_aZh_); + return _aZk_} + catch(_aZl_) + {_aZl_ = caml_wrap_exception(_aZl_); + if(_aZl_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_yk_]; + throw _aZl_}} + var + depense_nette_minimale_d832_10= + caml_call3 + (Runtime_ocaml_Runtime[28],_yp_,Runtime_ocaml_Runtime[10],_aWL_); + try + {var + _aWM_= + function(param) + {var + _aZe_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _yr_, + Runtime_ocaml_Runtime[16], + date_signature_pret), + _aZf_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _ys_, + calcul_plafond_mensualite_d832), + _aZe_), + _aZg_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _yt_, + Runtime_ocaml_Runtime[13], + _aZf_); + return caml_call2(Runtime_ocaml_Runtime[27],_yu_,_aZg_)}, + _aWN_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yv_,1)}, + _aWO_= + [0, + function(param) + {function _aY8_(param) + {var + _aY__= + caml_call3 + (Runtime_ocaml_Runtime[28], + _yw_, + Runtime_ocaml_Runtime[16], + date_signature_pret), + _aY$_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _yx_, + calcul_plafond_mensualite_d832), + _aY__), + _aZa_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _yy_, + Runtime_ocaml_Runtime[13], + _aY$_), + plafond_signature= + caml_call2(Runtime_ocaml_Runtime[27],_yz_,_aZa_), + _aZb_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _yA_, + Runtime_ocaml_Runtime[16], + date_entree_logement), + _aZc_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _yB_, + calcul_plafond_mensualite_d832), + _aZb_), + _aZd_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _yC_, + Runtime_ocaml_Runtime[13], + _aZc_), + plafond_entree= + caml_call2(Runtime_ocaml_Runtime[27],_yD_,_aZd_); + return caml_call2 + (Runtime_ocaml_Runtime[112], + plafond_signature, + plafond_entree) + ?plafond_entree + :plafond_signature} + function _aY9_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29], + _yE_, + local_habite_premiere_fois_ben)} + return caml_call4(Runtime_ocaml_Runtime[63],_yF_,[0],_aY9_,_aY8_)}], + _aWP_=caml_call4(Runtime_ocaml_Runtime[63],_yG_,_aWO_,_aWN_,_aWM_)} + catch(_aY7_) + {_aY7_ = caml_wrap_exception(_aY7_); + if(_aY7_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_yq_]; + throw _aY7_} + var + plafond_mensualite_d832_10_3_b= + caml_call3 + (Runtime_ocaml_Runtime[28],_yH_,Runtime_ocaml_Runtime[13],_aWP_); + try + {var + _aWQ_=function(param){return ressources_menage_arrondies}, + _aWR_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yJ_,1)}, + _aWS_=caml_call4(Runtime_ocaml_Runtime[63],_yK_,[0],_aWR_,_aWQ_), + calcul_equivalence_loyer_minim$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_yL_,Runtime_ocaml_Runtime[13],_aWS_)} + catch(_aY6_) + {_aY6_ = caml_wrap_exception(_aY6_); + if(_aY6_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_yI_]; + throw _aY6_} + try + {var + _aWT_=function(param){return 0}, + _aWU_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yN_,1)}, + _aWV_=caml_call4(Runtime_ocaml_Runtime[63],_yO_,[0],_aWU_,_aWT_), + calcul_equivalence_loyer_minim$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_yP_,Runtime_ocaml_Runtime[12],_aWV_)} + catch(_aY5_) + {_aY5_ = caml_wrap_exception(_aY5_); + if(_aY5_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_yM_]; + throw _aY5_} + try + {var + _aWW_=function(param){return n_nombre_parts_d832_11}, + _aWX_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yR_,1)}, + _aWY_=caml_call4(Runtime_ocaml_Runtime[63],_yS_,[0],_aWX_,_aWW_), + calcul_equivalence_loyer_minim$2= + caml_call3 + (Runtime_ocaml_Runtime[28],_yT_,Runtime_ocaml_Runtime[15],_aWY_)} + catch(_aY4_) + {_aY4_ = caml_wrap_exception(_aY4_); + if(_aY4_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_yQ_]; + throw _aY4_} + var + _aWZ_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_yU_,calcul_equivalence_loyer_minim), + [0, + calcul_equivalence_loyer_minim$0, + calcul_equivalence_loyer_minim$1, + calcul_equivalence_loyer_minim$2]), + result$1=caml_call2(Runtime_ocaml_Runtime[27],_yV_,_aWZ_), + calcul_equivalence_loyer_minim$3=result$1[1]; + try + {var + _aW0_= + function(param) + {var + _aY1_= + caml_call2 + (Runtime_ocaml_Runtime[104], + coefficient_multiplicateur_d83, + n_nombre_parts_d832_11), + _aY2_= + caml_call2 + (Runtime_ocaml_Runtime[108],ressources_menage_arrondies,_aY1_), + _aY3_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$2); + return caml_call2(Runtime_ocaml_Runtime[97],_aY3_,_aY2_)}, + _aW1_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yX_,1)}, + _aW2_=caml_call4(Runtime_ocaml_Runtime[63],_yY_,[0],_aW1_,_aW0_)} + catch(_aY0_) + {_aY0_ = caml_wrap_exception(_aY0_); + if(_aY0_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_yW_]; + throw _aY0_} + var + coefficient_prise_en_charge_d8= + caml_call3 + (Runtime_ocaml_Runtime[28],_yZ_,Runtime_ocaml_Runtime[15],_aW2_); + function _aW3_(param) + {try + {var + _aYR_= + function(param$0) + {var + _aYV_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _y1_, + Runtime_ocaml_Runtime[13], + param), + _aYW_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _y2_, + depense_nette_minimale_d832_10), + _aYV_), + _aYX_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _y3_, + Runtime_ocaml_Runtime[13], + _aYW_), + depense_nette_minimale= + caml_call2(Runtime_ocaml_Runtime[27],_y4_,_aYX_), + _aYY_= + caml_call2 + (Runtime_ocaml_Runtime[104], + ressources_menage_avec_d832_18, + coefficient_multiplicateur_d83$1); + if + (caml_call2 + (Runtime_ocaml_Runtime[117],depense_nette_minimale,_aYY_)) + {var + _aYZ_= + caml_call2 + (Runtime_ocaml_Runtime[104], + ressources_menage_avec_d832_18, + coefficient_multiplicateur_d83$1); + return caml_call2 + (Runtime_ocaml_Runtime[98],_aYZ_,depense_nette_minimale)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$276)}, + _aYS_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_y5_,1)}, + _aYT_=caml_call4(Runtime_ocaml_Runtime[63],_y6_,[0],_aYS_,_aYR_); + return _aYT_} + catch(_aYU_) + {_aYU_ = caml_wrap_exception(_aYU_); + if(_aYU_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_y0_]; + throw _aYU_}} + var + abattement_depense_nette_minim= + caml_call3 + (Runtime_ocaml_Runtime[28],_y7_,Runtime_ocaml_Runtime[10],_aW3_); + try + {var + _aW4_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aW5_=function(param){return 0}, + _aW6_= + [0, + function(param) + {function _aYu_(param) + {if(copropriete) + {var _aYQ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$8); + return caml_call2 + (Runtime_ocaml_Runtime[104], + plafond_mensualite_d832_10_3_b, + _aYQ_)} + return plafond_mensualite_d832_10_3_b} + function _aYv_(param) + {var + _aYO_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aYP_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aYO_); + return caml_call2(Runtime_ocaml_Runtime[29],_y9_,_aYP_)} + var + _aYw_= + [0, + function(param) + {function _aYx_(param) + {if(copropriete) + {var _aYN_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$9); + return caml_call2 + (Runtime_ocaml_Runtime[104], + plafond_mensualite_d832_10_3_b, + _aYN_)} + return plafond_mensualite_d832_10_3_b} + function _aYy_(param) + {var + _aYI_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aYJ_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aYI_), + _aYK_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _aYL_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aYK_), + _aYM_=caml_call2(Runtime_ocaml_Runtime[83],_aYL_,_aYJ_); + return caml_call2(Runtime_ocaml_Runtime[29],_y__,_aYM_)} + var + _aYz_= + [0, + function(param) + {function _aYA_(param) + {if(copropriete) + {var + _aYH_= + caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$10); + return caml_call2 + (Runtime_ocaml_Runtime[104], + plafond_mensualite_d832_10_3_b, + _aYH_)} + return plafond_mensualite_d832_10_3_b} + function _aYB_(param) + {var + _aYC_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _aYD_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aYC_), + _aYE_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _aYF_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aYE_), + _aYG_=caml_call2(Runtime_ocaml_Runtime[83],_aYF_,_aYD_); + return caml_call2(Runtime_ocaml_Runtime[29],_y$_,_aYG_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_za_,[0],_aYB_,_aYA_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_zb_,_aYz_,_aYy_,_aYx_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_zc_,_aYw_,_aYv_,_aYu_)}], + _aW7_=caml_call4(Runtime_ocaml_Runtime[63],_zd_,_aW6_,_aW5_,_aW4_)} + catch(_aYt_) + {_aYt_ = caml_wrap_exception(_aYt_); + if(_aYt_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_y8_]; + throw _aYt_} + var + plafond_mensualite_d832_10_3_c= + caml_call3 + (Runtime_ocaml_Runtime[28],_ze_,Runtime_ocaml_Runtime[13],_aW7_); + try + {var + _aW8_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aW9_=function(param){return 0}, + _aW__= + function(param) + {function _aYq_(param){return calcul_equivalence_loyer_minim$3} + function _aYr_(param) + {switch(type_travaux_logement[0]) + {case 0:var _aYs_=0;break; + case 1:var _aYs_=1;break; + default:var _aYs_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_zg_,_aYs_)} + return caml_call4(Runtime_ocaml_Runtime[63],_zh_,[0],_aYr_,_aYq_)}, + _aW$_= + [0, + function(param) + {function _aYb_(param) + {var + ressources_menage_arrondies$0= + caml_call1 + (Runtime_ocaml_Runtime[70],ressources_menage_arrondies), + montant_limite_tranches_d832_1$0= + caml_call1 + (Runtime_ocaml_Runtime[70],montant_limite_tranches_d832_1), + _aYg_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$14), + _aYh_= + caml_call2 + (Runtime_ocaml_Runtime[103], + montant_limite_tranches_d832_1$0, + n_nombre_parts_d832_11); + if + (caml_call2 + (Runtime_ocaml_Runtime[116], + ressources_menage_arrondies$0, + _aYh_)) + var + _aYi_= + caml_call2 + (Runtime_ocaml_Runtime[103], + ressources_menage_arrondies$0, + taux_tranche_inferieure_d832_1); + else + var + _aYp_= + caml_call2 + (Runtime_ocaml_Runtime[103], + montant_limite_tranches_d832_1$0, + n_nombre_parts_d832_11), + _aYi_= + caml_call2 + (Runtime_ocaml_Runtime[103], + _aYp_, + taux_tranche_inferieure_d832_1); + var + _aYj_= + caml_call2 + (Runtime_ocaml_Runtime[103], + montant_limite_tranches_d832_1$0, + n_nombre_parts_d832_11); + if + (caml_call2 + (Runtime_ocaml_Runtime[126], + ressources_menage_arrondies$0, + _aYj_)) + var + _aYk_= + caml_call2 + (Runtime_ocaml_Runtime[103], + montant_limite_tranches_d832_1$0, + n_nombre_parts_d832_11), + _aYl_= + caml_call2 + (Runtime_ocaml_Runtime[97], + ressources_menage_arrondies$0, + _aYk_), + _aYm_= + caml_call2 + (Runtime_ocaml_Runtime[103], + _aYl_, + taux_tranche_superieure_d832_1); + else + var _aYm_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$277); + var + _aYn_=caml_call2(Runtime_ocaml_Runtime[92],_aYm_,_aYi_), + _aYo_=caml_call2(Runtime_ocaml_Runtime[107],_aYn_,_aYg_); + return caml_call1(Runtime_ocaml_Runtime[71],_aYo_)} + function _aYc_(param) + {switch(type_travaux_logement[0]) + {case 0:var _aYd_=0;break; + case 1:var _aYd_=0;break; + default:var _aYd_=1} + switch(type_travaux_logement[0]) + {case 0:var _aYe_=1;break; + case 1:var _aYe_=0;break; + default:var _aYe_=0} + var _aYf_=caml_call2(Runtime_ocaml_Runtime[84],_aYe_,_aYd_); + return caml_call2(Runtime_ocaml_Runtime[29],_zi_,_aYf_)} + return caml_call4(Runtime_ocaml_Runtime[63],_zj_,[0],_aYc_,_aYb_)}, + _aW__], + _aXa_=caml_call4(Runtime_ocaml_Runtime[63],_zk_,_aW$_,_aW9_,_aW8_)} + catch(_aYa_) + {_aYa_ = caml_wrap_exception(_aYa_); + if(_aYa_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_zf_]; + throw _aYa_} + var + mensualite_minimale= + caml_call3 + (Runtime_ocaml_Runtime[28],_zl_,Runtime_ocaml_Runtime[13],_aXa_); + try + {var + _aXb_= + function(param) + {var + _aX6_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$9), + _aX7_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$10), + _aX8_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_005$2), + _aX9_= + caml_call2 + (Runtime_ocaml_Runtime[97], + coefficient_prise_en_charge_d8, + _aX8_), + _aX__=caml_call2(Runtime_ocaml_Runtime[103],_aX9_,_aX7_), + _aX$_=caml_call1(Runtime_ocaml_Runtime[78],_aX__); + return caml_call2(Runtime_ocaml_Runtime[107],_aX$_,_aX6_)}, + _aXc_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_zn_,1)}, + _aXd_=caml_call4(Runtime_ocaml_Runtime[63],_zo_,[0],_aXc_,_aXb_)} + catch(_aX5_) + {_aX5_ = caml_wrap_exception(_aX5_); + if(_aX5_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_zm_]; + throw _aX5_} + var + coefficient_prise_en_charge_d8$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_zp_,Runtime_ocaml_Runtime[15],_aXd_); + function _aXe_(param) + {try + {var + _aXT_= + function(param$0) + {var + _aXX_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _zr_, + Runtime_ocaml_Runtime[13], + param), + _aXY_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _zs_, + traitement_aide_finale_minorat), + _aXX_), + _aXZ_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _zt_, + Runtime_ocaml_Runtime[13], + _aXY_), + aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_zu_,_aXZ_), + _aX0_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _zv_, + Runtime_ocaml_Runtime[13], + aide_finale), + _aX1_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _zw_, + abattement_depense_nette_minim), + _aX0_), + _aX2_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _zx_, + Runtime_ocaml_Runtime[13], + _aX1_), + _aX3_=caml_call2(Runtime_ocaml_Runtime[27],_zy_,_aX2_), + aide_finale$0= + caml_call2(Runtime_ocaml_Runtime[98],aide_finale,_aX3_), + _aX4_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$278); + return caml_call2 + (Runtime_ocaml_Runtime[127],aide_finale$0,_aX4_) + ?aide_finale$0 + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$279)}, + _aXU_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_zz_,1)}, + _aXV_=caml_call4(Runtime_ocaml_Runtime[63],_zA_,[0],_aXU_,_aXT_); + return _aXV_} + catch(_aXW_) + {_aXW_ = caml_wrap_exception(_aXW_); + if(_aXW_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_zq_]; + throw _aXW_}} + var + traitement_aide_finale_abattem= + caml_call3 + (Runtime_ocaml_Runtime[28],_zB_,Runtime_ocaml_Runtime[10],_aXe_); + try + {var + _aXf_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[122], + mensualite_principale, + plafond_mensualite_d832_10_3_c) + ?plafond_mensualite_d832_10_3_c + :mensualite_principale}, + _aXg_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_zD_,1)}, + _aXh_=caml_call4(Runtime_ocaml_Runtime[63],_zE_,[0],_aXg_,_aXf_)} + catch(_aXS_) + {_aXS_ = caml_wrap_exception(_aXS_); + if(_aXS_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_zC_]; + throw _aXS_} + var + mensualite_eligible= + caml_call3 + (Runtime_ocaml_Runtime[28],_zF_,Runtime_ocaml_Runtime[13],_aXh_); + try + {var + _aXi_= + function(param) + {var _aXR_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$3); + return caml_call2 + (Runtime_ocaml_Runtime[126], + coefficient_prise_en_charge_d8$0, + _aXR_) + ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$4) + :coefficient_prise_en_charge_d8$0}, + _aXj_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_zH_,1)}, + _aXk_=caml_call4(Runtime_ocaml_Runtime[63],_zI_,[0],_aXj_,_aXi_)} + catch(_aXQ_) + {_aXQ_ = caml_wrap_exception(_aXQ_); + if(_aXQ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_zG_]; + throw _aXQ_} + var + coefficient_prise_en_charge_d8$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_zJ_,Runtime_ocaml_Runtime[15],_aXk_); + function _aXl_(param) + {try + {var + _aXB_= + function(param$0) + {var + _aXF_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _zL_, + Runtime_ocaml_Runtime[13], + param), + _aXG_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _zM_, + traitement_aide_finale_abattem), + _aXF_), + _aXH_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _zN_, + Runtime_ocaml_Runtime[13], + _aXG_), + aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_zO_,_aXH_), + _aXI_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _zP_, + Runtime_ocaml_Runtime[13], + aide_finale), + _aXJ_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _zQ_, + contributions_sociales_dot_mon), + _aXI_), + _aXK_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _zR_, + Runtime_ocaml_Runtime[13], + _aXJ_), + crds=caml_call2(Runtime_ocaml_Runtime[27],_zS_,_aXK_), + _aXL_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$1), + _aXM_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale,crds), + _aXN_=caml_call2(Runtime_ocaml_Runtime[98],_aXM_,_aXL_), + aide_finale_moins_crds_arrondi= + caml_call1(Runtime_ocaml_Runtime[77],_aXN_), + _aXO_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$280), + _aXP_= + caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds); + return caml_call2(Runtime_ocaml_Runtime[127],_aXP_,_aXO_) + ?caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$281)}, + _aXC_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_zT_,1)}, + _aXD_=caml_call4(Runtime_ocaml_Runtime[63],_zU_,[0],_aXC_,_aXB_); + return _aXD_} + catch(_aXE_) + {_aXE_ = caml_wrap_exception(_aXE_); + if(_aXE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_zK_]; + throw _aXE_}} + var + traitement_aide_finale_contrib= + caml_call3 + (Runtime_ocaml_Runtime[28],_zV_,Runtime_ocaml_Runtime[10],_aXl_); + try + {var + _aXm_= + function(param) + {var + _aXy_= + caml_call2 + (Runtime_ocaml_Runtime[93], + mensualite_eligible, + montant_forfaitaire_charges_d8), + _aXz_= + caml_call2(Runtime_ocaml_Runtime[98],_aXy_,mensualite_minimale), + aide_finale= + caml_call2 + (Runtime_ocaml_Runtime[104], + _aXz_, + coefficient_prise_en_charge_d8$1), + _aXA_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$282); + return caml_call2(Runtime_ocaml_Runtime[112],aide_finale,_aXA_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$283) + :aide_finale}, + _aXn_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_zX_,1)}, + _aXo_=caml_call4(Runtime_ocaml_Runtime[63],_zY_,[0],_aXn_,_aXm_)} + catch(_aXx_) + {_aXx_ = caml_wrap_exception(_aXx_); + if(_aXx_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_zW_]; + throw _aXx_} + var + aide_finale_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_zZ_,Runtime_ocaml_Runtime[13],_aXo_); + function _aXp_(param) + {try + {var + _aXq_= + function(param$0) + {var + _aXu_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _z1_, + Runtime_ocaml_Runtime[13], + param), + _aXv_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _z2_, + traitement_aide_finale_contrib), + _aXu_), + _aXw_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _z3_, + Runtime_ocaml_Runtime[13], + _aXv_), + aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_z4_,_aXw_); + return caml_call2 + (Runtime_ocaml_Runtime[112], + aide_finale, + montant_minimal_aide_d832_10) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$284) + :aide_finale}, + _aXr_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_z5_,1)}, + _aXs_=caml_call4(Runtime_ocaml_Runtime[63],_z6_,[0],_aXr_,_aXq_); + return _aXs_} + catch(_aXt_) + {_aXt_ = caml_wrap_exception(_aXt_); + if(_aXt_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_z0_]; + throw _aXt_}} + var + traitement_aide_finale_montant= + caml_call3 + (Runtime_ocaml_Runtime[28],_z7_,Runtime_ocaml_Runtime[10],_aXp_); + return [0, + mensualite_eligible, + mensualite_minimale, + coefficient_prise_en_charge_d8$1, + aide_finale_formule, + traitement_aide_finale_montant]} + function eligibilite_aides_personnelle_(eligibilite_aides_personnelle_) + {var + menage=eligibilite_aides_personnelle_[1], + demandeur=eligibilite_aides_personnelle_[2], + date_courante=eligibilite_aides_personnelle_[3], + condition_logement_residence_p=eligibilite_aides_personnelle_[4], + condition_logement_surface=eligibilite_aides_personnelle_[5]; + function _aQU_(param) + {try + {var + _aVU_=function(param){return 0}, + _aVV_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_z9_,1)}, + _aVW_=caml_call4(Runtime_ocaml_Runtime[63],_z__,[0],_aVV_,_aVU_); + return _aVW_} + catch(_aVX_) + {_aVX_ = caml_wrap_exception(_aVX_); + if(_aVX_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_z8_]; + throw _aVX_}} + caml_call3 + (Runtime_ocaml_Runtime[28],_z$_,Runtime_ocaml_Runtime[10],_aQU_); + try + {var + _aQV_=function(param){return 0}, + _aQW_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ab_,1)}, + _aQX_=caml_call4(Runtime_ocaml_Runtime[63],_Ac_,[0],_aQW_,_aQV_)} + catch(_aVT_) + {_aVT_ = caml_wrap_exception(_aVT_); + if(_aVT_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Aa_]; + throw _aVT_} + caml_call3 + (Runtime_ocaml_Runtime[28],_Ad_,Runtime_ocaml_Runtime[12],_aQX_); + try + {var + _aQY_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_1)}, + _aQZ_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Af_,1)}, + _aQ0_=caml_call4(Runtime_ocaml_Runtime[63],_Ag_,[0],_aQZ_,_aQY_)} + catch(_aVS_) + {_aVS_ = caml_wrap_exception(_aVS_); + if(_aVS_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ae_]; + throw _aVS_} + var + seuil_l822_3_parts_propriete= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ah_,Runtime_ocaml_Runtime[15],_aQ0_); + try + {var + _aQ1_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_1$0)}, + _aQ2_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Aj_,1)}, + _aQ3_=caml_call4(Runtime_ocaml_Runtime[63],_Ak_,[0],_aQ2_,_aQ1_)} + catch(_aVR_) + {_aVR_ = caml_wrap_exception(_aVR_); + if(_aVR_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ai_]; + throw _aVR_} + var + seuil_l822_3_parts_usufruit= + caml_call3 + (Runtime_ocaml_Runtime[28],_Al_,Runtime_ocaml_Runtime[15],_aQ3_); + try + {var + _aQ4_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_3000000)}, + _aQ5_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_An_,1)}, + _aQ6_=caml_call4(Runtime_ocaml_Runtime[63],_Ao_,[0],_aQ5_,_aQ4_)} + catch(_aVQ_) + {_aVQ_ = caml_wrap_exception(_aVQ_); + if(_aVQ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Am_]; + throw _aVQ_} + var + seuil_l822_5_patrimoine= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ap_,Runtime_ocaml_Runtime[13],_aQ6_); + try + {var + _aQ7_= + function(param) + {var + _aVO_=0 === menage[2][6][0]?1:0, + _aVP_=0 === menage[2][4][0]?1:0; + return caml_call2(Runtime_ocaml_Runtime[84],_aVP_,_aVO_)}, + _aQ8_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ar_,1)}, + _aQ9_=caml_call4(Runtime_ocaml_Runtime[63],_As_,[0],_aQ8_,_aQ7_)} + catch(_aVN_) + {_aVN_ = caml_wrap_exception(_aVN_); + if(_aVN_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Aq_]; + throw _aVN_} + var + usufruit_ou_propriete_famille= + caml_call3 + (Runtime_ocaml_Runtime[28],_At_,Runtime_ocaml_Runtime[12],_aQ9_); + try + {var + _aQ__=function(param){return 0}, + _aQ$_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Av_,1)}, + _aRa_= + [0, + function(param) + {function _aVK_(param){return 1} + function _aVL_(param) + {var _aVM_=caml_call1(Runtime_ocaml_Runtime[67],menage[2][7]); + return caml_call2(Runtime_ocaml_Runtime[29],_Aw_,_aVM_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Ax_,[0],_aVL_,_aVK_)}], + _aRb_=caml_call4(Runtime_ocaml_Runtime[63],_Ay_,_aRa_,_aQ$_,_aQ__)} + catch(_aVJ_) + {_aVJ_ = caml_wrap_exception(_aVJ_); + if(_aVJ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Au_]; + throw _aVJ_} + var + condition_non_ouverture_l822_9= + caml_call3 + (Runtime_ocaml_Runtime[28],_Az_,Runtime_ocaml_Runtime[12],_aRb_); + try + {var + _aRc_=function(param){return 0}, + _aRd_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_AB_,1)}, + _aRe_= + [0, + function(param) + {function _aVH_(param){return 1} + function _aVI_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_AC_,menage[6])} + return caml_call4(Runtime_ocaml_Runtime[63],_AD_,[0],_aVI_,_aVH_)}], + _aRf_=caml_call4(Runtime_ocaml_Runtime[63],_AE_,_aRe_,_aRd_,_aRc_)} + catch(_aVG_) + {_aVG_ = caml_wrap_exception(_aVG_); + if(_aVG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_AA_]; + throw _aVG_} + var + condition_non_ouverture_l822_8= + caml_call3 + (Runtime_ocaml_Runtime[28],_AF_,Runtime_ocaml_Runtime[12],_aRf_); + try + {var + _aRg_= + function(param) + {function _aVm_(param){return 0} + function _aVn_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_AH_,1)} + var + _aVo_= + [0, + function(param) + {function _aVp_(param){return 1} + function _aVq_(param) + {var + _aVr_=caml_call1(Runtime_ocaml_Runtime[68],menage[3]), + _aVs_=menage[4]; + switch(menage[5][0]) + {case 0: + var _aVt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$204); + break; + case 1: + var _aVt_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$41); + break; + case 2: + var _aVt_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$42); + break; + case 3: + var _aVt_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$43); + break; + case 4: + var _aVt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$205); + break; + default: + var _aVt_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$44)} + var + _aVu_=caml_call2(Runtime_ocaml_Runtime[91],_aVt_,_aVs_), + nombre_personnes_logement= + caml_call2(Runtime_ocaml_Runtime[91],_aVu_,_aVr_), + _aVv_=caml_call1(Runtime_ocaml_Runtime[46],cst_9), + _aVw_=caml_call1(Runtime_ocaml_Runtime[68],menage[3]), + _aVx_=caml_call2(Runtime_ocaml_Runtime[91],menage[4],_aVw_), + _aVy_=caml_call2(Runtime_ocaml_Runtime[102],_aVx_,_aVv_); + switch(menage[5][0]) + {case 0: + var _aVz_=caml_call1(Runtime_ocaml_Runtime[46],cst_9$0); + break; + case 1: + var _aVz_=caml_call1(Runtime_ocaml_Runtime[46],cst_16); + break; + case 2: + var _aVz_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$0); + break; + case 3: + var _aVz_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$1); + break; + case 4: + var _aVz_=caml_call1(Runtime_ocaml_Runtime[46],cst_9$1); + break; + default: + var _aVz_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$2)} + var + condition_logement_surface_min= + caml_call2(Runtime_ocaml_Runtime[91],_aVz_,_aVy_), + _aVA_=caml_call1(Runtime_ocaml_Runtime[46],cst_8), + _aVB_= + caml_call2 + (Runtime_ocaml_Runtime[125],nombre_personnes_logement,_aVA_), + _aVC_=caml_call1(Runtime_ocaml_Runtime[46],cst_70), + _aVD_= + caml_call2 + (Runtime_ocaml_Runtime[125], + condition_logement_surface_min, + _aVC_); + if(caml_call2(Runtime_ocaml_Runtime[83],_aVD_,_aVB_)) + var + _aVE_=caml_call1(Runtime_ocaml_Runtime[46],cst_70$0), + _aVF_= + caml_call2(Runtime_ocaml_Runtime[125],menage[2][8],_aVE_); + else + var + _aVF_= + caml_call2 + (Runtime_ocaml_Runtime[125], + menage[2][8], + condition_logement_surface_min); + return caml_call2(Runtime_ocaml_Runtime[29],_AI_,_aVF_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_AJ_,[0],_aVq_,_aVp_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_AK_,_aVo_,_aVn_,_aVm_)}, + _aRh_=function(param){return 1}, + _aRi_= + [0,function(param){return caml_call1(condition_logement_surface,0)}], + _aRj_=caml_call4(Runtime_ocaml_Runtime[63],_AL_,_aRi_,_aRh_,_aRg_)} + catch(_aVl_) + {_aVl_ = caml_wrap_exception(_aVl_); + if(_aVl_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_AG_]; + throw _aVl_} + var + condition_logement_surface$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_AM_,Runtime_ocaml_Runtime[12],_aRj_); + try + {var + _aRk_= + function(param) + {function _aVg_(param){return 0} + function _aVh_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_AO_,1)} + var + _aVi_= + [0, + function(param) + {function _aVj_(param){return 1} + function _aVk_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_AP_,menage[2][1])} + return caml_call4 + (Runtime_ocaml_Runtime[63],_AQ_,[0],_aVk_,_aVj_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_AR_,_aVi_,_aVh_,_aVg_)}, + _aRl_=function(param){return 1}, + _aRm_= + [0, + function(param) + {return caml_call1(condition_logement_residence_p,0)}], + _aRn_=caml_call4(Runtime_ocaml_Runtime[63],_AS_,_aRm_,_aRl_,_aRk_)} + catch(_aVf_) + {_aVf_ = caml_wrap_exception(_aVf_); + if(_aVf_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_AN_]; + throw _aVf_} + var + condition_logement_residence_p$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_AT_,Runtime_ocaml_Runtime[12],_aRn_); + try + {var + _aRo_=function(param){return demandeur[1]}, + _aRp_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_AV_,1)}, + _aRq_=caml_call4(Runtime_ocaml_Runtime[63],_AW_,[0],_aRp_,_aRo_), + ouverture_droits_retraite_dot_= + caml_call3 + (Runtime_ocaml_Runtime[28],_AX_,Runtime_ocaml_Runtime[16],_aRq_)} + catch(_aVe_) + {_aVe_ = caml_wrap_exception(_aVe_); + if(_aVe_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_AU_]; + throw _aVe_} + var + _aRr_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_AY_,ouverture_droits_retraite), + [0,ouverture_droits_retraite_dot_]), + result=caml_call2(Runtime_ocaml_Runtime[27],_AZ_,_aRr_), + ouverture_droits_retraite_dot_$0=result[1]; + try + {var + _aRs_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[93],demandeur[3][1],demandeur[3][2])}, + _aRt_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_A1_,1)}, + _aRu_=caml_call4(Runtime_ocaml_Runtime[63],_A2_,[0],_aRt_,_aRs_)} + catch(_aVd_) + {_aVd_ = caml_wrap_exception(_aVd_); + if(_aVd_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_A0_]; + throw _aVd_} + var + patrimoine_total_demandeur= + caml_call3 + (Runtime_ocaml_Runtime[28],_A3_,Runtime_ocaml_Runtime[13],_aRu_); + try + {var + _aRv_=function(param){return 0}, + _aRw_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_A5_,1)}, + _aRx_= + [0, + function(param) + {function _aU$_(param){return 1} + function _aVa_(param) + {var _aVb_=demandeur[2]; + if(0 === _aVb_[0]) + var _aVc_=1; + else + var conditions=_aVb_[1],_aVc_=conditions[1]; + return caml_call2(Runtime_ocaml_Runtime[29],_A6_,_aVc_)} + return caml_call4(Runtime_ocaml_Runtime[63],_A7_,[0],_aVa_,_aU$_)}], + _aRy_=caml_call4(Runtime_ocaml_Runtime[63],_A8_,_aRx_,_aRw_,_aRv_)} + catch(_aU__) + {_aU__ = caml_wrap_exception(_aU__); + if(_aU__ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_A4_]; + throw _aU__} + var + condition_nationalite= + caml_call3 + (Runtime_ocaml_Runtime[28],_A9_,Runtime_ocaml_Runtime[12],_aRy_); + try + {var + _aRz_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aRA_=function(param){return 0}, + _aRB_= + function(param) + {function _aU3_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1088175)} + function _aU4_(param) + {var + _aU5_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), + _aU6_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aU5_), + _aU7_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), + _aU8_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aU7_), + _aU9_=caml_call2(Runtime_ocaml_Runtime[83],_aU8_,_aU6_); + return caml_call2(Runtime_ocaml_Runtime[29],_A$_,_aU9_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Ba_,[0],_aU4_,_aU3_)}, + _aRC_= + function(param) + {function _aUW_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1100144)} + function _aUX_(param) + {var + _aUY_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), + _aUZ_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aUY_), + _aU0_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), + _aU1_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aU0_), + _aU2_=caml_call2(Runtime_ocaml_Runtime[83],_aU1_,_aUZ_); + return caml_call2(Runtime_ocaml_Runtime[29],_Bb_,_aU2_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Bc_,[0],_aUX_,_aUW_)}, + _aRD_= + function(param) + {function _aUP_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1153302)} + function _aUQ_(param) + {var + _aUR_=caml_call3(Runtime_ocaml_Runtime[57],2024,1,1), + _aUS_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aUR_), + _aUT_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), + _aUU_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aUT_), + _aUV_=caml_call2(Runtime_ocaml_Runtime[83],_aUU_,_aUS_); + return caml_call2(Runtime_ocaml_Runtime[29],_Bd_,_aUV_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Be_,[0],_aUQ_,_aUP_)}, + _aRE_= + function(param) + {function _aUI_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1083840)} + function _aUJ_(param) + {var + _aUK_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), + _aUL_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aUK_), + _aUM_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,4), + _aUN_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aUM_), + _aUO_=caml_call2(Runtime_ocaml_Runtime[83],_aUN_,_aUL_); + return caml_call2(Runtime_ocaml_Runtime[29],_Bf_,_aUO_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Bg_,[0],_aUJ_,_aUI_)}, + _aRF_= + function(param) + {function _aUB_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1041840)} + function _aUC_(param) + {var + _aUD_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aUE_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aUD_), + _aUF_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _aUG_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aUF_), + _aUH_=caml_call2(Runtime_ocaml_Runtime[83],_aUG_,_aUE_); + return caml_call2(Runtime_ocaml_Runtime[29],_Bh_,_aUH_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Bi_,[0],_aUC_,_aUB_)}, + _aRG_= + [0, + function(param) + {function _aUu_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_999840)} + function _aUv_(param) + {var + _aUw_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _aUx_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aUw_), + _aUy_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,4), + _aUz_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aUy_), + _aUA_=caml_call2(Runtime_ocaml_Runtime[83],_aUz_,_aUx_); + return caml_call2(Runtime_ocaml_Runtime[29],_Bj_,_aUA_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Bk_,[0],_aUv_,_aUu_)}, + _aRF_, + _aRE_, + _aRD_, + _aRC_, + _aRB_], + _aRH_=caml_call4(Runtime_ocaml_Runtime[63],_Bl_,_aRG_,_aRA_,_aRz_)} + catch(_aUt_) + {_aUt_ = caml_wrap_exception(_aUt_); + if(_aUt_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_A__]; + throw _aUt_} + var + plafond_individuel_l815_9_secu= + caml_call3 + (Runtime_ocaml_Runtime[28],_Bm_,Runtime_ocaml_Runtime[13],_aRH_); + try + {var + _aRI_=function(param){return 0}, + _aRJ_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Bo_,1)}, + _aRK_= + [0, + function(param) + {function _aUh_(param){return 0} + function _aUi_(param) + {var _aUs_=0 === menage[2][5][0]?1:0; + return caml_call2(Runtime_ocaml_Runtime[29],_Bp_,_aUs_)} + var + _aUj_= + [0, + function(param) + {function _aUk_(param){return 1} + function _aUl_(param) + {var _aUm_=menage[2][5]; + if(0 === _aUm_[0]) + var _aUn_=1; + else + var + personne=_aUm_[1], + _aUo_=personne[2], + _aUp_=caml_call3(Runtime_ocaml_Runtime[60],30,0,0), + _aUq_= + caml_call2(Runtime_ocaml_Runtime[94],personne[1],_aUp_), + _aUr_= + caml_call2(Runtime_ocaml_Runtime[124],_aUq_,date_courante), + _aUn_=caml_call2(Runtime_ocaml_Runtime[84],_aUr_,_aUo_); + return caml_call2(Runtime_ocaml_Runtime[29],_Bq_,_aUn_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Br_,[0],_aUl_,_aUk_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Bs_,_aUj_,_aUi_,_aUh_)}], + _aRL_=caml_call4(Runtime_ocaml_Runtime[63],_Bt_,_aRK_,_aRJ_,_aRI_)} + catch(_aUg_) + {_aUg_ = caml_wrap_exception(_aUg_); + if(_aUg_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Bn_]; + throw _aUg_} + var + condition_logement_location_ti= + caml_call3 + (Runtime_ocaml_Runtime[28],_Bu_,Runtime_ocaml_Runtime[12],_aRL_); + try + {var + _aRM_=function(param){return 0}, + _aRN_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Bw_,1)}, + _aRO_= + [0, + function(param) + {function _aT3_(param){return 1} + function _aT4_(param) + {switch(menage[2][3][0]) + {case 0:var _aUf_=1;break; + case 1:var _aUf_=1;break; + case 2:var _aUf_=menage[2][1];break; + case 3:var _aUf_=1;break; + default:var _aUf_=1} + return caml_call2(Runtime_ocaml_Runtime[29],_Bx_,_aUf_)} + var + _aT5_= + [0, + function(param) + {function _aT6_(param){return 0} + function _aT7_(param) + {switch(menage[2][3][0]) + {case 0: + var + usufruit_ou_propriete_famille$0= + usufruit_ou_propriete_famille; + break; + case 1:var usufruit_ou_propriete_famille$0=0;break; + case 2:var usufruit_ou_propriete_famille$0=0;break; + case 3:var usufruit_ou_propriete_famille$0=0;break; + default:var usufruit_ou_propriete_famille$0=0} + return caml_call2 + (Runtime_ocaml_Runtime[29], + _By_, + usufruit_ou_propriete_famille$0)} + var + _aT8_= + [0, + function(param) + {function _aT9_(param){return 1} + function _aT__(param) + {var _aT$_=menage[2][6]; + if(0 === _aT$_[0]) + var parts=_aT$_[1],parts$0=parts; + else + var parts$0=caml_call1(Runtime_ocaml_Runtime[39],cst_0$286); + var + _aUa_= + caml_call2 + (Runtime_ocaml_Runtime[111], + parts$0, + seuil_l822_3_parts_usufruit), + _aUb_=menage[2][4]; + if(0 === _aUb_[0]) + var parts$1=_aUb_[1],parts$2=parts$1; + else + var parts$2=caml_call1(Runtime_ocaml_Runtime[39],cst_0$285); + var + _aUc_= + caml_call2 + (Runtime_ocaml_Runtime[111], + parts$2, + seuil_l822_3_parts_propriete), + _aUd_=caml_call2(Runtime_ocaml_Runtime[83],_aUc_,_aUa_), + _aUe_= + caml_call2 + (Runtime_ocaml_Runtime[83], + usufruit_ou_propriete_famille, + _aUd_); + return caml_call2(Runtime_ocaml_Runtime[29],_Bz_,_aUe_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_BA_,[0],_aT__,_aT9_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_BB_,_aT8_,_aT7_,_aT6_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_BC_,_aT5_,_aT4_,_aT3_)}], + _aRP_=caml_call4(Runtime_ocaml_Runtime[63],_BD_,_aRO_,_aRN_,_aRM_)} + catch(_aT2_) + {_aT2_ = caml_wrap_exception(_aT2_); + if(_aT2_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Bv_]; + throw _aT2_} + var + condition_logement_mode_occupa= + caml_call3 + (Runtime_ocaml_Runtime[28],_BE_,Runtime_ocaml_Runtime[12],_aRP_); + try + {var + _aRQ_=function(param){return 0}, + _aRR_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_BG_,1)}, + _aRS_= + [0, + function(param) + {function _aT0_(param){return 1} + function _aT1_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29], + _BH_, + condition_logement_surface$0)} + return caml_call4(Runtime_ocaml_Runtime[63],_BI_,[0],_aT1_,_aT0_)}], + _aRT_=caml_call4(Runtime_ocaml_Runtime[63],_BJ_,_aRS_,_aRR_,_aRQ_)} + catch(_aTZ_) + {_aTZ_ = caml_wrap_exception(_aTZ_); + if(_aTZ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_BF_]; + throw _aTZ_} + var + condition_ouverture_l822_10_pe= + caml_call3 + (Runtime_ocaml_Runtime[28],_BK_,Runtime_ocaml_Runtime[12],_aRT_); + try + {var + _aRU_=function(param){return ouverture_droits_retraite_dot_$0}, + _aRV_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_BM_,1)}, + _aRW_=caml_call4(Runtime_ocaml_Runtime[63],_BN_,[0],_aRV_,_aRU_)} + catch(_aTY_) + {_aTY_ = caml_wrap_exception(_aTY_); + if(_aTY_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_BL_]; + throw _aTY_} + var + age_l161_17_2_secu= + caml_call3 + (Runtime_ocaml_Runtime[28],_BO_,Runtime_ocaml_Runtime[17],_aRW_); + try + {var + _aRX_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[122], + patrimoine_total_demandeur, + seuil_l822_5_patrimoine) + ?patrimoine_total_demandeur + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$287)}, + _aRY_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_BQ_,1)}, + _aRZ_= + [0, + function(param) + {function _aTI_(param){return demandeur[3][2]} + function _aTJ_(param) + {var + _aTX_= + caml_call2 + (Runtime_ocaml_Runtime[127], + patrimoine_total_demandeur, + seuil_l822_5_patrimoine); + return caml_call2(Runtime_ocaml_Runtime[29],_BR_,_aTX_)} + var + _aTK_= + [0, + function(param) + {function _aTL_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$288)} + function _aTM_(param) + {var _aTQ_=menage[1],_aTR_=0; + function _aTS_(acc,prestation) + {var + _aTU_=caml_call2(Runtime_ocaml_Runtime[86],prestation,_BS_), + _aTV_=caml_call2(Runtime_ocaml_Runtime[86],prestation,_BT_), + _aTW_=caml_call2(Runtime_ocaml_Runtime[84],_aTV_,_aTU_); + return caml_call2(Runtime_ocaml_Runtime[84],acc,_aTW_)} + var + _aTT_= + caml_call3(Runtime_ocaml_Runtime[135],_aTS_,_aTR_,_aTQ_); + return caml_call2(Runtime_ocaml_Runtime[29],_BU_,_aTT_)} + var + _aTN_= + [0, + function(param) + {function _aTO_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$289)} + function _aTP_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_BV_,menage[2][2])} + return caml_call4 + (Runtime_ocaml_Runtime[63],_BW_,[0],_aTP_,_aTO_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_BX_,_aTN_,_aTM_,_aTL_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_BY_,_aTK_,_aTJ_,_aTI_)}], + _aR0_=caml_call4(Runtime_ocaml_Runtime[63],_BZ_,_aRZ_,_aRY_,_aRX_)} + catch(_aTH_) + {_aTH_ = caml_wrap_exception(_aTH_); + if(_aTH_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_BP_]; + throw _aTH_} + caml_call3 + (Runtime_ocaml_Runtime[28],_B0_,Runtime_ocaml_Runtime[13],_aR0_); + try + {var + _aR1_=function(param){return 0}, + _aR2_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_B2_,1)}, + _aR3_= + [0, + function(param) + {function _aTy_(param){return 1} + function _aTz_(param) + {var + _aTE_= + caml_call2 + (Runtime_ocaml_Runtime[83], + condition_logement_location_ti, + condition_ouverture_l822_10_pe), + _aTF_= + caml_call2 + (Runtime_ocaml_Runtime[83], + condition_logement_mode_occupa, + _aTE_), + _aTG_= + caml_call2 + (Runtime_ocaml_Runtime[83], + condition_logement_residence_p$0, + _aTF_); + return caml_call2(Runtime_ocaml_Runtime[29],_B3_,_aTG_)} + var + _aTA_= + [0, + function(param) + {function _aTB_(param){return 0} + function _aTC_(param) + {var + _aTD_= + caml_call2 + (Runtime_ocaml_Runtime[84], + condition_non_ouverture_l822_8, + condition_non_ouverture_l822_9); + return caml_call2(Runtime_ocaml_Runtime[29],_B4_,_aTD_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_B5_,[0],_aTC_,_aTB_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_B6_,_aTA_,_aTz_,_aTy_)}], + _aR4_=caml_call4(Runtime_ocaml_Runtime[63],_B7_,_aR3_,_aR2_,_aR1_)} + catch(_aTx_) + {_aTx_ = caml_wrap_exception(_aTx_); + if(_aTx_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_B1_]; + throw _aTx_} + var + eligibilite_logement= + caml_call3 + (Runtime_ocaml_Runtime[28],_B8_,Runtime_ocaml_Runtime[12],_aR4_); + try + {var + _aR5_= + function(param) + {var _aTw_=caml_call3(Runtime_ocaml_Runtime[60],5,0,0); + return caml_call2 + (Runtime_ocaml_Runtime[95],age_l161_17_2_secu,_aTw_)}, + _aR6_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_B__,1)}, + _aR7_=caml_call4(Runtime_ocaml_Runtime[63],_B$_,[0],_aR6_,_aR5_)} + catch(_aTv_) + {_aTv_ = caml_wrap_exception(_aTv_); + if(_aTv_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_B9_]; + throw _aTv_} + var + age_l351_8_1_secu= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ca_,Runtime_ocaml_Runtime[17],_aR7_); + try + {var + _aR8_=function(param){return 0}, + _aR9_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Cc_,1)}, + _aR__= + [0, + function(param) + {function _aTr_(param){return 1} + function _aTs_(param) + {var + _aTt_= + caml_call2 + (Runtime_ocaml_Runtime[83], + condition_logement_mode_occupa, + eligibilite_logement), + _aTu_= + caml_call2 + (Runtime_ocaml_Runtime[83],condition_nationalite,_aTt_); + return caml_call2(Runtime_ocaml_Runtime[29],_Cd_,_aTu_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Ce_,[0],_aTs_,_aTr_)}], + _aR$_=caml_call4(Runtime_ocaml_Runtime[63],_Cf_,_aR__,_aR9_,_aR8_)} + catch(_aTq_) + {_aTq_ = caml_wrap_exception(_aTq_); + if(_aTq_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Cb_]; + throw _aTq_} + var + eligibilite= + caml_call3 + (Runtime_ocaml_Runtime[28],_Cg_,Runtime_ocaml_Runtime[12],_aR$_); + function _aSa_(param) + {try + {var + _aS3_=function(param){return 0}, + _aS4_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Ci_,1)}, + _aS5_= + [0, + function(param$0) + {function _aS8_(param){return 1} + function _aS9_(param$0) + {if(0 === param[0]) + var _aS__=0; + else + var + parent=param[1], + _aS$_=parent[6], + _aTa_= + caml_call2 + (Runtime_ocaml_Runtime[94],parent[1],age_l161_17_2_secu), + _aTb_= + caml_call2(Runtime_ocaml_Runtime[119],_aTa_,date_courante), + _aTc_=caml_call2(Runtime_ocaml_Runtime[83],_aTb_,_aS$_), + _aTd_=caml_call3(Runtime_ocaml_Runtime[60],65,0,0), + _aTe_=caml_call2(Runtime_ocaml_Runtime[94],parent[1],_aTd_), + _aTf_= + caml_call2(Runtime_ocaml_Runtime[119],_aTe_,date_courante), + _aTg_=caml_call2(Runtime_ocaml_Runtime[83],parent[7],_aTf_), + _aTh_= + caml_call2 + (Runtime_ocaml_Runtime[94],parent[1],age_l351_8_1_secu), + _aTi_= + caml_call2(Runtime_ocaml_Runtime[119],_aTh_,date_courante), + _aTj_=caml_call2(Runtime_ocaml_Runtime[84],_aTi_,_aTg_), + _aTk_=caml_call2(Runtime_ocaml_Runtime[84],_aTj_,_aTc_), + _aTl_=caml_call1(Runtime_ocaml_Runtime[39],cst_1_25), + _aTm_= + caml_call2 + (Runtime_ocaml_Runtime[104], + plafond_individuel_l815_9_secu, + _aTl_), + _aTn_=caml_call2(Runtime_ocaml_Runtime[117],parent[2],_aTm_), + _aTo_=caml_call2(Runtime_ocaml_Runtime[83],_aTn_,_aTk_), + _aTp_=caml_call2(Runtime_ocaml_Runtime[86],parent[4],_Ck_), + _aS__=caml_call2(Runtime_ocaml_Runtime[83],_aTp_,_aTo_); + return caml_call2(Runtime_ocaml_Runtime[29],_Cj_,_aS__)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Cl_,[0],_aS9_,_aS8_)}], + _aS6_=caml_call4(Runtime_ocaml_Runtime[63],_Cm_,_aS5_,_aS4_,_aS3_); + return _aS6_} + catch(_aS7_) + {_aS7_ = caml_wrap_exception(_aS7_); + if(_aS7_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ch_]; + throw _aS7_}} + var + condition_2_r823_4= + caml_call3 + (Runtime_ocaml_Runtime[28],_Cn_,Runtime_ocaml_Runtime[10],_aSa_); + function _aSb_(param) + {try + {var + _aSF_=function(param){return 0}, + _aSG_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Cp_,1)}, + _aSH_= + function(param$0) + {function _aSY_(param){return 1} + function _aSZ_(param$0) + {if(0 === param[0]) + var + enfant=param[1], + _aS0_=caml_call3(Runtime_ocaml_Runtime[60],21,0,0), + _aS1_=caml_call2(Runtime_ocaml_Runtime[94],enfant[4],_aS0_), + _aS2_= + caml_call2(Runtime_ocaml_Runtime[124],_aS1_,date_courante); + else + var _aS2_=0; + return caml_call2(Runtime_ocaml_Runtime[29],_Cq_,_aS2_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Cr_,[0],_aSZ_,_aSY_)}, + _aSI_= + [0, + function(param$0) + {function _aSL_(param){return 1} + function _aSM_(param$0) + {var + _aSU_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Cs_, + embed_personne_a_charge, + param), + _aSV_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Ct_,condition_2_r823_4), + _aSU_), + _aSW_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Cu_, + Runtime_ocaml_Runtime[12], + _aSV_), + _aSX_=caml_call2(Runtime_ocaml_Runtime[27],_Cv_,_aSW_); + return caml_call2(Runtime_ocaml_Runtime[29],_Cw_,_aSX_)} + var + _aSN_= + [0, + function(param$0) + {function _aSO_(param){return 1} + function _aSP_(param$0) + {if(0 === param[0]) + var _aSQ_=0; + else + var + parent=param[1], + _aSR_=caml_call1(Runtime_ocaml_Runtime[39],cst_1_25$0), + _aSS_= + caml_call2 + (Runtime_ocaml_Runtime[104], + plafond_individuel_l815_9_secu, + _aSR_), + _aST_=caml_call2(Runtime_ocaml_Runtime[117],parent[2],_aSS_), + _aSQ_=caml_call2(Runtime_ocaml_Runtime[83],parent[5],_aST_); + return caml_call2(Runtime_ocaml_Runtime[29],_Cx_,_aSQ_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Cy_,[0],_aSP_,_aSO_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Cz_,_aSN_,_aSM_,_aSL_)}, + _aSH_], + _aSJ_=caml_call4(Runtime_ocaml_Runtime[63],_CA_,_aSI_,_aSG_,_aSF_); + return _aSJ_} + catch(_aSK_) + {_aSK_ = caml_wrap_exception(_aSK_); + if(_aSK_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Co_]; + throw _aSK_}} + var + prise_en_compte_personne_a_cha= + caml_call3 + (Runtime_ocaml_Runtime[28],_CB_,Runtime_ocaml_Runtime[10],_aSb_); + try + {var + _aSc_= + function(param) + {var _aSA_=menage[3]; + function _aSB_(personne_a_charge) + {var + _aSC_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _CD_, + embed_personne_a_charge, + personne_a_charge), + _aSD_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _CE_, + prise_en_compte_personne_a_cha), + _aSC_), + _aSE_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _CF_, + Runtime_ocaml_Runtime[12], + _aSD_); + return caml_call2(Runtime_ocaml_Runtime[27],_CG_,_aSE_)} + return caml_call2(Runtime_ocaml_Runtime[90],_aSB_,_aSA_)}, + _aSd_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_CH_,1)}, + _aSe_=caml_call4(Runtime_ocaml_Runtime[63],_CI_,[0],_aSd_,_aSc_)} + catch(_aSz_) + {_aSz_ = caml_wrap_exception(_aSz_); + if(_aSz_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_CC_]; + throw _aSz_} + var + _aSf_=caml_call1(Runtime_ocaml_Runtime[18],embed_personne_a_charge), + personnes_a_charge_prises_en_c= + caml_call3(Runtime_ocaml_Runtime[28],_CJ_,_aSf_,_aSe_); + try + {var + _aSg_= + function(param) + {function _aSv_(personne_a_charge) + {if(0 === personne_a_charge[0]) + {var enfant=personne_a_charge[1];return 0 === enfant[7][0]?0:1} + return 0} + var + _aSw_= + caml_call2 + (Runtime_ocaml_Runtime[90], + _aSv_, + personnes_a_charge_prises_en_c); + function _aSx_(personne_a_charge) + {if(0 === personne_a_charge[0]) + {var enfant=personne_a_charge[1],_aSy_=enfant[7]; + if(0 === _aSy_[0]) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$290); + var coeff=_aSy_[1]; + return coeff} + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$291)} + return caml_call2(Runtime_ocaml_Runtime[87],_aSx_,_aSw_)}, + _aSh_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_CL_,1)}, + _aSi_=caml_call4(Runtime_ocaml_Runtime[63],_CM_,[0],_aSh_,_aSg_)} + catch(_aSu_) + {_aSu_ = caml_wrap_exception(_aSu_); + if(_aSu_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_CK_]; + throw _aSu_} + var + _aSj_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), + coefficents_enfants_garde_alte= + caml_call3(Runtime_ocaml_Runtime[28],_CN_,_aSj_,_aSi_); + try + {var + _aSk_= + function(param) + {return caml_call1 + (Runtime_ocaml_Runtime[68],personnes_a_charge_prises_en_c)}, + _aSl_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_CP_,1)}, + _aSm_=caml_call4(Runtime_ocaml_Runtime[63],_CQ_,[0],_aSl_,_aSk_)} + catch(_aSt_) + {_aSt_ = caml_wrap_exception(_aSt_); + if(_aSt_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_CO_]; + throw _aSt_} + var + nombre_personnes_a_charge_pris= + caml_call3 + (Runtime_ocaml_Runtime[28],_CR_,Runtime_ocaml_Runtime[14],_aSm_); + try + {var + _aSn_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2), + _aSo_= + caml_call2 + (Runtime_ocaml_Runtime[111],seuil_l822_3_parts_usufruit,_aSn_)} + catch(_aSs_) + {_aSs_ = caml_wrap_exception(_aSs_); + if(_aSs_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_CS_]; + throw _aSs_} + if(_aSo_) + {try + {var + _aSp_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2$0), + _aSq_= + caml_call2 + (Runtime_ocaml_Runtime[111],seuil_l822_3_parts_propriete,_aSp_)} + catch(_aSr_) + {_aSr_ = caml_wrap_exception(_aSr_); + if(_aSr_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_CT_]; + throw _aSr_} + if(_aSq_) + return [0, + date_courante, + eligibilite, + nombre_personnes_a_charge_pris, + coefficents_enfants_garde_alte, + condition_2_r823_4]; + throw [0,Runtime_ocaml_Runtime[3],_CU_]} + throw [0,Runtime_ocaml_Runtime[3],_CV_]} + function ressources_aides_personnelle_l(ressources_aides_personnelle_l) + {var + ressources_demandeur=ressources_aides_personnelle_l[1], + ressources_conjoint=ressources_aides_personnelle_l[2], + personnes_vivant_habituellemen=ressources_aides_personnelle_l[3], + demandeur_exerce_activite_remu=ressources_aides_personnelle_l[4], + conjoint_exerce_activite_remun=ressources_aides_personnelle_l[5], + personnes_a_charge=ressources_aides_personnelle_l[6], + situation_familiale=ressources_aides_personnelle_l[7], + mode_occupation=ressources_aides_personnelle_l[8], + condition_age_bourse_enseignem=ressources_aides_personnelle_l[9], + demandeur_poursuit_des_etudes=ressources_aides_personnelle_l[10], + date_demande_ou_reexamen_droit=ressources_aides_personnelle_l[11], + paiement_logement_distinct_pro=ressources_aides_personnelle_l[12]; + try + {var + _aPR_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aPS_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_CX_,0)}, + _aPT_=caml_call4(Runtime_ocaml_Runtime[63],_CY_,[0],_aPS_,_aPR_)} + catch(_aQT_) + {_aQT_ = caml_wrap_exception(_aQT_); + if(_aQT_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_CW_]; + throw _aQT_} + caml_call3 + (Runtime_ocaml_Runtime[28],_CZ_,Runtime_ocaml_Runtime[13],_aPT_); + try + {var + _aPU_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_258900)}, + _aPV_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_C1_,1)}, + _aPW_=caml_call4(Runtime_ocaml_Runtime[63],_C2_,[0],_aPV_,_aPU_)} + catch(_aQS_) + {_aQS_ = caml_wrap_exception(_aQS_); + if(_aQS_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_C0_]; + throw _aQS_} + var + montant_forfaitaire_r_822_8= + caml_call3 + (Runtime_ocaml_Runtime[28],_C3_,Runtime_ocaml_Runtime[13],_aPW_); + try + {var + _aPX_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_9500)}, + _aPY_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_C5_,1)}, + _aPZ_=caml_call4(Runtime_ocaml_Runtime[63],_C6_,[0],_aPY_,_aPX_)} + catch(_aQR_) + {_aQR_ = caml_wrap_exception(_aQR_); + if(_aQR_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_C4_]; + throw _aQR_} + var + montant_forfaitaire_r_822_7= + caml_call3 + (Runtime_ocaml_Runtime[28],_C7_,Runtime_ocaml_Runtime[13],_aPZ_); + try + {var + _aP0_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aP1_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_C9_,0)}, + _aP2_=caml_call4(Runtime_ocaml_Runtime[63],_C__,[0],_aP1_,_aP0_)} + catch(_aQQ_) + {_aQQ_ = caml_wrap_exception(_aQQ_); + if(_aQQ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_C8_]; + throw _aQQ_} + var + ressources_forfaitaires_r822_2= + caml_call3 + (Runtime_ocaml_Runtime[28],_C$_,Runtime_ocaml_Runtime[13],_aP2_); + try + {var + _aP3_= + function(param) + {function _aQM_(personne){return personne[2]} + var + _aQN_= + caml_call2 + (Runtime_ocaml_Runtime[87], + _aQM_, + personnes_vivant_habituellemen), + _aQO_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$292); + function _aQP_(sum1,sum2) + {return caml_call2(Runtime_ocaml_Runtime[93],sum1,sum2)} + return caml_call3(Runtime_ocaml_Runtime[88],_aQP_,_aQO_,_aQN_)}, + _aP4_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Db_,1)}, + _aP5_=caml_call4(Runtime_ocaml_Runtime[63],_Dc_,[0],_aP4_,_aP3_)} + catch(_aQL_) + {_aQL_ = caml_wrap_exception(_aQL_); + if(_aQL_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Da_]; + throw _aQL_} + var + ressources_personnes_vivant_ha= + caml_call3 + (Runtime_ocaml_Runtime[28],_Dd_,Runtime_ocaml_Runtime[13],_aP5_); + try + {var + _aP6_= + function(param) + {var + _aQH_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$293), + _aQI_=caml_call1(Runtime_ocaml_Runtime[68],personnes_a_charge); + if(caml_call2(Runtime_ocaml_Runtime[86],_aQI_,_aQH_)) + var abattement=caml_call1(Runtime_ocaml_Runtime[31],cst_0$294); + else + var + _aQJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$45), + _aQK_=caml_call1(Runtime_ocaml_Runtime[68],personnes_a_charge), + abattement= + caml_call2(Runtime_ocaml_Runtime[115],_aQK_,_aQJ_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_90100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_135000); + switch(situation_familiale[0]) + {case 0:return abattement; + case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$295); + case 2:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$296); + case 3:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$297); + case 4:return abattement; + default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$298)}}, + _aP7_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Df_,1)}, + _aP8_=caml_call4(Runtime_ocaml_Runtime[63],_Dg_,[0],_aP7_,_aP6_)} + catch(_aQG_) + {_aQG_ = caml_wrap_exception(_aQG_); + if(_aQG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_De_]; + throw _aQG_} + caml_call3 + (Runtime_ocaml_Runtime[28],_Dh_,Runtime_ocaml_Runtime[13],_aP8_); + try + {var + _aP9_=function(param){return date_demande_ou_reexamen_droit}, + _aP__= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Dj_,1)}, + _aP$_=caml_call4(Runtime_ocaml_Runtime[63],_Dk_,[0],_aP__,_aP9_), + base_mensuelle_allocations_fam= + caml_call3 + (Runtime_ocaml_Runtime[28],_Dl_,Runtime_ocaml_Runtime[16],_aP$_)} + catch(_aQF_) + {_aQF_ = caml_wrap_exception(_aQF_); + if(_aQF_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Di_]; + throw _aQF_} + var + _aQa_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Dm_,base_mensuelle_allocations_fam$5), + [0,base_mensuelle_allocations_fam]), + result=caml_call2(Runtime_ocaml_Runtime[27],_Dn_,_aQa_), + base_mensuelle_allocations_fam$0=result[1]; + try + {var + _aQb_= + function(param) + {return 0 === paiement_logement_distinct_pro[0] + ?montant_forfaitaire_r_822_8 + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$299)}, + _aQc_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Dp_,1)}, + _aQd_=caml_call4(Runtime_ocaml_Runtime[63],_Dq_,[0],_aQc_,_aQb_)} + catch(_aQE_) + {_aQE_ = caml_wrap_exception(_aQE_); + if(_aQE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Do_]; + throw _aQE_} + caml_call3 + (Runtime_ocaml_Runtime[28],_Dr_,Runtime_ocaml_Runtime[13],_aQd_); + try + {var + _aQe_= + function(param) + {var + _aQD_= + caml_call2 + (Runtime_ocaml_Runtime[93], + ressources_demandeur, + ressources_conjoint); + return caml_call2 + (Runtime_ocaml_Runtime[93], + _aQD_, + ressources_personnes_vivant_ha)}, + _aQf_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Dt_,1)}, + _aQg_= + [0, + function(param) + {function _aQw_(param){return ressources_forfaitaires_r822_2} + function _aQx_(param) + {var + _aQy_= + caml_call2 + (Runtime_ocaml_Runtime[83], + condition_age_bourse_enseignem, + demandeur_poursuit_des_etudes); + switch(mode_occupation[0]) + {case 0:var _aQz_=0;break; + case 1:var _aQz_=1;break; + case 2:var _aQz_=0;break; + case 3:var _aQz_=0;break; + default:var _aQz_=0} + switch(mode_occupation[0]) + {case 0:var _aQA_=1;break; + case 1:var _aQA_=0;break; + case 2:var _aQA_=0;break; + case 3:var _aQA_=0;break; + default:var _aQA_=0} + var + _aQB_=caml_call2(Runtime_ocaml_Runtime[84],_aQA_,_aQz_), + _aQC_=caml_call2(Runtime_ocaml_Runtime[83],_aQB_,_aQy_); + return caml_call2(Runtime_ocaml_Runtime[29],_Du_,_aQC_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Dv_,[0],_aQx_,_aQw_)}], + _aQh_=caml_call4(Runtime_ocaml_Runtime[63],_Dw_,_aQg_,_aQf_,_aQe_)} + catch(_aQv_) + {_aQv_ = caml_wrap_exception(_aQv_); + if(_aQv_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ds_]; + throw _aQv_} + var + ressources_prises_en_compte= + caml_call3 + (Runtime_ocaml_Runtime[28],_Dx_,Runtime_ocaml_Runtime[13],_aQh_); + try + {var + _aQi_= + function(param) + {var + _aQq_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$15), + _aQr_= + caml_call2 + (Runtime_ocaml_Runtime[104], + base_mensuelle_allocations_fam$0, + _aQq_), + _aQs_= + caml_call2 + (Runtime_ocaml_Runtime[93], + ressources_demandeur, + ressources_conjoint), + _aQt_=caml_call2(Runtime_ocaml_Runtime[127],_aQs_,_aQr_), + _aQu_= + caml_call2 + (Runtime_ocaml_Runtime[83], + conjoint_exerce_activite_remun, + _aQt_); + return caml_call2 + (Runtime_ocaml_Runtime[83], + demandeur_exerce_activite_remu, + _aQu_) + ?montant_forfaitaire_r_822_7 + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$300)}, + _aQj_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Dz_,1)}, + _aQk_=caml_call4(Runtime_ocaml_Runtime[63],_DA_,[0],_aQj_,_aQi_)} + catch(_aQp_) + {_aQp_ = caml_wrap_exception(_aQp_); + if(_aQp_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Dy_]; + throw _aQp_} + caml_call3 + (Runtime_ocaml_Runtime[28],_DB_,Runtime_ocaml_Runtime[13],_aQk_); + try + {var + _aQl_=1, + _aQm_= + function(acc,personne) + {return caml_call2(Runtime_ocaml_Runtime[83],acc,personne[1])}, + _aQn_= + caml_call3 + (Runtime_ocaml_Runtime[135], + _aQm_, + _aQl_, + personnes_vivant_habituellemen)} + catch(_aQo_) + {_aQo_ = caml_wrap_exception(_aQo_); + if(_aQo_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_DC_]; + throw _aQo_} + if(_aQn_)return [0,ressources_prises_en_compte]; + throw [0,Runtime_ocaml_Runtime[3],_DD_]} + function eligibilite_prestations_famili(eligibilite_prestations_famili) + {var + date_courante=eligibilite_prestations_famili[1], + residence=eligibilite_prestations_famili[3]; + try + {var + _aOz_= + function(param){return caml_call3(Runtime_ocaml_Runtime[60],20,0,0)}, + _aOA_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DF_,1)}, + _aOB_=caml_call4(Runtime_ocaml_Runtime[63],_DG_,[0],_aOA_,_aOz_)} + catch(_aPQ_) + {_aPQ_ = caml_wrap_exception(_aPQ_); + if(_aPQ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_DE_]; + throw _aPQ_} + var + age_l512_3_2= + caml_call3 + (Runtime_ocaml_Runtime[28],_DH_,Runtime_ocaml_Runtime[17],_aOB_); + try + {var + _aOC_=function(param){return date_courante}, + _aOD_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DJ_,1)}, + _aOE_=caml_call4(Runtime_ocaml_Runtime[63],_DK_,[0],_aOD_,_aOC_), + smic_dot_date_courante= + caml_call3 + (Runtime_ocaml_Runtime[28],_DL_,Runtime_ocaml_Runtime[16],_aOE_)} + catch(_aPP_) + {_aPP_ = caml_wrap_exception(_aPP_); + if(_aPP_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_DI_]; + throw _aPP_} + try + {var + _aOF_=function(param){return residence}, + _aOG_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DN_,1)}, + _aOH_=caml_call4(Runtime_ocaml_Runtime[63],_DO_,[0],_aOG_,_aOF_), + smic_dot_residence= + caml_call3 + (Runtime_ocaml_Runtime[28],_DP_,embed_collectivite$0,_aOH_)} + catch(_aPO_) + {_aPO_ = caml_wrap_exception(_aPO_); + if(_aPO_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_DM_]; + throw _aPO_} + var + _aOI_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_DQ_,smic$1), + [0,smic_dot_date_courante,smic_dot_residence]), + result=caml_call2(Runtime_ocaml_Runtime[27],_DR_,_aOI_), + smic_dot_brut_horaire=result[1]; + try + {var + _aOJ_=function(param){return 0}, + _aOK_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DT_,1)}, + _aOL_= + [0, + function(param) + {function _aPB_(param){return 1} + function _aPC_(param) + {var + _aPD_=caml_call2(Runtime_ocaml_Runtime[86],residence,_DU_), + _aPE_=caml_call2(Runtime_ocaml_Runtime[86],residence,_DV_), + _aPF_=caml_call2(Runtime_ocaml_Runtime[84],_aPE_,_aPD_), + _aPG_=caml_call2(Runtime_ocaml_Runtime[86],residence,_DW_), + _aPH_=caml_call2(Runtime_ocaml_Runtime[84],_aPG_,_aPF_), + _aPI_=caml_call2(Runtime_ocaml_Runtime[86],residence,_DX_), + _aPJ_=caml_call2(Runtime_ocaml_Runtime[84],_aPI_,_aPH_), + _aPK_=caml_call2(Runtime_ocaml_Runtime[86],residence,_DY_), + _aPL_=caml_call2(Runtime_ocaml_Runtime[84],_aPK_,_aPJ_), + _aPM_=caml_call2(Runtime_ocaml_Runtime[86],residence,_DZ_), + _aPN_=caml_call2(Runtime_ocaml_Runtime[84],_aPM_,_aPL_); + return caml_call2(Runtime_ocaml_Runtime[29],_D0_,_aPN_)} + return caml_call4(Runtime_ocaml_Runtime[63],_D1_,[0],_aPC_,_aPB_)}], + _aOM_=caml_call4(Runtime_ocaml_Runtime[63],_D2_,_aOL_,_aOK_,_aOJ_)} + catch(_aPA_) + {_aPA_ = caml_wrap_exception(_aPA_); + if(_aPA_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_DS_]; + throw _aPA_} + var + regime_outre_mer_l751_1= + caml_call3 + (Runtime_ocaml_Runtime[28],_D3_,Runtime_ocaml_Runtime[12],_aOM_); + try + {var + _aON_= + function(param) + {var + _aPx_=caml_call1(Runtime_ocaml_Runtime[39],cst_169$1), + _aPy_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55$1), + _aPz_= + caml_call2 + (Runtime_ocaml_Runtime[104],smic_dot_brut_horaire,_aPy_); + return caml_call2(Runtime_ocaml_Runtime[104],_aPz_,_aPx_)}, + _aOO_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_D5_,1)}, + _aOP_= + [0, + function(param) + {function _aPs_(param) + {var + _aPu_=caml_call1(Runtime_ocaml_Runtime[39],cst_169$2), + _aPv_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55$2), + _aPw_= + caml_call2 + (Runtime_ocaml_Runtime[104],smic_dot_brut_horaire,_aPv_); + return caml_call2(Runtime_ocaml_Runtime[104],_aPw_,_aPu_)} + function _aPt_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_D6_,regime_outre_mer_l751_1)} + return caml_call4(Runtime_ocaml_Runtime[63],_D7_,[0],_aPt_,_aPs_)}], + _aOQ_=caml_call4(Runtime_ocaml_Runtime[63],_D8_,_aOP_,_aOO_,_aON_)} + catch(_aPr_) + {_aPr_ = caml_wrap_exception(_aPr_); + if(_aPr_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_D4_]; + throw _aPr_} + var + plafond_l512_3_2= + caml_call3 + (Runtime_ocaml_Runtime[28],_D9_,Runtime_ocaml_Runtime[13],_aOQ_); + function _aOR_(param) + {try + {var + _aPd_=function(param){return 0}, + _aPe_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_D$_,1)}, + _aPf_= + [0, + function(param$0) + {function _aPi_(param){return 1} + function _aPj_(param$0) + {var + _aPk_= + caml_call2 + (Runtime_ocaml_Runtime[117],param[3],plafond_l512_3_2); + switch(param[2][0]) + {case 0:var _aPl_=0;break; + case 1:var _aPl_=0;break; + default:var _aPl_=1} + switch(param[2][0]) + {case 0:var _aPm_=0;break; + case 1:var _aPm_=1;break; + default:var _aPm_=0} + var _aPn_=caml_call2(Runtime_ocaml_Runtime[84],_aPm_,_aPl_); + switch(param[2][0]) + {case 0:var _aPo_=1;break; + case 1:var _aPo_=0;break; + default:var _aPo_=0} + var + _aPp_=caml_call2(Runtime_ocaml_Runtime[84],_aPo_,_aPn_), + _aPq_=caml_call2(Runtime_ocaml_Runtime[83],_aPp_,_aPk_); + return caml_call2(Runtime_ocaml_Runtime[29],_Ea_,_aPq_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Eb_,[0],_aPj_,_aPi_)}], + _aPg_=caml_call4(Runtime_ocaml_Runtime[63],_Ec_,_aPf_,_aPe_,_aPd_); + return _aPg_} + catch(_aPh_) + {_aPh_ = caml_wrap_exception(_aPh_); + if(_aPh_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_D__]; + throw _aPh_}} + var + conditions_hors_age= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ed_,Runtime_ocaml_Runtime[10],_aOR_); + function _aOS_(param) + {try + {var + _aOT_=function(param){return 0}, + _aOU_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Ef_,1)}, + _aOV_= + [0, + function(param$0) + {function _aOY_(param){throw Runtime_ocaml_Runtime[2]} + function _aOZ_(param){return 0} + var + _aO0_= + [0, + function(param$0) + {function _aO1_(param){return 1} + function _aO2_(param$0) + {switch(param[2][0]) + {case 0:var _aPa_=0;break; + case 1:var _aPa_=1;break; + default:var _aPa_=0} + switch(param[2][0]) + {case 0:var _aPb_=1;break; + case 1:var _aPb_=0;break; + default:var _aPb_=0} + var _aPc_=caml_call2(Runtime_ocaml_Runtime[84],_aPb_,_aPa_); + return caml_call2(Runtime_ocaml_Runtime[29],_Eg_,_aPc_)} + var + _aO3_= + [0, + function(param$0) + {function _aO4_(param){return 1} + function _aO5_(param$0) + {var + _aO6_= + caml_call2(Runtime_ocaml_Runtime[94],param[4],age_l512_3_2), + _aO7_= + caml_call2(Runtime_ocaml_Runtime[124],_aO6_,date_courante), + _aO8_= + caml_call2 + (Runtime_ocaml_Runtime[117],param[3],plafond_l512_3_2), + _aO9_=caml_call2(Runtime_ocaml_Runtime[83],_aO8_,_aO7_); + switch(param[2][0]) + {case 0:var _aO__=0;break; + case 1:var _aO__=0;break; + default:var _aO__=1} + var _aO$_=caml_call2(Runtime_ocaml_Runtime[83],_aO__,_aO9_); + return caml_call2(Runtime_ocaml_Runtime[29],_Eh_,_aO$_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Ei_,[0],_aO5_,_aO4_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Ej_,_aO3_,_aO2_,_aO1_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Ek_,_aO0_,_aOZ_,_aOY_)}], + _aOW_=caml_call4(Runtime_ocaml_Runtime[63],_El_,_aOV_,_aOU_,_aOT_); + return _aOW_} + catch(_aOX_) + {_aOX_ = caml_wrap_exception(_aOX_); + if(_aOX_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ee_]; + throw _aOX_}} + var + droit_ouvert= + caml_call3 + (Runtime_ocaml_Runtime[28],_Em_,Runtime_ocaml_Runtime[10],_aOS_); + return [0, + droit_ouvert, + conditions_hors_age, + age_l512_3_2, + regime_outre_mer_l751_1]} + function calcul_allocation_logement_loc(calcul_allocation_logement_loc) + {var + loyer_principal=calcul_allocation_logement_loc[1], + ressources_menage_arrondies=calcul_allocation_logement_loc[2], + beneficiaire_aide_adulte_ou_en=calcul_allocation_logement_loc[3], + date_courante=calcul_allocation_logement_loc[4], + nombre_personnes_a_charge=calcul_allocation_logement_loc[5], + situation_familiale_calcul_apl=calcul_allocation_logement_loc[6], + zone=calcul_allocation_logement_loc[7], + logement_est_chambre=calcul_allocation_logement_loc[8], + agees_ou_handicap_adultes_hebe=calcul_allocation_logement_loc[9], + type_aide=calcul_allocation_logement_loc[10], + colocation=calcul_allocation_logement_loc[11], + reduction_loyer_solidarite=calcul_allocation_logement_loc[12], + logement_meuble_d842_2=calcul_allocation_logement_loc[13], + changement_logement_d842_4=calcul_allocation_logement_loc[14]; + try + {var + _aNp_=function(param){return loyer_principal}, + _aNq_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Eo_,1)}, + _aNr_=caml_call4(Runtime_ocaml_Runtime[63],_Ep_,[0],_aNq_,_aNp_), + calcul_apl_locatif_dot_loyer_p= + caml_call3 + (Runtime_ocaml_Runtime[28],_Eq_,Runtime_ocaml_Runtime[13],_aNr_)} + catch(_aOy_) + {_aOy_ = caml_wrap_exception(_aOy_); + if(_aOy_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_En_]; + throw _aOy_} + try + {var + _aNs_=function(param){return ressources_menage_arrondies}, + _aNt_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Es_,1)}, + _aNu_=caml_call4(Runtime_ocaml_Runtime[63],_Et_,[0],_aNt_,_aNs_), + calcul_apl_locatif_dot_ressour= + caml_call3 + (Runtime_ocaml_Runtime[28],_Eu_,Runtime_ocaml_Runtime[13],_aNu_)} + catch(_aOx_) + {_aOx_ = caml_wrap_exception(_aOx_); + if(_aOx_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Er_]; + throw _aOx_} + try + {var + _aNv_=function(param){return beneficiaire_aide_adulte_ou_en}, + _aNw_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ew_,1)}, + _aNx_=caml_call4(Runtime_ocaml_Runtime[63],_Ex_,[0],_aNw_,_aNv_), + calcul_apl_locatif_dot_benefic= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ey_,Runtime_ocaml_Runtime[12],_aNx_)} + catch(_aOw_) + {_aOw_ = caml_wrap_exception(_aOw_); + if(_aOw_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ev_]; + throw _aOw_} + try + {var + _aNy_=function(param){return date_courante}, + _aNz_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EA_,1)}, + _aNA_=caml_call4(Runtime_ocaml_Runtime[63],_EB_,[0],_aNz_,_aNy_), + calcul_apl_locatif_dot_date_co= + caml_call3 + (Runtime_ocaml_Runtime[28],_EC_,Runtime_ocaml_Runtime[16],_aNA_)} + catch(_aOv_) + {_aOv_ = caml_wrap_exception(_aOv_); + if(_aOv_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ez_]; + throw _aOv_} + try + {var + _aNB_=function(param){return nombre_personnes_a_charge}, + _aNC_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EE_,1)}, + _aND_=caml_call4(Runtime_ocaml_Runtime[63],_EF_,[0],_aNC_,_aNB_), + calcul_apl_locatif_dot_nombre_= + caml_call3 + (Runtime_ocaml_Runtime[28],_EG_,Runtime_ocaml_Runtime[14],_aND_)} + catch(_aOu_) + {_aOu_ = caml_wrap_exception(_aOu_); + if(_aOu_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_ED_]; + throw _aOu_} + try + {var + _aNE_=function(param){return situation_familiale_calcul_apl}, + _aNF_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EI_,1)}, + _aNG_=caml_call4(Runtime_ocaml_Runtime[63],_EJ_,[0],_aNF_,_aNE_), + calcul_apl_locatif_dot_situati= + caml_call3 + (Runtime_ocaml_Runtime[28], + _EK_, + embed_situation_familiale_calc, + _aNG_)} + catch(_aOt_) + {_aOt_ = caml_wrap_exception(_aOt_); + if(_aOt_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_EH_]; + throw _aOt_} + try + {var + _aNH_=function(param){return zone}, + _aNI_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EM_,1)}, + _aNJ_=caml_call4(Runtime_ocaml_Runtime[63],_EN_,[0],_aNI_,_aNH_), + calcul_apl_locatif_dot_zone= + caml_call3 + (Runtime_ocaml_Runtime[28],_EO_,embed_zone_d_habitation,_aNJ_)} + catch(_aOs_) + {_aOs_ = caml_wrap_exception(_aOs_); + if(_aOs_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_EL_]; + throw _aOs_} + try + {var + _aNK_=function(param){return logement_est_chambre}, + _aNL_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EQ_,1)}, + _aNM_=caml_call4(Runtime_ocaml_Runtime[63],_ER_,[0],_aNL_,_aNK_), + calcul_apl_locatif_dot_logemen= + caml_call3 + (Runtime_ocaml_Runtime[28],_ES_,Runtime_ocaml_Runtime[12],_aNM_)} + catch(_aOr_) + {_aOr_ = caml_wrap_exception(_aOr_); + if(_aOr_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_EP_]; + throw _aOr_} + try + {var + _aNN_=function(param){return agees_ou_handicap_adultes_hebe}, + _aNO_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EU_,1)}, + _aNP_=caml_call4(Runtime_ocaml_Runtime[63],_EV_,[0],_aNO_,_aNN_), + calcul_apl_locatif_dot_agees_o= + caml_call3 + (Runtime_ocaml_Runtime[28],_EW_,Runtime_ocaml_Runtime[12],_aNP_)} + catch(_aOq_) + {_aOq_ = caml_wrap_exception(_aOq_); + if(_aOq_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_ET_]; + throw _aOq_} + try + {var + _aNQ_=function(param){return type_aide}, + _aNR_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EY_,1)}, + _aNS_=caml_call4(Runtime_ocaml_Runtime[63],_EZ_,[0],_aNR_,_aNQ_), + calcul_apl_locatif_dot_type_ai= + caml_call3 + (Runtime_ocaml_Runtime[28], + _E0_, + embed_type_aides_personnelle_l, + _aNS_)} + catch(_aOp_) + {_aOp_ = caml_wrap_exception(_aOp_); + if(_aOp_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_EX_]; + throw _aOp_} + try + {var + _aNT_=function(param){return colocation}, + _aNU_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_E2_,1)}, + _aNV_=caml_call4(Runtime_ocaml_Runtime[63],_E3_,[0],_aNU_,_aNT_), + calcul_apl_locatif_dot_colocat= + caml_call3 + (Runtime_ocaml_Runtime[28],_E4_,Runtime_ocaml_Runtime[12],_aNV_)} + catch(_aOo_) + {_aOo_ = caml_wrap_exception(_aOo_); + if(_aOo_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_E1_]; + throw _aOo_} + try + {var + _aNW_=function(param){return reduction_loyer_solidarite}, + _aNX_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_E6_,1)}, + _aNY_=caml_call4(Runtime_ocaml_Runtime[63],_E7_,[0],_aNX_,_aNW_), + calcul_apl_locatif_dot_reducti= + caml_call3 + (Runtime_ocaml_Runtime[28],_E8_,Runtime_ocaml_Runtime[13],_aNY_)} + catch(_aOn_) + {_aOn_ = caml_wrap_exception(_aOn_); + if(_aOn_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_E5_]; + throw _aOn_} + try + {var + _aNZ_=function(param){return logement_meuble_d842_2}, + _aN0_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_E__,1)}, + _aN1_=caml_call4(Runtime_ocaml_Runtime[63],_E$_,[0],_aN0_,_aNZ_), + calcul_apl_locatif_dot_logemen$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_Fa_,Runtime_ocaml_Runtime[12],_aN1_)} + catch(_aOm_) + {_aOm_ = caml_wrap_exception(_aOm_); + if(_aOm_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_E9_]; + throw _aOm_} + var + _aN2_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Fb_,calcul_aide_personnalisee_loge), + [0, + calcul_apl_locatif_dot_loyer_p, + calcul_apl_locatif_dot_ressour, + calcul_apl_locatif_dot_benefic, + calcul_apl_locatif_dot_date_co, + calcul_apl_locatif_dot_nombre_, + calcul_apl_locatif_dot_situati, + calcul_apl_locatif_dot_zone, + calcul_apl_locatif_dot_logemen, + calcul_apl_locatif_dot_agees_o, + calcul_apl_locatif_dot_type_ai, + calcul_apl_locatif_dot_colocat, + calcul_apl_locatif_dot_reducti, + calcul_apl_locatif_dot_logemen$0]), + result=caml_call2(Runtime_ocaml_Runtime[27],_Fc_,_aN2_), + calcul_apl_locatif_dot_aide_fi=result[6], + calcul_apl_locatif_dot_traitem=result[7]; + function _aN3_(param) + {try + {var + _aOb_= + function(param$0) + {var + _aOj_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Fe_, + Runtime_ocaml_Runtime[13], + param), + _aOk_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Ff_, + calcul_apl_locatif_dot_traitem), + _aOj_), + _aOl_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Fg_, + Runtime_ocaml_Runtime[13], + _aOk_); + return caml_call2(Runtime_ocaml_Runtime[27],_Fh_,_aOl_)}, + _aOc_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Fi_,1)}, + _aOd_= + [0, + function(param$0) + {function _aOg_(param$0){return param} + function _aOh_(param) + {if(0 === changement_logement_d842_4[0]) + var + infos=changement_logement_d842_4[1], + _aOi_= + caml_call2 + (Runtime_ocaml_Runtime[127],loyer_principal,infos[1]); + else + var _aOi_=0; + return caml_call2(Runtime_ocaml_Runtime[29],_Fj_,_aOi_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Fk_,[0],_aOh_,_aOg_)}], + _aOe_=caml_call4(Runtime_ocaml_Runtime[63],_Fl_,_aOd_,_aOc_,_aOb_); + return _aOe_} + catch(_aOf_) + {_aOf_ = caml_wrap_exception(_aOf_); + if(_aOf_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Fd_]; + throw _aOf_}} + var + traitement_aide_finale= + caml_call3 + (Runtime_ocaml_Runtime[28],_Fm_,Runtime_ocaml_Runtime[10],_aN3_); + try + {var + _aN4_=function(param){return calcul_apl_locatif_dot_aide_fi}, + _aN5_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Fo_,1)}, + _aN6_= + [0, + function(param) + {function _aN9_(param) + {if(0 === changement_logement_d842_4[0]) + {var + infos=changement_logement_d842_4[1], + _aOa_= + caml_call2(Runtime_ocaml_Runtime[98],infos[1],infos[2]); + return caml_call2 + (Runtime_ocaml_Runtime[98],loyer_principal,_aOa_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$301)} + function _aN__(param) + {if(0 === changement_logement_d842_4[0]) + var + infos=changement_logement_d842_4[1], + _aN$_= + caml_call2 + (Runtime_ocaml_Runtime[127],loyer_principal,infos[1]); + else + var _aN$_=0; + return caml_call2(Runtime_ocaml_Runtime[29],_Fp_,_aN$_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Fq_,[0],_aN__,_aN9_)}], + _aN7_=caml_call4(Runtime_ocaml_Runtime[63],_Fr_,_aN6_,_aN5_,_aN4_)} + catch(_aN8_) + {_aN8_ = caml_wrap_exception(_aN8_); + if(_aN8_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Fn_]; + throw _aN8_} + var + aide_finale_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_Fs_,Runtime_ocaml_Runtime[13],_aN7_); + return [0,aide_finale_formule,traitement_aide_finale]} + function calcul_allocation_logement_foy(calcul_allocation_logement_foy) + {var + type_logement_foyer=calcul_allocation_logement_foy[1], + date_conventionnement=calcul_allocation_logement_foy[2], + redevance=calcul_allocation_logement_foy[3], + ressources_menage_arrondies=calcul_allocation_logement_foy[4], + nombre_personnes_a_charge=calcul_allocation_logement_foy[5], + situation_familiale_calcul_apl=calcul_allocation_logement_foy[6], + zone=calcul_allocation_logement_foy[7], + date_courante=calcul_allocation_logement_foy[8], + categorie_equivalence_loyer_d8=calcul_allocation_logement_foy[9]; + try + {var + _aJi_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$3)}, + _aJj_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Fu_,1)}, + _aJk_=caml_call4(Runtime_ocaml_Runtime[63],_Fv_,[0],_aJj_,_aJi_)} + catch(_aNo_) + {_aNo_ = caml_wrap_exception(_aNo_); + if(_aNo_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ft_]; + throw _aNo_} + var + montant_minimal_aide_d842_15= + caml_call3 + (Runtime_ocaml_Runtime[28],_Fw_,Runtime_ocaml_Runtime[13],_aJk_); + try + {var + _aJl_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$2)}, + _aJm_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Fy_,1)}, + _aJn_=caml_call4(Runtime_ocaml_Runtime[63],_Fz_,[0],_aJm_,_aJl_)} + catch(_aNn_) + {_aNn_ = caml_wrap_exception(_aNn_); + if(_aNn_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Fx_]; + throw _aNn_} + var + montant_forfaitaire_d842_15= + caml_call3 + (Runtime_ocaml_Runtime[28],_FA_,Runtime_ocaml_Runtime[13],_aJn_); + try + {var + _aJo_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1500$0)}, + _aJp_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FC_,1)}, + _aJq_=caml_call4(Runtime_ocaml_Runtime[63],_FD_,[0],_aJp_,_aJo_)} + catch(_aNm_) + {_aNm_ = caml_wrap_exception(_aNm_); + if(_aNm_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_FB_]; + throw _aNm_} + var + montant_minimal_depense_nette_= + caml_call3 + (Runtime_ocaml_Runtime[28],_FE_,Runtime_ocaml_Runtime[13],_aJq_); + try + {var + _aJr_=function(param){return 1}, + _aJs_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FG_,1)}, + _aJt_=caml_call4(Runtime_ocaml_Runtime[63],_FH_,[0],_aJs_,_aJr_), + calcul_nombre_parts_dot_condit= + caml_call3 + (Runtime_ocaml_Runtime[28],_FI_,Runtime_ocaml_Runtime[12],_aJt_)} + catch(_aNl_) + {_aNl_ = caml_wrap_exception(_aNl_); + if(_aNl_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_FF_]; + throw _aNl_} + try + {var + _aJu_=function(param){return nombre_personnes_a_charge}, + _aJv_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FK_,1)}, + _aJw_=caml_call4(Runtime_ocaml_Runtime[63],_FL_,[0],_aJv_,_aJu_), + calcul_nombre_parts_dot_nombre= + caml_call3 + (Runtime_ocaml_Runtime[28],_FM_,Runtime_ocaml_Runtime[14],_aJw_)} + catch(_aNk_) + {_aNk_ = caml_wrap_exception(_aNk_); + if(_aNk_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_FJ_]; + throw _aNk_} + try + {var + _aJx_=function(param){return situation_familiale_calcul_apl}, + _aJy_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FO_,1)}, + _aJz_=caml_call4(Runtime_ocaml_Runtime[63],_FP_,[0],_aJy_,_aJx_), + calcul_nombre_parts_dot_situat= + caml_call3 + (Runtime_ocaml_Runtime[28], + _FQ_, + embed_situation_familiale_calc, + _aJz_)} + catch(_aNj_) + {_aNj_ = caml_wrap_exception(_aNj_); + if(_aNj_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_FN_]; + throw _aNj_} + var + _aJA_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_FR_,calcul_nombre_part_logement_fo), + [0, + calcul_nombre_parts_dot_condit, + calcul_nombre_parts_dot_nombre, + calcul_nombre_parts_dot_situat]), + result=caml_call2(Runtime_ocaml_Runtime[27],_FS_,_aJA_), + calcul_nombre_parts_dot_n_nomb=result[1]; + try + {var + _aJB_=function(param){return date_courante}, + _aJC_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FU_,1)}, + _aJD_=caml_call4(Runtime_ocaml_Runtime[63],_FV_,[0],_aJC_,_aJB_), + contributions_sociales_dot_dat= + caml_call3 + (Runtime_ocaml_Runtime[28],_FW_,Runtime_ocaml_Runtime[16],_aJD_)} + catch(_aNi_) + {_aNi_ = caml_wrap_exception(_aNi_); + if(_aNi_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_FT_]; + throw _aNi_} + var + _aJE_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_FX_,contributions_sociales_aides_p), + [0,contributions_sociales_dot_dat]), + result$0=caml_call2(Runtime_ocaml_Runtime[27],_FY_,_aJE_), + contributions_sociales_dot_mon=result$0[1]; + try + {var + _aJF_=function(param){return type_logement_foyer}, + _aJG_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_F0_,1)}, + _aJH_=caml_call4(Runtime_ocaml_Runtime[63],_F1_,[0],_aJG_,_aJF_), + calcul_apl_logement_foyer_dot_= + caml_call3 + (Runtime_ocaml_Runtime[28],_F2_,embed_type_logement_foyer,_aJH_)} + catch(_aNh_) + {_aNh_ = caml_wrap_exception(_aNh_); + if(_aNh_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_FZ_]; + throw _aNh_} + try + {var + _aJI_=function(param){return date_conventionnement}, + _aJJ_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_F4_,1)}, + _aJK_=caml_call4(Runtime_ocaml_Runtime[63],_F5_,[0],_aJJ_,_aJI_), + calcul_apl_logement_foyer_dot_$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_F6_,Runtime_ocaml_Runtime[16],_aJK_)} + catch(_aNg_) + {_aNg_ = caml_wrap_exception(_aNg_); + if(_aNg_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_F3_]; + throw _aNg_} + try + {var + _aJL_=function(param){return ressources_menage_arrondies}, + _aJM_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_F8_,1)}, + _aJN_=caml_call4(Runtime_ocaml_Runtime[63],_F9_,[0],_aJM_,_aJL_), + calcul_apl_logement_foyer_dot_$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_F__,Runtime_ocaml_Runtime[13],_aJN_)} + catch(_aNf_) + {_aNf_ = caml_wrap_exception(_aNf_); + if(_aNf_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_F7_]; + throw _aNf_} + try + {var + _aJO_=function(param){return nombre_personnes_a_charge}, + _aJP_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ga_,1)}, + _aJQ_=caml_call4(Runtime_ocaml_Runtime[63],_Gb_,[0],_aJP_,_aJO_), + calcul_apl_logement_foyer_dot_$2= + caml_call3 + (Runtime_ocaml_Runtime[28],_Gc_,Runtime_ocaml_Runtime[14],_aJQ_)} + catch(_aNe_) + {_aNe_ = caml_wrap_exception(_aNe_); + if(_aNe_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_F$_]; + throw _aNe_} + try + {var + _aJR_=function(param){return situation_familiale_calcul_apl}, + _aJS_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ge_,1)}, + _aJT_=caml_call4(Runtime_ocaml_Runtime[63],_Gf_,[0],_aJS_,_aJR_), + calcul_apl_logement_foyer_dot_$3= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Gg_, + embed_situation_familiale_calc, + _aJT_)} + catch(_aNd_) + {_aNd_ = caml_wrap_exception(_aNd_); + if(_aNd_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Gd_]; + throw _aNd_} + try + {var + _aJU_=function(param){return zone}, + _aJV_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Gi_,1)}, + _aJW_=caml_call4(Runtime_ocaml_Runtime[63],_Gj_,[0],_aJV_,_aJU_), + calcul_apl_logement_foyer_dot_$4= + caml_call3 + (Runtime_ocaml_Runtime[28],_Gk_,embed_zone_d_habitation,_aJW_)} + catch(_aNc_) + {_aNc_ = caml_wrap_exception(_aNc_); + if(_aNc_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Gh_]; + throw _aNc_} + try + {var + _aJX_=function(param){return date_courante}, + _aJY_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Gm_,1)}, + _aJZ_=caml_call4(Runtime_ocaml_Runtime[63],_Gn_,[0],_aJY_,_aJX_), + calcul_apl_logement_foyer_dot_$5= + caml_call3 + (Runtime_ocaml_Runtime[28],_Go_,Runtime_ocaml_Runtime[16],_aJZ_)} + catch(_aNb_) + {_aNb_ = caml_wrap_exception(_aNb_); + if(_aNb_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Gl_]; + throw _aNb_} + try + {var + _aJ0_=function(param){return redevance}, + _aJ1_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Gq_,1)}, + _aJ2_=caml_call4(Runtime_ocaml_Runtime[63],_Gr_,[0],_aJ1_,_aJ0_), + calcul_apl_logement_foyer_dot_$6= + caml_call3 + (Runtime_ocaml_Runtime[28],_Gs_,Runtime_ocaml_Runtime[13],_aJ2_)} + catch(_aNa_) + {_aNa_ = caml_wrap_exception(_aNa_); + if(_aNa_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Gp_]; + throw _aNa_} + function calcul_apl_logement_foyer_dot_$7(param) + {function _aM9_(param){return 1} + function _aM__(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Gt_,1)} + var _aM$_=caml_call4(Runtime_ocaml_Runtime[63],_Gu_,[0],_aM__,_aM9_); + return caml_call3 + (Runtime_ocaml_Runtime[28], + _Gv_, + Runtime_ocaml_Runtime[12], + _aM$_)} + function calcul_apl_logement_foyer_dot_$8(param) + {throw Runtime_ocaml_Runtime[2]} + var + _aJ3_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Gw_,calcul_aide_personnalisee_loge$0), + [0, + calcul_apl_logement_foyer_dot_, + calcul_apl_logement_foyer_dot_$0, + calcul_apl_logement_foyer_dot_$1, + calcul_apl_logement_foyer_dot_$2, + calcul_apl_logement_foyer_dot_$3, + calcul_apl_logement_foyer_dot_$4, + calcul_apl_logement_foyer_dot_$5, + calcul_apl_logement_foyer_dot_$6, + calcul_apl_logement_foyer_dot_$7, + calcul_apl_logement_foyer_dot_$8]), + result$1=caml_call2(Runtime_ocaml_Runtime[27],_Gx_,_aJ3_), + calcul_apl_logement_foyer_dot_$9=result$1[7]; + try + {var + _aJ4_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aJ5_=function(param){return 0}, + _aJ6_= + function(param) + {function _aMX_(param) + {var _aM4_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$302); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aM4_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_5422$3); + var + _aM5_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _aM6_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$3), + _aM7_=caml_call2(Runtime_ocaml_Runtime[104],_aM6_,_aM5_), + _aM8_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422$4); + return caml_call2(Runtime_ocaml_Runtime[93],_aM8_,_aM7_)} + function _aMY_(param) + {var + _aMZ_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aM0_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aMZ_), + _aM1_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _aM2_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aM1_), + _aM3_=caml_call2(Runtime_ocaml_Runtime[83],_aM2_,_aM0_); + return caml_call2(Runtime_ocaml_Runtime[29],_Gz_,_aM3_)} + return caml_call4(Runtime_ocaml_Runtime[63],_GA_,[0],_aMY_,_aMX_)}, + _aJ7_= + [0, + function(param) + {function _aMO_(param) + {var _aMS_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$303); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aMS_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_5612$3); + var + _aMT_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _aMU_=caml_call1(Runtime_ocaml_Runtime[31],cst_1272$3), + _aMV_=caml_call2(Runtime_ocaml_Runtime[104],_aMU_,_aMT_), + _aMW_=caml_call1(Runtime_ocaml_Runtime[31],cst_5612$4); + return caml_call2(Runtime_ocaml_Runtime[93],_aMW_,_aMV_)} + function _aMP_(param) + {var + _aMQ_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aMR_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aMQ_); + return caml_call2(Runtime_ocaml_Runtime[29],_GB_,_aMR_)} + return caml_call4(Runtime_ocaml_Runtime[63],_GC_,[0],_aMP_,_aMO_)}, + _aJ6_], + _aJ8_=caml_call4(Runtime_ocaml_Runtime[63],_GD_,_aJ7_,_aJ5_,_aJ4_)} + catch(_aMN_) + {_aMN_ = caml_wrap_exception(_aMN_); + if(_aMN_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Gy_]; + throw _aMN_} + var + montant_forfaitaire_charges= + caml_call3 + (Runtime_ocaml_Runtime[28],_GE_,Runtime_ocaml_Runtime[13],_aJ8_); + try + {var + _aJ9_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aJ__=function(param){return 0}, + _aJ$_= + function(param) + {function _aMu_(param) + {return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_17012) + :caml_call1(Runtime_ocaml_Runtime[31],cst_26440)} + function _aMv_(param) + {switch(categorie_equivalence_loyer_d8[0]) + {case 0:var _aMG_=0;break; + case 1:var _aMG_=1;break; + case 2:var _aMG_=0;break; + default:var _aMG_=0} + var + _aMH_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aMI_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aMH_), + _aMJ_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _aMK_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aMJ_), + _aML_=caml_call2(Runtime_ocaml_Runtime[83],_aMK_,_aMI_), + _aMM_=caml_call2(Runtime_ocaml_Runtime[83],_aML_,_aMG_); + return caml_call2(Runtime_ocaml_Runtime[29],_GG_,_aMM_)} + var + _aMw_= + [0, + function(param) + {function _aMx_(param) + {return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_17012$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_26440$0)} + function _aMy_(param) + {switch(categorie_equivalence_loyer_d8[0]) + {case 0:var _aMz_=0;break; + case 1:var _aMz_=0;break; + case 2:var _aMz_=0;break; + default:var _aMz_=1} + var + _aMA_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aMB_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aMA_), + _aMC_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _aMD_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aMC_), + _aME_=caml_call2(Runtime_ocaml_Runtime[83],_aMD_,_aMB_), + _aMF_=caml_call2(Runtime_ocaml_Runtime[83],_aME_,_aMz_); + return caml_call2(Runtime_ocaml_Runtime[29],_GH_,_aMF_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_GI_,[0],_aMy_,_aMx_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_GJ_,_aMw_,_aMv_,_aMu_)}, + _aKa_= + function(param) + {function _aMl_(param) + {return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_20640) + :caml_call1(Runtime_ocaml_Runtime[31],cst_32073)} + function _aMm_(param) + {switch(categorie_equivalence_loyer_d8[0]) + {case 0:var _aMn_=0;break; + case 1:var _aMn_=0;break; + case 2:var _aMn_=1;break; + default:var _aMn_=0} + var + _aMo_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aMp_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aMo_), + _aMq_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _aMr_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aMq_), + _aMs_=caml_call2(Runtime_ocaml_Runtime[83],_aMr_,_aMp_), + _aMt_=caml_call2(Runtime_ocaml_Runtime[83],_aMs_,_aMn_); + return caml_call2(Runtime_ocaml_Runtime[29],_GK_,_aMt_)} + return caml_call4(Runtime_ocaml_Runtime[63],_GL_,[0],_aMm_,_aMl_)}, + _aKb_= + function(param) + {function _aMc_(param) + {return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_8414) + :caml_call1(Runtime_ocaml_Runtime[31],cst_13100)} + function _aMd_(param) + {switch(categorie_equivalence_loyer_d8[0]) + {case 0:var _aMe_=1;break; + case 1:var _aMe_=0;break; + case 2:var _aMe_=0;break; + default:var _aMe_=0} + var + _aMf_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aMg_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aMf_), + _aMh_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _aMi_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aMh_), + _aMj_=caml_call2(Runtime_ocaml_Runtime[83],_aMi_,_aMg_), + _aMk_=caml_call2(Runtime_ocaml_Runtime[83],_aMj_,_aMe_); + return caml_call2(Runtime_ocaml_Runtime[29],_GM_,_aMk_)} + return caml_call4(Runtime_ocaml_Runtime[63],_GN_,[0],_aMd_,_aMc_)}, + _aKc_= + function(param) + {function _aL1_(param) + {return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_17607) + :caml_call1(Runtime_ocaml_Runtime[31],cst_27365)} + function _aL2_(param) + {switch(categorie_equivalence_loyer_d8[0]) + {case 0:var _aL__=0;break; + case 1:var _aL__=1;break; + case 2:var _aL__=0;break; + default:var _aL__=0} + var + _aL$_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aMa_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aL$_), + _aMb_=caml_call2(Runtime_ocaml_Runtime[83],_aMa_,_aL__); + return caml_call2(Runtime_ocaml_Runtime[29],_GO_,_aMb_)} + var + _aL3_= + [0, + function(param) + {function _aL4_(param) + {return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_17607$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_27365$0)} + function _aL5_(param) + {switch(categorie_equivalence_loyer_d8[0]) + {case 0:var _aL6_=0;break; + case 1:var _aL6_=0;break; + case 2:var _aL6_=0;break; + default:var _aL6_=1} + var + _aL7_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aL8_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aL7_), + _aL9_=caml_call2(Runtime_ocaml_Runtime[83],_aL8_,_aL6_); + return caml_call2(Runtime_ocaml_Runtime[29],_GP_,_aL9_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_GQ_,[0],_aL5_,_aL4_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_GR_,_aL3_,_aL2_,_aL1_)}, + _aKd_= + function(param) + {function _aLV_(param) + {return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_21362) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33196)} + function _aLW_(param) + {switch(categorie_equivalence_loyer_d8[0]) + {case 0:var _aLX_=0;break; + case 1:var _aLX_=0;break; + case 2:var _aLX_=1;break; + default:var _aLX_=0} + var + _aLY_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aLZ_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aLY_), + _aL0_=caml_call2(Runtime_ocaml_Runtime[83],_aLZ_,_aLX_); + return caml_call2(Runtime_ocaml_Runtime[29],_GS_,_aL0_)} + return caml_call4(Runtime_ocaml_Runtime[63],_GT_,[0],_aLW_,_aLV_)}, + _aKe_= + [0, + function(param) + {function _aLP_(param) + {return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_8708) + :caml_call1(Runtime_ocaml_Runtime[31],cst_13559)} + function _aLQ_(param) + {switch(categorie_equivalence_loyer_d8[0]) + {case 0:var _aLR_=1;break; + case 1:var _aLR_=0;break; + case 2:var _aLR_=0;break; + default:var _aLR_=0} + var + _aLS_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aLT_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aLS_), + _aLU_=caml_call2(Runtime_ocaml_Runtime[83],_aLT_,_aLR_); + return caml_call2(Runtime_ocaml_Runtime[29],_GU_,_aLU_)} + return caml_call4(Runtime_ocaml_Runtime[63],_GV_,[0],_aLQ_,_aLP_)}, + _aKd_, + _aKc_, + _aKb_, + _aKa_, + _aJ$_], + _aKf_=caml_call4(Runtime_ocaml_Runtime[63],_GW_,_aKe_,_aJ__,_aJ9_)} + catch(_aLO_) + {_aLO_ = caml_wrap_exception(_aLO_); + if(_aLO_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_GF_]; + throw _aLO_} + var + equivalence_loyer= + caml_call3 + (Runtime_ocaml_Runtime[28],_GX_,Runtime_ocaml_Runtime[13],_aKf_); + function _aKg_(param) + {try + {var + _aLI_= + function(param$0) + {var + _aLM_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$304), + _aLN_= + caml_call2 + (Runtime_ocaml_Runtime[98],param,montant_forfaitaire_d842_15); + return caml_call2(Runtime_ocaml_Runtime[112],_aLN_,_aLM_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$305) + :caml_call2 + (Runtime_ocaml_Runtime[98], + param, + montant_forfaitaire_d842_15)}, + _aLJ_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_GZ_,1)}, + _aLK_=caml_call4(Runtime_ocaml_Runtime[63],_G0_,[0],_aLJ_,_aLI_); + return _aLK_} + catch(_aLL_) + {_aLL_ = caml_wrap_exception(_aLL_); + if(_aLL_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_GY_]; + throw _aLL_}} + var + traitement_aide_finale_minorat= + caml_call3 + (Runtime_ocaml_Runtime[28],_G1_,Runtime_ocaml_Runtime[10],_aKg_); + try + {var + _aKh_=function(param){return ressources_menage_arrondies}, + _aKi_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_G3_,1)}, + _aKj_=caml_call4(Runtime_ocaml_Runtime[63],_G4_,[0],_aKi_,_aKh_), + calcul_equivalence_loyer_minim$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_G5_,Runtime_ocaml_Runtime[13],_aKj_)} + catch(_aLH_) + {_aLH_ = caml_wrap_exception(_aLH_); + if(_aLH_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_G2_]; + throw _aLH_} + try + {var + _aKk_=function(param){return 1}, + _aKl_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_G7_,1)}, + _aKm_=caml_call4(Runtime_ocaml_Runtime[63],_G8_,[0],_aKl_,_aKk_), + calcul_equivalence_loyer_minim$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_G9_,Runtime_ocaml_Runtime[12],_aKm_)} + catch(_aLG_) + {_aLG_ = caml_wrap_exception(_aLG_); + if(_aLG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_G6_]; + throw _aLG_} + try + {var + _aKn_=function(param){return calcul_nombre_parts_dot_n_nomb}, + _aKo_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_G$_,1)}, + _aKp_=caml_call4(Runtime_ocaml_Runtime[63],_Ha_,[0],_aKo_,_aKn_), + calcul_equivalence_loyer_minim$2= + caml_call3 + (Runtime_ocaml_Runtime[28],_Hb_,Runtime_ocaml_Runtime[15],_aKp_)} + catch(_aLF_) + {_aLF_ = caml_wrap_exception(_aLF_); + if(_aLF_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_G__]; + throw _aLF_} + var + _aKq_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Hc_,calcul_equivalence_loyer_minim), + [0, + calcul_equivalence_loyer_minim$0, + calcul_equivalence_loyer_minim$1, + calcul_equivalence_loyer_minim$2]), + result$2=caml_call2(Runtime_ocaml_Runtime[27],_Hd_,_aKq_), + calcul_equivalence_loyer_minim$3=result$2[1]; + try + {var + _aKr_=function(param){return calcul_apl_logement_foyer_dot_$9}, + _aKs_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Hf_,1)}, + _aKt_=caml_call4(Runtime_ocaml_Runtime[63],_Hg_,[0],_aKs_,_aKr_)} + catch(_aLE_) + {_aLE_ = caml_wrap_exception(_aLE_); + if(_aLE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_He_]; + throw _aLE_} + var + coefficient_prise_en_charge= + caml_call3 + (Runtime_ocaml_Runtime[28],_Hh_,Runtime_ocaml_Runtime[15],_aKt_); + function _aKu_(param) + {try + {var + _aLz_= + function(param$0) + {var + _aLD_= + caml_call2 + (Runtime_ocaml_Runtime[93], + equivalence_loyer, + montant_forfaitaire_charges); + return caml_call2(Runtime_ocaml_Runtime[98],_aLD_,param)}, + _aLA_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Hj_,1)}, + _aLB_=caml_call4(Runtime_ocaml_Runtime[63],_Hk_,[0],_aLA_,_aLz_); + return _aLB_} + catch(_aLC_) + {_aLC_ = caml_wrap_exception(_aLC_); + if(_aLC_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Hi_]; + throw _aLC_}} + var + depense_nette_minimale= + caml_call3 + (Runtime_ocaml_Runtime[28],_Hl_,Runtime_ocaml_Runtime[10],_aKu_); + try + {var + _aKv_=function(param){return calcul_equivalence_loyer_minim$3}, + _aKw_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Hn_,1)}, + _aKx_=caml_call4(Runtime_ocaml_Runtime[63],_Ho_,[0],_aKw_,_aKv_)} + catch(_aLy_) + {_aLy_ = caml_wrap_exception(_aLy_); + if(_aLy_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Hm_]; + throw _aLy_} + var + loyer_minimal= + caml_call3 + (Runtime_ocaml_Runtime[28],_Hp_,Runtime_ocaml_Runtime[13],_aKx_); + function _aKy_(param) + {try + {var + _aLm_= + function(param$0) + {var + _aLq_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Hr_, + Runtime_ocaml_Runtime[13], + param), + _aLr_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Hs_,depense_nette_minimale), + _aLq_), + _aLs_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Ht_, + Runtime_ocaml_Runtime[13], + _aLr_), + _aLt_=caml_call2(Runtime_ocaml_Runtime[27],_Hu_,_aLs_); + if + (caml_call2 + (Runtime_ocaml_Runtime[112], + _aLt_, + montant_minimal_depense_nette_)) + {var + _aLu_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Hv_, + Runtime_ocaml_Runtime[13], + param), + _aLv_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Hw_,depense_nette_minimale), + _aLu_), + _aLw_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Hx_, + Runtime_ocaml_Runtime[13], + _aLv_), + _aLx_=caml_call2(Runtime_ocaml_Runtime[27],_Hy_,_aLw_); + return caml_call2 + (Runtime_ocaml_Runtime[98], + montant_minimal_depense_nette_, + _aLx_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$306)}, + _aLn_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Hz_,1)}, + _aLo_=caml_call4(Runtime_ocaml_Runtime[63],_HA_,[0],_aLn_,_aLm_); + return _aLo_} + catch(_aLp_) + {_aLp_ = caml_wrap_exception(_aLp_); + if(_aLp_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Hq_]; + throw _aLp_}} + var + abattement_depense_nette_minim= + caml_call3 + (Runtime_ocaml_Runtime[28],_HB_,Runtime_ocaml_Runtime[10],_aKy_); + try + {var + _aKz_= + function(param) + {var + _aLk_= + caml_call2 + (Runtime_ocaml_Runtime[93], + equivalence_loyer, + montant_forfaitaire_charges), + _aLl_=caml_call2(Runtime_ocaml_Runtime[98],_aLk_,loyer_minimal); + return caml_call2 + (Runtime_ocaml_Runtime[104], + _aLl_, + coefficient_prise_en_charge)}, + _aKA_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_HD_,1)}, + _aKB_=caml_call4(Runtime_ocaml_Runtime[63],_HE_,[0],_aKA_,_aKz_)} + catch(_aLj_) + {_aLj_ = caml_wrap_exception(_aLj_); + if(_aLj_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_HC_]; + throw _aLj_} + var + aide_finale_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_HF_,Runtime_ocaml_Runtime[13],_aKB_); + function _aKC_(param) + {try + {var + _aK9_= + function(param$0) + {var + _aLb_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _HH_, + Runtime_ocaml_Runtime[13], + param), + _aLc_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _HI_, + traitement_aide_finale_minorat), + _aLb_), + _aLd_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _HJ_, + Runtime_ocaml_Runtime[13], + _aLc_), + aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_HK_,_aLd_), + _aLe_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _HL_, + Runtime_ocaml_Runtime[13], + aide_finale), + _aLf_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _HM_, + abattement_depense_nette_minim), + _aLe_), + _aLg_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _HN_, + Runtime_ocaml_Runtime[13], + _aLf_), + abattement=caml_call2(Runtime_ocaml_Runtime[27],_HO_,_aLg_), + _aLh_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$307), + _aLi_= + caml_call2(Runtime_ocaml_Runtime[98],aide_finale,abattement); + return caml_call2(Runtime_ocaml_Runtime[112],_aLi_,_aLh_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$308) + :caml_call2 + (Runtime_ocaml_Runtime[98],aide_finale,abattement)}, + _aK__= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_HP_,1)}, + _aK$_=caml_call4(Runtime_ocaml_Runtime[63],_HQ_,[0],_aK__,_aK9_); + return _aK$_} + catch(_aLa_) + {_aLa_ = caml_wrap_exception(_aLa_); + if(_aLa_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_HG_]; + throw _aLa_}} + var + traitement_aide_finale_depense= + caml_call3 + (Runtime_ocaml_Runtime[28],_HR_,Runtime_ocaml_Runtime[10],_aKC_); + function _aKD_(param) + {try + {var + _aK2_= + function(param$0) + {var + _aK6_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _HT_, + Runtime_ocaml_Runtime[13], + param), + _aK7_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _HU_, + traitement_aide_finale_depense), + _aK6_), + _aK8_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _HV_, + Runtime_ocaml_Runtime[13], + _aK7_), + aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_HW_,_aK8_); + return caml_call2 + (Runtime_ocaml_Runtime[122],aide_finale,redevance) + ?redevance + :aide_finale}, + _aK3_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_HX_,1)}, + _aK4_=caml_call4(Runtime_ocaml_Runtime[63],_HY_,[0],_aK3_,_aK2_); + return _aK4_} + catch(_aK5_) + {_aK5_ = caml_wrap_exception(_aK5_); + if(_aK5_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_HS_]; + throw _aK5_}} + var + traitement_aide_finale_redevan= + caml_call3 + (Runtime_ocaml_Runtime[28],_HZ_,Runtime_ocaml_Runtime[10],_aKD_); + function _aKE_(param) + {try + {var + _aKN_= + function(param$0) + {var + _aKR_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _H1_, + Runtime_ocaml_Runtime[13], + param), + _aKS_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _H2_, + traitement_aide_finale_redevan), + _aKR_), + _aKT_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _H3_, + Runtime_ocaml_Runtime[13], + _aKS_), + aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_H4_,_aKT_), + _aKU_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _H5_, + Runtime_ocaml_Runtime[13], + aide_finale), + _aKV_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _H6_, + contributions_sociales_dot_mon), + _aKU_), + _aKW_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _H7_, + Runtime_ocaml_Runtime[13], + _aKV_), + crds=caml_call2(Runtime_ocaml_Runtime[27],_H8_,_aKW_), + _aKX_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$2), + _aKY_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale,crds), + _aKZ_=caml_call2(Runtime_ocaml_Runtime[98],_aKY_,_aKX_), + aide_finale_moins_crds_arrondi= + caml_call1(Runtime_ocaml_Runtime[77],_aKZ_), + _aK0_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$309), + _aK1_= + caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds); + return caml_call2(Runtime_ocaml_Runtime[127],_aK1_,_aK0_) + ?caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$310)}, + _aKO_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_H9_,1)}, + _aKP_=caml_call4(Runtime_ocaml_Runtime[63],_H__,[0],_aKO_,_aKN_); + return _aKP_} + catch(_aKQ_) + {_aKQ_ = caml_wrap_exception(_aKQ_); + if(_aKQ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_H0_]; + throw _aKQ_}} + var + traitement_aide_finale_contrib= + caml_call3 + (Runtime_ocaml_Runtime[28],_H$_,Runtime_ocaml_Runtime[10],_aKE_); + function _aKF_(param) + {try + {var + _aKG_= + function(param$0) + {var + _aKK_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Ib_, + Runtime_ocaml_Runtime[13], + param), + _aKL_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Ic_, + traitement_aide_finale_contrib), + _aKK_), + _aKM_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Id_, + Runtime_ocaml_Runtime[13], + _aKL_), + aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_Ie_,_aKM_); + return caml_call2 + (Runtime_ocaml_Runtime[112], + aide_finale, + montant_minimal_aide_d842_15) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$311) + :aide_finale}, + _aKH_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_If_,1)}, + _aKI_=caml_call4(Runtime_ocaml_Runtime[63],_Ig_,[0],_aKH_,_aKG_); + return _aKI_} + catch(_aKJ_) + {_aKJ_ = caml_wrap_exception(_aKJ_); + if(_aKJ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ia_]; + throw _aKJ_}} + var + traitement_aide_finale_montant= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ih_,Runtime_ocaml_Runtime[10],_aKF_); + return [0, + coefficient_prise_en_charge, + equivalence_loyer, + montant_forfaitaire_charges, + loyer_minimal, + aide_finale_formule, + traitement_aide_finale_montant]} + function calcul_allocation_logement_acc(calcul_allocation_logement_acc) + {var + ressources_menage_arrondies_ba=calcul_allocation_logement_acc[1], + nombre_personnes_a_charge=calcul_allocation_logement_acc[2], + situation_familiale_calcul_apl=calcul_allocation_logement_acc[3], + zone=calcul_allocation_logement_acc[4], + date_courante=calcul_allocation_logement_acc[5], + mensualite_principale=calcul_allocation_logement_acc[6], + situation_r822_11_13_17=calcul_allocation_logement_acc[7], + date_signature_pret=calcul_allocation_logement_acc[8], + type_travaux_logement=calcul_allocation_logement_acc[9], + local_habite_premiere_fois_ben=calcul_allocation_logement_acc[10], + date_entree_logement=calcul_allocation_logement_acc[11], + charges_mensuelles_pret=calcul_allocation_logement_acc[12], + copropriete=calcul_allocation_logement_acc[13]; + try + {var + _anN_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$3)}, + _anO_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ij_,1)}, + _anP_=caml_call4(Runtime_ocaml_Runtime[63],_Ik_,[0],_anO_,_anN_)} + catch(_aJh_) + {_aJh_ = caml_wrap_exception(_aJh_); + if(_aJh_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ii_]; + throw _aJh_} + var + montant_forfaitaire_d842_6= + caml_call3 + (Runtime_ocaml_Runtime[28],_Il_,Runtime_ocaml_Runtime[13],_anP_); + try + {var + _anQ_= + function(param) + {var + _aJf_=caml_call1(Runtime_ocaml_Runtime[39],cst_6_55957$0), + _aJg_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$206); + return caml_call2(Runtime_ocaml_Runtime[107],_aJg_,_aJf_)}, + _anR_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_In_,1)}, + _anS_=caml_call4(Runtime_ocaml_Runtime[63],_Io_,[0],_anR_,_anQ_)} + catch(_aJe_) + {_aJe_ = caml_wrap_exception(_aJe_); + if(_aJe_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Im_]; + throw _aJe_} + var + taux_francs_vers_euros= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ip_,Runtime_ocaml_Runtime[15],_anS_); + try + {var + _anT_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$4)}, + _anU_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ir_,1)}, + _anV_=caml_call4(Runtime_ocaml_Runtime[63],_Is_,[0],_anU_,_anT_)} + catch(_aJd_) + {_aJd_ = caml_wrap_exception(_aJd_); + if(_aJd_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Iq_]; + throw _aJd_} + var + montant_minimal_aide_d842_6= + caml_call3 + (Runtime_ocaml_Runtime[28],_It_,Runtime_ocaml_Runtime[13],_anV_); + try + {var + _anW_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1500$1)}, + _anX_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Iv_,1)}, + _anY_=caml_call4(Runtime_ocaml_Runtime[63],_Iw_,[0],_anX_,_anW_)} + catch(_aJc_) + {_aJc_ = caml_wrap_exception(_aJc_); + if(_aJc_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Iu_]; + throw _aJc_} + var + montant_forfaitaire_d842_11= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ix_,Runtime_ocaml_Runtime[13],_anY_); + try + {var + _anZ_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_390000)}, + _an0_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Iz_,1)}, + _an1_=caml_call4(Runtime_ocaml_Runtime[63],_IA_,[0],_an0_,_anZ_)} + catch(_aJb_) + {_aJb_ = caml_wrap_exception(_aJb_); + if(_aJb_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Iy_]; + throw _aJb_} + var + montant_forfaitaire_d842_12= + caml_call3 + (Runtime_ocaml_Runtime[28],_IB_,Runtime_ocaml_Runtime[13],_an1_); + try + {var + _an2_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0234$1)}, + _an3_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ID_,1)}, + _an4_=caml_call4(Runtime_ocaml_Runtime[63],_IE_,[0],_an3_,_an2_)} + catch(_aJa_) + {_aJa_ = caml_wrap_exception(_aJa_); + if(_aJa_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_IC_]; + throw _aJa_} + var + coefficient_d842_11= + caml_call3 + (Runtime_ocaml_Runtime[28],_IF_,Runtime_ocaml_Runtime[15],_an4_); + try + {var + _an5_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[39],cst_16_25$0)}, + _an6_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_IH_,1)}, + _an7_=caml_call4(Runtime_ocaml_Runtime[63],_II_,[0],_an6_,_an5_)} + catch(_aI$_) + {_aI$_ = caml_wrap_exception(_aI$_); + if(_aI$_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_IG_]; + throw _aI$_} + var + coefficient_d842_12= + caml_call3 + (Runtime_ocaml_Runtime[28],_IJ_,Runtime_ocaml_Runtime[15],_an7_); + try + {var + _an8_=function(param){return nombre_personnes_a_charge}, + _an9_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_IL_,1)}, + _an__=caml_call4(Runtime_ocaml_Runtime[63],_IM_,[0],_an9_,_an8_), + calcul_nombre_parts_dot_nombre= + caml_call3 + (Runtime_ocaml_Runtime[28],_IN_,Runtime_ocaml_Runtime[14],_an__)} + catch(_aI__) + {_aI__ = caml_wrap_exception(_aI__); + if(_aI__ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_IK_]; + throw _aI__} + try + {var + _an$_=function(param){return situation_familiale_calcul_apl}, + _aoa_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_IP_,1)}, + _aob_=caml_call4(Runtime_ocaml_Runtime[63],_IQ_,[0],_aoa_,_an$_), + calcul_nombre_parts_dot_situat= + caml_call3 + (Runtime_ocaml_Runtime[28], + _IR_, + embed_situation_familiale_calc, + _aob_)} + catch(_aI9_) + {_aI9_ = caml_wrap_exception(_aI9_); + if(_aI9_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_IO_]; + throw _aI9_} + var + _aoc_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_IS_,calcul_nombre_parts_accession_), + [0,calcul_nombre_parts_dot_nombre,calcul_nombre_parts_dot_situat]), + result=caml_call2(Runtime_ocaml_Runtime[27],_IT_,_aoc_), + calcul_nombre_parts_dot_n_nomb=result[1]; + try + {var + _aod_=function(param){return date_courante}, + _aoe_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_IV_,1)}, + _aof_=caml_call4(Runtime_ocaml_Runtime[63],_IW_,[0],_aoe_,_aod_), + contributions_sociales_dot_dat= + caml_call3 + (Runtime_ocaml_Runtime[28],_IX_,Runtime_ocaml_Runtime[16],_aof_)} + catch(_aI8_) + {_aI8_ = caml_wrap_exception(_aI8_); + if(_aI8_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_IU_]; + throw _aI8_} + var + _aog_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_IY_,contributions_sociales_aides_p), + [0,contributions_sociales_dot_dat]), + result$0=caml_call2(Runtime_ocaml_Runtime[27],_IZ_,_aog_), + contributions_sociales_dot_mon=result$0[1]; + try + {var + _aoh_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aoi_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_I1_,0)}, + _aoj_= + function(param) + {function _aIP_(param) + {var _aI3_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$312); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aI3_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_5612$5); + var + _aI4_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _aI5_=caml_call1(Runtime_ocaml_Runtime[31],cst_1272$4), + _aI6_=caml_call2(Runtime_ocaml_Runtime[104],_aI5_,_aI4_), + _aI7_=caml_call1(Runtime_ocaml_Runtime[31],cst_5612$6); + return caml_call2(Runtime_ocaml_Runtime[93],_aI7_,_aI6_)} + function _aIQ_(param) + {var + _aI1_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aI2_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aI1_); + return caml_call2(Runtime_ocaml_Runtime[29],_I2_,_aI2_)} + var + _aIR_= + [0, + function(param) + {function _aIS_(param) + {var + _aIX_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _aIY_=caml_call1(Runtime_ocaml_Runtime[31],cst_1272$5), + _aIZ_=caml_call2(Runtime_ocaml_Runtime[104],_aIY_,_aIX_), + _aI0_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_2805$1) + :caml_call1(Runtime_ocaml_Runtime[31],cst_5612$7); + return caml_call2(Runtime_ocaml_Runtime[93],_aI0_,_aIZ_)} + function _aIT_(param) + {var + _aIU_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aIV_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aIU_), + _aIW_= + caml_call2(Runtime_ocaml_Runtime[83],_aIV_,copropriete); + return caml_call2(Runtime_ocaml_Runtime[29],_I3_,_aIW_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_I4_,[0],_aIT_,_aIS_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_I5_,_aIR_,_aIQ_,_aIP_)}, + _aok_= + [0, + function(param) + {function _aIq_(param) + {var _aIK_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$313); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aIK_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_5422$5); + var + _aIL_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _aIM_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$4), + _aIN_=caml_call2(Runtime_ocaml_Runtime[104],_aIM_,_aIL_), + _aIO_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422$6); + return caml_call2(Runtime_ocaml_Runtime[93],_aIO_,_aIN_)} + function _aIr_(param) + {var + _aIF_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aIG_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aIF_), + _aIH_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _aII_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aIH_), + _aIJ_=caml_call2(Runtime_ocaml_Runtime[83],_aII_,_aIG_); + return caml_call2(Runtime_ocaml_Runtime[29],_I6_,_aIJ_)} + var + _aIs_= + [0, + function(param) + {function _aIt_(param) + {var + _aIB_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _aIC_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$5), + _aID_=caml_call2(Runtime_ocaml_Runtime[104],_aIC_,_aIB_), + _aIE_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_2710$1) + :caml_call1(Runtime_ocaml_Runtime[31],cst_5422$7); + return caml_call2(Runtime_ocaml_Runtime[93],_aIE_,_aID_)} + function _aIu_(param) + {var + _aIv_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aIw_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aIv_), + _aIx_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _aIy_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aIx_), + _aIz_=caml_call2(Runtime_ocaml_Runtime[83],_aIy_,_aIw_), + _aIA_= + caml_call2(Runtime_ocaml_Runtime[83],_aIz_,copropriete); + return caml_call2(Runtime_ocaml_Runtime[29],_I7_,_aIA_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_I8_,[0],_aIu_,_aIt_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_I9_,_aIs_,_aIr_,_aIq_)}, + _aoj_], + _aol_=caml_call4(Runtime_ocaml_Runtime[63],_I__,_aok_,_aoi_,_aoh_)} + catch(_aIp_) + {_aIp_ = caml_wrap_exception(_aIp_); + if(_aIp_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_I0_]; + throw _aIp_} + var + montant_forfaitaire_charges= + caml_call3 + (Runtime_ocaml_Runtime[28],_I$_,Runtime_ocaml_Runtime[13],_aol_); + function _aom_(param) + {try + {var + _aIj_= + function(param$0) + {var + _aIn_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$314), + _aIo_= + caml_call2 + (Runtime_ocaml_Runtime[98],param,montant_forfaitaire_d842_6); + return caml_call2(Runtime_ocaml_Runtime[112],_aIo_,_aIn_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$315) + :caml_call2 + (Runtime_ocaml_Runtime[98],param,montant_forfaitaire_d842_6)}, + _aIk_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Jb_,1)}, + _aIl_=caml_call4(Runtime_ocaml_Runtime[63],_Jc_,[0],_aIk_,_aIj_); + return _aIl_} + catch(_aIm_) + {_aIm_ = caml_wrap_exception(_aIm_); + if(_aIm_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ja_]; + throw _aIm_}} + var + traitement_aide_finale_minorat= + caml_call3 + (Runtime_ocaml_Runtime[28],_Jd_,Runtime_ocaml_Runtime[10],_aom_); + function _aon_(param) + {try + {var + _ar3_=function(param){throw Runtime_ocaml_Runtime[2]}, + _ar4_=function(param){return 0}, + _ar5_= + function(param$0) + {function _aHE_(param) + {switch(zone[0]) + {case 0: + var _aHL_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$316); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHL_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31476) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37933); + var _aHM_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$207); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHM_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40787); + var _aHN_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$46); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHN_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41927); + var _aHO_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$26); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHO_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_43106); + var _aHP_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$22); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHP_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_44262); + var _aHQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$6); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHQ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_45200); + var + _aHR_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$7), + _aHS_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aHR_), + _aHT_=caml_call1(Runtime_ocaml_Runtime[69],_aHS_), + _aHU_=caml_call1(Runtime_ocaml_Runtime[31],cst_3936), + _aHV_=caml_call2(Runtime_ocaml_Runtime[104],_aHU_,_aHT_), + _aHW_=caml_call1(Runtime_ocaml_Runtime[31],cst_45200$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aHW_,_aHV_); + case 1: + var _aHX_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$317); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHX_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27614) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33853); + var _aHY_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$208); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHY_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36646); + var _aHZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$47); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHZ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37915); + var _aH0_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$27); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aH0_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39222); + var _aH1_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$23); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aH1_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40510); + var _aH2_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$8); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aH2_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_43378); + var + _aH3_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$9), + _aH4_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aH3_), + _aH5_=caml_call1(Runtime_ocaml_Runtime[69],_aH4_), + _aH6_=caml_call1(Runtime_ocaml_Runtime[31],cst_3771), + _aH7_=caml_call2(Runtime_ocaml_Runtime[104],_aH6_,_aH5_), + _aH8_=caml_call1(Runtime_ocaml_Runtime[31],cst_43378$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aH8_,_aH7_); + default: + var _aH9_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$318); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aH9_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25904) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31419); + var _aH__=caml_call1(Runtime_ocaml_Runtime[46],cst_1$209); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aH__)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34255); + var _aH$_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$48); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aH$_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35670); + var _aIa_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$28); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aIa_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37107); + var _aIb_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$24); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aIb_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38521); + var _aIc_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$10); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aIc_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41392); + var + _aId_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$11), + _aIe_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aId_), + _aIf_=caml_call1(Runtime_ocaml_Runtime[69],_aIe_), + _aIg_=caml_call1(Runtime_ocaml_Runtime[31],cst_3588), + _aIh_=caml_call2(Runtime_ocaml_Runtime[104],_aIg_,_aIf_), + _aIi_=caml_call1(Runtime_ocaml_Runtime[31],cst_41392$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aIi_,_aIh_)}} + function _aHF_(param$0) + {var + _aHG_=caml_call3(Runtime_ocaml_Runtime[57],2019,10,1), + _aHH_=caml_call2(Runtime_ocaml_Runtime[129],param,_aHG_), + _aHI_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aHJ_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aHI_), + _aHK_=caml_call2(Runtime_ocaml_Runtime[83],_aHJ_,_aHH_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jf_,_aHK_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Jg_,[0],_aHF_,_aHE_)}, + _ar6_= + function(param$0) + {function _aGW_(param) + {switch(zone[0]) + {case 0: + var _aG6_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$319); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aG6_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31382) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37820); + var _aG7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$210); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aG7_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40665); + var _aG8_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$49); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aG8_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41801); + var _aG9_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$29); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aG9_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42977); + var _aG__=caml_call1(Runtime_ocaml_Runtime[46],cst_4$25); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aG__)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_44130); + var _aG$_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$12); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aG$_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_45064); + var + _aHa_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$13), + _aHb_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aHa_), + _aHc_=caml_call1(Runtime_ocaml_Runtime[69],_aHb_), + _aHd_=caml_call1(Runtime_ocaml_Runtime[31],cst_3924), + _aHe_=caml_call2(Runtime_ocaml_Runtime[104],_aHd_,_aHc_), + _aHf_=caml_call1(Runtime_ocaml_Runtime[31],cst_45064$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aHf_,_aHe_); + case 1: + var _aHg_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$320); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHg_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27531) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33751); + var _aHh_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$211); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHh_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36536); + var _aHi_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$50); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHi_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37801); + var _aHj_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$30); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHj_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39105); + var _aHk_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$26); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHk_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40389); + var _aHl_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$14); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHl_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_43248); + var + _aHm_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$15), + _aHn_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aHm_), + _aHo_=caml_call1(Runtime_ocaml_Runtime[69],_aHn_), + _aHp_=caml_call1(Runtime_ocaml_Runtime[31],cst_3760), + _aHq_=caml_call2(Runtime_ocaml_Runtime[104],_aHp_,_aHo_), + _aHr_=caml_call1(Runtime_ocaml_Runtime[31],cst_43248$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aHr_,_aHq_); + default: + var _aHs_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$321); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHs_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25826) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31325); + var _aHt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$212); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHt_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34152); + var _aHu_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$51); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHu_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35564); + var _aHv_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$31); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHv_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36996); + var _aHw_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$27); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHw_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38406); + var _aHx_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$16); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHx_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41268); + var + _aHy_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$17), + _aHz_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aHy_), + _aHA_=caml_call1(Runtime_ocaml_Runtime[69],_aHz_), + _aHB_=caml_call1(Runtime_ocaml_Runtime[31],cst_3578), + _aHC_=caml_call2(Runtime_ocaml_Runtime[104],_aHB_,_aHA_), + _aHD_=caml_call1(Runtime_ocaml_Runtime[31],cst_41268$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aHD_,_aHC_)}} + function _aGX_(param$0) + {var + _aGY_=caml_call3(Runtime_ocaml_Runtime[57],2019,10,1), + _aGZ_=caml_call2(Runtime_ocaml_Runtime[114],param,_aGY_), + _aG0_=caml_call3(Runtime_ocaml_Runtime[57],2017,10,1), + _aG1_=caml_call2(Runtime_ocaml_Runtime[129],param,_aG0_), + _aG2_=caml_call2(Runtime_ocaml_Runtime[83],_aG1_,_aGZ_), + _aG3_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aG4_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aG3_), + _aG5_=caml_call2(Runtime_ocaml_Runtime[83],_aG4_,_aG2_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jh_,_aG5_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Ji_,[0],_aGX_,_aGW_)}, + _ar7_= + function(param$0) + {function _aGc_(param) + {switch(zone[0]) + {case 0: + var _aGm_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$322); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGm_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31148) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37538); + var _aGn_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$213); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGn_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40362); + var _aGo_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$52); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGo_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41490); + var _aGp_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$32); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGp_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42657); + var _aGq_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$28); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGq_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_43801); + var _aGr_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$18); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGr_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_44729); + var + _aGs_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$19), + _aGt_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aGs_), + _aGu_=caml_call1(Runtime_ocaml_Runtime[69],_aGt_), + _aGv_=caml_call1(Runtime_ocaml_Runtime[31],cst_3895), + _aGw_=caml_call2(Runtime_ocaml_Runtime[104],_aGv_,_aGu_), + _aGx_=caml_call1(Runtime_ocaml_Runtime[31],cst_44729$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aGx_,_aGw_); + case 1: + var _aGy_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$323); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGy_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27326) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33500$0); + var _aGz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$214); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGz_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36264); + var _aGA_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$53); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGA_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37520); + var _aGB_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$33); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGB_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38814); + var _aGC_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$29); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGC_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40088); + var _aGD_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$20); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGD_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42926); + var + _aGE_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$21), + _aGF_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aGE_), + _aGG_=caml_call1(Runtime_ocaml_Runtime[69],_aGF_), + _aGH_=caml_call1(Runtime_ocaml_Runtime[31],cst_3732), + _aGI_=caml_call2(Runtime_ocaml_Runtime[104],_aGH_,_aGG_), + _aGJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_42926$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aGJ_,_aGI_); + default: + var _aGK_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$324); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGK_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25634) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31092); + var _aGL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$215); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGL_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33898); + var _aGM_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$54); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGM_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35299); + var _aGN_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$34); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGN_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36721); + var _aGO_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$30); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGO_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38120); + var _aGP_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$22); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGP_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40961); + var + _aGQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$23), + _aGR_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aGQ_), + _aGS_=caml_call1(Runtime_ocaml_Runtime[69],_aGR_), + _aGT_=caml_call1(Runtime_ocaml_Runtime[31],cst_3551), + _aGU_=caml_call2(Runtime_ocaml_Runtime[104],_aGT_,_aGS_), + _aGV_=caml_call1(Runtime_ocaml_Runtime[31],cst_40961$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aGV_,_aGU_)}} + function _aGd_(param$0) + {var + _aGe_=caml_call3(Runtime_ocaml_Runtime[57],2017,10,1), + _aGf_=caml_call2(Runtime_ocaml_Runtime[114],param,_aGe_), + _aGg_=caml_call3(Runtime_ocaml_Runtime[57],2015,10,1), + _aGh_=caml_call2(Runtime_ocaml_Runtime[129],param,_aGg_), + _aGi_=caml_call2(Runtime_ocaml_Runtime[83],_aGh_,_aGf_), + _aGj_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aGk_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aGj_), + _aGl_=caml_call2(Runtime_ocaml_Runtime[83],_aGk_,_aGi_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jj_,_aGl_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Jk_,[0],_aGd_,_aGc_)}, + _ar8_= + function(param$0) + {function _aFu_(param) + {switch(zone[0]) + {case 0: + var _aFE_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$325); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFE_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31123) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37508); + var _aFF_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$216); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFF_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40330); + var _aFG_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$55); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFG_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41457); + var _aFH_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$35); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFH_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42623); + var _aFI_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$31); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFI_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_43766); + var _aFJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$24); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFJ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_44693); + var + _aFK_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$25), + _aFL_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aFK_), + _aFM_=caml_call1(Runtime_ocaml_Runtime[69],_aFL_), + _aFN_=caml_call1(Runtime_ocaml_Runtime[31],cst_3892), + _aFO_=caml_call2(Runtime_ocaml_Runtime[104],_aFN_,_aFM_), + _aFP_=caml_call1(Runtime_ocaml_Runtime[31],cst_44693$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aFP_,_aFO_); + case 1: + var _aFQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$326); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFQ_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27304) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33473); + var _aFR_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$217); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFR_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36235); + var _aFS_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$56); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFS_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37490); + var _aFT_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$36); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFT_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38783); + var _aFU_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$32); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFU_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40056); + var _aFV_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$26); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFV_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42892); + var + _aFW_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$27), + _aFX_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aFW_), + _aFY_=caml_call1(Runtime_ocaml_Runtime[69],_aFX_), + _aFZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3729), + _aF0_=caml_call2(Runtime_ocaml_Runtime[104],_aFZ_,_aFY_), + _aF1_=caml_call1(Runtime_ocaml_Runtime[31],cst_42892$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aF1_,_aF0_); + default: + var _aF2_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$327); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aF2_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25614) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31067); + var _aF3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$218); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aF3_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33871); + var _aF4_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$57); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aF4_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35271); + var _aF5_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$37); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aF5_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36692); + var _aF6_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$33); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aF6_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38090); + var _aF7_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$28); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aF7_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40928); + var + _aF8_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$29), + _aF9_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aF8_), + _aF__=caml_call1(Runtime_ocaml_Runtime[69],_aF9_), + _aF$_=caml_call1(Runtime_ocaml_Runtime[31],cst_3548), + _aGa_=caml_call2(Runtime_ocaml_Runtime[104],_aF$_,_aF__), + _aGb_=caml_call1(Runtime_ocaml_Runtime[31],cst_40928$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aGb_,_aGa_)}} + function _aFv_(param$0) + {var + _aFw_=caml_call3(Runtime_ocaml_Runtime[57],2015,10,1), + _aFx_=caml_call2(Runtime_ocaml_Runtime[114],param,_aFw_), + _aFy_=caml_call3(Runtime_ocaml_Runtime[57],2014,10,1), + _aFz_=caml_call2(Runtime_ocaml_Runtime[129],param,_aFy_), + _aFA_=caml_call2(Runtime_ocaml_Runtime[83],_aFz_,_aFx_), + _aFB_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aFC_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aFB_), + _aFD_=caml_call2(Runtime_ocaml_Runtime[83],_aFC_,_aFA_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jl_,_aFD_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Jm_,[0],_aFv_,_aFu_)}, + _ar9_= + function(param$0) + {function _aEM_(param) + {switch(zone[0]) + {case 0: + var _aEW_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$328); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEW_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_30947) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37295); + var _aEX_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$219); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEX_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40101); + var _aEY_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$58); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEY_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41222); + var _aEZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$38); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEZ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42381); + var _aE0_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$34); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aE0_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_43518); + var _aE1_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$30); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aE1_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_44440); + var + _aE2_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$31), + _aE3_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aE2_), + _aE4_=caml_call1(Runtime_ocaml_Runtime[69],_aE3_), + _aE5_=caml_call1(Runtime_ocaml_Runtime[31],cst_3870), + _aE6_=caml_call2(Runtime_ocaml_Runtime[104],_aE5_,_aE4_), + _aE7_=caml_call1(Runtime_ocaml_Runtime[31],cst_44440$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aE7_,_aE6_); + case 1: + var _aE8_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$329); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aE8_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27149) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33283); + var _aE9_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$220); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aE9_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36030); + var _aE__=caml_call1(Runtime_ocaml_Runtime[46],cst_2$59); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aE__)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37278); + var _aE$_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$39); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aE$_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38563); + var _aFa_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$35); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFa_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39829); + var _aFb_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$32); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFb_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42649); + var + _aFc_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$33), + _aFd_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aFc_), + _aFe_=caml_call1(Runtime_ocaml_Runtime[69],_aFd_), + _aFf_=caml_call1(Runtime_ocaml_Runtime[31],cst_3708), + _aFg_=caml_call2(Runtime_ocaml_Runtime[104],_aFf_,_aFe_), + _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_42659); + return caml_call2(Runtime_ocaml_Runtime[93],_aFh_,_aFg_); + default: + var _aFi_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$330); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFi_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25469) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30891); + var _aFj_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$221); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFj_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33679); + var _aFk_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$60); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFk_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35071); + var _aFl_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$40); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFl_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36484); + var _aFm_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$36); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFm_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37874); + var _aFn_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$34); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFn_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40696); + var + _aFo_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$35), + _aFp_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aFo_), + _aFq_=caml_call1(Runtime_ocaml_Runtime[69],_aFp_), + _aFr_=caml_call1(Runtime_ocaml_Runtime[31],cst_3528), + _aFs_=caml_call2(Runtime_ocaml_Runtime[104],_aFr_,_aFq_), + _aFt_=caml_call1(Runtime_ocaml_Runtime[31],cst_40696$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aFt_,_aFs_)}} + function _aEN_(param$0) + {var + _aEO_=caml_call3(Runtime_ocaml_Runtime[57],2014,10,1), + _aEP_=caml_call2(Runtime_ocaml_Runtime[114],param,_aEO_), + _aEQ_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), + _aER_=caml_call2(Runtime_ocaml_Runtime[129],param,_aEQ_), + _aES_=caml_call2(Runtime_ocaml_Runtime[83],_aER_,_aEP_), + _aET_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aEU_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aET_), + _aEV_=caml_call2(Runtime_ocaml_Runtime[83],_aEU_,_aES_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jn_,_aEV_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Jo_,[0],_aEN_,_aEM_)}, + _ar__= + function(param$0) + {function _aD4_(param) + {switch(zone[0]) + {case 0: + var _aEc_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$331); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEc_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_30296) + :caml_call1(Runtime_ocaml_Runtime[31],cst_36510); + var _aEd_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$222); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEd_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39257); + var _aEe_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$61); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEe_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40354); + var _aEf_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$41); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEf_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41489); + var _aEg_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$37); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEg_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42602); + var _aEh_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$36); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEh_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_43505); + var + _aEi_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$37), + _aEj_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aEi_), + _aEk_=caml_call1(Runtime_ocaml_Runtime[69],_aEj_), + _aEl_=caml_call1(Runtime_ocaml_Runtime[31],cst_3789), + _aEm_=caml_call2(Runtime_ocaml_Runtime[104],_aEl_,_aEk_), + _aEn_=caml_call1(Runtime_ocaml_Runtime[31],cst_43505$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aEn_,_aEm_); + case 1: + var _aEo_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$332); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEo_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26578) + :caml_call1(Runtime_ocaml_Runtime[31],cst_32582); + var _aEp_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$223); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEp_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35272); + var _aEq_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$62); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEq_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36493); + var _aEr_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$42); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEr_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37751); + var _aEs_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$38); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEs_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38991); + var _aEt_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$38); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEt_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41751); + var + _aEu_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$39), + _aEv_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aEu_), + _aEw_=caml_call1(Runtime_ocaml_Runtime[69],_aEv_), + _aEx_=caml_call1(Runtime_ocaml_Runtime[31],cst_3630), + _aEy_=caml_call2(Runtime_ocaml_Runtime[104],_aEx_,_aEw_), + _aEz_=caml_call1(Runtime_ocaml_Runtime[31],cst_41751$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aEz_,_aEy_); + default: + var _aEA_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$333); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEA_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24933) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30241); + var _aEB_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$224); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEB_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32970); + var _aEC_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$63); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEC_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34333); + var _aED_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$43); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aED_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35716); + var _aEE_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$39); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEE_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37077); + var _aEF_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$40); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEF_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39839); + var + _aEG_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$41), + _aEH_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aEG_), + _aEI_=caml_call1(Runtime_ocaml_Runtime[69],_aEH_), + _aEJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3454), + _aEK_=caml_call2(Runtime_ocaml_Runtime[104],_aEJ_,_aEI_), + _aEL_=caml_call1(Runtime_ocaml_Runtime[31],cst_39839$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aEL_,_aEK_)}} + function _aD5_(param$0) + {var + _aD6_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), + _aD7_=caml_call2(Runtime_ocaml_Runtime[114],param,_aD6_), + _aD8_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), + _aD9_=caml_call2(Runtime_ocaml_Runtime[129],param,_aD8_), + _aD__=caml_call2(Runtime_ocaml_Runtime[83],_aD9_,_aD7_), + _aD$_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aEa_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aD$_), + _aEb_=caml_call2(Runtime_ocaml_Runtime[83],_aEa_,_aD__); + return caml_call2(Runtime_ocaml_Runtime[29],_Jp_,_aEb_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Jq_,[0],_aD5_,_aD4_)}, + _ar$_= + function(param$0) + {function _aDk_(param) + {switch(zone[0]) + {case 0: + var _aDu_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$334); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDu_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29996) + :caml_call1(Runtime_ocaml_Runtime[31],cst_36149); + var _aDv_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$225); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDv_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38868); + var _aDw_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$64); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDw_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39954); + var _aDx_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$44); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDx_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41078); + var _aDy_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$40); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDy_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42180); + var _aDz_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$42); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDz_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_43074); + var + _aDA_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$43), + _aDB_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aDA_), + _aDC_=caml_call1(Runtime_ocaml_Runtime[69],_aDB_), + _aDD_=caml_call1(Runtime_ocaml_Runtime[31],cst_3751), + _aDE_=caml_call2(Runtime_ocaml_Runtime[104],_aDD_,_aDC_), + _aDF_=caml_call1(Runtime_ocaml_Runtime[31],cst_43074$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aDF_,_aDE_); + case 1: + var _aDG_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$335); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDG_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26315) + :caml_call1(Runtime_ocaml_Runtime[31],cst_32259); + var _aDH_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$226); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDH_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34923); + var _aDI_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$65); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDI_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36132); + var _aDJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$45); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDJ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37373); + var _aDK_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$41); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDK_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38605); + var _aDL_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$44); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDL_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41338); + var + _aDM_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$45), + _aDN_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aDM_), + _aDO_=caml_call1(Runtime_ocaml_Runtime[69],_aDN_), + _aDP_=caml_call1(Runtime_ocaml_Runtime[31],cst_3594), + _aDQ_=caml_call2(Runtime_ocaml_Runtime[104],_aDP_,_aDO_), + _aDR_=caml_call1(Runtime_ocaml_Runtime[31],cst_41338$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aDR_,_aDQ_); + default: + var _aDS_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$336); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDS_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24686) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29942); + var _aDT_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$227); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDT_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32644); + var _aDU_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$66); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDU_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33993); + var _aDV_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$46); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDV_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35362); + var _aDW_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$42); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDW_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36710); + var _aDX_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$46); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDX_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39445); + var + _aDY_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$47), + _aDZ_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aDY_), + _aD0_=caml_call1(Runtime_ocaml_Runtime[69],_aDZ_), + _aD1_=caml_call1(Runtime_ocaml_Runtime[31],cst_3420), + _aD2_=caml_call2(Runtime_ocaml_Runtime[104],_aD1_,_aD0_), + _aD3_=caml_call1(Runtime_ocaml_Runtime[31],cst_39445$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aD3_,_aD2_)}} + function _aDl_(param$0) + {var + _aDm_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), + _aDn_=caml_call2(Runtime_ocaml_Runtime[114],param,_aDm_), + _aDo_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), + _aDp_=caml_call2(Runtime_ocaml_Runtime[129],param,_aDo_), + _aDq_=caml_call2(Runtime_ocaml_Runtime[83],_aDp_,_aDn_), + _aDr_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aDs_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aDr_), + _aDt_=caml_call2(Runtime_ocaml_Runtime[83],_aDs_,_aDq_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jr_,_aDt_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Js_,[0],_aDl_,_aDk_)}, + _asa_= + function(param$0) + {function _aCC_(param) + {switch(zone[0]) + {case 0: + var _aCM_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$337); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCM_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29670) + :caml_call1(Runtime_ocaml_Runtime[31],cst_35757); + var _aCN_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$228); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCN_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38445); + var _aCO_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$67); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCO_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39519); + var _aCP_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$47); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCP_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40601); + var _aCQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$43); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCQ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41721); + var _aCR_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$48); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCR_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42605); + var + _aCS_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$49), + _aCT_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aCS_), + _aCU_=caml_call1(Runtime_ocaml_Runtime[69],_aCT_), + _aCV_=caml_call1(Runtime_ocaml_Runtime[31],cst_3710), + _aCW_=caml_call2(Runtime_ocaml_Runtime[104],_aCV_,_aCU_), + _aCX_=caml_call1(Runtime_ocaml_Runtime[31],cst_42605$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aCX_,_aCW_); + case 1: + var _aCY_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$338); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCY_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26029) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31908); + var _aCZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$229); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCZ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34643); + var _aC0_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$68); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aC0_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35739); + var _aC1_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$48); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aC1_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36970); + var _aC2_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$44); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aC2_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38185); + var _aC3_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$50); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aC3_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40888); + var + _aC4_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$51), + _aC5_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aC4_), + _aC6_=caml_call1(Runtime_ocaml_Runtime[69],_aC5_), + _aC7_=caml_call1(Runtime_ocaml_Runtime[31],cst_3555), + _aC8_=caml_call2(Runtime_ocaml_Runtime[104],_aC7_,_aC6_), + _aC9_=caml_call1(Runtime_ocaml_Runtime[31],cst_40888$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aC9_,_aC8_); + default: + var _aC__=caml_call1(Runtime_ocaml_Runtime[46],cst_0$339); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aC__)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24417) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29616); + var _aC$_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$230); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aC$_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32289); + var _aDa_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$69); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDa_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33623$0); + var _aDb_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$49); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDb_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34977); + var _aDc_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$45); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDc_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36311); + var _aDd_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$52); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDd_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39016); + var + _aDe_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$53), + _aDf_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aDe_), + _aDg_=caml_call1(Runtime_ocaml_Runtime[69],_aDf_), + _aDh_=caml_call1(Runtime_ocaml_Runtime[31],cst_3383), + _aDi_=caml_call2(Runtime_ocaml_Runtime[104],_aDh_,_aDg_), + _aDj_=caml_call1(Runtime_ocaml_Runtime[31],cst_39016$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aDj_,_aDi_)}} + function _aCD_(param$0) + {var + _aCE_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), + _aCF_=caml_call2(Runtime_ocaml_Runtime[114],param,_aCE_), + _aCG_=caml_call3(Runtime_ocaml_Runtime[57],2010,1,1), + _aCH_=caml_call2(Runtime_ocaml_Runtime[129],param,_aCG_), + _aCI_=caml_call2(Runtime_ocaml_Runtime[83],_aCH_,_aCF_), + _aCJ_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aCK_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aCJ_), + _aCL_=caml_call2(Runtime_ocaml_Runtime[83],_aCK_,_aCI_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jt_,_aCL_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Ju_,[0],_aCD_,_aCC_)}, + _asb_= + function(param$0) + {function _aBU_(param) + {switch(zone[0]) + {case 0: + var _aB4_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$340); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aB4_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29575) + :caml_call1(Runtime_ocaml_Runtime[31],cst_35642); + var _aB5_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$231); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aB5_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38322); + var _aB6_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$70); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aB6_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39393); + var _aB7_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$50); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aB7_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40501); + var _aB8_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$46); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aB8_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41588); + var _aB9_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$54); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aB9_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42469); + var + _aB__=caml_call1(Runtime_ocaml_Runtime[46],cst_5$55), + _aB$_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aB__), + _aCa_=caml_call1(Runtime_ocaml_Runtime[69],_aB$_), + _aCb_=caml_call1(Runtime_ocaml_Runtime[31],cst_3698), + _aCc_=caml_call2(Runtime_ocaml_Runtime[104],_aCb_,_aCa_), + _aCd_=caml_call1(Runtime_ocaml_Runtime[31],cst_42469$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aCd_,_aCc_); + case 1: + var _aCe_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$341); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCe_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25946) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31806); + var _aCf_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$232); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCf_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34433); + var _aCg_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$71); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCg_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35625); + var _aCh_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$51); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCh_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36852); + var _aCi_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$47); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCi_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38063); + var _aCj_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$56); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCj_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40758); + var + _aCk_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$57), + _aCl_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aCk_), + _aCm_=caml_call1(Runtime_ocaml_Runtime[69],_aCl_), + _aCn_=caml_call1(Runtime_ocaml_Runtime[31],cst_3544), + _aCo_=caml_call2(Runtime_ocaml_Runtime[104],_aCn_,_aCm_), + _aCp_=caml_call1(Runtime_ocaml_Runtime[31],cst_40758$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aCp_,_aCo_); + default: + var _aCq_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$342); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCq_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24339) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29522); + var _aCr_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$233); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCr_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32186); + var _aCs_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$72); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCs_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33516); + var _aCt_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$52); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCt_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34865); + var _aCu_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$48); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCu_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36195); + var _aCv_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$58); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCv_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38892); + var + _aCw_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$59), + _aCx_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aCw_), + _aCy_=caml_call1(Runtime_ocaml_Runtime[69],_aCx_), + _aCz_=caml_call1(Runtime_ocaml_Runtime[31],cst_3372), + _aCA_=caml_call2(Runtime_ocaml_Runtime[104],_aCz_,_aCy_), + _aCB_=caml_call1(Runtime_ocaml_Runtime[31],cst_38892$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aCB_,_aCA_)}} + function _aBV_(param$0) + {var + _aBW_=caml_call3(Runtime_ocaml_Runtime[57],2010,1,1), + _aBX_=caml_call2(Runtime_ocaml_Runtime[114],param,_aBW_), + _aBY_=caml_call3(Runtime_ocaml_Runtime[57],2009,1,1), + _aBZ_=caml_call2(Runtime_ocaml_Runtime[129],param,_aBY_), + _aB0_=caml_call2(Runtime_ocaml_Runtime[83],_aBZ_,_aBX_), + _aB1_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aB2_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aB1_), + _aB3_=caml_call2(Runtime_ocaml_Runtime[83],_aB2_,_aB0_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jv_,_aB3_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Jw_,[0],_aBV_,_aBU_)}, + _asc_= + function(param$0) + {function _aBa_(param) + {switch(zone[0]) + {case 0: + var _aBk_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$343); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBk_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_28728) + :caml_call1(Runtime_ocaml_Runtime[31],cst_34621); + var _aBl_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$234); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBl_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37224); + var _aBm_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$73); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBm_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38264); + var _aBn_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$53); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBn_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39340$0); + var _aBo_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$49); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBo_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40396); + var _aBp_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$60); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBp_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41252); + var + _aBq_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$61), + _aBr_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aBq_), + _aBs_=caml_call1(Runtime_ocaml_Runtime[69],_aBr_), + _aBt_=caml_call1(Runtime_ocaml_Runtime[31],cst_3592), + _aBu_=caml_call2(Runtime_ocaml_Runtime[104],_aBt_,_aBs_), + _aBv_=caml_call1(Runtime_ocaml_Runtime[31],cst_41252$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aBv_,_aBu_); + case 1: + var _aBw_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$344); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBw_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25203) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30895); + var _aBx_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$235); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBx_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33446); + var _aBy_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$74); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBy_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34604); + var _aBz_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$54); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBz_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35796); + var _aBA_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$50); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBA_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36972); + var _aBB_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$62); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBB_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39590); + var + _aBC_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$63), + _aBD_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aBC_), + _aBE_=caml_call1(Runtime_ocaml_Runtime[69],_aBD_), + _aBF_=caml_call1(Runtime_ocaml_Runtime[31],cst_3442), + _aBG_=caml_call2(Runtime_ocaml_Runtime[104],_aBF_,_aBE_), + _aBH_=caml_call1(Runtime_ocaml_Runtime[31],cst_39590$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aBH_,_aBG_); + default: + var _aBI_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$345); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBI_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23642) + :caml_call1(Runtime_ocaml_Runtime[31],cst_28676); + var _aBJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$236); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBJ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_31264$0); + var _aBK_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$75); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBK_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32556); + var _aBL_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$55); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBL_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33866); + var _aBM_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$51); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBM_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35158); + var _aBN_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$64); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBN_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37778); + var + _aBO_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$65), + _aBP_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aBO_), + _aBQ_=caml_call1(Runtime_ocaml_Runtime[69],_aBP_), + _aBR_=caml_call1(Runtime_ocaml_Runtime[31],cst_3275), + _aBS_=caml_call2(Runtime_ocaml_Runtime[104],_aBR_,_aBQ_), + _aBT_=caml_call1(Runtime_ocaml_Runtime[31],cst_37778$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aBT_,_aBS_)}} + function _aBb_(param$0) + {var + _aBc_=caml_call3(Runtime_ocaml_Runtime[57],2009,1,1), + _aBd_=caml_call2(Runtime_ocaml_Runtime[114],param,_aBc_), + _aBe_=caml_call3(Runtime_ocaml_Runtime[57],2008,1,1), + _aBf_=caml_call2(Runtime_ocaml_Runtime[129],param,_aBe_), + _aBg_=caml_call2(Runtime_ocaml_Runtime[83],_aBf_,_aBd_), + _aBh_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aBi_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aBh_), + _aBj_=caml_call2(Runtime_ocaml_Runtime[83],_aBi_,_aBg_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jx_,_aBj_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Jy_,[0],_aBb_,_aBa_)}, + _asd_= + function(param$0) + {function _aAs_(param) + {switch(zone[0]) + {case 0: + var _aAC_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$346); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAC_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27956) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33691); + var _aAD_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$237); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAD_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36224); + var _aAE_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$76); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAE_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37236); + var _aAF_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$56); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAF_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38283); + var _aAG_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$52); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAG_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39311); + var _aAH_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$66); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAH_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40144); + var + _aAI_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$67), + _aAJ_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aAI_), + _aAK_=caml_call1(Runtime_ocaml_Runtime[69],_aAJ_), + _aAL_=caml_call1(Runtime_ocaml_Runtime[31],cst_3496), + _aAM_=caml_call2(Runtime_ocaml_Runtime[104],_aAL_,_aAK_), + _aAN_=caml_call1(Runtime_ocaml_Runtime[31],cst_40144$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aAN_,_aAM_); + case 1: + var _aAO_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$347); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAO_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24526) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30065); + var _aAP_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$238); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAP_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32548); + var _aAQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$77); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAQ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33675); + var _aAR_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$57); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAR_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34865$0); + var _aAS_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$53); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAS_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35979); + var _aAT_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$68); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAT_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38527); + var + _aAU_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$69), + _aAV_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aAU_), + _aAW_=caml_call1(Runtime_ocaml_Runtime[69],_aAV_), + _aAX_=caml_call1(Runtime_ocaml_Runtime[31],cst_3350), + _aAY_=caml_call2(Runtime_ocaml_Runtime[104],_aAX_,_aAW_), + _aAZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_38527$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aAZ_,_aAY_); + default: + var _aA0_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$348); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aA0_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23007) + :caml_call1(Runtime_ocaml_Runtime[31],cst_27906); + var _aA1_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$239); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aA1_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_30424); + var _aA2_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$78); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aA2_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_31682); + var _aA3_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$58); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aA3_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32956$0); + var _aA4_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$54); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aA4_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34214); + var _aA5_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$70); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aA5_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36733); + var + _aA6_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$71), + _aA7_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aA6_), + _aA8_=caml_call1(Runtime_ocaml_Runtime[69],_aA7_), + _aA9_=caml_call1(Runtime_ocaml_Runtime[31],cst_3187), + _aA__=caml_call2(Runtime_ocaml_Runtime[104],_aA9_,_aA8_), + _aA$_=caml_call1(Runtime_ocaml_Runtime[31],cst_36733$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aA$_,_aA__)}} + function _aAt_(param$0) + {var + _aAu_=caml_call3(Runtime_ocaml_Runtime[57],2008,1,1), + _aAv_=caml_call2(Runtime_ocaml_Runtime[114],param,_aAu_), + _aAw_=caml_call3(Runtime_ocaml_Runtime[57],2007,1,1), + _aAx_=caml_call2(Runtime_ocaml_Runtime[129],param,_aAw_), + _aAy_=caml_call2(Runtime_ocaml_Runtime[83],_aAx_,_aAv_), + _aAz_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aAA_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aAz_), + _aAB_=caml_call2(Runtime_ocaml_Runtime[83],_aAA_,_aAy_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jz_,_aAB_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JA_,[0],_aAt_,_aAs_)}, + _ase_= + function(param$0) + {function _azK_(param) + {switch(zone[0]) + {case 0: + var _azU_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$349); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azU_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27195) + :caml_call1(Runtime_ocaml_Runtime[31],cst_32773); + var _azV_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$240); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azV_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35237); + var _azW_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$79); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azW_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36222); + var _azX_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$59); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azX_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37240); + var _azY_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$55); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azY_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38240); + var _azZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$72); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azZ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39051); + var + _az0_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$73), + _az1_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_az0_), + _az2_=caml_call1(Runtime_ocaml_Runtime[69],_az1_), + _az3_=caml_call1(Runtime_ocaml_Runtime[31],cst_3401), + _az4_=caml_call2(Runtime_ocaml_Runtime[104],_az3_,_az2_), + _az5_=caml_call1(Runtime_ocaml_Runtime[31],cst_39051$0); + return caml_call2(Runtime_ocaml_Runtime[93],_az5_,_az4_); + case 1: + var _az6_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$350); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_az6_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23858) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29246); + var _az7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$241); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_az7_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_31661); + var _az8_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$80); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_az8_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32758); + var _az9_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$60); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_az9_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33886); + var _az__=caml_call1(Runtime_ocaml_Runtime[46],cst_4$56); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_az__)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34999); + var _az$_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$74); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_az$_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37478); + var + _aAa_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$75), + _aAb_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aAa_), + _aAc_=caml_call1(Runtime_ocaml_Runtime[69],_aAb_), + _aAd_=caml_call1(Runtime_ocaml_Runtime[31],cst_3259), + _aAe_=caml_call2(Runtime_ocaml_Runtime[104],_aAd_,_aAc_), + _aAf_=caml_call1(Runtime_ocaml_Runtime[31],cst_37478$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aAf_,_aAe_); + default: + var _aAg_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$351); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAg_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_22380) + :caml_call1(Runtime_ocaml_Runtime[31],cst_27146); + var _aAh_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$242); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAh_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_29595); + var _aAi_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$81); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAi_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_30819); + var _aAj_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$61); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAj_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32058); + var _aAk_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$57); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAk_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33282); + var _aAl_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$76); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAl_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35762); + var + _aAm_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$77), + _aAn_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aAm_), + _aAo_=caml_call1(Runtime_ocaml_Runtime[69],_aAn_), + _aAp_=caml_call1(Runtime_ocaml_Runtime[31],cst_3100), + _aAq_=caml_call2(Runtime_ocaml_Runtime[104],_aAp_,_aAo_), + _aAr_=caml_call1(Runtime_ocaml_Runtime[31],cst_35762$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aAr_,_aAq_)}} + function _azL_(param$0) + {var + _azM_=caml_call3(Runtime_ocaml_Runtime[57],2007,1,1), + _azN_=caml_call2(Runtime_ocaml_Runtime[114],param,_azM_), + _azO_=caml_call3(Runtime_ocaml_Runtime[57],2005,9,1), + _azP_=caml_call2(Runtime_ocaml_Runtime[129],param,_azO_), + _azQ_=caml_call2(Runtime_ocaml_Runtime[83],_azP_,_azN_), + _azR_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _azS_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_azR_), + _azT_=caml_call2(Runtime_ocaml_Runtime[83],_azS_,_azQ_); + return caml_call2(Runtime_ocaml_Runtime[29],_JB_,_azT_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JC_,[0],_azL_,_azK_)}, + _asf_= + function(param$0) + {function _ay2_(param) + {switch(zone[0]) + {case 0: + var _aza_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$352); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aza_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26714$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_32194); + var _azb_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$243); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azb_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34614); + var _azc_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$82); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azc_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35582); + var _azd_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$62); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azd_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36582); + var _aze_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$58); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aze_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37564); + var _azf_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$78); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azf_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38361); + var + _azg_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$79), + _azh_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_azg_), + _azi_=caml_call1(Runtime_ocaml_Runtime[69],_azh_), + _azj_=caml_call1(Runtime_ocaml_Runtime[31],cst_3341), + _azk_=caml_call2(Runtime_ocaml_Runtime[104],_azj_,_azi_), + _azl_=caml_call1(Runtime_ocaml_Runtime[31],cst_38361$0); + return caml_call2(Runtime_ocaml_Runtime[93],_azl_,_azk_); + case 1: + var _azm_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$353); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azm_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23436) + :caml_call1(Runtime_ocaml_Runtime[31],cst_28729); + var _azn_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$244); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azn_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_31101); + var _azo_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$83); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azo_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32179); + var _azp_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$63); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azp_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33287); + var _azq_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$59); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azq_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34380); + var _azr_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$80); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azr_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36815); + var + _azs_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$81), + _azt_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_azs_), + _azu_=caml_call1(Runtime_ocaml_Runtime[69],_azt_), + _azv_=caml_call1(Runtime_ocaml_Runtime[31],cst_3201), + _azw_=caml_call2(Runtime_ocaml_Runtime[104],_azv_,_azu_), + _azx_=caml_call1(Runtime_ocaml_Runtime[31],cst_36815$0); + return caml_call2(Runtime_ocaml_Runtime[93],_azx_,_azw_); + default: + var _azy_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$354); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azy_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_21984) + :caml_call1(Runtime_ocaml_Runtime[31],cst_26666); + var _azz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$245); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azz_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_29072); + var _azA_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$84); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azA_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_30274); + var _azB_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$64); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azB_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_31491); + var _azC_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$60); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azC_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32694); + var _azD_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$82); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azD_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35130); + var + _azE_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$83), + _azF_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_azE_), + _azG_=caml_call1(Runtime_ocaml_Runtime[69],_azF_), + _azH_=caml_call1(Runtime_ocaml_Runtime[31],cst_3045), + _azI_=caml_call2(Runtime_ocaml_Runtime[104],_azH_,_azG_), + _azJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_35130$0); + return caml_call2(Runtime_ocaml_Runtime[93],_azJ_,_azI_)}} + function _ay3_(param$0) + {var + _ay4_=caml_call3(Runtime_ocaml_Runtime[57],2005,9,1), + _ay5_=caml_call2(Runtime_ocaml_Runtime[114],param,_ay4_), + _ay6_=caml_call3(Runtime_ocaml_Runtime[57],2003,7,1), + _ay7_=caml_call2(Runtime_ocaml_Runtime[129],param,_ay6_), + _ay8_=caml_call2(Runtime_ocaml_Runtime[83],_ay7_,_ay5_), + _ay9_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _ay__= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_ay9_), + _ay$_=caml_call2(Runtime_ocaml_Runtime[83],_ay__,_ay8_); + return caml_call2(Runtime_ocaml_Runtime[29],_JD_,_ay$_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JE_,[0],_ay3_,_ay2_)}, + _asg_= + function(param$0) + {function _ayi_(param) + {switch(zone[0]) + {case 0: + var _ays_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$355); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ays_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26397) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31812); + var _ayt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$246); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayt_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34204); + var _ayu_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$85); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayu_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35160); + var _ayv_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$65); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayv_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36148); + var _ayw_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$61); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayw_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37119); + var _ayx_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$84); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayx_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37906); + var + _ayy_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$85), + _ayz_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_ayy_), + _ayA_=caml_call1(Runtime_ocaml_Runtime[69],_ayz_), + _ayB_=caml_call1(Runtime_ocaml_Runtime[31],cst_3301), + _ayC_=caml_call2(Runtime_ocaml_Runtime[104],_ayB_,_ayA_), + _ayD_=caml_call1(Runtime_ocaml_Runtime[31],cst_37906$0); + return caml_call2(Runtime_ocaml_Runtime[93],_ayD_,_ayC_); + case 1: + var _ayE_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$356); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayE_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23158) + :caml_call1(Runtime_ocaml_Runtime[31],cst_28388); + var _ayF_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$247); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayF_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_30732); + var _ayG_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$86); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayG_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_31797$2); + var _ayH_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$66); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayH_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32892); + var _ayI_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$62); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayI_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33972); + var _ayJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$86); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayJ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36378); + var + _ayK_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$87), + _ayL_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_ayK_), + _ayM_=caml_call1(Runtime_ocaml_Runtime[69],_ayL_), + _ayN_=caml_call1(Runtime_ocaml_Runtime[31],cst_3163), + _ayO_=caml_call2(Runtime_ocaml_Runtime[104],_ayN_,_ayM_), + _ayP_=caml_call1(Runtime_ocaml_Runtime[31],cst_36378$0); + return caml_call2(Runtime_ocaml_Runtime[93],_ayP_,_ayO_); + default: + var _ayQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$357); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayQ_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_21723) + :caml_call1(Runtime_ocaml_Runtime[31],cst_26350); + var _ayR_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$248); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayR_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_28727); + var _ayS_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$87); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayS_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_29915); + var _ayT_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$67); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayT_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_31118); + var _ayU_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$63); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayU_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32306); + var _ayV_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$88); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayV_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34713); + var + _ayW_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$89), + _ayX_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_ayW_), + _ayY_=caml_call1(Runtime_ocaml_Runtime[69],_ayX_), + _ayZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3009), + _ay0_=caml_call2(Runtime_ocaml_Runtime[104],_ayZ_,_ayY_), + _ay1_=caml_call1(Runtime_ocaml_Runtime[31],cst_34713$0); + return caml_call2(Runtime_ocaml_Runtime[93],_ay1_,_ay0_)}} + function _ayj_(param$0) + {var + _ayk_=caml_call3(Runtime_ocaml_Runtime[57],2003,7,1), + _ayl_=caml_call2(Runtime_ocaml_Runtime[114],param,_ayk_), + _aym_=caml_call3(Runtime_ocaml_Runtime[57],2002,7,1), + _ayn_=caml_call2(Runtime_ocaml_Runtime[129],param,_aym_), + _ayo_=caml_call2(Runtime_ocaml_Runtime[83],_ayn_,_ayl_), + _ayp_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _ayq_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_ayp_), + _ayr_=caml_call2(Runtime_ocaml_Runtime[83],_ayq_,_ayo_); + return caml_call2(Runtime_ocaml_Runtime[29],_JF_,_ayr_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JG_,[0],_ayj_,_ayi_)}, + _ash_= + function(param$0) + {function _axA_(param) + {switch(zone[0]) + {case 0: + var _axK_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$358); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axK_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26084) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31435); + var _axL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$249); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axL_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33798); + var _axM_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$88); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axM_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34743); + var _axN_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$68); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axN_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35719); + var _axO_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$64); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axO_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36679); + var _axP_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$90); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axP_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37457); + var + _axQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$91), + _axR_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_axQ_), + _axS_=caml_call1(Runtime_ocaml_Runtime[69],_axR_), + _axT_=caml_call1(Runtime_ocaml_Runtime[31],cst_3262), + _axU_=caml_call2(Runtime_ocaml_Runtime[104],_axT_,_axS_), + _axV_=caml_call1(Runtime_ocaml_Runtime[31],cst_37457$0); + return caml_call2(Runtime_ocaml_Runtime[93],_axV_,_axU_); + case 1: + var _axW_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$359); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axW_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_22883) + :caml_call1(Runtime_ocaml_Runtime[31],cst_28051); + var _axX_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$250); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axX_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_30368); + var _axY_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$89); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axY_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_31420); + var _axZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$69); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axZ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32502); + var _ax0_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$65); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ax0_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33569); + var _ax1_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$92); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ax1_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35947); + var + _ax2_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$93), + _ax3_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_ax2_), + _ax4_=caml_call1(Runtime_ocaml_Runtime[69],_ax3_), + _ax5_=caml_call1(Runtime_ocaml_Runtime[31],cst_3125), + _ax6_=caml_call2(Runtime_ocaml_Runtime[104],_ax5_,_ax4_), + _ax7_=caml_call1(Runtime_ocaml_Runtime[31],cst_35947$0); + return caml_call2(Runtime_ocaml_Runtime[93],_ax7_,_ax6_); + default: + var _ax8_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$360); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ax8_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_21465) + :caml_call1(Runtime_ocaml_Runtime[31],cst_26038); + var _ax9_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$251); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ax9_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_28386); + var _ax__=caml_call1(Runtime_ocaml_Runtime[46],cst_2$90); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ax__)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_29560); + var _ax$_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$70); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ax$_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_30749); + var _aya_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$66); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aya_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_31923); + var _ayb_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$94); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayb_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34301); + var + _ayc_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$95), + _ayd_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_ayc_), + _aye_=caml_call1(Runtime_ocaml_Runtime[69],_ayd_), + _ayf_=caml_call1(Runtime_ocaml_Runtime[31],cst_2973), + _ayg_=caml_call2(Runtime_ocaml_Runtime[104],_ayf_,_aye_), + _ayh_=caml_call1(Runtime_ocaml_Runtime[31],cst_34301$0); + return caml_call2(Runtime_ocaml_Runtime[93],_ayh_,_ayg_)}} + function _axB_(param$0) + {var + _axC_=caml_call3(Runtime_ocaml_Runtime[57],2002,7,1), + _axD_=caml_call2(Runtime_ocaml_Runtime[114],param,_axC_), + _axE_=caml_call3(Runtime_ocaml_Runtime[57],2002,1,1), + _axF_=caml_call2(Runtime_ocaml_Runtime[129],param,_axE_), + _axG_=caml_call2(Runtime_ocaml_Runtime[83],_axF_,_axD_), + _axH_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _axI_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_axH_), + _axJ_=caml_call2(Runtime_ocaml_Runtime[83],_axI_,_axG_); + return caml_call2(Runtime_ocaml_Runtime[29],_JH_,_axJ_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JI_,[0],_axB_,_axA_)}, + _asi_= + function(param$0) + {function _awR_(param) + {switch(zone[0]) + {case 0: + var _aw1_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$361); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aw1_)) + var + _aw2_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_171100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_206200); + else + {var _aw3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$252); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aw3_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_221700); + else + {var _aw4_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$91); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aw4_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_227900); + else + {var _aw5_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$71); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aw5_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_234300); + else + {var _aw6_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$67); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aw6_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_240600); + else + {var _aw7_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$96); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aw7_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_245700); + else + var + _aw8_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$97), + _aw9_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aw8_), + _aw__=caml_call1(Runtime_ocaml_Runtime[69],_aw9_), + _aw$_=caml_call1(Runtime_ocaml_Runtime[31],cst_21400), + _axa_=caml_call2(Runtime_ocaml_Runtime[104],_aw$_,_aw__), + _axb_=caml_call1(Runtime_ocaml_Runtime[31],cst_245700$0), + _aw2_=caml_call2(Runtime_ocaml_Runtime[93],_axb_,_axa_)}}}}} + break; + case 1: + var _axc_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$362); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axc_)) + var + _aw2_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_150100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_184000$0); + else + {var _axd_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$253); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axd_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_199200); + else + {var _axe_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$92); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axe_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_206100); + else + {var _axf_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$72); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axf_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_213200); + else + {var _axg_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$68); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axg_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_220200); + else + {var _axh_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$98); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axh_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_235800); + else + var + _axi_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$99), + _axj_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_axi_), + _axk_=caml_call1(Runtime_ocaml_Runtime[69],_axj_), + _axl_=caml_call1(Runtime_ocaml_Runtime[31],cst_20500), + _axm_=caml_call2(Runtime_ocaml_Runtime[104],_axl_,_axk_), + _axn_=caml_call1(Runtime_ocaml_Runtime[31],cst_235800$0), + _aw2_=caml_call2(Runtime_ocaml_Runtime[93],_axn_,_axm_)}}}}} + break; + default: + var _axo_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$363); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axo_)) + var + _aw2_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_140800) + :caml_call1(Runtime_ocaml_Runtime[31],cst_170800); + else + {var _axp_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$254); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axp_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_186200); + else + {var _axq_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$93); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axq_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_193900); + else + {var _axr_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$73); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axr_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_201700); + else + {var _axs_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$69); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axs_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_209400); + else + {var _axt_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$100); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axt_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_225000); + else + var + _axu_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$101), + _axv_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_axu_), + _axw_=caml_call1(Runtime_ocaml_Runtime[69],_axv_), + _axx_=caml_call1(Runtime_ocaml_Runtime[31],cst_19500), + _axy_=caml_call2(Runtime_ocaml_Runtime[104],_axx_,_axw_), + _axz_=caml_call1(Runtime_ocaml_Runtime[31],cst_225000$0), + _aw2_=caml_call2(Runtime_ocaml_Runtime[93],_axz_,_axy_)}}}}}} + return caml_call2 + (Runtime_ocaml_Runtime[104],_aw2_,taux_francs_vers_euros)} + function _awS_(param$0) + {var + _awT_=caml_call3(Runtime_ocaml_Runtime[57],2002,1,1), + _awU_=caml_call2(Runtime_ocaml_Runtime[114],param,_awT_), + _awV_=caml_call3(Runtime_ocaml_Runtime[57],2001,7,1), + _awW_=caml_call2(Runtime_ocaml_Runtime[129],param,_awV_), + _awX_=caml_call2(Runtime_ocaml_Runtime[83],_awW_,_awU_), + _awY_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _awZ_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_awY_), + _aw0_=caml_call2(Runtime_ocaml_Runtime[83],_awZ_,_awX_); + return caml_call2(Runtime_ocaml_Runtime[29],_JJ_,_aw0_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JK_,[0],_awS_,_awR_)}, + _asj_= + function(param$0) + {function _av8_(param) + {switch(zone[0]) + {case 0: + var _awg_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$364); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awg_)) + var + _awh_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_169100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_203800); + else + {var _awi_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$255); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awi_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_219100); + else + {var _awj_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$94); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awj_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_225200); + else + {var _awk_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$74); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awk_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_231500); + else + {var _awl_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$70); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awl_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_237700); + else + {var _awm_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$102); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awm_)) + var + _awh_= + caml_call1(Runtime_ocaml_Runtime[31],cst_242800$1); + else + var + _awn_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$103), + _awo_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_awn_), + _awp_=caml_call1(Runtime_ocaml_Runtime[69],_awo_), + _awq_=caml_call1(Runtime_ocaml_Runtime[31],cst_21100), + _awr_=caml_call2(Runtime_ocaml_Runtime[104],_awq_,_awp_), + _aws_=caml_call1(Runtime_ocaml_Runtime[31],cst_242800$2), + _awh_=caml_call2(Runtime_ocaml_Runtime[93],_aws_,_awr_)}}}}} + break; + case 1: + var _awt_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$365); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awt_)) + var + _awh_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_148300) + :caml_call1(Runtime_ocaml_Runtime[31],cst_181800); + else + {var _awu_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$256); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awu_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_196800); + else + {var _awv_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$95); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awv_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_203700); + else + {var _aww_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$75); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aww_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_210700); + else + {var _awx_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$71); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awx_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_217600); + else + {var _awy_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$104); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awy_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_233000); + else + var + _awz_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$105), + _awA_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_awz_), + _awB_=caml_call1(Runtime_ocaml_Runtime[69],_awA_), + _awC_=caml_call1(Runtime_ocaml_Runtime[31],cst_20300), + _awD_=caml_call2(Runtime_ocaml_Runtime[104],_awC_,_awB_), + _awE_=caml_call1(Runtime_ocaml_Runtime[31],cst_233000$0), + _awh_=caml_call2(Runtime_ocaml_Runtime[93],_awE_,_awD_)}}}}} + break; + default: + var _awF_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$366); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awF_)) + var + _awh_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_139100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_168800); + else + {var _awG_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$257); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awG_)) + var + _awh_= + caml_call1(Runtime_ocaml_Runtime[31],cst_184000$1); + else + {var _awH_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$96); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awH_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_191600); + else + {var _awI_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$76); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awI_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_199300); + else + {var _awJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$72); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awJ_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_206900); + else + {var _awK_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$106); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awK_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_222300); + else + var + _awL_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$107), + _awM_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_awL_), + _awN_=caml_call1(Runtime_ocaml_Runtime[69],_awM_), + _awO_=caml_call1(Runtime_ocaml_Runtime[31],cst_19300), + _awP_=caml_call2(Runtime_ocaml_Runtime[104],_awO_,_awN_), + _awQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_222300$0), + _awh_=caml_call2(Runtime_ocaml_Runtime[93],_awQ_,_awP_)}}}}}} + return caml_call2 + (Runtime_ocaml_Runtime[104],_awh_,taux_francs_vers_euros)} + function _av9_(param$0) + {var + _av__=caml_call3(Runtime_ocaml_Runtime[57],2001,7,1), + _av$_=caml_call2(Runtime_ocaml_Runtime[114],param,_av__), + _awa_=caml_call3(Runtime_ocaml_Runtime[57],2000,7,1), + _awb_=caml_call2(Runtime_ocaml_Runtime[129],param,_awa_), + _awc_=caml_call2(Runtime_ocaml_Runtime[83],_awb_,_av$_), + _awd_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _awe_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_awd_), + _awf_=caml_call2(Runtime_ocaml_Runtime[83],_awe_,_awc_); + return caml_call2(Runtime_ocaml_Runtime[29],_JL_,_awf_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JM_,[0],_av9_,_av8_)}, + _ask_= + function(param$0) + {function _avn_(param) + {switch(zone[0]) + {case 0: + var _avx_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$367); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avx_)) + var + _avy_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_167400) + :caml_call1(Runtime_ocaml_Runtime[31],cst_201800); + else + {var _avz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$258); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avz_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_216900); + else + {var _avA_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$97); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avA_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_223000); + else + {var _avB_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$77); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avB_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_229200); + else + {var _avC_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$73); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avC_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_235300); + else + {var _avD_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$108); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avD_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_240400); + else + var + _avE_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$109), + _avF_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_avE_), + _avG_=caml_call1(Runtime_ocaml_Runtime[69],_avF_), + _avH_=caml_call1(Runtime_ocaml_Runtime[31],cst_20900), + _avI_=caml_call2(Runtime_ocaml_Runtime[104],_avH_,_avG_), + _avJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_240400$0), + _avy_=caml_call2(Runtime_ocaml_Runtime[93],_avJ_,_avI_)}}}}} + break; + case 1: + var _avK_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$368); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avK_)) + var + _avy_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_146800) + :caml_call1(Runtime_ocaml_Runtime[31],cst_180000); + else + {var _avL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$259); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avL_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_194900); + else + {var _avM_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$98); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avM_)) + var + _avy_= + caml_call1(Runtime_ocaml_Runtime[31],cst_201700$0); + else + {var _avN_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$78); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avN_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_208600); + else + {var _avO_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$74); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avO_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_215400); + else + {var _avP_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$110); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avP_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_230700); + else + var + _avQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$111), + _avR_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_avQ_), + _avS_=caml_call1(Runtime_ocaml_Runtime[69],_avR_), + _avT_=caml_call1(Runtime_ocaml_Runtime[31],cst_20100), + _avU_=caml_call2(Runtime_ocaml_Runtime[104],_avT_,_avS_), + _avV_=caml_call1(Runtime_ocaml_Runtime[31],cst_230700$0), + _avy_=caml_call2(Runtime_ocaml_Runtime[93],_avV_,_avU_)}}}}} + break; + default: + var _avW_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$369); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avW_)) + var + _avy_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_137700) + :caml_call1(Runtime_ocaml_Runtime[31],cst_167100); + else + {var _avX_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$260); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avX_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_182200); + else + {var _avY_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$99); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avY_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_189700); + else + {var _avZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$79); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avZ_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_197300); + else + {var _av0_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$75); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_av0_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_204900); + else + {var _av1_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$112); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_av1_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_220100); + else + var + _av2_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$113), + _av3_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_av2_), + _av4_=caml_call1(Runtime_ocaml_Runtime[69],_av3_), + _av5_=caml_call1(Runtime_ocaml_Runtime[31],cst_19100), + _av6_=caml_call2(Runtime_ocaml_Runtime[104],_av5_,_av4_), + _av7_=caml_call1(Runtime_ocaml_Runtime[31],cst_220100$0), + _avy_=caml_call2(Runtime_ocaml_Runtime[93],_av7_,_av6_)}}}}}} + return caml_call2 + (Runtime_ocaml_Runtime[104],_avy_,taux_francs_vers_euros)} + function _avo_(param$0) + {var + _avp_=caml_call3(Runtime_ocaml_Runtime[57],2000,7,1), + _avq_=caml_call2(Runtime_ocaml_Runtime[114],param,_avp_), + _avr_=caml_call3(Runtime_ocaml_Runtime[57],1999,7,1), + _avs_=caml_call2(Runtime_ocaml_Runtime[129],param,_avr_), + _avt_=caml_call2(Runtime_ocaml_Runtime[83],_avs_,_avq_), + _avu_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _avv_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_avu_), + _avw_=caml_call2(Runtime_ocaml_Runtime[83],_avv_,_avt_); + return caml_call2(Runtime_ocaml_Runtime[29],_JN_,_avw_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JO_,[0],_avo_,_avn_)}, + _asl_= + function(param$0) + {function _auE_(param) + {switch(zone[0]) + {case 0: + var _auO_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$370); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auO_)) + var + _auP_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_167200) + :caml_call1(Runtime_ocaml_Runtime[31],cst_201600); + else + {var _auQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$261); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auQ_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_216700); + else + {var _auR_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$100); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auR_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_222800); + else + {var _auS_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$80); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auS_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_229000); + else + {var _auT_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$76); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auT_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_235100); + else + {var _auU_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$114); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auU_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_240200); + else + var + _auV_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$115), + _auW_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_auV_), + _auX_=caml_call1(Runtime_ocaml_Runtime[69],_auW_), + _auY_=caml_call1(Runtime_ocaml_Runtime[31],cst_20900$0), + _auZ_=caml_call2(Runtime_ocaml_Runtime[104],_auY_,_auX_), + _au0_=caml_call1(Runtime_ocaml_Runtime[31],cst_240200$0), + _auP_=caml_call2(Runtime_ocaml_Runtime[93],_au0_,_auZ_)}}}}} + break; + case 1: + var _au1_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$371); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_au1_)) + var + _auP_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_146700) + :caml_call1(Runtime_ocaml_Runtime[31],cst_179800); + else + {var _au2_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$262); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_au2_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_194700); + else + {var _au3_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$101); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_au3_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_201500); + else + {var _au4_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$81); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_au4_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_208400); + else + {var _au5_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$77); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_au5_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_215200); + else + {var _au6_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$116); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_au6_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_230500); + else + var + _au7_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$117), + _au8_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_au7_), + _au9_=caml_call1(Runtime_ocaml_Runtime[69],_au8_), + _au__=caml_call1(Runtime_ocaml_Runtime[31],cst_20100$0), + _au$_=caml_call2(Runtime_ocaml_Runtime[104],_au__,_au9_), + _ava_=caml_call1(Runtime_ocaml_Runtime[31],cst_230500$0), + _auP_=caml_call2(Runtime_ocaml_Runtime[93],_ava_,_au$_)}}}}} + break; + default: + var _avb_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$372); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avb_)) + var + _auP_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_137600) + :caml_call1(Runtime_ocaml_Runtime[31],cst_166900); + else + {var _avc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$263); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avc_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_182000); + else + {var _avd_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$102); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avd_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_189500); + else + {var _ave_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$82); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ave_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_197100); + else + {var _avf_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$78); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avf_)) + var + _auP_= + caml_call1(Runtime_ocaml_Runtime[31],cst_204700$0); + else + {var _avg_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$118); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avg_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_219900); + else + var + _avh_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$119), + _avi_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_avh_), + _avj_=caml_call1(Runtime_ocaml_Runtime[69],_avi_), + _avk_=caml_call1(Runtime_ocaml_Runtime[31],cst_19100$0), + _avl_=caml_call2(Runtime_ocaml_Runtime[104],_avk_,_avj_), + _avm_=caml_call1(Runtime_ocaml_Runtime[31],cst_219900$0), + _auP_=caml_call2(Runtime_ocaml_Runtime[93],_avm_,_avl_)}}}}}} + return caml_call2 + (Runtime_ocaml_Runtime[104],_auP_,taux_francs_vers_euros)} + function _auF_(param$0) + {var + _auG_=caml_call3(Runtime_ocaml_Runtime[57],1999,7,1), + _auH_=caml_call2(Runtime_ocaml_Runtime[114],param,_auG_), + _auI_=caml_call3(Runtime_ocaml_Runtime[57],1998,7,1), + _auJ_=caml_call2(Runtime_ocaml_Runtime[129],param,_auI_), + _auK_=caml_call2(Runtime_ocaml_Runtime[83],_auJ_,_auH_), + _auL_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _auM_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_auL_), + _auN_=caml_call2(Runtime_ocaml_Runtime[83],_auM_,_auK_); + return caml_call2(Runtime_ocaml_Runtime[29],_JP_,_auN_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JQ_,[0],_auF_,_auE_)}, + _asm_= + function(param$0) + {function _atV_(param) + {switch(zone[0]) + {case 0: + var _at5_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$373); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_at5_)) + var + _at6_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_163300) + :caml_call1(Runtime_ocaml_Runtime[31],cst_196900); + else + {var _at7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$264); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_at7_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_211600); + else + {var _at8_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$103); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_at8_)) + var + _at6_= + caml_call1(Runtime_ocaml_Runtime[31],cst_217600$0); + else + {var _at9_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$83); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_at9_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_223600); + else + {var _at__=caml_call1(Runtime_ocaml_Runtime[46],cst_4$79); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_at__)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_229600); + else + {var _at$_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$120); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_at$_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_234600); + else + var + _aua_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$121), + _aub_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aua_), + _auc_=caml_call1(Runtime_ocaml_Runtime[69],_aub_), + _aud_=caml_call1(Runtime_ocaml_Runtime[31],cst_20400), + _aue_=caml_call2(Runtime_ocaml_Runtime[104],_aud_,_auc_), + _auf_=caml_call1(Runtime_ocaml_Runtime[31],cst_234600$0), + _at6_=caml_call2(Runtime_ocaml_Runtime[93],_auf_,_aue_)}}}}} + break; + case 1: + var _aug_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$374); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aug_)) + var + _at6_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_143300) + :caml_call1(Runtime_ocaml_Runtime[31],cst_175600); + else + {var _auh_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$265); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auh_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_190100); + else + {var _aui_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$104); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aui_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_196600); + else + {var _auj_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$84); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auj_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_203500); + else + {var _auk_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$80); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auk_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_210200); + else + {var _aul_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$122); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aul_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_225100); + else + var + _aum_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$123), + _aun_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aum_), + _auo_=caml_call1(Runtime_ocaml_Runtime[69],_aun_), + _aup_=caml_call1(Runtime_ocaml_Runtime[31],cst_19600), + _auq_=caml_call2(Runtime_ocaml_Runtime[104],_aup_,_auo_), + _aur_=caml_call1(Runtime_ocaml_Runtime[31],cst_225100$0), + _at6_=caml_call2(Runtime_ocaml_Runtime[93],_aur_,_auq_)}}}}} + break; + default: + var _aus_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$375); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aus_)) + var + _at6_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_134400) + :caml_call1(Runtime_ocaml_Runtime[31],cst_163000$0); + else + {var _aut_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$266); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aut_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_177700); + else + {var _auu_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$105); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auu_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_185100); + else + {var _auv_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$85); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auv_)) + var + _at6_= + caml_call1(Runtime_ocaml_Runtime[31],cst_192500$0); + else + {var _auw_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$81); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auw_)) + var + _at6_= + caml_call1(Runtime_ocaml_Runtime[31],cst_199900$0); + else + {var _aux_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$124); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aux_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_214700); + else + var + _auy_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$125), + _auz_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_auy_), + _auA_=caml_call1(Runtime_ocaml_Runtime[69],_auz_), + _auB_=caml_call1(Runtime_ocaml_Runtime[31],cst_18700), + _auC_=caml_call2(Runtime_ocaml_Runtime[104],_auB_,_auA_), + _auD_=caml_call1(Runtime_ocaml_Runtime[31],cst_214700$0), + _at6_=caml_call2(Runtime_ocaml_Runtime[93],_auD_,_auC_)}}}}}} + return caml_call2 + (Runtime_ocaml_Runtime[104],_at6_,taux_francs_vers_euros)} + function _atW_(param$0) + {var + _atX_=caml_call3(Runtime_ocaml_Runtime[57],1998,7,1), + _atY_=caml_call2(Runtime_ocaml_Runtime[114],param,_atX_), + _atZ_=caml_call3(Runtime_ocaml_Runtime[57],1997,7,1), + _at0_=caml_call2(Runtime_ocaml_Runtime[129],param,_atZ_), + _at1_=caml_call2(Runtime_ocaml_Runtime[83],_at0_,_atY_), + _at2_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _at3_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_at2_), + _at4_=caml_call2(Runtime_ocaml_Runtime[83],_at3_,_at1_); + return caml_call2(Runtime_ocaml_Runtime[29],_JR_,_at4_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JS_,[0],_atW_,_atV_)}, + _asn_= + function(param$0) + {function _ata_(param) + {switch(zone[0]) + {case 0: + var _atk_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$376); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atk_)) + var + _atl_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_160400) + :caml_call1(Runtime_ocaml_Runtime[31],cst_193400); + else + {var _atm_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$267); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atm_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_207800); + else + {var _atn_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$106); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atn_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_213700); + else + {var _ato_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$86); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ato_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_219600); + else + {var _atp_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$82); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atp_)) + var + _atl_= + caml_call1(Runtime_ocaml_Runtime[31],cst_225500$0); + else + {var _atq_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$126); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atq_)) + var + _atl_= + caml_call1(Runtime_ocaml_Runtime[31],cst_230500$1); + else + var + _atr_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$127), + _ats_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_atr_), + _att_=caml_call1(Runtime_ocaml_Runtime[69],_ats_), + _atu_=caml_call1(Runtime_ocaml_Runtime[31],cst_20000), + _atv_=caml_call2(Runtime_ocaml_Runtime[104],_atu_,_att_), + _atw_=caml_call1(Runtime_ocaml_Runtime[31],cst_230500$2), + _atl_=caml_call2(Runtime_ocaml_Runtime[93],_atw_,_atv_)}}}}} + break; + case 1: + var _atx_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$377); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atx_)) + var + _atl_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_140800$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_172500$0); + else + {var _aty_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$268); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aty_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_186700); + else + {var _atz_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$107); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atz_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_193300); + else + {var _atA_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$87); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atA_)) + var + _atl_= + caml_call1(Runtime_ocaml_Runtime[31],cst_199900$1); + else + {var _atB_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$83); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atB_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_206500); + else + {var _atC_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$128); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atC_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_221100); + else + var + _atD_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$129), + _atE_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_atD_), + _atF_=caml_call1(Runtime_ocaml_Runtime[69],_atE_), + _atG_=caml_call1(Runtime_ocaml_Runtime[31],cst_19300$0), + _atH_=caml_call2(Runtime_ocaml_Runtime[104],_atG_,_atF_), + _atI_=caml_call1(Runtime_ocaml_Runtime[31],cst_221100$0), + _atl_=caml_call2(Runtime_ocaml_Runtime[93],_atI_,_atH_)}}}}} + break; + default: + var _atJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$378); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atJ_)) + var + _atl_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_132000$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_180100$1); + else + {var _atK_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$269); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atK_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_174500); + else + {var _atL_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$108); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atL_)) + var + _atl_= + caml_call1(Runtime_ocaml_Runtime[31],cst_181800$0); + else + {var _atM_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$88); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atM_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_189100); + else + {var _atN_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$84); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atN_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_196400); + else + {var _atO_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$130); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atO_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_210900); + else + var + _atP_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$131), + _atQ_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_atP_), + _atR_=caml_call1(Runtime_ocaml_Runtime[69],_atQ_), + _atS_=caml_call1(Runtime_ocaml_Runtime[31],cst_18400), + _atT_=caml_call2(Runtime_ocaml_Runtime[104],_atS_,_atR_), + _atU_=caml_call1(Runtime_ocaml_Runtime[31],cst_210900$0), + _atl_=caml_call2(Runtime_ocaml_Runtime[93],_atU_,_atT_)}}}}}} + return caml_call2 + (Runtime_ocaml_Runtime[104],_atl_,taux_francs_vers_euros)} + function _atb_(param$0) + {var + _atc_=caml_call3(Runtime_ocaml_Runtime[57],1997,7,1), + _atd_=caml_call2(Runtime_ocaml_Runtime[114],param,_atc_), + _ate_=caml_call3(Runtime_ocaml_Runtime[57],1994,7,1), + _atf_=caml_call2(Runtime_ocaml_Runtime[129],param,_ate_), + _atg_=caml_call2(Runtime_ocaml_Runtime[83],_atf_,_atd_), + _ath_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _ati_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_ath_), + _atj_=caml_call2(Runtime_ocaml_Runtime[83],_ati_,_atg_); + return caml_call2(Runtime_ocaml_Runtime[29],_JT_,_atj_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JU_,[0],_atb_,_ata_)}, + _aso_= + [0, + function(param$0) + {function _asr_(param) + {switch(zone[0]) + {case 0: + var _asB_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$379); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asB_)) + var + _asC_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_158700) + :caml_call1(Runtime_ocaml_Runtime[31],cst_191300); + else + {var _asD_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$270); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asD_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_205500); + else + {var _asE_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$109); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asE_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_211300); + else + {var _asF_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$89); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asF_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_217100); + else + {var _asG_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$85); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asG_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_222900); + else + {var _asH_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$132); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asH_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_228000); + else + var + _asI_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$133), + _asJ_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_asI_), + _asK_=caml_call1(Runtime_ocaml_Runtime[69],_asJ_), + _asL_=caml_call1(Runtime_ocaml_Runtime[31],cst_19800), + _asM_=caml_call2(Runtime_ocaml_Runtime[104],_asL_,_asK_), + _asN_=caml_call1(Runtime_ocaml_Runtime[31],cst_228000$0), + _asC_=caml_call2(Runtime_ocaml_Runtime[93],_asN_,_asM_)}}}}} + break; + case 1: + var _asO_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$380); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asO_)) + var + _asC_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_139300) + :caml_call1(Runtime_ocaml_Runtime[31],cst_170600); + else + {var _asP_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$271); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asP_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_184700); + else + {var _asQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$110); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asQ_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_191200); + else + {var _asR_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$90); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asR_)) + var + _asC_= + caml_call1(Runtime_ocaml_Runtime[31],cst_197700$0); + else + {var _asS_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$86); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asS_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_204200); + else + {var _asT_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$134); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asT_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_218700); + else + var + _asU_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$135), + _asV_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_asU_), + _asW_=caml_call1(Runtime_ocaml_Runtime[69],_asV_), + _asX_=caml_call1(Runtime_ocaml_Runtime[31],cst_19100$1), + _asY_=caml_call2(Runtime_ocaml_Runtime[104],_asX_,_asW_), + _asZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_218700$0), + _asC_=caml_call2(Runtime_ocaml_Runtime[93],_asZ_,_asY_)}}}}} + break; + default: + var _as0_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$381); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_as0_)) + var + _asC_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_130600) + :caml_call1(Runtime_ocaml_Runtime[31],cst_158400); + else + {var _as1_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$272); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_as1_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_172600); + else + {var _as2_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$111); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_as2_)) + var + _asC_= + caml_call1(Runtime_ocaml_Runtime[31],cst_179800$0); + else + {var _as3_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$91); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_as3_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_187000); + else + {var _as4_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$87); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_as4_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_194200); + else + {var _as5_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$136); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_as5_)) + var + _asC_= + caml_call1(Runtime_ocaml_Runtime[31],cst_208600$0); + else + var + _as6_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$137), + _as7_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_as6_), + _as8_=caml_call1(Runtime_ocaml_Runtime[69],_as7_), + _as9_=caml_call1(Runtime_ocaml_Runtime[31],cst_18200), + _as__=caml_call2(Runtime_ocaml_Runtime[104],_as9_,_as8_), + _as$_=caml_call1(Runtime_ocaml_Runtime[31],cst_208600$1), + _asC_=caml_call2(Runtime_ocaml_Runtime[93],_as$_,_as__)}}}}}} + return caml_call2 + (Runtime_ocaml_Runtime[104],_asC_,taux_francs_vers_euros)} + function _ass_(param$0) + {var + _ast_=caml_call3(Runtime_ocaml_Runtime[57],1994,7,1), + _asu_=caml_call2(Runtime_ocaml_Runtime[114],param,_ast_), + _asv_=caml_call3(Runtime_ocaml_Runtime[57],1992,7,1), + _asw_=caml_call2(Runtime_ocaml_Runtime[129],param,_asv_), + _asx_=caml_call2(Runtime_ocaml_Runtime[83],_asw_,_asu_), + _asy_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _asz_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_asy_), + _asA_=caml_call2(Runtime_ocaml_Runtime[83],_asz_,_asx_); + return caml_call2(Runtime_ocaml_Runtime[29],_JV_,_asA_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JW_,[0],_ass_,_asr_)}, + _asn_, + _asm_, + _asl_, + _ask_, + _asj_, + _asi_, + _ash_, + _asg_, + _asf_, + _ase_, + _asd_, + _asc_, + _asb_, + _asa_, + _ar$_, + _ar__, + _ar9_, + _ar8_, + _ar7_, + _ar6_, + _ar5_], + _asp_=caml_call4(Runtime_ocaml_Runtime[63],_JX_,_aso_,_ar4_,_ar3_); + return _asp_} + catch(_asq_) + {_asq_ = caml_wrap_exception(_asq_); + if(_asq_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Je_]; + throw _asq_}} + var + calcul_plafond_mensualite_d842= + caml_call3 + (Runtime_ocaml_Runtime[28],_JY_,Runtime_ocaml_Runtime[10],_aon_); + try + {var + _aoo_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aop_=function(param){return 0}, + _aoq_= + function(param) + {function _arX_(param){return montant_forfaitaire_d842_12} + function _arY_(param) + {switch(type_travaux_logement[0]) + {case 0:var _arZ_=0;break; + case 1:var _arZ_=1;break; + case 2:var _arZ_=0;break; + default:var _arZ_=0} + var + _ar0_=caml_call3(Runtime_ocaml_Runtime[57],1994,9,30), + _ar1_= + caml_call2 + (Runtime_ocaml_Runtime[124],date_signature_pret,_ar0_), + _ar2_=caml_call2(Runtime_ocaml_Runtime[83],_ar1_,_arZ_); + return caml_call2(Runtime_ocaml_Runtime[29],_J0_,_ar2_)} + return caml_call4(Runtime_ocaml_Runtime[63],_J1_,[0],_arY_,_arX_)}, + _aor_= + [0, + function(param) + {function _arH_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[104], + mensualite_principale, + coefficient_d842_12)} + function _arI_(param) + {switch(type_travaux_logement[0]) + {case 0:var _arJ_=0;break; + case 1:var _arJ_=0;break; + case 2:var _arJ_=1;break; + default:var _arJ_=0} + switch(type_travaux_logement[0]) + {case 0:var _arK_=1;break; + case 1:var _arK_=0;break; + case 2:var _arK_=0;break; + default:var _arK_=0} + var _arL_=caml_call2(Runtime_ocaml_Runtime[84],_arK_,_arJ_); + switch(type_travaux_logement[0]) + {case 0:var _arM_=0;break; + case 1:var _arM_=0;break; + case 2:var _arM_=0;break; + default:var _arM_=1} + var + _arN_=caml_call2(Runtime_ocaml_Runtime[84],_arM_,_arL_), + _arO_=caml_call3(Runtime_ocaml_Runtime[57],1994,9,30), + _arP_= + caml_call2 + (Runtime_ocaml_Runtime[124],date_signature_pret,_arO_), + _arQ_=caml_call2(Runtime_ocaml_Runtime[83],_arP_,_arN_), + _arR_=caml_call3(Runtime_ocaml_Runtime[57],1994,9,30), + _arS_= + caml_call2 + (Runtime_ocaml_Runtime[119],date_signature_pret,_arR_), + _arT_=caml_call3(Runtime_ocaml_Runtime[57],1992,9,30), + _arU_= + caml_call2 + (Runtime_ocaml_Runtime[129],date_signature_pret,_arT_), + _arV_=caml_call2(Runtime_ocaml_Runtime[83],_arU_,_arS_), + _arW_=caml_call2(Runtime_ocaml_Runtime[84],_arV_,_arQ_); + return caml_call2(Runtime_ocaml_Runtime[29],_J2_,_arW_)} + return caml_call4(Runtime_ocaml_Runtime[63],_J3_,[0],_arI_,_arH_)}, + _aoq_], + _aos_=caml_call4(Runtime_ocaml_Runtime[63],_J4_,_aor_,_aop_,_aoo_)} + catch(_arG_) + {_arG_ = caml_wrap_exception(_arG_); + if(_arG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_JZ_]; + throw _arG_} + var + seuil_minimal_ressources_menag= + caml_call3 + (Runtime_ocaml_Runtime[28],_J5_,Runtime_ocaml_Runtime[13],_aos_); + function _aot_(param) + {try + {var + _arB_= + function(param$0) + {var + _arF_= + caml_call2 + (Runtime_ocaml_Runtime[93], + charges_mensuelles_pret, + montant_forfaitaire_charges); + return caml_call2(Runtime_ocaml_Runtime[98],_arF_,param)}, + _arC_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_J7_,1)}, + _arD_=caml_call4(Runtime_ocaml_Runtime[63],_J8_,[0],_arC_,_arB_); + return _arD_} + catch(_arE_) + {_arE_ = caml_wrap_exception(_arE_); + if(_arE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_J6_]; + throw _arE_}} + var + depense_nette_minimale= + caml_call3 + (Runtime_ocaml_Runtime[28],_J9_,Runtime_ocaml_Runtime[10],_aot_); + function _aou_(param) + {try + {var + _aqY_= + function(param$0) + {var + _ary_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _J$_, + Runtime_ocaml_Runtime[16], + param), + _arz_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Ka_, + calcul_plafond_mensualite_d842), + _ary_), + _arA_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Kb_, + Runtime_ocaml_Runtime[13], + _arz_); + return caml_call2(Runtime_ocaml_Runtime[27],_Kc_,_arA_)}, + _aqZ_= + function(param) + {var + _arw_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _arx_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_arw_); + return caml_call2(Runtime_ocaml_Runtime[29],_Kd_,_arx_)}, + _aq0_= + [0, + function(param$0) + {function _aq3_(param){throw Runtime_ocaml_Runtime[2]} + function _aq4_(param){return 0} + var + _aq5_= + [0, + function(param$0) + {function _aq6_(param$0) + {if(copropriete) + {var + _aro_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$11), + _arp_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Ke_, + Runtime_ocaml_Runtime[16], + param), + _arq_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Kf_, + calcul_plafond_mensualite_d842), + _arp_), + _arr_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Kg_, + Runtime_ocaml_Runtime[13], + _arq_), + _ars_=caml_call2(Runtime_ocaml_Runtime[27],_Kh_,_arr_); + return caml_call2(Runtime_ocaml_Runtime[104],_ars_,_aro_)} + var + _art_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Ki_, + Runtime_ocaml_Runtime[16], + param), + _aru_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Kj_, + calcul_plafond_mensualite_d842), + _art_), + _arv_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Kk_, + Runtime_ocaml_Runtime[13], + _aru_); + return caml_call2(Runtime_ocaml_Runtime[27],_Kl_,_arv_)} + function _aq7_(param) + {var + _arm_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _arn_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_arm_); + return caml_call2(Runtime_ocaml_Runtime[29],_Km_,_arn_)} + var + _aq8_= + [0, + function(param$0) + {function _aq9_(param$0) + {if(copropriete) + {var + _are_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$12), + _arf_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Kn_, + Runtime_ocaml_Runtime[16], + param), + _arg_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Ko_, + calcul_plafond_mensualite_d842), + _arf_), + _arh_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Kp_, + Runtime_ocaml_Runtime[13], + _arg_), + _ari_=caml_call2(Runtime_ocaml_Runtime[27],_Kq_,_arh_); + return caml_call2(Runtime_ocaml_Runtime[104],_ari_,_are_)} + var + _arj_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Kr_, + Runtime_ocaml_Runtime[16], + param), + _ark_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Ks_, + calcul_plafond_mensualite_d842), + _arj_), + _arl_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Kt_, + Runtime_ocaml_Runtime[13], + _ark_); + return caml_call2(Runtime_ocaml_Runtime[27],_Ku_,_arl_)} + function _aq__(param) + {var + _aq$_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _ara_= + caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aq$_), + _arb_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _arc_= + caml_call2(Runtime_ocaml_Runtime[129],date_courante,_arb_), + _ard_=caml_call2(Runtime_ocaml_Runtime[83],_arc_,_ara_); + return caml_call2(Runtime_ocaml_Runtime[29],_Kv_,_ard_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Kw_,[0],_aq__,_aq9_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Kx_,_aq8_,_aq7_,_aq6_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Ky_,_aq5_,_aq4_,_aq3_)}], + _aq1_=caml_call4(Runtime_ocaml_Runtime[63],_Kz_,_aq0_,_aqZ_,_aqY_); + return _aq1_} + catch(_aq2_) + {_aq2_ = caml_wrap_exception(_aq2_); + if(_aq2_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_J__]; + throw _aq2_}} + var + calcul_plafond_mensualite_d842$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_KA_,Runtime_ocaml_Runtime[10],_aou_); + try + {var + _aov_= + function(param) + {if + (caml_call2 + (Runtime_ocaml_Runtime[117], + ressources_menage_arrondies_ba, + seuil_minimal_ressources_menag)) + {var + _aqS_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$11), + _aqT_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_01), + _aqU_=caml_call1(Runtime_ocaml_Runtime[31],cst_4999), + _aqV_= + caml_call2 + (Runtime_ocaml_Runtime[93], + seuil_minimal_ressources_menag, + _aqU_), + _aqW_=caml_call2(Runtime_ocaml_Runtime[104],_aqV_,_aqT_), + _aqX_=caml_call1(Runtime_ocaml_Runtime[77],_aqW_); + return caml_call2(Runtime_ocaml_Runtime[104],_aqX_,_aqS_)} + return ressources_menage_arrondies_ba}, + _aow_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_KC_,1)}, + _aox_= + [0, + function(param) + {function _aqQ_(param){return ressources_menage_arrondies_ba} + function _aqR_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_KD_,situation_r822_11_13_17)} + return caml_call4(Runtime_ocaml_Runtime[63],_KE_,[0],_aqR_,_aqQ_)}], + _aoy_=caml_call4(Runtime_ocaml_Runtime[63],_KF_,_aox_,_aow_,_aov_)} + catch(_aqP_) + {_aqP_ = caml_wrap_exception(_aqP_); + if(_aqP_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_KB_]; + throw _aqP_} + var + ressources_menage_arrondies_se= + caml_call3 + (Runtime_ocaml_Runtime[28],_KG_,Runtime_ocaml_Runtime[13],_aoy_); + try + {var + _aoz_= + function(param) + {var + _aqM_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _KI_, + Runtime_ocaml_Runtime[16], + date_signature_pret), + _aqN_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _KJ_, + calcul_plafond_mensualite_d842$0), + _aqM_), + _aqO_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _KK_, + Runtime_ocaml_Runtime[13], + _aqN_); + return caml_call2(Runtime_ocaml_Runtime[27],_KL_,_aqO_)}, + _aoA_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_KM_,1)}, + _aoB_= + [0, + function(param) + {function _aqE_(param) + {var + _aqG_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _KN_, + Runtime_ocaml_Runtime[16], + date_signature_pret), + _aqH_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _KO_, + calcul_plafond_mensualite_d842$0), + _aqG_), + _aqI_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _KP_, + Runtime_ocaml_Runtime[13], + _aqH_), + plafond_signature= + caml_call2(Runtime_ocaml_Runtime[27],_KQ_,_aqI_), + _aqJ_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _KR_, + Runtime_ocaml_Runtime[16], + date_entree_logement), + _aqK_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _KS_, + calcul_plafond_mensualite_d842$0), + _aqJ_), + _aqL_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _KT_, + Runtime_ocaml_Runtime[13], + _aqK_), + plafond_entree= + caml_call2(Runtime_ocaml_Runtime[27],_KU_,_aqL_); + return caml_call2 + (Runtime_ocaml_Runtime[112], + plafond_signature, + plafond_entree) + ?plafond_entree + :plafond_signature} + function _aqF_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29], + _KV_, + local_habite_premiere_fois_ben)} + return caml_call4(Runtime_ocaml_Runtime[63],_KW_,[0],_aqF_,_aqE_)}], + _aoC_=caml_call4(Runtime_ocaml_Runtime[63],_KX_,_aoB_,_aoA_,_aoz_)} + catch(_aqD_) + {_aqD_ = caml_wrap_exception(_aqD_); + if(_aqD_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_KH_]; + throw _aqD_} + var + plafond_mensualite_d842_6= + caml_call3 + (Runtime_ocaml_Runtime[28],_KY_,Runtime_ocaml_Runtime[13],_aoC_); + try + {var + _aoD_=function(param){return ressources_menage_arrondies_se}, + _aoE_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_K0_,1)}, + _aoF_=caml_call4(Runtime_ocaml_Runtime[63],_K1_,[0],_aoE_,_aoD_), + calcul_equivalence_loyer_minim$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_K2_,Runtime_ocaml_Runtime[13],_aoF_)} + catch(_aqC_) + {_aqC_ = caml_wrap_exception(_aqC_); + if(_aqC_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_KZ_]; + throw _aqC_} + try + {var + _aoG_=function(param){return 1}, + _aoH_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_K4_,1)}, + _aoI_=caml_call4(Runtime_ocaml_Runtime[63],_K5_,[0],_aoH_,_aoG_), + calcul_equivalence_loyer_minim$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_K6_,Runtime_ocaml_Runtime[12],_aoI_)} + catch(_aqB_) + {_aqB_ = caml_wrap_exception(_aqB_); + if(_aqB_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_K3_]; + throw _aqB_} + try + {var + _aoJ_=function(param){return calcul_nombre_parts_dot_n_nomb}, + _aoK_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_K8_,1)}, + _aoL_=caml_call4(Runtime_ocaml_Runtime[63],_K9_,[0],_aoK_,_aoJ_), + calcul_equivalence_loyer_minim$2= + caml_call3 + (Runtime_ocaml_Runtime[28],_K__,Runtime_ocaml_Runtime[15],_aoL_)} + catch(_aqA_) + {_aqA_ = caml_wrap_exception(_aqA_); + if(_aqA_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_K7_]; + throw _aqA_} + var + _aoM_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_K$_,calcul_equivalence_loyer_minim), + [0, + calcul_equivalence_loyer_minim$0, + calcul_equivalence_loyer_minim$1, + calcul_equivalence_loyer_minim$2]), + result$1=caml_call2(Runtime_ocaml_Runtime[27],_La_,_aoM_), + calcul_equivalence_loyer_minim$3=result$1[1]; + try + {var + _aoN_=function(param){return _Lc_}, + _aoO_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ld_,1)}, + _aoP_=caml_call4(Runtime_ocaml_Runtime[63],_Le_,[0],_aoO_,_aoN_), + calcul_apl_logement_foyer_dot_= + caml_call3 + (Runtime_ocaml_Runtime[28],_Lf_,embed_type_logement_foyer,_aoP_)} + catch(_aqz_) + {_aqz_ = caml_wrap_exception(_aqz_); + if(_aqz_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Lb_]; + throw _aqz_} + try + {var + _aoQ_= + function(param) + {return caml_call3(Runtime_ocaml_Runtime[57],1970,1,1)}, + _aoR_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Lh_,1)}, + _aoS_=caml_call4(Runtime_ocaml_Runtime[63],_Li_,[0],_aoR_,_aoQ_), + calcul_apl_logement_foyer_dot_$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_Lj_,Runtime_ocaml_Runtime[16],_aoS_)} + catch(_aqy_) + {_aqy_ = caml_wrap_exception(_aqy_); + if(_aqy_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Lg_]; + throw _aqy_} + try + {var + _aoT_=function(param){return ressources_menage_arrondies_se}, + _aoU_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ll_,1)}, + _aoV_=caml_call4(Runtime_ocaml_Runtime[63],_Lm_,[0],_aoU_,_aoT_), + calcul_apl_logement_foyer_dot_$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ln_,Runtime_ocaml_Runtime[13],_aoV_)} + catch(_aqx_) + {_aqx_ = caml_wrap_exception(_aqx_); + if(_aqx_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Lk_]; + throw _aqx_} + try + {var + _aoW_=function(param){return nombre_personnes_a_charge}, + _aoX_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Lp_,1)}, + _aoY_=caml_call4(Runtime_ocaml_Runtime[63],_Lq_,[0],_aoX_,_aoW_), + calcul_apl_logement_foyer_dot_$2= + caml_call3 + (Runtime_ocaml_Runtime[28],_Lr_,Runtime_ocaml_Runtime[14],_aoY_)} + catch(_aqw_) + {_aqw_ = caml_wrap_exception(_aqw_); + if(_aqw_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Lo_]; + throw _aqw_} + try + {var + _aoZ_=function(param){return situation_familiale_calcul_apl}, + _ao0_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Lt_,1)}, + _ao1_=caml_call4(Runtime_ocaml_Runtime[63],_Lu_,[0],_ao0_,_aoZ_), + calcul_apl_logement_foyer_dot_$3= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Lv_, + embed_situation_familiale_calc, + _ao1_)} + catch(_aqv_) + {_aqv_ = caml_wrap_exception(_aqv_); + if(_aqv_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ls_]; + throw _aqv_} + try + {var + _ao2_=function(param){return zone}, + _ao3_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Lx_,1)}, + _ao4_=caml_call4(Runtime_ocaml_Runtime[63],_Ly_,[0],_ao3_,_ao2_), + calcul_apl_logement_foyer_dot_$4= + caml_call3 + (Runtime_ocaml_Runtime[28],_Lz_,embed_zone_d_habitation,_ao4_)} + catch(_aqu_) + {_aqu_ = caml_wrap_exception(_aqu_); + if(_aqu_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Lw_]; + throw _aqu_} + try + {var + _ao5_=function(param){return date_courante}, + _ao6_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_LB_,1)}, + _ao7_=caml_call4(Runtime_ocaml_Runtime[63],_LC_,[0],_ao6_,_ao5_), + calcul_apl_logement_foyer_dot_$5= + caml_call3 + (Runtime_ocaml_Runtime[28],_LD_,Runtime_ocaml_Runtime[16],_ao7_)} + catch(_aqt_) + {_aqt_ = caml_wrap_exception(_aqt_); + if(_aqt_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_LA_]; + throw _aqt_} + try + {var + _ao8_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$382)}, + _ao9_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_LF_,1)}, + _ao__=caml_call4(Runtime_ocaml_Runtime[63],_LG_,[0],_ao9_,_ao8_), + calcul_apl_logement_foyer_dot_$6= + caml_call3 + (Runtime_ocaml_Runtime[28],_LH_,Runtime_ocaml_Runtime[13],_ao__)} + catch(_aqs_) + {_aqs_ = caml_wrap_exception(_aqs_); + if(_aqs_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_LE_]; + throw _aqs_} + function calcul_apl_logement_foyer_dot_$7(param) + {function _aqp_(param){return 1} + function _aqq_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_LI_,1)} + var _aqr_=caml_call4(Runtime_ocaml_Runtime[63],_LJ_,[0],_aqq_,_aqp_); + return caml_call3 + (Runtime_ocaml_Runtime[28], + _LK_, + Runtime_ocaml_Runtime[12], + _aqr_)} + function calcul_apl_logement_foyer_dot_$8(param) + {function _aqm_(param){return calcul_nombre_parts_dot_n_nomb} + function _aqn_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_LL_,1)} + var _aqo_=caml_call4(Runtime_ocaml_Runtime[63],_LM_,[0],_aqn_,_aqm_); + return caml_call3 + (Runtime_ocaml_Runtime[28], + _LN_, + Runtime_ocaml_Runtime[15], + _aqo_)} + var + _ao$_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_LO_,calcul_aide_personnalisee_loge$0), + [0, + calcul_apl_logement_foyer_dot_, + calcul_apl_logement_foyer_dot_$0, + calcul_apl_logement_foyer_dot_$1, + calcul_apl_logement_foyer_dot_$2, + calcul_apl_logement_foyer_dot_$3, + calcul_apl_logement_foyer_dot_$4, + calcul_apl_logement_foyer_dot_$5, + calcul_apl_logement_foyer_dot_$6, + calcul_apl_logement_foyer_dot_$7, + calcul_apl_logement_foyer_dot_$8]), + result$2=caml_call2(Runtime_ocaml_Runtime[27],_LP_,_ao$_), + calcul_apl_logement_foyer_dot_$9=result$2[7]; + try + {var + _apa_=function(param){return montant_forfaitaire_d842_11}, + _apb_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_LR_,1)}, + _apc_= + [0, + function(param) + {function _aqc_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[104], + ressources_menage_arrondies_se, + coefficient_d842_11)} + function _aqd_(param) + {var + _aqe_=caml_call3(Runtime_ocaml_Runtime[57],1999,7,1), + _aqf_= + caml_call2 + (Runtime_ocaml_Runtime[129],date_signature_pret,_aqe_); + switch(type_travaux_logement[0]) + {case 0:var _aqg_=0;break; + case 1:var _aqg_=0;break; + case 2:var _aqg_=1;break; + default:var _aqg_=0} + switch(type_travaux_logement[0]) + {case 0:var _aqh_=1;break; + case 1:var _aqh_=0;break; + case 2:var _aqh_=0;break; + default:var _aqh_=0} + var _aqi_=caml_call2(Runtime_ocaml_Runtime[84],_aqh_,_aqg_); + switch(type_travaux_logement[0]) + {case 0:var _aqj_=0;break; + case 1:var _aqj_=0;break; + case 2:var _aqj_=0;break; + default:var _aqj_=1} + var + _aqk_=caml_call2(Runtime_ocaml_Runtime[84],_aqj_,_aqi_), + _aql_=caml_call2(Runtime_ocaml_Runtime[83],_aqk_,_aqf_); + return caml_call2(Runtime_ocaml_Runtime[29],_LS_,_aql_)} + return caml_call4(Runtime_ocaml_Runtime[63],_LT_,[0],_aqd_,_aqc_)}], + _apd_=caml_call4(Runtime_ocaml_Runtime[63],_LU_,_apc_,_apb_,_apa_)} + catch(_aqb_) + {_aqb_ = caml_wrap_exception(_aqb_); + if(_aqb_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_LQ_]; + throw _aqb_} + var + seuil_minimal_depense_nette_mi= + caml_call3 + (Runtime_ocaml_Runtime[28],_LV_,Runtime_ocaml_Runtime[13],_apd_); + try + {var + _ape_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[122], + mensualite_principale, + plafond_mensualite_d842_6) + ?plafond_mensualite_d842_6 + :mensualite_principale}, + _apf_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_LX_,1)}, + _apg_=caml_call4(Runtime_ocaml_Runtime[63],_LY_,[0],_apf_,_ape_)} + catch(_aqa_) + {_aqa_ = caml_wrap_exception(_aqa_); + if(_aqa_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_LW_]; + throw _aqa_} + var + mensualite_eligible= + caml_call3 + (Runtime_ocaml_Runtime[28],_LZ_,Runtime_ocaml_Runtime[13],_apg_); + try + {var + _aph_=function(param){return calcul_equivalence_loyer_minim$3}, + _api_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_L1_,1)}, + _apj_=caml_call4(Runtime_ocaml_Runtime[63],_L2_,[0],_api_,_aph_)} + catch(_ap$_) + {_ap$_ = caml_wrap_exception(_ap$_); + if(_ap$_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_L0_]; + throw _ap$_} + var + mensualite_minimale= + caml_call3 + (Runtime_ocaml_Runtime[28],_L3_,Runtime_ocaml_Runtime[13],_apj_); + try + {var + _apk_=function(param){return calcul_apl_logement_foyer_dot_$9}, + _apl_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_L5_,1)}, + _apm_=caml_call4(Runtime_ocaml_Runtime[63],_L6_,[0],_apl_,_apk_)} + catch(_ap__) + {_ap__ = caml_wrap_exception(_ap__); + if(_ap__ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_L4_]; + throw _ap__} + var + coefficient_prise_en_charge= + caml_call3 + (Runtime_ocaml_Runtime[28],_L7_,Runtime_ocaml_Runtime[15],_apm_); + function _apn_(param) + {try + {var + _ap3_= + function(param$0) + {var + _ap7_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _L9_, + Runtime_ocaml_Runtime[13], + param), + _ap8_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_L__,depense_nette_minimale), + _ap7_), + _ap9_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _L$_, + Runtime_ocaml_Runtime[13], + _ap8_), + depense_nette_minimale$0= + caml_call2(Runtime_ocaml_Runtime[27],_Ma_,_ap9_); + return caml_call2 + (Runtime_ocaml_Runtime[112], + depense_nette_minimale$0, + seuil_minimal_depense_nette_mi) + ?caml_call2 + (Runtime_ocaml_Runtime[98], + seuil_minimal_depense_nette_mi, + depense_nette_minimale$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$383)}, + _ap4_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Mb_,1)}, + _ap5_=caml_call4(Runtime_ocaml_Runtime[63],_Mc_,[0],_ap4_,_ap3_); + return _ap5_} + catch(_ap6_) + {_ap6_ = caml_wrap_exception(_ap6_); + if(_ap6_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_L8_]; + throw _ap6_}} + var + abattement_depense_nette_minim= + caml_call3 + (Runtime_ocaml_Runtime[28],_Md_,Runtime_ocaml_Runtime[10],_apn_); + try + {var + _apo_= + function(param) + {var + _ap1_= + caml_call2 + (Runtime_ocaml_Runtime[93], + mensualite_eligible, + montant_forfaitaire_charges), + _ap2_= + caml_call2(Runtime_ocaml_Runtime[98],_ap1_,mensualite_minimale); + return caml_call2 + (Runtime_ocaml_Runtime[104], + _ap2_, + coefficient_prise_en_charge)}, + _app_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Mf_,1)}, + _apq_=caml_call4(Runtime_ocaml_Runtime[63],_Mg_,[0],_app_,_apo_)} + catch(_ap0_) + {_ap0_ = caml_wrap_exception(_ap0_); + if(_ap0_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Me_]; + throw _ap0_} + var + aide_finale_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_Mh_,Runtime_ocaml_Runtime[13],_apq_); + function _apr_(param) + {try + {var + _apQ_= + function(param$0) + {var + _apU_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Mj_, + Runtime_ocaml_Runtime[13], + param), + _apV_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Mk_, + traitement_aide_finale_minorat), + _apU_), + _apW_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Ml_, + Runtime_ocaml_Runtime[13], + _apV_), + aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_Mm_,_apW_), + _apX_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Mn_, + Runtime_ocaml_Runtime[13], + aide_finale), + _apY_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Mo_, + abattement_depense_nette_minim), + _apX_), + _apZ_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Mp_, + Runtime_ocaml_Runtime[13], + _apY_), + abattement=caml_call2(Runtime_ocaml_Runtime[27],_Mq_,_apZ_); + return caml_call2 + (Runtime_ocaml_Runtime[112],aide_finale,abattement) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$384) + :caml_call2 + (Runtime_ocaml_Runtime[98],aide_finale,abattement)}, + _apR_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Mr_,1)}, + _apS_=caml_call4(Runtime_ocaml_Runtime[63],_Ms_,[0],_apR_,_apQ_); + return _apS_} + catch(_apT_) + {_apT_ = caml_wrap_exception(_apT_); + if(_apT_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Mi_]; + throw _apT_}} + var + traitement_aide_finale_depense= + caml_call3 + (Runtime_ocaml_Runtime[28],_Mt_,Runtime_ocaml_Runtime[10],_apr_); + function _aps_(param) + {try + {var + _apB_= + function(param$0) + {var + _apF_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Mv_, + Runtime_ocaml_Runtime[13], + param), + _apG_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Mw_, + traitement_aide_finale_depense), + _apF_), + _apH_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Mx_, + Runtime_ocaml_Runtime[13], + _apG_), + aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_My_,_apH_), + _apI_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Mz_, + Runtime_ocaml_Runtime[13], + aide_finale), + _apJ_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _MA_, + contributions_sociales_dot_mon), + _apI_), + _apK_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _MB_, + Runtime_ocaml_Runtime[13], + _apJ_), + crds=caml_call2(Runtime_ocaml_Runtime[27],_MC_,_apK_), + _apL_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$3), + _apM_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale,crds), + _apN_=caml_call2(Runtime_ocaml_Runtime[98],_apM_,_apL_), + aide_finale_moins_crds_arrondi= + caml_call1(Runtime_ocaml_Runtime[77],_apN_), + _apO_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$385), + _apP_= + caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds); + return caml_call2(Runtime_ocaml_Runtime[127],_apP_,_apO_) + ?caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$386)}, + _apC_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_MD_,1)}, + _apD_=caml_call4(Runtime_ocaml_Runtime[63],_ME_,[0],_apC_,_apB_); + return _apD_} + catch(_apE_) + {_apE_ = caml_wrap_exception(_apE_); + if(_apE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Mu_]; + throw _apE_}} + var + traitement_aide_finale_contrib= + caml_call3 + (Runtime_ocaml_Runtime[28],_MF_,Runtime_ocaml_Runtime[10],_aps_); + function _apt_(param) + {try + {var + _apu_= + function(param$0) + {var + _apy_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _MH_, + Runtime_ocaml_Runtime[13], + param), + _apz_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _MI_, + traitement_aide_finale_contrib), + _apy_), + _apA_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _MJ_, + Runtime_ocaml_Runtime[13], + _apz_), + aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_MK_,_apA_); + return caml_call2 + (Runtime_ocaml_Runtime[112], + aide_finale, + montant_minimal_aide_d842_6) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$387) + :aide_finale}, + _apv_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_ML_,1)}, + _apw_=caml_call4(Runtime_ocaml_Runtime[63],_MM_,[0],_apv_,_apu_); + return _apw_} + catch(_apx_) + {_apx_ = caml_wrap_exception(_apx_); + if(_apx_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_MG_]; + throw _apx_}} + var + traitement_aide_finale_montant= + caml_call3 + (Runtime_ocaml_Runtime[28],_MN_,Runtime_ocaml_Runtime[10],_apt_); + return [0,aide_finale_formule,traitement_aide_finale_montant]} + function calcul_aide_personnalisee_loge$2 + (calcul_aide_personnalisee_loge$2) + {var + mode_occupation=calcul_aide_personnalisee_loge$2[1], + type_aide=calcul_aide_personnalisee_loge$2[2], + ressources_menage_sans_arrondi=calcul_aide_personnalisee_loge$2[3], + situation_familiale=calcul_aide_personnalisee_loge$2[4], + nombre_personnes_a_charge=calcul_aide_personnalisee_loge$2[5], + zone=calcul_aide_personnalisee_loge$2[6], + date_courante=calcul_aide_personnalisee_loge$2[7]; + try + {var + _amW_= + function(param) + {switch(mode_occupation[0]) + {case 0:var location=mode_occupation[1];return [0,location]; + case 1: + var logementfoyer=mode_occupation[1];return [2,logementfoyer]; + case 2: + var proprietaire=mode_occupation[1];return [1,proprietaire]; + case 3:var location$0=mode_occupation[1];return [0,location$0]; + default: + var proprietaire$0=mode_occupation[1];return [1,proprietaire$0]}}, + _amX_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_MP_,1)}, + _amY_=caml_call4(Runtime_ocaml_Runtime[63],_MQ_,[0],_amX_,_amW_)} + catch(_anM_) + {_anM_ = caml_wrap_exception(_anM_); + if(_anM_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_MO_]; + throw _anM_} + var + categorie_calcul_apl= + caml_call3 + (Runtime_ocaml_Runtime[28],_MR_,embed_categorie_calcul_a_p_l,_amY_); + try + {var + _amZ_= + function(param) + {var + _anG_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$12), + _anH_=caml_call1(Runtime_ocaml_Runtime[31],cst_49), + _anI_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_01$0), + _anJ_= + caml_call2 + (Runtime_ocaml_Runtime[104], + ressources_menage_sans_arrondi, + _anI_), + _anK_=caml_call2(Runtime_ocaml_Runtime[93],_anJ_,_anH_), + _anL_=caml_call1(Runtime_ocaml_Runtime[77],_anK_); + return caml_call2(Runtime_ocaml_Runtime[104],_anL_,_anG_)}, + _am0_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_MT_,1)}, + _am1_=caml_call4(Runtime_ocaml_Runtime[63],_MU_,[0],_am0_,_amZ_)} + catch(_anF_) + {_anF_ = caml_wrap_exception(_anF_); + if(_anF_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_MS_]; + throw _anF_} + var + ressources_menage_avec_arrondi= + caml_call3 + (Runtime_ocaml_Runtime[28],_MV_,Runtime_ocaml_Runtime[13],_am1_); + try + {var + _am2_= + function(param) + {switch(situation_familiale[0]) + {case 0:return _MX_; + case 1:return _MY_; + case 2:return _MZ_; + case 3:return _M0_; + case 4:return _M1_; + default:return _M2_}}, + _am3_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_M3_,1)}, + _am4_=caml_call4(Runtime_ocaml_Runtime[63],_M4_,[0],_am3_,_am2_)} + catch(_anE_) + {_anE_ = caml_wrap_exception(_anE_); + if(_anE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_MW_]; + throw _anE_} + var + situation_familiale_calcul_apl= + caml_call3 + (Runtime_ocaml_Runtime[28],_M5_,embed_situation_familiale_calc,_am4_); + try + {var + _am5_= + function(param) + {switch(categorie_calcul_apl[0]) + {case 0: + var location=categorie_calcul_apl[1],_ang_=location[7]; + try + {var _anh_=location[1]; + switch(_anh_[0]) + {case 0:var bailleur=_anh_[1],_ani_=bailleur[2];break; + case 1: + var _ani_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$388); + break; + default: + var _ani_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$389)}} + catch(_anA_) + {_anA_ = caml_wrap_exception(_anA_); + if(_anA_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_M7_]; + throw _anA_} + var + _anj_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _M8_, + embed_calcul_aide_personnalise$3, + [0, + location[2], + ressources_menage_avec_arrondi, + location[3], + date_courante, + nombre_personnes_a_charge, + situation_familiale_calcul_apl, + zone, + location[4], + location[6], + type_aide, + location[5], + _ani_, + _ang_]), + result= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _M9_, + calcul_aide_personnalisee_loge), + _anj_), + _ank_= + function(param) + {var + _anx_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _M__, + Runtime_ocaml_Runtime[13], + param), + _any_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_M$_,result[7]),_anx_), + _anz_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Na_, + Runtime_ocaml_Runtime[13], + _any_); + return caml_call2(Runtime_ocaml_Runtime[27],_Nb_,_anz_)}, + result$0= + [0, + result[1], + result[2], + result[3], + result[4], + result[5], + result[6], + _ank_]; + if(caml_call2(Runtime_ocaml_Runtime[29],_Nc_,1)) + {var + _anl_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Nd_, + embed_calcul_aide_personnalise, + result$0), + traitement_formule= + caml_call2(Runtime_ocaml_Runtime[27],_Ne_,_anl_); + return [0,traitement_formule[6],traitement_formule[7]]} + throw Runtime_ocaml_Runtime[2]; + case 1: + var + proprietaire=categorie_calcul_apl[1], + _anm_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Nf_, + embed_calcul_aide_personnalise$5, + [0, + proprietaire[2], + ressources_menage_avec_arrondi, + nombre_personnes_a_charge, + situation_familiale_calcul_apl, + proprietaire[5], + proprietaire[11][2], + proprietaire[7], + proprietaire[4], + proprietaire[8], + proprietaire[9], + zone, + proprietaire[11][1], + proprietaire[10], + date_courante]), + result$1= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Ng_, + calcul_aide_personnalisee_loge$1), + _anm_), + _ann_= + function(param) + {var + _anu_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Nh_, + Runtime_ocaml_Runtime[13], + param), + _anv_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_Ni_,result$1[5]), + _anu_), + _anw_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Nj_, + Runtime_ocaml_Runtime[13], + _anv_); + return caml_call2(Runtime_ocaml_Runtime[27],_Nk_,_anw_)}, + result$2= + [0,result$1[1],result$1[2],result$1[3],result$1[4],_ann_]; + if(caml_call2(Runtime_ocaml_Runtime[29],_Nl_,1)) + {var + _ano_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Nm_, + embed_calcul_aide_personnalise$1, + result$2), + traitement_formule$0= + caml_call2(Runtime_ocaml_Runtime[27],_Nn_,_ano_); + return [0,traitement_formule$0[4],traitement_formule$0[5]]} + throw Runtime_ocaml_Runtime[2]; + default: + var + logement_foyer=categorie_calcul_apl[1], + _anp_=function(param){throw Runtime_ocaml_Runtime[2]}, + _anq_=function(param){throw Runtime_ocaml_Runtime[2]}, + _anr_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _No_, + embed_calcul_aide_personnalise$4, + [0, + logement_foyer[1], + logement_foyer[4], + ressources_menage_avec_arrondi, + nombre_personnes_a_charge, + situation_familiale_calcul_apl, + zone, + date_courante, + logement_foyer[6], + _anq_, + _anp_]), + result$3= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Np_, + calcul_aide_personnalisee_loge$0), + _anr_), + _ans_= + function(param) + {var + _anB_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Nq_, + Runtime_ocaml_Runtime[13], + param), + _anC_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_Nr_,result$3[9]), + _anB_), + _anD_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Ns_, + Runtime_ocaml_Runtime[13], + _anC_); + return caml_call2(Runtime_ocaml_Runtime[27],_Nt_,_anD_)}, + result$4= + [0, + result$3[1], + result$3[2], + result$3[3], + result$3[4], + result$3[5], + result$3[6], + result$3[7], + result$3[8], + _ans_]; + if(caml_call2(Runtime_ocaml_Runtime[29],_Nu_,1)) + {var + _ant_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Nv_, + embed_calcul_aide_personnalise$0, + result$4), + traitement_formule$1= + caml_call2(Runtime_ocaml_Runtime[27],_Nw_,_ant_); + return [0,traitement_formule$1[8],traitement_formule$1[9]]} + throw Runtime_ocaml_Runtime[2]}}, + _am6_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Nx_,1)}, + _am7_=caml_call4(Runtime_ocaml_Runtime[63],_Ny_,[0],_am6_,_am5_)} + catch(_anf_) + {_anf_ = caml_wrap_exception(_anf_); + if(_anf_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_M6_]; + throw _anf_} + var + sous_calcul_traitement= + caml_call3 + (Runtime_ocaml_Runtime[28],_Nz_,embed_traitement_formule_aide_,_am7_); + function _am8_(param) + {try + {var + _anb_= + function(param$0) + {return caml_call1(sous_calcul_traitement[2],param)}, + _anc_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_NB_,1)}, + _and_=caml_call4(Runtime_ocaml_Runtime[63],_NC_,[0],_anc_,_anb_); + return _and_} + catch(_ane_) + {_ane_ = caml_wrap_exception(_ane_); + if(_ane_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_NA_]; + throw _ane_}} + var + traitement_aide_finale= + caml_call3 + (Runtime_ocaml_Runtime[28],_ND_,Runtime_ocaml_Runtime[10],_am8_); + try + {var + _am9_=function(param){return sous_calcul_traitement[1]}, + _am__= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_NF_,1)}, + _am$_=caml_call4(Runtime_ocaml_Runtime[63],_NG_,[0],_am__,_am9_)} + catch(_ana_) + {_ana_ = caml_wrap_exception(_ana_); + if(_ana_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_NE_]; + throw _ana_} + var + aide_finale_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_NH_,Runtime_ocaml_Runtime[13],_am$_); + return [0,aide_finale_formule,traitement_aide_finale]} + function eligibilite_prime_de_demenagem(eligibilite_prime_de_demenagem) + {var + informations=eligibilite_prime_de_demenagem[1], + date_emmenagement=eligibilite_prime_de_demenagem[2], + menage=eligibilite_prime_de_demenagem[3], + demandeur=eligibilite_prime_de_demenagem[4], + date_courante=eligibilite_prime_de_demenagem[5], + depenses_justifiees_reellement=eligibilite_prime_de_demenagem[6]; + try + {var + _alx_= + function(param){return caml_call3(Runtime_ocaml_Runtime[60],0,6,0)}, + _aly_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_NJ_,1)}, + _alz_=caml_call4(Runtime_ocaml_Runtime[63],_NK_,[0],_aly_,_alx_)} + catch(_amV_) + {_amV_ = caml_wrap_exception(_amV_); + if(_amV_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_NI_]; + throw _amV_} + var + delai_apres_emmenagement_l823_= + caml_call3 + (Runtime_ocaml_Runtime[28],_NL_,Runtime_ocaml_Runtime[17],_alz_); + try + {var + _alA_=function(param){return 0}, + _alB_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_NN_,1)}, + _alC_= + [0, + function(param) + {function _amL_(param){return 1} + function _amM_(param) + {var + _amN_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$92), + _amO_=informations[1], + _amP_=menage[3]; + function _amQ_(personne_a_charge) + {return 0 === personne_a_charge[0]?1:0} + var + _amR_=caml_call2(Runtime_ocaml_Runtime[90],_amQ_,_amP_), + _amS_=caml_call1(Runtime_ocaml_Runtime[68],_amR_), + _amT_=caml_call2(Runtime_ocaml_Runtime[91],_amS_,_amO_), + _amU_=caml_call2(Runtime_ocaml_Runtime[125],_amT_,_amN_); + return caml_call2(Runtime_ocaml_Runtime[29],_NO_,_amU_)} + return caml_call4(Runtime_ocaml_Runtime[63],_NP_,[0],_amM_,_amL_)}], + _alD_=caml_call4(Runtime_ocaml_Runtime[63],_NQ_,_alC_,_alB_,_alA_)} + catch(_amK_) + {_amK_ = caml_wrap_exception(_amK_); + if(_amK_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_NM_]; + throw _amK_} + var + condition_rang_enfant= + caml_call3 + (Runtime_ocaml_Runtime[28],_NR_,Runtime_ocaml_Runtime[12],_alD_); + try + {var + _alE_=function(param){return date_courante}, + _alF_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_NT_,1)}, + _alG_=caml_call4(Runtime_ocaml_Runtime[63],_NU_,[0],_alF_,_alE_), + base_mensuelle_allocations_fam= + caml_call3 + (Runtime_ocaml_Runtime[28],_NV_,Runtime_ocaml_Runtime[16],_alG_)} + catch(_amJ_) + {_amJ_ = caml_wrap_exception(_amJ_); + if(_amJ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_NS_]; + throw _amJ_} + var + _alH_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_NW_,base_mensuelle_allocations_fam$5), + [0,base_mensuelle_allocations_fam]), + result=caml_call2(Runtime_ocaml_Runtime[27],_NX_,_alH_), + base_mensuelle_allocations_fam$0=result[1]; + try + {var + _alI_=function(param){return menage}, + _alJ_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_NZ_,1)}, + _alK_=caml_call4(Runtime_ocaml_Runtime[63],_N0_,[0],_alJ_,_alI_), + eligibilite_apl_dot_menage= + caml_call3(Runtime_ocaml_Runtime[28],_N1_,embed_menage,_alK_)} + catch(_amI_) + {_amI_ = caml_wrap_exception(_amI_); + if(_amI_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_NY_]; + throw _amI_} + try + {var + _alL_=function(param){return demandeur}, + _alM_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_N3_,1)}, + _alN_=caml_call4(Runtime_ocaml_Runtime[63],_N4_,[0],_alM_,_alL_), + eligibilite_apl_dot_demandeur= + caml_call3(Runtime_ocaml_Runtime[28],_N5_,embed_demandeur,_alN_)} + catch(_amH_) + {_amH_ = caml_wrap_exception(_amH_); + if(_amH_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_N2_]; + throw _amH_} + try + {var + _alO_=function(param){return date_courante}, + _alP_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_N7_,1)}, + _alQ_=caml_call4(Runtime_ocaml_Runtime[63],_N8_,[0],_alP_,_alO_), + eligibilite_apl_dot_date_coura= + caml_call3 + (Runtime_ocaml_Runtime[28],_N9_,Runtime_ocaml_Runtime[16],_alQ_)} + catch(_amG_) + {_amG_ = caml_wrap_exception(_amG_); + if(_amG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_N6_]; + throw _amG_} + function eligibilite_apl_dot_condition_(param) + {throw Runtime_ocaml_Runtime[2]} + function eligibilite_apl_dot_condition_$0(param) + {throw Runtime_ocaml_Runtime[2]} + var + _alR_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_N__,eligibilite_aides_personnelle_), + [0, + eligibilite_apl_dot_menage, + eligibilite_apl_dot_demandeur, + eligibilite_apl_dot_date_coura, + eligibilite_apl_dot_condition_, + eligibilite_apl_dot_condition_$0]), + result$0=caml_call2(Runtime_ocaml_Runtime[27],_N$_,_alR_), + eligibilite_apl_dot_date_coura$0=result$0[1], + eligibilite_apl_dot_eligibilit=result$0[2]; + try + {var + _alS_=function(param){return 0}, + _alT_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ob_,1)}, + _alU_= + [0, + function(param) + {function _amw_(param){return 1} + function _amx_(param) + {var _amy_=informations[2]; + if(0 === _amy_[0]) + var _amz_=0; + else + {var date_naissance_ou_grossesse=_amy_[1]; + switch(date_naissance_ou_grossesse[0]) + {case 0: + var + date_naissance=date_naissance_ou_grossesse[1], + _amA_=caml_call3(Runtime_ocaml_Runtime[60],0,0,-1), + _amB_=caml_call3(Runtime_ocaml_Runtime[60],2,0,0), + _amC_= + caml_call2(Runtime_ocaml_Runtime[94],date_naissance,_amB_), + _amD_=caml_call1(Runtime_ocaml_Runtime[75],_amC_), + _amE_=caml_call2(Runtime_ocaml_Runtime[94],_amD_,_amA_), + _amF_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_amE_); + break; + case 1:var _amF_=0;break; + default:var _amF_=1} + var _amz_=_amF_} + return caml_call2(Runtime_ocaml_Runtime[29],_Oc_,_amz_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Od_,[0],_amx_,_amw_)}], + _alV_=caml_call4(Runtime_ocaml_Runtime[63],_Oe_,_alU_,_alT_,_alS_)} + catch(_amv_) + {_amv_ = caml_wrap_exception(_amv_); + if(_amv_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Oa_]; + throw _amv_} + var + condition_periode_demenagement= + caml_call3 + (Runtime_ocaml_Runtime[28],_Of_,Runtime_ocaml_Runtime[12],_alV_); + try + {var + _alW_= + function(param) + {var + _ame_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$93), + _amf_=menage[3]; + function _amg_(personne_a_charge) + {return 0 === personne_a_charge[0]?1:0} + var + _amh_=caml_call2(Runtime_ocaml_Runtime[90],_amg_,_amf_), + _ami_=caml_call1(Runtime_ocaml_Runtime[68],_amh_); + if(caml_call2(Runtime_ocaml_Runtime[120],_ami_,_ame_)) + var + _amj_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2$1), + _amk_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$94), + _aml_=menage[3], + _amm_= + function(personne_a_charge) + {return 0 === personne_a_charge[0]?1:0}, + _amn_=caml_call2(Runtime_ocaml_Runtime[90],_amm_,_aml_), + _amo_=caml_call1(Runtime_ocaml_Runtime[68],_amn_), + _amp_=caml_call2(Runtime_ocaml_Runtime[96],_amo_,_amk_), + _amq_=caml_call1(Runtime_ocaml_Runtime[69],_amp_), + _amr_=caml_call2(Runtime_ocaml_Runtime[103],_amq_,_amj_), + _ams_= + caml_call2 + (Runtime_ocaml_Runtime[104], + base_mensuelle_allocations_fam$0, + _amr_); + else + var _ams_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$390); + var + _amt_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_4), + _amu_= + caml_call2 + (Runtime_ocaml_Runtime[104], + base_mensuelle_allocations_fam$0, + _amt_); + return caml_call2(Runtime_ocaml_Runtime[93],_amu_,_ams_)}, + _alX_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Oh_,1)}, + _alY_=caml_call4(Runtime_ocaml_Runtime[63],_Oi_,[0],_alX_,_alW_)} + catch(_amd_) + {_amd_ = caml_wrap_exception(_amd_); + if(_amd_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Og_]; + throw _amd_} + var + plafond_d823_22= + caml_call3 + (Runtime_ocaml_Runtime[28],_Oj_,Runtime_ocaml_Runtime[13],_alY_); + try + {var + _alZ_=function(param){return 0}, + _al0_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ol_,1)}, + _al1_= + [0, + function(param) + {function _al8_(param){return 1} + function _al9_(param) + {var + _al__= + caml_call2 + (Runtime_ocaml_Runtime[99], + eligibilite_apl_dot_date_coura$0, + date_emmenagement), + _al$_= + caml_call2 + (Runtime_ocaml_Runtime[118], + _al__, + delai_apres_emmenagement_l823_), + _ama_= + caml_call2 + (Runtime_ocaml_Runtime[83], + condition_periode_demenagement, + _al$_), + _amb_= + caml_call2 + (Runtime_ocaml_Runtime[83],condition_rang_enfant,_ama_), + _amc_= + caml_call2 + (Runtime_ocaml_Runtime[83], + eligibilite_apl_dot_eligibilit, + _amb_); + return caml_call2(Runtime_ocaml_Runtime[29],_Om_,_amc_)} + return caml_call4(Runtime_ocaml_Runtime[63],_On_,[0],_al9_,_al8_)}], + _al2_=caml_call4(Runtime_ocaml_Runtime[63],_Oo_,_al1_,_al0_,_alZ_)} + catch(_al7_) + {_al7_ = caml_wrap_exception(_al7_); + if(_al7_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ok_]; + throw _al7_} + caml_call3 + (Runtime_ocaml_Runtime[28],_Op_,Runtime_ocaml_Runtime[12],_al2_); + try + {var + _al3_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[117], + depenses_justifiees_reellement, + plafond_d823_22) + ?depenses_justifiees_reellement + :plafond_d823_22}, + _al4_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Or_,1)}, + _al5_=caml_call4(Runtime_ocaml_Runtime[63],_Os_,[0],_al4_,_al3_)} + catch(_al6_) + {_al6_ = caml_wrap_exception(_al6_); + if(_al6_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Oq_]; + throw _al6_} + var + montant_prime_demenagement= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ot_,Runtime_ocaml_Runtime[13],_al5_); + return [0,montant_prime_demenagement]} + function eligibilite_aide_personnalisee(eligibilite_aide_personnalisee) + {var + menage=eligibilite_aide_personnalisee[1], + demandeur=eligibilite_aide_personnalisee[2], + date_courante=eligibilite_aide_personnalisee[3]; + function _ajq_(param) + {try + {var + _ala_=function(param){return 0}, + _alb_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Ov_,1)}, + _alc_= + [0, + function(param$0) + {function _alf_(param){throw Runtime_ocaml_Runtime[2]} + function _alg_(param){return 0} + var + _alh_= + [0, + function(param$0) + {function _ali_(param){return 1} + function _alj_(param$0) + {switch(param[1][0]) + {case 0:var _als_=0;break; + case 1:var _als_=1;break; + case 2:var _als_=0;break; + case 3:var _als_=0;break; + default:var _als_=0} + switch(param[1][0]) + {case 0:var _alt_=1;break; + case 1:var _alt_=0;break; + case 2:var _alt_=0;break; + case 3:var _alt_=0;break; + default:var _alt_=0} + var + _alu_=caml_call2(Runtime_ocaml_Runtime[84],_alt_,_als_), + _alv_=0 === param[3][0]?1:0, + _alw_=caml_call2(Runtime_ocaml_Runtime[83],_alv_,_alu_); + return caml_call2(Runtime_ocaml_Runtime[29],_Ow_,_alw_)} + var + _alk_= + [0, + function(param$0) + {function _all_(param){return 1} + function _alm_(param$0) + {switch(param[1][0]) + {case 0:var _aln_=0;break; + case 1:var _aln_=0;break; + case 2:var _aln_=0;break; + case 3:var _aln_=1;break; + default:var _aln_=0} + switch(param[1][0]) + {case 0:var _alo_=0;break; + case 1:var _alo_=0;break; + case 2:var _alo_=1;break; + case 3:var _alo_=0;break; + default:var _alo_=0} + var + _alp_=caml_call2(Runtime_ocaml_Runtime[84],_alo_,_aln_), + _alq_=0 === param[3][0]?0:1, + _alr_=caml_call2(Runtime_ocaml_Runtime[83],_alq_,_alp_); + return caml_call2(Runtime_ocaml_Runtime[29],_Ox_,_alr_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Oy_,[0],_alm_,_all_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Oz_,_alk_,_alj_,_ali_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_OA_,_alh_,_alg_,_alf_)}], + _ald_=caml_call4(Runtime_ocaml_Runtime[63],_OB_,_alc_,_alb_,_ala_); + return _ald_} + catch(_ale_) + {_ale_ = caml_wrap_exception(_ale_); + if(_ale_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ou_]; + throw _ale_}} + var + caracteristiques_pret_l831_1_1= + caml_call3 + (Runtime_ocaml_Runtime[28],_OC_,Runtime_ocaml_Runtime[10],_ajq_); + function _ajr_(param) + {try + {var + _ak8_=function(param){return 0}, + _ak9_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_OE_,1)}, + _ak__=caml_call4(Runtime_ocaml_Runtime[63],_OF_,[0],_ak9_,_ak8_); + return _ak__} + catch(_ak$_) + {_ak$_ = caml_wrap_exception(_ak$_); + if(_ak$_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_OD_]; + throw _ak$_}} + var + caracteristiques_pret_l831_1_6= + caml_call3 + (Runtime_ocaml_Runtime[28],_OG_,Runtime_ocaml_Runtime[10],_ajr_); + try + {var + _ajs_=function(param){return 0}, + _ajt_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_OI_,1)}, + _aju_= + [0, + function(param) + {function _akE_(param){return 1} + function _akF_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_OJ_,1)} + var + _akG_= + [0, + function(param) + {function _akH_(param){return 0} + function _akI_(param) + {var _ak4_=menage[2][3]; + switch(_ak4_[0]) + {case 0:var _ak5_=0;break; + case 1:var _ak5_=0;break; + case 2: + var + propriete=_ak4_[1], + _ak6_=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), + _ak5_= + caml_call2 + (Runtime_ocaml_Runtime[129],propriete[11][2],_ak6_); + break; + case 3:var _ak5_=0;break; + default: + var + propriete$0=_ak4_[1], + _ak7_=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), + _ak5_= + caml_call2 + (Runtime_ocaml_Runtime[129],propriete$0[11][2],_ak7_)} + return caml_call2(Runtime_ocaml_Runtime[29],_OK_,_ak5_)} + var + _akJ_= + [0, + function(param) + {function _akK_(param){return 1} + function _akL_(param) + {var _akM_=menage[2][3]; + switch(_akM_[0]) + {case 0:var _akN_=0;break; + case 1:var _akN_=0;break; + case 2: + var + propriete=_akM_[1], + _akO_=propriete[1], + _akP_=0 === propriete[10][0]?0:1, + _akQ_=caml_call2(Runtime_ocaml_Runtime[83],_akP_,_akO_), + _akR_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _akS_= + caml_call2 + (Runtime_ocaml_Runtime[114],propriete[11][2],_akR_), + _akT_=caml_call2(Runtime_ocaml_Runtime[83],_akS_,_akQ_), + _akU_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), + _akV_= + caml_call2 + (Runtime_ocaml_Runtime[129],propriete[11][2],_akU_), + _akN_=caml_call2(Runtime_ocaml_Runtime[83],_akV_,_akT_); + break; + case 3:var _akN_=0;break; + default: + var + propriete$0=_akM_[1], + _akW_=propriete$0[1], + _akX_=0 === propriete$0[10][0]?0:1, + _akY_=caml_call2(Runtime_ocaml_Runtime[83],_akX_,_akW_), + _akZ_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _ak0_= + caml_call2 + (Runtime_ocaml_Runtime[114],propriete$0[11][2],_akZ_), + _ak1_=caml_call2(Runtime_ocaml_Runtime[83],_ak0_,_akY_), + _ak2_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), + _ak3_= + caml_call2 + (Runtime_ocaml_Runtime[129],propriete$0[11][2],_ak2_), + _akN_=caml_call2(Runtime_ocaml_Runtime[83],_ak3_,_ak1_)} + return caml_call2(Runtime_ocaml_Runtime[29],_OL_,_akN_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_OM_,[0],_akL_,_akK_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_ON_,_akJ_,_akI_,_akH_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_OO_,_akG_,_akF_,_akE_)}], + _ajv_=caml_call4(Runtime_ocaml_Runtime[63],_OP_,_aju_,_ajt_,_ajs_)} + catch(_akD_) + {_akD_ = caml_wrap_exception(_akD_); + if(_akD_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_OH_]; + throw _akD_} + var + condition_logement_pret= + caml_call3 + (Runtime_ocaml_Runtime[28],_OQ_,Runtime_ocaml_Runtime[12],_ajv_); + try + {var + _ajw_=function(param){return menage}, + _ajx_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_OS_,1)}, + _ajy_=caml_call4(Runtime_ocaml_Runtime[63],_OT_,[0],_ajx_,_ajw_), + eligibilite_commune_dot_menage= + caml_call3(Runtime_ocaml_Runtime[28],_OU_,embed_menage,_ajy_)} + catch(_akC_) + {_akC_ = caml_wrap_exception(_akC_); + if(_akC_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_OR_]; + throw _akC_} + try + {var + _ajz_=function(param){return demandeur}, + _ajA_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_OW_,1)}, + _ajB_=caml_call4(Runtime_ocaml_Runtime[63],_OX_,[0],_ajA_,_ajz_), + eligibilite_commune_dot_demand= + caml_call3(Runtime_ocaml_Runtime[28],_OY_,embed_demandeur,_ajB_)} + catch(_akB_) + {_akB_ = caml_wrap_exception(_akB_); + if(_akB_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_OV_]; + throw _akB_} + try + {var + _ajC_=function(param){return date_courante}, + _ajD_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_O0_,1)}, + _ajE_=caml_call4(Runtime_ocaml_Runtime[63],_O1_,[0],_ajD_,_ajC_), + eligibilite_commune_dot_date_c= + caml_call3 + (Runtime_ocaml_Runtime[28],_O2_,Runtime_ocaml_Runtime[16],_ajE_)} + catch(_akA_) + {_akA_ = caml_wrap_exception(_akA_); + if(_akA_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_OZ_]; + throw _akA_} + function eligibilite_commune_dot_condit(param) + {throw Runtime_ocaml_Runtime[2]} + function eligibilite_commune_dot_condit$0(param) + {throw Runtime_ocaml_Runtime[2]} + var + _ajF_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_O3_,eligibilite_aides_personnelle_), + [0, + eligibilite_commune_dot_menage, + eligibilite_commune_dot_demand, + eligibilite_commune_dot_date_c, + eligibilite_commune_dot_condit, + eligibilite_commune_dot_condit$0]), + result=caml_call2(Runtime_ocaml_Runtime[27],_O4_,_ajF_), + eligibilite_commune_dot_eligib=result[2], + eligibilite_commune_dot_nombre=result[3], + eligibilite_commune_dot_coeffi=result[4]; + try + {var + _ajG_=function(param){return 0}, + _ajH_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_O6_,1)}, + _ajI_= + [0, + function(param) + {function _aj3_(param){throw Runtime_ocaml_Runtime[2]} + function _aj4_(param){return 0} + var + _aj5_= + [0, + function(param) + {function _aj6_(param){return 1} + function _aj7_(param) + {var _akv_=menage[2][3]; + switch(_akv_[0]) + {case 0:var _akw_=0;break; + case 1:var _akw_=0;break; + case 2: + var + propriete=_akv_[1], + _akx_= + caml_call3 + (Runtime_ocaml_Runtime[28],_O8_,embed_pret,propriete[11]), + _aky_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _O9_, + caracteristiques_pret_l831_1_1), + _akx_), + _akz_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _O__, + Runtime_ocaml_Runtime[12], + _aky_), + _akw_=caml_call2(Runtime_ocaml_Runtime[27],_O$_,_akz_); + break; + case 3:var _akw_=0;break; + default:var _akw_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_O7_,_akw_)} + var + _aj8_= + [0, + function(param) + {function _aj9_(param){return 1} + function _aj__(param) + {var _akr_=menage[2][3]; + switch(_akr_[0]) + {case 0: + var location=_akr_[1],_aks_=location[1]; + switch(_aks_[0]) + {case 0:var convention=_aks_[1],_akt_=convention[1];break; + case 1: + var convention$0=_aks_[1],_akt_=convention$0[1];break; + default:var _akt_=0} + var _aku_=_akt_; + break; + case 1:var _aku_=0;break; + case 2:var _aku_=0;break; + case 3:var _aku_=0;break; + default:var _aku_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_Pa_,_aku_)} + var + _aj$_= + [0, + function(param) + {function _aka_(param){return 1} + function _akb_(param) + {var _akp_=menage[2][3]; + switch(_akp_[0]) + {case 0:var _akq_=0;break; + case 1:var location=_akp_[1],_akq_=location[3];break; + case 2:var _akq_=0;break; + case 3:var _akq_=0;break; + default:var _akq_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_Pb_,_akq_)} + var + _akc_= + [0, + function(param) + {function _akd_(param){return 1} + function _ake_(param) + {var _akk_=menage[2][3]; + switch(_akk_[0]) + {case 0:var _akl_=0;break; + case 1:var _akl_=0;break; + case 2:var _akl_=0;break; + case 3:var _akl_=0;break; + default: + var + propriete=_akk_[1], + _akm_= + caml_call3 + (Runtime_ocaml_Runtime[28],_Pd_,embed_pret,propriete[11]), + _akn_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Pe_, + caracteristiques_pret_l831_1_6), + _akm_), + _ako_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Pf_, + Runtime_ocaml_Runtime[12], + _akn_), + _akl_=caml_call2(Runtime_ocaml_Runtime[27],_Pg_,_ako_)} + return caml_call2(Runtime_ocaml_Runtime[29],_Pc_,_akl_)} + var + _akf_= + [0, + function(param) + {function _akg_(param){return 1} + function _akh_(param) + {var _aki_=menage[2][3]; + switch(_aki_[0]) + {case 0:var _akj_=0;break; + case 1: + var logement_foyer=_aki_[1],_akj_=logement_foyer[2];break; + case 2:var _akj_=0;break; + case 3:var _akj_=0;break; + default:var _akj_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_Ph_,_akj_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Pi_,[0],_akh_,_akg_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Pj_,_akf_,_ake_,_akd_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Pk_,_akc_,_akb_,_aka_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Pl_,_aj$_,_aj__,_aj9_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Pm_,_aj8_,_aj7_,_aj6_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Pn_,_aj5_,_aj4_,_aj3_)}], + _ajJ_=caml_call4(Runtime_ocaml_Runtime[63],_Po_,_ajI_,_ajH_,_ajG_)} + catch(_aj2_) + {_aj2_ = caml_wrap_exception(_aj2_); + if(_aj2_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_O5_]; + throw _aj2_} + var + condition_logement_bailleur= + caml_call3 + (Runtime_ocaml_Runtime[28],_Pp_,Runtime_ocaml_Runtime[12],_ajJ_); + try + {var + _ajK_=function(param){return eligibilite_commune_dot_coeffi}, + _ajL_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Pr_,1)}, + _ajM_=caml_call4(Runtime_ocaml_Runtime[63],_Ps_,[0],_ajL_,_ajK_)} + catch(_aj1_) + {_aj1_ = caml_wrap_exception(_aj1_); + if(_aj1_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Pq_]; + throw _aj1_} + var + _ajN_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), + coefficents_enfants_garde_alte= + caml_call3(Runtime_ocaml_Runtime[28],_Pt_,_ajN_,_ajM_); + try + {var + _ajO_=function(param){return eligibilite_commune_dot_nombre}, + _ajP_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Pv_,1)}, + _ajQ_=caml_call4(Runtime_ocaml_Runtime[63],_Pw_,[0],_ajP_,_ajO_)} + catch(_aj0_) + {_aj0_ = caml_wrap_exception(_aj0_); + if(_aj0_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Pu_]; + throw _aj0_} + var + nombre_personnes_a_charge_pris= + caml_call3 + (Runtime_ocaml_Runtime[28],_Px_,Runtime_ocaml_Runtime[14],_ajQ_); + try + {var + _ajR_=function(param){return 0}, + _ajS_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Pz_,1)}, + _ajT_= + [0, + function(param) + {function _ajW_(param){return 1} + function _ajX_(param) + {var + _ajY_= + caml_call2 + (Runtime_ocaml_Runtime[83], + condition_logement_pret, + eligibilite_commune_dot_eligib), + _ajZ_= + caml_call2 + (Runtime_ocaml_Runtime[83], + condition_logement_bailleur, + _ajY_); + return caml_call2(Runtime_ocaml_Runtime[29],_PA_,_ajZ_)} + return caml_call4(Runtime_ocaml_Runtime[63],_PB_,[0],_ajX_,_ajW_)}], + _ajU_=caml_call4(Runtime_ocaml_Runtime[63],_PC_,_ajT_,_ajS_,_ajR_)} + catch(_ajV_) + {_ajV_ = caml_wrap_exception(_ajV_); + if(_ajV_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Py_]; + throw _ajV_} + var + eligibilite= + caml_call3 + (Runtime_ocaml_Runtime[28],_PD_,Runtime_ocaml_Runtime[12],_ajU_); + return [0, + date_courante, + eligibilite, + nombre_personnes_a_charge_pris, + coefficents_enfants_garde_alte]} + function eligibilite_allocation_logemen(eligibilite_allocation_logemen) + {var + date_courante=eligibilite_allocation_logemen[1], + menage=eligibilite_allocation_logemen[2], + demandeur=eligibilite_allocation_logemen[3], + beneficie_aide_personnalisee_l=eligibilite_allocation_logemen[4]; + try + {var + _agp_= + function(param){return caml_call3(Runtime_ocaml_Runtime[60],5,0,0)}, + _agq_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PF_,1)}, + _agr_=caml_call4(Runtime_ocaml_Runtime[63],_PG_,[0],_agq_,_agp_)} + catch(_ajp_) + {_ajp_ = caml_wrap_exception(_ajp_); + if(_ajp_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_PE_]; + throw _ajp_} + var + duree_l841_1_3= + caml_call3 + (Runtime_ocaml_Runtime[28],_PH_,Runtime_ocaml_Runtime[17],_agr_); + try + {var + _ags_=function(param){return date_courante}, + _agt_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PJ_,1)}, + _agu_=caml_call4(Runtime_ocaml_Runtime[63],_PK_,[0],_agt_,_ags_), + prestations_familiales_dot_dat= + caml_call3 + (Runtime_ocaml_Runtime[28],_PL_,Runtime_ocaml_Runtime[16],_agu_)} + catch(_ajo_) + {_ajo_ = caml_wrap_exception(_ajo_); + if(_ajo_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_PI_]; + throw _ajo_} + try + {var + _agv_=function(param){return _PN_}, + _agw_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PO_,1)}, + _agx_=caml_call4(Runtime_ocaml_Runtime[63],_PP_,[0],_agw_,_agv_), + prestations_familiales_dot_pre= + caml_call3 + (Runtime_ocaml_Runtime[28], + _PQ_, + embed_element_prestations_fami$0, + _agx_)} + catch(_ajn_) + {_ajn_ = caml_wrap_exception(_ajn_); + if(_ajn_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_PM_]; + throw _ajn_} + try + {var + _agy_=function(param){return _PS_}, + _agz_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PT_,1)}, + _agA_=caml_call4(Runtime_ocaml_Runtime[63],_PU_,[0],_agz_,_agy_), + prestations_familiales_dot_res= + caml_call3 + (Runtime_ocaml_Runtime[28],_PV_,embed_collectivite$0,_agA_)} + catch(_ajm_) + {_ajm_ = caml_wrap_exception(_ajm_); + if(_ajm_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_PR_]; + throw _ajm_} + var + _agB_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_PW_,eligibilite_prestations_famili), + [0, + prestations_familiales_dot_dat, + prestations_familiales_dot_pre, + prestations_familiales_dot_res]), + result=caml_call2(Runtime_ocaml_Runtime[27],_PX_,_agB_), + prestations_familiales_dot_dro=result[1]; + try + {var + _agC_=function(param){return 0}, + _agD_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PZ_,1)}, + _agE_= + [0, + function(param) + {function _aiV_(param){return 1} + function _aiW_(param) + {switch(menage[2][3][0]) + {case 0:var _ajl_=1;break; + case 1:var _ajl_=1;break; + case 2:var _ajl_=0;break; + case 3:var _ajl_=1;break; + default:var _ajl_=1} + return caml_call2(Runtime_ocaml_Runtime[29],_P0_,_ajl_)} + var + _aiX_= + [0, + function(param) + {function _aiY_(param){throw Runtime_ocaml_Runtime[2]} + function _aiZ_(param){return 0} + var + _ai0_= + [0, + function(param) + {function _ai1_(param){return 1} + function _ai2_(param) + {var _ajf_=menage[2][3]; + switch(_ajf_[0]) + {case 0:var _ajg_=0;break; + case 1:var _ajg_=0;break; + case 2: + var proprietaire=_ajf_[1]; + switch(proprietaire[6][0]) + {case 0:var _ajh_=1;break; + case 1:var _ajh_=0;break; + case 2:var _ajh_=0;break; + default:var _ajh_=0} + switch(proprietaire[6][0]) + {case 0:var _aji_=0;break; + case 1:var _aji_=0;break; + case 2:var _aji_=0;break; + default:var _aji_=1} + var + _ajj_=caml_call2(Runtime_ocaml_Runtime[84],_aji_,_ajh_), + _ajk_=0 === proprietaire[11][3][0]?1:0, + _ajg_=caml_call2(Runtime_ocaml_Runtime[83],_ajk_,_ajj_); + break; + case 3:var _ajg_=0;break; + default:var _ajg_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_P1_,_ajg_)} + var + _ai3_= + [0, + function(param) + {function _ai4_(param){return 1} + function _ai5_(param) + {var _ajb_=menage[2][3]; + switch(_ajb_[0]) + {case 0:var _ajc_=0;break; + case 1:var _ajc_=0;break; + case 2: + var proprietaire=_ajb_[1]; + switch(proprietaire[6][0]) + {case 0:var _ajd_=0;break; + case 1:var _ajd_=1;break; + case 2:var _ajd_=0;break; + default:var _ajd_=0} + var + _aje_=0 === proprietaire[11][3][0]?1:0, + _ajc_=caml_call2(Runtime_ocaml_Runtime[83],_aje_,_ajd_); + break; + case 3:var _ajc_=0;break; + default:var _ajc_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_P2_,_ajc_)} + var + _ai6_= + [0, + function(param) + {function _ai7_(param){return 1} + function _ai8_(param) + {var _ai9_=menage[2][3]; + switch(_ai9_[0]) + {case 0:var _ai__=0;break; + case 1:var _ai__=0;break; + case 2: + var proprietaire=_ai9_[1]; + switch(proprietaire[6][0]) + {case 0:var _ai$_=0;break; + case 1:var _ai$_=0;break; + case 2:var _ai$_=1;break; + default:var _ai$_=0} + var + _aja_=0 === proprietaire[11][3][0]?1:0, + _ai__=caml_call2(Runtime_ocaml_Runtime[83],_aja_,_ai$_); + break; + case 3:var _ai__=0;break; + default:var _ai__=0} + return caml_call2(Runtime_ocaml_Runtime[29],_P3_,_ai__)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_P4_,[0],_ai8_,_ai7_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_P5_,_ai6_,_ai5_,_ai4_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_P6_,_ai3_,_ai2_,_ai1_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_P7_,_ai0_,_aiZ_,_aiY_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_P8_,_aiX_,_aiW_,_aiV_)}], + _agF_=caml_call4(Runtime_ocaml_Runtime[63],_P9_,_agE_,_agD_,_agC_)} + catch(_aiU_) + {_aiU_ = caml_wrap_exception(_aiU_); + if(_aiU_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_PY_]; + throw _aiU_} + var + condition_accession_propriete= + caml_call3 + (Runtime_ocaml_Runtime[28],_P__,Runtime_ocaml_Runtime[12],_agF_); + try + {var + _agG_=function(param){return menage}, + _agH_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qa_,1)}, + _agI_=caml_call4(Runtime_ocaml_Runtime[63],_Qb_,[0],_agH_,_agG_), + eligibilite_commune_dot_menage= + caml_call3(Runtime_ocaml_Runtime[28],_Qc_,embed_menage,_agI_)} + catch(_aiT_) + {_aiT_ = caml_wrap_exception(_aiT_); + if(_aiT_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_P$_]; + throw _aiT_} + try + {var + _agJ_=function(param){return demandeur}, + _agK_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qe_,1)}, + _agL_=caml_call4(Runtime_ocaml_Runtime[63],_Qf_,[0],_agK_,_agJ_), + eligibilite_commune_dot_demand= + caml_call3(Runtime_ocaml_Runtime[28],_Qg_,embed_demandeur,_agL_)} + catch(_aiS_) + {_aiS_ = caml_wrap_exception(_aiS_); + if(_aiS_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Qd_]; + throw _aiS_} + try + {var + _agM_=function(param){return date_courante}, + _agN_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qi_,1)}, + _agO_=caml_call4(Runtime_ocaml_Runtime[63],_Qj_,[0],_agN_,_agM_), + eligibilite_commune_dot_date_c= + caml_call3 + (Runtime_ocaml_Runtime[28],_Qk_,Runtime_ocaml_Runtime[16],_agO_)} + catch(_aiR_) + {_aiR_ = caml_wrap_exception(_aiR_); + if(_aiR_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Qh_]; + throw _aiR_} + function eligibilite_commune_dot_condit(param) + {function _aiM_(param){return 1} + function _aiN_(param) + {var _aiP_=menage[2][3]; + switch(_aiP_[0]) + {case 0:var _aiQ_=0;break; + case 1:var logement_foyer=_aiP_[1],_aiQ_=logement_foyer[5];break; + case 2:var _aiQ_=0;break; + case 3:var _aiQ_=0;break; + default:var _aiQ_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_Ql_,_aiQ_)} + var _aiO_=caml_call4(Runtime_ocaml_Runtime[63],_Qm_,[0],_aiN_,_aiM_); + return caml_call3 + (Runtime_ocaml_Runtime[28], + _Qn_, + Runtime_ocaml_Runtime[12], + _aiO_)} + function eligibilite_commune_dot_condit$0(param) + {function _aiH_(param){return 1} + function _aiI_(param) + {var _aiK_=menage[2][3]; + switch(_aiK_[0]) + {case 0:var _aiL_=0;break; + case 1:var logement_foyer=_aiK_[1],_aiL_=logement_foyer[5];break; + case 2:var _aiL_=0;break; + case 3:var _aiL_=0;break; + default:var _aiL_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_Qo_,_aiL_)} + var _aiJ_=caml_call4(Runtime_ocaml_Runtime[63],_Qp_,[0],_aiI_,_aiH_); + return caml_call3 + (Runtime_ocaml_Runtime[28], + _Qq_, + Runtime_ocaml_Runtime[12], + _aiJ_)} + var + _agP_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Qr_,eligibilite_aides_personnelle_), + [0, + eligibilite_commune_dot_menage, + eligibilite_commune_dot_demand, + eligibilite_commune_dot_date_c, + eligibilite_commune_dot_condit, + eligibilite_commune_dot_condit$0]), + result$0=caml_call2(Runtime_ocaml_Runtime[27],_Qs_,_agP_), + eligibilite_commune_dot_eligib=result$0[2], + eligibilite_commune_dot_nombre=result$0[3], + eligibilite_commune_dot_coeffi=result$0[4], + eligibilite_commune_dot_condit$1=result$0[5]; + try + {var + _agQ_=function(param){return eligibilite_commune_dot_coeffi}, + _agR_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qu_,1)}, + _agS_=caml_call4(Runtime_ocaml_Runtime[63],_Qv_,[0],_agR_,_agQ_)} + catch(_aiG_) + {_aiG_ = caml_wrap_exception(_aiG_); + if(_aiG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Qt_]; + throw _aiG_} + var + _agT_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), + coefficents_enfants_garde_alte= + caml_call3(Runtime_ocaml_Runtime[28],_Qw_,_agT_,_agS_); + try + {var + _agU_=function(param){return eligibilite_commune_dot_nombre}, + _agV_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qy_,1)}, + _agW_=caml_call4(Runtime_ocaml_Runtime[63],_Qz_,[0],_agV_,_agU_)} + catch(_aiF_) + {_aiF_ = caml_wrap_exception(_aiF_); + if(_aiF_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Qx_]; + throw _aiF_} + var + nombre_personnes_a_charge_pris= + caml_call3 + (Runtime_ocaml_Runtime[28],_QA_,Runtime_ocaml_Runtime[14],_agW_); + try + {var + _agX_= + function(param) + {var + _aiD_= + caml_call1 + (Runtime_ocaml_Runtime[67],condition_accession_propriete), + _aiE_= + caml_call1 + (Runtime_ocaml_Runtime[67],eligibilite_commune_dot_eligib); + return caml_call2(Runtime_ocaml_Runtime[84],_aiE_,_aiD_)?_QC_:_QD_}, + _agY_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_QE_,1)}, + _agZ_=caml_call4(Runtime_ocaml_Runtime[63],_QF_,[0],_agY_,_agX_)} + catch(_aiC_) + {_aiC_ = caml_wrap_exception(_aiC_); + if(_aiC_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_QB_]; + throw _aiC_} + var + eligibilite_dispositions_commu= + caml_call3 + (Runtime_ocaml_Runtime[28],_QG_,embed_type_eligibilite_allocat,_agZ_); + try + {var + _ag0_=function(param){return 0}, + _ag1_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_QI_,1)}, + _ag2_= + [0, + function(param) + {function _ahk_(param){return 1} + function _ahl_(param) + {var _air_=menage[1],_ais_=0; + function _ait_(acc,prestation) + {var + _aiv_=caml_call2(Runtime_ocaml_Runtime[86],prestation,_QJ_), + _aiw_=caml_call2(Runtime_ocaml_Runtime[86],prestation,_QK_), + _aix_=caml_call2(Runtime_ocaml_Runtime[84],_aiw_,_aiv_), + _aiy_=caml_call2(Runtime_ocaml_Runtime[86],prestation,_QL_), + _aiz_=caml_call2(Runtime_ocaml_Runtime[84],_aiy_,_aix_), + _aiA_=caml_call2(Runtime_ocaml_Runtime[86],prestation,_QM_), + _aiB_=caml_call2(Runtime_ocaml_Runtime[84],_aiA_,_aiz_); + return caml_call2(Runtime_ocaml_Runtime[84],acc,_aiB_)} + var + _aiu_= + caml_call3(Runtime_ocaml_Runtime[135],_ait_,_ais_,_air_); + return caml_call2(Runtime_ocaml_Runtime[29],_QN_,_aiu_)} + var + _ahm_= + [0, + function(param) + {function _ahn_(param){return 1} + function _aho_(param) + {var + _aif_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$273), + _aig_=menage[3]; + function _aih_(personne_a_charge) + {if(0 === personne_a_charge[0]) + {var + enfant=personne_a_charge[1], + _ail_=enfant[2], + _aim_=enfant[3], + _ain_=0 === enfant[7][0]?_QO_:_QT_, + _aio_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _QP_, + embed_enfant_prestations_famil, + [0, + enfant[1], + enfant[6], + enfant[5], + enfant[4], + _ain_, + _aim_, + _ail_]), + _aip_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _QQ_, + prestations_familiales_dot_dro), + _aio_), + _aiq_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _QR_, + Runtime_ocaml_Runtime[12], + _aip_); + return caml_call2(Runtime_ocaml_Runtime[27],_QS_,_aiq_)} + return 0} + var + _aii_=caml_call2(Runtime_ocaml_Runtime[90],_aih_,_aig_), + _aij_=caml_call1(Runtime_ocaml_Runtime[68],_aii_), + _aik_=caml_call2(Runtime_ocaml_Runtime[86],_aij_,_aif_); + return caml_call2(Runtime_ocaml_Runtime[29],_QU_,_aik_)} + var + _ahp_= + [0, + function(param) + {function _ahq_(param){return 1} + function _ahr_(param) + {var _ah0_=menage[5]; + switch(_ah0_[0]) + {case 0:var _ah1_=0;break; + case 1: + var + date_mariage=_ah0_[1], + _ah9_= + caml_call2 + (Runtime_ocaml_Runtime[94],date_mariage,duree_l841_1_3), + _ah1_= + caml_call2(Runtime_ocaml_Runtime[119],date_courante,_ah9_); + break; + case 2:var _ah1_=0;break; + case 3:var _ah1_=0;break; + case 4:var _ah1_=0;break; + default:var _ah1_=0} + var + _ah2_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$391), + _ah3_=menage[3]; + function _ah4_(personne_a_charge) + {if(0 === personne_a_charge[0]) + {var + enfant=personne_a_charge[1], + _ah__=enfant[2], + _ah$_=enfant[3], + _aia_=0 === enfant[7][0]?_QV_:_Q0_, + _aib_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _QW_, + embed_enfant_prestations_famil, + [0, + enfant[1], + enfant[6], + enfant[5], + enfant[4], + _aia_, + _ah$_, + _ah__]), + _aic_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _QX_, + prestations_familiales_dot_dro), + _aib_), + _aid_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _QY_, + Runtime_ocaml_Runtime[12], + _aic_), + _aie_=caml_call2(Runtime_ocaml_Runtime[27],_QZ_,_aid_); + return caml_call1(Runtime_ocaml_Runtime[67],_aie_)} + return 0} + var + _ah5_=caml_call2(Runtime_ocaml_Runtime[90],_ah4_,_ah3_), + _ah6_=caml_call1(Runtime_ocaml_Runtime[68],_ah5_), + _ah7_=caml_call2(Runtime_ocaml_Runtime[86],_ah6_,_ah2_), + _ah8_=caml_call2(Runtime_ocaml_Runtime[83],_ah7_,_ah1_); + return caml_call2(Runtime_ocaml_Runtime[29],_Q1_,_ah8_)} + var + _ahs_= + [0, + function(param) + {function _aht_(param) + {function _ahD_(param){throw Runtime_ocaml_Runtime[2]} + function _ahE_(param){return 0} + var + _ahF_= + [0, + function(param) + {function _ahG_(param){return 1} + function _ahH_(param) + {var + _ahR_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$274), + _ahS_=menage[3]; + function _ahT_(personne_a_charge) + {var + _ahX_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Q2_, + embed_personne_a_charge, + personne_a_charge), + _ahY_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Q3_, + eligibilite_commune_dot_condit$1), + _ahX_), + _ahZ_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Q4_, + Runtime_ocaml_Runtime[12], + _ahY_); + return caml_call2(Runtime_ocaml_Runtime[27],_Q5_,_ahZ_)} + var + _ahU_=caml_call2(Runtime_ocaml_Runtime[90],_ahT_,_ahS_), + _ahV_=caml_call1(Runtime_ocaml_Runtime[68],_ahU_), + _ahW_=caml_call2(Runtime_ocaml_Runtime[125],_ahV_,_ahR_); + return caml_call2(Runtime_ocaml_Runtime[29],_Q6_,_ahW_)} + var + _ahI_= + [0, + function(param) + {function _ahJ_(param){return 1} + function _ahK_(param) + {var + _ahL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$275), + _ahM_=menage[3]; + function _ahN_(personne_a_charge) + {if(0 === personne_a_charge[0])return 0; + var parent=personne_a_charge[1]; + return caml_call2 + (Runtime_ocaml_Runtime[83],parent[3],parent[5])} + var + _ahO_=caml_call2(Runtime_ocaml_Runtime[90],_ahN_,_ahM_), + _ahP_=caml_call1(Runtime_ocaml_Runtime[68],_ahO_), + _ahQ_=caml_call2(Runtime_ocaml_Runtime[125],_ahP_,_ahL_); + return caml_call2(Runtime_ocaml_Runtime[29],_Q7_,_ahQ_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Q8_,[0],_ahK_,_ahJ_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Q9_,_ahI_,_ahH_,_ahG_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Q__,_ahF_,_ahE_,_ahD_)} + function _ahu_(param){return 1} + var + _ahv_= + [0, + function(param) + {function _ahw_(param){return 1} + function _ahx_(param) + {switch(menage[5][0]) + {case 0: + var + _ahy_=menage[7], + _ahz_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$392), + _ahA_=caml_call1(Runtime_ocaml_Runtime[68],menage[3]), + _ahB_=caml_call2(Runtime_ocaml_Runtime[86],_ahA_,_ahz_), + _ahC_=caml_call2(Runtime_ocaml_Runtime[83],_ahB_,_ahy_); + break; + case 1:var _ahC_=0;break; + case 2:var _ahC_=0;break; + case 3:var _ahC_=0;break; + case 4:var _ahC_=0;break; + default:var _ahC_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_Q$_,_ahC_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Ra_,[0],_ahx_,_ahw_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Rb_,_ahv_,_ahu_,_aht_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Rc_,_ahs_,_ahr_,_ahq_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Rd_,_ahp_,_aho_,_ahn_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Re_,_ahm_,_ahl_,_ahk_)}], + _ag3_=caml_call4(Runtime_ocaml_Runtime[63],_Rf_,_ag2_,_ag1_,_ag0_)} + catch(_ahj_) + {_ahj_ = caml_wrap_exception(_ahj_); + if(_ahj_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_QH_]; + throw _ahj_} + var + eligibilite_allocation_logemen$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_Rg_,Runtime_ocaml_Runtime[12],_ag3_); + try + {var + _ag4_= + function(param) + {var + _ahi_= + caml_call2 + (Runtime_ocaml_Runtime[86],eligibilite_dispositions_commu,_Ri_); + return caml_call2 + (Runtime_ocaml_Runtime[84], + _ahi_, + beneficie_aide_personnalisee_l) + ?_Rj_ + :eligibilite_allocation_logemen$0?_Rk_:_Rl_}, + _ag5_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Rm_,1)}, + _ag6_= + [0, + function(param) + {function _ag9_(param){throw Runtime_ocaml_Runtime[2]} + function _ag__(param){return 0} + function _ag$_(param) + {function _ahd_(param){return _Rn_} + function _ahe_(param) + {var _ahf_=menage[2][3]; + switch(_ahf_[0]) + {case 0:var _ahg_=0;break; + case 1:var _ahg_=0;break; + case 2: + var + proprietaire=_ahf_[1], + _ahh_=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), + _ahg_= + caml_call2 + (Runtime_ocaml_Runtime[124],proprietaire[11][2],_ahh_); + break; + case 3:var _ahg_=0;break; + default:var _ahg_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_Ro_,_ahg_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Rp_,[0],_ahe_,_ahd_)} + var + _aha_= + [0, + function(param) + {function _ahb_(param){return _Rq_} + function _ahc_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_Rr_,demandeur[4])} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Rs_,[0],_ahc_,_ahb_)}, + _ag$_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Rt_,_aha_,_ag__,_ag9_)}], + _ag7_=caml_call4(Runtime_ocaml_Runtime[63],_Ru_,_ag6_,_ag5_,_ag4_)} + catch(_ag8_) + {_ag8_ = caml_wrap_exception(_ag8_); + if(_ag8_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Rh_]; + throw _ag8_} + var + eligibilite_l841_2= + caml_call3 + (Runtime_ocaml_Runtime[28],_Rv_,embed_type_eligibilite_allocat,_ag7_); + return [0, + eligibilite_l841_2, + nombre_personnes_a_charge_pris, + coefficents_enfants_garde_alte]} + function calcul_allocation_logement(calcul_allocation_logement_in) + {var + mode_occupation=calcul_allocation_logement_in[1], + ressources_menage_sans_arrondi=calcul_allocation_logement_in[2], + situation_familiale=calcul_allocation_logement_in[3], + nombre_personnes_a_charge=calcul_allocation_logement_in[4], + zone=calcul_allocation_logement_in[5], + date_courante=calcul_allocation_logement_in[6], + type_aide=calcul_allocation_logement_in[7]; + try + {var + _afi_= + function(param) + {switch(mode_occupation[0]) + {case 0:var location=mode_occupation[1];return [0,location]; + case 1: + var logementfoyer=mode_occupation[1];return [2,logementfoyer]; + case 2: + var proprietaire=mode_occupation[1];return [1,proprietaire]; + case 3:var location$0=mode_occupation[1];return [0,location$0]; + default: + var proprietaire$0=mode_occupation[1];return [1,proprietaire$0]}}, + _afj_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Rx_,1)}, + _afk_=caml_call4(Runtime_ocaml_Runtime[63],_Ry_,[0],_afj_,_afi_)} + catch(_ago_) + {_ago_ = caml_wrap_exception(_ago_); + if(_ago_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Rw_]; + throw _ago_} + caml_call3 + (Runtime_ocaml_Runtime[28],_Rz_,embed_categorie_calcul_a_p_l,_afk_); + try + {var + _afl_= + function(param) + {var + _agi_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$13), + _agj_=caml_call1(Runtime_ocaml_Runtime[31],cst_49$0), + _agk_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_01$1), + _agl_= + caml_call2 + (Runtime_ocaml_Runtime[104], + ressources_menage_sans_arrondi, + _agk_), + _agm_=caml_call2(Runtime_ocaml_Runtime[93],_agl_,_agj_), + _agn_=caml_call1(Runtime_ocaml_Runtime[77],_agm_); + return caml_call2(Runtime_ocaml_Runtime[104],_agn_,_agi_)}, + _afm_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_RB_,1)}, + _afn_=caml_call4(Runtime_ocaml_Runtime[63],_RC_,[0],_afm_,_afl_)} + catch(_agh_) + {_agh_ = caml_wrap_exception(_agh_); + if(_agh_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_RA_]; + throw _agh_} + var + ressources_menage_avec_arrondi= + caml_call3 + (Runtime_ocaml_Runtime[28],_RD_,Runtime_ocaml_Runtime[13],_afn_); + try + {var + _afo_= + function(param) + {switch(situation_familiale[0]) + {case 0:return _RF_; + case 1:return _RG_; + case 2:return _RH_; + case 3:return _RI_; + case 4:return _RJ_; + default:return _RK_}}, + _afp_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_RL_,1)}, + _afq_=caml_call4(Runtime_ocaml_Runtime[63],_RM_,[0],_afp_,_afo_)} + catch(_agg_) + {_agg_ = caml_wrap_exception(_agg_); + if(_agg_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_RE_]; + throw _agg_} + var + situation_familiale_calcul_apl= + caml_call3 + (Runtime_ocaml_Runtime[28],_RN_,embed_situation_familiale_calc,_afq_); + try + {var + _afr_= + function(param) + {switch(mode_occupation[0]) + {case 0: + var + location=mode_occupation[1], + _afE_=location[8], + _afF_=location[7]; + try + {var _afG_=location[1]; + switch(_afG_[0]) + {case 0:var bailleur=_afG_[1],_afH_=bailleur[2];break; + case 1: + var _afH_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$393); + break; + default: + var _afH_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$394)}} + catch(_agc_) + {_agc_ = caml_wrap_exception(_agc_); + if(_agc_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_RP_]; + throw _agc_} + var + _afI_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _RQ_, + embed_calcul_allocation_logeme$3, + [0, + location[2], + ressources_menage_avec_arrondi, + location[3], + date_courante, + nombre_personnes_a_charge, + situation_familiale_calcul_apl, + zone, + location[4], + location[6], + type_aide, + location[5], + _afH_, + _afF_, + _afE_]), + result= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _RR_, + calcul_allocation_logement_loc), + _afI_), + _afJ_= + function(param) + {var + _af$_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _RS_, + Runtime_ocaml_Runtime[13], + param), + _aga_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_RT_,result[2]),_af$_), + _agb_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _RU_, + Runtime_ocaml_Runtime[13], + _aga_); + return caml_call2(Runtime_ocaml_Runtime[27],_RV_,_agb_)}, + result$0=[0,result[1],_afJ_]; + if(caml_call2(Runtime_ocaml_Runtime[29],_RW_,1)) + {var + _afK_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _RX_, + embed_calcul_allocation_logeme, + result$0), + traitement_formule= + caml_call2(Runtime_ocaml_Runtime[27],_RY_,_afK_); + return [0,traitement_formule[1],traitement_formule[2]]} + throw Runtime_ocaml_Runtime[2]; + case 1: + var + logement_foyer=mode_occupation[1], + _afL_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _RZ_, + embed_calcul_allocation_logeme$5, + [0, + logement_foyer[1], + logement_foyer[4], + logement_foyer[6], + ressources_menage_avec_arrondi, + nombre_personnes_a_charge, + situation_familiale_calcul_apl, + zone, + date_courante, + logement_foyer[7]]), + result$1= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _R0_, + calcul_allocation_logement_foy), + _afL_), + _afM_= + function(param) + {var + _af8_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _R1_, + Runtime_ocaml_Runtime[13], + param), + _af9_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_R2_,result$1[6]), + _af8_), + _af__= + caml_call3 + (Runtime_ocaml_Runtime[28], + _R3_, + Runtime_ocaml_Runtime[13], + _af9_); + return caml_call2(Runtime_ocaml_Runtime[27],_R4_,_af__)}, + result$2= + [0, + result$1[1], + result$1[2], + result$1[3], + result$1[4], + result$1[5], + _afM_]; + if(caml_call2(Runtime_ocaml_Runtime[29],_R5_,1)) + {var + _afN_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _R6_, + embed_calcul_allocation_logeme$1, + result$2), + traitement_formule$0= + caml_call2(Runtime_ocaml_Runtime[27],_R7_,_afN_); + return [0,traitement_formule$0[5],traitement_formule$0[6]]} + throw Runtime_ocaml_Runtime[2]; + case 2: + var + proprietaire=mode_occupation[1], + _afO_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _R8_, + embed_calcul_allocation_logeme$4, + [0, + ressources_menage_avec_arrondi, + nombre_personnes_a_charge, + situation_familiale_calcul_apl, + zone, + date_courante, + proprietaire[2], + proprietaire[9], + proprietaire[11][2], + proprietaire[6], + proprietaire[7], + proprietaire[4], + proprietaire[3], + proprietaire[8]]), + result$3= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _R9_, + calcul_allocation_logement_acc), + _afO_), + _afP_= + function(param) + {var + _af5_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _R__, + Runtime_ocaml_Runtime[13], + param), + _af6_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_R$_,result$3[2]), + _af5_), + _af7_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Sa_, + Runtime_ocaml_Runtime[13], + _af6_); + return caml_call2(Runtime_ocaml_Runtime[27],_Sb_,_af7_)}, + result$4=[0,result$3[1],_afP_]; + if(caml_call2(Runtime_ocaml_Runtime[29],_Sc_,1)) + {var + _afQ_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Sd_, + embed_calcul_allocation_logeme$0, + result$4), + traitement_formule$1= + caml_call2(Runtime_ocaml_Runtime[27],_Se_,_afQ_); + return [0,traitement_formule$1[1],traitement_formule$1[2]]} + throw Runtime_ocaml_Runtime[2]; + case 3: + var + location$0=mode_occupation[1], + _afR_=location$0[8], + _afS_=location$0[7]; + try + {var _afT_=location$0[1]; + switch(_afT_[0]) + {case 0:var bailleur$0=_afT_[1],_afU_=bailleur$0[2];break; + case 1: + var _afU_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$395); + break; + default: + var _afU_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$396)}} + catch(_af4_) + {_af4_ = caml_wrap_exception(_af4_); + if(_af4_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Sf_]; + throw _af4_} + var + _afV_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Sg_, + embed_calcul_allocation_logeme$3, + [0, + location$0[2], + ressources_menage_avec_arrondi, + location$0[3], + date_courante, + nombre_personnes_a_charge, + situation_familiale_calcul_apl, + zone, + location$0[4], + location$0[6], + type_aide, + location$0[5], + _afU_, + _afS_, + _afR_]), + result$5= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Sh_, + calcul_allocation_logement_loc), + _afV_), + _afW_= + function(param) + {var + _af1_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Si_, + Runtime_ocaml_Runtime[13], + param), + _af2_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_Sj_,result$5[2]), + _af1_), + _af3_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Sk_, + Runtime_ocaml_Runtime[13], + _af2_); + return caml_call2(Runtime_ocaml_Runtime[27],_Sl_,_af3_)}, + result$6=[0,result$5[1],_afW_]; + if(caml_call2(Runtime_ocaml_Runtime[29],_Sm_,1)) + {var + _afX_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Sn_, + embed_calcul_allocation_logeme, + result$6), + traitement_formule$2= + caml_call2(Runtime_ocaml_Runtime[27],_So_,_afX_); + return [0,traitement_formule$2[1],traitement_formule$2[2]]} + throw Runtime_ocaml_Runtime[2]; + default: + var + proprietaire$0=mode_occupation[1], + _afY_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Sp_, + embed_calcul_allocation_logeme$4, + [0, + ressources_menage_avec_arrondi, + nombre_personnes_a_charge, + situation_familiale_calcul_apl, + zone, + date_courante, + proprietaire$0[2], + proprietaire$0[9], + proprietaire$0[11][2], + proprietaire$0[6], + proprietaire$0[7], + proprietaire$0[4], + proprietaire$0[3], + proprietaire$0[8]]), + result$7= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Sq_, + calcul_allocation_logement_acc), + _afY_), + _afZ_= + function(param) + {var + _agd_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Sr_, + Runtime_ocaml_Runtime[13], + param), + _age_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_Ss_,result$7[2]), + _agd_), + _agf_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _St_, + Runtime_ocaml_Runtime[13], + _age_); + return caml_call2(Runtime_ocaml_Runtime[27],_Su_,_agf_)}, + result$8=[0,result$7[1],_afZ_]; + if(caml_call2(Runtime_ocaml_Runtime[29],_Sv_,1)) + {var + _af0_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Sw_, + embed_calcul_allocation_logeme$0, + result$8), + traitement_formule$3= + caml_call2(Runtime_ocaml_Runtime[27],_Sx_,_af0_); + return [0,traitement_formule$3[1],traitement_formule$3[2]]} + throw Runtime_ocaml_Runtime[2]}}, + _afs_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Sy_,1)}, + _aft_=caml_call4(Runtime_ocaml_Runtime[63],_Sz_,[0],_afs_,_afr_)} + catch(_afD_) + {_afD_ = caml_wrap_exception(_afD_); + if(_afD_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_RO_]; + throw _afD_} + var + sous_calcul_traitement= + caml_call3 + (Runtime_ocaml_Runtime[28],_SA_,embed_traitement_formule_aide_,_aft_); + function _afu_(param) + {try + {var + _afz_= + function(param$0) + {return caml_call1(sous_calcul_traitement[2],param)}, + _afA_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_SC_,1)}, + _afB_=caml_call4(Runtime_ocaml_Runtime[63],_SD_,[0],_afA_,_afz_); + return _afB_} + catch(_afC_) + {_afC_ = caml_wrap_exception(_afC_); + if(_afC_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_SB_]; + throw _afC_}} + var + traitement_aide_finale= + caml_call3 + (Runtime_ocaml_Runtime[28],_SE_,Runtime_ocaml_Runtime[10],_afu_); + try + {var + _afv_=function(param){return sous_calcul_traitement[1]}, + _afw_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SG_,1)}, + _afx_=caml_call4(Runtime_ocaml_Runtime[63],_SH_,[0],_afw_,_afv_)} + catch(_afy_) + {_afy_ = caml_wrap_exception(_afy_); + if(_afy_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_SF_]; + throw _afy_} + var + aide_finale_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_SI_,Runtime_ocaml_Runtime[13],_afx_); + return [0,aide_finale_formule,traitement_aide_finale]} + function calculette_aides_au_logement(calculette_aides_au_logement_i) + {var + menage=calculette_aides_au_logement_i[1], + demandeur=calculette_aides_au_logement_i[2], + date_courante=calculette_aides_au_logement_i[3], + ressources_menage_prises_en_co=calculette_aides_au_logement_i[4]; + try + {var + _adl_=function(param){return date_courante}, + _adm_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SK_,1)}, + _adn_=caml_call4(Runtime_ocaml_Runtime[63],_SL_,[0],_adm_,_adl_), + eligibilite_allocation_logemen$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_SM_,Runtime_ocaml_Runtime[16],_adn_)} + catch(_afh_) + {_afh_ = caml_wrap_exception(_afh_); + if(_afh_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_SJ_]; + throw _afh_} + try + {var + _ado_=function(param){return menage}, + _adp_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SO_,1)}, + _adq_=caml_call4(Runtime_ocaml_Runtime[63],_SP_,[0],_adp_,_ado_), + eligibilite_allocation_logemen$1= + caml_call3(Runtime_ocaml_Runtime[28],_SQ_,embed_menage,_adq_)} + catch(_afg_) + {_afg_ = caml_wrap_exception(_afg_); + if(_afg_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_SN_]; + throw _afg_} + try + {var + _adr_=function(param){return demandeur}, + _ads_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SS_,1)}, + _adt_=caml_call4(Runtime_ocaml_Runtime[63],_ST_,[0],_ads_,_adr_), + eligibilite_allocation_logemen$2= + caml_call3(Runtime_ocaml_Runtime[28],_SU_,embed_demandeur,_adt_)} + catch(_aff_) + {_aff_ = caml_wrap_exception(_aff_); + if(_aff_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_SR_]; + throw _aff_} + try + {var + _adu_=function(param){return 0}, + _adv_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SW_,1)}, + _adw_=caml_call4(Runtime_ocaml_Runtime[63],_SX_,[0],_adv_,_adu_), + eligibilite_allocation_logemen$3= + caml_call3 + (Runtime_ocaml_Runtime[28],_SY_,Runtime_ocaml_Runtime[12],_adw_)} + catch(_afe_) + {_afe_ = caml_wrap_exception(_afe_); + if(_afe_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_SV_]; + throw _afe_} + var + _adx_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_SZ_,eligibilite_allocation_logemen), + [0, + eligibilite_allocation_logemen$0, + eligibilite_allocation_logemen$1, + eligibilite_allocation_logemen$2, + eligibilite_allocation_logemen$3]), + result=caml_call2(Runtime_ocaml_Runtime[27],_S0_,_adx_), + eligibilite_allocation_logemen$4=result[1], + eligibilite_allocation_logemen$5=result[2]; + try + {var + _ady_=function(param){return menage}, + _adz_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_S2_,1)}, + _adA_=caml_call4(Runtime_ocaml_Runtime[63],_S3_,[0],_adz_,_ady_), + eligibilite_aide_personnalisee$0= + caml_call3(Runtime_ocaml_Runtime[28],_S4_,embed_menage,_adA_)} + catch(_afd_) + {_afd_ = caml_wrap_exception(_afd_); + if(_afd_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_S1_]; + throw _afd_} + try + {var + _adB_=function(param){return demandeur}, + _adC_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_S6_,1)}, + _adD_=caml_call4(Runtime_ocaml_Runtime[63],_S7_,[0],_adC_,_adB_), + eligibilite_aide_personnalisee$1= + caml_call3(Runtime_ocaml_Runtime[28],_S8_,embed_demandeur,_adD_)} + catch(_afc_) + {_afc_ = caml_wrap_exception(_afc_); + if(_afc_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_S5_]; + throw _afc_} + try + {var + _adE_=function(param){return date_courante}, + _adF_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_S__,1)}, + _adG_=caml_call4(Runtime_ocaml_Runtime[63],_S$_,[0],_adF_,_adE_), + eligibilite_aide_personnalisee$2= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ta_,Runtime_ocaml_Runtime[16],_adG_)} + catch(_afb_) + {_afb_ = caml_wrap_exception(_afb_); + if(_afb_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_S9_]; + throw _afb_} + var + _adH_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Tb_,eligibilite_aide_personnalisee), + [0, + eligibilite_aide_personnalisee$0, + eligibilite_aide_personnalisee$1, + eligibilite_aide_personnalisee$2]), + result$0=caml_call2(Runtime_ocaml_Runtime[27],_Tc_,_adH_), + eligibilite_aide_personnalisee$3=result$0[2], + eligibilite_aide_personnalisee$4=result$0[3], + eligibilite_aide_personnalisee$5=result$0[4]; + try + {var + _adI_=function(param){return menage[2][3]}, + _adJ_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Te_,1)}, + _adK_=caml_call4(Runtime_ocaml_Runtime[63],_Tf_,[0],_adJ_,_adI_), + calcul_allocation_logement_dot= + caml_call3 + (Runtime_ocaml_Runtime[28],_Tg_,embed_mode_occupation,_adK_)} + catch(_afa_) + {_afa_ = caml_wrap_exception(_afa_); + if(_afa_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Td_]; + throw _afa_} + try + {var + _adL_=function(param){return ressources_menage_prises_en_co}, + _adM_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ti_,1)}, + _adN_=caml_call4(Runtime_ocaml_Runtime[63],_Tj_,[0],_adM_,_adL_), + calcul_allocation_logement_dot$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_Tk_,Runtime_ocaml_Runtime[13],_adN_)} + catch(_ae$_) + {_ae$_ = caml_wrap_exception(_ae$_); + if(_ae$_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Th_]; + throw _ae$_} + try + {var + _adO_=function(param){return menage[5]}, + _adP_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Tm_,1)}, + _adQ_=caml_call4(Runtime_ocaml_Runtime[63],_Tn_,[0],_adP_,_adO_), + calcul_allocation_logement_dot$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_To_,embed_situation_familiale,_adQ_)} + catch(_ae__) + {_ae__ = caml_wrap_exception(_ae__); + if(_ae__ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Tl_]; + throw _ae__} + try + {var + _adR_=function(param){return eligibilite_allocation_logemen$5}, + _adS_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Tq_,1)}, + _adT_=caml_call4(Runtime_ocaml_Runtime[63],_Tr_,[0],_adS_,_adR_), + calcul_allocation_logement_dot$2= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ts_,Runtime_ocaml_Runtime[14],_adT_)} + catch(_ae9_) + {_ae9_ = caml_wrap_exception(_ae9_); + if(_ae9_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Tp_]; + throw _ae9_} + try + {var + _adU_=function(param){return menage[2][9]}, + _adV_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Tu_,1)}, + _adW_=caml_call4(Runtime_ocaml_Runtime[63],_Tv_,[0],_adV_,_adU_), + calcul_allocation_logement_dot$3= + caml_call3 + (Runtime_ocaml_Runtime[28],_Tw_,embed_zone_d_habitation,_adW_)} + catch(_ae8_) + {_ae8_ = caml_wrap_exception(_ae8_); + if(_ae8_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Tt_]; + throw _ae8_} + try + {var + _adX_=function(param){return date_courante}, + _adY_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ty_,1)}, + _adZ_=caml_call4(Runtime_ocaml_Runtime[63],_Tz_,[0],_adY_,_adX_), + calcul_allocation_logement_dot$4= + caml_call3 + (Runtime_ocaml_Runtime[28],_TA_,Runtime_ocaml_Runtime[16],_adZ_)} + catch(_ae7_) + {_ae7_ = caml_wrap_exception(_ae7_); + if(_ae7_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Tx_]; + throw _ae7_} + try + {var + _ad0_= + function(param) + {switch(eligibilite_allocation_logemen$4[0]) + {case 0:return _TC_;case 1:return _TD_;default:return _TE_}}, + _ad1_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TF_,1)}, + _ad2_=caml_call4(Runtime_ocaml_Runtime[63],_TG_,[0],_ad1_,_ad0_), + calcul_allocation_logement_dot$5= + caml_call3 + (Runtime_ocaml_Runtime[28], + _TH_, + embed_type_aides_personnelle_l, + _ad2_)} + catch(_ae6_) + {_ae6_ = caml_wrap_exception(_ae6_); + if(_ae6_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_TB_]; + throw _ae6_} + var + _ad3_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_TI_,calcul_allocation_logement), + [0, + calcul_allocation_logement_dot, + calcul_allocation_logement_dot$0, + calcul_allocation_logement_dot$1, + calcul_allocation_logement_dot$2, + calcul_allocation_logement_dot$3, + calcul_allocation_logement_dot$4, + calcul_allocation_logement_dot$5]), + result$1=caml_call2(Runtime_ocaml_Runtime[27],_TJ_,_ad3_), + calcul_allocation_logement_dot$6=result$1[1], + calcul_allocation_logement_dot$7=result$1[2]; + try + {var + _ad4_=function(param){return menage[2][3]}, + _ad5_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TL_,1)}, + _ad6_=caml_call4(Runtime_ocaml_Runtime[63],_TM_,[0],_ad5_,_ad4_), + calcul_aide_personnalisee_loge= + caml_call3 + (Runtime_ocaml_Runtime[28],_TN_,embed_mode_occupation,_ad6_)} + catch(_ae5_) + {_ae5_ = caml_wrap_exception(_ae5_); + if(_ae5_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_TK_]; + throw _ae5_} + try + {var + _ad7_=function(param){return _TP_}, + _ad8_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TQ_,1)}, + _ad9_=caml_call4(Runtime_ocaml_Runtime[63],_TR_,[0],_ad8_,_ad7_), + calcul_aide_personnalisee_loge$0= + caml_call3 + (Runtime_ocaml_Runtime[28], + _TS_, + embed_type_aides_personnelle_l, + _ad9_)} + catch(_ae4_) + {_ae4_ = caml_wrap_exception(_ae4_); + if(_ae4_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_TO_]; + throw _ae4_} + try + {var + _ad__=function(param){return ressources_menage_prises_en_co}, + _ad$_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TU_,1)}, + _aea_=caml_call4(Runtime_ocaml_Runtime[63],_TV_,[0],_ad$_,_ad__), + calcul_aide_personnalisee_loge$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_TW_,Runtime_ocaml_Runtime[13],_aea_)} + catch(_ae3_) + {_ae3_ = caml_wrap_exception(_ae3_); + if(_ae3_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_TT_]; + throw _ae3_} + try + {var + _aeb_=function(param){return menage[5]}, + _aec_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TY_,1)}, + _aed_=caml_call4(Runtime_ocaml_Runtime[63],_TZ_,[0],_aec_,_aeb_), + calcul_aide_personnalisee_loge$3= + caml_call3 + (Runtime_ocaml_Runtime[28],_T0_,embed_situation_familiale,_aed_)} + catch(_ae2_) + {_ae2_ = caml_wrap_exception(_ae2_); + if(_ae2_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_TX_]; + throw _ae2_} + try + {var + _aee_=function(param){return eligibilite_aide_personnalisee$4}, + _aef_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_T2_,1)}, + _aeg_=caml_call4(Runtime_ocaml_Runtime[63],_T3_,[0],_aef_,_aee_), + calcul_aide_personnalisee_loge$4= + caml_call3 + (Runtime_ocaml_Runtime[28],_T4_,Runtime_ocaml_Runtime[14],_aeg_)} + catch(_ae1_) + {_ae1_ = caml_wrap_exception(_ae1_); + if(_ae1_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_T1_]; + throw _ae1_} + try + {var + _aeh_=function(param){return menage[2][9]}, + _aei_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_T6_,1)}, + _aej_=caml_call4(Runtime_ocaml_Runtime[63],_T7_,[0],_aei_,_aeh_), + calcul_aide_personnalisee_loge$5= + caml_call3 + (Runtime_ocaml_Runtime[28],_T8_,embed_zone_d_habitation,_aej_)} + catch(_ae0_) + {_ae0_ = caml_wrap_exception(_ae0_); + if(_ae0_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_T5_]; + throw _ae0_} + try + {var + _aek_=function(param){return date_courante}, + _ael_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_T__,1)}, + _aem_=caml_call4(Runtime_ocaml_Runtime[63],_T$_,[0],_ael_,_aek_), + calcul_aide_personnalisee_loge$6= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ua_,Runtime_ocaml_Runtime[16],_aem_)} + catch(_aeZ_) + {_aeZ_ = caml_wrap_exception(_aeZ_); + if(_aeZ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_T9_]; + throw _aeZ_} + var + _aen_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Ub_,calcul_aide_personnalisee_loge$2), + [0, + calcul_aide_personnalisee_loge, + calcul_aide_personnalisee_loge$0, + calcul_aide_personnalisee_loge$1, + calcul_aide_personnalisee_loge$3, + calcul_aide_personnalisee_loge$4, + calcul_aide_personnalisee_loge$5, + calcul_aide_personnalisee_loge$6]), + result$2=caml_call2(Runtime_ocaml_Runtime[27],_Uc_,_aen_), + calcul_aide_personnalisee_loge$7=result$2[1], + calcul_aide_personnalisee_loge$8=result$2[2]; + try + {var + _aeo_=function(param){return eligibilite_aide_personnalisee$5}, + _aep_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ue_,1)}, + _aeq_=caml_call4(Runtime_ocaml_Runtime[63],_Uf_,[0],_aep_,_aeo_)} + catch(_aeY_) + {_aeY_ = caml_wrap_exception(_aeY_); + if(_aeY_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ud_]; + throw _aeY_} + var + _aer_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), + coefficents_enfants_garde_alte= + caml_call3(Runtime_ocaml_Runtime[28],_Ug_,_aer_,_aeq_); + try + {var + _aes_= + function(param) + {switch(eligibilite_allocation_logemen$4[0]) + {case 0:var _aeX_=0;break; + case 1:var _aeX_=1;break; + default:var _aeX_=1} + return caml_call2 + (Runtime_ocaml_Runtime[84], + eligibilite_aide_personnalisee$3, + _aeX_)}, + _aet_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ui_,1)}, + _aeu_=caml_call4(Runtime_ocaml_Runtime[63],_Uj_,[0],_aet_,_aes_)} + catch(_aeW_) + {_aeW_ = caml_wrap_exception(_aeW_); + if(_aeW_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Uh_]; + throw _aeW_} + var + eligibilite= + caml_call3 + (Runtime_ocaml_Runtime[28],_Uk_,Runtime_ocaml_Runtime[12],_aeu_); + function _aev_(param) + {try + {var + _aeK_= + function(param$0) + {var + _aeO_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Um_, + Runtime_ocaml_Runtime[13], + param), + _aeP_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Un_, + calcul_aide_personnalisee_loge$8), + _aeO_), + _aeQ_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Uo_, + Runtime_ocaml_Runtime[13], + _aeP_), + aide_finale_apl= + caml_call2(Runtime_ocaml_Runtime[27],_Up_,_aeQ_), + _aeR_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Uq_, + Runtime_ocaml_Runtime[13], + param), + _aeS_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Ur_, + calcul_allocation_logement_dot$7), + _aeR_), + _aeT_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Us_, + Runtime_ocaml_Runtime[13], + _aeS_), + aide_finale_al=caml_call2(Runtime_ocaml_Runtime[27],_Ut_,_aeT_); + if(caml_call1(Runtime_ocaml_Runtime[67],eligibilite)) + return param; + switch(eligibilite_allocation_logemen$4[0]) + {case 0:var _aeU_=1;break; + case 1:var _aeU_=0;break; + default:var _aeU_=0} + var _aeV_=caml_call1(Runtime_ocaml_Runtime[67],_aeU_); + return caml_call2 + (Runtime_ocaml_Runtime[83], + eligibilite_aide_personnalisee$3, + _aeV_) + ?caml_call2 + (Runtime_ocaml_Runtime[122],aide_finale_apl,aide_finale_al) + ?aide_finale_apl + :aide_finale_al + :eligibilite_aide_personnalisee$3 + ?aide_finale_apl + :aide_finale_al}, + _aeL_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Uu_,1)}, + _aeM_=caml_call4(Runtime_ocaml_Runtime[63],_Uv_,[0],_aeL_,_aeK_); + return _aeM_} + catch(_aeN_) + {_aeN_ = caml_wrap_exception(_aeN_); + if(_aeN_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ul_]; + throw _aeN_}} + var + traitement_aide_finale= + caml_call3 + (Runtime_ocaml_Runtime[28],_Uw_,Runtime_ocaml_Runtime[10],_aev_); + try + {var + _aew_= + function(param) + {if(caml_call1(Runtime_ocaml_Runtime[67],eligibilite)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$397); + switch(eligibilite_allocation_logemen$4[0]) + {case 0:var _aeA_=1;break; + case 1:var _aeA_=0;break; + default:var _aeA_=0} + var _aeB_=caml_call1(Runtime_ocaml_Runtime[67],_aeA_); + if + (caml_call2 + (Runtime_ocaml_Runtime[83], + eligibilite_aide_personnalisee$3, + _aeB_)) + {var + _aeC_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Uy_, + Runtime_ocaml_Runtime[13], + calcul_allocation_logement_dot$6), + _aeD_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Uz_, + calcul_allocation_logement_dot$7), + _aeC_), + _aeE_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _UA_, + Runtime_ocaml_Runtime[13], + _aeD_), + _aeF_=caml_call2(Runtime_ocaml_Runtime[27],_UB_,_aeE_), + _aeG_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _UC_, + Runtime_ocaml_Runtime[13], + calcul_aide_personnalisee_loge$7), + _aeH_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _UD_, + calcul_aide_personnalisee_loge$8), + _aeG_), + _aeI_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _UE_, + Runtime_ocaml_Runtime[13], + _aeH_), + _aeJ_=caml_call2(Runtime_ocaml_Runtime[27],_UF_,_aeI_); + return caml_call2(Runtime_ocaml_Runtime[122],_aeJ_,_aeF_) + ?calcul_aide_personnalisee_loge$7 + :calcul_allocation_logement_dot$6} + return eligibilite_aide_personnalisee$3 + ?calcul_aide_personnalisee_loge$7 + :calcul_allocation_logement_dot$6}, + _aex_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_UG_,1)}, + _aey_=caml_call4(Runtime_ocaml_Runtime[63],_UH_,[0],_aex_,_aew_)} + catch(_aez_) + {_aez_ = caml_wrap_exception(_aez_); + if(_aez_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ux_]; + throw _aez_} + var + aide_finale_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_UI_,Runtime_ocaml_Runtime[13],_aey_); + return [0, + eligibilite, + aide_finale_formule, + traitement_aide_finale, + coefficents_enfants_garde_alte]} + function calculette_aides_au_logement_g(calculette_aides_au_logement_g) + {var + menage=calculette_aides_au_logement_g[1], + demandeur=calculette_aides_au_logement_g[2], + date_courante=calculette_aides_au_logement_g[3], + ressources_menage_prises_en_co=calculette_aides_au_logement_g[4]; + try + {var + _acd_= + function(param) + {var + _ade_=menage[7], + _adf_=menage[6], + _adg_=menage[5], + _adh_=menage[4], + _adi_=menage[3]; + function _adj_(personne_a_charge) + {if(0 === personne_a_charge[0]) + {var enfant=personne_a_charge[1];return 0 === enfant[7][0]?1:0} + return 1} + var _adk_=caml_call2(Runtime_ocaml_Runtime[90],_adj_,_adi_); + return [0,menage[1],menage[2],_adk_,_adh_,_adg_,_adf_,_ade_]}, + _ace_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_UK_,1)}, + _acf_=caml_call4(Runtime_ocaml_Runtime[63],_UL_,[0],_ace_,_acd_)} + catch(_add_) + {_add_ = caml_wrap_exception(_add_); + if(_add_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_UJ_]; + throw _add_} + var + menage_sans_enfants_garde_alte= + caml_call3(Runtime_ocaml_Runtime[28],_UM_,embed_menage,_acf_); + try + {var + _acg_=function(param){return menage}, + _ach_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_UO_,1)}, + _aci_=caml_call4(Runtime_ocaml_Runtime[63],_UP_,[0],_ach_,_acg_), + calculette_dot_menage= + caml_call3(Runtime_ocaml_Runtime[28],_UQ_,embed_menage,_aci_)} + catch(_adc_) + {_adc_ = caml_wrap_exception(_adc_); + if(_adc_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_UN_]; + throw _adc_} + try + {var + _acj_=function(param){return demandeur}, + _ack_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_US_,1)}, + _acl_=caml_call4(Runtime_ocaml_Runtime[63],_UT_,[0],_ack_,_acj_), + calculette_dot_demandeur= + caml_call3(Runtime_ocaml_Runtime[28],_UU_,embed_demandeur,_acl_)} + catch(_adb_) + {_adb_ = caml_wrap_exception(_adb_); + if(_adb_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_UR_]; + throw _adb_} + try + {var + _acm_=function(param){return date_courante}, + _acn_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_UW_,1)}, + _aco_=caml_call4(Runtime_ocaml_Runtime[63],_UX_,[0],_acn_,_acm_), + calculette_dot_date_courante= + caml_call3 + (Runtime_ocaml_Runtime[28],_UY_,Runtime_ocaml_Runtime[16],_aco_)} + catch(_ada_) + {_ada_ = caml_wrap_exception(_ada_); + if(_ada_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_UV_]; + throw _ada_} + try + {var + _acp_=function(param){return ressources_menage_prises_en_co}, + _acq_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_U0_,1)}, + _acr_=caml_call4(Runtime_ocaml_Runtime[63],_U1_,[0],_acq_,_acp_), + calculette_dot_ressources_mena= + caml_call3 + (Runtime_ocaml_Runtime[28],_U2_,Runtime_ocaml_Runtime[13],_acr_)} + catch(_ac$_) + {_ac$_ = caml_wrap_exception(_ac$_); + if(_ac$_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_UZ_]; + throw _ac$_} + var + _acs_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_U3_,calculette_aides_au_logement), + [0, + calculette_dot_menage, + calculette_dot_demandeur, + calculette_dot_date_courante, + calculette_dot_ressources_mena]), + result=caml_call2(Runtime_ocaml_Runtime[27],_U4_,_acs_), + calculette_dot_eligibilite=result[1], + calculette_dot_aide_finale_for=result[2], + calculette_dot_traitement_aide=result[3], + calculette_dot_coefficents_enf=result[4]; + try + {var + _act_=function(param){return menage_sans_enfants_garde_alte}, + _acu_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_U6_,1)}, + _acv_=caml_call4(Runtime_ocaml_Runtime[63],_U7_,[0],_acu_,_act_), + calculette_sans_garde_alternee= + caml_call3(Runtime_ocaml_Runtime[28],_U8_,embed_menage,_acv_)} + catch(_ac__) + {_ac__ = caml_wrap_exception(_ac__); + if(_ac__ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_U5_]; + throw _ac__} + try + {var + _acw_=function(param){return demandeur}, + _acx_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_U__,1)}, + _acy_=caml_call4(Runtime_ocaml_Runtime[63],_U$_,[0],_acx_,_acw_), + calculette_sans_garde_alternee$0= + caml_call3(Runtime_ocaml_Runtime[28],_Va_,embed_demandeur,_acy_)} + catch(_ac9_) + {_ac9_ = caml_wrap_exception(_ac9_); + if(_ac9_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_U9_]; + throw _ac9_} + try + {var + _acz_=function(param){return date_courante}, + _acA_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vc_,1)}, + _acB_=caml_call4(Runtime_ocaml_Runtime[63],_Vd_,[0],_acA_,_acz_), + calculette_sans_garde_alternee$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ve_,Runtime_ocaml_Runtime[16],_acB_)} + catch(_ac8_) + {_ac8_ = caml_wrap_exception(_ac8_); + if(_ac8_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Vb_]; + throw _ac8_} + try + {var + _acC_=function(param){return ressources_menage_prises_en_co}, + _acD_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vg_,1)}, + _acE_=caml_call4(Runtime_ocaml_Runtime[63],_Vh_,[0],_acD_,_acC_), + calculette_sans_garde_alternee$2= + caml_call3 + (Runtime_ocaml_Runtime[28],_Vi_,Runtime_ocaml_Runtime[13],_acE_)} + catch(_ac7_) + {_ac7_ = caml_wrap_exception(_ac7_); + if(_ac7_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Vf_]; + throw _ac7_} + var + _acF_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Vj_,calculette_aides_au_logement), + [0, + calculette_sans_garde_alternee, + calculette_sans_garde_alternee$0, + calculette_sans_garde_alternee$1, + calculette_sans_garde_alternee$2]), + result$0=caml_call2(Runtime_ocaml_Runtime[27],_Vk_,_acF_), + calculette_sans_garde_alternee$3=result$0[2]; + try + {var + _acG_=function(param){return calculette_dot_eligibilite}, + _acH_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vm_,1)}, + _acI_=caml_call4(Runtime_ocaml_Runtime[63],_Vn_,[0],_acH_,_acG_)} + catch(_ac6_) + {_ac6_ = caml_wrap_exception(_ac6_); + if(_ac6_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Vl_]; + throw _ac6_} + var + eligibilite= + caml_call3 + (Runtime_ocaml_Runtime[28],_Vo_,Runtime_ocaml_Runtime[12],_acI_); + try + {var + _acJ_=function(param){return calculette_dot_coefficents_enf}, + _acK_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vq_,1)}, + _acL_=caml_call4(Runtime_ocaml_Runtime[63],_Vr_,[0],_acK_,_acJ_)} + catch(_ac5_) + {_ac5_ = caml_wrap_exception(_ac5_); + if(_ac5_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Vp_]; + throw _ac5_} + var + _acM_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), + coefficents_enfants_garde_alte= + caml_call3(Runtime_ocaml_Runtime[28],_Vs_,_acM_,_acL_); + try + {var + _acN_= + function(param) + {var + _acR_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$398), + _acS_= + caml_call1 + (Runtime_ocaml_Runtime[68],coefficents_enfants_garde_alte); + if(caml_call2(Runtime_ocaml_Runtime[86],_acS_,_acR_)) + var _acT_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$399); + else + var + _acY_= + caml_call1 + (Runtime_ocaml_Runtime[68],coefficents_enfants_garde_alte), + _acZ_=caml_call1(Runtime_ocaml_Runtime[69],_acY_), + _ac0_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$400), + _ac1_= + function(sum1,sum2) + {return caml_call2(Runtime_ocaml_Runtime[92],sum1,sum2)}, + _ac2_= + caml_call3 + (Runtime_ocaml_Runtime[88], + _ac1_, + _ac0_, + coefficents_enfants_garde_alte), + _ac3_=caml_call2(Runtime_ocaml_Runtime[107],_ac2_,_acZ_), + _ac4_= + caml_call2 + (Runtime_ocaml_Runtime[98], + calculette_dot_aide_finale_for, + calculette_sans_garde_alternee$3), + _acT_=caml_call2(Runtime_ocaml_Runtime[104],_ac4_,_ac3_); + var + _acU_= + caml_call2 + (Runtime_ocaml_Runtime[93], + calculette_sans_garde_alternee$3, + _acT_), + _acV_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Vu_, + Runtime_ocaml_Runtime[13], + _acU_), + _acW_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Vv_, + calculette_dot_traitement_aide), + _acV_), + _acX_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Vw_, + Runtime_ocaml_Runtime[13], + _acW_); + return caml_call2(Runtime_ocaml_Runtime[27],_Vx_,_acX_)}, + _acO_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vy_,1)}, + _acP_=caml_call4(Runtime_ocaml_Runtime[63],_Vz_,[0],_acO_,_acN_)} + catch(_acQ_) + {_acQ_ = caml_wrap_exception(_acQ_); + if(_acQ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Vt_]; + throw _acQ_} + var + aide_finale= + caml_call3 + (Runtime_ocaml_Runtime[28],_VA_,Runtime_ocaml_Runtime[13],_acP_); + return [0,eligibilite,aide_finale]} + var + Law_source_Aides_logement= + [0, + TypePret, + embed_type_pret, + TitulairePret, + embed_titulaire_pret, + TypeTravauxLogementD83215, + embed_type_travaux_logement_d8, + TypeTravauxLogementR8425, + embed_type_travaux_logement_r8, + AmelioreParOccupant, + embed_ameliore_par_occupant, + LimiteTranche, + embed_limite_tranche, + LimiteTrancheDecimal, + embed_limite_tranche_decimal, + PrestationRecue, + embed_prestation_recue, + ParentOuAutre, + embed_parent_ou_autre, + SituationGardeAlternee, + embed_situation_garde_alternee, + Parente, + embed_parente, + DateDeNaissanceOuMoisDeGrosses, + embed_date_de_naissance_ou_moi, + ZoneDHabitation, + embed_zone_d_habitation, + PaiementLogementDistinctProfes, + embed_paiement_logement_distin, + VersementA, + embed_versement_a, + DepenseLogement, + embed_depense_logement, + ModeOccupationImpaye, + embed_mode_occupation_impaye, + TypeEligibiliteAllocationLogem, + embed_type_eligibilite_allocat, + TypeAidesPersonnelleLogement, + embed_type_aides_personnelle_l, + SituationFamiliale, + embed_situation_familiale, + PriseEnCharge$0, + embed_prise_en_charge$0, + TypeLogementFoyer, + embed_type_logement_foyer, + CategorieEquivalenceLoyerAlloc, + embed_categorie_equivalence_lo, + SituationFamilialeCalculAPL, + embed_situation_familiale_calc, + Collectivite$0, + embed_collectivite$0, + PriseEnChargeEnfant, + embed_prise_en_charge_enfant, + SituationObligationScolaire$0, + embed_situation_obligation_sco$0, + ElementPrestationsFamiliales$0, + embed_element_prestations_fami$0, + ConventionBailleurSocial, + embed_convention_bailleur_soci, + ConventionANHA, + embed_convention_a_n_h_a, + PersonneSousLocation, + embed_personne_sous_location, + Patrimoine, + embed_patrimoine, + ConditionsEtrangers, + embed_conditions_etrangers, + PersonneVivantHabituellementAu, + embed_personne_vivant_habituel, + EligibiliteAidePersonnaliseeLo, + embed_eligibilite_aide_personn, + EligibilitePrimeDeDemenagement, + embed_eligibilite_prime_de_dem, + RessourcesAidesPersonnelleLoge, + embed_ressources_aides_personn, + ContributionsSocialesAidesPers, + embed_contributions_sociales_a, + CalculAidePersonnaliseeLogemen, + embed_calcul_aide_personnalise, + CalculEquivalenceLoyerMinimale, + embed_calcul_equivalence_loyer, + CalculNombrePartLogementFoyer, + embed_calcul_nombre_part_logem, + CalculAidePersonnaliseeLogemen$0, + embed_calcul_aide_personnalise$0, + CalculNombrePartsAccessionProp, + embed_calcul_nombre_parts_acce, + CalculAidePersonnaliseeLogemen$1, + embed_calcul_aide_personnalise$1, + TraitementFormuleAideFinale, + embed_traitement_formule_aide_, + CalculAidePersonnaliseeLogemen$2, + embed_calcul_aide_personnalise$2, + InfosChangementLogementD8424, + embed_infos_changement_logemen, + CalculAllocationLogementLocati, + embed_calcul_allocation_logeme, + CalculAllocationLogementAccess, + embed_calcul_allocation_logeme$0, + CalculAllocationLogementFoyer, + embed_calcul_allocation_logeme$1, + CalculAllocationLogement, + embed_calcul_allocation_logeme$2, + OuvertureDroitsRetraite, + embed_ouverture_droits_retrait, + ImpayeDepenseLogement, + embed_impaye_depense_logement, + CalculetteAidesAuLogement, + embed_calculette_aides_au_loge, + CalculetteAidesAuLogementGarde, + embed_calculette_aides_au_loge$0, + BaseMensuelleAllocationsFamili$1, + embed_base_mensuelle_allocatio$1, + Smic$0, + embed_smic$0, + Pret, + embed_pret, + NeufOuAncien, + embed_neuf_ou_ancien, + TrancheRevenu, + embed_tranche_revenu, + TrancheRevenuDecimal, + embed_tranche_revenu_decimal, + AutrePersonneACharge, + embed_autre_personne_a_charge, + DateNaissanceTroisiemeOuDernie, + embed_date_naissance_troisieme, + EligibiliteAllocationLogement, + embed_eligibilite_allocation_l, + LogementFoyer, + embed_logement_foyer, + EnfantPrestationsFamiliales, + embed_enfant_prestations_famil, + EnfantACharge, + embed_enfant_a_charge, + TypeBailleur, + embed_type_bailleur, + LoueOuSousLoueADesTiers, + embed_loue_ou_sous_loue_a_des_, + Nationalite, + embed_nationalite, + ChangementLogementD8424, + embed_changement_logement_d842, + Proprietaire, + embed_proprietaire, + InformationsPrimeDeDemenagemen, + embed_informations_prime_de_de, + EligibilitePrestationsFamilial, + embed_eligibilite_prestations_, + PersonneACharge, + embed_personne_a_charge, + Demandeur, + embed_demandeur, + Location, + embed_location, + EligibiliteAidesPersonnelleLog, + embed_eligibilite_aides_person, + CategorieCalculAPL, + embed_categorie_calcul_a_p_l, + ModeOccupation, + embed_mode_occupation, + Logement, + embed_logement, + Menage, + embed_menage, + EligibiliteAidesPersonnelleLog$0, + embed_eligibilite_aides_person$0, + EligibiliteAidePersonnaliseeLo$0, + embed_eligibilite_aide_personn$0, + EligibiliteAllocationLogementI, + embed_eligibilite_allocation_l$0, + EligibilitePrimeDeDemenagement$0, + embed_eligibilite_prime_de_dem$0, + RessourcesAidesPersonnelleLoge$0, + embed_ressources_aides_personn$0, + ContributionsSocialesAidesPers$0, + embed_contributions_sociales_a$0, + CalculAidePersonnaliseeLogemen$3, + embed_calcul_aide_personnalise$3, + CalculEquivalenceLoyerMinimale$0, + embed_calcul_equivalence_loyer$0, + CalculNombrePartLogementFoyerI, + embed_calcul_nombre_part_logem$0, + CalculAidePersonnaliseeLogemen$4, + embed_calcul_aide_personnalise$4, + CalculNombrePartsAccessionProp$0, + embed_calcul_nombre_parts_acce$0, + CalculAidePersonnaliseeLogemen$5, + embed_calcul_aide_personnalise$5, + CalculAidePersonnaliseeLogemen$6, + embed_calcul_aide_personnalise$6, + CalculAllocationLogementLocati$0, + embed_calcul_allocation_logeme$3, + CalculAllocationLogementAccess$0, + embed_calcul_allocation_logeme$4, + CalculAllocationLogementFoyerI, + embed_calcul_allocation_logeme$5, + CalculAllocationLogementIn, + embed_calcul_allocation_logeme$6, + OuvertureDroitsRetraiteIn, + embed_ouverture_droits_retrait$0, + ImpayeDepenseLogementIn, + embed_impaye_depense_logement_, + CalculetteAidesAuLogementIn, + embed_calculette_aides_au_loge$1, + CalculetteAidesAuLogementGarde$0, + embed_calculette_aides_au_loge$2, + BaseMensuelleAllocationsFamili$2, + embed_base_mensuelle_allocatio$2, + SmicIn$0, + embed_smic_in$0, + EligibilitePrestationsFamilial$0, + embed_eligibilite_prestations_$0, + contributions_sociales_aides_p, + calcul_equivalence_loyer_minim, + calcul_nombre_part_logement_fo, + calcul_nombre_parts_accession_, + ouverture_droits_retraite, + impaye_depense_logement, + base_mensuelle_allocations_fam$5, + smic$1, + calcul_aide_personnalisee_loge, + calcul_aide_personnalisee_loge$0, + calcul_aide_personnalisee_loge$1, + eligibilite_aides_personnelle_, + ressources_aides_personnelle_l, + eligibilite_prestations_famili, + calcul_allocation_logement_loc, + calcul_allocation_logement_foy, + calcul_allocation_logement_acc, + calcul_aide_personnalisee_loge$2, + eligibilite_prime_de_demenagem, + eligibilite_aide_personnalisee, + eligibilite_allocation_logemen, + calcul_allocation_logement, + calculette_aides_au_logement, + calculette_aides_au_logement_g]; + caml_register_global + (8576,Law_source_Aides_logement,"Law_source__Aides_logement"); + function type_pret_to_jsoo(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"D331_32","payload":arg}; + case 1: + var arg$0=param[1];return {"kind":"D331_63_64","payload":arg$0}; + case 2:var arg$1=param[1];return {"kind":"D331_59_8","payload":arg$1}; + case 3:var arg$2=param[1];return {"kind":"D331_76_1","payload":arg$2}; + default:var arg$3=param[1];return {"kind":"Autre","payload":arg$3}}} + function type_pret_of_jsoo(type_pret) + {var cons=caml_string_of_jsstring(type_pret.kind); + if(caml_string_notequal(cons,cst_Autre$2)) + {if(caml_string_notequal(cons,cst_D331_32$0)) + {if(caml_string_notequal(cons,cst_D331_59_8$0)) + {if(caml_string_notequal(cons,cst_D331_63_64$0)) + {if(caml_string_notequal(cons,cst_D331_76_1$0)) + {var _acc_=caml_call2(Stdlib_Printf[4],_VB_,cons); + return caml_call1(Stdlib[2],_acc_)} + return _VC_} + return _VD_} + return _VE_} + return _VF_} + return _VG_} + function titulaire_pret_to_jsoo(param) + {if(0 === param[0]) + {var arg=param[1];return {"kind":"Demandeur","payload":arg}} + var arg$0=param[1]; + return {"kind":"VendeurQuandDemandeurAContratLocationAccession", + "payload":arg$0}} + function titulaire_pret_of_jsoo(titulaire_pret) + {var cons=caml_string_of_jsstring(titulaire_pret.kind); + if(caml_string_notequal(cons,cst_Demandeur$0)) + {if(caml_string_notequal(cons,cst_VendeurQuandDemandeurACont$0)) + {var _acb_=caml_call2(Stdlib_Printf[4],_VH_,cons); + return caml_call1(Stdlib[2],_acb_)} + return _VI_} + return _VJ_} + function type_travaux_logement_d832_15_(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"TravauxPourAcquisitionD832_15_1","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"TravauxSurLogementDejaAcquisD832_15_2", + "payload":arg$0}; + default: + var arg$1=param[1];return {"kind":"PasDeTravaux","payload":arg$1}}} + function type_travaux_logement_d832_15_$0(type_travaux_logement_d832_15) + {var cons=caml_string_of_jsstring(type_travaux_logement_d832_15.kind); + if(caml_string_notequal(cons,cst_PasDeTravaux$1)) + {if(caml_string_notequal(cons,cst_TravauxPourAcquisitionD832$0)) + {if(caml_string_notequal(cons,cst_TravauxSurLogementDejaAcqu)) + {var _aca_=caml_call2(Stdlib_Printf[4],_VK_,cons); + return caml_call1(Stdlib[2],_aca_)} + return _VL_} + return _VM_} + return _VN_} + function type_travaux_logement_r842_5_t(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"ObjectifDecenceLogement","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"PrevuDansListeR321_15","payload":arg$0}; + case 2: + var arg$1=param[1]; + return {"kind":"AgrandirOuRendreHabitableD331_63","payload":arg$1}; + default: + var arg$2=param[1];return {"kind":"PasDeTravaux","payload":arg$2}}} + function type_travaux_logement_r842_5_o(type_travaux_logement_r842_5) + {var cons=caml_string_of_jsstring(type_travaux_logement_r842_5.kind); + if(caml_string_notequal(cons,cst_AgrandirOuRendreHabitableD$0)) + {if(caml_string_notequal(cons,cst_ObjectifDecenceLogement)) + {if(caml_string_notequal(cons,cst_PasDeTravaux$2)) + {if(caml_string_notequal(cons,cst_PrevuDansListeR321_15)) + {var _ab$_=caml_call2(Stdlib_Printf[4],_VO_,cons); + return caml_call1(Stdlib[2],_ab$_)} + return _VP_} + return _VQ_} + return _VR_} + return _VS_} + function ameliore_par_occupant_to_jsoo(param) + {if(0 === param[0]){var arg=param[1];return {"kind":"Oui","payload":arg}} + var arg$0=param[1]; + return {"kind":"Non","payload":arg$0}} + function ameliore_par_occupant_of_jsoo(ameliore_par_occupant) + {var cons=caml_string_of_jsstring(ameliore_par_occupant.kind); + if(caml_string_notequal(cons,cst_Non$2)) + {if(caml_string_notequal(cons,cst_Oui$1)) + {var _ab__=caml_call2(Stdlib_Printf[4],_VT_,cons); + return caml_call1(Stdlib[2],_ab__)} + return _VU_} + return _VV_} + function limite_tranche_to_jsoo(param) + {if(0 === param[0]) + {var arg=param[1],t38=caml_call1(Runtime_ocaml_Runtime[35],arg); + return {"kind":"Revenu","payload":t38}} + var arg$0=param[1]; + return {"kind":"Infini","payload":arg$0}} + function limite_tranche_of_jsoo(limite_tranche) + {var cons=caml_string_of_jsstring(limite_tranche.kind); + if(caml_string_notequal(cons,cst_Infini$1)) + {if(caml_string_notequal(cons,cst_Revenu$1)) + {var _ab8_=caml_call2(Stdlib_Printf[4],_VW_,cons); + return caml_call1(Stdlib[2],_ab8_)} + var + _ab9_= + caml_call1(Runtime_ocaml_Runtime[42],limite_tranche.payload); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_ab9_)]} + return _VX_} + function limite_tranche_decimal_to_jsoo(param) + {if(0 === param[0]) + {var arg=param[1],t44=caml_call1(Runtime_ocaml_Runtime[43],arg); + return {"kind":"Revenu","payload":t44}} + var arg$0=param[1]; + return {"kind":"Infini","payload":arg$0}} + function limite_tranche_decimal_of_jsoo(limite_tranche_decimal) + {var cons=caml_string_of_jsstring(limite_tranche_decimal.kind); + if(caml_string_notequal(cons,cst_Infini$2)) + {if(caml_string_notequal(cons,cst_Revenu$2)) + {var _ab7_=caml_call2(Stdlib_Printf[4],_VY_,cons); + return caml_call1(Stdlib[2],_ab7_)} + return [0, + caml_call1 + (Runtime_ocaml_Runtime[42],limite_tranche_decimal.payload)]} + return _VZ_} + function prestation_recue_to_jsoo(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"AllocationsFamiliales","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"ComplementFamilial","payload":arg$0}; + case 2: + var arg$1=param[1]; + return {"kind":"AllocationJeuneEnfant","payload":arg$1}; + case 3: + var arg$2=param[1]; + return {"kind":"AllocationSoutienFamilial","payload":arg$2}; + case 4: + var arg$3=param[1]; + return {"kind":"AllocationSoutienEnfantHandicape","payload":arg$3}; + default: + var arg$4=param[1]; + return {"kind":"AllocationAdulteHandicape","payload":arg$4}}} + function prestation_recue_of_jsoo(prestation_recue) + {var cons=caml_string_of_jsstring(prestation_recue.kind); + if(caml_string_notequal(cons,cst_AllocationAdulteHandicape)) + {if(caml_string_notequal(cons,cst_AllocationJeuneEnfant$0)) + {if(caml_string_notequal(cons,cst_AllocationSoutienEnfantHan$0)) + {if(caml_string_notequal(cons,cst_AllocationSoutienFamilial$3)) + {if(caml_string_notequal(cons,cst_AllocationsFamiliales$3)) + {if(caml_string_notequal(cons,cst_ComplementFamilial$0)) + {var _ab6_=caml_call2(Stdlib_Printf[4],_V0_,cons); + return caml_call1(Stdlib[2],_ab6_)} + return _V1_} + return _V2_} + return _V3_} + return _V4_} + return _V5_} + return _V6_} + function parent_ou_autre_to_jsoo(param) + {if(0 === param[0]) + {var arg=param[1],t63=caml_call1(Runtime_ocaml_Runtime[43],arg); + return {"kind":"DemandeurOuConjointOuParentOuViaPartsSocietes", + "payload":t63}} + var arg$0=param[1]; + return {"kind":"Autre","payload":arg$0}} + function parent_ou_autre_of_jsoo(parent_ou_autre) + {var cons=caml_string_of_jsstring(parent_ou_autre.kind); + if(caml_string_notequal(cons,cst_Autre$3)) + {if(caml_string_notequal(cons,cst_DemandeurOuConjointOuParen$0)) + {var _ab5_=caml_call2(Stdlib_Printf[4],_V7_,cons); + return caml_call1(Stdlib[2],_ab5_)} + return [0, + caml_call1(Runtime_ocaml_Runtime[42],parent_ou_autre.payload)]} + return _V8_} + function situation_garde_alternee_to_js(param) + {if(0 === param[0]) + {var arg=param[1];return {"kind":"PasDeGardeAlternee","payload":arg}} + var arg$0=param[1],t71=caml_call1(Runtime_ocaml_Runtime[43],arg$0); + return {"kind":"GardeAlterneeCoefficientPriseEnCharge","payload":t71}} + function situation_garde_alternee_of_js(situation_garde_alternee) + {var cons=caml_string_of_jsstring(situation_garde_alternee.kind); + if(caml_string_notequal(cons,cst_GardeAlterneeCoefficientPr)) + {if(caml_string_notequal(cons,cst_PasDeGardeAlternee)) + {var _ab4_=caml_call2(Stdlib_Printf[4],_V9_,cons); + return caml_call1(Stdlib[2],_ab4_)} + return _V__} + return [1, + caml_call1 + (Runtime_ocaml_Runtime[42],situation_garde_alternee.payload)]} + function parente_to_jsoo(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"Ascendant","payload":arg}; + case 1: + var arg$0=param[1];return {"kind":"Descendant","payload":arg$0}; + default: + var arg$1=param[1]; + return {"kind":"CollateralDeuxiemeTroisiemeDegre","payload":arg$1}}} + function parente_of_jsoo(parente) + {var cons=caml_string_of_jsstring(parente.kind); + if(caml_string_notequal(cons,cst_Ascendant$0)) + {if(caml_string_notequal(cons,cst_CollateralDeuxiemeTroisiem)) + {if(caml_string_notequal(cons,cst_Descendant$0)) + {var _ab3_=caml_call2(Stdlib_Printf[4],_V$_,cons); + return caml_call1(Stdlib[2],_ab3_)} + return _Wa_} + return _Wb_} + return _Wc_} + function date_de_naissance_ou_mois_de_g(param) + {switch(param[0]) + {case 0: + var arg=param[1],t82=caml_call1(Runtime_jsoo_Runtime[5],arg); + return {"kind":"DateDeNaissance","payload":t82}; + case 1: + var arg$0=param[1]; + return {"kind":"AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse", + "payload":arg$0}; + default: + var arg$1=param[1]; + return {"kind":"ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse", + "payload":arg$1}}} + function date_de_naissance_ou_mois_de_g$0(date_de_naissance_ou_mois_de_g) + {var cons=caml_string_of_jsstring(date_de_naissance_ou_mois_de_g.kind); + if(caml_string_notequal(cons,cst_ApresPremierJourMoisCivilT)) + {if(caml_string_notequal(cons,cst_AvantPremierJourMoisCivilT$0)) + {if(caml_string_notequal(cons,cst_DateDeNaissance$0)) + {var _ab2_=caml_call2(Stdlib_Printf[4],_Wd_,cons); + return caml_call1(Stdlib[2],_ab2_)} + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + date_de_naissance_ou_mois_de_g.payload)]} + return _We_} + return _Wf_} + function zone_d_habitation_to_jsoo(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"Zone1","payload":arg}; + case 1:var arg$0=param[1];return {"kind":"Zone2","payload":arg$0}; + default:var arg$1=param[1];return {"kind":"Zone3","payload":arg$1}}} + function zone_d_habitation_of_jsoo(zone_d_habitation) + {var cons=caml_string_of_jsstring(zone_d_habitation.kind); + if(caml_string_notequal(cons,cst_Zone1$0)) + {if(caml_string_notequal(cons,cst_Zone2$0)) + {if(caml_string_notequal(cons,cst_Zone3$0)) + {var _ab1_=caml_call2(Stdlib_Printf[4],_Wg_,cons); + return caml_call1(Stdlib[2],_ab1_)} + return _Wh_} + return _Wi_} + return _Wj_} + function paiement_logement_distinct_pro(param) + {if(0 === param[0]) + {var arg=param[1],t97=caml_call1(Runtime_ocaml_Runtime[35],arg); + return {"kind":"OuiAvecLoyerOuCharges","payload":t97}} + var arg$0=param[1]; + return {"kind":"Non","payload":arg$0}} + function paiement_logement_distinct_pro$0(paiement_logement_distinct_pro) + {var cons=caml_string_of_jsstring(paiement_logement_distinct_pro.kind); + if(caml_string_notequal(cons,cst_Non$3)) + {if(caml_string_notequal(cons,cst_OuiAvecLoyerOuCharges$0)) + {var _abZ_=caml_call2(Stdlib_Printf[4],_Wk_,cons); + return caml_call1(Stdlib[2],_abZ_)} + var + _ab0_= + caml_call1 + (Runtime_ocaml_Runtime[42],paiement_logement_distinct_pro.payload); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_ab0_)]} + return _Wl_} + function versement_a_to_jsoo(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"Bailleur","payload":arg}; + case 1: + var arg$0=param[1];return {"kind":"Beneficiaire","payload":arg$0}; + default: + var arg$1=param[1]; + return {"kind":"EtablissementHabilite","payload":arg$1}}} + function versement_a_of_jsoo(versement_a) + {var cons=caml_string_of_jsstring(versement_a.kind); + if(caml_string_notequal(cons,cst_Bailleur$0)) + {if(caml_string_notequal(cons,cst_Beneficiaire)) + {if(caml_string_notequal(cons,cst_EtablissementHabilite)) + {var _abY_=caml_call2(Stdlib_Printf[4],_Wm_,cons); + return caml_call1(Stdlib[2],_abY_)} + return _Wn_} + return _Wo_} + return _Wp_} + function depense_logement_to_jsoo(param) + {switch(param[0]) + {case 0: + var arg=param[1],t110=caml_call1(Runtime_ocaml_Runtime[35],arg); + return {"kind":"TotalAnnuelEcheances","payload":t110}; + case 1: + var arg$0=param[1],t112=caml_call1(Runtime_ocaml_Runtime[35],arg$0); + return {"kind":"Mensualite","payload":t112}; + default: + var arg$1=param[1],t114=caml_call1(Runtime_ocaml_Runtime[35],arg$1); + return {"kind":"Loyer","payload":t114}}} + function depense_logement_of_jsoo(depense_logement) + {var cons=caml_string_of_jsstring(depense_logement.kind); + if(caml_string_notequal(cons,cst_Loyer$0)) + {if(caml_string_notequal(cons,cst_Mensualite)) + {if(caml_string_notequal(cons,cst_TotalAnnuelEcheances)) + {var _abU_=caml_call2(Stdlib_Printf[4],_Wq_,cons); + return caml_call1(Stdlib[2],_abU_)} + var + _abV_= + caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_abV_)]} + var + _abW_= + caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload); + return [1,caml_call1(Runtime_ocaml_Runtime[33],_abW_)]} + var + _abX_= + caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload); + return [2,caml_call1(Runtime_ocaml_Runtime[33],_abX_)]} + function mode_occupation_impaye_to_jsoo(param) + {if(0 === param[0]) + {var arg=param[1];return {"kind":"ImpayeLoyer","payload":arg}} + var arg$0=param[1]; + return {"kind":"ImpayePret","payload":arg$0}} + function mode_occupation_impaye_of_jsoo(mode_occupation_impaye) + {var cons=caml_string_of_jsstring(mode_occupation_impaye.kind); + if(caml_string_notequal(cons,cst_ImpayeLoyer)) + {if(caml_string_notequal(cons,cst_ImpayePret)) + {var _abT_=caml_call2(Stdlib_Printf[4],_Wr_,cons); + return caml_call1(Stdlib[2],_abT_)} + return _Ws_} + return _Wt_} + function type_eligibilite_allocation_lo(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"PasEligible","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"AllocationLogementFamiliale","payload":arg$0}; + default: + var arg$1=param[1]; + return {"kind":"AllocationLogementSociale","payload":arg$1}}} + function type_eligibilite_allocation_lo$0(type_eligibilite_allocation_lo) + {var cons=caml_string_of_jsstring(type_eligibilite_allocation_lo.kind); + if(caml_string_notequal(cons,cst_AllocationLogementFamilial$1)) + {if(caml_string_notequal(cons,cst_AllocationLogementSociale$1)) + {if(caml_string_notequal(cons,cst_PasEligible)) + {var _abS_=caml_call2(Stdlib_Printf[4],_Wu_,cons); + return caml_call1(Stdlib[2],_abS_)} + return _Wv_} + return _Ww_} + return _Wx_} + function type_aides_personnelle_logemen(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"AidePersonnaliseeLogement","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"AllocationLogementFamiliale","payload":arg$0}; + default: + var arg$1=param[1]; + return {"kind":"AllocationLogementSociale","payload":arg$1}}} + function type_aides_personnelle_logemen$0(type_aides_personnelle_logemen) + {var cons=caml_string_of_jsstring(type_aides_personnelle_logemen.kind); + if(caml_string_notequal(cons,cst_AidePersonnaliseeLogement)) + {if(caml_string_notequal(cons,cst_AllocationLogementFamilial$2)) + {if(caml_string_notequal(cons,cst_AllocationLogementSociale$2)) + {var _abR_=caml_call2(Stdlib_Printf[4],_Wy_,cons); + return caml_call1(Stdlib[2],_abR_)} + return _Wz_} + return _WA_} + return _WB_} + function situation_familiale_to_jsoo(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"Celibataire","payload":arg}; + case 1: + var arg$0=param[1],t141=caml_call1(Runtime_jsoo_Runtime[5],arg$0); + return {"kind":"Maries","payload":t141}; + case 2:var arg$1=param[1];return {"kind":"Pacses","payload":arg$1}; + case 3:var arg$2=param[1];return {"kind":"Concubins","payload":arg$2}; + case 4: + var arg$3=param[1]; + return {"kind":"CelibataireSepareDeFait","payload":arg$3}; + default: + var arg$4=param[1]; + return {"kind":"ConcubinageDontSepareDeFait","payload":arg$4}}} + function situation_familiale_of_jsoo(situation_familiale) + {var cons=caml_string_of_jsstring(situation_familiale.kind); + if(caml_string_notequal(cons,cst_Celibataire)) + {if(caml_string_notequal(cons,cst_CelibataireSepareDeFait)) + {if(caml_string_notequal(cons,cst_ConcubinageDontSepareDeFai)) + {if(caml_string_notequal(cons,cst_Concubins$0)) + {if(caml_string_notequal(cons,cst_Maries)) + {if(caml_string_notequal(cons,cst_Pacses)) + {var _abQ_=caml_call2(Stdlib_Printf[4],_WC_,cons); + return caml_call1(Stdlib[2],_abQ_)} + return _WD_} + return [1, + caml_call1 + (Runtime_jsoo_Runtime[4],situation_familiale.payload)]} + return _WE_} + return _WF_} + return _WG_} + return _WH_} + function prise_en_charge_to_jsoo$0(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"EffectiveEtPermanente","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"ResidenceAlterneeAllocataireUnique","payload":arg$0}; + default: + var arg$1=param[1]; + return {"kind":"ResidenceAlterneeAllocationsPartagee", + "payload":arg$1}}} + function prise_en_charge_of_jsoo$0(prise_en_charge) + {var cons=caml_string_of_jsstring(prise_en_charge.kind); + if(caml_string_notequal(cons,cst_EffectiveEtPermanente$3)) + {if(caml_string_notequal(cons,cst_ResidenceAlterneeAllocatai)) + {if(caml_string_notequal(cons,cst_ResidenceAlterneeAllocatio)) + {var _abP_=caml_call2(Stdlib_Printf[4],_WI_,cons); + return caml_call1(Stdlib[2],_abP_)} + return _WJ_} + return _WK_} + return _WL_} + function type_logement_foyer_to_jsoo(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"LogementPersonnesAgeesOuHandicapees","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"ResidenceSociale","payload":arg$0}; + case 2: + var arg$1=param[1]; + return {"kind": + "FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995", + "payload":arg$1}; + default:var arg$2=param[1];return {"kind":"Autre","payload":arg$2}}} + function type_logement_foyer_of_jsoo(type_logement_foyer) + {var cons=caml_string_of_jsstring(type_logement_foyer.kind); + if(caml_string_notequal(cons,cst_Autre$4)) + {if(caml_string_notequal(cons,cst_FoyerJeunesTrvailleursOuMi$0)) + {if(caml_string_notequal(cons,cst_LogementPersonnesAgeesOuHa)) + {if(caml_string_notequal(cons,cst_ResidenceSociale)) + {var _abO_=caml_call2(Stdlib_Printf[4],_WM_,cons); + return caml_call1(Stdlib[2],_abO_)} + return _WN_} + return _WO_} + return _WP_} + return _WQ_} + function categorie_equivalence_loyer_al(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"EtudiantLogeEnChambreCROUS","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"EtudiantLogeEnChambreCROUSRehabilitee", + "payload":arg$0}; + case 2: + var arg$1=param[1]; + return {"kind":"PersonnesAgeesSelon3DeD842_16","payload":arg$1}; + default: + var arg$2=param[1];return {"kind":"AutresPersonnes","payload":arg$2}}} + function categorie_equivalence_loyer_al$0(categorie_equivalence_loyer_al) + {var cons=caml_string_of_jsstring(categorie_equivalence_loyer_al.kind); + if(caml_string_notequal(cons,cst_AutresPersonnes$0)) + {if(caml_string_notequal(cons,cst_EtudiantLogeEnChambreCROUS)) + {if(caml_string_notequal(cons,cst_EtudiantLogeEnChambreCROUS$0)) + {if(caml_string_notequal(cons,cst_PersonnesAgeesSelon3DeD842)) + {var _abN_=caml_call2(Stdlib_Printf[4],_WR_,cons); + return caml_call1(Stdlib[2],_abN_)} + return _WS_} + return _WT_} + return _WU_} + return _WV_} + function situation_familiale_calcul_a_p(param) + {if(0 === param[0]) + {var arg=param[1];return {"kind":"PersonneSeule","payload":arg}} + var arg$0=param[1]; + return {"kind":"Couple","payload":arg$0}} + function situation_familiale_calcul_a_p$0(situation_familiale_calcul_a_p) + {var cons=caml_string_of_jsstring(situation_familiale_calcul_a_p.kind); + if(caml_string_notequal(cons,cst_Couple$0)) + {if(caml_string_notequal(cons,cst_PersonneSeule$0)) + {var _abM_=caml_call2(Stdlib_Printf[4],_WW_,cons); + return caml_call1(Stdlib[2],_abM_)} + return _WX_} + return _WY_} + function collectivite_to_jsoo$0(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"Guadeloupe","payload":arg}; + case 1:var arg$0=param[1];return {"kind":"Guyane","payload":arg$0}; + case 2: + var arg$1=param[1];return {"kind":"Martinique","payload":arg$1}; + case 3:var arg$2=param[1];return {"kind":"LaReunion","payload":arg$2}; + case 4: + var arg$3=param[1];return {"kind":"SaintBarthelemy","payload":arg$3}; + case 5: + var arg$4=param[1];return {"kind":"SaintMartin","payload":arg$4}; + case 6:var arg$5=param[1];return {"kind":"Metropole","payload":arg$5}; + case 7: + var arg$6=param[1]; + return {"kind":"SaintPierreEtMiquelon","payload":arg$6}; + default:var arg$7=param[1];return {"kind":"Mayotte","payload":arg$7}}} + function collectivite_of_jsoo$0(collectivite) + {var cons=caml_string_of_jsstring(collectivite.kind); + if(caml_string_notequal(cons,cst_Guadeloupe$2)) + {if(caml_string_notequal(cons,cst_Guyane$2)) + {if(caml_string_notequal(cons,cst_LaReunion$0)) + {if(caml_string_notequal(cons,cst_Martinique$2)) + {if(caml_string_notequal(cons,cst_Mayotte$2)) + {if(caml_string_notequal(cons,cst_Metropole$0)) + {if(caml_string_notequal(cons,cst_SaintBarthelemy$0)) + {if(caml_string_notequal(cons,cst_SaintMartin$2)) + {if(caml_string_notequal(cons,cst_SaintPierreEtMiquelon$2)) + {var _abL_=caml_call2(Stdlib_Printf[4],_WZ_,cons); + return caml_call1(Stdlib[2],_abL_)} + return _W0_} + return _W1_} + return _W2_} + return _W3_} + return _W4_} + return _W5_} + return _W6_} + return _W7_} + return _W8_} + function prise_en_charge_enfant_to_jsoo(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"GardeAlterneePartageAllocations","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"GardeAlterneeAllocataireUnique","payload":arg$0}; + case 2: + var arg$1=param[1]; + return {"kind":"EffectiveEtPermanente","payload":arg$1}; + case 3: + var arg$2=param[1]; + return {"kind":"ServicesSociauxAllocationVerseeALaFamille", + "payload":arg$2}; + default: + var arg$3=param[1]; + return {"kind":"ServicesSociauxAllocationVerseeAuxServicesSociaux", + "payload":arg$3}}} + function prise_en_charge_enfant_of_jsoo(prise_en_charge_enfant) + {var cons=caml_string_of_jsstring(prise_en_charge_enfant.kind); + if(caml_string_notequal(cons,cst_EffectiveEtPermanente$4)) + {if(caml_string_notequal(cons,cst_GardeAlterneeAllocataireUn$0)) + {if(caml_string_notequal(cons,cst_GardeAlterneePartageAlloca$0)) + {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$5)) + {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$6)) + {var _abK_=caml_call2(Stdlib_Printf[4],_W9_,cons); + return caml_call1(Stdlib[2],_abK_)} + return _W__} + return _W$_} + return _Xa_} + return _Xb_} + return _Xc_} + function situation_obligation_scolaire_$1(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"Avant","payload":arg}; + case 1:var arg$0=param[1];return {"kind":"Pendant","payload":arg$0}; + default:var arg$1=param[1];return {"kind":"Apres","payload":arg$1}}} + function situation_obligation_scolaire_$2(situation_obligation_scolaire) + {var cons=caml_string_of_jsstring(situation_obligation_scolaire.kind); + if(caml_string_notequal(cons,cst_Apres$0)) + {if(caml_string_notequal(cons,cst_Avant$2)) + {if(caml_string_notequal(cons,cst_Pendant$2)) + {var _abJ_=caml_call2(Stdlib_Printf[4],_Xd_,cons); + return caml_call1(Stdlib[2],_abJ_)} + return _Xe_} + return _Xf_} + return _Xg_} + function element_prestations_familiales$1(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"PrestationAccueilJeuneEnfant","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"AllocationsFamiliales","payload":arg$0}; + case 2: + var arg$1=param[1]; + return {"kind":"ComplementFamilial","payload":arg$1}; + case 3: + var arg$2=param[1]; + return {"kind":"AllocationLogement","payload":arg$2}; + case 4: + var arg$3=param[1]; + return {"kind":"AllocationEducationEnfantHandicape","payload":arg$3}; + case 5: + var arg$4=param[1]; + return {"kind":"AllocationSoutienFamilial","payload":arg$4}; + case 6: + var arg$5=param[1]; + return {"kind":"AllocationRentreeScolaire","payload":arg$5}; + default: + var arg$6=param[1]; + return {"kind":"AllocationJournalierePresenceParentale", + "payload":arg$6}}} + function element_prestations_familiales$2(element_prestations_familiales) + {var cons=caml_string_of_jsstring(element_prestations_familiales.kind); + if(caml_string_notequal(cons,cst_AllocationEducationEnfantH$0)) + {if(caml_string_notequal(cons,cst_AllocationJournalierePrese$0)) + {if(caml_string_notequal(cons,cst_AllocationLogement$2)) + {if(caml_string_notequal(cons,cst_AllocationRentreeScolaire$0)) + {if(caml_string_notequal(cons,cst_AllocationSoutienFamilial$4)) + {if(caml_string_notequal(cons,cst_AllocationsFamiliales$4)) + {if(caml_string_notequal(cons,cst_ComplementFamilial$1)) + {if + (caml_string_notequal(cons,cst_PrestationAccueilJeuneEnfa$2)) + {var _abI_=caml_call2(Stdlib_Printf[4],_Xh_,cons); + return caml_call1(Stdlib[2],_abI_)} + return _Xi_} + return _Xj_} + return _Xk_} + return _Xl_} + return _Xm_} + return _Xn_} + return _Xo_} + return _Xp_} + function convention_bailleur_social_to_(convention_bailleur_social) + {var + t237= + caml_call1(Runtime_ocaml_Runtime[35],convention_bailleur_social[2]), + t236=! ! convention_bailleur_social[1]; + return {"conventionneLivreIIITitreVChapIII":t236, + "reductionLoyerSolidaritePercue":t237}} + function convention_bailleur_social_of_(convention_bailleur_social) + {var + _abG_= + caml_call1 + (Runtime_ocaml_Runtime[42], + convention_bailleur_social.reductionLoyerSolidaritePercue), + _abH_=caml_call1(Runtime_ocaml_Runtime[33],_abG_); + return [0, + convention_bailleur_social.conventionneLivreIIITitreVChapIII | 0, + _abH_]} + function convention_a_n_h_a_to_jsoo(convention_a_n_h_a) + {var t240=! ! convention_a_n_h_a[1]; + return {"conventionneLivreIIITitreIIChapISec3":t240}} + function convention_a_n_h_a_of_jsoo(convention_a_n_h_a) + {return [0,convention_a_n_h_a.conventionneLivreIIITitreIIChapISec3 | 0]} + function personne_sous_location_to_jsoo(personne_sous_location) + {var + t243=! ! personne_sous_location[2], + t242=caml_call1(Runtime_jsoo_Runtime[5],personne_sous_location[1]); + return {"dateNaissancePersonneSousLocation":t242, + "conformeArticleL4421":t243}} + function personne_sous_location_of_jsoo(personne_sous_location) + {var _abF_=personne_sous_location.conformeArticleL4421 | 0; + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + personne_sous_location.dateNaissancePersonneSousLocation), + _abF_]} + function patrimoine_to_jsoo(patrimoine) + {var + t247=caml_call1(Runtime_ocaml_Runtime[35],patrimoine[2]), + t246=caml_call1(Runtime_ocaml_Runtime[35],patrimoine[1]); + return {"produisantRevenuPeriodeR82233R8224":t246, + "neProduisantPasRevenuPeriodeR82233R8224":t247}} + function patrimoine_of_jsoo(patrimoine) + {var + _abC_= + caml_call1 + (Runtime_ocaml_Runtime[42], + patrimoine.neProduisantPasRevenuPeriodeR82233R8224), + _abD_=caml_call1(Runtime_ocaml_Runtime[33],_abC_), + _abE_= + caml_call1 + (Runtime_ocaml_Runtime[42], + patrimoine.produisantRevenuPeriodeR82233R8224); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_abE_),_abD_]} + function conditions_etrangers_to_jsoo(conditions_etrangers) + {var t250=! ! conditions_etrangers[1]; + return {"satisfaitConditionsL5122CodeSecuriteSociale":t250}} + function conditions_etrangers_of_jsoo(conditions_etrangers) + {return [0, + conditions_etrangers.satisfaitConditionsL5122CodeSecuriteSociale + | + 0]} + function personne_vivant_habituellement(personne_vivant_habituellement) + {var + t253= + caml_call1 + (Runtime_ocaml_Runtime[35],personne_vivant_habituellement[2]), + t252=! ! personne_vivant_habituellement[1]; + return {"dureeResidenceDurantPeriodeR82231SuperieureA6Mois":t252, + "ressources":t253}} + function personne_vivant_habituellement$0(personne_vivant_habituellement) + {var + _abA_= + caml_call1 + (Runtime_ocaml_Runtime[42],personne_vivant_habituellement.ressources), + _abB_=caml_call1(Runtime_ocaml_Runtime[33],_abA_); + return [0, + personne_vivant_habituellement.dureeResidenceDurantPeriodeR82231SuperieureA6Mois + | + 0, + _abB_]} + function eligibilite_aide_personnalisee$0(eligibilite_aide_personnalisee) + {var _aby_=eligibilite_aide_personnalisee[4]; + function _abz_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)} + var + t259=caml_js_from_array(caml_call2(Stdlib_Array[15],_abz_,_aby_)), + t258= + caml_call1 + (Runtime_ocaml_Runtime[48],eligibilite_aide_personnalisee[3]), + t257=! ! eligibilite_aide_personnalisee[2], + t256= + caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aide_personnalisee[1]); + return {"dateCourante":t256, + "eligibilite":t257, + "nombrePersonnesAChargePrisesEnCompte":t258, + "coefficentsEnfantsGardeAlterneePrisEnCompte":t259}} + function eligibilite_aide_personnalisee$1(eligibilite_aide_personnalisee) + {var + _abt_= + caml_js_to_array + (eligibilite_aide_personnalisee.coefficentsEnfantsGardeAlterneePrisEnCompte); + function _abu_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)} + var + _abv_=caml_call1(caml_call1(Stdlib_Array[15],_abu_),_abt_), + _abw_= + caml_call1 + (Runtime_ocaml_Runtime[49], + eligibilite_aide_personnalisee.nombrePersonnesAChargePrisesEnCompte), + _abx_=eligibilite_aide_personnalisee.eligibilite | 0; + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + eligibilite_aide_personnalisee.dateCourante), + _abx_, + _abw_, + _abv_]} + function eligibilite_prime_de_demenagem$0(eligibilite_prime_de_demenagem) + {var + t264= + caml_call1 + (Runtime_ocaml_Runtime[35],eligibilite_prime_de_demenagem[1]); + return {"montantPrimeDemenagement":t264}} + function eligibilite_prime_de_demenagem$1(eligibilite_prime_de_demenagem) + {var + _abs_= + caml_call1 + (Runtime_ocaml_Runtime[42], + eligibilite_prime_de_demenagem.montantPrimeDemenagement); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_abs_)]} + function ressources_aides_personnelle_l$0(ressources_aides_personnelle_l) + {var + t266= + caml_call1 + (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[1]); + return {"ressourcesPrisesEnCompte":t266}} + function ressources_aides_personnelle_l$1(ressources_aides_personnelle_l) + {var + _abr_= + caml_call1 + (Runtime_ocaml_Runtime[42], + ressources_aides_personnelle_l.ressourcesPrisesEnCompte); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_abr_)]} + function contributions_sociales_aides_p$0(contributions_sociales_aides_p) + {function t268(param) + {return caml_js_wrap_meth_callback + (function(input) + {var + _abo_=caml_call1(Runtime_ocaml_Runtime[42],input), + _abp_=caml_call1(Runtime_ocaml_Runtime[33],_abo_), + _abq_=caml_call1(contributions_sociales_aides_p[1],_abp_); + return caml_call1(Runtime_ocaml_Runtime[35],_abq_)})} + return {"montant":caml_js_wrap_meth_callback(t268)}} + function contributions_sociales_aides_p$1(contributions_sociales_aides_p) + {return [0,caml_call1(Stdlib[2],cst_The_function_montant_trans)]} + function calcul_aide_personnalisee_loge$3(calcul_aide_personnalisee_loge) + {function t275(param) + {return caml_js_wrap_meth_callback + (function(input) + {var + _abl_=caml_call1(Runtime_ocaml_Runtime[42],input), + _abm_=caml_call1(Runtime_ocaml_Runtime[33],_abl_), + _abn_=caml_call1(calcul_aide_personnalisee_loge[7],_abm_); + return caml_call1(Runtime_ocaml_Runtime[35],_abn_)})} + var + t274= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[6]), + t273= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[5]), + t272= + caml_call1 + (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[4]), + t271= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[3]), + t270= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), + t269= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); + return {"montantForfaitaireChargesD82316":t269, + "plafondLoyerD823162":t270, + "participationMinimale":t271, + "tauxCompositionFamiliale":t272, + "participationPersonnelle":t273, + "aideFinaleFormule":t274, + "traitementAideFinale":caml_js_wrap_meth_callback(t275)}} + function calcul_aide_personnalisee_loge$4(calcul_aide_personnalisee_loge) + {var + _aba_=caml_call1(Stdlib[2],cst_The_function_traitement_ai), + _abb_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.aideFinaleFormule), + _abc_=caml_call1(Runtime_ocaml_Runtime[33],_abb_), + _abd_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.participationPersonnelle), + _abe_=caml_call1(Runtime_ocaml_Runtime[33],_abd_), + _abf_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.tauxCompositionFamiliale), + _abg_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.participationMinimale), + _abh_=caml_call1(Runtime_ocaml_Runtime[33],_abg_), + _abi_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.plafondLoyerD823162), + _abj_=caml_call1(Runtime_ocaml_Runtime[33],_abi_), + _abk_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.montantForfaitaireChargesD82316); + return [0, + caml_call1(Runtime_ocaml_Runtime[33],_abk_), + _abj_, + _abh_, + _abf_, + _abe_, + _abc_, + _aba_]} + function calcul_equivalence_loyer_minim$0(calcul_equivalence_loyer_minim) + {var + t282= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_equivalence_loyer_minim[1]); + return {"montant":t282}} + function calcul_equivalence_loyer_minim$1(calcul_equivalence_loyer_minim) + {var + _aa$_= + caml_call1 + (Runtime_ocaml_Runtime[42],calcul_equivalence_loyer_minim.montant); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_aa$_)]} + function calcul_nombre_part_logement_fo$0(calcul_nombre_part_logement_fo) + {var + t284= + caml_call1 + (Runtime_ocaml_Runtime[43],calcul_nombre_part_logement_fo[1]); + return {"nNombrePartsD83225":t284}} + function calcul_nombre_part_logement_fo$1(calcul_nombre_part_logement_fo) + {return [0, + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_nombre_part_logement_fo.nNombrePartsD83225)]} + function calcul_aide_personnalisee_loge$5(calcul_aide_personnalisee_loge) + {function t294(param) + {return caml_js_wrap_meth_callback + (function(input) + {var + _aa8_=caml_call1(Runtime_ocaml_Runtime[42],input), + _aa9_=caml_call1(Runtime_ocaml_Runtime[33],_aa8_), + _aa__=caml_call1(calcul_aide_personnalisee_loge[9],_aa9_); + return caml_call1(Runtime_ocaml_Runtime[35],_aa__)})} + var + t293= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[8]), + t292= + caml_call1 + (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[7]), + t291= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[6]), + t290= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[5]), + t289= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[4]), + t288= + caml_call1 + (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[3]), + t287= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), + t286= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); + return {"coefficientMultiplicateurD83225":t286, + "coefficientRD83225":t287, + "nNombrePartsD83225":t288, + "equivalenceLoyerEligible":t289, + "plafondEquivalenceLoyerEligible":t290, + "equivalenceLoyerMinimale":t291, + "coefficientPriseEnChargeD83225":t292, + "aideFinaleFormule":t293, + "traitementAideFinale":caml_js_wrap_meth_callback(t294)}} + function calcul_aide_personnalisee_loge$6(calcul_aide_personnalisee_loge) + {var + _aaU_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$0), + _aaV_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.aideFinaleFormule), + _aaW_=caml_call1(Runtime_ocaml_Runtime[33],_aaV_), + _aaX_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.coefficientPriseEnChargeD83225), + _aaY_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.equivalenceLoyerMinimale), + _aaZ_=caml_call1(Runtime_ocaml_Runtime[33],_aaY_), + _aa0_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.plafondEquivalenceLoyerEligible), + _aa1_=caml_call1(Runtime_ocaml_Runtime[33],_aa0_), + _aa2_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.equivalenceLoyerEligible), + _aa3_=caml_call1(Runtime_ocaml_Runtime[33],_aa2_), + _aa4_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.nNombrePartsD83225), + _aa5_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.coefficientRD83225), + _aa6_=caml_call1(Runtime_ocaml_Runtime[33],_aa5_), + _aa7_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.coefficientMultiplicateurD83225); + return [0, + caml_call1(Runtime_ocaml_Runtime[33],_aa7_), + _aa6_, + _aa4_, + _aa3_, + _aa1_, + _aaZ_, + _aaX_, + _aaW_, + _aaU_]} + function calcul_nombre_parts_accession_$0(calcul_nombre_parts_accession_) + {var + t303= + caml_call1 + (Runtime_ocaml_Runtime[43],calcul_nombre_parts_accession_[1]); + return {"nNombrePartsD83211":t303}} + function calcul_nombre_parts_accession_$1(calcul_nombre_parts_accession_) + {return [0, + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_nombre_parts_accession_.nNombrePartsD83211)]} + function calcul_aide_personnalisee_loge$7(calcul_aide_personnalisee_loge) + {function t309(param) + {return caml_js_wrap_meth_callback + (function(input) + {var + _aaR_=caml_call1(Runtime_ocaml_Runtime[42],input), + _aaS_=caml_call1(Runtime_ocaml_Runtime[33],_aaR_), + _aaT_=caml_call1(calcul_aide_personnalisee_loge[5],_aaS_); + return caml_call1(Runtime_ocaml_Runtime[35],_aaT_)})} + var + t308= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[4]), + t307= + caml_call1 + (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[3]), + t306= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), + t305= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); + return {"mensualiteEligible":t305, + "mensualiteMinimale":t306, + "coefficientPriseEnChargeD83210":t307, + "aideFinaleFormule":t308, + "traitementAideFinale":caml_js_wrap_meth_callback(t309)}} + function calcul_aide_personnalisee_loge$8(calcul_aide_personnalisee_loge) + {var + _aaK_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$1), + _aaL_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.aideFinaleFormule), + _aaM_=caml_call1(Runtime_ocaml_Runtime[33],_aaL_), + _aaN_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.coefficientPriseEnChargeD83210), + _aaO_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.mensualiteMinimale), + _aaP_=caml_call1(Runtime_ocaml_Runtime[33],_aaO_), + _aaQ_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.mensualiteEligible); + return [0, + caml_call1(Runtime_ocaml_Runtime[33],_aaQ_), + _aaP_, + _aaN_, + _aaM_, + _aaK_]} + function traitement_formule_aide_finale(traitement_formule_aide_finale) + {function t315(param) + {return caml_js_wrap_meth_callback + (function(input) + {var + _aaH_=caml_call1(Runtime_ocaml_Runtime[42],input), + _aaI_=caml_call1(Runtime_ocaml_Runtime[33],_aaH_), + _aaJ_=caml_call1(traitement_formule_aide_finale[2],_aaI_); + return caml_call1(Runtime_ocaml_Runtime[35],_aaJ_)})} + var + t314= + caml_call1 + (Runtime_ocaml_Runtime[35],traitement_formule_aide_finale[1]); + return {"aideFinaleFormule":t314, + "traitementAideFinale":caml_js_wrap_meth_callback(t315)}} + function traitement_formule_aide_finale$0(traitement_formule_aide_finale) + {var + _aaF_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$2), + _aaG_= + caml_call1 + (Runtime_ocaml_Runtime[42], + traitement_formule_aide_finale.aideFinaleFormule); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_aaG_),_aaF_]} + function calcul_aide_personnalisee_loge$9(calcul_aide_personnalisee_loge) + {function t318(param) + {return caml_js_wrap_meth_callback + (function(input) + {var + _aaC_=caml_call1(Runtime_ocaml_Runtime[42],input), + _aaD_=caml_call1(Runtime_ocaml_Runtime[33],_aaC_), + _aaE_=caml_call1(calcul_aide_personnalisee_loge[2],_aaD_); + return caml_call1(Runtime_ocaml_Runtime[35],_aaE_)})} + var + t317= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); + return {"aideFinaleFormule":t317, + "traitementAideFinale":caml_js_wrap_meth_callback(t318)}} + function calcul_aide_personnalisee_loge$10(calcul_aide_personnalisee_loge) + {var + _aaA_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$3), + _aaB_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.aideFinaleFormule); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_aaB_),_aaA_]} + function infos_changement_logement_d842(infos_changement_logement_d842) + {var + t321= + caml_call1 + (Runtime_ocaml_Runtime[35],infos_changement_logement_d842[2]), + t320= + caml_call1 + (Runtime_ocaml_Runtime[35],infos_changement_logement_d842[1]); + return {"ancienLoyerPrincipal":t320,"ancienneAllocationLogement":t321}} + function infos_changement_logement_d842$0(infos_changement_logement_d842) + {var + _aax_= + caml_call1 + (Runtime_ocaml_Runtime[42], + infos_changement_logement_d842.ancienneAllocationLogement), + _aay_=caml_call1(Runtime_ocaml_Runtime[33],_aax_), + _aaz_= + caml_call1 + (Runtime_ocaml_Runtime[42], + infos_changement_logement_d842.ancienLoyerPrincipal); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_aaz_),_aay_]} + function calcul_allocation_logement_loc$0(calcul_allocation_logement_loc) + {function t325(param) + {return caml_js_wrap_meth_callback + (function(input) + {var + _aau_=caml_call1(Runtime_ocaml_Runtime[42],input), + _aav_=caml_call1(Runtime_ocaml_Runtime[33],_aau_), + _aaw_=caml_call1(calcul_allocation_logement_loc[2],_aav_); + return caml_call1(Runtime_ocaml_Runtime[35],_aaw_)})} + var + t324= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[1]); + return {"aideFinaleFormule":t324, + "traitementAideFinale":caml_js_wrap_meth_callback(t325)}} + function calcul_allocation_logement_loc$1(calcul_allocation_logement_loc) + {var + _aas_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$4), + _aat_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_loc.aideFinaleFormule); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_aat_),_aas_]} + function calcul_allocation_logement_acc$0(calcul_allocation_logement_acc) + {function t328(param) + {return caml_js_wrap_meth_callback + (function(input) + {var + _aap_=caml_call1(Runtime_ocaml_Runtime[42],input), + _aaq_=caml_call1(Runtime_ocaml_Runtime[33],_aap_), + _aar_=caml_call1(calcul_allocation_logement_acc[2],_aaq_); + return caml_call1(Runtime_ocaml_Runtime[35],_aar_)})} + var + t327= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[1]); + return {"aideFinaleFormule":t327, + "traitementAideFinale":caml_js_wrap_meth_callback(t328)}} + function calcul_allocation_logement_acc$1(calcul_allocation_logement_acc) + {var + _aan_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$5), + _aao_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_acc.aideFinaleFormule); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_aao_),_aan_]} + function calcul_allocation_logement_foy$0(calcul_allocation_logement_foy) + {function t335(param) + {return caml_js_wrap_meth_callback + (function(input) + {var + _aak_=caml_call1(Runtime_ocaml_Runtime[42],input), + _aal_=caml_call1(Runtime_ocaml_Runtime[33],_aak_), + _aam_=caml_call1(calcul_allocation_logement_foy[6],_aal_); + return caml_call1(Runtime_ocaml_Runtime[35],_aam_)})} + var + t334= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[5]), + t333= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[4]), + t332= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[3]), + t331= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[2]), + t330= + caml_call1 + (Runtime_ocaml_Runtime[43],calcul_allocation_logement_foy[1]); + return {"coefficientPriseEnCharge":t330, + "equivalenceLoyer":t331, + "montantForfaitaireCharges":t332, + "loyerMinimal":t333, + "aideFinaleFormule":t334, + "traitementAideFinale":caml_js_wrap_meth_callback(t335)}} + function calcul_allocation_logement_foy$1(calcul_allocation_logement_foy) + {var + _aab_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$6), + _aac_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_foy.aideFinaleFormule), + _aad_=caml_call1(Runtime_ocaml_Runtime[33],_aac_), + _aae_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_foy.loyerMinimal), + _aaf_=caml_call1(Runtime_ocaml_Runtime[33],_aae_), + _aag_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_foy.montantForfaitaireCharges), + _aah_=caml_call1(Runtime_ocaml_Runtime[33],_aag_), + _aai_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_foy.equivalenceLoyer), + _aaj_=caml_call1(Runtime_ocaml_Runtime[33],_aai_); + return [0, + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_foy.coefficientPriseEnCharge), + _aaj_, + _aah_, + _aaf_, + _aad_, + _aab_]} + function calcul_allocation_logement_to_(calcul_allocation_logement) + {function t342(param) + {return caml_js_wrap_meth_callback + (function(input) + {var + _$__=caml_call1(Runtime_ocaml_Runtime[42],input), + _$$_=caml_call1(Runtime_ocaml_Runtime[33],_$__), + _aaa_=caml_call1(calcul_allocation_logement[2],_$$_); + return caml_call1(Runtime_ocaml_Runtime[35],_aaa_)})} + var + t341= + caml_call1(Runtime_ocaml_Runtime[35],calcul_allocation_logement[1]); + return {"aideFinaleFormule":t341, + "traitementAideFinale":caml_js_wrap_meth_callback(t342)}} + function calcul_allocation_logement_of_(calcul_allocation_logement) + {var + _$8_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$7), + _$9_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement.aideFinaleFormule); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_$9_),_$8_]} + function ouverture_droits_retraite_to_j(ouverture_droits_retraite) + {var + t344= + caml_call1(Runtime_jsoo_Runtime[3],ouverture_droits_retraite[1]); + return {"ageOuvertureDroit":t344}} + function ouverture_droits_retraite_of_j(ouverture_droits_retraite) + {return [0, + caml_call1 + (Runtime_jsoo_Runtime[2], + ouverture_droits_retraite.ageOuvertureDroit)]} + function impaye_depense_logement_to_jso(impaye_depense_logement) + {var + t346= + caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement[1]); + return {"montantImpaye":t346}} + function impaye_depense_logement_of_jso(impaye_depense_logement) + {var + _$7_= + caml_call1 + (Runtime_ocaml_Runtime[42],impaye_depense_logement.montantImpaye); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_$7_)]} + function calculette_aides_au_logement_t(calculette_aides_au_logement) + {var _$2_=calculette_aides_au_logement[4]; + function _$3_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)} + var t351=caml_js_from_array(caml_call2(Stdlib_Array[15],_$3_,_$2_)); + function t350(param) + {return caml_js_wrap_meth_callback + (function(input) + {var + _$4_=caml_call1(Runtime_ocaml_Runtime[42],input), + _$5_=caml_call1(Runtime_ocaml_Runtime[33],_$4_), + _$6_=caml_call1(calculette_aides_au_logement[3],_$5_); + return caml_call1(Runtime_ocaml_Runtime[35],_$6_)})} + var + t349= + caml_call1(Runtime_ocaml_Runtime[35],calculette_aides_au_logement[2]), + t348=! ! calculette_aides_au_logement[1]; + return {"eligibilite":t348, + "aideFinaleFormule":t349, + "traitementAideFinale":caml_js_wrap_meth_callback(t350), + "coefficentsEnfantsGardeAlterneePrisEnCompte":t351}} + function calculette_aides_au_logement_o(calculette_aides_au_logement) + {var + _$W_= + caml_js_to_array + (calculette_aides_au_logement.coefficentsEnfantsGardeAlterneePrisEnCompte); + function _$X_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)} + var + _$Y_=caml_call1(caml_call1(Stdlib_Array[15],_$X_),_$W_), + _$Z_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$8), + _$0_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calculette_aides_au_logement.aideFinaleFormule), + _$1_=caml_call1(Runtime_ocaml_Runtime[33],_$0_); + return [0,calculette_aides_au_logement.eligibilite | 0,_$1_,_$Z_,_$Y_]} + function calculette_aides_au_logement_g$0(calculette_aides_au_logement_g) + {var + t356= + caml_call1 + (Runtime_ocaml_Runtime[35],calculette_aides_au_logement_g[2]), + t355=! ! calculette_aides_au_logement_g[1]; + return {"eligibilite":t355,"aideFinale":t356}} + function calculette_aides_au_logement_g$1(calculette_aides_au_logement_g) + {var + _$U_= + caml_call1 + (Runtime_ocaml_Runtime[42],calculette_aides_au_logement_g.aideFinale), + _$V_=caml_call1(Runtime_ocaml_Runtime[33],_$U_); + return [0,calculette_aides_au_logement_g.eligibilite | 0,_$V_]} + function base_mensuelle_allocations_fam$6(base_mensuelle_allocations_fam) + {var + t359= + caml_call1 + (Runtime_ocaml_Runtime[35],base_mensuelle_allocations_fam[1]); + return {"montant":t359}} + function base_mensuelle_allocations_fam$7(base_mensuelle_allocations_fam) + {var + _$T_= + caml_call1 + (Runtime_ocaml_Runtime[42],base_mensuelle_allocations_fam.montant); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_$T_)]} + function smic_to_jsoo$0(smic) + {var t361=caml_call1(Runtime_ocaml_Runtime[35],smic[1]); + return {"brutHoraire":t361}} + function smic_of_jsoo$0(smic) + {var _$S_=caml_call1(Runtime_ocaml_Runtime[42],smic.brutHoraire); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_$S_)]} + function pret_to_jsoo(pret) + {var + t365=titulaire_pret_to_jsoo(pret[3]), + t364=caml_call1(Runtime_jsoo_Runtime[5],pret[2]), + t363=type_pret_to_jsoo(pret[1]); + return {"typePret":t363,"dateSignature":t364,"titulairePret":t365}} + function pret_of_jsoo(pret) + {var + _$Q_=titulaire_pret_of_jsoo(pret.titulairePret), + _$R_=caml_call1(Runtime_jsoo_Runtime[4],pret.dateSignature); + return [0,type_pret_of_jsoo(pret.typePret),_$R_,_$Q_]} + function neuf_ou_ancien_to_jsoo(param) + {if(0 === param[0]) + {var arg=param[1];return {"kind":"Neuf","payload":arg}} + var arg$0=param[1],t372=ameliore_par_occupant_to_jsoo(arg$0); + return {"kind":"Ancien","payload":t372}} + function neuf_ou_ancien_of_jsoo(neuf_ou_ancien) + {var cons=caml_string_of_jsstring(neuf_ou_ancien.kind); + if(caml_string_notequal(cons,cst_Ancien$0)) + {if(caml_string_notequal(cons,cst_Neuf$0)) + {var _$P_=caml_call2(Stdlib_Printf[4],_Xq_,cons); + return caml_call1(Stdlib[2],_$P_)} + return _Xr_} + return [1,ameliore_par_occupant_of_jsoo(neuf_ou_ancien.payload)]} + function tranche_revenu_to_jsoo(tranche_revenu) + {var + t377=caml_call1(Runtime_ocaml_Runtime[43],tranche_revenu[3]), + t376=caml_call1(Runtime_ocaml_Runtime[35],tranche_revenu[2]), + t375=limite_tranche_to_jsoo(tranche_revenu[1]); + return {"haut":t375,"bas":t376,"taux":t377}} + function tranche_revenu_of_jsoo(tranche_revenu) + {var + _$M_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu.taux), + _$N_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu.bas), + _$O_=caml_call1(Runtime_ocaml_Runtime[33],_$N_); + return [0,limite_tranche_of_jsoo(tranche_revenu.haut),_$O_,_$M_]} + function tranche_revenu_decimal_to_jsoo(tranche_revenu_decimal) + {var + t383=caml_call1(Runtime_ocaml_Runtime[43],tranche_revenu_decimal[3]), + t382=caml_call1(Runtime_ocaml_Runtime[43],tranche_revenu_decimal[2]), + t381=limite_tranche_decimal_to_jsoo(tranche_revenu_decimal[1]); + return {"haut":t381,"bas":t382,"taux":t383}} + function tranche_revenu_decimal_of_jsoo(tranche_revenu_decimal) + {var + _$K_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu_decimal.taux), + _$L_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu_decimal.bas); + return [0, + limite_tranche_decimal_of_jsoo(tranche_revenu_decimal.haut), + _$L_, + _$K_]} + function autre_personne_a_charge_to_jso(autre_personne_a_charge) + {var + t393=! ! autre_personne_a_charge[7], + t392=! ! autre_personne_a_charge[6], + t391=! ! autre_personne_a_charge[5], + t390=parente_to_jsoo(autre_personne_a_charge[4]), + t389=! ! autre_personne_a_charge[3], + t388=caml_call1(Runtime_ocaml_Runtime[35],autre_personne_a_charge[2]), + t387=caml_call1(Runtime_jsoo_Runtime[5],autre_personne_a_charge[1]); + return {"dateNaissance":t387, + "ressources":t388, + "ascendantDescendantCollateralDeuxiemeTroisiemeDegre":t389, + "parente":t390, + "incapacite80PourcentOuRestrictionEmploi":t391, + "beneficiaireL16119L3518L6433Secu":t392, + "titulaireAllocationPersonneAgee":t393}} + function autre_personne_a_charge_of_jso(autre_personne_a_charge) + {var + _$D_=autre_personne_a_charge.titulaireAllocationPersonneAgee | 0, + _$E_=autre_personne_a_charge.beneficiaireL16119L3518L6433Secu | 0, + _$F_= + autre_personne_a_charge.incapacite80PourcentOuRestrictionEmploi + | + 0, + _$G_=parente_of_jsoo(autre_personne_a_charge.parente), + _$H_= + autre_personne_a_charge.ascendantDescendantCollateralDeuxiemeTroisiemeDegre + | + 0, + _$I_= + caml_call1 + (Runtime_ocaml_Runtime[42],autre_personne_a_charge.ressources), + _$J_=caml_call1(Runtime_ocaml_Runtime[33],_$I_); + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4],autre_personne_a_charge.dateNaissance), + _$J_, + _$H_, + _$G_, + _$F_, + _$E_, + _$D_]} + function date_naissance_troisieme_ou_de(param) + {if(0 === param[0]) + {var arg=param[1];return {"kind":"MoinsDeTroisEnfants","payload":arg}} + var arg$0=param[1],t404=date_de_naissance_ou_mois_de_g(arg$0); + return {"kind":"PlusDeTroisEnfants","payload":t404}} + function date_naissance_troisieme_ou_de$0(date_naissance_troisieme_ou_de) + {var cons=caml_string_of_jsstring(date_naissance_troisieme_ou_de.kind); + if(caml_string_notequal(cons,cst_MoinsDeTroisEnfants$0)) + {if(caml_string_notequal(cons,cst_PlusDeTroisEnfants$0)) + {var _$C_=caml_call2(Stdlib_Printf[4],_Xs_,cons); + return caml_call1(Stdlib[2],_$C_)} + return [1, + date_de_naissance_ou_mois_de_g$0 + (date_naissance_troisieme_ou_de.payload)]} + return _Xt_} + function eligibilite_allocation_logemen$0(eligibilite_allocation_logemen) + {var _$A_=eligibilite_allocation_logemen[3]; + function _$B_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)} + var + t409=caml_js_from_array(caml_call2(Stdlib_Array[15],_$B_,_$A_)), + t408= + caml_call1 + (Runtime_ocaml_Runtime[48],eligibilite_allocation_logemen[2]), + t407=type_eligibilite_allocation_lo(eligibilite_allocation_logemen[1]); + return {"eligibilite":t407, + "nombrePersonnesAChargePrisesEnCompte":t408, + "coefficentsEnfantsGardeAlterneePrisEnCompte":t409}} + function eligibilite_allocation_logemen$1(eligibilite_allocation_logemen) + {var + _$w_= + caml_js_to_array + (eligibilite_allocation_logemen.coefficentsEnfantsGardeAlterneePrisEnCompte); + function _$x_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)} + var + _$y_=caml_call1(caml_call1(Stdlib_Array[15],_$x_),_$w_), + _$z_= + caml_call1 + (Runtime_ocaml_Runtime[49], + eligibilite_allocation_logemen.nombrePersonnesAChargePrisesEnCompte); + return [0, + type_eligibilite_allocation_lo$0 + (eligibilite_allocation_logemen.eligibilite), + _$z_, + _$y_]} + function logement_foyer_to_jsoo(logement_foyer) + {var + t419=categorie_equivalence_loyer_al(logement_foyer[7]), + t418=caml_call1(Runtime_ocaml_Runtime[35],logement_foyer[6]), + t417=! ! logement_foyer[5], + t416=caml_call1(Runtime_jsoo_Runtime[5],logement_foyer[4]), + t415=! ! logement_foyer[3], + t414=! ! logement_foyer[2], + t413=type_logement_foyer_to_jsoo(logement_foyer[1]); + return {"typeUser":t413, + "remplitConditionsR83221":t414, + "conventionneLivreIIITitreVChapIII":t415, + "dateConventionnement":t416, + "construitApplicationLoi195712III":t417, + "redevance":t418, + "categorieEquivalenceLoyerD84216":t419}} + function logement_foyer_of_jsoo(logement_foyer) + {var + _$p_= + categorie_equivalence_loyer_al$0 + (logement_foyer.categorieEquivalenceLoyerD84216), + _$q_=caml_call1(Runtime_ocaml_Runtime[42],logement_foyer.redevance), + _$r_=caml_call1(Runtime_ocaml_Runtime[33],_$q_), + _$s_=logement_foyer.construitApplicationLoi195712III | 0, + _$t_= + caml_call1 + (Runtime_jsoo_Runtime[4],logement_foyer.dateConventionnement), + _$u_=logement_foyer.conventionneLivreIIITitreVChapIII | 0, + _$v_=logement_foyer.remplitConditionsR83221 | 0; + return [0, + type_logement_foyer_of_jsoo(logement_foyer.typeUser), + _$v_, + _$u_, + _$t_, + _$s_, + _$r_, + _$p_]} + function enfant_prestations_familiales_(enfant_prestations_familiales) + {var + t433=! ! enfant_prestations_familiales[7], + t432=! ! enfant_prestations_familiales[6], + t431=prise_en_charge_enfant_to_jsoo(enfant_prestations_familiales[5]), + t430= + caml_call1(Runtime_jsoo_Runtime[5],enfant_prestations_familiales[4]), + t429= + caml_call1(Runtime_ocaml_Runtime[35],enfant_prestations_familiales[3]), + t428=situation_obligation_scolaire_$1(enfant_prestations_familiales[2]), + t427= + caml_call1(Runtime_ocaml_Runtime[48],enfant_prestations_familiales[1]); + return {"identifiant":t427, + "obligationScolaire":t428, + "remunerationMensuelle":t429, + "dateDeNaissance":t430, + "priseEnCharge":t431, + "aDejaOuvertDroitAuxAllocationsFamiliales":t432, + "beneficieTitrePersonnelAidePersonnelleLogement":t433}} + function enfant_prestations_familiales_$0(enfant_prestations_familiales) + {var + _$i_= + enfant_prestations_familiales.beneficieTitrePersonnelAidePersonnelleLogement + | + 0, + _$j_= + enfant_prestations_familiales.aDejaOuvertDroitAuxAllocationsFamiliales + | + 0, + _$k_= + prise_en_charge_enfant_of_jsoo + (enfant_prestations_familiales.priseEnCharge), + _$l_= + caml_call1 + (Runtime_jsoo_Runtime[4], + enfant_prestations_familiales.dateDeNaissance), + _$m_= + caml_call1 + (Runtime_ocaml_Runtime[42], + enfant_prestations_familiales.remunerationMensuelle), + _$n_=caml_call1(Runtime_ocaml_Runtime[33],_$m_), + _$o_= + situation_obligation_scolaire_$2 + (enfant_prestations_familiales.obligationScolaire); + return [0, + caml_call1 + (Runtime_ocaml_Runtime[49], + enfant_prestations_familiales.identifiant), + _$o_, + _$n_, + _$l_, + _$k_, + _$j_, + _$i_]} + function enfant_a_charge_to_jsoo(enfant_a_charge) + {var + t447=situation_garde_alternee_to_js(enfant_a_charge[7]), + t446=situation_obligation_scolaire_$1(enfant_a_charge[6]), + t445=caml_call1(Runtime_ocaml_Runtime[35],enfant_a_charge[5]), + t444=caml_call1(Runtime_jsoo_Runtime[5],enfant_a_charge[4]), + t443=! ! enfant_a_charge[3], + t442=! ! enfant_a_charge[2], + t441=caml_call1(Runtime_ocaml_Runtime[48],enfant_a_charge[1]); + return {"identifiant":t441, + "beneficieTitrePersonnelAidePersonnelleLogement":t442, + "aDejaOuvertDroitAuxAllocationsFamiliales":t443, + "dateDeNaissance":t444, + "remunerationMensuelle":t445, + "obligationScolaire":t446, + "situationGardeAlternee":t447}} + function enfant_a_charge_of_jsoo(enfant_a_charge) + {var + _$b_= + situation_garde_alternee_of_js(enfant_a_charge.situationGardeAlternee), + _$c_= + situation_obligation_scolaire_$2(enfant_a_charge.obligationScolaire), + _$d_= + caml_call1 + (Runtime_ocaml_Runtime[42],enfant_a_charge.remunerationMensuelle), + _$e_=caml_call1(Runtime_ocaml_Runtime[33],_$d_), + _$f_= + caml_call1(Runtime_jsoo_Runtime[4],enfant_a_charge.dateDeNaissance), + _$g_=enfant_a_charge.aDejaOuvertDroitAuxAllocationsFamiliales | 0, + _$h_=enfant_a_charge.beneficieTitrePersonnelAidePersonnelleLogement | 0; + return [0, + caml_call1 + (Runtime_ocaml_Runtime[49],enfant_a_charge.identifiant), + _$h_, + _$g_, + _$f_, + _$e_, + _$c_, + _$b_]} + function type_bailleur_to_jsoo(param) + {switch(param[0]) + {case 0: + var arg=param[1],t456=convention_bailleur_social_to_(arg); + return {"kind":"BailleurSocial","payload":t456}; + case 1: + var arg$0=param[1],t458=convention_a_n_h_a_to_jsoo(arg$0); + return {"kind":"BailleurPriveAvecConventionnementSocial", + "payload":t458}; + default: + var arg$1=param[1];return {"kind":"BailleurPrive","payload":arg$1}}} + function type_bailleur_of_jsoo(type_bailleur) + {var cons=caml_string_of_jsstring(type_bailleur.kind); + if(caml_string_notequal(cons,cst_BailleurPrive)) + {if(caml_string_notequal(cons,cst_BailleurPriveAvecConventio)) + {if(caml_string_notequal(cons,cst_BailleurSocial$0)) + {var _$a_=caml_call2(Stdlib_Printf[4],_Xu_,cons); + return caml_call1(Stdlib[2],_$a_)} + return [0,convention_bailleur_social_of_(type_bailleur.payload)]} + return [1,convention_a_n_h_a_of_jsoo(type_bailleur.payload)]} + return _Xv_} + function loue_ou_sous_loue_a_des_tiers_(param) + {if(0 === param[0]){var arg=param[1];return {"kind":"Non","payload":arg}} + var arg$0=param[1],t467=personne_sous_location_to_jsoo(arg$0); + return {"kind":"Oui","payload":t467}} + function loue_ou_sous_loue_a_des_tiers_$0(loue_ou_sous_loue_a_des_tiers) + {var cons=caml_string_of_jsstring(loue_ou_sous_loue_a_des_tiers.kind); + if(caml_string_notequal(cons,cst_Non$4)) + {if(caml_string_notequal(cons,cst_Oui$2)) + {var __$_=caml_call2(Stdlib_Printf[4],_Xw_,cons); + return caml_call1(Stdlib[2],__$_)} + return [1, + personne_sous_location_of_jsoo + (loue_ou_sous_loue_a_des_tiers.payload)]} + return _Xx_} + function nationalite_to_jsoo(param) + {if(0 === param[0]) + {var arg=param[1];return {"kind":"Francaise","payload":arg}} + var arg$0=param[1],t473=conditions_etrangers_to_jsoo(arg$0); + return {"kind":"Etrangere","payload":t473}} + function nationalite_of_jsoo(nationalite) + {var cons=caml_string_of_jsstring(nationalite.kind); + if(caml_string_notequal(cons,cst_Etrangere)) + {if(caml_string_notequal(cons,cst_Francaise)) + {var ____=caml_call2(Stdlib_Printf[4],_Xy_,cons); + return caml_call1(Stdlib[2],____)} + return _Xz_} + return [1,conditions_etrangers_of_jsoo(nationalite.payload)]} + function changement_logement_d842_4_to_(param) + {if(0 === param[0]) + {var arg=param[1],t477=infos_changement_logement_d842(arg); + return {"kind":"Changement","payload":t477}} + var arg$0=param[1]; + return {"kind":"PasDeChangement","payload":arg$0}} + function changement_logement_d842_4_of_(changement_logement_d842_4) + {var cons=caml_string_of_jsstring(changement_logement_d842_4.kind); + if(caml_string_notequal(cons,cst_Changement$0)) + {if(caml_string_notequal(cons,cst_PasDeChangement$0)) + {var __9_=caml_call2(Stdlib_Printf[4],_XA_,cons); + return caml_call1(Stdlib[2],__9_)} + return _XB_} + return [0, + infos_changement_logement_d842$0 + (changement_logement_d842_4.payload)]} + function proprietaire_to_jsoo(proprietaire) + {var + t492=pret_to_jsoo(proprietaire[11]), + t491=neuf_ou_ancien_to_jsoo(proprietaire[10]), + t490=! ! proprietaire[9], + t489=! ! proprietaire[8], + t488=! ! proprietaire[7], + t487=type_travaux_logement_r842_5_t(proprietaire[6]), + t486=type_travaux_logement_d832_15_(proprietaire[5]), + t485=caml_call1(Runtime_jsoo_Runtime[5],proprietaire[4]), + t484=caml_call1(Runtime_ocaml_Runtime[35],proprietaire[3]), + t483=caml_call1(Runtime_ocaml_Runtime[35],proprietaire[2]), + t482=! ! proprietaire[1]; + return {"logementSitueCommuneDesequilibreL8312":t482, + "mensualitePrincipale":t483, + "chargesMensuellesPret":t484, + "dateEntreeLogement":t485, + "typeTravauxLogementD83215":t486, + "typeTravauxLogementR8425":t487, + "localHabitePremiereFoisBeneficiaire":t488, + "copropriete":t489, + "situationR822111317":t490, + "ancienneteLogement":t491, + "pret":t492}} + function proprietaire_of_jsoo(proprietaire) + {var + __X_=pret_of_jsoo(proprietaire.pret), + __Y_=neuf_ou_ancien_of_jsoo(proprietaire.ancienneteLogement), + __Z_=proprietaire.situationR822111317 | 0, + __0_=proprietaire.copropriete | 0, + __1_=proprietaire.localHabitePremiereFoisBeneficiaire | 0, + __2_= + type_travaux_logement_r842_5_o(proprietaire.typeTravauxLogementR8425), + __3_= + type_travaux_logement_d832_15_$0 + (proprietaire.typeTravauxLogementD83215), + __4_= + caml_call1(Runtime_jsoo_Runtime[4],proprietaire.dateEntreeLogement), + __5_= + caml_call1 + (Runtime_ocaml_Runtime[42],proprietaire.chargesMensuellesPret), + __6_=caml_call1(Runtime_ocaml_Runtime[33],__5_), + __7_= + caml_call1 + (Runtime_ocaml_Runtime[42],proprietaire.mensualitePrincipale), + __8_=caml_call1(Runtime_ocaml_Runtime[33],__7_); + return [0, + proprietaire.logementSitueCommuneDesequilibreL8312 | 0, + __8_, + __6_, + __4_, + __3_, + __2_, + __1_, + __0_, + __Z_, + __Y_, + __X_]} + function informations_prime_de_demenage(informations_prime_de_demenage) + {var + t505=date_naissance_troisieme_ou_de(informations_prime_de_demenage[2]), + t504= + caml_call1 + (Runtime_ocaml_Runtime[48],informations_prime_de_demenage[1]); + return {"nombreEnfantsANaitreApresTroisiemeMoisGrossesse":t504, + "dateNaissanceTroisiemeEnfantOuDernierSiPlus":t505}} + function informations_prime_de_demenage$0(informations_prime_de_demenage) + {var + __W_= + date_naissance_troisieme_ou_de$0 + (informations_prime_de_demenage.dateNaissanceTroisiemeEnfantOuDernierSiPlus); + return [0, + caml_call1 + (Runtime_ocaml_Runtime[49], + informations_prime_de_demenage.nombreEnfantsANaitreApresTroisiemeMoisGrossesse), + __W_]} + function eligibilite_prestations_famili$0(eligibilite_prestations_famili) + {var + t511=! ! eligibilite_prestations_famili[4], + t510= + caml_call1(Runtime_jsoo_Runtime[3],eligibilite_prestations_famili[3]); + function t509(param) + {return caml_js_wrap_meth_callback + (function(input) + {var __V_=enfant_prestations_familiales_$0(input); + return ! + ! + caml_call1(eligibilite_prestations_famili[2],__V_)})} + function t508(param) + {return caml_js_wrap_meth_callback + (function(input) + {var __U_=enfant_prestations_familiales_$0(input); + return ! + ! + caml_call1(eligibilite_prestations_famili[1],__U_)})} + return {"droitOuvert":caml_js_wrap_meth_callback(t508), + "conditionsHorsAge":caml_js_wrap_meth_callback(t509), + "ageL51232":t510, + "regimeOutreMerL7511":t511}} + function eligibilite_prestations_famili$1(eligibilite_prestations_famili) + {var + __R_=eligibilite_prestations_famili.regimeOutreMerL7511 | 0, + __S_= + caml_call1 + (Runtime_jsoo_Runtime[2],eligibilite_prestations_famili.ageL51232), + __T_=caml_call1(Stdlib[2],cst_The_function_conditions_ho$0); + return [0, + caml_call1(Stdlib[2],cst_The_function_droit_ouvert_$0), + __T_, + __S_, + __R_]} + function personne_a_charge_to_jsoo(param) + {if(0 === param[0]) + {var arg=param[1],t515=enfant_a_charge_to_jsoo(arg); + return {"kind":"EnfantACharge","payload":t515}} + var arg$0=param[1],t517=autre_personne_a_charge_to_jso(arg$0); + return {"kind":"AutrePersonneACharge","payload":t517}} + function personne_a_charge_of_jsoo(personne_a_charge) + {var cons=caml_string_of_jsstring(personne_a_charge.kind); + if(caml_string_notequal(cons,cst_AutrePersonneACharge)) + {if(caml_string_notequal(cons,cst_EnfantACharge)) + {var __Q_=caml_call2(Stdlib_Printf[4],_XC_,cons); + return caml_call1(Stdlib[2],__Q_)} + return [0,enfant_a_charge_of_jsoo(personne_a_charge.payload)]} + return [1,autre_personne_a_charge_of_jso(personne_a_charge.payload)]} + function demandeur_to_jsoo(demandeur) + {var + t524=! ! demandeur[4], + t523=patrimoine_to_jsoo(demandeur[3]), + t522=nationalite_to_jsoo(demandeur[2]), + t521=caml_call1(Runtime_jsoo_Runtime[5],demandeur[1]); + return {"dateNaissance":t521, + "nationalite":t522, + "patrimoine":t523, + "personneHebergeeCentreSoinLL162223SecuriteSociale":t524}} + function demandeur_of_jsoo(demandeur) + {var + __N_=demandeur.personneHebergeeCentreSoinLL162223SecuriteSociale | 0, + __O_=patrimoine_of_jsoo(demandeur.patrimoine), + __P_=nationalite_of_jsoo(demandeur.nationalite); + return [0, + caml_call1(Runtime_jsoo_Runtime[4],demandeur.dateNaissance), + __P_, + __O_, + __N_]} + function location_to_jsoo(location) + {var + t536=changement_logement_d842_4_to_(location[8]), + t535=! ! location[7], + t534=! ! location[6], + t533=! ! location[5], + t532=! ! location[4], + t531=! ! location[3], + t530=caml_call1(Runtime_ocaml_Runtime[35],location[2]), + t529=type_bailleur_to_jsoo(location[1]); + return {"bailleur":t529, + "loyerPrincipal":t530, + "beneficiaireAideAdulteOuEnfantHandicapes":t531, + "logementEstChambre":t532, + "colocation":t533, + "ageesOuHandicapAdultesHebergeesOnereuxParticuliers":t534, + "logementMeubleD8422":t535, + "changementLogementD8424":t536}} + function location_of_jsoo(location) + {var + __F_=changement_logement_d842_4_of_(location.changementLogementD8424), + __G_=location.logementMeubleD8422 | 0, + __H_=location.ageesOuHandicapAdultesHebergeesOnereuxParticuliers | 0, + __I_=location.colocation | 0, + __J_=location.logementEstChambre | 0, + __K_=location.beneficiaireAideAdulteOuEnfantHandicapes | 0, + __L_=caml_call1(Runtime_ocaml_Runtime[42],location.loyerPrincipal), + __M_=caml_call1(Runtime_ocaml_Runtime[33],__L_); + return [0, + type_bailleur_of_jsoo(location.bailleur), + __M_, + __K_, + __J_, + __I_, + __H_, + __G_, + __F_]} + function eligibilite_aides_personnelle_$0(eligibilite_aides_personnelle_) + {function t549(param) + {return caml_js_wrap_meth_callback + (function(input) + {var __E_=personne_a_charge_of_jsoo(input); + return ! + ! + caml_call1(eligibilite_aides_personnelle_[5],__E_)})} + var __C_=eligibilite_aides_personnelle_[4]; + function __D_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)} + var + t548=caml_js_from_array(caml_call2(Stdlib_Array[15],__D_,__C_)), + t547= + caml_call1 + (Runtime_ocaml_Runtime[48],eligibilite_aides_personnelle_[3]), + t546=! ! eligibilite_aides_personnelle_[2], + t545= + caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aides_personnelle_[1]); + return {"dateCourante":t545, + "eligibilite":t546, + "nombrePersonnesAChargePrisesEnCompte":t547, + "coefficentsEnfantsGardeAlterneePrisEnCompte":t548, + "condition2R8234":caml_js_wrap_meth_callback(t549)}} + function eligibilite_aides_personnelle_$1(eligibilite_aides_personnelle_) + {var + __w_=caml_call1(Stdlib[2],cst_The_function_condition_2_r), + __x_= + caml_js_to_array + (eligibilite_aides_personnelle_.coefficentsEnfantsGardeAlterneePrisEnCompte); + function __y_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)} + var + __z_=caml_call1(caml_call1(Stdlib_Array[15],__y_),__x_), + __A_= + caml_call1 + (Runtime_ocaml_Runtime[49], + eligibilite_aides_personnelle_.nombrePersonnesAChargePrisesEnCompte), + __B_=eligibilite_aides_personnelle_.eligibilite | 0; + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + eligibilite_aides_personnelle_.dateCourante), + __B_, + __A_, + __z_, + __w_]} + function categorie_calcul_a_p_l_to_jsoo(param) + {switch(param[0]) + {case 0: + var arg=param[1],t555=location_to_jsoo(arg); + return {"kind":"Location","payload":t555}; + case 1: + var arg$0=param[1],t557=proprietaire_to_jsoo(arg$0); + return {"kind":"AccessionPropriete","payload":t557}; + default: + var arg$1=param[1],t559=logement_foyer_to_jsoo(arg$1); + return {"kind":"LogementFoyer","payload":t559}}} + function categorie_calcul_a_p_l_of_jsoo(categorie_calcul_a_p_l) + {var cons=caml_string_of_jsstring(categorie_calcul_a_p_l.kind); + if(caml_string_notequal(cons,cst_AccessionPropriete)) + {if(caml_string_notequal(cons,cst_Location$0)) + {if(caml_string_notequal(cons,cst_LogementFoyer$0)) + {var __v_=caml_call2(Stdlib_Printf[4],_XD_,cons); + return caml_call1(Stdlib[2],__v_)} + return [2,logement_foyer_of_jsoo(categorie_calcul_a_p_l.payload)]} + return [0,location_of_jsoo(categorie_calcul_a_p_l.payload)]} + return [1,proprietaire_of_jsoo(categorie_calcul_a_p_l.payload)]} + function mode_occupation_to_jsoo(param) + {switch(param[0]) + {case 0: + var arg=param[1],t565=location_to_jsoo(arg); + return {"kind":"Locataire","payload":t565}; + case 1: + var arg$0=param[1],t567=logement_foyer_to_jsoo(arg$0); + return {"kind":"ResidentLogementFoyer","payload":t567}; + case 2: + var arg$1=param[1],t569=proprietaire_to_jsoo(arg$1); + return {"kind":"AccessionProprieteLocalUsageExclusifHabitation", + "payload":t569}; + case 3: + var arg$2=param[1],t571=location_to_jsoo(arg$2); + return {"kind":"SousLocataire","payload":t571}; + default: + var arg$3=param[1],t573=proprietaire_to_jsoo(arg$3); + return {"kind":"LocationAccession","payload":t573}}} + function mode_occupation_of_jsoo(mode_occupation) + {var cons=caml_string_of_jsstring(mode_occupation.kind); + if(caml_string_notequal(cons,cst_AccessionProprieteLocalUsa)) + {if(caml_string_notequal(cons,cst_Locataire$0)) + {if(caml_string_notequal(cons,cst_LocationAccession$0)) + {if(caml_string_notequal(cons,cst_ResidentLogementFoyer)) + {if(caml_string_notequal(cons,cst_SousLocataire$0)) + {var __u_=caml_call2(Stdlib_Printf[4],_XE_,cons); + return caml_call1(Stdlib[2],__u_)} + return [3,location_of_jsoo(mode_occupation.payload)]} + return [1,logement_foyer_of_jsoo(mode_occupation.payload)]} + return [4,proprietaire_of_jsoo(mode_occupation.payload)]} + return [0,location_of_jsoo(mode_occupation.payload)]} + return [2,proprietaire_of_jsoo(mode_occupation.payload)]} + function logement_to_jsoo(logement) + {var + t588=zone_d_habitation_to_jsoo(logement[9]), + t587=caml_call1(Runtime_ocaml_Runtime[48],logement[8]), + t586=! ! logement[7], + t585=parent_ou_autre_to_jsoo(logement[6]), + t584=loue_ou_sous_loue_a_des_tiers_(logement[5]), + t583=parent_ou_autre_to_jsoo(logement[4]), + t582=mode_occupation_to_jsoo(logement[3]), + t581=! ! logement[2], + t580=! ! logement[1]; + return {"residencePrincipale":t580, + "estEhpadOuMaisonAutonomieL31312Asf":t581, + "modeOccupation":t582, + "proprietaire":t583, + "loueOuSousLoueADesTiers":t584, + "usufruit":t585, + "logementDecentL89462":t586, + "surfaceMCarres":t587, + "zone":t588}} + function logement_of_jsoo(logement) + {var + __n_=zone_d_habitation_of_jsoo(logement.zone), + __o_=caml_call1(Runtime_ocaml_Runtime[49],logement.surfaceMCarres), + __p_=logement.logementDecentL89462 | 0, + __q_=parent_ou_autre_of_jsoo(logement.usufruit), + __r_=loue_ou_sous_loue_a_des_tiers_$0(logement.loueOuSousLoueADesTiers), + __s_=parent_ou_autre_of_jsoo(logement.proprietaire), + __t_=mode_occupation_of_jsoo(logement.modeOccupation); + return [0, + logement.residencePrincipale | 0, + logement.estEhpadOuMaisonAutonomieL31312Asf | 0, + __t_, + __s_, + __r_, + __q_, + __p_, + __o_, + __n_]} + function menage_to_jsoo(menage) + {var + t604=! ! menage[7], + t603=! ! menage[6], + t602=situation_familiale_to_jsoo(menage[5]), + t601=caml_call1(Runtime_ocaml_Runtime[48],menage[4]), + __j_=menage[3]; + function __k_(x){return personne_a_charge_to_jsoo(x)} + var + t600=caml_js_from_array(caml_call2(Stdlib_Array[15],__k_,__j_)), + t599=logement_to_jsoo(menage[2]), + __l_=menage[1]; + function __m_(x){return prestation_recue_to_jsoo(x)} + var t598=caml_js_from_array(caml_call2(Stdlib_Array[15],__m_,__l_)); + return {"prestationsRecues":t598, + "logement":t599, + "personnesACharge":t600, + "nombreAutresOccupantsLogement":t601, + "situationFamiliale":t602, + "conditionRattacheFoyerFiscalParentIfi":t603, + "enfantANaitreApresQuatriemeMoisGrossesse":t604}} + function menage_of_jsoo(menage) + {var + _Z$_=menage.enfantANaitreApresQuatriemeMoisGrossesse | 0, + __a_=menage.conditionRattacheFoyerFiscalParentIfi | 0, + __b_=situation_familiale_of_jsoo(menage.situationFamiliale), + __c_= + caml_call1 + (Runtime_ocaml_Runtime[49],menage.nombreAutresOccupantsLogement), + __d_=caml_js_to_array(menage.personnesACharge); + function __e_(x){return personne_a_charge_of_jsoo(x)} + var + __f_=caml_call1(caml_call1(Stdlib_Array[15],__e_),__d_), + __g_=logement_of_jsoo(menage.logement), + __h_=caml_js_to_array(menage.prestationsRecues); + function __i_(x){return prestation_recue_of_jsoo(x)} + return [0, + caml_call1(caml_call1(Stdlib_Array[15],__i_),__h_), + __g_, + __f_, + __c_, + __b_, + __a_, + _Z$_]} + function eligibilite_aides_personnelle_$2(eligibilite_aides_personnelle_) + {function t616(param) + {return caml_js_wrap_meth_callback + (function(input) + {return ! + ! + caml_call1(eligibilite_aides_personnelle_[5],input)})} + function t615(param) + {return caml_js_wrap_meth_callback + (function(input) + {return ! + ! + caml_call1(eligibilite_aides_personnelle_[4],input)})} + var + t614= + caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aides_personnelle_[3]), + t613=demandeur_to_jsoo(eligibilite_aides_personnelle_[2]), + t612=menage_to_jsoo(eligibilite_aides_personnelle_[1]); + return {"menageIn":t612, + "demandeurIn":t613, + "dateCouranteIn":t614, + "conditionLogementResidencePrincipaleIn": + caml_js_wrap_meth_callback(t615), + "conditionLogementSurfaceIn":caml_js_wrap_meth_callback(t616)}} + function eligibilite_aides_personnelle_$3(eligibilite_aides_personnelle_) + {var + _Z7_=caml_call1(Stdlib[2],cst_The_function_condition_log), + _Z8_=caml_call1(Stdlib[2],cst_The_function_condition_log$0), + _Z9_= + caml_call1 + (Runtime_jsoo_Runtime[4], + eligibilite_aides_personnelle_.dateCouranteIn), + _Z__=demandeur_of_jsoo(eligibilite_aides_personnelle_.demandeurIn); + return [0, + menage_of_jsoo(eligibilite_aides_personnelle_.menageIn), + _Z__, + _Z9_, + _Z8_, + _Z7_]} + function eligibilite_aide_personnalisee$2(eligibilite_aide_personnalisee) + {var + t622= + caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aide_personnalisee[3]), + t621=demandeur_to_jsoo(eligibilite_aide_personnalisee[2]), + t620=menage_to_jsoo(eligibilite_aide_personnalisee[1]); + return {"menageIn":t620,"demandeurIn":t621,"dateCouranteIn":t622}} + function eligibilite_aide_personnalisee$3(eligibilite_aide_personnalisee) + {var + _Z5_= + caml_call1 + (Runtime_jsoo_Runtime[4], + eligibilite_aide_personnalisee.dateCouranteIn), + _Z6_=demandeur_of_jsoo(eligibilite_aide_personnalisee.demandeurIn); + return [0, + menage_of_jsoo(eligibilite_aide_personnalisee.menageIn), + _Z6_, + _Z5_]} + function eligibilite_allocation_logemen$2(eligibilite_allocation_logemen) + {var + t629=! ! eligibilite_allocation_logemen[4], + t628=demandeur_to_jsoo(eligibilite_allocation_logemen[3]), + t627=menage_to_jsoo(eligibilite_allocation_logemen[2]), + t626= + caml_call1(Runtime_jsoo_Runtime[5],eligibilite_allocation_logemen[1]); + return {"dateCouranteIn":t626, + "menageIn":t627, + "demandeurIn":t628, + "beneficieAidePersonnaliseeLogementIn":t629}} + function eligibilite_allocation_logemen$3(eligibilite_allocation_logemen) + {var + _Z2_= + eligibilite_allocation_logemen.beneficieAidePersonnaliseeLogementIn + | + 0, + _Z3_=demandeur_of_jsoo(eligibilite_allocation_logemen.demandeurIn), + _Z4_=menage_of_jsoo(eligibilite_allocation_logemen.menageIn); + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + eligibilite_allocation_logemen.dateCouranteIn), + _Z4_, + _Z3_, + _Z2_]} + function eligibilite_prime_de_demenagem$2(eligibilite_prime_de_demenagem) + {var + t639= + caml_call1 + (Runtime_ocaml_Runtime[35],eligibilite_prime_de_demenagem[6]), + t638= + caml_call1(Runtime_jsoo_Runtime[5],eligibilite_prime_de_demenagem[5]), + t637=demandeur_to_jsoo(eligibilite_prime_de_demenagem[4]), + t636=menage_to_jsoo(eligibilite_prime_de_demenagem[3]), + t635= + caml_call1(Runtime_jsoo_Runtime[5],eligibilite_prime_de_demenagem[2]), + t634=informations_prime_de_demenage(eligibilite_prime_de_demenagem[1]); + return {"informationsIn":t634, + "dateEmmenagementIn":t635, + "menageIn":t636, + "demandeurIn":t637, + "dateCouranteIn":t638, + "depensesJustifieesReellementEngageesIn":t639}} + function eligibilite_prime_de_demenagem$3(eligibilite_prime_de_demenagem) + {var + _ZW_= + caml_call1 + (Runtime_ocaml_Runtime[42], + eligibilite_prime_de_demenagem.depensesJustifieesReellementEngageesIn), + _ZX_=caml_call1(Runtime_ocaml_Runtime[33],_ZW_), + _ZY_= + caml_call1 + (Runtime_jsoo_Runtime[4], + eligibilite_prime_de_demenagem.dateCouranteIn), + _ZZ_=demandeur_of_jsoo(eligibilite_prime_de_demenagem.demandeurIn), + _Z0_=menage_of_jsoo(eligibilite_prime_de_demenagem.menageIn), + _Z1_= + caml_call1 + (Runtime_jsoo_Runtime[4], + eligibilite_prime_de_demenagem.dateEmmenagementIn); + return [0, + informations_prime_de_demenage$0 + (eligibilite_prime_de_demenagem.informationsIn), + _Z1_, + _Z0_, + _ZZ_, + _ZY_, + _ZX_]} + function ressources_aides_personnelle_l$2(ressources_aides_personnelle_l) + {var + t658= + caml_call1 + (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[13]), + t657=paiement_logement_distinct_pro(ressources_aides_personnelle_l[12]), + t656= + caml_call1(Runtime_jsoo_Runtime[5],ressources_aides_personnelle_l[11]), + t655=! ! ressources_aides_personnelle_l[10], + t654=! ! ressources_aides_personnelle_l[9], + t653=mode_occupation_to_jsoo(ressources_aides_personnelle_l[8]), + t652=situation_familiale_to_jsoo(ressources_aides_personnelle_l[7]), + _ZS_=ressources_aides_personnelle_l[6]; + function _ZT_(x){return personne_a_charge_to_jsoo(x)} + var + t651=caml_js_from_array(caml_call2(Stdlib_Array[15],_ZT_,_ZS_)), + t650=! ! ressources_aides_personnelle_l[5], + t649=! ! ressources_aides_personnelle_l[4], + _ZU_=ressources_aides_personnelle_l[3]; + function _ZV_(x){return personne_vivant_habituellement(x)} + var + t648=caml_js_from_array(caml_call2(Stdlib_Array[15],_ZV_,_ZU_)), + t647= + caml_call1 + (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[2]), + t646= + caml_call1 + (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[1]); + return {"ressourcesDemandeurIn":t646, + "ressourcesConjointIn":t647, + "personnesVivantHabituellementFoyerIn":t648, + "demandeurExerceActiviteRemunereeIn":t649, + "conjointExerceActiviteRemunereeIn":t650, + "personnesAChargeIn":t651, + "situationFamilialeIn":t652, + "modeOccupationIn":t653, + "conditionAgeBourseEnseignementSuperieurIn":t654, + "demandeurPoursuitDesEtudesIn":t655, + "dateDemandeOuReexamenDroitIn":t656, + "paiementLogementDistinctProfessionnelIn":t657, + "ressourcesMenageArrondiesBaseIn":t658}} + function ressources_aides_personnelle_l$3(ressources_aides_personnelle_l) + {var + _Zz_= + caml_call1 + (Runtime_ocaml_Runtime[42], + ressources_aides_personnelle_l.ressourcesMenageArrondiesBaseIn), + _ZA_=caml_call1(Runtime_ocaml_Runtime[33],_Zz_), + _ZB_= + paiement_logement_distinct_pro$0 + (ressources_aides_personnelle_l.paiementLogementDistinctProfessionnelIn), + _ZC_= + caml_call1 + (Runtime_jsoo_Runtime[4], + ressources_aides_personnelle_l.dateDemandeOuReexamenDroitIn), + _ZD_=ressources_aides_personnelle_l.demandeurPoursuitDesEtudesIn | 0, + _ZE_= + ressources_aides_personnelle_l.conditionAgeBourseEnseignementSuperieurIn + | + 0, + _ZF_= + mode_occupation_of_jsoo + (ressources_aides_personnelle_l.modeOccupationIn), + _ZG_= + situation_familiale_of_jsoo + (ressources_aides_personnelle_l.situationFamilialeIn), + _ZH_= + caml_js_to_array(ressources_aides_personnelle_l.personnesAChargeIn); + function _ZI_(x){return personne_a_charge_of_jsoo(x)} + var + _ZJ_=caml_call1(caml_call1(Stdlib_Array[15],_ZI_),_ZH_), + _ZK_= + ressources_aides_personnelle_l.conjointExerceActiviteRemunereeIn + | + 0, + _ZL_= + ressources_aides_personnelle_l.demandeurExerceActiviteRemunereeIn + | + 0, + _ZM_= + caml_js_to_array + (ressources_aides_personnelle_l.personnesVivantHabituellementFoyerIn); + function _ZN_(x){return personne_vivant_habituellement$0(x)} + var + _ZO_=caml_call1(caml_call1(Stdlib_Array[15],_ZN_),_ZM_), + _ZP_= + caml_call1 + (Runtime_ocaml_Runtime[42], + ressources_aides_personnelle_l.ressourcesConjointIn), + _ZQ_=caml_call1(Runtime_ocaml_Runtime[33],_ZP_), + _ZR_= + caml_call1 + (Runtime_ocaml_Runtime[42], + ressources_aides_personnelle_l.ressourcesDemandeurIn); + return [0, + caml_call1(Runtime_ocaml_Runtime[33],_ZR_), + _ZQ_, + _ZO_, + _ZL_, + _ZK_, + _ZJ_, + _ZG_, + _ZF_, + _ZE_, + _ZD_, + _ZC_, + _ZB_, + _ZA_]} + function contributions_sociales_aides_p$2(contributions_sociales_aides_p) + {var + t672= + caml_call1(Runtime_jsoo_Runtime[5],contributions_sociales_aides_p[1]); + return {"dateCouranteIn":t672}} + function contributions_sociales_aides_p$3(contributions_sociales_aides_p) + {return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + contributions_sociales_aides_p.dateCouranteIn)]} + function calcul_aide_personnalisee_loge$11(calcul_aide_personnalisee_loge) + {var + t686=! ! calcul_aide_personnalisee_loge[13], + t685= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[12]), + t684=! ! calcul_aide_personnalisee_loge[11], + t683=type_aides_personnelle_logemen(calcul_aide_personnalisee_loge[10]), + t682=! ! calcul_aide_personnalisee_loge[9], + t681=! ! calcul_aide_personnalisee_loge[8], + t680=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[7]), + t679=situation_familiale_calcul_a_p(calcul_aide_personnalisee_loge[6]), + t678= + caml_call1 + (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[5]), + t677= + caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[4]), + t676=! ! calcul_aide_personnalisee_loge[3], + t675= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), + t674= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); + return {"loyerPrincipalBaseIn":t674, + "ressourcesMenageArrondiesIn":t675, + "beneficiaireAideAdulteOuEnfantHandicapesIn":t676, + "dateCouranteIn":t677, + "nombrePersonnesAChargeIn":t678, + "situationFamilialeCalculAplIn":t679, + "zoneIn":t680, + "logementEstChambreIn":t681, + "ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn":t682, + "typeAideIn":t683, + "colocationIn":t684, + "reductionLoyerSolidariteIn":t685, + "logementMeubleD8422In":t686}} + function calcul_aide_personnalisee_loge$12(calcul_aide_personnalisee_loge) + {var + _Zk_=calcul_aide_personnalisee_loge.logementMeubleD8422In | 0, + _Zl_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.reductionLoyerSolidariteIn), + _Zm_=caml_call1(Runtime_ocaml_Runtime[33],_Zl_), + _Zn_=calcul_aide_personnalisee_loge.colocationIn | 0, + _Zo_= + type_aides_personnelle_logemen$0 + (calcul_aide_personnalisee_loge.typeAideIn), + _Zp_= + calcul_aide_personnalisee_loge.ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn + | + 0, + _Zq_=calcul_aide_personnalisee_loge.logementEstChambreIn | 0, + _Zr_=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn), + _Zs_= + situation_familiale_calcul_a_p$0 + (calcul_aide_personnalisee_loge.situationFamilialeCalculAplIn), + _Zt_= + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn), + _Zu_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_aide_personnalisee_loge.dateCouranteIn), + _Zv_= + calcul_aide_personnalisee_loge.beneficiaireAideAdulteOuEnfantHandicapesIn + | + 0, + _Zw_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.ressourcesMenageArrondiesIn), + _Zx_=caml_call1(Runtime_ocaml_Runtime[33],_Zw_), + _Zy_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.loyerPrincipalBaseIn); + return [0, + caml_call1(Runtime_ocaml_Runtime[33],_Zy_), + _Zx_, + _Zv_, + _Zu_, + _Zt_, + _Zs_, + _Zr_, + _Zq_, + _Zp_, + _Zo_, + _Zn_, + _Zm_, + _Zk_]} + function calcul_equivalence_loyer_minim$2(calcul_equivalence_loyer_minim) + {var + t702= + caml_call1 + (Runtime_ocaml_Runtime[43],calcul_equivalence_loyer_minim[3]), + t701=! ! calcul_equivalence_loyer_minim[2], + t700= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_equivalence_loyer_minim[1]); + return {"ressourcesMenageArrondiesIn":t700, + "condition2Du83225In":t701, + "nNombrePartsD83225In":t702}} + function calcul_equivalence_loyer_minim$3(calcul_equivalence_loyer_minim) + {var + _Zh_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_equivalence_loyer_minim.nNombrePartsD83225In), + _Zi_=calcul_equivalence_loyer_minim.condition2Du83225In | 0, + _Zj_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_equivalence_loyer_minim.ressourcesMenageArrondiesIn); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_Zj_),_Zi_,_Zh_]} + function calcul_nombre_part_logement_fo$2(calcul_nombre_part_logement_fo) + {var + t708=situation_familiale_calcul_a_p(calcul_nombre_part_logement_fo[3]), + t707= + caml_call1 + (Runtime_ocaml_Runtime[48],calcul_nombre_part_logement_fo[2]), + t706=! ! calcul_nombre_part_logement_fo[1]; + return {"condition2Du83225In":t706, + "nombrePersonnesAChargeIn":t707, + "situationFamilialeCalculAplIn":t708}} + function calcul_nombre_part_logement_fo$3(calcul_nombre_part_logement_fo) + {var + _Zf_= + situation_familiale_calcul_a_p$0 + (calcul_nombre_part_logement_fo.situationFamilialeCalculAplIn), + _Zg_= + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_nombre_part_logement_fo.nombrePersonnesAChargeIn); + return [0, + calcul_nombre_part_logement_fo.condition2Du83225In | 0, + _Zg_, + _Zf_]} + function calcul_aide_personnalisee_loge$13(calcul_aide_personnalisee_loge) + {function t721(param) + {return caml_js_wrap_meth_callback + (function(input) + {var + _Ze_= + caml_call1(calcul_aide_personnalisee_loge[10],input); + return caml_call1(Runtime_ocaml_Runtime[43],_Ze_)})} + function t720(param) + {return caml_js_wrap_meth_callback + (function(input) + {return ! + ! + caml_call1(calcul_aide_personnalisee_loge[9],input)})} + var + t719= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[8]), + t718= + caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[7]), + t717=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[6]), + t716=situation_familiale_calcul_a_p(calcul_aide_personnalisee_loge[5]), + t715= + caml_call1 + (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[4]), + t714= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[3]), + t713= + caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[2]), + t712=type_logement_foyer_to_jsoo(calcul_aide_personnalisee_loge[1]); + return {"typeLogementFoyerIn":t712, + "dateConventionnementIn":t713, + "ressourcesMenageArrondiesIn":t714, + "nombrePersonnesAChargeIn":t715, + "situationFamilialeCalculAplIn":t716, + "zoneIn":t717, + "dateCouranteIn":t718, + "redevanceIn":t719, + "condition2Du83225In":caml_js_wrap_meth_callback(t720), + "nNombrePartsD83225In":caml_js_wrap_meth_callback(t721)}} + function calcul_aide_personnalisee_loge$14(calcul_aide_personnalisee_loge) + {var + _Y5_=caml_call1(Stdlib[2],cst_The_function_n_nombre_part), + _Y6_=caml_call1(Stdlib[2],cst_The_function_condition_2_d), + _Y7_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.redevanceIn), + _Y8_=caml_call1(Runtime_ocaml_Runtime[33],_Y7_), + _Y9_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_aide_personnalisee_loge.dateCouranteIn), + _Y__=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn), + _Y$_= + situation_familiale_calcul_a_p$0 + (calcul_aide_personnalisee_loge.situationFamilialeCalculAplIn), + _Za_= + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn), + _Zb_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.ressourcesMenageArrondiesIn), + _Zc_=caml_call1(Runtime_ocaml_Runtime[33],_Zb_), + _Zd_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_aide_personnalisee_loge.dateConventionnementIn); + return [0, + type_logement_foyer_of_jsoo + (calcul_aide_personnalisee_loge.typeLogementFoyerIn), + _Zd_, + _Zc_, + _Za_, + _Y$_, + _Y__, + _Y9_, + _Y8_, + _Y6_, + _Y5_]} + function calcul_nombre_parts_accession_$2(calcul_nombre_parts_accession_) + {var + t731=situation_familiale_calcul_a_p(calcul_nombre_parts_accession_[2]), + t730= + caml_call1 + (Runtime_ocaml_Runtime[48],calcul_nombre_parts_accession_[1]); + return {"nombrePersonnesAChargeIn":t730, + "situationFamilialeCalculAplIn":t731}} + function calcul_nombre_parts_accession_$3(calcul_nombre_parts_accession_) + {var + _Y4_= + situation_familiale_calcul_a_p$0 + (calcul_nombre_parts_accession_.situationFamilialeCalculAplIn); + return [0, + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_nombre_parts_accession_.nombrePersonnesAChargeIn), + _Y4_]} + function calcul_aide_personnalisee_loge$15(calcul_aide_personnalisee_loge) + {var + t747= + caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[14]), + t746=neuf_ou_ancien_to_jsoo(calcul_aide_personnalisee_loge[13]), + t745=type_pret_to_jsoo(calcul_aide_personnalisee_loge[12]), + t744=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[11]), + t743=! ! calcul_aide_personnalisee_loge[10], + t742=! ! calcul_aide_personnalisee_loge[9], + t741= + caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[8]), + t740=! ! calcul_aide_personnalisee_loge[7], + t739= + caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[6]), + t738=type_travaux_logement_d832_15_(calcul_aide_personnalisee_loge[5]), + t737=situation_familiale_calcul_a_p(calcul_aide_personnalisee_loge[4]), + t736= + caml_call1 + (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[3]), + t735= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), + t734= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); + return {"mensualitePrincipaleIn":t734, + "ressourcesMenageArrondiesIn":t735, + "nombrePersonnesAChargeIn":t736, + "situationFamilialeCalculAplIn":t737, + "typeTravauxLogementIn":t738, + "dateSignaturePretIn":t739, + "localHabitePremiereFoisBeneficiaireIn":t740, + "dateEntreeLogementIn":t741, + "coproprieteIn":t742, + "situationR822111317In":t743, + "zoneIn":t744, + "typePretIn":t745, + "ancienneteLogementIn":t746, + "dateCouranteIn":t747}} + function calcul_aide_personnalisee_loge$16(calcul_aide_personnalisee_loge) + {var + _YP_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_aide_personnalisee_loge.dateCouranteIn), + _YQ_= + neuf_ou_ancien_of_jsoo + (calcul_aide_personnalisee_loge.ancienneteLogementIn), + _YR_=type_pret_of_jsoo(calcul_aide_personnalisee_loge.typePretIn), + _YS_=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn), + _YT_=calcul_aide_personnalisee_loge.situationR822111317In | 0, + _YU_=calcul_aide_personnalisee_loge.coproprieteIn | 0, + _YV_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_aide_personnalisee_loge.dateEntreeLogementIn), + _YW_= + calcul_aide_personnalisee_loge.localHabitePremiereFoisBeneficiaireIn + | + 0, + _YX_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_aide_personnalisee_loge.dateSignaturePretIn), + _YY_= + type_travaux_logement_d832_15_$0 + (calcul_aide_personnalisee_loge.typeTravauxLogementIn), + _YZ_= + situation_familiale_calcul_a_p$0 + (calcul_aide_personnalisee_loge.situationFamilialeCalculAplIn), + _Y0_= + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn), + _Y1_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.ressourcesMenageArrondiesIn), + _Y2_=caml_call1(Runtime_ocaml_Runtime[33],_Y1_), + _Y3_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.mensualitePrincipaleIn); + return [0, + caml_call1(Runtime_ocaml_Runtime[33],_Y3_), + _Y2_, + _Y0_, + _YZ_, + _YY_, + _YX_, + _YW_, + _YV_, + _YU_, + _YT_, + _YS_, + _YR_, + _YQ_, + _YP_]} + function calcul_aide_personnalisee_loge$17(calcul_aide_personnalisee_loge) + {var + t768= + caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[7]), + t767=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[6]), + t766= + caml_call1 + (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[5]), + t765=situation_familiale_to_jsoo(calcul_aide_personnalisee_loge[4]), + t764= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[3]), + t763=type_aides_personnelle_logemen(calcul_aide_personnalisee_loge[2]), + t762=mode_occupation_to_jsoo(calcul_aide_personnalisee_loge[1]); + return {"modeOccupationIn":t762, + "typeAideIn":t763, + "ressourcesMenageSansArrondiIn":t764, + "situationFamilialeIn":t765, + "nombrePersonnesAChargeIn":t766, + "zoneIn":t767, + "dateCouranteIn":t768}} + function calcul_aide_personnalisee_loge$18(calcul_aide_personnalisee_loge) + {var + _YI_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_aide_personnalisee_loge.dateCouranteIn), + _YJ_=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn), + _YK_= + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn), + _YL_= + situation_familiale_of_jsoo + (calcul_aide_personnalisee_loge.situationFamilialeIn), + _YM_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.ressourcesMenageSansArrondiIn), + _YN_=caml_call1(Runtime_ocaml_Runtime[33],_YM_), + _YO_= + type_aides_personnelle_logemen$0 + (calcul_aide_personnalisee_loge.typeAideIn); + return [0, + mode_occupation_of_jsoo + (calcul_aide_personnalisee_loge.modeOccupationIn), + _YO_, + _YN_, + _YL_, + _YK_, + _YJ_, + _YI_]} + function calcul_allocation_logement_loc$2(calcul_allocation_logement_loc) + {var + t789=changement_logement_d842_4_to_(calcul_allocation_logement_loc[14]), + t788=! ! calcul_allocation_logement_loc[13], + t787= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[12]), + t786=! ! calcul_allocation_logement_loc[11], + t785=type_aides_personnelle_logemen(calcul_allocation_logement_loc[10]), + t784=! ! calcul_allocation_logement_loc[9], + t783=! ! calcul_allocation_logement_loc[8], + t782=zone_d_habitation_to_jsoo(calcul_allocation_logement_loc[7]), + t781=situation_familiale_calcul_a_p(calcul_allocation_logement_loc[6]), + t780= + caml_call1 + (Runtime_ocaml_Runtime[48],calcul_allocation_logement_loc[5]), + t779= + caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_loc[4]), + t778=! ! calcul_allocation_logement_loc[3], + t777= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[2]), + t776= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[1]); + return {"loyerPrincipalIn":t776, + "ressourcesMenageArrondiesIn":t777, + "beneficiaireAideAdulteOuEnfantHandicapesIn":t778, + "dateCouranteIn":t779, + "nombrePersonnesAChargeIn":t780, + "situationFamilialeCalculAplIn":t781, + "zoneIn":t782, + "logementEstChambreIn":t783, + "ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn":t784, + "typeAideIn":t785, + "colocationIn":t786, + "reductionLoyerSolidariteIn":t787, + "logementMeubleD8422In":t788, + "changementLogementD8424In":t789}} + function calcul_allocation_logement_loc$3(calcul_allocation_logement_loc) + {var + _Ys_= + changement_logement_d842_4_of_ + (calcul_allocation_logement_loc.changementLogementD8424In), + _Yt_=calcul_allocation_logement_loc.logementMeubleD8422In | 0, + _Yu_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_loc.reductionLoyerSolidariteIn), + _Yv_=caml_call1(Runtime_ocaml_Runtime[33],_Yu_), + _Yw_=calcul_allocation_logement_loc.colocationIn | 0, + _Yx_= + type_aides_personnelle_logemen$0 + (calcul_allocation_logement_loc.typeAideIn), + _Yy_= + calcul_allocation_logement_loc.ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn + | + 0, + _Yz_=calcul_allocation_logement_loc.logementEstChambreIn | 0, + _YA_=zone_d_habitation_of_jsoo(calcul_allocation_logement_loc.zoneIn), + _YB_= + situation_familiale_calcul_a_p$0 + (calcul_allocation_logement_loc.situationFamilialeCalculAplIn), + _YC_= + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_allocation_logement_loc.nombrePersonnesAChargeIn), + _YD_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_allocation_logement_loc.dateCouranteIn), + _YE_= + calcul_allocation_logement_loc.beneficiaireAideAdulteOuEnfantHandicapesIn + | + 0, + _YF_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_loc.ressourcesMenageArrondiesIn), + _YG_=caml_call1(Runtime_ocaml_Runtime[33],_YF_), + _YH_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_loc.loyerPrincipalIn); + return [0, + caml_call1(Runtime_ocaml_Runtime[33],_YH_), + _YG_, + _YE_, + _YD_, + _YC_, + _YB_, + _YA_, + _Yz_, + _Yy_, + _Yx_, + _Yw_, + _Yv_, + _Yt_, + _Ys_]} + function calcul_allocation_logement_acc$2(calcul_allocation_logement_acc) + {var + t816=! ! calcul_allocation_logement_acc[13], + t815= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[12]), + t814= + caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_acc[11]), + t813=! ! calcul_allocation_logement_acc[10], + t812=type_travaux_logement_r842_5_t(calcul_allocation_logement_acc[9]), + t811= + caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_acc[8]), + t810=! ! calcul_allocation_logement_acc[7], + t809= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[6]), + t808= + caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_acc[5]), + t807=zone_d_habitation_to_jsoo(calcul_allocation_logement_acc[4]), + t806=situation_familiale_calcul_a_p(calcul_allocation_logement_acc[3]), + t805= + caml_call1 + (Runtime_ocaml_Runtime[48],calcul_allocation_logement_acc[2]), + t804= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[1]); + return {"ressourcesMenageArrondiesBaseIn":t804, + "nombrePersonnesAChargeIn":t805, + "situationFamilialeCalculAplIn":t806, + "zoneIn":t807, + "dateCouranteIn":t808, + "mensualitePrincipaleIn":t809, + "situationR822111317In":t810, + "dateSignaturePretIn":t811, + "typeTravauxLogementIn":t812, + "localHabitePremiereFoisBeneficiaireIn":t813, + "dateEntreeLogementIn":t814, + "chargesMensuellesPretIn":t815, + "coproprieteIn":t816}} + function calcul_allocation_logement_acc$3(calcul_allocation_logement_acc) + {var + _Yd_=calcul_allocation_logement_acc.coproprieteIn | 0, + _Ye_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_acc.chargesMensuellesPretIn), + _Yf_=caml_call1(Runtime_ocaml_Runtime[33],_Ye_), + _Yg_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_allocation_logement_acc.dateEntreeLogementIn), + _Yh_= + calcul_allocation_logement_acc.localHabitePremiereFoisBeneficiaireIn + | + 0, + _Yi_= + type_travaux_logement_r842_5_o + (calcul_allocation_logement_acc.typeTravauxLogementIn), + _Yj_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_allocation_logement_acc.dateSignaturePretIn), + _Yk_=calcul_allocation_logement_acc.situationR822111317In | 0, + _Yl_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_acc.mensualitePrincipaleIn), + _Ym_=caml_call1(Runtime_ocaml_Runtime[33],_Yl_), + _Yn_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_allocation_logement_acc.dateCouranteIn), + _Yo_=zone_d_habitation_of_jsoo(calcul_allocation_logement_acc.zoneIn), + _Yp_= + situation_familiale_calcul_a_p$0 + (calcul_allocation_logement_acc.situationFamilialeCalculAplIn), + _Yq_= + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_allocation_logement_acc.nombrePersonnesAChargeIn), + _Yr_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_acc.ressourcesMenageArrondiesBaseIn); + return [0, + caml_call1(Runtime_ocaml_Runtime[33],_Yr_), + _Yq_, + _Yp_, + _Yo_, + _Yn_, + _Ym_, + _Yk_, + _Yj_, + _Yi_, + _Yh_, + _Yg_, + _Yf_, + _Yd_]} + function calcul_allocation_logement_foy$2(calcul_allocation_logement_foy) + {var + t838=categorie_equivalence_loyer_al(calcul_allocation_logement_foy[9]), + t837= + caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_foy[8]), + t836=zone_d_habitation_to_jsoo(calcul_allocation_logement_foy[7]), + t835=situation_familiale_calcul_a_p(calcul_allocation_logement_foy[6]), + t834= + caml_call1 + (Runtime_ocaml_Runtime[48],calcul_allocation_logement_foy[5]), + t833= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[4]), + t832= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[3]), + t831= + caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_foy[2]), + t830=type_logement_foyer_to_jsoo(calcul_allocation_logement_foy[1]); + return {"typeLogementFoyerIn":t830, + "dateConventionnementIn":t831, + "redevanceIn":t832, + "ressourcesMenageArrondiesIn":t833, + "nombrePersonnesAChargeIn":t834, + "situationFamilialeCalculAplIn":t835, + "zoneIn":t836, + "dateCouranteIn":t837, + "categorieEquivalenceLoyerD84216In":t838}} + function calcul_allocation_logement_foy$3(calcul_allocation_logement_foy) + {var + _X5_= + categorie_equivalence_loyer_al$0 + (calcul_allocation_logement_foy.categorieEquivalenceLoyerD84216In), + _X6_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_allocation_logement_foy.dateCouranteIn), + _X7_=zone_d_habitation_of_jsoo(calcul_allocation_logement_foy.zoneIn), + _X8_= + situation_familiale_calcul_a_p$0 + (calcul_allocation_logement_foy.situationFamilialeCalculAplIn), + _X9_= + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_allocation_logement_foy.nombrePersonnesAChargeIn), + _X__= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_foy.ressourcesMenageArrondiesIn), + _X$_=caml_call1(Runtime_ocaml_Runtime[33],_X__), + _Ya_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_foy.redevanceIn), + _Yb_=caml_call1(Runtime_ocaml_Runtime[33],_Ya_), + _Yc_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_allocation_logement_foy.dateConventionnementIn); + return [0, + type_logement_foyer_of_jsoo + (calcul_allocation_logement_foy.typeLogementFoyerIn), + _Yc_, + _Yb_, + _X$_, + _X9_, + _X8_, + _X7_, + _X6_, + _X5_]} + function calcul_allocation_logement_in_(calcul_allocation_logement_in) + {var + t854=type_aides_personnelle_logemen(calcul_allocation_logement_in[7]), + t853= + caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_in[6]), + t852=zone_d_habitation_to_jsoo(calcul_allocation_logement_in[5]), + t851= + caml_call1(Runtime_ocaml_Runtime[48],calcul_allocation_logement_in[4]), + t850=situation_familiale_to_jsoo(calcul_allocation_logement_in[3]), + t849= + caml_call1(Runtime_ocaml_Runtime[35],calcul_allocation_logement_in[2]), + t848=mode_occupation_to_jsoo(calcul_allocation_logement_in[1]); + return {"modeOccupationIn":t848, + "ressourcesMenageSansArrondiIn":t849, + "situationFamilialeIn":t850, + "nombrePersonnesAChargeIn":t851, + "zoneIn":t852, + "dateCouranteIn":t853, + "typeAideIn":t854}} + function calcul_allocation_logement_in_$0(calcul_allocation_logement_in) + {var + _XY_= + type_aides_personnelle_logemen$0 + (calcul_allocation_logement_in.typeAideIn), + _XZ_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_allocation_logement_in.dateCouranteIn), + _X0_=zone_d_habitation_of_jsoo(calcul_allocation_logement_in.zoneIn), + _X1_= + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_allocation_logement_in.nombrePersonnesAChargeIn), + _X2_= + situation_familiale_of_jsoo + (calcul_allocation_logement_in.situationFamilialeIn), + _X3_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_in.ressourcesMenageSansArrondiIn), + _X4_=caml_call1(Runtime_ocaml_Runtime[33],_X3_); + return [0, + mode_occupation_of_jsoo + (calcul_allocation_logement_in.modeOccupationIn), + _X4_, + _X2_, + _X1_, + _X0_, + _XZ_, + _XY_]} + function ouverture_droits_retraite_in_t(ouverture_droits_retraite_in) + {var + t862= + caml_call1(Runtime_jsoo_Runtime[5],ouverture_droits_retraite_in[1]); + return {"dateNaissanceAssureIn":t862}} + function ouverture_droits_retraite_in_o(ouverture_droits_retraite_in) + {return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + ouverture_droits_retraite_in.dateNaissanceAssureIn)]} + function impaye_depense_logement_in_to_(impaye_depense_logement_in) + {var + t869= + caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement_in[6]), + t868=depense_logement_to_jsoo(impaye_depense_logement_in[5]), + t867= + caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement_in[4]), + t866= + caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement_in[3]), + t865=versement_a_to_jsoo(impaye_depense_logement_in[2]), + t864=mode_occupation_to_jsoo(impaye_depense_logement_in[1]); + return {"modeOccupationIn":t864, + "aideVerseeIn":t865, + "montantAplIn":t866, + "montantChargesIn":t867, + "depenseLogementIn":t868, + "montantDetteIn":t869}} + function impaye_depense_logement_in_of_(impaye_depense_logement_in) + {var + _XQ_= + caml_call1 + (Runtime_ocaml_Runtime[42],impaye_depense_logement_in.montantDetteIn), + _XR_=caml_call1(Runtime_ocaml_Runtime[33],_XQ_), + _XS_= + depense_logement_of_jsoo(impaye_depense_logement_in.depenseLogementIn), + _XT_= + caml_call1 + (Runtime_ocaml_Runtime[42], + impaye_depense_logement_in.montantChargesIn), + _XU_=caml_call1(Runtime_ocaml_Runtime[33],_XT_), + _XV_= + caml_call1 + (Runtime_ocaml_Runtime[42],impaye_depense_logement_in.montantAplIn), + _XW_=caml_call1(Runtime_ocaml_Runtime[33],_XV_), + _XX_=versement_a_of_jsoo(impaye_depense_logement_in.aideVerseeIn); + return [0, + mode_occupation_of_jsoo + (impaye_depense_logement_in.modeOccupationIn), + _XX_, + _XW_, + _XU_, + _XS_, + _XR_]} + function calculette_aides_au_logement_i(calculette_aides_au_logement_i) + {var + t879= + caml_call1 + (Runtime_ocaml_Runtime[35],calculette_aides_au_logement_i[4]), + t878= + caml_call1(Runtime_jsoo_Runtime[5],calculette_aides_au_logement_i[3]), + t877=demandeur_to_jsoo(calculette_aides_au_logement_i[2]), + t876=menage_to_jsoo(calculette_aides_au_logement_i[1]); + return {"menageIn":t876, + "demandeurIn":t877, + "dateCouranteIn":t878, + "ressourcesMenagePrisesEnCompteIn":t879}} + function calculette_aides_au_logement_i$0(calculette_aides_au_logement_i) + {var + _XM_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calculette_aides_au_logement_i.ressourcesMenagePrisesEnCompteIn), + _XN_=caml_call1(Runtime_ocaml_Runtime[33],_XM_), + _XO_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calculette_aides_au_logement_i.dateCouranteIn), + _XP_=demandeur_of_jsoo(calculette_aides_au_logement_i.demandeurIn); + return [0, + menage_of_jsoo(calculette_aides_au_logement_i.menageIn), + _XP_, + _XO_, + _XN_]} + function calculette_aides_au_logement_g$2(calculette_aides_au_logement_g) + {var + t887= + caml_call1 + (Runtime_ocaml_Runtime[35],calculette_aides_au_logement_g[4]), + t886= + caml_call1(Runtime_jsoo_Runtime[5],calculette_aides_au_logement_g[3]), + t885=demandeur_to_jsoo(calculette_aides_au_logement_g[2]), + t884=menage_to_jsoo(calculette_aides_au_logement_g[1]); + return {"menageIn":t884, + "demandeurIn":t885, + "dateCouranteIn":t886, + "ressourcesMenagePrisesEnCompteIn":t887}} + function calculette_aides_au_logement_g$3(calculette_aides_au_logement_g) + {var + _XI_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calculette_aides_au_logement_g.ressourcesMenagePrisesEnCompteIn), + _XJ_=caml_call1(Runtime_ocaml_Runtime[33],_XI_), + _XK_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calculette_aides_au_logement_g.dateCouranteIn), + _XL_=demandeur_of_jsoo(calculette_aides_au_logement_g.demandeurIn); + return [0, + menage_of_jsoo(calculette_aides_au_logement_g.menageIn), + _XL_, + _XK_, + _XJ_]} + function base_mensuelle_allocations_fam$8(base_mensuelle_allocations_fam) + {var + t892= + caml_call1(Runtime_jsoo_Runtime[5],base_mensuelle_allocations_fam[1]); + return {"dateCouranteIn":t892}} + function base_mensuelle_allocations_fam$9(base_mensuelle_allocations_fam) + {return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + base_mensuelle_allocations_fam.dateCouranteIn)]} + function smic_in_to_jsoo$0(smic_in) + {var + t895=collectivite_to_jsoo$0(smic_in[2]), + t894=caml_call1(Runtime_jsoo_Runtime[5],smic_in[1]); + return {"dateCouranteIn":t894,"residenceIn":t895}} + function smic_in_of_jsoo$0(smic_in) + {var _XH_=collectivite_of_jsoo$0(smic_in.residenceIn); + return [0, + caml_call1(Runtime_jsoo_Runtime[4],smic_in.dateCouranteIn), + _XH_]} + function eligibilite_prestations_famili$2(eligibilite_prestations_famili) + {var + t900=collectivite_to_jsoo$0(eligibilite_prestations_famili[3]), + t899= + element_prestations_familiales$1(eligibilite_prestations_famili[2]), + t898= + caml_call1(Runtime_jsoo_Runtime[5],eligibilite_prestations_famili[1]); + return {"dateCouranteIn":t898, + "prestationCouranteIn":t899, + "residenceIn":t900}} + function eligibilite_prestations_famili$3(eligibilite_prestations_famili) + {var + _XF_=collectivite_of_jsoo$0(eligibilite_prestations_famili.residenceIn), + _XG_= + element_prestations_familiales$2 + (eligibilite_prestations_famili.prestationCouranteIn); + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + eligibilite_prestations_famili.dateCouranteIn), + _XG_, + _XF_]} + function contributions_sociales_aides_p$4 + (contributions_sociales_aides_p$1) + {return contributions_sociales_aides_p$0 + (contributions_sociales_aides_p + (contributions_sociales_aides_p$3 + (contributions_sociales_aides_p$1)))} + function calcul_equivalence_loyer_minim$4 + (calcul_equivalence_loyer_minim$1) + {return calcul_equivalence_loyer_minim$0 + (calcul_equivalence_loyer_minim + (calcul_equivalence_loyer_minim$3 + (calcul_equivalence_loyer_minim$1)))} + function calcul_nombre_part_logement_fo$4 + (calcul_nombre_part_logement_fo$1) + {return calcul_nombre_part_logement_fo$0 + (calcul_nombre_part_logement_fo + (calcul_nombre_part_logement_fo$3 + (calcul_nombre_part_logement_fo$1)))} + function calcul_nombre_parts_accession_$4 + (calcul_nombre_parts_accession_$1) + {return calcul_nombre_parts_accession_$0 + (calcul_nombre_parts_accession_ + (calcul_nombre_parts_accession_$3 + (calcul_nombre_parts_accession_$1)))} + function ouverture_droits_retraite$0(ouverture_droits_retraite_in) + {return ouverture_droits_retraite_to_j + (ouverture_droits_retraite + (ouverture_droits_retraite_in_o(ouverture_droits_retraite_in)))} + function impaye_depense_logement$0(impaye_depense_logement_in) + {return impaye_depense_logement_to_jso + (impaye_depense_logement + (impaye_depense_logement_in_of_(impaye_depense_logement_in)))} + function base_mensuelle_allocations_fam$10(base_mensuelle_allocations_fam) + {return base_mensuelle_allocations_fam$6 + (base_mensuelle_allocations_fam$5 + (base_mensuelle_allocations_fam$9 + (base_mensuelle_allocations_fam)))} + function smic$2(smic_in) + {return smic_to_jsoo$0(smic$1(smic_in_of_jsoo$0(smic_in)))} + function calcul_aide_personnalisee_loge$19 + (calcul_aide_personnalisee_loge$0) + {return calcul_aide_personnalisee_loge$3 + (calcul_aide_personnalisee_loge + (calcul_aide_personnalisee_loge$12 + (calcul_aide_personnalisee_loge$0)))} + function calcul_aide_personnalisee_loge$20(calcul_aide_personnalisee_loge) + {return calcul_aide_personnalisee_loge$5 + (calcul_aide_personnalisee_loge$0 + (calcul_aide_personnalisee_loge$14 + (calcul_aide_personnalisee_loge)))} + function calcul_aide_personnalisee_loge$21(calcul_aide_personnalisee_loge) + {return calcul_aide_personnalisee_loge$7 + (calcul_aide_personnalisee_loge$1 + (calcul_aide_personnalisee_loge$16 + (calcul_aide_personnalisee_loge)))} + function eligibilite_aides_personnelle_$4 + (eligibilite_aides_personnelle_$1) + {return eligibilite_aides_personnelle_$0 + (eligibilite_aides_personnelle_ + (eligibilite_aides_personnelle_$3 + (eligibilite_aides_personnelle_$1)))} + function ressources_aides_personnelle_l$4 + (ressources_aides_personnelle_l$1) + {return ressources_aides_personnelle_l$0 + (ressources_aides_personnelle_l + (ressources_aides_personnelle_l$3 + (ressources_aides_personnelle_l$1)))} + function eligibilite_prestations_famili$4 + (eligibilite_prestations_famili$1) + {return eligibilite_prestations_famili$0 + (eligibilite_prestations_famili + (eligibilite_prestations_famili$3 + (eligibilite_prestations_famili$1)))} + function calcul_allocation_logement_loc$4 + (calcul_allocation_logement_loc$1) + {return calcul_allocation_logement_loc$0 + (calcul_allocation_logement_loc + (calcul_allocation_logement_loc$3 + (calcul_allocation_logement_loc$1)))} + function calcul_allocation_logement_foy$4 + (calcul_allocation_logement_foy$1) + {return calcul_allocation_logement_foy$0 + (calcul_allocation_logement_foy + (calcul_allocation_logement_foy$3 + (calcul_allocation_logement_foy$1)))} + function calcul_allocation_logement_acc$4 + (calcul_allocation_logement_acc$1) + {return calcul_allocation_logement_acc$0 + (calcul_allocation_logement_acc + (calcul_allocation_logement_acc$3 + (calcul_allocation_logement_acc$1)))} + function calcul_aide_personnalisee_loge$22(calcul_aide_personnalisee_loge) + {return calcul_aide_personnalisee_loge$9 + (calcul_aide_personnalisee_loge$2 + (calcul_aide_personnalisee_loge$18 + (calcul_aide_personnalisee_loge)))} + function eligibilite_prime_de_demenagem$4 + (eligibilite_prime_de_demenagem$1) + {return eligibilite_prime_de_demenagem$0 + (eligibilite_prime_de_demenagem + (eligibilite_prime_de_demenagem$3 + (eligibilite_prime_de_demenagem$1)))} + function eligibilite_aide_personnalisee$4 + (eligibilite_aide_personnalisee$1) + {return eligibilite_aide_personnalisee$0 + (eligibilite_aide_personnalisee + (eligibilite_aide_personnalisee$3 + (eligibilite_aide_personnalisee$1)))} + function eligibilite_allocation_logemen$4 + (eligibilite_allocation_logemen$1) + {return eligibilite_allocation_logemen$0 + (eligibilite_allocation_logemen + (eligibilite_allocation_logemen$3 + (eligibilite_allocation_logemen$1)))} + function calcul_allocation_logement$0(calcul_allocation_logement_in) + {return calcul_allocation_logement_to_ + (calcul_allocation_logement + (calcul_allocation_logement_in_$0 + (calcul_allocation_logement_in)))} + function calculette_aides_au_logement$0(calculette_aides_au_logement_i) + {return calculette_aides_au_logement_t + (calculette_aides_au_logement + (calculette_aides_au_logement_i$0 + (calculette_aides_au_logement_i)))} + function calculette_aides_au_logement_g$4 + (calculette_aides_au_logement_g$1) + {return calculette_aides_au_logement_g$0 + (calculette_aides_au_logement_g + (calculette_aides_au_logement_g$3 + (calculette_aides_au_logement_g$1)))} + function t927(param) + {return caml_js_wrap_callback(calculette_aides_au_logement_g$4)} + function t926(param) + {return caml_js_wrap_callback(calculette_aides_au_logement$0)} + function t925(param) + {return caml_js_wrap_callback(calcul_allocation_logement$0)} + function t924(param) + {return caml_js_wrap_callback(eligibilite_allocation_logemen$4)} + function t923(param) + {return caml_js_wrap_callback(eligibilite_aide_personnalisee$4)} + function t922(param) + {return caml_js_wrap_callback(eligibilite_prime_de_demenagem$4)} + function t921(param) + {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$22)} + function t920(param) + {return caml_js_wrap_callback(calcul_allocation_logement_acc$4)} + function t919(param) + {return caml_js_wrap_callback(calcul_allocation_logement_foy$4)} + function t918(param) + {return caml_js_wrap_callback(calcul_allocation_logement_loc$4)} + function t917(param) + {return caml_js_wrap_callback(eligibilite_prestations_famili$4)} + function t916(param) + {return caml_js_wrap_callback(ressources_aides_personnelle_l$4)} + function t915(param) + {return caml_js_wrap_callback(eligibilite_aides_personnelle_$4)} + function t914(param) + {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$21)} + function t913(param) + {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$20)} + function t912(param) + {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$19)} + function t911(param){return caml_js_wrap_callback(smic$2)} + function t910(param) + {return caml_js_wrap_callback(base_mensuelle_allocations_fam$10)} + function t909(param) + {return caml_js_wrap_callback(impaye_depense_logement$0)} + function t908(param) + {return caml_js_wrap_callback(ouverture_droits_retraite$0)} + function t907(param) + {return caml_js_wrap_callback(calcul_nombre_parts_accession_$4)} + function t906(param) + {return caml_js_wrap_callback(calcul_nombre_part_logement_fo$4)} + function t905(param) + {return caml_js_wrap_callback(calcul_equivalence_loyer_minim$4)} + function t904(param) + {return caml_js_wrap_callback(contributions_sociales_aides_p$4)} + caml_call2 + (Js_of_ocaml_Js[46], + cst_AidesLogementLib, + {"contributionsSocialesAidesPersonnelleLogement": + caml_js_wrap_meth_callback(t904), + "calculEquivalenceLoyerMinimale":caml_js_wrap_meth_callback(t905), + "calculNombrePartLogementFoyer":caml_js_wrap_meth_callback(t906), + "calculNombrePartsAccessionPropriete":caml_js_wrap_meth_callback(t907), + "ouvertureDroitsRetraite":caml_js_wrap_meth_callback(t908), + "impayeDepenseLogement":caml_js_wrap_meth_callback(t909), + "baseMensuelleAllocationsFamiliales":caml_js_wrap_meth_callback(t910), + "smic":caml_js_wrap_meth_callback(t911), + "calculAidePersonnaliseeLogementLocatif": + caml_js_wrap_meth_callback(t912), + "calculAidePersonnaliseeLogementFoyer":caml_js_wrap_meth_callback(t913), + "calculAidePersonnaliseeLogementAccessionPropriete": + caml_js_wrap_meth_callback(t914), + "eligibiliteAidesPersonnelleLogement":caml_js_wrap_meth_callback(t915), + "ressourcesAidesPersonnelleLogement":caml_js_wrap_meth_callback(t916), + "eligibilitePrestationsFamiliales":caml_js_wrap_meth_callback(t917), + "calculAllocationLogementLocatif":caml_js_wrap_meth_callback(t918), + "calculAllocationLogementFoyer":caml_js_wrap_meth_callback(t919), + "calculAllocationLogementAccessionPropriete": + caml_js_wrap_meth_callback(t920), + "calculAidePersonnaliseeLogement":caml_js_wrap_meth_callback(t921), + "eligibilitePrimeDeDemenagement":caml_js_wrap_meth_callback(t922), + "eligibiliteAidePersonnaliseeLogement":caml_js_wrap_meth_callback(t923), + "eligibiliteAllocationLogement":caml_js_wrap_meth_callback(t924), + "calculAllocationLogement":caml_js_wrap_meth_callback(t925), + "calculetteAidesAuLogement":caml_js_wrap_meth_callback(t926), + "calculetteAidesAuLogementGardeAlternee": + caml_js_wrap_meth_callback(t927)}); + var + Law_source_Aides_logement_api_= + [0, + type_pret_to_jsoo, + type_pret_of_jsoo, + titulaire_pret_to_jsoo, + titulaire_pret_of_jsoo, + type_travaux_logement_d832_15_, + type_travaux_logement_d832_15_$0, + type_travaux_logement_r842_5_t, + type_travaux_logement_r842_5_o, + ameliore_par_occupant_to_jsoo, + ameliore_par_occupant_of_jsoo, + limite_tranche_to_jsoo, + limite_tranche_of_jsoo, + limite_tranche_decimal_to_jsoo, + limite_tranche_decimal_of_jsoo, + prestation_recue_to_jsoo, + prestation_recue_of_jsoo, + parent_ou_autre_to_jsoo, + parent_ou_autre_of_jsoo, + situation_garde_alternee_to_js, + situation_garde_alternee_of_js, + parente_to_jsoo, + parente_of_jsoo, + date_de_naissance_ou_mois_de_g, + date_de_naissance_ou_mois_de_g$0, + zone_d_habitation_to_jsoo, + zone_d_habitation_of_jsoo, + paiement_logement_distinct_pro, + paiement_logement_distinct_pro$0, + versement_a_to_jsoo, + versement_a_of_jsoo, + depense_logement_to_jsoo, + depense_logement_of_jsoo, + mode_occupation_impaye_to_jsoo, + mode_occupation_impaye_of_jsoo, + type_eligibilite_allocation_lo, + type_eligibilite_allocation_lo$0, + type_aides_personnelle_logemen, + type_aides_personnelle_logemen$0, + situation_familiale_to_jsoo, + situation_familiale_of_jsoo, + prise_en_charge_to_jsoo$0, + prise_en_charge_of_jsoo$0, + type_logement_foyer_to_jsoo, + type_logement_foyer_of_jsoo, + categorie_equivalence_loyer_al, + categorie_equivalence_loyer_al$0, + situation_familiale_calcul_a_p, + situation_familiale_calcul_a_p$0, + collectivite_to_jsoo$0, + collectivite_of_jsoo$0, + prise_en_charge_enfant_to_jsoo, + prise_en_charge_enfant_of_jsoo, + situation_obligation_scolaire_$1, + situation_obligation_scolaire_$2, + element_prestations_familiales$1, + element_prestations_familiales$2, + convention_bailleur_social_to_, + convention_bailleur_social_of_, + convention_a_n_h_a_to_jsoo, + convention_a_n_h_a_of_jsoo, + personne_sous_location_to_jsoo, + personne_sous_location_of_jsoo, + patrimoine_to_jsoo, + patrimoine_of_jsoo, + conditions_etrangers_to_jsoo, + conditions_etrangers_of_jsoo, + personne_vivant_habituellement, + personne_vivant_habituellement$0, + eligibilite_aide_personnalisee$0, + eligibilite_aide_personnalisee$1, + eligibilite_prime_de_demenagem$0, + eligibilite_prime_de_demenagem$1, + ressources_aides_personnelle_l$0, + ressources_aides_personnelle_l$1, + contributions_sociales_aides_p$0, + contributions_sociales_aides_p$1, + calcul_aide_personnalisee_loge$3, + calcul_aide_personnalisee_loge$4, + calcul_equivalence_loyer_minim$0, + calcul_equivalence_loyer_minim$1, + calcul_nombre_part_logement_fo$0, + calcul_nombre_part_logement_fo$1, + calcul_aide_personnalisee_loge$5, + calcul_aide_personnalisee_loge$6, + calcul_nombre_parts_accession_$0, + calcul_nombre_parts_accession_$1, + calcul_aide_personnalisee_loge$7, + calcul_aide_personnalisee_loge$8, + traitement_formule_aide_finale, + traitement_formule_aide_finale$0, + calcul_aide_personnalisee_loge$9, + calcul_aide_personnalisee_loge$10, + infos_changement_logement_d842, + infos_changement_logement_d842$0, + calcul_allocation_logement_loc$0, + calcul_allocation_logement_loc$1, + calcul_allocation_logement_acc$0, + calcul_allocation_logement_acc$1, + calcul_allocation_logement_foy$0, + calcul_allocation_logement_foy$1, + calcul_allocation_logement_to_, + calcul_allocation_logement_of_, + ouverture_droits_retraite_to_j, + ouverture_droits_retraite_of_j, + impaye_depense_logement_to_jso, + impaye_depense_logement_of_jso, + calculette_aides_au_logement_t, + calculette_aides_au_logement_o, + calculette_aides_au_logement_g$0, + calculette_aides_au_logement_g$1, + base_mensuelle_allocations_fam$6, + base_mensuelle_allocations_fam$7, + smic_to_jsoo$0, + smic_of_jsoo$0, + pret_to_jsoo, + pret_of_jsoo, + neuf_ou_ancien_to_jsoo, + neuf_ou_ancien_of_jsoo, + tranche_revenu_to_jsoo, + tranche_revenu_of_jsoo, + tranche_revenu_decimal_to_jsoo, + tranche_revenu_decimal_of_jsoo, + autre_personne_a_charge_to_jso, + autre_personne_a_charge_of_jso, + date_naissance_troisieme_ou_de, + date_naissance_troisieme_ou_de$0, + eligibilite_allocation_logemen$0, + eligibilite_allocation_logemen$1, + logement_foyer_to_jsoo, + logement_foyer_of_jsoo, + enfant_prestations_familiales_, + enfant_prestations_familiales_$0, + enfant_a_charge_to_jsoo, + enfant_a_charge_of_jsoo, + type_bailleur_to_jsoo, + type_bailleur_of_jsoo, + loue_ou_sous_loue_a_des_tiers_, + loue_ou_sous_loue_a_des_tiers_$0, + nationalite_to_jsoo, + nationalite_of_jsoo, + changement_logement_d842_4_to_, + changement_logement_d842_4_of_, + proprietaire_to_jsoo, + proprietaire_of_jsoo, + informations_prime_de_demenage, + informations_prime_de_demenage$0, + eligibilite_prestations_famili$0, + eligibilite_prestations_famili$1, + personne_a_charge_to_jsoo, + personne_a_charge_of_jsoo, + demandeur_to_jsoo, + demandeur_of_jsoo, + location_to_jsoo, + location_of_jsoo, + eligibilite_aides_personnelle_$0, + eligibilite_aides_personnelle_$1, + categorie_calcul_a_p_l_to_jsoo, + categorie_calcul_a_p_l_of_jsoo, + mode_occupation_to_jsoo, + mode_occupation_of_jsoo, + logement_to_jsoo, + logement_of_jsoo, + menage_to_jsoo, + menage_of_jsoo, + eligibilite_aides_personnelle_$2, + eligibilite_aides_personnelle_$3, + eligibilite_aide_personnalisee$2, + eligibilite_aide_personnalisee$3, + eligibilite_allocation_logemen$2, + eligibilite_allocation_logemen$3, + eligibilite_prime_de_demenagem$2, + eligibilite_prime_de_demenagem$3, + ressources_aides_personnelle_l$2, + ressources_aides_personnelle_l$3, + contributions_sociales_aides_p$2, + contributions_sociales_aides_p$3, + calcul_aide_personnalisee_loge$11, + calcul_aide_personnalisee_loge$12, + calcul_equivalence_loyer_minim$2, + calcul_equivalence_loyer_minim$3, + calcul_nombre_part_logement_fo$2, + calcul_nombre_part_logement_fo$3, + calcul_aide_personnalisee_loge$13, + calcul_aide_personnalisee_loge$14, + calcul_nombre_parts_accession_$2, + calcul_nombre_parts_accession_$3, + calcul_aide_personnalisee_loge$15, + calcul_aide_personnalisee_loge$16, + calcul_aide_personnalisee_loge$17, + calcul_aide_personnalisee_loge$18, + calcul_allocation_logement_loc$2, + calcul_allocation_logement_loc$3, + calcul_allocation_logement_acc$2, + calcul_allocation_logement_acc$3, + calcul_allocation_logement_foy$2, + calcul_allocation_logement_foy$3, + calcul_allocation_logement_in_, + calcul_allocation_logement_in_$0, + ouverture_droits_retraite_in_t, + ouverture_droits_retraite_in_o, + impaye_depense_logement_in_to_, + impaye_depense_logement_in_of_, + calculette_aides_au_logement_i, + calculette_aides_au_logement_i$0, + calculette_aides_au_logement_g$2, + calculette_aides_au_logement_g$3, + base_mensuelle_allocations_fam$8, + base_mensuelle_allocations_fam$9, + smic_in_to_jsoo$0, + smic_in_of_jsoo$0, + eligibilite_prestations_famili$2, + eligibilite_prestations_famili$3, + contributions_sociales_aides_p$4, + calcul_equivalence_loyer_minim$4, + calcul_nombre_part_logement_fo$4, + calcul_nombre_parts_accession_$4, + ouverture_droits_retraite$0, + impaye_depense_logement$0, + base_mensuelle_allocations_fam$10, + smic$2, + calcul_aide_personnalisee_loge$19, + calcul_aide_personnalisee_loge$20, + calcul_aide_personnalisee_loge$21, + eligibilite_aides_personnelle_$4, + ressources_aides_personnelle_l$4, + eligibilite_prestations_famili$4, + calcul_allocation_logement_loc$4, + calcul_allocation_logement_foy$4, + calcul_allocation_logement_acc$4, + calcul_aide_personnalisee_loge$22, + eligibilite_prime_de_demenagem$4, + eligibilite_aide_personnalisee$4, + eligibilite_allocation_logemen$4, + calcul_allocation_logement$0, + calculette_aides_au_logement$0, + calculette_aides_au_logement_g$4]; + caml_register_global + (8577, + Law_source_Aides_logement_api_, + "Law_source__Aides_logement_api_web"); + return} + (globalThis)); + + +//# 1 ".api_web.eobjs/byte/dune__exe__Api_web.cmo.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_js_wrap_callback=runtime.caml_js_wrap_callback, + caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback; + function caml_call1(f,a0) + {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} + var + global_data=runtime.caml_get_global_data(), + Law_source_Allocations_familia= + 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; + function t4(param) + {return caml_js_wrap_callback + (function(calculette_aides_au_logement_g) + {function _b_(param) + {var + t1= + caml_call1 + (Law_source_Aides_logement_api_[236], + calculette_aides_au_logement_g); + return t1.aideFinale} + return caml_call1(Runtime_jsoo_Runtime[6],_b_)})} + function t3(param) + {return caml_js_wrap_callback + (function(interface_allocations_familial) + {function _a_(param) + {var + t0= + caml_call1 + (Law_source_Allocations_familia[51], + interface_allocations_familial); + return t0.iMontantVerse} + return caml_call1(Runtime_jsoo_Runtime[6],_a_)})} + caml_call1 + (Js_of_ocaml_Js[47], + {"eventsManager":Runtime_jsoo_Runtime[1], + "computeAllocationsFamiliales":caml_js_wrap_meth_callback(t3), + "computeAidesAuLogement":caml_js_wrap_meth_callback(t4)}); + var Dune_exe_Api_web=[0]; + runtime.caml_register_global(12,Dune_exe_Api_web,"Dune__exe__Api_web"); + return} + (globalThis)); + + +//# 1 "../../.js/stdlib/std_exit.cmo.js" +(function(globalThis) + {"use strict"; + var runtime=globalThis.jsoo_runtime; + function caml_call1(f,a0) + {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} + var global_data=runtime.caml_get_global_data(),Stdlib=global_data.Stdlib; + caml_call1(Stdlib[103],0); + var Std_exit=[0]; + runtime.caml_register_global(1,Std_exit,"Std_exit"); + return} + (globalThis)); + + +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJhcGlfd2ViLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIk9iamVjdCIsImdsb2JhbFRoaXMiLCJ0aGlzIiwiZ2V0IiwiX1RfIiwiZ2xvYmFsIiwic2VsZiIsImNhbWxfaW50NjRfaXNfemVybyIsIngiLCJjYW1sX3N0cl9yZXBlYXQiLCJuIiwicyIsInIiLCJsIiwiY2FtbF9pbnQ2NF9vZmZzZXQiLCJNYXRoIiwiY2FtbF9yYWlzZV9jb25zdGFudCIsInRhZyIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsImgiLCJzaWduIiwib2Zmc2V0IiwibW9kdWx1cyIsImRpdmlzb3IiLCJxdW90aWVudCIsInkiLCJxIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludDY0X2lzX25lZ2F0aXZlIiwiY2FtbF9pbnQ2NF9uZWciLCJjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMiLCJhIiwiaSIsImxlbiIsImYiLCJTdHJpbmciLCJudWxsIiwiY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwianNvb19pc19hc2NpaSIsImNhbWxfdXRmMTZfb2ZfdXRmOCIsImIiLCJ0IiwiYyIsImMxIiwiYzIiLCJ2IiwiaiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImxlbmd0aCIsImNvbnRlbnQiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfcGFyc2VfZm9ybWF0IiwiZm10IiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJlcnJubyIsInZhcmlhbnQiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2J5dGVzX2JvdW5kX2Vycm9yIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfbWxfYnl0ZXNfbGVuZ3RoIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiQXJyYXkiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsImNhbWxfYmxpdF9zdHJpbmciLCJlIiwiTWxGaWxlIiwiTWxGYWtlRmlsZSIsIm9sZCIsImJ1ZiIsInBvcyIsImNsZW4iLCJuZXdfc3RyIiwib2xkX2RhdGEiLCJNbEZha2VEZXZpY2UiLCJyZXMiLCJTeW1ib2wiLCJuYW1lX3NsYXNoIiwibW9kZSIsInJhaXNlX3VuaXgiLCJwYXJlbnQiLCJSZWdFeHAiLCJzZWVuIiwibSIsIm9rIiwiZmlsZSIsImJ5dGVzIiwiY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIiwiY2FtbF9zdHJpbmdfdW5zYWZlX2dldCIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9hcnJheV9vZl9ieXRlcyIsImNhbWxfYnl0ZXNfdW5zYWZlX3NldCIsImNhbWxfYnl0ZXNfc2V0IiwiTWxOb2RlRmlsZSIsImZkIiwicmVxdWlyZSIsImVyciIsImJ1Zl9vZmZzZXQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJvIiwianNfc3RhdHMiLCJ0b19kaXIiLCJ0YXJnZXQiLCJsaW5rIiwiZmlsZV9raW5kIiwiY2FtbF9nZXRfcm9vdCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX3Jvb3QiLCJqc29vX21vdW50X3BvaW50IiwicmVzb2x2ZV9mc19kZXZpY2UiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3JhaXNlX25vdF9mb3VuZCIsImNhbWxfc3lzX2dldGVudiIsImciLCJ1bmRlZmluZWQiLCJzaGlmdF9yaWdodF9uYXQiLCJuYXQxIiwib2ZzMSIsImxlbjEiLCJuYXQyIiwib2ZzMiIsIm5iaXRzIiwid3JhcCIsImNhbWxfZ3Jfc3RhdGUiLCJjYW1sX2dyX3N0YXRlX2dldCIsImNhbWxfZ3JfcG9pbnRfY29sb3IiLCJpbSIsIk1sT2JqZWN0VGFibGUiLCJOYWl2ZUxvb2t1cCIsIm9ianMiLCJjYW1sX3N5c19yZW5hbWUiLCJvX3Jvb3QiLCJuX3Jvb3QiLCJjYW1sX2xvZzEwX2Zsb2F0IiwidW5peF91bmxpbmsiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwidW5peF9ybWRpciIsImNhbWxfbWxfcmVmaWxsX2lucHV0IiwiY2hhbiIsInN0ciIsInN0cl9sZW4iLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9tbF9tYXlfcmVmaWxsX2lucHV0IiwiY2hhbmlkIiwiY2FtbF9hcnJheV9ib3VuZF9lcnJvciIsImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lIiwiY2FtbF9nY19taW5vciIsImJpZ0ludCIsIkJBU0UiLCJMT0dfQkFTRSIsIk1BWF9JTlQiLCJNQVhfSU5UX0FSUiIsInNtYWxsVG9BcnJheSIsIkRFRkFVTFRfQUxQSEFCRVQiLCJCaWdJbnQiLCJqb29fZ2xvYmFsX29iamVjdCIsInN1cHBvcnRzTmF0aXZlQmlnSW50IiwiSW50ZWdlciIsInJhZGl4IiwiYWxwaGFiZXQiLCJjYXNlU2Vuc2l0aXZlIiwicGFyc2VWYWx1ZSIsInBhcnNlQmFzZSIsIkJpZ0ludGVnZXIiLCJ2YWx1ZSIsIlNtYWxsSW50ZWdlciIsIk5hdGl2ZUJpZ0ludCIsImlzUHJlY2lzZSIsImFycmF5VG9TbWFsbCIsImFyciIsInRyaW0iLCJjb21wYXJlQWJzIiwiY3JlYXRlQXJyYXkiLCJ0cnVuY2F0ZSIsImFkZCIsImxfYSIsImxfYiIsImNhcnJ5IiwiYmFzZSIsInN1bSIsImFkZEFueSIsImFkZFNtYWxsIiwic3VidHJhY3QiLCJhX2wiLCJiX2wiLCJib3Jyb3ciLCJkaWZmZXJlbmNlIiwic3VidHJhY3RBbnkiLCJzdWJ0cmFjdFNtYWxsIiwic21hbGwiLCJtdWx0aXBseUxvbmciLCJwcm9kdWN0IiwiYV9pIiwiYl9qIiwibXVsdGlwbHlTbWFsbCIsInNoaWZ0TGVmdCIsIm11bHRpcGx5S2FyYXRzdWJhIiwiYWMiLCJiZCIsImFiY2QiLCJ1c2VLYXJhdHN1YmEiLCJsMSIsImwyIiwiYWJzIiwibXVsdGlwbHlTbWFsbEFuZEFycmF5Iiwic3F1YXJlIiwiYV9qIiwiZGl2TW9kMSIsImRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCIsImxhbWJkYSIsInJlbWFpbmRlciIsInF1b3RpZW50RGlnaXQiLCJzaGlmdCIsImRpdk1vZFNtYWxsIiwiZGl2TW9kMiIsInBhcnQiLCJndWVzcyIsInhsZW4iLCJoaWdoeCIsImhpZ2h5IiwiY2hlY2siLCJkaXZNb2RBbnkiLCJFcnJvciIsImNvbXBhcmlzb24iLCJxU2lnbiIsIm1vZCIsIm1TaWduIiwiXzAiLCJfMSIsIl8yIiwiZXhwIiwiSW5maW5pdHkiLCJpc0Jhc2ljUHJpbWUiLCJtaWxsZXJSYWJpblRlc3QiLCJuUHJldiIsInN0cmljdCIsImlzUHJpbWUiLCJiaXRzIiwibG9nTiIsIml0ZXJhdGlvbnMiLCJuZXdUIiwibmV3UiIsImxhc3RUIiwibGFzdFIiLCJwb3dlcnNPZlR3byIsInBvd2VyczJMZW5ndGgiLCJoaWdoZXN0UG93ZXIyIiwic2hpZnRfaXNTbWFsbCIsInJlbVF1byIsImJpdHdpc2UiLCJmbiIsInhTaWduIiwieVNpZ24iLCJ4UmVtIiwieVJlbSIsInhEaWdpdCIsInlEaWdpdCIsInhEaXZNb2QiLCJ5RGl2TW9kIiwiTE9CTUFTS19JIiwiTE9CTUFTS19CSSIsInJvdWdoTE9CIiwiaW50ZWdlckxvZ2FyaXRobSIsInRtcCIsIm1heCIsIm1pbiIsImdjZCIsImxjbSIsInJhbmRCZXR3ZWVuIiwibG93IiwiaGlnaCIsInJhbmdlIiwiZGlnaXRzIiwidG9CYXNlIiwicmVzdHJpY3RlZCIsInRvcCIsImRpZ2l0IiwidGV4dCIsImFic0Jhc2UiLCJhbHBoYWJldFZhbHVlcyIsImlzTmVnYXRpdmUiLCJzdGFydCIsInBhcnNlQmFzZUZyb21BcnJheSIsInZhbCIsInBvdyIsInN0cmluZ2lmeSIsIm5lZyIsIk51bWJlciIsIm91dCIsImxlZnQiLCJkaXZtb2QiLCJ0b0Jhc2VTdHJpbmciLCJ6ZXJvcyIsInBhcnNlSW50IiwicGFyc2VTdHJpbmdWYWx1ZSIsInNwbGl0IiwiZGVjaW1hbFBsYWNlIiwiaXNWYWxpZCIsInBhcnNlTnVtYmVyVmFsdWUiLCJtbF96X25vcm1hbGl6ZSIsIm1sX3pfcG93IiwiejEiLCJtbF96X3Jvb3QiLCJ6IiwiemVybyIsIm9uZSIsImVuZCIsImFucyIsInR3byIsIm1pZCIsInBvIiwibWxfel9yb290cmVtIiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfYmFfdWludDhfZ2V0NjQiLCJiYSIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3JldHVybl9leG5fY29uc3RhbnQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jcmVhdGVfZmlsZSIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJjYW1sX3NldF9wYXJzZXJfdHJhY2UiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJ1bml4X2dldHRpbWVvZmRheSIsIkRhdGUiLCJjYW1sX211bCIsImNhbWxfaGFzaF9taXhfaW50IiwibnVtX2RpZ2l0c19uYXQiLCJuYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9jYWxsX2dlbiIsImFyZ3NMZW4iLCJleHRyYV9hcmdzIiwiYXJndW1lbnRzIiwibmFyZ3MiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzIiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX2djX2NvdW50ZXJzIiwibWxfel9kaXYiLCJ6MiIsIm1sX3pfc2lnbiIsIm1sX3pfYWRkIiwibWxfel9jZGl2IiwiejFfcG9zIiwiejJfcG9zIiwiY2FtbF9ncl9zeW5jaHJvbml6ZSIsInVuaXhfaGFzX3N5bWxpbmsiLCJ1bml0IiwibG9nMl9vayIsImpzb29fZmxvb3JfbG9nMiIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiaW50MzJhIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJrIiwicjMiLCJyMiIsInIxIiwiY2FtbF9iYV9zZXJpYWxpemUiLCJzeiIsImNvbXBsZXgiLCJjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50Iiwia2luZCIsImNhbWxfYmFfY3JlYXRlX2J1ZmZlciIsInNpemUiLCJ2aWV3IiwiZGF0YSIsImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2ludDY0X2hpMzIiLCJjYW1sX2ludDY0X2xvMzIiLCJjYW1sX2JhX2N1c3RvbV9uYW1lIiwiTWxfQmlnYXJyYXkiLCJsYXlvdXQiLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfYmFfZGVzZXJpYWxpemUiLCJyZWFkZXIiLCJudW1fZGltcyIsInNpemVfZGltIiwic2l6ZV9kaW1faGkiLCJzaXplX2RpbV9sbyIsInNpeHR5IiwiaW50NjQiLCJjYW1sX2JhX2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X2ludDY0IiwiY2FtbF9oYXNoX21peF9mbG9hdCIsInYwIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJ3IiwiY2FtbF9pbnQzMl91bm1hcnNoYWwiLCJjYW1sX25hdGl2ZWludF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X3VubWFyc2hhbCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfaGFzaCIsImNhbWxfY3VzdG9tX29wcyIsImNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSIsImNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbSIsIm51bSIsImN1c3RvbSIsInN3YXAiLCJjYW1sX2NvbXBhcmVfdmFsX3RhZyIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX2J5dGVzX2NvbXBhcmUiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwiZGl2X2RpZ2l0X25hdCIsIm5hdHEiLCJvZnNxIiwibmF0ciIsIm9mc3IiLCJyZW0iLCJudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQiLCJzaGlmdF9sZWZ0X25hdCIsIk1sTmF0IiwiY3JlYXRlX25hdCIsInNldF90b196ZXJvX25hdCIsImluY3JfbmF0IiwiY2FycnlfaW4iLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJzcmMiLCJkc3QiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfanNfaHRtbF9lbnRpdGllcyIsImVudGl0eSIsInRlbXAiLCJkb2N1bWVudCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQiLCJjYW1sX2JhX3NldF8yIiwibWxfel9vZl9pbnQ2NCIsImk2NCIsIm1sX3pfa3JvbmVja2VyIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJhcmdzMiIsImNhbWxfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImV2YWwiLCJzZXJpYWxpemVfbmF0IiwiY2FtbF9tZW1wcm9mX3NldCIsIl9jb250cm9sIiwibWxfel9uZWciLCJjYW1sX3N5c19leGl0IiwiY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3IiLCJjYW1sX2pzX2Zyb21fYXJyYXkiLCJjYW1sX2JhX3Jlc2hhcGUiLCJ2aW5kIiwibmV3X2RpbSIsImNhbWxfb29fbGFzdF9pZCIsImNhbWxfc2V0X29vX2lkIiwiY2FtbF9ncl9maWxsX3JlY3QiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYSIsInN0cjEiLCJwb3MxIiwiYmEyIiwicG9zMiIsInNsaWNlIiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9nZXRfZ2xvYmFsX2RhdGEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIiwiY2FtbF9iYV91aW50OF9nZXQxNiIsIm1sX3pfb2ZfaW50MzIiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfYmFfZ2V0XzEiLCJjYW1sX2JpZ3N0cmluZ19tZW1jbXAiLCJjYW1sX25ld19zdHJpbmciLCJjYW1sX2VyZl9mbG9hdCIsImExIiwiYTIiLCJhMyIsImE0IiwiYTUiLCJjYW1sX2JhX3VpbnQ4X2dldDMyIiwiY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCIsIm1sX3pfc2hpZnRfcmlnaHQiLCJhbXQiLCJjYW1sX29ial9ibG9jayIsImNhbWxfZ3JfY2xlYXJfZ3JhcGgiLCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIiwiYnMiLCJjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIiwiX3VuaXQiLCJseG9yX2RpZ2l0X25hdCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX2ZpbmFsX3JlbGVhc2UiLCJjYW1sX2pzX3RvX2FycmF5IiwibWxfel9sb2dvciIsImNhbWxfZ3JfcGxvdCIsImNvbG9yIiwiY2FtbF9ieXRlc19zZXQxNiIsImkxNiIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9ieXRlc19zZXQ2NCIsImNhbWxfaW50NjRfYnN3YXAiLCJtbF96X2ZpdHNfaW50IiwibWxfel9maXRzX2ludDMyIiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9maWxsX3N0cmluZyIsImNhbWxfZ2NfbWFqb3IiLCJtbF96X3NoaWZ0X2xlZnQiLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsInN0YXRlIiwiYmFja3RyayIsInVuaXhfZ2V0dWlkIiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2J5dGVzX2VxdWFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIiwib3NfdHlwZSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4iLCJjYW1sX2Nvc2hfZmxvYXQiLCJjYW1sX2VwaGVfa2V5X29mZnNldCIsImNhbWxfd2Vha19jaGVjayIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9ncl90ZXh0X3NpemUiLCJ0eHQiLCJjYW1sX2xleF9ydW5fbWVtIiwibWVtIiwiY3Vycl9wb3MiLCJjYW1sX2xleF9ydW5fdGFnIiwiY2FtbF9uZXdfbGV4X2VuZ2luZSIsImxleF9tZW0iLCJsZXhfYmFzZV9jb2RlIiwibGV4X2JhY2t0cmtfY29kZSIsImxleF9kZWZhdWx0X2NvZGUiLCJsZXhfdHJhbnNfY29kZSIsImxleF9jaGVja19jb2RlIiwibGV4X2NvZGUiLCJwY19vZmYiLCJwc3RhdGUiLCJiYXNlX2NvZGUiLCJjYW1sX2JhX3VpbnQ4X3NldDY0IiwibWxfel9wb3Bjb3VudCIsImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9hY29zaF9mbG9hdCIsImNhbWxfbWxfZmx1c2giLCJvdXRwdXQiLCJjYW1sX21sX3NlZWtfb3V0XzY0IiwiY29tcGFyZV9uYXRfcmVhbCIsImNhbWxfZ2Nfc2V0IiwiY2FtbF9qc19nZXQiLCJjYW1sX21sX3NldF9idWZmZXJlZCIsImNhbWxfZ2NfY29tcGFjdGlvbiIsImNhbWxfd2Vha19nZXQiLCJjYW1sX2VwaGVfZ2V0X2tleSIsImpzb29fel9vZl9qc19zdHJpbmdfYmFzZSIsImJjIiwibWxfel9vZl9zdWJzdHJpbmdfYmFzZSIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJ3aW5fY2xlYW51cCIsImNhbWxfc3lzX2Nsb3NlIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfc3lzX2lzYXR0eSIsIl9jaGFuIiwiaXNfZGlnaXRfemVybyIsInVuaXhfaW5ldF9hZGRyX29mX3N0cmluZyIsImNhbWxfanNfc2V0IiwibWxfel9nY2RleHRfaW50ZXJuIiwibGFzdHgiLCJsYXN0eSIsIm1sX3pfdGVzdGJpdCIsImNhbWxfYXJyYXlfZ2V0IiwiYXJyYXkiLCJpbmRleCIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCIsIm1sX3pfY29uZ3J1ZW50IiwiY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfbWxfc2Vla19pbl82NCIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJtbF96X2FicyIsImNhbWxfc3lzX2NvbnN0X2ludF9zaXplIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwibWxfel9zcXJ0IiwidW5peF9sb2NhbHRpbWUiLCJkX251bSIsImphbnVhcnlmaXJzdCIsImRveSIsImphbiIsImp1bCIsInN0ZFRpbWV6b25lT2Zmc2V0IiwiY2FtbF9qc19tZXRoX2NhbGwiLCJtbF96X2x1Y251bSIsImNhbWxfd2Vha19jcmVhdGUiLCJjYW1sX2VwaGVfY3JlYXRlIiwiY2FtbF9qc190b19ieXRlX3N0cmluZyIsIm1sX3pfcHJvYmFiX3ByaW1lIiwidW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfdHJhbXBvbGluZSIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJtbF96X3JlbSIsImNhbWxfd2Vha19zZXQiLCJjYW1sX3N5c19yZW1vdmUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2dldDMyIiwiY2FtbF9oeXBvdF9mbG9hdCIsIm1sX3pfZmFjTSIsImN1cnJlbnQiLCJjYW1sX2pzX2NhbGwiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF9lcGhlX3Vuc2V0X2tleSIsIm1sX3pfbXVsX292ZXJmbG93cyIsIm1sX3pfdG9faW50IiwiY2FtbF9oYXNoX21peF9ieXRlc19hcnIiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJtbF96X2ZhYyIsImNhbWxfcmFpc2VfZW5kX29mX2ZpbGUiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwibWxfel9kaXZpc2libGUiLCJjYW1sX29ial9yZWFjaGFibGVfd29yZHMiLCJudGhfZGlnaXRfbmF0IiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiZXhwb25lbnQiLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9saXN0X3RvX2pzX2FycmF5IiwiY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGUiLCJjYW1sX291dHB1dF92YWwiLCJXcml0ZXIiLCJmbGFncyIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImludGVybl9vYmpfdGFibGUiLCJtZW1vIiwiZXhpc3Rpbmdfb2Zmc2V0IiwiZXh0ZXJuX3JlYyIsIm9wcyIsInN6XzMyXzY0IiwiaGVhZGVyX3BvcyIsIm9sZF9wb3MiLCJ0eXBlX29mX3YiLCJjYW1sX3N0cmluZ19vZl9hcnJheSIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyIsImNhbWxfcmFpc2Vfbm90X2FfZGlyIiwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQiLCJjbWQiLCJ1bml4X2lzYXR0eSIsImZpbGVEZXNjcmlwdG9yIiwidHR5IiwiY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb24iLCJkZXNlcmlhbGl6ZV9uYXQiLCJpbml0aWFsaXplX25hdCIsIm1sX3pfc3VjYyIsImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3ciLCJ1bml4X2xzdGF0IiwidW5peF9sc3RhdF82NCIsImpzX3ByaW50X3N0ZG91dCIsImNhbWxfY29weXNpZ25fZmxvYXQiLCJjYW1sX2dyX3NldF90ZXh0X3NpemUiLCJjYW1sX21kNV9ieXRlcyIsInh4IiwiZmYiLCJnZyIsImhoIiwiaWkiLCJtZDUiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9lcGhlX3NldF9rZXkiLCJjYW1sX2J5dGVzX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXQiLCJjYW1sX2dyX3NpemVfeSIsIm1sX3pfZmFjMiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9pbnQ2NF9hbmQiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJtbF96X2JpbiIsImNvZWZmIiwiY2FtbF9zdGRfb3V0cHV0Iiwic2xlbiIsImpzX3ByaW50X3N0ZGVyciIsImNhbWxfc3lzX29wZW5faW50ZXJuYWwiLCJpZHgiLCJpbmZvIiwiY2FtbF9zeXNfb3BlbiIsIl9wZXJtcyIsIm1sX3pfZ2NkIiwiTWxTdHJpbmdSZWFkZXIiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIl9tYWdpYyIsIl9ibG9ja19sZW4iLCJudW1fb2JqZWN0cyIsIl9zaXplXzMyIiwiX3NpemVfNjQiLCJvYmpfY291bnRlciIsImludGVybl9yZWMiLCJoZWFkZXIiLCJleHBlY3RlZF9zaXplIiwiY2FtbF9zdHJpbmdfb2ZfYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMiLCJtbF96X211bCIsIm1sX3pfaGFtZGlzdCIsImNhbWxfc3RyaW5nX2dldCIsInJlX21hdGNoIiwicmVfd29yZF9sZXR0ZXJzIiwib3Bjb2RlcyIsImlzX3dvcmRfbGV0dGVyIiwiaW5fYml0c2V0IiwicmVfbWF0Y2hfaW1wbCIsInBhcnRpYWwiLCJwcm9nIiwiY3Bvb2wiLCJub3JtdGFibGUiLCJudW1ncm91cHMiLCJudW1yZWdpc3RlcnMiLCJzdGFydGNoYXJzIiwicGMiLCJxdWl0IiwiZ3JvdXBzIiwicmVfcmVnaXN0ZXIiLCJiYWNrdHJhY2siLCJpdGVtIiwicHVzaCIsImFjY2VwdCIsInByZWZpeF9tYXRjaCIsIm9wIiwic2FyZyIsInVhcmciLCJncm91cCIsInJlX3NlYXJjaF9iYWNrd2FyZCIsIm1sX3pfbG9nYW5kIiwiY2FtbF9qc19mcm9tX3N0cmluZyIsImNhbWxfYmFfc3ViIiwiY2hhbmdlZF9kaW0iLCJtdWwiLCJuZXdfZGltcyIsIm5ld19kYXRhIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9ieXRlc19zZXQzMiIsImkzMiIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9iYV91aW50OF9zZXQzMiIsIm1sX3pfZGl2X3JlbSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IiwiY2FtbF9zaWduYml0X2Zsb2F0IiwiY2FtbF9ncl9zZXRfbGluZV93aWR0aCIsImNhbWxfZ3Jfc2V0X2ZvbnQiLCJjYW1sX2dyX3NldF9jb2xvciIsImNvbnZlcnQiLCJudW1iZXIiLCJjX3N0ciIsImNhbWxfZ3JfbW92ZXRvIiwiY2FtbF9ncl9yZXNpemVfd2luZG93IiwiY2FtbF9ncl9zdGF0ZV9pbml0IiwiY2FtbF9ncl9jdXJyZW50X3giLCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkiLCJ0YSIsImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSIsImNhbWxfbWxfc2Vla19vdXQiLCJjYW1sX2pzX3R5cGVvZiIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiYnQiLCJjYW1sX2dyX2xpbmV0byIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZSIsImNhbWxfYmFfZGltXzMiLCJjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uIiwiY2FtbF9mb3JtYXRfZXhjZXB0aW9uIiwiYnVja2V0IiwiY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24iLCJoYW5kbGVyIiwiYXRfZXhpdCIsImNhbWxfZXBoZV9kYXRhX29mZnNldCIsImNhbWxfZXBoZV9jaGVja19kYXRhIiwiY2FtbF9ieXRlc19nZXQxNiIsImNhbWxfb2JqX21ha2VfZm9yd2FyZCIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lIiwiY2FtbF9leHAyX2Zsb2F0IiwiY2FtbF9ncl9jbG9zZV9ncmFwaCIsImNhbWxfY3JlYXRlX3N0cmluZyIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfbWQ1X2NoYW4iLCJjaGFuX2xlbiIsImNhbWxfb2JqX2R1cCIsImNhbWxfd2Vha19nZXRfY29weSIsImNhbWxfYXRhbmhfZmxvYXQiLCJjYW1sX21sX291dHB1dF9ieXRlcyIsInN0cmluZyIsImpzc3RyaW5nIiwiaWQiLCJjYW1sX21sX291dHB1dCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2FycmF5X2FwcGVuZCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsIiwibWxfel9uZXh0cHJpbWUiLCJjYW1sX2pzX2V4cHIiLCJjYW1sX2ludDY0X211bCIsImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIiwibWxfel9zdWIiLCJtbF96X2ZkaXYiLCJtbF96X3RvX2JpdHMiLCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyIsImNhbWxfZXZlbnRsb2dfcmVzdW1lIiwiY2FtbF9oYXNoX3VuaXZfcGFyYW0iLCJjb3VudCIsImxpbWl0Iiwib2JqIiwiaGFzaF9hY2N1IiwiaGFzaF9hdXgiLCJqc2J5dGVzIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJtbF96X2RpdmV4YWN0IiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyIiwicmVfcmVwbGFjZW1lbnRfdGV4dCIsInJlcGwiLCJvcmlnIiwiY3VyIiwiY2FtbF9wdXJlX2pzX2V4cHIiLCJibGl0X25hdCIsImNhbWxfaW50NjRfdWx0IiwiY2FtbF9pbnQ2NF94b3IiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzIiwiYmExIiwiYnl0ZXMyIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF90b19qc19zdHJpbmciLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJyZV9zZWFyY2hfZm9yd2FyZCIsImNhbWxfYmxpdF9zdHJpbmdfdG9fYmlnc3RyaW5nIiwiY2FtbF9tYWtlX3ZlY3QiLCJpbml0IiwiY2FtbF9tbF9zZWVrX2luIiwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIiwiY2FtbF9vYmpfaXNfYmxvY2siLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkIiwiY2FtbF9qc192YXIiLCJjYW1sX3RydW5jX2Zsb2F0IiwiY2FtbF96YXJpdGhfbWFyc2hhbCIsImJsb2NrIiwiY2FtbF9lcGhlX2JsaXRfZGF0YSIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsImJ1ZmYiLCJub3ciLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIiwiY2FtbF9iYV9nZXRfMiIsIndpbl9oYW5kbGVfZmQiLCJjYW1sX2JhX3VpbnQ4X3NldDE2Iiwid2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsIiwiY2FtbF9qc19kZWxldGUiLCJjYW1sX2ludF9vZl9zdHJpbmciLCJjYW1sX2xpc3RfbW91bnRfcG9pbnQiLCJwcmV2IiwiY2FtbF9tYXJzaGFsX2NvbnN0YW50cyIsImNhbWxfb2JqX3Jhd19maWVsZCIsImNhbWxfanNfZXF1YWxzIiwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IiwibWxfel9maXRzX25hdGl2ZWludCIsImNhbWxfZ3JfYXJjX2F1eCIsImN0eCIsImN4IiwiY3kiLCJyeSIsInJ4Iiwicm90IiwieFBvcyIsInlQb3MiLCJ4UG9zX3ByZXYiLCJ5UG9zX3ByZXYiLCJzcGFjZSIsImRlbHRhIiwiY2FtbF9ncl9maWxsX2FyYyIsImNhbWxfYmFfc2xpY2UiLCJudW1faW5kcyIsInN1Yl9kaW1zIiwibWxfel9vZl9uYXRpdmVpbnQiLCJjYW1sX21hcnNoYWxfZGF0YV9zaXplIiwiZ2V0MzIiLCJjYW1sX2lucHV0X3ZhbHVlIiwiY2FtbF9iYV9raW5kIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwibWxfel9pbnZlcnQiLCJtbF96X3Bvd20iLCJ6MyIsImludiIsIm1sX3pfcG93bV9zZWMiLCJjYW1sX2pzX3B1cmVfZXhwciIsImNvbXBhcmVfZGlnaXRzX25hdCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX2dyX3dhaXRfZXZlbnQiLCJfZXZsIiwiY2FtbF9ncl9zaWdpb19oYW5kbGVyIiwiY2FtbF9oYXNoX21peF9iaWdzdHJpbmciLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJ1bml4X2dtdGltZSIsImNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSIsImNhbWxfc3lzX2dldF9jb25maWciLCJ1bml4X3RpbWUiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsIm1sX3pfaGFzaCIsImFjYyIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwicmVfc3RyaW5nX21hdGNoIiwiQmlnU3RyaW5nUmVhZGVyIiwiY2FtbF9ncl9kdW1wX2ltYWdlIiwiY2FtbF9iYV9nZXRfZ2VuZXJpYyIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwibWxfel9lcXVhbCIsIm1sX3pfZml0c19pbnQ2NCIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEiLCJjYW1sX2JsaXRfYmlnc3RyaW5nX3RvX2JpZ3N0cmluZyIsIm1sX3pfc3FydF9yZW0iLCJkaWZmIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfZGl2IiwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJtbF96X3BlcmZlY3Rfc3F1YXJlIiwiY2FtbF9zeXNfZ2V0X2FyZ3YiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2dyX2NyZWF0ZV9pbWFnZSIsImNhbWxfZXBoZV9nZXRfa2V5X2NvcHkiLCJjYW1sX2xlc3N0aGFuIiwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCIsIm1sX3pfdG9fbmF0aXZlaW50IiwiY2FtbF9yZWdpc3Rlcl9nbG9iYWwiLCJuYW1lX29wdCIsIm11bHRfbmF0IiwibGVuMyIsInNxdWFyZV9uYXQiLCJjYW1sX2pzX2Zyb21fZmxvYXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9nY19zdGF0IiwiY2FtbF9nZXRfbWFqb3JfY3JlZGl0IiwiY2FtbF9zeXNfbW9kaWZ5X2FyZ3YiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfanNfZ2V0X2NvbnNvbGUiLCJjYW1sX3N5c191bnNhZmVfZ2V0ZW52IiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4iLCJyZWZpbGwiLCJmcyIsImNoYW5uZWwiLCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkiLCJjYW1sX3JvdW5kX2Zsb2F0IiwibWxfel9vZl9iaXRzIiwiYmFzZTEiLCJ1bml4X3N0YXQiLCJ1bml4X3N0YXRfNjQiLCJjYW1sX29qc19uZXdfYXJyIiwiRiIsImNvbXBsZW1lbnRfbmF0IiwibWxfel9sb2d4b3IiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfemFyaXRoX3VubWFyc2hhbCIsIm5lZ2F0ZSIsIm1sX3pfdHJhaWxpbmdfemVyb3MiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiYXJpdHkiLCJjYW1sX2djX21pbm9yX3dvcmRzIiwiY2FtbF9iYV9zZXRfMSIsImNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrIiwibGFuZF9kaWdpdF9uYXQiLCJjYW1sX2ludDY0X21vZCIsInVuaXhfcmVhZGxpbmsiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsIndpbl9zdGFydHVwIiwiY2FtbF9iYV9zZXRfMyIsIm1sX3pfamFjb2JpIiwibjEiLCJtbF96X2xlZ2VuZHJlIiwiY2FtbF9qc19pbnN0YW5jZW9mIiwiY2FtbF9nZXRfbWFqb3JfYnVja2V0IiwiY2FtbF9ibGl0X2JpZ3N0cmluZ190b19zdHJpbmciLCJzZXRfZGlnaXRfbmF0X25hdGl2ZSIsIm50aF9kaWdpdF9uYXRfbmF0aXZlIiwiY2FtbF9zdHJpbmdfc2V0NjQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNhbnZhcyIsImNvbnRleHQiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwidW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsImNhbWxfYmFfY3JlYXRlX2Zyb20iLCJkYXRhMSIsImRhdGEyIiwianN0eXAiLCJjYW1sX3RhbmhfZmxvYXQiLCJjYW1sX2dyX2RyYXdfc3RyIiwiZHgiLCJjYW1sX2dyX2RyYXdfc3RyaW5nIiwibWxfel9wcmltb3JpYWwiLCJjYW1sX2dyX2RyYXdfY2hhciIsImNhbWxfdW5tb3VudCIsIm1sX3pfZmliIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyIsImNhbWxfbWxfcG9zX2luXzY0IiwiY2FtbF9ncl9kcmF3X2ltYWdlIiwiaW1hZ2UiLCJjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSIsIl9jaGFubmVsIiwiY2FtbF9zdHJpbmdfc2V0IiwiY2FtbF9zeXNfcm1kaXIiLCJjYW1sX21sX3Bvc19vdXQiLCJjYW1sX3NwYWNldGltZV9lbmFibGVkIiwiY2FtbF9ieXRlc19ub3RlcXVhbCIsImNhbWxfcnVudGltZV9wYXJhbWV0ZXJzIiwiY2FtbF9qc19vYmplY3QiLCJjYW1sX2JhX2NyZWF0ZSIsImRpbXNfbWwiLCJjYW1sX3dlYWtfYmxpdCIsImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSIsImNhbWxfZm1hX2Zsb2F0IiwiU1BMSVQiLCJNSU5fVkFMVUUiLCJFUFNJTE9OIiwiQyIsIkEiLCJCIiwibXVsdGlwbHkiLCJhdCIsImFoaSIsImFsbyIsImJoaSIsImJsbyIsImFkanVzdCIsInNjYWxlIiwieHMiLCJ5cyIsInpzIiwieHkiLCJ1IiwiY2FtbF9ic3dhcDE2IiwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUiLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyIiwiY2FtbF9ncl9kcmF3X3JlY3QiLCJjYW1sX3N0cmluZ19nZXQxNiIsImNhbWxfZXBoZV91bnNldF9kYXRhIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX2JhX2dldF8zIiwiY2FtbF9lcGhlX2JsaXRfa2V5IiwibWxfel90b19pbnQzMiIsImNhbWxfaW5pdGlhbF90aW1lIiwiY2FtbF9zeXNfdGltZSIsImNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbiIsImNhbWxfY2hlY2tfYm91bmQiLCJ1bml4X2dldHB3dWlkIiwibWxfel9jb21wYXJlIiwiY2FtbF9oYXNoX21peF9zdHJpbmciLCJjYW1sX2hhc2giLCJzZWVkIiwicXVldWUiLCJyZCIsIndyIiwiY2FtbF9vYmpfdGFnIiwiRnVuY3Rpb24iLCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfZnJleHBfZmxvYXQiLCJtbF96X3ByZWQiLCJjYW1sX3N0cmluZ19nZXQ2NCIsImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbiIsImNhbWxfbWxfcG9zX291dF82NCIsIm1sX3pfZXh0cmFjdCIsIm1sX3pfcmVtb3ZlIiwibWxfel9vZl9mbG9hdCIsImYxIiwibWxfel9sb2dub3QiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZmxvYXRhcnJheV9ibGl0IiwiY2FtbF9nZXRfbWlub3JfZnJlZSIsImNhbWxfc2V0X3N0YXRpY19lbnYiLCJjYW1sX2JhX2NoYW5nZV9sYXlvdXQiLCJjYW1sX2pzX25ldyIsInVuaXhfbWtkaXIiLCJwZXJtIiwiY2FtbF9ncl9jdXJyZW50X3kiLCJjYW1sX2Zvcm1hdF9pbnQiLCJjYW1sX29ial90cnVuY2F0ZSIsImNhbWxfanNfdG9fc3RyaW5nIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJjYW1sX2FycmF5X2NvbmNhdCIsImNhbWxfZ3Jfb3Blbl9ncmFwaCIsInNwZWNzIiwic3RhdHVzIiwid2luIiwiZG9jIiwidGl0bGUiLCJib2R5IiwiY2FtbF9lcGhlX3NldF9kYXRhIiwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3QiLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfZXZlbnRsb2dfcGF1c2UiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsIm1sX3pfbnVtYml0cyIsInVwcGVyQm91bmQiLCJjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSIsImNhbWxfbG9nMXBfZmxvYXQiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImxvcl9kaWdpdF9uYXQiLCJjYW1sX2dyX2JsaXRfaW1hZ2UiLCJpbTIiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfanNfb25faWUiLCJ1YSIsImNhbWxfaW50NjRfc2hpZnRfcmlnaHQiLCJjYW1sX2JhX2xheW91dCIsImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIiwiY2FtbF9hcnJheV9zZXQiLCJuZXd2YWwiLCJjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbCIsIm1sX3pfcGVyZmVjdF9wb3dlciIsImxvZzJ6IiwienAiLCJzZXRfZGlnaXRfbmF0IiwibWxfel9pbml0IiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfbWxfY2hhbm5lbF9zaXplIiwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QiLCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdCIsInN0eWxlIiwiZXhwX3NpZ24iLCJzaWduX3N0ciIsImNzdCIsInhfc3RyIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IiwibWxfel9mb3JtYXQiLCJjYXMiLCJ3aWR0aCIsImFsdCIsInBhZCIsInByZWZpeCIsInByZSIsIm1sX3pfdG9faW50NjQiLCJtYXNrIiwibWxfel9zaXplIiwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIiwiY2FtbF9zeXNfYXJndiIsImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciIsImNhbWxfYmFfZmlsbCIsImNhbWxfbW9kZl9mbG9hdCIsImNhbWxfZ2NfZ2V0IiwiY2FtbF9mbG9hdF9jb21wYXJlIiwibWxfel9zaGlmdF9yaWdodF90cnVuYyIsImNhbWxfc3RyaW5nX3NldDMyIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2dyX21ha2VfaW1hZ2UiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImV2ZW50IiwiZXJyX25vX3ByZWQiLCJlcnJfbm9fc3VjYyIsInplcm8kMiIsIm9uZSQyIiwibWludXNfb25lJDIiLCJtaW5faW50JDIiLCJtYXhfaW50JDIiLCJkdW1teV9wb3MiLCJ6ZXJvX3BvcyIsInN1Yl9mb3JtYXQiLCJmb3JtYXR0aW5nX2xpdCIsImxvY2ZtdCIsIm51bGwkMCIsImN1cnJlbnRfZGlyX25hbWUiLCJwYXJlbnRfZGlyX25hbWUiLCJkaXJfc2VwIiwicXVvdGVxdW90ZSIsIm51bGwkMSIsImN1cnJlbnRfZGlyX25hbWUkMCIsInBhcmVudF9kaXJfbmFtZSQwIiwiZGlyX3NlcCQwIiwibnVsbCQyIiwiY3VycmVudF9kaXJfbmFtZSQxIiwicGFyZW50X2Rpcl9uYW1lJDEiLCJkaXJfc2VwJDEiLCJ6ZXJvJDQiLCJvbmUkNCIsImkiLCJlcmFzZV9yZWwiLCJyZXN0IiwicmVzdCQwIiwicmVzdCQxIiwicmVzdCQyIiwicmVzdCQzIiwicmVzdCQ0IiwicmVzdCQ1IiwicmVzdCQ2IiwicmVzdCQ3IiwidHkiLCJyZXN0JDgiLCJ0eTEiLCJyZXN0JDkiLCJyZXN0JDEwIiwicmVzdCQxMSIsInJlc3QkMTIiLCJyZXN0JDEzIiwiY29uY2F0X2ZtdHR5IiwiZm10dHkxIiwiZm10dHkyIiwidHkyIiwiY29uY2F0X2ZtdCIsImZtdDEiLCJmbXQyIiwicGFkIiwicGFkJDAiLCJwcmVjIiwicGFkJDEiLCJpY29udiIsInByZWMkMCIsInBhZCQyIiwiaWNvbnYkMCIsInByZWMkMSIsInBhZCQzIiwiaWNvbnYkMSIsInByZWMkMiIsInBhZCQ0IiwiaWNvbnYkMiIsInByZWMkMyIsInBhZCQ1IiwiZmNvbnYiLCJwYWQkNiIsInN0ciIsImNociIsImZtdHR5IiwicGFkJDciLCJmbXR0eSQwIiwicGFkJDgiLCJyZXN0JDE0IiwicmVzdCQxNSIsInJlc3QkMTYiLCJmbXRpbmdfbGl0IiwicmVzdCQxNyIsImZtdGluZ19nZW4iLCJyZXN0JDE4IiwicmVzdCQxOSIsImNoYXJfc2V0Iiwid2lkdGhfb3B0IiwicmVzdCQyMCIsImNvdW50ZXIiLCJyZXN0JDIxIiwicmVzdCQyMiIsImlnbiIsInJlc3QkMjMiLCJmIiwiYXJpdHkiLCJ2IiwiciIsImN1ciIsInNlZW4iLCJuIiwiZmFpbHdpdGgiLCJzIiwiaW52YWxpZF9hcmciLCJtaW4iLCJ4IiwieSIsIm1heCIsImFicyIsImxub3QiLCJpbmZpbml0eSIsIm5lZ19pbmZpbml0eSIsIm5hbiIsIm1heF9mbG9hdCIsIm1pbl9mbG9hdCIsImVwc2lsb24iLCJtYXhfaW50IiwibWluX2ludCIsInMxIiwiczIiLCJsMSIsImwyIiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImIiLCJib29sX29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInZhbGlkX2Zsb2F0X2xleGVtIiwibCIsImkkMCIsInRvX3N0cmluZyIsIm9mX3N0cmluZ19vcHQiLCJhcHBlbmQiLCJ0bCIsImhkIiwic3RkaW4iLCJzdGRvdXQiLCJzdGRlcnIiLCJvcGVuX2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX3RleHQiLCJvcGVuX2JpbiIsImZsdXNoX2FsbCIsIml0ZXIiLCJhIiwib3V0cHV0X2J5dGVzIiwib2MiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0Iiwib2ZzIiwibGVuIiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF92YWx1ZSIsImNoYW4iLCJjbG9zZSIsImNsb3NlX25vZXJyIiwib3Blbl9nZW4kMCIsIm9wZW5fdGV4dCQwIiwib3Blbl9iaW4kMCIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsImFjY3UiLCJiZWciLCJhY2N1JDAiLCJyZXMiLCJjbG9zZV9ub2VyciQwIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludCIsInJlYWRfaW50X29wdCIsInJlYWRfZmxvYXQiLCJyZWFkX2Zsb2F0X29wdCIsInN0cmluZ19vZl9mb3JtYXQiLCJzeW1ib2wiLCJzdHIyIiwic3RyMSIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJuZXdfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fYXRfZXhpdCIsImV4aXQiLCJyZXRjb2RlIiwic2V0X2JpbmFyeV9tb2RlIiwiY2xvc2UkMCIsImluX2NoYW5uZWxfbGVuZ3RoIiwicG9zX2luIiwic2Vla19pbiIsImlucHV0X3ZhbHVlIiwiaW5wdXRfYmluYXJ5X2ludCIsImlucHV0X2J5dGUiLCJpbnB1dF9jaGFyIiwic2V0X2JpbmFyeV9tb2RlJDAiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJwb3Nfb3V0Iiwic2Vla19vdXQiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2NoYXIiLCJmbHVzaCIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAiLCJ2JDAiLCJmb2xkIiwiZXF1YWwiLCJlMSIsImUyIiwidjIiLCJ2MiQwIiwiY29tcGFyZSIsIm1hdGNoJDEiLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3IiLCJsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl8iLCJsYXp5X3RhZyIsImNsb3N1cmVfdGFnIiwib2JqZWN0X3RhZyIsImluZml4X3RhZyIsImZvcndhcmRfdGFnIiwibm9fc2Nhbl90YWciLCJhYnN0cmFjdF90YWciLCJzdHJpbmdfdGFnIiwiZG91YmxlX3RhZyIsImRvdWJsZV9hcnJheV90YWciLCJjdXN0b21fdGFnIiwiaW50X3RhZyIsIm91dF9vZl9oZWFwX3RhZyIsInVuYWxpZ25lZF90YWciLCJpbmZvIiwib2JqIiwic3RhcnRfZW52Iiwib2ZfdmFsIiwic2xvdCIsImlkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZXh0ZW5zaW9uX25hbWUiLCJleHRlbnNpb25faWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsInJhaXNlX3VuZGVmaW5lZCIsImZvcmNlX2xhenlfYmxvY2siLCJibGsiLCJjbG9zdXJlIiwicmVzdWx0IiwiZm9yY2VfdmFsX2xhenlfYmxvY2siLCJmb3JjZSIsImx6diIsInQiLCJmb3JjZV92YWwiLCJ0b19sYXp5IiwiZnJvbV92YWwiLCJpc192YWwiLCJtYXAkMCIsIm1hcF92YWwiLCJlbXB0eSIsInJldHVybiQwIiwiY29ucyIsIm5leHQiLCJhcHBlbmQkMCIsInNlcTEiLCJzZXEyIiwibWFwJDEiLCJzZXEiLCJmaWx0ZXJfbWFwIiwic2VxJDAiLCJmaWx0ZXIiLCJjb25jYXQiLCJmbGF0X21hcCIsImZvbGRfbGVmdCIsImFjYyIsImFjYyQwIiwiYWNjJDEiLCJ1bmZvbGQiLCJ1IiwidSQwIiwiaXNfZW1wdHkiLCJ4cyIsInVuY29ucyIsInhzJDAiLCJsZW5ndGgkMCIsInhzJDEiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJhY2N1JDEiLCJmb3JfYWxsIiwicCIsImV4aXN0cyIsImZpbmQiLCJmaW5kX21hcCIsIml0ZXIyIiwieXMiLCJ5cyQwIiwieXMkMSIsImZvbGRfbGVmdDIiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJlcXVhbCQwIiwiZXEiLCJjb21wYXJlJDAiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwiZmFpbHVyZSIsIm1lbW9pemUiLCJvbmNlIiwiYWN0aW9uIiwiemlwIiwibWFwMiIsImludGVybGVhdmUiLCJzb3J0ZWRfbWVyZ2UxIiwic29ydGVkX21lcmdlIiwibWFwX2ZzdCIsInh5cyIsInh5cyQwIiwibWFwX3NuZCIsInVuemlwIiwiZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIiwiZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCIsInoiLCJwYXJ0aXRpb25fbWFwIiwicGFydGl0aW9uIiwicGVlbCIsInhzcyIsInRyYW5zcG9zZSIsInRhaWxzIiwiaGVhZHMiLCJyZW1haW5kZXJzIiwieHNzJDAiLCJ0YWlscyQwIiwiaGVhZHMkMCIsIm1hcF9wcm9kdWN0IiwicHJvZHVjdCIsIm9mX2Rpc3BlbnNlciIsIml0IiwidG9fZGlzcGVuc2VyIiwiaW50cyIsIm5vbmUiLCJzb21lIiwidmFsdWUiLCJkZWZhdWx0JDAiLCJnZXQkMCIsImJpbmQiLCJqb2luIiwibWFwJDIiLCJmb2xkJDAiLCJpdGVyJDAiLCJpc19ub25lIiwiaXNfc29tZSIsImVxdWFsJDEiLCJvMCIsInYxIiwidjAiLCJjb21wYXJlJDEiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsInZhbHVlJDAiLCJnZXRfb2siLCJnZXRfZXJyb3IiLCJiaW5kJDAiLCJqb2luJDAiLCJtYXAkMyIsIm1hcF9lcnJvciIsImZvbGQkMSIsIml0ZXIkMSIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwiZXF1YWwkMiIsInIwIiwicjEiLCJjb21wYXJlJDIiLCJ0b19vcHRpb24iLCJ0b19saXN0JDAiLCJ0b19zZXEkMCIsImVxdWFsJDMiLCJjb21wYXJlJDMiLCJ0b19mbG9hdCIsInRvX3N0cmluZyQwIiwiZXNjYXBlZCIsImxvd2VyY2FzZSIsInVwcGVyY2FzZSIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImNvbXBhcmUkNCIsImMxIiwiYzIiLCJlcXVhbCQ0IiwibWluJDAiLCJtYXgkMCIsImxvX2JvdW5kIiwiaGlfYm91bmQiLCJib20iLCJyZXAiLCJzdWNjIiwicHJlZCIsImlzX3ZhbGlkIiwib2ZfaW50IiwiaXNfY2hhciIsIm9mX2NoYXIiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJlcXVhbCQ1IiwiY29tcGFyZSQ1IiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsImRlY19pbnZhbGlkIiwidXRmXzhfYnl0ZV9sZW5ndGgiLCJ1dGZfMTZfYnl0ZV9sZW5ndGgiLCJsZW5ndGgkMSIsInBhcmFtJDAiLCJjb25zJDAiLCJudGgiLCJsJDAiLCJsJDEiLCJudGhfb3B0IiwicmV2X2FwcGVuZCIsImwxJDAiLCJsMiQwIiwibDEkMSIsImwyJDEiLCJyZXYiLCJpbml0X2F1eCQwIiwicGFyYW0iLCJhMiIsImExIiwicGFpciIsIngkMCIsInJ5IiwicngiLCJ0MiIsImgyIiwidDEiLCJoMSIsInJldl9zb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInNvcnQiLCJ0bCQwIiwiYyQwIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiYWNjdSQyIiwiYXV4IiwidGFpbCIsImRpcmVjdCIsImRlcHRoIiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsImFicyQwIiwibWF4X2ludCQwIiwibWluX2ludCQwIiwibG9nbm90IiwiZXF1YWwkNyIsImNvbXBhcmUkNyIsIm1pbiQxIiwibWF4JDEiLCJ0b19zdHJpbmckMSIsInN5bWJvbCQwIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwib2ZzMSIsIm9mczIiLCJzZXAiLCJzZXBsZW4iLCJkc3QiLCJpc19zcGFjZSIsImFwcGx5MSIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaSQxIiwiaW5kZXhfcmVjX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXhfcmVjX29wdCIsIm5ld19sZW4iLCJuZXdfYnVmIiwiZ2V0JDEiLCJzZXQkMCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImkkNCIsImIxJDEiLCJpJDUiLCJiMiQxIiwiaSQ2IiwiaSQxMCIsImIxJDMiLCJpJDExIiwiYjIkMyIsImkkMTIiLCJiMyQxIiwiaSQ3IiwiYjEkMiIsImkkOCIsImIyJDIiLCJpJDkiLCJiMyQwIiwiaSQxMyIsImIxJDQiLCJpJDE0IiwiYjIkNCIsImkkMiIsImIxJDAiLCJpJDMiLCJiMiQwIiwiaSQxNSIsImIxJDUiLCJzZXQiLCJsYXN0IiwibGFzdCQwIiwibGFzdCQxIiwibGFzdCQzIiwibGFzdCQyIiwibGFzdCQ0IiwibGFzdCQ1IiwiaGkiLCJsbyIsImlzX3NwYWNlJDAiLCJpbmRleF9yZWMkMCIsImluZGV4X3JlY19vcHQkMCIsInJpbmRleF9yZWMkMCIsInJpbmRleF9yZWNfb3B0JDAiLCJnIiwiZXF1YWwkMTAiLCJjb21wYXJlJDEwIiwidG9fc3RyaW5nJDIiLCJ0b19idWZmZXIiLCJidWZmIiwiZmxhZ3MiLCJoZWFkZXJfc2l6ZSIsImRhdGFfc2l6ZSIsInRvdGFsX3NpemUiLCJmcm9tX2J5dGVzIiwiZnJvbV9zdHJpbmciLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJwYXJhbSQxIiwiaGQkMCIsImlucHV0X2FycmF5IiwiZWx0Iiwib3V0cHV0X2FycmF5IiwiZWx0JDAiLCJhY2MkMiIsImEwIiwiYmkiLCJhaSIsIm5hIiwibmIiLCJtYXhzb24iLCJpMzEiLCJ0cmlja2xlZG93biIsInRyaWNrbGUiLCJidWJibGVkb3duIiwiYnViYmxlIiwiZSQwIiwiZmF0aGVyIiwibWVyZ2UiLCJzcmMxb2ZzIiwic3JjMWxlbiIsInNyYzIiLCJzcmMyb2ZzIiwic3JjMmxlbiIsImRzdG9mcyIsInNyYzFyIiwic3JjMnIiLCJzMiQxIiwiczEkMSIsImkxIiwiaTIiLCJpMiQwIiwiZCQwIiwiczIkMCIsImkxJDAiLCJkJDEiLCJzMSQwIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsInplcm8kMCIsIm9uZSQwIiwibWludXNfb25lJDAiLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsInBpIiwiaXNfaW50ZWdlciIsInN1Y2MkMCIsInByZWQkMCIsImVxdWFsJDExIiwibWluJDIiLCJtYXgkMiIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwiaGFzaCQwIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsIm1ha2UkMiIsImluaXQkNCIsImFwcGVuZCQyIiwiY29uY2F0JDMiLCJobGVuIiwic3ViJDIiLCJjb3B5JDIiLCJmaWxsJDEiLCJibGl0JDIiLCJzcmMiLCJzb2ZzIiwiZG9mcyIsInRvX2xpc3QkMiIsIm9mX2xpc3QkMCIsImgiLCJpdGVyJDYiLCJpdGVyMiQyIiwibWFwJDgiLCJtYXAyJDIiLCJpdGVyaSQ0IiwibWFwaSQ0IiwiZm9sZF9sZWZ0JDQiLCJmb2xkX3JpZ2h0JDMiLCJleGlzdHMkNCIsImZvcl9hbGwkNCIsIm1lbSQxIiwibWVtX2llZWUiLCJzb3J0JDAiLCJzdGFibGVfc29ydCIsInRvX3NlcSQ1IiwidG9fc2VxaSQyIiwib2Zfc2VxJDMiLCJtYXBfdG9fYXJyYXkiLCJtYXBfZnJvbV9hcnJheSIsInplcm8kMSIsIm9uZSQxIiwibWludXNfb25lJDEiLCJzdWNjJDEiLCJwcmVkJDEiLCJhYnMkMSIsIm1pbl9pbnQkMSIsIm1heF9pbnQkMSIsImxvZ25vdCQwIiwidW5zaWduZWRfdG9faW50IiwidG9fc3RyaW5nJDMiLCJvZl9zdHJpbmdfb3B0JDAiLCJjb21wYXJlJDExIiwiZXF1YWwkMTIiLCJ1bnNpZ25lZF9jb21wYXJlIiwibSIsIm1pbiQzIiwibWF4JDMiLCJ1bnNpZ25lZF9kaXYiLCJxIiwidW5zaWduZWRfcmVtIiwic3VjYyQyIiwicHJlZCQyIiwiYWJzJDIiLCJsb2dub3QkMSIsIm1heF9pbnQkMyIsInVuc2lnbmVkX3RvX2ludCQwIiwidG9fc3RyaW5nJDQiLCJvZl9zdHJpbmdfb3B0JDEiLCJjb21wYXJlJDEyIiwiZXF1YWwkMTMiLCJ1bnNpZ25lZF9jb21wYXJlJDAiLCJtaW4kNCIsIm1heCQ0IiwidW5zaWduZWRfZGl2JDAiLCJ1bnNpZ25lZF9yZW0kMCIsInplcm8kMyIsIm9uZSQzIiwibWludXNfb25lJDMiLCJzdWNjJDMiLCJwcmVkJDMiLCJhYnMkMyIsIm1pbl9pbnQkMyIsIm1heF9pbnQkNCIsImxvZ25vdCQyIiwidW5zaWduZWRfdG9faW50JDEiLCJ0b19zdHJpbmckNSIsIm9mX3N0cmluZ19vcHQkMiIsImNvbXBhcmUkMTMiLCJlcXVhbCQxNCIsInVuc2lnbmVkX2NvbXBhcmUkMSIsIm1pbiQ1IiwibWF4JDUiLCJ1bnNpZ25lZF9kaXYkMSIsInVuc2lnbmVkX3JlbSQxIiwiZW5naW5lIiwidGJsIiwic3RhdGUiLCJuZXdfZW5naW5lIiwiZnJvbV9mdW5jdGlvbiIsIm9wdCIsInN0aCIsIndpdGhfcG9zaXRpb25zIiwiYXV4X2J1ZmZlciIsImxleGJ1ZiIsInJlYWQiLCJuZXdsZW4iLCJuZXdidWYiLCJmcm9tX2NoYW5uZWwiLCJmcm9tX3N0cmluZyQwIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJhcmckMSIsImNtZCQwIiwiZXhuIiwiY3Vycl9jaGFyIiwidG9rIiwicGVla192YWwiLCJzeW1ib2xfc3RhcnRfcG9zIiwic3QiLCJlbiIsInN5bWJvbF9lbmRfcG9zIiwicmhzX3N0YXJ0X3BvcyIsInJoc19lbmRfcG9zIiwic3ltYm9sX3N0YXJ0Iiwic3ltYm9sX2VuZCIsInJoc19zdGFydCIsInJoc19lbmQiLCJpc19jdXJyZW50X2xvb2thaGVhZCIsInBhcnNlX2Vycm9yIiwiaGVpZ2h0IiwiaGwiLCJoJDAiLCJociIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiIsImxybCIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiIsInJsbCIsImFkZCIsInNpbmdsZXRvbiIsImFkZF9taW5fZWxlbWVudCIsImFkZF9tYXhfZWxlbWVudCIsInJoIiwibGgiLCJtaW5fZWx0IiwibWluX2VsdF9vcHQiLCJtYXhfZWx0IiwibWF4X2VsdF9vcHQiLCJyZW1vdmVfbWluX2VsdCIsInIkMCIsInNwbGl0IiwicHJlcyIsInByZXMkMCIsIm1lbSIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJzJDEiLCJlJDEiLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJmaW5kX2ZpcnN0X29wdCIsImZpbmRfbGFzdCIsImZpbmRfbGFzdF9vcHQiLCJmaW5kX29wdCIsInRyeV9qb2luIiwidiQxIiwib2ZfbGlzdCIsInN1YiIsImwkMyIsIngwIiwibCQ0IiwieDAkMCIsImwkNSIsIngwJDEiLCJubCIsIm1pZCIsImwkMiIsIng0IiwiYWRkX3NlcSIsIm9mX3NlcSIsInNlcV9vZl9lbnVtIiwic25vY19lbnVtIiwicmV2X3NlcV9vZl9lbnVtIiwidG9fcmV2X3NlcSIsInRvX3NlcV9mcm9tIiwibG93IiwibGQiLCJscmQiLCJyZCIsInJsZCIsImRhdGEiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtJDEiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjcmVhdGUkMCIsImNsZWFyIiwiY29weSQzIiwicHVzaCIsInBvcCIsInBvcF9vcHQiLCJ0b3AiLCJ0b3Bfb3B0IiwiaXNfZW1wdHkkMCIsImxlbmd0aCQyIiwiaXRlciQ3IiwiZm9sZCQyIiwidG9fc2VxJDYiLCJvZl9zZXEkNCIsImNyZWF0ZSQxIiwiY2xlYXIkMCIsImNlbGwiLCJwZWVrIiwiY29udGVudCIsInBlZWtfb3B0IiwidGFrZSQwIiwidGFrZV9vcHQiLCJjb3B5JDQiLCJxX3JlcyIsInByZXYiLCJpc19lbXB0eSQxIiwibGVuZ3RoJDMiLCJpdGVyJDgiLCJmb2xkJDMiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJ0b19zZXEkNyIsImFkZF9zZXEkMCIsIm9mX3NlcSQ1IiwiY291bnQiLCJmaWxsX2J1ZmYiLCJnZXRfZGF0YSIsImQxMSIsImEkMCIsImEkMSIsInBlZWtfZGF0YSIsInBlZWskMCIsImp1bmtfZGF0YSIsImp1bmsiLCJuZ2V0X2RhdGEiLCJhbCIsIm5wZWVrIiwiZW1wdHkkMiIsIml0ZXIkOSIsInN0cm0iLCJmcm9tIiwib2ZfbGlzdCQxIiwib2Zfc3RyaW5nIiwib2ZfYnl0ZXMkMCIsIm9mX2NoYW5uZWwiLCJpYXBwIiwiaWNvbnMiLCJpc2luZyIsImxhcHAiLCJsY29ucyIsImxzaW5nIiwic2VtcHR5Iiwic2xhenkiLCJkdW1wX2RhdGEiLCJkdW1wIiwiY3JlYXRlJDIiLCJjb250ZW50cyIsInRvX2J5dGVzJDAiLCJzdWIkMyIsImJsaXQkMyIsIm50aCQwIiwibGVuZ3RoJDQiLCJjbGVhciQxIiwicmVzZXQiLCJyZXNpemUiLCJtb3JlIiwib2xkX3BvcyIsIm9sZF9sZW4iLCJuZXdfYnVmZmVyIiwiYWRkX2NoYXIiLCJwb3MiLCJ1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXgiLCJ1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4IiwiYWRkX3V0Zl84X3VjaGFyIiwiYWRkX3V0Zl8xNmJlX3VjaGFyIiwiYWRkX3V0Zl8xNmxlX3VjaGFyIiwiYWRkX3N1YnN0cmluZyIsIm9mZnNldCIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJjdXJyZW50Iiwib3BlbmluZyIsImxpbSQwIiwic3RvcCIsImskMiIsImskMCIsImskMSIsIm5leHRfaSIsImlkZW50IiwidHJ1bmNhdGUiLCJ0b19zZXEkOCIsInRvX3NlcWkkMyIsImFkZF9zZXEkMSIsIm9mX3NlcSQ2IiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJjcmVhdGVfY2hhcl9zZXQiLCJhZGRfaW5fY2hhcl9zZXQiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImNoYXJfc2V0JDAiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiZm10IiwicGFkX29wdCQwIiwicGFkX29wdCQxIiwicGFkX29wdCQyIiwicGFkX29wdCQzIiwicGFkX29wdCQ0IiwicHJlY19vcHQiLCJwYWRfb3B0JDUiLCJuZGVjIiwicGFkX29wdCQ2IiwicGFkX29wdCQ3IiwicGFkX29wdCQ4IiwiZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24iLCJidWZmZXJfY3JlYXRlIiwiaW5pdF9zaXplIiwiYnVmZmVyX2NoZWNrX3NpemUiLCJvdmVyaGVhZCIsIm1pbl9sZW4iLCJuZXdfc3RyIiwiYnVmZmVyX2FkZF9jaGFyIiwiYnVmZmVyX2FkZF9zdHJpbmciLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJjRiIsImJwcmludF9wYWR0eSIsInBhZHR5IiwiYnByaW50X2lnbm9yZWRfZmxhZyIsImlnbl9mbGFnIiwiYnByaW50X3BhZF9vcHQiLCJicHJpbnRfcGFkZGluZyIsInBhZHR5JDAiLCJicHJpbnRfcHJlY2lzaW9uIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0Iiwic3RyJDAiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiYnByaW50X2ZtdHR5Iiwic3ViX2ZtdHR5Iiwic3ViX2ZtdHR5JDAiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5Iiwic3RyaW5nX29mX2ZtdCIsImZtdGl0ZXIiLCJmbXQkMCIsImlnbl9mbGFnJDAiLCJjaHIkMCIsInN0ciQxIiwiaXNfYWxvbmUkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDAiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJ0cmFucyIsInJlc3QyIiwicmVzdDIkMCIsInJlc3QyJDEiLCJyZXN0MiQyIiwicmVzdDIkMyIsInJlc3QyJDQiLCJyZXN0MiQ1IiwicmVzdDIkNiIsInJlc3QyJDciLCJ0eTIkMCIsInJlc3QyJDgiLCJ0eTIyIiwidHkyMSIsImZtdHR5X3JlbF9kZXQiLCJmNCIsImYyIiwicmVzdDIkOSIsInJlc3QyJDEwIiwicmVzdDIkMTEiLCJyZXN0MiQxMiIsInJlc3QyJDEzIiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJqZCIsImRqIiwiZ2EiLCJhZyIsImRlJDkiLCJlZCQ5IiwiYWYkOSIsImZhJDkiLCJkZSQxMCIsImVkJDEwIiwiYWYkMTAiLCJmYSQxMCIsImRlJDExIiwiZWQkMTEiLCJhZiQxMSIsImZhJDExIiwiZGUkMTIiLCJlZCQxMiIsImFmJDEyIiwiZmEkMTIiLCJkZSQxMyIsImVkJDEzIiwiYWYkMTMiLCJmYSQxMyIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJmbXR0eV9vZl9jdXN0b20iLCJhcml0eSQwIiwiZm10dHlfb2ZfZm10IiwidHlfcmVzdCIsInByZWNfdHkiLCJ0eV9yZXN0JDAiLCJwcmVjX3R5JDAiLCJ0eV9yZXN0JDEiLCJwcmVjX3R5JDEiLCJ0eV9yZXN0JDIiLCJwcmVjX3R5JDIiLCJ0eV9yZXN0JDMiLCJwcmVjX3R5JDMiLCJmbXR0eSQxIiwiZm10dHkkMiIsImZtdHR5JDMiLCJ0eSQwIiwiZm10dHkkNCIsImZtdHR5JDUiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpIiwidHlwZV9mb3JtYXRfZ2VuIiwiZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0Iiwic3ViX2ZtdHR5X3Jlc3QkMCIsImZtdHR5X3Jlc3QkMCIsInN1Yl9mbXR0eV9yZXN0JDEiLCJzdWJfZm10dHlfcmVzdCQyIiwiZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMyIsImZtdCQyIiwic3ViX2ZtdHR5X3Jlc3QkNCIsImZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDUiLCJmbXQkMyIsInN1Yl9mbXR0eV9yZXN0JDYiLCJmbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ3IiwiZm10JDQiLCJzdWJfZm10dHlfcmVzdCQ4IiwiZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkOSIsImZtdCQ1Iiwic3ViX2ZtdHR5X3Jlc3QkMTAiLCJmbXR0eV9yZXN0JDUiLCJzdWJfZm10dHlfcmVzdCQxMSIsImZtdCQ2Iiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJmbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQxMyIsImZtdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkMTQiLCJmbXR0eV9yZXN0JDciLCJzdWIyX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTUiLCJzdWIyX2ZtdHR5JDAiLCJmbXQkOCIsInN1Yl9mbXR0eV9yZXN0JDE2IiwiZm10dHlfcmVzdCQ4Iiwic3ViMl9mbXR0eSQxIiwic3ViMV9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE3Iiwic3ViMl9mbXR0eSQyIiwic3ViMV9mbXR0eSQwIiwiZm10JDkiLCJzdWJfZm10dHlfcmVzdCQxOCIsImZtdHR5X3Jlc3QkOSIsInN1Yl9mbXR0eV9yZXN0JDE5IiwiZm10JDEwIiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJmbXR0eV9yZXN0JDEwIiwic3ViX2ZtdHR5X3Jlc3QkMjEiLCJmbXQkMTEiLCJzdWJfZm10dHlfcmVzdCQyMiIsImZtdHR5X3Jlc3QkMTEiLCJzdWJfZm10dHlfcmVzdCQyMyIsImZtdCQxMiIsInN1Yl9mbXR0eV9yZXN0JDI0IiwiZm10dHlfcmVzdCQxMiIsInN1Yl9mbXR0eV9yZXN0JDI1IiwiZm10JDEzIiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJmbXRfcmVzdCIsImZtdF9yZXN0JDAiLCJmbXRfcmVzdCQxIiwiZm10X3Jlc3QkMiIsImZtdF9yZXN0JDMiLCJmbXRfcmVzdCQ0IiwiZm10X3Jlc3QkNSIsInByZWMkNCIsImZtdHR5JDYiLCJmbXRfcmVzdCQ2IiwicHJlYyQ1IiwicHJlYyQ2IiwiZm10dHkkNyIsImZtdF9yZXN0JDciLCJwcmVjJDciLCJwcmVjJDgiLCJmbXR0eSQ4IiwiZm10X3Jlc3QkOCIsImZtdHR5JDkiLCJmbXRfcmVzdCQ5IiwiZm10dHkkMTAiLCJmbXRfcmVzdCQxMCIsImZtdHR5JDExIiwiZm10X3Jlc3QkMTEiLCJmbXR0eSQxMiIsImZtdF9yZXN0JDEyIiwiZm10dHkkMTMiLCJzdWJfZm10dHkxIiwiZm10X3Jlc3QkMTMiLCJzdWJfZm10dHkkMSIsImZtdHR5JDE0IiwiZm10JDE0IiwiZm10X3Jlc3QkMTQiLCJmbXR0eSQxNSIsImZtdCQxNSIsImZtdF9yZXN0JDE1IiwiZm10dHkkMTYiLCJmbXQkMTYiLCJmbXRfcmVzdCQxNiIsImZtdHR5JDE3IiwiZm10JDE3IiwiZm10X3Jlc3QkMTciLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5MyIsImZtdDMiLCJmbXQxJDAiLCJmbXR0eTIkMCIsImZtdDIkMCIsImZtdHR5MyQwIiwiZm10MyQwIiwiZm10dHlfcmVzdCQxMyIsImZtdF9yZXN0JDE4IiwiZm10dHkkMTgiLCJmbXQkMTgiLCJmbXR0eV9yZXN0JDE0IiwiZm10X3Jlc3QkMTkiLCJmbXR0eSQxOSIsImZtdCQxOSIsImZtdHR5X3Jlc3QkMTUiLCJmbXRfcmVzdCQyMCIsImZtdHR5JDIwIiwiZm10JDIwIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsImZtdHR5X3Jlc3QkMTYiLCJmbXR0eSQyMSIsImZtdCQyMSIsInN1Yl9mbXR0eSQyIiwic3ViX2ZtdHR5JDMiLCJmbXR0eSQyMiIsImZtdCQyMiIsInN1Yl9mbXR0eSQ0IiwidHlwZV9mb3JtYXQiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImskMyIsImthY2MiLCJrJDQiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaWdub3JlZF9wYXJhbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJrb2MiLCJyZXN0JDI0IiwicmVzdCQyNSIsImZuX29mX2N1c3RvbV9hcml0eSQwIiwiZm5fb2ZfY3VzdG9tX2FyaXR5Iiwib3V0cHV0X2FjYyIsInAkMiIsInAkMyIsInAkNCIsImJ1ZnB1dF9hY2MiLCJzdHJwdXRfYWNjIiwiZmFpbHdpdGhfbWVzc2FnZSIsIm9wZW5fYm94X29mX3N0cmluZyIsImludmFsaWRfYm94IiwicGFyc2Vfc3BhY2VzIiwicGFyc2VfbHdvcmQiLCJwYXJzZV9pbnQiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsInVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCIsImVuZF9pbmQiLCJpbnZhbGlkX2Zvcm1hdF93aXRob3V0IiwiZXhwZWN0ZWRfY2hhcmFjdGVyIiwiZXhwZWN0ZWQiLCJhZGRfbGl0ZXJhbCIsImxpdF9zdGFydCIsInNpemUiLCJwYXJzZV9wb3NpdGl2ZSIsInN0cl9pbmQkMCIsInN0cl9pbmQkMSIsInBhcnNlX2ludGVnZXIiLCJuZXh0X2luZCIsImluY29tcGF0aWJsZV9mbGFnIiwicGN0X2luZCIsIm9wdGlvbiIsInN1YmZtdCIsImNvbXB1dGVfaW50X2NvbnYiLCJwbHVzIiwic3BhY2UiLCJwbHVzJDAiLCJzcGFjZSQwIiwic2VhcmNoX3N1YmZvcm1hdF9lbmQiLCJzdWJfZW5kIiwic3RyX2luZCQyIiwic3ViX2VuZCQwIiwic3RyX2luZCQzIiwic3ViX2VuZCQxIiwic3RyX2luZCQ0Iiwic3RyX2luZCQ1Iiwic3ViX2VuZCQyIiwic3RyX2luZCQ2Iiwic3RyX2luZCQ3IiwicGFyc2VfbWFnaWNfc2l6ZSIsInN0cl9pbmRfMSIsInN0cl9pbmRfMiIsInN0cl9pbmRfMyIsInBhcnNlIiwicGFyc2VfZ29vZF9icmVhayIsImZvcm1hdHRpbmdfbGl0JDAiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJwYXJzZV90YWciLCJpc19vcGVuX3RhZyIsImluZCIsInN1Yl9zdHIiLCJzdWJfZm10Iiwic3ViX2Zvcm1hdCQwIiwiZm9ybWF0dGluZyQwIiwiZm9ybWF0dGluZyIsInBhcnNlX2ZsYWdzIiwibWludXMiLCJzZXRfZmxhZyIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfbGl0ZXJhbCIsInBhcnNlX2FmdGVyX3ByZWNpc2lvbiIsInN5bWIkMCIsIm1pbnVzJDAiLCJwYXJzZV9jb252ZXJzaW9uIiwicGFyc2VfY29udiIsInBhZHByZWMiLCJwbHVzX3VzZWQiLCJoYXNoX3VzZWQiLCJzcGFjZV91c2VkIiwiaWduX3VzZWQiLCJwYWRfdXNlZCIsInByZWNfdXNlZCIsImdldF9wbHVzIiwiZ2V0X2hhc2giLCJnZXRfc3BhY2UiLCJnZXRfaWduIiwiZ2V0X3BhZCIsImdldF9wcmVjIiwiZ2V0X3BhZHByZWMiLCJnZXRfaW50X3BhZCIsImNoZWNrX25vXzAiLCJvcHRfb2ZfcGFkIiwid2lkdGgkMSIsImdldF9wYWRfb3B0IiwiZ2V0X3BhZHByZWNfb3B0IiwiZm10X3Jlc3VsdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwicGFkJDkiLCJmbXRfcmVzdCQyMyIsImlnbm9yZWQkMTAiLCJmbXRfcmVzdCQyNCIsInBhZCQxMCIsImZtdF9yZXN0JDI1Iiwic3ViX2ZtdCQwIiwiZm10X3Jlc3QkMjYiLCJpZ25vcmVkJDExIiwiaWdub3JlZCQzIiwiaWdub3JlZCQ1IiwiaWdub3JlZCQ4Iiwic3BhY2UkMSIsImhhc2gkMSIsInBsdXMkMiIsImtpbmQiLCJpZ25vcmVkJDQiLCJpZ25vcmVkIiwiaWdub3JlZCQwIiwiaWdub3JlZCQxIiwicGx1cyQxIiwiaWduJDAiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImFzc29jMyIsInkyIiwieTEiLCJzcGxpdCQxIiwibWFrZV9zeW1saXN0IiwiaGVscF9hY3Rpb24iLCJhZGRfaGVscCIsInNwZWNsaXN0IiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJib29sX29mX3N0cmluZ19vcHQkMCIsImludF9vZl9zdHJpbmdfb3B0JDAiLCJmbG9hdF9vZl9zdHJpbmdfb3B0IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwiZm9sbG93JDAiLCJrZXl3b3JkIiwibm9fYXJnJDAiLCJmb2xsb3ciLCJub19hcmciLCJnZXRfYXJnJDAiLCJnZXRfYXJnIiwiY29uc3VtZV9hcmckMCIsImNvbnN1bWVfYXJnIiwidHJlYXRfYWN0aW9uJDAiLCJ0cmVhdF9hY3Rpb24iLCJmJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJyJDIiLCJhcmckMiIsImYkMyIsImFyZyQzIiwieCQxIiwiciQzIiwiYXJnJDQiLCJ4JDIiLCJzcGVjcyIsImYkNCIsImFyZyQ1IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiYXJnJDYiLCJuZXdhcmciLCJwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyIsInBhcnNlX2FyZ3ZfZHluYW1pYyIsImN1cnJlbnQkMCIsInBhcnNlX2FyZ3YiLCJtc2ckMCIsIm1zZyQxIiwicGFyc2VfZHluYW1pYyIsInBhcnNlX2V4cGFuZCIsInNlY29uZF93b3JkIiwibG9vcCIsIm1heF9hcmdfbGVuIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsImFsaWduIiwibGltaXQiLCJjb21wbGV0ZWQiLCJrc2QiLCJjdXRjb2wkMCIsInNwYWNlcyQwIiwiY3V0Y29sIiwia3dkX2xlbiIsInNwYWNlcyIsInJlYWRfYXV4IiwidHJpbSIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwiY29udiIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsImNvbnN0cnVjdG9yIiwidG9fc3RyaW5nJDYiLCJwcmludCIsImZjdCIsImNhdGNoJDAiLCJyYXdfYmFja3RyYWNlX2VudHJpZXMiLCJidCIsImNvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImZvcm1hdF9iYWNrdHJhY2Vfc2xvdCIsImlzX3JhaXNlIiwicHJpbnRfcmF3X2JhY2t0cmFjZSIsIm91dGNoYW4iLCJyYXdfYmFja3RyYWNlIiwiYmFja3RyYWNlIiwicHJpbnRfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZV90b19zdHJpbmciLCJiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsImV4bl9zbG90IiwiZXhuX3Nsb3RfaWQiLCJleG5fc2xvdF9uYW1lIiwiZXJyb3JzIiwiZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuIiwic3RhdHVzIiwidW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJlbXB0eV9iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZGVidWdnZXJfaW5fdXNlIiwiZXhuJDAiLCJyYXdfYmFja3RyYWNlJDAiLCJjb25zdCQwIiwiZmxpcCIsIm5lZ2F0ZSIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJ3b3JrIiwiZmluYWxseV9ub19leG4iLCJ3b3JrX2V4biIsIndvcmtfYnQiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJvdXRwdXQkMCIsImRpZ2VzdCIsImlucHV0JDAiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJuZXdfc3RhdGUiLCJhc3NpZ24iLCJzdDEiLCJzdDIiLCJmdWxsX2luaXQiLCJzZWVkIiwic2VlZCQwIiwibWFrZSQzIiwibWFrZV9zZWxmX2luaXQiLCJjb3B5JDUiLCJiaXRzIiwiY3VydmFsIiwibmV3dmFsIiwibmV3dmFsMzAiLCJpbnRhdXgiLCJpbnQkMCIsImJvdW5kIiwiZnVsbF9pbnQiLCJicG9zIiwiYnBvcyQwIiwiaW50MzIiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJib29sIiwiYml0czMyIiwiYml0czY0IiwibmF0aXZlYml0cyIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludDMyJDAiLCJuYXRpdmVpbnQkMCIsImludDY0JDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJiaXRzMzIkMCIsImJpdHM2NCQwIiwibmF0aXZlYml0cyQwIiwiZnVsbF9pbml0JDAiLCJpbml0JDUiLCJzZWxmX2luaXQiLCJnZXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJvbmdvaW5nX3RyYXZlcnNhbCIsImZsaXBfb25nb2luZ190cmF2ZXJzYWwiLCJwYXJhbXMiLCJyYW5kb21pemVkX2RlZmF1bHQiLCJyYW5kb21pemVkIiwicmFuZG9taXplIiwiaXNfcmFuZG9taXplZCIsInBybmciLCJwb3dlcl8yX2Fib3ZlIiwiY3JlYXRlJDMiLCJpbml0aWFsX3NpemUiLCJyYW5kb20iLCJjbGVhciQyIiwicmVzZXQkMCIsImNvcHlfYnVja2V0bGlzdCIsImtleSQwIiwibmV4dCQwIiwiY29weSQ2IiwibGVuZ3RoJDUiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwiY2VsbCQwIiwibmlkeCIsIm1hdGNoIiwibWF0Y2gkMCIsInJlc2l6ZSQwIiwib3NpemUiLCJpdGVyJDEwIiwiZG9fYnVja2V0Iiwib2xkX3RyYXYiLCJmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiZm9sZCQ0IiwiYiQwIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0b19zZXEkOSIsInRibF9kYXRhIiwiYnVjayIsImJ1Y2skMCIsImJ1Y2skMSIsInRvX3NlcV9rZXlzIiwidG9fc2VxX3ZhbHVlcyIsImtleV9pbmRleCIsImJ1Y2tldCIsImsxIiwibmV4dDEiLCJrMiIsIm5leHQyIiwiazMiLCJkMyIsIm5leHQzIiwiZmluZF9hbGwiLCJmaW5kX2luX2J1Y2tldCIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsImNvcHkiLCJzeiIsImhhc2hfcGFyYW0iLCJzZWVkZWRfaGFzaCIsImFkZCQwIiwiZmluZCQxIiwiZmluZF9vcHQkMSIsImZpbmRfYWxsJDAiLCJtZW0kMiIsImFkZF9zZXEkMiIsIm9mX3NlcSQ3IiwicmVidWlsZCIsIndlYWtfY3JlYXRlIiwibGVuZ3RoJDYiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCQwIiwic2V0JDEiLCJnZXQkMiIsImdldF9jb3B5IiwiY2hlY2skMCIsImJsaXQkNCIsImZpbGwkMiIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJzeiQwIiwic3okMSIsImNvdW50X2J1Y2tldCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJpbmRleCIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJuZXd0Iiwib2IiLCJvaCIsInNldHRlciQwIiwibmkiLCJmaW5kX29yIiwiaWZub3Rmb3VuZCIsImZpbmRfc2hhZG93IiwiaWZmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJpZCQwIiwidW5rbm93biIsInBwX2VucXVldWUiLCJ0b2tlbiIsInBwX2luZmluaXR5IiwicHBfb3V0cHV0X3N0cmluZyIsInBwX291dHB1dF9uZXdsaW5lIiwiZm9ybWF0X3BwX3RleHQiLCJ0ZXh0IiwiZm9ybWF0X3N0cmluZyIsImJyZWFrX25ld19saW5lIiwicmVhbF9pbmRlbnQiLCJicmVha19saW5lIiwiYnJlYWtfc2FtZV9saW5lIiwiZm9ybWF0X3BwX3Rva2VuIiwic2l6ZSQwIiwidGFicyIsImFkZF90YWIiLCJscyIsInRhZ19uYW1lIiwibWFya2VyIiwiYnJlYWtzIiwiZml0cyIsIm9mZiIsImJveF90eXBlJDAiLCJvZmYkMCIsImluc2VydGlvbl9wb2ludCIsInRhYnMkMCIsImZpcnN0IiwiaGVhZCIsInRhYiIsIm9mZiQxIiwiaW5zZXJ0aW9uX3BvaW50JDAiLCJ3aWR0aCQyIiwiYm94X3R5cGUkMSIsInRib3giLCJ0YWdfbmFtZSQwIiwibWFya2VyJDAiLCJhZHZhbmNlX2xlZnQiLCJwZW5kaW5nX2NvdW50IiwiZW5xdWV1ZV9hZHZhbmNlIiwiZW5xdWV1ZV9zdHJpbmdfYXMiLCJpbml0aWFsaXplX3NjYW5fc3RhY2siLCJzdGFjayIsInF1ZXVlX2VsZW0iLCJzZXRfc2l6ZSIsImxlZnRfdG90YWwiLCJzY2FuX3B1c2giLCJlbGVtIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfb3Blbl90YWciLCJwcF9jbG9zZV90YWciLCJwcF9zZXRfcHJpbnRfdGFncyIsInBwX3NldF9tYXJrX3RhZ3MiLCJwcF9nZXRfcHJpbnRfdGFncyIsInBwX2dldF9tYXJrX3RhZ3MiLCJwcF9zZXRfdGFncyIsInBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBjdCIsInBvdCIsIm1jdCIsIm1vdCIsInBwX3Jpbml0IiwicHBfZmx1c2hfcXVldWUiLCJwcF9wcmludF9hc19zaXplIiwicHBfcHJpbnRfYXMiLCJpc2l6ZSIsInBwX3ByaW50X3N0cmluZyIsInBwX3ByaW50X2J5dGVzIiwicHBfcHJpbnRfaW50IiwicHBfcHJpbnRfZmxvYXQiLCJwcF9wcmludF9ib29sIiwicHBfcHJpbnRfY2hhciIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2luZGVudCIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJmbHVzaF9idWZmZXJfZm9ybWF0dGVyIiwiZmx1c2hfc3RyX2Zvcm1hdHRlciIsIm1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJzb2IiLCJnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJpdGVtcyIsImFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSIsIml0ZW0iLCJmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2IiLCJvcGVuX2hib3giLCJvcGVuX3Zib3giLCJvcGVuX2h2Ym94Iiwib3Blbl9ob3Zib3giLCJvcGVuX2JveCIsImNsb3NlX2JveCIsIm9wZW5fdGFnIiwiY2xvc2VfdGFnIiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfc3RyaW5nJDAiLCJwcmludF9ieXRlcyQwIiwicHJpbnRfaW50JDAiLCJwcmludF9mbG9hdCQwIiwicHJpbnRfY2hhciQwIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9uZXdsaW5lJDAiLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwidnMiLCJvcHQkMSIsInBwX3ByaW50X3NlcSIsInNlcSQxIiwic2VxJDIiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0Iiwib3V0cHV0X2FjYyQwIiwiYnR5IiwicCQ1IiwicCQ2Iiwic3RycHV0X2FjYyQwIiwic2l6ZSQxIiwia2ZwcmludGYkMCIsImlrZnByaW50ZiQwIiwiaWZwcmludGYkMCIsImZwcmludGYkMCIsInByaW50ZiQwIiwiZXByaW50ZiQwIiwia2RwcmludGYiLCJkcHJpbnRmIiwia3ByaW50ZiIsInNwcmludGYkMCIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsInBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImJwcmludGYkMCIsInBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsInN0cmluZ2lmeSIsInBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImZ1bnMiLCJtYXJrX29wZW5fdGFnIiwibWFya19jbG9zZV90YWciLCJwcmludF9vcGVuX3RhZyIsInByaW50X2Nsb3NlX3RhZyIsInNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsInJlc2V0X3Rva2VuIiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJza2lwX2NoYXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiY3JlYXRlJDQiLCJpbmFtZSIsImZyb21fc3RyaW5nJDEiLCJmcm9tX2Z1bmN0aW9uJDAiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJzdGRpYiIsIm9wZW5faW5fZmlsZSIsIm9wZW5faW4iLCJmcm9tX2ZpbGUiLCJmcm9tX2ZpbGVfYmluIiwiZnJvbV9jaGFubmVsJDAiLCJjbG9zZV9pbiIsImljJDAiLCJtZW1vIiwibWVtb19mcm9tX2ljIiwibWVtb19mcm9tX2NoYW5uZWwiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfZmxvYXQiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja190aGlzX2NoYXIiLCJjaGVja19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwidG9rZW5fZmxvYXQiLCJzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciIsInNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJzY2FuX2NoYXIiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwic2Nhbl9jYW1sX2NoYXIiLCJmaW5kX3N0b3AiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsImdldF9jb3VudGVyIiwid2lkdGhfb2ZfcGFkX29wdCIsInN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQiLCJmbXRpbmciLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzJDAiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzJDAiLCJyZWFkZXIiLCJuZXdfayIsInJlYWRlcnNfcmVzdCIsInRha2VfZm9ybWF0X3JlYWRlcnMiLCJmbXQkMjMiLCJmbXQkMjQiLCJmbXQkMjUiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIiwibWFrZV9zY2FuZiIsInJlYWRlcnMiLCJzY2FuJDAiLCJzdHJfcmVzdCIsInBhZF9wcmVjX3NjYW5mIiwic2NhbiQxIiwic2NhbiQyIiwic2NhbiQzIiwic2NhbiQ0IiwiY29udiQwIiwic2NhbiQ1IiwiY29udiQxIiwic2NhbiQ2IiwiY29udiQyIiwic2NhbiQ3Iiwic2NhbiQ4IiwiZm10aW5nX2xpdCQwIiwic3RwJDAiLCJzJDIiLCJzdHJfcmVzdCQwIiwicmVzdCQyNiIsImFyZ19yZXN0Iiwia3NjYW5mIiwiZWYiLCJhcHBseSIsImFyZ3MkMCIsImV4YyIsImJzY2FuZiIsImtzc2NhbmYiLCJzc2NhbmYiLCJzY2FuZiIsImJzY2FuZl9mb3JtYXQiLCJmb3JtYXQiLCJzc2NhbmZfZm9ybWF0IiwiZm9ybWF0X2Zyb21fc3RyaW5nIiwidW5lc2NhcGVkIiwia2ZzY2FuZiIsImZzY2FuZiIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwicGFyYW1zJDAiLCJpbml0aWFsX29iamVjdF9zaXplIiwiZHVtbXlfaXRlbSIsInRhZyIsImNvbXBhcmUkMTQiLCJjb21wYXJlJDE1IiwiY29tcGFyZSQxNiIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwicmVzaXplJDEiLCJhcnJheSIsIm5ld19zaXplIiwib2xkX3NpemUiLCJuZXdfYnVjayIsIm1ldGhvZF9jb3VudCIsImluc3RfdmFyX2NvdW50IiwibmV3X21ldGhvZCIsInRhYmxlIiwiZ2V0X21ldGhvZF9sYWJlbCIsImxhYmVsIiwiZ2V0X21ldGhvZF9sYWJlbHMiLCJuYW1lcyIsInNldF9tZXRob2QiLCJlbGVtZW50IiwiZ2V0X21ldGhvZCIsInRvX2xpc3QkMyIsImFyciIsIm5hcnJvdyIsInZhcnMiLCJ2aXJ0X21ldGhzIiwiY29uY3JfbWV0aHMiLCJ2YXJzJDAiLCJ2aXJ0X21ldGhzJDAiLCJjb25jcl9tZXRocyQwIiwidmlydF9tZXRoX2xhYnMiLCJjb25jcl9tZXRoX2xhYnMiLCJsYWIiLCJ0dmFycyIsImJ5X25hbWUiLCJieV9sYWJlbCIsIm1ldCIsImhtIiwid2lkZW4iLCJzYXZlZF92YXJzIiwic2F2ZWRfaGlkZGVuX21ldGhzIiwibmV3X3Nsb3QiLCJuZXdfdmFyaWFibGUiLCJ0b19hcnJheSIsIm5ld19tZXRob2RzX3ZhcmlhYmxlcyIsIm1ldGhzIiwidmFscyIsIm1ldGhzJDAiLCJubWV0aHMiLCJudmFscyIsImdldF92YXJpYWJsZSIsImdldF92YXJpYWJsZXMiLCJhZGRfaW5pdGlhbGl6ZXIiLCJjcmVhdGVfdGFibGUiLCJwdWJsaWNfbWV0aG9kcyIsInRhZ3MiLCJpbml0X2NsYXNzIiwiaW5oZXJpdHMiLCJjbGEiLCJzdXBlciQwIiwibm0iLCJtYWtlX2NsYXNzIiwicHViX21ldGhzIiwiY2xhc3NfaW5pdCIsImVudl9pbml0IiwibWFrZV9jbGFzc19zdG9yZSIsImluaXRfdGFibGUiLCJkdW1teV9jbGFzcyIsImxvYyIsInVuZGVmIiwiY3JlYXRlX29iamVjdCIsImNyZWF0ZV9vYmplY3Rfb3B0Iiwib2JqXzAiLCJpdGVyX2YiLCJydW5faW5pdGlhbGl6ZXJzIiwiaW5pdHMiLCJydW5faW5pdGlhbGl6ZXJzX29wdCIsImNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaSIsImdldF9kYXRhJDAiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290IiwidGFibGVzJDIiLCJ0YWJsZXMkMCIsInRhYmxlcyQxIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJjbG8kMCIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIngkMyIsIm4kNyIsIngkNCIsIm4kOCIsIm4kOSIsIngkNSIsImYkOCIsImUkMiIsIm4kMTAiLCJ4JDYiLCJmJDkiLCJuJDExIiwieCQ3IiwibiQxMiIsIngkOCIsIm4kMTMiLCJuJDE0IiwiZSQzIiwibiQxNSIsIm0kMiIsIngkOSIsIm0kMyIsIm4kMTYiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ1IiwibiQxOCIsInN0YXRzJDAiLCJpbml0X21vZF9ibG9jayIsImNvbXBzJDAiLCJtb2R1Iiwic2hhcGUiLCJmbiQwIiwiY29tcHMiLCJpbml0X21vZCIsInVwZGF0ZV9tb2RfYmxvY2siLCJjbCIsInVwZGF0ZV9tb2QiLCJpbml0aWFsX2J1ZmZlciIsImJ1ZmZlciIsImJ1ZnBvcyIsInJlc2V0X2J1ZmZlciIsInN0b3JlIiwibmV3YnVmZmVyIiwiZ2V0X3N0cmluZyIsIm1ha2VfbGV4ZXIiLCJrZXl3b3JkcyIsImt3ZF90YWJsZSIsImlkZW50X29yX2tleXdvcmQiLCJrZXl3b3JkX29yX2Vycm9yIiwiY29tbWVudCIsImVzY2FwZSIsImVuZF9leHBvbmVudF9wYXJ0IiwiZXhwb25lbnRfcGFydCIsIm51bWJlciIsImlkZW50MiIsIm5lZ19udW1iZXIiLCJuZXh0X3Rva2VuJDAiLCJtYXliZV9jb21tZW50IiwibmV4dF90b2tlbiIsImhrZXkiLCJjbGVhbiIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJyZXBsYWNlX2J1Y2tldCIsIm5ld19kIiwiYnVja2V0X2xlbmd0aF9hbGl2ZSIsInN0YXRzX2FsaXZlIiwiY3JlYXRlJDUiLCJnZXRfa2V5JDAiLCJnZXRfa2V5X2NvcHkkMCIsInNldF9rZXkkMCIsInVuc2V0X2tleSQwIiwiY2hlY2tfa2V5JDAiLCJibGl0X2tleSQwIiwiZ2V0X2RhdGEkMSIsImdldF9kYXRhX2NvcHkiLCJzZXRfZGF0YSIsInVuc2V0X2RhdGEiLCJjaGVja19kYXRhIiwiYmxpdF9kYXRhIiwibWFrZSQ0IiwiZXBoIiwicXVlcnkiLCJzZXRfa2V5X2RhdGEiLCJtYWtlJDUiLCJhZGQkMSIsInRlc3Rfa2V5IiwicmVtb3ZlJDAiLCJmaW5kJDIiLCJsZW5ndGgkNyIsImNsZWFyJDMiLCJjcmVhdGUkNiIsImdldF9rZXkxIiwiZ2V0X2tleTFfY29weSIsInNldF9rZXkxIiwidW5zZXRfa2V5MSIsImNoZWNrX2tleTEiLCJnZXRfa2V5MiIsImdldF9rZXkyX2NvcHkiLCJzZXRfa2V5MiIsInVuc2V0X2tleTIiLCJjaGVja19rZXkyIiwiYmxpdF9rZXkxIiwiYmxpdF9rZXkyIiwiYmxpdF9rZXkxMiIsImdldF9kYXRhJDIiLCJnZXRfZGF0YV9jb3B5JDAiLCJzZXRfZGF0YSQwIiwidW5zZXRfZGF0YSQwIiwiY2hlY2tfZGF0YSQwIiwiYmxpdF9kYXRhJDAiLCJtYWtlJDYiLCJrZXkxIiwia2V5MiIsInF1ZXJ5JDAiLCJrMiQwIiwiazEkMCIsIm1ha2UkNyIsImFkZCQyIiwidGVzdF9rZXlzIiwicmVtb3ZlJDEiLCJmaW5kJDMiLCJsZW5ndGgkOCIsImNsZWFyJDQiLCJjcmVhdGUkNyIsImxlbmd0aCQ5IiwiZ2V0X2tleSQxIiwiZ2V0X2tleV9jb3B5JDEiLCJzZXRfa2V5JDEiLCJ1bnNldF9rZXkkMSIsImNoZWNrX2tleSQxIiwiYmxpdF9rZXkkMSIsImdldF9kYXRhJDMiLCJnZXRfZGF0YV9jb3B5JDEiLCJzZXRfZGF0YSQxIiwidW5zZXRfZGF0YSQxIiwiY2hlY2tfZGF0YSQxIiwiYmxpdF9kYXRhJDEiLCJtYWtlJDgiLCJxdWVyeSQxIiwia2kiLCJrMCIsIm1ha2UkOSIsImFkZCQzIiwidGVzdF9rZXlzJDAiLCJyZW1vdmUkMiIsImZpbmQkNCIsImxlbmd0aCQxMCIsImNsZWFyJDUiLCJnZW5lcmljX2Jhc2VuYW1lIiwiaXNfZGlyX3NlcCIsImdlbmVyaWNfZGlybmFtZSIsImlzX3JlbGF0aXZlIiwiaXNfaW1wbGljaXQiLCJjaGVja19zdWZmaXgiLCJzdWZmIiwiY2hvcF9zdWZmaXhfb3B0IiwibGVuX2YiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lIiwicXVvdGUkMCIsImFkZF9icyIsImxvb3AkMCIsImxvb3BfYnMiLCJxdW90ZV9jbWRfZmlsZW5hbWUiLCJxdW90ZV9jb21tYW5kJDAiLCJkcml2ZV9hbmRfcGF0aCIsImRpcm5hbWUkMCIsInBhdGgiLCJkcml2ZSIsImRpciIsImJhc2VuYW1lJDAiLCJiYXNlbmFtZSQxIiwiZGlybmFtZSQxIiwibnVsbCQzIiwiY3VycmVudF9kaXJfbmFtZSQyIiwicGFyZW50X2Rpcl9uYW1lJDIiLCJkaXJfc2VwJDIiLCJpc19kaXJfc2VwJDEiLCJpc19yZWxhdGl2ZSQxIiwiaXNfaW1wbGljaXQkMSIsImNoZWNrX3N1ZmZpeCQxIiwiY2hvcF9zdWZmaXhfb3B0JDEiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQxIiwicXVvdGVfY29tbWFuZCQxIiwiYmFzZW5hbWUkMiIsImRpcm5hbWUkMiIsImNvbmNhdCQ0IiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiZXh0ZW5zaW9uIiwiY2hvcF9leHRlbnNpb24iLCJyZW1vdmVfZXh0ZW5zaW9uIiwicHJuZyQwIiwidGVtcF9maWxlX25hbWUiLCJ0ZW1wX2RpciIsInJuZCIsImN1cnJlbnRfdGVtcF9kaXJfbmFtZSIsInNldF90ZW1wX2Rpcl9uYW1lIiwiZ2V0X3RlbXBfZGlyX25hbWUiLCJ0ZW1wX2ZpbGUiLCJ0cnlfbmFtZSIsImNvdW50ZXIkMSIsIm9wZW5fdGVtcF9maWxlIiwic3RoJDAiLCJwZXJtcyIsInN0aCQxIiwiYWRkJDQiLCJzdWIkNCIsIm5lZyIsImNvbmoiLCJtdWwiLCJkaXYiLCJpbnYiLCJub3JtMiIsIm5vcm0iLCJxJDAiLCJwb2xhciIsInNxcnQiLCJ3JDAiLCJleHAiLCJsb2ciLCJwb3ciLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDhfc2lnbmVkIiwiaW50OF91bnNpZ25lZCIsImludDE2X3NpZ25lZCIsImludDE2X3Vuc2lnbmVkIiwiaW50MzIkMSIsImludDY0JDEiLCJpbnQkMiIsIm5hdGl2ZWludCQxIiwiY29tcGxleDMyIiwiY29tcGxleDY0Iiwia2luZF9zaXplX2luX2J5dGVzIiwiY19sYXlvdXQiLCJmb3J0cmFuX2xheW91dCIsImNsb29wIiwiaWR4IiwiY29sIiwiZmxvb3AiLCJpbml0JDYiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJjcmVhdGUkOCIsImdldCQzIiwic2V0JDIiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQ5IiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDciLCJvZl9hcnJheSIsImJhIiwiY3JlYXRlJDEwIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDgiLCJvZl9hcnJheSQwIiwicm93IiwiY3JlYXRlJDExIiwiZGltMyIsInNpemVfaW5fYnl0ZXMkMyIsInNsaWNlX2xlZnRfMSIsInNsaWNlX3JpZ2h0XzEiLCJzbGljZV9sZWZ0XzIiLCJzbGljZV9yaWdodF8yIiwiaW5pdCQ5Iiwib2ZfYXJyYXkkMSIsImFycmF5MF9vZl9nZW5hcnJheSIsImFycmF5MV9vZl9nZW5hcnJheSIsImFycmF5Ml9vZl9nZW5hcnJheSIsImFycmF5M19vZl9nZW5hcnJheSIsInJlc2hhcGVfMCIsInJlc2hhcGVfMSIsInJlc2hhcGVfMiIsInJlc2hhcGVfMyIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImxlbmd0aCQxMSIsImlucHV0X2NoYXIkMCIsImlucHV0X2J5dGUkMCIsImlucHV0X2xpbmUkMCIsInJlYWxseV9pbnB1dCQwIiwicmVhbGx5X2lucHV0X3N0cmluZyQwIiwicmVhZF91cHRvIiwiZW5zdXJlIiwibmV3X2xlbiQwIiwibmV3X2xlbiQxIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSQwIiwiaW5pdGlhbF9zaXplJDEiLCJucmVhZCIsImJ1ZiQwIiwiYnVmJDEiLCJyZW0iLCJ3aXRoX29wZW4kMCIsIndpdGhfb3Blbl9iaW4kMCIsIndpdGhfb3Blbl90ZXh0JDAiLCJ3aXRoX29wZW5fZ2VuJDAiLCJzZWVrJDAiLCJwb3MkMCIsImxlbmd0aCQxMiIsInlvanNvbl9vZl9zb3VyY2VfcG9zaXRpb24iLCJ2X2xhd19oZWFkaW5ncyIsInZfZW5kX2NvbHVtbiIsInZfZW5kX2xpbmUiLCJ2X3N0YXJ0X2NvbHVtbiIsInZfc3RhcnRfbGluZSIsInZfZmlsZW5hbWUiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJhcmckMSIsImJuZHMkMSIsImFyZyQyIiwiYm5kcyQyIiwiYXJnJDMiLCJibmRzJDMiLCJhcmckNCIsImJuZHMkNCIsIm1vbmV5X29mX2NlbnRzX3N0cmluZyIsImNlbnRzIiwibW9uZXlfb2ZfdW5pdHNfaW50IiwidW5pdHMiLCJtb25leV9vZl9jZW50c19pbnRlZ2VyIiwibW9uZXlfdG9fZmxvYXQiLCJtIiwibW9uZXlfb2ZfZGVjaW1hbCIsImQiLCJtb25leV90b19zdHJpbmciLCJtb25leV90b19jZW50cyIsIm1vbmV5X3JvdW5kIiwiZGVjaW1hbF9vZl9zdHJpbmciLCJkZWNpbWFsX3RvX2Zsb2F0IiwiZGVjaW1hbF9vZl9mbG9hdCIsImRlY2ltYWxfb2ZfaW50ZWdlciIsImRlY2ltYWxfdG9fc3RyaW5nIiwibWF4X3ByZWNfZGlnaXRzIiwiaSIsInNpZ24iLCJuIiwiaW50X3BhcnQiLCJuJDAiLCJkaWdpdHMiLCJsZWFkaW5nX3plcm9lcyIsImRpZ2l0IiwibnVtX2xlYWRpbmdfemVyb2VzIiwiaSQwIiwiZm10IiwiZGVjaW1hbF9yb3VuZCIsInEiLCJkZWNpbWFsX29mX21vbmV5IiwiaW50ZWdlcl9vZl9zdHJpbmciLCJzIiwiaW50ZWdlcl90b19zdHJpbmciLCJpbnRlZ2VyX3RvX2ludCIsImludGVnZXJfb2ZfaW50IiwiaW50ZWdlcl9leHBvbmVudGlhdGlvbiIsImUiLCJpbnRlZ2VyX2xvZzIiLCJ5ZWFyX29mX2RhdGUiLCJ5IiwibW9udGhfbnVtYmVyX29mX2RhdGUiLCJpc19sZWFwX3llYXIiLCJ5JDAiLCJkYXlfb2ZfbW9udGhfb2ZfZGF0ZSIsImQkMCIsImRhdGVfb2ZfbnVtYmVycyIsInllYXIiLCJtb250aCIsImRheSIsImRhdGVfdG9fc3RyaW5nIiwiZmlyc3RfZGF5X29mX21vbnRoIiwibGFzdF9kYXlfb2ZfbW9udGgiLCJkdXJhdGlvbl9vZl9udW1iZXJzIiwiZHVyYXRpb25fdG9fc3RyaW5nIiwiZHVyYXRpb25fdG9feWVhcnNfbW9udGhzX2RheXMiLCJ5b2pzb25fb2ZfcnVudGltZV92YWx1ZSIsInYwJDQiLCJ2MCQ1IiwidjAkNiIsInYwIiwidjAkNyIsInYwJDAiLCJ2MCQ4IiwidjAkMSIsInYwJDkiLCJ2MCQyIiwidjAkMTAiLCJ2MCQzIiwidjEiLCJ2MCQxMSIsInYwJDEyIiwidjEkMCIsInYwJDEzIiwidjAkMTQiLCJ2MSQxIiwidjEkMiIsInYxJDMiLCJ2MCQxNSIsInYwJDE2IiwidjEkNCIsInYwJDE3IiwidjAkMTgiLCJ1bmVtYmVkZGFibGUiLCJlbWJlZF91bml0IiwiZW1iZWRfYm9vbCIsIngiLCJlbWJlZF9tb25leSIsImVtYmVkX2ludGVnZXIiLCJlbWJlZF9kZWNpbWFsIiwiZW1iZWRfZGF0ZSIsImVtYmVkX2R1cmF0aW9uIiwiZW1iZWRfYXJyYXkiLCJmIiwieW9qc29uX29mX2luZm9ybWF0aW9uIiwidiIsInlvanNvbl9vZl92YXJfZGVmIiwidl9mdW5fY2FsbHMiLCJ2X3ZhbHVlIiwidl9uYW1lIiwidl9wb3MiLCJ5b2pzb25fb2ZfZnVuX2NhbGwiLCJ2X291dHB1dCIsInZfYm9keSIsInZfaW5wdXQiLCJ2X2Z1bl9uYW1lIiwieW9qc29uX29mX2V2ZW50Iiwidl9pbnB1dHMiLCJsb2dfcmVmIiwicmVzZXRfbG9nIiwicmV0cmlldmVfbG9nIiwibG9nX2JlZ2luX2NhbGwiLCJpbmZvIiwibG9nX2VuZF9jYWxsIiwibG9nX3ZhcmlhYmxlX2RlZmluaXRpb24iLCJlbWJlZCIsImxvZ19kZWNpc2lvbl90YWtlbiIsInBvcyIsInBwX2V2ZW50cyIsIm9wdCIsInBwZiIsImV2ZW50cyIsInN0aCIsImlzX2ZpcnN0X2NhbGwiLCJmb3JtYXRfdmFyX2RlZiIsInZhciQwIiwiZm9ybWF0X3Bvc19vcHQiLCJmb3JtYXRfdmFsdWUiLCJmb3JtYXRfdmFyX2RlZnMiLCJmb3JtYXRfdmFyX2RlZl93aXRoX2Z1bl9jYWxscyIsInZhcl93aXRoX2Z1biIsImZ1bl9jYWxsIiwiZm9ybWF0X2V2ZW50IiwieCQwIiwieCQxIiwieCQyIiwieCQzIiwieCQ0IiwibmFtZSIsImF0dHJzIiwibmFtZSQwIiwidmFsdWUiLCJlbHRzIiwidmFyX2RlZl93aXRoX2Z1biIsIm91dHB1dCIsImJvZHkiLCJpbnB1dCIsImZ1bl9uYW1lIiwiYm9keSQwIiwiaW5wdXRzIiwiZW1wdHkiLCJlbXB0eV9jdHgiLCJyYXdfZXZlbnRfdG9fc3RyaW5nIiwibmFtZSQxIiwicGFyc2VfcmF3X2V2ZW50cyIsInJhd19ldmVudHMiLCJuYl9yYXdfZXZlbnRzIiwiaXNfZnVuY3Rpb25fY2FsbCIsImluZm9zIiwiaXNfdmFyX2RlZiIsInBhcnNlX2Z1bl9jYWxsIiwicmVzdCIsImJvZHlfY3R4IiwicGFyc2VfZXZlbnRzIiwiYm9keV9yZXYiLCJyZXN0JDAiLCJ2YXJfZGVmIiwib3V0cHV0JDAiLCJjdHgiLCJjdHgkMCIsInZhcl9uYW1lIiwibHMkMCIsImN0eCQxIiwicmVzdCQxIiwiY3R4JDIiLCJpbmZvcyQwIiwicmVzdCQyIiwiY3R4JDMiLCJyZXN0JDMiLCJ2YXJfZG90X3N1YnNjb3BlX3Zhcl9uYW1lIiwibHMiLCJjdHgkNCIsImluZm9zJDEiLCJyYXdfZXZlbnRzJDAiLCJmdW5fY2FsbHMiLCJyZXN0JDQiLCJpbmZvcyQyIiwiZnVuX2NhbGwkMCIsImZ1bl9jYWxscyQxIiwiZnVuX2NhbGxzJDAiLCJyZXN0JDYiLCJ2YWx1ZSQwIiwibmFtZSQyIiwidmFyX2NvbXAiLCJyZXN0JDUiLCJjdHgkNiIsImN0eCQ1IiwibXNnIiwiaGFuZGxlX2RlZmF1bHQiLCJleGNlcHRpb25zIiwianVzdCIsImNvbnMiLCJhY2MiLCJleGNlcHQiLCJuZXdfdmFsIiwiaGFuZGxlX2RlZmF1bHRfb3B0IiwiYiIsIm5vX2lucHV0IiwiY29tcGFyZV9wZXJpb2RzIiwicDEiLCJwMiIsInAxX2RheXMiLCJwMl9kYXlzIiwiZXF1YWxfcGVyaW9kcyIsIm9fbm90Iiwib19sZW5ndGgiLCJhIiwib19taW51c19pbnQiLCJpMSIsIm9fbWludXNfcmF0Iiwib19taW51c19tb24iLCJtMSIsIm9fbWludXNfZHVyIiwib19hbmQiLCJvX29yIiwib194b3IiLCJvX2VxIiwib19tYXAiLCJvX3JlZHVjZSIsImRmdCIsImxlbiIsInIiLCJvX2NvbmNhdCIsIm9fZmlsdGVyIiwib19hZGRfaW50X2ludCIsImkyIiwib19hZGRfcmF0X3JhdCIsIm9fYWRkX21vbl9tb24iLCJtMiIsIm9fYWRkX2RhdF9kdXIiLCJkYSIsImR1Iiwib19hZGRfZHVyX2R1ciIsIm9fc3ViX2ludF9pbnQiLCJvX3N1Yl9yYXRfcmF0Iiwib19zdWJfbW9uX21vbiIsIm9fc3ViX2RhdF9kYXQiLCJvX3N1Yl9kYXRfZHVyIiwiZGF0IiwiZHVyIiwib19zdWJfZHVyX2R1ciIsIm9fbXVsdF9pbnRfaW50Iiwib19tdWx0X3JhdF9yYXQiLCJvX211bHRfbW9uX3JhdCIsImkxX2FicyIsImkyX2FicyIsInNpZ25faW50IiwicmF0X3Jlc3VsdCIsInJlbWFpbmRlciIsInJlcyIsIm9fbXVsdF9kdXJfaW50Iiwib19kaXZfaW50X2ludCIsIm9fZGl2X3JhdF9yYXQiLCJvX2Rpdl9tb25fbW9uIiwib19kaXZfbW9uX3JhdCIsInIxIiwib19sdF9pbnRfaW50Iiwib19sdF9yYXRfcmF0Iiwib19sdF9tb25fbW9uIiwib19sdF9kdXJfZHVyIiwiZDEiLCJkMiIsIm9fbHRfZGF0X2RhdCIsIm9fbHRlX2ludF9pbnQiLCJvX2x0ZV9yYXRfcmF0Iiwib19sdGVfbW9uX21vbiIsIm9fbHRlX2R1cl9kdXIiLCJvX2x0ZV9kYXRfZGF0Iiwib19ndF9pbnRfaW50Iiwib19ndF9yYXRfcmF0Iiwib19ndF9tb25fbW9uIiwib19ndF9kdXJfZHVyIiwib19ndF9kYXRfZGF0Iiwib19ndGVfaW50X2ludCIsIm9fZ3RlX3JhdF9yYXQiLCJvX2d0ZV9tb25fbW9uIiwib19ndGVfZHVyX2R1ciIsIm9fZ3RlX2RhdF9kYXQiLCJvX2VxX2ludF9pbnQiLCJvX2VxX3JhdF9yYXQiLCJvX2VxX21vbl9tb24iLCJvX2VxX2R1cl9kdXIiLCJvX2VxX2RhdF9kYXQiLCJvX2ZvbGQiLCJvX25vdCQwIiwib19sZW5ndGgkMCIsIm9fdG9yYXRfaW50Iiwib190b3JhdF9tb24iLCJvX3RvbW9uZXlfcmF0Iiwib19nZXREYXkiLCJvX2dldE1vbnRoIiwib19nZXRZZWFyIiwib19maXJzdERheU9mTW9udGgiLCJvX2xhc3REYXlPZk1vbnRoIiwib19yb3VuZF9tb24iLCJvX3JvdW5kX3JhdCIsIm9fbWludXNfaW50JDAiLCJvX21pbnVzX3JhdCQwIiwib19taW51c19tb24kMCIsIm9fbWludXNfZHVyJDAiLCJvX2FuZCQwIiwib19vciQwIiwib194b3IkMCIsIm9fZXEkMCIsIm9fbWFwJDAiLCJvX3JlZHVjZSQwIiwib19jb25jYXQkMCIsIm9fZmlsdGVyJDAiLCJvX2FkZF9pbnRfaW50JDAiLCJvX2FkZF9yYXRfcmF0JDAiLCJvX2FkZF9tb25fbW9uJDAiLCJvX2FkZF9kYXRfZHVyJDAiLCJvX2FkZF9kdXJfZHVyJDAiLCJvX3N1Yl9pbnRfaW50JDAiLCJvX3N1Yl9yYXRfcmF0JDAiLCJvX3N1Yl9tb25fbW9uJDAiLCJvX3N1Yl9kYXRfZGF0JDAiLCJvX3N1Yl9kYXRfZHVyJDAiLCJvX3N1Yl9kdXJfZHVyJDAiLCJvX211bHRfaW50X2ludCQwIiwib19tdWx0X3JhdF9yYXQkMCIsIm9fbXVsdF9tb25fcmF0JDAiLCJvX211bHRfZHVyX2ludCQwIiwib19kaXZfaW50X2ludCQwIiwib19kaXZfcmF0X3JhdCQwIiwib19kaXZfbW9uX21vbiQwIiwib19kaXZfbW9uX3JhdCQwIiwib19sdF9pbnRfaW50JDAiLCJvX2x0X3JhdF9yYXQkMCIsIm9fbHRfbW9uX21vbiQwIiwib19sdF9kdXJfZHVyJDAiLCJvX2x0X2RhdF9kYXQkMCIsIm9fbHRlX2ludF9pbnQkMCIsIm9fbHRlX3JhdF9yYXQkMCIsIm9fbHRlX21vbl9tb24kMCIsIm9fbHRlX2R1cl9kdXIkMCIsIm9fbHRlX2RhdF9kYXQkMCIsIm9fZ3RfaW50X2ludCQwIiwib19ndF9yYXRfcmF0JDAiLCJvX2d0X21vbl9tb24kMCIsIm9fZ3RfZHVyX2R1ciQwIiwib19ndF9kYXRfZGF0JDAiLCJvX2d0ZV9pbnRfaW50JDAiLCJvX2d0ZV9yYXRfcmF0JDAiLCJvX2d0ZV9tb25fbW9uJDAiLCJvX2d0ZV9kdXJfZHVyJDAiLCJvX2d0ZV9kYXRfZGF0JDAiLCJvX2VxX2ludF9pbnQkMCIsIm9fZXFfcmF0X3JhdCQwIiwib19lcV9tb25fbW9uJDAiLCJvX2VxX2R1cl9kdXIkMCIsIm9fZXFfZGF0X2RhdCQwIiwib19mb2xkJDAiLCJleG4iLCJtb2R1bGUiLCJnbG9iYWxUaGlzIiwibnVsbCIsInVuZGVmaW5lZCIsImpzb29fZXhwb3J0cyIsImV2ZW50IiwiZHVyYXRpb25fb2ZfanNvbyIsImQiLCJkdXJhdGlvbl90b19qc29vIiwiZGF5cyIsIm1vbnRocyIsInllYXJzIiwiZGF0ZV9vZl9qc29vIiwiZCQwIiwiZCQxIiwiZGF5IiwibW9udGgiLCJ5ZWFyIiwiZGF0ZV90b19qc29vIiwiZXZ0IiwicG9zIiwidiIsImluZm8iLCJldmVudCIsImV2ZW50X21hbmFnZXIiLCJleGVjdXRlX29yX3Rocm93X2Vycm9yIiwiZiIsInRocm93X2Vycm9yIiwiZGVzY3IiLCJwb3MkMCIsInBvcyQxIiwiZW1iZWRfcHJpc2VfZW5fY2hhcmdlIiwieCIsIngkMCIsIngkMSIsIngkMiIsIngkMyIsIngkNCIsImVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3NjbyIsImVtYmVkX3ByaXNlX2VuX2NvbXB0ZSIsImVtYmVkX3ZlcnNlbWVudF9hbGxvY2F0aW9ucyIsImVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaSIsIngkNSIsIngkNiIsIngkNyIsImVtYmVkX2NvbGxlY3Rpdml0ZSIsIngkOCIsImVtYmVkX2FsbG9jYXRpb25fZmFtaWxpYWxlc19hdiIsImVtYmVkX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMiLCJlbWJlZF9zbWljIiwiZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvIiwiZW1iZWRfaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhIiwiZW1iZWRfZW5mYW50X2VudHJlZSIsImVtYmVkX2VuZmFudCIsImVtYmVkX2VuZmFudF9sZV9wbHVzX2FnZSIsImVtYmVkX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMiLCJlbWJlZF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2kiLCJlbWJlZF9hbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXYkMCIsImVtYmVkX2VuZmFudF9sZV9wbHVzX2FnZV9pbiIsImVtYmVkX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaSIsImVtYmVkX3NtaWNfaW4iLCJlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW8kMCIsImVtYmVkX2ludGVyZmFjZV9hbGxvY2F0aW9uc19mYSQwIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwIiwiYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zIiwiZW5mYW50X2xlX3BsdXNfYWdlIiwiZW5mYW50X2xlX3BsdXNfYWdlX2luIiwiZW5mYW50cyIsInBvdGVudGllbF9wbHVzX2FnZV8xIiwicG90ZW50aWVsX3BsdXNfYWdlXzIiLCJsZV9wbHVzX2FnZSIsInNtaWMiLCJzbWljX2luIiwiZGF0ZV9jb3VyYW50ZSIsInJlc2lkZW5jZSIsImJydXRfaG9yYWlyZSIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSIsIm1vbnRhbnQiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiIsImFnZV9sNTEyXzNfMiIsInNtaWNfZG90X2RhdGVfY291cmFudGUiLCJzbWljX2RvdF9yZXNpZGVuY2UiLCJyZXN1bHQiLCJzbWljX2RvdF9icnV0X2hvcmFpcmUiLCJyZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSIsInBsYWZvbmRfbDUxMl8zXzIiLCJwYXJhbSIsImNvbmRpdGlvbnNfaG9yc19hZ2UiLCJkcm9pdF9vdXZlcnQiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiIsInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybSIsInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybSQwIiwicmVzc291cmNlc19tZW5hZ2UiLCJlbmZhbnRzX2FfY2hhcmdlIiwiYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlIiwicHJpc2VfZW5fY29tcHRlIiwibm9tYnJlX2VuZmFudHNfYWxpbmVhXzJfbDUyMV8zIiwidmVyc2lvbl9hdnJpbF8yMDA4X2RvdF9hZ2VfbWluIiwiYm1hZl9kb3RfZGF0ZV9jb3VyYW50ZSIsInJlc3VsdCQwIiwiYm1hZl9kb3RfbW9udGFudCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3ByZSIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlcyIsInJlc3VsdCQxIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfY29uIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfYWdlIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnIiwiZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9lbmZhbnRzIiwicmVzdWx0JDIiLCJlbmZhbnRfbGVfcGx1c19hZ2VfZG90X2xlX3BsdXMiLCJlbmZhbnQiLCJlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF8iLCJlc3RfZW5mYW50X2xlX3BsdXNfYWdlIiwicGxhZm9uZF9pX2lfZDUyMV8zIiwicGxhZm9uZF9pX2Q1MjFfMyIsImRyb2l0X291dmVydF9jb21wbGVtZW50IiwiZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlIiwibW9udGFudF9pbml0aWFsX2Jhc2VfcXVhdHJpZW1lIiwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lIiwibm9tYnJlX3RvdGFsX2VuZmFudHMiLCJzdW0xIiwic3VtMiIsIm5vbWJyZV9tb3llbl9lbmZhbnRzIiwibW9udGFudF9pbml0aWFsX2Jhc2VfcHJlbWllcl9lIiwiZHJvaXRfb3V2ZXJ0X2Jhc2UiLCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbiIsImNvbXBsZW1lbnRfZGVncmVzc2lmIiwibW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV9wYXJfIiwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lJDAiLCJtb250YW50X2luaXRpYWxfYmFzZV9kZXV4aWVtZV8iLCJyYXBwb3J0X2VuZmFudHNfdG90YWxfbW95ZW4iLCJtb250YW50X2luaXRpYWxfbWV0cm9wb2xlX21ham8iLCJtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlIiwibW9udGFudF9pbml0aWFsX2Jhc2UiLCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvbiIsIm1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyXyIsIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9iYSIsIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9tYSIsIm1vbnRhbnRfdmVyc2VfYmFzZSIsIm1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbiIsIm1vbnRhbnRfYmFzZV9jb21wbGVtZW50X3BvdXJfYiIsIm1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyXyQwIiwibW9udGFudF92ZXJzZSIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCIsImlfZGF0ZV9jb3VyYW50ZSIsImlfZW5mYW50cyIsImlfcmVzc291cmNlc19tZW5hZ2UiLCJpX3Jlc2lkZW5jZSIsImlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZSIsImlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZSQwIiwiaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyJDAiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXMiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXMkMCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2VuZiIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2F2YSIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbiIsImlfbW9udGFudF92ZXJzZSIsInByaXNlX2VuX2NoYXJnZV90b19qc29vIiwiYXJnIiwiYXJnJDAiLCJhcmckMSIsImFyZyQyIiwiYXJnJDMiLCJwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyIsInByaXNlX2VuX2NoYXJnZSIsImNvbnMiLCJzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV8iLCJzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV8kMCIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIiwicHJpc2VfZW5fY29tcHRlX3RvX2pzb28iLCJwcmlzZV9lbl9jb21wdGVfb2ZfanNvbyIsInZlcnNlbWVudF9hbGxvY2F0aW9uc190b19qc29vIiwidmVyc2VtZW50X2FsbG9jYXRpb25zX29mX2pzb28iLCJ2ZXJzZW1lbnRfYWxsb2NhdGlvbnMiLCJlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMiLCJhcmckNCIsImFyZyQ1IiwiYXJnJDYiLCJlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMkMCIsImNvbGxlY3Rpdml0ZV90b19qc29vIiwiYXJnJDciLCJjb2xsZWN0aXZpdGVfb2ZfanNvbyIsImNvbGxlY3Rpdml0ZSIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQwIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDEiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb28iLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX29mX2pzb28iLCJzbWljX3RvX2pzb28iLCJzbWljX29mX2pzb28iLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMCIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQxIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDAiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkMSIsImVuZmFudF9lbnRyZWVfdG9fanNvbyIsImVuZmFudF9lbnRyZWUiLCJlbmZhbnRfZW50cmVlX29mX2pzb28iLCJlbmZhbnRfdG9fanNvbyIsImVuZmFudF9vZl9qc29vIiwiZW5mYW50X2xlX3BsdXNfYWdlX3RvX2pzb28iLCJlbmZhbnRfbGVfcGx1c19hZ2Vfb2ZfanNvbyIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyIsImlucHV0IiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDIiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkMyIsImVuZmFudF9sZV9wbHVzX2FnZV9pbl90b19qc29vIiwiZW5mYW50X2xlX3BsdXNfYWdlX2luX29mX2pzb28iLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX3RvX2oiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2oiLCJzbWljX2luX3RvX2pzb28iLCJzbWljX2luX29mX2pzb28iLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMiIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQzIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDIiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkMyIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQ0IiwiZW5mYW50X2xlX3BsdXNfYWdlJDAiLCJzbWljJDAiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kNCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXMkMCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMkMCIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCQ0IiwiZW1iZWRfdHlwZV9wcmV0IiwiZW1iZWRfdGl0dWxhaXJlX3ByZXQiLCJlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgiLCJlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjgiLCJlbWJlZF9hbWVsaW9yZV9wYXJfb2NjdXBhbnQiLCJlbWJlZF9saW1pdGVfdHJhbmNoZSIsImVtYmVkX2xpbWl0ZV90cmFuY2hlX2RlY2ltYWwiLCJlbWJlZF9wcmVzdGF0aW9uX3JlY3VlIiwiZW1iZWRfcGFyZW50X291X2F1dHJlIiwiZW1iZWRfc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIiwiZW1iZWRfcGFyZW50ZSIsImVtYmVkX2RhdGVfZGVfbmFpc3NhbmNlX291X21vaSIsImVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uIiwiZW1iZWRfcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluIiwiZW1iZWRfdmVyc2VtZW50X2EiLCJlbWJlZF9kZXBlbnNlX2xvZ2VtZW50IiwiZW1iZWRfbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSIsImVtYmVkX3R5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdCIsImVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbCIsImVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGUiLCJlbWJlZF9wcmlzZV9lbl9jaGFyZ2UkMCIsImVtYmVkX3R5cGVfbG9nZW1lbnRfZm95ZXIiLCJlbWJlZF9jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG8iLCJlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGMiLCJlbWJlZF9jb2xsZWN0aXZpdGUkMCIsImVtYmVkX3ByaXNlX2VuX2NoYXJnZV9lbmZhbnQiLCJlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY28kMCIsImVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaSQwIiwiZW1iZWRfY29udmVudGlvbl9iYWlsbGV1cl9zb2NpIiwiZW1iZWRfY29udmVudGlvbl9hX25faF9hIiwiZW1iZWRfcGVyc29ubmVfc291c19sb2NhdGlvbiIsImVtYmVkX3BhdHJpbW9pbmUiLCJlbWJlZF9jb25kaXRpb25zX2V0cmFuZ2VycyIsImVtYmVkX3BlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbCIsImVtYmVkX2VsaWdpYmlsaXRlX2FpZGVfcGVyc29ubiIsImVtYmVkX2VsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbSIsImVtYmVkX3Jlc3NvdXJjZXNfYWlkZXNfcGVyc29ubiIsImVtYmVkX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYSIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSIsImVtYmVkX2NhbGN1bF9lcXVpdmFsZW5jZV9sb3llciIsImVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbSIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQwIiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0c19hY2NlIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDEiLCJlbWJlZF90cmFpdGVtZW50X2Zvcm11bGVfYWlkZV8iLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkMiIsImVtYmVkX2luZm9zX2NoYW5nZW1lbnRfbG9nZW1lbiIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQwIiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDEiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkMiIsImVtYmVkX291dmVydHVyZV9kcm9pdHNfcmV0cmFpdCIsImVtYmVkX2ltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50IiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlIiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlJDAiLCJlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW8kMSIsImVtYmVkX3NtaWMkMCIsImVtYmVkX3ByZXQiLCJlbWJlZF9uZXVmX291X2FuY2llbiIsImVtYmVkX3RyYW5jaGVfcmV2ZW51IiwiZW1iZWRfdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCIsImVtYmVkX2F1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIiwiZW1iZWRfZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sIiwiZW1iZWRfbG9nZW1lbnRfZm95ZXIiLCJlbWJlZF9lbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWwiLCJlbWJlZF9lbmZhbnRfYV9jaGFyZ2UiLCJlbWJlZF90eXBlX2JhaWxsZXVyIiwiZW1iZWRfbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfIiwiZW1iZWRfbmF0aW9uYWxpdGUiLCJlbWJlZF9jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDIiLCJlbWJlZF9wcm9wcmlldGFpcmUiLCJlbWJlZF9pbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGUiLCJlbWJlZF9lbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc18iLCJlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSIsImVtYmVkX2RlbWFuZGV1ciIsImVtYmVkX2xvY2F0aW9uIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29uIiwiZW1iZWRfY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCIsImVtYmVkX21vZGVfb2NjdXBhdGlvbiIsImVtYmVkX2xvZ2VtZW50IiwiZW1iZWRfbWVuYWdlIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29uJDAiLCJlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm4kMCIsImVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbCQwIiwiZW1iZWRfZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtJDAiLCJlbWJlZF9yZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm4kMCIsImVtYmVkX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYSQwIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDMiLCJlbWJlZF9jYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXIkMCIsImVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbSQwIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDQiLCJlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2UkMCIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQ1IiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDYiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkMyIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQ0IiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDUiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkNiIsImVtYmVkX291dmVydHVyZV9kcm9pdHNfcmV0cmFpdCQwIiwiZW1iZWRfaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfIiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlJDEiLCJlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2UkMiIsImVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpbyQyIiwiZW1iZWRfc21pY19pbiQwIiwiZW1iZWRfZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfJDAiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AiLCJleG9uZXJlX2NzZyIsInRhdXhfY3JkcyIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSIsInJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllcyIsImNvbmRpdGlvbl8yX2R1XzgzMl8yNSIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjYiLCJ0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjYiLCJ0cmFuY2hlIiwidHJhbmNoZV9oYXV0IiwidHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpIiwicmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzJDAiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8iLCJub21icmVfcGVyc29ubmVzX2FfY2hhcmdlIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fIiwibl9ub21icmVfcGFydHNfZDgzMl8xMSIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIiwiZGF0ZV9uYWlzc2FuY2VfYXNzdXJlIiwiYWdlX291dmVydHVyZV9kcm9pdCIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50IiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4iLCJtb2RlX29jY3VwYXRpb24iLCJhaWRlX3ZlcnNlZSIsIm1vbnRhbnRfYXBsIiwibW9udGFudF9jaGFyZ2VzIiwiZGVwZW5zZV9sb2dlbWVudCIsIm1vbnRhbnRfZGV0dGUiLCJtb2RlX29jY3VwYXRpb25faW1wYXllIiwiZGVwZW5zZV9sb2dlbWVudF9icnV0ZSIsInRvdGFsX2VjaGVhbmNlcyIsIm1lbnN1YWxpdGUiLCJsb3llciIsInRvdGFsIiwibW9udGFudF9sb3llciIsImRlcGVuc2VfbG9nZW1lbnRfbmV0dGUiLCJlY2hlYW5jZV9wcmV0X25ldHRlIiwibWVuc3VhbGl0ZV9uZXR0ZSIsImVjaGVhbmNlX3ByZXRfYnJ1dGUiLCJtZW5zdWFsaXRlX2JydXRlIiwibG95ZXJfbmV0IiwibG95ZXJfYnJ1dCIsInNldWlsX2ltcGF5ZV9kZXBlbnNlX2RlX2xvZ2VtZSIsIm1vbnRhbnRfaW1wYXllIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDUiLCJzbWljJDEiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UiLCJsb3llcl9wcmluY2lwYWxfYmFzZSIsImJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbiIsInpvbmUiLCJsb2dlbWVudF9lc3RfY2hhbWJyZSIsImFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZSIsInR5cGVfYWlkZSIsImNvbG9jYXRpb24iLCJyZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZSIsImxvZ2VtZW50X21ldWJsZV9kODQyXzIiLCJmcmFjdGlvbl9sODMyXzMiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTYiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXQiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb24iLCJ0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSIsImFiYXR0ZW1lbnRfZm9yZmFpdGFpcmVfZDgyM18xNyIsImxveWVyX3JlZmVyZW5jZSIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMTYiLCJwbGFmb25kX2xveWVyX2Q4MjNfMTZfMiIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kOCIsImxveWVyX3ByaW5jaXBhbF9hdmVjX3JlZHVjdGlvbiIsInBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNiIsInBsYWZvbmRfZGVncmVzc2l2aXRlX2Q4MjNfMTYiLCJsb3llcl9lbGlnaWJsZSIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51ZSIsInBhcnRpY2lwYXRpb25fbWluaW1hbGUiLCJyYXBwb3J0X2xveWVycyIsImFpZGVfZmluYWxlIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0IiwidGF1eF9sb3llcl9lbGlnaWJsZV9mb3JtdWxlIiwiY3JkcyIsImFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaSIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYiIsInRhdXhfbG95ZXJfZWxpZ2libGVfdGF1eF9hcnJvbiIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkdWN0aSIsInRhdXhfcHJpc2VfY29tcHRlX3Jlc3NvdXJjZXMiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnQiLCJwYXJ0aWNpcGF0aW9uX3Jlc3NvdXJjZXMiLCJwYXJ0aWNpcGF0aW9uX3Jlc3NvdXJjZXMkMCIsInBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGUiLCJhaWRlX2ZpbmFsZV9mb3JtdWxlIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDAiLCJ0eXBlX2xvZ2VtZW50X2ZveWVyIiwiZGF0ZV9jb252ZW50aW9ubmVtZW50IiwicmVkZXZhbmNlIiwiY29lZmZpY2llbnRfcl9kODMyXzI1IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI0IiwibW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18yNCIsImNvbmRpdGlvbl8yX2R1XzgzMl8yNSQwIiwicGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfY29uZGl0IiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0IiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21iIiwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI3IiwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzIiwiZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUiLCJuX25vbWJyZV9wYXJ0c19kODMyXzI1JDAiLCJkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjciLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kMCIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSQxIiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDIiLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kMyIsImRlbm9taW5hdGV1ciIsImRlbm9taW5hdGV1ciQwIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4IiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZSIsImFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbSIsImVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4JDAiLCJhaWRlX2ZpbmFsZSQwIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4JDEiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMSIsIm1lbnN1YWxpdGVfcHJpbmNpcGFsZSIsInR5cGVfdHJhdmF1eF9sb2dlbWVudCIsImRhdGVfc2lnbmF0dXJlX3ByZXQiLCJsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW4iLCJkYXRlX2VudHJlZV9sb2dlbWVudCIsImNvcHJvcHJpZXRlIiwic2l0dWF0aW9uX3I4MjJfMTFfMTNfMTciLCJ0eXBlX3ByZXQiLCJhbmNpZW5uZXRlX2xvZ2VtZW50IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzEwIiwibW9udGFudF9taW5pbWFsX2FpZGVfZDgzMl8xMCIsImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MyQwIiwibW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xIiwidGF1eF90cmFuY2hlX2luZmVyaWV1cmVfZDgzMl8xIiwidGF1eF90cmFuY2hlX3N1cGVyaWV1cmVfZDgzMl8xIiwidGF1eF9mcmFuY3NfdmVyc19ldXJvcyIsImFtZWxpb3JlX3Bhcl9vY2N1cGFudCIsImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MyQxIiwicmVzc291cmNlc19tZW5hZ2VfYXZlY19kODMyXzE4IiwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODMyIiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwIiwicGxhZm9uZF9zaWduYXR1cmUiLCJwbGFmb25kX2VudHJlZSIsInBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYiIsInBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYyIsIm1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMSQwIiwibWVuc3VhbGl0ZV9taW5pbWFsZSIsIm1lbnN1YWxpdGVfZWxpZ2libGUiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8iLCJtZW5hZ2UiLCJkZW1hbmRldXIiLCJjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3AiLCJjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZSIsInNldWlsX2w4MjJfM19wYXJ0c19wcm9wcmlldGUiLCJzZXVpbF9sODIyXzNfcGFydHNfdXN1ZnJ1aXQiLCJzZXVpbF9sODIyXzVfcGF0cmltb2luZSIsInVzdWZydWl0X291X3Byb3ByaWV0ZV9mYW1pbGxlIiwiY29uZGl0aW9uX25vbl9vdXZlcnR1cmVfbDgyMl85IiwiY29uZGl0aW9uX25vbl9vdXZlcnR1cmVfbDgyMl84Iiwibm9tYnJlX3BlcnNvbm5lc19sb2dlbWVudCIsImNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX21pbiIsImNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlJDAiLCJjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3AkMCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfZG90XyIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfZG90XyQwIiwicGF0cmltb2luZV90b3RhbF9kZW1hbmRldXIiLCJjb25kaXRpb25zIiwiY29uZGl0aW9uX25hdGlvbmFsaXRlIiwicGxhZm9uZF9pbmRpdmlkdWVsX2w4MTVfOV9zZWN1IiwicGVyc29ubmUiLCJjb25kaXRpb25fbG9nZW1lbnRfbG9jYXRpb25fdGkiLCJ1c3VmcnVpdF9vdV9wcm9wcmlldGVfZmFtaWxsZSQwIiwicGFydHMiLCJwYXJ0cyQwIiwicGFydHMkMSIsInBhcnRzJDIiLCJjb25kaXRpb25fbG9nZW1lbnRfbW9kZV9vY2N1cGEiLCJjb25kaXRpb25fb3V2ZXJ0dXJlX2w4MjJfMTBfcGUiLCJhZ2VfbDE2MV8xN18yX3NlY3UiLCJhY2MiLCJwcmVzdGF0aW9uIiwiZWxpZ2liaWxpdGVfbG9nZW1lbnQiLCJhZ2VfbDM1MV84XzFfc2VjdSIsImVsaWdpYmlsaXRlIiwicGFyZW50IiwiY29uZGl0aW9uXzJfcjgyM180IiwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX2FfY2hhIiwicGVyc29ubmVfYV9jaGFyZ2UiLCJwZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2MiLCJjb2VmZiIsImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZSIsIm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpcyIsInJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbCIsInJlc3NvdXJjZXNfZGVtYW5kZXVyIiwicmVzc291cmNlc19jb25qb2ludCIsInBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbiIsImRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdGVfcmVtdSIsImNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0ZV9yZW11biIsInBlcnNvbm5lc19hX2NoYXJnZSIsInNpdHVhdGlvbl9mYW1pbGlhbGUiLCJjb25kaXRpb25fYWdlX2JvdXJzZV9lbnNlaWduZW0iLCJkZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlcyIsImRhdGVfZGVtYW5kZV9vdV9yZWV4YW1lbl9kcm9pdCIsInBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3BybyIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfOCIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfNyIsInJlc3NvdXJjZXNfZm9yZmFpdGFpcmVzX3I4MjJfMiIsInJlc3NvdXJjZXNfcGVyc29ubmVzX3ZpdmFudF9oYSIsImFiYXR0ZW1lbnQiLCJyZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGUiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MiLCJsb3llcl9wcmluY2lwYWwiLCJjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG95ZXJfcCIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcmVzc291ciIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYmVuZWZpYyIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfZGF0ZV9jbyIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfbm9tYnJlXyIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfc2l0dWF0aSIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfem9uZSIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG9nZW1lbiIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYWdlZXNfbyIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHlwZV9haSIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfY29sb2NhdCIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcmVkdWN0aSIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG9nZW1lbiQwIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9haWRlX2ZpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90cmFpdGVtIiwiaW5mb3MiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95IiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4IiwibW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml8xNSIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xNSIsIm1vbnRhbnRfbWluaW1hbF9kZXBlbnNlX25ldHRlXyIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQwIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDEiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kMiIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQzIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDQiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kNSIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ2IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDciLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kOCIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ5IiwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzIiwiZXF1aXZhbGVuY2VfbG95ZXIiLCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UiLCJsb3llcl9taW5pbWFsIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kZXBlbnNlIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjIiwicmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2JhIiwiY2hhcmdlc19tZW5zdWVsbGVzX3ByZXQiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfNiIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfNiIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xMSIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xMiIsImNvZWZmaWNpZW50X2Q4NDJfMTEiLCJjb2VmZmljaWVudF9kODQyXzEyIiwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyIiwic2V1aWxfbWluaW1hbF9yZXNzb3VyY2VzX21lbmFnIiwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyJDAiLCJyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfc2UiLCJwbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82Iiwic2V1aWxfbWluaW1hbF9kZXBlbnNlX25ldHRlX21pIiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZSQwIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDIiLCJyZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGkiLCJsb2NhdGlvbiIsImxvZ2VtZW50Zm95ZXIiLCJwcm9wcmlldGFpcmUiLCJsb2NhdGlvbiQwIiwicHJvcHJpZXRhaXJlJDAiLCJjYXRlZ29yaWVfY2FsY3VsX2FwbCIsInJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaSIsImJhaWxsZXVyIiwidHJhaXRlbWVudF9mb3JtdWxlIiwidHJhaXRlbWVudF9mb3JtdWxlJDAiLCJsb2dlbWVudF9mb3llciIsInJlc3VsdCQzIiwicmVzdWx0JDQiLCJ0cmFpdGVtZW50X2Zvcm11bGUkMSIsInNvdXNfY2FsY3VsX3RyYWl0ZW1lbnQiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0iLCJpbmZvcm1hdGlvbnMiLCJkYXRlX2VtbWVuYWdlbWVudCIsImRlcGVuc2VzX2p1c3RpZmllZXNfcmVlbGxlbWVudCIsImRlbGFpX2FwcmVzX2VtbWVuYWdlbWVudF9sODIzXyIsImNvbmRpdGlvbl9yYW5nX2VuZmFudCIsImVsaWdpYmlsaXRlX2FwbF9kb3RfbWVuYWdlIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9kZW1hbmRldXIiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfY291cmEiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl8iLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl8kMCIsImVsaWdpYmlsaXRlX2FwbF9kb3RfZGF0ZV9jb3VyYSQwIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9lbGlnaWJpbGl0IiwiZGF0ZV9uYWlzc2FuY2Vfb3VfZ3Jvc3Nlc3NlIiwiZGF0ZV9uYWlzc2FuY2UiLCJjb25kaXRpb25fcGVyaW9kZV9kZW1lbmFnZW1lbnQiLCJwbGFmb25kX2Q4MjNfMjIiLCJtb250YW50X3ByaW1lX2RlbWVuYWdlbWVudCIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSIsImNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfMSIsImNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfNiIsInByb3ByaWV0ZSIsInByb3ByaWV0ZSQwIiwiY29uZGl0aW9uX2xvZ2VtZW50X3ByZXQiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9tZW5hZ2UiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kZW1hbmQiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kYXRlX2MiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXQiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXQkMCIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2VsaWdpYiIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X25vbWJyZSIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvZWZmaSIsImNvbnZlbnRpb24iLCJjb252ZW50aW9uJDAiLCJjb25kaXRpb25fbG9nZW1lbnRfYmFpbGxldXIiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4iLCJiZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2wiLCJkdXJlZV9sODQxXzFfMyIsImNvbmRpdGlvbl9hY2Nlc3Npb25fcHJvcHJpZXRlIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0JDEiLCJlbGlnaWJpbGl0ZV9kaXNwb3NpdGlvbnNfY29tbXUiLCJkYXRlX21hcmlhZ2UiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kMCIsImVsaWdpYmlsaXRlX2w4NDFfMiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4iLCJiYWlsbGV1ciQwIiwicmVzdWx0JDUiLCJyZXN1bHQkNiIsInRyYWl0ZW1lbnRfZm9ybXVsZSQyIiwicmVzdWx0JDciLCJyZXN1bHQkOCIsInRyYWl0ZW1lbnRfZm9ybXVsZSQzIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaSIsInJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jbyIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQxIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDIiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kMyIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQ0IiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDUiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkMCIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQxIiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDIiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkMyIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQ0IiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDUiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQxIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkMyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDUiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkNiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQ3IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDMiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkNCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ1IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDYiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkNyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ4IiwiYWlkZV9maW5hbGVfYXBsIiwiYWlkZV9maW5hbGVfYWwiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ciLCJtZW5hZ2Vfc2Fuc19lbmZhbnRzX2dhcmRlX2FsdGUiLCJjYWxjdWxldHRlX2RvdF9tZW5hZ2UiLCJjYWxjdWxldHRlX2RvdF9kZW1hbmRldXIiLCJjYWxjdWxldHRlX2RvdF9kYXRlX2NvdXJhbnRlIiwiY2FsY3VsZXR0ZV9kb3RfcmVzc291cmNlc19tZW5hIiwiY2FsY3VsZXR0ZV9kb3RfZWxpZ2liaWxpdGUiLCJjYWxjdWxldHRlX2RvdF9haWRlX2ZpbmFsZV9mb3IiLCJjYWxjdWxldHRlX2RvdF90cmFpdGVtZW50X2FpZGUiLCJjYWxjdWxldHRlX2RvdF9jb2VmZmljZW50c19lbmYiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUkMCIsImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZSQxIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlJDIiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUkMyIsInR5cGVfcHJldF90b19qc29vIiwidHlwZV9wcmV0X29mX2pzb28iLCJ0aXR1bGFpcmVfcHJldF90b19qc29vIiwidGl0dWxhaXJlX3ByZXRfb2ZfanNvbyIsInRpdHVsYWlyZV9wcmV0IiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfIiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfJDAiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfdCIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfbyIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUiLCJhbWVsaW9yZV9wYXJfb2NjdXBhbnRfdG9fanNvbyIsImFtZWxpb3JlX3Bhcl9vY2N1cGFudF9vZl9qc29vIiwibGltaXRlX3RyYW5jaGVfdG9fanNvbyIsImxpbWl0ZV90cmFuY2hlX29mX2pzb28iLCJsaW1pdGVfdHJhbmNoZSIsImxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfdG9fanNvbyIsImxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfb2ZfanNvbyIsImxpbWl0ZV90cmFuY2hlX2RlY2ltYWwiLCJwcmVzdGF0aW9uX3JlY3VlX3RvX2pzb28iLCJwcmVzdGF0aW9uX3JlY3VlX29mX2pzb28iLCJwcmVzdGF0aW9uX3JlY3VlIiwicGFyZW50X291X2F1dHJlX3RvX2pzb28iLCJwYXJlbnRfb3VfYXV0cmVfb2ZfanNvbyIsInBhcmVudF9vdV9hdXRyZSIsInNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV90b19qcyIsInNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV9vZl9qcyIsInNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSIsInBhcmVudGVfdG9fanNvbyIsInBhcmVudGVfb2ZfanNvbyIsInBhcmVudGUiLCJkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2ciLCJkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2ckMCIsInpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28iLCJ6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vIiwiem9uZV9kX2hhYml0YXRpb24iLCJwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm8kMCIsInZlcnNlbWVudF9hX3RvX2pzb28iLCJ2ZXJzZW1lbnRfYV9vZl9qc29vIiwidmVyc2VtZW50X2EiLCJkZXBlbnNlX2xvZ2VtZW50X3RvX2pzb28iLCJkZXBlbnNlX2xvZ2VtZW50X29mX2pzb28iLCJtb2RlX29jY3VwYXRpb25faW1wYXllX3RvX2pzb28iLCJtb2RlX29jY3VwYXRpb25faW1wYXllX29mX2pzb28iLCJ0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG8iLCJ0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG8kMCIsInR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbiIsInR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbiQwIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV90b19qc29vIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV9vZl9qc29vIiwicHJpc2VfZW5fY2hhcmdlX3RvX2pzb28kMCIsInByaXNlX2VuX2NoYXJnZV9vZl9qc29vJDAiLCJ0eXBlX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28iLCJ0eXBlX2xvZ2VtZW50X2ZveWVyX29mX2pzb28iLCJjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWwiLCJjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWwkMCIsInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcCIsInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcCQwIiwiY29sbGVjdGl2aXRlX3RvX2pzb28kMCIsImNvbGxlY3Rpdml0ZV9vZl9qc29vJDAiLCJwcmlzZV9lbl9jaGFyZ2VfZW5mYW50X3RvX2pzb28iLCJwcmlzZV9lbl9jaGFyZ2VfZW5mYW50X29mX2pzb28iLCJwcmlzZV9lbl9jaGFyZ2VfZW5mYW50Iiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfJDEiLCJzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV8kMiIsImVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyQxIiwiZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzJDIiLCJjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbF90b18iLCJjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbCIsImNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsX29mXyIsImNvbnZlbnRpb25fYV9uX2hfYV90b19qc29vIiwiY29udmVudGlvbl9hX25faF9hIiwiY29udmVudGlvbl9hX25faF9hX29mX2pzb28iLCJwZXJzb25uZV9zb3VzX2xvY2F0aW9uX3RvX2pzb28iLCJwZXJzb25uZV9zb3VzX2xvY2F0aW9uIiwicGVyc29ubmVfc291c19sb2NhdGlvbl9vZl9qc29vIiwicGF0cmltb2luZV90b19qc29vIiwicGF0cmltb2luZSIsInBhdHJpbW9pbmVfb2ZfanNvbyIsImNvbmRpdGlvbnNfZXRyYW5nZXJzX3RvX2pzb28iLCJjb25kaXRpb25zX2V0cmFuZ2VycyIsImNvbmRpdGlvbnNfZXRyYW5nZXJzX29mX2pzb28iLCJwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnQiLCJwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnQkMCIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQwIiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtJDEiLCJyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2wkMCIsInJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbCQxIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wJDAiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AkMSIsImNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mbyQwIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvJDEiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl8kMCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQxIiwidHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlIiwidHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlJDAiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkOSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxMCIsImluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0MiIsImluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0MiQwIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jJDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MkMSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjYyQwIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjJDEiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQxIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfdG9fIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfb2ZfIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV90b19qIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9vZl9qIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfdG9fanNvIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfb2ZfanNvIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF90IiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9vIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDAiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckMSIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ2IiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDciLCJzbWljX3RvX2pzb28kMCIsInNtaWNfb2ZfanNvbyQwIiwicHJldF90b19qc29vIiwicHJldCIsInByZXRfb2ZfanNvbyIsIm5ldWZfb3VfYW5jaWVuX3RvX2pzb28iLCJuZXVmX291X2FuY2llbl9vZl9qc29vIiwibmV1Zl9vdV9hbmNpZW4iLCJ0cmFuY2hlX3JldmVudV90b19qc29vIiwidHJhbmNoZV9yZXZlbnUiLCJ0cmFuY2hlX3JldmVudV9vZl9qc29vIiwidHJhbmNoZV9yZXZlbnVfZGVjaW1hbF90b19qc29vIiwidHJhbmNoZV9yZXZlbnVfZGVjaW1hbCIsInRyYW5jaGVfcmV2ZW51X2RlY2ltYWxfb2ZfanNvbyIsImF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX3RvX2pzbyIsImF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIiwiYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvIiwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2RlIiwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2RlJDAiLCJsb2dlbWVudF9mb3llcl90b19qc29vIiwibG9nZW1lbnRfZm95ZXJfb2ZfanNvbyIsImVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXyIsImVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwiZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfJDAiLCJlbmZhbnRfYV9jaGFyZ2VfdG9fanNvbyIsImVuZmFudF9hX2NoYXJnZSIsImVuZmFudF9hX2NoYXJnZV9vZl9qc29vIiwidHlwZV9iYWlsbGV1cl90b19qc29vIiwidHlwZV9iYWlsbGV1cl9vZl9qc29vIiwidHlwZV9iYWlsbGV1ciIsImxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXyIsImxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXyQwIiwibG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMiLCJuYXRpb25hbGl0ZV90b19qc29vIiwibmF0aW9uYWxpdGVfb2ZfanNvbyIsIm5hdGlvbmFsaXRlIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfIiwicHJvcHJpZXRhaXJlX3RvX2pzb28iLCJwcm9wcmlldGFpcmVfb2ZfanNvbyIsImluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZSIsImluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZSQwIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDAiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMSIsInBlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28iLCJwZXJzb25uZV9hX2NoYXJnZV9vZl9qc29vIiwiZGVtYW5kZXVyX3RvX2pzb28iLCJkZW1hbmRldXJfb2ZfanNvbyIsImxvY2F0aW9uX3RvX2pzb28iLCJsb2NhdGlvbl9vZl9qc29vIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfJDAiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMSIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2xfdG9fanNvbyIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2xfb2ZfanNvbyIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2wiLCJtb2RlX29jY3VwYXRpb25fdG9fanNvbyIsIm1vZGVfb2NjdXBhdGlvbl9vZl9qc29vIiwibG9nZW1lbnRfdG9fanNvbyIsImxvZ2VtZW50IiwibG9nZW1lbnRfb2ZfanNvbyIsIm1lbmFnZV90b19qc29vIiwibWVuYWdlX29mX2pzb28iLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMiIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQzIiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtJDIiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMyIsInJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbCQyIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDMiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AkMiIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDExIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEyIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvJDIiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxNCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQyIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDMiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTUiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTYiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTciLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTgiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MkMiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQzIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjJDIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQyIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDMiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl8iLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl8kMCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fdCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fbyIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX3RvXyIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX29mXyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaSQwIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDIiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckMyIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ4IiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDkiLCJzbWljX2luX3RvX2pzb28kMCIsInNtaWNfaW5fb2ZfanNvbyQwIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDIiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMyIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQ0IiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDQiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kNCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQ0Iiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSQwIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQkMCIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQxMCIsInNtaWMkMiIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxOSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMSIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQ0IiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDQiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkNCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMiIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQkMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQkMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQ0IiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsIl0sInNvdXJjZXMiOlsiIiwiL2J1aWx0aW4vK2ludDY0LmpzIiwiL2J1aWx0aW4vK21sQnl0ZXMuanMiLCIvYnVpbHRpbi8rZmFpbC5qcyIsIi9idWlsdGluLytzdGRsaWIuanMiLCIvYnVpbHRpbi8rZm9ybWF0LmpzIiwiL2J1aWx0aW4vK2llZWVfNzU0LmpzIiwiL2J1aWx0aW4vK2ZzX25vZGUuanMiLCIvYnVpbHRpbi8rZnMuanMiLCIvYnVpbHRpbi8rdW5peC5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rZnNfZmFrZS5qcyIsIi9idWlsdGluLytuYXQuanMiLCIvYnVpbHRpbi8rZ3JhcGhpY3MuanMiLCIvYnVpbHRpbi8rbWFyc2hhbC5qcyIsIi9idWlsdGluLytpby5qcyIsIi9idWlsdGluLytnYy5qcyIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvemFyaXRoX3N0dWJzX2pzL2JpZ2ludGVnZXIuanMiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL3phcml0aF9zdHVic19qcy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2JpZ2FycmF5LmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK3BhcnNpbmcuanMiLCIvYnVpbHRpbi8raW50cy5qcyIsIi9idWlsdGluLytoYXNoLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvYnVpbHRpbi8ranNsaWJfanNfb2Zfb2NhbWwuanMiLCIvYnVpbHRpbi8rb2JqLmpzIiwiL2J1aWx0aW4vK2JpZ3N0cmluZy5qcyIsIi9idWlsdGluLytiYWNrdHJhY2UuanMiLCIvYnVpbHRpbi8rbGV4aW5nLmpzIiwiL2J1aWx0aW4vK2FycmF5LmpzIiwiL2J1aWx0aW4vK3dlYWsuanMiLCIvYnVpbHRpbi8rbWQ1LmpzIiwiL2J1aWx0aW4vK3N0ci5qcyIsIi9idWlsdGluLytiaWdzdHJpbmctY3N0cnVjdC5qcyIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2ludDY0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9sZXhpbmcubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvcHJpbnRleGMubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2ZpbGVuYW1lLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NhbWxpbnRlcm5hbEF0b21pYy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9wZXJ2YXNpdmVzLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9saXN0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9pbl9jaGFubmVsLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9vdXRfY2hhbm5lbC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZWl0aGVyLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL29iai5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2FtbGludGVybmFsTGF6eS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc2VxLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9vcHRpb24ubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3Jlc3VsdC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvYm9vbC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2hhci5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvYnl0ZXMubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2ludC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC91bml0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9tYXJzaGFsLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9hcnJheS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvaW50MzIubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3BhcnNpbmcubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3NldC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvbWFwLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9zdGFjay5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvcXVldWUubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3N0cmVhbS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvYnVmZmVyLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9wcmludGYubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZnVuLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9nYy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZGlnZXN0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9oYXNodGJsLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC93ZWFrLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9mb3JtYXQubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3NjYW5mLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jYWxsYmFjay5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2FtbGludGVybmFsT08ubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NhbWxpbnRlcm5hbE1vZC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZ2VubGV4Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9lcGhlbWVyb24ubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2JpZ2FycmF5Lm1sIiwiL3dvcmtzcGFjZV9yb290L3J1bnRpbWVzL29jYW1sL3J1bnRpbWUubWwiLCIiLCIiLCIvd29ya3NwYWNlX3Jvb3QvcnVudGltZXMvanNvby9ydW50aW1lLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2FwaV93ZWIubWwiLCIvd29ya3NwYWNlX3Jvb3QvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FpZGVzX2xvZ2VtZW50Lm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9haWRlc19sb2dlbWVudF9hcGlfd2ViLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvYXBpX3dlYi5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc3RkX2V4aXQubWwiXSwibWFwcGluZ3MiOiI7O0NBQ0MsU0FBVUE7V0FDRkM7Ozs7S0FDTEM7T0FDRTtRQUNDO1VBQXNCRiw4Q0FFaEJHO1FBQ0hDO0lBRVIsU0FBU0Q7TUFDUCxJQUFJRSxPQUFTSCxRQUFRSTtNQUNyQkQsb0JBQW9CQTthQUNiTCxvQkFDVCxDQWJEO0dBY0NBOzs7O0lDMk5GLFNBQVNPLG1CQUFtQkMsR0FBSyxTQUFRLFVBQVk7SUN6THJELFNBQVNDLGdCQUFnQkMsRUFBR0M7TUFDMUIsR0FBR0QsT0FBUTtNQUNYLEdBQUlDLFNBQVUsT0FBUSxTQUFTRDtNQUMvQixJQUFNLEtBQVE7TUFDZDtPQUFRLENBQ04sR0FBSUEsTUFBT0UsS0FBS0Q7UUFDaEJEO1FBQ0EsR0FBSUEsT0FBUSxPQUFPRTtRQUNuQkQsS0FBS0E7UUFDTEU7UUFDQSxHQUFJQSxPQUFRLGFBTWhCO0lEN0NBLElBQUlDLGtCQUFvQjtJRUF4QixTQUFTRSxvQkFBcUJDLEtBQU8sTUFBTUEsR0FBSztJQzJDaEQsSUFBSUM7SURISixTQUFTQztNQUNQLG9CQUFvQkQsa0NBQ3RCO0lGdENBLFNBQVNFLFFBQVNDLEdBQUdDLEdBQUdDO01BQ3RCckIsVUFBVW1CLGNBQ1ZuQixVQUFVb0IsY0FDVnBCLFVBQVVxQixXQUNaO0lBQ0FIO0lBQ0FBOztlQUNFLFdBQVdBLFFBQVFsQixRQUFRQSxRQUFRQSxRQURaO0lBSXpCa0I7O2FBQXVDWjtNQUNyQyxHQUFJTixVQUFVTSxLQUFNO01BQ3BCLEdBQUlOLFVBQVVNLEtBQU07TUFDcEIsR0FBSU4sVUFBVU0sS0FBTTtNQUNwQixHQUFJTixVQUFVTSxLQUFN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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOzs7Ozs7O0l3Qm5XRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDa0JLQztLQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQ3dCQUM7S0FDQUM7S0FDQUM7S0FJQUM7S0FDQUM7Ozs7S0N6QkFDO0tBbUhBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDbzlFTUM7S0FRUUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDbGxGZEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NzRUVDO0tBQ0FDO0tBQ0FDO0tBQ0FDOzs7S0EvRVlDO0tBbUhaQztLQUNBQztLQUNBQztLQUNBQzs7O0tBbUlBQztLQUNBQztLQUNBQztLQUNBQzs7O0tDeFBGQztLQUNBQztLQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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RixHQUFJLHFCTTFjakJvQyxPTjBjYXBDLEVBQTBCO0lBM0s5QixTQzNKVGlGLFlEdVVZakYsR0FBSSxvQk0zY2hCb0MsT04yY1lwQyxFQUF5QjtJQTVLNUIsU0MxSlRrRixVRHVVVTVKO01BQXlCLHFCTTVjbkM4RyxPTjRjbUMsNEJBQXpCOUcsR0FBMEM7SUE3SzNDLFNDekpUNkosWUR1VVkzRixHQUF5QixxQk03Y3JDNEMsT042Y3FDLFVBQXpCNUMsR0FBNEM7SUE5Sy9DLFNDeEpUNEYsY0R1VWNwRjtNQUNoQixjTS9jRW9DLE9OOGNjcEM7TUFDUSxvQk0vY3RCb0M7TU4rYytDLHFCTS9jL0NBLE9OK2MyRDtJQWhMbEQsU0N2SlRpRDtNRHdVbUIsb0JNaGRuQmpELFdOZ2Q0QyxxQk1oZDVDQSxPTmdkd0Q7SUFqTC9DLFNDdEpUa0QsV0QyVVc1QyxHQUFJLDJCTW5kZkwsT05tZFdLLEVBQXdCO0lBckwxQixTQ3JKVDZDLGFEMlVhdkYsR0FBSSxxQk1wZGpCcUMsT05vZGFyQyxFQUEwQjtJQXRMOUIsU0NwSlR3RixZRDJVWXhGLEdBQUksb0JNcmRoQnFDLE9OcWRZckMsRUFBeUI7SUF2TDVCLFNDbkpUeUYsVUQyVVVuSztNQUF5QixxQk10ZG5DK0csT05zZG1DLDRCQUF6Qi9HLEdBQTBDO0lBeEwzQyxTQ2xKVG9LLFlEMlVZbEcsR0FBeUIscUJNdmRyQzZDLE9OdWRxQyxVQUF6QjdDLEdBQTRDO0lBekwvQyxTQ2pKVG1HLGNEMlVjM0Y7TUFDaEIsY016ZEVxQyxPTndkY3JDO01BQ1Esb0JNemR0QnFDO01OeWQrQyxxQk16ZC9DQSxPTnlkMkQ7SUEzTGxELFNDaEpUdUQ7TUQ0VW1CLG9CTTFkbkJ2RCxXTjBkNEMscUJNMWQ1Q0EsT04wZHdEO0lBNUwvQyxTQy9JVHdELGlCRCtVZSxjTS9kZnpELFFOK2RlLGtCSy9kZkQsTUwrZDZDO0lBaE1wQyxTQzlJVDJELGdCRCtVd0MsMEJBQWIsYUFBYTtJQWpNL0IsU0M3SVRDLG9CRCtVbUMsc0NBQWE7SUFsTXZDLFNDNUlUQyxrQkQrVTRDLDRCQUFiLGFBQWE7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Q0FDO09BekZBMUM7T0FnREFrQjtPQTBlRTZMO09BQ0FFO09BQ0FDO09BQ0FFO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BRUFDO09BVUFJO09BQ0FDO09BQ0FDO09BQ0FFO09BQ0FDO09BQ0FFO09BQ0FHO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FHO09BQ0FDO09BQ0FDO09BRUFDO09BWUFPO09BRUFDO09BS0FDO09BR0FDO09BSUFDO09BR0FFO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FHO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO0tBdEdBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUVBQztLQVVBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUVBQztLQVlBQztLQUVBQztLQUtBQztLQUdBQztLQUlBQztLQUdBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQzs7O09BbnBCTjlYOzs7Ozs7OztPQXNKQTRFO09BY0kyQjtPQUNBQztPQUNBQztPQUNBRTtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVKRTtPQVFBWTtPQVVBVjtPQU9BSztPQVNJUztVQWtKRTRDO09BbkpGN0M7T0FHQUU7T0FJQUU7T0FJQUM7T0FJQUU7T0FJSUU7T0FoTkp2SDtPQUNBRTtPQUlBSztPQUhBSDtPQUNBQztPQUtBSTtPQUdBQztPQUVBQztPQU1BQztPQUtBSTtPQUZBRDtPQURBRDtPQURBRDtPQXlDQWdCO09BT0FFO09BR0FDO09BQ0FFO09BQ0FDO09BQ0FDO09BRUFHO09BREFGO09BZUFRO09BUkFIO09BSUFDO09BUkFIO09Bb0JBVztPQUpBSjtPQU9BSztPQUNBQztPQUVBQztPQW1CQUU7T0FoQkFEO09Ba1hBZ0o7T0FzQkFPO09BcUJBRTs7T0FtQkV1RjtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQVVBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQVlBQztPQUVBQztPQUtBQztPQUdBQztPQUlBQztPQUdBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQzs7VUQ1cUJQOzs7Ozs7O0lDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7bUJDQ1lDLEtBQU8sTUFBTUEsR0FBdkI7SURERjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNBQTt5QkNDVUMsdUJBQXVCQSxrQkFBbUJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lERHBEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2VDQ0NBLFdEREQsNkJDQ0NDLEtEREQsSUNDQ0M7SURERDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dUNDQ0NDLHVCREREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCQ0NDQyxNREREOzs7Ozs7Ozs7O3lCQ0NDQSxNREREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDT3dCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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aURBQztPQWtDQUM7T0FvRUFDO09BZ0NBQztPQXNFQUM7T0F1QkFDO09BNENBQztPQWtCQUM7T0E0QkFDO09BTUFDO09BaUJBQztPQWdCQUM7T0E2QkFoUTtPQVlBaVE7T0FxQkFDO09BY0FDO09BdUJBQztPQVFBQztPQWVBQztPQUtBQztPQWFBQztPQVlBQztPQWtCRkM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FLQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQWpSO09BU0FOO09BU0F3UjtPQVNBQztPQVNBQztJQVVEOzs7O1VKamtKSjs7Ozs7OztJSUFBOzs7Ozs7Ozs7Ozs7Ozs7TUM0QzJCO3dCQUFLQztpQkFDbEI7bUJBRU07Ozs7dUJBSFlBO3VDQU1LO2lCQUx2Qiw4Q0FLd0IsRUFBQzs7TUFqQlo7d0JBQUtDO2lCQUNsQjttQkFFTTs7Ozt1QkFIWUE7MENBTVE7aUJBTDFCLDhDQUsyQixFQUFDO0lBWnZDOzs7Ozs7O1VEM0JIOzs7Ozs7O0lDQUE7Ozs7SUNrQlM7OztVRGxCVCIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG52YXIgY2FtbF9pbnQ2NF9vZmZzZXQgPSBNYXRoLnBvdygyLCAtMjQpO1xuXG4vL1Byb3ZpZGVzOiBNbEludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gTWxJbnQ2NCAobG8sbWksaGkpIHtcbiAgdGhpcy5sbyA9IGxvICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSBtaSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gaGkgJiAweGZmZmY7XG59XG5NbEludDY0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX2pcIlxuTWxJbnQ2NC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8sdGhpcy5taSx0aGlzLmhpKTtcbn1cblxuTWxJbnQ2NC5wcm90b3R5cGUudWNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICBpZiAodGhpcy5oaSA+IHguaGkpIHJldHVybiAxO1xuICBpZiAodGhpcy5oaSA8IHguaGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgaGkgPSB0aGlzLmhpIDw8IDE2O1xuICB2YXIgeGhpID0geC5oaSA8PCAxNjtcbiAgaWYgKGhpID4geGhpKSByZXR1cm4gMTtcbiAgaWYgKGhpIDwgeGhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICBpZiAodGhpcy5sbyA8IHgubG8pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsbyA9IC0gdGhpcy5sbztcbiAgdmFyIG1pID0gLSB0aGlzLm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gLSB0aGlzLmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyArIHgubG87XG4gIHZhciBtaSA9IHRoaXMubWkgKyB4Lm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gdGhpcy5oaSArIHguaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvIC0geC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSAtIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpIC0geC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gKiB4LmxvO1xuICB2YXIgbWkgPSAoKGxvICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLm1pICogeC5sbyArIHRoaXMubG8gKiB4Lm1pO1xuICB2YXIgaGkgPSAoKG1pICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLmhpICogeC5sbyArIHRoaXMubWkgKiB4Lm1pICsgdGhpcy5sbyAqIHguaGk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICh0aGlzLmxvfHRoaXMubWl8dGhpcy5oaSkgPT0gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMuaGkgPDwgMTYpIDwgMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvICYgeC5sbywgdGhpcy5taSAmIHgubWksIHRoaXMuaGkgJiB4LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG98eC5sbywgdGhpcy5taXx4Lm1pLCB0aGlzLmhpfHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG9eeC5sbywgdGhpcy5taV54Lm1pLCB0aGlzLmhpXnguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfbGVmdCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICBpZiAocyA8IDI0KSB7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICh0aGlzLmxvIDw8IHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCBzKSB8ICh0aGlzLmxvID4+ICgyNCAtIHMpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmhpIDw8IHMpIHwgKHRoaXMubWkgPj4gKDI0IC0gcykpKTtcbiAgfVxuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG8gPDwgKHMgLSAyNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCAocyAtIDI0KSkgfCAodGhpcy5sbyA+PiAoNDggLSBzKSkpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoMCwgMCwgdGhpcy5sbyA8PCAocyAtIDQ4KSlcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X3JpZ2h0X3Vuc2lnbmVkID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAodGhpcy5oaSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5oaSA+PiBzKSk7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IChzIC0gMjQpKSxcbiAgICAgIDApO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMuaGkgPj4gKHMgLSA0OCksIDAsIDApO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgdmFyIGggPSAodGhpcy5oaSA8PCAxNikgPj4gMTY7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAoaCA8PCAoMjQgLSBzKSksXG4gICAgICAoKHRoaXMuaGkgPDwgMTYpID4+IHMpID4+PiAxNik7XG4gIHZhciBzaWduID0gKHRoaXMuaGkgPDwgMTYpID4+IDMxO1xuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5taSA+PiAocyAtIDI0KSkgfCAodGhpcy5oaSA8PCAoNDggLSBzKSksXG4gICAgICAodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAyNCkgPj4gMTYsXG4gICAgICBzaWduICYgMHhmZmZmKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0ICgodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAzMiksIHNpZ24sIHNpZ24pO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNsMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5oaSA9ICh0aGlzLmhpIDw8IDEpIHwgKHRoaXMubWkgPj4gMjMpO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pIDw8IDEpIHwgKHRoaXMubG8gPj4gMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmxvID0gKHRoaXMubG8gPDwgMSkgJiAweGZmZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxzcjEgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG8gPSAoKHRoaXMubG8gPj4+IDEpIHwgKHRoaXMubWkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pID4+PiAxKSB8ICh0aGlzLmhpIDw8IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IHRoaXMuaGkgPj4+IDE7XG59XG5NbEludDY0LnByb3RvdHlwZS51ZGl2bW9kID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIG9mZnNldCA9IDA7XG4gIHZhciBtb2R1bHVzID0gdGhpcy5jb3B5KCk7XG4gIHZhciBkaXZpc29yID0geC5jb3B5KCk7XG4gIHZhciBxdW90aWVudCA9IG5ldyBNbEludDY0KDAsMCwwKTtcbiAgd2hpbGUgKG1vZHVsdXMudWNvbXBhcmUoZGl2aXNvcikgPiAwKSB7XG4gICAgb2Zmc2V0Kys7XG4gICAgZGl2aXNvci5sc2wxKCk7XG4gIH1cbiAgd2hpbGUgKG9mZnNldCA+PSAwKSB7XG4gICAgb2Zmc2V0IC0tO1xuICAgIHF1b3RpZW50LmxzbDEoKTtcbiAgICBpZiAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+PSAwKSB7XG4gICAgICBxdW90aWVudC5sbyArKztcbiAgICAgIG1vZHVsdXMgPSBtb2R1bHVzLnN1YihkaXZpc29yKTtcbiAgICB9XG4gICAgZGl2aXNvci5sc3IxKCk7XG4gIH1cbiAgcmV0dXJuIHsgcXVvdGllbnQgOiBxdW90aWVudCwgbW9kdWx1cyA6IG1vZHVsdXMgfTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGkgXiB5LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHEgPSB4LnVkaXZtb2QoeSkucXVvdGllbnQ7XG4gIGlmIChzaWduICYgMHg4MDAwKSBxID0gcS5uZWcoKTtcbiAgcmV0dXJuIHE7XG59XG5NbEludDY0LnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiAoeSlcbntcbiAgdmFyIHggPSB0aGlzO1xuICBpZiAoeS5pc1plcm8oKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgdmFyIHNpZ24gPSB4LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHIgPSB4LnVkaXZtb2QoeSkubW9kdWx1cztcbiAgaWYgKHNpZ24gJiAweDgwMDApIHIgPSByLm5lZygpO1xuICByZXR1cm4gcjtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvSW50ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICh0aGlzLm1pIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvRmxvYXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMuaGkgPDwgMTYpICogTWF0aC5wb3coMiwgMzIpICsgdGhpcy5taSAqIE1hdGgucG93KDIsIDI0KSkgKyB0aGlzLmxvO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFt0aGlzLmhpID4+IDgsXG4gICAgICAgICAgdGhpcy5oaSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSA+PiAxNixcbiAgICAgICAgICAodGhpcy5taSA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyA+PiAxNixcbiAgICAgICAgICAodGhpcy5sbyA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyAmIDB4ZmZdO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubG8zMiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubG8gfCAoKHRoaXMubWkgJiAweGZmKSA8PCAyNCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5oaTMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKCh0aGlzLm1pID4+PiA4KSAmIDB4ZmZmZikgfCAodGhpcy5oaSA8PCAxNik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdWx0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3VsdCh4LHkpIHsgcmV0dXJuIHgudWNvbXBhcmUoeSkgPCAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jb21wYXJlKHgseSwgdG90YWwpIHsgcmV0dXJuIHguY29tcGFyZSh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbmVnIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X25lZyAoeCkgeyByZXR1cm4geC5uZWcoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYWRkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FkZCAoeCwgeSkgeyByZXR1cm4geC5hZGQoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3N1YiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zdWIgKHgsIHkpIHsgcmV0dXJuIHguc3ViKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tdWwgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2ludDY0X211bCh4LHkpIHsgcmV0dXJuIHgubXVsKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc196ZXJvIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX3plcm8oeCkgeyByZXR1cm4gK3guaXNaZXJvKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSB7IHJldHVybiAreC5pc05lZygpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYW5kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FuZCAoeCwgeSkgeyByZXR1cm4geC5hbmQoeSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vciAoeCwgeSkgeyByZXR1cm4geC5vcih5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3hvciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF94b3IgKHgsIHkpIHsgcmV0dXJuIHgueG9yKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfbGVmdChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHRfdW5zaWduZWQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0ICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X3JpZ2h0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9kaXYgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZGl2ICh4LCB5KSB7IHJldHVybiB4LmRpdih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbW9kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X21vZCAoeCwgeSkgeyByZXR1cm4geC5tb2QoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2ludDMyIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2ludDMyICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh4ICYgMHhmZmZmZmYsICh4ID4+IDI0KSAmIDB4ZmZmZmZmLCAoeCA+PiAzMSkgJiAweGZmZmYpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9faW50MzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9faW50MzIgKHgpIHsgcmV0dXJuIHgudG9JbnQoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fZmxvYXQgKHgpIHsgcmV0dXJuIHgudG9GbG9hdCAoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2Zsb2F0ICh4KSB7XG4gIGlmICh4IDwgMCkgeCA9IE1hdGguY2VpbCh4KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KFxuICAgIHggJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCkgJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZm9ybWF0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdG9faW50MzJcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zvcm1hdCAoZm10LCB4KSB7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGYuc2lnbmVkY29udiAmJiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpKSB7XG4gICAgZi5zaWduID0gLTE7IHggPSBjYW1sX2ludDY0X25lZyh4KTtcbiAgfVxuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgdmFyIHdiYXNlID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihmLmJhc2UpO1xuICB2YXIgY3Z0YmwgPSBcIjAxMjM0NTY3ODlhYmNkZWZcIjtcbiAgZG8ge1xuICAgIHZhciBwID0geC51ZGl2bW9kKHdiYXNlKTtcbiAgICB4ID0gcC5xdW90aWVudDtcbiAgICBidWZmZXIgPSBjdnRibC5jaGFyQXQoY2FtbF9pbnQ2NF90b19pbnQzMihwLm1vZHVsdXMpKSArIGJ1ZmZlcjtcbiAgfSB3aGlsZSAoISBjYW1sX2ludDY0X2lzX3plcm8oeCkpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9ICcgJztcbiAgICB2YXIgbiA9IGYucHJlYyAtIGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBidWZmZXIgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBidWZmZXI7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgYnVmZmVyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSwgY2FtbF9mYWlsd2l0aCwgY2FtbF9wYXJzZV9kaWdpdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF91bHRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCxjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX3N0cmluZyhzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKTtcbiAgdmFyIGkgPSByWzBdLCBzaWduID0gclsxXSwgYmFzZSA9IHJbMl07XG4gIHZhciBiYXNlNjQgPSBjYW1sX2ludDY0X29mX2ludDMyKGJhc2UpO1xuICB2YXIgdGhyZXNob2xkID1cbiAgICAgIG5ldyBNbEludDY0KDB4ZmZmZmZmLCAweGZmZmZmZmYsIDB4ZmZmZikudWRpdm1vZChiYXNlNjQpLnF1b3RpZW50O1xuICB2YXIgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICBmb3IgKDs7KSB7XG4gICAgaSsrO1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gbXVsdGlwbGljYXRpb24gYmFzZSAqIHJlcyAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdCh0aHJlc2hvbGQsIHJlcykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAgIGQgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfYWRkKGNhbWxfaW50NjRfbXVsKGJhc2U2NCwgcmVzKSwgZCk7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIGFkZGl0aW9uIChiYXNlICogcmVzKSArIGQgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQocmVzLCBkKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKGJhc2UgPT0gMTAgJiYgY2FtbF9pbnQ2NF91bHQobmV3IE1sSW50NjQoMCwgMCwgMHg4MDAwKSwgcmVzKSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKHNpZ24gPCAwKSByZXMgPSBjYW1sX2ludDY0X25lZyhyZXMpO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkobG8sIG1pLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKVxufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGxvLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgbG8gJiAweGZmZmZmZixcbiAgICAoKGxvID4+PiAyNCkgJiAweGZmKSB8ICgoaGkgJiAweGZmZmYpIDw8IDgpLFxuICAgIChoaSA+Pj4gMTYpICYgMHhmZmZmKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbG8zMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9sbzMyKHYpeyByZXR1cm4gdi5sbzMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hpMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGkzMih2KXsgcmV0dXJuIHYuaGkzMigpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChhWzddIDw8IDAgfCAoYVs2XSA8PCA4KSB8IChhWzVdIDw8IDE2KSxcbiAgICAgICAgICAgICAgICAgICAgIGFbNF0gPDwgMCB8IChhWzNdIDw8IDgpIHwgKGFbMl0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVsxXSA8PCAwIHwgKGFbMF0gPDwgOCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19ieXRlcyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19ieXRlcyh4KSB7IHJldHVybiB4LnRvQXJyYXkoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGFzaCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oYXNoKHYpe1xuICByZXR1cm4gKHYubG8zMigpKSBeICh2LmhpMzIoKSlcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMC0yMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEFuIE9DYW1sIHN0cmluZyBpcyBhbiBvYmplY3Qgd2l0aCB0aHJlZSBmaWVsZHM6XG4vLyAtIHRhZyAndCdcbi8vIC0gbGVuZ3RoICdsJ1xuLy8gLSBjb250ZW50cyAnYydcbi8vXG4vLyBUaGUgY29udGVudHMgb2YgdGhlIHN0cmluZyBjYW4gYmUgZWl0aGVyIGEgSmF2YVNjcmlwdCBhcnJheSBvclxuLy8gYSBKYXZhU2NyaXB0IHN0cmluZy4gVGhlIGxlbmd0aCBvZiB0aGlzIHN0cmluZyBjYW4gYmUgbGVzcyB0aGFuIHRoZVxuLy8gbGVuZ3RoIG9mIHRoZSBPQ2FtbCBzdHJpbmcuIEluIHRoaXMgY2FzZSwgcmVtYWluaW5nIGJ5dGVzIGFyZVxuLy8gYXNzdW1lZCB0byBiZSB6ZXJvZXMuIEFycmF5cyBhcmUgbXV0YWJsZSBidXQgY29uc3VtZXMgbW9yZSBtZW1vcnlcbi8vIHRoYW4gc3RyaW5ncy4gQSBjb21tb24gcGF0dGVybiBpcyB0byBzdGFydCBmcm9tIGFuIGVtcHR5IHN0cmluZyBhbmRcbi8vIHByb2dyZXNzaXZlbHkgZmlsbCBpdCBmcm9tIHRoZSBzdGFydC4gUGFydGlhbCBzdHJpbmdzIG1ha2VzIGl0XG4vLyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgdGhpcyBlZmZpY2llbnRseS5cbi8vXG4vLyBXaGVuIGNvbnZlcnRpbmcgdG8gYW5kIGZyb20gVVRGLTE2LCB3ZSBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgdGhlXG4vLyBzdHJpbmcgaXMgY29tcG9zZWQgb25seSBvZiBBU0NJSSBjaGFyYWN0ZXJzIChpbiB3aGljaCBjYXNlLCBub1xuLy8gY29udmVyc2lvbiBuZWVkcyB0byBiZSBwZXJmb3JtZWQpIG9yIG5vdC5cbi8vXG4vLyBUaGUgc3RyaW5nIHRhZyBjYW4gdGh1cyB0YWtlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuLy8gICBmdWxsIHN0cmluZyAgICAgQllURSB8IFVOS05PV046ICAgICAgMFxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IEFTQ0lJOiAgICAgICAgOVxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IE5PVF9BU0NJSTogICAgOFxuLy8gICBzdHJpbmcgcHJlZml4ICAgUEFSVElBTDogICAgICAgICAgICAgMlxuLy8gICBhcnJheSAgICAgICAgICAgQVJSQVk6ICAgICAgICAgICAgICAgNFxuLy9cbi8vIE9uZSBjYW4gdXNlIGJpdCBtYXNraW5nIHRvIGRpc2NyaW1pbmF0ZSB0aGVzZSBkaWZmZXJlbnQgY2FzZXM6XG4vLyAgIGtub3duX2VuY29kaW5nKHgpID0geCY4XG4vLyAgIGlzX2FzY2lpKHgpID0gICAgICAgeCYxXG4vLyAgIGtpbmQoeCkgPSAgICAgICAgICAgeCY2XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9zdHJfcmVwZWF0KG4sIHMpIHtcbiAgaWYobiA9PSAwKSByZXR1cm4gXCJcIjtcbiAgaWYgKHMucmVwZWF0KSB7cmV0dXJuIHMucmVwZWF0KG4pO30gLy8gRUNNQXNjcmlwdCA2IGFuZCBGaXJlZm94IDI0K1xuICB2YXIgciA9IFwiXCIsIGwgPSAwO1xuICBmb3IoOzspIHtcbiAgICBpZiAobiAmIDEpIHIgKz0gcztcbiAgICBuID4+PSAxO1xuICAgIGlmIChuID09IDApIHJldHVybiByO1xuICAgIHMgKz0gcztcbiAgICBsKys7XG4gICAgaWYgKGwgPT0gOSkge1xuICAgICAgcy5zbGljZSgwLDEpOyAvLyBmbGF0dGVuIHRoZSBzdHJpbmdcbiAgICAgIC8vIHRoZW4sIHRoZSBmbGF0dGVuaW5nIG9mIHRoZSB3aG9sZSBzdHJpbmcgd2lsbCBiZSBmYXN0ZXIsXG4gICAgICAvLyBhcyBpdCB3aWxsIGJlIGNvbXBvc2VkIG9mIGxhcmdlciBwaWVjZXNcbiAgICB9XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG4vL1dlYWtkZWZcbi8vIFByZSBFQ01BU2NyaXB0IDUsIFthcHBseV0gd291bGQgbm90IHN1cHBvcnQgYXJyYXktbGlrZSBvYmplY3QuXG4vLyBJbiBzdWNoIHNldHVwLCBUeXBlZF9hcnJheSB3b3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBwb2x5ZmlsbCwgYW5kIFtmLmFwcGx5XSB3b3VsZFxuLy8gZmFpbCBoZXJlLiBNYXJrIHRoZSBwcmltaXRpdmUgYXMgV2Vha2RlZiwgc28gdGhhdCBwZW9wbGUgY2FuIG92ZXJyaWRlIGl0IGVhc2lseS5cbmZ1bmN0aW9uIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAoYSwgaSwgbGVuKSB7XG4gIHZhciBmID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbiAgaWYgKGkgPT0gMCAmJiBsZW4gPD0gNDA5NiAmJiBsZW4gPT0gYS5sZW5ndGgpIHJldHVybiBmLmFwcGx5IChudWxsLCBhKTtcbiAgdmFyIHMgPSBcIlwiO1xuICBmb3IgKDsgMCA8IGxlbjsgaSArPSAxMDI0LGxlbi09MTAyNClcbiAgICBzICs9IGYuYXBwbHkgKG51bGwsIGEuc2xpY2UoaSxpICsgTWF0aC5taW4obGVuLCAxMDI0KSkpO1xuICByZXR1cm4gcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91dGY4X29mX3V0ZjE2XG5mdW5jdGlvbiBjYW1sX3V0Zjhfb2ZfdXRmMTYocykge1xuICBmb3IgKHZhciBiID0gXCJcIiwgdCA9IGIsIGMsIGQsIGkgPSAwLCBsID0gcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjIDwgMHg4MCkge1xuICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyAoaiA8IGwpICYmIChjID0gcy5jaGFyQ29kZUF0KGopKSA8IDB4ODA7IGorKyk7XG4gICAgICBpZiAoaiAtIGkgPiA1MTIpIHsgdC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7IGIgKz0gcy5zbGljZShpLCBqKSB9XG4gICAgICBlbHNlIHQgKz0gcy5zbGljZShpLCBqKTtcbiAgICAgIGlmIChqID09IGwpIGJyZWFrO1xuICAgICAgaSA9IGo7XG4gICAgfVxuICAgIGlmIChjIDwgMHg4MDApIHtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGMwIHwgKGMgPj4gNikpO1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9IGVsc2UgaWYgKGMgPCAweGQ4MDAgfHwgYyA+PSAweGRmZmYpIHtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGUwIHwgKGMgPj4gMTIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfSBlbHNlIGlmIChjID49IDB4ZGJmZiB8fCBpICsgMSA9PSBsIHx8XG4gICAgICAgICAgICAgICAoZCA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGQgPiAweGRmZmYpIHtcbiAgICAgIC8vIFVubWF0Y2hlZCBzdXJyb2dhdGUgcGFpciwgcmVwbGFjZWQgYnkgXFx1ZmZmZCAocmVwbGFjZW1lbnQgY2hhcmFjdGVyKVxuICAgICAgdCArPSBcIlxceGVmXFx4YmZcXHhiZFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBpKys7XG4gICAgICBjID0gKGMgPDwgMTApICsgZCAtIDB4MzVmZGMwMDtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGYwIHwgKGMgPj4gMTgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gMTIpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9XG4gICAgaWYgKHQubGVuZ3RoID4gMTAyNCkge3Quc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiO31cbiAgfVxuICByZXR1cm4gYit0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIGNhbWxfdXRmMTZfb2ZfdXRmOChzKSB7XG4gIGZvciAodmFyIGIgPSBcIlwiLCB0ID0gXCJcIiwgYywgYzEsIGMyLCB2LCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYzEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGMxIDwgMHg4MCkge1xuICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyAoaiA8IGwpICYmIChjMSA9IHMuY2hhckNvZGVBdChqKSkgPCAweDgwOyBqKyspO1xuICAgICAgaWYgKGogLSBpID4gNTEyKSB7IHQuc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiOyBiICs9IHMuc2xpY2UoaSwgaikgfVxuICAgICAgZWxzZSB0ICs9IHMuc2xpY2UoaSwgaik7XG4gICAgICBpZiAoaiA9PSBsKSBicmVhaztcbiAgICAgIGkgPSBqO1xuICAgIH1cbiAgICB2ID0gMTtcbiAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSkge1xuICAgICAgYyA9IGMyICsgKGMxIDw8IDYpO1xuICAgICAgaWYgKGMxIDwgMHhlMCkge1xuICAgICAgICB2ID0gYyAtIDB4MzA4MDtcbiAgICAgICAgaWYgKHYgPCAweDgwKSB2ID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHYgPSAyO1xuICAgICAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSkge1xuICAgICAgICAgIGMgPSBjMiArIChjIDw8IDYpO1xuICAgICAgICAgIGlmIChjMSA8IDB4ZjApIHtcbiAgICAgICAgICAgIHYgPSBjIC0gMHhlMjA4MDtcbiAgICAgICAgICAgIGlmICgodiA8IDB4ODAwKSB8fCAoKHYgPj0gMHhkN2ZmKSAmJiAodiA8IDB4ZTAwMCkpKSB2ID0gMjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdiA9IDM7XG4gICAgICAgICAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSAmJlxuICAgICAgICAgICAgICAgIChjMSA8IDB4ZjUpKSB7XG4gICAgICAgICAgICAgIHYgPSBjMiAtIDB4M2M4MjA4MCArIChjIDw8IDYpO1xuICAgICAgICAgICAgICBpZiAodiA8IDB4MTAwMDAgfHwgdiA+IDB4MTBmZmZmKSB2ID0gMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHYgPCA0KSB7IC8vIEludmFsaWQgc2VxdWVuY2VcbiAgICAgIGkgLT0gdjtcbiAgICAgIHQgKz0gXCJcXHVmZmZkXCI7XG4gICAgfSBlbHNlIGlmICh2ID4gMHhmZmZmKVxuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZDdjMCArICh2ID4+IDEwKSwgMHhkYzAwICsgKHYgJiAweDNGRikpXG4gICAgZWxzZVxuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHYpO1xuICAgIGlmICh0Lmxlbmd0aCA+IDEwMjQpIHt0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjt9XG4gIH1cbiAgcmV0dXJuIGIrdDtcbn1cblxuLy9Qcm92aWRlczoganNvb19pc19hc2NpaVxuZnVuY3Rpb24ganNvb19pc19hc2NpaSAocykge1xuICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGdldHMgYmV0dGVyIGF0IGFyb3VuZCB0aGlzIHBvaW50IGZvciBhbGwgYnJvd3NlcnNcbiAgaWYgKHMubGVuZ3RoIDwgMjQpIHtcbiAgICAvLyBTcGlkZXJtb25rZXkgZ2V0cyBtdWNoIHNsb3dlciB3aGVuIHMubGVuZ3RoID49IDI0IChvbiA2NCBiaXQgYXJjaHMpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSBpZiAocy5jaGFyQ29kZUF0KGkpID4gMTI3KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZVxuICAgIHJldHVybiAhL1teXFx4MDAtXFx4N2ZdLy50ZXN0KHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICBkZWZhdWx0OiAvKiBQQVJUSUFMICovXG4gICAgaWYgKGkgPj0gcy5jLmxlbmd0aCkgcmV0dXJuIDA7XG4gIGNhc2UgMDogLyogQllURVMgKi9cbiAgICByZXR1cm4gcy5jLmNoYXJDb2RlQXQoaSk7XG4gIGNhc2UgNDogLyogQVJSQVkgKi9cbiAgICByZXR1cm4gcy5jW2ldXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSwgYykge1xuICAvLyBUaGUgT0NhbWwgY29tcGlsZXIgdXNlcyBDaGFyLnVuc2FmZV9jaHIgb24gaW50ZWdlcnMgbGFyZ2VyIHRoYW4gMjU1IVxuICBjICY9IDB4ZmY7XG4gIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykge1xuICAgIGlmIChpID09IHMuYy5sZW5ndGgpIHtcbiAgICAgIHMuYyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgIGlmIChpICsgMSA9PSBzLmwpIHMudCA9IDA7IC8qQllURVMgfCBVTktPV04qL1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheSAocyk7XG4gIH1cbiAgcy5jW2ldID0gYztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldCAocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDE2KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSAxKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDEpO1xuICByZXR1cm4gKGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQxNihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMSkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0MzIocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDMpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMSksXG4gICAgICBiMyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAyKSxcbiAgICAgIGI0ID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0IHwgYjMgPDwgMTYgfCBiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MzIocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMSksXG4gICAgICBiMyA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDIpLFxuICAgICAgYjQgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCB8IGIzIDw8IDE2IHwgYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDY0KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSA3KSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKyl7XG4gICAgYVs3IC0gal0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQ2NChzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKyl7XG4gICAgYVs3IC0gal0gPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQgKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0IChzLCBpLCBjKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldCAocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDE2KHMsaSxpMTYpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMiA9IDB4RkYgJiBpMTYgPj4gOCxcbiAgICAgIGIxID0gMHhGRiAmIGkxNjtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMCwgYjEpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAxLCBiMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDE2KHMsaSxpMTYpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0MTZcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQxNihzLGksaTE2KXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0MTYocyxpLGkxNik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQzMihzLGksaTMyKXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjQgPSAweEZGICYgaTMyID4+IDI0LFxuICAgICAgYjMgPSAweEZGICYgaTMyID4+IDE2LFxuICAgICAgYjIgPSAweEZGICYgaTMyID4+IDgsXG4gICAgICBiMSA9IDB4RkYgJiBpMzI7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMSwgYjIpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAyLCBiMyk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDMsIGI0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MzIocyxpLGkzMil7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQzMlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0MzJcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDMyKHMsaSxpMzIpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQzMihzLGksaTMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDY0KHMsaSxpNjQpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSA3KSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gY2FtbF9pbnQ2NF90b19ieXRlcyhpNjQpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKSB7XG4gICAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgNyAtIGosIGFbal0pO1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDY0KHMsaSxpNjQpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0NjRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDY0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQ2NChzLGksaTY0KXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0NjQocyxpLGk2NCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0IChzLCBpLCBjKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIChzKSB7XG4gIHZhciB0YWcgPSA5IC8qIEJZVEVTIHwgQVNDSUkgKi87XG4gIGlmICghanNvb19pc19hc2NpaShzKSlcbiAgICB0YWcgPSA4IC8qIEJZVEVTIHwgTk9UX0FTQ0lJICovLCBzID0gY2FtbF91dGY4X29mX3V0ZjE2KHMpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGFnLCBzLCBzLmxlbmd0aCk7XG59XG5cblxuLy9Qcm92aWRlczogTWxCeXRlc1xuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcywganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBNbEJ5dGVzICh0YWcsIGNvbnRlbnRzLCBsZW5ndGgpIHtcbiAgdGhpcy50PXRhZzsgdGhpcy5jPWNvbnRlbnRzOyB0aGlzLmw9bGVuZ3RoO1xufVxuTWxCeXRlcy5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpe1xuICBzd2l0Y2ggKHRoaXMudCkge1xuICBjYXNlIDk6IC8qQllURVMgfCBBU0NJSSovXG4gICAgcmV0dXJuIHRoaXMuYztcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHRoaXMpO1xuICBjYXNlIDA6IC8qQllURVMgfCBVTktPV04qL1xuICAgIGlmIChqc29vX2lzX2FzY2lpKHRoaXMuYykpIHtcbiAgICAgIHRoaXMudCA9IDk7IC8qQllURVMgfCBBU0NJSSovXG4gICAgICByZXR1cm4gdGhpcy5jO1xuICAgIH1cbiAgICB0aGlzLnQgPSA4OyAvKkJZVEVTIHwgTk9UX0FTQ0lJKi9cbiAgY2FzZSA4OiAvKkJZVEVTIHwgTk9UX0FTQ0lJKi9cbiAgICByZXR1cm4gdGhpcy5jO1xuICB9XG59O1xuTWxCeXRlcy5wcm90b3R5cGUudG9VdGYxNiA9IGZ1bmN0aW9uICgpe1xuICB2YXIgciA9IHRoaXMudG9TdHJpbmcoKTtcbiAgaWYodGhpcy50ID09IDkpIHJldHVybiByXG4gIHJldHVybiBjYW1sX3V0ZjE2X29mX3V0Zjgocik7XG59XG5NbEJ5dGVzLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uICgpe1xuICB2YXIgY29udGVudCA9IHRoaXMudCA9PSA0ID8gdGhpcy5jLnNsaWNlKCkgOiB0aGlzLmM7XG4gIHJldHVybiBuZXcgTWxCeXRlcyh0aGlzLnQsY29udGVudCx0aGlzLmwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyAocykge1xuICAvKiBBc3N1bWVzIG5vdCBCWVRFUyAqL1xuICBpZiAocy50ID09IDIgLyogUEFSVElBTCAqLylcbiAgICBzLmMgKz0gY2FtbF9zdHJfcmVwZWF0KHMubCAtIHMuYy5sZW5ndGgsICdcXDAnKVxuICBlbHNlXG4gICAgcy5jID0gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzIChzLmMsIDAsIHMuYy5sZW5ndGgpO1xuICBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LT1dOKi9cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQVJSQVkgKi9cbiAgaWYoZ2xvYmFsVGhpcy5VaW50OEFycmF5KSB7XG4gICAgdmFyIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50OEFycmF5KHMubCk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGEgPSBuZXcgQXJyYXkocy5sKTtcbiAgfVxuICB2YXIgYiA9IHMuYywgbCA9IGIubGVuZ3RoLCBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBiLmNoYXJDb2RlQXQoaSk7XG4gIGZvciAobCA9IHMubDsgaSA8IGw7IGkrKykgYVtpXSA9IDA7XG4gIHMuYyA9IGE7XG4gIHMudCA9IDQ7IC8qIEFSUkFZICovXG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9ieXRlcyAocykge1xuICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgcmV0dXJuIHMuYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2Zfc3RyaW5nIChzKSB7XG4gIHZhciBsID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgdmFyIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcobGVuKSB7XG4gIGlmKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0cmluZy5jcmVhdGVcIik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhsZW4/Mjo5LFwiXCIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcyxjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2J5dGVzKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQnl0ZXMuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2FycmF5IChhKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhhLDAsYS5sZW5ndGgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9hcnJheSAoYSkge1xuICByZXR1cm4gbmV3IE1sQnl0ZXMoNCxhLGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19jb21wYXJlIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfY29tcGFyZShzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDwgczIuYyk/LTE6KHMxLmMgPiBzMi5jKT8xOjA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2VxdWFsKHMxLCBzMikge1xuICBpZihzMSA9PT0gczIpIHJldHVybiAxO1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPT0gczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19lcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMik7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX25vdGVxdWFsKHMxLCBzMikgeyByZXR1cm4gMS1jYW1sX2J5dGVzX2VxdWFsKHMxLCBzMik7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzZXF1YWwgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW4gbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzdGhhbihzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDwgczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMyLHMxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMixzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzdGhhbihzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbGxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2ZpbGxfYnl0ZXMocywgaSwgbCwgYykge1xuICBpZiAobCA+IDApIHtcbiAgICBpZiAoaSA9PSAwICYmIChsID49IHMubCB8fCAocy50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsID49IHMuYy5sZW5ndGgpKSkge1xuICAgICAgaWYgKGMgPT0gMCkge1xuICAgICAgICBzLmMgPSBcIlwiO1xuICAgICAgICBzLnQgPSAyOyAvKiBQQVJUSUFMICovXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzLmMgPSBjYW1sX3N0cl9yZXBlYXQgKGwsIFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICAgICAgICBzLnQgPSAobCA9PSBzLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gICAgICBmb3IgKGwgKz0gaTsgaSA8IGw7IGkrKykgcy5jW2ldID0gYztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmlsbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZmlsbF9ieXRlc1xudmFyIGNhbWxfZmlsbF9zdHJpbmcgPSBjYW1sX2ZpbGxfYnl0ZXNcblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgaWYgKChpMiA9PSAwKSAmJlxuICAgICAgKGxlbiA+PSBzMi5sIHx8IChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsZW4gPj0gczIuYy5sZW5ndGgpKSkge1xuICAgIHMyLmMgPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIGlmIChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBpMiA9PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSB7XG4gICAgaWYgKHMyLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMyKTtcbiAgICB2YXIgYzEgPSBzMS5jLCBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT0gNCAvKiBBUlJBWSAqLykge1xuICAgICAgaWYgKGkyIDw9IGkxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4gKGxlbiwgYzEubGVuZ3RoIC0gaTEpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIGMyIFtpMiArIGldID0gYzEuY2hhckNvZGVBdChpMSArIGkpO1xuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLGIsYyxkLGUpIHtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGEpLGIsYyxkLGUpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykgeyByZXR1cm4gcy5sIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/LTE6KHMxID4gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDw9IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocy5jKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gcztcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIGlmIChqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpXG4gIGVsc2UgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF91dGY4X29mX3V0ZjE2KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocykgeyByZXR1cm4gbmV3IE1sQnl0ZXMoMCxzLHMubGVuZ3RoKTsgfVxuXG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLGksYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBzLmMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpe1xuICByZXR1cm4gcy50b1V0ZjE2KClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2lzX21sX2J5dGVzKHMpIHtcbiAgcmV0dXJuIChzIGluc3RhbmNlb2YgTWxCeXRlcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19jb250ZW50KHMpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYztcbiAgY2FzZSA0OlxuICAgIHJldHVybiBzLmNcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaVxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiAodHlwZW9mIHMgPT09IFwic3RyaW5nXCIgJiYgIS9bXlxceDAwLVxceGZmXS8udGVzdChzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nIChzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdG9fanNfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50ICh0YWcpIHsgdGhyb3cgdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmV0dXJuX2V4bl9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JldHVybl9leG5fY29uc3RhbnQgKHRhZykgeyByZXR1cm4gdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgYXJnKSB7IHRocm93IFswLCB0YWcsIGFyZ107IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9hcmdzICh0YWcsIGFyZ3MpIHsgdGhyb3cgWzAsIHRhZ10uY29uY2F0KGFyZ3MpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKHRhZywgbXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhtc2cpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYWlsd2l0aCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZhaWx3aXRoIChtc2cpIHtcbiAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSlcbiAgICBjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmU9WzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRmFpbHVyZVwiKSwtM107XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBtc2cpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuSW52YWxpZF9hcmd1bWVudCwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5FbmRfb2ZfZmlsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5Ob3RfZm91bmQpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF9jYWxsX2dlbihmLCBhcmdzKSB7XG4gIGlmKGYuZnVuKVxuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYuZnVuLCBhcmdzKTtcbiAgLy9GSVhNRSwgY2FuIGhhcHBlbiB3aXRoIHRvbyBtYW55IGFyZ3VtZW50c1xuICBpZih0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZjtcbiAgdmFyIG4gPSBmLmxlbmd0aCB8IDA7XG4gIGlmKG4gPT09IDApIHJldHVybiBmLmFwcGx5KG51bGwsYXJncyk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGggfCAwO1xuICB2YXIgZCA9IG4gLSBhcmdzTGVuIHwgMDtcbiAgaWYgKGQgPT0gMClcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgZWxzZSBpZiAoZCA8IDApIHtcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLmFwcGx5KG51bGwsYXJncy5zbGljZSgwLG4pKSxhcmdzLnNsaWNlKG4pKTtcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCl7XG4gICAgICB2YXIgZXh0cmFfYXJncyA9IChhcmd1bWVudHMubGVuZ3RoID09IDApPzE6YXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzLmxlbmd0aCtleHRyYV9hcmdzKTtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApIG5hcmdzW2FyZ3MubGVuZ3RoK2ldID0gYXJndW1lbnRzW2ldO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG52YXIgY2FtbF9uYW1lZF92YWx1ZXMgPSB7fTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSAoY29uc3QsY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZShubSx2KSB7XG4gIGNhbWxfbmFtZWRfdmFsdWVzW2NhbWxfanNieXRlc19vZl9zdHJpbmcobm0pXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlc1xuZnVuY3Rpb24gY2FtbF9uYW1lZF92YWx1ZShubSkge1xuICByZXR1cm4gY2FtbF9uYW1lZF92YWx1ZXNbbm1dXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbnZhciBjYW1sX2dsb2JhbF9kYXRhID0gWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX2dsb2JhbCAoY29uc3QsIHNoYWxsb3csIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKG4sIHYsIG5hbWVfb3B0KSB7XG4gIGlmKG5hbWVfb3B0ICYmIGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYylcbiAgICBuID0gZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jKG5hbWVfb3B0KTtcbiAgY2FtbF9nbG9iYWxfZGF0YVtuICsgMV0gPSB2O1xuICBpZihuYW1lX29wdCkgY2FtbF9nbG9iYWxfZGF0YVtuYW1lX29wdF0gPSB2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9nbG9iYWxfZGF0YSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2dldF9nbG9iYWxfZGF0YSAoKSB7IHJldHVybiBjYW1sX2dsb2JhbF9kYXRhOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfcHJpbnRhYmxlIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfaXNfcHJpbnRhYmxlKGMpIHsgcmV0dXJuICsoYyA+IDMxICYmIGMgPCAxMjcpOyB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEZvcm1hdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2Zvcm1hdFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2Zvcm1hdCAoZm10KSB7XG4gIGZtdCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KTtcbiAgdmFyIGxlbiA9IGZtdC5sZW5ndGg7XG4gIGlmIChsZW4gPiAzMSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZm9ybWF0X2ludDogZm9ybWF0IHRvbyBsb25nXCIpO1xuICB2YXIgZiA9XG4gICAgICB7IGp1c3RpZnk6JysnLCBzaWduc3R5bGU6Jy0nLCBmaWxsZXI6JyAnLCBhbHRlcm5hdGU6ZmFsc2UsXG4gICAgICAgIGJhc2U6MCwgc2lnbmVkY29udjpmYWxzZSwgd2lkdGg6MCwgdXBwZXJjYXNlOmZhbHNlLFxuICAgICAgICBzaWduOjEsIHByZWM6LTEsIGNvbnY6J2YnIH07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGZtdC5jaGFyQXQoaSk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSAnLSc6XG4gICAgICBmLmp1c3RpZnkgPSAnLSc7IGJyZWFrO1xuICAgIGNhc2UgJysnOiBjYXNlICcgJzpcbiAgICAgIGYuc2lnbnN0eWxlID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnMCc6XG4gICAgICBmLmZpbGxlciA9ICcwJzsgYnJlYWs7XG4gICAgY2FzZSAnIyc6XG4gICAgICBmLmFsdGVybmF0ZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOiBjYXNlICc1JzpcbiAgICBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzpcbiAgICAgIGYud2lkdGggPSAwO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLndpZHRoID0gZi53aWR0aCAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgICBicmVhaztcbiAgICBjYXNlICcuJzpcbiAgICAgIGYucHJlYyA9IDA7XG4gICAgICBpKys7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYucHJlYyA9IGYucHJlYyAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgY2FzZSAnZCc6IGNhc2UgJ2knOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlICd1JzpcbiAgICAgIGYuYmFzZSA9IDEwOyBicmVhaztcbiAgICBjYXNlICd4JzpcbiAgICAgIGYuYmFzZSA9IDE2OyBicmVhaztcbiAgICBjYXNlICdYJzpcbiAgICAgIGYuYmFzZSA9IDE2OyBmLnVwcGVyY2FzZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJ28nOlxuICAgICAgZi5iYXNlID0gODsgYnJlYWs7XG4gICAgY2FzZSAnZSc6IGNhc2UgJ2YnOiBjYXNlICdnJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYuY29udiA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJ0UnOiBjYXNlICdGJzogY2FzZSAnRyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLnVwcGVyY2FzZSA9IHRydWU7XG4gICAgICBmLmNvbnYgPSBjLnRvTG93ZXJDYXNlICgpOyBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcmF3YnVmZmVyKSB7XG4gIGlmIChmLnVwcGVyY2FzZSkgcmF3YnVmZmVyID0gcmF3YnVmZmVyLnRvVXBwZXJDYXNlKCk7XG4gIHZhciBsZW4gPSByYXdidWZmZXIubGVuZ3RoO1xuICAvKiBBZGp1c3QgbGVuIHRvIHJlZmxlY3QgYWRkaXRpb25hbCBjaGFycyAoc2lnbiwgZXRjKSAqL1xuICBpZiAoZi5zaWduZWRjb252ICYmIChmLnNpZ24gPCAwIHx8IGYuc2lnbnN0eWxlICE9ICctJykpIGxlbisrO1xuICBpZiAoZi5hbHRlcm5hdGUpIHtcbiAgICBpZiAoZi5iYXNlID09IDgpIGxlbiArPSAxO1xuICAgIGlmIChmLmJhc2UgPT0gMTYpIGxlbiArPSAyO1xuICB9XG4gIC8qIERvIHRoZSBmb3JtYXR0aW5nICovXG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnICcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgaWYgKGYuc2lnbmVkY29udikge1xuICAgIGlmIChmLnNpZ24gPCAwKSBidWZmZXIgKz0gJy0nO1xuICAgIGVsc2UgaWYgKGYuc2lnbnN0eWxlICE9ICctJykgYnVmZmVyICs9IGYuc2lnbnN0eWxlO1xuICB9XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gOCkgYnVmZmVyICs9ICcwJztcbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSAxNikgYnVmZmVyICs9IFwiMHhcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJzAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnMCc7XG4gIGJ1ZmZlciArPSByYXdidWZmZXI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJy0nKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGJ1ZmZlcik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczoganNvb19mbG9vcl9sb2cyXG52YXIgbG9nMl9vayA9IE1hdGgubG9nMiAmJiBNYXRoLmxvZzIoMS4xMjM1NTgyMDkyODg5NDc0RSszMDcpID09IDEwMjBcbmZ1bmN0aW9uIGpzb29fZmxvb3JfbG9nMih4KSB7XG4gIGlmKGxvZzJfb2spIHJldHVybiBNYXRoLmZsb29yKE1hdGgubG9nMih4KSlcbiAgdmFyIGkgPSAwO1xuICBpZiAoeCA9PSAwKSByZXR1cm4gLUluZmluaXR5O1xuICBpZih4Pj0xKSB7d2hpbGUgKHg+PTIpIHt4Lz0yOyBpKyt9IH1cbiAgZWxzZSB7d2hpbGUgKHggPCAxKSB7eCo9MjsgaS0tfSB9O1xuICByZXR1cm4gaTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzIsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXG5mdW5jdGlvbiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKCFpc0Zpbml0ZSh4KSkge1xuICAgIGlmIChpc05hTih4KSlcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgxLCAwLCAweDdmZjApO1xuICAgIGlmICh4ID4gMClcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweDdmZjApXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4ZmZmMClcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzB4ODAwMDooeD49MCk/MDoweDgwMDA7XG4gIGlmIChzaWduKSB4ID0gLXg7XG4gIC8vIEludDY0LmJpdHNfb2ZfZmxvYXQgMS4xMjM1NTgyMDkyODg5NDc0RSszMDcgPSAweDdmYjAwMDAwMDAwMDAwMDBMXG4gIC8vIHVzaW5nIE1hdGguTE9HMkUqTWF0aC5sb2coeCkgaW4gcGxhY2Ugb2YgTWF0aC5sb2cyIHJlc3VsdCBpbiBwcmVjaXNpb24gbG9zdFxuICB2YXIgZXhwID0ganNvb19mbG9vcl9sb2cyKHgpICsgMTAyMztcbiAgaWYgKGV4cCA8PSAwKSB7XG4gICAgZXhwID0gMDtcbiAgICB4IC89IE1hdGgucG93KDIsLTEwMjYpO1xuICB9IGVsc2Uge1xuICAgIHggLz0gTWF0aC5wb3coMixleHAtMTAyNyk7XG4gICAgaWYgKHggPCAxNikge1xuICAgICAgeCAqPSAyOyBleHAgLT0xOyB9XG4gICAgaWYgKGV4cCA9PSAwKSB7XG4gICAgICB4IC89IDI7IH1cbiAgfVxuICB2YXIgayA9IE1hdGgucG93KDIsMjQpO1xuICB2YXIgcjMgPSB4fDA7XG4gIHggPSAoeCAtIHIzKSAqIGs7XG4gIHZhciByMiA9IHh8MDtcbiAgeCA9ICh4IC0gcjIpICogaztcbiAgdmFyIHIxID0geHwwO1xuICByMyA9IChyMyAmMHhmKSB8IHNpZ24gfCBleHAgPDwgNDtcbiAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKHIxLCByMiwgcjMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBnbG9iYWxUaGlzLkZsb2F0MzJBcnJheSgxKTtcbiAgZmxvYXQzMmFbMF0gPSB4O1xuICB2YXIgaW50MzJhID0gbmV3IGdsb2JhbFRoaXMuSW50MzJBcnJheShmbG9hdDMyYS5idWZmZXIpO1xuICByZXR1cm4gaW50MzJhWzBdIHwgMDtcbn1cblxuLy9GUCBsaXRlcmFscyBjYW4gYmUgd3JpdHRlbiB1c2luZyB0aGUgaGV4YWRlY2ltYWxcbi8vbm90YXRpb24gMHg8bWFudGlzc2EgaW4gaGV4PnA8ZXhwb25lbnQ+IGZyb20gSVNPIEM5OS5cbi8vaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpL2pzLWhleGZsb2F0L2Jsb2IvbWFzdGVyL2hleGZsb2F0LmpzXG4vL1Byb3ZpZGVzOiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgKHgsIHByZWMsIHN0eWxlKSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIm5hblwiKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKCh4ID4gMCk/XCJpbmZpbml0eVwiOlwiLWluZmluaXR5XCIpO1xuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MTooeD49MCk/MDoxO1xuICBpZihzaWduKSB4ID0gLXg7XG4gIHZhciBleHAgPSAwO1xuICBpZiAoeCA9PSAwKSB7IH1cbiAgZWxzZSBpZiAoeCA8IDEpIHtcbiAgICB3aGlsZSAoeCA8IDEgJiYgZXhwID4gLTEwMjIpICB7IHggKj0gMjsgZXhwLS0gfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlICh4ID49IDIpIHsgeCAvPSAyOyBleHArKyB9XG4gIH1cbiAgdmFyIGV4cF9zaWduID0gZXhwIDwgMCA/ICcnIDogJysnO1xuICB2YXIgc2lnbl9zdHIgPSAnJztcbiAgaWYgKHNpZ24pIHNpZ25fc3RyID0gJy0nXG4gIGVsc2Uge1xuICAgIHN3aXRjaChzdHlsZSl7XG4gICAgY2FzZSA0MyAvKiAnKycgKi86IHNpZ25fc3RyID0gJysnOyBicmVhaztcbiAgICBjYXNlIDMyIC8qICcgJyAqLzogc2lnbl9zdHIgPSAnICc7IGJyZWFrO1xuICAgIGRlZmF1bHQ6IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAocHJlYyA+PSAwICYmIHByZWMgPCAxMykge1xuICAgIC8qIElmIGEgcHJlY2lzaW9uIGlzIGdpdmVuLCBhbmQgaXMgc21hbGwsIHJvdW5kIG1hbnRpc3NhIGFjY29yZGluZ2x5ICovXG4gICAgdmFyIGNzdCA9IE1hdGgucG93KDIscHJlYyAqIDQpO1xuICAgIHggPSBNYXRoLnJvdW5kKHggKiBjc3QpIC8gY3N0O1xuICB9XG4gIHZhciB4X3N0ciA9IHgudG9TdHJpbmcoMTYpO1xuICBpZihwcmVjID49IDApe1xuICAgIHZhciBpZHggPSB4X3N0ci5pbmRleE9mKCcuJyk7XG4gICAgaWYoaWR4PDApIHtcbiAgICAgIHhfc3RyICs9ICcuJyArIGNhbWxfc3RyX3JlcGVhdChwcmVjLCAnMCcpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBzaXplID0gaWR4KzErcHJlYztcbiAgICAgIGlmKHhfc3RyLmxlbmd0aCA8IHNpemUpXG4gICAgICAgIHhfc3RyICs9IGNhbWxfc3RyX3JlcGVhdChzaXplIC0geF9zdHIubGVuZ3RoLCAnMCcpO1xuICAgICAgZWxzZVxuICAgICAgICB4X3N0ciA9IHhfc3RyLnN1YnN0cigwLHNpemUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHNpZ25fc3RyICsgJzB4JyArIHhfc3RyICsgJ3AnICsgZXhwX3NpZ24gKyBleHAudG9TdHJpbmcoMTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGxvID0geC5sbztcbiAgdmFyIG1pID0geC5taTtcbiAgdmFyIGhpID0geC5oaTtcbiAgdmFyIGV4cCA9IChoaSAmIDB4N2ZmZikgPj4gNDtcbiAgaWYgKGV4cCA9PSAyMDQ3KSB7XG4gICAgaWYgKChsb3xtaXwoaGkmMHhmKSkgPT0gMClcbiAgICAgIHJldHVybiAoaGkgJiAweDgwMDApPygtSW5maW5pdHkpOkluZmluaXR5O1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBOYU47XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLC0yNCk7XG4gIHZhciByZXMgPSAobG8qayttaSkqaysoaGkmMHhmKTtcbiAgaWYgKGV4cCA+IDApIHtcbiAgICByZXMgKz0gMTY7XG4gICAgcmVzICo9IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICB9IGVsc2VcbiAgICByZXMgKj0gTWF0aC5wb3coMiwtMTAyNik7XG4gIGlmIChoaSAmIDB4ODAwMCkgcmVzID0gLSByZXM7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV4dGFmdGVyX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfc3ViLGNhbWxfaW50NjRfb2ZfaW50MzJcbmZ1bmN0aW9uIGNhbWxfbmV4dGFmdGVyX2Zsb2F0ICh4LHkpIHtcbiAgaWYoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIHJldHVybiBOYU47XG4gIGlmKHg9PXkpIHJldHVybiB5O1xuICBpZih4PT0wKXtcbiAgICBpZih5IDwgMClcbiAgICAgIHJldHVybiAtTWF0aC5wb3coMiwgLTEwNzQpXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE1hdGgucG93KDIsIC0xMDc0KVxuICB9XG4gIHZhciBiaXRzID0gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpO1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxKTtcbiAgaWYgKCh4PHkpID09ICh4PjApKVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X2FkZChiaXRzLCBvbmUpXG4gIGVsc2VcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9zdWIoYml0cywgb25lKVxuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGJpdHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RydW5jX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX3RydW5jX2Zsb2F0KHgpe1xuICByZXR1cm4gTWF0aC50cnVuYyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGludDMyYSA9IG5ldyBnbG9iYWxUaGlzLkludDMyQXJyYXkoMSk7XG4gIGludDMyYVswXSA9IHg7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBnbG9iYWxUaGlzLkZsb2F0MzJBcnJheShpbnQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGZsb2F0MzJhWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NsYXNzaWZ5X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NsYXNzaWZ5X2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPj0gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHJldHVybiAwO1xuICAgIGlmICh4ICE9IDApIHJldHVybiAxO1xuICAgIHJldHVybiAyO1xuICB9XG4gIHJldHVybiBpc05hTih4KT80OjM7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21vZGZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbW9kZl9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgdmFyIG5lZyA9ICgxL3gpIDwgMDtcbiAgICB4ID0gTWF0aC5hYnMoeCk7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yICh4KTtcbiAgICB2YXIgZiA9IHggLSBpO1xuICAgIGlmIChuZWcpIHsgaSA9IC1pOyBmID0gLWY7IH1cbiAgICByZXR1cm4gWzAsIGYsIGldO1xuICB9XG4gIGlmIChpc05hTiAoeCkpIHJldHVybiBbMCwgTmFOLCBOYU5dO1xuICByZXR1cm4gWzAsIDEveCwgeF07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xkZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xkZXhwX2Zsb2F0ICh4LGV4cCkge1xuICBleHAgfD0gMDtcbiAgaWYgKGV4cCA+IDEwMjMpIHtcbiAgICBleHAgLT0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIGlmIChleHAgPiAxMDIzKSB7ICAvLyBpbiBjYXNlIHggaXMgc3Vibm9ybWFsXG4gICAgICBleHAgLT0gMTAyMztcbiAgICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgfVxuICB9XG4gIGlmIChleHAgPCAtMTAyMykge1xuICAgIGV4cCArPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgLTEwMjMpO1xuICB9XG4gIHggKj0gTWF0aC5wb3coMiwgZXhwKTtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXhwX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfZnJleHBfZmxvYXQgKHgpIHtcbiAgaWYgKCh4ID09IDApIHx8ICFpc0Zpbml0ZSh4KSkgcmV0dXJuIFswLCB4LCAwXTtcbiAgdmFyIG5lZyA9IHggPCAwO1xuICBpZiAobmVnKSB4ID0gLSB4O1xuICB2YXIgZXhwID0gTWF0aC5tYXgoLTEwMjMsIGpzb29fZmxvb3JfbG9nMih4KSArIDEpO1xuICB4ICo9IE1hdGgucG93KDIsLWV4cCk7XG4gIHdoaWxlICh4IDwgMC41KSB7XG4gICAgeCAqPSAyO1xuICAgIGV4cC0tO1xuICB9XG4gIHdoaWxlICh4ID49IDEpIHtcbiAgICB4ICo9IDAuNTtcbiAgICBleHArKztcbiAgfVxuICBpZiAobmVnKSB4ID0gLSB4O1xuICByZXR1cm4gWzAsIHgsIGV4cF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbG9hdF9jb21wYXJlICh4LCB5KSB7XG4gIGlmICh4ID09PSB5KSByZXR1cm4gMDtcbiAgaWYgKHggPCB5KSByZXR1cm4gLTE7XG4gIGlmICh4ID4geSkgcmV0dXJuIDE7XG4gIGlmICh4ID09PSB4KSByZXR1cm4gMTtcbiAgaWYgKHkgPT09IHkpIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29weXNpZ25fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29weXNpZ25fZmxvYXQgKHgsIHkpIHtcbiAgaWYgKHkgPT0gMCkgeSA9IDEgLyB5O1xuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHJldHVybiAoeSA8IDApPygteCk6eDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zaWduYml0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpZ25iaXRfZmxvYXQoeCkge1xuICBpZiAoeCA9PSAwKSB4ID0gMSAvIHg7XG4gIHJldHVybiAoeCA8IDApPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9leHBtMV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHBtMV9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5leHBtMSh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9leHAyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cDJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5wb3coMiwgeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMXBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMXBfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cxcCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cyKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2h5cG90X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2h5cG90X2Zsb2F0ICh4LCB5KSB7IHJldHVybiBNYXRoLmh5cG90KHgsIHkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzEwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzEwX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmxvZzEwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Nvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Fjb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Fjb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFjb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3NpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5zaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2FzaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2FzaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFzaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3RhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC50YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2F0YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2F0YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmF0YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JvdW5kX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3JvdW5kX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnJvdW5kKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2NicnRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2JydF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jYnJ0KHgpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2VyZl9mbG9hdCh4KSB7XG4gIHZhciBhMSA9IDAuMjU0ODI5NTkyO1xuICB2YXIgYTIgPSAtMC4yODQ0OTY3MzY7XG4gIHZhciBhMyA9IDEuNDIxNDEzNzQxO1xuICB2YXIgYTQgPSAtMS40NTMxNTIwMjc7XG4gIHZhciBhNSA9IDEuMDYxNDA1NDI5O1xuICB2YXIgcCA9IDAuMzI3NTkxMTtcblxuICB2YXIgc2lnbiA9IDE7XG4gIGlmICh4IDwgMCkge1xuICAgIHNpZ24gPSAtMTtcbiAgfVxuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHZhciB0ID0gMS4wIC8gKDEuMCArIHAgKiB4KTtcbiAgdmFyIHkgPSAxLjAgLSAoKCgoYTUgKiB0ICsgYTQpICogdCArIGEzKSAqIHQgKyBhMikgKiB0ICsgYTEpICogdCAqIE1hdGguZXhwKC14ICogeCk7XG5cbiAgcmV0dXJuIHNpZ24gKiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZmNfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXJmX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2VyZmNfZmxvYXQoeCkge1xuICByZXR1cm4gMSAtIGNhbWxfZXJmX2Zsb2F0KHgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm1hX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZtYV9mbG9hdCh4LCB5LCB6KSB7XG4gIHZhciBTUExJVCA9IE1hdGgucG93KDIsIDI3KSArIDE7XG4gIHZhciBNSU5fVkFMVUUgPSBNYXRoLnBvdygyLCAtMTAyMik7XG4gIHZhciBFUFNJTE9OID0gTWF0aC5wb3coMiwgLTUyKTtcbiAgdmFyIEMgPSA0MTY7XG4gIHZhciBBID0gTWF0aC5wb3coMiwgK0MpO1xuICB2YXIgQiA9IE1hdGgucG93KDIsIC1DKTtcblxuICBmdW5jdGlvbiBtdWx0aXBseSAoYSwgYikge1xuICAgIHZhciBhdCA9IFNQTElUICogYTtcbiAgICB2YXIgYWhpID0gYXQgLSAoYXQgLSBhKTtcbiAgICB2YXIgYWxvID0gYSAtIGFoaTtcbiAgICB2YXIgYnQgPSBTUExJVCAqIGI7XG4gICAgdmFyIGJoaSA9IGJ0IC0gKGJ0IC0gYik7XG4gICAgdmFyIGJsbyA9IGIgLSBiaGk7XG4gICAgdmFyIHAgPSBhICogYjtcbiAgICB2YXIgZSA9ICgoYWhpICogYmhpIC0gcCkgKyBhaGkgKiBibG8gKyBhbG8gKiBiaGkpICsgYWxvICogYmxvO1xuICAgIHJldHVybiB7XG4gICAgICBwOiBwLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdmFyIHMgPSBhICsgYjtcbiAgICB2YXIgdiA9IHMgLSBhO1xuICAgIHZhciBlID0gKGEgLSAocyAtIHYpKSArIChiIC0gdik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHM6IHMsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGp1c3QgKHgsIHkpIHtcbiAgICByZXR1cm4geCAhPT0gMCAmJiB5ICE9PSAwICYmIFNQTElUICogeCAtIChTUExJVCAqIHggLSB4KSA9PT0geCA/IHggKiAoMSArICh4IDwgMCA/IC0xIDogKzEpICogKHkgPCAwID8gLTEgOiArMSkgKiBFUFNJTE9OKSA6IHg7XG4gIH07XG5cbiAgaWYgKHggPT09IDAgfHwgeCAhPT0geCB8fCB4ID09PSArMSAvIDAgfHwgeCA9PT0gLTEgLyAwIHx8XG4gICAgICB5ID09PSAwIHx8IHkgIT09IHkgfHwgeSA9PT0gKzEgLyAwIHx8IHkgPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB4ICogeSArIHo7XG4gIH1cbiAgaWYgKHogPT09IDApIHtcbiAgICByZXR1cm4geCAqIHk7XG4gIH1cbiAgaWYgKHogIT09IHogfHwgeiA9PT0gKzEgLyAwIHx8IHogPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHNjYWxlID0gMTtcbiAgd2hpbGUgKE1hdGguYWJzKHgpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeCAqPSBCO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHkgKj0gQjtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICogc2NhbGU7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHgpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeCAqPSBBO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHkgKj0gQTtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciB4cyA9IHg7XG4gIHZhciB5cyA9IHk7XG4gIHZhciB6cyA9IHogLyBzY2FsZTtcblxuICBpZiAoTWF0aC5hYnMoenMpID4gTWF0aC5hYnMoeHMgKiB5cykgKiA0IC8gRVBTSUxPTikge1xuICAgIHJldHVybiB6O1xuICB9XG4gIGlmIChNYXRoLmFicyh6cykgPCBNYXRoLmFicyh4cyAqIHlzKSAqIEVQU0lMT04gLyA0ICogRVBTSUxPTiAvIDQpIHtcbiAgICB6cyA9ICh6IDwgMCA/IC0xIDogKzEpICogTUlOX1ZBTFVFO1xuICB9XG5cbiAgdmFyIHh5ID0gbXVsdGlwbHkoeHMsIHlzKTtcbiAgdmFyIHMgPSBhZGQoeHkucCwgenMpO1xuICB2YXIgdSA9IGFkZCh4eS5lLCBzLmUpO1xuICB2YXIgaSA9IGFkZChzLnMsIHUucyk7XG5cbiAgdmFyIGYgPSBpLnMgKyBhZGp1c3QoaS5lLCB1LmUpO1xuICBpZiAoZiA9PT0gMCkge1xuICAgIHJldHVybiBmO1xuICB9XG5cbiAgdmFyIGZzID0gZiAqIHNjYWxlO1xuICBpZiAoTWF0aC5hYnMoZnMpID4gTUlOX1ZBTFVFKSB7XG4gICAgcmV0dXJuIGZzO1xuICB9XG5cbiAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSB3YXMgZXh0cmEgcm91bmRpbmcgZm9yIGEgZGVub3JtYWxpemVkIHZhbHVlLlxuICByZXR1cm4gZnMgKyBhZGp1c3QoZiAtIGZzIC8gc2NhbGUsIGkuZSkgKiBzY2FsZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9mbG9hdCAoZm10LCB4KSB7XG4gIGZ1bmN0aW9uIHRvRml4ZWQoeCxkcCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IDEuMCkge1xuICAgICAgcmV0dXJuIHgudG9GaXhlZChkcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlID0gcGFyc2VJbnQoeC50b1N0cmluZygpLnNwbGl0KCcrJylbMV0pO1xuICAgICAgaWYgKGUgPiAyMCkge1xuICAgICAgICBlIC09IDIwO1xuICAgICAgICB4IC89IE1hdGgucG93KDEwLGUpO1xuICAgICAgICB4ICs9IChuZXcgQXJyYXkoZSsxKSkuam9pbignMCcpO1xuICAgICAgICBpZihkcCA+IDApIHtcbiAgICAgICAgICB4ID0geCArICcuJyArIChuZXcgQXJyYXkoZHArMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cbiAgICAgIGVsc2UgcmV0dXJuIHgudG9GaXhlZChkcClcbiAgICB9XG4gIH1cbiAgdmFyIHMsIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICB2YXIgcHJlYyA9IChmLnByZWMgPCAwKT82OmYucHJlYztcbiAgaWYgKHggPCAwIHx8ICh4ID09IDAgJiYgMS94ID09IC1JbmZpbml0eSkpIHsgZi5zaWduID0gLTE7IHggPSAteDsgfVxuICBpZiAoaXNOYU4oeCkpIHsgcyA9IFwibmFuXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2UgaWYgKCFpc0Zpbml0ZSh4KSkgeyBzID0gXCJpbmZcIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZVxuICAgIHN3aXRjaCAoZi5jb252KSB7XG4gICAgY2FzZSAnZSc6XG4gICAgICB2YXIgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjKTtcbiAgICAgIC8vIGV4cG9uZW50IHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZGlnaXRzXG4gICAgICB2YXIgaSA9IHMubGVuZ3RoO1xuICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdmJzpcbiAgICAgIHMgPSB0b0ZpeGVkKHgsIHByZWMpOyBicmVhaztcbiAgICBjYXNlICdnJzpcbiAgICAgIHByZWMgPSBwcmVjP3ByZWM6MTtcbiAgICAgIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyAtIDEpO1xuICAgICAgdmFyIGogPSBzLmluZGV4T2YoJ2UnKTtcbiAgICAgIHZhciBleHAgPSArcy5zbGljZShqICsgMSk7XG4gICAgICBpZiAoZXhwIDwgLTQgfHwgeCA+PSAxZTIxIHx8IHgudG9GaXhlZCgwKS5sZW5ndGggPiBwcmVjKSB7XG4gICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgdmFyIGkgPSBqIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKSArIHMuc2xpY2Uoaik7XG4gICAgICAgIGkgPSBzLmxlbmd0aDtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcCA9IHByZWM7XG4gICAgICAgIGlmIChleHAgPCAwKSB7IHAgLT0gZXhwICsgMTsgcyA9IHgudG9GaXhlZChwKTsgfVxuICAgICAgICBlbHNlIHdoaWxlIChzID0geC50b0ZpeGVkKHApLCBzLmxlbmd0aCA+IHByZWMgKyAxKSBwLS07XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICAgIHZhciBpID0gcy5sZW5ndGggLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9zdHJpbmcocykge1xuICB2YXIgcmVzO1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKVxuICByZXMgPSArcztcbiAgaWYgKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHJldHVybiByZXM7XG4gIHMgPSBzLnJlcGxhY2UoL18vZyxcIlwiKTtcbiAgcmVzID0gK3M7XG4gIGlmICgoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKSByZXR1cm4gcmVzO1xuICB2YXIgbSA9IC9eICooWystXT8pMHgoWzAtOWEtZl0rKVxcLj8oWzAtOWEtZl0qKShwKFsrLV0/WzAtOV0rKSk/L2kuZXhlYyhzKTtcbiAgLy8gICAgICAgICAgMSAgICAgICAgMiAgICAgICAgICAgICAzICAgICAgICAgICA1XG4gIGlmKG0pe1xuICAgIHZhciBtMyA9IG1bM10ucmVwbGFjZSgvMCskLywnJyk7XG4gICAgdmFyIG1hbnRpc3NhID0gcGFyc2VJbnQobVsxXSArIG1bMl0gKyBtMywgMTYpO1xuICAgIHZhciBleHBvbmVudCA9IChtWzVdfDApIC0gNCptMy5sZW5ndGg7XG4gICAgcmVzID0gbWFudGlzc2EgKiBNYXRoLnBvdygyLCBleHBvbmVudCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZigvXlxcKz9pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gSW5maW5pdHk7XG4gIGlmKC9eLWluZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiAtSW5maW5pdHk7XG4gIGNhbWxfZmFpbHdpdGgoXCJmbG9hdF9vZl9zdHJpbmdcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucy5ub2RlICE9PSAndW5kZWZpbmVkJylcbn1cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiBmYWxzZVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9SZXF1aXJlczogTWxOb2RlRmlsZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBNbE5vZGVEZXZpY2Uocm9vdCkge1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubm0gPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAodGhpcy5yb290ICsgbmFtZSk7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLCBtb2RlLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ta2RpclN5bmModGhpcy5ubShuYW1lKSx7bW9kZTptb2RlfSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJtZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMucmVhZGRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRGlyZWN0b3J5KCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBiID0gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgICB0aGlzLmZzLnVubGlua1N5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIGI7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIGNvbnN0cyA9IHJlcXVpcmUoJ2NvbnN0YW50cycpO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBrZXkgaW4gZil7XG4gICAgc3dpdGNoKGtleSl7XG4gICAgY2FzZSBcInJkb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19SRE9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJ3cm9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fV1JPTkxZOyBicmVhaztcbiAgICBjYXNlIFwiYXBwZW5kXCIgIDpcbiAgICAgIHJlcyB8PSBjb25zdHMuT19XUk9OTFkgfCBjb25zdHMuT19BUFBFTkQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiY3JlYXRlXCIgICA6IHJlcyB8PSBjb25zdHMuT19DUkVBVDsgICAgYnJlYWs7XG4gICAgY2FzZSBcInRydW5jYXRlXCIgOiByZXMgfD0gY29uc3RzLk9fVFJVTkM7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJleGNsXCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX0VYQ0w7ICAgICBicmVhaztcbiAgICBjYXNlIFwiYmluYXJ5XCIgICA6IHJlcyB8PSBjb25zdHMuT19CSU5BUlk7ICAgYnJlYWs7XG4gICAgY2FzZSBcInRleHRcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fVEVYVDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJub25ibG9ja1wiIDogcmVzIHw9IGNvbnN0cy5PX05PTkJMT0NLOyBicmVhaztcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICB2YXIgZmQgPSB0aGlzLmZzLm9wZW5TeW5jKHRoaXMubm0obmFtZSksIHJlcyk7XG4gICAgcmV0dXJuIG5ldyBNbE5vZGVGaWxlKGZkKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlbmFtZSA9IGZ1bmN0aW9uKG8sIG4sIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlbmFtZVN5bmModGhpcy5ubShvKSwgdGhpcy5ubShuKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmxzdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN5bWxpbmsgPSBmdW5jdGlvbih0b19kaXIsIHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMuc3ltbGlua1N5bmModGhpcy5ubSh0YXJnZXQpLCB0aGlzLm5tKHBhdGgpLCB0b19kaXIgPyAnZGlyJyA6ICdmaWxlJyk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGxpbmsgPSB0aGlzLmZzLnJlYWRsaW5rU3luYyh0aGlzLm5tKG5hbWUpLCAndXRmOCcpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhsaW5rKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yYWlzZV9ub2RlanNfZXJyb3IgPSBmdW5jdGlvbihlcnIsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKFwiVW5peC5Vbml4X2Vycm9yXCIpO1xuICBpZiAocmFpc2VfdW5peCAmJiB1bml4X2Vycm9yKSB7XG4gICAgdmFyIGFyZ3MgPSBtYWtlX3VuaXhfZXJyX2FyZ3MoZXJyLmNvZGUsIGVyci5zeXNjYWxsLCBlcnIucGF0aCwgZXJyLmVycm5vKTtcbiAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdHNfZnJvbV9qcyA9IGZ1bmN0aW9uKGpzX3N0YXRzKSB7XG4gIC8qID09PVVuaXguZmlsZV9raW5kPT09XG4gICAqIHR5cGUgZmlsZV9raW5kID1cbiAgICogICAgIFNfUkVHICAgICAgICAgICAgICAgICAgICAgICAoKiogUmVndWxhciBmaWxlICopXG4gICAqICAgfCBTX0RJUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIERpcmVjdG9yeSAqKVxuICAgKiAgIHwgU19DSFIgICAgICAgICAgICAgICAgICAgICAgICgqKiBDaGFyYWN0ZXIgZGV2aWNlICopXG4gICAqICAgfCBTX0JMSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIEJsb2NrIGRldmljZSAqKVxuICAgKiAgIHwgU19MTksgICAgICAgICAgICAgICAgICAgICAgICgqKiBTeW1ib2xpYyBsaW5rICopXG4gICAqICAgfCBTX0ZJRk8gICAgICAgICAgICAgICAgICAgICAgKCoqIE5hbWVkIHBpcGUgKilcbiAgICogICB8IFNfU09DSyAgICAgICAgICAgICAgICAgICAgICAoKiogU29ja2V0ICopXG4gICAqL1xuICB2YXIgZmlsZV9raW5kO1xuICBpZiAoanNfc3RhdHMuaXNGaWxlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAwO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBmaWxlX2tpbmQgPSAxO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAyO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQmxvY2tEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDM7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgIGZpbGVfa2luZCA9IDQ7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNGSUZPKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA1O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU29ja2V0KCkpIHtcbiAgICBmaWxlX2tpbmQgPSA2O1xuICB9XG4gIC8qID09PVVuaXguc3RhdHM9PT1cbiAgICogdHlwZSBzdGF0cyA9XG4gICAqICB7IHN0X2RldiA6IGludDsgICAgICAgICAgICAgICAoKiogRGV2aWNlIG51bWJlciAqKVxuICAgKiAgICBzdF9pbm8gOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIElub2RlIG51bWJlciAqKVxuICAgKiAgICBzdF9raW5kIDogZmlsZV9raW5kOyAgICAgICAgKCoqIEtpbmQgb2YgdGhlIGZpbGUgKilcbiAgICogICAgc3RfcGVybSA6IGZpbGVfcGVybTsgICAgICAgICgqKiBBY2Nlc3MgcmlnaHRzICopXG4gICAqICAgIHN0X25saW5rIDogaW50OyAgICAgICAgICAgICAoKiogTnVtYmVyIG9mIGxpbmtzICopXG4gICAqICAgIHN0X3VpZCA6IGludDsgICAgICAgICAgICAgICAoKiogVXNlciBpZCBvZiB0aGUgb3duZXIgKilcbiAgICogICAgc3RfZ2lkIDogaW50OyAgICAgICAgICAgICAgICgqKiBHcm91cCBJRCBvZiB0aGUgZmlsZSdzIGdyb3VwICopXG4gICAqICAgIHN0X3JkZXYgOiBpbnQ7ICAgICAgICAgICAgICAoKiogRGV2aWNlIElEIChpZiBzcGVjaWFsIGZpbGUpICopXG4gICAqICAgIHN0X3NpemUgOiBpbnQ7ICAgICAgICAgICAgICAoKiogU2l6ZSBpbiBieXRlcyAqKVxuICAgKiAgICBzdF9hdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgYWNjZXNzIHRpbWUgKilcbiAgICogICAgc3RfbXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IG1vZGlmaWNhdGlvbiB0aW1lICopXG4gICAqICAgIHN0X2N0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBzdGF0dXMgY2hhbmdlIHRpbWUgKilcbiAgICogIH1cbiAgICovXG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGpzX3N0YXRzLmRldixcbiAgICBqc19zdGF0cy5pbm8sXG4gICAgZmlsZV9raW5kLFxuICAgIGpzX3N0YXRzLm1vZGUsXG4gICAganNfc3RhdHMubmxpbmssXG4gICAganNfc3RhdHMudWlkLFxuICAgIGpzX3N0YXRzLmdpZCxcbiAgICBqc19zdGF0cy5yZGV2LFxuICAgIGpzX3N0YXRzLnNpemUsXG4gICAganNfc3RhdHMuYXRpbWVNcyxcbiAgICBqc19zdGF0cy5tdGltZU1zLFxuICAgIGpzX3N0YXRzLmN0aW1lTXNcbiAgKTtcbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZURldmljZVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZURldmljZSgpIHtcbn1cblxuLy9Qcm92aWRlczogTWxOb2RlRmlsZVxuLy9SZXF1aXJlczogTWxGaWxlLCBjYW1sX2FycmF5X29mX3N0cmluZywgY2FtbF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19zZXQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbE5vZGVGaWxlKGZkKXtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMuZmQgPSBmZDtcbn1cbk1sTm9kZUZpbGUucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcblxuTWxOb2RlRmlsZS5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB0cnkge1xuICAgIHRoaXMuZnMuZnRydW5jYXRlU3luYyh0aGlzLmZkLGxlbnwwKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZpbGUucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5mc3RhdFN5bmModGhpcy5mZCkuc2l6ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGaWxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYsYnVmX29mZnNldCxsZW4pe1xuICB2YXIgYSA9IGNhbWxfYXJyYXlfb2Zfc3RyaW5nKGJ1Zik7XG4gIGlmKCEgKGEgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlVpbnQ4QXJyYXkpKVxuICAgIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50OEFycmF5KGEpO1xuICB2YXIgYnVmZmVyID0gZ2xvYmFsVGhpcy5CdWZmZXIuZnJvbShhKTtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWZmZXIsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuTWxOb2RlRmlsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxidWYsYnVmX29mZnNldCxsZW4pe1xuICB2YXIgYSA9IGNhbWxfYXJyYXlfb2ZfYnl0ZXMoYnVmKTtcbiAgaWYoISAoYSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuVWludDhBcnJheSkpXG4gICAgYSA9IG5ldyBnbG9iYWxUaGlzLlVpbnQ4QXJyYXkoYSk7XG4gIHZhciBidWZmZXIgPSBnbG9iYWxUaGlzLkJ1ZmZlci5mcm9tKGEpO1xuICB0cnkge1xuICAgIHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYnVmZmVyLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIGNhbWxfYnl0ZXNfc2V0KGJ1ZixidWZfb2Zmc2V0ICsgaSxidWZmZXJbYnVmX29mZnNldCtpXSk7XG4gIH1cbiAgcmV0dXJuIDBcbn1cbk1sTm9kZUZpbGUucHJvdG90eXBlLnJlYWRfb25lID0gZnVuY3Rpb24ob2Zmc2V0KXtcbiAgdmFyIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50OEFycmF5KDEpO1xuICB2YXIgYnVmZmVyID0gZ2xvYmFsVGhpcy5CdWZmZXIuZnJvbShhKTtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGJ1ZmZlciwgMCwgMSwgb2Zmc2V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiBidWZmZXJbMF07XG59XG5NbE5vZGVGaWxlLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCl7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5jbG9zZVN5bmModGhpcy5mZCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuXG5NbE5vZGVGaWxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZUZpbGU7XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZpbGVcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZUZpbGUoKXtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRHVtbXkgZmlsZXN5c3RlbVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpe1xuICByZXR1cm4gKG5hbWUuc2xpY2UoLTEpICE9PSBcIi9cIikgPyAobmFtZSArIFwiL1wiKSA6IG5hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5pZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZClcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKCkucmVwbGFjZSgvXFxcXC9nLCcvJyk7XG5lbHNlXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gIFwiL3N0YXRpY1wiO1xuY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2goY2FtbF9jdXJyZW50X2Rpcik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3Jvb3Rcbi8vUmVxdWlyZXM6IHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfZ2V0X3Jvb3QocGF0aCl7XG4gIHZhciB4ID0gcGF0aF9pc19hYnNvbHV0ZShwYXRoKTtcbiAgaWYgKCF4KSByZXR1cm47XG4gIHJldHVybiB4WzBdICsgXCIvXCJ9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcm9vdFxuLy9SZXF1aXJlczogY2FtbF9nZXRfcm9vdCwgY2FtbF9jdXJyZW50X2RpciwgY2FtbF9mYWlsd2l0aFxudmFyIGNhbWxfcm9vdCA9IGNhbWxfZ2V0X3Jvb3QoY2FtbF9jdXJyZW50X2RpcikgfHwgY2FtbF9mYWlsd2l0aChcInVuYWJsZSB0byBjb21wdXRlIGNhbWxfcm9vdFwiKTtcblxuXG4vL1Byb3ZpZGVzOiBNbEZpbGVcbmZ1bmN0aW9uIE1sRmlsZSgpeyAgfVxuXG4vL1Byb3ZpZGVzOiBwYXRoX2lzX2Fic29sdXRlXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCkge1xuICBmdW5jdGlvbiBwb3NpeChwYXRoKSB7XG4gICAgaWYgKHBhdGguY2hhckF0KDApID09PSAnLycpIHJldHVybiBbXCJcIiwgcGF0aC5zdWJzdHJpbmcoMSldO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdpbjMyKHBhdGgpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9iM2ZjYzI0NWZiMjU1Mzk5MDllZjFkNWVhYTAxZGJmOTJlMTY4NjMzL2xpYi9wYXRoLmpzI0w1NlxuICAgIHZhciBzcGxpdERldmljZVJlID0gL14oW2EtekEtWl06fFtcXFxcL117Mn1bXlxcXFwvXStbXFxcXC9dK1teXFxcXC9dKyk/KFtcXFxcL10pPyhbXFxzXFxTXSo/KSQvO1xuICAgIHZhciByZXN1bHQgPSBzcGxpdERldmljZVJlLmV4ZWMocGF0aCk7XG4gICAgdmFyIGRldmljZSA9IHJlc3VsdFsxXSB8fCAnJztcbiAgICB2YXIgaXNVbmMgPSBCb29sZWFuKGRldmljZSAmJiBkZXZpY2UuY2hhckF0KDEpICE9PSAnOicpO1xuXG4gICAgLy8gVU5DIHBhdGhzIGFyZSBhbHdheXMgYWJzb2x1dGVcbiAgICBpZiAoQm9vbGVhbihyZXN1bHRbMl0gfHwgaXNVbmMpKSB7XG4gICAgICB2YXIgcm9vdCA9IChyZXN1bHRbMV0gfHwgJycpO1xuICAgICAgdmFyIHNlcCA9IChyZXN1bHRbMl0gfHwgJycpO1xuICAgICAgcmV0dXJuIFtyb290LCBwYXRoLnN1YnN0cmluZyhyb290Lmxlbmd0aCArIHNlcC5sZW5ndGgpXVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSkge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyB3aW4zMiA6IHBvc2l4O1xuICB9XG4gIGVsc2UgcmV0dXJuIHBvc2l4XG59XG52YXIgcGF0aF9pc19hYnNvbHV0ZSA9IG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfcGF0aFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfbWFrZV9wYXRoIChuYW1lKSB7XG4gIG5hbWU9Y2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKCAhcGF0aF9pc19hYnNvbHV0ZShuYW1lKSApXG4gICAgbmFtZSA9IGNhbWxfY3VycmVudF9kaXIgKyBuYW1lO1xuICB2YXIgY29tcDAgPSBwYXRoX2lzX2Fic29sdXRlKG5hbWUpO1xuICB2YXIgY29tcCA9IGNvbXAwWzFdLnNwbGl0KFwiL1wiKTtcbiAgdmFyIG5jb21wID0gW11cbiAgZm9yKHZhciBpID0gMDsgaTxjb21wLmxlbmd0aDsgaSsrKXtcbiAgICBzd2l0Y2goY29tcFtpXSl7XG4gICAgY2FzZSBcIi4uXCI6IGlmKG5jb21wLmxlbmd0aD4xKSBuY29tcC5wb3AoKTsgYnJlYWs7XG4gICAgY2FzZSBcIi5cIjogYnJlYWs7XG4gICAgZGVmYXVsdDogbmNvbXAucHVzaChjb21wW2ldKTticmVha1xuICAgIH1cbiAgfVxuICBuY29tcC51bnNoaWZ0KGNvbXAwWzBdKTtcbiAgbmNvbXAub3JpZyA9IG5hbWU7XG4gIHJldHVybiBuY29tcDtcbn1cblxuLy9Qcm92aWRlczpqc29vX21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIE1sTm9kZURldmljZSwgY2FtbF9yb290LCBmc19ub2RlX3N1cHBvcnRlZFxudmFyIGpzb29fbW91bnRfcG9pbnQgPSBbXVxuaWYgKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShjYW1sX3Jvb3QpfSk7XG59IGVsc2Uge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn1cbmpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpcIi9zdGF0aWMvXCIsIGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKFwiL3N0YXRpYy9cIil9KTtcblxuLy9Qcm92aWRlczpjYW1sX2xpc3RfbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGlzdF9tb3VudF9wb2ludCgpe1xuICB2YXIgcHJldiA9IDBcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspe1xuICAgIHZhciBvbGQgPSBwcmV2O1xuICAgIHByZXYgPSBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhqc29vX21vdW50X3BvaW50W2ldLnBhdGgpLCBvbGRdXG4gIH1cbiAgcmV0dXJuIHByZXY7XG59XG5cbi8vUHJvdmlkZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2V0X3Jvb3QsIE1sTm9kZURldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IHBhdGguam9pbihcIi9cIik7XG4gIHZhciBuYW1lX3NsYXNoID0gY2FtbF90cmFpbGluZ19zbGFzaChuYW1lKTtcbiAgdmFyIHJlcztcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbSA9IGpzb29fbW91bnRfcG9pbnRbaV07XG4gICAgaWYobmFtZV9zbGFzaC5zZWFyY2gobS5wYXRoKSA9PSAwXG4gICAgICAgJiYgKCFyZXMgfHwgcmVzLnBhdGgubGVuZ3RoIDwgbS5wYXRoLmxlbmd0aCkpXG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICB9XG4gIGlmKCAhcmVzICYmIGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICB2YXIgcm9vdCA9IGNhbWxfZ2V0X3Jvb3QobmFtZSk7XG4gICAgaWYgKHJvb3QgJiYgcm9vdC5tYXRjaCgvXlthLXpBLVpdOlxcLyQvKSl7XG4gICAgICB2YXIgbSA9IHtwYXRoOnJvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2Uocm9vdCl9O1xuICAgICAganNvb19tb3VudF9wb2ludC5wdXNoKG0pO1xuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgICB9XG4gIH1cbiAgaWYoIHJlcyApIHJldHVybiByZXM7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwibm8gZGV2aWNlIGZvdW5kIGZvciBcIiArIG5hbWVfc2xhc2gpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vdW50X2F1dG9sb2FkXG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX21vdW50X2F1dG9sb2FkKG5hbWUsZil7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOm5hbWUsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UobmFtZSxmKX0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VubW91bnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfbWFrZV9wYXRoLCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3VubW91bnQobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAgdmFyIGlkeCA9IC0xO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKylcbiAgICBpZihqc29vX21vdW50X3BvaW50W2ldLnBhdGggPT0gbmFtZSkgaWR4ID0gaTtcbiAgaWYoaWR4ID4gLTEpIGpzb29fbW91bnRfcG9pbnQuc3BsaWNlKGlkeCwxKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0Y3dkXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRjd2QoKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfY3VycmVudF9kaXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jaGRpclxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19jaGRpcihkaXIpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkaXIpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIGlmKHJvb3QucmVzdCkgY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocm9vdC5wYXRoICsgcm9vdC5yZXN0KTtcbiAgICBlbHNlIGNhbWxfY3VycmVudF9kaXIgPSByb290LnBhdGg7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhkaXIpKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9hX2RpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm90X2FfZGlyKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2ZpbGVfZXhpc3RzXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfZmlsZV9leGlzdHMgKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfYV9kaXIsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5yZWFkZGlyKHJvb3QucmVzdCk7XG4gIHZhciBsID0gbmV3IEFycmF5KGEubGVuZ3RoICsgMSk7XG4gIGxbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGEubGVuZ3RoO2krKylcbiAgICBsW2krMV0gPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGFbaV0pO1xuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVtb3ZlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbW92ZShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIG9rID0gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCk7XG4gIGlmKG9rID09IDApIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLmlzX2Rpcihyb290LnJlc3QpO1xuICByZXR1cm4gYT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbmFtZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbmFtZShvLG4pe1xuICB2YXIgb19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobyk7XG4gIHZhciBuX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuKTtcbiAgaWYob19yb290LmRldmljZSAhPSBuX3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IGNhbm5vdCBtb3ZlIGZpbGUgYmV0d2VlbiB0d28gZmlsZXN5c3RlbVwiKTtcbiAgaWYoIW9fcm9vdC5kZXZpY2UucmVuYW1lKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IG5vIGltcGxlbWVudGVkXCIpO1xuICBvX3Jvb3QuZGV2aWNlLnJlbmFtZShvX3Jvb3QucmVzdCwgbl9yb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3N5c19ta2RpcihuYW1lLCBwZXJtKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LHBlcm0pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV9ub3RfYV9kaXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3JtZGlyKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ybWRpcihyb290LnJlc3QpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZSh2ZmQsIGtpbmQsIGxheW91dCwgc2hhcmVkLCBkaW1zLCBwb3MpIHtcbiAgLy8gdmFyIGRhdGEgPSBjYW1sX2dsb2JhbF9kYXRhLmZkc1t2ZmRdO1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9iYV9tYXBfZmlsZSBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUoYXJndixhcmduKXtcbiAgcmV0dXJuIGNhbWxfYmFfbWFwX2ZpbGUoYXJndlswXSxhcmd2WzFdLGFyZ3ZbMl0sYXJndlszXSxhcmd2WzRdLGFyZ3ZbNV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlX2V4dGVyblxuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZV9leHRlcm4obmFtZSxjb250ZW50KXtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKVxuICAgIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpO1xuICBlbHNlIHtcbiAgICBpZighZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCkgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICAgIGdsb2JhbFRoaXMuY2FtbF9mc190bXAucHVzaCh7bmFtZTpuYW1lLGNvbnRlbnQ6Y29udGVudH0pO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZzX2luaXRcbi8vUmVxdWlyZXM6IGpzb29fY3JlYXRlX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfZnNfaW5pdCAoKXtcbiAgdmFyIHRtcD1nbG9iYWxUaGlzLmNhbWxfZnNfdG1wXG4gIGlmKHRtcCl7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHRtcC5sZW5ndGg7IGkrKyl7XG4gICAgICBqc29vX2NyZWF0ZV9maWxlKHRtcFtpXS5uYW1lLHRtcFtpXS5jb250ZW50KTtcbiAgICB9XG4gIH1cbiAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlID0ganNvb19jcmVhdGVfZmlsZTtcbiAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKCEgcm9vdC5kZXZpY2UucmVnaXN0ZXIpIGNhbWxfZmFpbHdpdGgoXCJjYW5ub3QgcmVnaXN0ZXIgZmlsZVwiKTtcbiAgcm9vdC5kZXZpY2UucmVnaXN0ZXIocm9vdC5yZXN0LGNvbnRlbnQpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9maWxlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgbmFtZSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk7XG4gIHZhciBjb250ZW50ID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjb250ZW50KTtcbiAgcmV0dXJuIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSwgY29udGVudCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWFkX2ZpbGVfY29udGVudFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVhZF9maWxlX2NvbnRlbnQgKG5hbWUpIHtcbiAgdmFyIG5hbWUgPSAodHlwZW9mIG5hbWUgPT0gXCJzdHJpbmdcIik/Y2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTpuYW1lO1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3Qse3Jkb25seToxfSk7XG4gICAgdmFyIGxlbiAgPSBmaWxlLmxlbmd0aCgpO1xuICAgIHZhciBidWYgID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgICBmaWxlLnJlYWQoMCxidWYsMCxsZW4pO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9ieXRlcyhidWYpXG4gIH1cbiAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG59XG4iLCIvL1Byb3ZpZGVzOiB1bml4X2dldHRpbWVvZmRheVxuZnVuY3Rpb24gdW5peF9nZXR0aW1lb2ZkYXkgKCkge1xuICByZXR1cm4gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAvIDEwMDA7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfdGltZVxuLy9SZXF1aXJlczogdW5peF9nZXR0aW1lb2ZkYXlcbmZ1bmN0aW9uIHVuaXhfdGltZSAoKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKHVuaXhfZ2V0dGltZW9mZGF5ICgpKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF9nbXRpbWVcbmZ1bmN0aW9uIHVuaXhfZ210aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoRGF0ZS5VVEMoZC5nZXRVVENGdWxsWWVhcigpLCAwLCAxKSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgcmV0dXJuIEJMT0NLKDAsIGQuZ2V0VVRDU2Vjb25kcygpLCBkLmdldFVUQ01pbnV0ZXMoKSwgZC5nZXRVVENIb3VycygpLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXRlKCksIGQuZ2V0VVRDTW9udGgoKSwgZC5nZXRVVENGdWxsWWVhcigpIC0gMTkwMCxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF5KCksIGRveSxcbiAgICAgICAgICAgICAgIGZhbHNlIHwgMCAvKiBmb3IgVVRDIGRheWxpZ2h0IHNhdmluZ3MgdGltZSBpcyBmYWxzZSAqLylcbn1cblxuLy9Qcm92aWRlczogdW5peF9sb2NhbHRpbWVcbmZ1bmN0aW9uIHVuaXhfbG9jYWx0aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICB2YXIgamFuID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKTtcbiAgdmFyIGp1bCA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgNiwgMSk7XG4gIHZhciBzdGRUaW1lem9uZU9mZnNldCA9IE1hdGgubWF4KGphbi5nZXRUaW1lem9uZU9mZnNldCgpLCBqdWwuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFNlY29uZHMoKSwgZC5nZXRNaW51dGVzKCksIGQuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF0ZSgpLCBkLmdldE1vbnRoKCksIGQuZ2V0RnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldERheSgpLCBkb3ksXG4gICAgICAgICAgICAgICAoZC5nZXRUaW1lem9uZU9mZnNldCgpIDwgc3RkVGltZXpvbmVPZmZzZXQpIHwgMCAvKiBkYXlsaWdodCBzYXZpbmdzIHRpbWUgIGZpZWxkLiAqLylcbn1cblxuLy9Qcm92aWRlczogdW5peF9ta3RpbWVcbi8vUmVxdWlyZXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiB1bml4X21rdGltZSh0bSl7XG4gIHZhciBkID0gKG5ldyBEYXRlKHRtWzZdKzE5MDAsdG1bNV0sdG1bNF0sdG1bM10sdG1bMl0sdG1bMV0pKS5nZXRUaW1lKCk7XG4gIHZhciB0ID0gTWF0aC5mbG9vcihkIC8gMTAwMCk7XG4gIHZhciB0bTIgPSB1bml4X2xvY2FsdGltZSh0KTtcbiAgcmV0dXJuIEJMT0NLKDAsdCx0bTIpO1xufVxuXG4vL1Byb3ZpZGVzOiB3aW5fc3RhcnR1cCBjb25zdFxuZnVuY3Rpb24gd2luX3N0YXJ0dXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiB3aW5fY2xlYW51cCBjb25zdFxuZnVuY3Rpb24gd2luX2NsZWFudXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiB3aW5faGFuZGxlX2ZkIGNvbnN0XG5mdW5jdGlvbiB3aW5faGFuZGxlX2ZkKHgpIHtyZXR1cm4geDt9XG5cbi8vUHJvdmlkZXM6IHVuaXhfaXNhdHR5XG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciB0dHkgPSByZXF1aXJlKCd0dHknKTtcbiAgICByZXR1cm4gdHR5LmlzYXR0eShmaWxlRGVzY3JpcHRvcik/MTowO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciB1bml4X2Vycm9yID0gW1xuICAvKiA9PT1Vbml4LmVycm9yPT09XG4gICAqXG4gICAqIFRoaXMgYXJyYXkgaXMgaW4gb3JkZXIgb2YgdGhlIHZhcmlhbnQgaW4gT0NhbWxcbiAgICovXG4gIFwiRTJCSUdcIiwgXCJFQUNDRVNcIiwgXCJFQUdBSU5cIiwgXCJFQkFERlwiLCBcIkVCVVNZXCIsIFwiRUNISUxEXCIsIFwiRURFQURMS1wiLCBcIkVET01cIixcbiAgXCJFRVhJU1RcIiwgXCJFRkFVTFRcIiwgXCJFRkJJR1wiLCBcIkVJTlRSXCIsIFwiRUlOVkFMXCIsIFwiRUlPXCIsIFwiRUlTRElSXCIsIFwiRU1GSUxFXCIsXG4gIFwiRU1MSU5LXCIsIFwiRU5BTUVUT09MT05HXCIsIFwiRU5GSUxFXCIsIFwiRU5PREVWXCIsIFwiRU5PRU5UXCIsIFwiRU5PRVhFQ1wiLCBcIkVOT0xDS1wiLFxuICBcIkVOT01FTVwiLCBcIkVOT1NQQ1wiLCBcIkVOT1NZU1wiLCBcIkVOT1RESVJcIiwgXCJFTk9URU1QVFlcIiwgXCJFTk9UVFlcIiwgXCJFTlhJT1wiLFxuICBcIkVQRVJNXCIsIFwiRVBJUEVcIiwgXCJFUkFOR0VcIiwgXCJFUk9GU1wiLCBcIkVTUElQRVwiLCBcIkVTUkNIXCIsIFwiRVhERVZcIiwgXCJFV09VTERCTE9DS1wiLFxuICBcIkVJTlBST0dSRVNTXCIsIFwiRUFMUkVBRFlcIiwgXCJFTk9UU09DS1wiLCBcIkVERVNUQUREUlJFUVwiLCBcIkVNU0dTSVpFXCIsXG4gIFwiRVBST1RPVFlQRVwiLCBcIkVOT1BST1RPT1BUXCIsIFwiRVBST1RPTk9TVVBQT1JUXCIsIFwiRVNPQ0tUTk9TVVBQT1JUXCIsXG4gIFwiRU9QTk9UU1VQUFwiLCBcIkVQRk5PU1VQUE9SVFwiLCBcIkVBRk5PU1VQUE9SVFwiLCBcIkVBRERSSU5VU0VcIiwgXCJFQUREUk5PVEFWQUlMXCIsXG4gIFwiRU5FVERPV05cIiwgXCJFTkVUVU5SRUFDSFwiLCBcIkVORVRSRVNFVFwiLCBcIkVDT05OQUJPUlRFRFwiLCBcIkVDT05OUkVTRVRcIiwgXCJFTk9CVUZTXCIsXG4gIFwiRUlTQ09OTlwiLCBcIkVOT1RDT05OXCIsIFwiRVNIVVRET1dOXCIsIFwiRVRPT01BTllSRUZTXCIsIFwiRVRJTUVET1VUXCIsIFwiRUNPTk5SRUZVU0VEXCIsXG4gIFwiRUhPU1RET1dOXCIsIFwiRUhPU1RVTlJFQUNIXCIsIFwiRUxPT1BcIiwgXCJFT1ZFUkZMT1dcIlxuXTtcbmZ1bmN0aW9uIG1ha2VfdW5peF9lcnJfYXJncyhjb2RlLCBzeXNjYWxsLCBwYXRoLCBlcnJubykge1xuICB2YXIgdmFyaWFudCA9IHVuaXhfZXJyb3IuaW5kZXhPZihjb2RlKTtcbiAgaWYgKHZhcmlhbnQgPCAwKSB7XG4gICAgLy8gRGVmYXVsdCBpZiB1bmRlZmluZWRcbiAgICBpZiAoZXJybm8gPT0gbnVsbCkge1xuICAgICAgZXJybm8gPSAtOTk5OVxuICAgIH1cbiAgICAvLyBJZiBub25lIG9mIHRoZSBhYm92ZSB2YXJpYW50cywgZmFsbGJhY2sgdG8gRVVOS05PV05FUlIoaW50KVxuICAgIHZhcmlhbnQgPSBCTE9DSygwLCBlcnJubyk7XG4gIH1cbiAgdmFyIGFyZ3MgPSBbXG4gICAgdmFyaWFudCxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzeXNjYWxsIHx8IFwiXCIpLFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGggfHwgXCJcIilcbiAgXTtcbiAgcmV0dXJuIGFyZ3M7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uuc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJ1bml4X3N0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uuc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfc3RhdF82NFxuLy9SZXF1aXJlczogdW5peF9zdGF0XG52YXIgdW5peF9zdGF0XzY0ID0gdW5peF9zdGF0O1xuXG4vL1Byb3ZpZGVzOiB1bml4X2xzdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gdW5peF9sc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF9sc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5sc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfbHN0YXRfNjRcbi8vUmVxdWlyZXM6IHVuaXhfbHN0YXRcbnZhciB1bml4X2xzdGF0XzY0ID0gdW5peF9sc3RhdDtcblxuLy9Qcm92aWRlczogdW5peF9ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfbWtkaXIobmFtZSwgcGVybSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLm1rZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfbWtkaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LCBwZXJtLCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gdW5peF9ybWRpcihuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uucm1kaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF9ybWRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ybWRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfc3ltbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfc3ltbGluayh0b19kaXIsIHNyYywgZHN0KSB7XG4gIHZhciBzcmNfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKHNyYyk7XG4gIHZhciBkc3Rfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRzdCk7XG4gIGlmKHNyY19yb290LmRldmljZSAhPSBkc3Rfcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfc3ltbGluazogY2Fubm90IHN5bWxpbmsgYmV0d2VlbiB0d28gZmlsZXN5c3RlbXNcIik7XG4gIGlmICghc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF9zeW1saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHNyY19yb290LmRldmljZS5zeW1saW5rKHRvX2Rpciwgc3JjX3Jvb3QucmVzdCwgZHN0X3Jvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF9yZWFkbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfcmVhZGxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJlYWRsaW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfcmVhZGxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UucmVhZGxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X3VubGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfdW5saW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS51bmxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF91bmxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF9nZXR1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG5mdW5jdGlvbiB1bml4X2dldHVpZCh1bml0KSB7XG4gIGlmKGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKXtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCgpO1xuICB9XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfZ2V0cHd1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG5mdW5jdGlvbiB1bml4X2dldHB3dWlkKHVuaXQpIHtcbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKVxufVxuXG4vL1Byb3ZpZGVzOiB1bml4X2hhc19zeW1saW5rXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gdW5peF9oYXNfc3ltbGluayh1bml0KSB7XG4gIHJldHVybiBmc19ub2RlX3N1cHBvcnRlZCgpPzE6MFxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBTeXNcblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuU3lzX2Vycm9yLCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4aXQgKGNvZGUpIHtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICBpZihnLnF1aXQpIGcucXVpdChjb2RlKTtcbiAgLy9ub2RlanNcbiAgaWYoZy5wcm9jZXNzICYmIGcucHJvY2Vzcy5leGl0KVxuICAgIGcucHJvY2Vzcy5leGl0KGNvZGUpO1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJGdW5jdGlvbiAnZXhpdCcgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4bil7XG4gIHN3aXRjaChleG5bMl0pIHtcbiAgY2FzZSAtODogLy8gTWF0Y2hfZmFpbHVyZVxuICBjYXNlIC0xMTogLy8gQXNzZXJ0X2ZhaWx1cmVcbiAgY2FzZSAtMTI6IC8vIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG4gICAgcmV0dXJuIDE7XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXhuKXtcbiAgdmFyIHIgPSBcIlwiO1xuICBpZihleG5bMF0gPT0gMCkge1xuICAgIHIgKz0gZXhuWzFdWzFdO1xuICAgIGlmKGV4bi5sZW5ndGggPT0gMyAmJiBleG5bMl1bMF0gPT0gMCAmJiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4blsxXSkpIHtcblxuICAgICAgdmFyIGJ1Y2tldCA9IGV4blsyXTtcbiAgICAgIHZhciBzdGFydCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFydCA9IDJcbiAgICAgIHZhciBidWNrZXQgPSBleG47XG4gICAgfVxuICAgIHIgKz0gXCIoXCI7XG4gICAgZm9yKHZhciBpID0gc3RhcnQ7IGkgPCBidWNrZXQubGVuZ3RoOyBpICsrKXtcbiAgICAgIGlmKGkgPiBzdGFydCkgcis9XCIsIFwiO1xuICAgICAgdmFyIHYgPSBidWNrZXRbaV1cbiAgICAgIGlmKHR5cGVvZiB2ID09IFwibnVtYmVyXCIpXG4gICAgICAgIHIrPSB2LnRvU3RyaW5nKCk7XG4gICAgICBlbHNlIGlmKHYgaW5zdGFuY2VvZiBNbEJ5dGVzKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSBpZih0eXBlb2YgdiA9PSBcInN0cmluZ1wiKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSByICs9IFwiX1wiO1xuICAgIH1cbiAgICByICs9IFwiKVwiXG4gIH0gZWxzZSBpZiAoZXhuWzBdID09IDI0OCl7XG4gICAgciArPSBleG5bMV1cbiAgfVxuICByZXR1cm4gclxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9mb3JtYXRfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpe1xuICBpZihlcnIgaW5zdGFuY2VvZiBBcnJheSAmJiAoZXJyWzBdID09IDAgfHwgZXJyWzBdID09IDI0OCkpIHtcbiAgICB2YXIgaGFuZGxlciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCIpO1xuICAgIGlmKGhhbmRsZXIpIGhhbmRsZXIoZXJyLGZhbHNlKTtcbiAgICBlbHNlIHtcbiAgICAgIHZhciBtc2cgPSBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHZhciBhdF9leGl0ID0gY2FtbF9uYW1lZF92YWx1ZShcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiKTtcbiAgICAgIGlmKGF0X2V4aXQpIHsgYXRfZXhpdCgwKSB9XG4gICAgICBnbG9iYWxUaGlzLmNvbnNvbGUuZXJyb3IoXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uIFwiICsgbXNnICsgXCJcXG5cIik7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IGVyclxuICB9XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfc3RhdGljX2VudlxuZnVuY3Rpb24gY2FtbF9zZXRfc3RhdGljX2VudihrLHYpe1xuICBpZighZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYpXG4gICAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYgPSB7fVxuICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltrXSA9IHY7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0ZW52IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGVudiAobmFtZSkge1xuICB2YXIgZyA9IGdsb2JhbFRoaXM7XG4gIHZhciBuID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIC8vbm9kZWpzIGVudlxuICBpZihnLnByb2Nlc3NcbiAgICAgJiYgZy5wcm9jZXNzLmVudlxuICAgICAmJiBnLnByb2Nlc3MuZW52W25dICE9IHVuZGVmaW5lZClcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoZy5wcm9jZXNzLmVudltuXSk7XG4gIGlmKGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52XG4gICAgICYmIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXSlcbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQgKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnZcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfdW5zYWZlX2dldGVudihuYW1lKXtcbiAgcmV0dXJuIGNhbWxfc3lzX2dldGVudiAobmFtZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJndlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciBjYW1sX2FyZ3YgPSAoKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICB2YXIgbWFpbiA9IFwiYS5vdXRcIjtcbiAgdmFyIGFyZ3MgPSBbXVxuXG4gIGlmKGcucHJvY2Vzc1xuICAgICAmJiBnLnByb2Nlc3MuYXJndlxuICAgICAmJiBnLnByb2Nlc3MuYXJndi5sZW5ndGggPiAxKSB7XG4gICAgdmFyIGFyZ3YgPSBnLnByb2Nlc3MuYXJndlxuICAgIC8vbm9kZWpzXG4gICAgbWFpbiA9IGFyZ3ZbMV07XG4gICAgYXJncyA9IGFyZ3Yuc2xpY2UoMik7XG4gIH1cblxuICB2YXIgcCA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG1haW4pO1xuICB2YXIgYXJnczIgPSBbMCwgcF07XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKVxuICAgIGFyZ3MyLnB1c2goY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoYXJnc1tpXSkpO1xuICByZXR1cm4gYXJnczI7XG59KSgpKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG52YXIgY2FtbF9leGVjdXRhYmxlX25hbWUgPSBjYW1sX2FyZ3ZbMV1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2FyZ3YgKGEpIHtcbiAgcmV0dXJuIFswLCBjYW1sX2FyZ3ZbMV0sIGNhbWxfYXJndl07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfYXJndiAoYSkge1xuICByZXR1cm4gY2FtbF9hcmd2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19tb2RpZnlfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19tb2RpZnlfYXJndihhcmcpe1xuICBjYW1sX2FyZ3YgPSBhcmc7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG5mdW5jdGlvbiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUoYSl7XG4gIHJldHVybiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHZhciBjbWQgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhjbWQpO1xuICBpZiAodHlwZW9mIHJlcXVpcmUgIT0gXCJ1bmRlZmluZWRcIlxuICAgICAgJiYgcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpXG4gICAgICAmJiByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJykuZXhlY1N5bmMpIHtcbiAgICB0cnkge3JlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKS5leGVjU3luYyhjbWQse3N0ZGlvOiAnaW5oZXJpdCd9KTsgcmV0dXJuIDB9XG4gICAgY2F0Y2ggKGUpIHtyZXR1cm4gMX1cbiAgfVxuICBlbHNlIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWUgbXV0YWJsZVxudmFyIGNhbWxfaW5pdGlhbF90aW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAqIDAuMDAxO1xuZnVuY3Rpb24gY2FtbF9zeXNfdGltZSAoKSB7XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICByZXR1cm4gbm93ICogMC4wMDEgLSBjYW1sX2luaXRpYWxfdGltZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuXG4vL1JlcXVpcmVzOiBjYW1sX3N5c190aW1lXG5mdW5jdGlvbiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4oYikge1xuICByZXR1cm4gY2FtbF9zeXNfdGltZSgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yYW5kb21fc2VlZCBtdXRhYmxlXG4vL1RoZSBmdW5jdGlvbiBuZWVkcyB0byByZXR1cm4gYW4gYXJyYXkgc2luY2UgT0NhbWwgNC4wLi4uXG5mdW5jdGlvbiBjYW1sX3N5c19yYW5kb21fc2VlZCAoKSB7XG4gIGlmKGdsb2JhbFRoaXMuY3J5cHRvKSB7XG4gICAgaWYodHlwZW9mIGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyA9PT0gJ2Z1bmN0aW9uJyl7XG4gICAgICAvLyBXZWJicm93c2Vyc1xuICAgICAgdmFyIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50MzJBcnJheSgxKTtcbiAgICAgIGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhKTtcbiAgICAgIHJldHVybiBbMCxhWzBdXTtcbiAgICB9IGVsc2UgaWYoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMgPT09ICdmdW5jdGlvbicpe1xuICAgICAgLy8gTm9kZWpzXG4gICAgICB2YXIgYnVmZiA9IGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKDQpO1xuICAgICAgdmFyIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50MzJBcnJheShidWZmKTtcbiAgICAgIHJldHVybiBbMCxhWzBdXTtcbiAgICB9XG4gIH1cbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHZhciB4ID0gbm93XjB4ZmZmZmZmZmYqTWF0aC5yYW5kb20oKTtcbiAgcmV0dXJuIFswLHhdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfaW50X3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2ludF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgY29uc3Rcbi8vIG1heF9pbnQgLyA0IHNvIHRoYXQgdGhlIGZvbGxvd2luZyBkb2VzIG5vdCBvdmVyZmxvd1xuLy9sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDE7O1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSAoKSB7IHJldHVybiAoMHg3RkZGRkZGRi80KSB8IDA7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIlVuaXhcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiAoKSB7IHJldHVybiBvc190eXBlID09IFwiV2luMzJcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJDeWd3aW5cIiA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwianNfb2Zfb2NhbWxcIildO1xufVxuXG4vL1Byb3ZpZGVzOiBvc190eXBlXG52YXIgb3NfdHlwZSA9IChnbG9iYWxUaGlzLnByb2Nlc3MgJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09IFwid2luMzJcIikgPyBcIkN5Z3dpblwiIDogXCJVbml4XCI7XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2NvbmZpZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2NvbmZpZyAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhvc190eXBlKSwgMzIsIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzYXR0eShfY2hhbikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3ZhcmlhbnRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV92YXJpYW50KF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlcigpe3JldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmdcbmZ1bmN0aW9uIHVuaXhfaW5ldF9hZGRyX29mX3N0cmluZyAoKSB7cmV0dXJuIDA7fVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG52YXIgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5nc1xuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIChib29sKSB7XG4gIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IGJvb2w7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFxuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCAoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfcnVudGltZV93YXJuaW5ncztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9lbmFibGVkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUoX2NoYW5uZWwpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcIlNwYWNldGltZSBwcm9maWxpbmcgb25seSB3b3JrcyBmb3IgbmF0aXZlIGNvZGVcIik7XG59XG5cbi8vQWx3YXlzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpIHtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICBpZihnLnByb2Nlc3MgJiYgZy5wcm9jZXNzLm9uKSB7XG4gICAgZy5wcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIGZ1bmN0aW9uIChlcnIsIG9yaWdpbikge1xuICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKTtcbiAgICAgIGcucHJvY2Vzcy5leGl0ICgyKTtcbiAgICB9KVxuICB9XG4gIGVsc2UgaWYoZy5hZGRFdmVudExpc3RlbmVyKXtcbiAgICBnLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZnVuY3Rpb24oZXZlbnQpe1xuICAgICAgaWYoZXZlbnQuZXJyb3Ipe1xuICAgICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihldmVudC5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbmNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKTtcbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZURldmljZVxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXksIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZXNcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuZnVuY3Rpb24gTWxGYWtlRGV2aWNlIChyb290LCBmKSB7XG4gIHRoaXMuY29udGVudD17fTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbiAgdGhpcy5sb29rdXBGdW4gPSBmO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY3JlYXRlX2Rpcl9pZl9uZWVkZWQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBjb21wID0gbmFtZS5zcGxpdChcIi9cIik7XG4gIHZhciByZXMgPSBcIlwiO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgY29tcC5sZW5ndGggLSAxOyBpKyspe1xuICAgIHJlcyArPSBjb21wW2ldICsgXCIvXCI7XG4gICAgaWYodGhpcy5jb250ZW50W3Jlc10pIGNvbnRpbnVlO1xuICAgIHRoaXMuY29udGVudFtyZXNdID0gU3ltYm9sKFwiZGlyZWN0b3J5XCIpO1xuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnNsYXNoID0gZnVuY3Rpb24obmFtZSl7XG4gIHJldHVybiAvXFwvJC8udGVzdChuYW1lKT9uYW1lOihuYW1lICsgXCIvXCIpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5sb29rdXAgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKCF0aGlzLmNvbnRlbnRbbmFtZV0gJiYgdGhpcy5sb29rdXBGdW4pIHtcbiAgICB2YXIgcmVzID0gdGhpcy5sb29rdXBGdW4oY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnJvb3QpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpKTtcbiAgICBpZihyZXMgIT09IDApIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV09bmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcocmVzWzFdKSk7XG4gICAgfVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgLy8gVGhlIHJvb3Qgb2YgdGhlIGRldmljZSBleGlzdHNcbiAgaWYobmFtZSA9PSBcIlwiKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBkaXJlY3RvcnkgZXhpc3RzXG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgaWYodGhpcy5jb250ZW50W25hbWVfc2xhc2hdKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBmaWxlIGV4aXN0c1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSxtb2RlLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUVYSVNUXCIsIFwibWtkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogRmlsZSBleGlzdHNcIik7XG4gICAgfVxuICB9XG4gIHZhciBwYXJlbnQgPSAvXiguKilcXC9bXi9dKy8uZXhlYyhuYW1lKTtcbiAgcGFyZW50ID0gKHBhcmVudCAmJiBwYXJlbnRbMV0pIHx8ICcnO1xuICBpZighdGhpcy5leGlzdHMocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKHRoaXMuc2xhc2gobmFtZSkpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICBpZihuLm1hdGNoKHIpKSB7XG4gICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URU1QVFlcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCI6IERpcmVjdG9yeSBub3QgZW1wdHlcIik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF07XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgfVxuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICB2YXIgc2VlbiA9IHt9XG4gIHZhciBhID0gW107XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICB2YXIgbSA9IG4ubWF0Y2gocik7XG4gICAgaWYobSAmJiAhc2VlblttWzFdXSkge3NlZW5bbVsxXV0gPSB0cnVlOyBhLnB1c2gobVsxXSl9XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYobmFtZSA9PSBcIlwiKSAgcmV0dXJuIHRydWU7XG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG9rID0gdGhpcy5jb250ZW50W25hbWVdP3RydWU6ZmFsc2U7XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIHJldHVybiBvaztcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICB2YXIgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gICAgcmV0dXJuIGZpbGU7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlZ2lzdGVyPSBmdW5jdGlvbiAobmFtZSxjb250ZW50KXtcbiAgdmFyIGZpbGU7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lXSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgaWYoY2FtbF9pc19tbF9ieXRlcyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY29udGVudCk7XG4gIGlmKGNhbWxfaXNfbWxfc3RyaW5nKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudCBpbnN0YW5jZW9mIEFycmF5KVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2FycmF5KGNvbnRlbnQpKTtcbiAgZWxzZSBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50LnRvU3RyaW5nKSB7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoY29udGVudC50b1N0cmluZygpKSk7XG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGJ5dGVzKTtcbiAgfVxuICBpZihmaWxlKXtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IGZpbGU7XG4gIH1cbiAgZWxzZSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiByZWdpc3RlcmluZyBmaWxlIHdpdGggaW52YWxpZCBjb250ZW50IHR5cGVcIik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VEZXZpY2VcblxuLy9Qcm92aWRlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogTWxGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19nZXRcbmZ1bmN0aW9uIE1sRmFrZUZpbGUoY29udGVudCl7XG4gIHRoaXMuZGF0YSA9IGNvbnRlbnQ7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5NbEZha2VGaWxlLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHZhciBvbGQgPSB0aGlzLmRhdGE7XG4gIHRoaXMuZGF0YSA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbnwwKTtcbiAgY2FtbF9ibGl0X2J5dGVzKG9sZCwgMCwgdGhpcy5kYXRhLCAwLCBsZW4pO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgodGhpcy5kYXRhKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIHZhciBuZXdfc3RyID0gY2FtbF9jcmVhdGVfYnl0ZXMob2Zmc2V0ICsgbGVuKTtcbiAgICB2YXIgb2xkX2RhdGEgPSB0aGlzLmRhdGE7XG4gICAgdGhpcy5kYXRhID0gbmV3X3N0cjtcbiAgICBjYW1sX2JsaXRfYnl0ZXMob2xkX2RhdGEsIDAsIHRoaXMuZGF0YSwgMCwgY2xlbik7XG4gIH1cbiAgY2FtbF9ibGl0X3N0cmluZyhidWYsIHBvcywgdGhpcy5kYXRhLCBvZmZzZXQsIGxlbik7XG4gIHJldHVybiAwXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBjYW1sX2JsaXRfYnl0ZXModGhpcy5kYXRhLCBvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pO1xuICByZXR1cm4gMFxufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUucmVhZF9vbmUgPSBmdW5jdGlvbihvZmZzZXQpe1xuICByZXR1cm4gY2FtbF9ieXRlc19nZXQodGhpcy5kYXRhLCBvZmZzZXQpO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpe1xuXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sRmFrZUZpbGVcbiIsIi8vUHJvdmlkZXM6IGluaXRpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IHNlcmlhbGl6ZV9uYXQsIGRlc2VyaWFsaXplX25hdCwgY2FtbF9oYXNoX25hdFxuZnVuY3Rpb24gaW5pdGlhbGl6ZV9uYXQoKSB7XG4gIGNhbWxfY3VzdG9tX29wc1tcIl9uYXRcIl0gPVxuICAgIHsgZGVzZXJpYWxpemUgOiBkZXNlcmlhbGl6ZV9uYXQsXG4gICAgICBzZXJpYWxpemUgOiBzZXJpYWxpemVfbmF0LFxuICAgICAgaGFzaCA6IGNhbWxfaGFzaF9uYXRcbiAgICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sTmF0XG5mdW5jdGlvbiBNbE5hdCh4KXtcbiAgdGhpcy5kYXRhID0gbmV3IGdsb2JhbFRoaXMuSW50MzJBcnJheSh4KTtcbiAgLy8gbGVuZ3RoX25hdCBpc24ndCBleHRlcm5hbCwgc28gd2UgaGF2ZSB0byBtYWtlIHRoZSBPYmouc2l6ZVxuICAvLyB3b3JrIG91dCByaWdodC4gVGhlICsyIHRvIGFycmF5IGxlbmd0aCBzZWVtcyB0byB3b3JrLlxuICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGggKyAyXG59XG5cbk1sTmF0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX25hdFwiO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9uYXQoeCkge1xuICB2YXIgbGVuID0gbnVtX2RpZ2l0c19uYXQoeCwgMCwgeC5kYXRhLmxlbmd0aCk7XG4gIHZhciBoID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB4LmRhdGFbaV0pO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG5cbi8vUHJvdmlkZXM6IG5hdF9vZl9hcnJheVxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIG5hdF9vZl9hcnJheShsKXtcbiAgcmV0dXJuIG5ldyBNbE5hdChsKTtcbn1cblxuLy9Qcm92aWRlczogY3JlYXRlX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGNyZWF0ZV9uYXQoc2l6ZSkge1xuICB2YXIgYXJyID0gbmV3IE1sTmF0KHNpemUpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgYXJyLmRhdGFbaV0gPSAtMTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfdG9femVyb19uYXRcbmZ1bmN0aW9uIHNldF90b196ZXJvX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJsaXRfbmF0XG5mdW5jdGlvbiBibGl0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBuYXQyLmRhdGFbb2ZzMitpXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdFxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdChuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdFxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdChuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBudW1fZGlnaXRzX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYobmF0LmRhdGFbb2ZzK2ldICE9IDApIHJldHVybiBpKzE7XG4gIH1cbiAgcmV0dXJuIDE7IC8vIDAgY291bnRzIGFzIDEgZGlnaXRcbn1cblxuLy9Qcm92aWRlczogbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0XG5mdW5jdGlvbiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0LCBvZnMpIHtcbiAgdmFyIGEgPSBuYXQuZGF0YVtvZnNdO1xuICB2YXIgYiA9IDA7XG4gIGlmKGEgJiAweEZGRkYwMDAwKSB7IGIgKz0xNjsgYSA+Pj49MTY7IH1cbiAgaWYoYSAmIDB4RkYwMCkgICAgIHsgYiArPSA4OyBhID4+Pj0gODsgfVxuICBpZihhICYgMHhGMCkgICAgICAgeyBiICs9IDQ7IGEgPj4+PSA0OyB9XG4gIGlmKGEgJiAxMikgICAgICAgICB7IGIgKz0gMjsgYSA+Pj49IDI7IH1cbiAgaWYoYSAmIDIpICAgICAgICAgIHsgYiArPSAxOyBhID4+Pj0gMTsgfVxuICBpZihhICYgMSkgICAgICAgICAgeyBiICs9IDE7IH1cbiAgcmV0dXJuIDMyIC0gYjtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfaW50XG5mdW5jdGlvbiBpc19kaWdpdF9pbnQobmF0LCBvZnMpIHtcbiAgaWYgKG5hdC5kYXRhW29mc10gPj0gMCkgcmV0dXJuIDFcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X3plcm9cbmZ1bmN0aW9uIGlzX2RpZ2l0X3plcm8obmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSA9PSAwKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X29kZFxuZnVuY3Rpb24gaXNfZGlnaXRfb2RkKG5hdCwgb2ZzKSB7XG4gIGlmKG5hdC5kYXRhW29mc10gJiAxKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBpbmNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICh4IHwgMCk7XG4gICAgaWYoeCA9PSAoeCA+Pj4gMCkpIHtcbiAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBhZGRfbmF0XG4vL1JlcXVpcmVzOiBpbmNyX25hdFxuZnVuY3Rpb24gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHhcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmNyX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgY2FycnkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wbGVtZW50X25hdFxuZnVuY3Rpb24gY29tcGxlbWVudF9uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAoLTEgPj4+IDApIC0gKG5hdC5kYXRhW29mcytpXSA+Pj4gMCk7XG4gIH1cbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vUHJvdmlkZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBkZWNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcytpXSA+Pj4wKSAtIGJvcnJvdztcbiAgICBuYXQuZGF0YVtvZnMraV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChib3Jyb3cgPT0gMSkgPyAwIDogMTtcbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogc3ViX25hdFxuLy9SZXF1aXJlczogZGVjcl9uYXRcbmZ1bmN0aW9uIHN1Yl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGJvcnJvdyA9IChjYXJyeV9pbiA9PSAxKSA/IDAgOiAxO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIC0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAtIGJvcnJvdztcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCAoYm9ycm93PT0xKT8wOjEpO1xufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzW29mczNdXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IG11bHRfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBhZGRfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGEgPSAobmF0My5kYXRhW29mczNdID4+PiAwKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4MSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICogKGEgJiAweDAwMDBGRkZGKSArIGNhcnJ5O1xuICAgIHZhciB4MiA9IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSA+Pj4gMTYpO1xuICAgIGNhcnJ5ID0gTWF0aC5mbG9vcih4Mi82NTUzNik7XG4gICAgdmFyIHgzID0geDEgKyAoeDIgJSA2NTUzNikgKiA2NTUzNjtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHgzO1xuICAgIGNhcnJ5ICs9IE1hdGguZmxvb3IoeDMvNDI5NDk2NzI5Nik7XG4gIH1cblxuICBpZihsZW4yIDwgbGVuMSAmJiBjYXJyeSkge1xuICAgIHJldHVybiBhZGRfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBuYXRfb2ZfYXJyYXkoW2NhcnJ5XSksIDAsIDEsIDApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjYXJyeTtcbiAgfVxufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzXG4vLyBsZW4xID49IGxlbjIgKyBsZW4zLlxuLy9Qcm92aWRlczogbXVsdF9uYXRcbi8vUmVxdWlyZXM6IG11bHRfZGlnaXRfbmF0XG5mdW5jdGlvbiBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzLCBsZW4zKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4zOyBpKyspIHtcbiAgICBjYXJyeSArPSBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxK2ksIGxlbjEtaSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMytpKTtcbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIG5hdDEgPSAyICogbmF0MSArIG5hdDIgKiBuYXQyXG4vLyBsZW4xID49IDIgKiBsZW4yXG4vL1Byb3ZpZGVzOiBzcXVhcmVfbmF0XG4vL1JlcXVpcmVzOiBtdWx0X25hdCwgYWRkX25hdFxuZnVuY3Rpb24gc3F1YXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGNhcnJ5ICs9IGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0MSwgb2ZzMSwgbGVuMSwgMCk7XG4gIGNhcnJ5ICs9IG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpO1xuICByZXR1cm4gY2Fycnk7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9sZWZ0X25hdFxuZnVuY3Rpb24gc2hpZnRfbGVmdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbmJpdHMpIHtcbiAgaWYobmJpdHMgPT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMTsgaSsrKSB7XG4gICAgdmFyIGEgPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPDwgbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA+Pj4gKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vLyBBc3N1bWluZyBjID4gYSwgcmV0dXJucyBbcXVvdGllbnQsIHJlbWFpbmRlcl0gb2YgKGE8PDMyICsgYikvY1xuLy9Qcm92aWRlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2hlbHBlcihhLCBiLCBjKSB7XG4gIHZhciB4ID0gYSAqIDY1NTM2ICsgKGI+Pj4xNik7XG4gIHZhciB5ID0gTWF0aC5mbG9vcih4L2MpICogNjU1MzY7XG4gIHZhciB6ID0gKHggJSBjKSAqIDY1NTM2O1xuICB2YXIgdyA9IHogKyAoYiAmIDB4MDAwMEZGRkYpO1xuICByZXR1cm4gW3kgKyBNYXRoLmZsb29yKHcvYyksIHcgJSBjXTtcbn1cblxuLy8gbmF0MVtvZnMxK2xlbl0gPCBuYXQyW29mczJdXG4vL1Byb3ZpZGVzOiBkaXZfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfZGlnaXRfbmF0KG5hdHEsIG9mc3EsIG5hdHIsIG9mc3IsIG5hdDEsIG9mczEsIGxlbiwgbmF0Miwgb2ZzMikge1xuICB2YXIgcmVtID0gKG5hdDEuZGF0YVtvZnMxK2xlbi0xXSA+Pj4wKTtcbiAgLy8gbmF0cVtvZnNxK2xlbi0xXSBpcyBndWFyYW50ZWVkIHRvIGJlIHplcm8gKGR1ZSB0byB0aGUgTVNEIHJlcXVpcmVtZW50KSxcbiAgLy8gYW5kIHNob3VsZCBub3QgYmUgd3JpdHRlbiB0by5cbiAgZm9yKHZhciBpID0gbGVuLTI7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHggPSBkaXZfaGVscGVyKHJlbSwgKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDIuZGF0YVtvZnMyXSA+Pj4gMCkpO1xuICAgIG5hdHEuZGF0YVtvZnNxK2ldID0geFswXTtcbiAgICByZW0gPSB4WzFdO1xuICB9XG4gIG5hdHIuZGF0YVtvZnNyXSA9IHJlbTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIG5hdDFbbmF0MjpdIDo9IG5hdDEgLyBuYXQyXG4vLyBuYXQxWzpuYXQyXSA6PSBuYXQxICUgbmF0MlxuLy8gbGVuMSA+IGxlbjIsIG5hdDJbb2ZzMitsZW4yLTFdID4gbmF0MVtvZnMxK2xlbjEtMV1cbi8vUHJvdmlkZXM6IGRpdl9uYXRcbi8vUmVxdWlyZXM6IGRpdl9kaWdpdF9uYXQsIGRpdl9oZWxwZXIsIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdCwgc2hpZnRfbGVmdF9uYXQsIHNoaWZ0X3JpZ2h0X25hdCwgY3JlYXRlX25hdCwgc2V0X3RvX3plcm9fbmF0LCBtdWx0X2RpZ2l0X25hdCwgc3ViX25hdCwgY29tcGFyZV9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gZGl2X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIGlmKGxlbjIgPT0gMSkge1xuICAgIGRpdl9kaWdpdF9uYXQobmF0MSwgb2ZzMSsxLCBuYXQxLCBvZnMxLCBuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciBzID0gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdDIsIG9mczIrbGVuMi0xKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG5cbiAgdmFyIGQgPSAobmF0Mi5kYXRhW29mczIrbGVuMi0xXSA+Pj4gMCkgKyAxO1xuICB2YXIgYSA9IGNyZWF0ZV9uYXQobGVuMisxKTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IGxlbjI7IGktLSkge1xuICAgIC8vIERlY2VudCBsb3dlciBib3VuZCBvbiBxdW9cbiAgICB2YXIgcXVvID0gZCA9PSA0Mjk0OTY3Mjk2ID8gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA6IGRpdl9oZWxwZXIoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDEuZGF0YVtvZnMxK2ktMV0gPj4+MCksIGQpWzBdO1xuICAgIHNldF90b196ZXJvX25hdChhLCAwLCBsZW4yKzEpO1xuICAgIG11bHRfZGlnaXRfbmF0KGEsIDAsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFtxdW9dKSwgMCk7XG4gICAgc3ViX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMisxLCBhLCAwLCBsZW4yKzEsIDEpO1xuXG4gICAgd2hpbGUgKG5hdDEuZGF0YVtvZnMxK2ldICE9IDAgfHwgY29tcGFyZV9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpID49IDApIHtcbiAgICAgIHF1byA9IHF1byArIDE7XG4gICAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIG5hdDIsIG9mczIsIGxlbjIsIDEpO1xuICAgIH1cblxuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gcXVvO1xuICB9XG5cbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gc2hpZnQgcmVtYWluZGVyXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHJlc3RvcmVcbiAgcmV0dXJuIDA7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9yaWdodF9uYXRcbmZ1bmN0aW9uIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IGxlbjEtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgYSA9IG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPj4+IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPDwgKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfZGlnaXRzX25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA+IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIDE7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA8IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRcbi8vUmVxdWlyZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBhID0gbnVtX2RpZ2l0c19uYXQobmF0MSwgb2ZzMSwgbGVuMSk7XG4gIHZhciBiID0gbnVtX2RpZ2l0c19uYXQobmF0Miwgb2ZzMiwgbGVuMik7XG4gIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgZm9yKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgPiAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApKSByZXR1cm4gMTtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA8IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAtMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRfcmVhbFxuLy9SZXF1aXJlczogY29tcGFyZV9uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0X3JlYWwobmF0MSxuYXQyKXtcbiAgcmV0dXJuIGNvbXBhcmVfbmF0KG5hdDEsMCxuYXQxLmRhdGEubGVuZ3RoLG5hdDIsMCxuYXQyLmRhdGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogbGFuZF9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxhbmRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdICY9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGxvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gfD0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbHhvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGx4b3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIF49IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogc2VyaWFsaXplX25hdFxuZnVuY3Rpb24gc2VyaWFsaXplX25hdCh3cml0ZXIsIG5hdCwgc3ope1xuICB2YXIgbGVuID0gbmF0LmRhdGEubGVuZ3RoO1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgd3JpdGVyLndyaXRlKDMyLCBuYXQuZGF0YVtpXSk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICBzelsxXSA9IGxlbiAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGRlc2VyaWFsaXplX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGRlc2VyaWFsaXplX25hdChyZWFkZXIsIHN6KXtcbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBuYXQgPSBuZXcgTWxOYXQobGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBuYXQuZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICByZXR1cm4gbmF0O1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZVxudmFyIGNhbWxfZ3Jfc3RhdGU7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2dldCgpIHtcbiAgaWYoY2FtbF9ncl9zdGF0ZSkge1xuICAgIHJldHVybiBjYW1sX2dyX3N0YXRlO1xuICB9XG4gIHRocm93IFswLGNhbWxfbmFtZWRfdmFsdWUoXCJHcmFwaGljcy5HcmFwaGljX2ZhaWx1cmVcIiksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJOb3QgaW5pdGlhbGl6ZWRcIildXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZSxjYW1sX2dyX3N0YXRlX2luaXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCkge1xuICBjYW1sX2dyX3N0YXRlPWN0eDtcbiAgY2FtbF9ncl9zdGF0ZV9pbml0KClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9vcGVuX2dyYXBoKGluZm8pe1xuICB2YXIgZyA9IGdsb2JhbFRoaXM7XG4gIHZhciBpbmZvID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoaW5mbyk7XG4gIGZ1bmN0aW9uIGdldChuYW1lKXtcbiAgICB2YXIgcmVzID0gaW5mby5tYXRjaChcIihefCwpICpcIituYW1lK1wiICo9ICooW2EtekEtWjAtOV9dKykgKigsfCQpXCIpO1xuICAgIGlmKHJlcykgcmV0dXJuIHJlc1syXTtcbiAgfVxuICB2YXIgc3BlY3MgPSBbXTtcbiAgaWYoIShpbmZvPT1cIlwiKSkgc3BlY3MucHVzaChpbmZvKTtcbiAgdmFyIHRhcmdldCA9IGdldChcInRhcmdldFwiKTtcbiAgaWYoIXRhcmdldCkgdGFyZ2V0PVwiXCI7XG4gIHZhciBzdGF0dXMgPSBnZXQoXCJzdGF0dXNcIik7XG4gIGlmKCFzdGF0dXMpIHNwZWNzLnB1c2goXCJzdGF0dXM9MVwiKVxuXG4gIHZhciB3ID0gZ2V0KFwid2lkdGhcIik7XG4gIHcgPSB3P3BhcnNlSW50KHcpOjIwMDtcbiAgc3BlY3MucHVzaChcIndpZHRoPVwiK3cpO1xuXG4gIHZhciBoID0gZ2V0KFwiaGVpZ2h0XCIpO1xuICBoID0gaD9wYXJzZUludChoKToyMDA7XG4gIHNwZWNzLnB1c2goXCJoZWlnaHQ9XCIraCk7XG5cbiAgdmFyIHdpbiA9IGcub3BlbihcImFib3V0OmJsYW5rXCIsdGFyZ2V0LHNwZWNzLmpvaW4oXCIsXCIpKTtcbiAgaWYoIXdpbikge2NhbWxfZmFpbHdpdGgoXCJHcmFwaGljcy5vcGVuX2dyYXBoOiBjYW5ub3Qgb3BlbiB0aGUgd2luZG93XCIpfVxuICB2YXIgZG9jID0gd2luLmRvY3VtZW50O1xuICB2YXIgY2FudmFzID0gZG9jLmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGNhbnZhcy53aWR0aCA9IHc7XG4gIGNhbnZhcy5oZWlnaHQgPSBoO1xuICB2YXIgY3R4ID0gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCk7XG4gIGN0eC5zZXRfdGl0bGUgPSBmdW5jdGlvbiAodGl0bGUpIHtcbiAgICBkb2MudGl0bGUgPSB0aXRsZTtcbiAgfTtcbiAgY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KTtcbiAgdmFyIGJvZHkgPSBkb2MuYm9keTtcbiAgYm9keS5zdHlsZS5tYXJnaW4gPSBcIjBweFwiO1xuICBib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2luaXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yLGNhbWxfZ3JfbW92ZXRvLGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aCxjYW1sX2dyX3NldF90ZXh0X3NpemUsY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2luaXQoKXtcbiAgY2FtbF9ncl9tb3ZldG8oY2FtbF9ncl9zdGF0ZS54LGNhbWxfZ3Jfc3RhdGUueSk7XG4gIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyhjYW1sX2dyX3N0YXRlLndpZHRoLGNhbWxfZ3Jfc3RhdGUuaGVpZ2h0KTtcbiAgY2FtbF9ncl9zZXRfbGluZV93aWR0aChjYW1sX2dyX3N0YXRlLmxpbmVfd2lkdGgpO1xuICBjYW1sX2dyX3NldF90ZXh0X3NpemUoY2FtbF9ncl9zdGF0ZS50ZXh0X3NpemUpO1xuICBjYW1sX2dyX3NldF9mb250KGNhbWxfZ3Jfc3RhdGUuZm9udCk7XG4gIGNhbWxfZ3Jfc2V0X2NvbG9yKGNhbWxfZ3Jfc3RhdGUuY29sb3IpO1xuICBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUoY2FtbF9ncl9zdGF0ZS50aXRsZSk7XG4gIC8vY2FtbF9ncl9yZXNpemVfd2luZG93IG1pZ2h0IHJlc2V0IHNvbWUgY2FudmFzJyBwcm9wZXJ0aWVzXG4gIGNhbWxfZ3Jfc3RhdGUuY29udGV4dC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpe1xuICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICBjYW52YXMgOiBjYW52YXMsXG4gICAgeCA6IDAsXG4gICAgeSA6IDAsXG4gICAgd2lkdGggOiB3LFxuICAgIGhlaWdodCA6IGgsXG4gICAgbGluZV93aWR0aCA6IDEsXG4gICAgZm9udCA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJmaXhlZFwiKSxcbiAgICB0ZXh0X3NpemUgOiAyNixcbiAgICBjb2xvciA6IDB4MDAwMDAwLFxuICAgIHRpdGxlIDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKVxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RvY19vZl9zdGF0ZVxuZnVuY3Rpb24gY2FtbF9ncl9kb2Nfb2Zfc3RhdGUoc3RhdGUpIHtcbiAgaWYoc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQpXG4gICAgcmV0dXJuIHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gMDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUobmFtZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50aXRsZSA9IG5hbWU7XG4gIHZhciBqc25hbWUgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYocy5zZXRfdGl0bGUpIHMuc2V0X3RpdGxlKGpzbmFtZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3codyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpXG4gIHMud2lkdGggPSB3O1xuICBzLmhlaWdodCA9IGg7XG4gIHMuY2FudmFzLndpZHRoID0gdztcbiAgcy5jYW52YXMuaGVpZ2h0ID0gaDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xlYXJfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NsZWFyX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSBzLndpZHRoO1xuICBzLmNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgLy8gIHMuY29udGV4dC5zdHJva2VSZWN0ICgwLiwgMC4sIHMud2lkdGgsIHMuaGVpZ2h0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy53aWR0aDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5oZWlnaHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9jb2xvcihjb2xvcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgZnVuY3Rpb24gY29udmVydChudW1iZXIpIHtcbiAgICB2YXIgc3RyID0gJycgKyBudW1iZXIudG9TdHJpbmcoMTYpO1xuICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgMikgc3RyID0gJzAnICsgc3RyO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgdmFyXG4gIHIgPSAoY29sb3IgPj4gMTYpICYgMHhmZixcbiAgZyA9IChjb2xvciA+PiA4KSAgJiAweGZmLFxuICBiID0gKGNvbG9yID4+IDApICAmIDB4ZmY7XG4gIHMuY29sb3I9Y29sb3I7XG4gIHZhciBjX3N0ciA9ICcjJyArIGNvbnZlcnQocikgKyBjb252ZXJ0KGcpICsgY29udmVydChiKTtcbiAgcy5jb250ZXh0LmZpbGxTdHlsZSA9ICAgY19zdHI7XG4gIHMuY29udGV4dC5zdHJva2VTdHlsZSA9IGNfc3RyO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcGxvdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcGxvdCh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgdmFyIGNvbG9yID0gcy5jb2xvcjtcbiAgZFswXSA9IChjb2xvciA+PiAxNikgJiAweGZmOyAvL3JcbiAgZFsxXSA9IChjb2xvciA+PiA4KSAgJiAweGZmLCAvL2dcbiAgZFsyXSA9IChjb2xvciA+PiAwKSAgJiAweGZmOyAvL2JcbiAgZFszXSA9IDB4RkY7IC8vYVxuICBzLng9eDtcbiAgcy55PXk7XG4gIHMuY29udGV4dC5wdXRJbWFnZURhdGEoaW0seCxzLmhlaWdodCAtIHkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9wb2ludF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcG9pbnRfY29sb3IoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0geSwxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHJldHVybiAoZFswXSA8PCAxNikgKyAoZFsxXSA8PCA4KSArIGRbMl07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21vdmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbW92ZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnhcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy55XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2xpbmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbGluZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMuY29udGV4dC5saW5lVG8oeCxzLmhlaWdodCAtIHkpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5zdHJva2VSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2FyY19hdXgoY3R4LGN4LGN5LHJ5LHJ4LGExLGEyKXtcbiAgd2hpbGUoYTE+YTIpIGEyKz0zNjA7XG4gIGExIC89IDE4MDtcbiAgYTIgLz0gMTgwO1xuICB2YXIgcm90ID0gMCx4UG9zLHlQb3MseFBvc19wcmV2LHlQb3NfcHJldjtcbiAgdmFyIHNwYWNlID0gMjtcbiAgdmFyIG51bSA9ICgoKGEyIC0gYTEpICogTWF0aC5QSSAqICgocngrcnkpLzIpKSAvIHNwYWNlKSB8IDA7XG4gIHZhciBkZWx0YSA9IChhMiAtIGExKSAqIE1hdGguUEkgLyBudW07XG4gIHZhciBpID0gYTEgKiBNYXRoLlBJO1xuICBmb3IgKHZhciBqPTA7ajw9bnVtO2orKyl7XG4gICAgeFBvcyA9IGN4IC0gKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB4UG9zID0geFBvcy50b0ZpeGVkKDIpO1xuICAgIHlQb3MgPSBjeSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeVBvcyA9IHlQb3MudG9GaXhlZCgyKTtcbiAgICBpZiAoaj09MCkge1xuICAgICAgY3R4Lm1vdmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9IGVsc2UgaWYgKHhQb3NfcHJldiE9eFBvcyB8fCB5UG9zX3ByZXYhPXlQb3Mpe1xuICAgICAgY3R4LmxpbmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9XG4gICAgeFBvc19wcmV2PXhQb3M7XG4gICAgeVBvc19wcmV2PXlQb3M7XG4gICAgaS09IGRlbHRhOy8vY2N3XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9saW5lX3dpZHRoKHcpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMubGluZV93aWR0aCA9IHc7XG4gIHMuY29udGV4dC5saW5lV2lkdGggPSB3XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5maWxsUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcG9seVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9wb2x5KGFyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIGZvcih2YXIgaSA9IDI7IGkgPCBhci5sZW5ndGg7IGkrKylcbiAgICBzLmNvbnRleHQubGluZVRvKGFyW2ldWzFdLHMuaGVpZ2h0IC0gYXJbaV1bMl0pO1xuICBzLmNvbnRleHQubGluZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cihzdHIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBtID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KHN0cik7XG4gIHZhciBkeCA9IG0ud2lkdGg7XG4gIHMuY29udGV4dC5maWxsVGV4dChzdHIscy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy54ICs9IGR4IHwgMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfY2hhcihjKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyaW5nKHN0cil7XG4gIGNhbWxfZ3JfZHJhd19zdHIoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3RyKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2ZvbnQoZil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5mb250ID0gZjtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShzaXplKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRleHRfc2l6ZSA9IHNpemU7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfdGV4dF9zaXplKHR4dCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIHcgPSBzLmNvbnRleHQubWVhc3VyZVRleHQoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcodHh0KSkud2lkdGg7XG4gIHJldHVybiBbMCx3LHMudGV4dF9zaXplXTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21ha2VfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21ha2VfaW1hZ2UoYXJyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaCA9IGFyci5sZW5ndGggLSAxIDtcbiAgdmFyIHcgPSBhcnJbMV0ubGVuZ3RoIC0gMTtcbiAgdmFyIGltID0gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh3LGgpO1xuICBmb3IodmFyIGk9MDtpPGg7aSsrKXtcbiAgICBmb3IodmFyIGo9MDtqPHc7aisrKXtcbiAgICAgIHZhciBjID0gYXJyW2krMV1baisxXTtcbiAgICAgIHZhciBvID0gaSoodyo0KSArIChqICogNCk7XG4gICAgICBpZihjID09IC0xKSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gYyA+PiAxNiAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gYyA+PiAgOCAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gYyA+PiAgMCAmIDBYZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMHhmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGltXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2R1bXBfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2R1bXBfaW1hZ2UoaW0pe1xuICB2YXIgZGF0YSA9IFswXVxuICBmb3IodmFyIGk9MDsgaTxpbS5oZWlnaHQ7aSsrKXtcbiAgICBkYXRhW2krMV0gPSBbMF1cbiAgICBmb3IodmFyIGo9MDsgajxpbS53aWR0aDtqKyspe1xuICAgICAgdmFyIG8gPSBpKihpbS53aWR0aCo0KSArIChqICogNCksXG4gICAgICAgICAgciA9IGltLmRhdGFbbyswXSxcbiAgICAgICAgICBnID0gaW0uZGF0YVtvKzFdLFxuICAgICAgICAgIGIgPSBpbS5kYXRhW28rMl07XG4gICAgICBkYXRhW2krMV1baisxXSA9IChyIDw8IDE2KSArIChnIDw8IDgpICsgYlxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgaWYoIWltLmltYWdlKSB7XG4gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gICAgY2FudmFzLmdldENvbnRleHQoXCIyZFwiKS5wdXRJbWFnZURhdGEoaW0sMCwwKTtcbiAgICB2YXIgaW1hZ2UgPSBuZXcgZ2xvYmFsVGhpcy5JbWFnZSgpO1xuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICAgICAgaW0uaW1hZ2UgPSBpbWFnZTtcbiAgICB9XG4gICAgaW1hZ2Uuc3JjID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcbiAgfSBlbHNlIHtcbiAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltLmltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3JlYXRlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jcmVhdGVfaW1hZ2UoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh4LHkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9ibGl0X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9ibGl0X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltMiA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHksaW0ud2lkdGgsaW0uaGVpZ2h0KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbTIuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgIGltLmRhdGFbaV0gPSBpbTIuZGF0YVtpXTtcbiAgICBpbS5kYXRhW2krMV0gPSBpbTIuZGF0YVtpKzFdO1xuICAgIGltLmRhdGFbaSsyXSA9IGltMi5kYXRhW2krMl07XG4gICAgaW0uZGF0YVtpKzNdID0gaW0yLmRhdGFbaSszXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9faGFuZGxlclxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19oYW5kbGVyKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19zaWduYWwoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2FpdF9ldmVudFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93YWl0X2V2ZW50KF9ldmwpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93YWl0X2V2ZW50IG5vdCBJbXBsZW1lbnRlZDogdXNlIEdyYXBoaWNzX2pzIGluc3RlYWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3luY2hyb25pemVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3luY2hyb25pemUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9zeW5jaHJvbml6ZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3JlbWVtYmVyX21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVtZW1iZXJfbW9kZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3JlbWVtYmVyX21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kaXNwbGF5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfZGlzcGxheV9tb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9kaXNwbGF5X21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dpbmRvd19pZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93aW5kb3dfaWQoYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93aW5kb3dfaWQgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fc3Vid2luZG93KGEsYixjLGQpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3coYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9jb25zdGFudHNcbnZhciBjYW1sX21hcnNoYWxfY29uc3RhbnRzID0ge1xuICBQUkVGSVhfU01BTExfQkxPQ0s6ICAgICAgICAgMHg4MCxcbiAgUFJFRklYX1NNQUxMX0lOVDogICAgICAgICAgIDB4NDAsXG4gIFBSRUZJWF9TTUFMTF9TVFJJTkc6ICAgICAgICAweDIwLFxuICBDT0RFX0lOVDg6ICAgICAgICAgICAgICAgICAgMHgwMCxcbiAgQ09ERV9JTlQxNjogICAgICAgICAgICAgICAgIDB4MDEsXG4gIENPREVfSU5UMzI6ICAgICAgICAgICAgICAgICAweDAyLFxuICBDT0RFX0lOVDY0OiAgICAgICAgICAgICAgICAgMHgwMyxcbiAgQ09ERV9TSEFSRUQ4OiAgICAgICAgICAgICAgIDB4MDQsXG4gIENPREVfU0hBUkVEMTY6ICAgICAgICAgICAgICAweDA1LFxuICBDT0RFX1NIQVJFRDMyOiAgICAgICAgICAgICAgMHgwNixcbiAgQ09ERV9CTE9DSzMyOiAgICAgICAgICAgICAgIDB4MDgsXG4gIENPREVfQkxPQ0s2NDogICAgICAgICAgICAgICAweDEzLFxuICBDT0RFX1NUUklORzg6ICAgICAgICAgICAgICAgMHgwOSxcbiAgQ09ERV9TVFJJTkczMjogICAgICAgICAgICAgIDB4MEEsXG4gIENPREVfRE9VQkxFX0JJRzogICAgICAgICAgICAweDBCLFxuICBDT0RFX0RPVUJMRV9MSVRUTEU6ICAgICAgICAgMHgwQyxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0JJRzogICAgIDB4MEQsXG4gIENPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6ICAweDBFLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzogICAgMHgwRixcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6IDB4MDcsXG4gIENPREVfQ09ERVBPSU5URVI6ICAgICAgICAgICAweDEwLFxuICBDT0RFX0lORklYUE9JTlRFUjogICAgICAgICAgMHgxMSxcbiAgQ09ERV9DVVNUT006ICAgICAgICAgICAgICAgIDB4MTIsXG4gIENPREVfQ1VTVE9NX0xFTjogICAgICAgICAgICAweDE4LFxuICBDT0RFX0NVU1RPTV9GSVhFRDogICAgICAgICAgMHgxOVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBNbFN0cmluZ1JlYWRlciAocywgaSkgeyB0aGlzLnMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpOyB0aGlzLmkgPSBpOyB9XG5NbFN0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCA+PiAxNikgfCBzLmNoYXJDb2RlQXQoaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5zLnN1YnN0cmluZyhpLCBpICsgbGVuKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogQmlnU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheSwgY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gQmlnU3RyaW5nUmVhZGVyIChicywgaSkgeyB0aGlzLnMgPSBiczsgdGhpcy5pID0gaTsgfVxuQmlnU3RyaW5nUmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbWxfYmFfZ2V0XzEodGhpcy5zLHRoaXMuaSsrKTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbWxfYmFfZ2V0XzEodGhpcy5zLHRoaXMuaSsrKSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgOCkgfCBjYW1sX2JhX2dldF8xKHMsaSArIDEpXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpIDw8IDI0ID4+IDE2KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSk7XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpICAgICAgICAgKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgICA8PCAyNCkgfCAoY2FtbF9iYV9nZXRfMShzLGkrMSkgPDwgMTYpIHxcbiAgICAgIChjYW1sX2JhX2dldF8xKHMsaSsyKSA8PCA4KSAgfCBjYW1sX2JhX2dldF8xKHMsaSszKTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdmFyIGFyciA9IG5ldyBBcnJheShsZW4pXG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKXtcbiAgICAgIGFycltqXSA9IGNhbWxfYmFfZ2V0XzEodGhpcy5zLCBpK2opO1xuICAgIH1cbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICB9XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoY2FtbF9pbnQ2NF9vZl9ieXRlcyAoYSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKHMsIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocyksIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gIHNpemVbMF0gPSA4O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyAodCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tYXJzaGFsKHdyaXRlciwgdiwgc2l6ZXMpIHtcbiAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzICh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSAoOCwgYltpXSk7XG4gIHNpemVzWzBdID0gODsgc2l6ZXNbMV0gPSA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX3VubWFyc2hhbFxuZnVuY3Rpb24gY2FtbF9pbnQzMl91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1ICgpKSB7XG4gIGNhc2UgMTpcbiAgICBzaXplWzBdID0gNDtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gIGNhc2UgMjpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IG5hdGl2ZSBpbnRlZ2VyIHZhbHVlIHRvbyBsYXJnZVwiKTtcbiAgZGVmYXVsdDogY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG5hdGl2ZSBpbnRlZ2VyXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF91bm1hcnNoYWwsIGNhbWxfaW50NjRfbWFyc2hhbCwgY2FtbF9pbnQ2NF9jb21wYXJlLCBjYW1sX2ludDY0X2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsLCBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2VyaWFsaXplLCBjYW1sX2JhX2Rlc2VyaWFsaXplLCBjYW1sX2JhX2NvbXBhcmUsIGNhbWxfYmFfaGFzaFxudmFyIGNhbWxfY3VzdG9tX29wcyA9XG4gICAge1wiX2pcIjoge1xuICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDY0X3VubWFyc2hhbCxcbiAgICAgIHNlcmlhbGl6ZSAgOiBjYW1sX2ludDY0X21hcnNoYWwsXG4gICAgICBmaXhlZF9sZW5ndGggOiA4LFxuICAgICAgY29tcGFyZSA6IGNhbWxfaW50NjRfY29tcGFyZSxcbiAgICAgIGhhc2ggOiBjYW1sX2ludDY0X2hhc2hcbiAgICB9LFxuICAgICBcIl9pXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50MzJfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX25cIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycmF5XCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnJheVwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9LFxuICAgICBcIl9iaWdhcnIwMlwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyMDJcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfVxuICAgIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcblxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcykge1xuICB2YXIgX21hZ2ljID0gcmVhZGVyLnJlYWQzMnUgKClcbiAgdmFyIF9ibG9ja19sZW4gPSByZWFkZXIucmVhZDMydSAoKTtcbiAgdmFyIG51bV9vYmplY3RzID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gIHZhciBfc2l6ZV8zMiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICB2YXIgX3NpemVfNjQgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gKG51bV9vYmplY3RzID4gMCk/W106bnVsbDtcbiAgdmFyIG9ial9jb3VudGVyID0gMDtcbiAgZnVuY3Rpb24gaW50ZXJuX3JlYyAoKSB7XG4gICAgdmFyIGNvZGUgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgIGlmIChjb2RlID49IDB4NDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovKSB7XG4gICAgICBpZiAoY29kZSA+PSAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovKSB7XG4gICAgICAgIHZhciB0YWcgPSBjb2RlICYgMHhGO1xuICAgICAgICB2YXIgc2l6ZSA9IChjb2RlID4+IDQpICYgMHg3O1xuICAgICAgICB2YXIgdiA9IFt0YWddO1xuICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZVxuICAgICAgICByZXR1cm4gKGNvZGUgJiAweDNGKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNvZGUgPj0gMHgyMC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcgKi8pIHtcbiAgICAgICAgdmFyIGxlbiA9IGNvZGUgJiAweDFGO1xuICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoKGNvZGUpIHtcbiAgICAgICAgY2FzZSAweDAwOiAvL2NzdC5DT0RFX0lOVDg6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkOHMgKCk7XG4gICAgICAgIGNhc2UgMHgwMTogLy9jc3QuQ09ERV9JTlQxNjpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQxNnMgKCk7XG4gICAgICAgIGNhc2UgMHgwMjogLy9jc3QuQ09ERV9JTlQzMjpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gICAgICAgIGNhc2UgMHgwMzogLy9jc3QuQ09ERV9JTlQ2NDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGludGVnZXIgdG9vIGxhcmdlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MDQ6IC8vY3N0LkNPREVfU0hBUkVEODpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlciAtIG9mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNTogLy9jc3QuQ09ERV9TSEFSRUQxNjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQxNnUgKCk7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIgLSBvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDY6IC8vY3N0LkNPREVfU0hBUkVEMzI6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyIC0gb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA4OiAvL2NzdC5DT0RFX0JMT0NLMzI6XG4gICAgICAgICAgdmFyIGhlYWRlciA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgIHZhciB0YWcgPSBoZWFkZXIgJiAweEZGO1xuICAgICAgICAgIHZhciBzaXplID0gaGVhZGVyID4+IDEwO1xuICAgICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIHY7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgxMzogLy9jc3QuQ09ERV9CTE9DSzY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGRhdGEgYmxvY2sgdG9vIGxhcmdlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MDk6IC8vY3N0LkNPREVfU1RSSU5HODpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEE6IC8vY3N0LkNPREVfU1RSSU5HMzI6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQzogLy9jc3QuQ09ERV9ET1VCTEVfTElUVExFOlxuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgODtpKyspIHRbNyAtIGldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBCOiAvL2NzdC5DT0RFX0RPVUJMRV9CSUc6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFtpXSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgdmFyIHYgPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRTogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbNyAtIGpdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBEOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MDc6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbNyAtIGpdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBGOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2IFtpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEwOiAvL2NzdC5DT0RFX0NPREVQT0lOVEVSOlxuICAgICAgICBjYXNlIDB4MTE6IC8vY3N0LkNPREVfSU5GSVhQT0lOVEVSOlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGNvZGUgcG9pbnRlclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDEyOiAvL2NzdC5DT0RFX0NVU1RPTTpcbiAgICAgICAgY2FzZSAweDE4OiAvL2NzdC5DT0RFX0NVU1RPTV9MRU46XG4gICAgICAgIGNhc2UgMHgxOTogLy9jc3QuQ09ERV9DVVNUT01fRklYRUQ6XG4gICAgICAgICAgdmFyIGMsIHMgPSBcIlwiO1xuICAgICAgICAgIHdoaWxlICgoYyA9IHJlYWRlci5yZWFkOHUgKCkpICE9IDApIHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tzXTtcbiAgICAgICAgICB2YXIgZXhwZWN0ZWRfc2l6ZTtcbiAgICAgICAgICBpZighb3BzKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB1bmtub3duIGN1c3RvbSBibG9jayBpZGVudGlmaWVyXCIpO1xuICAgICAgICAgIHN3aXRjaChjb2RlKXtcbiAgICAgICAgICBjYXNlIDB4MTI6IC8vIGNzdC5DT0RFX0NVU1RPTSAoZGVwcmVjYXRlZClcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxOTogLy8gY3N0LkNPREVfQ1VTVE9NX0ZJWEVEXG4gICAgICAgICAgICBpZighb3BzLmZpeGVkX2xlbmd0aClcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBleHBlY3RlZCBhIGZpeGVkLXNpemUgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IG9wcy5maXhlZF9sZW5ndGg7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MTg6IC8vIGNzdC5DT0RFX0NVU1RPTV9MRU5cbiAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICAgIC8vIFNraXAgc2l6ZTY0XG4gICAgICAgICAgICByZWFkZXIucmVhZDMycygpOyByZWFkZXIucmVhZDMycygpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBvbGRfcG9zID0gcmVhZGVyLmk7XG4gICAgICAgICAgdmFyIHNpemUgPSBbMF07XG4gICAgICAgICAgdmFyIHYgPSBvcHMuZGVzZXJpYWxpemUocmVhZGVyLCBzaXplKTtcbiAgICAgICAgICBpZihleHBlY3RlZF9zaXplICE9IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBpZihleHBlY3RlZF9zaXplICE9IHNpemVbMF0pXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW5jb3JyZWN0IGxlbmd0aCBvZiBzZXJpYWxpemVkIGN1c3RvbSBibG9ja1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGlsbC1mb3JtZWQgbWVzc2FnZVwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB2YXIgcmVzID0gaW50ZXJuX3JlYyAoKTtcbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgc2l6ZSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2ID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIGQgPSB2Lmxlbmd0aDtcbiAgICBpZiAoZCA8IHNpemUpIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgdltkXSA9IGludGVybl9yZWMgKCk7XG4gIH1cbiAgaWYgKHR5cGVvZiBvZnMhPVwibnVtYmVyXCIpIG9mc1swXSA9IHJlYWRlci5pO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAocywgb2ZzKSB7XG4gIGZ1bmN0aW9uIGdldDMyKHMsaSkge1xuICAgIHJldHVybiAoY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkpIDw8IDI0KSB8XG4gICAgICAoY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkgKyAxKSA8PCAxNikgfFxuICAgICAgKGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgMikgPDwgOCkgfFxuICAgICAgY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkgKyAzKTtcbiAgfVxuICBpZiAoZ2V0MzIocywgb2ZzKSAhPSAoMHg4NDk1QTZCRXwwKSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiTWFyc2hhbC5kYXRhX3NpemU6IGJhZCBvYmplY3RcIik7XG4gIHJldHVybiAoZ2V0MzIocywgb2ZzICsgNCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBNbE9iamVjdFRhYmxlXG52YXIgTWxPYmplY3RUYWJsZTtcbmlmICh0eXBlb2YgZ2xvYmFsVGhpcy5XZWFrTWFwID09PSAndW5kZWZpbmVkJykge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgLyogcG9seWZpbGwgKHVzaW5nIGxpbmVhciBzZWFyY2gpICovXG4gICAgZnVuY3Rpb24gTmFpdmVMb29rdXAob2JqcykgeyB0aGlzLm9ianMgPSBvYmpzOyB9XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vYmpzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLm9ianNbaV0gPT09IHYpIHJldHVybiBpO1xuICAgICAgfVxuICAgIH07XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKCkge1xuICAgICAgLy8gRG8gbm90aGluZyBoZXJlLiBbTWxPYmplY3RUYWJsZS5zdG9yZV0gd2lsbCBwdXNoIHRvIFt0aGlzLm9ianNdIGRpcmVjdGx5LlxuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICAgIHRoaXMub2JqcyA9IFtdOyB0aGlzLmxvb2t1cCA9IG5ldyBOYWl2ZUxvb2t1cCh0aGlzLm9ianMpO1xuICAgIH07XG4gIH0oKTtcbn1cbmVsc2Uge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgZ2xvYmFsVGhpcy5XZWFrTWFwKCk7XG4gIH07XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnN0b3JlID0gZnVuY3Rpb24odikge1xuICB0aGlzLmxvb2t1cC5zZXQodiwgdGhpcy5vYmpzLmxlbmd0aCk7XG4gIHRoaXMub2Jqcy5wdXNoKHYpO1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5yZWNhbGwgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBpID0gdGhpcy5sb29rdXAuZ2V0KHYpO1xuICByZXR1cm4gKGkgPT09IHVuZGVmaW5lZClcbiAgICA/IHVuZGVmaW5lZCA6IHRoaXMub2Jqcy5sZW5ndGggLSBpOyAgIC8qIGluZGV4IGlzIHJlbGF0aXZlICovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGVnYWN5X2N1c3RvbV9jb2RlXG4vL1ZlcnNpb246ID49IDQuMDhcbnZhciBjYW1sX2xlZ2FjeV9jdXN0b21fY29kZSA9IGZhbHNlXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGVnYWN5X2N1c3RvbV9jb2RlXG4vL1ZlcnNpb246IDwgNC4wOFxudmFyIGNhbWxfbGVnYWN5X2N1c3RvbV9jb2RlID0gdHJ1ZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogTWxPYmplY3RUYWJsZSwgY2FtbF9saXN0X3RvX2pzX2FycmF5LCBjYW1sX2xlZ2FjeV9jdXN0b21fY29kZSwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xudmFyIGNhbWxfb3V0cHV0X3ZhbCA9IGZ1bmN0aW9uICgpe1xuICBmdW5jdGlvbiBXcml0ZXIgKCkgeyB0aGlzLmNodW5rID0gW107IH1cbiAgV3JpdGVyLnByb3RvdHlwZSA9IHtcbiAgICBjaHVua19pZHg6MjAsIGJsb2NrX2xlbjowLCBvYmpfY291bnRlcjowLCBzaXplXzMyOjAsIHNpemVfNjQ6MCxcbiAgICB3cml0ZTpmdW5jdGlvbiAoc2l6ZSwgdmFsdWUpIHtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2F0OmZ1bmN0aW9uIChwb3MsIHNpemUsIHZhbHVlKSB7XG4gICAgICB2YXIgcG9zID0gcG9zO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbcG9zKytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2NvZGU6ZnVuY3Rpb24gKHNpemUsIGNvZGUsIHZhbHVlKSB7XG4gICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gY29kZTtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX3NoYXJlZDpmdW5jdGlvbiAob2Zmc2V0KSB7XG4gICAgICBpZiAob2Zmc2V0IDwgKDEgPDwgOCkpIHRoaXMud3JpdGVfY29kZSg4LCAweDA0IC8qY3N0LkNPREVfU0hBUkVEOCovLCBvZmZzZXQpO1xuICAgICAgZWxzZSBpZiAob2Zmc2V0IDwgKDEgPDwgMTYpKSB0aGlzLndyaXRlX2NvZGUoMTYsIDB4MDUgLypjc3QuQ09ERV9TSEFSRUQxNiovLCBvZmZzZXQpO1xuICAgICAgZWxzZSB0aGlzLndyaXRlX2NvZGUoMzIsIDB4MDYgLypjc3QuQ09ERV9TSEFSRUQzMiovLCBvZmZzZXQpO1xuICAgIH0sXG4gICAgcG9zOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuY2h1bmtfaWR4IH0sXG4gICAgZmluYWxpemU6ZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5ibG9ja19sZW4gPSB0aGlzLmNodW5rX2lkeCAtIDIwO1xuICAgICAgdGhpcy5jaHVua19pZHggPSAwO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIDB4ODQ5NUE2QkUpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuYmxvY2tfbGVuKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLm9ial9jb3VudGVyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfMzIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV82NCk7XG4gICAgICByZXR1cm4gdGhpcy5jaHVuaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh2LCBmbGFncykge1xuICAgIGZsYWdzID0gY2FtbF9saXN0X3RvX2pzX2FycmF5KGZsYWdzKTtcblxuICAgIHZhciBub19zaGFyaW5nID0gKGZsYWdzLmluZGV4T2YoMCAvKk1hcnNoYWwuTm9fc2hhcmluZyovKSAhPT0gLTEpLFxuICAgICAgICBjbG9zdXJlcyA9ICAoZmxhZ3MuaW5kZXhPZigxIC8qTWFyc2hhbC5DbG9zdXJlcyovKSAhPT0gLTEpO1xuICAgIC8qIE1hcnNoYWwuQ29tcGF0XzMyIGlzIHJlZHVuZGFudCBzaW5jZSBpbnRlZ2VycyBhcmUgMzItYml0IGFueXdheSAqL1xuXG4gICAgaWYgKGNsb3N1cmVzKVxuICAgICAgZ2xvYmFsVGhpcy5jb25zb2xlLndhcm4oXCJpbiBjYW1sX291dHB1dF92YWw6IGZsYWcgTWFyc2hhbC5DbG9zdXJlcyBpcyBub3Qgc3VwcG9ydGVkLlwiKTtcblxuICAgIHZhciB3cml0ZXIgPSBuZXcgV3JpdGVyICgpO1xuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gbm9fc2hhcmluZyA/IG51bGwgOiBuZXcgTWxPYmplY3RUYWJsZSgpO1xuXG4gICAgZnVuY3Rpb24gbWVtbyh2KSB7XG4gICAgICBpZiAobm9fc2hhcmluZykgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGV4aXN0aW5nX29mZnNldCA9IGludGVybl9vYmpfdGFibGUucmVjYWxsKHYpO1xuICAgICAgaWYgKGV4aXN0aW5nX29mZnNldCkgeyB3cml0ZXIud3JpdGVfc2hhcmVkKGV4aXN0aW5nX29mZnNldCk7IHJldHVybiB0cnVlOyB9XG4gICAgICBlbHNlIHsgaW50ZXJuX29ial90YWJsZS5zdG9yZSh2KTsgcmV0dXJuIGZhbHNlOyB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZXJuX3JlYyAodikge1xuICAgICAgaWYgKHYuY2FtbF9jdXN0b20pIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIG5hbWUgPSB2LmNhbWxfY3VzdG9tO1xuICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW25hbWVdO1xuICAgICAgICB2YXIgc3pfMzJfNjQgPSBbMCwwXTtcbiAgICAgICAgaWYoIW9wcy5zZXJpYWxpemUpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQ3VzdG9tKVwiKTtcbiAgICAgICAgaWYoY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGUpIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTIgLypjc3QuQ09ERV9DVVNUT00qLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICB9IGVsc2UgaWYob3BzLmZpeGVkX2xlbmd0aCA9PSB1bmRlZmluZWQpe1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxOCAvKmNzdC5DT0RFX0NVU1RPTV9MRU4qLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgaGVhZGVyX3BvcyA9IHdyaXRlci5wb3MgKCk7XG4gICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcywgMzIsIHN6XzMyXzY0WzBdKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDQsIDMyLCAwKTsgLy8gemVyb1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgOCwgMzIsIHN6XzMyXzY0WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTkgLypjc3QuQ09ERV9DVVNUT01fRklYRUQqLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHdyaXRlci5wb3MoKTtcbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICAgIGlmIChvcHMuZml4ZWRfbGVuZ3RoICE9IHdyaXRlci5wb3MoKSAtIG9sZF9wb3MpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBpbmNvcnJlY3QgZml4ZWQgc2l6ZXMgc3BlY2lmaWVkIGJ5IFwiICsgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMiArICgoc3pfMzJfNjRbMF0gKyAzKSA+PiAyKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMiArICgoc3pfMzJfNjRbMV0gKyA3KSA+PiAzKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgICBpZiAodlswXSA9PSAyNTEpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQWJzdHJhY3QpXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEgJiYgbWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICBpZiAodlswXSA8IDE2ICYmIHYubGVuZ3RoIC0gMSA8IDgpXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovICsgdlswXSArICgodi5sZW5ndGggLSAxKTw8NCkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDggLypjc3QuQ09ERV9CTE9DSzMyKi8sICgodi5sZW5ndGgtMSkgPDwgMTApIHwgdlswXSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IHYubGVuZ3RoO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSB2Lmxlbmd0aDtcbiAgICAgICAgaWYgKHYubGVuZ3RoID4gMSkgc3RhY2sucHVzaCAodiwgMSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgICAgaWYoIShjYW1sX2lzX21sX2J5dGVzKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIikpKSkge1xuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IFtCeXRlcy50XSBjYW5ub3Qgc2FmZWx5IGJlIG1hcnNoYWxlZCB3aXRoIFstLWVuYWJsZSB1c2UtanMtc3RyaW5nXVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9ieXRlc19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICg4LCAweDA5Lypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoMzIsIDB4MEEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgbGVuO2krKylcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2ICE9ICh2fDApKXtcbiAgICAgICAgICB2YXIgdHlwZV9vZl92ID0gdHlwZW9mIHY7XG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBJZiBhIGZsb2F0IGhhcHBlbnMgdG8gYmUgYW4gaW50ZWdlciBpdCBpcyBzZXJpYWxpemVkIGFzIGFuIGludGVnZXJcbiAgICAgICAgICAvLyAoSnNfb2Zfb2NhbWwgY2Fubm90IHRlbGwgd2hldGhlciB0aGUgdHlwZSBvZiBhbiBpbnRlZ2VyIG51bWJlciBpc1xuICAgICAgICAgIC8vIGZsb2F0IG9yIGludGVnZXIuKSBUaGlzIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBjcmFzaGVzIHdoZW5cbiAgICAgICAgICAvLyB1bm1hcnNoYWxsaW5nIHVzaW5nIHRoZSBzdGFuZGFyZCBydW50aW1lLiBJdCBzZWVtcyBiZXR0ZXIgdG9cbiAgICAgICAgICAvLyBzeXN0ZW1hdGljYWxseSBmYWlsIG9uIG1hcnNoYWxsaW5nLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gICAgICAgICAgaWYodHlwZV9vZl92ICE9IFwibnVtYmVyXCIpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKFwiK3R5cGVfb2ZfditcIilcIik7XG4gICAgICAgICAgLy8gICAgICAgICAgdmFyIHQgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh2KSk7XG4gICAgICAgICAgLy8gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDBCIC8qY3N0LkNPREVfRE9VQkxFX0JJRyovKTtcbiAgICAgICAgICAvLyAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpPDg7IGkrKyl7d3JpdGVyLndyaXRlKDgsdFtpXSl9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodiA+PSAwICYmIHYgPCAweDQwKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAwWDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLyArIHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh2ID49IC0oMSA8PCA3KSAmJiB2IDwgKDEgPDwgNykpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSg4LCAweDAwIC8qY3N0LkNPREVfSU5UOCovLCB2KTtcbiAgICAgICAgICBlbHNlIGlmICh2ID49IC0oMSA8PCAxNSkgJiYgdiA8ICgxIDw8IDE1KSlcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDE2LCAweDAxIC8qY3N0LkNPREVfSU5UMTYqLywgdik7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDIgLypjc3QuQ09ERV9JTlQzMiovLCB2KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBleHRlcm5fcmVjICh2KTtcbiAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGkgPSBzdGFjay5wb3AgKCk7XG4gICAgICB2YXIgdiA9IHN0YWNrLnBvcCAoKTtcbiAgICAgIGlmIChpICsgMSA8IHYubGVuZ3RoKSBzdGFjay5wdXNoICh2LCBpICsgMSk7XG4gICAgICBleHRlcm5fcmVjICh2W2ldKTtcbiAgICB9XG4gICAgaWYgKGludGVybl9vYmpfdGFibGUpIHdyaXRlci5vYmpfY291bnRlciA9IGludGVybl9vYmpfdGFibGUub2Jqcy5sZW5ndGg7XG4gICAgd3JpdGVyLmZpbmFsaXplKCk7XG4gICAgcmV0dXJuIHdyaXRlci5jaHVuaztcbiAgfVxufSAoKTtcblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyAodiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2JsaXRfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciAocywgb2ZzLCBsZW4sIHYsIGZsYWdzKSB7XG4gIHZhciB0ID0gY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncyk7XG4gIGlmICh0Lmxlbmd0aCA+IGxlbikgY2FtbF9mYWlsd2l0aCAoXCJNYXJzaGFsLnRvX2J1ZmZlcjogYnVmZmVyIG92ZXJmbG93XCIpO1xuICBjYW1sX2JsaXRfYnl0ZXModCwgMCwgcywgb2ZzLCB0Lmxlbmd0aCk7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBJb1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jbG9zZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9zeXNfY2xvc2UoZmQpIHtcbiAgZGVsZXRlIGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2ZkXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RkX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX3N0ZF9vdXRwdXQoY2hhbmlkLHMpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIHN0ciA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocyk7XG4gIHZhciBzbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHN0cik7XG4gIGNoYW4uZmlsZS53cml0ZShjaGFuLm9mZnNldCwgc3RyLCAwLCBzbGVuKTtcbiAgY2hhbi5vZmZzZXQgKz0gc2xlbjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX2dsb2JhbF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcyxNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBqc19wcmludF9zdGRlcnIsIGpzX3ByaW50X3N0ZG91dFxuLy9SZXF1aXJlczogY2FtbF9zdGRfb3V0cHV0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChpZHgsb3V0cHV0LGZpbGUsZmxhZ3MpIHtcbiAgaWYoY2FtbF9nbG9iYWxfZGF0YS5mZHMgPT09IHVuZGVmaW5lZCkgY2FtbF9nbG9iYWxfZGF0YS5mZHMgPSBuZXcgQXJyYXkoKTtcbiAgZmxhZ3M9ZmxhZ3M/ZmxhZ3M6e307XG4gIHZhciBpbmZvID0ge307XG4gIGluZm8uZmlsZSA9IGZpbGU7XG4gIGluZm8ub2Zmc2V0ID0gZmxhZ3MuYXBwZW5kP2ZpbGUubGVuZ3RoKCk6MDtcbiAgaW5mby5mbGFncyA9IGZsYWdzO1xuICBpbmZvLm91dHB1dCA9IG91dHB1dDtcbiAgY2FtbF9nbG9iYWxfZGF0YS5mZHNbaWR4XSA9IGluZm87XG4gIGlmKCFjYW1sX2dsb2JhbF9kYXRhLmZkX2xhc3RfaWR4IHx8IGlkeCA+IGNhbWxfZ2xvYmFsX2RhdGEuZmRfbGFzdF9pZHgpXG4gICAgY2FtbF9nbG9iYWxfZGF0YS5mZF9sYXN0X2lkeCA9IGlkeDtcbiAgcmV0dXJuIGlkeDtcbn1cbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW4gKG5hbWUsIGZsYWdzLCBfcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUoZmxhZ3Mpe1xuICAgIHN3aXRjaChmbGFnc1sxXSl7XG4gICAgY2FzZSAwOiBmLnJkb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAxOiBmLndyb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAyOiBmLmFwcGVuZCA9IDE7YnJlYWs7XG4gICAgY2FzZSAzOiBmLmNyZWF0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA0OiBmLnRydW5jYXRlID0gMTticmVhaztcbiAgICBjYXNlIDU6IGYuZXhjbCA9IDE7IGJyZWFrO1xuICAgIGNhc2UgNjogZi5iaW5hcnkgPSAxO2JyZWFrO1xuICAgIGNhc2UgNzogZi50ZXh0ID0gMTticmVhaztcbiAgICBjYXNlIDg6IGYubm9uYmxvY2sgPSAxO2JyZWFrO1xuICAgIH1cbiAgICBmbGFncz1mbGFnc1syXTtcbiAgfVxuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3QsZik7XG4gIHZhciBpZHggPSBjYW1sX2dsb2JhbF9kYXRhLmZkX2xhc3RfaWR4P2NhbWxfZ2xvYmFsX2RhdGEuZmRfbGFzdF9pZHg6MDtcbiAgcmV0dXJuIGNhbWxfc3lzX29wZW5faW50ZXJuYWwgKGlkeCsxLGNhbWxfc3RkX291dHB1dCxmaWxlLGYpO1xufVxuY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCgwLGNhbWxfc3RkX291dHB1dCwgbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpKTsgLy9zdGRpblxuY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCgxLGpzX3ByaW50X3N0ZG91dCwgbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpKTsgLy9zdGRvdXRcbmNhbWxfc3lzX29wZW5faW50ZXJuYWwoMixqc19wcmludF9zdGRlcnIsIG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKSk7IC8vc3RkZXJyXG5cblxuLy8gb2NhbWwgQ2hhbm5lbHNcblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX25hbWUoKSB7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbHNcbnZhciBjYW1sX21sX2NoYW5uZWxzID0gbmV3IEFycmF5KCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QgKCkge1xuICB2YXIgbCA9IDA7XG4gIGZvcih2YXIgYyA9IDA7IGMgPCBjYW1sX21sX2NoYW5uZWxzLmxlbmd0aDsgYysrKXtcbiAgICBpZihjYW1sX21sX2NoYW5uZWxzW2NdICYmIGNhbWxfbWxfY2hhbm5lbHNbY10ub3BlbmVkICYmIGNhbWxfbWxfY2hhbm5lbHNbY10ub3V0KVxuICAgICAgbD1bMCxjYW1sX21sX2NoYW5uZWxzW2NdLmZkLGxdO1xuICB9XG4gIHJldHVybiBsO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9nbG9iYWxfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCAoZmQpIHtcbiAgdmFyIGRhdGEgPSBjYW1sX2dsb2JhbF9kYXRhLmZkc1tmZF07XG4gIGlmKGRhdGEuZmxhZ3MucmRvbmx5KSBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiKyBmZCArIFwiIGlzIHJlYWRvbmx5XCIpO1xuICB2YXIgY2hhbm5lbCA9IHtcbiAgICBmaWxlOmRhdGEuZmlsZSxcbiAgICBvZmZzZXQ6ZGF0YS5vZmZzZXQsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OnRydWUsXG4gICAgYnVmZmVyOlwiXCJcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsY2FtbF9zeXNfb3BlbixjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWQsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAoZmQpICB7XG4gIHZhciBkYXRhID0gY2FtbF9nbG9iYWxfZGF0YS5mZHNbZmRdO1xuICBpZihkYXRhLmZsYWdzLndyb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyB3cml0ZW9ubHlcIik7XG4gIHZhciByZWZpbGwgPSBudWxsO1xuICBpZihmZCA9PSAwICYmIGZzX25vZGVfc3VwcG9ydGVkKCkpe1xuICAgIHZhciBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gICAgcmVmaWxsID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGZzLnJlYWRGaWxlU3luYygwLCAndXRmOCcpKX07XG4gIH1cbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpkYXRhLmZpbGUsXG4gICAgb2Zmc2V0OmRhdGEub2Zmc2V0LFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDogZmFsc2UsXG4gICAgcmVmaWxsOnJlZmlsbFxuICB9O1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5uZWwuZmRdPWNoYW5uZWw7XG4gIHJldHVybiBjaGFubmVsLmZkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmQ7XG59XG5cbi8vUHJvdmlkZXM6IHdpbl9maWxlZGVzY3Jfb2ZfY2hhbm5lbFxuLy9SZXF1aXJlczogY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3JcbnZhciB3aW5fZmlsZWRlc2NyX29mX2NoYW5uZWwgPSBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUoY2hhbmlkLG1vZGUpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIGRhdGEgPSBjYW1sX2dsb2JhbF9kYXRhLmZkc1tjaGFuLmZkXTtcbiAgZGF0YS5mbGFncy50ZXh0ID0gIW1vZGVcbiAgZGF0YS5mbGFncy5iaW5hcnkgPSBtb2RlXG4gIHJldHVybiAwO1xufVxuXG4vL0lucHV0IGZyb20gaW5fY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Nsb3NlXG5mdW5jdGlvbiBjYW1sX21sX2Nsb3NlX2NoYW5uZWwgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICBjaGFuLm9wZW5lZCA9IGZhbHNlO1xuICBjaGFuLmZpbGUuY2xvc2UoKTtcbiAgY2FtbF9zeXNfY2xvc2UoY2hhbi5mZClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZpbGUubGVuZ3RoKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0KGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2hhbi5maWxlLmxlbmd0aCAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dChjaGFuaWQsZikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2FtbF9nbG9iYWxfZGF0YS5mZHNbY2hhbi5mZF0ub3V0cHV0ID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbChjaGFuaWQsZikge1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ucmVmaWxsID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcmVmaWxsX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfbWxfcmVmaWxsX2lucHV0IChjaGFuKSB7XG4gIHZhciBzdHIgPSBjaGFuLnJlZmlsbCgpO1xuICB2YXIgc3RyX2xlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIpO1xuICBpZiAoc3RyX2xlbiA9PSAwKSBjaGFuLnJlZmlsbCA9IG51bGw7XG4gIGNoYW4uZmlsZS53cml0ZShjaGFuLmZpbGUubGVuZ3RoKCksIHN0ciwgMCwgc3RyX2xlbik7XG4gIHJldHVybiBzdHJfbGVuO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX21heV9yZWZpbGxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfcmVmaWxsX2lucHV0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX21heV9yZWZpbGxfaW5wdXQgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYgKGNoYW4ucmVmaWxsID09IG51bGwpIHJldHVybjtcbiAgaWYgKGNoYW4uZmlsZS5sZW5ndGgoKSAhPSBjaGFuLm9mZnNldCkgcmV0dXJuO1xuICBjYW1sX21sX3JlZmlsbF9pbnB1dCAoY2hhbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfcmVmaWxsX2lucHV0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0IChjaGFuaWQsIHMsIGksIGwpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBsMiA9IGNoYW4uZmlsZS5sZW5ndGgoKSAtIGNoYW4ub2Zmc2V0O1xuICBpZiAobDIgPT0gMCAmJiBjaGFuLnJlZmlsbCAhPSBudWxsKSBsMiA9IGNhbWxfbWxfcmVmaWxsX2lucHV0KGNoYW4pO1xuICBpZiAobDIgPCBsKSBsID0gbDI7XG4gIGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LCBzLCBpLCBsKTtcbiAgY2hhbi5vZmZzZXQgKz0gbDtcbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcywgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWUgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcblxuICB2YXIgYnVmID0gY2FtbF9jcmVhdGVfYnl0ZXMoOCk7XG4gIGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LGJ1ZiwwLDgpO1xuXG4gIC8vIEhlYWRlciBpcyAyMCBieXRlc1xuICB2YXIgbGVuID0gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAoYnVmLCAwKSArIDIwO1xuXG4gIHZhciBidWYgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICBjaGFuLmZpbGUucmVhZChjaGFuLm9mZnNldCxidWYsMCxsZW4pO1xuXG4gIHZhciBvZmZzZXQgPSBbMF07XG4gIHZhciByZXMgPSBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMoYnVmLCBvZmZzZXQpO1xuICBjaGFuLm9mZnNldCA9IGNoYW4ub2Zmc2V0ICsgb2Zmc2V0WzBdO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfbWF5X3JlZmlsbF9pbnB1dCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9jaGFyIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNhbWxfbWxfbWF5X3JlZmlsbF9pbnB1dChjaGFuaWQpO1xuICBpZiAoY2hhbi5vZmZzZXQgPj0gY2hhbi5maWxlLmxlbmd0aCgpKVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgdmFyIHJlcyA9IGNoYW4uZmlsZS5yZWFkX29uZShjaGFuLm9mZnNldCk7XG4gIGNoYW4ub2Zmc2V0Kys7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21sX3JlZmlsbF9pbnB1dCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9pbnQgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIGZpbGUgPSBjaGFuLmZpbGU7XG4gIHdoaWxlICgoY2hhbi5vZmZzZXQgKyAzKSA+PSBmaWxlLmxlbmd0aCgpKSB7XG4gICAgdmFyIGwgPSBjYW1sX21sX3JlZmlsbF9pbnB1dChjaGFuKTtcbiAgICBpZiAobCA9PSAwKSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIH1cbiAgdmFyIG8gPSBjaGFuLm9mZnNldDtcbiAgdmFyIHIgPShmaWxlLnJlYWRfb25lKG8gICkgPDwgMjQpXG4gICAgICB8ICAoZmlsZS5yZWFkX29uZShvKzEpIDw8IDE2KVxuICAgICAgfCAgKGZpbGUucmVhZF9vbmUobysyKSA8PCA4KVxuICAgICAgfCAgKGZpbGUucmVhZF9vbmUobyszKSk7XG4gIGNoYW4ub2Zmc2V0Kz00O1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luKGNoYW5pZCxwb3Mpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYgKGNoYW4ucmVmaWxsICE9IG51bGwpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiSWxsZWdhbCBzZWVrXCIpO1xuICBjaGFuLm9mZnNldCA9IHBvcztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbl82NChjaGFuaWQscG9zKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmIChjaGFuLnJlZmlsbCAhPSBudWxsKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIklsbGVnYWwgc2Vla1wiKTtcbiAgY2hhbi5vZmZzZXQgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW4oY2hhbmlkKSB7cmV0dXJuIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5vZmZzZXR9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbl82NChjaGFuaWQpIHtyZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ub2Zmc2V0KX1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfbWF5X3JlZmlsbF9pbnB1dCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNhbWxfbWxfbWF5X3JlZmlsbF9pbnB1dChjaGFuaWQpO1xuICB2YXIgcCA9IGNoYW4ub2Zmc2V0O1xuICB2YXIgbGVuID0gY2hhbi5maWxlLmxlbmd0aCgpO1xuICBpZihwID49IGxlbikgeyByZXR1cm4gMDt9XG4gIHdoaWxlKHRydWUpIHtcbiAgICBpZihwID49IGxlbikgcmV0dXJuIC0gKHAgLSBjaGFuLm9mZnNldCk7XG4gICAgaWYoY2hhbi5maWxlLnJlYWRfb25lKHApID09IDEwKSByZXR1cm4gcCAtIGNoYW4ub2Zmc2V0ICsgMTtcbiAgICBwKys7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9mbHVzaFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3QgZmx1c2ggYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgaWYoIWNoYW4uYnVmZmVyIHx8IGNoYW4uYnVmZmVyID09IFwiXCIpIHJldHVybiAwO1xuICBpZihjaGFuLmZkXG4gICAgICYmIGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2NoYW4uZmRdXG4gICAgICYmIGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2NoYW4uZmRdLm91dHB1dCkge1xuICAgIHZhciBvdXRwdXQgPSBjYW1sX2dsb2JhbF9kYXRhLmZkc1tjaGFuLmZkXS5vdXRwdXQ7XG4gICAgc3dpdGNoKG91dHB1dC5sZW5ndGgpe1xuICAgIGNhc2UgMjogb3V0cHV0KGNoYW5pZCxjaGFuLmJ1ZmZlcik7YnJlYWs7XG4gICAgZGVmYXVsdDogb3V0cHV0KGNoYW4uYnVmZmVyKVxuICAgIH07XG4gIH1cbiAgY2hhbi5idWZmZXIgPSBcIlwiO1xuICByZXR1cm4gMDtcbn1cblxuLy9vdXRwdXQgdG8gb3V0X2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBvdXRwdXQgdG8gYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgdmFyIGJ5dGVzO1xuICBpZihvZmZzZXQgPT0gMCAmJiBjYW1sX21sX2J5dGVzX2xlbmd0aChidWZmZXIpID09IGxlbilcbiAgICBieXRlcyA9IGJ1ZmZlcjtcbiAgZWxzZSB7XG4gICAgYnl0ZXMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhidWZmZXIsb2Zmc2V0LGJ5dGVzLDAsbGVuKTtcbiAgfVxuICB2YXIgc3RyaW5nID0gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMoYnl0ZXMpO1xuICB2YXIganNzdHJpbmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHN0cmluZyk7XG4gIHZhciBpZCA9IGpzc3RyaW5nLmxhc3RJbmRleE9mKFwiXFxuXCIpO1xuICBpZihpZCA8IDApXG4gICAgY2hhbi5idWZmZXIrPWpzc3RyaW5nO1xuICBlbHNlIHtcbiAgICBjaGFuLmJ1ZmZlcis9anNzdHJpbmcuc3Vic3RyKDAsaWQrMSk7XG4gICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBjaGFuLmJ1ZmZlciArPSBqc3N0cmluZy5zdWJzdHIoaWQrMSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbil7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF9ieXRlcyhjaGFuaWQsY2FtbF9ieXRlc19vZl9zdHJpbmcoYnVmZmVyKSxvZmZzZXQsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2NoYXIgKGNoYW5pZCxjKSB7XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCwxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcsIGNhbWxfbWxfb3V0cHV0LGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWUgKGNoYW5pZCx2LGZsYWdzKSB7XG4gIHZhciBzID0gY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nKHYsIGZsYWdzKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCxjYW1sX21sX3N0cmluZ19sZW5ndGgocykpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0KGNoYW5pZCxwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5vZmZzZXQgPSBwb3M7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0LCBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0XzY0KGNoYW5pZCxwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5vZmZzZXQgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dChjaGFuaWQpIHtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLm9mZnNldFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dF82NChjaGFuaWQpIHtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLm9mZnNldCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9pbnQgKGNoYW5pZCxpKSB7XG4gIHZhciBhcnIgPSBbKGk+PjI0KSAmIDB4RkYsKGk+PjE2KSAmIDB4RkYsKGk+PjgpICYgMHhGRixpICYgMHhGRiBdO1xuICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsNCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaXNfYnVmZmVyZWRcbmZ1bmN0aW9uIGNhbWxfbWxfaXNfYnVmZmVyZWQoYykgeyByZXR1cm4gMSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2J1ZmZlcmVkXG5mdW5jdGlvbiBjYW1sX21sX3NldF9idWZmZXJlZChjLHYpIHsgcmV0dXJuIDAgfVxuIiwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3IoKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKCl7IHJldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9nY19mdWxsX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX2Z1bGxfbWFqb3IoKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvbXBhY3Rpb25cbmZ1bmN0aW9uIGNhbWxfZ2NfY29tcGFjdGlvbigpeyByZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY291bnRlcnNcbmZ1bmN0aW9uIGNhbWxfZ2NfY291bnRlcnMoKSB7IHJldHVybiBbMjU0LDAsMCwwXSB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbmZ1bmN0aW9uIGNhbWxfZ2NfcXVpY2tfc3RhdCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc3RhdFxuZnVuY3Rpb24gY2FtbF9nY19zdGF0KCkge1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19zZXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2dldFxuZnVuY3Rpb24gY2FtbF9nY19nZXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3NldFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3RlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3RlciAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVsZWFzZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWxlYXNlICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RhcnQocmF0ZSxzdGFja19zaXplLHRyYWNrZXIpe1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0b3BcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdG9wKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcmVzdW1lXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3Jlc3VtZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcGF1c2UodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnRcbmZ1bmN0aW9uIGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3Jfc2xpY2VcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3Jfc2xpY2Uod29yaykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yX3dvcmRzKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWlub3JfZnJlZVxuZnVuY3Rpb24gY2FtbF9nZXRfbWlub3JfZnJlZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2J1Y2tldFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfYnVja2V0KG4pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfY3JlZGl0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9jcmVkaXQobikgeyByZXR1cm4gMDsgfVxuIiwiLy9JbXBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9wZXRlcm9sc29uL0JpZ0ludGVnZXIuanMjNGU5OWIxNWI3OTUxMzM4ZjE2NDcyODM3N2M5MDZjYWFlNWE3ODIwMlxuXG4vL1Byb3ZpZGVzOiBiaWdJbnQgY29uc3RcbnZhciBiaWdJbnQgPSAoZnVuY3Rpb24gKHVuZGVmaW5lZCkge1xuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgdmFyIEJBU0UgPSAxZTcsXG4gICAgICAgIExPR19CQVNFID0gNyxcbiAgICAgICAgTUFYX0lOVCA9IDkwMDcxOTkyNTQ3NDA5OTIsXG4gICAgICAgIE1BWF9JTlRfQVJSID0gc21hbGxUb0FycmF5KE1BWF9JTlQpLFxuICAgICAgICBERUZBVUxUX0FMUEhBQkVUID0gXCIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjtcblxuICAgIHZhciBCaWdJbnQgPSBqb29fZ2xvYmFsX29iamVjdC5CaWdJbnQ7XG5cbiAgICB2YXIgc3VwcG9ydHNOYXRpdmVCaWdJbnQgPSB0eXBlb2YgQmlnSW50ID09PSBcImZ1bmN0aW9uXCI7XG5cbiAgICBmdW5jdGlvbiBJbnRlZ2VyKHYsIHJhZGl4LCBhbHBoYWJldCwgY2FzZVNlbnNpdGl2ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHYgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBJbnRlZ2VyWzBdO1xuICAgICAgICBpZiAodHlwZW9mIHJhZGl4ICE9PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gK3JhZGl4ID09PSAxMCAmJiAhYWxwaGFiZXQgPyBwYXJzZVZhbHVlKHYpIDogcGFyc2VCYXNlKHYsIHJhZGl4LCBhbHBoYWJldCwgY2FzZVNlbnNpdGl2ZSk7XG4gICAgICAgIHJldHVybiBwYXJzZVZhbHVlKHYpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIEJpZ0ludGVnZXIodmFsdWUsIHNpZ24pIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNpZ24gPSBzaWduO1xuICAgICAgICB0aGlzLmlzU21hbGwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jYW1sX2N1c3RvbSA9ICdfeic7XG4gICAgfVxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJbnRlZ2VyLnByb3RvdHlwZSk7XG5cbiAgICBmdW5jdGlvbiBTbWFsbEludGVnZXIodmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNpZ24gPSB2YWx1ZSA8IDA7XG4gICAgICAgIHRoaXMuaXNTbWFsbCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2FtbF9jdXN0b20gPSAnX3onO1xuICAgIH1cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJbnRlZ2VyLnByb3RvdHlwZSk7XG5cbiAgICBmdW5jdGlvbiBOYXRpdmVCaWdJbnQodmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNhbWxfY3VzdG9tID0gJ196JztcbiAgICB9XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSW50ZWdlci5wcm90b3R5cGUpO1xuXG4gICAgZnVuY3Rpb24gaXNQcmVjaXNlKG4pIHtcbiAgICAgICAgcmV0dXJuIC1NQVhfSU5UIDwgbiAmJiBuIDwgTUFYX0lOVDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzbWFsbFRvQXJyYXkobikgeyAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBkb2Vzbid0IHJlZmVyZW5jZSBCQVNFLCBuZWVkIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGlmIEJBU0UgY2hhbmdlc1xuICAgICAgICBpZiAobiA8IDFlNylcbiAgICAgICAgICAgIHJldHVybiBbbl07XG4gICAgICAgIGlmIChuIDwgMWUxNClcbiAgICAgICAgICAgIHJldHVybiBbbiAlIDFlNywgTWF0aC5mbG9vcihuIC8gMWU3KV07XG4gICAgICAgIHJldHVybiBbbiAlIDFlNywgTWF0aC5mbG9vcihuIC8gMWU3KSAlIDFlNywgTWF0aC5mbG9vcihuIC8gMWUxNCldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFycmF5VG9TbWFsbChhcnIpIHsgLy8gSWYgQkFTRSBjaGFuZ2VzIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gY2hhbmdlXG4gICAgICAgIHRyaW0oYXJyKTtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGFyci5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPCA0ICYmIGNvbXBhcmVBYnMoYXJyLCBNQVhfSU5UX0FSUikgPCAwKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gYXJyWzBdO1xuICAgICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIGFyclswXSArIGFyclsxXSAqIEJBU0U7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGFyclswXSArIChhcnJbMV0gKyBhcnJbMl0gKiBCQVNFKSAqIEJBU0U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cmltKHYpIHtcbiAgICAgICAgdmFyIGkgPSB2Lmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKHZbLS1pXSA9PT0gMCk7XG4gICAgICAgIHYubGVuZ3RoID0gaSArIDE7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlQXJyYXkobGVuZ3RoKSB7IC8vIGZ1bmN0aW9uIHNoYW1lbGVzc2x5IHN0b2xlbiBmcm9tIFlhZmZsZSdzIGxpYnJhcnkgaHR0cHM6Ly9naXRodWIuY29tL1lhZmZsZS9CaWdJbnRlZ2VyXG4gICAgICAgIHZhciB4ID0gbmV3IEFycmF5KGxlbmd0aCk7XG4gICAgICAgIHZhciBpID0gLTE7XG4gICAgICAgIHdoaWxlICgrK2kgPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIHhbaV0gPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRydW5jYXRlKG4pIHtcbiAgICAgICAgaWYgKG4gPiAwKSByZXR1cm4gTWF0aC5mbG9vcihuKTtcbiAgICAgICAgcmV0dXJuIE1hdGguY2VpbChuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGQoYSwgYikgeyAvLyBhc3N1bWVzIGEgYW5kIGIgYXJlIGFycmF5cyB3aXRoIGEubGVuZ3RoID49IGIubGVuZ3RoXG4gICAgICAgIHZhciBsX2EgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIGxfYiA9IGIubGVuZ3RoLFxuICAgICAgICAgICAgciA9IG5ldyBBcnJheShsX2EpLFxuICAgICAgICAgICAgY2FycnkgPSAwLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBzdW0sIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsX2I7IGkrKykge1xuICAgICAgICAgICAgc3VtID0gYVtpXSArIGJbaV0gKyBjYXJyeTtcbiAgICAgICAgICAgIGNhcnJ5ID0gc3VtID49IGJhc2UgPyAxIDogMDtcbiAgICAgICAgICAgIHJbaV0gPSBzdW0gLSBjYXJyeSAqIGJhc2U7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGkgPCBsX2EpIHtcbiAgICAgICAgICAgIHN1bSA9IGFbaV0gKyBjYXJyeTtcbiAgICAgICAgICAgIGNhcnJ5ID0gc3VtID09PSBiYXNlID8gMSA6IDA7XG4gICAgICAgICAgICByW2krK10gPSBzdW0gLSBjYXJyeSAqIGJhc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhcnJ5ID4gMCkgci5wdXNoKGNhcnJ5KTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkQW55KGEsIGIpIHtcbiAgICAgICAgaWYgKGEubGVuZ3RoID49IGIubGVuZ3RoKSByZXR1cm4gYWRkKGEsIGIpO1xuICAgICAgICByZXR1cm4gYWRkKGIsIGEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFNtYWxsKGEsIGNhcnJ5KSB7IC8vIGFzc3VtZXMgYSBpcyBhcnJheSwgY2FycnkgaXMgbnVtYmVyIHdpdGggMCA8PSBjYXJyeSA8IE1BWF9JTlRcbiAgICAgICAgdmFyIGwgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIHIgPSBuZXcgQXJyYXkobCksXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIHN1bSwgaTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgc3VtID0gYVtpXSAtIGJhc2UgKyBjYXJyeTtcbiAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihzdW0gLyBiYXNlKTtcbiAgICAgICAgICAgIHJbaV0gPSBzdW0gLSBjYXJyeSAqIGJhc2U7XG4gICAgICAgICAgICBjYXJyeSArPSAxO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChjYXJyeSA+IDApIHtcbiAgICAgICAgICAgIHJbaSsrXSA9IGNhcnJ5ICUgYmFzZTtcbiAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihjYXJyeSAvIGJhc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgaWYgKHRoaXMuc2lnbiAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdWJ0cmFjdChuLm5lZ2F0ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWUsIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoYWRkU21hbGwoYSwgTWF0aC5hYnMoYikpLCB0aGlzLnNpZ24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihhZGRBbnkoYSwgYiksIHRoaXMuc2lnbik7XG4gICAgfTtcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5wbHVzID0gQmlnSW50ZWdlci5wcm90b3R5cGUuYWRkO1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodik7XG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZTtcbiAgICAgICAgaWYgKGEgPCAwICE9PSBuLnNpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN1YnRyYWN0KG4ubmVnYXRlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgaWYgKGlzUHJlY2lzZShhICsgYikpIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKGEgKyBiKTtcbiAgICAgICAgICAgIGIgPSBzbWFsbFRvQXJyYXkoTWF0aC5hYnMoYikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihhZGRTbWFsbChiLCBNYXRoLmFicyhhKSksIGEgPCAwKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUucGx1cyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuYWRkO1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlICsgcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XG4gICAgfVxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUucGx1cyA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuYWRkO1xuXG4gICAgZnVuY3Rpb24gc3VidHJhY3QoYSwgYikgeyAvLyBhc3N1bWVzIGEgYW5kIGIgYXJlIGFycmF5cyB3aXRoIGEgPj0gYlxuICAgICAgICB2YXIgYV9sID0gYS5sZW5ndGgsXG4gICAgICAgICAgICBiX2wgPSBiLmxlbmd0aCxcbiAgICAgICAgICAgIHIgPSBuZXcgQXJyYXkoYV9sKSxcbiAgICAgICAgICAgIGJvcnJvdyA9IDAsXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIGksIGRpZmZlcmVuY2U7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBiX2w7IGkrKykge1xuICAgICAgICAgICAgZGlmZmVyZW5jZSA9IGFbaV0gLSBib3Jyb3cgLSBiW2ldO1xuICAgICAgICAgICAgaWYgKGRpZmZlcmVuY2UgPCAwKSB7XG4gICAgICAgICAgICAgICAgZGlmZmVyZW5jZSArPSBiYXNlO1xuICAgICAgICAgICAgICAgIGJvcnJvdyA9IDE7XG4gICAgICAgICAgICB9IGVsc2UgYm9ycm93ID0gMDtcbiAgICAgICAgICAgIHJbaV0gPSBkaWZmZXJlbmNlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaSA9IGJfbDsgaSA8IGFfbDsgaSsrKSB7XG4gICAgICAgICAgICBkaWZmZXJlbmNlID0gYVtpXSAtIGJvcnJvdztcbiAgICAgICAgICAgIGlmIChkaWZmZXJlbmNlIDwgMCkgZGlmZmVyZW5jZSArPSBiYXNlO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcltpKytdID0gZGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJbaV0gPSBkaWZmZXJlbmNlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoOyBpIDwgYV9sOyBpKyspIHtcbiAgICAgICAgICAgIHJbaV0gPSBhW2ldO1xuICAgICAgICB9XG4gICAgICAgIHRyaW0ocik7XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN1YnRyYWN0QW55KGEsIGIsIHNpZ24pIHtcbiAgICAgICAgdmFyIHZhbHVlO1xuICAgICAgICBpZiAoY29tcGFyZUFicyhhLCBiKSA+PSAwKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHN1YnRyYWN0KGEsIGIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgPSBzdWJ0cmFjdChiLCBhKTtcbiAgICAgICAgICAgIHNpZ24gPSAhc2lnbjtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZSA9IGFycmF5VG9TbWFsbCh2YWx1ZSk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGlmIChzaWduKSB2YWx1ZSA9IC12YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIodmFsdWUsIHNpZ24pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN1YnRyYWN0U21hbGwoYSwgYiwgc2lnbikgeyAvLyBhc3N1bWVzIGEgaXMgYXJyYXksIGIgaXMgbnVtYmVyIHdpdGggMCA8PSBiIDwgTUFYX0lOVFxuICAgICAgICB2YXIgbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgciA9IG5ldyBBcnJheShsKSxcbiAgICAgICAgICAgIGNhcnJ5ID0gLWIsXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIGksIGRpZmZlcmVuY2U7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIGRpZmZlcmVuY2UgPSBhW2ldICsgY2Fycnk7XG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IoZGlmZmVyZW5jZSAvIGJhc2UpO1xuICAgICAgICAgICAgZGlmZmVyZW5jZSAlPSBiYXNlO1xuICAgICAgICAgICAgcltpXSA9IGRpZmZlcmVuY2UgPCAwID8gZGlmZmVyZW5jZSArIGJhc2UgOiBkaWZmZXJlbmNlO1xuICAgICAgICB9XG4gICAgICAgIHIgPSBhcnJheVRvU21hbGwocik7XG4gICAgICAgIGlmICh0eXBlb2YgciA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgaWYgKHNpZ24pIHIgPSAtcjtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKHIpO1xuICAgICAgICB9IHJldHVybiBuZXcgQmlnSW50ZWdlcihyLCBzaWduKTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zdWJ0cmFjdCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgaWYgKHRoaXMuc2lnbiAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGQobi5uZWdhdGUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlLCBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbClcbiAgICAgICAgICAgIHJldHVybiBzdWJ0cmFjdFNtYWxsKGEsIE1hdGguYWJzKGIpLCB0aGlzLnNpZ24pO1xuICAgICAgICByZXR1cm4gc3VidHJhY3RBbnkoYSwgYiwgdGhpcy5zaWduKTtcbiAgICB9O1xuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm1pbnVzID0gQmlnSW50ZWdlci5wcm90b3R5cGUuc3VidHJhY3Q7XG5cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnN1YnRyYWN0ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpO1xuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmIChhIDwgMCAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGQobi5uZWdhdGUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcihhIC0gYik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1YnRyYWN0U21hbGwoYiwgTWF0aC5hYnMoYSksIGEgPj0gMCk7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm1pbnVzID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5zdWJ0cmFjdDtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc3VidHJhY3QgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlIC0gcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XG4gICAgfVxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubWludXMgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnN1YnRyYWN0O1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubmVnYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIodGhpcy52YWx1ZSwgIXRoaXMuc2lnbik7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHNpZ24gPSB0aGlzLnNpZ247XG4gICAgICAgIHZhciBzbWFsbCA9IG5ldyBTbWFsbEludGVnZXIoLXRoaXMudmFsdWUpO1xuICAgICAgICBzbWFsbC5zaWduID0gIXNpZ247XG4gICAgICAgIHJldHVybiBzbWFsbDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubmVnYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCgtdGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIodGhpcy52YWx1ZSwgZmFsc2UpO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKE1hdGguYWJzKHRoaXMudmFsdWUpKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlID49IDAgPyB0aGlzLnZhbHVlIDogLXRoaXMudmFsdWUpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlMb25nKGEsIGIpIHtcbiAgICAgICAgdmFyIGFfbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgYl9sID0gYi5sZW5ndGgsXG4gICAgICAgICAgICBsID0gYV9sICsgYl9sLFxuICAgICAgICAgICAgciA9IGNyZWF0ZUFycmF5KGwpLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBwcm9kdWN0LCBjYXJyeSwgaSwgYV9pLCBiX2o7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhX2w7ICsraSkge1xuICAgICAgICAgICAgYV9pID0gYVtpXTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYl9sOyArK2opIHtcbiAgICAgICAgICAgICAgICBiX2ogPSBiW2pdO1xuICAgICAgICAgICAgICAgIHByb2R1Y3QgPSBhX2kgKiBiX2ogKyByW2kgKyBqXTtcbiAgICAgICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IocHJvZHVjdCAvIGJhc2UpO1xuICAgICAgICAgICAgICAgIHJbaSArIGpdID0gcHJvZHVjdCAtIGNhcnJ5ICogYmFzZTtcbiAgICAgICAgICAgICAgICByW2kgKyBqICsgMV0gKz0gY2Fycnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdHJpbShyKTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlTbWFsbChhLCBiKSB7IC8vIGFzc3VtZXMgYSBpcyBhcnJheSwgYiBpcyBudW1iZXIgd2l0aCB8YnwgPCBCQVNFXG4gICAgICAgIHZhciBsID0gYS5sZW5ndGgsXG4gICAgICAgICAgICByID0gbmV3IEFycmF5KGwpLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBjYXJyeSA9IDAsXG4gICAgICAgICAgICBwcm9kdWN0LCBpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBwcm9kdWN0ID0gYVtpXSAqIGIgKyBjYXJyeTtcbiAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihwcm9kdWN0IC8gYmFzZSk7XG4gICAgICAgICAgICByW2ldID0gcHJvZHVjdCAtIGNhcnJ5ICogYmFzZTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoY2FycnkgPiAwKSB7XG4gICAgICAgICAgICByW2krK10gPSBjYXJyeSAlIGJhc2U7XG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IoY2FycnkgLyBiYXNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzaGlmdExlZnQoeCwgbikge1xuICAgICAgICB2YXIgciA9IFtdO1xuICAgICAgICB3aGlsZSAobi0tID4gMCkgci5wdXNoKDApO1xuICAgICAgICByZXR1cm4gci5jb25jYXQoeCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlLYXJhdHN1YmEoeCwgeSkge1xuICAgICAgICB2YXIgbiA9IE1hdGgubWF4KHgubGVuZ3RoLCB5Lmxlbmd0aCk7XG5cbiAgICAgICAgaWYgKG4gPD0gMzApIHJldHVybiBtdWx0aXBseUxvbmcoeCwgeSk7XG4gICAgICAgIG4gPSBNYXRoLmNlaWwobiAvIDIpO1xuXG4gICAgICAgIHZhciBiID0geC5zbGljZShuKSxcbiAgICAgICAgICAgIGEgPSB4LnNsaWNlKDAsIG4pLFxuICAgICAgICAgICAgZCA9IHkuc2xpY2UobiksXG4gICAgICAgICAgICBjID0geS5zbGljZSgwLCBuKTtcblxuICAgICAgICB2YXIgYWMgPSBtdWx0aXBseUthcmF0c3ViYShhLCBjKSxcbiAgICAgICAgICAgIGJkID0gbXVsdGlwbHlLYXJhdHN1YmEoYiwgZCksXG4gICAgICAgICAgICBhYmNkID0gbXVsdGlwbHlLYXJhdHN1YmEoYWRkQW55KGEsIGIpLCBhZGRBbnkoYywgZCkpO1xuXG4gICAgICAgIHZhciBwcm9kdWN0ID0gYWRkQW55KGFkZEFueShhYywgc2hpZnRMZWZ0KHN1YnRyYWN0KHN1YnRyYWN0KGFiY2QsIGFjKSwgYmQpLCBuKSksIHNoaWZ0TGVmdChiZCwgMiAqIG4pKTtcbiAgICAgICAgdHJpbShwcm9kdWN0KTtcbiAgICAgICAgcmV0dXJuIHByb2R1Y3Q7XG4gICAgfVxuXG4gICAgLy8gVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyBkZXJpdmVkIGZyb20gYSBzdXJmYWNlIGZpdCBvZiBhIGdyYXBoIHBsb3R0aW5nIHRoZSBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlXG4gICAgLy8gYmV0d2VlbiBsb25nIG11bHRpcGxpY2F0aW9uIGFuZCBrYXJhdHN1YmEgbXVsdGlwbGljYXRpb24gdmVyc3VzIHRoZSBsZW5ndGhzIG9mIHRoZSB0d28gYXJyYXlzLlxuICAgIGZ1bmN0aW9uIHVzZUthcmF0c3ViYShsMSwgbDIpIHtcbiAgICAgICAgcmV0dXJuIC0wLjAxMiAqIGwxIC0gMC4wMTIgKiBsMiArIDAuMDAwMDE1ICogbDEgKiBsMiA+IDA7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubXVsdGlwbHkgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodiksXG4gICAgICAgICAgICBhID0gdGhpcy52YWx1ZSwgYiA9IG4udmFsdWUsXG4gICAgICAgICAgICBzaWduID0gdGhpcy5zaWduICE9PSBuLnNpZ24sXG4gICAgICAgICAgICBhYnM7XG4gICAgICAgIGlmIChuLmlzU21hbGwpIHtcbiAgICAgICAgICAgIGlmIChiID09PSAwKSByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgICAgIGlmIChiID09PSAxKSByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIGlmIChiID09PSAtMSkgcmV0dXJuIHRoaXMubmVnYXRlKCk7XG4gICAgICAgICAgICBhYnMgPSBNYXRoLmFicyhiKTtcbiAgICAgICAgICAgIGlmIChhYnMgPCBCQVNFKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKG11bHRpcGx5U21hbGwoYSwgYWJzKSwgc2lnbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBiID0gc21hbGxUb0FycmF5KGFicyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVzZUthcmF0c3ViYShhLmxlbmd0aCwgYi5sZW5ndGgpKSAvLyBLYXJhdHN1YmEgaXMgb25seSBmYXN0ZXIgZm9yIGNlcnRhaW4gYXJyYXkgc2l6ZXNcbiAgICAgICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseUthcmF0c3ViYShhLCBiKSwgc2lnbik7XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseUxvbmcoYSwgYiksIHNpZ24pO1xuICAgIH07XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS50aW1lcyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5O1xuXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlTbWFsbEFuZEFycmF5KGEsIGIsIHNpZ24pIHsgLy8gYSA+PSAwXG4gICAgICAgIGlmIChhIDwgQkFTRSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKG11bHRpcGx5U21hbGwoYiwgYSksIHNpZ24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseUxvbmcoYiwgc21hbGxUb0FycmF5KGEpKSwgc2lnbik7XG4gICAgfVxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuX211bHRpcGx5QnlTbWFsbCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIGlmIChpc1ByZWNpc2UoYS52YWx1ZSAqIHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcihhLnZhbHVlICogdGhpcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG11bHRpcGx5U21hbGxBbmRBcnJheShNYXRoLmFicyhhLnZhbHVlKSwgc21hbGxUb0FycmF5KE1hdGguYWJzKHRoaXMudmFsdWUpKSwgdGhpcy5zaWduICE9PSBhLnNpZ24pO1xuICAgIH07XG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuX211bHRpcGx5QnlTbWFsbCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIGlmIChhLnZhbHVlID09PSAwKSByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgaWYgKGEudmFsdWUgPT09IDEpIHJldHVybiB0aGlzO1xuICAgICAgICBpZiAoYS52YWx1ZSA9PT0gLTEpIHJldHVybiB0aGlzLm5lZ2F0ZSgpO1xuICAgICAgICByZXR1cm4gbXVsdGlwbHlTbWFsbEFuZEFycmF5KE1hdGguYWJzKGEudmFsdWUpLCB0aGlzLnZhbHVlLCB0aGlzLnNpZ24gIT09IGEuc2lnbik7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm11bHRpcGx5ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlVmFsdWUodikuX211bHRpcGx5QnlTbWFsbCh0aGlzKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUudGltZXMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm11bHRpcGx5O1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5tdWx0aXBseSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgKiBwYXJzZVZhbHVlKHYpLnZhbHVlKTtcbiAgICB9XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS50aW1lcyA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubXVsdGlwbHk7XG5cbiAgICBmdW5jdGlvbiBzcXVhcmUoYSkge1xuICAgICAgICAvL2NvbnNvbGUuYXNzZXJ0KDIgKiBCQVNFICogQkFTRSA8IE1BWF9JTlQpO1xuICAgICAgICB2YXIgbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgciA9IGNyZWF0ZUFycmF5KGwgKyBsKSxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgcHJvZHVjdCwgY2FycnksIGksIGFfaSwgYV9qO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBhX2kgPSBhW2ldO1xuICAgICAgICAgICAgY2FycnkgPSAwIC0gYV9pICogYV9pO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IGk7IGogPCBsOyBqKyspIHtcbiAgICAgICAgICAgICAgICBhX2ogPSBhW2pdO1xuICAgICAgICAgICAgICAgIHByb2R1Y3QgPSAyICogKGFfaSAqIGFfaikgKyByW2kgKyBqXSArIGNhcnJ5O1xuICAgICAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihwcm9kdWN0IC8gYmFzZSk7XG4gICAgICAgICAgICAgICAgcltpICsgal0gPSBwcm9kdWN0IC0gY2FycnkgKiBiYXNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcltpICsgbF0gPSBjYXJyeTtcbiAgICAgICAgfVxuICAgICAgICB0cmltKHIpO1xuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zcXVhcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihzcXVhcmUodGhpcy52YWx1ZSksIGZhbHNlKTtcbiAgICB9O1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5zcXVhcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWUgKiB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAoaXNQcmVjaXNlKHZhbHVlKSkgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoc3F1YXJlKHNtYWxsVG9BcnJheShNYXRoLmFicyh0aGlzLnZhbHVlKSkpLCBmYWxzZSk7XG4gICAgfTtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc3F1YXJlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAqIHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRpdk1vZDEoYSwgYikgeyAvLyBMZWZ0IG92ZXIgZnJvbSBwcmV2aW91cyB2ZXJzaW9uLiBQZXJmb3JtcyBmYXN0ZXIgdGhhbiBkaXZNb2QyIG9uIHNtYWxsZXIgaW5wdXQgc2l6ZXMuXG4gICAgICAgIHZhciBhX2wgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIGJfbCA9IGIubGVuZ3RoLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVBcnJheShiLmxlbmd0aCksXG4gICAgICAgICAgICBkaXZpc29yTW9zdFNpZ25pZmljYW50RGlnaXQgPSBiW2JfbCAtIDFdLFxuICAgICAgICAgICAgLy8gbm9ybWFsaXphdGlvblxuICAgICAgICAgICAgbGFtYmRhID0gTWF0aC5jZWlsKGJhc2UgLyAoMiAqIGRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCkpLFxuICAgICAgICAgICAgcmVtYWluZGVyID0gbXVsdGlwbHlTbWFsbChhLCBsYW1iZGEpLFxuICAgICAgICAgICAgZGl2aXNvciA9IG11bHRpcGx5U21hbGwoYiwgbGFtYmRhKSxcbiAgICAgICAgICAgIHF1b3RpZW50RGlnaXQsIHNoaWZ0LCBjYXJyeSwgYm9ycm93LCBpLCBsLCBxO1xuICAgICAgICBpZiAocmVtYWluZGVyLmxlbmd0aCA8PSBhX2wpIHJlbWFpbmRlci5wdXNoKDApO1xuICAgICAgICBkaXZpc29yLnB1c2goMCk7XG4gICAgICAgIGRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCA9IGRpdmlzb3JbYl9sIC0gMV07XG4gICAgICAgIGZvciAoc2hpZnQgPSBhX2wgLSBiX2w7IHNoaWZ0ID49IDA7IHNoaWZ0LS0pIHtcbiAgICAgICAgICAgIHF1b3RpZW50RGlnaXQgPSBiYXNlIC0gMTtcbiAgICAgICAgICAgIGlmIChyZW1haW5kZXJbc2hpZnQgKyBiX2xdICE9PSBkaXZpc29yTW9zdFNpZ25pZmljYW50RGlnaXQpIHtcbiAgICAgICAgICAgICAgICBxdW90aWVudERpZ2l0ID0gTWF0aC5mbG9vcigocmVtYWluZGVyW3NoaWZ0ICsgYl9sXSAqIGJhc2UgKyByZW1haW5kZXJbc2hpZnQgKyBiX2wgLSAxXSkgLyBkaXZpc29yTW9zdFNpZ25pZmljYW50RGlnaXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcXVvdGllbnREaWdpdCA8PSBiYXNlIC0gMVxuICAgICAgICAgICAgY2FycnkgPSAwO1xuICAgICAgICAgICAgYm9ycm93ID0gMDtcbiAgICAgICAgICAgIGwgPSBkaXZpc29yLmxlbmd0aDtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjYXJyeSArPSBxdW90aWVudERpZ2l0ICogZGl2aXNvcltpXTtcbiAgICAgICAgICAgICAgICBxID0gTWF0aC5mbG9vcihjYXJyeSAvIGJhc2UpO1xuICAgICAgICAgICAgICAgIGJvcnJvdyArPSByZW1haW5kZXJbc2hpZnQgKyBpXSAtIChjYXJyeSAtIHEgKiBiYXNlKTtcbiAgICAgICAgICAgICAgICBjYXJyeSA9IHE7XG4gICAgICAgICAgICAgICAgaWYgKGJvcnJvdyA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyW3NoaWZ0ICsgaV0gPSBib3Jyb3cgKyBiYXNlO1xuICAgICAgICAgICAgICAgICAgICBib3Jyb3cgPSAtMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZW1haW5kZXJbc2hpZnQgKyBpXSA9IGJvcnJvdztcbiAgICAgICAgICAgICAgICAgICAgYm9ycm93ID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoYm9ycm93ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgcXVvdGllbnREaWdpdCAtPSAxO1xuICAgICAgICAgICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhcnJ5ICs9IHJlbWFpbmRlcltzaGlmdCArIGldIC0gYmFzZSArIGRpdmlzb3JbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjYXJyeSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlcltzaGlmdCArIGldID0gY2FycnkgKyBiYXNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FycnkgPSAwO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyW3NoaWZ0ICsgaV0gPSBjYXJyeTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnJ5ID0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBib3Jyb3cgKz0gY2Fycnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbc2hpZnRdID0gcXVvdGllbnREaWdpdDtcbiAgICAgICAgfVxuICAgICAgICAvLyBkZW5vcm1hbGl6YXRpb25cbiAgICAgICAgcmVtYWluZGVyID0gZGl2TW9kU21hbGwocmVtYWluZGVyLCBsYW1iZGEpWzBdO1xuICAgICAgICByZXR1cm4gW2FycmF5VG9TbWFsbChyZXN1bHQpLCBhcnJheVRvU21hbGwocmVtYWluZGVyKV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGl2TW9kMihhLCBiKSB7IC8vIEltcGxlbWVudGF0aW9uIGlkZWEgc2hhbWVsZXNzbHkgc3RvbGVuIGZyb20gU2lsZW50IE1hdHQncyBsaWJyYXJ5IGh0dHA6Ly9zaWxlbnRtYXR0LmNvbS9iaWdpbnRlZ2VyL1xuICAgICAgICAvLyBQZXJmb3JtcyBmYXN0ZXIgdGhhbiBkaXZNb2QxIG9uIGxhcmdlciBpbnB1dCBzaXplcy5cbiAgICAgICAgdmFyIGFfbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgYl9sID0gYi5sZW5ndGgsXG4gICAgICAgICAgICByZXN1bHQgPSBbXSxcbiAgICAgICAgICAgIHBhcnQgPSBbXSxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgZ3Vlc3MsIHhsZW4sIGhpZ2h4LCBoaWdoeSwgY2hlY2s7XG4gICAgICAgIHdoaWxlIChhX2wpIHtcbiAgICAgICAgICAgIHBhcnQudW5zaGlmdChhWy0tYV9sXSk7XG4gICAgICAgICAgICB0cmltKHBhcnQpO1xuICAgICAgICAgICAgaWYgKGNvbXBhcmVBYnMocGFydCwgYikgPCAwKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goMCk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4bGVuID0gcGFydC5sZW5ndGg7XG4gICAgICAgICAgICBoaWdoeCA9IHBhcnRbeGxlbiAtIDFdICogYmFzZSArIHBhcnRbeGxlbiAtIDJdO1xuICAgICAgICAgICAgaGlnaHkgPSBiW2JfbCAtIDFdICogYmFzZSArIGJbYl9sIC0gMl07XG4gICAgICAgICAgICBpZiAoeGxlbiA+IGJfbCkge1xuICAgICAgICAgICAgICAgIGhpZ2h4ID0gKGhpZ2h4ICsgMSkgKiBiYXNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3Vlc3MgPSBNYXRoLmNlaWwoaGlnaHggLyBoaWdoeSk7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgY2hlY2sgPSBtdWx0aXBseVNtYWxsKGIsIGd1ZXNzKTtcbiAgICAgICAgICAgICAgICBpZiAoY29tcGFyZUFicyhjaGVjaywgcGFydCkgPD0gMCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgZ3Vlc3MtLTtcbiAgICAgICAgICAgIH0gd2hpbGUgKGd1ZXNzKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGd1ZXNzKTtcbiAgICAgICAgICAgIHBhcnQgPSBzdWJ0cmFjdChwYXJ0LCBjaGVjayk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0LnJldmVyc2UoKTtcbiAgICAgICAgcmV0dXJuIFthcnJheVRvU21hbGwocmVzdWx0KSwgYXJyYXlUb1NtYWxsKHBhcnQpXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkaXZNb2RTbWFsbCh2YWx1ZSwgbGFtYmRhKSB7XG4gICAgICAgIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGgsXG4gICAgICAgICAgICBxdW90aWVudCA9IGNyZWF0ZUFycmF5KGxlbmd0aCksXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIGksIHEsIHJlbWFpbmRlciwgZGl2aXNvcjtcbiAgICAgICAgcmVtYWluZGVyID0gMDtcbiAgICAgICAgZm9yIChpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgICAgIGRpdmlzb3IgPSByZW1haW5kZXIgKiBiYXNlICsgdmFsdWVbaV07XG4gICAgICAgICAgICBxID0gdHJ1bmNhdGUoZGl2aXNvciAvIGxhbWJkYSk7XG4gICAgICAgICAgICByZW1haW5kZXIgPSBkaXZpc29yIC0gcSAqIGxhbWJkYTtcbiAgICAgICAgICAgIHF1b3RpZW50W2ldID0gcSB8IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtxdW90aWVudCwgcmVtYWluZGVyIHwgMF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGl2TW9kQW55KHNlbGYsIHYpIHtcbiAgICAgICAgdmFyIHZhbHVlLCBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgaWYgKHN1cHBvcnRzTmF0aXZlQmlnSW50KSB7XG4gICAgICAgICAgICByZXR1cm4gW25ldyBOYXRpdmVCaWdJbnQoc2VsZi52YWx1ZSAvIG4udmFsdWUpLCBuZXcgTmF0aXZlQmlnSW50KHNlbGYudmFsdWUgJSBuLnZhbHVlKV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGEgPSBzZWxmLnZhbHVlLCBiID0gbi52YWx1ZTtcbiAgICAgICAgdmFyIHF1b3RpZW50O1xuICAgICAgICBpZiAoYiA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGRpdmlkZSBieSB6ZXJvXCIpO1xuICAgICAgICBpZiAoc2VsZi5pc1NtYWxsKSB7XG4gICAgICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtuZXcgU21hbGxJbnRlZ2VyKHRydW5jYXRlKGEgLyBiKSksIG5ldyBTbWFsbEludGVnZXIoYSAlIGIpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbSW50ZWdlclswXSwgc2VsZl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgaWYgKGIgPT09IDEpIHJldHVybiBbc2VsZiwgSW50ZWdlclswXV07XG4gICAgICAgICAgICBpZiAoYiA9PSAtMSkgcmV0dXJuIFtzZWxmLm5lZ2F0ZSgpLCBJbnRlZ2VyWzBdXTtcbiAgICAgICAgICAgIHZhciBhYnMgPSBNYXRoLmFicyhiKTtcbiAgICAgICAgICAgIGlmIChhYnMgPCBCQVNFKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBkaXZNb2RTbWFsbChhLCBhYnMpO1xuICAgICAgICAgICAgICAgIHF1b3RpZW50ID0gYXJyYXlUb1NtYWxsKHZhbHVlWzBdKTtcbiAgICAgICAgICAgICAgICB2YXIgcmVtYWluZGVyID0gdmFsdWVbMV07XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuc2lnbikgcmVtYWluZGVyID0gLXJlbWFpbmRlcjtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHF1b3RpZW50ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLnNpZ24gIT09IG4uc2lnbikgcXVvdGllbnQgPSAtcXVvdGllbnQ7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbbmV3IFNtYWxsSW50ZWdlcihxdW90aWVudCksIG5ldyBTbWFsbEludGVnZXIocmVtYWluZGVyKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBbbmV3IEJpZ0ludGVnZXIocXVvdGllbnQsIHNlbGYuc2lnbiAhPT0gbi5zaWduKSwgbmV3IFNtYWxsSW50ZWdlcihyZW1haW5kZXIpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGIgPSBzbWFsbFRvQXJyYXkoYWJzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29tcGFyaXNvbiA9IGNvbXBhcmVBYnMoYSwgYik7XG4gICAgICAgIGlmIChjb21wYXJpc29uID09PSAtMSkgcmV0dXJuIFtJbnRlZ2VyWzBdLCBzZWxmXTtcbiAgICAgICAgaWYgKGNvbXBhcmlzb24gPT09IDApIHJldHVybiBbSW50ZWdlcltzZWxmLnNpZ24gPT09IG4uc2lnbiA/IDEgOiAtMV0sIEludGVnZXJbMF1dO1xuXG4gICAgICAgIC8vIGRpdk1vZDEgaXMgZmFzdGVyIG9uIHNtYWxsZXIgaW5wdXQgc2l6ZXNcbiAgICAgICAgaWYgKGEubGVuZ3RoICsgYi5sZW5ndGggPD0gMjAwKVxuICAgICAgICAgICAgdmFsdWUgPSBkaXZNb2QxKGEsIGIpO1xuICAgICAgICBlbHNlIHZhbHVlID0gZGl2TW9kMihhLCBiKTtcblxuICAgICAgICBxdW90aWVudCA9IHZhbHVlWzBdO1xuICAgICAgICB2YXIgcVNpZ24gPSBzZWxmLnNpZ24gIT09IG4uc2lnbixcbiAgICAgICAgICAgIG1vZCA9IHZhbHVlWzFdLFxuICAgICAgICAgICAgbVNpZ24gPSBzZWxmLnNpZ247XG4gICAgICAgIGlmICh0eXBlb2YgcXVvdGllbnQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGlmIChxU2lnbikgcXVvdGllbnQgPSAtcXVvdGllbnQ7XG4gICAgICAgICAgICBxdW90aWVudCA9IG5ldyBTbWFsbEludGVnZXIocXVvdGllbnQpO1xuICAgICAgICB9IGVsc2UgcXVvdGllbnQgPSBuZXcgQmlnSW50ZWdlcihxdW90aWVudCwgcVNpZ24pO1xuICAgICAgICBpZiAodHlwZW9mIG1vZCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgaWYgKG1TaWduKSBtb2QgPSAtbW9kO1xuICAgICAgICAgICAgbW9kID0gbmV3IFNtYWxsSW50ZWdlcihtb2QpO1xuICAgICAgICB9IGVsc2UgbW9kID0gbmV3IEJpZ0ludGVnZXIobW9kLCBtU2lnbik7XG4gICAgICAgIHJldHVybiBbcXVvdGllbnQsIG1vZF07XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2bW9kID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGRpdk1vZEFueSh0aGlzLCB2KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHF1b3RpZW50OiByZXN1bHRbMF0sXG4gICAgICAgICAgICByZW1haW5kZXI6IHJlc3VsdFsxXVxuICAgICAgICB9O1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5kaXZtb2QgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmRpdm1vZCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmRpdm1vZDtcblxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIGRpdk1vZEFueSh0aGlzLCB2KVswXTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUub3ZlciA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAvIHBhcnNlVmFsdWUodikudmFsdWUpO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5vdmVyID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5kaXZpZGUgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5vdmVyID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2aWRlO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIGRpdk1vZEFueSh0aGlzLCB2KVsxXTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubW9kID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5yZW1haW5kZXIgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlICUgcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnJlbWFpbmRlciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubW9kID0gQmlnSW50ZWdlci5wcm90b3R5cGUucmVtYWluZGVyID0gQmlnSW50ZWdlci5wcm90b3R5cGUubW9kO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxuICAgICAgICAgICAgYSA9IHRoaXMudmFsdWUsXG4gICAgICAgICAgICBiID0gbi52YWx1ZSxcbiAgICAgICAgICAgIHZhbHVlLCB4LCB5O1xuICAgICAgICBpZiAoYiA9PT0gMCkgcmV0dXJuIEludGVnZXJbMV07XG4gICAgICAgIGlmIChhID09PSAwKSByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgaWYgKGEgPT09IDEpIHJldHVybiBJbnRlZ2VyWzFdO1xuICAgICAgICBpZiAoYSA9PT0gLTEpIHJldHVybiBuLmlzRXZlbigpID8gSW50ZWdlclsxXSA6IEludGVnZXJbLTFdO1xuICAgICAgICBpZiAobi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW4uaXNTbWFsbCkgdGhyb3cgbmV3IEVycm9yKFwiVGhlIGV4cG9uZW50IFwiICsgbi50b1N0cmluZygpICsgXCIgaXMgdG9vIGxhcmdlLlwiKTtcbiAgICAgICAgaWYgKHRoaXMuaXNTbWFsbCkge1xuICAgICAgICAgICAgaWYgKGlzUHJlY2lzZSh2YWx1ZSA9IE1hdGgucG93KGEsIGIpKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih0cnVuY2F0ZSh2YWx1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIHggPSB0aGlzO1xuICAgICAgICB5ID0gSW50ZWdlclsxXTtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGlmIChiICYgMSA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHkgPSB5LnRpbWVzKHgpO1xuICAgICAgICAgICAgICAgIC0tYjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiID09PSAwKSBicmVhaztcbiAgICAgICAgICAgIGIgLz0gMjtcbiAgICAgICAgICAgIHggPSB4LnNxdWFyZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB5O1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5wb3cgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5wb3c7XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlLCBiID0gbi52YWx1ZTtcbiAgICAgICAgdmFyIF8wID0gQmlnSW50KDApLCBfMSA9IEJpZ0ludCgxKSwgXzIgPSBCaWdJbnQoMik7XG4gICAgICAgIGlmIChiID09PSBfMCkgcmV0dXJuIEludGVnZXJbMV07XG4gICAgICAgIGlmIChhID09PSBfMCkgcmV0dXJuIEludGVnZXJbMF07XG4gICAgICAgIGlmIChhID09PSBfMSkgcmV0dXJuIEludGVnZXJbMV07XG4gICAgICAgIGlmIChhID09PSBCaWdJbnQoLTEpKSByZXR1cm4gbi5pc0V2ZW4oKSA/IEludGVnZXJbMV0gOiBJbnRlZ2VyWy0xXTtcbiAgICAgICAgaWYgKG4uaXNOZWdhdGl2ZSgpKSByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludChfMCk7XG4gICAgICAgIHZhciB4ID0gdGhpcztcbiAgICAgICAgdmFyIHkgPSBJbnRlZ2VyWzFdO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgaWYgKChiICYgXzEpID09PSBfMSkge1xuICAgICAgICAgICAgICAgIHkgPSB5LnRpbWVzKHgpO1xuICAgICAgICAgICAgICAgIC0tYjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiID09PSBfMCkgYnJlYWs7XG4gICAgICAgICAgICBiIC89IF8yO1xuICAgICAgICAgICAgeCA9IHguc3F1YXJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubW9kUG93ID0gZnVuY3Rpb24gKGV4cCwgbW9kKSB7XG4gICAgICAgIGV4cCA9IHBhcnNlVmFsdWUoZXhwKTtcbiAgICAgICAgbW9kID0gcGFyc2VWYWx1ZShtb2QpO1xuICAgICAgICBpZiAobW9kLmlzWmVybygpKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgdGFrZSBtb2RQb3cgd2l0aCBtb2R1bHVzIDBcIik7XG4gICAgICAgIHZhciByID0gSW50ZWdlclsxXSxcbiAgICAgICAgICAgIGJhc2UgPSB0aGlzLm1vZChtb2QpO1xuICAgICAgICBpZiAoZXhwLmlzTmVnYXRpdmUoKSkge1xuICAgICAgICAgICAgZXhwID0gZXhwLm11bHRpcGx5KEludGVnZXJbLTFdKTtcbiAgICAgICAgICAgIGJhc2UgPSBiYXNlLm1vZEludihtb2QpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChleHAuaXNQb3NpdGl2ZSgpKSB7XG4gICAgICAgICAgICBpZiAoYmFzZS5pc1plcm8oKSkgcmV0dXJuIEludGVnZXJbMF07XG4gICAgICAgICAgICBpZiAoZXhwLmlzT2RkKCkpIHIgPSByLm11bHRpcGx5KGJhc2UpLm1vZChtb2QpO1xuICAgICAgICAgICAgZXhwID0gZXhwLmRpdmlkZSgyKTtcbiAgICAgICAgICAgIGJhc2UgPSBiYXNlLnNxdWFyZSgpLm1vZChtb2QpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5tb2RQb3cgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm1vZFBvdyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZFBvdztcblxuICAgIGZ1bmN0aW9uIGNvbXBhcmVBYnMoYSwgYikge1xuICAgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5sZW5ndGggPiBiLmxlbmd0aCA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gYS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKGFbaV0gIT09IGJbaV0pIHJldHVybiBhW2ldID4gYltpXSA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlQWJzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxuICAgICAgICAgICAgYSA9IHRoaXMudmFsdWUsXG4gICAgICAgICAgICBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkgcmV0dXJuIDE7XG4gICAgICAgIHJldHVybiBjb21wYXJlQWJzKGEsIGIpO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlQWJzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxuICAgICAgICAgICAgYSA9IE1hdGguYWJzKHRoaXMudmFsdWUpLFxuICAgICAgICAgICAgYiA9IG4udmFsdWU7XG4gICAgICAgIGlmIChuLmlzU21hbGwpIHtcbiAgICAgICAgICAgIGIgPSBNYXRoLmFicyhiKTtcbiAgICAgICAgICAgIHJldHVybiBhID09PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuY29tcGFyZUFicyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZTtcbiAgICAgICAgdmFyIGIgPSBwYXJzZVZhbHVlKHYpLnZhbHVlO1xuICAgICAgICBhID0gYSA+PSAwID8gYSA6IC1hO1xuICAgICAgICBiID0gYiA+PSAwID8gYiA6IC1iO1xuICAgICAgICByZXR1cm4gYSA9PT0gYiA/IDAgOiBhID4gYiA/IDEgOiAtMTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgLy8gU2VlIGRpc2N1c3Npb24gYWJvdXQgY29tcGFyaXNvbiB3aXRoIEluZmluaXR5OlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcGV0ZXJvbHNvbi9CaWdJbnRlZ2VyLmpzL2lzc3Vlcy82MVxuICAgICAgICBpZiAodiA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodiA9PT0gLUluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KSxcbiAgICAgICAgICAgIGEgPSB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgYiA9IG4udmFsdWU7XG4gICAgICAgIGlmICh0aGlzLnNpZ24gIT09IG4uc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIG4uc2lnbiA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaWduID8gLTEgOiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21wYXJlQWJzKGEsIGIpICogKHRoaXMuc2lnbiA/IC0xIDogMSk7XG4gICAgfTtcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlVG8gPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlO1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgaWYgKHYgPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHYgPT09IC1JbmZpbml0eSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodiksXG4gICAgICAgICAgICBhID0gdGhpcy52YWx1ZSxcbiAgICAgICAgICAgIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gYSA9PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhIDwgMCAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gYSA8IDAgPyAtMSA6IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGEgPCAwID8gMSA6IC0xO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlVG8gPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmNvbXBhcmU7XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAodikge1xuICAgICAgICBpZiAodiA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodiA9PT0gLUluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWU7XG4gICAgICAgIHZhciBiID0gcGFyc2VWYWx1ZSh2KS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIGEgPT09IGIgPyAwIDogYSA+IGIgPyAxIDogLTE7XG4gICAgfVxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuY29tcGFyZVRvID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5jb21wYXJlO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2KSA9PT0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZXEgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmVxdWFscyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZXEgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmVxdWFscyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmVxID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZXF1YWxzO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubm90RXF1YWxzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2KSAhPT0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubmVxID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5ub3RFcXVhbHMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm5lcSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubm90RXF1YWxzID0gQmlnSW50ZWdlci5wcm90b3R5cGUubmVxID0gQmlnSW50ZWdlci5wcm90b3R5cGUubm90RXF1YWxzO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZ3JlYXRlciA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPiAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5ndCA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZ3JlYXRlciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZ3QgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmdyZWF0ZXIgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ndCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmdyZWF0ZXI7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXIgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlKHYpIDwgMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubHQgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmxlc3NlciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubHQgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmxlc3NlciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmx0ID0gQmlnSW50ZWdlci5wcm90b3R5cGUubGVzc2VyO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZ3JlYXRlck9yRXF1YWxzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2KSA+PSAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5nZXEgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmdyZWF0ZXJPckVxdWFscyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZ2VxID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyT3JFcXVhbHMgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5nZXEgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyT3JFcXVhbHM7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXJPckVxdWFscyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPD0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubGVxID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5sZXNzZXJPckVxdWFscyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubGVxID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXJPckVxdWFscyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmxlcSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmxlc3Nlck9yRXF1YWxzO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWVbMF0gJiAxKSA9PT0gMDtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWUgJiAxKSA9PT0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWUgJiBCaWdJbnQoMSkpID09PSBCaWdJbnQoMCk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy52YWx1ZVswXSAmIDEpID09PSAxO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlICYgMSkgPT09IDE7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzT2RkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWUgJiBCaWdJbnQoMSkpID09PSBCaWdJbnQoMSk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQb3NpdGl2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnNpZ247XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzUG9zaXRpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID4gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNQb3NpdGl2ZSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNQb3NpdGl2ZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzTmVnYXRpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpZ247XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzTmVnYXRpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlIDwgMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNOZWdhdGl2ZSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNOZWdhdGl2ZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzVW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc1VuaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyh0aGlzLnZhbHVlKSA9PT0gMTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNVbml0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hYnMoKS52YWx1ZSA9PT0gQmlnSW50KDEpO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSBCaWdJbnQoMCk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNEaXZpc2libGVCeSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgaWYgKG4uaXNaZXJvKCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKG4uaXNVbml0KCkpIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAobi5jb21wYXJlQWJzKDIpID09PSAwKSByZXR1cm4gdGhpcy5pc0V2ZW4oKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kKG4pLmlzWmVybygpO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc0RpdmlzaWJsZUJ5ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc0RpdmlzaWJsZUJ5ID0gQmlnSW50ZWdlci5wcm90b3R5cGUuaXNEaXZpc2libGVCeTtcblxuICAgIGZ1bmN0aW9uIGlzQmFzaWNQcmltZSh2KSB7XG4gICAgICAgIHZhciBuID0gdi5hYnMoKTtcbiAgICAgICAgaWYgKG4uaXNVbml0KCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKG4uZXF1YWxzKDIpIHx8IG4uZXF1YWxzKDMpIHx8IG4uZXF1YWxzKDUpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKG4uaXNFdmVuKCkgfHwgbi5pc0RpdmlzaWJsZUJ5KDMpIHx8IG4uaXNEaXZpc2libGVCeSg1KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAobi5sZXNzZXIoNDkpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgLy8gd2UgZG9uJ3Qga25vdyBpZiBpdCdzIHByaW1lOiBsZXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBmaWd1cmUgaXQgb3V0XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWlsbGVyUmFiaW5UZXN0KG4sIGEpIHtcbiAgICAgICAgdmFyIG5QcmV2ID0gbi5wcmV2KCksXG4gICAgICAgICAgICBiID0gblByZXYsXG4gICAgICAgICAgICByID0gMCxcbiAgICAgICAgICAgIGQsIHQsIGksIHg7XG4gICAgICAgIHdoaWxlIChiLmlzRXZlbigpKSBiID0gYi5kaXZpZGUoMiksIHIrKztcbiAgICAgICAgbmV4dDogZm9yIChpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChuLmxlc3NlcihhW2ldKSkgY29udGludWU7XG4gICAgICAgICAgICB4ID0gYmlnSW50KGFbaV0pLm1vZFBvdyhiLCBuKTtcbiAgICAgICAgICAgIGlmICh4LmlzVW5pdCgpIHx8IHguZXF1YWxzKG5QcmV2KSkgY29udGludWU7XG4gICAgICAgICAgICBmb3IgKGQgPSByIC0gMTsgZCAhPSAwOyBkLS0pIHtcbiAgICAgICAgICAgICAgICB4ID0geC5zcXVhcmUoKS5tb2Qobik7XG4gICAgICAgICAgICAgICAgaWYgKHguaXNVbml0KCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoeC5lcXVhbHMoblByZXYpKSBjb250aW51ZSBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIFNldCBcInN0cmljdFwiIHRvIHRydWUgdG8gZm9yY2UgR1JILXN1cHBvcnRlZCBsb3dlciBib3VuZCBvZiAyKmxvZyhOKV4yXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcmltZSA9IGZ1bmN0aW9uIChzdHJpY3QpIHtcbiAgICAgICAgdmFyIGlzUHJpbWUgPSBpc0Jhc2ljUHJpbWUodGhpcyk7XG4gICAgICAgIGlmIChpc1ByaW1lICE9PSB1bmRlZmluZWQpIHJldHVybiBpc1ByaW1lO1xuICAgICAgICB2YXIgbiA9IHRoaXMuYWJzKCk7XG4gICAgICAgIHZhciBiaXRzID0gbi5iaXRMZW5ndGgoKTtcbiAgICAgICAgaWYgKGJpdHMgPD0gNjQpXG4gICAgICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIFsyLCAzLCA1LCA3LCAxMSwgMTMsIDE3LCAxOSwgMjMsIDI5LCAzMSwgMzddKTtcbiAgICAgICAgdmFyIGxvZ04gPSBNYXRoLmxvZygyKSAqIGJpdHMudG9KU051bWJlcigpO1xuICAgICAgICB2YXIgdCA9IE1hdGguY2VpbCgoc3RyaWN0ID09PSB0cnVlKSA/ICgyICogTWF0aC5wb3cobG9nTiwgMikpIDogbG9nTik7XG4gICAgICAgIGZvciAodmFyIGEgPSBbXSwgaSA9IDA7IGkgPCB0OyBpKyspIHtcbiAgICAgICAgICAgIGEucHVzaChiaWdJbnQoaSArIDIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIGEpO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc1ByaW1lID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc1ByaW1lID0gQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcmltZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzUHJvYmFibGVQcmltZSA9IGZ1bmN0aW9uIChpdGVyYXRpb25zKSB7XG4gICAgICAgIHZhciBpc1ByaW1lID0gaXNCYXNpY1ByaW1lKHRoaXMpO1xuICAgICAgICBpZiAoaXNQcmltZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gaXNQcmltZTtcbiAgICAgICAgdmFyIG4gPSB0aGlzLmFicygpO1xuICAgICAgICB2YXIgdCA9IGl0ZXJhdGlvbnMgPT09IHVuZGVmaW5lZCA/IDUgOiBpdGVyYXRpb25zO1xuICAgICAgICBmb3IgKHZhciBhID0gW10sIGkgPSAwOyBpIDwgdDsgaSsrKSB7XG4gICAgICAgICAgICBhLnB1c2goYmlnSW50LnJhbmRCZXR3ZWVuKDIsIG4ubWludXMoMikpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIGEpO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc1Byb2JhYmxlUHJpbWUgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzUHJvYmFibGVQcmltZSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmlzUHJvYmFibGVQcmltZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZEludiA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHZhciB0ID0gYmlnSW50Lnplcm8sIG5ld1QgPSBiaWdJbnQub25lLCByID0gcGFyc2VWYWx1ZShuKSwgbmV3UiA9IHRoaXMuYWJzKCksIHEsIGxhc3RULCBsYXN0UjtcbiAgICAgICAgd2hpbGUgKCFuZXdSLmlzWmVybygpKSB7XG4gICAgICAgICAgICBxID0gci5kaXZpZGUobmV3Uik7XG4gICAgICAgICAgICBsYXN0VCA9IHQ7XG4gICAgICAgICAgICBsYXN0UiA9IHI7XG4gICAgICAgICAgICB0ID0gbmV3VDtcbiAgICAgICAgICAgIHIgPSBuZXdSO1xuICAgICAgICAgICAgbmV3VCA9IGxhc3RULnN1YnRyYWN0KHEubXVsdGlwbHkobmV3VCkpO1xuICAgICAgICAgICAgbmV3UiA9IGxhc3RSLnN1YnRyYWN0KHEubXVsdGlwbHkobmV3UikpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghci5pc1VuaXQoKSkgdGhyb3cgbmV3IEVycm9yKHRoaXMudG9TdHJpbmcoKSArIFwiIGFuZCBcIiArIG4udG9TdHJpbmcoKSArIFwiIGFyZSBub3QgY28tcHJpbWVcIik7XG4gICAgICAgIGlmICh0LmNvbXBhcmUoMCkgPT09IC0xKSB7XG4gICAgICAgICAgICB0ID0gdC5hZGQobik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdC5uZWdhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5tb2RJbnYgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm1vZEludiA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZEludjtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmICh0aGlzLnNpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiBzdWJ0cmFjdFNtYWxsKHZhbHVlLCAxLCB0aGlzLnNpZ24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihhZGRTbWFsbCh2YWx1ZSwgMSksIHRoaXMuc2lnbik7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSArIDEgPCBNQVhfSU5UKSByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih2YWx1ZSArIDEpO1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoTUFYX0lOVF9BUlIsIGZhbHNlKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSArIEJpZ0ludCgxKSk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUucHJldiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGFkZFNtYWxsKHZhbHVlLCAxKSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1YnRyYWN0U21hbGwodmFsdWUsIDEsIHRoaXMuc2lnbik7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnByZXYgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAtIDEgPiAtTUFYX0lOVCkgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodmFsdWUgLSAxKTtcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKE1BWF9JTlRfQVJSLCB0cnVlKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUucHJldiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAtIEJpZ0ludCgxKSk7XG4gICAgfVxuXG4gICAgdmFyIHBvd2Vyc09mVHdvID0gWzFdO1xuICAgIHdoaWxlICgyICogcG93ZXJzT2ZUd29bcG93ZXJzT2ZUd28ubGVuZ3RoIC0gMV0gPD0gQkFTRSkgcG93ZXJzT2ZUd28ucHVzaCgyICogcG93ZXJzT2ZUd29bcG93ZXJzT2ZUd28ubGVuZ3RoIC0gMV0pO1xuICAgIHZhciBwb3dlcnMyTGVuZ3RoID0gcG93ZXJzT2ZUd28ubGVuZ3RoLCBoaWdoZXN0UG93ZXIyID0gcG93ZXJzT2ZUd29bcG93ZXJzMkxlbmd0aCAtIDFdO1xuXG4gICAgZnVuY3Rpb24gc2hpZnRfaXNTbWFsbChuKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyhuKSA8PSBCQVNFO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0TGVmdCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KS50b0pTTnVtYmVyKCk7XG4gICAgICAgIGlmICghc2hpZnRfaXNTbWFsbChuKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFN0cmluZyhuKSArIFwiIGlzIHRvbyBsYXJnZSBmb3Igc2hpZnRpbmcuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuIDwgMCkgcmV0dXJuIHRoaXMuc2hpZnRSaWdodCgtbik7XG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzO1xuICAgICAgICBpZiAocmVzdWx0LmlzWmVybygpKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICB3aGlsZSAobiA+PSBwb3dlcnMyTGVuZ3RoKSB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQubXVsdGlwbHkoaGlnaGVzdFBvd2VyMik7XG4gICAgICAgICAgICBuIC09IHBvd2VyczJMZW5ndGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQubXVsdGlwbHkocG93ZXJzT2ZUd29bbl0pO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5zaGlmdExlZnQgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnNoaWZ0TGVmdCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0TGVmdDtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0UmlnaHQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgcmVtUXVvO1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodikudG9KU051bWJlcigpO1xuICAgICAgICBpZiAoIXNoaWZ0X2lzU21hbGwobikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihTdHJpbmcobikgKyBcIiBpcyB0b28gbGFyZ2UgZm9yIHNoaWZ0aW5nLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobiA8IDApIHJldHVybiB0aGlzLnNoaWZ0TGVmdCgtbik7XG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzO1xuICAgICAgICB3aGlsZSAobiA+PSBwb3dlcnMyTGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmlzWmVybygpIHx8IChyZXN1bHQuaXNOZWdhdGl2ZSgpICYmIHJlc3VsdC5pc1VuaXQoKSkpIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICByZW1RdW8gPSBkaXZNb2RBbnkocmVzdWx0LCBoaWdoZXN0UG93ZXIyKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlbVF1b1sxXS5pc05lZ2F0aXZlKCkgPyByZW1RdW9bMF0ucHJldigpIDogcmVtUXVvWzBdO1xuICAgICAgICAgICAgbiAtPSBwb3dlcnMyTGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICByZW1RdW8gPSBkaXZNb2RBbnkocmVzdWx0LCBwb3dlcnNPZlR3b1tuXSk7XG4gICAgICAgIHJldHVybiByZW1RdW9bMV0uaXNOZWdhdGl2ZSgpID8gcmVtUXVvWzBdLnByZXYoKSA6IHJlbVF1b1swXTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc2hpZnRSaWdodCA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuc2hpZnRSaWdodCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0UmlnaHQ7XG5cbiAgICBmdW5jdGlvbiBiaXR3aXNlKHgsIHksIGZuKSB7XG4gICAgICAgIHkgPSBwYXJzZVZhbHVlKHkpO1xuICAgICAgICB2YXIgeFNpZ24gPSB4LmlzTmVnYXRpdmUoKSwgeVNpZ24gPSB5LmlzTmVnYXRpdmUoKTtcbiAgICAgICAgdmFyIHhSZW0gPSB4U2lnbiA/IHgubm90KCkgOiB4LFxuICAgICAgICAgICAgeVJlbSA9IHlTaWduID8geS5ub3QoKSA6IHk7XG4gICAgICAgIHZhciB4RGlnaXQgPSAwLCB5RGlnaXQgPSAwO1xuICAgICAgICB2YXIgeERpdk1vZCA9IG51bGwsIHlEaXZNb2QgPSBudWxsO1xuICAgICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICAgIHdoaWxlICgheFJlbS5pc1plcm8oKSB8fCAheVJlbS5pc1plcm8oKSkge1xuICAgICAgICAgICAgeERpdk1vZCA9IGRpdk1vZEFueSh4UmVtLCBoaWdoZXN0UG93ZXIyKTtcbiAgICAgICAgICAgIHhEaWdpdCA9IHhEaXZNb2RbMV0udG9KU051bWJlcigpO1xuICAgICAgICAgICAgaWYgKHhTaWduKSB7XG4gICAgICAgICAgICAgICAgeERpZ2l0ID0gaGlnaGVzdFBvd2VyMiAtIDEgLSB4RGlnaXQ7IC8vIHR3bydzIGNvbXBsZW1lbnQgZm9yIG5lZ2F0aXZlIG51bWJlcnNcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgeURpdk1vZCA9IGRpdk1vZEFueSh5UmVtLCBoaWdoZXN0UG93ZXIyKTtcbiAgICAgICAgICAgIHlEaWdpdCA9IHlEaXZNb2RbMV0udG9KU051bWJlcigpO1xuICAgICAgICAgICAgaWYgKHlTaWduKSB7XG4gICAgICAgICAgICAgICAgeURpZ2l0ID0gaGlnaGVzdFBvd2VyMiAtIDEgLSB5RGlnaXQ7IC8vIHR3bydzIGNvbXBsZW1lbnQgZm9yIG5lZ2F0aXZlIG51bWJlcnNcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgeFJlbSA9IHhEaXZNb2RbMF07XG4gICAgICAgICAgICB5UmVtID0geURpdk1vZFswXTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZuKHhEaWdpdCwgeURpZ2l0KSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN1bSA9IGZuKHhTaWduID8gMSA6IDAsIHlTaWduID8gMSA6IDApICE9PSAwID8gYmlnSW50KC0xKSA6IGJpZ0ludCgwKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IHJlc3VsdC5sZW5ndGggLSAxOyBpID49IDA7IGkgLT0gMSkge1xuICAgICAgICAgICAgc3VtID0gc3VtLm11bHRpcGx5KGhpZ2hlc3RQb3dlcjIpLmFkZChiaWdJbnQocmVzdWx0W2ldKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1bTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ub3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5lZ2F0ZSgpLnByZXYoKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubm90ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5ub3QgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ub3Q7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gYml0d2lzZSh0aGlzLCBuLCBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSAmIGI7IH0pO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5hbmQgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmFuZCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmFuZDtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIGJpdHdpc2UodGhpcywgbiwgZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgfCBiOyB9KTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUub3IgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm9yID0gQmlnSW50ZWdlci5wcm90b3R5cGUub3I7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gYml0d2lzZSh0aGlzLCBuLCBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSBeIGI7IH0pO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS54b3IgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnhvciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnhvcjtcblxuICAgIHZhciBMT0JNQVNLX0kgPSAxIDw8IDMwLCBMT0JNQVNLX0JJID0gKEJBU0UgJiAtQkFTRSkgKiAoQkFTRSAmIC1CQVNFKSB8IExPQk1BU0tfSTtcbiAgICBmdW5jdGlvbiByb3VnaExPQihuKSB7IC8vIGdldCBsb3dlc3RPbmVCaXQgKHJvdWdoKVxuICAgICAgICAvLyBTbWFsbEludGVnZXI6IHJldHVybiBNaW4obG93ZXN0T25lQml0KG4pLCAxIDw8IDMwKVxuICAgICAgICAvLyBCaWdJbnRlZ2VyOiByZXR1cm4gTWluKGxvd2VzdE9uZUJpdChuKSwgMSA8PCAxNCkgW0JBU0U9MWU3XVxuICAgICAgICB2YXIgdiA9IG4udmFsdWUsXG4gICAgICAgICAgICB4ID0gdHlwZW9mIHYgPT09IFwibnVtYmVyXCIgPyB2IHwgTE9CTUFTS19JIDpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdiA9PT0gXCJiaWdpbnRcIiA/IHYgfCBCaWdJbnQoTE9CTUFTS19JKSA6XG4gICAgICAgICAgICAgICAgICAgIHZbMF0gKyB2WzFdICogQkFTRSB8IExPQk1BU0tfQkk7XG4gICAgICAgIHJldHVybiB4ICYgLXg7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW50ZWdlckxvZ2FyaXRobSh2YWx1ZSwgYmFzZSkge1xuICAgICAgICBpZiAoYmFzZS5jb21wYXJlVG8odmFsdWUpIDw9IDApIHtcbiAgICAgICAgICAgIHZhciB0bXAgPSBpbnRlZ2VyTG9nYXJpdGhtKHZhbHVlLCBiYXNlLnNxdWFyZShiYXNlKSk7XG4gICAgICAgICAgICB2YXIgcCA9IHRtcC5wO1xuICAgICAgICAgICAgdmFyIGUgPSB0bXAuZTtcbiAgICAgICAgICAgIHZhciB0ID0gcC5tdWx0aXBseShiYXNlKTtcbiAgICAgICAgICAgIHJldHVybiB0LmNvbXBhcmVUbyh2YWx1ZSkgPD0gMCA/IHsgcDogdCwgZTogZSAqIDIgKyAxIH0gOiB7IHA6IHAsIGU6IGUgKiAyIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcDogYmlnSW50KDEpLCBlOiAwIH07XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuYml0TGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbiA9IHRoaXM7XG4gICAgICAgIGlmIChuLmNvbXBhcmVUbyhiaWdJbnQoMCkpIDwgMCkge1xuICAgICAgICAgICAgbiA9IG4ubmVnYXRlKCkuc3VidHJhY3QoYmlnSW50KDEpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobi5jb21wYXJlVG8oYmlnSW50KDApKSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGJpZ0ludCgwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmlnSW50KGludGVnZXJMb2dhcml0aG0obiwgYmlnSW50KDIpKS5lKS5hZGQoYmlnSW50KDEpKTtcbiAgICB9XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5iaXRMZW5ndGggPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmJpdExlbmd0aCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmJpdExlbmd0aDtcblxuICAgIGZ1bmN0aW9uIG1heChhLCBiKSB7XG4gICAgICAgIGEgPSBwYXJzZVZhbHVlKGEpO1xuICAgICAgICBiID0gcGFyc2VWYWx1ZShiKTtcbiAgICAgICAgcmV0dXJuIGEuZ3JlYXRlcihiKSA/IGEgOiBiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtaW4oYSwgYikge1xuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKTtcbiAgICAgICAgYiA9IHBhcnNlVmFsdWUoYik7XG4gICAgICAgIHJldHVybiBhLmxlc3NlcihiKSA/IGEgOiBiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnY2QoYSwgYikge1xuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKS5hYnMoKTtcbiAgICAgICAgYiA9IHBhcnNlVmFsdWUoYikuYWJzKCk7XG4gICAgICAgIGlmIChhLmVxdWFscyhiKSkgcmV0dXJuIGE7XG4gICAgICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYjtcbiAgICAgICAgaWYgKGIuaXNaZXJvKCkpIHJldHVybiBhO1xuICAgICAgICB2YXIgYyA9IEludGVnZXJbMV0sIGQsIHQ7XG4gICAgICAgIHdoaWxlIChhLmlzRXZlbigpICYmIGIuaXNFdmVuKCkpIHtcbiAgICAgICAgICAgIGQgPSBtaW4ocm91Z2hMT0IoYSksIHJvdWdoTE9CKGIpKTtcbiAgICAgICAgICAgIGEgPSBhLmRpdmlkZShkKTtcbiAgICAgICAgICAgIGIgPSBiLmRpdmlkZShkKTtcbiAgICAgICAgICAgIGMgPSBjLm11bHRpcGx5KGQpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChhLmlzRXZlbigpKSB7XG4gICAgICAgICAgICBhID0gYS5kaXZpZGUocm91Z2hMT0IoYSkpO1xuICAgICAgICB9XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIHdoaWxlIChiLmlzRXZlbigpKSB7XG4gICAgICAgICAgICAgICAgYiA9IGIuZGl2aWRlKHJvdWdoTE9CKGIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhLmdyZWF0ZXIoYikpIHtcbiAgICAgICAgICAgICAgICB0ID0gYjsgYiA9IGE7IGEgPSB0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYiA9IGIuc3VidHJhY3QoYSk7XG4gICAgICAgIH0gd2hpbGUgKCFiLmlzWmVybygpKTtcbiAgICAgICAgcmV0dXJuIGMuaXNVbml0KCkgPyBhIDogYS5tdWx0aXBseShjKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbGNtKGEsIGIpIHtcbiAgICAgICAgYSA9IHBhcnNlVmFsdWUoYSkuYWJzKCk7XG4gICAgICAgIGIgPSBwYXJzZVZhbHVlKGIpLmFicygpO1xuICAgICAgICByZXR1cm4gYS5kaXZpZGUoZ2NkKGEsIGIpKS5tdWx0aXBseShiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmFuZEJldHdlZW4oYSwgYikge1xuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKTtcbiAgICAgICAgYiA9IHBhcnNlVmFsdWUoYik7XG4gICAgICAgIHZhciBsb3cgPSBtaW4oYSwgYiksIGhpZ2ggPSBtYXgoYSwgYik7XG4gICAgICAgIHZhciByYW5nZSA9IGhpZ2guc3VidHJhY3QobG93KS5hZGQoMSk7XG4gICAgICAgIGlmIChyYW5nZS5pc1NtYWxsKSByZXR1cm4gbG93LmFkZChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiByYW5nZSkpO1xuICAgICAgICB2YXIgZGlnaXRzID0gdG9CYXNlKHJhbmdlLCBCQVNFKS52YWx1ZTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdLCByZXN0cmljdGVkID0gdHJ1ZTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaWdpdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciB0b3AgPSByZXN0cmljdGVkID8gZGlnaXRzW2ldIDogQkFTRTtcbiAgICAgICAgICAgIHZhciBkaWdpdCA9IHRydW5jYXRlKE1hdGgucmFuZG9tKCkgKiB0b3ApO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goZGlnaXQpO1xuICAgICAgICAgICAgaWYgKGRpZ2l0IDwgdG9wKSByZXN0cmljdGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvdy5hZGQoSW50ZWdlci5mcm9tQXJyYXkocmVzdWx0LCBCQVNFLCBmYWxzZSkpO1xuICAgIH1cblxuICAgIHZhciBwYXJzZUJhc2UgPSBmdW5jdGlvbiAodGV4dCwgYmFzZSwgYWxwaGFiZXQsIGNhc2VTZW5zaXRpdmUpIHtcbiAgICAgICAgYWxwaGFiZXQgPSBhbHBoYWJldCB8fCBERUZBVUxUX0FMUEhBQkVUO1xuICAgICAgICB0ZXh0ID0gU3RyaW5nKHRleHQpO1xuICAgICAgICBpZiAoIWNhc2VTZW5zaXRpdmUpIHtcbiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBhbHBoYWJldCA9IGFscGhhYmV0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxlbmd0aCA9IHRleHQubGVuZ3RoO1xuICAgICAgICB2YXIgaTtcbiAgICAgICAgdmFyIGFic0Jhc2UgPSBNYXRoLmFicyhiYXNlKTtcbiAgICAgICAgdmFyIGFscGhhYmV0VmFsdWVzID0ge307XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhbHBoYWJldC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYWxwaGFiZXRWYWx1ZXNbYWxwaGFiZXRbaV1dID0gaTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBjID0gdGV4dFtpXTtcbiAgICAgICAgICAgIGlmIChjID09PSBcIi1cIikgY29udGludWU7XG4gICAgICAgICAgICBpZiAoYyBpbiBhbHBoYWJldFZhbHVlcykge1xuICAgICAgICAgICAgICAgIGlmIChhbHBoYWJldFZhbHVlc1tjXSA+PSBhYnNCYXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjID09PSBcIjFcIiAmJiBhYnNCYXNlID09PSAxKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGMgKyBcIiBpcyBub3QgYSB2YWxpZCBkaWdpdCBpbiBiYXNlIFwiICsgYmFzZSArIFwiLlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYmFzZSA9IHBhcnNlVmFsdWUoYmFzZSk7XG4gICAgICAgIHZhciBkaWdpdHMgPSBbXTtcbiAgICAgICAgdmFyIGlzTmVnYXRpdmUgPSB0ZXh0WzBdID09PSBcIi1cIjtcbiAgICAgICAgZm9yIChpID0gaXNOZWdhdGl2ZSA/IDEgOiAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGMgPSB0ZXh0W2ldO1xuICAgICAgICAgICAgaWYgKGMgaW4gYWxwaGFiZXRWYWx1ZXMpIGRpZ2l0cy5wdXNoKHBhcnNlVmFsdWUoYWxwaGFiZXRWYWx1ZXNbY10pKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGMgPT09IFwiPFwiKSB7XG4gICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gaTtcbiAgICAgICAgICAgICAgICBkbyB7IGkrKzsgfSB3aGlsZSAodGV4dFtpXSAhPT0gXCI+XCIgJiYgaSA8IHRleHQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBkaWdpdHMucHVzaChwYXJzZVZhbHVlKHRleHQuc2xpY2Uoc3RhcnQgKyAxLCBpKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoYyArIFwiIGlzIG5vdCBhIHZhbGlkIGNoYXJhY3RlclwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VCYXNlRnJvbUFycmF5KGRpZ2l0cywgYmFzZSwgaXNOZWdhdGl2ZSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHBhcnNlQmFzZUZyb21BcnJheShkaWdpdHMsIGJhc2UsIGlzTmVnYXRpdmUpIHtcbiAgICAgICAgdmFyIHZhbCA9IEludGVnZXJbMF0sIHBvdyA9IEludGVnZXJbMV0sIGk7XG4gICAgICAgIGZvciAoaSA9IGRpZ2l0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgdmFsID0gdmFsLmFkZChkaWdpdHNbaV0udGltZXMocG93KSk7XG4gICAgICAgICAgICBwb3cgPSBwb3cudGltZXMoYmFzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzTmVnYXRpdmUgPyB2YWwubmVnYXRlKCkgOiB2YWw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RyaW5naWZ5KGRpZ2l0LCBhbHBoYWJldCkge1xuICAgICAgICBhbHBoYWJldCA9IGFscGhhYmV0IHx8IERFRkFVTFRfQUxQSEFCRVQ7XG4gICAgICAgIGlmIChkaWdpdCA8IGFscGhhYmV0Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGFscGhhYmV0W2RpZ2l0XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCI8XCIgKyBkaWdpdCArIFwiPlwiO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvQmFzZShuLCBiYXNlKSB7XG4gICAgICAgIGJhc2UgPSBiaWdJbnQoYmFzZSk7XG4gICAgICAgIGlmIChiYXNlLmlzWmVybygpKSB7XG4gICAgICAgICAgICBpZiAobi5pc1plcm8oKSkgcmV0dXJuIHsgdmFsdWU6IFswXSwgaXNOZWdhdGl2ZTogZmFsc2UgfTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBjb252ZXJ0IG5vbnplcm8gbnVtYmVycyB0byBiYXNlIDAuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiYXNlLmVxdWFscygtMSkpIHtcbiAgICAgICAgICAgIGlmIChuLmlzWmVybygpKSByZXR1cm4geyB2YWx1ZTogWzBdLCBpc05lZ2F0aXZlOiBmYWxzZSB9O1xuICAgICAgICAgICAgaWYgKG4uaXNOZWdhdGl2ZSgpKVxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBbXS5jb25jYXQuYXBwbHkoW10sIEFycmF5LmFwcGx5KG51bGwsIEFycmF5KC1uLnRvSlNOdW1iZXIoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKEFycmF5LnByb3RvdHlwZS52YWx1ZU9mLCBbMSwgMF0pXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGlzTmVnYXRpdmU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdmFyIGFyciA9IEFycmF5LmFwcGx5KG51bGwsIEFycmF5KG4udG9KU051bWJlcigpIC0gMSkpXG4gICAgICAgICAgICAgICAgLm1hcChBcnJheS5wcm90b3R5cGUudmFsdWVPZiwgWzAsIDFdKTtcbiAgICAgICAgICAgIGFyci51bnNoaWZ0KFsxXSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBbXS5jb25jYXQuYXBwbHkoW10sIGFyciksXG4gICAgICAgICAgICAgICAgaXNOZWdhdGl2ZTogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbmVnID0gZmFsc2U7XG4gICAgICAgIGlmIChuLmlzTmVnYXRpdmUoKSAmJiBiYXNlLmlzUG9zaXRpdmUoKSkge1xuICAgICAgICAgICAgbmVnID0gdHJ1ZTtcbiAgICAgICAgICAgIG4gPSBuLmFicygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiYXNlLmlzVW5pdCgpKSB7XG4gICAgICAgICAgICBpZiAobi5pc1plcm8oKSkgcmV0dXJuIHsgdmFsdWU6IFswXSwgaXNOZWdhdGl2ZTogZmFsc2UgfTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogQXJyYXkuYXBwbHkobnVsbCwgQXJyYXkobi50b0pTTnVtYmVyKCkpKVxuICAgICAgICAgICAgICAgICAgICAubWFwKE51bWJlci5wcm90b3R5cGUudmFsdWVPZiwgMSksXG4gICAgICAgICAgICAgICAgaXNOZWdhdGl2ZTogbmVnXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBvdXQgPSBbXTtcbiAgICAgICAgdmFyIGxlZnQgPSBuLCBkaXZtb2Q7XG4gICAgICAgIHdoaWxlIChsZWZ0LmlzTmVnYXRpdmUoKSB8fCBsZWZ0LmNvbXBhcmVBYnMoYmFzZSkgPj0gMCkge1xuICAgICAgICAgICAgZGl2bW9kID0gbGVmdC5kaXZtb2QoYmFzZSk7XG4gICAgICAgICAgICBsZWZ0ID0gZGl2bW9kLnF1b3RpZW50O1xuICAgICAgICAgICAgdmFyIGRpZ2l0ID0gZGl2bW9kLnJlbWFpbmRlcjtcbiAgICAgICAgICAgIGlmIChkaWdpdC5pc05lZ2F0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICBkaWdpdCA9IGJhc2UubWludXMoZGlnaXQpLmFicygpO1xuICAgICAgICAgICAgICAgIGxlZnQgPSBsZWZ0Lm5leHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dC5wdXNoKGRpZ2l0LnRvSlNOdW1iZXIoKSk7XG4gICAgICAgIH1cbiAgICAgICAgb3V0LnB1c2gobGVmdC50b0pTTnVtYmVyKCkpO1xuICAgICAgICByZXR1cm4geyB2YWx1ZTogb3V0LnJldmVyc2UoKSwgaXNOZWdhdGl2ZTogbmVnIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9CYXNlU3RyaW5nKG4sIGJhc2UsIGFscGhhYmV0KSB7XG4gICAgICAgIHZhciBhcnIgPSB0b0Jhc2UobiwgYmFzZSk7XG4gICAgICAgIHJldHVybiAoYXJyLmlzTmVnYXRpdmUgPyBcIi1cIiA6IFwiXCIpICsgYXJyLnZhbHVlLm1hcChmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ2lmeSh4LCBhbHBoYWJldCk7XG4gICAgICAgIH0pLmpvaW4oJycpO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAocmFkaXgpIHtcbiAgICAgICAgcmV0dXJuIHRvQmFzZSh0aGlzLCByYWRpeCk7XG4gICAgfTtcblxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIChyYWRpeCkge1xuICAgICAgICByZXR1cm4gdG9CYXNlKHRoaXMsIHJhZGl4KTtcbiAgICB9O1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKHJhZGl4KSB7XG4gICAgICAgIHJldHVybiB0b0Jhc2UodGhpcywgcmFkaXgpO1xuICAgIH07XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChyYWRpeCwgYWxwaGFiZXQpIHtcbiAgICAgICAgaWYgKHJhZGl4ID09PSB1bmRlZmluZWQpIHJhZGl4ID0gMTA7XG4gICAgICAgIGlmIChyYWRpeCAhPT0gMTApIHJldHVybiB0b0Jhc2VTdHJpbmcodGhpcywgcmFkaXgsIGFscGhhYmV0KTtcbiAgICAgICAgdmFyIHYgPSB0aGlzLnZhbHVlLCBsID0gdi5sZW5ndGgsIHN0ciA9IFN0cmluZyh2Wy0tbF0pLCB6ZXJvcyA9IFwiMDAwMDAwMFwiLCBkaWdpdDtcbiAgICAgICAgd2hpbGUgKC0tbCA+PSAwKSB7XG4gICAgICAgICAgICBkaWdpdCA9IFN0cmluZyh2W2xdKTtcbiAgICAgICAgICAgIHN0ciArPSB6ZXJvcy5zbGljZShkaWdpdC5sZW5ndGgpICsgZGlnaXQ7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNpZ24gPSB0aGlzLnNpZ24gPyBcIi1cIiA6IFwiXCI7XG4gICAgICAgIHJldHVybiBzaWduICsgc3RyO1xuICAgIH07XG5cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKHJhZGl4LCBhbHBoYWJldCkge1xuICAgICAgICBpZiAocmFkaXggPT09IHVuZGVmaW5lZCkgcmFkaXggPSAxMDtcbiAgICAgICAgaWYgKHJhZGl4ICE9IDEwKSByZXR1cm4gdG9CYXNlU3RyaW5nKHRoaXMsIHJhZGl4LCBhbHBoYWJldCk7XG4gICAgICAgIHJldHVybiBTdHJpbmcodGhpcy52YWx1ZSk7XG4gICAgfTtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudG9TdHJpbmcgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS50b0pTT04gPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS50b0pTT04gPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTsgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUudmFsdWVPZiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHRoaXMudG9TdHJpbmcoKSwgMTApO1xuICAgIH07XG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUudG9KU051bWJlciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnZhbHVlT2Y7XG5cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnZhbHVlT2YgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS50b0pTTnVtYmVyID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS52YWx1ZU9mO1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudmFsdWVPZiA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudG9KU051bWJlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHRoaXMudG9TdHJpbmcoKSwgMTApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlU3RyaW5nVmFsdWUodikge1xuICAgICAgICBpZiAoaXNQcmVjaXNlKCt2KSkge1xuICAgICAgICAgICAgdmFyIHggPSArdjtcbiAgICAgICAgICAgIGlmICh4ID09PSB0cnVuY2F0ZSh4KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwcG9ydHNOYXRpdmVCaWdJbnQgPyBuZXcgTmF0aXZlQmlnSW50KEJpZ0ludCh4KSkgOiBuZXcgU21hbGxJbnRlZ2VyKHgpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBpbnRlZ2VyOiBcIiArIHYpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzaWduID0gdlswXSA9PT0gXCItXCI7XG4gICAgICAgIGlmIChzaWduKSB2ID0gdi5zbGljZSgxKTtcbiAgICAgICAgdmFyIHNwbGl0ID0gdi5zcGxpdCgvZS9pKTtcbiAgICAgICAgaWYgKHNwbGl0Lmxlbmd0aCA+IDIpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW50ZWdlcjogXCIgKyBzcGxpdC5qb2luKFwiZVwiKSk7XG4gICAgICAgIGlmIChzcGxpdC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIHZhciBleHAgPSBzcGxpdFsxXTtcbiAgICAgICAgICAgIGlmIChleHBbMF0gPT09IFwiK1wiKSBleHAgPSBleHAuc2xpY2UoMSk7XG4gICAgICAgICAgICBleHAgPSArZXhwO1xuICAgICAgICAgICAgaWYgKGV4cCAhPT0gdHJ1bmNhdGUoZXhwKSB8fCAhaXNQcmVjaXNlKGV4cCkpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW50ZWdlcjogXCIgKyBleHAgKyBcIiBpcyBub3QgYSB2YWxpZCBleHBvbmVudC5cIik7XG4gICAgICAgICAgICB2YXIgdGV4dCA9IHNwbGl0WzBdO1xuICAgICAgICAgICAgdmFyIGRlY2ltYWxQbGFjZSA9IHRleHQuaW5kZXhPZihcIi5cIik7XG4gICAgICAgICAgICBpZiAoZGVjaW1hbFBsYWNlID49IDApIHtcbiAgICAgICAgICAgICAgICBleHAgLT0gdGV4dC5sZW5ndGggLSBkZWNpbWFsUGxhY2UgLSAxO1xuICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnNsaWNlKDAsIGRlY2ltYWxQbGFjZSkgKyB0ZXh0LnNsaWNlKGRlY2ltYWxQbGFjZSArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4cCA8IDApIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBpbmNsdWRlIG5lZ2F0aXZlIGV4cG9uZW50IHBhcnQgZm9yIGludGVnZXJzXCIpO1xuICAgICAgICAgICAgdGV4dCArPSAobmV3IEFycmF5KGV4cCArIDEpKS5qb2luKFwiMFwiKTtcbiAgICAgICAgICAgIHYgPSB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBpc1ZhbGlkID0gL14oWzAtOV1bMC05XSopJC8udGVzdCh2KTtcbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGludGVnZXI6IFwiICsgdik7XG4gICAgICAgIGlmIChzdXBwb3J0c05hdGl2ZUJpZ0ludCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQoQmlnSW50KHNpZ24gPyBcIi1cIiArIHYgOiB2KSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHIgPSBbXSwgbWF4ID0gdi5sZW5ndGgsIGwgPSBMT0dfQkFTRSwgbWluID0gbWF4IC0gbDtcbiAgICAgICAgd2hpbGUgKG1heCA+IDApIHtcbiAgICAgICAgICAgIHIucHVzaCgrdi5zbGljZShtaW4sIG1heCkpO1xuICAgICAgICAgICAgbWluIC09IGw7XG4gICAgICAgICAgICBpZiAobWluIDwgMCkgbWluID0gMDtcbiAgICAgICAgICAgIG1heCAtPSBsO1xuICAgICAgICB9XG4gICAgICAgIHRyaW0ocik7XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihyLCBzaWduKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU51bWJlclZhbHVlKHYpIHtcbiAgICAgICAgaWYgKHN1cHBvcnRzTmF0aXZlQmlnSW50KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludChCaWdJbnQodikpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1ByZWNpc2UodikpIHtcbiAgICAgICAgICAgIGlmICh2ICE9PSB0cnVuY2F0ZSh2KSkgdGhyb3cgbmV3IEVycm9yKHYgKyBcIiBpcyBub3QgYW4gaW50ZWdlci5cIik7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih2KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VTdHJpbmdWYWx1ZSh2LnRvU3RyaW5nKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlVmFsdWUodikge1xuICAgICAgICBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZU51bWJlclZhbHVlKHYpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3RyaW5nVmFsdWUodik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2ID09PSBcImJpZ2ludFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh2KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG4gICAgLy8gUHJlLWRlZmluZSBudW1iZXJzIGluIHJhbmdlIFstOTk5LDk5OV1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKykge1xuICAgICAgICBJbnRlZ2VyW2ldID0gcGFyc2VWYWx1ZShpKTtcbiAgICAgICAgaWYgKGkgPiAwKSBJbnRlZ2VyWy1pXSA9IHBhcnNlVmFsdWUoLWkpO1xuICAgIH1cbiAgICAvLyBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgIEludGVnZXIub25lID0gSW50ZWdlclsxXTtcbiAgICBJbnRlZ2VyLnplcm8gPSBJbnRlZ2VyWzBdO1xuICAgIEludGVnZXIubWludXNPbmUgPSBJbnRlZ2VyWy0xXTtcbiAgICBJbnRlZ2VyLm1heCA9IG1heDtcbiAgICBJbnRlZ2VyLm1pbiA9IG1pbjtcbiAgICBJbnRlZ2VyLmdjZCA9IGdjZDtcbiAgICBJbnRlZ2VyLmxjbSA9IGxjbTtcbiAgICBJbnRlZ2VyLmlzSW5zdGFuY2UgPSBmdW5jdGlvbiAoeCkgeyByZXR1cm4geCBpbnN0YW5jZW9mIEJpZ0ludGVnZXIgfHwgeCBpbnN0YW5jZW9mIFNtYWxsSW50ZWdlciB8fCB4IGluc3RhbmNlb2YgTmF0aXZlQmlnSW50OyB9O1xuICAgIEludGVnZXIucmFuZEJldHdlZW4gPSByYW5kQmV0d2VlbjtcblxuICAgIEludGVnZXIuZnJvbUFycmF5ID0gZnVuY3Rpb24gKGRpZ2l0cywgYmFzZSwgaXNOZWdhdGl2ZSkge1xuICAgICAgICByZXR1cm4gcGFyc2VCYXNlRnJvbUFycmF5KGRpZ2l0cy5tYXAocGFyc2VWYWx1ZSksIHBhcnNlVmFsdWUoYmFzZSB8fCAxMCksIGlzTmVnYXRpdmUpO1xuICAgIH07XG5cbiAgICByZXR1cm4gSW50ZWdlcjtcbn0pKCk7XG4iLCIvKiBnbG9iYWwgYmlnSW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuXG4vLyBXZSByZXByZXNlbnQgYSBbWi50XSBhcyBhIGphdmFzY3JpcHQgMzJiaXQgaW50ZWdlcnMgaWYgaXQgZml0cyBvciBhcyBhIGJpZ0ludC5cblxuLy9Qcm92aWRlczogbWxfel9ub3JtYWxpemVcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9ub3JtYWxpemUoeCl7XG4gIHZhciB5ID0geC50b0pTTnVtYmVyICgpIHwgMDtcbiAgaWYoeC5lcXVhbHMoYmlnSW50KHkpKSkgcmV0dXJuIHk7XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X211bF9vdmVyZmxvd3NcbmZ1bmN0aW9uIG1sX3pfbXVsX292ZXJmbG93cyh4LHkpe1xuICB2YXIgeiA9IHgqeTtcbiAgcmV0dXJuIHogIT0gKHp8MCk7XG59XG5cbi8vZXh0ZXJuYWwgaW5pdDogdW5pdCAtPiB1bml0XG4vL1Byb3ZpZGVzOiBtbF96X2luaXRcbi8vUmVxdWlyZXM6IGNhbWxfemFyaXRoX21hcnNoYWwsIGNhbWxfemFyaXRoX3VubWFyc2hhbCwgY2FtbF9jdXN0b21fb3BzLCBtbF96X2hhc2gsIG1sX3pfY29tcGFyZVxuZnVuY3Rpb24gbWxfel9pbml0KHVuaXQpIHtcbiAgY2FtbF9jdXN0b21fb3BzWydfeiddID1cbiAgICB7IHNlcmlhbGl6ZSA6IGNhbWxfemFyaXRoX21hcnNoYWwsXG4gICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfemFyaXRoX3VubWFyc2hhbCxcbiAgICAgIGhhc2ggOiBtbF96X2hhc2gsXG4gICAgICBjb21wYXJlIDogbWxfel9jb21wYXJlLFxuICAgIH07XG4gIHJldHVybiAwIH1cblxuLy9leHRlcm5hbCBuZWc6IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9uZWcgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfbmVnKHoxKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLm5lZ2F0ZSgpKTtcbn1cblxuLy9leHRlcm5hbCBhZGQ6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2FkZCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9hZGQoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLmFkZChiaWdJbnQoejIpKSk7XG59XG5cbi8vZXh0ZXJuYWwgc3ViOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9zdWIgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfc3ViKHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5zdWJ0cmFjdChiaWdJbnQoejIpKSk7XG59XG5cbi8vZXh0ZXJuYWwgbXVsOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9tdWwgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfbXVsKHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5tdWx0aXBseShiaWdJbnQoejIpKSk7XG59XG5cbi8vZXh0ZXJuYWwgZGl2OiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9kaXZcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfZGl2KHoxLCB6Mikge1xuICB6MiA9IGJpZ0ludCh6MilcbiAgaWYoejIuZXF1YWxzKGJpZ0ludCgwKSkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuZGl2aWRlKGJpZ0ludCh6MikpKVxufVxuXG4vL2V4dGVybmFsIGNkaXY6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2NkaXZcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9kaXYsIG1sX3pfc2lnbiwgbWxfel9hZGRcbmZ1bmN0aW9uIG1sX3pfY2Rpdih6MSwgejIpIHtcbiAgdmFyIHoxX3BvcyA9IG1sX3pfc2lnbih6MSk7XG4gIHZhciB6Ml9wb3MgPSBtbF96X3NpZ24oejIpO1xuICBpZiAoejFfcG9zICogejJfcG9zID4gMCkgLyogTXVsdGlwbGljYXRpb24gaXMgbGlrZSBhIHNpZ253aXNlIHhvciAqLyB7XG4gICAgaWYgKCFiaWdJbnQoejEpLm1vZChiaWdJbnQoejIpKS5lcXVhbHMoYmlnSW50KDApKSkge1xuICAgICAgcmV0dXJuIG1sX3pfYWRkKG1sX3pfZGl2KHoxLCB6MiksIGJpZ0ludCgxKSkgO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWxfel9kaXYoejEsIHoyKTtcbn1cblxuLy9leHRlcm5hbCBmZGl2OiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9mZGl2XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfZGl2LCBtbF96X3NpZ24sIG1sX3pfc3ViXG5mdW5jdGlvbiBtbF96X2ZkaXYoejEsIHoyKSB7XG4gIHZhciB6MV9wb3MgPSBtbF96X3NpZ24oejEpO1xuICB2YXIgejJfcG9zID0gbWxfel9zaWduKHoyKTtcbiAgaWYgKHoxX3BvcyAqIHoyX3BvcyA8IDApIC8qIE11bHRpcGxpY2F0aW9uIGlzIGxpa2UgYSBzaWdud2lzZSB4b3IgKi8ge1xuICAgIGlmICghYmlnSW50KHoxKS5tb2QoYmlnSW50KHoyKSkuZXF1YWxzKGJpZ0ludCgwKSkpIHtcbiAgICAgIHJldHVybiBtbF96X3N1YihtbF96X2Rpdih6MSwgejIpLCBiaWdJbnQoMSkpIDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1sX3pfZGl2KHoxLCB6Mik7XG59XG5cbi8vZXh0ZXJuYWwgcmVtOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9yZW1cbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfcmVtKHoxLCB6Mikge1xuICB6MiA9IGJpZ0ludCh6Mik7XG4gIGlmICh6Mi5lcXVhbHMoYmlnSW50KDApKSkge1xuICAgIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbiAgfVxuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5tb2QoejIpKTtcbn1cblxuLy9leHRlcm5hbCBkaXZfcmVtOiB0IC0+IHQgLT4gKHQgKiB0KVxuLy9Qcm92aWRlczogbWxfel9kaXZfcmVtXG4vL1JlcXVpcmVzOiBtbF96X2RpdiwgbWxfel9yZW1cbmZ1bmN0aW9uIG1sX3pfZGl2X3JlbSh6MSwgejIpIHtcbiAgcmV0dXJuIFswLCBtbF96X2Rpdih6MSx6MiksIG1sX3pfcmVtKHoxLCB6MildXG59XG4vL2V4dGVybmFsIHN1Y2M6IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9zdWNjIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3N1Y2MoejEpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkubmV4dCgpKTtcbn1cblxuLy9leHRlcm5hbCBwcmVkOiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfcHJlZCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9wcmVkKHoxKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLnByZXYoKSk7XG59XG5cbi8vZXh0ZXJuYWwgYWJzOiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfYWJzIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2Ficyh6MSkge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5hYnMoKSk7XG59XG5cbi8vZXh0ZXJuYWwgbG9nYW5kOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9sb2dhbmQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfbG9nYW5kKHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5hbmQoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIGxvZ29yOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9sb2dvciBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9sb2dvcih6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkub3IoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIGxvZ3hvcjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbG9neG9yIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2xvZ3hvcih6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkueG9yKGJpZ0ludCh6MikpKTtcbn1cblxuLy9leHRlcm5hbCBsb2dub3Q6IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9sb2dub3QgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCxtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9sb2dub3QoejEpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkubm90KCkpO1xufVxuXG4vL2V4dGVybmFsIHNoaWZ0X2xlZnQ6IHQgLT4gaW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc2hpZnRfbGVmdCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9zaGlmdF9sZWZ0KHoxLCBhbXQpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuc2hpZnRMZWZ0KGFtdCkpO1xufVxuXG4vL2V4dGVybmFsIHNoaWZ0X3JpZ2h0OiB0IC0+IGludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3NoaWZ0X3JpZ2h0IGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3NoaWZ0X3JpZ2h0KHoxLCBhbXQpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuc2hpZnRSaWdodChhbXQpKTtcbn1cblxuLy9leHRlcm5hbCBzaGlmdF9yaWdodF90cnVuYzogdCAtPiBpbnQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9zaGlmdF9yaWdodF90cnVuYyBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X2RpdlxuZnVuY3Rpb24gbWxfel9zaGlmdF9yaWdodF90cnVuYyh6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfZGl2KGJpZ0ludCh6MSksIGJpZ0ludCgyKS5wb3coejIpKVxufVxuXG4vL2V4dGVybmFsIG9mX2ludDMyOiBpbnQzMiAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X29mX2ludDMyIGNvbnN0XG5mdW5jdGlvbiBtbF96X29mX2ludDMyKGkpIHtcbiAgcmV0dXJuIGkgfCAwO1xufVxuXG4vL2V4dGVybmFsIG9mX25hdGl2ZWludDogbmF0aXZlaW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfb2ZfbmF0aXZlaW50IGNvbnN0XG5mdW5jdGlvbiBtbF96X29mX25hdGl2ZWludChpKSB7XG4gIHJldHVybiBpIHwgMDtcbn1cblxuLy9leHRlcm5hbCBvZl9pbnQ2NDogaW50NjQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9vZl9pbnQ2NCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2ludDY0X2NvbXBhcmUsIGNhbWxfaW50NjRfbmVnLCBtbF96X25vcm1hbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksY2FtbF9pbnQ2NF9oaTMyLGNhbWxfaW50NjRfbG8zMlxuZnVuY3Rpb24gbWxfel9vZl9pbnQ2NChpNjQpIHtcbiAgdmFyIG5lZyA9IGZhbHNlO1xuICBpZihjYW1sX2ludDY0X2NvbXBhcmUoaTY0LCBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSgwLDApKSA8IDApIHtcbiAgICBuZWcgPSB0cnVlO1xuICAgIGk2NCA9IGNhbWxfaW50NjRfbmVnKGk2NClcbiAgfVxuICB2YXIgbG8gPSBjYW1sX2ludDY0X2xvMzIoaTY0KSA+Pj4gMDtcbiAgdmFyIGhpID0gY2FtbF9pbnQ2NF9oaTMyKGk2NCkgPj4+IDA7XG4gIHZhciB4ID0gYmlnSW50KGxvKS5hZGQoYmlnSW50KGhpKS5zaGlmdExlZnQoMzIpKTtcbiAgaWYobmVnKSB7IHggPSB4Lm5lZ2F0ZSgpIH07XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZSh4KVxufVxuXG4vL2V4dGVybmFsIG9mX2Zsb2F0OiBmbG9hdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfbmFtZWRfdmFsdWUsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X29mX2Zsb2F0KGYxKSB7XG4gIGlmKGYxID09IEluZmluaXR5IHx8IGYxID09IC1JbmZpbml0eSB8fCBmMSAhPSBmMSlcbiAgICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfbmFtZWRfdmFsdWUoXCJtbF96X292ZXJmbG93XCIpKTtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludChmMTwwP01hdGguY2VpbChmMSk6TWF0aC5mbG9vcihmMSkpKTtcbn1cblxuLy9leHRlcm5hbCB0b19pbnQ6IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X3RvX2ludFxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBtbF96X3RvX2ludCh6MSkge1xuICBpZiAoejEgPT0gKHoxIHwgMCkpIHJldHVybiB6MSB8IDA7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9uYW1lZF92YWx1ZShcIm1sX3pfb3ZlcmZsb3dcIikpO1xufVxuXG4vL2V4dGVybmFsIHRvX2ludDMyOiB0IC0+IGludDMyXG4vL1Byb3ZpZGVzOiBtbF96X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBtbF96X3RvX2ludFxuZnVuY3Rpb24gbWxfel90b19pbnQzMih6MSkgeyByZXR1cm4gbWxfel90b19pbnQoejEpIH1cblxuLy9leHRlcm5hbCB0b19pbnQ2NDogdCAtPiBpbnQ2NFxuLy9Qcm92aWRlczogbWxfel90b19pbnQ2NFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X2ZpdHNfaW50NjQsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpXG5mdW5jdGlvbiBtbF96X3RvX2ludDY0KHoxKSB7XG4gIHoxID0gYmlnSW50KHoxKVxuICBpZighbWxfel9maXRzX2ludDY0KHoxKSkge1xuICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9uYW1lZF92YWx1ZShcIm1sX3pfb3ZlcmZsb3dcIikpO1xuICB9XG4gIHZhciBtYXNrID0gYmlnSW50KDB4ZmZmZmZmZmYpXG4gIHZhciBsbyA9IHoxLmFuZChtYXNrKS50b0pTTnVtYmVyKCk7XG4gIHZhciBoaSA9IHoxLnNoaWZ0UmlnaHQoMzIpLmFuZChtYXNrKS50b0pTTnVtYmVyKCk7XG4gIHZhciB4ID0gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobG8sIGhpKTtcbiAgcmV0dXJuIHg7XG59XG5cbi8vZXh0ZXJuYWwgdGVzdGJpdDogdCAtPiBib29sXG4vL1Byb3ZpZGVzOiBtbF96X3Rlc3RiaXRcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel90ZXN0Yml0KHoscG9zKXtcbiAgeiA9IGJpZ0ludCh6KTtcbiAgcmV0dXJuICh6LnNoaWZ0UmlnaHQocG9zKS5hbmQoYmlnSW50KDEpKS50b0pTTnVtYmVyKCkpfDA7XG59XG5cbi8vZXh0ZXJuYWwgdG9fbmF0aXZlaW50OiB0IC0+IG5hdGl2ZWludFxuLy9Qcm92aWRlczogbWxfel90b19uYXRpdmVpbnRcbi8vUmVxdWlyZXM6IG1sX3pfdG9faW50XG5mdW5jdGlvbiBtbF96X3RvX25hdGl2ZWludCh6MSkgeyByZXR1cm4gbWxfel90b19pbnQoejEpIH1cblxuLy9leHRlcm5hbCBmb3JtYXQ6IHN0cmluZyAtPiB0IC0+IHN0cmluZ1xuLy9Qcm92aWRlczogbWxfel9mb3JtYXQgXG4vL1JlcXVpcmVzOiBiaWdJbnRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfZmFpbHdpdGgsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2Zvcm1hdChmbXQsIHoxKSB7XG4gIHoxID0gYmlnSW50KHoxKTtcbiAgdmFyIGZtdCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KTtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL1phcml0aC9ibG9iL2QwNTU1ZDQ1MWNlMjk1YzQ0OTdmMjRhOGQ5OTkzZjhkZDIzMDk3ZGYvei5tbGlwI0wyOTdcbiAgdmFyIGJhc2UgPSAxMDtcbiAgdmFyIGNhcyA9IDA7XG4gIHZhciB3aWR0aCA9IDA7XG4gIHZhciBhbHQgPSAwO1xuICB2YXIgZGlyID0gMDtcbiAgdmFyIHNpZ24gPSAnJztcbiAgdmFyIHBhZCA9ICcgJztcbiAgdmFyIGlkeCA9IDA7XG4gIHZhciBwcmVmaXg9XCJcIjtcbiAgd2hpbGUoZm10W2lkeF0gPT0gJyUnKSBpZHgrKztcbiAgZm9yKDs7IGlkeCsrKSB7XG4gICAgaWYoZm10W2lkeF0gPT0gJyMnKSBhbHQgPSAxO1xuICAgIGVsc2UgaWYgKGZtdFtpZHhdID09ICcwJykgcGFkID0gJzAnO1xuICAgIGVsc2UgaWYgKGZtdFtpZHhdID09ICctJykgZGlyID0gMTtcbiAgICBlbHNlIGlmIChmbXRbaWR4XSA9PSAnICcgfHwgZm10W2lkeF0gPT0gJysnKSBzaWduID0gZm10W2lkeF07XG4gICAgZWxzZSBicmVhaztcbiAgfVxuICBpZih6MS5sdChiaWdJbnQoMCkpKXtzaWduID0gJy0nO3oxID0gejEubmVnYXRlKCl9O1xuICBmb3IoO2ZtdFtpZHhdPj0nMCcgJiYgZm10W2lkeF0gPD0nOSc7aWR4KyspXG4gICAgd2lkdGg9MTAqd2lkdGggKyAoK2ZtdFtpZHhdKTtcbiAgc3dpdGNoKGZtdFtpZHhdKXtcbiAgY2FzZSAnaSc6IGNhc2UgJ2QnOiBjYXNlICd1JzogYnJlYWs7XG4gIGNhc2UgJ2InOiBiYXNlID0gMjsgaWYoYWx0KSBwcmVmaXggPSBcIjBiXCI7IGJyZWFrO1xuICBjYXNlICdvJzogYmFzZSA9IDg7IGlmKGFsdCkgcHJlZml4ID0gXCIwb1wiOyBicmVhaztcbiAgY2FzZSAneCc6IGJhc2UgPSAxNjsgaWYoYWx0KSBwcmVmaXggPSBcIjB4XCI7IGJyZWFrO1xuICBjYXNlICdYJzogYmFzZSA9IDE2OyBpZihhbHQpIHByZWZpeCA9IFwiMFhcIjsgY2FzID0gMTsgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9mYWlsd2l0aChcIlVuc3VwcG9ydGVkIGZvcm1hdCAnXCIgKyBmbXQgKyBcIidcIik7XG4gIH1cbiAgaWYgKGRpcikgcGFkID0gJyAnO1xuICB2YXIgcmVzID0gejEudG9TdHJpbmcoYmFzZSk7XG4gIGlmIChjYXMgPT09IDEpIHtcbiAgICByZXMgPSByZXMudG9VcHBlckNhc2UoKTtcbiAgfVxuICB2YXIgc2l6ZSA9IHJlcy5sZW5ndGg7XG4gIGlmIChwYWQgPT0gJyAnKSB7XG4gICAgaWYoZGlyKSB7XG4gICAgICByZXMgPSBzaWduICsgcHJlZml4ICsgcmVzO1xuICAgICAgZm9yKDtyZXMubGVuZ3RoPHdpZHRoOykgcmVzID0gcmVzICsgcGFkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSBzaWduICsgcHJlZml4ICsgcmVzO1xuICAgICAgZm9yKDtyZXMubGVuZ3RoPHdpZHRoOykgcmVzID0gcGFkICsgcmVzO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgcHJlID0gc2lnbiArIHByZWZpeDtcbiAgICBmb3IoO3Jlcy5sZW5ndGgrcHJlLmxlbmd0aDx3aWR0aDspIHJlcyA9IHBhZCArIHJlcztcbiAgICByZXMgPSBwcmUgKyByZXM7XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocmVzKTtcbn1cblxuLy9Qcm92aWRlczoganNvb196X29mX2pzX3N0cmluZ19iYXNlXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIGpzb29fel9vZl9qc19zdHJpbmdfYmFzZShiYXNlLCBzKSB7XG4gIGlmIChiYXNlID09IDApIHsgLy8gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL1phcml0aC9ibG9iL2I4ZGJhZjQ4YTc5MjcwNjFkZjY5OWFkN2NlNjQyYmI0ZjFmZTUzMDgvY2FtbF96LmMjTDU5OFxuICAgIGJhc2UgPSAxMDtcbiAgICB2YXIgcCA9IDA7XG4gICAgdmFyIHNpZ24gPSAxO1xuICAgIGlmKHNbcF0gPT0gJy0nKSB7IHNpZ24gPSAtMTsgcCsrIH1cbiAgICBlbHNlIGlmIChzW3BdID09ICcrJykgeyBwKysgfVxuICAgIGlmIChzW3BdID09ICcwJykge1xuICAgICAgcCArKztcbiAgICAgIGlmIChzLmxlbmd0aCA9PSBwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGJjID0gc1twXTtcbiAgICAgICAgaWYgKGJjID09ICdvJyB8fCBiYyA9PSAnTycpIHtcbiAgICAgICAgICBiYXNlID0gODtcbiAgICAgICAgfSBlbHNlIGlmIChiYyA9PSAneCcgfHwgYmMgPT0gJ1gnKSB7XG4gICAgICAgICAgYmFzZSA9IDE2O1xuICAgICAgICB9IGVsc2UgaWYgKGJjID09ICdiJyB8fCBiYyA9PSAnQicpIHtcbiAgICAgICAgICBiYXNlID0gMjtcbiAgICAgICAgfSBcbiAgICAgICAgaWYoYmFzZSAhPSAxMCkge1xuICAgICAgICAgIHMgPSBzLnN1YnN0cmluZyhwKzEpO1xuICAgICAgICAgIGlmKHNpZ24gPT0gLTEpIHMgPSBcIi1cIiArIHM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG4gIGZ1bmN0aW9uIGRpZ2l0KGNvZGUpe1xuICAgIGlmKGNvZGUgPj0gNDggJiYgY29kZSA8PSA1NykgcmV0dXJuIGNvZGUgLSA0ODtcbiAgICBpZihjb2RlID49IDk3ICYmIGNvZGUgPD0gMTAyKSByZXR1cm4gY29kZSAtIDk3ICsgMTA7XG4gICAgaWYoY29kZSA+PSA2NSAmJiBjb2RlIDw9IDcwKSByZXR1cm4gY29kZSAtIDY1ICsgMTA7XG4gIH1cbiAgdmFyIGkgPSAwO1xuICBpZiAoc1tpXSA9PSAnKycpIHtcbiAgICAvL3JlbW92ZSBsZWFkaW5nICcrJ1xuICAgIHMgPSBzLnN1YnN0cmluZygxKTtcbiAgfVxuICBlbHNlIGlmKHNbaV0gPT0gJy0nKSBpKys7XG4gIGlmKHNbaV0gPT0gJ18nKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLm9mX3N1YnN0cmluZ19iYXNlOiBpbnZhbGlkIGRpZ2l0XCIpO1xuICBzID0gcy5yZXBsYWNlKC9fL2csJycpO1xuICAvL25vcm1hbGl6ZSBcImVtcHR5XCIgbnVtYmVyc1xuICBpZihzID09ICctJyB8fCBzID09ICcnKSBzID0gJzAnO1xuICBmb3IoIDsgaSA8IHMubGVuZ3RoIDsgaSsrKXtcbiAgICB2YXIgYyA9IGRpZ2l0KHMuY2hhckNvZGVBdChpKSk7XG4gICAgaWYoYyA9PSB1bmRlZmluZWQgfHwgYyA+PSBiYXNlKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5vZl9zdWJzdHJpbmdfYmFzZTogaW52YWxpZCBkaWdpdFwiKTtcbiAgfVxuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHMsIGJhc2UpKTtcbiAgXG59XG5cbi8vZXh0ZXJuYWwgb2Zfc3Vic3RyaW5nX2Jhc2U6IGludCAtPiBzdHJpbmcgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfb2Zfc3Vic3RyaW5nX2Jhc2Vcbi8vUmVxdWlyZXM6IGpzb29fel9vZl9qc19zdHJpbmdfYmFzZSwgY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIG1sX3pfb2Zfc3Vic3RyaW5nX2Jhc2UoYmFzZSwgcywgcG9zLCBsZW4pIHtcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIGlmKHBvcyAhPSAwIHx8IGxlbiAhPSBzLmxlbmd0aCkge1xuICAgIGlmIChzLmxlbmd0aCAtIHBvcyA8IGxlbikge1xuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5vZl9zdWJzdHJpbmdfYmFzZTogaW52YWxpZCBvZmZzZXQgb3IgbGVuZ3RoXCIpO1xuICAgIH1cbiAgICBzID0gcy5zbGljZShwb3MscG9zK2xlbik7XG4gIH1cbiAgcmV0dXJuIGpzb29fel9vZl9qc19zdHJpbmdfYmFzZShiYXNlLCBzKTtcbn1cblxuLy9leHRlcm5hbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X2NvbXBhcmUgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9jb21wYXJlKHoxLCB6Mikge1xuICByZXR1cm4gYmlnSW50KHoxKS5jb21wYXJlKGJpZ0ludCh6MikpO1xufVxuXG4vL2V4dGVybmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuLy9Qcm92aWRlczogbWxfel9lcXVhbCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X2VxdWFsKHoxLCB6Mikge1xuICByZXR1cm4gYmlnSW50KHoxKS5lcXVhbHMoYmlnSW50KHoyKSkgPyAxIDogMDtcbn1cblxuLy9leHRlcm5hbCBzaWduOiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9zaWduIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfc2lnbih6MSkge1xuICByZXR1cm4gYmlnSW50KHoxKS5jb21wYXJlKGJpZ0ludC56ZXJvKTtcbn1cblxuLy9leHRlcm5hbCBnY2Q6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2djZFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9nY2QoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQuZ2NkKGJpZ0ludCh6MSksIGJpZ0ludCh6MikpLmFicygpKTtcbn1cblxuLy9leHRlcm5hbCBudW1iaXRzOiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9udW1iaXRzIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfbnVtYml0cyh6MSkge1xuICB6MSA9IGJpZ0ludCh6MSkuYWJzKCk7XG4gIHZhciBuID0gMDtcbiAgdmFyIHVwcGVyQm91bmQgPSBiaWdJbnQub25lO1xuICB3aGlsZSAodXBwZXJCb3VuZC5sZXEoejEpKSB7XG4gICAgbiArPSAxO1xuICAgIHVwcGVyQm91bmQgPSB1cHBlckJvdW5kLm11bHRpcGx5KDIpO1xuICB9XG4gIHJldHVybiBuOyAvLyAyXntuLTF9IDw9IHx4fCA8IDJeblxufVxuXG4vL2V4dGVybmFsIGZpdHNfaW50OiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfZml0c19pbnQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9maXRzX2ludCh6MSkge1xuICBpZih6MSA9PSAoejEgfCAwKSkgcmV0dXJuIDE7XG4gIGVsc2UgcmV0dXJuIDA7XG59XG5cbi8vZXh0ZXJuYWwgZml0c19pbnQzMjogdCAtPiBib29sXG4vL1Byb3ZpZGVzOiBtbF96X2ZpdHNfaW50MzJcbi8vUmVxdWlyZXM6IG1sX3pfZml0c19pbnRcbmZ1bmN0aW9uIG1sX3pfZml0c19pbnQzMih6MSkge1xuICByZXR1cm4gbWxfel9maXRzX2ludCh6MSk7XG59XG5cbi8vZXh0ZXJuYWwgZml0c19pbnQ2NDogdCAtPiBib29sXG4vL1Byb3ZpZGVzOiBtbF96X2ZpdHNfaW50NjRcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9maXRzX2ludDY0KHoxKSB7XG4gIHoxID0gYmlnSW50KHoxKVxuICBpZiAoejEuY29tcGFyZShiaWdJbnQoXCI5MjIzMzcyMDM2ODU0Nzc1ODA3XCIpKSA8PSAwICYmIHoxLmNvbXBhcmUoYmlnSW50KFwiLTkyMjMzNzIwMzY4NTQ3NzU4MDhcIikpID49IDApXG4gICAgcmV0dXJuIDFcbiAgZWxzZVxuICAgIHJldHVybiAwXG59XG5cbi8vZXh0ZXJuYWwgZml0c19uYXRpdmVpbnQ6IHQgLT4gYm9vbFxuLy9Qcm92aWRlczogbWxfel9maXRzX25hdGl2ZWludFxuLy9SZXF1aXJlczogbWxfel9maXRzX2ludFxuZnVuY3Rpb24gbWxfel9maXRzX25hdGl2ZWludCh6MSkge1xuICByZXR1cm4gbWxfel9maXRzX2ludCh6MSk7XG59XG5cbi8vZXh0ZXJuYWwgcG93bTogdCAtPiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9wb3dtXG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplLCBtbF96X2ludmVydCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gbWxfel9wb3dtKHoxLCB6MiwgejMpIHtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIHoxID0gYmlnSW50KHoxKTtcbiAgejIgPSBiaWdJbnQoejIpO1xuICB6MyA9IGJpZ0ludCh6Myk7XG4gIGlmKHozLmVxdWFscyh6ZXJvKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xuICBpZih6My5hYnMoKS5lcXVhbHMob25lKSkgcmV0dXJuIDA7XG4gIGlmKHoyLmVxdWFscyh6ZXJvKSkgcmV0dXJuIDE7XG4gIGlmKHoyLmx0KDApKSB7XG4gICAgdmFyIGludiA9IGJpZ0ludChtbF96X2ludmVydCh6MSwgejMpKTtcbiAgICB2YXIgciA9IGludi5tb2RQb3coejIubmVnYXRlKCksIHozKTtcbiAgICBpZihyLmx0KHplcm8pKSByID0gci5hZGQoejMuYWJzKCkpO1xuICAgIHJldHVybiBtbF96X25vcm1hbGl6ZShyKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgciA9IGJpZ0ludCh6MSkubW9kUG93KHoyLCB6Myk7XG4gICAgaWYoci5sdCh6ZXJvKSkgciA9IHIuYWRkKHozLmFicygpKTtcbiAgICByZXR1cm4gbWxfel9ub3JtYWxpemUocik7XG4gIH1cbn1cblxuLy9leHRlcm5hbCBwb3duOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9wb3dcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9mYWlsd2l0aCwgbWxfel9ub3JtYWxpemUsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9wb3coejEsIGkxKSB7XG4gIGkxID0gYmlnSW50KGkxKTtcbiAgaWYgKGkxLmx0KGJpZ0ludCgwKSkpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLnBvdzogZXhwb25lbnQgbXVzdCBiZSBub25uZWdhdGl2ZVwiKTtcbiAgfVxuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5wb3coaTEpKTtcbn1cblxuLy9leHRlcm5hbCBoYXNoOiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9oYXNoIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBtbF96X2hhc2goejEpIHtcbiAgdmFyIGEgPSBiaWdJbnQoejEpLnRvQXJyYXkoTWF0aC5wb3coMiwgMzIpKTtcbiAgdmFyIGFjYyA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYS52YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgIGFjYyA9IGNhbWxfaGFzaF9taXhfaW50KGFjYywgYS52YWx1ZVtpXSk7XG4gIH1cbiAgaWYoYS52YWx1ZS5sZW5ndGggJSAyICE9IDApIHtcbiAgICBhY2MgPSBjYW1sX2hhc2hfbWl4X2ludChhY2MsIDApO1xuICB9XG4gIGlmKGEuaXNOZWdhdGl2ZSl7XG4gICAgYWNjID0gYWNjICsgMVxuICB9XG4gIHJldHVybiBhY2MgfCAwXG59XG5cbi8vZXh0ZXJuYWwgdG9fYml0czogdCAtPiBzdHJpbmdcbi8vUHJvdmlkZXM6IG1sX3pfdG9fYml0cyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9zdHJfcmVwZWF0LCBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfdG9fYml0cyh6MSkge1xuICB6MSA9IGJpZ0ludCh6MSkuYWJzKCk7XG4gIHZhciByZXMgPSBcIlwiO1xuICB3aGlsZSghejEuZXF1YWxzKGJpZ0ludCgwKSkpe1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHoxLm1vZChiaWdJbnQoMjU2KSkpO1xuICAgIHoxID0gejEuZGl2aWRlKGJpZ0ludCgyNTYpKTtcbiAgfVxuICB3aGlsZShyZXMubGVuZ3RoICUgNCAhPSAwKXtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgwKTtcbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhyZXMpO1xufVxuXG4vL2V4dGVybmFsIG9mX2JpdHM6IHN0cmluZyAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X29mX2JpdHMgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9vZl9iaXRzKHoxKSB7XG4gIHZhciByID0gYmlnSW50Lnplcm9cbiAgdmFyIGJhc2UxID0gYmlnSW50KDI1Nik7XG4gIHZhciBiYXNlID0gYmlnSW50Lm9uZTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCh6MSk7IGkrKyl7XG4gICAgdmFyIGQgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHoxLGkpO1xuICAgIHIgPSBiaWdJbnQoYmFzZSkubXVsdGlwbHkoZCkuYWRkKHIpO1xuICAgIGJhc2UgPSBiaWdJbnQoYmFzZSkubXVsdGlwbHkoYmFzZTEpO1xuICB9XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShyKTtcbn1cblxuLy9leHRlcm5hbCBwb3dtX3NlYzogdCAtPiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9wb3dtX3NlY1xuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2ZhaWx3aXRoLCBtbF96X3Bvd20sIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9wb3dtX3NlYyh6MSwgejIsIHozKSB7XG4gIHozID0gYmlnSW50KHozKS5hYnMoKTtcbiAgLy8gcG93bV9zZWMgcmVxdWlyZXMgdGhhdCB0aGUgZXhwb25lbnQgYmUgcG9zaXRpdmVcbiAgdmFyIG9uZSA9IGJpZ0ludCgxKTtcbiAgaWYgKGJpZ0ludCh6MikubHQob25lKSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloucG93bV9zZWM6IGV4cG9uZW50IG11c3QgYmUgcG9zaXRpdmVcIik7XG4gIH1cbiAgaWYgKCFiaWdJbnQoejMpLmFuZChvbmUpLmVxdWFscyhvbmUpKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5wb3dtX3NlYzogbW9kdWx1cyBtdXN0IGJlIG9kZFwiKTtcbiAgfVxuICByZXR1cm4gbWxfel9wb3dtKHoxLCB6MiwgejMpXG59XG5cbi8vZXh0ZXJuYWwgcm9vdDogdCAtPiBpbnQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9yb290XG4vL1JlcXVpcmVzOiBtbF96X3BvdywgIGJpZ0ludCwgbWxfel9ub3JtYWxpemUsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9yb290KHosIGkpIHtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIHogPSBiaWdJbnQoeik7XG5cbiAgaWYgKGkgJSAyID09PSAwICYmIHoubHQoemVybykpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLnJvb3Q6IGV2ZW4gcm9vdCBvZiBhIG5lZ2F0aXZlIG51bWJlclwiKTtcbiAgfVxuXG4gIGlmICh6LmVxdWFscyh6ZXJvKSB8fCB6LmVxdWFscyhvbmUpKSB7XG4gICAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHopO1xuICB9XG5cbiAgdmFyIHN0YXJ0ID0gemVybztcbiAgdmFyIGVuZCA9IHo7XG4gIHZhciBhbnMgPSBudWxsO1xuXG4gIHZhciB0d28gPSBiaWdJbnQoMik7XG5cbiAgd2hpbGUgKHN0YXJ0LmxlcShlbmQpKVxuICB7XG4gICAgdmFyIG1pZCA9IHN0YXJ0LmFkZChlbmQpLmRpdmlkZSh0d28pO1xuICAgIHZhciBwbyA9IG1pZC5wb3coaSk7XG4gICAgaWYgKHBvLmVxdWFscyh6KSkge1xuICAgICAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKG1pZCk7XG4gICAgfSBlbHNlIGlmIChwby5sdCh6KSkge1xuICAgICAgc3RhcnQgPSBtaWQubmV4dCgpO1xuICAgICAgYW5zID0gbWlkO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmQgPSBtaWQucHJldigpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYW5zKTtcbn1cblxuLy9leHRlcm5hbCByb290cmVtOiB0IC0+IGludCAtPiB0ICogdFxuLy9Qcm92aWRlczogbWxfel9yb290cmVtXG4vL1JlcXVpcmVzOiBtbF96X3BvdywgIGJpZ0ludCwgbWxfel9ub3JtYWxpemUsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9yb290cmVtKHosIGkpIHtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIHogPSBiaWdJbnQoeik7XG5cbiAgaWYgKGkgJSAyID09PSAwICYmIHoubHQoemVybykpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLnJvb3RyZW06IGV2ZW4gcm9vdCBvZiBhIG5lZ2F0aXZlIG51bWJlclwiKTtcbiAgfVxuXG4gIGlmICh6LmVxdWFscyh6ZXJvKSB8fCB6LmVxdWFscyhvbmUpKSB7XG4gICAgcmV0dXJuIFswLCBtbF96X25vcm1hbGl6ZSh6KSwgemVyb107XG4gIH1cblxuICB2YXIgc3RhcnQgPSB6ZXJvO1xuICB2YXIgZW5kID0gejtcbiAgdmFyIGFucyA9IG51bGw7XG5cbiAgdmFyIHR3byA9IGJpZ0ludCgyKTtcblxuICB3aGlsZSAoc3RhcnQubGVxKGVuZCkpXG4gIHtcbiAgICB2YXIgbWlkID0gc3RhcnQuYWRkKGVuZCkuZGl2aWRlKHR3byk7XG4gICAgdmFyIHBvID0gbWlkLnBvdyhpKTtcbiAgICBpZiAocG8uZXF1YWxzKHopKSB7XG4gICAgICByZXR1cm4gWzAsIG1sX3pfbm9ybWFsaXplKG1pZCksIHplcm9dO1xuICAgIH0gZWxzZSBpZiAocG8ubHQoeikpIHtcbiAgICAgIHN0YXJ0ID0gbWlkLm5leHQoKTtcbiAgICAgIGFucyA9IG1pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgZW5kID0gbWlkLnByZXYoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFswLCBtbF96X25vcm1hbGl6ZShhbnMpLCBtbF96X25vcm1hbGl6ZSh6Lm1pbnVzKGFucy5wb3coaSkpKV07XG59XG5cbi8vZXh0ZXJuYWwgaW52ZXJ0OiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9pbnZlcnRcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSwgbWxfel9nY2RleHRfaW50ZXJuLCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9pbnZlcnQoYSwgbikge1xuICAvLyBCZWNhdXNlIFthLm1vZEludihuKV0gcHJvZHVjZXMgZGlmZmVyZW50IHJlc3VsdHMgZm9yIGVkZ2UgY2FzZXMsXG4gIC8vIHdlIHdyb3RlIG91ciBvd24gaW1wbGVtZW50YXRpb24gYmFzZWQgb24gZ2NkZXh0X2ludGVybi5cbiAgYSA9IGJpZ0ludChhKTtcbiAgbiA9IGJpZ0ludChuKTtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIGlmKG4uYWJzKCkuZXF1YWxzKG9uZSkpXG4gICAgcmV0dXJuIDA7XG4gIGlmIChuLmVxdWFscyh6ZXJvKSAmJiBhLmFicygpLmVxdWFscyhvbmUpKSB7XG4gICAgcmV0dXJuIGE7XG4gIH1cbiAgaWYgKG4uZXF1YWxzKHplcm8pIHx8IGEuZXF1YWxzKHplcm8pKSB7XG4gICAgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xuICB9XG4gIHZhciB4ID0gbWxfel9nY2RleHRfaW50ZXJuKGEsIG4pO1xuICB2YXIgciA9IGJpZ0ludCh4WzJdKTtcbiAgdmFyIHRtcCA9IGJpZ0ludChhKS5tdWx0aXBseShyKS5tb2Qobik7XG4gIGlmKHRtcC5sdCh6ZXJvKSkgdG1wID0gdG1wLmFkZChuLmFicygpKTtcbiAgaWYoci5sdCh6ZXJvKSkgciA9IHIuYWRkKG4uYWJzKCkpO1xuICBpZih0bXAuZXF1YWxzKG9uZSkpIHtcbiAgICByZXR1cm4gbWxfel9ub3JtYWxpemUocik7XG4gIH1cbiAgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xufVxuXG4vL2V4dGVybmFsIHBlcmZlY3RfcG93ZXI6IHQgLT4gYm9vbFxuLy9Qcm92aWRlczogbWxfel9wZXJmZWN0X3Bvd2VyXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfZmFpbHdpdGgsIG1sX3pfbnVtYml0cywgbWxfel9yb290LCBtbF96X3Bvd1xuZnVuY3Rpb24gbWxfel9wZXJmZWN0X3Bvd2VyKHopIHtcbiAgLy8gUmV0dXJuIHRydWUgaWYgb3AgaXMgYSBwZXJmZWN0IHBvd2VyLCBpLmUuLCBpZiB0aGVyZSBleGlzdCBpbnRlZ2VycyBhIGFuZFxuICAvLyBiLCB3aXRoIGIgPiAxLCBzdWNoIHRoYXQgb3AgPSBhXmIuXG4gIC8vIE90aGVyd2lzZSBmYWxzZS5cbiAgeiA9IGJpZ0ludCh6KTtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG5cbiAgaWYgKHouZXF1YWxzKHplcm8pIHx8IHouZXF1YWxzKG9uZSkgfHwgei5lcXVhbHMob25lLm5lZ2F0ZSgpKSkge1xuICAgIHJldHVybiAxO1xuICB9XG4gIHZhciBsb2cyeiA9IG1sX3pfbnVtYml0cyh6LmFicygpKTtcbiAgZm9yICh2YXIgYiA9IDI7IGIgPD0gbG9nMno7IGIrKykge1xuICAgIGlmKHoubHQoemVybykgJiYgYiAlIDIgPT0gMCkgY29udGludWU7XG4gICAgdmFyIHpwID0gei5hYnMoKTtcbiAgICB2YXIgcCA9IGJpZ0ludChtbF96X3Jvb3QoenAsIGIpKTtcbiAgICBpZih6Lmx0KHplcm8pKSBwID0gcC5uZWdhdGUoKTtcbiAgICB2YXIgciA9IGJpZ0ludChtbF96X3BvdyhwLCBiKSk7XG4gICAgaWYgKHouZXF1YWxzKHIpKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vZXh0ZXJuYWwgcGVyZmVjdF9zcXVhcmU6IHQgLT4gYm9vbFxuLy9Qcm92aWRlczogbWxfel9wZXJmZWN0X3NxdWFyZVxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X3Jvb3RcbmZ1bmN0aW9uIG1sX3pfcGVyZmVjdF9zcXVhcmUoeikge1xuICB6ID0gYmlnSW50KHopO1xuICBpZiAoei5sdChiaWdJbnQoMCkpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHJvb3QgPSBiaWdJbnQobWxfel9yb290KHosIDIpKTtcbiAgaWYgKHJvb3QubXVsdGlwbHkocm9vdCkuZXEoeikpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gMFxuICB9O1xufVxuXG4vL2V4dGVybmFsIHByb2JhYl9wcmltZTogdCAtPiBpbnQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X3Byb2JhYl9wcmltZSBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X3Byb2JhYl9wcmltZSh6LCBpKSB7XG4gIGlmIChiaWdJbnQoeikuaXNQcm9iYWJsZVByaW1lKGkpKSB7XG4gICAgcmV0dXJuIDE7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLy9leHRlcm5hbCBuZXh0cHJpbWU6IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9uZXh0cHJpbWUgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfbmV4dHByaW1lKHoxKSB7XG4gIC8vIEludGVyZXN0aW5nbHksIHRoZSB6YXJpdGggbmV4dF9wcmltZSBvbmx5IHJldHVybnMgXG4gIC8vIHByb2JhYmFsaXN0aWMgcHJpbWVzLiAgV2UgZG8gdGhlIHNhbWUsIHdpdGggdGhlIFxuICAvLyBzYW1lIHByb2JhYmxpc3RpYyBwYXJhbWV0ZXIgb2YgMjUuXG4gIC8vIGh0dHBzOi8vZm9zc2llcy5vcmcvZG94L2dtcC02LjEuMi9tcHpfMm5leHRwcmltZV84Y19zb3VyY2UuaHRtbFxuICBcbiAgejEgPSBiaWdJbnQoejEpXG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIHZhciB0d28gPSBiaWdJbnQoMik7XG5cbiAgaWYgKHoxLmx0KG9uZSkgfHwgejEuZXF1YWxzKG9uZSkpIHtcbiAgICByZXR1cm4gMjtcbiAgfVxuXG4gIGlmICh6MS5hbmQob25lKS5lcXVhbHMob25lKSkge1xuICAgIHoxID0gejEuYWRkKHR3byk7XG4gIH0gZWxzZSB7XG4gICAgejEgPSB6MS5hZGQob25lKTtcbiAgfVxuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKHoxLmlzUHJvYmFibGVQcmltZSgyNSkpIHtcbiAgICAgIHJldHVybiBtbF96X25vcm1hbGl6ZSh6MSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHoxID0gejEuYWRkKHR3bylcbiAgICB9XG4gIH1cbn1cblxuLy9leHRlcm5hbCBleHRyYWN0OiB0IC0+IGludCAtPiBpbnQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9leHRyYWN0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2V4dHJhY3QoejEsIHBvcywgbGVuKSB7XG4gIHoxID0gYmlnSW50KHoxKTtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHoxLnNoaWZ0UmlnaHQocG9zKS5hbmQoYmlnSW50KDIpLnBvdyhsZW4pLnN1YnRyYWN0KDEpKSk7XG59XG5cbi8vZXh0ZXJuYWwgZ2NkZXh0X2ludGVybjogdCAtPiB0IC0+ICh0ICogdCAqIGJvb2wpXG4vL1Byb3ZpZGVzOiBtbF96X2djZGV4dF9pbnRlcm5cbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfZ2NkZXh0X2ludGVybih6MSwgejIpIHtcbiAgejEgPSBiaWdJbnQoejEpO1xuICB6MiA9IGJpZ0ludCh6Mik7XG4gIHZhciBnY2QgPSBiaWdJbnQuZ2NkKHoxLHoyKTtcbiAgdmFyIGEgPSB6MTtcbiAgdmFyIGIgPSB6MjtcbiAgdmFyIHggPSBiaWdJbnQoMCk7XG4gIHZhciBsYXN0eCA9IGJpZ0ludCgxKTtcbiAgdmFyIHkgPSBiaWdJbnQoMSk7XG4gIHZhciBsYXN0eSA9IGJpZ0ludCgxKTtcbiAgdmFyIHEsIHQsIHI7XG4gIGlmKHoxLmVxdWFscyhiaWdJbnQoMCkpKSB7XG4gICAgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xuICB9XG4gIHdoaWxlKCFiLmVxdWFscyhiaWdJbnQoMCkpKSB7XG4gICAgcSA9IGEuZGl2aWRlKGIpO1xuICAgIHIgPSBhLnN1YnRyYWN0KHEubXVsdGlwbHkoYikpO1xuICAgIHQgPSB4O1xuICAgIHggPSBsYXN0eC5zdWJ0cmFjdChxLm11bHRpcGx5KHgpKTtcbiAgICBsYXN0eCA9IHQ7XG4gICAgdCA9IHk7XG4gICAgeSA9IGxhc3R5LnN1YnRyYWN0KHEubXVsdGlwbHkoeSkpO1xuICAgIGxhc3R5ID0gdDtcbiAgICBhID0gYjtcbiAgICBiID0gcjtcbiAgfVxuICBpZihhLmx0KGJpZ0ludCgwKSkpXG4gICAgcmV0dXJuIFswLG1sX3pfbm9ybWFsaXplKGEubmVnYXRlKCkpLG1sX3pfbm9ybWFsaXplKGxhc3R4Lm5lZ2F0ZSgpKSwxXVxuICBlbHNlXG4gICAgcmV0dXJuIFswLG1sX3pfbm9ybWFsaXplKGEpLG1sX3pfbm9ybWFsaXplKGxhc3R4KSwxXVxufVxuXG4vL2V4dGVybmFsIHNxcnQ6IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9zcXJ0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfcm9vdCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X3NxcnQoejEpIHtcbiAgdmFyIHogPSBiaWdJbnQoejEpO1xuICB2YXIgemVybyA9IGJpZ0ludCgwKTtcbiAgaWYgKHoubHQoemVybykpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLnNxcnQ6IHNxdWFyZSByb290IG9mIGEgbmVnYXRpdmUgbnVtYmVyXCIpO1xuICB9XG4gIHJldHVybiBtbF96X3Jvb3QoeiwgMik7XG59XG5cbi8vZXh0ZXJuYWwgc3FydF9yZW06IHQgLT4gKHQgKiB0KVxuLy9Qcm92aWRlczogbWxfel9zcXJ0X3JlbVxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X3Jvb3QsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfc3FydF9yZW0oeikge1xuICB6ID0gYmlnSW50KHopO1xuICB2YXIgemVybyA9IGJpZ0ludCgwKTtcbiAgaWYgKHoubHQoemVybykpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLnNxcnRfcmVtOiBzcXVhcmUgcm9vdCBvZiBhIG5lZ2F0aXZlIG51bWJlclwiKTtcbiAgfVxuICB2YXIgcm9vdCA9IGJpZ0ludChtbF96X3Jvb3QoeiwgMikpO1xuICB2YXIgbXVsID0gcm9vdC5tdWx0aXBseShyb290KTtcbiAgdmFyIGRpZmYgPSB6LnN1YnRyYWN0KG11bCk7XG4gIHJldHVybiBbMCwgbWxfel9ub3JtYWxpemUocm9vdCksIG1sX3pfbm9ybWFsaXplKGRpZmYpXVxufVxuXG4vL2V4dGVybmFsIHRyYWlsaW5nX3plcm9zOiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel90cmFpbGluZ196ZXJvcyBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X3RyYWlsaW5nX3plcm9zKHopIHtcbiAgeiA9IGJpZ0ludCh6KS5hYnMoKTtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIGlmICh6LmVxdWFscyh6ZXJvKSkge1xuICAgIC8vIG1heF9pbnQgaW4gMzJiaXRcbiAgICByZXR1cm4gMHg3ZmZmZmZmZjtcbiAgfVxuICB2YXIgaSA9IDBcbiAgeiA9IHoueG9yKHoucHJldigpKS5zaGlmdFJpZ2h0KDEpO1xuICBmb3IgKGkgPSAwOyAhei5lcXVhbHMoYmlnSW50Lnplcm8pOyBpKyspIHtcbiAgICB6ID0gei5zaGlmdFJpZ2h0KDEpO1xuICB9XG4gIHJldHVybiBpO1xufVxuXG4vL2V4dGVybmFsIHBvcGNvdW50OiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9wb3Bjb3VudFxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBtbF96X3BvcGNvdW50KHopIHtcbiAgeiA9IGJpZ0ludCh6KTtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIGlmICh6Lmx0KHplcm8pKSB7XG4gICAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX25hbWVkX3ZhbHVlKFwibWxfel9vdmVyZmxvd1wiKSk7XG4gIH1cbiAgdmFyIGk7XG4gIGZvciAoaSA9IDA7ICF6LmVxdWFscyh6ZXJvKTsgaSsrKSB7XG4gICAgeiA9IHouYW5kKHoucHJldigpKTtcbiAgfVxuICBpZihpICE9IChpfDApKSBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfbmFtZWRfdmFsdWUoXCJtbF96X292ZXJmbG93XCIpKTtcbiAgcmV0dXJuIGl8MDtcbn1cblxuLy9leHRlcm5hbCBoYW1kaXN0OiB0IC0+IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X2hhbWRpc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9wb3Bjb3VudCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBtbF96X2hhbWRpc3QoejEsIHoyKSB7XG4gIGlmKGJpZ0ludCh6MSkuaXNOZWdhdGl2ZSgpICE9IGJpZ0ludCh6MikuaXNOZWdhdGl2ZSAoKSl7XG4gICAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX25hbWVkX3ZhbHVlKFwibWxfel9vdmVyZmxvd1wiKSk7XG4gIH1cbiAgaWYoKHoxICE9ICh6MSB8IDApIHx8IHoyICE9ICh6MiB8IDApKSAmJiAoYmlnSW50KHoxKS5pc05lZ2F0aXZlKCkgfHwgYmlnSW50KHoyKS5pc05lZ2F0aXZlICgpKSl7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5oYW1kaXN0OiBuZWdhdGl2ZSBhcmd1bWVudHNcIik7XG4gIH1cbiAgcmV0dXJuIG1sX3pfcG9wY291bnQoYmlnSW50KHoxKS54b3IoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIHNpemU6IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X3NpemUgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9zaXplKHoxKSB7XG4gIC8vIENsYWltIHRvIGJlIGEgMzItYml0IGFyY2hpdGVjdHVyZS5cbiAgcmV0dXJuIGJpZ0ludCh6MSkudG9BcnJheShNYXRoLnBvdygyLCAzMikpLnZhbHVlLmxlbmd0aDtcbn1cblxuLy9leHRlcm5hbCBkaXZleGFjdDogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfZGl2ZXhhY3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9kaXZcbmZ1bmN0aW9uIG1sX3pfZGl2ZXhhY3QoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X2Rpdih6MSwgejIpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfemFyaXRoX21hcnNoYWxcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gY2FtbF96YXJpdGhfbWFyc2hhbCh3cml0ZXIsIHYsIHN6KSB7XG4gIHYgPSBiaWdJbnQodik7XG4gIHZhciBiaXRzID0gdi50b0FycmF5KE1hdGgucG93KDIsIDMyKSk7XG4gIHdyaXRlci53cml0ZSg4LCBiaXRzLmlzTmVnYXRpdmUgPzEgOiAwKTtcbiAgdmFyIGJsb2NrID0gYml0cy52YWx1ZS5sZW5ndGg7XG4gIHZhciBsZW4gPSBibG9jayAqIDQ7XG4gIHdyaXRlci53cml0ZSgzMiwgbGVuKTtcbiAgZm9yKHZhciBpID0gYmxvY2sgLSAxOyBpID49IDA7IGkgLS0pe1xuICAgIHdyaXRlci53cml0ZSg4LCAoYml0cy52YWx1ZVtpXSA+Pj4gMCApICYgMHhmZik7XG4gICAgd3JpdGVyLndyaXRlKDgsIChiaXRzLnZhbHVlW2ldID4+PiA4ICkgJiAweGZmKTtcbiAgICB3cml0ZXIud3JpdGUoOCwgKGJpdHMudmFsdWVbaV0gPj4+IDE2KSAmIDB4ZmYpO1xuICAgIHdyaXRlci53cml0ZSg4LCAoYml0cy52YWx1ZVtpXSA+Pj4gMjQpICYgMHhmZik7XG4gIH1cbiAgc3pbMF0gPSA0ICogKDEgKyAoKChsZW4gKyAzKSAvIDQpIHwgMCkpO1xuICBzelsxXSA9IDggKiAoMSArICgoKGxlbiArIDcpIC8gOCkgfCAwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfemFyaXRoX3VubWFyc2hhbFxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2ZhaWx3aXRoLCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gY2FtbF96YXJpdGhfdW5tYXJzaGFsKHJlYWRlciwgc3opIHtcbiAgdmFyIG5lZ2F0ZTtcbiAgc3dpdGNoKHJlYWRlci5yZWFkOHUgKCkpIHtcbiAgY2FzZSAxOiBuZWdhdGUgPSB0cnVlOyBicmVhaztcbiAgY2FzZSAwOiBuZWdhdGUgPSBmYWxzZTsgYnJlYWs7XG4gIGRlZmF1bHQ6IGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogeiAobWFsZm9ybWVkIGlucHV0KVwiKTtcbiAgfVxuICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgdmFyIHggPSBiaWdJbnQoMCk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4gLyA0OyBpKyspe1xuICAgIHZhciB5ID0gYmlnSW50KHJlYWRlci5yZWFkOHUoKSk7XG4gICAgeSA9IHkuYWRkKChyZWFkZXIucmVhZDh1KCkpIDw8IDgpO1xuICAgIHkgPSB5LmFkZCgocmVhZGVyLnJlYWQ4dSgpKSA8PCAxNik7XG4gICAgeSA9IHkuYWRkKCgocmVhZGVyLnJlYWQ4dSgpKSA8PCAyNCkgPj4+IDApO1xuICAgIHggPSB5LnNoaWZ0TGVmdChpICogMzIpLmFkZCh4KTtcbiAgfVxuICBpZihuZWdhdGUpIHggPSB4Lm5lZ2F0ZSgpO1xuICBzelswXSA9IGxlbiArIDQ7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZSh4KVxufVxuXG4vL1Byb3ZpZGVzOiBtbF96X2RpdmlzaWJsZVxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X2RpdmlzaWJsZShhLCBiKXtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIGEgPSBiaWdJbnQoYSk7XG4gIGIgPSBiaWdJbnQoYik7XG4gIGlmKGEuZXF1YWxzKHplcm8pICYmIGIuZXF1YWxzKHplcm8pKSByZXR1cm4gMTtcbiAgcmV0dXJuIGEuaXNEaXZpc2libGVCeShiKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfY29uZ3J1ZW50XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfY29uZ3J1ZW50KGEsYixjKXtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIGEgPSBiaWdJbnQoYSk7XG4gIGIgPSBiaWdJbnQoYik7XG4gIGMgPSBiaWdJbnQoYyk7XG4gIGlmKGMuZXF1YWxzKHplcm8pICYmIGEuZXF1YWxzKGIpKSByZXR1cm4gMTtcbiAgcmV0dXJuIGEubWludXMoYikuaXNEaXZpc2libGVCeShjKSA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X3JlbW92ZVxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZSwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gbWxfel9yZW1vdmUoYSxiKXtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIGEgPSBiaWdJbnQoYSk7XG4gIGIgPSBiaWdJbnQoYik7XG4gIGlmKGIuZXF1YWxzKHplcm8pKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gIGlmKGEuZXF1YWxzKHplcm8pIHx8IGIuYWJzKCkuZXF1YWxzKG9uZSkpIHJldHVybiBbMCwgYSwgMF07XG4gIHZhciBpID0gMDtcbiAgd2hpbGUoYS5pc0RpdmlzaWJsZUJ5KGIpKXtcbiAgICBhID0gYS5kaXZpZGUoYik7XG4gICAgaSsrO1xuICB9XG4gIHJldHVybiBbMCwgbWxfel9ub3JtYWxpemUoYSksIGldO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X2ZhY1xuLy9SZXF1aXJlczogbWxfel9mYWNNLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIG1sX3pfZmFjKGkpe1xuICBpZihpPD0wKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLmZhY3Q6IG5lZ2F0aXZlIGFyZ3VtZW50c1wiKTtcbiAgcmV0dXJuIG1sX3pfZmFjTShpLDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X2ZhYzJcbi8vUmVxdWlyZXM6IG1sX3pfZmFjTSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X2ZhYzIoaSl7XG4gIGlmKGk8PTApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlouZmFjdDI6IG5lZ2F0aXZlIGFyZ3VtZW50c1wiKTtcbiAgcmV0dXJuIG1sX3pfZmFjTShpLDIpO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X2ZhY01cbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9mYWNNKGksIG0pe1xuICBpZihpPD0wfHxtPD0wKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLmZhY3RNOiBuZWdhdGl2ZSBhcmd1bWVudHNcIik7XG4gIG0gPSBiaWdJbnQobSk7XG4gIHZhciBjdXJyZW50ID0gYmlnSW50KGkpO1xuICB2YXIgcmVzID0gYmlnSW50KDEpO1xuICB3aGlsZShjdXJyZW50LmlzUG9zaXRpdmUoKSl7XG4gICAgcmVzID0gcmVzLm11bHRpcGx5KGN1cnJlbnQpO1xuICAgIGN1cnJlbnQgPSBjdXJyZW50Lm1pbnVzKG0pO1xuICB9XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShyZXMpO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X2ZpYlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBtbF96X25vcm1hbGl6ZSwgYmlnSW50XG5mdW5jdGlvbiBtbF96X2ZpYihpKXtcbiAgaWYoaSA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlouZmliOiBuZWdhdGl2ZSBhcmd1bWVudHNcIik7XG4gIGlmKGkgPT0gMCB8fCBpID09IDEpIHJldHVybiBpO1xuICB2YXIgYSA9IGJpZ0ludCgwKSwgYiA9IGJpZ0ludCgxKTtcbiAgZm9yKHZhciBrID0gMTsgayA8IGk7IGsrKyl7XG4gICAgdmFyIGIyID0gYjtcbiAgICBiID0gYS5hZGQoYik7XG4gICAgYSA9IGIyO1xuICB9XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiKTtcbn1cblxuLy9Qcm92aWRlczogbWxfel9sdWNudW1cbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgbWxfel9ub3JtYWxpemUsIGJpZ0ludFxuZnVuY3Rpb24gbWxfel9sdWNudW0oaSl7XG4gIGlmKGkgPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLmx1Y251bTogbmVnYXRpdmUgYXJndW1lbnRzXCIpO1xuICBpZihpID09IDApIHJldHVybiAyO1xuICBpZihpID09IDEpIHJldHVybiAxO1xuICB2YXIgYSA9IGJpZ0ludCgyKSwgYiA9IGJpZ0ludCgxKTtcbiAgZm9yKHZhciBrID0gMTsgayA8IGk7IGsrKyl7XG4gICAgdmFyIGIyID0gYjtcbiAgICBiID0gYS5hZGQoYik7XG4gICAgYSA9IGIyO1xuICB9XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiKTtcbn1cblxuLy9Qcm92aWRlczogbWxfel9qYWNvYmlcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X2phY29iaShuLCBrKXtcbiAgbiA9IGJpZ0ludChuKTtcbiAgayA9IGJpZ0ludChrKTtcbiAgLy9hc3NlcnQoayA+IDAgYW5kIGsgJSAyID09IDEpXG4gIGlmKGsubGVxKGJpZ0ludCgwKSkgfHwgay5tb2QoYmlnSW50KDIpKS5uZXEoYmlnSW50KDEpKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLmphY29iaTogc2Vjb25kIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIGV2ZW5cIik7XG4gIG4gPSBuLm1vZChrKTtcbiAgaWYobi5sdChiaWdJbnQoMCkpKSBuID0gbi5hZGQoayk7XG4gIHZhciB0ID0gMTtcbiAgd2hpbGUgKCEgbi5lcXVhbHMoYmlnSW50KDApKSl7XG4gICAgd2hpbGUgKG4uaXNEaXZpc2libGVCeShiaWdJbnQoMikpKSB7XG4gICAgICBuID0gbi5kaXZpZGUoYmlnSW50KDIpKVxuICAgICAgdmFyIHIgPSBrLm1vZChiaWdJbnQoOCkpXG4gICAgICBpZiAoci5lcXVhbHMoYmlnSW50KDMpKSB8fCByLmVxdWFscyhiaWdJbnQoNSkpKXtcbiAgICAgICAgdCA9IC10XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBuMSA9IG4sIGsxID0gaztcbiAgICBuID0gazE7XG4gICAgayA9IG4xO1xuICAgIGlmIChuLm1vZChiaWdJbnQoNCkpLmVxdWFscyhiaWdJbnQoMykpICYmICBrLm1vZChiaWdJbnQoNCkpLmVxdWFscyhiaWdJbnQoMykpKSB7XG4gICAgICB0ID0gLXRcbiAgICB9XG4gICAgbiA9IG4ubW9kKGspXG4gIH1cbiAgaWYoay5lcXVhbHMoYmlnSW50KDEpKSlcbiAgICByZXR1cm4gdFxuICBlbHNlXG4gICAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogbWxfel9sZWdlbmRyZVxuLy9SZXF1aXJlczogbWxfel9qYWNvYmlcbmZ1bmN0aW9uIG1sX3pfbGVnZW5kcmUoYSxiKXtcbiAgcmV0dXJuIG1sX3pfamFjb2JpKGEsYik7XG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfa3JvbmVja2VyXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBtbF96X2tyb25lY2tlcihuLGspe1xuICBjYW1sX2ZhaWx3aXRoKFwibWxfel9rcm9uZWNrZXIgaXMgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X3ByaW1vcmlhbFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9wcmltb3JpYWwoYSl7XG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIHZhciB0d28gPSBiaWdJbnQoMik7XG4gIHZhciB6MSA9IG9uZTtcbiAgdmFyIHJlcyA9IG9uZTtcbiAgYSA9IGJpZ0ludChhKTtcbiAgd2hpbGUgKHoxLmxlcShhKSkge1xuICAgIGlmICh6MS5pc1Byb2JhYmxlUHJpbWUoMjUpKSB7XG4gICAgICByZXMgPSByZXMubXVsdGlwbHkoejEpO1xuICAgIH1cbiAgICBpZih6MS5lcXVhbHMob25lKSB8fCB6MS5lcXVhbHModHdvKSkgejEgPSB6MS5hZGQob25lKTtcbiAgICBlbHNlIHoxID0gejEuYWRkKHR3bylcbiAgfVxuICByZXR1cm4gbWxfel9ub3JtYWxpemUocmVzKTtcbn1cblxuLy9Qcm92aWRlczogbWxfel9iaW5cbi8vUmVxdWlyZXM6IG1sX3pfbm9ybWFsaXplLCBiaWdJbnQsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9iaW4obiwgayl7XG4gIHZhciBuID0gYmlnSW50KG4pO1xuICB2YXIgayA9IGJpZ0ludChrKTtcbiAgdmFyIGNvZWZmID0gYmlnSW50KDEpO1xuICBmb3IgKHZhciB4ID0gbi5taW51cyhrKS5hZGQoYmlnSW50KDEpKTsgeC5sZXEobik7IHggPSB4LmFkZChiaWdJbnQoMSkpKSBjb2VmZiA9IGNvZWZmLm11bHRpcGx5KHgpO1xuICBmb3IgKHggPSBiaWdJbnQoMSk7IHgubGVxKGspOyB4ID0geC5hZGQoYmlnSW50KDEpKSkgY29lZmYgPSBjb2VmZi5kaXZpZGUoeCk7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShjb2VmZik7XG5cbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkLCBBbmR5IFJheVxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuLy9cbi8vIEJpZ2FycmF5LlxuLy9cbi8vIC0gYWxsIGJpZ2FycmF5IHR5cGVzIGluY2x1ZGluZyBJbnQ2NCBhbmQgQ29tcGxleC5cbi8vIC0gZm9ydHJhbiArIGMgbGF5b3V0c1xuLy8gLSBzdWIvc2xpY2UvcmVzaGFwZVxuLy8gLSByZXRhaW4gZmFzdCBwYXRoIGZvciAxZCBhcnJheSBhY2Nlc3NcblxuLy9Qcm92aWRlczogY2FtbF9iYV9pbml0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2JhX2luaXQoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemUoZGltcykge1xuICB2YXIgbl9kaW1zID0gZGltcy5sZW5ndGg7XG4gIHZhciBzaXplID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuX2RpbXM7IGkrKykge1xuICAgIGlmIChkaW1zW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmNyZWF0ZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIHNpemUgPSBzaXplICogZGltc1tpXTtcbiAgfVxuICByZXR1cm4gc2l6ZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKXtcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDc6IGNhc2UgMTA6IGNhc2UgMTE6IHJldHVybiAyO1xuICBkZWZhdWx0OiByZXR1cm4gMTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpe1xuICB2YXIgZyA9IGdsb2JhbFRoaXM7XG4gIHZhciB2aWV3O1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMDogIHZpZXcgPSBnLkZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTogIHZpZXcgPSBnLkZsb2F0NjRBcnJheTsgYnJlYWs7XG4gIGNhc2UgMjogIHZpZXcgPSBnLkludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgMzogIHZpZXcgPSBnLlVpbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDQ6ICB2aWV3ID0gZy5JbnQxNkFycmF5OyBicmVhaztcbiAgY2FzZSA1OiAgdmlldyA9IGcuVWludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDY6ICB2aWV3ID0gZy5JbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA3OiAgdmlldyA9IGcuSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgODogIHZpZXcgPSBnLkludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDk6ICB2aWV3ID0gZy5JbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxMDogdmlldyA9IGcuRmxvYXQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxMTogdmlldyA9IGcuRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAxMjogdmlldyA9IGcuVWludDhBcnJheTsgYnJlYWs7XG4gIH1cbiAgaWYgKCF2aWV3KSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHZhciBkYXRhID0gbmV3IHZpZXcoc2l6ZSAqIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCkpO1xuICByZXR1cm4gZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA8IDQuMTFcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyYXlcIlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1ZlcnNpb246ID49IDQuMTFcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyMDJcIlxuXG4vL1Byb3ZpZGVzOiBNbF9CaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSwgY2FtbF9pbnQ2NF9oaTMyLCBjYW1sX2ludDY0X2xvMzJcbmZ1bmN0aW9uIE1sX0JpZ2FycmF5IChraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuXG4gIHRoaXMua2luZCAgID0ga2luZCA7XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLmRpbXMgICA9IGRpbXM7XG4gIHRoaXMuZGF0YSA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gY2FtbF9iYV9jdXN0b21fbmFtZTtcblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgdmFyIG9mcyA9IDA7XG4gIGlmKHR5cGVvZiBhcmcgPT09IFwibnVtYmVyXCIpIGFyZyA9IFthcmddO1xuICBpZiAoISAoYXJnIGluc3RhbmNlb2YgQXJyYXkpKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJiaWdhcnJheS5qczogaW52YWxpZCBvZmZzZXRcIik7XG4gIGlmICh0aGlzLmRpbXMubGVuZ3RoICE9IGFyZy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuZ2V0L3NldDogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICBpZih0aGlzLmxheW91dCA9PSAwIC8qIGNfbGF5b3V0ICovKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhcmdbaV0gPCAwIHx8IGFyZ1tpXSA+PSB0aGlzLmRpbXNbaV0pXG4gICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgIG9mcyA9IChvZnMgKiB0aGlzLmRpbXNbaV0pICsgYXJnW2ldO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5kaW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMSB8fCBhcmdbaV0gPiB0aGlzLmRpbXNbaV0pe1xuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICB9XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIChhcmdbaV0gLSAxKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9mcztcbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChvZnMpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHZhciBsID0gdGhpcy5kYXRhW29mcyAqIDIgKyAwXTtcbiAgICB2YXIgaCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGwsaCk7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB2YXIgciA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGkgPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBbMjU0LCByLCBpXTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gdGhpcy5kYXRhW29mc11cbiAgfVxufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG9mcyx2KSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDBdID0gY2FtbF9pbnQ2NF9sbzMyKHYpO1xuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDBdID0gdlsxXTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gdlsyXTtcbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgYSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB2YXIgYiA9IGNhbWxfaW50NjRfaGkzMih2KTtcbiAgICBpZihhID09IGIpe1xuICAgICAgdGhpcy5kYXRhLmZpbGwoYSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gYSA6IGI7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIGltID0gdlsxXTtcbiAgICB2YXIgcmUgPSB2WzJdO1xuICAgIGlmKGltID09IHJlKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGltKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IodmFyIGkgPSAwOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHRoaXMuZGF0YVtpXSA9IChpJTIgPT0gMCkgPyBpbSA6IHJlO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgICBicmVhaztcbiAgfVxufVxuXG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKGIsIHRvdGFsKSB7XG4gIGlmICh0aGlzLmxheW91dCAhPSBiLmxheW91dCB8fCB0aGlzLmtpbmQgIT0gYi5raW5kKSB7XG4gICAgdmFyIGsxID0gdGhpcy5raW5kIHwgKHRoaXMubGF5b3V0IDw8IDgpO1xuICAgIHZhciBrMiA9ICAgIGIua2luZCB8IChiLmxheW91dCA8PCA4KTtcbiAgICByZXR1cm4gazIgLSBrMTtcbiAgfVxuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBiLmRpbXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGIuZGltcy5sZW5ndGggLSB0aGlzLmRpbXMubGVuZ3RoO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmICh0aGlzLmRpbXNbaV0gIT0gYi5kaW1zW2ldKVxuICAgICAgcmV0dXJuICh0aGlzLmRpbXNbaV0gPCBiLmRpbXNbaV0pID8gLTEgOiAxO1xuICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICBjYXNlIDA6XG4gIGNhc2UgMTpcbiAgY2FzZSAxMDpcbiAgY2FzZSAxMTpcbiAgICAvLyBGbG9hdHNcbiAgICB2YXIgeCwgeTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgeCA9IHRoaXMuZGF0YVtpXTtcbiAgICAgIHkgPSBiLmRhdGFbaV07XG4gICAgICBpZiAoeCA8IHkpXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh4ID4geSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoeCAhPSB5KSB7XG4gICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgIGlmICh4ID09IHgpIHJldHVybiAxO1xuICAgICAgICBpZiAoeSA9PSB5KSByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrPTIpIHtcbiAgICAgIC8vIENoZWNrIGhpZ2hlc3QgYml0cyBmaXJzdFxuICAgICAgaWYgKHRoaXMuZGF0YVtpKzFdIDwgYi5kYXRhW2krMV0pXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA+IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGlmICgodGhpcy5kYXRhW2ldID4+PiAwKSA8IChiLmRhdGFbaV0gPj4+IDApKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPiAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDI6XG4gIGNhc2UgMzpcbiAgY2FzZSA0OlxuICBjYXNlIDU6XG4gIGNhc2UgNjpcbiAgY2FzZSA4OlxuICBjYXNlIDk6XG4gIGNhc2UgMTI6XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmRhdGFbaV0gPCBiLmRhdGFbaV0pXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh0aGlzLmRhdGFbaV0gPiBiLmRhdGFbaV0pXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlfY18xXzFcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgYnVmZmVyKSB7XG4gIHRoaXMua2luZCAgID0ga2luZCA7XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLmRpbXMgICA9IGRpbXM7XG4gIHRoaXMuZGF0YSAgID0gYnVmZmVyO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUgPSBuZXcgTWxfQmlnYXJyYXkoKVxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgaWYodHlwZW9mIGFyZyAhPT0gXCJudW1iZXJcIil7XG4gICAgaWYoKGFyZyBpbnN0YW5jZW9mIEFycmF5KSAmJiBhcmcubGVuZ3RoID09IDEpXG4gICAgICBhcmcgPSBhcmdbMF07XG4gICAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJNbF9CaWdhcnJheV9jXzFfMS5vZmZzZXRcIik7XG4gIH1cbiAgaWYgKGFyZyA8IDAgfHwgYXJnID49IHRoaXMuZGltc1swXSlcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcmc7XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHJldHVybiB0aGlzLmRhdGFbb2ZzXTtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gIHJldHVybiAwXG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKHYpIHtcbiAgdGhpcy5kYXRhLmZpbGwodik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY29tcGFyZVxuZnVuY3Rpb24gY2FtbF9iYV9jb21wYXJlKGEsYix0b3RhbCl7XG4gIHJldHVybiBhLmNvbXBhcmUoYix0b3RhbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgTWxfQmlnYXJyYXlfY18xXzEsIGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSl7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKTtcbiAgaWYoY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSAqIHNpemVfcGVyX2VsZW1lbnQgIT0gZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJsZW5ndGggZG9lc24ndCBtYXRjaCBkaW1zXCIpO1xuICB9XG4gIGlmKGxheW91dCA9PSAwICYmIC8vIGNfbGF5b3V0XG4gICAgIGRpbXMubGVuZ3RoID09IDEgJiYgLy8gQXJyYXkxXG4gICAgIHNpemVfcGVyX2VsZW1lbnQgPT0gMSkgLy8gMS10by0xIG1hcHBpbmdcbiAgICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHJldHVybiBuZXcgTWxfQmlnYXJyYXkoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcblxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZShraW5kLCBsYXlvdXQsIGRpbXNfbWwpIHtcbiAgdmFyIGRpbXMgPSBjYW1sX2pzX2Zyb21fYXJyYXkoZGltc19tbCk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIGNhbWxfYmFfZ2V0X3NpemUoZGltcykpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY2hhbmdlX2xheW91dFxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2NoYW5nZV9sYXlvdXQoYmEsIGxheW91dCkge1xuICBpZihiYS5sYXlvdXQgPT0gbGF5b3V0KSByZXR1cm4gYmE7XG4gIHZhciBuZXdfZGltcyA9IFtdXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBuZXdfZGltc1tpXSA9IGJhLmRpbXNbYmEuZGltcy5sZW5ndGggLSBpIC0gMV07XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgbGF5b3V0LCBuZXdfZGltcywgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfa2luZFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kKGJhKSB7XG4gIHJldHVybiBiYS5raW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2xheW91dFxuZnVuY3Rpb24gY2FtbF9iYV9sYXlvdXQoYmEpIHtcbiAgcmV0dXJuIGJhLmxheW91dDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9udW1fZGltc1xuZnVuY3Rpb24gY2FtbF9iYV9udW1fZGltcyhiYSkge1xuICByZXR1cm4gYmEuZGltcy5sZW5ndGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZGltKGJhLCBpKSB7XG4gIGlmIChpIDwgMCB8fCBpID49IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmRpbVwiKTtcbiAgcmV0dXJuIGJhLmRpbXNbaV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8xKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8yKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8zKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfZ2VuZXJpYyhiYSwgaSkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSk7XG4gIHJldHVybiBiYS5nZXQob2ZzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQxNihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDEgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMgKyAxKTtcbiAgcmV0dXJuIChiMSB8IChiMiA8PCA4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MzIoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHJldHVybiAoIChiMSA8PCAwKSAgfFxuICAgICAgICAgICAoYjIgPDwgOCkgIHxcbiAgICAgICAgICAgKGIzIDw8IDE2KSB8XG4gICAgICAgICAgIChiNCA8PCAyNCkgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQ2NChiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyswKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcysxKTtcbiAgdmFyIGIzID0gYmEuZ2V0KG9mcysyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyszKTtcbiAgdmFyIGI1ID0gYmEuZ2V0KG9mcys0KTtcbiAgdmFyIGI2ID0gYmEuZ2V0KG9mcys1KTtcbiAgdmFyIGI3ID0gYmEuZ2V0KG9mcys2KTtcbiAgdmFyIGI4ID0gYmEuZ2V0KG9mcys3KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW2I4LGI3LGI2LGI1LGI0LGIzLGIyLGIxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzEoYmEsIGkwKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KGkwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzIoYmEsIGkwLCBpMSkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChbaTAsaTFdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzMoYmEsIGkwLCBpMSwgaTIpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxLGkyXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0X2dlbmVyaWMoYmEsIGksIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpLCB2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQxNihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDEgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYmEuc2V0KG9mcyswLCAgdiAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MzIoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzEsICh2ID4+PiA4KSAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysyLCAodiA+Pj4gMTYpICYgMHhmZik7XG4gIGJhLnNldChvZnMrMywgKHYgPj4+IDI0KSAmIDB4ZmYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQ2NChiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIHYgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHYpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgODsgaSsrKSBiYS5zZXQob2ZzK2ksIHZbNy1pXSlcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzEoYmEsIGkwLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoaTApLCB2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMihiYSwgaTAsIGkxLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLGkxXSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfM1xuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMyhiYSwgaTAsIGkxLCBpMiwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZmlsbFxuZnVuY3Rpb24gY2FtbF9iYV9maWxsKGJhLCB2KSB7XG4gIGJhLmZpbGwodik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9ibGl0KHNyYywgZHN0KSB7XG4gIGlmIChkc3QuZGltcy5sZW5ndGggIT0gc3JjLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmJsaXQ6IGRpbWVuc2lvbiBtaXNtYXRjaFwiKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkc3QuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAoZHN0LmRpbXNbaV0gIT0gc3JjLmRpbXNbaV0pXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGRzdC5kYXRhLnNldChzcmMuZGF0YSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3N1YlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc3ViKGJhLCBvZnMsIGxlbikge1xuICB2YXIgY2hhbmdlZF9kaW07XG4gIHZhciBtdWwgPSAxO1xuICBpZiAoYmEubGF5b3V0ID09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgICBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gMDtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IChiYS5kaW1zLmxlbmd0aCAtIDEpOyBpKyspXG4gICAgICBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gYmEuZGltcy5sZW5ndGggLSAxO1xuICAgIG9mcyA9IG9mcyAtIDE7XG4gIH1cbiAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCAob2ZzICsgbGVuKSA+IGJhLmRpbXNbY2hhbmdlZF9kaW1dKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5zdWI6IGJhZCBzdWItYXJyYXlcIik7XG4gIH1cbiAgdmFyIG5ld19kaW1zID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICBuZXdfZGltc1tpXSA9IGJhLmRpbXNbaV07XG4gIG5ld19kaW1zW2NoYW5nZWRfZGltXSA9IGxlbjtcbiAgbXVsICo9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogbXVsLCAob2ZzICsgbGVuKSAqIG11bCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NsaWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3NsaWNlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBudW1faW5kcyA9IHZpbmQubGVuZ3RoO1xuICB2YXIgaW5kZXggPSBbXTtcbiAgdmFyIHN1Yl9kaW1zID0gW107XG4gIHZhciBvZnM7XG5cbiAgaWYgKG51bV9pbmRzID4gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc2xpY2U6IHRvbyBtYW55IGluZGljZXNcIik7XG5cbiAgLy8gQ29tcHV0ZSBvZmZzZXQgYW5kIGNoZWNrIGJvdW5kc1xuICBpZiAoYmEubGF5b3V0ID09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IHZpbmRbaV07XG4gICAgZm9yICg7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSAwO1xuICAgIHN1Yl9kaW1zID0gYmEuZGltcy5zbGljZShudW1faW5kcyk7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbYmEuZGltcy5sZW5ndGggLSBudW1faW5kcyArIGldID0gdmluZFtpXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMTtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UoMCwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kcyk7XG4gIH1cbiAgb2ZzID0gYmEub2Zmc2V0KGluZGV4KTtcbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKHN1Yl9kaW1zKTtcbiAgdmFyIHNpemVfcGVyX2VsZW1lbnQgPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIHNpemVfcGVyX2VsZW1lbnQsIChvZnMgKyBzaXplKSAqIHNpemVfcGVyX2VsZW1lbnQpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgc3ViX2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9yZXNoYXBlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG5mdW5jdGlvbiBjYW1sX2JhX3Jlc2hhcGUoYmEsIHZpbmQpIHtcbiAgdmluZCA9IGNhbWxfanNfZnJvbV9hcnJheSh2aW5kKTtcbiAgdmFyIG5ld19kaW0gPSBbXTtcbiAgdmFyIG51bV9kaW1zID0gdmluZC5sZW5ndGg7XG5cbiAgaWYgKG51bV9kaW1zIDwgMCB8fCBudW1fZGltcyA+IDE2KXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIH1cbiAgdmFyIG51bV9lbHRzID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgbmV3X2RpbVtpXSA9IHZpbmRbaV07XG4gICAgaWYgKG5ld19kaW1baV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIG51bV9lbHRzID0gbnVtX2VsdHMgKiBuZXdfZGltW2ldO1xuICB9XG5cbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICAvLyBDaGVjayB0aGF0IHNpemVzIGFncmVlXG4gIGlmIChudW1fZWx0cyAhPSBzaXplKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IHNpemUgbWlzbWF0Y2hcIik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXJpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX3NlcmlhbGl6ZSh3cml0ZXIsIGJhLCBzeikge1xuICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXMubGVuZ3RoKTtcbiAgd3JpdGVyLndyaXRlKDMyLCAoYmEua2luZCB8IChiYS5sYXlvdXQgPDwgOCkpKTtcbiAgaWYoYmEuY2FtbF9jdXN0b20gPT0gXCJfYmlnYXJyMDJcIilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYoYmEuZGltc1tpXSA8IDB4ZmZmZilcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCBiYS5kaW1zW2ldKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIDB4ZmZmZik7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgMCk7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGltc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICBlbHNlXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHdyaXRlci53cml0ZSgzMixiYS5kaW1zW2ldKVxuICBzd2l0Y2goYmEua2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoOCwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDE2LCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICB3cml0ZXIud3JpdGUoOCwwKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OiAgLy8gSW50MzJBcnJheSAoaW50NjQpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhiYS5nZXQoaSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGJhLmdldChpKSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgaiA9IGJhLmdldChpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMV0pKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMl0pKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgY29tcGxleCA9IGJhLmdldChpKTtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsxXSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMl0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICBzelswXSA9ICg0ICsgYmEuZGltcy5sZW5ndGgpICogNDtcbiAgc3pbMV0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGVzZXJpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlcywgY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9kZXNlcmlhbGl6ZShyZWFkZXIsIHN6LCBuYW1lKXtcbiAgdmFyIG51bV9kaW1zID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgaWYgKG51bV9kaW1zIDwgMCB8fCBudW1fZGltcyA+IDE2KVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogd3JvbmcgbnVtYmVyIG9mIGJpZ2FycmF5IGRpbWVuc2lvbnNcIik7XG4gIHZhciB0YWcgPSByZWFkZXIucmVhZDMycygpO1xuICB2YXIga2luZCA9IHRhZyAmIDB4ZmZcbiAgdmFyIGxheW91dCA9ICh0YWcgPj4gOCkgJiAxO1xuICB2YXIgZGltcyA9IFtdXG4gIGlmKG5hbWUgPT0gXCJfYmlnYXJyMDJcIilcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIHtcbiAgICAgIHZhciBzaXplX2RpbSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgICBpZihzaXplX2RpbSA9PSAweGZmZmYpe1xuICAgICAgICB2YXIgc2l6ZV9kaW1faGkgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICB2YXIgc2l6ZV9kaW1fbG8gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICBpZihzaXplX2RpbV9oaSAhPSAwKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogYmlnYXJyYXkgZGltZW5zaW9uIG92ZXJmbG93IGluIDMyYml0XCIpO1xuICAgICAgICBzaXplX2RpbSA9IHNpemVfZGltX2xvO1xuICAgICAgfVxuICAgICAgZGltcy5wdXNoKHNpemVfZGltKTtcbiAgICB9XG4gIGVsc2VcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIGRpbXMucHVzaChyZWFkZXIucmVhZDMydSgpKTtcbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGRpbXMpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKTtcbiAgdmFyIGJhID0gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDhzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgdmFyIHNpeHR5ID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIGlmKHNpeHR5KSBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGNhbm5vdCByZWFkIGJpZ2FycmF5IHdpdGggNjQtYml0IE9DYW1sIGludHNcIik7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogLy8gKGludDY0KVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBpbnQ2NCA9IGNhbWxfaW50NjRfb2ZfYnl0ZXModCk7XG4gICAgICBiYS5zZXQoaSxpbnQ2NCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgZiA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGJhLnNldChpLGYpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICB2YXIgZiA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIGJhLnNldChpLGYpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICB2YXIgcmUgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICB2YXIgaW0gPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxbMjU0LHJlLGltXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgcmUgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW0gPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxbMjU0LHJlLGltXSk7XG4gICAgfVxuICAgIGJyZWFrXG4gIH1cbiAgc3pbMF0gPSAoNCArIG51bV9kaW1zKSAqIDQ7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9EZXByZWNhdGVkXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9mcm9tXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfZnJvbShkYXRhMSwgZGF0YTIsIGpzdHlwLCBraW5kLCBsYXlvdXQsIGRpbXMpe1xuICBpZihkYXRhMiB8fCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpID09IDIpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfY3JlYXRlX2Zyb206IHVzZSByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlXCIpO1xuICB9XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaGFzaCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9oYXNoX21peF9pbnQsIGNhbWxfaGFzaF9taXhfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfYmFfaGFzaChiYSl7XG4gIHZhciBudW1fZWx0cyA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIHZhciBoID0gMDtcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgaWYobnVtX2VsdHMgPiAyNTYpIG51bV9lbHRzID0gMjU2O1xuICAgIHZhciB3ID0gMCwgaSA9MDtcbiAgICBmb3IoaSA9IDA7IGkgKyA0IDw9IGJhLmRhdGEubGVuZ3RoOyBpKz00KXtcbiAgICAgIHcgPSBiYS5kYXRhW2krMF0gfCAoYmEuZGF0YVtpKzFdIDw8IDgpIHwgKGJhLmRhdGFbaSsyXSA8PCAxNikgfCAoYmEuZGF0YVtpKzNdIDw8IDI0KTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLHcpO1xuICAgIH1cbiAgICB3ID0gMDtcbiAgICBzd2l0Y2ggKG51bV9lbHRzICYgMykge1xuICAgIGNhc2UgMzogdyAgPSBiYS5kYXRhW2krMl0gPDwgMTY7ICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAyOiB3IHw9IGJhLmRhdGFbaSsxXSA8PCA4OyAgICAgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlIDE6IHcgfD0gYmEuZGF0YVtpKzBdO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMTI4KSBudW1fZWx0cyA9IDEyODtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgMiA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9Mil7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCAxNik7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgaWYgKChudW1fZWx0cyAmIDEpICE9IDApXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA3OiAgLy8gSW50MzJBcnJheSAoaW50NjQpXG4gICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgbnVtX2VsdHMgKj0gMlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBudW1fZWx0cyAqPTI7IC8qIGZhbGx0aHJvdWdoICovXG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9iYV90b190eXBlZF9hcnJheShiYSl7XG4gIHJldHVybiBiYS5kYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpe1xuICB2YXIgZyA9IGdsb2JhbFRoaXM7XG4gIHZhciBraW5kO1xuICBpZiAodGEgaW5zdGFuY2VvZiBnLkZsb2F0MzJBcnJheSkga2luZCA9IDA7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgZy5GbG9hdDY0QXJyYXkpIGtpbmQgPSAxO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIGcuSW50OEFycmF5KSBraW5kID0gMjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBnLlVpbnQ4QXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIGcuSW50MTZBcnJheSkga2luZCA9IDQ7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgZy5VaW50MTZBcnJheSkga2luZCA9IDU7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgZy5JbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBnLlVpbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXk6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHJldHVybiBraW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSh0YSl7XG4gIHZhciBraW5kID0gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgbGlicmFyeVxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEpzbGliXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfcHVyZV9leHByIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX3B1cmVfZXhwciAoZikgeyByZXR1cm4gZigpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfc2V0IChtdXRhYmxlLCBjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3NldChvLGYsdikgeyBvW2ZdPXY7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2dldChvLGYpIHsgcmV0dXJuIG9bZl07IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZGVsZXRlIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZGVsZXRlKG8sZikgeyBkZWxldGUgb1tmXTsgcmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaW5zdGFuY2VvZiAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19pbnN0YW5jZW9mKG8sYykgeyByZXR1cm4gKG8gaW5zdGFuY2VvZiBjKSA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdHlwZW9mIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdHlwZW9mKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmUocmVzKSB7XG4gIHZhciBjID0gMTtcbiAgd2hpbGUocmVzICYmIHJlcy5qb29fdHJhbXApe1xuICAgIHJlcyA9IHJlcy5qb29fdHJhbXAuYXBwbHkobnVsbCwgcmVzLmpvb19hcmdzKTtcbiAgICBjKys7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncykge1xuICByZXR1cm4ge2pvb190cmFtcDpmLGpvb19hcmdzOmFyZ3N9O1xufVxuXG4vL1Byb3ZpZGVzOiBqc19wcmludF9zdGRvdXQgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBqc19wcmludF9zdGRvdXQocykge1xuICB2YXIgcyA9IGNhbWxfdXRmMTZfb2ZfdXRmOChzKTtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICBpZiAoZy5wcm9jZXNzICYmIGcucHJvY2Vzcy5zdGRvdXQgJiYgZy5wcm9jZXNzLnN0ZG91dC53cml0ZSkge1xuICAgIGcucHJvY2Vzcy5zdGRvdXQud3JpdGUocylcbiAgfSBlbHNlIHtcbiAgICAvLyBEbyBub3Qgb3V0cHV0IHRoZSBsYXN0IFxcbiBpZiBwcmVzZW50XG4gICAgLy8gYXMgY29uc29sZSBsb2dnaW5nIGRpc3BsYXkgYSBuZXdsaW5lIGF0IHRoZSBlbmRcbiAgICBpZihzLmNoYXJDb2RlQXQocy5sZW5ndGggLSAxKSA9PSAxMClcbiAgICAgIHMgPSBzLnN1YnN0cigwLHMubGVuZ3RoIC0gMSApO1xuICAgIHZhciB2ID0gZy5jb25zb2xlO1xuICAgIHYgICYmIHYubG9nICYmIHYubG9nKHMpO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBqc19wcmludF9zdGRlcnIgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBqc19wcmludF9zdGRlcnIocykge1xuICB2YXIgcyA9IGNhbWxfdXRmMTZfb2ZfdXRmOChzKTtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICBpZiAoZy5wcm9jZXNzICYmIGcucHJvY2Vzcy5zdGRvdXQgJiYgZy5wcm9jZXNzLnN0ZG91dC53cml0ZSkge1xuICAgIGcucHJvY2Vzcy5zdGRlcnIud3JpdGUocylcbiAgfSBlbHNlIHtcbiAgICAvLyBEbyBub3Qgb3V0cHV0IHRoZSBsYXN0IFxcbiBpZiBwcmVzZW50XG4gICAgLy8gYXMgY29uc29sZSBsb2dnaW5nIGRpc3BsYXkgYSBuZXdsaW5lIGF0IHRoZSBlbmRcbiAgICBpZihzLmNoYXJDb2RlQXQocy5sZW5ndGggLSAxKSA9PSAxMClcbiAgICAgIHMgPSBzLnN1YnN0cigwLHMubGVuZ3RoIC0gMSApO1xuICAgIHZhciB2ID0gZy5jb25zb2xlO1xuICAgIHYgJiYgdi5lcnJvciAmJiB2LmVycm9yKHMpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfanNcbmZ1bmN0aW9uIGNhbWxfaXNfanMoKSB7XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dyYXBfZXhjZXB0aW9uIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsY2FtbF9uYW1lZF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9yZXR1cm5fZXhuX2NvbnN0YW50XG5mdW5jdGlvbiBjYW1sX3dyYXBfZXhjZXB0aW9uKGUpIHtcbiAgaWYoZSBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gZTtcbiAgLy9TdGFja19vdmVyZmxvdzogY2hyb21lLCBzYWZhcmlcbiAgaWYoZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlJhbmdlRXJyb3JcbiAgICAgJiYgZS5tZXNzYWdlXG4gICAgICYmIGUubWVzc2FnZS5tYXRjaCgvbWF4aW11bSBjYWxsIHN0YWNrL2kpKVxuICAgIHJldHVybiBjYW1sX3JldHVybl9leG5fY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5TdGFja19vdmVyZmxvdyk7XG4gIC8vU3RhY2tfb3ZlcmZsb3c6IGZpcmVmb3hcbiAgaWYoZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgJiYgZS5tZXNzYWdlXG4gICAgICYmIGUubWVzc2FnZS5tYXRjaCgvdG9vIG11Y2ggcmVjdXJzaW9uL2kpKVxuICAgIHJldHVybiBjYW1sX3JldHVybl9leG5fY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5TdGFja19vdmVyZmxvdyk7XG4gIC8vV3JhcCBFcnJvciBpbiBKcy5FcnJvciBleGNlcHRpb25cbiAgaWYoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IgJiYgY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIikpXG4gICAgcmV0dXJuIFswLGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpLGVdO1xuICAvL2ZhbGxiYWNrOiB3cmFwcGVkIGluIEZhaWx1cmVcbiAgcmV0dXJuIFswLGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoU3RyaW5nKGUpKV07XG59XG5cbi8vIEV4cGVyaW1lbnRhbFxuLy9Qcm92aWRlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgLy9uZXZlciByZXJhaXNlIGZvciBjb25zdGFudCBleG5cbiAgaWYoIWV4bi5qc19lcnJvciB8fCBmb3JjZSB8fCBleG5bMF0gPT0gMjQ4KSBleG4uanNfZXJyb3IgPSBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIkpzIGV4Y2VwdGlvbiBjb250YWluaW5nIGJhY2t0cmFjZVwiKTtcbiAgcmV0dXJuIGV4bjtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBbMCwgZXhuLmpzX2Vycm9yXTsgfVxuICByZXR1cm4gMDtcbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9ib29sKHgpIHsgcmV0dXJuICEheDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYm9vbCh4KSB7IHJldHVybiAreDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Zsb2F0IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9mbG9hdCh4KSB7IHJldHVybiB4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Zsb2F0IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9hcnJheShhKSB7XG4gIHJldHVybiBhLnNsaWNlKDEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc190b19hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc190b19hcnJheShhKSB7XG4gIHZhciBsZW4gPSBhLmxlbmd0aDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKzEpO1xuICBiWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxsZW47aSsrKSBiW2krMV0gPSBhW2ldO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X29mX2pzX2FycmF5IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfbGlzdF9vZl9qc19hcnJheShhKXtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGk9YS5sZW5ndGggLSAxOyBpPj0wOyBpLS0pe1xuICAgIHZhciBlID0gYVtpXTtcbiAgICBsID0gWzAsZSxsXTtcbiAgfVxuICByZXR1cm4gbFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xpc3RfdG9fanNfYXJyYXkgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9saXN0X3RvX2pzX2FycmF5KGwpe1xuICB2YXIgYSA9IFtdO1xuICBmb3IoOyBsICE9PSAwOyBsID0gbFsyXSkge1xuICAgIGEucHVzaChsWzFdKTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc192YXIgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBqc19wcmludF9zdGRlcnJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX3Zhcih4KSB7XG4gIHZhciB4ID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoeCk7XG4gIC8vQ2hlY2tzIHRoYXQgeCBoYXMgdGhlIGZvcm0gaWRlbnRbLmlkZW50XSpcbiAgaWYoIXgubWF0Y2goL15bYS16QS1aXyRdW2EtekEtWl8kMC05XSooXFwuW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKSokLykpe1xuICAgIGpzX3ByaW50X3N0ZGVycihcImNhbWxfanNfdmFyOiBcXFwiXCIgKyB4ICsgXCJcXFwiIGlzIG5vdCBhIHZhbGlkIEphdmFTY3JpcHQgdmFyaWFibGUuIGNvbnRpbnVpbmcgLi5cIik7XG4gICAgLy9nbG9iYWxUaGlzLmNvbnNvbGUuZXJyb3IoXCJKcy5VbnNhZmUuZXZhbF9zdHJpbmdcIilcbiAgfVxuICByZXR1cm4gZXZhbCh4KTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfY2FsbCAoY29uc3QsIG11dGFibGUsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfY2FsbChmLCBvLCBhcmdzKSB7IHJldHVybiBmLmFwcGx5KG8sIGNhbWxfanNfZnJvbV9hcnJheShhcmdzKSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuX2NhbGwgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2Z1bl9jYWxsKGYsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDE6IHJldHVybiBmKCk7XG4gIGNhc2UgMjogcmV0dXJuIGYgKGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBmIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIGNhc2UgODogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdLGFbN10pO1xuICB9XG4gIHJldHVybiBmLmFwcGx5KG51bGwsIGNhbWxfanNfZnJvbV9hcnJheShhKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX21ldGhfY2FsbCAobXV0YWJsZSwgY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX21ldGhfY2FsbChvLCBmLCBhcmdzKSB7XG4gIHJldHVybiBvW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGYpXS5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19uZXcgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX25ldyhjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMjogcmV0dXJuIG5ldyBjIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIGNhc2UgODogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpOyB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRjtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfb2pzX25ld19hcnIgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX29qc19uZXdfYXJyKGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDA6IHJldHVybiBuZXcgYztcbiAgY2FzZSAxOiByZXR1cm4gbmV3IGMgKGFbMF0pO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7IHJldHVybiBjLmFwcGx5KHRoaXMsIGEpOyB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRjtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFjayBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGlmKGxlbiA+IDApe1xuICAgICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBhcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgW3VuZGVmaW5lZF0pO1xuICAgIH1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBbYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGlmKG4gPT0gYXJpdHkgJiYgZi5sZW5ndGggPT0gYXJpdHkpIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJpdHkpO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoLCBhcml0eSlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLGFyZ3MpO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZixbdGhpcyxhcmdzXSk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJpdHkgKyAxKTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpOyB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2VxdWFscyBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09IHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXZhbF9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXZhbF9zdHJpbmcgKHMpIHtyZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V4cHIgKGNvbnN0KVxuLy9SZXF1aXJlczoganNfcHJpbnRfc3RkZXJyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19leHByKHMpIHtcbiAganNfcHJpbnRfc3RkZXJyKFwiY2FtbF9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcHVyZV9qc19leHByIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGpzX3ByaW50X3N0ZGVyclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcHVyZV9qc19leHByIChzKXtcbiAganNfcHJpbnRfc3RkZXJyKFwiY2FtbF9wdXJlX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgcmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19vYmplY3QgKG9iamVjdF9saXRlcmFsKVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfb2JqZWN0IChhKSB7XG4gIHZhciBvID0ge307XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwID0gYVtpXTtcbiAgICBvW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHBbMV0pXSA9IHBbMl07XG4gIH1cbiAgcmV0dXJuIG87XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogcGFyc2luZy5jIDg5ODMgMjAwOC0wOC0wNiAwOTozODoyNVogeGxlcm95ICQgKi9cblxuLyogVGhlIFBEQSBhdXRvbWF0b24gZm9yIHBhcnNlcnMgZ2VuZXJhdGVkIGJ5IGNhbWx5YWNjICovXG5cbi8qIFRoZSBwdXNoZG93biBhdXRvbWF0YSAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9sZXhfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZW5naW5lKHRhYmxlcywgZW52LCBjbWQsIGFyZylcbntcbiAgdmFyIEVSUkNPREUgPSAyNTY7XG5cbiAgLy92YXIgU1RBUlQgPSAwO1xuICAvL3ZhciBUT0tFTl9SRUFEID0gMTtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzEgPSAyO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMiA9IDM7XG4gIC8vdmFyIFNFTUFOVElDX0FDVElPTl9DT01QVVRFRCA9IDQ7XG4gIC8vdmFyIEVSUk9SX0RFVEVDVEVEID0gNTtcbiAgdmFyIGxvb3AgPSA2O1xuICB2YXIgdGVzdHNoaWZ0ID0gNztcbiAgdmFyIHNoaWZ0ID0gODtcbiAgdmFyIHNoaWZ0X3JlY292ZXIgPSA5O1xuICB2YXIgcmVkdWNlID0gMTA7XG5cbiAgdmFyIFJFQURfVE9LRU4gPSAwO1xuICB2YXIgUkFJU0VfUEFSU0VfRVJST1IgPSAxO1xuICB2YXIgR1JPV19TVEFDS1NfMSA9IDI7XG4gIHZhciBHUk9XX1NUQUNLU18yID0gMztcbiAgdmFyIENPTVBVVEVfU0VNQU5USUNfQUNUSU9OID0gNDtcbiAgdmFyIENBTExfRVJST1JfRlVOQ1RJT04gPSA1O1xuXG4gIHZhciBlbnZfc19zdGFjayA9IDE7XG4gIHZhciBlbnZfdl9zdGFjayA9IDI7XG4gIHZhciBlbnZfc3ltYl9zdGFydF9zdGFjayA9IDM7XG4gIHZhciBlbnZfc3ltYl9lbmRfc3RhY2sgPSA0O1xuICB2YXIgZW52X3N0YWNrc2l6ZSA9IDU7XG4gIHZhciBlbnZfc3RhY2tiYXNlID0gNjtcbiAgdmFyIGVudl9jdXJyX2NoYXIgPSA3O1xuICB2YXIgZW52X2x2YWwgPSA4O1xuICB2YXIgZW52X3N5bWJfc3RhcnQgPSA5O1xuICB2YXIgZW52X3N5bWJfZW5kID0gMTA7XG4gIHZhciBlbnZfYXNwID0gMTE7XG4gIHZhciBlbnZfcnVsZV9sZW4gPSAxMjtcbiAgdmFyIGVudl9ydWxlX251bWJlciA9IDEzO1xuICB2YXIgZW52X3NwID0gMTQ7XG4gIHZhciBlbnZfc3RhdGUgPSAxNTtcbiAgdmFyIGVudl9lcnJmbGFnID0gMTY7XG5cbiAgLy8gdmFyIF90YmxfYWN0aW9ucyA9IDE7XG4gIHZhciB0YmxfdHJhbnNsX2NvbnN0ID0gMjtcbiAgdmFyIHRibF90cmFuc2xfYmxvY2sgPSAzO1xuICB2YXIgdGJsX2xocyA9IDQ7XG4gIHZhciB0YmxfbGVuID0gNTtcbiAgdmFyIHRibF9kZWZyZWQgPSA2O1xuICB2YXIgdGJsX2Rnb3RvID0gNztcbiAgdmFyIHRibF9zaW5kZXggPSA4O1xuICB2YXIgdGJsX3JpbmRleCA9IDk7XG4gIHZhciB0YmxfZ2luZGV4ID0gMTA7XG4gIHZhciB0YmxfdGFibGVzaXplID0gMTE7XG4gIHZhciB0YmxfdGFibGUgPSAxMjtcbiAgdmFyIHRibF9jaGVjayA9IDEzO1xuICAvLyB2YXIgX3RibF9lcnJvcl9mdW5jdGlvbiA9IDE0O1xuICAvLyB2YXIgX3RibF9uYW1lc19jb25zdCA9IDE1O1xuICAvLyB2YXIgX3RibF9uYW1lc19ibG9jayA9IDE2O1xuXG4gIGlmICghdGFibGVzLmRnb3RvKSB7XG4gICAgdGFibGVzLmRlZnJlZCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2RlZnJlZF0pO1xuICAgIHRhYmxlcy5zaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9zaW5kZXhdKTtcbiAgICB0YWJsZXMuY2hlY2sgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfY2hlY2tdKTtcbiAgICB0YWJsZXMucmluZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfcmluZGV4XSk7XG4gICAgdGFibGVzLnRhYmxlICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3RhYmxlXSk7XG4gICAgdGFibGVzLmxlbiAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xlbl0pO1xuICAgIHRhYmxlcy5saHMgICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9saHNdKTtcbiAgICB0YWJsZXMuZ2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZ2luZGV4XSk7XG4gICAgdGFibGVzLmRnb3RvICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2Rnb3RvXSk7XG4gIH1cblxuICB2YXIgcmVzID0gMCwgbiwgbjEsIG4yLCBzdGF0ZTE7XG5cbiAgLy8gUkVTVE9SRVxuICB2YXIgc3AgPSBlbnZbZW52X3NwXTtcbiAgdmFyIHN0YXRlID0gZW52W2Vudl9zdGF0ZV07XG4gIHZhciBlcnJmbGFnID0gZW52W2Vudl9lcnJmbGFnXTtcblxuICBleGl0OmZvciAoOzspIHtcbiAgICBzd2l0Y2goY21kKSB7XG4gICAgY2FzZSAwOi8vU1RBUlQ6XG4gICAgICBzdGF0ZSA9IDA7XG4gICAgICBlcnJmbGFnID0gMDtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSA2Oi8vbG9vcDpcbiAgICAgIG4gPSB0YWJsZXMuZGVmcmVkW3N0YXRlXTtcbiAgICAgIGlmIChuICE9IDApIHsgY21kID0gcmVkdWNlOyBicmVhazsgfVxuICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA+PSAwKSB7IGNtZCA9IHRlc3RzaGlmdDsgYnJlYWs7IH1cbiAgICAgIHJlcyA9IFJFQURfVE9LRU47XG4gICAgICBicmVhayBleGl0O1xuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGxleGVyIGFuZCB1cGRhdGVzICovXG4gICAgICAvKiBzeW1iX3N0YXJ0IGFuZCBzeW1iX2VuZCAqL1xuICAgIGNhc2UgMTovL1RPS0VOX1JFQUQ6XG4gICAgICBpZiAoYXJnIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfYmxvY2tdW2FyZ1swXSArIDFdO1xuICAgICAgICBlbnZbZW52X2x2YWxdID0gYXJnWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfY29uc3RdW2FyZyArIDFdO1xuICAgICAgICBlbnZbZW52X2x2YWxdID0gMDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSA3Oi8vdGVzdHNoaWZ0OlxuICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlXTtcbiAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7XG4gICAgICAgIGNtZCA9IHNoaWZ0OyBicmVhaztcbiAgICAgIH1cbiAgICAgIG4xID0gdGFibGVzLnJpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBuID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgICAgY21kID0gcmVkdWNlOyBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChlcnJmbGFnIDw9IDApIHtcbiAgICAgICAgcmVzID0gQ0FMTF9FUlJPUl9GVU5DVElPTjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGVycm9yIGZ1bmN0aW9uICovXG4gICAgY2FzZSA1Oi8vRVJST1JfREVURUNURUQ6XG4gICAgICBpZiAoZXJyZmxhZyA8IDMpIHtcbiAgICAgICAgZXJyZmxhZyA9IDM7XG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV07XG4gICAgICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlMV07XG4gICAgICAgICAgbjIgPSBuMSArIEVSUkNPREU7XG4gICAgICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBFUlJDT0RFKSB7XG4gICAgICAgICAgICBjbWQgPSBzaGlmdF9yZWNvdmVyOyBicmVhaztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHNwIDw9IGVudltlbnZfc3RhY2tiYXNlXSkgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgICAgICAgICAgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgICAgICBzcC0tO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA9PSAwKSByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDg6Ly9zaGlmdDpcbiAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgaWYgKGVycmZsYWcgPiAwKSBlcnJmbGFnLS07XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDk6Ly9zaGlmdF9yZWNvdmVyOlxuICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgc3ArKztcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMTtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAyOi8vU1RBQ0tTX0dST1dOXzE6XG4gICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgIGVudltlbnZfdl9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfbHZhbF07XG4gICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfc3RhcnRdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRdO1xuICAgICAgY21kID0gbG9vcDtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAxMDovL3JlZHVjZTpcbiAgICAgIHZhciBtID0gdGFibGVzLmxlbltuXTtcbiAgICAgIGVudltlbnZfYXNwXSA9IHNwO1xuICAgICAgZW52W2Vudl9ydWxlX251bWJlcl0gPSBuO1xuICAgICAgZW52W2Vudl9ydWxlX2xlbl0gPSBtO1xuICAgICAgc3AgPSBzcCAtIG0gKyAxO1xuICAgICAgbSA9IHRhYmxlcy5saHNbbl07XG4gICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwXTtcbiAgICAgIG4xID0gdGFibGVzLmdpbmRleFttXTtcbiAgICAgIG4yID0gbjEgKyBzdGF0ZTE7XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gc3RhdGUxKVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBlbHNlXG4gICAgICAgIHN0YXRlID0gdGFibGVzLmRnb3RvW21dO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18yO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDM6Ly9TVEFDS1NfR1JPV05fMjpcbiAgICAgIHJlcyA9IENPTVBVVEVfU0VNQU5USUNfQUNUSU9OO1xuICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBzZW1hbnRpYyBhY3Rpb24gKi9cbiAgICBjYXNlIDQ6Ly9TRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQ6XG4gICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgIGVudltlbnZfdl9zdGFja11bc3AgKyAxXSA9IGFyZztcbiAgICAgIHZhciBhc3AgPSBlbnZbZW52X2FzcF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwICsgMV07XG4gICAgICBpZiAoc3AgPiBhc3ApIHtcbiAgICAgICAgLyogVGhpcyBpcyBhbiBlcHNpbG9uIHByb2R1Y3Rpb24uIFRha2Ugc3ltYl9zdGFydCBlcXVhbCB0byBzeW1iX2VuZC4gKi9cbiAgICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwICsgMV07XG4gICAgICB9XG4gICAgICBjbWQgPSBsb29wOyBicmVhaztcbiAgICAgIC8qIFNob3VsZCBub3QgaGFwcGVuICovXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICB9XG4gIH1cbiAgLy8gU0FWRVxuICBlbnZbZW52X3NwXSA9IHNwO1xuICBlbnZbZW52X3N0YXRlXSA9IHN0YXRlO1xuICBlbnZbZW52X2VycmZsYWddID0gZXJyZmxhZztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfcGFyc2VyX3RyYWNlIGNvbnN0XG4vL0R1bW15IGZ1bmN0aW9uIVxuZnVuY3Rpb24gY2FtbF9zZXRfcGFyc2VyX3RyYWNlKCkgeyByZXR1cm4gMDsgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfaW50IGNvbnN0IChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZywgY2FtbF9zdHJfcmVwZWF0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9pbnQoZm10LCBpKSB7XG4gIGlmIChjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCkgPT0gXCIlZFwiKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiK2kpO1xuICB2YXIgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIGlmIChpIDwgMCkgeyBpZiAoZi5zaWduZWRjb252KSB7IGYuc2lnbiA9IC0xOyBpID0gLWk7IH0gZWxzZSBpID4+Pj0gMDsgfVxuICB2YXIgcyA9IGkudG9TdHJpbmcoZi5iYXNlKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSAnICc7XG4gICAgdmFyIG4gPSBmLnByZWMgLSBzLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIHMgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBzO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2Vcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKSB7XG4gIHZhciBpID0gMCwgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpLCBiYXNlID0gMTAsIHNpZ24gPSAxO1xuICBpZiAobGVuID4gMCkge1xuICAgIHN3aXRjaCAoY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLGkpKSB7XG4gICAgY2FzZSA0NTogaSsrOyBzaWduID0gLTE7IGJyZWFrO1xuICAgIGNhc2UgNDM6IGkrKzsgc2lnbiA9IDE7IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoaSArIDEgPCBsZW4gJiYgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSA9PSA0OClcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSArIDEpKSB7XG4gICAgY2FzZSAxMjA6IGNhc2UgODg6IGJhc2UgPSAxNjsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlIDExMTogY2FzZSA3OTogYmFzZSA9ICA4OyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgIDk4OiBjYXNlIDY2OiBiYXNlID0gIDI7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTc6IGNhc2UgODU6IGkgKz0gMjsgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gW2ksIHNpZ24sIGJhc2VdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2RpZ2l0XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2RpZ2l0KGMpIHtcbiAgaWYgKGMgPj0gNDggJiYgYyA8PSA1NykgIHJldHVybiBjIC0gNDg7XG4gIGlmIChjID49IDY1ICYmIGMgPD0gOTApICByZXR1cm4gYyAtIDU1O1xuICBpZiAoYyA+PSA5NyAmJiBjIDw9IDEyMikgcmV0dXJuIGMgLSA4NztcbiAgcmV0dXJuIC0xO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfcGFyc2VfZGlnaXQsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfaW50X29mX3N0cmluZyAocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocyk7XG4gIHZhciBpID0gclswXSwgc2lnbiA9IHJbMV0sIGJhc2UgPSByWzJdO1xuICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICB2YXIgdGhyZXNob2xkID0gLTEgPj4+IDA7XG4gIHZhciBjID0gKGkgPCBsZW4pP2NhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk6MDtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGQ7XG4gIGZvciAoaSsrO2k8bGVuO2krKykge1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICByZXMgPSBiYXNlICogcmVzICsgZDtcbiAgICBpZiAocmVzID4gdGhyZXNob2xkKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAvLyBGb3IgYmFzZSBkaWZmZXJlbnQgZnJvbSAxMCwgd2UgZXhwZWN0IGFuIHVuc2lnbmVkIHJlcHJlc2VudGF0aW9uLFxuICAvLyBoZW5jZSBhbnkgdmFsdWUgb2YgJ3JlcycgKGxlc3MgdGhhbiAndGhyZXNob2xkJykgaXMgYWNjZXB0YWJsZS5cbiAgLy8gQnV0IHdlIGhhdmUgdG8gY29udmVydCB0aGUgcmVzdWx0IGJhY2sgdG8gYSBzaWduZWQgaW50ZWdlci5cbiAgcmVzID0gc2lnbiAqIHJlcztcbiAgaWYgKChiYXNlID09IDEwKSAmJiAoKHJlcyB8IDApICE9IHJlcykpXG4gICAgLyogU2lnbmVkIHJlcHJlc2VudGF0aW9uIGV4cGVjdGVkLCBhbGxvdyAtMl4obmJpdHMtMSkgdG8gMl4obmJpdHMtMSkgLSAxICovXG4gICAgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX211bCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tdWwoYSxiKXtcbiAgcmV0dXJuIE1hdGguaW11bChhLGIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RpdlxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9kaXYoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiAoeC95KXwwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9tb2QoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiB4JXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnN3YXAxNlxuZnVuY3Rpb24gY2FtbF9ic3dhcDE2KHgpIHtcbiAgcmV0dXJuICgoKCh4ICYgMHgwMEZGKSA8PCA4KSB8XG4gICAgICAgICAgICgoeCAmIDB4RkYwMCkgPj4gOCkpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYnN3YXBcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYnN3YXAoeCkge1xuICByZXR1cm4gKCgoeCAmIDB4MDAwMDAwRkYpIDw8IDI0KSB8XG4gICAgICAgICAgKCh4ICYgMHgwMDAwRkYwMCkgPDwgOCkgfFxuICAgICAgICAgICgoeCAmIDB4MDBGRjAwMDApID4+PiA4KSB8XG4gICAgICAgICAgKCh4ICYgMHhGRjAwMDAwMCkgPj4+IDI0KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Jzd2FwXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X2Jzd2FwKHgpIHtcbiAgdmFyIHkgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHgpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbeVs3XSwgeVs2XSwgeVs1XSwgeVs0XSwgeVszXSwgeVsyXSwgeVsxXSwgeVswXV0pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBIYXNodGJsXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF91bml2X3BhcmFtIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9oYXNoX3VuaXZfcGFyYW0gKGNvdW50LCBsaW1pdCwgb2JqKSB7XG4gIHZhciBoYXNoX2FjY3UgPSAwO1xuICBmdW5jdGlvbiBoYXNoX2F1eCAob2JqKSB7XG4gICAgbGltaXQgLS07XG4gICAgaWYgKGNvdW50IDwgMCB8fCBsaW1pdCA8IDApIHJldHVybjtcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgQXJyYXkgJiYgb2JqWzBdID09PSAob2JqWzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKG9ialswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgb2JqWzJdKSB8IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgbGltaXQrKzsgaGFzaF9hdXgob2JqKTsgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgb2JqWzBdKSB8IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSBvYmoubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkgaGFzaF9hdXggKG9ialtpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKG9iaikpIHtcbiAgICAgIGNvdW50IC0tO1xuICAgICAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQob2JqKTtcbiAgICAgIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKSB7XG5cdGZvciAodmFyIGIgPSBjb250ZW50LCBsID0gYi5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgICAgfSBlbHNlIHsgLyogQVJSQVkgKi9cbiAgICAgICAgZm9yICh2YXIgYSA9IGNvbnRlbnQsIGwgPSBhLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYVtpXSkgfCAwO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcob2JqKSkge1xuICAgICAgdmFyIGpzYnl0ZXMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG9iaik7XG4gICAgICBmb3IgKHZhciBiID0ganNieXRlcywgbCA9IGpzYnl0ZXMubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBmb3IgKHZhciBiID0gb2JqLCBsID0gb2JqLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSAob2JqfDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBjb3VudCAtLTtcbiAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9iaikgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSArb2JqKSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgY291bnQtLTtcbiAgICAgIHZhciBwID0gY2FtbF9pbnQ2NF90b19ieXRlcyAoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IChvYmopKTtcbiAgICAgIGZvciAodmFyIGkgPSA3OyBpID49IDA7IGktLSkgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgcFtpXSkgfCAwO1xuICAgIH0gZWxzZSBpZihvYmogJiYgb2JqLmNhbWxfY3VzdG9tKSB7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoID0gY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaChvYmopIHwgMDtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgaCkgfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBoYXNoX2F1eCAob2JqKTtcbiAgcmV0dXJuIGhhc2hfYWNjdSAmIDB4M0ZGRkZGRkY7XG59XG5cbi8vZnVuY3Rpb24gUk9UTDMyKHgsbikgeyByZXR1cm4gKCh4IDw8IG4pIHwgKHggPj4+ICgzMi1uKSkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50KGgsZCkge1xuICBkID0gY2FtbF9tdWwoZCwgMHhjYzllMmQ1MXwwKTtcbiAgZCA9ICgoZCA8PCAxNSkgfCAoZCA+Pj4gKDMyLTE1KSkpOyAvLyBST1RMMzIoZCwgMTUpO1xuICBkID0gY2FtbF9tdWwoZCwgMHgxYjg3MzU5Myk7XG4gIGggXj0gZDtcbiAgaCA9ICgoaCA8PCAxMykgfCAoaCA+Pj4gKDMyLTEzKSkpOyAgIC8vUk9UTDMyKGgsIDEzKTtcbiAgcmV0dXJuICgoKGggKyAoaCA8PCAyKSl8MCkgKyAoMHhlNjU0NmI2NHwwKSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmluYWwoaCkge1xuICBoIF49IGggPj4+IDE2O1xuICBoID0gY2FtbF9tdWwgKGgsIDB4ODVlYmNhNmJ8MCk7XG4gIGggXj0gaCA+Pj4gMTM7XG4gIGggPSBjYW1sX211bCAoaCwgMHhjMmIyYWUzNXwwKTtcbiAgaCBePSBoID4+PiAxNjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9oYXNoX21peF9pbnQ2NFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9mbG9hdCAoaCwgdjApIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfaW50NjQoaCwgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh2MCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbG8zMiwgY2FtbF9pbnQ2NF9oaTMyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludDY0IChoLCB2KSB7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2xvMzIodikpO1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9oaTMyKHYpKTtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCwgaSwgdztcbiAgZm9yIChpID0gMDsgaSArIDQgPD0gbGVuOyBpICs9IDQpIHtcbiAgICB3ID0gcy5jaGFyQ29kZUF0KGkpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCA4KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMikgPDwgMTYpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSszKSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHMuY2hhckNvZGVBdChpKzIpIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gcy5jaGFyQ29kZUF0KGkrMSkgPDwgODtcbiAgY2FzZSAxOlxuICAgIHcgfD0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHNbaV1cbiAgICAgIHwgKHNbaSsxXSA8PCA4KVxuICAgICAgfCAoc1tpKzJdIDw8IDE2KVxuICAgICAgfCAoc1tpKzNdIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICBjYXNlIDM6IHcgID0gc1tpKzJdIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gc1tpKzFdIDw8IDg7XG4gIGNhc2UgMTogdyB8PSBzW2ldO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlcyhoLCB2KSB7XG4gIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KHYpO1xuICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNvbnRlbnQpXG4gIGVsc2UgLyogQVJSQVkgKi9cbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgY29udGVudCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsIHYpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHYpKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2ggbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0LCBjYW1sX2hhc2hfbWl4X3N0cmluZywgY2FtbF9oYXNoX21peF9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaGFzaCAoY291bnQsIGxpbWl0LCBzZWVkLCBvYmopIHtcbiAgdmFyIHF1ZXVlLCByZCwgd3IsIHN6LCBudW0sIGgsIHYsIGksIGxlbjtcbiAgc3ogPSBsaW1pdDtcbiAgaWYgKHN6IDwgMCB8fCBzeiA+IDI1Nikgc3ogPSAyNTY7XG4gIG51bSA9IGNvdW50O1xuICBoID0gc2VlZDtcbiAgcXVldWUgPSBbb2JqXTsgcmQgPSAwOyB3ciA9IDE7XG4gIHdoaWxlIChyZCA8IHdyICYmIG51bSA+IDApIHtcbiAgICB2ID0gcXVldWVbcmQrK107XG4gICAgaWYgKHYgJiYgdi5jYW1sX2N1c3RvbSl7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2gpIHtcbiAgICAgICAgdmFyIGhoID0gY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2godik7XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludCAoaCwgaGgpO1xuICAgICAgICBudW0gLS07XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgc3dpdGNoICh2WzBdKSB7XG4gICAgICBjYXNlIDI0ODpcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2WzJdKTtcbiAgICAgICAgbnVtLS07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgcXVldWVbLS1yZF0gPSB2WzFdO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHZhciB0YWcgPSAoKHYubGVuZ3RoIC0gMSkgPDwgMTApIHwgdlswXTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHRhZyk7XG4gICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IHYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICBpZiAod3IgPj0gc3opIGJyZWFrO1xuICAgICAgICAgIHF1ZXVlW3dyKytdID0gdltpXTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodiA9PT0gKHZ8MCkpIHtcbiAgICAgIC8vIEludGVnZXJcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2K3YrMSk7XG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHYgPT09ICt2KSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCx2KTtcbiAgICAgIG51bS0tO1xuICAgIH1cbiAgfVxuICBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKXtcbiAgaWYgKHR5cGVvZiBhID09PSBcIm51bWJlclwiKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhhKSkgcmV0dXJuIDI1MjsgLy8gc3RyaW5nX3RhZ1xuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhhKSkgcmV0dXJuIDEyNTI7IC8vIG9jYW1sIHN0cmluZyAoaWYgZGlmZmVyZW50IGZyb20gYnl0ZXMpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSAmJiBhWzBdID09PSAoYVswXT4+PjApICYmIGFbMF0gPD0gMjU1KSB7XG4gICAgLy8gTG9vayBsaWtlIGFuIG9jYW1sIGJsb2NrXG4gICAgdmFyIHRhZyA9IGFbMF0gfCAwO1xuICAgIC8vIGlnbm9yZSBkb3VibGVfYXJyYXlfdGFnIGJlY2F1c2Ugd2UgY2Fubm90IGFjY3VyYXRlbHkgc2V0XG4gICAgLy8gdGhpcyB0YWcgd2hlbiB3ZSBjcmVhdGUgYW4gYXJyYXkgb2YgZmxvYXQuXG4gICAgcmV0dXJuICh0YWcgPT0gMjU0KT8wOnRhZ1xuICB9XG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBTdHJpbmcpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN0cmluZ1wiKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIE51bWJlcikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGEgJiYgYS5jYW1sX2N1c3RvbSkgcmV0dXJuIDEyNTU7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmIChhICYmIGEuY29tcGFyZSkgcmV0dXJuIDEyNTY7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcImZ1bmN0aW9uXCIpIHJldHVybiAxMjQ3OyAvLyBsaWtlIGNsb3N1cmVfdGFnICgyNDcpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3ltYm9sXCIpIHJldHVybiAxMjUxO1xuICByZXR1cm4gMTAwMTsgLy9vdXRfb2ZfaGVhcF90YWdcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKXtcbiAgcmV0dXJuIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0uY29tcGFyZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShudW0sIGN1c3RvbSwgc3dhcCwgdG90YWwpIHtcbiAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oY3VzdG9tKTtcbiAgaWYoY29tcCkge1xuICAgIHZhciB4ID0gKHN3YXAgPiAwKT9jb21wKGN1c3RvbSxudW0sdG90YWwpOmNvbXAobnVtLGN1c3RvbSx0b3RhbCk7XG4gICAgaWYodG90YWwgJiYgeCAhPSB4KSByZXR1cm4gc3dhcDsgLy8gdG90YWwgJiYgbmFuXG4gICAgaWYoK3ggIT0gK3gpIHJldHVybiAreDsgLy8gbmFuXG4gICAgaWYoKHggfCAwKSAhPSAwKSByZXR1cm4gKHggfCAwKTsgLy8gIW5hblxuICB9XG4gIHJldHVybiBzd2FwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWwgKGNvbnN0LCBjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludF9jb21wYXJlLCBjYW1sX3N0cmluZ19jb21wYXJlLCBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tLCBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsIChhLCBiLCB0b3RhbCkge1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgZm9yKDs7KSB7XG4gICAgaWYgKCEodG90YWwgJiYgYSA9PT0gYikpIHtcbiAgICAgIHZhciB0YWdfYSA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGEpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYodGFnX2EgPT0gMjUwKSB7IGEgPSBhWzFdOyBjb250aW51ZSB9XG5cbiAgICAgIHZhciB0YWdfYiA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGIpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYodGFnX2IgPT0gMjUwKSB7IGIgPSBiWzFdOyBjb250aW51ZSB9XG5cbiAgICAgIC8vIHRhZ3MgYXJlIGRpZmZlcmVudFxuICAgICAgaWYodGFnX2EgIT09IHRhZ19iKSB7XG4gICAgICAgIGlmKHRhZ19hID09IDEwMDApIHtcbiAgICAgICAgICBpZih0YWdfYiA9PSAxMjU1KSB7IC8vaW1tZWRpYXRlIGNhbiBjb21wYXJlIGFnYWluc3QgY3VzdG9tXG4gICAgICAgICAgICByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKGEsIGIsIC0xLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmKHRhZ19iID09IDEwMDApIHtcbiAgICAgICAgICBpZih0YWdfYSA9PSAxMjU1KSB7IC8vaW1tZWRpYXRlIGNhbiBjb21wYXJlIGFnYWluc3QgY3VzdG9tXG4gICAgICAgICAgICByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKGIsIGEsIDEsIHRvdGFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDFcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHRhZ19hIDwgdGFnX2IpPy0xOjE7XG4gICAgICB9XG4gICAgICBzd2l0Y2godGFnX2Epe1xuICAgICAgICAvLyAyNDY6IExhenlfdGFnIGhhbmRsZWQgYmVsbG93XG4gICAgICBjYXNlIDI0NzogLy8gQ2xvc3VyZV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNDg6IC8vIE9iamVjdFxuICAgICAgICB2YXIgeCA9IGNhbWxfaW50X2NvbXBhcmUoYVsyXSwgYlsyXSk7XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjQ5OiAvLyBJbmZpeFxuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1MDogLy8gRm9yd2FyZCB0YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlbiwgaGFuZGxlZCBhYm92ZVxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEZvcndhcmRfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MTogLy9BYnN0cmFjdFxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTI6IC8vIE9DYW1sIGJ5dGVzXG4gICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgdmFyIHggPSBjYW1sX2J5dGVzX2NvbXBhcmUoYSwgYik7XG4gICAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTM6IC8vIERvdWJsZV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IERvdWJsZV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjU0OiAvLyBEb3VibGVfYXJyYXlfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfYXJyYXlfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjU1OiAvLyBDdXN0b21fdGFnXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgQ3VzdG9tX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjQ3OiAvLyBGdW5jdGlvblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1NTogLy8gQ3VzdG9tXG4gICAgICAgIHZhciBjb21wID0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpO1xuICAgICAgICBpZihjb21wICE9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShiKSl7XG4gICAgICAgICAgcmV0dXJuIChhLmNhbWxfY3VzdG9tPGIuY2FtbF9jdXN0b20pPy0xOjE7XG4gICAgICAgIH1cbiAgICAgICAgaWYoIWNvbXApXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgIHZhciB4ID0gY29tcChhLGIsdG90YWwpO1xuICAgICAgICBpZih4ICE9IHgpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1NjogLy8gY29tcGFyZSBmdW5jdGlvblxuICAgICAgICB2YXIgeCA9IGEuY29tcGFyZShiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KSB7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIFVOT1JERVJFRFxuICAgICAgICAgIHJldHVybiB0b3RhbD8tMTp4O1xuICAgICAgICB9XG4gICAgICAgIGlmKHggIT09ICh4fDApKXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAwOiAvLyBOdW1iZXJcbiAgICAgICAgYSA9ICthO1xuICAgICAgICBiID0gK2I7XG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICBpZiAoYSAhPSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICBpZiAoYSA9PSBhKSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoYiA9PSBiKSByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwMDE6IC8vIFRoZSByZXN0XG4gICAgICAgIC8vIEhlcmUgd2UgY2FuIGJlIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gICAgICAgIC8vIDEuIEphdmFTY3JpcHQgcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vIDIuIEphdmFTY3JpcHQgb2JqZWN0IHRoYXQgY2FuIGJlIGNvZXJjZWQgdG8gcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vIDMuIEphdmFTY3JpcHQgb2JqZWN0IHRoYW4gY2Fubm90IGJlIGNvZXJjZWQgdG8gcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vXG4gICAgICAgIC8vICgzKSB3aWxsIHJhaXNlIGEgW1R5cGVFcnJvcl1cbiAgICAgICAgLy8gKDIpIHdpbGwgY29lcmNlIHRvIHByaW1pdGl2ZSB0eXBlcyB1c2luZyBbdmFsdWVPZl0gb3IgW3RvU3RyaW5nXVxuICAgICAgICAvLyAoMikgYW5kICgzKSwgYWZ0ZXIgZXZlbnR1YWwgY29lcmNpb25cbiAgICAgICAgLy8gLSBpZiBhIGFuZCBiIGFyZSBzdHJpbmdzLCBhcHBseSBsZXhpY29ncmFwaGljIGNvbXBhcmlzb25cbiAgICAgICAgLy8gLSBpZiBhIG9yIGIgYXJlIG5vdCBzdHJpbmdzLCBjb252ZXJ0IGEgYW5kIGIgdG8gbnVtYmVyXG4gICAgICAgIC8vICAgYW5kIGFwcGx5IHN0YW5kYXJkIGNvbXBhcmlzb25cbiAgICAgICAgLy9cbiAgICAgICAgLy8gRXhjZXB0aW9uOiBgIT1gIHdpbGwgbm90IGNvZXJjZS9jb252ZXJ0IGlmIGJvdGggYSBhbmQgYiBhcmUgb2JqZWN0c1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUxOiAvLyBKYXZhU2NyaXB0IFN5bWJvbCwgbm8gb3JkZXJpbmcuXG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyOiAvLyBvY2FtbCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhhKTtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGIpO1xuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZihhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTIwOiAvLyBqYXZhc2NyaXB0IHN0cmluZ3NcbiAgICAgICAgdmFyIGEgPSBhLnRvU3RyaW5nKCk7XG4gICAgICAgIHZhciBiID0gYi50b1N0cmluZygpO1xuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZihhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0NjogLy8gTGF6eV90YWdcbiAgICAgIGNhc2UgMjU0OiAvLyBEb3VibGVfYXJyYXlcbiAgICAgIGRlZmF1bHQ6IC8vIEJsb2NrIHdpdGggb3RoZXIgdGFnXG4gICAgICAgIGlmIChhLmxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIChhLmxlbmd0aCA8IGIubGVuZ3RoKT8tMToxO1xuICAgICAgICBpZiAoYS5sZW5ndGggPiAxKSBzdGFjay5wdXNoKGEsIGIsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YWNrLmxlbmd0aCA9PSAwKSByZXR1cm4gMDtcbiAgICB2YXIgaSA9IHN0YWNrLnBvcCgpO1xuICAgIGIgPSBzdGFjay5wb3AoKTtcbiAgICBhID0gc3RhY2sucG9wKCk7XG4gICAgaWYgKGkgKyAxIDwgYS5sZW5ndGgpIHN0YWNrLnB1c2goYSwgYiwgaSArIDEpO1xuICAgIGEgPSBhW2ldO1xuICAgIGIgPSBiW2ldO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZSAoYSwgYikgeyByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdHJ1ZSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaW50X2NvbXBhcmUgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pbnRfY29tcGFyZSAoYSwgYikge1xuICBpZiAoYSA8IGIpIHJldHVybiAoLTEpOyBpZiAoYSA9PSBiKSByZXR1cm4gMDsgcmV0dXJuIDE7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID09IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbm90ZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpICE9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPj0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JlYXRlcnRoYW4gbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVydGhhbiAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPiAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDw9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3N0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc3RoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDwgMCk7IH1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYjogY29kZSBzcGVjaWZpYyB0byBKc19vZl9vY2FtbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29uX2llIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX29uX2llICgpIHtcbiAgdmFyIHVhID1cbiAgICAgIGdsb2JhbFRoaXMubmF2aWdhdG9yP2dsb2JhbFRoaXMubmF2aWdhdG9yLnVzZXJBZ2VudDpcIlwiO1xuICByZXR1cm4gdWEuaW5kZXhPZihcIk1TSUVcIikgIT0gLTEgJiYgdWEuaW5kZXhPZihcIk9wZXJhXCIpICE9IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lc2NhcGUgY29uc3QgKGNvbnN0KVxudmFyIGNhbWxfanNfcmVnZXhwcyA9IHsgYW1wOi8mL2csIGx0Oi88L2csIHF1b3Q6L1xcXCIvZywgYWxsOi9bJjxcXFwiXS8gfTtcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lc2NhcGUgKHMpIHtcbiAgaWYgKCFjYW1sX2pzX3JlZ2V4cHMuYWxsLnRlc3QocykpIHJldHVybiBzO1xuICByZXR1cm4gcy5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5hbXAsIFwiJmFtcDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMubHQsIFwiJmx0O1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5xdW90LCBcIiZxdW90O1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VudGl0aWVzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZW50aXRpZXMocykge1xuICB2YXIgZW50aXR5ID0gL14mIz9bMC05YS16QS1aXSs7JC9cbiAgaWYocy5tYXRjaChlbnRpdHkpKVxuICB7XG4gICAgdmFyIHN0ciwgdGVtcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcbiAgICB0ZW1wLmlubmVySFRNTD0gcztcbiAgICBzdHI9IHRlbXAudGV4dENvbnRlbnQgfHwgdGVtcC5pbm5lclRleHQ7XG4gICAgdGVtcD1udWxsO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9mYWlsd2l0aChcIkludmFsaWQgZW50aXR5IFwiICsgcyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19nZXRfY29uc29sZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19nZXRfY29uc29sZSAoKSB7XG4gIHZhciBjID0gZ2xvYmFsVGhpcy5jb25zb2xlP2dsb2JhbFRoaXMuY29uc29sZTp7fTtcbiAgdmFyIG0gPSBbXCJsb2dcIiwgXCJkZWJ1Z1wiLCBcImluZm9cIiwgXCJ3YXJuXCIsIFwiZXJyb3JcIiwgXCJhc3NlcnRcIiwgXCJkaXJcIiwgXCJkaXJ4bWxcIixcbiAgICAgICAgICAgXCJ0cmFjZVwiLCBcImdyb3VwXCIsIFwiZ3JvdXBDb2xsYXBzZWRcIiwgXCJncm91cEVuZFwiLCBcInRpbWVcIiwgXCJ0aW1lRW5kXCJdO1xuICBmdW5jdGlvbiBmICgpIHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbS5sZW5ndGg7IGkrKykgaWYgKCFjW21baV1dKSBjW21baV1dPWY7XG4gIHJldHVybiBjO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZSh1bml0KXtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICBpZih0eXBlb2YgZy5YTUxIdHRwUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGcuWE1MSHR0cFJlcXVlc3QgfSBjYXRjaCAoZSkgeyB9O1xuICB9XG4gIGlmKHR5cGVvZiBnLmFjdGl2ZVhPYmplY3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnLmFjdGl2ZVhPYmplY3QoXCJNc3htbDIuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICAgIHRyeSB7IHJldHVybiBuZXcgZy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwzLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGcuYWN0aXZlWE9iamVjdChcIk1pY3Jvc29mdC5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gIH1cbiAgY2FtbF9mYWlsd2l0aChcIkNhbm5vdCBjcmVhdGUgYSBYTUxIdHRwUmVxdWVzdFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIGV4bi5qc19lcnJvcjsgfVxuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdXBkYXRlX2R1bW15XG5mdW5jdGlvbiBjYW1sX3VwZGF0ZV9kdW1teSAoeCwgeSkge1xuICBpZiggdHlwZW9mIHk9PT1cImZ1bmN0aW9uXCIgKSB7IHguZnVuID0geTsgcmV0dXJuIDA7IH1cbiAgaWYoIHkuZnVuICkgeyB4LmZ1biA9IHkuZnVuOyByZXR1cm4gMDsgfVxuICB2YXIgaSA9IHkubGVuZ3RoOyB3aGlsZSAoaS0tKSB4W2ldID0geVtpXTsgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX2Jsb2NrIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX2Jsb2NrICh4KSB7IHJldHVybiArKHggaW5zdGFuY2VvZiBBcnJheSk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90YWdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX29ial90YWcgKHgpIHtcbiAgaWYgKCh4IGluc3RhbmNlb2YgQXJyYXkpICYmIHhbMF0gPT0gKHhbMF0gPj4+IDApKVxuICAgIHJldHVybiB4WzBdXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh4KSlcbiAgICByZXR1cm4gMjUyXG4gIGVsc2UgaWYgKCh4IGluc3RhbmNlb2YgRnVuY3Rpb24pIHx8IHR5cGVvZiB4ID09IFwiZnVuY3Rpb25cIilcbiAgICByZXR1cm4gMjQ3XG4gIGVsc2UgaWYgKHggJiYgeC5jYW1sX2N1c3RvbSlcbiAgICByZXR1cm4gMjU1XG4gIGVsc2VcbiAgICByZXR1cm4gMTAwMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfdGFnIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF90YWcgKHgsIHRhZykgeyB4WzBdID0gdGFnOyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9vYmpfYmxvY2sgY29uc3QgKGNvbnN0LGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfYmxvY2sgKHRhZywgc2l6ZSkge1xuICB2YXIgbyA9IG5ldyBBcnJheShzaXplKzEpO1xuICBvWzBdPXRhZztcbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gc2l6ZTsgaSsrKSBvW2ldID0gMDtcbiAgcmV0dXJuIG87XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3dpdGhfdGFnXG5mdW5jdGlvbiBjYW1sX29ial93aXRoX3RhZyh0YWcseCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgYVswXSA9IHRhZztcbiAgZm9yKHZhciBpID0gMTsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfZHVwIG11dGFibGUgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfZHVwICh4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90cnVuY2F0ZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfb2JqX3RydW5jYXRlICh4LCBzKSB7XG4gIGlmIChzPD0wIHx8IHMgKyAxID4geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIk9iai50cnVuY2F0ZVwiKTtcbiAgaWYgKHgubGVuZ3RoICE9IHMgKyAxKSB4Lmxlbmd0aCA9IHMgKyAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfbWFrZV9mb3J3YXJkXG5mdW5jdGlvbiBjYW1sX29ial9tYWtlX2ZvcndhcmQgKGIsdikge1xuICBiWzBdPTI1MDtcbiAgYlsxXT12O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQgKHYpIHsgcmV0dXJuIFsyNTAsIHZdOyB9XG5cbi8vLy8vLy8vLy8vLy8gQ2FtbGludGVybmFsT09cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgY29uc3RcbnZhciBjYW1sX21ldGhvZF9jYWNoZSA9IFtdO1xuZnVuY3Rpb24gY2FtbF9nZXRfcHVibGljX21ldGhvZCAob2JqLCB0YWcsIGNhY2hlaWQpIHtcbiAgdmFyIG1ldGhzID0gb2JqWzFdO1xuICB2YXIgb2ZzID0gY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF07XG4gIGlmIChvZnMgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyYXkgaXMgbm90IHNwYXJzZVxuICAgIGZvciAodmFyIGkgPSBjYW1sX21ldGhvZF9jYWNoZS5sZW5ndGg7IGkgPCBjYWNoZWlkOyBpKyspXG4gICAgICBjYW1sX21ldGhvZF9jYWNoZVtpXSA9IDA7XG4gIH0gZWxzZSBpZiAobWV0aHNbb2ZzXSA9PT0gdGFnKSB7XG4gICAgcmV0dXJuIG1ldGhzW29mcyAtIDFdO1xuICB9XG4gIHZhciBsaSA9IDMsIGhpID0gbWV0aHNbMV0gKiAyICsgMSwgbWk7XG4gIHdoaWxlIChsaSA8IGhpKSB7XG4gICAgbWkgPSAoKGxpK2hpKSA+PiAxKSB8IDE7XG4gICAgaWYgKHRhZyA8IG1ldGhzW21pKzFdKSBoaSA9IG1pLTI7XG4gICAgZWxzZSBsaSA9IG1pO1xuICB9XG4gIGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdID0gbGkgKyAxO1xuICAvKiByZXR1cm4gMCBpZiB0YWcgaXMgbm90IHRoZXJlICovXG4gIHJldHVybiAodGFnID09IG1ldGhzW2xpKzFdID8gbWV0aHNbbGldIDogMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb29fbGFzdF9pZFxudmFyIGNhbWxfb29fbGFzdF9pZCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X29vX2lkXG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfc2V0X29vX2lkIChiKSB7XG4gIGJbMl09Y2FtbF9vb19sYXN0X2lkKys7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXNoX29vX2lkIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfZnJlc2hfb29faWQoKSB7XG4gIHJldHVybiBjYW1sX29vX2xhc3RfaWQrKztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9yYXdfZmllbGQobyxpKSB7IHJldHVybiBvW2krMV0gfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfcmF3X2ZpZWxkKG8saSx2KSB7IHJldHVybiBvW2krMV0gPSB2IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXG5mdW5jdGlvbiBjYW1sX29ial9yZWFjaGFibGVfd29yZHMobykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9hZGRfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX29ial9hZGRfb2Zmc2V0KHYsb2Zmc2V0KSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJPYmouYWRkX29mZnNldCBpcyBub3Qgc3VwcG9ydGVkXCIpO1xufVxuIiwiLy8vLy8vLy8vIEJJR1NUUklOR1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nKGgsIGJzKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLGJzLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGEuYnVmZmVyXG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGFcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIoYWIpIHtcbiAgdmFyIHRhID0gbmV3IGdsb2JhbFRoaXMuVWludDhBcnJheShhYik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShiYSkge1xuICB2YXIgdGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50OEFycmF5KGJhLmJ1ZmZlciwgYmEuYnl0ZU9mZnNldCwgYmEubGVuZ3RoICogYmEuQllURVNfUEVSX0VMRU1FTlQpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKDEyLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19tZW1jbXBcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX21lbWNtcChzMSwgcG9zMSwgczIsIHBvczIsIGxlbil7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEoczEscG9zMSArIGkpO1xuICAgIHZhciBiID0gY2FtbF9iYV9nZXRfMShzMixwb3MyICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKGJhMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTEua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMxID0gYmExLm9mZnNldChwb3MxKTtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnN1YmFycmF5KG9mczEsb2ZzMStsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2UscG9zMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihwb3MxICsgbGVuID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF9hcnJheV9vZl9zdHJpbmcoc3RyMSkuc2xpY2UocG9zMSxwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLG9mczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihwb3MxICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBjYW1sX2FycmF5X29mX2J5dGVzKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKGJhMSwgcG9zMSwgYnl0ZXMyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTEua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIGlmKG9mczEgKyBsZW4gPiBiYTEuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihwb3MyICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoYnl0ZXMyKSl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnNsaWNlKG9mczEsIG9mczErbGVuKTtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoc2xpY2UpLCAwLCBieXRlczIsIHBvczIsIGxlbik7XG4gIHJldHVybiAwXG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYmFja3RyYWNlX3N0YXR1cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9iYWNrdHJhY2Vfc3RhdHVzICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JlY29yZF9iYWNrdHJhY2UgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90ICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdDogaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZShleG4sIGJ0KSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCgpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiKTtcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBsZXhpbmcuYyA2MDQ1IDIwMDQtMDEtMDEgMTY6NDI6NDNaIGRvbGlnZXogJCAqL1xuXG4vKiBUaGUgdGFibGUtZHJpdmVuIGF1dG9tYXRvbiBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4LiAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9sZXhfYXJyYXkocykge1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTtcbiAgdmFyIGwgPSBzLmxlbmd0aCAvIDI7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKylcbiAgICBhW2ldID0gKHMuY2hhckNvZGVBdCgyICogaSkgfCAocy5jaGFyQ29kZUF0KDIgKiBpICsgMSkgPDwgOCkpIDw8IDE2ID4+IDE2O1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheSwgY2FtbF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9sZXhfZW5naW5lKHRibCwgc3RhcnRfc3RhdGUsIGxleGJ1Zikge1xuICB2YXIgbGV4X2J1ZmZlciA9IDI7XG4gIHZhciBsZXhfYnVmZmVyX2xlbiA9IDM7XG4gIHZhciBsZXhfc3RhcnRfcG9zID0gNTtcbiAgdmFyIGxleF9jdXJyX3BvcyA9IDY7XG4gIHZhciBsZXhfbGFzdF9wb3MgPSA3O1xuICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gODtcbiAgdmFyIGxleF9lb2ZfcmVhY2hlZCA9IDk7XG4gIHZhciBsZXhfYmFzZSA9IDE7XG4gIHZhciBsZXhfYmFja3RyayA9IDI7XG4gIHZhciBsZXhfZGVmYXVsdCA9IDM7XG4gIHZhciBsZXhfdHJhbnMgPSA0O1xuICB2YXIgbGV4X2NoZWNrID0gNTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSByZXR1cm4gLWJhc2UtMTtcbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKXtcbiAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PSAwKVxuICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2VcbiAgICAgICAgYyA9IDI1NjtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIFJlYWQgbmV4dCBpbnB1dCBjaGFyICovXG4gICAgICBjID0gYnVmZmVyW2xleGJ1ZltsZXhfY3Vycl9wb3NdXTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdICsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIGlmICh0YmwubGV4X2NoZWNrW2Jhc2UgKyBjXSA9PSBzdGF0ZSlcbiAgICAgIHN0YXRlID0gdGJsLmxleF90cmFuc1tiYXNlICsgY107XG4gICAgZWxzZVxuICAgICAgc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09IC0xKVxuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwibGV4aW5nOiBlbXB0eSB0b2tlblwiKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dO1xuICAgIH1lbHNle1xuICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzXG4gICAgICAgICBjb25zdW1lZCBieSB0aGUgYXV0b21hdG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpXG4gICAgICAqL1xuICAgICAgaWYgKGMgPT0gMjU2KSBsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9IDA7XG4gICAgfVxuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qIE5ldyBsZXhlciBlbmdpbmUsIHdpdGggbWVtb3J5IG9mIHBvc2l0aW9ucyAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLy9Qcm92aWRlczogY2FtbF9uZXdfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl9tZW0ocywgaSwgbWVtLCBjdXJyX3Bvcykge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChkc3QgPT0gMHhmZikgcmV0dXJuO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gY3Vycl9wb3M7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9sZXhfcnVuX3RhZyhzLCBpLCBtZW0pIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybiA7XG4gICAgdmFyIHNyYyA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChzcmMgPT0gMHhmZilcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSAtMTtcbiAgICBlbHNlXG4gICAgICBtZW0gW2RzdCArIDFdID0gbWVtIFtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX25ld19sZXhfZW5naW5lKHRibCwgc3RhcnRfc3RhdGUsIGxleGJ1Zikge1xuICB2YXIgbGV4X2J1ZmZlciA9IDI7XG4gIHZhciBsZXhfYnVmZmVyX2xlbiA9IDM7XG4gIHZhciBsZXhfc3RhcnRfcG9zID0gNTtcbiAgdmFyIGxleF9jdXJyX3BvcyA9IDY7XG4gIHZhciBsZXhfbGFzdF9wb3MgPSA3O1xuICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gODtcbiAgdmFyIGxleF9lb2ZfcmVhY2hlZCA9IDk7XG4gIHZhciBsZXhfbWVtID0gMTA7XG4gIHZhciBsZXhfYmFzZSA9IDE7XG4gIHZhciBsZXhfYmFja3RyayA9IDI7XG4gIHZhciBsZXhfZGVmYXVsdCA9IDM7XG4gIHZhciBsZXhfdHJhbnMgPSA0O1xuICB2YXIgbGV4X2NoZWNrID0gNTtcbiAgdmFyIGxleF9iYXNlX2NvZGUgPSA2O1xuICB2YXIgbGV4X2JhY2t0cmtfY29kZSA9IDc7XG4gIHZhciBsZXhfZGVmYXVsdF9jb2RlID0gODtcbiAgdmFyIGxleF90cmFuc19jb2RlID0gOTtcbiAgdmFyIGxleF9jaGVja19jb2RlID0gMTA7XG4gIHZhciBsZXhfY29kZSA9IDExO1xuXG4gIGlmICghdGJsLmxleF9kZWZhdWx0KSB7XG4gICAgdGJsLmxleF9iYXNlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV0pO1xuICAgIHRibC5sZXhfYmFja3RyayA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF0pO1xuICB9XG4gIGlmICghdGJsLmxleF9kZWZhdWx0X2NvZGUpIHtcbiAgICB0YmwubGV4X2Jhc2VfY29kZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VfY29kZV0pO1xuICAgIHRibC5sZXhfYmFja3Rya19jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya19jb2RlXSk7XG4gICAgdGJsLmxleF9jaGVja19jb2RlID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja19jb2RlXSk7XG4gICAgdGJsLmxleF90cmFuc19jb2RlID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc19jb2RlXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0X2NvZGUgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0X2NvZGVdKTtcbiAgfVxuICBpZiAodGJsLmxleF9jb2RlID09IG51bGwpIHRibC5sZXhfY29kZSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcodGJsW2xleF9jb2RlXSk7XG5cbiAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGNhbWxfYXJyYXlfb2ZfYnl0ZXMobGV4YnVmW2xleF9idWZmZXJdKTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvcig7Oykge1xuICAgIC8qIExvb2t1cCBiYXNlIGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJlciBmb3IgY3VycmVudCBzdGF0ZSAqL1xuICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTtcbiAgICBpZiAoYmFzZSA8IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2Jhc2VfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgcmV0dXJuIC1iYXNlLTE7XG4gICAgfVxuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2JhY2t0cmtfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICB2YXIgcHN0YXRlID0gc3RhdGUgO1xuICAgIGlmICh0YmwubGV4X2NoZWNrW2Jhc2UgKyBjXSA9PSBzdGF0ZSlcbiAgICAgIHN0YXRlID0gdGJsLmxleF90cmFuc1tiYXNlICsgY107XG4gICAgZWxzZVxuICAgICAgc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09IC0xKVxuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwibGV4aW5nOiBlbXB0eSB0b2tlblwiKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dO1xuICAgIH1lbHNle1xuICAgICAgLyogSWYgc29tZSB0cmFuc2l0aW9uLCBnZXQgYW5kIHBlcmZvcm0gbWVtb3J5IG1vdmVzICovXG4gICAgICB2YXIgYmFzZV9jb2RlID0gdGJsLmxleF9iYXNlX2NvZGVbcHN0YXRlXSwgcGNfb2ZmO1xuICAgICAgaWYgKHRibC5sZXhfY2hlY2tfY29kZVtiYXNlX2NvZGUgKyBjXSA9PSBwc3RhdGUpXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfdHJhbnNfY29kZVtiYXNlX2NvZGUgKyBjXTtcbiAgICAgIGVsc2VcbiAgICAgICAgcGNfb2ZmID0gdGJsLmxleF9kZWZhdWx0X2NvZGVbcHN0YXRlXTtcbiAgICAgIGlmIChwY19vZmYgPiAwKVxuICAgICAgICBjYW1sX2xleF9ydW5fbWVtXG4gICAgICAodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSwgbGV4YnVmW2xleF9jdXJyX3Bvc10pO1xuICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzXG4gICAgICAgICBjb25zdW1lZCBieSB0aGUgYXV0b21hdG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpXG4gICAgICAqL1xuICAgICAgaWYgKGMgPT0gMjU2KSBsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEFycmF5XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc3ViIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc3ViIChhLCBpLCBsZW4pIHtcbiAgdmFyIGEyID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYTJbMF09MDtcbiAgZm9yKHZhciBpMiA9IDEsIGkxPSBpKzE7IGkyIDw9IGxlbjsgaTIrKyxpMSsrICl7XG4gICAgYTJbaTJdPWFbaTFdO1xuICB9XG4gIHJldHVybiBhMjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9hcHBlbmQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9hcHBlbmQoYTEsIGEyKSB7XG4gIHZhciBsMSA9IGExLmxlbmd0aCwgbDIgPSBhMi5sZW5ndGg7XG4gIHZhciBsID0gbDErbDItMVxuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgYVswXSA9IDA7XG4gIHZhciBpID0gMSxqID0gMTtcbiAgZm9yKDtpPGwxO2krKykgYVtpXT1hMVtpXTtcbiAgZm9yKDtpPGw7aSsrLGorKykgYVtpXT1hMltqXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfY29uY2F0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfY29uY2F0KGwpIHtcbiAgdmFyIGEgPSBbMF07XG4gIHdoaWxlIChsICE9PSAwKSB7XG4gICAgdmFyIGIgPSBsWzFdO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYi5sZW5ndGg7IGkrKykgYS5wdXNoKGJbaV0pO1xuICAgIGwgPSBsWzJdO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIGlmIChpMiA8PSBpMSkge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IGxlbjsgaisrKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBqID0gbGVuOyBqID49IDE7IGotLSkgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy8vLy8vLy8vLy8vLyBQZXJ2YXNpdmVcbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc2V0IChtdXRhYmxlLCBjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X3NldCAoYXJyYXksIGluZGV4LCBuZXd2YWwpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBhcnJheVtpbmRleCsxXT1uZXd2YWw7IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2dldCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X2dldCAoYXJyYXksIGluZGV4KSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5W2luZGV4KzFdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfZmlsbChhcnJheSwgb2ZzLCBsZW4sIHYpe1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIGFycmF5W29mcytpKzFdID0gdjtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9jaGVja19ib3VuZCAoYXJyYXksIGluZGV4KSB7XG4gIGlmIChpbmRleCA+Pj4gMCA+PSBhcnJheS5sZW5ndGggLSAxKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX3ZlY3QgY29uc3QgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV92ZWN0IChsZW4sIGluaXQpIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTA7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSBpbml0O1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX2Zsb2F0X3ZlY3QgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX2Zsb2F0X3ZlY3QobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9jcmVhdGUobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gV2VhayBBUEksIGJ1dCB3aXRob3V0IHRoZSB3ZWFrIHNlbWFudGljc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxudmFyIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ID0gM1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfZGF0YV9vZmZzZXQgPSAyXG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfd2Vha19jcmVhdGUgKG4pIHtcbiAgaWYgKG4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5jcmVhdGVcIik7XG4gIHZhciB4ID0gWzI1MSxcImNhbWxfZXBoZV9saXN0X2hlYWRcIl07XG4gIHgubGVuZ3RoID0gY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBuO1xuICByZXR1cm4geDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX3NldFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF93ZWFrX3NldCh4LCBpLCB2KSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5zZXRcIik7XG4gIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IHY7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2dldFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF93ZWFrX2dldCh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfa2V5XCIpO1xuICByZXR1cm4gKHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpIF09PT11bmRlZmluZWQpPzA6eFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldO1xufVxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2dldF9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfZ2V0LGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXAsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF93ZWFrX2dldF9jb3B5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmdldF9jb3B5XCIpO1xuICB2YXIgeSA9IGNhbWxfd2Vha19nZXQoeCwgaSk7XG4gIGlmICh5ID09PSAwKSByZXR1cm4geTtcbiAgdmFyIHogPSB5WzFdO1xuICBpZiAoeiBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfY2hlY2sgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfd2Vha19jaGVjayh4LCBpKSB7XG4gIGlmKHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSE9PXVuZGVmaW5lZCAmJiB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gIT09MClcbiAgICByZXR1cm4gMTtcbiAgZWxzZVxuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF93ZWFrX2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICAvLyBtaW51cyBvbmUgYmVjYXVzZSBjYW1sX2FycmF5X2JsaXQgd29ya3Mgb24gb2NhbWwgYXJyYXlcbiAgY2FtbF9hcnJheV9ibGl0KGExLCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkxIC0gMSxcbiAgICAgICAgICAgICAgICAgIGEyLCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkyIC0gMSxcbiAgICAgICAgICAgICAgICAgIGxlbik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfY3JlYXRlXG52YXIgY2FtbF9lcGhlX2NyZWF0ZSA9IGNhbWxfd2Vha19jcmVhdGVcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfYmxpdFxudmFyIGNhbWxfZXBoZV9ibGl0X2tleSA9IGNhbWxfd2Vha19ibGl0XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfZ2V0XG52YXIgY2FtbF9lcGhlX2dldF9rZXkgPSBjYW1sX3dlYWtfZ2V0XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19nZXRfY29weVxudmFyIGNhbWxfZXBoZV9nZXRfa2V5X2NvcHkgPSBjYW1sX3dlYWtfZ2V0X2NvcHlcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2tleVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NoZWNrXG52YXIgY2FtbF9lcGhlX2NoZWNrX2tleSA9IGNhbWxfd2Vha19jaGVja1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX3NldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3NldF9rZXkoeCwgaSwgdikge1xuICByZXR1cm4gY2FtbF93ZWFrX3NldCh4LCBpLCBbMCwgdl0pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19zZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9rZXkoeCwgaSkge1xuICByZXR1cm4gY2FtbF93ZWFrX3NldCh4LCBpLCAwKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2RhdGEoc3JjLCBkc3Qpe1xuICBkc3RbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IHNyY1tjYW1sX2VwaGVfZGF0YV9vZmZzZXRdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gWzAsIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdKV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2RhdGEoeCwgZGF0YSl7XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGRhdGE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4LCBkYXRhKXtcbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9jaGFuXG4vL1JlcXVpcmVzOiBjYW1sX21kNV9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2FycmF5LGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9tZDVfY2hhbihjaGFuaWQsbGVuKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBjaGFuX2xlbiA9IGNoYW4uZmlsZS5sZW5ndGgoKTtcbiAgaWYobGVuPDApIGxlbiA9IGNoYW5fbGVuIC0gY2hhbi5vZmZzZXQ7XG4gIGlmKGNoYW4ub2Zmc2V0ICsgbGVuID4gY2hhbl9sZW4pIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgdmFyIGJ1ZiA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gIGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LGJ1ZiwwLGxlbik7XG4gIHJldHVybiBjYW1sX21kNV9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMoYnVmKSwwLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfbWQ1X2J5dGVzXG5mdW5jdGlvbiBjYW1sX21kNV9zdHJpbmcocywgb2ZzLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfbWQ1X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpLG9mcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfbWxfYnl0ZXNfY29udGVudFxudmFyIGNhbWxfbWQ1X2J5dGVzID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBhZGQgKHgsIHkpIHsgcmV0dXJuICh4ICsgeSkgfCAwOyB9XG4gIGZ1bmN0aW9uIHh4KHEsYSxiLHgscyx0KSB7XG4gICAgYSA9IGFkZChhZGQoYSwgcSksIGFkZCh4LCB0KSk7XG4gICAgcmV0dXJuIGFkZCgoYSA8PCBzKSB8IChhID4+PiAoMzIgLSBzKSksIGIpO1xuICB9XG4gIGZ1bmN0aW9uIGZmKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBjKSB8ICgofmIpICYgZCksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGdnKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBkKSB8IChjICYgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGhoKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGIgXiBjIF4gZCwgYSwgYiwgeCwgcywgdCk7IH1cbiAgZnVuY3Rpb24gaWkoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4geHgoYyBeIChiIHwgKH5kKSksIGEsIGIsIHgsIHMsIHQpOyB9XG5cbiAgZnVuY3Rpb24gbWQ1KGJ1ZmZlciwgbGVuZ3RoKSB7XG4gICAgdmFyIGkgPSBsZW5ndGg7XG4gICAgYnVmZmVyW2kgPj4gMl0gfD0gMHg4MCA8PCAoOCAqIChpICYgMykpO1xuICAgIGZvciAoaSA9IChpICYgfjB4MykgKyA4OyhpICYgMHgzRikgPCA2MCA7aSArPSA0KVxuICAgICAgYnVmZmVyWyhpID4+IDIpIC0gMV0gPSAwO1xuICAgIGJ1ZmZlclsoaSA+PiAyKSAtMV0gPSBsZW5ndGggPDwgMztcbiAgICBidWZmZXJbaSA+PiAyXSA9IChsZW5ndGggPj4gMjkpICYgMHgxRkZGRkZGRjtcblxuICAgIHZhciB3ID0gWzB4Njc0NTIzMDEsIDB4RUZDREFCODksIDB4OThCQURDRkUsIDB4MTAzMjU0NzZdO1xuXG4gICAgZm9yKGkgPSAwOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSArPSAxNikge1xuICAgICAgdmFyIGEgPSB3WzBdLCBiID0gd1sxXSwgYyA9IHdbMl0sIGQgPSB3WzNdO1xuXG4gICAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyW2krIDBdLCA3LCAweEQ3NkFBNDc4KTtcbiAgICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbaSsgMV0sIDEyLCAweEU4QzdCNzU2KTtcbiAgICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbaSsgMl0sIDE3LCAweDI0MjA3MERCKTtcbiAgICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbaSsgM10sIDIyLCAweEMxQkRDRUVFKTtcbiAgICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbaSsgNF0sIDcsIDB4RjU3QzBGQUYpO1xuICAgICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyA1XSwgMTIsIDB4NDc4N0M2MkEpO1xuICAgICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKyA2XSwgMTcsIDB4QTgzMDQ2MTMpO1xuICAgICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyA3XSwgMjIsIDB4RkQ0Njk1MDEpO1xuICAgICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyA4XSwgNywgMHg2OTgwOThEOCk7XG4gICAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyW2krIDldLCAxMiwgMHg4QjQ0RjdBRik7XG4gICAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyW2krMTBdLCAxNywgMHhGRkZGNUJCMSk7XG4gICAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyW2krMTFdLCAyMiwgMHg4OTVDRDdCRSk7XG4gICAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyW2krMTJdLCA3LCAweDZCOTAxMTIyKTtcbiAgICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbaSsxM10sIDEyLCAweEZEOTg3MTkzKTtcbiAgICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbaSsxNF0sIDE3LCAweEE2Nzk0MzhFKTtcbiAgICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbaSsxNV0sIDIyLCAweDQ5QjQwODIxKTtcblxuICAgICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyAxXSwgNSwgMHhGNjFFMjU2Mik7XG4gICAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyW2krIDZdLCA5LCAweEMwNDBCMzQwKTtcbiAgICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbaSsxMV0sIDE0LCAweDI2NUU1QTUxKTtcbiAgICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbaSsgMF0sIDIwLCAweEU5QjZDN0FBKTtcbiAgICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbaSsgNV0sIDUsIDB4RDYyRjEwNUQpO1xuICAgICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKzEwXSwgOSwgMHgwMjQ0MTQ1Myk7XG4gICAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyW2krMTVdLCAxNCwgMHhEOEExRTY4MSk7XG4gICAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyW2krIDRdLCAyMCwgMHhFN0QzRkJDOCk7XG4gICAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyW2krIDldLCA1LCAweDIxRTFDREU2KTtcbiAgICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbaSsxNF0sIDksIDB4QzMzNzA3RDYpO1xuICAgICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKyAzXSwgMTQsIDB4RjRENTBEODcpO1xuICAgICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyA4XSwgMjAsIDB4NDU1QTE0RUQpO1xuICAgICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKzEzXSwgNSwgMHhBOUUzRTkwNSk7XG4gICAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyW2krIDJdLCA5LCAweEZDRUZBM0Y4KTtcbiAgICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbaSsgN10sIDE0LCAweDY3NkYwMkQ5KTtcbiAgICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbaSsxMl0sIDIwLCAweDhEMkE0QzhBKTtcblxuICAgICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyA1XSwgNCwgMHhGRkZBMzk0Mik7XG4gICAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyW2krIDhdLCAxMSwgMHg4NzcxRjY4MSk7XG4gICAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyW2krMTFdLCAxNiwgMHg2RDlENjEyMik7XG4gICAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyW2krMTRdLCAyMywgMHhGREU1MzgwQyk7XG4gICAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyW2krIDFdLCA0LCAweEE0QkVFQTQ0KTtcbiAgICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbaSsgNF0sIDExLCAweDRCREVDRkE5KTtcbiAgICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbaSsgN10sIDE2LCAweEY2QkI0QjYwKTtcbiAgICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbaSsxMF0sIDIzLCAweEJFQkZCQzcwKTtcbiAgICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbaSsxM10sIDQsIDB4Mjg5QjdFQzYpO1xuICAgICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyAwXSwgMTEsIDB4RUFBMTI3RkEpO1xuICAgICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKyAzXSwgMTYsIDB4RDRFRjMwODUpO1xuICAgICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyA2XSwgMjMsIDB4MDQ4ODFEMDUpO1xuICAgICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyA5XSwgNCwgMHhEOUQ0RDAzOSk7XG4gICAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyW2krMTJdLCAxMSwgMHhFNkRCOTlFNSk7XG4gICAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyW2krMTVdLCAxNiwgMHgxRkEyN0NGOCk7XG4gICAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyW2krIDJdLCAyMywgMHhDNEFDNTY2NSk7XG5cbiAgICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbaSsgMF0sIDYsIDB4RjQyOTIyNDQpO1xuICAgICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyA3XSwgMTAsIDB4NDMyQUZGOTcpO1xuICAgICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzE0XSwgMTUsIDB4QUI5NDIzQTcpO1xuICAgICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyA1XSwgMjEsIDB4RkM5M0EwMzkpO1xuICAgICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKzEyXSwgNiwgMHg2NTVCNTlDMyk7XG4gICAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyW2krIDNdLCAxMCwgMHg4RjBDQ0M5Mik7XG4gICAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyW2krMTBdLCAxNSwgMHhGRkVGRjQ3RCk7XG4gICAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyW2krIDFdLCAyMSwgMHg4NTg0NUREMSk7XG4gICAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyW2krIDhdLCA2LCAweDZGQTg3RTRGKTtcbiAgICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbaSsxNV0sIDEwLCAweEZFMkNFNkUwKTtcbiAgICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbaSsgNl0sIDE1LCAweEEzMDE0MzE0KTtcbiAgICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbaSsxM10sIDIxLCAweDRFMDgxMUExKTtcbiAgICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbaSsgNF0sIDYsIDB4Rjc1MzdFODIpO1xuICAgICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKzExXSwgMTAsIDB4QkQzQUYyMzUpO1xuICAgICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKyAyXSwgMTUsIDB4MkFEN0QyQkIpO1xuICAgICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyA5XSwgMjEsIDB4RUI4NkQzOTEpO1xuXG4gICAgICB3WzBdID0gYWRkKGEsIHdbMF0pO1xuICAgICAgd1sxXSA9IGFkZChiLCB3WzFdKTtcbiAgICAgIHdbMl0gPSBhZGQoYywgd1syXSk7XG4gICAgICB3WzNdID0gYWRkKGQsIHdbM10pO1xuICAgIH1cblxuICAgIHZhciB0ID0gbmV3IEFycmF5KDE2KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKylcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgNDsgaisrKVxuICAgICAgICB0W2kgKiA0ICsgal0gPSAod1tpXSA+PiAoOCAqIGopKSAmIDB4RkY7XG4gICAgcmV0dXJuIHQ7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKHMsIG9mcywgbGVuKSB7XG4gICAgLy8gRklYOiBtYXliZSB3ZSBzaG91bGQgcGVyZm9ybSB0aGUgY29tcHV0YXRpb24gYnkgY2h1bmsgb2YgNjQgYnl0ZXNcbiAgICAvLyBhcyBpbiBodHRwOi8vd3d3Lm15ZXJzZGFpbHkub3JnL2pvc2VwaC9qYXZhc2NyaXB0L21kNS5qc1xuICAgIHZhciBidWYgPSBbXTtcbiAgICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudChzKTtcbiAgICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIil7XG4gICAgICB2YXIgYiA9IGNvbnRlbnQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSs9NCkge1xuICAgICAgICB2YXIgaiA9IGkgKyBvZnM7XG4gICAgICAgIGJ1ZltpPj4yXSA9XG4gICAgICAgICAgYi5jaGFyQ29kZUF0KGopIHwgKGIuY2hhckNvZGVBdChqKzEpIDw8IDgpIHxcbiAgICAgICAgICAoYi5jaGFyQ29kZUF0KGorMikgPDwgMTYpIHwgKGIuY2hhckNvZGVBdChqKzMpIDw8IDI0KTtcbiAgICAgIH1cbiAgICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIGJ1ZltpPj4yXSB8PSBiLmNoYXJDb2RlQXQoaSArIG9mcykgPDwgKDggKiAoaSAmIDMpKTtcbiAgICB9IGVsc2UgeyAvKiBBUlJBWSAqL1xuICAgICAgdmFyIGEgPSBjb250ZW50O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrPTQpIHtcbiAgICAgICAgdmFyIGogPSBpICsgb2ZzO1xuICAgICAgICBidWZbaT4+Ml0gPSBhW2pdIHwgKGFbaisxXSA8PCA4KSB8IChhW2orMl0gPDwgMTYpIHwgKGFbaiszXSA8PCAyNCk7XG4gICAgICB9XG4gICAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSBidWZbaT4+Ml0gfD0gYVtpICsgb2ZzXSA8PCAoOCAqIChpICYgMykpO1xuICAgIH1cbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkobWQ1KGJ1ZiwgbGVuKSk7XG4gIH1cbn0gKCk7XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBIdWdvIEhldXphcmRcbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIFNoYWNoYXIgSXR6aGFreVxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2Jsb2IvNC4wNy9vdGhlcmxpYnMvc3RyL3N0cnN0dWJzLmNcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2NvcS9qc2NvcS9ibG9iL3Y4LjExL2NvcS1qcy9qc19zdHViL3N0ci5qc1xuXG4vL1Byb3ZpZGVzOiByZV9tYXRjaFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZ2V0XG5cbnZhciByZV9tYXRjaCA9IGZ1bmN0aW9uKCl7XG4gIHZhciByZV93b3JkX2xldHRlcnMgPSBbXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHgwMC0weDFGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHhGRiwgMHgwMywgICAgICAgLyogMHgyMC0weDNGOiBkaWdpdHMgMC05ICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHg4NywgICAgICAgLyogMHg0MC0weDVGOiBBIHRvIFosIF8gKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDA3LCAgICAgICAvKiAweDYwLTB4N0Y6IGEgdG8geiAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4ODAtMHg5Rjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4QTAtMHhCRjogbm9uZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYsICAgICAgIC8qIDB4QzAtMHhERjogTGF0aW4tMSBhY2NlbnRlZCB1cHBlcmNhc2UgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGICAgICAgICAvKiAweEUwLTB4RkY6IExhdGluLTEgYWNjZW50ZWQgbG93ZXJjYXNlICovXG4gIF07XG5cbiAgdmFyIG9wY29kZXMgPSB7XG4gICAgQ0hBUjogMCwgQ0hBUk5PUk06IDEsIFNUUklORzogMiwgU1RSSU5HTk9STTogMywgQ0hBUkNMQVNTOiA0LFxuICAgIEJPTDogNSwgRU9MOiA2LCBXT1JEQk9VTkRBUlk6IDcsXG4gICAgQkVHR1JPVVA6IDgsIEVOREdST1VQOiA5LCBSRUZHUk9VUDogMTAsXG4gICAgQUNDRVBUOiAxMSxcbiAgICBTSU1QTEVPUFQ6IDEyLCBTSU1QTEVTVEFSOiAxMywgU0lNUExFUExVUzogMTQsXG4gICAgR09UTzogMTUsIFBVU0hCQUNLOiAxNiwgU0VUTUFSSzogMTcsXG4gICAgQ0hFQ0tQUk9HUkVTUzogMThcbiAgfTtcblxuICBmdW5jdGlvbiBpc193b3JkX2xldHRlcihjKSB7XG4gICAgcmV0dXJuIChyZV93b3JkX2xldHRlcnNbICAoYyA+PiAzKV0gPj4gKGMgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5fYml0c2V0KHMsaSkge1xuICAgIHJldHVybiAoY2FtbF9zdHJpbmdfZ2V0KHMsKGkgPj4gMykpID4+IChpICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlX21hdGNoX2ltcGwocmUsIHMsIHBvcywgcGFydGlhbCkge1xuXG4gICAgdmFyIHByb2cgICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMV0pLFxuICAgICAgICBjcG9vbCAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzJdKSxcbiAgICAgICAgbm9ybXRhYmxlICAgICA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVbM10pLFxuICAgICAgICBudW1ncm91cHMgICAgID0gcmVbNF0gfCAwLFxuICAgICAgICBudW1yZWdpc3RlcnMgID0gcmVbNV0gfCAwLFxuICAgICAgICBzdGFydGNoYXJzICAgID0gcmVbNl0gfCAwO1xuXG4gICAgdmFyIHMgPSBjYW1sX2FycmF5X29mX3N0cmluZyhzKTtcblxuICAgIHZhciBwYyA9IDAsXG4gICAgICAgIHF1aXQgPSBmYWxzZSxcbiAgICAgICAgc3RhY2sgPSBbXSxcbiAgICAgICAgZ3JvdXBzID0gbmV3IEFycmF5KG51bWdyb3VwcyksXG4gICAgICAgIHJlX3JlZ2lzdGVyID0gbmV3IEFycmF5KG51bXJlZ2lzdGVycyk7XG5cbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgIGdyb3Vwc1tpXSA9IHtzdGFydDogLTEsIGVuZDotMX1cbiAgICB9XG4gICAgZ3JvdXBzWzBdLnN0YXJ0ID0gcG9zO1xuXG4gICAgdmFyIGJhY2t0cmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBzdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKGl0ZW0udW5kbykge1xuICAgICAgICAgIGl0ZW0udW5kby5vYmpbaXRlbS51bmRvLnByb3BdID0gaXRlbS51bmRvLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoaXRlbS5wb3MpIHtcbiAgICAgICAgICBwYyA9IGl0ZW0ucG9zLnBjO1xuICAgICAgICAgIHBvcyA9IGl0ZW0ucG9zLnR4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1aXQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uKGl0ZW0pIHsgc3RhY2sucHVzaChpdGVtKTsgfTtcblxuICAgIHZhciBhY2NlcHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBncm91cHNbMF0uZW5kID0gcG9zO1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSgxICsgZ3JvdXBzLmxlbmd0aCoyKTtcbiAgICAgIHJlc3VsdFswXSA9IDA7IC8vIHRhZ1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHZhciBnID0gZ3JvdXBzW2ldO1xuICAgICAgICBpZihnLnN0YXJ0IDwgMCB8fCBnLmVuZCA8IDApIHtcbiAgICAgICAgICBnLnN0YXJ0ID0gZy5lbmQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbMippICsgMSBdID0gZy5zdGFydDtcbiAgICAgICAgcmVzdWx0WzIqaSArIDEgKyAxIF0gPSBnLmVuZDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfTtcblxuICAgIHZhciBwcmVmaXhfbWF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZihwYXJ0aWFsKSByZXR1cm4gYWNjZXB0ICgpO1xuICAgICAgZWxzZSBiYWNrdHJhY2sgKCk7XG4gICAgfVxuXG4gICAgLyogTWFpbiBERkEgaW50ZXJwcmV0ZXIgbG9vcCAqL1xuICAgIHdoaWxlICghcXVpdCkge1xuICAgICAgdmFyIG9wID0gcHJvZ1twY10gJiAweGZmLFxuICAgICAgICAgIHNhcmcgPSBwcm9nW3BjXSA+PiA4LFxuICAgICAgICAgIHVhcmcgPSBzYXJnICYgMHhmZixcbiAgICAgICAgICBjID0gc1twb3NdLFxuICAgICAgICAgIGdyb3VwO1xuXG4gICAgICBwYysrO1xuXG4gICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUjpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoYyA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJOT1JNOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklORzpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChjID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HTk9STTpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJDTEFTUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJPTDpcbiAgICAgICAgaWYocG9zID4gMCAmJiBzW3BvcyAtIDFdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FT0w6XG4gICAgICAgIGlmKHBvcyA8IHMubGVuZ3RoICYmIHNbcG9zXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuV09SREJPVU5EQVJZOlxuICAgICAgICBpZihwb3MgPT0gMCkge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzWzBdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocG9zID09PSBzLmxlbmd0aCkge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkgIT0gaXNfd29yZF9sZXR0ZXIoc1twb3NdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJFR0dST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5zdGFydH19KTtcbiAgICAgICAgZ3JvdXAuc3RhcnQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVOREdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajogZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLmVuZH19KTtcbiAgICAgICAgZ3JvdXAuZW5kID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5SRUZHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIGlmKGdyb3VwLnN0YXJ0IDwgMCB8fCBncm91cC5lbmQgPCAwKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgZm9yICh2YXIgaSA9IGdyb3VwLnN0YXJ0OyBpIDwgZ3JvdXAuZW5kOyBpKyspe1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihzW2ldICE9IHNbcG9zXSkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgICAgcG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFT1BUOlxuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVNUQVI6XG4gICAgICAgIHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKVxuICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFUExVUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkge1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICB9IHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5BQ0NFUFQ6XG4gICAgICAgIHJldHVybiBhY2NlcHQoKTtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5HT1RPOlxuICAgICAgICBwYyA9IHBjICsgc2FyZztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUFVTSEJBQ0s6XG4gICAgICAgIHB1c2goe3Bvczoge3BjOiBwYyArIHNhcmcsIHR4dDogcG9zfX0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TRVRNQVJLOlxuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOnJlX3JlZ2lzdGVyLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDogdWFyZyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZV9yZWdpc3Rlclt1YXJnXX19KTtcbiAgICAgICAgcmVfcmVnaXN0ZXJbdWFyZ10gPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIRUNLUFJPR1JFU1M6XG4gICAgICAgIGlmIChyZV9yZWdpc3Rlclt1YXJnXSA9PT0gcG9zKSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ5dGVjb2RlXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiByZV9tYXRjaF9pbXBsO1xufSgpO1xuXG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9mb3J3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9mb3J3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9mb3J3YXJkXCIpXG4gIHdoaWxlIChwb3MgPD0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zKys7XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfYmFja3dhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2JhY2t3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9iYWNrd2FyZFwiKVxuICB3aGlsZSAocG9zID49IDApIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MtLTtcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cblxuLy9Qcm92aWRlczogcmVfc3RyaW5nX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3N0cmluZ19tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zdHJpbmdfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3BhcnRpYWxfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfcGFydGlhbF9tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5wYXJ0aWFsX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAxKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9yZXBsYWNlbWVudF90ZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2dldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8gZXh0ZXJuYWwgcmVfcmVwbGFjZW1lbnRfdGV4dDogc3RyaW5nIC0+IGludCBhcnJheSAtPiBzdHJpbmcgLT4gc3RyaW5nXG5mdW5jdGlvbiByZV9yZXBsYWNlbWVudF90ZXh0KHJlcGwsZ3JvdXBzLG9yaWcpIHtcbiAgdmFyIHJlcGwgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlcGwpO1xuICB2YXIgbGVuID0gcmVwbC5sZW5ndGg7XG4gIHZhciBvcmlnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvcmlnKTtcbiAgdmFyIHJlcyA9IFwiXCI7IC8vcmVzdWx0XG4gIHZhciBuID0gMDsgLy8gY3VycmVudCBwb3NpdGlvblxuICB2YXIgY3VyOyAvL2N1cnJlbnQgY2hhclxuICB2YXIgc3RhcnQsIGVuZCwgYztcbiAgd2hpbGUobiA8IGxlbil7XG4gICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICBpZihjdXIgIT0gJ1xcXFwnKXtcbiAgICAgIHJlcyArPSBjdXI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYobiA9PSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIik7XG4gICAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgICAgc3dpdGNoKGN1cil7XG4gICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgcmVzICs9IGN1cjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6XG4gICAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICAgIGMgPSArY3VyO1xuICAgICAgICBpZiAoYyoyID49IGdyb3Vwcy5sZW5ndGggLSAxIClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIiApO1xuICAgICAgICBzdGFydCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcyxjKjIpO1xuICAgICAgICBlbmQgPSBjYW1sX2FycmF5X2dldChncm91cHMsIGMqMiArMSk7XG4gICAgICAgIGlmIChzdGFydCA9PSAtMSlcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIik7XG4gICAgICAgIHJlcys9b3JpZy5zbGljZShzdGFydCxlbmQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlcyArPSAoJ1xcXFwnICArIGN1cik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7IH1cbiIsIi8vVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lZCBpbiBDc3RydWN0XG4vL1RoZXJlIGFyZSBqdXN0IHByb3ZpZGVkIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29uc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfYmlnc3RyaW5nX3RvX2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuLy9XZWFrZGVmXG52YXIgY2FtbF9ibGl0X2JpZ3N0cmluZ190b19iaWdzdHJpbmcgPSBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfYmlnc3RyaW5nX3RvX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuLy9XZWFrZGVmXG52YXIgY2FtbF9ibGl0X2JpZ3N0cmluZ190b19zdHJpbmcgPSBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfc3RyaW5nX3RvX2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbi8vV2Vha2RlZlxudmFyIGNhbWxfYmxpdF9zdHJpbmdfdG9fYmlnc3RyaW5nID0gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgRGFuaWVsIEMuIEJ1ZW56bGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuXG5sZXQgZXJyX25vX3ByZWQgPSBcIlUrMDAwMCBoYXMgbm8gcHJlZGVjZXNzb3JcIlxubGV0IGVycl9ub19zdWNjID0gXCJVKzEwRkZGRiBoYXMgbm8gc3VjY2Vzc29yXCJcbmxldCBlcnJfbm90X3N2IGkgPSBmb3JtYXRfaW50IFwiJVhcIiBpIF4gXCIgaXMgbm90IGFuIFVuaWNvZGUgc2NhbGFyIHZhbHVlXCJcbmxldCBlcnJfbm90X2xhdGluMSB1ID0gXCJVK1wiIF4gZm9ybWF0X2ludCBcIiUwNFhcIiB1IF4gXCIgaXMgbm90IGEgbGF0aW4xIGNoYXJhY3RlclwiXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgbWluID0gMHgwMDAwXG5sZXQgbWF4ID0gMHgxMEZGRkZcbmxldCBsb19ib3VuZCA9IDB4RDdGRlxubGV0IGhpX2JvdW5kID0gMHhFMDAwXG5cbmxldCBib20gPSAweEZFRkZcbmxldCByZXAgPSAweEZGRkRcblxubGV0IHN1Y2MgdSA9XG4gIGlmIHUgPSBsb19ib3VuZCB0aGVuIGhpX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1heCB0aGVuIGludmFsaWRfYXJnIGVycl9ub19zdWNjIGVsc2VcbiAgdSArIDFcblxubGV0IHByZWQgdSA9XG4gIGlmIHUgPSBoaV9ib3VuZCB0aGVuIGxvX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1pbiB0aGVuIGludmFsaWRfYXJnIGVycl9ub19wcmVkIGVsc2VcbiAgdSAtIDFcblxubGV0IGlzX3ZhbGlkIGkgPSAobWluIDw9IGkgJiYgaSA8PSBsb19ib3VuZCkgfHwgKGhpX2JvdW5kIDw9IGkgJiYgaSA8PSBtYXgpXG5sZXQgb2ZfaW50IGkgPSBpZiBpc192YWxpZCBpIHRoZW4gaSBlbHNlIGludmFsaWRfYXJnIChlcnJfbm90X3N2IGkpXG5leHRlcm5hbCB1bnNhZmVfb2ZfaW50IDogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19pbnQgOiB0IC0+IGludCA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX2NoYXIgdSA9IHUgPCAyNTZcbmxldCBvZl9jaGFyIGMgPSBDaGFyLmNvZGUgY1xubGV0IHRvX2NoYXIgdSA9XG4gIGlmIHUgPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyAoZXJyX25vdF9sYXRpbjEgdSkgZWxzZVxuICBDaGFyLnVuc2FmZV9jaHIgdVxuXG5sZXQgdW5zYWZlX3RvX2NoYXIgPSBDaGFyLnVuc2FmZV9jaHJcblxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IGhhc2ggPSB0b19pbnRcblxuKCogVVRGIGNvZGVjcyB0b29scyAqKVxuXG50eXBlIHV0Zl9kZWNvZGUgPSBpbnRcbigqIFRoaXMgaXMgYW4gaW50IFsweERVVVVVVVVdIGRlY29tcG9zZWQgYXMgZm9sbG93czpcbiAgIC0gW0RdIGlzIGZvdXIgYml0cyBmb3IgZGVjb2RlIGluZm9ybWF0aW9uLCB0aGUgaGlnaGVzdCBiaXQgaXMgc2V0IGlmIHRoZVxuICAgICBkZWNvZGUgaXMgdmFsaWQuIFRoZSB0aHJlZSBsb3dlciBiaXRzIGluZGljYXRlIHRoZSBudW1iZXIgb2YgZWxlbWVudHNcbiAgICAgZnJvbSB0aGUgc291cmNlIHRoYXQgd2VyZSBjb25zdW1lZCBieSB0aGUgZGVjb2RlLlxuICAgLSBbVVVVVVVVXSBpcyB0aGUgZGVjb2RlZCBVbmljb2RlIGNoYXJhY3RlciBvciB0aGUgVW5pY29kZSByZXBsYWNlbWVudFxuICAgICBjaGFyYWN0ZXIgVStGRkZEIGlmIGZvciBpbnZhbGlkIGRlY29kZXMuICopXG5cbmxldCB2YWxpZF9iaXQgPSAyN1xubGV0IGRlY29kZV9iaXRzID0gMjRcblxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfaXNfdmFsaWQgZCA9IChkIGxzciB2YWxpZF9iaXQpID0gMVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfbGVuZ3RoIGQgPSAoZCBsc3IgZGVjb2RlX2JpdHMpIGxhbmQgMGIxMTFcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX3VjaGFyIGQgPSB1bnNhZmVfb2ZfaW50IChkIGxhbmQgMHhGRkZGRkYpXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZSBuIHUgPSAoKDggbG9yIG4pIGxzbCBkZWNvZGVfYml0cykgbG9yICh0b19pbnQgdSlcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX2ludmFsaWQgbiA9IChuIGxzbCBkZWNvZGVfYml0cykgbG9yIHJlcFxuXG5sZXQgdXRmXzhfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweDAwN0YgLT4gMVxufCB1IHdoZW4gdSA8PSAweDA3RkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gM1xufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCB1dGZfMTZfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50NjRdOiA2NC1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X3RvX2Zsb2F0XCIgXCJjYW1sX2ludDY0X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcblxubGV0IHplcm8gPSAwTFxubGV0IG9uZSA9IDFMXG5sZXQgbWludXNfb25lID0gLTFMXG5sZXQgc3VjYyBuID0gYWRkIG4gMUxcbmxldCBwcmVkIG4gPSBzdWIgbiAxTFxubGV0IGFicyBuID0gaWYgbiA+PSAwTCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwMDAwMDAwMDBMXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZGRkZGRkZGRkxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMUwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmcgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjQgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cblxuXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxudHlwZSB0ID0gaW50NjRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4ICopXG5cbnR5cGUgcG9zaXRpb24gPSB7XG4gIHBvc19mbmFtZSA6IHN0cmluZztcbiAgcG9zX2xudW0gOiBpbnQ7XG4gIHBvc19ib2wgOiBpbnQ7XG4gIHBvc19jbnVtIDogaW50O1xufVxuXG5sZXQgZHVtbXlfcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDA7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IC0xO1xufVxuXG50eXBlIGxleGJ1ZiA9XG4gIHsgcmVmaWxsX2J1ZmYgOiBsZXhidWYgLT4gdW5pdDtcbiAgICBtdXRhYmxlIGxleF9idWZmZXIgOiBieXRlcztcbiAgICBtdXRhYmxlIGxleF9idWZmZXJfbGVuIDogaW50O1xuICAgIG11dGFibGUgbGV4X2Fic19wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2N1cnJfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfYWN0aW9uIDogaW50O1xuICAgIG11dGFibGUgbGV4X2VvZl9yZWFjaGVkIDogYm9vbDtcbiAgICBtdXRhYmxlIGxleF9tZW0gOiBpbnQgYXJyYXk7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcCA6IHBvc2l0aW9uO1xuICAgIG11dGFibGUgbGV4X2N1cnJfcCA6IHBvc2l0aW9uO1xuICB9XG5cbnR5cGUgbGV4X3RhYmxlcyA9XG4gIHsgbGV4X2Jhc2U6IHN0cmluZztcbiAgICBsZXhfYmFja3Ryazogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0OiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrOiBzdHJpbmc7XG4gICAgbGV4X2Jhc2VfY29kZSA6IHN0cmluZztcbiAgICBsZXhfYmFja3Rya19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0X2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NvZGU6IHN0cmluZzt9XG5cbmV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcbmV4dGVybmFsIGNfbmV3X2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9uZXdfbGV4X2VuZ2luZVwiXG5cbmxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cblxubGV0IG5ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX25ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5sZXQgbGV4X3JlZmlsbCByZWFkX2Z1biBhdXhfYnVmZmVyIGxleGJ1ZiA9XG4gIGxldCByZWFkID1cbiAgICByZWFkX2Z1biBhdXhfYnVmZmVyIChCeXRlcy5sZW5ndGggYXV4X2J1ZmZlcikgaW5cbiAgbGV0IG4gPVxuICAgIGlmIHJlYWQgPiAwXG4gICAgdGhlbiByZWFkXG4gICAgZWxzZSAobGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyAwKSBpblxuICAoKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBidWZmZXI6XG4gICAgICAgIDwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLT5cbiAgICAgICAgfCAganVuayB8ICAgICAgdmFsaWQgZGF0YSAgICAgfCAgIGp1bmsgICAgfFxuICAgICAgICBeICAgICAgIF4gICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICBeXG4gICAgICAgIDAgICAgc3RhcnRfcG9zICAgICAgICAgICAgIGJ1ZmZlcl9lbmQgICAgQnl0ZXMubGVuZ3RoIGJ1ZmZlclxuICAqKVxuICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuID4gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyIHRoZW4gYmVnaW5cbiAgICAoKiBUaGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgblxuICAgICAgIDw9IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlclxuICAgIHRoZW4gYmVnaW5cbiAgICAgICgqIEJ1dCB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaWYgd2UgcmVjbGFpbSB0aGUganVuayBhdCB0aGUgYmVnaW5uaW5nXG4gICAgICAgICBvZiB0aGUgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBsZXhidWYubGV4X2J1ZmZlciAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICgqIFdlIG11c3QgZ3JvdyB0aGUgYnVmZmVyLiAgRG91YmxpbmcgaXRzIHNpemUgd2lsbCBwcm92aWRlIGVub3VnaFxuICAgICAgICAgc3BhY2Ugc2luY2UgbiA8PSBTdHJpbmcubGVuZ3RoIGF1eF9idWZmZXIgPD0gU3RyaW5nLmxlbmd0aCBidWZmZXIuXG4gICAgICAgICBXYXRjaCBvdXQgZm9yIHN0cmluZyBsZW5ndGggb3ZlcmZsb3csIHRob3VnaC4gKilcbiAgICAgIGxldCBuZXdsZW4gPVxuICAgICAgICBJbnQubWluICgyICogQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgbiA+IG5ld2xlblxuICAgICAgdGhlbiBmYWlsd2l0aCBcIkxleGluZy5sZXhfcmVmaWxsOiBjYW5ub3QgZ3JvdyBidWZmZXJcIjtcbiAgICAgIGxldCBuZXdidWYgPSBCeXRlcy5jcmVhdGUgbmV3bGVuIGluXG4gICAgICAoKiBDb3B5IHRoZSB2YWxpZCBkYXRhIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5ldyBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIG5ld2J1ZiAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpO1xuICAgICAgbGV4YnVmLmxleF9idWZmZXIgPC0gbmV3YnVmXG4gICAgZW5kO1xuICAgICgqIFJlYWxsb2NhdGlvbiBvciBub3QsIHdlIGhhdmUgc2hpZnRlZCB0aGUgZGF0YSBsZWZ0IGJ5XG4gICAgICAgc3RhcnRfcG9zIGNoYXJhY3RlcnM7IHVwZGF0ZSB0aGUgcG9zaXRpb25zICopXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBzO1xuICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gMDtcbiAgICBsZXhidWYubGV4X2xhc3RfcG9zIDwtIGxleGJ1Zi5sZXhfbGFzdF9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBzIDtcbiAgICBsZXQgdCA9IGxleGJ1Zi5sZXhfbWVtIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LTEgZG9cbiAgICAgIGxldCB2ID0gdC4oaSkgaW5cbiAgICAgIGlmIHYgPj0gMCB0aGVuXG4gICAgICAgIHQuKGkpIDwtIHYtc1xuICAgIGRvbmVcbiAgZW5kO1xuICAoKiBUaGVyZSBpcyBub3cgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICBCeXRlcy5ibGl0IGF1eF9idWZmZXIgMCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X2J1ZmZlcl9sZW4gbjtcbiAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG5cblxubGV0IHplcm9fcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDE7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IDA7XG59XG5cbmxldCBmcm9tX2Z1bmN0aW9uID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBmID1cbiAgeyByZWZpbGxfYnVmZiA9IGxleF9yZWZpbGwgZiAoQnl0ZXMuY3JlYXRlIDUxMik7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAxMDI0O1xuICAgIGxleF9idWZmZXJfbGVuID0gMDtcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gZmFsc2U7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBmcm9tX2NoYW5uZWwgP3dpdGhfcG9zaXRpb25zIGljID1cbiAgZnJvbV9mdW5jdGlvbiA/d2l0aF9wb3NpdGlvbnMgKGZ1biBidWYgbiAtPiBpbnB1dCBpYyBidWYgMCBuKVxuXG5sZXQgZnJvbV9zdHJpbmcgPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIHMgPVxuICB7IHJlZmlsbF9idWZmID0gKGZ1biBsZXhidWYgLT4gbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMub2Zfc3RyaW5nIHM7ICgqIGhhdmUgdG8gbWFrZSBhIGNvcHkgZm9yIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdW5zYWZlLXN0cmluZyBtb2RlICopXG4gICAgbGV4X2J1ZmZlcl9sZW4gPSBTdHJpbmcubGVuZ3RoIHM7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IHRydWU7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBzZXRfcG9zaXRpb24gbGV4YnVmIHBvc2l0aW9uID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgIDwtIHtwb3NpdGlvbiB3aXRoIHBvc19mbmFtZSA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19mbmFtZX07XG4gIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBwb3NpdGlvbi5wb3NfY251bVxuXG5sZXQgc2V0X2ZpbGVuYW1lIGxleGJ1ZiBmbmFtZSA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHtsZXhidWYubGV4X2N1cnJfcCB3aXRoIHBvc19mbmFtZSA9IGZuYW1lfVxuXG5sZXQgd2l0aF9wb3NpdGlvbnMgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zXG5cbmxldCBsZXhlbWUgbGV4YnVmID1cbiAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG5sZXQgc3ViX2xleGVtZSBsZXhidWYgaTEgaTIgPVxuICBsZXQgbGVuID0gaTItaTEgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW5cblxubGV0IHN1Yl9sZXhlbWVfb3B0IGxleGJ1ZiBpMSBpMiA9XG4gIGlmIGkxID49IDAgdGhlbiBiZWdpblxuICAgIGxldCBsZW4gPSBpMi1pMSBpblxuICAgIFNvbWUgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuKVxuICBlbmQgZWxzZSBiZWdpblxuICAgIE5vbmVcbiAgZW5kXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPSBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaVxuXG5sZXQgc3ViX2xleGVtZV9jaGFyX29wdCBsZXhidWYgaSA9XG4gIGlmIGkgPj0gMCB0aGVuXG4gICAgU29tZSAoQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGkpXG4gIGVsc2VcbiAgICBOb25lXG5cblxubGV0IGxleGVtZV9jaGFyIGxleGJ1ZiBpID1cbiAgQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIChsZXhidWYubGV4X3N0YXJ0X3BvcyArIGkpXG5cbmxldCBsZXhlbWVfc3RhcnQgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wLnBvc19jbnVtXG5sZXQgbGV4ZW1lX2VuZCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfY251bVxuXG5sZXQgbGV4ZW1lX3N0YXJ0X3AgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wXG5sZXQgbGV4ZW1lX2VuZF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wXG5cbmxldCBuZXdfbGluZSBsZXhidWYgPVxuICBsZXQgbGNwID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICAgIHsgbGNwIHdpdGhcbiAgICAgICAgcG9zX2xudW0gPSBsY3AucG9zX2xudW0gKyAxO1xuICAgICAgICBwb3NfYm9sID0gbGNwLnBvc19jbnVtO1xuICAgICAgfVxuXG5cblxuKCogRGlzY2FyZCBkYXRhIGxlZnQgaW4gbGV4ZXIgYnVmZmVyLiAqKVxuXG5sZXQgZmx1c2hfaW5wdXQgbGIgPVxuICBsYi5sZXhfY3Vycl9wb3MgPC0gMDtcbiAgbGIubGV4X2Fic19wb3MgPC0gMDtcbiAgbGV0IGxjcCA9IGxiLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGIubGV4X2N1cnJfcCA8LSB7emVyb19wb3Mgd2l0aCBwb3NfZm5hbWUgPSBsY3AucG9zX2ZuYW1lfTtcbiAgbGIubGV4X2J1ZmZlcl9sZW4gPC0gMDtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3NcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgKCogVG9vbHMgdG8gbWFuaXB1bGF0ZSBzY2FubmluZyBzZXQgb2YgY2hhcnMgKHNlZSAlWy4uLl0pICopXG5cbnR5cGUgbXV0YWJsZV9jaGFyX3NldCA9IGJ5dGVzXG5cbigqIENyZWF0ZSBhIGZyZXNoLCBlbXB0eSwgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBjcmVhdGVfY2hhcl9zZXQgKCkgPSBCeXRlcy5tYWtlIDMyICdcXDAwMCdcblxuKCogQWRkIGEgY2hhciBpbiBhIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgQnl0ZXMuc2V0IGNoYXJfc2V0IHN0cl9pbmRcbiAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChCeXRlcy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbG9yIG1hc2spKVxuXG5sZXQgZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgQnl0ZXMudG9fc3RyaW5nIGNoYXJfc2V0XG5cbigqIENvbXB1dGUgdGhlIGNvbXBsZW1lbnQgb2YgYSBjaGFyIHNldC4gKilcbmxldCByZXZfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBsZXQgY2hhcl9zZXQnID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gIGZvciBpID0gMCB0byAzMSBkb1xuICAgIEJ5dGVzLnNldCBjaGFyX3NldCcgaVxuICAgICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBpKSBseG9yIDB4RkYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjaGFyX3NldCdcblxuKCogUmV0dXJuIHRydWUgaWYgYSBgYycgaXMgaW4gYGNoYXJfc2V0Jy4gKilcbmxldCBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsYW5kIG1hc2spIDw+IDBcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIElnbm9yZWQgcGFyYW0gY29udmVyc2lvbiAqKVxuXG4oKiBHQURUIHVzZWQgdG8gYWJzdHJhY3QgYW4gZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXIuICopXG4oKiBTZWUgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0LiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYiA9IFBhcmFtX2Zvcm1hdF9FQkIgOlxuICAgICgneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYlxuXG4oKiBDb21wdXRlIGEgcGFkZGluZyBhc3NvY2lhdGVkIHRvIGEgcGFkX29wdGlvbiAoc2VlIFwiJV80MmRcIikuICopXG5sZXQgcGFkX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcGFkZGluZ1xuICB8IFNvbWUgd2lkdGggLT4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcblxuKCogQ29tcHV0ZSBhIHByZWNpc2lvbiBhc3NvY2lhdGVkIHRvIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfLjQyZlwiKS4gKilcbmxldCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0ID0gbWF0Y2ggcHJlY19vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcHJlY2lzaW9uXG4gIHwgU29tZSBuZGVjIC0+IExpdF9wcmVjaXNpb24gbmRlY1xuXG4oKiBUdXJuIGFuIGlnbm9yZWQgcGFyYW0gaW50byBpdHMgZXF1aXZhbGVudCBub3QtaWdub3JlZCBmb3JtYXQgbm9kZS4gKilcbigqIFVzZWQgZm9yIGZvcm1hdCBwcmV0dHktcHJpbnRpbmcgYW5kIFNjYW5mLiAqKVxubGV0IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPiAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFyYW1fZm9ybWF0X2ViYiA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENoYXIgZm10KVxuICB8IElnbm9yZWRfY2FtbF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9jaGFyIGZtdClcbiAgfCBJZ25vcmVkX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfc3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChJbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQzMiAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDMyIChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoTmF0aXZlaW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50NjQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQ2NCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2Zsb2F0IChwYWRfb3B0LCBwcmVjX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRmxvYXQgKChGbG9hdF9mbGFnXywgRmxvYXRfZiksXG4gICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9ib29sIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChCb29sIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoUmVhZGVyIGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdClcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZXMgKilcblxudHlwZSAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW4gPVxuICB8IEFjY19vcGVuX3RhZyBvZiAoJ2IsICdjKSBhY2NcbiAgfCBBY2Nfb3Blbl9ib3ggb2YgKCdiLCAnYykgYWNjXG5cbigqIFJldmVyc2VkIGxpc3Qgb2YgcHJpbnRpbmcgYXRvbXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgcHJpbnRmIGFyZ3VtZW50cy4gKilcbmFuZCAoJ2IsICdjKSBhY2MgPVxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCBvZiAoJ2IsICdjKSBhY2MgKiBmb3JtYXR0aW5nX2xpdFxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIG9mICgnYiwgJ2MpIGFjYyAqICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlblxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogTGl0ZXJhbCBzdHJpbmcgKilcbiAgfCBBY2NfY2hhcl9saXRlcmFsICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBMaXRlcmFsIGNoYXIgKilcbiAgfCBBY2NfZGF0YV9zdHJpbmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBHZW5lcmF0ZWQgc3RyaW5nICopXG4gIHwgQWNjX2RhdGFfY2hhciAgICAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogR2VuZXJhdGVkIGNoYXIgKilcbiAgfCBBY2NfZGVsYXkgICAgICAgICAgb2YgKCdiLCAnYykgYWNjICogKCdiIC0+ICdjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRGVsYXllZCBwcmludGluZyAoJWEsICV0KSAqKVxuICB8IEFjY19mbHVzaCAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgICAgICAgICAgICAgICgqIEZsdXNoICopXG4gIHwgQWNjX2ludmFsaWRfYXJnICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZ1xuICAgICAgKCogUmFpc2UgSW52YWxpZF9hcmd1bWVudCBtc2cgKilcbiAgfCBFbmRfb2ZfYWNjXG5cbigqIExpc3Qgb2YgaGV0ZXJvZ2VuZW91cyB2YWx1ZXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgc2NhbmYgY2FsbGJhY2sgYXJndW1lbnRzLiAqKVxudHlwZSAoJ2EsICdiKSBoZXRlcl9saXN0ID1cbiAgfCBDb25zIDogJ2MgKiAoJ2EsICdiKSBoZXRlcl9saXN0IC0+ICgnYyAtPiAnYSwgJ2IpIGhldGVyX2xpc3RcbiAgfCBOaWwgOiAoJ2IsICdiKSBoZXRlcl9saXN0XG5cbigqIEV4aXN0ZW50aWFsIEJsYWNrIEJveGVzLiAqKVxuKCogVXNlZCB0byBhYnN0cmFjdCBzb21lIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVycy4gKilcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkZGluZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiID0gUGFkZGluZ19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkcHJlYyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiID0gUGFkcHJlY19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAneikgcHJlY2lzaW9uICogKCd6LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYiA9IFBhZGRpbmdfZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcGFkZGluZyAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiID0gUHJlY2lzaW9uX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZHByZWNfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiID0gUGFkcHJlY19mbXRfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3AgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiXG5cbigqIEFic3RyYWN0IHRoZSAnYSBhbmQgJ2QgcGFyYW1ldGVycyBvZiBhbiBmbXQuICopXG4oKiBPdXRwdXQgdHlwZSBvZiB0aGUgZm9ybWF0IHBhcnNpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYiA9IEZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9mb3JtYXRfZ2VuIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYiA9IEZtdF9mbXR0eV9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmIgPSBGbXR0eV9mbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdHR5ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgYWxsIGZtdHR5IHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBmb3JtYXQgdHlwZXMuICopXG50eXBlIGZtdHR5X2ViYiA9IEZtdHR5X0VCQiA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPiBmbXR0eV9lYmJcblxuKCogQWJzdHJhY3QgYWxsIHBhZGRpbmcgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHBhZGRpbmdzLiAqKVxudHlwZSBwYWRkaW5nX2ViYiA9IFBhZGRpbmdfRUJCIDogKCdhLCAnYikgcGFkZGluZyAtPiBwYWRkaW5nX2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcHJlY2lzaW9uIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwcmVjaXNpb25zLiAqKVxudHlwZSBwcmVjaXNpb25fZWJiID0gUHJlY2lzaW9uX0VCQiA6ICgnYSwgJ2IpIHByZWNpc2lvbiAtPiBwcmVjaXNpb25fZWJiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29uc3RhbnRzICopXG5cbigqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBmbG9hdCBwcmludGluZy4gKilcbmxldCBkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udiA9XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgfCBGbG9hdF9oIHwgRmxvYXRfSFxuICB8IEZsb2F0X0NGIC0+IC02XG4gICgqIEZvciAlaCAlSCBhbmQgJSNGIGZvcm1hdHMsIGEgbmVnYXRpdmUgcHJlY2lzaW9uIG1lYW5zIFwiYXMgbWFueSBkaWdpdHMgYXNcbiAgICAgbmVjZXNzYXJ5XCIuICBGb3IgdGhlIG90aGVyIEZQIGZvcm1hdHMsIHdlIHRha2UgdGhlIGFic29sdXRlIHZhbHVlXG4gICAgIG9mIHRoZSBwcmVjaXNpb24sIGhlbmNlIDYgZGlnaXRzIGJ5IGRlZmF1bHQuICopXG4gIHwgRmxvYXRfRiAtPiAxMlxuICAoKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgT0NhbWwgZmxvYXQgcHJpbnRpbmcgKCVGKS4gKilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFeHRlcm5hbHMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0OiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50OiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQzMjogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X25hdGl2ZWludDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50NjQ6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmV4dGVybmFsIGhleHN0cmluZ19vZl9mbG9hdDogZmxvYXQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdFwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAoKiBUb29scyB0byBwcmV0dHktcHJpbnQgZm9ybWF0cyAqKVxuXG4oKiBUeXBlIG9mIGV4dGVuc2libGUgY2hhcmFjdGVyIGJ1ZmZlcnMuICopXG50eXBlIGJ1ZmZlciA9IHtcbiAgbXV0YWJsZSBpbmQgOiBpbnQ7XG4gIG11dGFibGUgYnl0ZXMgOiBieXRlcztcbn1cblxuKCogQ3JlYXRlIGEgZnJlc2ggYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jcmVhdGUgaW5pdF9zaXplID0geyBpbmQgPSAwOyBieXRlcyA9IEJ5dGVzLmNyZWF0ZSBpbml0X3NpemUgfVxuXG4oKiBDaGVjayBzaXplIG9mIHRoZSBidWZmZXIgYW5kIGdyb3cgaXQgaWYgbmVlZGVkLiAqKVxubGV0IGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBvdmVyaGVhZCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmLmJ5dGVzIGluXG4gIGxldCBtaW5fbGVuID0gYnVmLmluZCArIG92ZXJoZWFkIGluXG4gIGlmIG1pbl9sZW4gPiBsZW4gdGhlbiAoXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWF4IChsZW4gKiAyKSBtaW5fbGVuIGluXG4gICAgbGV0IG5ld19zdHIgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmLmJ5dGVzIDAgbmV3X3N0ciAwIGxlbjtcbiAgICBidWYuYnl0ZXMgPC0gbmV3X3N0cjtcbiAgKVxuXG4oKiBBZGQgdGhlIGNoYXJhY3RlciBgYycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX2NoYXIgYnVmIGMgPVxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgMTtcbiAgQnl0ZXMuc2V0IGJ1Zi5ieXRlcyBidWYuaW5kIGM7XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIDFcblxuKCogQWRkIHRoZSBzdHJpbmcgYHMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHMgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgc3RyX2xlbjtcbiAgU3RyaW5nLmJsaXQgcyAwIGJ1Zi5ieXRlcyBidWYuaW5kIHN0cl9sZW47XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIHN0cl9sZW5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIHRoZSBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NvbnRlbnRzIGJ1ZiA9XG4gIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmLmJ5dGVzIDAgYnVmLmluZFxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgY29udmVyc2lvbiB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfaWNvbnYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgfCBJbnRfQ2QgLT4gJ2QnIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2lcbiAgfCBJbnRfQ2kgLT4gJ2knIHwgSW50X3ggfCBJbnRfQ3ggLT4gJ3gnIHwgSW50X1ggfCBJbnRfQ1ggLT4gJ1gnIHwgSW50X29cbiAgfCBJbnRfQ28gLT4gJ28nIHwgSW50X3UgfCBJbnRfQ3UgLT4gJ3UnXG5cbigqIENvbnZlcnQgYSBmbG9hdCBjb252ZXJzaW9uIHRvIGNoYXIuICopXG4oKiBgY0YnIHdpbGwgYmUgJ0YnIGZvciBkaXNwbGF5aW5nIGZvcm1hdCBhbmQgJ2cnIHRvIGNhbGwgbGliYyBwcmludGYgKilcbmxldCBjaGFyX29mX2Zjb252ID8oY0Y9J0YnKSBmY29udiA9IG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiAtPiAnZicgfCBGbG9hdF9lIC0+ICdlJ1xuICB8IEZsb2F0X0UgLT4gJ0UnIHwgRmxvYXRfZyAtPiAnZydcbiAgfCBGbG9hdF9HIC0+ICdHJyB8IEZsb2F0X0YgLT4gY0ZcbiAgfCBGbG9hdF9oIC0+ICdoJyB8IEZsb2F0X0ggLT4gJ0gnXG4gIHwgRmxvYXRfQ0YgLT4gJ0YnXG5cblxuKCogQ29udmVydCBhIHNjYW5uaW5nIGNvdW50ZXIgdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2NvdW50ZXIgY291bnRlciA9IG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAgLT4gJ2wnXG4gIHwgQ2hhcl9jb3VudGVyICAtPiAnbidcbiAgfCBUb2tlbl9jb3VudGVyIC0+ICdOJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIGNoYXJfc2V0IGluIGEgYnVmZmVyIHdpdGggdGhlIE9DYW1sIGZvcm1hdCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldCA9XG4gIGxldCByZWMgcHJpbnRfc3RhcnQgc2V0ID1cbiAgICBsZXQgaXNfYWxvbmUgYyA9XG4gICAgICBsZXQgYmVmb3JlLCBhZnRlciA9IENoYXIuKGNociAoY29kZSBjIC0gMSksIGNociAoY29kZSBjICsgMSkpIGluXG4gICAgICBpc19pbl9jaGFyX3NldCBzZXQgY1xuICAgICAgJiYgbm90IChpc19pbl9jaGFyX3NldCBzZXQgYmVmb3JlICYmIGlzX2luX2NoYXJfc2V0IHNldCBhZnRlcikgaW5cbiAgICBpZiBpc19hbG9uZSAnXScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICddJztcbiAgICBwcmludF9vdXQgc2V0IDE7XG4gICAgaWYgaXNfYWxvbmUgJy0nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSc7XG4gIGFuZCBwcmludF9vdXQgc2V0IGkgPVxuICAgIGlmIGkgPCAyNTYgdGhlblxuICAgICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuIHByaW50X2ZpcnN0IHNldCBpXG4gICAgICBlbHNlIHByaW50X291dCBzZXQgKGkgKyAxKVxuICBhbmQgcHJpbnRfZmlyc3Qgc2V0IGkgPVxuICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJ1xcMjU1JyAtPiBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgfCAnXScgfCAnLScgLT4gcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIHwgXyAtPiBwcmludF9zZWNvbmQgc2V0IChpICsgMSk7XG4gIGFuZCBwcmludF9zZWNvbmQgc2V0IGkgPVxuICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlblxuICAgICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgICB8ICdcXDI1NScgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU0O1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgICB8ICddJyB8ICctJyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgICAgfCBfIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMik7XG4gICAgICB8IF8gLT5cbiAgICAgICAgcHJpbnRfaW4gc2V0IChpIC0gMSkgKGkgKyAyKTtcbiAgICBlbHNlIChcbiAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgKVxuICBhbmQgcHJpbnRfaW4gc2V0IGkgaiA9XG4gICAgaWYgaiA9IDI1NiB8fCBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaikpIHRoZW4gKFxuICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChpbnRfb2ZfY2hhciAnLScpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGogLSAxKTtcbiAgICAgIGlmIGogPCAyNTYgdGhlbiBwcmludF9vdXQgc2V0IChqICsgMSk7XG4gICAgKSBlbHNlXG4gICAgICBwcmludF9pbiBzZXQgaSAoaiArIDEpO1xuICBhbmQgcHJpbnRfY2hhciBidWYgaSA9IG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICB8ICdAJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQCc7XG4gICAgfCBjICAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBpblxuICBidWZmZXJfYWRkX2NoYXIgYnVmICdbJztcbiAgcHJpbnRfc3RhcnQgKFxuICAgIGlmIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0ICdcXDAwMCdcbiAgICB0aGVuICggYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXic7IHJldl9jaGFyX3NldCBjaGFyX3NldCApXG4gICAgZWxzZSBjaGFyX3NldFxuICApO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmICddJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIHBhZHR5IGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkdHkgYnVmIHBhZHR5ID0gbWF0Y2ggcGFkdHkgd2l0aFxuICB8IExlZnQgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nXG4gIHwgUmlnaHQgLT4gKClcbiAgfCBaZXJvcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcwJ1xuXG4oKiBQcmludCB0aGUgJ18nIG9mIGFuIGlnbm9yZWQgZmxhZyBpZiBuZWVkZWQuICopXG5sZXQgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWcgPVxuICBpZiBpZ25fZmxhZyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ18nXG5cbigqKiopXG5cbmxldCBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHdpZHRoIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyB3aWR0aClcblxuKCoqKilcblxuKCogUHJpbnQgcGFkZGluZyBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZGRpbmcgOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcGFkZGluZyAtPiB1bml0ID1cbmZ1biBidWYgcGFkIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPiAoKVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgbikgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKidcblxuKCogUHJpbnQgcHJlY2lzaW9uIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcHJlY2lzaW9uIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHByZWNpc2lvbiAtPiB1bml0ID1cbiAgZnVuIGJ1ZiBwcmVjIC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAtPiAoKVxuICB8IExpdF9wcmVjaXNpb24gbiAtPlxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiLipcIlxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgb3IgJyMnIGFzc29jaWF0ZWQgdG8gYW4gaW50IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9wZCB8IEludF9waSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEludF9zZCB8IEludF9zaSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEludF9DeCB8IEludF9DWCB8IEludF9DbyB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBJbnRfZCB8IEludF9pIHwgSW50X3ggfCBJbnRfWCB8IEludF9vIHwgSW50X3UgLT4gKClcblxuKCogUHJpbnQgYW4gY29tcGxldGUgaW50IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJTMuKmRcIikuICopXG5sZXQgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqIFByaW50IGEgY29tcGxldGUgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjIGMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgYW5kL29yICcjJyBhc3NvY2lhdGVkIHRvIGEgZmxvYXQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnYgPVxuICBiZWdpbiBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ZsYWdfcCAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEZsb2F0X2ZsYWdfcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEZsb2F0X2ZsYWdfIC0+ICgpIGVuZDtcbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9DRiAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HXG4gIHwgRmxvYXRfRiB8IEZsb2F0X2ggfCBGbG9hdF9IIC0+ICgpXG5cbigqIFByaW50IGEgY29tcGxldGUgZmxvYXQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlKyouM2ZcIikuICopXG5sZXQgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9mY29udiBmY29udilcblxuKCogQ29tcHV0ZSB0aGUgbGl0ZXJhbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBGb3JtYXR0aW5nX2xpdC4gKilcbigqIFVzZWQgYnkgUHJpbnRmIGFuZCBTY2FuZiB3aGVyZSBmb3JtYXR0aW5nIGlzIG5vdCBpbnRlcnByZXRlZC4gKilcbmxldCBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQgPSBtYXRjaCBmb3JtYXR0aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgLT4gXCJAXVwiXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgLT4gXCJAfVwiXG4gIHwgQnJlYWsgKHN0ciwgXywgXykgICAgLT4gc3RyXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgLT4gXCJAP1wiXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgLT4gXCJAXFxuXCJcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAtPiBcIkAuXCJcbiAgfCBNYWdpY19zaXplIChzdHIsIF8pICAtPiBzdHJcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAtPiBcIkBAXCJcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAtPiBcIkAlXCJcbiAgfCBTY2FuX2luZGljIGMgLT4gXCJAXCIgXiAoU3RyaW5nLm1ha2UgMSBjKVxuXG4oKioqKVxuXG4oKiBQcmludCBhIGxpdGVyYWwgY2hhciBpbiBhIGJ1ZmZlciwgZXNjYXBlICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyID0gbWF0Y2ggY2hyIHdpdGhcbiAgfCAnJScgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSVcIlxuICB8IF8gLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjaHJcblxuKCogUHJpbnQgYSBsaXRlcmFsIHN0cmluZyBpbiBhIGJ1ZmZlciwgZXNjYXBlIGFsbCAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyID1cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIHN0ci5baV1cbiAgZG9uZVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcHJldHR5LXByaW50aW5nICopXG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IHR5cGUgKGFuIGZtdHR5KSBpbiBhIGJ1ZmZlci4gKilcbmxldCByZWMgYnByaW50X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gICAgYnVmZmVyIC0+IChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gdW5pdCA9XG5mdW4gYnVmIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlY1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFN0cmluZ190eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVzXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWlcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQzMl90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVuaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGbG9hdF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlZlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEJvb2xfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVCXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWFcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBUaGV0YV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIldFwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFueV90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiU/XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgUmVhZGVyX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlX3JcIjtcbiAgICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXtcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJX1cIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5LCBfLCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUoXCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEVuZF9vZl9mbXR0eSAtPiAoKVxuXG4oKioqKVxuXG5sZXQgcmVjIGludF9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIGEgYiBjIC5cbiAgKGEsIGIsIGMpIGN1c3RvbV9hcml0eSAtPiBpbnQgPVxuICBmdW5jdGlvblxuICB8IEN1c3RvbV96ZXJvIC0+IDBcbiAgfCBDdXN0b21fc3VjYyB4IC0+IDEgKyBpbnRfb2ZfY3VzdG9tX2FyaXR5IHhcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2ZtdCBidWYgZm10ID1cbiAgbGV0IHJlYyBmbXRpdGVyIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGJvb2wgLT4gdW5pdCA9XG4gIGZ1biBmbXQgaWduX2ZsYWcgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnUyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdsJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnTCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0InO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYSc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3QnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgZm9yIF9pID0gMSB0byBpbnRfb2ZfY3VzdG9tX2FyaXR5IGFyaXR5IGRvXG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnPyc7XG4gICAgICBkb25lO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgUmVhZGVyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3InOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlIVwiO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNocjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAneyc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnfSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJygnO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyknO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHdpZHRoX29wdDsgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2NvdW50ZXIgY291bnRlcik7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIFwiMGNcIjsgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgICBmbXRpdGVyIGZtdCcgdHJ1ZTtcblxuICAgIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCk7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGZtdGluZ19nZW4gd2l0aFxuICAgICAgfCBPcGVuX3RhZyAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAe1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICB8IE9wZW5fYm94IChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkBbXCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIGVuZDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRW5kX29mX2Zvcm1hdCAtPiAoKVxuXG4gIGluIGZtdGl0ZXIgZm10IGZhbHNlXG5cbigqKiopXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdG8gc3RyaW5nLiAqKVxubGV0IHN0cmluZ19vZl9mbXQgZm10ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdCBidWYgZm10O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGUgZXh0cmFjdGlvbiAqKVxuXG50eXBlIChfLCBfKSBlcSA9IFJlZmwgOiAoJ2EsICdhKSBlcVxuXG4oKiBJbnZhcmlhbnQ6IHRoaXMgZnVuY3Rpb24gaXMgdGhlIGlkZW50aXR5IG9uIHZhbHVlcy5cblxuICAgSW4gcGFydGljdWxhciwgaWYgKHR5MSwgdHkyKSBoYXZlIGVxdWFsIHZhbHVlcywgdGhlblxuICAgKHRyYW5zIChzeW1tIHR5MSkgdHkyKSByZXNwZWN0cyB0aGUgJ3RyYW5zJyBwcmVjb25kaXRpb24uICopXG5sZXQgcmVjIHN5bW0gOiB0eXBlIGExIGIxIGMxIGQxIGUxIGYxIGEyIGIyIGMyIGQyIGUyIGYyIC5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10dHlfcmVsXG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+IENoYXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPiBJbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+IEludDMyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPiBJbnQ2NF90eSAoc3ltbSByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IE5hdGl2ZWludF90eSAoc3ltbSByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT4gRmxvYXRfdHkgKHN5bW0gcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT4gQm9vbF90eSAoc3ltbSByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+IFN0cmluZ190eSAoc3ltbSByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT4gVGhldGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+IEFscGhhX3R5IChzeW1tIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT4gQW55X3R5IChzeW1tIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT4gUmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPiBJZ25vcmVkX3JlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MiwgdHkxLCBzeW1tIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG5sZXQgcmVjIGZtdHR5X3JlbF9kZXQgOiB0eXBlIGExIGIgYyBkMSBlMSBmMSBhMiBkMiBlMiBmMiAuXG4gIChhMSwgYiwgYywgZDEsIGUxLCBmMSxcbiAgIGEyLCBiLCBjLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoKGYxLCBmMikgZXEgLT4gKGExLCBhMikgZXEpXG4gICogKChhMSwgYTIpIGVxIC0+IChmMSwgZjIpIGVxKVxuICAqICgoZTEsIGUyKSBlcSAtPiAoZDEsIGQyKSBlcSlcbiAgKiAoKGQxLCBkMikgZXEgLT4gKGUxLCBlMikgZXEpXG49IGZ1bmN0aW9uXG4gIHwgRW5kX29mX2ZtdHR5IC0+XG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcblxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IEZvcm1hdF9hcmdfdHkgKF90eSwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGxldCBhZywgZ2EsIGRqLCBqZCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIGxldCBSZWZsID0gYWcgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBnYSBSZWZsIGluIGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIGxldCBSZWZsID0gZGogUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBqZCBSZWZsIGluIGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuXG4oKiBQcmVjb25kaXRpb246IHdlIGFzc3VtZSB0aGF0IHRoZSB0d28gZm10dHlfcmVsIGFyZ3VtZW50cyBoYXZlIGVxdWFsXG4gICB2YWx1ZXMgKGF0IHBvc3NpYmx5IGRpc3RpbmN0IHR5cGVzKTsgdGhpcyBpbnZhcmlhbnQgY29tZXMgZnJvbSB0aGUgd2F5XG4gICBmbXR0eV9yZWwgd2l0bmVzc2VzIGFyZSBwcm9kdWNlZCBieSB0aGUgdHlwZS1jaGVja2VyXG5cbiAgIFRoZSBjb2RlIGJlbG93IHVzZXMgKGFzc2VydCBmYWxzZSkgd2hlbiB0aGlzIGFzc3VtcHRpb24gaXMgYnJva2VuLiBUaGVcbiAgIGNvZGUgcGF0dGVybiBpcyB0aGUgZm9sbG93aW5nOlxuXG4gICAgIHwgRm9vIHgsIEZvbyB5IC0+XG4gICAgICAgKCogY2FzZSB3aGVyZSBpbmRlZWQgYm90aCB2YWx1ZXNcbiAgICAgICAgICBzdGFydCB3aXRoIGNvbnN0cnVjdG9yIEZvbyAqKVxuICAgICB8IEZvbyBfLCBfXG4gICAgIHwgXywgRm9vIF8gLT5cbiAgICAgICAoKiBkaWZmZXJlbnQgaGVhZCBjb25zdHJ1Y3RvcnM6IGJyb2tlbiBwcmVjb25kaXRpb24gKilcbiAgICAgICBhc3NlcnQgZmFsc2VcbiopXG5hbmQgdHJhbnMgOiB0eXBlXG4gIGExIGIxIGMxIGQxIGUxIGYxXG4gIGEyIGIyIGMyIGQyIGUyIGYyXG4gIGEzIGIzIGMzIGQzIGUzIGYzXG4uXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG49IGZ1biB0eTEgdHkyIC0+IG1hdGNoIHR5MSwgdHkyIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QxLCBDaGFyX3R5IHJlc3QyIC0+IENoYXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFN0cmluZ190eSByZXN0MSwgU3RyaW5nX3R5IHJlc3QyIC0+IFN0cmluZ190eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQm9vbF90eSByZXN0MSwgQm9vbF90eSByZXN0MiAtPiBCb29sX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnRfdHkgcmVzdDEsIEludF90eSByZXN0MiAtPiBJbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDMyX3R5IHJlc3QxLCBJbnQzMl90eSByZXN0MiAtPiBJbnQzMl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50NjRfdHkgcmVzdDEsIEludDY0X3R5IHJlc3QyIC0+IEludDY0X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdDEsIE5hdGl2ZWludF90eSByZXN0MiAtPiBOYXRpdmVpbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZsb2F0X3R5IHJlc3QxLCBGbG9hdF90eSByZXN0MiAtPiBGbG9hdF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG5cbiAgfCBBbHBoYV90eSByZXN0MSwgQWxwaGFfdHkgcmVzdDIgLT4gQWxwaGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFscGhhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQWxwaGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFRoZXRhX3R5IHJlc3QxLCBUaGV0YV90eSByZXN0MiAtPiBUaGV0YV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgVGhldGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBUaGV0YV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgQW55X3R5IHJlc3QxLCBBbnlfdHkgcmVzdDIgLT4gQW55X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbnlfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbnlfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFJlYWRlcl90eSByZXN0MSwgUmVhZGVyX3R5IHJlc3QyIC0+IFJlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgUmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgUmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MSwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDIgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBJZ25vcmVkX3JlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X2FyZ190eSAodHkxLCByZXN0MSksIEZvcm1hdF9hcmdfdHkgKHR5MiwgcmVzdDIpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHJhbnMgdHkxIHR5MiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X2FyZ190eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9hcmdfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkxMiwgcmVzdDEpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyMSwgdHkyMiwgcmVzdDIpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxMikgdHkyMSBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTIyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfc3Vic3RfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEVuZF9vZl9mbXR0eSwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuICB8IEVuZF9vZl9mbXR0eSwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBFbmRfb2ZfZm10dHkgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCByZWMgZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmb3JtYXR0aW5nX2dlbiAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogRXh0cmFjdCB0aGUgdHlwZSByZXByZXNlbnRhdGlvbiAoYW4gZm10dHkpIG9mIGEgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcblxuICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50MzJfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKE5hdGl2ZWludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQ2NF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChGbG9hdF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcblxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgICAgICAgICAgIC0+XG4gICAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoQm9vbF90eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgIC0+IEFscGhhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAtPiBUaGV0YV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgICAgLT4gZm10dHlfb2ZfY3VzdG9tIGFyaXR5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBSZWFkZXIgcmVzdCAgICAgICAgICAgICAgICAtPiBSZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eSwgdHksIGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPiBTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+IEludF90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgLT4gZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAgLT5cbiAgICBjb25jYXRfZm10dHkgKGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIGZtdGluZ19nZW4pIChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgIC0+IEVuZF9vZl9mbXR0eVxuXG5hbmQgZm10dHlfb2ZfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAoeSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGFyaXR5IGZtdHR5IC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBmbXR0eVxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+IEFueV90eSAoZm10dHlfb2ZfY3VzdG9tIGFyaXR5IGZtdHR5KVxuXG4oKiBFeHRyYWN0IHRoZSBmbXR0eSBvZiBhbiBpZ25vcmVkIHBhcmFtZXRlciBmb2xsb3dlZCBieSB0aGUgcmVzdCBvZlxuICAgdGhlIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IGNvbmNhdF9mbXR0eSBmbXR0eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IElnbm9yZWRfcmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcGFkZGluZyBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpzXCIpLiAqKVxuYW5kIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcGFkZGluZyBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcGFkZGluZyBfIC0+IEludF90eSBmbXR0eVxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcHJlY2lzaW9uIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpLiopXG5hbmQgZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgICB8IE5vX3ByZWNpc2lvbiAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3ByZWNpc2lvbiBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcHJlY2lzaW9uICAgLT4gSW50X3R5IGZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGluZyAqKVxuXG4oKiBFeGNlcHRpb24gcmFpc2VkIHdoZW4gYSBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggYSBnaXZlbiBmb3JtYXQgdHlwZS4gKilcbmV4Y2VwdGlvbiBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBwYWRkaW5nLiAqKVxuKCogVGFrZSBhbiBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgdGhlIGludGVnZXIgc2hvdWxkIGJlIGtlcHQgYXMgYXJndW1lbnQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZGRpbmcgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkZGluZ19mbXR0eV9lYmIgPVxuZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQsIGZtdHR5IHdpdGhcbiAgfCBOb19wYWRkaW5nLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChOb19wYWRkaW5nLCBmbXR0eSlcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChMaXRfcGFkZGluZyAocGFkdHksdyksZm10dHkpXG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEludF90eSByZXN0IC0+IFBhZGRpbmdfZm10dHlfRUJCIChBcmdfcGFkZGluZyBwYWR0eSxyZXN0KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBDb252ZXJ0IGEgKHVwYWRkaW5nLCB1cHJlY2lzaW9uKSB0byBhIChwYWRkaW5nLCBwcmVjaXNpb24pLiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiBuZWVkZWQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZHByZWMgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSB6IC5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHopIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkcHJlY19mbXR0eV9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMsIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBOb19wcmVjaXNpb24sIHJlc3QpXG4gIHwgTGl0X3ByZWNpc2lvbiBwLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIExpdF9wcmVjaXNpb24gcCwgcmVzdClcbiAgfCBBcmdfcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBJbnRfdHkgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBBcmdfcHJlY2lzaW9uLCByZXN0KVxuICB8IF8sIFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogSWYgdHlwaW5nIHN1Y2NlZWQsIGdlbmVyYXRlIGEgY29weSBvZiB0aGUgZm9ybWF0IHdpdGggdGhlIHNhbWVcbiAgICB0eXBlIHBhcmFtZXRlcnMgYXMgdGhlIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgcmVjIHR5cGVfZm9ybWF0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IHdpdGhcbiAgfCBGbXRfZm10dHlfRUJCIChmbXQnLCBFbmRfb2ZfZm10dHkpIC0+IGZtdCdcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0X2dlbiA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIGZtdCwgZm10dHkgd2l0aFxuICB8IENoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBDYW1sX2NoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDYW1sX2NoYXIgZm10JywgZm10dHknKVxuICB8IFN0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChTdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBDYW1sX3N0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChDYW1sX3N0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDMyX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQ2NF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEZsb2F0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBCb29sIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBCb29sX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChCb29sIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmx1c2ggZm10X3Jlc3QsIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRmx1c2ggZm10JywgZm10dHknKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZ19saXRlcmFsIChzdHIsIGZtdCcpLCBmbXR0eScpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyX2xpdGVyYWwgKGNociwgZm10JyksIGZtdHR5JylcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1Yl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eScsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eTEsIF9zdWJfZm10dHkyLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5MSkgdGhlblxuICAgICAgcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9XG4gICAgICB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgKGVyYXNlX3JlbCBmbXR0eV9yZXN0KVxuICAgIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkxLCBmbXQnKSwgZm10dHknKVxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgQWxwaGEgZm10X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQWxwaGEgZm10JywgZm10dHknKVxuICB8IFRoZXRhIGZtdF9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFRoZXRhIGZtdCcsIGZtdHR5JylcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZ19nZW4sIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfZm9ybWF0dGluZ19nZW4gZm9ybWF0dGluZ19nZW4gZm10X3Jlc3QgZm10dHlfcmVzdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgZm10X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFJlYWRlciBmbXQnLCBmbXR0eScpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10X3Jlc3QpLCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQnKSwgZm10dHknKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10JyksIGZtdHR5JylcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtIGlnbiByZXN0IGZtdHR5X3Jlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QgLT4gRm10X2ZtdHR5X0VCQiAoRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdClcblxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYTEgYTMgYjEgYjMgYzEgYzMgZDEgZDMgZTEgZTIgZTMgZjEgZjIgZjMgLlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChmMSwgYjEsIGMxLCBlMSwgZTIsIGYyKSBmbXQgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHkgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10X2ZtdHR5X2ViYiA9XG5mdW4gZm9ybWF0dGluZ19nZW4gZm10MCBmbXR0eTAgLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG5cbigqIFR5cGUgYW4gSWdub3JlZF9wYXJhbSBub2RlIGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHAgcSB4IHkgeiB0IHUgdiBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIHksIHosIHQsIHEsIHApIGlnbm9yZWQgLT5cbiAgICAocCwgeSwgeiwgcSwgdSwgdikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGlnbiBmbXQgZm10dHkgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludCBfICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDMyIF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCBfICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDY0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zsb2F0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIChJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkpIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eScsIEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eSBmbXQgZm10dHkgaW5cbiAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10JyksXG4gICAgICAgICAgICAgICAgICAgZm10dHknKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+IChcbiAgICBtYXRjaCBmbXR0eSB3aXRoXG4gICAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSA6IHR5cGUgYTEgYTIgYjEgYjIgYzEgYzIgZDEgZDIgZTEgZTIgZjEgZjIgLlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZDIsIGEyKSBpZ25vcmVkIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdCAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eSAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBpZ24gZm10IGZtdHR5IC0+XG4gIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSBpblxuICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChpZ24sIGZtdCcpLCBmbXR0eScpXG5cbigqIFR5cGluZyBvZiB0aGUgY29tcGxleCBjYXNlOiBcIiVfKC4uLiUpXCIuICopXG5hbmQgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gOiB0eXBlIHcgeCB5IHogcCBzIHQgdSBhIGIgYyBkIGUgZiAuXG4gICAgKHcsIHgsIHksIHosIHMsIHApIGZtdHR5IC0+XG4gICAgKHAsIHgsIHksIHMsIHQsIHUpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlfZm10X2ViYiA9XG5mdW4gc3ViX2ZtdHR5IGZtdCBmbXR0eSAtPiBtYXRjaCBzdWJfZm10dHksIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQzMl90eSBzdWJfZm10dHlfcmVzdCwgSW50MzJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCwgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDY0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBGbG9hdF90eSBzdWJfZm10dHlfcmVzdCwgRmxvYXRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QsIEJvb2xfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQm9vbF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBUaGV0YV90eSBzdWJfZm10dHlfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHksIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViMl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViMl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIHN1Yl9mbXR0eV9yZXN0JyksIGZtdCcpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5LCAgc3ViMl9mbXR0eSwgIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICAoKiBUT0RPIGRlZmluZSBGbXR0eV9yZWxfRUJCIHRvIHJlbW92ZSB0aG9zZSBlcmFzZV9yZWwgKilcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBzdWJfZm10dHknID0gdHJhbnMgKHN5bW0gc3ViMV9mbXR0eScpIHN1YjJfZm10dHknIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgc3ViX2ZtdHR5JyBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIChlcmFzZV9yZWwgc3ViX2ZtdHR5X3Jlc3QpIGZtdCBmbXR0eV9yZXN0XG4gICAgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bW0gc3ViX2ZtdHR5X3Jlc3QnKSxcbiAgICAgICAgICAgICAgICAgICBmbXQnKVxuICB8IEVuZF9vZl9mbXR0eSwgZm10dHkgLT5cbiAgICBGbXR0eV9mbXRfRUJCIChFbmRfb2ZfZm10dHksIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYHJlY2FzdGAgaXMgYSBiaXQgZGlzYXBwb2ludGluZy4gVGhlXG4gICBpbnZhcmlhbnQgcHJvdmlkZWQgYnkgdGhlIHR5cGUgYXJlIHZlcnkgc3Ryb25nOiB0aGUgaW5wdXQgZm9ybWF0J3NcbiAgIHR5cGUgaXMgaW4gcmVsYXRpb24gdG8gdGhlIG91dHB1dCB0eXBlJ3MgYXMgd2l0bmVzc2VkIGJ5IHRoZVxuICAgZm10dHlfcmVsIGFyZ3VtZW50LiBPbmUgd291bGQgYXQgZmlyc3QgZXhwZWN0IHRoaXMgZnVuY3Rpb24gdG8gYmVcbiAgIHRvdGFsLCBhbmQgaW1wbGVtZW50YWJsZSBieSBleGhhdXN0aXZlIHBhdHRlcm4gbWF0Y2hpbmcuIEluc3RlYWQsXG4gICB3ZSByZXVzZSB0aGUgaGlnaGx5IHBhcnRpYWwgYW5kIG11Y2ggbGVzcyB3ZWxsLWRlZmluZWQgZnVuY3Rpb25cbiAgIGB0eXBlX2Zvcm1hdGAgdGhhdCBoYXMgbG9zdCBhbGwga25vd2xlZGdlIG9mIHRoZSBjb3JyZXNwb25kZW5jZVxuICAgYmV0d2VlbiB0aGUgYXJndW1lbnQncyB0eXBlcy5cblxuICAgQmVzaWRlcyB0aGUgZmFjdCB0aGF0IHRoaXMgZnVuY3Rpb24gcmV1c2VzIGEgbG90IG9mIHRoZVxuICAgYHR5cGVfZm9ybWF0YCBsb2dpYyAoZWcuOiBzZWVpbmcgSW50X3R5IGluIHRoZSBmbXR0eSBwYXJhbWV0ZXIgZG9lc1xuICAgbm90IGxldCB5b3UgbWF0Y2ggb24gSW50IG9ubHksIGFzIHlvdSBtYXkgaW4gZmFjdCBoYXZlIEZsb2F0XG4gICAoQXJnX3BhZGRpbmcsIC4uLikgKFwiJS4qZFwiKSBiZWdpbm5pbmcgd2l0aCBhbiBJbnRfdHkpLCBpdCBpcyBhbHNvXG4gICBhIHBhcnRpYWwgZnVuY3Rpb24sIGJlY2F1c2UgdGhlIHR5cGluZyBpbmZvcm1hdGlvbiBpbiBhIGZvcm1hdCBpc1xuICAgbm90IHF1aXRlIGVub3VnaCB0byByZWNvbnN0cnVjdCBpdCB1bmFtYmlndW91c2x5LiBGb3IgZXhhbXBsZSwgdGhlXG4gICBmb3JtYXQgdHlwZXMgb2YgXCIlZCVfclwiIGFuZCBcIiVfciVkXCIgaGF2ZSB0aGUgc2FtZSBmb3JtYXQ2XG4gICBwYXJhbWV0ZXJzLCBidXQgdGhleSBhcmUgbm90IGF0IGFsbCBleGNoYW5nZWFibGUsIGFuZCBwdXR0aW5nIG9uZVxuICAgaW4gcGxhY2Ugb2YgdGhlIG90aGVyIG11c3QgcmVzdWx0IGluIGEgZHluYW1pYyBmYWlsdXJlLlxuXG4gICBHaXZlbiB0aGF0OlxuICAgLSB3ZSdkIGhhdmUgdG8gZHVwbGljYXRlIGEgbG90IG9mIG5vbi10cml2aWFsIHR5cGluZyBsb2dpYyBmcm9tIHR5cGVfZm9ybWF0XG4gICAtIHRoaXMgd291bGRuJ3QgZXZlbiBlbGltaW5hdGUgKGFsbCkgdGhlIGR5bmFtaWMgZmFpbHVyZXNcbiAgIHdlIGRlY2lkZWQgdG8ganVzdCByZXVzZSB0eXBlX2Zvcm1hdCBkaXJlY3RseSBmb3Igbm93LlxuKilcbmxldCByZWNhc3QgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPlxuICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFByaW50aW5nIHRvb2xzICopXG5cbigqIEFkZCBwYWRkaW5nIHNwYWNlcyBhcm91bmQgYSBzdHJpbmcuICopXG5sZXQgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCwgcGFkdHkgPVxuICAgIGFicyB3aWR0aCxcbiAgICAoKiB3aGlsZSBsaXRlcmFsIHBhZGRpbmcgd2lkdGhzIGFyZSBhbHdheXMgbm9uLW5lZ2F0aXZlLFxuICAgICAgIGR5bmFtaWNhbGx5LXNldCB3aWR0aHMgKEFyZ19wYWRkaW5nLCBlZy4gJSpkKSBtYXkgYmUgbmVnYXRpdmU7XG4gICAgICAgd2UgaW50ZXJwcmV0IHRob3NlIGFzIHNwZWNpZnlpbmcgYSBwYWRkaW5nLXRvLXRoZS1sZWZ0OyB0aGlzXG4gICAgICAgbWVhbnMgdGhhdCAnMCcgbWF5IGdldCBkcm9wcGVkIGV2ZW4gaWYgaXQgd2FzIGV4cGxpY2l0bHkgc2V0LFxuICAgICAgIGJ1dDpcbiAgICAgICAtIHRoaXMgaXMgd2hhdCB0aGUgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRvZXMsIGFuZFxuICAgICAgICAgd2UgcHJlc2VydmUgY29tcGF0aWJpbGl0eSBpZiBwb3NzaWJsZVxuICAgICAgIC0gd2UgY291bGQgb25seSBzaWduYWwgdGhpcyBpc3N1ZSBieSBmYWlsaW5nIGF0IHJ1bnRpbWUsXG4gICAgICAgICB3aGljaCBpcyBub3QgdmVyeSBuaWNlLi4uICopXG4gICAgaWYgd2lkdGggPCAwIHRoZW4gTGVmdCBlbHNlIHBhZHR5IGluXG4gIGlmIHdpZHRoIDw9IGxlbiB0aGVuIHN0ciBlbHNlXG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2Ugd2lkdGggKGlmIHBhZHR5ID0gWmVyb3MgdGhlbiAnMCcgZWxzZSAnICcpIGluXG4gICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgIHwgTGVmdCAgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzIDAgbGVuXG4gICAgfCBSaWdodCAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMCAmJiAoc3RyLlswXSA9ICcrJyB8fCBzdHIuWzBdID0gJy0nIHx8IHN0ci5bMF0gPSAnICcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDAgc3RyLlswXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAod2lkdGggLSBsZW4gKyAxKSAobGVuIC0gMSlcbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMSAmJiBzdHIuWzBdID0gJzAnICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAod2lkdGggLSBsZW4gKyAyKSAobGVuIC0gMilcbiAgICB8IFplcm9zIC0+XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICBlbmQ7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQWRkICcwJyBwYWRkaW5nIHRvIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBzdHJpbmcgcmVwcmVzZW50YXRpb24uICopXG5sZXQgZml4X2ludF9wcmVjaXNpb24gcHJlYyBzdHIgPVxuICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBtYXRjaCBzdHIuWzBdIHdpdGhcbiAgfCAoJysnIHwgJy0nIHwgJyAnKSBhcyBjIHdoZW4gcHJlYyArIDEgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDEpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMCBjO1xuICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAocHJlYyAtIGxlbiArIDIpIChsZW4gLSAxKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyB3aGVuIHByZWMgKyAyID4gbGVuICYmIGxlbiA+IDEgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDIpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAocHJlYyAtIGxlbiArIDQpIChsZW4gLSAyKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyB3aGVuIHByZWMgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSBwcmVjICcwJyBpblxuICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAocHJlYyAtIGxlbikgbGVuO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgXyAtPlxuICAgIHN0clxuXG4oKiBFc2NhcGUgYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpbmcgY29udmVudGlvbi4gKilcbmxldCBzdHJpbmdfdG9fY2FtbF9zdHJpbmcgc3RyID1cbiAgbGV0IHN0ciA9IFN0cmluZy5lc2NhcGVkIHN0ciBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcXCInIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2ludC9pbnQzMi9uYXRpdmVpbnQvaW50NjQgZmlyc3QgYXJndW1lbnRcbiAgIGZyb20gYW4gaW50X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2ljb252ID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVkXCIgfCBJbnRfcGQgLT4gXCIlK2RcIiB8IEludF9zZCAtPiBcIiUgZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlaVwiIHwgSW50X3BpIC0+IFwiJStpXCIgfCBJbnRfc2kgLT4gXCIlIGlcIlxuICB8IEludF94IC0+IFwiJXhcIiB8IEludF9DeCAtPiBcIiUjeFwiXG4gIHwgSW50X1ggLT4gXCIlWFwiIHwgSW50X0NYIC0+IFwiJSNYXCJcbiAgfCBJbnRfbyAtPiBcIiVvXCIgfCBJbnRfQ28gLT4gXCIlI29cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJXVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252TCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlTGRcIiB8IEludF9wZCAtPiBcIiUrTGRcIiB8IEludF9zZCAtPiBcIiUgTGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJUxpXCIgfCBJbnRfcGkgLT4gXCIlK0xpXCIgfCBJbnRfc2kgLT4gXCIlIExpXCJcbiAgfCBJbnRfeCAtPiBcIiVMeFwiIHwgSW50X0N4IC0+IFwiJSNMeFwiXG4gIHwgSW50X1ggLT4gXCIlTFhcIiB8IEludF9DWCAtPiBcIiUjTFhcIlxuICB8IEludF9vIC0+IFwiJUxvXCIgfCBJbnRfQ28gLT4gXCIlI0xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVMdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZsID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVsZFwiIHwgSW50X3BkIC0+IFwiJStsZFwiIHwgSW50X3NkIC0+IFwiJSBsZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbGlcIiB8IEludF9waSAtPiBcIiUrbGlcIiB8IEludF9zaSAtPiBcIiUgbGlcIlxuICB8IEludF94IC0+IFwiJWx4XCIgfCBJbnRfQ3ggLT4gXCIlI2x4XCJcbiAgfCBJbnRfWCAtPiBcIiVsWFwiIHwgSW50X0NYIC0+IFwiJSNsWFwiXG4gIHwgSW50X28gLT4gXCIlbG9cIiB8IEludF9DbyAtPiBcIiUjbG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJWx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udm4gPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJW5kXCIgfCBJbnRfcGQgLT4gXCIlK25kXCIgfCBJbnRfc2QgLT4gXCIlIG5kXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVuaVwiIHwgSW50X3BpIC0+IFwiJStuaVwiIHwgSW50X3NpIC0+IFwiJSBuaVwiXG4gIHwgSW50X3ggLT4gXCIlbnhcIiB8IEludF9DeCAtPiBcIiUjbnhcIlxuICB8IEludF9YIC0+IFwiJW5YXCIgfCBJbnRfQ1ggLT4gXCIlI25YXCJcbiAgfCBJbnRfbyAtPiBcIiVub1wiIHwgSW50X0NvIC0+IFwiJSNub1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbnVcIlxuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2Zsb2F0IGZpcnN0IGFyZ3VtZW50IGZyb20gYSBmbG9hdF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjID1cbiAgICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gICAgbGV0IHN5bWIgPSBjaGFyX29mX2Zjb252IH5jRjonZycgZmNvbnYgaW5cbiAgICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgcHJlYyk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBzeW1iO1xuICAgIGJ1ZmZlcl9jb250ZW50cyBidWZcblxubGV0IHRyYW5zZm9ybV9pbnRfYWx0IGljb252IHMgPVxuICBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgbGV0IGRpZ2l0cyA9XG4gICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICB8ICcwJy4uJzknIC0+IGluY3IgblxuICAgICAgICB8IF8gLT4gKClcbiAgICAgIGRvbmU7XG4gICAgICAhblxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgKGRpZ2l0cyAtIDEpIC8gMykgaW5cbiAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICBsZXQgcHV0IGMgPSBCeXRlcy5zZXQgYnVmICFwb3MgYzsgaW5jciBwb3MgaW5cbiAgICBsZXQgbGVmdCA9IHJlZiAoKGRpZ2l0cyAtIDEpIG1vZCAzICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgJzAnLi4nOScgYXMgYyAtPlxuICAgICAgICAgIGlmICFsZWZ0ID0gMCB0aGVuIChwdXQgJ18nOyBsZWZ0IDo9IDMpOyBkZWNyIGxlZnQ7IHB1dCBjXG4gICAgICB8IGMgLT4gcHV0IGNcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gIHwgXyAtPiBzXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gYSBjb252ZXJzaW9uLiAqKVxubGV0IGNvbnZlcnRfaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludCAoZm9ybWF0X29mX2ljb252IGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50MzIgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50MzIgKGZvcm1hdF9vZl9pY29udmwgaWNvbnYpIG4pXG5sZXQgY29udmVydF9uYXRpdmVpbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfbmF0aXZlaW50IChmb3JtYXRfb2ZfaWNvbnZuIGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50NjQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50NjQgKGZvcm1hdF9vZl9pY29udkwgaWNvbnYpIG4pXG5cbigqIENvbnZlcnQgYSBmbG9hdCB0byBzdHJpbmcuICopXG4oKiBGaXggc3BlY2lhbCBjYXNlIG9mIFwiT0NhbWwgZmxvYXQgZm9ybWF0XCIuICopXG5sZXQgY29udmVydF9mbG9hdCBmY29udiBwcmVjIHggPVxuICBsZXQgaGV4ICgpID1cbiAgICBsZXQgc2lnbiA9XG4gICAgICBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICAgICAgfCBGbG9hdF9mbGFnX3AgLT4gJysnXG4gICAgICB8IEZsb2F0X2ZsYWdfcyAtPiAnICdcbiAgICAgIHwgXyAtPiAnLScgaW5cbiAgICBoZXhzdHJpbmdfb2ZfZmxvYXQgeCBwcmVjIHNpZ24gaW5cbiAgbGV0IGFkZF9kb3RfaWZfbmVlZGVkIHN0ciA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBpc192YWxpZCBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcuJyB8ICdlJyB8ICdFJyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBpc192YWxpZCAoaSArIDEpIGluXG4gICAgaWYgaXNfdmFsaWQgMCB0aGVuIHN0ciBlbHNlIHN0ciBeIFwiLlwiIGluXG4gIGxldCBjYW1sX3NwZWNpYWxfdmFsIHN0ciA9IG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfemVybyAtPiBzdHJcbiAgICB8IEZQX2luZmluaXRlIC0+IGlmIHggPCAwLjAgdGhlbiBcIm5lZ19pbmZpbml0eVwiIGVsc2UgXCJpbmZpbml0eVwiXG4gICAgfCBGUF9uYW4gLT4gXCJuYW5cIiBpblxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ggLT4gaGV4ICgpXG4gIHwgRmxvYXRfSCAtPiBTdHJpbmcudXBwZXJjYXNlX2FzY2lpIChoZXggKCkpXG4gIHwgRmxvYXRfQ0YgLT4gY2FtbF9zcGVjaWFsX3ZhbCAoaGV4ICgpKVxuICB8IEZsb2F0X0YgLT5cbiAgICBsZXQgc3RyID0gZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeCBpblxuICAgIGNhbWxfc3BlY2lhbF92YWwgKGFkZF9kb3RfaWZfbmVlZGVkIHN0cilcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyAtPlxuICAgIGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHhcblxuKCogQ29udmVydCBhIGNoYXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgZm9ybWF0X2NhbWxfY2hhciBjID1cbiAgbGV0IHN0ciA9IENoYXIuZXNjYXBlZCBjIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFwnJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQ29udmVydCBhIGZvcm1hdCB0eXBlIHRvIHN0cmluZyAqKVxubGV0IHN0cmluZ19vZl9mbXR0eSBmbXR0eSA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXR0eSBidWYgZm10dHk7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24gKilcblxuKCogTWFrZSBhIGdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24uICopXG4oKiBVc2VkIHRvIGdlbmVyYXRlIFByaW50ZiBhbmQgRm9ybWF0IHByaW50aW5nIGZ1bmN0aW9ucy4gKilcbigqIFBhcmFtZXRlcnM6XG4gICAgIGs6IGEgY29udGludWF0aW9uIGZpbmFsbHkgYXBwbGllZCB0byB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgdGhlIGFjY3VtdWxhdG9yLlxuICAgICBvOiB0aGUgb3V0cHV0IHN0cmVhbSAoc2VlIGssICVhIGFuZCAldCkuXG4gICAgIGFjYzogcmV2IGxpc3Qgb2YgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1c2gsIGZvcm1hdHRpbmcsIC4uLikuXG4gICAgIGZtdDogdGhlIGZvcm1hdC4gKilcbmxldCByZWMgbWFrZV9wcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9jYW1sX2NoYXIgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIChmdW4gc3RyIC0+IHN0cilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfdG9fY2FtbF9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludCBpY29udlxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQzMiBpY29udlxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfbmF0aXZlaW50IGljb252XG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDY0IGljb252XG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGZjb252XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfb2ZfYm9vbFxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBmdW4gZiB4IC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmdW4gbyAtPiBmIG8geCkpIHJlc3RcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgZnVuIGYgLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmICgpKVxuICB8IFJlYWRlciBfIC0+XG4gICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAqKVxuICAgICgqIEluZGVlZCwgc2luY2UgcHJpbnRmIGFuZCBjby4gdGFrZSBhIGZvcm1hdDQgYXMgYXJndW1lbnQsIHRoZSAnZCBhbmQgJ2VcbiAgICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgZm10IGFyZSBvYnZpb3VzbHkgZXF1YWxzLiBUaGUgUmVhZGVyIGlzIHRoZVxuICAgICAgIG9ubHkgY29uc3RydWN0b3Igd2hpY2ggdG91Y2ggJ2QgYW5kICdlIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgZm9ybWF0XG4gICAgICAgdHlwZSwgaXQgYWRkcyBhbiAoLT4pIHRvIHRoZSAnZCBwYXJhbWV0ZXJzLiBDb25zZXF1ZW50bHksIGEgZm9ybWF0NFxuICAgICAgIGNhbm5vdCBjb250YWluIGEgUmVhZGVyIG5vZGUsIGV4Y2VwdCBpbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvXG4gICAgICAgYW4gJXsuLi4lfS4gSXQncyBub3QgYSBwcm9ibGVtIGJlY2F1c2UgbWFrZV9wcmludGYgZG8gbm90IGNhbGxcbiAgICAgICBpdHNlbGYgcmVjdXJzaXZlbHkgb24gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0byAley4uLiV9LiAqKVxuICAgIGFzc2VydCBmYWxzZVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZmx1c2ggYWNjKSByZXN0XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19zdHJpbmdfbGl0ZXJhbCAoYWNjLCBzdHIpKSByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2NoYXJfbGl0ZXJhbCAoYWNjLCBjaHIpKSByZXN0XG5cbiAgfCBGb3JtYXRfYXJnIChfLCBzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gc3RyaW5nX29mX2ZtdHR5IHN1Yl9mbXR0eSBpblxuICAgIChmdW4gc3RyIC0+XG4gICAgICBpZ25vcmUgc3RyO1xuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHR5KSkgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPiBtYWtlX3ByaW50ZiBrIGFjY1xuICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgIGxldCBuZXdfYWNjID0gQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlW1wiKSBpblxuICAgIGZ1biBfIC0+IG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIGJlIHJlZnVzZWQgZm9yIFByaW50Zi4gKilcbiAgICAoKiBBY2NlcHRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gKilcbiAgICAoKiBJbnRlcnByZXQgJWwsICVuIGFuZCAlTCBhcyAldS4gKilcbiAgICBmdW4gbiAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2ludCBcIiV1XCIgbikgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIG1ha2VfaWdub3JlZF9wYXJhbSBrIGFjYyBpZ24gcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfbGl0IChhY2MsIGZtdGluZ19saXQpKSByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fdGFnIGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fYm94IGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgayBhY2NcblxuKCogRGVsYXkgdGhlIGVycm9yIChJbnZhbGlkX2FyZ3VtZW50IFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKS4gKilcbigqIEdlbmVyYXRlIGZ1bmN0aW9ucyB0byB0YWtlIHJlbWFpbmluZyBhcmd1bWVudHMgKGFmdGVyIHRoZSBcIiVfXCIpLiAqKVxuYW5kIG1ha2VfaWdub3JlZF9wYXJhbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG5cblxuKCogU3BlY2lhbCBjYXNlIG9mIHByaW50ZiBcIiVfKFwiLiAqKVxuYW5kIG1ha2VfZnJvbV9mbXR0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGZtdHR5IC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgUmVhZGVyX3R5IF8gICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIEluc2VydCBhbiBBY2NfaW52YWxpZF9hcmcgaW4gdGhlIGFjY3VtdWxhdG9yIGFuZCBjb250aW51ZSB0byBnZW5lcmF0ZVxuICAgY2xvc3VyZXMgdG8gZ2V0IHRoZSByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuYW5kIG1ha2VfaW52YWxpZF9hcmcgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT5cbiAgbWFrZV9wcmludGYgayAoQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKSkgZm10XG5cbigqIEZpeCBwYWRkaW5nLCB0YWtlIGl0IGFzIGFuIGV4dHJhIGludGVnZXIgYXJndW1lbnQgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfcGFkZGluZyA6IHR5cGUgeCB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB6IC0+IGEpIHBhZGRpbmcgLT4gKHogLT4gc3RyaW5nKSAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgdHJhbnMgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIHRyYW5zIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG5cbigqIEZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gZm9yIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NC4gKilcbigqIFRha2Ugb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiAoaW50X2NvbnYgLT4geiAtPiBzdHJpbmcpIC0+XG4gICAgaW50X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgdHJhbnMgaWNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IHRyYW5zIGljb252IHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcblxuKCogQ29udmVydCBhIGZsb2F0LCBmaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGlmIG5lZWRlZC4gKilcbigqIFRha2UgdGhlIGZsb2F0IGFyZ3VtZW50IGFuZCBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIGZsb2F0IC0+IGEpIHByZWNpc2lvbiAtPiBmbG9hdF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIGZjb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5hbmQgbWFrZV9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHggLT4geSA9XG4gIGZ1biBrIGFjYyByZXN0IGFyaXR5IGYgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgZnVuIHggLT5cbiAgICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgeClcblxubGV0IGNvbnN0IHggXyA9IHhcblxubGV0IHJlYyBtYWtlX2lwcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbiAgZnVuIGsgbyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQ2FtbF9zdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgQm9vbCAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX2N1c3RvbV9hcml0eSBrIG8gcmVzdCBhcml0eVxuICAgIHwgUmVhZGVyIF8gLT5cbiAgICAgICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAgU2VlIHRoZVxuICAgICAgICAgICBub3RlIGluIHRoZSBjb3JyZXNwb25kaW5nIGNhc2UgZm9yIG1ha2VfcHJpbnRmLiAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPlxuICAgICAgICAgIG1ha2VfaXByaW50ZiBrIG9cbiAgICAgICAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuICAgIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaWdub3JlZF9wYXJhbSAoZnVuIF8gLT4gayBvKSAoRW5kX29mX2FjYykgaWduIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgICAgICBrIG9cbmFuZCBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiA6XG4gIHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiB4ID1cbiAgZnVuIGsgbyBmbXQgcGFkIHByZWMgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAsIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKSlcbmFuZCBmbl9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+XG4gIHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB5ID1cbiAgZnVuIGsgbyBmbXQgLT4gZnVuY3Rpb25cbiAgICB8IEN1c3RvbV96ZXJvIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gZm10XG4gICAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgICAgICBjb25zdCAoZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyBmbXQgYXJpdHkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnRpbnVhdGlvbnMgZm9yIG1ha2VfcHJpbnRmICopXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgbyBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkB7XCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkBbXCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9jaGFyIG8gY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZiBvXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmbHVzaCBvXG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgbyBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBidWZwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDsgZiBiXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBidWZwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgJWEgYW5kICV0LiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGYgKCkpXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFcnJvciBtYW5hZ2VtZW50ICopXG5cbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgcHJldHR5LXByaW50ZWQgZXJyb3IgbWVzc2FnZS4gKilcbmxldCBmYWlsd2l0aF9tZXNzYWdlIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjU2IGluXG4gIGxldCBrIGFjYyA9IHN0cnB1dF9hY2MgYnVmIGFjYzsgZmFpbHdpdGggKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXR0aW5nIHRvb2xzICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYW4gb3BlbiBibG9jayBkZXNjcmlwdGlvbiAoaW5kZW50LCBibG9ja190eXBlKSAqKVxubGV0IG9wZW5fYm94X29mX3N0cmluZyBzdHIgPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gKDAsIFBwX2JveCkgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCBpbnZhbGlkX2JveCAoKSA9IGZhaWx3aXRoX21lc3NhZ2UgXCJpbnZhbGlkIGJveCBkZXNjcmlwdGlvbiAlU1wiIHN0ciBpblxuICAgIGxldCByZWMgcGFyc2Vfc3BhY2VzIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGkgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyAtPiBwYXJzZV9zcGFjZXMgKGkgKyAxKVxuICAgICAgICB8IF8gLT4gaVxuICAgIGFuZCBwYXJzZV9sd29yZCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnYScgLi4gJ3onIC0+IHBhcnNlX2x3b3JkIGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4galxuICAgIGFuZCBwYXJzZV9pbnQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBwYXJzZV9pbnQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqIGluXG4gICAgbGV0IHdzdGFydCA9IHBhcnNlX3NwYWNlcyAwIGluXG4gICAgbGV0IHdlbmQgPSBwYXJzZV9sd29yZCB3c3RhcnQgd3N0YXJ0IGluXG4gICAgbGV0IGJveF9uYW1lID0gU3RyaW5nLnN1YiBzdHIgd3N0YXJ0ICh3ZW5kIC0gd3N0YXJ0KSBpblxuICAgIGxldCBuc3RhcnQgPSBwYXJzZV9zcGFjZXMgd2VuZCBpblxuICAgIGxldCBuZW5kID0gcGFyc2VfaW50IG5zdGFydCBuc3RhcnQgaW5cbiAgICBsZXQgaW5kZW50ID1cbiAgICAgIGlmIG5zdGFydCA9IG5lbmQgdGhlbiAwIGVsc2VcbiAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgKFN0cmluZy5zdWIgc3RyIG5zdGFydCAobmVuZCAtIG5zdGFydCkpXG4gICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgbGV0IGV4cF9lbmQgPSBwYXJzZV9zcGFjZXMgbmVuZCBpblxuICAgIGlmIGV4cF9lbmQgPD4gbGVuIHRoZW4gaW52YWxpZF9ib3ggKCk7XG4gICAgbGV0IGJveF90eXBlID0gbWF0Y2ggYm94X25hbWUgd2l0aFxuICAgICAgfCBcIlwiIHwgXCJiXCIgLT4gUHBfYm94XG4gICAgICB8IFwiaFwiICAgICAgLT4gUHBfaGJveFxuICAgICAgfCBcInZcIiAgICAgIC0+IFBwX3Zib3hcbiAgICAgIHwgXCJodlwiICAgICAtPiBQcF9odmJveFxuICAgICAgfCBcImhvdlwiICAgIC0+IFBwX2hvdmJveFxuICAgICAgfCBfICAgICAgICAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIChpbmRlbnQsIGJveF90eXBlKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFBhcnNpbmcgdG9vbHMgKilcblxuKCogQ3JlYXRlIGEgcGFkZGluZ19mbXRfZWJiIGZyb20gYSBwYWRkaW5nIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHBhZGRpbmdfZm10X2ViYiA9XG5mdW4gcGFkIGZtdCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIGZtdClcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkZGluZ19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIGZtdClcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBmbXQpXG5cbigqIENyZWF0ZSBhIHByZWNpc2lvbl9mbXRfZWJiIGZyb20gYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHByZWNpc2lvbiAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcHJlY2lzaW9uX2ZtdF9lYmIgPVxuZnVuIHByZWMgZm10IC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAgICAtPiBQcmVjaXNpb25fZm10X0VCQiAoTm9fcHJlY2lzaW9uLCBmbXQpXG4gIHwgTGl0X3ByZWNpc2lvbiBwIC0+IFByZWNpc2lvbl9mbXRfRUJCIChMaXRfcHJlY2lzaW9uIHAsIGZtdClcbiAgfCBBcmdfcHJlY2lzaW9uICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKEFyZ19wcmVjaXNpb24sIGZtdClcblxuKCogQ3JlYXRlIGEgcGFkcHJlY19mbXRfZWJiIGZyb20gYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIGFuZCB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50c1xuICAgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZHByZWNfZm10X2ViYiA6IHR5cGUgeCB5IHogdCAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPlxuICAgIChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAoXywgXywgXywgXywgXykgcGFkcHJlY19mbXRfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXQgLT5cbiAgbGV0IFByZWNpc2lvbl9mbXRfRUJCIChwcmVjLCBmbXQnKSA9IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgcHJlYyBmbXQgaW5cbiAgbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChOb19wYWRkaW5nLCBwcmVjLCBmbXQnKVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRwcmVjX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgcHJlYywgZm10JylcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBwcmVjLCBmbXQnKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcGFyc2luZyAqKVxuXG4oKiBQYXJzZSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBmb3JtYXQgYW5kIGNyZWF0ZSBhIGZtdF9lYmIuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gaW4gY2FzZSBvZiBpbnZhbGlkIGZvcm1hdC4gKilcbmxldCBmbXRfZWJiX29mX3N0cmluZyA/bGVnYWN5X2JlaGF2aW9yIHN0ciA9XG4gICgqIFBhcmFtZXRlcnMgbmFtaW5nIGNvbnZlbnRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGxpdF9zdGFydDogc3RhcnQgb2YgdGhlIGxpdGVyYWwgc2VxdWVuY2UuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3RyX2luZDogY3VycmVudCBpbmRleCBpbiB0aGUgc3RyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBlbmRfaW5kOiBlbmQgb2YgdGhlIGN1cnJlbnQgKHN1Yi0pZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHBjdF9pbmQ6IGluZGV4IG9mIHRoZSAnJScgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAqKVxuICAoKiAgIC0gemVybzogIGlzIHRoZSAnMCcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBtaW51czogaXMgdGhlICctJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBsdXM6ICBpcyB0aGUgJysnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaGFzaDogIGlzIHRoZSAnIycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBzcGFjZTogaXMgdGhlICcgJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGlnbjogICBpcyB0aGUgJ18nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGFkOiBwYWRkaW5nIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwcmVjOiBwcmVjaXNpb24gb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN5bWI6IGNoYXIgcmVwcmVzZW50aW5nIHRoZSBjb252ZXJzaW9uICgnYycsICdzJywgJ2QnLCAuLi4pLiAqKVxuICAoKiAgIC0gY2hhcl9zZXQ6IHNldCBvZiBjaGFyYWN0ZXJzIGFzIGJpdG1hcCAoc2VlIHNjYW5mICVbLi4uXSkuICAgICopXG5cbiAgbGV0IGxlZ2FjeV9iZWhhdmlvciA9IG1hdGNoIGxlZ2FjeV9iZWhhdmlvciB3aXRoXG4gICAgfCBTb21lIGZsYWcgLT4gZmxhZ1xuICAgIHwgTm9uZSAtPiB0cnVlXG4gICgqICBXaGVuIHRoaXMgZmxhZyBpcyBlbmFibGVkLCB0aGUgZm9ybWF0IHBhcnNlciB0cmllcyB0byBiZWhhdmUgYXNcbiAgICAgIHRoZSA8NC4wMiBpbXBsZW1lbnRhdGlvbnMsIGluIHBhcnRpY3VsYXIgaXQgaWdub3JlcyBtb3N0IGJlbmluZVxuICAgICAgbm9uc2Vuc2ljYWwgZm9ybWF0LiBXaGVuIHRoZSBmbGFnIGlzIGRpc2FibGVkLCBpdCB3aWxsIHJlamVjdCBhbnlcbiAgICAgIGZvcm1hdCB0aGF0IGlzIG5vdCBhY2NlcHRlZCBieSB0aGUgc3BlY2lmaWNhdGlvbi5cblxuICAgICAgQSB0eXBpY2FsIGV4YW1wbGUgd291bGQgYmUgXCIlKyBkXCI6IHNwZWNpZnlpbmcgYm90aCAnKycgKGlmIHRoZVxuICAgICAgbnVtYmVyIGlzIHBvc2l0aXZlLCBwYWQgd2l0aCBhICcrJyB0byBnZXQgdGhlIHNhbWUgd2lkdGggYXNcbiAgICAgIG5lZ2F0aXZlIG51bWJlcnMpIGFuZCAnICcgKGlmIHRoZSBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoXG4gICAgICBhIHNwYWNlKSBkb2VzIG5vdCBtYWtlIHNlbnNlLCBidXQgdGhlIGxlZ2FjeSAoPCA0LjAyKVxuICAgICAgaW1wbGVtZW50YXRpb24gd2FzIGhhcHB5IHRvIGp1c3QgaWdub3JlIHRoZSBzcGFjZS5cbiAgKilcbiAgaW5cblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UuICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIHN0cl9pbmQgbXNnID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlc1wiXG4gICAgICBzdHIgc3RyX2luZCBtc2dcbiAgaW5cblxuICAoKiBVc2VkIHdoZW4gdGhlIGVuZCBvZiB0aGUgZm9ybWF0IChvciB0aGUgY3VycmVudCBzdWItZm9ybWF0KSB3YXMgZW5jb3VudGVyZWRcbiAgICAgIHVuZXhwZWN0ZWRseS4gKilcbiAgbGV0IHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kID1cbiAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIGVuZF9pbmRcbiAgICAgIFwidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0XCJcbiAgaW5cblxuICAoKiBVc2VkIGZvciAlMGM6IG5vIG90aGVyIHdpZHRocyBhcmUgaW1wbGVtZW50ZWQgKilcbiAgbGV0IGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZFxuICAgICAgXCJub24temVybyB3aWR0aHMgYXJlIHVuc3VwcG9ydGVkIGZvciAlYyBjb252ZXJzaW9uc1wiXG4gIGluXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiBvcHRpb24gZGVwZW5kZW5jeVxuICAgICBwcm9ibGVtLiAqKVxuICBsZXQgaW52YWxpZF9mb3JtYXRfd2l0aG91dCBzdHJfaW5kIGMgcyA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJyVjJyB3aXRob3V0ICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIGMgc1xuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiB1bmV4cGVjdGVkXG4gICAgIGNoYXJhY3Rlci4gKilcbiAgbGV0IGV4cGVjdGVkX2NoYXJhY3RlciBzdHJfaW5kIGV4cGVjdGVkIHJlYWQgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXMgZXhwZWN0ZWQsIHJlYWQgJUNcIlxuICAgICAgc3RyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZFxuICBpblxuXG4gICgqIFBhcnNlIHRoZSBzdHJpbmcgZnJvbSBiZWdfaW5kIChpbmNsdWRlZCkgdG8gZW5kX2luZCAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIHBhcnNlIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGJlZ19pbmQgZW5kX2luZCAtPiBwYXJzZV9saXRlcmFsIGJlZ19pbmQgYmVnX2luZCBlbmRfaW5kXG5cbiAgKCogUmVhZCBsaXRlcmFsIGNoYXJhY3RlcnMgdXAgdG8gJyUnIG9yICdAJyBzcGVjaWFsIGNoYXJhY3RlcnMuICopXG4gIGFuZCBwYXJzZV9saXRlcmFsIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBFbmRfb2ZfZm9ybWF0IGVsc2VcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZV9mb3JtYXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2FmdGVyX2F0IChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBmbXRfcmVzdFxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX2xpdGVyYWwgbGl0X3N0YXJ0IChzdHJfaW5kICsgMSkgZW5kX2luZFxuXG4gICgqIFBhcnNlIGEgZm9ybWF0IGFmdGVyICclJyAqKVxuICBhbmQgcGFyc2VfZm9ybWF0IDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgZW5kX2luZCAtPiBwYXJzZV9pZ24gcGN0X2luZCAocGN0X2luZCArIDEpIGVuZF9pbmRcblxuICBhbmQgcGFyc2VfaWduIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdfJyAtPiBwYXJzZV9mbGFncyBwY3RfaW5kIChzdHJfaW5kKzEpIGVuZF9pbmQgdHJ1ZVxuICAgICAgfCBfIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGZhbHNlXG5cbiAgYW5kIHBhcnNlX2ZsYWdzIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiXG4gID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGlnbiAtPlxuICAgIGxldCB6ZXJvID0gcmVmIGZhbHNlIGFuZCBtaW51cyA9IHJlZiBmYWxzZVxuICAgIGFuZCBwbHVzID0gcmVmIGZhbHNlIGFuZCBzcGFjZSA9IHJlZiBmYWxzZVxuICAgIGFuZCBoYXNoID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHNldF9mbGFnIHN0cl9pbmQgZmxhZyA9XG4gICAgICAoKiBpbiBsZWdhY3kgbW9kZSwgZHVwbGljYXRlIGZsYWdzIGFyZSBhY2NlcHRlZCAqKVxuICAgICAgaWYgIWZsYWcgJiYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBkdXBsaWNhdGUgZmxhZyAlQ1wiXG4gICAgICAgICAgc3RyIHN0cl9pbmQgc3RyLltzdHJfaW5kXTtcbiAgICAgIGZsYWcgOj0gdHJ1ZTtcbiAgICBpblxuICAgIGxldCByZWMgcmVhZF9mbGFncyBzdHJfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJzAnIC0+IHNldF9mbGFnIHN0cl9pbmQgemVybzsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnLScgLT4gc2V0X2ZsYWcgc3RyX2luZCBtaW51czsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcrJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHBsdXM7ICByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyMnIC0+IHNldF9mbGFnIHN0cl9pbmQgaGFzaDsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcgJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHNwYWNlOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBwYXJzZV9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kXG4gICAgICAgICAgIXplcm8gIW1pbnVzICFwbHVzICFoYXNoICFzcGFjZSBpZ25cbiAgICAgIGVuZFxuICAgIGluXG4gICAgcmVhZF9mbGFncyBzdHJfaW5kXG5cbiAgKCogVHJ5IHRvIHJlYWQgYSBkaWdpdGFsIG9yIGEgJyonIHBhZGRpbmcuICopXG4gIGFuZCBwYXJzZV9wYWRkaW5nIDogdHlwZSBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgemVybyBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFkdHkgPSBtYXRjaCB6ZXJvLCBtaW51cyB3aXRoXG4gICAgICB8IGZhbHNlLCBmYWxzZSAtPiBSaWdodFxuICAgICAgfCBmYWxzZSwgdHJ1ZSAgLT4gTGVmdFxuICAgICAgfCAgdHJ1ZSwgZmFsc2UgLT4gWmVyb3NcbiAgICAgIHwgIHRydWUsIHRydWUgIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExlZnRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJy0nIFwiMFwiIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICBsZXQgbmV3X2luZCwgd2lkdGggPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIG5ld19pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIChMaXRfcGFkZGluZyAocGFkdHksIHdpZHRoKSlcbiAgICB8ICcqJyAtPlxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIChBcmdfcGFkZGluZyBwYWR0eSlcbiAgICB8IF8gLT5cbiAgICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICAgIHwgTGVmdCAgLT5cbiAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICctJyBcInBhZGRpbmdcIjtcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgfCBaZXJvcyAtPlxuICAgICAgICAgKCogYSAnMCcgcGFkZGluZyBpbmRpY2F0aW9uIG5vdCBmb2xsb3dlZCBieSBhbnl0aGluZyBzaG91bGRcbiAgICAgICAgICAgYmUgaW50ZXJwcmV0ZWQgYXMgYSBSaWdodCBwYWRkaW5nIG9mIHdpZHRoIDAuIFRoaXMgaXMgdXNlZFxuICAgICAgICAgICBieSBzY2FubmluZyBjb252ZXJzaW9ucyAlMHMgYW5kICUwYyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICAoTGl0X3BhZGRpbmcgKFJpZ2h0LCAwKSlcbiAgICAgIHwgUmlnaHQgLT5cbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgZW5kXG5cbiAgKCogSXMgcHJlY2lzaW9uIGRlZmluZWQ/ICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wYWRkaW5nIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJy4nIC0+XG4gICAgICBwYXJzZV9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWRcbiAgICB8IHN5bWIgLT5cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgTm9fcHJlY2lzaW9uIHBhZCBzeW1iXG5cbiAgKCogUmVhZCB0aGUgZGlnaXRhbCBvciAnKicgcHJlY2lzaW9uLiAqKVxuICBhbmQgcGFyc2VfcHJlY2lzaW9uIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9saXRlcmFsIG1pbnVzIHN0cl9pbmQgPVxuICAgICAgbGV0IG5ld19pbmQsIHByZWMgPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgcGFkIChMaXRfcHJlY2lzaW9uIHByZWMpIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZFxuICAgIHwgKCcrJyB8ICctJykgYXMgc3ltYiB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPlxuICAgICAgKCogTGVnYWN5IG1vZGUgd291bGQgYWNjZXB0IGFuZCBpZ25vcmUgJysnIG9yICctJyBiZWZvcmUgdGhlXG4gICAgICAgICBpbnRlZ2VyIGRlc2NyaWJpbmcgdGhlIGRlc2lyZWQgcHJlY2lzaW9uOyBub3RlIHRoYXQgdGhpc1xuICAgICAgICAgY2Fubm90IGhhcHBlbiBmb3IgcGFkZGluZyB3aWR0aCwgYXMgJysnIGFuZCAnLScgYWxyZWFkeSBoYXZlXG4gICAgICAgICBhIHNlbWFudGljcyB0aGVyZS5cblxuICAgICAgICAgVGhhdCBzYWlkLCB0aGUgaWRlYSAoc3VwcG9ydGVkIGJ5IHRoaXMgdHdlYWspIHRoYXQgd2lkdGggYW5kXG4gICAgICAgICBwcmVjaXNpb24gbGl0ZXJhbHMgYXJlIFwiaW50ZWdlciBsaXRlcmFsc1wiIGluIHRoZSBPQ2FtbCBzZW5zZSBpc1xuICAgICAgICAgc3RpbGwgYmxhdGFudGx5IHdyb25nLCBhcyAxMjNfNDU2IG9yIDB4RkYgYXJlIHJlamVjdGVkLiAqKVxuICAgICAgcGFyc2VfbGl0ZXJhbCAobWludXMgfHwgc3ltYiA9ICctJykgKHN0cl9pbmQgKyAxKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlXG4gICAgICAgIGlnbiBwYWQgQXJnX3ByZWNpc2lvblxuICAgIHwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogbm90ZSB0aGF0IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkaWQgbm90IGlnbm9yZSAnLicgd2l0aG91dFxuICAgICAgICAgICBhIG51bWJlciAoYXMgaXQgZG9lcyBmb3IgcGFkZGluZyBpbmRpY2F0aW9ucyksIGJ1dFxuICAgICAgICAgICBpbnRlcnByZXRzIGl0IGFzICcuMCcgKilcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gMClcbiAgICAgIGVsc2VcbiAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICcuJyBcInByZWNpc2lvblwiXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIGNvbnZlcnNpb24uICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wcmVjaXNpb24gOiB0eXBlIHggeSB6IHQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgeSkgcGFkZGluZyAtPiAoeiwgdCkgcHJlY2lzaW9uIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9jb252ICh0eXBlIHUpICh0eXBlIHYpIChwYWRwcmVjIDogKHUsIHYpIHBhZGRpbmcpID1cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgcHJlYyBwYWRwcmVjIHN0ci5bc3RyX2luZF0gaW5cbiAgICAoKiBpbiBsZWdhY3kgbW9kZSwgc29tZSBmb3JtYXRzICglcyBhbmQgJVMpIGFjY2VwdCBhIHdlaXJkIG1peCBvZlxuICAgICAgIHBhZGRpbmcgYW5kIHByZWNpc2lvbiwgd2hpY2ggaXMgbWVyZ2VkIGFzIGEgc2luZ2xlIHBhZGRpbmdcbiAgICAgICBpbmZvcm1hdGlvbi4gRm9yIGV4YW1wbGUsIGluICUuMTBzIHRoZSBwcmVjaXNpb24gaXMgaW1wbGljaXRseVxuICAgICAgIHVuZGVyc3Rvb2QgYXMgcGFkZGluZyAlMTBzLCBidXQgdGhlIGxlZnQtcGFkZGluZyBjb21wb25lbnQgbWF5XG4gICAgICAgYmUgc3BlY2lmaWVkIGVpdGhlciBhcyBhIGxlZnQgcGFkZGluZyBvciBhIG5lZ2F0aXZlIHByZWNpc2lvbjpcbiAgICAgICAlLS4zcyBhbmQgJS4tM3MgYXJlIGVxdWl2YWxlbnQgdG8gJS0zcyAqKVxuICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nIC0+IChcbiAgICAgIG1hdGNoIG1pbnVzLCBwcmVjIHdpdGhcbiAgICAgICAgfCBfLCBOb19wcmVjaXNpb24gLT4gcGFyc2VfY29udiBOb19wYWRkaW5nXG4gICAgICAgIHwgZmFsc2UsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoUmlnaHQsIG4pKVxuICAgICAgICB8IHRydWUsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoTGVmdCwgbikpXG4gICAgICAgIHwgZmFsc2UsIEFyZ19wcmVjaXNpb24gLT4gcGFyc2VfY29udiAoQXJnX3BhZGRpbmcgUmlnaHQpXG4gICAgICAgIHwgdHJ1ZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBMZWZ0KVxuICAgIClcbiAgICB8IHBhZCAtPiBwYXJzZV9jb252IHBhZFxuXG4gICgqIENhc2UgYW5hbHlzaXMgb24gY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2NvbnZlcnNpb24gOiB0eXBlIHggeSB6IHQgdSB2IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+ICh4LCB5KSBwYWRkaW5nIC0+XG4gICAgICAgICh6LCB0KSBwcmVjaXNpb24gLT4gKHUsIHYpIHBhZGRpbmcgLT4gY2hhciAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCBwcmVjIHBhZHByZWMgc3ltYiAtPlxuICAgICgqIEZsYWdzIHVzZWQgdG8gY2hlY2sgb3B0aW9uIHVzYWdlcy9jb21wYXRpYmlsaXRpZXMuICopXG4gICAgbGV0IHBsdXNfdXNlZCAgPSByZWYgZmFsc2UgYW5kIGhhc2hfdXNlZCA9IHJlZiBmYWxzZVxuICAgIGFuZCBzcGFjZV91c2VkID0gcmVmIGZhbHNlIGFuZCBpZ25fdXNlZCAgID0gcmVmIGZhbHNlXG4gICAgYW5kIHBhZF91c2VkICAgPSByZWYgZmFsc2UgYW5kIHByZWNfdXNlZCAgPSByZWYgZmFsc2UgaW5cblxuICAgICgqIEFjY2VzcyB0byBvcHRpb25zLCB1cGRhdGUgZmxhZ3MuICopXG4gICAgbGV0IGdldF9wbHVzICAgICgpID0gcGx1c191c2VkICA6PSB0cnVlOyBwbHVzXG4gICAgYW5kIGdldF9oYXNoICAgKCkgPSBoYXNoX3VzZWQgOj0gdHJ1ZTsgaGFzaFxuICAgIGFuZCBnZXRfc3BhY2UgICAoKSA9IHNwYWNlX3VzZWQgOj0gdHJ1ZTsgc3BhY2VcbiAgICBhbmQgZ2V0X2lnbiAgICAgKCkgPSBpZ25fdXNlZCAgIDo9IHRydWU7IGlnblxuICAgIGFuZCBnZXRfcGFkICAgICAoKSA9IHBhZF91c2VkICAgOj0gdHJ1ZTsgcGFkXG4gICAgYW5kIGdldF9wcmVjICAgICgpID0gcHJlY191c2VkICA6PSB0cnVlOyBwcmVjXG4gICAgYW5kIGdldF9wYWRwcmVjICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRwcmVjIGluXG5cbiAgICBsZXQgZ2V0X2ludF9wYWQgKCkgOiAoeCx5KSBwYWRkaW5nID1cbiAgICAgICgqICU1LjNkIGlzIGFjY2VwdGVkIGFuZCBtZWFuaW5nZnVsOiBwYWQgdG8gbGVuZ3RoIDUgd2l0aFxuICAgICAgICAgc3BhY2VzLCBidXQgZmlyc3QgcGFkIHdpdGggemVyb3MgdXB0byBsZW5ndGggMyAoMC1wYWRkaW5nXG4gICAgICAgICBpcyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgXCJwcmVjaXNpb25cIiBmb3IgaW50ZWdlciBmb3JtYXRzKS5cblxuICAgICAgICAgJTA1LjNkIGlzIHJlZHVuZGFudDogcGFkIHRvIGxlbmd0aCA1ICp3aXRoIHplcm9zKiwgYnV0XG4gICAgICAgICBmaXJzdCBwYWQgd2l0aCB6ZXJvcy4uLiBUbyBhZGQgaW5zdWx0IHRvIHRoZSBpbmp1cnksIHRoZVxuICAgICAgICAgbGVnYWN5IGltcGxlbWVudGF0aW9uIGlnbm9yZXMgdGhlIDAtcGFkZGluZyBpbmRpY2F0aW9uIGFuZFxuICAgICAgICAgZG9lcyB0aGUgNSBwYWRkaW5nIHdpdGggc3BhY2VzIGluc3RlYWQuIFdlIHJldXNlIHRoaXNcbiAgICAgICAgIGludGVycHJldGF0aW9uIGZvciBjb21wYXRpYmlsaXR5LCBidXQgc3RhdGljYWxseSByZWplY3QgdGhpc1xuICAgICAgICAgZm9ybWF0IHdoZW4gdGhlIGxlZ2FjeSBtb2RlIGlzIGRpc2FibGVkLCB0byBwcm90ZWN0IHN0cmljdFxuICAgICAgICAgdXNlcnMgZnJvbSB0aGlzIGNvcm5lciBjYXNlLiAqKVxuICAgICAgIG1hdGNoIGdldF9wYWQgKCksIGdldF9wcmVjICgpIHdpdGhcbiAgICAgICAgIHwgcGFkLCBOb19wcmVjaXNpb24gLT4gcGFkXG4gICAgICAgICB8IE5vX3BhZGRpbmcsIF8gICAgIC0+IE5vX3BhZGRpbmdcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCBuKSwgXyAtPlxuICAgICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIG4pXG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIFplcm9zLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IExpdF9wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZFxuICAgICAgICAgfCBBcmdfcGFkZGluZyBfIGFzIHBhZCwgXyAtPiBwYWQgaW5cblxuICAgICgqIENoZWNrIHRoYXQgcGFkdHkgPD4gWmVyb3MuICopXG4gICAgbGV0IGNoZWNrX25vXzAgc3ltYiAodHlwZSBhIGIpIChwYWQgOiAoYSwgYikgcGFkZGluZykgOiAoYSxiKSBwYWRkaW5nID1cbiAgICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nICgoTGVmdCB8IFJpZ2h0KSwgXykgLT4gcGFkXG4gICAgICB8IEFyZ19wYWRkaW5nIChMZWZ0IHwgUmlnaHQpIC0+IHBhZFxuICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKVxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiMFwiXG4gICAgICB8IEFyZ19wYWRkaW5nIFplcm9zIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICBpblxuXG4gICAgKCogR2V0IHBhZGRpbmcgYXMgYSBwYWRfb3B0aW9uIChzZWUgXCIlX1wiLCBcIiV7XCIsIFwiJShcIiBhbmQgXCIlW1wiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBvcHRfb2ZfcGFkIGMgKHR5cGUgYSkgKHR5cGUgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA9IG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gTm9uZVxuICAgICAgfCBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKSAtPiBTb21lIHdpZHRoXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIFNvbWUgd2lkdGhcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicwJ1wiXG4gICAgICB8IExpdF9wYWRkaW5nIChMZWZ0LCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJy0nXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicqJ1wiXG4gICAgaW5cbiAgICBsZXQgZ2V0X3BhZF9vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZCAoKSkgaW5cbiAgICBsZXQgZ2V0X3BhZHByZWNfb3B0IGMgPSBvcHRfb2ZfcGFkIGMgKGdldF9wYWRwcmVjICgpKSBpblxuXG4gICAgKCogR2V0IHByZWNpc2lvbiBhcyBhIHByZWNfb3B0aW9uIChzZWUgXCIlX2ZcIikuXG4gICAgICAgKG5vIG5lZWQgZm9yIGxlZ2FjeSBtb2RlIHR3ZWFraW5nLCB0aG9zZSB3ZXJlIHJlamVjdGVkIGJ5IHRoZVxuICAgICAgIGxlZ2FjeSBwYXJzZXIgYXMgd2VsbCkgKilcbiAgICBsZXQgZ2V0X3ByZWNfb3B0ICgpID0gbWF0Y2ggZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgfCBOb19wcmVjaXNpb24gICAgICAgLT4gTm9uZVxuICAgICAgfCBMaXRfcHJlY2lzaW9uIG5kZWMgLT4gU29tZSBuZGVjXG4gICAgICB8IEFyZ19wcmVjaXNpb24gICAgICAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJ18nIFwiJyonXCJcbiAgICBpblxuXG4gICAgbGV0IGZtdF9yZXN1bHQgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICcsJyAtPlxuICAgICAgcGFyc2Ugc3RyX2luZCBlbmRfaW5kXG4gICAgfCAnYycgLT5cbiAgICAgIGxldCBjaGFyX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICVjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NoYXIsIGZtdF9yZXN0KSlcbiAgICAgICAgZWxzZSBGbXRfRUJCIChDaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBzY2FuX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICUwYyAqKVxuICAgICAgICBpZiBnZXRfaWduICgpXG4gICAgICAgIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9zY2FuX25leHRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBiZWdpbiBtYXRjaCBnZXRfcGFkX29wdCAnYycgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIDAgLT4gc2Nhbl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIF9uIC0+XG4gICAgICAgICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3JcbiAgICAgICAgICAgdGhlbiBpbnZhbGlkX25vbm51bGxfY2hhcl93aWR0aCBzdHJfaW5kXG4gICAgICAgICAgIGVsc2UgKCogbGVnYWN5IGlnbm9yZXMgJWMgd2lkdGhzICopIGNoYXJfZm9ybWF0IGZtdF9yZXN0XG4gICAgICBlbmRcbiAgICB8ICdDJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NhbWxfY2hhcixmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKENhbWxfY2hhciBmbXRfcmVzdClcbiAgICB8ICdzJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zdHJpbmcgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKFN0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdTJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9jYW1sX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnZCcgfCAnaScgfCAneCcgfCAnWCcgfCAnbycgfCAndScgLT5cbiAgICAgIGxldCBpY29udiA9IGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdOJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gVG9rZW5fY291bnRlciBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgfCAnbicgfCAnTCcgd2hlbiBzdHJfaW5kPWVuZF9pbmQgfHwgbm90IChpc19pbnRfYmFzZSBzdHIuW3N0cl9pbmRdKSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gY291bnRlcl9vZl9jaGFyIHN5bWIgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpKVxuICAgIHwgJ2wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQzMiAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDMyIChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnbicgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSlcbiAgICAgICAgICAoZ2V0X2hhc2ggKCkpIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ0wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQ2NCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDY0IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnZicgfCAnZScgfCAnRScgfCAnZycgfCAnRycgfCAnRicgfCAnaCcgfCAnSCcgLT5cbiAgICAgIGxldCBmY29udiA9XG4gICAgICAgIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmRcbiAgICAgICAgICAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3ltYiBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZmxvYXQgKGdldF9wYWRfb3B0ICdfJywgZ2V0X3ByZWNfb3B0ICgpKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2InIHwgJ0InIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Jvb2wgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEJvb2wgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnYScgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChBbHBoYSBmbXRfcmVzdClcbiAgICB8ICd0JyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKFRoZXRhIGZtdF9yZXN0KVxuICAgIHwgJ3InIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKFJlYWRlciBmbXRfcmVzdClcbiAgICB8ICchJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZsdXNoIGZtdF9yZXN0KVxuICAgIHwgKCclJyB8ICdAJykgYXMgYyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoYywgZm10X3Jlc3QpKVxuICAgIHwgJ3snIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnfScgaW5cbiAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIHN1Yl9lbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ3snLCBzdWJfZm10dHksIGZtdF9yZXN0KSlcbiAgICB8ICcoJyAtPlxuICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgJyknIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdWJfZW5kICsgMikgZW5kX2luZCBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IHN1Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdCBzdWJfZm10IGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnKCcsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJ1snIC0+XG4gICAgICBsZXQgbmV4dF9pbmQsIGNoYXJfc2V0ID0gcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9jaGFyX3NldCAoZ2V0X3BhZF9vcHQgJ18nLCBjaGFyX3NldCkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnWycsIGNoYXJfc2V0LCBmbXRfcmVzdCkpXG4gICAgfCAnLScgfCAnKycgfCAnIycgfCAnICcgfCAnXycgLT5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgIGZsYWcgJUMgaXMgb25seSBhbGxvd2VkIGFmdGVyIHRoZSAnJSUnLCBiZWZvcmUgcGFkZGluZyBhbmQgcHJlY2lzaW9uXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgc3ltYlxuICAgIHwgXyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgaW52YWxpZCBjb252ZXJzaW9uIFxcXCIlJSVjXFxcIlwiIHN0ciAoc3RyX2luZCAtIDEpIHN5bWJcbiAgICBpblxuICAgICgqIENoZWNrIGZvciB1bnVzZWQgb3B0aW9ucywgYW5kIHJlamVjdCB0aGVtIGFzIGluY29tcGF0aWJsZS5cblxuICAgICAgIFN1Y2ggY2hlY2tzIG5lZWQgdG8gYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsIGFzIHRoZSBsZWdhY3lcbiAgICAgICBwYXJzZXIgc2lsZW50bHkgaWdub3JlZCBpbmNvbXBhdGlibGUgZmxhZ3MuICopXG4gICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuIGJlZ2luXG4gICAgaWYgbm90ICFwbHVzX3VzZWQgJiYgcGx1cyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicrJ1wiO1xuICAgIGlmIG5vdCAhaGFzaF91c2VkICYmIGhhc2ggdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIjtcbiAgICBpZiBub3QgIXNwYWNlX3VzZWQgJiYgc3BhY2UgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIjtcbiAgICBpZiBub3QgIXBhZF91c2VkICAmJiBQYWRkaW5nX0VCQiBwYWQgPD4gUGFkZGluZ19FQkIgTm9fcGFkZGluZyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcImBwYWRkaW5nJ1wiO1xuICAgIGlmIG5vdCAhcHJlY191c2VkICYmIFByZWNpc2lvbl9FQkIgcHJlYyA8PiBQcmVjaXNpb25fRUJCIE5vX3ByZWNpc2lvbiB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgKGlmIGlnbiB0aGVuICdfJyBlbHNlIHN5bWIpXG4gICAgICAgIFwiYHByZWNpc2lvbidcIjtcbiAgICBpZiBpZ24gJiYgcGx1cyB0aGVuIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKydcIjtcbiAgICBlbmQ7XG4gICAgKCogdGhpcyBsYXN0IHRlc3QgbXVzdCBub3QgYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsXG4gICAgICAgYXMgaWdub3JpbmcgaXQgd291bGQgdHlwaWNhbGx5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0eXBpbmdcbiAgICAgICB0aGFuIHdoYXQgdGhlIGxlZ2FjeSBwYXJzZXIgdXNlZCAqKVxuICAgIGlmIG5vdCAhaWduX3VzZWQgJiYgaWduIHRoZW5cbiAgICAgIGJlZ2luIG1hdGNoIHN5bWIgd2l0aFxuICAgICAgICAoKiBhcmd1bWVudC1sZXNzIGZvcm1hdHMgY2FuIHNhZmVseSBiZSBpZ25vcmVkIGluIGxlZ2FjeSBtb2RlICopXG4gICAgICAgIHwgKCdAJyB8ICclJyB8ICchJyB8ICcsJykgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInXydcIlxuICAgICAgZW5kO1xuICAgIGZtdF9yZXN1bHRcblxuICAoKiBQYXJzZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uIChhZnRlciAnQCcpLiAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgRW5kX29mX2Zvcm1hdCkpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdbJyAtPlxuICAgICAgICBwYXJzZV90YWcgZmFsc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICddJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQ2xvc2VfYm94LCBmbXRfcmVzdCkpXG4gICAgICB8ICd7JyAtPlxuICAgICAgICBwYXJzZV90YWcgdHJ1ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ30nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV90YWcsIGZtdF9yZXN0KSlcbiAgICAgIHwgJywnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChCcmVhayAoXCJALFwiLCAwLCAwKSwgZm10X3Jlc3QpKVxuICAgICAgfCAnICcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAgXCIsIDEsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICc7JyAtPlxuICAgICAgICBwYXJzZV9nb29kX2JyZWFrIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnPycgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZGbHVzaCwgZm10X3Jlc3QpKVxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRm9yY2VfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnLicgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZsdXNoX25ld2xpbmUsIGZtdF9yZXN0KSlcbiAgICAgIHwgJzwnIC0+XG4gICAgICAgIHBhcnNlX21hZ2ljX3NpemUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9hdCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgd2hlbiBzdHJfaW5kICsgMSA8IGVuZF9pbmQgJiYgc3RyLltzdHJfaW5kICsgMV0gPSAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEVzY2FwZWRfcGVyY2VudCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsICgnQCcsIGZtdF9yZXN0KSlcbiAgICAgIHwgYyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoU2Nhbl9pbmRpYyBjLCBmbXRfcmVzdCkpXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIG9wdGlvbmFsIDxuYW1lPiBhZnRlciBcIkB7XCIgb3IgXCJAW1wiLiAqKVxuICBhbmQgcGFyc2VfdGFnIDogdHlwZSBlIGYgLiBib29sIC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gaXNfb3Blbl90YWcgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgdHJ5XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgbGV0IGluZCA9IFN0cmluZy5pbmRleF9mcm9tIHN0ciAoc3RyX2luZCArIDEpICc+JyBpblxuICAgICAgICBpZiBpbmQgPj0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciBzdHJfaW5kIChpbmQgLSBzdHJfaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCAoaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IHN1Yl9mb3JtYXQgPSBGb3JtYXQgKHN1Yl9mbXQsIHN1Yl9zdHIpIGluXG4gICAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nLCBmbXRfcmVzdCkpXG4gICAgICB8IF8gLT5cbiAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoRW5kX29mX2Zvcm1hdCwgXCJcIikgaW5cbiAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgaWYgaXNfb3Blbl90YWcgdGhlbiBPcGVuX3RhZyBzdWJfZm9ybWF0IGVsc2UgT3Blbl9ib3ggc3ViX2Zvcm1hdCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPHdpZHRoIG9mZnNldD4gYWZ0ZXIgXCJAO1wiLiAqKVxuICBhbmQgcGFyc2VfZ29vZF9icmVhayA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBsZXQgbmV4dF9pbmQsIGZvcm1hdHRpbmdfbGl0ID1cbiAgICAgIHRyeVxuICAgICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB8fCBzdHIuW3N0cl9pbmRdIDw+ICc8JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IChcbiAgICAgICAgICBsZXQgc3RyX2luZF8yLCB3aWR0aCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIGxldCBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF8yIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8zXSB3aXRoXG4gICAgICAgICAgICAgIHwgJz4nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZC0yKSAoc3RyX2luZF8zLXN0cl9pbmQrMykgaW5cbiAgICAgICAgICAgICAgICBzdHJfaW5kXzMgKyAxLCBCcmVhayAocywgd2lkdGgsIDApXG4gICAgICAgICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzQsIG9mZnNldCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8zIGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3RyX2luZF81ID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfNCBlbmRfaW5kIGluXG4gICAgICAgICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzVdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzUtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfNSArIDEsIEJyZWFrIChzLCB3aWR0aCwgb2Zmc2V0KVxuICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIClcbiAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgc3RyX2luZCwgQnJlYWsgKFwiQDtcIiwgMSwgMClcbiAgICBpblxuICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIHRoZSBzaXplIGluIGEgPG4+LiAqKVxuICBhbmQgcGFyc2VfbWFnaWNfc2l6ZSA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBtYXRjaFxuICAgICAgdHJ5XG4gICAgICAgIGxldCBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8xXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHNpemUgPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMSBlbmRfaW5kIGluXG4gICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgIGlmIHN0ci5bc3RyX2luZF8zXSA8PiAnPicgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZCAtIDIpIChzdHJfaW5kXzMgLSBzdHJfaW5kICsgMykgaW5cbiAgICAgICAgICBTb21lIChzdHJfaW5kXzMgKyAxLCBNYWdpY19zaXplIChzLCBzaXplKSlcbiAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgIE5vbmVcbiAgICB3aXRoXG4gICAgfCBTb21lIChuZXh0X2luZCwgZm9ybWF0dGluZ19saXQpIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljICc8JywgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIGFuZCBjb25zdHJ1Y3QgYSBjaGFyIHNldC4gKilcbiAgYW5kIHBhcnNlX2NoYXJfc2V0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcblxuICAgIGxldCBjaGFyX3NldCA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICAgIGxldCBhZGRfY2hhciBjID1cbiAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjO1xuICAgIGluXG4gICAgbGV0IGFkZF9yYW5nZSBjIGMnID1cbiAgICAgIGZvciBpID0gaW50X29mX2NoYXIgYyB0byBpbnRfb2ZfY2hhciBjJyBkb1xuICAgICAgICBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgKGNoYXJfb2ZfaW50IGkpO1xuICAgICAgZG9uZTtcbiAgICBpblxuXG4gICAgbGV0IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZCA9XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6ICclJScgYWxvbmUgaXMgbm90IGFjY2VwdGVkIGluIGNoYXJhY3RlciBzZXRzLCBcXFxuICAgICAgICAgdXNlICUlJSUgaW5zdGVhZCBhdCBwb3NpdGlvbiAlZC5cIiBzdHIgc3RyX2luZFxuICAgIGluXG5cbiAgICAoKiBQYXJzZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGEgY2hhciBzZXQuICopXG4gICAgbGV0IHJlYyBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGxldCBjID0gc3RyLltzdHJfaW5kXSBpblxuICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogUGFyc2UgdGhlIGNvbnRlbnQgb2YgYSBjaGFyIHNldCB1bnRpbCB0aGUgZmlyc3QgJ10nLiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9jb250ZW50IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnLScgLT5cbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCBjIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAgICgqIFRlc3QgZm9yIHJhbmdlIGluIGNoYXIgc2V0LiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9taW51cyAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyB3aGVuIGMgPSAnJScgLT5cbiAgICAgICAgYWRkX2NoYXIgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGlmIGMgPSAnJScgdGhlbiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmQ7XG4gICAgICAgICgqIG5vdGUgdGhhdCAnQCcgYWxvbmUgaXMgYWNjZXB0ZWQsIGFzIGRvbmUgYnkgdGhlIGxlZ2FjeVxuICAgICAgICAgICBpbXBsZW1lbnRhdGlvbjsgdGhlIGRvY3VtZW50YXRpb24gc3BlY2lmaWNhbGx5IHJlcXVpcmVzICVAXG4gICAgICAgICAgIHNvIHdlIGNvdWxkIHdhcm4gb24gdGhhdCAqKVxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjJ1xuXG4gICAgKCogTWFuYWdlIHJhbmdlIGluIGNoYXIgc2V0IChleGNlcHQgaWYgdGhlICctJyB0aGUgbGFzdCBjaGFyIGJlZm9yZSAnXScpICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIGFkZF9jaGFyICctJztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyAtPlxuICAgICAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMikgZW5kX2luZFxuICAgICAgICAgIHwgXyAtPiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmRcbiAgICAgICAgZW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGFkZF9yYW5nZSBjIGMnO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgIGluXG4gICAgbGV0IHN0cl9pbmQsIHJldmVyc2UgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgICB8ICdeJyAtPiBzdHJfaW5kICsgMSwgdHJ1ZVxuICAgICAgICB8IF8gLT4gc3RyX2luZCwgZmFsc2UgaW5cbiAgICBsZXQgbmV4dF9pbmQgPSBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICBsZXQgY2hhcl9zZXQgPSBmcmVlemVfY2hhcl9zZXQgY2hhcl9zZXQgaW5cbiAgICBuZXh0X2luZCwgKGlmIHJldmVyc2UgdGhlbiByZXZfY2hhcl9zZXQgY2hhcl9zZXQgZWxzZSBjaGFyX3NldClcblxuICAoKiBDb25zdW1lIGFsbCBuZXh0IHNwYWNlcywgcmFpc2UgYW4gRmFpbHVyZSBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGlmIHN0ci5bc3RyX2luZF0gPSAnICcgdGhlbiBwYXJzZV9zcGFjZXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGVsc2Ugc3RyX2luZFxuXG4gICgqIFJlYWQgYSBwb3NpdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIHN0cmluZywgcmFpc2UgYSBGYWlsdXJlIGlmIGVuZF9pbmQgaXNcbiAgICAgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCBhY2MgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gYWNjICogMTAgKyAoaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJykgaW5cbiAgICAgIGlmIG5ld19hY2MgPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogaW50ZWdlciAlZCBpcyBncmVhdGVyIHRoYW4gdGhlIGxpbWl0ICVkXCJcbiAgICAgICAgICBzdHIgbmV3X2FjYyBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG5ld19hY2NcbiAgICB8IF8gLT4gc3RyX2luZCwgYWNjXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmVcbiAgICAgaWYgZW5kX2luZCBpcyByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfaW50ZWdlciBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwXG4gICAgfCAnLScgLT4gKFxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgbGV0IG5leHRfaW5kLCBuID0gcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIDAgaW5cbiAgICAgICAgbmV4dF9pbmQsIC1uXG4gICAgICB8IGMgLT5cbiAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJkaWdpdFwiIGNcbiAgICApXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIEFkZCBhIGxpdGVyYWwgdG8gYSBmb3JtYXQgZnJvbSBhIGxpdGVyYWwgY2hhcmFjdGVyIHN1Yi1zZXF1ZW5jZS4gKilcbiAgYW5kIGFkZF9saXRlcmFsIDogdHlwZSBhIGQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gKGEsIF8sIF8sIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gbGl0X3N0YXJ0IHN0cl9pbmQgZm10IC0+IG1hdGNoIHN0cl9pbmQgLSBsaXRfc3RhcnQgd2l0aFxuICAgIHwgMCAgICAtPiBGbXRfRUJCIGZtdFxuICAgIHwgMSAgICAtPiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKHN0ci5bbGl0X3N0YXJ0XSwgZm10KSlcbiAgICB8IHNpemUgLT4gRm10X0VCQiAoU3RyaW5nX2xpdGVyYWwgKFN0cmluZy5zdWIgc3RyIGxpdF9zdGFydCBzaXplLCBmbXQpKVxuXG4gICgqIFNlYXJjaCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXRcbiAgICAgKGkuZS4gdGhlIGNvcnJlc3BvbmRpbmcgXCIlfVwiIG9yIFwiJSlcIikgKilcbiAgYW5kIHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IHVuY2xvc2VkIHN1Yi1mb3JtYXQsIFxcXG4gICAgICAgICBleHBlY3RlZCBcXFwiJSUlY1xcXCIgYXQgY2hhcmFjdGVyIG51bWJlciAlZFwiIHN0ciBjIGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnJScgLT5cbiAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgaWYgc3RyLltzdHJfaW5kICsgMV0gPSBjIHRoZW4gKCogRW5kIG9mIGZvcm1hdCBmb3VuZCAqKSBzdHJfaW5kIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgICB8ICdfJyAtPlxuICAgICAgICAgICgqIFNlYXJjaCBmb3IgXCIlXyhcIiBvciBcIiVfe1wiLiAqKVxuICAgICAgICAgIGlmIHN0cl9pbmQgKyAyID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDJdIHdpdGhcbiAgICAgICAgICB8ICd7JyAtPlxuICAgICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnKScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCBjXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgKCogJXsuLi4lfSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICd9JyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgKCogJSguLi4lKSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJ30nIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICUoLi4uJX0uICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJyknXCIgJ30nXG4gICAgICAgIHwgJyknIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICV7Li4uJSkuICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJ30nXCIgJyknXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIGVuZFxuICAgIHwgXyAtPiBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICgqIENoZWNrIGlmIHN5bWIgaXMgYSB2YWxpZCBpbnQgY29udmVyc2lvbiBhZnRlciBcIiVsXCIsIFwiJW5cIiBvciBcIiVMXCIgKilcbiAgYW5kIGlzX2ludF9iYXNlIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgKCogQ29udmVydCBhIGNoYXIgKGwsIG4gb3IgTCkgdG8gaXRzIGFzc29jaWF0ZWQgY291bnRlci4gKilcbiAgYW5kIGNvdW50ZXJfb2ZfY2hhciBzeW1iID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnbCcgLT4gTGluZV9jb3VudGVyICB8ICduJyAtPiBDaGFyX2NvdW50ZXJcbiAgICB8ICdMJyAtPiBUb2tlbl9jb3VudGVyIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBpbnRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBzcGFjZSBzeW1iID1cbiAgICBtYXRjaCBwbHVzLCBoYXNoLCBzcGFjZSwgc3ltYiB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X2QgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9pXG4gICAgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnZCcgLT4gSW50X3NkIHwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgJ2knIC0+IEludF9zaVxuICAgIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2QnIC0+IEludF9wZCB8ICB0cnVlLCBmYWxzZSwgZmFsc2UsICdpJyAtPiBJbnRfcGlcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd4JyAtPiBJbnRfeCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnWCcgLT4gSW50X1hcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICd4JyAtPiBJbnRfQ3ggfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnWCcgLT4gSW50X0NYXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnbycgLT4gSW50X29cbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdvJyAtPiBJbnRfQ29cbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd1JyAtPiBJbnRfdVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2QnIC0+IEludF9DZFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2knIC0+IEludF9DaVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3UnIC0+IEludF9DdVxuICAgIHwgXywgdHJ1ZSwgXywgJ3gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DeFxuICAgIHwgXywgdHJ1ZSwgXywgJ1gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DWFxuICAgIHwgXywgdHJ1ZSwgXywgJ28nIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9Db1xuICAgIHwgXywgdHJ1ZSwgXywgKCdkJyB8ICdpJyB8ICd1JykgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGZhbHNlIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIlxuICAgIHwgdHJ1ZSwgXywgdHJ1ZSwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiXG4gICAgfCBmYWxzZSwgXywgdHJ1ZSwgXyAgICAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBmYWxzZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyAnXCJcbiAgICB8IHRydWUsIF8sIGZhbHNlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgZmFsc2UgaGFzaCBzcGFjZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCBmYWxzZSwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzcGFjZSwgc3ltYikgdG8gaXRzIGFzc29jaWF0ZWQgZmxvYXRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIGxldCBmbGFnID0gbWF0Y2ggcGx1cywgc3BhY2Ugd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlIC0+IEZsb2F0X2ZsYWdfXG4gICAgfCBmYWxzZSwgIHRydWUgLT4gRmxvYXRfZmxhZ19zXG4gICAgfCAgdHJ1ZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19wXG4gICAgfCAgdHJ1ZSwgIHRydWUgLT5cbiAgICAgICgqIHBsdXMgYW5kIHNwYWNlOiBsZWdhY3kgaW1wbGVtZW50YXRpb24gcHJlZmVycyBwbHVzICopXG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBGbG9hdF9mbGFnX3BcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiIGluXG4gICAgbGV0IGtpbmQgPSBtYXRjaCBoYXNoLCBzeW1iIHdpdGhcbiAgICB8IF8sICdmJyAtPiBGbG9hdF9mXG4gICAgfCBfLCAnZScgLT4gRmxvYXRfZVxuICAgIHwgXywgJ0UnIC0+IEZsb2F0X0VcbiAgICB8IF8sICdnJyAtPiBGbG9hdF9nXG4gICAgfCBfLCAnRycgLT4gRmxvYXRfR1xuICAgIHwgXywgJ2gnIC0+IEZsb2F0X2hcbiAgICB8IF8sICdIJyAtPiBGbG9hdF9IXG4gICAgfCBmYWxzZSwgJ0YnIC0+IEZsb2F0X0ZcbiAgICB8IHRydWUsICdGJyAtPiBGbG9hdF9DRlxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgaW5cbiAgICBmbGFnLCBraW5kXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGluY29tcGF0aWJsZSBvcHRpb25zLiopXG4gIGFuZCBpbmNvbXBhdGlibGVfZmxhZyA6IHR5cGUgYSAuIGludCAtPiBpbnQgLT4gY2hhciAtPiBzdHJpbmcgLT4gYSA9XG4gICAgZnVuIHBjdF9pbmQgc3RyX2luZCBzeW1iIG9wdGlvbiAtPlxuICAgICAgbGV0IHN1YmZtdCA9IFN0cmluZy5zdWIgc3RyIHBjdF9pbmQgKHN0cl9pbmQgLSBwY3RfaW5kKSBpblxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgJXMgaXMgaW5jb21wYXRpYmxlIHdpdGggJyVjJyBpbiBzdWItZm9ybWF0ICVTXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgb3B0aW9uIHN5bWIgc3ViZm10XG5cbiAgaW4gcGFyc2UgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAoKiBHdWFyZGVkIHN0cmluZyB0byBmb3JtYXQgY29udmVyc2lvbnMgKilcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHN0ciBmbXR0eSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgZm10dHksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCJcbiAgICAgIHN0ciAoc3RyaW5nX29mX2ZtdHR5IGZtdHR5KVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGNvbXBhdGlibGUgd2l0aCBhbiBvdGhlciBmb3JtYXQuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgKEZvcm1hdCAoZm10Jywgc3RyJykpID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCAoZm10dHlfb2ZfZm10IGZtdCcpLCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiIHN0ciBzdHInXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gUHJpbnRmXG5cbnR5cGUgdCA9IGV4biA9IC4uXG5cbmxldCBwcmludGVycyA9IEF0b21pYy5tYWtlIFtdXG5cbmxldCBsb2NmbXQgPSBmb3JtYXRfb2Zfc3RyaW5nIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkOiAlc1wiXG5cbmxldCBmaWVsZCB4IGkgPVxuICBsZXQgZiA9IE9iai5maWVsZCB4IGkgaW5cbiAgaWYgbm90IChPYmouaXNfYmxvY2sgZikgdGhlblxuICAgIHNwcmludGYgXCIlZFwiIChPYmoubWFnaWMgZiA6IGludCkgICAgICAgICAgICgqIGNhbiBhbHNvIGJlIGEgY2hhciAqKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5zdHJpbmdfdGFnIHRoZW5cbiAgICBzcHJpbnRmIFwiJVNcIiAoT2JqLm1hZ2ljIGYgOiBzdHJpbmcpXG4gIGVsc2UgaWYgT2JqLnRhZyBmID0gT2JqLmRvdWJsZV90YWcgdGhlblxuICAgIHN0cmluZ19vZl9mbG9hdCAoT2JqLm1hZ2ljIGYgOiBmbG9hdClcbiAgZWxzZVxuICAgIFwiX1wiXG5cbmxldCByZWMgb3RoZXJfZmllbGRzIHggaSA9XG4gIGlmIGkgPj0gT2JqLnNpemUgeCB0aGVuIFwiXCJcbiAgZWxzZSBzcHJpbnRmIFwiLCAlcyVzXCIgKGZpZWxkIHggaSkgKG90aGVyX2ZpZWxkcyB4IChpKzEpKVxuXG5sZXQgZmllbGRzIHggPVxuICBtYXRjaCBPYmouc2l6ZSB4IHdpdGhcbiAgfCAwIC0+IFwiXCJcbiAgfCAxIC0+IFwiXCJcbiAgfCAyIC0+IHNwcmludGYgXCIoJXMpXCIgKGZpZWxkIHggMSlcbiAgfCBfIC0+IHNwcmludGYgXCIoJXMlcylcIiAoZmllbGQgeCAxKSAob3RoZXJfZmllbGRzIHggMilcblxubGV0IHVzZV9wcmludGVycyB4ID1cbiAgbGV0IHJlYyBjb252ID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBoZCB4IHdpdGhcbiAgICAgICAgIHwgTm9uZSB8IGV4Y2VwdGlvbiBfIC0+IGNvbnYgdGxcbiAgICAgICAgIHwgU29tZSBzIC0+IFNvbWUgcylcbiAgICB8IFtdIC0+IE5vbmUgaW5cbiAgY29udiAoQXRvbWljLmdldCBwcmludGVycylcblxubGV0IHRvX3N0cmluZ19kZWZhdWx0ID0gZnVuY3Rpb25cbiAgfCBPdXRfb2ZfbWVtb3J5IC0+IFwiT3V0IG9mIG1lbW9yeVwiXG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gXCJTdGFjayBvdmVyZmxvd1wiXG4gIHwgTWF0Y2hfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNSkgXCJQYXR0ZXJuIG1hdGNoaW5nIGZhaWxlZFwiXG4gIHwgQXNzZXJ0X2ZhaWx1cmUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiQXNzZXJ0aW9uIGZhaWxlZFwiXG4gIHwgVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiVW5kZWZpbmVkIHJlY3Vyc2l2ZSBtb2R1bGVcIlxuICB8IHggLT5cbiAgICAgIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICAgICAgaWYgT2JqLnRhZyB4IDw+IDAgdGhlblxuICAgICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgeCAwKSA6IHN0cmluZylcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNvbnN0cnVjdG9yID1cbiAgICAgICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgKE9iai5maWVsZCB4IDApIDApIDogc3RyaW5nKSBpblxuICAgICAgICBjb25zdHJ1Y3RvciBeIChmaWVsZHMgeClcblxubGV0IHRvX3N0cmluZyBlID1cbiAgbWF0Y2ggdXNlX3ByaW50ZXJzIGUgd2l0aFxuICB8IFNvbWUgcyAtPiBzXG4gIHwgTm9uZSAtPiB0b19zdHJpbmdfZGVmYXVsdCBlXG5cbmxldCBwcmludCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZmx1c2ggc3RkZXJyO1xuICAgIHJhaXNlIHhcblxubGV0IGNhdGNoIGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGZsdXNoIHN0ZG91dDtcbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZXhpdCAyXG5cbnR5cGUgcmF3X2JhY2t0cmFjZV9zbG90XG50eXBlIHJhd19iYWNrdHJhY2VfZW50cnkgPSBwcml2YXRlIGludFxudHlwZSByYXdfYmFja3RyYWNlID0gcmF3X2JhY2t0cmFjZV9lbnRyeSBhcnJheVxuXG5sZXQgcmF3X2JhY2t0cmFjZV9lbnRyaWVzIGJ0ID0gYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2U6XG4gIHVuaXQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2VcIlxuXG5leHRlcm5hbCByYWlzZV93aXRoX2JhY2t0cmFjZTogZXhuIC0+IHJhd19iYWNrdHJhY2UgLT4gJ2FcbiAgPSBcIiVyYWlzZV93aXRoX2JhY2t0cmFjZVwiXG5cbnR5cGUgYmFja3RyYWNlX3Nsb3QgPVxuICB8IEtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlICAgIDogYm9vbDtcbiAgICAgIGZpbGVuYW1lICAgIDogc3RyaW5nO1xuICAgICAgbGluZV9udW1iZXIgOiBpbnQ7XG4gICAgICBzdGFydF9jaGFyICA6IGludDtcbiAgICAgIGVuZF9jaGFyICAgIDogaW50O1xuICAgICAgaXNfaW5saW5lICAgOiBib29sO1xuICAgICAgZGVmbmFtZSAgICAgOiBzdHJpbmc7XG4gICAgfVxuICB8IFVua25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgOiBib29sXG4gICAgfVxuXG4oKiB0byBhdm9pZCB3YXJuaW5nICopXG5sZXQgXyA9IFtLbm93bl9sb2NhdGlvbiB7IGlzX3JhaXNlID0gZmFsc2U7IGZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIgPSAwOyBzdGFydF9jaGFyID0gMDsgZW5kX2NoYXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpc19pbmxpbmUgPSBmYWxzZTsgZGVmbmFtZSA9IFwiXCIgfTtcbiAgICAgICAgIFVua25vd25fbG9jYXRpb24geyBpc19yYWlzZSA9IGZhbHNlIH1dXG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90OlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2U6XG4gIHJhd19iYWNrdHJhY2UgLT4gYmFja3RyYWNlX3Nsb3QgYXJyYXkgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlXCJcblxubGV0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidCA9XG4gIHRyeSBTb21lIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBwb3Mgc2xvdCA9XG4gIGxldCBpbmZvIGlzX3JhaXNlID1cbiAgICBpZiBpc19yYWlzZSB0aGVuXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYXRcIiBlbHNlIFwiUmUtcmFpc2VkIGF0XCJcbiAgICBlbHNlXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYnkgcHJpbWl0aXZlIG9wZXJhdGlvbiBhdFwiIGVsc2UgXCJDYWxsZWQgZnJvbVwiXG4gIGluXG4gIG1hdGNoIHNsb3Qgd2l0aFxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgaWYgbC5pc19yYWlzZSB0aGVuXG4gICAgICAgICgqIGNvbXBpbGVyLWluc2VydGVkIHJlLXJhaXNlLCBza2lwcGVkICopIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgU29tZSAoc3ByaW50ZiBcIiVzIHVua25vd24gbG9jYXRpb25cIiAoaW5mbyBmYWxzZSkpXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgU29tZSAoc3ByaW50ZiBcIiVzICVzIGluIGZpbGUgXFxcIiVzXFxcIiVzLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgKGluZm8gbC5pc19yYWlzZSkgbC5kZWZuYW1lIGwuZmlsZW5hbWVcbiAgICAgICAgICAgICAgKGlmIGwuaXNfaW5saW5lIHRoZW4gXCIgKGlubGluZWQpXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICBsLmxpbmVfbnVtYmVyIGwuc3RhcnRfY2hhciBsLmVuZF9jaGFyKVxuXG5sZXQgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgZnByaW50ZiBvdXRjaGFuXG4gICAgICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGZwcmludGYgb3V0Y2hhbiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lXG5cbmxldCBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gcmF3X2JhY2t0cmFjZSA9XG4gIHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOiBwcmludHMgdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IHByaW50X2JhY2t0cmFjZSBvdXRjaGFuID1cbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxubGV0IGJhY2t0cmFjZV90b19zdHJpbmcgYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBicHJpbnRmIGIgXCIlc1xcblwiIHN0clxuICAgICAgZG9uZTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCByYXdfYmFja3RyYWNlX3RvX3N0cmluZyByYXdfYmFja3RyYWNlID1cbiAgYmFja3RyYWNlX3RvX3N0cmluZyAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX2lubGluZVxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBmYWxzZVxuXG50eXBlIGxvY2F0aW9uID0ge1xuICBmaWxlbmFtZSA6IHN0cmluZztcbiAgbGluZV9udW1iZXIgOiBpbnQ7XG4gIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gIGVuZF9jaGFyIDogaW50O1xufVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfbG9jYXRpb24gPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgIFNvbWUge1xuICAgICAgZmlsZW5hbWUgICAgPSBsLmZpbGVuYW1lO1xuICAgICAgbGluZV9udW1iZXIgPSBsLmxpbmVfbnVtYmVyO1xuICAgICAgc3RhcnRfY2hhciAgPSBsLnN0YXJ0X2NoYXI7XG4gICAgICBlbmRfY2hhciAgICA9IGwuZW5kX2NoYXI7XG4gICAgfVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfXG4gIHwgS25vd25fbG9jYXRpb24geyBkZWZuYW1lID0gXCJcIiB9IC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IFNvbWUgbC5kZWZuYW1lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHMgcmF3X2JhY2t0cmFjZSA9XG4gICgqIFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IFNvbWUgaXNcbiAgICAgcmV0dXJuZWQgb25seSBpZiBhIHBhcnQgb2YgdGhlIHRyYWNlIGlzIHVzYWJsZS4gVGhpcyBnaXZlcyB1c1xuICAgICBhIGJpdCBtb3JlIHdvcmsgdGhhbiBqdXN0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSwgYnV0IGl0IG1ha2VzIHRoZVxuICAgICBBUEkgbW9yZSB1c2VyLWZyaWVuZGx5IC0tIG90aGVyd2lzZSBtb3N0IHVzZXJzIHdvdWxkIGhhdmUgdG9cbiAgICAgcmVpbXBsZW1lbnQgdGhlIFwiUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIHNvcnJ5XCIgbG9naWNcbiAgICAgdGhlbXNlbHZlcy4gKilcbiAgbWF0Y2ggY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGJhY2t0cmFjZSAtPlxuICAgICAgbGV0IHVzYWJsZV9zbG90ID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgfCBLbm93bl9sb2NhdGlvbiBfIC0+IHRydWUgaW5cbiAgICAgIGxldCByZWMgZXhpc3RzX3VzYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKC0xKSAtPiBmYWxzZVxuICAgICAgICB8IGkgLT4gdXNhYmxlX3Nsb3QgYmFja3RyYWNlLihpKSB8fCBleGlzdHNfdXNhYmxlIChpIC0gMSkgaW5cbiAgICAgIGlmIGV4aXN0c191c2FibGUgKEFycmF5Lmxlbmd0aCBiYWNrdHJhY2UgLSAxKVxuICAgICAgdGhlbiBTb21lIGJhY2t0cmFjZVxuICAgICAgZWxzZSBOb25lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IGVudHJ5ID1cbiAgYmFja3RyYWNlX3Nsb3RzIFt8IGVudHJ5IHxdXG5cbm1vZHVsZSBTbG90ID0gc3RydWN0XG4gIHR5cGUgdCA9IGJhY2t0cmFjZV9zbG90XG4gIGxldCBmb3JtYXQgPSBmb3JtYXRfYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGlzX3JhaXNlID0gYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2VcbiAgbGV0IGlzX2lubGluZSA9IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZVxuICBsZXQgbG9jYXRpb24gPSBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvblxuICBsZXQgbmFtZSA9IGJhY2t0cmFjZV9zbG90X2RlZm5hbWVcbmVuZFxuXG5sZXQgcmF3X2JhY2t0cmFjZV9sZW5ndGggYnQgPSBBcnJheS5sZW5ndGggYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2UgLT4gaW50IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QgOlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gcmF3X2JhY2t0cmFjZV9zbG90IG9wdGlvblxuICA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFwiXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOlxuICAgcmV0dXJucyB0aGUgKnN0cmluZyogY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgZ2V0X2JhY2t0cmFjZSAoKSA9IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxuZXh0ZXJuYWwgcmVjb3JkX2JhY2t0cmFjZTogYm9vbCAtPiB1bml0ID0gXCJjYW1sX3JlY29yZF9iYWNrdHJhY2VcIlxuZXh0ZXJuYWwgYmFja3RyYWNlX3N0YXR1czogdW5pdCAtPiBib29sID0gXCJjYW1sX2JhY2t0cmFjZV9zdGF0dXNcIlxuXG5sZXQgcmVjIHJlZ2lzdGVyX3ByaW50ZXIgZm4gPVxuICBsZXQgb2xkX3ByaW50ZXJzID0gQXRvbWljLmdldCBwcmludGVycyBpblxuICBsZXQgbmV3X3ByaW50ZXJzID0gZm4gOjogb2xkX3ByaW50ZXJzIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwcmludGVycyBvbGRfcHJpbnRlcnMgbmV3X3ByaW50ZXJzIGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gcmVnaXN0ZXJfcHJpbnRlciBmblxuXG5leHRlcm5hbCBnZXRfY2FsbHN0YWNrOiBpbnQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2tcIlxuXG5sZXQgZXhuX3Nsb3QgeCA9XG4gIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmoudGFnIHggPSAwIHRoZW4gT2JqLmZpZWxkIHggMCBlbHNlIHhcblxubGV0IGV4bl9zbG90X2lkIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDEpIDogaW50KVxuXG5sZXQgZXhuX3Nsb3RfbmFtZSB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAwKSA6IHN0cmluZylcblxuZXh0ZXJuYWwgZ2V0X2RlYnVnX2luZm9fc3RhdHVzIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXNcIlxuXG4oKiBEZXNjcmlwdGlvbnMgZm9yIGVycm9ycyBpbiBzdGFydHVwLmguIFNlZSBhbHNvIGJhY2t0cmFjZS5jICopXG5sZXQgZXJyb3JzID0gW3wgXCJcIjtcbiAgKCogRklMRV9OT1RfRk9VTkQgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClcIjtcbiAgKCogQkFEX0JZVEVDT0RFICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpXCI7XG4gICgqIFdST05HX01BR0lDICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBoYXMgd3JvbmcgbWFnaWMgbnVtYmVyKVwiO1xuICAoKiBOT19GRFMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQ7XFxuIFxcXG4gICAgICAtLSB0b28gbWFueSBvcGVuIGZpbGVzLiBUcnkgcnVubmluZyB3aXRoIE9DQU1MUlVOUEFSQU09Yj0yKVwiXG58XVxuXG5sZXQgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZSA9XG4gIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBsZXQgc3RhdHVzID0gZ2V0X2RlYnVnX2luZm9fc3RhdHVzICgpIGluXG4gIGlmIHN0YXR1cyA8IDAgdGhlblxuICAgIHByZXJyX2VuZGxpbmUgZXJyb3JzLihhYnMgc3RhdHVzKTtcbiAgZmx1c2ggc3RkZXJyXG5cbmxldCB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA9IHJlZiBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyXG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZm4gPSB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA6PSBmblxuXG5sZXQgZW1wdHlfYmFja3RyYWNlIDogcmF3X2JhY2t0cmFjZSA9IFt8IHxdXG5cbmxldCB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgPVxuICB0cnlcbiAgICBnZXRfcmF3X2JhY2t0cmFjZSAoKVxuICB3aXRoIF8gKCogT3V0X29mX21lbW9yeT8gKikgLT5cbiAgICBlbXB0eV9iYWNrdHJhY2VcblxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICAoKiBHZXQgdGhlIGJhY2t0cmFjZSBub3csIGluIGNhc2Ugb25lIG9mIHRoZSBbYXRfZXhpdF0gZnVuY3Rpb25cbiAgICAgICBkZXN0cm95cyBpdC4gKilcbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9XG4gICAgICBpZiBkZWJ1Z2dlcl9pbl91c2UgKCogU2FtZSB0ZXN0IGFzIGluIFtydW50aW1lL3ByaW50ZXhjLmNdICopIHRoZW5cbiAgICAgICAgZW1wdHlfYmFja3RyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKVxuICAgIGluXG4gICAgKHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgIHRyeVxuICAgICAgIXVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlXG4gICAgd2l0aCBleG4nIC0+XG4gICAgICBsZXQgcmF3X2JhY2t0cmFjZScgPSB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXFxuXCJcbiAgICAgICAgKHRvX3N0cmluZyBleG4nKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2UnO1xuICAgICAgZmx1c2ggc3RkZXJyXG4gIHdpdGhcbiAgICB8IE91dF9vZl9tZW1vcnkgLT5cbiAgICAgICAgcHJlcnJfZW5kbGluZVxuICAgICAgICAgIFwiRmF0YWwgZXJyb3I6IG91dCBvZiBtZW1vcnkgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXJcIlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBbY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25dIGluXG4gICBbcnVudGltZS9wcmludGV4Yy5jXSB3aGljaCBleHBlY3RzIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZVxuICB3aXRoIF8gLT5cbiAgICAoKiBUaGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCAqKVxuICAgICgpXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIlxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIERhbWllbiBEb2xpZ2V6LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGdlbmVyaWNfcXVvdGUgcXVvdGVxdW90ZSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBpZiBzLltpXSA9ICdcXCcnXG4gICAgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIHF1b3RlcXVvdGVcbiAgICBlbHNlIEJ1ZmZlci5hZGRfY2hhciBiICBzLltpXVxuICBkb25lO1xuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1sxXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Jhc2VuYW1lLmh0bWxcbiAgSW4gc3RlcCAxIG9mIFtbMV1dLCB3ZSBjaG9vc2UgdG8gcmV0dXJuIFwiLlwiIGZvciBlbXB0eSBpbnB1dC5cbiAgICAoZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiBPQ2FtbClcbiAgSW4gc3RlcCAyLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4gIFN0ZXAgNiBpcyBub3QgaW1wbGVtZW50ZWQ6IHdlIGNvbnNpZGVyIHRoYXQgdGhlIFtzdWZmaXhdIG9wZXJhbmQgaXNcbiAgICBhbHdheXMgYWJzZW50LiAgU3VmZml4ZXMgYXJlIGhhbmRsZWQgYnkgW2Nob3Bfc3VmZml4XSBhbmQgW2Nob3BfZXh0ZW5zaW9uXS5cbiopXG5sZXQgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgZmluZF9lbmQgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGZpbmRfZW5kIChuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIG4gKG4gKyAxKVxuICBhbmQgZmluZF9iZWcgbiBwID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIHBcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gU3RyaW5nLnN1YiBuYW1lIChuICsgMSkgKHAgLSBuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIChuIC0gMSkgcFxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSBmaW5kX2VuZCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1syXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Rpcm5hbWUuaHRtbFxuICBJbiBzdGVwIDYgb2YgW1syXV0sIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiopXG5sZXQgZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyB0cmFpbGluZ19zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIHRyYWlsaW5nX3NlcCAobiAtIDEpXG4gICAgZWxzZSBiYXNlIG5cbiAgYW5kIGJhc2UgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgblxuICAgIGVsc2UgYmFzZSAobiAtIDEpXG4gIGFuZCBpbnRlcm1lZGlhdGVfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIChuIC0gMSlcbiAgICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChuICsgMSlcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgdHJhaWxpbmdfc2VwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5tb2R1bGUgdHlwZSBTWVNERVBTID0gc2lnXG4gIHZhbCBudWxsIDogc3RyaW5nXG4gIHZhbCBjdXJyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBwYXJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIGRpcl9zZXAgOiBzdHJpbmdcbiAgdmFsIGlzX2Rpcl9zZXAgOiBzdHJpbmcgLT4gaW50IC0+IGJvb2xcbiAgdmFsIGlzX3JlbGF0aXZlIDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGlzX2ltcGxpY2l0IDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNoZWNrX3N1ZmZpeCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgY2hvcF9zdWZmaXhfb3B0IDogc3VmZml4OnN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICB2YWwgdGVtcF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcXVvdGUgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBxdW90ZV9jb21tYW5kIDpcbiAgICBzdHJpbmcgLT4gP3N0ZGluOiBzdHJpbmcgLT4gP3N0ZG91dDogc3RyaW5nIC0+ID9zdGRlcnI6IHN0cmluZ1xuICAgICAgICAgICAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbiAgdmFsIGJhc2VuYW1lIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgZGlybmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbmVuZFxuXG5tb2R1bGUgVW5peCA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwIHMgaSA9IHMuW2ldID0gJy8nXG4gIGxldCBpc19yZWxhdGl2ZSBuID0gU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLydcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gIGxldCBjaGVja19zdWZmaXggbmFtZSBzdWZmID1cbiAgICBTdHJpbmcuZW5kc193aXRoIH5zdWZmaXg6c3VmZiBuYW1lXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgciA9IHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVE1QRElSXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIvdG1wXCJcbiAgbGV0IHF1b3RlID0gZ2VuZXJpY19xdW90ZSBcIidcXFxcJydcIlxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSAoY21kIDo6IGFyZ3MpKVxuICAgIF4gKG1hdGNoIHN0ZGluICB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA8XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBpZiBzdGRlcnIgPSBzdGRvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZSBmKVxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgV2luMzIgOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCJOVUxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIlxcXFxcIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBsZXQgYyA9IHMuW2ldIGluIGMgPSAnLycgfHwgYyA9ICdcXFxcJyB8fCBjID0gJzonXG4gIGxldCBpc19yZWxhdGl2ZSBuID1cbiAgICAoU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLycpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJ1xcXFwnKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IG4uWzFdIDw+ICc6JylcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLlxcXFxcIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uXFxcXFwiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICBTdHJpbmcubGVuZ3RoIG5hbWUgPj0gU3RyaW5nLmxlbmd0aCBzdWZmICYmXG4gICAobGV0IHMgPSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nLmxlbmd0aCBzdWZmKSBpblxuICAgIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgcyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgc3VmZilcblxuICBsZXQgY2hvcF9zdWZmaXhfb3B0IH5zdWZmaXggZmlsZW5hbWUgPVxuICAgIGxldCBsZW5fcyA9IFN0cmluZy5sZW5ndGggc3VmZml4IGFuZCBsZW5fZiA9IFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBpZiBsZW5fZiA+PSBsZW5fcyB0aGVuXG4gICAgICBsZXQgciA9IFN0cmluZy5zdWIgZmlsZW5hbWUgKGxlbl9mIC0gbGVuX3MpIGxlbl9zIGluXG4gICAgICBpZiBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHIgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cblxuICBsZXQgdGVtcF9kaXJfbmFtZSA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJURU1QXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIuXCJcbiAgbGV0IHF1b3RlIHMgPVxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ1xcXCInIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAwIGk7XG4gICAgICB8IGMgICAgLT4gQnVmZmVyLmFkZF9jaGFyIGIgYzsgbG9vcCAoaSsxKTtcbiAgICBhbmQgbG9vcF9icyBuIGkgPVxuICAgICAgaWYgaSA9IGwgdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7XG4gICAgICAgIGFkZF9icyBuO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICdcXFwiJyAtPiBhZGRfYnMgKDIqbisxKTsgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInOyBsb29wIChpKzEpO1xuICAgICAgICB8ICdcXFxcJyAtPiBsb29wX2JzIChuKzEpIChpKzEpO1xuICAgICAgICB8IF8gICAgLT4gYWRkX2JzIG47IGxvb3AgaVxuICAgICAgZW5kXG4gICAgYW5kIGFkZF9icyBuID0gZm9yIF9qID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJzsgZG9uZVxuICAgIGluXG4gICAgbG9vcCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4oKlxuUXVvdGluZyBjb21tYW5kcyBmb3IgZXhlY3V0aW9uIGJ5IGNtZC5leGUgaXMgZGlmZmljdWx0LlxuMS0gRWFjaCBhcmd1bWVudCBpcyBmaXJzdCBxdW90ZWQgdXNpbmcgdGhlIFwicXVvdGVcIiBmdW5jdGlvbiBhYm92ZSwgdG9cbiAgIHByb3RlY3QgaXQgYWdhaW5zdCB0aGUgcHJvY2Vzc2luZyBwZXJmb3JtZWQgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sXG4gICB0aGVuIGNtZC5leGUncyBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQgd2l0aCAnXicsIHVzaW5nXG4gICB0aGUgXCJxdW90ZV9jbWRcIiBmdW5jdGlvbiBiZWxvdy4gIEZvciBtb3JlIGRldGFpbHMsIHNlZVxuICAgaHR0cHM6Ly9ibG9ncy5tc2RuLm1pY3Jvc29mdC5jb20vdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS8yMDExLzA0LzIzXG4yLSBUaGUgY29tbWFuZCBhbmQgdGhlIHJlZGlyZWN0aW9uIGZpbGVzLCBpZiBhbnksIG11c3QgYmUgZG91YmxlLXF1b3RlZFxuICAgaW4gY2FzZSB0aGV5IGNvbnRhaW4gc3BhY2VzLiAgVGhpcyBxdW90aW5nIGlzIGludGVycHJldGVkIGJ5IGNtZC5leGUsXG4gICBub3QgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sIGhlbmNlIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmVcbiAgIGNhbm5vdCBiZSB1c2VkLiAgVGhlIHR3byBjaGFyYWN0ZXJzIHdlIGRvbid0IGtub3cgaG93IHRvIHF1b3RlXG4gICBpbnNpZGUgYSBkb3VibGUtcXVvdGVkIGNtZC5leGUgc3RyaW5nIGFyZSBkb3VibGUtcXVvdGUgYW5kIHBlcmNlbnQuXG4gICBXZSBqdXN0IGZhaWwgaWYgdGhlIGNvbW1hbmQgbmFtZSBvciB0aGUgcmVkaXJlY3Rpb24gZmlsZSBuYW1lc1xuICAgY29udGFpbiBhIGRvdWJsZSBxdW90ZSAobm90IGFsbG93ZWQgaW4gV2luZG93cyBmaWxlIG5hbWVzLCBhbnl3YXkpXG4gICBvciBhIHBlcmNlbnQuICBTZWUgZnVuY3Rpb24gXCJxdW90ZV9jbWRfZmlsZW5hbWVcIiBiZWxvdy5cbjMtIFRoZSB3aG9sZSBzdHJpbmcgcGFzc2VkIHRvIFN5cy5jb21tYW5kIGlzIHRoZW4gZW5jbG9zZWQgaW4gZG91YmxlXG4gICBxdW90ZXMsIHdoaWNoIGFyZSBpbW1lZGlhdGVseSBzdHJpcHBlZCBieSBjbWQuZXhlLiAgT3RoZXJ3aXNlLFxuICAgc29tZSBvZiB0aGUgZG91YmxlIHF1b3RlcyBmcm9tIHN0ZXAgMiBhYm92ZSBjYW4gYmUgbWlzcGFyc2VkLlxuICAgU2VlIGUuZy4gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk5NjUxNDFcbiopXG4gIGxldCBxdW90ZV9jbWQgcyA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKyAyMCkgaW5cbiAgICBTdHJpbmcuaXRlclxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcoJyB8ICcpJyB8ICchJyB8ICdeJyB8ICclJyB8ICdcXFwiJyB8ICc8JyB8ICc+JyB8ICcmJyB8ICd8JyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ14nOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYylcbiAgICAgIHM7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgbGV0IHF1b3RlX2NtZF9maWxlbmFtZSBmID1cbiAgICBpZiBTdHJpbmcuY29udGFpbnMgZiAnXFxcIicgfHwgU3RyaW5nLmNvbnRhaW5zIGYgJyUnIHRoZW5cbiAgICAgIGZhaWx3aXRoIChcIkZpbGVuYW1lLnF1b3RlX2NvbW1hbmQ6IGJhZCBmaWxlIG5hbWUgXCIgXiBmKVxuICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIGYgJyAnIHRoZW5cbiAgICAgIFwiXFxcIlwiIF4gZiBeIFwiXFxcIlwiXG4gICAgZWxzZVxuICAgICAgZlxuICAoKiBSZWRpcmVjdGlvbnMgaW4gY21kLmV4ZTogc2VlIGh0dHBzOi8vc3M2NC5jb20vbnQvc3ludGF4LXJlZGlyZWN0aW9uLmh0bWxcbiAgICAgYW5kIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3ByZXZpb3VzLXZlcnNpb25zL3dpbmRvd3MvaXQtcHJvL3dpbmRvd3MteHAvYmI0OTA5ODIodj10ZWNobmV0LjEwKVxuICAqKVxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW1xuICAgICAgXCJcXFwiXCI7XG4gICAgICBxdW90ZV9jbWRfZmlsZW5hbWUgY21kO1xuICAgICAgXCIgXCI7XG4gICAgICBxdW90ZV9jbWQgKFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHF1b3RlIGFyZ3MpKTtcbiAgICAgIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICAobWF0Y2ggc3RkZXJyIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBcIiAyPiYxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICBcIlxcXCJcIlxuICAgIF1cbiAgbGV0IGhhc19kcml2ZSBzID1cbiAgICBsZXQgaXNfbGV0dGVyID0gZnVuY3Rpb25cbiAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBTdHJpbmcubGVuZ3RoIHMgPj0gMiAmJiBpc19sZXR0ZXIgcy5bMF0gJiYgcy5bMV0gPSAnOidcbiAgbGV0IGRyaXZlX2FuZF9wYXRoIHMgPVxuICAgIGlmIGhhc19kcml2ZSBzXG4gICAgdGhlbiAoU3RyaW5nLnN1YiBzIDAgMiwgU3RyaW5nLnN1YiBzIDIgKFN0cmluZy5sZW5ndGggcyAtIDIpKVxuICAgIGVsc2UgKFwiXCIsIHMpXG4gIGxldCBkaXJuYW1lIHMgPVxuICAgIGxldCAoZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGxldCBkaXIgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGggaW5cbiAgICBkcml2ZSBeIGRpclxuICBsZXQgYmFzZW5hbWUgcyA9XG4gICAgbGV0IChfZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgQ3lnd2luIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiL2Rldi9udWxsXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCIvXCJcbiAgbGV0IGlzX2Rpcl9zZXAgPSBXaW4zMi5pc19kaXJfc2VwXG4gIGxldCBpc19yZWxhdGl2ZSA9IFdpbjMyLmlzX3JlbGF0aXZlXG4gIGxldCBpc19pbXBsaWNpdCA9IFdpbjMyLmlzX2ltcGxpY2l0XG4gIGxldCBjaGVja19zdWZmaXggPSBXaW4zMi5jaGVja19zdWZmaXhcbiAgbGV0IGNob3Bfc3VmZml4X29wdCA9IFdpbjMyLmNob3Bfc3VmZml4X29wdFxuICBsZXQgdGVtcF9kaXJfbmFtZSA9IFVuaXgudGVtcF9kaXJfbmFtZVxuICBsZXQgcXVvdGUgPSBVbml4LnF1b3RlXG4gIGxldCBxdW90ZV9jb21tYW5kID0gVW5peC5xdW90ZV9jb21tYW5kXG4gIGxldCBiYXNlbmFtZSA9IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJuYW1lID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuZW5kXG5cbm1vZHVsZSBTeXNkZXBzID1cbiAgKHZhbCAobWF0Y2ggU3lzLm9zX3R5cGUgd2l0aFxuICAgICAgIHwgXCJXaW4zMlwiIC0+IChtb2R1bGUgV2luMzI6IFNZU0RFUFMpXG4gICAgICAgfCBcIkN5Z3dpblwiIC0+IChtb2R1bGUgQ3lnd2luOiBTWVNERVBTKVxuICAgICAgIHwgXyAtPiAobW9kdWxlIFVuaXg6IFNZU0RFUFMpKSlcblxuaW5jbHVkZSBTeXNkZXBzXG5cbmxldCBjb25jYXQgZGlybmFtZSBmaWxlbmFtZSA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBkaXJuYW1lIGluXG4gIGlmIGwgPSAwIHx8IGlzX2Rpcl9zZXAgZGlybmFtZSAobC0xKVxuICB0aGVuIGRpcm5hbWUgXiBmaWxlbmFtZVxuICBlbHNlIGRpcm5hbWUgXiBkaXJfc2VwIF4gZmlsZW5hbWVcblxubGV0IGNob3Bfc3VmZml4IG5hbWUgc3VmZiA9XG4gIGlmIGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmZcbiAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gU3RyaW5nLmxlbmd0aCBzdWZmKVxuICBlbHNlIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9zdWZmaXhcIlxuXG5sZXQgZXh0ZW5zaW9uX2xlbiBuYW1lID1cbiAgbGV0IHJlYyBjaGVjayBpMCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaTAgKGkgLSAxKVxuICAgIGVsc2UgU3RyaW5nLmxlbmd0aCBuYW1lIC0gaTBcbiAgaW5cbiAgbGV0IHJlYyBzZWFyY2hfZG90IGkgPVxuICAgIGlmIGkgPCAwIHx8IGlzX2Rpcl9zZXAgbmFtZSBpIHRoZW4gMFxuICAgIGVsc2UgaWYgbmFtZS5baV0gPSAnLicgdGhlbiBjaGVjayBpIChpIC0gMSlcbiAgICBlbHNlIHNlYXJjaF9kb3QgKGkgLSAxKVxuICBpblxuICBzZWFyY2hfZG90IChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5sZXQgZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIFwiXCIgZWxzZSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpIGxcblxubGV0IGNob3BfZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9leHRlbnNpb25cIlxuICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5sZXQgcmVtb3ZlX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBuYW1lIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpXG5cbmV4dGVybmFsIG9wZW5fZGVzYzogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuZXh0ZXJuYWwgY2xvc2VfZGVzYzogaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX2Nsb3NlXCJcblxubGV0IHBybmcgPSBsYXp5KFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcblxubGV0IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcm5kID0gKFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpKSBsYW5kIDB4RkZGRkZGIGluXG4gIGNvbmNhdCB0ZW1wX2RpciAoUHJpbnRmLnNwcmludGYgXCIlcyUwNnglc1wiIHByZWZpeCBybmQgc3VmZml4KVxuXG5cbmxldCBjdXJyZW50X3RlbXBfZGlyX25hbWUgPSByZWYgdGVtcF9kaXJfbmFtZVxuXG5sZXQgc2V0X3RlbXBfZGlyX25hbWUgcyA9IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSA6PSBzXG5sZXQgZ2V0X3RlbXBfZGlyX25hbWUgKCkgPSAhY3VycmVudF90ZW1wX2Rpcl9uYW1lXG5cbmxldCB0ZW1wX2ZpbGUgPyh0ZW1wX2RpciA9ICFjdXJyZW50X3RlbXBfZGlyX25hbWUpIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgY2xvc2VfZGVzYyhvcGVuX2Rlc2MgbmFtZSBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fZXhjbF0gMG82MDApO1xuICAgICAgbmFtZVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAxMDAwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuXG5sZXQgb3Blbl90ZW1wX2ZpbGUgPyhtb2RlID0gW09wZW5fdGV4dF0pID8ocGVybXMgPSAwbzYwMClcbiAgICAgICAgICAgICAgICAgICA/KHRlbXBfZGlyID0gIWN1cnJlbnRfdGVtcF9kaXJfbmFtZSkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICAobmFtZSxcbiAgICAgICBvcGVuX291dF9nZW4gKE9wZW5fd3Jvbmx5OjpPcGVuX2NyZWF0OjpPcGVuX2V4Y2w6Om1vZGUpIHBlcm1zIG5hbWUpXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENvbXBsZXggbnVtYmVycyAqKVxuXG50eXBlIHQgPSB7IHJlOiBmbG9hdDsgaW06IGZsb2F0IH1cblxubGV0IHplcm8gPSB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG5sZXQgb25lID0geyByZSA9IDEuMDsgaW0gPSAwLjAgfVxubGV0IGkgPSB7IHJlID0gMC4wOyBpbSA9IDEuMCB9XG5cbmxldCBhZGQgeCB5ID0geyByZSA9IHgucmUgKy4geS5yZTsgaW0gPSB4LmltICsuIHkuaW0gfVxuXG5sZXQgc3ViIHggeSA9IHsgcmUgPSB4LnJlIC0uIHkucmU7IGltID0geC5pbSAtLiB5LmltIH1cblxubGV0IG5lZyB4ID0geyByZSA9IC0uIHgucmU7IGltID0gLS4geC5pbSB9XG5cbmxldCBjb25qIHggPSB7IHJlID0geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IG11bCB4IHkgPSB7IHJlID0geC5yZSAqLiB5LnJlIC0uIHguaW0gKi4geS5pbTtcbiAgICAgICAgICAgICAgICBpbSA9IHgucmUgKi4geS5pbSArLiB4LmltICouIHkucmUgfVxuXG5sZXQgZGl2IHggeSA9XG4gIGlmIGFic19mbG9hdCB5LnJlID49IGFic19mbG9hdCB5LmltIHRoZW5cbiAgICBsZXQgciA9IHkuaW0gLy4geS5yZSBpblxuICAgIGxldCBkID0geS5yZSArLiByICouIHkuaW0gaW5cbiAgICB7IHJlID0gKHgucmUgKy4gciAqLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAoeC5pbSAtLiByICouIHgucmUpIC8uIGQgfVxuICBlbHNlXG4gICAgbGV0IHIgPSB5LnJlIC8uIHkuaW0gaW5cbiAgICBsZXQgZCA9IHkuaW0gKy4gciAqLiB5LnJlIGluXG4gICAgeyByZSA9IChyICouIHgucmUgKy4geC5pbSkgLy4gZDtcbiAgICAgIGltID0gKHIgKi4geC5pbSAtLiB4LnJlKSAvLiBkIH1cblxubGV0IGludiB4ID0gZGl2IG9uZSB4XG5cbmxldCBub3JtMiB4ID0geC5yZSAqLiB4LnJlICsuIHguaW0gKi4geC5pbVxuXG5sZXQgbm9ybSB4ID1cbiAgKCogV2F0Y2ggb3V0IGZvciBvdmVyZmxvdyBpbiBjb21wdXRpbmcgcmVeMiArIGltXjIgKilcbiAgbGV0IHIgPSBhYnNfZmxvYXQgeC5yZSBhbmQgaSA9IGFic19mbG9hdCB4LmltIGluXG4gIGlmIHIgPSAwLjAgdGhlbiBpXG4gIGVsc2UgaWYgaSA9IDAuMCB0aGVuIHJcbiAgZWxzZSBpZiByID49IGkgdGhlblxuICAgIGxldCBxID0gaSAvLiByIGluIHIgKi4gc3FydCgxLjAgKy4gcSAqLiBxKVxuICBlbHNlXG4gICAgbGV0IHEgPSByIC8uIGkgaW4gaSAqLiBzcXJ0KDEuMCArLiBxICouIHEpXG5cbmxldCBhcmcgeCA9IGF0YW4yIHguaW0geC5yZVxuXG5sZXQgcG9sYXIgbiBhID0geyByZSA9IGNvcyBhICouIG47IGltID0gc2luIGEgKi4gbiB9XG5cbmxldCBzcXJ0IHggPVxuICBpZiB4LnJlID0gMC4wICYmIHguaW0gPSAwLjAgdGhlbiB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGFic19mbG9hdCB4LnJlIGFuZCBpID0gYWJzX2Zsb2F0IHguaW0gaW5cbiAgICBsZXQgdyA9XG4gICAgICBpZiByID49IGkgdGhlbiBiZWdpblxuICAgICAgICBsZXQgcSA9IGkgLy4gciBpblxuICAgICAgICBzcXJ0KHIpICouIHNxcnQoMC41ICouICgxLjAgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgcSA9IHIgLy4gaSBpblxuICAgICAgICBzcXJ0KGkpICouIHNxcnQoMC41ICouIChxICsuIHNxcnQoMS4wICsuIHEgKi4gcSkpKVxuICAgICAgZW5kIGluXG4gICAgaWYgeC5yZSA+PSAwLjBcbiAgICB0aGVuIHsgcmUgPSB3OyAgaW0gPSAwLjUgKi4geC5pbSAvLiB3IH1cbiAgICBlbHNlIHsgcmUgPSAwLjUgKi4gaSAvLiB3OyAgaW0gPSBpZiB4LmltID49IDAuMCB0aGVuIHcgZWxzZSAtLiB3IH1cbiAgZW5kXG5cbmxldCBleHAgeCA9XG4gIGxldCBlID0gZXhwIHgucmUgaW4geyByZSA9IGUgKi4gY29zIHguaW07IGltID0gZSAqLiBzaW4geC5pbSB9XG5cbmxldCBsb2cgeCA9IHsgcmUgPSBsb2cgKG5vcm0geCk7IGltID0gYXRhbjIgeC5pbSB4LnJlIH1cblxubGV0IHBvdyB4IHkgPSBleHAgKG11bCB5IChsb2cgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBhZGRpbmcgcG9zaXRpb24uICopXG50eXBlIHBhZHR5ID1cbiAgfCBMZWZ0ICAgKCogVGV4dCBpcyBsZWZ0IGp1c3RpZmllZCAoJy0nIG9wdGlvbikuICAgICAgICAgICAgICAgKilcbiAgfCBSaWdodCAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgKG5vICctJyBvcHRpb24pLiAgICAgICAgICAgKilcbiAgfCBaZXJvcyAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgYnkgemVyb3MgKHNlZSAnMCcgb3B0aW9uKS4gKilcblxuKCoqKilcblxuKCogSW50ZWdlciBjb252ZXJzaW9uLiAqKVxudHlwZSBpbnRfY29udiA9XG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgICAgICAgICgqICAlZCB8ICUrZCB8ICUgZCAgKilcbiAgfCBJbnRfaSB8IEludF9waSB8IEludF9zaSAgICAgICAgKCogICVpIHwgJStpIHwgJSBpICAqKVxuICB8IEludF94IHwgSW50X0N4ICAgICAgICAgICAgICAgICAoKiAgJXggfCAlI3ggICAgICAgICopXG4gIHwgSW50X1ggfCBJbnRfQ1ggICAgICAgICAgICAgICAgICgqICAlWCB8ICUjWCAgICAgICAgKilcbiAgfCBJbnRfbyB8IEludF9DbyAgICAgICAgICAgICAgICAgKCogICVvIHwgJSNvICAgICAgICAqKVxuICB8IEludF91ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJXUgICAgICAgICAgICAgICopXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1ICAgICAgICgqICAlI2QgfCAlI2kgfCAlI3UgKilcblxuKCogRmxvYXQgY29udmVyc2lvbi4gKilcbnR5cGUgZmxvYXRfZmxhZ19jb252ID1cbiAgfCBGbG9hdF9mbGFnXyAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3AgICAgICAgICAgICAgICAgICAgKCogJStbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19zICAgICAgICAgICAgICAgICAgICgqICUgW2ZlRWdHRmhIXSAqKVxudHlwZSBmbG9hdF9raW5kX2NvbnYgPVxuICB8IEZsb2F0X2YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWYgfCAlK2YgfCAlIGYgICopXG4gIHwgRmxvYXRfZSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZSB8ICUrZSB8ICUgZSAgKilcbiAgfCBGbG9hdF9FICAgICAgICAgICAgICAgICAgICAgICAgKCogICVFIHwgJStFIHwgJSBFICAqKVxuICB8IEZsb2F0X2cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWcgfCAlK2cgfCAlIGcgICopXG4gIHwgRmxvYXRfRyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRyB8ICUrRyB8ICUgRyAgKilcbiAgfCBGbG9hdF9GICAgICAgICAgICAgICAgICAgICAgICAgKCogICVGIHwgJStGIHwgJSBGICAqKVxuICB8IEZsb2F0X2ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWggfCAlK2ggfCAlIGggICopXG4gIHwgRmxvYXRfSCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlSCB8ICUrSCB8ICUgSCAgKilcbiAgfCBGbG9hdF9DRiAgICAgICAgICAgICAgICAgICAgICAgKCogICUjRnwgJSsjRnwgJSAjRiAqKVxudHlwZSBmbG9hdF9jb252ID0gZmxvYXRfZmxhZ19jb252ICogZmxvYXRfa2luZF9jb252XG5cbigqKiopXG5cbigqIENoYXIgc2V0cyAoc2VlICVbLi4uXSkgYXJlIGJpdG1hcHMgaW1wbGVtZW50ZWQgYXMgMzItY2hhciBzdHJpbmdzLiAqKVxudHlwZSBjaGFyX3NldCA9IHN0cmluZ1xuXG4oKioqKVxuXG4oKiBDb3VudGVyIHVzZWQgaW4gU2NhbmYuICopXG50eXBlIGNvdW50ZXIgPVxuICB8IExpbmVfY291bnRlciAgICAgKCogICVsICAgICAgKilcbiAgfCBDaGFyX2NvdW50ZXIgICAgICgqICAlbiAgICAgICopXG4gIHwgVG9rZW5fY291bnRlciAgICAoKiAgJU4sICVMICAqKVxuXG4oKioqKVxuXG4oKiBQYWRkaW5nIG9mIHN0cmluZ3MgYW5kIG51bWJlcnMuICopXG50eXBlICgnYSwgJ2IpIHBhZGRpbmcgPVxuICAoKiBObyBwYWRkaW5nIChleDogXCIlZFwiKSAqKVxuICB8IE5vX3BhZGRpbmcgIDogKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBMaXRlcmFsIHBhZGRpbmcgKGV4OiBcIiU4ZFwiKSAqKVxuICB8IExpdF9wYWRkaW5nIDogcGFkdHkgKiBpbnQgLT4gKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBQYWRkaW5nIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKmRcIikgKilcbiAgfCBBcmdfcGFkZGluZyA6IHBhZHR5IC0+IChpbnQgLT4gJ2EsICdhKSBwYWRkaW5nXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2QsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcGFkZGluZyBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwYWRfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBQcmVjaXNpb24gb2YgZmxvYXRzIGFuZCAnMCctcGFkZGluZyBvZiBpbnRlZ2Vycy4gKilcbnR5cGUgKCdhLCAnYikgcHJlY2lzaW9uID1cbiAgKCogTm8gcHJlY2lzaW9uIChleDogXCIlZlwiKSAqKVxuICB8IE5vX3ByZWNpc2lvbiA6ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBMaXRlcmFsIHByZWNpc2lvbiAoZXg6IFwiJS4zZlwiKSAqKVxuICB8IExpdF9wcmVjaXNpb24gOiBpbnQgLT4gKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIFByZWNpc2lvbiBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKSAqKVxuICB8IEFyZ19wcmVjaXNpb24gOiAoaW50IC0+ICdhLCAnYSkgcHJlY2lzaW9uXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2YsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcHJlY2lzaW9uIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHByZWNfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBzZWUgdGhlIEN1c3RvbSBmb3JtYXQgY29tYmluYXRvciAqKVxudHlwZSAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5ID1cbiAgfCBDdXN0b21femVybyA6ICgnYSwgc3RyaW5nLCAnYSkgY3VzdG9tX2FyaXR5XG4gIHwgQ3VzdG9tX3N1Y2MgOiAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5IC0+XG4gICAgKCdhLCAneCAtPiAnYiwgJ3ggLT4gJ2MpIGN1c3RvbV9hcml0eVxuXG4oKioqKVxuXG4oKiAgICAgICAgUmVsYXRpb25hbCBmb3JtYXQgdHlwZXNcblxuSW4gdGhlIGZpcnN0IGZvcm1hdCtnYWR0cyBpbXBsZW1lbnRhdGlvbiwgdGhlIHR5cGUgZm9yICUoLi4lKSBpbiB0aGVcbmZtdCBHQURUIHdhcyBhcyBmb2xsb3dzOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICogKCdkMSwgJ3ExLCAnZDIsICdxMikgcmVhZGVyX25iX3VuaWZpZXIgKlxuICAgICgneCwgJ2IsICdjLCAnZDEsICdxMSwgJ3UpIGZtdHR5ICpcbiAgICAoJ3UsICdiLCAnYywgJ3ExLCAnZTEsICdmKSBmbXQgLT5cbiAgICAgICgoJ3gsICdiLCAnYywgJ2QyLCAncTIsICd1KSBmb3JtYXQ2IC0+ICd4LCAnYiwgJ2MsICdkMSwgJ2UxLCAnZikgZm10XG5cbk5vdGljZSB0aGF0IHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2YgcG9zaXRpb24gaW4gdGhlIGZvcm1hdCBhcmd1bWVudFxuKCgneCwgLi4sICd1KSBmb3JtYXQ2IC0+IC4uKSBpcyBlcXVhbCB0byB0aGUgJ3UgcGFyYW1ldGVyIGluICdhXG5wb3NpdGlvbiBpbiB0aGUgZm9ybWF0IHRhaWwgKCgndSwgLi4sICdmKSBmbXQpLiBUaGlzIG1lYW5zIHRoYXQgdGhlXG50eXBlIG9mIHRoZSBleHBlY3RlZCBmb3JtYXQgcGFyYW1ldGVyIGRlcGVuZHMgb2Ygd2hlcmUgdGhlICUoLi4uJSlcbmFyZSBpbiB0aGUgZm9ybWF0IHN0cmluZzpcblxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpXCJcbiAgLSA6ICh1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiB1bml0XG4gID0gPGZ1bj5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKSVkXCJcbiAgLSA6IChpbnQgLT4gdW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCBpbnQgLT4gdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IGludCAtPiB1bml0XG4gID0gPGZ1bj5cblxuT24gdGhlIGNvbnRyYXJ5LCB0aGUgbGVnYWN5IHR5cGVyIGdpdmVzIGEgY2xldmVyIHR5cGUgdGhhdCBkb2VzIG5vdFxuZGVwZW5kIG9uIHRoZSBwb3NpdGlvbiBvZiAlKC4uJSkgaW4gdGhlIGZvcm1hdCBzdHJpbmcuIEZvciBleGFtcGxlLFxuJSglKSB3aWxsIGhhdmUgdGhlIHBvbHltb3JwaGljIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpOiBpdCBjYW5cbmJlIGNvbmNhdGVuYXRlZCB0byBhbnkgZm9ybWF0IHR5cGUsIGFuZCBvbmx5IGVuZm9yY2VzIHRoZSBjb25zdHJhaW50XG50aGF0IGl0cyAnYSBhbmQgJ2YgcGFyYW1ldGVycyBhcmUgZXF1YWwgKG5vIGZvcm1hdCBhcmd1bWVudHMpIGFuZCAnZFxuYW5kICdlIGFyZSBlcXVhbCAobm8gcmVhZGVyIGFyZ3VtZW50KS5cblxuVGhlIHdlYWtlbmluZyBvZiB0aGlzIHBhcmFtZXRlciB0eXBlIGluIHRoZSBHQURUIHZlcnNpb24gYnJva2UgdXNlclxuY29kZSAoaW4gZmFjdCBpdCBlc3NlbnRpYWxseSBtYWRlICUoLi4uJSkgdW51c2FibGUgZXhjZXB0IGF0IHRoZSBsYXN0XG5wb3NpdGlvbiBvZiBhIGZvcm1hdCkuIEluIHBhcnRpY3VsYXIsIHRoZSBmb2xsb3dpbmcgd291bGQgbm90IHdvcmtcbmFueW1vcmU6XG5cbiAgZnVuIHNlcCAtPlxuICAgIEZvcm1hdC5wcmludGYgXCJmb28lKCUpYmFyJSglKWJhelwiIHNlcCBzZXBcblxuQXMgdGhlIHR5cGUtY2hlY2tlciB3b3VsZCByZXF1aXJlIHR3byAqaW5jb21wYXRpYmxlKiB0eXBlcyBmb3IgdGhlICUoJSlcbmluIGRpZmZlcmVudCBwb3NpdGlvbnMuXG5cblRoZSBzb2x1dGlvbiB0byByZWdhaW4gYSBnZW5lcmFsIHR5cGUgZm9yICUoLi4lKSBpcyB0byBnZW5lcmFsaXplIHRoaXNcbnRlY2huaXF1ZSwgbm90IG9ubHkgb24gdGhlICdkLCAnZSBwYXJhbWV0ZXJzLCBidXQgb24gYWxsIHNpeFxucGFyYW1ldGVycyBvZiBhIGZvcm1hdDogd2UgaW50cm9kdWNlIGEgXCJyZWxhdGlvbmFsXCIgdHlwZVxuICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxud2hvc2UgdmFsdWVzIGFyZSBwcm9vZnMgdGhhdCAoJ2ExLCAuLiwgJ2YxKSBhbmQgKCdhMiwgLi4sICdmMikgbW9yYWxseVxuY29ycmVzcG9uZCB0byB0aGUgc2FtZSBmb3JtYXQgdHlwZTogJ2ExIGlzIG9idGFpbmVkIGZyb20gJ2YxLCdiMSwnYzFcbmluIHRoZSBleGFjdCBzYW1lIHdheSB0aGF0ICdhMiBpcyBvYnRhaW5lZCBmcm9tICdmMiwnYjIsJ2MyLCBldGMuXG5cbkZvciBleGFtcGxlLCB0aGUgcmVsYXRpb24gYmV0d2VlbiB0d28gZm9ybWF0IHR5cGVzIGJlZ2lubmluZyB3aXRoIGEgQ2hhclxucGFyYW1ldGVyIGlzIGFzIGZvbGxvd3M6XG5cbnwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5JbiB0aGUgZ2VuZXJhbCBjYXNlLCB0aGUgdGVybSBzdHJ1Y3R1cmUgb2YgZm10dHlfcmVsIGlzIChhbG1vc3RbMV0pXG5pc29tb3JwaGljIHRvIHRoZSBmbXR0eSBvZiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb246IGV2ZXJ5XG5jb25zdHJ1Y3RvciBpcyByZS1yZWFkIHdpdGggYSBiaW5hcnksIHJlbGF0aW9uYWwgdHlwZSwgaW5zdGVhZCBvZiB0aGVcbnByZXZpb3VzIHVuYXJ5IHR5cGluZy4gZm10dHkgY2FuIHRoZW4gYmUgcmUtZGVmaW5lZCBhcyB0aGUgZGlhZ29uYWwgb2ZcbmZtdHR5X3JlbDpcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuXG5PbmNlIHdlIGhhdmUgdGhpcyBmbXR0eV9yZWwgdHlwZSBpbiBwbGFjZSwgd2UgY2FuIGdpdmUgdGhlIG1vcmVcbmdlbmVyYWwgdHlwZSB0byAlKC4uLiUpOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuV2UgYWNjZXB0IGFueSBmb3JtYXQgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2KSAodGhpcyBpc1xuY29tcGxldGVseSB1bnJlbGF0ZWQgdG8gdGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQgZm9ybWF0KSwgYnV0IGFsc29cbnJlcXVpcmUgYSBwcm9vZiB0aGF0IHRoaXMgZm9ybWF0IGlzIGluIHJlbGF0aW9uIHRvIGFub3RoZXIgZm9ybWF0IHRoYXRcbmlzIGNvbmNhdGVuYWJsZSB0byB0aGUgZm9ybWF0IHRhaWwuIFdoZW4gZXhlY3V0aW5nIGEgJSguLi4lKSBmb3JtYXRcbihpbiBjYW1saW50ZXJuYWxGb3JtYXQubWw6bWFrZV9wcmludGYgb3Igc2NhbmYubWw6bWFrZV9zY2FuZiksIHdlXG50cmFuc3R5cGUgdGhlIGZvcm1hdCBhbG9uZyB0aGlzIHJlbGF0aW9uIHVzaW5nIHRoZSAncmVjYXN0JyBmdW5jdGlvblxudG8gdHJhbnNwb3NlIGJldHdlZW4gcmVsYXRlZCBmb3JtYXQgdHlwZXMuXG5cbiAgdmFsIHJlY2FzdCA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxKSBmbXRcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdFxuXG5OT1RFIFsxXTogdGhlIHR5cGluZyBvZiBGb3JtYXRfc3Vic3RfdHkgcmVxdWlyZXMgbm90IG9uZSBmb3JtYXQgdHlwZSwgYnV0XG50d28sIG9uZSB0byBlc3RhYmxpc2ggdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0IGFyZ3VtZW50IGFuZCB0aGVcbmZpcnN0IHNpeCBwYXJhbWV0ZXJzLCBhbmQgdGhlIG90aGVyIGZvciB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXRcbmFyZ3VtZW50IGFuZCB0aGUgbGFzdCBzaXggcGFyYW1ldGVycy5cblxufCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbldoZW4gd2UgZ2VuZXJhdGUgYSBmb3JtYXQgQVNULCB3ZSBnZW5lcmF0ZSBleGFjdGx5IHRoZSBzYW1lIHdpdG5lc3NcbmZvciBib3RoIHJlbGF0aW9ucywgYW5kIHRoZSB3aXRuZXNzLWNvbnZlcnNpb24gZnVuY3Rpb25zIGluXG5jYW1saW50ZXJuYWxGb3JtYXQgZG8gcmVseSBvbiB0aGlzIGludmFyaWFudC4gRm9yIGV4YW1wbGUsIHRoZVxuZnVuY3Rpb24gdGhhdCBwcm92ZXMgdGhhdCB0aGUgcmVsYXRpb24gaXMgdHJhbnNpdGl2ZVxuXG4gIHZhbCB0cmFucyA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG5cbmRvZXMgYXNzdW1lIHRoYXQgdGhlIHR3byBpbnB1dHMgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHRlcm0gc3RydWN0dXJlXG4oYW5kIGlzIG9ubHkgZXZlcnkgdXNlZCBmb3IgYXJndW1lbnQgd2l0bmVzc2VzIG9mIHRoZVxuRm9ybWF0X3N1YnN0X3R5IGNvbnN0cnVjdG9yKS5cbiopXG5cbigqIFR5cGUgb2YgYSBibG9jayB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggICAoKiBIb3Jpem9udGFsIGJsb2NrIG5vIGxpbmUgYnJlYWtpbmcgKilcbiAgfCBQcF92Ym94ICAgKCogVmVydGljYWwgYmxvY2sgZWFjaCBicmVhayBsZWFkcyB0byBhIG5ldyBsaW5lICopXG4gIHwgUHBfaHZib3ggICgqIEhvcml6b250YWwtdmVydGljYWwgYmxvY2s6IHNhbWUgYXMgdmJveCwgZXhjZXB0IGlmIHRoaXMgYmxvY2tcbiAgICAgICAgICAgICAgICAgaXMgc21hbGwgZW5vdWdoIHRvIGZpdCBvbiBhIHNpbmdsZSBsaW5lICopXG4gIHwgUHBfaG92Ym94ICgqIEhvcml6b250YWwgb3IgVmVydGljYWwgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrICopXG4gIHwgUHBfYm94ICAgICgqIEhvcml6b250YWwgb3IgSW5kZW50IGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jaywgb3JcbiAgICAgICAgICAgICAgICAgd2hlbiBpdCBsZWFkcyB0byBhIG5ldyBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudCBsaW5lICopXG4gIHwgUHBfZml0cyAgICgqIEludGVybmFsIHVzYWdlOiB3aGVuIGEgYmxvY2sgZml0cyBvbiBhIHNpbmdsZSBsaW5lICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGZvcm1hdHRpbmdfbGl0ID1cbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF0gICAqKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAfSAgICopXG4gIHwgQnJlYWsgb2Ygc3RyaW5nICogaW50ICogaW50ICAgICAgICAgICgqIEAsIHwgQCAgfCBAOyB8IEA7PD4gKilcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQD8gICAqKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXFxuICAqKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBALiAgICopXG4gIHwgTWFnaWNfc2l6ZSBvZiBzdHJpbmcgKiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA8bj4gKilcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQEAgICAqKVxuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAJSUgICopXG4gIHwgU2Nhbl9pbmRpYyBvZiBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBYICAgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuID1cbiAgfCBPcGVuX3RhZyA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQHsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuICB8IE9wZW5fYm94IDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAWyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IHR5cGUgZWxlbWVudHMuICopXG4oKiBJbiBwYXJ0aWN1bGFyIHVzZWQgdG8gcmVwcmVzZW50ICUoLi4uJSkgYW5kICV7Li4uJX0gY29udGVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcbmFuZCAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsID1cbiAgfCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBTdHJpbmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChzdHJpbmcgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBzdHJpbmcgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVkICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDMyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDMyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50MzIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgTmF0aXZlaW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAobmF0aXZlaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgbmF0aXZlaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDY0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDY0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50NjQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgRmxvYXRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVmICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoZmxvYXQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBmbG9hdCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBCb29sX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChib29sIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgYm9vbCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEZvcm1hdF9hcmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcbiAgfCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9ycy4gKilcbiAgfCBBbHBoYV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICd4IC0+ICdjMSkgLT4gJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICd4IC0+ICdjMikgLT4gJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgVGhldGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAnYzEpIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAnYzIpIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEFueV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVXNlZCBmb3IgY3VzdG9tIGZvcm1hdHMgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgUmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEVuZF9vZl9mbXR0eSA6XG4gICAgICAoJ2YxLCAnYjEsICdjMSwgJ2QxLCAnZDEsICdmMSxcbiAgICAgICAnZjIsICdiMiwgJ2MyLCAnZDIsICdkMiwgJ2YyKSBmbXR0eV9yZWxcblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgZWxlbWVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCA9XG4gIHwgQ2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50MzIgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBOYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbltkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIG5hdGl2ZWludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50NjQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICAgICAgZmxvYXRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGZsb2F0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtiQl0gKilcbiAgICAgICgneCwgYm9vbCAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsdXNoIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IFN0cmluZ19saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGFiYyAqKVxuICAgICAgc3RyaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2hhcl9saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogeCAqKVxuICAgICAgY2hhciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgRm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IEFscGhhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ3ggLT4gJ2MpIC0+ICd4IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFRoZXRhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ2MpIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcjogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgZm9ybWF0dGluZ19saXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXR0aW5nX2dlbiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgICgnYTEsICdiLCAnYywgJ2QxLCAnZTEsICdmMSkgZm9ybWF0dGluZ19nZW4gKlxuICAgICAgKCdmMSwgJ2IsICdjLCAnZTEsICdlMiwgJ2YyKSBmbXQgLT4gKCdhMSwgJ2IsICdjLCAnZDEsICdlMiwgJ2YyKSBmbXRcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4IC0+ICdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVsuLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChzdHJpbmcgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtubE5MXSAqKVxuICAgICAgY291bnRlciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGludCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IElnbm9yZWRfcGFyYW0gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgaWdub3JlZCAqICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEN1c3RvbSBwcmludGluZyBmb3JtYXQgKFBSIzY0NTIsIEdQUiMxNDApXG5cbiAgICAgV2UgaW5jbHVkZSBhIHR5cGUgQ3VzdG9tIG9mIFwiY3VzdG9tIGNvbnZlcnRlcnNcIiwgd2hlcmUgYW5cbiAgICAgYXJiaXRyYXJ5IGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgb25lIG9yIG1vcmVcbiAgICAgYXJndW1lbnRzLiBUaGVyZSBpcyBubyBzeW50YXggZm9yIGN1c3RvbSBjb252ZXJ0ZXJzLCBpdCBpcyBvbmx5XG4gICAgIGludGVuZGVkIGZvciBjdXN0b20gcHJvY2Vzc29ycyB0aGF0IHdpc2ggdG8gcmVseSBvbiB0aGVcbiAgICAgc3RkbGliLWRlZmluZWQgZm9ybWF0IEdBRFRzLlxuXG4gICAgIEZvciBpbnN0YW5jZSBhIHByZS1wcm9jZXNzb3IgY291bGQgY2hvb3NlIHRvIGludGVycHJldCBzdHJpbmdzXG4gICAgIHByZWZpeGVkIHdpdGggW1wiIVwiXSBhcyBmb3JtYXQgc3RyaW5ncyB3aGVyZSBbJXt7IC4uLiB9fV0gaXNcbiAgICAgYSBzcGVjaWFsIGZvcm0gdG8gcGFzcyBhIHRvX3N0cmluZyBmdW5jdGlvbiwgc28gdGhhdCBvbmUgY291bGRcbiAgICAgd3JpdGU6XG5cbiAgICAge1tcbiAgICAgICB0eXBlIHQgPSB7IHggOiBpbnQ7IHkgOiBpbnQgfVxuXG4gICAgICAgbGV0IHN0cmluZ19vZl90IHQgPSBQcmludGYuc3ByaW50ZiBcInsgeCA9ICVkOyB5ID0gJWQgfVwiIHQueCB0LnlcblxuICAgICAgIFByaW50Zi5wcmludGYgIVwidCA9ICV7e3N0cmluZ19vZl90fX1cIiB7IHggPSA0MjsgeSA9IDQyIH1cbiAgICAgXX1cbiAgKilcbiAgfCBDdXN0b20gOlxuICAgICAgKCdhLCAneCwgJ3kpIGN1c3RvbV9hcml0eSAqICh1bml0IC0+ICd4KSAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBlbmQgb2YgYSBmb3JtYXQgc3BlY2lmaWNhdGlvbiAqKVxuICB8IEVuZF9vZl9mb3JtYXQgOlxuICAgICAgICAoJ2YsICdiLCAnYywgJ2UsICdlLCAnZikgZm10XG5cbigqKiopXG5cbigqIFR5cGUgZm9yIGlnbm9yZWQgcGFyYW1ldGVycyAoc2VlIFwiJV9cIikuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWQgPVxuICB8IElnbm9yZWRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9zICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9TICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX25kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2YgKilcbiAgICAgIHBhZF9vcHRpb24gKiBwcmVjX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfYm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQiAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfey4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8oLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3JlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgKilcbiAgICAgICgnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1suLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1tubE5MXSAqKVxuICAgICAgY291bnRlciAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG5cbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gIEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ICogc3RyaW5nXG5cbmxldCByZWMgZXJhc2VfcmVsIDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gIChhLCBiLCBjLCBkLCBlLCBmLFxuICAgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eVxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgX3R5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkxLCBlcmFzZV9yZWwgcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgdHlwZSBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXQgdHlwZXMuICopXG4oKiBVc2VkIGJ5OlxuICAgKiByZWFkZXJfbmJfdW5pZmllcl9vZl9mbXR0eSB0byBjb3VudCByZWFkZXJzIGluIGFuIGZtdHR5LFxuICAgKiBTY2FuZi50YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIHRvIGV4dHJhY3QgcmVhZGVycyBpbnNpZGUgJSguLi4lKSxcbiAgICogQ2FtbGludGVybmFsRm9ybWF0LmZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IHRvIGV4dHJhY3QgZm9ybWF0IHR5cGUuICopXG5cbigqXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10dHkgPVxuKilcbmxldCByZWMgY29uY2F0X2ZtdHR5IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gICAgICAgZzEgajEgZzIgajJcbiAgLlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZDEsIGExLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZDIsIGEyKSBmbXR0eV9yZWwgLT5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKGcxLCBiMSwgYzEsIGoxLCBlMSwgZjEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBlMiwgZjIpIGZtdHR5X3JlbCA9XG5mdW4gZm10dHkxIGZtdHR5MiAtPiBtYXRjaCBmbXR0eTEgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IGZtdHR5MlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdHMuICopXG5sZXQgcmVjIGNvbmNhdF9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10ID1cbmZ1biBmbXQxIGZtdDIgLT4gbWF0Y2ggZm10MSB3aXRoXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgU3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgQ2FtbF9zdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50NjQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IENoYXIgKHJlc3QpIC0+XG4gICAgQ2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBDYW1sX2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBCb29sIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBBbHBoYSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIFRoZXRhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDdXN0b20gKGFyaXR5LCBmLCByZXN0KSAtPlxuICAgIEN1c3RvbSAoYXJpdHksIGYsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFJlYWRlciByZXN0IC0+XG4gICAgUmVhZGVyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgRmx1c2ggKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBTdHJpbmdfbGl0ZXJhbCAoc3RyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBDaGFyX2xpdGVyYWwgICAoY2hyLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdF9hcmcgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZyAgIChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX25leHRfY2hhciAocmVzdCkgLT5cbiAgICBTY2FuX25leHRfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIElnbm9yZWRfcGFyYW0gKGlnbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGZtdDJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIEdhYnJpZWwgU2NoZXJlciwgcHJvamV0IFBhcnRvdXQsIElOUklBIFBhcmlzLVNhY2xheSAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ2FtbGludGVybmFsQXRvbWljIGlzIGEgZGVwZW5kZW5jeSBvZiBTdGRsaWIsIHNvIGl0IGlzIGNvbXBpbGVkIHdpdGhcbiAgIC1ub3BlcnZhc2l2ZXMuICopXG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogV2UgYXJlIG5vdCByZXVzaW5nICgnYSByZWYpIGRpcmVjdGx5IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJlYXNvblxuICAgYWJvdXQgYXRvbWljaXR5IGlmIHdlIHdpc2ggdG86IGV2ZW4gaW4gYSBzZXF1ZW50aWFsIGltcGxlbWVudGF0aW9uLFxuICAgc2lnbmFscyBhbmQgb3RoZXIgYXN5bmNocm9ub3VzIGNhbGxiYWNrcyBtaWdodCBicmVhayBhdG9taWNpdHkuICopXG50eXBlICdhIHQgPSB7bXV0YWJsZSB2OiAnYX1cblxubGV0IG1ha2UgdiA9IHt2fVxubGV0IGdldCByID0gci52XG5sZXQgc2V0IHIgdiA9IHIudiA8LSB2XG5cbigqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBzZXQgdG8gbmV2ZXIgYmUgaW5saW5lZDogRmxhbWJkYSBpc1xuICAgYWxsb3dlZCB0byBtb3ZlIHN1cnJvdW5kaW5nIGNvZGUgaW5zaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uLFxuICAgaW5jbHVkaW5nIGFsbG9jYXRpb25zLiAqKVxuXG5sZXRbQGlubGluZSBuZXZlcl0gZXhjaGFuZ2UgciB2ID1cbiAgKCogQkVHSU4gQVRPTUlDICopXG4gIGxldCBjdXIgPSByLnYgaW5cbiAgci52IDwtIHY7XG4gICgqIEVORCBBVE9NSUMgKilcbiAgY3VyXG5cbmxldFtAaW5saW5lIG5ldmVyXSBjb21wYXJlX2FuZF9zZXQgciBzZWVuIHYgPVxuICAoKiBCRUdJTiBBVE9NSUMgKilcbiAgbGV0IGN1ciA9IHIudiBpblxuICBpZiBjdXIgPT0gc2VlbiB0aGVuIChcbiAgICByLnYgPC0gdjtcbiAgICAoKiBFTkQgQVRPTUlDICopXG4gICAgdHJ1ZVxuICApIGVsc2VcbiAgICBmYWxzZVxuXG5sZXRbQGlubGluZSBuZXZlcl0gZmV0Y2hfYW5kX2FkZCByIG4gPVxuICAoKiBCRUdJTiBBVE9NSUMgKilcbiAgbGV0IGN1ciA9IHIudiBpblxuICByLnYgPC0gKGN1ciArIG4pO1xuICAoKiBFTkQgQVRPTUlDICopXG4gIGN1clxuXG5sZXQgaW5jciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgMSlcbmxldCBkZWNyIHIgPSBpZ25vcmUgKGZldGNoX2FuZF9hZGQgciAoLTEpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeGNlcHRpb25zICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgKCogZm9yIHJ1bnRpbWUvZmFpbF9uYXQuYyAqKVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuYXJyYXlfYm91bmRfZXJyb3JcIlxuICAgIChJbnZhbGlkX2FyZ3VtZW50IFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKVxuXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlXCJcbmV4dGVybmFsIHJhaXNlX25vdHJhY2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZV9ub3RyYWNlXCJcblxubGV0IGZhaWx3aXRoIHMgPSByYWlzZShGYWlsdXJlIHMpXG5sZXQgaW52YWxpZF9hcmcgcyA9IHJhaXNlKEludmFsaWRfYXJndW1lbnQgcylcblxuZXhjZXB0aW9uIEV4aXRcbmV4Y2VwdGlvbiBNYXRjaF9mYWlsdXJlID0gTWF0Y2hfZmFpbHVyZVxuZXhjZXB0aW9uIEFzc2VydF9mYWlsdXJlID0gQXNzZXJ0X2ZhaWx1cmVcbmV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50ID0gSW52YWxpZF9hcmd1bWVudFxuZXhjZXB0aW9uIEZhaWx1cmUgPSBGYWlsdXJlXG5leGNlcHRpb24gTm90X2ZvdW5kID0gTm90X2ZvdW5kXG5leGNlcHRpb24gT3V0X29mX21lbW9yeSA9IE91dF9vZl9tZW1vcnlcbmV4Y2VwdGlvbiBTdGFja19vdmVyZmxvdyA9IFN0YWNrX292ZXJmbG93XG5leGNlcHRpb24gU3lzX2Vycm9yID0gU3lzX2Vycm9yXG5leGNlcHRpb24gRW5kX29mX2ZpbGUgPSBFbmRfb2ZfZmlsZVxuZXhjZXB0aW9uIERpdmlzaW9uX2J5X3plcm8gPSBEaXZpc2lvbl9ieV96ZXJvXG5leGNlcHRpb24gU3lzX2Jsb2NrZWRfaW8gPSBTeXNfYmxvY2tlZF9pb1xuZXhjZXB0aW9uIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcblxuKCogQ29tcG9zaXRpb24gb3BlcmF0b3JzICopXG5cbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5leHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4oKiBEZWJ1Z2dpbmcgKilcblxuZXh0ZXJuYWwgX19MT0NfXyA6IHN0cmluZyA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19GSUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfRklMRVwiXG5leHRlcm5hbCBfX0xJTkVfXyA6IGludCA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcbmV4dGVybmFsIF9fUE9TX18gOiBzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsIF9fRlVOQ1RJT05fXyA6IHN0cmluZyA9IFwiJWxvY19GVU5DVElPTlwiXG5cbmV4dGVybmFsIF9fTE9DX09GX18gOiAnYSAtPiBzdHJpbmcgKiAnYSA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19MSU5FX09GX18gOiAnYSAtPiBpbnQgKiAnYSA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fUE9TX09GX18gOiAnYSAtPiAoc3RyaW5nICogaW50ICogaW50ICogaW50KSAqICdhID0gXCIlbG9jX1BPU1wiXG5cbigqIENvbXBhcmlzb25zICopXG5cbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG5sZXQgbWluIHggeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICE9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXFcIlxuXG4oKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCBvciApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuXG4oKiBJbnRlZ2VyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCAoIH4rICkgOiBpbnQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsICggbW9kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5cbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxuXG5leHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG5sZXQgbG5vdCB4ID0geCBseG9yICgtMSlcblxuZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5leHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuXG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcblxuKCogRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCAoIH4rLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoICsuICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsICggLS4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgKCAqLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCAoIC8uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsICggKiogKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFic19mbG9hdCA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZF9mbG9hdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbmV4dGVybmFsIGZsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBmbG9hdF9vZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRydW5jYXRlIDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBpbnRfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5sZXQgaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmVnX2luZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweEZGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5hbiA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GMF8wMF8wMF8wMF8wMF8wMF8wMUxcbmxldCBtYXhfZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRUZfRkZfRkZfRkZfRkZfRkZfRkZMXG5sZXQgbWluX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDAwXzEwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IGVwc2lsb25fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4M0NfQjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5cbnR5cGUgZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4oKiBTdHJpbmcgYW5kIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZXMgU3RyaW5nIGFuZCBCeXRlcyAqKVxuXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgc3RyaW5nX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCAoIF4gKSBzMSBzMiA9XG4gIGxldCBsMSA9IHN0cmluZ19sZW5ndGggczEgYW5kIGwyID0gc3RyaW5nX2xlbmd0aCBzMiBpblxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAobDEgKyBsMikgaW5cbiAgc3RyaW5nX2JsaXQgczEgMCBzIDAgbDE7XG4gIHN0cmluZ19ibGl0IHMyIDAgcyBsMSBsMjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIENoYXIgKilcblxuZXh0ZXJuYWwgaW50X29mX2NoYXIgOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaGFyX29mX2ludCA6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxubGV0IGNoYXJfb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJjaGFyX29mX2ludFwiIGVsc2UgdW5zYWZlX2NoYXJfb2ZfaW50IG5cblxuKCogVW5pdCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiBQYWlyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgZnN0IDogJ2EgKiAnYiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCBzbmQgOiAnYSAqICdiIC0+ICdiID0gXCIlZmllbGQxXCJcblxuKCogUmVmZXJlbmNlcyAqKVxuXG50eXBlICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcbmV4dGVybmFsIGluY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVpbmNyXCJcbmV4dGVybmFsIGRlY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVkZWNyXCJcblxuKCogUmVzdWx0IHR5cGUgKilcblxudHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcblxuKCogU3RyaW5nIGNvbnZlcnNpb24gZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxubGV0IHN0cmluZ19vZl9ib29sIGIgPVxuICBpZiBiIHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCJcbmxldCBib29sX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IF8gLT4gaW52YWxpZF9hcmcgXCJib29sX29mX3N0cmluZ1wiXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG4gIHwgXyAtPiBOb25lXG5cbmxldCBzdHJpbmdfb2ZfaW50IG4gPVxuICBmb3JtYXRfaW50IFwiJWRcIiBuXG5cbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IHByb3ZpZGUgdGhpcyBkaXJlY3RseSBhcyBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZS4gKilcbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5leHRlcm5hbCBzdHJpbmdfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcblxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IHN0cmluZ19sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsIHRoZW4gcyBeIFwiLlwiIGVsc2VcbiAgICBtYXRjaCBzdHJpbmdfZ2V0IHMgaSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgIHwgXyAtPiBzXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3RyaW5nX29mX2Zsb2F0IGYgPSB2YWxpZF9mbG9hdF9sZXhlbSAoZm9ybWF0X2Zsb2F0IFwiJS4xMmdcIiBmKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IHByb3ZpZGUgdGhpcyBkaXJlY3RseSBhcyBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZS4gKilcbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbigqIExpc3Qgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBMaXN0ICopXG5cbmxldCByZWMgKCBAICkgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gICAgW10gLT4gbDJcbiAgfCBoZCA6OiB0bCAtPiBoZCA6OiAodGwgQCBsMilcblxuKCogSS9PIG9wZXJhdGlvbnMgKilcblxudHlwZSBpbl9jaGFubmVsXG50eXBlIG91dF9jaGFubmVsXG5cbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9vdXQgOiBpbnQgLT4gb3V0X2NoYW5uZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFwiXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3JfaW4gOiBpbnQgLT4gaW5fY2hhbm5lbCA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cIlxuXG5sZXQgc3RkaW4gPSBvcGVuX2Rlc2NyaXB0b3JfaW4gMFxubGV0IHN0ZG91dCA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMVxubGV0IHN0ZGVyciA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMlxuXG4oKiBHZW5lcmFsIG91dHB1dCBmdW5jdGlvbnMgKilcblxudHlwZSBvcGVuX2ZsYWcgPVxuICAgIE9wZW5fcmRvbmx5IHwgT3Blbl93cm9ubHkgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXQgfCBPcGVuX3RydW5jIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnkgfCBPcGVuX3RleHQgfCBPcGVuX25vbmJsb2NrXG5cbmV4dGVybmFsIG9wZW5fZGVzYyA6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcblxuZXh0ZXJuYWwgc2V0X291dF9jaGFubmVsX25hbWU6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9vdXRfZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0KG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X291dF9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX291dCBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl90ZXh0XSAwbzY2NiBuYW1lXG5cbmxldCBvcGVuX291dF9iaW4gbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fYmluYXJ5XSAwbzY2NiBuYW1lXG5cbmV4dGVybmFsIGZsdXNoIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9mbHVzaFwiXG5cbmV4dGVybmFsIG91dF9jaGFubmVsc19saXN0IDogdW5pdCAtPiBvdXRfY2hhbm5lbCBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFwiXG5cbmxldCBmbHVzaF9hbGwgKCkgPVxuICBsZXQgcmVjIGl0ZXIgPSBmdW5jdGlvblxuICAgICAgW10gLT4gKClcbiAgICB8IGE6OmwgLT5cbiAgICAgICAgYmVnaW4gdHJ5XG4gICAgICAgICAgICBmbHVzaCBhXG4gICAgICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgICAgICAoKSAoKiBpZ25vcmUgY2hhbm5lbHMgY2xvc2VkIGR1cmluZyBhIHByZWNlZGluZyBmbHVzaC4gKilcbiAgICAgICAgZW5kO1xuICAgICAgICBpdGVyIGxcbiAgaW4gaXRlciAob3V0X2NoYW5uZWxzX2xpc3QgKCkpXG5cbmV4dGVybmFsIHVuc2FmZV9vdXRwdXQgOiBvdXRfY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0X2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9vdXRwdXRfc3RyaW5nIDogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0XCJcblxuZXh0ZXJuYWwgb3V0cHV0X2NoYXIgOiBvdXRfY2hhbm5lbCAtPiBjaGFyIC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuXG5sZXQgb3V0cHV0X2J5dGVzIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0IG9jIHMgMCAoYnl0ZXNfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXRfc3RyaW5nIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIDAgKHN0cmluZ19sZW5ndGggcylcblxubGV0IG91dHB1dCBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dFwiXG4gIGVsc2UgdW5zYWZlX291dHB1dCBvYyBzIG9mcyBsZW5cblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IHN0cmluZ19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0X3N1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyBvZnMgbGVuXG5cbmV4dGVybmFsIG91dHB1dF9ieXRlIDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuZXh0ZXJuYWwgb3V0cHV0X2JpbmFyeV9pbnQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfaW50XCJcblxuZXh0ZXJuYWwgbWFyc2hhbF90b19jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gdW5pdCBsaXN0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmxldCBvdXRwdXRfdmFsdWUgY2hhbiB2ID0gbWFyc2hhbF90b19jaGFubmVsIGNoYW4gdiBbXVxuXG5leHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XCJcbmV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX291dFwiXG5leHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX291dF9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9vdXQgb2MgPSBmbHVzaCBvYzsgY2xvc2Vfb3V0X2NoYW5uZWwgb2NcbmxldCBjbG9zZV9vdXRfbm9lcnIgb2MgPVxuICAodHJ5IGZsdXNoIG9jIHdpdGggXyAtPiAoKSk7XG4gICh0cnkgY2xvc2Vfb3V0X2NoYW5uZWwgb2Mgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX291dCA6IG91dF9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBHZW5lcmFsIGlucHV0IGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBzZXRfaW5fY2hhbm5lbF9uYW1lOiBpbl9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9pbl9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9pbihvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9pbl9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX2luIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fdGV4dF0gMCBuYW1lXG5cbmxldCBvcGVuX2luX2JpbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX2JpbmFyeV0gMCBuYW1lXG5cbmV4dGVybmFsIGlucHV0X2NoYXIgOiBpbl9jaGFubmVsIC0+IGNoYXIgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5cbmV4dGVybmFsIHVuc2FmZV9pbnB1dCA6IGluX2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9pbnB1dFwiXG5cbmxldCBpbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWMgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuICgpIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW4gaW5cbiAgICBpZiByID0gMFxuICAgIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyAob2ZzICsgcikgKGxlbiAtIHIpXG4gIGVuZFxuXG5sZXQgcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwicmVhbGx5X2lucHV0XCJcbiAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSBsZW4gaW5cbiAgcmVhbGx5X2lucHV0IGljIHMgMCBsZW47XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG5leHRlcm5hbCBpbnB1dF9zY2FuX2xpbmUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcIlxuXG5sZXQgaW5wdXRfbGluZSBjaGFuID1cbiAgbGV0IHJlYyBidWlsZF9yZXN1bHQgYnVmIHBvcyA9IGZ1bmN0aW9uXG4gICAgW10gLT4gYnVmXG4gIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBsZW4gPSBieXRlc19sZW5ndGggaGQgaW5cbiAgICAgIGJ5dGVzX2JsaXQgaGQgMCBidWYgKHBvcyAtIGxlbikgbGVuO1xuICAgICAgYnVpbGRfcmVzdWx0IGJ1ZiAocG9zIC0gbGVuKSB0bCBpblxuICBsZXQgcmVjIHNjYW4gYWNjdSBsZW4gPVxuICAgIGxldCBuID0gaW5wdXRfc2Nhbl9saW5lIGNoYW4gaW5cbiAgICBpZiBuID0gMCB0aGVuIGJlZ2luICAgICAgICAgICAgICAgICAgICgqIG4gPSAwOiB3ZSBhcmUgYXQgRU9GICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICAgIHwgXyAgLT4gYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gYWNjdVxuICAgIGVuZCBlbHNlIGlmIG4gPiAwIHRoZW4gYmVnaW4gICAgICAgICAgKCogbiA+IDA6IG5ld2xpbmUgZm91bmQgaW4gYnVmZmVyICopXG4gICAgICBsZXQgcmVzID0gYnl0ZXNfY3JlYXRlIChuIC0gMSkgaW5cbiAgICAgIGlnbm9yZSAodW5zYWZlX2lucHV0IGNoYW4gcmVzIDAgKG4gLSAxKSk7XG4gICAgICBpZ25vcmUgKGlucHV0X2NoYXIgY2hhbik7ICAgICAgICAgICAoKiBza2lwIHRoZSBuZXdsaW5lICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmVzXG4gICAgICB8ICBfIC0+IGxldCBsZW4gPSBsZW4gKyBuIC0gMSBpblxuICAgICAgICAgICAgICBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiAocmVzIDo6IGFjY3UpXG4gICAgZW5kIGVsc2UgYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAoKiBuIDwgMDogbmV3bGluZSBub3QgZm91bmQgKilcbiAgICAgIGxldCBiZWcgPSBieXRlc19jcmVhdGUgKC1uKSBpblxuICAgICAgaWdub3JlKHVuc2FmZV9pbnB1dCBjaGFuIGJlZyAwICgtbikpO1xuICAgICAgc2NhbiAoYmVnIDo6IGFjY3UpIChsZW4gLSBuKVxuICAgIGVuZFxuICBpbiBieXRlc191bnNhZmVfdG9fc3RyaW5nIChzY2FuIFtdIDApXG5cbmV4dGVybmFsIGlucHV0X2J5dGUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcbmV4dGVybmFsIGlucHV0X2JpbmFyeV9pbnQgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9pbnRcIlxuZXh0ZXJuYWwgaW5wdXRfdmFsdWUgOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5cIlxuZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX2luXCJcbmV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX2luX25vZXJyIGljID0gKHRyeSBjbG9zZV9pbiBpYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfaW4gOiBpbl9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgb3V0cHV0ICopXG5cbmxldCBwcmludF9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRvdXQgY1xubGV0IHByaW50X3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgc1xubGV0IHByaW50X2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3Rkb3V0IHNcbmxldCBwcmludF9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJpbnRfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmludF9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzOyBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxubGV0IHByaW50X25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGVycm9yICopXG5cbmxldCBwcmVycl9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRlcnIgY1xubGV0IHByZXJyX3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgc1xubGV0IHByZXJyX2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3RkZXJyIHNcbmxldCBwcmVycl9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJlcnJfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmVycl9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzOyBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxubGV0IHByZXJyX25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgaW5wdXQgKilcblxubGV0IHJlYWRfbGluZSAoKSA9IGZsdXNoIHN0ZG91dDsgaW5wdXRfbGluZSBzdGRpblxubGV0IHJlYWRfaW50ICgpID0gaW50X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2ludF9vcHQgKCkgPSBpbnRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0ICgpID0gZmxvYXRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXRfb3B0ICgpID0gZmxvYXRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcblxuKCogT3BlcmF0aW9ucyBvbiBsYXJnZSBmaWxlcyAqKVxuXG5tb2R1bGUgTGFyZ2VGaWxlID1cbiAgc3RydWN0XG4gICAgZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX291dF82NFwiXG4gICAgZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50NjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgICBleHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5fNjRcIlxuICAgIGV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX2luXzY0XCJcbiAgICBleHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgZW5kXG5cbigqIEZvcm1hdHMgKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAgPSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbiAgID0gRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm10XG4gICAgICAgICAgICAgICAqIHN0cmluZ1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnYywgJ2MsICdkKSBmb3JtYXQ2XG5cbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxuXG5sZXQgc3RyaW5nX29mX2Zvcm1hdCAoRm9ybWF0IChfZm10LCBzdHIpKSA9IHN0clxuXG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgKCBeXiApIChGb3JtYXQgKGZtdDEsIHN0cjEpKSAoRm9ybWF0IChmbXQyLCBzdHIyKSkgPVxuICBGb3JtYXQgKENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5jb25jYXRfZm10IGZtdDEgZm10MixcbiAgICAgICAgICBzdHIxIF4gXCIlLFwiIF4gc3RyMilcblxuKCogTWlzY2VsbGFuZW91cyAqKVxuXG5leHRlcm5hbCBzeXNfZXhpdCA6IGludCAtPiAnYSA9IFwiY2FtbF9zeXNfZXhpdFwiXG5cbmxldCBleGl0X2Z1bmN0aW9uID0gQ2FtbGludGVybmFsQXRvbWljLm1ha2UgZmx1c2hfYWxsXG5cbmxldCByZWMgYXRfZXhpdCBmID1cbiAgbGV0IG1vZHVsZSBBdG9taWMgPSBDYW1saW50ZXJuYWxBdG9taWMgaW5cbiAgKCogTVBSIzcyNTMsIE1QUiM3Nzk2OiBtYWtlIHN1cmUgXCJmXCIgaXMgZXhlY3V0ZWQgb25seSBvbmNlICopXG4gIGxldCBmX3lldF90b19ydW4gPSBBdG9taWMubWFrZSB0cnVlIGluXG4gIGxldCBvbGRfZXhpdCA9IEF0b21pYy5nZXQgZXhpdF9mdW5jdGlvbiBpblxuICBsZXQgbmV3X2V4aXQgKCkgPVxuICAgIGlmIEF0b21pYy5jb21wYXJlX2FuZF9zZXQgZl95ZXRfdG9fcnVuIHRydWUgZmFsc2UgdGhlbiBmICgpIDtcbiAgICBvbGRfZXhpdCAoKVxuICBpblxuICBsZXQgc3VjY2VzcyA9IEF0b21pYy5jb21wYXJlX2FuZF9zZXQgZXhpdF9mdW5jdGlvbiBvbGRfZXhpdCBuZXdfZXhpdCBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIGF0X2V4aXQgZlxuXG5sZXQgZG9fYXRfZXhpdCAoKSA9IChDYW1saW50ZXJuYWxBdG9taWMuZ2V0IGV4aXRfZnVuY3Rpb24pICgpXG5cbmxldCBleGl0IHJldGNvZGUgPVxuICBkb19hdF9leGl0ICgpO1xuICBzeXNfZXhpdCByZXRjb2RlXG5cbmxldCBfID0gcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIiBkb19hdF9leGl0XG5cbmV4dGVybmFsIG1ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21ham9yXCJcbmV4dGVybmFsIG5ha2VkX3BvaW50ZXJzX2NoZWNrZWQgOiB1bml0IC0+IGJvb2xcbiAgPSBcImNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWRcIlxubGV0ICgpID0gaWYgbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCAoKSB0aGVuIGF0X2V4aXQgbWFqb3JcblxuKCpNT0RVTEVfQUxJQVNFUyopXG5tb2R1bGUgQXJnICAgICAgICAgID0gQXJnXG5tb2R1bGUgQXJyYXkgICAgICAgID0gQXJyYXlcbm1vZHVsZSBBcnJheUxhYmVscyAgPSBBcnJheUxhYmVsc1xubW9kdWxlIEF0b21pYyAgICAgICA9IEF0b21pY1xubW9kdWxlIEJpZ2FycmF5ICAgICA9IEJpZ2FycmF5XG5tb2R1bGUgQm9vbCAgICAgICAgID0gQm9vbFxubW9kdWxlIEJ1ZmZlciAgICAgICA9IEJ1ZmZlclxubW9kdWxlIEJ5dGVzICAgICAgICA9IEJ5dGVzXG5tb2R1bGUgQnl0ZXNMYWJlbHMgID0gQnl0ZXNMYWJlbHNcbm1vZHVsZSBDYWxsYmFjayAgICAgPSBDYWxsYmFja1xubW9kdWxlIENoYXIgICAgICAgICA9IENoYXJcbm1vZHVsZSBDb21wbGV4ICAgICAgPSBDb21wbGV4XG5tb2R1bGUgRGlnZXN0ICAgICAgID0gRGlnZXN0XG5tb2R1bGUgRWl0aGVyICAgICAgID0gRWl0aGVyXG5tb2R1bGUgRXBoZW1lcm9uICAgID0gRXBoZW1lcm9uXG5tb2R1bGUgRmlsZW5hbWUgICAgID0gRmlsZW5hbWVcbm1vZHVsZSBGbG9hdCAgICAgICAgPSBGbG9hdFxubW9kdWxlIEZvcm1hdCAgICAgICA9IEZvcm1hdFxubW9kdWxlIEZ1biAgICAgICAgICA9IEZ1blxubW9kdWxlIEdjICAgICAgICAgICA9IEdjXG5tb2R1bGUgR2VubGV4ICAgICAgID0gR2VubGV4XG5tb2R1bGUgSGFzaHRibCAgICAgID0gSGFzaHRibFxubW9kdWxlIEluX2NoYW5uZWwgICA9IEluX2NoYW5uZWxcbm1vZHVsZSBJbnQgICAgICAgICAgPSBJbnRcbm1vZHVsZSBJbnQzMiAgICAgICAgPSBJbnQzMlxubW9kdWxlIEludDY0ICAgICAgICA9IEludDY0XG5tb2R1bGUgTGF6eSAgICAgICAgID0gTGF6eVxubW9kdWxlIExleGluZyAgICAgICA9IExleGluZ1xubW9kdWxlIExpc3QgICAgICAgICA9IExpc3Rcbm1vZHVsZSBMaXN0TGFiZWxzICAgPSBMaXN0TGFiZWxzXG5tb2R1bGUgTWFwICAgICAgICAgID0gTWFwXG5tb2R1bGUgTWFyc2hhbCAgICAgID0gTWFyc2hhbFxubW9kdWxlIE1vcmVMYWJlbHMgICA9IE1vcmVMYWJlbHNcbm1vZHVsZSBOYXRpdmVpbnQgICAgPSBOYXRpdmVpbnRcbm1vZHVsZSBPYmogICAgICAgICAgPSBPYmpcbm1vZHVsZSBPbyAgICAgICAgICAgPSBPb1xubW9kdWxlIE9wdGlvbiAgICAgICA9IE9wdGlvblxubW9kdWxlIE91dF9jaGFubmVsICA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGFyc2luZyAgICAgID0gUGFyc2luZ1xubW9kdWxlIFBlcnZhc2l2ZXMgICA9IFBlcnZhc2l2ZXNcbm1vZHVsZSBQcmludGV4YyAgICAgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiAgICAgICA9IFByaW50ZlxubW9kdWxlIFF1ZXVlICAgICAgICA9IFF1ZXVlXG5tb2R1bGUgUmFuZG9tICAgICAgID0gUmFuZG9tXG5tb2R1bGUgUmVzdWx0ICAgICAgID0gUmVzdWx0XG5tb2R1bGUgU2NhbmYgICAgICAgID0gU2NhbmZcbm1vZHVsZSBTZXEgICAgICAgICAgPSBTZXFcbm1vZHVsZSBTZXQgICAgICAgICAgPSBTZXRcbm1vZHVsZSBTdGFjayAgICAgICAgPSBTdGFja1xubW9kdWxlIFN0ZExhYmVscyAgICA9IFN0ZExhYmVsc1xubW9kdWxlIFN0cmVhbSAgICAgICA9IFN0cmVhbVxubW9kdWxlIFN0cmluZyAgICAgICA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ0xhYmVscyA9IFN0cmluZ0xhYmVsc1xubW9kdWxlIFN5cyAgICAgICAgICA9IFN5c1xubW9kdWxlIFVjaGFyICAgICAgICA9IFVjaGFyXG5tb2R1bGUgVW5pdCAgICAgICAgID0gVW5pdFxubW9kdWxlIFdlYWsgICAgICAgICA9IFdlYWtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIEplcmVtaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSmFuZSBTdHJlZXQgR3JvdXAgTExDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIEBkZXByZWNhdGVkIFVzZSB7IVN0ZGxpYn0gKilcblxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZVwiXG5leHRlcm5hbCByYWlzZV9ub3RyYWNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2Vfbm90cmFjZVwiXG5sZXQgaW52YWxpZF9hcmcgPSBpbnZhbGlkX2FyZ1xubGV0IGZhaWx3aXRoID0gZmFpbHdpdGhcbmV4Y2VwdGlvbiBFeGl0XG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmxldCBtaW4gPSBtaW5cbmxldCBtYXggPSBtYXhcbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICE9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXFcIlxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCAmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuICBbQEBvY2FtbC5kZXByZWNhdGVkIFwiVXNlICgmJikgaW5zdGVhZC5cIl1cbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmV4dGVybmFsICggb3IgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbiAgW0BAb2NhbWwuZGVwcmVjYXRlZCBcIlVzZSAofHwpIGluc3RlYWQuXCJdXG5leHRlcm5hbCBfX0xPQ19fIDogc3RyaW5nID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0ZJTEVfXyA6IHN0cmluZyA9IFwiJWxvY19GSUxFXCJcbmV4dGVybmFsIF9fTElORV9fIDogaW50ID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19NT0RVTEVfXyA6IHN0cmluZyA9IFwiJWxvY19NT0RVTEVcIlxuZXh0ZXJuYWwgX19QT1NfXyA6IHN0cmluZyAqIGludCAqIGludCAqIGludCA9IFwiJWxvY19QT1NcIlxuZXh0ZXJuYWwgX19MT0NfT0ZfXyA6ICdhIC0+IHN0cmluZyAqICdhID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0xJTkVfT0ZfXyA6ICdhIC0+IGludCAqICdhID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19QT1NfT0ZfXyA6ICdhIC0+IChzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQpICogJ2EgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5leHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCAoIH4rICkgOiBpbnQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsICggbW9kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5sZXQgYWJzID0gYWJzXG5sZXQgbWF4X2ludCA9IG1heF9pbnRcbmxldCBtaW5faW50ID0gbWluX2ludFxuZXh0ZXJuYWwgKCBsYW5kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCAoIGxvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCAoIGx4b3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcbmxldCBsbm90ID0gbG5vdFxuZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5leHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZXh0ZXJuYWwgKCB+LS4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgKCB+Ky4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCArLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCAoIC0uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsICggKi4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgKCAvLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCAoICoqICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFic19mbG9hdCA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZF9mbG9hdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbmV4dGVybmFsIGZsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBmbG9hdF9vZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRydW5jYXRlIDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBpbnRfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmxldCBpbmZpbml0eSA9IGluZmluaXR5XG5sZXQgbmVnX2luZmluaXR5ID0gbmVnX2luZmluaXR5XG5sZXQgbmFuID0gbmFuXG5sZXQgbWF4X2Zsb2F0ID0gbWF4X2Zsb2F0XG5sZXQgbWluX2Zsb2F0ID0gbWluX2Zsb2F0XG5sZXQgZXBzaWxvbl9mbG9hdCA9IGVwc2lsb25fZmxvYXRcbnR5cGUgbm9ucmVjIGZwY2xhc3MgPSBmcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5sZXQgKCBeICkgPSAoIF4gKVxuZXh0ZXJuYWwgaW50X29mX2NoYXIgOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmxldCBjaGFyX29mX2ludCA9IGNoYXJfb2ZfaW50XG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcbmxldCBzdHJpbmdfb2ZfYm9vbCA9IHN0cmluZ19vZl9ib29sXG5sZXQgYm9vbF9vZl9zdHJpbmcgPSBib29sX29mX3N0cmluZ1xubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCA9IGJvb2xfb2Zfc3RyaW5nX29wdFxubGV0IHN0cmluZ19vZl9pbnQgPSBzdHJpbmdfb2ZfaW50XG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcbmxldCBpbnRfb2Zfc3RyaW5nX29wdCA9IGludF9vZl9zdHJpbmdfb3B0XG5sZXQgc3RyaW5nX29mX2Zsb2F0ID0gc3RyaW5nX29mX2Zsb2F0XG5leHRlcm5hbCBmbG9hdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0ID0gZmxvYXRfb2Zfc3RyaW5nX29wdFxuZXh0ZXJuYWwgZnN0IDogJ2EgKiAnYiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCBzbmQgOiAnYSAqICdiIC0+ICdiID0gXCIlZmllbGQxXCJcbmxldCAoIEAgKSAgPSAoIEAgKVxudHlwZSBub25yZWMgaW5fY2hhbm5lbCA9IGluX2NoYW5uZWxcbnR5cGUgbm9ucmVjIG91dF9jaGFubmVsID0gb3V0X2NoYW5uZWxcbmxldCBzdGRpbiA9IHN0ZGluXG5sZXQgc3Rkb3V0ID0gc3Rkb3V0XG5sZXQgc3RkZXJyID0gc3RkZXJyXG5sZXQgcHJpbnRfY2hhciA9IHByaW50X2NoYXJcbmxldCBwcmludF9zdHJpbmcgPSBwcmludF9zdHJpbmdcbmxldCBwcmludF9ieXRlcyA9IHByaW50X2J5dGVzXG5sZXQgcHJpbnRfaW50ID0gcHJpbnRfaW50XG5sZXQgcHJpbnRfZmxvYXQgPSBwcmludF9mbG9hdFxubGV0IHByaW50X2VuZGxpbmUgPSBwcmludF9lbmRsaW5lXG5sZXQgcHJpbnRfbmV3bGluZSA9IHByaW50X25ld2xpbmVcbmxldCBwcmVycl9jaGFyID0gcHJlcnJfY2hhclxubGV0IHByZXJyX3N0cmluZyA9IHByZXJyX3N0cmluZ1xubGV0IHByZXJyX2J5dGVzID0gcHJlcnJfYnl0ZXNcbmxldCBwcmVycl9pbnQgPSBwcmVycl9pbnRcbmxldCBwcmVycl9mbG9hdCA9IHByZXJyX2Zsb2F0XG5sZXQgcHJlcnJfZW5kbGluZSA9IHByZXJyX2VuZGxpbmVcbmxldCBwcmVycl9uZXdsaW5lID0gcHJlcnJfbmV3bGluZVxubGV0IHJlYWRfbGluZSA9IHJlYWRfbGluZVxubGV0IHJlYWRfaW50ID0gcmVhZF9pbnRcbmxldCByZWFkX2ludF9vcHQgPSByZWFkX2ludF9vcHRcbmxldCByZWFkX2Zsb2F0ID0gcmVhZF9mbG9hdFxubGV0IHJlYWRfZmxvYXRfb3B0ID0gcmVhZF9mbG9hdF9vcHRcbnR5cGUgbm9ucmVjIG9wZW5fZmxhZyA9IG9wZW5fZmxhZyA9XG4gICAgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcbmxldCBvcGVuX291dCA9IG9wZW5fb3V0XG5sZXQgb3Blbl9vdXRfYmluID0gb3Blbl9vdXRfYmluXG5sZXQgb3Blbl9vdXRfZ2VuID0gb3Blbl9vdXRfZ2VuXG5sZXQgZmx1c2ggPSBmbHVzaFxubGV0IGZsdXNoX2FsbCA9IGZsdXNoX2FsbFxubGV0IG91dHB1dF9jaGFyID0gb3V0cHV0X2NoYXJcbmxldCBvdXRwdXRfc3RyaW5nID0gb3V0cHV0X3N0cmluZ1xubGV0IG91dHB1dF9ieXRlcyA9IG91dHB1dF9ieXRlc1xubGV0IG91dHB1dCA9IG91dHB1dFxubGV0IG91dHB1dF9zdWJzdHJpbmcgPSBvdXRwdXRfc3Vic3RyaW5nXG5sZXQgb3V0cHV0X2J5dGUgPSBvdXRwdXRfYnl0ZVxubGV0IG91dHB1dF9iaW5hcnlfaW50ID0gb3V0cHV0X2JpbmFyeV9pbnRcbmxldCBvdXRwdXRfdmFsdWUgPSBvdXRwdXRfdmFsdWVcbmxldCBzZWVrX291dCA9IHNlZWtfb3V0XG5sZXQgcG9zX291dCA9IHBvc19vdXRcbmxldCBvdXRfY2hhbm5lbF9sZW5ndGggPSBvdXRfY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZV9vdXQgPSBjbG9zZV9vdXRcbmxldCBjbG9zZV9vdXRfbm9lcnIgPSBjbG9zZV9vdXRfbm9lcnJcbmxldCBzZXRfYmluYXJ5X21vZGVfb3V0ID0gc2V0X2JpbmFyeV9tb2RlX291dFxubGV0IG9wZW5faW4gPSBvcGVuX2luXG5sZXQgb3Blbl9pbl9iaW4gPSBvcGVuX2luX2JpblxubGV0IG9wZW5faW5fZ2VuID0gb3Blbl9pbl9nZW5cbmxldCBpbnB1dF9jaGFyID0gaW5wdXRfY2hhclxubGV0IGlucHV0X2xpbmUgPSBpbnB1dF9saW5lXG5sZXQgaW5wdXQgPSBpbnB1dFxubGV0IHJlYWxseV9pbnB1dCA9IHJlYWxseV9pbnB1dFxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgPSByZWFsbHlfaW5wdXRfc3RyaW5nXG5sZXQgaW5wdXRfYnl0ZSA9IGlucHV0X2J5dGVcbmxldCBpbnB1dF9iaW5hcnlfaW50ID0gaW5wdXRfYmluYXJ5X2ludFxubGV0IGlucHV0X3ZhbHVlID0gaW5wdXRfdmFsdWVcbmxldCBzZWVrX2luID0gc2Vla19pblxubGV0IHBvc19pbiA9IHBvc19pblxubGV0IGluX2NoYW5uZWxfbGVuZ3RoID0gaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZV9pbiA9IGNsb3NlX2luXG5sZXQgY2xvc2VfaW5fbm9lcnIgPSBjbG9zZV9pbl9ub2VyclxubGV0IHNldF9iaW5hcnlfbW9kZV9pbiA9IHNldF9iaW5hcnlfbW9kZV9pblxubW9kdWxlIExhcmdlRmlsZSA9IExhcmdlRmlsZVxudHlwZSBub25yZWMgJ2EgcmVmID0gJ2EgcmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuZXh0ZXJuYWwgaW5jciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWluY3JcIlxuZXh0ZXJuYWwgZGVjciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWRlY3JcIlxudHlwZSBub25yZWMgKCdhLCdiKSByZXN1bHQgPSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdjLCAnYywgJ2QpIGZvcm1hdDZcbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxubGV0IHN0cmluZ19vZl9mb3JtYXQgPSBzdHJpbmdfb2ZfZm9ybWF0XG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSBcIiVpZGVudGl0eVwiXG5sZXQgKCBeXiApID0gKCBeXiApXG5sZXQgZXhpdCA9IGV4aXRcbmxldCBhdF9leGl0ID0gYXRfZXhpdFxubGV0IHZhbGlkX2Zsb2F0X2xleGVtID0gdmFsaWRfZmxvYXRfbGV4ZW1cbmxldCBkb19hdF9leGl0ID0gZG9fYXRfZXhpdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICBOaWNvbGFzIE9qZWRhIEJhciwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBuZWcgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsIGFkZCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgc3ViIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCBtdWwgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsIGRpdiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgcmVtIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbWEgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbWFfZmxvYXRcIiBcImNhbWxfZm1hXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFicyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuXG5sZXQgemVybyA9IDAuXG5sZXQgb25lID0gMS5cbmxldCBtaW51c19vbmUgPSAtMS5cbmxldCBpbmZpbml0eSA9IFN0ZGxpYi5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IFN0ZGxpYi5uZWdfaW5maW5pdHlcbmxldCBuYW4gPSBTdGRsaWIubmFuXG5sZXQgaXNfZmluaXRlICh4OiBmbG9hdCkgPSB4IC0uIHggPSAwLlxubGV0IGlzX2luZmluaXRlICh4OiBmbG9hdCkgPSAxLiAvLiB4ID0gMC5cbmxldCBpc19uYW4gKHg6IGZsb2F0KSA9IHggPD4geFxuXG5sZXQgcGkgPSAweDEuOTIxZmI1NDQ0MmQxOHArMVxubGV0IG1heF9mbG9hdCA9IFN0ZGxpYi5tYXhfZmxvYXRcbmxldCBtaW5fZmxvYXQgPSBTdGRsaWIubWluX2Zsb2F0XG5sZXQgZXBzaWxvbiA9IFN0ZGxpYi5lcHNpbG9uX2Zsb2F0XG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nX29wdCA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdfb3B0XG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9mbG9hdFxudHlwZSBmcGNsYXNzID0gU3RkbGliLmZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHBvdyA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2JydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NicnRfZmxvYXRcIiBcImNhbWxfY2JydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwMl9mbG9hdFwiIFwiY2FtbF9leHAyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cyX2Zsb2F0XCIgXCJjYW1sX2xvZzJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZl9mbG9hdFwiIFwiY2FtbF9lcmZcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZmNfZmxvYXRcIiBcImNhbWxfZXJmY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0cnVuYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RydW5jX2Zsb2F0XCIgXCJjYW1sX3RydW5jXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHJvdW5kIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcm91bmRfZmxvYXRcIiBcImNhbWxfcm91bmRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IGlzX2ludGVnZXIgeCA9IHggPSB0cnVuYyB4ICYmIGlzX2Zpbml0ZSB4XG5cbmV4dGVybmFsIG5leHRfYWZ0ZXIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXRcIiBcImNhbWxfbmV4dGFmdGVyXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHN1Y2MgeCA9IG5leHRfYWZ0ZXIgeCBpbmZpbml0eVxubGV0IHByZWQgeCA9IG5leHRfYWZ0ZXIgeCBuZWdfaW5maW5pdHlcblxuZXh0ZXJuYWwgY29weV9zaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaWduX2JpdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBib29sXG4gID0gXCJjYW1sX3NpZ25iaXRfZmxvYXRcIiBcImNhbWxfc2lnbmJpdFwiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG50eXBlIHQgPSBmbG9hdFxuZXh0ZXJuYWwgY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludCA9IFwiJWNvbXBhcmVcIlxubGV0IGVxdWFsIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXRbQGlubGluZV0gbWluICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggfHwgaXNfbmFuIHkgdGhlbiAobmFuLCBuYW4pXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LCB5KSBlbHNlICh5LCB4KVxuXG5sZXRbQGlubGluZV0gbWluX251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggdGhlbiAoeSx5KVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4gKHgseClcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgseSkgZWxzZSAoeSx4KVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6IGludCAtPiBpbnQgLT4gaW50IC0+IGZsb2F0IC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBmbG9hdGFycmF5XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogdCAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgbGV0IHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBmb3IgaSA9IG9mcyB0byBvZnMgKyBsZW4gLSAxIGRvIHVuc2FmZV9zZXQgYSBpIHYgZG9uZVxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0OiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfYmxpdFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNoZWNrIGEgb2ZzIGxlbiBtc2cgPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPCAwIHx8IG9mcyArIGxlbiA+IGxlbmd0aCBhIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGxldCBtYWtlIG4gdiA9XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBuIGluXG4gICAgdW5zYWZlX2ZpbGwgcmVzdWx0IDAgbiB2O1xuICAgIHJlc3VsdFxuXG4gIGxldCBpbml0IGwgZiA9XG4gICAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmluaXRcIlxuICAgIGVsc2VcbiAgICAgIGxldCByZXMgPSBjcmVhdGUgbCBpblxuICAgICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICAgIGRvbmU7XG4gICAgICByZXNcblxuICBsZXQgYXBwZW5kIGExIGEyID1cbiAgICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgICBsZXQgbDIgPSBsZW5ndGggYTIgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChsMSArIGwyKSBpblxuICAgIHVuc2FmZV9ibGl0IGExIDAgcmVzdWx0IDAgbDE7XG4gICAgdW5zYWZlX2JsaXQgYTIgMCByZXN1bHQgbDEgbDI7XG4gICAgcmVzdWx0XG5cbiAgKCogbmV4dCAzIGZ1bmN0aW9uczogbW9kaWZpZWQgY29weSBvZiBjb2RlIGZyb20gc3RyaW5nLm1sICopXG4gIGxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID1cbiAgICBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5jb25jYXRcIlxuXG4gIGxldCByZWMgc3VtX2xlbmd0aHMgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgYWNjKSBhY2MpIHRsXG5cbiAgbGV0IGNvbmNhdCBsID1cbiAgICBsZXQgbGVuID0gc3VtX2xlbmd0aHMgMCBsIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgbCBpID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgKGkgPSBsZW4pXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGxldCBobGVuID0gbGVuZ3RoIGhkIGluXG4gICAgICAgIHVuc2FmZV9ibGl0IGhkIDAgcmVzdWx0IGkgaGxlbjtcbiAgICAgICAgbG9vcCB0bCAoaSArIGhsZW4pXG4gICAgaW5cbiAgICBsb29wIGwgMDtcbiAgICByZXN1bHRcblxuICBsZXQgc3ViIGEgb2ZzIGxlbiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuc3ViXCI7XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBhIG9mcyByZXN1bHQgMCBsZW47XG4gICAgcmVzdWx0XG5cbiAgbGV0IGNvcHkgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbCBpblxuICAgIHVuc2FmZV9ibGl0IGEgMCByZXN1bHQgMCBsO1xuICAgIHJlc3VsdFxuXG4gIGxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5maWxsXCI7XG4gICAgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxuICBsZXQgYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW4gPVxuICAgIGNoZWNrIHNyYyBzb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICBjaGVjayBkc3QgZG9mcyBsZW4gXCJGbG9hdC5hcnJheS5ibGl0XCI7XG4gICAgdW5zYWZlX2JsaXQgc3JjIHNvZnMgZHN0IGRvZnMgbGVuXG5cbiAgbGV0IHRvX2xpc3QgYSA9XG4gICAgTGlzdC5pbml0IChsZW5ndGggYSkgKHVuc2FmZV9nZXQgYSlcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICAgIGxldCByZWMgZmlsbCBpIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IHJlc3VsdFxuICAgICAgfCBoIDo6IHQgLT4gdW5zYWZlX3NldCByZXN1bHQgaSBoOyBmaWxsIChpICsgMSkgdFxuICAgIGluXG4gICAgZmlsbCAwIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyMiBmIGEgYiA9XG4gICAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2VcbiAgICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG4gIGxldCBtYXAgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICBsZXQgbWFwMiBmIGEgYiA9XG4gICAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICAgIGlmIGxhIDw+IGxiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyaSBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4gIGxldCBtYXBpIGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gICAgbGV0IHIgPSByZWYgeCBpblxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gICAgbGV0IHIgPSByZWYgeCBpblxuICAgIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICAgIGRvbmU7XG4gICAgIXJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGV4aXN0cyBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb3JfYWxsIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBsb29wIChpICsgMSlcbiAgICAgIGVsc2UgZmFsc2UgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1lbSB4IGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBidXQgc2xpZ2h0bHkgZGlmZmVyZW50ICopXG4gIGxldCBtZW1faWVlZSB4IGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIHggPSAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBleGNlcHRpb24gQm90dG9tIG9mIGludFxuICBsZXQgc29ydCBjbXAgYSA9XG4gICAgbGV0IG1heHNvbiBsIGkgPVxuICAgICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgICAgaWYgaTMxKzIgPCBsIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICAgIXhcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgICB0aGVuIGkzMSsxXG4gICAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgICBpblxuICAgIGxldCByZWMgdHJpY2tsZWRvd24gbCBpIGUgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGEgaSBlO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IHRyaWNrbGUgbCBpIGUgPSB0cnkgdHJpY2tsZWRvd24gbCBpIGUgd2l0aCBCb3R0b20gaSAtPiBzZXQgYSBpIGUgaW5cbiAgICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICBidWJibGVkb3duIGwgalxuICAgIGluXG4gICAgbGV0IGJ1YmJsZSBsIGkgPSB0cnkgYnViYmxlZG93biBsIGkgd2l0aCBCb3R0b20gaSAtPiBpIGluXG4gICAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgICAgYXNzZXJ0IChpIDw+IGZhdGhlcik7XG4gICAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgICBpZiBmYXRoZXIgPiAwIHRoZW4gdHJpY2tsZXVwIGZhdGhlciBlIGVsc2Ugc2V0IGEgMCBlO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGEgaSBlO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGZvciBpID0gKGwgKyAxKSAvIDMgLSAxIGRvd250byAwIGRvIHRyaWNrbGUgbCBpIChnZXQgYSBpKTsgZG9uZTtcbiAgICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgMCk7XG4gICAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gICAgZG9uZTtcbiAgICBpZiBsID4gMSB0aGVuIChsZXQgZSA9IChnZXQgYSAxKSBpbiBzZXQgYSAxIChnZXQgYSAwKTsgc2V0IGEgMCBlKVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCwgZXhjZXB0IGZvciB0aGUgY2FsbCB0byBbY3JlYXRlXSAqKVxuICBsZXQgY3V0b2ZmID0gNVxuICBsZXQgc3RhYmxlX3NvcnQgY21wIGEgPVxuICAgIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgICAgbGV0IHJlYyBsb29wIGkxIHMxIGkyIHMyIGQgPVxuICAgICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICAgIGxldCBpMSA9IGkxICsgMSBpblxuICAgICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgc2V0IGRzdCBkIHMyO1xuICAgICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgICAgbG9vcCBpMSBzMSBpMiAoZ2V0IHNyYzIgaTIpIChkICsgMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICAgIGVuZFxuICAgICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gICAgaW5cbiAgICBsZXQgaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgICBsZXQgaiA9IHJlZiAoZHN0b2ZzICsgaSAtIDEpIGluXG4gICAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgICBkZWNyIGo7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICAgIGRvbmU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgaWYgbGVuIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgICBzb3J0dG8gKHNyY29mcyArIGwxKSBkc3QgKGRzdG9mcyArIGwxKSBsMjtcbiAgICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gMCBhIDAgbCBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgICBsZXQgdCA9IGNyZWF0ZSBsMiBpblxuICAgICAgc29ydHRvIGwxIHQgMCBsMjtcbiAgICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICAgIGVuZFxuXG4gIGxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcWkgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9yZXZfbGlzdCBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCBhID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgW10gLT4gYVxuICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICBpblxuICAgIGZpbGwgKGxlbi0xKSBsXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9zZXEgaSA9XG4gICAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gICAgb2ZfcmV2X2xpc3QgbFxuXG5cbiAgbGV0IG1hcF90b19hcnJheSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsID0gMCB0aGVuIFt8IHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gQXJyYXkubWFrZSBsIChmICh1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgbGV0IG1hcF9mcm9tX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbmVuZFxuXG5tb2R1bGUgQXJyYXlMYWJlbHMgPSBBcnJheVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3JcbiAgIFRoaXMgaXMgYSBsYWdnZWQtRmlib25hY2NpIEYoNTUsIDI0LCArKSB3aXRoIGEgbW9kaWZpZWQgYWRkaXRpb25cbiAgIGZ1bmN0aW9uIHRvIGVuaGFuY2UgdGhlIG1peGluZyBvZiBiaXRzLlxuICAgSWYgd2UgdXNlIG5vcm1hbCBhZGRpdGlvbiwgdGhlIGxvdy1vcmRlciBiaXQgZmFpbHMgdGVzdHMgMSBhbmQgN1xuICAgb2YgdGhlIERpZWhhcmQgdGVzdCBzdWl0ZSwgYW5kIGJpdHMgMSBhbmQgMiBhbHNvIGZhaWwgdGVzdCA3LlxuICAgSWYgd2UgdXNlIG11bHRpcGxpY2F0aW9uIGFzIHN1Z2dlc3RlZCBieSBNYXJzYWdsaWEsIGl0IGRvZXNuJ3QgZmFyZVxuICAgbXVjaCBiZXR0ZXIuXG4gICBCeSBtaXhpbmcgdGhlIGJpdHMgb2Ygb25lIG9mIHRoZSBudW1iZXJzIGJlZm9yZSBhZGRpdGlvbiAoWE9SIHRoZVxuICAgNSBoaWdoLW9yZGVyIGJpdHMgaW50byB0aGUgbG93LW9yZGVyIGJpdHMpLCB3ZSBnZXQgYSBnZW5lcmF0b3IgdGhhdFxuICAgcGFzc2VzIGFsbCB0aGUgRGllaGFyZCB0ZXN0cy5cbiopXG5cbmV4dGVybmFsIHJhbmRvbV9zZWVkOiB1bml0IC0+IGludCBhcnJheSA9IFwiY2FtbF9zeXNfcmFuZG9tX3NlZWRcIlxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSB7IHN0IDogaW50IGFycmF5OyBtdXRhYmxlIGlkeCA6IGludCB9XG5cbiAgbGV0IG5ld19zdGF0ZSAoKSA9IHsgc3QgPSBBcnJheS5tYWtlIDU1IDA7IGlkeCA9IDAgfVxuICBsZXQgYXNzaWduIHN0MSBzdDIgPVxuICAgIEFycmF5LmJsaXQgc3QyLnN0IDAgc3QxLnN0IDAgNTU7XG4gICAgc3QxLmlkeCA8LSBzdDIuaWR4XG5cblxuICBsZXQgZnVsbF9pbml0IHMgc2VlZCA9XG4gICAgbGV0IGNvbWJpbmUgYWNjdSB4ID0gRGlnZXN0LnN0cmluZyAoYWNjdSBeIEludC50b19zdHJpbmcgeCkgaW5cbiAgICBsZXQgZXh0cmFjdCBkID1cbiAgICAgIENoYXIuY29kZSBkLlswXSArIChDaGFyLmNvZGUgZC5bMV0gbHNsIDgpICsgKENoYXIuY29kZSBkLlsyXSBsc2wgMTYpXG4gICAgICArIChDaGFyLmNvZGUgZC5bM10gbHNsIDI0KVxuICAgIGluXG4gICAgbGV0IHNlZWQgPSBpZiBBcnJheS5sZW5ndGggc2VlZCA9IDAgdGhlbiBbfCAwIHxdIGVsc2Ugc2VlZCBpblxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIHNlZWQgaW5cbiAgICBmb3IgaSA9IDAgdG8gNTQgZG9cbiAgICAgIHMuc3QuKGkpIDwtIGk7XG4gICAgZG9uZTtcbiAgICBsZXQgYWNjdSA9IHJlZiBcInhcIiBpblxuICAgIGZvciBpID0gMCB0byA1NCArIEludC5tYXggNTUgbCBkb1xuICAgICAgbGV0IGogPSBpIG1vZCA1NSBpblxuICAgICAgbGV0IGsgPSBpIG1vZCBsIGluXG4gICAgICBhY2N1IDo9IGNvbWJpbmUgIWFjY3Ugc2VlZC4oayk7XG4gICAgICBzLnN0LihqKSA8LSAocy5zdC4oaikgbHhvciBleHRyYWN0ICFhY2N1KSBsYW5kIDB4M0ZGRkZGRkY7ICAoKiBQUiM1NTc1ICopXG4gICAgZG9uZTtcbiAgICBzLmlkeCA8LSAwXG5cblxuICBsZXQgbWFrZSBzZWVkID1cbiAgICBsZXQgcmVzdWx0ID0gbmV3X3N0YXRlICgpIGluXG4gICAgZnVsbF9pbml0IHJlc3VsdCBzZWVkO1xuICAgIHJlc3VsdFxuXG5cbiAgbGV0IG1ha2Vfc2VsZl9pbml0ICgpID0gbWFrZSAocmFuZG9tX3NlZWQgKCkpXG5cbiAgbGV0IGNvcHkgcyA9XG4gICAgbGV0IHJlc3VsdCA9IG5ld19zdGF0ZSAoKSBpblxuICAgIGFzc2lnbiByZXN1bHQgcztcbiAgICByZXN1bHRcblxuXG4gICgqIFJldHVybnMgMzAgcmFuZG9tIGJpdHMgYXMgYW4gaW50ZWdlciAwIDw9IHggPCAxMDczNzQxODI0ICopXG4gIGxldCBiaXRzIHMgPVxuICAgIHMuaWR4IDwtIChzLmlkeCArIDEpIG1vZCA1NTtcbiAgICBsZXQgY3VydmFsID0gcy5zdC4ocy5pZHgpIGluXG4gICAgbGV0IG5ld3ZhbCA9IHMuc3QuKChzLmlkeCArIDI0KSBtb2QgNTUpXG4gICAgICAgICAgICAgICAgICsgKGN1cnZhbCBseG9yICgoY3VydmFsIGxzciAyNSkgbGFuZCAweDFGKSkgaW5cbiAgICBsZXQgbmV3dmFsMzAgPSBuZXd2YWwgbGFuZCAweDNGRkZGRkZGIGluICAoKiBQUiM1NTc1ICopXG4gICAgcy5zdC4ocy5pZHgpIDwtIG5ld3ZhbDMwO1xuICAgIG5ld3ZhbDMwXG5cblxuICBsZXQgcmVjIGludGF1eCBzIG4gPVxuICAgIGxldCByID0gYml0cyBzIGluXG4gICAgbGV0IHYgPSByIG1vZCBuIGluXG4gICAgaWYgciAtIHYgPiAweDNGRkZGRkZGIC0gbiArIDEgdGhlbiBpbnRhdXggcyBuIGVsc2UgdlxuXG4gIGxldCBpbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPiAweDNGRkZGRkZGIHx8IGJvdW5kIDw9IDBcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludFwiXG4gICAgZWxzZSBpbnRhdXggcyBib3VuZFxuXG4gIGxldCByZWMgaW50NjNhdXggcyBuID1cbiAgICBsZXQgbWF4X2ludF8zMiA9ICgxIGxzbCAzMCkgKyAweDNGRkZGRkZGIGluICgqIDB4N0ZGRkZGRkYgKilcbiAgICBsZXQgYjEgPSBiaXRzIHMgaW5cbiAgICBsZXQgYjIgPSBiaXRzIHMgaW5cbiAgICBsZXQgKHIsIG1heF9pbnQpID1cbiAgICAgIGlmIG4gPD0gbWF4X2ludF8zMiB0aGVuXG4gICAgICAgICgqIDMxIHJhbmRvbSBiaXRzIG9uIGJvdGggNjQtYml0IE9DYW1sIGFuZCBKYXZhU2NyaXB0LlxuICAgICAgICAgICBVc2UgdXBwZXIgMTUgYml0cyBvZiBiMSBhbmQgMTYgYml0cyBvZiBiMi4gKilcbiAgICAgICAgbGV0IGJwb3MgPVxuICAgICAgICAgICgoKGIyIGxhbmQgMHgzRkZGQzAwMCkgbHNsIDEpIGxvciAoYjEgbHNyIDE1KSlcbiAgICAgICAgaW5cbiAgICAgICAgICAoYnBvcywgbWF4X2ludF8zMilcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGIzID0gYml0cyBzIGluXG4gICAgICAgICgqIDYyIHJhbmRvbSBiaXRzIG9uIDY0LWJpdCBPQ2FtbDsgdW5yZWFjaGFibGUgb24gSmF2YVNjcmlwdC5cbiAgICAgICAgICAgVXNlIHVwcGVyIDIwIGJpdHMgb2YgYjEgYW5kIDIxIGJpdHMgb2YgYjIgYW5kIGIzLiAqKVxuICAgICAgICBsZXQgYnBvcyA9XG4gICAgICAgICAgKCgoKGIzIGxhbmQgMHgzRkZGRkUwMCkgbHNsIDEyKSBsb3IgKGIyIGxzciA5KSkgbHNsIDIwKVxuICAgICAgICAgICAgbG9yIChiMSBsc3IgMTApXG4gICAgICAgIGluXG4gICAgICAgICAgKGJwb3MsIG1heF9pbnQpXG4gICAgaW5cbiAgICBsZXQgdiA9IHIgbW9kIG4gaW5cbiAgICBpZiByIC0gdiA+IG1heF9pbnQgLSBuICsgMSB0aGVuIGludDYzYXV4IHMgbiBlbHNlIHZcblxuICBsZXQgZnVsbF9pbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5mdWxsX2ludFwiXG4gICAgZWxzZSBpZiBib3VuZCA+IDB4M0ZGRkZGRkYgdGhlblxuICAgICAgaW50NjNhdXggcyBib3VuZFxuICAgIGVsc2VcbiAgICAgIGludGF1eCBzIGJvdW5kXG5cblxuICBsZXQgcmVjIGludDMyYXV4IHMgbiA9XG4gICAgbGV0IGIxID0gSW50MzIub2ZfaW50IChiaXRzIHMpIGluXG4gICAgbGV0IGIyID0gSW50MzIuc2hpZnRfbGVmdCAoSW50MzIub2ZfaW50IChiaXRzIHMgbGFuZCAxKSkgMzAgaW5cbiAgICBsZXQgciA9IEludDMyLmxvZ29yIGIxIGIyIGluXG4gICAgbGV0IHYgPSBJbnQzMi5yZW0gciBuIGluXG4gICAgaWYgSW50MzIuc3ViIHIgdiA+IEludDMyLmFkZCAoSW50MzIuc3ViIEludDMyLm1heF9pbnQgbikgMWxcbiAgICB0aGVuIGludDMyYXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQzMiBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50MzJcIlxuICAgIGVsc2UgaW50MzJhdXggcyBib3VuZFxuXG5cbiAgbGV0IHJlYyBpbnQ2NGF1eCBzIG4gPVxuICAgIGxldCBiMSA9IEludDY0Lm9mX2ludCAoYml0cyBzKSBpblxuICAgIGxldCBiMiA9IEludDY0LnNoaWZ0X2xlZnQgKEludDY0Lm9mX2ludCAoYml0cyBzKSkgMzAgaW5cbiAgICBsZXQgYjMgPSBJbnQ2NC5zaGlmdF9sZWZ0IChJbnQ2NC5vZl9pbnQgKGJpdHMgcyBsYW5kIDcpKSA2MCBpblxuICAgIGxldCByID0gSW50NjQubG9nb3IgYjEgKEludDY0LmxvZ29yIGIyIGIzKSBpblxuICAgIGxldCB2ID0gSW50NjQucmVtIHIgbiBpblxuICAgIGlmIEludDY0LnN1YiByIHYgPiBJbnQ2NC5hZGQgKEludDY0LnN1YiBJbnQ2NC5tYXhfaW50IG4pIDFMXG4gICAgdGhlbiBpbnQ2NGF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50NjQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMExcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0XCJcbiAgICBlbHNlIGludDY0YXV4IHMgYm91bmRcblxuXG4gIGxldCBuYXRpdmVpbnQgPVxuICAgIGlmIE5hdGl2ZWludC5zaXplID0gMzJcbiAgICB0aGVuIGZ1biBzIGJvdW5kIC0+IE5hdGl2ZWludC5vZl9pbnQzMiAoaW50MzIgcyAoTmF0aXZlaW50LnRvX2ludDMyIGJvdW5kKSlcbiAgICBlbHNlIGZ1biBzIGJvdW5kIC0+IEludDY0LnRvX25hdGl2ZWludCAoaW50NjQgcyAoSW50NjQub2ZfbmF0aXZlaW50IGJvdW5kKSlcblxuXG4gICgqIFJldHVybnMgYSBmbG9hdCAwIDw9IHggPD0gMSB3aXRoIGF0IG1vc3QgNjAgYml0cyBvZiBwcmVjaXNpb24uICopXG4gIGxldCByYXdmbG9hdCBzID1cbiAgICBsZXQgc2NhbGUgPSAxMDczNzQxODI0LjAgICgqIDJeMzAgKilcbiAgICBhbmQgcjEgPSBTdGRsaWIuZmxvYXQgKGJpdHMgcylcbiAgICBhbmQgcjIgPSBTdGRsaWIuZmxvYXQgKGJpdHMgcylcbiAgICBpbiAocjEgLy4gc2NhbGUgKy4gcjIpIC8uIHNjYWxlXG5cblxuICBsZXQgZmxvYXQgcyBib3VuZCA9IHJhd2Zsb2F0IHMgKi4gYm91bmRcblxuICBsZXQgYm9vbCBzID0gKGJpdHMgcyBsYW5kIDEgPSAwKVxuXG4gIGxldCBiaXRzMzIgcyA9XG4gICAgbGV0IGIxID0gSW50MzIuKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKG9mX2ludCAoYml0cyBzKSkgMTQpIGluICAoKiAxNiBiaXRzICopXG4gICAgbGV0IGIyID0gSW50MzIuKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKG9mX2ludCAoYml0cyBzKSkgMTQpIGluICAoKiAxNiBiaXRzICopXG4gICAgSW50MzIuKGxvZ29yIGIxIChzaGlmdF9sZWZ0IGIyIDE2KSlcblxuICBsZXQgYml0czY0IHMgPVxuICAgIGxldCBiMSA9IEludDY0LihzaGlmdF9yaWdodF9sb2dpY2FsIChvZl9pbnQgKGJpdHMgcykpIDkpIGluICAoKiAyMSBiaXRzICopXG4gICAgbGV0IGIyID0gSW50NjQuKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKG9mX2ludCAoYml0cyBzKSkgOSkgaW4gICgqIDIxIGJpdHMgKilcbiAgICBsZXQgYjMgPSBJbnQ2NC4oc2hpZnRfcmlnaHRfbG9naWNhbCAob2ZfaW50IChiaXRzIHMpKSA4KSBpbiAgKCogMjIgYml0cyAqKVxuICAgIEludDY0Lihsb2dvciBiMSAobG9nb3IgKHNoaWZ0X2xlZnQgYjIgMjEpIChzaGlmdF9sZWZ0IGIzIDQyKSkpXG5cbiAgbGV0IG5hdGl2ZWJpdHMgPVxuICAgIGlmIE5hdGl2ZWludC5zaXplID0gMzJcbiAgICB0aGVuIGZ1biBzIC0+IE5hdGl2ZWludC5vZl9pbnQzMiAoYml0czMyIHMpXG4gICAgZWxzZSBmdW4gcyAtPiBJbnQ2NC50b19uYXRpdmVpbnQgKGJpdHM2NCBzKVxuXG5lbmRcblxuKCogVGhpcyBpcyB0aGUgc3RhdGUgeW91IGdldCB3aXRoIFtpbml0IDI3MTgyODE4XSBhbmQgdGhlbiBhcHBseWluZ1xuICAgdGhlIFwibGFuZCAweDNGRkZGRkZGXCIgZmlsdGVyIHRvIHRoZW0uICBTZWUgIzU1NzUsICM1NzkzLCAjNTk3Ny4gKilcbmxldCBkZWZhdWx0ID0ge1xuICBTdGF0ZS5zdCA9IFt8XG4gICAgICAweDNhZTI1MjJiOyAweDFkOGQ0NjM0OyAweDE1YjRmYWQwOyAweDE4YjE0YWNlOyAweDEyZjhhM2M0OyAweDNiMDg2YzQ3O1xuICAgICAgMHgxNmQ0NjdkNjsgMHgxMDFkOTFjNzsgMHgzMjFkZjE3NzsgMHgwMTc2YzE5MzsgMHgxZmY3MmJmMTsgMHgxZTg4OTEwOTtcbiAgICAgIDB4MGI0NjRiMTg7IDB4MmI4NmI5N2M7IDB4MDg5MWRhNDg7IDB4MDMxMzc0NjM7IDB4MDg1YWM1YTE7IDB4MTVkNjFmMmY7XG4gICAgICAweDNiY2VkMzU5OyAweDI5YzFjMTMyOyAweDNhODY3NjZlOyAweDM2NmQ4Yzg2OyAweDFmNWI2MjIyOyAweDNjZTFiNTlmO1xuICAgICAgMHgyZWJmNzhlMTsgMHgyN2NkMWI4NjsgMHgyNThmM2RjMzsgMHgzODlhODE5NDsgMHgwMmU0YzQ0YzsgMHgxOGM0M2Y3ZDtcbiAgICAgIDB4MGY2ZTUzNGY7IDB4MWU3ZGYzNTk7IDB4MDU1ZDBiN2U7IDB4MTBlODRlN2U7IDB4MTI2MTk4ZTQ7IDB4MGU3NzIyY2I7XG4gICAgICAweDFjYmVkZTI4OyAweDMzOTFiOTY0OyAweDNkNDBlOTJhOyAweDBjNTk5MzNkOyAweDBiOGNkMGI3OyAweDI0ZWZmZjFjO1xuICAgICAgMHgyODAzZmRhYTsgMHgwOGViYzcyZTsgMHgwZjUyMmUzMjsgMHgwNTM5OGVkYzsgMHgyMTQ0YTA0YzsgMHgwYWVmM2NiZDtcbiAgICAgIDB4MDFhZDQ3MTk7IDB4MzViOTNjZDY7IDB4MmE1NTlkNGY7IDB4MWU2ZmQ3Njg7IDB4MjZlMjdmMzY7IDB4MTg2ZjE4YzM7XG4gICAgICAweDJmYmY5NjdhO1xuICAgIHxdO1xuICBTdGF0ZS5pZHggPSAwO1xufVxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgZGVmYXVsdFxubGV0IGludCBib3VuZCA9IFN0YXRlLmludCBkZWZhdWx0IGJvdW5kXG5sZXQgZnVsbF9pbnQgYm91bmQgPSBTdGF0ZS5mdWxsX2ludCBkZWZhdWx0IGJvdW5kXG5sZXQgaW50MzIgYm91bmQgPSBTdGF0ZS5pbnQzMiBkZWZhdWx0IGJvdW5kXG5sZXQgbmF0aXZlaW50IGJvdW5kID0gU3RhdGUubmF0aXZlaW50IGRlZmF1bHQgYm91bmRcbmxldCBpbnQ2NCBib3VuZCA9IFN0YXRlLmludDY0IGRlZmF1bHQgYm91bmRcbmxldCBmbG9hdCBzY2FsZSA9IFN0YXRlLmZsb2F0IGRlZmF1bHQgc2NhbGVcbmxldCBib29sICgpID0gU3RhdGUuYm9vbCBkZWZhdWx0XG5sZXQgYml0czMyICgpID0gU3RhdGUuYml0czMyIGRlZmF1bHRcbmxldCBiaXRzNjQgKCkgPSBTdGF0ZS5iaXRzNjQgZGVmYXVsdFxubGV0IG5hdGl2ZWJpdHMgKCkgPSBTdGF0ZS5uYXRpdmViaXRzIGRlZmF1bHRcblxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUuZnVsbF9pbml0IGRlZmF1bHQgc2VlZFxubGV0IGluaXQgc2VlZCA9IFN0YXRlLmZ1bGxfaW5pdCBkZWZhdWx0IFt8IHNlZWQgfF1cbmxldCBzZWxmX2luaXQgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkKCkpXG5cbigqIE1hbmlwdWxhdGluZyB0aGUgY3VycmVudCBzdGF0ZS4gKilcblxubGV0IGdldF9zdGF0ZSAoKSA9IFN0YXRlLmNvcHkgZGVmYXVsdFxubGV0IHNldF9zdGF0ZSBzID0gU3RhdGUuYXNzaWduIGRlZmF1bHQgc1xuXG4oKioqKioqKioqKioqKioqKioqKipcblxuKCogVGVzdCBmdW5jdGlvbnMuICBOb3QgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkuXG4gICBUaGUgW2NoaXNxdWFyZV0gZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB3aXRoIG4gPiAxMHIuXG4gICBJdCByZXR1cm5zIGEgdHJpcGxlIChsb3csIGFjdHVhbCwgaGlnaCkuXG4gICBJZiBsb3cgPD0gYWN0dWFsIDw9IGhpZ2gsIHRoZSBbZ10gZnVuY3Rpb24gcGFzc2VkIHRoZSB0ZXN0LFxuICAgb3RoZXJ3aXNlIGl0IGZhaWxlZC5cblxuICBTb21lIHJlc3VsdHM6XG5cbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMFxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAgNTAwMFxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAwIDEwMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMjRcbmluaXQgMjk5NzkyNjQzOyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDI0XG5pbml0IDE0MTQyMTM2OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDI0XG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYgMTAyNDsgY2hpc3F1YXJlIGRpZmYgMTAwMDAwIDEwMjRcbmluaXQgMjcxODI4MTg7IGluaXRfZGlmZiAxMDA7IGNoaXNxdWFyZSBkaWZmIDEwMDAwMCAxMDBcbmluaXQgMjcxODI4MTg7IGluaXRfZGlmZjIgMTAyNDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDI0XG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYyIDEwMDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDBcbmluaXQgMTQxNDIxMzY7IGluaXRfZGlmZjIgMTAwOyBjaGlzcXVhcmUgZGlmZjIgMTAwMDAwIDEwMFxuaW5pdCAyOTk3OTI2NDM7IGluaXRfZGlmZjIgMTAwOyBjaGlzcXVhcmUgZGlmZjIgMTAwMDAwIDEwMFxuLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5MzYuNzU0NDQ2Nzk2NjMyNDY1LCA5OTcuNSwgMTA2My4yNDU1NTMyMDMzNjc1NClcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDg5Ljc0MDAwMDAwMDAwNTIzODcsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoNDg1OC41Nzg2NDM3NjI2OSwgNTA0NS41LCA1MTQxLjQyMTM1NjIzNzMxKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID1cbig5MzYuNzU0NDQ2Nzk2NjMyNDY1LCA5NDQuODA1OTk5OTk5OTgyMzA1LCAxMDYzLjI0NTU1MzIwMzM2NzU0KVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwMTkuMTk3NDQwMDAwMDAzNTUsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwNTkuMzE3NzYwMDAwMDA1MzYsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwMzkuOTg0NjM5OTk5OTk1MTIsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwNTQuMzgyMDc5OTk5OTk1NzcsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgOTAuMDk2MDAwMDAwMDA1LCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwNzYuNzg3MjAwMDAwMDA2MTIsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODUuMTc2MDAwMDAwMDA2NzUyMSwgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDg1LjIxNjAwMDAwMDAwMDM0OTIsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4MC42MjIwMDAwMDAwMDMwMjY4LCAxMjAuKVxuXG4qKVxuXG4oKiBSZXR1cm4gdGhlIHN1bSBvZiB0aGUgc3F1YXJlcyBvZiB2W2kwLGkxWyAqKVxubGV0IHJlYyBzdW1zcSB2IGkwIGkxID1cbiAgaWYgaTAgPj0gaTEgdGhlbiAwLjBcbiAgZWxzZSBpZiBpMSA9IGkwICsgMSB0aGVuIFN0ZGxpYi5mbG9hdCB2LihpMCkgKi4gU3RkbGliLmZsb2F0IHYuKGkwKVxuICBlbHNlIHN1bXNxIHYgaTAgKChpMCtpMSkvMikgKy4gc3Vtc3EgdiAoKGkwK2kxKS8yKSBpMVxuXG5cbmxldCBjaGlzcXVhcmUgZyBuIHIgPVxuICBpZiBuIDw9IDEwICogciB0aGVuIGludmFsaWRfYXJnIFwiY2hpc3F1YXJlXCI7XG4gIGxldCBmID0gQXJyYXkubWFrZSByIDAgaW5cbiAgZm9yIGkgPSAxIHRvIG4gZG9cbiAgICBsZXQgdCA9IGcgciBpblxuICAgIGYuKHQpIDwtIGYuKHQpICsgMVxuICBkb25lO1xuICBsZXQgdCA9IHN1bXNxIGYgMCByXG4gIGFuZCByID0gU3RkbGliLmZsb2F0IHJcbiAgYW5kIG4gPSBTdGRsaWIuZmxvYXQgbiBpblxuICBsZXQgc3IgPSAyLjAgKi4gc3FydCByIGluXG4gIChyIC0uIHNyLCAgIChyICouIHQgLy4gbikgLS4gbiwgICByICsuIHNyKVxuXG5cbigqIFRoaXMgaXMgdG8gdGVzdCBmb3IgbGluZWFyIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgcmFuZG9tIG51bWJlcnMuXG4qKVxubGV0IHN0ID0gcmVmIDBcbmxldCBpbml0X2RpZmYgciA9IHN0IDo9IGludCByXG5sZXQgZGlmZiByID1cbiAgbGV0IHgxID0gIXN0XG4gIGFuZCB4MiA9IGludCByXG4gIGluXG4gIHN0IDo9IHgyO1xuICBpZiB4MSA+PSB4MiB0aGVuXG4gICAgeDEgLSB4MlxuICBlbHNlXG4gICAgciArIHgxIC0geDJcblxuXG5sZXQgc3QxID0gcmVmIDBcbmFuZCBzdDIgPSByZWYgMFxuXG5cbigqIFRoaXMgaXMgdG8gdGVzdCBmb3IgcXVhZHJhdGljIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgcmFuZG9tXG4gICBudW1iZXJzLlxuKilcbmxldCBpbml0X2RpZmYyIHIgPSBzdDEgOj0gaW50IHI7IHN0MiA6PSBpbnQgclxubGV0IGRpZmYyIHIgPVxuICBsZXQgeDEgPSAhc3QxXG4gIGFuZCB4MiA9ICFzdDJcbiAgYW5kIHgzID0gaW50IHJcbiAgaW5cbiAgc3QxIDo9IHgyO1xuICBzdDIgOj0geDM7XG4gICh4MyAtIHgyIC0geDIgKyB4MSArIDIqcikgbW9kIHJcblxuXG4qKioqKioqKioqKioqKioqKioqKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGxpc3RzLiAqKVxudHlwZSAnYSB0ID0gJ2EgbGlzdCA9IFtdIHwgKDo6KSBvZiAnYSAqICdhIGxpc3RcblxuKCogTGlzdCBvcGVyYXRpb25zICopXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGxlblxuICB8IF86OmwgLT4gbGVuZ3RoX2F1eCAobGVuICsgMSkgbFxuXG5sZXQgbGVuZ3RoIGwgPSBsZW5ndGhfYXV4IDAgbFxuXG5sZXQgY29ucyBhIGwgPSBhOjpsXG5cbmxldCBoZCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJoZFwiXG4gIHwgYTo6XyAtPiBhXG5cbmxldCB0bCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJ0bFwiXG4gIHwgXzo6bCAtPiBsXG5cbmxldCBudGggbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibnRoXCJcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBudGhfb3B0IGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gU29tZSBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBhcHBlbmQgPSAoQClcblxubGV0IHJlYyByZXZfYXBwZW5kIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgYSA6OiBsIC0+IHJldl9hcHBlbmQgbCAoYSA6OiBsMilcblxubGV0IHJldiBsID0gcmV2X2FwcGVuZCBsIFtdXG5cbmxldCByZWMgaW5pdF90YWlscmVjX2F1eCBhY2MgaSBuIGYgPVxuICBpZiBpID49IG4gdGhlbiBhY2NcbiAgZWxzZSBpbml0X3RhaWxyZWNfYXV4IChmIGkgOjogYWNjKSAoaSsxKSBuIGZcblxubGV0IHJlYyBpbml0X2F1eCBpIG4gZiA9XG4gIGlmIGkgPj0gbiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgciA9IGYgaSBpblxuICAgIHIgOjogaW5pdF9hdXggKGkrMSkgbiBmXG5cbmxldCByZXZfaW5pdF90aHJlc2hvbGQgPVxuICBtYXRjaCBTeXMuYmFja2VuZF90eXBlIHdpdGhcbiAgfCBTeXMuTmF0aXZlIHwgU3lzLkJ5dGVjb2RlIC0+IDEwXzAwMFxuICAoKiBXZSBkb24ndCBrbm93IHRoZSBzaXplIG9mIHRoZSBzdGFjaywgYmV0dGVyIGJlIHNhZmUgYW5kIGFzc3VtZSBpdCdzXG4gICAgIHNtYWxsLiAqKVxuICB8IFN5cy5PdGhlciBfIC0+IDUwXG5cbmxldCBpbml0IGxlbiBmID1cbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5pbml0XCIgZWxzZVxuICBpZiBsZW4gPiByZXZfaW5pdF90aHJlc2hvbGQgdGhlbiByZXYgKGluaXRfdGFpbHJlY19hdXggW10gMCBsZW4gZilcbiAgZWxzZSBpbml0X2F1eCAwIGxlbiBmXG5cbmxldCByZWMgZmxhdHRlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBsOjpyIC0+IGwgQCBmbGF0dGVuIHJcblxubGV0IGNvbmNhdCA9IGZsYXR0ZW5cblxubGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBhOjpsIC0+IGxldCByID0gZiBhIGluIHIgOjogbWFwIGYgbFxuXG5sZXQgcmVjIG1hcGkgaSBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGE6OmwgLT4gbGV0IHIgPSBmIGkgYSBpbiByIDo6IG1hcGkgKGkgKyAxKSBmIGxcblxubGV0IG1hcGkgZiBsID0gbWFwaSAwIGYgbFxuXG5sZXQgcmV2X21hcCBmIGwgPVxuICBsZXQgcmVjIHJtYXBfZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IGE6OmwgLT4gcm1hcF9mIChmIGEgOjogYWNjdSkgbFxuICBpblxuICBybWFwX2YgW10gbFxuXG5cbmxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBhOyBpdGVyIGYgbFxuXG5sZXQgcmVjIGl0ZXJpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgaSBhOyBpdGVyaSAoaSArIDEpIGYgbFxuXG5sZXQgaXRlcmkgZiBsID0gaXRlcmkgMCBmIGxcblxubGV0IHJlYyBmb2xkX2xlZnQgZiBhY2N1IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmb2xkX2xlZnQgZiAoZiBhY2N1IGEpIGxcblxubGV0IHJlYyBmb2xkX3JpZ2h0IGYgbCBhY2N1ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZiBhIChmb2xkX3JpZ2h0IGYgbCBhY2N1KVxuXG5sZXQgcmVjIG1hcDIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBbXVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gbGV0IHIgPSBmIGExIGEyIGluIHIgOjogbWFwMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5tYXAyXCJcblxubGV0IHJldl9tYXAyIGYgbDEgbDIgPVxuICBsZXQgcmVjIHJtYXAyX2YgYWNjdSBsMSBsMiA9XG4gICAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIHwgKFtdLCBbXSkgLT4gYWNjdVxuICAgIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBybWFwMl9mIChmIGExIGEyIDo6IGFjY3UpIGwxIGwyXG4gICAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJldl9tYXAyXCJcbiAgaW5cbiAgcm1hcDJfZiBbXSBsMSBsMlxuXG5cbmxldCByZWMgaXRlcjIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiAoKVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMjsgaXRlcjIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuaXRlcjJcIlxuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiBhY2N1IGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGZvbGRfbGVmdDIgZiAoZiBhY2N1IGExIGEyKSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9sZWZ0MlwiXG5cbmxldCByZWMgZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1ID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTIgKGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSlcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfcmlnaHQyXCJcblxubGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IHRydWVcbiAgfCBhOjpsIC0+IHAgYSAmJiBmb3JfYWxsIHAgbFxuXG5sZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gcCBhIHx8IGV4aXN0cyBwIGxcblxubGV0IHJlYyBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IHRydWVcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgJiYgZm9yX2FsbDIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9yX2FsbDJcIlxuXG5sZXQgcmVjIGV4aXN0czIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBmYWxzZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiB8fCBleGlzdHMyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmV4aXN0czJcIlxuXG5sZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbSB4IGxcblxubGV0IHJlYyBtZW1xIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBhID09IHggfHwgbWVtcSB4IGxcblxubGV0IHJlYyBhc3NvYyB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBiIGVsc2UgYXNzb2MgeCBsXG5cbmxldCByZWMgYXNzb2Nfb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBTb21lIGIgZWxzZSBhc3NvY19vcHQgeCBsXG5cbmxldCByZWMgYXNzcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBiIGVsc2UgYXNzcSB4IGxcblxubGV0IHJlYyBhc3NxX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gU29tZSBiIGVsc2UgYXNzcV9vcHQgeCBsXG5cbmxldCByZWMgbWVtX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbV9hc3NvYyB4IGxcblxubGV0IHJlYyBtZW1fYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGEgPT0geCB8fCBtZW1fYXNzcSB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+XG4gICAgICBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzb2MgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+IGlmIGEgPT0geCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NxIHggbFxuXG5sZXQgcmVjIGZpbmQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHggZWxzZSBmaW5kIHAgbFxuXG5sZXQgcmVjIGZpbmRfb3B0IHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZF9vcHQgcCBsXG5cbmxldCByZWMgZmluZF9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgZiBsXG4gICAgIGVuZFxuXG5sZXQgZmluZF9hbGwgcCA9XG4gIGxldCByZWMgZmluZCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByZXYgYWNjdVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBmaW5kICh4IDo6IGFjY3UpIGwgZWxzZSBmaW5kIGFjY3UgbCBpblxuICBmaW5kIFtdXG5cbmxldCBmaWx0ZXIgPSBmaW5kX2FsbFxuXG5sZXQgZmlsdGVyaSBwIGwgPVxuICBsZXQgcmVjIGF1eCBpIGFjYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmV2IGFjY1xuICB8IHg6OmwgLT4gYXV4IChpICsgMSkgKGlmIHAgaSB4IHRoZW4geDo6YWNjIGVsc2UgYWNjKSBsXG4gIGluXG4gIGF1eCAwIFtdIGxcblxubGV0IGZpbHRlcl9tYXAgZiA9XG4gIGxldCByZWMgYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY3VcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IGFjY3UgbFxuICAgICAgICB8IFNvbWUgdiAtPiBhdXggKHYgOjogYWNjdSkgbFxuICBpblxuICBhdXggW11cblxubGV0IGNvbmNhdF9tYXAgZiBsID1cbiAgbGV0IHJlYyBhdXggZiBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgbGV0IHhzID0gZiB4IGluXG4gICAgICAgYXV4IGYgKHJldl9hcHBlbmQgeHMgYWNjKSBsXG4gIGluIGF1eCBmIFtdIGxcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2N1IGwgPVxuICBsZXQgcmVjIGF1eCBhY2N1IGxfYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1LCByZXYgbF9hY2N1XG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGFjY3UsIHggPSBmIGFjY3UgeCBpblxuICAgICAgICBhdXggYWNjdSAoeCA6OiBsX2FjY3UpIGwgaW5cbiAgYXV4IGFjY3UgW10gbFxuXG5sZXQgcGFydGl0aW9uIHAgbCA9XG4gIGxldCByZWMgcGFydCB5ZXMgbm8gPSBmdW5jdGlvblxuICB8IFtdIC0+IChyZXYgeWVzLCByZXYgbm8pXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHBhcnQgKHggOjogeWVzKSBubyBsIGVsc2UgcGFydCB5ZXMgKHggOjogbm8pIGwgaW5cbiAgcGFydCBbXSBbXSBsXG5cbmxldCBwYXJ0aXRpb25fbWFwIHAgbCA9XG4gIGxldCByZWMgcGFydCBsZWZ0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IGxlZnQsIHJldiByaWdodClcbiAgfCB4IDo6IGwgLT5cbiAgICAgYmVnaW4gbWF0Y2ggcCB4IHdpdGhcbiAgICAgICB8IEVpdGhlci5MZWZ0IHYgLT4gcGFydCAodiA6OiBsZWZ0KSByaWdodCBsXG4gICAgICAgfCBFaXRoZXIuUmlnaHQgdiAtPiBwYXJ0IGxlZnQgKHYgOjogcmlnaHQpIGxcbiAgICAgZW5kXG4gIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcmVjIHNwbGl0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoW10sIFtdKVxuICB8ICh4LHkpOjpsIC0+XG4gICAgICBsZXQgKHJ4LCByeSkgPSBzcGxpdCBsIGluICh4OjpyeCwgeTo6cnkpXG5cbmxldCByZWMgY29tYmluZSBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBbXVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gKGExLCBhMikgOjogY29tYmluZSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuY29tYmluZVwiXG5cbigqKiBzb3J0aW5nICopXG5cbmxldCByZWMgbWVyZ2UgY21wIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgbDIgLT4gbDJcbiAgfCBsMSwgW10gLT4gbDFcbiAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT5cbiAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICB0aGVuIGgxIDo6IG1lcmdlIGNtcCB0MSBsMlxuICAgICAgZWxzZSBoMiA6OiBtZXJnZSBjbXAgbDEgdDJcblxuXG5sZXQgc3RhYmxlX3NvcnQgY21wIGwgPVxuICBsZXQgcmVjIHJldl9tZXJnZSBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgaWYgY21wIGgxIGgyIDw9IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2UgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZSBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgcmV2X21lcmdlX3JldiBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgaWYgY21wIGgxIGgyID4gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZV9yZXYgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZV9yZXYgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHNvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID0gaWYgY21wIHgxIHgyIDw9IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBjbXAgeDEgeDIgPD0gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPD0gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA8PSAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPD0gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHJldl9zb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHJldl9zb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2VfcmV2IHMxIHMyIFtdLCB0bClcbiAgYW5kIHJldl9zb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBjbXAgeDEgeDIgPiAwIHRoZW5cbiAgICAgICAgICAgIGlmIGNtcCB4MiB4MyA+IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MiB4MyA+IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgc29ydCA9IHN0YWJsZV9zb3J0XG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuKCogTm90ZTogb24gYSBsaXN0IG9mIGxlbmd0aCBiZXR3ZWVuIGFib3V0IDEwMDAwMCAoZGVwZW5kaW5nIG9uIHRoZSBtaW5vclxuICAgaGVhcCBzaXplIGFuZCB0aGUgdHlwZSBvZiB0aGUgbGlzdCkgYW5kIFN5cy5tYXhfYXJyYXlfc2l6ZSwgaXQgaXNcbiAgIGFjdHVhbGx5IGZhc3RlciB0byB1c2UgdGhlIGZvbGxvd2luZywgYnV0IGl0IG1pZ2h0IGFsc28gdXNlIG1vcmUgbWVtb3J5XG4gICBiZWNhdXNlIHRoZSBhcmd1bWVudCBsaXN0IGNhbm5vdCBiZSBkZWFsbG9jYXRlZCBpbmNyZW1lbnRhbGx5LlxuXG4gICBBbHNvLCB0aGVyZSBzZWVtcyB0byBiZSBhIGJ1ZyBpbiB0aGlzIGNvZGUgb3IgaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiBvYmpfdHJ1bmNhdGUuXG5cbmV4dGVybmFsIG9ial90cnVuY2F0ZSA6ICdhIGFycmF5IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX29ial90cnVuY2F0ZVwiXG5cbmxldCBhcnJheV90b19saXN0X2luX3BsYWNlIGEgPVxuICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBhY2N1IG4gcCA9XG4gICAgaWYgcCA8PSAwIHRoZW4gYWNjdSBlbHNlIGJlZ2luXG4gICAgICBpZiBwID0gbiB0aGVuIGJlZ2luXG4gICAgICAgIG9ial90cnVuY2F0ZSBhIHA7XG4gICAgICAgIGxvb3AgKGEuKHAtMSkgOjogYWNjdSkgKG4tMTAwMCkgKHAtMSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxvb3AgKGEuKHAtMSkgOjogYWNjdSkgbiAocC0xKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGluXG4gIGxvb3AgW10gKGwtMTAwMCkgbFxuXG5cbmxldCBzdGFibGVfc29ydCBjbXAgbCA9XG4gIGxldCBhID0gQXJyYXkub2ZfbGlzdCBsIGluXG4gIEFycmF5LnN0YWJsZV9zb3J0IGNtcCBhO1xuICBhcnJheV90b19saXN0X2luX3BsYWNlIGFcblxuKilcblxuXG4oKiogc29ydGluZyArIHJlbW92aW5nIGR1cGxpY2F0ZXMgKilcblxubGV0IHNvcnRfdW5pcSBjbXAgbCA9XG4gIGxldCByZWMgcmV2X21lcmdlIGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZSB0MSB0MiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2UgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZSBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgcmV2X21lcmdlX3JldiBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjID4gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZV9yZXYgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZV9yZXYgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHNvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxXSBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDJdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgzXSBlbHNlIFt4MzsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gcmV2X3NvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gcmV2X3NvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZV9yZXYgczEgczIgW10sIHRsKVxuICBhbmQgcmV2X3NvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxXSBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDJdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgzXSBlbHNlIFt4MzsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHJlYyBjb21wYXJlX2xlbmd0aHMgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgXyA6OiBsMSwgXyA6OiBsMiAtPiBjb21wYXJlX2xlbmd0aHMgbDEgbDJcbjs7XG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhfd2l0aCBsIG4gPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIGlmIG4gPSAwIHRoZW4gMCBlbHNlXG4gICAgICBpZiBuID4gMCB0aGVuIC0xIGVsc2UgMVxuICB8IF8gOjogbCAtPlxuICAgIGlmIG4gPD0gMCB0aGVuIDEgZWxzZVxuICAgICAgY29tcGFyZV9sZW5ndGhfd2l0aCBsIChuLTEpXG47O1xuXG4oKiogezEgQ29tcGFyaXNvbn0gKilcblxuKCogTm90ZTogd2UgYXJlICpub3QqIHNob3J0Y3V0dGluZyB0aGUgbGlzdCBieSB1c2luZ1xuICAgW0xpc3QuY29tcGFyZV9sZW5ndGhzXSBmaXJzdDsgdGhpcyBtYXkgYmUgc2xvd2VyIG9uIGxvbmcgbGlzdHNcbiAgIGltbWVkaWF0ZWx5IHN0YXJ0IHdpdGggZGlzdGluY3QgZWxlbWVudHMuIEl0IGlzIGFsc28gaW5jb3JyZWN0IGZvclxuICAgW2NvbXBhcmVdIGJlbG93LCBhbmQgaXQgaXMgYmV0dGVyIChwcmluY2lwbGUgb2YgbGVhc3Qgc3VycHJpc2UpIHRvXG4gICB1c2UgdGhlIHNhbWUgYXBwcm9hY2ggZm9yIGJvdGggZnVuY3Rpb25zLiAqKVxubGV0IHJlYyBlcXVhbCBlcSBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHRydWVcbiAgfCBbXSwgXzo6XyB8IF86Ol8sIFtdIC0+IGZhbHNlXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT4gZXEgYTEgYTIgJiYgZXF1YWwgZXEgbDEgbDJcblxubGV0IHJlYyBjb21wYXJlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXzo6XyAtPiAtMVxuICB8IF86Ol8sIFtdIC0+IDFcbiAgfCBhMTo6bDEsIGEyOjpsMiAtPlxuICAgIGxldCBjID0gY21wIGExIGEyIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gY1xuICAgIGVsc2UgY29tcGFyZSBjbXAgbDEgbDJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBsID1cbiAgbGV0IHJlYyBhdXggbCAoKSA9IG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gU2VxLk5pbFxuICAgIHwgeCA6OiB0YWlsIC0+IFNlcS5Db25zICh4LCBhdXggdGFpbClcbiAgaW5cbiAgYXV4IGxcblxubGV0IG9mX3NlcSBzZXEgPVxuICBsZXQgcmVjIGRpcmVjdCBkZXB0aCBzZXEgOiBfIGxpc3QgPVxuICAgIGlmIGRlcHRoPTBcbiAgICB0aGVuXG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBzZXFcbiAgICAgIHw+IHJldiAoKiB0YWlscmVjICopXG4gICAgZWxzZSBtYXRjaCBzZXEoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gW11cbiAgICAgIHwgU2VxLkNvbnMgKHgsIG5leHQpIC0+IHggOjogZGlyZWN0IChkZXB0aC0xKSBuZXh0XG4gIGluXG4gIGRpcmVjdCA1MDAgc2VxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGluX2NoYW5uZWxcblxudHlwZSBvcGVuX2ZsYWcgPSBTdGRsaWIub3Blbl9mbGFnID1cbiAgfCBPcGVuX3Jkb25seVxuICB8IE9wZW5fd3Jvbmx5XG4gIHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0XG4gIHwgT3Blbl90cnVuY1xuICB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5XG4gIHwgT3Blbl90ZXh0XG4gIHwgT3Blbl9ub25ibG9ja1xuXG5sZXQgc3RkaW4gPSBTdGRsaWIuc3RkaW5cbmxldCBvcGVuX2JpbiA9IFN0ZGxpYi5vcGVuX2luX2JpblxubGV0IG9wZW5fdGV4dCA9IFN0ZGxpYi5vcGVuX2luXG5sZXQgb3Blbl9nZW4gPSBTdGRsaWIub3Blbl9pbl9nZW5cblxubGV0IHdpdGhfb3BlbiBvcGVuZnVuIHMgZiA9XG4gIGxldCBpYyA9IG9wZW5mdW4gcyBpblxuICBGdW4ucHJvdGVjdCB+ZmluYWxseTooZnVuICgpIC0+IFN0ZGxpYi5jbG9zZV9pbl9ub2VyciBpYylcbiAgICAoZnVuICgpIC0+IGYgaWMpXG5cbmxldCB3aXRoX29wZW5fYmluIHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9pbl9iaW4gcyBmXG5cbmxldCB3aXRoX29wZW5fdGV4dCBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5faW4gcyBmXG5cbmxldCB3aXRoX29wZW5fZ2VuIGZsYWdzIHBlcm0gcyBmID1cbiAgd2l0aF9vcGVuIChTdGRsaWIub3Blbl9pbl9nZW4gZmxhZ3MgcGVybSkgcyBmXG5cbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX2luXG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3NfaW5cbmxldCBsZW5ndGggPSBTdGRsaWIuTGFyZ2VGaWxlLmluX2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2VfaW5cbmxldCBjbG9zZV9ub2VyciA9IFN0ZGxpYi5jbG9zZV9pbl9ub2VyclxuXG5sZXQgaW5wdXRfY2hhciBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9jaGFyIGljIHdpdGhcbiAgfCBjIC0+IFNvbWUgY1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dF9ieXRlIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2J5dGUgaWMgd2l0aFxuICB8IG4gLT4gU29tZSBuXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0X2xpbmUgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgcyAtPiBTb21lIHNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXQgPSBTdGRsaWIuaW5wdXRcblxubGV0IHJlYWxseV9pbnB1dCBpYyBidWYgcG9zIGxlbiA9XG4gIG1hdGNoIFN0ZGxpYi5yZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gd2l0aFxuICB8ICgpIC0+IFNvbWUgKClcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gd2l0aFxuICB8IHMgLT4gU29tZSBzXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxuKCogUmVhZCB1cCB0byBbbGVuXSBieXRlcyBpbnRvIFtidWZdLCBzdGFydGluZyBhdCBbb2ZzXS4gUmV0dXJuIHRvdGFsIGJ5dGVzXG4gICByZWFkLiAqKVxubGV0IHJlYWRfdXB0byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBvZnMgbGVuID1cbiAgICBpZiBsZW4gPSAwIHRoZW4gb2ZzXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBTdGRsaWIuaW5wdXQgaWMgYnVmIG9mcyBsZW4gaW5cbiAgICAgIGlmIHIgPSAwIHRoZW5cbiAgICAgICAgb2ZzXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3AgKG9mcyArIHIpIChsZW4gLSByKVxuICAgIGVuZFxuICBpblxuICBsb29wIG9mcyBsZW4gLSBvZnNcblxuKCogQmVzdCBlZmZvcnQgYXR0ZW1wdCB0byByZXR1cm4gYSBidWZmZXIgd2l0aCA+PSAob2ZzICsgbikgYnl0ZXMgb2Ygc3RvcmFnZSxcbiAgIGFuZCBzdWNoIHRoYXQgaXQgY29pbmNpZGVzIHdpdGggW2J1Zl0gYXQgaW5kaWNlcyA8IFtvZnNdLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIGlzIGVxdWFsIHRvIFtidWZdIGl0c2VsZiBpZiBpdCBhbHJlYWR5IGhhcyBzdWZmaWNpZW50XG4gICBmcmVlIHNwYWNlLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIG1heSBoYXZlICpmZXdlciogdGhhbiBbb2ZzICsgbl0gYnl0ZXMgb2Ygc3RvcmFnZSBpZiB0aGlzXG4gICBudW1iZXIgaXMgPiBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXS4gSG93ZXZlciB0aGUgcmV0dXJuZWQgYnVmZmVyIHdpbGxcbiAgICphbHdheXMqIGhhdmUgPiBbb2ZzXSBieXRlcyBvZiBzdG9yYWdlLiBJbiB0aGUgbGltaXRpbmcgY2FzZSB3aGVuIFtvZnMgPSBsZW5cbiAgID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAoc28gdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gcmVzaXplIHRoZSBidWZmZXIgYXRcbiAgIGFsbCksIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5cbmxldCBlbnN1cmUgYnVmIG9mcyBuID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuID49IG9mcyArIG4gdGhlbiBidWZcbiAgZWxzZSBiZWdpblxuICAgIGxldCBuZXdfbGVuID0gcmVmIGxlbiBpblxuICAgIHdoaWxlICFuZXdfbGVuIDwgb2ZzICsgbiBkb1xuICAgICAgbmV3X2xlbiA6PSAyICogIW5ld19sZW4gKyAxXG4gICAgZG9uZTtcbiAgICBsZXQgbmV3X2xlbiA9ICFuZXdfbGVuIGluXG4gICAgbGV0IG5ld19sZW4gPVxuICAgICAgaWYgbmV3X2xlbiA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBuZXdfbGVuXG4gICAgICBlbHNlIGlmIG9mcyA8IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBmYWlsd2l0aCBcIkluX2NoYW5uZWwuaW5wdXRfYWxsOiBjaGFubmVsIGNvbnRlbnQgXFxcbiAgICAgICAgICAgICAgICAgIGlzIGxhcmdlciB0aGFuIG1heGltdW0gc3RyaW5nIGxlbmd0aFwiXG4gICAgaW5cbiAgICBsZXQgbmV3X2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYgMCBuZXdfYnVmIDAgb2ZzO1xuICAgIG5ld19idWZcbiAgZW5kXG5cbmxldCBpbnB1dF9hbGwgaWMgPVxuICBsZXQgY2h1bmtfc2l6ZSA9IDY1NTM2IGluICgqIElPX0JVRkZFUl9TSVpFICopXG4gIGxldCBpbml0aWFsX3NpemUgPVxuICAgIHRyeVxuICAgICAgU3RkbGliLmluX2NoYW5uZWxfbGVuZ3RoIGljIC0gU3RkbGliLnBvc19pbiBpY1xuICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgIC0xXG4gIGluXG4gIGxldCBpbml0aWFsX3NpemUgPSBpZiBpbml0aWFsX3NpemUgPCAwIHRoZW4gY2h1bmtfc2l6ZSBlbHNlIGluaXRpYWxfc2l6ZSBpblxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICBpZiBpbml0aWFsX3NpemUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgIGluaXRpYWxfc2l6ZVxuICAgIGVsc2VcbiAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICBpblxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGluaXRpYWxfc2l6ZSBpblxuICBsZXQgbnJlYWQgPSByZWFkX3VwdG8gaWMgYnVmIDAgaW5pdGlhbF9zaXplIGluXG4gIGlmIG5yZWFkIDwgaW5pdGlhbF9zaXplIHRoZW4gKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBwYXJ0aWFsbHkgZmlsbGVkICopXG4gICAgQnl0ZXMuc3ViX3N0cmluZyBidWYgMCBucmVhZFxuICBlbHNlIGJlZ2luICgqIG5yZWFkID0gaW5pdGlhbF9zaXplLCBtYXliZSBFT0YgcmVhY2hlZCAqKVxuICAgIG1hdGNoIFN0ZGxpYi5pbnB1dF9jaGFyIGljIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPlxuICAgICAgICAoKiBFT0YgcmVhY2hlZCwgYnVmZmVyIGlzIGNvbXBsZXRlbHkgZmlsbGVkICopXG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gICAgfCBjIC0+XG4gICAgICAgICgqIEVPRiBub3QgcmVhY2hlZCAqKVxuICAgICAgICBsZXQgcmVjIGxvb3AgYnVmIG9mcyA9XG4gICAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgb2ZzIGNodW5rX3NpemUgaW5cbiAgICAgICAgICBsZXQgcmVtID0gQnl0ZXMubGVuZ3RoIGJ1ZiAtIG9mcyBpblxuICAgICAgICAgICgqIFtyZW1dIGNhbiBiZSA8IFtjaHVua19zaXplXSBpZiBidWZmZXIgc2l6ZSBjbG9zZSB0b1xuICAgICAgICAgICAgIFtTeXMubWF4X3N0cmluZ19sZW5ndGhdICopXG4gICAgICAgICAgbGV0IHIgPSByZWFkX3VwdG8gaWMgYnVmIG9mcyByZW0gaW5cbiAgICAgICAgICBpZiByIDwgcmVtIHRoZW4gKCogRU9GIHJlYWNoZWQgKilcbiAgICAgICAgICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgKG9mcyArIHIpXG4gICAgICAgICAgZWxzZSAoKiByID0gcmVtICopXG4gICAgICAgICAgICBsb29wIGJ1ZiAob2ZzICsgcmVtKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYnVmID0gZW5zdXJlIGJ1ZiBucmVhZCAoY2h1bmtfc2l6ZSArIDEpIGluXG4gICAgICAgIEJ5dGVzLnNldCBidWYgbnJlYWQgYztcbiAgICAgICAgbG9vcCBidWYgKG5yZWFkICsgMSlcbiAgZW5kXG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX2luXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IG91dF9jaGFubmVsXG5cbnR5cGUgb3Blbl9mbGFnID0gU3RkbGliLm9wZW5fZmxhZyA9XG4gIHwgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcblxubGV0IHN0ZG91dCA9IFN0ZGxpYi5zdGRvdXRcbmxldCBzdGRlcnIgPSBTdGRsaWIuc3RkZXJyXG5sZXQgb3Blbl9iaW4gPSBTdGRsaWIub3Blbl9vdXRfYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5fb3V0XG5sZXQgb3Blbl9nZW4gPSBTdGRsaWIub3Blbl9vdXRfZ2VuXG5cbmxldCB3aXRoX29wZW4gb3BlbmZ1biBzIGYgPVxuICBsZXQgb2MgPSBvcGVuZnVuIHMgaW5cbiAgRnVuLnByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyIG9jKVxuICAgIChmdW4gKCkgLT4gZiBvYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX291dF9iaW4gcyBmXG5cbmxldCB3aXRoX29wZW5fdGV4dCBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5fb3V0IHMgZlxuXG5sZXQgd2l0aF9vcGVuX2dlbiBmbGFncyBwZXJtIHMgZiA9XG4gIHdpdGhfb3BlbiAoU3RkbGliLm9wZW5fb3V0X2dlbiBmbGFncyBwZXJtKSBzIGZcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfb3V0XG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3Nfb3V0XG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5vdXRfY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9vdXRcbmxldCBjbG9zZV9ub2VyciA9IFN0ZGxpYi5jbG9zZV9vdXRfbm9lcnJcbmxldCBmbHVzaCA9IFN0ZGxpYi5mbHVzaFxubGV0IGZsdXNoX2FsbCA9IFN0ZGxpYi5mbHVzaF9hbGxcbmxldCBvdXRwdXRfY2hhciA9IFN0ZGxpYi5vdXRwdXRfY2hhclxubGV0IG91dHB1dF9ieXRlID0gU3RkbGliLm91dHB1dF9ieXRlXG5sZXQgb3V0cHV0X3N0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gU3RkbGliLm91dHB1dF9ieXRlc1xubGV0IG91dHB1dCA9IFN0ZGxpYi5vdXRwdXRcbmxldCBvdXRwdXRfc3Vic3RyaW5nID0gU3RkbGliLm91dHB1dF9zdWJzdHJpbmdcbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX291dFxuXG5leHRlcm5hbCBzZXRfYnVmZmVyZWQgOiB0IC0+IGJvb2wgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZXRfYnVmZmVyZWRcIlxuXG5leHRlcm5hbCBpc19idWZmZXJlZCA6IHQgLT4gYm9vbCA9IFwiY2FtbF9tbF9pc19idWZmZXJlZFwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEdhYnJpZWwgU2NoZXJlciwgcHJvamV0IFBhcnNpZmFsLCBJTlJJQSBTYWNsYXkgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnYikgdCA9IExlZnQgb2YgJ2EgfCBSaWdodCBvZiAnYlxuXG5sZXQgbGVmdCB2ID0gTGVmdCB2XG5sZXQgcmlnaHQgdiA9IFJpZ2h0IHZcblxubGV0IGlzX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gdHJ1ZVxufCBSaWdodCBfIC0+IGZhbHNlXG5cbmxldCBpc19yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBmYWxzZVxufCBSaWdodCBfIC0+IHRydWVcblxubGV0IGZpbmRfbGVmdCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBTb21lIHZcbnwgUmlnaHQgXyAtPiBOb25lXG5cbmxldCBmaW5kX3JpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IE5vbmVcbnwgUmlnaHQgdiAtPiBTb21lIHZcblxubGV0IG1hcF9sZWZ0IGYgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gTGVmdCAoZiB2KVxufCBSaWdodCBfIGFzIGUgLT4gZVxuXG5sZXQgbWFwX3JpZ2h0IGYgPSBmdW5jdGlvblxufCBMZWZ0IF8gYXMgZSAtPiBlXG58IFJpZ2h0IHYgLT4gUmlnaHQgKGYgdilcblxubGV0IG1hcCB+bGVmdCB+cmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gTGVmdCAobGVmdCB2KVxufCBSaWdodCB2IC0+IFJpZ2h0IChyaWdodCB2KVxuXG5sZXQgZm9sZCB+bGVmdCB+cmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gbGVmdCB2XG58IFJpZ2h0IHYgLT4gcmlnaHQgdlxuXG5sZXQgaXRlciA9IGZvbGRcblxubGV0IGZvcl9hbGwgPSBmb2xkXG5cbmxldCBlcXVhbCB+bGVmdCB+cmlnaHQgZTEgZTIgPSBtYXRjaCBlMSwgZTIgd2l0aFxufCBMZWZ0IHYxLCBMZWZ0IHYyIC0+IGxlZnQgdjEgdjJcbnwgUmlnaHQgdjEsIFJpZ2h0IHYyIC0+IHJpZ2h0IHYxIHYyXG58IExlZnQgXywgUmlnaHQgXyB8IFJpZ2h0IF8sIExlZnQgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSB+bGVmdCB+cmlnaHQgZTEgZTIgPSBtYXRjaCBlMSwgZTIgd2l0aFxufCBMZWZ0IHYxLCBMZWZ0IHYyIC0+IGxlZnQgdjEgdjJcbnwgUmlnaHQgdjEsIFJpZ2h0IHYyIC0+IHJpZ2h0IHYxIHYyXG58IExlZnQgXywgUmlnaHQgXyAtPiAoLTEpXG58IFJpZ2h0IF8sIExlZnQgXyAtPiAxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbTmF0aXZlaW50XTogcHJvY2Vzc29yLW5hdGl2ZSBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWc6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbmVnXCJcbmV4dGVybmFsIGFkZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYWRkXCJcbmV4dGVybmFsIHN1YjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfc3ViXCJcbmV4dGVybmFsIG11bDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbXVsXCJcbmV4dGVybmFsIGRpdjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfZGl2XCJcbmV4dGVybmFsIHJlbTogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYW5kXCJcbmV4dGVybmFsIGxvZ29yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vclwiXG5leHRlcm5hbCBsb2d4b3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsOiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50OiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQ6IG5hdGl2ZWludCAtPiBpbnQgPSBcIiVuYXRpdmVpbnRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IG5hdGl2ZWludCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzI6IGludDMyIC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMjogbmF0aXZlaW50IC0+IGludDMyID0gXCIlbmF0aXZlaW50X3RvX2ludDMyXCJcblxubGV0IHplcm8gPSAwblxubGV0IG9uZSA9IDFuXG5sZXQgbWludXNfb25lID0gLTFuXG5sZXQgc3VjYyBuID0gYWRkIG4gMW5cbmxldCBwcmVkIG4gPSBzdWIgbiAxblxubGV0IGFicyBuID0gaWYgbiA+PSAwbiB0aGVuIG4gZWxzZSBuZWcgblxubGV0IHNpemUgPSBTeXMud29yZF9zaXplXG5sZXQgbWluX2ludCA9IHNoaWZ0X2xlZnQgMW4gKHNpemUgLSAxKVxubGV0IG1heF9pbnQgPSBzdWIgbWluX2ludCAxblxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbilcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gIGZ1biBuIC0+XG4gICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmcgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nOiBzdHJpbmcgLT4gbmF0aXZlaW50ID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gbmF0aXZlaW50XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogT3BlcmF0aW9ucyBvbiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbnMgb2YgdmFsdWVzICopXG5cbnR5cGUgdFxuXG50eXBlIHJhd19kYXRhID0gbmF0aXZlaW50XG5cbmV4dGVybmFsIHJlcHIgOiAnYSAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgb2JqIDogdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG1hZ2ljIDogJ2EgLT4gJ2IgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBpc19pbnQgOiB0IC0+IGJvb2wgPSBcIiVvYmpfaXNfaW50XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGlzX2Jsb2NrIGEgPSBub3QgKGlzX2ludCBhKVxuZXh0ZXJuYWwgdGFnIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3RhZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzZXRfdGFnIDogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfc2V0X3RhZ1wiXG5leHRlcm5hbCBzaXplIDogdCAtPiBpbnQgPSBcIiVvYmpfc2l6ZVwiXG5leHRlcm5hbCByZWFjaGFibGVfd29yZHMgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXCJcbmV4dGVybmFsIGZpZWxkIDogdCAtPiBpbnQgLT4gdCA9IFwiJW9ial9maWVsZFwiXG5leHRlcm5hbCBzZXRfZmllbGQgOiB0IC0+IGludCAtPiB0IC0+IHVuaXQgPSBcIiVvYmpfc2V0X2ZpZWxkXCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRhcnJheV9nZXRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9zZXQgOlxuICAgIGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcImNhbWxfZmxvYXRhcnJheV9zZXRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gZG91YmxlX2ZpZWxkIHggaSA9IGZsb2F0YXJyYXlfZ2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGlcbmxldCBbQGlubGluZSBhbHdheXNdIHNldF9kb3VibGVfZmllbGQgeCBpIHYgPVxuICBmbG9hdGFycmF5X3NldCAob2JqIHggOiBmbG9hdGFycmF5KSBpIHZcbmV4dGVybmFsIHJhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhID0gXCJjYW1sX29ial9yYXdfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X3Jhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkXCJcblxuZXh0ZXJuYWwgbmV3X2Jsb2NrIDogaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX29ial9ibG9ja1wiXG5leHRlcm5hbCBkdXAgOiB0IC0+IHQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3RydW5jYXRlXCJcbmV4dGVybmFsIGFkZF9vZmZzZXQgOiB0IC0+IEludDMyLnQgLT4gdCA9IFwiY2FtbF9vYmpfYWRkX29mZnNldFwiXG5leHRlcm5hbCB3aXRoX3RhZyA6IGludCAtPiB0IC0+IHQgPSBcImNhbWxfb2JqX3dpdGhfdGFnXCJcblxubGV0IGZpcnN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAwXG5sZXQgbGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMjQ1XG5cbmxldCBsYXp5X3RhZyA9IDI0NlxubGV0IGNsb3N1cmVfdGFnID0gMjQ3XG5sZXQgb2JqZWN0X3RhZyA9IDI0OFxubGV0IGluZml4X3RhZyA9IDI0OVxubGV0IGZvcndhcmRfdGFnID0gMjUwXG5cbmxldCBub19zY2FuX3RhZyA9IDI1MVxuXG5sZXQgYWJzdHJhY3RfdGFnID0gMjUxXG5sZXQgc3RyaW5nX3RhZyA9IDI1MlxubGV0IGRvdWJsZV90YWcgPSAyNTNcbmxldCBkb3VibGVfYXJyYXlfdGFnID0gMjU0XG5sZXQgY3VzdG9tX3RhZyA9IDI1NVxubGV0IGZpbmFsX3RhZyA9IGN1c3RvbV90YWdcblxuXG5sZXQgaW50X3RhZyA9IDEwMDBcbmxldCBvdXRfb2ZfaGVhcF90YWcgPSAxMDAxXG5sZXQgdW5hbGlnbmVkX3RhZyA9IDEwMDJcblxubW9kdWxlIENsb3N1cmUgPSBzdHJ1Y3RcbiAgdHlwZSBpbmZvID0ge1xuICAgIGFyaXR5OiBpbnQ7XG4gICAgc3RhcnRfZW52OiBpbnQ7XG4gIH1cblxuICBsZXQgaW5mb19vZl9yYXcgKGluZm8gOiBuYXRpdmVpbnQpID1cbiAgICBsZXQgb3BlbiBOYXRpdmVpbnQgaW5cbiAgICBsZXQgYXJpdHkgPVxuICAgICAgKCogc2lnbmVkOiBuZWdhdGl2ZSBmb3IgdHVwbGVkIGZ1bmN0aW9ucyAqKVxuICAgICAgaWYgU3lzLndvcmRfc2l6ZSA9IDY0IHRoZW5cbiAgICAgICAgdG9faW50IChzaGlmdF9yaWdodCBpbmZvIDU2KVxuICAgICAgZWxzZVxuICAgICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0IGluZm8gMjQpXG4gICAgaW5cbiAgICBsZXQgc3RhcnRfZW52ID1cbiAgICAgICgqIHN0YXJ0X2VudiBpcyB1bnNpZ25lZCwgYnV0IHdlIGtub3cgaXQgY2FuIGFsd2F5cyBmaXQgYW4gT0NhbWxcbiAgICAgICAgIGludGVnZXIgc28gd2UgdXNlIFt0b19pbnRdIGluc3RlYWQgb2YgW3Vuc2lnbmVkX3RvX2ludF0uICopXG4gICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKHNoaWZ0X2xlZnQgaW5mbyA4KSA5KSBpblxuICAgIHsgYXJpdHk7IHN0YXJ0X2VudiB9XG5cbiAgKCogbm90ZTogd2UgZXhwZWN0IGEgY2xvc3VyZSwgbm90IGFuIGluZml4IHBvaW50ZXIgKilcbiAgbGV0IGluZm8gKG9iaiA6IHQpID1cbiAgICBhc3NlcnQgKHRhZyBvYmogPSBjbG9zdXJlX3RhZyk7XG4gICAgaW5mb19vZl9yYXcgKHJhd19maWVsZCBvYmogMSlcbmVuZFxuXG5tb2R1bGUgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbnN0cnVjdFxuICB0eXBlIHQgPSBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgbGV0IG9mX3ZhbCB4ID1cbiAgICBsZXQgeCA9IHJlcHIgeCBpblxuICAgIGxldCBzbG90ID1cbiAgICAgIGlmIChpc19ibG9jayB4KSAmJiAodGFnIHgpIDw+IG9iamVjdF90YWcgJiYgKHNpemUgeCkgPj0gMSB0aGVuIGZpZWxkIHggMFxuICAgICAgZWxzZSB4XG4gICAgaW5cbiAgICBsZXQgbmFtZSA9XG4gICAgICBpZiAoaXNfYmxvY2sgc2xvdCkgJiYgKHRhZyBzbG90KSA9IG9iamVjdF90YWcgdGhlbiBmaWVsZCBzbG90IDBcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcbiAgICBpblxuICAgICAgaWYgKHRhZyBuYW1lKSA9IHN0cmluZ190YWcgdGhlbiAob2JqIHNsb3QgOiB0KVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIG5hbWUgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMCkgOiBzdHJpbmcpXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gaWQgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMSkgOiBpbnQpXG5lbmRcblxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IEV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWxcbmxldCBleHRlbnNpb25fbmFtZSA9IEV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5uYW1lXG5sZXQgZXh0ZW5zaW9uX2lkID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkXG5cbm1vZHVsZSBFcGhlbWVyb24gPSBzdHJ1Y3RcbiAgdHlwZSBvYmpfdCA9IHRcblxuICB0eXBlIHQgKCoqIGVwaGVtZXJvbiAqKVxuXG4gICAoKiogVG8gY2hhbmdlIGluIHN5bmMgd2l0aCB3ZWFrLmggKilcbiAgbGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMlxuICBsZXQgbWF4X2VwaGVfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2VwaGVfY3JlYXRlXCI7O1xuICBsZXQgY3JlYXRlIGwgPVxuICAgIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gbWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uY3JlYXRlXCI7XG4gICAgY3JlYXRlIGxcblxuICBsZXQgbGVuZ3RoIHggPSBzaXplKHJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGV4dGVybmFsIGdldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlcIlxuICBsZXQgZ2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleVwiO1xuICAgIGdldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleV9jb3B5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcIlxuICBsZXQgZ2V0X2tleV9jb3B5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5X2NvcHlcIjtcbiAgICBnZXRfa2V5X2NvcHkgZSBvXG5cbiAgZXh0ZXJuYWwgc2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuICBsZXQgc2V0X2tleSBlIG8geCA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5zZXRfa2V5XCI7XG4gICAgc2V0X2tleSBlIG8geFxuXG4gIGV4dGVybmFsIHVuc2V0X2tleTogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG4gIGxldCB1bnNldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnVuc2V0X2tleVwiO1xuICAgIHVuc2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBjaGVja19rZXk6IHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19rZXlcIlxuICBsZXQgY2hlY2tfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5jaGVja19rZXlcIjtcbiAgICBjaGVja19rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgYmxpdF9rZXkgOiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgID0gXCJjYW1sX2VwaGVfYmxpdF9rZXlcIlxuXG4gIGxldCBibGl0X2tleSBlMSBvMSBlMiBvMiBsID1cbiAgICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmJsaXRfa2V5XCJcbiAgICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXRfa2V5IGUxIG8xIGUyIG8yIGxcblxuICBleHRlcm5hbCBnZXRfZGF0YTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YVwiXG4gIGV4dGVybmFsIGdldF9kYXRhX2NvcHk6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVwiXG4gIGV4dGVybmFsIHNldF9kYXRhOiB0IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfZGF0YVwiXG4gIGV4dGVybmFsIHVuc2V0X2RhdGE6IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2RhdGFcIlxuICBleHRlcm5hbCBjaGVja19kYXRhOiB0IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19kYXRhXCJcbiAgZXh0ZXJuYWwgYmxpdF9kYXRhIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9ibGl0X2RhdGFcIlxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW50ZXJuYWxzIG9mIGZvcmNpbmcgbGF6eSB2YWx1ZXMuICopXG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5cbmxldCByYWlzZV91bmRlZmluZWQgPSBPYmoucmVwciAoZnVuICgpIC0+IHJhaXNlIFVuZGVmaW5lZClcblxuZXh0ZXJuYWwgbWFrZV9mb3J3YXJkIDogT2JqLnQgLT4gT2JqLnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfbWFrZV9mb3J3YXJkXCJcblxuKCogQXNzdW1lIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgbGF6eSAqKVxubGV0IGZvcmNlX2xhenlfYmxvY2sgKGJsayA6ICdhcmcgbGF6eV90KSA9XG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCAoT2JqLnJlcHIgYmxrKSAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgYmxrKSAwIHJhaXNlX3VuZGVmaW5lZDtcbiAgdHJ5XG4gICAgbGV0IHJlc3VsdCA9IGNsb3N1cmUgKCkgaW5cbiAgICBtYWtlX2ZvcndhcmQgKE9iai5yZXByIGJsaykgKE9iai5yZXByIHJlc3VsdCk7XG4gICAgcmVzdWx0XG4gIHdpdGggZSAtPlxuICAgIE9iai5zZXRfZmllbGQgKE9iai5yZXByIGJsaykgMCAoT2JqLnJlcHIgKGZ1biAoKSAtPiByYWlzZSBlKSk7XG4gICAgcmFpc2UgZVxuXG5cbigqIEFzc3VtZSBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGxhenkgKilcbmxldCBmb3JjZV92YWxfbGF6eV9ibG9jayAoYmxrIDogJ2FyZyBsYXp5X3QpID1cbiAgbGV0IGNsb3N1cmUgPSAoT2JqLm9iaiAoT2JqLmZpZWxkIChPYmoucmVwciBibGspIDApIDogdW5pdCAtPiAnYXJnKSBpblxuICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciBibGspIDAgcmFpc2VfdW5kZWZpbmVkO1xuICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICBtYWtlX2ZvcndhcmQgKE9iai5yZXByIGJsaykgKE9iai5yZXByIHJlc3VsdCk7XG4gIHJlc3VsdFxuXG5cbigqIFtmb3JjZV0gaXMgbm90IHVzZWQsIHNpbmNlIFtMYXp5LmZvcmNlXSBpcyBkZWNsYXJlZCBhcyBhIHByaW1pdGl2ZVxuICAgd2hvc2UgY29kZSBpbmxpbmVzIHRoZSB0YWcgdGVzdHMgb2YgaXRzIGFyZ3VtZW50LCBleGNlcHQgd2hlbiBhZmxcbiAgIGluc3RydW1lbnRhdGlvbiBpcyB0dXJuZWQgb24uICopXG5cbmxldCBmb3JjZSAobHp2IDogJ2FyZyBsYXp5X3QpID1cbiAgKCogVXNpbmcgW1N5cy5vcGFxdWVfaWRlbnRpdHldIHByZXZlbnRzIHR3byBwb3RlbnRpYWwgcHJvYmxlbXM6XG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGhhdmUgRm9yd2FyZF90YWcsIHRoZW4gaXRzIHRhZyBjb3VsZCBoYXZlXG4gICAgICAgY2hhbmdlZCBkdXJpbmcgR0MsIHNvIHRoYXQgaW5mb3JtYXRpb24gbXVzdCBiZSBmb3Jnb3R0ZW4gKHNlZSBHUFIjNzEzXG4gICAgICAgYW5kIGlzc3VlICM3MzAxKVxuICAgICAtIElmIHRoZSB2YWx1ZSBpcyBrbm93biB0byBiZSBpbW11dGFibGUsIHRoZW4gaWYgdGhlIGNvbXBpbGVyXG4gICAgICAgY2Fubm90IHByb3ZlIHRoYXQgdGhlIGxhc3QgYnJhbmNoIGlzIG5vdCB0YWtlbiBpdCB3aWxsIGlzc3VlIGFcbiAgICAgICB3YXJuaW5nIDU5IChtb2RpZmljYXRpb24gb2YgYW4gaW1tdXRhYmxlIHZhbHVlKSAqKVxuICBsZXQgbHp2ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSBsenYgaW5cbiAgbGV0IHggPSBPYmoucmVwciBsenYgaW5cbiAgbGV0IHQgPSBPYmoudGFnIHggaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB0aGVuIChPYmoub2JqIChPYmouZmllbGQgeCAwKSA6ICdhcmcpIGVsc2VcbiAgaWYgdCA8PiBPYmoubGF6eV90YWcgdGhlbiAoT2JqLm9iaiB4IDogJ2FyZylcbiAgZWxzZSBmb3JjZV9sYXp5X2Jsb2NrIGx6dlxuXG5cbmxldCBmb3JjZV92YWwgKGx6diA6ICdhcmcgbGF6eV90KSA9XG4gIGxldCB4ID0gT2JqLnJlcHIgbHp2IGluXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlbiAoT2JqLm9iaiAoT2JqLmZpZWxkIHggMCkgOiAnYXJnKSBlbHNlXG4gIGlmIHQgPD4gT2JqLmxhenlfdGFnIHRoZW4gKE9iai5vYmogeCA6ICdhcmcpXG4gIGVsc2UgZm9yY2VfdmFsX2xhenlfYmxvY2sgbHp2XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbTGF6eV06IGRlZmVycmVkIGNvbXB1dGF0aW9ucyAqKVxuXG5cbigqXG4gICBXQVJOSU5HOiBzb21lIHB1cnBsZSBtYWdpYyBpcyBnb2luZyBvbiBoZXJlLiAgRG8gbm90IHRha2UgdGhpcyBmaWxlXG4gICBhcyBhbiBleGFtcGxlIG9mIGhvdyB0byBwcm9ncmFtIGluIE9DYW1sLlxuKilcblxuXG4oKiBXZSBtYWtlIHVzZSBvZiB0d28gc3BlY2lhbCB0YWdzIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lOlxuICAgW2xhenlfdGFnXSBhbmQgW2ZvcndhcmRfdGFnXS5cblxuICAgQSB2YWx1ZSBvZiB0eXBlIFsnYSBMYXp5LnRdIGNhbiBiZSBvbmUgb2YgdGhyZWUgdGhpbmdzOlxuICAgMS4gQSBibG9jayBvZiBzaXplIDEgd2l0aCB0YWcgW2xhenlfdGFnXS4gIEl0cyBmaWVsZCBpcyBhIGNsb3N1cmUgb2ZcbiAgICAgIHR5cGUgW3VuaXQgLT4gJ2FdIHRoYXQgY29tcHV0ZXMgdGhlIHZhbHVlLlxuICAgMi4gQSBibG9jayBvZiBzaXplIDEgd2l0aCB0YWcgW2ZvcndhcmRfdGFnXS4gIEl0cyBmaWVsZCBpcyB0aGUgdmFsdWVcbiAgICAgIG9mIHR5cGUgWydhXSB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIDMuIEFueXRoaW5nIGVsc2UgZXhjZXB0IGEgZmxvYXQuICBUaGlzIGhhcyB0eXBlIFsnYV0gYW5kIGlzIHRoZSB2YWx1ZVxuICAgICAgdGhhdCB3YXMgY29tcHV0ZWQuXG4gICBFeGNlcHRpb25zIGFyZSBzdG9yZWQgaW4gZm9ybWF0ICgxKS5cbiAgIFRoZSBHQyB3aWxsIG1hZ2ljYWxseSBjaGFuZ2UgdGhpbmdzIGZyb20gKDIpIHRvICgzKSBhY2NvcmRpbmcgdG8gaXRzXG4gICBmYW5jeS5cblxuICAgSWYgT0NhbWwgd2FzIGNvbmZpZ3VyZWQgd2l0aCB0aGUgLWZsYXQtZmxvYXQtYXJyYXkgb3B0aW9uICh3aGljaCBpc1xuICAgY3VycmVudGx5IHRoZSBkZWZhdWx0KSwgdGhlIGZvbGxvd2luZyBpcyBhbHNvIHRydWU6XG4gICBXZSBjYW5ub3QgdXNlIHJlcHJlc2VudGF0aW9uICgzKSBmb3IgYSBbZmxvYXQgTGF6eS50XSBiZWNhdXNlXG4gICBbY2FtbF9tYWtlX2FycmF5XSBhc3N1bWVzIHRoYXQgb25seSBhIFtmbG9hdF0gdmFsdWUgY2FuIGhhdmUgdGFnXG4gICBbRG91YmxlX3RhZ10uXG5cbiAgIFdlIGhhdmUgdG8gdXNlIHRoZSBidWlsdC1pbiB0eXBlIGNvbnN0cnVjdG9yIFtsYXp5X3RdIHRvXG4gICBsZXQgdGhlIGNvbXBpbGVyIGltcGxlbWVudCB0aGUgc3BlY2lhbCB0eXBpbmcgYW5kIGNvbXBpbGF0aW9uXG4gICBydWxlcyBmb3IgdGhlIFtsYXp5XSBrZXl3b3JkLlxuKilcblxudHlwZSAnYSB0ID0gJ2EgQ2FtbGludGVybmFsTGF6eS50XG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgPSBDYW1saW50ZXJuYWxMYXp5LlVuZGVmaW5lZFxuXG5leHRlcm5hbCBtYWtlX2ZvcndhcmQgOiAnYSAtPiAnYSBsYXp5X3QgPSBcImNhbWxfbGF6eV9tYWtlX2ZvcndhcmRcIlxuXG5leHRlcm5hbCBmb3JjZSA6ICdhIHQgLT4gJ2EgPSBcIiVsYXp5X2ZvcmNlXCJcblxuXG5sZXQgZm9yY2VfdmFsID0gQ2FtbGludGVybmFsTGF6eS5mb3JjZV92YWxcblxubGV0IGZyb21fZnVuIChmIDogdW5pdCAtPiAnYXJnKSA9XG4gIGxldCB4ID0gT2JqLm5ld19ibG9jayBPYmoubGF6eV90YWcgMSBpblxuICBPYmouc2V0X2ZpZWxkIHggMCAoT2JqLnJlcHIgZik7XG4gIChPYmoub2JqIHggOiAnYXJnIHQpXG5cbmxldCBmcm9tX3ZhbCAodiA6ICdhcmcpID1cbiAgbGV0IHQgPSBPYmoudGFnIChPYmoucmVwciB2KSBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHx8IHQgPSBPYmoubGF6eV90YWcgfHwgdCA9IE9iai5kb3VibGVfdGFnIHRoZW4gYmVnaW5cbiAgICBtYWtlX2ZvcndhcmQgdlxuICBlbmQgZWxzZSBiZWdpblxuICAgIChPYmoubWFnaWMgdiA6ICdhcmcgdClcbiAgZW5kXG5cblxubGV0IGlzX3ZhbCAobCA6ICdhcmcgdCkgPSBPYmoudGFnIChPYmoucmVwciBsKSA8PiBPYmoubGF6eV90YWdcblxubGV0IGxhenlfZnJvbV9mdW4gPSBmcm9tX2Z1blxuXG5sZXQgbGF6eV9mcm9tX3ZhbCA9IGZyb21fdmFsXG5cbmxldCBsYXp5X2lzX3ZhbCA9IGlzX3ZhbFxuXG5cbmxldCBtYXAgZiB4ID1cbiAgbGF6eSAoZiAoZm9yY2UgeCkpXG5cbmxldCBtYXBfdmFsIGYgeCA9XG4gIGlmIGlzX3ZhbCB4XG4gIHRoZW4gbGF6eV9mcm9tX3ZhbCAoZiAoZm9yY2UgeCkpXG4gIGVsc2UgbGF6eSAoZiAoZm9yY2UgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU2ltb24gQ3J1YW5lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbU2VxXTogZnVuY3Rpb25hbCBpdGVyYXRvcnMgKilcblxudHlwZSArJ2Egbm9kZSA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiAnYSAqICdhIHRcblxuYW5kICdhIHQgPSB1bml0IC0+ICdhIG5vZGVcblxubGV0IGVtcHR5ICgpID0gTmlsXG5cbmxldCByZXR1cm4geCAoKSA9IENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgY29ucyB4IG5leHQgKCkgPSBDb25zICh4LCBuZXh0KVxuXG5sZXQgcmVjIGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBtYXRjaCBzZXExKCkgd2l0aFxuICB8IE5pbCAtPiBzZXEyKClcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zICh4LCBhcHBlbmQgbmV4dCBzZXEyKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoZiB4LCBtYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgICAgfCBTb21lIHkgLT4gQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgaWYgZiB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlciBmIG5leHQpXG4gICAgICBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBjb25jYXQgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgYXBwZW5kIHggKGNvbmNhdCBuZXh0KSAoKVxuXG5sZXQgcmVjIGZsYXRfbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBhcHBlbmQgKGYgeCkgKGZsYXRfbWFwIGYgbmV4dCkgKClcblxubGV0IGNvbmNhdF9tYXAgPSBmbGF0X21hcFxuXG5sZXQgcmVjIGZvbGRfbGVmdCBmIGFjYyBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+IGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgZm9sZF9sZWZ0IGYgYWNjIG5leHRcblxubGV0IHJlYyBpdGVyIGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgZiB4O1xuICAgICAgICBpdGVyIGYgbmV4dFxuXG5sZXQgcmVjIHVuZm9sZCBmIHUgKCkgPVxuICBtYXRjaCBmIHUgd2l0aFxuICB8IE5vbmUgLT4gTmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IENvbnMgKHgsIHVuZm9sZCBmIHUnKVxuXG5sZXQgaXNfZW1wdHkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zIChfLCBfKSAtPlxuICAgICAgZmFsc2VcblxubGV0IHVuY29ucyB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgU29tZSAoeCwgeHMpXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG5cblxuXG5sZXQgcmVjIGxlbmd0aF9hdXggYWNjdSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKF8sIHhzKSAtPlxuICAgICAgbGVuZ3RoX2F1eCAoYWNjdSArIDEpIHhzXG5cbmxldFtAaW5saW5lXSBsZW5ndGggeHMgPVxuICBsZW5ndGhfYXV4IDAgeHNcblxubGV0IHJlYyBpdGVyaV9hdXggZiBpIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICAoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgZiBpIHg7XG4gICAgICBpdGVyaV9hdXggZiAoaSsxKSB4c1xuXG5sZXRbQGlubGluZV0gaXRlcmkgZiB4cyA9XG4gIGl0ZXJpX2F1eCBmIDAgeHNcblxubGV0IHJlYyBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgaSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgaSB4IGluXG4gICAgICBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgKGkrMSkgeHNcblxubGV0W0BpbmxpbmVdIGZvbGRfbGVmdGkgZiBhY2N1IHhzID1cbiAgZm9sZF9sZWZ0aV9hdXggZiBhY2N1IDAgeHNcblxubGV0IHJlYyBmb3JfYWxsIHAgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHAgeCAmJiBmb3JfYWxsIHAgeHNcblxubGV0IHJlYyBleGlzdHMgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHAgeCB8fCBleGlzdHMgcCB4c1xuXG5sZXQgcmVjIGZpbmQgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZCBwIHhzXG5cbmxldCByZWMgZmluZF9tYXAgZiB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGZpbmRfbWFwIGYgeHNcbiAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHJlc3VsdFxuXG4oKiBbaXRlcjJdLCBbZm9sZF9sZWZ0Ml0sIFtmb3JfYWxsMl0sIFtleGlzdHMyXSwgW21hcDJdLCBbemlwXSB3b3JrIGFsc28gaW5cbiAgIHRoZSBjYXNlIHdoZXJlIHRoZSB0d28gc2VxdWVuY2VzIGhhdmUgZGlmZmVyZW50IGxlbmd0aHMuIFRoZXkgc3RvcCBhcyBzb29uXG4gICBhcyBvbmUgc2VxdWVuY2UgaXMgZXhoYXVzdGVkLiBUaGVpciBiZWhhdmlvciBpcyBzbGlnaHRseSBhc3ltbWV0cmljOiB3aGVuXG4gICBbeHNdIGlzIGVtcHR5LCB0aGV5IGRvIG5vdCBmb3JjZSBbeXNdOyBob3dldmVyLCB3aGVuIFt5c10gaXMgZW1wdHksIFt4c10gaXNcbiAgIGZvcmNlZCwgZXZlbiB0aG91Z2ggdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gYXBwbGljYXRpb24gW3hzKCldIHR1cm5zIG91dFxuICAgdG8gYmUgdXNlbGVzcy4gKilcblxubGV0IHJlYyBpdGVyMiBmIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICAoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgICgpXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGYgeCB5O1xuICAgICAgICAgIGl0ZXIyIGYgeHMgeXNcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgYWNjdSB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIGFjY3VcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgeCB5IGluXG4gICAgICAgICAgZm9sZF9sZWZ0MiBmIGFjY3UgeHMgeXNcblxubGV0IHJlYyBmb3JfYWxsMiBmIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeSAmJiBmb3JfYWxsMiBmIHhzIHlzXG5cbmxldCByZWMgZXhpc3RzMiBmIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBmYWxzZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGYgeCB5IHx8IGV4aXN0czIgZiB4cyB5c1xuXG5sZXQgcmVjIGVxdWFsIGVxIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gIHwgTmlsLCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgZXEgeCB5ICYmIGVxdWFsIGVxIHhzIHlzXG4gIHwgTmlsLCBDb25zIChfLCBfKVxuICB8IENvbnMgKF8sIF8pLCBOaWwgLT5cbiAgICAgIGZhbHNlXG5cbmxldCByZWMgY29tcGFyZSBjbXAgeHMgeXMgPVxuICBtYXRjaCB4cygpLCB5cygpIHdpdGhcbiAgfCBOaWwsIE5pbCAtPlxuICAgICAgMFxuICB8IENvbnMgKHgsIHhzKSwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBsZXQgYyA9IGNtcCB4IHkgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZSBjb21wYXJlIGNtcCB4cyB5c1xuICB8IE5pbCwgQ29ucyAoXywgXykgLT5cbiAgICAgIC0xXG4gIHwgQ29ucyAoXywgXyksIE5pbCAtPlxuICAgICAgKzFcblxuXG5cbigqIFtpbml0X2F1eCBmIGkgal0gaXMgdGhlIHNlcXVlbmNlIFtmIGksIC4uLiwgZiAoai0xKV0uICopXG5cbmxldCByZWMgaW5pdF9hdXggZiBpIGogKCkgPVxuICBpZiBpIDwgaiB0aGVuIGJlZ2luXG4gICAgQ29ucyAoZiBpLCBpbml0X2F1eCBmIChpICsgMSkgailcbiAgZW5kXG4gIGVsc2VcbiAgICBOaWxcblxubGV0IGluaXQgbiBmID1cbiAgaWYgbiA8IDAgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU2VxLmluaXRcIlxuICBlbHNlXG4gICAgaW5pdF9hdXggZiAwIG5cblxubGV0IHJlYyByZXBlYXQgeCAoKSA9XG4gIENvbnMgKHgsIHJlcGVhdCB4KVxuXG5sZXQgcmVjIGZvcmV2ZXIgZiAoKSA9XG4gIENvbnMgKGYoKSwgZm9yZXZlciBmKVxuXG4oKiBUaGlzIHByZWxpbWluYXJ5IGRlZmluaXRpb24gb2YgW2N5Y2xlXSByZXF1aXJlcyB0aGUgc2VxdWVuY2UgW3hzXVxuICAgdG8gYmUgbm9uZW1wdHkuIEFwcGx5aW5nIGl0IHRvIGFuIGVtcHR5IHNlcXVlbmNlIHdvdWxkIHByb2R1Y2UgYVxuICAgc2VxdWVuY2UgdGhhdCBkaXZlcmdlcyB3aGVuIGl0IGlzIGZvcmNlZC4gKilcblxubGV0IHJlYyBjeWNsZV9ub25lbXB0eSB4cyAoKSA9XG4gIGFwcGVuZCB4cyAoY3ljbGVfbm9uZW1wdHkgeHMpICgpXG5cbigqIFtjeWNsZSB4c10gY2hlY2tzIHdoZXRoZXIgW3hzXSBpcyBlbXB0eSBhbmQsIGlmIHNvLCByZXR1cm5zIGFuIGVtcHR5XG4gICBzZXF1ZW5jZS4gT3RoZXJ3aXNlLCBbY3ljbGUgeHNdIHByb2R1Y2VzIG9uZSBjb3B5IG9mIFt4c10gZm9sbG93ZWRcbiAgIHdpdGggdGhlIGluZmluaXRlIHNlcXVlbmNlIFtjeWNsZV9ub25lbXB0eSB4c10uIFRodXMsIHRoZSBub25lbXB0aW5lc3NcbiAgIGNoZWNrIGlzIHBlcmZvcm1lZCBqdXN0IG9uY2UuICopXG5cbmxldCBjeWNsZSB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMnKSAtPlxuICAgICAgQ29ucyAoeCwgYXBwZW5kIHhzJyAoY3ljbGVfbm9uZW1wdHkgeHMpKVxuXG4oKiBbaXRlcmF0ZTEgZiB4XSBpcyB0aGUgc2VxdWVuY2UgW2YgeCwgZiAoZiB4KSwgLi4uXS5cbiAgIEl0IGlzIGVxdWl2YWxlbnQgdG8gW3RhaWwgKGl0ZXJhdGUgZiB4KV0uXG4gICBbaXRlcmF0ZTFdIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbaXRlcmF0ZV0uICopXG5cbmxldCByZWMgaXRlcmF0ZTEgZiB4ICgpID1cbiAgbGV0IHkgPSBmIHggaW5cbiAgQ29ucyAoeSwgaXRlcmF0ZTEgZiB5KVxuXG4oKiBbaXRlcmF0ZSBmIHhdIGlzIHRoZSBzZXF1ZW5jZSBbeCwgZiB4LCAuLi5dLiAqKVxuXG4oKiBUaGUgcmVhc29uIHdoeSB3ZSBnaXZlIHRoaXMgc2xpZ2h0bHkgaW5kaXJlY3QgZGVmaW5pdGlvbiBvZiBbaXRlcmF0ZV0sXG4gICBhcyBvcHBvc2VkIHRvIHRoZSBtb3JlIG5haXZlIGRlZmluaXRpb24gdGhhdCBtYXkgY29tZSB0byBtaW5kLCBpcyB0aGF0XG4gICB3ZSBhcmUgY2FyZWZ1bCB0byBhdm9pZCBldmFsdWF0aW5nIFtmIHhdIHVudGlsIHRoaXMgZnVuY3Rpb24gY2FsbCBpc1xuICAgYWN0dWFsbHkgbmVjZXNzYXJ5LiBUaGUgbmFpdmUgZGVmaW5pdGlvbiAobm90IHNob3duIGhlcmUpIGNvbXB1dGVzIHRoZVxuICAgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBzZXF1ZW5jZSwgW2YgeF0sIHdoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IGlzXG4gICByZXF1ZXN0ZWQgYnkgdGhlIHVzZXIuICopXG5cbmxldCBpdGVyYXRlIGYgeCA9XG4gIGNvbnMgeCAoaXRlcmF0ZTEgZiB4KVxuXG5cblxubGV0IHJlYyBtYXBpX2F1eCBmIGkgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoZiBpIHgsIG1hcGlfYXV4IGYgKGkrMSkgeHMpXG5cbmxldFtAaW5saW5lXSBtYXBpIGYgeHMgPVxuICBtYXBpX2F1eCBmIDAgeHNcblxuKCogW3RhaWxfc2NhbiBmIHMgeHNdIGlzIGVxdWl2YWxlbnQgdG8gW3RhaWwgKHNjYW4gZiBzIHhzKV0uXG4gICBbdGFpbF9zY2FuXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW3NjYW5dLiAqKVxuXG4oKiBUaGlzIHNsaWdodGx5IGluZGlyZWN0IGRlZmluaXRpb24gb2YgW3NjYW5dIGlzIG1lYW50IHRvIGF2b2lkIGNvbXB1dGluZ1xuICAgZWxlbWVudHMgdG9vIGVhcmx5OyBzZWUgdGhlIGFib3ZlIGNvbW1lbnQgYWJvdXQgW2l0ZXJhdGUxXSBhbmQgW2l0ZXJhdGVdLiAqKVxuXG5sZXQgcmVjIHRhaWxfc2NhbiBmIHMgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbGV0IHMgPSBmIHMgeCBpblxuICAgICAgQ29ucyAocywgdGFpbF9zY2FuIGYgcyB4cylcblxubGV0IHNjYW4gZiBzIHhzID1cbiAgY29ucyBzICh0YWlsX3NjYW4gZiBzIHhzKVxuXG4oKiBbdGFrZV0gaXMgZGVmaW5lZCBpbiBzdWNoIGEgd2F5IHRoYXQgW3Rha2UgMCB4c10gcmV0dXJucyBbZW1wdHldXG4gICBpbW1lZGlhdGVseSwgd2l0aG91dCBhbGxvY2F0aW5nIGFueSBtZW1vcnkuICopXG5cbmxldCByZWMgdGFrZV9hdXggbiB4cyA9XG4gIGlmIG4gPSAwIHRoZW5cbiAgICBlbXB0eVxuICBlbHNlXG4gICAgZnVuICgpIC0+XG4gICAgICBtYXRjaCB4cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgTmlsXG4gICAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICAgIENvbnMgKHgsIHRha2VfYXV4IChuLTEpIHhzKVxuXG5sZXQgdGFrZSBuIHhzID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcS50YWtlXCI7XG4gIHRha2VfYXV4IG4geHNcblxuKCogW2ZvcmNlX2Ryb3AgbiB4c10gaXMgZXF1aXZhbGVudCB0byBbZHJvcCBuIHhzICgpXS5cbiAgIFtmb3JjZV9kcm9wIG4geHNdIHJlcXVpcmVzIFtuID4gMF0uXG4gICBbZm9yY2VfZHJvcF0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtkcm9wXS4gKilcblxubGV0IHJlYyBmb3JjZV9kcm9wIG4geHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKF8sIHhzKSAtPlxuICAgICAgbGV0IG4gPSBuIC0gMSBpblxuICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICB4cygpXG4gICAgICBlbHNlXG4gICAgICAgIGZvcmNlX2Ryb3AgbiB4c1xuXG4oKiBbZHJvcF0gaXMgZGVmaW5lZCBpbiBzdWNoIGEgd2F5IHRoYXQgW2Ryb3AgMCB4c10gcmV0dXJucyBbeHNdIGltbWVkaWF0ZWx5LFxuICAgd2l0aG91dCBhbGxvY2F0aW5nIGFueSBtZW1vcnkuICopXG5cbmxldCBkcm9wIG4geHMgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU2VxLmRyb3BcIlxuICBlbHNlIGlmIG4gPSAwIHRoZW5cbiAgICB4c1xuICBlbHNlXG4gICAgZnVuICgpIC0+XG4gICAgICBmb3JjZV9kcm9wIG4geHNcblxubGV0IHJlYyB0YWtlX3doaWxlIHAgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgaWYgcCB4IHRoZW4gQ29ucyAoeCwgdGFrZV93aGlsZSBwIHhzKSBlbHNlIE5pbFxuXG5sZXQgcmVjIGRyb3Bfd2hpbGUgcCB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIGFzIG5vZGUgLT5cbiAgICAgIGlmIHAgeCB0aGVuIGRyb3Bfd2hpbGUgcCB4cyAoKSBlbHNlIG5vZGVcblxubGV0IHJlYyBncm91cCBlcSB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBDb25zIChjb25zIHggKHRha2Vfd2hpbGUgKGVxIHgpIHhzKSwgZ3JvdXAgZXEgKGRyb3Bfd2hpbGUgKGVxIHgpIHhzKSlcblxuZXhjZXB0aW9uIEZvcmNlZF90d2ljZVxuXG5tb2R1bGUgU3VzcGVuc2lvbiA9IHN0cnVjdFxuXG4gIHR5cGUgJ2Egc3VzcGVuc2lvbiA9XG4gICAgdW5pdCAtPiAnYVxuXG4gICgqIENvbnZlcnNpb25zLiAqKVxuXG4gIGxldCB0b19sYXp5IDogJ2Egc3VzcGVuc2lvbiAtPiAnYSBMYXp5LnQgPVxuICAgIExhenkuZnJvbV9mdW5cbiAgICAoKiBmdW4gcyAtPiBsYXp5IChzKCkpICopXG5cbiAgbGV0IGZyb21fbGF6eSAocyA6ICdhIExhenkudCkgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBmdW4gKCkgLT4gTGF6eS5mb3JjZSBzXG5cbiAgKCogW21lbW9pemVdIHR1cm5zIGFuIGFyYml0cmFyeSBzdXNwZW5zaW9uIGludG8gYSBwZXJzaXN0ZW50IHN1c3BlbnNpb24uICopXG5cbiAgbGV0IG1lbW9pemUgKHMgOiAnYSBzdXNwZW5zaW9uKSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGZyb21fbGF6eSAodG9fbGF6eSBzKVxuXG4gICgqIFtmYWlsdXJlXSBpcyBhIHN1c3BlbnNpb24gdGhhdCBmYWlscyB3aGVuIGZvcmNlZC4gKilcblxuICBsZXQgZmFpbHVyZSA6IF8gc3VzcGVuc2lvbiA9XG4gICAgZnVuICgpIC0+XG4gICAgICAoKiBBIHN1c3BlbnNpb24gY3JlYXRlZCBieSBbb25jZV0gaGFzIGJlZW4gZm9yY2VkIHR3aWNlLiAqKVxuICAgICAgcmFpc2UgRm9yY2VkX3R3aWNlXG5cbiAgKCogSWYgW2ZdIGlzIGEgc3VzcGVuc2lvbiwgdGhlbiBbb25jZSBmXSBpcyBhIHN1c3BlbnNpb24gdGhhdCBjYW4gYmUgZm9yY2VkXG4gICAgIGF0IG1vc3Qgb25jZS4gSWYgaXQgaXMgZm9yY2VkIG1vcmUgdGhhbiBvbmNlLCB0aGVuIFtGb3JjZWRfdHdpY2VdIGlzXG4gICAgIHJhaXNlZC4gKilcblxuICBsZXQgb25jZSAoZiA6ICdhIHN1c3BlbnNpb24pIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgbGV0IGFjdGlvbiA9IENhbWxpbnRlcm5hbEF0b21pYy5tYWtlIGYgaW5cbiAgICBmdW4gKCkgLT5cbiAgICAgICgqIEdldCB0aGUgZnVuY3Rpb24gY3VycmVudGx5IHN0b3JlZCBpbiBbYWN0aW9uXSwgYW5kIHdyaXRlIHRoZVxuICAgICAgICAgZnVuY3Rpb24gW2ZhaWx1cmVdIGluIGl0cyBwbGFjZSwgc28gdGhlIG5leHQgYWNjZXNzIHdpbGwgcmVzdWx0XG4gICAgICAgICBpbiBhIGNhbGwgdG8gW2ZhaWx1cmUoKV0uICopXG4gICAgICBsZXQgZiA9IENhbWxpbnRlcm5hbEF0b21pYy5leGNoYW5nZSBhY3Rpb24gZmFpbHVyZSBpblxuICAgICAgZigpXG5cbmVuZCAoKiBTdXNwZW5zaW9uICopXG5cbmxldCByZWMgbWVtb2l6ZSB4cyA9XG4gIFN1c3BlbnNpb24ubWVtb2l6ZSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgQ29ucyAoeCwgbWVtb2l6ZSB4cylcbiAgKVxuXG5sZXQgcmVjIG9uY2UgeHMgPVxuICBTdXNwZW5zaW9uLm9uY2UgKGZ1biAoKSAtPlxuICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIENvbnMgKHgsIG9uY2UgeHMpXG4gIClcblxuXG5sZXQgcmVjIHppcCB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgTmlsXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIENvbnMgKCh4LCB5KSwgemlwIHhzIHlzKVxuXG5sZXQgcmVjIG1hcDIgZiB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgTmlsXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIENvbnMgKGYgeCB5LCBtYXAyIGYgeHMgeXMpXG5cbmxldCByZWMgaW50ZXJsZWF2ZSB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgeXMoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoeCwgaW50ZXJsZWF2ZSB5cyB4cylcblxuKCogW3NvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzXSBpcyBlcXVpdmFsZW50IHRvXG4gICAgIFtzb3J0ZWRfbWVyZ2UgY21wIChjb25zIHggeHMpIHlzXS5cblxuICAgW3NvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzXSBpcyBlcXVpdmFsZW50IHRvXG4gICAgIFtzb3J0ZWRfbWVyZ2UgY21wIHhzIChjb25zIHkgeXMpXS5cblxuICAgW3NvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCAoY29ucyB4IHhzKSAoY29ucyB5IHlzKV0uXG5cbiAgIFRoZXNlIHRocmVlIGZ1bmN0aW9ucyBhcmUgdXNlZCBhcyBidWlsZGluZyBibG9ja3MgaW4gdGhlIGRlZmluaXRpb25cbiAgIG9mIFtzb3J0ZWRfbWVyZ2VdLiAqKVxuXG5sZXQgcmVjIHNvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzICgpID1cbiAgbWF0Y2ggeXMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBDb25zICh4LCB4cylcbiAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5hbmQgc29ydGVkX21lcmdlMXIgY21wIHhzIHkgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIENvbnMgKHksIHlzKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXG5cbmFuZCBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXMgPVxuICBpZiBjbXAgeCB5IDw9IDAgdGhlblxuICAgIENvbnMgKHgsIHNvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzKVxuICBlbHNlXG4gICAgQ29ucyAoeSwgc29ydGVkX21lcmdlMWwgY21wIHggeHMgeXMpXG5cbmxldCBzb3J0ZWRfbWVyZ2UgY21wIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gICAgfCBOaWwsIE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IE5pbCwgY1xuICAgIHwgYywgTmlsIC0+XG4gICAgICAgIGNcbiAgICB8IENvbnMgKHgsIHhzKSwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5cbmxldCByZWMgbWFwX2ZzdCB4eXMgKCkgPVxuICBtYXRjaCB4eXMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICgoeCwgXyksIHh5cykgLT5cbiAgICAgIENvbnMgKHgsIG1hcF9mc3QgeHlzKVxuXG5sZXQgcmVjIG1hcF9zbmQgeHlzICgpID1cbiAgbWF0Y2ggeHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoKF8sIHkpLCB4eXMpIC0+XG4gICAgICBDb25zICh5LCBtYXBfc25kIHh5cylcblxubGV0IHVuemlwIHh5cyA9XG4gIG1hcF9mc3QgeHlzLCBtYXBfc25kIHh5c1xuXG5sZXQgc3BsaXQgPVxuICB1bnppcFxuXG4oKiBbZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgIFtmaWx0ZXJfbWFwIEVpdGhlci5maW5kX2xlZnQgKG1hcCBmIHhzKV0uICopXG5cbmxldCByZWMgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgRWl0aGVyLkxlZnQgeSAtPlxuICAgICAgICAgIENvbnMgKHksIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzKVxuICAgICAgfCBFaXRoZXIuUmlnaHQgXyAtPlxuICAgICAgICAgIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzICgpXG5cbmxldCByZWMgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IEVpdGhlci5MZWZ0IF8gLT5cbiAgICAgICAgICBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHMgKClcbiAgICAgIHwgRWl0aGVyLlJpZ2h0IHogLT5cbiAgICAgICAgICBDb25zICh6LCBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHMpXG5cbmxldCBwYXJ0aXRpb25fbWFwIGYgeHMgPVxuICBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyxcbiAgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzXG5cbmxldCBwYXJ0aXRpb24gcCB4cyA9XG4gIGZpbHRlciBwIHhzLCBmaWx0ZXIgKGZ1biB4IC0+IG5vdCAocCB4KSkgeHNcblxuKCogSWYgW3hzc10gaXMgYSBtYXRyaXggKGEgc2VxdWVuY2Ugb2Ygcm93cyksIHRoZW4gW3BlZWwgeHNzXSBpcyBhIHBhaXIgb2ZcbiAgIHRoZSBmaXJzdCBjb2x1bW4gKGEgc2VxdWVuY2Ugb2YgZWxlbWVudHMpIGFuZCBvZiB0aGUgcmVtYWluZGVyIG9mIHRoZVxuICAgbWF0cml4IChhIHNlcXVlbmNlIG9mIHNob3J0ZXIgcm93cykuIFRoZXNlIHR3byBzZXF1ZW5jZXMgaGF2ZSB0aGUgc2FtZVxuICAgbGVuZ3RoLiBUaGUgcm93cyBvZiB0aGUgbWF0cml4IFt4c3NdIGFyZSBub3QgcmVxdWlyZWQgdG8gaGF2ZSB0aGUgc2FtZVxuICAgbGVuZ3RoLiBBbiBlbXB0eSByb3cgaXMgaWdub3JlZC4gKilcblxuKCogQmVjYXVzZSBbcGVlbF0gdXNlcyBbdW56aXBdLCBpdHMgYXJndW1lbnQgbXVzdCBiZSBwZXJzaXN0ZW50LiBUaGUgc2FtZVxuICAgcmVtYXJrIGFwcGxpZXMgdG8gW3RyYW5zcG9zZV0sIFtkaWFnb25hbHNdLCBbcHJvZHVjdF0sIGV0Yy4gKilcblxubGV0IHBlZWwgeHNzID1cbiAgdW56aXAgKGZpbHRlcl9tYXAgdW5jb25zIHhzcylcblxubGV0IHJlYyB0cmFuc3Bvc2UgeHNzICgpID1cbiAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgeHNzIGluXG4gIGlmIGlzX2VtcHR5IGhlYWRzIHRoZW4gYmVnaW5cbiAgICBhc3NlcnQgKGlzX2VtcHR5IHRhaWxzKTtcbiAgICBOaWxcbiAgZW5kXG4gIGVsc2VcbiAgICBDb25zIChoZWFkcywgdHJhbnNwb3NlIHRhaWxzKVxuXG4oKiBUaGUgaW50ZXJuYWwgZnVuY3Rpb24gW2RpYWdvbmFsc10gdGFrZXMgYW4gZXh0cmEgYXJndW1lbnQsIFtyZW1haW5kZXJzXSxcbiAgIHdoaWNoIGNvbnRhaW5zIHRoZSByZW1haW5kZXJzIG9mIHRoZSByb3dzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW5cbiAgIGRpc2NvdmVyZWQuICopXG5cbmxldCByZWMgZGlhZ29uYWxzIHJlbWFpbmRlcnMgeHNzICgpID1cbiAgbWF0Y2ggeHNzKCkgd2l0aFxuICB8IENvbnMgKHhzLCB4c3MpIC0+XG4gICAgICBiZWdpbiBtYXRjaCB4cygpIHdpdGhcbiAgICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgICAgKCogV2UgZGlzY292ZXIgYSBuZXcgbm9uZW1wdHkgcm93IFt4IDo6IHhzXS4gVGh1cywgdGhlIG5leHQgZGlhZ29uYWxcbiAgICAgICAgICAgICBpcyBbeCA6OiBoZWFkc106IHRoaXMgZGlhZ29uYWwgYmVnaW5zIHdpdGggW3hdIGFuZCBjb250aW51ZXMgd2l0aFxuICAgICAgICAgICAgIHRoZSBmaXJzdCBlbGVtZW50IG9mIGV2ZXJ5IHJvdyBpbiBbcmVtYWluZGVyc10uIEluIHRoZSByZWN1cnNpdmVcbiAgICAgICAgICAgICBjYWxsLCB0aGUgYXJndW1lbnQgW3JlbWFpbmRlcnNdIGlzIGluc3RhbnRpYXRlZCB3aXRoIFt4cyA6OlxuICAgICAgICAgICAgIHRhaWxzXSwgd2hpY2ggbWVhbnMgdGhhdCB3ZSBoYXZlIG9uZSBtb3JlIHJlbWFpbmluZyByb3csIFt4c10sXG4gICAgICAgICAgICAgYW5kIHRoYXQgd2Uga2VlcCB0aGUgdGFpbHMgb2YgdGhlIHByZS1leGlzdGluZyByZW1haW5pbmcgcm93cy4gKilcbiAgICAgICAgICBsZXQgaGVhZHMsIHRhaWxzID0gcGVlbCByZW1haW5kZXJzIGluXG4gICAgICAgICAgQ29ucyAoY29ucyB4IGhlYWRzLCBkaWFnb25hbHMgKGNvbnMgeHMgdGFpbHMpIHhzcylcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgKCogV2UgZGlzY292ZXIgYSBuZXcgZW1wdHkgcm93LiBJbiB0aGlzIGNhc2UsIHRoZSBuZXcgZGlhZ29uYWwgaXNcbiAgICAgICAgICAgICBqdXN0IFtoZWFkc10sIGFuZCBbcmVtYWluZGVyc10gaXMgaW5zdGFudGlhdGVkIHdpdGgganVzdCBbdGFpbHNdLFxuICAgICAgICAgICAgIGFzIHdlIGRvIG5vdCBoYXZlIG9uZSBtb3JlIHJlbWFpbmluZyByb3cuICopXG4gICAgICAgICAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgcmVtYWluZGVycyBpblxuICAgICAgICAgIENvbnMgKGhlYWRzLCBkaWFnb25hbHMgdGFpbHMgeHNzKVxuICAgICAgZW5kXG4gIHwgTmlsIC0+XG4gICAgICAoKiBUaGVyZSBhcmUgbm8gbW9yZSByb3dzIHRvIGJlIGRpc2NvdmVyZWQuIFRoZXJlIHJlbWFpbnMgdG8gZXhoYXVzdFxuICAgICAgICAgdGhlIHJlbWFpbmluZyByb3dzLiAqKVxuICAgICAgdHJhbnNwb3NlIHJlbWFpbmRlcnMgKClcblxuKCogSWYgW3hzc10gaXMgYSBtYXRyaXggKGEgc2VxdWVuY2Ugb2Ygcm93cyksIHRoZW4gW2RpYWdvbmFscyB4c3NdIGlzXG4gICB0aGUgc2VxdWVuY2Ugb2YgaXRzIGRpYWdvbmFscy5cblxuICAgVGhlIGZpcnN0IGRpYWdvbmFsIGNvbnRhaW5zIGp1c3QgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlXG4gICBmaXJzdCByb3cuIFRoZSBzZWNvbmQgZGlhZ29uYWwgY29udGFpbnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlXG4gICBzZWNvbmQgcm93IGFuZCB0aGUgc2Vjb25kIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHJvdzsgYW5kIHNvIG9uLlxuICAgVGhpcyBraW5kIG9mIGRpYWdvbmFsIGlzIGluIGZhY3Qgc29tZXRpbWVzIGtub3duIGFzIGFuIGFudGlkaWFnb25hbC5cblxuICAgLSBFdmVyeSBkaWFnb25hbCBpcyBhIGZpbml0ZSBzZXF1ZW5jZS5cbiAgIC0gVGhlIHJvd3Mgb2YgdGhlIG1hdHJpeCBbeHNzXSBhcmUgbm90IHJlcXVpcmVkIHRvIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLlxuICAgLSBUaGUgbWF0cml4IFt4c3NdIGlzIG5vdCByZXF1aXJlZCB0byBiZSBmaW5pdGUgKGluIGVpdGhlciBkaXJlY3Rpb24pLlxuICAgLSBUaGUgbWF0cml4IFt4c3NdIG11c3QgYmUgcGVyc2lzdGVudC4gKilcblxubGV0IGRpYWdvbmFscyB4c3MgPVxuICBkaWFnb25hbHMgZW1wdHkgeHNzXG5cbmxldCBtYXBfcHJvZHVjdCBmIHhzIHlzID1cbiAgY29uY2F0IChkaWFnb25hbHMgKFxuICAgIG1hcCAoZnVuIHggLT5cbiAgICAgIG1hcCAoZnVuIHkgLT5cbiAgICAgICAgZiB4IHlcbiAgICAgICkgeXNcbiAgICApIHhzXG4gICkpXG5cbmxldCBwcm9kdWN0IHhzIHlzID1cbiAgbWFwX3Byb2R1Y3QgKGZ1biB4IHkgLT4gKHgsIHkpKSB4cyB5c1xuXG5sZXQgb2ZfZGlzcGVuc2VyIGl0ID1cbiAgbGV0IHJlYyBjICgpID1cbiAgICBtYXRjaCBpdCgpIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgTmlsXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQ29ucyAoeCwgYylcbiAgaW5cbiAgY1xuXG5sZXQgdG9fZGlzcGVuc2VyIHhzID1cbiAgbGV0IHMgPSByZWYgeHMgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggKCFzKSgpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOb25lXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgcyA6PSB4cztcbiAgICAgICAgU29tZSB4XG5cblxuXG5sZXQgcmVjIGludHMgaSAoKSA9XG4gIENvbnMgKGksIGludHMgKGkgKyAxKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID0gTm9uZSB8IFNvbWUgb2YgJ2FcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgc29tZSB2ID0gU29tZSB2XG5sZXQgdmFsdWUgbyB+ZGVmYXVsdCA9IG1hdGNoIG8gd2l0aCBTb21lIHYgLT4gdiB8IE5vbmUgLT4gZGVmYXVsdFxubGV0IGdldCA9IGZ1bmN0aW9uIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIm9wdGlvbiBpcyBOb25lXCJcbmxldCBiaW5kIG8gZiA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gZiB2XG5sZXQgam9pbiA9IGZ1bmN0aW9uIFNvbWUgbyAtPiBvIHwgTm9uZSAtPiBOb25lXG5sZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxubGV0IGZvbGQgfm5vbmUgfnNvbWUgPSBmdW5jdGlvbiBTb21lIHYgLT4gc29tZSB2IHwgTm9uZSAtPiBub25lXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gU29tZSB2IC0+IGYgdiB8IE5vbmUgLT4gKClcbmxldCBpc19ub25lID0gZnVuY3Rpb24gTm9uZSAtPiB0cnVlIHwgU29tZSBfIC0+IGZhbHNlXG5sZXQgaXNfc29tZSA9IGZ1bmN0aW9uIE5vbmUgLT4gZmFsc2UgfCBTb21lIF8gLT4gdHJ1ZVxuXG5sZXQgZXF1YWwgZXEgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGVxIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gdHJ1ZVxufCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIGNtcCBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gY21wIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gMFxufCBOb25lLCBTb21lIF8gLT4gLTFcbnwgU29tZSBfLCBOb25lIC0+IDFcblxubGV0IHRvX3Jlc3VsdCB+bm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gRXJyb3Igbm9uZSB8IFNvbWUgdiAtPiBPayB2XG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE5vbmUgLT4gW10gfCBTb21lIHYgLT4gW3ZdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gTm9uZSAtPiBTZXEuZW1wdHkgfCBTb21lIHYgLT4gU2VxLnJldHVybiB2XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2VcblxubGV0IG9rIHYgPSBPayB2XG5sZXQgZXJyb3IgZSA9IEVycm9yIGVcbmxldCB2YWx1ZSByIH5kZWZhdWx0ID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gZGVmYXVsdFxubGV0IGdldF9vayA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgRXJyb3IgX1wiXG5sZXQgZ2V0X2Vycm9yID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBlIHwgT2sgXyAtPiBpbnZhbGlkX2FyZyBcInJlc3VsdCBpcyBPayBfXCJcbmxldCBiaW5kIHIgZiA9IG1hdGNoIHIgd2l0aCBPayB2IC0+IGYgdiB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgam9pbiA9IGZ1bmN0aW9uIE9rIHIgLT4gciB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgbWFwIGYgPSBmdW5jdGlvbiBPayB2IC0+IE9rIChmIHYpIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXBfZXJyb3IgZiA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gRXJyb3IgKGYgZSkgfCBPayBfIGFzIHYgLT4gdlxubGV0IGZvbGQgfm9rIH5lcnJvciA9IGZ1bmN0aW9uIE9rIHYgLT4gb2sgdiB8IEVycm9yIGUgLT4gZXJyb3IgZVxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyAtPiAoKVxubGV0IGl0ZXJfZXJyb3IgZiA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZiBlIHwgT2sgXyAtPiAoKVxubGV0IGlzX29rID0gZnVuY3Rpb24gT2sgXyAtPiB0cnVlIHwgRXJyb3IgXyAtPiBmYWxzZVxubGV0IGlzX2Vycm9yID0gZnVuY3Rpb24gRXJyb3IgXyAtPiB0cnVlIHwgT2sgXyAtPiBmYWxzZVxuXG5sZXQgZXF1YWwgfm9rIH5lcnJvciByMCByMSA9IG1hdGNoIHIwLCByMSB3aXRoXG58IE9rIHYwLCBPayB2MSAtPiBvayB2MCB2MVxufCBFcnJvciBlMCwgRXJyb3IgZTEgLT4gZXJyb3IgZTAgZTFcbnwgXywgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBPayBfLCBFcnJvciBfIC0+IC0xXG58IEVycm9yIF8sIE9rIF8gLT4gMVxuXG5sZXQgdG9fb3B0aW9uID0gZnVuY3Rpb24gT2sgdiAtPiBTb21lIHYgfCBFcnJvciBfIC0+IE5vbmVcbmxldCB0b19saXN0ID0gZnVuY3Rpb24gT2sgdiAtPiBbdl0gfCBFcnJvciBfIC0+IFtdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gT2sgdiAtPiBTZXEucmV0dXJuIHYgfCBFcnJvciBfIC0+IFNlcS5lbXB0eVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBib29sID0gZmFsc2UgfCB0cnVlXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmxldCBlcXVhbCA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogYm9vbCAtPiBib29sIC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5leHRlcm5hbCB0b19pbnQgOiBib29sIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uIGZhbHNlIC0+IDAuIHwgdHJ1ZSAtPiAxLlxuXG4oKlxubGV0IG9mX3N0cmluZyA9IGZ1bmN0aW9uXG58IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG58IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxufCBfIC0+IE5vbmVcbiopXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvbiBmYWxzZSAtPiBcImZhbHNlXCIgfCB0cnVlIC0+IFwidHJ1ZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBjaHIgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcIkNoYXIuY2hyXCIgZWxzZSB1bnNhZmVfY2hyIG5cblxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCBlc2NhcGVkID0gZnVuY3Rpb25cbiAgfCAnXFwnJyAtPiBcIlxcXFwnXCJcbiAgfCAnXFxcXCcgLT4gXCJcXFxcXFxcXFwiXG4gIHwgJ1xcbicgLT4gXCJcXFxcblwiXG4gIHwgJ1xcdCcgLT4gXCJcXFxcdFwiXG4gIHwgJ1xccicgLT4gXCJcXFxcclwiXG4gIHwgJ1xcYicgLT4gXCJcXFxcYlwiXG4gIHwgJyAnIC4uICd+JyBhcyBjIC0+XG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAxIGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCBjO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG4gIHwgYyAtPlxuICAgICAgbGV0IG4gPSBjb2RlIGMgaW5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDQgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwICdcXFxcJztcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAxICh1bnNhZmVfY2hyICg0OCArIG4gLyAxMDApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAyICh1bnNhZmVfY2hyICg0OCArIChuIC8gMTApIG1vZCAxMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDMgKHVuc2FmZV9jaHIgKDQ4ICsgbiBtb2QgMTApKTtcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuXG5sZXQgbG93ZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onXG4gIHwgJ1xcMTkyJyAuLiAnXFwyMTQnXG4gIHwgJ1xcMjE2JyAuLiAnXFwyMjInIGFzIGMgLT5cbiAgICB1bnNhZmVfY2hyKGNvZGUgYyArIDMyKVxuICB8IGMgLT4gY1xuXG5sZXQgdXBwZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onXG4gIHwgJ1xcMjI0JyAuLiAnXFwyNDYnXG4gIHwgJ1xcMjQ4JyAuLiAnXFwyNTQnIGFzIGMgLT5cbiAgICB1bnNhZmVfY2hyKGNvZGUgYyAtIDMyKVxuICB8IGMgLT4gY1xuXG5sZXQgbG93ZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgKyAzMilcbiAgfCBjIC0+IGNcblxubGV0IHVwcGVyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjIC0gMzIpXG4gIHwgYyAtPiBjXG5cbnR5cGUgdCA9IGNoYXJcblxubGV0IGNvbXBhcmUgYzEgYzIgPSBjb2RlIGMxIC0gY29kZSBjMlxubGV0IGVxdWFsIChjMTogdCkgKGMyOiB0KSA9IGNvbXBhcmUgYzEgYzIgPSAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIHN0cmluZy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2ZpbGxfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB1bnNhZmVfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGJ5dGVzID0gXCIlYnl0ZXNfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmxldCBtYWtlIG4gYyA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgdW5zYWZlX2ZpbGwgcyAwIG4gYztcbiAgc1xuXG5sZXQgaW5pdCBuIGYgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgcyBpIChmIGkpXG4gIGRvbmU7XG4gIHNcblxubGV0IGVtcHR5ID0gY3JlYXRlIDBcblxubGV0IGNvcHkgcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXQgcyAwIHIgMCBsZW47XG4gIHJcblxubGV0IHRvX3N0cmluZyBiID0gdW5zYWZlX3RvX3N0cmluZyAoY29weSBiKVxubGV0IG9mX3N0cmluZyBzID0gY29weSAodW5zYWZlX29mX3N0cmluZyBzKVxuXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLnN1YiAvIEJ5dGVzLnN1YlwiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBzIG9mcyByIDAgbGVuO1xuICAgIHJcbiAgZW5kXG5cbmxldCBzdWJfc3RyaW5nIGIgb2ZzIGxlbiA9IHVuc2FmZV90b19zdHJpbmcgKHN1YiBiIG9mcyBsZW4pXG5cbigqIGFkZGl0aW9uIHdpdGggYW4gb3ZlcmZsb3cgY2hlY2sgKilcbmxldCAoKyspIGEgYiA9XG4gIGxldCBjID0gYSArIGIgaW5cbiAgbWF0Y2ggYSA8IDAsIGIgPCAwLCBjIDwgMCB3aXRoXG4gIHwgdHJ1ZSAsIHRydWUgLCBmYWxzZVxuICB8IGZhbHNlLCBmYWxzZSwgdHJ1ZSAgLT4gaW52YWxpZF9hcmcgXCJCeXRlcy5leHRlbmRcIiAoKiBvdmVyZmxvdyAqKVxuICB8IF8gLT4gY1xuXG5sZXQgZXh0ZW5kIHMgbGVmdCByaWdodCA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyArKyBsZWZ0ICsrIHJpZ2h0IGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICBsZXQgKHNyY29mZiwgZHN0b2ZmKSA9IGlmIGxlZnQgPCAwIHRoZW4gLWxlZnQsIDAgZWxzZSAwLCBsZWZ0IGluXG4gIGxldCBjcHlsZW4gPSBJbnQubWluIChsZW5ndGggcyAtIHNyY29mZikgKGxlbiAtIGRzdG9mZikgaW5cbiAgaWYgY3B5bGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IHMgc3Jjb2ZmIHIgZHN0b2ZmIGNweWxlbjtcbiAgclxuXG5sZXQgZmlsbCBzIG9mcyBsZW4gYyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmZpbGwgLyBCeXRlcy5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBzIG9mcyBsZW4gY1xuXG5sZXQgYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnl0ZXMuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG5sZXQgYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IHN0cmluZ19sZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuYmxpdCAvIEJ5dGVzLmJsaXRfc3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiQnl0ZXMuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBlbXB0eVxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW5cbiAgICAgICAgICB1bnNhZmVfYmxpdHNcbiAgICAgICAgICAgIChjcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCBzMSBzMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBzMSBpblxuICBsZXQgbDIgPSBsZW5ndGggczIgaW5cbiAgbGV0IHIgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gIHVuc2FmZV9ibGl0IHMxIDAgciAwIGwxO1xuICB1bnNhZmVfYmxpdCBzMiAwIHIgbDEgbDI7XG4gIHJcblxuXG5leHRlcm5hbCBjaGFyX2NvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgY2hhcl9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXDAxMicgfCAnXFxuJyB8ICdcXHInIHwgJ1xcdCcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHRyaW0gcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWkpIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGxldCBqID0gcmVmIChsZW4gLSAxKSBpblxuICB3aGlsZSAhaiA+PSAhaSAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFqKSBkb1xuICAgIGRlY3IgalxuICBkb25lO1xuICBpZiAhaiA+PSAhaSB0aGVuXG4gICAgc3ViIHMgIWkgKCFqIC0gIWkgKyAxKVxuICBlbHNlXG4gICAgZW1wdHlcblxubGV0IGVzY2FwZWQgcyA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgIG4gOj0gIW4gK1xuICAgICAgKG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXG4nIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXGInIC0+IDJcbiAgICAgICB8ICcgJyAuLiAnficgLT4gMVxuICAgICAgIHwgXyAtPiA0KVxuICBkb25lO1xuICBpZiAhbiA9IGxlbmd0aCBzIHRoZW4gY29weSBzIGVsc2UgYmVnaW5cbiAgICBsZXQgcycgPSBjcmVhdGUgIW4gaW5cbiAgICBuIDo9IDA7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgICAgYmVnaW4gbWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnbidcbiAgICAgIHwgJ1xcdCcgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3InXG4gICAgICB8ICdcXGInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnYidcbiAgICAgIHwgKCcgJyAuLiAnficpIGFzIGMgLT4gdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgICBsZXQgYSA9IGNoYXJfY29kZSBjIGluXG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgLyAxMDApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgKGEgLyAxMCkgbW9kIDEwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgbW9kIDEwKSk7XG4gICAgICBlbmQ7XG4gICAgICBpbmNyIG5cbiAgICBkb25lO1xuICAgIHMnXG4gIGVuZFxuXG5sZXQgbWFwIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcGkgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhclxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG5sZXQgYXBwbHkxIGYgcyA9XG4gIGlmIGxlbmd0aCBzID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY29weSBzIGluXG4gICAgdW5zYWZlX3NldCByIDAgKGYodW5zYWZlX2dldCBzIDApKTtcbiAgICByXG4gIGVuZFxuXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbnR5cGUgdCA9IGJ5dGVzXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfYnl0ZXNfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbigqIERlcHJlY2F0ZWQgZnVuY3Rpb25zIGltcGxlbWVudGVkIHZpYSBvdGhlciBkZXByZWNhdGVkIGZ1bmN0aW9ucyAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubGV0IHVwcGVyY2FzZSBzID0gbWFwIENoYXIudXBwZXJjYXNlIHNcbmxldCBsb3dlcmNhc2UgcyA9IG1hcCBDaGFyLmxvd2VyY2FzZSBzXG5cbmxldCBjYXBpdGFsaXplIHMgPSBhcHBseTEgQ2hhci51cHBlcmNhc2Ugc1xubGV0IHVuY2FwaXRhbGl6ZSBzID0gYXBwbHkxIENoYXIubG93ZXJjYXNlIHNcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGxldCBidWYgPSByZWYgKG1ha2UgMjU2ICdcXDAwMCcpIGluXG4gIGxldCByZXNpemUgKCkgPVxuICAgICgqIHJlc2l6ZSAqKVxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1pbiAoMiAqIGxlbmd0aCAhYnVmKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICBpZiBsZW5ndGggIWJ1ZiA9IG5ld19sZW4gdGhlbiBmYWlsd2l0aCBcIkJ5dGVzLm9mX3NlcTogY2Fubm90IGdyb3cgYnl0ZXNcIjtcbiAgICBsZXQgbmV3X2J1ZiA9IG1ha2UgbmV3X2xlbiAnXFwwMDAnIGluXG4gICAgYmxpdCAhYnVmIDAgbmV3X2J1ZiAwICFuO1xuICAgIGJ1ZiA6PSBuZXdfYnVmXG4gIGluXG4gIFNlcS5pdGVyXG4gICAgKGZ1biBjIC0+XG4gICAgICAgaWYgIW4gPSBsZW5ndGggIWJ1ZiB0aGVuIHJlc2l6ZSgpO1xuICAgICAgIHNldCAhYnVmICFuIGM7XG4gICAgICAgaW5jciBuKVxuICAgIGk7XG4gIHN1YiAhYnVmIDAgIW5cblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCogVGhlIGdldF8gZnVuY3Rpb25zIGFyZSBhbGwgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZ1XCJcbmV4dGVybmFsIGdldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9ieXRlc19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2J5dGVzX2dldDY0XCJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gc3dhcDE2ICh1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgdW5zYWZlX2dldF91aW50MTZfbmUgYiBpXG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9nZXRfdWludDE2X25lIGIgaVxuICBlbHNlIHN3YXAxNiAodW5zYWZlX2dldF91aW50MTZfbmUgYiBpKVxuXG5sZXQgZ2V0X2ludDggYiBpID1cbiAgKChnZXRfdWludDggYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDgpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDgpXG5cbmxldCBnZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfaW50MTZfbmUgYiBpID1cbiAgKChnZXRfdWludDE2X25lIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfbGUgYiBpID1cbiAgKChnZXRfdWludDE2X2xlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfYmUgYiBpID1cbiAgKChnZXRfdWludDE2X2JlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MzJfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDMyX2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgeFxuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfYmUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSB4IGVsc2VcbiAgdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIChzd2FwMTYgeClcblxubGV0IHNldF9pbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MTZfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF91aW50OCA9IHNldF9pbnQ4XG5sZXQgc2V0X3VpbnQxNl9uZSA9IHNldF9pbnQxNl9uZVxubGV0IHNldF91aW50MTZfYmUgPSBzZXRfaW50MTZfYmVcbmxldCBzZXRfdWludDE2X2xlID0gc2V0X2ludDE2X2xlXG5cbigqIFVURiBjb2RlY3MgYW5kIHZhbGlkYXRpb25zICopXG5cbmxldCBkZWNfaW52YWxpZCA9IFVjaGFyLnV0Zl9kZWNvZGVfaW52YWxpZFxubGV0W0BpbmxpbmVdIGRlY19yZXQgbiB1ID0gVWNoYXIudXRmX2RlY29kZSBuIChVY2hhci51bnNhZmVfb2ZfaW50IHUpXG5cbigqIEluIGNhc2Ugb2YgZGVjb2RpbmcgZXJyb3IsIGlmIHdlIGVycm9yIG9uIHRoZSBmaXJzdCBieXRlLCB3ZVxuICAgY29uc3VtZSB0aGUgYnl0ZSwgb3RoZXJ3aXNlIHdlIGNvbnN1bWUgdGhlIFtuXSBieXRlcyBwcmVjZWVkaW5nXG4gICB0aGUgZXJyb3JpbmcgYnl0ZS5cblxuICAgVGhpcyBtZWFucyB0aGF0IGlmIGEgY2xpZW50IHVzZXMgZGVjb2RlcyB3aXRob3V0IGNhcmluZyBhYm91dFxuICAgdmFsaWRpdHkgaXQgbmF0dXJhbGx5IHJlcGxhY2UgYm9ndXMgZGF0YSB3aXRoIFVjaGFyLnJlcCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBXSEFUV0cgRW5jb2Rpbmcgc3RhbmRhcmQuIE90aGVyIHNjaGVtZXMgYXJlIHBvc3NpYmxlIGJ5XG4gICBjb25zdWx0aW5nIHRoZSBudW1iZXIgb2YgdXNlZCBieXRlcyBvbiBpbnZhbGlkIGRlY29kZXMuIEZvciBtb3JlXG4gICBkZXRhaWxzIHNlZSBodHRwczovL2hzaXZvbmVuLmZpL2Jyb2tlbi11dGYtOC9cblxuICAgRm9yIHRoaXMgcmVhc29uIGluIFtnZXRfdXRmXzhfdWNoYXJdIHdlIGdyYWR1YWxseSBjaGVjayB0aGUgbmV4dFxuICAgYnl0ZSBpcyBhdmFpbGFibGUgcmF0aGVyIHRoYW4gZG9pbmcgaXQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlXG4gICBmaXJzdCBieXRlLiBDb250cmFzdCB3aXRoIFtpc192YWxpZF91dGZfOF0uICopXG5cbigqIFVURi04ICopXG5cbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3hCRiBiID0gYiBsc3IgNiA8PiAwYjEwXG5sZXRbQGlubGluZV0gbm90X2luX3hBMF90b194QkYgYiA9IGIgbHNyIDUgPD4gMGIxMDFcbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3g5RiBiID0gYiBsc3IgNSA8PiAwYjEwMFxubGV0W0BpbmxpbmVdIG5vdF9pbl94OTBfdG9feEJGIGIgPSBiIDwgMHg5MCB8fCAweEJGIDwgYlxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feDhGIGIgPSBiIGxzciA0IDw+IDB4OFxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfMiBiMCBiMSA9XG4gICgoYjAgbGFuZCAweDFGKSBsc2wgNikgbG9yXG4gICgoYjEgbGFuZCAweDNGKSlcblxubGV0W0BpbmxpbmVdIHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIgPVxuICAoKGIwIGxhbmQgMHgwRikgbHNsIDEyKSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpIGxzbCA2KSBsb3JcbiAgKChiMiBsYW5kIDB4M0YpKVxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMyA9XG4gICgoYjAgbGFuZCAweDA3KSBsc2wgMTgpIGxvclxuICAoKGIxIGxhbmQgMHgzRikgbHNsIDEyKSBsb3JcbiAgKChiMiBsYW5kIDB4M0YpIGxzbCA2KSBsb3JcbiAgKChiMyBsYW5kIDB4M0YpKVxuXG5sZXQgZ2V0X3V0Zl84X3VjaGFyIGIgaSA9XG4gIGxldCBiMCA9IGdldF91aW50OCBiIGkgaW4gKCogcmFpc2VzIGlmIFtpXSBpcyBub3QgYSB2YWxpZCBpbmRleC4gKilcbiAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDggaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBtYXRjaCBDaGFyLnVuc2FmZV9jaHIgYjAgd2l0aCAoKiBTZWUgVGhlIFVuaWNvZGUgU3RhbmRhcmQsIFRhYmxlIDMuNyAqKVxuICB8ICdcXHgwMCcgLi4gJ1xceDdGJyAtPiBkZWNfcmV0IDEgYjBcbiAgfCAnXFx4QzInIC4uICdcXHhERicgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgZGVjX3JldCAyICh1dGZfOF91Y2hhcl8yIGIwIGIxKVxuICB8ICdcXHhFMCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feEEwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEUxJyAuLiAnXFx4RUMnIHwgJ1xceEVFJyAuLiAnXFx4RUYnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgZGVjX3JldCAzICh1dGZfOF91Y2hhcl8zIGIwIGIxIGIyKVxuICB8ICdcXHhFRCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3g5RiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEYwJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94OTBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8ICdcXHhGMScgLi4gJ1xceEYzJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8ICdcXHhGNCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3g4RiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGxldCBiMyA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjMgdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGRlY19yZXQgNCAodXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMylcbiAgfCBfIC0+IGRlY19pbnZhbGlkIDFcblxubGV0IHNldF91dGZfOF91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQ4IGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweDAwN0YgLT5cbiAgICAgIHNldF91aW50OCBiIGkgdTtcbiAgICAgIDFcbiAgfCB1IHdoZW4gdSA8PSAweDA3RkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEMwIGxvciAodSBsc3IgNikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDIpXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhFMCBsb3IgKHUgbHNyIDEyKSk7XG4gICAgICAgc2V0IGIgKGkgKyAxKSAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICAzKVxuICB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhGMCBsb3IgKHUgbHNyIDE4KSk7XG4gICAgICAgc2V0IGIgKGkgKyAxKSAoMHg4MCBsb3IgKCh1IGxzciAxMikgbGFuZCAweDNGKSk7XG4gICAgICAgc2V0IGIgKGkgKyAyKSAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICA0KVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfOCBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50OCBpblxuICAgIG1hdGNoIENoYXIudW5zYWZlX2NociAoZ2V0IGIgaSkgd2l0aFxuICAgIHwgJ1xceDAwJyAuLiAnXFx4N0YnIC0+IGxvb3AgbWF4IGIgKGkgKyAxKVxuICAgIHwgJ1xceEMyJyAuLiAnXFx4REYnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEUwJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3hBMF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RTEnIC4uICdcXHhFQycgfCAnXFx4RUUnIC4uICdcXHhFRicgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEVEJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194OUYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjAnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDkwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMikpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjEnIC4uICdcXHhGMycgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGNCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feDhGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcblxuKCogVVRGLTE2QkUgKilcblxubGV0IGdldF91dGZfMTZiZV91Y2hhciBiIGkgPVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfYmUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBpZiBpID0gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gIG1hdGNoIGdldCBiIGkgd2l0aFxuICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gZGVjX3JldCAyIHVcbiAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBkZWNfaW52YWxpZCAyXG4gIHwgaGkgLT4gKCogY29tYmluZSBbaGldIHdpdGggYSBsb3cgc3Vycm9nYXRlICopXG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgKG1heCAtIGkgKyAxKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfaW52YWxpZCAyICgqIHJldHJ5IGhlcmUgKilcbiAgICAgIHwgbG8gLT5cbiAgICAgICAgICBsZXQgdSA9ICgoKGhpIGxhbmQgMHgzRkYpIGxzbCAxMCkgbG9yIChsbyBsYW5kIDB4M0ZGKSkgKyAweDEwMDAwIGluXG4gICAgICAgICAgZGVjX3JldCA0IHVcblxubGV0IHNldF91dGZfMTZiZV91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQxNl9iZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlIChzZXQgYiBpIHU7IDIpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgICBsZXQgaGkgPSAoMHhEODAwIGxvciAodScgbHNyIDEwKSkgaW5cbiAgICAgIGxldCBsbyA9ICgweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSkgaW5cbiAgICAgIHNldCBiIGkgaGk7IHNldCBiIChpICsgMikgbG87IDRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzE2YmUgYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfYmUgaW5cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgaWYgaSA9IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gbG9vcCBtYXggYiAoaSArIDIpXG4gICAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBmYWxzZVxuICAgIHwgX2hpIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBmYWxzZVxuICAgICAgICB8IF9sbyAtPiBsb29wIG1heCBiIChpICsgNClcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcblxuKCogVVRGLTE2TEUgKilcblxubGV0IGdldF91dGZfMTZsZV91Y2hhciBiIGkgPVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfbGUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBpZiBpID0gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gIG1hdGNoIGdldCBiIGkgd2l0aFxuICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gZGVjX3JldCAyIHVcbiAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBkZWNfaW52YWxpZCAyXG4gIHwgaGkgLT4gKCogY29tYmluZSBbaGldIHdpdGggYSBsb3cgc3Vycm9nYXRlICopXG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgKG1heCAtIGkgKyAxKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfaW52YWxpZCAyICgqIHJldHJ5IGhlcmUgKilcbiAgICAgIHwgbG8gLT5cbiAgICAgICAgICBsZXQgdSA9ICgoKGhpIGxhbmQgMHgzRkYpIGxzbCAxMCkgbG9yIChsbyBsYW5kIDB4M0ZGKSkgKyAweDEwMDAwIGluXG4gICAgICAgICAgZGVjX3JldCA0IHVcblxubGV0IHNldF91dGZfMTZsZV91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQxNl9sZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlIChzZXQgYiBpIHU7IDIpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgICBsZXQgaGkgPSAoMHhEODAwIGxvciAodScgbHNyIDEwKSkgaW5cbiAgICAgIGxldCBsbyA9ICgweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSkgaW5cbiAgICAgIHNldCBiIGkgaGk7IHNldCBiIChpICsgMikgbG87IDRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzE2bGUgYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfbGUgaW5cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgaWYgaSA9IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gbG9vcCBtYXggYiAoaSArIDIpXG4gICAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBmYWxzZVxuICAgIHwgX2hpIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBmYWxzZVxuICAgICAgICB8IF9sbyAtPiBsb29wIG1heCBiIChpICsgNClcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW50XG5cbmxldCB6ZXJvID0gMFxubGV0IG9uZSA9IDFcbmxldCBtaW51c19vbmUgPSAtMVxuZXh0ZXJuYWwgbmVnIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCBhZGQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCBzdWIgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCBtdWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCBkaXYgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCByZW0gOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCBsb2dvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxubGV0IGxvZ25vdCB4ID0gbG9neG9yIHggKC0xKVxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5cbigqXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcbmxldCBvZl9zdHJpbmcgcyA9IHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcbiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmxldCB0b19zdHJpbmcgeCA9IGZvcm1hdF9pbnQgXCIlZFwiIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IEdhbGxpdW0sIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU3RyaW5nIG9wZXJhdGlvbnMsIGJhc2VkIG9uIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gYnl0ZXMubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlc3RyaW5nX3NhZmVfc2V0XCJcbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfc3RyaW5nXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJXN0cmluZ191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDogc3RyaW5nIC0+IGludCAtPiAgYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9maWxsX3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbm1vZHVsZSBCID0gQnl0ZXNcblxubGV0IGJ0cyA9IEIudW5zYWZlX3RvX3N0cmluZ1xubGV0IGJvcyA9IEIudW5zYWZlX29mX3N0cmluZ1xuXG5sZXQgbWFrZSBuIGMgPVxuICBCLm1ha2UgbiBjIHw+IGJ0c1xubGV0IGluaXQgbiBmID1cbiAgQi5pbml0IG4gZiB8PiBidHNcbmxldCBlbXB0eSA9IFwiXCJcbmxldCBjb3B5IHMgPVxuICBCLmNvcHkgKGJvcyBzKSB8PiBidHNcbmxldCBvZl9ieXRlcyA9IEIudG9fc3RyaW5nXG5sZXQgdG9fYnl0ZXMgPSBCLm9mX3N0cmluZ1xubGV0IHN1YiBzIG9mcyBsZW4gPVxuICBCLnN1YiAoYm9zIHMpIG9mcyBsZW4gfD4gYnRzXG5sZXQgZmlsbCA9XG4gIEIuZmlsbFxubGV0IGJsaXQgPVxuICBCLmJsaXRfc3RyaW5nXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gXCJcIlxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW4gYnRzIEBAXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoQi5jcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCA9ICggXiApXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGl0ZXJpIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IHMgaSkgZG9uZVxuXG5sZXQgbWFwIGYgcyA9XG4gIEIubWFwIGYgKGJvcyBzKSB8PiBidHNcbmxldCBtYXBpIGYgcyA9XG4gIEIubWFwaSBmIChib3MgcykgfD4gYnRzXG5sZXQgZm9sZF9yaWdodCBmIHggYSA9XG4gIEIuZm9sZF9yaWdodCBmIChib3MgeCkgYVxubGV0IGZvbGRfbGVmdCBmIGEgeCA9XG4gIEIuZm9sZF9sZWZ0IGYgYSAoYm9zIHgpXG5sZXQgZXhpc3RzIGYgcyA9XG4gIEIuZXhpc3RzIGYgKGJvcyBzKVxubGV0IGZvcl9hbGwgZiBzID1cbiAgQi5mb3JfYWxsIGYgKGJvcyBzKVxuXG4oKiBCZXdhcmU6IHdlIGNhbm5vdCB1c2UgQi50cmltIG9yIEIuZXNjYXBlIGJlY2F1c2UgdGhleSBhbHdheXMgbWFrZSBhXG4gICBjb3B5LCBidXQgU3RyaW5nLm1saSBzcGVsbHMgb3V0IHNvbWUgY2FzZXMgd2hlcmUgd2UgYXJlIG5vdCBhbGxvd2VkXG4gICB0byBtYWtlIGEgY29weS4gKilcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBpZiBzID0gXCJcIiB0aGVuIHNcbiAgZWxzZSBpZiBpc19zcGFjZSAodW5zYWZlX2dldCBzIDApIHx8IGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgKGxlbmd0aCBzIC0gMSkpXG4gICAgdGhlbiBidHMgKEIudHJpbSAoYm9zIHMpKVxuICBlbHNlIHNcblxubGV0IGVzY2FwZWQgcyA9XG4gIGxldCByZWMgZXNjYXBlX2lmX25lZWRlZCBzIG4gaSA9XG4gICAgaWYgaSA+PSBuIHRoZW4gcyBlbHNlXG4gICAgICBtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXDAwMCcuLidcXDAzMScgfCAnXFwxMjcnLi4gJ1xcMjU1JyAtPlxuICAgICAgICAgIGJ0cyAoQi5lc2NhcGVkIChib3MgcykpXG4gICAgICB8IF8gLT4gZXNjYXBlX2lmX25lZWRlZCBzIG4gKGkrMSlcbiAgaW5cbiAgZXNjYXBlX2lmX25lZWRlZCBzIChsZW5ndGggcykgMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gICAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9XG4gIEIudXBwZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPVxuICBCLmxvd2VyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi51bmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG4oKiBEZXByZWNhdGVkIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCB2aWEgb3RoZXIgZGVwcmVjYXRlZCBmdW5jdGlvbnMgKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbmxldCB1cHBlcmNhc2UgcyA9XG4gIEIudXBwZXJjYXNlIChib3MgcykgfD4gYnRzXG5sZXQgbG93ZXJjYXNlIHMgPVxuICBCLmxvd2VyY2FzZSAoYm9zIHMpIHw+IGJ0c1xubGV0IGNhcGl0YWxpemUgcyA9XG4gIEIuY2FwaXRhbGl6ZSAoYm9zIHMpIHw+IGJ0c1xubGV0IHVuY2FwaXRhbGl6ZSBzID1cbiAgQi51bmNhcGl0YWxpemUgKGJvcyBzKSB8PiBidHNcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N0cmluZ19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IGJvcyBzIHw+IEIudG9fc2VxXG5cbmxldCB0b19zZXFpIHMgPSBib3MgcyB8PiBCLnRvX3NlcWlcblxubGV0IG9mX3NlcSBnID0gQi5vZl9zZXEgZyB8PiBidHNcblxuKCogVVRGIGRlY29kZXJzIGFuZCB2YWxpZGF0b3JzICopXG5cbmxldCBnZXRfdXRmXzhfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzhfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzggcyA9IEIuaXNfdmFsaWRfdXRmXzggKGJvcyBzKVxuXG5sZXQgZ2V0X3V0Zl8xNmJlX3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl8xNmJlX3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl8xNmJlIHMgPSBCLmlzX3ZhbGlkX3V0Zl8xNmJlIChib3MgcylcblxubGV0IGdldF91dGZfMTZsZV91Y2hhciBzIGkgPSBCLmdldF91dGZfMTZsZV91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfMTZsZSBzID0gQi5pc192YWxpZF91dGZfMTZsZSAoYm9zIHMpXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX3N0cmluZ19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjRcIlxuXG5sZXQgZ2V0X2ludDggcyBpID0gQi5nZXRfaW50OCAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2xlIHMgaSA9IEIuZ2V0X3VpbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2JlIHMgaSA9IEIuZ2V0X3VpbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbmUgcyBpID0gQi5nZXRfaW50MTZfbmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2xlIHMgaSA9IEIuZ2V0X2ludDE2X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9iZSBzIGkgPSBCLmdldF9pbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfbGUgcyBpID0gQi5nZXRfaW50MzJfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2JlIHMgaSA9IEIuZ2V0X2ludDMyX2JlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9sZSBzIGkgPSBCLmdldF9pbnQ2NF9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfYmUgcyBpID0gQi5nZXRfaW50NjRfYmUgKGJvcyBzKSBpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHVuaXQgPSAoKVxuXG5sZXQgZXF1YWwgKCkgKCkgPSB0cnVlXG5sZXQgY29tcGFyZSAoKSAoKSA9IDBcbmxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBleHRlcm5fZmxhZ3MgPVxuICAgIE5vX3NoYXJpbmdcbiAgfCBDbG9zdXJlc1xuICB8IENvbXBhdF8zMlxuKCogbm90ZTogdGhpcyB0eXBlIGRlZmluaXRpb24gaXMgdXNlZCBpbiAncnVudGltZS9kZWJ1Z2dlci5jJyAqKVxuXG5leHRlcm5hbCB0b19jaGFubmVsOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiB1bml0XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmV4dGVybmFsIHRvX2J5dGVzOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBieXRlc1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlc1wiXG5leHRlcm5hbCB0b19zdHJpbmc6ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IHN0cmluZ1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmdcIlxuZXh0ZXJuYWwgdG9fYnVmZmVyX3Vuc2FmZTpcbiAgICAgIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gaW50XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclwiXG5cbmxldCB0b19idWZmZXIgYnVmZiBvZnMgbGVuIHYgZmxhZ3MgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwudG9fYnVmZmVyOiBzdWJzdHJpbmcgb3V0IG9mIGJvdW5kc1wiXG4gIGVsc2UgdG9fYnVmZmVyX3Vuc2FmZSBidWZmIG9mcyBsZW4gdiBmbGFnc1xuXG4oKiBUaGUgZnVuY3Rpb25zIGJlbG93IHVzZSBieXRlIHNlcXVlbmNlcyBhcyBpbnB1dCwgbmV2ZXIgdXNpbmcgYW55XG4gICBtdXRhdGlvbi4gSXQgbWFrZXMgc2Vuc2UgdG8gdXNlIG5vbi1tdXRhdGVkIFtieXRlc10gcmF0aGVyIHRoYW5cbiAgIFtzdHJpbmddLCBiZWNhdXNlIHdlIHJlYWxseSB3b3JrIHdpdGggc2VxdWVuY2VzIG9mIGJ5dGVzLCBub3RcbiAgIGEgdGV4dCByZXByZXNlbnRhdGlvbi5cbiopXG5cbmV4dGVybmFsIGZyb21fY2hhbm5lbDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBmcm9tX2J5dGVzX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXNcIlxuZXh0ZXJuYWwgZGF0YV9zaXplX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZVwiXG5cbmxldCBoZWFkZXJfc2l6ZSA9IDIwXG5sZXQgZGF0YV9zaXplIGJ1ZmYgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGhlYWRlcl9zaXplXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmRhdGFfc2l6ZVwiXG4gIGVsc2UgZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mc1xubGV0IHRvdGFsX3NpemUgYnVmZiBvZnMgPSBoZWFkZXJfc2l6ZSArIGRhdGFfc2l6ZSBidWZmIG9mc1xuXG5sZXQgZnJvbV9ieXRlcyBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5mcm9tX2J5dGVzXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCBsZW4gPSBkYXRhX3NpemVfdW5zYWZlIGJ1ZmYgb2ZzIGluXG4gICAgaWYgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSAoaGVhZGVyX3NpemUgKyBsZW4pXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gICAgZWxzZSBmcm9tX2J5dGVzX3Vuc2FmZSBidWZmIG9mc1xuICBlbmRcblxubGV0IGZyb21fc3RyaW5nIGJ1ZmYgb2ZzID1cbiAgKCogQnl0ZXMudW5zYWZlX29mX3N0cmluZyBpcyBzYWZlIGhlcmUsIGFzIHRoZSBwcm9kdWNlZCBieXRlXG4gICAgIHNlcXVlbmNlIGlzIG5ldmVyIG11dGF0ZWQgKilcbiAgZnJvbV9ieXRlcyAoQnl0ZXMudW5zYWZlX29mX3N0cmluZyBidWZmKSBvZnNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGFycmF5cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGFycmF5XG5cbigqIEFycmF5IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogJ2EgYXJyYXkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbmV4dGVybmFsIGdldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcbmV4dGVybmFsIG1ha2U6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuZXh0ZXJuYWwgY3JlYXRlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIHVuc2FmZV9zdWIgOiAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X3N1YlwiXG5leHRlcm5hbCBhcHBlbmRfcHJpbSA6ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X2FwcGVuZFwiXG5leHRlcm5hbCBjb25jYXQgOiAnYSBhcnJheSBsaXN0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X2NvbmNhdFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gICdhIGFycmF5IC0+IGludCAtPiAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfYmxpdFwiXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6XG4gICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9hcnJheV9maWxsXCJcbmV4dGVybmFsIGNyZWF0ZV9mbG9hdDogaW50IC0+IGZsb2F0IGFycmF5ID0gXCJjYW1sX21ha2VfZmxvYXRfdmVjdFwiXG5sZXQgbWFrZV9mbG9hdCA9IGNyZWF0ZV9mbG9hdFxuXG5tb2R1bGUgRmxvYXRhcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gZmxvYXRhcnJheSA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IGZsb2F0YXJyYXkgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5lbmRcblxubGV0IGluaXQgbCBmID1cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2VcbiAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmluaXRcIlxuICAoKiBTZWUgIzY1NzUuIFdlIGNvdWxkIGFsc28gY2hlY2sgZm9yIG1heGltdW0gYXJyYXkgc2l6ZSwgYnV0IHRoaXMgZGVwZW5kc1xuICAgICBvbiB3aGV0aGVyIHdlIGNyZWF0ZSBhIGZsb2F0IGFycmF5IG9yIGEgcmVndWxhciBvbmUuLi4gKilcbiAgZWxzZVxuICAgbGV0IHJlcyA9IGNyZWF0ZSBsIChmIDApIGluXG4gICBmb3IgaSA9IDEgdG8gcHJlZCBsIGRvXG4gICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgIGRvbmU7XG4gICByZXNcblxubGV0IG1ha2VfbWF0cml4IHN4IHN5IGluaXQgPVxuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgZm9yIHggPSAwIHRvIHByZWQgc3ggZG9cbiAgICB1bnNhZmVfc2V0IHJlcyB4IChjcmVhdGUgc3kgaW5pdClcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBjcmVhdGVfbWF0cml4ID0gbWFrZV9tYXRyaXhcblxubGV0IGNvcHkgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW4gaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgdW5zYWZlX3N1YiBhIDAgbFxuXG5sZXQgYXBwZW5kIGExIGEyID1cbiAgbGV0IGwxID0gbGVuZ3RoIGExIGluXG4gIGlmIGwxID0gMCB0aGVuIGNvcHkgYTJcbiAgZWxzZSBpZiBsZW5ndGggYTIgPSAwIHRoZW4gdW5zYWZlX3N1YiBhMSAwIGwxXG4gIGVsc2UgYXBwZW5kX3ByaW0gYTEgYTJcblxubGV0IHN1YiBhIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGEgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LnN1YlwiXG4gIGVsc2UgdW5zYWZlX3N1YiBhIG9mcyBsZW5cblxubGV0IGZpbGwgYSBvZnMgbGVuIHYgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGEgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2XG5cbmxldCBibGl0IGExIG9mczEgYTIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggYTEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIGEyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuXG5cbmxldCBpdGVyIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZih1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgaXRlcjIgZiBhIGIgPVxuICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSBkb25lXG5cbmxldCBtYXAgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcDIgZiBhIGIgPVxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBsYSA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIChmICh1bnNhZmVfZ2V0IGEgMCkgKHVuc2FmZV9nZXQgYiAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcbiAgZW5kXG5cbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYgMCAodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCByZWMgdG9saXN0IGkgcmVzID1cbiAgICBpZiBpIDwgMCB0aGVuIHJlcyBlbHNlIHRvbGlzdCAoaSAtIDEpICh1bnNhZmVfZ2V0IGEgaSA6OiByZXMpIGluXG4gIHRvbGlzdCAobGVuZ3RoIGEgLSAxKSBbXVxuXG4oKiBDYW5ub3QgdXNlIExpc3QubGVuZ3RoIGhlcmUgYmVjYXVzZSB0aGUgTGlzdCBtb2R1bGUgZGVwZW5kcyBvbiBBcnJheS4gKilcbmxldCByZWMgbGlzdF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjdVxuICB8IF86OnQgLT4gbGlzdF9sZW5ndGggKHN1Y2MgYWNjdSkgdFxuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgYSA9IGNyZWF0ZSAobGlzdF9sZW5ndGggMCBsKSBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGkrMSkgdGwgaW5cbiAgICAgIGZpbGwgMSB0bFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2MgaW5wdXRfYXJyYXkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0X2FycmF5IGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoYWNjLCBbfHxdKSBlbHNlIGJlZ2luXG4gICAgbGV0IGFjYywgZWx0ID0gZiBhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgMCkgaW5cbiAgICBsZXQgb3V0cHV0X2FycmF5ID0gY3JlYXRlIGxlbiBlbHQgaW5cbiAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgYWNjJywgZWx0ID0gZiAhYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IGkpIGluXG4gICAgICBhY2MgOj0gYWNjJztcbiAgICAgIHVuc2FmZV9zZXQgb3V0cHV0X2FycmF5IGkgZWx0O1xuICAgIGRvbmU7XG4gICAgIWFjYywgb3V0cHV0X2FycmF5XG4gIGVuZFxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZm9yX2FsbDJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBleGlzdHMyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5leGlzdHMyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBtZW1xIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHggPT0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX29wdCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgIGVsc2UgbG9vcCAoc3VjYyBpKVxuICBpblxuICBsb29wIDBcblxubGV0IGZpbmRfbWFwIGYgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGYgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoc3VjYyBpKVxuICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgeCA9XG4gIGlmIHggPSBbfHxdIHRoZW4gW3x8XSwgW3x8XVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGEwLCBiMCA9IHVuc2FmZV9nZXQgeCAwIGluXG4gICAgbGV0IG4gPSBsZW5ndGggeCBpblxuICAgIGxldCBhID0gY3JlYXRlIG4gYTAgaW5cbiAgICBsZXQgYiA9IGNyZWF0ZSBuIGIwIGluXG4gICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICBsZXQgYWksIGJpID0gdW5zYWZlX2dldCB4IGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIGFpO1xuICAgICAgdW5zYWZlX3NldCBiIGkgYmlcbiAgICBkb25lO1xuICAgIGEsIGJcbiAgZW5kXG5cbmxldCBjb21iaW5lIGEgYiA9XG4gIGxldCBuYSA9IGxlbmd0aCBhIGluXG4gIGxldCBuYiA9IGxlbmd0aCBiIGluXG4gIGlmIG5hIDw+IG5iIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5jb21iaW5lXCI7XG4gIGlmIG5hID0gMCB0aGVuIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCB4ID0gY3JlYXRlIG5hICh1bnNhZmVfZ2V0IGEgMCwgdW5zYWZlX2dldCBiIDApIGluXG4gICAgZm9yIGkgPSAxIHRvIG5hIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCB4IGkgKHVuc2FmZV9nZXQgYSBpLCB1bnNhZmVfZ2V0IGIgaSlcbiAgICBkb25lO1xuICAgIHhcbiAgZW5kXG5cbmV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG5sZXQgc29ydCBjbXAgYSA9XG4gIGxldCBtYXhzb24gbCBpID1cbiAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICF4XG4gICAgZW5kIGVsc2VcbiAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgdGhlbiBpMzErMVxuICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICBpblxuICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgIGJ1YmJsZWRvd24gbCBqXG4gIGluXG4gIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgc2V0IGEgaSBlO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgZG9uZTtcbiAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuXG5sZXQgY3V0b2ZmID0gNVxubGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICBlbmRcbiAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgaW5cbiAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgZGVjciBqO1xuICAgICAgZG9uZTtcbiAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICBkb25lO1xuICBpblxuICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgbGV0IHQgPSBtYWtlIGwyIChnZXQgYSAwKSBpblxuICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICBlbmRcblxuXG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgb2ZfcmV2X2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGxlbiA9IGxpc3RfbGVuZ3RoIDAgbCBpblxuICAgICAgbGV0IGEgPSBjcmVhdGUgbGVuIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgICAgaW5cbiAgICAgIGZpbGwgKGxlbi0yKSB0bFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgb2ZfcmV2X2xpc3QgbFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDMyXTogMzItYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDMyID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDMyIC0+IGludCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX2Zsb2F0XCIgXCJjYW1sX2ludDMyX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQzMiAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQzMl90b19mbG9hdFwiIFwiY2FtbF9pbnQzMl90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgemVybyA9IDBsXG5sZXQgb25lID0gMWxcbmxldCBtaW51c19vbmUgPSAtMWxcbmxldCBzdWNjIG4gPSBhZGQgbiAxbFxubGV0IHByZWQgbiA9IHN1YiBuIDFsXG5sZXQgYWJzIG4gPSBpZiBuID49IDBsIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgbWluX2ludCA9IDB4ODAwMDAwMDBsXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZsXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFsKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gIHwgMzIgLT5cbiAgICAgIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gICAgICBmdW4gbiAtPlxuICAgICAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICB8IDY0IC0+XG4gICAgICAoKiBTbyB0aGF0IGl0IGNvbXBpbGVzIGluIDMyLWJpdCAqKVxuICAgICAgbGV0IG1hc2sgPSAweEZGRkYgbHNsIDE2IGxvciAweEZGRkYgaW5cbiAgICAgIGZ1biBuIC0+IFNvbWUgKHRvX2ludCBuIGxhbmQgbWFzaylcbiAgfCBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZyA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMiA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gaW50MzJcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcGFyc2luZyBlbmdpbmUgKilcblxub3BlbiBMZXhpbmdcblxuKCogSW50ZXJuYWwgaW50ZXJmYWNlIHRvIHRoZSBwYXJzaW5nIGVuZ2luZSAqKVxuXG50eXBlIHBhcnNlcl9lbnYgPVxuICB7IG11dGFibGUgc19zdGFjayA6IGludCBhcnJheTsgICAgICAgICgqIFN0YXRlcyAqKVxuICAgIG11dGFibGUgdl9zdGFjayA6IE9iai50IGFycmF5OyAgICAgICgqIFNlbWFudGljIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgKCogU3RhcnQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzeW1iX2VuZF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAgICgqIEVuZCBwb3NpdGlvbnMgKilcbiAgICBtdXRhYmxlIHN0YWNrc2l6ZSA6IGludDsgICAgICAgICAgICAoKiBTaXplIG9mIHRoZSBzdGFja3MgKilcbiAgICBtdXRhYmxlIHN0YWNrYmFzZSA6IGludDsgICAgICAgICAgICAoKiBCYXNlIHNwIGZvciBjdXJyZW50IHBhcnNlICopXG4gICAgbXV0YWJsZSBjdXJyX2NoYXIgOiBpbnQ7ICAgICAgICAgICAgKCogTGFzdCB0b2tlbiByZWFkICopXG4gICAgbXV0YWJsZSBsdmFsIDogT2JqLnQ7ICAgICAgICAgICAgICAgKCogSXRzIHNlbWFudGljIGF0dHJpYnV0ZSAqKVxuICAgIG11dGFibGUgc3ltYl9zdGFydCA6IHBvc2l0aW9uOyAgICAgICgqIFN0YXJ0IHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sKilcbiAgICBtdXRhYmxlIHN5bWJfZW5kIDogcG9zaXRpb247ICAgICAgICAoKiBFbmQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1ib2wgKilcbiAgICBtdXRhYmxlIGFzcCA6IGludDsgICAgICAgICAgICAgICAgICAoKiBUaGUgc3RhY2sgcG9pbnRlciBmb3IgYXR0cmlidXRlcyAqKVxuICAgIG11dGFibGUgcnVsZV9sZW4gOiBpbnQ7ICAgICAgICAgICAgICgqIE51bWJlciBvZiByaHMgaXRlbXMgaW4gdGhlIHJ1bGUgKilcbiAgICBtdXRhYmxlIHJ1bGVfbnVtYmVyIDogaW50OyAgICAgICAgICAoKiBSdWxlIG51bWJlciB0byByZWR1Y2UgYnkgKilcbiAgICBtdXRhYmxlIHNwIDogaW50OyAgICAgICAgICAgICAgICAgICAoKiBTYXZlZCBzcCBmb3IgcGFyc2VfZW5naW5lICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6IGludDsgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3RhdGUgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgZXJyZmxhZyA6IGludCB9ICAgICAgICAgICAgICgqIFNhdmVkIGVycm9yIGZsYWcgZm9yIHBhcnNlX2VuZ2luZSAqKVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxudHlwZSBwYXJzZV90YWJsZXMgPVxuICB7IGFjdGlvbnMgOiAocGFyc2VyX2VudiAtPiBPYmoudCkgYXJyYXk7XG4gICAgdHJhbnNsX2NvbnN0IDogaW50IGFycmF5O1xuICAgIHRyYW5zbF9ibG9jayA6IGludCBhcnJheTtcbiAgICBsaHMgOiBzdHJpbmc7XG4gICAgbGVuIDogc3RyaW5nO1xuICAgIGRlZnJlZCA6IHN0cmluZztcbiAgICBkZ290byA6IHN0cmluZztcbiAgICBzaW5kZXggOiBzdHJpbmc7XG4gICAgcmluZGV4IDogc3RyaW5nO1xuICAgIGdpbmRleCA6IHN0cmluZztcbiAgICB0YWJsZXNpemUgOiBpbnQ7XG4gICAgdGFibGUgOiBzdHJpbmc7XG4gICAgY2hlY2sgOiBzdHJpbmc7XG4gICAgZXJyb3JfZnVuY3Rpb24gOiBzdHJpbmcgLT4gdW5pdDtcbiAgICBuYW1lc19jb25zdCA6IHN0cmluZztcbiAgICBuYW1lc19ibG9jayA6IHN0cmluZyB9XG5cbmV4Y2VwdGlvbiBZWWV4aXQgb2YgT2JqLnRcbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuXG50eXBlIHBhcnNlcl9pbnB1dCA9XG4gICAgU3RhcnRcbiAgfCBUb2tlbl9yZWFkXG4gIHwgU3RhY2tzX2dyb3duXzFcbiAgfCBTdGFja3NfZ3Jvd25fMlxuICB8IFNlbWFudGljX2FjdGlvbl9jb21wdXRlZFxuICB8IEVycm9yX2RldGVjdGVkXG5cbnR5cGUgcGFyc2VyX291dHB1dCA9XG4gICAgUmVhZF90b2tlblxuICB8IFJhaXNlX3BhcnNlX2Vycm9yXG4gIHwgR3Jvd19zdGFja3NfMVxuICB8IEdyb3dfc3RhY2tzXzJcbiAgfCBDb21wdXRlX3NlbWFudGljX2FjdGlvblxuICB8IENhbGxfZXJyb3JfZnVuY3Rpb25cblxuKCogdG8gYXZvaWQgd2FybmluZ3MgKilcbmxldCBfID0gW1JlYWRfdG9rZW47IFJhaXNlX3BhcnNlX2Vycm9yOyBHcm93X3N0YWNrc18xOyBHcm93X3N0YWNrc18yO1xuICAgICAgICAgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb247IENhbGxfZXJyb3JfZnVuY3Rpb25dXG5cbmV4dGVybmFsIHBhcnNlX2VuZ2luZSA6XG4gICAgcGFyc2VfdGFibGVzIC0+IHBhcnNlcl9lbnYgLT4gcGFyc2VyX2lucHV0IC0+IE9iai50IC0+IHBhcnNlcl9vdXRwdXRcbiAgICA9IFwiY2FtbF9wYXJzZV9lbmdpbmVcIlxuXG5leHRlcm5hbCBzZXRfdHJhY2U6IGJvb2wgLT4gYm9vbFxuICAgID0gXCJjYW1sX3NldF9wYXJzZXJfdHJhY2VcIlxuXG5sZXQgZW52ID1cbiAgeyBzX3N0YWNrID0gQXJyYXkubWFrZSAxMDAgMDtcbiAgICB2X3N0YWNrID0gQXJyYXkubWFrZSAxMDAgKE9iai5yZXByICgpKTtcbiAgICBzeW1iX3N0YXJ0X3N0YWNrID0gQXJyYXkubWFrZSAxMDAgZHVtbXlfcG9zO1xuICAgIHN5bWJfZW5kX3N0YWNrID0gQXJyYXkubWFrZSAxMDAgZHVtbXlfcG9zO1xuICAgIHN0YWNrc2l6ZSA9IDEwMDtcbiAgICBzdGFja2Jhc2UgPSAwO1xuICAgIGN1cnJfY2hhciA9IDA7XG4gICAgbHZhbCA9IE9iai5yZXByICgpO1xuICAgIHN5bWJfc3RhcnQgPSBkdW1teV9wb3M7XG4gICAgc3ltYl9lbmQgPSBkdW1teV9wb3M7XG4gICAgYXNwID0gMDtcbiAgICBydWxlX2xlbiA9IDA7XG4gICAgcnVsZV9udW1iZXIgPSAwO1xuICAgIHNwID0gMDtcbiAgICBzdGF0ZSA9IDA7XG4gICAgZXJyZmxhZyA9IDAgfVxuXG5sZXQgZ3Jvd19zdGFja3MoKSA9XG4gIGxldCBvbGRzaXplID0gZW52LnN0YWNrc2l6ZSBpblxuICBsZXQgbmV3c2l6ZSA9IG9sZHNpemUgKiAyIGluXG4gIGxldCBuZXdfcyA9IEFycmF5Lm1ha2UgbmV3c2l6ZSAwXG4gIGFuZCBuZXdfdiA9IEFycmF5Lm1ha2UgbmV3c2l6ZSAoT2JqLnJlcHIgKCkpXG4gIGFuZCBuZXdfc3RhcnQgPSBBcnJheS5tYWtlIG5ld3NpemUgZHVtbXlfcG9zXG4gIGFuZCBuZXdfZW5kID0gQXJyYXkubWFrZSBuZXdzaXplIGR1bW15X3BvcyBpblxuICAgIEFycmF5LmJsaXQgZW52LnNfc3RhY2sgMCBuZXdfcyAwIG9sZHNpemU7XG4gICAgZW52LnNfc3RhY2sgPC0gbmV3X3M7XG4gICAgQXJyYXkuYmxpdCBlbnYudl9zdGFjayAwIG5ld192IDAgb2xkc2l6ZTtcbiAgICBlbnYudl9zdGFjayA8LSBuZXdfdjtcbiAgICBBcnJheS5ibGl0IGVudi5zeW1iX3N0YXJ0X3N0YWNrIDAgbmV3X3N0YXJ0IDAgb2xkc2l6ZTtcbiAgICBlbnYuc3ltYl9zdGFydF9zdGFjayA8LSBuZXdfc3RhcnQ7XG4gICAgQXJyYXkuYmxpdCBlbnYuc3ltYl9lbmRfc3RhY2sgMCBuZXdfZW5kIDAgb2xkc2l6ZTtcbiAgICBlbnYuc3ltYl9lbmRfc3RhY2sgPC0gbmV3X2VuZDtcbiAgICBlbnYuc3RhY2tzaXplIDwtIG5ld3NpemVcblxubGV0IGNsZWFyX3BhcnNlcigpID1cbiAgQXJyYXkuZmlsbCBlbnYudl9zdGFjayAwIGVudi5zdGFja3NpemUgKE9iai5yZXByICgpKTtcbiAgZW52Lmx2YWwgPC0gT2JqLnJlcHIgKClcblxubGV0IGN1cnJlbnRfbG9va2FoZWFkX2Z1biA9IHJlZiAoZnVuIChfIDogT2JqLnQpIC0+IGZhbHNlKVxuXG5sZXQgeXlwYXJzZSB0YWJsZXMgc3RhcnQgbGV4ZXIgbGV4YnVmID1cbiAgbGV0IHJlYyBsb29wIGNtZCBhcmcgPVxuICAgIG1hdGNoIHBhcnNlX2VuZ2luZSB0YWJsZXMgZW52IGNtZCBhcmcgd2l0aFxuICAgICAgUmVhZF90b2tlbiAtPlxuICAgICAgICBsZXQgdCA9IE9iai5yZXByKGxleGVyIGxleGJ1ZikgaW5cbiAgICAgICAgZW52LnN5bWJfc3RhcnQgPC0gbGV4YnVmLmxleF9zdGFydF9wO1xuICAgICAgICBlbnYuc3ltYl9lbmQgPC0gbGV4YnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGxvb3AgVG9rZW5fcmVhZCB0XG4gICAgfCBSYWlzZV9wYXJzZV9lcnJvciAtPlxuICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgIHwgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb24gLT5cbiAgICAgICAgbGV0IChhY3Rpb24sIHZhbHVlKSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICAoU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkLCB0YWJsZXMuYWN0aW9ucy4oZW52LnJ1bGVfbnVtYmVyKSBlbnYpXG4gICAgICAgICAgd2l0aCBQYXJzZV9lcnJvciAtPlxuICAgICAgICAgICAgKEVycm9yX2RldGVjdGVkLCBPYmoucmVwciAoKSkgaW5cbiAgICAgICAgbG9vcCBhY3Rpb24gdmFsdWVcbiAgICB8IEdyb3dfc3RhY2tzXzEgLT5cbiAgICAgICAgZ3Jvd19zdGFja3MoKTsgbG9vcCBTdGFja3NfZ3Jvd25fMSAoT2JqLnJlcHIgKCkpXG4gICAgfCBHcm93X3N0YWNrc18yIC0+XG4gICAgICAgIGdyb3dfc3RhY2tzKCk7IGxvb3AgU3RhY2tzX2dyb3duXzIgKE9iai5yZXByICgpKVxuICAgIHwgQ2FsbF9lcnJvcl9mdW5jdGlvbiAtPlxuICAgICAgICB0YWJsZXMuZXJyb3JfZnVuY3Rpb24gXCJzeW50YXggZXJyb3JcIjtcbiAgICAgICAgbG9vcCBFcnJvcl9kZXRlY3RlZCAoT2JqLnJlcHIgKCkpIGluXG4gIGxldCBpbml0X2FzcCA9IGVudi5hc3BcbiAgYW5kIGluaXRfc3AgPSBlbnYuc3BcbiAgYW5kIGluaXRfc3RhY2tiYXNlID0gZW52LnN0YWNrYmFzZVxuICBhbmQgaW5pdF9zdGF0ZSA9IGVudi5zdGF0ZVxuICBhbmQgaW5pdF9jdXJyX2NoYXIgPSBlbnYuY3Vycl9jaGFyXG4gIGFuZCBpbml0X2x2YWwgPSBlbnYubHZhbFxuICBhbmQgaW5pdF9lcnJmbGFnID0gZW52LmVycmZsYWcgaW5cbiAgZW52LnN0YWNrYmFzZSA8LSBlbnYuc3AgKyAxO1xuICBlbnYuY3Vycl9jaGFyIDwtIHN0YXJ0O1xuICBlbnYuc3ltYl9lbmQgPC0gbGV4YnVmLmxleF9jdXJyX3A7XG4gIHRyeVxuICAgIGxvb3AgU3RhcnQgKE9iai5yZXByICgpKVxuICB3aXRoIGV4biAtPlxuICAgIGxldCBjdXJyX2NoYXIgPSBlbnYuY3Vycl9jaGFyIGluXG4gICAgZW52LmFzcCA8LSBpbml0X2FzcDtcbiAgICBlbnYuc3AgPC0gaW5pdF9zcDtcbiAgICBlbnYuc3RhY2tiYXNlIDwtIGluaXRfc3RhY2tiYXNlO1xuICAgIGVudi5zdGF0ZSA8LSBpbml0X3N0YXRlO1xuICAgIGVudi5jdXJyX2NoYXIgPC0gaW5pdF9jdXJyX2NoYXI7XG4gICAgZW52Lmx2YWwgPC0gaW5pdF9sdmFsO1xuICAgIGVudi5lcnJmbGFnIDwtIGluaXRfZXJyZmxhZztcbiAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgWVlleGl0IHYgLT5cbiAgICAgICAgT2JqLm1hZ2ljIHZcbiAgICB8IF8gLT5cbiAgICAgICAgY3VycmVudF9sb29rYWhlYWRfZnVuIDo9XG4gICAgICAgICAgKGZ1biB0b2sgLT5cbiAgICAgICAgICAgIGlmIE9iai5pc19ibG9jayB0b2tcbiAgICAgICAgICAgIHRoZW4gdGFibGVzLnRyYW5zbF9ibG9jay4oT2JqLnRhZyB0b2spID0gY3Vycl9jaGFyXG4gICAgICAgICAgICBlbHNlIHRhYmxlcy50cmFuc2xfY29uc3QuKE9iai5tYWdpYyB0b2spID0gY3Vycl9jaGFyKTtcbiAgICAgICAgcmFpc2UgZXhuXG5cbmxldCBwZWVrX3ZhbCBlbnYgbiA9XG4gIE9iai5tYWdpYyBlbnYudl9zdGFjay4oZW52LmFzcCAtIG4pXG5cbmxldCBzeW1ib2xfc3RhcnRfcG9zICgpID1cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPD0gMCB0aGVuIGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcClcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgc3QgPSBlbnYuc3ltYl9zdGFydF9zdGFjay4oZW52LmFzcCAtIGkgKyAxKSBpblxuICAgICAgbGV0IGVuID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwIC0gaSArIDEpIGluXG4gICAgICBpZiBzdCA8PiBlbiB0aGVuIHN0IGVsc2UgbG9vcCAoaSAtIDEpXG4gICAgZW5kXG4gIGluXG4gIGxvb3AgZW52LnJ1bGVfbGVuXG5cbmxldCBzeW1ib2xfZW5kX3BvcyAoKSA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcClcbmxldCByaHNfc3RhcnRfcG9zIG4gPSBlbnYuc3ltYl9zdGFydF9zdGFjay4oZW52LmFzcCAtIChlbnYucnVsZV9sZW4gLSBuKSlcbmxldCByaHNfZW5kX3BvcyBuID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwIC0gKGVudi5ydWxlX2xlbiAtIG4pKVxuXG5sZXQgc3ltYm9sX3N0YXJ0ICgpID0gKHN5bWJvbF9zdGFydF9wb3MgKCkpLnBvc19jbnVtXG5sZXQgc3ltYm9sX2VuZCAoKSA9IChzeW1ib2xfZW5kX3BvcyAoKSkucG9zX2NudW1cbmxldCByaHNfc3RhcnQgbiA9IChyaHNfc3RhcnRfcG9zIG4pLnBvc19jbnVtXG5sZXQgcmhzX2VuZCBuID0gKHJoc19lbmRfcG9zIG4pLnBvc19jbnVtXG5cbmxldCBpc19jdXJyZW50X2xvb2thaGVhZCB0b2sgPVxuICAoIWN1cnJlbnRfbG9va2FoZWFkX2Z1bikoT2JqLnJlcHIgdG9rKVxuXG5sZXQgcGFyc2VfZXJyb3IgKF8gOiBzdHJpbmcpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU2V0cyBvdmVyIG9yZGVyZWQgdHlwZXMgKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUgZWx0XG4gICAgdHlwZSB0XG4gICAgdmFsIGVtcHR5OiB0XG4gICAgdmFsIGlzX2VtcHR5OiB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiBlbHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGFkZDogZWx0IC0+IHQgLT4gdFxuICAgIHZhbCBzaW5nbGV0b246IGVsdCAtPiB0XG4gICAgdmFsIHJlbW92ZTogZWx0IC0+IHQgLT4gdFxuICAgIHZhbCB1bmlvbjogdCAtPiB0IC0+IHRcbiAgICB2YWwgaW50ZXI6IHQgLT4gdCAtPiB0XG4gICAgdmFsIGRpc2pvaW50OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBkaWZmOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBzdWJzZXQ6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChlbHQgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gICAgdmFsIG1hcDogKGVsdCAtPiBlbHQpIC0+IHQgLT4gdFxuICAgIHZhbCBmb2xkOiAoZWx0IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gICAgdmFsIGZvcl9hbGw6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIGV4aXN0czogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZmlsdGVyOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoZWx0IC0+IGVsdCBvcHRpb24pIC0+IHQgLT4gdFxuICAgIHZhbCBwYXJ0aXRpb246IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0ICogdFxuICAgIHZhbCBjYXJkaW5hbDogdCAtPiBpbnRcbiAgICB2YWwgZWxlbWVudHM6IHQgLT4gZWx0IGxpc3RcbiAgICB2YWwgbWluX2VsdDogdCAtPiBlbHRcbiAgICB2YWwgbWluX2VsdF9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBtYXhfZWx0OiB0IC0+IGVsdFxuICAgIHZhbCBtYXhfZWx0X29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGNob29zZTogdCAtPiBlbHRcbiAgICB2YWwgY2hvb3NlX29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIHNwbGl0OiBlbHQgLT4gdCAtPiB0ICogYm9vbCAqIHRcbiAgICB2YWwgZmluZDogZWx0IC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfb3B0OiBlbHQgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfZmlyc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfbGFzdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBvZl9saXN0OiBlbHQgbGlzdCAtPiB0XG4gICAgdmFsIHRvX3NlcV9mcm9tIDogZWx0IC0+IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIHRvX3NlcSA6IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogZWx0IFNlcS50IC0+IHQgLT4gdFxuICAgIHZhbCBvZl9zZXEgOiBlbHQgU2VxLnQgLT4gdFxuICBlbmRcblxubW9kdWxlIE1ha2UoT3JkOiBPcmRlcmVkVHlwZSkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGVsdCA9IE9yZC50XG4gICAgdHlwZSB0ID0gRW1wdHkgfCBOb2RlIG9mIHtsOnQ7IHY6ZWx0OyByOnQ7IGg6aW50fVxuXG4gICAgKCogU2V0cyBhcmUgcmVwcmVzZW50ZWQgYnkgYmFsYW5jZWQgYmluYXJ5IHRyZWVzICh0aGUgaGVpZ2h0cyBvZiB0aGVcbiAgICAgICBjaGlsZHJlbiBkaWZmZXIgYnkgYXQgbW9zdCAyICopXG5cbiAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtofSAtPiBoXG5cbiAgICAoKiBDcmVhdGVzIGEgbmV3IG5vZGUgd2l0aCBsZWZ0IHNvbiBsLCB2YWx1ZSB2IGFuZCByaWdodCBzb24gci5cbiAgICAgICBXZSBtdXN0IGhhdmUgYWxsIGVsZW1lbnRzIG9mIGwgPCB2IDwgYWxsIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgbCBhbmQgciBtdXN0IGJlIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLlxuICAgICAgIElubGluZSBleHBhbnNpb24gb2YgaGVpZ2h0IGZvciBiZXR0ZXIgc3BlZWQuICopXG5cbiAgICBsZXQgY3JlYXRlIGwgdiByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBOb2Rle2w7IHY7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgICgqIFNhbWUgYXMgY3JlYXRlLCBidXQgcGVyZm9ybXMgb25lIHN0ZXAgb2YgcmViYWxhbmNpbmcgaWYgbmVjZXNzYXJ5LlxuICAgICAgIEFzc3VtZXMgbCBhbmQgciBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMy5cbiAgICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGNyZWF0ZSBmb3IgYmV0dGVyIHNwZWVkIGluIHRoZSBtb3N0IGZyZXF1ZW50IGNhc2VcbiAgICAgICB3aGVyZSBubyByZWJhbGFuY2luZyBpcyByZXF1aXJlZC4gKilcblxuICAgIGxldCBiYWwgbCB2IHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGlmIGhsID4gaHIgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9bGw7IHY9bHY7IHI9bHJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIGxsIGx2IChjcmVhdGUgbHIgdiByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgcj1scnJ9LT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxybCkgbHJ2IChjcmVhdGUgbHJyIHYgcilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1ybDsgdj1ydjsgcj1ycn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgcmwpIHJ2IHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyByPXJscn0gLT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBybGwpIHJsdiAoY3JlYXRlIHJsciBydiBycilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTm9kZXtsOyB2OyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICAoKiBJbnNlcnRpb24gb2Ygb25lIGVsZW1lbnQgKilcblxuICAgIGxldCByZWMgYWRkIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gdCBlbHNlXG4gICAgICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gYWRkIHggbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIHQgZWxzZSBiYWwgbGwgdiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIHQgZWxzZSBiYWwgbCB2IHJyXG5cbiAgICBsZXQgc2luZ2xldG9uIHggPSBOb2Rle2w9RW1wdHk7IHY9eDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCB2IGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGVsZW1lbnRzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGVsZW1lbnQuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2VsZW1lbnQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9lbGVtZW50IHggbCkgdiByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfZWxlbWVudCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiAoYWRkX21heF9lbGVtZW50IHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2VsZW1lbnQgdiByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9lbGVtZW50IHYgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyByPWxyOyBoPWxofSwgTm9kZXtsPXJsOyB2PXJ2OyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiAoam9pbiBsciB2IHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgcmwpIHJ2IHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IHJcblxuICAgICgqIFNtYWxsZXN0IGFuZCBncmVhdGVzdCBlbGVtZW50IG9mIGEgc2V0ICopXG5cbiAgICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyB2fSAtPiB2XG4gICAgICB8IE5vZGV7bH0gLT4gbWluX2VsdCBsXG5cbiAgICBsZXQgcmVjIG1pbl9lbHRfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHZ9IC0+IFNvbWUgdlxuICAgICAgfCBOb2Rle2x9IC0+IG1pbl9lbHRfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle3Y7IHI9RW1wdHl9IC0+IHZcbiAgICAgIHwgTm9kZXtyfSAtPiBtYXhfZWx0IHJcblxuICAgIGxldCByZWMgbWF4X2VsdF9vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7djsgcj1FbXB0eX0gLT4gU29tZSB2XG4gICAgICB8IE5vZGV7cn0gLT4gbWF4X2VsdF9vcHQgclxuXG4gICAgKCogUmVtb3ZlIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBnaXZlbiBzZXQgKilcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgdiByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgQXNzdW1lIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuICopXG5cbiAgICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiBiYWwgdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gam9pbiB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgKCogU3BsaXR0aW5nLiAgc3BsaXQgeCBzIHJldHVybnMgYSB0cmlwbGUgKGwsIHByZXNlbnQsIHIpIHdoZXJlXG4gICAgICAgIC0gbCBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIG9mIHMgdGhhdCBhcmUgPCB4XG4gICAgICAgIC0gciBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIG9mIHMgdGhhdCBhcmUgPiB4XG4gICAgICAgIC0gcHJlc2VudCBpcyBmYWxzZSBpZiBzIGNvbnRhaW5zIG5vIGVsZW1lbnQgZXF1YWwgdG8geCxcbiAgICAgICAgICBvciB0cnVlIGlmIHMgY29udGFpbnMgYW4gZWxlbWVudCBlcXVhbCB0byB4LiAqKVxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIGZhbHNlLCBFbXB0eSlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgdHJ1ZSwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgbHIsIHByZXMsIHJyKVxuXG4gICAgKCogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNldCBvcGVyYXRpb25zICopXG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBjID0gMCB8fCBtZW0geCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgcmVtb3ZlIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsOyB2OyByfSBhcyB0KSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICAgIGxldCBsbCA9IHJlbW92ZSB4IGwgaW5cbiAgICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSBiYWwgbGwgdiByXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW5cbiAgICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSBiYWwgbCB2IHJyXG5cbiAgICBsZXQgcmVjIHVuaW9uIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0MikgLT4gdDJcbiAgICAgIHwgKHQxLCBFbXB0eSkgLT4gdDFcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMTsgaD1oMX0sIE5vZGV7bD1sMjsgdj12Mjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgaWYgaDIgPSAxIHRoZW4gYWRkIHYyIHMxIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbGV0IChsMiwgXywgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYxICh1bmlvbiByMSByMilcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGlmIGgxID0gMSB0aGVuIGFkZCB2MSBzMiBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIGxldCAobDEsIF8sIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MiAodW5pb24gcjEgcjIpXG4gICAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgaW50ZXIgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IEVtcHR5XG4gICAgICB8IChfLCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIHNwbGl0IHYxIHQyIHdpdGhcbiAgICAgICAgICAgIChsMiwgZmFsc2UsIHIyKSAtPlxuICAgICAgICAgICAgICBjb25jYXQgKGludGVyIGwxIGwyKSAoaW50ZXIgcjEgcjIpXG4gICAgICAgICAgfCAobDIsIHRydWUsIHIyKSAtPlxuICAgICAgICAgICAgICBqb2luIChpbnRlciBsMSBsMikgdjEgKGludGVyIHIxIHIyKVxuXG4gICAgKCogU2FtZSBhcyBzcGxpdCwgYnV0IGNvbXB1dGUgdGhlIGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzXG4gICAgICAgb25seSBpZiB0aGUgcGl2b3QgZWxlbWVudCBpcyBub3QgaW4gdGhlIHNldC4gIFRoZSByaWdodCBzdWJ0cmVlXG4gICAgICAgaXMgY29tcHV0ZWQgb24gZGVtYW5kLiAqKVxuXG4gICAgdHlwZSBzcGxpdF9iaXMgPVxuICAgICAgfCBGb3VuZFxuICAgICAgfCBOb3RGb3VuZCBvZiB0ICogKHVuaXQgLT4gdClcblxuICAgIGxldCByZWMgc3BsaXRfYmlzIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vdEZvdW5kIChFbXB0eSwgKGZ1biAoKSAtPiBFbXB0eSkpXG4gICAgICB8IE5vZGV7bDsgdjsgcjsgX30gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gRm91bmRcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIHNwbGl0X2JpcyB4IGwgd2l0aFxuICAgICAgICAgICAgfCBGb3VuZCAtPiBGb3VuZFxuICAgICAgICAgICAgfCBOb3RGb3VuZCAobGwsIHJsKSAtPiBOb3RGb3VuZCAobGwsIChmdW4gKCkgLT4gam9pbiAocmwgKCkpIHYgcikpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggc3BsaXRfYmlzIHggciB3aXRoXG4gICAgICAgICAgICB8IEZvdW5kIC0+IEZvdW5kXG4gICAgICAgICAgICB8IE5vdEZvdW5kIChsciwgcnIpIC0+IE5vdEZvdW5kIChqb2luIGwgdiBsciwgcnIpXG5cbiAgICBsZXQgcmVjIGRpc2pvaW50IHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSB8IChfLCBFbXB0eSkgLT4gdHJ1ZVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgaWYgczEgPT0gczIgdGhlbiBmYWxzZVxuICAgICAgICAgIGVsc2UgbWF0Y2ggc3BsaXRfYmlzIHYxIHQyIHdpdGhcbiAgICAgICAgICAgICAgTm90Rm91bmQobDIsIHIyKSAtPiBkaXNqb2ludCBsMSBsMiAmJiBkaXNqb2ludCByMSAocjIgKCkpXG4gICAgICAgICAgICB8IEZvdW5kIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGRpZmYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IEVtcHR5XG4gICAgICB8ICh0MSwgRW1wdHkpIC0+IHQxXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBtYXRjaCBzcGxpdCB2MSB0MiB3aXRoXG4gICAgICAgICAgICAobDIsIGZhbHNlLCByMikgLT5cbiAgICAgICAgICAgICAgam9pbiAoZGlmZiBsMSBsMikgdjEgKGRpZmYgcjEgcjIpXG4gICAgICAgICAgfCAobDIsIHRydWUsIHIyKSAtPlxuICAgICAgICAgICAgICBjb25jYXQgKGRpZmYgbDEgbDIpIChkaWZmIHIxIHIyKVxuXG4gICAgdHlwZSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2YgZWx0ICogdCAqIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCByLCBlKSlcblxuICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgfCAoTW9yZSh2MSwgcjEsIGUxKSwgTW9yZSh2MiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgZWxzZSBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuXG4gICAgbGV0IGNvbXBhcmUgczEgczIgPVxuICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBzMSBFbmQpIChjb25zX2VudW0gczIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIHMxIHMyID1cbiAgICAgIGNvbXBhcmUgczEgczIgPSAwXG5cbiAgICBsZXQgcmVjIHN1YnNldCBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIEVtcHR5LCBfIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBfLCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IE5vZGUge2w9bDE7IHY9djE7IHI9cjF9LCAoTm9kZSB7bD1sMjsgdj12Mjsgcj1yMn0gYXMgdDIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIHN1YnNldCBsMSBsMiAmJiBzdWJzZXQgcjEgcjJcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIHN1YnNldCAoTm9kZSB7bD1sMTsgdj12MTsgcj1FbXB0eTsgaD0wfSkgbDIgJiYgc3Vic2V0IHIxIHQyXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc3Vic2V0IChOb2RlIHtsPUVtcHR5OyB2PXYxOyByPXIxOyBoPTB9KSByMiAmJiBzdWJzZXQgbDEgdDJcblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBpdGVyIGYgbDsgZiB2OyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBmb2xkIGYgcyBhY2N1ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gZm9sZCBmIHIgKGYgdiAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBwIHYgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHAgdiB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsOyB2OyByfSkgYXMgdCAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdiA9IHAgdiBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdiB0aGVuXG4gICAgICAgICAgICBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIHQgZWxzZSBqb2luIGwnIHYgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHYgPSBwIHYgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiByZilcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGV7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGVsZW1lbnRzX2F1eCAodiA6OiBlbGVtZW50c19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgZWxlbWVudHMgcyA9XG4gICAgICBlbGVtZW50c19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9lbHRcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2VsdF9vcHRcblxuICAgIGxldCByZWMgZmluZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gdlxuICAgICAgICAgIGVsc2UgZmluZCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdjAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3RfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdjAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX29wdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFNvbWUgdlxuICAgICAgICAgIGVsc2UgZmluZF9vcHQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCB0cnlfam9pbiBsIHYgciA9XG4gICAgICAoKiBbam9pbiBsIHYgcl0gY2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gKGVsZW1lbnRzIG9mIGwgPCB2IDxcbiAgICAgICAgIGVsZW1lbnRzIG9mIHIpOyB1c2UgW3RyeV9qb2luIGwgdiByXSB3aGVuIHRoaXMgcHJvcGVydHkgbWF5XG4gICAgICAgICBub3QgaG9sZCwgYnV0IHlvdSBob3BlIGl0IGRvZXMgaG9sZCBpbiB0aGUgY29tbW9uIGNhc2UgKilcbiAgICAgIGlmIChsID0gRW1wdHkgfHwgT3JkLmNvbXBhcmUgKG1heF9lbHQgbCkgdiA8IDApXG4gICAgICAmJiAociA9IEVtcHR5IHx8IE9yZC5jb21wYXJlIHYgKG1pbl9lbHQgcikgPCAwKVxuICAgICAgdGhlbiBqb2luIGwgdiByXG4gICAgICBlbHNlIHVuaW9uIGwgKGFkZCB2IHIpXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAoKiBlbmZvcmNlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciAqKVxuICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgbGV0IHYnID0gZiB2IGluXG4gICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICBpZiBsID09IGwnICYmIHYgPT0gdicgJiYgciA9PSByJyB0aGVuIHRcbiAgICAgICAgIGVsc2UgdHJ5X2pvaW4gbCcgdicgcidcblxuICAgIGxldCB0cnlfY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gdHJ5X2pvaW4gdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAoKiBlbmZvcmNlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciAqKVxuICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgIGxldCB2JyA9IGYgdiBpblxuICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgIGJlZ2luIG1hdGNoIHYnIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHYnIC0+XG4gICAgICAgICAgICAgIGlmIGwgPT0gbCcgJiYgdiA9PSB2JyAmJiByID09IHInIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIHRyeV9qb2luIGwnIHYnIHInXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICB0cnlfY29uY2F0IGwnIHInXG4gICAgICAgICBlbmRcblxuICAgIGxldCBvZl9zb3J0ZWRfbGlzdCBsID1cbiAgICAgIGxldCByZWMgc3ViIG4gbCA9XG4gICAgICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgICAgICB8IDAsIGwgLT4gRW1wdHksIGxcbiAgICAgICAgfCAxLCB4MCA6OiBsIC0+IE5vZGUge2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX0sIGxcbiAgICAgICAgfCAyLCB4MCA6OiB4MSA6OiBsIC0+XG4gICAgICAgICAgICBOb2Rle2w9Tm9kZXtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9OyB2PXgxOyByPUVtcHR5OyBoPTJ9LCBsXG4gICAgICAgIHwgMywgeDAgOjogeDEgOjogeDIgOjogbCAtPlxuICAgICAgICAgICAgTm9kZXtsPU5vZGV7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfTsgdj14MTtcbiAgICAgICAgICAgICAgICAgcj1Ob2Rle2w9RW1wdHk7IHY9eDI7IHI9RW1wdHk7IGg9MX07IGg9Mn0sIGxcbiAgICAgICAgfCBuLCBsIC0+XG4gICAgICAgICAgbGV0IG5sID0gbiAvIDIgaW5cbiAgICAgICAgICBsZXQgbGVmdCwgbCA9IHN1YiBubCBsIGluXG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IG1pZCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgcmlnaHQsIGwgPSBzdWIgKG4gLSBubCAtIDEpIGwgaW5cbiAgICAgICAgICAgIGNyZWF0ZSBsZWZ0IG1pZCByaWdodCwgbFxuICAgICAgaW5cbiAgICAgIGZzdCAoc3ViIChMaXN0Lmxlbmd0aCBsKSBsKVxuXG4gICAgbGV0IG9mX2xpc3QgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZW1wdHlcbiAgICAgIHwgW3gwXSAtPiBzaW5nbGV0b24geDBcbiAgICAgIHwgW3gwOyB4MV0gLT4gYWRkIHgxIChzaW5nbGV0b24geDApXG4gICAgICB8IFt4MDsgeDE7IHgyXSAtPiBhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSlcbiAgICAgIHwgW3gwOyB4MTsgeDI7IHgzXSAtPiBhZGQgeDMgKGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKSlcbiAgICAgIHwgW3gwOyB4MTsgeDI7IHgzOyB4NF0gLT4gYWRkIHg0IChhZGQgeDMgKGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKSkpXG4gICAgICB8IF8gLT4gb2Zfc29ydGVkX2xpc3QgKExpc3Quc29ydF91bmlxIE9yZC5jb21wYXJlIGwpXG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIHMgeCAtPiBhZGQgeCBzKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlICh4LCB0LCByZXN0KSAtPiBTZXEuQ29ucyAoeCwgc2VxX29mX2VudW1fIChjb25zX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19zZXEgYyA9IHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHJlYyBzbm9jX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gc25vY19lbnVtIHIgKE1vcmUodiwgbCwgZSkpXG5cbiAgICBsZXQgcmVjIHJldl9zZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlICh4LCB0LCByZXN0KSAtPiBTZXEuQ29ucyAoeCwgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fcmV2X3NlcSBjID0gcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBzID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBzIGMgPSBtYXRjaCBzIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgcjsgdjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBzIEVuZClcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISsnYSB0XG4gICAgdmFsIGVtcHR5OiAnYSB0XG4gICAgdmFsIGlzX2VtcHR5OiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiAga2V5IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBhZGQ6IGtleSAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgdXBkYXRlOiBrZXkgLT4gKCdhIG9wdGlvbiAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBzaW5nbGV0b246IGtleSAtPiAnYSAtPiAnYSB0XG4gICAgdmFsIHJlbW92ZToga2V5IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBtZXJnZTpcbiAgICAgICAgICAoa2V5IC0+ICdhIG9wdGlvbiAtPiAnYiBvcHRpb24gLT4gJ2Mgb3B0aW9uKSAtPiAnYSB0IC0+ICdiIHQgLT4gJ2MgdFxuICAgIHZhbCB1bmlvbjogKGtleSAtPiAnYSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGNvbXBhcmU6ICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgZXF1YWw6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGZvcl9hbGw6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGV4aXN0czogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgZmlsdGVyOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoa2V5IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgKiAnYSB0XG4gICAgdmFsIGNhcmRpbmFsOiAnYSB0IC0+IGludFxuICAgIHZhbCBiaW5kaW5nczogJ2EgdCAtPiAoa2V5ICogJ2EpIGxpc3RcbiAgICB2YWwgbWluX2JpbmRpbmc6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBtaW5fYmluZGluZ19vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgbWF4X2JpbmRpbmc6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBtYXhfYmluZGluZ19vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgY2hvb3NlOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgY2hvb3NlX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBzcGxpdDoga2V5IC0+ICdhIHQgLT4gJ2EgdCAqICdhIG9wdGlvbiAqICdhIHRcbiAgICB2YWwgZmluZDoga2V5IC0+ICdhIHQgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6IGtleSAtPiAnYSB0IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgbWFwOiAoJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBtYXBpOiAoa2V5IC0+ICdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBrZXkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID0gc3RydWN0XG5cbiAgICB0eXBlIGtleSA9IE9yZC50XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIG9mIHtsOidhIHQ7IHY6a2V5OyBkOidhOyByOidhIHQ7IGg6aW50fVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgbGV0IGNyZWF0ZSBsIHggZCByID1cbiAgICAgIGxldCBobCA9IGhlaWdodCBsIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IHNpbmdsZXRvbiB4IGQgPSBOb2Rle2w9RW1wdHk7IHY9eDsgZDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgbGV0IGJhbCBsIHggZCByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiBsZCAoY3JlYXRlIGxyIHggZCByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgZD1scmQ7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBscmwpIGxydiBscmQgKGNyZWF0ZSBscnIgeCBkIHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmwpIHJ2IHJkIHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyBkPXJsZDsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybGwpIHJsdiBybGQgKGNyZWF0ZSBybHIgcnYgcmQgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgYWRkIHggZGF0YSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGRhdGEgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCBkYXRhIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGRcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIGRcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfSAtPiBtaW5fYmluZGluZyBsXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0tPiBtaW5fYmluZGluZ19vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmcgclxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nX29wdCByXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiYWwgKHJlbW92ZV9taW5fYmluZGluZyBsKSB2IGQgclxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBiYWwgdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCAoTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpbiBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyB1cGRhdGUgeCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmIE5vbmUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFbXB0eVxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgICAgICBlbmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2UgbCByXG4gICAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVuZCBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHVwZGF0ZSB4IGYgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSB1cGRhdGUgeCBmIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaXRlciBmIGw7IGYgdiBkOyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgbWFwaSBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcGkgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXBpIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgZm9sZCBmIG0gYWNjdSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGZvbGQgZiByIChmIHYgZCAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgayBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBrZXlzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGtleS5cblxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2JpbmRpbmcgayB4IGwpIHYgZCByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgZCAoYWRkX21heF9iaW5kaW5nIGsgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgZCByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9iaW5kaW5nIHYgZCByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9iaW5kaW5nIHYgZCBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IGQ9bGQ7IHI9bHI7IGg9bGh9LFxuICAgICAgICAgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiBsZCAoam9pbiBsciB2IGQgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBkIHJsKSBydiByZCByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiBkIHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBqb2luIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IGNvbmNhdF9vcl9qb2luIHQxIHYgZCB0MiA9XG4gICAgICBtYXRjaCBkIHdpdGhcbiAgICAgIHwgU29tZSBkIC0+IGpvaW4gdDEgdiBkIHQyXG4gICAgICB8IE5vbmUgLT4gY29uY2F0IHQxIHQyXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgTm9uZSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCBTb21lIGQsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgZCByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgZCBsciwgcHJlcywgcnIpXG5cbiAgICBsZXQgcmVjIG1lcmdlIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sIF8pIHdoZW4gaDEgPj0gaGVpZ2h0IHMyIC0+XG4gICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYxIChmIHYxIChTb21lIGQxKSBkMikgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IChfLCBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyfSkgLT5cbiAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjIgKGYgdjIgZDEgKFNvbWUgZDIpKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGFzc2VydCBmYWxzZVxuXG4gICAgbGV0IHJlYyB1bmlvbiBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgIHwgKEVtcHR5LCBzKSB8IChzLCBFbXB0eSkgLT4gc1xuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sXG4gICAgICAgICBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjEgZDEgclxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGNvbmNhdF9vcl9qb2luIGwgdjEgKGYgdjEgZDEgZDIpIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQxIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjIgZDIgclxuICAgICAgICAgICAgfCBTb21lIGQxIC0+IGNvbmNhdF9vcl9qb2luIGwgdjIgKGYgdjIgZDEgZDIpIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSBhcyBtIC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2ZCB0aGVuIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gbSBlbHNlIGpvaW4gbCcgdiBkIHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtmXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGZ2ZCA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmdmQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGQnIC0+IGpvaW4gbCcgdiBkJyByJ1xuICAgICAgICAgICAgfCBOb25lIC0+IGNvbmNhdCBsJyByJ1xuICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2ZFxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBkIHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgZCByZilcblxuICAgIHR5cGUgJ2EgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGtleSAqICdhICogJ2EgdCAqICdhIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBtIGUgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgZCwgciwgZSkpXG5cbiAgICBsZXQgY29tcGFyZSBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCBkMSBkMiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gY29tcGFyZV9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGVxdWFsX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gdHJ1ZVxuICAgICAgICB8IChFbmQsIF8pICAtPiBmYWxzZVxuICAgICAgICB8IChfLCBFbmQpIC0+IGZhbHNlXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIE9yZC5jb21wYXJlIHYxIHYyID0gMCAmJiBjbXAgZDEgZDIgJiZcbiAgICAgICAgICAgIGVxdWFsX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gZXF1YWxfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBiaW5kaW5nc19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmluZGluZ3NfYXV4ICgodiwgZCkgOjogYmluZGluZ3NfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGJpbmRpbmdzIHMgPVxuICAgICAgYmluZGluZ3NfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fYmluZGluZ1xuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fYmluZGluZ19vcHRcblxuICAgIGxldCBhZGRfc2VxIGkgbSA9XG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoayx2KSAtPiBhZGQgayB2IG0pIG0gaVxuXG4gICAgbGV0IG9mX3NlcSBpID0gYWRkX3NlcSBpIGVtcHR5XG5cbiAgICBsZXQgcmVjIHNlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+IFNlcS5Db25zICgoayx2KSwgc2VxX29mX2VudW1fIChjb25zX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19zZXEgbSA9XG4gICAgICBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSBtIEVuZClcblxuICAgIGxldCByZWMgc25vY19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IGQ7IHJ9IC0+IHNub2NfZW51bSByIChNb3JlKHYsIGQsIGwsIGUpKVxuXG4gICAgbGV0IHJlYyByZXZfc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoayx2LHQscmVzdCkgLT5cbiAgICAgICAgICBTZXEuQ29ucyAoKGssdiksIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3Jldl9zZXEgYyA9XG4gICAgICByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgdG9fc2VxX2Zyb20gbG93IG0gPVxuICAgICAgbGV0IHJlYyBhdXggbG93IG0gYyA9IG1hdGNoIG0gd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGNcbiAgICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBffSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggT3JkLmNvbXBhcmUgdiBsb3cgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT4gTW9yZSAodiwgZCwgciwgYylcbiAgICAgICAgICAgICAgfCBuIHdoZW4gbjwwIC0+IGF1eCBsb3cgciBjXG4gICAgICAgICAgICAgIHwgXyAtPiBhdXggbG93IGwgKE1vcmUgKHYsIGQsIHIsIGMpKVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2VxX29mX2VudW1fIChhdXggbG93IG0gRW5kKVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBjIDogJ2EgbGlzdDsgbXV0YWJsZSBsZW4gOiBpbnQ7IH1cblxuZXhjZXB0aW9uIEVtcHR5XG5cbmxldCBjcmVhdGUgKCkgPSB7IGMgPSBbXTsgbGVuID0gMDsgfVxuXG5sZXQgY2xlYXIgcyA9IHMuYyA8LSBbXTsgcy5sZW4gPC0gMFxuXG5sZXQgY29weSBzID0geyBjID0gcy5jOyBsZW4gPSBzLmxlbjsgfVxuXG5sZXQgcHVzaCB4IHMgPSBzLmMgPC0geCA6OiBzLmM7IHMubGVuIDwtIHMubGVuICsgMVxuXG5sZXQgcG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgaGRcbiAgfCBbXSAgICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHBvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxOyBTb21lIGhkXG4gIHwgW10gICAgIC0+IE5vbmVcblxubGV0IHRvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBoZFxuICB8IFtdICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCB0b3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IFNvbWUgaGRcbiAgfCBbXSAgICAtPiBOb25lXG5cbmxldCBpc19lbXB0eSBzID0gKHMuYyA9IFtdKVxuXG5sZXQgbGVuZ3RoIHMgPSBzLmxlblxuXG5sZXQgaXRlciBmIHMgPSBMaXN0Lml0ZXIgZiBzLmNcblxubGV0IGZvbGQgZiBhY2MgcyA9IExpc3QuZm9sZF9sZWZ0IGYgYWNjIHMuY1xuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBMaXN0LnRvX3NlcSBzLmNcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBzID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBzIGc7XG4gIHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgRnJhbmNvaXMgUG90dGllciwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgSmVyZW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXhjZXB0aW9uIEVtcHR5XG5cbnR5cGUgJ2EgY2VsbCA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiB7IGNvbnRlbnQ6ICdhOyBtdXRhYmxlIG5leHQ6ICdhIGNlbGwgfVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgbGVuZ3RoOiBpbnQ7XG4gIG11dGFibGUgZmlyc3Q6ICdhIGNlbGw7XG4gIG11dGFibGUgbGFzdDogJ2EgY2VsbFxufVxuXG5sZXQgY3JlYXRlICgpID0ge1xuICBsZW5ndGggPSAwO1xuICBmaXJzdCA9IE5pbDtcbiAgbGFzdCA9IE5pbFxufVxuXG5sZXQgY2xlYXIgcSA9XG4gIHEubGVuZ3RoIDwtIDA7XG4gIHEuZmlyc3QgPC0gTmlsO1xuICBxLmxhc3QgPC0gTmlsXG5cbmxldCBhZGQgeCBxID1cbiAgbGV0IGNlbGwgPSBDb25zIHtcbiAgICBjb250ZW50ID0geDtcbiAgICBuZXh0ID0gTmlsXG4gIH0gaW5cbiAgbWF0Y2ggcS5sYXN0IHdpdGhcbiAgfCBOaWwgLT5cbiAgICBxLmxlbmd0aCA8LSAxO1xuICAgIHEuZmlyc3QgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuICB8IENvbnMgbGFzdCAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoICsgMTtcbiAgICBsYXN0Lm5leHQgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuXG5sZXQgcHVzaCA9XG4gIGFkZFxuXG5sZXQgcGVlayBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBjb250ZW50XG5cbmxldCBwZWVrX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IFNvbWUgY29udGVudFxuXG5sZXQgdG9wID1cbiAgcGVla1xuXG5sZXQgdGFrZSBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIGNvbnRlbnRcblxubGV0IHRha2Vfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIFNvbWUgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIFNvbWUgY29udGVudFxuXG5sZXQgcG9wID1cbiAgdGFrZVxuXG5sZXQgY29weSA9XG4gIGxldCByZWMgY29weSBxX3JlcyBwcmV2IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IHFfcmVzLmxhc3QgPC0gcHJldjsgcV9yZXNcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCByZXMgPSBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IGluXG4gICAgICBiZWdpbiBtYXRjaCBwcmV2IHdpdGhcbiAgICAgIHwgTmlsIC0+IHFfcmVzLmZpcnN0IDwtIHJlc1xuICAgICAgfCBDb25zIHAgLT4gcC5uZXh0IDwtIHJlc1xuICAgICAgZW5kO1xuICAgICAgY29weSBxX3JlcyByZXMgbmV4dFxuICBpblxuICBmdW4gcSAtPiBjb3B5IHsgbGVuZ3RoID0gcS5sZW5ndGg7IGZpcnN0ID0gTmlsOyBsYXN0ID0gTmlsIH0gTmlsIHEuZmlyc3RcblxubGV0IGlzX2VtcHR5IHEgPVxuICBxLmxlbmd0aCA9IDBcblxubGV0IGxlbmd0aCBxID1cbiAgcS5sZW5ndGhcblxubGV0IGl0ZXIgPVxuICBsZXQgcmVjIGl0ZXIgZiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgZiBjb250ZW50O1xuICAgICAgaXRlciBmIG5leHRcbiAgaW5cbiAgZnVuIGYgcSAtPiBpdGVyIGYgcS5maXJzdFxuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgZm9sZCBmIGFjY3UgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gYWNjdVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgY29udGVudCBpblxuICAgICAgZm9sZCBmIGFjY3UgbmV4dFxuICBpblxuICBmdW4gZiBhY2N1IHEgLT4gZm9sZCBmIGFjY3UgcS5maXJzdFxuXG5sZXQgdHJhbnNmZXIgcTEgcTIgPVxuICBpZiBxMS5sZW5ndGggPiAwIHRoZW5cbiAgICBtYXRjaCBxMi5sYXN0IHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHExLmxlbmd0aDtcbiAgICAgIHEyLmZpcnN0IDwtIHExLmZpcnN0O1xuICAgICAgcTIubGFzdCA8LSBxMS5sYXN0O1xuICAgICAgY2xlYXIgcTFcbiAgICB8IENvbnMgbGFzdCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHEyLmxlbmd0aCArIHExLmxlbmd0aDtcbiAgICAgIGxhc3QubmV4dCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcSA9XG4gIGxldCByZWMgYXV4IGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICB8IE5pbCAtPiBTZXEuTmlsXG4gICAgfCBDb25zIHsgY29udGVudD14OyBuZXh0OyB9IC0+IFNlcS5Db25zICh4LCBhdXggbmV4dClcbiAgaW5cbiAgYXV4IHEuZmlyc3RcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBxID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBxIGc7XG4gIHFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gJ2EgY2VsbCBvcHRpb25cbmFuZCAnYSBjZWxsID0geyBtdXRhYmxlIGNvdW50IDogaW50OyBtdXRhYmxlIGRhdGEgOiAnYSBkYXRhIH1cbmFuZCAnYSBkYXRhID1cbiAgICBTZW1wdHlcbiAgfCBTY29ucyBvZiAnYSAqICdhIGRhdGFcbiAgfCBTYXBwIG9mICdhIGRhdGEgKiAnYSBkYXRhXG4gIHwgU2xhenkgb2YgJ2EgZGF0YSBMYXp5LnRcbiAgfCBTZ2VuIG9mICdhIGdlblxuICB8IFNidWZmaW8gOiBidWZmaW8gLT4gY2hhciBkYXRhXG5hbmQgJ2EgZ2VuID0geyBtdXRhYmxlIGN1cnIgOiAnYSBvcHRpb24gb3B0aW9uOyBmdW5jIDogaW50IC0+ICdhIG9wdGlvbiB9XG5hbmQgYnVmZmlvID1cbiAgeyBpYyA6IGluX2NoYW5uZWw7IGJ1ZmYgOiBieXRlczsgbXV0YWJsZSBsZW4gOiBpbnQ7IG11dGFibGUgaW5kIDogaW50IH1cblxuZXhjZXB0aW9uIEZhaWx1cmVcbmV4Y2VwdGlvbiBFcnJvciBvZiBzdHJpbmdcblxubGV0IGNvdW50ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIHsgY291bnQgfSAtPiBjb3VudFxubGV0IGRhdGEgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gU2VtcHR5XG4gIHwgU29tZSB7IGRhdGEgfSAtPiBkYXRhXG5cbmxldCBmaWxsX2J1ZmYgYiA9XG4gIGIubGVuIDwtIGlucHV0IGIuaWMgYi5idWZmIDAgKEJ5dGVzLmxlbmd0aCBiLmJ1ZmYpOyBiLmluZCA8LSAwXG5cblxubGV0IHJlYyBnZXRfZGF0YSA6IHR5cGUgdi4gaW50IC0+IHYgZGF0YSAtPiB2IGRhdGEgPSBmdW4gY291bnQgZCAtPiBtYXRjaCBkIHdpdGhcbiAoKiBSZXR1cm5zIGVpdGhlciBTZW1wdHkgb3IgU2NvbnMoYSwgXykgZXZlbiB3aGVuIGQgaXMgYSBnZW5lcmF0b3JcbiAgICBvciBhIGJ1ZmZlci4gSW4gdGhvc2UgY2FzZXMsIHRoZSBpdGVtIGEgaXMgc2VlbiBhcyBleHRyYWN0ZWQgZnJvbVxuIHRoZSBnZW5lcmF0b3IvYnVmZmVyLlxuIFRoZSBjb3VudCBwYXJhbWV0ZXIgaXMgdXNlZCBmb3IgY2FsbGluZyBgU2dlbi1mdW5jdGlvbnMnLiAgKilcbiAgIFNlbXB0eSB8IFNjb25zIChfLCBfKSAtPiBkXG4gfCBTYXBwIChkMSwgZDIpIC0+XG4gICAgIGJlZ2luIG1hdGNoIGdldF9kYXRhIGNvdW50IGQxIHdpdGhcbiAgICAgICBTY29ucyAoYSwgZDExKSAtPiBTY29ucyAoYSwgU2FwcCAoZDExLCBkMikpXG4gICAgIHwgU2VtcHR5IC0+IGdldF9kYXRhIGNvdW50IGQyXG4gICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgZW5kXG4gfCBTZ2VuIHtjdXJyID0gU29tZSBOb25lfSAtPiBTZW1wdHlcbiB8IFNnZW4gKHtjdXJyID0gU29tZShTb21lIGEpfSBhcyBnKSAtPlxuICAgICBnLmN1cnIgPC0gTm9uZTsgU2NvbnMoYSwgZClcbiB8IFNnZW4gZyAtPlxuICAgICBiZWdpbiBtYXRjaCBnLmZ1bmMgY291bnQgd2l0aFxuICAgICAgIE5vbmUgLT4gZy5jdXJyIDwtIFNvbWUoTm9uZSk7IFNlbXB0eVxuICAgICB8IFNvbWUgYSAtPiBTY29ucyhhLCBkKVxuICAgICAgICAgKCogV2FybmluZzogYW55b25lIHVzaW5nIGcgdGhpbmtzIHRoYXQgYW4gaXRlbSBoYXMgYmVlbiByZWFkICopXG4gICAgIGVuZFxuIHwgU2J1ZmZpbyBiIC0+XG4gICAgIGlmIGIuaW5kID49IGIubGVuIHRoZW4gZmlsbF9idWZmIGI7XG4gICAgIGlmIGIubGVuID09IDAgdGhlbiBTZW1wdHkgZWxzZVxuICAgICAgIGxldCByID0gQnl0ZXMudW5zYWZlX2dldCBiLmJ1ZmYgYi5pbmQgaW5cbiAgICAgICAoKiBXYXJuaW5nOiBhbnlvbmUgdXNpbmcgZyB0aGlua3MgdGhhdCBhbiBpdGVtIGhhcyBiZWVuIHJlYWQgKilcbiAgICAgICBiLmluZCA8LSBzdWNjIGIuaW5kOyBTY29ucyhyLCBkKVxuIHwgU2xhenkgZiAtPiBnZXRfZGF0YSBjb3VudCAoTGF6eS5mb3JjZSBmKVxuXG5cbmxldCByZWMgcGVla19kYXRhIDogdHlwZSB2LiB2IGNlbGwgLT4gdiBvcHRpb24gPSBmdW4gcyAtPlxuICgqIGNvbnN1bHQgdGhlIGZpcnN0IGl0ZW0gb2YgcyAqKVxuIG1hdGNoIHMuZGF0YSB3aXRoXG4gICBTZW1wdHkgLT4gTm9uZVxuIHwgU2NvbnMgKGEsIF8pIC0+IFNvbWUgYVxuIHwgU2FwcCAoXywgXykgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZ2V0X2RhdGEgcy5jb3VudCBzLmRhdGEgd2l0aFxuICAgICAgIFNjb25zKGEsIF8pIGFzIGQgLT4gcy5kYXRhIDwtIGQ7IFNvbWUgYVxuICAgICB8IFNlbXB0eSAtPiBOb25lXG4gICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgZW5kXG4gfCBTbGF6eSBmIC0+IHMuZGF0YSA8LSAoTGF6eS5mb3JjZSBmKTsgcGVla19kYXRhIHNcbiB8IFNnZW4ge2N1cnIgPSBTb21lIGF9IC0+IGFcbiB8IFNnZW4gZyAtPiBsZXQgeCA9IGcuZnVuYyBzLmNvdW50IGluIGcuY3VyciA8LSBTb21lIHg7IHhcbiB8IFNidWZmaW8gYiAtPlxuICAgICBpZiBiLmluZCA+PSBiLmxlbiB0aGVuIGZpbGxfYnVmZiBiO1xuICAgICBpZiBiLmxlbiA9PSAwIHRoZW4gYmVnaW4gcy5kYXRhIDwtIFNlbXB0eTsgTm9uZSBlbmRcbiAgICAgZWxzZSBTb21lIChCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZiBiLmluZClcblxuXG5sZXQgcGVlayA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBzIC0+IHBlZWtfZGF0YSBzXG5cblxubGV0IHJlYyBqdW5rX2RhdGEgOiB0eXBlIHYuIHYgY2VsbCAtPiB1bml0ID0gZnVuIHMgLT5cbiAgbWF0Y2ggcy5kYXRhIHdpdGhcbiAgICBTY29ucyAoXywgZCkgLT4gcy5jb3VudCA8LSAoc3VjYyBzLmNvdW50KTsgcy5kYXRhIDwtIGRcbiAgfCBTZ2VuICh7Y3VyciA9IFNvbWUgX30gYXMgZykgLT4gcy5jb3VudCA8LSAoc3VjYyBzLmNvdW50KTsgZy5jdXJyIDwtIE5vbmVcbiAgfCBTYnVmZmlvIGIgLT5cbiAgICAgIGlmIGIuaW5kID49IGIubGVuIHRoZW4gZmlsbF9idWZmIGI7XG4gICAgICBpZiBiLmxlbiA9PSAwIHRoZW4gcy5kYXRhIDwtIFNlbXB0eVxuICAgICAgZWxzZSAocy5jb3VudCA8LSAoc3VjYyBzLmNvdW50KTsgYi5pbmQgPC0gc3VjYyBiLmluZClcbiAgfCBfIC0+XG4gICAgICBtYXRjaCBwZWVrX2RhdGEgcyB3aXRoXG4gICAgICAgIE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIC0+IGp1bmtfZGF0YSBzXG5cblxubGV0IGp1bmsgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGRhdGEgLT4ganVua19kYXRhIGRhdGFcblxubGV0IHJlYyBuZ2V0X2RhdGEgbiBzID1cbiAgaWYgbiA8PSAwIHRoZW4gW10sIHMuZGF0YSwgMFxuICBlbHNlXG4gICAgbWF0Y2ggcGVla19kYXRhIHMgd2l0aFxuICAgICAgU29tZSBhIC0+XG4gICAgICAgIGp1bmtfZGF0YSBzO1xuICAgICAgICBsZXQgKGFsLCBkLCBrKSA9IG5nZXRfZGF0YSAocHJlZCBuKSBzIGluIGEgOjogYWwsIFNjb25zIChhLCBkKSwgc3VjYyBrXG4gICAgfCBOb25lIC0+IFtdLCBzLmRhdGEsIDBcblxuXG5sZXQgbnBlZWtfZGF0YSBuIHMgPVxuICBsZXQgKGFsLCBkLCBsZW4pID0gbmdldF9kYXRhIG4gcyBpblxuICBzLmNvdW50IDwtIChzLmNvdW50IC0gbGVuKTtcbiAgcy5kYXRhIDwtIGQ7XG4gIGFsXG5cblxubGV0IG5wZWVrIG4gPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gW11cbiAgfCBTb21lIGQgLT4gbnBlZWtfZGF0YSBuIGRcblxubGV0IG5leHQgcyA9XG4gIG1hdGNoIHBlZWsgcyB3aXRoXG4gICAgU29tZSBhIC0+IGp1bmsgczsgYVxuICB8IE5vbmUgLT4gcmFpc2UgRmFpbHVyZVxuXG5cbmxldCBlbXB0eSBzID1cbiAgbWF0Y2ggcGVlayBzIHdpdGhcbiAgICBTb21lIF8gLT4gcmFpc2UgRmFpbHVyZVxuICB8IE5vbmUgLT4gKClcblxuXG5sZXQgaXRlciBmIHN0cm0gPVxuICBsZXQgcmVjIGRvX3JlYyAoKSA9XG4gICAgbWF0Y2ggcGVlayBzdHJtIHdpdGhcbiAgICAgIFNvbWUgYSAtPiBqdW5rIHN0cm07IGlnbm9yZShmIGEpOyBkb19yZWMgKClcbiAgICB8IE5vbmUgLT4gKClcbiAgaW5cbiAgZG9fcmVjICgpXG5cblxuKCogU3RyZWFtIGJ1aWxkaW5nIGZ1bmN0aW9ucyAqKVxuXG5sZXQgZnJvbSBmID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2dlbiB7Y3VyciA9IE5vbmU7IGZ1bmMgPSBmfX1cblxubGV0IG9mX2xpc3QgbCA9XG4gIFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IExpc3QuZm9sZF9yaWdodCAoZnVuIHggbCAtPiBTY29ucyAoeCwgbCkpIGwgU2VtcHR5fVxuXG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIGxldCBjb3VudCA9IHJlZiAwIGluXG4gIGZyb20gKGZ1biBfIC0+XG4gICAgKCogV2UgY2Fubm90IHVzZSB0aGUgaW5kZXggcGFzc2VkIGJ5IHRoZSBbZnJvbV0gZnVuY3Rpb24gZGlyZWN0bHlcbiAgICAgICBiZWNhdXNlIGl0IHJldHVybnMgdGhlIGN1cnJlbnQgc3RyZWFtIGNvdW50LCB3aXRoIGFic29sdXRlbHkgbm9cbiAgICAgICBndWFyYW50ZWUgdGhhdCBpdCB3aWxsIHN0YXJ0IGZyb20gMC4gRm9yIGV4YW1wbGUsIGluIHRoZSBjYXNlXG4gICAgICAgb2YgW1N0cmVhbS5pY29ucyAnYycgKFN0cmVhbS5mcm9tX3N0cmluZyBcImFiXCIpXSwgdGhlIGZpcnN0XG4gICAgICAgYWNjZXNzIHRvIHRoZSBzdHJpbmcgd2lsbCBiZSBtYWRlIHdpdGggY291bnQgWzFdIGFscmVhZHkuXG4gICAgKilcbiAgICBsZXQgYyA9ICFjb3VudCBpblxuICAgIGlmIGMgPCBTdHJpbmcubGVuZ3RoIHNcbiAgICB0aGVuIChpbmNyIGNvdW50OyBTb21lIHMuW2NdKVxuICAgIGVsc2UgTm9uZSlcblxuXG5sZXQgb2ZfYnl0ZXMgcyA9XG4gIGxldCBjb3VudCA9IHJlZiAwIGluXG4gIGZyb20gKGZ1biBfIC0+XG4gICAgbGV0IGMgPSAhY291bnQgaW5cbiAgICBpZiBjIDwgQnl0ZXMubGVuZ3RoIHNcbiAgICB0aGVuIChpbmNyIGNvdW50OyBTb21lIChCeXRlcy5nZXQgcyBjKSlcbiAgICBlbHNlIE5vbmUpXG5cblxubGV0IG9mX2NoYW5uZWwgaWMgPVxuICBTb21lIHtjb3VudCA9IDA7XG4gICAgICAgIGRhdGEgPSBTYnVmZmlvIHtpYyA9IGljOyBidWZmID0gQnl0ZXMuY3JlYXRlIDQwOTY7IGxlbiA9IDA7IGluZCA9IDB9fVxuXG5cbigqIFN0cmVhbSBleHByZXNzaW9ucyBidWlsZGVycyAqKVxuXG5sZXQgaWFwcCBpIHMgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTYXBwIChkYXRhIGksIGRhdGEgcyl9XG5sZXQgaWNvbnMgaSBzID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2NvbnMgKGksIGRhdGEgcyl9XG5sZXQgaXNpbmcgaSA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNjb25zIChpLCBTZW1wdHkpfVxuXG5sZXQgbGFwcCBmIHMgPVxuICBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTbGF6eSAobGF6eShTYXBwIChkYXRhIChmICgpKSwgZGF0YSBzKSkpfVxuXG5sZXQgbGNvbnMgZiBzID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2xhenkgKGxhenkoU2NvbnMgKGYgKCksIGRhdGEgcykpKX1cbmxldCBsc2luZyBmID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2xhenkgKGxhenkoU2NvbnMgKGYgKCksIFNlbXB0eSkpKX1cblxubGV0IHNlbXB0eSA9IE5vbmVcbmxldCBzbGF6eSBmID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2xhenkgKGxhenkoZGF0YSAoZiAoKSkpKX1cblxuKCogRm9yIGRlYnVnZ2luZyB1c2UgKilcblxubGV0IHJlYyBkdW1wIDogdHlwZSB2LiAodiAtPiB1bml0KSAtPiB2IHQgLT4gdW5pdCA9IGZ1biBmIHMgLT5cbiAgcHJpbnRfc3RyaW5nIFwie2NvdW50ID0gXCI7XG4gIHByaW50X2ludCAoY291bnQgcyk7XG4gIHByaW50X3N0cmluZyBcIjsgZGF0YSA9IFwiO1xuICBkdW1wX2RhdGEgZiAoZGF0YSBzKTtcbiAgcHJpbnRfc3RyaW5nIFwifVwiO1xuICBwcmludF9uZXdsaW5lICgpXG5hbmQgZHVtcF9kYXRhIDogdHlwZSB2LiAodiAtPiB1bml0KSAtPiB2IGRhdGEgLT4gdW5pdCA9IGZ1biBmIC0+XG4gIGZ1bmN0aW9uXG4gICAgU2VtcHR5IC0+IHByaW50X3N0cmluZyBcIlNlbXB0eVwiXG4gIHwgU2NvbnMgKGEsIGQpIC0+XG4gICAgICBwcmludF9zdHJpbmcgXCJTY29ucyAoXCI7XG4gICAgICBmIGE7XG4gICAgICBwcmludF9zdHJpbmcgXCIsIFwiO1xuICAgICAgZHVtcF9kYXRhIGYgZDtcbiAgICAgIHByaW50X3N0cmluZyBcIilcIlxuICB8IFNhcHAgKGQxLCBkMikgLT5cbiAgICAgIHByaW50X3N0cmluZyBcIlNhcHAgKFwiO1xuICAgICAgZHVtcF9kYXRhIGYgZDE7XG4gICAgICBwcmludF9zdHJpbmcgXCIsIFwiO1xuICAgICAgZHVtcF9kYXRhIGYgZDI7XG4gICAgICBwcmludF9zdHJpbmcgXCIpXCJcbiAgfCBTbGF6eSBfIC0+IHByaW50X3N0cmluZyBcIlNsYXp5XCJcbiAgfCBTZ2VuIF8gLT4gcHJpbnRfc3RyaW5nIFwiU2dlblwiXG4gIHwgU2J1ZmZpbyBfIC0+IHByaW50X3N0cmluZyBcIlNidWZmaW9cIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgUGllcnJlIFdlaXMgYW5kIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5OSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeHRlbnNpYmxlIGJ1ZmZlcnMgKilcblxudHlwZSB0ID1cbiB7bXV0YWJsZSBidWZmZXIgOiBieXRlcztcbiAgbXV0YWJsZSBwb3NpdGlvbiA6IGludDtcbiAgbXV0YWJsZSBsZW5ndGggOiBpbnQ7XG4gIGluaXRpYWxfYnVmZmVyIDogYnl0ZXN9XG4oKiBJbnZhcmlhbnRzOiBhbGwgcGFydHMgb2YgdGhlIGNvZGUgcHJlc2VydmUgdGhlIGludmFyaWFudHMgdGhhdDpcbiAgIC0gWzAgPD0gYi5wb3NpdGlvbiA8PSBiLmxlbmd0aF1cbiAgIC0gW2IubGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGIuYnVmZmVyXVxuXG4gICBOb3RlIGluIHBhcnRpY3VsYXIgdGhhdCBbYi5wb3NpdGlvbiA9IGIubGVuZ3RoXSBpcyBsZWdhbCxcbiAgIGl0IG1lYW5zIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxsIGFuZCB3aWxsIGhhdmUgdG8gYmUgZXh0ZW5kZWRcbiAgIGJlZm9yZSBhbnkgZnVydGhlciBhZGRpdGlvbi4gKilcblxubGV0IGNyZWF0ZSBuID1cbiBsZXQgbiA9IGlmIG4gPCAxIHRoZW4gMSBlbHNlIG4gaW5cbiBsZXQgbiA9IGlmIG4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiBTeXMubWF4X3N0cmluZ19sZW5ndGggZWxzZSBuIGluXG4gbGV0IHMgPSBCeXRlcy5jcmVhdGUgbiBpblxuIHtidWZmZXIgPSBzOyBwb3NpdGlvbiA9IDA7IGxlbmd0aCA9IG47IGluaXRpYWxfYnVmZmVyID0gc31cblxubGV0IGNvbnRlbnRzIGIgPSBCeXRlcy5zdWJfc3RyaW5nIGIuYnVmZmVyIDAgYi5wb3NpdGlvblxubGV0IHRvX2J5dGVzIGIgPSBCeXRlcy5zdWIgYi5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBzdWIgYiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGIucG9zaXRpb24gLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5zdWJcIlxuICBlbHNlIEJ5dGVzLnN1Yl9zdHJpbmcgYi5idWZmZXIgb2ZzIGxlblxuXG5cbmxldCBibGl0IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IHNyY29mZiA8IDAgfHwgc3Jjb2ZmID4gc3JjLnBvc2l0aW9uIC0gbGVuXG4gICAgICAgICAgICAgfHwgZHN0b2ZmIDwgMCB8fCBkc3RvZmYgPiAoQnl0ZXMubGVuZ3RoIGRzdCkgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5ibGl0XCJcbiAgZWxzZVxuICAgIEJ5dGVzLnVuc2FmZV9ibGl0IHNyYy5idWZmZXIgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuXG5cblxubGV0IG50aCBiIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID49IGIucG9zaXRpb24gdGhlblxuICAgaW52YWxpZF9hcmcgXCJCdWZmZXIubnRoXCJcbiAgZWxzZSBCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZmVyIG9mc1xuXG5cbmxldCBsZW5ndGggYiA9IGIucG9zaXRpb25cblxubGV0IGNsZWFyIGIgPSBiLnBvc2l0aW9uIDwtIDBcblxubGV0IHJlc2V0IGIgPVxuICBiLnBvc2l0aW9uIDwtIDA7XG4gIGIuYnVmZmVyIDwtIGIuaW5pdGlhbF9idWZmZXI7XG4gIGIubGVuZ3RoIDwtIEJ5dGVzLmxlbmd0aCBiLmJ1ZmZlclxuXG4oKiBbcmVzaXplIGIgbW9yZV0gZW5zdXJlcyB0aGF0IFtiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmxlbmd0aF0gaG9sZHNcbiAgIGJ5IGR5bmFtaWNhbGx5IGV4dGVuZGluZyBbYi5idWZmZXJdIGlmIG5lY2Vzc2FyeSAtLSBhbmQgdGh1c1xuICAgaW5jcmVhc2luZyBbYi5sZW5ndGhdLlxuXG4gICBJbiBwYXJ0aWN1bGFyLCBhZnRlciBbcmVzaXplIGIgbW9yZV0gaXMgY2FsbGVkLCBhIGRpcmVjdCBhY2Nlc3Mgb2ZcbiAgIHNpemUgW21vcmVdIGF0IFtiLnBvc2l0aW9uXSB3aWxsIGFsd2F5cyBiZSBpbi1ib3VuZHMsIHNvIHRoYXRcbiAgICh1bnNhZmVfe2dldCxzZXR9KSBtYXkgYmUgdXNlZCBmb3IgcGVyZm9ybWFuY2UuXG4qKVxubGV0IHJlc2l6ZSBiIG1vcmUgPVxuICBsZXQgb2xkX3BvcyA9IGIucG9zaXRpb24gaW5cbiAgbGV0IG9sZF9sZW4gPSBiLmxlbmd0aCBpblxuICBsZXQgbmV3X2xlbiA9IHJlZiBvbGRfbGVuIGluXG4gIHdoaWxlIG9sZF9wb3MgKyBtb3JlID4gIW5ld19sZW4gZG8gbmV3X2xlbiA6PSAyICogIW5ld19sZW4gZG9uZTtcbiAgaWYgIW5ld19sZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiBiZWdpblxuICAgIGlmIG9sZF9wb3MgKyBtb3JlIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIHRoZW4gbmV3X2xlbiA6PSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICBlbHNlIGZhaWx3aXRoIFwiQnVmZmVyLmFkZDogY2Fubm90IGdyb3cgYnVmZmVyXCJcbiAgZW5kO1xuICBsZXQgbmV3X2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAhbmV3X2xlbiBpblxuICAoKiBQUiM2MTQ4OiBsZXQncyBrZWVwIHVzaW5nIFtibGl0XSByYXRoZXIgdGhhbiBbdW5zYWZlX2JsaXRdIGluXG4gICAgIHRoaXMgdHJpY2t5IGZ1bmN0aW9uIHRoYXQgaXMgc2xvdyBhbnl3YXkuICopXG4gIEJ5dGVzLmJsaXQgYi5idWZmZXIgMCBuZXdfYnVmZmVyIDAgYi5wb3NpdGlvbjtcbiAgYi5idWZmZXIgPC0gbmV3X2J1ZmZlcjtcbiAgYi5sZW5ndGggPC0gIW5ld19sZW47XG4gIGFzc2VydCAoYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5sZW5ndGgpO1xuICBhc3NlcnQgKG9sZF9wb3MgKyBtb3JlIDw9IGIubGVuZ3RoKTtcbiAgKClcbiAgKCogTm90ZTogdGhlcmUgYXJlIHZhcmlvdXMgc2l0dWF0aW9ucyAocHJlZW1wdGl2ZSB0aHJlYWRzLCBzaWduYWxzIGFuZFxuICAgICBnYyBmaW5hbGl6ZXJzKSB3aGVyZSBPQ2FtbCBjb2RlIG1heSBiZSBydW4gYXN5bmNocm9ub3VzbHk7IGluXG4gICAgIHBhcnRpY3VsYXIsIHRoZXJlIG1heSBiZSBhIHJhY2Ugd2l0aCBhbm90aGVyIHVzZXIgb2YgW2JdLCBjaGFuZ2luZ1xuICAgICBpdHMgbXV0YWJsZSBmaWVsZHMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgW3Jlc2l6ZV0gY2FsbC4gVGhlIEJ1ZmZlclxuICAgICBtb2R1bGUgZG9lcyBub3QgcHJvdmlkZSBhbnkgY29ycmVjdG5lc3MgZ3VhcmFudGVlIGlmIHRoYXQgaGFwcGVucyxcbiAgICAgYnV0IHdlIG11c3Qgc3RpbGwgZW5zdXJlIHRoYXQgdGhlIGRhdGFzdHJ1Y3R1cmUgaW52YXJpYW50cyBob2xkIGZvclxuICAgICBtZW1vcnktc2FmZXR5IC0tIGFzIHdlIHBsYW4gdG8gdXNlIFt1bnNhZmVfe2dldCxzZXR9XS5cblxuICAgICBUaGVyZSBhcmUgdHdvIHBvdGVudGlhbCBhbGxvY2F0aW9uIHBvaW50cyBpbiB0aGlzIGZ1bmN0aW9uLFxuICAgICBbcmVmXSBhbmQgW0J5dGVzLmNyZWF0ZV0sIGJ1dCBhbGwgcmVhZHMgYW5kIHdyaXRlcyB0byB0aGUgZmllbGRzXG4gICAgIG9mIFtiXSBoYXBwZW4gYmVmb3JlIGJvdGggb2YgdGhlbSBvciBhZnRlciBib3RoIG9mIHRoZW0uXG5cbiAgICAgV2UgdGhlcmVmb3JlIGFzc3VtZSB0aGF0IFtiLnBvc2l0aW9uXSBtYXkgY2hhbmdlIGF0IHRoZXNlIGFsbG9jYXRpb25zLFxuICAgICBhbmQgY2hlY2sgdGhhdCB0aGUgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIubGVuZ3RoXSBwb3N0Y29uZGl0aW9uXG4gICAgIGhvbGRzIGZvciBib3RoIHZhbHVlcyBvZiBbYi5wb3NpdGlvbl0sIGJlZm9yZSBvciBhZnRlciB0aGUgZnVuY3Rpb25cbiAgICAgaXMgY2FsbGVkLiBNb3JlIHByZWNpc2VseSwgdGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzIG11c3QgaG9sZCBpZiB0aGVcbiAgICAgZnVuY3Rpb24gcmV0dXJucyBjb3JyZWN0bHksIGluIGFkZGl0aW9uIHRvIHRoZSB1c3VhbCBidWZmZXIgaW52YXJpYW50czpcbiAgICAgLSBbb2xkKGIucG9zaXRpb24pICsgbW9yZSA8PSBuZXcoYi5sZW5ndGgpXVxuICAgICAtIFtuZXcoYi5wb3NpdGlvbikgKyBtb3JlIDw9IG5ldyhiLmxlbmd0aCldXG4gICAgIC0gW29sZChiLmxlbmd0aCkgPD0gbmV3KGIubGVuZ3RoKV1cblxuICAgICBOb3RlOiBbYi5wb3NpdGlvbiArIG1vcmUgPD0gb2xkKGIubGVuZ3RoKV0gZG9lcyAqbm90KlxuICAgICBob2xkIGluIGdlbmVyYWwsIGFzIGl0IGlzIHByZWNpc2VseSB0aGUgY2FzZSB3aGVyZSB5b3UgbmVlZFxuICAgICB0byBjYWxsIFtyZXNpemVdIHRvIGluY3JlYXNlIFtiLmxlbmd0aF0uXG5cbiAgICAgTm90ZTogW2Fzc2VydF0gYWJvdmUgZG9lcyBub3QgbWVhbiB0aGF0IHdlIGtub3cgdGhlIGNvbmRpdGlvbnNcbiAgICAgYWx3YXlzIGhvbGQsIGJ1dCB0aGF0IHRoZSBmdW5jdGlvbiBtYXkgcmV0dXJuIGNvcnJlY3RseVxuICAgICBvbmx5IGlmIHRoZXkgaG9sZC5cblxuICAgICBOb3RlOiB0aGUgb3RoZXIgZnVuY3Rpb25zIGluIHRoaXMgbW9kdWxlIGRvZXMgbm90IG5lZWRcbiAgICAgdG8gYmUgY2hlY2tlZCB3aXRoIHRoaXMgbGV2ZWwgb2Ygc2NydXRpbnksIGdpdmVuIHRoYXQgdGhleVxuICAgICByZWFkL3dyaXRlIHRoZSBidWZmZXIgaW1tZWRpYXRlbHkgYWZ0ZXIgY2hlY2tpbmcgdGhhdFxuICAgICBbYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5sZW5ndGhdIGhvbGQgb3IgY2FsbGluZyBbcmVzaXplXS5cbiAgKilcblxubGV0IGFkZF9jaGFyIGIgYyA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDE7XG4gIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgcG9zIGM7XG4gIGIucG9zaXRpb24gPC0gcG9zICsgMVxuXG5sZXQgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4ID0gNFxubGV0IHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXggPSA0XG5cbmxldCByZWMgYWRkX3V0Zl84X3VjaGFyIGIgdSA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzhfdWNoYXIgYi5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzhfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCByZWMgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl8xNmJlX3VjaGFyIGIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfMTZiZV91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IHJlYyBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzE2bGVfdWNoYXIgYi5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl8xNmxlX3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgYWRkX3N1YnN0cmluZyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGlmIG9mZnNldCA8IDAgfHwgbGVuIDwgMCB8fCBvZmZzZXQgPiBTdHJpbmcubGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfc3Vic3RyaW5nL2FkZF9zdWJieXRlc1wiO1xuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgb2Zmc2V0IGIuYnVmZmVyIGIucG9zaXRpb24gbGVuO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX3N1YmJ5dGVzIGIgcyBvZmZzZXQgbGVuID1cbiAgYWRkX3N1YnN0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpIG9mZnNldCBsZW5cblxubGV0IGFkZF9zdHJpbmcgYiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgMCBiLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9ieXRlcyBiIHMgPSBhZGRfc3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcylcblxubGV0IGFkZF9idWZmZXIgYiBicyA9XG4gIGFkZF9zdWJieXRlcyBiIGJzLmJ1ZmZlciAwIGJzLnBvc2l0aW9uXG5cbigqIHRoaXMgKHByaXZhdGUpIGZ1bmN0aW9uIGNvdWxkIG1vdmUgaW50byB0aGUgc3RhbmRhcmQgbGlicmFyeSAqKVxubGV0IHJlYWxseV9pbnB1dF91cF90byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkID1cbiAgICBpZiB0b19yZWFkID0gMCB0aGVuIGFscmVhZHlfcmVhZFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gaW5wdXQgaWMgYnVmIG9mcyB0b19yZWFkIGluXG4gICAgICBpZiByID0gMCB0aGVuIGFscmVhZHlfcmVhZFxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBsZXQgYWxyZWFkeV9yZWFkID0gYWxyZWFkeV9yZWFkICsgciBpblxuICAgICAgICBsZXQgb2ZzID0gb2ZzICsgciBpblxuICAgICAgICBsZXQgdG9fcmVhZCA9IHRvX3JlYWQgLSByIGluXG4gICAgICAgIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQgfm9mcyB+dG9fcmVhZFxuICAgICAgZW5kXG4gICAgZW5kXG4gIGluIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQ6MCB+b2ZzIH50b19yZWFkOmxlblxuXG5cbmxldCB1bnNhZmVfYWRkX2NoYW5uZWxfdXBfdG8gYiBpYyBsZW4gPVxuICBpZiBiLnBvc2l0aW9uICsgbGVuID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIGxldCBuID0gcmVhbGx5X2lucHV0X3VwX3RvIGljIGIuYnVmZmVyIGIucG9zaXRpb24gbGVuIGluXG4gICgqIFRoZSBhc3NlcnRpb24gYmVsb3cgbWF5IGZhaWwgaW4gd2VpcmQgc2NlbmFyaW8gd2hlcmVcbiAgICAgdGhyZWFkZWQvZmluYWxpemVyIGNvZGUsIHJ1biBhc3luY2hyb25vdXNseSBkdXJpbmcgdGhlXG4gICAgIFtyZWFsbHlfaW5wdXRfdXBfdG9dIGNhbGwsIHJhY2VzIG9uIHRoZSBidWZmZXI7IHdlIGRvbid0IGVuc3VyZVxuICAgICBjb3JyZWN0bmVzcyBpbiB0aGlzIGNhc2UsIGJ1dCBuZWVkIHRvIHByZXNlcnZlIHRoZSBpbnZhcmlhbnRzIGZvclxuICAgICBtZW1vcnktc2FmZXR5IChzZWUgZGlzY3Vzc2lvbiBvZiBbcmVzaXplXSkuICopXG4gIGFzc2VydCAoYi5wb3NpdGlvbiArIG4gPD0gYi5sZW5ndGgpO1xuICBiLnBvc2l0aW9uIDwtIGIucG9zaXRpb24gKyBuO1xuICBuXG5cbmxldCBhZGRfY2hhbm5lbCBiIGljIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gICAoKiBQUiM1MDA0ICopXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX2NoYW5uZWxcIjtcbiAgbGV0IG4gPSB1bnNhZmVfYWRkX2NoYW5uZWxfdXBfdG8gYiBpYyBsZW4gaW5cbiAgKCogSXQgaXMgaW50ZW50aW9uYWwgdGhhdCBhIGNvbnN1bWVyIGNhdGNoaW5nIEVuZF9vZl9maWxlXG4gICAgIHdpbGwgc2VlIHRoZSBkYXRhIHdyaXR0ZW4gKHNlZSAjNjcxOSwgIzcxMzYpLiAqKVxuICBpZiBuIDwgbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGU7XG4gICgpXG5cbmxldCBvdXRwdXRfYnVmZmVyIG9jIGIgPVxuICBvdXRwdXQgb2MgYi5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgfCAnKCcgLT4gJyknXG4gIHwgJ3snIC0+ICd9J1xuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbigqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxubGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICBpZiBzLltpXSA9IG9wZW5pbmcgdGhlbiBhZHZhbmNlIChrICsgMSkgKGkgKyAxKSBsaW0gZWxzZVxuICAgIGlmIHMuW2ldID0gY2xvc2luZyB0aGVuXG4gICAgICBpZiBrID0gMCB0aGVuIGkgZWxzZSBhZHZhbmNlIChrIC0gMSkgKGkgKyAxKSBsaW1cbiAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbSBpblxuICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gbGltIGVsc2VcbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgfCAnXycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgIHwgXyAtPiBpIGluXG4gIGFkdmFuY2Ugc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxuKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbmxldCBmaW5kX2lkZW50IHMgc3RhcnQgbGltID1cbiAgaWYgc3RhcnQgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gIHwgJygnIHwgJ3snIGFzIGMgLT5cbiAgICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICAgU3RyaW5nLnN1YiBzIG5ld19zdGFydCAoc3RvcCAtIHN0YXJ0IC0gMSksIHN0b3AgKyAxXG4gICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgfCBfIC0+XG4gICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19ub25fYWxwaGEgcyAoc3RhcnQgKyAxKSBpblxuICAgICBTdHJpbmcuc3ViIHMgc3RhcnQgKHN0b3AgLSBzdGFydCksIHN0b3BcblxuKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgIGFjY29yZGluZyB0byB0aGUgZnVuY3Rpb24gbWFwcGluZyBmLiAqKVxubGV0IGFkZF9zdWJzdGl0dXRlIGIgZiBzID1cbiAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgIGlmIGkgPCBsaW0gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnJCcgYXMgY3VycmVudCB3aGVuIHByZXZpb3VzID0gJ1xcXFwnIC0+XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgfCAnJCcgLT5cbiAgICAgICAgIGxldCBqID0gaSArIDEgaW5cbiAgICAgICAgIGxldCBpZGVudCwgbmV4dF9pID0gZmluZF9pZGVudCBzIGogbGltIGluXG4gICAgICAgICBhZGRfc3RyaW5nIGIgKGYgaWRlbnQpO1xuICAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgfCBjdXJyZW50IHdoZW4gcHJldmlvdXMgPT0gJ1xcXFwnIC0+XG4gICAgICAgICBhZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICB8ICdcXFxcJyBhcyBjdXJyZW50IC0+XG4gICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgY3VycmVudCAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgZW5kIGVsc2VcbiAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXMgaW5cbiAgc3Vic3QgJyAnIDBcblxubGV0IHRydW5jYXRlIGIgbGVuID1cbiAgICBpZiBsZW4gPCAwIHx8IGxlbiA+IGxlbmd0aCBiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLnRydW5jYXRlXCJcbiAgICBlbHNlXG4gICAgICBiLnBvc2l0aW9uIDwtIGxlblxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMudW5zYWZlX2dldCBiLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmZXIgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCBhZGRfc2VxIGIgc2VxID0gU2VxLml0ZXIgKGFkZF9jaGFyIGIpIHNlcVxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgYiA9IGNyZWF0ZSAzMiBpblxuICBhZGRfc2VxIGIgaTtcbiAgYlxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MTYgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDMyIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0dVwiXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5cbmxldCBhZGRfaW50OCBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDEgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAxO1xuICB1bnNhZmVfc2V0X2ludDggYi5idWZmZXIgYi5wb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X25lIGIgeCA9XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgMiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gIHVuc2FmZV9zZXRfaW50MTYgYi5idWZmZXIgYi5wb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDMyX25lIGIgeCA9XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgNCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDQ7XG4gIHVuc2FmZV9zZXRfaW50MzIgYi5idWZmZXIgYi5wb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDY0X25lIGIgeCA9XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgOCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDg7XG4gIHVuc2FmZV9zZXRfaW50NjQgYi5idWZmZXIgYi5wb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X2xlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQxNl9iZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG5cbmxldCBhZGRfaW50MzJfbGUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDMyX2JlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeClcblxubGV0IGFkZF9pbnQ2NF9sZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50NjRfYmUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuXG5sZXQgYWRkX3VpbnQ4ID0gYWRkX2ludDhcbmxldCBhZGRfdWludDE2X25lID0gYWRkX2ludDE2X25lXG5sZXQgYWRkX3VpbnQxNl9sZSA9IGFkZF9pbnQxNl9sZVxubGV0IGFkZF91aW50MTZfYmUgPSBhZGRfaW50MTZfYmVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgWGF2aWVyIExlcm95IGFuZCBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbmxldCBrZnByaW50ZiBrIG8gKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIG8gYWNjOyBrIG8pIEVuZF9vZl9hY2MgZm10XG5sZXQga2JwcmludGYgayBiIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gYnVmcHV0X2FjYyBiIGFjYzsgayBiKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGlrZnByaW50ZiBrIG9jIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgb2MgZm10XG5sZXQgaWticHJpbnRmID0gaWtmcHJpbnRmXG5cbmxldCBmcHJpbnRmIG9jIGZtdCA9IGtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBicHJpbnRmIGIgZm10ID0ga2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgaWZwcmludGYgb2MgZm10ID0gaWtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBpYnByaW50ZiBiIGZtdCA9IGlrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBwcmludGYgZm10ID0gZnByaW50ZiBzdGRvdXQgZm10XG5sZXQgZXByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZGVyciBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgaycgYWNjID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHN0cnB1dF9hY2MgYnVmIGFjYztcbiAgICBrIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gcykgZm10XG5cbmxldCBrcHJpbnRmID0ga3NwcmludGZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBrZXkgPSBzdHJpbmdcbnR5cGUgZG9jID0gc3RyaW5nXG50eXBlIHVzYWdlX21zZyA9IHN0cmluZ1xudHlwZSBhbm9uX2Z1biA9IChzdHJpbmcgLT4gdW5pdClcblxudHlwZSBzcGVjID1cbiAgfCBVbml0IG9mICh1bml0IC0+IHVuaXQpICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHVuaXQgYXJndW1lbnQgKilcbiAgfCBCb29sIG9mIChib29sIC0+IHVuaXQpICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgYm9vbCBhcmd1bWVudCAqKVxuICB8IFNldCBvZiBib29sIHJlZiAgICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRydWUgKilcbiAgfCBDbGVhciBvZiBib29sIHJlZiAgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byBmYWxzZSAqKVxuICB8IFN0cmluZyBvZiAoc3RyaW5nIC0+IHVuaXQpICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBTZXRfc3RyaW5nIG9mIHN0cmluZyByZWYgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgc3RyaW5nIGFyZ3VtZW50ICopXG4gIHwgSW50IG9mIChpbnQgLT4gdW5pdCkgICAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhbiBpbnQgYXJndW1lbnQgKilcbiAgfCBTZXRfaW50IG9mIGludCByZWYgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgaW50IGFyZ3VtZW50ICopXG4gIHwgRmxvYXQgb2YgKGZsb2F0IC0+IHVuaXQpICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIGZsb2F0IGFyZ3VtZW50ICopXG4gIHwgU2V0X2Zsb2F0IG9mIGZsb2F0IHJlZiAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIGZsb2F0IGFyZ3VtZW50ICopXG4gIHwgVHVwbGUgb2Ygc3BlYyBsaXN0ICAgICAgICAgKCogVGFrZSBzZXZlcmFsIGFyZ3VtZW50cyBhY2NvcmRpbmcgdG8gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYyBsaXN0ICopXG4gIHwgU3ltYm9sIG9mIHN0cmluZyBsaXN0ICogKHN0cmluZyAtPiB1bml0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFRha2Ugb25lIG9mIHRoZSBzeW1ib2xzIGFzIGFyZ3VtZW50IGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIHN5bWJvbC4gKilcbiAgfCBSZXN0IG9mIChzdHJpbmcgLT4gdW5pdCkgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGVhY2ggcmVtYWluaW5nIGFyZ3VtZW50ICopXG4gIHwgUmVzdF9hbGwgb2YgKHN0cmluZyBsaXN0IC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogU3RvcCBpbnRlcnByZXRpbmcga2V5d29yZHMgYW5kIGNhbGwgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBhbGwgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbiAgfCBFeHBhbmQgb2YgKHN0cmluZyAtPiBzdHJpbmcgYXJyYXkpICgqIElmIHRoZSByZW1haW5pbmcgYXJndW1lbnRzIHRvIHByb2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBvZiB0aGUgZm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tcIi1mb29cIjsgXCJhcmdcIl0gQCByZXN0XSB3aGVyZSBcImZvb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyByZWdpc3RlcmVkIGFzIFtFeHBhbmQgZl0sIHRoZW4gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgW2YgXCJhcmdcIiBAIHJlc3RdIGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkLiBPbmx5IGFsbG93ZWQgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY10uICopXG5cbmV4Y2VwdGlvbiBCYWQgb2Ygc3RyaW5nXG5leGNlcHRpb24gSGVscCBvZiBzdHJpbmdcblxudHlwZSBlcnJvciA9XG4gIHwgVW5rbm93biBvZiBzdHJpbmdcbiAgfCBXcm9uZyBvZiBzdHJpbmcgKiBzdHJpbmcgKiBzdHJpbmcgICgqIG9wdGlvbiwgYWN0dWFsLCBleHBlY3RlZCAqKVxuICB8IE1pc3Npbmcgb2Ygc3RyaW5nXG4gIHwgTWVzc2FnZSBvZiBzdHJpbmdcblxuZXhjZXB0aW9uIFN0b3Agb2YgZXJyb3IgKCogdXNlZCBpbnRlcm5hbGx5ICopXG5cbm9wZW4gUHJpbnRmXG5cbmxldCByZWMgYXNzb2MzIHggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8ICh5MSwgeTIsIF8pIDo6IF8gd2hlbiB5MSA9IHggLT4geTJcbiAgfCBfIDo6IHQgLT4gYXNzb2MzIHggdFxuXG5cbmxldCBzcGxpdCBzID1cbiAgbGV0IGkgPSBTdHJpbmcuaW5kZXggcyAnPScgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBTdHJpbmcuc3ViIHMgMCBpLCBTdHJpbmcuc3ViIHMgKGkrMSkgKGxlbi0oaSsxKSlcblxuXG5sZXQgbWFrZV9zeW1saXN0IHByZWZpeCBzZXAgc3VmZml4IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBcIjxub25lPlwiXG4gIHwgaDo6dCAtPiAoTGlzdC5mb2xkX2xlZnQgKGZ1biB4IHkgLT4geCBeIHNlcCBeIHkpIChwcmVmaXggXiBoKSB0KSBeIHN1ZmZpeFxuXG5cbmxldCBwcmludF9zcGVjIGJ1ZiAoa2V5LCBzcGVjLCBkb2MpID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBkb2MgPiAwIHRoZW5cbiAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICB8IFN5bWJvbCAobCwgXykgLT5cbiAgICAgICAgYnByaW50ZiBidWYgXCIgICVzICVzJXNcXG5cIiBrZXkgKG1ha2Vfc3ltbGlzdCBcIntcIiBcInxcIiBcIn1cIiBsKSBkb2NcbiAgICB8IF8gLT5cbiAgICAgICAgYnByaW50ZiBidWYgXCIgICVzICVzXFxuXCIga2V5IGRvY1xuXG5cbmxldCBoZWxwX2FjdGlvbiAoKSA9IHJhaXNlIChTdG9wIChVbmtub3duIFwiLWhlbHBcIikpXG5cbmxldCBhZGRfaGVscCBzcGVjbGlzdCA9XG4gIGxldCBhZGQxID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItaGVscFwiIHNwZWNsaXN0KTsgW11cbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgW1wiLWhlbHBcIiwgVW5pdCBoZWxwX2FjdGlvbiwgXCIgRGlzcGxheSB0aGlzIGxpc3Qgb2Ygb3B0aW9uc1wiXVxuICBhbmQgYWRkMiA9XG4gICAgdHJ5IGlnbm9yZSAoYXNzb2MzIFwiLS1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItLWhlbHBcIiwgVW5pdCBoZWxwX2FjdGlvbiwgXCIgRGlzcGxheSB0aGlzIGxpc3Qgb2Ygb3B0aW9uc1wiXVxuICBpblxuICBzcGVjbGlzdCBAIChhZGQxIEAgYWRkMilcblxuXG5sZXQgdXNhZ2VfYiBidWYgc3BlY2xpc3QgZXJybXNnID1cbiAgYnByaW50ZiBidWYgXCIlc1xcblwiIGVycm1zZztcbiAgTGlzdC5pdGVyIChwcmludF9zcGVjIGJ1ZikgKGFkZF9oZWxwIHNwZWNsaXN0KVxuXG5cbmxldCB1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICB1c2FnZV9iIGIgc3BlY2xpc3QgZXJybXNnO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCB1c2FnZSBzcGVjbGlzdCBlcnJtc2cgPVxuICBlcHJpbnRmIFwiJXNcIiAodXNhZ2Vfc3RyaW5nIHNwZWNsaXN0IGVycm1zZylcblxuXG5sZXQgY3VycmVudCA9IHJlZiAwXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChib29sX29mX3N0cmluZyB4KVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG5cbmxldCBpbnRfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgeClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggYWxsb3dfZXhwYW5kIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm1zZyA9XG4gIGxldCBpbml0cG9zID0gIWN1cnJlbnQgaW5cbiAgbGV0IGNvbnZlcnRfZXJyb3IgZXJyb3IgPVxuICAgICgqIGNvbnZlcnQgYW4gaW50ZXJuYWwgZXJyb3IgdG8gYSBCYWQvSGVscCBleGNlcHRpb25cbiAgICAgICAqb3IqIGFkZCB0aGUgcHJvZ3JhbSBuYW1lIGFzIGEgcHJlZml4IGFuZCB0aGUgdXNhZ2UgbWVzc2FnZSBhcyBhIHN1ZmZpeFxuICAgICAgIHRvIGFuIHVzZXItcmFpc2VkIEJhZCBleGNlcHRpb24uXG4gICAgKilcbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gICAgbGV0IHByb2duYW1lID1cbiAgICAgIGlmIGluaXRwb3MgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSB0aGVuICFhcmd2Lihpbml0cG9zKSBlbHNlIFwiKD8pXCIgaW5cbiAgICBiZWdpbiBtYXRjaCBlcnJvciB3aXRoXG4gICAgICB8IFVua25vd24gXCItaGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gXCItLWhlbHBcIiAtPiAoKVxuICAgICAgfCBVbmtub3duIHMgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogdW5rbm93biBvcHRpb24gJyVzJy5cXG5cIiBwcm9nbmFtZSBzXG4gICAgICB8IE1pc3NpbmcgcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiBvcHRpb24gJyVzJyBuZWVkcyBhbiBhcmd1bWVudC5cXG5cIiBwcm9nbmFtZSBzXG4gICAgICB8IFdyb25nIChvcHQsIGFyZywgZXhwZWN0ZWQpIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IHdyb25nIGFyZ3VtZW50ICclcyc7IG9wdGlvbiAnJXMnIGV4cGVjdHMgJXMuXFxuXCJcbiAgICAgICAgICAgICAgICAgIHByb2duYW1lIGFyZyBvcHQgZXhwZWN0ZWRcbiAgICAgIHwgTWVzc2FnZSBzIC0+ICgqIHVzZXIgZXJyb3IgbWVzc2FnZSAqKVxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiAlcy5cXG5cIiBwcm9nbmFtZSBzXG4gICAgZW5kO1xuICAgIHVzYWdlX2IgYiAhc3BlY2xpc3QgZXJybXNnO1xuICAgIGlmIGVycm9yID0gVW5rbm93biBcIi1oZWxwXCIgfHwgZXJyb3IgPSBVbmtub3duIFwiLS1oZWxwXCJcbiAgICB0aGVuIEhlbHAgKEJ1ZmZlci5jb250ZW50cyBiKVxuICAgIGVsc2UgQmFkIChCdWZmZXIuY29udGVudHMgYilcbiAgaW5cbiAgaW5jciBjdXJyZW50O1xuICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIGRvXG4gICAgYmVnaW4gdHJ5XG4gICAgICBsZXQgcyA9ICFhcmd2LighY3VycmVudCkgaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggcyA+PSAxICYmIHMuWzBdID0gJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IGFjdGlvbiwgZm9sbG93ID1cbiAgICAgICAgICB0cnkgYXNzb2MzIHMgIXNwZWNsaXN0LCBOb25lXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBrZXl3b3JkLCBhcmcgPSBzcGxpdCBzIGluXG4gICAgICAgICAgICBhc3NvYzMga2V5d29yZCAhc3BlY2xpc3QsIFNvbWUgYXJnXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgKFN0b3AgKFVua25vd24gcykpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub19hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGFyZyAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJubyBhcmd1bWVudFwiKSkpIGluXG4gICAgICAgIGxldCBnZXRfYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBpZiAhY3VycmVudCArIDEgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSB0aGVuICFhcmd2LighY3VycmVudCArIDEpXG4gICAgICAgICAgICAgIGVsc2UgcmFpc2UgKFN0b3AgKE1pc3NpbmcgcykpXG4gICAgICAgICAgfCBTb21lIGFyZyAtPiBhcmdcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvbnN1bWVfYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpbmNyIGN1cnJlbnRcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIHRyZWF0X2FjdGlvbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVW5pdCBmIC0+IG5vX2FyZyAoKTsgZiAoKTtcbiAgICAgICAgfCBCb29sIGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBib29sX29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGJvb2xlYW5cIikpKVxuICAgICAgICAgICAgfCBTb21lIHMgLT4gZiBzXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXQgciAtPiBub19hcmcgKCk7IHIgOj0gdHJ1ZTtcbiAgICAgICAgfCBDbGVhciByIC0+IG5vX2FyZyAoKTsgciA6PSBmYWxzZTtcbiAgICAgICAgfCBTdHJpbmcgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGYgYXJnO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU3ltYm9sIChzeW1iLCBmKSAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGlmIExpc3QubWVtIGFyZyBzeW1iIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAgZiBhcmc7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwib25lIG9mOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiAobWFrZV9zeW1saXN0IFwiXCIgXCIgXCIgXCJcIiBzeW1iKSkpKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgU2V0X3N0cmluZyByIC0+XG4gICAgICAgICAgICByIDo9IGdldF9hcmcgKCk7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBJbnQgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGludF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYW4gaW50ZWdlclwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiBmIHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldF9pbnQgciAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGludF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYW4gaW50ZWdlclwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiByIDo9IHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IEZsb2F0IGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBmbG9hdF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBmbG9hdFwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiBmIHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldF9mbG9hdCByIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZmxvYXRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgZmxvYXRcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gciA6PSB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBUdXBsZSBzcGVjcyAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgTGlzdC5pdGVyIHRyZWF0X2FjdGlvbiBzcGVjcztcbiAgICAgICAgfCBSZXN0IGYgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgLSAxIGRvXG4gICAgICAgICAgICAgIGYgIWFyZ3YuKCFjdXJyZW50ICsgMSk7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgfCBSZXN0X2FsbCBmIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICB3aGlsZSAhY3VycmVudCA8IEFycmF5Lmxlbmd0aCAhYXJndiAtIDEgZG9cbiAgICAgICAgICAgICAgYWNjIDo9ICFhcmd2LighY3VycmVudCArIDEpIDo6ICFhY2M7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIGYgKExpc3QucmV2ICFhY2MpXG4gICAgICAgIHwgRXhwYW5kIGYgLT5cbiAgICAgICAgICAgIGlmIG5vdCBhbGxvd19leHBhbmQgdGhlblxuICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkFyZy5FeHBhbmQgaXMgaXMgb25seSBhbGxvd2VkIHdpdGggXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZy5wYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY1wiKTtcbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBsZXQgbmV3YXJnID0gZiBhcmcgaW5cbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IEFycmF5LnN1YiAhYXJndiAwICghY3VycmVudCArIDEpXG4gICAgICAgICAgICBhbmQgYWZ0ZXIgPVxuICAgICAgICAgICAgICBBcnJheS5zdWIgIWFyZ3YgKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICgoQXJyYXkubGVuZ3RoICFhcmd2KSAtICFjdXJyZW50IC0gMSkgaW5cbiAgICAgICAgICAgIGFyZ3Y6PSBBcnJheS5jb25jYXQgW2JlZm9yZTtuZXdhcmc7YWZ0ZXJdO1xuICAgICAgICBpblxuICAgICAgICB0cmVhdF9hY3Rpb24gYWN0aW9uIGVuZFxuICAgICAgZWxzZSBhbm9uZnVuIHNcbiAgICB3aXRoIHwgQmFkIG0gLT4gcmFpc2UgKGNvbnZlcnRfZXJyb3IgKE1lc3NhZ2UgbSkpO1xuICAgICAgICAgfCBTdG9wIGUgLT4gcmFpc2UgKGNvbnZlcnRfZXJyb3IgZSk7XG4gICAgZW5kO1xuICAgIGluY3IgY3VycmVudFxuICBkb25lXG5cbmxldCBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggdHJ1ZSBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2dcblxubGV0IHBhcnNlX2FyZ3ZfZHluYW1pYyA/KGN1cnJlbnQ9Y3VycmVudCkgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBmYWxzZSBjdXJyZW50IChyZWYgYXJndikgc3BlY2xpc3QgYW5vbmZ1blxuICAgIGVycm1zZ1xuXG5cbmxldCBwYXJzZV9hcmd2ID8oY3VycmVudD1jdXJyZW50KSBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYXJndl9keW5hbWljIH5jdXJyZW50OmN1cnJlbnQgYXJndiAocmVmIHNwZWNsaXN0KSBhbm9uZnVuIGVycm1zZ1xuXG5cbmxldCBwYXJzZSBsIGYgbXNnID1cbiAgdHJ5XG4gICAgcGFyc2VfYXJndiBTeXMuYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5cbmxldCBwYXJzZV9keW5hbWljIGwgZiBtc2cgPVxuICB0cnlcbiAgICBwYXJzZV9hcmd2X2R5bmFtaWMgU3lzLmFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxubGV0IHBhcnNlX2V4cGFuZCBsIGYgbXNnID1cbiAgdHJ5XG4gICAgbGV0IGFyZ3YgPSByZWYgU3lzLmFyZ3YgaW5cbiAgICBsZXQgc3BlYyA9IHJlZiBsIGluXG4gICAgbGV0IGN1cnJlbnQgPSByZWYgKCFjdXJyZW50KSBpblxuICAgIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIGN1cnJlbnQgYXJndiBzcGVjIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5cbmxldCBzZWNvbmRfd29yZCBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgbiA9XG4gICAgaWYgbiA+PSBsZW4gdGhlbiBsZW5cbiAgICBlbHNlIGlmIHMuW25dID0gJyAnIHRoZW4gbG9vcCAobisxKVxuICAgIGVsc2UgblxuICBpblxuICBtYXRjaCBTdHJpbmcuaW5kZXggcyAnXFx0JyB3aXRoXG4gIHwgbiAtPiBsb29wIChuKzEpXG4gIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggU3RyaW5nLmluZGV4IHMgJyAnIHdpdGhcbiAgICAgIHwgbiAtPiBsb29wIChuKzEpXG4gICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gbGVuXG4gICAgICBlbmRcblxuXG5sZXQgbWF4X2FyZ19sZW4gY3VyIChrd2QsIHNwZWMsIGRvYykgPVxuICBtYXRjaCBzcGVjIHdpdGhcbiAgfCBTeW1ib2wgXyAtPiBJbnQubWF4IGN1ciAoU3RyaW5nLmxlbmd0aCBrd2QpXG4gIHwgXyAtPiBJbnQubWF4IGN1ciAoU3RyaW5nLmxlbmd0aCBrd2QgKyBzZWNvbmRfd29yZCBkb2MpXG5cblxubGV0IHJlcGxhY2VfbGVhZGluZ190YWIgcyA9XG4gIGxldCBzZWVuID0gcmVmIGZhbHNlIGluXG4gIFN0cmluZy5tYXAgKGZ1bmN0aW9uICdcXHQnIHdoZW4gbm90ICFzZWVuIC0+IHNlZW4gOj0gdHJ1ZTsgJyAnIHwgYyAtPiBjKSBzXG5cbmxldCBhZGRfcGFkZGluZyBsZW4ga3NkID1cbiAgbWF0Y2gga3NkIHdpdGhcbiAgfCAoXywgXywgXCJcIikgLT5cbiAgICAgICgqIERvIG5vdCBwYWQgdW5kb2N1bWVudGVkIG9wdGlvbnMsIHNvIHRoYXQgdGhleSBzdGlsbCBkb24ndCBzaG93IHVwIHdoZW5cbiAgICAgICAqIHJ1biB0aHJvdWdoIFt1c2FnZV0gb3IgW3BhcnNlXS4gKilcbiAgICAgIGtzZFxuICB8IChrd2QsIChTeW1ib2wgXyBhcyBzcGVjKSwgbXNnKSAtPlxuICAgICAgbGV0IGN1dGNvbCA9IHNlY29uZF93b3JkIG1zZyBpblxuICAgICAgbGV0IHNwYWNlcyA9IFN0cmluZy5tYWtlICgoSW50Lm1heCAwIChsZW4gLSBjdXRjb2wpKSArIDMpICcgJyBpblxuICAgICAgKGt3ZCwgc3BlYywgXCJcXG5cIiBeIHNwYWNlcyBeIHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKVxuICB8IChrd2QsIHNwZWMsIG1zZykgLT5cbiAgICAgIGxldCBjdXRjb2wgPSBzZWNvbmRfd29yZCBtc2cgaW5cbiAgICAgIGxldCBrd2RfbGVuID0gU3RyaW5nLmxlbmd0aCBrd2QgaW5cbiAgICAgIGxldCBkaWZmID0gbGVuIC0ga3dkX2xlbiAtIGN1dGNvbCBpblxuICAgICAgaWYgZGlmZiA8PSAwIHRoZW5cbiAgICAgICAgKGt3ZCwgc3BlYywgcmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBzcGFjZXMgPSBTdHJpbmcubWFrZSBkaWZmICcgJyBpblxuICAgICAgICBsZXQgcHJlZml4ID0gU3RyaW5nLnN1YiAocmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpIDAgY3V0Y29sIGluXG4gICAgICAgIGxldCBzdWZmaXggPSBTdHJpbmcuc3ViIG1zZyBjdXRjb2wgKFN0cmluZy5sZW5ndGggbXNnIC0gY3V0Y29sKSBpblxuICAgICAgICAoa3dkLCBzcGVjLCBwcmVmaXggXiBzcGFjZXMgXiBzdWZmaXgpXG5cblxubGV0IGFsaWduID8obGltaXQ9bWF4X2ludCkgc3BlY2xpc3QgPVxuICBsZXQgY29tcGxldGVkID0gYWRkX2hlbHAgc3BlY2xpc3QgaW5cbiAgbGV0IGxlbiA9IExpc3QuZm9sZF9sZWZ0IG1heF9hcmdfbGVuIDAgY29tcGxldGVkIGluXG4gIGxldCBsZW4gPSBJbnQubWluIGxlbiBsaW1pdCBpblxuICBMaXN0Lm1hcCAoYWRkX3BhZGRpbmcgbGVuKSBjb21wbGV0ZWRcblxubGV0IHRyaW1fY3IgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgbGVuID4gMCAmJiBTdHJpbmcuZ2V0IHMgKGxlbiAtIDEpID0gJ1xccicgdGhlblxuICAgIFN0cmluZy5zdWIgcyAwIChsZW4gLSAxKVxuICBlbHNlXG4gICAgc1xuXG5sZXQgcmVhZF9hdXggdHJpbSBzZXAgZmlsZSA9XG4gIGxldCBpYyA9IG9wZW5faW5fYmluIGZpbGUgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIGxldCB3b3JkcyA9IHJlZiBbXSBpblxuICBsZXQgc3Rhc2ggKCkgPVxuICAgIGxldCB3b3JkID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIGxldCB3b3JkID0gaWYgdHJpbSB0aGVuIHRyaW1fY3Igd29yZCBlbHNlIHdvcmQgaW5cbiAgICB3b3JkcyA6PSB3b3JkIDo6ICF3b3JkcztcbiAgICBCdWZmZXIuY2xlYXIgYnVmXG4gIGluXG4gIGJlZ2luXG4gICAgdHJ5IHdoaWxlIHRydWUgZG9cbiAgICAgICAgbGV0IGMgPSBpbnB1dF9jaGFyIGljIGluXG4gICAgICAgIGlmIGMgPSBzZXAgdGhlbiBzdGFzaCAoKSBlbHNlIEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICAgICAgZG9uZVxuICAgIHdpdGggRW5kX29mX2ZpbGUgLT4gKClcbiAgZW5kO1xuICBpZiBCdWZmZXIubGVuZ3RoIGJ1ZiA+IDAgdGhlbiBzdGFzaCAoKTtcbiAgY2xvc2VfaW4gaWM7XG4gIEFycmF5Lm9mX2xpc3QgKExpc3QucmV2ICF3b3JkcylcblxubGV0IHJlYWRfYXJnID0gcmVhZF9hdXggdHJ1ZSAnXFxuJ1xuXG5sZXQgcmVhZF9hcmcwID0gcmVhZF9hdXggZmFsc2UgJ1xceDAwJ1xuXG5sZXQgd3JpdGVfYXV4IHNlcCBmaWxlIGFyZ3MgPVxuICBsZXQgb2MgPSBvcGVuX291dF9iaW4gZmlsZSBpblxuICBBcnJheS5pdGVyIChmdW4gcyAtPiBmcHJpbnRmIG9jIFwiJXMlY1wiIHMgc2VwKSBhcmdzO1xuICBjbG9zZV9vdXQgb2NcblxubGV0IHdyaXRlX2FyZyA9IHdyaXRlX2F1eCAnXFxuJ1xuXG5sZXQgd3JpdGVfYXJnMCA9IHdyaXRlX2F1eCAnXFx4MDAnXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGlkIDogJ2EgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5sZXQgY29uc3QgYyBfID0gY1xubGV0IGZsaXAgZiB4IHkgPSBmIHkgeFxubGV0IG5lZ2F0ZSBwIHYgPSBub3QgKHAgdilcblxuZXhjZXB0aW9uIEZpbmFsbHlfcmFpc2VkIG9mIGV4blxuXG5sZXQgKCkgPSBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIEBAIGZ1bmN0aW9uXG58IEZpbmFsbHlfcmFpc2VkIGV4biAtPiBTb21lIChcIkZ1bi5GaW5hbGx5X3JhaXNlZDogXCIgXiBQcmludGV4Yy50b19zdHJpbmcgZXhuKVxufCBfIC0+IE5vbmVcblxubGV0IHByb3RlY3QgfihmaW5hbGx5IDogdW5pdCAtPiB1bml0KSB3b3JrID1cbiAgbGV0IGZpbmFsbHlfbm9fZXhuICgpID1cbiAgICB0cnkgZmluYWxseSAoKSB3aXRoIGUgLT5cbiAgICAgIGxldCBidCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSAoRmluYWxseV9yYWlzZWQgZSkgYnRcbiAgaW5cbiAgbWF0Y2ggd29yayAoKSB3aXRoXG4gIHwgcmVzdWx0IC0+IGZpbmFsbHlfbm9fZXhuICgpIDsgcmVzdWx0XG4gIHwgZXhjZXB0aW9uIHdvcmtfZXhuIC0+XG4gICAgICBsZXQgd29ya19idCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBmaW5hbGx5X25vX2V4biAoKSA7XG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSB3b3JrX2V4biB3b3JrX2J0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIEphY3F1ZXMtSGVucmkgSm91cmRhbiwgcHJvamV0IEdhbGxpdW0sIElOUklBIFBhcmlzICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2LTIwMTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSAgICopXG4oKiAgICAgZXQgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc3RhdCA9IHtcbiAgbWlub3Jfd29yZHMgOiBmbG9hdDtcbiAgcHJvbW90ZWRfd29yZHMgOiBmbG9hdDtcbiAgbWFqb3Jfd29yZHMgOiBmbG9hdDtcbiAgbWlub3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIG1ham9yX2NvbGxlY3Rpb25zIDogaW50O1xuICBoZWFwX3dvcmRzIDogaW50O1xuICBoZWFwX2NodW5rcyA6IGludDtcbiAgbGl2ZV93b3JkcyA6IGludDtcbiAgbGl2ZV9ibG9ja3MgOiBpbnQ7XG4gIGZyZWVfd29yZHMgOiBpbnQ7XG4gIGZyZWVfYmxvY2tzIDogaW50O1xuICBsYXJnZXN0X2ZyZWUgOiBpbnQ7XG4gIGZyYWdtZW50cyA6IGludDtcbiAgY29tcGFjdGlvbnMgOiBpbnQ7XG4gIHRvcF9oZWFwX3dvcmRzIDogaW50O1xuICBzdGFja19zaXplIDogaW50O1xuICBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM6IGludDtcbn1cblxudHlwZSBjb250cm9sID0ge1xuICBtdXRhYmxlIG1pbm9yX2hlYXBfc2l6ZSA6IGludDtcbiAgbXV0YWJsZSBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludDtcbiAgbXV0YWJsZSBzcGFjZV9vdmVyaGVhZCA6IGludDtcbiAgbXV0YWJsZSB2ZXJib3NlIDogaW50O1xuICBtdXRhYmxlIG1heF9vdmVyaGVhZCA6IGludDtcbiAgbXV0YWJsZSBzdGFja19saW1pdCA6IGludDtcbiAgbXV0YWJsZSBhbGxvY2F0aW9uX3BvbGljeSA6IGludDtcbiAgd2luZG93X3NpemUgOiBpbnQ7XG4gIGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludDtcbiAgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnQ7XG59XG5cbmV4dGVybmFsIHN0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2Nfc3RhdFwiXG5leHRlcm5hbCBxdWlja19zdGF0IDogdW5pdCAtPiBzdGF0ID0gXCJjYW1sX2djX3F1aWNrX3N0YXRcIlxuZXh0ZXJuYWwgY291bnRlcnMgOiB1bml0IC0+IChmbG9hdCAqIGZsb2F0ICogZmxvYXQpID0gXCJjYW1sX2djX2NvdW50ZXJzXCJcbmV4dGVybmFsIG1pbm9yX3dvcmRzIDogdW5pdCAtPiAoZmxvYXQgW0B1bmJveGVkXSlcbiAgPSBcImNhbWxfZ2NfbWlub3Jfd29yZHNcIiBcImNhbWxfZ2NfbWlub3Jfd29yZHNfdW5ib3hlZFwiXG5leHRlcm5hbCBnZXQgOiB1bml0IC0+IGNvbnRyb2wgPSBcImNhbWxfZ2NfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGNvbnRyb2wgLT4gdW5pdCA9IFwiY2FtbF9nY19zZXRcIlxuZXh0ZXJuYWwgbWlub3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWlub3JcIlxuZXh0ZXJuYWwgbWFqb3Jfc2xpY2UgOiBpbnQgLT4gaW50ID0gXCJjYW1sX2djX21ham9yX3NsaWNlXCJcbmV4dGVybmFsIG1ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21ham9yXCJcbmV4dGVybmFsIGZ1bGxfbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfZnVsbF9tYWpvclwiXG5leHRlcm5hbCBjb21wYWN0IDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX2NvbXBhY3Rpb25cIlxuZXh0ZXJuYWwgZ2V0X21pbm9yX2ZyZWUgOiB1bml0IC0+IGludCA9IFwiY2FtbF9nZXRfbWlub3JfZnJlZVwiXG5leHRlcm5hbCBnZXRfYnVja2V0IDogaW50IC0+IGludCA9IFwiY2FtbF9nZXRfbWFqb3JfYnVja2V0XCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGdldF9jcmVkaXQgOiB1bml0IC0+IGludCA9IFwiY2FtbF9nZXRfbWFqb3JfY3JlZGl0XCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGh1Z2VfZmFsbGJhY2tfY291bnQgOiB1bml0IC0+IGludCA9IFwiY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50XCJcbmV4dGVybmFsIGV2ZW50bG9nX3BhdXNlIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2V2ZW50bG9nX3BhdXNlXCJcbmV4dGVybmFsIGV2ZW50bG9nX3Jlc3VtZSA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9ldmVudGxvZ19yZXN1bWVcIlxuXG5vcGVuIFByaW50ZlxuXG5sZXQgcHJpbnRfc3RhdCBjID1cbiAgbGV0IHN0ID0gc3RhdCAoKSBpblxuICBmcHJpbnRmIGMgXCJtaW5vcl9jb2xsZWN0aW9uczogICAgICAlZFxcblwiIHN0Lm1pbm9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJtYWpvcl9jb2xsZWN0aW9uczogICAgICAlZFxcblwiIHN0Lm1ham9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJjb21wYWN0aW9uczogICAgICAgICAgICAlZFxcblwiIHN0LmNvbXBhY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM6ICVkXFxuXCIgc3QuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgbGV0IGwxID0gU3RyaW5nLmxlbmd0aCAoc3ByaW50ZiBcIiUuMGZcIiBzdC5taW5vcl93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwibWlub3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWlub3Jfd29yZHM7XG4gIGZwcmludGYgYyBcInByb21vdGVkX3dvcmRzOiAlKi4wZlxcblwiIGwxIHN0LnByb21vdGVkX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJtYWpvcl93b3JkczogICAgJSouMGZcXG5cIiBsMSBzdC5tYWpvcl93b3JkcztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMiA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlZFwiIHN0LnRvcF9oZWFwX3dvcmRzKSBpblxuICBmcHJpbnRmIGMgXCJ0b3BfaGVhcF93b3JkczogJSpkXFxuXCIgbDIgc3QudG9wX2hlYXBfd29yZHM7XG4gIGZwcmludGYgYyBcImhlYXBfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsaXZlX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QubGl2ZV93b3JkcztcbiAgZnByaW50ZiBjIFwiZnJlZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmZyZWVfd29yZHM7XG4gIGZwcmludGYgYyBcImxhcmdlc3RfZnJlZTogICAlKmRcXG5cIiBsMiBzdC5sYXJnZXN0X2ZyZWU7XG4gIGZwcmludGYgYyBcImZyYWdtZW50czogICAgICAlKmRcXG5cIiBsMiBzdC5mcmFnbWVudHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBmcHJpbnRmIGMgXCJsaXZlX2Jsb2NrczogJWRcXG5cIiBzdC5saXZlX2Jsb2NrcztcbiAgZnByaW50ZiBjIFwiZnJlZV9ibG9ja3M6ICVkXFxuXCIgc3QuZnJlZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImhlYXBfY2h1bmtzOiAlZFxcblwiIHN0LmhlYXBfY2h1bmtzXG5cblxubGV0IGFsbG9jYXRlZF9ieXRlcyAoKSA9XG4gIGxldCAobWksIHBybywgbWEpID0gY291bnRlcnMgKCkgaW5cbiAgKG1pICsuIG1hIC0uIHBybykgKi4gZmxvYXRfb2ZfaW50IChTeXMud29yZF9zaXplIC8gOClcblxuXG5leHRlcm5hbCBmaW5hbGlzZSA6ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlZ2lzdGVyXCJcbmV4dGVybmFsIGZpbmFsaXNlX2xhc3QgOiAodW5pdCAtPiB1bml0KSAtPiAnYSAtPiB1bml0ID1cbiAgXCJjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXCJcbmV4dGVybmFsIGZpbmFsaXNlX3JlbGVhc2UgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZmluYWxfcmVsZWFzZVwiXG5cblxudHlwZSBhbGFybSA9IGJvb2wgcmVmXG50eXBlIGFsYXJtX3JlYyA9IHthY3RpdmUgOiBhbGFybTsgZiA6IHVuaXQgLT4gdW5pdH1cblxubGV0IHJlYyBjYWxsX2FsYXJtIGFyZWMgPVxuICBpZiAhKGFyZWMuYWN0aXZlKSB0aGVuIGJlZ2luXG4gICAgZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjO1xuICAgIGFyZWMuZiAoKTtcbiAgZW5kXG5cblxubGV0IGNyZWF0ZV9hbGFybSBmID1cbiAgbGV0IGFyZWMgPSB7IGFjdGl2ZSA9IHJlZiB0cnVlOyBmID0gZiB9IGluXG4gIGZpbmFsaXNlIGNhbGxfYWxhcm0gYXJlYztcbiAgYXJlYy5hY3RpdmVcblxuXG5sZXQgZGVsZXRlX2FsYXJtIGEgPSBhIDo9IGZhbHNlXG5cbm1vZHVsZSBNZW1wcm9mID1cbiAgc3RydWN0XG4gICAgdHlwZSBhbGxvY2F0aW9uX3NvdXJjZSA9IE5vcm1hbCB8IE1hcnNoYWwgfCBDdXN0b21cbiAgICB0eXBlIGFsbG9jYXRpb24gPVxuICAgICAgeyBuX3NhbXBsZXMgOiBpbnQ7XG4gICAgICAgIHNpemUgOiBpbnQ7XG4gICAgICAgIHNvdXJjZSA6IGFsbG9jYXRpb25fc291cmNlO1xuICAgICAgICBjYWxsc3RhY2sgOiBQcmludGV4Yy5yYXdfYmFja3RyYWNlIH1cblxuICAgIHR5cGUgKCdtaW5vciwgJ21ham9yKSB0cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3I6IGFsbG9jYXRpb24gLT4gJ21pbm9yIG9wdGlvbjtcbiAgICAgIGFsbG9jX21ham9yOiBhbGxvY2F0aW9uIC0+ICdtYWpvciBvcHRpb247XG4gICAgICBwcm9tb3RlOiAnbWlub3IgLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIGRlYWxsb2NfbWlub3I6ICdtaW5vciAtPiB1bml0O1xuICAgICAgZGVhbGxvY19tYWpvcjogJ21ham9yIC0+IHVuaXQ7XG4gICAgfVxuXG4gICAgbGV0IG51bGxfdHJhY2tlciA9IHtcbiAgICAgIGFsbG9jX21pbm9yID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBwcm9tb3RlID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgZGVhbGxvY19taW5vciA9IChmdW4gXyAtPiAoKSk7XG4gICAgICBkZWFsbG9jX21ham9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICB9XG5cbiAgICBleHRlcm5hbCBjX3N0YXJ0IDpcbiAgICAgIGZsb2F0IC0+IGludCAtPiAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgLT4gdW5pdFxuICAgICAgPSBcImNhbWxfbWVtcHJvZl9zdGFydFwiXG5cbiAgICBsZXQgc3RhcnRcbiAgICAgIH5zYW1wbGluZ19yYXRlXG4gICAgICA/KGNhbGxzdGFja19zaXplID0gbWF4X2ludClcbiAgICAgIHRyYWNrZXIgPVxuICAgICAgY19zdGFydCBzYW1wbGluZ19yYXRlIGNhbGxzdGFja19zaXplIHRyYWNrZXJcblxuICAgIGV4dGVybmFsIHN0b3AgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfbWVtcHJvZl9zdG9wXCJcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1lc3NhZ2UgZGlnZXN0IChNRDUpICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSA9IFN0cmluZy5jb21wYXJlXG5sZXQgZXF1YWwgPSBTdHJpbmcuZXF1YWxcblxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZzogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfc3RyaW5nXCJcbmV4dGVybmFsIGNoYW5uZWw6IGluX2NoYW5uZWwgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X2NoYW5cIlxuXG5sZXQgc3RyaW5nIHN0ciA9XG4gIHVuc2FmZV9zdHJpbmcgc3RyIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG5sZXQgYnl0ZXMgYiA9IHN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKVxuXG5sZXQgc3Vic3RyaW5nIHN0ciBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Quc3Vic3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfc3RyaW5nIHN0ciBvZnMgbGVuXG5cbmxldCBzdWJieXRlcyBiIG9mcyBsZW4gPSBzdWJzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYikgb2ZzIGxlblxuXG5sZXQgZmlsZSBmaWxlbmFtZSA9XG4gIGxldCBpYyA9IG9wZW5faW5fYmluIGZpbGVuYW1lIGluXG4gIG1hdGNoIGNoYW5uZWwgaWMgKC0xKSB3aXRoXG4gICAgfCBkIC0+IGNsb3NlX2luIGljOyBkXG4gICAgfCBleGNlcHRpb24gZSAtPiBjbG9zZV9pbiBpYzsgcmFpc2UgZVxuXG5sZXQgb3V0cHV0IGNoYW4gZGlnZXN0ID1cbiAgb3V0cHV0X3N0cmluZyBjaGFuIGRpZ2VzdFxuXG5sZXQgaW5wdXQgY2hhbiA9IHJlYWxseV9pbnB1dF9zdHJpbmcgY2hhbiAxNlxuXG5sZXQgY2hhcl9oZXggbiA9XG4gIENoYXIudW5zYWZlX2NociAobiArIGlmIG4gPCAxMCB0aGVuIENoYXIuY29kZSAnMCcgZWxzZSAoQ2hhci5jb2RlICdhJyAtIDEwKSlcblxubGV0IHRvX2hleCBkID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBkIDw+IDE2IHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QudG9faGV4XCI7XG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgMzIgaW5cbiAgZm9yIGkgPSAwIHRvIDE1IGRvXG4gICAgbGV0IHggPSBDaGFyLmNvZGUgZC5baV0gaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKSAoY2hhcl9oZXggKHggbHNyIDQpKTtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKzEpIChjaGFyX2hleCAoeCBsYW5kIDB4MGYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcblxubGV0IGZyb21faGV4IHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gMzIgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5mcm9tX2hleFwiO1xuICBsZXQgZGlnaXQgYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnMCcuLic5JyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCdcbiAgICB8ICdBJy4uJ0YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdBJyArIDEwXG4gICAgfCAnYScuLidmJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnYScgKyAxMFxuICAgIHwgXyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkRpZ2VzdC5mcm9tX2hleFwiKVxuICBpblxuICBsZXQgYnl0ZSBpID0gZGlnaXQgcy5baV0gbHNsIDQgKyBkaWdpdCBzLltpKzFdIGluXG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgZm9yIGkgPSAwIHRvIDE1IGRvXG4gICAgQnl0ZXMuc2V0IHJlc3VsdCBpIChDaGFyLmNociAoYnl0ZSAoMiAqIGkpKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzdWx0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEhhc2ggdGFibGVzICopXG5cbigqIFdlIGRvIGR5bmFtaWMgaGFzaGluZywgYW5kIHJlc2l6ZSB0aGUgdGFibGUgYW5kIHJlaGFzaCB0aGUgZWxlbWVudHNcbiAgIHdoZW4gYnVja2V0cyBiZWNvbWUgdG9vIGxvbmcuICopXG5cbnR5cGUgKCdhLCAnYikgdCA9XG4gIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICBtdXRhYmxlIGRhdGE6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgIHNlZWQ6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgIG11dGFibGUgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICgqIGluaXRpYWwgYXJyYXkgc2l6ZSAqKVxuICB9XG5cbmFuZCAoJ2EsICdiKSBidWNrZXRsaXN0ID1cbiAgICBFbXB0eVxuICB8IENvbnMgb2YgeyBtdXRhYmxlIGtleTogJ2E7XG4gICAgICAgICAgICAgIG11dGFibGUgZGF0YTogJ2I7XG4gICAgICAgICAgICAgIG11dGFibGUgbmV4dDogKCdhLCAnYikgYnVja2V0bGlzdCB9XG5cbigqIFRoZSBzaWduIG9mIGluaXRpYWxfc2l6ZSBlbmNvZGVzIHRoZSBmYWN0IHRoYXQgYSB0cmF2ZXJzYWwgaXNcbiAgIG9uZ29pbmcgb3Igbm90LlxuXG4gICBUaGlzIGRpc2FibGVzIHRoZSBlZmZpY2llbnQgaW4gcGxhY2UgaW1wbGVtZW50YXRpb24gb2YgcmVzaXppbmcuXG4qKVxuXG5sZXQgb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICB8fCBoLmluaXRpYWxfc2l6ZSA8IDBcblxubGV0IGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIGguaW5pdGlhbF9zaXplIDwtIC0gaC5pbml0aWFsX3NpemVcblxuKCogVG8gcGljayByYW5kb20gc2VlZHMgaWYgcmVxdWVzdGVkICopXG5cbmxldCByYW5kb21pemVkX2RlZmF1bHQgPVxuICBsZXQgcGFyYW1zID1cbiAgICB0cnkgU3lzLmdldGVudiBcIk9DQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT4gXCJcIiBpblxuICBTdHJpbmcuY29udGFpbnMgcGFyYW1zICdSJ1xuXG5sZXQgcmFuZG9taXplZCA9IHJlZiByYW5kb21pemVkX2RlZmF1bHRcblxubGV0IHJhbmRvbWl6ZSAoKSA9IHJhbmRvbWl6ZWQgOj0gdHJ1ZVxubGV0IGlzX3JhbmRvbWl6ZWQgKCkgPSAhcmFuZG9taXplZFxuXG5sZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCgpKVxuXG4oKiBGdW5jdGlvbnMgd2hpY2ggYXBwZWFyIGJlZm9yZSB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgbXVzdCBlaXRoZXIgYmVcbiAgIGluZGVwZW5kZW50IG9mIHRoZSBoYXNoIGZ1bmN0aW9uIG9yIHRha2UgaXQgYXMgYSBwYXJhbWV0ZXIgKHNlZSAjMjIwMiBhbmRcbiAgIGNvZGUgYmVsb3cgdGhlIGZ1bmN0b3IgZGVmaW5pdGlvbnMuICopXG5cbigqIENyZWF0aW5nIGEgZnJlc2gsIGVtcHR5IHRhYmxlICopXG5cbmxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICBpZiB4ID49IG4gdGhlbiB4XG4gIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG5sZXQgY3JlYXRlID8ocmFuZG9tID0gIXJhbmRvbWl6ZWQpIGluaXRpYWxfc2l6ZSA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgbGV0IHNlZWQgPSBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSBlbHNlIDAgaW5cbiAgeyBpbml0aWFsX3NpemUgPSBzOyBzaXplID0gMDsgc2VlZCA9IHNlZWQ7IGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHkgfVxuXG5sZXQgY2xlYXIgaCA9XG4gIGlmIGguc2l6ZSA+IDAgdGhlbiBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIEFycmF5LmZpbGwgaC5kYXRhIDAgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIEVtcHR5XG4gIGVuZFxuXG5sZXQgcmVzZXQgaCA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICAgIHx8IGxlbiA9IGFicyBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgY2xlYXIgaFxuICBlbHNlIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgaC5kYXRhIDwtIEFycmF5Lm1ha2UgKGFicyBoLmluaXRpYWxfc2l6ZSkgRW1wdHlcbiAgZW5kXG5cbmxldCBjb3B5X2J1Y2tldGxpc3QgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgbGV0IHJlYyBsb29wIHByZWMgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IENvbnMgcHJlYyAtPiAgcHJlYy5uZXh0IDwtIHJcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGxvb3AgciBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICBsb29wIHIgbmV4dDtcbiAgICAgIHJcblxubGV0IGNvcHkgaCA9IHsgaCB3aXRoIGRhdGEgPSBBcnJheS5tYXAgY29weV9idWNrZXRsaXN0IGguZGF0YSB9XG5cbmxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG5sZXQgaW5zZXJ0X2FsbF9idWNrZXRzIGluZGV4ZnVuIGlucGxhY2Ugb2RhdGEgbmRhdGEgPVxuICBsZXQgbnNpemUgPSBBcnJheS5sZW5ndGggbmRhdGEgaW5cbiAgbGV0IG5kYXRhX3RhaWwgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBhcyBjZWxsIC0+XG4gICAgICAgIGxldCBjZWxsID1cbiAgICAgICAgICBpZiBpbnBsYWNlIHRoZW4gY2VsbFxuICAgICAgICAgIGVsc2UgQ29ucyB7a2V5OyBkYXRhOyBuZXh0ID0gRW1wdHl9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBuaWR4ID0gaW5kZXhmdW4ga2V5IGluXG4gICAgICAgIGJlZ2luIG1hdGNoIG5kYXRhX3RhaWwuKG5pZHgpIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBuZGF0YS4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIGNlbGw7XG4gICAgICAgIGVuZDtcbiAgICAgICAgbmRhdGFfdGFpbC4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgaW5zZXJ0X2J1Y2tldCBuZXh0XG4gIGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggb2RhdGEgLSAxIGRvXG4gICAgaW5zZXJ0X2J1Y2tldCBvZGF0YS4oaSlcbiAgZG9uZTtcbiAgaWYgaW5wbGFjZSB0aGVuXG4gICAgZm9yIGkgPSAwIHRvIG5zaXplIC0gMSBkb1xuICAgICAgbWF0Y2ggbmRhdGFfdGFpbC4oaSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIEVtcHR5XG4gICAgZG9uZVxuXG5sZXQgcmVzaXplIGluZGV4ZnVuIGggPVxuICBsZXQgb2RhdGEgPSBoLmRhdGEgaW5cbiAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBsZXQgbmRhdGEgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gICAgbGV0IGlucGxhY2UgPSBub3QgKG9uZ29pbmdfdHJhdmVyc2FsIGgpIGluXG4gICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAgICAoKiBzbyB0aGF0IGluZGV4ZnVuIHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICBpbnNlcnRfYWxsX2J1Y2tldHMgKGluZGV4ZnVuIGgpIGlucGxhY2Ugb2RhdGEgbmRhdGFcbiAgZW5kXG5cbmxldCBpdGVyIGYgaCA9XG4gIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+XG4gICAgICAgICgpXG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZiBrZXkgZGF0YTsgZG9fYnVja2V0IG5leHQgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZG9fYnVja2V0IGQuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gRW1wdHlcbiAgICAgIGVuZFxuICB8IChDb25zICh7a2V5OyBkYXRhOyBuZXh0fSBhcyBjKSkgYXMgc2xvdCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZiBrZXkgZGF0YSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgbmV4dFxuICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gc2xvdFxuICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBzbG90XG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGMuZGF0YSA8LSBkYXRhO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgc2xvdCBuZXh0XG4gICAgICBlbmRcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSBmIGggPVxuICBsZXQgZCA9IGguZGF0YSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBFbXB0eSBoLmRhdGEuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGhcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCBmb2xkIGYgaCBpbml0ID1cbiAgbGV0IHJlYyBkb19idWNrZXQgYiBhY2N1ID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICAgIEVtcHR5IC0+XG4gICAgICAgIGFjY3VcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBkb19idWNrZXQgbmV4dCAoZiBrZXkgZGF0YSBhY2N1KSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBsZXQgYWNjdSA9IHJlZiBpbml0IGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgYWNjdSA6PSBkb19idWNrZXQgZC4oaSkgIWFjY3VcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICAhYWNjdVxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxudHlwZSBzdGF0aXN0aWNzID0ge1xuICBudW1fYmluZGluZ3M6IGludDtcbiAgbnVtX2J1Y2tldHM6IGludDtcbiAgbWF4X2J1Y2tldF9sZW5ndGg6IGludDtcbiAgYnVja2V0X2hpc3RvZ3JhbTogaW50IGFycmF5XG59XG5cbmxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgQ29uc3tuZXh0fSAtPiBidWNrZXRfbGVuZ3RoIChhY2N1ICsgMSkgbmV4dFxuXG5sZXQgc3RhdHMgaCA9XG4gIGxldCBtYmwgPVxuICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGggMCBiKSkgMCBoLmRhdGEgaW5cbiAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICBBcnJheS5pdGVyXG4gICAgKGZ1biBiIC0+XG4gICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICBoLmRhdGE7XG4gIHsgbnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHRibCA9XG4gICgqIGNhcHR1cmUgY3VycmVudCBhcnJheSwgc28gdGhhdCBldmVuIGlmIHRoZSB0YWJsZSBpcyByZXNpemVkIHdlXG4gICAgIGtlZXAgaXRlcmF0aW5nIG9uIHRoZSBzYW1lIGFycmF5ICopXG4gIGxldCB0YmxfZGF0YSA9IHRibC5kYXRhIGluXG4gICgqIHN0YXRlOiBpbmRleCAqIG5leHQgYnVja2V0IHRvIHRyYXZlcnNlICopXG4gIGxldCByZWMgYXV4IGkgYnVjayAoKSA9IG1hdGNoIGJ1Y2sgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0YmxfZGF0YVxuICAgICAgICB0aGVuIFNlcS5OaWxcbiAgICAgICAgZWxzZSBhdXgoaSsxKSB0YmxfZGF0YS4oaSkgKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgU2VxLkNvbnMgKChrZXksIGRhdGEpLCBhdXggaSBuZXh0KVxuICBpblxuICBhdXggMCBFbXB0eVxuXG5sZXQgdG9fc2VxX2tleXMgbSA9IFNlcS5tYXAgZnN0ICh0b19zZXEgbSlcblxubGV0IHRvX3NlcV92YWx1ZXMgbSA9IFNlcS5tYXAgc25kICh0b19zZXEgbSlcblxuKCogRnVuY3RvcmlhbCBpbnRlcmZhY2UgKilcblxubW9kdWxlIHR5cGUgSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaGFzaDogdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGhhc2g6IGludCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGU6IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHk6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQ6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQ6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGw6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGg6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlIDogP3JhbmRvbTpib29sIC0+IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZCA6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2VTZWVkZWQoSDogU2VlZGVkSGFzaGVkVHlwZSk6IChTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgdHlwZSBrZXkgPSBILnRcbiAgICB0eXBlICdhIGhhc2h0YmwgPSAoa2V5LCAnYSkgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIGhhc2h0YmxcbiAgICBsZXQgY3JlYXRlID0gY3JlYXRlXG4gICAgbGV0IGNsZWFyID0gY2xlYXJcbiAgICBsZXQgcmVzZXQgPSByZXNldFxuICAgIGxldCBjb3B5ID0gY29weVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGtleSA9XG4gICAgICAoSC5oYXNoIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuXG4gICAgbGV0IGFkZCBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbiAgICBsZXQgZmluZF9vcHQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG4gICAgbGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgICAgIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIFtdXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE9ZDsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBkIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgICAgIGVuZFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICAgICAgSC5lcXVhbCBrIGtleSB8fCBtZW1faW5fYnVja2V0IG5leHQgaW5cbiAgICAgIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG4gICAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSA9IGZpbHRlcl9tYXBfaW5wbGFjZVxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgc3RhdHMgPSBzdGF0c1xuICAgIGxldCB0b19zZXEgPSB0b19zZXFcbiAgICBsZXQgdG9fc2VxX2tleXMgPSB0b19zZXFfa2V5c1xuICAgIGxldCB0b19zZXFfdmFsdWVzID0gdG9fc2VxX3ZhbHVlc1xuICBlbmRcblxubW9kdWxlIE1ha2UoSDogSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4oKiBQb2x5bW9ycGhpYyBoYXNoIGZ1bmN0aW9uLWJhc2VkIHRhYmxlcyAqKVxuKCogQ29kZSBpbmNsdWRlZCBiZWxvdyB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgdG8gZ3VhcmQgYWdhaW5zdCBhY2NpZGVudGFsXG4gICB1c2UgLSBzZWUgIzIyMDIgKilcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5sZXQgaGFzaF9wYXJhbSBuMSBuMiB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gbjEgbjIgMCB4XG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxuXG5sZXQga2V5X2luZGV4IGgga2V5ID1cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDRcbiAgdGhlbiAoc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuICBlbHNlIGludmFsaWRfYXJnIFwiSGFzaHRibDogdW5zdXBwb3J0ZWQgaGFzaCB0YWJsZSBmb3JtYXRcIlxuXG5sZXQgYWRkIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbmxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICAoKVxuICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgIGVuZFxuICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbmxldCByZW1vdmUgaCBrZXkgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG5sZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG5sZXQgZmluZCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxubGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgTm9uZVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG5sZXQgZmluZF9vcHQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG5sZXQgZmluZF9hbGwgaCBrZXkgPVxuICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgW11cbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gZGF0YSA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbmxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbmxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gIGVuZFxuXG5sZXQgbWVtIGgga2V5ID1cbiAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgY29tcGFyZSBrIGtleSA9IDAgfHwgbWVtX2luX2J1Y2tldCBuZXh0IGluXG4gIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbmxldCBhZGRfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG5sZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gIHJlcGxhY2Vfc2VxIHRibCBpO1xuICB0YmxcblxubGV0IHJlYnVpbGQgPyhyYW5kb20gPSAhcmFuZG9taXplZCkgaCA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiAoQXJyYXkubGVuZ3RoIGguZGF0YSkgaW5cbiAgbGV0IHNlZWQgPVxuICAgIGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpXG4gICAgZWxzZSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguc2VlZFxuICAgIGVsc2UgMCBpblxuICBsZXQgaCcgPSB7XG4gICAgc2l6ZSA9IGguc2l6ZTtcbiAgICBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5O1xuICAgIHNlZWQgPSBzZWVkO1xuICAgIGluaXRpYWxfc2l6ZSA9IGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5pbml0aWFsX3NpemUgZWxzZSBzXG4gIH0gaW5cbiAgaW5zZXJ0X2FsbF9idWNrZXRzIChrZXlfaW5kZXggaCcpIGZhbHNlIGguZGF0YSBoJy5kYXRhO1xuICBoJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogV2VhayBhcnJheSBvcGVyYXRpb25zICopXG5cbnR5cGUgISdhIHRcblxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+ICdhIHQgPSBcImNhbWxfd2Vha19jcmVhdGVcIlxuXG5sZXQgY3JlYXRlIGwgPVxuICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IE9iai5FcGhlbWVyb24ubWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgaW52YWxpZF9hcmcoXCJXZWFrLmNyZWF0ZVwiKTtcbiAgY3JlYXRlIGxcblxuKCoqIG51bWJlciBvZiBhZGRpdGlvbmFsIHZhbHVlcyBpbiBhIHdlYWsgcG9pbnRlciAqKVxubGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMlxuXG5sZXQgbGVuZ3RoIHggPSBPYmouc2l6ZShPYmoucmVwciB4KSAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbmxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgaW52YWxpZF9hcmcobXNnKVxuXG5leHRlcm5hbCBzZXQnIDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuZXh0ZXJuYWwgdW5zZXQgOiAnYSB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfa2V5XCJcbmxldCBzZXQgZSBvIHggPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLnNldFwiO1xuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHVuc2V0IGUgb1xuICB8IFNvbWUgeCAtPiBzZXQnIGUgbyB4XG5cbmV4dGVybmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldFwiXG5sZXQgZ2V0IGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuZ2V0XCI7XG4gIGdldCBlIG9cblxuZXh0ZXJuYWwgZ2V0X2NvcHkgOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb24gPSBcImNhbWxfd2Vha19nZXRfY29weVwiXG5sZXQgZ2V0X2NvcHkgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRfY29weVwiO1xuICBnZXRfY29weSBlIG9cblxuZXh0ZXJuYWwgY2hlY2sgOiAnYSB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX3dlYWtfY2hlY2tcIlxubGV0IGNoZWNrIGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuY2hlY2tcIjtcbiAgY2hlY2sgZSBvXG5cbmV4dGVybmFsIGJsaXQgOiAnYSB0IC0+IGludCAtPiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF93ZWFrX2JsaXRcIlxuXG4oKiBibGl0OiBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuICopXG5sZXQgYmxpdCBlMSBvMSBlMiBvMiBsID1cbiAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICB8fCBvMiA8IDAgfHwgbzIgPiBsZW5ndGggZTIgLSBsXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXZWFrLmJsaXRcIlxuICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXQgZTEgbzEgZTIgbzIgbFxuXG5sZXQgZmlsbCBhciBvZnMgbGVuIHggPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGFyIC0gbGVuXG4gIHRoZW4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJXZWFrLmZpbGxcIilcbiAgZWxzZSBiZWdpblxuICAgIGZvciBpID0gb2ZzIHRvIChvZnMgKyBsZW4gLSAxKSBkb1xuICAgICAgc2V0IGFyIGkgeFxuICAgIGRvbmVcbiAgZW5kXG5cblxuKCoqIFdlYWsgaGFzaCB0YWJsZXMgKilcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIGRhdGFcbiAgdHlwZSB0XG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gdFxuICB2YWwgY2xlYXIgOiB0IC0+IHVuaXRcbiAgdmFsIG1lcmdlIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGFkZCA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiB0IC0+IGRhdGEgLT4gdW5pdFxuICB2YWwgZmluZCA6IHQgLT4gZGF0YSAtPiBkYXRhXG4gIHZhbCBmaW5kX29wdCA6IHQgLT4gZGF0YSAtPiBkYXRhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiB0IC0+IGRhdGEgLT4gZGF0YSBsaXN0XG4gIHZhbCBtZW0gOiB0IC0+IGRhdGEgLT4gYm9vbFxuICB2YWwgaXRlciA6IChkYXRhIC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChkYXRhIC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gIHZhbCBjb3VudCA6IHQgLT4gaW50XG4gIHZhbCBzdGF0cyA6IHQgLT4gaW50ICogaW50ICogaW50ICogaW50ICogaW50ICogaW50XG5lbmRcblxubW9kdWxlIE1ha2UgKEggOiBIYXNodGJsLkhhc2hlZFR5cGUpIDogKFMgd2l0aCB0eXBlIGRhdGEgPSBILnQpID0gc3RydWN0XG5cbiAgdHlwZSAnYSB3ZWFrX3QgPSAnYSB0XG4gIGxldCB3ZWFrX2NyZWF0ZSA9IGNyZWF0ZVxuICBsZXQgZW1wdHlidWNrZXQgPSB3ZWFrX2NyZWF0ZSAwXG5cbiAgdHlwZSBkYXRhID0gSC50XG5cbiAgdHlwZSB0ID0ge1xuICAgIG11dGFibGUgdGFibGUgOiBkYXRhIHdlYWtfdCBhcnJheTtcbiAgICBtdXRhYmxlIGhhc2hlcyA6IGludCBhcnJheSBhcnJheTtcbiAgICBtdXRhYmxlIGxpbWl0IDogaW50OyAgICAgICAgICAgICAgICgqIGJ1Y2tldCBzaXplIGxpbWl0ICopXG4gICAgbXV0YWJsZSBvdmVyc2l6ZSA6IGludDsgICAgICAgICAgICAoKiBudW1iZXIgb2Ygb3ZlcnNpemUgYnVja2V0cyAqKVxuICAgIG11dGFibGUgcm92ZXIgOiBpbnQ7ICAgICAgICAgICAgICAgKCogZm9yIGludGVybmFsIGJvb2trZWVwaW5nICopXG4gIH1cblxuICBsZXQgZ2V0X2luZGV4IHQgaCA9IChoIGxhbmQgbWF4X2ludCkgbW9kIChBcnJheS5sZW5ndGggdC50YWJsZSlcblxuICBsZXQgbGltaXQgPSA3XG4gIGxldCBvdmVyX2xpbWl0ID0gMlxuXG4gIGxldCBjcmVhdGUgc3ogPVxuICAgIGxldCBzeiA9IGlmIHN6IDwgNyB0aGVuIDcgZWxzZSBzeiBpblxuICAgIGxldCBzeiA9IGlmIHN6ID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBTeXMubWF4X2FycmF5X2xlbmd0aCBlbHNlIHN6IGluXG4gICAge1xuICAgICAgdGFibGUgPSBBcnJheS5tYWtlIHN6IGVtcHR5YnVja2V0O1xuICAgICAgaGFzaGVzID0gQXJyYXkubWFrZSBzeiBbfCB8XTtcbiAgICAgIGxpbWl0ID0gbGltaXQ7XG4gICAgICBvdmVyc2l6ZSA9IDA7XG4gICAgICByb3ZlciA9IDA7XG4gICAgfVxuXG4gIGxldCBjbGVhciB0ID1cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxIGRvXG4gICAgICB0LnRhYmxlLihpKSA8LSBlbXB0eWJ1Y2tldDtcbiAgICAgIHQuaGFzaGVzLihpKSA8LSBbfCB8XTtcbiAgICBkb25lO1xuICAgIHQubGltaXQgPC0gbGltaXQ7XG4gICAgdC5vdmVyc2l6ZSA8LSAwXG5cblxuICBsZXQgZm9sZCBmIHQgaW5pdCA9XG4gICAgbGV0IHJlYyBmb2xkX2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gYWNjdSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGZvbGRfYnVja2V0IChpKzEpIGIgKGYgdiBhY2N1KVxuICAgICAgfCBOb25lIC0+IGZvbGRfYnVja2V0IChpKzEpIGIgYWNjdVxuICAgIGluXG4gICAgQXJyYXkuZm9sZF9yaWdodCAoZm9sZF9idWNrZXQgMCkgdC50YWJsZSBpbml0XG5cblxuICBsZXQgaXRlciBmIHQgPVxuICAgIGxldCByZWMgaXRlcl9idWNrZXQgaSBiID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiAoKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGYgdjsgaXRlcl9idWNrZXQgKGkrMSkgYlxuICAgICAgfCBOb25lIC0+IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXIgKGl0ZXJfYnVja2V0IDApIHQudGFibGVcblxuXG4gIGxldCBpdGVyX3dlYWsgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgaiBiID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiAoKSBlbHNlXG4gICAgICBtYXRjaCBjaGVjayBiIGkgd2l0aFxuICAgICAgfCB0cnVlIC0+IGYgYiB0Lmhhc2hlcy4oaikgaTsgaXRlcl9idWNrZXQgKGkrMSkgaiBiXG4gICAgICB8IGZhbHNlIC0+IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgIGluXG4gICAgQXJyYXkuaXRlcmkgKGl0ZXJfYnVja2V0IDApIHQudGFibGVcblxuXG4gIGxldCByZWMgY291bnRfYnVja2V0IGkgYiBhY2N1ID1cbiAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gYWNjdSBlbHNlXG4gICAgY291bnRfYnVja2V0IChpKzEpIGIgKGFjY3UgKyAoaWYgY2hlY2sgYiBpIHRoZW4gMSBlbHNlIDApKVxuXG5cbiAgbGV0IGNvdW50IHQgPVxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGNvdW50X2J1Y2tldCAwKSB0LnRhYmxlIDBcblxuXG4gIGxldCBuZXh0X3N6IG4gPSBJbnQubWluICgzICogbiAvIDIgKyAzKSBTeXMubWF4X2FycmF5X2xlbmd0aFxuICBsZXQgcHJldl9zeiBuID0gKChuIC0gMykgKiAyICsgMikgLyAzXG5cbiAgbGV0IHRlc3Rfc2hyaW5rX2J1Y2tldCB0ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4odC5yb3ZlcikgaW5cbiAgICBsZXQgaGJ1Y2tldCA9IHQuaGFzaGVzLih0LnJvdmVyKSBpblxuICAgIGxldCBsZW4gPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHByZXZfbGVuID0gcHJldl9zeiBsZW4gaW5cbiAgICBsZXQgbGl2ZSA9IGNvdW50X2J1Y2tldCAwIGJ1Y2tldCAwIGluXG4gICAgaWYgbGl2ZSA8PSBwcmV2X2xlbiB0aGVuIGJlZ2luXG4gICAgICBsZXQgcmVjIGxvb3AgaSBqID1cbiAgICAgICAgaWYgaiA+PSBwcmV2X2xlbiB0aGVuIGJlZ2luXG4gICAgICAgICAgaWYgY2hlY2sgYnVja2V0IGkgdGhlbiBsb29wIChpICsgMSkgalxuICAgICAgICAgIGVsc2UgaWYgY2hlY2sgYnVja2V0IGogdGhlbiBiZWdpblxuICAgICAgICAgICAgYmxpdCBidWNrZXQgaiBidWNrZXQgaSAxO1xuICAgICAgICAgICAgaGJ1Y2tldC4oaSkgPC0gaGJ1Y2tldC4oaik7XG4gICAgICAgICAgICBsb29wIChpICsgMSkgKGogLSAxKTtcbiAgICAgICAgICBlbmQgZWxzZSBsb29wIGkgKGogLSAxKTtcbiAgICAgICAgZW5kO1xuICAgICAgaW5cbiAgICAgIGxvb3AgMCAobGVuZ3RoIGJ1Y2tldCAtIDEpO1xuICAgICAgaWYgcHJldl9sZW4gPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gZW1wdHlidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLih0LnJvdmVyKSA8LSBbfCB8XTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBwcmV2X2xlbiBpblxuICAgICAgICBibGl0IGJ1Y2tldCAwIG5ld2J1Y2tldCAwIHByZXZfbGVuO1xuICAgICAgICB0LnRhYmxlLih0LnJvdmVyKSA8LSBuZXdidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLih0LnJvdmVyKSA8LSBBcnJheS5zdWIgaGJ1Y2tldCAwIHByZXZfbGVuXG4gICAgICBlbmQ7XG4gICAgICBpZiBsZW4gPiB0LmxpbWl0ICYmIHByZXZfbGVuIDw9IHQubGltaXQgdGhlbiB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgLSAxO1xuICAgIGVuZDtcbiAgICB0LnJvdmVyIDwtICh0LnJvdmVyICsgMSkgbW9kIChBcnJheS5sZW5ndGggdC50YWJsZSlcblxuXG4gIGxldCByZWMgcmVzaXplIHQgPVxuICAgIGxldCBvbGRsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBuZXdsZW4gPSBuZXh0X3N6IG9sZGxlbiBpblxuICAgIGlmIG5ld2xlbiA+IG9sZGxlbiB0aGVuIGJlZ2luXG4gICAgICBsZXQgbmV3dCA9IGNyZWF0ZSBuZXdsZW4gaW5cbiAgICAgIGxldCBhZGRfd2VhayBvYiBvaCBvaSA9XG4gICAgICAgIGxldCBzZXR0ZXIgbmIgbmkgXyA9IGJsaXQgb2Igb2kgbmIgbmkgMSBpblxuICAgICAgICBsZXQgaCA9IG9oLihvaSkgaW5cbiAgICAgICAgYWRkX2F1eCBuZXd0IHNldHRlciBOb25lIGggKGdldF9pbmRleCBuZXd0IGgpO1xuICAgICAgaW5cbiAgICAgIGl0ZXJfd2VhayBhZGRfd2VhayB0O1xuICAgICAgdC50YWJsZSA8LSBuZXd0LnRhYmxlO1xuICAgICAgdC5oYXNoZXMgPC0gbmV3dC5oYXNoZXM7XG4gICAgICB0LmxpbWl0IDwtIG5ld3QubGltaXQ7XG4gICAgICB0Lm92ZXJzaXplIDwtIG5ld3Qub3ZlcnNpemU7XG4gICAgICB0LnJvdmVyIDwtIHQucm92ZXIgbW9kIEFycmF5Lmxlbmd0aCBuZXd0LnRhYmxlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICB0LmxpbWl0IDwtIG1heF9pbnQ7ICAgICAgICAgICAgICgqIG1heGltdW0gc2l6ZSBhbHJlYWR5IHJlYWNoZWQgKilcbiAgICAgIHQub3ZlcnNpemUgPC0gMDtcbiAgICBlbmRcblxuICBhbmQgYWRkX2F1eCB0IHNldHRlciBkIGggaW5kZXggPVxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5ld3N6ID1cbiAgICAgICAgICBJbnQubWluICgzICogc3ogLyAyICsgMykgKFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC0gYWRkaXRpb25hbF92YWx1ZXMpXG4gICAgICAgIGluXG4gICAgICAgIGlmIG5ld3N6IDw9IHN6IHRoZW4gZmFpbHdpdGggXCJXZWFrLk1ha2U6IGhhc2ggYnVja2V0IGNhbm5vdCBncm93IG1vcmVcIjtcbiAgICAgICAgbGV0IG5ld2J1Y2tldCA9IHdlYWtfY3JlYXRlIG5ld3N6IGluXG4gICAgICAgIGxldCBuZXdoYXNoZXMgPSBBcnJheS5tYWtlIG5ld3N6IDAgaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBzejtcbiAgICAgICAgQXJyYXkuYmxpdCBoYXNoZXMgMCBuZXdoYXNoZXMgMCBzejtcbiAgICAgICAgc2V0dGVyIG5ld2J1Y2tldCBzeiBkO1xuICAgICAgICBuZXdoYXNoZXMuKHN6KSA8LSBoO1xuICAgICAgICB0LnRhYmxlLihpbmRleCkgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4oaW5kZXgpIDwtIG5ld2hhc2hlcztcbiAgICAgICAgaWYgc3ogPD0gdC5saW1pdCAmJiBuZXdzeiA+IHQubGltaXQgdGhlbiBiZWdpblxuICAgICAgICAgIHQub3ZlcnNpemUgPC0gdC5vdmVyc2l6ZSArIDE7XG4gICAgICAgICAgZm9yIF9pID0gMCB0byBvdmVyX2xpbWl0IGRvIHRlc3Rfc2hyaW5rX2J1Y2tldCB0IGRvbmU7XG4gICAgICAgIGVuZDtcbiAgICAgICAgaWYgdC5vdmVyc2l6ZSA+IEFycmF5Lmxlbmd0aCB0LnRhYmxlIC8gb3Zlcl9saW1pdCB0aGVuIHJlc2l6ZSB0O1xuICAgICAgZW5kIGVsc2UgaWYgY2hlY2sgYnVja2V0IGkgdGhlbiBiZWdpblxuICAgICAgICBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldHRlciBidWNrZXQgaSBkO1xuICAgICAgICBoYXNoZXMuKGkpIDwtIGg7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBhZGQgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgYWRkX2F1eCB0IHNldCAoU29tZSBkKSBoIChnZXRfaW5kZXggdCBoKVxuXG5cbiAgbGV0IGZpbmRfb3IgdCBkIGlmbm90Zm91bmQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBpZm5vdGZvdW5kIGggaW5kZXhcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IG1lcmdlIHQgZCA9XG4gICAgZmluZF9vciB0IGQgKGZ1biBoIGluZGV4IC0+IGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCBpbmRleDsgZClcblxuXG4gIGxldCBmaW5kIHQgZCA9IGZpbmRfb3IgdCBkIChmdW4gX2ggX2luZGV4IC0+IHJhaXNlIE5vdF9mb3VuZClcblxuICBsZXQgZmluZF9vcHQgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gTm9uZVxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgXyBhcyB2IC0+IHZcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBmaW5kX3NoYWRvdyB0IGQgaWZmb3VuZCBpZm5vdGZvdW5kID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gaWZub3Rmb3VuZFxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZCAtPiBpZmZvdW5kIGJ1Y2tldCBpXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgcmVtb3ZlIHQgZCA9IGZpbmRfc2hhZG93IHQgZCAoZnVuIHcgaSAtPiBzZXQgdyBpIE5vbmUpICgpXG5cblxuICBsZXQgbWVtIHQgZCA9IGZpbmRfc2hhZG93IHQgZCAoZnVuIF93IF9pIC0+IHRydWUpIGZhbHNlXG5cblxuICBsZXQgZmluZF9hbGwgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSBhY2N1ID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBhY2N1XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IGxvb3AgKGkgKyAxKSAodiA6OiBhY2N1KVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpIGFjY3VcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSkgYWNjdVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpIGFjY3VcbiAgICBpblxuICAgIGxvb3AgMCBbXVxuXG5cbiAgbGV0IHN0YXRzIHQgPVxuICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBsZW5zID0gQXJyYXkubWFwIGxlbmd0aCB0LnRhYmxlIGluXG4gICAgQXJyYXkuc29ydCBjb21wYXJlIGxlbnM7XG4gICAgbGV0IHRvdGxlbiA9IEFycmF5LmZvbGRfbGVmdCAoICsgKSAwIGxlbnMgaW5cbiAgICAobGVuLCBjb3VudCB0LCB0b3RsZW4sIGxlbnMuKDApLCBsZW5zLihsZW4vMiksIGxlbnMuKGxlbi0xKSlcblxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQSBwcmV0dHktcHJpbnRpbmcgZmFjaWxpdHkgYW5kIGRlZmluaXRpb24gb2YgZm9ybWF0dGVycyBmb3IgJ3BhcmFsbGVsJ1xuICAgKGkuZS4gdW5yZWxhdGVkIG9yIGluZGVwZW5kZW50KSBwcmV0dHktcHJpbnRpbmcgb24gbXVsdGlwbGUgb3V0IGNoYW5uZWxzLiAqKVxuXG4oKlxuICAgVGhlIHByZXR0eS1wcmludGluZyBlbmdpbmUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzLlxuKilcblxubGV0IGlkIHggPSB4XG5cbigqIEEgZGV2b3RlZCB0eXBlIGZvciBzaXplcyB0byBhdm9pZCBjb25mdXNpb25cbiAgIGJldHdlZW4gc2l6ZXMgYW5kIG1lcmUgaW50ZWdlcnMuICopXG5tb2R1bGUgU2l6ZSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgdW5rbm93biA6IHRcbiAgdmFsIGlzX2tub3duIDogdCAtPiBib29sXG5lbmQgID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCB0b19pbnQgPSBpZFxuICBsZXQgb2ZfaW50ID0gaWRcbiAgbGV0IHplcm8gPSAwXG4gIGxldCB1bmtub3duID0gLTFcbiAgbGV0IGlzX2tub3duIG4gPSBuID49IDBcbmVuZFxuXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyBib3hlcyBkZWZpbml0aW9uOlxuICAgYSBwcmV0dHktcHJpbnRpbmcgYm94IGlzIGVpdGhlclxuICAgLSBoYm94OiBob3Jpem9udGFsIGJveCAobm8gbGluZSBzcGxpdHRpbmcpXG4gICAtIHZib3g6IHZlcnRpY2FsIGJveCAoZXZlcnkgYnJlYWsgaGludCBzcGxpdHMgdGhlIGxpbmUpXG4gICAtIGh2Ym94OiBob3Jpem9udGFsL3ZlcnRpY2FsIGJveFxuICAgICAodGhlIGJveCBiZWhhdmVzIGFzIGFuIGhvcml6b250YWwgYm94IGlmIGl0IGZpdHMgb25cbiAgICAgIHRoZSBjdXJyZW50IGxpbmUsIG90aGVyd2lzZSB0aGUgYm94IGJlaGF2ZXMgYXMgYSB2ZXJ0aWNhbCBib3gpXG4gICAtIGhvdmJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveFxuICAgICAodGhlIGJveCBpcyBjb21wYWN0aW5nIG1hdGVyaWFsLCBwcmludGluZyBhcyBtdWNoIG1hdGVyaWFsIGFzIHBvc3NpYmxlXG4gICAgICBvbiBldmVyeSBsaW5lcylcbiAgIC0gYm94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94IHdpdGggZW5oYW5jZWQgYm94IHN0cnVjdHVyZVxuICAgICAodGhlIGJveCBiZWhhdmVzIGFzIGFuIGhvcml6b250YWwgb3IgdmVydGljYWwgYm94IGJ1dCBicmVhayBoaW50cyBzcGxpdFxuICAgICAgdGhlIGxpbmUgaWYgc3BsaXR0aW5nIHdvdWxkIG1vdmUgdG8gdGhlIGxlZnQpXG4qKVxudHlwZSBib3hfdHlwZSA9IENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5ibG9ja190eXBlID1cbiAgfCBQcF9oYm94IHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IHwgUHBfZml0c1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgdG9rZW5zIGRlZmluaXRpb246XG4gICBhcmUgZWl0aGVyIHRleHQgdG8gcHJpbnQgb3IgcHJldHR5IHByaW50aW5nXG4gICBlbGVtZW50cyB0aGF0IGRyaXZlIGluZGVudGF0aW9uIGFuZCBsaW5lIHNwbGl0dGluZy4gKilcbnR5cGUgcHBfdG9rZW4gPVxuICB8IFBwX3RleHQgb2Ygc3RyaW5nICAgICAgICAgICgqIG5vcm1hbCB0ZXh0ICopXG4gIHwgUHBfYnJlYWsgb2YgeyAgICAgICAgICAgICAgKCogY29tcGxldGUgYnJlYWsgKilcbiAgICAgIGZpdHM6IHN0cmluZyAqIGludCAqIHN0cmluZzsgICAoKiBsaW5lIGlzIG5vdCBzcGxpdCAqKVxuICAgICAgYnJlYWtzOiBzdHJpbmcgKiBpbnQgKiBzdHJpbmc7ICgqIGxpbmUgaXMgc3BsaXQgKilcbiAgICB9XG4gIHwgUHBfdGJyZWFrIG9mIGludCAqIGludCAgICAgKCogZ28gdG8gbmV4dCB0YWJ1bGF0aW9uICopXG4gIHwgUHBfc3RhYiAgICAgICAgICAgICAgICAgICAgKCogc2V0IGEgdGFidWxhdGlvbiAqKVxuICB8IFBwX2JlZ2luIG9mIGludCAqIGJveF90eXBlICgqIGJlZ2lubmluZyBvZiBhIGJveCAqKVxuICB8IFBwX2VuZCAgICAgICAgICAgICAgICAgICAgICgqIGVuZCBvZiBhIGJveCAqKVxuICB8IFBwX3RiZWdpbiBvZiB0Ym94ICAgICAgICAgICgqIGJlZ2lubmluZyBvZiBhIHRhYnVsYXRpb24gYm94ICopXG4gIHwgUHBfdGVuZCAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF9uZXdsaW5lICAgICAgICAgICAgICAgICAoKiB0byBmb3JjZSBhIG5ld2xpbmUgaW5zaWRlIGEgYm94ICopXG4gIHwgUHBfaWZfbmV3bGluZSAgICAgICAgICAgICAgKCogdG8gZG8gc29tZXRoaW5nIG9ubHkgaWYgdGhpcyB2ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSBoYXMgYmVlbiBicm9rZW4gKilcbiAgfCBQcF9vcGVuX3RhZyBvZiBzdGFnICAgICAgICAgKCogb3BlbmluZyBhIHRhZyBuYW1lICopXG4gIHwgUHBfY2xvc2VfdGFnICAgICAgICAgICAgICAgKCogY2xvc2luZyB0aGUgbW9zdCByZWNlbnRseSBvcGVuIHRhZyAqKVxuXG5hbmQgc3RhZyA9IC4uXG5cbmFuZCB0Ym94ID0gUHBfdGJveCBvZiBpbnQgbGlzdCByZWYgICgqIFRhYnVsYXRpb24gYm94ICopXG5cbnR5cGUgdGFnID0gc3RyaW5nXG50eXBlIHN0YWcgKz0gU3RyaW5nX3RhZyBvZiB0YWdcblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWU6XG4gICBwcmV0dHktcHJpbnRpbmcgbWF0ZXJpYWwgaXMgbm90IHdyaXR0ZW4gaW4gdGhlIG91dHB1dCBhcyBzb29uIGFzIGVtaXR0ZWQ7XG4gICBpbnN0ZWFkLCB0aGUgbWF0ZXJpYWwgaXMgc2ltcGx5IHJlY29yZGVkIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSxcbiAgIHVudGlsIHRoZSBlbmNsb3NpbmcgYm94IGhhcyBhIGtub3duIGNvbXB1dGVkIHNpemUgYW5kIHByb3BlciBzcGxpdHRpbmdcbiAgIGRlY2lzaW9ucyBjYW4gYmUgbWFkZS5cblxuICAgVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGNvbnRhaW5zIGZvcm1hdHRpbmcgZWxlbWVudHMgdG8gYmUgcHJpbnRlZC5cbiAgIEVhY2ggZm9ybWF0dGluZyBlbGVtZW50IGlzIGEgdHVwbGUgKHNpemUsIHRva2VuLCBsZW5ndGgpLCB3aGVyZVxuICAgLSBsZW5ndGggaXMgdGhlIGRlY2xhcmVkIGxlbmd0aCBvZiB0aGUgdG9rZW4sXG4gICAtIHNpemUgaXMgZWZmZWN0aXZlIHNpemUgb2YgdGhlIHRva2VuIHdoZW4gaXQgaXMgcHJpbnRlZFxuICAgICAoc2l6ZSBpcyBzZXQgd2hlbiB0aGUgc2l6ZSBvZiB0aGUgYm94IGlzIGtub3duLCBzbyB0aGF0IHNpemUgb2YgYnJlYWtcbiAgICAgIGhpbnRzIGFyZSBkZWZpbml0aXZlKS4gKilcbnR5cGUgcHBfcXVldWVfZWxlbSA9IHtcbiAgbXV0YWJsZSBzaXplIDogU2l6ZS50O1xuICB0b2tlbiA6IHBwX3Rva2VuO1xuICBsZW5ndGggOiBpbnQ7XG59XG5cblxuKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGRlZmluaXRpb24uICopXG50eXBlIHBwX3F1ZXVlID0gcHBfcXVldWVfZWxlbSBRdWV1ZS50XG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay4gKilcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrOiBzY2FubmluZyBlbGVtZW50IGRlZmluaXRpb24uICopXG50eXBlIHBwX3NjYW5fZWxlbSA9IHtcbiAgbGVmdF90b3RhbCA6IGludDsgKCogVmFsdWUgb2YgcHBfbGVmdF90b3RhbCB3aGVuIHRoZSBlbGVtZW50IHdhcyBlbnF1ZXVlZC4gKilcbiAgcXVldWVfZWxlbSA6IHBwX3F1ZXVlX2VsZW1cbn1cblxuKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2s6XG4gICB0aGUgZm9ybWF0dGluZyBzdGFjayBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgYWxsIHRoZSBjdXJyZW50bHkgYWN0aXZlXG4gICBib3hlczsgdGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2sgaXMgdXNlZCB0byBzcGxpdCB0aGUgbGluZXNcbiAgIHdoaWxlIHByaW50aW5nIHRva2Vucy4gKilcblxuKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2s6IGZvcm1hdHRpbmcgc3RhY2sgZWxlbWVudCBkZWZpbml0aW9uLlxuICAgRWFjaCBzdGFjayBlbGVtZW50IGRlc2NyaWJlcyBhIHByZXR0eS1wcmludGluZyBib3guICopXG50eXBlIHBwX2Zvcm1hdF9lbGVtID0geyBib3hfdHlwZSA6IGJveF90eXBlOyB3aWR0aCA6IGludCB9XG5cbigqIFRoZSBmb3JtYXR0ZXIgZGVmaW5pdGlvbi5cbiAgIEVhY2ggZm9ybWF0dGVyIHZhbHVlIGlzIGEgcHJldHR5LXByaW50ZXIgaW5zdGFuY2Ugd2l0aCBhbGwgaXRzXG4gICBtYWNoaW5lcnkuICopXG50eXBlIGZvcm1hdHRlciA9IHtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuICBwcF9zY2FuX3N0YWNrIDogcHBfc2Nhbl9lbGVtIFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrLiAqKVxuICBwcF9mb3JtYXRfc3RhY2sgOiBwcF9mb3JtYXRfZWxlbSBTdGFjay50O1xuICBwcF90Ym94X3N0YWNrIDogdGJveCBTdGFjay50O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2VtYW50aWNzIHRhZyBzdGFjay4gKilcbiAgcHBfdGFnX3N0YWNrIDogc3RhZyBTdGFjay50O1xuICBwcF9tYXJrX3N0YWNrIDogc3RhZyBTdGFjay50O1xuICAoKiBWYWx1ZSBvZiByaWdodCBtYXJnaW4uICopXG4gIG11dGFibGUgcHBfbWFyZ2luIDogaW50O1xuICAoKiBNaW5pbWFsIHNwYWNlIGxlZnQgYmVmb3JlIG1hcmdpbiwgd2hlbiBvcGVuaW5nIGEgYm94LiAqKVxuICBtdXRhYmxlIHBwX21pbl9zcGFjZV9sZWZ0IDogaW50O1xuICAoKiBNYXhpbXVtIHZhbHVlIG9mIGluZGVudGF0aW9uOlxuICAgICBubyBib3ggY2FuIGJlIG9wZW5lZCBmdXJ0aGVyLiAqKVxuICBtdXRhYmxlIHBwX21heF9pbmRlbnQgOiBpbnQ7XG4gICgqIFNwYWNlIHJlbWFpbmluZyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxuICBtdXRhYmxlIHBwX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIEN1cnJlbnQgdmFsdWUgb2YgaW5kZW50YXRpb24uICopXG4gIG11dGFibGUgcHBfY3VycmVudF9pbmRlbnQgOiBpbnQ7XG4gICgqIFRydWUgd2hlbiB0aGUgbGluZSBoYXMgYmVlbiBicm9rZW4gYnkgdGhlIHByZXR0eS1wcmludGVyLiAqKVxuICBtdXRhYmxlIHBwX2lzX25ld19saW5lIDogYm9vbDtcbiAgKCogVG90YWwgd2lkdGggb2YgdG9rZW5zIGFscmVhZHkgcHJpbnRlZC4gKilcbiAgbXV0YWJsZSBwcF9sZWZ0X3RvdGFsIDogaW50O1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgZXZlciBwdXQgaW4gcXVldWUuICopXG4gIG11dGFibGUgcHBfcmlnaHRfdG90YWwgOiBpbnQ7XG4gICgqIEN1cnJlbnQgbnVtYmVyIG9mIG9wZW4gYm94ZXMuICopXG4gIG11dGFibGUgcHBfY3Vycl9kZXB0aCA6IGludDtcbiAgKCogTWF4aW11bSBudW1iZXIgb2YgYm94ZXMgd2hpY2ggY2FuIGJlIHNpbXVsdGFuZW91c2x5IG9wZW4uICopXG4gIG11dGFibGUgcHBfbWF4X2JveGVzIDogaW50O1xuICAoKiBFbGxpcHNpcyBzdHJpbmcuICopXG4gIG11dGFibGUgcHBfZWxsaXBzaXMgOiBzdHJpbmc7XG4gICgqIE91dHB1dCBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgKCogRmx1c2hpbmcgZnVuY3Rpb24uICopXG4gIG11dGFibGUgcHBfb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9uZXdsaW5lIDogdW5pdCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgYnJlYWsgaGludHMgc3BhY2VzLiAqKVxuICBtdXRhYmxlIHBwX291dF9zcGFjZXMgOiBpbnQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG4gICgqIEFyZSB0YWdzIHByaW50ZWQgPyAqKVxuICBtdXRhYmxlIHBwX3ByaW50X3RhZ3MgOiBib29sO1xuICAoKiBBcmUgdGFncyBtYXJrZWQgPyAqKVxuICBtdXRhYmxlIHBwX21hcmtfdGFncyA6IGJvb2w7XG4gICgqIEZpbmQgb3BlbmluZyBhbmQgY2xvc2luZyBtYXJrZXJzIG9mIHRhZ3MuICopXG4gIG11dGFibGUgcHBfbWFya19vcGVuX3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtdXRhYmxlIHBwX21hcmtfY2xvc2VfdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfcHJpbnRfb3Blbl90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gIG11dGFibGUgcHBfcHJpbnRfY2xvc2VfdGFnIDogc3RhZyAtPiB1bml0O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG4gIHBwX3F1ZXVlIDogcHBfcXVldWU7XG59XG5cblxuKCogVGhlIGZvcm1hdHRlciBzcGVjaWZpYyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zLiAqKVxudHlwZSBmb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPSB7XG4gIG1hcmtfb3Blbl9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBwcmludF9vcGVuX3N0YWcgOiBzdGFnIC0+IHVuaXQ7XG4gIHByaW50X2Nsb3NlX3N0YWcgOiBzdGFnIC0+IHVuaXQ7XG59XG5cblxuKCogVGhlIGZvcm1hdHRlciBmdW5jdGlvbnMgdG8gb3V0cHV0IG1hdGVyaWFsLiAqKVxudHlwZSBmb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9IHtcbiAgb3V0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQ7XG4gIG91dF9mbHVzaCA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gIG91dF9zcGFjZXMgOiBpbnQgLT4gdW5pdDtcbiAgb3V0X2luZGVudCA6IGludCAtPiB1bml0O1xufVxuXG5cbigqXG5cbiAgQXV4aWxpYXJpZXMgYW5kIGJhc2ljIGZ1bmN0aW9ucy5cblxuKilcblxuKCogRW50ZXIgYSB0b2tlbiBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG5sZXQgcHBfZW5xdWV1ZSBzdGF0ZSB0b2tlbiA9XG4gIHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgdG9rZW4ubGVuZ3RoO1xuICBRdWV1ZS5hZGQgdG9rZW4gc3RhdGUucHBfcXVldWVcblxuXG5sZXQgcHBfY2xlYXJfcXVldWUgc3RhdGUgPVxuICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIDE7IHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIDE7XG4gIFF1ZXVlLmNsZWFyIHN0YXRlLnBwX3F1ZXVlXG5cblxuKCogUHBfaW5maW5pdHk6IGxhcmdlIHZhbHVlIGZvciBkZWZhdWx0IHRva2VucyBzaXplLlxuXG4gICBQcF9pbmZpbml0eSBpcyBkb2N1bWVudGVkIGFzIGJlaW5nIGdyZWF0ZXIgdGhhbiAxZTEwOyB0byBhdm9pZFxuICAgY29uZnVzaW9uIGFib3V0IHRoZSB3b3JkICdncmVhdGVyJywgd2UgY2hvb3NlIHBwX2luZmluaXR5IGdyZWF0ZXJcbiAgIHRoYW4gMWUxMCArIDE7IGZvciBjb3JyZWN0IGhhbmRsaW5nIG9mIHRlc3RzIGluIHRoZSBhbGdvcml0aG0sXG4gICBwcF9pbmZpbml0eSBtdXN0IGJlIGV2ZW4gb25lIG1vcmUgdGhhbiAxZTEwICsgMTsgbGV0J3Mgc3RhbmQgb24gdGhlXG4gICBzYWZlIHNpZGUgYnkgY2hvb3NpbmcgMS5lMTArMTAuXG5cbiAgIFBwX2luZmluaXR5IGNvdWxkIHByb2JhYmx5IGJlIDEwNzM3NDE4MjMgdGhhdCBpcyAyXjMwIC0gMSwgdGhhdCBpc1xuICAgdGhlIG1pbmltYWwgdXBwZXIgYm91bmQgZm9yIGludGVnZXJzOyBub3cgdGhhdCBtYXhfaW50IGlzIGRlZmluZWQsXG4gICB0aGlzIGxpbWl0IGNvdWxkIGFsc28gYmUgZGVmaW5lZCBhcyBtYXhfaW50IC0gMS5cblxuICAgSG93ZXZlciwgYmVmb3JlIHNldHRpbmcgcHBfaW5maW5pdHkgdG8gc29tZXRoaW5nIGFyb3VuZCBtYXhfaW50LCB3ZVxuICAgbXVzdCBjYXJlZnVsbHkgZG91YmxlLWNoZWNrIGFsbCB0aGUgaW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbnNcbiAgIHRoYXQgaW52b2x2ZSBwcF9pbmZpbml0eSwgc2luY2UgYW55IG92ZXJmbG93IHdvdWxkIHdyZWNrIGhhdm9jIHRoZVxuICAgcHJldHR5LXByaW50aW5nIGFsZ29yaXRobSdzIGludmFyaWFudHMuIEdpdmVuIHRoYXQgdGhpcyBhcml0aG1ldGljXG4gICBjb3JyZWN0bmVzcyBjaGVjayBpcyBkaWZmaWN1bHQgYW5kIGVycm9yIHByb25lIGFuZCBnaXZlbiB0aGF0IDFlMTBcbiAgICsgMSBpcyBpbiBwcmFjdGljZSBsYXJnZSBlbm91Z2gsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYXR0ZW1wdCB0byBzZXRcbiAgIHBwX2luZmluaXR5IHRvIHRoZSB0aGVvcmV0aWNhbGx5IG1heGltdW0gbGltaXQuIEl0IGlzIG5vdCB3b3J0aCB0aGVcbiAgIGJ1cmRlbiAhICopXG5sZXQgcHBfaW5maW5pdHkgPSAxMDAwMDAwMDEwXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgZm9yIHRoZSBmb3JtYXR0ZXIuICopXG5sZXQgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBzID0gc3RhdGUucHBfb3V0X3N0cmluZyBzIDAgKFN0cmluZy5sZW5ndGggcylcbmFuZCBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lICgpXG5hbmQgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X3NwYWNlcyBuXG5hbmQgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X2luZGVudCBuXG5cbigqIEZvcm1hdCBhIHRleHR1YWwgdG9rZW4gKilcbmxldCBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHRleHQgPVxuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBzaXplO1xuICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHRleHQ7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIGZhbHNlXG5cbigqIEZvcm1hdCBhIHN0cmluZyBieSBpdHMgbGVuZ3RoLCBpZiBub3QgZW1wdHkgKilcbmxldCBmb3JtYXRfc3RyaW5nIHN0YXRlIHMgPVxuICBpZiBzIDw+IFwiXCIgdGhlbiBmb3JtYXRfcHBfdGV4dCBzdGF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBzXG5cbigqIFRvIGZvcm1hdCBhIGJyZWFrLCBpbmRlbnRpbmcgYSBuZXcgbGluZS4gKilcbmxldCBicmVha19uZXdfbGluZSBzdGF0ZSAoYmVmb3JlLCBvZmZzZXQsIGFmdGVyKSB3aWR0aCA9XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYmVmb3JlO1xuICBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gdHJ1ZTtcbiAgbGV0IGluZGVudCA9IHN0YXRlLnBwX21hcmdpbiAtIHdpZHRoICsgb2Zmc2V0IGluXG4gICgqIERvbid0IGluZGVudCBtb3JlIHRoYW4gcHBfbWF4X2luZGVudC4gKilcbiAgbGV0IHJlYWxfaW5kZW50ID0gSW50Lm1pbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGluZGVudCBpblxuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSByZWFsX2luZGVudDtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9jdXJyZW50X2luZGVudDtcbiAgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBzdGF0ZS5wcF9jdXJyZW50X2luZGVudDtcbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBhZnRlclxuXG5cbigqIFRvIGZvcmNlIGEgbGluZSBicmVhayBpbnNpZGUgYSBib3g6IG5vIG9mZnNldCBpcyBhZGRlZC4gKilcbmxldCBicmVha19saW5lIHN0YXRlIHdpZHRoID0gYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIDAsIFwiXCIpIHdpZHRoXG5cbigqIFRvIGZvcm1hdCBhIGJyZWFrIHRoYXQgZml0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoYmVmb3JlLCB3aWR0aCwgYWZ0ZXIpID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHdpZHRoO1xuICBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIHdpZHRoO1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gaW5kZW50IG5vIG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LCBpZiBvbmUgdHJpZXMgdG8gb3BlbiBhIGJveFxuICAgYmV5b25kIHBwX21heF9pbmRlbnQsIHRoZW4gdGhlIGJveCBpcyByZWplY3RlZCBvbiB0aGUgbGVmdFxuICAgYnkgc2ltdWxhdGluZyBhIGJyZWFrLiAqKVxubGV0IHBwX2ZvcmNlX2JyZWFrX2xpbmUgc3RhdGUgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZVxuICB8IFNvbWUgeyBib3hfdHlwZTsgd2lkdGggfSAtPlxuICAgIGlmIHdpZHRoID4gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuXG4gICAgICBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2ZpdHMgfCBQcF9oYm94IC0+ICgpXG4gICAgICB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCAtPiBicmVha19saW5lIHN0YXRlIHdpZHRoXG5cblxuKCogVG8gc2tpcCBhIHRva2VuLCBpZiB0aGUgcHJldmlvdXMgbGluZSBoYXMgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfc2tpcF90b2tlbiBzdGF0ZSA9XG4gIG1hdGNoIFF1ZXVlLnRha2Vfb3B0IHN0YXRlLnBwX3F1ZXVlIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHByaW50X2lmX25ld2xpbmUgbXVzdCBoYXZlIGJlZW4gdGhlIGxhc3QgcHJpbnRpbmcgY29tbWFuZCAqKVxuICB8IFNvbWUgeyBzaXplOyBsZW5ndGg7IF8gfSAtPlxuICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gc3RhdGUucHBfbGVmdF90b3RhbCAtIGxlbmd0aDtcbiAgICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgKyBTaXplLnRvX2ludCBzaXplXG5cblxuKCpcblxuICBUaGUgbWFpbiBwcmV0dHkgcHJpbnRpbmcgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBGb3JtYXR0aW5nIGEgdG9rZW4gd2l0aCBhIGdpdmVuIHNpemUuICopXG5sZXQgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgPSBmdW5jdGlvblxuXG4gIHwgUHBfdGV4dCBzIC0+XG4gICAgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSBzXG5cbiAgfCBQcF9iZWdpbiAob2ZmLCB0eSkgLT5cbiAgICBsZXQgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCBpblxuICAgIGlmIGluc2VydGlvbl9wb2ludCA+IHN0YXRlLnBwX21heF9pbmRlbnQgdGhlblxuICAgICAgKCogY2FuIG5vdCBvcGVuIGEgYm94IHJpZ2h0IHRoZXJlLiAqKVxuICAgICAgYmVnaW4gcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSBlbmQ7XG4gICAgbGV0IHdpZHRoID0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIG9mZiBpblxuICAgIGxldCBib3hfdHlwZSA9XG4gICAgICBtYXRjaCB0eSB3aXRoXG4gICAgICB8IFBwX3Zib3ggLT4gUHBfdmJveFxuICAgICAgfCBQcF9oYm94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzIC0+XG4gICAgICAgIGlmIHNpemUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gdHkgZWxzZSBQcF9maXRzIGluXG4gICAgU3RhY2sucHVzaCB7IGJveF90eXBlOyB3aWR0aCB9IHN0YXRlLnBwX2Zvcm1hdF9zdGFja1xuXG4gIHwgUHBfZW5kIC0+XG4gICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF90YmVnaW4gKFBwX3Rib3ggXyBhcyB0Ym94KSAtPlxuICAgIFN0YWNrLnB1c2ggdGJveCBzdGF0ZS5wcF90Ym94X3N0YWNrXG5cbiAgfCBQcF90ZW5kIC0+XG4gICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHw+IGlnbm9yZVxuXG4gIHwgUHBfc3RhYiAtPlxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gdGFidWxhdGlvbiBib3guICopXG4gICAgfCBTb21lIChQcF90Ym94IHRhYnMpIC0+XG4gICAgICBsZXQgcmVjIGFkZF90YWIgbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gW25dXG4gICAgICAgIHwgeCA6OiBsIGFzIGxzIC0+IGlmIG4gPCB4IHRoZW4gbiA6OiBscyBlbHNlIHggOjogYWRkX3RhYiBuIGwgaW5cbiAgICAgIHRhYnMgOj0gYWRkX3RhYiAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCkgIXRhYnNcbiAgICBlbmRcblxuICB8IFBwX3RicmVhayAobiwgb2ZmKSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCB0YWIgPVxuICAgICAgICBtYXRjaCAhdGFicyB3aXRoXG4gICAgICAgIHwgW10gLT4gaW5zZXJ0aW9uX3BvaW50XG4gICAgICAgIHwgZmlyc3QgOjogXyAtPlxuICAgICAgICAgIGxldCByZWMgZmluZCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgICAgICBpZiBoZWFkID49IGluc2VydGlvbl9wb2ludCB0aGVuIGhlYWQgZWxzZSBmaW5kIHRhaWxcbiAgICAgICAgICAgIHwgW10gLT4gZmlyc3QgaW5cbiAgICAgICAgICBmaW5kICF0YWJzIGluXG4gICAgICBsZXQgb2Zmc2V0ID0gdGFiIC0gaW5zZXJ0aW9uX3BvaW50IGluXG4gICAgICBpZiBvZmZzZXQgPj0gMFxuICAgICAgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgKFwiXCIsIG9mZnNldCArIG4sIFwiXCIpXG4gICAgICBlbHNlIGJyZWFrX25ld19saW5lIHN0YXRlIChcIlwiLCB0YWIgKyBvZmYsIFwiXCIpIHN0YXRlLnBwX21hcmdpblxuICAgIGVuZFxuXG4gIHwgUHBfbmV3bGluZSAtPlxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGUgKCogTm8gb3BlbiBib3guICopXG4gICAgfCBTb21lIHsgd2lkdGg7IF99IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcbiAgICBlbmRcblxuICB8IFBwX2lmX25ld2xpbmUgLT5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCAhPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgdGhlbiBwcF9za2lwX3Rva2VuIHN0YXRlXG5cbiAgfCBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IC0+XG4gICAgbGV0IGJlZm9yZSwgb2ZmLCBfID0gYnJlYWtzIGluXG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyBib3hfdHlwZTsgd2lkdGggfSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggYm94X3R5cGUgd2l0aFxuICAgICAgfCBQcF9ob3Zib3ggLT5cbiAgICAgICAgaWYgc2l6ZSArIFN0cmluZy5sZW5ndGggYmVmb3JlID4gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2JveCAtPlxuICAgICAgICAoKiBIYXZlIHRoZSBsaW5lIGp1c3QgYmVlbiBicm9rZW4gaGVyZSA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2lzX25ld19saW5lIHRoZW4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHMgZWxzZVxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGggZWxzZVxuICAgICAgICAoKiBicmVhayB0aGUgbGluZSBoZXJlIGxlYWRzIHRvIG5ldyBpbmRlbnRhdGlvbiA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ID4gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9odmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfZml0cyAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF92Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9oYm94IC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgfCBQcF9vcGVuX3RhZyB0YWdfbmFtZSAtPlxuICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlcjtcbiAgICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF9tYXJrX3N0YWNrXG5cbiAgIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgIGJlZ2luIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfbWFya19zdGFjayB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIHRhZ19uYW1lIGluXG4gICAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXJcbiAgICAgZW5kXG5cblxuKCogUHJpbnQgaWYgdG9rZW4gc2l6ZSBpcyBrbm93biBlbHNlIHByaW50aW5nIGlzIGRlbGF5ZWQuXG4gICBQcmludGluZyBpcyBkZWxheWVkIHdoZW4gdGhlIHRleHQgd2FpdGluZyBpbiB0aGUgcXVldWUgcmVxdWlyZXNcbiAgIG1vcmUgcm9vbSB0byBmb3JtYXQgdGhhbiBleGlzdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCByZWMgYWR2YW5jZV9sZWZ0IHN0YXRlID1cbiAgbWF0Y2ggUXVldWUucGVla19vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogTm8gdG9rZW5zIHRvIHByaW50ICopXG4gIHwgU29tZSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSAtPlxuICAgIGxldCBwZW5kaW5nX2NvdW50ID0gc3RhdGUucHBfcmlnaHRfdG90YWwgLSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIGluXG4gICAgaWYgU2l6ZS5pc19rbm93biBzaXplIHx8IHBlbmRpbmdfY291bnQgPj0gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIGJlZ2luXG4gICAgICBRdWV1ZS50YWtlIHN0YXRlLnBwX3F1ZXVlIHw+IGlnbm9yZTsgKCogTm90IGVtcHR5OiB3ZSBwZWVrIGludG8gaXQgKilcbiAgICAgIGxldCBzaXplID0gaWYgU2l6ZS5pc19rbm93biBzaXplIHRoZW4gU2l6ZS50b19pbnQgc2l6ZSBlbHNlIHBwX2luZmluaXR5IGluXG4gICAgICBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSB0b2tlbjtcbiAgICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gbGVuZ3RoICsgc3RhdGUucHBfbGVmdF90b3RhbDtcbiAgICAgIChhZHZhbmNlX2xlZnQgW0B0YWlsY2FsbF0pIHN0YXRlXG4gICAgZW5kXG5cblxuKCogVG8gZW5xdWV1ZSBhIHRva2VuIDogdHJ5IHRvIGFkdmFuY2UuICopXG5sZXQgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHRvayA9IHBwX2VucXVldWUgc3RhdGUgdG9rOyBhZHZhbmNlX2xlZnQgc3RhdGVcblxuXG4oKiBUbyBlbnF1ZXVlIHN0cmluZ3MuICopXG5sZXQgZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzID1cbiAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZTsgdG9rZW4gPSBQcF90ZXh0IHM7IGxlbmd0aCA9IFNpemUudG9faW50IHNpemUgfVxuXG5cbmxldCBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzID1cbiAgZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgKFNpemUub2ZfaW50IChTdHJpbmcubGVuZ3RoIHMpKSBzXG5cblxuKCogUm91dGluZXMgZm9yIHNjYW4gc3RhY2tcbiAgIGRldGVybWluZSBzaXplIG9mIGJveGVzLiAqKVxuXG4oKiBUaGUgc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbmxldCBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhY2sgPVxuICBTdGFjay5jbGVhciBzdGFjaztcbiAgbGV0IHF1ZXVlX2VsZW0gPSB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfdGV4dCBcIlwiOyBsZW5ndGggPSAwIH0gaW5cbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAtMTsgcXVldWVfZWxlbSB9IHN0YWNrXG5cbigqIFNldHRpbmcgdGhlIHNpemUgb2YgYm94ZXMgb24gc2NhbiBzdGFjazpcbiAgIGlmIHR5ID0gdHJ1ZSB0aGVuIHNpemUgb2YgYnJlYWsgaXMgc2V0IGVsc2Ugc2l6ZSBvZiBib3ggaXMgc2V0O1xuICAgaW4gZWFjaCBjYXNlIHBwX3NjYW5fc3RhY2sgaXMgcG9wcGVkLlxuXG4gICBOb3RlOlxuICAgUGF0dGVybiBtYXRjaGluZyBvbiBzY2FuIHN0YWNrIGlzIGV4aGF1c3RpdmUsIHNpbmNlIHNjYW5fc3RhY2sgaXMgbmV2ZXJcbiAgIGVtcHR5LlxuICAgUGF0dGVybiBtYXRjaGluZyBvbiB0b2tlbiBpbiBzY2FuIHN0YWNrIGlzIGFsc28gZXhoYXVzdGl2ZSxcbiAgIHNpbmNlIHNjYW5fcHVzaCBpcyB1c2VkIG9uIGJyZWFrcyBhbmQgb3BlbmluZyBvZiBib3hlcy4gKilcbmxldCBzZXRfc2l6ZSBzdGF0ZSB0eSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxuICB8IFNvbWUgeyBsZWZ0X3RvdGFsOyBxdWV1ZV9lbGVtIH0gLT5cbiAgICBsZXQgc2l6ZSA9IFNpemUudG9faW50IHF1ZXVlX2VsZW0uc2l6ZSBpblxuICAgICgqIHRlc3QgaWYgc2NhbiBzdGFjayBjb250YWlucyBhbnkgZGF0YSB0aGF0IGlzIG5vdCBvYnNvbGV0ZS4gKilcbiAgICBpZiBsZWZ0X3RvdGFsIDwgc3RhdGUucHBfbGVmdF90b3RhbCB0aGVuXG4gICAgICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhdGUucHBfc2Nhbl9zdGFja1xuICAgIGVsc2VcbiAgICAgIG1hdGNoIHF1ZXVlX2VsZW0udG9rZW4gd2l0aFxuICAgICAgfCBQcF9icmVhayBfIHwgUHBfdGJyZWFrIChfLCBfKSAtPlxuICAgICAgICBpZiB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX2JlZ2luIChfLCBfKSAtPlxuICAgICAgICBpZiBub3QgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF90ZXh0IF8gfCBQcF9zdGFiIHwgUHBfdGJlZ2luIF8gfCBQcF90ZW5kIHwgUHBfZW5kXG4gICAgICB8IFBwX25ld2xpbmUgfCBQcF9pZl9uZXdsaW5lIHwgUHBfb3Blbl90YWcgXyB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICAgICAoKSAoKiBzY2FuX3B1c2ggaXMgb25seSB1c2VkIGZvciBicmVha3MgYW5kIGJveGVzLiAqKVxuXG5cbigqIFB1c2ggYSB0b2tlbiBvbiBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay5cbiAgIElmIGIgaXMgdHJ1ZSBzZXRfc2l6ZSBpcyBjYWxsZWQuICopXG5sZXQgc2Nhbl9wdXNoIHN0YXRlIGIgdG9rZW4gPVxuICBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuO1xuICBpZiBiIHRoZW4gc2V0X3NpemUgc3RhdGUgdHJ1ZTtcbiAgbGV0IGVsZW0gPSB7IGxlZnRfdG90YWwgPSBzdGF0ZS5wcF9yaWdodF90b3RhbDsgcXVldWVfZWxlbSA9IHRva2VuIH0gaW5cbiAgU3RhY2sucHVzaCBlbGVtIHN0YXRlLnBwX3NjYW5fc3RhY2tcblxuXG4oKiBUbyBvcGVuIGEgbmV3IGJveCA6XG4gICB0aGUgdXNlciBtYXkgc2V0IHRoZSBkZXB0aCBib3VuZCBwcF9tYXhfYm94ZXNcbiAgIGFueSB0ZXh0IG5lc3RlZCBkZWVwZXIgaXMgcHJpbnRlZCBhcyB0aGUgZWxsaXBzaXMgc3RyaW5nLiAqKVxubGV0IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgYnJfdHkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX2JlZ2luIChpbmRlbnQsIGJyX3R5KTsgbGVuZ3RoID0gMCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIGZhbHNlIGVsZW0gZWxzZVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmcgc3RhdGUgc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUaGUgYm94IHdoaWNoIGlzIGFsd2F5cyBvcGVuLiAqKVxubGV0IHBwX29wZW5fc3lzX2JveCBzdGF0ZSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hvdmJveFxuXG4oKiBDbG9zZSBhIGJveCwgc2V0dGluZyBzaXplcyBvZiBpdHMgc3ViIGJveGVzLiAqKVxubGV0IHBwX2Nsb3NlX2JveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBiZWdpblxuICAgICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfZW5kOyBsZW5ndGggPSAwIH07XG4gICAgICBzZXRfc2l6ZSBzdGF0ZSB0cnVlOyBzZXRfc2l6ZSBzdGF0ZSBmYWxzZVxuICAgIGVuZDtcbiAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxO1xuICBlbmRcblxuXG4oKiBPcGVuIGEgdGFnLCBwdXNoaW5nIGl0IG9uIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfb3Blbl9zdGFnIHN0YXRlIHRhZ19uYW1lID1cbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gIGJlZ2luXG4gICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gICAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgdGFnX25hbWVcbiAgZW5kO1xuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIGxldCB0b2tlbiA9IFBwX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuOyBsZW5ndGggPSAwIH1cblxuXG4oKiBDbG9zZSBhIHRhZywgcG9wcGluZyBpdCBmcm9tIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfY2xvc2VfdGFnOyBsZW5ndGggPSAwIH07XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICAgIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGFnX3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgdGFnX25hbWVcblxubGV0IHBwX29wZW5fdGFnIHN0YXRlIHMgPSBwcF9vcGVuX3N0YWcgc3RhdGUgKFN0cmluZ190YWcgcylcbmxldCBwcF9jbG9zZV90YWcgc3RhdGUgKCkgPSBwcF9jbG9zZV9zdGFnIHN0YXRlICgpXG5cbmxldCBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiID0gc3RhdGUucHBfcHJpbnRfdGFncyA8LSBiXG5sZXQgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiID0gc3RhdGUucHBfbWFya190YWdzIDwtIGJcbmxldCBwcF9nZXRfcHJpbnRfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX3ByaW50X3RhZ3NcbmxldCBwcF9nZXRfbWFya190YWdzIHN0YXRlICgpID0gc3RhdGUucHBfbWFya190YWdzXG5sZXQgcHBfc2V0X3RhZ3Mgc3RhdGUgYiA9XG4gIHBwX3NldF9wcmludF90YWdzIHN0YXRlIGI7IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYlxuXG5cbigqIEhhbmRsaW5nIHRhZyBoYW5kbGluZyBmdW5jdGlvbnM6IGdldC9zZXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG1hcmtfb3Blbl9zdGFnID0gc3RhdGUucHBfbWFya19vcGVuX3RhZztcbiAgbWFya19jbG9zZV9zdGFnID0gc3RhdGUucHBfbWFya19jbG9zZV90YWc7XG4gIHByaW50X29wZW5fc3RhZyA9IHN0YXRlLnBwX3ByaW50X29wZW5fdGFnO1xuICBwcmludF9jbG9zZV9zdGFnID0gc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnO1xufVxuXG5cbmxldCBwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgbWFya19vcGVuX3N0YWcgPSBtb3Q7XG4gICAgIG1hcmtfY2xvc2Vfc3RhZyA9IG1jdDtcbiAgICAgcHJpbnRfb3Blbl9zdGFnID0gcG90O1xuICAgICBwcmludF9jbG9zZV9zdGFnID0gcGN0O1xuICB9ID1cbiAgc3RhdGUucHBfbWFya19vcGVuX3RhZyA8LSBtb3Q7XG4gIHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIDwtIG1jdDtcbiAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgPC0gcG90O1xuICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgPC0gcGN0XG5cblxuKCogSW5pdGlhbGl6ZSBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9yaW5pdCBzdGF0ZSA9XG4gIHBwX2NsZWFyX3F1ZXVlIHN0YXRlO1xuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhdGUucHBfc2Nhbl9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfZm9ybWF0X3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF90Ym94X3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX21hcmtfc3RhY2s7XG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIDA7XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gMDtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9tYXJnaW47XG4gIHBwX29wZW5fc3lzX2JveCBzdGF0ZVxuXG5sZXQgY2xlYXJfdGFnX3N0YWNrIHN0YXRlID1cbiAgU3RhY2suaXRlciAoZnVuIF8gLT4gcHBfY2xvc2VfdGFnIHN0YXRlICgpKSBzdGF0ZS5wcF90YWdfc3RhY2tcblxuXG4oKiBGbHVzaGluZyBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSBiID1cbiAgY2xlYXJfdGFnX3N0YWNrIHN0YXRlO1xuICB3aGlsZSBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSBkb1xuICAgIHBwX2Nsb3NlX2JveCBzdGF0ZSAoKVxuICBkb25lO1xuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBwcF9pbmZpbml0eTtcbiAgYWR2YW5jZV9sZWZ0IHN0YXRlO1xuICBpZiBiIHRoZW4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHBwX3Jpbml0IHN0YXRlXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBmb3JtYXQgdmFsdWVzIGFuZCB1c2UgYm94ZXMuXG5cbiopXG5cbigqIFRvIGZvcm1hdCBhIHN0cmluZy4gKilcbmxldCBwcF9wcmludF9hc19zaXplIHN0YXRlIHNpemUgcyA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHNcblxuXG5sZXQgcHBfcHJpbnRfYXMgc3RhdGUgaXNpemUgcyA9XG4gIHBwX3ByaW50X2FzX3NpemUgc3RhdGUgKFNpemUub2ZfaW50IGlzaXplKSBzXG5cblxubGV0IHBwX3ByaW50X3N0cmluZyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG5sZXQgcHBfcHJpbnRfYnl0ZXMgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChCeXRlcy5sZW5ndGggcykgKEJ5dGVzLnRvX3N0cmluZyBzKVxuXG4oKiBUbyBmb3JtYXQgYW4gaW50ZWdlci4gKilcbmxldCBwcF9wcmludF9pbnQgc3RhdGUgaSA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoSW50LnRvX3N0cmluZyBpKVxuXG4oKiBUbyBmb3JtYXQgYSBmbG9hdC4gKilcbmxldCBwcF9wcmludF9mbG9hdCBzdGF0ZSBmID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfZmxvYXQgZilcblxuKCogVG8gZm9ybWF0IGEgYm9vbGVhbi4gKilcbmxldCBwcF9wcmludF9ib29sIHN0YXRlIGIgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9ib29sIGIpXG5cbigqIFRvIGZvcm1hdCBhIGNoYXIuICopXG5sZXQgcHBfcHJpbnRfY2hhciBzdGF0ZSBjID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgMSAoU3RyaW5nLm1ha2UgMSBjKVxuXG5cbigqIE9wZW5pbmcgYm94ZXMuICopXG5sZXQgcHBfb3Blbl9oYm94IHN0YXRlICgpID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaGJveFxuYW5kIHBwX29wZW5fdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX3Zib3hcblxuYW5kIHBwX29wZW5faHZib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9odmJveFxuYW5kIHBwX29wZW5faG92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaG92Ym94XG5hbmQgcHBfb3Blbl9ib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ib3hcblxuXG4oKiBQcmludGluZyBxdWV1ZWQgdGV4dC5cblxuICAgW3BwX3ByaW50X2ZsdXNoXSBwcmludHMgYWxsIHBlbmRpbmcgaXRlbXMgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGFuZFxuICAgdGhlbiBmbHVzaGVzIHRoZSBsb3cgbGV2ZWwgb3V0cHV0IGRldmljZSBvZiB0aGUgZm9ybWF0dGVyIHRvIGFjdHVhbGx5XG4gICBkaXNwbGF5IHByaW50aW5nIG1hdGVyaWFsLlxuXG4gICBbcHBfcHJpbnRfbmV3bGluZV0gYmVoYXZlcyBhcyBbcHBfcHJpbnRfZmx1c2hdIGFmdGVyIHByaW50aW5nIGFuIGFkZGl0aW9uYWxcbiAgIG5ldyBsaW5lLiAqKVxubGV0IHBwX3ByaW50X25ld2xpbmUgc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB0cnVlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcbmFuZCBwcF9wcmludF9mbHVzaCBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIGZhbHNlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcblxuXG4oKiBUbyBnZXQgYSBuZXdsaW5lIHdoZW4gb25lIGRvZXMgbm90IHdhbnQgdG8gY2xvc2UgdGhlIGN1cnJlbnQgYm94LiAqKVxubGV0IHBwX2ZvcmNlX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIFRvIGZvcm1hdCBzb21ldGhpbmcsIG9ubHkgaW4gY2FzZSB0aGUgbGluZSBoYXMganVzdCBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9wcmludF9pZl9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlXG4gICAgICB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfaWZfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogR2VuZXJhbGl6ZWQgYnJlYWsgaGludCB0aGF0IGFsbG93cyBwcmludGluZyBzdHJpbmdzIGJlZm9yZS9hZnRlclxuICAgc2FtZS1saW5lIG9mZnNldCAod2lkdGgpIG9yIG5ldy1saW5lIG9mZnNldCAqKVxubGV0IHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZSB+Zml0cyB+YnJlYWtzID1cbiAgbGV0IGJlZm9yZSwgd2lkdGgsIGFmdGVyID0gZml0cyBpblxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCB0b2tlbiA9IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gaW5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBiZWZvcmUgKyB3aWR0aCArIFN0cmluZy5sZW5ndGggYWZ0ZXIgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG4oKiBQcmludGluZyBicmVhayBoaW50czpcbiAgIEEgYnJlYWsgaGludCBpbmRpY2F0ZXMgd2hlcmUgYSBib3ggbWF5IGJlIGJyb2tlbi5cbiAgIElmIGxpbmUgaXMgYnJva2VuIHRoZW4gb2Zmc2V0IGlzIGFkZGVkIHRvIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudFxuICAgYm94IGVsc2UgKHRoZSB2YWx1ZSBvZikgd2lkdGggYmxhbmtzIGFyZSBwcmludGVkLiAqKVxubGV0IHBwX3ByaW50X2JyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZVxuICAgIH5maXRzOihcIlwiLCB3aWR0aCwgXCJcIikgfmJyZWFrczooXCJcIiwgb2Zmc2V0LCBcIlwiKVxuXG5cbigqIFByaW50IGEgc3BhY2UgOlxuICAgYSBzcGFjZSBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgYSBzaW5nbGUgc3BhY2UgaWYgdGhlIGJyZWFrIGRvZXMgbm90XG4gICBzcGxpdCB0aGUgbGluZTtcbiAgIGEgY3V0IGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBub3RoaW5nIGlmIHRoZSBicmVhayBkb2VzIG5vdCBzcGxpdCB0aGVcbiAgIGxpbmUuICopXG5sZXQgcHBfcHJpbnRfc3BhY2Ugc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAxIDBcbmFuZCBwcF9wcmludF9jdXQgc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAwIDBcblxuXG4oKiBUYWJ1bGF0aW9uIGJveGVzLiAqKVxubGV0IHBwX29wZW5fdGJveCBzdGF0ZSAoKSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS56ZXJvIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJlZ2luIChQcF90Ym94IChyZWYgW10pKTsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKiBDbG9zZSBhIHRhYnVsYXRpb24gYm94LiAqKVxubGV0IHBwX2Nsb3NlX3Rib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfdGVuZDsgbGVuZ3RoID0gMCB9IGluXG4gICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtO1xuICAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxXG4gIGVuZFxuXG5cbigqIFByaW50IGEgdGFidWxhdGlvbiBicmVhay4gKilcbmxldCBwcF9wcmludF90YnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YnJlYWsgKHdpZHRoLCBvZmZzZXQpOyBsZW5ndGggPSB3aWR0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG5cbmxldCBwcF9wcmludF90YWIgc3RhdGUgKCkgPSBwcF9wcmludF90YnJlYWsgc3RhdGUgMCAwXG5cbmxldCBwcF9zZXRfdGFiIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfc3RhYjsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gY29udHJvbCB0aGUgcHJldHR5LXByaW50ZXJzXG5cbiopXG5cbigqIFNldF9tYXhfYm94ZXMuICopXG5sZXQgcHBfc2V0X21heF9ib3hlcyBzdGF0ZSBuID0gaWYgbiA+IDEgdGhlbiBzdGF0ZS5wcF9tYXhfYm94ZXMgPC0gblxuXG4oKiBUbyBrbm93IHRoZSBjdXJyZW50IG1heGltdW0gbnVtYmVyIG9mIGJveGVzIGFsbG93ZWQuICopXG5sZXQgcHBfZ2V0X21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG5sZXQgcHBfb3Zlcl9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbigqIEVsbGlwc2lzLiAqKVxubGV0IHBwX3NldF9lbGxpcHNpc190ZXh0IHN0YXRlIHMgPSBzdGF0ZS5wcF9lbGxpcHNpcyA8LSBzXG5hbmQgcHBfZ2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRvIHNldCB0aGUgbWFyZ2luIG9mIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX2xpbWl0IG4gPVxuICBpZiBuIDwgcHBfaW5maW5pdHkgdGhlbiBuIGVsc2UgcHJlZCBwcF9pbmZpbml0eVxuXG5cbigqIEludGVybmFsIHByZXR0eS1wcmludGVyIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWluX3NwYWNlX2xlZnQgPC0gbjtcbiAgICBzdGF0ZS5wcF9tYXhfaW5kZW50IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX3Jpbml0IHN0YXRlXG5cblxuKCogSW5pdGlhbGx5LCB3ZSBoYXZlIDpcbiAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdCwgYW5kXG4gICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luLiAqKVxubGV0IHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG4gPVxuICBpZiBuID4gMSB0aGVuXG4gICAgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIChzdGF0ZS5wcF9tYXJnaW4gLSBuKVxuXG5cbmxldCBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9pbmRlbnRcblxubGV0IHBwX3NldF9tYXJnaW4gc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWFyZ2luIDwtIG47XG4gICAgbGV0IG5ld19tYXhfaW5kZW50ID1cbiAgICAgICgqIFRyeSB0byBtYWludGFpbiBtYXhfaW5kZW50IHRvIGl0cyBhY3R1YWwgdmFsdWUuICopXG4gICAgICBpZiBzdGF0ZS5wcF9tYXhfaW5kZW50IDw9IHN0YXRlLnBwX21hcmdpblxuICAgICAgdGhlbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGVsc2VcbiAgICAgICgqIElmIHBvc3NpYmxlIG1haW50YWluIHBwX21pbl9zcGFjZV9sZWZ0IHRvIGl0cyBhY3R1YWwgdmFsdWUsXG4gICAgICAgICBpZiB0aGlzIGxlYWRzIHRvIGEgdG9vIHNtYWxsIG1heF9pbmRlbnQsIHRha2UgaGFsZiBvZiB0aGVcbiAgICAgICAgIG5ldyBtYXJnaW4sIGlmIGl0IGlzIGdyZWF0ZXIgdGhhbiAxLiAqKVxuICAgICAgIEludC5tYXggKEludC5tYXggKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0KVxuICAgICAgICAgICAgICAgIChzdGF0ZS5wcF9tYXJnaW4gLyAyKSkgMSBpblxuICAgICgqIFJlYnVpbGQgaW52YXJpYW50cy4gKilcbiAgICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuZXdfbWF4X2luZGVudFxuXG5cbigqKiBHZW9tZXRyeSBmdW5jdGlvbnMgYW5kIHR5cGVzICopXG50eXBlIGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OmludDsgbWFyZ2luOiBpbnR9XG5cbmxldCB2YWxpZGF0ZV9nZW9tZXRyeSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIGlmIG1heF9pbmRlbnQgPCAyIHRoZW5cbiAgICBFcnJvciBcIm1heF9pbmRlbnQgPCAyXCJcbiAgZWxzZSBpZiBtYXJnaW4gPD0gbWF4X2luZGVudCB0aGVuXG4gICAgRXJyb3IgXCJtYXJnaW4gPD0gbWF4X2luZGVudFwiXG4gIGVsc2UgT2sgKClcblxubGV0IGNoZWNrX2dlb21ldHJ5IGdlb21ldHJ5ID1cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IE9rICgpIC0+IHRydWVcbiAgfCBFcnJvciBfIC0+IGZhbHNlXG5cbmxldCBwcF9nZXRfbWFyZ2luIHN0YXRlICgpID0gc3RhdGUucHBfbWFyZ2luXG5cbmxldCBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIHBwX3NldF9tYXJnaW4gc3RhdGUgbWFyZ2luO1xuICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBtYXhfaW5kZW50O1xuICAoKVxuXG5sZXQgcHBfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBtc2cgLT5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJGb3JtYXQucHBfc2V0X2dlb21ldHJ5OiBcIiBeIG1zZykpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfc2FmZV9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIF9tc2cgLT5cbiAgICAgKClcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgPVxuICB7IG1hcmdpbiA9IHBwX2dldF9tYXJnaW4gc3RhdGUgKCk7IG1heF9pbmRlbnQgPSBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSB9XG5cbmxldCBwcF91cGRhdGVfZ2VvbWV0cnkgc3RhdGUgdXBkYXRlID1cbiAgbGV0IGdlb21ldHJ5ID0gcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpIGluXG4gIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlICh1cGRhdGUgZ2VvbWV0cnkpXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUge1xuICAgICAgb3V0X3N0cmluZyA9IGY7XG4gICAgICBvdXRfZmx1c2ggPSBnO1xuICAgICAgb3V0X25ld2xpbmUgPSBoO1xuICAgICAgb3V0X3NwYWNlcyA9IGk7XG4gICAgICBvdXRfaW5kZW50ID0gajtcbiAgICB9ID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGpcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgb3V0X3N0cmluZyA9IHN0YXRlLnBwX291dF9zdHJpbmc7XG4gIG91dF9mbHVzaCA9IHN0YXRlLnBwX291dF9mbHVzaDtcbiAgb3V0X25ld2xpbmUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZTtcbiAgb3V0X3NwYWNlcyA9IHN0YXRlLnBwX291dF9zcGFjZXM7XG4gIG91dF9pbmRlbnQgPSBzdGF0ZS5wcF9vdXRfaW5kZW50O1xufVxuXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgc3RyaW5nIG91dHB1dCBhbmQgZmx1c2ggZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSBmIGcgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIGY7IHN0YXRlLnBwX291dF9mbHVzaCA8LSBnXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgKCkgPVxuICAoc3RhdGUucHBfb3V0X3N0cmluZywgc3RhdGUucHBfb3V0X2ZsdXNoKVxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9uZXdsaW5lIHN0YXRlICgpID0gc3RhdGUucHBfb3V0X3N0cmluZyBcIlxcblwiIDAgIDFcblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IHNwYWNlcy4gKilcbmxldCBibGFua19saW5lID0gU3RyaW5nLm1ha2UgODAgJyAnXG5sZXQgcmVjIGRpc3BsYXlfYmxhbmtzIHN0YXRlIG4gPVxuICBpZiBuID4gMCB0aGVuXG4gIGlmIG4gPD0gODAgdGhlbiBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCBuIGVsc2VcbiAgYmVnaW5cbiAgICBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCA4MDtcbiAgICBkaXNwbGF5X2JsYW5rcyBzdGF0ZSAobiAtIDgwKVxuICBlbmRcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfaW5kZW50ID0gZGlzcGxheV9ibGFua3NcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zIGFzIHByaW50aW5nIHRvIGEgZ2l2ZW5cbiAgIFtQZXJ2YXNpdmUub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgc3RhdGUgb2MgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIG91dHB1dF9zdWJzdHJpbmcgb2M7XG4gIHN0YXRlLnBwX291dF9mbHVzaCA8LSAoZnVuICgpIC0+IGZsdXNoIG9jKTtcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHN0YXRlXG5cbigqXG5cbiAgRGVmaW5pbmcgc3BlY2lmaWMgZm9ybWF0dGVyc1xuXG4qKVxuXG5sZXQgZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8XCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcbmxldCBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8L1wiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5cbmxldCBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnID0gaWdub3JlXG5sZXQgZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWcgPSBpZ25vcmVcblxuKCogQnVpbGRpbmcgYSBmb3JtYXR0ZXIgZ2l2ZW4gaXRzIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuXG4gICBPdGhlciBmaWVsZHMgZ2V0IHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZXMuICopXG5sZXQgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqID1cbiAgKCogVGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGZvcm1hdHRlciBjb250YWlucyBhIGR1bW15IGJveC4gKilcbiAgbGV0IHBwX3F1ZXVlID0gUXVldWUuY3JlYXRlICgpIGluXG4gIGxldCBzeXNfdG9rID1cbiAgICB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfYmVnaW4gKDAsIFBwX2hvdmJveCk7IGxlbmd0aCA9IDAgfSBpblxuICBRdWV1ZS5hZGQgc3lzX3RvayBwcF9xdWV1ZTtcbiAgbGV0IHNjYW5fc3RhY2sgPSBTdGFjay5jcmVhdGUgKCkgaW5cbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHNjYW5fc3RhY2s7XG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gMTsgcXVldWVfZWxlbSA9IHN5c190b2sgfSBzY2FuX3N0YWNrO1xuICBsZXQgcHBfbWFyZ2luID0gNzhcbiAgYW5kIHBwX21pbl9zcGFjZV9sZWZ0ID0gMTAgaW5cbiAge1xuICAgIHBwX3NjYW5fc3RhY2sgPSBzY2FuX3N0YWNrO1xuICAgIHBwX2Zvcm1hdF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90Ym94X3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX3RhZ19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJrX3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX21hcmdpbiA9IHBwX21hcmdpbjtcbiAgICBwcF9taW5fc3BhY2VfbGVmdCA9IHBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luO1xuICAgIHBwX2N1cnJlbnRfaW5kZW50ID0gMDtcbiAgICBwcF9pc19uZXdfbGluZSA9IHRydWU7XG4gICAgcHBfbGVmdF90b3RhbCA9IDE7XG4gICAgcHBfcmlnaHRfdG90YWwgPSAxO1xuICAgIHBwX2N1cnJfZGVwdGggPSAxO1xuICAgIHBwX21heF9ib3hlcyA9IG1heF9pbnQ7XG4gICAgcHBfZWxsaXBzaXMgPSBcIi5cIjtcbiAgICBwcF9vdXRfc3RyaW5nID0gZjtcbiAgICBwcF9vdXRfZmx1c2ggPSBnO1xuICAgIHBwX291dF9uZXdsaW5lID0gaDtcbiAgICBwcF9vdXRfc3BhY2VzID0gaTtcbiAgICBwcF9vdXRfaW5kZW50ID0gajtcbiAgICBwcF9wcmludF90YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya190YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya19vcGVuX3RhZyA9IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZztcbiAgICBwcF9tYXJrX2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWc7XG4gICAgcHBfcHJpbnRfb3Blbl90YWcgPSBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnO1xuICAgIHBwX3ByaW50X2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnO1xuICAgIHBwX3F1ZXVlID0gcHBfcXVldWU7XG4gIH1cblxuXG4oKiBCdWlsZCBhIGZvcm1hdHRlciBvdXQgb2YgaXRzIG91dCBmdW5jdGlvbnMuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMgb3V0X2Z1bnMgPVxuICBwcF9tYWtlX2Zvcm1hdHRlclxuICAgIG91dF9mdW5zLm91dF9zdHJpbmdcbiAgICBvdXRfZnVucy5vdXRfZmx1c2hcbiAgICBvdXRfZnVucy5vdXRfbmV3bGluZVxuICAgIG91dF9mdW5zLm91dF9zcGFjZXNcbiAgICBvdXRfZnVucy5vdXRfaW5kZW50XG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3aXRoIGRlZmF1bHQgZnVuY3Rpb25zIHRvIG91dHB1dCBzcGFjZXMsXG4gIGluZGVudGF0aW9uLCBhbmQgbmV3IGxpbmVzLiAqKVxubGV0IG1ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCA9XG4gIGxldCBwcGYgPSBwcF9tYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggaWdub3JlIGlnbm9yZSBpZ25vcmUgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBwcGZcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbUGVydmFzaXZlLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgPVxuICBtYWtlX2Zvcm1hdHRlciAob3V0cHV0X3N1YnN0cmluZyBvYykgKGZ1biAoKSAtPiBmbHVzaCBvYylcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbQnVmZmVyLnRdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9idWZmZXIgYiA9XG4gIG1ha2VfZm9ybWF0dGVyIChCdWZmZXIuYWRkX3N1YnN0cmluZyBiKSBpZ25vcmVcblxuXG4oKiBBbGxvY2F0aW5nIGJ1ZmZlciBmb3IgcHJldHR5LXByaW50aW5nIHB1cnBvc2VzLlxuICAgRGVmYXVsdCBidWZmZXIgc2l6ZSBpcyBwcF9idWZmZXJfc2l6ZSBvciA1MTIuXG4qKVxubGV0IHBwX2J1ZmZlcl9zaXplID0gNTEyXG5sZXQgcHBfbWFrZV9idWZmZXIgKCkgPSBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplXG5cbigqIFRoZSBzdGFuZGFyZCAoc2hhcmVkKSBidWZmZXIuICopXG5sZXQgc3RkYnVmID0gcHBfbWFrZV9idWZmZXIgKClcblxuKCogUHJlZGVmaW5lZCBmb3JtYXR0ZXJzIHN0YW5kYXJkIGZvcm1hdHRlciB0byBwcmludFxuICAgdG8gW1N0ZGxpYi5zdGRvdXRdLCBbU3RkbGliLnN0ZGVycl0sIGFuZCB7IXN0ZGJ1Zn0uICopXG5sZXQgc3RkX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3Rkb3V0XG5hbmQgZXJyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3RkZXJyXG5hbmQgc3RyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9idWZmZXIgc3RkYnVmXG5cblxuKCogW2ZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZl0gZmx1c2hlcyBmb3JtYXR0ZXIgW3BwZl0sXG4gICB0aGVuIHJldHVybnMgdGhlIGNvbnRlbnRzIG9mIGJ1ZmZlciBbYnVmXSB0aGF0IGlzIHJlc2V0LlxuICAgRm9ybWF0dGVyIFtwcGZdIGlzIHN1cHBvc2VkIHRvIHByaW50IHRvIGJ1ZmZlciBbYnVmXSwgb3RoZXJ3aXNlIHRoaXNcbiAgIGZ1bmN0aW9uIGlzIG5vdCByZWFsbHkgdXNlZnVsLiAqKVxubGV0IGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZiA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHBwZiBmYWxzZTtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIEJ1ZmZlci5yZXNldCBidWY7XG4gIHNcblxuXG4oKiBGbHVzaCBbc3RyX2Zvcm1hdHRlcl0gYW5kIGdldCB0aGUgY29udGVudHMgb2YgW3N0ZGJ1Zl0uICopXG5sZXQgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSA9IGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgc3RkYnVmIHN0cl9mb3JtYXR0ZXJcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nXG4qKVxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmcgaXMgcHJldHR5LXByaW50aW5nIHdpdGggbm8gbG93IGxldmVsIG91dHB1dC5cblxuICBXaGVuIHVzaW5nIGEgc3ltYm9saWMgZm9ybWF0dGVyLCBhbGwgcmVndWxhciBwcmV0dHktcHJpbnRpbmcgYWN0aXZpdGllc1xuICBvY2N1ciBidXQgb3V0cHV0IG1hdGVyaWFsIGlzIHN5bWJvbGljIGFuZCBzdG9yZWQgaW4gYSBidWZmZXIgb2Ygb3V0cHV0XG4gIGl0ZW1zLiBBdCB0aGUgZW5kIG9mIHByZXR0eS1wcmludGluZywgZmx1c2hpbmcgdGhlIG91dHB1dCBidWZmZXIgYWxsb3dzXG4gIHBvc3QtcHJvY2Vzc2luZyBvZiBzeW1ib2xpYyBvdXRwdXQgYmVmb3JlIGxvdyBsZXZlbCBvdXRwdXQgb3BlcmF0aW9ucy5cbiopXG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2l0ZW0gPVxuICB8IE91dHB1dF9mbHVzaFxuICB8IE91dHB1dF9uZXdsaW5lXG4gIHwgT3V0cHV0X3N0cmluZyBvZiBzdHJpbmdcbiAgfCBPdXRwdXRfc3BhY2VzIG9mIGludFxuICB8IE91dHB1dF9pbmRlbnQgb2YgaW50XG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2J1ZmZlciA9IHtcbiAgbXV0YWJsZSBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgOiBzeW1ib2xpY19vdXRwdXRfaXRlbSBsaXN0O1xufVxuXG5sZXQgbWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyICgpID1cbiAgeyBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgPSBbXSB9XG5cbmxldCBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gW11cblxubGV0IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIExpc3QucmV2IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IGl0ZW1zID0gZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iIGluXG4gIGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iO1xuICBpdGVtc1xuXG5sZXQgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBpdGVtID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBpdGVtIDo6IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBzeW1ib2xpY19mbHVzaCBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X2ZsdXNoXG4gIGFuZCBzeW1ib2xpY19uZXdsaW5lIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfbmV3bGluZVxuICBhbmQgc3ltYm9saWNfc3RyaW5nIHNvYiBzIGkgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3N0cmluZyAoU3RyaW5nLnN1YiBzIGkgbikpXG4gIGFuZCBzeW1ib2xpY19zcGFjZXMgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zcGFjZXMgbilcbiAgYW5kIHN5bWJvbGljX2luZGVudCBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X2luZGVudCBuKSBpblxuXG4gIGxldCBmID0gc3ltYm9saWNfc3RyaW5nIHNvYlxuICBhbmQgZyA9IHN5bWJvbGljX2ZsdXNoIHNvYlxuICBhbmQgaCA9IHN5bWJvbGljX25ld2xpbmUgc29iXG4gIGFuZCBpID0gc3ltYm9saWNfc3BhY2VzIHNvYlxuICBhbmQgaiA9IHN5bWJvbGljX2luZGVudCBzb2IgaW5cbiAgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqXG5cbigqXG5cbiAgQmFzaWMgZnVuY3Rpb25zIG9uIHRoZSAnc3RhbmRhcmQnIGZvcm1hdHRlclxuICAodGhlIGZvcm1hdHRlciB0aGF0IHByaW50cyB0byBbU3RkbGliLnN0ZG91dF0pLlxuXG4qKVxuXG5sZXQgb3Blbl9oYm94ID0gcHBfb3Blbl9oYm94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX3Zib3ggPSBwcF9vcGVuX3Zib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5faHZib3ggPSBwcF9vcGVuX2h2Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX2hvdmJveCA9IHBwX29wZW5faG92Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX2JveCA9IHBwX29wZW5fYm94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV9ib3ggPSBwcF9jbG9zZV9ib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fdGFnID0gcHBfb3Blbl90YWcgc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX3RhZyA9IHBwX2Nsb3NlX3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9zdGFnID0gcHBfb3Blbl9zdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV9zdGFnID0gcHBfY2xvc2Vfc3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYXMgPSBwcF9wcmludF9hcyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfc3RyaW5nID0gcHBfcHJpbnRfc3RyaW5nIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9ieXRlcyA9IHBwX3ByaW50X2J5dGVzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9pbnQgPSBwcF9wcmludF9pbnQgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2Zsb2F0ID0gcHBfcHJpbnRfZmxvYXQgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2NoYXIgPSBwcF9wcmludF9jaGFyIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9ib29sID0gcHBfcHJpbnRfYm9vbCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYnJlYWsgPSBwcF9wcmludF9icmVhayBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfY3V0ID0gcHBfcHJpbnRfY3V0IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9zcGFjZSA9IHBwX3ByaW50X3NwYWNlIHN0ZF9mb3JtYXR0ZXJcbmFuZCBmb3JjZV9uZXdsaW5lID0gcHBfZm9yY2VfbmV3bGluZSBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfZmx1c2ggPSBwcF9wcmludF9mbHVzaCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfbmV3bGluZSA9IHBwX3ByaW50X25ld2xpbmUgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2lmX25ld2xpbmUgPSBwcF9wcmludF9pZl9uZXdsaW5lIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIG9wZW5fdGJveCA9IHBwX29wZW5fdGJveCBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2VfdGJveCA9IHBwX2Nsb3NlX3Rib3ggc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3RicmVhayA9IHBwX3ByaW50X3RicmVhayBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfdGFiID0gcHBfc2V0X3RhYiBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfdGFiID0gcHBfcHJpbnRfdGFiIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9tYXJnaW4gPSBwcF9zZXRfbWFyZ2luIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWFyZ2luID0gcHBfZ2V0X21hcmdpbiBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfbWF4X2luZGVudCA9IHBwX3NldF9tYXhfaW5kZW50IHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWF4X2luZGVudCA9IHBwX2dldF9tYXhfaW5kZW50IHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9nZW9tZXRyeSA9IHBwX3NldF9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5hbmQgc2FmZV9zZXRfZ2VvbWV0cnkgPSBwcF9zYWZlX3NldF9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2dlb21ldHJ5ID0gcHBfZ2V0X2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcbmFuZCB1cGRhdGVfZ2VvbWV0cnkgPSBwcF91cGRhdGVfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X21heF9ib3hlcyA9IHBwX3NldF9tYXhfYm94ZXMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXhfYm94ZXMgPSBwcF9nZXRfbWF4X2JveGVzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBvdmVyX21heF9ib3hlcyA9IHBwX292ZXJfbWF4X2JveGVzIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9lbGxpcHNpc190ZXh0ID0gcHBfc2V0X2VsbGlwc2lzX3RleHQgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9lbGxpcHNpc190ZXh0ID0gcHBfZ2V0X2VsbGlwc2lzX3RleHQgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBzZXRfcHJpbnRfdGFncyA9XG4gIHBwX3NldF9wcmludF90YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfcHJpbnRfdGFncyA9XG4gIHBwX2dldF9wcmludF90YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBzZXRfbWFya190YWdzID1cbiAgcHBfc2V0X21hcmtfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21hcmtfdGFncyA9XG4gIHBwX2dldF9tYXJrX3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIHNldF90YWdzID1cbiAgcHBfc2V0X3RhZ3Mgc3RkX2Zvcm1hdHRlclxuXG5cbigqIENvbnZlbmllbmNlIGZ1bmN0aW9ucyAqKVxuXG4oKiBUbyBmb3JtYXQgYSBsaXN0ICopXG5sZXQgcmVjIHBwX3ByaW50X2xpc3QgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IFt2XSAtPiBwcF92IHBwZiB2XG4gIHwgdiA6OiB2cyAtPlxuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF9wcmludF9saXN0IH5wcF9zZXAgcHBfdiBwcGYgdnNcblxuKCogVG8gZm9ybWF0IGEgc2VxdWVuY2UgKilcbmxldCByZWMgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBTZXEuTmlsIC0+ICgpXG4gIHwgU2VxLkNvbnMgKHYsIHNlcSkgLT5cbiAgICBwcF9zZXAgcHBmICgpO1xuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxXG5cbmxldCBwcF9wcmludF9zZXEgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiAoKVxuICB8IFNlcS5Db25zICh2LCBzZXEpIC0+XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXFcblxuKCogVG8gZm9ybWF0IGZyZWUtZmxvd2luZyB0ZXh0ICopXG5sZXQgcHBfcHJpbnRfdGV4dCBwcGYgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGxlZnQgPSByZWYgMCBpblxuICBsZXQgcmlnaHQgPSByZWYgMCBpblxuICBsZXQgZmx1c2ggKCkgPVxuICAgIHBwX3ByaW50X3N0cmluZyBwcGYgKFN0cmluZy5zdWIgcyAhbGVmdCAoIXJpZ2h0IC0gIWxlZnQpKTtcbiAgICBpbmNyIHJpZ2h0OyBsZWZ0IDo9ICFyaWdodDtcbiAgaW5cbiAgd2hpbGUgKCFyaWdodCA8PiBsZW4pIGRvXG4gICAgbWF0Y2ggcy5bIXJpZ2h0XSB3aXRoXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGZsdXNoICgpO1xuICAgICAgICBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICAgICAgfCAnICcgLT5cbiAgICAgICAgZmx1c2ggKCk7IHBwX3ByaW50X3NwYWNlIHBwZiAoKVxuICAgICAgKCogdGhlcmUgaXMgbm8gc3BlY2lmaWMgc3VwcG9ydCBmb3IgJ1xcdCdcbiAgICAgICAgIGFzIGl0IGlzIHVuY2xlYXIgd2hhdCBhIHJpZ2h0IHNlbWFudGljcyB3b3VsZCBiZSAqKVxuICAgICAgfCBfIC0+IGluY3IgcmlnaHRcbiAgZG9uZTtcbiAgaWYgIWxlZnQgPD4gbGVuIHRoZW4gZmx1c2ggKClcblxubGV0IHBwX3ByaW50X29wdGlvbiA/KG5vbmUgPSBmdW4gXyAoKSAtPiAoKSkgcHBfdiBwcGYgPSBmdW5jdGlvblxufCBOb25lIC0+IG5vbmUgcHBmICgpXG58IFNvbWUgdiAtPiBwcF92IHBwZiB2XG5cbmxldCBwcF9wcmludF9yZXN1bHQgfm9rIH5lcnJvciBwcGYgPSBmdW5jdGlvblxufCBPayB2IC0+IG9rIHBwZiB2XG58IEVycm9yIGUgLT4gZXJyb3IgcHBmIGVcblxubGV0IHBwX3ByaW50X2VpdGhlciB+bGVmdCB+cmlnaHQgcHBmID0gZnVuY3Rpb25cbnwgRWl0aGVyLkxlZnQgbCAtPiBsZWZ0IHBwZiBsXG58IEVpdGhlci5SaWdodCByIC0+IHJpZ2h0IHBwZiByXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBjb21wdXRlX3RhZyBvdXRwdXQgdGFnX2FjYyA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDE2IGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICBvdXRwdXQgcHBmIHRhZ19hY2M7XG4gIHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgbGV0IGxlbiA9IEJ1ZmZlci5sZW5ndGggYnVmIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBCdWZmZXIuY29udGVudHMgYnVmXG4gIGVsc2UgQnVmZmVyLnN1YiBidWYgMSAobGVuIC0gMilcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gIERlZmluaW5nIGNvbnRpbnVhdGlvbnMgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50cyBvZlxuICBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuXG5cbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBJbnRlcnByZXQgYSBmb3JtYXR0aW5nIGVudGl0eSBvbiBhIGZvcm1hdHRlci4gKilcbmxldCBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGZtdGluZ19saXQgPSBtYXRjaCBmbXRpbmdfbGl0IHdpdGhcbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX2JveCBwcGYgKClcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX3RhZyBwcGYgKClcbiAgfCBCcmVhayAoXywgd2lkdGgsIG9mZnNldCkgIC0+IHBwX3ByaW50X2JyZWFrIHBwZiB3aWR0aCBvZmZzZXRcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2ZsdXNoIHBwZiAoKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX3ByaW50X25ld2xpbmUgcHBmICgpXG4gIHwgTWFnaWNfc2l6ZSAoXywgXykgICAgICAgICAtPiAoKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnJSdcbiAgfCBTY2FuX2luZGljIGMgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJzsgcHBfcHJpbnRfY2hhciBwcGYgY1xuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYub3V0cHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBmIHBwZjtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYuYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBzdHJwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19kZWxheSAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKGYgKCkpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIChmICgpKTtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqXG5cbiAgRGVmaW5pbmcgW2ZwcmludGZdIGFuZCB2YXJpb3VzIGZsYXZvcnMgb2YgW2ZwcmludGZdLlxuXG4qKVxuXG5sZXQga2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgcHBmIGFjYzsgayBwcGYpXG4gICAgRW5kX29mX2FjYyBmbXRcblxuYW5kIGlrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBrIHBwZiBmbXRcblxubGV0IGlmcHJpbnRmIF9wcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgaWdub3JlICgpIGZtdFxuXG5sZXQgZnByaW50ZiBwcGYgPSBrZnByaW50ZiBpZ25vcmUgcHBmXG5sZXQgcHJpbnRmIGZtdCA9IGZwcmludGYgc3RkX2Zvcm1hdHRlciBmbXRcbmxldCBlcHJpbnRmIGZtdCA9IGZwcmludGYgZXJyX2Zvcm1hdHRlciBmbXRcblxubGV0IGtkcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IGsgKGZ1biBwcGYgLT4gb3V0cHV0X2FjYyBwcGYgYWNjKSlcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgZHByaW50ZiBmbXQgPSBrZHByaW50ZiAoZnVuIGkgLT4gaSkgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgc3RycHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiBpZCBmbXRcblxubGV0IGthc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgb3V0cHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgYXNwcmludGYgZm10ID0ga2FzcHJpbnRmIGlkIGZtdFxuXG4oKiBGbHVzaGluZyBzdGFuZGFyZCBmb3JtYXR0ZXJzIGF0IGVuZCBvZiBleGVjdXRpb24uICopXG5cbmxldCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpID1cbiAgcHBfcHJpbnRfZmx1c2ggc3RkX2Zvcm1hdHRlciAoKTtcbiAgcHBfcHJpbnRfZmx1c2ggZXJyX2Zvcm1hdHRlciAoKVxuXG5sZXQgKCkgPSBhdF9leGl0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnNcblxuKCpcblxuICBEZXByZWNhdGVkIHN0dWZmLlxuXG4qKVxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgcHBfc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZVxuICAgIH5vdXQ6ZiB+Zmx1c2g6ZyB+bmV3bGluZTpoIH5zcGFjZXM6aSA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSBmIGc7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGg7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gaVxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgcHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9XG4gIChzdGF0ZS5wcF9vdXRfc3RyaW5nLCBzdGF0ZS5wcF9vdXRfZmx1c2gsXG4gICBzdGF0ZS5wcF9vdXRfbmV3bGluZSwgc3RhdGUucHBfb3V0X3NwYWNlcylcblxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBnZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cblxuKCogRGVwcmVjYXRlZCA6IGVycm9yIHByb25lIGZ1bmN0aW9uLCBkbyBub3QgdXNlIGl0LlxuICAgVGhpcyBmdW5jdGlvbiBpcyBuZWl0aGVyIGNvbXBvc2l0aW9uYWwgbm9yIGluY3JlbWVudGFsLCBzaW5jZSBpdCBmbHVzaGVzXG4gICB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUgYXQgZWFjaCBjYWxsLlxuICAgVG8gZ2V0IHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHksIGRlZmluZSBhIGZvcm1hdHRlciBvZiB5b3VyIG93biB3cml0aW5nIHRvXG4gICB0aGUgYnVmZmVyIGFyZ3VtZW50LCBhcyBpblxuICAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYlxuICAgdGhlbiB1c2UgeyFmcHJpbnRmIHBwZn0gYXMgdXN1YWwuICopXG5sZXQgYnByaW50ZiBiIChGb3JtYXQgKGZtdCwgXykgOiAoJ2EsIGZvcm1hdHRlciwgdW5pdCkgZm9ybWF0KSA9XG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID0gb3V0cHV0X2FjYyBwcGYgYWNjOyBwcF9mbHVzaF9xdWV1ZSBwcGYgZmFsc2UgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbigqIERlcHJlY2F0ZWQgOiBhbGlhcyBmb3Iga3NwcmludGYuICopXG5sZXQga3ByaW50ZiA9IGtzcHJpbnRmXG5cblxuXG4oKiBEZXByZWNhdGVkIHRhZyBmdW5jdGlvbnMgKilcblxudHlwZSBmb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3RhZyA6IHRhZyAtPiBzdHJpbmc7XG4gIG1hcmtfY2xvc2VfdGFnIDogdGFnIC0+IHN0cmluZztcbiAgcHJpbnRfb3Blbl90YWcgOiB0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2VfdGFnIDogdGFnIC0+IHVuaXQ7XG59XG5cblxubGV0IHBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgIG1hcmtfb3Blbl90YWcgPSBtb3Q7XG4gICAgIG1hcmtfY2xvc2VfdGFnID0gbWN0O1xuICAgICBwcmludF9vcGVuX3RhZyA9IHBvdDtcbiAgICAgcHJpbnRfY2xvc2VfdGFnID0gcGN0O1xuICAgfSA9XG4gIGxldCBzdHJpbmdpZnkgZiBlID0gZnVuY3Rpb24gU3RyaW5nX3RhZyBzIC0+IGYgcyB8IF8gLT4gZSBpblxuICBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIDwtIHN0cmluZ2lmeSBtb3QgXCJcIjtcbiAgc3RhdGUucHBfbWFya19jbG9zZV90YWcgPC0gc3RyaW5naWZ5IG1jdCBcIlwiO1xuICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyA8LSBzdHJpbmdpZnkgcG90ICgpO1xuICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgPC0gc3RyaW5naWZ5IHBjdCAoKVxuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIGZtdCAoKSA9XG4gIGxldCBmdW5zID0gcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBmbXQgKCkgaW5cbiAgbGV0IG1hcmtfb3Blbl90YWcgcyA9IGZ1bnMubWFya19vcGVuX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAgbGV0IG1hcmtfY2xvc2VfdGFnIHMgPSBmdW5zLm1hcmtfY2xvc2Vfc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICBsZXQgcHJpbnRfb3Blbl90YWcgcyA9IGZ1bnMucHJpbnRfb3Blbl9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIGxldCBwcmludF9jbG9zZV90YWcgcyA9IGZ1bnMucHJpbnRfY2xvc2Vfc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICB7bWFya19vcGVuX3RhZzsgbWFya19jbG9zZV90YWc7IHByaW50X29wZW5fdGFnOyBwcmludF9jbG9zZV90YWd9XG5cbmxldCBzZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBhbGlhcyB0byBhdm9pZCB3YXJuaW5nIGZvciBhbWJpZ3VpdHkgYmV0d2VlblxuICAgU3RkbGliLmZvcm1hdDZcbiAgIGFuZCBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuXG4gICAodGhlIGZvcm1lciBpcyBpbiBmYWN0IGFuIGFsaWFzIGZvciB0aGUgbGF0dGVyLFxuICAgIGJ1dCB0aGUgYW1iaWd1aXR5IHdhcm5pbmcgZG9lc24ndCBjYXJlKVxuKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgU3RkbGliLmZvcm1hdDZcblxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3Igc2Nhbm5lcnMuICopXG5cbigqIFNjYW5uaW5nIGJ1ZmZlcnMuICopXG5tb2R1bGUgdHlwZSBTQ0FOTklORyA9IHNpZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbFxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHZhbCBzdGRpbiA6IGluX2NoYW5uZWxcbiAgKCogVGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0uXG4gICAgIFtzdGRpYl0gaXMgZXF1aXZhbGVudCB0byBbU2Nhbm5pbmcuZnJvbV9jaGFubmVsIFN0ZGxpYi5zdGRpbl0uICopXG5cbiAgdmFsIHN0ZGliIDogaW5fY2hhbm5lbFxuICAoKiBBbiBhbGlhcyBmb3IgW1NjYW5mLnN0ZGluXSwgdGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb21cbiAgICAgW1N0ZGxpYi5zdGRpbl0uICopXG5cbiAgdmFsIG5leHRfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBbU2Nhbm5pbmcubmV4dF9jaGFyIGliXSBhZHZhbmNlIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIuXG4gICAgIElmIG5vIG1vcmUgY2hhcmFjdGVyIGNhbiBiZSByZWFkLCBzZXRzIGEgZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGludmFsaWRhdGVfY3VycmVudF9jaGFyIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYl0gbWFyayB0aGUgY3VycmVudF9jaGFyIGFzIGFscmVhZHlcbiAgICAgc2Nhbm5lZC4gKilcblxuICB2YWwgcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5wZWVrX2NoYXIgaWJdIHJldHVybnMgdGhlIGN1cnJlbnQgY2hhciBhdmFpbGFibGUgaW5cbiAgICAgdGhlIGJ1ZmZlciBvciByZWFkcyBvbmUgaWYgbmVjZXNzYXJ5ICh3aGVuIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpc1xuICAgICBhbHJlYWR5IHNjYW5uZWQpLlxuICAgICBJZiBubyBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYW4gZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGNoZWNrZWRfcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFNhbWUgYXMgW1NjYW5uaW5nLnBlZWtfY2hhcl0gYWJvdmUgYnV0IGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgY2hhciBvclxuICAgICBmYWlsczogaW5zdGVhZCBvZiByZXR1cm5pbmcgYSBudWxsIGNoYXIgd2hlbiB0aGUgcmVhZGluZyBtZXRob2Qgb2YgdGhlXG4gICAgIGlucHV0IGJ1ZmZlciBoYXMgcmVhY2hlZCBhbiBlbmQgb2YgZmlsZSwgdGhlIGZ1bmN0aW9uIHJhaXNlcyBleGNlcHRpb25cbiAgICAgW0VuZF9vZl9maWxlXS4gKilcblxuICB2YWwgc3RvcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGNoYXIgLT4gaW50XG4gICgqIFtTY2FubmluZy5zdG9yZV9jaGFyIGxpbSBpYiBjXSBhZGRzIFtjXSB0byB0aGUgdG9rZW4gYnVmZmVyXG4gICAgIG9mIHRoZSBzY2FubmluZyBidWZmZXIgW2liXS4gSXQgYWxzbyBhZHZhbmNlcyB0aGUgc2Nhbm5pbmcgYnVmZmVyIGZvclxuICAgICBvbmUgY2hhcmFjdGVyIGFuZCByZXR1cm5zIFtsaW0gLSAxXSwgaW5kaWNhdGluZyB0aGUgbmV3IGxpbWl0IGZvciB0aGVcbiAgICAgbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuLiAqKVxuXG4gIHZhbCBza2lwX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnNraXBfY2hhciBsaW0gaWJdIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLiAqKVxuXG4gIHZhbCBpZ25vcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuaWdub3JlX2NoYXIgaWIgbGltXSBpZ25vcmVzIHRoZSBjdXJyZW50IGNoYXJhY3RlciBhbmRcbiAgICAgZGVjcmVtZW50cyB0aGUgbGltaXQuICopXG5cbiAgdmFsIHRva2VuIDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLnRva2VuIGliXSByZXR1cm5zIHRoZSBzdHJpbmcgc3RvcmVkIGludG8gdGhlIHRva2VuXG4gICAgIGJ1ZmZlciBvZiB0aGUgc2Nhbm5pbmcgYnVmZmVyOiBpdCByZXR1cm5zIHRoZSB0b2tlbiBtYXRjaGVkIGJ5IHRoZVxuICAgICBmb3JtYXQuICopXG5cbiAgdmFsIHJlc2V0X3Rva2VuIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5yZXNldF90b2tlbiBpYl0gcmVzZXRzIHRoZSB0b2tlbiBidWZmZXIgb2ZcbiAgICAgdGhlIGdpdmVuIHNjYW5uaW5nIGJ1ZmZlci4gKilcblxuICB2YWwgY2hhcl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5jaGFyX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVyc1xuICAgICByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGxpbmVfY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcubGluZV9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIG5ldyBsaW5lXG4gICAgIGNoYXJhY3RlcnMgcmVhZCBzbyBmYXIgZnJvbSB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCB0b2tlbl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy50b2tlbl9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRva2VucyByZWFkXG4gICAgIHNvIGZhciBmcm9tIFtpYl0uICopXG5cbiAgdmFsIGVvZiA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW9mIGliXSByZXR1cm5zIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGVuZF9vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgZW5kIG9mIGlucHV0IGNvbmRpdGlvblxuICAgICBvZiB0aGUgZ2l2ZW4gYnVmZmVyIChpZiBubyBjaGFyIGhhcyBldmVyIGJlZW4gcmVhZCwgYW4gYXR0ZW1wdCB0b1xuICAgICByZWFkIG9uZSBpcyBwZXJmb3JtZWQpLiAqKVxuXG4gIHZhbCBiZWdpbm5pbmdfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmJlZ2lubmluZ19vZl9pbnB1dCBpYl0gdGVzdHMgdGhlIGJlZ2lubmluZyBvZiBpbnB1dFxuICAgICBjb25kaXRpb24gb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbmFtZV9vZl9pbnB1dCA6IHNjYW5idWYgLT4gc3RyaW5nXG4gICgqIFtTY2FubmluZy5uYW1lX29mX2lucHV0IGliXSByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBjaGFyYWN0ZXJcbiAgICAgc291cmNlIGZvciBpbnB1dCBidWZmZXIgW2liXS4gKilcblxuICB2YWwgb3Blbl9pbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBvcGVuX2luX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGUgOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9maWxlX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX3N0cmluZyA6IHN0cmluZyAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2Z1bmN0aW9uIDogKHVuaXQgLT4gY2hhcikgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9jaGFubmVsIDogU3RkbGliLmluX2NoYW5uZWwgLT4gaW5fY2hhbm5lbFxuXG4gIHZhbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdFxuXG4gIHZhbCBtZW1vX2Zyb21fY2hhbm5lbCA6IFN0ZGxpYi5pbl9jaGFubmVsIC0+IGluX2NoYW5uZWxcbiAgKCogT2Jzb2xldGUuICopXG5cbmVuZFxuXG5cbm1vZHVsZSBTY2FubmluZyA6IFNDQU5OSU5HID0gc3RydWN0XG5cbiAgKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5mLiAqKVxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdHlwZSBpbl9jaGFubmVsX25hbWUgPVxuICAgIHwgRnJvbV9jaGFubmVsIG9mIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2ZpbGUgb2YgZmlsZV9uYW1lICogU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZnVuY3Rpb25cbiAgICB8IEZyb21fc3RyaW5nXG5cblxuICB0eXBlIGluX2NoYW5uZWwgPSB7XG4gICAgbXV0YWJsZSBpY19lb2YgOiBib29sO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyIDogY2hhcjtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jaGFyX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfbGluZV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX3Rva2VuX2NvdW50IDogaW50O1xuICAgIGljX2dldF9uZXh0X2NoYXIgOiB1bml0IC0+IGNoYXI7XG4gICAgaWNfdG9rZW5fYnVmZmVyIDogQnVmZmVyLnQ7XG4gICAgaWNfaW5wdXRfbmFtZSA6IGluX2NoYW5uZWxfbmFtZTtcbiAgfVxuXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIGxldCBudWxsX2NoYXIgPSAnXFwwMDAnXG5cbiAgKCogUmVhZHMgYSBuZXcgY2hhcmFjdGVyIGZyb20gaW5wdXQgYnVmZmVyLlxuICAgICBOZXh0X2NoYXIgbmV2ZXIgZmFpbHMsIGV2ZW4gaW4gY2FzZSBvZiBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IHRoZW4gc2ltcGx5IHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbi4gKilcbiAgbGV0IG5leHRfY2hhciBpYiA9XG4gICAgdHJ5XG4gICAgICBsZXQgYyA9IGliLmljX2dldF9uZXh0X2NoYXIgKCkgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIHRydWU7XG4gICAgICBpYi5pY19jaGFyX2NvdW50IDwtIHN1Y2MgaWIuaWNfY2hhcl9jb3VudDtcbiAgICAgIGlmIGMgPSAnXFxuJyB0aGVuIGliLmljX2xpbmVfY291bnQgPC0gc3VjYyBpYi5pY19saW5lX2NvdW50O1xuICAgICAgYyB3aXRoXG4gICAgfCBFbmRfb2ZfZmlsZSAtPlxuICAgICAgbGV0IGMgPSBudWxsX2NoYXIgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlO1xuICAgICAgaWIuaWNfZW9mIDwtIHRydWU7XG4gICAgICBjXG5cblxuICBsZXQgcGVla19jaGFyIGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2N1cnJlbnRfY2hhclxuICAgIGVsc2UgbmV4dF9jaGFyIGliXG5cblxuICAoKiBSZXR1cm5zIGEgdmFsaWQgY3VycmVudCBjaGFyIGZvciB0aGUgaW5wdXQgYnVmZmVyLiBJbiBwYXJ0aWN1bGFyXG4gICAgIG5vIGlycmVsZXZhbnQgbnVsbCBjaGFyYWN0ZXIgKGFzIHNldCBieSBbbmV4dF9jaGFyXSBpbiBjYXNlIG9mIGVuZFxuICAgICBvZiBpbnB1dCkgaXMgcmV0dXJuZWQsIHNpbmNlIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW5cbiAgICAgW25leHRfY2hhcl0gc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uIHdoaWxlIHRyeWluZyB0byByZWFkIGFcbiAgICAgbmV3IGNoYXJhY3Rlci4gKilcbiAgbGV0IGNoZWNrZWRfcGVla19jaGFyIGliID1cbiAgICBsZXQgYyA9IHBlZWtfY2hhciBpYiBpblxuICAgIGlmIGliLmljX2VvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAgIGNcblxuXG4gIGxldCBlbmRfb2ZfaW5wdXQgaWIgPVxuICAgIGlnbm9yZSAocGVla19jaGFyIGliKTtcbiAgICBpYi5pY19lb2ZcblxuXG4gIGxldCBlb2YgaWIgPSBpYi5pY19lb2ZcblxuICBsZXQgYmVnaW5uaW5nX29mX2lucHV0IGliID0gaWIuaWNfY2hhcl9jb3VudCA9IDBcblxuICBsZXQgbmFtZV9vZl9pbnB1dCBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgX2ljIC0+IFwidW5uYW1lZCBTdGRsaWIgaW5wdXQgY2hhbm5lbFwiXG4gICAgfCBGcm9tX2ZpbGUgKGZuYW1lLCBfaWMpIC0+IGZuYW1lXG4gICAgfCBGcm9tX2Z1bmN0aW9uIC0+IFwidW5uYW1lZCBmdW5jdGlvblwiXG4gICAgfCBGcm9tX3N0cmluZyAtPiBcInVubmFtZWQgY2hhcmFjdGVyIHN0cmluZ1wiXG5cblxuICBsZXQgY2hhcl9jb3VudCBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jaGFyX2NvdW50IC0gMVxuICAgIGVsc2UgaWIuaWNfY2hhcl9jb3VudFxuXG5cbiAgbGV0IGxpbmVfY291bnQgaWIgPSBpYi5pY19saW5lX2NvdW50XG5cbiAgbGV0IHJlc2V0X3Rva2VuIGliID0gQnVmZmVyLnJlc2V0IGliLmljX3Rva2VuX2J1ZmZlclxuXG4gIGxldCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiA9IGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZVxuXG4gIGxldCB0b2tlbiBpYiA9XG4gICAgbGV0IHRva2VuX2J1ZmZlciA9IGliLmljX3Rva2VuX2J1ZmZlciBpblxuICAgIGxldCB0b2sgPSBCdWZmZXIuY29udGVudHMgdG9rZW5fYnVmZmVyIGluXG4gICAgQnVmZmVyLmNsZWFyIHRva2VuX2J1ZmZlcjtcbiAgICBpYi5pY190b2tlbl9jb3VudCA8LSBzdWNjIGliLmljX3Rva2VuX2NvdW50O1xuICAgIHRva1xuXG5cbiAgbGV0IHRva2VuX2NvdW50IGliID0gaWIuaWNfdG9rZW5fY291bnRcblxuICBsZXQgc2tpcF9jaGFyIHdpZHRoIGliID1cbiAgICBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjtcbiAgICB3aWR0aFxuXG5cbiAgbGV0IGlnbm9yZV9jaGFyIHdpZHRoIGliID0gc2tpcF9jaGFyICh3aWR0aCAtIDEpIGliXG5cbiAgbGV0IHN0b3JlX2NoYXIgd2lkdGggaWIgYyA9XG4gICAgQnVmZmVyLmFkZF9jaGFyIGliLmljX3Rva2VuX2J1ZmZlciBjO1xuICAgIGlnbm9yZV9jaGFyIHdpZHRoIGliXG5cblxuICBsZXQgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSA9IDEwMjRcblxuICBsZXQgY3JlYXRlIGluYW1lIG5leHQgPSB7XG4gICAgaWNfZW9mID0gZmFsc2U7XG4gICAgaWNfY3VycmVudF9jaGFyID0gbnVsbF9jaGFyO1xuICAgIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA9IGZhbHNlO1xuICAgIGljX2NoYXJfY291bnQgPSAwO1xuICAgIGljX2xpbmVfY291bnQgPSAwO1xuICAgIGljX3Rva2VuX2NvdW50ID0gMDtcbiAgICBpY19nZXRfbmV4dF9jaGFyID0gbmV4dDtcbiAgICBpY190b2tlbl9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemU7XG4gICAgaWNfaW5wdXRfbmFtZSA9IGluYW1lO1xuICB9XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgcyA9XG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA+PSBsZW4gdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlXG4gICAgICBsZXQgYyA9IHMuWyFpXSBpblxuICAgICAgaW5jciBpO1xuICAgICAgYyBpblxuICAgIGNyZWF0ZSBGcm9tX3N0cmluZyBuZXh0XG5cblxuICBsZXQgZnJvbV9mdW5jdGlvbiA9IGNyZWF0ZSBGcm9tX2Z1bmN0aW9uXG5cbiAgKCogU2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsLiAqKVxuXG4gICgqIFBvc2l0aW9uIG9mIHRoZSBwcm9ibGVtOlxuXG4gICAgIFdlIGNhbm5vdCBwcmV2ZW50IHRoZSBzY2FubmluZyBtZWNoYW5pc20gdG8gdXNlIG9uZSBsb29rYWhlYWQgY2hhcmFjdGVyLFxuICAgICBpZiBuZWVkZWQgYnkgdGhlIHNlbWFudGljcyBvZiB0aGUgZm9ybWF0IHN0cmluZyBzcGVjaWZpY2F0aW9ucyAoZS5nLiBhXG4gICAgIHRyYWlsaW5nICdza2lwIHNwYWNlJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtYXQgc3RyaW5nKTsgaW4gdGhpcyBjYXNlLFxuICAgICB0aGUgbWFuZGF0b3J5IGxvb2thaGVhZCBjaGFyYWN0ZXIgaXMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgaW5wdXQgYW5kIG5vdFxuICAgICB1c2VkIHRvIHJldHVybiB0aGUgdG9rZW4gcmVhZC4gSXQgaXMgdGh1cyBtYW5kYXRvcnkgdG8gYmUgYWJsZSB0byBzdG9yZVxuICAgICBhbiB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBzb21ld2hlcmUgdG8gZ2V0IGl0IGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXJcbiAgICAgb2YgdGhlIG5leHQgc2Nhbi5cblxuICAgICBUbyBjaXJjdW12ZW50IHRoaXMgcHJvYmxlbSwgYWxsIHRoZSBzY2FubmluZyBmdW5jdGlvbnMgZ2V0IGEgbG93IGxldmVsXG4gICAgIGlucHV0IGJ1ZmZlciBhcmd1bWVudCB3aGVyZSB0aGV5IHN0b3JlIHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyIHdoZW5cbiAgICAgbmVlZGVkOyBhZGRpdGlvbmFsbHksIHRoZSBpbnB1dCBidWZmZXIgaXMgdGhlIG9ubHkgc291cmNlIG9mIGNoYXJhY3RlciBvZlxuICAgICBhIHNjYW5uZXIuIFRoZSBbc2NhbmJ1Zl0gaW5wdXQgYnVmZmVycyBhcmUgZGVmaW5lZCBpbiBtb2R1bGUgeyFTY2FubmluZ30uXG5cbiAgICAgTm93IHdlIHVuZGVyc3RhbmQgdGhhdCBpdCBpcyBleHRyZW1lbHkgaW1wb3J0YW50IHRoYXQgcmVsYXRlZCBhbmRcbiAgICAgc3VjY2Vzc2l2ZSBjYWxscyB0byBzY2FubmVycyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBzYW1lIGlucHV0IGJ1ZmZlci5cbiAgICAgSW4gZWZmZWN0LCBpZiBhIHNjYW5uZXIgW3NjYW4xXSBpcyByZWFkaW5nIGZyb20gW2liMV0gYW5kIHN0b3JlcyBhblxuICAgICB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBbYzFdIGludG8gaXRzIGlucHV0IGJ1ZmZlciBbaWIxXSwgdGhlblxuICAgICBhbm90aGVyIHNjYW5uZXIgW3NjYW4yXSBub3QgcmVhZGluZyBmcm9tIHRoZSBzYW1lIGJ1ZmZlciBbaWIxXSB3aWxsIG1pc3NcbiAgICAgdGhlIGNoYXJhY3RlciBbYzFdLCBzZWVtaW5nbHkgdmFuaXNoZWQgaW4gdGhlIGFpciBmcm9tIHRoZSBwb2ludCBvZiB2aWV3XG4gICAgIG9mIFtzY2FuMl0uXG5cbiAgICAgVGhpcyBtZWNoYW5pc20gd29ya3MgcGVyZmVjdGx5IHRvIHJlYWQgZnJvbSBzdHJpbmdzLCBmcm9tIGZpbGVzLCBhbmQgZnJvbVxuICAgICBmdW5jdGlvbnMsIHNpbmNlIGluIHRob3NlIGNhc2VzLCBhbGxvY2F0aW5nIHR3byBidWZmZXJzIHJlYWRpbmcgZnJvbSB0aGVcbiAgICAgc2FtZSBzb3VyY2UgaXMgdW5uYXR1cmFsLlxuXG4gICAgIFN0aWxsLCB0aGVyZSBpcyBhIGRpZmZpY3VsdHkgaW4gdGhlIGNhc2Ugb2Ygc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dFxuICAgICBjaGFubmVsLiBJbiBlZmZlY3QsIHdoZW4gc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsIFtpY10sIHRoaXMgY2hhbm5lbFxuICAgICBtYXkgbm90IGhhdmUgYmVlbiBhbGxvY2F0ZWQgZnJvbSB3aXRoaW4gdGhpcyBsaWJyYXJ5LiBIZW5jZSwgaXQgbWF5IGJlXG4gICAgIHNoYXJlZCAodHdvIGZ1bmN0aW9ucyBvZiB0aGUgdXNlcidzIHByb2dyYW0gbWF5IHN1Y2Nlc3NpdmVseSByZWFkIGZyb21cbiAgICAgW2ljXSkuIFRoaXMgaXMgaGlnaGx5IGVycm9yIHByb25lIHNpbmNlLCBvbmUgb2YgdGhlIGZ1bmN0aW9uIG1heSBzZWVrIHRoZVxuICAgICBpbnB1dCBjaGFubmVsLCB3aGlsZSB0aGUgb3RoZXIgZnVuY3Rpb24gaGFzIHN0aWxsIGFuIHVudXNlZCBsb29rYWhlYWRcbiAgICAgY2hhcmFjdGVyIGluIGl0cyBpbnB1dCBidWZmZXIuIEluIGNvbmNsdXNpb24sIHlvdSBzaG91bGQgbmV2ZXIgbWl4IGRpcmVjdFxuICAgICBsb3cgbGV2ZWwgcmVhZGluZyBhbmQgaGlnaCBsZXZlbCBzY2FubmluZyBmcm9tIHRoZSBzYW1lIGlucHV0IGNoYW5uZWwuXG5cbiAgKilcblxuICAoKiBQZXJmb3JtIGJ1ZmZlcml6ZWQgaW5wdXQgdG8gaW1wcm92ZSBlZmZpY2llbmN5LiAqKVxuICBsZXQgZmlsZV9idWZmZXJfc2l6ZSA9IHJlZiAxMDI0XG5cbiAgKCogVGhlIHNjYW5uZXIgY2xvc2VzIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dC4gKilcbiAgbGV0IHNjYW5fY2xvc2VfYXRfZW5kIGljID0gU3RkbGliLmNsb3NlX2luIGljOyByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gICgqIFRoZSBzY2FubmVyIGRvZXMgbm90IGNsb3NlIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dDpcbiAgICAgaXQganVzdCByYWlzZXMgW0VuZF9vZl9maWxlXS4gKilcbiAgbGV0IHNjYW5fcmFpc2VfYXRfZW5kIF9pYyA9IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgbGV0IGZyb21faWMgc2Nhbl9jbG9zZV9pYyBpbmFtZSBpYyA9XG4gICAgbGV0IGxlbiA9ICFmaWxlX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxpbSA9IHJlZiAwIGluXG4gICAgbGV0IGVvZiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpIDwgIWxpbSB0aGVuIGJlZ2luIGxldCBjID0gQnl0ZXMuZ2V0IGJ1ZiAhaSBpbiBpbmNyIGk7IGMgZW5kIGVsc2VcbiAgICAgIGlmICFlb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlIGJlZ2luXG4gICAgICAgIGxpbSA6PSBpbnB1dCBpYyBidWYgMCBsZW47XG4gICAgICAgIGlmICFsaW0gPSAwIHRoZW4gYmVnaW4gZW9mIDo9IHRydWU7IHNjYW5fY2xvc2VfaWMgaWMgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBpIDo9IDE7XG4gICAgICAgICAgQnl0ZXMuZ2V0IGJ1ZiAwXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGluXG4gICAgY3JlYXRlIGluYW1lIG5leHRcblxuXG4gIGxldCBmcm9tX2ljX2Nsb3NlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9jbG9zZV9hdF9lbmRcbiAgbGV0IGZyb21faWNfcmFpc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLlxuICAgICBPbmUgY291bGQgdHJ5IHRvIGRlZmluZSBbc3RkaWJdIGFzIGEgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgYSBjaGFyYWN0ZXJcbiAgICAgYXQgYSB0aW1lIChubyBidWZmZXJpemF0aW9uIGF0IGFsbCksIGJ1dCB1bmZvcnR1bmF0ZWx5IHRoZSB0b3AtbGV2ZWxcbiAgICAgaW50ZXJhY3Rpb24gd291bGQgYmUgd3JvbmcuIFRoaXMgaXMgZHVlIHRvIHNvbWUga2luZCBvZlxuICAgICAncmFjZSBjb25kaXRpb24nIHdoZW4gcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLFxuICAgICBzaW5jZSB0aGUgaW50ZXJhY3RpdmUgY29tcGlsZXIgYW5kIFtTY2FuZi5zY2FuZl0gd2lsbCBzaW11bHRhbmVvdXNseVxuICAgICByZWFkIHRoZSBtYXRlcmlhbCB0aGV5IG5lZWQgZnJvbSBbU3RkbGliLnN0ZGluXTsgdGhlbiwgY29uZnVzaW9uXG4gICAgIHdpbGwgcmVzdWx0IGZyb20gd2hhdCBzaG91bGQgYmUgcmVhZCBieSB0aGUgdG9wLWxldmVsIGFuZCB3aGF0IHNob3VsZCBiZVxuICAgICByZWFkIGJ5IFtTY2FuZi5zY2FuZl0uXG4gICAgIFRoaXMgaXMgZXZlbiBtb3JlIGNvbXBsaWNhdGVkIGJ5IHRoZSBvbmUgY2hhcmFjdGVyIGxvb2thaGVhZCB0aGF0XG4gICAgIFtTY2FuZi5zY2FuZl0gaXMgc29tZXRpbWVzIG9ibGlnZWQgdG8gbWFpbnRhaW46IHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyXG4gICAgIHdpbGwgYmUgYXZhaWxhYmxlIGZvciB0aGUgbmV4dCBbU2NhbmYuc2NhbmZdIGVudHJ5LCBzZWVtaW5nbHkgY29taW5nIGZyb21cbiAgICAgbm93aGVyZS5cbiAgICAgQWxzbyBubyBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuIHJlYWRpbmcgZnJvbSBzdGRpbjogaWYgbm90IGVub3VnaFxuICAgICBjaGFyYWN0ZXJzIGhhdmUgYmVlbiByZWFkLCB3ZSBzaW1wbHkgYXNrIHRvIHJlYWQgbW9yZS4gKilcbiAgbGV0IHN0ZGluID1cbiAgICBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG4gICAgICAoRnJvbV9maWxlIChcIi1cIiwgU3RkbGliLnN0ZGluKSkgU3RkbGliLnN0ZGluXG5cblxuICBsZXQgc3RkaWIgPSBzdGRpblxuXG4gIGxldCBvcGVuX2luX2ZpbGUgb3Blbl9pbiBmbmFtZSA9XG4gICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgIHwgXCItXCIgLT4gc3RkaW5cbiAgICB8IGZuYW1lIC0+XG4gICAgICBsZXQgaWMgPSBvcGVuX2luIGZuYW1lIGluXG4gICAgICBmcm9tX2ljX2Nsb3NlX2F0X2VuZCAoRnJvbV9maWxlIChmbmFtZSwgaWMpKSBpY1xuXG5cbiAgbGV0IG9wZW5faW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5cbiAgbGV0IG9wZW5faW5fYmluID0gb3Blbl9pbl9maWxlIFN0ZGxpYi5vcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2ZpbGUgPSBvcGVuX2luXG4gIGxldCBmcm9tX2ZpbGVfYmluID0gb3Blbl9pbl9iaW5cblxuICBsZXQgZnJvbV9jaGFubmVsIGljID1cbiAgICBmcm9tX2ljX3JhaXNlX2F0X2VuZCAoRnJvbV9jaGFubmVsIGljKSBpY1xuXG5cbiAgbGV0IGNsb3NlX2luIGliID1cbiAgICBtYXRjaCBpYi5pY19pbnB1dF9uYW1lIHdpdGhcbiAgICB8IEZyb21fY2hhbm5lbCBpYyAtPlxuICAgICAgU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2ZpbGUgKF9mbmFtZSwgaWMpIC0+IFN0ZGxpYi5jbG9zZV9pbiBpY1xuICAgIHwgRnJvbV9mdW5jdGlvbiB8IEZyb21fc3RyaW5nIC0+ICgpXG5cblxuICAoKlxuICAgICBPYnNvbGV0ZTogYSBtZW1vIFtmcm9tX2NoYW5uZWxdIHZlcnNpb24gdG8gYnVpbGQgYSBbU2Nhbm5pbmcuaW5fY2hhbm5lbF1cbiAgICAgc2Nhbm5pbmcgYnVmZmVyIG91dCBvZiBhIFtTdGRsaWIuaW5fY2hhbm5lbF0uXG4gICAgIFRoaXMgZnVuY3Rpb24gd2FzIHVzZWQgdG8gdHJ5IHRvIHByZXNlcnZlIHRoZSBzY2FubmluZ1xuICAgICBzZW1hbnRpY3MgZm9yIHRoZSAobm93IG9ic29sZXRlKSBmdW5jdGlvbiBbZnNjYW5mXS5cbiAgICAgR2l2ZW4gdGhhdCBhbGwgc2Nhbm5lciBtdXN0IHJlYWQgZnJvbSBhIFtTY2FubmluZy5pbl9jaGFubmVsXSBzY2FubmluZ1xuICAgICBidWZmZXIsIFtmc2NhbmZdIG11c3QgcmVhZCBmcm9tIG9uZSFcbiAgICAgTW9yZSBwcmVjaXNlbHksIGdpdmVuIFtpY10sIGFsbCBzdWNjZXNzaXZlIGNhbGxzIFtmc2NhbmYgaWNdIG11c3QgcmVhZFxuICAgICBmcm9tIHRoZSBzYW1lIHNjYW5uaW5nIGJ1ZmZlci5cbiAgICAgVGhpcyBvYmxpZ2VkIHRoaXMgbGlicmFyeSB0byBhbGxvY2F0ZWQgc2Nhbm5pbmcgYnVmZmVycyB0aGF0IHdlcmVcbiAgICAgbm90IHByb3Blcmx5IGdhcmJhZ2UgY29sbGVjdGFibGUsIGhlbmNlIGxlYWRpbmcgdG8gbWVtb3J5IGxlYWtzLlxuICAgICBJZiB5b3UgbmVlZCB0byByZWFkIGZyb20gYSBbU3RkbGliLmluX2NoYW5uZWxdIGlucHV0IGNoYW5uZWxcbiAgICAgW2ljXSwgc2ltcGx5IGRlZmluZSBhIFtTY2FubmluZy5pbl9jaGFubmVsXSBmb3JtYXR0ZWQgaW5wdXQgY2hhbm5lbCBhcyBpblxuICAgICBbbGV0IGliID0gU2Nhbm5pbmcuZnJvbV9jaGFubmVsIGljXSwgdGhlbiB1c2UgW1NjYW5mLmJzY2FuZiBpYl0gYXMgdXN1YWwuXG4gICopXG4gIGxldCBtZW1vX2Zyb21faWMgPVxuICAgIGxldCBtZW1vID0gcmVmIFtdIGluXG4gICAgKGZ1biBzY2FuX2Nsb3NlX2ljIGljIC0+XG4gICAgIHRyeSBMaXN0LmFzc3EgaWMgIW1lbW8gd2l0aFxuICAgICB8IE5vdF9mb3VuZCAtPlxuICAgICAgIGxldCBpYiA9XG4gICAgICAgICBmcm9tX2ljIHNjYW5fY2xvc2VfaWMgKEZyb21fY2hhbm5lbCBpYykgaWMgaW5cbiAgICAgICBtZW1vIDo9IChpYywgaWIpIDo6ICFtZW1vO1xuICAgICAgIGliKVxuXG5cbiAgKCogT2Jzb2xldGU6IHNlZSB7IW1lbW9fZnJvbV9pY30gYWJvdmUuICopXG4gIGxldCBtZW1vX2Zyb21fY2hhbm5lbCA9IG1lbW9fZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuXG5lbmRcblxuXG4oKiBGb3JtYXR0ZWQgaW5wdXQgZnVuY3Rpb25zLiAqKVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2Nhbm5lciA9XG4gICAgICgnYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgJ2IsICdjLCAnYSAtPiAnZCwgJ2QpIGZvcm1hdDYgLT4gJ2NcblxuXG4oKiBSZXBvcnRpbmcgZXJyb3JzLiAqKVxuZXhjZXB0aW9uIFNjYW5fZmFpbHVyZSBvZiBzdHJpbmdcblxubGV0IGJhZF9pbnB1dCBzID0gcmFpc2UgKFNjYW5fZmFpbHVyZSBzKVxuXG5sZXQgYmFkX2lucHV0X2VzY2FwZSBjID1cbiAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImlsbGVnYWwgZXNjYXBlIGNoYXJhY3RlciAlQ1wiIGMpXG5cblxubGV0IGJhZF90b2tlbl9sZW5ndGggbWVzc2FnZSA9XG4gIGJhZF9pbnB1dFxuICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgIFwic2Nhbm5pbmcgb2YgJXMgZmFpbGVkOiBcXFxuICAgICAgICB0aGUgc3BlY2lmaWVkIGxlbmd0aCB3YXMgdG9vIHNob3J0IGZvciB0b2tlblwiXG4gICAgICAgbWVzc2FnZSlcblxuXG5sZXQgYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHByZW1hdHVyZSBlbmQgb2YgZmlsZSBvY2N1cnJlZCBiZWZvcmUgZW5kIG9mIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJubyBkb3Qgb3IgZXhwb25lbnQgcGFydCBmb3VuZCBpbiBmbG9hdCB0b2tlblwiXG5cblxubGV0IGJhZF9oZXhfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJub3QgYSB2YWxpZCBmbG9hdCBpbiBoZXhhZGVjaW1hbCBub3RhdGlvblwiXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaF9lcnIgYyBjaSA9XG4gIFByaW50Zi5zcHJpbnRmIFwibG9va2luZyBmb3IgJUMsIGZvdW5kICVDXCIgYyBjaVxuXG5cbmxldCBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaSA9XG4gIGJhZF9pbnB1dCAoY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpKVxuXG5cbmxldCByZWMgc2tpcF93aGl0ZXMgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlbiBiZWdpblxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+XG4gICAgICBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgc2tpcF93aGl0ZXMgaWJcbiAgICB8IF8gLT4gKClcbiAgZW5kXG5cblxuKCogQ2hlY2tpbmcgdGhhdCBbY10gaXMgaW5kZWVkIGluIHRoZSBpbnB1dCwgdGhlbiBza2lwcyBpdC5cbiAgIEluIHRoaXMgY2FzZSwgdGhlIGNoYXJhY3RlciBbY10gaGFzIGJlZW4gZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlXG4gICBmb3JtYXQgYXMgYmVpbmcgbWFuZGF0b3J5IGluIHRoZSBpbnB1dDsgaGVuY2Ugd2Ugc2hvdWxkIGZhaWwgd2l0aFxuICAgW0VuZF9vZl9maWxlXSBpbiBjYXNlIG9mIGVuZF9vZl9pbnB1dC5cbiAgIChSZW1lbWJlciB0aGF0IFtTY2FuX2ZhaWx1cmVdIGlzIHJhaXNlZCBvbmx5IHdoZW4gKHdlIGNhbiBwcm92ZSBieVxuICAgZXZpZGVuY2UpIHRoYXQgdGhlIGlucHV0IGRvZXMgbm90IG1hdGNoIHRoZSBmb3JtYXQgc3RyaW5nIGdpdmVuLiBXZSBtdXN0XG4gICB0aHVzIGRpZmZlcmVudGlhdGUgW0VuZF9vZl9maWxlXSBhcyBhbiBlcnJvciBkdWUgdG8gbGFjayBvZiBpbnB1dCwgYW5kXG4gICBbU2Nhbl9mYWlsdXJlXSB3aGljaCBpcyBkdWUgdG8gcHJvdmFibHkgd3JvbmcgaW5wdXQuIEkgYW0gbm90IHN1cmUgdGhpcyBpc1xuICAgd29ydGggdGhlIGJ1cmRlbjogaXQgaXMgY29tcGxleCBhbmQgc29tZWhvdyBzdWJsaW1pbmFsOyBzaG91bGQgYmUgY2xlYXJlclxuICAgdG8gZmFpbCB3aXRoIFNjYW5fZmFpbHVyZSBcIk5vdCBlbm91Z2ggaW5wdXQgdG8gY29tcGxldGUgc2Nhbm5pbmdcIiEpXG5cbiAgIFRoYXQncyB3aHksIHdhaXRpbmcgZm9yIGEgYmV0dGVyIHNvbHV0aW9uLCB3ZSB1c2UgY2hlY2tlZF9wZWVrX2NoYXIgaGVyZS5cbiAgIFdlIGFyZSBhbHNvIGNhcmVmdWwgdG8gdHJlYXQgXCJcXHJcXG5cIiBpbiB0aGUgaW5wdXQgYXMgYW4gZW5kIG9mIGxpbmUgbWFya2VyOlxuICAgaXQgYWx3YXlzIG1hdGNoZXMgYSAnXFxuJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBpbnB1dCBmb3JtYXQgc3RyaW5nLiAqKVxubGV0IHJlYyBjaGVja19jaGFyIGliIGMgPVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnICcgLT4gc2tpcF93aGl0ZXMgaWJcbiAgfCAnXFxuJyAtPiBjaGVja19uZXdsaW5lIGliXG4gIHwgYyAtPiBjaGVja190aGlzX2NoYXIgaWIgY1xuXG5hbmQgY2hlY2tfdGhpc19jaGFyIGliIGMgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBjaSA9IGMgdGhlbiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiBlbHNlXG4gIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cbmFuZCBjaGVja19uZXdsaW5lIGliID1cbiAgbGV0IGNpID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggY2kgd2l0aFxuICB8ICdcXG4nIC0+IFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gIHwgJ1xccicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7IGNoZWNrX3RoaXNfY2hhciBpYiAnXFxuJ1xuICB8IF8gLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXG4nIGNpXG5cblxuKCogRXh0cmFjdGluZyB0b2tlbnMgZnJvbSB0aGUgb3V0cHV0IHRva2VuIGJ1ZmZlci4gKilcblxubGV0IHRva2VuX2NoYXIgaWIgPSAoU2Nhbm5pbmcudG9rZW4gaWIpLlswXVxuXG5sZXQgdG9rZW5fc3RyaW5nID0gU2Nhbm5pbmcudG9rZW5cblxubGV0IHRva2VuX2Jvb2wgaWIgPVxuICBtYXRjaCBTY2FubmluZy50b2tlbiBpYiB3aXRoXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IHMgLT4gYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImludmFsaWQgYm9vbGVhbiAnJXMnXCIgcylcblxuXG4oKiBUaGUgdHlwZSBvZiBpbnRlZ2VyIGNvbnZlcnNpb25zLiAqKVxudHlwZSBpbnRlZ2VyX2NvbnZlcnNpb24gPVxuICB8IEJfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBiaW5hcnkgY29udmVyc2lvbiAqKVxuICB8IERfY29udmVyc2lvbiAoKiBTaWduZWQgZGVjaW1hbCBjb252ZXJzaW9uICopXG4gIHwgSV9jb252ZXJzaW9uICgqIFNpZ25lZCBpbnRlZ2VyIGNvbnZlcnNpb24gKilcbiAgfCBPX2NvbnZlcnNpb24gKCogVW5zaWduZWQgb2N0YWwgY29udmVyc2lvbiAqKVxuICB8IFVfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBYX2NvbnZlcnNpb24gKCogVW5zaWduZWQgaGV4YWRlY2ltYWwgY29udmVyc2lvbiAqKVxuXG5cbmxldCBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciA9IGZ1bmN0aW9uXG4gIHwgJ2InIC0+IEJfY29udmVyc2lvblxuICB8ICdkJyAtPiBEX2NvbnZlcnNpb25cbiAgfCAnaScgLT4gSV9jb252ZXJzaW9uXG4gIHwgJ28nIC0+IE9fY29udmVyc2lvblxuICB8ICd1JyAtPiBVX2NvbnZlcnNpb25cbiAgfCAneCcgfCAnWCcgLT4gWF9jb252ZXJzaW9uXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuXG4oKiBFeHRyYWN0IGFuIGludGVnZXIgbGl0ZXJhbCB0b2tlbi5cbiAgIFNpbmNlIHRoZSBmdW5jdGlvbnMgU3RkbGliLippbnQqX29mX3N0cmluZyBkbyBub3QgYWNjZXB0IGEgbGVhZGluZyArLFxuICAgd2Ugc2tpcCBpdCBpZiBuZWNlc3NhcnkuICopXG5sZXQgdG9rZW5faW50X2xpdGVyYWwgY29udiBpYiA9XG4gIGxldCB0b2sgPVxuICAgIG1hdGNoIGNvbnYgd2l0aFxuICAgIHwgRF9jb252ZXJzaW9uIHwgSV9jb252ZXJzaW9uIC0+IFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBVX2NvbnZlcnNpb24gLT4gXCIwdVwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IE9fY29udmVyc2lvbiAtPiBcIjBvXCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgWF9jb252ZXJzaW9uIC0+IFwiMHhcIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBCX2NvbnZlcnNpb24gLT4gXCIwYlwiIF4gU2Nhbm5pbmcudG9rZW4gaWIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHRvayBpblxuICBpZiBsID0gMCB8fCB0b2suWzBdIDw+ICcrJyB0aGVuIHRvayBlbHNlIFN0cmluZy5zdWIgdG9rIDEgKGwgLSAxKVxuXG5cbigqIEFsbCB0aGUgZnVuY3Rpb25zIHRoYXQgY29udmVydCBhIHN0cmluZyB0byBhIG51bWJlciByYWlzZSB0aGUgZXhjZXB0aW9uXG4gICBGYWlsdXJlIHdoZW4gdGhlIGNvbnZlcnNpb24gaXMgbm90IHBvc3NpYmxlLlxuICAgVGhpcyBleGNlcHRpb24gaXMgdGhlbiB0cmFwcGVkIGluIFtrc2NhbmZdLiAqKVxubGV0IHRva2VuX2ludCBjb252IGliID0gaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcblxubGV0IHRva2VuX2Zsb2F0IGliID0gZmxvYXRfb2Zfc3RyaW5nIChTY2FubmluZy50b2tlbiBpYilcblxuKCogVG8gc2NhbiBuYXRpdmUgaW50cywgaW50MzIgYW5kIGludDY0IGludGVnZXJzLlxuICAgV2UgY2Fubm90IGFjY2VzcyB0byBjb252ZXJzaW9ucyB0by9mcm9tIHN0cmluZ3MgZm9yIHRob3NlIHR5cGVzLFxuICAgTmF0aXZlaW50Lm9mX3N0cmluZywgSW50MzIub2Zfc3RyaW5nLCBhbmQgSW50NjQub2Zfc3RyaW5nLFxuICAgc2luY2UgdGhvc2UgbW9kdWxlcyBhcmUgbm90IGF2YWlsYWJsZSB0byBbU2NhbmZdLlxuICAgSG93ZXZlciwgd2UgY2FuIGJpbmQgYW5kIHVzZSB0aGUgY29ycmVzcG9uZGluZyBwcmltaXRpdmVzIHRoYXQgYXJlXG4gICBhdmFpbGFibGUgaW4gdGhlIHJ1bnRpbWUuICopXG5leHRlcm5hbCBuYXRpdmVpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50MzJfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIGludDY0X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5cbmxldCB0b2tlbl9uYXRpdmVpbnQgY29udiBpYiA9IG5hdGl2ZWludF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5sZXQgdG9rZW5faW50MzIgY29udiBpYiA9IGludDMyX29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQ2NCBjb252IGliID0gaW50NjRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG4oKiBTY2FubmluZyBudW1iZXJzLiAqKVxuXG4oKiBEaWdpdHMgc2Nhbm5pbmcgZnVuY3Rpb25zIHN1cHBvc2UgdGhhdCBvbmUgY2hhcmFjdGVyIGhhcyBiZWVuIGNoZWNrZWQgYW5kXG4gICBpcyBhdmFpbGFibGUsIHNpbmNlIHRoZXkgcmV0dXJuIGF0IGVuZCBvZiBmaWxlIHdpdGggdGhlIGN1cnJlbnRseSBmb3VuZFxuICAgdG9rZW4gc2VsZWN0ZWQuXG5cbiAgIFB1dCBpdCBpbiBhbm90aGVyIHdheSwgdGhlIGRpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc2NhbiBmb3IgYSBwb3NzaWJseVxuICAgZW1wdHkgc2VxdWVuY2Ugb2YgZGlnaXRzLCAoaGVuY2UsIGEgc3VjY2Vzc2Z1bCBzY2FubmluZyBmcm9tIG9uZSBvZiB0aG9zZVxuICAgZnVuY3Rpb25zIGRvZXMgbm90IGltcGx5IHRoYXQgdGhlIHRva2VuIGlzIGEgd2VsbC1mb3JtZWQgbnVtYmVyOiB0byBnZXQgYVxuICAgdHJ1ZSBudW1iZXIsIGl0IGlzIG1hbmRhdG9yeSB0byBjaGVjayB0aGF0IGF0IGxlYXN0IG9uZSB2YWxpZCBkaWdpdCBpc1xuICAgYXZhaWxhYmxlIGJlZm9yZSBjYWxsaW5nIG9uZSBvZiB0aGUgZGlnaXQgc2Nhbm5pbmcgZnVuY3Rpb25zKS4gKilcblxuKCogVGhlIGRlY2ltYWwgY2FzZSBpcyB0cmVhdGVkIGVzcGVjaWFsbHkgZm9yIG9wdGltaXphdGlvbiBwdXJwb3Nlcy4gKilcbmxldCByZWMgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCAnXycgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYiBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkZWNpbWFsIGRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBjIC0+XG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSBkZWNpbWFsIGRpZ2l0XCIgYylcblxuXG4oKiBUbyBzY2FuIG51bWJlcnMgZnJvbSBvdGhlciBiYXNlcywgd2UgdXNlIGEgcHJlZGljYXRlIGFyZ3VtZW50IHRvXG4gICBzY2FuIGRpZ2l0cy4gKilcbmxldCBzY2FuX2RpZ2l0X3N0YXIgZGlnaXRwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBzY2FuX2RpZ2l0cyB3aWR0aCBpYiA9XG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgYyB3aGVuIGRpZ2l0cCBjIC0+XG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCAnXycgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuICAgIHwgXyAtPiB3aWR0aCBpblxuICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2RpZ2l0X3BsdXMgYmFzaXMgZGlnaXRwIHdpZHRoIGliID1cbiAgKCogRW5zdXJlIHdlIGhhdmUgZ290IGVub3VnaCB3aWR0aCBsZWZ0LFxuICAgICBhbmQgcmVhZCBhdCBsZWFzdCBvbmUgZGlnaXQuICopXG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkaWdpdHNcIiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgaWYgZGlnaXRwIGMgdGhlblxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWJcbiAgZWxzZVxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJjaGFyYWN0ZXIgJUMgaXMgbm90IGEgdmFsaWQgJXMgZGlnaXRcIiBjIGJhc2lzKVxuXG5cbmxldCBpc19iaW5hcnlfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnMScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9iaW5hcnlfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiYmluYXJ5XCIgaXNfYmluYXJ5X2RpZ2l0XG5cbmxldCBpc19vY3RhbF9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc3JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX29jdGFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcIm9jdGFsXCIgaXNfb2N0YWxfZGlnaXRcblxubGV0IGlzX2hleGFfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2hleGFkZWNpbWFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcImhleGFkZWNpbWFsXCIgaXNfaGV4YV9kaWdpdFxuXG4oKiBTY2FuIGEgZGVjaW1hbCBpbnRlZ2VyLiAqKVxubGV0IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgPSBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1c1xuXG5sZXQgc2Nhbl9zaWduIHdpZHRoIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnKycgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgJy0nIC0+IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgY1xuICB8IF8gLT4gd2lkdGhcblxuXG5sZXQgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2NhbiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHRoYXQgY291bGQgYmUgZ2l2ZW4gaW4gYW55IChjb21tb24pIGJhc2lzLlxuICAgSWYgZGlnaXRzIGFyZSBwcmVmaXhlZCBieSBvbmUgb2YgMHgsIDBYLCAwbywgb3IgMGIsIHRoZSBudW1iZXIgaXNcbiAgIGFzc3VtZWQgdG8gYmUgd3JpdHRlbiByZXNwZWN0aXZlbHkgaW4gaGV4YWRlY2ltYWwsIGhleGFkZWNpbWFsLFxuICAgb2N0YWwsIG9yIGJpbmFyeS4gKilcbmxldCBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICBiZWdpbiBtYXRjaCBjIHdpdGhcbiAgICB8ICd4JyB8ICdYJyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgJ28nIC0+IHNjYW5fb2N0YWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnYicgLT4gc2Nhbl9iaW5hcnlfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCBfIC0+IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGVuZFxuICB8IF8gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2ludF9jb252ZXJzaW9uIGNvbnYgd2lkdGggaWIgPVxuICBtYXRjaCBjb252IHdpdGhcbiAgfCBCX2NvbnZlcnNpb24gLT4gc2Nhbl9iaW5hcnlfaW50IHdpZHRoIGliXG4gIHwgRF9jb252ZXJzaW9uIC0+IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgfCBJX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9pbnQgd2lkdGggaWJcbiAgfCBPX2NvbnZlcnNpb24gLT4gc2Nhbl9vY3RhbF9pbnQgd2lkdGggaWJcbiAgfCBVX2NvbnZlcnNpb24gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IFhfY29udmVyc2lvbiAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbigqIFNjYW5uaW5nIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICopXG5cbigqIEZyYWN0aW9uYWwgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9mcmFjdGlvbmFsX3BhcnQgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogRXhwIHBhcnQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZWR1Y2VkIHRvIDAgZGlnaXRzLiAqKVxubGV0IHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnZScgfCAnRScgYXMgYyAtPlxuICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogU2NhbiB0aGUgaW50ZWdlciBwYXJ0IG9mIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCAobm90IHVzaW5nIHRoZVxuICAgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uIHNpbmNlIHRoZSBpbnRlZ2VyIHBhcnQgY2FuIGJlIGVtcHR5KTpcbiAgIGFuIG9wdGlvbmFsIHNpZ24sIGZvbGxvd2VkIGJ5IGEgcG9zc2libHkgZW1wdHkgc2VxdWVuY2Ugb2YgZGVjaW1hbFxuICAgZGlnaXRzIChlLmcuIC0uMSkuICopXG5sZXQgc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcblxuXG4oKlxuICAgRm9yIHRoZSB0aW1lIGJlaW5nIHdlIGhhdmUgKGFzIGZvdW5kIGluIHNjYW5mLm1saSk6XG4gICB0aGUgZmllbGQgd2lkdGggaXMgY29tcG9zZWQgb2YgYW4gb3B0aW9uYWwgaW50ZWdlciBsaXRlcmFsXG4gICBpbmRpY2F0aW5nIHRoZSBtYXhpbWFsIHdpZHRoIG9mIHRoZSB0b2tlbiB0byByZWFkLlxuICAgVW5mb3J0dW5hdGVseSwgdGhlIHR5cGUtY2hlY2tlciBsZXQgdGhlIHVzZXIgd3JpdGUgYW4gb3B0aW9uYWwgcHJlY2lzaW9uLFxuICAgc2luY2UgdGhpcyBpcyB2YWxpZCBmb3IgcHJpbnRmIGZvcm1hdCBzdHJpbmdzLlxuXG4gICBUaHVzLCB0aGUgbmV4dCBzdGVwIGZvciBTY2FuZiBpcyB0byBzdXBwb3J0IGEgZnVsbCB3aWR0aCBhbmQgcHJlY2lzaW9uXG4gICBpbmRpY2F0aW9uLCBtb3JlIG9yIGxlc3Mgc2ltaWxhciB0byB0aGUgb25lIGZvciBwcmludGYsIHBvc3NpYmx5IGV4dGVuZGVkXG4gICB0byB0aGUgc3BlY2lmaWNhdGlvbiBvZiBhIFttYXgsIG1pbl0gcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZFxuICAgZm9yIHN0cmluZ3MuIFNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgc3BlYyBmb3Igc2NhbmYubWxpOlxuXG4gICBUaGUgb3B0aW9uYWwgW3dpZHRoXSBpcyBhbiBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIG1heGltYWxcbiAgIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLiBGb3IgaW5zdGFuY2UsIFslNmRdIHJlYWRzIGFuIGludGVnZXIsXG4gICBoYXZpbmcgYXQgbW9zdCA2IGNoYXJhY3RlcnMuXG5cbiAgIFRoZSBvcHRpb25hbCBbcHJlY2lzaW9uXSBpcyBhIGRvdCBbLl0gZm9sbG93ZWQgYnkgYW4gaW50ZWdlcjpcblxuICAgLSBpbiB0aGUgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGNvbnZlcnNpb25zIChbJWZdLCBbJWVdLCBbJWddLCBbJUZdLCBbJUVdLFxuICAgYW5kIFslRl0gY29udmVyc2lvbnMsIHRoZSBbcHJlY2lzaW9uXSBpbmRpY2F0ZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mXG4gICBkaWdpdHMgdGhhdCBtYXkgZm9sbG93IHRoZSBkZWNpbWFsIHBvaW50LiBGb3IgaW5zdGFuY2UsIFslLjRmXSByZWFkcyBhXG4gICBbZmxvYXRdIHdpdGggYXQgbW9zdCA0IGZyYWN0aW9uYWwgZGlnaXRzLFxuXG4gICAtIGluIHRoZSBzdHJpbmcgY29udmVyc2lvbnMgKFslc10sIFslU10sIFslXFxbIHJhbmdlIFxcXV0pLCBhbmQgaW4gdGhlXG4gICBpbnRlZ2VyIG51bWJlciBjb252ZXJzaW9ucyAoWyVpXSwgWyVkXSwgWyV1XSwgWyV4XSwgWyVvXSwgYW5kIHRoZWlyXG4gICBbaW50MzJdLCBbaW50NjRdLCBhbmQgW25hdGl2ZV9pbnRdIGNvcnJlc3BvbmRlbnQpLCB0aGUgW3ByZWNpc2lvbl1cbiAgIGluZGljYXRlcyB0aGUgcmVxdWlyZWQgbWluaW11bSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZCxcblxuICAgLSBvbiBhbGwgb3RoZXIgY29udmVyc2lvbnMsIHRoZSB3aWR0aCBhbmQgcHJlY2lzaW9uIHNwZWNpZnkgdGhlIFttYXgsIG1pbl1cbiAgIHJhbmdlIGZvciB0aGUgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuXG4qKVxubGV0IHNjYW5fZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoLCBwcmVjaXNpb24gZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnLicgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICBsZXQgd2lkdGggPSB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIpIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cbiAgfCBfIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cblxuXG5sZXQgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgZXJyb3Igc3RyID1cbiAgbGV0IGxvd2VyY2FzZSBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICdBJyAuLiAnWicgLT5cbiAgICAgIGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgaW50X29mX2NoYXIgJ2EnKVxuICAgIHwgXyAtPiBjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGggPSByZWYgd2lkdGggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIGxvd2VyY2FzZSBjIDw+IGxvd2VyY2FzZSBzdHIuW2ldIHRoZW4gZXJyb3IgKCk7XG4gICAgaWYgIXdpZHRoID0gMCB0aGVuIGVycm9yICgpO1xuICAgIHdpZHRoIDo9IFNjYW5uaW5nLnN0b3JlX2NoYXIgIXdpZHRoIGliIGM7XG4gIGRvbmU7XG4gICF3aWR0aFxuXG5cbmxldCBzY2FuX2hleF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBsZXQgd2lkdGggPSBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwieFwiIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICAgIClcbiAgICAgICAgICB8IF8gLT4gd2lkdGggaW5cbiAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgICAgfCBfIC0+IHdpZHRoXG4gIClcbiAgfCAnbicgfCAnTicgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJhblwiXG4gIHwgJ2knIHwgJ0knIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwibmZpbml0eVwiXG4gIHwgXyAtPiBiYWRfaGV4X2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICgqIFRoZSBlZmZlY3RpdmUgd2lkdGggYXZhaWxhYmxlIGZvciBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IGlzXG4gICAgICAgdGhlIG1pbmltdW0gb2YgZGVjbGFyZWQgcHJlY2lzaW9uIGFuZCB3aWR0aCBsZWZ0LiAqKVxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICgqIEFmdGVyIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgd2l0aCBbcHJlY2lzaW9uXSBwcm92aXNpb25hbCB3aWR0aCxcbiAgICAgICBbd2lkdGhfcHJlY2lzaW9uXSBpcyBsZWZ0LiAqKVxuICAgIGxldCB3aWR0aF9wcmVjaXNpb24gPSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIgaW5cbiAgICAoKiBIZW5jZSwgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB0b29rIGV4YWN0bHlcbiAgICAgICBbcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uXSBjaGFycy4gKilcbiAgICBsZXQgZnJhY193aWR0aCA9IHByZWNpc2lvbiAtIHdpZHRoX3ByZWNpc2lvbiBpblxuICAgICgqIEFuZCBuZXcgcHJvdmlzaW9uYWwgd2lkdGggaXMgW3dpZHRoIC0gd2lkdGhfcHJlY2lzaW9uLiAqKVxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gZnJhY193aWR0aCBpblxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8ICdlJyB8ICdFJyAtPlxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8IF8gLT4gYmFkX2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPiAoXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIGFzIGMgLT4gKFxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgICAgbGV0IHdpZHRoID0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWIgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgIHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5faGV4YWRlY2ltYWxfaW50IHByZWNpc2lvbiBpYilcbiAgICAgICAgKVxuICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gYmFkX2Zsb2F0ICgpIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICdwJyB8ICdQJyBhcyBjIC0+XG4gICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICAgICAgICB8IF8gLT4gd2lkdGhcbiAgICApXG4gICAgfCBfIC0+XG4gICAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbiAgKVxuICB8ICcxJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliXG4oKiBTcGVjaWFsIGNhc2Ugb2YgbmFuIGFuZCBpbmZpbml0eTpcbiAgfCAnaScgLT5cbiAgfCAnbicgLT5cbiopXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG4oKiBTY2FuIGEgcmVndWxhciBzdHJpbmc6XG4gICBzdG9wcyB3aGVuIGVuY291bnRlcmluZyBhIHNwYWNlLCBpZiBubyBzY2FubmluZyBpbmRpY2F0aW9uIGhhcyBiZWVuIGdpdmVuO1xuICAgb3RoZXJ3aXNlLCBzdG9wcyB3aGVuIGVuY291bnRlcmluZyB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc2Nhbm5pbmdcbiAgIGluZGljYXRpb24gW3N0cF0uXG4gICBJdCBhbHNvIHN0b3BzIGF0IGVuZCBvZiBmaWxlIG9yIHdoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgaGFzXG4gICBiZWVuIHJlYWQuICopXG5sZXQgc2Nhbl9zdHJpbmcgc3RwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBsb29wIHdpZHRoID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICBtYXRjaCBzdHAgd2l0aFxuICAgICAgfCBTb21lIGMnIHdoZW4gYyA9IGMnIC0+IFNjYW5uaW5nLnNraXBfY2hhciB3aWR0aCBpYlxuICAgICAgfCBTb21lIF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpblxuICBsb29wIHdpZHRoXG5cblxuKCogU2NhbiBhIGNoYXI6IHBlZWsgc3RyaWN0bHkgb25lIGNoYXJhY3RlciBpbiB0aGUgaW5wdXQsIHdoYXRzb2V2ZXIuICopXG5sZXQgc2Nhbl9jaGFyIHdpZHRoIGliID1cbiAgKCogVGhlIGNhc2Ugd2lkdGggPSAwIGNvdWxkIG5vdCBoYXBwZW4gaGVyZSwgc2luY2UgaXQgaXMgdGVzdGVkIGJlZm9yZVxuICAgICBjYWxsaW5nIHNjYW5fY2hhciwgaW4gdGhlIG1haW4gc2Nhbm5pbmcgZnVuY3Rpb24uXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImEgY2hhcmFjdGVyXCIgZWxzZSAqKVxuICBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIChTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYilcblxuXG5sZXQgY2hhcl9mb3JfYmFja3NsYXNoID0gZnVuY3Rpb25cbiAgfCAnbicgLT4gJ1xcMDEwJ1xuICB8ICdyJyAtPiAnXFwwMTMnXG4gIHwgJ2InIC0+ICdcXDAwOCdcbiAgfCAndCcgLT4gJ1xcMDA5J1xuICB8IGMgLT4gY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYyA9IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcblxubGV0IGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxMDAgKiBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzAgK1xuICAgICAxMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICAgZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICBcImJhZCBjaGFyYWN0ZXIgZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlYyVjXCIgYzAgYzEgYzIpIGVsc2VcbiAgY2hhcl9vZl9pbnQgY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBoZXhhZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuICopXG5sZXQgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID1cbiAgbGV0IGQgPSBpbnRfb2ZfY2hhciBjIGluXG4gICgqIENvdWxkIGFsc28gYmU6XG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnOScgdGhlbiBkIC0gaW50X29mX2NoYXIgJzAnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdGJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdBJyBlbHNlXG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnZicgdGhlbiAxMCArIGQgLSBpbnRfb2ZfY2hhciAnYScgZWxzZSBhc3NlcnQgZmFsc2VcbiAgKilcbiAgaWYgZCA+PSBpbnRfb2ZfY2hhciAnYScgdGhlblxuICAgIGQgLSA4NyAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKikgZWxzZVxuICBpZiBkID49IGludF9vZl9jaGFyICdBJyB0aGVuXG4gICAgZCAtIDU1ICAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKikgZWxzZVxuICAgIGQgLSBpbnRfb2ZfY2hhciAnMCdcblxuXG5sZXQgY2hhcl9mb3JfaGV4YWRlY2ltYWxfY29kZSBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxNiAqIGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzEgK1xuICAgICAgICAgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMiBpblxuICBpZiBjIDwgMCB8fCBjID4gMjU1IHRoZW5cbiAgICBiYWRfaW5wdXRcbiAgICAgIChQcmludGYuc3ByaW50ZiBcImJhZCBjaGFyYWN0ZXIgaGV4YWRlY2ltYWwgZW5jb2RpbmcgXFxcXCVjJWNcIiBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogQ2FsbGVkIGluIHBhcnRpY3VsYXIgd2hlbiBlbmNvdW50ZXJpbmcgJ1xcXFwnIGFzIHN0YXJ0ZXIgb2YgYSBjaGFyLlxuICAgU3RvcHMgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nICdcXCcnLiAqKVxubGV0IGNoZWNrX25leHRfY2hhciBtZXNzYWdlIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlIGVsc2VcbiAgY1xuXG5cbmxldCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgPSBjaGVja19uZXh0X2NoYXIgXCJhIENoYXJcIlxubGV0IGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nID0gY2hlY2tfbmV4dF9jaGFyIFwiYSBTdHJpbmdcIlxuXG5sZXQgc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYiA9XG4gIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gIHwgJ1xcXFwnIHwgJ1xcJycgfCAnXFxcIicgfCAnbicgfCAndCcgfCAnYicgfCAncicgYXMgYyAtPlxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKGNoYXJfZm9yX2JhY2tzbGFzaCBjKVxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCBnZXRfZGlnaXQgKCkgPVxuICAgICAgbGV0IGMgPSBTY2FubmluZy5uZXh0X2NoYXIgaWIgaW5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMCA9IGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9kZWNpbWFsX2NvZGUgYzAgYzEgYzIpXG4gIHwgJ3gnIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyBhcyBjIC0+IGNcbiAgICAgIHwgYyAtPiBiYWRfaW5wdXRfZXNjYXBlIGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyKVxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXRfZXNjYXBlIGNcblxuXG4oKiBTY2FuIGEgY2hhcmFjdGVyIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX2NoYXIgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcJycgLT4gZmluZF9jaGFyIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXCcnIGNcblxuICBhbmQgZmluZF9jaGFyIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXFwnIC0+XG4gICAgICBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKSBpYilcbiAgICB8IGMgLT5cbiAgICAgIGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgYyBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgZGVsaW1pdGVkIHN0cmluZyAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFxcIicgY1xuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXFwiJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgJ1xcXFwnIC0+IHNjYW5fYmFja3NsYXNoIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIHNjYW5fYmFja3NsYXNoIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxyJyAtPiBza2lwX25ld2xpbmUgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgd2lkdGggaWIpXG5cbiAgYW5kIHNraXBfbmV3bGluZSB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgJ1xccicpXG5cbiAgYW5kIHNraXBfc3BhY2VzIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnICcgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3Agd2lkdGggaW5cblxuICBmaW5kX3N0YXJ0IHdpZHRoXG5cblxuKCogU2NhbiBhIGJvb2xlYW4gKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2Jvb2wgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGxldCBtID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICd0JyAtPiA0XG4gICAgfCAnZicgLT4gNVxuICAgIHwgYyAtPlxuICAgICAgYmFkX2lucHV0XG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcInRoZSBjaGFyYWN0ZXIgJUMgY2Fubm90IHN0YXJ0IGEgYm9vbGVhblwiIGMpIGluXG4gIHNjYW5fc3RyaW5nIE5vbmUgbSBpYlxuXG5cbigqIFNjYW4gYSBzdHJpbmcgY29udGFpbmluZyBlbGVtZW50cyBpbiBjaGFyX3NldCBhbmQgdGVybWluYXRlZCBieSBzY2FuX2luZGljXG4gICBpZiBwcm92aWRlZC4gKilcbmxldCBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IHNjYW5faW5kaWMgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fY2hhcnMgaSBzdHAgPVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgaSA+IDAgJiYgbm90IChTY2FubmluZy5lb2YgaWIpICYmXG4gICAgICAgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyAmJlxuICAgICAgIGludF9vZl9jaGFyIGMgPD4gc3RwIHRoZW5cbiAgICAgIGxldCBfID0gU2Nhbm5pbmcuc3RvcmVfY2hhciBtYXhfaW50IGliIGMgaW5cbiAgICAgIHNjYW5fY2hhcnMgKGkgLSAxKSBzdHAgaW5cbiAgbWF0Y2ggc2Nhbl9pbmRpYyB3aXRoXG4gIHwgTm9uZSAtPiBzY2FuX2NoYXJzIHdpZHRoICgtMSk7XG4gIHwgU29tZSBjIC0+XG4gICAgc2Nhbl9jaGFycyB3aWR0aCAoaW50X29mX2NoYXIgYyk7XG4gICAgaWYgbm90IChTY2FubmluZy5lb2YgaWIpIHRoZW5cbiAgICAgIGxldCBjaSA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgICAgaWYgYyA9IGNpXG4gICAgICB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gICAgICBlbHNlIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cblxuKCogVGhlIGdsb2JhbCBlcnJvciByZXBvcnQgZnVuY3Rpb24gZm9yIFtTY2FuZl0uICopXG5sZXQgc2NhbmZfYmFkX2lucHV0IGliID0gZnVuY3Rpb25cbiAgfCBTY2FuX2ZhaWx1cmUgcyB8IEZhaWx1cmUgcyAtPlxuICAgIGxldCBpID0gU2Nhbm5pbmcuY2hhcl9jb3VudCBpYiBpblxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJzY2FuZjogYmFkIGlucHV0IGF0IGNoYXIgbnVtYmVyICVpOiAlc1wiIGkgcylcbiAgfCB4IC0+IHJhaXNlIHhcblxuXG4oKiBHZXQgdGhlIGNvbnRlbnQgb2YgYSBjb3VudGVyIGZyb20gYW4gaW5wdXQgYnVmZmVyLiAqKVxubGV0IGdldF9jb3VudGVyIGliIGNvdW50ZXIgPVxuICBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgLT4gU2Nhbm5pbmcubGluZV9jb3VudCBpYlxuICB8IENoYXJfY291bnRlciAtPiBTY2FubmluZy5jaGFyX2NvdW50IGliXG4gIHwgVG9rZW5fY291bnRlciAtPiBTY2FubmluZy50b2tlbl9jb3VudCBpYlxuXG5cbigqIENvbXB1dGUgdGhlIHdpZHRoIG9mIGEgcGFkZGluZyBvcHRpb24gKHNlZSBcIiU0MntcIiBhbmQgXCIlMTIzKFwiKS4gKilcbmxldCB3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IG1heF9pbnRcbiAgfCBTb21lIHdpZHRoIC0+IHdpZHRoXG5cblxubGV0IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nID1cbiAgaWYgZm10aW5nID0gRXNjYXBlZF9wZXJjZW50IHRoZW4gJyUnLCBcIlwiIGVsc2VcbiAgICBsZXQgc3RyID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZyBpblxuICAgIGxldCBzdHAgPSBzdHIuWzFdIGluXG4gICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciAyIChTdHJpbmcubGVuZ3RoIHN0ciAtIDIpIGluXG4gICAgc3RwLCBzdWJfc3RyXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFJlYWRlciBtYW5hZ2VtZW50ICopXG5cbigqIEEgY2FsbCB0byB0YWtlX2Zvcm1hdF9yZWFkZXJzIG9uIGEgZm9ybWF0IGlzIGV2YWx1YXRlZCBpbnRvIGZ1bmN0aW9uc1xuICAgdGFraW5nIHJlYWRlcnMgYXMgYXJndW1lbnRzIGFuZCBhZ2dyZWdhdGUgdGhlbSBpbnRvIGFuIGhldGVyb2dlbmVvdXMgbGlzdCAqKVxuKCogV2hlbiBhbGwgcmVhZGVycyBhcmUgdGFrZW4sIGZpbmFsbHkgcGFzcyB0aGUgbGlzdCBvZiB0aGUgcmVhZGVycyB0byB0aGVcbiAgIGNvbnRpbnVhdGlvbiBrLiAqKVxubGV0IHJlYyB0YWtlX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgZCA9XG5mdW4gayBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdFxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9jaGFyIHJlc3QgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENhbWxfc3RyaW5nIChfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQzMiAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IE5hdGl2ZWludCAoXywgXywgXywgcmVzdCkgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50NjQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGbG9hdCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEJvb2wgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQWxwaGEgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEN1c3RvbSAoXywgXywgcmVzdCkgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSwgcmVzdCkgLT5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdCBmbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgICAgLT5cbiAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKSByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgICAgICAgLT4gdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIGsgaWduIHJlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgICAgICAgIC0+IGsgTmlsXG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGZtdHR5IGNvbWluZyBmcm9tIGEgRm9ybWF0X3N1YnN0IFwiJSguLi4lKVwiLiAqKVxuYW5kIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIHggeSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgeCwgeSkgZm10dHkgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFJlYWRlcl90eSBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgQ2hhcl90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGb3JtYXRfYXJnX3R5IChfLCByZXN0KSAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGlnbm9yZWQgcGFyYW1ldGVyLiAqKVxuYW5kIHRha2VfaWdub3JlZF9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBpZ25vcmVkIC0+XG4gICAgICAoeSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgeCwgZSwgZikgZm10IC0+IGQgPVxuZnVuIGsgaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10XG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgZm10dHkgZm10XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgc2Nhbm5pbmcgKilcblxuKCogTWFrZSBhIGdlbmVyaWMgc2Nhbm5pbmcgZnVuY3Rpb24uICopXG4oKiBTY2FuIGEgc3RyZWFtIGFjY29yZGluZyB0byBhIGZvcm1hdCBhbmQgcmVhZGVycyBvYnRhaW5lZCBieVxuICAgdGFrZV9mb3JtYXRfcmVhZGVycywgYW5kIGFnZ3JlZ2F0ZSBzY2FubmVkIHZhbHVlcyBpbnRvIGFuXG4gICBoZXRlcm9nZW5lb3VzIGxpc3QuICopXG4oKiBSZXR1cm4gdGhlIGhldGVyb2dlbmVvdXMgbGlzdCBvZiBzY2FubmVkIHZhbHVlcy4gKilcbmxldCByZWMgbWFrZV9zY2FuZiA6IHR5cGUgYSBjIGQgZSBmLlxuICAgIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKGQsIGUpIGhldGVyX2xpc3QgLT4gKGEsIGYpIGhldGVyX2xpc3QgPVxuZnVuIGliIGZtdCByZWFkZXJzIC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NoYXIgMCBpYiBpblxuICAgIGxldCBjID0gdG9rZW5fY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSBzdHApIHdpZHRoIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiBzdHJfcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICd7Jykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpKSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSAnWycpIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhblxuICAgICAgICAgICAgICAgICAgIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyBOb25lIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcblxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50IGMpXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludDMyIGMpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9uYXRpdmVpbnQgYylcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50NjQgYylcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9GIHwgRmxvYXRfQ0YpKSwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2NhbWxfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRykpLFxuICAgICAgICAgICBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9oIHwgRmxvYXRfSCkpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5faGV4X2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIF8gXyBpYiA9IHNjYW5fYm9vbCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fYm9vbFxuICB8IEFscGhhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJWFcXFwiXCJcbiAgfCBUaGV0YSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiV0XFxcIlwiXG4gIHwgQ3VzdG9tIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJT9cXFwiIChjdXN0b20gY29udmVydGVyKVwiXG4gIHwgUmVhZGVyIGZtdF9yZXN0IC0+XG4gICAgYmVnaW4gbWF0Y2ggcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkgLT5cbiAgICAgICAgbGV0IHggPSByZWFkZXIgaWIgaW5cbiAgICAgICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXRfcmVzdCByZWFkZXJzX3Jlc3QpXG4gICAgfCBOaWwgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJzY2FuZjogbWlzc2luZyByZWFkZXJcIlxuICAgIGVuZFxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBpZiBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICAgIGVsc2UgYmFkX2lucHV0IFwiZW5kIG9mIGlucHV0IG5vdCBmb3VuZFwiXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSBzdHI7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliIGNocjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuXG4gIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10ID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHMgZm10dHlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoZm10LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyAod2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0KSBpYiBpblxuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCwgZm10JyA9XG4gICAgICB0cnlcbiAgICAgICAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXQnID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICAoKiBUT0RPOiBmaW5kIGEgd2F5IHRvIGF2b2lkIHJlcGFyc2luZyB0d2ljZSAqKVxuXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR5cGUtY2hlY2tzIGJlbG93ICpjYW4qIGZhaWwgYmVjYXVzZSBvZiB0eXBlXG4gICAgICAgICAgIGFtYmlndWl0eSBpbiBwcmVzZW5jZSBvZiBpZ25vcmVkLXJlYWRlcnM6IFwiJV9yJWRcIiBhbmQgXCIlZCVfclwiXG4gICAgICAgICAgIGFyZSB0eXBlZCBpbiB0aGUgc2FtZSB3YXkuXG5cbiAgICAgICAgICAgIyBTY2FuZi5zc2NhbmYgXCJcXFwiJV9yJWRcXFwiM1wiIFwiJSglZCVfciUpXCIgaWdub3JlXG4gICAgICAgICAgICAgKGZ1biBmbXQgbiAtPiBzdHJpbmdfb2ZfZm9ybWF0IGZtdCwgbilcbiAgICAgICAgICAgRXhjZXB0aW9uOiBDYW1saW50ZXJuYWxGb3JtYXQuVHlwZV9taXNtYXRjaC5cblxuICAgICAgICAgICBXZSBzaG91bGQgcHJvcGVybHkgY2F0Y2ggdGhpcyBleGNlcHRpb24uXG4gICAgICAgICopXG4gICAgICAgIHR5cGVfZm9ybWF0IGZtdCAoZXJhc2VfcmVsIGZtdHR5KSxcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10JyAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoRm9ybWF0IChmbXQsIHMpLFxuICAgICAgICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCAoU29tZSBzdHApIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBDb25zIChzLCBtYWtlX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBsZXQgd2lkdGggPSB3aWR0aF9vZl9wYWRfb3B0IHdpZHRoX29wdCBpblxuICAgIHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgTm9uZSB3aWR0aCBpYjtcbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgbGV0IGNvdW50ID0gZ2V0X2NvdW50ZXIgaWIgY291bnRlciBpblxuICAgIENvbnMgKGNvdW50LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0KTtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiAnQCc7IGNoZWNrX2NoYXIgaWIgJ3snO1xuICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAnWyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcblxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgYmVnaW4gbWF0Y2ggbWFrZV9zY2FuZiBpYiBmbXQnIHJlYWRlcnMgd2l0aFxuICAgIHwgQ29ucyAoXywgYXJnX3Jlc3QpIC0+IGFyZ19yZXN0XG4gICAgfCBOaWwgLT4gYXNzZXJ0IGZhbHNlXG4gICAgZW5kXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgTmlsXG5cbigqIENhc2UgYW5hbHlzaXMgb24gcGFkZGluZyBhbmQgcHJlY2lzaW9uLiAqKVxuKCogUmVqZWN0IGZvcm1hdHMgY29udGFpbmluZyBcIiUqXCIgb3IgXCIlLipcIi4gKilcbigqIFBhc3MgcGFkZGluZyBhbmQgcHJlY2lzaW9uIHRvIHRoZSBnZW5lcmljIHNjYW5uZXIgYHNjYW4nLiAqKVxuYW5kIHBhZF9wcmVjX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYgeCB5IHogdCAuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT5cbiAgICAgIChpbnQgLT4gaW50IC0+IFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gdCkgLT5cbiAgICAgIChTY2FubmluZy5pbl9jaGFubmVsIC0+IHopIC0+XG4gICAgICAoeCwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgcGFkIHByZWMgc2NhbiB0b2tlbiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gbWF4X2ludCBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiB3IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgcCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nIChMZWZ0LCBfKSwgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlLVxcXCJcIlxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIF8pLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgQXJnX3BhZGRpbmcgXywgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICgqIERlZmluaW5nIFtzY2FuZl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbc2NhbmZdICopXG5cbnR5cGUgJ2Ega3NjYW5mX3Jlc3VsdCA9IEFyZ3Mgb2YgJ2EgfCBFeGMgb2YgZXhuXG5cbmxldCBrc2NhbmYgaWIgZWYgKEZvcm1hdCAoZm10LCBzdHIpKSA9XG4gIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYiAuIGEgLT4gKGEsIGIpIGhldGVyX2xpc3QgLT4gYiA9XG4gICAgZnVuIGYgYXJncyAtPiBtYXRjaCBhcmdzIHdpdGhcbiAgICB8IENvbnMgKHgsIHIpIC0+IGFwcGx5IChmIHgpIHJcbiAgICB8IE5pbCAtPiBmXG4gIGluXG4gIGxldCBrIHJlYWRlcnMgZiA9XG4gICAgU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWI7XG4gICAgbWF0Y2ggdHJ5IEFyZ3MgKG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpIHdpdGhcbiAgICAgIHwgKFNjYW5fZmFpbHVyZSBfIHwgRmFpbHVyZSBfIHwgRW5kX29mX2ZpbGUpIGFzIGV4YyAtPiBFeGMgZXhjXG4gICAgICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+XG4gICAgICAgIGludmFsaWRfYXJnIChtc2cgXiBcIiBpbiBmb3JtYXQgXFxcIlwiIF4gU3RyaW5nLmVzY2FwZWQgc3RyIF4gXCJcXFwiXCIpXG4gICAgd2l0aFxuICAgICAgfCBBcmdzIGFyZ3MgLT4gYXBwbHkgZiBhcmdzXG4gICAgICB8IEV4YyBleGMgLT4gZWYgaWIgZXhjXG4gIGluXG4gIHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxuKCoqKilcblxubGV0IGtic2NhbmYgPSBrc2NhbmZcbmxldCBic2NhbmYgaWIgZm10ID0ga2JzY2FuZiBpYiBzY2FuZl9iYWRfaW5wdXQgZm10XG5cbmxldCBrc3NjYW5mIHMgZWYgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZWYgZm10XG5sZXQgc3NjYW5mIHMgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgc2NhbmZfYmFkX2lucHV0IGZtdFxuXG5sZXQgc2NhbmYgZm10ID0ga3NjYW5mIFNjYW5uaW5nLnN0ZGliIHNjYW5mX2JhZF9pbnB1dCBmbXRcblxuKCoqKilcblxuKCogU2Nhbm5pbmcgZm9ybWF0IHN0cmluZ3MuICopXG5sZXQgYnNjYW5mX2Zvcm1hdCA6XG4gIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBpYiBmb3JtYXQgZiAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyBtYXhfaW50IGliIGluXG4gICAgbGV0IHN0ciA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQnID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgZm9ybWF0XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2cgaW5cbiAgICBmIGZtdCdcblxuXG5sZXQgc3NjYW5mX2Zvcm1hdCA6XG4gIHN0cmluZyAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIHMgZm9ybWF0IGYgLT4gYnNjYW5mX2Zvcm1hdCAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZm9ybWF0IGZcblxuXG5sZXQgZm9ybWF0X2Zyb21fc3RyaW5nIHMgZm10ID1cbiAgc3NjYW5mX2Zvcm1hdCAoXCJcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzIF4gXCJcXFwiXCIpIGZtdCAoZnVuIHggLT4geClcblxuXG5sZXQgdW5lc2NhcGVkIHMgPVxuICBzc2NhbmYgKFwiXFxcIlwiIF4gcyBeIFwiXFxcIlwiKSBcIiVTJSFcIiAoZnVuIHggLT4geClcblxuXG4oKiBEZXByZWNhdGVkICopXG5sZXQga2ZzY2FuZiBpYyBlZiBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5tZW1vX2Zyb21fY2hhbm5lbCBpYykgZWYgZm10XG5sZXQgZnNjYW5mIGljIGZtdCA9IGtzY2FuZiAoU2Nhbm5pbmcubWVtb19mcm9tX2NoYW5uZWwgaWMpIHNjYW5mX2JhZF9pbnB1dCBmbXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUmVnaXN0ZXJpbmcgT0NhbWwgdmFsdWVzIHdpdGggdGhlIEMgcnVudGltZSBmb3IgbGF0ZXIgY2FsbGJhY2tzICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+IE9iai50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0IHJlZ2lzdGVyIG5hbWUgdiA9XG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgKE9iai5yZXByIHYpXG5cbmxldCByZWdpc3Rlcl9leGNlcHRpb24gbmFtZSAoZXhuIDogZXhuKSA9XG4gIGxldCBleG4gPSBPYmoucmVwciBleG4gaW5cbiAgbGV0IHNsb3QgPSBpZiBPYmoudGFnIGV4biA9IE9iai5vYmplY3RfdGFnIHRoZW4gZXhuIGVsc2UgT2JqLmZpZWxkIGV4biAwIGluXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgc2xvdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgSmVyb21lIFZvdWlsbG9uLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIE9ialxuXG4oKioqKiBPYmplY3QgcmVwcmVzZW50YXRpb24gKioqKilcblxuZXh0ZXJuYWwgc2V0X2lkOiAnYSAtPiAnYSA9IFwiY2FtbF9zZXRfb29faWRcIiBbQEBub2FsbG9jXVxuXG4oKioqKiBPYmplY3QgY29weSAqKioqKVxuXG5sZXQgY29weSBvID1cbiAgbGV0IG8gPSAoT2JqLm9iaiAoT2JqLmR1cCAoT2JqLnJlcHIgbykpKSBpblxuICBzZXRfaWQgb1xuXG4oKioqKiBDb21wcmVzc2lvbiBvcHRpb25zICoqKiopXG4oKiBQYXJhbWV0ZXJzICopXG50eXBlIHBhcmFtcyA9IHtcbiAgICBtdXRhYmxlIGNvbXBhY3RfdGFibGUgOiBib29sO1xuICAgIG11dGFibGUgY29weV9wYXJlbnQgOiBib29sO1xuICAgIG11dGFibGUgY2xlYW5fd2hlbl9jb3B5aW5nIDogYm9vbDtcbiAgICBtdXRhYmxlIHJldHJ5X2NvdW50IDogaW50O1xuICAgIG11dGFibGUgYnVja2V0X3NtYWxsX3NpemUgOiBpbnRcbiAgfVxuXG5sZXQgcGFyYW1zID0ge1xuICBjb21wYWN0X3RhYmxlID0gdHJ1ZTtcbiAgY29weV9wYXJlbnQgPSB0cnVlO1xuICBjbGVhbl93aGVuX2NvcHlpbmcgPSB0cnVlO1xuICByZXRyeV9jb3VudCA9IDM7XG4gIGJ1Y2tldF9zbWFsbF9zaXplID0gMTZcbn1cblxuKCoqKiogUGFyYW1ldGVycyAqKioqKVxuXG5sZXQgaW5pdGlhbF9vYmplY3Rfc2l6ZSA9IDJcblxuKCoqKiogSXRlbXMgKioqKilcblxudHlwZSBpdGVtID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG5sZXQgZHVtbXlfaXRlbSA9IChtYWdpYyAoKSA6IGl0ZW0pXG5cbigqKioqIFR5cGVzICoqKiopXG5cbnR5cGUgdGFnXG50eXBlIGxhYmVsID0gaW50XG50eXBlIGNsb3N1cmUgPSBpdGVtXG50eXBlIHQgPSBEdW1teUEgfCBEdW1teUIgfCBEdW1teUMgb2YgaW50XG5sZXQgXyA9IFtEdW1teUE7IER1bW15QjsgRHVtbXlDIDBdICgqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5cbnR5cGUgb2JqID0gdCBhcnJheVxuZXh0ZXJuYWwgcmV0IDogKG9iaiAtPiAnYSkgLT4gY2xvc3VyZSA9IFwiJWlkZW50aXR5XCJcblxuKCoqKiogTGFiZWxzICoqKiopXG5cbmxldCBwdWJsaWNfbWV0aG9kX2xhYmVsIHMgOiB0YWcgPVxuICBsZXQgYWNjdSA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgYWNjdSA6PSAyMjMgKiAhYWNjdSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKDEgbHNsIDMxIC0gMSk7XG4gICgqIG1ha2UgaXQgc2lnbmVkIGZvciA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgKilcbiAgbGV0IHRhZyA9IGlmICFhY2N1ID4gMHgzRkZGRkZGRiB0aGVuICFhY2N1IC0gKDEgbHNsIDMxKSBlbHNlICFhY2N1IGluXG4gICgqIFByaW50Zi5lcHJpbnRmIFwiJXMgPSAlZFxcblwiIHMgdGFnOyBmbHVzaCBzdGRlcnI7ICopXG4gIG1hZ2ljIHRhZ1xuXG4oKioqKiBTcGFyc2UgYXJyYXkgKioqKilcblxubW9kdWxlIFZhcnMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gc3RyaW5nIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIHZhcnMgPSBpbnQgVmFycy50XG5cbm1vZHVsZSBNZXRocyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgbWV0aHMgPSBsYWJlbCBNZXRocy50XG5tb2R1bGUgTGFicyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBsYWJlbCBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBsYWJzID0gYm9vbCBMYWJzLnRcblxuKCogVGhlIGNvbXBpbGVyIGFzc3VtZXMgdGhhdCB0aGUgZmlyc3QgZmllbGQgb2YgdGhpcyBzdHJ1Y3R1cmUgaXMgW3NpemVdLiAqKVxudHlwZSB0YWJsZSA9XG4geyBtdXRhYmxlIHNpemU6IGludDtcbiAgIG11dGFibGUgbWV0aG9kczogY2xvc3VyZSBhcnJheTtcbiAgIG11dGFibGUgbWV0aG9kc19ieV9uYW1lOiBtZXRocztcbiAgIG11dGFibGUgbWV0aG9kc19ieV9sYWJlbDogbGFicztcbiAgIG11dGFibGUgcHJldmlvdXNfc3RhdGVzOlxuICAgICAobWV0aHMgKiBsYWJzICogKGxhYmVsICogaXRlbSkgbGlzdCAqIHZhcnMgKlxuICAgICAgbGFiZWwgbGlzdCAqIHN0cmluZyBsaXN0KSBsaXN0O1xuICAgbXV0YWJsZSBoaWRkZW5fbWV0aHM6IChsYWJlbCAqIGl0ZW0pIGxpc3Q7XG4gICBtdXRhYmxlIHZhcnM6IHZhcnM7XG4gICBtdXRhYmxlIGluaXRpYWxpemVyczogKG9iaiAtPiB1bml0KSBsaXN0IH1cblxubGV0IGR1bW15X3RhYmxlID1cbiAgeyBtZXRob2RzID0gW3wgZHVtbXlfaXRlbSB8XTtcbiAgICBtZXRob2RzX2J5X25hbWUgPSBNZXRocy5lbXB0eTtcbiAgICBtZXRob2RzX2J5X2xhYmVsID0gTGFicy5lbXB0eTtcbiAgICBwcmV2aW91c19zdGF0ZXMgPSBbXTtcbiAgICBoaWRkZW5fbWV0aHMgPSBbXTtcbiAgICB2YXJzID0gVmFycy5lbXB0eTtcbiAgICBpbml0aWFsaXplcnMgPSBbXTtcbiAgICBzaXplID0gMCB9XG5cbmxldCB0YWJsZV9jb3VudCA9IHJlZiAwXG5cbigqIGR1bW15X21ldCBzaG91bGQgYmUgYSBwb2ludGVyLCBzbyB1c2UgYW4gYXRvbSAqKVxubGV0IGR1bW15X21ldCA6IGl0ZW0gPSBvYmogKE9iai5uZXdfYmxvY2sgMCAwKVxuKCogaWYgZGVidWdnaW5nIGlzIG5lZWRlZCwgdGhpcyBjb3VsZCBiZSBhIGdvb2QgaWRlYTogKilcbigqIGxldCBkdW1teV9tZXQgKCkgPSBmYWlsd2l0aCBcIlVuZGVmaW5lZCBtZXRob2RcIiAqKVxuXG5sZXQgcmVjIGZpdF9zaXplIG4gPVxuICBpZiBuIDw9IDIgdGhlbiBuIGVsc2VcbiAgZml0X3NpemUgKChuKzEpLzIpICogMlxuXG5sZXQgbmV3X3RhYmxlIHB1Yl9sYWJlbHMgPVxuICBpbmNyIHRhYmxlX2NvdW50O1xuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHB1Yl9sYWJlbHMgaW5cbiAgbGV0IG1ldGhvZHMgPSBBcnJheS5tYWtlIChsZW4qMisyKSBkdW1teV9tZXQgaW5cbiAgbWV0aG9kcy4oMCkgPC0gbWFnaWMgbGVuO1xuICBtZXRob2RzLigxKSA8LSBtYWdpYyAoZml0X3NpemUgbGVuICogU3lzLndvcmRfc2l6ZSAvIDggLSAxKTtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG8gbWV0aG9kcy4oaSoyKzMpIDwtIG1hZ2ljIHB1Yl9sYWJlbHMuKGkpIGRvbmU7XG4gIHsgbWV0aG9kcyA9IG1ldGhvZHM7XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IGluaXRpYWxfb2JqZWN0X3NpemUgfVxuXG5sZXQgcmVzaXplIGFycmF5IG5ld19zaXplID1cbiAgbGV0IG9sZF9zaXplID0gQXJyYXkubGVuZ3RoIGFycmF5Lm1ldGhvZHMgaW5cbiAgaWYgbmV3X3NpemUgPiBvbGRfc2l6ZSB0aGVuIGJlZ2luXG4gICAgbGV0IG5ld19idWNrID0gQXJyYXkubWFrZSBuZXdfc2l6ZSBkdW1teV9tZXQgaW5cbiAgICBBcnJheS5ibGl0IGFycmF5Lm1ldGhvZHMgMCBuZXdfYnVjayAwIG9sZF9zaXplO1xuICAgIGFycmF5Lm1ldGhvZHMgPC0gbmV3X2J1Y2tcbiBlbmRcblxubGV0IHB1dCBhcnJheSBsYWJlbCBlbGVtZW50ID1cbiAgcmVzaXplIGFycmF5IChsYWJlbCArIDEpO1xuICBhcnJheS5tZXRob2RzLihsYWJlbCkgPC0gZWxlbWVudFxuXG4oKioqKiBDbGFzc2VzICoqKiopXG5cbmxldCBtZXRob2RfY291bnQgPSByZWYgMFxubGV0IGluc3RfdmFyX2NvdW50ID0gcmVmIDBcblxuKCogdHlwZSB0ICopXG50eXBlIG1ldGggPSBpdGVtXG5cbmxldCBuZXdfbWV0aG9kIHRhYmxlID1cbiAgbGV0IGluZGV4ID0gQXJyYXkubGVuZ3RoIHRhYmxlLm1ldGhvZHMgaW5cbiAgcmVzaXplIHRhYmxlIChpbmRleCArIDEpO1xuICBpbmRleFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBuYW1lID1cbiAgdHJ5XG4gICAgTWV0aHMuZmluZCBuYW1lIHRhYmxlLm1ldGhvZHNfYnlfbmFtZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBsYWJlbCA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gTWV0aHMuYWRkIG5hbWUgbGFiZWwgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiZWwgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsO1xuICAgIGxhYmVsXG5cbmxldCBnZXRfbWV0aG9kX2xhYmVscyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgbmFtZXNcblxubGV0IHNldF9tZXRob2QgdGFibGUgbGFiZWwgZWxlbWVudCA9XG4gIGluY3IgbWV0aG9kX2NvdW50O1xuICBpZiBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB0aGVuXG4gICAgcHV0IHRhYmxlIGxhYmVsIGVsZW1lbnRcbiAgZWxzZVxuICAgIHRhYmxlLmhpZGRlbl9tZXRocyA8LSAobGFiZWwsIGVsZW1lbnQpIDo6IHRhYmxlLmhpZGRlbl9tZXRoc1xuXG5sZXQgZ2V0X21ldGhvZCB0YWJsZSBsYWJlbCA9XG4gIHRyeSBMaXN0LmFzc29jIGxhYmVsIHRhYmxlLmhpZGRlbl9tZXRoc1xuICB3aXRoIE5vdF9mb3VuZCAtPiB0YWJsZS5tZXRob2RzLihsYWJlbClcblxubGV0IHRvX2xpc3QgYXJyID1cbiAgaWYgYXJyID09IG1hZ2ljIDAgdGhlbiBbXSBlbHNlIEFycmF5LnRvX2xpc3QgYXJyXG5cbmxldCBuYXJyb3cgdGFibGUgdmFycyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzID1cbiAgbGV0IHZhcnMgPSB0b19saXN0IHZhcnNcbiAgYW5kIHZpcnRfbWV0aHMgPSB0b19saXN0IHZpcnRfbWV0aHNcbiAgYW5kIGNvbmNyX21ldGhzID0gdG9fbGlzdCBjb25jcl9tZXRocyBpblxuICBsZXQgdmlydF9tZXRoX2xhYnMgPSBMaXN0Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgdmlydF9tZXRocyBpblxuICBsZXQgY29uY3JfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIGNvbmNyX21ldGhzIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LVxuICAgICAodGFibGUubWV0aG9kc19ieV9uYW1lLCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsLCB0YWJsZS5oaWRkZW5fbWV0aHMsXG4gICAgICB0YWJsZS52YXJzLCB2aXJ0X21ldGhfbGFicywgdmFycylcbiAgICAgOjogdGFibGUucHJldmlvdXNfc3RhdGVzO1xuICB0YWJsZS52YXJzIDwtXG4gICAgVmFycy5mb2xkXG4gICAgICAoZnVuIGxhYiBpbmZvIHR2YXJzIC0+XG4gICAgICAgIGlmIExpc3QubWVtIGxhYiB2YXJzIHRoZW4gVmFycy5hZGQgbGFiIGluZm8gdHZhcnMgZWxzZSB0dmFycylcbiAgICAgIHRhYmxlLnZhcnMgVmFycy5lbXB0eTtcbiAgbGV0IGJ5X25hbWUgPSByZWYgTWV0aHMuZW1wdHkgaW5cbiAgbGV0IGJ5X2xhYmVsID0gcmVmIExhYnMuZW1wdHkgaW5cbiAgTGlzdC5pdGVyMlxuICAgIChmdW4gbWV0IGxhYmVsIC0+XG4gICAgICAgYnlfbmFtZSA6PSBNZXRocy5hZGQgbWV0IGxhYmVsICFieV9uYW1lO1xuICAgICAgIGJ5X2xhYmVsIDo9XG4gICAgICAgICAgTGFicy5hZGQgbGFiZWxcbiAgICAgICAgICAgICh0cnkgTGFicy5maW5kIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZSlcbiAgICAgICAgICAgICFieV9sYWJlbClcbiAgICBjb25jcl9tZXRocyBjb25jcl9tZXRoX2xhYnM7XG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PSBMYWJzLmFkZCBsYWJlbCBmYWxzZSAhYnlfbGFiZWwpXG4gICAgdmlydF9tZXRocyB2aXJ0X21ldGhfbGFicztcbiAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtICFieV9uYW1lO1xuICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtICFieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRoX2xhYnMgdGhlbiBobSBlbHNlIG1ldDo6aG0pXG4gICAgICAgdGFibGUuaGlkZGVuX21ldGhzXG4gICAgICAgW11cblxubGV0IHdpZGVuIHRhYmxlID1cbiAgbGV0IChieV9uYW1lLCBieV9sYWJlbCwgc2F2ZWRfaGlkZGVuX21ldGhzLCBzYXZlZF92YXJzLCB2aXJ0X21ldGhzLCB2YXJzKSA9XG4gICAgTGlzdC5oZCB0YWJsZS5wcmV2aW91c19zdGF0ZXNcbiAgaW5cbiAgdGFibGUucHJldmlvdXNfc3RhdGVzIDwtIExpc3QudGwgdGFibGUucHJldmlvdXNfc3RhdGVzO1xuICB0YWJsZS52YXJzIDwtXG4gICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgKGZ1biBzIHYgLT4gVmFycy5hZGQgdiAoVmFycy5maW5kIHYgdGFibGUudmFycykgcylcbiAgICAgICBzYXZlZF92YXJzIHZhcnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSBieV9uYW1lO1xuICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIGJ5X2xhYmVsO1xuICB0YWJsZS5oaWRkZW5fbWV0aHMgPC1cbiAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoKGxhYiwgXykgYXMgbWV0KSBobSAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIGxhYiB2aXJ0X21ldGhzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIHNhdmVkX2hpZGRlbl9tZXRoc1xuXG5sZXQgbmV3X3Nsb3QgdGFibGUgPVxuICBsZXQgaW5kZXggPSB0YWJsZS5zaXplIGluXG4gIHRhYmxlLnNpemUgPC0gaW5kZXggKyAxO1xuICBpbmRleFxuXG5sZXQgbmV3X3ZhcmlhYmxlIHRhYmxlIG5hbWUgPVxuICB0cnkgVmFycy5maW5kIG5hbWUgdGFibGUudmFyc1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBpbmRleCA9IG5ld19zbG90IHRhYmxlIGluXG4gICAgaWYgbmFtZSA8PiBcIlwiIHRoZW4gdGFibGUudmFycyA8LSBWYXJzLmFkZCBuYW1lIGluZGV4IHRhYmxlLnZhcnM7XG4gICAgaW5kZXhcblxubGV0IHRvX2FycmF5IGFyciA9XG4gIGlmIGFyciA9IE9iai5tYWdpYyAwIHRoZW4gW3x8XSBlbHNlIGFyclxuXG5sZXQgbmV3X21ldGhvZHNfdmFyaWFibGVzIHRhYmxlIG1ldGhzIHZhbHMgPVxuICBsZXQgbWV0aHMgPSB0b19hcnJheSBtZXRocyBpblxuICBsZXQgbm1ldGhzID0gQXJyYXkubGVuZ3RoIG1ldGhzIGFuZCBudmFscyA9IEFycmF5Lmxlbmd0aCB2YWxzIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChubWV0aHMgKyBudmFscykgMCBpblxuICBmb3IgaSA9IDAgdG8gbm1ldGhzIC0gMSBkb1xuICAgIHJlcy4oaSkgPC0gZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBtZXRocy4oaSlcbiAgZG9uZTtcbiAgZm9yIGkgPSAwIHRvIG52YWxzIC0gMSBkb1xuICAgIHJlcy4oaStubWV0aHMpIDwtIG5ld192YXJpYWJsZSB0YWJsZSB2YWxzLihpKVxuICBkb25lO1xuICByZXNcblxubGV0IGdldF92YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnMgd2l0aCBOb3RfZm91bmQgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBnZXRfdmFyaWFibGVzIHRhYmxlIG5hbWVzID1cbiAgQXJyYXkubWFwIChnZXRfdmFyaWFibGUgdGFibGUpIG5hbWVzXG5cbmxldCBhZGRfaW5pdGlhbGl6ZXIgdGFibGUgZiA9XG4gIHRhYmxlLmluaXRpYWxpemVycyA8LSBmOjp0YWJsZS5pbml0aWFsaXplcnNcblxuKCpcbm1vZHVsZSBLZXlzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHRhZyBhcnJheSBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxubGV0IGtleV9tYXAgPSByZWYgS2V5cy5lbXB0eVxubGV0IGdldF9rZXkgdGFncyA6IGl0ZW0gPVxuICB0cnkgbWFnaWMgKEtleXMuZmluZCB0YWdzICFrZXlfbWFwIDogdGFnIGFycmF5KVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGtleV9tYXAgOj0gS2V5cy5hZGQgdGFncyB0YWdzICFrZXlfbWFwO1xuICAgIG1hZ2ljIHRhZ3NcbiopXG5cbmxldCBjcmVhdGVfdGFibGUgcHVibGljX21ldGhvZHMgPVxuICBpZiBwdWJsaWNfbWV0aG9kcyA9PSBtYWdpYyAwIHRoZW4gbmV3X3RhYmxlIFt8fF0gZWxzZVxuICAoKiBbcHVibGljX21ldGhvZHNdIG11c3QgYmUgaW4gYXNjZW5kaW5nIG9yZGVyIGZvciBieXRlY29kZSAqKVxuICBsZXQgdGFncyA9IEFycmF5Lm1hcCBwdWJsaWNfbWV0aG9kX2xhYmVsIHB1YmxpY19tZXRob2RzIGluXG4gIGxldCB0YWJsZSA9IG5ld190YWJsZSB0YWdzIGluXG4gIEFycmF5Lml0ZXJpXG4gICAgKGZ1biBpIG1ldCAtPlxuICAgICAgbGV0IGxhYiA9IGkqMisyIGluXG4gICAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgIDwtIE1ldGhzLmFkZCBtZXQgbGFiIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbClcbiAgICBwdWJsaWNfbWV0aG9kcztcbiAgdGFibGVcblxubGV0IGluaXRfY2xhc3MgdGFibGUgPVxuICBpbnN0X3Zhcl9jb3VudCA6PSAhaW5zdF92YXJfY291bnQgKyB0YWJsZS5zaXplIC0gMTtcbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIExpc3QucmV2IHRhYmxlLmluaXRpYWxpemVycztcbiAgcmVzaXplIHRhYmxlICgzICsgbWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemUpXG5cbmxldCBpbmhlcml0cyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzIChfLCBzdXBlciwgXywgZW52KSB0b3AgPVxuICBuYXJyb3cgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocztcbiAgbGV0IGluaXQgPVxuICAgIGlmIHRvcCB0aGVuIHN1cGVyIGNsYSBlbnYgZWxzZSBPYmoucmVwciAoc3VwZXIgY2xhKSBpblxuICB3aWRlbiBjbGE7XG4gIEFycmF5LmNvbmNhdFxuICAgIFtbfCByZXByIGluaXQgfF07XG4gICAgIG1hZ2ljIChBcnJheS5tYXAgKGdldF92YXJpYWJsZSBjbGEpICh0b19hcnJheSB2YWxzKSA6IGludCBhcnJheSk7XG4gICAgIEFycmF5Lm1hcFxuICAgICAgIChmdW4gbm0gLT4gcmVwciAoZ2V0X21ldGhvZCBjbGEgKGdldF9tZXRob2RfbGFiZWwgY2xhIG5tKSA6IGNsb3N1cmUpKVxuICAgICAgICh0b19hcnJheSBjb25jcl9tZXRocykgXVxuXG5sZXQgbWFrZV9jbGFzcyBwdWJfbWV0aHMgY2xhc3NfaW5pdCA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICAoZW52X2luaXQgKE9iai5yZXByIDApLCBjbGFzc19pbml0LCBlbnZfaW5pdCwgT2JqLnJlcHIgMClcblxudHlwZSBpbml0X3RhYmxlID0geyBtdXRhYmxlIGVudl9pbml0OiB0OyBtdXRhYmxlIGNsYXNzX2luaXQ6IHRhYmxlIC0+IHQgfVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxubGV0IG1ha2VfY2xhc3Nfc3RvcmUgcHViX21ldGhzIGNsYXNzX2luaXQgaW5pdF90YWJsZSA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICBpbml0X3RhYmxlLmNsYXNzX2luaXQgPC0gY2xhc3NfaW5pdDtcbiAgaW5pdF90YWJsZS5lbnZfaW5pdCA8LSBlbnZfaW5pdFxuXG5sZXQgZHVtbXlfY2xhc3MgbG9jID1cbiAgbGV0IHVuZGVmID0gZnVuIF8gLT4gcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYykgaW5cbiAgKE9iai5tYWdpYyB1bmRlZiwgdW5kZWYsIHVuZGVmLCBPYmoucmVwciAwKVxuXG4oKioqKiBPYmplY3RzICoqKiopXG5cbmxldCBjcmVhdGVfb2JqZWN0IHRhYmxlID1cbiAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgT2JqLm9iaiAoc2V0X2lkIG9iailcblxubGV0IGNyZWF0ZV9vYmplY3Rfb3B0IG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gICAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gICAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gICAgT2JqLm9iaiAoc2V0X2lkIG9iailcbiAgZW5kXG5cbmxldCByZWMgaXRlcl9mIG9iaiA9XG4gIGZ1bmN0aW9uXG4gICAgW10gICAtPiAoKVxuICB8IGY6OmwgLT4gZiBvYmo7IGl0ZXJfZiBvYmogbFxuXG5sZXQgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGUgPVxuICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgaWYgaW5pdHMgPD4gW10gdGhlblxuICAgIGl0ZXJfZiBvYmogaW5pdHNcblxubGV0IHJ1bl9pbml0aWFsaXplcnNfb3B0IG9ial8wIG9iaiB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9iaiBlbHNlIGJlZ2luXG4gICAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gICAgaWYgaW5pdHMgPD4gW10gdGhlbiBpdGVyX2Ygb2JqIGluaXRzO1xuICAgIG9ialxuICBlbmRcblxubGV0IGNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaXplcnMgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgbGV0IG9iaiA9IGNyZWF0ZV9vYmplY3QgdGFibGUgaW5cbiAgICBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZTtcbiAgICBvYmpcbiAgZW5kXG5cbigqIEVxdWl2YWxlbnQgcHJpbWl0aXZlIGJlbG93XG5sZXQgc2VuZHNlbGYgb2JqIGxhYiA9XG4gIChtYWdpYyBvYmogOiAob2JqIC0+IHQpIGFycmF5IGFycmF5KS4oMCkuKGxhYikgb2JqXG4qKVxuZXh0ZXJuYWwgc2VuZCA6IG9iaiAtPiB0YWcgLT4gJ2EgPSBcIiVzZW5kXCJcbmV4dGVybmFsIHNlbmRjYWNoZSA6IG9iaiAtPiB0YWcgLT4gdCAtPiBpbnQgLT4gJ2EgPSBcIiVzZW5kY2FjaGVcIlxuZXh0ZXJuYWwgc2VuZHNlbGYgOiBvYmogLT4gbGFiZWwgLT4gJ2EgPSBcIiVzZW5kc2VsZlwiXG5leHRlcm5hbCBnZXRfcHVibGljX21ldGhvZCA6IG9iaiAtPiB0YWcgLT4gY2xvc3VyZVxuICAgID0gXCJjYW1sX2dldF9wdWJsaWNfbWV0aG9kXCIgW0BAbm9hbGxvY11cblxuKCoqKiogdGFibGUgY29sbGVjdGlvbiBhY2Nlc3MgKioqKilcblxudHlwZSB0YWJsZXMgPVxuICB8IEVtcHR5XG4gIHwgQ29ucyBvZiB7a2V5IDogY2xvc3VyZTsgbXV0YWJsZSBkYXRhOiB0YWJsZXM7IG11dGFibGUgbmV4dDogdGFibGVzfVxuXG5sZXQgc2V0X2RhdGEgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhIDwtIHZcbmxldCBzZXRfbmV4dCB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHQgPC0gdlxubGV0IGdldF9rZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5rZXlcbmxldCBnZXRfZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGFcbmxldCBnZXRfbmV4dCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHRcblxubGV0IGJ1aWxkX3BhdGggbiBrZXlzIHRhYmxlcyA9XG4gIGxldCByZXMgPSBDb25zIHtrZXkgPSBPYmoubWFnaWMgMDsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gIGxldCByID0gcmVmIHJlcyBpblxuICBmb3IgaSA9IDAgdG8gbiBkb1xuICAgIHIgOj0gQ29ucyB7a2V5ID0ga2V5cy4oaSk7IGRhdGEgPSAhcjsgbmV4dCA9IEVtcHR5fVxuICBkb25lO1xuICBzZXRfZGF0YSB0YWJsZXMgIXI7XG4gIHJlc1xuXG5sZXQgcmVjIGxvb2t1cF9rZXlzIGkga2V5cyB0YWJsZXMgPVxuICBpZiBpIDwgMCB0aGVuIHRhYmxlcyBlbHNlXG4gIGxldCBrZXkgPSBrZXlzLihpKSBpblxuICBsZXQgcmVjIGxvb2t1cF9rZXkgKHRhYmxlczp0YWJsZXMpID1cbiAgICBpZiBnZXRfa2V5IHRhYmxlcyA9PSBrZXkgdGhlblxuICAgICAgbWF0Y2ggZ2V0X2RhdGEgdGFibGVzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IENvbnMgXyBhcyB0YWJsZXNfZGF0YSAtPlxuICAgICAgICAgIGxvb2t1cF9rZXlzIChpLTEpIGtleXMgdGFibGVzX2RhdGFcbiAgICBlbHNlXG4gICAgICBtYXRjaCBnZXRfbmV4dCB0YWJsZXMgd2l0aFxuICAgICAgfCBDb25zIF8gYXMgbmV4dCAtPiBsb29rdXBfa2V5IG5leHRcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBsZXQgbmV4dCA6IHRhYmxlcyA9IENvbnMge2tleTsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gICAgICAgICAgc2V0X25leHQgdGFibGVzIG5leHQ7XG4gICAgICAgICAgYnVpbGRfcGF0aCAoaS0xKSBrZXlzIG5leHRcbiAgaW5cbiAgbG9va3VwX2tleSB0YWJsZXNcblxubGV0IGxvb2t1cF90YWJsZXMgcm9vdCBrZXlzID1cbiAgbWF0Y2ggZ2V0X2RhdGEgcm9vdCB3aXRoXG4gIHwgQ29ucyBfIGFzIHJvb3RfZGF0YSAtPlxuICAgIGxvb2t1cF9rZXlzIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdF9kYXRhXG4gIHwgRW1wdHkgLT5cbiAgICBidWlsZF9wYXRoIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdFxuXG4oKioqKiBidWlsdGluIG1ldGhvZHMgKioqKilcblxubGV0IGdldF9jb25zdCB4ID0gcmV0IChmdW4gX29iaiAtPiB4KVxubGV0IGdldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIC0+IEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pXG5sZXQgZ2V0X2VudiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKVxubGV0IGdldF9tZXRoIG4gID0gcmV0IChmdW4gb2JqIC0+IHNlbmRzZWxmIG9iaiBuKVxubGV0IHNldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIHggLT4gQXJyYXkudW5zYWZlX3NldCBvYmogbiB4KVxubGV0IGFwcF9jb25zdCBmIHggPSByZXQgKGZ1biBfb2JqIC0+IGYgeClcbmxldCBhcHBfdmFyIGYgbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9lbnYgZiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfbWV0aCBmIG4gID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfY29uc3RfY29uc3QgZiB4IHkgPSByZXQgKGZ1biBfb2JqIC0+IGYgeCB5KVxubGV0IGFwcF9jb25zdF92YXIgZiB4IG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIHggKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9tZXRoIGYgeCBuID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF92YXJfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgeClcbmxldCBhcHBfbWV0aF9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikgeClcbmxldCBhcHBfY29uc3RfZW52IGYgeCBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9lbnZfY29uc3QgZiBlIG4geCA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIHgpXG5sZXQgbWV0aF9hcHBfY29uc3QgbiB4ID0gcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgeClcbmxldCBtZXRoX2FwcF92YXIgbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG0pKVxubGV0IG1ldGhfYXBwX2VudiBuIGUgbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbSkpXG5sZXQgbWV0aF9hcHBfbWV0aCBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoc2VuZHNlbGYgb2JqIG0pKVxubGV0IHNlbmRfY29uc3QgbSB4IGMgPVxuICByZXQgKGZ1biBvYmogLT4gc2VuZGNhY2hlIHggbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX3ZhciBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSA6IG9iaikgbVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9lbnYgbSBlIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZVxuICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldFxuICAgICAgICAgICAgICAgICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgOiBvYmopXG4gICAgICBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfbWV0aCBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoc2VuZHNlbGYgb2JqIG4pIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgbmV3X2NhY2hlIHRhYmxlID1cbiAgbGV0IG4gPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gIGxldCBuID1cbiAgICBpZiBuIG1vZCAyID0gMCB8fCBuID4gMiArIG1hZ2ljIHRhYmxlLm1ldGhvZHMuKDEpICogMTYgLyBTeXMud29yZF9zaXplXG4gICAgdGhlbiBuIGVsc2UgbmV3X21ldGhvZCB0YWJsZVxuICBpblxuICB0YWJsZS5tZXRob2RzLihuKSA8LSBPYmoubWFnaWMgMDtcbiAgblxuXG50eXBlIGltcGwgPVxuICAgIEdldENvbnN0XG4gIHwgR2V0VmFyXG4gIHwgR2V0RW52XG4gIHwgR2V0TWV0aFxuICB8IFNldFZhclxuICB8IEFwcENvbnN0XG4gIHwgQXBwVmFyXG4gIHwgQXBwRW52XG4gIHwgQXBwTWV0aFxuICB8IEFwcENvbnN0Q29uc3RcbiAgfCBBcHBDb25zdFZhclxuICB8IEFwcENvbnN0RW52XG4gIHwgQXBwQ29uc3RNZXRoXG4gIHwgQXBwVmFyQ29uc3RcbiAgfCBBcHBFbnZDb25zdFxuICB8IEFwcE1ldGhDb25zdFxuICB8IE1ldGhBcHBDb25zdFxuICB8IE1ldGhBcHBWYXJcbiAgfCBNZXRoQXBwRW52XG4gIHwgTWV0aEFwcE1ldGhcbiAgfCBTZW5kQ29uc3RcbiAgfCBTZW5kVmFyXG4gIHwgU2VuZEVudlxuICB8IFNlbmRNZXRoXG4gIHwgQ2xvc3VyZSBvZiBjbG9zdXJlXG5cbmxldCBtZXRob2RfaW1wbCB0YWJsZSBpIGFyciA9XG4gIGxldCBuZXh0ICgpID0gaW5jciBpOyBtYWdpYyBhcnIuKCFpKSBpblxuICBtYXRjaCBuZXh0KCkgd2l0aFxuICAgIEdldENvbnN0IC0+IGxldCB4IDogdCA9IG5leHQoKSBpbiBnZXRfY29uc3QgeFxuICB8IEdldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIGdldF92YXIgblxuICB8IEdldEVudiAgIC0+IGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGdldF9lbnYgZSBuXG4gIHwgR2V0TWV0aCAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X21ldGggblxuICB8IFNldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIHNldF92YXIgblxuICB8IEFwcENvbnN0IC0+IGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGFwcF9jb25zdCBmIHhcbiAgfCBBcHBWYXIgICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX3ZhciBmIG5cbiAgfCBBcHBFbnYgICAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gIGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfZW52IGYgZSBuXG4gIHwgQXBwTWV0aCAgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIGFwcF9tZXRoIGYgblxuICB8IEFwcENvbnN0Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCB5ID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfY29uc3QgZiB4IHlcbiAgfCBBcHBDb25zdFZhciAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF92YXIgZiB4IG5cbiAgfCBBcHBDb25zdEVudiAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0ICgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfZW52IGYgeCBlIG5cbiAgfCBBcHBDb25zdE1ldGggLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfbWV0aCBmIHggblxuICB8IEFwcFZhckNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX3Zhcl9jb25zdCBmIG4geFxuICB8IEFwcEVudkNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnZfY29uc3QgZiBlIG4geFxuICB8IEFwcE1ldGhDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9tZXRoX2NvbnN0IGYgbiB4XG4gIHwgTWV0aEFwcENvbnN0IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBtZXRoX2FwcF9jb25zdCBuIHhcbiAgfCBNZXRoQXBwVmFyIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF92YXIgbiBtXG4gIHwgTWV0aEFwcEVudiAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW5cbiAgICAgIG1ldGhfYXBwX2VudiBuIGUgbVxuICB8IE1ldGhBcHBNZXRoIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF9tZXRoIG4gbVxuICB8IFNlbmRDb25zdCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gc2VuZF9jb25zdCBtIHggKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kVmFyIC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gc2VuZF92YXIgbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZEVudiAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIHNlbmRfZW52IG0gZSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZE1ldGggLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX21ldGggbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgQ2xvc3VyZSBfIGFzIGNsbyAtPiBtYWdpYyBjbG9cblxubGV0IHNldF9tZXRob2RzIHRhYmxlIG1ldGhvZHMgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIG1ldGhvZHMgaW4gbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIGxldCBsYWJlbCA9IG1ldGhvZHMuKCFpKSBpbiBsZXQgY2xvID0gbWV0aG9kX2ltcGwgdGFibGUgaSBtZXRob2RzIGluXG4gICAgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBjbG87XG4gICAgaW5jciBpXG4gIGRvbmVcblxuKCoqKiogU3RhdGlzdGljcyAqKioqKVxuXG50eXBlIHN0YXRzID1cbiAgeyBjbGFzc2VzOiBpbnQ7IG1ldGhvZHM6IGludDsgaW5zdF92YXJzOiBpbnQ7IH1cblxubGV0IHN0YXRzICgpID1cbiAgeyBjbGFzc2VzID0gIXRhYmxlX2NvdW50O1xuICAgIG1ldGhvZHMgPSAhbWV0aG9kX2NvdW50OyBpbnN0X3ZhcnMgPSAhaW5zdF92YXJfY291bnQ7IH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzaGFwZSA9XG4gIHwgRnVuY3Rpb25cbiAgfCBMYXp5XG4gIHwgQ2xhc3NcbiAgfCBNb2R1bGUgb2Ygc2hhcGUgYXJyYXlcbiAgfCBWYWx1ZSBvZiBPYmoudFxuXG5sZXQgcmVjIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2Mgc2hhcGUgPVxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgIHwgRnVuY3Rpb24gLT5cbiAgICAgICBsZXQgcmVjIGZuICh4IDogJ2EpID1cbiAgICAgICAgIGxldCBmbicgOiAnYSAtPiAnYiA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICBpZiBmbiA9PSBmbicgdGhlblxuICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBmbicgeCBpblxuICAgICAgIE9iai5yZXByIGZuXG4gICAgfCBMYXp5IC0+XG4gICAgICAgbGV0IHJlYyBsID1cbiAgICAgICAgIGxhenkgKFxuICAgICAgICAgICBsZXQgbCcgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgICBpZiBsID09IGwnIHRoZW5cbiAgICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTGF6eS5mb3JjZSBsJykgaW5cbiAgICAgICBPYmoucmVwciBsXG4gICAgfCBDbGFzcyAtPlxuICAgICAgIE9iai5yZXByIChDYW1saW50ZXJuYWxPTy5kdW1teV9jbGFzcyBsb2MpXG4gICAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICAgIHwgVmFsdWUgdiAtPiB2XG4gIGluXG4gIE9iai5zZXRfZmllbGQgbW9kdSBpIGluaXRcblxuYW5kIGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcyA9XG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggY29tcHMgaW5cbiAgbGV0IG1vZHUgPSBPYmoubmV3X2Jsb2NrIDAgbGVuZ3RoIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBjb21wcy4oaSlcbiAgZG9uZTtcbiAgbW9kdVxuXG5sZXQgaW5pdF9tb2QgbG9jIHNoYXBlID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QuaW5pdF9tb2Q6IG5vdCBhIG1vZHVsZVwiXG5cbmxldCByZWMgdXBkYXRlX21vZF9maWVsZCBtb2R1IGkgc2hhcGUgbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBGdW5jdGlvbiB8IExhenkgLT5cbiAgICAgT2JqLnNldF9maWVsZCBtb2R1IGkgblxuICB8IFZhbHVlIF8gLT5cbiAgICAgKCkgKCogdGhlIHZhbHVlIGlzIGFscmVhZHkgdGhlcmUgKilcbiAgfCBDbGFzcyAtPlxuICAgICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA9IDQpO1xuICAgICBsZXQgY2wgPSBPYmouZmllbGQgbW9kdSBpIGluXG4gICAgIGZvciBqID0gMCB0byAzIGRvXG4gICAgICAgT2JqLnNldF9maWVsZCBjbCBqIChPYmouZmllbGQgbiBqKVxuICAgICBkb25lXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgKE9iai5maWVsZCBtb2R1IGkpIG5cblxuYW5kIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuID1cbiAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPj0gQXJyYXkubGVuZ3RoIGNvbXBzKTtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjb21wcyAtIDEgZG9cbiAgICB1cGRhdGVfbW9kX2ZpZWxkIG8gaSBjb21wcy4oaSkgKE9iai5maWVsZCBuIGkpXG4gIGRvbmVcblxubGV0IHVwZGF0ZV9tb2Qgc2hhcGUgbyBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gblxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QudXBkYXRlX21vZDogbm90IGEgbW9kdWxlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXSAoKiBpZ25vcmUgZGVwcmVjYXRpb24gd2FybmluZyBhYm91dCBtb2R1bGUgU3RyZWFtICopXG5cbnR5cGUgdG9rZW4gPVxuICAgIEt3ZCBvZiBzdHJpbmdcbiAgfCBJZGVudCBvZiBzdHJpbmdcbiAgfCBJbnQgb2YgaW50XG4gIHwgRmxvYXQgb2YgZmxvYXRcbiAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gIHwgQ2hhciBvZiBjaGFyXG5cbigqIFRoZSBzdHJpbmcgYnVmZmVyaW5nIG1hY2hpbmVyeSAqKVxuXG5sZXQgaW5pdGlhbF9idWZmZXIgPSBCeXRlcy5jcmVhdGUgMzJcblxubGV0IGJ1ZmZlciA9IHJlZiBpbml0aWFsX2J1ZmZlclxubGV0IGJ1ZnBvcyA9IHJlZiAwXG5cbmxldCByZXNldF9idWZmZXIgKCkgPSBidWZmZXIgOj0gaW5pdGlhbF9idWZmZXI7IGJ1ZnBvcyA6PSAwXG5cbmxldCBzdG9yZSBjID1cbiAgaWYgIWJ1ZnBvcyA+PSBCeXRlcy5sZW5ndGggIWJ1ZmZlciB0aGVuIGJlZ2luXG4gICAgbGV0IG5ld2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAoMiAqICFidWZwb3MpIGluXG4gICAgQnl0ZXMuYmxpdCAhYnVmZmVyIDAgbmV3YnVmZmVyIDAgIWJ1ZnBvcztcbiAgICBidWZmZXIgOj0gbmV3YnVmZmVyXG4gIGVuZDtcbiAgQnl0ZXMuc2V0ICFidWZmZXIgIWJ1ZnBvcyBjO1xuICBpbmNyIGJ1ZnBvc1xuXG5sZXQgZ2V0X3N0cmluZyAoKSA9XG4gIGxldCBzID0gQnl0ZXMuc3ViX3N0cmluZyAhYnVmZmVyIDAgIWJ1ZnBvcyBpbiBidWZmZXIgOj0gaW5pdGlhbF9idWZmZXI7IHNcblxuKCogVGhlIGxleGVyICopXG5cbmxldCBtYWtlX2xleGVyIGtleXdvcmRzID1cbiAgbGV0IGt3ZF90YWJsZSA9IEhhc2h0YmwuY3JlYXRlIDE3IGluXG4gIExpc3QuaXRlciAoZnVuIHMgLT4gSGFzaHRibC5hZGQga3dkX3RhYmxlIHMgKEt3ZCBzKSkga2V5d29yZHM7XG4gIGxldCBpZGVudF9vcl9rZXl3b3JkIGlkID1cbiAgICB0cnkgSGFzaHRibC5maW5kIGt3ZF90YWJsZSBpZCB3aXRoXG4gICAgICBOb3RfZm91bmQgLT4gSWRlbnQgaWRcbiAgYW5kIGtleXdvcmRfb3JfZXJyb3IgYyA9XG4gICAgbGV0IHMgPSBTdHJpbmcubWFrZSAxIGMgaW5cbiAgICB0cnkgSGFzaHRibC5maW5kIGt3ZF90YWJsZSBzIHdpdGhcbiAgICAgIE5vdF9mb3VuZCAtPiByYWlzZSAoU3RyZWFtLkVycm9yIChcIklsbGVnYWwgY2hhcmFjdGVyIFwiIF4gcykpXG4gIGluXG4gIGxldCByZWMgbmV4dF90b2tlbiAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnICcgfCAnXFwwMTAnIHwgJ1xcMDEzJyB8ICdcXDAwOScgfCAnXFwwMjYnIHwgJ1xcMDEyJykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBuZXh0X3Rva2VuIHN0cm1fX1xuICAgIHwgU29tZSAoJ0EnLi4nWicgfCAnYScuLid6JyB8ICdfJyB8ICdcXDE5MicuLidcXDI1NScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlIGM7IGlkZW50IHNcbiAgICB8IFNvbWVcbiAgICAgICAgKCchJyB8ICclJyB8ICcmJyB8ICckJyB8ICcjJyB8ICcrJyB8ICcvJyB8ICc6JyB8ICc8JyB8ICc9JyB8ICc+JyB8XG4gICAgICAgICAnPycgfCAnQCcgfCAnXFxcXCcgfCAnficgfCAnXicgfCAnfCcgfCAnKicgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlIGM7IGlkZW50MiBzXG4gICAgfCBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgYzsgbnVtYmVyIHNcbiAgICB8IFNvbWUgJ1xcJycgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgYyA9XG4gICAgICAgICAgdHJ5IGNoYXIgc3RybV9fIHdpdGhcbiAgICAgICAgICAgIFN0cmVhbS5GYWlsdXJlIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgICAgICBTb21lICdcXCcnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgU29tZSAoQ2hhciBjKVxuICAgICAgICB8IF8gLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgJ1xcXCInIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBTb21lIChTdHJpbmcgKHN0cmluZyBzKSlcbiAgICB8IFNvbWUgJy0nIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbmVnX251bWJlciBzdHJtX19cbiAgICB8IFNvbWUgJygnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfY29tbWVudCBzdHJtX19cbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IFNvbWUgKGtleXdvcmRfb3JfZXJyb3IgYylcbiAgICB8IF8gLT4gTm9uZVxuICBhbmQgaWRlbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZVxuICAgICAgICAoJ0EnLi4nWicgfCAnYScuLid6JyB8ICdcXDE5MicuLidcXDI1NScgfCAnMCcuLic5JyB8ICdfJyB8ICdcXCcnIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgaWRlbnQgc1xuICAgIHwgXyAtPiBTb21lIChpZGVudF9vcl9rZXl3b3JkIChnZXRfc3RyaW5nICgpKSlcbiAgYW5kIGlkZW50MiAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lXG4gICAgICAgICgnIScgfCAnJScgfCAnJicgfCAnJCcgfCAnIycgfCAnKycgfCAnLScgfCAnLycgfCAnOicgfCAnPCcgfCAnPScgfFxuICAgICAgICAgJz4nIHwgJz8nIHwgJ0AnIHwgJ1xcXFwnIHwgJ34nIHwgJ14nIHwgJ3wnIHwgJyonIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgaWRlbnQyIHNcbiAgICB8IF8gLT4gU29tZSAoaWRlbnRfb3Jfa2V5d29yZCAoZ2V0X3N0cmluZyAoKSkpXG4gIGFuZCBuZWdfbnVtYmVyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSAnLSc7IHN0b3JlIGM7IG51bWJlciBzXG4gICAgfCBfIC0+IGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgJy0nOyBpZGVudDIgc1xuICBhbmQgbnVtYmVyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgbnVtYmVyIHNcbiAgICB8IFNvbWUgJy4nIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgJy4nOyBkZWNpbWFsX3BhcnQgc1xuICAgIHwgU29tZSAoJ2UnIHwgJ0UnKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlICdFJzsgZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IFNvbWUgKEludCAoaW50X29mX3N0cmluZyAoZ2V0X3N0cmluZyAoKSkpKVxuICBhbmQgZGVjaW1hbF9wYXJ0IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgZGVjaW1hbF9wYXJ0IHNcbiAgICB8IFNvbWUgKCdlJyB8ICdFJykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSAnRSc7IGV4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBTb21lIChGbG9hdCAoZmxvYXRfb2Zfc3RyaW5nIChnZXRfc3RyaW5nICgpKSkpXG4gIGFuZCBleHBvbmVudF9wYXJ0IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcrJyB8ICctJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGVuZF9leHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gZW5kX2V4cG9uZW50X3BhcnQgc3RybV9fXG4gIGFuZCBlbmRfZXhwb25lbnRfcGFydCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGVuZF9leHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gU29tZSAoRmxvYXQgKGZsb2F0X29mX3N0cmluZyAoZ2V0X3N0cmluZyAoKSkpKVxuICBhbmQgc3RyaW5nIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJ1xcXCInIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgZ2V0X3N0cmluZyAoKVxuICAgIHwgU29tZSAnXFxcXCcgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgYyA9XG4gICAgICAgICAgdHJ5IGVzY2FwZSBzdHJtX18gd2l0aFxuICAgICAgICAgICAgU3RyZWFtLkZhaWx1cmUgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBzdHJpbmcgc1xuICAgIHwgU29tZSBjIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgc3RyaW5nIHNcbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIGNoYXIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnXFxcXCcgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBiZWdpbiB0cnkgZXNjYXBlIHN0cm1fXyB3aXRoXG4gICAgICAgICAgU3RyZWFtLkZhaWx1cmUgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNcbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIGVzY2FwZSAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICduJyAtPiBTdHJlYW0uanVuayBzdHJtX187ICdcXG4nXG4gICAgfCBTb21lICdyJyAtPiBTdHJlYW0uanVuayBzdHJtX187ICdcXHInXG4gICAgfCBTb21lICd0JyAtPiBTdHJlYW0uanVuayBzdHJtX187ICdcXHQnXG4gICAgfCBTb21lICgnMCcuLic5JyBhcyBjMSkgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBiZWdpbiBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMyKSAtPlxuICAgICAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgICAgICAgICAgU29tZSAoJzAnLi4nOScgYXMgYzMpIC0+XG4gICAgICAgICAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICAgICAgICAgIENoYXIuY2hyXG4gICAgICAgICAgICAgICAgICAoKENoYXIuY29kZSBjMSAtIDQ4KSAqIDEwMCArIChDaGFyLmNvZGUgYzIgLSA0OCkgKiAxMCArXG4gICAgICAgICAgICAgICAgICAgICAoQ2hhci5jb2RlIGMzIC0gNDgpKVxuICAgICAgICAgICAgfCBfIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNcbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIG1heWJlX2NvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKicgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBjb21tZW50IHM7IG5leHRfdG9rZW4gc1xuICAgIHwgXyAtPiBTb21lIChrZXl3b3JkX29yX2Vycm9yICcoJylcbiAgYW5kIGNvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKCcgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBtYXliZV9uZXN0ZWRfY29tbWVudCBzdHJtX19cbiAgICB8IFNvbWUgJyonIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfZW5kX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lIF8gLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjb21tZW50IHN0cm1fX1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgbWF5YmVfbmVzdGVkX2NvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBjb21tZW50IHM7IGNvbW1lbnQgc1xuICAgIHwgU29tZSBfIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY29tbWVudCBzdHJtX19cbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIG1heWJlX2VuZF9jb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJyknIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgKClcbiAgICB8IFNvbWUgJyonIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfZW5kX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lIF8gLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjb21tZW50IHN0cm1fX1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBpblxuICBmdW4gaW5wdXQgLT4gU3RyZWFtLmZyb20gKGZ1biBfY291bnQgLT4gbmV4dF90b2tlbiBpbnB1dClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9IHNpZ1xuXG4gIHR5cGUga2V5XG4gIHR5cGUgISdhIHRcbiAgdmFsIGNyZWF0ZSA6ID9yYW5kb20gKCp0aHdhcnQgdG9vbHMvc3luY19zdGRsaWJfZG9jcyopIDogYm9vbCAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIGZpbmRfb3B0IDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBpdGVyIDogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlIDogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCBmb2xkIDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgc3RhdHMgOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICB2YWwgY2xlYW46ICdhIHQgLT4gdW5pdFxuICB2YWwgc3RhdHNfYWxpdmU6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gICAgKCoqIHNhbWUgYXMgeyFzdGF0c30gYnV0IG9ubHkgY291bnQgdGhlIGFsaXZlIGJpbmRpbmdzICopXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuXG4gIHR5cGUga2V5XG4gIHR5cGUgISdhIHRcbiAgdmFsIGNyZWF0ZSA6IGludCAtPiAnYSB0XG4gIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICB2YWwgZmluZF9vcHQgOiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2UgOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIGZvbGQgOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIHZhbCBzdGF0cyA6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgR2VuSGFzaFRhYmxlID0gc3RydWN0XG5cbiAgdHlwZSBlcXVhbCA9XG4gIHwgRVRydWUgfCBFRmFsc2VcbiAgfCBFRGVhZCAoKiogdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHJlY2xhaW1lZCB0aGUgZGF0YSAqKVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkKEg6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgJ2EgY29udGFpbmVyXG4gICAgdmFsIGNyZWF0ZTogdCAtPiAnYSAtPiAnYSBjb250YWluZXJcbiAgICB2YWwgaGFzaDogaW50IC0+IHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAnYSBjb250YWluZXIgLT4gdCAtPiBlcXVhbFxuICAgIHZhbCBnZXRfZGF0YTogJ2EgY29udGFpbmVyIC0+ICdhIG9wdGlvblxuICAgIHZhbCBnZXRfa2V5OiAnYSBjb250YWluZXIgLT4gdCBvcHRpb25cbiAgICB2YWwgc2V0X2tleV9kYXRhOiAnYSBjb250YWluZXIgLT4gdCAtPiAnYSAtPiB1bml0XG4gICAgdmFsIGNoZWNrX2tleTogJ2EgY29udGFpbmVyIC0+IGJvb2xcbiAgZW5kKSA6IFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudFxuICA9IHN0cnVjdFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICAgICAgbXV0YWJsZSBkYXRhOiAnYSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICAgICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICAgICAgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gICAgICB9XG5cbiAgICBhbmQgJ2EgYnVja2V0bGlzdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgQ29ucyBvZiBpbnQgKCogaGFzaCBvZiB0aGUga2V5ICopICogJ2EgSC5jb250YWluZXIgKiAnYSBidWNrZXRsaXN0XG5cbiAgICAoKiogdGhlIGhhc2ggb2YgdGhlIGtleSBpcyBrZXB0IGluIG9yZGVyIHRvIHRlc3QgdGhlIGVxdWFsaXR5IG9mIHRoZSBoYXNoXG4gICAgICBiZWZvcmUgdGhlIGtleS4gU2FtZSByZWFzb24gYXMgZm9yIFdlYWsuTWFrZSAqKVxuXG4gICAgdHlwZSBrZXkgPSBILnRcblxuICAgIGxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICAgICAgaWYgeCA+PSBuIHRoZW4geFxuICAgICAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICAgICAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG4gICAgbGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSlcblxuICAgIGxldCBjcmVhdGUgPyhyYW5kb20gPSAoSGFzaHRibC5pc19yYW5kb21pemVkICgpKSkgaW5pdGlhbF9zaXplID1cbiAgICAgIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgICAgIGxldCBzZWVkID0gaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykgZWxzZSAwIGluXG4gICAgICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbiAgICBsZXQgY2xlYXIgaCA9XG4gICAgICBoLnNpemUgPC0gMDtcbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICBkb25lXG5cbiAgICBsZXQgcmVzZXQgaCA9XG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICAgICAgaWYgbGVuID0gaC5pbml0aWFsX3NpemUgdGhlblxuICAgICAgICBjbGVhciBoXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSBoLmluaXRpYWxfc2l6ZSBFbXB0eVxuICAgICAgZW5kXG5cbiAgICBsZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5LmNvcHkgaC5kYXRhIH1cblxuICAgIGxldCBrZXlfaW5kZXggaCBoa2V5ID1cbiAgICAgIGhrZXkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgY2xlYW4gaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIEVtcHR5XG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSB3aGVuIG5vdCAoSC5jaGVja19rZXkgYykgLT5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgfCBDb25zKGhrZXksIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBDb25zKGhrZXksIGMsIGRvX2J1Y2tldCByZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGQuKGkpIDwtIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgKCoqIHJlc2l6ZSBpcyB0aGUgb25seSBmdW5jdGlvbiB0byBkbyB0aGUgYWN0dWFsIGNsZWFuaW5nIG9mIGRlYWQga2V5c1xuICAgICAgICAocmVtb3ZlIGRvZXMgaXQganVzdCBiZWNhdXNlIGl0IGNvdWxkKS5cblxuICAgICAgICBUaGUgZ29hbCBpcyB0bzpcblxuICAgICAgICAtIG5vdCByZXNpemUgaW5maW5pdGVseSB3aGVuIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGFsaXZlIGtleXMgaXNcbiAgICAgICAgYm91bmRlZCBidXQga2V5cyBhcmUgY29udGludW91c2x5IGFkZGVkLiBUaGF0IHdvdWxkIGhhcHBlbiBpZlxuICAgICAgICB0aGlzIGZ1bmN0aW9uIGFsd2F5cyByZXNpemUuXG4gICAgICAgIC0gbm90IGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlciBlYWNoIGFkZGl0aW9uLCB0aGF0IHdvdWxkIGhhcHBlbiBpZiB0aGlzXG4gICAgICAgIGZ1bmN0aW9uIGRvbid0IHJlc2l6ZSBldmVuIHdoZW4gb25seSBvbmUga2V5IGlzIGRlYWQuXG5cbiAgICAgICAgU28gdGhlIGFsZ29yaXRobTpcbiAgICAgICAgLSBjbGVhbiB0aGUga2V5cyBiZWZvcmUgcmVzaXppbmdcbiAgICAgICAgLSBpZiB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBrZXlzIGlzIGxlc3MgdGhhbiBoYWxmIHRoZSBzaXplIG9mIHRoZVxuICAgICAgICBhcnJheSwgZG9uJ3QgcmVzaXplLlxuICAgICAgICAtIGlmIGl0IGlzIG1vcmUsIHJlc2l6ZS5cblxuICAgICAgICBUaGUgc2Vjb25kIHByb2JsZW0gcmVtYWlucyBpZiB0aGUgdGFibGUgcmVhY2hlcyB7IVN5cy5tYXhfYXJyYXlfbGVuZ3RofS5cblxuICAgICopXG4gICAgbGV0IHJlc2l6ZSBoID1cbiAgICAgIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICAgICAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gICAgICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgICAgIGNsZWFuIGg7XG4gICAgICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoICYmIGguc2l6ZSA+PSBvc2l6ZSBsc3IgMSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICAgICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAoKiBzbyB0aGF0IGtleV9pbmRleCBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgICAgIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgICAgIHwgQ29ucyhoa2V5LCBkYXRhLCByZXN0KSAtPlxuICAgICAgICAgICAgICBpbnNlcnRfYnVja2V0IHJlc3Q7ICgqIHByZXNlcnZlIG9yaWdpbmFsIG9yZGVyIG9mIGVsZW1lbnRzICopXG4gICAgICAgICAgICAgIGxldCBuaWR4ID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgICAgICAgICBuZGF0YS4obmlkeCkgPC0gQ29ucyhoa2V5LCBkYXRhLCBuZGF0YS4obmlkeCkpIGluXG4gICAgICAgIGZvciBpID0gMCB0byBvc2l6ZSAtIDEgZG9cbiAgICAgICAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICAgICAgICBkb25lXG4gICAgICBlbmRcblxuICAgIGxldCBhZGQgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnMoaGtleSwgY29udGFpbmVyLCBoLmRhdGEuKGkpKSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIHJlbW92ZV9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBoLnNpemUgPC0gaC5zaXplIC0gMTsgbmV4dFxuICAgICAgICAgICAgfCBFRmFsc2UgLT4gQ29ucyhoaywgYywgcmVtb3ZlX2J1Y2tldCBuZXh0KVxuICAgICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICAgICgqIFRoZSBkZWFkIGtleSBpcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQuIEl0IGlzIGFjY2VwdGFibGVcbiAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgZnVuY3Rpb24gc2luY2UgaXQgYWxyZWFkeSByZW1vdmVzIGEgYmluZGluZyAqKVxuICAgICAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgICAgIHJlbW92ZV9idWNrZXQgbmV4dFxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgQ29ucyhoayxjLG5leHQpIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dCkgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgaC5kYXRhLihpKSA8LSByZW1vdmVfYnVja2V0IGguZGF0YS4oaSlcblxuICAgICgqKiB7IWZpbmR9IGRvbid0IHJlbW92ZSBkZWFkIGtleXMgYmVjYXVzZSBpdCB3b3VsZCBiZSBzdXJwcmlzaW5nIGZvclxuICAgICAgICB0aGUgdXNlciB0aGF0IGEgcmVhZC1vbmx5IGZ1bmN0aW9uIG11dGF0ZXMgdGhlIHN0YXRlIChlZy4gY29uY3VycmVudFxuICAgICAgICBhY2Nlc3MpLiBTYW1lIGZvciB7IWl0ZXJ9LCB7IWZvbGR9LCB7IW1lbX0uXG4gICAgKilcbiAgICBsZXQgcmVjIGZpbmRfcmVjIGtleSBoa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmQgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlYyBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSBoa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIF8gYXMgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gW11cbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPiBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT4gZDo6ZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdCBpblxuICAgICAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KVxuXG5cbiAgICBsZXQgcmVwbGFjZSBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gSC5zZXRfa2V5X2RhdGEgYyBrZXkgaW5mb1xuICAgICAgICAgICAgfCBFRmFsc2UgfCBFRGVhZCAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKF8sXyxuZXh0KSAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIHRyeVxuICAgICAgICByZXBsYWNlX2J1Y2tldCBsXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25zKGhrZXksIGNvbnRhaW5lciwgbCk7XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrID0gaGtleSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gdHJ1ZVxuICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gbWVtX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoX2hrLCBfYywgcmVzdCkgLT4gbWVtX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuICAgIGxldCBpdGVyIGYgaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgICgpXG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgaywgU29tZSBkIC0+IGYgayBkXG4gICAgICAgICAgICBlbmQ7IGRvX2J1Y2tldCByZXN0IGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBkb19idWNrZXQgZC4oaSlcbiAgICAgIGRvbmVcblxuICAgIGxldCBmb2xkIGYgaCBpbml0ID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0IGIgYWNjdSA9XG4gICAgICAgIG1hdGNoIGIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgICBhY2N1XG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IGFjY3UgPSBiZWdpbiBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBhY2N1XG4gICAgICAgICAgICAgIHwgU29tZSBrLCBTb21lIGQgLT4gZiBrIGQgYWNjdVxuICAgICAgICAgICAgZW5kIGluXG4gICAgICAgICAgICBkb19idWNrZXQgcmVzdCBhY2N1ICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGxldCBhY2N1ID0gcmVmIGluaXQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgYWNjdSA6PSBkb19idWNrZXQgZC4oaSkgIWFjY3VcbiAgICAgIGRvbmU7XG4gICAgICAhYWNjdVxuXG4gICAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSBmIGggPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICBFbXB0eVxuICAgICAgICB8IENvbnMoaGssIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT5cbiAgICAgICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICAgICAgfCBTb21lIGssIFNvbWUgZCAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGYgayBkIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgbmV3X2QgLT5cbiAgICAgICAgICAgICAgICAgICAgSC5zZXRfa2V5X2RhdGEgYyBrIG5ld19kO1xuICAgICAgICAgICAgICAgICAgICBDb25zKGhrLCBjLCBkb19idWNrZXQgcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBkLihpKSA8LSBkb19idWNrZXQgZC4oaSlcbiAgICAgIGRvbmVcblxuICAgIGxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIHJlc3RcblxuICAgIGxldCBzdGF0cyBoID1cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBILmNoZWNrX2tleSBjIC0+XG4gICAgICAgICAgYnVja2V0X2xlbmd0aF9hbGl2ZSAoYWNjdSArIDEpIHJlc3RcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgcmVzdFxuXG4gICAgbGV0IHN0YXRzX2FsaXZlIGggPVxuICAgICAgbGV0IHNpemUgPSByZWYgMCBpblxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIpKSAwIGguZGF0YVxuICAgICAgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIgaW5cbiAgICAgICAgICAgc2l6ZSA6PSAhc2l6ZSArIGw7XG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gIXNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgdG9fc2VxIHRibCA9XG4gICAgICAoKiBjYXB0dXJlIGN1cnJlbnQgYXJyYXksIHNvIHRoYXQgZXZlbiBpZiB0aGUgdGFibGUgaXMgcmVzaXplZCB3ZVxuICAgICAgICAga2VlcCBpdGVyYXRpbmcgb24gdGhlIHNhbWUgYXJyYXkgKilcbiAgICAgIGxldCB0YmxfZGF0YSA9IHRibC5kYXRhIGluXG4gICAgICAoKiBzdGF0ZTogaW5kZXggKiBuZXh0IGJ1Y2tldCB0byB0cmF2ZXJzZSAqKVxuICAgICAgbGV0IHJlYyBhdXggaSBidWNrICgpID0gbWF0Y2ggYnVjayB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdGJsX2RhdGFcbiAgICAgICAgICAgIHRoZW4gU2VxLk5pbFxuICAgICAgICAgICAgZWxzZSBhdXgoaSsxKSB0YmxfZGF0YS4oaSkgKClcbiAgICAgICAgfCBDb25zIChfLCBjLCBuZXh0KSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gYXV4IGkgbmV4dCAoKVxuICAgICAgICAgICAgICB8IFNvbWUga2V5LCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgICAgIFNlcS5Db25zICgoa2V5LCBkYXRhKSwgYXV4IGkgbmV4dClcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGF1eCAwIEVtcHR5XG5cbiAgICBsZXQgdG9fc2VxX2tleXMgbSA9IFNlcS5tYXAgZnN0ICh0b19zZXEgbSlcblxuICAgIGxldCB0b19zZXFfdmFsdWVzIG0gPSBTZXEubWFwIHNuZCAodG9fc2VxIG0pXG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPYmpFcGggPSBPYmouRXBoZW1lcm9uXG5cbmxldCBfb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPlxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHhcbiAgfCBTb21lIHYgLT4gU29tZSAoT2JqLm9iaiB2KVxuXG4oKiogVGhlIHByZXZpb3VzIGZ1bmN0aW9uIGlzIHR5cGVkIHNvIHRoaXMgb25lIGlzIGFsc28gY29ycmVjdCAqKVxubGV0IG9ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT4gT2JqLm1hZ2ljIHhcblxuXG5tb2R1bGUgSzEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDFcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgZ2V0X2tleV9jb3B5ICh0OignaywnZCkgdCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgMClcbiAgbGV0IHNldF9rZXkgKHQ6KCdrLCdkKSB0KSAoazonaykgOiB1bml0ID0gT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5ICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IDBcbiAgbGV0IGNoZWNrX2tleSAodDooJ2ssJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAwXG5cbiAgbGV0IGJsaXRfa2V5ICh0MTooJ2ssJ2QpIHQpICh0MjooJ2ssJ2QpIHQpOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMCB0MiAwIDFcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgZ2V0X2RhdGFfY29weSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhX2NvcHkgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcbiAgbGV0IGNoZWNrX2RhdGEgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfZGF0YSB0XG4gIGxldCBibGl0X2RhdGEgKHQxOihfLCdkKSB0KSAodDI6KF8sJ2QpIHQpIDogdW5pdCA9IE9iakVwaC5ibGl0X2RhdGEgdDEgdDJcblxuICBsZXQgbWFrZSBrZXkgZGF0YSA9XG4gICAgbGV0IGVwaCA9IGNyZWF0ZSAoKSBpblxuICAgIHNldF9kYXRhIGVwaCBkYXRhO1xuICAgIHNldF9rZXkgZXBoIGtleTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleSA9XG4gICAgbWF0Y2ggZ2V0X2tleSBlcGggd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGsgd2hlbiBrID09IGtleSAtPiBnZXRfZGF0YSBlcGhcbiAgICB8IFNvbWUgXyAtPiBOb25lXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQgKEg6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChILnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgbGV0IGNyZWF0ZSBrIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBjXG4gICAgICBsZXQgaGFzaCA9IEguaGFzaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgICgqIHshZ2V0X2tleV9jb3B5fSBpcyBub3QgdXNlZCBiZWNhdXNlIHRoZSBlcXVhbGl0eSBvZiB0aGUgdXNlciBjYW4gYmVcbiAgICAgICAgICAgIHRoZSBwaHlzaWNhbCBlcXVhbGl0eSAqKVxuICAgICAgICBtYXRjaCBnZXRfa2V5IGMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrJyAtPlxuICAgICAgICAgICAgaWYgSC5lcXVhbCBrIGsnIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBnZXRfa2V5ID0gZ2V0X2tleVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgc2V0X2tleSBjIGs7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSA9IGNoZWNrX2tleVxuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIOiBIYXNodGJsLkhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2ssICdkKSB0ID0gKCdrLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrMV9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsgZCA9IGIgOj0gazFfbWFrZSBrIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleSBrIGUgPVxuICAgICAgbWF0Y2ggZ2V0X2tleSBlIHdpdGhcbiAgICAgIHwgU29tZSB4IHdoZW4geCA9PSBrIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsgPVxuICAgICAgbGV0IHJlYyBsb29wIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBoIDo6IHQgd2hlbiB0ZXN0X2tleSBrIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXkgaykgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgSzIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2sxLCAnazIsICdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrMSwnazIsJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDJcblxuICBsZXQgZ2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2sxIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IGdldF9rZXkxX2NvcHkgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2sxIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IDApXG4gIGxldCBzZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgKGs6J2sxKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgMCAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCAwXG4gIGxldCBjaGVja19rZXkxICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAxKVxuICBsZXQgZ2V0X2tleTJfY29weSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgMSlcbiAgbGV0IHNldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSAoazonazIpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAxIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IDFcbiAgbGV0IGNoZWNrX2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAxXG5cblxuICBsZXQgYmxpdF9rZXkxICh0MTooJ2sxLF8sXykgdCkgKHQyOignazEsXyxfKSB0KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAwIHQyIDAgMVxuICBsZXQgYmxpdF9rZXkyICh0MTooXywnazIsXykgdCkgKHQyOihfLCdrMixfKSB0KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAxIHQyIDEgMVxuICBsZXQgYmxpdF9rZXkxMiAodDE6KCdrMSwnazIsXykgdCkgKHQyOignazEsJ2syLF8pIHQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDAgdDIgMCAyXG5cbiAgbGV0IGdldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgZ2V0X2RhdGFfY29weSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnZCBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YV9jb3B5IHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgKGQ6J2QpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG4gIGxldCBjaGVja19kYXRhICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfZGF0YSB0XG4gIGxldCBibGl0X2RhdGEgKHQxOihfLF8sJ2QpIHQpICh0MjooXyxfLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGguYmxpdF9kYXRhIHQxIHQyXG5cbiAgbGV0IG1ha2Uga2V5MSBrZXkyIGRhdGEgPVxuICAgIGxldCBlcGggPSBjcmVhdGUgKCkgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBzZXRfa2V5MSBlcGgga2V5MTtcbiAgICBzZXRfa2V5MiBlcGgga2V5MjtcbiAgICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkga2V5MSk7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXkxIGtleTIgPVxuICAgIG1hdGNoIGdldF9rZXkxIGVwaCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5MSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBnZXRfa2V5MiBlcGggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5MiAtPiBnZXRfZGF0YSBlcGhcbiAgICAgICAgfCBTb21lIF8gLT4gTm9uZVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgXyAtPiBOb25lXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWRcbiAgICAgIChIMTpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpXG4gICAgICAoSDI6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChIMS50LEgyLnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgxLnQgKiBIMi50XG4gICAgICBsZXQgY3JlYXRlIChrMSxrMikgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleTEgYyBrMTsgc2V0X2tleTIgYyBrMjtcbiAgICAgICAgY1xuICAgICAgbGV0IGhhc2ggc2VlZCAoazEsazIpID1cbiAgICAgICAgSDEuaGFzaCBzZWVkIGsxICsgSDIuaGFzaCBzZWVkIGsyICogNjU1OTlcbiAgICAgIGxldCBlcXVhbCBjIChrMSxrMikgPVxuICAgICAgICBtYXRjaCBnZXRfa2V5MSBjLCBnZXRfa2V5MiBjIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIHwgXyAsIE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrMScsIFNvbWUgazInIC0+XG4gICAgICAgICAgICBpZiBIMS5lcXVhbCBrMSBrMScgJiYgSDIuZXF1YWwgazIgazInXG4gICAgICAgICAgICB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgZ2V0X2tleSBjID1cbiAgICAgICAgbWF0Y2ggZ2V0X2tleTEgYywgZ2V0X2tleTIgYyB3aXRoXG4gICAgICAgIHwgTm9uZSwgXyB8IF8gLCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGsxJywgU29tZSBrMicgLT4gU29tZSAoazEnLCBrMicpXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgKGsxLGsyKSBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9IGNoZWNrX2tleTEgYyAmJiBjaGVja19rZXkyIGNcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDE6IEhhc2h0YmwuSGFzaGVkVHlwZSkoSDI6IEhhc2h0YmwuSGFzaGVkVHlwZSk6XG4gICAgKFMgd2l0aCB0eXBlIGtleSA9IEgxLnQgKiBIMi50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDEudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgxLmVxdWFsXG4gICAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBIMS5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDIudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgyLmVxdWFsXG4gICAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBIMi5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2sxLCAnazIsICdkKSB0ID0gKCdrMSwgJ2syLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrMl9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsxIGsyIGQgPSBiIDo9IGsyX21ha2UgazEgazIgZCA6OiAhYlxuXG4gICAgbGV0IHRlc3Rfa2V5cyBrMSBrMiBlID1cbiAgICAgIG1hdGNoIGdldF9rZXkxIGUsIGdldF9rZXkyIGUgd2l0aFxuICAgICAgfCBTb21lIHgxLCBTb21lIHgyIHdoZW4geDEgPT0gazEgJiYgeDIgPT0gazIgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgazEgazIgPVxuICAgICAgbGV0IHJlYyBsb29wIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBoIDo6IHQgd2hlbiB0ZXN0X2tleXMgazEgazIgaCAtPiBiIDo9IExpc3QucmV2X2FwcGVuZCBhY2MgdFxuICAgICAgICB8IGggOjogdCAtPiBsb29wIHQgKGggOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgIWIgW11cblxuICAgIGxldCBmaW5kIGIgazEgazIgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXlzIGsxIGsyKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLbiA9IHN0cnVjdFxuICB0eXBlICgnaywnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSBuIDogKCdrLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSBuXG4gIGxldCBsZW5ndGggKGs6KCdrLCdkKSB0KSA6IGludCA9IE9iakVwaC5sZW5ndGgga1xuXG4gIGxldCBnZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgbilcbiAgbGV0IGdldF9rZXlfY29weSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiAnayBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCBuKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgKGs6J2spIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCBuIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgblxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgblxuXG4gIGxldCBibGl0X2tleSAodDE6KCdrLCdkKSB0KSAobzE6aW50KSAodDI6KCdrLCdkKSB0KSAobzI6aW50KSAobDppbnQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIG8xIHQyIG8yIGxcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgZ2V0X2RhdGFfY29weSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhX2NvcHkgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcbiAgbGV0IGNoZWNrX2RhdGEgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfZGF0YSB0XG4gIGxldCBibGl0X2RhdGEgKHQxOihfLCdkKSB0KSAodDI6KF8sJ2QpIHQpIDogdW5pdCA9IE9iakVwaC5ibGl0X2RhdGEgdDEgdDJcblxuICBsZXQgbWFrZSBrZXlzIGRhdGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGtleXMgaW5cbiAgICBsZXQgZXBoID0gY3JlYXRlIGwgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gc2V0X2tleSBlcGggaSBrZXlzLihpKSBkb25lO1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5cyA9XG4gICAgbGV0IGwgPSBsZW5ndGggZXBoIGluXG4gICAgdHJ5XG4gICAgICBpZiBsIDw+IEFycmF5Lmxlbmd0aCBrZXlzIHRoZW4gcmFpc2UgRXhpdDtcbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICBtYXRjaCBnZXRfa2V5IGVwaCBpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgfCBTb21lIGsgd2hlbiBrID09IGtleXMuKGkpIC0+ICgpXG4gICAgICAgIHwgU29tZSBfIC0+IHJhaXNlIEV4aXRcbiAgICAgIGRvbmU7XG4gICAgICBnZXRfZGF0YSBlcGhcbiAgICB3aXRoIEV4aXQgLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnQgYXJyYXlcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKEFycmF5Lmxlbmd0aCBrKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgY1xuICAgICAgbGV0IGhhc2ggc2VlZCBrID1cbiAgICAgICAgbGV0IGggPSByZWYgMCBpblxuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgaCA6PSBILmhhc2ggc2VlZCBrLihpKSAqIDY1NTk5ICsgIWg7XG4gICAgICAgIGRvbmU7XG4gICAgICAgICFoXG4gICAgICBsZXQgZXF1YWwgYyBrID1cbiAgICAgICAgbGV0IGxlbiAgPSBBcnJheS5sZW5ndGggayBpblxuICAgICAgICBsZXQgbGVuJyA9IGxlbmd0aCBjIGluXG4gICAgICAgIGlmIGxlbiAhPSBsZW4nIHRoZW4gR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHJlYyBlcXVhbF9hcnJheSBrIGMgaSA9XG4gICAgICAgICAgICBpZiBpIDwgMCB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBnZXRfa2V5IGMgaSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgICAgICAgfCBTb21lIGtpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGsuKGkpIGtpXG4gICAgICAgICAgICAgICAgICB0aGVuIGVxdWFsX2FycmF5IGsgYyAoaS0xKVxuICAgICAgICAgICAgICAgICAgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcXVhbF9hcnJheSBrIGMgKGxlbi0xKVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBnZXRfa2V5IGMgPVxuICAgICAgICBsZXQgbGVuID0gbGVuZ3RoIGMgaW5cbiAgICAgICAgaWYgbGVuID0gMCB0aGVuIFNvbWUgW3x8XVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIDAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGswIC0+XG4gICAgICAgICAgICAgIGxldCByZWMgZmlsbCBhIGkgPVxuICAgICAgICAgICAgICAgIGlmIGkgPCAxIHRoZW4gU29tZSBhXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIGkgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBraSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGEuKGkpIDwtIGtpO1xuICAgICAgICAgICAgICAgICAgICAgIGZpbGwgYSAoaS0xKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIGswIGluXG4gICAgICAgICAgICAgIGZpbGwgYSAobGVuLTEpXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgayBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgc2V0X2tleSBjIGkgay4oaSk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSBjID1cbiAgICAgICAgbGV0IHJlYyBjaGVjayBjIGkgPVxuICAgICAgICAgIGkgPCAwIHx8IChjaGVja19rZXkgYyBpICYmIGNoZWNrIGMgKGktMSkpIGluXG4gICAgICAgIGNoZWNrIGMgKGxlbmd0aCBjIC0gMSlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCBhcnJheSkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrLCAnZCkgdCA9ICgnaywgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQga25fbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrIGQgPSBiIDo9IGtuX21ha2UgayBkIDo6ICFiXG5cbiAgICBsZXQgdGVzdF9rZXlzIGsgZSA9XG4gICAgICB0cnlcbiAgICAgICAgaWYgbGVuZ3RoIGUgPD4gQXJyYXkubGVuZ3RoIGsgdGhlbiByYWlzZSBFeGl0O1xuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGsgLSAxIGRvXG4gICAgICAgICAgbWF0Y2ggZ2V0X2tleSBlIGkgd2l0aFxuICAgICAgICAgIHwgU29tZSB4IHdoZW4geCA9PSBrLihpKSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRydWVcbiAgICAgIHdpdGggRXhpdCAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsgPVxuICAgICAgbGV0IHJlYyBsb29wIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBoIDo6IHQgd2hlbiB0ZXN0X2tleXMgayBoIC0+IGIgOj0gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgIHwgaCA6OiB0IC0+IGxvb3AgdCAoaCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAhYiBbXVxuXG4gICAgbGV0IGZpbmQgYiBrID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5cyBrKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgTWFudWVsIFNlcnJhbm8gZXQgWGF2aWVyIExlcm95LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbQmlnYXJyYXldOiBsYXJnZSwgbXVsdGktZGltZW5zaW9uYWwsIG51bWVyaWNhbCBhcnJheXMgKilcblxuKCogVGhlc2UgdHlwZXMgaW4gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdGFibGVzIGluXG4gICAuLi90eXBpbmcvdHlwZW9wdC5tbCAqKVxuXG50eXBlIGZsb2F0MzJfZWx0ID0gRmxvYXQzMl9lbHRcbnR5cGUgZmxvYXQ2NF9lbHQgPSBGbG9hdDY0X2VsdFxudHlwZSBpbnQ4X3NpZ25lZF9lbHQgPSBJbnQ4X3NpZ25lZF9lbHRcbnR5cGUgaW50OF91bnNpZ25lZF9lbHQgPSBJbnQ4X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQxNl9zaWduZWRfZWx0ID0gSW50MTZfc2lnbmVkX2VsdFxudHlwZSBpbnQxNl91bnNpZ25lZF9lbHQgPSBJbnQxNl91bnNpZ25lZF9lbHRcbnR5cGUgaW50MzJfZWx0ID0gSW50MzJfZWx0XG50eXBlIGludDY0X2VsdCA9IEludDY0X2VsdFxudHlwZSBpbnRfZWx0ID0gSW50X2VsdFxudHlwZSBuYXRpdmVpbnRfZWx0ID0gTmF0aXZlaW50X2VsdFxudHlwZSBjb21wbGV4MzJfZWx0ID0gQ29tcGxleDMyX2VsdFxudHlwZSBjb21wbGV4NjRfZWx0ID0gQ29tcGxleDY0X2VsdFxuXG50eXBlICgnYSwgJ2IpIGtpbmQgPVxuICAgIEZsb2F0MzIgOiAoZmxvYXQsIGZsb2F0MzJfZWx0KSBraW5kXG4gIHwgRmxvYXQ2NCA6IChmbG9hdCwgZmxvYXQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3NpZ25lZCA6IChpbnQsIGludDhfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDhfdW5zaWduZWQgOiAoaW50LCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3NpZ25lZCA6IChpbnQsIGludDE2X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl91bnNpZ25lZCA6IChpbnQsIGludDE2X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDMyIDogKGludDMyLCBpbnQzMl9lbHQpIGtpbmRcbiAgfCBJbnQ2NCA6IChpbnQ2NCwgaW50NjRfZWx0KSBraW5kXG4gIHwgSW50IDogKGludCwgaW50X2VsdCkga2luZFxuICB8IE5hdGl2ZWludCA6IChuYXRpdmVpbnQsIG5hdGl2ZWludF9lbHQpIGtpbmRcbiAgfCBDb21wbGV4MzIgOiAoQ29tcGxleC50LCBjb21wbGV4MzJfZWx0KSBraW5kXG4gIHwgQ29tcGxleDY0IDogKENvbXBsZXgudCwgY29tcGxleDY0X2VsdCkga2luZFxuICB8IENoYXIgOiAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcblxudHlwZSBjX2xheW91dCA9IENfbGF5b3V0X3R5cFxudHlwZSBmb3J0cmFuX2xheW91dCA9IEZvcnRyYW5fbGF5b3V0X3R5cCAoKiopXG5cbnR5cGUgJ2EgbGF5b3V0ID1cbiAgICBDX2xheW91dDogY19sYXlvdXQgbGF5b3V0XG4gIHwgRm9ydHJhbl9sYXlvdXQ6IGZvcnRyYW5fbGF5b3V0IGxheW91dFxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfa2luZCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgZmxvYXQzMiA9IEZsb2F0MzJcbmxldCBmbG9hdDY0ID0gRmxvYXQ2NFxubGV0IGludDhfc2lnbmVkID0gSW50OF9zaWduZWRcbmxldCBpbnQ4X3Vuc2lnbmVkID0gSW50OF91bnNpZ25lZFxubGV0IGludDE2X3NpZ25lZCA9IEludDE2X3NpZ25lZFxubGV0IGludDE2X3Vuc2lnbmVkID0gSW50MTZfdW5zaWduZWRcbmxldCBpbnQzMiA9IEludDMyXG5sZXQgaW50NjQgPSBJbnQ2NFxubGV0IGludCA9IEludFxubGV0IG5hdGl2ZWludCA9IE5hdGl2ZWludFxubGV0IGNvbXBsZXgzMiA9IENvbXBsZXgzMlxubGV0IGNvbXBsZXg2NCA9IENvbXBsZXg2NFxubGV0IGNoYXIgPSBDaGFyXG5cbmxldCBraW5kX3NpemVfaW5fYnl0ZXMgOiB0eXBlIGEgYi4gKGEsIGIpIGtpbmQgLT4gaW50ID0gZnVuY3Rpb25cbiAgfCBGbG9hdDMyIC0+IDRcbiAgfCBGbG9hdDY0IC0+IDhcbiAgfCBJbnQ4X3NpZ25lZCAtPiAxXG4gIHwgSW50OF91bnNpZ25lZCAtPiAxXG4gIHwgSW50MTZfc2lnbmVkIC0+IDJcbiAgfCBJbnQxNl91bnNpZ25lZCAtPiAyXG4gIHwgSW50MzIgLT4gNFxuICB8IEludDY0IC0+IDhcbiAgfCBJbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBOYXRpdmVpbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBDb21wbGV4MzIgLT4gOFxuICB8IENvbXBsZXg2NCAtPiAxNlxuICB8IENoYXIgLT4gMVxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfbGF5b3V0IGVudW1lcmF0aW9uXG4gICBpbiBiaWdhcnJheS5oICopXG5cbmxldCBjX2xheW91dCA9IENfbGF5b3V0XG5sZXQgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dFxuXG5tb2R1bGUgR2VuYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdFxuICBleHRlcm5hbCBjcmVhdGU6ICgnYSwgJ2IpIGtpbmQgLT4gJ2MgbGF5b3V0IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgdFxuICAgICA9IFwiY2FtbF9iYV9jcmVhdGVcIlxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYVxuICAgICA9IFwiY2FtbF9iYV9nZXRfZ2VuZXJpY1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IGFycmF5IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfc2V0X2dlbmVyaWNcIlxuXG4gIGxldCByZWMgY2xvb3AgYXJyIGlkeCBmIGNvbCBtYXggPVxuICAgIGlmIGNvbCA9IEFycmF5Lmxlbmd0aCBpZHggdGhlbiBzZXQgYXJyIGlkeCAoZiBpZHgpXG4gICAgZWxzZSBmb3IgaiA9IDAgdG8gcHJlZCBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGNsb29wIGFyciBpZHggZiAoc3VjYyBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgcmVjIGZsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPCAwIHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAxIHRvIG1heC4oY29sKSBkb1xuICAgICAgICAgICBpZHguKGNvbCkgPC0gajtcbiAgICAgICAgICAgZmxvb3AgYXJyIGlkeCBmIChwcmVkIGNvbCkgbWF4XG4gICAgICAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW1zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltcyBpblxuICAgIG1hdGNoIEFycmF5Lmxlbmd0aCBkaW1zLCBsYXlvdXQgd2l0aFxuICAgIHwgMCwgXyAtPiBhcnJcbiAgICB8IGRsZW4sIENfbGF5b3V0IC0+IGNsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDApIGYgMCBkaW1zOyBhcnJcbiAgICB8IGRsZW4sIEZvcnRyYW5fbGF5b3V0IC0+IGZsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDEpIGYgKHByZWQgZGxlbikgZGltcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyclxuXG4gIGV4dGVybmFsIG51bV9kaW1zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcImNhbWxfYmFfbnVtX2RpbXNcIlxuICBleHRlcm5hbCBudGhfZGltOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX2JhX2RpbVwiXG4gIGxldCBkaW1zIGEgPVxuICAgIGxldCBuID0gbnVtX2RpbXMgYSBpblxuICAgIGxldCBkID0gQXJyYXkubWFrZSBuIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbi0xIGRvIGQuKGkpIDwtIG50aF9kaW0gYSBpIGRvbmU7XG4gICAgZFxuXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoQXJyYXkuZm9sZF9sZWZ0ICggKiApIDEgKGRpbXMgYXJyKSlcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc2xpY2VfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgc2xpY2VfcmlnaHQ6ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCBhcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zbGljZVwiXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG5lbmRcblxubW9kdWxlIEFycmF5MCA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8fF1cbiAgbGV0IGdldCBhcnIgPSBHZW5hcnJheS5nZXQgYXJyIFt8fF1cbiAgbGV0IHNldCBhcnIgPSBHZW5hcnJheS5zZXQgYXJyIFt8fF1cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPSBraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKVxuXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG5cbiAgbGV0IG9mX3ZhbHVlIGtpbmQgbGF5b3V0IHYgPVxuICAgIGxldCBhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGluXG4gICAgc2V0IGEgdjtcbiAgICBhXG4gIGxldCBpbml0ID0gb2ZfdmFsdWVcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzFcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuICBleHRlcm5hbCBkaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0gYXJyKVxuXG4gIGV4dGVybmFsIHN1YjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCAnYykgdCA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2UgKHR5cGUgdCkgKGEgOiAoXywgXywgdCkgR2VuYXJyYXkudCkgbiA9XG4gICAgbWF0Y2ggbGF5b3V0IGEgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gKEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XSA6IChfLCBfLCB0KSBHZW5hcnJheS50KVxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gKEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF06IChfLCBfLCB0KSBHZW5hcnJheS50KVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0gZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0gZiA9XG4gICAgZm9yIGkgPSAxIHRvIGRpbSBkbyB1bnNhZmVfc2V0IGFyciBpIChmIGkpIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbSBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbSBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IChBcnJheS5sZW5ndGggZGF0YSkgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkYXRhIC0gMSBkbyB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSBkYXRhLihpKSBkb25lO1xuICAgIGJhXG5lbmRcblxubW9kdWxlIEFycmF5MiA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTJ8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8yXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8yXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8yXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzJcIlxuICBleHRlcm5hbCBkaW0xOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwgZGltMjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMlwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbTEgYXJyKSAqIChkaW0yIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2VfbGVmdCBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0IGEgbiA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF1cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbTEgZG9cbiAgICAgIGZvciBqID0gMCB0byBwcmVkIGRpbTIgZG9cbiAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIChmIGkgailcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBmID1cbiAgICBmb3IgaiA9IDEgdG8gZGltMiBkb1xuICAgICAgZm9yIGkgPSAxIHRvIGRpbTEgZG9cbiAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIChmIGkgailcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0xIGRpbTIgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBkaW0xID0gQXJyYXkubGVuZ3RoIGRhdGEgaW5cbiAgICBsZXQgZGltMiA9IGlmIGRpbTEgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKSBpblxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGRpbTEgLSAxIGRvXG4gICAgICBsZXQgcm93ID0gZGF0YS4oaSkgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCByb3cgPD4gZGltMiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkyLm9mX2FycmF5OiBub24tcmVjdGFuZ3VsYXIgZGF0YVwiKTtcbiAgICAgIGZvciBqID0gMCB0byBkaW0yIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSAoaiArIG9mcykgcm93LihqKVxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkzID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW0xOyBkaW0yOyBkaW0zfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3NldF8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2FcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfM1wiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfM1wiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwgZGltMzogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fM1wiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbTEgYXJyKSAqIChkaW0yIGFycikgKiAoZGltMyBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OlxuICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0XzEgYSBuIG0gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzEgYSBuIG0gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bjsgbXxdXG4gIGxldCBzbGljZV9sZWZ0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdXG4gIGxldCBzbGljZV9yaWdodF8yIGEgbiA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF1cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICBmb3IgayA9IDAgdG8gcHJlZCBkaW0zIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGZvciBrID0gMSB0byBkaW0zIGRvXG4gICAgICBmb3IgaiA9IDEgdG8gZGltMiBkb1xuICAgICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiBrIChmIGkgaiBrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBkaW0xID0gQXJyYXkubGVuZ3RoIGRhdGEgaW5cbiAgICBsZXQgZGltMiA9IGlmIGRpbTEgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKSBpblxuICAgIGxldCBkaW0zID0gaWYgZGltMiA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApLigwKSBpblxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIGxldCBjb2wgPSByb3cuKGopIGluXG4gICAgICAgIGlmIEFycmF5Lmxlbmd0aCBjb2wgPD4gZGltMyB0aGVuXG4gICAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhXCIpO1xuICAgICAgICBmb3IgayA9IDAgdG8gZGltMyAtIDEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSAoaiArIG9mcykgKGsgKyBvZnMpIGNvbC4oaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTA6ICgnYSwgJ2IsICdjKSBBcnJheTAudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTE6ICgnYSwgJ2IsICdjKSBBcnJheTEudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTI6ICgnYSwgJ2IsICdjKSBBcnJheTIudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTM6ICgnYSwgJ2IsICdjKSBBcnJheTMudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5sZXQgYXJyYXkwX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMCB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5MF9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkxX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMSB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5MV9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkyX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMiB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5Ml9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkzX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMyB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5M19vZl9nZW5hcnJheVwiXG5cbmV4dGVybmFsIHJlc2hhcGU6XG4gICAoJ2EsICdiLCAnYykgR2VuYXJyYXkudCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCJjYW1sX2JhX3Jlc2hhcGVcIlxubGV0IHJlc2hhcGVfMCBhID0gcmVzaGFwZSBhIFt8fF1cbmxldCByZXNoYXBlXzEgYSBkaW0xID0gcmVzaGFwZSBhIFt8ZGltMXxdXG5sZXQgcmVzaGFwZV8yIGEgZGltMSBkaW0yID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yfF1cbmxldCByZXNoYXBlXzMgYSBkaW0xIGRpbTIgZGltMyA9IHJlc2hhcGUgYSBbfGRpbTE7ZGltMjtkaW0zfF1cblxuKCogRm9yY2UgY2FtbF9iYV9nZXRfezEsMiwzLE59IHRvIGJlIGxpbmtlZCBpbiwgc2luY2Ugd2UgZG9uJ3QgcmVmZXJcbiAgIHRvIHRob3NlIHByaW1pdGl2ZXMgZGlyZWN0bHkgaW4gdGhpcyBmaWxlICopXG5cbmxldCBfID1cbiAgbGV0IF8gPSBHZW5hcnJheS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTEuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkyLmdldCBpblxuICBsZXQgXyA9IEFycmF5My5nZXQgaW5cbiAgKClcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cbmV4dGVybmFsIGdldDE6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMVwiXG5leHRlcm5hbCBnZXQyOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzJcIlxuZXh0ZXJuYWwgZ2V0MzogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8zXCJcbmV4dGVybmFsIHNldDE6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMVwiXG5leHRlcm5hbCBzZXQyOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzJcIlxuZXh0ZXJuYWwgc2V0MzogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8zXCJcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDYXRhbGEgY29tcGlsZXIsIGEgc3BlY2lmaWNhdGlvbiBsYW5ndWFnZSBmb3IgdGF4XG4gICBhbmQgc29jaWFsIGJlbmVmaXRzIGNvbXB1dGF0aW9uIHJ1bGVzLiBDb3B5cmlnaHQgKEMpIDIwMjAgSW5yaWEsIGNvbnRyaWJ1dG9yOlxuICAgRGVuaXMgTWVyaWdvdXggPGRlbmlzLm1lcmlnb3V4QGlucmlhLmZyPiwgRW1pbGUgUm9sbGV5IDxlbWlsZS5yb2xsZXlAdHV0YS5pbz5cblxuICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3RcbiAgIHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mXG4gICB0aGUgTGljZW5zZSBhdFxuXG4gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUXG4gICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGVcbiAgIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyXG4gICB0aGUgTGljZW5zZS4gKilcblxuKCogQW4gaW50ZWdlciBudW1iZXIgb2YgY2VudHMgKilcbnR5cGUgbW9uZXkgPSBaLnRcbnR5cGUgaW50ZWdlciA9IFoudFxudHlwZSBkZWNpbWFsID0gUS50XG50eXBlIGRhdGUgPSBEYXRlc19jYWxjLkRhdGVzLmRhdGVcbnR5cGUgZHVyYXRpb24gPSBEYXRlc19jYWxjLkRhdGVzLnBlcmlvZFxudHlwZSAnYSBlb3B0aW9uID0gRU5vbmUgb2YgdW5pdCB8IEVTb21lIG9mICdhXG5cbnR5cGUgc291cmNlX3Bvc2l0aW9uID0ge1xuICBmaWxlbmFtZSA6IHN0cmluZztcbiAgc3RhcnRfbGluZSA6IGludDtcbiAgc3RhcnRfY29sdW1uIDogaW50O1xuICBlbmRfbGluZSA6IGludDtcbiAgZW5kX2NvbHVtbiA6IGludDtcbiAgbGF3X2hlYWRpbmdzIDogc3RyaW5nIGxpc3Q7XG59XG5bQEBkZXJpdmluZyB5b2pzb25fb2ZdXG5cbmV4Y2VwdGlvbiBFbXB0eUVycm9yXG5leGNlcHRpb24gQXNzZXJ0aW9uRmFpbGVkIG9mIHNvdXJjZV9wb3NpdGlvblxuZXhjZXB0aW9uIENvbmZsaWN0RXJyb3Igb2Ygc291cmNlX3Bvc2l0aW9uXG5leGNlcHRpb24gVW5jb21wYXJhYmxlRHVyYXRpb25zXG5leGNlcHRpb24gSW5kaXZpc2FibGVEdXJhdGlvbnNcbmV4Y2VwdGlvbiBJbXBvc3NpYmxlRGF0ZVxuZXhjZXB0aW9uIE5vVmFsdWVQcm92aWRlZCBvZiBzb3VyY2VfcG9zaXRpb25cblxubGV0IG1vbmV5X29mX2NlbnRzX3N0cmluZyAoY2VudHMgOiBzdHJpbmcpIDogbW9uZXkgPSBaLm9mX3N0cmluZyBjZW50c1xubGV0IG1vbmV5X29mX3VuaXRzX2ludCAodW5pdHMgOiBpbnQpIDogbW9uZXkgPSBaLihvZl9pbnQgdW5pdHMgKiBvZl9pbnQgMTAwKVxubGV0IG1vbmV5X29mX2NlbnRzX2ludGVnZXIgKGNlbnRzIDogaW50ZWdlcikgOiBtb25leSA9IGNlbnRzXG5sZXQgbW9uZXlfdG9fZmxvYXQgKG0gOiBtb25leSkgOiBmbG9hdCA9IFoudG9fZmxvYXQgbSAvLiAxMDAuXG5cbmxldCBtb25leV9vZl9kZWNpbWFsIChkIDogZGVjaW1hbCkgOiBtb25leSA9XG4gIFEudG9fYmlnaW50IChRLm11bCBkIChRLm9mX2ludCAxMDApKVxuXG5sZXQgbW9uZXlfdG9fc3RyaW5nIChtIDogbW9uZXkpIDogc3RyaW5nID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJS4yZlwiIFEuKHRvX2Zsb2F0IChvZl9iaWdpbnQgbSAvIG9mX2ludCAxMDApKVxuXG5sZXQgbW9uZXlfdG9fY2VudHMgbSA9IG1cblxubGV0IG1vbmV5X3JvdW5kIChtIDogbW9uZXkpIDogbW9uZXkgPVxuICBsZXQgdW5pdHMsIGNlbnRzID0gWi5kaXZfcmVtIG0gKFoub2ZfaW50IDEwMCkgaW5cbiAgKCogSWYgW21dIGlzIG5lZ2F0aXZlLCBbY2VudHNdIHdpbGwgYWxzbyBiZSBuZWdhdGl2ZS4gKilcbiAgaWYgWi4oYWJzIGNlbnRzIDwgb2ZfaW50IDUwKSB0aGVuIFouKHVuaXRzICogb2ZfaW50IDEwMClcbiAgZWxzZSBaLigodW5pdHMgKyBvZl9pbnQgKHNpZ24gdW5pdHMpKSAqIG9mX2ludCAxMDApXG5cbmxldCBkZWNpbWFsX29mX3N0cmluZyAoZCA6IHN0cmluZykgOiBkZWNpbWFsID0gUS5vZl9zdHJpbmcgZFxubGV0IGRlY2ltYWxfdG9fZmxvYXQgKGQgOiBkZWNpbWFsKSA6IGZsb2F0ID0gUS50b19mbG9hdCBkXG5sZXQgZGVjaW1hbF9vZl9mbG9hdCAoZCA6IGZsb2F0KSA6IGRlY2ltYWwgPSBRLm9mX2Zsb2F0IGRcbmxldCBkZWNpbWFsX29mX2ludGVnZXIgKGQgOiBpbnRlZ2VyKSA6IGRlY2ltYWwgPSBRLm9mX2JpZ2ludCBkXG5cbmxldCBkZWNpbWFsX3RvX3N0cmluZyB+KG1heF9wcmVjX2RpZ2l0cyA6IGludCkgKGkgOiBkZWNpbWFsKSA6IHN0cmluZyA9XG4gIGxldCBzaWduID0gUS5zaWduIGkgaW5cbiAgbGV0IG4gPSBaLmFicyAoUS5udW0gaSkgaW5cbiAgbGV0IGQgPSBaLmFicyAoUS5kZW4gaSkgaW5cbiAgbGV0IGludF9wYXJ0ID0gWi5lZGl2IG4gZCBpblxuICBsZXQgbiA9IHJlZiAoWi5lcmVtIG4gZCkgaW5cbiAgbGV0IGRpZ2l0cyA9IHJlZiBbXSBpblxuICBsZXQgbGVhZGluZ196ZXJvZXMgKGRpZ2l0cyA6IFoudCBsaXN0KSA6IGludCA9XG4gICAgbWF0Y2hcbiAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICAoZnVuIGRpZ2l0IG51bV9sZWFkaW5nX3plcm9lcyAtPlxuICAgICAgICAgIG1hdGNoIG51bV9sZWFkaW5nX3plcm9lcyB3aXRoXG4gICAgICAgICAgfCBgRW5kIF8gLT4gbnVtX2xlYWRpbmdfemVyb2VzXG4gICAgICAgICAgfCBgQmVnaW4gaSAtPiBpZiBaLihkaWdpdCA9IHplcm8pIHRoZW4gYEJlZ2luIChpICsgMSkgZWxzZSBgRW5kIGkpXG4gICAgICAgIGRpZ2l0cyAoYEJlZ2luIDApXG4gICAgd2l0aFxuICAgIHwgYEVuZCBpIC0+IGlcbiAgICB8IGBCZWdpbiBpIC0+IGlcbiAgaW5cbiAgd2hpbGVcbiAgICAhbiA8PiBaLnplcm9cbiAgICAmJiBMaXN0Lmxlbmd0aCAhZGlnaXRzIC0gbGVhZGluZ196ZXJvZXMgIWRpZ2l0cyA8IG1heF9wcmVjX2RpZ2l0c1xuICBkb1xuICAgIG4gOj0gWi5tdWwgIW4gKFoub2ZfaW50IDEwKTtcbiAgICBkaWdpdHMgOj0gWi5lZGl2ICFuIGQgOjogIWRpZ2l0cztcbiAgICBuIDo9IFouZXJlbSAhbiBkXG4gIGRvbmU7XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVzJWEuJWElc1wiXG4gICAgKGlmIHNpZ24gPCAwIHRoZW4gXCItXCIgZWxzZSBcIlwiKVxuICAgIFoucHBfcHJpbnQgaW50X3BhcnRcbiAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgICB+cHBfc2VwOihmdW4gX2ZtdCAoKSAtPiAoKSlcbiAgICAgICAoZnVuIGZtdCBkaWdpdCAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYVwiIFoucHBfcHJpbnQgZGlnaXQpKVxuICAgIChMaXN0LnJldiAhZGlnaXRzKVxuICAgIChpZiBMaXN0Lmxlbmd0aCAhZGlnaXRzIC0gbGVhZGluZ196ZXJvZXMgIWRpZ2l0cyA9IG1heF9wcmVjX2RpZ2l0cyB0aGVuIFwi4oCmXCJcbiAgICBlbHNlIFwiXCIpXG5cbmxldCBkZWNpbWFsX3JvdW5kIChxIDogZGVjaW1hbCkgOiBkZWNpbWFsID1cbiAgKCogSW1wbGVtZW50cyB0aGUgd29ya2Fyb3VuZCBieVxuICAgICBodHRwczovL2dtcGxpYi5vcmcvbGlzdC1hcmNoaXZlcy9nbXAtZGlzY3Vzcy8yMDA5LU1heS8wMDM3NjcuaHRtbCAqKVxuICBsZXQgbiA9IFEubnVtIHEgaW5cbiAgbGV0IGQgPSBRLmRlbiBxIGluXG4gIFEub2ZfYmlnaW50IFouKGZkaXYgKChvZl9pbnQgMiAqIG4pICsgZCkgKG9mX2ludCAyICogZCkpXG5cbmxldCBkZWNpbWFsX29mX21vbmV5IChtIDogbW9uZXkpIDogZGVjaW1hbCA9XG4gIFEuZGl2IChRLm9mX2JpZ2ludCBtKSAoUS5vZl9pbnQgMTAwKVxuXG5sZXQgaW50ZWdlcl9vZl9zdHJpbmcgKHMgOiBzdHJpbmcpIDogaW50ZWdlciA9IFoub2Zfc3RyaW5nIHNcbmxldCBpbnRlZ2VyX3RvX3N0cmluZyAoaSA6IGludGVnZXIpIDogc3RyaW5nID0gWi50b19zdHJpbmcgaVxubGV0IGludGVnZXJfdG9faW50IChpIDogaW50ZWdlcikgOiBpbnQgPSBaLnRvX2ludCBpXG5sZXQgaW50ZWdlcl9vZl9pbnQgKGkgOiBpbnQpIDogaW50ZWdlciA9IFoub2ZfaW50IGlcbmxldCBpbnRlZ2VyX2V4cG9uZW50aWF0aW9uIChpIDogaW50ZWdlcikgKGUgOiBpbnQpIDogaW50ZWdlciA9IFoucG93IGkgZVxubGV0IGludGVnZXJfbG9nMiA9IFoubG9nMlxuXG5sZXQgeWVhcl9vZl9kYXRlIChkIDogZGF0ZSkgOiBpbnRlZ2VyID1cbiAgbGV0IHksIF8sIF8gPSBEYXRlc19jYWxjLkRhdGVzLmRhdGVfdG9feW1kIGQgaW5cbiAgWi5vZl9pbnQgeVxuXG5sZXQgbW9udGhfbnVtYmVyX29mX2RhdGUgKGQgOiBkYXRlKSA6IGludGVnZXIgPVxuICBsZXQgXywgbSwgXyA9IERhdGVzX2NhbGMuRGF0ZXMuZGF0ZV90b195bWQgZCBpblxuICBaLm9mX2ludCBtXG5cbmxldCBpc19sZWFwX3llYXIgKHkgOiBpbnRlZ2VyKSA9XG4gIGxldCB5ID0gWi50b19pbnQgeSBpblxuICBEYXRlc19jYWxjLkRhdGVzLmlzX2xlYXBfeWVhciB5XG5cbmxldCBkYXlfb2ZfbW9udGhfb2ZfZGF0ZSAoZCA6IGRhdGUpIDogaW50ZWdlciA9XG4gIGxldCBfLCBfLCBkID0gRGF0ZXNfY2FsYy5EYXRlcy5kYXRlX3RvX3ltZCBkIGluXG4gIFoub2ZfaW50IGRcblxubGV0IGRhdGVfb2ZfbnVtYmVycyAoeWVhciA6IGludCkgKG1vbnRoIDogaW50KSAoZGF5IDogaW50KSA6IGRhdGUgPVxuICB0cnkgRGF0ZXNfY2FsYy5EYXRlcy5tYWtlX2RhdGUgfnllYXIgfm1vbnRoIH5kYXlcbiAgd2l0aCBfIC0+IHJhaXNlIEltcG9zc2libGVEYXRlXG5cbmxldCBkYXRlX3RvX3N0cmluZyAoZCA6IGRhdGUpIDogc3RyaW5nID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBEYXRlc19jYWxjLkRhdGVzLmZvcm1hdF9kYXRlIGRcblxubGV0IGZpcnN0X2RheV9vZl9tb250aCA9IERhdGVzX2NhbGMuRGF0ZXMuZmlyc3RfZGF5X29mX21vbnRoXG5sZXQgbGFzdF9kYXlfb2ZfbW9udGggPSBEYXRlc19jYWxjLkRhdGVzLmxhc3RfZGF5X29mX21vbnRoXG5cbmxldCBkdXJhdGlvbl9vZl9udW1iZXJzICh5ZWFyIDogaW50KSAobW9udGggOiBpbnQpIChkYXkgOiBpbnQpIDogZHVyYXRpb24gPVxuICBEYXRlc19jYWxjLkRhdGVzLm1ha2VfcGVyaW9kIH55ZWFyczp5ZWFyIH5tb250aHM6bW9udGggfmRheXM6ZGF5XG5cbmxldCBkdXJhdGlvbl90b19zdHJpbmcgKGQgOiBkdXJhdGlvbikgOiBzdHJpbmcgPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIERhdGVzX2NhbGMuRGF0ZXMuZm9ybWF0X3BlcmlvZCBkXG4oKiBicmVha3MgcHJldmlvdXMgZm9ybWF0ICopXG4oKiBsZXQgeCwgeSwgeiA9IENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLnltZCBkIGluXG4gKiBsZXQgdG9fcHJpbnQgPVxuICogICBMaXN0LmZpbHRlciAoZnVuIChhLCBfKSAtPiBhIDw+IDApIFt4LCBcInllYXJzXCI7IHksIFwibW9udGhzXCI7IHosIFwiZGF5c1wiXVxuICogaW5cbiAqIG1hdGNoIHRvX3ByaW50IHdpdGhcbiAqIHwgW10gLT4gXCJlbXB0eSBkdXJhdGlvblwiXG4gKiB8IF8gLT5cbiAqICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICogICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICogICAgICAgIH5wcF9zZXA6KGZ1biBmbXQgKCkgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCIpXG4gKiAgICAgICAgKGZ1biBmbXQgKGQsIGwpIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkICVzXCIgZCBsKSlcbiAqICAgICB0b19wcmludCAqKVxuXG5sZXQgZHVyYXRpb25fdG9feWVhcnNfbW9udGhzX2RheXMgKGQgOiBkdXJhdGlvbikgOiBpbnQgKiBpbnQgKiBpbnQgPVxuICBEYXRlc19jYWxjLkRhdGVzLnBlcmlvZF90b195bWRzIGRcblxubGV0IHlvanNvbl9vZl9tb25leSAobSA6IG1vbmV5KSA9IGBGbG9hdCAobW9uZXlfdG9fZmxvYXQgbSlcbmxldCB5b2pzb25fb2ZfaW50ZWdlciAoaSA6IGludGVnZXIpID0gYEludCAoaW50ZWdlcl90b19pbnQgaSlcbmxldCB5b2pzb25fb2ZfZGVjaW1hbCAoZCA6IGRlY2ltYWwpID0gYEZsb2F0IChkZWNpbWFsX3RvX2Zsb2F0IGQpXG5sZXQgeW9qc29uX29mX2RhdGUgKGQgOiBkYXRlKSA9IGBTdHJpbmcgKGRhdGVfdG9fc3RyaW5nIGQpXG5sZXQgeW9qc29uX29mX2R1cmF0aW9uIChkIDogZHVyYXRpb24pID0gYFN0cmluZyAoZHVyYXRpb25fdG9fc3RyaW5nIGQpXG5cbnR5cGUgcnVudGltZV92YWx1ZSA9XG4gIHwgVW5pdFxuICB8IEJvb2wgb2YgYm9vbFxuICB8IE1vbmV5IG9mIG1vbmV5XG4gIHwgSW50ZWdlciBvZiBpbnRlZ2VyXG4gIHwgRGVjaW1hbCBvZiBkZWNpbWFsXG4gIHwgRGF0ZSBvZiBkYXRlXG4gIHwgRHVyYXRpb24gb2YgZHVyYXRpb25cbiAgfCBFbnVtIG9mIHN0cmluZyBsaXN0ICogKHN0cmluZyAqIHJ1bnRpbWVfdmFsdWUpXG4gIHwgU3RydWN0IG9mIHN0cmluZyBsaXN0ICogKHN0cmluZyAqIHJ1bnRpbWVfdmFsdWUpIGxpc3RcbiAgfCBBcnJheSBvZiBydW50aW1lX3ZhbHVlIGFycmF5XG4gIHwgVW5lbWJlZGRhYmxlXG5bQEBkZXJpdmluZyB5b2pzb25fb2ZdXG5cbmxldCB1bmVtYmVkZGFibGUgXyA9IFVuZW1iZWRkYWJsZVxubGV0IGVtYmVkX3VuaXQgKCkgPSBVbml0XG5sZXQgZW1iZWRfYm9vbCB4ID0gQm9vbCB4XG5sZXQgZW1iZWRfbW9uZXkgeCA9IE1vbmV5IHhcbmxldCBlbWJlZF9pbnRlZ2VyIHggPSBJbnRlZ2VyIHhcbmxldCBlbWJlZF9kZWNpbWFsIHggPSBEZWNpbWFsIHhcbmxldCBlbWJlZF9kYXRlIHggPSBEYXRlIHhcbmxldCBlbWJlZF9kdXJhdGlvbiB4ID0gRHVyYXRpb24geFxubGV0IGVtYmVkX2FycmF5IGYgeCA9IEFycmF5IChBcnJheS5tYXAgZiB4KVxuXG50eXBlIGluZm9ybWF0aW9uID0gc3RyaW5nIGxpc3QgW0BAZGVyaXZpbmcgeW9qc29uX29mXVxuXG50eXBlIHJhd19ldmVudCA9XG4gIHwgQmVnaW5DYWxsIG9mIGluZm9ybWF0aW9uXG4gIHwgRW5kQ2FsbCBvZiBpbmZvcm1hdGlvblxuICB8IFZhcmlhYmxlRGVmaW5pdGlvbiBvZiBpbmZvcm1hdGlvbiAqIHJ1bnRpbWVfdmFsdWVcbiAgfCBEZWNpc2lvblRha2VuIG9mIHNvdXJjZV9wb3NpdGlvblxuXG50eXBlIGV2ZW50ID1cbiAgfCBWYXJDb21wdXRhdGlvbiBvZiB2YXJfZGVmXG4gIHwgRnVuQ2FsbCBvZiBmdW5fY2FsbFxuICB8IFN1YlNjb3BlQ2FsbCBvZiB7XG4gICAgICBuYW1lIDogaW5mb3JtYXRpb247XG4gICAgICBpbnB1dHMgOiB2YXJfZGVmIGxpc3Q7XG4gICAgICBib2R5IDogZXZlbnQgbGlzdDtcbiAgICB9XG5bQEBkZXJpdmluZyB5b2pzb25fb2ZdXG5cbmFuZCB2YXJfZGVmID0ge1xuICBwb3MgOiBzb3VyY2VfcG9zaXRpb24gb3B0aW9uO1xuICBuYW1lIDogaW5mb3JtYXRpb247XG4gIHZhbHVlIDogcnVudGltZV92YWx1ZTtcbiAgZnVuX2NhbGxzIDogZnVuX2NhbGwgbGlzdCBvcHRpb247XG59XG5cbmFuZCBmdW5fY2FsbCA9IHtcbiAgZnVuX25hbWUgOiBpbmZvcm1hdGlvbjtcbiAgaW5wdXQgOiB2YXJfZGVmO1xuICBib2R5IDogZXZlbnQgbGlzdDtcbiAgb3V0cHV0IDogdmFyX2RlZjtcbn1cblxubGV0IGxvZ19yZWYgOiByYXdfZXZlbnQgbGlzdCByZWYgPSByZWYgW11cbmxldCByZXNldF9sb2cgKCkgPSBsb2dfcmVmIDo9IFtdXG5sZXQgcmV0cmlldmVfbG9nICgpID0gTGlzdC5yZXYgIWxvZ19yZWZcblxubGV0IGxvZ19iZWdpbl9jYWxsIGluZm8gZiA9XG4gIGxvZ19yZWYgOj0gQmVnaW5DYWxsIGluZm8gOjogIWxvZ19yZWY7XG4gIGZcblxubGV0IGxvZ19lbmRfY2FsbCBpbmZvIHggPVxuICBsb2dfcmVmIDo9IEVuZENhbGwgaW5mbyA6OiAhbG9nX3JlZjtcbiAgeFxuXG5sZXQgbG9nX3ZhcmlhYmxlX2RlZmluaXRpb24gKGluZm8gOiBzdHJpbmcgbGlzdCkgZW1iZWQgKHggOiAnYSkgPVxuICBsb2dfcmVmIDo9IFZhcmlhYmxlRGVmaW5pdGlvbiAoaW5mbywgZW1iZWQgeCkgOjogIWxvZ19yZWY7XG4gIHhcblxubGV0IGxvZ19kZWNpc2lvbl90YWtlbiBwb3MgeCA9XG4gIGlmIHggdGhlbiBsb2dfcmVmIDo9IERlY2lzaW9uVGFrZW4gcG9zIDo6ICFsb2dfcmVmO1xuICB4XG5cbmxldCByZWMgcHBfZXZlbnRzID8oaXNfZmlyc3RfY2FsbCA9IHRydWUpIHBwZiBldmVudHMgPVxuICBsZXQgcmVjIGZvcm1hdF92YXJfZGVmIHBwZiB2YXIgPVxuICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIkBbPGhvdiAyPjx2YXJfZGVmIGF0ICVhPkAgJXM6QCAlYUBdXCIgZm9ybWF0X3Bvc19vcHRcbiAgICAgIHZhci5wb3NcbiAgICAgIChTdHJpbmcuY29uY2F0IFwiLlwiIHZhci5uYW1lKVxuICAgICAgZm9ybWF0X3ZhbHVlIHZhci52YWx1ZVxuICBhbmQgZm9ybWF0X3Bvc19vcHQgcHBmID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwibm9fcG9zXCJcbiAgICB8IFNvbWUgcG9zIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlcyBsaW5lICVkIHRvICVkXCIgcG9zLmZpbGVuYW1lIHBvcy5zdGFydF9saW5lXG4gICAgICAgIHBvcy5lbmRfbGluZVxuICBhbmQgZm9ybWF0X3Zhcl9kZWZzIHBwZiA9XG4gICAgRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgIH5wcF9zZXA6KGZ1biBwcGYgKCkgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiQCBcIilcbiAgICAgIGZvcm1hdF92YXJfZGVmIHBwZlxuICBhbmQgZm9ybWF0X3Zhcl9kZWZfd2l0aF9mdW5fY2FsbHMgcHBmIHZhcl93aXRoX2Z1biA9XG4gICAgbWF0Y2ggdmFyX3dpdGhfZnVuLmZ1bl9jYWxscyB3aXRoXG4gICAgfCBOb25lIHwgU29tZSBbXSAtPiBmb3JtYXRfdmFyX2RlZiBwcGYgdmFyX3dpdGhfZnVuXG4gICAgfCBTb21lIGZ1bl9jYWxscyAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgcHBmXG4gICAgICAgIFwiQFs8aG92IDI+PHZhcl9kZWZfd2l0aF9mdW4+QCAlczogJWFAIGNvbXB1dGVkIGZyb21AIDpAIEBbPGh2IDI+W0AgJWFAO1xcXG4gICAgICAgICA8MSAtMj5dQF0gQF1cIlxuICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIi5cIiB2YXJfd2l0aF9mdW4ubmFtZSlcbiAgICAgICAgZm9ybWF0X3ZhbHVlIHZhcl93aXRoX2Z1bi52YWx1ZVxuICAgICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgICAgICAgfnBwX3NlcDooZnVuIHBwZiAoKSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIsQCBcIilcbiAgICAgICAgICAgKGZ1biBwcGYgZnVuX2NhbGwgLT4gZm9ybWF0X2V2ZW50IHBwZiAoRnVuQ2FsbCBmdW5fY2FsbCkpKVxuICAgICAgICBmdW5fY2FsbHNcbiAgYW5kIGZvcm1hdF92YWx1ZSBwcGYgPSBmdW5jdGlvblxuICAgIHwgVW5lbWJlZGRhYmxlIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcImZ1blwiXG4gICAgfCBVbml0IC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIigpXCJcbiAgICB8IEJvb2wgeCAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlYlwiIHhcbiAgICB8IE1vbmV5IHggLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJXPigqxcIiAobW9uZXlfdG9fc3RyaW5nIHgpXG4gICAgfCBJbnRlZ2VyIHggLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWRcIiAoaW50ZWdlcl90b19pbnQgeClcbiAgICB8IERlY2ltYWwgeCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJXNcIiAoZGVjaW1hbF90b19zdHJpbmcgfm1heF9wcmVjX2RpZ2l0czoxMCB4KVxuICAgIHwgRGF0ZSB4IC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVzXCIgKGRhdGVfdG9fc3RyaW5nIHgpXG4gICAgfCBEdXJhdGlvbiB4IC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVzXCIgKGR1cmF0aW9uX3RvX3N0cmluZyB4KVxuICAgIHwgRW51bSAoXywgKG5hbWUsIF8pKSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlc1wiIG5hbWVcbiAgICB8IFN0cnVjdCAobmFtZSwgYXR0cnMpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCJAWzxodiAyPiVzID0ge0AgJWFAOzwxIC0yPn1AXVwiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IFwiLlwiIG5hbWUpXG4gICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgICAgICB+cHBfc2VwOihmdW4gcHBmICgpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIixALFwiKVxuICAgICAgICAgICAoZnVuIGZtdCAobmFtZSwgdmFsdWUpIC0+XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJXM6ICVhXCIgbmFtZSBmb3JtYXRfdmFsdWUgdmFsdWUpKVxuICAgICAgICBhdHRyc1xuICAgIHwgQXJyYXkgZWx0cyAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgcHBmIFwiQFs8aHYgMj5bQCAlYUA7PDEgLTI+XUBdXCJcbiAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0XG4gICAgICAgICAgIH5wcF9zZXA6KGZ1biBwcGYgKCkgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiO0AgXCIpXG4gICAgICAgICAgIGZvcm1hdF92YWx1ZSlcbiAgICAgICAgKGVsdHMgfD4gQXJyYXkudG9fbGlzdClcbiAgYW5kIGZvcm1hdF9ldmVudCBwcGYgPSBmdW5jdGlvblxuICAgIHwgVmFyQ29tcHV0YXRpb24gdmFyX2RlZl93aXRoX2Z1blxuICAgICAgd2hlbiBPcHRpb24uaXNfc29tZSB2YXJfZGVmX3dpdGhfZnVuLmZ1bl9jYWxscyAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWFcIiBmb3JtYXRfdmFyX2RlZl93aXRoX2Z1bl9jYWxscyB2YXJfZGVmX3dpdGhfZnVuXG4gICAgfCBWYXJDb21wdXRhdGlvbiB2YXJfZGVmIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVhXCIgZm9ybWF0X3Zhcl9kZWYgdmFyX2RlZlxuICAgIHwgRnVuQ2FsbCB7IGZ1bl9uYW1lOyBpbnB1dDsgYm9keTsgb3V0cHV0IH0gLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZlxuICAgICAgICBcIkBbPGhvdiAxPjxmdW5jdGlvbl9jYWxsPkAgJXMgOj1AIHtAWzxodiAxPkAgaW5wdXQ6QCAlYSxAIG91dHB1dDpAIFxcXG4gICAgICAgICAlYSxAIGJvZHk6QCBbQCxcXFxuICAgICAgICAgJWFdQF1ALFxcXG4gICAgICAgICBAXUAsXFxcbiAgICAgICAgIH1cIlxuICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIi5cIiBmdW5fbmFtZSlcbiAgICAgICAgZm9ybWF0X3Zhcl9kZWYgaW5wdXQgZm9ybWF0X3Zhcl9kZWZfd2l0aF9mdW5fY2FsbHMgb3V0cHV0XG4gICAgICAgIChwcF9ldmVudHMgfmlzX2ZpcnN0X2NhbGw6ZmFsc2UpXG4gICAgICAgIGJvZHlcbiAgICB8IFN1YlNjb3BlQ2FsbCB7IG5hbWU7IGlucHV0czsgYm9keSB9IC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAgICAgXCJAWzxodiAyPjxzdWJzY29wZV9jYWxsPkAgJXMgOj1AIHtAWzxodiAxPkAsXFxcbiAgICAgICAgIGlucHV0czpAIEBbPGh2IDI+W0AsXFxcbiAgICAgICAgICVhQF1dLEAsXFxcbiAgICAgICAgIGJvZHk6QCBAWzxodiAyPltAICVhQCBdQF1AXUBdQCxcXFxuICAgICAgICAgfVwiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IFwiLlwiIG5hbWUpIGZvcm1hdF92YXJfZGVmcyBpbnB1dHNcbiAgICAgICAgKHBwX2V2ZW50cyB+aXNfZmlyc3RfY2FsbDpmYWxzZSlcbiAgICAgICAgYm9keVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAoXCJAWzxodiAxPiVhQF1cIiBeXiBpZiBpc19maXJzdF9jYWxsIHRoZW4gXCJALlwiIGVsc2UgXCJcIilcbiAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgICB+cHBfc2VwOihmdW4gcHBmICgpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIkAgXCIpXG4gICAgICAgZm9ybWF0X2V2ZW50KVxuICAgIGV2ZW50c1xuXG5tb2R1bGUgRXZlbnRQYXJzZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFZhckRlZk1hcCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdHJpbmdNYXAgPSBNYXAuTWFrZSAoU3RyaW5nKVxuXG4gICAgdHlwZSB0ID0gdmFyX2RlZiBsaXN0IFN0cmluZ01hcC50XG5cbiAgICBsZXQgYWRkIChuYW1lIDogc3RyaW5nKSAodiA6IHZhcl9kZWYpIChtYXAgOiB0KSA6IHQgPVxuICAgICAgbWF0Y2ggU3RyaW5nTWFwLmZpbmRfb3B0IG5hbWUgbWFwIHdpdGhcbiAgICAgIHwgU29tZSBscyAtPiBTdHJpbmdNYXAuYWRkIG5hbWUgKHYgOjogbHMpIG1hcFxuICAgICAgfCBOb25lIC0+IFN0cmluZ01hcC5hZGQgbmFtZSBbdl0gbWFwXG5cbiAgICAoKiogW2dldCBuYW1lIG1hcF0gcmV0dXJucyB0aGUgbGlzdCBvZiBkZWZpbml0aW9ucyBpZiB0aGVyZSBpcyBhXG4gICAgICAgIGNvcnJlc3BvbmRpbmcgZW50cnksIG90aGVyd2lzZSwgcmV0dXJucyBhbiBlbXB0eSBhcnJheS4gKilcbiAgICBsZXQgZ2V0IChuYW1lIDogc3RyaW5nKSAobWFwIDogdCkgOiB2YXJfZGVmIGxpc3QgPVxuICAgICAgbWF0Y2ggU3RyaW5nTWFwLmZpbmRfb3B0IG5hbWUgbWFwIHdpdGggU29tZSBscyAtPiBscyB8IE5vbmUgLT4gW11cblxuICAgIGxldCBlbXB0eSA6IHQgPSBTdHJpbmdNYXAuZW1wdHlcbiAgZW5kXG5cbiAgdHlwZSBjb250ZXh0ID0ge1xuICAgICgqIEtlZXBzIHRyYWNrcyBvZiB0aGUgc3Vic2NvcGUgaW5wdXQgdmFyaWFibGUgZGVmaW5pdGlvbnMuICopXG4gICAgdmFycyA6IFZhckRlZk1hcC50O1xuICAgICgqIEN1cnJlbnQgcGFyc2VkIGV2ZW50cy4gKilcbiAgICBldmVudHMgOiBldmVudCBsaXN0O1xuICAgIHJlc3QgOiByYXdfZXZlbnQgbGlzdDtcbiAgfVxuXG4gIGxldCBlbXB0eV9jdHggPSB7IHZhcnMgPSBWYXJEZWZNYXAuZW1wdHk7IGV2ZW50cyA9IFtdOyByZXN0ID0gW10gfVxuXG4gIGxldCByYXdfZXZlbnRfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IEJlZ2luQ2FsbCBuYW1lIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIkJlZ2luQ2FsbChbIFwiIF4gU3RyaW5nLmNvbmNhdCBcIiwgXCIgbmFtZSBeIFwiIF0pXCJcbiAgICB8IEVuZENhbGwgbmFtZSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJFbmRDYWxsKFsgXCIgXiBTdHJpbmcuY29uY2F0IFwiLCBcIiBuYW1lIF4gXCIgXSlcIlxuICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIChuYW1lLCB2YWx1ZSkgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiVmFyaWFibGVEZWZpbml0aW9uKFsgJXMgXSwgJXMpXCIgKFN0cmluZy5jb25jYXQgXCIsIFwiIG5hbWUpXG4gICAgICAgICh5b2pzb25fb2ZfcnVudGltZV92YWx1ZSB2YWx1ZSB8PiBZb2pzb24uU2FmZS50b19zdHJpbmcpXG4gICAgfCBEZWNpc2lvblRha2VuIHBvcyAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJEZWNpc2lvblRha2VuKCVzOiVkLiVkLSVkLiVkKVwiIHBvcy5maWxlbmFtZSBwb3Muc3RhcnRfbGluZVxuICAgICAgICBwb3Muc3RhcnRfY29sdW1uIHBvcy5lbmRfbGluZSBwb3MuZW5kX2NvbHVtblxuXG4gIGxldCBwYXJzZV9yYXdfZXZlbnRzIHJhd19ldmVudHMgPVxuICAgIGxldCBuYl9yYXdfZXZlbnRzID0gTGlzdC5sZW5ndGggcmF3X2V2ZW50c1xuICAgIGFuZCBpc19mdW5jdGlvbl9jYWxsIGluZm9zID0gMiA9IExpc3QubGVuZ3RoIGluZm9zXG4gICAgYW5kIGlzX3N1YnNjb3BlX2NhbGwgaW5mb3MgPSAzID0gTGlzdC5sZW5ndGggaW5mb3NcbiAgICBhbmQgaXNfdmFyX2RlZiBuYW1lID0gMiA9IExpc3QubGVuZ3RoIG5hbWVcbiAgICBhbmQgaXNfb3V0cHV0X3Zhcl9kZWYgbmFtZSA9XG4gICAgICAzID0gTGlzdC5sZW5ndGggbmFtZSAmJiBcIm91dHB1dFwiID0gTGlzdC5udGggbmFtZSAyXG4gICAgYW5kIGlzX2lucHV0X3Zhcl9kZWYgbmFtZSA9XG4gICAgICAzID0gTGlzdC5sZW5ndGggbmFtZSAmJiBcImlucHV0XCIgPSBMaXN0Lm50aCBuYW1lIDJcbiAgICBhbmQgaXNfc3Vic2NvcGVfaW5wdXRfdmFyX2RlZiBuYW1lID1cbiAgICAgIDIgPSBMaXN0Lmxlbmd0aCBuYW1lICYmIFN0cmluZy5jb250YWlucyAoTGlzdC5udGggbmFtZSAxKSAnLidcbiAgICBpblxuICAgIGxldCByZWMgcGFyc2VfZXZlbnRzIChjdHggOiBjb250ZXh0KSA6IGNvbnRleHQgPVxuICAgICAgbWF0Y2ggY3R4LnJlc3Qgd2l0aFxuICAgICAgfCBbXSAtPiB7IGN0eCB3aXRoIGV2ZW50cyA9IGN0eC5ldmVudHMgfD4gTGlzdC5yZXYgfVxuICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIF8pIDo6IHJlc3Qgd2hlbiBpc192YXJfZGVmIG5hbWUgLT5cbiAgICAgICAgKCogVmFyaWFibGVEZWZpbml0aW9uIHdpdGhvdXQgcG9zaXRpb24gY29ycmVzcG9uZHMgdG8gYSBmdW5jdGlvblxuICAgICAgICAgICBkZWZpbml0aW9uIHdoaWNoIGFyZSBpZ25vcmVkIGZvciBub3cgaW4gc3RydWN0dXJlZCBldmVudHMuICopXG4gICAgICAgIHBhcnNlX2V2ZW50cyB7IGN0eCB3aXRoIHJlc3QgfVxuICAgICAgfCBEZWNpc2lvblRha2VuIHBvcyA6OiBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIHZhbHVlKSA6OiByZXN0XG4gICAgICAgIHdoZW4gaXNfc3Vic2NvcGVfaW5wdXRfdmFyX2RlZiBuYW1lIC0+IChcbiAgICAgICAgbWF0Y2ggbmFtZSB3aXRoXG4gICAgICAgIHwgW187IHZhcl9kb3Rfc3Vic2NvcGVfdmFyX25hbWVdIC0+XG4gICAgICAgICAgbGV0IHZhcl9uYW1lID1cbiAgICAgICAgICAgIExpc3QubnRoIChTdHJpbmcuc3BsaXRfb25fY2hhciAnLicgdmFyX2RvdF9zdWJzY29wZV92YXJfbmFtZSkgMFxuICAgICAgICAgIGluXG4gICAgICAgICAgcGFyc2VfZXZlbnRzXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGN0eCB3aXRoXG4gICAgICAgICAgICAgIHZhcnMgPVxuICAgICAgICAgICAgICAgIGN0eC52YXJzXG4gICAgICAgICAgICAgICAgfD4gVmFyRGVmTWFwLmFkZCB2YXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgeyBwb3MgPSBTb21lIHBvczsgbmFtZTsgdmFsdWU7IGZ1bl9jYWxscyA9IE5vbmUgfTtcbiAgICAgICAgICAgICAgcmVzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgZmFpbHdpdGggXCJ1bnJlYWNoYWJsZSBkdWUgdG8gdGhlIFtpc19zdWJzY29wZV9pbnB1dF92YXJfZGVmXSB0ZXN0XCIpXG4gICAgICB8IERlY2lzaW9uVGFrZW4gcG9zIDo6IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgdmFsdWUpIDo6IHJlc3RcbiAgICAgICAgd2hlbiBpc192YXJfZGVmIG5hbWUgfHwgaXNfb3V0cHV0X3Zhcl9kZWYgbmFtZSAtPlxuICAgICAgICBwYXJzZV9ldmVudHNcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjdHggd2l0aFxuICAgICAgICAgICAgZXZlbnRzID1cbiAgICAgICAgICAgICAgVmFyQ29tcHV0YXRpb24geyBwb3MgPSBTb21lIHBvczsgbmFtZTsgdmFsdWU7IGZ1bl9jYWxscyA9IE5vbmUgfVxuICAgICAgICAgICAgICA6OiBjdHguZXZlbnRzO1xuICAgICAgICAgICAgcmVzdDtcbiAgICAgICAgICB9XG4gICAgICB8IERlY2lzaW9uVGFrZW4gcG9zIDo6IFZhcmlhYmxlRGVmaW5pdGlvbiBfIDo6IEJlZ2luQ2FsbCBpbmZvcyA6OiBfXG4gICAgICAgIHdoZW4gaXNfZnVuY3Rpb25fY2FsbCBpbmZvcyAtPlxuICAgICAgICAoKiBWYXJpYWJsZSBkZWZpbml0aW9uIHdpdGggZnVuY3Rpb24gY2FsbHMuICopXG4gICAgICAgIGxldCByZWMgcGFyc2VfZnVuX2NhbGxzIGZ1bl9jYWxscyByYXdfZXZlbnRzID1cbiAgICAgICAgICBtYXRjaCByYXdfZXZlbnRzIHdpdGhcbiAgICAgICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiBfIDo6IEJlZ2luQ2FsbCBpbmZvcyA6OiBfXG4gICAgICAgICAgICB3aGVuIGlzX2Z1bmN0aW9uX2NhbGwgaW5mb3MgLT5cbiAgICAgICAgICAgIGxldCByZXN0LCBmdW5fY2FsbCA9IHBhcnNlX2Z1bl9jYWxsIHJhd19ldmVudHMgaW5cbiAgICAgICAgICAgIHBhcnNlX2Z1bl9jYWxscyAoZnVuX2NhbGwgOjogZnVuX2NhbGxzKSByZXN0XG4gICAgICAgICAgfCByZXN0IC0+IHJlc3QsIGZ1bl9jYWxscyB8PiBMaXN0LnJldlxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVzdCwgdmFyX2NvbXAgPVxuICAgICAgICAgIGxldCByZXN0LCBmdW5fY2FsbHMgPSBwYXJzZV9mdW5fY2FsbHMgW10gKExpc3QudGwgY3R4LnJlc3QpIGluXG4gICAgICAgICAgbWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIHZhbHVlKSA6OiByZXN0IC0+XG4gICAgICAgICAgICAoIHJlc3QsXG4gICAgICAgICAgICAgIFZhckNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgICAgeyBwb3MgPSBTb21lIHBvczsgbmFtZTsgdmFsdWU7IGZ1bl9jYWxscyA9IFNvbWUgZnVuX2NhbGxzIH0gKVxuICAgICAgICAgIHwgZXZlbnQgOjogXyAtPlxuICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgKFwiSW52YWxpZCBmdW5jdGlvbiBjYWxsIChbIFwiXG4gICAgICAgICAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIiwgXCIgaW5mb3NcbiAgICAgICAgICAgICAgXiBcIiBdKTogZXhwZWN0ZWQgdmFyaWFibGUgZGVmaW5pdGlvbiAoZnVuY3Rpb24gb3V0cHV0KSwgZm91bmQ6IFwiXG4gICAgICAgICAgICAgIF4gcmF3X2V2ZW50X3RvX3N0cmluZyBldmVudFxuICAgICAgICAgICAgICBeIFwiW1wiXG4gICAgICAgICAgICAgIF4gKG5iX3Jhd19ldmVudHMgLSBMaXN0Lmxlbmd0aCByZXN0ICsgMSB8PiBzdHJpbmdfb2ZfaW50KVxuICAgICAgICAgICAgICBeIFwiXVwiKVxuICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgIChcIkludmFsaWQgZnVuY3Rpb24gY2FsbCAoWyBcIlxuICAgICAgICAgICAgICBeIFN0cmluZy5jb25jYXQgXCIsIFwiIGluZm9zXG4gICAgICAgICAgICAgIF4gXCIgXSk6IGV4cGVjdGVkIHZhcmlhYmxlIGRlZmluaXRpb24gKGZ1bmN0aW9uIG91dHB1dCksIGZvdW5kOiBcXFxuICAgICAgICAgICAgICAgICBlbmQgb2YgdG9rZW5zXCIpXG4gICAgICAgIGluXG5cbiAgICAgICAgcGFyc2VfZXZlbnRzIHsgY3R4IHdpdGggZXZlbnRzID0gdmFyX2NvbXAgOjogY3R4LmV2ZW50czsgcmVzdCB9XG4gICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiBfIDo6IEJlZ2luQ2FsbCBpbmZvcyA6OiBfIHdoZW4gaXNfZnVuY3Rpb25fY2FsbCBpbmZvc1xuICAgICAgICAtPlxuICAgICAgICBsZXQgcmVzdCwgZnVuX2NhbGwgPSBwYXJzZV9mdW5fY2FsbCBjdHgucmVzdCBpblxuXG4gICAgICAgIHBhcnNlX2V2ZW50cyB7IGN0eCB3aXRoIGV2ZW50cyA9IEZ1bkNhbGwgZnVuX2NhbGwgOjogY3R4LmV2ZW50czsgcmVzdCB9XG4gICAgICB8IEJlZ2luQ2FsbCBpbmZvcyA6OiByZXN0IHdoZW4gaXNfc3Vic2NvcGVfY2FsbCBpbmZvcyAtPiAoXG4gICAgICAgIG1hdGNoIGluZm9zIHdpdGhcbiAgICAgICAgfCBbXzsgdmFyX25hbWU7IF9dIC0+XG4gICAgICAgICAgbGV0IGJvZHlfY3R4ID0gcGFyc2VfZXZlbnRzIHsgZW1wdHlfY3R4IHdpdGggcmVzdCB9IGluXG4gICAgICAgICAgbGV0IGlucHV0cyA9IFZhckRlZk1hcC5nZXQgdmFyX25hbWUgY3R4LnZhcnMgaW5cbiAgICAgICAgICBwYXJzZV9ldmVudHNcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY3R4IHdpdGhcbiAgICAgICAgICAgICAgZXZlbnRzID1cbiAgICAgICAgICAgICAgICBTdWJTY29wZUNhbGwgeyBuYW1lID0gaW5mb3M7IGlucHV0czsgYm9keSA9IGJvZHlfY3R4LmV2ZW50cyB9XG4gICAgICAgICAgICAgICAgOjogY3R4LmV2ZW50cztcbiAgICAgICAgICAgICAgcmVzdCA9IGJvZHlfY3R4LnJlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcInVucmVhY2hhYmxlIGR1ZSB0byB0aGUgW2lzX3N1YnNjb3BlX2NhbGxdIHRlc3RcIilcbiAgICAgIHwgRW5kQ2FsbCBfIDo6IHJlc3QgLT4geyBjdHggd2l0aCBldmVudHMgPSBjdHguZXZlbnRzIHw+IExpc3QucmV2OyByZXN0IH1cbiAgICAgIHwgZXZlbnQgOjogXyAtPiBmYWlsd2l0aCAoXCJVbmV4cGVjdGVkIGV2ZW50OiBcIiBeIHJhd19ldmVudF90b19zdHJpbmcgZXZlbnQpXG4gICAgYW5kIHBhcnNlX2Z1bl9jYWxsIGV2ZW50cyA9XG4gICAgICBtYXRjaCBldmVudHMgd2l0aFxuICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIHZhbHVlKSA6OiBCZWdpbkNhbGwgaW5mb3MgOjogcmVzdFxuICAgICAgICB3aGVuIGlzX2Z1bmN0aW9uX2NhbGwgaW5mb3MgJiYgaXNfaW5wdXRfdmFyX2RlZiBuYW1lIC0+XG4gICAgICAgIGxldCByZXN0LCBib2R5LCBvdXRwdXQgPVxuICAgICAgICAgIGxldCBib2R5X2N0eCA9XG4gICAgICAgICAgICBwYXJzZV9ldmVudHMgeyB2YXJzID0gVmFyRGVmTWFwLmVtcHR5OyBldmVudHMgPSBbXTsgcmVzdCB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYm9keV9yZXYgPSBMaXN0LnJldiBib2R5X2N0eC5ldmVudHMgaW5cbiAgICAgICAgICBib2R5X2N0eC5yZXN0LCBib2R5X3JldiB8PiBMaXN0LnRsIHw+IExpc3QucmV2LCBib2R5X3JldiB8PiBMaXN0LmhkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvdXRwdXQgPVxuICAgICAgICAgIG1hdGNoIG91dHB1dCB3aXRoXG4gICAgICAgICAgfCBWYXJDb21wdXRhdGlvbiB2YXJfZGVmIC0+IHZhcl9kZWZcbiAgICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJNaXNzaW5nIGZ1bmN0aW9uIG91dHB1dCB2YXJpYWJsZSBkZWZpbml0aW9uLlwiXG4gICAgICAgIGluXG5cbiAgICAgICAgKCByZXN0LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bl9uYW1lID0gaW5mb3M7XG4gICAgICAgICAgICBpbnB1dCA9IHsgcG9zID0gTm9uZTsgbmFtZTsgdmFsdWU7IGZ1bl9jYWxscyA9IE5vbmUgfTtcbiAgICAgICAgICAgIGJvZHk7XG4gICAgICAgICAgICBvdXRwdXQ7XG4gICAgICAgICAgfSApXG4gICAgICB8IF8gLT4gZmFpbHdpdGggXCJJbnZhbGlkIHN0YXJ0IG9mIGZ1bmN0aW9uIGNhbGwuXCJcbiAgICBpblxuXG4gICAgbGV0IGN0eCA9XG4gICAgICB0cnkgcGFyc2VfZXZlbnRzIHsgZW1wdHlfY3R4IHdpdGggcmVzdCA9IHJhd19ldmVudHMgfVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPlxuICAgICAgICAoKiBUT0RPOiBkaXNjdXNzIHdoYXQgc2hvdWxkIGJlIGRvbmUuICopXG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcGFyc2luZyByYXcgZXZlbnRzOiAlc1xcblwiIG1zZztcbiAgICAgICAgZW1wdHlfY3R4XG4gICAgaW5cbiAgICBjdHguZXZlbnRzXG5lbmRcblxubGV0IGhhbmRsZV9kZWZhdWx0IDpcbiAgICAgICdhLlxuICAgICAgc291cmNlX3Bvc2l0aW9uIC0+XG4gICAgICAodW5pdCAtPiAnYSkgYXJyYXkgLT5cbiAgICAgICh1bml0IC0+IGJvb2wpIC0+XG4gICAgICAodW5pdCAtPiAnYSkgLT5cbiAgICAgICdhID1cbiBmdW4gcG9zIGV4Y2VwdGlvbnMganVzdCBjb25zIC0+XG4gIGxldCBleGNlcHQgPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgZXhjZXB0IC0+XG4gICAgICAgIGxldCBuZXdfdmFsID0gdHJ5IFNvbWUgKGV4Y2VwdCAoKSkgd2l0aCBFbXB0eUVycm9yIC0+IE5vbmUgaW5cbiAgICAgICAgbWF0Y2ggYWNjLCBuZXdfdmFsIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIC0+IG5ld192YWxcbiAgICAgICAgfCBTb21lIF8sIE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSBfLCBTb21lIF8gLT4gcmFpc2UgKENvbmZsaWN0RXJyb3IgcG9zKSlcbiAgICAgIE5vbmUgZXhjZXB0aW9uc1xuICBpblxuICBtYXRjaCBleGNlcHQgd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPiBpZiBqdXN0ICgpIHRoZW4gY29ucyAoKSBlbHNlIHJhaXNlIEVtcHR5RXJyb3JcblxubGV0IGhhbmRsZV9kZWZhdWx0X29wdFxuICAgIChwb3MgOiBzb3VyY2VfcG9zaXRpb24pXG4gICAgKGV4Y2VwdGlvbnMgOiAnYSBlb3B0aW9uIGFycmF5KVxuICAgIChqdXN0IDogYm9vbCBlb3B0aW9uKVxuICAgIChjb25zIDogJ2EgZW9wdGlvbikgOiAnYSBlb3B0aW9uID1cbiAgbGV0IGV4Y2VwdCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBleGNlcHQgLT5cbiAgICAgICAgbWF0Y2ggYWNjLCBleGNlcHQgd2l0aFxuICAgICAgICB8IEVOb25lIF8sIF8gLT4gZXhjZXB0XG4gICAgICAgIHwgRVNvbWUgXywgRU5vbmUgXyAtPiBhY2NcbiAgICAgICAgfCBFU29tZSBfLCBFU29tZSBfIC0+IHJhaXNlIChDb25mbGljdEVycm9yIHBvcykpXG4gICAgICAoRU5vbmUgKCkpIGV4Y2VwdGlvbnNcbiAgaW5cbiAgbWF0Y2ggZXhjZXB0IHdpdGhcbiAgfCBFU29tZSBfIC0+IGV4Y2VwdFxuICB8IEVOb25lIF8gLT4gKFxuICAgIG1hdGNoIGp1c3Qgd2l0aFxuICAgIHwgRVNvbWUgYiAtPiBpZiBiIHRoZW4gY29ucyBlbHNlIEVOb25lICgpXG4gICAgfCBFTm9uZSBfIC0+IEVOb25lICgpKVxuXG5sZXQgbm9faW5wdXQgOiB1bml0IC0+ICdhID0gZnVuIF8gLT4gcmFpc2UgRW1wdHlFcnJvclxuXG4oKiBUT0RPOiBhZGQgYSBjb21wYXJlIGJ1aWx0LWluIHRvIGRhdGVzX2NhbGMuIEF0IHRoZSBtb21lbnQgdGhpcyBmYWlscyBvbiBlLmcuXG4gICBbMyBtb250aHMsIDQgbW9udGhzXSAqKVxubGV0IGNvbXBhcmVfcGVyaW9kcyAocDEgOiBkdXJhdGlvbikgKHAyIDogZHVyYXRpb24pIDogaW50ID1cbiAgdHJ5XG4gICAgbGV0IHAxX2RheXMgPSBEYXRlc19jYWxjLkRhdGVzLnBlcmlvZF90b19kYXlzIHAxIGluXG4gICAgbGV0IHAyX2RheXMgPSBEYXRlc19jYWxjLkRhdGVzLnBlcmlvZF90b19kYXlzIHAyIGluXG4gICAgY29tcGFyZSBwMV9kYXlzIHAyX2RheXNcbiAgd2l0aCBEYXRlc19jYWxjLkRhdGVzLkFtYmlndW91c0NvbXB1dGF0aW9uIC0+IHJhaXNlIFVuY29tcGFyYWJsZUR1cmF0aW9uc1xuXG4oKiBUT0RPOiBzYW1lIGhlcmUsIGFsdGhvdWdoIGl0IHdhcyB0d2Vha2VkIHRvIG5ldmVyIGZhaWwgb24gZXF1YWwgZGF0ZXMuXG4gICBDb21wYXJpbmcgdGhlIGRpZmZlcmVuY2UgdG8gZHVyYXRpb25fMCBpcyBub3QgYSBnb29kIGlkZWEgYmVjYXVzZSB3ZSBzdGlsbFxuICAgd2FudCB0byBmYWlsIG9uIFsxIG1vbnRoLCAzMCBkYXlzXSByYXRoZXIgdGhhbiByZXR1cm4gW2ZhbHNlXSAqKVxubGV0IGVxdWFsX3BlcmlvZHMgKHAxIDogZHVyYXRpb24pIChwMiA6IGR1cmF0aW9uKSA6IGJvb2wgPVxuICB0cnkgRGF0ZXNfY2FsYy5EYXRlcy5wZXJpb2RfdG9fZGF5cyAoRGF0ZXNfY2FsYy5EYXRlcy5zdWJfcGVyaW9kcyBwMSBwMikgPSAwXG4gIHdpdGggRGF0ZXNfY2FsYy5EYXRlcy5BbWJpZ3VvdXNDb21wdXRhdGlvbiAtPiByYWlzZSBVbmNvbXBhcmFibGVEdXJhdGlvbnNcblxubW9kdWxlIE9wZXIgPSBzdHJ1Y3RcbiAgbGV0IG9fbm90ID0gU3RkbGliLm5vdFxuICBsZXQgb19sZW5ndGggYSA9IFoub2ZfaW50IChBcnJheS5sZW5ndGggYSlcbiAgbGV0IG9fdG9yYXRfaW50ID0gZGVjaW1hbF9vZl9pbnRlZ2VyXG4gIGxldCBvX3RvcmF0X21vbiA9IGRlY2ltYWxfb2ZfbW9uZXlcbiAgbGV0IG9fdG9tb25leV9yYXQgPSBtb25leV9vZl9kZWNpbWFsXG4gIGxldCBvX2dldERheSA9IGRheV9vZl9tb250aF9vZl9kYXRlXG4gIGxldCBvX2dldE1vbnRoID0gbW9udGhfbnVtYmVyX29mX2RhdGVcbiAgbGV0IG9fZ2V0WWVhciA9IHllYXJfb2ZfZGF0ZVxuICBsZXQgb19maXJzdERheU9mTW9udGggPSBmaXJzdF9kYXlfb2ZfbW9udGhcbiAgbGV0IG9fbGFzdERheU9mTW9udGggPSBsYXN0X2RheV9vZl9tb250aFxuICBsZXQgb19yb3VuZF9tb24gPSBtb25leV9yb3VuZFxuICBsZXQgb19yb3VuZF9yYXQgPSBkZWNpbWFsX3JvdW5kXG4gIGxldCBvX21pbnVzX2ludCBpMSA9IFouc3ViIFouemVybyBpMVxuICBsZXQgb19taW51c19yYXQgaTEgPSBRLnN1YiBRLnplcm8gaTFcbiAgbGV0IG9fbWludXNfbW9uIG0xID0gWi5zdWIgWi56ZXJvIG0xXG4gIGxldCBvX21pbnVzX2R1ciA9IERhdGVzX2NhbGMuRGF0ZXMubmVnX3BlcmlvZFxuICBsZXQgb19hbmQgPSAoICYmIClcbiAgbGV0IG9fb3IgPSAoIHx8IClcbiAgbGV0IG9feG9yIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSAoIDw+IClcbiAgbGV0IG9fZXEgPSAoID0gKVxuICBsZXQgb19tYXAgPSBBcnJheS5tYXBcblxuICBsZXQgb19yZWR1Y2UgZiBkZnQgYSA9XG4gICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgaWYgbGVuID0gMCB0aGVuIGRmdFxuICAgIGVsc2VcbiAgICAgIGxldCByID0gcmVmIGEuKDApIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgICByIDo9IGYgIXIgYS4oaSlcbiAgICAgIGRvbmU7XG4gICAgICAhclxuXG4gIGxldCBvX2NvbmNhdCA9IEFycmF5LmFwcGVuZFxuICBsZXQgb19maWx0ZXIgZiBhID0gQXJyYXkub2ZfbGlzdCAoTGlzdC5maWx0ZXIgZiAoQXJyYXkudG9fbGlzdCBhKSlcbiAgbGV0IG9fYWRkX2ludF9pbnQgaTEgaTIgPSBaLmFkZCBpMSBpMlxuICBsZXQgb19hZGRfcmF0X3JhdCBpMSBpMiA9IFEuYWRkIGkxIGkyXG4gIGxldCBvX2FkZF9tb25fbW9uIG0xIG0yID0gWi5hZGQgbTEgbTJcbiAgbGV0IG9fYWRkX2RhdF9kdXIgZGEgZHUgPSBEYXRlc19jYWxjLkRhdGVzLmFkZF9kYXRlcyBkYSBkdVxuICBsZXQgb19hZGRfZHVyX2R1ciA9IERhdGVzX2NhbGMuRGF0ZXMuYWRkX3BlcmlvZHNcbiAgbGV0IG9fc3ViX2ludF9pbnQgaTEgaTIgPSBaLnN1YiBpMSBpMlxuICBsZXQgb19zdWJfcmF0X3JhdCBpMSBpMiA9IFEuc3ViIGkxIGkyXG4gIGxldCBvX3N1Yl9tb25fbW9uIG0xIG0yID0gWi5zdWIgbTEgbTJcbiAgbGV0IG9fc3ViX2RhdF9kYXQgPSBEYXRlc19jYWxjLkRhdGVzLnN1Yl9kYXRlc1xuICBsZXQgb19zdWJfZGF0X2R1ciBkYXQgZHVyID0gRGF0ZXNfY2FsYy5EYXRlcy4oYWRkX2RhdGVzIGRhdCAobmVnX3BlcmlvZCBkdXIpKVxuICBsZXQgb19zdWJfZHVyX2R1ciA9IERhdGVzX2NhbGMuRGF0ZXMuc3ViX3BlcmlvZHNcbiAgbGV0IG9fbXVsdF9pbnRfaW50IGkxIGkyID0gWi5tdWwgaTEgaTJcbiAgbGV0IG9fbXVsdF9yYXRfcmF0IGkxIGkyID0gUS5tdWwgaTEgaTJcblxuICBsZXQgb19tdWx0X21vbl9yYXQgaTEgaTIgPVxuICAgIGxldCBpMV9hYnMgPSBaLmFicyBpMSBpblxuICAgIGxldCBpMl9hYnMgPSBRLmFicyBpMiBpblxuICAgIGxldCBzaWduX2ludCA9IFouc2lnbiBpMSAqIFEuc2lnbiBpMiBpblxuICAgIGxldCByYXRfcmVzdWx0ID0gUS5tdWwgKFEub2ZfYmlnaW50IGkxX2FicykgaTJfYWJzIGluXG4gICAgbGV0IHJlcywgcmVtYWluZGVyID0gWi5kaXZfcmVtIChRLm51bSByYXRfcmVzdWx0KSAoUS5kZW4gcmF0X3Jlc3VsdCkgaW5cbiAgICAoKiB3ZSBwZXJmb3JtIG5lYXJlc3Qgcm91bmRpbmcgd2hlbiBtdWx0aXBseWluZyBhbiBhbW91bnQgb2YgbW9uZXkgYnkgYVxuICAgICAgIGRlY2ltYWwgISopXG4gICAgaWYgWi4ob2ZfaW50IDIgKiByZW1haW5kZXIgPj0gUS5kZW4gcmF0X3Jlc3VsdCkgdGhlblxuICAgICAgWi4oYWRkIHJlcyAob2ZfaW50IDEpICogb2ZfaW50IHNpZ25faW50KVxuICAgIGVsc2UgWi4ocmVzICogb2ZfaW50IHNpZ25faW50KVxuXG4gIGxldCBvX211bHRfZHVyX2ludCBkIG0gPSBEYXRlc19jYWxjLkRhdGVzLm11bF9wZXJpb2QgZCAoWi50b19pbnQgbSlcblxuICBsZXQgb19kaXZfaW50X2ludCBpMSBpMiA9XG4gICAgKCogSXQncyBub3Qgb24gdGhlIG9jYW1sZG9jLCBidXQgUS5kaXYgbGlrZWx5IGFscmVhZHkgcmFpc2VzIHRoaXMgPyAqKVxuICAgIGlmIFouemVybyA9IGkyIHRoZW4gcmFpc2UgRGl2aXNpb25fYnlfemVyb1xuICAgIGVsc2UgUS5kaXYgKFEub2ZfYmlnaW50IGkxKSAoUS5vZl9iaWdpbnQgaTIpXG5cbiAgbGV0IG9fZGl2X3JhdF9yYXQgaTEgaTIgPVxuICAgIGlmIFEuemVybyA9IGkyIHRoZW4gcmFpc2UgRGl2aXNpb25fYnlfemVybyBlbHNlIFEuZGl2IGkxIGkyXG5cbiAgbGV0IG9fZGl2X21vbl9tb24gbTEgbTIgPVxuICAgIGlmIFouemVybyA9IG0yIHRoZW4gcmFpc2UgRGl2aXNpb25fYnlfemVyb1xuICAgIGVsc2UgUS5kaXYgKFEub2ZfYmlnaW50IG0xKSAoUS5vZl9iaWdpbnQgbTIpXG5cbiAgbGV0IG9fZGl2X21vbl9yYXQgbTEgcjEgPVxuICAgIGlmIFEuemVybyA9IHIxIHRoZW4gcmFpc2UgRGl2aXNpb25fYnlfemVybyBlbHNlIG9fbXVsdF9tb25fcmF0IG0xIChRLmludiByMSlcblxuICBsZXQgb19sdF9pbnRfaW50IGkxIGkyID0gWi5jb21wYXJlIGkxIGkyIDwgMFxuICBsZXQgb19sdF9yYXRfcmF0IGkxIGkyID0gUS5jb21wYXJlIGkxIGkyIDwgMFxuICBsZXQgb19sdF9tb25fbW9uIG0xIG0yID0gWi5jb21wYXJlIG0xIG0yIDwgMFxuICBsZXQgb19sdF9kdXJfZHVyIGQxIGQyID0gY29tcGFyZV9wZXJpb2RzIGQxIGQyIDwgMFxuICBsZXQgb19sdF9kYXRfZGF0IGQxIGQyID0gRGF0ZXNfY2FsYy5EYXRlcy5jb21wYXJlX2RhdGVzIGQxIGQyIDwgMFxuICBsZXQgb19sdGVfaW50X2ludCBpMSBpMiA9IFouY29tcGFyZSBpMSBpMiA8PSAwXG4gIGxldCBvX2x0ZV9yYXRfcmF0IGkxIGkyID0gUS5jb21wYXJlIGkxIGkyIDw9IDBcbiAgbGV0IG9fbHRlX21vbl9tb24gbTEgbTIgPSBaLmNvbXBhcmUgbTEgbTIgPD0gMFxuICBsZXQgb19sdGVfZHVyX2R1ciBkMSBkMiA9IGNvbXBhcmVfcGVyaW9kcyBkMSBkMiA8PSAwXG4gIGxldCBvX2x0ZV9kYXRfZGF0IGQxIGQyID0gRGF0ZXNfY2FsYy5EYXRlcy5jb21wYXJlX2RhdGVzIGQxIGQyIDw9IDBcbiAgbGV0IG9fZ3RfaW50X2ludCBpMSBpMiA9IFouY29tcGFyZSBpMSBpMiA+IDBcbiAgbGV0IG9fZ3RfcmF0X3JhdCBpMSBpMiA9IFEuY29tcGFyZSBpMSBpMiA+IDBcbiAgbGV0IG9fZ3RfbW9uX21vbiBtMSBtMiA9IFouY29tcGFyZSBtMSBtMiA+IDBcbiAgbGV0IG9fZ3RfZHVyX2R1ciBkMSBkMiA9IGNvbXBhcmVfcGVyaW9kcyBkMSBkMiA+IDBcbiAgbGV0IG9fZ3RfZGF0X2RhdCBkMSBkMiA9IERhdGVzX2NhbGMuRGF0ZXMuY29tcGFyZV9kYXRlcyBkMSBkMiA+IDBcbiAgbGV0IG9fZ3RlX2ludF9pbnQgaTEgaTIgPSBaLmNvbXBhcmUgaTEgaTIgPj0gMFxuICBsZXQgb19ndGVfcmF0X3JhdCBpMSBpMiA9IFEuY29tcGFyZSBpMSBpMiA+PSAwXG4gIGxldCBvX2d0ZV9tb25fbW9uIG0xIG0yID0gWi5jb21wYXJlIG0xIG0yID49IDBcbiAgbGV0IG9fZ3RlX2R1cl9kdXIgZDEgZDIgPSBjb21wYXJlX3BlcmlvZHMgZDEgZDIgPj0gMFxuICBsZXQgb19ndGVfZGF0X2RhdCBkMSBkMiA9IERhdGVzX2NhbGMuRGF0ZXMuY29tcGFyZV9kYXRlcyBkMSBkMiA+PSAwXG4gIGxldCBvX2VxX2ludF9pbnQgaTEgaTIgPSBaLmVxdWFsIGkxIGkyXG4gIGxldCBvX2VxX3JhdF9yYXQgaTEgaTIgPSBRLmVxdWFsIGkxIGkyXG4gIGxldCBvX2VxX21vbl9tb24gbTEgbTIgPSBaLmVxdWFsIG0xIG0yXG4gIGxldCBvX2VxX2R1cl9kdXIgZDEgZDIgPSBlcXVhbF9wZXJpb2RzIGQxIGQyXG4gIGxldCBvX2VxX2RhdF9kYXQgZDEgZDIgPSBEYXRlc19jYWxjLkRhdGVzLmNvbXBhcmVfZGF0ZXMgZDEgZDIgPSAwXG4gIGxldCBvX2ZvbGQgPSBBcnJheS5mb2xkX2xlZnRcbmVuZFxuXG5pbmNsdWRlIE9wZXJcbiIsbnVsbCxudWxsLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQ2F0YWxhIGNvbXBpbGVyLCBhIHNwZWNpZmljYXRpb24gbGFuZ3VhZ2UgZm9yIHRheFxuICAgYW5kIHNvY2lhbCBiZW5lZml0cyBjb21wdXRhdGlvbiBydWxlcy4gQ29weXJpZ2h0IChDKSAyMDIwIElucmlhLCBjb250cmlidXRvcjpcbiAgIEVtaWxlIFJvbGxleSA8ZW1pbGUucm9sbGV5QHR1dGEuaW8+LlxuXG4gICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdFxuICAgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2ZcbiAgIHRoZSBMaWNlbnNlIGF0XG5cbiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVRcbiAgIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZVxuICAgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXJcbiAgIHRoZSBMaWNlbnNlLiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5tb2R1bGUgUl9vY2FtbCA9IFJ1bnRpbWVfb2NhbWwuUnVudGltZVxuXG5jbGFzcyB0eXBlIHNvdXJjZV9wb3NpdGlvbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBmaWxlTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgICBtZXRob2Qgc3RhcnRMaW5lIDogaW50IEpzLnByb3BcbiAgICBtZXRob2QgZW5kTGluZSA6IGludCBKcy5wcm9wXG4gICAgbWV0aG9kIHN0YXJ0Q29sdW1uIDogaW50IEpzLnByb3BcbiAgICBtZXRob2QgZW5kQ29sdW1uIDogaW50IEpzLnByb3BcbiAgICBtZXRob2QgbGF3SGVhZGluZ3MgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnByb3BcbiAgZW5kXG5cbmNsYXNzIHR5cGUgcmF3X2V2ZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGV2ZW50VHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgICBtZXRob2QgaW5mb3JtYXRpb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnByb3BcbiAgICBtZXRob2Qgc291cmNlUG9zaXRpb24gOiBzb3VyY2VfcG9zaXRpb24gSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuICAgIG1ldGhvZCBsb2dnZWRWYWx1ZUpzb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG5jbGFzcyB0eXBlIGV2ZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG5jbGFzcyB0eXBlIGR1cmF0aW9uID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHllYXJzIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbW9udGhzIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF5cyA6IGludCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgZHVyYXRpb25fb2ZfanNvbyBkID1cbiAgUl9vY2FtbC5kdXJhdGlvbl9vZl9udW1iZXJzIGQjIy55ZWFycyBkIyMubW9udGhzIGQjIy5kYXlzXG5cbmxldCBkdXJhdGlvbl90b19qc29vIGQgPVxuICBsZXQgeWVhcnMsIG1vbnRocywgZGF5cyA9IFJfb2NhbWwuZHVyYXRpb25fdG9feWVhcnNfbW9udGhzX2RheXMgZCBpblxuICBvYmplY3QlanNcbiAgICB2YWwgeWVhcnMgPSB5ZWFyc1xuICAgIHZhbCBtb250aHMgPSBtb250aHNcbiAgICB2YWwgZGF5cyA9IGRheXNcbiAgZW5kXG5cbmxldCBkYXRlX29mX2pzb28gZCA9XG4gIGxldCBkID0gSnMudG9fc3RyaW5nIGQgaW5cbiAgbGV0IGQgPVxuICAgIGlmIFN0cmluZy5jb250YWlucyBkICdUJyB0aGVuIGQgfD4gU3RyaW5nLnNwbGl0X29uX2NoYXIgJ1QnIHw+IExpc3QuaGRcbiAgICBlbHNlIGRcbiAgaW5cbiAgbWF0Y2ggU3RyaW5nLnNwbGl0X29uX2NoYXIgJy0nIGQgd2l0aFxuICB8IFt5ZWFyOyBtb250aDsgZGF5XSAtPlxuICAgIFJfb2NhbWwuZGF0ZV9vZl9udW1iZXJzIChpbnRfb2Zfc3RyaW5nIHllYXIpIChpbnRfb2Zfc3RyaW5nIG1vbnRoKVxuICAgICAgKGludF9vZl9zdHJpbmcgZGF5KVxuICB8IF8gLT4gZmFpbHdpdGggXCJkYXRlX29mX2pzb286IGludmFsaWQgZGF0ZVwiXG5cbmxldCBkYXRlX3RvX2pzb28gZCA9IEpzLnN0cmluZyBAQCBSX29jYW1sLmRhdGVfdG9fc3RyaW5nIGRcblxuY2xhc3MgdHlwZSBldmVudF9tYW5hZ2VyID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHJlc2V0TG9nIDogKHVuaXQsIHVuaXQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJldHJpZXZlRXZlbnRzIDpcbiAgICAgICh1bml0LCBldmVudCBKcy50IEpzLmpzX2FycmF5IEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJldHJpZXZlUmF3RXZlbnRzIDpcbiAgICAgICh1bml0LCByYXdfZXZlbnQgSnMudCBKcy5qc19hcnJheSBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG5cbmxldCBldmVudF9tYW5hZ2VyIDogZXZlbnRfbWFuYWdlciBKcy50ID1cbiAgb2JqZWN0JWpzXG4gICAgbWV0aG9kIHJlc2V0TG9nID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrIFJfb2NhbWwucmVzZXRfbG9nXG5cbiAgICBtZXRob2QgcmV0cmlldmVFdmVudHMgPVxuICAgICAgSnMud3JhcF9tZXRoX2NhbGxiYWNrIChmdW4gKCkgLT5cbiAgICAgICAgICBKcy5hcnJheVxuICAgICAgICAgICAgKEFycmF5Lm9mX2xpc3RcbiAgICAgICAgICAgICAgIChSX29jYW1sLnJldHJpZXZlX2xvZyAoKVxuICAgICAgICAgICAgICAgfD4gUl9vY2FtbC5FdmVudFBhcnNlci5wYXJzZV9yYXdfZXZlbnRzXG4gICAgICAgICAgICAgICB8PiBMaXN0Lm1hcCAoZnVuIGV2ZW50IC0+XG4gICAgICAgICAgICAgICAgICAgICAgb2JqZWN0JWpzXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBkYXRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfD4gUl9vY2FtbC55b2pzb25fb2ZfZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfD4gWW9qc29uLlNhZmUudG9fc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHw+IEpzLnN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgIGVuZCkpKSlcblxuICAgIG1ldGhvZCByZXRyaWV2ZVJhd0V2ZW50cyA9XG4gICAgICBKcy53cmFwX21ldGhfY2FsbGJhY2sgKGZ1biAoKSAtPlxuICAgICAgICAgIEpzLmFycmF5XG4gICAgICAgICAgICAoQXJyYXkub2ZfbGlzdFxuICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAoZnVuIGV2dCAtPlxuICAgICAgICAgICAgICAgICAgICBvYmplY3QlanNcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBldmVudFR5cGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgSnMuc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBldnQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJfb2NhbWwuQmVnaW5DYWxsIF8gLT4gXCJCZWdpbiBjYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFbmRDYWxsIF8gLT4gXCJFbmQgY2FsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIF8gLT4gXCJWYXJpYWJsZSBkZWZpbml0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZWNpc2lvblRha2VuIF8gLT4gXCJEZWNpc2lvbiB0YWtlblwiKVxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgaW5mb3JtYXRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgSnMuYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEFycmF5Lm9mX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGV2dCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQmVnaW5DYWxsIGluZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFbmRDYWxsIGluZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gKGluZm8sIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5tYXAgSnMuc3RyaW5nIGluZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZWNpc2lvblRha2VuIF8gLT4gW10pKVxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgbG9nZ2VkVmFsdWVKc29uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBldnQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gKF8sIHYpIC0+IHZcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgRW5kQ2FsbCBfIHwgQmVnaW5DYWxsIF8gfCBEZWNpc2lvblRha2VuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgUl9vY2FtbC51bmVtYmVkZGFibGUgKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICB8PiBSX29jYW1sLnlvanNvbl9vZl9ydW50aW1lX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8PiBZb2pzb24uU2FmZS50b19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHw+IEpzLnN0cmluZ1xuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgc291cmNlUG9zaXRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZXZ0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVjaXNpb25UYWtlbiBwb3MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuZGVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9iamVjdCVqc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGZpbGVOYW1lID0gSnMuc3RyaW5nIHBvcy5maWxlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIHN0YXJ0TGluZSA9IHBvcy5zdGFydF9saW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgZW5kTGluZSA9IHBvcy5lbmRfbGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIHN0YXJ0Q29sdW1uID0gcG9zLnN0YXJ0X2NvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGVuZENvbHVtbiA9IHBvcy5lbmRfY29sdW1uXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBsYXdIZWFkaW5ncyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKcy5hcnJheVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXJyYXkub2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgSnMuc3RyaW5nIHBvcy5sYXdfaGVhZGluZ3MpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBKcy51bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgICAgICAgICAgICAgICAgKFJfb2NhbWwucmV0cmlldmVfbG9nICgpKSkpKVxuICBlbmRcblxubGV0IGV4ZWN1dGVfb3JfdGhyb3dfZXJyb3IgZiA9XG4gIGxldCB0aHJvd19lcnJvciAoZGVzY3IgOiBzdHJpbmcpIChwb3MgOiBSX29jYW1sLnNvdXJjZV9wb3NpdGlvbikgPVxuICAgIGxldCBtc2cgPVxuICAgICAgSnMuc3RyaW5nXG4gICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlcyBpbiBmaWxlICVzLCBwb3NpdGlvbiAlZDolZC0tJWQ6JWQuXCIgZGVzY3JcbiAgICAgICAgICAgcG9zLmZpbGVuYW1lIHBvcy5zdGFydF9saW5lIHBvcy5zdGFydF9jb2x1bW4gcG9zLmVuZF9saW5lXG4gICAgICAgICAgIHBvcy5lbmRfY29sdW1uKVxuICAgIGluXG4gICAgSnMuSnNfZXJyb3IucmFpc2VfXG4gICAgICAoSnMuSnNfZXJyb3Iub2ZfZXJyb3JcbiAgICAgICAgIChvYmplY3QlanNcbiAgICAgICAgICAgIHZhbCBtdXRhYmxlIG5hbWUgPSBKcy5zdHJpbmcgXCJOb1ZhbHVlUHJvdmlkZWRcIlxuICAgICAgICAgICAgdmFsIG11dGFibGUgbWVzc2FnZSA9IG1zZ1xuICAgICAgICAgICAgdmFsIG11dGFibGUgc3RhY2sgPSBKcy5PcHRkZWYuZW1wdHlcbiAgICAgICAgICAgIG1ldGhvZCB0b1N0cmluZyA9IG1zZ1xuICAgICAgICAgZW5kKSlcbiAgaW5cbiAgdHJ5IGYgKCkgd2l0aFxuICB8IFJfb2NhbWwuTm9WYWx1ZVByb3ZpZGVkIHBvcyAtPlxuICAgIHRocm93X2Vycm9yXG4gICAgICBcIk5vIHJ1bGUgYXBwbGllcyBpbiB0aGUgZ2l2ZW4gY29udGV4dCB0byBnaXZlIGEgdmFsdWUgdG8gdGhlIHZhcmlhYmxlXCIgcG9zXG4gIHwgUl9vY2FtbC5Db25mbGljdEVycm9yIHBvcyAtPlxuICAgIHRocm93X2Vycm9yXG4gICAgICBcIkEgY29uZmxpY3QgaGFwcGVuZWQgYmV0d2VlbiB0d28gcnVsZXMgZ2l2aW5nIGEgdmFsdWUgdG8gdGhlIHZhcmlhYmxlXCIgcG9zXG4gIHwgUl9vY2FtbC5Bc3NlcnRpb25GYWlsZWQgcG9zIC0+XG4gICAgdGhyb3dfZXJyb3IgXCJBIGZhaWx1cmUgaGFwcGVuZWQgaW4gdGhlIGFzc2VydGlvblwiIHBvc1xuIiwiKCoqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgdGhlIENhdGFsYSBjb21waWxlciwgZG8gbm90IGVkaXQhICopXG5cbm9wZW4gUnVudGltZV9vY2FtbC5SdW50aW1lXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTQtMjYtMjctMzItNDEtNDJcIl1cblxubW9kdWxlIFByaXNlRW5DaGFyZ2UgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBvZiB1bml0XG4gICAgfCBHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgb2YgdW5pdFxuICAgIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIG9mIHVuaXRcbiAgICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIG9mIHVuaXRcbiAgICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9wcmlzZV9lbl9jaGFyZ2UgKHg6IFByaXNlRW5DaGFyZ2UudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJQcmlzZUVuQ2hhcmdlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgeCAtPlxuICAgICAgKFwiR2FyZGVBbHRlcm7DqWVQYXJ0YWdlQWxsb2NhdGlvbnNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIHggLT5cbiAgICAgIChcIkdhcmRlQWx0ZXJuw6llQWxsb2NhdGFpcmVVbmlxdWVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIHggLT4gKFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIHggLT5cbiAgICAgIChcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzw6llw4BMYUZhbWlsbGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCB4IC0+XG4gICAgICAoXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc8OpZUF1eFNlcnZpY2VzU29jaWF1eFwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgQXZhbnQgb2YgdW5pdFxuICAgIHwgUGVuZGFudCBvZiB1bml0XG4gICAgfCBBcHJlcyBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlICh4OiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQXZhbnQgeCAtPiAoXCJBdmFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBQZW5kYW50IHggLT4gKFwiUGVuZGFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBcHJlcyB4IC0+IChcIkFwcsOoc1wiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQcmlzZUVuQ29tcHRlID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IENvbXBsZXRlIG9mIHVuaXRcbiAgICB8IFBhcnRhZ2VlIG9mIHVuaXRcbiAgICB8IFplcm8gb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9wcmlzZV9lbl9jb21wdGUgKHg6IFByaXNlRW5Db21wdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJQcmlzZUVuQ29tcHRlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IENvbXBsZXRlIHggLT4gKFwiQ29tcGzDqHRlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFBhcnRhZ2VlIHggLT4gKFwiUGFydGFnw6llXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFplcm8geCAtPiAoXCJaw6lyb1wiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBWZXJzZW1lbnRBbGxvY2F0aW9ucyA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBOb3JtYWwgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3ZlcnNlbWVudF9hbGxvY2F0aW9ucyAoeDogVmVyc2VtZW50QWxsb2NhdGlvbnMudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJWZXJzZW1lbnRBbGxvY2F0aW9uc1wiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb3JtYWwgeCAtPiAoXCJOb3JtYWxcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uVmVyc8OpZUF1eFNlcnZpY2VzU29jaWF1eFwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IFByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnQgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbnNGYW1pbGlhbGVzIG9mIHVuaXRcbiAgICB8IENvbXBsZW1lbnRGYW1pbGlhbCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnQgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZSBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmUgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9lbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgKHg6IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCLDiWzDqW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudCB4IC0+XG4gICAgICAoXCJQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25zRmFtaWxpYWxlcyB4IC0+IChcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBDb21wbGVtZW50RmFtaWxpYWwgeCAtPiAoXCJDb21wbMOpbWVudEZhbWlsaWFsXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudCB4IC0+IChcIkFsbG9jYXRpb25Mb2dlbWVudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb27DiWR1Y2F0aW9uRW5mYW50SGFuZGljYXDDqVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uUmVudHLDqWVTY29sYWlyZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uSm91cm5hbGnDqHJlUHJlc2VuY2VQYXJlbnRhbGVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgQ29sbGVjdGl2aXRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEd1YWRlbG91cGUgb2YgdW5pdFxuICAgIHwgR3V5YW5lIG9mIHVuaXRcbiAgICB8IE1hcnRpbmlxdWUgb2YgdW5pdFxuICAgIHwgTGFSZXVuaW9uIG9mIHVuaXRcbiAgICB8IFNhaW50QmFydGhlbGVteSBvZiB1bml0XG4gICAgfCBTYWludE1hcnRpbiBvZiB1bml0XG4gICAgfCBNZXRyb3BvbGUgb2YgdW5pdFxuICAgIHwgU2FpbnRQaWVycmVFdE1pcXVlbG9uIG9mIHVuaXRcbiAgICB8IE1heW90dGUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9jb2xsZWN0aXZpdGUgKHg6IENvbGxlY3Rpdml0ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkNvbGxlY3Rpdml0w6lcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgR3VhZGVsb3VwZSB4IC0+IChcIkd1YWRlbG91cGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgR3V5YW5lIHggLT4gKFwiR3V5YW5lXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE1hcnRpbmlxdWUgeCAtPiAoXCJNYXJ0aW5pcXVlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IExhUmV1bmlvbiB4IC0+IChcIkxhUsOpdW5pb25cIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRCYXJ0aGVsZW15IHggLT4gKFwiU2FpbnRCYXJ0aMOpbGVteVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTYWludE1hcnRpbiB4IC0+IChcIlNhaW50TWFydGluXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE1ldHJvcG9sZSB4IC0+IChcIk3DqXRyb3BvbGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRQaWVycmVFdE1pcXVlbG9uIHggLT4gKFwiU2FpbnRQaWVycmVFdE1pcXVlbG9uXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE1heW90dGUgeCAtPiAoXCJNYXlvdHRlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4ID0gc3RydWN0XG4gIHR5cGUgdCA9IHthZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzM6IGR1cmF0aW9ufVxuZW5kXG5sZXQgZW1iZWRfYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCAoeDogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDgudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4XCJdLFxuICBbKFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIiwgZW1iZWRfZHVyYXRpb25cbiAgICB4LkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4LmFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfMyldKVxuXG5cbm1vZHVsZSBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge21vbnRhbnRfdmVyc2U6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoeDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIFsoXCJtb250YW50X3ZlcnPDqVwiLCBlbWJlZF9tb25leSB4LkFsbG9jYXRpb25zRmFtaWxpYWxlcy5tb250YW50X3ZlcnNlKV0pXG5cblxubW9kdWxlIFNtaWMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2JydXRfaG9yYWlyZTogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9zbWljICh4OiBTbWljLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJTbWljXCJdLFxuICBbKFwiYnJ1dF9ob3JhaXJlXCIsIGVtYmVkX21vbmV5IHguU21pYy5icnV0X2hvcmFpcmUpXSlcblxuXG5tb2R1bGUgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcyA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudDogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzICh4OiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwibW9udGFudFwiLCBlbWJlZF9tb25leSB4LkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMubW9udGFudCldKVxuXG5cbm1vZHVsZSBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2lfbW9udGFudF92ZXJzZTogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9pbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoeDogSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIFsoXCJpX21vbnRhbnRfdmVyc8OpXCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMuaV9tb250YW50X3ZlcnNlKV0pXG5cblxubW9kdWxlIEVuZmFudEVudHJlZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZF9pZGVudGlmaWFudDogaW50ZWdlcjtcbiAgICBkX3JlbXVuZXJhdGlvbl9tZW5zdWVsbGU6IG1vbmV5O1xuICAgIGRfZGF0ZV9kZV9uYWlzc2FuY2U6IGRhdGU7XG4gICAgZF9wcmlzZV9lbl9jaGFyZ2U6IFByaXNlRW5DaGFyZ2UudDtcbiAgICBkX2FfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXM6IGJvb2w7XG4gICAgZF9iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQ6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50X2VudHJlZSAoeDogRW5mYW50RW50cmVlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJFbmZhbnRFbnRyw6llXCJdLFxuICBbKFwiZF9pZGVudGlmaWFudFwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5FbmZhbnRFbnRyZWUuZF9pZGVudGlmaWFudCk7XG4gICAgKFwiZF9yw6ltdW5lcmF0aW9uX21lbnN1ZWxsZVwiLCBlbWJlZF9tb25leVxuICAgIHguRW5mYW50RW50cmVlLmRfcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSk7XG4gICAgKFwiZF9kYXRlX2RlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbmZhbnRFbnRyZWUuZF9kYXRlX2RlX25haXNzYW5jZSk7XG4gICAgKFwiZF9wcmlzZV9lbl9jaGFyZ2VcIiwgZW1iZWRfcHJpc2VfZW5fY2hhcmdlXG4gICAgeC5FbmZhbnRFbnRyZWUuZF9wcmlzZV9lbl9jaGFyZ2UpO1xuICAgIChcImRfYV9kw6lqw6Bfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudEVudHJlZS5kX2FfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpO1xuICAgIChcImRfYsOpbsOpZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50RW50cmVlLmRfYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KV0pXG5cblxubW9kdWxlIEVuZmFudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgaWRlbnRpZmlhbnQ6IGludGVnZXI7XG4gICAgb2JsaWdhdGlvbl9zY29sYWlyZTogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQ7XG4gICAgcmVtdW5lcmF0aW9uX21lbnN1ZWxsZTogbW9uZXk7XG4gICAgZGF0ZV9kZV9uYWlzc2FuY2U6IGRhdGU7XG4gICAgcHJpc2VfZW5fY2hhcmdlOiBQcmlzZUVuQ2hhcmdlLnQ7XG4gICAgYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlczogYm9vbDtcbiAgICBiZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQ6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50ICh4OiBFbmZhbnQudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIkVuZmFudFwiXSxcbiAgWyhcImlkZW50aWZpYW50XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVuZmFudC5pZGVudGlmaWFudCk7XG4gICAgKFwib2JsaWdhdGlvbl9zY29sYWlyZVwiLCBlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZVxuICAgIHguRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUpO1xuICAgIChcInLDqW11bmVyYXRpb25fbWVuc3VlbGxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5FbmZhbnQucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSk7XG4gICAgKFwiZGF0ZV9kZV9uYWlzc2FuY2VcIiwgZW1iZWRfZGF0ZVxuICAgIHguRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKTtcbiAgICAoXCJwcmlzZV9lbl9jaGFyZ2VcIiwgZW1iZWRfcHJpc2VfZW5fY2hhcmdlXG4gICAgeC5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKTtcbiAgICAoXCJhX2TDqWrDoF9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50LmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpO1xuICAgIChcImLDqW7DqWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudC5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpXSlcblxuXG5tb2R1bGUgRW5mYW50TGVQbHVzQWdlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtsZV9wbHVzX2FnZTogRW5mYW50LnR9XG5lbmRcbmxldCBlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2UgKHg6IEVuZmFudExlUGx1c0FnZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiRW5mYW50TGVQbHVzw4Jnw6lcIl0sXG4gIFsoXCJsZV9wbHVzX8OiZ8OpXCIsIGVtYmVkX2VuZmFudCB4LkVuZmFudExlUGx1c0FnZS5sZV9wbHVzX2FnZSldKVxuXG5cbm1vZHVsZSBQcmVzdGF0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRyb2l0X291dmVydDogRW5mYW50LnQgLT4gYm9vbDtcbiAgICBjb25kaXRpb25zX2hvcnNfYWdlOiBFbmZhbnQudCAtPiBib29sO1xuICAgIGFnZV9sNTEyXzNfMjogZHVyYXRpb247XG4gICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzE6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoeDogUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIFsoXCJkcm9pdF9vdXZlcnRcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5QcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZHJvaXRfb3V2ZXJ0KTtcbiAgICAoXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LlByZXN0YXRpb25zRmFtaWxpYWxlcy5jb25kaXRpb25zX2hvcnNfYWdlKTtcbiAgICAoXCLDomdlX2w1MTJfM18yXCIsIGVtYmVkX2R1cmF0aW9uXG4gICAgeC5QcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYWdlX2w1MTJfM18yKTtcbiAgICAoXCJyw6lnaW1lX291dHJlX21lcl9sNzUxXzFcIiwgZW1iZWRfYm9vbFxuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xKV0pXG5cblxubW9kdWxlIFByZXN0YXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIHByZXN0YXRpb25fY291cmFudGVfaW46IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudDtcbiAgICByZXNpZGVuY2VfaW46IENvbGxlY3Rpdml0ZS50XG4gIH1cbmVuZFxubGV0IGVtYmVkX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gKHg6IFByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LlByZXN0YXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInByZXN0YXRpb25fY291cmFudGVfaW5cIiwgZW1iZWRfZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgeC5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luKTtcbiAgICAoXCJyw6lzaWRlbmNlX2luXCIsIGVtYmVkX2NvbGxlY3Rpdml0ZVxuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luKV0pXG5cblxubW9kdWxlIEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gdW5pdFxuZW5kXG5sZXQgZW1iZWRfYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbiAoXzogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPSBVbml0XG5cblxubW9kdWxlIEVuZmFudExlUGx1c0FnZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtlbmZhbnRzX2luOiBFbmZhbnQudCBhcnJheX1cbmVuZFxubGV0IGVtYmVkX2VuZmFudF9sZV9wbHVzX2FnZV9pbiAoeDogRW5mYW50TGVQbHVzQWdlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkVuZmFudExlUGx1c8OCZ8OpX2luXCJdLFxuICBbKFwiZW5mYW50c19pblwiLCBlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSB4LkVuZmFudExlUGx1c0FnZUluLmVuZmFudHNfaW4pXSlcblxuXG5tb2R1bGUgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luOiBib29sO1xuICAgIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW46IGJvb2w7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfaW46IG1vbmV5O1xuICAgIHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBlbmZhbnRzX2FfY2hhcmdlX2luOiBFbmZhbnQudCBhcnJheTtcbiAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbjogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luICh4OiBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwicGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4pO1xuICAgIChcInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNzb3VyY2VzX21lbmFnZV9pbik7XG4gICAgKFwicsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGVcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJlbmZhbnRzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KVxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZW5mYW50c19hX2NoYXJnZV9pbik7XG4gICAgKFwiYXZhaXRfZW5mYW50X8OgX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luKV0pXG5cblxubW9kdWxlIFNtaWNJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTsgcmVzaWRlbmNlX2luOiBDb2xsZWN0aXZpdGUudH1cbmVuZFxubGV0IGVtYmVkX3NtaWNfaW4gKHg6IFNtaWNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiU21pY19pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguU21pY0luLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInLDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlIHguU21pY0luLnJlc2lkZW5jZV9pbildKVxuXG5cbm1vZHVsZSBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfY291cmFudGVfaW46IGRhdGV9XG5lbmRcbmxldCBlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luICh4OiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKV0pXG5cblxubW9kdWxlIEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBpX2RhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgaV9lbmZhbnRzX2luOiBFbmZhbnRFbnRyZWUudCBhcnJheTtcbiAgICBpX3Jlc3NvdXJjZXNfbWVuYWdlX2luOiBtb25leTtcbiAgICBpX3Jlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnQ7XG4gICAgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbjogYm9vbDtcbiAgICBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW46IGJvb2w7XG4gICAgaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbjogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9pbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc19pblwiXSxcbiAgWyhcImlfZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2RhdGVfY291cmFudGVfaW4pO1xuICAgIChcImlfZW5mYW50c19pblwiLCBlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50X2VudHJlZSlcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfZW5mYW50c19pbik7XG4gICAgKFwiaV9yZXNzb3VyY2VzX23DqW5hZ2VfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcmVzc291cmNlc19tZW5hZ2VfaW4pO1xuICAgIChcImlfcsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGVcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcmVzaWRlbmNlX2luKTtcbiAgICAoXCJpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4pO1xuICAgIChcImlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4pO1xuICAgIChcImlfYXZhaXRfZW5mYW50X8OgX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW4pXSlcblxuXG5cblxubGV0IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDggKGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW46IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4SW4udCkgOiBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOC50ID1cbiAgbGV0IGFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM186IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhcIjsgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiXVxuICAgIChlbWJlZF9kdXJhdGlvbikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NzY7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkdXJhdGlvbl9vZl9udW1iZXJzICgxNikgKDApICgwKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03NjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIHtBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOC5hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzMgPVxuICAgICBhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNffVxuXG5sZXQgZW5mYW50X2xlX3BsdXNfYWdlIChlbmZhbnRfbGVfcGx1c19hZ2VfaW46IEVuZmFudExlUGx1c0FnZUluLnQpIDogRW5mYW50TGVQbHVzQWdlLnQgPVxuICBsZXQgZW5mYW50c186IEVuZmFudC50IGFycmF5ID0gZW5mYW50X2xlX3BsdXNfYWdlX2luLkVuZmFudExlUGx1c0FnZUluLmVuZmFudHNfaW4gaW5cbiAgbGV0IGxlX3BsdXNfYWdlXzogRW5mYW50LnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJFbmZhbnRMZVBsdXPDgmfDqVwiOyBcImxlX3BsdXNfw6Jnw6lcIl0gKGVtYmVkX2VuZmFudCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9ODA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19yZWR1Y2VcbiAgICAgICAgICAgICAgKGZ1biAocG90ZW50aWVsX3BsdXNfYWdlXzFfOiBFbmZhbnQudClcbiAgICAgICAgICAgICAgICAgKHBvdGVudGllbF9wbHVzX2FnZV8yXzogRW5mYW50LnQpIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAobGV0IHBvdGVudGllbF9wbHVzX2FnZV8gOiBFbmZhbnQudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWVsX3BsdXNfYWdlXzFfXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAocG90ZW50aWVsX3BsdXNfYWdlXy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpKVxuICAgICAgICAgICAgICAgICAgICAgIChsZXQgcG90ZW50aWVsX3BsdXNfYWdlXyA6IEVuZmFudC50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBwb3RlbnRpZWxfcGx1c19hZ2VfMl9cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIChwb3RlbnRpZWxfcGx1c19hZ2VfLkVuZmFudC5kYXRlX2RlX25haXNzYW5jZSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgcG90ZW50aWVsX3BsdXNfYWdlXzFfIGVsc2UgcG90ZW50aWVsX3BsdXNfYWdlXzJfKVxuICAgICAgICAgICAgICAoe0VuZmFudC5pZGVudGlmaWFudCA9IChpbnRlZ2VyX29mX3N0cmluZyBcIi0xXCIpO1xuICAgICAgICAgICAgICAgICAgRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgKCkpO1xuICAgICAgICAgICAgICAgICAgRW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKTtcbiAgICAgICAgICAgICAgICAgIEVuZmFudC5kYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDI5OTkpICgxMikgKDMxKSk7XG4gICAgICAgICAgICAgICAgICBFbmZhbnQucHJpc2VfZW5fY2hhcmdlID1cbiAgICAgICAgICAgICAgICAgICAgKFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlICgpKTtcbiAgICAgICAgICAgICAgICAgIEVuZmFudC5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgICAgICAgICAgICAgICAgICAgZmFsc2U7XG4gICAgICAgICAgICAgICAgICBFbmZhbnQuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgZmFsc2V9KSBlbmZhbnRzXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT04MDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIHtFbmZhbnRMZVBsdXNBZ2UubGVfcGx1c19hZ2UgPSBsZV9wbHVzX2FnZV99XG5cbmxldCBzbWljIChzbWljX2luOiBTbWljSW4udCkgOiBTbWljLnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBzbWljX2luLlNtaWNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IHNtaWNfaW4uU21pY0luLnJlc2lkZW5jZV9pbiBpblxuICBsZXQgYnJ1dF9ob3JhaXJlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJTbWljXCI7IFwiYnJ1dF9ob3JhaXJlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMTgtMTE3MyBkdSAxOSBkw6ljZW1icmUgMjAxOCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMDNcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMTgtMTE3MyBkdSAxOSBkw6ljZW1icmUgMjAxOCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NTdcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03NzsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMTktMTM4NyBkdSAxOCBkw6ljZW1icmUgMjAxOSBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMTVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04ODsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMTktMTM4NyBkdSAxOCBkw6ljZW1icmUgMjAxOSBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NjZcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMC0xNTk4IGR1IDE2IGTDqWNlbWJyZSAyMDIwIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAyNVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjc7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIwLTE1OTggZHUgMTYgZMOpY2VtYnJlIDIwMjAgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzc0XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjEtMTc0MSBkdSAyMiBkw6ljZW1icmUgMjAyMSBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNCkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA1N1wiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjc7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIxLTE3NDEgZHUgMjIgZMOpY2VtYnJlIDIwMjEgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3OThcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk1OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTkgYXZyaWwgMjAyMiByZWxhdGlmIGF1IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDUpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA4NVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDY7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAxOSBhdnJpbCAyMDIyIHJlbGF0aWYgYXUgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODE5XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzNDsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI5IGp1aWxsZXQgMjAyMiByZWxhdGlmIGF1IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDgpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjExMDdcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI0Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjQ1OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjkganVpbGxldCAyMDIyIHJlbGF0aWYgYXUgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoOCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgzNVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzQ7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIyLTE2MDggZHUgMjIgZMOpY2VtYnJlIDIwMjIgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMTI3XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjItMTYwOCBkdSAyMiBkw6ljZW1icmUgMjAyMiBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NTFcIikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiOyBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19KSkpKSBpblxuICB7U21pYy5icnV0X2hvcmFpcmUgPSBicnV0X2hvcmFpcmVffVxuXG5sZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbjogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgbW9udGFudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBtaW5pc3TDqXJpZWxsZSBOwrBEU1MvU0QyQi8yMDE5LzY1IGR1IDI1IG1hcnMgMjAxOSByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAxOSBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoNCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoNCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEzMTZcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbm8gRFNTL1NEMkIvMjAyMC8zMyBkdSAxOCBmw6l2cmllciAyMDIwIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIwIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDQpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDQwXCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsERTUy8yQi8yMDIxLzY1IGR1IDE5IG1hcnMgMjAyMSByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAyMSBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgZGFucyBsZSBkw6lwYXJ0ZW1lbnQgZGUgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ4MVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3TDqXJpZWxsZSBuwrBEU1MvMkIvMjAyMi84MiBkdSAyOCBtYXJzIDIwMjIgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGF2cmlsIDIwMjIgZGVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIGxhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IGRhbnMgbGUgZMOpcGFydGVtZW50IGRlIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoNCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIyMjhcIikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIHtCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnQgPSBtb250YW50X31cblxubGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXMgKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW46IFByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQpIDogUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLlByZXN0YXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IHByZXN0YXRpb25fY291cmFudGVfOiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPSBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLlByZXN0YXRpb25zRmFtaWxpYWxlc0luLnByZXN0YXRpb25fY291cmFudGVfaW4gaW5cbiAgbGV0IHJlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gaW5cbiAgbGV0IGFnZV9sNTEyXzNfMl86IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiw6JnZV9sNTEyXzNfMlwiXSAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYwOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjE7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MTItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZHVyYXRpb25fb2ZfbnVtYmVycyAoMjApICgwKSAoMCkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjA7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgc21pY19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pYy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Njk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTY5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTY5OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Njk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkgaW5cbiAgbGV0IHNtaWNfZG90X3Jlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWMucsOpc2lkZW5jZVwiXSAoZW1iZWRfY29sbGVjdGl2aXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Njg7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTY4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTY4OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc2lkZW5jZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02ODsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogU21pYy50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWNcIjsgXCJTbWljXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJzbWljXCI7IFwiU21pY1wiXSBzbWljKVxuICAgICh7U21pY0luLmRhdGVfY291cmFudGVfaW4gPSBzbWljX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgU21pY0luLnJlc2lkZW5jZV9pbiA9IHNtaWNfZG90X3Jlc2lkZW5jZV99KSkpIGluXG4gIGxldCBzbWljX2RvdF9icnV0X2hvcmFpcmVfOiBtb25leSA9IHJlc3VsdF8uU21pYy5icnV0X2hvcmFpcmUgaW5cbiAgbGV0IHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInLDqWdpbWVfb3V0cmVfbWVyX2w3NTFfMVwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2MjsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzUxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gKCkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9sNTEyXzNfMl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwicGxhZm9uZF9sNTEyXzNfMlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU5OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTk7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE1OyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI3NTUtMC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzFfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgc21pY19kb3RfYnJ1dF9ob3JhaXJlX1xuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNTVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTY5LlwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMxOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTEyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgc21pY19kb3RfYnJ1dF9ob3JhaXJlX1xuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjU1XCIpKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxNjkuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU5OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbnNfaG9yc19hZ2VfOiBFbmZhbnQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU4OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MTItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHBhcmFtXy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHBhcmFtXy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9sNTEyXzNfMl8pKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01ODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01ODsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01ODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01ODsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfOiBFbmZhbnQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Nzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2F1dHJlc19jb2Rlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFLDqGdsZXMgZGUgbm9uLWN1bXVsXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogUHJpbmNpcGVzIGfDqW7DqXJhdXhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudC5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Nzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Nzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MjsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MTItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudC5yZW11bmVyYXRpb25fbWVuc3VlbGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbDUxMl8zXzJfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9sNTEyXzNfMl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTA7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIHtQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZHJvaXRfb3V2ZXJ0ID0gZHJvaXRfb3V2ZXJ0XztcbiAgICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmNvbmRpdGlvbnNfaG9yc19hZ2UgPSBjb25kaXRpb25zX2hvcnNfYWdlXztcbiAgICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZV9sNTEyXzNfMiA9IGFnZV9sNTEyXzNfMl87XG4gICAgIFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSA9IHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX31cblxubGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXMgKGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW46IEFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICBsZXQgcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfOiBib29sID0gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbiBpblxuICBsZXQgcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfX2lfOiBib29sID0gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV86IG1vbmV5ID0gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNzb3VyY2VzX21lbmFnZV9pbiBpblxuICBsZXQgcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGVuZmFudHNfYV9jaGFyZ2VfOiBFbmZhbnQudCBhcnJheSA9IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZW5mYW50c19hX2NoYXJnZV9pbiBpblxuICBsZXQgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfOiBib29sID0gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbiBpblxuICBsZXQgcHJpc2VfZW5fY29tcHRlXzogRW5mYW50LnQgLT4gUHJpc2VFbkNvbXB0ZS50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxNTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBQcmlzZUVuQ29tcHRlLlBhcnRhZ2VlICgpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI1NTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBQcmlzZUVuQ29tcHRlLlplcm8gKCkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk3OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjY1OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSAoKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwNTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwYXJhbV8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBQcmlzZUVuQ29tcHRlLkNvbXBsZXRlICgpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBQcmlzZUVuQ29tcHRlLkNvbXBsZXRlICgpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCB2ZXJzZW1lbnRfOiBFbmZhbnQudCAtPiBWZXJzZW1lbnRBbGxvY2F0aW9ucy50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwidmVyc2VtZW50XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2MDsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLkFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzE7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTk7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWwgKCkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDk7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLk5vcm1hbCAoKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODk7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHBhcmFtXy5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gVmVyc2VtZW50QWxsb2NhdGlvbnMuTm9ybWFsICgpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBub21icmVfZW5mYW50c19sNTIxXzFfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibm9tYnJlX2VuZmFudHNfbDUyMV8xXCJdIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNDU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQ1OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI5NDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE0NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDU7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX2VuZmFudHNfYWxpbmVhXzJfbDUyMV8zXzogaW50ZWdlciA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm5vbWJyZV9lbmZhbnRzX2FsaW7DqWFfMl9sNTIxXzNcIl1cbiAgICAoZW1iZWRfaW50ZWdlcikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0NzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTY0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTY0OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE0Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcmVzdWx0XzogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDgudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJ2ZXJzaW9uX2F2cmlsXzIwMDhcIjtcbiAgICAgIFwiQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInZlcnNpb25fYXZyaWxfMjAwOFwiO1xuICAgICAgXCJBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOFwiXSBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4KVxuICAgICgoKSkpKSBpblxuICBsZXQgdmVyc2lvbl9hdnJpbF8yMDA4X2RvdF9hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfOiBkdXJhdGlvbiA9IHJlc3VsdF8uQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDguYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zIGluXG4gIGxldCBibWFmX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJibWFmLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTU5OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTU5OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTU5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1OTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImJtYWZcIjsgXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdXG4gICAgKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImJtYWZcIjsgXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdXG4gICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAoe0Jhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgYm1hZl9kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBibWFmX2RvdF9tb250YW50XzogbW9uZXkgPSByZXN1bHRfLkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMubW9udGFudCBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE1NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTU7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTU7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTU1OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmVzdGF0aW9uX2NvdXJhbnRlXzogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXMucHJlc3RhdGlvbl9jb3VyYW50ZVwiXVxuICAgICAgKGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE1Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTM7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTM7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbnNGYW1pbGlhbGVzICgpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTUzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1MzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5yw6lzaWRlbmNlXCJdXG4gICAgICAoZW1iZWRfY29sbGVjdGl2aXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1NzsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1NzsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNpZGVuY2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTU3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1NzsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdIHByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgKHtQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIFByZXN0YXRpb25zRmFtaWxpYWxlc0luLnByZXN0YXRpb25fY291cmFudGVfaW4gPVxuICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3ByZXN0YXRpb25fY291cmFudGVfO1xuICAgICAgICBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gPVxuICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc2lkZW5jZV99KSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfOiBFbmZhbnQudCAtPiBib29sID0gcmVzdWx0Xy5QcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZHJvaXRfb3V2ZXJ0IGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9jb25kaXRpb25zX2hvcnNfYWdlXzogRW5mYW50LnQgLT4gYm9vbCA9IHJlc3VsdF8uUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmNvbmRpdGlvbnNfaG9yc19hZ2UgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2FnZV9sNTEyXzNfMl86IGR1cmF0aW9uID0gcmVzdWx0Xy5QcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYWdlX2w1MTJfM18yIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV86IGJvb2wgPSByZXN1bHRfLlByZXN0YXRpb25zRmFtaWxpYWxlcy5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSBpblxuICBsZXQgZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9lbmZhbnRzXzogRW5mYW50LnQgYXJyYXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZW5mYW50X2xlX3BsdXNfw6Jnw6kuZW5mYW50c1wiXVxuICAgICAgKGVtYmVkX2FycmF5IChlbWJlZF9lbmZhbnQpKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZW5mYW50c19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEVuZmFudExlUGx1c0FnZS50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImVuZmFudF9sZV9wbHVzX8OiZ8OpXCI7IFwiRW5mYW50TGVQbHVzw4Jnw6lcIl1cbiAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZW5mYW50X2xlX3BsdXNfw6Jnw6lcIjsgXCJFbmZhbnRMZVBsdXPDgmfDqVwiXVxuICAgIGVuZmFudF9sZV9wbHVzX2FnZSlcbiAgICAoe0VuZmFudExlUGx1c0FnZUluLmVuZmFudHNfaW4gPSBlbmZhbnRfbGVfcGx1c19hZ2VfZG90X2VuZmFudHNffSkpKSBpblxuICBsZXQgZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9sZV9wbHVzX2FnZV86IEVuZmFudC50ID0gcmVzdWx0Xy5FbmZhbnRMZVBsdXNBZ2UubGVfcGx1c19hZ2UgaW5cbiAgbGV0IGFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM186IEVuZmFudC50IC0+IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIl0gKHVuZW1iZWRkYWJsZSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0NjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Mzsgc3RhcnRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1ciAocGFyYW1fLkVuZmFudC5kYXRlX2RlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTEpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDgpICg0KSAoMzApKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9hdnJpbF8yMDA4X2RvdF9hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDE0KSAoMCkgKDApKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0NjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNDY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQ2OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXzogRW5mYW50LnQgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiZW5mYW50c1/DoF9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF9lbmZhbnQpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTc1OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19maWx0ZXJcbiAgICAgICAgICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydFwiXVxuICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfKVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpIGVuZmFudHNfYV9jaGFyZ2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk1OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGVzdF9lbmZhbnRfbGVfcGx1c19hZ2VfOiBFbmZhbnQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZXN0X2VuZmFudF9sZV9wbHVzX8OiZ8OpXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQ4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gKFxuICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICBvX2VxIGVuZmFudF9sZV9wbHVzX2FnZV9kb3RfbGVfcGx1c19hZ2VfIHBhcmFtXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTE0ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTQ4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX19pX2lfZDUyMV8zXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwbGFmb25kX0lJX2Q1MjFfM1wiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE1MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTA7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDaXJjdWxhaXJlIGludGVybWluaXN0w6lyaWVsbGUgTsKwIERTUy9TRDJCLzIwMTcvMzUyIGR1IDIyIGTDqWNlbWJyZSAyMDE3IHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBqYW52aWVyIDIwMTggZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXMgZOKAmWF0dHJpYnV0aW9uIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBsYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3ODc3MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NjI4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MzsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsCBEU1MvU0QyQi8yMDE4LzI3OSBkdSAxNyBkw6ljZW1icmUgMjAxOCByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE5IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzk1NTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTY4NDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MDsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTY7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3RlcmllbGxlIG5vIERTUy9TRDJCLzIwMTkvMjYxIGR1IDE4IGTDqWNlbWJyZSAyMDE5IHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBqYW52aWVyIDIwMjAgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXMgZOKAmWF0dHJpYnV0aW9uIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MDgzMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1Nzc1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTMyOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAxNCBkw6ljZW1icmUgMjAyMCByZWxhdGlmIGF1IG1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXMgZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgYXV4IHRyYW5jaGVzIGR1IGJhcsOobWUgYXBwbGljYWJsZSBhdSByZWNvdXZyZW1lbnQgZGVzIGluZHVzIGV0IMOgIGxhIHNhaXNpZSBkZXMgcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgxNTU4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4MjcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMxNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3ODMwMDAwXCIpXG4gICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTU5NTAwXCIpXG4gICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE1MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTA7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9faV9kNTIxXzNfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInBsYWZvbmRfSV9kNTIxXzNcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQ5OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0OTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2lyY3VsYWlyZSBpbnRlcm1pbmlzdMOpcmllbGxlIE7CsCBEU1MvU0QyQi8yMDE3LzM1MiBkdSAyMiBkw6ljZW1icmUgMjAxNyByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE4IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYyODYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTYyODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTY7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3TDqXJpZWxsZSBuwrAgRFNTL1NEMkIvMjAxOC8yNzkgZHUgMTcgZMOpY2VtYnJlIDIwMTggcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGphbnZpZXIgMjAxOSBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlcyBk4oCZYXR0cmlidXRpb24gZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIGxhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2ODQ5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU2ODQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDk7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg5OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0ZXJpZWxsZSBubyBEU1MvU0QyQi8yMDE5LzI2MSBkdSAxOCBkw6ljZW1icmUgMjAxOSByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDIwIGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTc3NTkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTc3NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTQgZMOpY2VtYnJlIDIwMjAgcmVsYXRpZiBhdSBtb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IGF1eCB0cmFuY2hlcyBkdSBiYXLDqG1lIGFwcGxpY2FibGUgYXUgcmVjb3V2cmVtZW50IGRlcyBpbmR1cyBldCDDoCBsYSBzYWlzaWUgZGVzIHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1ODI3OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1ODI3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMwNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMDQ7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTU5NTAwMFwiKVxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU1OTUwMFwiKVxuICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQ5OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGRyb2l0X291dmVydF9jb21wbGVtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydF9jb21wbMOpbWVudFwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTMyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzMjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzI7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTMyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzI7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mjk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDMwOyBlbmRfY29sdW1uPTcxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDc1NS0xMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTMyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzMjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTMyOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGRyb2l0X291dmVydF9mb3JmYWl0YWlyZV86IEVuZmFudC50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyMzsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyNDsgZW5kX2NvbHVtbj03MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDc1NS0xMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IERpc3Bvc2l0aW9ucyBwYXJ0aWN1bGnDqHJlcyDDoCBsYSBHdWFkZWxvdXBlLCDDoCBsYSBHdXlhbmUsIMOgIGxhIE1hcnRpbmlxdWUsIMOgIExhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSBldCDDoCBTYWludC1NYXJ0aW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludCAob19sZW5ndGggZW5mYW50c19hX2NoYXJnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX2VuZmFudHNfYWxpbmVhXzJfbDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kdXJfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2FnZV9sNTEyXzNfMl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDApICgwKSAoMzY1KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnQuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2NvbmRpdGlvbnNfaG9yc19hZ2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIHBhcmFtXykpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTEyMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTIwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2luaXRpYWxfYmFzZV9xdWF0cmllbWVfZW5mYW50X2V0X3BsdXNfbWF5b3R0ZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICBcIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3F1YXRyacOobWVfZW5mYW50X2V0X3BsdXNfbWF5b3R0ZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE5NTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDQ2M1wiKSlcbiAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzaWVtZV9lbmZhbnRfbWF5b3R0ZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICBcIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzacOobWVfZW5mYW50X21heW90dGVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzMTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA0NjNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzOTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA1MzlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0NzsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA2MTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ1NTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA2OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDYzOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDc2NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDcxOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE2KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg0MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Nzk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDc5OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDkxOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDg3OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTA4OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00OTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk1OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTI1OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01MDM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTAzOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTQzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTg2OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50XyAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjE2XCIpKVxuICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX3RvdGFsX2VuZmFudHNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibm9tYnJlX3RvdGFsX2VuZmFudHNcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTA7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYwOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAob19sZW5ndGggZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG5vbWJyZV9tb3llbl9lbmZhbnRzXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm5vbWJyZV9tb3llbl9lbmZhbnRzXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0MjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19yZWR1Y2VcbiAgICAgICAgICAgICAgKGZ1biAoc3VtMV86IGRlY2ltYWwpIChzdW0yXzogZGVjaW1hbCkgLT5cbiAgICAgICAgICAgICAgICAgb19hZGRfcmF0X3JhdCBzdW0xXyBzdW0yXykgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIilcbiAgICAgICAgICAgICAgKG9fbWFwXG4gICAgICAgICAgICAgICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfcHJpc2VfZW5fY29tcHRlKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgcHJpc2VfZW5fY29tcHRlXykgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuQ29tcGxldGUgXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuUGFydGFnZWUgXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjVcIilcbiAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ29tcHRlLlplcm8gXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSlcbiAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9iYXNlX3ByZW1pZXJfZW5mYW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfYmFzZV9wcmVtaWVyX2VuZmFudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI1MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI1MjsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjE0NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNjE7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMzkzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3MDsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEzKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEzMzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjc5OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTI3OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yODg7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMjJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE2KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTE2M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDY7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMTA1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA5NzZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzIzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzI0OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg0N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzM7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNzE3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0MTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTcyOFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjc7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDU4OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY2OyBlbmRfY29sdW1uPTcxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDU4OFwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM2Mjsgc3RhcnRfY29sdW1uPTI5OyBlbmRfbGluZT0zNjI7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGRyb2l0X291dmVydF9iYXNlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydF9iYXNlXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAzOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDM7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTk7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1OTsgZW5kX2NvbHVtbj03MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDEwOyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzU1LTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDM7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbl86IEVuZmFudC50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyNTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE4OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9lbmZhbnRzX2FsaW5lYV8yX2w1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfZHVyYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX2VuZmFudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtXykpKSkpKSkpIGRhdGVfY291cmFudGVfKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDI7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3QgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZXN0X2VuZmFudF9sZV9wbHVzX8OiZ8OpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlc3RfZW5mYW50X2xlX3BsdXNfw6Jnw6lcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlc3RfZW5mYW50X2xlX3BsdXNfw6Jnw6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlc3RfZW5mYW50X2xlX3BsdXNfYWdlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVzdF9lbmZhbnRfbGVfcGx1c1/DomfDqVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfZHVyYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXykpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyNTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGNvbXBsZW1lbnRfZGVncmVzc2lmXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJjb21wbMOpbWVudF9kw6lncmVzc2lmXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjY7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcGxhZm9uZF9faV9kNTIxXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2Q1MjFfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3NTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9pX2Q1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBsYWZvbmRfX2lfaV9kNTIxXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2lfZDUyMV8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4MTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4MTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfcGFyX2VuZmFudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lfZm9yZmFpdGFpcmVfcGFyX2VuZmFudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTIxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjE7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjIxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjE7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfZDUyMV8zXykpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjAyMzRcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjE7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzY7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTAxMTdcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjE7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNDk7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV8gcGxhZm9uZF9faV9pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA1MDU5XCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjE7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lX2VuZmFudF9ldF9wbHVzXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpw6htZV9lbmZhbnRfZXRfcGx1c1wiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfZDUyMV8zXykpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQxXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODQ7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIwNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV8gcGxhZm9uZF9faV9pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMDI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfZGV1eGllbWVfZW5mYW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfYmFzZV9kZXV4acOobWVfZW5mYW50XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzUwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzUwOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIzMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTg7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjM3OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjY7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjQzN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzQ7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjQ5NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODI7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjU1NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTA7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjYxM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTg7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjY3MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDY7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjgwNFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTQ7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjkzNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjI7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMzA2OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTc3OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjMyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlXyBwbGFmb25kX19pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMzJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03OTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Nzk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2lfZDUyMV8zXykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcmFwcG9ydF9lbmZhbnRzX3RvdGFsX21veWVuXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInJhcHBvcnRfZW5mYW50c190b3RhbF9tb3llblwiXSAoZW1iZWRfZGVjaW1hbClcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA4OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIChvX2VxIG5vbWJyZV90b3RhbF9lbmZhbnRzXyAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkgdGhlblxuICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0IG5vbWJyZV9tb3llbl9lbmZhbnRzXyBub21icmVfdG90YWxfZW5mYW50c18pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDg7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX21ldHJvcG9sZV9tYWpvcmF0aW9uXzogRW5mYW50LnQgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2Q1MjFfM18pICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIHBhcmFtXykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjE2XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2Q1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9pX2Q1MjFfM18pKSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb2l0X291dmVydF9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBwYXJhbV8pKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wOFwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzODsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9pX2Q1MjFfM18pICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIHBhcmFtXykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA0XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIHBhcmFtXykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTEyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTI2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X3ZlcnPDqV9mb3JmYWl0YWlyZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEyMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTk5OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfcGFyX2VuZmFudF9cbiAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9mb3JmYWl0YWlyZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSkgZW5mYW50c19hX2NoYXJnZV8pKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTIyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2luaXRpYWxfYmFzZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX2Jhc2VcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTc7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENzU1LTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfYmFzZV9wcmVtaWVyX2VuZmFudF8pKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTE7IHN0YXJ0X2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfYmFzZV9wcmVtaWVyX2VuZmFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9iYXNlX2RldXhpZW1lX2VuZmFudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfYmFzZV90cm9pc2llbWVfZW5mYW50X21heW90dGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9pbml0aWFsX2Jhc2VfcXVhdHJpZW1lX2VuZmFudF9ldF9wbHVzX21heW90dGVfKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2FkZF9tb25fbW9uIG1vbnRhbnRfaW5pdGlhbF9iYXNlX2RldXhpZW1lX2VuZmFudF9cbiAgICAgICAgICAgICAgbW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lX2VuZmFudF9ldF9wbHVzXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9tYWpvcmF0aW9uXzogRW5mYW50LnQgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvblwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyNzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI3OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzgzOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENzU1LTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb2l0X291dmVydF9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTEpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTYpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMzY5XCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjc7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTI7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTYpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA1NjdcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9pbml0aWFsX23DqXRyb3BvbGVfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9pbml0aWFsX23DqXRyb3BvbGVfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9tZXRyb3BvbGVfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyNzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI3OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyX2ZvcmZhaXRhaXJlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X3ZlcnPDqV9jb21wbMOpbWVudF9wb3VyX2ZvcmZhaXRhaXJlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM2OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzNjsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzNjsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzA7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2Q1MjFfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2Q1MjFfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzY7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjgwOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2lfZDUyMV8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBsYWZvbmRfX2lfaV9kNTIxXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI4Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yODY7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTM2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzNjsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuZWVfYmFzZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybsOpZV9iYXNlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTExOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgbW9udGFudF9pbml0aWFsX2Jhc2VfIHJhcHBvcnRfZW5mYW50c190b3RhbF9tb3llbl8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTExOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExMTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuZWVfbWFqb3JhdGlvbl86IEVuZmFudC50IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybsOpZV9tYWpvcmF0aW9uXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjg7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSAoXG4gICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg2OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfbWFqb3JhdGlvbl8pICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfZW5mYW50KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgKG1hdGNoICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9wcmlzZV9lbl9jb21wdGUpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICBwcmlzZV9lbl9jb21wdGVfKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ29tcHRlLkNvbXBsZXRlIF8gLT4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ29tcHRlLlBhcnRhZ2VlIF8gLT4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41XCIpXG4gICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNvbXB0ZS5aZXJvIF8gLT4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI4OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfYmFzZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lfYmFzZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTI7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIGRyb2l0X291dmVydF9iYXNlXyB0aGVuIG1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9iYXNlX1xuICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTI7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF92ZXJzZV9tYWpvcmF0aW9uXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X3ZlcnPDqV9tYWpvcmF0aW9uXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTI5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyOTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgZHJvaXRfb3V2ZXJ0X2Jhc2VfIHRoZW5cbiAgICAgICAgICAgICAgKG9fcmVkdWNlXG4gICAgICAgICAgICAgICAgIChmdW4gKHN1bTFfOiBtb25leSkgKHN1bTJfOiBtb25leSkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiBzdW0xXyBzdW0yXykgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgICAgKG9fbWFwXG4gICAgICAgICAgICAgICAgICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybsOpZV9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuw6llX21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybsOpZV9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm7DqWVfbWFqb3JhdGlvblwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpIGVuZmFudHNfYV9jaGFyZ2VfKSkgZWxzZVxuICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI5OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfYmFzZV9jb21wbGVtZW50X3BvdXJfYmFzZV9ldF9tYWpvcmF0aW9uXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwibW9udGFudF9iYXNlX2NvbXBsw6ltZW50X3BvdXJfYmFzZV9ldF9tYWpvcmF0aW9uXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTMzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzMzsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE4OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xODk7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfbW9uX21vbiBtb250YW50X3ZlcnNlX2Jhc2VfIG1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbl8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTMzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzMzsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlX2NvbXBsZW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25fOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgXCJtb250YW50X3ZlcnPDqV9jb21wbMOpbWVudF9wb3VyX2Jhc2VfZXRfbWFqb3JhdGlvblwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEzNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTgzOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiBkcm9pdF9vdXZlcnRfY29tcGxlbWVudF8gdGhlblxuICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbXBsw6ltZW50X2TDqWdyZXNzaWZcIl1cbiAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiY29tcGzDqW1lbnRfZMOpZ3Jlc3NpZlwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbXBsw6ltZW50X2TDqWdyZXNzaWZcIl1cbiAgICAgICAgICAgICAgICBjb21wbGVtZW50X2RlZ3Jlc3NpZl8pICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJjb21wbMOpbWVudF9kw6lncmVzc2lmXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgbW9udGFudF9iYXNlX2NvbXBsZW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25fKSkpKSkpKSBlbHNlXG4gICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEzNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF92ZXJzZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTAwOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NTsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiBkcm9pdF9vdXZlcnRfYmFzZV8gdGhlblxuICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBtb250YW50X3ZlcnNlX2Jhc2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2NvbXBsZW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2NvbXBsZW1lbnRfcG91cl9mb3JmYWl0YWlyZV8pIGVsc2VcbiAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwMDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIChvX29yIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfX2lfKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzMTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM1OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSkgaW5cbiAge0FsbG9jYXRpb25zRmFtaWxpYWxlcy5tb250YW50X3ZlcnNlID0gbW9udGFudF92ZXJzZV99XG5cbmxldCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW46IEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICBsZXQgaV9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgaV9lbmZhbnRzXzogRW5mYW50RW50cmVlLnQgYXJyYXkgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2VuZmFudHNfaW4gaW5cbiAgbGV0IGlfcmVzc291cmNlc19tZW5hZ2VfOiBtb25leSA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcmVzc291cmNlc19tZW5hZ2VfaW4gaW5cbiAgbGV0IGlfcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3Jlc2lkZW5jZV9pbiBpblxuICBsZXQgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF86IGJvb2wgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luIGluXG4gIGxldCBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX19pXzogYm9vbCA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbiBpblxuICBsZXQgaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl86IGJvb2wgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luIGluXG4gIGxldCBlbmZhbnRzX2FfY2hhcmdlXzogRW5mYW50LnQgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJlbmZhbnRzX8OgX2NoYXJnZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzY7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTMxLTFcIjsgXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX21hcFxuICAgICAgICAgICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnRFbnRyZWUudCkgLT5cbiAgICAgICAgICAgICAgICAge0VuZmFudC5pZGVudGlmaWFudCA9IChlbmZhbnRfLkVuZmFudEVudHJlZS5kX2lkZW50aWZpYW50KTtcbiAgICAgICAgICAgICAgICAgICAgRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDMpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlfZGF0ZV9jb3VyYW50ZV8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50ICgpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRFbnRyZWUuZF9kYXRlX2RlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTYpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlfZGF0ZV9jb3VyYW50ZV8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgKCkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzICgpKSkpO1xuICAgICAgICAgICAgICAgICAgICBFbmZhbnQucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSk7XG4gICAgICAgICAgICAgICAgICAgIEVuZmFudC5kYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgICAgICAgICAgICAgICAgICBFbmZhbnQucHJpc2VfZW5fY2hhcmdlID1cbiAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRFbnRyZWUuZF9wcmlzZV9lbl9jaGFyZ2UpO1xuICAgICAgICAgICAgICAgICAgICBFbmZhbnQuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyk7XG4gICAgICAgICAgICAgICAgICAgIEVuZmFudC5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEVudHJlZS5kX2JlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCl9KVxuICAgICAgICAgICAgICBpX2VuZmFudHNfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc2OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgIFwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudFwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05Mjsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTkyOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Mjsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTkyOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Mzsgc3RhcnRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkzOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTkyOyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9OTI7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTI7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT05MjsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19KSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX19pXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTY7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT05NjsgZW5kX2NvbHVtbj04MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTY7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT05NjsgZW5kX2NvbHVtbj04MDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj03MjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9faV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05Njsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTk2OyBlbmRfY29sdW1uPTgwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk2OyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9OTY7IGVuZF9jb2x1bW49ODA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSkpIGluXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNzb3VyY2VzX21lbmFnZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMucmVzc291cmNlc19tw6luYWdlXCJdIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg4OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODg7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGlfcmVzc291cmNlc19tZW5hZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODg7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSkpIGluXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLnLDqXNpZGVuY2VcIl1cbiAgICAgIChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04OTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTg5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBpX3Jlc2lkZW5jZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04OTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19KSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg2OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODY7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGlfZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04NjsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19KSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2VuZmFudHNfYV9jaGFyZ2VfOiBFbmZhbnQudCBhcnJheSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLmVuZmFudHNfw6BfY2hhcmdlXCJdXG4gICAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX2VuZmFudCkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04NzsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBlbmZhbnRzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0pKSBpblxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMuYXZhaXRfZW5mYW50X8OgX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMDsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTEwMDsgZW5kX2NvbHVtbj03MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDA7IGVuZF9jb2x1bW49NzI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTsgc3RhcnRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDA7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMDA7IGVuZF9jb2x1bW49NzI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAwOyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9MTAwOyBlbmRfY29sdW1uPTcyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgKHtBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbiA9XG4gICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XztcbiAgICAgICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbiA9XG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfX2lfO1xuICAgICAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNzb3VyY2VzX21lbmFnZV9pbiA9XG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzc291cmNlc19tZW5hZ2VfO1xuICAgICAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gPVxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc2lkZW5jZV87XG4gICAgICAgIEFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5lbmZhbnRzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9lbmZhbnRzX2FfY2hhcmdlXztcbiAgICAgICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW4gPVxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX30pKSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfdmVyc2VfOiBtb25leSA9IHJlc3VsdF8uQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnRfdmVyc2UgaW5cbiAgbGV0IGlfbW9udGFudF92ZXJzZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiaV9tb250YW50X3ZlcnPDqVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTgwOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTA7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfdmVyc2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTgwOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0pKSkpIGluXG4gIHtJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMuaV9tb250YW50X3ZlcnNlID0gaV9tb250YW50X3ZlcnNlX31cbiIsIigqKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHRoZSBDYXRhbGEgY29tcGlsZXIsIGRvIG5vdCBlZGl0ISAqKVxuXG5vcGVuIFJ1bnRpbWVfb2NhbWwuUnVudGltZVxub3BlbiBSdW50aW1lX2pzb28uUnVudGltZVxub3BlbiBKc19vZl9vY2FtbFxub3BlbiBBbGxvY2F0aW9uc19mYW1pbGlhbGVzXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTQtMjYtMjctMzItNDEtNDJcIl1cblxuKCogR2VuZXJhdGVkIEFQSSAqKVxuXG5jbGFzcyB0eXBlIHByaXNlX2VuX2NoYXJnZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcIlxuICAgICAgICAtIFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgICAgLSBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcHJpc2VfZW5fY2hhcmdlX3RvX2pzb28gOiBQcmlzZUVuQ2hhcmdlLnQgLT4gcHJpc2VfZW5fY2hhcmdlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyAocHJpc2VfZW5fY2hhcmdlIDogcHJpc2VfZW5fY2hhcmdlIEpzLnQpXG4gIDogUHJpc2VFbkNoYXJnZS50ID1cbiAgbWF0Y2ggcHJpc2VfZW5fY2hhcmdlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9uc1wiIC0+XG4gICAgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zICgpXG4gIHwgXCJHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlICgpXG4gIHwgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiAtPiBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSAoKVxuICB8IFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgKClcbiAgfCBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUHJpc2VFbkNoYXJnZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkF2YW50XCJcbiAgICAgICAgLSBcIlBlbmRhbnRcIlxuICAgICAgICAtIFwiQXByZXNcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV90b19qc29vXG4gIDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQgLT4gc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQXZhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdmFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBlbmRhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQZW5kYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXByZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBcHJlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfb2ZfanNvb1xuICAoc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgOiBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSBKcy50KVxuICA6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50ID1cbiAgbWF0Y2ggc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJBdmFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCAoKVxuICB8IFwiUGVuZGFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50ICgpXG4gIHwgXCJBcHJlc1wiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHByaXNlX2VuX2NvbXB0ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkNvbXBsZXRlXCJcbiAgICAgICAgLSBcIlBhcnRhZ2VlXCJcbiAgICAgICAgLSBcIlplcm9cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBwcmlzZV9lbl9jb21wdGVfdG9fanNvbyA6IFByaXNlRW5Db21wdGUudCAtPiBwcmlzZV9lbl9jb21wdGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQ29tcGxldGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGV0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBhcnRhZ2VlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFydGFnZWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBaZXJvIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiWmVyb1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcHJpc2VfZW5fY29tcHRlX29mX2pzb28gKHByaXNlX2VuX2NvbXB0ZSA6IHByaXNlX2VuX2NvbXB0ZSBKcy50KVxuICA6IFByaXNlRW5Db21wdGUudCA9XG4gIG1hdGNoIHByaXNlX2VuX2NvbXB0ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkNvbXBsZXRlXCIgLT4gUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSAoKVxuICB8IFwiUGFydGFnZWVcIiAtPiBQcmlzZUVuQ29tcHRlLlBhcnRhZ2VlICgpXG4gIHwgXCJaZXJvXCIgLT4gUHJpc2VFbkNvbXB0ZS5aZXJvICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQcmlzZUVuQ29tcHRlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHZlcnNlbWVudF9hbGxvY2F0aW9ucyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk5vcm1hbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdmVyc2VtZW50X2FsbG9jYXRpb25zX3RvX2pzb29cbiAgOiBWZXJzZW1lbnRBbGxvY2F0aW9ucy50IC0+IHZlcnNlbWVudF9hbGxvY2F0aW9ucyBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBOb3JtYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJOb3JtYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdmVyc2VtZW50X2FsbG9jYXRpb25zX29mX2pzb29cbiAgKHZlcnNlbWVudF9hbGxvY2F0aW9ucyA6IHZlcnNlbWVudF9hbGxvY2F0aW9ucyBKcy50KVxuICA6IFZlcnNlbWVudEFsbG9jYXRpb25zLnQgPVxuICBtYXRjaCB2ZXJzZW1lbnRfYWxsb2NhdGlvbnMjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJOb3JtYWxcIiAtPiBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWwgKClcbiAgfCBcIkFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiAtPlxuICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLkFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1ZlcnNlbWVudEFsbG9jYXRpb25zLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJcbiAgICAgICAgLSBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICA6IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb21wbGVtZW50RmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGVtZW50RmFtaWxpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAoZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIDogZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQpXG4gIDogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbWF0Y2ggZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudFwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5QcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbnNGYW1pbGlhbGVzICgpXG4gIHwgXCJDb21wbGVtZW50RmFtaWxpYWxcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQ29tcGxlbWVudEZhbWlsaWFsICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbkxvZ2VtZW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlXCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgKClcbiAgfCBcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCAoKVxuICB8IFwiQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlICgpXG4gIHwgXCJBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBjb2xsZWN0aXZpdGUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJHdWFkZWxvdXBlXCJcbiAgICAgICAgLSBcIkd1eWFuZVwiXG4gICAgICAgIC0gXCJNYXJ0aW5pcXVlXCJcbiAgICAgICAgLSBcIkxhUmV1bmlvblwiXG4gICAgICAgIC0gXCJTYWludEJhcnRoZWxlbXlcIlxuICAgICAgICAtIFwiU2FpbnRNYXJ0aW5cIlxuICAgICAgICAtIFwiTWV0cm9wb2xlXCJcbiAgICAgICAgLSBcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiXG4gICAgICAgIC0gXCJNYXlvdHRlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgY29sbGVjdGl2aXRlX3RvX2pzb28gOiBDb2xsZWN0aXZpdGUudCAtPiBjb2xsZWN0aXZpdGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgR3VhZGVsb3VwZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkd1YWRlbG91cGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBHdXlhbmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHdXlhbmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNYXJ0aW5pcXVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWFydGluaXF1ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IExhUmV1bmlvbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxhUmV1bmlvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNhaW50QmFydGhlbGVteSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNhaW50QmFydGhlbGVteVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNhaW50TWFydGluIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiU2FpbnRNYXJ0aW5cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNZXRyb3BvbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNZXRyb3BvbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTYWludFBpZXJyZUV0TWlxdWVsb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTYWludFBpZXJyZUV0TWlxdWVsb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNYXlvdHRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWF5b3R0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgY29sbGVjdGl2aXRlX29mX2pzb28gKGNvbGxlY3Rpdml0ZSA6IGNvbGxlY3Rpdml0ZSBKcy50KVxuICA6IENvbGxlY3Rpdml0ZS50ID1cbiAgbWF0Y2ggY29sbGVjdGl2aXRlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiR3VhZGVsb3VwZVwiIC0+IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpXG4gIHwgXCJHdXlhbmVcIiAtPiBDb2xsZWN0aXZpdGUuR3V5YW5lICgpXG4gIHwgXCJNYXJ0aW5pcXVlXCIgLT4gQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKClcbiAgfCBcIkxhUmV1bmlvblwiIC0+IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKClcbiAgfCBcIlNhaW50QmFydGhlbGVteVwiIC0+IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKClcbiAgfCBcIlNhaW50TWFydGluXCIgLT4gQ29sbGVjdGl2aXRlLlNhaW50TWFydGluICgpXG4gIHwgXCJNZXRyb3BvbGVcIiAtPiBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpXG4gIHwgXCJTYWludFBpZXJyZUV0TWlxdWVsb25cIiAtPiBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uICgpXG4gIHwgXCJNYXlvdHRlXCIgLT4gQ29sbGVjdGl2aXRlLk1heW90dGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NvbGxlY3Rpdml0ZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFnZU1pbmltdW1BbGluZWExTDUyMTM6XG4gICAgICBSdW50aW1lX2pzb28uUnVudGltZS5kdXJhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X3RvX2pzb29cbiAgICAoYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCA6IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4LnQpXG4gICAgOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFnZU1pbmltdW1BbGluZWExTDUyMTMgPVxuICAgICAgICBkdXJhdGlvbl90b19qc29vIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDguYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zXG4gICAgICBlbmRcbiAgbGV0IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb2ZfanNvb1xuICAgIChhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IDogYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCBKcy50KSA6XG4gICAgQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDgudCA9XG4gICAge1xuICAgICAgYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zID1cbiAgICAgICAgZHVyYXRpb25fb2ZfanNvb1xuICAgICAgICAgIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDgjIy5hZ2VNaW5pbXVtQWxpbmVhMUw1MjEzXG4gICAgfVxuXG5jbGFzcyB0eXBlIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRWZXJzZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgIDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb250YW50VmVyc2UgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5tb250YW50X3ZlcnNlXG4gICAgICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSA6XG4gICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnRfdmVyc2UgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyMjLm1vbnRhbnRWZXJzZVxuICAgIH1cblxuY2xhc3MgdHlwZSBzbWljID1cbiAgb2JqZWN0IG1ldGhvZCBicnV0SG9yYWlyZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHNtaWNfdG9fanNvbyAoc21pYyA6IFNtaWMudCkgOiBzbWljIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGJydXRIb3JhaXJlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHNtaWMuYnJ1dF9ob3JhaXJlXG4gICAgICBlbmRcbiAgbGV0IHNtaWNfb2ZfanNvbyAoc21pYyA6IHNtaWMgSnMudCkgOiBTbWljLnQgPVxuICAgIHtcbiAgICAgIGJydXRfaG9yYWlyZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBzbWljIyMuYnJ1dEhvcmFpcmVcbiAgICB9XG5cbmNsYXNzIHR5cGUgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdCBtZXRob2QgbW9udGFudDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpXG4gICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vbnRhbnQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5tb250YW50XG4gICAgICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9XG4gICAge1xuICAgICAgbW9udGFudCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIyMubW9udGFudFxuICAgIH1cblxuY2xhc3MgdHlwZSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdCBtZXRob2QgaU1vbnRhbnRWZXJzZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cbiAgICAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgOiBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudClcbiAgICA6IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGlNb250YW50VmVyc2UgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMuaV9tb250YW50X3ZlcnNlXG4gICAgICBlbmRcbiAgbGV0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX29mX2pzb29cbiAgICAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIDogaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50ID1cbiAgICB7XG4gICAgICBpX21vbnRhbnRfdmVyc2UgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMjIy5pTW9udGFudFZlcnNlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVuZmFudF9lbnRyZWUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZElkZW50aWZpYW50OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkUmVtdW5lcmF0aW9uTWVuc3VlbGxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGREYXRlRGVOYWlzc2FuY2U6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZFByaXNlRW5DaGFyZ2U6IHByaXNlX2VuX2NoYXJnZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZEFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXM6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkQmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudDpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X2VudHJlZV90b19qc29vIChlbmZhbnRfZW50cmVlIDogRW5mYW50RW50cmVlLnQpXG4gICAgOiBlbmZhbnRfZW50cmVlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRJZGVudGlmaWFudCA9IGludGVnZXJfdG9faW50IGVuZmFudF9lbnRyZWUuZF9pZGVudGlmaWFudFxuICAgICAgdmFsIGRSZW11bmVyYXRpb25NZW5zdWVsbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZW5mYW50X2VudHJlZS5kX3JlbXVuZXJhdGlvbl9tZW5zdWVsbGVcbiAgICAgIHZhbCBkRGF0ZURlTmFpc3NhbmNlID0gZGF0ZV90b19qc29vIGVuZmFudF9lbnRyZWUuZF9kYXRlX2RlX25haXNzYW5jZVxuICAgICAgdmFsIGRQcmlzZUVuQ2hhcmdlID1cbiAgICAgICAgcHJpc2VfZW5fY2hhcmdlX3RvX2pzb28gZW5mYW50X2VudHJlZS5kX3ByaXNlX2VuX2NoYXJnZVxuICAgICAgdmFsIGRBRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnRfZW50cmVlLmRfYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgdmFsIGRCZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50ID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnRfZW50cmVlLmRfYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9lbnRyZWVfb2ZfanNvbyAoZW5mYW50X2VudHJlZSA6IGVuZmFudF9lbnRyZWUgSnMudCkgOlxuICAgIEVuZmFudEVudHJlZS50ID1cbiAgICB7XG4gICAgICBkX2lkZW50aWZpYW50ID0gaW50ZWdlcl9vZl9pbnQgZW5mYW50X2VudHJlZSMjLmRJZGVudGlmaWFudDtcbiAgICAgIGRfcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBlbmZhbnRfZW50cmVlIyMuZFJlbXVuZXJhdGlvbk1lbnN1ZWxsZTtcbiAgICAgIGRfZGF0ZV9kZV9uYWlzc2FuY2UgPSBkYXRlX29mX2pzb28gZW5mYW50X2VudHJlZSMjLmREYXRlRGVOYWlzc2FuY2U7XG4gICAgICBkX3ByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgIHByaXNlX2VuX2NoYXJnZV9vZl9qc29vIGVuZmFudF9lbnRyZWUjIy5kUHJpc2VFbkNoYXJnZTtcbiAgICAgIGRfYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLnRvX2Jvb2wgZW5mYW50X2VudHJlZSMjLmRBRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzO1xuICAgICAgZF9iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgZW5mYW50X2VudHJlZSMjLmRCZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50XG4gICAgfVxuXG5jbGFzcyB0eXBlIGVuZmFudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBpZGVudGlmaWFudDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgb2JsaWdhdGlvblNjb2xhaXJlOlxuICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlbXVuZXJhdGlvbk1lbnN1ZWxsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRGVOYWlzc2FuY2U6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcHJpc2VFbkNoYXJnZTogcHJpc2VfZW5fY2hhcmdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudDpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X3RvX2pzb28gKGVuZmFudCA6IEVuZmFudC50KSA6IGVuZmFudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBpZGVudGlmaWFudCA9IGludGVnZXJfdG9faW50IGVuZmFudC5pZGVudGlmaWFudFxuICAgICAgdmFsIG9ibGlnYXRpb25TY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX3RvX2pzb28gZW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmVcbiAgICAgIHZhbCByZW11bmVyYXRpb25NZW5zdWVsbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGVcbiAgICAgIHZhbCBkYXRlRGVOYWlzc2FuY2UgPSBkYXRlX3RvX2pzb28gZW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlXG4gICAgICB2YWwgcHJpc2VFbkNoYXJnZSA9IHByaXNlX2VuX2NoYXJnZV90b19qc29vIGVuZmFudC5wcmlzZV9lbl9jaGFyZ2VcbiAgICAgIHZhbCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnQuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgdmFsIGJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQgPVxuICAgICAgICBKcy5ib29sIGVuZmFudC5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIGVuZFxuICBsZXQgZW5mYW50X29mX2pzb28gKGVuZmFudCA6IGVuZmFudCBKcy50KSA6IEVuZmFudC50ID1cbiAgICB7XG4gICAgICBpZGVudGlmaWFudCA9IGludGVnZXJfb2ZfaW50IGVuZmFudCMjLmlkZW50aWZpYW50O1xuICAgICAgb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX29mX2pzb28gZW5mYW50IyMub2JsaWdhdGlvblNjb2xhaXJlO1xuICAgICAgcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBlbmZhbnQjIy5yZW11bmVyYXRpb25NZW5zdWVsbGU7XG4gICAgICBkYXRlX2RlX25haXNzYW5jZSA9IGRhdGVfb2ZfanNvbyBlbmZhbnQjIy5kYXRlRGVOYWlzc2FuY2U7XG4gICAgICBwcmlzZV9lbl9jaGFyZ2UgPSBwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyBlbmZhbnQjIy5wcmlzZUVuQ2hhcmdlO1xuICAgICAgYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLnRvX2Jvb2wgZW5mYW50IyMuYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcztcbiAgICAgIGJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgIEpzLnRvX2Jvb2wgZW5mYW50IyMuYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudFxuICAgIH1cblxuY2xhc3MgdHlwZSBlbmZhbnRfbGVfcGx1c19hZ2UgPVxuICBvYmplY3QgbWV0aG9kIGxlUGx1c0FnZTogZW5mYW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV90b19qc29vIChlbmZhbnRfbGVfcGx1c19hZ2UgOiBFbmZhbnRMZVBsdXNBZ2UudClcbiAgICA6IGVuZmFudF9sZV9wbHVzX2FnZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBsZVBsdXNBZ2UgPSBlbmZhbnRfdG9fanNvbyBlbmZhbnRfbGVfcGx1c19hZ2UubGVfcGx1c19hZ2VcbiAgICAgIGVuZFxuICBsZXQgZW5mYW50X2xlX3BsdXNfYWdlX29mX2pzb29cbiAgICAoZW5mYW50X2xlX3BsdXNfYWdlIDogZW5mYW50X2xlX3BsdXNfYWdlIEpzLnQpIDogRW5mYW50TGVQbHVzQWdlLnQgPVxuICAgIHtsZV9wbHVzX2FnZSA9IGVuZmFudF9vZl9qc29vIGVuZmFudF9sZV9wbHVzX2FnZSMjLmxlUGx1c0FnZVxuICAgIH1cblxuY2xhc3MgdHlwZSBwcmVzdGF0aW9uc19mYW1pbGlhbGVzID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRyb2l0T3V2ZXJ0OiAoZW5mYW50IEpzLnQsICBib29sIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICAgIG1ldGhvZCBjb25kaXRpb25zSG9yc0FnZTpcbiAgICAgIChlbmZhbnQgSnMudCwgIGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIGFnZUw1MTIzMjogUnVudGltZV9qc29vLlJ1bnRpbWUuZHVyYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlZ2ltZU91dHJlTWVyTDc1MTE6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgOiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCkgOiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgbWV0aG9kIGRyb2l0T3V2ZXJ0ID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5ib29sIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzLmRyb2l0X291dmVydCAoZW5mYW50X29mX2pzb28gaW5wdXQpKSlcbiAgICAgIG1ldGhvZCBjb25kaXRpb25zSG9yc0FnZSA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMuYm9vbCAocHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5jb25kaXRpb25zX2hvcnNfYWdlIChlbmZhbnRfb2ZfanNvbyBpbnB1dCkpKVxuICAgICAgdmFsIGFnZUw1MTIzMiA9IGR1cmF0aW9uX3RvX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5hZ2VfbDUxMl8zXzJcbiAgICAgIHZhbCByZWdpbWVPdXRyZU1lckw3NTExID1cbiAgICAgICAgSnMuYm9vbCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzLnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXG4gICAgICBlbmRcbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzIDogcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSA6XG4gICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIGRyb2l0X291dmVydCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdkcm9pdF9vdXZlcnQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvbmRpdGlvbnNfaG9yc19hZ2UgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnY29uZGl0aW9uc19ob3JzX2FnZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiO1xuICAgICAgYWdlX2w1MTJfM18yID0gZHVyYXRpb25fb2ZfanNvbyBwcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMuYWdlTDUxMjMyO1xuICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzEgPVxuICAgICAgICBKcy50b19ib29sIHByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5yZWdpbWVPdXRyZU1lckw3NTExXG4gICAgfVxuXG5jbGFzcyB0eXBlIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcHJlc3RhdGlvbkNvdXJhbnRlSW46XG4gICAgICBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc2lkZW5jZUluOiBjb2xsZWN0aXZpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qc29vIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgOiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcHJlc3RhdGlvbkNvdXJhbnRlSW4gPVxuICAgICAgICBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLnByZXN0YXRpb25fY291cmFudGVfaW5cbiAgICAgIHZhbCByZXNpZGVuY2VJbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV90b19qc29vIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4ucmVzaWRlbmNlX2luXG4gICAgICBlbmRcbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICAgIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIDogcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KSA6XG4gICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBwcmVzdGF0aW9uX2NvdXJhbnRlX2luID1cbiAgICAgICAgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX29mX2pzb29cbiAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIyMucHJlc3RhdGlvbkNvdXJhbnRlSW47XG4gICAgICByZXNpZGVuY2VfaW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfb2ZfanNvbyBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIyMucmVzaWRlbmNlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbiA9XG5vYmplY3QgZW5kXG5sZXQgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbl90b19qc29vIChfIDogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhJbi50KSA6IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gSnMudCA9IG9iamVjdCVqcyBlbmRcbmxldCBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luX29mX2pzb28gKF8gOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luIEpzLnQpIDogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhJbi50ID0gKClcbmNsYXNzIHR5cGUgZW5mYW50X2xlX3BsdXNfYWdlX2luID1cbiAgb2JqZWN0IG1ldGhvZCBlbmZhbnRzSW46IGVuZmFudCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9pbl90b19qc29vIChlbmZhbnRfbGVfcGx1c19hZ2VfaW5cbiAgICA6IEVuZmFudExlUGx1c0FnZUluLnQpIDogZW5mYW50X2xlX3BsdXNfYWdlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGVuZmFudHNJbiA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X3RvX2pzb28geCkgZW5mYW50X2xlX3BsdXNfYWdlX2luLmVuZmFudHNfaW5cbiAgICAgIGVuZFxuICBsZXQgZW5mYW50X2xlX3BsdXNfYWdlX2luX29mX2pzb29cbiAgICAoZW5mYW50X2xlX3BsdXNfYWdlX2luIDogZW5mYW50X2xlX3BsdXNfYWdlX2luIEpzLnQpIDpcbiAgICBFbmZhbnRMZVBsdXNBZ2VJbi50ID1cbiAgICB7XG4gICAgICBlbmZhbnRzX2luID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBlbmZhbnRfb2ZfanNvbyB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGVuZmFudF9sZV9wbHVzX2FnZV9pbiMjLmVuZmFudHNJblxuICAgIH1cblxuY2xhc3MgdHlwZSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZUVzdFBhcmVudEluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc2lkZW5jZUluOiBjb2xsZWN0aXZpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVuZmFudHNBQ2hhcmdlSW46IGVuZmFudCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhdmFpdEVuZmFudEFDaGFyZ2VBdmFudDFlckphbnZpZXIyMDEySW46XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvbyAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZUVzdFBhcmVudEluID1cbiAgICAgICAgSnMuYm9vbCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luXG4gICAgICB2YWwgcGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluID1cbiAgICAgICAgSnMuYm9vbCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5yZXNzb3VyY2VzX21lbmFnZV9pblxuICAgICAgdmFsIHJlc2lkZW5jZUluID1cbiAgICAgICAgY29sbGVjdGl2aXRlX3RvX2pzb28gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5yZXNpZGVuY2VfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBlbmZhbnRzQUNoYXJnZUluID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBlbmZhbnRfdG9fanNvbyB4KSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmVuZmFudHNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBhdmFpdEVuZmFudEFDaGFyZ2VBdmFudDFlckphbnZpZXIyMDEySW4gPVxuICAgICAgICBKcy5ib29sIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW5cbiAgICAgIGVuZFxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gICAgKGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpIDpcbiAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50ID1cbiAgICB7XG4gICAgICBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICAgICAgIyMucGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlRXN0UGFyZW50SW47XG4gICAgICBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgICAgICAjIy5wZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVSZW1wbGl0VGl0cmVJSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMucmVzc291cmNlc01lbmFnZUluO1xuICAgICAgcmVzaWRlbmNlX2luID1cbiAgICAgICAgY29sbGVjdGl2aXRlX29mX2pzb28gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnJlc2lkZW5jZUluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBlbmZhbnRzX2FfY2hhcmdlX2luID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBlbmZhbnRfb2ZfanNvbyB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5lbmZhbnRzQUNoYXJnZUluO1xuICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmF2YWl0RW5mYW50QUNoYXJnZUF2YW50MWVySmFudmllcjIwMTJJblxuICAgIH1cblxuY2xhc3MgdHlwZSBzbWljX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc2lkZW5jZUluOiBjb2xsZWN0aXZpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgc21pY19pbl90b19qc29vIChzbWljX2luIDogU21pY0luLnQpIDogc21pY19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9IGRhdGVfdG9fanNvbyBzbWljX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCByZXNpZGVuY2VJbiA9IGNvbGxlY3Rpdml0ZV90b19qc29vIHNtaWNfaW4ucmVzaWRlbmNlX2luXG4gICAgICBlbmRcbiAgbGV0IHNtaWNfaW5fb2ZfanNvbyAoc21pY19pbiA6IHNtaWNfaW4gSnMudCkgOiBTbWljSW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9IGRhdGVfb2ZfanNvbyBzbWljX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICByZXNpZGVuY2VfaW4gPSBjb2xsZWN0aXZpdGVfb2ZfanNvbyBzbWljX2luIyMucmVzaWRlbmNlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA9XG4gIG9iamVjdCBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX3RvX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpXG4gICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpIDpcbiAgICBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBpRGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaUVuZmFudHNJbjogZW5mYW50X2VudHJlZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpUmVzc291cmNlc01lbmFnZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGlSZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpUGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlRXN0UGFyZW50SW46XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpUGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaUF2YWl0RW5mYW50QUNoYXJnZUF2YW50MWVySmFudmllcjIwMTJJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvb1xuICAgIChpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udClcbiAgICA6IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGlEYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX2RhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBpRW5mYW50c0luID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBlbmZhbnRfZW50cmVlX3RvX2pzb28geCkgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uaV9lbmZhbnRzX2luXG4gICAgICB2YWwgaVJlc3NvdXJjZXNNZW5hZ2VJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX3Jlc3NvdXJjZXNfbWVuYWdlX2luXG4gICAgICB2YWwgaVJlc2lkZW5jZUluID1cbiAgICAgICAgY29sbGVjdGl2aXRlX3RvX2pzb28gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uaV9yZXNpZGVuY2VfaW5cbiAgICAgIHZhbCBpUGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlRXN0UGFyZW50SW4gPVxuICAgICAgICBKcy5ib29sIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW5cbiAgICAgIHZhbCBpUGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluID1cbiAgICAgICAgSnMuYm9vbCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW5cbiAgICAgIHZhbCBpQXZhaXRFbmZhbnRBQ2hhcmdlQXZhbnQxZXJKYW52aWVyMjAxMkluID1cbiAgICAgICAgSnMuYm9vbCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luXG4gICAgICBlbmRcbiAgbGV0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgICAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgIDogaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCkgOlxuICAgIEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQgPVxuICAgIHtcbiAgICAgIGlfZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmlEYXRlQ291cmFudGVJbjtcbiAgICAgIGlfZW5mYW50c19pbiA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X2VudHJlZV9vZl9qc29vIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5pRW5mYW50c0luO1xuICAgICAgaV9yZXNzb3VyY2VzX21lbmFnZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmlSZXNzb3VyY2VzTWVuYWdlSW47XG4gICAgICBpX3Jlc2lkZW5jZV9pbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV9vZl9qc29vXG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5pUmVzaWRlbmNlSW47XG4gICAgICBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICAgICAgIyMuaVBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZUVzdFBhcmVudEluO1xuICAgICAgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICAgICAgIyMuaVBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZVJlbXBsaXRUaXRyZUlJbjtcbiAgICAgIGlfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgICAgICAjIy5pQXZhaXRFbmZhbnRBQ2hhcmdlQXZhbnQxZXJKYW52aWVyMjAxMkluXG4gICAgfVxuXG5cblxuXG5sZXQgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOFxuICAoYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbiA6IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gSnMudClcbiAgOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IEpzLnQgPVxuICBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luXG4gIHw+IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW5fb2ZfanNvb1xuICB8PiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4XG4gIHw+IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfdG9fanNvb1xuXG5cbmxldCBlbmZhbnRfbGVfcGx1c19hZ2UgKGVuZmFudF9sZV9wbHVzX2FnZV9pbiA6IGVuZmFudF9sZV9wbHVzX2FnZV9pbiBKcy50KVxuICA6IGVuZmFudF9sZV9wbHVzX2FnZSBKcy50ID1cbiAgZW5mYW50X2xlX3BsdXNfYWdlX2luXG4gIHw+IGVuZmFudF9sZV9wbHVzX2FnZV9pbl9vZl9qc29vXG4gIHw+IGVuZmFudF9sZV9wbHVzX2FnZVxuICB8PiBlbmZhbnRfbGVfcGx1c19hZ2VfdG9fanNvb1xuXG5cbmxldCBzbWljIChzbWljX2luIDogc21pY19pbiBKcy50KVxuICA6IHNtaWMgSnMudCA9XG4gIHNtaWNfaW4gfD4gc21pY19pbl9vZl9qc29vIHw+IHNtaWMgfD4gc21pY190b19qc29vXG5cblxubGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpXG4gIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICB8PiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cblxuXG5sZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiA6IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudClcbiAgOiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luXG4gIHw+IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICB8PiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gIHw+IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuXG5cbmxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KVxuICA6IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgfD4gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG5cblxubGV0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIChpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA6IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpXG4gIDogaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gIHw+IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuXG5cbmxldCBfID1cbiAgIEpzLmV4cG9ydCBcIkFsbG9jYXRpb25zRmFtaWxpYWxlc0xpYlwiXG4gICAgKG9iamVjdCVqc1xuICAgICAgXG4gICAgICBtZXRob2QgYWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDggOiAoYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbiBKcy50IC0+IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDggSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhcbiAgICAgIFxuICAgICAgbWV0aG9kIGVuZmFudExlUGx1c0FnZSA6IChlbmZhbnRfbGVfcGx1c19hZ2VfaW4gSnMudCAtPiBlbmZhbnRfbGVfcGx1c19hZ2UgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVuZmFudF9sZV9wbHVzX2FnZVxuICAgICAgXG4gICAgICBtZXRob2Qgc21pYyA6IChzbWljX2luIEpzLnQgLT4gc21pYyBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgc21pY1xuICAgICAgXG4gICAgICBtZXRob2QgYmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcyA6IChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgLT4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgXG4gICAgICBtZXRob2QgcHJlc3RhdGlvbnNGYW1pbGlhbGVzIDogKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCAtPiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBwcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCBhbGxvY2F0aW9uc0ZhbWlsaWFsZXMgOiAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIFxuICAgICAgbWV0aG9kIGludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlcyA6IChpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgXG4gICAgZW5kKSIsIigqKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHRoZSBDYXRhbGEgY29tcGlsZXIsIGRvIG5vdCBlZGl0ISAqKVxuXG5vcGVuIFJ1bnRpbWVfb2NhbWwuUnVudGltZVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi00LTI2LTI3LTMyLTQxLTQyXCJdXG5cbm1vZHVsZSBUeXBlUHJldCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBEMzMxXzMyIG9mIHVuaXRcbiAgICB8IEQzMzFfNjNfNjQgb2YgdW5pdFxuICAgIHwgRDMzMV81OV84IG9mIHVuaXRcbiAgICB8IEQzMzFfNzZfMSBvZiB1bml0XG4gICAgfCBBdXRyZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3R5cGVfcHJldCAoeDogVHlwZVByZXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlUHLDqnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRDMzMV8zMiB4IC0+IChcIkQzMzFfMzJcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgRDMzMV82M182NCB4IC0+IChcIkQzMzFfNjNfNjRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgRDMzMV81OV84IHggLT4gKFwiRDMzMV81OV84XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEQzMzFfNzZfMSB4IC0+IChcIkQzMzFfNzZfMVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBdXRyZSB4IC0+IChcIkF1dHJlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFRpdHVsYWlyZVByZXQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgRGVtYW5kZXVyIG9mIHVuaXRcbiAgICB8IFZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90aXR1bGFpcmVfcHJldCAoeDogVGl0dWxhaXJlUHJldC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlRpdHVsYWlyZVByw6p0XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IERlbWFuZGV1ciB4IC0+IChcIkRlbWFuZGV1clwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBWZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uIHggLT5cbiAgICAgIChcIlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb25cIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBUcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xIG9mIHVuaXRcbiAgICB8IFRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzIgb2YgdW5pdFxuICAgIHwgUGFzRGVUcmF2YXV4IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgKHg6IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlVHJhdmF1eExvZ2VtZW50RDgzMl8xNVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBUcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xIHggLT5cbiAgICAgIChcIlRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzFcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMiB4IC0+XG4gICAgICAoXCJUcmF2YXV4U3VyTG9nZW1lbnREw6lqw6BBY3F1aXNEODMyXzE1XzJcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGFzRGVUcmF2YXV4IHggLT4gKFwiUGFzRGVUcmF2YXV4XCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBPYmplY3RpZkRlY2VuY2VMb2dlbWVudCBvZiB1bml0XG4gICAgfCBQcmV2dURhbnNMaXN0ZVIzMjFfMTUgb2YgdW5pdFxuICAgIHwgQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgb2YgdW5pdFxuICAgIHwgUGFzRGVUcmF2YXV4IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSAoeDogVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVHlwZVRyYXZhdXhMb2dlbWVudFI4NDJfNVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBPYmplY3RpZkRlY2VuY2VMb2dlbWVudCB4IC0+IChcIk9iamVjdGlmRMOpY2VuY2VMb2dlbWVudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBQcmV2dURhbnNMaXN0ZVIzMjFfMTUgeCAtPiAoXCJQcsOpdnVEYW5zTGlzdGVSMzIxXzE1XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIHggLT5cbiAgICAgIChcIkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFBhc0RlVHJhdmF1eCB4IC0+IChcIlBhc0RlVHJhdmF1eFwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBBbWVsaW9yZVBhck9jY3VwYW50ID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IE91aSBvZiB1bml0XG4gICAgfCBOb24gb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9hbWVsaW9yZV9wYXJfb2NjdXBhbnQgKHg6IEFtZWxpb3JlUGFyT2NjdXBhbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJBbcOpbGlvcsOpUGFyT2NjdXBhbnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgT3VpIHggLT4gKFwiT3VpXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE5vbiB4IC0+IChcIk5vblwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBMaW1pdGVUcmFuY2hlID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IFJldmVudSBvZiBtb25leVxuICAgIHwgSW5maW5pIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfbGltaXRlX3RyYW5jaGUgKHg6IExpbWl0ZVRyYW5jaGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJMaW1pdGVUcmFuY2hlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFJldmVudSB4IC0+IChcIlJldmVudVwiLCBlbWJlZF9tb25leSB4KVxuICAgIHwgSW5maW5pIHggLT4gKFwiSW5maW5pXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIExpbWl0ZVRyYW5jaGVEZWNpbWFsID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IFJldmVudSBvZiBkZWNpbWFsXG4gICAgfCBJbmZpbmkgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9saW1pdGVfdHJhbmNoZV9kZWNpbWFsICh4OiBMaW1pdGVUcmFuY2hlRGVjaW1hbC50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkxpbWl0ZVRyYW5jaGVEw6ljaW1hbFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBSZXZlbnUgeCAtPiAoXCJSZXZlbnVcIiwgZW1iZWRfZGVjaW1hbCB4KVxuICAgIHwgSW5maW5pIHggLT4gKFwiSW5maW5pXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFByZXN0YXRpb25SZWN1ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgb2YgdW5pdFxuICAgIHwgQ29tcGxlbWVudEZhbWlsaWFsIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25KZXVuZUVuZmFudCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25BZHVsdGVIYW5kaWNhcGUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9wcmVzdGF0aW9uX3JlY3VlICh4OiBQcmVzdGF0aW9uUmVjdWUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJQcmVzdGF0aW9uUmXDp3VlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEFsbG9jYXRpb25zRmFtaWxpYWxlcyB4IC0+IChcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBDb21wbGVtZW50RmFtaWxpYWwgeCAtPiAoXCJDb21wbMOpbWVudEZhbWlsaWFsXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25KZXVuZUVuZmFudCB4IC0+IChcIkFsbG9jYXRpb25KZXVuZUVuZmFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcMOpXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25BZHVsdGVIYW5kaWNhcGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2Fww6lcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgUGFyZW50T3VBdXRyZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgb2YgZGVjaW1hbFxuICAgIHwgQXV0cmUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9wYXJlbnRfb3VfYXV0cmUgKHg6IFBhcmVudE91QXV0cmUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJQYXJlbnRPdUF1dHJlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IERlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlcyB4IC0+XG4gICAgICAoXCJEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jacOpdMOpc1wiLCBlbWJlZF9kZWNpbWFsIHgpXG4gICAgfCBBdXRyZSB4IC0+IChcIkF1dHJlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgUGFzRGVHYXJkZUFsdGVybmVlIG9mIHVuaXRcbiAgICB8IEdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2Ugb2YgZGVjaW1hbFxuICBlbmRcbmxldCBlbWJlZF9zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUgKHg6IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJTaXR1YXRpb25HYXJkZUFsdGVybsOpZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBQYXNEZUdhcmRlQWx0ZXJuZWUgeCAtPiAoXCJQYXNEZUdhcmRlQWx0ZXJuw6llXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgeCAtPlxuICAgICAgKFwiR2FyZGVBbHRlcm7DqWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2VcIiwgZW1iZWRfZGVjaW1hbCB4KSlcblxuXG5tb2R1bGUgUGFyZW50ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBBc2NlbmRhbnQgb2YgdW5pdFxuICAgIHwgRGVzY2VuZGFudCBvZiB1bml0XG4gICAgfCBDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3BhcmVudGUgKHg6IFBhcmVudGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJQYXJlbnTDqVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBc2NlbmRhbnQgeCAtPiAoXCJBc2NlbmRhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgRGVzY2VuZGFudCB4IC0+IChcIkRlc2NlbmRhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmUgeCAtPlxuICAgICAgKFwiQ29sbGF0w6lyYWxEZXV4acOobWVUcm9pc2nDqG1lRGVncsOpXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IERhdGVEZU5haXNzYW5jZSBvZiBkYXRlXG4gICAgfCBBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlIG9mIHVuaXRcbiAgICB8IEFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2Ugb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9kYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZVxuICAoeDogRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBEYXRlRGVOYWlzc2FuY2UgeCAtPiAoXCJEYXRlRGVOYWlzc2FuY2VcIiwgZW1iZWRfZGF0ZSB4KVxuICAgIHwgQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSB4IC0+XG4gICAgICAoXCJBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpw6htZU1vaXNEZUdyb3NzZXNzZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBcHJlc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlIHggLT5cbiAgICAgIChcIkFwcsOoc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpw6htZU1vaXNEZUdyb3NzZXNzZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBab25lREhhYml0YXRpb24gPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgWm9uZTEgb2YgdW5pdFxuICAgIHwgWm9uZTIgb2YgdW5pdFxuICAgIHwgWm9uZTMgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF96b25lX2RfaGFiaXRhdGlvbiAoeDogWm9uZURIYWJpdGF0aW9uLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiWm9uZURIYWJpdGF0aW9uXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFpvbmUxIHggLT4gKFwiWm9uZTFcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgWm9uZTIgeCAtPiAoXCJab25lMlwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBab25lMyB4IC0+IChcIlpvbmUzXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgT3VpQXZlY0xveWVyT3VDaGFyZ2VzIG9mIG1vbmV5XG4gICAgfCBOb24gb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9wYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsXG4gICh4OiBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBPdWlBdmVjTG95ZXJPdUNoYXJnZXMgeCAtPiAoXCJPdWlBdmVjTG95ZXJPdUNoYXJnZXNcIiwgZW1iZWRfbW9uZXkgeClcbiAgICB8IE5vbiB4IC0+IChcIk5vblwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBWZXJzZW1lbnRBID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEJhaWxsZXVyIG9mIHVuaXRcbiAgICB8IEJlbmVmaWNpYWlyZSBvZiB1bml0XG4gICAgfCBFdGFibGlzc2VtZW50SGFiaWxpdGUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF92ZXJzZW1lbnRfYSAoeDogVmVyc2VtZW50QS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlZlcnNlbWVudMOAXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEJhaWxsZXVyIHggLT4gKFwiQmFpbGxldXJcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQmVuZWZpY2lhaXJlIHggLT4gKFwiQsOpbsOpZmljaWFpcmVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgRXRhYmxpc3NlbWVudEhhYmlsaXRlIHggLT4gKFwiw4l0YWJsaXNzZW1lbnRIYWJpbGl0w6lcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgRGVwZW5zZUxvZ2VtZW50ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IFRvdGFsQW5udWVsRWNoZWFuY2VzIG9mIG1vbmV5XG4gICAgfCBNZW5zdWFsaXRlIG9mIG1vbmV5XG4gICAgfCBMb3llciBvZiBtb25leVxuICBlbmRcbmxldCBlbWJlZF9kZXBlbnNlX2xvZ2VtZW50ICh4OiBEZXBlbnNlTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJEw6lwZW5zZUxvZ2VtZW50XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFRvdGFsQW5udWVsRWNoZWFuY2VzIHggLT4gKFwiVG90YWxBbm51ZWzDiWNow6lhbmNlc1wiLCBlbWJlZF9tb25leSB4KVxuICAgIHwgTWVuc3VhbGl0ZSB4IC0+IChcIk1lbnN1YWxpdMOpXCIsIGVtYmVkX21vbmV5IHgpXG4gICAgfCBMb3llciB4IC0+IChcIkxveWVyXCIsIGVtYmVkX21vbmV5IHgpKVxuXG5cbm1vZHVsZSBNb2RlT2NjdXBhdGlvbkltcGF5ZSA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBJbXBheWVMb3llciBvZiB1bml0XG4gICAgfCBJbXBheWVQcmV0IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSAoeDogTW9kZU9jY3VwYXRpb25JbXBheWUudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJNb2RlT2NjdXBhdGlvbkltcGF5w6lcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgSW1wYXllTG95ZXIgeCAtPiAoXCJJbXBhecOpTG95ZXJcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgSW1wYXllUHJldCB4IC0+IChcIkltcGF5w6lQcsOqdFwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgUGFzRWxpZ2libGUgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgKHg6IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlR5cGXDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFBhc0VsaWdpYmxlIHggLT4gKFwiUGFzw4lsaWdpYmxlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKHg6IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgeCAtPlxuICAgICAgKFwiQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgU2l0dWF0aW9uRmFtaWxpYWxlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IENlbGliYXRhaXJlIG9mIHVuaXRcbiAgICB8IE1hcmllcyBvZiBkYXRlXG4gICAgfCBQYWNzZXMgb2YgdW5pdFxuICAgIHwgQ29uY3ViaW5zIG9mIHVuaXRcbiAgICB8IENlbGliYXRhaXJlU2VwYXJlRGVGYWl0IG9mIHVuaXRcbiAgICB8IENvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGUgKHg6IFNpdHVhdGlvbkZhbWlsaWFsZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlNpdHVhdGlvbkZhbWlsaWFsZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBDZWxpYmF0YWlyZSB4IC0+IChcIkPDqWxpYmF0YWlyZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXJpZXMgeCAtPiAoXCJNYXJpw6lzXCIsIGVtYmVkX2RhdGUgeClcbiAgICB8IFBhY3NlcyB4IC0+IChcIlBhY3PDqXNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ29uY3ViaW5zIHggLT4gKFwiQ29uY3ViaW5zXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IENlbGliYXRhaXJlU2VwYXJlRGVGYWl0IHggLT5cbiAgICAgIChcIkPDqWxpYmF0YWlyZVPDqXBhcsOpRGVGYWl0XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IENvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCB4IC0+XG4gICAgICAoXCJDb25jdWJpbmFnZURvbnRTw6lwYXLDqURlRmFpdFwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQcmlzZUVuQ2hhcmdlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSBvZiB1bml0XG4gICAgfCBSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIG9mIHVuaXRcbiAgICB8IFJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3ByaXNlX2VuX2NoYXJnZSAoeDogUHJpc2VFbkNoYXJnZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlByaXNlRW5DaGFyZ2VcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIHggLT4gKFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgeCAtPlxuICAgICAgKFwiUsOpc2lkZW5jZUFsdGVybsOpZUFsbG9jYXRhaXJlVW5pcXVlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZSB4IC0+XG4gICAgICAoXCJSw6lzaWRlbmNlQWx0ZXJuw6llQWxsb2NhdGlvbnNQYXJ0YWfDqWVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVHlwZUxvZ2VtZW50Rm95ZXIgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgTG9nZW1lbnRQZXJzb25uZXNBZ2Vlc091SGFuZGljYXBlZXMgb2YgdW5pdFxuICAgIHwgUmVzaWRlbmNlU29jaWFsZSBvZiB1bml0XG4gICAgfCBGb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NSBvZiB1bml0XG4gICAgfCBBdXRyZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3R5cGVfbG9nZW1lbnRfZm95ZXIgKHg6IFR5cGVMb2dlbWVudEZveWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVHlwZUxvZ2VtZW50Rm95ZXJcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTG9nZW1lbnRQZXJzb25uZXNBZ2Vlc091SGFuZGljYXBlZXMgeCAtPlxuICAgICAgKFwiTG9nZW1lbnRQZXJzb25uZXPDgmfDqWVzT3VIYW5kaWNhcMOpZXNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUmVzaWRlbmNlU29jaWFsZSB4IC0+IChcIlLDqXNpZGVuY2VTb2NpYWxlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1IHggLT5cbiAgICAgIChcIkZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm7DqUwzNTNfMkF2YW50MTk5NVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBdXRyZSB4IC0+IChcIkF1dHJlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llciA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBvZiB1bml0XG4gICAgfCBFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIG9mIHVuaXRcbiAgICB8IFBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IG9mIHVuaXRcbiAgICB8IEF1dHJlc1BlcnNvbm5lcyBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2NhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gICh4OiBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJDYXTDqWdvcmllw4lxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyB4IC0+XG4gICAgICAoXCLDiXR1ZGlhbnRMb2fDqUVuQ2hhbWJyZUNST1VTXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgeCAtPlxuICAgICAgKFwiw4l0dWRpYW50TG9nw6lFbkNoYW1icmVDUk9VU1LDqWhhYmlsaXTDqWVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgeCAtPlxuICAgICAgKFwiUGVyc29ubmVzw4Jnw6llc1NlbG9uM0RlRDg0Ml8xNlwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBdXRyZXNQZXJzb25uZXMgeCAtPiAoXCJBdXRyZXNQZXJzb25uZXNcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IFBlcnNvbm5lU2V1bGUgb2YgdW5pdFxuICAgIHwgQ291cGxlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgKHg6IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBQZXJzb25uZVNldWxlIHggLT4gKFwiUGVyc29ubmVTZXVsZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBDb3VwbGUgeCAtPiAoXCJDb3VwbGVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgQ29sbGVjdGl2aXRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEd1YWRlbG91cGUgb2YgdW5pdFxuICAgIHwgR3V5YW5lIG9mIHVuaXRcbiAgICB8IE1hcnRpbmlxdWUgb2YgdW5pdFxuICAgIHwgTGFSZXVuaW9uIG9mIHVuaXRcbiAgICB8IFNhaW50QmFydGhlbGVteSBvZiB1bml0XG4gICAgfCBTYWludE1hcnRpbiBvZiB1bml0XG4gICAgfCBNZXRyb3BvbGUgb2YgdW5pdFxuICAgIHwgU2FpbnRQaWVycmVFdE1pcXVlbG9uIG9mIHVuaXRcbiAgICB8IE1heW90dGUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9jb2xsZWN0aXZpdGUgKHg6IENvbGxlY3Rpdml0ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkNvbGxlY3Rpdml0w6lcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgR3VhZGVsb3VwZSB4IC0+IChcIkd1YWRlbG91cGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgR3V5YW5lIHggLT4gKFwiR3V5YW5lXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE1hcnRpbmlxdWUgeCAtPiAoXCJNYXJ0aW5pcXVlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IExhUmV1bmlvbiB4IC0+IChcIkxhUsOpdW5pb25cIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRCYXJ0aGVsZW15IHggLT4gKFwiU2FpbnRCYXJ0aMOpbGVteVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTYWludE1hcnRpbiB4IC0+IChcIlNhaW50TWFydGluXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE1ldHJvcG9sZSB4IC0+IChcIk3DqXRyb3BvbGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRQaWVycmVFdE1pcXVlbG9uIHggLT4gKFwiU2FpbnRQaWVycmVFdE1pcXVlbG9uXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE1heW90dGUgeCAtPiAoXCJNYXlvdHRlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFByaXNlRW5DaGFyZ2VFbmZhbnQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBvZiB1bml0XG4gICAgfCBHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgb2YgdW5pdFxuICAgIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIG9mIHVuaXRcbiAgICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIG9mIHVuaXRcbiAgICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9wcmlzZV9lbl9jaGFyZ2VfZW5mYW50ICh4OiBQcmlzZUVuQ2hhcmdlRW5mYW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUHJpc2VFbkNoYXJnZUVuZmFudFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIHggLT5cbiAgICAgIChcIkdhcmRlQWx0ZXJuw6llUGFydGFnZUFsbG9jYXRpb25zXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSB4IC0+XG4gICAgICAoXCJHYXJkZUFsdGVybsOpZUFsbG9jYXRhaXJlVW5pcXVlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSB4IC0+IChcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSB4IC0+XG4gICAgICAoXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc8OpZcOATGFGYW1pbGxlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggeCAtPlxuICAgICAgKFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnPDqWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IEF2YW50IG9mIHVuaXRcbiAgICB8IFBlbmRhbnQgb2YgdW5pdFxuICAgIHwgQXByZXMgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSAoeDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEF2YW50IHggLT4gKFwiQXZhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGVuZGFudCB4IC0+IChcIlBlbmRhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXByZXMgeCAtPiAoXCJBcHLDqHNcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcyA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50IG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25zRmFtaWxpYWxlcyBvZiB1bml0XG4gICAgfCBDb21wbGVtZW50RmFtaWxpYWwgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50IG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzICh4OiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiw4lsw6ltZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnQgeCAtPlxuICAgICAgKFwiUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgeCAtPiAoXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ29tcGxlbWVudEZhbWlsaWFsIHggLT4gKFwiQ29tcGzDqW1lbnRGYW1pbGlhbFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnQgeCAtPiAoXCJBbGxvY2F0aW9uTG9nZW1lbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uw4lkdWNhdGlvbkVuZmFudEhhbmRpY2Fww6lcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblJlbnRyw6llU2NvbGFpcmVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkpvdXJuYWxpw6hyZVByZXNlbmNlUGFyZW50YWxlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIENvbnZlbnRpb25CYWlsbGV1clNvY2lhbCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJOiBib29sO1xuICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX3BlcmN1ZTogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwgKHg6IENvbnZlbnRpb25CYWlsbGV1clNvY2lhbC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ29udmVudGlvbkJhaWxsZXVyU29jaWFsXCJdLFxuICBbKFwiY29udmVudGlvbm7DqV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSVwiLCBlbWJlZF9ib29sXG4gICAgeC5Db252ZW50aW9uQmFpbGxldXJTb2NpYWwuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJKTtcbiAgICAoXCJyw6lkdWN0aW9uX2xveWVyX3NvbGlkYXJpdMOpX3BlcsOndWVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNvbnZlbnRpb25CYWlsbGV1clNvY2lhbC5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9wZXJjdWUpXSlcblxuXG5tb2R1bGUgQ29udmVudGlvbkFOSEEgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2NvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfSUlfY2hhcF9JX3NlY18zOiBib29sfVxuZW5kXG5sZXQgZW1iZWRfY29udmVudGlvbl9hX25faF9hICh4OiBDb252ZW50aW9uQU5IQS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ29udmVudGlvbkFOSEFcIl0sXG4gIFsoXCJjb252ZW50aW9ubsOpX2xpdnJlX0lJSV90aXRyZV9JSV9jaGFwX0lfc2VjXzNcIiwgZW1iZWRfYm9vbFxuICAgIHguQ29udmVudGlvbkFOSEEuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9JSV9jaGFwX0lfc2VjXzMpXSlcblxuXG5tb2R1bGUgUGVyc29ubmVTb3VzTG9jYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRhdGVfbmFpc3NhbmNlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb246IGRhdGU7XG4gICAgY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzE6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcGVyc29ubmVfc291c19sb2NhdGlvbiAoeDogUGVyc29ubmVTb3VzTG9jYXRpb24udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlBlcnNvbm5lU291c0xvY2F0aW9uXCJdLFxuICBbKFwiZGF0ZV9uYWlzc2FuY2VfcGVyc29ubmVfc291c19sb2NhdGlvblwiLCBlbWJlZF9kYXRlXG4gICAgeC5QZXJzb25uZVNvdXNMb2NhdGlvbi5kYXRlX25haXNzYW5jZV9wZXJzb25uZV9zb3VzX2xvY2F0aW9uKTtcbiAgICAoXCJjb25mb3JtZV9hcnRpY2xlX2w0NDJfMVwiLCBlbWJlZF9ib29sXG4gICAgeC5QZXJzb25uZVNvdXNMb2NhdGlvbi5jb25mb3JtZV9hcnRpY2xlX2w0NDJfMSldKVxuXG5cbm1vZHVsZSBQYXRyaW1vaW5lID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBwcm9kdWlzYW50X3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNDogbW9uZXk7XG4gICAgbmVfcHJvZHVpc2FudF9wYXNfcmV2ZW51X3BlcmlvZGVfcjgyMl8zXzNfcjgyMl80OiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9wYXRyaW1vaW5lICh4OiBQYXRyaW1vaW5lLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJQYXRyaW1vaW5lXCJdLFxuICBbKFwicHJvZHVpc2FudF9yZXZlbnVfcMOpcmlvZGVfcjgyMl8zXzNfcjgyMl80XCIsIGVtYmVkX21vbmV5XG4gICAgeC5QYXRyaW1vaW5lLnByb2R1aXNhbnRfcmV2ZW51X3BlcmlvZGVfcjgyMl8zXzNfcjgyMl80KTtcbiAgICAoXCJuZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcMOpcmlvZGVfcjgyMl8zXzNfcjgyMl80XCIsIGVtYmVkX21vbmV5XG4gICAgeC5QYXRyaW1vaW5lLm5lX3Byb2R1aXNhbnRfcGFzX3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNCldKVxuXG5cbm1vZHVsZSBDb25kaXRpb25zRXRyYW5nZXJzID0gc3RydWN0XG4gIHR5cGUgdCA9IHtzYXRpc2ZhaXRfY29uZGl0aW9uc19sNTEyXzJfY29kZV9zZWN1cml0ZV9zb2NpYWxlOiBib29sfVxuZW5kXG5sZXQgZW1iZWRfY29uZGl0aW9uc19ldHJhbmdlcnMgKHg6IENvbmRpdGlvbnNFdHJhbmdlcnMudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNvbmRpdGlvbnPDiXRyYW5nZXJzXCJdLFxuICBbKFwic2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNvbmRpdGlvbnNFdHJhbmdlcnMuc2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc2VjdXJpdGVfc29jaWFsZSldKVxuXG5cbm1vZHVsZSBQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZHVyZWVfcmVzaWRlbmNlX2R1cmFudF9wZXJpb2RlX3JfODIyXzNfMV9zdXBlcmlldXJlX2FfNl9tb2lzOiBib29sO1xuICAgIHJlc3NvdXJjZXM6IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX3BlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llciAoeDogUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyXCJdLFxuICBbKFwiZHVyw6llX3LDqXNpZGVuY2VfZHVyYW50X3DDqXJpb2RlX3JfODIyXzNfMV9zdXDDqXJpZXVyZV/DoF82X21vaXNcIixcbiAgICBlbWJlZF9ib29sXG4gICAgeC5QZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci5kdXJlZV9yZXNpZGVuY2VfZHVyYW50X3BlcmlvZGVfcl84MjJfM18xX3N1cGVyaWV1cmVfYV82X21vaXMpO1xuICAgIChcInJlc3NvdXJjZXNcIiwgZW1iZWRfbW9uZXlcbiAgICB4LlBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLnJlc3NvdXJjZXMpXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX2NvdXJhbnRlOiBkYXRlO1xuICAgIGVsaWdpYmlsaXRlOiBib29sO1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZTogaW50ZWdlcjtcbiAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlOiBkZWNpbWFsIGFycmF5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCAoeDogRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5kYXRlX2NvdXJhbnRlKTtcbiAgICAoXCLDqWxpZ2liaWxpdMOpXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5lbGlnaWJpbGl0ZSk7XG4gICAgKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlKTtcbiAgICAoXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiLFxuICAgIGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKVxuICAgIHguRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUpXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHttb250YW50X3ByaW1lX2RlbWVuYWdlbWVudDogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgKHg6IEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiXSxcbiAgWyhcIm1vbnRhbnRfcHJpbWVfZMOpbcOpbmFnZW1lbnRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudC5tb250YW50X3ByaW1lX2RlbWVuYWdlbWVudCldKVxuXG5cbm1vZHVsZSBSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtyZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGU6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCAoeDogUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSxcbiAgWyhcInJlc3NvdXJjZXNfcHJpc2VzX2VuX2NvbXB0ZVwiLCBlbWJlZF9tb25leVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5yZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGUpXSlcblxuXG5tb2R1bGUgQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHttb250YW50OiBtb25leSAtPiBtb25leX1cbmVuZFxubGV0IGVtYmVkX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKHg6IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdLFxuICBbKFwibW9udGFudFwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50KV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNjogbW9uZXk7XG4gICAgcGxhZm9uZF9sb3llcl9kODIzXzE2XzI6IG1vbmV5O1xuICAgIHBhcnRpY2lwYXRpb25fbWluaW1hbGU6IG1vbmV5O1xuICAgIHRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlOiBkZWNpbWFsO1xuICAgIHBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGU6IG1vbmV5O1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGU6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGU6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiXSxcbiAgWyhcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNik7XG4gICAgKFwicGxhZm9uZF9sb3llcl9kODIzXzE2XzJcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBsYWZvbmRfbG95ZXJfZDgyM18xNl8yKTtcbiAgICAoXCJwYXJ0aWNpcGF0aW9uX21pbmltYWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX21pbmltYWxlKTtcbiAgICAoXCJ0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZVwiLCBlbWJlZF9kZWNpbWFsXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSk7XG4gICAgKFwicGFydGljaXBhdGlvbl9wZXJzb25uZWxsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSk7XG4gICAgKFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgKFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlID0gc3RydWN0XG4gIHR5cGUgdCA9IHttb250YW50OiBtb25leX1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSAoeDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdLFxuICBbKFwibW9udGFudFwiLCBlbWJlZF9tb25leSB4LkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS5tb250YW50KV0pXG5cblxubW9kdWxlIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtuX25vbWJyZV9wYXJ0c19kODMyXzI1OiBkZWNpbWFsfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyICh4OiBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJcIl0sXG4gIFsoXCJuX25vbWJyZV9wYXJ0c19kODMyXzI1XCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUpXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1OiBtb25leTtcbiAgICBjb2VmZmljaWVudF9yX2Q4MzJfMjU6IG1vbmV5O1xuICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjU6IGRlY2ltYWw7XG4gICAgZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGU6IG1vbmV5O1xuICAgIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGU6IG1vbmV5O1xuICAgIGVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlOiBtb25leTtcbiAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNTogZGVjaW1hbDtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl0sXG4gIFsoXCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNSk7XG4gICAgKFwiY29lZmZpY2llbnRfcl9kODMyXzI1XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1KTtcbiAgICAoXCJuX25vbWJyZV9wYXJ0c19kODMyXzI1XCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1KTtcbiAgICAoXCLDqXF1aXZhbGVuY2VfbG95ZXJfw6lsaWdpYmxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUpO1xuICAgIChcInBsYWZvbmRfw6lxdWl2YWxlbmNlX2xveWVyX8OpbGlnaWJsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUpO1xuICAgIChcIsOpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlKTtcbiAgICAoXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNVwiLCBlbWJlZF9kZWNpbWFsXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjUpO1xuICAgIChcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge25fbm9tYnJlX3BhcnRzX2Q4MzJfMTE6IGRlY2ltYWx9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGUgKHg6IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCJdLFxuICBbKFwibl9ub21icmVfcGFydHNfZDgzMl8xMVwiLCBlbWJlZF9kZWNpbWFsXG4gICAgeC5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS5uX25vbWJyZV9wYXJ0c19kODMyXzExKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbnN1YWxpdGVfZWxpZ2libGU6IG1vbmV5O1xuICAgIG1lbnN1YWxpdGVfbWluaW1hbGU6IG1vbmV5O1xuICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwOiBkZWNpbWFsO1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGU6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGU6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXSxcbiAgWyhcIm1lbnN1YWxpdMOpX8OpbGlnaWJsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX2VsaWdpYmxlKTtcbiAgICAoXCJtZW5zdWFsaXTDqV9taW5pbWFsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX21pbmltYWxlKTtcbiAgICAoXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMFwiLCBlbWJlZF9kZWNpbWFsXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwKTtcbiAgICAoXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF90cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUgKHg6IFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiVHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlXCJdLFxuICBbKFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiLCBlbWJlZF9tb25leVxuICAgIHguVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5UcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSldKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50ICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiXSxcbiAgWyhcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgKFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSldKVxuXG5cbm1vZHVsZSBJbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBhbmNpZW5fbG95ZXJfcHJpbmNpcGFsOiBtb25leTtcbiAgICBhbmNpZW5uZV9hbGxvY2F0aW9uX2xvZ2VtZW50OiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9pbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCAoeDogSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyXzRcIl0sXG4gIFsoXCJhbmNpZW5fbG95ZXJfcHJpbmNpcGFsXCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbl9sb3llcl9wcmluY2lwYWwpO1xuICAgIChcImFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuYW5jaWVubmVfYWxsb2NhdGlvbl9sb2dlbWVudCldKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCJdLFxuICBbKFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlKV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZTogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZTogbW9uZXkgLT4gbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSAoeDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXSxcbiAgWyhcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZTogZGVjaW1hbDtcbiAgICBlcXVpdmFsZW5jZV9sb3llcjogbW9uZXk7XG4gICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzOiBtb25leTtcbiAgICBsb3llcl9taW5pbWFsOiBtb25leTtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciAoeDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCJdLFxuICBbKFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZSk7XG4gICAgKFwiw6lxdWl2YWxlbmNlX2xveWVyXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcik7XG4gICAgKFwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXMpO1xuICAgIChcImxveWVyX21pbmltYWxcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmxveWVyX21pbmltYWwpO1xuICAgIChcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlKV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZTogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZTogbW9uZXkgLT4gbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQgKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCJdLFxuICBbKFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSldKVxuXG5cbm1vZHVsZSBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7YWdlX291dmVydHVyZV9kcm9pdDogZHVyYXRpb259XG5lbmRcbmxldCBlbWJlZF9vdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlICh4OiBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVcIl0sXG4gIFsoXCLDomdlX291dmVydHVyZV9kcm9pdFwiLCBlbWJlZF9kdXJhdGlvblxuICAgIHguT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUuYWdlX291dmVydHVyZV9kcm9pdCldKVxuXG5cbm1vZHVsZSBJbXBheWVEZXBlbnNlTG9nZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge21vbnRhbnRfaW1wYXllOiBtb25leX1cbmVuZFxubGV0IGVtYmVkX2ltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50ICh4OiBJbXBheWVEZXBlbnNlTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50XCJdLFxuICBbKFwibW9udGFudF9pbXBhecOpXCIsIGVtYmVkX21vbmV5IHguSW1wYXllRGVwZW5zZUxvZ2VtZW50Lm1vbnRhbnRfaW1wYXllKV0pXG5cblxubW9kdWxlIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGVsaWdpYmlsaXRlOiBib29sO1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGU6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGU6IG1vbmV5IC0+IG1vbmV5O1xuICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGU6IGRlY2ltYWwgYXJyYXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCAoeDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiXSxcbiAgWyhcIsOpbGlnaWJpbGl0w6lcIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5lbGlnaWJpbGl0ZSk7XG4gICAgKFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50cmFpdGVtZW50X2FpZGVfZmluYWxlKTtcbiAgICAoXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiLFxuICAgIGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlKV0pXG5cblxubW9kdWxlIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtlbGlnaWJpbGl0ZTogYm9vbDsgYWlkZV9maW5hbGU6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSAoeDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiXSxcbiAgWyhcIsOpbGlnaWJpbGl0w6lcIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUuZWxpZ2liaWxpdGUpO1xuICAgIChcImFpZGVfZmluYWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS5haWRlX2ZpbmFsZSldKVxuXG5cbm1vZHVsZSBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG4gIHR5cGUgdCA9IHttb250YW50OiBtb25leX1cbmVuZFxubGV0IGVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgKHg6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIFsoXCJtb250YW50XCIsIGVtYmVkX21vbmV5IHguQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy5tb250YW50KV0pXG5cblxubW9kdWxlIFNtaWMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2JydXRfaG9yYWlyZTogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9zbWljICh4OiBTbWljLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJTbWljXCJdLFxuICBbKFwiYnJ1dF9ob3JhaXJlXCIsIGVtYmVkX21vbmV5IHguU21pYy5icnV0X2hvcmFpcmUpXSlcblxuXG5tb2R1bGUgUHJldCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdHlwZV9wcmV0OiBUeXBlUHJldC50O1xuICAgIGRhdGVfc2lnbmF0dXJlOiBkYXRlO1xuICAgIHRpdHVsYWlyZV9wcmV0OiBUaXR1bGFpcmVQcmV0LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcHJldCAoeDogUHJldC50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiUHLDqnRcIl0sXG4gIFsoXCJ0eXBlX3Byw6p0XCIsIGVtYmVkX3R5cGVfcHJldCB4LlByZXQudHlwZV9wcmV0KTtcbiAgICAoXCJkYXRlX3NpZ25hdHVyZVwiLCBlbWJlZF9kYXRlIHguUHJldC5kYXRlX3NpZ25hdHVyZSk7XG4gICAgKFwidGl0dWxhaXJlX3Byw6p0XCIsIGVtYmVkX3RpdHVsYWlyZV9wcmV0IHguUHJldC50aXR1bGFpcmVfcHJldCldKVxuXG5cbm1vZHVsZSBOZXVmT3VBbmNpZW4gPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgTmV1ZiBvZiB1bml0XG4gICAgfCBBbmNpZW4gb2YgQW1lbGlvcmVQYXJPY2N1cGFudC50XG4gIGVuZFxubGV0IGVtYmVkX25ldWZfb3VfYW5jaWVuICh4OiBOZXVmT3VBbmNpZW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJOZXVmT3VBbmNpZW5cIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTmV1ZiB4IC0+IChcIk5ldWZcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQW5jaWVuIHggLT4gKFwiQW5jaWVuXCIsIGVtYmVkX2FtZWxpb3JlX3Bhcl9vY2N1cGFudCB4KSlcblxuXG5tb2R1bGUgVHJhbmNoZVJldmVudSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7aGF1dDogTGltaXRlVHJhbmNoZS50OyBiYXM6IG1vbmV5OyB0YXV4OiBkZWNpbWFsfVxuZW5kXG5sZXQgZW1iZWRfdHJhbmNoZV9yZXZlbnUgKHg6IFRyYW5jaGVSZXZlbnUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlRyYW5jaGVSZXZlbnVcIl0sXG4gIFsoXCJoYXV0XCIsIGVtYmVkX2xpbWl0ZV90cmFuY2hlIHguVHJhbmNoZVJldmVudS5oYXV0KTtcbiAgICAoXCJiYXNcIiwgZW1iZWRfbW9uZXkgeC5UcmFuY2hlUmV2ZW51LmJhcyk7XG4gICAgKFwidGF1eFwiLCBlbWJlZF9kZWNpbWFsIHguVHJhbmNoZVJldmVudS50YXV4KV0pXG5cblxubW9kdWxlIFRyYW5jaGVSZXZlbnVEZWNpbWFsID0gc3RydWN0XG4gIHR5cGUgdCA9IHtoYXV0OiBMaW1pdGVUcmFuY2hlRGVjaW1hbC50OyBiYXM6IGRlY2ltYWw7IHRhdXg6IGRlY2ltYWx9XG5lbmRcbmxldCBlbWJlZF90cmFuY2hlX3JldmVudV9kZWNpbWFsICh4OiBUcmFuY2hlUmV2ZW51RGVjaW1hbC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiVHJhbmNoZVJldmVudUTDqWNpbWFsXCJdLFxuICBbKFwiaGF1dFwiLCBlbWJlZF9saW1pdGVfdHJhbmNoZV9kZWNpbWFsIHguVHJhbmNoZVJldmVudURlY2ltYWwuaGF1dCk7XG4gICAgKFwiYmFzXCIsIGVtYmVkX2RlY2ltYWwgeC5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpO1xuICAgIChcInRhdXhcIiwgZW1iZWRfZGVjaW1hbCB4LlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpXSlcblxuXG5tb2R1bGUgQXV0cmVQZXJzb25uZUFDaGFyZ2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRhdGVfbmFpc3NhbmNlOiBkYXRlO1xuICAgIHJlc3NvdXJjZXM6IG1vbmV5O1xuICAgIGFzY2VuZGFudF9kZXNjZW5kYW50X2NvbGxhdGVyYWxfZGV1eGllbWVfdHJvaXNpZW1lX2RlZ3JlOiBib29sO1xuICAgIHBhcmVudGU6IFBhcmVudGUudDtcbiAgICBpbmNhcGFjaXRlXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaTogYm9vbDtcbiAgICBiZW5lZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3NlY3U6IGJvb2w7XG4gICAgdGl0dWxhaXJlX2FsbG9jYXRpb25fcGVyc29ubmVfYWdlZTogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9hdXRyZV9wZXJzb25uZV9hX2NoYXJnZSAoeDogQXV0cmVQZXJzb25uZUFDaGFyZ2UudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkF1dHJlUGVyc29ubmXDgENoYXJnZVwiXSxcbiAgWyhcImRhdGVfbmFpc3NhbmNlXCIsIGVtYmVkX2RhdGVcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLmRhdGVfbmFpc3NhbmNlKTtcbiAgICAoXCJyZXNzb3VyY2VzXCIsIGVtYmVkX21vbmV5XG4gICAgeC5BdXRyZVBlcnNvbm5lQUNoYXJnZS5yZXNzb3VyY2VzKTtcbiAgICAoXCJhc2NlbmRhbnRfZGVzY2VuZGFudF9jb2xsYXTDqXJhbF9kZXV4acOobWVfdHJvaXNpw6htZV9kZWdyw6lcIixcbiAgICBlbWJlZF9ib29sXG4gICAgeC5BdXRyZVBlcnNvbm5lQUNoYXJnZS5hc2NlbmRhbnRfZGVzY2VuZGFudF9jb2xsYXRlcmFsX2RldXhpZW1lX3Ryb2lzaWVtZV9kZWdyZSk7XG4gICAgKFwicGFyZW50w6lcIiwgZW1iZWRfcGFyZW50ZVxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UucGFyZW50ZSk7XG4gICAgKFwiaW5jYXBhY2l0w6lfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLmluY2FwYWNpdGVfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pKTtcbiAgICAoXCJiw6luw6lmaWNpYWlyZV9sMTYxXzE5X2wzNTFfOF9sNjQzXzNfc8OpY3VcIiwgZW1iZWRfYm9vbFxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UuYmVuZWZpY2lhaXJlX2wxNjFfMTlfbDM1MV84X2w2NDNfM19zZWN1KTtcbiAgICAoXCJ0aXR1bGFpcmVfYWxsb2NhdGlvbl9wZXJzb25uZV/DomfDqWVcIiwgZW1iZWRfYm9vbFxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UudGl0dWxhaXJlX2FsbG9jYXRpb25fcGVyc29ubmVfYWdlZSldKVxuXG5cbm1vZHVsZSBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBNb2luc0RlVHJvaXNFbmZhbnRzIG9mIHVuaXRcbiAgICB8IFBsdXNEZVRyb2lzRW5mYW50cyBvZiBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS50XG4gIGVuZFxubGV0IGVtYmVkX2RhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50XG4gICh4OiBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkRhdGVOYWlzc2FuY2VUcm9pc2nDqG1lT3VEZXJuaWVyUGx1c0VuZmFudFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBNb2luc0RlVHJvaXNFbmZhbnRzIHggLT4gKFwiTW9pbnNEZVRyb2lzRW5mYW50c1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBQbHVzRGVUcm9pc0VuZmFudHMgeCAtPlxuICAgICAgKFwiUGx1c0RlVHJvaXNFbmZhbnRzXCIsIGVtYmVkX2RhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlIHgpKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZWxpZ2liaWxpdGU6IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZTogaW50ZWdlcjtcbiAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlOiBkZWNpbWFsIGFycmF5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgKHg6IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCJdLFxuICBbKFwiw6lsaWdpYmlsaXTDqVwiLCBlbWJlZF90eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LmVsaWdpYmlsaXRlKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSk7XG4gICAgKFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIixcbiAgICBlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbClcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUpXSlcblxuXG5tb2R1bGUgTG9nZW1lbnRGb3llciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdHlwZV91c2VyOiBUeXBlTG9nZW1lbnRGb3llci50O1xuICAgIHJlbXBsaXRfY29uZGl0aW9uc19yODMyXzIxOiBib29sO1xuICAgIGNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSTogYm9vbDtcbiAgICBkYXRlX2NvbnZlbnRpb25uZW1lbnQ6IGRhdGU7XG4gICAgY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSTogYm9vbDtcbiAgICByZWRldmFuY2U6IG1vbmV5O1xuICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2OlxuICAgICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfbG9nZW1lbnRfZm95ZXIgKHg6IExvZ2VtZW50Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkxvZ2VtZW50Rm95ZXJcIl0sXG4gIFsoXCJ0eXBlXCIsIGVtYmVkX3R5cGVfbG9nZW1lbnRfZm95ZXJcbiAgICB4LkxvZ2VtZW50Rm95ZXIudHlwZV91c2VyKTtcbiAgICAoXCJyZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMVwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudEZveWVyLnJlbXBsaXRfY29uZGl0aW9uc19yODMyXzIxKTtcbiAgICAoXCJjb252ZW50aW9ubsOpX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvZ2VtZW50Rm95ZXIuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJKTtcbiAgICAoXCJkYXRlX2NvbnZlbnRpb25uZW1lbnRcIiwgZW1iZWRfZGF0ZVxuICAgIHguTG9nZW1lbnRGb3llci5kYXRlX2NvbnZlbnRpb25uZW1lbnQpO1xuICAgIChcImNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUlcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9nZW1lbnRGb3llci5jb25zdHJ1aXRfYXBwbGljYXRpb25fbG9pXzE5NTdfMTJfSUlJKTtcbiAgICAoXCJyZWRldmFuY2VcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkxvZ2VtZW50Rm95ZXIucmVkZXZhbmNlKTtcbiAgICAoXCJjYXTDqWdvcmllX8OpcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2XCIsXG4gICAgZW1iZWRfY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgICB4LkxvZ2VtZW50Rm95ZXIuY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTYpXSlcblxuXG5tb2R1bGUgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBpZGVudGlmaWFudDogaW50ZWdlcjtcbiAgICBvYmxpZ2F0aW9uX3Njb2xhaXJlOiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudDtcbiAgICByZW11bmVyYXRpb25fbWVuc3VlbGxlOiBtb25leTtcbiAgICBkYXRlX2RlX25haXNzYW5jZTogZGF0ZTtcbiAgICBwcmlzZV9lbl9jaGFyZ2U6IFByaXNlRW5DaGFyZ2VFbmZhbnQudDtcbiAgICBhX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzOiBib29sO1xuICAgIGJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudDogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9lbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoeDogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIFsoXCJpZGVudGlmaWFudFwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuaWRlbnRpZmlhbnQpO1xuICAgIChcIm9ibGlnYXRpb25fc2NvbGFpcmVcIiwgZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVcbiAgICB4LkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlKTtcbiAgICAoXCJyw6ltdW5lcmF0aW9uX21lbnN1ZWxsZVwiLCBlbWJlZF9tb25leVxuICAgIHguRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgIChcImRhdGVfZGVfbmFpc3NhbmNlXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5kYXRlX2RlX25haXNzYW5jZSk7XG4gICAgKFwicHJpc2VfZW5fY2hhcmdlXCIsIGVtYmVkX3ByaXNlX2VuX2NoYXJnZV9lbmZhbnRcbiAgICB4LkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5wcmlzZV9lbl9jaGFyZ2UpO1xuICAgIChcImFfZMOpasOgX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyk7XG4gICAgKFwiYsOpbsOpZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCldKVxuXG5cbm1vZHVsZSBFbmZhbnRBQ2hhcmdlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBpZGVudGlmaWFudDogaW50ZWdlcjtcbiAgICBiZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQ6IGJvb2w7XG4gICAgYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlczogYm9vbDtcbiAgICBkYXRlX2RlX25haXNzYW5jZTogZGF0ZTtcbiAgICByZW11bmVyYXRpb25fbWVuc3VlbGxlOiBtb25leTtcbiAgICBvYmxpZ2F0aW9uX3Njb2xhaXJlOiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudDtcbiAgICBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWU6IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUudFxuICB9XG5lbmRcbmxldCBlbWJlZF9lbmZhbnRfYV9jaGFyZ2UgKHg6IEVuZmFudEFDaGFyZ2UudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkVuZmFudMOAQ2hhcmdlXCJdLFxuICBbKFwiaWRlbnRpZmlhbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRW5mYW50QUNoYXJnZS5pZGVudGlmaWFudCk7XG4gICAgKFwiYsOpbsOpZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50QUNoYXJnZS5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpO1xuICAgIChcImFfZMOpasOgX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnRBQ2hhcmdlLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpO1xuICAgIChcImRhdGVfZGVfbmFpc3NhbmNlXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVuZmFudEFDaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgIChcInLDqW11bmVyYXRpb25fbWVuc3VlbGxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5FbmZhbnRBQ2hhcmdlLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgIChcIm9ibGlnYXRpb25fc2NvbGFpcmVcIiwgZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVcbiAgICB4LkVuZmFudEFDaGFyZ2Uub2JsaWdhdGlvbl9zY29sYWlyZSk7XG4gICAgKFwic2l0dWF0aW9uX2dhcmRlX2FsdGVybsOpZVwiLCBlbWJlZF9zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVcbiAgICB4LkVuZmFudEFDaGFyZ2Uuc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlKV0pXG5cblxubW9kdWxlIFR5cGVCYWlsbGV1ciA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBCYWlsbGV1clNvY2lhbCBvZiBDb252ZW50aW9uQmFpbGxldXJTb2NpYWwudFxuICAgIHwgQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsIG9mIENvbnZlbnRpb25BTkhBLnRcbiAgICB8IEJhaWxsZXVyUHJpdmUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90eXBlX2JhaWxsZXVyICh4OiBUeXBlQmFpbGxldXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlQmFpbGxldXJcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQmFpbGxldXJTb2NpYWwgeCAtPlxuICAgICAgKFwiQmFpbGxldXJTb2NpYWxcIiwgZW1iZWRfY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwgeClcbiAgICB8IEJhaWxsZXVyUHJpdmVBdmVjQ29udmVudGlvbm5lbWVudFNvY2lhbCB4IC0+XG4gICAgICAoXCJCYWlsbGV1clByaXbDqUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsXCIsIGVtYmVkX2NvbnZlbnRpb25fYV9uX2hfYSB4KVxuICAgIHwgQmFpbGxldXJQcml2ZSB4IC0+IChcIkJhaWxsZXVyUHJpdsOpXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIExvdWVPdVNvdXNMb3VlQURlc1RpZXJzID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IE5vbiBvZiB1bml0XG4gICAgfCBPdWkgb2YgUGVyc29ubmVTb3VzTG9jYXRpb24udFxuICBlbmRcbmxldCBlbWJlZF9sb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyAoeDogTG91ZU91U291c0xvdWVBRGVzVGllcnMudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJMb3XDqU91U291c0xvdcOpw4BEZXNUaWVyc1wiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb24geCAtPiAoXCJOb25cIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgT3VpIHggLT4gKFwiT3VpXCIsIGVtYmVkX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24geCkpXG5cblxubW9kdWxlIE5hdGlvbmFsaXRlID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IEZyYW5jYWlzZSBvZiB1bml0XG4gICAgfCBFdHJhbmdlcmUgb2YgQ29uZGl0aW9uc0V0cmFuZ2Vycy50XG4gIGVuZFxubGV0IGVtYmVkX25hdGlvbmFsaXRlICh4OiBOYXRpb25hbGl0ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIk5hdGlvbmFsaXTDqVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBGcmFuY2Fpc2UgeCAtPiAoXCJGcmFuw6dhaXNlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEV0cmFuZ2VyZSB4IC0+IChcIsOJdHJhbmfDqHJlXCIsIGVtYmVkX2NvbmRpdGlvbnNfZXRyYW5nZXJzIHgpKVxuXG5cbm1vZHVsZSBDaGFuZ2VtZW50TG9nZW1lbnREODQyNCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBDaGFuZ2VtZW50IG9mIEluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudFxuICAgIHwgUGFzRGVDaGFuZ2VtZW50IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgKHg6IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiQ2hhbmdlbWVudExvZ2VtZW50RDg0Ml80XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IENoYW5nZW1lbnQgeCAtPlxuICAgICAgKFwiQ2hhbmdlbWVudFwiLCBlbWJlZF9pbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCB4KVxuICAgIHwgUGFzRGVDaGFuZ2VtZW50IHggLT4gKFwiUGFzRGVDaGFuZ2VtZW50XCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFByb3ByaWV0YWlyZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbG9nZW1lbnRfc2l0dWVfY29tbXVuZV9kZXNlcXVpbGlicmVfbDgzMV8yOiBib29sO1xuICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZTogbW9uZXk7XG4gICAgY2hhcmdlc19tZW5zdWVsbGVzX3ByZXQ6IG1vbmV5O1xuICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50OiBkYXRlO1xuICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1OiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQ7XG4gICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNTogVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQ7XG4gICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlOiBib29sO1xuICAgIGNvcHJvcHJpZXRlOiBib29sO1xuICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3OiBib29sO1xuICAgIGFuY2llbm5ldGVfbG9nZW1lbnQ6IE5ldWZPdUFuY2llbi50O1xuICAgIHByZXQ6IFByZXQudFxuICB9XG5lbmRcbmxldCBlbWJlZF9wcm9wcmlldGFpcmUgKHg6IFByb3ByaWV0YWlyZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUHJvcHJpw6l0YWlyZVwiXSxcbiAgWyhcImxvZ2VtZW50X3NpdHXDqV9jb21tdW5lX2TDqXPDqXF1aWxpYnJlX2w4MzFfMlwiLCBlbWJlZF9ib29sXG4gICAgeC5Qcm9wcmlldGFpcmUubG9nZW1lbnRfc2l0dWVfY29tbXVuZV9kZXNlcXVpbGlicmVfbDgzMV8yKTtcbiAgICAoXCJtZW5zdWFsaXTDqV9wcmluY2lwYWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5Qcm9wcmlldGFpcmUubWVuc3VhbGl0ZV9wcmluY2lwYWxlKTtcbiAgICAoXCJjaGFyZ2VzX21lbnN1ZWxsZXNfcHLDqnRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LlByb3ByaWV0YWlyZS5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldCk7XG4gICAgKFwiZGF0ZV9lbnRyw6llX2xvZ2VtZW50XCIsIGVtYmVkX2RhdGVcbiAgICB4LlByb3ByaWV0YWlyZS5kYXRlX2VudHJlZV9sb2dlbWVudCk7XG4gICAgKFwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVcIiwgZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVcbiAgICB4LlByb3ByaWV0YWlyZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSk7XG4gICAgKFwidHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNVwiLCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81XG4gICAgeC5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSk7XG4gICAgKFwibG9jYWxfaGFiaXTDqV9wcmVtacOocmVfZm9pc19iw6luw6lmaWNpYWlyZVwiLCBlbWJlZF9ib29sXG4gICAgeC5Qcm9wcmlldGFpcmUubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlKTtcbiAgICAoXCJjb3Byb3ByacOpdMOpXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlByb3ByaWV0YWlyZS5jb3Byb3ByaWV0ZSk7XG4gICAgKFwic2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdcIiwgZW1iZWRfYm9vbFxuICAgIHguUHJvcHJpZXRhaXJlLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3KTtcbiAgICAoXCJhbmNpZW5uZXTDqV9sb2dlbWVudFwiLCBlbWJlZF9uZXVmX291X2FuY2llblxuICAgIHguUHJvcHJpZXRhaXJlLmFuY2llbm5ldGVfbG9nZW1lbnQpO1xuICAgIChcInByw6p0XCIsIGVtYmVkX3ByZXQgeC5Qcm9wcmlldGFpcmUucHJldCldKVxuXG5cbm1vZHVsZSBJbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBub21icmVfZW5mYW50c19hX25haXRyZV9hcHJlc190cm9pc2llbWVfbW9pc19ncm9zc2Vzc2U6IGludGVnZXI7XG4gICAgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX2VuZmFudF9vdV9kZXJuaWVyX3NpX3BsdXM6XG4gICAgICBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2luZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQgKHg6IEluZm9ybWF0aW9uc1ByaW1lRGVEZW1lbmFnZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkluZm9ybWF0aW9uc1ByaW1lRGVEw6ltw6luYWdlbWVudFwiXSxcbiAgWyhcIm5vbWJyZV9lbmZhbnRzX8OgX25hw650cmVfYXByw6hzX3Ryb2lzacOobWVfbW9pc19ncm9zc2Vzc2VcIixcbiAgICBlbWJlZF9pbnRlZ2VyXG4gICAgeC5JbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50Lm5vbWJyZV9lbmZhbnRzX2FfbmFpdHJlX2FwcmVzX3Ryb2lzaWVtZV9tb2lzX2dyb3NzZXNzZSk7XG4gICAgKFwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpw6htZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzXCIsXG4gICAgZW1iZWRfZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRcbiAgICB4LkluZm9ybWF0aW9uc1ByaW1lRGVEZW1lbmFnZW1lbnQuZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX2VuZmFudF9vdV9kZXJuaWVyX3NpX3BsdXMpXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRyb2l0X291dmVydDogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgLT4gYm9vbDtcbiAgICBjb25kaXRpb25zX2hvcnNfYWdlOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBib29sO1xuICAgIGFnZV9sNTEyXzNfMjogZHVyYXRpb247XG4gICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzE6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoeDogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIFsoXCJkcm9pdF9vdXZlcnRcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5kcm9pdF9vdXZlcnQpO1xuICAgIChcImNvbmRpdGlvbnNfaG9yc1/DomdlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSk7XG4gICAgKFwiw6JnZV9sNTEyXzNfMlwiLCBlbWJlZF9kdXJhdGlvblxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYWdlX2w1MTJfM18yKTtcbiAgICAoXCJyw6lnaW1lX291dHJlX21lcl9sNzUxXzFcIiwgZW1iZWRfYm9vbFxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucmVnaW1lX291dHJlX21lcl9sNzUxXzEpXSlcblxuXG5tb2R1bGUgUGVyc29ubmVBQ2hhcmdlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEVuZmFudEFDaGFyZ2Ugb2YgRW5mYW50QUNoYXJnZS50XG4gICAgfCBBdXRyZVBlcnNvbm5lQUNoYXJnZSBvZiBBdXRyZVBlcnNvbm5lQUNoYXJnZS50XG4gIGVuZFxubGV0IGVtYmVkX3BlcnNvbm5lX2FfY2hhcmdlICh4OiBQZXJzb25uZUFDaGFyZ2UudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJQZXJzb25uZcOAQ2hhcmdlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEVuZmFudEFDaGFyZ2UgeCAtPiAoXCJFbmZhbnTDgENoYXJnZVwiLCBlbWJlZF9lbmZhbnRfYV9jaGFyZ2UgeClcbiAgICB8IEF1dHJlUGVyc29ubmVBQ2hhcmdlIHggLT5cbiAgICAgIChcIkF1dHJlUGVyc29ubmXDgENoYXJnZVwiLCBlbWJlZF9hdXRyZV9wZXJzb25uZV9hX2NoYXJnZSB4KSlcblxuXG5tb2R1bGUgRGVtYW5kZXVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX25haXNzYW5jZTogZGF0ZTtcbiAgICBuYXRpb25hbGl0ZTogTmF0aW9uYWxpdGUudDtcbiAgICBwYXRyaW1vaW5lOiBQYXRyaW1vaW5lLnQ7XG4gICAgcGVyc29ubmVfaGViZXJnZWVfY2VudHJlX3NvaW5fbF9MMTYyXzIyXzNfc2VjdXJpdGVfc29jaWFsZTogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9kZW1hbmRldXIgKHg6IERlbWFuZGV1ci50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiRGVtYW5kZXVyXCJdLFxuICBbKFwiZGF0ZV9uYWlzc2FuY2VcIiwgZW1iZWRfZGF0ZSB4LkRlbWFuZGV1ci5kYXRlX25haXNzYW5jZSk7XG4gICAgKFwibmF0aW9uYWxpdMOpXCIsIGVtYmVkX25hdGlvbmFsaXRlXG4gICAgeC5EZW1hbmRldXIubmF0aW9uYWxpdGUpO1xuICAgIChcInBhdHJpbW9pbmVcIiwgZW1iZWRfcGF0cmltb2luZVxuICAgIHguRGVtYW5kZXVyLnBhdHJpbW9pbmUpO1xuICAgIChcInBlcnNvbm5lX2jDqWJlcmfDqWVfY2VudHJlX3NvaW5fbF9MMTYyXzIyXzNfc8OpY3VyaXTDqV9zb2NpYWxlXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguRGVtYW5kZXVyLnBlcnNvbm5lX2hlYmVyZ2VlX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3NlY3VyaXRlX3NvY2lhbGUpXSlcblxuXG5tb2R1bGUgTG9jYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGJhaWxsZXVyOiBUeXBlQmFpbGxldXIudDtcbiAgICBsb3llcl9wcmluY2lwYWw6IG1vbmV5O1xuICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlczogYm9vbDtcbiAgICBsb2dlbWVudF9lc3RfY2hhbWJyZTogYm9vbDtcbiAgICBjb2xvY2F0aW9uOiBib29sO1xuICAgIGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzOiBib29sO1xuICAgIGxvZ2VtZW50X21ldWJsZV9kODQyXzI6IGJvb2w7XG4gICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQ6IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfbG9jYXRpb24gKHg6IExvY2F0aW9uLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJMb2NhdGlvblwiXSxcbiAgWyhcImJhaWxsZXVyXCIsIGVtYmVkX3R5cGVfYmFpbGxldXIgeC5Mb2NhdGlvbi5iYWlsbGV1cik7XG4gICAgKFwibG95ZXJfcHJpbmNpcGFsXCIsIGVtYmVkX21vbmV5XG4gICAgeC5Mb2NhdGlvbi5sb3llcl9wcmluY2lwYWwpO1xuICAgIChcImLDqW7DqWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcMOpc1wiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2NhdGlvbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXMpO1xuICAgIChcImxvZ2VtZW50X2VzdF9jaGFtYnJlXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvY2F0aW9uLmxvZ2VtZW50X2VzdF9jaGFtYnJlKTtcbiAgICAoXCJjb2xvY2F0aW9uXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvY2F0aW9uLmNvbG9jYXRpb24pO1xuICAgIChcIsOiZ8OpZXNfb3VfaGFuZGljYXBfYWR1bHRlc19ow6liZXJnw6llc19vbsOpcmV1eF9wYXJ0aWN1bGllcnNcIixcbiAgICBlbWJlZF9ib29sXG4gICAgeC5Mb2NhdGlvbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVycyk7XG4gICAgKFwibG9nZW1lbnRfbWV1YmzDqV9kODQyXzJcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9jYXRpb24ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMik7XG4gICAgKFwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRcIiwgZW1iZWRfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRcbiAgICB4LkxvY2F0aW9uLmNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80KV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX2NvdXJhbnRlOiBkYXRlO1xuICAgIGVsaWdpYmlsaXRlOiBib29sO1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZTogaW50ZWdlcjtcbiAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlOiBkZWNpbWFsIGFycmF5O1xuICAgIGNvbmRpdGlvbl8yX3I4MjNfNDogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCAoeDogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmRhdGVfY291cmFudGUpO1xuICAgIChcIsOpbGlnaWJpbGl0w6lcIiwgZW1iZWRfYm9vbFxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZWxpZ2liaWxpdGUpO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlKTtcbiAgICAoXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiLFxuICAgIGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKVxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSk7XG4gICAgKFwiY29uZGl0aW9uXzJfcjgyM180XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuY29uZGl0aW9uXzJfcjgyM180KV0pXG5cblxubW9kdWxlIENhdGVnb3JpZUNhbGN1bEFQTCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBMb2NhdGlvbiBvZiBMb2NhdGlvbi50XG4gICAgfCBBY2Nlc3Npb25Qcm9wcmlldGUgb2YgUHJvcHJpZXRhaXJlLnRcbiAgICB8IExvZ2VtZW50Rm95ZXIgb2YgTG9nZW1lbnRGb3llci50XG4gIGVuZFxubGV0IGVtYmVkX2NhdGVnb3JpZV9jYWxjdWxfYV9wX2wgKHg6IENhdGVnb3JpZUNhbGN1bEFQTC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkNhdMOpZ29yaWVDYWxjdWxBUExcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTG9jYXRpb24geCAtPiAoXCJMb2NhdGlvblwiLCBlbWJlZF9sb2NhdGlvbiB4KVxuICAgIHwgQWNjZXNzaW9uUHJvcHJpZXRlIHggLT4gKFwiQWNjZXNzaW9uUHJvcHJpw6l0w6lcIiwgZW1iZWRfcHJvcHJpZXRhaXJlIHgpXG4gICAgfCBMb2dlbWVudEZveWVyIHggLT4gKFwiTG9nZW1lbnRGb3llclwiLCBlbWJlZF9sb2dlbWVudF9mb3llciB4KSlcblxuXG5tb2R1bGUgTW9kZU9jY3VwYXRpb24gPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgTG9jYXRhaXJlIG9mIExvY2F0aW9uLnRcbiAgICB8IFJlc2lkZW50TG9nZW1lbnRGb3llciBvZiBMb2dlbWVudEZveWVyLnRcbiAgICB8IEFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gb2YgUHJvcHJpZXRhaXJlLnRcbiAgICB8IFNvdXNMb2NhdGFpcmUgb2YgTG9jYXRpb24udFxuICAgIHwgTG9jYXRpb25BY2Nlc3Npb24gb2YgUHJvcHJpZXRhaXJlLnRcbiAgZW5kXG5sZXQgZW1iZWRfbW9kZV9vY2N1cGF0aW9uICh4OiBNb2RlT2NjdXBhdGlvbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIk1vZGVPY2N1cGF0aW9uXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IExvY2F0YWlyZSB4IC0+IChcIkxvY2F0YWlyZVwiLCBlbWJlZF9sb2NhdGlvbiB4KVxuICAgIHwgUmVzaWRlbnRMb2dlbWVudEZveWVyIHggLT5cbiAgICAgIChcIlLDqXNpZGVudExvZ2VtZW50Rm95ZXJcIiwgZW1iZWRfbG9nZW1lbnRfZm95ZXIgeClcbiAgICB8IEFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24geCAtPlxuICAgICAgKFwiQWNjZXNzaW9uUHJvcHJpw6l0w6lMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uXCIsIGVtYmVkX3Byb3ByaWV0YWlyZSB4KVxuICAgIHwgU291c0xvY2F0YWlyZSB4IC0+IChcIlNvdXNMb2NhdGFpcmVcIiwgZW1iZWRfbG9jYXRpb24geClcbiAgICB8IExvY2F0aW9uQWNjZXNzaW9uIHggLT4gKFwiTG9jYXRpb25BY2Nlc3Npb25cIiwgZW1iZWRfcHJvcHJpZXRhaXJlIHgpKVxuXG5cbm1vZHVsZSBMb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVzaWRlbmNlX3ByaW5jaXBhbGU6IGJvb2w7XG4gICAgZXN0X2VocGFkX291X21haXNvbl9hdXRvbm9taWVfbDMxM18xMl9hc2Y6IGJvb2w7XG4gICAgbW9kZV9vY2N1cGF0aW9uOiBNb2RlT2NjdXBhdGlvbi50O1xuICAgIHByb3ByaWV0YWlyZTogUGFyZW50T3VBdXRyZS50O1xuICAgIGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzOiBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy50O1xuICAgIHVzdWZydWl0OiBQYXJlbnRPdUF1dHJlLnQ7XG4gICAgbG9nZW1lbnRfZGVjZW50X2w4OV80NjI6IGJvb2w7XG4gICAgc3VyZmFjZV9tX2NhcnJlczogaW50ZWdlcjtcbiAgICB6b25lOiBab25lREhhYml0YXRpb24udFxuICB9XG5lbmRcbmxldCBlbWJlZF9sb2dlbWVudCAoeDogTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIkxvZ2VtZW50XCJdLFxuICBbKFwicsOpc2lkZW5jZV9wcmluY2lwYWxlXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvZ2VtZW50LnJlc2lkZW5jZV9wcmluY2lwYWxlKTtcbiAgICAoXCJlc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZlwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudC5lc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZik7XG4gICAgKFwibW9kZV9vY2N1cGF0aW9uXCIsIGVtYmVkX21vZGVfb2NjdXBhdGlvblxuICAgIHguTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKTtcbiAgICAoXCJwcm9wcmnDqXRhaXJlXCIsIGVtYmVkX3BhcmVudF9vdV9hdXRyZVxuICAgIHguTG9nZW1lbnQucHJvcHJpZXRhaXJlKTtcbiAgICAoXCJsb3XDqV9vdV9zb3VzX2xvdcOpX8OgX2Rlc190aWVyc1wiLCBlbWJlZF9sb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyc1xuICAgIHguTG9nZW1lbnQubG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMpO1xuICAgIChcInVzdWZydWl0XCIsIGVtYmVkX3BhcmVudF9vdV9hdXRyZVxuICAgIHguTG9nZW1lbnQudXN1ZnJ1aXQpO1xuICAgIChcImxvZ2VtZW50X2RlY2VudF9sODlfNDYyXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvZ2VtZW50LmxvZ2VtZW50X2RlY2VudF9sODlfNDYyKTtcbiAgICAoXCJzdXJmYWNlX21fY2FycsOpc1wiLCBlbWJlZF9pbnRlZ2VyIHguTG9nZW1lbnQuc3VyZmFjZV9tX2NhcnJlcyk7XG4gICAgKFwiem9uZVwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvbiB4LkxvZ2VtZW50LnpvbmUpXSlcblxuXG5tb2R1bGUgTWVuYWdlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBwcmVzdGF0aW9uc19yZWN1ZXM6IFByZXN0YXRpb25SZWN1ZS50IGFycmF5O1xuICAgIGxvZ2VtZW50OiBMb2dlbWVudC50O1xuICAgIHBlcnNvbm5lc19hX2NoYXJnZTogUGVyc29ubmVBQ2hhcmdlLnQgYXJyYXk7XG4gICAgbm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnQ6IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZTogU2l0dWF0aW9uRmFtaWxpYWxlLnQ7XG4gICAgY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpOiBib29sO1xuICAgIGVuZmFudF9hX25haXRyZV9hcHJlc19xdWF0cmllbWVfbW9pc19ncm9zc2Vzc2U6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfbWVuYWdlICh4OiBNZW5hZ2UudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIk3DqW5hZ2VcIl0sXG4gIFsoXCJwcmVzdGF0aW9uc19yZcOndWVzXCIsIGVtYmVkX2FycmF5IChlbWJlZF9wcmVzdGF0aW9uX3JlY3VlKVxuICAgIHguTWVuYWdlLnByZXN0YXRpb25zX3JlY3Vlcyk7XG4gICAgKFwibG9nZW1lbnRcIiwgZW1iZWRfbG9nZW1lbnQgeC5NZW5hZ2UubG9nZW1lbnQpO1xuICAgIChcInBlcnNvbm5lc1/DoF9jaGFyZ2VcIiwgZW1iZWRfYXJyYXkgKGVtYmVkX3BlcnNvbm5lX2FfY2hhcmdlKVxuICAgIHguTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSk7XG4gICAgKFwibm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguTWVuYWdlLm5vbWJyZV9hdXRyZXNfb2NjdXBhbnRzX2xvZ2VtZW50KTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlXCIsIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVcbiAgICB4Lk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKTtcbiAgICAoXCJjb25kaXRpb25fcmF0dGFjaMOpX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpXCIsIGVtYmVkX2Jvb2xcbiAgICB4Lk1lbmFnZS5jb25kaXRpb25fcmF0dGFjaGVfZm95ZXJfZmlzY2FsX3BhcmVudF9pZmkpO1xuICAgIChcImVuZmFudF/DoF9uYcOudHJlX2FwcsOoc19xdWF0cmnDqG1lX21vaXNfZ3Jvc3Nlc3NlXCIsIGVtYmVkX2Jvb2xcbiAgICB4Lk1lbmFnZS5lbmZhbnRfYV9uYWl0cmVfYXByZXNfcXVhdHJpZW1lX21vaXNfZ3Jvc3Nlc3NlKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbjogdW5pdCAtPiBib29sO1xuICAgIGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luOiB1bml0IC0+IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gKHg6IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luKTtcbiAgICAoXCJjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4pXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiAoeDogRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudF9pblwiXSxcbiAgWyhcIm3DqW5hZ2VfaW5cIiwgZW1iZWRfbWVuYWdlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRlbWFuZGV1cl9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgbWVuYWdlX2luOiBNZW5hZ2UudDtcbiAgICBkZW1hbmRldXJfaW46IERlbWFuZGV1ci50O1xuICAgIGJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW46IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiAoeDogRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudF9pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGVtYW5kZXVyX2luKTtcbiAgICAoXCJiw6luw6lmaWNpZV9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbildKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgaW5mb3JtYXRpb25zX2luOiBJbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50LnQ7XG4gICAgZGF0ZV9lbW1lbmFnZW1lbnRfaW46IGRhdGU7XG4gICAgbWVuYWdlX2luOiBNZW5hZ2UudDtcbiAgICBkZW1hbmRldXJfaW46IERlbWFuZGV1ci50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzX2luOiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4gKHg6IEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50X2luXCJdLFxuICBbKFwiaW5mb3JtYXRpb25zX2luXCIsIGVtYmVkX2luZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnRcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmluZm9ybWF0aW9uc19pbik7XG4gICAgKFwiZGF0ZV9lbW3DqW5hZ2VtZW50X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmRhdGVfZW1tZW5hZ2VtZW50X2luKTtcbiAgICAoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4ubWVuYWdlX2luKTtcbiAgICAoXCJkZW1hbmRldXJfaW5cIiwgZW1iZWRfZGVtYW5kZXVyXG4gICAgeC5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kZW1hbmRldXJfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiZMOpcGVuc2VzX2p1c3RpZmnDqWVzX3LDqWVsbGVtZW50X2VuZ2Fnw6llc19pblwiLCBlbWJlZF9tb25leVxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzX2luKV0pXG5cblxubW9kdWxlIFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVzc291cmNlc19kZW1hbmRldXJfaW46IG1vbmV5O1xuICAgIHJlc3NvdXJjZXNfY29uam9pbnRfaW46IG1vbmV5O1xuICAgIHBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW46XG4gICAgICBQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci50IGFycmF5O1xuICAgIGRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luOiBib29sO1xuICAgIGNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW46IGJvb2w7XG4gICAgcGVyc29ubmVzX2FfY2hhcmdlX2luOiBQZXJzb25uZUFDaGFyZ2UudCBhcnJheTtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2luOiBTaXR1YXRpb25GYW1pbGlhbGUudDtcbiAgICBtb2RlX29jY3VwYXRpb25faW46IE1vZGVPY2N1cGF0aW9uLnQ7XG4gICAgY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pbjogYm9vbDtcbiAgICBkZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlc19pbjogYm9vbDtcbiAgICBkYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXRfaW46IGRhdGU7XG4gICAgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9pbjpcbiAgICAgIFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwudDtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbjogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiAoeDogUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50X2luXCJdLFxuICBbKFwicmVzc291cmNlc19kZW1hbmRldXJfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX2RlbWFuZGV1cl9pbik7XG4gICAgKFwicmVzc291cmNlc19jb25qb2ludF9pblwiLCBlbWJlZF9tb25leVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnJlc3NvdXJjZXNfY29uam9pbnRfaW4pO1xuICAgIChcInBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW5cIixcbiAgICBlbWJlZF9hcnJheSAoZW1iZWRfcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyKVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW4pO1xuICAgIChcImRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdMOpX3LDqW11bsOpcsOpZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW4pO1xuICAgIChcImNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0w6lfcsOpbXVuw6lyw6llX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luKTtcbiAgICAoXCJwZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2FycmF5IChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSlcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfaW5cIiwgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4pO1xuICAgIChcIm1vZGVfb2NjdXBhdGlvbl9pblwiLCBlbWJlZF9tb2RlX29jY3VwYXRpb25cbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4pO1xuICAgIChcImNvbmRpdGlvbl/DomdlX2JvdXJzZV9lbnNlaWduZW1lbnRfc3Vww6lyaWV1cl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pbik7XG4gICAgKFwiZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc1/DqXR1ZGVzX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlc19pbik7XG4gICAgKFwiZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXRfaW4pO1xuICAgIChcInBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfaW5cIixcbiAgICBlbWJlZF9wYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19iYXNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4pXSlcblxuXG5tb2R1bGUgQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfY291cmFudGVfaW46IGRhdGV9XG5lbmRcbmxldCBlbWJlZF9jb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luICh4OiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50X2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGxveWVyX3ByaW5jaXBhbF9iYXNlX2luOiBtb25leTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbjogYm9vbDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV9pbjogYm9vbDtcbiAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbjogYm9vbDtcbiAgICB0eXBlX2FpZGVfaW46IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudDtcbiAgICBjb2xvY2F0aW9uX2luOiBib29sO1xuICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luOiBtb25leTtcbiAgICBsb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmX2luXCJdLFxuICBbKFwibG95ZXJfcHJpbmNpcGFsX2Jhc2VfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2Jhc2VfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJiw6luw6lmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXDDqXNfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi56b25lX2luKTtcbiAgICAoXCJsb2dlbWVudF9lc3RfY2hhbWJyZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luKTtcbiAgICAoXCLDomfDqWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaMOpYmVyZ8OpZXNfb27DqXJldXhfcGFydGljdWxpZXJzX2luXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbik7XG4gICAgKFwidHlwZV9haWRlX2luXCIsIGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luKTtcbiAgICAoXCJjb2xvY2F0aW9uX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbik7XG4gICAgKFwicsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbik7XG4gICAgKFwibG9nZW1lbnRfbWV1YmzDqV9kODQyXzJfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbjogYm9vbDtcbiAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1X2luOiBkZWNpbWFsXG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiAoeDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVfaW5cIl0sXG4gIFsoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcImNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4pO1xuICAgIChcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW5cIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfaW46IGJvb2w7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiAoeDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJfaW5cIl0sXG4gIFsoXCJjb25kaXRpb25fMl9kdV84MzJfMjVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICB0eXBlX2xvZ2VtZW50X2ZveWVyX2luOiBUeXBlTG9nZW1lbnRGb3llci50O1xuICAgIGRhdGVfY29udmVudGlvbm5lbWVudF9pbjogZGF0ZTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIHJlZGV2YW5jZV9pbjogbW9uZXk7XG4gICAgY29uZGl0aW9uXzJfZHVfODMyXzI1X2luOiB1bml0IC0+IGJvb2w7XG4gICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV9pbjogdW5pdCAtPiBkZWNpbWFsXG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4gKHg6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyX2luXCJdLFxuICBbKFwidHlwZV9sb2dlbWVudF9mb3llcl9pblwiLCBlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luKTtcbiAgICAoXCJkYXRlX2NvbnZlbnRpb25uZW1lbnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicmVkZXZhbmNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4pO1xuICAgIChcImNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbik7XG4gICAgKFwibl9ub21icmVfcGFydHNfZDgzMl8yNV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiAoeDogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmnDqXTDqV9pblwiXSxcbiAgWyhcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luOiBtb25leTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW46IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUudDtcbiAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X2luOiBkYXRlO1xuICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbjogYm9vbDtcbiAgICBkYXRlX2VudHJlZV9sb2dlbWVudF9pbjogZGF0ZTtcbiAgICBjb3Byb3ByaWV0ZV9pbjogYm9vbDtcbiAgICBzaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbjogYm9vbDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICB0eXBlX3ByZXRfaW46IFR5cGVQcmV0LnQ7XG4gICAgYW5jaWVubmV0ZV9sb2dlbWVudF9pbjogTmV1Zk91QW5jaWVuLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gKHg6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqV9pblwiXSxcbiAgWyhcIm1lbnN1YWxpdMOpX3ByaW5jaXBhbGVfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cIixcbiAgICBlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbik7XG4gICAgKFwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2luXCIsIGVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luKTtcbiAgICAoXCJkYXRlX3NpZ25hdHVyZV9wcsOqdF9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pbik7XG4gICAgKFwibG9jYWxfaGFiaXTDqV9wcmVtacOocmVfZm9pc19iw6luw6lmaWNpYWlyZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luKTtcbiAgICAoXCJkYXRlX2VudHLDqWVfbG9nZW1lbnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luKTtcbiAgICAoXCJjb3Byb3ByacOpdMOpX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uem9uZV9pbik7XG4gICAgKFwidHlwZV9wcsOqdF9pblwiLCBlbWJlZF90eXBlX3ByZXRcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3ByZXRfaW4pO1xuICAgIChcImFuY2llbm5ldMOpX2xvZ2VtZW50X2luXCIsIGVtYmVkX25ldWZfb3VfYW5jaWVuXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uYW5jaWVubmV0ZV9sb2dlbWVudF9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1vZGVfb2NjdXBhdGlvbl9pbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICB0eXBlX2FpZGVfaW46IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudDtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW46IG1vbmV5O1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfaW46IFNpdHVhdGlvbkZhbWlsaWFsZS50O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50X2luXCJdLFxuICBbKFwibW9kZV9vY2N1cGF0aW9uX2luXCIsIGVtYmVkX21vZGVfb2NjdXBhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbik7XG4gICAgKFwidHlwZV9haWRlX2luXCIsIGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50eXBlX2FpZGVfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9zYW5zX2Fycm9uZGlfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfaW5cIiwgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uem9uZV9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGxveWVyX3ByaW5jaXBhbF9pbjogbW9uZXk7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luOiBtb25leTtcbiAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW46IGJvb2w7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQ7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfaW46IGJvb2w7XG4gICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW46IGJvb2w7XG4gICAgdHlwZV9haWRlX2luOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQ7XG4gICAgY29sb2NhdGlvbl9pbjogYm9vbDtcbiAgICByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbjogbW9uZXk7XG4gICAgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbjogYm9vbDtcbiAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pbjogQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZfaW5cIl0sXG4gIFsoXCJsb3llcl9wcmluY2lwYWxfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb3llcl9wcmluY2lwYWxfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcImLDqW7DqWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcMOpc19pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi56b25lX2luKTtcbiAgICAoXCJsb2dlbWVudF9lc3RfY2hhbWJyZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW4pO1xuICAgIChcIsOiZ8OpZXNfb3VfaGFuZGljYXBfYWR1bHRlc19ow6liZXJnw6llc19vbsOpcmV1eF9wYXJ0aWN1bGllcnNfaW5cIixcbiAgICBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4pO1xuICAgIChcInR5cGVfYWlkZV9pblwiLCBlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luKTtcbiAgICAoXCJjb2xvY2F0aW9uX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luKTtcbiAgICAoXCJyw6lkdWN0aW9uX2xveWVyX3NvbGlkYXJpdMOpX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4pO1xuICAgIChcImxvZ2VtZW50X21ldWJsw6lfZDg0Ml8yX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luKTtcbiAgICAoXCJjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pblwiLCBlbWJlZF9jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbjogbW9uZXk7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50O1xuICAgIHpvbmVfaW46IFpvbmVESGFiaXRhdGlvbi50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luOiBtb25leTtcbiAgICBzaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbjogYm9vbDtcbiAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X2luOiBkYXRlO1xuICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbjogVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQ7XG4gICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luOiBib29sO1xuICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50X2luOiBkYXRlO1xuICAgIGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0X2luOiBtb25leTtcbiAgICBjb3Byb3ByaWV0ZV9pbjogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lfaW5cIl0sXG4gIFsoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cIixcbiAgICBlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi56b25lX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcIm1lbnN1YWxpdMOpX3ByaW5jaXBhbGVfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4pO1xuICAgIChcImRhdGVfc2lnbmF0dXJlX3Byw6p0X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4pO1xuICAgIChcInR5cGVfdHJhdmF1eF9sb2dlbWVudF9pblwiLCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW4pO1xuICAgIChcImxvY2FsX2hhYml0w6lfcHJlbWnDqHJlX2ZvaXNfYsOpbsOpZmljaWFpcmVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luKTtcbiAgICAoXCJkYXRlX2VudHLDqWVfbG9nZW1lbnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW4pO1xuICAgIChcImNoYXJnZXNfbWVuc3VlbGxlc19wcsOqdF9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW4pO1xuICAgIChcImNvcHJvcHJpw6l0w6lfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY29wcm9wcmlldGVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdHlwZV9sb2dlbWVudF9mb3llcl9pbjogVHlwZUxvZ2VtZW50Rm95ZXIudDtcbiAgICBkYXRlX2NvbnZlbnRpb25uZW1lbnRfaW46IGRhdGU7XG4gICAgcmVkZXZhbmNlX2luOiBtb25leTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luOlxuICAgICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyX2luXCJdLFxuICBbKFwidHlwZV9sb2dlbWVudF9mb3llcl9pblwiLCBlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW4pO1xuICAgIChcImRhdGVfY29udmVudGlvbm5lbWVudF9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmRhdGVfY29udmVudGlvbm5lbWVudF9pbik7XG4gICAgKFwicmVkZXZhbmNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnJlZGV2YW5jZV9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJjYXTDqWdvcmllX8OpcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luXCIsXG4gICAgZW1iZWRfY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1vZGVfb2NjdXBhdGlvbl9pbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW46IG1vbmV5O1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfaW46IFNpdHVhdGlvbkZhbWlsaWFsZS50O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICB0eXBlX2FpZGVfaW46IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiAoeDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudF9pblwiXSxcbiAgWyhcIm1vZGVfb2NjdXBhdGlvbl9pblwiLCBlbWJlZF9tb2RlX29jY3VwYXRpb25cbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX3NhbnNfYXJyb25kaV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2luXCIsIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwidHlwZV9haWRlX2luXCIsIGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnR5cGVfYWlkZV9pbildKVxuXG5cbm1vZHVsZSBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtkYXRlX25haXNzYW5jZV9hc3N1cmVfaW46IGRhdGV9XG5lbmRcbmxldCBlbWJlZF9vdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luICh4OiBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZV9pblwiXSxcbiAgWyhcImRhdGVfbmFpc3NhbmNlX2Fzc3Vyw6lfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi5kYXRlX25haXNzYW5jZV9hc3N1cmVfaW4pXSlcblxuXG5tb2R1bGUgSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1vZGVfb2NjdXBhdGlvbl9pbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICBhaWRlX3ZlcnNlZV9pbjogVmVyc2VtZW50QS50O1xuICAgIG1vbnRhbnRfYXBsX2luOiBtb25leTtcbiAgICBtb250YW50X2NoYXJnZXNfaW46IG1vbmV5O1xuICAgIGRlcGVuc2VfbG9nZW1lbnRfaW46IERlcGVuc2VMb2dlbWVudC50O1xuICAgIG1vbnRhbnRfZGV0dGVfaW46IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2ltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luICh4OiBJbXBheWVEZXBlbnNlTG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiSW1wYXnDqUTDqXBlbnNlTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJtb2RlX29jY3VwYXRpb25faW5cIiwgZW1iZWRfbW9kZV9vY2N1cGF0aW9uXG4gICAgeC5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4pO1xuICAgIChcImFpZGVfdmVyc8OpZV9pblwiLCBlbWJlZF92ZXJzZW1lbnRfYVxuICAgIHguSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4uYWlkZV92ZXJzZWVfaW4pO1xuICAgIChcIm1vbnRhbnRfYXBsX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb250YW50X2FwbF9pbik7XG4gICAgKFwibW9udGFudF9jaGFyZ2VzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb250YW50X2NoYXJnZXNfaW4pO1xuICAgIChcImTDqXBlbnNlX2xvZ2VtZW50X2luXCIsIGVtYmVkX2RlcGVuc2VfbG9nZW1lbnRcbiAgICB4LkltcGF5ZURlcGVuc2VMb2dlbWVudEluLmRlcGVuc2VfbG9nZW1lbnRfaW4pO1xuICAgIChcIm1vbnRhbnRfZGV0dGVfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfZGV0dGVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtZW5hZ2VfaW46IE1lbmFnZS50O1xuICAgIGRlbWFuZGV1cl9pbjogRGVtYW5kZXVyLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luOiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luICh4OiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLm1lbmFnZV9pbik7XG4gICAgKFwiZGVtYW5kZXVyX2luXCIsIGVtYmVkX2RlbWFuZGV1clxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRlbWFuZGV1cl9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX3ByaXNlc19lbl9jb21wdGVfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luKV0pXG5cblxubW9kdWxlIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW46IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gKHg6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZV9pblwiXSxcbiAgWyhcIm3DqW5hZ2VfaW5cIiwgZW1iZWRfbWVuYWdlXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLm1lbmFnZV9pbik7XG4gICAgKFwiZGVtYW5kZXVyX2luXCIsIGVtYmVkX2RlbWFuZGV1clxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5kZW1hbmRldXJfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luKV0pXG5cblxubW9kdWxlIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZX1cbmVuZFxubGV0IGVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gKHg6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc19pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4pXSlcblxuXG5tb2R1bGUgU21pY0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtkYXRlX2NvdXJhbnRlX2luOiBkYXRlOyByZXNpZGVuY2VfaW46IENvbGxlY3Rpdml0ZS50fVxuZW5kXG5sZXQgZW1iZWRfc21pY19pbiAoeDogU21pY0luLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJTbWljX2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5TbWljSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGUgeC5TbWljSW4ucmVzaWRlbmNlX2luKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgcHJlc3RhdGlvbl9jb3VyYW50ZV9pbjogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50O1xuICAgIHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc19pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJwcmVzdGF0aW9uX2NvdXJhbnRlX2luXCIsIGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luKTtcbiAgICAoXCJyw6lzaWRlbmNlX2luXCIsIGVtYmVkX2NvbGxlY3Rpdml0ZVxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4pXSlcblxuXG5cblxubGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW46IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpIDogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGV4b25lcmVfY3NnXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcImV4b27DqXLDqV9jc2dcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUxODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MTg7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUxODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTUxODsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTM2LTEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogRGUgbGEgY29udHJpYnV0aW9uIHNvY2lhbGUgc3VyIGxlcyByZXZlbnVzIGQnYWN0aXZpdMOpIGV0IHN1ciBsZXMgcmV2ZW51cyBkZSByZW1wbGFjZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDYgOiBDb250cmlidXRpb24gc29jaWFsZSBnw6luw6lyYWxpc8OpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJOiBUaXRyZSBJSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgcmVsYXRpdmVzIGF1IGZpbmFuY2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT01MTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTE4OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTE4OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfY3Jkc186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJ0YXV4X2NyZHNcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUxNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MTc7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTE7IHN0YXJ0X2NvbHVtbj0zOTsgZW5kX2xpbmU9MTkxOyBlbmRfY29sdW1uPTY4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogRGVzIGNvbnRyaWJ1dGlvbnMgcG91ciBsZSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGUuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiT3Jkb25uYW5jZSBuwrAgOTYtNTAgZHUgMjQgamFudmllciAxOTk2IHJlbGF0aXZlIGF1IHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZVwiXX1cbiAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA1XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUxNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MTc7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwibW9udGFudFwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTIwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTUyMDsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERlcyBjb250cmlidXRpb25zIHBvdXIgbGUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiT3Jkb25uYW5jZSBuwrAgOTYtNTAgZHUgMjQgamFudmllciAxOTk2IHJlbGF0aXZlIGF1IHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDkpICgxKSkpKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gb19tdWx0X21vbl9yYXQgcGFyYW1fIHRhdXhfY3Jkc18pKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTIwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTUyMDsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MjA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTIwOyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAodHJ5IGV4b25lcmVfY3NnXyB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTc7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogRGVzIGNvbnRyaWJ1dGlvbnMgcG91ciBsZSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGUuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJPcmRvbm5hbmNlIG7CsCA5Ni01MCBkdSAyNCBqYW52aWVyIDE5OTYgcmVsYXRpdmUgYXUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTc7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogRGVzIGNvbnRyaWJ1dGlvbnMgcG91ciBsZSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGUuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJPcmRvbm5hbmNlIG7CsCA5Ni01MCBkdSAyNCBqYW52aWVyIDE5OTYgcmVsYXRpdmUgYXUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlXCJdfSkgaW5cbiAge0NvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50ID0gbW9udGFudF99XG5cbmxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbjogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4udCkgOiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUudCA9XG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gaW5cbiAgbGV0IGNvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luIGluXG4gIGxldCBuX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIjsgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjZcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01OTQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTk0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI2ODU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjY4NTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiBjb25kaXRpb25fMl9kdV84MzJfMjVfIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc2MzJcIilcbiAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDU1N1wiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTk0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU5NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhbmNoZXNfcmV2ZW51c19kODMyXzI2XzogVHJhbmNoZVJldmVudS50IGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiOyBcInRyYW5jaGVzX3JldmVudXNfZDgzMl8yNlwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfdHJhbmNoZV9yZXZlbnUpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTkxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU5MTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5MTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU5MTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2NTA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2NTA7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBbfCh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDIzMDNcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKX0pO1xuICAgICAgICAgICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDQ3NjFcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0MjMwM1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjRcIil9KTtcbiAgICAgICAgICAgICAgICAgICAgICAoe1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYyOTg1XCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDQ3NjFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjA4XCIpfSk7XG4gICAgICAgICAgICAgICAgICAgICAgKHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwOTUwNVwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYyOTg1XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIzMlwiKX0pO1xuICAgICAgICAgICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID0gKExpbWl0ZVRyYW5jaGUuSW5maW5pICgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDk1MDVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMzI4XCIpfSl8XSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI2MDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjYwMTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIFt8KHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ4MTBcIikpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDRcIil9KTtcbiAgICAgICAgICAgICAgKHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjc4NzFcIikpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0ODEwXCIpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMDRcIil9KTtcbiAgICAgICAgICAgICAgKHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODk2MThcIikpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY3ODcxXCIpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yMTZcIil9KTtcbiAgICAgICAgICAgICAgKHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MzU3NDRcIikpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg5NjE4XCIpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yNjRcIil9KTtcbiAgICAgICAgICAgICAgKHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MzMxMjlcIikpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM1NzQ0XCIpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4zMlwiKX0pO1xuICAgICAgICAgICAgICAoe1RyYW5jaGVSZXZlbnUuaGF1dCA9IChMaW1pdGVUcmFuY2hlLkluZmluaSAoKSk7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MzMxMjlcIik7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQ4XCIpfSl8XSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTkxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU5MTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpcGxpZWVzXzogVHJhbmNoZVJldmVudURlY2ltYWwudCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIjtcbiAgICAgIFwidHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpcGxpw6llc1wiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01OTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTkyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAzODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDM4OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX21hcFxuICAgICAgICAgICAgICAoZnVuICh0cmFuY2hlXzogVHJhbmNoZVJldmVudS50KSAtPlxuICAgICAgICAgICAgICAgICB7VHJhbmNoZVJldmVudURlY2ltYWwuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCAodHJhbmNoZV8uVHJhbmNoZVJldmVudS5oYXV0KVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBMaW1pdGVUcmFuY2hlLlJldmVudSB0cmFuY2hlX2hhdXRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGVEZWNpbWFsLlJldmVudVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAob190b3JhdF9tb24gdHJhbmNoZV9oYXV0XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1XykpXG4gICAgICAgICAgICAgICAgICAgICB8IExpbWl0ZVRyYW5jaGUuSW5maW5pIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZURlY2ltYWwuSW5maW5pICgpKSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcyA9XG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfbW9uICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51LmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV8pO1xuICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4ID0gKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnUudGF1eCl9KVxuICAgICAgICAgICAgICB0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01OTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTkyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCI7IFwibW9udGFudFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01OTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTk2OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTk2OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTk2OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDg5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDg5OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfIDogZGVjaW1hbCA9XG4gICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAob190b21vbmV5X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19yZWR1Y2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoc3VtMV86IGRlY2ltYWwpIChzdW0yXzogZGVjaW1hbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfcmF0X3JhdCBzdW0xXyBzdW0yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHRyYW5jaGVfOiBUcmFuY2hlUmV2ZW51RGVjaW1hbC50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuaGF1dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExpbWl0ZVRyYW5jaGVEZWNpbWFsLlJldmVudSB0cmFuY2hlX2hhdXRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbmNoZV9oYXV0XykgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbmNoZV9oYXV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZURlY2ltYWwuSW5maW5pIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5jaGVzX3JldmVudXNfZDgzMl8yNl9tdWx0aXBsaWVlc18pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9tb24gbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI2XykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA1MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDUxOyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAobGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18gOiBkZWNpbWFsID1cbiAgICAgICAgICAgICAgIChvX3RvcmF0X21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChvX3RvbW9uZXlfcmF0XG4gICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgKG9fYWRkX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgIChvX3JlZHVjZVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoc3VtMV86IGRlY2ltYWwpIChzdW0yXzogZGVjaW1hbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX3JhdF9yYXQgc3VtMV8gc3VtMl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKG9fbWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuICh0cmFuY2hlXzogVHJhbmNoZVJldmVudURlY2ltYWwudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfcmF0X3JhdCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5oYXV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMaW1pdGVUcmFuY2hlRGVjaW1hbC5SZXZlbnUgdHJhbmNoZV9oYXV0XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuY2hlX2hhdXRfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXQgdHJhbmNoZV9oYXV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZURlY2ltYWwuSW5maW5pIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5jaGVzX3JldmVudXNfZDgzMl8yNl9tdWx0aXBsaWVlc18pKVxuICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9tb24gbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI2XylcbiAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01OTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTk2OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUubW9udGFudCA9IG1vbnRhbnRffVxuXG5sZXQgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyIChjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW46IENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4udCkgOiBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci50ID1cbiAgbGV0IGNvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJcIjsgXCJuX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02MDM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjAzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjAzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjAzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDAzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDAzOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS41XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjMuN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjQuM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkxNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTE2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS40XCIpXG4gICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAoIGlmIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpXG4gICAgICAgICAgICAgICAgIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjMuXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzXCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjMuN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNFwiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCI0LjNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCI0LjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjAuNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MDM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjAzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1ID1cbiAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV99XG5cbmxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGUgKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbjogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi50KSA6IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8xMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwibl9ub21icmVfcGFydHNfZDgzMl8xMVwiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjU5OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY1OTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjYwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyNjA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuNFwiKVxuICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjhcIikpIGVsc2VcbiAgICAgICAgICAgICAgKCBpZiAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKVxuICAgICAgICAgICAgICAgICB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiM1wiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjRcIikpIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjU5OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY1OTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTEgPVxuICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExX31cblxubGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUgKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW46IE91dmVydHVyZURyb2l0c1JldHJhaXRlSW4udCkgOiBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZS50ID1cbiAgbGV0IGRhdGVfbmFpc3NhbmNlX2Fzc3VyZV86IGRhdGUgPSBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luLk91dmVydHVyZURyb2l0c1JldHJhaXRlSW4uZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX2luIGluXG4gIGxldCBhZ2Vfb3V2ZXJ0dXJlX2Ryb2l0XzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZVwiOyBcIsOiZ2Vfb3V2ZXJ0dXJlX2Ryb2l0XCJdIChlbWJlZF9kdXJhdGlvbikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk5ODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05OTg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJEYXRlIGQnb3V2ZXJ0dXJlIGRlcyBkcm9pdHMgw6AgbGEgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTg7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05OTg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTk7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDE2MS0xNy0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDEgOiBJbmZvcm1hdGlvbiBldCBzaW1wbGlmaWNhdGlvbiBkZXMgZMOpbWFyY2hlcyBkZXMgYXNzdXLDqXMuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gNCA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zIGV0IGF1eCBzb2lucyAtIENvbnRyw7RsZSBtw6lkaWNhbCAtIFR1dGVsbGUgYXV4IHByZXN0YXRpb25zIHNvY2lhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUk6IFRpdHJlIElJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyByZWxhdGl2ZXMgYXUgZmluYW5jZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX25haXNzYW5jZV9hc3N1cmVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTUpICgxKSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDYyKSAoMCkgKDApKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk5ODsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk5ODsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI1NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEMTYxLTItMS05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDIgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gNCA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zIGV0IGF1eCBzb2lucyAtIENvbnRyw7RsZSBtw6lkaWNhbCAtIFR1dGVsbGUgYXV4IHByZXN0YXRpb25zIHNvY2lhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBJIDogR8OpbsOpcmFsaXTDqXMgLSBEaXNwb3NpdGlvbnMgY29tbXVuZXMgw6AgdG91dCBvdSBwYXJ0aWUgZGVzIHLDqWdpbWVzIGRlIGJhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfbmFpc3NhbmNlX2Fzc3VyZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk1MSkgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZHVyYXRpb25fb2ZfbnVtYmVycyAoNjApICgwKSAoMCkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTk4OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTk4OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJEYXRlIGQnb3V2ZXJ0dXJlIGRlcyBkcm9pdHMgw6AgbGEgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjY3OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQxNjEtMi0xLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcmFncmFwaGUgMiA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIEkgOiBHw6luw6lyYWxpdMOpcyAtIERpc3Bvc2l0aW9ucyBjb21tdW5lcyDDoCB0b3V0IG91IHBhcnRpZSBkZXMgcsOpZ2ltZXMgZGUgYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX25haXNzYW5jZV9hc3N1cmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTEpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX25haXNzYW5jZV9hc3N1cmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTEpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fYWRkX2R1cl9kdXIgKGR1cmF0aW9uX29mX251bWJlcnMgKDYwKSAoMCkgKDApKVxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNCkgKDApKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTg7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05OTg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzY7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDE2MS0yLTEtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAyIDogT3V2ZXJ0dXJlIGR1IGRyb2l0IGV0IGxpcXVpZGF0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQsOpbsOpZmljaWFpcmVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgSSA6IEfDqW7DqXJhbGl0w6lzIC0gRGlzcG9zaXRpb25zIGNvbW11bmVzIMOgIHRvdXQgb3UgcGFydGllIGRlcyByw6lnaW1lcyBkZSBiYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgKG9fZ2V0WWVhciBkYXRlX25haXNzYW5jZV9hc3N1cmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxOTUyXCIpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fYWRkX2R1cl9kdXIgKGR1cmF0aW9uX29mX251bWJlcnMgKDYwKSAoMCkgKDApKVxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoOSkgKDApKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTg7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05OTg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yODU7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDE2MS0yLTEtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAyIDogT3V2ZXJ0dXJlIGR1IGRyb2l0IGV0IGxpcXVpZGF0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQsOpbsOpZmljaWFpcmVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgSSA6IEfDqW7DqXJhbGl0w6lzIC0gRGlzcG9zaXRpb25zIGNvbW11bmVzIMOgIHRvdXQgb3UgcGFydGllIGRlcyByw6lnaW1lcyBkZSBiYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgKG9fZ2V0WWVhciBkYXRlX25haXNzYW5jZV9hc3N1cmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxOTUzXCIpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fYWRkX2R1cl9kdXIgKGR1cmF0aW9uX29mX251bWJlcnMgKDYxKSAoMCkgKDApKVxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoMikgKDApKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTg7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05OTg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTQ7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDE2MS0yLTEtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAyIDogT3V2ZXJ0dXJlIGR1IGRyb2l0IGV0IGxpcXVpZGF0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQsOpbsOpZmljaWFpcmVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgSSA6IEfDqW7DqXJhbGl0w6lzIC0gRGlzcG9zaXRpb25zIGNvbW11bmVzIMOgIHRvdXQgb3UgcGFydGllIGRlcyByw6lnaW1lcyBkZSBiYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgKG9fZ2V0WWVhciBkYXRlX25haXNzYW5jZV9hc3N1cmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxOTU0XCIpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fYWRkX2R1cl9kdXIgKGR1cmF0aW9uX29mX251bWJlcnMgKDYxKSAoMCkgKDApKVxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNykgKDApKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTk4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTk5ODsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7T3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUuYWdlX291dmVydHVyZV9kcm9pdCA9IGFnZV9vdXZlcnR1cmVfZHJvaXRffVxuXG5sZXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luOiBJbXBheWVEZXBlbnNlTG9nZW1lbnRJbi50KSA6IEltcGF5ZURlcGVuc2VMb2dlbWVudC50ID1cbiAgbGV0IG1vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4gaW5cbiAgbGV0IGFpZGVfdmVyc2VlXzogVmVyc2VtZW50QS50ID0gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4uSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4uYWlkZV92ZXJzZWVfaW4gaW5cbiAgbGV0IG1vbnRhbnRfYXBsXzogbW9uZXkgPSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb250YW50X2FwbF9pbiBpblxuICBsZXQgbW9udGFudF9jaGFyZ2VzXzogbW9uZXkgPSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb250YW50X2NoYXJnZXNfaW4gaW5cbiAgbGV0IGRlcGVuc2VfbG9nZW1lbnRfOiBEZXBlbnNlTG9nZW1lbnQudCA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLmRlcGVuc2VfbG9nZW1lbnRfaW4gaW5cbiAgbGV0IG1vbnRhbnRfZGV0dGVfOiBtb25leSA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfZGV0dGVfaW4gaW5cbiAgbGV0IG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfOiBNb2RlT2NjdXBhdGlvbkltcGF5ZS50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiSW1wYXnDqUTDqXBlbnNlTG9nZW1lbnRcIjsgXCJtb2RlX29jY3VwYXRpb25faW1wYXnDqVwiXVxuICAgIChlbWJlZF9tb2RlX29jY3VwYXRpb25faW1wYXllKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDE0OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM0NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMzQ1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgKE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgIChNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0ICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAoTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCAoKSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgKE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgKE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAxNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDE0OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX2xvZ2VtZW50X2JydXRlXzogRGVwZW5zZUxvZ2VtZW50LnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiOyBcImTDqXBlbnNlX2xvZ2VtZW50X2JydXRlXCJdXG4gICAgKGVtYmVkX2RlcGVuc2VfbG9nZW1lbnQpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDE1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMTU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxNTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxNTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMxMzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjMxMzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlcGVuc2VfbG9nZW1lbnRfKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjE3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjIxNzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlcGVuc2VfbG9nZW1lbnRfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDE1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMTU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGRlcGVuc2VfbG9nZW1lbnRfbmV0dGVfOiBEZXBlbnNlTG9nZW1lbnQudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50XCI7IFwiZMOpcGVuc2VfbG9nZW1lbnRfbmV0dGVcIl1cbiAgICAoZW1iZWRfZGVwZW5zZV9sb2dlbWVudCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAxNjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDE2OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjIyNjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyMjY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X2JydXRlX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIHRvdGFsXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyB0b3RhbF8pXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgbWVuc3VhbGl0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBtZW5zdWFsaXRlXylcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgbW9udGFudF9sb3llcl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChEZXBlbnNlTG9nZW1lbnQuTG95ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIG1vbnRhbnRfbG95ZXJfIG1vbnRhbnRfYXBsXykpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDE2OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMyMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzMjI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIHRvdGFsX2VjaGVhbmNlc18gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChEZXBlbnNlTG9nZW1lbnQuVG90YWxBbm51ZWxFY2hlYW5jZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHRvdGFsX2VjaGVhbmNlc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBtb250YW50X2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlIG1lbnN1YWxpdGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIG1lbnN1YWxpdGVfIG1vbnRhbnRfYXBsXykpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LkxveWVyIGxveWVyXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKERlcGVuc2VMb2dlbWVudC5Mb3llciBsb3llcl8pKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDE2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMTY7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNldWlsX2ltcGF5ZV9kZXBlbnNlX2RlX2xvZ2VtZW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiOyBcInNldWlsX2ltcGF5w6lfZMOpcGVuc2VfZGVfbG9nZW1lbnRcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDEzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMTM7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDEzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxMzsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxODc7IHN0YXJ0X2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTg3OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYWlkZV92ZXJzZWVfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmFpbGxldXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJlbmVmaWNpYWlyZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5FdGFibGlzc2VtZW50SGFiaWxpdGUgXyAtPiBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZGVwZW5zZV9sb2dlbWVudF9icnV0ZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LkxveWVyIGxveWVyX2JydXRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX2JydXRfIG1vbnRhbnRfY2hhcmdlc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLlwiKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxMzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTM7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjAzOyBzdGFydF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjIwMzsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFpZGVfdmVyc2VlX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJhaWxsZXVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJlbmVmaWNpYWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuRXRhYmxpc3NlbWVudEhhYmlsaXRlIF8gLT4gZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGRlcGVuc2VfbG9nZW1lbnRfbmV0dGVfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuVG90YWxBbm51ZWxFY2hlYW5jZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Mb3llciBsb3llcl9uZXRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX25ldF8gbW9udGFudF9jaGFyZ2VzXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuXCIpKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDEzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxMzsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyNjk7IHN0YXJ0X2NvbHVtbj03O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyNjk7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhaWRlX3ZlcnNlZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5CYWlsbGV1ciBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmVuZWZpY2lhaXJlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkV0YWJsaXNzZW1lbnRIYWJpbGl0ZSBfIC0+IGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X2JydXRlX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIGVjaGVhbmNlX3ByZXRfYnJ1dGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgZWNoZWFuY2VfcHJldF9icnV0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgbWVuc3VhbGl0ZV9icnV0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBtZW5zdWFsaXRlX2JydXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi5cIikpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LkxveWVyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxMzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTM7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjk3OyBzdGFydF9jb2x1bW49NztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjk3OyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYWlkZV92ZXJzZWVfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmFpbGxldXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJlbmVmaWNpYWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuRXRhYmxpc3NlbWVudEhhYmlsaXRlIF8gLT4gdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZGVwZW5zZV9sb2dlbWVudF9uZXR0ZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyBlY2hlYW5jZV9wcmV0X25ldHRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGVjaGVhbmNlX3ByZXRfbmV0dGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNi5cIikpKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlIG1lbnN1YWxpdGVfbmV0dGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgbWVuc3VhbGl0ZV9uZXR0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuXCIpKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Mb3llciBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDEzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMTM7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW1wYXllXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiOyBcIm1vbnRhbnRfaW1wYXnDqVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDE4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwMTg7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE4OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxODsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI0NTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI0NTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vbiBtb250YW50X2RldHRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V1aWxfaW1wYXllX2RlcGVuc2VfZGVfbG9nZW1lbnRfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2RldHRlXyBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTgyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE4MjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uIG1vbnRhbnRfZGV0dGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgc2V1aWxfaW1wYXllX2RlcGVuc2VfZGVfbG9nZW1lbnRfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9kZXR0ZV8gZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAxODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDE4OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtJbXBheWVEZXBlbnNlTG9nZW1lbnQubW9udGFudF9pbXBheWUgPSBtb250YW50X2ltcGF5ZV99XG5cbmxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBtb250YW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIG1pbmlzdMOpcmllbGxlIE7CsERTUy9TRDJCLzIwMTkvNjUgZHUgMjUgbWFycyAyMDE5IHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDE5IGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTMxNlwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG5vIERTUy9TRDJCLzIwMjAvMzMgZHUgMTggZsOpdnJpZXIgMjAyMCByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAyMCBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgZGFucyBsZSBkw6lwYXJ0ZW1lbnQgZGUgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ0MFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsERTUy8yQi8yMDIxLzY1IGR1IDE5IG1hcnMgMjAyMSByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAyMSBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgZGFucyBsZSBkw6lwYXJ0ZW1lbnQgZGUgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ4MVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgzOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsERTUy8yQi8yMDIyLzgyIGR1IDI4IG1hcnMgMjAyMiByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAyMiBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgZGFucyBsZSBkw6lwYXJ0ZW1lbnQgZGUgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjIyOFwiKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIHtCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnQgPSBtb250YW50X31cblxubGV0IHNtaWMgKHNtaWNfaW46IFNtaWNJbi50KSA6IFNtaWMudCA9XG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IHNtaWNfaW4uU21pY0luLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IHJlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gc21pY19pbi5TbWljSW4ucmVzaWRlbmNlX2luIGluXG4gIGxldCBicnV0X2hvcmFpcmVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlNtaWNcIjsgXCJicnV0X2hvcmFpcmVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAxOC0xMTczIGR1IDE5IGTDqWNlbWJyZSAyMDE4IHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwM1wiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ5OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAxOC0xMTczIGR1IDE5IGTDqWNlbWJyZSAyMDE4IHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc1N1wiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTc3OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAxOS0xMzg3IGR1IDE4IGTDqWNlbWJyZSAyMDE5IHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAxNVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg4OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAxOS0xMzg3IGR1IDE4IGTDqWNlbWJyZSAyMDE5IHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc2NlwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIwLTE1OTggZHUgMTYgZMOpY2VtYnJlIDIwMjAgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDI1XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNzsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjAtMTU5OCBkdSAxNiBkw6ljZW1icmUgMjAyMCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NzRcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU1OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMS0xNzQxIGR1IDIyIGTDqWNlbWJyZSAyMDIxIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDU3XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NzsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjEtMTc0MSBkdSAyMiBkw6ljZW1icmUgMjAyMSBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNCkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc5OFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAxOSBhdnJpbCAyMDIyIHJlbGF0aWYgYXUgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDg1XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwNjsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDE5IGF2cmlsIDIwMjIgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg1KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MTlcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM0OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjkganVpbGxldCAyMDIyIHJlbGF0aWYgYXUgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoOCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTEwN1wiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNDU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyOSBqdWlsbGV0IDIwMjIgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg4KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODM1XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3NDsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjItMTYwOCBkdSAyMiBkw6ljZW1icmUgMjAyMiBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjExMjdcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI4Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjg1OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMi0xNjA4IGR1IDIyIGTDqWNlbWJyZSAyMDIyIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg1MVwiKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7IFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX0pKSkpIGluXG4gIHtTbWljLmJydXRfaG9yYWlyZSA9IGJydXRfaG9yYWlyZV99XG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbjogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50KSA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnQgPVxuICBsZXQgbG95ZXJfcHJpbmNpcGFsX2Jhc2VfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxveWVyX3ByaW5jaXBhbF9iYXNlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiBpblxuICBsZXQgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzXzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi56b25lX2luIGluXG4gIGxldCBsb2dlbWVudF9lc3RfY2hhbWJyZV86IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiBpblxuICBsZXQgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gaW5cbiAgbGV0IHR5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiBpblxuICBsZXQgY29sb2NhdGlvbl86IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luIGluXG4gIGxldCByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV86IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4gaW5cbiAgbGV0IGxvZ2VtZW50X21ldWJsZV9kODQyXzJfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiBpblxuICBsZXQgZnJhY3Rpb25fbDgzMl8zXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImZyYWN0aW9uX2w4MzJfM1wiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTUzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1MzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xOTA1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk4XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTM7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODIzXzE2XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwibW9udGFudF9mb3JmYWl0YWlyZV9kODIzXzE2XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU1Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTY7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mjc0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTY7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01ODA7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTgwOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01ODA7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50IGluXG4gIGxldCB0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJ0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZVwiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTY0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY5OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjk7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAzMTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzOFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTg1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDAwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNlwiKSkpKSkpKSkpKSkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3MzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMzE1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzOFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxODVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDAwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSkpKSkpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0ODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0ODsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAzMTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjM4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTg1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTc5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTczXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDAwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSkpKSkpKSkpKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTY0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTdfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJhYmF0dGVtZW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTdcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTU4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTU4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTU4OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Njc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00Njc7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0OTQ5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3MDkwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NDU2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODY0NjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg5NzcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5MzExMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTY0MjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk5NzUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTk3NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIGp1aWxsZXQgMjAyMiBhdSAzMSBkw6ljZW1icmUgMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDg3MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjk3NzAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODMyMjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg1MDkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4ODM0MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTE2MzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk0ODgwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5ODE2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjk4MTYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTg7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgyMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgyMjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIGphbnZpZXIgMjAyMiBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2ODMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY3MDkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgwMDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MTkyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODQ5NTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg4MTEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5MTI0MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTQzOTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5NDM5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzExMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTU4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTU4OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDE4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQxODsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIGphbnZpZXIgMjAyMCBhdSAzMSBkw6ljZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDU4ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjU3MjAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzgzOTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgwMTUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MzIyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODYzMTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg5MzgwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5MjQ2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjkyNDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSkpKSkpKSkpKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTU4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBsb3llcl9yZWZlcmVuY2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImxveWVyX3LDqWbDqXJlbmNlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1MjsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUyOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTI7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTk7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1OTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1OTc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxNzk3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU3ODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyMDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzMTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzMTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1OTc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE3OTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU3ODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyMDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1Mjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MjsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1Mjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNTI7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU4NjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY2NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTYzMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTE4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTI7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18xNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMTZcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTU3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1NzsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI4Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yODY7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHR5cGVfYWlkZV9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgfCBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMDBcIilcbiAgICAgICAgICAgIHwgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTU3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1NzsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwicGxhZm9uZF9sb3llcl9kODIzXzE2XzJcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUyOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MzA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMxMzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDE2NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4OTAwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Mzg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTM5OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3OTA1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQ2ODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjkxMVwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTQ3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU0NzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE1MzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTc2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3Nzc0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA0M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTY4OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2ODJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA3OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjM1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDg0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgyNjFcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2OTYyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM4NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjEzNlwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyNDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNDczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQyMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjgzNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ4MjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTU3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE5Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTk4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMjYyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0MDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODE4NVwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIwNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjA3OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2ODQ5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM3NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjA0NFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIxNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjE1OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDM0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0MDNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY3MjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODkwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NzE3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU0MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5NTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMxMzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAxNjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg5MDBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTc5OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIzNTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0ODRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgyNjFcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTc1OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMjYyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDAyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MTg1XCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4ODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODg7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzc2NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDE5OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjY4MFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTcyOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2ODI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMzgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxOTEzXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk2ODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05Njg7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NzE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMjgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxODIxXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA4NTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjg4N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MjAwXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcyMDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjkxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNTQ4XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI0OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMDUyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjEwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzAzMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUzOTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQyNTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0OTA5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk4MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTk3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MzQ4XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNzk3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk1MTVcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNjMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTg5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTc4MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyMDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzMwOTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NzQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODg0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg4NTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NjgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU4NTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDI0NlwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODk0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg5NTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1Nzk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTM5MlwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTA0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkwNDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDQ2MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4NzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MTg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyOTU2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDcyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTYxOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjE7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3Mjsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTcyOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODA1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjE7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTA7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ1MDsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNDE7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNDE7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2OTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM5OVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTYxOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjE7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzA7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzMDsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYxMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2MTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYxOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE0OyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTQ7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA5XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjE7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDEwOyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDEwOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Mzk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTYxOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGxveWVyX3ByaW5jaXBhbF9hdmVjX3JlZHVjdGlvbl9tZXVibGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJsb3llcl9wcmluY2lwYWxfYXZlY19yw6lkdWN0aW9uX21ldWJsw6lcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTMxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTUzMTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDIxMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MjExOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZWN0ZXVyIGxvY2F0aWYgb3JkaW5haXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIGxvZ2VtZW50X21ldWJsZV9kODQyXzJfIHRoZW5cbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGxveWVyX3ByaW5jaXBhbF9iYXNlX1xuICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLlwiKVxuICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLlwiKSkpIGVsc2UgbG95ZXJfcHJpbmNpcGFsX2Jhc2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MzE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTMxOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU1OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI1OTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC5cIikpXG4gICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yX1xuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjMuMVwiKSlcbiAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy4xXCIpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTU1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1NTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwicGxhZm9uZF9kw6lncmVzc2l2aXTDqV9kODIzXzE2XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU1NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTQ7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjUzOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLjRcIikpXG4gICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yX1xuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNVwiKSlcbiAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTU0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1NDsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBsb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwibG95ZXJfw6lsaWdpYmxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTQ3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU0NzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTgwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xODA2OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiBsb3llcl9wcmluY2lwYWxfYXZlY19yZWR1Y3Rpb25fbWV1YmxlX1xuICAgICAgICAgICAgICAgICBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8pIHRoZW4gcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfIGVsc2VcbiAgICAgICAgICAgICAgbG95ZXJfcHJpbmNpcGFsX2F2ZWNfcmVkdWN0aW9uX21ldWJsZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU0Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NDc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnVlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnXDqVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzM7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NzM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3MzsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg1NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODU1OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBwYXJhbV8pKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NDE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODQxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiBsb3llcl9wcmluY2lwYWxfYXZlY19yZWR1Y3Rpb25fbWV1YmxlX1xuICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNl8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gbG95ZXJfcHJpbmNpcGFsX2F2ZWNfcmVkdWN0aW9uX21ldWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2XykgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG95ZXJfcHJpbmNpcGFsX2F2ZWNfcmVkdWN0aW9uX21ldWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBwbGFmb25kX3N1cHByZXNzaW9uX2Q4MjNfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9kZWdyZXNzaXZpdGVfZDgyM18xNl8pKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBwYXJhbV8pKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTU3Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzM7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NzM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTczOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBhcnRpY2lwYXRpb25fbWluaW1hbGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcInBhcnRpY2lwYXRpb25fbWluaW1hbGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4NVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY2M1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjYzXCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDEzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4NVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUzOVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTM5XCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyNDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMjQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MjRcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcmFwcG9ydF9sb3llcnNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwicmFwcG9ydF9sb3llcnNcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTE7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUxOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTE7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwMzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTAzOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfbW9uX21vbiBsb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG95ZXJfcmVmZXJlbmNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwNzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3llcl9yZWZlcmVuY2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgxOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzgxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfbW9uX21vbiBsb3llcl9lbGlnaWJsZV8gbG95ZXJfcmVmZXJlbmNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTUxOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzQ7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg2NTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NjU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludcOpXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludcOpXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnVlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51w6lcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01NzQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc0OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTc0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X2xveWVyX2VsaWdpYmxlX2Zvcm11bGVfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRhdXhfbG95ZXJfw6lsaWdpYmxlX2Zvcm11bGVcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NDk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTQ5OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NDk7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NDk7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NDk7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU0OTsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NDk7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTQ5OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExMjc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTEyNzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQ1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDQ1XCIpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuM1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwNzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIikpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA2OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU0OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NDk7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXSAodW5lbWJlZGRhYmxlKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODgyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg4MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGNyZHNfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwXCIpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTU3NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzU7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NzU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc1OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfbG95ZXJfZWxpZ2libGVfdGF1eF9hcnJvbmRpXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0YXV4X2xveWVyX8OpbGlnaWJsZV90YXV4X2Fycm9uZGlcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTUwOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTA7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MDsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUwOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExMzQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTEzNDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9sb3llcl9lbGlnaWJsZV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAwMDAuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwMDAwLlwiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0MTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQxOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0IHRhdXhfbG95ZXJfZWxpZ2libGVfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMDAwMC5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwMDAwLlwiKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxNDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0IHRhdXhfbG95ZXJfZWxpZ2libGVfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAwMDAuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAwMDAuXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTUwOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3LDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NzY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgwNzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgwNzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbl9sODMyXzNfKSkgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb25fbDgzMl8zXykpIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01NzY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTc2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTU5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1OTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xOTY1OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2FkZF9yYXRfcmF0IHRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgICB0YXV4X2xveWVyX2VsaWdpYmxlX3RhdXhfYXJyb25kaV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTk7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01Nzc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkxNDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5MTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3LDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBhaWRlX2ZpbmFsZV8pKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01Nzc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc3OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTc3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTY1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2NTsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkzMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xOTMxOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAobGV0IHBhcnRpY2lwYXRpb25fcmVzc291cmNlc18gOiBtb25leSA9XG4gICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZm9yZmFpdGFpcmVfZDgyM18xN18pXG4gICAgICAgICAgICAgICAgICB0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzXylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAobGV0IHBhcnRpY2lwYXRpb25fcmVzc291cmNlc18gOiBtb25leSA9XG4gICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAob19sdF9tb25fbW9uIHBhcnRpY2lwYXRpb25fcmVzc291cmNlc19cbiAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlIHBhcnRpY2lwYXRpb25fcmVzc291cmNlc18pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcGFydGljaXBhdGlvbl9taW5pbWFsZV8gcGFydGljaXBhdGlvbl9yZXNzb3VyY2VzXykpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTY1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2NTsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTcwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU3MDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc4ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNzg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBsb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggaWYgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NzA7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vbiBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNVwiKSkpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NTg7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODU4OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NTg7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODU4OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IGZyYWN0aW9uX2w4MzJfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfcmF0X3JhdCBmcmFjdGlvbl9sODMyXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOThcIikpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04MTc7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MTc7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODE3OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODE3OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAge0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2ID1cbiAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMiA9XG4gICAgICAgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX21pbmltYWxlID1cbiAgICAgICBwYXJ0aWNpcGF0aW9uX21pbmltYWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgIHRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSA9XG4gICAgICAgcGFydGljaXBhdGlvbl9wZXJzb25uZWxsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF99XG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50KSA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50ID1cbiAgbGV0IHR5cGVfbG9nZW1lbnRfZm95ZXJfOiBUeXBlTG9nZW1lbnRGb3llci50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luIGluXG4gIGxldCBkYXRlX2NvbnZlbnRpb25uZW1lbnRfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZWRldmFuY2VfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luIGluXG4gIGxldCBjb25kaXRpb25fMl9kdV84MzJfMjVfOiB1bml0IC0+IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8yNV86IHVuaXQgLT4gZGVjaW1hbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiBpblxuICBsZXQgY29lZmZpY2llbnRfcl9kODMyXzI1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY29lZmZpY2llbnRfcl9kODMyXzI1XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjE4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYxODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTY1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI1NjU7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIxNzI2XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MTg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYyNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU0MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNTQwOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjI1OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X21pbmltYWxfYWlkZV9kODIzXzI0XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwibW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18yNFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYyNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02Mjc7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU1MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNTUxOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjI3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYyNzsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJjb25kaXRpb25fMl9kdV84MzJfMjVcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYxNTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MTU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT4gY29uZGl0aW9uXzJfZHVfODMyXzI1XyAoKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYxNTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MTU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4NTA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODUwOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgbWF0Y2ggdHlwZV9sb2dlbWVudF9mb3llcl9cbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IFR5cGVMb2dlbWVudEZveWVyLkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgIHwgVHlwZUxvZ2VtZW50Rm95ZXIuUmVzaWRlbmNlU29jaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvbnZlbnRpb25uZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICB8IFR5cGVMb2dlbWVudEZveWVyLkZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY29udmVudGlvbm5lbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTApICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgfCBUeXBlTG9nZW1lbnRGb3llci5BdXRyZSBfIC0+IGZhbHNlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYxNTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NDk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NjQ5OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTY0OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02NDk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02NDk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50IGluXG4gIGxldCBwbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInBsYWZvbmRfw6lxdWl2YWxlbmNlX2xveWVyX8OpbGlnaWJsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02MjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjIxOyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjIxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjIxOyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ4Njsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0ODY7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDYxOTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQxNTJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTc3NDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MTc5NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY1ODYyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzEwMzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjczNjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIyNDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDkyOTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTI1NjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjI2OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU5OTU3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjM4ODdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY2NTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAwOTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDY2MzRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDk0NzVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Mjc0MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MDA0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTk2NzVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjIxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjIxOyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUyOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ0NjMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyMzIxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU1Nzg4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTk3MDRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MzYzNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY4NjM3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MTE5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwODE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ3NjMyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwNzg3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQzNjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NzkyOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxNzI3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NDM0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NzQwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ1MDU3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ3ODAyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTA5NTdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDExMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU3NjU3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1OTcxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyMTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNDc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzQ3OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ0NDQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyMTAxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU1NTU1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTk0NTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MzM2OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY4MzUwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MDg5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNjQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ3NDMzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwNTc1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQxMzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NzY4N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxNDY5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NDA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NTc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ0ODY5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ3NjAyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTA3NDRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Mzg4NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU3NDE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1OTQ2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjIxOyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0MzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc4Mzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM3ODM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHBhcmFtXyBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjRfKVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gcGFyYW1fIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNF8pIGVsc2VcbiAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02NDM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQzOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzkzOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTM5OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTM5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5Mzk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBjb25kaXRpb25fMl9kdV84MzJfMjVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzkzOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTM5OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzkzNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTM1OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTM1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5MzU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM5MzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzkzNTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM5Mzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzkzNzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkzNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTM3OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM5Mzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzkzNzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7XG4gICAgICBcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llclwiXSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIpXG4gICAgKHtDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxffSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN1wiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjY7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjcxNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNzE0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8gdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTUwMFwiKVxuICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjY4XCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjI2OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjE3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYxNzsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI1NzU7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgY29uZGl0aW9uXzJfZHVfODMyXzI1XyB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTQyMDkxXCIpXG4gICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzMzkzNDBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxNzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MTc7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiw6lxdWl2YWxlbmNlX2xveWVyX8OpbGlnaWJsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYyMDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MjA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzU3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NTc7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndGVfbW9uX21vbiByZWRldmFuY2VfIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfKVxuICAgICAgICAgICAgICB0aGVuIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfIGVsc2UgcmVkZXZhbmNlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjIwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYyMDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwibl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjE5OyBzdGFydF9jb2x1bW49MjE7IGVuZF9saW5lPTYxOTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPiBuX25vbWJyZV9wYXJ0c19kODMyXzI1XyAoKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYxOTsgc3RhcnRfY29sdW1uPTIxOyBlbmRfbGluZT02MTk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NDE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTQxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MTk7IHN0YXJ0X2NvbHVtbj0yMTsgZW5kX2xpbmU9NjE5OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMzc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTM3OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgb19zdWJfbW9uX21vbiBlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV8gcGFyYW1fKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTYyNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjI0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYyNDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5yZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNzczOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NzM7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3NzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc3MzsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNzczOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NzM7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNzcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NzE7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3NzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc3MTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNzcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NzE7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5uX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdXG4gICAgICAoZW1iZWRfZGVjaW1hbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM3NzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc3NTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc3NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzc1OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNzc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NzU7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSlcbiAgICAoe0NhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV99KSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLm1vbnRhbnQgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2Zvcm11bGVfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9mb3JtdWxlXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjM3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzNzsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYzNzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYzNzsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk1Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzk1MzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fc3ViX3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45XCIpXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM4NjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzg2NTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgKGxldCBkZW5vbWluYXRldXJfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGNvZWZmaWNpZW50X3JfZDgzMl8yNV9cbiAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAobGV0IGRlbm9taW5hdGV1cl8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAoIGlmIChvX2x0X21vbl9tb24gZGVub21pbmF0ZXVyXyAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBkZW5vbWluYXRldXJfKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjAuOTVcIilcbiAgICAgICAgICAgICAgIChvX2Rpdl9tb25fbW9uIGRlbm9taW5hdGV1cl9cbiAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1X1xuICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzNzsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjIyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYyMjsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE0MTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxNDE7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXVxuICAgICAgICAgICAgICAgICAgICBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiBkZXBlbnNlX25ldHRlX21pbmltYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjdfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN19cbiAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02MjI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjIyOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYyMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjI7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjI4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYyODsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc2OTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Mjg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjI4OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9jb2VmZl9hcnJvbmRpXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfY29lZmZfYXJyb25kaVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYzODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02Mzg7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02Mzg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02Mzg7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5NzA7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM4ODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzg4NjsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA1XCIpKVxuICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzODsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDQ7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3OTc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzk3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uIGFpZGVfZmluYWxlXyAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgdGhlbiBhaWRlX2ZpbmFsZV8gZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02NDQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ0OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDQ7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02Mzk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjM5OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjM5OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjM5OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTc2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTc2OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9jb2VmZl9hcnJvbmRpX1xuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfY29lZmZfYXJyb25kaV8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM4ODk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzg4OTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0XG4gICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2NvZWZmX2Fycm9uZGlfXG4gICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOTVcIikpIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45NVwiKVxuICAgICAgICAgICAgICBlbHNlIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2NvZWZmX2Fycm9uZGlfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Mzk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjM5OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXSAodW5lbWJlZGRhYmxlKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0NTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgxMTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4MTE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBjcmRzXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MFwiKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02NDU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ1OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDU7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjQxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY0MTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3MzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzczNjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgICAgZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggaWYgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02NDE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0NjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgzMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4MzI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMjRfKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0NjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NDY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ2OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNSA9XG4gICAgIGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1ID1cbiAgICAgICBjb2VmZmljaWVudF9yX2Q4MzJfMjVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNSA9XG4gICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSA9XG4gICAgICAgZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSA9XG4gICAgICAgcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSA9XG4gICAgICAgZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjUgPVxuICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxffVxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW46IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50KSA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gIGxldCBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiBpblxuICBsZXQgdHlwZV90cmF2YXV4X2xvZ2VtZW50XzogVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW4gaW5cbiAgbGV0IGRhdGVfc2lnbmF0dXJlX3ByZXRfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX3NpZ25hdHVyZV9wcmV0X2luIGluXG4gIGxldCBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gaW5cbiAgbGV0IGRhdGVfZW50cmVlX2xvZ2VtZW50XzogZGF0ZSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW4gaW5cbiAgbGV0IGNvcHJvcHJpZXRlXzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY29wcm9wcmlldGVfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9yODIyXzExXzEzXzE3XzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gaW5cbiAgbGV0IHpvbmVfOiBab25lREhhYml0YXRpb24udCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uem9uZV9pbiBpblxuICBsZXQgdHlwZV9wcmV0XzogVHlwZVByZXQudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV9wcmV0X2luIGluXG4gIGxldCBhbmNpZW5uZXRlX2xvZ2VtZW50XzogTmV1Zk91QW5jaWVuLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmFuY2llbm5ldGVfbG9nZW1lbnRfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMTBfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzEwXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY5NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIzNDQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjM0NDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjBcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5NTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MzJfMTBfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9taW5pbWFsX2FpZGVfZDgzMl8xMFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02OTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njk2OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzU1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIzNTU7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDIxXCI7IFwiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njk2OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xMV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzExXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY5ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTg7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIzNjQ7IHN0YXJ0X2NvbHVtbj0xNTsgZW5kX2xpbmU9MjM2NDsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjJcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjExMTMzXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTg7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE4XzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xOFwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY5OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTk7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI0NTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjQ1NzsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjZcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjE2LjI1XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTk7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDA7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIzNzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjM3OTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjNcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjAwODVcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzAwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwMDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfdHJhbmNoZV9pbmZlcmlldXJlX2Q4MzJfMTVfMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRhdXhfdHJhbmNoZV9pbmbDqXJpZXVyZV9kODMyXzE1XzFcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzAxOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzgwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIzODA7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDIzXCI7IFwiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIwOFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzAxOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdGF1eF90cmFuY2hlX3N1cGVyaWV1cmVfZDgzMl8xNV8xXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidGF1eF90cmFuY2hlX3N1cMOpcmlldXJlX2Q4MzJfMTVfMVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDI7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIzODE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjM4MTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjNcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuNDE2XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcwMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDI7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidGF1eF9mcmFuY3NfdmVyc19ldXJvc1wiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDM7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIHByZW1pZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSw6hnbGVtZW50IChDRSkgbsKwMjg2Ni85OCBkdSBjb25zZWlsIGR1IDMxIGTDqWNlbWJyZSAxOTk4IGNvbmNlcm5hbnQgbGVzIHRhdXggZGUgY29udmVyc2lvbiBlbnRyZSBsJ2V1cm8gZXQgbGVzIG1vbm5haWVzIGRlcyDDiXRhdHMgbWVtYnJlcyBhZG9wdGFudCBsJ2V1cm9cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2Rpdl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjYuNTU5NTdcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDM7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyODE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI4MTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyODE7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzI4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjgxOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMjgzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyODM7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI4Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjgzOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzI4Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjgzOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF9ub21icmVfcGFydHNcIjsgXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCJdXG4gICAgKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiOyBcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lcIl1cbiAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGUpXG4gICAgKHtDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICAgQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF99KSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzExXzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUubl9ub21icmVfcGFydHNfZDgzMl8xMSBpblxuICBsZXQgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xN18zXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xN18zXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njk3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5NzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQzOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNDM5OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNVwiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTgpICgxMCkgKDEpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIyNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjM0XCIpKVxuICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIGFtZWxpb3JlX3Bhcl9vY2N1cGFudF8gLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggYW1lbGlvcmVfcGFyX29jY3VwYW50X1xuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgIHwgQW1lbGlvcmVQYXJPY2N1cGFudC5PdWkgXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzJcIilcbiAgICAgICAgICAgICAgICAgfCBBbWVsaW9yZVBhck9jY3VwYW50Lk5vbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OCkgKDEwKSAoMSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMjZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjM0XCIpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcxOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03MTk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTcxOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03MTk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NzE5OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICh7Q29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVffSkpKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubW9udGFudCBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MzJfMTBfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MzJfMTBcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njk0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02OTQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY5NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njk0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDEyOyBzdGFydF9jb2x1bW49NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0MTI7IGVuZF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNFwiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHJvcHJpZXRlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODA1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02OTQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUxNzsgc3RhcnRfY29sdW1uPTc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MTc7IGVuZF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Byb3ByaWV0ZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY5NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njk0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzEwOyBzdGFydF9jb2x1bW49NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzMTA7IGVuZF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHJvcHJpZXRlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzOTlcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02OTQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzMzM7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzMzM7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOVwiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02OTQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4Mzsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDgzOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI3Njsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI3NjsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE5XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzOTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcxMzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxMzA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTMwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBwYXJhbV8gbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzEwXylcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHBhcmFtXyBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMTBfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcxMzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcxMzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfZDgzMl8xOF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXZlY19kODMyXzE4XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY5Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTM7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjkzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjkzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU5NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU5NTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU4Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNTg3OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfXG4gICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMThfKSkgdGhlblxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX1xuICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE4XykgZWxzZVxuICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjkzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfOiBkYXRlIC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBkYXRlKSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgwNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgyMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gYW1lbGlvcmVfcGFyX29jY3VwYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1lbGlvcmVfcGFyX29jY3VwYW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBbWVsaW9yZVBhck9jY3VwYW50Lk91aSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBbWVsaW9yZVBhck9jY3VwYW50Lk5vbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODY5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk3MTAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxMDczMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2NTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA4NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MTUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk0NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NjAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjM5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2MTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNzM2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA4MjAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDI4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwOTg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NzgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDI1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDk2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTgwMTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTA2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTM5NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NzYwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk1NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTI3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTMxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAwKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTgxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM5MDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzk5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTc2ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMjgwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ4ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NTAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTc5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2NDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTU5NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5MjUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI1NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0MjIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNzEyMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMDIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxMzI4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTU5MzAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODU4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOTM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDEpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMDEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDE0MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4MjcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNzg2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE1MDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTE0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTY2NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5OTkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMzMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjI2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjMwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDApICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAxKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjExMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk0NDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjc3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTQzNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3MjkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAyMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjkzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEzNDEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjA5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NzcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI2MzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAxKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDI1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ0MzAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODYxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTgwNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNzUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU0MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2ODcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDIzMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNTkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI5Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI5NjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDg3MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzI0M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDM2MTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MzcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc1NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMxNDhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NzY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTYxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1NzE4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwODQwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUxMjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzI5OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDEpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2MzAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTY3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDUzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTc1MDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDQ3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTM1NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2MjgwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg5OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjcxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzU4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzYyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0ODQ5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5OTg3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTEyNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUxMzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjE1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjY3OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEyMDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA2ODdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ4MThcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4OTQ5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzOTE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzOTU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMjQxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3Njg5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDEzN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY0NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzg3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzU1NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzkyMzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1Njc3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYwMjdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEyMTBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MzkzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTE4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0Mjg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MTQ3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwMzQ3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTU0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjQxN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjk5OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE1ODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA5MzVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjUxMTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5Mjk3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE4MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NTc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NjE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNSkgKDgpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNjE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4MTQxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDY2NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY1MjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODIxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzk1OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk3MDRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NzQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYzMzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE1ODRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2ODI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTI0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0OTA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNSkgKDgpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1NDQ5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNzExXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjY4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzMyM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE5NjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NjM3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjExODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU0MTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NjQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDIzMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1Mjc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNSkgKDgpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjE4NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODgyN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDU0NjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NjQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjg3MjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ1NzBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwNDE4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTg0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2ODEzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyMTUyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ5MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUzMzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTU2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTYwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg4KSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDYpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU5MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEyNjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NjIxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTM1N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDk0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3ODE0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjUzNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ3MjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTU2N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTg3NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzAxODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU4OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5MzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA2KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzA4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTkxNFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDY3NDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2ODI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk1MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1MzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxNTUwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjAxMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3NTY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzMDUyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODU0MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU0ODhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjIyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjI2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDYpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA3KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2NjMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyMTM5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzY0NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU1MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzc0MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODU5M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM0NDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0ODUyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIxNzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY1OThcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMDI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQyOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NTk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDgpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM5OTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEwMTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ4MDMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzAxNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwMzQxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NTE5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjY5N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxNzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODMyNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzk2NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk2MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NjM5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY4ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY5MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA3KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzM2N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzAyNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg2ODVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NjU5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQzOTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjkzODJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0MzY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDk4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyNzgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3MzMyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTg4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ1NTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzIxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzI1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDgpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MDAyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyMjI2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0OTQ0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjcyMjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTIzNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzU5NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDM5NTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MzYwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjkxNjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ5NjZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwNzczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTgwNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3NTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3NTg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDkpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjgxNzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5ODI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTgyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MTE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwMjQ5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTM4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUxMzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzQ1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODEzOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzI4MjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0Njg0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc4Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTc5MTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTExNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjM2MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDk2MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MjQ2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEzMzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc3MTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0MDk4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjM4MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5MjU0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MDc4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDkwM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4MjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODIwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODI0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDkpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4MjY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0MTA5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTk1M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4NDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTE5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDM0NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU0OTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MTQ5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM1MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjgyMjhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyOTI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDY5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NTM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NTc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI4MjdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUwMTUzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzMyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNjgxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4MTMxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDU4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY0NTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTU3NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTQ2NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzNTNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1ODg4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg4Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg5MDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODU3NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDQ4NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDAzOTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1OTA5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU0NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA2ODBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1ODg1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTIwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNzg5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4NTM5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzI5MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ3NTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTE5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTIzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1ODU1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMjU1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MDY1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjczOTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTk5OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODUxMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDUwMjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NTE1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk4NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU4MTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxNzY3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTk0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5NTI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5NTY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjg4NjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ4MjlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwNzk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTk2OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1NzI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwOTg3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjI0NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyNThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDAyN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODgyNFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM2MjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0Nzk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk4NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk4OTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NjI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0MTg1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MTc0NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjc1NThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjY4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTM0MFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDU5OTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NjU1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA1MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY1ODlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyNjY1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjA3NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwMTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwMjI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTQ4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTU3OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE2NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MDk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYyODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2NTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MDIzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTM3MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NTQ0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NDQ0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDM0NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ5MDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDUxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDU1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjgzNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDQzN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTIwMzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3NjAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzI4NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk1NjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ2MjU5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjY5M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNjg4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2Nzk4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjkwOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxMTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDg0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDg4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTY1MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTc4MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE5MTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTMxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY0MzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE4MzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MjM0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTQwMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0Njg0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NjEyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDU0MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ5MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTE3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTIxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjg2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDQ3M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTIwODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3NjA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzI4OThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk1OTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ2Mjk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjY5OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNzEzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2ODI3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0Mjk0MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxMTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTUwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTU0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTY3NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTgxMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE5NDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTM2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY0NTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE4NThcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MjY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTQwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NzA0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NjM2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDU3MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ5MzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTgzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTg3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzE0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDgwN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTI0NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3NjY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMxNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk4OTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ2NjQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjc0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwOTQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MTAzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzI2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxNjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjE2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjIwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTg5N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjA3OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDIyNjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY2NTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzIwOTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NTQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTQ0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0ODg5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5ODU4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDgyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ5NzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjQ5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjUyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MjUyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0OTQxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MjYyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjc2ODdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzI0NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDAxM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDY3ODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NzY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEwMzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcyMTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMzk0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjE3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyODE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyODQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTk4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjE4N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDIzODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MjAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY3MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzIxOTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NjU2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTQ2M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0OTY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5OTQ4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDkzNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ5ODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02MTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MjE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA4NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MTUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk0NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODYwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIzOTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjE4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3MzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDgyMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY2Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY2NTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjc4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAyNTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzcyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0OTYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODAxMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTM5NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NzYwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk1NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg0MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMDAwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYwMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzgwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjQyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk3NzAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzEyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE1MzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODM3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNDIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc1MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTc1MjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0ODEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNzg3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwOTMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTMyMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE1ODkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg1ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxMjMzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTQ3OTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNzI1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0zO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IGZhbHNlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8xMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02ODU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njg1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI3OTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njg1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjkwOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5MDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTMxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1MzE7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTkpICg2KSAoMzApKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbWVuc3VhbGl0ZV9wcmluY2lwYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MzJfMTBfKSBwYXJhbV8pKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1NDI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTQyOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gb19zdWJfbW9uX21vbiBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfIHBhcmFtXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02OTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjkwOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjkwOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iYXNlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInBsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zX2Jhc2VcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjgyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY4MjsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODI7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODI7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzY2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzY2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKGxldCBwbGFmb25kX3NpZ25hdHVyZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZGF0ZSkgZGF0ZV9zaWduYXR1cmVfcHJldF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIChsZXQgcGxhZm9uZF9lbnRyZWVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2RhdGUpIGRhdGVfZW50cmVlX2xvZ2VtZW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBpZiAob19sdF9tb25fbW9uIHBsYWZvbmRfc2lnbmF0dXJlXyBwbGFmb25kX2VudHJlZV8pXG4gICAgICAgICAgICAgICAgICAgICAgIHRoZW4gcGxhZm9uZF9lbnRyZWVfIGVsc2UgcGxhZm9uZF9zaWduYXR1cmVfKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzQ2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMzNDY7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl1cbiAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zXykgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiOyBcImlucHV0XCJdIChlbWJlZF9kYXRlKVxuICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF8pKSkpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY4Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02ODI7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM0ODc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzQ4NzsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0ODc7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNDg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0ODc7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM0ODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzQ4NjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0ODY7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzQ4Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNDg2OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5uX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdXG4gICAgICAoZW1iZWRfZGVjaW1hbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM0ODk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzQ4OTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDg5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0ODk7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzQ4OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNDg5OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSlcbiAgICAoe0NhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV99KSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLm1vbnRhbnQgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX2Zvcm11bGVfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9mb3JtdWxlXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njg3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY4NzsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTk0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMxOTQ7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19zdWJfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpXG4gICAgICAgICAgICAgIChvX2Rpdl9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMTFfXG4gICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY4Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02ODc7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjkxOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU1Mzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1NTM7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgICBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiBkZXBlbnNlX25ldHRlX21pbmltYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcmVzc291cmNlc19tZW5hZ2VfYXZlY19kODMyXzE4X1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE3XzNfKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcmVzc291cmNlc19tZW5hZ2VfYXZlY19kODMyXzE4X1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE3XzNfKVxuICAgICAgICAgICAgICAgICAgICAgICBkZXBlbnNlX25ldHRlX21pbmltYWxlXykgZWxzZVxuICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTY5MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTE7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTE7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2NvcHJvcHJpZXRhaXJlc186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJwbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM19jb3Byb3ByacOpdGFpcmVzXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY4Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02ODM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjgzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjgzOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4MzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjkwOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyOTA7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvcHJvcHJpZXRlXyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2Jhc2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iYXNlXykpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5Nzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk3OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb3Byb3ByaWV0ZV8gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2Jhc2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2Jhc2VfKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM5Mzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzOTM7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjRcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWYgY29wcm9wcmlldGVfIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iYXNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2Jhc2VfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjgzOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbWVuc3VhbGl0ZV9taW5pbWFsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtZW5zdWFsaXTDqV9taW5pbWFsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02ODA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjgwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4MDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4MDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0MjY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0Mzg7IGVuZF9jb2x1bW49Nzc7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuUGFzRGVUcmF2YXV4IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlBhc0RlVHJhdmF1eCBfIC0+IHRydWUpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIChsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXyA6IGRlY2ltYWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9tb24gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXylcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKGxldCBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfIDogZGVjaW1hbCA9XG4gICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X21vbiBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAob190b21vbmV5X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMTVfMV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMV8pKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF90cmFuY2hlX3N1cGVyaWV1cmVfZDgzMl8xNV8xXykgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfcmF0X3JhdCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X3RyYW5jaGVfaW5mZXJpZXVyZV9kODMyXzE1XzFfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF90cmFuY2hlX2luZmVyaWV1cmVfZDgzMl8xNV8xXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4MDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4MDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0ODE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0ODE7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuUGFzRGVUcmF2YXV4IF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjgwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY4MDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX2NvZWZmX2Fycm9uZGlfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9jb2VmZl9hcnJvbmRpXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njg4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY4ODsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjEwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyMTA7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA1XCIpKVxuICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njg4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY4ODsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MTQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE0OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE0NDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNDQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb24gYWlkZV9maW5hbGVfIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIGFpZGVfZmluYWxlXyBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTcxNDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MTQ7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcxNDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MTQ7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtZW5zdWFsaXRlX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1lbnN1YWxpdMOpX8OpbGlnaWJsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02Nzk7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Njc5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMxMDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzEwNTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfXG4gICAgICAgICAgICAgICAgIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfY29wcm9wcmlldGFpcmVzXykgdGhlblxuICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2NvcHJvcHJpZXRhaXJlc18gZWxzZVxuICAgICAgICAgICAgICBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Nzk7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Njc5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9zZXVpbFwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY4OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02ODk7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzIxMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjEzOyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdFxuICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9jb2VmZl9hcnJvbmRpX1xuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOTVcIilcbiAgICAgICAgICAgICAgZWxzZSBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9jb2VmZl9hcnJvbmRpXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njg5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY4OTsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MTU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE1OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE1ODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNTg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBjcmRzXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MFwiKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT03MTU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE1OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MTU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE1OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcxMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03MTE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzA4NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMDg1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbWVuc3VhbGl0ZV9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODMyXzEwXylcbiAgICAgICAgICAgICAgICAgICAgIG1lbnN1YWxpdGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxfKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggaWYgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcxMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03MTE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxNjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MTY7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTc4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE3ODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9taW5pbWFsX2FpZGVfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBhaWRlX2ZpbmFsZV8pKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT03MTY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE2OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MTY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE2OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX2VsaWdpYmxlID1cbiAgICAgbWVuc3VhbGl0ZV9lbGlnaWJsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUubWVuc3VhbGl0ZV9taW5pbWFsZSA9XG4gICAgICAgbWVuc3VhbGl0ZV9taW5pbWFsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTAgPVxuICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX3NldWlsXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF99XG5cbmxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW46IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCkgOiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID1cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tZW5hZ2VfaW4gaW5cbiAgbGV0IGRlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfOiB1bml0IC0+IGJvb2wgPSBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbiBpblxuICBsZXQgY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfOiB1bml0IC0+IGJvb2wgPSBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luIGluXG4gIGxldCBjb25kaXRpb25fcHJldF86IFByZXQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcImNvbmRpdGlvbl9wcsOqdFwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogUHJldC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0yOTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MjkyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTI5Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uX3BldXBsZW1lbnRfbG9nZW1lbnRfbDgyMl8xMF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9wZXVwbGVtZW50X2xvZ2VtZW50X2w4MjJfMTBcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzAxOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzAxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzZXVpbF9sODIyXzNfcGFydHNfcHJvcHJpZXRlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwic2V1aWxfbDgyMl8zX3BhcnRzX3Byb3ByacOpdMOpXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzExOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxMTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXUgYsOpbsOpZmljaWFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTE7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc2V1aWxfbDgyMl8zX3BhcnRzX3VzdWZydWl0XzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJzZXVpbF9sODIyXzNfcGFydHNfdXN1ZnJ1aXRcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMxMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTI7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1IGLDqW7DqWZpY2lhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzEyOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNldWlsX2w4MjJfNV9wYXRyaW1vaW5lXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwic2V1aWxfbDgyMl81X3BhdHJpbW9pbmVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzEzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05Mjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTI3OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBQcmlzZSBlbiBjb21wdGUgZHUgcGF0cmltb2luZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDAwMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTM7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdXN1ZnJ1aXRfb3VfcHJvcHJpZXRlX2ZhbWlsbGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJ1c3VmcnVpdF9vdV9wcm9wcmnDqXTDqV9mYW1pbGxlXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzEwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxMDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0NjsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX29yXG4gICAgICAgICAgICAgIChtYXRjaCAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5wcm9wcmlldGFpcmUpXG4gICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICB8IFBhcmVudE91QXV0cmUuRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzIHBhcnRzXyAtPlxuICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5BdXRyZSBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAobWF0Y2ggKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQudXN1ZnJ1aXQpXG4gICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICB8IFBhcmVudE91QXV0cmUuRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzIHBhcnRzXyAtPlxuICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5BdXRyZSBfIC0+IGZhbHNlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzEwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxMDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbm9uX291dmVydHVyZV9sODIyXzlfZGVjZW5jZV9sb2dlbWVudF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOV9kZWNlbmNlX2xvZ2VtZW50XCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5OTsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk5OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjA7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjA7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubG9nZW1lbnRfZGVjZW50X2w4OV80NjIpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Mjk5OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0yOTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Mjk5OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOFwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTI5ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTg7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ2OyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ2OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmNvbmRpdGlvbl9yYXR0YWNoZV9mb3llcl9maXNjYWxfcGFyZW50X2lmaSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mjk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTI5Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0yOTc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPiBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV8gKCkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5Nzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2MzsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBub21icmVfcGVyc29ubmVzX2xvZ2VtZW50XyA6IGludGVnZXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9taW5pbWFsZV9zYW5zX3NldWlsX21fY2FycmVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50ZWdlciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuUGFjc2VzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxNlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiOVwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9taW5pbWFsZV9zYW5zX3NldWlsX21fY2FycmVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjcwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiOFwiKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnN1cmZhY2VfbV9jYXJyZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNzBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnN1cmZhY2VfbV9jYXJyZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfbWluaW1hbGVfc2Fuc19zZXVpbF9tX2NhcnJlc18pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk3OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0yOTc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9sb2dlbWVudF9yw6lzaWRlbmNlX3ByaW5jaXBhbGVcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0yOTQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Mjk0OyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT4gY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXyAoKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0yOTQ7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTQ7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDEgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUsOoZ2xlcyBkZSBub24tY3VtdWxcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogUHJpbmNpcGVzIGfDqW7DqXJhdXhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnJlc2lkZW5jZV9wcmluY2lwYWxlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NDsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mjk0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTI5NDsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2RvdF9kYXRlX25haXNzYW5jZV9hc3N1cmVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgXCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlLmRhdGVfbmFpc3NhbmNlX2Fzc3Vyw6lcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTIzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyMzsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDE2MS0xNy0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAxIDogSW5mb3JtYXRpb24gZXQgc2ltcGxpZmljYXRpb24gZGVzIGTDqW1hcmNoZXMgZGVzIGFzc3Vyw6lzLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUk6IFRpdHJlIElJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyByZWxhdGl2ZXMgYXUgZmluYW5jZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTIzOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTYxLTE3LTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDEgOiBJbmZvcm1hdGlvbiBldCBzaW1wbGlmaWNhdGlvbiBkZXMgZMOpbWFyY2hlcyBkZXMgYXNzdXLDqXMuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSTogVGl0cmUgSUlJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIHJlbGF0aXZlcyBhdSBmaW5hbmNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfLkRlbWFuZGV1ci5kYXRlX25haXNzYW5jZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTIzOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTYxLTE3LTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDEgOiBJbmZvcm1hdGlvbiBldCBzaW1wbGlmaWNhdGlvbiBkZXMgZMOpbWFyY2hlcyBkZXMgYXNzdXLDqXMuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSTogVGl0cmUgSUlJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIHJlbGF0aXZlcyBhdSBmaW5hbmNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVwiO1xuICAgICAgXCJPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZVwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVcIjtcbiAgICAgIFwiT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVcIl0gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSlcbiAgICAoe091dmVydHVyZURyb2l0c1JldHJhaXRlSW4uZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX2luID1cbiAgICAgICAgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX30pKSkgaW5cbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfZG90X2FnZV9vdXZlcnR1cmVfZHJvaXRfOiBkdXJhdGlvbiA9IHJlc3VsdF8uT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUuYWdlX291dmVydHVyZV9kcm9pdCBpblxuICBsZXQgcGF0cmltb2luZV90b3RhbF9kZW1hbmRldXJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJwYXRyaW1vaW5lX3RvdGFsX2RlbWFuZGV1clwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMwOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDk7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI0Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNDY7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAoKGRlbWFuZGV1cl8uRGVtYW5kZXVyLnBhdHJpbW9pbmUpLlBhdHJpbW9pbmUucHJvZHVpc2FudF9yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQpXG4gICAgICAgICAgICAgICgoZGVtYW5kZXVyXy5EZW1hbmRldXIucGF0cmltb2luZSkuUGF0cmltb2luZS5uZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzA5OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9uYXRpb25hbGl0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiY29uZGl0aW9uX25hdGlvbmFsaXTDqVwiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MjkzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5MzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjkzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjkzOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExMDsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZGVtYW5kZXVyXy5EZW1hbmRldXIubmF0aW9uYWxpdGUpXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE5hdGlvbmFsaXRlLkZyYW5jYWlzZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTmF0aW9uYWxpdGUuRXRyYW5nZXJlIGNvbmRpdGlvbnNfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbnNfLkNvbmRpdGlvbnNFdHJhbmdlcnMuc2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc2VjdXJpdGVfc29jaWFsZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI5Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTI5Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9pbmRpdmlkdWVsX2w4MTVfOV9zZWN1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcInBsYWZvbmRfaW5kaXZpZHVlbF9sODE1Xzlfc8OpY3VcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzE3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxNzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgxNS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24gZGUgbCdhbGxvY2F0aW9uIGRlIHNvbGlkYXJpdMOpIGF1eCBwZXJzb25uZXMgw6Jnw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IEFsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJIDogQWxsb2NhdGlvbnMgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWxsb2NhdGlvbnMgYXV4IHBlcnNvbm5lcyDDomfDqWVzIC0gQWxsb2NhdGlvbiBhdXggYWR1bHRlcyBoYW5kaWNhcMOpcyAtIEFpZGVzIMOgIGwnZW1wbG9pIHBvdXIgbGEgZ2FyZGUgZGVzIGpldW5lcyBlbmZhbnRzIC0gUHJvdGVjdGlvbiBjb21wbMOpbWVudGFpcmUgZW4gbWF0acOocmUgZGUgc2FudMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoNCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI5OTk4NDBcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzNTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODE1LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbiBkZSBsJ2FsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogQWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIEkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXMgLSBBbGxvY2F0aW9uIGF1eCBhZHVsdGVzIGhhbmRpY2Fww6lzIC0gQWlkZXMgw6AgbCdlbXBsb2kgcG91ciBsYSBnYXJkZSBkZXMgamV1bmVzIGVuZmFudHMgLSBQcm90ZWN0aW9uIGNvbXBsw6ltZW50YWlyZSBlbiBtYXRpw6hyZSBkZSBzYW50w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwNDE4NDBcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0MDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODE1LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbiBkZSBsJ2FsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogQWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIEkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXMgLSBBbGxvY2F0aW9uIGF1eCBhZHVsdGVzIGhhbmRpY2Fww6lzIC0gQWlkZXMgw6AgbCdlbXBsb2kgcG91ciBsYSBnYXJkZSBkZXMgamV1bmVzIGVuZmFudHMgLSBQcm90ZWN0aW9uIGNvbXBsw6ltZW50YWlyZSBlbiBtYXRpw6hyZSBkZSBzYW50w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICg0KSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwODM4NDBcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNpcmN1bGFpcmUgZGUgbGEgQ05BViAyMDIzLTMgZHUgMDkvMDEvMjAyMiBcXFwiUmV2YWxvcmlzYXRpb24gw6AgY29tcHRlciBkdSAxZXIgamFudmllciAyMDIzXFxcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudHMgcmV2YWxvcmlzw6lzIGRlIGwnYWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDI0KSAoMSkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTE1MzMwMlwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05MTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2lyY3VsYWlyZSBkZSBsYSBDTkFWIDIwMjItMyBkdSAxMS8wMS8yMDIyIFxcXCJSZXZhbG9yaXNhdGlvbiDDoCBjb21wdGVyIGR1IDFlciBqYW52aWVyIDIwMjJcXFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50cyByZXZhbG9yaXPDqXMgZGUgbCdhbGxvY2F0aW9uIGRlIHNvbGlkYXJpdMOpIGF1eCBwZXJzb25uZXMgw6Jnw6llc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMTAwMTQ0XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNpcmN1bGFpcmUgZGUgbGEgQ05BViAyMDIxLTEgZHUgMTEvMDEvMjAyMSBcXFwiUmV2YWxvcmlzYXRpb24gw6AgY29tcHRlciBkdSAxZXIgamFudmllciAyMDIxXFxcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudHMgcmV2YWxvcmlzw6lzIGRlIGwnYWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA4ODE3NVwiKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aWVyc186IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aWVyc1wiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTI5Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTY7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5sb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLk5vbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy5PdWkgcGVyc29ubmVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV8uUGVyc29ubmVTb3VzTG9jYXRpb24uZGF0ZV9uYWlzc2FuY2VfcGVyc29ubmVfc291c19sb2NhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgzMCkgKDApICgwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV8uUGVyc29ubmVTb3VzTG9jYXRpb24uY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LmxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy5Ob24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLk91aSBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mjk2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfbW9kZV9vY2N1cGF0aW9uXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiY29uZGl0aW9uX2xvZ2VtZW50X21vZGVfb2NjdXBhdGlvblwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTI5NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTU7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTU7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzc7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIHVzdWZydWl0X291X3Byb3ByaWV0ZV9mYW1pbGxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnByb3ByaWV0YWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXJlbnRPdUF1dHJlLkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlcyBwYXJ0c18gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydHNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXJlbnRPdUF1dHJlLkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXVpbF9sODIyXzNfcGFydHNfcHJvcHJpZXRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQudXN1ZnJ1aXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5EZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgcGFydHNfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V1aWxfbDgyMl8zX3BhcnRzX3VzdWZydWl0XykpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXN1ZnJ1aXRfb3VfcHJvcHJpZXRlX2ZhbWlsbGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQucmVzaWRlbmNlX3ByaW5jaXBhbGUpXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5NTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mjk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5NTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fb3V2ZXJ0dXJlX2w4MjJfMTBfcGV1cGxlbWVudF9sb2dlbWVudF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9vdXZlcnR1cmVfbDgyMl8xMF9wZXVwbGVtZW50X2xvZ2VtZW50XCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzAwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMDsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAwOyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODU7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODU7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDA7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDA7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWdlX2wxNjFfMTdfMl9zZWN1XzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiw6JnZV9sMTYxXzE3XzJfc8OpY3VcIl1cbiAgICAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE2OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyNTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDE2MS0xNy0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAxIDogSW5mb3JtYXRpb24gZXQgc2ltcGxpZmljYXRpb24gZGVzIGTDqW1hcmNoZXMgZGVzIGFzc3Vyw6lzLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUk6IFRpdHJlIElJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyByZWxhdGl2ZXMgYXUgZmluYW5jZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfYWdlX291dmVydHVyZV9kcm9pdF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTY7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGF0cmltb2luZV9wcmlzX2VuX2NvbXB0ZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcInBhdHJpbW9pbmVfcHJpc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg2OyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4NjsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5lc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjc7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2OTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGJvb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXN0YXRpb25fOiBQcmVzdGF0aW9uUmVjdWUudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX29yIGFjY19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBwcmVzdGF0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcHJlc3RhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnByZXN0YXRpb25zX3JlY3VlcykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk0NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTQ0OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogUHJpc2UgZW4gY29tcHRlIGR1IHBhdHJpbW9pbmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uIHBhdHJpbW9pbmVfdG90YWxfZGVtYW5kZXVyX1xuICAgICAgICAgICAgICAgICAgICAgICBzZXVpbF9sODIyXzVfcGF0cmltb2luZV8pKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKGRlbWFuZGV1cl8uRGVtYW5kZXVyLnBhdHJpbW9pbmUpLlBhdHJpbW9pbmUubmVfcHJvZHVpc2FudF9wYXNfcmV2ZW51X3BlcmlvZGVfcjgyMl8zXzNfcjgyMl80KSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTA7IHN0YXJ0X2NvbHVtbj0zMzsgZW5kX2xpbmU9MjUwOyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHBhdHJpbW9pbmVfdG90YWxfZGVtYW5kZXVyX1xuICAgICAgICAgICAgICAgICBzZXVpbF9sODIyXzVfcGF0cmltb2luZV8pIHRoZW4gcGF0cmltb2luZV90b3RhbF9kZW1hbmRldXJfXG4gICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfbG9nZW1lbnRfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfbG9nZW1lbnRcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMwMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDI7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgY29uZGl0aW9uX25vbl9vdXZlcnR1cmVfbDgyMl84X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOV9kZWNlbmNlX2xvZ2VtZW50XykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZCBjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZCBjb25kaXRpb25fbG9nZW1lbnRfbW9kZV9vY2N1cGF0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX2xvZ2VtZW50X2xvY2F0aW9uX3RpZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fb3V2ZXJ0dXJlX2w4MjJfMTBfcGV1cGxlbWVudF9sb2dlbWVudF8pKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhZ2VfbDM1MV84XzFfc2VjdV86IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIsOiZ2VfbDM1MV84XzFfc8OpY3VcIl1cbiAgICAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE1OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDM1MS04XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiA1IDogVGF1eCBldCBtb250YW50IGRlIGxhIHBlbnNpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBPdXZlcnR1cmUgZHUgZHJvaXQsIGxpcXVpZGF0aW9uIGV0IGNhbGN1bCBkZXMgcGVuc2lvbnMgZGUgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWIDogQXNzdXJhbmNlIHZpZWlsbGVzc2UgLSBBc3N1cmFuY2UgdmV1dmFnZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIElJSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IGFzc3VyYW5jZXMgc29jaWFsZXMgZXQgw6AgZGl2ZXJzZXMgY2F0w6lnb3JpZXMgZGUgcGVyc29ubmVzIHJhdHRhY2jDqWVzIGF1IHLDqWdpbWUgZ8OpbsOpcmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfZHVyX2R1ciBhZ2VfbDE2MV8xN18yX3NlY3VfXG4gICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICg1KSAoMCkgKDApKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzE1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxNTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqVwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyMDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMjA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyMDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyMDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMzMDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzMyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX25hdGlvbmFsaXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX2xvZ2VtZW50X21vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfbG9nZW1lbnRfKSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzIwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyMDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzIwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyMDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fMl9yODIzXzRfOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcImNvbmRpdGlvbl8yX3I4MjNfNFwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTczOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExODk7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgcGFyZW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5wYXJlbnRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBhcmVudGUuQXNjZW5kYW50ICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLnJlc3NvdXJjZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfaW5kaXZpZHVlbF9sODE1Xzlfc2VjdV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuMjVcIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmRhdGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlX2wzNTFfOF8xX3NlY3VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLnRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmRhdGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDY1KSAoMCkgKDApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuZGF0ZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VfbDE2MV8xN18yX3NlY3VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5iZW5lZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3NlY3UpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjQ7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0zMjQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzI0OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMyNDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMjQ7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX8OgX2NoYXJnZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAzOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIxMzsgc3RhcnRfY29sdW1uPTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMTk7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIHBhcmVudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmluY2FwYWNpdGVfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5yZXNzb3VyY2VzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9pbmRpdmlkdWVsX2w4MTVfOV9zZWN1X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjI1XCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTk0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25fMl9yODIzXzRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCI7IFwib3V0cHV0XCJdIChlbWJlZF9ib29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiXSBjb25kaXRpb25fMl9yODIzXzRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX3BlcnNvbm5lX2FfY2hhcmdlKSBwYXJhbV8pKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE0OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTUyOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMy00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5kYXRlX2RlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgyMSkgKDApICgwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgcGFyZW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTMwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IFBlcnNvbm5lQUNoYXJnZS50IGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJwZXJzb25uZXNfw6BfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX3BlcnNvbm5lX2FfY2hhcmdlKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMwNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExMzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzNzsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMy00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fZmlsdGVyXG4gICAgICAgICAgICAgIChmdW4gKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgIFwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX8OgX2NoYXJnZVwiXVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICBcInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV/DoF9jaGFyZ2VcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgIFwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX8OgX2NoYXJnZVwiXVxuICAgICAgICAgICAgICAgICBwcmlzZV9lbl9jb21wdGVfcGVyc29ubmVfYV9jaGFyZ2VfKVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICBcInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV/DoF9jaGFyZ2VcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UpIHBlcnNvbm5lX2FfY2hhcmdlXykpKSkpKSlcbiAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMwNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IGRlY2ltYWwgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyMjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMjI7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzM2OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX21hcFxuICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLlBhc0RlR2FyZGVBbHRlcm5lZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgY29lZmZfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmXylcbiAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpXG4gICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5QYXNEZUdhcmRlQWx0ZXJuZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5HYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzIyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyMjsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCJdIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzIxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyMTsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMzNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMzQ7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gb19sZW5ndGggcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzIxOyBlbmRfY29sdW1uPTU0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfcmF0X3JhdCBzZXVpbF9sODIyXzNfcGFydHNfdXN1ZnJ1aXRfXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMlwiKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTgyOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTgyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODI7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfcmF0X3JhdCBzZXVpbF9sODIyXzNfcGFydHNfcHJvcHJpZXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjJcIikpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4MTsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4MTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTgxOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTgxOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIHtFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5kYXRlX2NvdXJhbnRlID0gZGF0ZV9jb3VyYW50ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmVsaWdpYmlsaXRlID0gZWxpZ2liaWxpdGVfO1xuICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgPVxuICAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfO1xuICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb25kaXRpb25fMl9yODIzXzQgPVxuICAgICAgIGNvbmRpdGlvbl8yX3I4MjNfNF99XG5cbmxldCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IChyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luOiBSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCkgOiBSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPVxuICBsZXQgcmVzc291cmNlc19kZW1hbmRldXJfOiBtb25leSA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnJlc3NvdXJjZXNfZGVtYW5kZXVyX2luIGluXG4gIGxldCByZXNzb3VyY2VzX2NvbmpvaW50XzogbW9uZXkgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX2NvbmpvaW50X2luIGluXG4gIGxldCBwZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyXzogUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5ID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl9pbiBpblxuICBsZXQgZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfOiBib29sID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW4gaW5cbiAgbGV0IGNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfOiBib29sID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uam9pbnRfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9pbiBpblxuICBsZXQgcGVyc29ubmVzX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQgYXJyYXkgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfOiBTaXR1YXRpb25GYW1pbGlhbGUudCA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4gaW5cbiAgbGV0IG1vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4gaW5cbiAgbGV0IGNvbmRpdGlvbl9hZ2VfYm91cnNlX2Vuc2VpZ25lbWVudF9zdXBlcmlldXJfOiBib29sID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pbiBpblxuICBsZXQgZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXNfOiBib29sID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXNfaW4gaW5cbiAgbGV0IGRhdGVfZGVtYW5kZV9vdV9yZWV4YW1lbl9kcm9pdF86IGRhdGUgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXRfaW4gaW5cbiAgbGV0IHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfOiBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLnQgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5wYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV86IG1vbmV5ID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19zZXVpbF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX3NldWlsXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ5NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00OTU7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDkzOyBzdGFydF9jb2x1bW49NDY7IGVuZF9saW5lPTQ5MzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IGZhbHNlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ5NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00OTU7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfOF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfOFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ5OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00OTk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjE7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBhcHBsaWNhYmxlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU4OTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ5OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00OTk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfN186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfN1wiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUwMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDE7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBhcHBsaWNhYmxlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTAxOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX2ZvcmZhaXRhaXJlc19yODIyXzIwXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwicmVzc291cmNlc19mb3JmYWl0YWlyZXNfcjgyMl8yMFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDM7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTAzOyBzdGFydF9jb2x1bW49NTE7IGVuZF9saW5lPTUwMzsgZW5kX2NvbHVtbj01NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IGZhbHNlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDM7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJyZXNzb3VyY2VzX3BlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDk3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ5NzsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjk7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAxIDogTW9kYWxpdMOpcyBnw6luw6lyYWxlcyBkZSBsJ2FwcHLDqWNpYXRpb24gZGVzIHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX3JlZHVjZVxuICAgICAgICAgICAgICAoZnVuIChzdW0xXzogbW9uZXkpIChzdW0yXzogbW9uZXkpIC0+IG9fYWRkX21vbl9tb24gc3VtMV8gc3VtMl8pXG4gICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgIChvX21hcFxuICAgICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV86IFBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgIHBlcnNvbm5lXy5QZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci5yZXNzb3VyY2VzKVxuICAgICAgICAgICAgICAgICBwZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyXykpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ5Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00OTc7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfcl84MjJfMTBfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJhYmF0dGVtZW50X3JfODIyXzEwXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwMjsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTUyNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01MjQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IFByaW5jaXBlcyBkZSBuZXV0cmFsaXNhdGlvbiBldCBkJ2FiYXR0ZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAobGV0IGFiYXR0ZW1lbnRfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgKG9fZXEgKG9fbGVuZ3RoIHBlcnNvbm5lc19hX2NoYXJnZV8pIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9pbnRfaW50IChvX2xlbmd0aCBwZXJzb25uZXNfYV9jaGFyZ2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjkwMTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzUwMDBcIikpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZSBfIC0+IGFiYXR0ZW1lbnRfXG4gICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPiBhYmF0dGVtZW50X1xuICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUwMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDI7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgXCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE4OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IFByaW5jaXBlcyBkZSBuZXV0cmFsaXNhdGlvbiBldCBkJ2FiYXR0ZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE4OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IFByaW5jaXBlcyBkZSBuZXV0cmFsaXNhdGlvbiBldCBkJ2FiYXR0ZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0XykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQxODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTg7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogUHJpbmNpcGVzIGRlIG5ldXRyYWxpc2F0aW9uIGV0IGQnYWJhdHRlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXVxuICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgKHtCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVffSkpKSBpblxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9udGFudF86IG1vbmV5ID0gcmVzdWx0Xy5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnQgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfcl84MjJfOF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcImFiYXR0ZW1lbnRfcl84MjJfOFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ5ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00OTg7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDYyOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IFByaW5jaXBlcyBkZSBuZXV0cmFsaXNhdGlvbiBldCBkJ2FiYXR0ZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLk91aUF2ZWNMb3llck91Q2hhcmdlcyBsb3llcl9vdV9jaGFyZ2VzXyAtPlxuICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfOF9cbiAgICAgICAgICAgIHwgUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC5Ob24gXyAtPlxuICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00OTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDk4OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJyZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MDg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTA4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTA4OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTA4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU0OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTc7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0yMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDMgOiBNb250YW50IGZvcmZhaXRhaXJlIGRlIHJlc3NvdXJjZXMgYXBwbGljYWJsZSBhdXggw6l0dWRpYW50c1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXNfKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNzb3VyY2VzX2ZvcmZhaXRhaXJlc19yODIyXzIwXykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyNDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDEgOiBNb2RhbGl0w6lzIGfDqW7DqXJhbGVzIGRlIGwnYXBwcsOpY2lhdGlvbiBkZXMgcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcmVzc291cmNlc19kZW1hbmRldXJfIHJlc3NvdXJjZXNfY29uam9pbnRfKVxuICAgICAgICAgICAgICByZXNzb3VyY2VzX3BlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MDg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTA4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X3JfODIyXzdfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJhYmF0dGVtZW50X3JfODIyXzdcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MDA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTAwOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwOTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi03XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBQcmluY2lwZXMgZGUgbmV1dHJhbGlzYXRpb24gZXQgZCdhYmF0dGVtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2FuZCBkZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9cbiAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHJlc3NvdXJjZXNfZGVtYW5kZXVyX1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX2NvbmpvaW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKSkgdGhlblxuICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzdfIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDA7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChhY2NfOiBib29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfOiBQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FuZCBhY2NfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lXy5QZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci5kdXJlZV9yZXNpZGVuY2VfZHVyYW50X3BlcmlvZGVfcl84MjJfM18xX3N1cGVyaWV1cmVfYV82X21vaXMpKVxuICAgICAgICAgICAgICAgICAgICAgICB0cnVlIHBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDI7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDM7IGVuZF9jb2x1bW49NzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMSA6IE1vZGFsaXTDqXMgZ8OpbsOpcmFsZXMgZGUgbCdhcHByw6ljaWF0aW9uIGRlcyByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Mjsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0MzsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAxIDogTW9kYWxpdMOpcyBnw6luw6lyYWxlcyBkZSBsJ2FwcHLDqWNpYXRpb24gZGVzIHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSBpblxuICB7UmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5yZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICByZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVffVxuXG5sZXQgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbjogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgcHJlc3RhdGlvbl9jb3VyYW50ZV86IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gaW5cbiAgbGV0IGFnZV9sNTEyXzNfMl86IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcIsOiZ2VfbDUxMl8zXzJcIl0gKGVtYmVkX2R1cmF0aW9uKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQzOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQzOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUxMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IENoYW1wIGQnYXBwbGljYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkdXJhdGlvbl9vZl9udW1iZXJzICgyMCkgKDApICgwKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIGxldCBzbWljX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pYy5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTUyOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT01Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01MjsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTUyOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpIGluXG4gIGxldCBzbWljX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pYy5yw6lzaWRlbmNlXCJdXG4gICAgICAoZW1iZWRfY29sbGVjdGl2aXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTE7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTUxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTUxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc2lkZW5jZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01MTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogU21pYy50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJzbWljXCI7IFwiU21pY1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWNcIjsgXCJTbWljXCJdIHNtaWMpXG4gICAgKHtTbWljSW4uZGF0ZV9jb3VyYW50ZV9pbiA9IHNtaWNfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBTbWljSW4ucmVzaWRlbmNlX2luID0gc21pY19kb3RfcmVzaWRlbmNlX30pKSkgaW5cbiAgbGV0IHNtaWNfZG90X2JydXRfaG9yYWlyZV86IG1vbmV5ID0gcmVzdWx0Xy5TbWljLmJydXRfaG9yYWlyZSBpblxuICBsZXQgcmVnaW1lX291dHJlX21lcl9sNzUxXzFfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInLDqWdpbWVfb3V0cmVfbWVyX2w3NTFfMVwiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00NDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IChcbiAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvc8OpY3VyaXTDqV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzMTsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzUxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gKCkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDQ7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDQ7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9sNTEyXzNfMl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInBsYWZvbmRfbDUxMl8zXzJcIl0gKGVtYmVkX21vbmV5KVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQyOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gKFxuICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyOyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjI7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjc1NS0wLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRMOpcGFydGVtZW50cyBkJ291dHJlLW1lclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICByZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBzbWljX2RvdF9icnV0X2hvcmFpcmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41NVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxNjkuXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMTsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUxMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IENoYW1wIGQnYXBwbGljYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHNtaWNfZG90X2JydXRfaG9yYWlyZV9cbiAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41NVwiKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTY5LlwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MjsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25zX2hvcnNfYWdlXzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MTItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9sNTEyXzNfMl8pKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQxOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKSkgaW5cbiAgbGV0IGRyb2l0X291dmVydF86IEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MDsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvc8OpY3VyaXTDqV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzE7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbDUxMl8zXzJfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VfbDUxMl8zXzJfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXykpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MTItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT00MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MDsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDA7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkpKSBpblxuICB7RWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZHJvaXRfb3V2ZXJ0ID0gZHJvaXRfb3V2ZXJ0XztcbiAgICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSA9XG4gICAgICAgY29uZGl0aW9uc19ob3JzX2FnZV87XG4gICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZV9sNTEyXzNfMiA9IGFnZV9sNTEyXzNfMl87XG4gICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xID1cbiAgICAgICByZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV99XG5cbmxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udCkgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnQgPVxuICBsZXQgbG95ZXJfcHJpbmNpcGFsXzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb3llcl9wcmluY2lwYWxfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luIGluXG4gIGxldCBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IHpvbmVfOiBab25lREhhYml0YXRpb24udCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnpvbmVfaW4gaW5cbiAgbGV0IGxvZ2VtZW50X2VzdF9jaGFtYnJlXzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luIGluXG4gIGxldCBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc186IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiBpblxuICBsZXQgdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luIGluXG4gIGxldCBjb2xvY2F0aW9uXzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmNvbG9jYXRpb25faW4gaW5cbiAgbGV0IHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbiBpblxuICBsZXQgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl86IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luIGluXG4gIGxldCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF86IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pbiBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb3llcl9wcmluY2lwYWxfYmFzZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYubG95ZXJfcHJpbmNpcGFsX2Jhc2VcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc5MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03OTE7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzkxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTc5MTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbG95ZXJfcHJpbmNpcGFsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03OTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NzkxOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc5Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03OTM7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzkzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTc5MzsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03OTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NzkzOyBlbmRfY29sdW1uPTYwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYuYsOpbsOpZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2Fww6lzXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03OTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Nzk1OyBlbmRfY29sdW1uPTc4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTc5NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03OTU7IGVuZF9jb2x1bW49Nzg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Nzk1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTc5NTsgZW5kX2NvbHVtbj03ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImNhbGN1bF9hcGxfbG9jYXRpZi5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03OTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Nzk4OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTc5ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03OTg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc5ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03OTg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl0gKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODAwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwMDsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MDA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODAwOyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MDA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODAwOyBlbmRfY29sdW1uPTU4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MDI7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODAyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwMjsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODAyOyBlbmRfY29sdW1uPTYzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImNhbGN1bF9hcGxfbG9jYXRpZi56b25lXCJdXG4gICAgICAoZW1iZWRfem9uZV9kX2hhYml0YXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODA0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwNDsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MDQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODA0OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB6b25lXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MDQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODA0OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVudF9lc3RfY2hhbWJyZV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi5sb2dlbWVudF9lc3RfY2hhbWJyZVwiXSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODA2OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MDY7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGxvZ2VtZW50X2VzdF9jaGFtYnJlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODA2OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc186IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi7DomfDqWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaMOpYmVyZ8OpZXNfb27DqXJldXhfcGFydGljdWxpZXJzXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MDk7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT04MTA7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODA5OyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9ODEwOyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgwOTsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTgxMDsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYudHlwZV9haWRlXCJdXG4gICAgICAoZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODEzOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgxMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTM7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHR5cGVfYWlkZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODEzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxMzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfY29sb2NhdGlvbl86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImNhbGN1bF9hcGxfbG9jYXRpZi5jb2xvY2F0aW9uXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODE1OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgxNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTU7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNvbG9jYXRpb25fKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgxNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTU7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3JlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi5yw6lkdWN0aW9uX2xveWVyX3NvbGlkYXJpdMOpXCJdIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODE3OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgxNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTc7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODE3OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVudF9tZXVibGVfZDg0Ml8yXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLmxvZ2VtZW50X21ldWJsw6lfZDg0Ml8yXCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgxOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODE5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxOTsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODE5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxOTsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImNhbGN1bF9hcGxfbG9jYXRpZlwiO1xuICAgICAgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWZcIjtcbiAgICAgIFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCJdXG4gICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmKVxuICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb3llcl9wcmluY2lwYWxfYmFzZV9pbiA9XG4gICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG95ZXJfcHJpbmNpcGFsX2Jhc2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi56b25lX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3pvbmVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xvZ2VtZW50X2VzdF9jaGFtYnJlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc187XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3R5cGVfYWlkZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9jb2xvY2F0aW9uXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVudF9tZXVibGVfZDg0Ml8yX30pKSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTYgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGxhZm9uZF9sb3llcl9kODIzXzE2XzIgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcGFydGljaXBhdGlvbl9taW5pbWFsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX21pbmltYWxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3RhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlXzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcGFydGljaXBhdGlvbl9wZXJzb25uZWxsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IFxuICAgIG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Nzg4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTc4ODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Nzg4OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03ODg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyODE7IHN0YXJ0X2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyODE7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LkNoYW5nZW1lbnQgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vbiBsb3llcl9wcmluY2lwYWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuYW5jaWVuX2xveWVyX3ByaW5jaXBhbCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuUGFzRGVDaGFuZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpIChmdW4gKF86IHVuaXQpIC0+IHBhcmFtXykpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgyNDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgyNDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl1cbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdXG4gICAgICAgICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfKVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT03ODg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Nzg4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03ODg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Nzg4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc4Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03ODY7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03ODY7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03ODY7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjczOyBzdGFydF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI3MzsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNlY3RldXIgbG9jYXRpZiBvcmRpbmFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LkNoYW5nZW1lbnQgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb24gbG95ZXJfcHJpbmNpcGFsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5hbmNpZW5fbG95ZXJfcHJpbmNpcGFsKSlcbiAgICAgICAgICAgICAgICAgICAgIHwgQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuUGFzRGVDaGFuZ2VtZW50IF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5DaGFuZ2VtZW50IGluZm9zXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gbG95ZXJfcHJpbmNpcGFsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5hbmNpZW5fbG95ZXJfcHJpbmNpcGFsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnQpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5QYXNEZUNoYW5nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODIzOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03ODY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Nzg2OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUgPSBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX31cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbjogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi50KSA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQgPVxuICBsZXQgdHlwZV9sb2dlbWVudF9mb3llcl86IFR5cGVMb2dlbWVudEZveWVyLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW4gaW5cbiAgbGV0IGRhdGVfY29udmVudGlvbm5lbWVudF86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmRhdGVfY29udmVudGlvbm5lbWVudF9pbiBpblxuICBsZXQgcmVkZXZhbmNlXzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnJlZGV2YW5jZV9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IHpvbmVfOiBab25lREhhYml0YXRpb24udCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uem9uZV9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2XzogQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luIGluXG4gIGxldCBtb250YW50X21pbmltYWxfYWlkZV9kODQyXzE1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfMTVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05Mjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTI3OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTAwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxMDA7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkyNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05Mjc7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzE1XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTI4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTkyODsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA4OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDg5OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0MVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkyODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05Mjg7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X21pbmltYWxfZGVwZW5zZV9uZXR0ZV9kODQyXzE3XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJtb250YW50X21pbmltYWxfZMOpcGVuc2VfbmV0dGVfZDg0Ml8xN1wiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05Mjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTI5OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTkxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxOTE7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkyOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05Mjk7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5jb25kaXRpb25fMl9kdV84MzJfMjVcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODM5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4Mzk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDgzOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODM5OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDgzOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODM5OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7IFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDgzNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODM1OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7IFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4MzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgzNTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODM1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MzU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODM3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4Mzc7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDgzNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODM3OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDgzNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODM3OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7IFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF9ub21icmVfcGFydHNcIjtcbiAgICAgIFwiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llclwiXSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIpXG4gICAgKHtDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxffSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Njg7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk2ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Njg7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Njg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTY4OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICh7Q29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVffSkpKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubW9udGFudCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfdHlwZV9sb2dlbWVudF9mb3llcl86IFR5cGVMb2dlbWVudEZveWVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnR5cGVfbG9nZW1lbnRfZm95ZXJcIl1cbiAgICAgIChlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk1Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NTI7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk1Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NTI7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0eXBlX2xvZ2VtZW50X2ZveWVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTUyOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY29udmVudGlvbm5lbWVudF86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLmRhdGVfY29udmVudGlvbm5lbWVudFwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTU0OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05NTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTU0OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb252ZW50aW9ubmVtZW50XykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTU0OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5yZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTU4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk1ODsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTU4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk1ODsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTU4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk1ODsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl1cbiAgICAgIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NjA7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk2MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NjA7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTYwOyBlbmRfY29sdW1uPTY1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTYyOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05NjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTYyOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTYyOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuem9uZVwiXVxuICAgICAgKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NjQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk2NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NjQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB6b25lXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTY0OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NjY7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk2Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NjY7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTY2OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3JlZGV2YW5jZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5yZWRldmFuY2VcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk1Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NTY7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk1Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NTY7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZWRldmFuY2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk1Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NTY7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogdW5pdCAtPiBib29sID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5jb25kaXRpb25fMl9kdV84MzJfMjVcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODAyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MDI7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDgwMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODAyOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogdW5pdCAtPiBkZWNpbWFsID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdIChlbWJlZF9kZWNpbWFsKVxuICAgICAgKHJhaXNlIEVtcHR5RXJyb3IpKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llclwiO1xuICAgICAgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCJdXG4gICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcilcbiAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF90eXBlX2xvZ2VtZW50X2ZveWVyXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9kYXRlX2NvbnZlbnRpb25uZW1lbnRfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9yZWRldmFuY2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfcl9kODMyXzI1XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9yX2Q4MzJfMjUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IFxuICAgIG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc1wiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkzMjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05MzI7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTMyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTMyOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDc2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA3NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0MFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkzMjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkzMjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MzI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTMyOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZXF1aXZhbGVuY2VfbG95ZXJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiw6lxdWl2YWxlbmNlX2xveWVyXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkzMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05MzE7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTMxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTMxOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTE4OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTE4OyBlbmRfY29sdW1uPTc5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NzA4XCIpXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM1NTlcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTMxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTMxOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTUzOyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTU0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTM2MlwiKVxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzMTk2XCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkzMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkzMTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkzMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTMxOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNzE7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDE3MjsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTc2MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjczNjVcIikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTM1OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTM2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzYwN1wiKVxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MzY1XCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkzMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkzMTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49Nzk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NDE0XCIpXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTMxMDBcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTMxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTMxOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03NDY7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTc0NzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0M1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwNjQwXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzIwNzNcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTMxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTMxOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTMxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05MzE7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzY1OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTc2NjsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MDEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NDQwXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzI3OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03Mjg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzAxMlwiKVxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NDQwXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MzE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTMxOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NDU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTQ1OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4NTE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00ODUxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHBhcmFtXyBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTVfKVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHBhcmFtXyBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTVfKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05NDU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTQ1OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQ1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk0NTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ4MzI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgzMjsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODMyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MzI7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODMyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MzI7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODMxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MzE7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDgzMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODMxOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDgzMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODMxOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7IFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2RlY2ltYWwpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NDE7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg0MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODQxOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NDE7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlKVxuICAgICh7Q2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUubW9udGFudCBpblxuICBsZXQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MzA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTMwOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4MDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgwNTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkzMDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05MzA7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05MjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTI1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5NjM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTYzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgb19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGVxdWl2YWxlbmNlX2xveWVyX1xuICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc18pIHBhcmFtXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05MjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTI1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTI1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTkyNTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGxveWVyX21pbmltYWxfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwibG95ZXJfbWluaW1hbFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MzM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTMzOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4NDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDg0MzsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkzMzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05MzM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTI2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTkyNjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00OTcyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk3MjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb24gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSBkZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgcGFyYW1fKSkpKSkpKSBtb250YW50X21pbmltYWxfZGVwZW5zZV9uZXR0ZV9kODQyXzE3XylcbiAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gbW9udGFudF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfZDg0Ml8xN19cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICBwYXJhbV8pKSkpKSkpKSBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTkyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05MjY7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTI2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk0Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05NDM7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc4NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Nzg0OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGVxdWl2YWxlbmNlX2xveWVyX1xuICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfKSBsb3llcl9taW5pbWFsXylcbiAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQzOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTk0MzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk0Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NDY7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg2NTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4NjU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGFiYXR0ZW1lbnRfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vbiAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gYWJhdHRlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIGFiYXR0ZW1lbnRfKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05NDY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTQ2OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQ2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk0NjsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NDc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTQ3OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4ODM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00ODgzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWYgKG9fZ3RfbW9uX21vbiBhaWRlX2ZpbmFsZV8gcmVkZXZhbmNlXykgdGhlbiByZWRldmFuY2VfXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk0NzsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk0Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NDc7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl0gKHVuZW1iZWRkYWJsZSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk0ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NDg7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg5Nzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4OTc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGNyZHNfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwXCIpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk0ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NDg7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NDg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTQ4OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk0OTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00OTE4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDkxODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfMTVfKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk0OTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk0OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NDk7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llciA9IGVxdWl2YWxlbmNlX2xveWVyXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzID1cbiAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5sb3llcl9taW5pbWFsID0gbG95ZXJfbWluaW1hbF87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUgPSBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxffVxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbjogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCkgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IHpvbmVfOiBab25lREhhYml0YXRpb24udCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uem9uZV9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG1lbnN1YWxpdGVfcHJpbmNpcGFsZV86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9yODIyXzExXzEzXzE3XzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gaW5cbiAgbGV0IGRhdGVfc2lnbmF0dXJlX3ByZXRfOiBkYXRlID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX3NpZ25hdHVyZV9wcmV0X2luIGluXG4gIGxldCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfOiBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luIGluXG4gIGxldCBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gaW5cbiAgbGV0IGRhdGVfZW50cmVlX2xvZ2VtZW50XzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW4gaW5cbiAgbGV0IGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0XzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNoYXJnZXNfbWVuc3VlbGxlc19wcmV0X2luIGluXG4gIGxldCBjb3Byb3ByaWV0ZV86IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzZcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODU2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg1NjsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzk2MzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODU2OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidGF1eF9mcmFuY3NfdmVyc19ldXJvc1wiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg1OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NTk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzMxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBwcmVtaWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUsOoZ2xlbWVudCAoQ0UpIG7CsDI4NjYvOTggZHUgY29uc2VpbCBkdSAzMSBkw6ljZW1icmUgMTk5OCBjb25jZXJuYW50IGxlcyB0YXV4IGRlIGNvbnZlcnNpb24gZW50cmUgbCdldXJvIGV0IGxlcyBtb25uYWllcyBkZXMgw4l0YXRzIG1lbWJyZXMgYWRvcHRhbnQgbCdldXJvXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19kaXZfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LjU1OTU3XCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODU5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml82XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg2Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjI7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTczOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5NzM7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjI7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTFcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDAyNzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xMlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NjQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA1Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDUyOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkwMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfZDg0Ml8xMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImNvZWZmaWNpZW50X2Q4NDJfMTFcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg2NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjU7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDM0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwMzQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzNFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODY1OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X2Q4NDJfMTJfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJjb2VmZmljaWVudF9kODQyXzEyXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODY2OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDQ1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIxNi4yNVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODY2OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ0NDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ0NjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ0Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQ2OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NDQ2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ0ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQ4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDQ4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDQ0ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQ4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7XG4gICAgICBcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCJdXG4gICAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICh7Q2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxffSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8xMV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTEgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkwNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDc7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MDc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTA3OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkwNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDc7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50IGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc1wiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODQ5OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NDk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODQ5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NDk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY1NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NTU7IGVuZF9jb2x1bW49MTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Byb3ByaWV0ZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYxNzsgc3RhcnRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYxNzsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NDk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODQ5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NDk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMDU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAwNTsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29wcm9wcmlldGVfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYxMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTI3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTUxOyBzdGFydF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzk1MTsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODQ5OyBzdGFydF9jb2x1bW49NDc7IGVuZF9saW5lPTg0OTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gZmFsc2UpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODQ5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg0OTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04Nzk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0NTY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDU2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBwYXJhbV8gbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzZfKVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHBhcmFtXyBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfNl8pKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg3OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04Nzk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODc5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg3OTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXzogZGF0ZSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogZGF0ZSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTEzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5MTM7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1ODcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkxMzAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA1NTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTEzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxNzEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjI5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI4MDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyODAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM5MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzA2MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODQ3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MTIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk3NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTg3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE4NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzA2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1ODQwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MjYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTc5ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODcwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk0MjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwODYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDg2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTU5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NTk7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NykgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2MDQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkzNDAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA3ODAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTM3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxOTYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjU1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQwODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzI1MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODY3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk5OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNjUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjExMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIxMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzIwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MDEwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3NDUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgxODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk2NDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMDkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTA5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDA1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMDU7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTcpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OCkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2MzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk2OTAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjExNjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTc2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjk2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM0NjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQzMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzU2MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTAxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NjYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAzNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjUxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI1MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzQ0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2MzAwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3NzcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg1MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTI1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk5OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNDcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTQ3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDUxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwNTE7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTgpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OSkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAxNjAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE2NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjI4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyOTAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzUxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQwMjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MDIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ2NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzk4MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA4NDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzc2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NjkwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MjAwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg5NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTcxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA0NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxOTkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTk5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDk3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwOTc7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTkpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAxODAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE2OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjMwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyOTIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzUzMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQwNDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MDQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ2ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODAwMDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA4NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNTQwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzc3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzEwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MjIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg5NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTczMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA0OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMDEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjAxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTQzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNDM7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDApICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2OTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAzODAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE5MTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjUyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzc3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQyODAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ4MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODE4MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTY4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMzcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjEwNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNzYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzMwMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMzMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2ODgwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4NDAwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkxNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTkzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA2OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMjMwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjIzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTg5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxODk7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDEpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA2MjAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIxNzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjc5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNDMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDA2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ1NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTUwMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODQwMDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTkyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwNjEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjEzMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzU4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM1ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNDA4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MDgwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4NjIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkzOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDE3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA5NDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyNTAwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjUwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjM1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyMzU7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjA4NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzc5OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ3NDNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzE5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ1N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ1N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjg4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjgwNTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDM2OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNTAyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzU2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTQ2NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYwMzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODM4NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk1NjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNzQ5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTkyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDMwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDMwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTQ7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyODA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzI4MDsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAzKSAoNykgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2Mzk3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTgxMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MjA0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTE2MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYxNDhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MTE5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3OTA2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3OTA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMTU4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODM4OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNzMyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTc5N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI4OTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzOTcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2Mzc4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2Mzc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxNzIzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjM1MFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4NzI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTkxNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzExMThcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMzA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NzEzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NzEzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzAwOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTQ7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1NDsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzMyNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzI1OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAzKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg5KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY3MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMTk0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ2MTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NTgyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjU4MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc1NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzgzNjFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzgzNjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzQxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM0MzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4NzI5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzExMDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMTc5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzI4N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQzODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4MTVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4MTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE5ODRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NjY2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjkwNzJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwMjc0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTQ5MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI2OTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzUxMzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzUxMzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzcwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzNzA7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg5KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzE5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI3NzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTIzN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYyMjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MjQwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODI0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTA1MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTA1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0MDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzg1OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjkyNDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY2MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI3NThcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzODg2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDk5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyNTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjM4MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxNDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTU5NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA4MTlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMDU4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzI4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTc2MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTc2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTQ7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0MTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQxNTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA4KSAoMSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3OTU2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzY5MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MjI0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzIzNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgyODNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MzExXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwMTQ0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwMTQ0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0NTI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDA2NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNTQ4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzY3NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ4NjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1OTc5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NTI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NTI3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM1MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMDA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzkwNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNDI0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY4MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI5NTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MjE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NzMzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NzMzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE4N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTQ7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1NDsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ2MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDYwOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDkpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjg3MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NjIxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcyMjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4MjY0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTM0MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzOTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEyNTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEyNTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTkyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjUyMDNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwODk1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM0NDZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NjA0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTc5NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY5NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk1OTBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk1OTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM2NDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4Njc2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEyNjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNTU2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzg2NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUxNThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc3NzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc3NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjc1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTA1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1MDU7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTU3NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2NDJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODMyMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkzOTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNTAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTU4OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjQ2OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjQ2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2OThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTk0NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE4MDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDQzM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2MjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2ODUyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODA2M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDc1OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDc1OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NDRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDMzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk1MjJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjE4NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM1MTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0ODY1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjE5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODg5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODg5MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTQ7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1NTA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU1MDsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NjcwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTc1N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NDQ1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTUxOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA2MDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNzIxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyNjA1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyNjA1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2MDI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTkwOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NjQzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTczOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY5NzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4MTg1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwODg4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwODg4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0NDE3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTYxNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMjg5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzYyM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ5NzdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MzExXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MDE2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MDE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTQ7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1NDsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU5NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTk1OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk5OTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MTQ5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg4NjhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5OTU0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTA3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIxODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMwNzRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMwNzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzUxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYzMTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMjU5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ5MjNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MTMyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzM3M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg2MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzMzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzMzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQ2ODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5OTQyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI2NDRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzOTkzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTM2MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY3MTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk0NDVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk0NDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjQwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NDA7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDI5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY1MTBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTI1N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzNTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDg5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjYwMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzUwNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzUwNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3ODlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjU3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI1ODJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI3MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY0OTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NzUxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODk5MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTc1MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTc1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDkzM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzAyNDFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjk3MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQzMzNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzE2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzA3N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTgzOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTgzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTQ7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2ODU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY4NTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoMTApICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDk0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcyOTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDEwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEyMjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMzgxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MzUxOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDQ0MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDQ0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzE0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzMyODNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjAzMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcyNzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NTYzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTgyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjY0OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjY1OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTQ2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA4OTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzY3OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUwNzFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NDg0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzg3NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDY5NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDY5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTQ7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3MzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzczMDsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEwKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzExMjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NTA4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzMzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDU3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjYyM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDM3NjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ2OTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ2OTNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODkyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjczMDRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNDczXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYyMzVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NDkwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODc4M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAwNTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI4OTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI4OTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU2MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMDY3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM4NzFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MjcxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgwOTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA5MjhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA5MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzc1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM3NzU7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMCkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMTQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzUzOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMzYyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ5MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDI2NTdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzODAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NzI5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NzI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MzI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MjY0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzUyMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg4MTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMDg4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyOTI2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyOTI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzczMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1NjM0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTA5MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzODk4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI5OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY3MjFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4MTIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwOTYxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwOTYxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTQ7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1NDsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgyMDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODIwOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTM4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc4MjBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDY2NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE4MDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyOTc3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDEzMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTA2NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTA2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzUzMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM3NTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjUzNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc4MDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MTA1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDM4OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzI0OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzI0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTgyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEzMjVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDE1MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU1NjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2OTk2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODQwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTI2OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTI2OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTQ7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4NjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg2NTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTQ3NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc5MzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDc4N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE5MjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzMTA2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDI2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzYxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM4NTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY0NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc5MTVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MjIyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDUxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzM3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzM3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTkwNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDI1NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2NzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MTA3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODUyMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTM5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTM5MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1ODhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg1NDsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNldWlsX21pbmltYWxfcmVzc291cmNlc19tZW5hZ2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInNldWlsX21pbmltYWxfcmVzc291cmNlc19tw6luYWdlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg1ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NTg7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1ODsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY5Njsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDcwMjsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg5KSAoMzApKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX1xuICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X2Q4NDJfMTJfKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1ODsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDcxNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDcxNTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPiBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzEyXykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODU4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg1ODsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2Mzc7IHN0YXJ0X2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NjM3OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICBvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXykgcGFyYW1fKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg2MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODYwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2MDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9hdmVjX2NvcHJvcHJpZXRlXzogZGF0ZSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl0gKHVuZW1iZWRkYWJsZSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IGRhdGUpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg1NTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTU7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1NTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTU7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1NTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYzMzsgc3RhcnRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYzMzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvcHJvcHJpZXRlXyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2Jhc2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9kYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1fKSkpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5ODU7IHN0YXJ0X2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzk4NTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvcHJvcHJpZXRlXyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2Jhc2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX2RhdGUpIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYmFzZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9kYXRlKSBwYXJhbV8pKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkwOTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXVxuICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXylcbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfZGF0ZSkgcGFyYW1fKSkpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg1NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04NTU7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODU1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg1NTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfc2V1aWxfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfc2V1aWxcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODM0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTgzNDsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODM0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODM0OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzM1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NzM1OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlXykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDcyNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NzI1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX1xuICAgICAgICAgICAgICAgICBzZXVpbF9taW5pbWFsX3Jlc3NvdXJjZXNfbWVuYWdlXykgdGhlblxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgKG9fcm91bmRfbW9uXG4gICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBzZXVpbF9taW5pbWFsX3Jlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDk5OVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMVwiKSkpXG4gICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpIGVsc2VcbiAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MzQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODM0OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInBsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg1Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NTI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1Mjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU4Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDU4NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAobGV0IHBsYWZvbmRfc2lnbmF0dXJlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9hdmVjX2NvcHJvcHJpZXRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX2RhdGUpIGRhdGVfc2lnbmF0dXJlX3ByZXRfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAobGV0IHBsYWZvbmRfZW50cmVlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9hdmVjX2NvcHJvcHJpZXRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX2RhdGUpIGRhdGVfZW50cmVlX2xvZ2VtZW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBpZiAob19sdF9tb25fbW9uIHBsYWZvbmRfc2lnbmF0dXJlXyBwbGFmb25kX2VudHJlZV8pXG4gICAgICAgICAgICAgICAgICAgICAgIHRoZW4gcGxhZm9uZF9lbnRyZWVfIGVsc2UgcGxhZm9uZF9zaWduYXR1cmVfKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTY4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ1Njg7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2F2ZWNfY29wcm9wcmlldGVfKVxuICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX2RhdGUpIGRhdGVfc2lnbmF0dXJlX3ByZXRfKSkpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODUyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ0NDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ0MjsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ0Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQyOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NldWlsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ0NDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ0MjsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDE7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0NDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ0MTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NDQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDE7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2RlY2ltYWwpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDQ0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDQ7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0NDQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ0NDsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzExXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ0NDQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ0NDsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUpXG4gICAgKHtDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfO1xuICAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS5tb250YW50IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF90eXBlX2xvZ2VtZW50X2ZveWVyXzogVHlwZUxvZ2VtZW50Rm95ZXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIudHlwZV9sb2dlbWVudF9mb3llclwiXVxuICAgICAgKGVtYmVkX3R5cGVfbG9nZW1lbnRfZm95ZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODkxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg5MTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTg5MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04OTE7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gVHlwZUxvZ2VtZW50Rm95ZXIuQXV0cmUgKCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODkxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg5MTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb252ZW50aW9ubmVtZW50XzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50XCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg5Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04OTM7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04OTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODkzOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfb2ZfbnVtYmVycyAoMTk3MCkgKDEpICgxKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04OTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODkzOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg5Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04OTc7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04OTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODk3OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19zZXVpbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODk3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg5NzsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdXG4gICAgICAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODk5OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODk5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg5OTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04OTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODk5OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTAxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkwMTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTkwMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDE7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTAxOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnpvbmVcIl0gKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkwMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTAzOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHpvbmVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkwMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDU7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTA1OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDU7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3JlZGV2YW5jZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5yZWRldmFuY2VcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg5NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04OTU7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04OTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODk1OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04OTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODk1OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfOiB1bml0IC0+IGJvb2wgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ0MDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQwMTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQwMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDAxOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IHVuaXQgLT4gZGVjaW1hbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXSAoZW1iZWRfZGVjaW1hbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ0MDg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQwODsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQwODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDA4OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyXCI7IFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiXVxuICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyXCI7IFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiXVxuICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIpXG4gICAgKHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luID1cbiAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfdHlwZV9sb2dlbWVudF9mb3llcl87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY29udmVudGlvbm5lbWVudF9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb252ZW50aW9ubmVtZW50XztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi56b25lX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF96b25lXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnJlZGV2YW5jZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcmVkZXZhbmNlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3JfZDgzMl8yNV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfOiBcbiAgICBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IHNldWlsX21pbmltYWxfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwic2V1aWxfbWluaW1hbF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODU3OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2NzE7IHN0YXJ0X2NvbHVtbj03O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ2NzQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTkpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfc2V1aWxfXG4gICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfZDg0Ml8xMV8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2NTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDY1OTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTFfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODU3OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1lbnN1YWxpdGVfZWxpZ2libGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwibWVuc3VhbGl0w6lfw6lsaWdpYmxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODQ4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg0ODsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQyMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDIyOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfKVxuICAgICAgICAgICAgICB0aGVuIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfIGVsc2UgbWVuc3VhbGl0ZV9wcmluY2lwYWxlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODQ4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg0ODsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtZW5zdWFsaXRlX21pbmltYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcIm1lbnN1YWxpdMOpX21pbmltYWxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODUwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg1MDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQzNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDM3OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg1MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NTA7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg1MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NTE7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0MTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQxMTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODUxOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjE7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2NDg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NjQ4OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSBkZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19sdF9tb25fbW9uIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgIHNldWlsX21pbmltYWxfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gc2V1aWxfbWluaW1hbF9kZXBlbnNlX25ldHRlX21pbmltYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICBkZXBlbnNlX25ldHRlX21pbmltYWxlXykgZWxzZVxuICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg2MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjE7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODYxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2MTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImFpZGVfZmluYWxlX2Zvcm11bGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NzY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9ODc2OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzgyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQzODI7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIG1lbnN1YWxpdGVfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc18pIG1lbnN1YWxpdGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NzY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9ODc2OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg4MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04ODA7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0NzA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDcwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWJhdHRlbWVudF8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZiAob19sdF9tb25fbW9uIGFpZGVfZmluYWxlXyBhYmF0dGVtZW50XykgdGhlblxuICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBhYmF0dGVtZW50XykpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODgwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg4MDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04ODA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODgwOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXSAodW5lbWJlZGRhYmxlKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODgxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg4MTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ4NDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0ODQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgY3Jkc18gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODgxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg4MTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04ODE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODgxOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg4Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04ODI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1MDQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTA0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfNl8pXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBhaWRlX2ZpbmFsZV8pKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT04ODI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODgyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg4Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04ODI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX31cblxubGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW46IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50KSA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudCA9XG4gIGxldCBtb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ubW9kZV9vY2N1cGF0aW9uX2luIGluXG4gIGxldCB0eXBlX2FpZGVfOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50eXBlX2FpZGVfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV86IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlXzogU2l0dWF0aW9uRmFtaWxpYWxlLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHpvbmVfOiBab25lREhhYml0YXRpb24udCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnpvbmVfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgY2F0ZWdvcmllX2NhbGN1bF9hcGxfOiBDYXRlZ29yaWVDYWxjdWxBUEwudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiY2F0w6lnb3JpZV9jYWxjdWxfYXBsXCJdXG4gICAgKGVtYmVkX2NhdGVnb3JpZV9jYWxjdWxfYV9wX2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NDA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzQwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQxMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDEzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggbW9kZV9vY2N1cGF0aW9uX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgbG9jYXRpb25fIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiBsb2NhdGlvbl8pXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBsb2dlbWVudGZveWVyXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuTG9nZW1lbnRGb3llciBsb2dlbWVudGZveWVyXylcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGFpcmVfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgcHJvcHJpZXRhaXJlXylcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uIGxvY2F0aW9uXylcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlIHByb3ByaWV0YWlyZV8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03NDA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzQwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwicmVzc291cmNlc19tw6luYWdlX2F2ZWNfYXJyb25kaVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTczNDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MzQ7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTc0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE5NzQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgIChvX3JvdW5kX21vblxuICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxXCIpKSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIFwiNDlcIikpKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MzQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzM0OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzQxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc0MTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03ODsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLk1hcmllcyBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzQxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc0MTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc291c19jYWxjdWxfdHJhaXRlbWVudF86IFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJzb3VzX2NhbGN1bF90cmFpdGVtZW50XCJdXG4gICAgKGVtYmVkX3RyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc0Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03NDM7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDM2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0MzY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBjYXRlZ29yaWVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6XG4gICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudCA9XG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbilcbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2Jhc2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IChsb2NhdGlvbl8uTG9jYXRpb24ubG95ZXJfcHJpbmNpcGFsKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NDY7IHN0YXJ0X2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDY7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NDE7IHN0YXJ0X2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ0MTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvY2F0aW9uLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NDg7IHN0YXJ0X2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ0ODsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBkYXRlX2NvdXJhbnRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NDQ7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ0NDsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NDI7IHN0YXJ0X2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ0MjsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQ1OyBzdGFydF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDU7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnpvbmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgem9uZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQzOyBzdGFydF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDM7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2NhdGlvbl8uTG9jYXRpb24ubG9nZW1lbnRfZXN0X2NoYW1icmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQ5OyBzdGFydF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDk7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvY2F0aW9uLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ1Mjsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDUyOyBlbmRfY29sdW1uPTgwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50eXBlX2FpZGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgdHlwZV9haWRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NTM7IHN0YXJ0X2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ1MzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmNvbG9jYXRpb24pIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ1MDsgc3RhcnRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDUwOyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChsb2NhdGlvbl8uTG9jYXRpb24uYmFpbGxldXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyU29jaWFsIGJhaWxsZXVyXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFpbGxldXJfLkNvbnZlbnRpb25CYWlsbGV1clNvY2lhbC5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9wZXJjdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDU1OyBzdGFydF9jb2x1bW49MTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NTg7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X21ldWJsZV9kODQyXzJfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ1OTsgc3RhcnRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDU5OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKX0pKSkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGxhZm9uZF9sb3llcl9kODIzXzE2XzIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX21pbmltYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX21pbmltYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpfSkgaW5cbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjtcbiAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQwOyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ2MDsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKVxuICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAobGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV8gOlxuICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDpcbiAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUubWVuc3VhbGl0ZV9wcmluY2lwYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0OTc7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTc7IGVuZF9jb2x1bW49NzI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5Mjsgc3RhcnRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDkyOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDkzOyBzdGFydF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk2OyBzdGFydF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTY7IGVuZF9jb2x1bW49Nzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk4OyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTg7IGVuZF9jb2x1bW49ODA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5OTsgc3RhcnRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDk5OyBlbmRfY29sdW1uPTY4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwMTsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmRhdGVfZW50cmVlX2xvZ2VtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUwMjsgc3RhcnRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTAyOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5jb3Byb3ByaWV0ZSkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTAzOyBzdGFydF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MDM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5zaXR1YXRpb25fcjgyMl8xMV8xM18xNylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDQ7IHN0YXJ0X2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwNDsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi56b25lX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHpvbmVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5NDsgc3RhcnRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDk0OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfcHJldF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LnR5cGVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDU7IHN0YXJ0X2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwNTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5hbmNpZW5uZXRlX2xvZ2VtZW50X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuYW5jaWVubmV0ZV9sb2dlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDY7IHN0YXJ0X2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwNjsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5NTsgc3RhcnRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDk1OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKX0pKSkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOlxuICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfZWxpZ2libGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfZWxpZ2libGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfbWluaW1hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUubWVuc3VhbGl0ZV9taW5pbWFsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKX0pIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0OTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwNzsgZW5kX2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSlcbiAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvZ2VtZW50Rm95ZXIgbG9nZW1lbnRfZm95ZXJfXyAtPlxuICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6XG4gICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQgPVxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbilcbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9nZW1lbnRfZm95ZXJfXy5Mb2dlbWVudEZveWVyLnR5cGVfdXNlcikgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDc4OyBzdGFydF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDc4OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY29udmVudGlvbm5lbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2VtZW50X2ZveWVyX18uTG9nZW1lbnRGb3llci5kYXRlX2NvbnZlbnRpb25uZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDc5OyBzdGFydF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0Nzk7IGVuZF9jb2x1bW49NzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NzI7IHN0YXJ0X2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ3MjsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDczOyBzdGFydF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NzM7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NzY7IHN0YXJ0X2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ3NjsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHpvbmVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3NDsgc3RhcnRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDc0OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBkYXRlX2NvdXJhbnRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NzU7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ3NTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnJlZGV2YW5jZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9nZW1lbnRfZm95ZXJfXy5Mb2dlbWVudEZveWVyLnJlZGV2YW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Nzc7IHN0YXJ0X2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ3NzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpfSkpKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKX0pIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIjtcbiAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIpXG4gICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3MTsgc3RhcnRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0ODA7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkgdGhlbiByZXN1bHRfIGVsc2UgKHJhaXNlIEVtcHR5RXJyb3IpKSkpKSkpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKHtUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzQzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc0MzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT03NDY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NzQ2OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDI2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQyNjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKHNvdXNfY2FsY3VsX3RyYWl0ZW1lbnRfLlRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKVxuICAgICAgICAgICAgICAgICAgIHBhcmFtXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT03NDY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NzQ2OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc0Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03NDY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc0NTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03NDU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDI0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0MjQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBzb3VzX2NhbGN1bF90cmFpdGVtZW50Xy5UcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzQ1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTc0NTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlID0gYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV99XG5cbmxldCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbjogRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4udCkgOiBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnQudCA9XG4gIGxldCBpbmZvcm1hdGlvbnNfOiBJbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50LnQgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uaW5mb3JtYXRpb25zX2luIGluXG4gIGxldCBkYXRlX2VtbWVuYWdlbWVudF86IGRhdGUgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGF0ZV9lbW1lbmFnZW1lbnRfaW4gaW5cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfOiBtb25leSA9IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfaW4gaW5cbiAgbGV0IGRlbGFpX2FwcmVzX2VtbWVuYWdlbWVudF9sODIzXzhfMl86IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgXCJkw6lsYWlfYXByw6hzX2VtbcOpbmFnZW1lbnRfbDgyM184XzJcIl0gKGVtYmVkX2R1cmF0aW9uKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDU3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ1NzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIwODM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjA4MzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0yMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNikgKDApKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU3OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fcmFuZ19lbmZhbnRfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcImNvbmRpdGlvbl9yYW5nX2VuZmFudFwiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDU0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ1NDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ1NDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwNjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwNjU7IGVuZF9jb2x1bW49Nzc7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0yMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5mb3JtYXRpb25zXy5JbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50Lm5vbWJyZV9lbmZhbnRzX2FfbmFpdHJlX2FwcmVzX3Ryb2lzaWVtZV9tb2lzX2dyb3NzZXNzZSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTQ7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NTQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU0OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgIFwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ3MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NzE7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ3MTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ3MTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICBcImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgXCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl1cbiAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKVxuICAgICh7QmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlX30pKSkgaW5cbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy5tb250YW50IGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2FwbC5tw6luYWdlXCJdXG4gICAgICAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ2Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Njc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ2NzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbWVuYWdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Njc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDY3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9kZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9hcGwuZGVtYW5kZXVyXCJdXG4gICAgICAoZW1iZWRfZGVtYW5kZXVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ2ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Njg7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ2ODsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Njg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDY4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hcGwuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDY5OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Njk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Njk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV86IHVuaXQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hcGwuY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpIChyYWlzZSBFbXB0eUVycm9yKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfOiB1bml0IC0+IGJvb2wgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYXBsLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXCJdIChlbWJlZF9ib29sKSAocmFpc2VcbiAgICAgIEVtcHR5RXJyb3IpKSBpblxuICBsZXQgcmVzdWx0XzogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9hcGxcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfYXBsXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAoe0VsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luID1cbiAgICAgICAgZWxpZ2liaWxpdGVfYXBsX2RvdF9tZW5hZ2VfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYXBsX2RvdF9kZW1hbmRldXJfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FwbF9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VffSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmVsaWdpYmlsaXRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogXG4gICAgZGVjaW1hbCBhcnJheSA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fMl9yODIzXzRfOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb25kaXRpb25fMl9yODIzXzQgaW5cbiAgbGV0IGNvbmRpdGlvbl9wZXJpb2RlX2RlbWVuYWdlbWVudF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9ww6lyaW9kZV9kw6ltw6luYWdlbWVudFwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ1NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDY5OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDc5OyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMjBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAoaW5mb3JtYXRpb25zXy5JbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50LmRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5Nb2luc0RlVHJvaXNFbmZhbnRzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5QbHVzRGVUcm9pc0VuZmFudHMgZGF0ZV9uYWlzc2FuY2Vfb3VfZ3Jvc3Nlc3NlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBkYXRlX25haXNzYW5jZV9vdV9ncm9zc2Vzc2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS5EYXRlRGVOYWlzc2FuY2UgZGF0ZV9uYWlzc2FuY2VfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpcnN0RGF5T2ZNb250aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXIgZGF0ZV9uYWlzc2FuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMikgKDApICgwKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDApICgwKSAoLTEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UuQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLkFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2Q4MjNfMjJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCJwbGFmb25kX2Q4MjNfMjJcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDU4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ1ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjA2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMDY7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJSSA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNFwiKSlcbiAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGVyc29ubmVfYV9jaGFyZ2VfOiBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yXCIpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ1ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTg7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2xvZ2VtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2xvZ2VtZW50XCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU2OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDU2OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjY7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMy04XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmQgZWxpZ2liaWxpdGVfYXBsX2RvdF9lbGlnaWJpbGl0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9yYW5nX2VuZmFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9wZXJpb2RlX2RlbWVuYWdlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2R1cl9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2VtbWVuYWdlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGFpX2FwcmVzX2VtbWVuYWdlbWVudF9sODIzXzhfMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTY7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU2OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ByaW1lX2RlbWVuYWdlbWVudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcIm1vbnRhbnRfcHJpbWVfZMOpbcOpbmFnZW1lbnRcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NjQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjEwOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMTA5OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIGRlcGVuc2VzX2p1c3RpZmllZXNfcmVlbGxlbWVudF9lbmdhZ2Vlc19cbiAgICAgICAgICAgICAgICAgcGxhZm9uZF9kODIzXzIyXykgdGhlblxuICAgICAgICAgICAgICBkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfIGVsc2UgcGxhZm9uZF9kODIzXzIyXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDY0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQ2NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7RWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50Lm1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50ID1cbiAgICAgbW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnRffVxuXG5sZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW46IEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQpIDogRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQgPVxuICBsZXQgbWVuYWdlXzogTWVuYWdlLnQgPSBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ubWVuYWdlX2luIGluXG4gIGxldCBkZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfMV86IFByZXQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV8xXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogUHJldC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAyMTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAyNDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODMyLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uUHJldC50aXR1bGFpcmVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5EZW1hbmRldXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwYXJhbV8uUHJldC50eXBlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHBhcmFtXy5QcmV0LnR5cGVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTg2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk4ODsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgzMi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwYXJhbV8uUHJldC50aXR1bGFpcmVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LkRlbWFuZGV1ciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLlByZXQudHlwZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLlByZXQudHlwZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0zNjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzY1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM2NTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfNl86IFByZXQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV82XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogUHJldC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM2NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM2Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfcHJldF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJjb25kaXRpb25fbG9nZW1lbnRfcHLDqnRcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM2NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY0OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc0MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTc1MzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuZGF0ZV9zaWduYXR1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuZGF0ZV9zaWduYXR1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5hbmNpZW5uZXRlX2xvZ2VtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLmxvZ2VtZW50X3NpdHVlX2NvbW11bmVfZGVzZXF1aWxpYnJlX2w4MzFfMikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gcHJvcHJpZXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUuYW5jaWVubmV0ZV9sb2dlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5sb2dlbWVudF9zaXR1ZV9jb21tdW5lX2Rlc2VxdWlsaWJyZV9sODMxXzIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MjE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzI2OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBwcm9wcmlldGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzE2OyBzdGFydF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzE2OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzY0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM2NDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5tw6luYWdlXCJdIChlbWJlZF9tZW5hZ2UpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mzc3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuZGVtYW5kZXVyXCJdIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3ODsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3ODsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlbWFuZGV1cl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mzc4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3ODsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc5OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc5OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mzc5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3OTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfOiBcbiAgICB1bml0IC0+IGJvb2wgPSBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmNvbmRpdGlvbl9sb2dlbWVudF9yw6lzaWRlbmNlX3ByaW5jaXBhbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAocmFpc2UgRW1wdHlFcnJvcikpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV86IHVuaXQgLT4gYm9vbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAocmFpc2UgRW1wdHlFcnJvcikpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZVwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmVcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICh7RWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tZW5hZ2VfaW4gPVxuICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9tZW5hZ2VfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGVtYW5kZXVyXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX30pKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5kYXRlX2NvdXJhbnRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmVsaWdpYmlsaXRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fMl9yODIzXzRfOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb25kaXRpb25fMl9yODIzXzQgaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9iYWlsbGV1cl86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgIFwiY29uZGl0aW9uX2xvZ2VtZW50X2JhaWxsZXVyXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzYzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM2MzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2MzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzYzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2MzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2OTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjk4OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgUjgzMi0yMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDEgOiBDb25kaXRpb25zIGQnYXNzaW1pbGF0aW9uIGRlcyBsb2dlbWVudHMtZm95ZXJzIGF1eCBsb2dlbWVudHMgw6AgdXNhZ2UgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBsb2dlbWVudF9mb3llcl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2VtZW50X2ZveWVyXy5Mb2dlbWVudEZveWVyLnJlbXBsaXRfY29uZGl0aW9uc19yODMyXzIxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA0OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIHByb3ByaWV0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfNlwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzZcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfNl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgbG9jYXRpb25fIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2dlbWVudEZveWVyLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY1MDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChsb2NhdGlvbl8uTG9jYXRpb24uYmFpbGxldXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clNvY2lhbCBjb252ZW50aW9uXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb252ZW50aW9uXy5Db252ZW50aW9uQmFpbGxldXJTb2NpYWwuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsIGNvbnZlbnRpb25fIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnZlbnRpb25fLkNvbnZlbnRpb25BTkhBLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfSUlfY2hhcF9JX3NlY18zKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjIwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyMzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV8xXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzFcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfMV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSkgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzYzOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM2Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogZGVjaW1hbCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbCkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNzI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzcyOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzgzOyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNzI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzcyOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXzogaW50ZWdlciA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCJdIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzcxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTM3MTsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM4MTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNzE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzcxOyBlbmRfY29sdW1uPTU0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqVwiXSAoZW1iZWRfYm9vbClcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzcwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTM3MDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzA7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTkxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01OTM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9sb2dlbWVudF9iYWlsbGV1cl9cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9sb2dlbWVudF9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9lbGlnaWJpbGl0ZV8pKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzcwOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM3MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zNzA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSA9IGRhdGVfY291cmFudGVfO1xuICAgICBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZWxpZ2liaWxpdGUgPSBlbGlnaWJpbGl0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlID1cbiAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX31cblxubGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgKGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW46IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBiZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XzogYm9vbCA9IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5iZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIGluXG4gIGxldCBkdXJlZV9sODQxXzFfM186IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImR1csOpZV9sODQxXzFfM1wiXSAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDA0OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE3MTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkdXJhdGlvbl9vZl9udW1iZXJzICg1KSAoMCkgKDApKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDA0OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MjA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDIwOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDIwOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDIwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMDsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmVzdGF0aW9uX2NvdXJhbnRlXzogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzLnByZXN0YXRpb25fY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9lbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25zRmFtaWxpYWxlcyAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDIxOyBlbmRfY29sdW1uPTU2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzLnLDqXNpZGVuY2VcIl0gKGVtYmVkX2NvbGxlY3Rpdml0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDI1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDI1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDI1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiXVxuICAgIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgKHtFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmVzdGF0aW9uX2NvdXJhbnRlXztcbiAgICAgICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gPVxuICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc2lkZW5jZV99KSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5kcm9pdF9vdXZlcnQgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2NvbmRpdGlvbnNfaG9yc19hZ2VfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfYWdlX2w1MTJfM18yXzogZHVyYXRpb24gPSByZXN1bHRfLkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZV9sNTEyXzNfMiBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfOiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSBpblxuICBsZXQgY29uZGl0aW9uX2FjY2Vzc2lvbl9wcm9wcmlldGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImNvbmRpdGlvbl9hY2Nlc3Npb25fcHJvcHJpw6l0w6lcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQwMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MDE7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAxOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAxOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAxOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDE7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDE7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAxOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAxOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAxOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzY5OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC50aXR1bGFpcmVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LkRlbWFuZGV1ciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzNDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM1MjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODQyLTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LkRlbWFuZGV1ciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5WZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzMwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDMzNzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuRGVtYW5kZXVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzAwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzAyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQwMTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDAxOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfbWVuYWdlXzogTWVuYWdlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5tw6luYWdlXCJdXG4gICAgICAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQyNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjc7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQyNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjc7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQyNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjc7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5kZW1hbmRldXJcIl1cbiAgICAgIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDI4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyODsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyODsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlbWFuZGV1cl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDI4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyODsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDI5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyOTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyOTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQyOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjk7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXzogXG4gICAgdW5pdCAtPiBib29sID0gZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzY4OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDc2ODsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi0xNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzY4OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDc2ODsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi0xNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIGxvZ2VtZW50X2ZveWVyXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIuY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV86IHVuaXQgLT4gYm9vbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDc2OTsgc3RhcnRfY29sdW1uPTk7IGVuZF9saW5lPTQ3Njk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItMTRcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc2OTsgc3RhcnRfY29sdW1uPTk7IGVuZF9saW5lPTQ3Njk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgKG1hdGNoICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIGxvZ2VtZW50X2ZveWVyXyAtPlxuICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIuY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSSlcbiAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmVcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZVwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X21lbmFnZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kZW1hbmRldXJfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VffSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmRhdGVfY291cmFudGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2VsaWdpYmlsaXRlXzogYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZWxpZ2liaWxpdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IFxuICAgIGRlY2ltYWwgYXJyYXkgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl8yX3I4MjNfNF86IFBlcnNvbm5lQUNoYXJnZS50IC0+IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvbmRpdGlvbl8yX3I4MjNfNCBpblxuICBsZXQgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IGRlY2ltYWwgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICBcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQxNDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MTQ7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQzMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MzM7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQxNDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MTQ7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCJdIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDEzOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQxMzsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQzMTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MTM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDEzOyBlbmRfY29sdW1uPTU0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfZGlzcG9zaXRpb25zX2NvbW11bmVzXzogVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICBcIsOpbGlnaWJpbGl0w6lfZGlzcG9zaXRpb25zX2NvbW11bmVzXCJdXG4gICAgKGVtYmVkX3R5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQxMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00MTE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODQwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg0MDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fb3IgKG9fbm90IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2VsaWdpYmlsaXRlXylcbiAgICAgICAgICAgICAgICAgKG9fbm90IGNvbmRpdGlvbl9hY2Nlc3Npb25fcHJvcHJpZXRlXykpIHRoZW5cbiAgICAgICAgICAgICAgKFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSAoKSkgZWxzZVxuICAgICAgICAgICAgICAoVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgKCkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDExOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9mYW1pbGlhbGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnRfZmFtaWxpYWxlXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQwMzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwMzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwMzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMDY7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5lbmZhbnRfYV9uYWl0cmVfYXByZXNfcXVhdHJpZW1lX21vaXNfZ3Jvc3Nlc3NlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAzOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAzOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05OTA7IGVuZF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfYV9jaGFyZ2VfOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgcGFyZW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuYXNjZW5kYW50X2Rlc2NlbmRhbnRfY29sbGF0ZXJhbF9kZXV4aWVtZV90cm9pc2llbWVfZGVncmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmluY2FwYWNpdGVfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTYzOyBlbmRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfYV9jaGFyZ2VfOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl8yX3I4MjNfNF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29ubmVfYV9jaGFyZ2VfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkyMjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk0NzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfYV9jaGFyZ2VfOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvaXRfb3V2ZXJ0XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuaWRlbnRpZmlhbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmlkZW50aWZpYW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2Uub2JsaWdhdGlvbl9zY29sYWlyZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZGF0ZV9kZV9uYWlzc2FuY2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucHJpc2VfZW5fY2hhcmdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuUGFzRGVHYXJkZUFsdGVybmVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaXNlRW5DaGFyZ2VFbmZhbnQuRWZmZWN0aXZlRXRQZXJtYW5lbnRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlRW5mYW50LkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KX0pKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIGRhdGVfbWFyaWFnZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXIgZGF0ZV9tYXJpYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJlZV9sODQxXzFfM18pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg5MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05MTE7IGVuZF9jb2x1bW49ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfYV9jaGFyZ2VfOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2Ryb2l0X291dmVydF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe0VuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5pZGVudGlmaWFudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmlkZW50aWZpYW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5vYmxpZ2F0aW9uX3Njb2xhaXJlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5yZW11bmVyYXRpb25fbWVuc3VlbGxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5kYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5QYXNEZUdhcmRlQWx0ZXJuZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlRW5mYW50LkVmZmVjdGl2ZUV0UGVybWFuZW50ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlRW5mYW50LkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KX0pKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGJvb2wpIChwcmVzdGF0aW9uXzogUHJlc3RhdGlvblJlY3VlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9fb3IgYWNjX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcHJlc3RhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25zRmFtaWxpYWxlcyAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBwcmVzdGF0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmVzdGF0aW9uUmVjdWUuQ29tcGxlbWVudEZhbWlsaWFsICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHByZXN0YXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHByZXN0YXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wcmVzdGF0aW9uc19yZWN1ZXMpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDAzOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MDM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9sODQxXzJfOiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2w4NDFfMlwiXVxuICAgIChlbWJlZF90eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDEyOyBlbmRfY29sdW1uPTE2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMjsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxMjsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMjsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDEyOyBlbmRfY29sdW1uPTE2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEyNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTI0OyBlbmRfY29sdW1uPTczO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZW1hbmRldXJfLkRlbWFuZGV1ci5wZXJzb25uZV9oZWJlcmdlZV9jZW50cmVfc29pbl9sX0wxNjJfMjJfM19zZWN1cml0ZV9zb2NpYWxlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTI7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxMjsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExMzc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE0MDsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgKCkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDMzOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgIChvX2VxIGVsaWdpYmlsaXRlX2Rpc3Bvc2l0aW9uc19jb21tdW5lc19cbiAgICAgICAgICAgICAgICAgICAgKFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSAoKSkpXG4gICAgICAgICAgICAgICAgIGJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfKSB0aGVuXG4gICAgICAgICAgICAgIChUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgKCkpIGVsc2VcbiAgICAgICAgICAgICAgKCBpZiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZhbWlsaWFsZV8gdGhlblxuICAgICAgICAgICAgICAgICAoVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVxuICAgICAgICAgICAgICAgICAgICAoKSkgZWxzZVxuICAgICAgICAgICAgICAgICAoVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcbiAgICAgICAgICAgICAgICAgICAgKCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDEyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQxMjsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0VsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LmVsaWdpYmlsaXRlID0gZWxpZ2liaWxpdGVfbDg0MV8yXztcbiAgICAgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlID1cbiAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfO1xuICAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlID1cbiAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX31cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbjogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudCA9XG4gIGxldCBtb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ubW9kZV9vY2N1cGF0aW9uX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi56b25lX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IHR5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnR5cGVfYWlkZV9pbiBpblxuICBsZXQgY2F0ZWdvcmllX2NhbGN1bF9hcGxfOiBDYXRlZ29yaWVDYWxjdWxBUEwudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImNhdMOpZ29yaWVfY2FsY3VsX2FwbFwiXVxuICAgIChlbWJlZF9jYXRlZ29yaWVfY2FsY3VsX2FfcF9sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTg1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk4NTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM5NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMzk1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggbW9kZV9vY2N1cGF0aW9uX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgbG9jYXRpb25fIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiBsb2NhdGlvbl8pXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBsb2dlbWVudGZveWVyXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuTG9nZW1lbnRGb3llciBsb2dlbWVudGZveWVyXylcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGFpcmVfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgcHJvcHJpZXRhaXJlXylcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uIGxvY2F0aW9uXylcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlIHByb3ByaWV0YWlyZV8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05ODU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTg1OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwicmVzc291cmNlc19tw6luYWdlX2F2ZWNfYXJyb25kaVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk3ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05Nzg7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4MTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgxMTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMVwiKSkgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICBcIjQ5XCIpKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTc4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk3ODsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk4Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05ODY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04ODsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLk1hcmllcyBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTg2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk4NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzb3VzX2NhbGN1bF90cmFpdGVtZW50XzogVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJzb3VzX2NhbGN1bF90cmFpdGVtZW50XCJdXG4gICAgKGVtYmVkX3RyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk4ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05ODg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MjA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTUyMDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudFxuICAgICAgICAgICAgICAgICAgID1cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxveWVyX3ByaW5jaXBhbCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTMwOyBzdGFydF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTMwOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MjU7IHN0YXJ0X2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUyNTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhdGlvbl8uTG9jYXRpb24uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUzMjsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTMyOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgZGF0ZV9jb3VyYW50ZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI4OyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1Mjg7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MjY7IHN0YXJ0X2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUyNjsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mjk7IHN0YXJ0X2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUyOTsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi56b25lX2luID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB6b25lXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mjc7IHN0YXJ0X2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUyNzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxvZ2VtZW50X2VzdF9jaGFtYnJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUzMzsgc3RhcnRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTMzOyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvY2F0aW9uLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUzNjsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTM2OyBlbmRfY29sdW1uPTgwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgdHlwZV9haWRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mzc7IHN0YXJ0X2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzNzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmNvbG9jYXRpb24pIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUzNDsgc3RhcnRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTM0OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGxvY2F0aW9uXy5Mb2NhdGlvbi5iYWlsbGV1cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJTb2NpYWwgYmFpbGxldXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYWlsbGV1cl8uQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX3BlcmN1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyUHJpdmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mzk7IHN0YXJ0X2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU0MjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2NhdGlvbl8uTG9jYXRpb24ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NDM7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU0MzsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2NhdGlvbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NDQ7IHN0YXJ0X2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU0NDsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKX0pIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI0OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU0NTsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIGxvZ2VtZW50X2ZveWVyX18gLT5cbiAgICAgICAgICAgICAgICAobGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID1cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcilcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbilcbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4udHlwZV9sb2dlbWVudF9mb3llcl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIudHlwZV91c2VyKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTc7IHN0YXJ0X2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1OTc7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5ODsgc3RhcnRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk4OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIucmVkZXZhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5NDsgc3RhcnRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk0OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODk7IHN0YXJ0X2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4OTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTA7IHN0YXJ0X2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5MDsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTkzOyBzdGFydF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1OTM7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnpvbmVfaW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHpvbmVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5MTsgc3RhcnRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTkxOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5Mjsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTkyOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2VtZW50X2ZveWVyX18uTG9nZW1lbnRGb3llci5jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTY7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5NjsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmxveWVyX21pbmltYWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmxveWVyX21pbmltYWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpfSkgaW5cbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbCBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImRpcmVjdFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcilcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTg4OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5OTsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAobGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV8gOlxuICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOlxuICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbilcbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYxMDsgc3RhcnRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYxMDsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYxMTsgc3RhcnRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjExOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjE0OyBzdGFydF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MTQ7IGVuZF9jb2x1bW49Nzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi56b25lX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHpvbmVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYxMjsgc3RhcnRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjEyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBkYXRlX2NvdXJhbnRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MTM7IHN0YXJ0X2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYxMzsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLm1lbnN1YWxpdGVfcHJpbmNpcGFsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MTU7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYxNTsgZW5kX2NvbHVtbj03MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjIzOyBzdGFydF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MjM7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX3NpZ25hdHVyZV9wcmV0X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuZGF0ZV9zaWduYXR1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjE4OyBzdGFydF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MTg7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYxNzsgc3RhcnRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjE3OyBlbmRfY29sdW1uPTc5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYyMDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjIwOyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5kYXRlX2VudHJlZV9sb2dlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MjE7IHN0YXJ0X2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYyMTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNoYXJnZXNfbWVuc3VlbGxlc19wcmV0X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuY2hhcmdlc19tZW5zdWVsbGVzX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjE2OyBzdGFydF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MTY7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuY29wcm9wcmlldGUpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYyMjsgc3RhcnRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjIyOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKX0pKSkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOlxuICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKX0pIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImRpcmVjdFwiO1xuICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSlcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjA5OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MjQ7IGVuZF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkgdGhlbiByZXN1bHRfIGVsc2UgKHJhaXNlIEVtcHR5RXJyb3IpKSkpKSkpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKHtUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudFxuICAgICAgICAgICAgICAgICAgID1cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxveWVyX3ByaW5jaXBhbCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTYyOyBzdGFydF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTYyOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NTc7IHN0YXJ0X2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU1NzsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhdGlvbl8uTG9jYXRpb24uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU2NDsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTY0OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgZGF0ZV9jb3VyYW50ZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTYwOyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NjA7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NTg7IHN0YXJ0X2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU1ODsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NjE7IHN0YXJ0X2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2MTsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi56b25lX2luID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB6b25lXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NTk7IHN0YXJ0X2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU1OTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxvZ2VtZW50X2VzdF9jaGFtYnJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU2NTsgc3RhcnRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTY1OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvY2F0aW9uLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU2ODsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTY4OyBlbmRfY29sdW1uPTgwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgdHlwZV9haWRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Njk7IHN0YXJ0X2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2OTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmNvbG9jYXRpb24pIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU2Njsgc3RhcnRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTY2OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGxvY2F0aW9uXy5Mb2NhdGlvbi5iYWlsbGV1cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJTb2NpYWwgYmFpbGxldXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYWlsbGV1cl8uQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX3BlcmN1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyUHJpdmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NzE7IHN0YXJ0X2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3NDsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2NhdGlvbl8uTG9jYXRpb24ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NzU7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3NTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2NhdGlvbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NzY7IHN0YXJ0X2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3NjsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKX0pIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTU2OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3NzsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6XG4gICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luKVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjM3OyBzdGFydF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjM3OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjM4OyBzdGFydF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2Mzg7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NDE7IHN0YXJ0X2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY0MTsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgem9uZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjM5OyBzdGFydF9jb2x1bW49MjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2Mzk7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY0MDsgc3RhcnRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjQwOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUubWVuc3VhbGl0ZV9wcmluY2lwYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY0Mjsgc3RhcnRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjQyOyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5zaXR1YXRpb25fcjgyMl8xMV8xM18xNylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTA7IHN0YXJ0X2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY1MDsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NDU7IHN0YXJ0X2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY0NTsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjQ0OyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NDQ7IGVuZF9jb2x1bW49Nzk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjQ3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NDc7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmRhdGVfZW50cmVlX2xvZ2VtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY0ODsgc3RhcnRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjQ4OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NDM7IHN0YXJ0X2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY0MzsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5jb3Byb3ByaWV0ZSkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjQ5OyBzdGFydF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NDk7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpfSkpKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpfSkgaW5cbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwiZGlyZWN0XCI7XG4gICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MzY7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY1MTsgZW5kX2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpfSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05ODg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTkxOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDA4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQwODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKHNvdXNfY2FsY3VsX3RyYWl0ZW1lbnRfLlRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKVxuICAgICAgICAgICAgICAgICAgIHBhcmFtXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05OTE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTkxOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk5MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05OTE7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05OTA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTkwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDA2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0MDY7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBzb3VzX2NhbGN1bF90cmFpdGVtZW50Xy5UcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTkwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTk5MDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSA9IGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV99XG5cbmxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4udCkgOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LnQgPVxuICBsZXQgbWVuYWdlXzogTWVuYWdlLnQgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5tZW5hZ2VfaW4gaW5cbiAgbGV0IGRlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfOiBtb25leSA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4gaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnQuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDY5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjk7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDY5OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDY5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjk7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9tZW5hZ2VfOiBNZW5hZ2UudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hbGxvY2F0aW9uX2xvZ2VtZW50Lm3DqW5hZ2VcIl0gKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDYxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjE7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDYxOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2MTsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnQuZGVtYW5kZXVyXCJdIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDY1OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2NTsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDY1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjU7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9iZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hbGxvY2F0aW9uX2xvZ2VtZW50LmLDqW7DqWZpY2llX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnRcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OTsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTEwNDk7IGVuZF9jb2x1bW49NzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ5OyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9MTA0OTsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNDk7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMDQ5OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjsgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnRcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfYWxsb2NhdGlvbl9sb2dlbWVudFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCJdIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQpXG4gICAgKHtFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5tZW5hZ2VfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X21lbmFnZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9kZW1hbmRldXJfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2JlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRffSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfbDg0MV8yXzogVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LmVsaWdpYmlsaXRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQubcOpbmFnZVwiXSAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA1OTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNTk7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA1OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDU5OyBlbmRfY29sdW1uPTYwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9kZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50LmRlbWFuZGV1clwiXVxuICAgICAgKGVtYmVkX2RlbWFuZGV1cilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjM7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDYzOyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2MzsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDY3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjc7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDY3OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDY3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjc7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICBcIsOpbGlnaWJpbGl0w6lfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgIFwiw6lsaWdpYmlsaXTDqV9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50XCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiXVxuICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudClcbiAgICAoe0VsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfbWVuYWdlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RlbWFuZGV1cl87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5lbGlnaWJpbGl0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X21vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvblwiXSAoZW1iZWRfbW9kZV9vY2N1cGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3MzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDczOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzM7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3MzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQucmVzc291cmNlc19tw6luYWdlX3NhbnNfYXJyb25kaVwiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3NzsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzc7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3NzsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlXzogU2l0dWF0aW9uRmFtaWxpYWxlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50LnNpdHVhdGlvbl9mYW1pbGlhbGVcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA4MTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODE7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDgxOyBlbmRfY29sdW1uPTYwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudC5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDg4OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwODg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA4ODsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA4ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDg4OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQuem9uZVwiXVxuICAgICAgKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwOTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5MjsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDkyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTI7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQuem9uZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDkyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTI7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50LmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDk2OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5NjsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA5Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDk2OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3R5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQudHlwZV9haWRlXCJdXG4gICAgICAoZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2NTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2NTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX2w4NDFfMl9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlIF8gLT5cbiAgICAgICAgICAgICAgICAoVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpKVxuICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAoVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgKCkpXG4gICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAoVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2NTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7IFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50XCI7XG4gICAgICBcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50XCI7XG4gICAgICBcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiXSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudClcbiAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9tb2RlX29jY3VwYXRpb25fO1xuICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfO1xuICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV87XG4gICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uem9uZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3pvbmVfO1xuICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnR5cGVfYWlkZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3R5cGVfYWlkZV99KSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X21vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvblwiXVxuICAgICAgKGVtYmVkX21vZGVfb2NjdXBhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzE7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDcxOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzE7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF90eXBlX2FpZGVfOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50LnR5cGVfYWlkZVwiXVxuICAgICAgKGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjM7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjM7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgKCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjM7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiOyBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5yZXNzb3VyY2VzX23DqW5hZ2Vfc2Fuc19hcnJvbmRpXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDc1OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3NTsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA3NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDc1OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5zaXR1YXRpb25fZmFtaWxpYWxlXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDc5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzk7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDc5OyBlbmRfY29sdW1uPTY4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3OTsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4NDsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTEwODQ7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4NDsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTEwODQ7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA4NDsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTEwODQ7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50LnpvbmVcIl0gKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwOTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5MDsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDkwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTA7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQuem9uZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDkwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTA7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDk0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTQ7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDk0OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDk0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTQ7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50XCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnRcIjtcbiAgICAgIFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudClcbiAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9tb2RlX29jY3VwYXRpb25fO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udHlwZV9haWRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF90eXBlX2FpZGVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luID1cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnpvbmVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3pvbmVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IFxuICAgIG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBkZWNpbWFsIGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbCkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDU1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwNTU7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDk5OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA1NTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDU1OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqVwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNTI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTA1MjsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA1NDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fb3IgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV9cbiAgICAgICAgICAgICAgKG1hdGNoIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX2w4NDFfMl9cbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgdHJ1ZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNTI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTA1MjsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1NDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDkyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA5MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfYXBsXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV9hbF8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmIChvX25vdCBlbGlnaWJpbGl0ZV8pIHRoZW4gcGFyYW1fIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV9sODQxXzJfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAoIGlmIChvX2d0X21vbl9tb24gYWlkZV9maW5hbGVfYXBsXyBhaWRlX2ZpbmFsZV9hbF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gYWlkZV9maW5hbGVfYXBsXyBlbHNlIGFpZGVfZmluYWxlX2FsXykgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gYWlkZV9maW5hbGVfYXBsXyBlbHNlIGFpZGVfZmluYWxlX2FsXykpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTA1NDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNTQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTA1NDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcImFpZGVfZmluYWxlX2Zvcm11bGVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDUzOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDc1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIChvX25vdCBlbGlnaWJpbGl0ZV8pIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX1xuICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX2w4NDFfMl9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXylcbiAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfXG4gICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA1Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDUzOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LmVsaWdpYmlsaXRlID0gZWxpZ2liaWxpdGVfO1xuICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LmFpZGVfZmluYWxlX2Zvcm11bGUgPSBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlXztcbiAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlID1cbiAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX31cblxubGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWUgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW46IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4udCkgOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS50ID1cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXzogbW9uZXkgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiBpblxuICBsZXQgbWVuYWdlX3NhbnNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV86IE1lbmFnZS50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICBcIm3DqW5hZ2Vfc2Fuc19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZVwiXSAoZW1iZWRfbWVuYWdlKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTExODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTE4OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTUwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTA7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAge01lbmFnZS5wcmVzdGF0aW9uc19yZWN1ZXMgPSAobWVuYWdlXy5NZW5hZ2UucHJlc3RhdGlvbnNfcmVjdWVzKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5sb2dlbWVudCA9IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCk7XG4gICAgICAgICAgICAgICBNZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlID1cbiAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgIChmdW4gKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLlBhc0RlR2FyZGVBbHRlcm5lZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCk7XG4gICAgICAgICAgICAgICBNZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZSA9XG4gICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5jb25kaXRpb25fcmF0dGFjaGVfZm95ZXJfZmlzY2FsX3BhcmVudF9pZmkgPVxuICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UuY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5lbmZhbnRfYV9uYWl0cmVfYXByZXNfcXVhdHJpZW1lX21vaXNfZ3Jvc3Nlc3NlID1cbiAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmVuZmFudF9hX25haXRyZV9hcHJlc19xdWF0cmllbWVfbW9pc19ncm9zc2Vzc2UpfSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTExODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTE4OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfbWVuYWdlXzogTWVuYWdlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiY2FsY3VsZXR0ZS5tw6luYWdlXCJdXG4gICAgICAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMjk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEyOTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEyOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTI5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbWVuYWdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTI5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMjk7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiY2FsY3VsZXR0ZS5kZW1hbmRldXJcIl1cbiAgICAgIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTEzMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTMxOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTMxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMzE7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzMTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCJjYWxjdWxldHRlLmRhdGVfY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzMzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEzMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTMzOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTEzMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTMzOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bGV0dGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgICAgXCJjYWxjdWxldHRlLnJlc3NvdXJjZXNfbcOpbmFnZV9wcmlzZXNfZW5fY29tcHRlXCJdIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTM1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMzU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExMzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzNTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzNTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiY2FsY3VsZXR0ZVwiO1xuICAgICAgXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCJjYWxjdWxldHRlXCI7XG4gICAgICBcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIl0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudClcbiAgICAoe0NhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5tZW5hZ2VfaW4gPSBjYWxjdWxldHRlX2RvdF9tZW5hZ2VfO1xuICAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID0gY2FsY3VsZXR0ZV9kb3RfZGVtYW5kZXVyXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGNhbGN1bGV0dGVfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiA9XG4gICAgICAgICAgY2FsY3VsZXR0ZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV99KSkpIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuZWxpZ2liaWxpdGUgaW5cbiAgbGV0IGNhbGN1bGV0dGVfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IFxuICAgIGRlY2ltYWwgYXJyYXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9tZW5hZ2VfOiBNZW5hZ2UudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgICAgXCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuw6llLm3DqW5hZ2VcIl0gKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTM3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMzc7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExMzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzNzsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV9zYW5zX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzNzsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgICBcImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm7DqWUuZGVtYW5kZXVyXCJdIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTEzOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTM5OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTM5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMzk7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzOTsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgICBcImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm7DqWUuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNDE7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE0MTsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE0MTsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgICAgXCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuw6llLnJlc3NvdXJjZXNfbcOpbmFnZV9wcmlzZXNfZW5fY29tcHRlXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE0NDsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTExNDQ7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNDQ7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMTQ0OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE0NDsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTExNDQ7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgXCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuw6llXCI7IFwiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiXVxuICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgIFwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybsOpZVwiOyBcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIl1cbiAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50KVxuICAgICh7Q2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfbWVuYWdlXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiA9XG4gICAgICAgICAgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9kZW1hbmRldXJfO1xuICAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4gPVxuICAgICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV99KSkpIGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2VsaWdpYmlsaXRlXzogYm9vbCA9IHJlc3VsdF8uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5lbGlnaWJpbGl0ZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uZXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogXG4gICAgZGVjaW1hbCBhcnJheSA9IHJlc3VsdF8uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCLDqWxpZ2liaWxpdMOpXCJdIChlbWJlZF9ib29sKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTI1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTExMjU7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE3NjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bGV0dGVfZG90X2VsaWdpYmlsaXRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTEyNTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMTI1OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IGRlY2ltYWwgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgIFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTExOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTE5OyBlbmRfY29sdW1uPTYwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTQ4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNDg7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgY2FsY3VsZXR0ZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTExOTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCJhaWRlX2ZpbmFsZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMjY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTEyNjsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI4NDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNvbnNlaWwgZCfDiXRhdCwgNcOobWUgLSA0w6htZSBjaGFtYnJlcyByw6l1bmllcywgMjEvMDcvMjAxNywgMzk4NTYzXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgIGNhbGN1bGV0dGVfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGNhbGN1bGV0dGVfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfKVxuICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgIChvX3JlZHVjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoc3VtMV86IGRlY2ltYWwpIChzdW0yXzogZGVjaW1hbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX3JhdF9yYXQgc3VtMV8gc3VtMl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pKSkpKSkpKSkpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMjY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTEyNjsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlLmVsaWdpYmlsaXRlID0gZWxpZ2liaWxpdGVfO1xuICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS5haWRlX2ZpbmFsZSA9IGFpZGVfZmluYWxlX31cbiIsIigqKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHRoZSBDYXRhbGEgY29tcGlsZXIsIGRvIG5vdCBlZGl0ISAqKVxuXG5vcGVuIFJ1bnRpbWVfb2NhbWwuUnVudGltZVxub3BlbiBSdW50aW1lX2pzb28uUnVudGltZVxub3BlbiBKc19vZl9vY2FtbFxub3BlbiBBaWRlc19sb2dlbWVudFxuXG5bQEBAb2NhbWwud2FybmluZyBcIi00LTI2LTI3LTMyLTQxLTQyXCJdXG5cbigqIEdlbmVyYXRlZCBBUEkgKilcblxuY2xhc3MgdHlwZSB0eXBlX3ByZXQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJEMzMxXzMyXCJcbiAgICAgICAgLSBcIkQzMzFfNjNfNjRcIlxuICAgICAgICAtIFwiRDMzMV81OV84XCJcbiAgICAgICAgLSBcIkQzMzFfNzZfMVwiXG4gICAgICAgIC0gXCJBdXRyZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfcHJldF90b19qc29vIDogVHlwZVByZXQudCAtPiB0eXBlX3ByZXQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgRDMzMV8zMiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkQzMzFfMzJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBEMzMxXzYzXzY0IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRDMzMV82M182NFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEQzMzFfNTlfOCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkQzMzFfNTlfOFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEQzMzFfNzZfMSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkQzMzFfNzZfMVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEF1dHJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXV0cmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHR5cGVfcHJldF9vZl9qc29vICh0eXBlX3ByZXQgOiB0eXBlX3ByZXQgSnMudCkgOiBUeXBlUHJldC50ID1cbiAgbWF0Y2ggdHlwZV9wcmV0IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRDMzMV8zMlwiIC0+IFR5cGVQcmV0LkQzMzFfMzIgKClcbiAgfCBcIkQzMzFfNjNfNjRcIiAtPiBUeXBlUHJldC5EMzMxXzYzXzY0ICgpXG4gIHwgXCJEMzMxXzU5XzhcIiAtPiBUeXBlUHJldC5EMzMxXzU5XzggKClcbiAgfCBcIkQzMzFfNzZfMVwiIC0+IFR5cGVQcmV0LkQzMzFfNzZfMSAoKVxuICB8IFwiQXV0cmVcIiAtPiBUeXBlUHJldC5BdXRyZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZVByZXQudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdGl0dWxhaXJlX3ByZXQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJEZW1hbmRldXJcIlxuICAgICAgICAtIFwiVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvblwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHRpdHVsYWlyZV9wcmV0X3RvX2pzb28gOiBUaXR1bGFpcmVQcmV0LnQgLT4gdGl0dWxhaXJlX3ByZXQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgRGVtYW5kZXVyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRGVtYW5kZXVyXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHRpdHVsYWlyZV9wcmV0X29mX2pzb28gKHRpdHVsYWlyZV9wcmV0IDogdGl0dWxhaXJlX3ByZXQgSnMudClcbiAgOiBUaXR1bGFpcmVQcmV0LnQgPVxuICBtYXRjaCB0aXR1bGFpcmVfcHJldCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkRlbWFuZGV1clwiIC0+IFRpdHVsYWlyZVByZXQuRGVtYW5kZXVyICgpXG4gIHwgXCJWZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uXCIgLT5cbiAgICBUaXR1bGFpcmVQcmV0LlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1RpdHVsYWlyZVByZXQudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJUcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xXCJcbiAgICAgICAgLSBcIlRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzJcIlxuICAgICAgICAtIFwiUGFzRGVUcmF2YXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfdG9fanNvb1xuICA6IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUudCAtPiB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBUcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUGFzRGVUcmF2YXV4IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFzRGVUcmF2YXV4XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV9vZl9qc29vXG4gICh0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSA6IHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IEpzLnQpXG4gIDogVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS50ID1cbiAgbWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJUcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xXCIgLT5cbiAgICBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzEgKClcbiAgfCBcIlRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzJcIiAtPlxuICAgIFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMiAoKVxuICB8IFwiUGFzRGVUcmF2YXV4XCIgLT4gVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5QYXNEZVRyYXZhdXggKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1R5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50XCJcbiAgICAgICAgLSBcIlByZXZ1RGFuc0xpc3RlUjMyMV8xNVwiXG4gICAgICAgIC0gXCJBZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82M1wiXG4gICAgICAgIC0gXCJQYXNEZVRyYXZhdXhcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X3RvX2pzb29cbiAgOiBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUudCAtPiB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBQcmV2dURhbnNMaXN0ZVIzMjFfMTUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQcmV2dURhbnNMaXN0ZVIzMjFfMTVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUGFzRGVUcmF2YXV4IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFzRGVUcmF2YXV4XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X29mX2pzb29cbiAgKHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgOiB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IEpzLnQpXG4gIDogVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQgPVxuICBtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnRcIiAtPlxuICAgIFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCAoKVxuICB8IFwiUHJldnVEYW5zTGlzdGVSMzIxXzE1XCIgLT5cbiAgICBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1ICgpXG4gIHwgXCJBZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82M1wiIC0+XG4gICAgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzICgpXG4gIHwgXCJQYXNEZVRyYXZhdXhcIiAtPiBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4ICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgYW1lbGlvcmVfcGFyX29jY3VwYW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiT3VpXCJcbiAgICAgICAgLSBcIk5vblwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGFtZWxpb3JlX3Bhcl9vY2N1cGFudF90b19qc29vXG4gIDogQW1lbGlvcmVQYXJPY2N1cGFudC50IC0+IGFtZWxpb3JlX3Bhcl9vY2N1cGFudCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBPdWkgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJPdWlcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBOb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJOb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGFtZWxpb3JlX3Bhcl9vY2N1cGFudF9vZl9qc29vXG4gIChhbWVsaW9yZV9wYXJfb2NjdXBhbnQgOiBhbWVsaW9yZV9wYXJfb2NjdXBhbnQgSnMudClcbiAgOiBBbWVsaW9yZVBhck9jY3VwYW50LnQgPVxuICBtYXRjaCBhbWVsaW9yZV9wYXJfb2NjdXBhbnQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJPdWlcIiAtPiBBbWVsaW9yZVBhck9jY3VwYW50Lk91aSAoKVxuICB8IFwiTm9uXCIgLT4gQW1lbGlvcmVQYXJPY2N1cGFudC5Ob24gKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0FtZWxpb3JlUGFyT2NjdXBhbnQudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgbGltaXRlX3RyYW5jaGUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJSZXZlbnVcIlxuICAgICAgICAtIFwiSW5maW5pXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbGltaXRlX3RyYW5jaGVfdG9fanNvbyA6IExpbWl0ZVRyYW5jaGUudCAtPiBsaW1pdGVfdHJhbmNoZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBSZXZlbnUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJSZXZlbnVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcbiAgfCBJbmZpbmkgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJJbmZpbmlcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGxpbWl0ZV90cmFuY2hlX29mX2pzb28gKGxpbWl0ZV90cmFuY2hlIDogbGltaXRlX3RyYW5jaGUgSnMudClcbiAgOiBMaW1pdGVUcmFuY2hlLnQgPVxuICBtYXRjaCBsaW1pdGVfdHJhbmNoZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlJldmVudVwiIC0+XG4gIExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIChKcy5VbnNhZmUuY29lcmNlIGxpbWl0ZV90cmFuY2hlIyMucGF5bG9hZCkpXG4gIHwgXCJJbmZpbmlcIiAtPiBMaW1pdGVUcmFuY2hlLkluZmluaSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnTGltaXRlVHJhbmNoZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiUmV2ZW51XCJcbiAgICAgICAgLSBcIkluZmluaVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfdG9fanNvb1xuICA6IExpbWl0ZVRyYW5jaGVEZWNpbWFsLnQgLT4gbGltaXRlX3RyYW5jaGVfZGVjaW1hbCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBSZXZlbnUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJSZXZlbnVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuICB8IEluZmluaSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkluZmluaVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbGltaXRlX3RyYW5jaGVfZGVjaW1hbF9vZl9qc29vXG4gIChsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIDogbGltaXRlX3RyYW5jaGVfZGVjaW1hbCBKcy50KVxuICA6IExpbWl0ZVRyYW5jaGVEZWNpbWFsLnQgPVxuICBtYXRjaCBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUmV2ZW51XCIgLT5cbiAgTGltaXRlVHJhbmNoZURlY2ltYWwuUmV2ZW51IChkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIyMucGF5bG9hZCkpXG4gIHwgXCJJbmZpbmlcIiAtPiBMaW1pdGVUcmFuY2hlRGVjaW1hbC5JbmZpbmkgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0xpbWl0ZVRyYW5jaGVEZWNpbWFsLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHByZXN0YXRpb25fcmVjdWUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIlxuICAgICAgICAtIFwiQ29tcGxlbWVudEZhbWlsaWFsXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25KZXVuZUVuZmFudFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25BZHVsdGVIYW5kaWNhcGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBwcmVzdGF0aW9uX3JlY3VlX3RvX2pzb28gOiBQcmVzdGF0aW9uUmVjdWUudCAtPiBwcmVzdGF0aW9uX3JlY3VlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEFsbG9jYXRpb25zRmFtaWxpYWxlcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IENvbXBsZW1lbnRGYW1pbGlhbCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25KZXVuZUVuZmFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25KZXVuZUVuZmFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25BZHVsdGVIYW5kaWNhcGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uQWR1bHRlSGFuZGljYXBlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwcmVzdGF0aW9uX3JlY3VlX29mX2pzb28gKHByZXN0YXRpb25fcmVjdWUgOiBwcmVzdGF0aW9uX3JlY3VlIEpzLnQpXG4gIDogUHJlc3RhdGlvblJlY3VlLnQgPVxuICBtYXRjaCBwcmVzdGF0aW9uX3JlY3VlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCIgLT4gUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25zRmFtaWxpYWxlcyAoKVxuICB8IFwiQ29tcGxlbWVudEZhbWlsaWFsXCIgLT4gUHJlc3RhdGlvblJlY3VlLkNvbXBsZW1lbnRGYW1pbGlhbCAoKVxuICB8IFwiQWxsb2NhdGlvbkpldW5lRW5mYW50XCIgLT4gUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25KZXVuZUVuZmFudCAoKVxuICB8IFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiIC0+XG4gICAgUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgKClcbiAgfCBcIkFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlXCIgLT5cbiAgICBQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcGUgKClcbiAgfCBcIkFsbG9jYXRpb25BZHVsdGVIYW5kaWNhcGVcIiAtPlxuICAgIFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uQWR1bHRlSGFuZGljYXBlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQcmVzdGF0aW9uUmVjdWUudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgcGFyZW50X291X2F1dHJlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzXCJcbiAgICAgICAgLSBcIkF1dHJlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcGFyZW50X291X2F1dHJlX3RvX2pzb28gOiBQYXJlbnRPdUF1dHJlLnQgLT4gcGFyZW50X291X2F1dHJlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IERlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGFyZykpXG4gICAgZW5kXG4gIHwgQXV0cmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdXRyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcGFyZW50X291X2F1dHJlX29mX2pzb28gKHBhcmVudF9vdV9hdXRyZSA6IHBhcmVudF9vdV9hdXRyZSBKcy50KVxuICA6IFBhcmVudE91QXV0cmUudCA9XG4gIG1hdGNoIHBhcmVudF9vdV9hdXRyZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlc1wiIC0+XG4gIFBhcmVudE91QXV0cmUuRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzIChkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBwYXJlbnRfb3VfYXV0cmUjIy5wYXlsb2FkKSlcbiAgfCBcIkF1dHJlXCIgLT4gUGFyZW50T3VBdXRyZS5BdXRyZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUGFyZW50T3VBdXRyZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJQYXNEZUdhcmRlQWx0ZXJuZWVcIlxuICAgICAgICAtIFwiR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV90b19qc29vXG4gIDogU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS50IC0+IHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBQYXNEZUdhcmRlQWx0ZXJuZWUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQYXNEZUdhcmRlQWx0ZXJuZWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBHYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGFyZykpXG4gICAgZW5kXG5cbmxldCBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVfb2ZfanNvb1xuICAoc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIDogc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIEpzLnQpXG4gIDogU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS50ID1cbiAgbWF0Y2ggc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUGFzRGVHYXJkZUFsdGVybmVlXCIgLT4gU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5QYXNEZUdhcmRlQWx0ZXJuZWUgKClcbiAgfCBcIkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2VcIiAtPlxuICBTaXR1YXRpb25HYXJkZUFsdGVybmVlLkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgKGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIChKcy5VbnNhZmUuY29lcmNlIHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBwYXJlbnRlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQXNjZW5kYW50XCJcbiAgICAgICAgLSBcIkRlc2NlbmRhbnRcIlxuICAgICAgICAtIFwiQ29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBwYXJlbnRlX3RvX2pzb28gOiBQYXJlbnRlLnQgLT4gcGFyZW50ZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBBc2NlbmRhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBc2NlbmRhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBEZXNjZW5kYW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRGVzY2VuZGFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IENvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHBhcmVudGVfb2ZfanNvbyAocGFyZW50ZSA6IHBhcmVudGUgSnMudCkgOiBQYXJlbnRlLnQgPVxuICBtYXRjaCBwYXJlbnRlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQXNjZW5kYW50XCIgLT4gUGFyZW50ZS5Bc2NlbmRhbnQgKClcbiAgfCBcIkRlc2NlbmRhbnRcIiAtPiBQYXJlbnRlLkRlc2NlbmRhbnQgKClcbiAgfCBcIkNvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlXCIgLT5cbiAgICBQYXJlbnRlLkNvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQYXJlbnRlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRGF0ZURlTmFpc3NhbmNlXCJcbiAgICAgICAgLSBcIkF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2VcIlxuICAgICAgICAtIFwiQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlX3RvX2pzb29cbiAgOiBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS50IC0+IGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IERhdGVEZU5haXNzYW5jZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkRhdGVEZU5haXNzYW5jZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGRhdGVfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IEF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2VcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlX29mX2pzb29cbiAgKGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlXG4gICAgOiBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSBKcy50KVxuICA6IERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLnQgPVxuICBtYXRjaCBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkRhdGVEZU5haXNzYW5jZVwiIC0+XG4gIERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLkRhdGVEZU5haXNzYW5jZSAoZGF0ZV9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlIyMucGF5bG9hZCkpXG4gIHwgXCJBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlXCIgLT5cbiAgICBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS5BdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlICgpXG4gIHwgXCJBcHJlc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlXCIgLT5cbiAgICBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS5BcHJlc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSB6b25lX2RfaGFiaXRhdGlvbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlpvbmUxXCJcbiAgICAgICAgLSBcIlpvbmUyXCJcbiAgICAgICAgLSBcIlpvbmUzXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyA6IFpvbmVESGFiaXRhdGlvbi50IC0+IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFpvbmUxIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiWm9uZTFcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBab25lMiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlpvbmUyXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgWm9uZTMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJab25lM1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvbyAoem9uZV9kX2hhYml0YXRpb24gOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50KVxuICA6IFpvbmVESGFiaXRhdGlvbi50ID1cbiAgbWF0Y2ggem9uZV9kX2hhYml0YXRpb24jIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJab25lMVwiIC0+IFpvbmVESGFiaXRhdGlvbi5ab25lMSAoKVxuICB8IFwiWm9uZTJcIiAtPiBab25lREhhYml0YXRpb24uWm9uZTIgKClcbiAgfCBcIlpvbmUzXCIgLT4gWm9uZURIYWJpdGF0aW9uLlpvbmUzICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdab25lREhhYml0YXRpb24udCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk91aUF2ZWNMb3llck91Q2hhcmdlc1wiXG4gICAgICAgIC0gXCJOb25cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsX3RvX2pzb29cbiAgOiBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLnQgLT4gcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBPdWlBdmVjTG95ZXJPdUNoYXJnZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJPdWlBdmVjTG95ZXJPdUNoYXJnZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcbiAgfCBOb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJOb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfb2ZfanNvb1xuICAocGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbFxuICAgIDogcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbCBKcy50KVxuICA6IFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwudCA9XG4gIG1hdGNoIHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWwjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJPdWlBdmVjTG95ZXJPdUNoYXJnZXNcIiAtPlxuICBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLk91aUF2ZWNMb3llck91Q2hhcmdlcyAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsIyMucGF5bG9hZCkpXG4gIHwgXCJOb25cIiAtPiBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLk5vbiAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSB2ZXJzZW1lbnRfYSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkJhaWxsZXVyXCJcbiAgICAgICAgLSBcIkJlbmVmaWNpYWlyZVwiXG4gICAgICAgIC0gXCJFdGFibGlzc2VtZW50SGFiaWxpdGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB2ZXJzZW1lbnRfYV90b19qc29vIDogVmVyc2VtZW50QS50IC0+IHZlcnNlbWVudF9hIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEJhaWxsZXVyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQmFpbGxldXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBCZW5lZmljaWFpcmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJCZW5lZmljaWFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBFdGFibGlzc2VtZW50SGFiaWxpdGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJFdGFibGlzc2VtZW50SGFiaWxpdGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHZlcnNlbWVudF9hX29mX2pzb28gKHZlcnNlbWVudF9hIDogdmVyc2VtZW50X2EgSnMudCkgOiBWZXJzZW1lbnRBLnQgPVxuICBtYXRjaCB2ZXJzZW1lbnRfYSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkJhaWxsZXVyXCIgLT4gVmVyc2VtZW50QS5CYWlsbGV1ciAoKVxuICB8IFwiQmVuZWZpY2lhaXJlXCIgLT4gVmVyc2VtZW50QS5CZW5lZmljaWFpcmUgKClcbiAgfCBcIkV0YWJsaXNzZW1lbnRIYWJpbGl0ZVwiIC0+IFZlcnNlbWVudEEuRXRhYmxpc3NlbWVudEhhYmlsaXRlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdWZXJzZW1lbnRBLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIGRlcGVuc2VfbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJUb3RhbEFubnVlbEVjaGVhbmNlc1wiXG4gICAgICAgIC0gXCJNZW5zdWFsaXRlXCJcbiAgICAgICAgLSBcIkxveWVyXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgZGVwZW5zZV9sb2dlbWVudF90b19qc29vIDogRGVwZW5zZUxvZ2VtZW50LnQgLT4gZGVwZW5zZV9sb2dlbWVudCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBUb3RhbEFubnVlbEVjaGVhbmNlcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlRvdGFsQW5udWVsRWNoZWFuY2VzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGFyZykpXG4gICAgZW5kXG4gIHwgTWVuc3VhbGl0ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1lbnN1YWxpdGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcbiAgfCBMb3llciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxveWVyXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGFyZykpXG4gICAgZW5kXG5cbmxldCBkZXBlbnNlX2xvZ2VtZW50X29mX2pzb28gKGRlcGVuc2VfbG9nZW1lbnQgOiBkZXBlbnNlX2xvZ2VtZW50IEpzLnQpXG4gIDogRGVwZW5zZUxvZ2VtZW50LnQgPVxuICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiVG90YWxBbm51ZWxFY2hlYW5jZXNcIiAtPlxuICBEZXBlbnNlTG9nZW1lbnQuVG90YWxBbm51ZWxFY2hlYW5jZXMgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgZGVwZW5zZV9sb2dlbWVudCMjLnBheWxvYWQpKVxuICB8IFwiTWVuc3VhbGl0ZVwiIC0+XG4gIERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIChKcy5VbnNhZmUuY29lcmNlIGRlcGVuc2VfbG9nZW1lbnQjIy5wYXlsb2FkKSlcbiAgfCBcIkxveWVyXCIgLT5cbiAgRGVwZW5zZUxvZ2VtZW50LkxveWVyIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIChKcy5VbnNhZmUuY29lcmNlIGRlcGVuc2VfbG9nZW1lbnQjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0RlcGVuc2VMb2dlbWVudC50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBtb2RlX29jY3VwYXRpb25faW1wYXllID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiSW1wYXllTG95ZXJcIlxuICAgICAgICAtIFwiSW1wYXllUHJldFwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfdG9fanNvb1xuICA6IE1vZGVPY2N1cGF0aW9uSW1wYXllLnQgLT4gbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBJbXBheWVMb3llciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkltcGF5ZUxveWVyXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgSW1wYXllUHJldCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkltcGF5ZVByZXRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfb2ZfanNvb1xuICAobW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSA6IG1vZGVfb2NjdXBhdGlvbl9pbXBheWUgSnMudClcbiAgOiBNb2RlT2NjdXBhdGlvbkltcGF5ZS50ID1cbiAgbWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkltcGF5ZUxveWVyXCIgLT4gTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgKClcbiAgfCBcIkltcGF5ZVByZXRcIiAtPiBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0ICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdNb2RlT2NjdXBhdGlvbkltcGF5ZS50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSB0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJQYXNFbGlnaWJsZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF90b19qc29vXG4gIDogVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgLT4gdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFBhc0VsaWdpYmxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFzRWxpZ2libGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X29mX2pzb29cbiAgKHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudFxuICAgIDogdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IEpzLnQpXG4gIDogVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgPVxuICBtYXRjaCB0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJQYXNFbGlnaWJsZVwiIC0+IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSAoKVxuICB8IFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCIgLT5cbiAgICBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCIgLT5cbiAgICBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50XCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vXG4gIDogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50IC0+IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICh0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IDogdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50KVxuICA6IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9XG4gIG1hdGNoIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50XCIgLT5cbiAgICBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgKClcbiAgfCBcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiIC0+XG4gICAgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgKClcbiAgfCBcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIiAtPlxuICAgIFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBzaXR1YXRpb25fZmFtaWxpYWxlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQ2VsaWJhdGFpcmVcIlxuICAgICAgICAtIFwiTWFyaWVzXCJcbiAgICAgICAgLSBcIlBhY3Nlc1wiXG4gICAgICAgIC0gXCJDb25jdWJpbnNcIlxuICAgICAgICAtIFwiQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXRcIlxuICAgICAgICAtIFwiQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV90b19qc29vXG4gIDogU2l0dWF0aW9uRmFtaWxpYWxlLnQgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBDZWxpYmF0YWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNlbGliYXRhaXJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTWFyaWVzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWFyaWVzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoZGF0ZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgUGFjc2VzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFjc2VzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQ29uY3ViaW5zIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ29uY3ViaW5zXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDZWxpYmF0YWlyZVNlcGFyZURlRmFpdFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IENvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9vZl9qc29vXG4gIChzaXR1YXRpb25fZmFtaWxpYWxlIDogc2l0dWF0aW9uX2ZhbWlsaWFsZSBKcy50KSA6IFNpdHVhdGlvbkZhbWlsaWFsZS50ID1cbiAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkNlbGliYXRhaXJlXCIgLT4gU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlICgpXG4gIHwgXCJNYXJpZXNcIiAtPlxuICBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIChkYXRlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2Ugc2l0dWF0aW9uX2ZhbWlsaWFsZSMjLnBheWxvYWQpKVxuICB8IFwiUGFjc2VzXCIgLT4gU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyAoKVxuICB8IFwiQ29uY3ViaW5zXCIgLT4gU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyAoKVxuICB8IFwiQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXRcIiAtPlxuICAgIFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCAoKVxuICB8IFwiQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0XCIgLT5cbiAgICBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0ICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdTaXR1YXRpb25GYW1pbGlhbGUudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgcHJpc2VfZW5fY2hhcmdlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCJcbiAgICAgICAgLSBcIlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIlxuICAgICAgICAtIFwiUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0aW9uc1BhcnRhZ2VlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcHJpc2VfZW5fY2hhcmdlX3RvX2pzb28gOiBQcmlzZUVuQ2hhcmdlLnQgLT4gcHJpc2VfZW5fY2hhcmdlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0aW9uc1BhcnRhZ2VlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0aW9uc1BhcnRhZ2VlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyAocHJpc2VfZW5fY2hhcmdlIDogcHJpc2VfZW5fY2hhcmdlIEpzLnQpXG4gIDogUHJpc2VFbkNoYXJnZS50ID1cbiAgbWF0Y2ggcHJpc2VfZW5fY2hhcmdlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCIgLT4gUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgKClcbiAgfCBcIlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSAoKVxuICB8IFwiUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0aW9uc1BhcnRhZ2VlXCIgLT5cbiAgICBQcmlzZUVuQ2hhcmdlLlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUHJpc2VFbkNoYXJnZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSB0eXBlX2xvZ2VtZW50X2ZveWVyID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiTG9nZW1lbnRQZXJzb25uZXNBZ2Vlc091SGFuZGljYXBlZXNcIlxuICAgICAgICAtIFwiUmVzaWRlbmNlU29jaWFsZVwiXG4gICAgICAgIC0gXCJGb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NVwiXG4gICAgICAgIC0gXCJBdXRyZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfbG9nZW1lbnRfZm95ZXJfdG9fanNvb1xuICA6IFR5cGVMb2dlbWVudEZveWVyLnQgLT4gdHlwZV9sb2dlbWVudF9mb3llciBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBMb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUmVzaWRlbmNlU29jaWFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlJlc2lkZW5jZVNvY2lhbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBGb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXV0cmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdXRyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV9sb2dlbWVudF9mb3llcl9vZl9qc29vXG4gICh0eXBlX2xvZ2VtZW50X2ZveWVyIDogdHlwZV9sb2dlbWVudF9mb3llciBKcy50KSA6IFR5cGVMb2dlbWVudEZveWVyLnQgPVxuICBtYXRjaCB0eXBlX2xvZ2VtZW50X2ZveWVyIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiTG9nZW1lbnRQZXJzb25uZXNBZ2Vlc091SGFuZGljYXBlZXNcIiAtPlxuICAgIFR5cGVMb2dlbWVudEZveWVyLkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzICgpXG4gIHwgXCJSZXNpZGVuY2VTb2NpYWxlXCIgLT4gVHlwZUxvZ2VtZW50Rm95ZXIuUmVzaWRlbmNlU29jaWFsZSAoKVxuICB8IFwiRm95ZXJKZXVuZXNUcnZhaWxsZXVyc091TWlncmFudHNDb252ZW50aW9ubmVMMzUzXzJBdmFudDE5OTVcIiAtPlxuICAgIFR5cGVMb2dlbWVudEZveWVyLkZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1ICgpXG4gIHwgXCJBdXRyZVwiIC0+IFR5cGVMb2dlbWVudEZveWVyLkF1dHJlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlTG9nZW1lbnRGb3llci50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTXCJcbiAgICAgICAgLSBcIkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWVcIlxuICAgICAgICAtIFwiUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTZcIlxuICAgICAgICAtIFwiQXV0cmVzUGVyc29ubmVzXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfdG9fanNvb1xuICA6IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50IC0+IGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTZcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBdXRyZXNQZXJzb25uZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdXRyZXNQZXJzb25uZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgKGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gICAgOiBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50KVxuICA6IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID1cbiAgbWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIjIy5raW5kXG4gICAgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTXCIgLT5cbiAgICBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgKClcbiAgfCBcIkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWVcIiAtPlxuICAgIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlICgpXG4gIHwgXCJQZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNlwiIC0+XG4gICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2ICgpXG4gIHwgXCJBdXRyZXNQZXJzb25uZXNcIiAtPlxuICAgIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXMgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlBlcnNvbm5lU2V1bGVcIlxuICAgICAgICAtIFwiQ291cGxlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvb1xuICA6IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50IC0+IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFBlcnNvbm5lU2V1bGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQZXJzb25uZVNldWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQ291cGxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ291cGxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gIChzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCA6IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQpXG4gIDogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPVxuICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlBlcnNvbm5lU2V1bGVcIiAtPiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSAoKVxuICB8IFwiQ291cGxlXCIgLT4gU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGNvbGxlY3Rpdml0ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkd1YWRlbG91cGVcIlxuICAgICAgICAtIFwiR3V5YW5lXCJcbiAgICAgICAgLSBcIk1hcnRpbmlxdWVcIlxuICAgICAgICAtIFwiTGFSZXVuaW9uXCJcbiAgICAgICAgLSBcIlNhaW50QmFydGhlbGVteVwiXG4gICAgICAgIC0gXCJTYWludE1hcnRpblwiXG4gICAgICAgIC0gXCJNZXRyb3BvbGVcIlxuICAgICAgICAtIFwiU2FpbnRQaWVycmVFdE1pcXVlbG9uXCJcbiAgICAgICAgLSBcIk1heW90dGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBjb2xsZWN0aXZpdGVfdG9fanNvbyA6IENvbGxlY3Rpdml0ZS50IC0+IGNvbGxlY3Rpdml0ZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBHdWFkZWxvdXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR3VhZGVsb3VwZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEd1eWFuZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkd1eWFuZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE1hcnRpbmlxdWUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNYXJ0aW5pcXVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTGFSZXVuaW9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTGFSZXVuaW9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2FpbnRCYXJ0aGVsZW15IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiU2FpbnRCYXJ0aGVsZW15XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2FpbnRNYXJ0aW4gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTYWludE1hcnRpblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE1ldHJvcG9sZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1ldHJvcG9sZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE1heW90dGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNYXlvdHRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBjb2xsZWN0aXZpdGVfb2ZfanNvbyAoY29sbGVjdGl2aXRlIDogY29sbGVjdGl2aXRlIEpzLnQpXG4gIDogQ29sbGVjdGl2aXRlLnQgPVxuICBtYXRjaCBjb2xsZWN0aXZpdGUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJHdWFkZWxvdXBlXCIgLT4gQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKClcbiAgfCBcIkd1eWFuZVwiIC0+IENvbGxlY3Rpdml0ZS5HdXlhbmUgKClcbiAgfCBcIk1hcnRpbmlxdWVcIiAtPiBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKVxuICB8IFwiTGFSZXVuaW9uXCIgLT4gQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKVxuICB8IFwiU2FpbnRCYXJ0aGVsZW15XCIgLT4gQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSAoKVxuICB8IFwiU2FpbnRNYXJ0aW5cIiAtPiBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gKClcbiAgfCBcIk1ldHJvcG9sZVwiIC0+IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKClcbiAgfCBcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiIC0+IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gKClcbiAgfCBcIk1heW90dGVcIiAtPiBDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnQ29sbGVjdGl2aXRlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHByaXNlX2VuX2NoYXJnZV9lbmZhbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zXCJcbiAgICAgICAgLSBcIkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZVwiXG4gICAgICAgIC0gXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIlxuICAgICAgICAtIFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGVcIlxuICAgICAgICAtIFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eFwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHByaXNlX2VuX2NoYXJnZV9lbmZhbnRfdG9fanNvb1xuICA6IFByaXNlRW5DaGFyZ2VFbmZhbnQudCAtPiBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50X29mX2pzb29cbiAgKHByaXNlX2VuX2NoYXJnZV9lbmZhbnQgOiBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50IEpzLnQpXG4gIDogUHJpc2VFbkNoYXJnZUVuZmFudC50ID1cbiAgbWF0Y2ggcHJpc2VfZW5fY2hhcmdlX2VuZmFudCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2VFbmZhbnQuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyAoKVxuICB8IFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCIgLT5cbiAgICBQcmlzZUVuQ2hhcmdlRW5mYW50LkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSAoKVxuICB8IFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCIgLT4gUHJpc2VFbkNoYXJnZUVuZmFudC5FZmZlY3RpdmVFdFBlcm1hbmVudGUgKClcbiAgfCBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlXCIgLT5cbiAgICBQcmlzZUVuQ2hhcmdlRW5mYW50LlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlICgpXG4gIHwgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCIgLT5cbiAgICBQcmlzZUVuQ2hhcmdlRW5mYW50LlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1ByaXNlRW5DaGFyZ2VFbmZhbnQudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJBdmFudFwiXG4gICAgICAgIC0gXCJQZW5kYW50XCJcbiAgICAgICAgLSBcIkFwcmVzXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfdG9fanNvb1xuICA6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50IC0+IHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEF2YW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXZhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBQZW5kYW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGVuZGFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFwcmVzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXByZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX29mX2pzb29cbiAgKHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIDogc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudClcbiAgOiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudCA9XG4gIG1hdGNoIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQXZhbnRcIiAtPiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgKClcbiAgfCBcIlBlbmRhbnRcIiAtPiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCAoKVxuICB8IFwiQXByZXNcIiAtPiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1NpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50XCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXG4gICAgICAgIC0gXCJDb21wbGVtZW50RmFtaWxpYWxcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkxvZ2VtZW50XCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cbiAgOiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgLT4gZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbnNGYW1pbGlhbGVzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQ29tcGxlbWVudEZhbWlsaWFsIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ29tcGxlbWVudEZhbWlsaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkxvZ2VtZW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkxvZ2VtZW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX29mX2pzb29cbiAgKGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA6IGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50KVxuICA6IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9XG4gIG1hdGNoIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudCAoKVxuICB8IFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25zRmFtaWxpYWxlcyAoKVxuICB8IFwiQ29tcGxlbWVudEZhbWlsaWFsXCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkNvbXBsZW1lbnRGYW1pbGlhbCAoKVxuICB8IFwiQWxsb2NhdGlvbkxvZ2VtZW50XCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25Mb2dlbWVudCAoKVxuICB8IFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlICgpXG4gIHwgXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgKClcbiAgfCBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZSAoKVxuICB8IFwiQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGVcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0VsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwgPVxuICBvYmplY3RcbiAgICBtZXRob2QgY29udmVudGlvbm5lTGl2cmVJSUlUaXRyZVZDaGFwSUlJOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZWR1Y3Rpb25Mb3llclNvbGlkYXJpdGVQZXJjdWU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbF90b19qc29vIChjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbFxuICAgIDogQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLnQpIDogY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgY29udmVudGlvbm5lTGl2cmVJSUlUaXRyZVZDaGFwSUlJID1cbiAgICAgICAgSnMuYm9vbCBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbC5jb252ZW50aW9ubmVfbGl2cmVfSUlJX3RpdHJlX1ZfY2hhcF9JSUlcbiAgICAgIHZhbCByZWR1Y3Rpb25Mb3llclNvbGlkYXJpdGVQZXJjdWUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfcGVyY3VlXG4gICAgICBlbmRcbiAgbGV0IGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsX29mX2pzb29cbiAgICAoY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwgOiBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbCBKcy50KSA6XG4gICAgQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLnQgPVxuICAgIHtcbiAgICAgIGNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSSA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbCMjLmNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVWQ2hhcElJSTtcbiAgICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX3BlcmN1ZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbCMjLnJlZHVjdGlvbkxveWVyU29saWRhcml0ZVBlcmN1ZVxuICAgIH1cblxuY2xhc3MgdHlwZSBjb252ZW50aW9uX2Ffbl9oX2EgPVxuICBvYmplY3RcbiAgICBtZXRob2QgY29udmVudGlvbm5lTGl2cmVJSUlUaXRyZUlJQ2hhcElTZWMzOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNvbnZlbnRpb25fYV9uX2hfYV90b19qc29vIChjb252ZW50aW9uX2Ffbl9oX2EgOiBDb252ZW50aW9uQU5IQS50KVxuICAgIDogY29udmVudGlvbl9hX25faF9hIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVJSUNoYXBJU2VjMyA9XG4gICAgICAgIEpzLmJvb2wgY29udmVudGlvbl9hX25faF9hLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfSUlfY2hhcF9JX3NlY18zXG4gICAgICBlbmRcbiAgbGV0IGNvbnZlbnRpb25fYV9uX2hfYV9vZl9qc29vXG4gICAgKGNvbnZlbnRpb25fYV9uX2hfYSA6IGNvbnZlbnRpb25fYV9uX2hfYSBKcy50KSA6IENvbnZlbnRpb25BTkhBLnQgPVxuICAgIHtcbiAgICAgIGNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfSUlfY2hhcF9JX3NlY18zID1cbiAgICAgICAgSnMudG9fYm9vbCBjb252ZW50aW9uX2Ffbl9oX2EjIy5jb252ZW50aW9ubmVMaXZyZUlJSVRpdHJlSUlDaGFwSVNlYzNcbiAgICB9XG5cbmNsYXNzIHR5cGUgcGVyc29ubmVfc291c19sb2NhdGlvbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlTmFpc3NhbmNlUGVyc29ubmVTb3VzTG9jYXRpb246XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbmZvcm1lQXJ0aWNsZUw0NDIxOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHBlcnNvbm5lX3NvdXNfbG9jYXRpb25fdG9fanNvbyAocGVyc29ubmVfc291c19sb2NhdGlvblxuICAgIDogUGVyc29ubmVTb3VzTG9jYXRpb24udCkgOiBwZXJzb25uZV9zb3VzX2xvY2F0aW9uIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVOYWlzc2FuY2VQZXJzb25uZVNvdXNMb2NhdGlvbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBwZXJzb25uZV9zb3VzX2xvY2F0aW9uLmRhdGVfbmFpc3NhbmNlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb25cbiAgICAgIHZhbCBjb25mb3JtZUFydGljbGVMNDQyMSA9XG4gICAgICAgIEpzLmJvb2wgcGVyc29ubmVfc291c19sb2NhdGlvbi5jb25mb3JtZV9hcnRpY2xlX2w0NDJfMVxuICAgICAgZW5kXG4gIGxldCBwZXJzb25uZV9zb3VzX2xvY2F0aW9uX29mX2pzb29cbiAgICAocGVyc29ubmVfc291c19sb2NhdGlvbiA6IHBlcnNvbm5lX3NvdXNfbG9jYXRpb24gSnMudCkgOlxuICAgIFBlcnNvbm5lU291c0xvY2F0aW9uLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfbmFpc3NhbmNlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBwZXJzb25uZV9zb3VzX2xvY2F0aW9uIyMuZGF0ZU5haXNzYW5jZVBlcnNvbm5lU291c0xvY2F0aW9uO1xuICAgICAgY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzEgPVxuICAgICAgICBKcy50b19ib29sIHBlcnNvbm5lX3NvdXNfbG9jYXRpb24jIy5jb25mb3JtZUFydGljbGVMNDQyMVxuICAgIH1cblxuY2xhc3MgdHlwZSBwYXRyaW1vaW5lID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHByb2R1aXNhbnRSZXZlbnVQZXJpb2RlUjgyMjMzUjgyMjQ6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5lUHJvZHVpc2FudFBhc1JldmVudVBlcmlvZGVSODIyMzNSODIyNDpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwYXRyaW1vaW5lX3RvX2pzb28gKHBhdHJpbW9pbmUgOiBQYXRyaW1vaW5lLnQpIDogcGF0cmltb2luZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBwcm9kdWlzYW50UmV2ZW51UGVyaW9kZVI4MjIzM1I4MjI0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHBhdHJpbW9pbmUucHJvZHVpc2FudF9yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzRcbiAgICAgIHZhbCBuZVByb2R1aXNhbnRQYXNSZXZlbnVQZXJpb2RlUjgyMjMzUjgyMjQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcGF0cmltb2luZS5uZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzRcbiAgICAgIGVuZFxuICBsZXQgcGF0cmltb2luZV9vZl9qc29vIChwYXRyaW1vaW5lIDogcGF0cmltb2luZSBKcy50KSA6IFBhdHJpbW9pbmUudCA9XG4gICAge1xuICAgICAgcHJvZHVpc2FudF9yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcGF0cmltb2luZSMjLnByb2R1aXNhbnRSZXZlbnVQZXJpb2RlUjgyMjMzUjgyMjQ7XG4gICAgICBuZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcGF0cmltb2luZSMjLm5lUHJvZHVpc2FudFBhc1JldmVudVBlcmlvZGVSODIyMzNSODIyNFxuICAgIH1cblxuY2xhc3MgdHlwZSBjb25kaXRpb25zX2V0cmFuZ2VycyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBzYXRpc2ZhaXRDb25kaXRpb25zTDUxMjJDb2RlU2VjdXJpdGVTb2NpYWxlOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjb25kaXRpb25zX2V0cmFuZ2Vyc190b19qc29vIChjb25kaXRpb25zX2V0cmFuZ2Vyc1xuICAgIDogQ29uZGl0aW9uc0V0cmFuZ2Vycy50KSA6IGNvbmRpdGlvbnNfZXRyYW5nZXJzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHNhdGlzZmFpdENvbmRpdGlvbnNMNTEyMkNvZGVTZWN1cml0ZVNvY2lhbGUgPVxuICAgICAgICBKcy5ib29sIGNvbmRpdGlvbnNfZXRyYW5nZXJzLnNhdGlzZmFpdF9jb25kaXRpb25zX2w1MTJfMl9jb2RlX3NlY3VyaXRlX3NvY2lhbGVcbiAgICAgIGVuZFxuICBsZXQgY29uZGl0aW9uc19ldHJhbmdlcnNfb2ZfanNvb1xuICAgIChjb25kaXRpb25zX2V0cmFuZ2VycyA6IGNvbmRpdGlvbnNfZXRyYW5nZXJzIEpzLnQpIDpcbiAgICBDb25kaXRpb25zRXRyYW5nZXJzLnQgPVxuICAgIHtcbiAgICAgIHNhdGlzZmFpdF9jb25kaXRpb25zX2w1MTJfMl9jb2RlX3NlY3VyaXRlX3NvY2lhbGUgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY29uZGl0aW9uc19ldHJhbmdlcnMjIy5zYXRpc2ZhaXRDb25kaXRpb25zTDUxMjJDb2RlU2VjdXJpdGVTb2NpYWxlXG4gICAgfVxuXG5jbGFzcyB0eXBlIHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkdXJlZVJlc2lkZW5jZUR1cmFudFBlcmlvZGVSODIyMzFTdXBlcmlldXJlQTZNb2lzOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlczogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llcl90b19qc29vXG4gICAgKHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llclxuICAgIDogUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIudClcbiAgICA6IHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llciBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkdXJlZVJlc2lkZW5jZUR1cmFudFBlcmlvZGVSODIyMzFTdXBlcmlldXJlQTZNb2lzID1cbiAgICAgICAgSnMuYm9vbCBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXIuZHVyZWVfcmVzaWRlbmNlX2R1cmFudF9wZXJpb2RlX3JfODIyXzNfMV9zdXBlcmlldXJlX2FfNl9tb2lzXG4gICAgICB2YWwgcmVzc291cmNlcyA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXIucmVzc291cmNlc1xuICAgICAgZW5kXG4gIGxldCBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXJfb2ZfanNvb1xuICAgIChwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXJcbiAgICAgIDogcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyIEpzLnQpIDpcbiAgICBQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci50ID1cbiAgICB7XG4gICAgICBkdXJlZV9yZXNpZGVuY2VfZHVyYW50X3BlcmlvZGVfcl84MjJfM18xX3N1cGVyaWV1cmVfYV82X21vaXMgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyXG4gICAgICAgICAgIyMuZHVyZWVSZXNpZGVuY2VEdXJhbnRQZXJpb2RlUjgyMjMxU3VwZXJpZXVyZUE2TW9pcztcbiAgICAgIHJlc3NvdXJjZXMgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyIyMucmVzc291cmNlc1xuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVsaWdpYmlsaXRlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGU6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGU6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgICA6IEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC50KVxuICAgIDogZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZSA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQuZGF0ZV9jb3VyYW50ZVxuICAgICAgdmFsIGVsaWdpYmlsaXRlID1cbiAgICAgICAgSnMuYm9vbCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQuZWxpZ2liaWxpdGVcbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGUgPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXG4gICAgICB2YWwgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZSA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgeCkgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVcbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gICAgICA6IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCBKcy50KSA6XG4gICAgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGUgPVxuICAgICAgICBkYXRlX29mX2pzb28gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IyMuZGF0ZUNvdXJhbnRlO1xuICAgICAgZWxpZ2liaWxpdGUgPVxuICAgICAgICBKcy50b19ib29sIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCMjLmVsaWdpYmlsaXRlO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGU7XG4gICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAgICAgICAgICMjLmNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50ID1cbiAgb2JqZWN0IG1ldGhvZCBtb250YW50UHJpbWVEZW1lbmFnZW1lbnQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgOiBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnQudClcbiAgICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb250YW50UHJpbWVEZW1lbmFnZW1lbnQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50Lm1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50XG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudFxuICAgICAgOiBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudC50ID1cbiAgICB7XG4gICAgICBtb250YW50X3ByaW1lX2RlbWVuYWdlbWVudCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQjIy5tb250YW50UHJpbWVEZW1lbmFnZW1lbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gIG9iamVjdCBtZXRob2QgcmVzc291cmNlc1ByaXNlc0VuQ29tcHRlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vXG4gICAgKHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICA6IFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudClcbiAgICA6IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgcmVzc291cmNlc1ByaXNlc0VuQ29tcHRlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQucmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlXG4gICAgICBlbmRcbiAgbGV0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAgIChyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICA6IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCkgOlxuICAgIFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9XG4gICAge1xuICAgICAgcmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQjIy5yZXNzb3VyY2VzUHJpc2VzRW5Db21wdGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtb250YW50OlxuICAgICAgKEpzLm51bWJlciBKcy50LCAgSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvb1xuICAgIChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudClcbiAgICA6IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICBtZXRob2QgbW9udGFudCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50Lm1vbnRhbnQgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgaW5wdXQpKSlcbiAgICAgIGVuZFxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgKGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIDogY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50KSA6XG4gICAgQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnQgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnbW9udGFudCcgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtb250YW50Rm9yZmFpdGFpcmVDaGFyZ2VzRDgyMzE2OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBsYWZvbmRMb3llckQ4MjMxNjI6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGFydGljaXBhdGlvbk1pbmltYWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRhdXhDb21wb3NpdGlvbkZhbWlsaWFsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwYXJ0aWNpcGF0aW9uUGVyc29ubmVsbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAoSnMubnVtYmVyIEpzLnQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX3RvX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gICAgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50KVxuICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXNEODIzMTYgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XG4gICAgICB2YWwgcGxhZm9uZExveWVyRDgyMzE2MiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYucGxhZm9uZF9sb3llcl9kODIzXzE2XzJcbiAgICAgIHZhbCBwYXJ0aWNpcGF0aW9uTWluaW1hbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmLnBhcnRpY2lwYXRpb25fbWluaW1hbGVcbiAgICAgIHZhbCB0YXV4Q29tcG9zaXRpb25GYW1pbGlhbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVcbiAgICAgIHZhbCBwYXJ0aWNpcGF0aW9uUGVyc29ubmVsbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmLnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIGlucHV0KSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9vZl9qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZlxuICAgICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYgSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZlxuICAgICAgICAgICMjLm1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXNEODIzMTY7XG4gICAgICBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYjIy5wbGFmb25kTG95ZXJEODIzMTYyO1xuICAgICAgcGFydGljaXBhdGlvbl9taW5pbWFsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYjIy5wYXJ0aWNpcGF0aW9uTWluaW1hbGU7XG4gICAgICB0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gICAgICAgICAgIyMudGF1eENvbXBvc2l0aW9uRmFtaWxpYWxlO1xuICAgICAgcGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZcbiAgICAgICAgICAjIy5wYXJ0aWNpcGF0aW9uUGVyc29ubmVsbGU7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiMjLmFpZGVGaW5hbGVGb3JtdWxlO1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlID1cbiAgb2JqZWN0IG1ldGhvZCBtb250YW50OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX3RvX2pzb29cbiAgICAoY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLnQpXG4gICAgOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUubW9udGFudFxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb2ZfanNvb1xuICAgIChjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcbiAgICAgIDogY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIEpzLnQpIDpcbiAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUudCA9XG4gICAge1xuICAgICAgbW9udGFudCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUjIy5tb250YW50XG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciA9XG4gIG9iamVjdCBtZXRob2Qgbk5vbWJyZVBhcnRzRDgzMjI1OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyIDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIudClcbiAgICA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBuTm9tYnJlUGFydHNEODMyMjUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgIChjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJcbiAgICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyIEpzLnQpIDpcbiAgICBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci50ID1cbiAgICB7XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIjIy5uTm9tYnJlUGFydHNEODMyMjVcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBjb2VmZmljaWVudE11bHRpcGxpY2F0ZXVyRDgzMjI1OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvZWZmaWNpZW50UkQ4MzIyNTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuTm9tYnJlUGFydHNEODMyMjU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZXF1aXZhbGVuY2VMb3llckVsaWdpYmxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBsYWZvbmRFcXVpdmFsZW5jZUxveWVyRWxpZ2libGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZXF1aXZhbGVuY2VMb3llck1pbmltYWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZUQ4MzIyNTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhaWRlRmluYWxlRm9ybXVsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZTpcbiAgICAgIChKcy5udW1iZXIgSnMudCwgIEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llclxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvZWZmaWNpZW50TXVsdGlwbGljYXRldXJEODMyMjUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XG4gICAgICB2YWwgY29lZmZpY2llbnRSRDgzMjI1ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1XG4gICAgICB2YWwgbk5vbWJyZVBhcnRzRDgzMjI1ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1XG4gICAgICB2YWwgZXF1aXZhbGVuY2VMb3llckVsaWdpYmxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVcbiAgICAgIHZhbCBwbGFmb25kRXF1aXZhbGVuY2VMb3llckVsaWdpYmxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZVxuICAgICAgdmFsIGVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyLmVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXG4gICAgICB2YWwgY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlRDgzMjI1ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNVxuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llclxuICAgICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudCA9XG4gICAge1xuICAgICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gICAgICAgICAgIyMuY29lZmZpY2llbnRNdWx0aXBsaWNhdGV1ckQ4MzIyNTtcbiAgICAgIGNvZWZmaWNpZW50X3JfZDgzMl8yNSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIyMuY29lZmZpY2llbnRSRDgzMjI1O1xuICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNSA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciMjLm5Ob21icmVQYXJ0c0Q4MzIyNTtcbiAgICAgIGVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIjIy5lcXVpdmFsZW5jZUxveWVyRWxpZ2libGU7XG4gICAgICBwbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJcbiAgICAgICAgICAjIy5wbGFmb25kRXF1aXZhbGVuY2VMb3llckVsaWdpYmxlO1xuICAgICAgZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciMjLmVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZTtcbiAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gICAgICAgICAgIyMuY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlRDgzMjI1O1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGUgPVxuICBvYmplY3QgbWV0aG9kIG5Ob21icmVQYXJ0c0Q4MzIxMTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV90b19qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgIDogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUudClcbiAgICA6IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBuTm9tYnJlUGFydHNEODMyMTEgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGUubl9ub21icmVfcGFydHNfZDgzMl8xMVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfb2ZfanNvb1xuICAgIChjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQpIDpcbiAgICBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICB7XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGUjIy5uTm9tYnJlUGFydHNEODMyMTFcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1lbnN1YWxpdGVFbGlnaWJsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtZW5zdWFsaXRlTWluaW1hbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlRDgzMjEwOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlOlxuICAgICAgKEpzLm51bWJlciBKcy50LCAgSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50KVxuICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbnN1YWxpdGVFbGlnaWJsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUubWVuc3VhbGl0ZV9lbGlnaWJsZVxuICAgICAgdmFsIG1lbnN1YWxpdGVNaW5pbWFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUubWVuc3VhbGl0ZV9taW5pbWFsZVxuICAgICAgdmFsIGNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZUQ4MzIxMCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZS5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMFxuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgaW5wdXQpKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50KSA6XG4gICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICB7XG4gICAgICBtZW5zdWFsaXRlX2VsaWdpYmxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgICAgICMjLm1lbnN1YWxpdGVFbGlnaWJsZTtcbiAgICAgIG1lbnN1YWxpdGVfbWluaW1hbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICAgICAgIyMubWVuc3VhbGl0ZU1pbmltYWxlO1xuICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTAgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgICAgICMjLmNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZUQ4MzIxMDtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICAgICAgIyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSB0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAoSnMubnVtYmVyIEpzLnQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlX3RvX2pzb28gKHRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZVxuICAgIDogVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnQpIDogdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAodHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgaW5wdXQpKSlcbiAgICAgIGVuZFxuICBsZXQgdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlX29mX2pzb29cbiAgICAodHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlIDogdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlIEpzLnQpIDpcbiAgICBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudCA9XG4gICAge1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICB0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUjIy5haWRlRmluYWxlRm9ybXVsZTtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAoSnMubnVtYmVyIEpzLnQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAgICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCMjLmFpZGVGaW5hbGVGb3JtdWxlO1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYW5jaWVuTG95ZXJQcmluY2lwYWw6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYW5jaWVubmVBbGxvY2F0aW9uTG9nZW1lbnQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF90b19qc29vXG4gICAgKGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IDogSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50KVxuICAgIDogaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYW5jaWVuTG95ZXJQcmluY2lwYWwgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQuYW5jaWVuX2xveWVyX3ByaW5jaXBhbFxuICAgICAgdmFsIGFuY2llbm5lQWxsb2NhdGlvbkxvZ2VtZW50ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80LmFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICAgIGVuZFxuICBsZXQgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfanNvb1xuICAgIChpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNFxuICAgICAgOiBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCBKcy50KSA6XG4gICAgSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50ID1cbiAgICB7XG4gICAgICBhbmNpZW5fbG95ZXJfcHJpbmNpcGFsID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IyMuYW5jaWVuTG95ZXJQcmluY2lwYWw7XG4gICAgICBhbmNpZW5uZV9hbGxvY2F0aW9uX2xvZ2VtZW50ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IyMuYW5jaWVubmVBbGxvY2F0aW9uTG9nZW1lbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBhaWRlRmluYWxlRm9ybXVsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZTpcbiAgICAgIChKcy5udW1iZXIgSnMudCwgIEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX3RvX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudClcbiAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIGlucHV0KSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmXG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYgSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudCA9XG4gICAge1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmIyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlOlxuICAgICAgKEpzLm51bWJlciBKcy50LCAgSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudClcbiAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIGlucHV0KSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICB7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUjIy5haWRlRmluYWxlRm9ybXVsZTtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlcXVpdmFsZW5jZUxveWVyOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXM6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG95ZXJNaW5pbWFsOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlOlxuICAgICAgKEpzLm51bWJlciBKcy50LCAgSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXG4gICAgICB2YWwgZXF1aXZhbGVuY2VMb3llciA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llci5lcXVpdmFsZW5jZV9sb3llclxuICAgICAgdmFsIG1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXMgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXG4gICAgICB2YWwgbG95ZXJNaW5pbWFsID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyLmxveWVyX21pbmltYWxcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID1cbiAgICB7XG4gICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIyMuY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlO1xuICAgICAgZXF1aXZhbGVuY2VfbG95ZXIgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIjIy5lcXVpdmFsZW5jZUxveWVyO1xuICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIyMubW9udGFudEZvcmZhaXRhaXJlQ2hhcmdlcztcbiAgICAgIGxveWVyX21pbmltYWwgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIjIy5sb3llck1pbmltYWw7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBhaWRlRmluYWxlRm9ybXVsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZTpcbiAgICAgIChKcy5udW1iZXIgSnMudCwgIEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF90b19qc29vIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudFxuICAgIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnQpIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgaW5wdXQpKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudCA9XG4gICAge1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCMjLmFpZGVGaW5hbGVGb3JtdWxlO1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBhZ2VPdXZlcnR1cmVEcm9pdDpcbiAgICAgIFJ1bnRpbWVfanNvby5SdW50aW1lLmR1cmF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfdG9fanNvbyAob3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVxuICAgIDogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUudCkgOiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFnZU91dmVydHVyZURyb2l0ID1cbiAgICAgICAgZHVyYXRpb25fdG9fanNvbyBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlLmFnZV9vdXZlcnR1cmVfZHJvaXRcbiAgICAgIGVuZFxuICBsZXQgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9vZl9qc29vXG4gICAgKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUgOiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIEpzLnQpIDpcbiAgICBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZS50ID1cbiAgICB7XG4gICAgICBhZ2Vfb3V2ZXJ0dXJlX2Ryb2l0ID1cbiAgICAgICAgZHVyYXRpb25fb2ZfanNvbyBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIyMuYWdlT3V2ZXJ0dXJlRHJvaXRcbiAgICB9XG5cbmNsYXNzIHR5cGUgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRJbXBheWU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF90b19qc29vIChpbXBheWVfZGVwZW5zZV9sb2dlbWVudFxuICAgIDogSW1wYXllRGVwZW5zZUxvZ2VtZW50LnQpIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudEltcGF5ZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudC5tb250YW50X2ltcGF5ZVxuICAgICAgZW5kXG4gIGxldCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vZl9qc29vXG4gICAgKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50IDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgSnMudCkgOlxuICAgIEltcGF5ZURlcGVuc2VMb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBtb250YW50X2ltcGF5ZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbXBheWVfZGVwZW5zZV9sb2dlbWVudCMjLm1vbnRhbnRJbXBheWVcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBlbGlnaWJpbGl0ZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAoSnMubnVtYmVyIEpzLnQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGU6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X3RvX2pzb28gKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRcbiAgICA6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudCkgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGVsaWdpYmlsaXRlID0gSnMuYm9vbCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50LmVsaWdpYmlsaXRlXG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudC50cmFpdGVtZW50X2FpZGVfZmluYWxlIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIGlucHV0KSkpXG4gICAgICB2YWwgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZSA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgeCkgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfb2ZfanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCBKcy50KSA6XG4gICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBlbGlnaWJpbGl0ZSA9IEpzLnRvX2Jvb2wgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCMjLmVsaWdpYmlsaXRlO1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudFxuICAgICAgICAgICMjLmNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBlbGlnaWJpbGl0ZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfdG9fanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlXG4gICAgOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS50KVxuICAgIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBlbGlnaWJpbGl0ZSA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZS5lbGlnaWJpbGl0ZVxuICAgICAgdmFsIGFpZGVGaW5hbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZS5haWRlX2ZpbmFsZVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX29mX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZVxuICAgICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlIEpzLnQpIDpcbiAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS50ID1cbiAgICB7XG4gICAgICBlbGlnaWJpbGl0ZSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSMjLmVsaWdpYmlsaXRlO1xuICAgICAgYWlkZV9maW5hbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSMjLmFpZGVGaW5hbGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdCBtZXRob2QgbW9udGFudDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpXG4gICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vbnRhbnQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5tb250YW50XG4gICAgICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9XG4gICAge1xuICAgICAgbW9udGFudCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIyMubW9udGFudFxuICAgIH1cblxuY2xhc3MgdHlwZSBzbWljID1cbiAgb2JqZWN0IG1ldGhvZCBicnV0SG9yYWlyZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHNtaWNfdG9fanNvbyAoc21pYyA6IFNtaWMudCkgOiBzbWljIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGJydXRIb3JhaXJlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHNtaWMuYnJ1dF9ob3JhaXJlXG4gICAgICBlbmRcbiAgbGV0IHNtaWNfb2ZfanNvbyAoc21pYyA6IHNtaWMgSnMudCkgOiBTbWljLnQgPVxuICAgIHtcbiAgICAgIGJydXRfaG9yYWlyZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBzbWljIyMuYnJ1dEhvcmFpcmVcbiAgICB9XG5cbmNsYXNzIHR5cGUgcHJldCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCB0eXBlUHJldDogdHlwZV9wcmV0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlU2lnbmF0dXJlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRpdHVsYWlyZVByZXQ6IHRpdHVsYWlyZV9wcmV0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHByZXRfdG9fanNvbyAocHJldCA6IFByZXQudCkgOiBwcmV0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHR5cGVQcmV0ID0gdHlwZV9wcmV0X3RvX2pzb28gcHJldC50eXBlX3ByZXRcbiAgICAgIHZhbCBkYXRlU2lnbmF0dXJlID0gZGF0ZV90b19qc29vIHByZXQuZGF0ZV9zaWduYXR1cmVcbiAgICAgIHZhbCB0aXR1bGFpcmVQcmV0ID0gdGl0dWxhaXJlX3ByZXRfdG9fanNvbyBwcmV0LnRpdHVsYWlyZV9wcmV0XG4gICAgICBlbmRcbiAgbGV0IHByZXRfb2ZfanNvbyAocHJldCA6IHByZXQgSnMudCkgOiBQcmV0LnQgPVxuICAgIHtcbiAgICAgIHR5cGVfcHJldCA9IHR5cGVfcHJldF9vZl9qc29vIHByZXQjIy50eXBlUHJldDtcbiAgICAgIGRhdGVfc2lnbmF0dXJlID0gZGF0ZV9vZl9qc29vIHByZXQjIy5kYXRlU2lnbmF0dXJlO1xuICAgICAgdGl0dWxhaXJlX3ByZXQgPSB0aXR1bGFpcmVfcHJldF9vZl9qc29vIHByZXQjIy50aXR1bGFpcmVQcmV0XG4gICAgfVxuXG5jbGFzcyB0eXBlIG5ldWZfb3VfYW5jaWVuID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiTmV1ZlwiXG4gICAgICAgIC0gXCJBbmNpZW5cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBuZXVmX291X2FuY2llbl90b19qc29vIDogTmV1Zk91QW5jaWVuLnQgLT4gbmV1Zl9vdV9hbmNpZW4gSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgTmV1ZiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk5ldWZcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbmNpZW4gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbmNpZW5cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChhbWVsaW9yZV9wYXJfb2NjdXBhbnRfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbmV1Zl9vdV9hbmNpZW5fb2ZfanNvbyAobmV1Zl9vdV9hbmNpZW4gOiBuZXVmX291X2FuY2llbiBKcy50KVxuICA6IE5ldWZPdUFuY2llbi50ID1cbiAgbWF0Y2ggbmV1Zl9vdV9hbmNpZW4jIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJOZXVmXCIgLT4gTmV1Zk91QW5jaWVuLk5ldWYgKClcbiAgfCBcIkFuY2llblwiIC0+XG4gIE5ldWZPdUFuY2llbi5BbmNpZW4gKGFtZWxpb3JlX3Bhcl9vY2N1cGFudF9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIG5ldWZfb3VfYW5jaWVuIyMucGF5bG9hZCkpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdOZXVmT3VBbmNpZW4udCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdHJhbmNoZV9yZXZlbnUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgaGF1dDogbGltaXRlX3RyYW5jaGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJhczogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0YXV4OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgdHJhbmNoZV9yZXZlbnVfdG9fanNvbyAodHJhbmNoZV9yZXZlbnUgOiBUcmFuY2hlUmV2ZW51LnQpXG4gICAgOiB0cmFuY2hlX3JldmVudSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBoYXV0ID0gbGltaXRlX3RyYW5jaGVfdG9fanNvbyB0cmFuY2hlX3JldmVudS5oYXV0XG4gICAgICB2YWwgYmFzID0gSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHRyYW5jaGVfcmV2ZW51LmJhc1xuICAgICAgdmFsIHRhdXggPSBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCB0cmFuY2hlX3JldmVudS50YXV4XG4gICAgICBlbmRcbiAgbGV0IHRyYW5jaGVfcmV2ZW51X29mX2pzb28gKHRyYW5jaGVfcmV2ZW51IDogdHJhbmNoZV9yZXZlbnUgSnMudCkgOlxuICAgIFRyYW5jaGVSZXZlbnUudCA9XG4gICAge1xuICAgICAgaGF1dCA9IGxpbWl0ZV90cmFuY2hlX29mX2pzb28gdHJhbmNoZV9yZXZlbnUjIy5oYXV0O1xuICAgICAgYmFzID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHRyYW5jaGVfcmV2ZW51IyMuYmFzO1xuICAgICAgdGF1eCA9IGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIHRyYW5jaGVfcmV2ZW51IyMudGF1eFxuICAgIH1cblxuY2xhc3MgdHlwZSB0cmFuY2hlX3JldmVudV9kZWNpbWFsID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGhhdXQ6IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJhczogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0YXV4OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbF90b19qc29vICh0cmFuY2hlX3JldmVudV9kZWNpbWFsXG4gICAgOiBUcmFuY2hlUmV2ZW51RGVjaW1hbC50KSA6IHRyYW5jaGVfcmV2ZW51X2RlY2ltYWwgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaGF1dCA9IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfdG9fanNvbyB0cmFuY2hlX3JldmVudV9kZWNpbWFsLmhhdXRcbiAgICAgIHZhbCBiYXMgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCB0cmFuY2hlX3JldmVudV9kZWNpbWFsLmJhc1xuICAgICAgdmFsIHRhdXggPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCB0cmFuY2hlX3JldmVudV9kZWNpbWFsLnRhdXhcbiAgICAgIGVuZFxuICBsZXQgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbF9vZl9qc29vXG4gICAgKHRyYW5jaGVfcmV2ZW51X2RlY2ltYWwgOiB0cmFuY2hlX3JldmVudV9kZWNpbWFsIEpzLnQpIDpcbiAgICBUcmFuY2hlUmV2ZW51RGVjaW1hbC50ID1cbiAgICB7XG4gICAgICBoYXV0ID0gbGltaXRlX3RyYW5jaGVfZGVjaW1hbF9vZl9qc29vIHRyYW5jaGVfcmV2ZW51X2RlY2ltYWwjIy5oYXV0O1xuICAgICAgYmFzID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCMjLmJhcztcbiAgICAgIHRhdXggPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB0cmFuY2hlX3JldmVudV9kZWNpbWFsIyMudGF1eFxuICAgIH1cblxuY2xhc3MgdHlwZSBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlTmFpc3NhbmNlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXM6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYXNjZW5kYW50RGVzY2VuZGFudENvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGFyZW50ZTogcGFyZW50ZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaW5jYXBhY2l0ZTgwUG91cmNlbnRPdVJlc3RyaWN0aW9uRW1wbG9pOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlTDE2MTE5TDM1MThMNjQzM1NlY3U6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRpdHVsYWlyZUFsbG9jYXRpb25QZXJzb25uZUFnZWU6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2VfdG9fanNvbyAoYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2VcbiAgICA6IEF1dHJlUGVyc29ubmVBQ2hhcmdlLnQpIDogYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZU5haXNzYW5jZSA9IGRhdGVfdG9fanNvbyBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS5kYXRlX25haXNzYW5jZVxuICAgICAgdmFsIHJlc3NvdXJjZXMgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UucmVzc291cmNlc1xuICAgICAgdmFsIGFzY2VuZGFudERlc2NlbmRhbnRDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZSA9XG4gICAgICAgIEpzLmJvb2wgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UuYXNjZW5kYW50X2Rlc2NlbmRhbnRfY29sbGF0ZXJhbF9kZXV4aWVtZV90cm9pc2llbWVfZGVncmVcbiAgICAgIHZhbCBwYXJlbnRlID0gcGFyZW50ZV90b19qc29vIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLnBhcmVudGVcbiAgICAgIHZhbCBpbmNhcGFjaXRlODBQb3VyY2VudE91UmVzdHJpY3Rpb25FbXBsb2kgPVxuICAgICAgICBKcy5ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLmluY2FwYWNpdGVfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pXG4gICAgICB2YWwgYmVuZWZpY2lhaXJlTDE2MTE5TDM1MThMNjQzM1NlY3UgPVxuICAgICAgICBKcy5ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLmJlbmVmaWNpYWlyZV9sMTYxXzE5X2wzNTFfOF9sNjQzXzNfc2VjdVxuICAgICAgdmFsIHRpdHVsYWlyZUFsbG9jYXRpb25QZXJzb25uZUFnZWUgPVxuICAgICAgICBKcy5ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLnRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWVcbiAgICAgIGVuZFxuICBsZXQgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvb1xuICAgIChhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSA6IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIEpzLnQpIDpcbiAgICBBdXRyZVBlcnNvbm5lQUNoYXJnZS50ID1cbiAgICB7XG4gICAgICBkYXRlX25haXNzYW5jZSA9IGRhdGVfb2ZfanNvbyBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSMjLmRhdGVOYWlzc2FuY2U7XG4gICAgICByZXNzb3VyY2VzID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIyMucmVzc291cmNlcztcbiAgICAgIGFzY2VuZGFudF9kZXNjZW5kYW50X2NvbGxhdGVyYWxfZGV1eGllbWVfdHJvaXNpZW1lX2RlZ3JlID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlXG4gICAgICAgICAgIyMuYXNjZW5kYW50RGVzY2VuZGFudENvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlO1xuICAgICAgcGFyZW50ZSA9IHBhcmVudGVfb2ZfanNvbyBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSMjLnBhcmVudGU7XG4gICAgICBpbmNhcGFjaXRlXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaSA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSMjLmluY2FwYWNpdGU4MFBvdXJjZW50T3VSZXN0cmljdGlvbkVtcGxvaTtcbiAgICAgIGJlbmVmaWNpYWlyZV9sMTYxXzE5X2wzNTFfOF9sNjQzXzNfc2VjdSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UjIy5iZW5lZmljaWFpcmVMMTYxMTlMMzUxOEw2NDMzU2VjdTtcbiAgICAgIHRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWUgPVxuICAgICAgICBKcy50b19ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIyMudGl0dWxhaXJlQWxsb2NhdGlvblBlcnNvbm5lQWdlZVxuICAgIH1cblxuY2xhc3MgdHlwZSBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk1vaW5zRGVUcm9pc0VuZmFudHNcIlxuICAgICAgICAtIFwiUGx1c0RlVHJvaXNFbmZhbnRzXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRfdG9fanNvb1xuICA6IERhdGVOYWlzc2FuY2VUcm9pc2llbWVPdURlcm5pZXJQbHVzRW5mYW50LnQgLT4gZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgTW9pbnNEZVRyb2lzRW5mYW50cyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1vaW5zRGVUcm9pc0VuZmFudHNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBQbHVzRGVUcm9pc0VuZmFudHMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQbHVzRGVUcm9pc0VuZmFudHNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZV90b19qc29vIGFyZykpXG4gICAgZW5kXG5cbmxldCBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudF9vZl9qc29vXG4gIChkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudFxuICAgIDogZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQgSnMudClcbiAgOiBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC50ID1cbiAgbWF0Y2ggZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQjIy5raW5kXG4gICAgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIk1vaW5zRGVUcm9pc0VuZmFudHNcIiAtPlxuICAgIERhdGVOYWlzc2FuY2VUcm9pc2llbWVPdURlcm5pZXJQbHVzRW5mYW50Lk1vaW5zRGVUcm9pc0VuZmFudHMgKClcbiAgfCBcIlBsdXNEZVRyb2lzRW5mYW50c1wiIC0+XG4gIERhdGVOYWlzc2FuY2VUcm9pc2llbWVPdURlcm5pZXJQbHVzRW5mYW50LlBsdXNEZVRyb2lzRW5mYW50cyAoZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2Vfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudCMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBlbGlnaWJpbGl0ZTpcbiAgICAgIHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF90b19qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50KVxuICAgIDogZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBlbGlnaWJpbGl0ZSA9XG4gICAgICAgIHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF90b19qc29vIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQuZWxpZ2liaWxpdGVcbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGUgPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVxuICAgICAgdmFsIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGUgPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IHgpIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZVxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIGVsaWdpYmlsaXRlID1cbiAgICAgICAgdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X29mX2pzb29cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IyMuZWxpZ2liaWxpdGU7XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGU7XG4gICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICAgICAgICAjIy5jb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGxvZ2VtZW50X2ZveWVyID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHR5cGVVc2VyOiB0eXBlX2xvZ2VtZW50X2ZveWVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZW1wbGl0Q29uZGl0aW9uc1I4MzIyMTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29udmVudGlvbm5lTGl2cmVJSUlUaXRyZVZDaGFwSUlJOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ29udmVudGlvbm5lbWVudDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25zdHJ1aXRBcHBsaWNhdGlvbkxvaTE5NTcxMklJSTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkZXZhbmNlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTY6XG4gICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBsb2dlbWVudF9mb3llcl90b19qc29vIChsb2dlbWVudF9mb3llciA6IExvZ2VtZW50Rm95ZXIudClcbiAgICA6IGxvZ2VtZW50X2ZveWVyIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHR5cGVVc2VyID0gdHlwZV9sb2dlbWVudF9mb3llcl90b19qc29vIGxvZ2VtZW50X2ZveWVyLnR5cGVfdXNlclxuICAgICAgdmFsIHJlbXBsaXRDb25kaXRpb25zUjgzMjIxID1cbiAgICAgICAgSnMuYm9vbCBsb2dlbWVudF9mb3llci5yZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMVxuICAgICAgdmFsIGNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVWQ2hhcElJSSA9XG4gICAgICAgIEpzLmJvb2wgbG9nZW1lbnRfZm95ZXIuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJXG4gICAgICB2YWwgZGF0ZUNvbnZlbnRpb25uZW1lbnQgPVxuICAgICAgICBkYXRlX3RvX2pzb28gbG9nZW1lbnRfZm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50XG4gICAgICB2YWwgY29uc3RydWl0QXBwbGljYXRpb25Mb2kxOTU3MTJJSUkgPVxuICAgICAgICBKcy5ib29sIGxvZ2VtZW50X2ZveWVyLmNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUlcbiAgICAgIHZhbCByZWRldmFuY2UgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgbG9nZW1lbnRfZm95ZXIucmVkZXZhbmNlXG4gICAgICB2YWwgY2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckQ4NDIxNiA9XG4gICAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28gbG9nZW1lbnRfZm95ZXIuY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZcbiAgICAgIGVuZFxuICBsZXQgbG9nZW1lbnRfZm95ZXJfb2ZfanNvbyAobG9nZW1lbnRfZm95ZXIgOiBsb2dlbWVudF9mb3llciBKcy50KSA6XG4gICAgTG9nZW1lbnRGb3llci50ID1cbiAgICB7XG4gICAgICB0eXBlX3VzZXIgPSB0eXBlX2xvZ2VtZW50X2ZveWVyX29mX2pzb28gbG9nZW1lbnRfZm95ZXIjIy50eXBlVXNlcjtcbiAgICAgIHJlbXBsaXRfY29uZGl0aW9uc19yODMyXzIxID1cbiAgICAgICAgSnMudG9fYm9vbCBsb2dlbWVudF9mb3llciMjLnJlbXBsaXRDb25kaXRpb25zUjgzMjIxO1xuICAgICAgY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJID1cbiAgICAgICAgSnMudG9fYm9vbCBsb2dlbWVudF9mb3llciMjLmNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVWQ2hhcElJSTtcbiAgICAgIGRhdGVfY29udmVudGlvbm5lbWVudCA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBsb2dlbWVudF9mb3llciMjLmRhdGVDb252ZW50aW9ubmVtZW50O1xuICAgICAgY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbG9nZW1lbnRfZm95ZXIjIy5jb25zdHJ1aXRBcHBsaWNhdGlvbkxvaTE5NTcxMklJSTtcbiAgICAgIHJlZGV2YW5jZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBsb2dlbWVudF9mb3llciMjLnJlZGV2YW5jZTtcbiAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2ID1cbiAgICAgICAgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgICAgICAgIGxvZ2VtZW50X2ZveWVyIyMuY2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckQ4NDIxNlxuICAgIH1cblxuY2xhc3MgdHlwZSBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBpZGVudGlmaWFudDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgb2JsaWdhdGlvblNjb2xhaXJlOlxuICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlbXVuZXJhdGlvbk1lbnN1ZWxsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRGVOYWlzc2FuY2U6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcHJpc2VFbkNoYXJnZTogcHJpc2VfZW5fY2hhcmdlX2VuZmFudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQ6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb28gKGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCkgOiBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBpZGVudGlmaWFudCA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLmlkZW50aWZpYW50XG4gICAgICB2YWwgb2JsaWdhdGlvblNjb2xhaXJlID1cbiAgICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfdG9fanNvbyBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlXG4gICAgICB2YWwgcmVtdW5lcmF0aW9uTWVuc3VlbGxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGVcbiAgICAgIHZhbCBkYXRlRGVOYWlzc2FuY2UgPVxuICAgICAgICBkYXRlX3RvX2pzb28gZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9kZV9uYWlzc2FuY2VcbiAgICAgIHZhbCBwcmlzZUVuQ2hhcmdlID1cbiAgICAgICAgcHJpc2VfZW5fY2hhcmdlX2VuZmFudF90b19qc29vIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLnByaXNlX2VuX2NoYXJnZVxuICAgICAgdmFsIGFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy5ib29sIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIHZhbCBiZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50ID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIGVuZFxuICBsZXQgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA6IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQpIDpcbiAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9XG4gICAge1xuICAgICAgaWRlbnRpZmlhbnQgPSBpbnRlZ2VyX29mX2ludCBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLmlkZW50aWZpYW50O1xuICAgICAgb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX29mX2pzb29cbiAgICAgICAgICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLm9ibGlnYXRpb25TY29sYWlyZTtcbiAgICAgIHJlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5yZW11bmVyYXRpb25NZW5zdWVsbGU7XG4gICAgICBkYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLmRhdGVEZU5haXNzYW5jZTtcbiAgICAgIHByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgIHByaXNlX2VuX2NoYXJnZV9lbmZhbnRfb2ZfanNvb1xuICAgICAgICAgIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMucHJpc2VFbkNoYXJnZTtcbiAgICAgIGFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgICAgICAjIy5hRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzO1xuICAgICAgYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgICAgICAgIyMuYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudFxuICAgIH1cblxuY2xhc3MgdHlwZSBlbmZhbnRfYV9jaGFyZ2UgPVxuICBvYmplY3RcbiAgICBtZXRob2QgaWRlbnRpZmlhbnQ6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQ6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZURlTmFpc3NhbmNlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlbXVuZXJhdGlvbk1lbnN1ZWxsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBvYmxpZ2F0aW9uU2NvbGFpcmU6XG4gICAgICBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uR2FyZGVBbHRlcm5lZTpcbiAgICAgIHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbmZhbnRfYV9jaGFyZ2VfdG9fanNvbyAoZW5mYW50X2FfY2hhcmdlIDogRW5mYW50QUNoYXJnZS50KVxuICAgIDogZW5mYW50X2FfY2hhcmdlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGlkZW50aWZpYW50ID0gaW50ZWdlcl90b19pbnQgZW5mYW50X2FfY2hhcmdlLmlkZW50aWZpYW50XG4gICAgICB2YWwgYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudCA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50X2FfY2hhcmdlLmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgdmFsIGFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy5ib29sIGVuZmFudF9hX2NoYXJnZS5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICB2YWwgZGF0ZURlTmFpc3NhbmNlID0gZGF0ZV90b19qc29vIGVuZmFudF9hX2NoYXJnZS5kYXRlX2RlX25haXNzYW5jZVxuICAgICAgdmFsIHJlbXVuZXJhdGlvbk1lbnN1ZWxsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBlbmZhbnRfYV9jaGFyZ2UucmVtdW5lcmF0aW9uX21lbnN1ZWxsZVxuICAgICAgdmFsIG9ibGlnYXRpb25TY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX3RvX2pzb28gZW5mYW50X2FfY2hhcmdlLm9ibGlnYXRpb25fc2NvbGFpcmVcbiAgICAgIHZhbCBzaXR1YXRpb25HYXJkZUFsdGVybmVlID1cbiAgICAgICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlX3RvX2pzb28gZW5mYW50X2FfY2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZVxuICAgICAgZW5kXG4gIGxldCBlbmZhbnRfYV9jaGFyZ2Vfb2ZfanNvbyAoZW5mYW50X2FfY2hhcmdlIDogZW5mYW50X2FfY2hhcmdlIEpzLnQpIDpcbiAgICBFbmZhbnRBQ2hhcmdlLnQgPVxuICAgIHtcbiAgICAgIGlkZW50aWZpYW50ID0gaW50ZWdlcl9vZl9pbnQgZW5mYW50X2FfY2hhcmdlIyMuaWRlbnRpZmlhbnQ7XG4gICAgICBiZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgZW5mYW50X2FfY2hhcmdlIyMuYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudDtcbiAgICAgIGFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy50b19ib29sIGVuZmFudF9hX2NoYXJnZSMjLmFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXM7XG4gICAgICBkYXRlX2RlX25haXNzYW5jZSA9IGRhdGVfb2ZfanNvbyBlbmZhbnRfYV9jaGFyZ2UjIy5kYXRlRGVOYWlzc2FuY2U7XG4gICAgICByZW11bmVyYXRpb25fbWVuc3VlbGxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGVuZmFudF9hX2NoYXJnZSMjLnJlbXVuZXJhdGlvbk1lbnN1ZWxsZTtcbiAgICAgIG9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV9vZl9qc29vXG4gICAgICAgICAgZW5mYW50X2FfY2hhcmdlIyMub2JsaWdhdGlvblNjb2xhaXJlO1xuICAgICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlID1cbiAgICAgICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlX29mX2pzb29cbiAgICAgICAgICBlbmZhbnRfYV9jaGFyZ2UjIy5zaXR1YXRpb25HYXJkZUFsdGVybmVlXG4gICAgfVxuXG5jbGFzcyB0eXBlIHR5cGVfYmFpbGxldXIgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJCYWlsbGV1clNvY2lhbFwiXG4gICAgICAgIC0gXCJCYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWxcIlxuICAgICAgICAtIFwiQmFpbGxldXJQcml2ZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfYmFpbGxldXJfdG9fanNvbyA6IFR5cGVCYWlsbGV1ci50IC0+IHR5cGVfYmFpbGxldXIgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQmFpbGxldXJTb2NpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJCYWlsbGV1clNvY2lhbFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBCYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJCYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChjb252ZW50aW9uX2Ffbl9oX2FfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IEJhaWxsZXVyUHJpdmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJCYWlsbGV1clByaXZlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0eXBlX2JhaWxsZXVyX29mX2pzb28gKHR5cGVfYmFpbGxldXIgOiB0eXBlX2JhaWxsZXVyIEpzLnQpXG4gIDogVHlwZUJhaWxsZXVyLnQgPVxuICBtYXRjaCB0eXBlX2JhaWxsZXVyIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQmFpbGxldXJTb2NpYWxcIiAtPlxuICBUeXBlQmFpbGxldXIuQmFpbGxldXJTb2NpYWwgKGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgdHlwZV9iYWlsbGV1ciMjLnBheWxvYWQpKVxuICB8IFwiQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsXCIgLT5cbiAgVHlwZUJhaWxsZXVyLkJhaWxsZXVyUHJpdmVBdmVjQ29udmVudGlvbm5lbWVudFNvY2lhbCAoY29udmVudGlvbl9hX25faF9hX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgdHlwZV9iYWlsbGV1ciMjLnBheWxvYWQpKVxuICB8IFwiQmFpbGxldXJQcml2ZVwiIC0+IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlQmFpbGxldXIudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJOb25cIlxuICAgICAgICAtIFwiT3VpXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNfdG9fanNvb1xuICA6IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLnQgLT4gbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgTm9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTm9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgT3VpIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiT3VpXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAocGVyc29ubmVfc291c19sb2NhdGlvbl90b19qc29vIGFyZykpXG4gICAgZW5kXG5cbmxldCBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyc19vZl9qc29vXG4gIChsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyA6IGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzIEpzLnQpXG4gIDogTG91ZU91U291c0xvdWVBRGVzVGllcnMudCA9XG4gIG1hdGNoIGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiTm9uXCIgLT4gTG91ZU91U291c0xvdWVBRGVzVGllcnMuTm9uICgpXG4gIHwgXCJPdWlcIiAtPlxuICBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy5PdWkgKHBlcnNvbm5lX3NvdXNfbG9jYXRpb25fb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnTG91ZU91U291c0xvdWVBRGVzVGllcnMudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgbmF0aW9uYWxpdGUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJGcmFuY2Fpc2VcIlxuICAgICAgICAtIFwiRXRyYW5nZXJlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbmF0aW9uYWxpdGVfdG9fanNvbyA6IE5hdGlvbmFsaXRlLnQgLT4gbmF0aW9uYWxpdGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgRnJhbmNhaXNlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRnJhbmNhaXNlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRXRyYW5nZXJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRXRyYW5nZXJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoY29uZGl0aW9uc19ldHJhbmdlcnNfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbmF0aW9uYWxpdGVfb2ZfanNvbyAobmF0aW9uYWxpdGUgOiBuYXRpb25hbGl0ZSBKcy50KSA6IE5hdGlvbmFsaXRlLnQgPVxuICBtYXRjaCBuYXRpb25hbGl0ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkZyYW5jYWlzZVwiIC0+IE5hdGlvbmFsaXRlLkZyYW5jYWlzZSAoKVxuICB8IFwiRXRyYW5nZXJlXCIgLT5cbiAgTmF0aW9uYWxpdGUuRXRyYW5nZXJlIChjb25kaXRpb25zX2V0cmFuZ2Vyc19vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIG5hdGlvbmFsaXRlIyMucGF5bG9hZCkpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdOYXRpb25hbGl0ZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkNoYW5nZW1lbnRcIlxuICAgICAgICAtIFwiUGFzRGVDaGFuZ2VtZW50XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fanNvb1xuICA6IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQgLT4gY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQ2hhbmdlbWVudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNoYW5nZW1lbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgUGFzRGVDaGFuZ2VtZW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFzRGVDaGFuZ2VtZW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9vZl9qc29vXG4gIChjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCA6IGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnQpXG4gIDogQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudCA9XG4gIG1hdGNoIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQ2hhbmdlbWVudFwiIC0+XG4gIENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LkNoYW5nZW1lbnQgKGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQjIy5wYXlsb2FkKSlcbiAgfCBcIlBhc0RlQ2hhbmdlbWVudFwiIC0+IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LlBhc0RlQ2hhbmdlbWVudCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgcHJvcHJpZXRhaXJlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGxvZ2VtZW50U2l0dWVDb21tdW5lRGVzZXF1aWxpYnJlTDgzMTI6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbnN1YWxpdGVQcmluY2lwYWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNoYXJnZXNNZW5zdWVsbGVzUHJldDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRW50cmVlTG9nZW1lbnQ6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNTpcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlVHJhdmF1eExvZ2VtZW50Ujg0MjU6XG4gICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29wcm9wcmlldGU6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvblI4MjIxMTEzMTc6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFuY2llbm5ldGVMb2dlbWVudDogbmV1Zl9vdV9hbmNpZW4gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHByZXQ6IHByZXQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgcHJvcHJpZXRhaXJlX3RvX2pzb28gKHByb3ByaWV0YWlyZSA6IFByb3ByaWV0YWlyZS50KVxuICAgIDogcHJvcHJpZXRhaXJlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGxvZ2VtZW50U2l0dWVDb21tdW5lRGVzZXF1aWxpYnJlTDgzMTIgPVxuICAgICAgICBKcy5ib29sIHByb3ByaWV0YWlyZS5sb2dlbWVudF9zaXR1ZV9jb21tdW5lX2Rlc2VxdWlsaWJyZV9sODMxXzJcbiAgICAgIHZhbCBtZW5zdWFsaXRlUHJpbmNpcGFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBwcm9wcmlldGFpcmUubWVuc3VhbGl0ZV9wcmluY2lwYWxlXG4gICAgICB2YWwgY2hhcmdlc01lbnN1ZWxsZXNQcmV0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHByb3ByaWV0YWlyZS5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldFxuICAgICAgdmFsIGRhdGVFbnRyZWVMb2dlbWVudCA9IGRhdGVfdG9fanNvbyBwcm9wcmlldGFpcmUuZGF0ZV9lbnRyZWVfbG9nZW1lbnRcbiAgICAgIHZhbCB0eXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1ID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfdG9fanNvbyBwcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVcbiAgICAgIHZhbCB0eXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUgPVxuICAgICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X3RvX2pzb28gcHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVcbiAgICAgIHZhbCBsb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZSA9XG4gICAgICAgIEpzLmJvb2wgcHJvcHJpZXRhaXJlLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZVxuICAgICAgdmFsIGNvcHJvcHJpZXRlID0gSnMuYm9vbCBwcm9wcmlldGFpcmUuY29wcm9wcmlldGVcbiAgICAgIHZhbCBzaXR1YXRpb25SODIyMTExMzE3ID0gSnMuYm9vbCBwcm9wcmlldGFpcmUuc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdcbiAgICAgIHZhbCBhbmNpZW5uZXRlTG9nZW1lbnQgPVxuICAgICAgICBuZXVmX291X2FuY2llbl90b19qc29vIHByb3ByaWV0YWlyZS5hbmNpZW5uZXRlX2xvZ2VtZW50XG4gICAgICB2YWwgcHJldCA9IHByZXRfdG9fanNvbyBwcm9wcmlldGFpcmUucHJldFxuICAgICAgZW5kXG4gIGxldCBwcm9wcmlldGFpcmVfb2ZfanNvbyAocHJvcHJpZXRhaXJlIDogcHJvcHJpZXRhaXJlIEpzLnQpIDpcbiAgICBQcm9wcmlldGFpcmUudCA9XG4gICAge1xuICAgICAgbG9nZW1lbnRfc2l0dWVfY29tbXVuZV9kZXNlcXVpbGlicmVfbDgzMV8yID1cbiAgICAgICAgSnMudG9fYm9vbCBwcm9wcmlldGFpcmUjIy5sb2dlbWVudFNpdHVlQ29tbXVuZURlc2VxdWlsaWJyZUw4MzEyO1xuICAgICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHByb3ByaWV0YWlyZSMjLm1lbnN1YWxpdGVQcmluY2lwYWxlO1xuICAgICAgY2hhcmdlc19tZW5zdWVsbGVzX3ByZXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcHJvcHJpZXRhaXJlIyMuY2hhcmdlc01lbnN1ZWxsZXNQcmV0O1xuICAgICAgZGF0ZV9lbnRyZWVfbG9nZW1lbnQgPSBkYXRlX29mX2pzb28gcHJvcHJpZXRhaXJlIyMuZGF0ZUVudHJlZUxvZ2VtZW50O1xuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgPVxuICAgICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV9vZl9qc29vXG4gICAgICAgICAgcHJvcHJpZXRhaXJlIyMudHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNTtcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgPVxuICAgICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X29mX2pzb29cbiAgICAgICAgICBwcm9wcmlldGFpcmUjIy50eXBlVHJhdmF1eExvZ2VtZW50Ujg0MjU7XG4gICAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmUgPVxuICAgICAgICBKcy50b19ib29sIHByb3ByaWV0YWlyZSMjLmxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlO1xuICAgICAgY29wcm9wcmlldGUgPSBKcy50b19ib29sIHByb3ByaWV0YWlyZSMjLmNvcHJvcHJpZXRlO1xuICAgICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTcgPSBKcy50b19ib29sIHByb3ByaWV0YWlyZSMjLnNpdHVhdGlvblI4MjIxMTEzMTc7XG4gICAgICBhbmNpZW5uZXRlX2xvZ2VtZW50ID1cbiAgICAgICAgbmV1Zl9vdV9hbmNpZW5fb2ZfanNvbyBwcm9wcmlldGFpcmUjIy5hbmNpZW5uZXRlTG9nZW1lbnQ7XG4gICAgICBwcmV0ID0gcHJldF9vZl9qc29vIHByb3ByaWV0YWlyZSMjLnByZXRcbiAgICB9XG5cbmNsYXNzIHR5cGUgaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBub21icmVFbmZhbnRzQU5haXRyZUFwcmVzVHJvaXNpZW1lTW9pc0dyb3NzZXNzZTpcbiAgICAgIGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVOYWlzc2FuY2VUcm9pc2llbWVFbmZhbnRPdURlcm5pZXJTaVBsdXM6XG4gICAgICBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X3RvX2pzb29cbiAgICAoaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudCA6IEluZm9ybWF0aW9uc1ByaW1lRGVEZW1lbmFnZW1lbnQudClcbiAgICA6IGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbm9tYnJlRW5mYW50c0FOYWl0cmVBcHJlc1Ryb2lzaWVtZU1vaXNHcm9zc2Vzc2UgPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50Lm5vbWJyZV9lbmZhbnRzX2FfbmFpdHJlX2FwcmVzX3Ryb2lzaWVtZV9tb2lzX2dyb3NzZXNzZVxuICAgICAgdmFsIGRhdGVOYWlzc2FuY2VUcm9pc2llbWVFbmZhbnRPdURlcm5pZXJTaVBsdXMgPVxuICAgICAgICBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudF90b19qc29vIGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQuZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX2VuZmFudF9vdV9kZXJuaWVyX3NpX3BsdXNcbiAgICAgIGVuZFxuICBsZXQgaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vZl9qc29vXG4gICAgKGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnRcbiAgICAgIDogaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudCBKcy50KSA6XG4gICAgSW5mb3JtYXRpb25zUHJpbWVEZURlbWVuYWdlbWVudC50ID1cbiAgICB7XG4gICAgICBub21icmVfZW5mYW50c19hX25haXRyZV9hcHJlc190cm9pc2llbWVfbW9pc19ncm9zc2Vzc2UgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnRcbiAgICAgICAgICAjIy5ub21icmVFbmZhbnRzQU5haXRyZUFwcmVzVHJvaXNpZW1lTW9pc0dyb3NzZXNzZTtcbiAgICAgIGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzID1cbiAgICAgICAgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRfb2ZfanNvb1xuICAgICAgICAgIGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnRcbiAgICAgICAgICAjIy5kYXRlTmFpc3NhbmNlVHJvaXNpZW1lRW5mYW50T3VEZXJuaWVyU2lQbHVzXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZHJvaXRPdXZlcnQ6XG4gICAgICAoZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCwgIGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIGNvbmRpdGlvbnNIb3JzQWdlOlxuICAgICAgKGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQsICBib29sIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICAgIG1ldGhvZCBhZ2VMNTEyMzI6IFJ1bnRpbWVfanNvby5SdW50aW1lLmR1cmF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZWdpbWVPdXRyZU1lckw3NTExOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIDogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudClcbiAgICA6IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICBtZXRob2QgZHJvaXRPdXZlcnQgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLmJvb2wgKGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMuZHJvaXRfb3V2ZXJ0IChlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vIGlucHV0KSkpXG4gICAgICBtZXRob2QgY29uZGl0aW9uc0hvcnNBZ2UgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLmJvb2wgKGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSAoZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvbyBpbnB1dCkpKVxuICAgICAgdmFsIGFnZUw1MTIzMiA9XG4gICAgICAgIGR1cmF0aW9uX3RvX2pzb28gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5hZ2VfbDUxMl8zXzJcbiAgICAgIHZhbCByZWdpbWVPdXRyZU1lckw3NTExID1cbiAgICAgICAgSnMuYm9vbCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgICA6IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIGRyb2l0X291dmVydCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdkcm9pdF9vdXZlcnQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvbmRpdGlvbnNfaG9yc19hZ2UgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnY29uZGl0aW9uc19ob3JzX2FnZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiO1xuICAgICAgYWdlX2w1MTJfM18yID1cbiAgICAgICAgZHVyYXRpb25fb2ZfanNvbyBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMuYWdlTDUxMjMyO1xuICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzEgPVxuICAgICAgICBKcy50b19ib29sIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5yZWdpbWVPdXRyZU1lckw3NTExXG4gICAgfVxuXG5jbGFzcyB0eXBlIHBlcnNvbm5lX2FfY2hhcmdlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRW5mYW50QUNoYXJnZVwiXG4gICAgICAgIC0gXCJBdXRyZVBlcnNvbm5lQUNoYXJnZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHBlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28gOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBwZXJzb25uZV9hX2NoYXJnZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBFbmZhbnRBQ2hhcmdlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRW5mYW50QUNoYXJnZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGVuZmFudF9hX2NoYXJnZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgQXV0cmVQZXJzb25uZUFDaGFyZ2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdXRyZVBlcnNvbm5lQUNoYXJnZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcblxubGV0IHBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28gKHBlcnNvbm5lX2FfY2hhcmdlIDogcGVyc29ubmVfYV9jaGFyZ2UgSnMudClcbiAgOiBQZXJzb25uZUFDaGFyZ2UudCA9XG4gIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRW5mYW50QUNoYXJnZVwiIC0+XG4gIFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIChlbmZhbnRfYV9jaGFyZ2Vfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBwZXJzb25uZV9hX2NoYXJnZSMjLnBheWxvYWQpKVxuICB8IFwiQXV0cmVQZXJzb25uZUFDaGFyZ2VcIiAtPlxuICBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgKGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgcGVyc29ubmVfYV9jaGFyZ2UjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1BlcnNvbm5lQUNoYXJnZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBkZW1hbmRldXIgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZU5haXNzYW5jZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuYXRpb25hbGl0ZTogbmF0aW9uYWxpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBhdHJpbW9pbmU6IHBhdHJpbW9pbmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lSGViZXJnZWVDZW50cmVTb2luTEwxNjIyMjNTZWN1cml0ZVNvY2lhbGU6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGRlbWFuZGV1cl90b19qc29vIChkZW1hbmRldXIgOiBEZW1hbmRldXIudCkgOiBkZW1hbmRldXIgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZU5haXNzYW5jZSA9IGRhdGVfdG9fanNvbyBkZW1hbmRldXIuZGF0ZV9uYWlzc2FuY2VcbiAgICAgIHZhbCBuYXRpb25hbGl0ZSA9IG5hdGlvbmFsaXRlX3RvX2pzb28gZGVtYW5kZXVyLm5hdGlvbmFsaXRlXG4gICAgICB2YWwgcGF0cmltb2luZSA9IHBhdHJpbW9pbmVfdG9fanNvbyBkZW1hbmRldXIucGF0cmltb2luZVxuICAgICAgdmFsIHBlcnNvbm5lSGViZXJnZWVDZW50cmVTb2luTEwxNjIyMjNTZWN1cml0ZVNvY2lhbGUgPVxuICAgICAgICBKcy5ib29sIGRlbWFuZGV1ci5wZXJzb25uZV9oZWJlcmdlZV9jZW50cmVfc29pbl9sX0wxNjJfMjJfM19zZWN1cml0ZV9zb2NpYWxlXG4gICAgICBlbmRcbiAgbGV0IGRlbWFuZGV1cl9vZl9qc29vIChkZW1hbmRldXIgOiBkZW1hbmRldXIgSnMudCkgOiBEZW1hbmRldXIudCA9XG4gICAge1xuICAgICAgZGF0ZV9uYWlzc2FuY2UgPSBkYXRlX29mX2pzb28gZGVtYW5kZXVyIyMuZGF0ZU5haXNzYW5jZTtcbiAgICAgIG5hdGlvbmFsaXRlID0gbmF0aW9uYWxpdGVfb2ZfanNvbyBkZW1hbmRldXIjIy5uYXRpb25hbGl0ZTtcbiAgICAgIHBhdHJpbW9pbmUgPSBwYXRyaW1vaW5lX29mX2pzb28gZGVtYW5kZXVyIyMucGF0cmltb2luZTtcbiAgICAgIHBlcnNvbm5lX2hlYmVyZ2VlX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3NlY3VyaXRlX3NvY2lhbGUgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgZGVtYW5kZXVyIyMucGVyc29ubmVIZWJlcmdlZUNlbnRyZVNvaW5MTDE2MjIyM1NlY3VyaXRlU29jaWFsZVxuICAgIH1cblxuY2xhc3MgdHlwZSBsb2NhdGlvbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBiYWlsbGV1cjogdHlwZV9iYWlsbGV1ciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG95ZXJQcmluY2lwYWw6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvZ2VtZW50RXN0Q2hhbWJyZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29sb2NhdGlvbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnM6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudE1ldWJsZUQ4NDIyOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjaGFuZ2VtZW50TG9nZW1lbnREODQyNDpcbiAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGxvY2F0aW9uX3RvX2pzb28gKGxvY2F0aW9uIDogTG9jYXRpb24udCkgOiBsb2NhdGlvbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBiYWlsbGV1ciA9IHR5cGVfYmFpbGxldXJfdG9fanNvbyBsb2NhdGlvbi5iYWlsbGV1clxuICAgICAgdmFsIGxveWVyUHJpbmNpcGFsID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGxvY2F0aW9uLmxveWVyX3ByaW5jaXBhbFxuICAgICAgdmFsIGJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXMgPVxuICAgICAgICBKcy5ib29sIGxvY2F0aW9uLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc1xuICAgICAgdmFsIGxvZ2VtZW50RXN0Q2hhbWJyZSA9IEpzLmJvb2wgbG9jYXRpb24ubG9nZW1lbnRfZXN0X2NoYW1icmVcbiAgICAgIHZhbCBjb2xvY2F0aW9uID0gSnMuYm9vbCBsb2NhdGlvbi5jb2xvY2F0aW9uXG4gICAgICB2YWwgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnMgPVxuICAgICAgICBKcy5ib29sIGxvY2F0aW9uLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXG4gICAgICB2YWwgbG9nZW1lbnRNZXVibGVEODQyMiA9IEpzLmJvb2wgbG9jYXRpb24ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMlxuICAgICAgdmFsIGNoYW5nZW1lbnRMb2dlbWVudEQ4NDI0ID1cbiAgICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fanNvbyBsb2NhdGlvbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNFxuICAgICAgZW5kXG4gIGxldCBsb2NhdGlvbl9vZl9qc29vIChsb2NhdGlvbiA6IGxvY2F0aW9uIEpzLnQpIDogTG9jYXRpb24udCA9XG4gICAge1xuICAgICAgYmFpbGxldXIgPSB0eXBlX2JhaWxsZXVyX29mX2pzb28gbG9jYXRpb24jIy5iYWlsbGV1cjtcbiAgICAgIGxveWVyX3ByaW5jaXBhbCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBsb2NhdGlvbiMjLmxveWVyUHJpbmNpcGFsO1xuICAgICAgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzID1cbiAgICAgICAgSnMudG9fYm9vbCBsb2NhdGlvbiMjLmJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXM7XG4gICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZSA9IEpzLnRvX2Jvb2wgbG9jYXRpb24jIy5sb2dlbWVudEVzdENoYW1icmU7XG4gICAgICBjb2xvY2F0aW9uID0gSnMudG9fYm9vbCBsb2NhdGlvbiMjLmNvbG9jYXRpb247XG4gICAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVycyA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBsb2NhdGlvbiMjLmFnZWVzT3VIYW5kaWNhcEFkdWx0ZXNIZWJlcmdlZXNPbmVyZXV4UGFydGljdWxpZXJzO1xuICAgICAgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMiA9IEpzLnRvX2Jvb2wgbG9jYXRpb24jIy5sb2dlbWVudE1ldWJsZUQ4NDIyO1xuICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgPVxuICAgICAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9vZl9qc29vIGxvY2F0aW9uIyMuY2hhbmdlbWVudExvZ2VtZW50RDg0MjRcbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVsaWdpYmlsaXRlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGU6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGU6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29uZGl0aW9uMlI4MjM0OlxuICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlIEpzLnQsICBib29sIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICA6IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGUgPVxuICAgICAgICBkYXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQuZGF0ZV9jb3VyYW50ZVxuICAgICAgdmFsIGVsaWdpYmlsaXRlID1cbiAgICAgICAgSnMuYm9vbCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudC5lbGlnaWJpbGl0ZVxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZSA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVxuICAgICAgdmFsIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGUgPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IHgpIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVcbiAgICAgIG1ldGhvZCBjb25kaXRpb24yUjgyMzQgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLmJvb2wgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50LmNvbmRpdGlvbl8yX3I4MjNfNCAocGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvbyBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IyMuZGF0ZUNvdXJhbnRlO1xuICAgICAgZWxpZ2liaWxpdGUgPVxuICAgICAgICBKcy50b19ib29sIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IyMuZWxpZ2liaWxpdGU7XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICAgICAgIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlO1xuICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgeCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgICAgICMjLmNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGU7XG4gICAgICBjb25kaXRpb25fMl9yODIzXzQgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnY29uZGl0aW9uXzJfcjgyM180JyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkxvY2F0aW9uXCJcbiAgICAgICAgLSBcIkFjY2Vzc2lvblByb3ByaWV0ZVwiXG4gICAgICAgIC0gXCJMb2dlbWVudEZveWVyXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbF90b19qc29vXG4gIDogQ2F0ZWdvcmllQ2FsY3VsQVBMLnQgLT4gY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBMb2NhdGlvbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxvY2F0aW9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAobG9jYXRpb25fdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IEFjY2Vzc2lvblByb3ByaWV0ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFjY2Vzc2lvblByb3ByaWV0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHByb3ByaWV0YWlyZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgTG9nZW1lbnRGb3llciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxvZ2VtZW50Rm95ZXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChsb2dlbWVudF9mb3llcl90b19qc29vIGFyZykpXG4gICAgZW5kXG5cbmxldCBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgKGNhdGVnb3JpZV9jYWxjdWxfYV9wX2wgOiBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sIEpzLnQpXG4gIDogQ2F0ZWdvcmllQ2FsY3VsQVBMLnQgPVxuICBtYXRjaCBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiTG9jYXRpb25cIiAtPlxuICBDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gKGxvY2F0aW9uX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCMjLnBheWxvYWQpKVxuICB8IFwiQWNjZXNzaW9uUHJvcHJpZXRlXCIgLT5cbiAgQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSAocHJvcHJpZXRhaXJlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCMjLnBheWxvYWQpKVxuICB8IFwiTG9nZW1lbnRGb3llclwiIC0+XG4gIENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIChsb2dlbWVudF9mb3llcl9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIGNhdGVnb3JpZV9jYWxjdWxfYV9wX2wjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NhdGVnb3JpZUNhbGN1bEFQTC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBtb2RlX29jY3VwYXRpb24gPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJMb2NhdGFpcmVcIlxuICAgICAgICAtIFwiUmVzaWRlbnRMb2dlbWVudEZveWVyXCJcbiAgICAgICAgLSBcIkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb25cIlxuICAgICAgICAtIFwiU291c0xvY2F0YWlyZVwiXG4gICAgICAgIC0gXCJMb2NhdGlvbkFjY2Vzc2lvblwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IG1vZGVfb2NjdXBhdGlvbl90b19qc29vIDogTW9kZU9jY3VwYXRpb24udCAtPiBtb2RlX29jY3VwYXRpb24gSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgTG9jYXRhaXJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG9jYXRhaXJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAobG9jYXRpb25fdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IFJlc2lkZW50TG9nZW1lbnRGb3llciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlJlc2lkZW50TG9nZW1lbnRGb3llclwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGxvZ2VtZW50X2ZveWVyX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBBY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHByb3ByaWV0YWlyZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgU291c0xvY2F0YWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNvdXNMb2NhdGFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChsb2NhdGlvbl90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgTG9jYXRpb25BY2Nlc3Npb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJMb2NhdGlvbkFjY2Vzc2lvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHByb3ByaWV0YWlyZV90b19qc29vIGFyZykpXG4gICAgZW5kXG5cbmxldCBtb2RlX29jY3VwYXRpb25fb2ZfanNvbyAobW9kZV9vY2N1cGF0aW9uIDogbW9kZV9vY2N1cGF0aW9uIEpzLnQpXG4gIDogTW9kZU9jY3VwYXRpb24udCA9XG4gIG1hdGNoIG1vZGVfb2NjdXBhdGlvbiMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkxvY2F0YWlyZVwiIC0+XG4gIE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSAobG9jYXRpb25fb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBcIlJlc2lkZW50TG9nZW1lbnRGb3llclwiIC0+XG4gIE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciAobG9nZW1lbnRfZm95ZXJfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBcIkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb25cIiAtPlxuICBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIChwcm9wcmlldGFpcmVfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBcIlNvdXNMb2NhdGFpcmVcIiAtPlxuICBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIChsb2NhdGlvbl9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIG1vZGVfb2NjdXBhdGlvbiMjLnBheWxvYWQpKVxuICB8IFwiTG9jYXRpb25BY2Nlc3Npb25cIiAtPlxuICBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiAocHJvcHJpZXRhaXJlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgbW9kZV9vY2N1cGF0aW9uIyMucGF5bG9hZCkpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdNb2RlT2NjdXBhdGlvbi50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBsb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCByZXNpZGVuY2VQcmluY2lwYWxlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlc3RFaHBhZE91TWFpc29uQXV0b25vbWllTDMxMzEyQXNmOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb2RlT2NjdXBhdGlvbjogbW9kZV9vY2N1cGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwcm9wcmlldGFpcmU6IHBhcmVudF9vdV9hdXRyZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG91ZU91U291c0xvdWVBRGVzVGllcnM6XG4gICAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdXN1ZnJ1aXQ6IHBhcmVudF9vdV9hdXRyZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnREZWNlbnRMODk0NjI6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHN1cmZhY2VNQ2FycmVzOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBsb2dlbWVudF90b19qc29vIChsb2dlbWVudCA6IExvZ2VtZW50LnQpIDogbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgcmVzaWRlbmNlUHJpbmNpcGFsZSA9IEpzLmJvb2wgbG9nZW1lbnQucmVzaWRlbmNlX3ByaW5jaXBhbGVcbiAgICAgIHZhbCBlc3RFaHBhZE91TWFpc29uQXV0b25vbWllTDMxMzEyQXNmID1cbiAgICAgICAgSnMuYm9vbCBsb2dlbWVudC5lc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZlxuICAgICAgdmFsIG1vZGVPY2N1cGF0aW9uID0gbW9kZV9vY2N1cGF0aW9uX3RvX2pzb28gbG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uXG4gICAgICB2YWwgcHJvcHJpZXRhaXJlID0gcGFyZW50X291X2F1dHJlX3RvX2pzb28gbG9nZW1lbnQucHJvcHJpZXRhaXJlXG4gICAgICB2YWwgbG91ZU91U291c0xvdWVBRGVzVGllcnMgPVxuICAgICAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyc190b19qc29vIGxvZ2VtZW50LmxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXG4gICAgICB2YWwgdXN1ZnJ1aXQgPSBwYXJlbnRfb3VfYXV0cmVfdG9fanNvbyBsb2dlbWVudC51c3VmcnVpdFxuICAgICAgdmFsIGxvZ2VtZW50RGVjZW50TDg5NDYyID0gSnMuYm9vbCBsb2dlbWVudC5sb2dlbWVudF9kZWNlbnRfbDg5XzQ2MlxuICAgICAgdmFsIHN1cmZhY2VNQ2FycmVzID0gaW50ZWdlcl90b19pbnQgbG9nZW1lbnQuc3VyZmFjZV9tX2NhcnJlc1xuICAgICAgdmFsIHpvbmUgPSB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGxvZ2VtZW50LnpvbmVcbiAgICAgIGVuZFxuICBsZXQgbG9nZW1lbnRfb2ZfanNvbyAobG9nZW1lbnQgOiBsb2dlbWVudCBKcy50KSA6IExvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIHJlc2lkZW5jZV9wcmluY2lwYWxlID0gSnMudG9fYm9vbCBsb2dlbWVudCMjLnJlc2lkZW5jZVByaW5jaXBhbGU7XG4gICAgICBlc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZiA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbG9nZW1lbnQjIy5lc3RFaHBhZE91TWFpc29uQXV0b25vbWllTDMxMzEyQXNmO1xuICAgICAgbW9kZV9vY2N1cGF0aW9uID0gbW9kZV9vY2N1cGF0aW9uX29mX2pzb28gbG9nZW1lbnQjIy5tb2RlT2NjdXBhdGlvbjtcbiAgICAgIHByb3ByaWV0YWlyZSA9IHBhcmVudF9vdV9hdXRyZV9vZl9qc29vIGxvZ2VtZW50IyMucHJvcHJpZXRhaXJlO1xuICAgICAgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgPVxuICAgICAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyc19vZl9qc29vXG4gICAgICAgICAgbG9nZW1lbnQjIy5sb3VlT3VTb3VzTG91ZUFEZXNUaWVycztcbiAgICAgIHVzdWZydWl0ID0gcGFyZW50X291X2F1dHJlX29mX2pzb28gbG9nZW1lbnQjIy51c3VmcnVpdDtcbiAgICAgIGxvZ2VtZW50X2RlY2VudF9sODlfNDYyID0gSnMudG9fYm9vbCBsb2dlbWVudCMjLmxvZ2VtZW50RGVjZW50TDg5NDYyO1xuICAgICAgc3VyZmFjZV9tX2NhcnJlcyA9IGludGVnZXJfb2ZfaW50IGxvZ2VtZW50IyMuc3VyZmFjZU1DYXJyZXM7XG4gICAgICB6b25lID0gem9uZV9kX2hhYml0YXRpb25fb2ZfanNvbyBsb2dlbWVudCMjLnpvbmVcbiAgICB9XG5cbmNsYXNzIHR5cGUgbWVuYWdlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHByZXN0YXRpb25zUmVjdWVzOlxuICAgICAgcHJlc3RhdGlvbl9yZWN1ZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudDogbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lc0FDaGFyZ2U6XG4gICAgICBwZXJzb25uZV9hX2NoYXJnZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVBdXRyZXNPY2N1cGFudHNMb2dlbWVudDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlOiBzaXR1YXRpb25fZmFtaWxpYWxlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb25SYXR0YWNoZUZveWVyRmlzY2FsUGFyZW50SWZpOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlbmZhbnRBTmFpdHJlQXByZXNRdWF0cmllbWVNb2lzR3Jvc3Nlc3NlOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBtZW5hZ2VfdG9fanNvbyAobWVuYWdlIDogTWVuYWdlLnQpIDogbWVuYWdlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHByZXN0YXRpb25zUmVjdWVzID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBwcmVzdGF0aW9uX3JlY3VlX3RvX2pzb28geCkgbWVuYWdlLnByZXN0YXRpb25zX3JlY3Vlc1xuICAgICAgdmFsIGxvZ2VtZW50ID0gbG9nZW1lbnRfdG9fanNvbyBtZW5hZ2UubG9nZW1lbnRcbiAgICAgIHZhbCBwZXJzb25uZXNBQ2hhcmdlID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBwZXJzb25uZV9hX2NoYXJnZV90b19qc29vIHgpIG1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2VcbiAgICAgIHZhbCBub21icmVBdXRyZXNPY2N1cGFudHNMb2dlbWVudCA9XG4gICAgICAgIGludGVnZXJfdG9faW50IG1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudFxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZSA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvbyBtZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZVxuICAgICAgdmFsIGNvbmRpdGlvblJhdHRhY2hlRm95ZXJGaXNjYWxQYXJlbnRJZmkgPVxuICAgICAgICBKcy5ib29sIG1lbmFnZS5jb25kaXRpb25fcmF0dGFjaGVfZm95ZXJfZmlzY2FsX3BhcmVudF9pZmlcbiAgICAgIHZhbCBlbmZhbnRBTmFpdHJlQXByZXNRdWF0cmllbWVNb2lzR3Jvc3Nlc3NlID1cbiAgICAgICAgSnMuYm9vbCBtZW5hZ2UuZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZVxuICAgICAgZW5kXG4gIGxldCBtZW5hZ2Vfb2ZfanNvbyAobWVuYWdlIDogbWVuYWdlIEpzLnQpIDogTWVuYWdlLnQgPVxuICAgIHtcbiAgICAgIHByZXN0YXRpb25zX3JlY3VlcyA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gcHJlc3RhdGlvbl9yZWN1ZV9vZl9qc29vIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgbWVuYWdlIyMucHJlc3RhdGlvbnNSZWN1ZXM7XG4gICAgICBsb2dlbWVudCA9IGxvZ2VtZW50X29mX2pzb28gbWVuYWdlIyMubG9nZW1lbnQ7XG4gICAgICBwZXJzb25uZXNfYV9jaGFyZ2UgPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IHBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBtZW5hZ2UjIy5wZXJzb25uZXNBQ2hhcmdlO1xuICAgICAgbm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnQgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludCBtZW5hZ2UjIy5ub21icmVBdXRyZXNPY2N1cGFudHNMb2dlbWVudDtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX29mX2pzb28gbWVuYWdlIyMuc2l0dWF0aW9uRmFtaWxpYWxlO1xuICAgICAgY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpID1cbiAgICAgICAgSnMudG9fYm9vbCBtZW5hZ2UjIy5jb25kaXRpb25SYXR0YWNoZUZveWVyRmlzY2FsUGFyZW50SWZpO1xuICAgICAgZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbWVuYWdlIyMuZW5mYW50QU5haXRyZUFwcmVzUXVhdHJpZW1lTW9pc0dyb3NzZXNzZVxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtZW5hZ2VJbjogbWVuYWdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJJbjogZGVtYW5kZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb25Mb2dlbWVudFJlc2lkZW5jZVByaW5jaXBhbGVJbjpcbiAgICAgICh1bml0LCAgYm9vbCBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgICBtZXRob2QgY29uZGl0aW9uTG9nZW1lbnRTdXJmYWNlSW46XG4gICAgICAodW5pdCwgIGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgIDogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KVxuICAgIDogZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbWVuYWdlSW4gPVxuICAgICAgICBtZW5hZ2VfdG9fanNvbyBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5tZW5hZ2VfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJJbiA9XG4gICAgICAgIGRlbWFuZGV1cl90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIG1ldGhvZCBjb25kaXRpb25Mb2dlbWVudFJlc2lkZW5jZVByaW5jaXBhbGVJbiA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMuYm9vbCAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luICggaW5wdXQpKSlcbiAgICAgIG1ldGhvZCBjb25kaXRpb25Mb2dlbWVudFN1cmZhY2VJbiA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMuYm9vbCAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4gKCBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1lbmFnZV9pbiA9XG4gICAgICAgIG1lbmFnZV9vZl9qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbiA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfaW4nIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1lbmFnZUluOiBtZW5hZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbWFuZGV1ckluOiBkZW1hbmRldXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgOiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50KVxuICAgIDogZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbmFnZUluID1cbiAgICAgICAgbWVuYWdlX3RvX2pzb28gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLm1lbmFnZV9pblxuICAgICAgdmFsIGRlbWFuZGV1ckluID1cbiAgICAgICAgZGVtYW5kZXVyX3RvX2pzb28gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgICAgOiBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1lbmFnZV9pbiA9XG4gICAgICAgIG1lbmFnZV9vZl9qc29vIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLm1lbmFnZUluO1xuICAgICAgZGVtYW5kZXVyX2luID1cbiAgICAgICAgZGVtYW5kZXVyX29mX2pzb29cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5kZW1hbmRldXJJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbmFnZUluOiBtZW5hZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbWFuZGV1ckluOiBkZW1hbmRldXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiA6IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4udClcbiAgICA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgbWVuYWdlSW4gPVxuICAgICAgICBtZW5hZ2VfdG9fanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLm1lbmFnZV9pblxuICAgICAgdmFsIGRlbWFuZGV1ckluID1cbiAgICAgICAgZGVtYW5kZXVyX3RvX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5kZW1hbmRldXJfaW5cbiAgICAgIHZhbCBiZW5lZmljaWVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4gPVxuICAgICAgICBKcy5ib29sIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pblxuICAgICAgOiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgbWVuYWdlX2luID1cbiAgICAgICAgbWVuYWdlX29mX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLm1lbmFnZUluO1xuICAgICAgZGVtYW5kZXVyX2luID1cbiAgICAgICAgZGVtYW5kZXVyX29mX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLmRlbWFuZGV1ckluO1xuICAgICAgYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMuYmVuZWZpY2llQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbmZvcm1hdGlvbnNJbjpcbiAgICAgIGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVFbW1lbmFnZW1lbnRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtZW5hZ2VJbjogbWVuYWdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJJbjogZGVtYW5kZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZXBlbnNlc0p1c3RpZmllZXNSZWVsbGVtZW50RW5nYWdlZXNJbjpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW5fdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW5cbiAgICA6IEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaW5mb3JtYXRpb25zSW4gPVxuICAgICAgICBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X3RvX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLmluZm9ybWF0aW9uc19pblxuICAgICAgdmFsIGRhdGVFbW1lbmFnZW1lbnRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uZGF0ZV9lbW1lbmFnZW1lbnRfaW5cbiAgICAgIHZhbCBtZW5hZ2VJbiA9XG4gICAgICAgIG1lbmFnZV90b19qc29vIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5tZW5hZ2VfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJJbiA9XG4gICAgICAgIGRlbWFuZGV1cl90b19qc29vIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5kZW1hbmRldXJfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIGRlcGVuc2VzSnVzdGlmaWVlc1JlZWxsZW1lbnRFbmdhZ2Vlc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5kZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfaW5cbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luX29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luXG4gICAgICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiBKcy50KSA6XG4gICAgRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgaW5mb3JtYXRpb25zX2luID1cbiAgICAgICAgaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIyMuaW5mb3JtYXRpb25zSW47XG4gICAgICBkYXRlX2VtbWVuYWdlbWVudF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiMjLmRhdGVFbW1lbmFnZW1lbnRJbjtcbiAgICAgIG1lbmFnZV9pbiA9XG4gICAgICAgIG1lbmFnZV9vZl9qc29vIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiMjLm1lbmFnZUluO1xuICAgICAgZGVtYW5kZXVyX2luID1cbiAgICAgICAgZGVtYW5kZXVyX29mX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pblxuICAgICAgICAgICMjLmRlcGVuc2VzSnVzdGlmaWVlc1JlZWxsZW1lbnRFbmdhZ2Vlc0luXG4gICAgfVxuXG5jbGFzcyB0eXBlIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgcmVzc291cmNlc0RlbWFuZGV1ckluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXNDb25qb2ludEluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lc1ZpdmFudEhhYml0dWVsbGVtZW50Rm95ZXJJbjpcbiAgICAgIHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llciBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJFeGVyY2VBY3Rpdml0ZVJlbXVuZXJlZUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25qb2ludEV4ZXJjZUFjdGl2aXRlUmVtdW5lcmVlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lc0FDaGFyZ2VJbjpcbiAgICAgIHBlcnNvbm5lX2FfY2hhcmdlIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUluOiBzaXR1YXRpb25fZmFtaWxpYWxlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb2RlT2NjdXBhdGlvbkluOiBtb2RlX29jY3VwYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbmRpdGlvbkFnZUJvdXJzZUVuc2VpZ25lbWVudFN1cGVyaWV1ckluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVtYW5kZXVyUG91cnN1aXREZXNFdHVkZXNJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZURlbWFuZGVPdVJlZXhhbWVuRHJvaXRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsSW46XG4gICAgICBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzQmFzZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl90b19qc29vXG4gICAgKHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICA6IFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KVxuICAgIDogcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNzb3VyY2VzRGVtYW5kZXVySW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5yZXNzb3VyY2VzX2RlbWFuZGV1cl9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNDb25qb2ludEluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ucmVzc291cmNlc19jb25qb2ludF9pblxuICAgICAgdmFsIHBlcnNvbm5lc1ZpdmFudEhhYml0dWVsbGVtZW50Rm95ZXJJbiA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyX3RvX2pzb28geCkgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5wZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyX2luXG4gICAgICB2YWwgZGVtYW5kZXVyRXhlcmNlQWN0aXZpdGVSZW11bmVyZWVJbiA9XG4gICAgICAgIEpzLmJvb2wgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5kZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9pblxuICAgICAgdmFsIGNvbmpvaW50RXhlcmNlQWN0aXZpdGVSZW11bmVyZWVJbiA9XG4gICAgICAgIEpzLmJvb2wgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5jb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luXG4gICAgICB2YWwgcGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBwZXJzb25uZV9hX2NoYXJnZV90b19qc29vIHgpIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ucGVyc29ubmVzX2FfY2hhcmdlX2luXG4gICAgICB2YWwgc2l0dWF0aW9uRmFtaWxpYWxlSW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX3RvX2pzb28gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luXG4gICAgICB2YWwgbW9kZU9jY3VwYXRpb25JbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl90b19qc29vIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ubW9kZV9vY2N1cGF0aW9uX2luXG4gICAgICB2YWwgY29uZGl0aW9uQWdlQm91cnNlRW5zZWlnbmVtZW50U3VwZXJpZXVySW4gPVxuICAgICAgICBKcy5ib29sIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pblxuICAgICAgdmFsIGRlbWFuZGV1clBvdXJzdWl0RGVzRXR1ZGVzSW4gPVxuICAgICAgICBKcy5ib29sIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXNfaW5cbiAgICAgIHZhbCBkYXRlRGVtYW5kZU91UmVleGFtZW5Ecm9pdEluID1cbiAgICAgICAgZGF0ZV90b19qc29vIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luXG4gICAgICB2YWwgcGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbEluID1cbiAgICAgICAgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF90b19qc29vIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ucGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNCYXNlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pblxuICAgICAgZW5kXG4gIGxldCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAocmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgOiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgcmVzc291cmNlc19kZW1hbmRldXJfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiMjLnJlc3NvdXJjZXNEZW1hbmRldXJJbjtcbiAgICAgIHJlc3NvdXJjZXNfY29uam9pbnRfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiMjLnJlc3NvdXJjZXNDb25qb2ludEluO1xuICAgICAgcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl9pbiA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyX29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMucGVyc29ubmVzVml2YW50SGFiaXR1ZWxsZW1lbnRGb3llckluO1xuICAgICAgZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLmRlbWFuZGV1ckV4ZXJjZUFjdGl2aXRlUmVtdW5lcmVlSW47XG4gICAgICBjb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5jb25qb2ludEV4ZXJjZUFjdGl2aXRlUmVtdW5lcmVlSW47XG4gICAgICBwZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IHBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMucGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvb1xuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4jIy5zaXR1YXRpb25GYW1pbGlhbGVJbjtcbiAgICAgIG1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl9vZl9qc29vXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiMjLm1vZGVPY2N1cGF0aW9uSW47XG4gICAgICBjb25kaXRpb25fYWdlX2JvdXJzZV9lbnNlaWduZW1lbnRfc3VwZXJpZXVyX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5jb25kaXRpb25BZ2VCb3Vyc2VFbnNlaWduZW1lbnRTdXBlcmlldXJJbjtcbiAgICAgIGRlbWFuZGV1cl9wb3Vyc3VpdF9kZXNfZXR1ZGVzX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5kZW1hbmRldXJQb3Vyc3VpdERlc0V0dWRlc0luO1xuICAgICAgZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLmRhdGVEZW1hbmRlT3VSZWV4YW1lbkRyb2l0SW47XG4gICAgICBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsX2luID1cbiAgICAgICAgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9vZl9qc29vXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLnBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWxJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzQmFzZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gPVxuICBvYmplY3QgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl90b19qc29vXG4gICAgKGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICA6IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpXG4gICAgOiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgZW5kXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgOiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLmRhdGVDb3VyYW50ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBsb3llclByaW5jaXBhbEJhc2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudEVzdENoYW1icmVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVBaWRlSW46IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbG9jYXRpb25JbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnRNZXVibGVEODQyMkluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50KVxuICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGxveWVyUHJpbmNpcGFsQmFzZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5sb3llcl9wcmluY2lwYWxfYmFzZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICB2YWwgem9uZUluID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uem9uZV9pblxuICAgICAgdmFsIGxvZ2VtZW50RXN0Q2hhbWJyZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW5cbiAgICAgIHZhbCBhZ2Vlc091SGFuZGljYXBBZHVsdGVzSGViZXJnZWVzT25lcmV1eFBhcnRpY3VsaWVyc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW5cbiAgICAgIHZhbCB0eXBlQWlkZUluID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi50eXBlX2FpZGVfaW5cbiAgICAgIHZhbCBjb2xvY2F0aW9uSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5jb2xvY2F0aW9uX2luXG4gICAgICB2YWwgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luXG4gICAgICB2YWwgbG9nZW1lbnRNZXVibGVEODQyMkluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnQgPVxuICAgIHtcbiAgICAgIGxveWVyX3ByaW5jaXBhbF9iYXNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmxveWVyUHJpbmNpcGFsQmFzZUluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjtcbiAgICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5iZW5lZmljaWFpcmVBaWRlQWR1bHRlT3VFbmZhbnRIYW5kaWNhcGVzSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLnpvbmVJbjtcbiAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmxvZ2VtZW50RXN0Q2hhbWJyZUluO1xuICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjtcbiAgICAgIHR5cGVfYWlkZV9pbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLnR5cGVBaWRlSW47XG4gICAgICBjb2xvY2F0aW9uX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmNvbG9jYXRpb25JbjtcbiAgICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLnJlZHVjdGlvbkxveWVyU29saWRhcml0ZUluO1xuICAgICAgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5sb2dlbWVudE1ldWJsZUQ4NDIySW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb24yRHU4MzIyNUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuTm9tYnJlUGFydHNEODMyMjVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbl90b19qc29vXG4gICAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pblxuICAgIDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4udClcbiAgICA6IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIGNvbmRpdGlvbjJEdTgzMjI1SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW5cbiAgICAgIHZhbCBuTm9tYnJlUGFydHNEODMyMjVJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pblxuICAgICAgOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gSnMudCkgOlxuICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnQgPVxuICAgIHtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4jIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW47XG4gICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICBKcy50b19ib29sIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiMjLmNvbmRpdGlvbjJEdTgzMjI1SW47XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4jIy5uTm9tYnJlUGFydHNEODMyMjVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgY29uZGl0aW9uMkR1ODMyMjVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgIDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi50KVxuICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvbmRpdGlvbjJEdTgzMjI1SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4gSnMudCkgOlxuICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4udCA9XG4gICAge1xuICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgSnMudG9fYm9vbCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4jIy5jb25kaXRpb24yRHU4MzIyNUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgdHlwZUxvZ2VtZW50Rm95ZXJJbjogdHlwZV9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvbnZlbnRpb25uZW1lbnRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZWRldmFuY2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb24yRHU4MzIyNUluOiAodW5pdCwgIGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIG5Ob21icmVQYXJ0c0Q4MzIyNUluOlxuICAgICAgKHVuaXQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5cbiAgICA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHR5cGVMb2dlbWVudEZveWVySW4gPVxuICAgICAgICB0eXBlX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICB2YWwgZGF0ZUNvbnZlbnRpb25uZW1lbnRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLmRhdGVfY29udmVudGlvbm5lbWVudF9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi56b25lX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVkZXZhbmNlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5yZWRldmFuY2VfaW5cbiAgICAgIG1ldGhvZCBjb25kaXRpb24yRHU4MzIyNUluID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5ib29sIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiAoIGlucHV0KSkpXG4gICAgICBtZXRob2Qgbk5vbWJyZVBhcnRzRDgzMjI1SW4gPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gKCBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luX29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50ID1cbiAgICB7XG4gICAgICB0eXBlX2xvZ2VtZW50X2ZveWVyX2luID1cbiAgICAgICAgdHlwZV9sb2dlbWVudF9mb3llcl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiMjLnR5cGVMb2dlbWVudEZveWVySW47XG4gICAgICBkYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICAgICAgIyMuZGF0ZUNvbnZlbnRpb25uZW1lbnRJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0luO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4jIy56b25lSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVkZXZhbmNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4jIy5yZWRldmFuY2VJbjtcbiAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdjb25kaXRpb25fMl9kdV84MzJfMjVfaW4nIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnbl9ub21icmVfcGFydHNfZDgzMl8yNV9pbicgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW46IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluOlxuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luX3RvX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgOiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnQpXG4gICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpIDpcbiAgICBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnQgPVxuICAgIHtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5zaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbWVuc3VhbGl0ZVByaW5jaXBhbGVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlVHJhdmF1eExvZ2VtZW50SW46XG4gICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZVNpZ25hdHVyZVByZXRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRW50cmVlTG9nZW1lbnRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb3Byb3ByaWV0ZUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25SODIyMTExMzE3SW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHpvbmVJbjogem9uZV9kX2hhYml0YXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVQcmV0SW46IHR5cGVfcHJldCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYW5jaWVubmV0ZUxvZ2VtZW50SW46IG5ldWZfb3VfYW5jaWVuIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbWVuc3VhbGl0ZVByaW5jaXBhbGVJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICB2YWwgdHlwZVRyYXZhdXhMb2dlbWVudEluID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luXG4gICAgICB2YWwgZGF0ZVNpZ25hdHVyZVByZXRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pblxuICAgICAgdmFsIGxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW5cbiAgICAgIHZhbCBkYXRlRW50cmVlTG9nZW1lbnRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW5cbiAgICAgIHZhbCBjb3Byb3ByaWV0ZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uY29wcm9wcmlldGVfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25SODIyMTExMzE3SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnpvbmVfaW5cbiAgICAgIHZhbCB0eXBlUHJldEluID1cbiAgICAgICAgdHlwZV9wcmV0X3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnR5cGVfcHJldF9pblxuICAgICAgdmFsIGFuY2llbm5ldGVMb2dlbWVudEluID1cbiAgICAgICAgbmV1Zl9vdV9hbmNpZW5fdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uYW5jaWVubmV0ZV9sb2dlbWVudF9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50ID1cbiAgICB7XG4gICAgICBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubWVuc3VhbGl0ZVByaW5jaXBhbGVJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW4gPVxuICAgICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMudHlwZVRyYXZhdXhMb2dlbWVudEluO1xuICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmRhdGVTaWduYXR1cmVQcmV0SW47XG4gICAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmVJbjtcbiAgICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuZGF0ZUVudHJlZUxvZ2VtZW50SW47XG4gICAgICBjb3Byb3ByaWV0ZV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5jb3Byb3ByaWV0ZUluO1xuICAgICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uUjgyMjExMTMxN0luO1xuICAgICAgem9uZV9pbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4jIy56b25lSW47XG4gICAgICB0eXBlX3ByZXRfaW4gPVxuICAgICAgICB0eXBlX3ByZXRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnR5cGVQcmV0SW47XG4gICAgICBhbmNpZW5uZXRlX2xvZ2VtZW50X2luID1cbiAgICAgICAgbmV1Zl9vdV9hbmNpZW5fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmFuY2llbm5ldGVMb2dlbWVudEluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmRhdGVDb3VyYW50ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbW9kZU9jY3VwYXRpb25JbjogbW9kZV9vY2N1cGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlQWlkZUluOiB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVJbjogc2l0dWF0aW9uX2ZhbWlsaWFsZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9kZU9jY3VwYXRpb25JbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4ubW9kZV9vY2N1cGF0aW9uX2luXG4gICAgICB2YWwgdHlwZUFpZGVJbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLnR5cGVfYWlkZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VTYW5zQXJyb25kaUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luXG4gICAgICB2YWwgc2l0dWF0aW9uRmFtaWxpYWxlSW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luXG4gICAgICB2YWwgem9uZUluID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLnpvbmVfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLm1vZGVPY2N1cGF0aW9uSW47XG4gICAgICB0eXBlX2FpZGVfaW4gPVxuICAgICAgICB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIyMudHlwZUFpZGVJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZVNhbnNBcnJvbmRpSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLnNpdHVhdGlvbkZhbWlsaWFsZUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHpvbmVfaW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLnpvbmVJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLmRhdGVDb3VyYW50ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbG95ZXJQcmluY2lwYWxJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudEVzdENoYW1icmVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVBaWRlSW46IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbG9jYXRpb25JbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnRNZXVibGVEODQyMkluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjaGFuZ2VtZW50TG9nZW1lbnREODQyNEluOlxuICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBsb3llclByaW5jaXBhbEluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG95ZXJfcHJpbmNpcGFsX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi56b25lX2luXG4gICAgICB2YWwgbG9nZW1lbnRFc3RDaGFtYnJlSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW5cbiAgICAgIHZhbCBhZ2Vlc091SGFuZGljYXBBZHVsdGVzSGViZXJnZWVzT25lcmV1eFBhcnRpY3VsaWVyc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luXG4gICAgICB2YWwgdHlwZUFpZGVJbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLnR5cGVfYWlkZV9pblxuICAgICAgdmFsIGNvbG9jYXRpb25JbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5jb2xvY2F0aW9uX2luXG4gICAgICB2YWwgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pblxuICAgICAgdmFsIGxvZ2VtZW50TWV1YmxlRDg0MjJJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luXG4gICAgICB2YWwgY2hhbmdlbWVudExvZ2VtZW50RDg0MjRJbiA9XG4gICAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luX29mX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udCA9XG4gICAge1xuICAgICAgbG95ZXJfcHJpbmNpcGFsX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5sb3llclByaW5jaXBhbEluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW47XG4gICAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXNJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy56b25lSW47XG4gICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMubG9nZW1lbnRFc3RDaGFtYnJlSW47XG4gICAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjtcbiAgICAgIHR5cGVfYWlkZV9pbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy50eXBlQWlkZUluO1xuICAgICAgY29sb2NhdGlvbl9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmNvbG9jYXRpb25JbjtcbiAgICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5yZWR1Y3Rpb25Mb3llclNvbGlkYXJpdGVJbjtcbiAgICAgIGxvZ2VtZW50X21ldWJsZV9kODQyXzJfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmxvZ2VtZW50TWV1YmxlRDg0MjJJbjtcbiAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X2luID1cbiAgICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5jaGFuZ2VtZW50TG9nZW1lbnREODQyNEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0Jhc2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW46IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluOlxuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHpvbmVJbjogem9uZV9kX2hhYml0YXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbnN1YWxpdGVQcmluY2lwYWxlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uUjgyMjExMTMxN0luOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlU2lnbmF0dXJlUHJldEluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVUcmF2YXV4TG9nZW1lbnRJbjpcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVFbnRyZWVMb2dlbWVudEluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNoYXJnZXNNZW5zdWVsbGVzUHJldEluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvcHJvcHJpZXRlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl90b19qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQpXG4gICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNCYXNlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi56b25lX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgbWVuc3VhbGl0ZVByaW5jaXBhbGVJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pblxuICAgICAgdmFsIHNpdHVhdGlvblI4MjIxMTEzMTdJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pblxuICAgICAgdmFsIGRhdGVTaWduYXR1cmVQcmV0SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5kYXRlX3NpZ25hdHVyZV9wcmV0X2luXG4gICAgICB2YWwgdHlwZVRyYXZhdXhMb2dlbWVudEluID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luXG4gICAgICB2YWwgbG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmVJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW5cbiAgICAgIHZhbCBkYXRlRW50cmVlTG9nZW1lbnRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luXG4gICAgICB2YWwgY2hhcmdlc01lbnN1ZWxsZXNQcmV0SW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldF9pblxuICAgICAgdmFsIGNvcHJvcHJpZXRlSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uY29wcm9wcmlldGVfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCA9XG4gICAge1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNCYXNlSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5zaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjtcbiAgICAgIHpvbmVfaW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiMjLnpvbmVJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm1lbnN1YWxpdGVQcmluY2lwYWxlSW47XG4gICAgICBzaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uUjgyMjExMTMxN0luO1xuICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlU2lnbmF0dXJlUHJldEluO1xuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2luID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnR5cGVUcmF2YXV4TG9nZW1lbnRJbjtcbiAgICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmVJbjtcbiAgICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmRhdGVFbnRyZWVMb2dlbWVudEluO1xuICAgICAgY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmNoYXJnZXNNZW5zdWVsbGVzUHJldEluO1xuICAgICAgY29wcm9wcmlldGVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiMjLmNvcHJvcHJpZXRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgdHlwZUxvZ2VtZW50Rm95ZXJJbjogdHlwZV9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvbnZlbnRpb25uZW1lbnRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZWRldmFuY2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyRDg0MjE2SW46XG4gICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgdHlwZUxvZ2VtZW50Rm95ZXJJbiA9XG4gICAgICAgIHR5cGVfbG9nZW1lbnRfZm95ZXJfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICB2YWwgZGF0ZUNvbnZlbnRpb25uZW1lbnRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW5cbiAgICAgIHZhbCByZWRldmFuY2VJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5yZWRldmFuY2VfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLnpvbmVfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgY2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckQ4NDIxNkluID1cbiAgICAgICAgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnQgPVxuICAgIHtcbiAgICAgIHR5cGVfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICAgICAgICB0eXBlX2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLnR5cGVMb2dlbWVudEZveWVySW47XG4gICAgICBkYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLmRhdGVDb252ZW50aW9ubmVtZW50SW47XG4gICAgICByZWRldmFuY2VfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5yZWRldmFuY2VJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLnJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIyMuem9uZUluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfaW4gPVxuICAgICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5cbiAgICAgICAgICAjIy5jYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyRDg0MjE2SW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbW9kZU9jY3VwYXRpb25JbjogbW9kZV9vY2N1cGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVJbjogc2l0dWF0aW9uX2ZhbWlsaWFsZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlQWlkZUluOiB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX3RvX2pzb28gKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXG4gICAgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi50KSA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vZGVPY2N1cGF0aW9uSW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5tb2RlX29jY3VwYXRpb25faW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uem9uZV9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCB0eXBlQWlkZUluID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLnR5cGVfYWlkZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMucmVzc291cmNlc01lbmFnZVNhbnNBcnJvbmRpSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy5zaXR1YXRpb25GYW1pbGlhbGVJbjtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgem9uZV9pbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy56b25lSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICB0eXBlX2FpZGVfaW4gPVxuICAgICAgICB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLnR5cGVBaWRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiA9XG4gIG9iamVjdCBtZXRob2QgZGF0ZU5haXNzYW5jZUFzc3VyZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbl90b19qc29vIChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luXG4gICAgOiBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluLnQpIDogb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlTmFpc3NhbmNlQXNzdXJlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbi5kYXRlX25haXNzYW5jZV9hc3N1cmVfaW5cbiAgICAgIGVuZFxuICBsZXQgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbl9vZl9qc29vXG4gICAgKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gOiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIEpzLnQpIDpcbiAgICBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfbmFpc3NhbmNlX2Fzc3VyZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIyMuZGF0ZU5haXNzYW5jZUFzc3VyZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vZGVPY2N1cGF0aW9uSW46IG1vZGVfb2NjdXBhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZVZlcnNlZUluOiB2ZXJzZW1lbnRfYSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbW9udGFudEFwbEluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnRDaGFyZ2VzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVwZW5zZUxvZ2VtZW50SW46IGRlcGVuc2VfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnREZXR0ZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5fdG9fanNvbyAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5cbiAgICA6IEltcGF5ZURlcGVuc2VMb2dlbWVudEluLnQpIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9kZU9jY3VwYXRpb25JbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl90b19qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLm1vZGVfb2NjdXBhdGlvbl9pblxuICAgICAgdmFsIGFpZGVWZXJzZWVJbiA9XG4gICAgICAgIHZlcnNlbWVudF9hX3RvX2pzb28gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4uYWlkZV92ZXJzZWVfaW5cbiAgICAgIHZhbCBtb250YW50QXBsSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4ubW9udGFudF9hcGxfaW5cbiAgICAgIHZhbCBtb250YW50Q2hhcmdlc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLm1vbnRhbnRfY2hhcmdlc19pblxuICAgICAgdmFsIGRlcGVuc2VMb2dlbWVudEluID1cbiAgICAgICAgZGVwZW5zZV9sb2dlbWVudF90b19qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLmRlcGVuc2VfbG9nZW1lbnRfaW5cbiAgICAgIHZhbCBtb250YW50RGV0dGVJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5tb250YW50X2RldHRlX2luXG4gICAgICBlbmRcbiAgbGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gOiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiBKcy50KSA6XG4gICAgSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgbW9kZV9vY2N1cGF0aW9uX2luID1cbiAgICAgICAgbW9kZV9vY2N1cGF0aW9uX29mX2pzb28gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgYWlkZV92ZXJzZWVfaW4gPVxuICAgICAgICB2ZXJzZW1lbnRfYV9vZl9qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMuYWlkZVZlcnNlZUluO1xuICAgICAgbW9udGFudF9hcGxfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4jIy5tb250YW50QXBsSW47XG4gICAgICBtb250YW50X2NoYXJnZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4jIy5tb250YW50Q2hhcmdlc0luO1xuICAgICAgZGVwZW5zZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIGRlcGVuc2VfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMuZGVwZW5zZUxvZ2VtZW50SW47XG4gICAgICBtb250YW50X2RldHRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMubW9udGFudERldHRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtZW5hZ2VJbjogbWVuYWdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJJbjogZGVtYW5kZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlUHJpc2VzRW5Db21wdGVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW5fdG9fanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnQpXG4gICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbmFnZUluID0gbWVuYWdlX3RvX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5tZW5hZ2VfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJJbiA9XG4gICAgICAgIGRlbWFuZGV1cl90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uZGVtYW5kZXVyX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiBKcy50KSA6XG4gICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1lbmFnZV9pbiA9IG1lbmFnZV9vZl9qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4jIy5tZW5hZ2VJbjtcbiAgICAgIGRlbWFuZGV1cl9pbiA9XG4gICAgICAgIGRlbWFuZGV1cl9vZl9qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4jIy5kZW1hbmRldXJJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIyMucmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtZW5hZ2VJbjogbWVuYWdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJJbjogZGVtYW5kZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlUHJpc2VzRW5Db21wdGVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW5fdG9fanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnQpXG4gICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbmFnZUluID1cbiAgICAgICAgbWVuYWdlX3RvX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5tZW5hZ2VfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJJbiA9XG4gICAgICAgIGRlbWFuZGV1cl90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uZGVtYW5kZXVyX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgICA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gSnMudCkgOlxuICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4udCA9XG4gICAge1xuICAgICAgbWVuYWdlX2luID1cbiAgICAgICAgbWVuYWdlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4jIy5kZW1hbmRldXJJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW5cbiAgICAgICAgICAjIy5yZXNzb3VyY2VzTWVuYWdlUHJpc2VzRW5Db21wdGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0IG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udClcbiAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCkgOlxuICAgIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmRhdGVDb3VyYW50ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIHNtaWNfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzaWRlbmNlSW46IGNvbGxlY3Rpdml0ZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBzbWljX2luX3RvX2pzb28gKHNtaWNfaW4gOiBTbWljSW4udCkgOiBzbWljX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID0gZGF0ZV90b19qc29vIHNtaWNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlc2lkZW5jZUluID0gY29sbGVjdGl2aXRlX3RvX2pzb28gc21pY19pbi5yZXNpZGVuY2VfaW5cbiAgICAgIGVuZFxuICBsZXQgc21pY19pbl9vZl9qc29vIChzbWljX2luIDogc21pY19pbiBKcy50KSA6IFNtaWNJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID0gZGF0ZV9vZl9qc29vIHNtaWNfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHJlc2lkZW5jZV9pbiA9IGNvbGxlY3Rpdml0ZV9vZl9qc29vIHNtaWNfaW4jIy5yZXNpZGVuY2VJblxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHByZXN0YXRpb25Db3VyYW50ZUluOlxuICAgICAgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgOiBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHByZXN0YXRpb25Db3VyYW50ZUluID1cbiAgICAgICAgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb28gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzaWRlbmNlSW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLnJlc2lkZW5jZV9pblxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcHJlc3RhdGlvbl9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnByZXN0YXRpb25Db3VyYW50ZUluO1xuICAgICAgcmVzaWRlbmNlX2luID1cbiAgICAgICAgY29sbGVjdGl2aXRlX29mX2pzb29cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIyMucmVzaWRlbmNlSW5cbiAgICB9XG5cblxuXG5cbmxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIDogY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50KVxuICA6IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCA9XG4gIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgfD4gY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgfD4gY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVxuICAoY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luIDogY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luIEpzLnQpXG4gIDogY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIEpzLnQgPVxuICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW5cbiAgfD4gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXG4gIHw+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV90b19qc29vXG5cblxubGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llclxuICAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIDogY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIEpzLnQpXG4gIDogY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyIEpzLnQgPVxuICBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW5cbiAgfD4gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl90b19qc29vXG5cblxubGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpXG4gIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQgPVxuICBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgfD4gY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV90b19qc29vXG5cblxubGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVcbiAgKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gOiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIEpzLnQpXG4gIDogb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSBKcy50ID1cbiAgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pblxuICB8PiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luX29mX2pzb29cbiAgfD4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVxuICB8PiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX3RvX2pzb29cblxuXG5sZXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRcbiAgKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gSnMudClcbiAgOiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudCBKcy50ID1cbiAgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5cbiAgfD4gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudFxuICB8PiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpXG4gIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICB8PiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cblxuXG5sZXQgc21pYyAoc21pY19pbiA6IHNtaWNfaW4gSnMudClcbiAgOiBzbWljIEpzLnQgPVxuICBzbWljX2luIHw+IHNtaWNfaW5fb2ZfanNvbyB8PiBzbWljIHw+IHNtaWNfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZcbiAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50KVxuICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiBKcy50ID1cbiAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZlxuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50KVxuICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIgSnMudCA9XG4gIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJcbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl90b19qc29vXG5cblxubGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpXG4gIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQgPVxuICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV90b19qc29vXG5cblxubGV0IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCA9XG4gIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gIHw+IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgfD4gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIChyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIDogcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50KVxuICA6IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCA9XG4gIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgfD4gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgfD4gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgKGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpXG4gIDogZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICB8PiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZlxuICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4gSnMudClcbiAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmIEpzLnQgPVxuICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiBKcy50KVxuICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIEpzLnQgPVxuICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pblxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gSnMudClcbiAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQgPVxuICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBKcy50KVxuICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgSnMudCA9XG4gIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudFxuICAoZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIDogZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIEpzLnQpXG4gIDogZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50IEpzLnQgPVxuICBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW5cbiAgfD4gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50XG4gIHw+IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF90b19qc29vXG5cblxubGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIDogZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQgPVxuICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5cbiAgfD4gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gIHw+IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgKGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gOiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50ID1cbiAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pblxuICB8PiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudFxuICB8PiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudClcbiAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50ID1cbiAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudFxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRcbiAgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIEpzLnQpXG4gIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCBKcy50ID1cbiAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pblxuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudFxuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X3RvX2pzb29cblxuXG5sZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZVxuICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gSnMudClcbiAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlIEpzLnQgPVxuICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gIHw+IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlXG4gIHw+IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfdG9fanNvb1xuXG5cbmxldCBfID1cbiAgIEpzLmV4cG9ydCBcIkFpZGVzTG9nZW1lbnRMaWJcIlxuICAgIChvYmplY3QlanNcbiAgICAgIFxuICAgICAgbWV0aG9kIGNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudCA6IChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQgLT4gY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlIDogKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiBKcy50IC0+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llciA6IChjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4gSnMudCAtPiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llclxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUgOiAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgLT4gY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgIFxuICAgICAgbWV0aG9kIG91dmVydHVyZURyb2l0c1JldHJhaXRlIDogKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gSnMudCAtPiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlXG4gICAgICBcbiAgICAgIG1ldGhvZCBpbXBheWVEZXBlbnNlTG9nZW1lbnQgOiAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gSnMudCAtPiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgOiAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIFxuICAgICAgbWV0aG9kIHNtaWMgOiAoc21pY19pbiBKcy50IC0+IHNtaWMgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIHNtaWNcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmIDogKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50IC0+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIgOiAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50IC0+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUgOiAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgLT4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFja1xuICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgIFxuICAgICAgbWV0aG9kIGVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50IDogKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQgLT4gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCByZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50IDogKHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudCAtPiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBlbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcyA6IChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgLT4gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZiA6IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQgLT4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZlxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIgOiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gSnMudCAtPiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZSA6IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgLT4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCA6IChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQgLT4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50IDogKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiBKcy50IC0+IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBlbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgOiAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQgLT4gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50IDogKGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCAtPiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQgOiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCAtPiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQgOiAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiBKcy50IC0+IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlIDogKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gSnMudCAtPiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlXG4gICAgICBcbiAgICBlbmQpIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZW5jaCBsYXcgbGlicmFyeSwgYSBjb2xsZWN0aW9uIG9mIGZ1bmN0aW9ucyBmb3JcbiAgIGNvbXB1dGluZyBGcmVuY2ggdGF4ZXMgYW5kIGJlbmVmaXRzIGRlcml2ZWQgZnJvbSBDYXRhbGEgcHJvZ3JhbXMuIENvcHlyaWdodFxuICAgKEMpIDIwMjEgSW5yaWEsIGNvbnRyaWJ1dG9yOiBEZW5pcyBNZXJpZ291eCA8ZGVuaXMubWVyaWdvdXhAaW5yaWEuZnI+LCBFbWlsZVxuICAgUm9sbGV5IDxlbWlsZS5yb2xsZXlAdHV0YS5pbz5cblxuICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3RcbiAgIHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mXG4gICB0aGUgTGljZW5zZSBhdFxuXG4gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUXG4gICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGVcbiAgIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyXG4gICB0aGUgTGljZW5zZS4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiBMYXdfc291cmNlXG5vcGVuIFJ1bnRpbWVfanNvby5SdW50aW1lXG5tb2R1bGUgQUYgPSBBbGxvY2F0aW9uc19mYW1pbGlhbGVzXG5tb2R1bGUgQUZfd2ViID0gQWxsb2NhdGlvbnNfZmFtaWxpYWxlc19hcGlfd2ViXG5tb2R1bGUgQUwgPSBBaWRlc19sb2dlbWVudFxubW9kdWxlIEFMX3dlYiA9IEFpZGVzX2xvZ2VtZW50X2FwaV93ZWJcblxubGV0IF8gPVxuICBKcy5leHBvcnRfYWxsXG4gICAgKG9iamVjdCVqc1xuICAgICAgIHZhbCBldmVudHNNYW5hZ2VyID0gZXZlbnRfbWFuYWdlclxuXG4gICAgICAgbWV0aG9kIGNvbXB1dGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcbiAgICAgICAgICAgOiAoQUZfd2ViLmludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIC0+IGZsb2F0KSBKcy5jYWxsYmFjayA9XG4gICAgICAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gLT5cbiAgICAgICAgICAgICBleGVjdXRlX29yX3Rocm93X2Vycm9yIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgICAgICAgICAgICAgICB8PiBBRl93ZWIuaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgcmVzdWx0IyMuaU1vbnRhbnRWZXJzZSkpXG5cbiAgICAgICBtZXRob2QgY29tcHV0ZUFpZGVzQXVMb2dlbWVudFxuICAgICAgICAgICA6IChBTF93ZWIuY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiAtPiBmbG9hdClcbiAgICAgICAgICAgICBKcy5jYWxsYmFjayA9XG4gICAgICAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiAtPlxuICAgICAgICAgICAgIGV4ZWN1dGVfb3JfdGhyb3dfZXJyb3IgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgICAgICAgICAgICAgICAgfD4gQUxfd2ViLmNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgcmVzdWx0IyMuYWlkZUZpbmFsZSkpXG4gICAgZW5kKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXX0= \ No newline at end of file diff --git a/french_law/python/src/aides_logement.py b/french_law/python/src/aides_logement.py index a3c38c71..b589b29e 100644 --- a/french_law/python/src/aides_logement.py +++ b/french_law/python/src/aides_logement.py @@ -2651,7 +2651,6 @@ class EligibilitePrestationsFamilialesIn: - def contributions_sociales_aides_personnelle_logement(contributions_sociales_aides_personnelle_logement_in:ContributionsSocialesAidesPersonnelleLogementIn): date_courante = contributions_sociales_aides_personnelle_logement_in.date_courante_in try: diff --git a/french_law/python/src/allocations_familiales.py b/french_law/python/src/allocations_familiales.py index 1bf25ef4..51b8154e 100644 --- a/french_law/python/src/allocations_familiales.py +++ b/french_law/python/src/allocations_familiales.py @@ -497,7 +497,6 @@ class InterfaceAllocationsFamilialesIn: - def allocation_familiales_avril2008(allocation_familiales_avril2008_in:AllocationFamilialesAvril2008In): try: temp_age_minimum_alinea_1_l521_3 = duration_of_numbers(16,0,0) diff --git a/tests/test_name_resolution/good/toplevel_defs.catala_en b/tests/test_name_resolution/good/toplevel_defs.catala_en index 8d233461..41d54a5d 100644 --- a/tests/test_name_resolution/good/toplevel_defs.catala_en +++ b/tests/test_name_resolution/good/toplevel_defs.catala_en @@ -92,13 +92,13 @@ $ catala Interpret -s S4 ```catala-test-inline $ catala scalc -let glob1 = 44.12 +let glob1_2 = 44.12 -let glob3 (x: money) = return to_rat_mon x_3 +. 10. +let glob3_3 (x_3: money) = return to_rat_mon x_3 +. 10. -let glob4 (x: money) (y: decimal) = return to_rat_mon x_4 *. y_5 +. 10. +let glob4_4 (x_4: money) (y_5: decimal) = return to_rat_mon x_4 *. y_5 +. 10. -let glob5_aux = +let glob5_aux_5 = decl glob5_7 : any; let glob5_7 (x_8 : decimal) = decl y_9 : decimal; @@ -106,20 +106,20 @@ let glob5_aux = return x_8 *. y_9; return glob5_7 to_rat_int 2 *. 3. -let glob5 = glob5_aux () +let glob5_6 = glob5_aux_5 () -let glob2 = A {"y": glob1_2 >=. 30., "z": 123. *. 17.} +let glob2_10 = A {"y": glob1_2 >=. 30., "z": 123. *. 17.} -let S2 (S2_in_11 : S2_in {}) = +let S2_6 (S2_in_11: S2_in {}) = decl temp_a_13 : any; try: decl temp_a_16 : any; let temp_a_16 (__17 : unit) = - return glob3 $44.00 +. 100.; + return glob3_3 $44.00 +. 100.; decl temp_a_14 : any; let temp_a_14 (__15 : unit) = return true; - temp_a_13 = handle_default [] temp_a_14 temp_a_16 + temp_a_13 = handle_default_1 [] temp_a_14 temp_a_16 with EmptyError: temp_a_13 = dead_value_1; raise NoValueProvided; @@ -127,16 +127,16 @@ let S2 (S2_in_11 : S2_in {}) = a_12 = temp_a_13; return S2 {"a": a_12} -let S3 (S3_in_18 : S3_in {}) = +let S3_7 (S3_in_18: S3_in {}) = decl temp_a_20 : any; try: decl temp_a_23 : any; let temp_a_23 (__24 : unit) = - return 50. +. glob4 $44.00 55.; + return 50. +. glob4_4 $44.00 55.; decl temp_a_21 : any; let temp_a_21 (__22 : unit) = return true; - temp_a_20 = handle_default [] temp_a_21 temp_a_23 + temp_a_20 = handle_default_1 [] temp_a_21 temp_a_23 with EmptyError: temp_a_20 = dead_value_1; raise NoValueProvided; @@ -144,7 +144,7 @@ let S3 (S3_in_18 : S3_in {}) = a_19 = temp_a_20; return S3 {"a": a_19} -let S4 (S4_in_25 : S4_in {}) = +let S4_8 (S4_in_25: S4_in {}) = decl temp_a_27 : any; try: decl temp_a_30 : any; @@ -153,7 +153,7 @@ let S4 (S4_in_25 : S4_in {}) = decl temp_a_28 : any; let temp_a_28 (__29 : unit) = return true; - temp_a_27 = handle_default [] temp_a_28 temp_a_30 + temp_a_27 = handle_default_1 [] temp_a_28 temp_a_30 with EmptyError: temp_a_27 = dead_value_1; raise NoValueProvided; @@ -161,7 +161,7 @@ let S4 (S4_in_25 : S4_in {}) = a_26 = temp_a_27; return S4 {"a": a_26} -let S (S_in_32 : S_in {}) = +let S_9 (S_in_32: S_in {}) = decl temp_a_40 : any; try: decl temp_a_43 : any; @@ -170,7 +170,7 @@ let S (S_in_32 : S_in {}) = decl temp_a_41 : any; let temp_a_41 (__42 : unit) = return true; - temp_a_40 = handle_default [] temp_a_41 temp_a_43 + temp_a_40 = handle_default_1 [] temp_a_41 temp_a_43 with EmptyError: temp_a_40 = dead_value_1; raise NoValueProvided; @@ -184,7 +184,7 @@ let S (S_in_32 : S_in {}) = decl temp_b_36 : any; let temp_b_36 (__37 : unit) = return true; - temp_b_35 = handle_default [] temp_b_36 temp_b_38 + temp_b_35 = handle_default_1 [] temp_b_36 temp_b_38 with EmptyError: temp_b_35 = dead_value_1; raise NoValueProvided; diff --git a/tests/test_scope/good/nothing.catala_en b/tests/test_scope/good/nothing.catala_en index 012aabd3..05410a23 100644 --- a/tests/test_scope/good/nothing.catala_en +++ b/tests/test_scope/good/nothing.catala_en @@ -7,11 +7,12 @@ declaration scope Foo2: ```catala-test-inline $ catala Scalc -s Foo2 -O -t -let Foo2 (Foo2_in_2 : Foo2_in {}) = +let Foo2_3 (Foo2_in_2: Foo2_in {}) = decl temp_bar_4 : any; temp_bar_4 = dead_value_1; raise NoValueProvided; decl bar_3 : integer; bar_3 = temp_bar_4; return Foo2 {"bar": bar_3} + ``` From 72cf477dd9a5372868a48ff4a7c9f36a609c8cec Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Wed, 15 Feb 2023 12:40:15 +0100 Subject: [PATCH 10/10] Toplevel definitions: fixes following review Thanks @denismerigoux! --- compiler/dcalc/interpreter.ml | 13 +- compiler/desugared/from_surface.ml | 8 +- compiler/lcalc/compile_with_exceptions.ml | 5 +- compiler/surface/parser.mly | 3 - french_law/js/french_law.js | 134042 ++----------------- 5 files changed, 7553 insertions(+), 126518 deletions(-) diff --git a/compiler/dcalc/interpreter.ml b/compiler/dcalc/interpreter.ml index 4040fef1..e6260c04 100644 --- a/compiler/dcalc/interpreter.ml +++ b/compiler/dcalc/interpreter.ml @@ -366,10 +366,15 @@ and evaluate_expr (ctx : decl_ctx) (e : 'm Ast.expr) : 'm Ast.expr = e StructName.format_t s) | ETuple es -> Marked.same_mark_as (ETuple (List.map (evaluate_expr ctx) es)) e - | ETupleAccess { e = e1; index; size } -> - Marked.same_mark_as - (ETupleAccess { e = evaluate_expr ctx e1; index; size }) - e + | ETupleAccess { e = e1; index; size } -> ( + match evaluate_expr ctx e1 with + | ETuple es, _ when List.length es = size -> List.nth es index + | e -> + Errors.raise_spanned_error (Expr.pos e) + "The expression %a was expected to be a tuple of size %d (should not \ + happen if the term was well-typed)" + (Expr.format ctx ~debug:true) + e size) | EInj { e = e1; name; cons } -> let e1' = evaluate_expr ctx e1 in if is_empty_error e then Marked.same_mark_as (ELit LEmptyError) e diff --git a/compiler/desugared/from_surface.ml b/compiler/desugared/from_surface.ml index f1d71d7a..ca71424b 100644 --- a/compiler/desugared/from_surface.ml +++ b/compiler/desugared/from_surface.ml @@ -1165,7 +1165,10 @@ let process_scope_use (process_scope_use_item precond scope_uid ctxt) prgm use.scope_use_items -let process_topdef ctxt prgm def = +let process_topdef + (ctxt : Name_resolution.context) + (prgm : Ast.program) + (def : S.top_def) : Ast.program = let id = IdentName.Map.find (Marked.unmark def.S.topdef_name) @@ -1303,8 +1306,7 @@ let init_scope_defs scope_def_map) sub_scope_def.Name_resolution.var_idmap scope_def_map in - IdentName.Map.fold add_def scope_idmap - Ast.ScopeDefMap.empty (* TODO: add topdefs too *) + IdentName.Map.fold add_def scope_idmap Ast.ScopeDefMap.empty (** Main function of this module *) let translate_program diff --git a/compiler/lcalc/compile_with_exceptions.ml b/compiler/lcalc/compile_with_exceptions.ml index 73ef407b..0cc68b97 100644 --- a/compiler/lcalc/compile_with_exceptions.ml +++ b/compiler/lcalc/compile_with_exceptions.ml @@ -20,8 +20,9 @@ module D = Dcalc.Ast module A = Ast type 'm ctx = unit -(** This environment contains a mapping between the variables in Dcalc and their - correspondance in Lcalc. *) +(** This translation no longer needs a context at the moment, but we keep + passing the argument through the functions in case the need arises with + further evolutions. *) let thunk_expr (type m) (e : m A.expr boxed) : m A.expr boxed = let dummy_var = Var.make "_" in diff --git a/compiler/surface/parser.mly b/compiler/surface/parser.mly index 48857305..d6da14e8 100644 --- a/compiler/surface/parser.mly +++ b/compiler/surface/parser.mly @@ -601,9 +601,6 @@ let enum_decl_line := } } -(* let def_depends == - * | DEPENDS ; arg = lident ; CONTENT ; ty_arg = addpos(typ) ; <> *) - let var_content == | ~ = lident ; CONTENT ; ty = addpos(typ) ; <> let depends_stance == diff --git a/french_law/js/french_law.js b/french_law/js/french_law.js index af917bb5..ba2df878 100644 --- a/french_law/js/french_law.js +++ b/french_law/js/french_law.js @@ -1,126507 +1,7537 @@ -//# 1 "api_web.bc.runtime.js" // Generated by js_of_ocaml 4.0.0 -(function(Object) - {typeof globalThis - !== - "object" - && - (this - ?get() - :(Object.defineProperty - (Object.prototype,"_T_",{configurable:true,get:get}), - _T_)); - function get() - {var global=this || self; - global.globalThis = global; - delete Object.prototype._T_}} - (Object)); -(function(globalThis) - {"use strict"; - var joo_global_object=globalThis; - function caml_int64_is_zero(x){return + x.isZero()} - function caml_str_repeat(n,s) - {if(n == 0)return ""; - if(s.repeat)return s.repeat(n); - var r="",l=0; - for(;;) - {if(n & 1)r += s; - n >>= 1; - if(n == 0)return r; - s += s; - l++; - if(l == 9)s.slice(0,1)}} - var caml_int64_offset=Math.pow(2,- 24); - function caml_raise_constant(tag){throw tag} - var caml_global_data=[0]; - function caml_raise_zero_divide() - {caml_raise_constant(caml_global_data.Division_by_zero)} - function MlInt64(lo,mi,hi) - {this.lo = lo & 0xffffff;this.mi = mi & 0xffffff;this.hi = hi & 0xffff} - MlInt64.prototype.caml_custom = "_j"; - MlInt64.prototype.copy - = - function(){return new MlInt64(this.lo,this.mi,this.hi)}; - MlInt64.prototype.ucompare - = - function(x) - {if(this.hi > x.hi)return 1; - if(this.hi < x.hi)return - 1; - if(this.mi > x.mi)return 1; - if(this.mi < x.mi)return - 1; - if(this.lo > x.lo)return 1; - if(this.lo < x.lo)return - 1; - return 0}; - MlInt64.prototype.compare - = - function(x) - {var hi=this.hi << 16,xhi=x.hi << 16; - if(hi > xhi)return 1; - if(hi < xhi)return - 1; - if(this.mi > x.mi)return 1; - if(this.mi < x.mi)return - 1; - if(this.lo > x.lo)return 1; - if(this.lo < x.lo)return - 1; - return 0}; - MlInt64.prototype.neg - = - function() - {var lo=- this.lo,mi=- this.mi + (lo >> 24),hi=- this.hi + (mi >> 24); - return new MlInt64(lo,mi,hi)}; - MlInt64.prototype.add - = - function(x) - {var - lo=this.lo + x.lo, - mi=this.mi + x.mi + (lo >> 24), - hi=this.hi + x.hi + (mi >> 24); - return new MlInt64(lo,mi,hi)}; - MlInt64.prototype.sub - = - function(x) - {var - lo=this.lo - x.lo, - mi=this.mi - x.mi + (lo >> 24), - hi=this.hi - x.hi + (mi >> 24); - return new MlInt64(lo,mi,hi)}; - MlInt64.prototype.mul - = - function(x) - {var - lo=this.lo * x.lo, - mi=(lo * caml_int64_offset | 0) + this.mi * x.lo + this.lo * x.mi, - hi= - (mi * caml_int64_offset | 0) - + - this.hi - * - x.lo - + - this.mi - * - x.mi - + - this.lo - * - x.hi; - return new MlInt64(lo,mi,hi)}; - MlInt64.prototype.isZero - = - function(){return (this.lo | this.mi | this.hi) == 0}; - MlInt64.prototype.isNeg = function(){return this.hi << 16 < 0}; - MlInt64.prototype.and - = - function(x) - {return new MlInt64(this.lo & x.lo,this.mi & x.mi,this.hi & x.hi)}; - MlInt64.prototype.or - = - function(x) - {return new MlInt64(this.lo | x.lo,this.mi | x.mi,this.hi | x.hi)}; - MlInt64.prototype.xor - = - function(x) - {return new MlInt64(this.lo ^ x.lo,this.mi ^ x.mi,this.hi ^ x.hi)}; - MlInt64.prototype.shift_left - = - function(s) - {s = s & 63; - if(s == 0)return this; - if(s < 24) - return new - MlInt64 - (this.lo << s, - this.mi << s | this.lo >> 24 - s, - this.hi << s | this.mi >> 24 - s); - if(s < 48) - return new - MlInt64 - (0,this.lo << s - 24,this.mi << s - 24 | this.lo >> 48 - s); - return new MlInt64(0,0,this.lo << s - 48)}; - MlInt64.prototype.shift_right_unsigned - = - function(s) - {s = s & 63; - if(s == 0)return this; - if(s < 24) - return new - MlInt64 - (this.lo >> s | this.mi << 24 - s, - this.mi >> s | this.hi << 24 - s, - this.hi >> s); - if(s < 48) - return new - MlInt64 - (this.mi >> s - 24 | this.hi << 48 - s,this.hi >> s - 24,0); - return new MlInt64(this.hi >> s - 48,0,0)}; - MlInt64.prototype.shift_right - = - function(s) - {s = s & 63; - if(s == 0)return this; - var h=this.hi << 16 >> 16; - if(s < 24) - return new - MlInt64 - (this.lo >> s | this.mi << 24 - s, - this.mi >> s | h << 24 - s, - this.hi << 16 >> s >>> 16); - var sign=this.hi << 16 >> 31; - if(s < 48) - return new - MlInt64 - (this.mi >> s - 24 | this.hi << 48 - s, - this.hi << 16 >> s - 24 >> 16, - sign & 0xffff); - return new MlInt64(this.hi << 16 >> s - 32,sign,sign)}; - MlInt64.prototype.lsl1 - = - function() - {this.hi = this.hi << 1 | this.mi >> 23; - this.mi = (this.mi << 1 | this.lo >> 23) & 0xffffff; - this.lo = this.lo << 1 & 0xffffff}; - MlInt64.prototype.lsr1 - = - function() - {this.lo = (this.lo >>> 1 | this.mi << 23) & 0xffffff; - this.mi = (this.mi >>> 1 | this.hi << 23) & 0xffffff; - this.hi = this.hi >>> 1}; - MlInt64.prototype.udivmod - = - function(x) - {var - offset=0, - modulus=this.copy(), - divisor=x.copy(), - quotient=new MlInt64(0,0,0); - while(modulus.ucompare(divisor) > 0){offset++;divisor.lsl1()} - while(offset >= 0) - {offset--; - quotient.lsl1(); - if(modulus.ucompare(divisor) >= 0) - {quotient.lo++;modulus = modulus.sub(divisor)} - divisor.lsr1()} - return {quotient:quotient,modulus:modulus}}; - MlInt64.prototype.div - = - function(y) - {var x=this; - if(y.isZero())caml_raise_zero_divide(); - var sign=x.hi ^ y.hi; - if(x.hi & 0x8000)x = x.neg(); - if(y.hi & 0x8000)y = y.neg(); - var q=x.udivmod(y).quotient; - if(sign & 0x8000)q = q.neg(); - return q}; - MlInt64.prototype.mod - = - function(y) - {var x=this; - if(y.isZero())caml_raise_zero_divide(); - var sign=x.hi; - if(x.hi & 0x8000)x = x.neg(); - if(y.hi & 0x8000)y = y.neg(); - var r=x.udivmod(y).modulus; - if(sign & 0x8000)r = r.neg(); - return r}; - MlInt64.prototype.toInt = function(){return this.lo | this.mi << 24}; - MlInt64.prototype.toFloat - = - function() - {return (this.hi << 16) - * - Math.pow(2,32) - + - this.mi - * - Math.pow(2,24) - + - this.lo}; - MlInt64.prototype.toArray - = - function() - {return [this.hi >> 8, - this.hi & 0xff, - this.mi >> 16, - this.mi >> 8 & 0xff, - this.mi & 0xff, - this.lo >> 16, - this.lo >> 8 & 0xff, - this.lo & 0xff]}; - MlInt64.prototype.lo32 - = - function(){return this.lo | (this.mi & 0xff) << 24}; - MlInt64.prototype.hi32 - = - function(){return this.mi >>> 8 & 0xffff | this.hi << 16}; - function caml_int64_of_int32(x) - {return new MlInt64(x & 0xffffff,x >> 24 & 0xffffff,x >> 31 & 0xffff)} - function caml_int64_to_int32(x){return x.toInt()} - function caml_int64_is_negative(x){return + x.isNeg()} - function caml_int64_neg(x){return x.neg()} - function caml_subarray_to_jsbytes(a,i,len) - {var f=String.fromCharCode; - if(i == 0 && len <= 4096 && len == a.length)return f.apply(null,a); - var s=""; - for(;0 < len;i += 1024,len -= 1024) - s += f.apply(null,a.slice(i,i + Math.min(len,1024))); - return s} - function caml_convert_string_to_bytes(s) - {if(s.t == 2) - s.c += caml_str_repeat(s.l - s.c.length,"\0"); - else - s.c = caml_subarray_to_jsbytes(s.c,0,s.c.length); - s.t = 0} - function caml_jsbytes_of_string(s) - {s.t & 6 && caml_convert_string_to_bytes(s);return s.c} - function caml_raise_with_arg(tag,arg){throw [0,tag,arg]} - function jsoo_is_ascii(s) - {if(s.length < 24) - {for(var i=0;i < s.length;i++)if(s.charCodeAt(i) > 127)return false; - return true} - else - return ! /[^\x00-\x7f]/.test(s)} - function caml_utf16_of_utf8(s) - {for(var b="",t="",c,c1,c2,v,i=0,l=s.length;i < l;i++) - {c1 = s.charCodeAt(i); - if(c1 < 0x80) - {for(var j=i + 1;j < l && (c1 = s.charCodeAt(j)) < 0x80;j++); - if(j - i > 512) - {t.substr(0,1);b += t;t = "";b += s.slice(i,j)} - else - t += s.slice(i,j); - if(j == l)break; - i = j} - v = 1; - if(++i < l && ((c2 = s.charCodeAt(i)) & - 64) == 128) - {c = c2 + (c1 << 6); - if(c1 < 0xe0) - {v = c - 0x3080;if(v < 0x80)v = 1} - else - {v = 2; - if(++i < l && ((c2 = s.charCodeAt(i)) & - 64) == 128) - {c = c2 + (c << 6); - if(c1 < 0xf0) - {v = c - 0xe2080; - if(v < 0x800 || v >= 0xd7ff && v < 0xe000)v = 2} - else - {v = 3; - if - (++i - < - l - && - ((c2 = s.charCodeAt(i)) & - 64) - == - 128 - && - c1 - < - 0xf5) - {v = c2 - 0x3c82080 + (c << 6); - if(v < 0x10000 || v > 0x10ffff)v = 3}}}}} - if(v < 4) - {i -= v;t += "\ufffd"} - else - if(v > 0xffff) - t += String.fromCharCode(0xd7c0 + (v >> 10),0xdc00 + (v & 0x3FF)); - else - t += String.fromCharCode(v); - if(t.length > 1024){t.substr(0,1);b += t;t = ""}} - return b + t} - function MlBytes(tag,contents,length) - {this.t = tag;this.c = contents;this.l = length} - MlBytes.prototype.toString - = - function() - {switch(this.t) - {case 9:return this.c; - default:caml_convert_string_to_bytes(this);case 0: - if(jsoo_is_ascii(this.c)){this.t = 9;return this.c}this.t = 8; - case 8:return this.c - }}; - MlBytes.prototype.toUtf16 - = - function() - {var r=this.toString(); - if(this.t == 9)return r; - return caml_utf16_of_utf8(r)}; - MlBytes.prototype.slice - = - function() - {var content=this.t == 4?this.c.slice():this.c; - return new MlBytes(this.t,content,this.l)}; - function caml_bytes_of_jsbytes(s){return new MlBytes(0,s,s.length)} - function caml_string_of_jsbytes(s){return caml_bytes_of_jsbytes(s)} - function caml_raise_with_string(tag,msg) - {caml_raise_with_arg(tag,caml_string_of_jsbytes(msg))} - function caml_invalid_argument(msg) - {caml_raise_with_string(caml_global_data.Invalid_argument,msg)} - function caml_parse_format(fmt) - {fmt = caml_jsbytes_of_string(fmt); - var len=fmt.length; - if(len > 31)caml_invalid_argument("format_int: format too long"); - var - f= - {justify:"+", - signstyle:"-", - filler:" ", - alternate:false, - base:0, - signedconv:false, - width:0, - uppercase:false, - sign:1, - prec:- 1, - conv:"f"}; - for(var i=0;i < len;i++) - {var c=fmt.charAt(i); - switch(c) - {case "-":f.justify = "-";break; - case "+": - case " ":f.signstyle = c;break; - case "0":f.filler = "0";break; - case "#":f.alternate = true;break; - case "1": - case "2": - case "3": - case "4": - case "5": - case "6": - case "7": - case "8": - case "9": - f.width = 0; - while(c = fmt.charCodeAt(i) - 48,c >= 0 && c <= 9) - {f.width = f.width * 10 + c;i++} - i--; - break; - case ".": - f.prec = 0; - i++; - while(c = fmt.charCodeAt(i) - 48,c >= 0 && c <= 9) - {f.prec = f.prec * 10 + c;i++} - i--; - case "d": - case "i":f.signedconv = true; - case "u":f.base = 10;break; - case "x":f.base = 16;break; - case "X":f.base = 16;f.uppercase = true;break; - case "o":f.base = 8;break; - case "e": - case "f": - case "g":f.signedconv = true;f.conv = c;break; - case "E": - case "F": - case "G": - f.signedconv = true; - f.uppercase = true; - f.conv = c.toLowerCase(); - break - }} - return f} - function caml_finish_formatting(f,rawbuffer) - {if(f.uppercase)rawbuffer = rawbuffer.toUpperCase(); - var len=rawbuffer.length; - if(f.signedconv && (f.sign < 0 || f.signstyle != "-"))len++; - if(f.alternate){if(f.base == 8)len += 1;if(f.base == 16)len += 2} - var buffer=""; - if(f.justify == "+" && f.filler == " ") - for(var i=len;i < f.width;i++)buffer += " "; - if(f.signedconv) - if(f.sign < 0) - buffer += "-"; - 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.justify == "+" && f.filler == "0") - for(var i=len;i < f.width;i++)buffer += "0"; - buffer += rawbuffer; - if(f.justify == "-")for(var i=len;i < f.width;i++)buffer += " "; - return caml_string_of_jsbytes(buffer)} - function caml_int64_format(fmt,x) - {var f=caml_parse_format(fmt); - if(f.signedconv && caml_int64_is_negative(x)) - {f.sign = - 1;x = caml_int64_neg(x)} - var - buffer="", - wbase=caml_int64_of_int32(f.base), - cvtbl="0123456789abcdef"; - do - {var p=x.udivmod(wbase); - x = p.quotient; - buffer = cvtbl.charAt(caml_int64_to_int32(p.modulus)) + buffer} - while - (! caml_int64_is_zero(x)); - if(f.prec >= 0) - {f.filler = " "; - var n=f.prec - buffer.length; - 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_jsstring_of_string(s){return s.toUtf16()} - function fs_node_supported() - {return typeof globalThis.process - !== - "undefined" - && - typeof globalThis.process.versions - !== - "undefined" - && - typeof globalThis.process.versions.node - !== - "undefined"} - function make_path_is_absolute() - {function posix(path) - {if(path.charAt(0) === "/")return ["",path.substring(1)];return} - function win32(path) - {var - splitDeviceRe= - /^([a-zA-Z]:|[\\/]{2}[^\\/]+[\\/]+[^\\/]+)?([\\/])?([\s\S]*?)$/, - result=splitDeviceRe.exec(path), - device=result[1] || "", - isUnc=Boolean(device && device.charAt(1) !== ":"); - if(Boolean(result[2] || isUnc)) - {var root=result[1] || "",sep=result[2] || ""; - return [root,path.substring(root.length + sep.length)]} - return} - return fs_node_supported() - && - globalThis.process - && - globalThis.process.platform - ?globalThis.process.platform === "win32"?win32:posix - :posix} - var path_is_absolute=make_path_is_absolute(); - function caml_trailing_slash(name) - {return name.slice(- 1) !== "/"?name + "/":name} - if(fs_node_supported() && globalThis.process && globalThis.process.cwd) - var caml_current_dir=globalThis.process.cwd().replace(/\\/g,"/"); - else - var caml_current_dir="/static"; - caml_current_dir = caml_trailing_slash(caml_current_dir); - function caml_make_path(name) - {name = caml_jsstring_of_string(name); - if(! path_is_absolute(name))name = caml_current_dir + name; - var comp0=path_is_absolute(name),comp=comp0[1].split("/"),ncomp=[]; - for(var i=0;i < comp.length;i++) - switch(comp[i]) - {case "..":if(ncomp.length > 1)ncomp.pop();break; - case ".":break; - default:ncomp.push(comp[i]);break} - ncomp.unshift(comp0[0]); - ncomp.orig = name; - return ncomp} - function caml_utf8_of_utf16(s) - {for(var b="",t=b,c,d,i=0,l=s.length;i < l;i++) - {c = s.charCodeAt(i); - if(c < 0x80) - {for(var j=i + 1;j < l && (c = s.charCodeAt(j)) < 0x80;j++); - if(j - i > 512) - {t.substr(0,1);b += t;t = "";b += s.slice(i,j)} - else - t += s.slice(i,j); - if(j == l)break; - i = j} - if(c < 0x800) - {t += String.fromCharCode(0xc0 | c >> 6); - t += String.fromCharCode(0x80 | c & 0x3f)} - else - if(c < 0xd800 || c >= 0xdfff) - t - += - String.fromCharCode - (0xe0 | c >> 12,0x80 | c >> 6 & 0x3f,0x80 | c & 0x3f); - else - if - (c - >= - 0xdbff - || - i - + - 1 - == - l - || - (d = s.charCodeAt(i + 1)) - < - 0xdc00 - || - d - > - 0xdfff) - t += "\xef\xbf\xbd"; - else - {i++; - c = (c << 10) + d - 0x35fdc00; - t - += - String.fromCharCode - (0xf0 | c >> 18, - 0x80 | c >> 12 & 0x3f, - 0x80 | c >> 6 & 0x3f, - 0x80 | c & 0x3f)} - if(t.length > 1024){t.substr(0,1);b += t;t = ""}} - return b + t} - function caml_bytes_of_utf16_jsstring(s) - {var tag=9; - if(! jsoo_is_ascii(s))tag = 8,s = caml_utf8_of_utf16(s); - return new MlBytes(tag,s,s.length)} - function caml_string_of_jsstring(s) - {return caml_bytes_of_utf16_jsstring(s)} - var - unix_error= - ["E2BIG", - "EACCES", - "EAGAIN", - "EBADF", - "EBUSY", - "ECHILD", - "EDEADLK", - "EDOM", - "EEXIST", - "EFAULT", - "EFBIG", - "EINTR", - "EINVAL", - "EIO", - "EISDIR", - "EMFILE", - "EMLINK", - "ENAMETOOLONG", - "ENFILE", - "ENODEV", - "ENOENT", - "ENOEXEC", - "ENOLCK", - "ENOMEM", - "ENOSPC", - "ENOSYS", - "ENOTDIR", - "ENOTEMPTY", - "ENOTTY", - "ENXIO", - "EPERM", - "EPIPE", - "ERANGE", - "EROFS", - "ESPIPE", - "ESRCH", - "EXDEV", - "EWOULDBLOCK", - "EINPROGRESS", - "EALREADY", - "ENOTSOCK", - "EDESTADDRREQ", - "EMSGSIZE", - "EPROTOTYPE", - "ENOPROTOOPT", - "EPROTONOSUPPORT", - "ESOCKTNOSUPPORT", - "EOPNOTSUPP", - "EPFNOSUPPORT", - "EAFNOSUPPORT", - "EADDRINUSE", - "EADDRNOTAVAIL", - "ENETDOWN", - "ENETUNREACH", - "ENETRESET", - "ECONNABORTED", - "ECONNRESET", - "ENOBUFS", - "EISCONN", - "ENOTCONN", - "ESHUTDOWN", - "ETOOMANYREFS", - "ETIMEDOUT", - "ECONNREFUSED", - "EHOSTDOWN", - "EHOSTUNREACH", - "ELOOP", - "EOVERFLOW"]; - function make_unix_err_args(code,syscall,path,errno) - {var variant=unix_error.indexOf(code); - if(variant < 0){if(errno == null)errno = - 9999;variant = [0,errno]} - var - args= - [variant, - caml_string_of_jsstring(syscall || ""), - caml_string_of_jsstring(path || "")]; - return args} - var caml_named_values={}; - function caml_named_value(nm){return caml_named_values[nm]} - 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_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; - 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_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)) - {s2.c - = - s1.t == 4 - ?caml_subarray_to_jsbytes(s1.c,i1,len) - :i1 == 0 && s1.c.length == len?s1.c:s1.c.substr(i1,len); - s2.t = s2.c.length == s2.l?0:2} - else - if(s2.t == 2 && i2 == s2.c.length) - {s2.c - += - s1.t == 4 - ?caml_subarray_to_jsbytes(s1.c,i1,len) - :i1 == 0 && s1.c.length == len?s1.c:s1.c.substr(i1,len); - s2.t = s2.c.length == s2.l?0:2} - else - {if(s2.t != 4)caml_convert_bytes_to_array(s2); - var c1=s1.c,c2=s2.c; - if(s1.t == 4) - if(i2 <= i1) - for(var i=0;i < len;i++)c2[i2 + i] = c1[i1 + i]; - else - for(var i=len - 1;i >= 0;i--)c2[i2 + i] = c1[i1 + i]; - else - {var l=Math.min(len,c1.length - i1); - 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.truncate - = - function(len) - {var old=this.data; - this.data = caml_create_bytes(len | 0); - caml_blit_bytes(old,0,this.data,0,len)}; - MlFakeFile.prototype.length - = - function(){return caml_ml_bytes_length(this.data)}; - MlFakeFile.prototype.write - = - function(offset,buf,pos,len) - {var clen=this.length(); - if(offset + len >= clen) - {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); - 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 - = - function(offset){return caml_bytes_get(this.data,offset)}; - MlFakeFile.prototype.close = function(){}; - MlFakeFile.prototype.constructor = MlFakeFile; - function MlFakeDevice(root,f) - {this.content = {};this.root = root;this.lookupFun = f} - MlFakeDevice.prototype.nm = function(name){return this.root + name}; - MlFakeDevice.prototype.create_dir_if_needed - = - function(name) - {var comp=name.split("/"),res=""; - for(var i=0;i < comp.length - 1;i++) - {res += comp[i] + "/"; - if(this.content[res])continue; - this.content[res] = Symbol("directory")}}; - MlFakeDevice.prototype.slash - = - function(name){return /\/$/.test(name)?name:name + "/"}; - MlFakeDevice.prototype.lookup - = - function(name) - {if(! this.content[name] && this.lookupFun) - {var - res= - this.lookupFun - (caml_string_of_jsbytes(this.root),caml_string_of_jsbytes(name)); - if(res !== 0) - {this.create_dir_if_needed(name); - this.content[name] = new MlFakeFile(caml_bytes_of_string(res[1]))}}}; - MlFakeDevice.prototype.exists - = - function(name) - {if(name == "")return 1; - var name_slash=this.slash(name); - if(this.content[name_slash])return 1; - this.lookup(name); - return this.content[name]?1:0}; - MlFakeDevice.prototype.mkdir - = - function(name,mode,raise_unix) - {var unix_error=raise_unix && caml_named_value("Unix.Unix_error"); - if(this.exists(name)) - if(unix_error) - caml_raise_with_args - (unix_error,make_unix_err_args("EEXIST","mkdir",this.nm(name))); - else - caml_raise_sys_error(name + ": File exists"); - var parent=/^(.*)\/[^/]+/.exec(name); - parent = parent && parent[1] || ""; - if(! this.exists(parent)) - if(unix_error) - caml_raise_with_args - (unix_error,make_unix_err_args("ENOENT","mkdir",this.nm(parent))); - else - caml_raise_sys_error(parent + ": No such file or directory"); - if(! this.is_dir(parent)) - if(unix_error) - caml_raise_with_args - (unix_error,make_unix_err_args("ENOTDIR","mkdir",this.nm(parent))); - else - caml_raise_sys_error(parent + ": Not a directory"); - this.create_dir_if_needed(this.slash(name))}; - MlFakeDevice.prototype.rmdir - = - function(name,raise_unix) - {var - unix_error=raise_unix && caml_named_value("Unix.Unix_error"), - name_slash=name == ""?"":this.slash(name), - r=new RegExp("^" + name_slash + "([^/]+)"); - if(! this.exists(name)) - if(unix_error) - caml_raise_with_args - (unix_error,make_unix_err_args("ENOENT","rmdir",this.nm(name))); - else - caml_raise_sys_error(name + ": No such file or directory"); - if(! this.is_dir(name)) - if(unix_error) - caml_raise_with_args - (unix_error,make_unix_err_args("ENOTDIR","rmdir",this.nm(name))); - else - caml_raise_sys_error(name + ": Not a directory"); - for(var n in this.content) - if(n.match(r)) - if(unix_error) - caml_raise_with_args - (unix_error,make_unix_err_args("ENOTEMPTY","rmdir",this.nm(name))); - else - caml_raise_sys_error(this.nm(name) + ": Directory not empty"); - delete this.content[name_slash]}; - MlFakeDevice.prototype.readdir - = - function(name) - {var name_slash=name == ""?"":this.slash(name); - if(! this.exists(name)) - caml_raise_sys_error(name + ": No such file or directory"); - if(! this.is_dir(name))caml_raise_sys_error(name + ": Not a directory"); - var r=new RegExp("^" + name_slash + "([^/]+)"),seen={},a=[]; - for(var n in this.content) - {var m=n.match(r); - if(m && ! seen[m[1]]){seen[m[1]] = true;a.push(m[1])}} - return a}; - MlFakeDevice.prototype.is_dir - = - function(name) - {if(name == "")return true; - var name_slash=this.slash(name); - return this.content[name_slash]?1:0}; - MlFakeDevice.prototype.unlink - = - function(name) - {var ok=this.content[name]?true:false; - delete this.content[name]; - return ok}; - MlFakeDevice.prototype.open - = - function(name,f) - {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"); - var file=this.content[name]; - if(f.truncate)file.truncate(); - return file} - else - if(f.create) - {this.create_dir_if_needed(name); - this.content[name] = new MlFakeFile(caml_create_bytes(0)); - return this.content[name]} - else - caml_raise_no_such_file(this.nm(name))}; - MlFakeDevice.prototype.register - = - function(name,content) - {var file; - if(this.content[name]) - caml_raise_sys_error(this.nm(name) + " : file already exists"); - if(caml_is_ml_bytes(content))file = new MlFakeFile(content); - if(caml_is_ml_string(content)) - file = new MlFakeFile(caml_bytes_of_string(content)); - else - if(content instanceof Array) - file = new MlFakeFile(caml_bytes_of_array(content)); - else - if(typeof content === "string") - file = new MlFakeFile(caml_bytes_of_jsbytes(content)); - else - if(content.toString) - {var - bytes= - caml_bytes_of_string(caml_string_of_jsstring(content.toString())); - file = new MlFakeFile(bytes)} - if(file) - {this.create_dir_if_needed(name);this.content[name] = file} - else - caml_raise_sys_error - (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_string_unsafe_get(s,i){return caml_bytes_unsafe_get(s,i)} - function caml_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_unsafe_set(s,i,c) - {c &= 0xff; - if(s.t != 4) - {if(i == s.c.length) - {s.c += String.fromCharCode(c);if(i + 1 == s.l)s.t = 0;return 0} - caml_convert_bytes_to_array(s)} - s.c[i] = c; - return 0} - 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(len) - {try - {this.fs.ftruncateSync(this.fd,len | 0)} - catch(err){caml_raise_sys_error(err.toString())}}; - MlNodeFile.prototype.length - = - function() - {try - {return this.fs.fstatSync(this.fd).size} - catch(err){caml_raise_sys_error(err.toString())}}; - MlNodeFile.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)} - 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 - = - 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() - {try - {this.fs.closeSync(this.fd)} - 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 - = - function(name) - {try {return this.fs.existsSync(this.nm(name))?1:0}catch(err){return 0}}; - MlNodeDevice.prototype.mkdir - = - function(name,mode,raise_unix) - {try - {this.fs.mkdirSync(this.nm(name),{mode:mode});return 0} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.rmdir - = - function(name,raise_unix) - {try - {this.fs.rmdirSync(this.nm(name));return 0} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.readdir - = - function(name,raise_unix) - {try - {return this.fs.readdirSync(this.nm(name))} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.is_dir - = - function(name) - {try - {return this.fs.statSync(this.nm(name)).isDirectory()?1:0} - catch(err){caml_raise_sys_error(err.toString())}}; - MlNodeDevice.prototype.unlink - = - function(name,raise_unix) - {try - {var b=this.fs.existsSync(this.nm(name))?1:0; - this.fs.unlinkSync(this.nm(name)); - return b} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.open - = - function(name,f,raise_unix) - {var consts=require("constants"),res=0; - for(var key in f) - switch(key) - {case "rdonly":res |= consts.O_RDONLY;break; - case "wronly":res |= consts.O_WRONLY;break; - case "append":res |= consts.O_WRONLY | consts.O_APPEND;break; - case "create":res |= consts.O_CREAT;break; - case "truncate":res |= consts.O_TRUNC;break; - case "excl":res |= consts.O_EXCL;break; - case "binary":res |= consts.O_BINARY;break; - case "text":res |= consts.O_TEXT;break; - case "nonblock":res |= consts.O_NONBLOCK;break - } - try - {var fd=this.fs.openSync(this.nm(name),res);return new MlNodeFile(fd)} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.rename - = - function(o,n,raise_unix) - {try - {this.fs.renameSync(this.nm(o),this.nm(n))} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.stat - = - function(name,raise_unix) - {try - {var js_stats=this.fs.statSync(this.nm(name)); - return this.stats_from_js(js_stats)} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.lstat - = - function(name,raise_unix) - {try - {var js_stats=this.fs.lstatSync(this.nm(name)); - return this.stats_from_js(js_stats)} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.symlink - = - function(to_dir,target,path,raise_unix) - {try - {this.fs.symlinkSync(this.nm(target),this.nm(path),to_dir?"dir":"file"); - return 0} - catch(err){this.raise_nodejs_error(err,raise_unix)}}; - MlNodeDevice.prototype.readlink - = - function(name,raise_unix) - {try - {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.raise_nodejs_error - = - function(err,raise_unix) - {var unix_error=caml_named_value("Unix.Unix_error"); - if(raise_unix && unix_error) - {var args=make_unix_err_args(err.code,err.syscall,err.path,err.errno); - caml_raise_with_args(unix_error,args)} - else - caml_raise_sys_error(err.toString())}; - MlNodeDevice.prototype.stats_from_js - = - function(js_stats) - {var file_kind; - if(js_stats.isFile()) - file_kind = 0; - else - if(js_stats.isDirectory()) - file_kind = 1; - else - if(js_stats.isCharacterDevice()) - file_kind = 2; - else - if(js_stats.isBlockDevice()) - file_kind = 3; - else - if(js_stats.isSymbolicLink()) - file_kind = 4; - else - if(js_stats.isFIFO()) - file_kind = 5; - else - if(js_stats.isSocket())file_kind = 6; - return [0, - js_stats.dev, - js_stats.ino, - file_kind, - js_stats.mode, - js_stats.nlink, - js_stats.uid, - js_stats.gid, - js_stats.rdev, - js_stats.size, - js_stats.atimeMs, - js_stats.mtimeMs, - js_stats.ctimeMs]}; - MlNodeDevice.prototype.constructor = MlNodeDevice; - function caml_get_root(path) - {var x=path_is_absolute(path);if(! x)return;return x[0] + "/"} - function caml_failwith(msg) - {if(! caml_global_data.Failure) - caml_global_data.Failure = [248,caml_string_of_jsbytes("Failure"),- 3]; - caml_raise_with_string(caml_global_data.Failure,msg)} - var - caml_root= - caml_get_root(caml_current_dir) - || - caml_failwith("unable to compute caml_root"), - jsoo_mount_point=[]; - if(fs_node_supported()) - jsoo_mount_point.push - ({path:caml_root,device:new MlNodeDevice(caml_root)}); - else - jsoo_mount_point.push - ({path:caml_root,device:new MlFakeDevice(caml_root)}); - jsoo_mount_point.push - ({path:"/static/",device:new MlFakeDevice("/static/")}); - function resolve_fs_device(name) - {var - path=caml_make_path(name), - name=path.join("/"), - name_slash=caml_trailing_slash(name), - res; - for(var i=0;i < jsoo_mount_point.length;i++) - {var m=jsoo_mount_point[i]; - if - (name_slash.search(m.path) - == - 0 - && - (! res || res.path.length < m.path.length)) - res - = - {path:m.path, - device:m.device, - rest:name.substring(m.path.length,name.length)}} - if(! res && fs_node_supported()) - {var root=caml_get_root(name); - if(root && root.match(/^[a-zA-Z]:\/$/)) - {var m={path:root,device:new MlNodeDevice(root)}; - jsoo_mount_point.push(m); - res - = - {path:m.path, - device:m.device, - rest:name.substring(m.path.length,name.length)}}} - if(res)return res; - caml_raise_sys_error("no device found for " + name_slash)} - function caml_sys_is_directory(name) - {var root=resolve_fs_device(name),a=root.device.is_dir(root.rest); - return a?1:0} - 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]); - if(globalThis.jsoo_static_env && globalThis.jsoo_static_env[n]) - return caml_string_of_jsstring(globalThis.jsoo_static_env[n]); - caml_raise_not_found()} - function shift_right_nat(nat1,ofs1,len1,nat2,ofs2,nbits) - {if(nbits == 0){nat2.data[ofs2] = 0;return 0} - var wrap=0; - for(var i=len1 - 1;i >= 0;i--) - {var a=nat1.data[ofs1 + i] >>> 0; - nat1.data[ofs1 + i] = a >>> nbits | wrap; - wrap = a << 32 - nbits} - nat2.data[ofs2] = wrap; - return 0} - var caml_gr_state; - function caml_gr_state_get() - {if(caml_gr_state)return caml_gr_state; - throw [0, - caml_named_value("Graphics.Graphic_failure"), - caml_string_of_jsbytes("Not initialized")]} - function caml_gr_point_color(x,y) - {var - s=caml_gr_state_get(), - im=s.context.getImageData(x,s.height - y,1,1), - d=im.data; - return (d[0] << 16) + (d[1] << 8) + d[2]} - var MlObjectTable; - if(typeof globalThis.WeakMap === "undefined") - MlObjectTable - = - function() - {function NaiveLookup(objs){this.objs = objs} - NaiveLookup.prototype.get - = - function(v) - {for(var i=0;i < this.objs.length;i++)if(this.objs[i] === v)return i}; - NaiveLookup.prototype.set = function(){}; - return function() - {this.objs = [];this.lookup = new NaiveLookup(this.objs)}} - (); - else - MlObjectTable - = - function(){this.objs = [];this.lookup = new (globalThis.WeakMap)()}; - MlObjectTable.prototype.store - = - function(v){this.lookup.set(v,this.objs.length);this.objs.push(v)}; - MlObjectTable.prototype.recall - = - function(v) - {var i=this.lookup.get(v); - return i === undefined?undefined:this.objs.length - i}; - function caml_sys_rename(o,n) - {var o_root=resolve_fs_device(o),n_root=resolve_fs_device(n); - if(o_root.device != n_root.device) - caml_failwith - ("caml_sys_rename: cannot move file between two filesystem"); - if(! o_root.device.rename) - 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} - function caml_classify_float(x) - {if(isFinite(x)) - {if(Math.abs(x) >= 2.2250738585072014e-308)return 0; - 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_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 - bigInt= - function(undefined) - {"use strict"; - var - BASE=1e7, - LOG_BASE=7, - MAX_INT=9007199254740992, - MAX_INT_ARR=smallToArray(MAX_INT), - DEFAULT_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyz", - BigInt=joo_global_object.BigInt, - supportsNativeBigInt=typeof BigInt === "function"; - function Integer(v,radix,alphabet,caseSensitive) - {if(typeof v === "undefined")return Integer[0]; - if(typeof radix !== "undefined") - return + radix === 10 && ! alphabet - ?parseValue(v) - :parseBase(v,radix,alphabet,caseSensitive); - return parseValue(v)} - function BigInteger(value,sign) - {this.value = value; - this.sign = sign; - this.isSmall = false; - this.caml_custom = "_z"} - BigInteger.prototype = Object.create(Integer.prototype); - function SmallInteger(value) - {this.value = value; - this.sign = value < 0; - this.isSmall = true; - this.caml_custom = "_z"} - SmallInteger.prototype = Object.create(Integer.prototype); - function NativeBigInt(value) - {this.value = value;this.caml_custom = "_z"} - NativeBigInt.prototype = Object.create(Integer.prototype); - function isPrecise(n){return - MAX_INT < n && n < MAX_INT} - function smallToArray(n) - {if(n < 1e7)return [n]; - if(n < 1e14)return [n % 1e7,Math.floor(n / 1e7)]; - return [n % 1e7,Math.floor(n / 1e7) % 1e7,Math.floor(n / 1e14)]} - function arrayToSmall(arr) - {trim(arr); - var length=arr.length; - if(length < 4 && compareAbs(arr,MAX_INT_ARR) < 0) - switch(length) - {case 0:return 0; - case 1:return arr[0]; - case 2:return arr[0] + arr[1] * BASE; - default:return arr[0] + (arr[1] + arr[2] * BASE) * BASE} - return arr} - function trim(v){var i=v.length;while(v[--i] === 0);v.length = i + 1} - function createArray(length) - {var x=new Array(length),i=- 1;while(++i < length)x[i] = 0;return x} - function truncate(n) - {if(n > 0)return Math.floor(n);return Math.ceil(n)} - function add(a,b) - {var - l_a=a.length, - l_b=b.length, - r=new Array(l_a), - carry=0, - base=BASE, - sum, - i; - for(i = 0;i < l_b;i++) - {sum = a[i] + b[i] + carry; - carry = sum >= base?1:0; - r[i] = sum - carry * base} - while(i < l_a) - {sum = a[i] + carry; - carry = sum === base?1:0; - r[i++] = sum - carry * base} - if(carry > 0)r.push(carry); - return r} - function addAny(a,b) - {if(a.length >= b.length)return add(a,b);return add(b,a)} - function addSmall(a,carry) - {var l=a.length,r=new Array(l),base=BASE,sum,i; - for(i = 0;i < l;i++) - {sum = a[i] - base + carry; - carry = Math.floor(sum / base); - r[i] = sum - carry * base; - carry += 1} - while(carry > 0) - {r[i++] = carry % base;carry = Math.floor(carry / base)} - return r} - BigInteger.prototype.add - = - function(v) - {var n=parseValue(v); - if(this.sign !== n.sign)return this.subtract(n.negate()); - var a=this.value,b=n.value; - if(n.isSmall) - return new BigInteger(addSmall(a,Math.abs(b)),this.sign); - return new BigInteger(addAny(a,b),this.sign)}; - BigInteger.prototype.plus = BigInteger.prototype.add; - SmallInteger.prototype.add - = - function(v) - {var n=parseValue(v),a=this.value; - if(a < 0 !== n.sign)return this.subtract(n.negate()); - var b=n.value; - if(n.isSmall) - {if(isPrecise(a + b))return new SmallInteger(a + b); - b = smallToArray(Math.abs(b))} - return new BigInteger(addSmall(b,Math.abs(a)),a < 0)}; - SmallInteger.prototype.plus = SmallInteger.prototype.add; - NativeBigInt.prototype.add - = - function(v) - {return new NativeBigInt(this.value + parseValue(v).value)}; - NativeBigInt.prototype.plus = NativeBigInt.prototype.add; - function subtract(a,b) - {var - a_l=a.length, - b_l=b.length, - r=new Array(a_l), - borrow=0, - base=BASE, - i, - difference; - for(i = 0;i < b_l;i++) - {difference = a[i] - borrow - b[i]; - if(difference < 0){difference += base;borrow = 1}else borrow = 0; - r[i] = difference} - for(i = b_l;i < a_l;i++) - {difference = a[i] - borrow; - if(difference < 0) - difference += base; - else - {r[i++] = difference;break} - r[i] = difference} - for(;i < a_l;i++)r[i] = a[i]; - trim(r); - return r} - function subtractAny(a,b,sign) - {var value; - if(compareAbs(a,b) >= 0) - value = subtract(a,b); - else - {value = subtract(b,a);sign = ! sign} - value = arrayToSmall(value); - if(typeof value === "number") - {if(sign)value = - value;return new SmallInteger(value)} - return new BigInteger(value,sign)} - function subtractSmall(a,b,sign) - {var l=a.length,r=new Array(l),carry=- b,base=BASE,i,difference; - for(i = 0;i < l;i++) - {difference = a[i] + carry; - carry = Math.floor(difference / base); - difference %= base; - r[i] = difference < 0?difference + base:difference} - r = arrayToSmall(r); - if(typeof r === "number") - {if(sign)r = - r;return new SmallInteger(r)} - return new BigInteger(r,sign)} - BigInteger.prototype.subtract - = - function(v) - {var n=parseValue(v); - if(this.sign !== n.sign)return this.add(n.negate()); - var a=this.value,b=n.value; - if(n.isSmall)return subtractSmall(a,Math.abs(b),this.sign); - return subtractAny(a,b,this.sign)}; - BigInteger.prototype.minus = BigInteger.prototype.subtract; - SmallInteger.prototype.subtract - = - function(v) - {var n=parseValue(v),a=this.value; - if(a < 0 !== n.sign)return this.add(n.negate()); - var b=n.value; - if(n.isSmall)return new SmallInteger(a - b); - return subtractSmall(b,Math.abs(a),a >= 0)}; - SmallInteger.prototype.minus = SmallInteger.prototype.subtract; - NativeBigInt.prototype.subtract - = - function(v) - {return new NativeBigInt(this.value - parseValue(v).value)}; - NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract; - BigInteger.prototype.negate - = - function(){return new BigInteger(this.value,! this.sign)}; - SmallInteger.prototype.negate - = - function() - {var sign=this.sign,small=new SmallInteger(- this.value); - small.sign = ! sign; - return small}; - NativeBigInt.prototype.negate - = - function(){return new NativeBigInt(- this.value)}; - BigInteger.prototype.abs - = - function(){return new BigInteger(this.value,false)}; - SmallInteger.prototype.abs - = - function(){return new SmallInteger(Math.abs(this.value))}; - NativeBigInt.prototype.abs - = - function() - {return new NativeBigInt(this.value >= 0?this.value:- this.value)}; - function multiplyLong(a,b) - {var - a_l=a.length, - b_l=b.length, - l=a_l + b_l, - r=createArray(l), - base=BASE, - product, - carry, - i, - a_i, - b_j; - for(i = 0;i < a_l;++i) - {a_i = a[i]; - for(var j=0;j < b_l;++j) - {b_j = b[j]; - product = a_i * b_j + r[i + j]; - carry = Math.floor(product / base); - r[i + j] = product - carry * base; - r[i + j + 1] += carry}} - trim(r); - return r} - function multiplySmall(a,b) - {var l=a.length,r=new Array(l),base=BASE,carry=0,product,i; - for(i = 0;i < l;i++) - {product = a[i] * b + carry; - carry = Math.floor(product / base); - r[i] = product - carry * base} - while(carry > 0) - {r[i++] = carry % base;carry = Math.floor(carry / base)} - return r} - function shiftLeft(x,n) - {var r=[];while(n-- > 0)r.push(0);return r.concat(x)} - function multiplyKaratsuba(x,y) - {var n=Math.max(x.length,y.length); - if(n <= 30)return multiplyLong(x,y); - n = Math.ceil(n / 2); - var - b=x.slice(n), - a=x.slice(0,n), - d=y.slice(n), - c=y.slice(0,n), - ac=multiplyKaratsuba(a,c), - bd=multiplyKaratsuba(b,d), - abcd=multiplyKaratsuba(addAny(a,b),addAny(c,d)), - product= - addAny - (addAny(ac,shiftLeft(subtract(subtract(abcd,ac),bd),n)), - shiftLeft(bd,2 * n)); - trim(product); - return product} - function useKaratsuba(l1,l2) - {return - (0.012 * l1) - 0.012 * l2 + 0.000015 * l1 * l2 > 0} - BigInteger.prototype.multiply - = - function(v) - {var - n=parseValue(v), - a=this.value, - b=n.value, - sign=this.sign !== n.sign, - abs; - if(n.isSmall) - {if(b === 0)return Integer[0]; - if(b === 1)return this; - if(b === - 1)return this.negate(); - abs = Math.abs(b); - if(abs < BASE)return new BigInteger(multiplySmall(a,abs),sign); - b = smallToArray(abs)} - if(useKaratsuba(a.length,b.length)) - return new BigInteger(multiplyKaratsuba(a,b),sign); - return new BigInteger(multiplyLong(a,b),sign)}; - BigInteger.prototype.times = BigInteger.prototype.multiply; - function multiplySmallAndArray(a,b,sign) - {if(a < BASE)return new BigInteger(multiplySmall(b,a),sign); - return new BigInteger(multiplyLong(b,smallToArray(a)),sign)} - SmallInteger.prototype._multiplyBySmall - = - function(a) - {if(isPrecise(a.value * this.value)) - return new SmallInteger(a.value * this.value); - return multiplySmallAndArray - (Math.abs(a.value), - smallToArray(Math.abs(this.value)), - this.sign !== a.sign)}; - BigInteger.prototype._multiplyBySmall - = - function(a) - {if(a.value === 0)return Integer[0]; - if(a.value === 1)return this; - if(a.value === - 1)return this.negate(); - return multiplySmallAndArray - (Math.abs(a.value),this.value,this.sign !== a.sign)}; - SmallInteger.prototype.multiply - = - function(v){return parseValue(v)._multiplyBySmall(this)}; - SmallInteger.prototype.times = SmallInteger.prototype.multiply; - NativeBigInt.prototype.multiply - = - function(v) - {return new NativeBigInt(this.value * parseValue(v).value)}; - NativeBigInt.prototype.times = NativeBigInt.prototype.multiply; - function square(a) - {var - l=a.length, - r=createArray(l + l), - base=BASE, - product, - carry, - i, - a_i, - a_j; - for(i = 0;i < l;i++) - {a_i = a[i]; - carry = 0 - a_i * a_i; - for(var j=i;j < l;j++) - {a_j = a[j]; - product = 2 * (a_i * a_j) + r[i + j] + carry; - carry = Math.floor(product / base); - r[i + j] = product - carry * base} - r[i + l] = carry} - trim(r); - return r} - BigInteger.prototype.square - = - function(){return new BigInteger(square(this.value),false)}; - SmallInteger.prototype.square - = - function() - {var value=this.value * this.value; - if(isPrecise(value))return new SmallInteger(value); - return new - BigInteger - (square(smallToArray(Math.abs(this.value))),false)}; - NativeBigInt.prototype.square - = - function(v){return new NativeBigInt(this.value * this.value)}; - function divMod1(a,b) - {var - a_l=a.length, - b_l=b.length, - base=BASE, - result=createArray(b.length), - divisorMostSignificantDigit=b[b_l - 1], - lambda=Math.ceil(base / (2 * divisorMostSignificantDigit)), - remainder=multiplySmall(a,lambda), - divisor=multiplySmall(b,lambda), - quotientDigit, - shift, - carry, - borrow, - i, - l, - q; - if(remainder.length <= a_l)remainder.push(0); - divisor.push(0); - divisorMostSignificantDigit = divisor[b_l - 1]; - for(shift = a_l - b_l;shift >= 0;shift--) - {quotientDigit = base - 1; - if(remainder[shift + b_l] !== divisorMostSignificantDigit) - quotientDigit - = - Math.floor - ((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) - / - divisorMostSignificantDigit); - carry = 0; - borrow = 0; - l = divisor.length; - for(i = 0;i < l;i++) - {carry += quotientDigit * divisor[i]; - q = Math.floor(carry / base); - borrow += remainder[shift + i] - (carry - q * base); - carry = q; - if(borrow < 0) - {remainder[shift + i] = borrow + base;borrow = - 1} - else - {remainder[shift + i] = borrow;borrow = 0}} - while(borrow !== 0) - {quotientDigit -= 1; - carry = 0; - for(i = 0;i < l;i++) - {carry += remainder[shift + i] - base + divisor[i]; - if(carry < 0) - {remainder[shift + i] = carry + base;carry = 0} - else - {remainder[shift + i] = carry;carry = 1}} - borrow += carry} - result[shift] = quotientDigit} - remainder = divModSmall(remainder,lambda)[0]; - return [arrayToSmall(result),arrayToSmall(remainder)]} - function divMod2(a,b) - {var - a_l=a.length, - b_l=b.length, - result=[], - part=[], - base=BASE, - guess, - xlen, - highx, - highy, - check; - while(a_l) - {part.unshift(a[--a_l]); - trim(part); - if(compareAbs(part,b) < 0){result.push(0);continue} - xlen = part.length; - highx = part[xlen - 1] * base + part[xlen - 2]; - highy = b[b_l - 1] * base + b[b_l - 2]; - if(xlen > b_l)highx = (highx + 1) * base; - guess = Math.ceil(highx / highy); - do - {check = multiplySmall(b,guess); - if(compareAbs(check,part) <= 0)break; - guess--} - while - (guess); - result.push(guess); - part = subtract(part,check)} - result.reverse(); - return [arrayToSmall(result),arrayToSmall(part)]} - function divModSmall(value,lambda) - {var - length=value.length, - quotient=createArray(length), - base=BASE, - i, - q, - remainder, - divisor; - remainder = 0; - for(i = length - 1;i >= 0;--i) - {divisor = remainder * base + value[i]; - q = truncate(divisor / lambda); - remainder = divisor - q * lambda; - quotient[i] = q | 0} - return [quotient,remainder | 0]} - function divModAny(self,v) - {var value,n=parseValue(v); - if(supportsNativeBigInt) - return [new NativeBigInt(self.value / n.value), - new NativeBigInt(self.value % n.value)]; - var a=self.value,b=n.value,quotient; - if(b === 0)throw new Error("Cannot divide by zero"); - if(self.isSmall) - {if(n.isSmall) - return [new SmallInteger(truncate(a / b)), - new SmallInteger(a % b)]; - return [Integer[0],self]} - if(n.isSmall) - {if(b === 1)return [self,Integer[0]]; - if(b == - 1)return [self.negate(),Integer[0]]; - var abs=Math.abs(b); - if(abs < BASE) - {value = divModSmall(a,abs); - quotient = arrayToSmall(value[0]); - var remainder=value[1]; - if(self.sign)remainder = - remainder; - if(typeof quotient === "number") - {if(self.sign !== n.sign)quotient = - quotient; - return [new SmallInteger(quotient), - new SmallInteger(remainder)]} - return [new BigInteger(quotient,self.sign !== n.sign), - new SmallInteger(remainder)]} - b = smallToArray(abs)} - var comparison=compareAbs(a,b); - if(comparison === - 1)return [Integer[0],self]; - if(comparison === 0) - return [Integer[self.sign === n.sign?1:- 1],Integer[0]]; - if(a.length + b.length <= 200) - value = divMod1(a,b); - else - value = divMod2(a,b); - quotient = value[0]; - var qSign=self.sign !== n.sign,mod=value[1],mSign=self.sign; - if(typeof quotient === "number") - {if(qSign)quotient = - quotient; - quotient = new SmallInteger(quotient)} - else - quotient = new BigInteger(quotient,qSign); - if(typeof mod === "number") - {if(mSign)mod = - mod;mod = new SmallInteger(mod)} - else - mod = new BigInteger(mod,mSign); - return [quotient,mod]} - BigInteger.prototype.divmod - = - function(v) - {var result=divModAny(this,v); - return {quotient:result[0],remainder:result[1]}}; - NativeBigInt.prototype.divmod - = - SmallInteger.prototype.divmod - = - BigInteger.prototype.divmod; - BigInteger.prototype.divide - = - function(v){return divModAny(this,v)[0]}; - NativeBigInt.prototype.over - = - NativeBigInt.prototype.divide - = - function(v) - {return new NativeBigInt(this.value / parseValue(v).value)}; - SmallInteger.prototype.over - = - SmallInteger.prototype.divide - = - BigInteger.prototype.over - = - BigInteger.prototype.divide; - BigInteger.prototype.mod = function(v){return divModAny(this,v)[1]}; - NativeBigInt.prototype.mod - = - NativeBigInt.prototype.remainder - = - function(v) - {return new NativeBigInt(this.value % parseValue(v).value)}; - SmallInteger.prototype.remainder - = - SmallInteger.prototype.mod - = - BigInteger.prototype.remainder - = - BigInteger.prototype.mod; - BigInteger.prototype.pow - = - function(v) - {var n=parseValue(v),a=this.value,b=n.value,value,x,y; - if(b === 0)return Integer[1]; - if(a === 0)return Integer[0]; - if(a === 1)return Integer[1]; - if(a === - 1)return n.isEven()?Integer[1]:Integer[- 1]; - if(n.sign)return Integer[0]; - if(! n.isSmall) - throw new Error("The exponent " + n.toString() + " is too large."); - if(this.isSmall) - if(isPrecise(value = Math.pow(a,b))) - return new SmallInteger(truncate(value)); - x = this; - y = Integer[1]; - while(true) - {if(b & 1 === 1){y = y.times(x);--b} - if(b === 0)break; - b /= 2; - x = x.square()} - return y}; - SmallInteger.prototype.pow = BigInteger.prototype.pow; - NativeBigInt.prototype.pow - = - function(v) - {var - n=parseValue(v), - a=this.value, - b=n.value, - _0=BigInt(0), - _1=BigInt(1), - _2=BigInt(2); - if(b === _0)return Integer[1]; - if(a === _0)return Integer[0]; - if(a === _1)return Integer[1]; - if(a === BigInt(- 1))return n.isEven()?Integer[1]:Integer[- 1]; - if(n.isNegative())return new NativeBigInt(_0); - var x=this,y=Integer[1]; - while(true) - {if((b & _1) === _1){y = y.times(x);--b} - if(b === _0)break; - b /= _2; - x = x.square()} - return y}; - BigInteger.prototype.modPow - = - function(exp,mod) - {exp = parseValue(exp); - mod = parseValue(mod); - if(mod.isZero()) - throw new Error("Cannot take modPow with modulus 0"); - var r=Integer[1],base=this.mod(mod); - if(exp.isNegative()) - {exp = exp.multiply(Integer[- 1]);base = base.modInv(mod)} - while(exp.isPositive()) - {if(base.isZero())return Integer[0]; - if(exp.isOdd())r = r.multiply(base).mod(mod); - exp = exp.divide(2); - base = base.square().mod(mod)} - return r}; - NativeBigInt.prototype.modPow - = - SmallInteger.prototype.modPow - = - BigInteger.prototype.modPow; - function compareAbs(a,b) - {if(a.length !== b.length)return a.length > b.length?1:- 1; - for(var i=a.length - 1;i >= 0;i--) - if(a[i] !== b[i])return a[i] > b[i]?1:- 1; - return 0} - BigInteger.prototype.compareAbs - = - function(v) - {var n=parseValue(v),a=this.value,b=n.value; - if(n.isSmall)return 1; - return compareAbs(a,b)}; - SmallInteger.prototype.compareAbs - = - function(v) - {var n=parseValue(v),a=Math.abs(this.value),b=n.value; - if(n.isSmall){b = Math.abs(b);return a === b?0:a > b?1:- 1} - return - 1}; - NativeBigInt.prototype.compareAbs - = - function(v) - {var a=this.value,b=parseValue(v).value; - a = a >= 0?a:- a; - b = b >= 0?b:- b; - return a === b?0:a > b?1:- 1}; - BigInteger.prototype.compare - = - function(v) - {if(v === Infinity)return - 1; - if(v === - Infinity)return 1; - var n=parseValue(v),a=this.value,b=n.value; - if(this.sign !== n.sign)return n.sign?1:- 1; - if(n.isSmall)return this.sign?- 1:1; - return compareAbs(a,b) * (this.sign?- 1:1)}; - BigInteger.prototype.compareTo = BigInteger.prototype.compare; - SmallInteger.prototype.compare - = - function(v) - {if(v === Infinity)return - 1; - if(v === - Infinity)return 1; - var n=parseValue(v),a=this.value,b=n.value; - if(n.isSmall)return a == b?0:a > b?1:- 1; - if(a < 0 !== n.sign)return a < 0?- 1:1; - return a < 0?1:- 1}; - SmallInteger.prototype.compareTo = SmallInteger.prototype.compare; - NativeBigInt.prototype.compare - = - function(v) - {if(v === Infinity)return - 1; - if(v === - Infinity)return 1; - var a=this.value,b=parseValue(v).value; - return a === b?0:a > b?1:- 1}; - NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare; - BigInteger.prototype.equals - = - function(v){return this.compare(v) === 0}; - NativeBigInt.prototype.eq - = - NativeBigInt.prototype.equals - = - SmallInteger.prototype.eq - = - SmallInteger.prototype.equals - = - BigInteger.prototype.eq - = - BigInteger.prototype.equals; - BigInteger.prototype.notEquals - = - function(v){return this.compare(v) !== 0}; - NativeBigInt.prototype.neq - = - NativeBigInt.prototype.notEquals - = - SmallInteger.prototype.neq - = - SmallInteger.prototype.notEquals - = - BigInteger.prototype.neq - = - BigInteger.prototype.notEquals; - BigInteger.prototype.greater - = - function(v){return this.compare(v) > 0}; - NativeBigInt.prototype.gt - = - NativeBigInt.prototype.greater - = - SmallInteger.prototype.gt - = - SmallInteger.prototype.greater - = - BigInteger.prototype.gt - = - BigInteger.prototype.greater; - BigInteger.prototype.lesser - = - function(v){return this.compare(v) < 0}; - NativeBigInt.prototype.lt - = - NativeBigInt.prototype.lesser - = - SmallInteger.prototype.lt - = - SmallInteger.prototype.lesser - = - BigInteger.prototype.lt - = - BigInteger.prototype.lesser; - BigInteger.prototype.greaterOrEquals - = - function(v){return this.compare(v) >= 0}; - NativeBigInt.prototype.geq - = - NativeBigInt.prototype.greaterOrEquals - = - SmallInteger.prototype.geq - = - SmallInteger.prototype.greaterOrEquals - = - BigInteger.prototype.geq - = - BigInteger.prototype.greaterOrEquals; - BigInteger.prototype.lesserOrEquals - = - function(v){return this.compare(v) <= 0}; - NativeBigInt.prototype.leq - = - NativeBigInt.prototype.lesserOrEquals - = - SmallInteger.prototype.leq - = - SmallInteger.prototype.lesserOrEquals - = - BigInteger.prototype.leq - = - BigInteger.prototype.lesserOrEquals; - BigInteger.prototype.isEven - = - function(){return (this.value[0] & 1) === 0}; - SmallInteger.prototype.isEven - = - function(){return (this.value & 1) === 0}; - NativeBigInt.prototype.isEven - = - function(){return (this.value & BigInt(1)) === BigInt(0)}; - BigInteger.prototype.isOdd - = - function(){return (this.value[0] & 1) === 1}; - SmallInteger.prototype.isOdd - = - function(){return (this.value & 1) === 1}; - NativeBigInt.prototype.isOdd - = - function(){return (this.value & BigInt(1)) === BigInt(1)}; - BigInteger.prototype.isPositive = function(){return ! this.sign}; - SmallInteger.prototype.isPositive - = - function(){return this.value > 0}; - NativeBigInt.prototype.isPositive - = - SmallInteger.prototype.isPositive; - BigInteger.prototype.isNegative = function(){return this.sign}; - SmallInteger.prototype.isNegative - = - function(){return this.value < 0}; - NativeBigInt.prototype.isNegative - = - SmallInteger.prototype.isNegative; - BigInteger.prototype.isUnit = function(){return false}; - SmallInteger.prototype.isUnit - = - function(){return Math.abs(this.value) === 1}; - NativeBigInt.prototype.isUnit - = - function(){return this.abs().value === BigInt(1)}; - BigInteger.prototype.isZero = function(){return false}; - SmallInteger.prototype.isZero = function(){return this.value === 0}; - NativeBigInt.prototype.isZero - = - function(){return this.value === BigInt(0)}; - BigInteger.prototype.isDivisibleBy - = - function(v) - {var n=parseValue(v); - if(n.isZero())return false; - if(n.isUnit())return true; - if(n.compareAbs(2) === 0)return this.isEven(); - return this.mod(n).isZero()}; - NativeBigInt.prototype.isDivisibleBy - = - SmallInteger.prototype.isDivisibleBy - = - BigInteger.prototype.isDivisibleBy; - function isBasicPrime(v) - {var n=v.abs(); - if(n.isUnit())return false; - if(n.equals(2) || n.equals(3) || n.equals(5))return true; - if(n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) - return false; - if(n.lesser(49))return true} - function millerRabinTest(n,a) - {var nPrev=n.prev(),b=nPrev,r=0,d,t,i,x; - while(b.isEven())b = b.divide(2),r++; - next: - for(i = 0;i < a.length;i++) - {if(n.lesser(a[i]))continue; - x = bigInt(a[i]).modPow(b,n); - if(x.isUnit() || x.equals(nPrev))continue; - for(d = r - 1;d != 0;d--) - {x = x.square().mod(n); - if(x.isUnit())return false; - if(x.equals(nPrev))continue next} - return false} - return true} - BigInteger.prototype.isPrime - = - function(strict) - {var isPrime=isBasicPrime(this); - if(isPrime !== undefined)return isPrime; - var n=this.abs(),bits=n.bitLength(); - if(bits <= 64) - return millerRabinTest(n,[2,3,5,7,11,13,17,19,23,29,31,37]); - var - logN=Math.log(2) * bits.toJSNumber(), - t=Math.ceil(strict === true?2 * Math.pow(logN,2):logN); - for(var a=[],i=0;i < t;i++)a.push(bigInt(i + 2)); - return millerRabinTest(n,a)}; - NativeBigInt.prototype.isPrime - = - SmallInteger.prototype.isPrime - = - BigInteger.prototype.isPrime; - BigInteger.prototype.isProbablePrime - = - function(iterations) - {var isPrime=isBasicPrime(this); - if(isPrime !== undefined)return isPrime; - var n=this.abs(),t=iterations === undefined?5:iterations; - for(var a=[],i=0;i < t;i++) - a.push(bigInt.randBetween(2,n.minus(2))); - return millerRabinTest(n,a)}; - NativeBigInt.prototype.isProbablePrime - = - SmallInteger.prototype.isProbablePrime - = - BigInteger.prototype.isProbablePrime; - BigInteger.prototype.modInv - = - function(n) - {var - t=bigInt.zero, - newT=bigInt.one, - r=parseValue(n), - newR=this.abs(), - q, - lastT, - lastR; - while(! newR.isZero()) - {q = r.divide(newR); - lastT = t; - lastR = r; - t = newT; - r = newR; - newT = lastT.subtract(q.multiply(newT)); - newR = lastR.subtract(q.multiply(newR))} - if(! r.isUnit()) - throw new - Error - (this.toString() - + - " and " - + - n.toString() - + - " are not co-prime"); - if(t.compare(0) === - 1)t = t.add(n); - if(this.isNegative())return t.negate(); - return t}; - NativeBigInt.prototype.modInv - = - SmallInteger.prototype.modInv - = - BigInteger.prototype.modInv; - BigInteger.prototype.next - = - function() - {var value=this.value; - if(this.sign)return subtractSmall(value,1,this.sign); - return new BigInteger(addSmall(value,1),this.sign)}; - SmallInteger.prototype.next - = - function() - {var value=this.value; - if(value + 1 < MAX_INT)return new SmallInteger(value + 1); - return new BigInteger(MAX_INT_ARR,false)}; - NativeBigInt.prototype.next - = - function(){return new NativeBigInt(this.value + BigInt(1))}; - BigInteger.prototype.prev - = - function() - {var value=this.value; - if(this.sign)return new BigInteger(addSmall(value,1),true); - return subtractSmall(value,1,this.sign)}; - SmallInteger.prototype.prev - = - function() - {var value=this.value; - if(value - 1 > - MAX_INT)return new SmallInteger(value - 1); - return new BigInteger(MAX_INT_ARR,true)}; - NativeBigInt.prototype.prev - = - function(){return new NativeBigInt(this.value - BigInt(1))}; - var powersOfTwo=[1]; - while(2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) - powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]); - var - powers2Length=powersOfTwo.length, - highestPower2=powersOfTwo[powers2Length - 1]; - function shift_isSmall(n){return Math.abs(n) <= BASE} - BigInteger.prototype.shiftLeft - = - function(v) - {var n=parseValue(v).toJSNumber(); - if(! shift_isSmall(n)) - throw new Error(String(n) + " is too large for shifting."); - if(n < 0)return this.shiftRight(- n); - var result=this; - if(result.isZero())return result; - while(n >= powers2Length) - {result = result.multiply(highestPower2);n -= powers2Length - 1} - return result.multiply(powersOfTwo[n])}; - NativeBigInt.prototype.shiftLeft - = - SmallInteger.prototype.shiftLeft - = - BigInteger.prototype.shiftLeft; - BigInteger.prototype.shiftRight - = - function(v) - {var remQuo,n=parseValue(v).toJSNumber(); - if(! shift_isSmall(n)) - throw new Error(String(n) + " is too large for shifting."); - if(n < 0)return this.shiftLeft(- n); - var result=this; - while(n >= powers2Length) - {if(result.isZero() || result.isNegative() && result.isUnit()) - return result; - remQuo = divModAny(result,highestPower2); - result = remQuo[1].isNegative()?remQuo[0].prev():remQuo[0]; - n -= powers2Length - 1} - remQuo = divModAny(result,powersOfTwo[n]); - return remQuo[1].isNegative()?remQuo[0].prev():remQuo[0]}; - NativeBigInt.prototype.shiftRight - = - SmallInteger.prototype.shiftRight - = - BigInteger.prototype.shiftRight; - function bitwise(x,y,fn) - {y = parseValue(y); - var - xSign=x.isNegative(), - ySign=y.isNegative(), - xRem=xSign?x.not():x, - yRem=ySign?y.not():y, - xDigit=0, - yDigit=0, - xDivMod=null, - yDivMod=null, - result=[]; - while(! xRem.isZero() || ! yRem.isZero()) - {xDivMod = divModAny(xRem,highestPower2); - xDigit = xDivMod[1].toJSNumber(); - if(xSign)xDigit = highestPower2 - 1 - xDigit; - yDivMod = divModAny(yRem,highestPower2); - yDigit = yDivMod[1].toJSNumber(); - if(ySign)yDigit = highestPower2 - 1 - yDigit; - xRem = xDivMod[0]; - yRem = yDivMod[0]; - result.push(fn(xDigit,yDigit))} - var sum=fn(xSign?1:0,ySign?1:0) !== 0?bigInt(- 1):bigInt(0); - for(var i=result.length - 1;i >= 0;i -= 1) - sum = sum.multiply(highestPower2).add(bigInt(result[i])); - return sum} - BigInteger.prototype.not = function(){return this.negate().prev()}; - NativeBigInt.prototype.not - = - SmallInteger.prototype.not - = - BigInteger.prototype.not; - BigInteger.prototype.and - = - function(n){return bitwise(this,n,function(a,b){return a & b})}; - NativeBigInt.prototype.and - = - SmallInteger.prototype.and - = - BigInteger.prototype.and; - BigInteger.prototype.or - = - function(n){return bitwise(this,n,function(a,b){return a | b})}; - NativeBigInt.prototype.or - = - SmallInteger.prototype.or - = - BigInteger.prototype.or; - BigInteger.prototype.xor - = - function(n){return bitwise(this,n,function(a,b){return a ^ b})}; - NativeBigInt.prototype.xor - = - SmallInteger.prototype.xor - = - BigInteger.prototype.xor; - var - LOBMASK_I=1 << 30, - LOBMASK_BI=(BASE & - BASE) * (BASE & - BASE) | LOBMASK_I; - function roughLOB(n) - {var - v=n.value, - x= - typeof v === "number" - ?v | LOBMASK_I - :typeof v === "bigint" - ?v | BigInt(LOBMASK_I) - :v[0] + v[1] * BASE | LOBMASK_BI; - return x & - x} - function integerLogarithm(value,base) - {if(base.compareTo(value) <= 0) - {var - tmp=integerLogarithm(value,base.square(base)), - p=tmp.p, - e=tmp.e, - t=p.multiply(base); - return t.compareTo(value) <= 0?{p:t,e:e * 2 + 1}:{p:p,e:e * 2}} - return {p:bigInt(1),e:0}} - BigInteger.prototype.bitLength - = - function() - {var n=this; - if(n.compareTo(bigInt(0)) < 0)n = n.negate().subtract(bigInt(1)); - if(n.compareTo(bigInt(0)) === 0)return bigInt(0); - return bigInt(integerLogarithm(n,bigInt(2)).e).add(bigInt(1))}; - NativeBigInt.prototype.bitLength - = - SmallInteger.prototype.bitLength - = - BigInteger.prototype.bitLength; - function max(a,b) - {a = parseValue(a);b = parseValue(b);return a.greater(b)?a:b} - function min(a,b) - {a = parseValue(a);b = parseValue(b);return a.lesser(b)?a:b} - function gcd(a,b) - {a = parseValue(a).abs(); - b = parseValue(b).abs(); - if(a.equals(b))return a; - if(a.isZero())return b; - if(b.isZero())return a; - var c=Integer[1],d,t; - while(a.isEven() && b.isEven()) - {d = min(roughLOB(a),roughLOB(b)); - a = a.divide(d); - b = b.divide(d); - c = c.multiply(d)} - while(a.isEven())a = a.divide(roughLOB(a)); - do - {while(b.isEven())b = b.divide(roughLOB(b)); - if(a.greater(b)){t = b;b = a;a = t} - b = b.subtract(a)} - while - (! b.isZero()); - return c.isUnit()?a:a.multiply(c)} - function lcm(a,b) - {a = parseValue(a).abs(); - b = parseValue(b).abs(); - return a.divide(gcd(a,b)).multiply(b)} - function randBetween(a,b) - {a = parseValue(a); - b = parseValue(b); - var low=min(a,b),high=max(a,b),range=high.subtract(low).add(1); - if(range.isSmall)return low.add(Math.floor(Math.random() * range)); - var digits=toBase(range,BASE).value,result=[],restricted=true; - for(var i=0;i < digits.length;i++) - {var - top=restricted?digits[i]:BASE, - digit=truncate(Math.random() * top); - result.push(digit); - if(digit < top)restricted = false} - return low.add(Integer.fromArray(result,BASE,false))} - function parseBase(text,base,alphabet,caseSensitive) - {alphabet = alphabet || DEFAULT_ALPHABET; - text = String(text); - if(! caseSensitive) - {text = text.toLowerCase();alphabet = alphabet.toLowerCase()} - var length=text.length,i,absBase=Math.abs(base),alphabetValues={}; - for(i = 0;i < alphabet.length;i++)alphabetValues[alphabet[i]] = i; - for(i = 0;i < length;i++) - {var c=text[i]; - if(c === "-")continue; - if(c in alphabetValues) - if(alphabetValues[c] >= absBase) - {if(c === "1" && absBase === 1)continue; - throw new - Error - (c + " is not a valid digit in base " + base + ".")}} - base = parseValue(base); - var digits=[],isNegative=text[0] === "-"; - for(i = isNegative?1:0;i < text.length;i++) - {var c=text[i]; - if(c in alphabetValues) - digits.push(parseValue(alphabetValues[c])); - else - if(c === "<") - {var start=i; - do i++;while(text[i] !== ">" && i < text.length); - digits.push(parseValue(text.slice(start + 1,i)))} - else - throw new Error(c + " is not a valid character")} - return parseBaseFromArray(digits,base,isNegative)} - function parseBaseFromArray(digits,base,isNegative) - {var val=Integer[0],pow=Integer[1],i; - for(i = digits.length - 1;i >= 0;i--) - {val = val.add(digits[i].times(pow));pow = pow.times(base)} - return isNegative?val.negate():val} - function stringify(digit,alphabet) - {alphabet = alphabet || DEFAULT_ALPHABET; - if(digit < alphabet.length)return alphabet[digit]; - return "<" + digit + ">"} - function toBase(n,base) - {base = bigInt(base); - if(base.isZero()) - {if(n.isZero())return {value:[0],isNegative:false}; - throw new Error("Cannot convert nonzero numbers to base 0.")} - if(base.equals(- 1)) - {if(n.isZero())return {value:[0],isNegative:false}; - if(n.isNegative()) - return {value: - [].concat.apply - ([], - Array.apply(null,Array(- n.toJSNumber())).map - (Array.prototype.valueOf,[1,0])), - isNegative:false}; - var - arr= - Array.apply(null,Array(n.toJSNumber() - 1)).map - (Array.prototype.valueOf,[0,1]); - arr.unshift([1]); - return {value:[].concat.apply([],arr),isNegative:false}} - var neg=false; - if(n.isNegative() && base.isPositive()){neg = true;n = n.abs()} - if(base.isUnit()) - {if(n.isZero())return {value:[0],isNegative:false}; - return {value: - Array.apply(null,Array(n.toJSNumber())).map - (Number.prototype.valueOf,1), - isNegative:neg}} - var out=[],left=n,divmod; - while(left.isNegative() || left.compareAbs(base) >= 0) - {divmod = left.divmod(base); - left = divmod.quotient; - var digit=divmod.remainder; - if(digit.isNegative()) - {digit = base.minus(digit).abs();left = left.next()} - out.push(digit.toJSNumber())} - out.push(left.toJSNumber()); - return {value:out.reverse(),isNegative:neg}} - function toBaseString(n,base,alphabet) - {var arr=toBase(n,base); - return (arr.isNegative?"-":"") - + - arr.value.map(function(x){return stringify(x,alphabet)}).join - ("")} - BigInteger.prototype.toArray - = - function(radix){return toBase(this,radix)}; - SmallInteger.prototype.toArray - = - function(radix){return toBase(this,radix)}; - NativeBigInt.prototype.toArray - = - function(radix){return toBase(this,radix)}; - BigInteger.prototype.toString - = - function(radix,alphabet) - {if(radix === undefined)radix = 10; - if(radix !== 10)return toBaseString(this,radix,alphabet); - var - v=this.value, - l=v.length, - str=String(v[--l]), - zeros="0000000", - digit; - while(--l >= 0) - {digit = String(v[l]);str += zeros.slice(digit.length) + digit} - var sign=this.sign?"-":""; - return sign + str}; - SmallInteger.prototype.toString - = - function(radix,alphabet) - {if(radix === undefined)radix = 10; - if(radix != 10)return toBaseString(this,radix,alphabet); - return String(this.value)}; - NativeBigInt.prototype.toString = SmallInteger.prototype.toString; - NativeBigInt.prototype.toJSON - = - BigInteger.prototype.toJSON - = - SmallInteger.prototype.toJSON - = - function(){return this.toString()}; - BigInteger.prototype.valueOf - = - function(){return parseInt(this.toString(),10)}; - BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf; - SmallInteger.prototype.valueOf = function(){return this.value}; - SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf; - NativeBigInt.prototype.valueOf - = - NativeBigInt.prototype.toJSNumber - = - function(){return parseInt(this.toString(),10)}; - function parseStringValue(v) - {if(isPrecise(+ v)) - {var x=+ v; - if(x === truncate(x)) - return supportsNativeBigInt - ?new NativeBigInt(BigInt(x)) - :new SmallInteger(x); - throw new Error("Invalid integer: " + v)} - var sign=v[0] === "-"; - if(sign)v = v.slice(1); - var split=v.split(/e/i); - if(split.length > 2) - throw new Error("Invalid integer: " + split.join("e")); - if(split.length === 2) - {var exp=split[1]; - if(exp[0] === "+")exp = exp.slice(1); - exp = + exp; - if(exp !== truncate(exp) || ! isPrecise(exp)) - throw new - Error - ("Invalid integer: " + exp + " is not a valid exponent."); - var text=split[0],decimalPlace=text.indexOf("."); - if(decimalPlace >= 0) - {exp -= text.length - decimalPlace - 1; - text - = - text.slice(0,decimalPlace) - + - text.slice(decimalPlace + 1)} - if(exp < 0) - throw new - Error - ("Cannot include negative exponent part for integers"); - text += new Array(exp + 1).join("0"); - v = text} - var isValid=/^([0-9][0-9]*)$/.test(v); - if(! isValid)throw new Error("Invalid integer: " + v); - if(supportsNativeBigInt) - return new NativeBigInt(BigInt(sign?"-" + v:v)); - var r=[],max=v.length,l=LOG_BASE,min=max - l; - while(max > 0) - {r.push(+ v.slice(min,max));min -= l;if(min < 0)min = 0;max -= l} - trim(r); - return new BigInteger(r,sign)} - function parseNumberValue(v) - {if(supportsNativeBigInt)return new NativeBigInt(BigInt(v)); - if(isPrecise(v)) - {if(v !== truncate(v))throw new Error(v + " is not an integer."); - return new SmallInteger(v)} - return parseStringValue(v.toString())} - function parseValue(v) - {if(typeof v === "number")return parseNumberValue(v); - if(typeof v === "string")return parseStringValue(v); - if(typeof v === "bigint")return new NativeBigInt(v); - return v} - for(var i=0;i < 1000;i++) - {Integer[i] = parseValue(i);if(i > 0)Integer[- i] = parseValue(- i)} - Integer.one = Integer[1]; - Integer.zero = Integer[0]; - Integer.minusOne = Integer[- 1]; - Integer.max = max; - Integer.min = min; - Integer.gcd = gcd; - Integer.lcm = lcm; - Integer.isInstance - = - function(x) - {return x instanceof BigInteger - || - x instanceof SmallInteger - || - x instanceof NativeBigInt}; - Integer.randBetween = randBetween; - Integer.fromArray - = - function(digits,base,isNegative) - {return parseBaseFromArray - (digits.map(parseValue),parseValue(base || 10),isNegative)}; - return Integer} - (); - function ml_z_normalize(x) - {var y=x.toJSNumber() | 0;if(x.equals(bigInt(y)))return y;return x} - function ml_z_pow(z1,i1) - {i1 = bigInt(i1); - if(i1.lt(bigInt(0))) - caml_invalid_argument("Z.pow: exponent must be nonnegative"); - return ml_z_normalize(bigInt(z1).pow(i1))} - function ml_z_root(z,i) - {var zero=bigInt(0),one=bigInt(1); - z = bigInt(z); - if(i % 2 === 0 && z.lt(zero)) - caml_invalid_argument("Z.root: even root of a negative number"); - if(z.equals(zero) || z.equals(one))return ml_z_normalize(z); - var start=zero,end=z,ans=null,two=bigInt(2); - while(start.leq(end)) - {var mid=start.add(end).divide(two),po=mid.pow(i); - if(po.equals(z)) - return ml_z_normalize(mid); - else - if(po.lt(z)){start = mid.next();ans = mid}else end = mid.prev()} - return ml_z_normalize(ans)} - function ml_z_rootrem(z,i) - {var zero=bigInt(0),one=bigInt(1); - z = bigInt(z); - if(i % 2 === 0 && z.lt(zero)) - caml_invalid_argument("Z.rootrem: even root of a negative number"); - if(z.equals(zero) || z.equals(one))return [0,ml_z_normalize(z),zero]; - var start=zero,end=z,ans=null,two=bigInt(2); - while(start.leq(end)) - {var mid=start.add(end).divide(two),po=mid.pow(i); - if(po.equals(z)) - return [0,ml_z_normalize(mid),zero]; - 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_int64_of_bytes(a) - {return new - MlInt64 - (a[7] << 0 | a[6] << 8 | a[5] << 16, - a[4] << 0 | a[3] << 8 | a[2] << 16, - a[1] << 0 | a[0] << 8)} - function caml_ba_uint8_get64(ba,i0) - {var ofs=ba.offset(i0); - if(ofs + 7 >= ba.data.length)caml_array_bound_error(); - var - b1=ba.get(ofs + 0), - b2=ba.get(ofs + 1), - b3=ba.get(ofs + 2), - b4=ba.get(ofs + 3), - b5=ba.get(ofs + 4), - b6=ba.get(ofs + 5), - b7=ba.get(ofs + 6), - b8=ba.get(ofs + 7); - return caml_int64_of_bytes([b8,b7,b6,b5,b4,b3,b2,b1])} - function caml_int64_to_bytes(x){return x.toArray()} - function caml_int64_marshal(writer,v,sizes) - {var b=caml_int64_to_bytes(v); - for(var i=0;i < 8;i++)writer.write(8,b[i]); - sizes[0] = 8; - sizes[1] = 8} - function caml_ba_num_dims(ba){return ba.dims.length} - function caml_return_exn_constant(tag){return tag} - function caml_wrap_exception(e) - {if(e instanceof Array)return e; - if - (globalThis.RangeError - && - e instanceof globalThis.RangeError - && - e.message - && - e.message.match(/maximum call stack/i)) - return caml_return_exn_constant(caml_global_data.Stack_overflow); - if - (globalThis.InternalError - && - e instanceof globalThis.InternalError - && - e.message - && - e.message.match(/too much recursion/i)) - return caml_return_exn_constant(caml_global_data.Stack_overflow); - if(e instanceof globalThis.Error && caml_named_value("jsError")) - return [0,caml_named_value("jsError"),e]; - return [0,caml_global_data.Failure,caml_string_of_jsstring(String(e))]} - function caml_create_file(name,content) - {var root=resolve_fs_device(name); - if(! root.device.register)caml_failwith("cannot register file"); - root.device.register(root.rest,content); - return 0} - function jsoo_create_file(name,content) - {var - name=caml_string_of_jsbytes(name), - content=caml_string_of_jsbytes(content); - return caml_create_file(name,content)} - function caml_fs_init() - {var tmp=globalThis.caml_fs_tmp; - if(tmp) - for(var i=0;i < tmp.length;i++) - jsoo_create_file(tmp[i].name,tmp[i].content); - globalThis.jsoo_create_file = jsoo_create_file; - globalThis.caml_fs_tmp = []; - return 0} - function caml_set_parser_trace(){return 0} - 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); - d = d << 15 | d >>> 32 - 15; - d = caml_mul(d,0x1b873593); - h ^= d; - h = h << 13 | h >>> 32 - 13; - return (h + (h << 2) | 0) + (0xe6546b64 | 0) | 0} - function num_digits_nat(nat,ofs,len) - {for(var i=len - 1;i >= 0;i--)if(nat.data[ofs + i] != 0)return i + 1; - return 1} - function caml_hash_nat(x) - {var len=num_digits_nat(x,0,x.data.length),h=0; - for(var i=0;i < len;i++)h = caml_hash_mix_int(h,x.data[i]); - return h} - function caml_call_gen(f,args) - {if(f.fun)return caml_call_gen(f.fun,args); - if(typeof f !== "function")return f; - var n=f.length | 0; - if(n === 0)return f.apply(null,args); - var argsLen=args.length | 0,d=n - argsLen | 0; - if(d == 0) - return f.apply(null,args); - else - if(d < 0) - return caml_call_gen(f.apply(null,args.slice(0,n)),args.slice(n)); - else - return function() - {var - extra_args=arguments.length == 0?1:arguments.length, - nargs=new Array(args.length + extra_args); - for(var i=0;i < args.length;i++)nargs[i] = args[i]; - for(var i=0;i < arguments.length;i++) - nargs[args.length + i] = arguments[i]; - return caml_call_gen(f,nargs)}} - function caml_js_wrap_callback_arguments(f) - {return function() - {var len=arguments.length,args=new Array(len); - for(var i=0;i < len;i++)args[i] = arguments[i]; - return caml_call_gen(f,[args])}} - function caml_sys_chdir(dir) - {var root=resolve_fs_device(dir); - if(root.device.exists(root.rest)) - {if(root.rest) - caml_current_dir = caml_trailing_slash(root.path + root.rest); - else - caml_current_dir = root.path; - return 0} - else - caml_raise_no_such_file(caml_jsbytes_of_string(dir))} - function caml_gc_counters(){return [254,0,0,0]} - function ml_z_div(z1,z2) - {z2 = bigInt(z2); - if(z2.equals(bigInt(0)))caml_raise_zero_divide(); - return ml_z_normalize(bigInt(z1).divide(bigInt(z2)))} - function ml_z_sign(z1){return bigInt(z1).compare(bigInt.zero)} - function ml_z_add(z1,z2) - {return ml_z_normalize(bigInt(z1).add(bigInt(z2)))} - function ml_z_cdiv(z1,z2) - {var z1_pos=ml_z_sign(z1),z2_pos=ml_z_sign(z2); - if(z1_pos * z2_pos > 0) - if(! bigInt(z1).mod(bigInt(z2)).equals(bigInt(0))) - return ml_z_add(ml_z_div(z1,z2),bigInt(1)); - 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} - 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)); - var i=0; - if(x == 0)return - Infinity; - 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); - float32a[0] = x; - var int32a=new (globalThis.Int32Array)(float32a.buffer); - return int32a[0] | 0} - function caml_int64_create_lo_mi_hi(lo,mi,hi) - {return new MlInt64(lo,mi,hi)} - function caml_int64_bits_of_float(x) - {if(! isFinite(x)) - {if(isNaN(x))return caml_int64_create_lo_mi_hi(1,0,0x7ff0); - return x > 0 - ?caml_int64_create_lo_mi_hi(0,0,0x7ff0) - :caml_int64_create_lo_mi_hi(0,0,0xfff0)} - var sign=x == 0 && 1 / x == - Infinity?0x8000:x >= 0?0:0x8000; - if(sign)x = - x; - var exp=jsoo_floor_log2(x) + 1023; - if(exp <= 0) - {exp = 0;x /= Math.pow(2,- 1026)} - else - {x /= Math.pow(2,exp - 1027); - if(x < 16){x *= 2;exp -= 1} - if(exp == 0)x /= 2} - var k=Math.pow(2,24),r3=x | 0; - x = (x - r3) * k; - var r2=x | 0; - x = (x - r2) * k; - var r1=x | 0; - r3 = r3 & 0xf | sign | exp << 4; - return caml_int64_create_lo_mi_hi(r1,r2,r3)} - function caml_ba_serialize(writer,ba,sz) - {writer.write(32,ba.dims.length); - writer.write(32,ba.kind | ba.layout << 8); - if(ba.caml_custom == "_bigarr02") - for(var i=0;i < ba.dims.length;i++) - if(ba.dims[i] < 0xffff) - writer.write(16,ba.dims[i]); - else - {writer.write(16,0xffff); - writer.write(32,0); - writer.write(32,ba.dims[i])} - else - for(var i=0;i < ba.dims.length;i++)writer.write(32,ba.dims[i]); - switch(ba.kind) - {case 2: - case 3: - case 12: - for(var i=0;i < ba.data.length;i++)writer.write(8,ba.data[i]);break; - case 4: - case 5: - for(var i=0;i < ba.data.length;i++)writer.write(16,ba.data[i]);break; - case 6: - for(var i=0;i < ba.data.length;i++)writer.write(32,ba.data[i]);break; - case 8: - case 9: - writer.write(8,0); - for(var i=0;i < ba.data.length;i++)writer.write(32,ba.data[i]); - break; - case 7: - for(var i=0;i < ba.data.length / 2;i++) - {var b=caml_int64_to_bytes(ba.get(i)); - for(var j=0;j < 8;j++)writer.write(8,b[j])} - break; - case 1: - for(var i=0;i < ba.data.length;i++) - {var b=caml_int64_to_bytes(caml_int64_bits_of_float(ba.get(i))); - for(var j=0;j < 8;j++)writer.write(8,b[j])} - break; - case 0: - for(var i=0;i < ba.data.length;i++) - {var b=caml_int32_bits_of_float(ba.get(i));writer.write(32,b)} - break; - case 10: - for(var i=0;i < ba.data.length / 2;i++) - {var j=ba.get(i); - writer.write(32,caml_int32_bits_of_float(j[1])); - writer.write(32,caml_int32_bits_of_float(j[2]))} - break; - case 11: - for(var i=0;i < ba.data.length / 2;i++) - {var - complex=ba.get(i), - b=caml_int64_to_bytes(caml_int64_bits_of_float(complex[1])); - for(var j=0;j < 8;j++)writer.write(8,b[j]); - var b=caml_int64_to_bytes(caml_int64_bits_of_float(complex[2])); - for(var j=0;j < 8;j++)writer.write(8,b[j])} - break - } - sz[0] = (4 + ba.dims.length) * 4; - sz[1] = (4 + ba.dims.length) * 8} - 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; - 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 - } - 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); - int32a[0] = x; - var float32a=new (globalThis.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; - if(exp == 2047) - return (lo | mi | hi & 0xf) == 0?hi & 0x8000?- Infinity:Infinity:NaN; - var k=Math.pow(2,- 24),res=(lo * k + mi) * k + (hi & 0xf); - if(exp > 0) - {res += 16;res *= Math.pow(2,exp - 1027)} - else - res *= Math.pow(2,- 1026); - if(hi & 0x8000)res = - res; - return res} - function caml_ba_get_size(dims) - {var n_dims=dims.length,size=1; - for(var i=0;i < n_dims;i++) - {if(dims[i] < 0) - caml_invalid_argument("Bigarray.create: negative dimension"); - size = size * dims[i]} - return size} - function caml_int64_create_lo_hi(lo,hi) - {return new - MlInt64 - (lo & 0xffffff, - lo >>> 24 & 0xff | (hi & 0xffff) << 8, - hi >>> 16 & 0xffff)} - function caml_int64_hi32(v){return v.hi32()} - function caml_int64_lo32(v){return v.lo32()} - var caml_ba_custom_name="_bigarr02"; - function Ml_Bigarray(kind,layout,dims,buffer) - {this.kind = kind; - this.layout = layout; - this.dims = dims; - this.data = buffer} - Ml_Bigarray.prototype.caml_custom = caml_ba_custom_name; - Ml_Bigarray.prototype.offset - = - function(arg) - {var ofs=0; - if(typeof arg === "number")arg = [arg]; - if(! (arg instanceof Array)) - caml_invalid_argument("bigarray.js: invalid offset"); - if(this.dims.length != arg.length) - caml_invalid_argument("Bigarray.get/set: bad number of dimensions"); - if(this.layout == 0) - for(var i=0;i < this.dims.length;i++) - {if(arg[i] < 0 || arg[i] >= this.dims[i])caml_array_bound_error(); - ofs = ofs * this.dims[i] + arg[i]} - else - for(var i=this.dims.length - 1;i >= 0;i--) - {if(arg[i] < 1 || arg[i] > this.dims[i])caml_array_bound_error(); - ofs = ofs * this.dims[i] + (arg[i] - 1)} - return ofs}; - Ml_Bigarray.prototype.get - = - function(ofs) - {switch(this.kind) - {case 7: - var l=this.data[ofs * 2 + 0],h=this.data[ofs * 2 + 1]; - return caml_int64_create_lo_hi(l,h); - case 10: - case 11: - var r=this.data[ofs * 2 + 0],i=this.data[ofs * 2 + 1]; - return [254,r,i]; - default:return this.data[ofs]}}; - Ml_Bigarray.prototype.set - = - function(ofs,v) - {switch(this.kind) - {case 7: - this.data[ofs * 2 + 0] = caml_int64_lo32(v); - this.data[ofs * 2 + 1] = caml_int64_hi32(v); - break; - case 10: - case 11: - this.data[ofs * 2 + 0] = v[1];this.data[ofs * 2 + 1] = v[2];break; - default:this.data[ofs] = v;break} - return 0}; - Ml_Bigarray.prototype.fill - = - function(v) - {switch(this.kind) - {case 7: - var a=caml_int64_lo32(v),b=caml_int64_hi32(v); - if(a == b) - this.data.fill(a); - else - for(var i=0;i < this.data.length;i++)this.data[i] = i % 2 == 0?a:b; - break; - case 10: - case 11: - var im=v[1],re=v[2]; - if(im == re) - this.data.fill(im); - else - for(var i=0;i < this.data.length;i++) - this.data[i] = i % 2 == 0?im:re; - break; - default:this.data.fill(v);break}}; - Ml_Bigarray.prototype.compare - = - function(b,total) - {if(this.layout != b.layout || this.kind != b.kind) - {var k1=this.kind | this.layout << 8,k2=b.kind | b.layout << 8; - return k2 - k1} - if(this.dims.length != b.dims.length) - return b.dims.length - this.dims.length; - for(var i=0;i < this.dims.length;i++) - if(this.dims[i] != b.dims[i])return this.dims[i] < b.dims[i]?- 1:1; - switch(this.kind) - {case 0: - case 1: - case 10: - case 11: - var x,y; - for(var i=0;i < this.data.length;i++) - {x = this.data[i]; - y = b.data[i]; - if(x < y)return - 1; - if(x > y)return 1; - if(x != y) - {if(! total)return NaN;if(x == x)return 1;if(y == y)return - 1}} - break; - case 7: - for(var i=0;i < this.data.length;i += 2) - {if(this.data[i + 1] < b.data[i + 1])return - 1; - if(this.data[i + 1] > b.data[i + 1])return 1; - if(this.data[i] >>> 0 < b.data[i] >>> 0)return - 1; - if(this.data[i] >>> 0 > b.data[i] >>> 0)return 1} - break; - case 2: - case 3: - case 4: - case 5: - case 6: - case 8: - case 9: - case 12: - for(var i=0;i < this.data.length;i++) - {if(this.data[i] < b.data[i])return - 1; - if(this.data[i] > b.data[i])return 1} - break - } - return 0}; - function Ml_Bigarray_c_1_1(kind,layout,dims,buffer) - {this.kind = kind; - this.layout = layout; - this.dims = dims; - this.data = buffer} - Ml_Bigarray_c_1_1.prototype = new Ml_Bigarray(); - Ml_Bigarray_c_1_1.prototype.offset - = - function(arg) - {if(typeof arg !== "number") - if(arg instanceof Array && arg.length == 1) - arg = arg[0]; - else - caml_invalid_argument("Ml_Bigarray_c_1_1.offset"); - if(arg < 0 || arg >= this.dims[0])caml_array_bound_error(); - return arg}; - Ml_Bigarray_c_1_1.prototype.get = function(ofs){return this.data[ofs]}; - Ml_Bigarray_c_1_1.prototype.set - = - function(ofs,v){this.data[ofs] = v;return 0}; - Ml_Bigarray_c_1_1.prototype.fill - = - function(v){this.data.fill(v);return 0}; - function caml_ba_create_unsafe(kind,layout,dims,data) - {var size_per_element=caml_ba_get_size_per_element(kind); - if(caml_ba_get_size(dims) * size_per_element != data.length) - caml_invalid_argument("length doesn't match dims"); - if(layout == 0 && dims.length == 1 && size_per_element == 1) - return new Ml_Bigarray_c_1_1(kind,layout,dims,data); - return new Ml_Bigarray(kind,layout,dims,data)} - function caml_ba_deserialize(reader,sz,name) - {var num_dims=reader.read32s(); - if(num_dims < 0 || num_dims > 16) - caml_failwith("input_value: wrong number of bigarray dimensions"); - var tag=reader.read32s(),kind=tag & 0xff,layout=tag >> 8 & 1,dims=[]; - if(name == "_bigarr02") - for(var i=0;i < num_dims;i++) - {var size_dim=reader.read16u(); - if(size_dim == 0xffff) - {var size_dim_hi=reader.read32u(),size_dim_lo=reader.read32u(); - if(size_dim_hi != 0) - caml_failwith("input_value: bigarray dimension overflow in 32bit"); - size_dim = size_dim_lo} - dims.push(size_dim)} - else - for(var i=0;i < num_dims;i++)dims.push(reader.read32u()); - var - size=caml_ba_get_size(dims), - data=caml_ba_create_buffer(kind,size), - ba=caml_ba_create_unsafe(kind,layout,dims,data); - switch(kind) - {case 2:for(var i=0;i < size;i++)data[i] = reader.read8s();break; - case 3: - case 12:for(var i=0;i < size;i++)data[i] = reader.read8u();break; - case 4:for(var i=0;i < size;i++)data[i] = reader.read16s();break; - case 5:for(var i=0;i < size;i++)data[i] = reader.read16u();break; - case 6:for(var i=0;i < size;i++)data[i] = reader.read32s();break; - case 8: - case 9: - var sixty=reader.read8u(); - if(sixty) - caml_failwith - ("input_value: cannot read bigarray with 64-bit OCaml ints"); - for(var i=0;i < size;i++)data[i] = reader.read32s(); - break; - case 7: - var t=new Array(8); - for(var i=0;i < size;i++) - {for(var j=0;j < 8;j++)t[j] = reader.read8u(); - var int64=caml_int64_of_bytes(t); - ba.set(i,int64)} - break; - case 1: - var t=new Array(8); - for(var i=0;i < size;i++) - {for(var j=0;j < 8;j++)t[j] = reader.read8u(); - var f=caml_int64_float_of_bits(caml_int64_of_bytes(t)); - ba.set(i,f)} - break; - case 0: - for(var i=0;i < size;i++) - {var f=caml_int32_float_of_bits(reader.read32s());ba.set(i,f)} - break; - case 10: - for(var i=0;i < size;i++) - {var - re=caml_int32_float_of_bits(reader.read32s()), - im=caml_int32_float_of_bits(reader.read32s()); - ba.set(i,[254,re,im])} - break; - case 11: - var t=new Array(8); - for(var i=0;i < size;i++) - {for(var j=0;j < 8;j++)t[j] = reader.read8u(); - var re=caml_int64_float_of_bits(caml_int64_of_bytes(t)); - for(var j=0;j < 8;j++)t[j] = reader.read8u(); - var im=caml_int64_float_of_bits(caml_int64_of_bytes(t)); - ba.set(i,[254,re,im])} - break - } - sz[0] = (4 + num_dims) * 4; - return caml_ba_create_unsafe(kind,layout,dims,data)} - function caml_ba_compare(a,b,total){return a.compare(b,total)} - function caml_hash_mix_int64(h,v) - {h = caml_hash_mix_int(h,caml_int64_lo32(v)); - h = caml_hash_mix_int(h,caml_int64_hi32(v)); - return h} - function caml_hash_mix_float(h,v0) - {return caml_hash_mix_int64(h,caml_int64_bits_of_float(v0))} - function caml_ba_hash(ba) - {var num_elts=caml_ba_get_size(ba.dims),h=0; - switch(ba.kind) - {case 2: - case 3: - case 12: - if(num_elts > 256)num_elts = 256; - var w=0,i=0; - for(i = 0;i + 4 <= ba.data.length;i += 4) - {w - = - ba.data[i + 0] - | - ba.data[i + 1] - << - 8 - | - ba.data[i + 2] - << - 16 - | - ba.data[i + 3] - << - 24; - h = caml_hash_mix_int(h,w)} - w = 0; - switch(num_elts & 3) - {case 3:w = ba.data[i + 2] << 16; - case 2:w |= ba.data[i + 1] << 8; - case 1:w |= ba.data[i + 0];h = caml_hash_mix_int(h,w) - } - break; - case 4: - case 5: - if(num_elts > 128)num_elts = 128; - var w=0,i=0; - for(i = 0;i + 2 <= ba.data.length;i += 2) - {w = ba.data[i + 0] | ba.data[i + 1] << 16; - h = caml_hash_mix_int(h,w)} - if((num_elts & 1) != 0)h = caml_hash_mix_int(h,ba.data[i]); - break; - case 6: - if(num_elts > 64)num_elts = 64; - for(var i=0;i < num_elts;i++)h = caml_hash_mix_int(h,ba.data[i]); - break; - case 8: - case 9: - if(num_elts > 64)num_elts = 64; - for(var i=0;i < num_elts;i++)h = caml_hash_mix_int(h,ba.data[i]); - break; - case 7: - if(num_elts > 32)num_elts = 32; - num_elts *= 2; - for(var i=0;i < num_elts;i++)h = caml_hash_mix_int(h,ba.data[i]); - break; - case 10:num_elts *= 2; - case 0: - if(num_elts > 64)num_elts = 64; - for(var i=0;i < num_elts;i++)h = caml_hash_mix_float(h,ba.data[i]); - break; - case 11:num_elts *= 2; - case 1: - if(num_elts > 32)num_elts = 32; - for(var i=0;i < num_elts;i++)h = caml_hash_mix_float(h,ba.data[i]); - break - } - return h} - function caml_int32_unmarshal(reader,size) - {size[0] = 4;return reader.read32s()} - function caml_nativeint_unmarshal(reader,size) - {switch(reader.read8u()) - {case 1:size[0] = 4;return reader.read32s(); - case 2:caml_failwith("input_value: native integer value too large"); - default:caml_failwith("input_value: ill-formed native integer")}} - function caml_int64_unmarshal(reader,size) - {var t=new Array(8); - for(var j=0;j < 8;j++)t[j] = reader.read8u(); - size[0] = 8; - return caml_int64_of_bytes(t)} - function caml_int64_compare(x,y,total){return x.compare(y)} - function caml_int64_hash(v){return v.lo32() ^ v.hi32()} - var - caml_custom_ops= - {"_j": - {deserialize:caml_int64_unmarshal, - serialize:caml_int64_marshal, - fixed_length:8, - compare:caml_int64_compare, - hash:caml_int64_hash}, - "_i":{deserialize:caml_int32_unmarshal,fixed_length:4}, - "_n":{deserialize:caml_nativeint_unmarshal,fixed_length:4}, - "_bigarray": - {deserialize: - function(reader,sz){return caml_ba_deserialize(reader,sz,"_bigarray")}, - serialize:caml_ba_serialize, - compare:caml_ba_compare, - hash:caml_ba_hash}, - "_bigarr02": - {deserialize: - function(reader,sz){return caml_ba_deserialize(reader,sz,"_bigarr02")}, - serialize:caml_ba_serialize, - compare:caml_ba_compare, - hash:caml_ba_hash}}; - function caml_compare_val_get_custom(a) - {return caml_custom_ops[a.caml_custom] - && - caml_custom_ops[a.caml_custom].compare} - function caml_compare_val_number_custom(num,custom,swap,total) - {var comp=caml_compare_val_get_custom(custom); - if(comp) - {var x=swap > 0?comp(custom,num,total):comp(num,custom,total); - if(total && x != x)return swap; - if(+ x != + x)return + x; - if((x | 0) != 0)return x | 0} - return swap} - function caml_compare_val_tag(a) - {if(typeof a === "number") - return 1000; - else - if(caml_is_ml_bytes(a)) - return 252; - else - if(caml_is_ml_string(a)) - return 1252; - else - if(a instanceof Array && a[0] === a[0] >>> 0 && a[0] <= 255) - {var tag=a[0] | 0;return tag == 254?0:tag} - else - if(a instanceof String) - return 12520; - else - if(typeof a == "string") - return 12520; - else - if(a instanceof Number) - return 1000; - else - if(a && a.caml_custom) - return 1255; - else - if(a && a.compare) - return 1256; - else - if(typeof a == "function") - return 1247; - else - if(typeof a == "symbol")return 1251; - return 1001} - function caml_int_compare(a,b) - {if(a < b)return - 1;if(a == b)return 0;return 1} - function caml_bytes_compare(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:s1.c > s2.c?1:0} - function caml_string_compare(s1,s2){return caml_bytes_compare(s1,s2)} - function caml_compare_val(a,b,total) - {var stack=[]; - for(;;) - {if(! (total && a === b)) - {var tag_a=caml_compare_val_tag(a); - if(tag_a == 250){a = a[1];continue} - var tag_b=caml_compare_val_tag(b); - if(tag_b == 250){b = b[1];continue} - if(tag_a !== tag_b) - {if(tag_a == 1000) - {if(tag_b == 1255) - return caml_compare_val_number_custom(a,b,- 1,total); - return - 1} - if(tag_b == 1000) - {if(tag_a == 1255) - return caml_compare_val_number_custom(b,a,1,total); - return 1} - return tag_a < tag_b?- 1:1} - switch(tag_a) - {case 247:caml_invalid_argument("compare: functional value");break; - case 248: - var x=caml_int_compare(a[2],b[2]);if(x != 0)return x | 0;break; - case 249:caml_invalid_argument("compare: functional value");break; - case 250: - caml_invalid_argument - ("equal: got Forward_tag, should not happen"); - break; - case 251:caml_invalid_argument("equal: abstract value");break; - case 252: - if(a !== b){var x=caml_bytes_compare(a,b);if(x != 0)return x | 0} - break; - case 253: - caml_invalid_argument("equal: got Double_tag, should not happen"); - break; - case 254: - caml_invalid_argument - ("equal: got Double_array_tag, should not happen"); - break; - case 255: - caml_invalid_argument("equal: got Custom_tag, should not happen"); - break; - case 1247: - caml_invalid_argument("compare: functional value");break; - case 1255: - var comp=caml_compare_val_get_custom(a); - if(comp != caml_compare_val_get_custom(b)) - return a.caml_custom < b.caml_custom?- 1:1; - if(! comp)caml_invalid_argument("compare: abstract value"); - var x=comp(a,b,total); - if(x != x)return total?- 1:x; - if(x !== (x | 0))return - 1; - if(x != 0)return x | 0; - break; - case 1256: - var x=a.compare(b,total); - if(x != x)return total?- 1:x; - if(x !== (x | 0))return - 1; - if(x != 0)return x | 0; - break; - case 1000: - a = + a; - b = + b; - if(a < b)return - 1; - if(a > b)return 1; - if(a != b) - {if(! total)return NaN;if(a == a)return 1;if(b == b)return - 1} - break; - case 1001: - if(a < b)return - 1; - if(a > b)return 1; - if(a != b) - {if(! total)return NaN;if(a == a)return 1;if(b == b)return - 1} - break; - case 1251:if(a !== b){if(! total)return NaN;return 1}break; - case 1252: - var a=caml_jsbytes_of_string(a),b=caml_jsbytes_of_string(b); - if(a !== b){if(a < b)return - 1;if(a > b)return 1} - break; - case 12520: - var a=a.toString(),b=b.toString(); - if(a !== b){if(a < b)return - 1;if(a > b)return 1} - break; - case 246: - case 254: - default: - if(a.length != b.length)return a.length < b.length?- 1:1; - if(a.length > 1)stack.push(a,b,1); - break}} - if(stack.length == 0)return 0; - var i=stack.pop(); - b = stack.pop(); - a = stack.pop(); - if(i + 1 < a.length)stack.push(a,b,i + 1); - a = a[i]; - b = b[i]}} - function caml_greaterthan(x,y){return + (caml_compare_val(x,y,false) > 0)} - function div_helper(a,b,c) - {var - x=a * 65536 + (b >>> 16), - y=Math.floor(x / c) * 65536, - z=x % c * 65536, - w=z + (b & 0x0000FFFF); - return [y + Math.floor(w / c),w % c]} - function div_digit_nat(natq,ofsq,natr,ofsr,nat1,ofs1,len,nat2,ofs2) - {var rem=nat1.data[ofs1 + len - 1] >>> 0; - for(var i=len - 2;i >= 0;i--) - {var x=div_helper(rem,nat1.data[ofs1 + i] >>> 0,nat2.data[ofs2] >>> 0); - natq.data[ofsq + i] = x[0]; - rem = x[1]} - natr.data[ofsr] = rem; - return 0} - function num_leading_zero_bits_in_digit(nat,ofs) - {var a=nat.data[ofs],b=0; - if(a & 0xFFFF0000){b += 16;a >>>= 16} - if(a & 0xFF00){b += 8;a >>>= 8} - if(a & 0xF0){b += 4;a >>>= 4} - if(a & 12){b += 2;a >>>= 2} - if(a & 2){b += 1;a >>>= 1} - if(a & 1)b += 1; - return 32 - b} - function shift_left_nat(nat1,ofs1,len1,nat2,ofs2,nbits) - {if(nbits == 0){nat2.data[ofs2] = 0;return 0} - var wrap=0; - for(var i=0;i < len1;i++) - {var a=nat1.data[ofs1 + i] >>> 0; - nat1.data[ofs1 + i] = a << nbits | wrap; - wrap = a >>> 32 - nbits} - nat2.data[ofs2] = wrap; - return 0} - function MlNat(x) - {this.data = new (globalThis.Int32Array)(x); - this.length = this.data.length + 2} - MlNat.prototype.caml_custom = "_nat"; - function create_nat(size) - {var arr=new MlNat(size); - for(var i=0;i < size;i++)arr.data[i] = - 1; - return arr} - function set_to_zero_nat(nat,ofs,len) - {for(var i=0;i < len;i++)nat.data[ofs + i] = 0;return 0} - function incr_nat(nat,ofs,len,carry_in) - {var carry=carry_in; - for(var i=0;i < len;i++) - {var x=(nat.data[ofs + i] >>> 0) + carry; - nat.data[ofs + i] = x | 0; - if(x == x >>> 0){carry = 0;break}else carry = 1} - return carry} - function add_nat(nat1,ofs1,len1,nat2,ofs2,len2,carry_in) - {var carry=carry_in; - for(var i=0;i < len2;i++) - {var - x= - (nat1.data[ofs1 + i] >>> 0) + (nat2.data[ofs2 + i] >>> 0) + carry; - nat1.data[ofs1 + i] = x; - if(x == x >>> 0)carry = 0;else carry = 1} - return incr_nat(nat1,ofs1 + len2,len1 - len2,carry)} - function nat_of_array(l){return new MlNat(l)} - function mult_digit_nat(nat1,ofs1,len1,nat2,ofs2,len2,nat3,ofs3) - {var carry=0,a=nat3.data[ofs3] >>> 0; - for(var i=0;i < len2;i++) - {var - x1= - (nat1.data[ofs1 + i] >>> 0) - + - (nat2.data[ofs2 + i] >>> 0) - * - (a & 0x0000FFFF) - + - carry, - x2=(nat2.data[ofs2 + i] >>> 0) * (a >>> 16); - carry = Math.floor(x2 / 65536); - var x3=x1 + x2 % 65536 * 65536; - nat1.data[ofs1 + i] = x3; - carry += Math.floor(x3 / 4294967296)} - return len2 < len1 && carry - ?add_nat - (nat1,ofs1 + len2,len1 - len2,nat_of_array([carry]),0,1,0) - :carry} - function decr_nat(nat,ofs,len,carry_in) - {var borrow=carry_in == 1?0:1; - for(var i=0;i < len;i++) - {var x=(nat.data[ofs + i] >>> 0) - borrow; - nat.data[ofs + i] = x; - if(x >= 0){borrow = 0;break}else borrow = 1} - return borrow == 1?0:1} - function sub_nat(nat1,ofs1,len1,nat2,ofs2,len2,carry_in) - {var borrow=carry_in == 1?0:1; - for(var i=0;i < len2;i++) - {var - x= - (nat1.data[ofs1 + i] >>> 0) - (nat2.data[ofs2 + i] >>> 0) - borrow; - nat1.data[ofs1 + i] = x; - if(x >= 0)borrow = 0;else borrow = 1} - return decr_nat(nat1,ofs1 + len2,len1 - len2,borrow == 1?0:1)} - function compare_nat(nat1,ofs1,len1,nat2,ofs2,len2) - {var a=num_digits_nat(nat1,ofs1,len1),b=num_digits_nat(nat2,ofs2,len2); - if(a > b)return 1; - if(a < b)return - 1; - for(var i=len1 - 1;i >= 0;i--) - {if(nat1.data[ofs1 + i] >>> 0 > nat2.data[ofs2 + i] >>> 0)return 1; - if(nat1.data[ofs1 + i] >>> 0 < nat2.data[ofs2 + i] >>> 0)return - 1} - return 0} - function div_nat(nat1,ofs1,len1,nat2,ofs2,len2) - {if(len2 == 1) - {div_digit_nat(nat1,ofs1 + 1,nat1,ofs1,nat1,ofs1,len1,nat2,ofs2); - return 0} - var s=num_leading_zero_bits_in_digit(nat2,ofs2 + len2 - 1); - shift_left_nat(nat2,ofs2,len2,nat_of_array([0]),0,s); - shift_left_nat(nat1,ofs1,len1,nat_of_array([0]),0,s); - var d=(nat2.data[ofs2 + len2 - 1] >>> 0) + 1,a=create_nat(len2 + 1); - for(var i=len1 - 1;i >= len2;i--) - {var - quo= - d == 4294967296 - ?nat1.data[ofs1 + i] >>> 0 - :div_helper - (nat1.data[ofs1 + i] >>> 0,nat1.data[ofs1 + i - 1] >>> 0,d) - [0]; - set_to_zero_nat(a,0,len2 + 1); - mult_digit_nat(a,0,len2 + 1,nat2,ofs2,len2,nat_of_array([quo]),0); - sub_nat(nat1,ofs1 + i - len2,len2 + 1,a,0,len2 + 1,1); - while - (nat1.data[ofs1 + i] - != - 0 - || - compare_nat(nat1,ofs1 + i - len2,len2,nat2,ofs2,len2) - >= - 0) - {quo = quo + 1; - sub_nat(nat1,ofs1 + i - len2,len2 + 1,nat2,ofs2,len2,1)} - nat1.data[ofs1 + i] = quo} - shift_right_nat(nat1,ofs1,len2,nat_of_array([0]),0,s); - shift_right_nat(nat2,ofs2,len2,nat_of_array([0]),0,s); - return 0} - function caml_ba_blit(src,dst) - {if(dst.dims.length != src.dims.length) - caml_invalid_argument("Bigarray.blit: dimension mismatch"); - for(var i=0;i < dst.dims.length;i++) - if(dst.dims[i] != src.dims[i]) - caml_invalid_argument("Bigarray.blit: dimension mismatch"); - dst.data.set(src.data); - return 0} - function is_digit_int(nat,ofs){if(nat.data[ofs] >= 0)return 1;return 0} - function caml_int64_div(x,y){return x.div(y)} - function caml_js_html_entities(s) - {var entity=/^&#?[0-9a-zA-Z]+;$/; - if(s.match(entity)) - {var str,temp=document.createElement("p"); - temp.innerHTML = s; - str = temp.textContent || temp.innerText; - temp = null; - return str} - else - caml_failwith("Invalid entity " + s)} - function caml_string_unsafe_set(s,i,c) - {return caml_bytes_unsafe_set(s,i,c)} - function caml_int64_of_float(x) - {if(x < 0)x = Math.ceil(x); - return new - MlInt64 - (x & 0xffffff, - Math.floor(x * caml_int64_offset) & 0xffffff, - Math.floor(x * caml_int64_offset * caml_int64_offset) & 0xffff)} - function caml_ml_channel_size_64(chanid) - {var chan=caml_ml_channels[chanid]; - return caml_int64_of_float(chan.file.length())} - function caml_ba_set_2(ba,i0,i1,v){ba.set(ba.offset([i0,i1]),v);return 0} - function ml_z_of_int64(i64) - {var neg=false; - if(caml_int64_compare(i64,caml_int64_create_lo_hi(0,0)) < 0) - {neg = true;i64 = caml_int64_neg(i64)} - var - lo=caml_int64_lo32(i64) >>> 0, - hi=caml_int64_hi32(i64) >>> 0, - x=bigInt(lo).add(bigInt(hi).shiftLeft(32)); - if(neg)x = x.negate(); - return ml_z_normalize(x)} - function ml_z_kronecker(n,k) - {caml_failwith("ml_z_kronecker is not implemented")} - 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 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])); - return args2} - (), - caml_executable_name=caml_argv[1]; - function caml_js_eval_string(s){return eval(caml_jsstring_of_string(s))} - function serialize_nat(writer,nat,sz) - {var len=nat.data.length; - writer.write(32,len); - for(var i=0;i < len;i++)writer.write(32,nat.data[i]); - sz[0] = len * 4; - sz[1] = len * 8} - 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); - caml_invalid_argument("Function 'exit' not implemented")} - function caml_channel_descriptor(chanid) - {var chan=caml_ml_channels[chanid];return chan.fd} - function caml_js_from_array(a){return a.slice(1)} - function caml_ba_reshape(ba,vind) - {vind = caml_js_from_array(vind); - var new_dim=[],num_dims=vind.length; - if(num_dims < 0 || num_dims > 16) - caml_invalid_argument("Bigarray.reshape: bad number of dimensions"); - var num_elts=1; - for(var i=0;i < num_dims;i++) - {new_dim[i] = vind[i]; - if(new_dim[i] < 0) - caml_invalid_argument("Bigarray.reshape: negative dimension"); - num_elts = num_elts * new_dim[i]} - var size=caml_ba_get_size(ba.dims); - if(num_elts != size) - caml_invalid_argument("Bigarray.reshape: size mismatch"); - return caml_ba_create_unsafe(ba.kind,ba.layout,new_dim,ba.data)} - var caml_oo_last_id=0; - function caml_set_oo_id(b){b[2] = caml_oo_last_id++;return b} - function caml_gr_fill_rect(x,y,w,h) - {var s=caml_gr_state_get(); - s.context.fillRect(x,s.height - y,w,- h); - return 0} - function caml_bigstring_blit_string_to_ba(str1,pos1,ba2,pos2,len) - {if(12 != ba2.kind) - caml_invalid_argument - ("caml_bigstring_blit_string_to_ba: kind mismatch"); - if(len == 0)return 0; - 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); - ba2.data.set(slice,ofs2); - return 0} - function caml_gr_set_window_title(name) - {var s=caml_gr_state_get(); - s.title = name; - var jsname=caml_jsstring_of_string(name); - if(s.set_title)s.set_title(jsname); - return 0} - function caml_get_global_data(){return caml_global_data} - function caml_int64_shift_right_unsigned(x,s) - {return x.shift_right_unsigned(s)} - function caml_ba_uint8_get16(ba,i0) - {var ofs=ba.offset(i0); - if(ofs + 1 >= ba.data.length)caml_array_bound_error(); - var b1=ba.get(ofs),b2=ba.get(ofs + 1); - 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)} - 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))} - function caml_bigstring_memcmp(s1,pos1,s2,pos2,len) - {for(var i=0;i < len;i++) - {var a=caml_ba_get_1(s1,pos1 + i),b=caml_ba_get_1(s2,pos2 + i); - if(a < b)return - 1; - if(a > b)return 1} - return 0} - function caml_new_string(s){return caml_string_of_jsbytes(s)} - function caml_erf_float(x) - {var - a1=0.254829592, - a2=- 0.284496736, - a3=1.421413741, - a4=- 1.453152027, - a5=1.061405429, - p=0.3275911, - sign=1; - if(x < 0)sign = - 1; - x = Math.abs(x); - var - t=1.0 / (1.0 + p * x), - y= - 1.0 - - - ((((a5 * t + a4) * t + a3) * t + a2) * t + a1) - * - t - * - Math.exp(- (x * x)); - return sign * y} - function caml_ba_uint8_get32(ba,i0) - {var ofs=ba.offset(i0); - if(ofs + 3 >= ba.data.length)caml_array_bound_error(); - var - b1=ba.get(ofs + 0), - b2=ba.get(ofs + 1), - b3=ba.get(ofs + 2), - b4=ba.get(ofs + 3); - return b1 << 0 | b2 << 8 | b3 << 16 | b4 << 24} - function caml_raw_backtrace_length(){return 0} - function ml_z_shift_right(z1,amt) - {return ml_z_normalize(bigInt(z1).shiftRight(amt))} - function caml_obj_block(tag,size) - {var o=new Array(size + 1); - o[0] = tag; - for(var i=1;i <= size;i++)o[i] = 0; - return o} - function caml_gr_clear_graph() - {var s=caml_gr_state_get(); - s.canvas.width = s.width; - s.canvas.height = s.height; - return 0} - function bigstring_to_array_buffer(bs){return bs.data.buffer} - function caml_sys_const_naked_pointers_checked(_unit){return 0} - function lxor_digit_nat(nat1,ofs1,nat2,ofs2) - {nat1.data[ofs1] ^= nat2.data[ofs2];return 0} - function caml_obj_add_offset(v,offset) - {caml_failwith("Obj.add_offset is not supported")} - function caml_final_release(){return 0} - function caml_js_to_array(a) - {var len=a.length,b=new Array(len + 1); - b[0] = 0; - for(var i=0;i < len;i++)b[i + 1] = a[i]; - return b} - function ml_z_logor(z1,z2) - {return ml_z_normalize(bigInt(z1).or(bigInt(z2)))} - function caml_gr_plot(x,y) - {var - s=caml_gr_state_get(), - im=s.context.createImageData(1,1), - d=im.data, - color=s.color; - d[0] = color >> 16 & 0xff; - d[1] = color >> 8 & 0xff,d[2] = color >> 0 & 0xff; - d[3] = 0xFF; - s.x = x; - s.y = y; - s.context.putImageData(im,x,s.height - y); - return 0} - function caml_bytes_set16(s,i,i16) - {if(i >>> 0 >= s.l - 1)caml_bytes_bound_error(); - var b2=0xFF & i16 >> 8,b1=0xFF & i16; - caml_bytes_unsafe_set(s,i + 0,b1); - caml_bytes_unsafe_set(s,i + 1,b2); - return 0} - function caml_string_set16(s,i,i16){return caml_bytes_set16(s,i,i16)} - function caml_bytes_set64(s,i,i64) - {if(i >>> 0 >= s.l - 7)caml_bytes_bound_error(); - var a=caml_int64_to_bytes(i64); - for(var j=0;j < 8;j++)caml_bytes_unsafe_set(s,i + 7 - j,a[j]); - return 0} - function caml_int64_bswap(x) - {var y=caml_int64_to_bytes(x); - 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 ml_z_shift_left(z1,amt) - {return ml_z_normalize(bigInt(z1).shiftLeft(amt))} - function caml_lex_array(s) - {s = caml_jsbytes_of_string(s); - var l=s.length / 2,a=new Array(l); - for(var i=0;i < l;i++) - a[i] - = - (s.charCodeAt(2 * i) | s.charCodeAt(2 * i + 1) << 8) - << - 16 - >> - 16; - return a} - function caml_lex_engine(tbl,start_state,lexbuf) - {var - lex_buffer=2, - lex_buffer_len=3, - lex_start_pos=5, - lex_curr_pos=6, - lex_last_pos=7, - lex_last_action=8, - lex_eof_reached=9, - lex_base=1, - lex_backtrk=2, - lex_default=3, - lex_trans=4, - lex_check=5; - if(! tbl.lex_default) - {tbl.lex_base = caml_lex_array(tbl[lex_base]); - tbl.lex_backtrk = caml_lex_array(tbl[lex_backtrk]); - 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]); - if(state >= 0) - {lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos]; - lexbuf[lex_last_action] = - 1} - else - state = - state - 1; - for(;;) - {var base=tbl.lex_base[state]; - if(base < 0)return - base - 1; - var backtrk=tbl.lex_backtrk[state]; - if(backtrk >= 0) - {lexbuf[lex_last_pos] = lexbuf[lex_curr_pos]; - lexbuf[lex_last_action] = backtrk} - if(lexbuf[lex_curr_pos] >= lexbuf[lex_buffer_len]) - if(lexbuf[lex_eof_reached] == 0)return - state - 1;else c = 256; - else - {c = buffer[lexbuf[lex_curr_pos]];lexbuf[lex_curr_pos]++} - if(tbl.lex_check[base + c] == state) - state = tbl.lex_trans[base + c]; - else - state = tbl.lex_default[state]; - if(state < 0) - {lexbuf[lex_curr_pos] = lexbuf[lex_last_pos]; - if(lexbuf[lex_last_action] == - 1) - caml_failwith("lexing: empty token"); - else - 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() - {caml_failwith("caml_convert_raw_backtrace_slot")} - function caml_array_sub(a,i,len) - {var a2=new Array(len + 1); - a2[0] = 0; - for(var i2=1,i1=i + 1;i2 <= len;i2++,i1++)a2[i2] = a[i1]; - return a2} - function caml_bytes_equal(s1,s2) - {if(s1 === s2)return 1; - 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_gr_size_x(){var s=caml_gr_state_get();return s.width} - function caml_ml_debug_info_status(){return 0} - var - os_type= - globalThis.process - && - globalThis.process.platform - && - globalThis.process.platform - == - "win32" - ?"Cygwin" - :"Unix"; - function caml_sys_const_ostype_cygwin(){return os_type == "Cygwin"?1:0} - function caml_cosh_float(x){return Math.cosh(x)} - 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_hash_mix_final(h) - {h ^= h >>> 16; - h = caml_mul(h,0x85ebca6b | 0); - h ^= h >>> 13; - h = caml_mul(h,0xc2b2ae35 | 0); - h ^= h >>> 16; - return h} - function caml_gr_text_size(txt) - {var - s=caml_gr_state_get(), - w=s.context.measureText(caml_jsstring_of_string(txt)).width; - return [0,w,s.text_size]} - function caml_lex_run_mem(s,i,mem,curr_pos) - {for(;;) - {var dst=s.charCodeAt(i); - i++; - if(dst == 0xff)return; - var src=s.charCodeAt(i); - i++; - if(src == 0xff) - mem[dst + 1] = curr_pos; - else - mem[dst + 1] = mem[src + 1]}} - function caml_lex_run_tag(s,i,mem) - {for(;;) - {var dst=s.charCodeAt(i); - i++; - if(dst == 0xff)return; - var src=s.charCodeAt(i); - i++; - if(src == 0xff)mem[dst + 1] = - 1;else mem[dst + 1] = mem[src + 1]}} - function caml_new_lex_engine(tbl,start_state,lexbuf) - {var - lex_buffer=2, - lex_buffer_len=3, - lex_start_pos=5, - lex_curr_pos=6, - lex_last_pos=7, - lex_last_action=8, - lex_eof_reached=9, - lex_mem=10, - lex_base=1, - lex_backtrk=2, - lex_default=3, - lex_trans=4, - lex_check=5, - lex_base_code=6, - lex_backtrk_code=7, - lex_default_code=8, - lex_trans_code=9, - lex_check_code=10, - lex_code=11; - if(! tbl.lex_default) - {tbl.lex_base = caml_lex_array(tbl[lex_base]); - tbl.lex_backtrk = caml_lex_array(tbl[lex_backtrk]); - 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])} - if(! tbl.lex_default_code) - {tbl.lex_base_code = caml_lex_array(tbl[lex_base_code]); - tbl.lex_backtrk_code = caml_lex_array(tbl[lex_backtrk_code]); - tbl.lex_check_code = caml_lex_array(tbl[lex_check_code]); - tbl.lex_trans_code = caml_lex_array(tbl[lex_trans_code]); - 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]); - if(state >= 0) - {lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos]; - lexbuf[lex_last_action] = - 1} - else - state = - state - 1; - for(;;) - {var base=tbl.lex_base[state]; - if(base < 0) - {var pc_off=tbl.lex_base_code[state]; - caml_lex_run_tag(tbl.lex_code,pc_off,lexbuf[lex_mem]); - return - base - 1} - var backtrk=tbl.lex_backtrk[state]; - if(backtrk >= 0) - {var pc_off=tbl.lex_backtrk_code[state]; - caml_lex_run_tag(tbl.lex_code,pc_off,lexbuf[lex_mem]); - lexbuf[lex_last_pos] = lexbuf[lex_curr_pos]; - lexbuf[lex_last_action] = backtrk} - if(lexbuf[lex_curr_pos] >= lexbuf[lex_buffer_len]) - if(lexbuf[lex_eof_reached] == 0)return - state - 1;else c = 256; - else - {c = buffer[lexbuf[lex_curr_pos]];lexbuf[lex_curr_pos]++} - var pstate=state; - if(tbl.lex_check[base + c] == state) - state = tbl.lex_trans[base + c]; - else - state = tbl.lex_default[state]; - if(state < 0) - {lexbuf[lex_curr_pos] = lexbuf[lex_last_pos]; - if(lexbuf[lex_last_action] == - 1) - caml_failwith("lexing: empty token"); - else - return lexbuf[lex_last_action]} - else - {var base_code=tbl.lex_base_code[pstate],pc_off; - if(tbl.lex_check_code[base_code + c] == pstate) - pc_off = tbl.lex_trans_code[base_code + c]; - else - pc_off = tbl.lex_default_code[pstate]; - if(pc_off > 0) - caml_lex_run_mem - (tbl.lex_code,pc_off,lexbuf[lex_mem],lexbuf[lex_curr_pos]); - if(c == 256)lexbuf[lex_eof_reached] = 0}}} - function caml_ba_uint8_set64(ba,i0,v) - {var ofs=ba.offset(i0); - if(ofs + 7 >= ba.data.length)caml_array_bound_error(); - var v=caml_int64_to_bytes(v); - for(var i=0;i < 8;i++)ba.set(ofs + i,v[7 - i]); - return 0} - function ml_z_popcount(z) - {z = bigInt(z); - var zero=bigInt(0),one=bigInt(1); - if(z.lt(zero))caml_raise_constant(caml_named_value("ml_z_overflow")); - var i; - for(i = 0;! z.equals(zero);i++)z = z.and(z.prev()); - if(i != (i | 0))caml_raise_constant(caml_named_value("ml_z_overflow")); - return i | 0} - 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_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 = ""; - return 0} - function caml_ml_seek_out_64(chanid,pos) - {caml_ml_flush(chanid); - caml_ml_channels[chanid].offset = caml_int64_to_float(pos); - return 0} - 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_gc_compaction(){return 0} - function caml_weak_get(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; - function jsoo_z_of_js_string_base(base,s) - {if(base == 0) - {base = 10; - var p=0,sign=1; - if(s[p] == "-"){sign = - 1;p++}else if(s[p] == "+")p++; - if(s[p] == "0") - {p++; - if(s.length == p) - return 0; - else - {var bc=s[p]; - if(bc == "o" || bc == "O") - base = 8; - else - if(bc == "x" || bc == "X") - base = 16; - else - if(bc == "b" || bc == "B")base = 2; - if(base != 10){s = s.substring(p + 1);if(sign == - 1)s = "-" + s}}}} - function digit(code) - {if(code >= 48 && code <= 57)return code - 48; - if(code >= 97 && code <= 102)return code - 97 + 10; - if(code >= 65 && code <= 70)return code - 65 + 10} - var i=0; - if(s[i] == "+")s = s.substring(1);else if(s[i] == "-")i++; - if(s[i] == "_") - caml_invalid_argument("Z.of_substring_base: invalid digit"); - s = s.replace(/_/g,""); - if(s == "-" || s == "")s = "0"; - for(;i < s.length;i++) - {var c=digit(s.charCodeAt(i)); - if(c == undefined || c >= base) - caml_invalid_argument("Z.of_substring_base: invalid digit")} - return ml_z_normalize(bigInt(s,base))} - function ml_z_of_substring_base(base,s,pos,len) - {s = caml_jsbytes_of_string(s); - if(pos != 0 || len != s.length) - {if(s.length - pos < len) - caml_invalid_argument - ("Z.of_substring_base: invalid offset or length"); - s = s.slice(pos,pos + len)} - return jsoo_z_of_js_string_base(base,s)} - function caml_bigstring_blit_bytes_to_ba(str1,pos1,ba2,pos2,len) - {if(12 != ba2.kind) - caml_invalid_argument - ("caml_bigstring_blit_string_to_ba: kind mismatch"); - if(len == 0)return 0; - 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); - ba2.data.set(slice,ofs2); - return 0} - function win_cleanup(){} - function caml_sys_close(fd){delete caml_global_data.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) - {if(! exn.js_error || force || exn[0] == 248) - exn.js_error - = - new (globalThis.Error)("Js exception containing backtrace"); - return exn} - 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_js_set(o,f,v){o[f] = v;return 0} - function ml_z_gcdext_intern(z1,z2) - {z1 = bigInt(z1); - z2 = bigInt(z2); - var - gcd=bigInt.gcd(z1,z2), - a=z1, - b=z2, - x=bigInt(0), - lastx=bigInt(1), - y=bigInt(1), - lasty=bigInt(1), - q, - t, - r; - if(z1.equals(bigInt(0)))caml_raise_zero_divide(); - while(! b.equals(bigInt(0))) - {q = a.divide(b); - r = a.subtract(q.multiply(b)); - t = x; - x = lastx.subtract(q.multiply(x)); - lastx = t; - t = y; - y = lasty.subtract(q.multiply(y)); - lasty = t; - a = b; - b = r} - return a.lt(bigInt(0)) - ?[0,ml_z_normalize(a.negate()),ml_z_normalize(lastx.negate()),1] - :[0,ml_z_normalize(a),ml_z_normalize(lastx),1]} - function ml_z_testbit(z,pos) - {z = bigInt(z);return z.shiftRight(pos).and(bigInt(1)).toJSNumber() | 0} - function caml_array_get(array,index) - {if(index < 0 || index >= array.length - 1)caml_array_bound_error(); - return array[index + 1]} - 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) - {var zero=bigInt(0); - a = bigInt(a); - b = bigInt(b); - c = bigInt(c); - if(c.equals(zero) && a.equals(b))return 1; - return a.minus(b).isDivisibleBy(c)?1:0} - 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) - {var chan=caml_ml_channels[chanid]; - if(chan.refill != null)caml_raise_sys_error("Illegal seek"); - chan.offset = caml_int64_to_float(pos); - return 0} - 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())} - function caml_sys_const_int_size(){return 32} - function caml_js_wrap_meth_callback(f) - {return function() - {var len=arguments.length,args=new Array(len + 1); - args[0] = this; - 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_ba_dim(ba,i) - {if(i < 0 || i >= ba.dims.length)caml_invalid_argument("Bigarray.dim"); - return ba.dims[i]} - function caml_ba_dim_1(ba){return caml_ba_dim(ba,0)} - function ml_z_sqrt(z1) - {var z=bigInt(z1),zero=bigInt(0); - 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) - {if(i < 0)caml_invalid_argument("Z.lucnum: negative arguments"); - if(i == 0)return 2; - if(i == 1)return 1; - 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)} - 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_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_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 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) - {if(i < 0 || caml_ephe_key_offset + i >= x.length) - caml_invalid_argument("Weak.set"); - x[caml_ephe_key_offset + i] = v; - return 0} - function caml_sys_remove(name) - {var root=resolve_fs_device(name),ok=root.device.unlink(root.rest); - if(ok == 0)caml_raise_no_such_file(caml_jsbytes_of_string(name)); - return 0} - function caml_string_bound_error() - {caml_invalid_argument("index out of bounds")} - function caml_string_get32(s,i) - {if(i >>> 0 >= caml_ml_string_length(s) - 3)caml_string_bound_error(); - var - b1=caml_string_unsafe_get(s,i), - b2=caml_string_unsafe_get(s,i + 1), - 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_hypot_float(x,y){return Math.hypot(x,y)} - function ml_z_facM(i,m) - {if(i <= 0 || m <= 0) - caml_invalid_argument("Z.factM: negative arguments"); - m = bigInt(m); - var current=bigInt(i),res=bigInt(1); - while(current.isPositive()) - {res = res.multiply(current);current = current.minus(m)} - return ml_z_normalize(res)} - 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 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; - caml_raise_constant(caml_named_value("ml_z_overflow"))} - function caml_hash_mix_bytes_arr(h,s) - {var len=s.length,i,w; - for(i = 0;i + 4 <= len;i += 4) - {w = s[i] | s[i + 1] << 8 | s[i + 2] << 16 | s[i + 3] << 24; - h = caml_hash_mix_int(h,w)} - w = 0; - switch(len & 3) - {case 3:w = s[i + 2] << 16; - case 2:w |= s[i + 1] << 8; - case 1:w |= s[i];h = caml_hash_mix_int(h,w) - } - h ^= len; - return h} - function caml_hash_mix_jsbytes(h,s) - {var len=s.length,i,w; - for(i = 0;i + 4 <= len;i += 4) - {w - = - s.charCodeAt(i) - | - s.charCodeAt(i + 1) - << - 8 - | - s.charCodeAt(i + 2) - << - 16 - | - s.charCodeAt(i + 3) - << - 24; - h = caml_hash_mix_int(h,w)} - w = 0; - switch(len & 3) - {case 3:w = s.charCodeAt(i + 2) << 16; - case 2:w |= s.charCodeAt(i + 1) << 8; - case 1:w |= s.charCodeAt(i);h = caml_hash_mix_int(h,w) - } - h ^= len; - return h} - function caml_ml_bytes_content(s) - {switch(s.t & 6) - {default:caml_convert_string_to_bytes(s);case 0:return s.c; - case 4:return s.c - }} - function caml_hash_mix_bytes(h,v) - {var content=caml_ml_bytes_content(v); - return typeof content === "string" - ?caml_hash_mix_jsbytes(h,content) - :caml_hash_mix_bytes_arr(h,content)} - function caml_bytes_lessthan(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_erfc_float(x){return 1 - caml_erf_float(x)} - function caml_gr_fill_poly(ar) - {var s=caml_gr_state_get(); - s.context.beginPath(); - s.context.moveTo(ar[1][1],s.height - ar[1][2]); - for(var i=2;i < ar.length;i++) - s.context.lineTo(ar[i][1],s.height - ar[i][2]); - s.context.lineTo(ar[1][1],s.height - ar[1][2]); - s.context.fill(); - return 0} - function caml_gc_quick_stat(){return [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} - 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_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} - function caml_gr_display_mode() - {caml_failwith("caml_gr_display_mode not Implemented")} - function ml_z_divisible(a,b) - {var zero=bigInt(0); - a = bigInt(a); - b = bigInt(b); - if(a.equals(zero) && b.equals(zero))return 1; - return a.isDivisibleBy(b)?1:0} - function caml_obj_reachable_words(o){return 0} - function nth_digit_nat(nat,ofs){return nat.data[ofs]} - function caml_array_blit(a1,i1,a2,i2,len) - {if(i2 <= i1) - for(var j=1;j <= len;j++)a2[i2 + j] = a1[i1 + j]; - else - for(var j=len;j >= 1;j--)a2[i2 + j] = a1[i1 + j]; - return 0} - function caml_float_of_string(s) - {var res; - s = caml_jsbytes_of_string(s); - res = + s; - if(s.length > 0 && res === res)return res; - s = s.replace(/_/g,""); - res = + s; - if(s.length > 0 && res === res || /^[+-]?nan$/i.test(s))return res; - var m=/^ *([+-]?)0x([0-9a-f]+)\.?([0-9a-f]*)(p([+-]?[0-9]+))?/i.exec(s); - if(m) - {var - m3=m[3].replace(/0+$/,""), - mantissa=parseInt(m[1] + m[2] + m3,16), - exponent=(m[5] | 0) - 4 * m3.length; - res = mantissa * Math.pow(2,exponent); - return res} - if(/^\+?inf(inity)?$/i.test(s))return Infinity; - if(/^-inf(inity)?$/i.test(s))return - Infinity; - caml_failwith("float_of_string")} - function caml_sys_getcwd() - {return caml_string_of_jsbytes(caml_current_dir)} - 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} - var - caml_legacy_custom_code=false, - caml_output_val= - function() - {function Writer(){this.chunk = []} - Writer.prototype - = - {chunk_idx:20, - block_len:0, - obj_counter:0, - size_32:0, - size_64:0, - write: - function(size,value) - {for(var i=size - 8;i >= 0;i -= 8) - this.chunk[this.chunk_idx++] = value >> i & 0xFF}, - write_at: - function(pos,size,value) - {var pos=pos; - for(var i=size - 8;i >= 0;i -= 8) - this.chunk[pos++] = value >> i & 0xFF}, - write_code: - function(size,code,value) - {this.chunk[this.chunk_idx++] = code; - for(var i=size - 8;i >= 0;i -= 8) - this.chunk[this.chunk_idx++] = value >> i & 0xFF}, - write_shared: - function(offset) - {if(offset < 1 << 8) - this.write_code(8,0x04,offset); - else - if(offset < 1 << 16) - this.write_code(16,0x05,offset); - else - this.write_code(32,0x06,offset)}, - pos:function(){return this.chunk_idx}, - finalize: - function() - {this.block_len = this.chunk_idx - 20; - this.chunk_idx = 0; - this.write(32,0x8495A6BE); - this.write(32,this.block_len); - this.write(32,this.obj_counter); - this.write(32,this.size_32); - this.write(32,this.size_64); - return this.chunk}}; - return function(v,flags) - {flags = caml_list_to_js_array(flags); - var - no_sharing=flags.indexOf(0) !== - 1, - closures=flags.indexOf(1) !== - 1; - if(closures) - globalThis.console.warn - ("in caml_output_val: flag Marshal.Closures is not supported."); - var - writer=new Writer(), - stack=[], - intern_obj_table=no_sharing?null:new MlObjectTable(); - function memo(v) - {if(no_sharing)return false; - var existing_offset=intern_obj_table.recall(v); - if(existing_offset) - {writer.write_shared(existing_offset);return true} - else - {intern_obj_table.store(v);return false}} - function extern_rec(v) - {if(v.caml_custom) - {if(memo(v))return; - var - name=v.caml_custom, - ops=caml_custom_ops[name], - sz_32_64=[0,0]; - if(! ops.serialize) - caml_invalid_argument("output_value: abstract value (Custom)"); - if(caml_legacy_custom_code) - {writer.write(8,0x12); - for(var i=0;i < name.length;i++) - writer.write(8,name.charCodeAt(i)); - writer.write(8,0); - ops.serialize(writer,v,sz_32_64)} - else - if(ops.fixed_length == undefined) - {writer.write(8,0x18); - for(var i=0;i < name.length;i++) - writer.write(8,name.charCodeAt(i)); - writer.write(8,0); - var header_pos=writer.pos(); - for(var i=0;i < 12;i++)writer.write(8,0); - ops.serialize(writer,v,sz_32_64); - writer.write_at(header_pos,32,sz_32_64[0]); - writer.write_at(header_pos + 4,32,0); - writer.write_at(header_pos + 8,32,sz_32_64[1])} - else - {writer.write(8,0x19); - for(var i=0;i < name.length;i++) - writer.write(8,name.charCodeAt(i)); - writer.write(8,0); - var old_pos=writer.pos(); - ops.serialize(writer,v,sz_32_64); - if(ops.fixed_length != writer.pos() - old_pos) - caml_failwith - ("output_value: incorrect fixed sizes specified by " + name)} - writer.size_32 += 2 + (sz_32_64[0] + 3 >> 2); - writer.size_64 += 2 + (sz_32_64[1] + 7 >> 3)} - else - if(v instanceof Array && v[0] === (v[0] | 0)) - {if(v[0] == 251) - caml_failwith("output_value: abstract value (Abstract)"); - if(v.length > 1 && memo(v))return; - if(v[0] < 16 && v.length - 1 < 8) - writer.write(8,0x80 + v[0] + (v.length - 1 << 4)); - else - writer.write_code(32,0x08,v.length - 1 << 10 | v[0]); - writer.size_32 += v.length; - writer.size_64 += v.length; - if(v.length > 1)stack.push(v,1)} - else - if(caml_is_ml_bytes(v)) - {if(! caml_is_ml_bytes(caml_string_of_jsbytes(""))) - caml_failwith - ("output_value: [Bytes.t] cannot safely be marshaled with [--enable use-js-string]"); - if(memo(v))return; - var len=caml_ml_bytes_length(v); - if(len < 0x20) - writer.write(8,0x20 + len); - else - if(len < 0x100) - writer.write_code(8,0x09,len); - else - writer.write_code(32,0x0A,len); - for(var i=0;i < len;i++) - writer.write(8,caml_bytes_unsafe_get(v,i)); - writer.size_32 += 1 + ((len + 4) / 4 | 0); - writer.size_64 += 1 + ((len + 8) / 8 | 0)} - else - if(caml_is_ml_string(v)) - {var len=caml_ml_string_length(v); - if(len < 0x20) - writer.write(8,0x20 + len); - else - if(len < 0x100) - writer.write_code(8,0x09,len); - else - writer.write_code(32,0x0A,len); - for(var i=0;i < len;i++) - writer.write(8,caml_string_unsafe_get(v,i)); - writer.size_32 += 1 + ((len + 4) / 4 | 0); - writer.size_64 += 1 + ((len + 8) / 8 | 0)} - else - if(v != (v | 0)) - {var type_of_v=typeof v; - caml_failwith - ("output_value: abstract value (" + type_of_v + ")")} - else - if(v >= 0 && v < 0x40) - writer.write(8,0X40 + v); - else - if(v >= - (1 << 7) && v < 1 << 7) - writer.write_code(8,0x00,v); - else - if(v >= - (1 << 15) && v < 1 << 15) - writer.write_code(16,0x01,v); - else - writer.write_code(32,0x02,v)} - extern_rec(v); - while(stack.length > 0) - {var i=stack.pop(),v=stack.pop(); - if(i + 1 < v.length)stack.push(v,i + 1); - extern_rec(v[i])} - if(intern_obj_table) - writer.obj_counter = intern_obj_table.objs.length; - writer.finalize(); - return writer.chunk}} - (); - function caml_string_of_array(a) - {return caml_string_of_jsbytes(caml_subarray_to_jsbytes(a,0,a.length))} - function caml_output_value_to_string(v,flags) - {return caml_string_of_array(caml_output_val(v,flags))} - function caml_raise_not_a_dir(name) - {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} - 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 deserialize_nat(reader,sz) - {var len=reader.read32s(),nat=new MlNat(len); - for(var i=0;i < len;i++)nat.data[i] = reader.read32s(); - sz[0] = len * 4; - return nat} - function initialize_nat() - {caml_custom_ops["_nat"] - = - {deserialize:deserialize_nat,serialize:serialize_nat,hash:caml_hash_nat}} - 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) - << - 8 - | - b.charCodeAt(j + 2) - << - 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] - << - 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())} - function MlStringReader(s,i) - {this.s = caml_jsbytes_of_string(s);this.i = i} - MlStringReader.prototype - = - {read8u:function(){return this.s.charCodeAt(this.i++)}, - read8s:function(){return this.s.charCodeAt(this.i++) << 24 >> 24}, - read16u: - function() - {var s=this.s,i=this.i; - this.i = i + 2; - return s.charCodeAt(i) << 8 | s.charCodeAt(i + 1)}, - read16s: - function() - {var s=this.s,i=this.i; - this.i = i + 2; - return s.charCodeAt(i) << 24 >> 16 | s.charCodeAt(i + 1)}, - read32u: - function() - {var s=this.s,i=this.i; - this.i = i + 4; - return (s.charCodeAt(i) - << - 24 - | - s.charCodeAt(i + 1) - << - 16 - | - s.charCodeAt(i + 2) - << - 8 - | - s.charCodeAt(i + 3)) - >>> - 0}, - read32s: - function() - {var s=this.s,i=this.i; - this.i = i + 4; - return s.charCodeAt(i) - << - 24 - | - s.charCodeAt(i + 1) - << - 16 - | - s.charCodeAt(i + 2) - << - 8 - | - s.charCodeAt(i + 3)}, - readstr: - function(len) - {var i=this.i; - this.i = i + len; - return caml_string_of_jsbytes(this.s.substring(i,i + len))}}; - function caml_float_of_bytes(a) - {return caml_int64_float_of_bits(caml_int64_of_bytes(a))} - function caml_input_value_from_reader(reader,ofs) - {var - _magic=reader.read32u(), - _block_len=reader.read32u(), - num_objects=reader.read32u(), - _size_32=reader.read32u(), - _size_64=reader.read32u(), - stack=[], - intern_obj_table=num_objects > 0?[]:null, - obj_counter=0; - function intern_rec() - {var code=reader.read8u(); - if(code >= 0x40) - if(code >= 0x80) - {var tag=code & 0xF,size=code >> 4 & 0x7,v=[tag]; - if(size == 0)return v; - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - stack.push(v,size); - return v} - else - return code & 0x3F; - else - if(code >= 0x20) - {var len=code & 0x1F,v=reader.readstr(len); - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - return v} - else - switch(code) - {case 0x00:return reader.read8s(); - case 0x01:return reader.read16s(); - case 0x02:return reader.read32s(); - case 0x03:caml_failwith("input_value: integer too large");break; - case 0x04: - var offset=reader.read8u(); - return intern_obj_table[obj_counter - offset]; - case 0x05: - var offset=reader.read16u(); - return intern_obj_table[obj_counter - offset]; - case 0x06: - var offset=reader.read32u(); - return intern_obj_table[obj_counter - offset]; - case 0x08: - var - header=reader.read32u(), - tag=header & 0xFF, - size=header >> 10, - v=[tag]; - if(size == 0)return v; - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - stack.push(v,size); - return v; - case 0x13: - caml_failwith("input_value: data block too large");break; - case 0x09: - var len=reader.read8u(),v=reader.readstr(len); - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - return v; - case 0x0A: - var len=reader.read32u(),v=reader.readstr(len); - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - return v; - case 0x0C: - var t=new Array(8); - for(var i=0;i < 8;i++)t[7 - i] = reader.read8u(); - var v=caml_float_of_bytes(t); - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - return v; - case 0x0B: - var t=new Array(8); - for(var i=0;i < 8;i++)t[i] = reader.read8u(); - var v=caml_float_of_bytes(t); - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - return v; - case 0x0E: - var len=reader.read8u(),v=new Array(len + 1); - v[0] = 254; - var t=new Array(8); - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - for(var i=1;i <= len;i++) - {for(var j=0;j < 8;j++)t[7 - j] = reader.read8u(); - v[i] = caml_float_of_bytes(t)} - return v; - case 0x0D: - var len=reader.read8u(),v=new Array(len + 1); - v[0] = 254; - var t=new Array(8); - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - for(var i=1;i <= len;i++) - {for(var j=0;j < 8;j++)t[j] = reader.read8u(); - v[i] = caml_float_of_bytes(t)} - return v; - case 0x07: - var len=reader.read32u(),v=new Array(len + 1); - v[0] = 254; - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - var t=new Array(8); - for(var i=1;i <= len;i++) - {for(var j=0;j < 8;j++)t[7 - j] = reader.read8u(); - v[i] = caml_float_of_bytes(t)} - return v; - case 0x0F: - var len=reader.read32u(),v=new Array(len + 1); - v[0] = 254; - var t=new Array(8); - for(var i=1;i <= len;i++) - {for(var j=0;j < 8;j++)t[j] = reader.read8u(); - v[i] = caml_float_of_bytes(t)} - return v; - case 0x10: - case 0x11:caml_failwith("input_value: code pointer");break; - case 0x12: - case 0x18: - case 0x19: - var c,s=""; - while((c = reader.read8u()) != 0)s += String.fromCharCode(c); - var ops=caml_custom_ops[s],expected_size; - if(! ops) - caml_failwith("input_value: unknown custom block identifier"); - switch(code) - {case 0x12:break; - case 0x19: - if(! ops.fixed_length) - caml_failwith - ("input_value: expected a fixed-size custom block"); - expected_size = ops.fixed_length; - break; - case 0x18: - expected_size = reader.read32u(); - reader.read32s(); - reader.read32s(); - break - } - var old_pos=reader.i,size=[0],v=ops.deserialize(reader,size); - if(expected_size != undefined) - if(expected_size != size[0]) - caml_failwith - ("input_value: incorrect length of serialized custom block"); - if(intern_obj_table)intern_obj_table[obj_counter++] = v; - return v; - default:caml_failwith("input_value: ill-formed message")}} - var res=intern_rec(); - while(stack.length > 0) - {var size=stack.pop(),v=stack.pop(),d=v.length; - if(d < size)stack.push(v,size); - v[d] = intern_rec()} - if(typeof ofs != "number")ofs[0] = reader.i; - return res} - function caml_string_of_bytes(s){return s} - function caml_input_value_from_bytes(s,ofs) - {var - reader= - new - MlStringReader - (caml_string_of_bytes(s),typeof ofs == "number"?ofs:ofs[0]); - return caml_input_value_from_reader(reader,ofs)} - function ml_z_mul(z1,z2) - {return ml_z_normalize(bigInt(z1).multiply(bigInt(z2)))} - function ml_z_hamdist(z1,z2) - {if(bigInt(z1).isNegative() != bigInt(z2).isNegative()) - caml_raise_constant(caml_named_value("ml_z_overflow")); - if - ((z1 != (z1 | 0) || z2 != (z2 | 0)) - && - (bigInt(z1).isNegative() || bigInt(z2).isNegative())) - caml_invalid_argument("Z.hamdist: negative arguments"); - return ml_z_popcount(bigInt(z1).xor(bigInt(z2)))} - function caml_string_get(s,i) - {if(i >>> 0 >= caml_ml_string_length(s))caml_string_bound_error(); - return caml_string_unsafe_get(s,i)} - var - re_match= - function() - {var - re_word_letters= - [0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xFF, - 0x03, - 0xFE, - 0xFF, - 0xFF, - 0x87, - 0xFE, - 0xFF, - 0xFF, - 0x07, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xFF, - 0xFF, - 0x7F, - 0xFF, - 0xFF, - 0xFF, - 0x7F, - 0xFF], - opcodes= - {CHAR:0, - CHARNORM:1, - STRING:2, - STRINGNORM:3, - CHARCLASS:4, - BOL:5, - EOL:6, - WORDBOUNDARY:7, - BEGGROUP:8, - ENDGROUP:9, - REFGROUP:10, - ACCEPT:11, - SIMPLEOPT:12, - SIMPLESTAR:13, - SIMPLEPLUS:14, - GOTO:15, - PUSHBACK:16, - SETMARK:17, - CHECKPROGRESS:18}; - function is_word_letter(c) - {return re_word_letters[c >> 3] >> (c & 7) & 1} - function in_bitset(s,i) - {return caml_string_get(s,i >> 3) >> (i & 7) & 1} - function re_match_impl(re,s,pos,partial) - {var - prog=caml_js_from_array(re[1]), - cpool=caml_js_from_array(re[2]), - normtable=caml_jsbytes_of_string(re[3]), - numgroups=re[4] | 0, - numregisters=re[5] | 0, - startchars=re[6] | 0, - s=caml_array_of_string(s), - pc=0, - quit=false, - stack=[], - groups=new Array(numgroups), - re_register=new Array(numregisters); - for(var i=0;i < groups.length;i++)groups[i] = {start:- 1,end:- 1}; - groups[0].start = pos; - function backtrack() - {while(stack.length) - {var item=stack.pop(); - if(item.undo) - item.undo.obj[item.undo.prop] = item.undo.value; - else - if(item.pos){pc = item.pos.pc;pos = item.pos.txt;return}} - quit = true} - function push(item){stack.push(item)} - function accept() - {groups[0].end = pos; - var result=new Array(1 + groups.length * 2); - result[0] = 0; - for(var i=0;i < groups.length;i++) - {var g=groups[i]; - if(g.start < 0 || g.end < 0)g.start = g.end = - 1; - result[2 * i + 1] = g.start; - result[2 * i + 1 + 1] = g.end} - return result} - function prefix_match() - {if(partial)return accept();else backtrack()} - while(! quit) - {var - op=prog[pc] & 0xff, - sarg=prog[pc] >> 8, - uarg=sarg & 0xff, - c=s[pos], - group; - pc++; - switch(op) - {case opcodes.CHAR: - if(pos === s.length){prefix_match();break} - if(c === uarg)pos++;else backtrack(); - break; - case opcodes.CHARNORM: - if(pos === s.length){prefix_match();break} - if(normtable.charCodeAt(c) === uarg)pos++;else backtrack(); - break; - case opcodes.STRING: - for - (var arg=caml_jsbytes_of_string(cpool[uarg]),i=0; - i - < - arg.length; - i++) - {if(pos === s.length){prefix_match();break} - if(c === arg.charCodeAt(i)) - c = s[++pos]; - else - {backtrack();break}} - break; - case opcodes.STRINGNORM: - for - (var arg=caml_jsbytes_of_string(cpool[uarg]),i=0; - i - < - arg.length; - i++) - {if(pos === s.length){prefix_match();break} - if(normtable.charCodeAt(c) === arg.charCodeAt(i)) - c = s[++pos]; - else - {backtrack();break}} - break; - case opcodes.CHARCLASS: - if(pos === s.length){prefix_match();break} - if(in_bitset(cpool[uarg],c))pos++;else backtrack(); - break; - case opcodes.BOL: - if(pos > 0 && s[pos - 1] != 10)backtrack();break; - case opcodes.EOL: - if(pos < s.length && s[pos] != 10)backtrack();break; - case opcodes.WORDBOUNDARY: - if(pos == 0) - {if(pos === s.length){prefix_match();break} - if(is_word_letter(s[0]))break; - backtrack()} - else - if(pos === s.length) - {if(is_word_letter(s[pos - 1]))break;backtrack()} - else - {if(is_word_letter(s[pos - 1]) != is_word_letter(s[pos])) - break; - backtrack()} - break; - case opcodes.BEGGROUP: - group = groups[uarg]; - push({undo:{obj:group,prop:"start",value:group.start}}); - group.start = pos; - break; - case opcodes.ENDGROUP: - group = groups[uarg]; - push({undo:{obj:group,prop:"end",value:group.end}}); - group.end = pos; - break; - case opcodes.REFGROUP: - group = groups[uarg]; - if(group.start < 0 || group.end < 0){backtrack();break} - for(var i=group.start;i < group.end;i++) - {if(pos === s.length){prefix_match();break} - if(s[i] != s[pos]){backtrack();break} - pos++} - break; - case opcodes.SIMPLEOPT:if(in_bitset(cpool[uarg],c))pos++;break; - case opcodes.SIMPLESTAR: - while(in_bitset(cpool[uarg],c))c = s[++pos];break; - case opcodes.SIMPLEPLUS: - if(pos === s.length){prefix_match();break} - if(in_bitset(cpool[uarg],c)) - do c = s[++pos];while(in_bitset(cpool[uarg],c)); - else - backtrack(); - break; - case opcodes.ACCEPT:return accept(); - case opcodes.GOTO:pc = pc + sarg;break; - case opcodes.PUSHBACK:push({pos:{pc:pc + sarg,txt:pos}});break; - case opcodes.SETMARK: - push - ({undo:{obj:re_register,prop:uarg,value:re_register[uarg]}}); - re_register[uarg] = pos; - break; - case opcodes.CHECKPROGRESS: - if(re_register[uarg] === pos)backtrack();break; - default:throw new Error("Invalid bytecode")}} - return 0} - return re_match_impl} - (); - function re_search_backward(re,s,pos) - {if(pos < 0 || pos > caml_ml_string_length(s)) - caml_invalid_argument("Str.search_backward"); - while(pos >= 0){var res=re_match(re,s,pos,0);if(res)return res;pos--} - return [0]} - function ml_z_logand(z1,z2) - {return ml_z_normalize(bigInt(z1).and(bigInt(z2)))} - function caml_js_from_string(s){return caml_jsstring_of_string(s)} - function caml_ba_sub(ba,ofs,len) - {var changed_dim,mul=1; - if(ba.layout == 0) - {for(var i=1;i < ba.dims.length;i++)mul = mul * ba.dims[i]; - changed_dim = 0} - else - {for(var i=0;i < ba.dims.length - 1;i++)mul = mul * ba.dims[i]; - changed_dim = ba.dims.length - 1; - ofs = ofs - 1} - if(ofs < 0 || len < 0 || ofs + len > ba.dims[changed_dim]) - caml_invalid_argument("Bigarray.sub: bad sub-array"); - var new_dims=[]; - for(var i=0;i < ba.dims.length;i++)new_dims[i] = ba.dims[i]; - new_dims[changed_dim] = len; - 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_bytes_set32(s,i,i32) - {if(i >>> 0 >= s.l - 3)caml_bytes_bound_error(); - var - b4=0xFF & i32 >> 24, - b3=0xFF & i32 >> 16, - b2=0xFF & i32 >> 8, - b1=0xFF & i32; - caml_bytes_unsafe_set(s,i + 0,b1); - caml_bytes_unsafe_set(s,i + 1,b2); - caml_bytes_unsafe_set(s,i + 2,b3); - caml_bytes_unsafe_set(s,i + 3,b4); - return 0} - function caml_gr_sigio_signal(){return 0} - function caml_ba_uint8_set32(ba,i0,v) - {var ofs=ba.offset(i0); - if(ofs + 3 >= ba.data.length)caml_array_bound_error(); - ba.set(ofs + 0,v & 0xff); - ba.set(ofs + 1,v >>> 8 & 0xff); - ba.set(ofs + 2,v >>> 16 & 0xff); - ba.set(ofs + 3,v >>> 24 & 0xff); - 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_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(); - s.line_width = w; - s.context.lineWidth = w; - return 0} - function caml_gr_set_font(f) - {var s=caml_gr_state_get(); - s.font = f; - s.context.font = s.text_size + "px " + caml_jsstring_of_string(s.font); - return 0} - function caml_gr_set_color(color) - {var s=caml_gr_state_get(); - function convert(number) - {var str="" + number.toString(16); - while(str.length < 2)str = "0" + str; - return str} - var r=color >> 16 & 0xff,g=color >> 8 & 0xff,b=color >> 0 & 0xff; - s.color = color; - var c_str="#" + convert(r) + convert(g) + convert(b); - s.context.fillStyle = c_str; - s.context.strokeStyle = c_str; - return 0} - function caml_gr_moveto(x,y) - {var s=caml_gr_state_get();s.x = x;s.y = y;return 0} - function caml_gr_resize_window(w,h) - {var s=caml_gr_state_get(); - s.width = w; - s.height = h; - s.canvas.width = w; - s.canvas.height = h; - return 0} - function caml_gr_state_init() - {caml_gr_moveto(caml_gr_state.x,caml_gr_state.y); - caml_gr_resize_window(caml_gr_state.width,caml_gr_state.height); - caml_gr_set_line_width(caml_gr_state.line_width); - caml_gr_set_text_size(caml_gr_state.text_size); - caml_gr_set_font(caml_gr_state.font); - caml_gr_set_color(caml_gr_state.color); - caml_gr_set_window_title(caml_gr_state.title); - 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) - kind = 0; - else - if(ta instanceof g.Float64Array) - kind = 1; - else - if(ta instanceof g.Int8Array) - kind = 2; - else - if(ta instanceof g.Uint8Array) - kind = 3; - else - if(ta instanceof g.Int16Array) - kind = 4; - else - if(ta instanceof g.Uint16Array) - kind = 5; - else - if(ta instanceof g.Int32Array) - kind = 6; - else - if(ta instanceof g.Uint32Array) - kind = 6; - else - caml_invalid_argument - ("caml_ba_kind_of_typed_array: unsupported kind"); - return kind} - 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_js_typeof(o){return typeof o} - function caml_restore_raw_backtrace(exn,bt){return 0} - function caml_gr_lineto(x,y) - {var s=caml_gr_state_get(); - s.context.beginPath(); - s.context.moveTo(s.x,s.height - s.y); - s.context.lineTo(x,s.height - y); - s.context.stroke(); - s.x = x; - s.y = y; - return 0} - function caml_js_wrap_meth_callback_unsafe(f) - {return function() - {var len=arguments.length,args=new Array(len + 1); - args[0] = this; - for(var i=0;i < len;i++)args[i + 1] = arguments[i]; - return f.apply(null,args)}} - function caml_ba_dim_3(ba){return caml_ba_dim(ba,2)} - function caml_is_special_exception(exn) - {switch(exn[2]){case - 8:case - 11:case - 12:return 1;default:return 0}} - function caml_format_exception(exn) - {var r=""; - if(exn[0] == 0) - {r += exn[1][1]; - if - (exn.length - == - 3 - && - exn[2][0] - == - 0 - && - caml_is_special_exception(exn[1])) - var bucket=exn[2],start=1; - else - var start=2,bucket=exn; - r += "("; - for(var i=start;i < bucket.length;i++) - {if(i > start)r += ", "; - var v=bucket[i]; - if(typeof v == "number") - r += v.toString(); - else - if(v instanceof MlBytes) - r += '"' + v.toString() + '"'; - else - if(typeof v == "string") - r += '"' + v.toString() + '"'; - else - r += "_"} - r += ")"} - else - if(exn[0] == 248)r += exn[1]; - return r} - function caml_fatal_uncaught_exception(err) - {if(err instanceof Array && (err[0] == 0 || err[0] == 248)) - {var handler=caml_named_value("Printexc.handle_uncaught_exception"); - if(handler) - handler(err,false); - else - {var - 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")}} - 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) - {if(i >>> 0 >= s.l - 1)caml_bytes_bound_error(); - var b1=caml_bytes_unsafe_get(s,i),b2=caml_bytes_unsafe_get(s,i + 1); - 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_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_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_atanh_float(x){return Math.atanh(x)} - 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)} - 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_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){}} - 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_array_append(a1,a2) - {var l1=a1.length,l2=a2.length,l=l1 + l2 - 1,a=new Array(l); - a[0] = 0; - var i=1,j=1; - for(;i < l1;i++)a[i] = a1[i]; - for(;i < l;i++,j++)a[i] = a2[j]; - return a} - function caml_ml_set_channel_refill(chanid,f) - {caml_ml_channels[chanid].refill = f;return 0} - function ml_z_nextprime(z1) - {z1 = bigInt(z1); - var one=bigInt(1),two=bigInt(2); - if(z1.lt(one) || z1.equals(one))return 2; - if(z1.and(one).equals(one))z1 = z1.add(two);else z1 = z1.add(one); - while(true) - if(z1.isProbablePrime(25)) - return ml_z_normalize(z1); - else - z1 = z1.add(two)} - function caml_js_expr(s) - {js_print_stderr("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) - {return ml_z_normalize(bigInt(z1).subtract(bigInt(z2)))} - function ml_z_fdiv(z1,z2) - {var z1_pos=ml_z_sign(z1),z2_pos=ml_z_sign(z2); - if(z1_pos * z2_pos < 0) - if(! bigInt(z1).mod(bigInt(z2)).equals(bigInt(0))) - return ml_z_sub(ml_z_div(z1,z2),bigInt(1)); - return ml_z_div(z1,z2)} - function ml_z_to_bits(z1) - {z1 = bigInt(z1).abs(); - var res=""; - while(! z1.equals(bigInt(0))) - {res += String.fromCharCode(z1.mod(bigInt(256))); - z1 = z1.divide(bigInt(256))} - while(res.length % 4 != 0)res += String.fromCharCode(0); - return caml_string_of_jsbytes(res)} - function caml_output_value_to_bytes(v,flags) - {return caml_bytes_of_array(caml_output_val(v,flags))} - function caml_eventlog_resume(unit){return 0} - function caml_hash_univ_param(count,limit,obj) - {var hash_accu=0; - function hash_aux(obj) - {limit--; - if(count < 0 || limit < 0)return; - if(obj instanceof Array && obj[0] === (obj[0] | 0)) - switch(obj[0]) - {case 248:count--;hash_accu = hash_accu * 65599 + obj[2] | 0;break; - case 250:limit++;hash_aux(obj);break; - default: - count--; - hash_accu = hash_accu * 19 + obj[0] | 0; - for(var i=obj.length - 1;i > 0;i--)hash_aux(obj[i])} - else - if(caml_is_ml_bytes(obj)) - {count--; - var content=caml_ml_bytes_content(obj); - if(typeof content === "string") - for(var b=content,l=b.length,i=0;i < l;i++) - hash_accu = hash_accu * 19 + b.charCodeAt(i) | 0; - else - for(var a=content,l=a.length,i=0;i < l;i++) - hash_accu = hash_accu * 19 + a[i] | 0} - else - if(caml_is_ml_string(obj)) - {var jsbytes=caml_jsbytes_of_string(obj); - for(var b=jsbytes,l=jsbytes.length,i=0;i < l;i++) - hash_accu = hash_accu * 19 + b.charCodeAt(i) | 0} - else - if(typeof obj === "string") - for(var b=obj,l=obj.length,i=0;i < l;i++) - hash_accu = hash_accu * 19 + b.charCodeAt(i) | 0; - else - if(obj === (obj | 0)) - {count--;hash_accu = hash_accu * 65599 + obj | 0} - else - if(obj === + obj) - {count--; - var p=caml_int64_to_bytes(caml_int64_bits_of_float(obj)); - for(var i=7;i >= 0;i--)hash_accu = hash_accu * 19 + p[i] | 0} - else - if(obj && obj.caml_custom) - if - (caml_custom_ops[obj.caml_custom] - && - caml_custom_ops[obj.caml_custom].hash) - {var h=caml_custom_ops[obj.caml_custom].hash(obj) | 0; - hash_accu = hash_accu * 65599 + h | 0}} - hash_aux(obj); - return hash_accu & 0x3FFFFFFF} - function caml_string_equal(s1,s2){return caml_bytes_equal(s1,s2)} - 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); - if(t.length > len)caml_failwith("Marshal.to_buffer: buffer overflow"); - caml_blit_bytes(t,0,s,ofs,t.length); - return 0} - function re_replacement_text(repl,groups,orig) - {var - repl=caml_jsbytes_of_string(repl), - len=repl.length, - orig=caml_jsbytes_of_string(orig), - res="", - n=0, - cur, - start, - end, - c; - while(n < len) - {cur = repl.charAt(n++); - if(cur != "\\") - res += cur; - else - {if(n == len) - caml_failwith("Str.replace: illegal backslash sequence"); - cur = repl.charAt(n++); - switch(cur) - {case "\\":res += cur;break; - case "0": - case "1": - case "2": - case "3": - case "4": - case "5": - case "6": - case "7": - case "8": - case "9": - c = + cur; - if(c * 2 >= groups.length - 1) - caml_failwith("Str.replace: reference to unmatched group"); - start = caml_array_get(groups,c * 2); - end = caml_array_get(groups,c * 2 + 1); - if(start == - 1) - caml_failwith("Str.replace: reference to unmatched group"); - res += orig.slice(start,end); - break; - 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"); - return eval(caml_jsstring_of_string(s))} - 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 - ("caml_bigstring_blit_string_to_ba: kind mismatch"); - if(len == 0)return 0; - var ofs1=ba1.offset(pos1); - if(ofs1 + len > ba1.data.length)caml_array_bound_error(); - if(pos2 + len > caml_ml_bytes_length(bytes2))caml_array_bound_error(); - var slice=ba1.data.slice(ofs1,ofs1 + len); - caml_blit_bytes(caml_bytes_of_array(slice),0,bytes2,pos2,len); - return 0} - 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) - {if(globalThis.jsoo_create_file) - globalThis.jsoo_create_file(name,content); - else - {if(! globalThis.caml_fs_tmp)globalThis.caml_fs_tmp = []; - globalThis.caml_fs_tmp.push({name:name,content:content})} - return 0} - 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 re_search_forward(re,s,pos) - {if(pos < 0 || pos > caml_ml_string_length(s)) - caml_invalid_argument("Str.search_forward"); - while(pos <= caml_ml_string_length(s)) - {var res=re_match(re,s,pos,0);if(res)return res;pos++} - return [0]} - var caml_blit_string_to_bigstring=caml_bigstring_blit_string_to_ba; - function caml_make_vect(len,init) - {if(len < 0)caml_array_bound_error(); - var len=len + 1 | 0,b=new Array(len); - 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_sys_read_directory(name) - {var - root=resolve_fs_device(name), - a=root.device.readdir(root.rest), - l=new Array(a.length + 1); - l[0] = 0; - for(var i=0;i < a.length;i++)l[i + 1] = caml_string_of_jsbytes(a[i]); - return l} - function caml_ml_output_char(chanid,c) - {var s=caml_string_of_jsbytes(String.fromCharCode(c)); - caml_ml_output(chanid,s,0,1); - 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 - ('caml_js_var: "' - + - x - + - '" is not a valid JavaScript variable. continuing ..'); - return eval(x)} - function caml_trunc_float(x){return Math.trunc(x)} - function caml_zarith_marshal(writer,v,sz) - {v = bigInt(v); - var bits=v.toArray(Math.pow(2,32)); - writer.write(8,bits.isNegative?1:0); - var block=bits.value.length,len=block * 4; - writer.write(32,len); - for(var i=block - 1;i >= 0;i--) - {writer.write(8,bits.value[i] >>> 0 & 0xff); - writer.write(8,bits.value[i] >>> 8 & 0xff); - writer.write(8,bits.value[i] >>> 16 & 0xff); - 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_blit_data(src,dst) - {dst[caml_ephe_data_offset] = src[caml_ephe_data_offset];return 0} - function caml_is_printable(c){return + (c > 31 && c < 127)} - 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)) - caml_invalid_argument("Str.partial_match"); - var res=re_match(re,s,pos,1); - return res?res:[0]} - function caml_sys_random_seed() - {if(globalThis.crypto) - if(typeof globalThis.crypto.getRandomValues === "function") - {var a=new (globalThis.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); - 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} - 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_js_delete(o,f){delete o[f];return 0} - function caml_int_of_string(s) - {var - r=caml_parse_sign_and_base(s), - i=r[0], - sign=r[1], - base=r[2], - len=caml_ml_string_length(s), - threshold=- 1 >>> 0, - c=i < len?caml_string_unsafe_get(s,i):0, - d=caml_parse_digit(c); - if(d < 0 || d >= base)caml_failwith("int_of_string"); - var res=d; - for(i++;i < len;i++) - {c = caml_string_unsafe_get(s,i); - if(c == 95)continue; - d = caml_parse_digit(c); - if(d < 0 || d >= base)break; - res = base * res + d; - if(res > threshold)caml_failwith("int_of_string")} - if(i != len)caml_failwith("int_of_string"); - res = sign * res; - if(base == 10 && (res | 0) != res)caml_failwith("int_of_string"); - return res | 0} - function caml_list_mount_point() - {var prev=0; - for(var i=0;i < jsoo_mount_point.length;i++) - {var old=prev; - prev = [0,caml_string_of_jsbytes(jsoo_mount_point[i].path),old]} - return prev} - var - caml_marshal_constants= - {PREFIX_SMALL_BLOCK:0x80, - PREFIX_SMALL_INT:0x40, - PREFIX_SMALL_STRING:0x20, - CODE_INT8:0x00, - CODE_INT16:0x01, - CODE_INT32:0x02, - CODE_INT64:0x03, - CODE_SHARED8:0x04, - CODE_SHARED16:0x05, - CODE_SHARED32:0x06, - CODE_BLOCK32:0x08, - CODE_BLOCK64:0x13, - CODE_STRING8:0x09, - CODE_STRING32:0x0A, - CODE_DOUBLE_BIG:0x0B, - CODE_DOUBLE_LITTLE:0x0C, - CODE_DOUBLE_ARRAY8_BIG:0x0D, - CODE_DOUBLE_ARRAY8_LITTLE:0x0E, - CODE_DOUBLE_ARRAY32_BIG:0x0F, - CODE_DOUBLE_ARRAY32_LITTLE:0x07, - CODE_CODEPOINTER:0x10, - CODE_INFIXPOINTER:0x11, - CODE_CUSTOM:0x12, - CODE_CUSTOM_LEN:0x18, - 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 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) - {while(a1 > a2)a2 += 360; - a1 /= 180; - a2 /= 180; - var - rot=0, - xPos, - yPos, - xPos_prev, - yPos_prev, - space=2, - num=(a2 - a1) * Math.PI * ((rx + ry) / 2) / space | 0, - delta=(a2 - a1) * Math.PI / num, - i=a1 * Math.PI; - for(var j=0;j <= num;j++) - {xPos - = - cx - - - rx - * - Math.sin(i) - * - Math.sin(rot * Math.PI) - + - ry - * - Math.cos(i) - * - Math.cos(rot * Math.PI); - xPos = xPos.toFixed(2); - yPos - = - cy - + - ry - * - Math.cos(i) - * - Math.sin(rot * Math.PI) - + - rx - * - Math.sin(i) - * - Math.cos(rot * Math.PI); - yPos = yPos.toFixed(2); - if(j == 0) - ctx.moveTo(xPos,yPos); - else - if(xPos_prev != xPos || yPos_prev != yPos)ctx.lineTo(xPos,yPos); - xPos_prev = xPos; - yPos_prev = yPos; - i -= delta} - return 0} - function caml_gr_fill_arc(x,y,rx,ry,a1,a2) - {var s=caml_gr_state_get(); - s.context.beginPath(); - caml_gr_arc_aux(s.context,x,s.height - y,rx,ry,a1,a2); - s.context.fill(); - return 0} - function caml_ba_slice(ba,vind) - {vind = caml_js_from_array(vind); - var num_inds=vind.length,index=[],sub_dims=[],ofs; - if(num_inds > ba.dims.length) - caml_invalid_argument("Bigarray.slice: too many indices"); - if(ba.layout == 0) - {for(var i=0;i < num_inds;i++)index[i] = vind[i]; - for(;i < ba.dims.length;i++)index[i] = 0; - sub_dims = ba.dims.slice(num_inds)} - else - {for(var i=0;i < num_inds;i++) - index[ba.dims.length - num_inds + i] = vind[i]; - for(var i=0;i < ba.dims.length - num_inds;i++)index[i] = 1; - sub_dims = ba.dims.slice(0,ba.dims.length - num_inds)} - ofs = ba.offset(index); - var - size=caml_ba_get_size(sub_dims), - size_per_element=caml_ba_get_size_per_element(ba.kind), - new_data= - ba.data.subarray - (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) - {case 1:return f(); - case 2:return f(a[1]); - case 3:return f(a[1],a[2]); - case 4:return f(a[1],a[2],a[3]); - case 5:return f(a[1],a[2],a[3],a[4]); - case 6:return f(a[1],a[2],a[3],a[4],a[5]); - case 7:return f(a[1],a[2],a[3],a[4],a[5],a[6]); - case 8:return f(a[1],a[2],a[3],a[4],a[5],a[6],a[7]) - } - return f.apply(null,caml_js_from_array(a))} - function caml_gc_major_slice(work){return 0} - function ml_z_invert(a,n) - {a = bigInt(a); - n = bigInt(n); - var zero=bigInt(0),one=bigInt(1); - if(n.abs().equals(one))return 0; - if(n.equals(zero) && a.abs().equals(one))return a; - if(n.equals(zero) || a.equals(zero))caml_raise_zero_divide(); - var - x=ml_z_gcdext_intern(a,n), - r=bigInt(x[2]), - tmp=bigInt(a).multiply(r).mod(n); - if(tmp.lt(zero))tmp = tmp.add(n.abs()); - if(r.lt(zero))r = r.add(n.abs()); - if(tmp.equals(one))return ml_z_normalize(r); - caml_raise_zero_divide()} - function ml_z_powm(z1,z2,z3) - {var zero=bigInt(0),one=bigInt(1); - z1 = bigInt(z1); - z2 = bigInt(z2); - z3 = bigInt(z3); - if(z3.equals(zero))caml_raise_zero_divide(); - if(z3.abs().equals(one))return 0; - if(z2.equals(zero))return 1; - if(z2.lt(0)) - {var inv=bigInt(ml_z_invert(z1,z3)),r=inv.modPow(z2.negate(),z3); - if(r.lt(zero))r = r.add(z3.abs()); - return ml_z_normalize(r)} - else - {var r=bigInt(z1).modPow(z2,z3); - if(r.lt(zero))r = r.add(z3.abs()); - return ml_z_normalize(r)}} - function ml_z_powm_sec(z1,z2,z3) - {z3 = bigInt(z3).abs(); - var one=bigInt(1); - if(bigInt(z2).lt(one)) - caml_invalid_argument("Z.powm_sec: exponent must be positive"); - if(! bigInt(z3).and(one).equals(one)) - caml_invalid_argument("Z.powm_sec: modulus must be odd"); - return ml_z_powm(z1,z2,z3)} - function caml_js_pure_expr(f){return f()} - function compare_digits_nat(nat1,ofs1,nat2,ofs2) - {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_gr_wait_event(_evl) - {caml_failwith - ("caml_gr_wait_event not Implemented: use Graphics_js instead")} - function caml_gr_sigio_handler(){return 0} - 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_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_ml_out_channels_list() - {var l=0; - for(var c=0;c < caml_ml_channels.length;c++) - if - (caml_ml_channels[c] - && - caml_ml_channels[c].opened - && - caml_ml_channels[c].out) - l = [0,caml_ml_channels[c].fd,l]; - return l} - function caml_asinh_float(x){return Math.asinh(x)} - function ml_z_hash(z1) - {var a=bigInt(z1).toArray(Math.pow(2,32)),acc=0; - for(var i=0;i < a.value.length;i++) - acc = caml_hash_mix_int(acc,a.value[i]); - if(a.value.length % 2 != 0)acc = caml_hash_mix_int(acc,0); - if(a.isNegative)acc = acc + 1; - return acc | 0} - function bigstring_of_array_buffer(ab) - {var ta=new (globalThis.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 re_string_match(re,s,pos) - {if(pos < 0 || pos > caml_ml_string_length(s)) - caml_invalid_argument("Str.string_match"); - var res=re_match(re,s,pos,0); - return res?res:[0]} - function BigStringReader(bs,i){this.s = bs;this.i = i} - BigStringReader.prototype - = - {read8u:function(){return caml_ba_get_1(this.s,this.i++)}, - read8s:function(){return caml_ba_get_1(this.s,this.i++) << 24 >> 24}, - read16u: - function() - {var s=this.s,i=this.i; - this.i = i + 2; - return caml_ba_get_1(s,i) << 8 | caml_ba_get_1(s,i + 1)}, - read16s: - function() - {var s=this.s,i=this.i; - this.i = i + 2; - return caml_ba_get_1(s,i) << 24 >> 16 | caml_ba_get_1(s,i + 1)}, - read32u: - function() - {var s=this.s,i=this.i; - this.i = i + 4; - return (caml_ba_get_1(s,i) - << - 24 - | - caml_ba_get_1(s,i + 1) - << - 16 - | - caml_ba_get_1(s,i + 2) - << - 8 - | - caml_ba_get_1(s,i + 3)) - >>> - 0}, - read32s: - function() - {var s=this.s,i=this.i; - this.i = i + 4; - return caml_ba_get_1(s,i) - << - 24 - | - caml_ba_get_1(s,i + 1) - << - 16 - | - caml_ba_get_1(s,i + 2) - << - 8 - | - caml_ba_get_1(s,i + 3)}, - readstr: - function(len) - {var i=this.i,arr=new Array(len); - for(var j=0;j < len;j++)arr[j] = caml_ba_get_1(this.s,i + j); - this.i = i + len; - return caml_string_of_array(arr)}}; - function caml_gr_dump_image(im) - {var data=[0]; - for(var i=0;i < im.height;i++) - {data[i + 1] = [0]; - for(var j=0;j < im.width;j++) - {var - o=i * (im.width * 4) + j * 4, - r=im.data[o + 0], - g=im.data[o + 1], - b=im.data[o + 2]; - data[i + 1][j + 1] = (r << 16) + (g << 8) + b}} - return data} - function caml_ba_get_generic(ba,i) - {var ofs=ba.offset(caml_js_from_array(i));return ba.get(ofs)} - function caml_get_exception_backtrace(){return 0} - function caml_format_float(fmt,x) - {function toFixed(x,dp) - {if(Math.abs(x) < 1.0) - return x.toFixed(dp); - else - {var e=parseInt(x.toString().split("+")[1]); - if(e > 20) - {e -= 20; - x /= Math.pow(10,e); - x += new Array(e + 1).join("0"); - if(dp > 0)x = x + "." + new Array(dp + 1).join("0"); - return x} - else - return x.toFixed(dp)}} - var s,f=caml_parse_format(fmt),prec=f.prec < 0?6:f.prec; - if(x < 0 || x == 0 && 1 / x == - Infinity){f.sign = - 1;x = - x} - if(isNaN(x)) - {s = "nan";f.filler = " "} - else - if(! isFinite(x)) - {s = "inf";f.filler = " "} - else - switch(f.conv) - {case "e": - var s=x.toExponential(prec),i=s.length; - if(s.charAt(i - 3) == "e") - s = s.slice(0,i - 1) + "0" + s.slice(i - 1); - break; - case "f":s = toFixed(x,prec);break; - case "g": - prec = prec?prec:1; - s = x.toExponential(prec - 1); - var j=s.indexOf("e"),exp=+ s.slice(j + 1); - if(exp < - 4 || x >= 1e21 || x.toFixed(0).length > prec) - {var i=j - 1; - while(s.charAt(i) == "0")i--; - if(s.charAt(i) == ".")i--; - s = s.slice(0,i + 1) + s.slice(j); - i = s.length; - if(s.charAt(i - 3) == "e") - s = s.slice(0,i - 1) + "0" + s.slice(i - 1); - break} - else - {var p=prec; - if(exp < 0) - {p -= exp + 1;s = x.toFixed(p)} - else - while(s = x.toFixed(p),s.length > prec + 1)p--; - if(p) - {var i=s.length - 1; - while(s.charAt(i) == "0")i--; - if(s.charAt(i) == ".")i--; - s = s.slice(0,i + 1)}} - break - } - return caml_finish_formatting(f,s)} - function caml_mount_autoload(name,f) - {var path=caml_make_path(name),name=caml_trailing_slash(path.join("/")); - jsoo_mount_point.push({path:name,device:new MlFakeDevice(name,f)}); - return 0} - function ml_z_equal(z1,z2){return bigInt(z1).equals(bigInt(z2))?1:0} - function ml_z_fits_int64(z1) - {z1 = bigInt(z1); - return z1.compare(bigInt("9223372036854775807")) - <= - 0 - && - z1.compare(bigInt("-9223372036854775808")) - >= - 0 - ?1 - :0} - function caml_bigstring_blit_ba_to_ba(ba1,pos1,ba2,pos2,len) - {if(12 != ba1.kind) - caml_invalid_argument("caml_bigstring_blit_ba_to_ba: kind mismatch"); - if(12 != ba2.kind) - caml_invalid_argument("caml_bigstring_blit_ba_to_ba: kind mismatch"); - if(len == 0)return 0; - var ofs1=ba1.offset(pos1),ofs2=ba2.offset(pos2); - if(ofs1 + len > ba1.data.length)caml_array_bound_error(); - if(ofs2 + len > ba2.data.length)caml_array_bound_error(); - var slice=ba1.data.subarray(ofs1,ofs1 + len); - ba2.data.set(slice,pos2); - return 0} - var caml_blit_bigstring_to_bigstring=caml_bigstring_blit_ba_to_ba; - function ml_z_sqrt_rem(z) - {z = bigInt(z); - var zero=bigInt(0); - if(z.lt(zero)) - caml_invalid_argument("Z.sqrt_rem: square root of a negative number"); - var - root=bigInt(ml_z_root(z,2)), - mul=root.multiply(root), - diff=z.subtract(mul); - return [0,ml_z_normalize(root),ml_z_normalize(diff)]} - function caml_string_lessthan(s1,s2){return caml_bytes_lessthan(s1,s2)} - function caml_string_greaterthan(s1,s2) - {return caml_string_lessthan(s2,s1)} - function caml_div(x,y) - {if(y == 0)caml_raise_zero_divide();return x / y | 0} - function caml_ephe_get_data_copy(x) - {return x[caml_ephe_data_offset] === undefined - ?0 - :[0,caml_obj_dup(x[caml_ephe_data_offset])]} - function caml_memprof_start(rate,stack_size,tracker){return 0} - function ml_z_perfect_square(z) - {z = bigInt(z); - if(z.lt(bigInt(0)))return 0; - 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_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_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)} - function caml_register_global(n,v,name_opt) - {if(name_opt && globalThis.toplevelReloc) - n = globalThis.toplevelReloc(name_opt); - caml_global_data[n + 1] = v; - if(name_opt)caml_global_data[name_opt] = v} - function mult_nat(nat1,ofs1,len1,nat2,ofs2,len2,nat3,ofs3,len3) - {var carry=0; - for(var i=0;i < len3;i++) - carry - += - mult_digit_nat(nat1,ofs1 + i,len1 - i,nat2,ofs2,len2,nat3,ofs3 + i); - return carry} - function square_nat(nat1,ofs1,len1,nat2,ofs2,len2) - {var carry=0; - carry += add_nat(nat1,ofs1,len1,nat1,ofs1,len1,0); - carry += mult_nat(nat1,ofs1,len1,nat2,ofs2,len2,nat2,ofs2,len2); - return carry} - function caml_js_from_float(x){return x} - function caml_floatarray_create(len) - {if(len < 0)caml_array_bound_error(); - var len=len + 1 | 0,b=new Array(len); - b[0] = 254; - for(var i=1;i < len;i++)b[i] = 0; - return b} - function caml_gc_stat(){return [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} - function caml_get_major_credit(n){return 0} - function caml_sys_modify_argv(arg){caml_argv = arg;return 0} - var caml_method_cache=[]; - function caml_get_public_method(obj,tag,cacheid) - {var meths=obj[1],ofs=caml_method_cache[cacheid]; - if(ofs === undefined) - for(var i=caml_method_cache.length;i < cacheid;i++) - caml_method_cache[i] = 0; - else - if(meths[ofs] === tag)return meths[ofs - 1]; - var li=3,hi=meths[1] * 2 + 1,mi; - while(li < hi) - {mi = li + hi >> 1 | 1;if(tag < meths[mi + 1])hi = mi - 2;else li = mi} - caml_method_cache[cacheid] = li + 1; - return tag == meths[li + 1]?meths[li]:0} - function caml_js_get_console() - {var - c=globalThis.console?globalThis.console:{}, - m= - ["log", - "debug", - "info", - "warn", - "error", - "assert", - "dir", - "dirxml", - "trace", - "group", - "groupCollapsed", - "groupEnd", - "time", - "timeEnd"]; - function f(){} - for(var i=0;i < m.length;i++)if(! c[m[i]])c[m[i]] = f; - 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 - channel= - {file:data.file, - offset:data.offset, - fd:fd, - opened:true, - out:false, - refill:refill}; - caml_ml_channels[channel.fd] = channel; - return channel.fd} - function bigstring_of_typed_array(ba) - {var - ta= - new - (globalThis.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)} - function ml_z_of_bits(z1) - {var r=bigInt.zero,base1=bigInt(256),base=bigInt.one; - for(var i=0;i < caml_ml_string_length(z1);i++) - {var d=caml_string_unsafe_get(z1,i); - 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(); - case 1:return new c(a[0]); - case 2:return new c(a[0],a[1]); - case 3:return new c(a[0],a[1],a[2]); - case 4:return new c(a[0],a[1],a[2],a[3]); - case 5:return new c(a[0],a[1],a[2],a[3],a[4]); - case 6:return new c(a[0],a[1],a[2],a[3],a[4],a[5]); - case 7:return new c(a[0],a[1],a[2],a[3],a[4],a[5],a[6]) - } - function F(){return c.apply(this,a)} - F.prototype = c.prototype; - return new F()} - function complement_nat(nat,ofs,len) - {for(var i=0;i < len;i++) - 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_js_regexps={amp:/&/g,lt:/ 1023) - {exp -= 1023; - x *= Math.pow(2,1023); - if(exp > 1023){exp -= 1023;x *= Math.pow(2,1023)}} - if(exp < - 1023){exp += 1023;x *= Math.pow(2,- 1023)} - x *= Math.pow(2,exp); - return x} - function caml_gr_state_set(ctx) - {caml_gr_state = ctx;caml_gr_state_init();return 0} - function caml_zarith_unmarshal(reader,sz) - {var negate; - switch(reader.read8u()) - {case 1:negate = true;break; - case 0:negate = false;break; - default:caml_failwith("input_value: z (malformed input)")} - var len=reader.read32u(),x=bigInt(0); - for(var i=0;i < len / 4;i++) - {var y=bigInt(reader.read8u()); - y = y.add(reader.read8u() << 8); - y = y.add(reader.read8u() << 16); - y = y.add(reader.read8u() << 24 >>> 0); - x = y.shiftLeft(i * 32).add(x)} - if(negate)x = x.negate(); - sz[0] = len + 4; - return ml_z_normalize(x)} - function ml_z_trailing_zeros(z) - {z = bigInt(z).abs(); - var zero=bigInt(0),one=bigInt(1); - if(z.equals(zero))return 0x7fffffff; - var i=0; - z = z.xor(z.prev()).shiftRight(1); - for(i = 0;! z.equals(bigInt.zero);i++)z = z.shiftRight(1); - return i} - function caml_js_wrap_callback_strict(arity,f) - {return function() - {var n=arguments.length; - if(n == arity && f.length == arity)return f.apply(null,arguments); - var args=new Array(arity),len=Math.min(arguments.length,arity); - for(var i=0;i < len;i++)args[i] = arguments[i]; - return caml_call_gen(f,args)}} - function caml_gc_minor_words(unit){return 0} - function caml_ba_set_1(ba,i0,v){ba.set(ba.offset(i0),v);return 0} - function caml_get_current_callstack(){return [0]} - function land_digit_nat(nat1,ofs1,nat2,ofs2) - {nat1.data[ofs1] &= nat2.data[ofs2];return 0} - function caml_int64_mod(x,y){return x.mod(y)} - function unix_readlink(name) - {var root=resolve_fs_device(name); - if(! root.device.readlink) - caml_failwith("unix_readlink: not implemented"); - return root.device.readlink(root.rest,true)} - function caml_obj_set_tag(x,tag){x[0] = tag;return 0} - function caml_int32_bswap(x) - {return (x & 0x000000FF) - << - 24 - | - (x & 0x0000FF00) - << - 8 - | - (x & 0x00FF0000) - >>> - 8 - | - (x & 0xFF000000) - >>> - 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) - {n = bigInt(n); - k = bigInt(k); - if(k.leq(bigInt(0)) || k.mod(bigInt(2)).neq(bigInt(1))) - caml_invalid_argument("Z.jacobi: second argument is negative or even"); - n = n.mod(k); - if(n.lt(bigInt(0)))n = n.add(k); - var t=1; - while(! n.equals(bigInt(0))) - {while(n.isDivisibleBy(bigInt(2))) - {n = n.divide(bigInt(2)); - var r=k.mod(bigInt(8)); - if(r.equals(bigInt(3)) || r.equals(bigInt(5)))t = - t} - var n1=n,k1=k; - n = k1; - k = n1; - if - (n.mod(bigInt(4)).equals(bigInt(3)) - && - k.mod(bigInt(4)).equals(bigInt(3))) - t = - t; - n = n.mod(k)} - return k.equals(bigInt(1))?t:0} - function ml_z_legendre(a,b){return ml_z_jacobi(a,b)} - function caml_js_instanceof(o,c){return o instanceof c?1:0} - function caml_get_major_bucket(n){return 0} - var caml_blit_bigstring_to_string=caml_bigstring_blit_ba_to_bytes; - function set_digit_nat_native(nat,ofs,digit) - {nat.data[ofs] = digit;return 0} - function nth_digit_nat_native(nat,ofs){return nat.data[ofs]} - function caml_string_set64(s,i,i64){return caml_bytes_set64(s,i,i64)} - function caml_gr_state_create(canvas,w,h) - {var context=canvas.getContext("2d"); - return {context:context, - canvas:canvas, - x:0, - y:0, - width:w, - height:h, - line_width:1, - font:caml_string_of_jsbytes("fixed"), - text_size:26, - color:0x000000, - title:caml_string_of_jsbytes("")}} - function caml_js_wrap_callback(f) - {return function() - {var len=arguments.length; - if(len > 0) - {var args=new Array(len); - for(var i=0;i < len;i++)args[i] = arguments[i]; - return caml_call_gen(f,args)} - else - return caml_call_gen(f,[undefined])}} - function caml_gr_draw_arc(x,y,rx,ry,a1,a2) - {var s=caml_gr_state_get(); - s.context.beginPath(); - caml_gr_arc_aux(s.context,x,s.height - y,rx,ry,a1,a2); - s.context.stroke(); - return 0} - function caml_ba_map_file(vfd,kind,layout,shared,dims,pos) - {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 - ("caml_ba_create_from: use return caml_ba_create_unsafe"); - return caml_ba_create_unsafe(kind,layout,dims,data1)} - function caml_tanh_float(x){return Math.tanh(x)} - function caml_gr_draw_str(str) - {var s=caml_gr_state_get(),m=s.context.measureText(str),dx=m.width; - s.context.fillText(str,s.x,s.height - s.y); - s.x += dx | 0; - return 0} - function caml_gr_draw_string(str) - {caml_gr_draw_str(caml_jsstring_of_string(str));return 0} - function ml_z_primorial(a) - {var one=bigInt(1),two=bigInt(2),z1=one,res=one; - a = bigInt(a); - while(z1.leq(a)) - {if(z1.isProbablePrime(25))res = res.multiply(z1); - if(z1.equals(one) || z1.equals(two)) - z1 = z1.add(one); - else - z1 = z1.add(two)} - return ml_z_normalize(res)} - function caml_gr_draw_char(c) - {caml_gr_draw_str(String.fromCharCode(c));return 0} - function caml_unmount(name) - {var - path=caml_make_path(name), - name=caml_trailing_slash(path.join("/")), - idx=- 1; - for(var i=0;i < jsoo_mount_point.length;i++) - if(jsoo_mount_point[i].path == name)idx = i; - if(idx > - 1)jsoo_mount_point.splice(idx,1); - return 0} - function ml_z_fib(i) - {if(i < 0)caml_invalid_argument("Z.fib: negative arguments"); - if(i == 0 || i == 1)return i; - var a=bigInt(0),b=bigInt(1); - for(var k=1;k < i;k++){var b2=b;b = a.add(b);a = b2} - return ml_z_normalize(b)} - function caml_input_value_from_string(s,ofs) - {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)} - function caml_gr_draw_image(im,x,y) - {var s=caml_gr_state_get(); - if(! im.image) - {var canvas=document.createElement("canvas"); - canvas.width = s.width; - canvas.height = s.height; - canvas.getContext("2d").putImageData(im,0,0); - var image=new (globalThis.Image)(); - image.onload - = - function() - {s.context.drawImage(image,x,s.height - im.height - y); - im.image = image}; - image.src = canvas.toDataURL("image/png")} - else - s.context.drawImage(im.image,x,s.height - im.height - y); - return 0} - function caml_register_channel_for_spacetime(_channel){return 0} - function caml_string_set(s,i,c) - {if(i >>> 0 >= s.l)caml_string_bound_error(); - 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_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("")} - function caml_js_object(a) - {var o={}; - for(var i=1;i < a.length;i++) - {var p=a[i];o[caml_jsstring_of_string(p[1])] = p[2]} - return o} - function caml_ba_create(kind,layout,dims_ml) - {var - 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) - {var - SPLIT=Math.pow(2,27) + 1, - MIN_VALUE=Math.pow(2,- 1022), - EPSILON=Math.pow(2,- 52), - C=416, - A=Math.pow(2,+ C), - B=Math.pow(2,- C); - function multiply(a,b) - {var - at=SPLIT * a, - ahi=at - (at - a), - alo=a - ahi, - bt=SPLIT * b, - bhi=bt - (bt - b), - blo=b - bhi, - p=a * b, - e=ahi * bhi - p + ahi * blo + alo * bhi + alo * blo; - return {p:p,e:e}} - function add(a,b) - {var s=a + b,v=s - a,e=a - (s - v) + (b - v);return {s:s,e:e}} - function adjust(x,y) - {return x !== 0 && y !== 0 && SPLIT * x - (SPLIT * x - x) === x - ?x * (1 + (x < 0?- 1:+ 1) * (y < 0?- 1:+ 1) * EPSILON) - :x} - if - (x - === - 0 - || - x - !== - x - || - x - === - + - (1 / 0) - || - x - === - - - (1 / 0) - || - y - === - 0 - || - y - !== - y - || - y - === - + - (1 / 0) - || - y - === - - - (1 / 0)) - return x * y + z; - if(z === 0)return x * y; - if(z !== z || z === + (1 / 0) || z === - (1 / 0))return z; - var scale=1; - while(Math.abs(x) > A){scale *= A;x *= B} - while(Math.abs(y) > A){scale *= A;y *= B} - if(scale === 1 / 0)return x * y * scale; - while(Math.abs(x) < B){scale *= B;x *= A} - while(Math.abs(y) < B){scale *= B;y *= A} - if(scale === 0)return z; - var xs=x,ys=y,zs=z / scale; - if(Math.abs(zs) > Math.abs(xs * ys) * 4 / EPSILON)return z; - if(Math.abs(zs) < Math.abs(xs * ys) * EPSILON / 4 * EPSILON / 4) - zs = (z < 0?- 1:+ 1) * MIN_VALUE; - var - xy=multiply(xs,ys), - s=add(xy.p,zs), - u=add(xy.e,s.e), - i=add(s.s,u.s), - f=i.s + adjust(i.e,u.e); - if(f === 0)return f; - var fs=f * scale; - if(Math.abs(fs) > MIN_VALUE)return fs; - return fs + adjust(f - fs / scale,i.e) * scale} - 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; - return 0} - function caml_final_register(){return 0} - function caml_gr_draw_rect(x,y,w,h) - {var s=caml_gr_state_get(); - s.context.strokeRect(x,s.height - y,w,- h); - return 0} - function caml_string_get16(s,i) - {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 ml_z_to_int32(z1){return ml_z_to_int(z1)} - var caml_initial_time=new Date().getTime() * 0.001; - function caml_sys_time() - {var now=new Date().getTime();return now * 0.001 - caml_initial_time} - function caml_sys_time_include_children(b){return caml_sys_time()} - 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 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; - if(sz < 0 || sz > 256)sz = 256; - num = count; - h = seed; - queue = [obj]; - rd = 0; - wr = 1; - while(rd < wr && num > 0) - {v = queue[rd++]; - if(v && v.caml_custom) - {if - (caml_custom_ops[v.caml_custom] - && - caml_custom_ops[v.caml_custom].hash) - {var hh=caml_custom_ops[v.caml_custom].hash(v); - h = caml_hash_mix_int(h,hh); - num--}} - else - if(v instanceof Array && v[0] === (v[0] | 0)) - switch(v[0]) - {case 248:h = caml_hash_mix_int(h,v[2]);num--;break; - case 250:queue[--rd] = v[1];break; - default: - var tag=v.length - 1 << 10 | v[0]; - h = caml_hash_mix_int(h,tag); - for(i = 1,len = v.length;i < len;i++) - {if(wr >= sz)break;queue[wr++] = v[i]} - break} - else - if(caml_is_ml_bytes(v)) - {h = caml_hash_mix_bytes(h,v);num--} - else - if(caml_is_ml_string(v)) - {h = caml_hash_mix_string(h,v);num--} - else - if(typeof v === "string") - {h = caml_hash_mix_jsbytes(h,v);num--} - else - if(v === (v | 0)) - {h = caml_hash_mix_int(h,v + v + 1);num--} - else - 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_bytes_get32(s,i) - {if(i >>> 0 >= s.l - 3)caml_bytes_bound_error(); - var - b1=caml_bytes_unsafe_get(s,i), - b2=caml_bytes_unsafe_get(s,i + 1), - b3=caml_bytes_unsafe_get(s,i + 2), - b4=caml_bytes_unsafe_get(s,i + 3); - return b4 << 24 | b3 << 16 | b2 << 8 | b1} - function caml_frexp_float(x) - {if(x == 0 || ! isFinite(x))return [0,x,0]; - var neg=x < 0; - if(neg)x = - x; - var exp=Math.max(- 1023,jsoo_floor_log2(x) + 1); - x *= Math.pow(2,- exp); - while(x < 0.5){x *= 2;exp--} - while(x >= 1){x *= 0.5;exp++} - if(neg)x = - x; - return [0,x,exp]} - function ml_z_pred(z1){return ml_z_normalize(bigInt(z1).prev())} - function caml_string_get64(s,i) - {if(i >>> 0 >= caml_ml_string_length(s) - 7)caml_string_bound_error(); - var a=new Array(8); - for(var j=0;j < 8;j++)a[7 - j] = caml_string_unsafe_get(s,i + j); - return caml_int64_of_bytes(a)} - 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)} - function ml_z_extract(z1,pos,len) - {z1 = bigInt(z1); - return ml_z_normalize - (z1.shiftRight(pos).and(bigInt(2).pow(len).subtract(1)))} - function ml_z_remove(a,b) - {var zero=bigInt(0),one=bigInt(1); - a = bigInt(a); - b = bigInt(b); - if(b.equals(zero))caml_raise_zero_divide(); - if(a.equals(zero) || b.abs().equals(one))return [0,a,0]; - var i=0; - while(a.isDivisibleBy(b)){a = a.divide(b);i++} - return [0,ml_z_normalize(a),i]} - function ml_z_of_float(f1) - {if(f1 == Infinity || f1 == - Infinity || f1 != f1) - 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_gr_close_subwindow(a) - {caml_failwith("caml_gr_close_subwindow not Implemented")} - function caml_floatarray_blit(a1,i1,a2,i2,len) - {if(i2 <= i1) - for(var j=1;j <= len;j++)a2[i2 + j] = a1[i1 + j]; - else - for(var j=len;j >= 1;j--)a2[i2 + j] = a1[i1 + j]; - return 0} - function caml_get_minor_free(unit){return 0} - function caml_set_static_env(k,v) - {if(! globalThis.jsoo_static_env)globalThis.jsoo_static_env = {}; - globalThis.jsoo_static_env[k] = v; - return 0} - function caml_ba_change_layout(ba,layout) - {if(ba.layout == layout)return ba; - var new_dims=[]; - for(var i=0;i < ba.dims.length;i++) - new_dims[i] = ba.dims[ba.dims.length - i - 1]; - return caml_ba_create_unsafe(ba.kind,layout,new_dims,ba.data)} - function caml_js_new(c,a) - {switch(a.length) - {case 1:return new c(); - case 2:return new c(a[1]); - case 3:return new c(a[1],a[2]); - case 4:return new c(a[1],a[2],a[3]); - case 5:return new c(a[1],a[2],a[3],a[4]); - case 6:return new c(a[1],a[2],a[3],a[4],a[5]); - case 7:return new c(a[1],a[2],a[3],a[4],a[5],a[6]); - case 8:return new c(a[1],a[2],a[3],a[4],a[5],a[6],a[7]) - } - 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") - return caml_string_of_jsbytes("" + i); - var f=caml_parse_format(fmt); - if(i < 0)if(f.signedconv){f.sign = - 1;i = - i}else i >>>= 0; - var s=i.toString(f.base); - if(f.prec >= 0) - {f.filler = " "; - var n=f.prec - s.length; - if(n > 0)s = caml_str_repeat(n,"0") + s} - return caml_finish_formatting(f,s)} - function caml_obj_truncate(x,s) - {if(s <= 0 || s + 1 > x.length)caml_invalid_argument("Obj.truncate"); - if(x.length != s + 1)x.length = s + 1; - return 0} - function caml_js_to_string(s){return caml_string_of_jsstring(s)} - 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 - channel= - {file:data.file, - offset:data.offset, - fd:fd, - opened:true, - out:true, - buffer:""}; - caml_ml_channels[channel.fd] = channel; - return channel.fd} - function caml_array_concat(l) - {var a=[0]; - while(l !== 0) - {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); - function get(name) - {var res=info.match("(^|,) *" + name + " *= *([a-zA-Z0-9_]+) *(,|$)"); - if(res)return res[2]} - var specs=[]; - if(! (info == ""))specs.push(info); - var target=get("target"); - if(! target)target = ""; - var status=get("status"); - if(! status)specs.push("status=1"); - var w=get("width"); - w = w?parseInt(w):200; - specs.push("width=" + w); - var h=get("height"); - h = h?parseInt(h):200; - specs.push("height=" + h); - var win=g.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; - canvas.height = h; - var ctx=caml_gr_state_create(canvas,w,h); - ctx.set_title = function(title){doc.title = title}; - caml_gr_state_set(ctx); - var body=doc.body; - 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); - b[0] = 254; - for(var i=1;i < len;i++)b[i] = 0; - return b} - function caml_cbrt_float(x){return Math.cbrt(x)} - function caml_memprof_stop(unit){return 0} - function caml_eventlog_pause(unit){return 0} - function caml_greaterequal(x,y) - {return + (caml_compare_val(x,y,false) >= 0)} - function ml_z_numbits(z1) - {z1 = bigInt(z1).abs(); - var n=0,upperBound=bigInt.one; - while(upperBound.leq(z1)){n += 1;upperBound = upperBound.multiply(2)} - 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} - function caml_gr_blit_image(im,x,y) - {var - s=caml_gr_state_get(), - im2= - s.context.getImageData(x,s.height - im.height - y,im.width,im.height); - for(var i=0;i < im2.data.length;i += 4) - {im.data[i] = im2.data[i]; - im.data[i + 1] = im2.data[i + 1]; - im.data[i + 2] = im2.data[i + 2]; - im.data[i + 3] = im2.data[i + 3]} - return 0} - function caml_gr_window_id(a) - {caml_failwith("caml_gr_window_id not Implemented")} - function caml_js_on_ie() - {var ua=globalThis.navigator?globalThis.navigator.userAgent:""; - return ua.indexOf("MSIE") != - 1 && ua.indexOf("Opera") != 0} - function caml_int64_shift_right(x,s){return x.shift_right(s)} - function caml_ba_layout(ba){return ba.layout} - function caml_convert_raw_backtrace(){return [0]} - function caml_array_set(array,index,newval) - {if(index < 0 || index >= array.length - 1)caml_array_bound_error(); - array[index + 1] = newval; - return 0} - function caml_bytes_greaterequal(s1,s2) - {return caml_bytes_lessequal(s2,s1)} - function ml_z_perfect_power(z) - {z = bigInt(z); - var zero=bigInt(0),one=bigInt(1); - if(z.equals(zero) || z.equals(one) || z.equals(one.negate()))return 1; - var log2z=ml_z_numbits(z.abs()); - for(var b=2;b <= log2z;b++) - {if(z.lt(zero) && b % 2 == 0)continue; - var zp=z.abs(),p=bigInt(ml_z_root(zp,b)); - if(z.lt(zero))p = p.negate(); - var r=bigInt(ml_z_pow(p,b)); - if(z.equals(r))return 1} - return 0} - function set_digit_nat(nat,ofs,digit){nat.data[ofs] = digit;return 0} - function ml_z_init(unit) - {caml_custom_ops["_z"] - = - {serialize:caml_zarith_marshal, - deserialize:caml_zarith_unmarshal, - hash:ml_z_hash, - compare:ml_z_compare}; - return 0} - function caml_gr_doc_of_state(state) - {if(state.canvas.ownerDocument)return state.canvas.ownerDocument} - function caml_ml_output_int(chanid,i) - {var - arr=[i >> 24 & 0xFF,i >> 16 & 0xFF,i >> 8 & 0xFF,i & 0xFF], - s=caml_string_of_array(arr); - caml_ml_output(chanid,s,0,4); - return 0} - function caml_obj_with_tag(tag,x) - {var l=x.length,a=new Array(l); - a[0] = tag; - for(var i=1;i < l;i++)a[i] = x[i]; - return a} - function caml_ml_channel_size(chanid) - {var chan=caml_ml_channels[chanid];return chan.file.length()} - function caml_raw_backtrace_slot() - {caml_invalid_argument - ("Printexc.get_raw_backtrace_slot: index out of bounds")} - function caml_hexstring_of_float(x,prec,style) - {if(! isFinite(x)) - {if(isNaN(x))return caml_string_of_jsstring("nan"); - return caml_string_of_jsstring(x > 0?"infinity":"-infinity")} - var sign=x == 0 && 1 / x == - Infinity?1:x >= 0?0:1; - if(sign)x = - x; - var exp=0; - if(x == 0) - ; - else - if(x < 1) - while(x < 1 && exp > - 1022){x *= 2;exp--} - else - while(x >= 2){x /= 2;exp++} - var exp_sign=exp < 0?"":"+",sign_str=""; - if(sign) - sign_str = "-"; - else - switch(style) - {case 43:sign_str = "+";break; - case 32:sign_str = " ";break; - default:break} - if(prec >= 0 && prec < 13) - {var cst=Math.pow(2,prec * 4);x = Math.round(x * cst) / cst} - var x_str=x.toString(16); - if(prec >= 0) - {var idx=x_str.indexOf("."); - if(idx < 0) - x_str += "." + caml_str_repeat(prec,"0"); - else - {var size=idx + 1 + prec; - if(x_str.length < size) - x_str += caml_str_repeat(size - x_str.length,"0"); - else - x_str = x_str.substr(0,size)}} - return caml_string_of_jsstring - (sign_str + "0x" + x_str + "p" + exp_sign + exp.toString(10))} - function caml_js_wrap_meth_callback_strict(arity,f) - {return function() - {var args=new Array(arity + 1),len=Math.min(arguments.length,arity); - args[0] = this; - for(var i=0;i < len;i++)args[i + 1] = arguments[i]; - return caml_call_gen(f,args)}} - function ml_z_format(fmt,z1) - {z1 = bigInt(z1); - var - fmt=caml_jsbytes_of_string(fmt), - base=10, - cas=0, - width=0, - alt=0, - dir=0, - sign="", - pad=" ", - idx=0, - prefix=""; - while(fmt[idx] == "%")idx++; - for(;;idx++) - if(fmt[idx] == "#") - alt = 1; - else - if(fmt[idx] == "0") - pad = "0"; - else - if(fmt[idx] == "-") - dir = 1; - else - if(fmt[idx] == " " || fmt[idx] == "+")sign = fmt[idx];else break; - if(z1.lt(bigInt(0))){sign = "-";z1 = z1.negate()} - for(;fmt[idx] >= "0" && fmt[idx] <= "9";idx++) - width = 10 * width + + fmt[idx]; - switch(fmt[idx]) - {case "i": - case "d": - case "u":break; - case "b":base = 2;if(alt)prefix = "0b";break; - case "o":base = 8;if(alt)prefix = "0o";break; - case "x":base = 16;if(alt)prefix = "0x";break; - case "X":base = 16;if(alt)prefix = "0X";cas = 1;break; - default:caml_failwith("Unsupported format '" + fmt + "'")} - if(dir)pad = " "; - var res=z1.toString(base); - if(cas === 1)res = res.toUpperCase(); - var size=res.length; - if(pad == " ") - if(dir) - {res = sign + prefix + res;for(;res.length < width;)res = res + pad} - else - {res = sign + prefix + res;for(;res.length < width;)res = pad + res} - else - {var pre=sign + prefix; - for(;res.length + pre.length < width;)res = pad + res; - res = pre + res} - return caml_string_of_jsbytes(res)} - function ml_z_to_int64(z1) - {z1 = bigInt(z1); - if(! ml_z_fits_int64(z1)) - caml_raise_constant(caml_named_value("ml_z_overflow")); - var - mask=bigInt(0xffffffff), - lo=z1.and(mask).toJSNumber(), - hi=z1.shiftRight(32).and(mask).toJSNumber(), - x=caml_int64_create_lo_hi(lo,hi); - return x} - function ml_z_size(z1) - {return bigInt(z1).toArray(Math.pow(2,32)).value.length} - function caml_backtrace_status(){return 0} - function caml_sys_argv(a){return caml_argv} - function caml_install_signal_handler(){return 0} - function caml_ba_fill(ba,v){ba.fill(v);return 0} - function caml_modf_float(x) - {if(isFinite(x)) - {var neg=1 / x < 0; - x = Math.abs(x); - var i=Math.floor(x),f=x - i; - if(neg){i = - i;f = - f} - return [0,f,i]} - if(isNaN(x))return [0,NaN,NaN]; - return [0,1 / x,x]} - function caml_gc_get(){return [0,0,0,0,0,0,0,0,0]} - function caml_float_compare(x,y) - {if(x === y)return 0; - if(x < y)return - 1; - if(x > y)return 1; - if(x === x)return 1; - if(y === y)return - 1; - return 0} - function ml_z_shift_right_trunc(z1,z2) - {return ml_z_div(bigInt(z1),bigInt(2).pow(z2))} - function caml_string_set32(s,i,i32){return caml_bytes_set32(s,i,i32)} - function caml_parse_engine(tables,env,cmd,arg) - {var - ERRCODE=256, - loop=6, - testshift=7, - shift=8, - shift_recover=9, - reduce=10, - READ_TOKEN=0, - RAISE_PARSE_ERROR=1, - GROW_STACKS_1=2, - GROW_STACKS_2=3, - COMPUTE_SEMANTIC_ACTION=4, - CALL_ERROR_FUNCTION=5, - env_s_stack=1, - env_v_stack=2, - env_symb_start_stack=3, - env_symb_end_stack=4, - env_stacksize=5, - env_stackbase=6, - env_curr_char=7, - env_lval=8, - env_symb_start=9, - env_symb_end=10, - env_asp=11, - env_rule_len=12, - env_rule_number=13, - env_sp=14, - env_state=15, - env_errflag=16, - tbl_transl_const=2, - tbl_transl_block=3, - tbl_lhs=4, - tbl_len=5, - tbl_defred=6, - tbl_dgoto=7, - tbl_sindex=8, - tbl_rindex=9, - tbl_gindex=10, - tbl_tablesize=11, - tbl_table=12, - tbl_check=13; - if(! tables.dgoto) - {tables.defred = caml_lex_array(tables[tbl_defred]); - tables.sindex = caml_lex_array(tables[tbl_sindex]); - tables.check = caml_lex_array(tables[tbl_check]); - tables.rindex = caml_lex_array(tables[tbl_rindex]); - tables.table = caml_lex_array(tables[tbl_table]); - tables.len = caml_lex_array(tables[tbl_len]); - tables.lhs = caml_lex_array(tables[tbl_lhs]); - tables.gindex = caml_lex_array(tables[tbl_gindex]); - tables.dgoto = caml_lex_array(tables[tbl_dgoto])} - var - res=0, - n, - n1, - n2, - state1, - sp=env[env_sp], - state=env[env_state], - errflag=env[env_errflag]; - exit: - for(;;) - switch(cmd) - {case 0:state = 0;errflag = 0; - case 6: - n = tables.defred[state]; - if(n != 0){cmd = reduce;break} - if(env[env_curr_char] >= 0){cmd = testshift;break} - res = READ_TOKEN; - break exit; - case 1: - if(arg instanceof Array) - {env[env_curr_char] = tables[tbl_transl_block][arg[0] + 1]; - env[env_lval] = arg[1]} - else - {env[env_curr_char] = tables[tbl_transl_const][arg + 1]; - env[env_lval] = 0} - case 7: - n1 = tables.sindex[state]; - n2 = n1 + env[env_curr_char]; - if - (n1 - != - 0 - && - n2 - >= - 0 - && - n2 - <= - tables[tbl_tablesize] - && - tables.check[n2] - == - env[env_curr_char]) - {cmd = shift;break} - n1 = tables.rindex[state]; - n2 = n1 + env[env_curr_char]; - if - (n1 - != - 0 - && - n2 - >= - 0 - && - n2 - <= - tables[tbl_tablesize] - && - tables.check[n2] - == - env[env_curr_char]) - {n = tables.table[n2];cmd = reduce;break} - if(errflag <= 0){res = CALL_ERROR_FUNCTION;break exit} - case 5: - if(errflag < 3) - {errflag = 3; - for(;;) - {state1 = env[env_s_stack][sp + 1]; - n1 = tables.sindex[state1]; - n2 = n1 + ERRCODE; - if - (n1 - != - 0 - && - n2 - >= - 0 - && - n2 - <= - tables[tbl_tablesize] - && - tables.check[n2] - == - ERRCODE) - {cmd = shift_recover;break} - else - {if(sp <= env[env_stackbase])return RAISE_PARSE_ERROR;sp--}}} - else - {if(env[env_curr_char] == 0)return RAISE_PARSE_ERROR; - env[env_curr_char] = - 1; - cmd = loop; - break} - case 8:env[env_curr_char] = - 1;if(errflag > 0)errflag--; - case 9: - state = tables.table[n2]; - sp++; - if(sp >= env[env_stacksize]){res = GROW_STACKS_1;break exit} - case 2: - env[env_s_stack][sp + 1] = state; - env[env_v_stack][sp + 1] = env[env_lval]; - env[env_symb_start_stack][sp + 1] = env[env_symb_start]; - env[env_symb_end_stack][sp + 1] = env[env_symb_end]; - cmd = loop; - break; - case 10: - var m=tables.len[n]; - env[env_asp] = sp; - env[env_rule_number] = n; - env[env_rule_len] = m; - sp = sp - m + 1; - m = tables.lhs[n]; - state1 = env[env_s_stack][sp]; - n1 = tables.gindex[m]; - n2 = n1 + state1; - if - (n1 - != - 0 - && - n2 - >= - 0 - && - n2 - <= - tables[tbl_tablesize] - && - tables.check[n2] - == - state1) - state = tables.table[n2]; - else - state = tables.dgoto[m]; - if(sp >= env[env_stacksize]){res = GROW_STACKS_2;break exit} - case 3:res = COMPUTE_SEMANTIC_ACTION;break exit; - case 4: - env[env_s_stack][sp + 1] = state; - env[env_v_stack][sp + 1] = arg; - var asp=env[env_asp]; - env[env_symb_end_stack][sp + 1] = env[env_symb_end_stack][asp + 1]; - if(sp > asp) - env[env_symb_start_stack][sp + 1] - = - env[env_symb_end_stack][asp + 1]; - cmd = loop; - break; - default:return RAISE_PARSE_ERROR} - env[env_sp] = sp; - env[env_state] = state; - env[env_errflag] = errflag; - return res} - function caml_update_dummy(x,y) - {if(typeof y === "function"){x.fun = y;return 0} - if(y.fun){x.fun = y.fun;return 0} - var i=y.length; - while(i--)x[i] = y[i]; - return 0} - function caml_array_fill(array,ofs,len,v) - {for(var i=0;i < len;i++)array[ofs + i + 1] = v;return 0} - function caml_sys_mkdir(name,perm) - {var root=resolve_fs_device(name); - root.device.mkdir(root.rest,perm); - return 0} - function caml_string_notequal(s1,s2){return 1 - caml_string_equal(s1,s2)} - function caml_bytes_greaterthan(s1,s2){return caml_bytes_lessthan(s2,s1)} - function caml_gr_make_image(arr) - {var - s=caml_gr_state_get(), - h=arr.length - 1, - w=arr[1].length - 1, - im=s.context.createImageData(w,h); - for(var i=0;i < h;i++) - for(var j=0;j < w;j++) - {var c=arr[i + 1][j + 1],o=i * (w * 4) + j * 4; - if(c == - 1) - {im.data[o + 0] = 0; - im.data[o + 1] = 0; - im.data[o + 2] = 0; - im.data[o + 3] = 0} - else - {im.data[o + 0] = c >> 16 & 0xff; - im.data[o + 1] = c >> 8 & 0xff; - im.data[o + 2] = c >> 0 & 0Xff; - im.data[o + 3] = 0xff}} - return im} - function caml_ml_set_channel_output(chanid,f) - {var chan=caml_ml_channels[chanid]; - caml_global_data.fds[chan.fd].output = f; - return 0} - function caml_read_file_content(name) - {var - name=typeof name == "string"?caml_string_of_jsbytes(name):name, - root=resolve_fs_device(name); - if(root.device.exists(root.rest)) - {var - file=root.device.open(root.rest,{rdonly:1}), - len=file.length(), - buf=caml_create_bytes(len); - file.read(0,buf,0,len); - return caml_string_of_bytes(buf)} - 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 - ("uncaughtException", - function(err,origin) - {caml_fatal_uncaught_exception(err);g.process.exit(2)}); - else - if(g.addEventListener) - g.addEventListener - ("error", - function(event) - {if(event.error)caml_fatal_uncaught_exception(event.error)})} - caml_setup_uncaught_exception_handler(); - globalThis.jsoo_runtime - = - {ml_z_normalize:ml_z_normalize, - ml_z_mul_overflows:ml_z_mul_overflows, - ml_z_init:ml_z_init, - ml_z_neg:ml_z_neg, - ml_z_add:ml_z_add, - ml_z_sub:ml_z_sub, - ml_z_mul:ml_z_mul, - ml_z_div:ml_z_div, - ml_z_cdiv:ml_z_cdiv, - ml_z_fdiv:ml_z_fdiv, - ml_z_rem:ml_z_rem, - ml_z_div_rem:ml_z_div_rem, - ml_z_succ:ml_z_succ, - ml_z_pred:ml_z_pred, - ml_z_abs:ml_z_abs, - ml_z_logand:ml_z_logand, - ml_z_logor:ml_z_logor, - ml_z_logxor:ml_z_logxor, - ml_z_lognot:ml_z_lognot, - ml_z_shift_left:ml_z_shift_left, - ml_z_shift_right:ml_z_shift_right, - ml_z_shift_right_trunc:ml_z_shift_right_trunc, - ml_z_of_int32:ml_z_of_int32, - ml_z_of_nativeint:ml_z_of_nativeint, - ml_z_of_int64:ml_z_of_int64, - ml_z_of_float:ml_z_of_float, - ml_z_to_int:ml_z_to_int, - ml_z_to_int32:ml_z_to_int32, - ml_z_to_int64:ml_z_to_int64, - ml_z_testbit:ml_z_testbit, - ml_z_to_nativeint:ml_z_to_nativeint, - ml_z_format:ml_z_format, - jsoo_z_of_js_string_base:jsoo_z_of_js_string_base, - ml_z_of_substring_base:ml_z_of_substring_base, - ml_z_compare:ml_z_compare, - ml_z_equal:ml_z_equal, - ml_z_sign:ml_z_sign, - ml_z_gcd:ml_z_gcd, - ml_z_numbits:ml_z_numbits, - ml_z_fits_int:ml_z_fits_int, - ml_z_fits_int32:ml_z_fits_int32, - ml_z_fits_int64:ml_z_fits_int64, - ml_z_fits_nativeint:ml_z_fits_nativeint, - ml_z_powm:ml_z_powm, - ml_z_pow:ml_z_pow, - ml_z_hash:ml_z_hash, - ml_z_to_bits:ml_z_to_bits, - ml_z_of_bits:ml_z_of_bits, - ml_z_powm_sec:ml_z_powm_sec, - ml_z_root:ml_z_root, - ml_z_rootrem:ml_z_rootrem, - ml_z_invert:ml_z_invert, - ml_z_perfect_power:ml_z_perfect_power, - ml_z_perfect_square:ml_z_perfect_square, - ml_z_probab_prime:ml_z_probab_prime, - ml_z_nextprime:ml_z_nextprime, - ml_z_extract:ml_z_extract, - ml_z_gcdext_intern:ml_z_gcdext_intern, - ml_z_sqrt:ml_z_sqrt, - ml_z_sqrt_rem:ml_z_sqrt_rem, - ml_z_trailing_zeros:ml_z_trailing_zeros, - ml_z_popcount:ml_z_popcount, - ml_z_hamdist:ml_z_hamdist, - ml_z_size:ml_z_size, - ml_z_divexact:ml_z_divexact, - caml_zarith_marshal:caml_zarith_marshal, - caml_zarith_unmarshal:caml_zarith_unmarshal, - ml_z_divisible:ml_z_divisible, - ml_z_congruent:ml_z_congruent, - ml_z_remove:ml_z_remove, - ml_z_fac:ml_z_fac, - ml_z_fac2:ml_z_fac2, - ml_z_facM:ml_z_facM, - ml_z_fib:ml_z_fib, - ml_z_lucnum:ml_z_lucnum, - ml_z_jacobi:ml_z_jacobi, - ml_z_legendre:ml_z_legendre, - ml_z_kronecker:ml_z_kronecker, - ml_z_primorial:ml_z_primorial, - ml_z_bin:ml_z_bin, - bigInt:bigInt, - caml_ephe_key_offset:caml_ephe_key_offset, - caml_ephe_data_offset:caml_ephe_data_offset, - 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_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, - 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, - 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_raise_sys_error:caml_raise_sys_error, - caml_sys_exit:caml_sys_exit, - caml_is_special_exception:caml_is_special_exception, - caml_format_exception:caml_format_exception, - caml_fatal_uncaught_exception:caml_fatal_uncaught_exception, - caml_set_static_env:caml_set_static_env, - caml_sys_getenv:caml_sys_getenv, - caml_sys_unsafe_getenv:caml_sys_unsafe_getenv, - caml_argv:caml_argv, - caml_executable_name:caml_executable_name, - caml_sys_get_argv:caml_sys_get_argv, - caml_sys_argv:caml_sys_argv, - caml_sys_modify_argv:caml_sys_modify_argv, - caml_sys_executable_name:caml_sys_executable_name, - caml_sys_system_command:caml_sys_system_command, - caml_sys_time:caml_sys_time, - caml_sys_time_include_children:caml_sys_time_include_children, - caml_sys_random_seed:caml_sys_random_seed, - caml_sys_const_big_endian:caml_sys_const_big_endian, - caml_sys_const_word_size:caml_sys_const_word_size, - caml_sys_const_int_size:caml_sys_const_int_size, - caml_sys_const_max_wosize:caml_sys_const_max_wosize, - caml_sys_const_ostype_unix:caml_sys_const_ostype_unix, - caml_sys_const_ostype_win32:caml_sys_const_ostype_win32, - caml_sys_const_ostype_cygwin:caml_sys_const_ostype_cygwin, - caml_sys_const_backend_type:caml_sys_const_backend_type, - os_type:os_type, - caml_sys_get_config:caml_sys_get_config, - caml_sys_isatty:caml_sys_isatty, - 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, - caml_spacetime_enabled:caml_spacetime_enabled, - caml_sys_const_naked_pointers_checked: - caml_sys_const_naked_pointers_checked, - caml_register_channel_for_spacetime:caml_register_channel_for_spacetime, - caml_spacetime_only_works_for_native_code: - caml_spacetime_only_works_for_native_code, - caml_call_gen:caml_call_gen, - caml_named_values:caml_named_values, - caml_register_named_value:caml_register_named_value, - caml_named_value:caml_named_value, - caml_global_data:caml_global_data, - caml_register_global:caml_register_global, - caml_get_global_data:caml_get_global_data, - caml_is_printable:caml_is_printable, - caml_parse_engine:caml_parse_engine, - caml_set_parser_trace:caml_set_parser_trace, - caml_update_dummy:caml_update_dummy, - caml_obj_is_block:caml_obj_is_block, - caml_obj_tag:caml_obj_tag, - caml_obj_set_tag:caml_obj_set_tag, - caml_obj_block:caml_obj_block, - caml_obj_with_tag:caml_obj_with_tag, - caml_obj_dup:caml_obj_dup, - caml_obj_truncate:caml_obj_truncate, - caml_obj_make_forward:caml_obj_make_forward, - caml_lazy_make_forward:caml_lazy_make_forward, - caml_get_public_method:caml_get_public_method, - caml_oo_last_id:caml_oo_last_id, - caml_set_oo_id:caml_set_oo_id, - caml_fresh_oo_id:caml_fresh_oo_id, - caml_obj_raw_field:caml_obj_raw_field, - 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, - initialize_nat:initialize_nat, - MlNat:MlNat, - caml_hash_nat:caml_hash_nat, - nat_of_array:nat_of_array, - create_nat:create_nat, - set_to_zero_nat:set_to_zero_nat, - blit_nat:blit_nat, - set_digit_nat:set_digit_nat, - nth_digit_nat:nth_digit_nat, - set_digit_nat_native:set_digit_nat_native, - nth_digit_nat_native:nth_digit_nat_native, - num_digits_nat:num_digits_nat, - num_leading_zero_bits_in_digit:num_leading_zero_bits_in_digit, - is_digit_int:is_digit_int, - is_digit_zero:is_digit_zero, - is_digit_odd:is_digit_odd, - incr_nat:incr_nat, - add_nat:add_nat, - complement_nat:complement_nat, - decr_nat:decr_nat, - sub_nat:sub_nat, - mult_digit_nat:mult_digit_nat, - mult_nat:mult_nat, - square_nat:square_nat, - shift_left_nat:shift_left_nat, - div_helper:div_helper, - div_digit_nat:div_digit_nat, - div_nat:div_nat, - shift_right_nat:shift_right_nat, - compare_digits_nat:compare_digits_nat, - compare_nat:compare_nat, - compare_nat_real:compare_nat_real, - land_digit_nat:land_digit_nat, - lor_digit_nat:lor_digit_nat, - lxor_digit_nat:lxor_digit_nat, - serialize_nat:serialize_nat, - deserialize_nat:deserialize_nat, - caml_str_repeat:caml_str_repeat, - caml_subarray_to_jsbytes:caml_subarray_to_jsbytes, - caml_utf8_of_utf16:caml_utf8_of_utf16, - caml_utf16_of_utf8:caml_utf16_of_utf8, - jsoo_is_ascii:jsoo_is_ascii, - caml_bytes_unsafe_get:caml_bytes_unsafe_get, - caml_bytes_unsafe_set:caml_bytes_unsafe_set, - caml_string_bound_error:caml_string_bound_error, - caml_bytes_bound_error:caml_bytes_bound_error, - caml_string_get:caml_string_get, - caml_string_get16:caml_string_get16, - caml_bytes_get16:caml_bytes_get16, - caml_string_get32:caml_string_get32, - caml_bytes_get32:caml_bytes_get32, - caml_string_get64:caml_string_get64, - caml_bytes_get64:caml_bytes_get64, - caml_bytes_get:caml_bytes_get, - caml_string_set:caml_string_set, - caml_bytes_set16:caml_bytes_set16, - caml_string_set16:caml_string_set16, - caml_bytes_set32:caml_bytes_set32, - caml_string_set32:caml_string_set32, - caml_bytes_set64:caml_bytes_set64, - caml_string_set64:caml_string_set64, - caml_bytes_set:caml_bytes_set, - caml_bytes_of_utf16_jsstring:caml_bytes_of_utf16_jsstring, - 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_create_string:caml_create_string, - caml_create_bytes:caml_create_bytes, - caml_string_of_array:caml_string_of_array, - caml_bytes_of_array:caml_bytes_of_array, - caml_bytes_compare:caml_bytes_compare, - caml_bytes_equal:caml_bytes_equal, - caml_string_notequal:caml_string_notequal, - caml_bytes_notequal:caml_bytes_notequal, - caml_bytes_lessequal:caml_bytes_lessequal, - caml_bytes_lessthan:caml_bytes_lessthan, - caml_string_greaterequal:caml_string_greaterequal, - caml_bytes_greaterequal:caml_bytes_greaterequal, - 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, - caml_bytes_of_jsbytes:caml_bytes_of_jsbytes, - caml_string_unsafe_get:caml_string_unsafe_get, - caml_string_unsafe_set:caml_string_unsafe_set, - caml_ml_string_length:caml_ml_string_length, - caml_string_compare:caml_string_compare, - caml_string_equal:caml_string_equal, - caml_string_lessequal:caml_string_lessequal, - caml_string_lessthan:caml_string_lessthan, - caml_string_of_bytes:caml_string_of_bytes, - caml_bytes_of_string:caml_bytes_of_string, - caml_string_of_jsbytes:caml_string_of_jsbytes, - caml_jsbytes_of_string:caml_jsbytes_of_string, - caml_jsstring_of_string:caml_jsstring_of_string, - caml_string_of_jsstring:caml_string_of_jsstring, - caml_is_ml_bytes:caml_is_ml_bytes, - caml_ml_bytes_content:caml_ml_bytes_content, - caml_is_ml_string:caml_is_ml_string, - caml_js_to_byte_string:caml_js_to_byte_string, - caml_new_string:caml_new_string, - 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_md5_chan:caml_md5_chan, - caml_md5_string:caml_md5_string, - caml_md5_bytes:caml_md5_bytes, - caml_marshal_constants:caml_marshal_constants, - MlStringReader:MlStringReader, - BigStringReader:BigStringReader, - caml_float_of_bytes:caml_float_of_bytes, - caml_input_value_from_string:caml_input_value_from_string, - caml_input_value_from_bytes:caml_input_value_from_bytes, - caml_int64_unmarshal:caml_int64_unmarshal, - caml_int64_marshal:caml_int64_marshal, - caml_int32_unmarshal:caml_int32_unmarshal, - caml_nativeint_unmarshal:caml_nativeint_unmarshal, - caml_custom_ops:caml_custom_ops, - caml_input_value_from_reader:caml_input_value_from_reader, - caml_marshal_data_size:caml_marshal_data_size, - MlObjectTable:MlObjectTable, - caml_legacy_custom_code:caml_legacy_custom_code, - caml_output_val:caml_output_val, - caml_output_value_to_string:caml_output_value_to_string, - caml_output_value_to_bytes:caml_output_value_to_bytes, - caml_output_value_to_buffer:caml_output_value_to_buffer, - caml_lex_array:caml_lex_array, - caml_lex_engine:caml_lex_engine, - caml_new_lex_engine:caml_new_lex_engine, - caml_js_on_ie:caml_js_on_ie, - caml_js_html_escape:caml_js_html_escape, - caml_js_html_entities:caml_js_html_entities, - caml_js_get_console:caml_js_get_console, - caml_xmlhttprequest_create:caml_xmlhttprequest_create, - caml_js_error_of_exception:caml_js_error_of_exception, - caml_js_pure_expr:caml_js_pure_expr, - caml_js_set:caml_js_set, - caml_js_get:caml_js_get, - caml_js_delete:caml_js_delete, - caml_js_instanceof:caml_js_instanceof, - 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, - caml_js_error_option_of_exception:caml_js_error_option_of_exception, - caml_js_from_bool:caml_js_from_bool, - caml_js_to_bool:caml_js_to_bool, - caml_js_from_float:caml_js_from_float, - caml_js_to_float:caml_js_to_float, - caml_js_from_array:caml_js_from_array, - caml_js_to_array:caml_js_to_array, - caml_list_of_js_array:caml_list_of_js_array, - caml_list_to_js_array:caml_list_to_js_array, - caml_js_var:caml_js_var, - caml_js_call:caml_js_call, - caml_js_fun_call:caml_js_fun_call, - caml_js_meth_call:caml_js_meth_call, - caml_js_new:caml_js_new, - caml_ojs_new_arr:caml_ojs_new_arr, - caml_js_wrap_callback:caml_js_wrap_callback, - caml_js_wrap_callback_arguments:caml_js_wrap_callback_arguments, - caml_js_wrap_callback_strict:caml_js_wrap_callback_strict, - caml_js_wrap_meth_callback:caml_js_wrap_meth_callback, - caml_js_wrap_meth_callback_arguments:caml_js_wrap_meth_callback_arguments, - caml_js_wrap_meth_callback_strict:caml_js_wrap_meth_callback_strict, - caml_js_wrap_meth_callback_unsafe:caml_js_wrap_meth_callback_unsafe, - caml_js_equals:caml_js_equals, - caml_js_eval_string:caml_js_eval_string, - caml_js_expr:caml_js_expr, - caml_pure_js_expr:caml_pure_js_expr, - caml_js_object:caml_js_object, - 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, - caml_ml_out_channels_list:caml_ml_out_channels_list, - 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_ml_input:caml_ml_input, - caml_input_value:caml_input_value, - caml_ml_input_char:caml_ml_input_char, - caml_ml_input_int:caml_ml_input_int, - caml_ml_seek_in:caml_ml_seek_in, - caml_ml_seek_in_64:caml_ml_seek_in_64, - 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, - caml_ml_flush:caml_ml_flush, - caml_ml_output_bytes:caml_ml_output_bytes, - caml_ml_output:caml_ml_output, - caml_ml_output_char:caml_ml_output_char, - caml_output_value:caml_output_value, - caml_ml_seek_out:caml_ml_seek_out, - caml_ml_seek_out_64:caml_ml_seek_out_64, - 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, - caml_ml_is_buffered:caml_ml_is_buffered, - caml_ml_set_buffered:caml_ml_set_buffered, - caml_format_int:caml_format_int, - caml_parse_sign_and_base:caml_parse_sign_and_base, - caml_parse_digit:caml_parse_digit, - caml_int_of_string:caml_int_of_string, - caml_mul:caml_mul, - caml_div:caml_div, - caml_mod:caml_mod, - caml_bswap16:caml_bswap16, - caml_int32_bswap:caml_int32_bswap, - caml_int64_bswap:caml_int64_bswap, - caml_int64_offset:caml_int64_offset, - MlInt64:MlInt64, - caml_int64_ult:caml_int64_ult, - caml_int64_compare:caml_int64_compare, - caml_int64_neg:caml_int64_neg, - caml_int64_add:caml_int64_add, - caml_int64_sub:caml_int64_sub, - caml_int64_mul:caml_int64_mul, - caml_int64_is_zero:caml_int64_is_zero, - caml_int64_is_negative:caml_int64_is_negative, - caml_int64_and:caml_int64_and, - caml_int64_or:caml_int64_or, - caml_int64_xor:caml_int64_xor, - caml_int64_shift_left:caml_int64_shift_left, - caml_int64_shift_right_unsigned:caml_int64_shift_right_unsigned, - caml_int64_shift_right:caml_int64_shift_right, - caml_int64_div:caml_int64_div, - caml_int64_mod:caml_int64_mod, - caml_int64_of_int32:caml_int64_of_int32, - caml_int64_to_int32:caml_int64_to_int32, - caml_int64_to_float:caml_int64_to_float, - caml_int64_of_float:caml_int64_of_float, - caml_int64_format:caml_int64_format, - caml_int64_of_string:caml_int64_of_string, - caml_int64_create_lo_mi_hi:caml_int64_create_lo_mi_hi, - caml_int64_create_lo_hi:caml_int64_create_lo_hi, - caml_int64_lo32:caml_int64_lo32, - caml_int64_hi32:caml_int64_hi32, - caml_int64_of_bytes:caml_int64_of_bytes, - caml_int64_to_bytes:caml_int64_to_bytes, - caml_int64_hash:caml_int64_hash, - jsoo_floor_log2:jsoo_floor_log2, - caml_int64_bits_of_float:caml_int64_bits_of_float, - caml_int32_bits_of_float:caml_int32_bits_of_float, - caml_hexstring_of_float:caml_hexstring_of_float, - caml_int64_float_of_bits:caml_int64_float_of_bits, - caml_nextafter_float:caml_nextafter_float, - caml_trunc_float:caml_trunc_float, - caml_int32_float_of_bits:caml_int32_float_of_bits, - caml_classify_float:caml_classify_float, - caml_modf_float:caml_modf_float, - caml_ldexp_float:caml_ldexp_float, - caml_frexp_float:caml_frexp_float, - caml_float_compare:caml_float_compare, - caml_copysign_float:caml_copysign_float, - caml_signbit_float:caml_signbit_float, - caml_expm1_float:caml_expm1_float, - caml_exp2_float:caml_exp2_float, - caml_log1p_float:caml_log1p_float, - caml_log2_float:caml_log2_float, - caml_hypot_float:caml_hypot_float, - caml_log10_float:caml_log10_float, - caml_cosh_float:caml_cosh_float, - caml_acosh_float:caml_acosh_float, - caml_sinh_float:caml_sinh_float, - caml_asinh_float:caml_asinh_float, - caml_tanh_float:caml_tanh_float, - caml_atanh_float:caml_atanh_float, - caml_round_float:caml_round_float, - caml_cbrt_float:caml_cbrt_float, - caml_erf_float:caml_erf_float, - caml_erfc_float:caml_erfc_float, - caml_fma_float:caml_fma_float, - caml_format_float:caml_format_float, - caml_float_of_string:caml_float_of_string, - caml_hash_univ_param:caml_hash_univ_param, - caml_hash_mix_int:caml_hash_mix_int, - caml_hash_mix_final:caml_hash_mix_final, - caml_hash_mix_float:caml_hash_mix_float, - caml_hash_mix_int64:caml_hash_mix_int64, - caml_hash_mix_jsbytes:caml_hash_mix_jsbytes, - caml_hash_mix_bytes_arr:caml_hash_mix_bytes_arr, - caml_hash_mix_bytes:caml_hash_mix_bytes, - caml_hash_mix_string:caml_hash_mix_string, - caml_hash:caml_hash, - caml_gr_state:caml_gr_state, - caml_gr_state_get:caml_gr_state_get, - caml_gr_state_set:caml_gr_state_set, - caml_gr_open_graph:caml_gr_open_graph, - caml_gr_state_init:caml_gr_state_init, - caml_gr_state_create:caml_gr_state_create, - caml_gr_doc_of_state:caml_gr_doc_of_state, - caml_gr_close_graph:caml_gr_close_graph, - caml_gr_set_window_title:caml_gr_set_window_title, - caml_gr_resize_window:caml_gr_resize_window, - caml_gr_clear_graph:caml_gr_clear_graph, - caml_gr_size_x:caml_gr_size_x, - caml_gr_size_y:caml_gr_size_y, - caml_gr_set_color:caml_gr_set_color, - caml_gr_plot:caml_gr_plot, - caml_gr_point_color:caml_gr_point_color, - caml_gr_moveto:caml_gr_moveto, - caml_gr_current_x:caml_gr_current_x, - caml_gr_current_y:caml_gr_current_y, - caml_gr_lineto:caml_gr_lineto, - caml_gr_draw_rect:caml_gr_draw_rect, - caml_gr_arc_aux:caml_gr_arc_aux, - caml_gr_draw_arc:caml_gr_draw_arc, - caml_gr_set_line_width:caml_gr_set_line_width, - caml_gr_fill_rect:caml_gr_fill_rect, - caml_gr_fill_poly:caml_gr_fill_poly, - caml_gr_fill_arc:caml_gr_fill_arc, - caml_gr_draw_str:caml_gr_draw_str, - caml_gr_draw_char:caml_gr_draw_char, - caml_gr_draw_string:caml_gr_draw_string, - caml_gr_set_font:caml_gr_set_font, - caml_gr_set_text_size:caml_gr_set_text_size, - caml_gr_text_size:caml_gr_text_size, - caml_gr_make_image:caml_gr_make_image, - caml_gr_dump_image:caml_gr_dump_image, - caml_gr_draw_image:caml_gr_draw_image, - caml_gr_create_image:caml_gr_create_image, - caml_gr_blit_image:caml_gr_blit_image, - caml_gr_sigio_handler:caml_gr_sigio_handler, - caml_gr_sigio_signal:caml_gr_sigio_signal, - caml_gr_wait_event:caml_gr_wait_event, - caml_gr_synchronize:caml_gr_synchronize, - caml_gr_remember_mode:caml_gr_remember_mode, - caml_gr_display_mode:caml_gr_display_mode, - caml_gr_window_id:caml_gr_window_id, - caml_gr_open_subwindow:caml_gr_open_subwindow, - caml_gr_close_subwindow:caml_gr_close_subwindow, - caml_gc_minor:caml_gc_minor, - caml_gc_major:caml_gc_major, - caml_gc_full_major:caml_gc_full_major, - caml_gc_compaction:caml_gc_compaction, - caml_gc_counters:caml_gc_counters, - caml_gc_quick_stat:caml_gc_quick_stat, - caml_gc_stat:caml_gc_stat, - caml_gc_set:caml_gc_set, - caml_gc_get:caml_gc_get, - caml_memprof_set:caml_memprof_set, - caml_final_register:caml_final_register, - caml_final_register_called_without_value: - caml_final_register_called_without_value, - caml_final_release:caml_final_release, - caml_memprof_start:caml_memprof_start, - caml_memprof_stop:caml_memprof_stop, - caml_eventlog_resume:caml_eventlog_resume, - caml_eventlog_pause:caml_eventlog_pause, - caml_gc_huge_fallback_count:caml_gc_huge_fallback_count, - caml_gc_major_slice:caml_gc_major_slice, - caml_gc_minor_words:caml_gc_minor_words, - caml_get_minor_free:caml_get_minor_free, - caml_get_major_bucket:caml_get_major_bucket, - caml_get_major_credit:caml_get_major_credit, - fs_node_supported:fs_node_supported, - MlNodeDevice:MlNodeDevice, - MlNodeFile:MlNodeFile, - MlFakeDevice:MlFakeDevice, - MlFakeFile:MlFakeFile, - caml_trailing_slash:caml_trailing_slash, - caml_current_dir:caml_current_dir, - caml_get_root:caml_get_root, - caml_root:caml_root, - MlFile:MlFile, - path_is_absolute:path_is_absolute, - caml_make_path:caml_make_path, - jsoo_mount_point:jsoo_mount_point, - caml_list_mount_point:caml_list_mount_point, - resolve_fs_device:resolve_fs_device, - caml_mount_autoload:caml_mount_autoload, - caml_unmount:caml_unmount, - caml_sys_getcwd:caml_sys_getcwd, - caml_sys_chdir:caml_sys_chdir, - caml_raise_no_such_file:caml_raise_no_such_file, - caml_raise_not_a_dir:caml_raise_not_a_dir, - caml_sys_file_exists:caml_sys_file_exists, - caml_sys_read_directory:caml_sys_read_directory, - caml_sys_remove:caml_sys_remove, - caml_sys_is_directory:caml_sys_is_directory, - caml_sys_rename:caml_sys_rename, - caml_sys_mkdir:caml_sys_mkdir, - caml_sys_rmdir:caml_sys_rmdir, - caml_ba_map_file:caml_ba_map_file, - caml_ba_map_file_bytecode:caml_ba_map_file_bytecode, - jsoo_create_file_extern:jsoo_create_file_extern, - caml_fs_init:caml_fs_init, - caml_create_file:caml_create_file, - jsoo_create_file:jsoo_create_file, - caml_read_file_content:caml_read_file_content, - caml_parse_format:caml_parse_format, - caml_finish_formatting:caml_finish_formatting, - caml_raise_constant:caml_raise_constant, - caml_return_exn_constant:caml_return_exn_constant, - caml_raise_with_arg:caml_raise_with_arg, - caml_raise_with_args:caml_raise_with_args, - caml_raise_with_string:caml_raise_with_string, - caml_failwith:caml_failwith, - caml_invalid_argument:caml_invalid_argument, - caml_raise_end_of_file:caml_raise_end_of_file, - caml_raise_zero_divide:caml_raise_zero_divide, - caml_raise_not_found:caml_raise_not_found, - caml_array_bound_error:caml_array_bound_error, - caml_compare_val_tag:caml_compare_val_tag, - caml_compare_val_get_custom:caml_compare_val_get_custom, - caml_compare_val_number_custom:caml_compare_val_number_custom, - caml_compare_val:caml_compare_val, - caml_compare:caml_compare, - caml_int_compare:caml_int_compare, - caml_equal:caml_equal, - caml_notequal:caml_notequal, - caml_greaterequal:caml_greaterequal, - caml_greaterthan:caml_greaterthan, - caml_lessequal:caml_lessequal, - caml_lessthan:caml_lessthan, - caml_blit_bigstring_to_bigstring:caml_blit_bigstring_to_bigstring, - caml_blit_bigstring_to_string:caml_blit_bigstring_to_string, - caml_blit_string_to_bigstring:caml_blit_string_to_bigstring, - caml_hash_mix_bigstring:caml_hash_mix_bigstring, - bigstring_to_array_buffer:bigstring_to_array_buffer, - bigstring_to_typed_array:bigstring_to_typed_array, - bigstring_of_array_buffer:bigstring_of_array_buffer, - bigstring_of_typed_array:bigstring_of_typed_array, - caml_bigstring_memcmp:caml_bigstring_memcmp, - caml_bigstring_blit_ba_to_ba:caml_bigstring_blit_ba_to_ba, - caml_bigstring_blit_string_to_ba:caml_bigstring_blit_string_to_ba, - caml_bigstring_blit_bytes_to_ba:caml_bigstring_blit_bytes_to_ba, - caml_bigstring_blit_ba_to_bytes:caml_bigstring_blit_ba_to_bytes, - caml_ba_init:caml_ba_init, - caml_ba_get_size:caml_ba_get_size, - caml_ba_get_size_per_element:caml_ba_get_size_per_element, - caml_ba_create_buffer:caml_ba_create_buffer, - caml_ba_custom_name:caml_ba_custom_name, - Ml_Bigarray:Ml_Bigarray, - Ml_Bigarray_c_1_1:Ml_Bigarray_c_1_1, - caml_ba_compare:caml_ba_compare, - caml_ba_create_unsafe:caml_ba_create_unsafe, - caml_ba_create:caml_ba_create, - caml_ba_change_layout:caml_ba_change_layout, - caml_ba_kind:caml_ba_kind, - caml_ba_layout:caml_ba_layout, - caml_ba_num_dims:caml_ba_num_dims, - caml_ba_dim:caml_ba_dim, - caml_ba_dim_1:caml_ba_dim_1, - caml_ba_dim_2:caml_ba_dim_2, - caml_ba_dim_3:caml_ba_dim_3, - caml_ba_get_generic:caml_ba_get_generic, - caml_ba_uint8_get16:caml_ba_uint8_get16, - caml_ba_uint8_get32:caml_ba_uint8_get32, - caml_ba_uint8_get64:caml_ba_uint8_get64, - caml_ba_get_1:caml_ba_get_1, - caml_ba_get_2:caml_ba_get_2, - caml_ba_get_3:caml_ba_get_3, - caml_ba_set_generic:caml_ba_set_generic, - caml_ba_uint8_set16:caml_ba_uint8_set16, - caml_ba_uint8_set32:caml_ba_uint8_set32, - caml_ba_uint8_set64:caml_ba_uint8_set64, - caml_ba_set_1:caml_ba_set_1, - caml_ba_set_2:caml_ba_set_2, - caml_ba_set_3:caml_ba_set_3, - caml_ba_fill:caml_ba_fill, - caml_ba_blit:caml_ba_blit, - caml_ba_sub:caml_ba_sub, - caml_ba_slice:caml_ba_slice, - caml_ba_reshape:caml_ba_reshape, - caml_ba_serialize:caml_ba_serialize, - caml_ba_deserialize:caml_ba_deserialize, - caml_ba_create_from:caml_ba_create_from, - caml_ba_hash:caml_ba_hash, - caml_ba_to_typed_array:caml_ba_to_typed_array, - caml_ba_kind_of_typed_array:caml_ba_kind_of_typed_array, - caml_ba_from_typed_array:caml_ba_from_typed_array, - caml_ml_debug_info_status:caml_ml_debug_info_status, - caml_backtrace_status:caml_backtrace_status, - caml_get_exception_backtrace:caml_get_exception_backtrace, - caml_get_exception_raw_backtrace:caml_get_exception_raw_backtrace, - caml_record_backtrace:caml_record_backtrace, - caml_convert_raw_backtrace:caml_convert_raw_backtrace, - caml_raw_backtrace_length:caml_raw_backtrace_length, - caml_raw_backtrace_next_slot:caml_raw_backtrace_next_slot, - caml_raw_backtrace_slot:caml_raw_backtrace_slot, - caml_restore_raw_backtrace:caml_restore_raw_backtrace, - caml_get_current_callstack:caml_get_current_callstack, - caml_convert_raw_backtrace_slot:caml_convert_raw_backtrace_slot, - caml_array_sub:caml_array_sub, - caml_array_append:caml_array_append, - caml_array_concat:caml_array_concat, - caml_array_blit:caml_array_blit, - caml_floatarray_blit:caml_floatarray_blit, - caml_array_set:caml_array_set, - caml_array_get:caml_array_get, - caml_array_fill:caml_array_fill, - caml_check_bound:caml_check_bound, - caml_make_vect:caml_make_vect, - caml_make_float_vect:caml_make_float_vect, - caml_floatarray_create:caml_floatarray_create}; - caml_fs_init(); - caml_register_global - (0,[248,caml_string_of_jsbytes("Out_of_memory"),-1],"Out_of_memory"); - caml_register_global - (1,[248,caml_string_of_jsbytes("Sys_error"),-2],"Sys_error"); - caml_register_global - (2,[248,caml_string_of_jsbytes("Failure"),-3],"Failure"); - caml_register_global - (3, - [248,caml_string_of_jsbytes("Invalid_argument"),-4], - "Invalid_argument"); - caml_register_global - (4,[248,caml_string_of_jsbytes("End_of_file"),-5],"End_of_file"); - caml_register_global - (5, - [248,caml_string_of_jsbytes("Division_by_zero"),-6], - "Division_by_zero"); - caml_register_global - (6,[248,caml_string_of_jsbytes("Not_found"),-7],"Not_found"); - caml_register_global - (7,[248,caml_string_of_jsbytes("Match_failure"),-8],"Match_failure"); - caml_register_global - (8,[248,caml_string_of_jsbytes("Stack_overflow"),-9],"Stack_overflow"); - caml_register_global - (9,[248,caml_string_of_jsbytes("Sys_blocked_io"),-10],"Sys_blocked_io"); - caml_register_global - (10,[248,caml_string_of_jsbytes("Assert_failure"),-11],"Assert_failure"); - caml_register_global - (11, - [248,caml_string_of_jsbytes("Undefined_recursive_module"),-12], - "Undefined_recursive_module"); - return} - (globalThis)); - - -//# 1 "../../.js/stdlib/stdlib.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_array_concat=runtime.caml_array_concat, - caml_array_get=runtime.caml_array_get, - caml_array_set=runtime.caml_array_set, - caml_array_sub=runtime.caml_array_sub, - caml_ba_change_layout=runtime.caml_ba_change_layout, - caml_ba_create=runtime.caml_ba_create, - caml_ba_dim_1=runtime.caml_ba_dim_1, - caml_ba_dim_2=runtime.caml_ba_dim_2, - caml_ba_kind=runtime.caml_ba_kind, - caml_ba_num_dims=runtime.caml_ba_num_dims, - caml_ba_reshape=runtime.caml_ba_reshape, - caml_ba_set_1=runtime.caml_ba_set_1, - caml_ba_set_2=runtime.caml_ba_set_2, - caml_ba_set_3=runtime.caml_ba_set_3, - caml_ba_set_generic=runtime.caml_ba_set_generic, - caml_ba_slice=runtime.caml_ba_slice, - caml_blit_bytes=runtime.caml_blit_bytes, - caml_blit_string=runtime.caml_blit_string, - caml_bswap16=runtime.caml_bswap16, - caml_bytes_get=runtime.caml_bytes_get, - caml_bytes_get16=runtime.caml_bytes_get16, - caml_bytes_get32=runtime.caml_bytes_get32, - caml_bytes_get64=runtime.caml_bytes_get64, - caml_bytes_of_string=runtime.caml_bytes_of_string, - caml_bytes_set=runtime.caml_bytes_set, - caml_bytes_set16=runtime.caml_bytes_set16, - caml_bytes_set32=runtime.caml_bytes_set32, - caml_bytes_set64=runtime.caml_bytes_set64, - 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_compare=runtime.caml_compare, - caml_create_bytes=runtime.caml_create_bytes, - caml_div=runtime.caml_div, - caml_ephe_set_key=runtime.caml_ephe_set_key, - caml_ephe_unset_key=runtime.caml_ephe_unset_key, - caml_equal=runtime.caml_equal, - caml_fill_bytes=runtime.caml_fill_bytes, - caml_float_compare=runtime.caml_float_compare, - caml_float_of_string=runtime.caml_float_of_string, - caml_floatarray_blit=runtime.caml_floatarray_blit, - caml_floatarray_create=runtime.caml_floatarray_create, - caml_format_float=runtime.caml_format_float, - caml_format_int=runtime.caml_format_int, - caml_fresh_oo_id=runtime.caml_fresh_oo_id, - caml_get_exception_raw_backtra=runtime.caml_get_exception_raw_backtrace, - caml_get_public_method=runtime.caml_get_public_method, - caml_greaterequal=runtime.caml_greaterequal, - caml_greaterthan=runtime.caml_greaterthan, - caml_hash=runtime.caml_hash, - caml_input_value=runtime.caml_input_value, - caml_int32_bswap=runtime.caml_int32_bswap, - caml_int64_add=runtime.caml_int64_add, - caml_int64_bswap=runtime.caml_int64_bswap, - caml_int64_compare=runtime.caml_int64_compare, - caml_int64_float_of_bits=runtime.caml_int64_float_of_bits, - caml_int64_format=runtime.caml_int64_format, - caml_int64_mul=runtime.caml_int64_mul, - caml_int64_of_int32=runtime.caml_int64_of_int32, - caml_int64_of_string=runtime.caml_int64_of_string, - caml_int64_or=runtime.caml_int64_or, - caml_int64_shift_left=runtime.caml_int64_shift_left, - caml_int64_shift_right_unsigne=runtime.caml_int64_shift_right_unsigned, - caml_int64_sub=runtime.caml_int64_sub, - caml_int_compare=runtime.caml_int_compare, - caml_int_of_string=runtime.caml_int_of_string, - caml_lessequal=runtime.caml_lessequal, - caml_lessthan=runtime.caml_lessthan, - caml_make_vect=runtime.caml_make_vect, - caml_marshal_data_size=runtime.caml_marshal_data_size, - caml_md5_string=runtime.caml_md5_string, - caml_ml_bytes_length=runtime.caml_ml_bytes_length, - caml_ml_channel_size=runtime.caml_ml_channel_size, - caml_ml_channel_size_64=runtime.caml_ml_channel_size_64, - caml_ml_close_channel=runtime.caml_ml_close_channel, - caml_ml_flush=runtime.caml_ml_flush, - caml_ml_input=runtime.caml_ml_input, - caml_ml_input_char=runtime.caml_ml_input_char, - caml_ml_open_descriptor_in=runtime.caml_ml_open_descriptor_in, - caml_ml_open_descriptor_out=runtime.caml_ml_open_descriptor_out, - caml_ml_output=runtime.caml_ml_output, - caml_ml_output_bytes=runtime.caml_ml_output_bytes, - caml_ml_output_char=runtime.caml_ml_output_char, - caml_ml_pos_in=runtime.caml_ml_pos_in, - caml_ml_set_binary_mode=runtime.caml_ml_set_binary_mode, - caml_ml_set_channel_name=runtime.caml_ml_set_channel_name, - caml_ml_string_length=runtime.caml_ml_string_length, - caml_mod=runtime.caml_mod, - caml_mul=runtime.caml_mul, - caml_nextafter_float=runtime.caml_nextafter_float, - caml_notequal=runtime.caml_notequal, - caml_obj_block=runtime.caml_obj_block, - caml_obj_make_forward=runtime.caml_obj_make_forward, - caml_obj_tag=runtime.caml_obj_tag, - caml_output_value=runtime.caml_output_value, - caml_register_global=runtime.caml_register_global, - caml_register_named_value=runtime.caml_register_named_value, - caml_restore_raw_backtrace=runtime.caml_restore_raw_backtrace, - caml_set_oo_id=runtime.caml_set_oo_id, - caml_signbit_float=runtime.caml_signbit_float, - caml_string_compare=runtime.caml_string_compare, - caml_string_equal=runtime.caml_string_equal, - caml_string_get=runtime.caml_string_get, - caml_string_notequal=runtime.caml_string_notequal, - caml_string_of_bytes=runtime.caml_string_of_bytes, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_string_unsafe_get=runtime.caml_string_unsafe_get, - caml_sys_argv=runtime.caml_sys_argv, - caml_sys_getenv=runtime.caml_sys_getenv, - caml_sys_open=runtime.caml_sys_open, - caml_sys_random_seed=runtime.caml_sys_random_seed, - caml_trampoline=runtime.caml_trampoline, - caml_trampoline_return=runtime.caml_trampoline_return, - 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])} - function caml_call7(f,a0,a1,a2,a3,a4,a5,a6) - {return f.length == 7 - ?f(a0,a1,a2,a3,a4,a5,a6) - :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])} - var - global_data=runtime.caml_get_global_data(), - cst$0=caml_string_of_jsbytes("%,"), - cst_really_input=caml_string_of_jsbytes("really_input"), - cst_input=caml_string_of_jsbytes("input"), - cst_output_substring=caml_string_of_jsbytes("output_substring"), - cst_output=caml_string_of_jsbytes("output"), - cst_12g=caml_string_of_jsbytes("%.12g"), - cst=caml_string_of_jsbytes("."), - cst_false$1=caml_string_of_jsbytes("false"), - cst_true$1=caml_string_of_jsbytes("true"), - cst_false$0=caml_string_of_jsbytes("false"), - cst_true$0=caml_string_of_jsbytes("true"), - cst_bool_of_string=caml_string_of_jsbytes("bool_of_string"), - cst_true=caml_string_of_jsbytes("true"), - cst_false=caml_string_of_jsbytes("false"), - cst_char_of_int=caml_string_of_jsbytes("char_of_int"), - cst_Stdlib_Exit=caml_string_of_jsbytes("Stdlib.Exit"), - 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], - cst_Obj_Ephemeron_blit_key= - caml_string_of_jsbytes("Obj.Ephemeron.blit_key"), - cst_Obj_Ephemeron_check_key= - caml_string_of_jsbytes("Obj.Ephemeron.check_key"), - cst_Obj_Ephemeron_unset_key= - caml_string_of_jsbytes("Obj.Ephemeron.unset_key"), - cst_Obj_Ephemeron_set_key=caml_string_of_jsbytes("Obj.Ephemeron.set_key"), - cst_Obj_Ephemeron_get_key_copy= - caml_string_of_jsbytes("Obj.Ephemeron.get_key_copy"), - cst_Obj_Ephemeron_get_key=caml_string_of_jsbytes("Obj.Ephemeron.get_key"), - cst_Obj_Ephemeron_create=caml_string_of_jsbytes("Obj.Ephemeron.create"), - cst_Obj_extension_constructor$0= - caml_string_of_jsbytes("Obj.extension_constructor"), - cst_Obj_extension_constructor= - caml_string_of_jsbytes("Obj.extension_constructor"), - cst_CamlinternalLazy_Undefined= - caml_string_of_jsbytes("CamlinternalLazy.Undefined"), - cst_Seq_drop=caml_string_of_jsbytes("Seq.drop"), - cst_Seq_take=caml_string_of_jsbytes("Seq.take"), - cst_Seq_init=caml_string_of_jsbytes("Seq.init"), - cst_Stdlib_Seq_Forced_twice= - caml_string_of_jsbytes("Stdlib.Seq.Forced_twice"), - cst_option_is_None=caml_string_of_jsbytes("option is None"), - cst_result_is_Ok=caml_string_of_jsbytes("result is Ok _"), - cst_result_is_Error=caml_string_of_jsbytes("result is Error _"), - cst_true$2=caml_string_of_jsbytes("true"), - cst_false$2=caml_string_of_jsbytes("false"), - cst$1=caml_string_of_jsbytes("\\\\"), - cst$2=caml_string_of_jsbytes("\\'"), - cst_b=caml_string_of_jsbytes("\\b"), - cst_t=caml_string_of_jsbytes("\\t"), - cst_n=caml_string_of_jsbytes("\\n"), - cst_r=caml_string_of_jsbytes("\\r"), - cst_Char_chr=caml_string_of_jsbytes("Char.chr"), - cst_is_not_a_latin1_character= - caml_string_of_jsbytes(" is not a latin1 character"), - cst_04X=caml_string_of_jsbytes("%04X"), - cst_U=caml_string_of_jsbytes("U+"), - cst_is_not_an_Unicode_scalar_v= - caml_string_of_jsbytes(" is not an Unicode scalar value"), - cst_X=caml_string_of_jsbytes("%X"), - err_no_pred=caml_string_of_jsbytes("U+0000 has no predecessor"), - err_no_succ=caml_string_of_jsbytes("U+10FFFF has no successor"), - cst_List_map2=caml_string_of_jsbytes("List.map2"), - cst_List_iter2=caml_string_of_jsbytes("List.iter2"), - cst_List_fold_left2=caml_string_of_jsbytes("List.fold_left2"), - cst_List_fold_right2=caml_string_of_jsbytes("List.fold_right2"), - cst_List_for_all2=caml_string_of_jsbytes("List.for_all2"), - cst_List_exists2=caml_string_of_jsbytes("List.exists2"), - cst_List_combine=caml_string_of_jsbytes("List.combine"), - cst_List_rev_map2=caml_string_of_jsbytes("List.rev_map2"), - cst_List_init=caml_string_of_jsbytes("List.init"), - cst_List_nth$0=caml_string_of_jsbytes("List.nth"), - cst_nth=caml_string_of_jsbytes("nth"), - cst_List_nth=caml_string_of_jsbytes("List.nth"), - cst_tl=caml_string_of_jsbytes("tl"), - cst_hd=caml_string_of_jsbytes("hd"), - cst_index_out_of_bounds$2=caml_string_of_jsbytes("index out of bounds"), - cst_index_out_of_bounds$1=caml_string_of_jsbytes("index out of bounds"), - cst_index_out_of_bounds$0=caml_string_of_jsbytes("index out of bounds"), - cst_index_out_of_bounds=caml_string_of_jsbytes("index out of bounds"), - cst_Bytes_of_seq_cannot_grow_b= - caml_string_of_jsbytes("Bytes.of_seq: cannot grow bytes"), - cst_String_rcontains_from_Byte= - caml_string_of_jsbytes("String.rcontains_from / Bytes.rcontains_from"), - cst_String_contains_from_Bytes= - caml_string_of_jsbytes("String.contains_from / Bytes.contains_from"), - cst_String_rindex_from_opt_Byt= - caml_string_of_jsbytes("String.rindex_from_opt / Bytes.rindex_from_opt"), - cst_String_rindex_from_Bytes_r= - caml_string_of_jsbytes("String.rindex_from / Bytes.rindex_from"), - cst_String_index_from_opt_Byte= - caml_string_of_jsbytes("String.index_from_opt / Bytes.index_from_opt"), - cst_String_index_from_Bytes_in= - caml_string_of_jsbytes("String.index_from / Bytes.index_from"), - cst_Bytes_concat=caml_string_of_jsbytes("Bytes.concat"), - cst_String_blit_Bytes_blit_str= - caml_string_of_jsbytes("String.blit / Bytes.blit_string"), - cst_Bytes_blit=caml_string_of_jsbytes("Bytes.blit"), - cst_String_fill_Bytes_fill= - caml_string_of_jsbytes("String.fill / Bytes.fill"), - cst_Bytes_extend=caml_string_of_jsbytes("Bytes.extend"), - cst_String_sub_Bytes_sub=caml_string_of_jsbytes("String.sub / Bytes.sub"), - cst_String_rcontains_from_Byte$0= - caml_string_of_jsbytes("String.rcontains_from / Bytes.rcontains_from"), - cst_String_contains_from_Bytes$0= - caml_string_of_jsbytes("String.contains_from / Bytes.contains_from"), - cst_String_rindex_from_opt_Byt$0= - caml_string_of_jsbytes("String.rindex_from_opt / Bytes.rindex_from_opt"), - cst_String_rindex_from_Bytes_r$0= - caml_string_of_jsbytes("String.rindex_from / Bytes.rindex_from"), - cst_String_index_from_opt_Byte$0= - caml_string_of_jsbytes("String.index_from_opt / Bytes.index_from_opt"), - cst_String_index_from_Bytes_in$0= - caml_string_of_jsbytes("String.index_from / Bytes.index_from"), - cst$4=caml_string_of_jsbytes(""), - cst$3=caml_string_of_jsbytes(""), - cst_String_concat=caml_string_of_jsbytes("String.concat"), - empty$1=caml_string_of_jsbytes(""), - cst$5=caml_string_of_jsbytes("()"), - cst_Marshal_from_bytes=caml_string_of_jsbytes("Marshal.from_bytes"), - cst_Marshal_from_bytes$0=caml_string_of_jsbytes("Marshal.from_bytes"), - cst_Marshal_data_size=caml_string_of_jsbytes("Marshal.data_size"), - cst_Marshal_to_buffer_substrin= - caml_string_of_jsbytes("Marshal.to_buffer: substring out of bounds"), - cst_Array_combine=caml_string_of_jsbytes("Array.combine"), - cst_Array_exists2=caml_string_of_jsbytes("Array.exists2"), - cst_Array_for_all2=caml_string_of_jsbytes("Array.for_all2"), - cst_Array_map2_arrays_must_hav= - caml_string_of_jsbytes("Array.map2: arrays must have the same length"), - cst_Array_iter2_arrays_must_ha= - caml_string_of_jsbytes("Array.iter2: arrays must have the same length"), - cst_Array_blit=caml_string_of_jsbytes("Array.blit"), - cst_Array_fill=caml_string_of_jsbytes("Array.fill"), - cst_Array_sub=caml_string_of_jsbytes("Array.sub"), - cst_Array_init=caml_string_of_jsbytes("Array.init"), - cst_Stdlib_Array_Bottom=caml_string_of_jsbytes("Stdlib.Array.Bottom"), - cst_Float_Array_map2_arrays_mu= - caml_string_of_jsbytes - ("Float.Array.map2: arrays must have the same length"), - cst_Float_Array_iter2_arrays_m= - caml_string_of_jsbytes - ("Float.Array.iter2: arrays must have the same length"), - cst_Float_array_blit=caml_string_of_jsbytes("Float.array.blit"), - cst_Float_array_blit$0=caml_string_of_jsbytes("Float.array.blit"), - cst_Float_Array_fill=caml_string_of_jsbytes("Float.Array.fill"), - cst_Float_Array_sub=caml_string_of_jsbytes("Float.Array.sub"), - cst_Float_Array_concat=caml_string_of_jsbytes("Float.Array.concat"), - cst_Float_Array_init=caml_string_of_jsbytes("Float.Array.init"), - cst_Stdlib_Float_Array_Bottom= - caml_string_of_jsbytes("Stdlib.Float.Array.Bottom"), - cst_d=caml_string_of_jsbytes("%d"), - cst_d$0=caml_string_of_jsbytes("%d"), - zero$2=runtime.caml_int64_create_lo_mi_hi(0,0,0), - one$2=runtime.caml_int64_create_lo_mi_hi(1,0,0), - minus_one$2=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65535), - min_int$2=runtime.caml_int64_create_lo_mi_hi(0,0,32768), - max_int$2=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,32767), - cst_d$1=caml_string_of_jsbytes("%d"), - cst_Lexing_lex_refill_cannot_g= - caml_string_of_jsbytes("Lexing.lex_refill: cannot grow buffer"), - dummy_pos=[0,caml_string_of_jsbytes(""),0,0,-1], - zero_pos=[0,caml_string_of_jsbytes(""),1,0,0], - cst_syntax_error=caml_string_of_jsbytes("syntax error"), - cst_Stdlib_Parsing_YYexit=caml_string_of_jsbytes("Stdlib.Parsing.YYexit"), - cst_Stdlib_Parsing_Parse_error= - caml_string_of_jsbytes("Stdlib.Parsing.Parse_error"), - cst_Set_remove_min_elt=caml_string_of_jsbytes("Set.remove_min_elt"), - cst_Set_bal=caml_string_of_jsbytes("Set.bal"), - cst_Set_bal$0=caml_string_of_jsbytes("Set.bal"), - cst_Set_bal$1=caml_string_of_jsbytes("Set.bal"), - cst_Set_bal$2=caml_string_of_jsbytes("Set.bal"), - cst_Map_remove_min_elt=caml_string_of_jsbytes("Map.remove_min_elt"), - cst_Map_bal=caml_string_of_jsbytes("Map.bal"), - cst_Map_bal$0=caml_string_of_jsbytes("Map.bal"), - cst_Map_bal$1=caml_string_of_jsbytes("Map.bal"), - cst_Map_bal$2=caml_string_of_jsbytes("Map.bal"), - cst_Stdlib_Stack_Empty=caml_string_of_jsbytes("Stdlib.Stack.Empty"), - cst_Stdlib_Queue_Empty=caml_string_of_jsbytes("Stdlib.Queue.Empty"), - cst_count=caml_string_of_jsbytes("{count = "), - cst_data=caml_string_of_jsbytes("; data = "), - cst$6=caml_string_of_jsbytes("}"), - cst_Sempty=caml_string_of_jsbytes("Sempty"), - cst_Scons=caml_string_of_jsbytes("Scons ("), - cst$7=caml_string_of_jsbytes(", "), - cst$8=caml_string_of_jsbytes(")"), - cst_Sapp=caml_string_of_jsbytes("Sapp ("), - cst$9=caml_string_of_jsbytes(", "), - cst$10=caml_string_of_jsbytes(")"), - cst_Slazy=caml_string_of_jsbytes("Slazy"), - cst_Sgen=caml_string_of_jsbytes("Sgen"), - cst_Sbuffio=caml_string_of_jsbytes("Sbuffio"), - cst_Stdlib_Stream_Failure=caml_string_of_jsbytes("Stdlib.Stream.Failure"), - cst_Stdlib_Stream_Error=caml_string_of_jsbytes("Stdlib.Stream.Error"), - cst_Buffer_truncate=caml_string_of_jsbytes("Buffer.truncate"), - cst_Buffer_add_channel=caml_string_of_jsbytes("Buffer.add_channel"), - cst_Buffer_add_substring_add_s= - caml_string_of_jsbytes("Buffer.add_substring/add_subbytes"), - cst_Buffer_add_cannot_grow_buf= - caml_string_of_jsbytes("Buffer.add: cannot grow buffer"), - cst_Buffer_nth=caml_string_of_jsbytes("Buffer.nth"), - cst_Buffer_blit=caml_string_of_jsbytes("Buffer.blit"), - cst_Buffer_sub=caml_string_of_jsbytes("Buffer.sub"), - cst_c=caml_string_of_jsbytes("%c"), - cst_s=caml_string_of_jsbytes("%s"), - cst_i=caml_string_of_jsbytes("%i"), - cst_li=caml_string_of_jsbytes("%li"), - cst_ni=caml_string_of_jsbytes("%ni"), - cst_Li=caml_string_of_jsbytes("%Li"), - cst_f=caml_string_of_jsbytes("%f"), - cst_B=caml_string_of_jsbytes("%B"), - cst$21=caml_string_of_jsbytes("%{"), - cst$22=caml_string_of_jsbytes("%}"), - cst$23=caml_string_of_jsbytes("%("), - cst$24=caml_string_of_jsbytes("%)"), - cst_a=caml_string_of_jsbytes("%a"), - cst_t$0=caml_string_of_jsbytes("%t"), - cst$25=caml_string_of_jsbytes("%?"), - cst_r$0=caml_string_of_jsbytes("%r"), - cst_r$1=caml_string_of_jsbytes("%_r"), - cst_u$0=caml_string_of_jsbytes("%u"), - cst_Printf_bad_conversion= - caml_string_of_jsbytes("Printf: bad conversion %["), - cst_Printf_bad_conversion$0= - caml_string_of_jsbytes("Printf: bad conversion %_"), - 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$34=caml_string_of_jsbytes("@{"), - cst$35=caml_string_of_jsbytes("@["), - cst_0=caml_string_of_jsbytes("0"), - cst_padding=caml_string_of_jsbytes("padding"), - cst_precision=caml_string_of_jsbytes("precision"), - cst$40=caml_string_of_jsbytes("'*'"), - cst$38=caml_string_of_jsbytes("'-'"), - cst_0$2=caml_string_of_jsbytes("'0'"), - cst$39=caml_string_of_jsbytes("'*'"), - cst_0$0=caml_string_of_jsbytes("0"), - cst_0$1=caml_string_of_jsbytes("0"), - cst_precision$0=caml_string_of_jsbytes("precision"), - cst_precision$1=caml_string_of_jsbytes("precision"), - cst$41=caml_string_of_jsbytes("'+'"), - cst$42=caml_string_of_jsbytes("'#'"), - cst$43=caml_string_of_jsbytes("' '"), - cst_padding$0=caml_string_of_jsbytes("`padding'"), - cst_precision$2=caml_string_of_jsbytes("`precision'"), - cst$44=caml_string_of_jsbytes("'+'"), - cst$45=caml_string_of_jsbytes("'_'"), - sub_format=[0,0,caml_string_of_jsbytes("")], - formatting_lit=[0,caml_string_of_jsbytes("@;"),1,0], - cst_digit=caml_string_of_jsbytes("digit"), - cst_character=caml_string_of_jsbytes("character ')'"), - cst_character$0=caml_string_of_jsbytes("character '}'"), - cst$49=caml_string_of_jsbytes("'#'"), - cst$46=caml_string_of_jsbytes("'+'"), - cst$47=caml_string_of_jsbytes("'+'"), - cst$48=caml_string_of_jsbytes("' '"), - cst$50=caml_string_of_jsbytes("'+'"), - cst_non_zero_widths_are_unsupp= - caml_string_of_jsbytes - ("non-zero widths are unsupported for %c conversions"), - cst_unexpected_end_of_format= - caml_string_of_jsbytes("unexpected end of format"), - cst$36=caml_string_of_jsbytes(""), - cst$37=caml_string_of_jsbytes(""), - cst_b$0=caml_string_of_jsbytes("b"), - cst_h=caml_string_of_jsbytes("h"), - cst_hov=caml_string_of_jsbytes("hov"), - cst_hv=caml_string_of_jsbytes("hv"), - cst_v=caml_string_of_jsbytes("v"), - cst_nan=caml_string_of_jsbytes("nan"), - cst_neg_infinity=caml_string_of_jsbytes("neg_infinity"), - cst_infinity=caml_string_of_jsbytes("infinity"), - cst$29=caml_string_of_jsbytes("."), - cst_nd$0=caml_string_of_jsbytes("%+nd"), - cst_nd$1=caml_string_of_jsbytes("% nd"), - cst_ni$1=caml_string_of_jsbytes("%+ni"), - cst_ni$2=caml_string_of_jsbytes("% ni"), - cst_nx=caml_string_of_jsbytes("%nx"), - cst_nx$0=caml_string_of_jsbytes("%#nx"), - cst_nX=caml_string_of_jsbytes("%nX"), - cst_nX$0=caml_string_of_jsbytes("%#nX"), - cst_no=caml_string_of_jsbytes("%no"), - cst_no$0=caml_string_of_jsbytes("%#no"), - cst_nd=caml_string_of_jsbytes("%nd"), - cst_ni$0=caml_string_of_jsbytes("%ni"), - cst_nu=caml_string_of_jsbytes("%nu"), - cst_ld$0=caml_string_of_jsbytes("%+ld"), - cst_ld$1=caml_string_of_jsbytes("% ld"), - cst_li$1=caml_string_of_jsbytes("%+li"), - cst_li$2=caml_string_of_jsbytes("% li"), - cst_lx=caml_string_of_jsbytes("%lx"), - cst_lx$0=caml_string_of_jsbytes("%#lx"), - cst_lX=caml_string_of_jsbytes("%lX"), - cst_lX$0=caml_string_of_jsbytes("%#lX"), - cst_lo=caml_string_of_jsbytes("%lo"), - cst_lo$0=caml_string_of_jsbytes("%#lo"), - cst_ld=caml_string_of_jsbytes("%ld"), - cst_li$0=caml_string_of_jsbytes("%li"), - cst_lu=caml_string_of_jsbytes("%lu"), - cst_Ld$0=caml_string_of_jsbytes("%+Ld"), - cst_Ld$1=caml_string_of_jsbytes("% Ld"), - cst_Li$1=caml_string_of_jsbytes("%+Li"), - cst_Li$2=caml_string_of_jsbytes("% Li"), - cst_Lx=caml_string_of_jsbytes("%Lx"), - cst_Lx$0=caml_string_of_jsbytes("%#Lx"), - cst_LX=caml_string_of_jsbytes("%LX"), - cst_LX$0=caml_string_of_jsbytes("%#LX"), - cst_Lo=caml_string_of_jsbytes("%Lo"), - cst_Lo$0=caml_string_of_jsbytes("%#Lo"), - cst_Ld=caml_string_of_jsbytes("%Ld"), - cst_Li$0=caml_string_of_jsbytes("%Li"), - cst_Lu=caml_string_of_jsbytes("%Lu"), - cst_d$3=caml_string_of_jsbytes("%+d"), - cst_d$4=caml_string_of_jsbytes("% d"), - cst_i$1=caml_string_of_jsbytes("%+i"), - cst_i$2=caml_string_of_jsbytes("% i"), - cst_x=caml_string_of_jsbytes("%x"), - cst_x$0=caml_string_of_jsbytes("%#x"), - cst_X$0=caml_string_of_jsbytes("%X"), - cst_X$1=caml_string_of_jsbytes("%#X"), - cst_o=caml_string_of_jsbytes("%o"), - cst_o$0=caml_string_of_jsbytes("%#o"), - cst_d$2=caml_string_of_jsbytes("%d"), - cst_i$0=caml_string_of_jsbytes("%i"), - cst_u=caml_string_of_jsbytes("%u"), - cst$26=caml_string_of_jsbytes("%!"), - cst$27=caml_string_of_jsbytes("@{"), - cst$28=caml_string_of_jsbytes("@["), - cst_0c=caml_string_of_jsbytes("0c"), - cst$20=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("@\n"), - 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$11=caml_string_of_jsbytes(".*"), - cst_CamlinternalFormat_Type_mi= - caml_string_of_jsbytes("CamlinternalFormat.Type_mismatch"), - cst$58=caml_string_of_jsbytes(""), - cst$59=caml_string_of_jsbytes("\n"), - cst_a_boolean=caml_string_of_jsbytes("a boolean"), - cst_an_integer=caml_string_of_jsbytes("an integer"), - cst_an_integer$0=caml_string_of_jsbytes("an integer"), - cst_a_float=caml_string_of_jsbytes("a float"), - cst_a_float$0=caml_string_of_jsbytes("a float"), - cst$55=caml_string_of_jsbytes(""), - cst$56=caml_string_of_jsbytes(" "), - cst$57=caml_string_of_jsbytes(""), - cst_one_of=caml_string_of_jsbytes("one of: "), - cst_Arg_Expand_is_is_only_allo= - caml_string_of_jsbytes - ("Arg.Expand is is only allowed with Arg.parse_and_expand_argv_dynamic"), - cst_no_argument=caml_string_of_jsbytes("no argument"), - cst$54=caml_string_of_jsbytes("(?)"), - cst_help$3=caml_string_of_jsbytes("--help"), - cst_help$4=caml_string_of_jsbytes("-help"), - cst_help$2=caml_string_of_jsbytes("-help"), - cst_Display_this_list_of_optio= - caml_string_of_jsbytes(" Display this list of options"), - cst_help=caml_string_of_jsbytes("-help"), - cst_help$1=caml_string_of_jsbytes("--help"), - cst_Display_this_list_of_optio$0= - caml_string_of_jsbytes(" Display this list of options"), - cst_help$0=caml_string_of_jsbytes("--help"), - cst$51=caml_string_of_jsbytes("}"), - cst$52=caml_string_of_jsbytes("|"), - cst$53=caml_string_of_jsbytes("{"), - cst_none=caml_string_of_jsbytes(""), - cst_Stdlib_Arg_Bad=caml_string_of_jsbytes("Stdlib.Arg.Bad"), - cst_Stdlib_Arg_Help=caml_string_of_jsbytes("Stdlib.Arg.Help"), - cst_Stdlib_Arg_Stop=caml_string_of_jsbytes("Stdlib.Arg.Stop"), - cst$61=caml_string_of_jsbytes(""), - cst_Fatal_error_out_of_memory_= - caml_string_of_jsbytes - ("Fatal error: out of memory in uncaught exception handler"), - cst$65=caml_string_of_jsbytes(""), - cst_Program_not_linked_with_g_= - caml_string_of_jsbytes - ("(Program not linked with -g, cannot print stack backtrace)\n"), - cst_Raised_at=caml_string_of_jsbytes("Raised at"), - cst_Re_raised_at=caml_string_of_jsbytes("Re-raised at"), - cst_Raised_by_primitive_operat= - caml_string_of_jsbytes("Raised by primitive operation at"), - cst_Called_from=caml_string_of_jsbytes("Called from"), - cst_inlined=caml_string_of_jsbytes(" (inlined)"), - cst$64=caml_string_of_jsbytes(""), - partial=[4,0,0,0,[12,45,[4,0,0,0,0]]], - cst_Out_of_memory=caml_string_of_jsbytes("Out of memory"), - cst_Stack_overflow=caml_string_of_jsbytes("Stack overflow"), - cst_Pattern_matching_failed= - caml_string_of_jsbytes("Pattern matching failed"), - cst_Assertion_failed=caml_string_of_jsbytes("Assertion failed"), - cst_Undefined_recursive_module= - caml_string_of_jsbytes("Undefined recursive module"), - cst$62=caml_string_of_jsbytes(""), - cst$63=caml_string_of_jsbytes(""), - cst$60=caml_string_of_jsbytes("_"), - locfmt= - [0, - [11, - caml_string_of_jsbytes('File "'), - [2, - 0, - [11, - caml_string_of_jsbytes('", line '), - [4, - 0, - 0, - 0, - [11, - caml_string_of_jsbytes(", characters "), - [4, - 0, - 0, - 0, - [12,45,[4,0,0,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]]]]]]]], - caml_string_of_jsbytes('File "%s", line %d, characters %d-%d: %s')], - cst_Fun_Finally_raised=caml_string_of_jsbytes("Fun.Finally_raised: "), - cst_Stdlib_Fun_Finally_raised= - caml_string_of_jsbytes("Stdlib.Fun.Finally_raised"), - cst_Digest_from_hex$0=caml_string_of_jsbytes("Digest.from_hex"), - cst_Digest_from_hex=caml_string_of_jsbytes("Digest.from_hex"), - cst_Digest_to_hex=caml_string_of_jsbytes("Digest.to_hex"), - cst_Digest_substring=caml_string_of_jsbytes("Digest.substring"), - cst_Random_int64=caml_string_of_jsbytes("Random.int64"), - cst_Random_int32=caml_string_of_jsbytes("Random.int32"), - cst_Random_full_int=caml_string_of_jsbytes("Random.full_int"), - cst_Random_int=caml_string_of_jsbytes("Random.int"), - cst_x$1=caml_string_of_jsbytes("x"), - cst_Hashtbl_unsupported_hash_t= - caml_string_of_jsbytes("Hashtbl: unsupported hash table format"), - cst_OCAMLRUNPARAM=caml_string_of_jsbytes("OCAMLRUNPARAM"), - cst_CAMLRUNPARAM=caml_string_of_jsbytes("CAMLRUNPARAM"), - cst$66=caml_string_of_jsbytes(""), - cst_Weak_Make_hash_bucket_cann= - caml_string_of_jsbytes("Weak.Make: hash bucket cannot grow more"), - cst_Weak_fill=caml_string_of_jsbytes("Weak.fill"), - cst_Weak_blit=caml_string_of_jsbytes("Weak.blit"), - cst_Weak_check=caml_string_of_jsbytes("Weak.check"), - cst_Weak_get_copy=caml_string_of_jsbytes("Weak.get_copy"), - cst_Weak_get=caml_string_of_jsbytes("Weak.get"), - cst_Weak_set=caml_string_of_jsbytes("Weak.set"), - cst_Weak_create=caml_string_of_jsbytes("Weak.create"), - cst$84=caml_string_of_jsbytes(""), - cst$85=caml_string_of_jsbytes(""), - cst$83=caml_string_of_jsbytes("."), - cst$80=caml_string_of_jsbytes(">"), - cst$81=caml_string_of_jsbytes("<\/"), - cst$82=caml_string_of_jsbytes(""), - cst$77=caml_string_of_jsbytes(">"), - cst$78=caml_string_of_jsbytes("<"), - cst$79=caml_string_of_jsbytes(""), - cst$76=caml_string_of_jsbytes("\n"), - cst_Format_pp_set_geometry= - caml_string_of_jsbytes("Format.pp_set_geometry: "), - 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$68=caml_string_of_jsbytes(""), - cst$69=caml_string_of_jsbytes(""), - cst$70=caml_string_of_jsbytes(""), - cst$71=caml_string_of_jsbytes(""), - cst$67=caml_string_of_jsbytes(""), - cst_Stdlib_Format_String_tag= - caml_string_of_jsbytes("Stdlib.Format.String_tag"), - cst_end_of_input_not_found= - caml_string_of_jsbytes("end of input not found"), - cst_scanf_bad_conversion_a= - caml_string_of_jsbytes('scanf: bad conversion "%a"'), - cst_scanf_bad_conversion_t= - caml_string_of_jsbytes('scanf: bad conversion "%t"'), - cst_scanf_missing_reader=caml_string_of_jsbytes("scanf: missing reader"), - cst_scanf_bad_conversion_custo= - caml_string_of_jsbytes('scanf: bad conversion "%?" (custom converter)'), - cst_scanf_bad_conversion= - caml_string_of_jsbytes('scanf: bad conversion "%*"'), - cst_scanf_bad_conversion$0= - caml_string_of_jsbytes('scanf: bad conversion "%*"'), - cst_scanf_bad_conversion$1= - caml_string_of_jsbytes('scanf: bad conversion "%-"'), - cst_scanf_bad_conversion$2= - caml_string_of_jsbytes('scanf: bad conversion "%*"'), - cst$91=caml_string_of_jsbytes('"'), - cst$92=caml_string_of_jsbytes('"'), - cst$89=caml_string_of_jsbytes('"'), - cst$90=caml_string_of_jsbytes('"'), - cst$88=caml_string_of_jsbytes('"'), - cst_in_format=caml_string_of_jsbytes(' in format "'), - cst_an=caml_string_of_jsbytes("an"), - cst_x$2=caml_string_of_jsbytes("x"), - cst_nfinity=caml_string_of_jsbytes("nfinity"), - cst_digits=caml_string_of_jsbytes("digits"), - cst_decimal_digits=caml_string_of_jsbytes("decimal digits"), - cst_0b=caml_string_of_jsbytes("0b"), - cst_0o=caml_string_of_jsbytes("0o"), - cst_0u=caml_string_of_jsbytes("0u"), - cst_0x=caml_string_of_jsbytes("0x"), - cst_false$3=caml_string_of_jsbytes("false"), - cst_true$3=caml_string_of_jsbytes("true"), - cst_not_a_valid_float_in_hexad= - caml_string_of_jsbytes("not a valid float in hexadecimal notation"), - cst_no_dot_or_exponent_part_fo= - caml_string_of_jsbytes("no dot or exponent part found in float token"), - cst$87=caml_string_of_jsbytes("-"), - cst_unnamed_function=caml_string_of_jsbytes("unnamed function"), - cst_unnamed_character_string= - caml_string_of_jsbytes("unnamed character string"), - cst_unnamed_Stdlib_input_chann= - caml_string_of_jsbytes("unnamed Stdlib input channel"), - cst$86=caml_string_of_jsbytes("-"), - cst_Stdlib_Scanf_Scan_failure= - caml_string_of_jsbytes("Stdlib.Scanf.Scan_failure"), - cst_binary=caml_string_of_jsbytes("binary"), - cst_octal=caml_string_of_jsbytes("octal"), - cst_hexadecimal=caml_string_of_jsbytes("hexadecimal"), - cst_a_Char=caml_string_of_jsbytes("a Char"), - cst_a_String=caml_string_of_jsbytes("a String"), - cst$93=caml_string_of_jsbytes(""), - cst_CamlinternalMod_update_mod= - caml_string_of_jsbytes("CamlinternalMod.update_mod: not a module"), - cst_CamlinternalMod_init_mod_n= - caml_string_of_jsbytes("CamlinternalMod.init_mod: not a module"), - cst$94=caml_string_of_jsbytes(""), - cst$95=caml_string_of_jsbytes(""), - cst$96=caml_string_of_jsbytes(""), - cst$97=caml_string_of_jsbytes(""), - cst$99=caml_string_of_jsbytes(""), - cst$98=caml_string_of_jsbytes(""), - cst_Illegal_character=caml_string_of_jsbytes("Illegal character "), - cst_Filename_chop_extension= - caml_string_of_jsbytes("Filename.chop_extension"), - cst$127=caml_string_of_jsbytes(""), - cst_Filename_chop_suffix=caml_string_of_jsbytes("Filename.chop_suffix"), - cst$126=caml_string_of_jsbytes(""), - cst_2_1$0=caml_string_of_jsbytes(" 2>&1"), - cst_2$0=caml_string_of_jsbytes(" 2>"), - cst$125=caml_string_of_jsbytes(""), - cst$117=caml_string_of_jsbytes(" >"), - cst$124=caml_string_of_jsbytes(""), - cst$118=caml_string_of_jsbytes(" <"), - cst$123=caml_string_of_jsbytes(""), - cst$119=caml_string_of_jsbytes(" "), - cst$120=caml_string_of_jsbytes(" "), - cst$121=caml_string_of_jsbytes('"'), - cst$122=caml_string_of_jsbytes(""), - cst_Filename_quote_command_bad= - caml_string_of_jsbytes("Filename.quote_command: bad file name "), - cst$115=caml_string_of_jsbytes('"'), - cst$116=caml_string_of_jsbytes('"'), - cst$113=caml_string_of_jsbytes("./"), - cst$112=caml_string_of_jsbytes(".\\"), - cst$111=caml_string_of_jsbytes("../"), - cst$110=caml_string_of_jsbytes("..\\"), - cst_2_1=caml_string_of_jsbytes(" 2>&1"), - cst_2=caml_string_of_jsbytes(" 2>"), - cst$109=caml_string_of_jsbytes(""), - cst$104=caml_string_of_jsbytes(" >"), - cst$108=caml_string_of_jsbytes(""), - cst$105=caml_string_of_jsbytes(" <"), - cst$107=caml_string_of_jsbytes(""), - cst$106=caml_string_of_jsbytes(" "), - cst$103=caml_string_of_jsbytes("./"), - cst$102=caml_string_of_jsbytes("../"), - cst$101=caml_string_of_jsbytes(""), - cst$100=caml_string_of_jsbytes(""), - null$0=caml_string_of_jsbytes("/dev/null"), - current_dir_name=caml_string_of_jsbytes("."), - parent_dir_name=caml_string_of_jsbytes(".."), - dir_sep=caml_string_of_jsbytes("/"), - cst_TMPDIR=caml_string_of_jsbytes("TMPDIR"), - cst_tmp=caml_string_of_jsbytes("/tmp"), - quotequote=caml_string_of_jsbytes("'\\''"), - null$1=caml_string_of_jsbytes("NUL"), - current_dir_name$0=caml_string_of_jsbytes("."), - parent_dir_name$0=caml_string_of_jsbytes(".."), - dir_sep$0=caml_string_of_jsbytes("\\"), - cst_TEMP=caml_string_of_jsbytes("TEMP"), - cst$114=caml_string_of_jsbytes("."), - null$2=caml_string_of_jsbytes("/dev/null"), - current_dir_name$1=caml_string_of_jsbytes("."), - parent_dir_name$1=caml_string_of_jsbytes(".."), - dir_sep$1=caml_string_of_jsbytes("/"), - cst_Cygwin=caml_string_of_jsbytes("Cygwin"), - cst_Win32=caml_string_of_jsbytes("Win32"), - zero$4=[254,0.,0.], - one$4=[254,1.,0.], - i=[254,0.,1.], - cst_Bigarray_array3_of_genarra= - caml_string_of_jsbytes("Bigarray.array3_of_genarray"), - cst_Bigarray_array2_of_genarra= - caml_string_of_jsbytes("Bigarray.array2_of_genarray"), - cst_Bigarray_array1_of_genarra= - caml_string_of_jsbytes("Bigarray.array1_of_genarray"), - cst_Bigarray_array0_of_genarra= - caml_string_of_jsbytes("Bigarray.array0_of_genarray"), - cst_Bigarray_Array3_of_array_n= - caml_string_of_jsbytes("Bigarray.Array3.of_array: non-cubic data"), - cst_Bigarray_Array3_of_array_n$0= - caml_string_of_jsbytes("Bigarray.Array3.of_array: non-cubic data"), - cst_Bigarray_Array2_of_array_n= - caml_string_of_jsbytes("Bigarray.Array2.of_array: non-rectangular data"), - cst_In_channel_input_all_chann= - caml_string_of_jsbytes - ("In_channel.input_all: channel content is larger than maximum string length"), - Invalid_argument=global_data.Invalid_argument, - Failure=global_data.Failure, - Match_failure=global_data.Match_failure, - Assert_failure=global_data.Assert_failure, - Not_found=global_data.Not_found, - Out_of_memory=global_data.Out_of_memory, - Stack_overflow=global_data.Stack_overflow, - Sys_error=global_data.Sys_error, - End_of_file=global_data.End_of_file, - Division_by_zero=global_data.Division_by_zero, - Sys_blocked_io=global_data.Sys_blocked_io, - Undefined_recursive_module=global_data.Undefined_recursive_module, - _l_=[0,0,[0,6,0]], - _k_=[0,0,[0,7,0]], - _j_=[0,1,[0,3,[0,4,[0,6,0]]]], - _i_=[0,1,[0,3,[0,4,[0,7,0]]]], - _g_=[0,1], - _h_=[0,0], - _a_=runtime.caml_int64_create_lo_mi_hi(0,0,32752), - _b_=runtime.caml_int64_create_lo_mi_hi(0,0,65520), - _c_=runtime.caml_int64_create_lo_mi_hi(1,0,32752), - _d_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,32751), - _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_= - [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_= - [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_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(": at character number "), - [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], - _aM_=[1,1], - _aO_=[1,1], - _aN_=[1,1], - _aS_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(": at character number "), - [4, - 0, - 0, - 0, - [11, - caml_string_of_jsbytes(", flag "), - [1, - [11, - caml_string_of_jsbytes(" is only allowed after the '"), - [12, - 37, - [11, - caml_string_of_jsbytes("', before padding and precision"), - 0]]]]]]]]], - caml_string_of_jsbytes - ("invalid format %S: at character number %d, flag %C is only allowed after the '%%', before padding and precision")], - _aP_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(": at character number "), - [4, - 0, - 0, - 0, - [11, - caml_string_of_jsbytes(', invalid conversion "'), - [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_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(": '"), - [12, - 37, - [11, - caml_string_of_jsbytes - ("' alone is not accepted in character sets, use "), - [12, - 37, - [12, - 37, - [11, - caml_string_of_jsbytes(" instead at position "), - [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_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(": integer "), - [4, - 0, - 0, - 0, - [11, - caml_string_of_jsbytes(" is greater than the limit "), - [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_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(': unclosed sub-format, expected "'), - [12, - 37, - [0, - [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_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(": at character number "), - [4, - 0, - 0, - 0, - [11, - caml_string_of_jsbytes(", "), - [2, - 0, - [11, - caml_string_of_jsbytes(" is incompatible with '"), - [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_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(": at character number "), - [4, - 0, - 0, - 0, - [11, - caml_string_of_jsbytes(", "), - [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_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - caml_string_of_jsbytes(": at character number "), - [4, - 0, - 0, - 0, - [11, - caml_string_of_jsbytes(", '"), - [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_= - [0, - [11, - caml_string_of_jsbytes("invalid format "), - [3, - 0, - [11, - 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_= - [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")], - _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_= - [0, - [2, - 0, - [11, - 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_= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes(": wrong argument '"), - [2, - 0, - [11, - caml_string_of_jsbytes("'; option '"), - [2, - 0, - [11, - caml_string_of_jsbytes("' expects "), - [2,0,[11,caml_string_of_jsbytes(".\n"),0]]]]]]]], - caml_string_of_jsbytes - ("%s: wrong argument '%s'; option '%s' expects %s.\n")], - _be_= - [0, - [2, - 0, - [11, - 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_= - [0, - [2, - 0, - [11, - 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_= - [0, - [11,caml_string_of_jsbytes(" "),[2,0,[12,32,[2,0,[12,10,0]]]]], - caml_string_of_jsbytes(" %s %s\n")], - _a8_= - [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_= - [0, - [11,caml_string_of_jsbytes(", "),[2,0,[2,0,0]]], - caml_string_of_jsbytes(", %s%s")], - _bH_= - [0, - [11,caml_string_of_jsbytes("Fatal error: exception "),[2,0,[12,10,0]]], - caml_string_of_jsbytes("Fatal error: exception %s\n")], - _bI_= - [0, - [11, - caml_string_of_jsbytes - ("Fatal error in uncaught exception handler: exception "), - [2,0,[12,10,0]]], - caml_string_of_jsbytes - ("Fatal error in uncaught exception handler: exception %s\n")], - _bG_= - [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_= - [0, - [11, - caml_string_of_jsbytes - ("(Program not linked with -g, cannot print stack backtrace)\n"), - 0], - caml_string_of_jsbytes - ("(Program not linked with -g, cannot print stack backtrace)\n")], - _bA_= - [0, - [2, - 0, - [12, - 32, - [2, - 0, - [11, - caml_string_of_jsbytes(' in file "'), - [2, - 0, - [12, - 34, - [2, - 0, - [11, - caml_string_of_jsbytes(", line "), - [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_= - [0, - [2,0,[11,caml_string_of_jsbytes(" unknown location"),0]], - caml_string_of_jsbytes("%s unknown location")], - _bz_= - [0, - [11,caml_string_of_jsbytes("Uncaught exception: "),[2,0,[12,10,0]]], - caml_string_of_jsbytes("Uncaught exception: %s\n")], - _by_= - [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_= - [0, - caml_string_of_jsbytes(""), - caml_string_of_jsbytes - ("(Cannot print locations:\n bytecode executable program file not found)"), - caml_string_of_jsbytes - ("(Cannot print locations:\n bytecode executable program file appears to be corrupt)"), - caml_string_of_jsbytes - ("(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_= - [0, - [11, - caml_string_of_jsbytes("minor_collections: "), - [4,0,0,0,[12,10,0]]], - caml_string_of_jsbytes("minor_collections: %d\n")], - _bQ_= - [0, - [11, - caml_string_of_jsbytes("major_collections: "), - [4,0,0,0,[12,10,0]]], - caml_string_of_jsbytes("major_collections: %d\n")], - _bR_= - [0, - [11, - caml_string_of_jsbytes("compactions: "), - [4,0,0,0,[12,10,0]]], - caml_string_of_jsbytes("compactions: %d\n")], - _bS_= - [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_= - [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_= - [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_= - [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_= - [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_= - [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_= - [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_= - [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_= - [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_= - [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_= - [0, - [11,caml_string_of_jsbytes("live_blocks: "),[4,0,0,0,[12,10,0]]], - caml_string_of_jsbytes("live_blocks: %d\n")], - _b8_= - [0, - [11,caml_string_of_jsbytes("free_blocks: "),[4,0,0,0,[12,10,0]]], - caml_string_of_jsbytes("free_blocks: %d\n")], - _b9_= - [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_= - [0, - 987910699, - 495797812, - 364182224, - 414272206, - 318284740, - 990407751, - 383018966, - 270373319, - 840823159, - 24560019, - 536292337, - 512266505, - 189156120, - 730249596, - 143776328, - 51606627, - 140166561, - 366354223, - 1003410265, - 700563762, - 981890670, - 913149062, - 526082594, - 1021425055, - 784300257, - 667753350, - 630144451, - 949649812, - 48546892, - 415514493, - 258888527, - 511570777, - 89983870, - 283659902, - 308386020, - 242688715, - 482270760, - 865188196, - 1027664170, - 207196989, - 193777847, - 619708188, - 671350186, - 149669678, - 257044018, - 87658204, - 558145612, - 183450813, - 28133145, - 901332182, - 710253903, - 510646120, - 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_= - [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_= - [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_= - [0, - [11, - caml_string_of_jsbytes("bad character hexadecimal encoding \\"), - [0,[0,0]]], - caml_string_of_jsbytes("bad character hexadecimal encoding \\%c%c")], - _cA_= - [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_= - [0, - [11, - caml_string_of_jsbytes("character "), - [1, - [11, - 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_= - [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_= - [0, - [11,caml_string_of_jsbytes("invalid boolean '"),[2,0,[12,39,0]]], - caml_string_of_jsbytes("invalid boolean '%s'")], - _cv_= - [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_= - [0, - [11, - caml_string_of_jsbytes("scanning of "), - [2, - 0, - [11, - caml_string_of_jsbytes - (" failed: premature end of file occurred before end of token"), - 0]]], - caml_string_of_jsbytes - ("scanning of %s failed: premature end of file occurred before end of token")], - _ct_= - [0, - [11, - caml_string_of_jsbytes("scanning of "), - [2, - 0, - [11, - caml_string_of_jsbytes - (" failed: the specified length was too short for token"), - 0]]], - caml_string_of_jsbytes - ("scanning of %s failed: the specified length was too short for token")], - _cs_= - [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], - _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]; - function erase_rel(param) - {if(typeof param === "number") - return 0; - else - switch(param[0]) - {case 0:var rest=param[1];return [0,erase_rel(rest)]; - case 1:var rest$0=param[1];return [1,erase_rel(rest$0)]; - case 2:var rest$1=param[1];return [2,erase_rel(rest$1)]; - case 3:var rest$2=param[1];return [3,erase_rel(rest$2)]; - case 4:var rest$3=param[1];return [4,erase_rel(rest$3)]; - case 5:var rest$4=param[1];return [5,erase_rel(rest$4)]; - case 6:var rest$5=param[1];return [6,erase_rel(rest$5)]; - case 7:var rest$6=param[1];return [7,erase_rel(rest$6)]; - case 8: - var rest$7=param[2],ty=param[1];return [8,ty,erase_rel(rest$7)]; - case 9: - var rest$8=param[3],ty1=param[1]; - return [9,ty1,ty1,erase_rel(rest$8)]; - case 10:var rest$9=param[1];return [10,erase_rel(rest$9)]; - case 11:var rest$10=param[1];return [11,erase_rel(rest$10)]; - case 12:var rest$11=param[1];return [12,erase_rel(rest$11)]; - case 13:var rest$12=param[1];return [13,erase_rel(rest$12)]; - default:var rest$13=param[1];return [14,erase_rel(rest$13)]}} - function concat_fmtty(fmtty1,fmtty2) - {if(typeof fmtty1 === "number") - return fmtty2; - else - switch(fmtty1[0]) - {case 0:var rest=fmtty1[1];return [0,concat_fmtty(rest,fmtty2)]; - case 1:var rest$0=fmtty1[1];return [1,concat_fmtty(rest$0,fmtty2)]; - case 2:var rest$1=fmtty1[1];return [2,concat_fmtty(rest$1,fmtty2)]; - case 3:var rest$2=fmtty1[1];return [3,concat_fmtty(rest$2,fmtty2)]; - case 4:var rest$3=fmtty1[1];return [4,concat_fmtty(rest$3,fmtty2)]; - case 5:var rest$4=fmtty1[1];return [5,concat_fmtty(rest$4,fmtty2)]; - case 6:var rest$5=fmtty1[1];return [6,concat_fmtty(rest$5,fmtty2)]; - case 7:var rest$6=fmtty1[1];return [7,concat_fmtty(rest$6,fmtty2)]; - case 8: - var rest$7=fmtty1[2],ty=fmtty1[1]; - return [8,ty,concat_fmtty(rest$7,fmtty2)]; - case 9: - var rest$8=fmtty1[3],ty2=fmtty1[2],ty1=fmtty1[1]; - return [9,ty1,ty2,concat_fmtty(rest$8,fmtty2)]; - case 10:var rest$9=fmtty1[1];return [10,concat_fmtty(rest$9,fmtty2)]; - case 11: - var rest$10=fmtty1[1];return [11,concat_fmtty(rest$10,fmtty2)]; - case 12: - var rest$11=fmtty1[1];return [12,concat_fmtty(rest$11,fmtty2)]; - case 13: - var rest$12=fmtty1[1];return [13,concat_fmtty(rest$12,fmtty2)]; - default: - var rest$13=fmtty1[1];return [14,concat_fmtty(rest$13,fmtty2)]}} - function concat_fmt(fmt1,fmt2) - {if(typeof fmt1 === "number") - return fmt2; - else - switch(fmt1[0]) - {case 0:var rest=fmt1[1];return [0,concat_fmt(rest,fmt2)]; - case 1:var rest$0=fmt1[1];return [1,concat_fmt(rest$0,fmt2)]; - case 2: - var rest$1=fmt1[2],pad=fmt1[1]; - return [2,pad,concat_fmt(rest$1,fmt2)]; - case 3: - var rest$2=fmt1[2],pad$0=fmt1[1]; - return [3,pad$0,concat_fmt(rest$2,fmt2)]; - case 4: - var rest$3=fmt1[4],prec=fmt1[3],pad$1=fmt1[2],iconv=fmt1[1]; - return [4,iconv,pad$1,prec,concat_fmt(rest$3,fmt2)]; - case 5: - var rest$4=fmt1[4],prec$0=fmt1[3],pad$2=fmt1[2],iconv$0=fmt1[1]; - return [5,iconv$0,pad$2,prec$0,concat_fmt(rest$4,fmt2)]; - case 6: - var rest$5=fmt1[4],prec$1=fmt1[3],pad$3=fmt1[2],iconv$1=fmt1[1]; - return [6,iconv$1,pad$3,prec$1,concat_fmt(rest$5,fmt2)]; - case 7: - var rest$6=fmt1[4],prec$2=fmt1[3],pad$4=fmt1[2],iconv$2=fmt1[1]; - return [7,iconv$2,pad$4,prec$2,concat_fmt(rest$6,fmt2)]; - case 8: - var rest$7=fmt1[4],prec$3=fmt1[3],pad$5=fmt1[2],fconv=fmt1[1]; - return [8,fconv,pad$5,prec$3,concat_fmt(rest$7,fmt2)]; - case 9: - var rest$8=fmt1[2],pad$6=fmt1[1]; - return [9,pad$6,concat_fmt(rest$8,fmt2)]; - case 10:var rest$9=fmt1[1];return [10,concat_fmt(rest$9,fmt2)]; - case 11: - var rest$10=fmt1[2],str=fmt1[1]; - return [11,str,concat_fmt(rest$10,fmt2)]; - case 12: - var rest$11=fmt1[2],chr=fmt1[1]; - return [12,chr,concat_fmt(rest$11,fmt2)]; - case 13: - var rest$12=fmt1[3],fmtty=fmt1[2],pad$7=fmt1[1]; - return [13,pad$7,fmtty,concat_fmt(rest$12,fmt2)]; - case 14: - var rest$13=fmt1[3],fmtty$0=fmt1[2],pad$8=fmt1[1]; - return [14,pad$8,fmtty$0,concat_fmt(rest$13,fmt2)]; - case 15:var rest$14=fmt1[1];return [15,concat_fmt(rest$14,fmt2)]; - case 16:var rest$15=fmt1[1];return [16,concat_fmt(rest$15,fmt2)]; - case 17: - var rest$16=fmt1[2],fmting_lit=fmt1[1]; - return [17,fmting_lit,concat_fmt(rest$16,fmt2)]; - case 18: - var rest$17=fmt1[2],fmting_gen=fmt1[1]; - return [18,fmting_gen,concat_fmt(rest$17,fmt2)]; - case 19:var rest$18=fmt1[1];return [19,concat_fmt(rest$18,fmt2)]; - case 20: - var rest$19=fmt1[3],char_set=fmt1[2],width_opt=fmt1[1]; - return [20,width_opt,char_set,concat_fmt(rest$19,fmt2)]; - case 21: - var rest$20=fmt1[2],counter=fmt1[1]; - return [21,counter,concat_fmt(rest$20,fmt2)]; - case 22:var rest$21=fmt1[1];return [22,concat_fmt(rest$21,fmt2)]; - case 23: - var rest$22=fmt1[2],ign=fmt1[1]; - return [23,ign,concat_fmt(rest$22,fmt2)]; - default: - var rest$23=fmt1[3],f=fmt1[2],arity=fmt1[1]; - return [24,arity,f,concat_fmt(rest$23,fmt2)]}} - var CamlinternalFormatBasics=[0,concat_fmtty,erase_rel,concat_fmt]; - caml_register_global - (761,CamlinternalFormatBasics,"CamlinternalFormatBasics"); - function make(v){return [0,v]} - function get(r){return r[1]} - function set(r,v){r[1] = v;return 0} - function exchange(r,v){var cur=r[1];r[1] = v;return cur} - function compare_and_set(r,seen,v) - {var cur=r[1];return cur === seen?(r[1] = v,1):0} - function fetch_and_add(r,n){var cur=r[1];r[1] = cur + n | 0;return cur} - function incr(r){fetch_and_add(r,1);return 0} - function decr(r){fetch_and_add(r,-1);return 0} - var - include= - [0,make,get,set,exchange,compare_and_set,fetch_and_add,incr,decr]; - caml_register_global(762,include,"CamlinternalAtomic"); - function failwith(s){throw [0,Failure,s]} - function invalid_arg(s){throw [0,Invalid_argument,s]} - var Exit=[248,cst_Stdlib_Exit,caml_fresh_oo_id(0)]; - function min(x,y){return caml_lessequal(x,y)?x:y} - function max(x,y){return caml_greaterequal(x,y)?x:y} - function abs(x){return 0 <= x?x:- x | 0} - function lnot(x){return x ^ -1} - var - infinity=caml_int64_float_of_bits(_a_), - neg_infinity=caml_int64_float_of_bits(_b_), - nan=caml_int64_float_of_bits(_c_), - max_float=caml_int64_float_of_bits(_d_), - min_float=caml_int64_float_of_bits(_e_), - epsilon=caml_int64_float_of_bits(_f_), - max_int=2147483647, - min_int=-2147483648; - function cat(s1,s2) - {var - l1=caml_ml_string_length(s1), - l2=caml_ml_string_length(s2), - s=caml_create_bytes(l1 + l2 | 0); - caml_blit_string(s1,0,s,0,l1); - caml_blit_string(s2,0,s,l1,l2); - return caml_string_of_bytes(s)} - function char_of_int(n) - {if(0 <= n && ! (255 < n))return n;return invalid_arg(cst_char_of_int)} - function string_of_bool(b){return b?cst_true:cst_false} - function bool_of_string(param) - {return caml_string_notequal(param,cst_false$0) - ?caml_string_notequal(param,cst_true$0) - ?invalid_arg(cst_bool_of_string) - :1 - :0} - function bool_of_string_opt(param) - {return caml_string_notequal(param,cst_false$1) - ?caml_string_notequal(param,cst_true$1)?0:_g_ - :_h_} - 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_}} - function valid_float_lexem(s) - {var l=caml_ml_string_length(s),i=0; - for(;;) - {if(l <= i)return cat(s,cst); - var match=caml_string_get(s,i),switch$0=0; - if(48 <= match) - {if(! (58 <= match))switch$0 = 1} - else - if(45 === match)switch$0 = 1; - if(switch$0){var i$0=i + 1 | 0,i=i$0;continue} - return s}} - function to_string(f) - {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_}} - function append(l1,l2) - {if(l1){var tl=l1[2],hd=l1[1];return [0,hd,append(tl,l2)]}return l2} - var - stdin=caml_ml_open_descriptor_in(0), - stdout=caml_ml_open_descriptor_out(1), - stderr=caml_ml_open_descriptor_out(2); - function open_gen(mode,perm,name) - {var c=caml_ml_open_descriptor_out(caml_sys_open(name,mode,perm)); - caml_ml_set_channel_name(c,name); - return c} - function open_text(name){return open_gen(_i_,438,name)} - function open_bin(name){return open_gen(_j_,438,name)} - function flush_all(param) - {function iter(param) - {var param$0=param; - for(;;) - {if(param$0) - {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_} - var param$0=l; - continue} - return 0}} - return iter(runtime.caml_ml_out_channels_list(0))} - function output_bytes(oc,s) - {return caml_ml_output_bytes(oc,s,0,caml_ml_bytes_length(s))} - function output_string(oc,s) - {return caml_ml_output(oc,s,0,caml_ml_string_length(s))} - function output(oc,s,ofs,len) - {if - (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) - return caml_ml_output_bytes(oc,s,ofs,len); - return invalid_arg(cst_output)} - function output_substring(oc,s,ofs,len) - {if - (0 - <= - ofs - && - 0 - <= - len - && - ! - ((caml_ml_string_length(s) - len | 0) < ofs)) - return caml_ml_output(oc,s,ofs,len); - return invalid_arg(cst_output_substring)} - 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 - {var _Ex_=caml_ml_close_channel(oc);return _Ex_} - catch(_Ey_){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); - return c} - function open_text$0(name){return open_gen$0(_k_,0,name)} - function open_bin$0(name){return open_gen$0(_l_,0,name)} - function input(ic,s,ofs,len) - {if - (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) - return caml_ml_input(ic,s,ofs,len); - return invalid_arg(cst_input)} - function unsafe_really_input(ic,s,ofs,len) - {var ofs$0=ofs,len$0=len; - for(;;) - {if(0 < len$0) - {var r=caml_ml_input(ic,s,ofs$0,len$0); - if(0 === r)throw End_of_file; - var len$1=len$0 - r | 0,ofs$1=ofs$0 + r | 0,ofs$0=ofs$1,len$0=len$1; - continue} - return 0}} - function really_input(ic,s,ofs,len) - {if - (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) - return unsafe_really_input(ic,s,ofs,len); - return invalid_arg(cst_really_input)} - function really_input_string(ic,len) - {var s=caml_create_bytes(len); - really_input(ic,s,0,len); - return caml_string_of_bytes(s)} - function input_line(chan) - {function build_result(buf,pos,param) - {var pos$0=pos,param$0=param; - for(;;) - {if(param$0) - {var tl=param$0[2],hd=param$0[1],len=caml_ml_bytes_length(hd); - caml_blit_bytes(hd,0,buf,pos$0 - len | 0,len); - var pos$1=pos$0 - len | 0,pos$0=pos$1,param$0=tl; - continue} - return buf}} - var accu=0,len=0; - for(;;) - {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)} - else - {if(! (0 < n)) - {var beg=caml_create_bytes(- n | 0); - caml_ml_input(chan,beg,0,- n | 0); - var len$1=len - n | 0,accu$0=[0,beg,accu],accu=accu$0,len=len$1; - continue} - var res=caml_create_bytes(n - 1 | 0); - caml_ml_input(chan,res,0,n - 1 | 0); - caml_ml_input_char(chan); - if(accu) - var - len$0=(len + n | 0) - 1 | 0, - _Ew_=build_result(caml_create_bytes(len$0),len$0,[0,res,accu]); - else - var _Ew_=res} - return caml_string_of_bytes(_Ew_)}} - function close_noerr$0(ic) - {try - {var _Eu_=caml_ml_close_channel(ic);return _Eu_} - catch(_Ev_){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)} - function print_int(i) - {return output_string(stdout,caml_string_of_jsbytes("" + i))} - function print_float(f){return output_string(stdout,to_string(f))} - function print_endline(s) - {output_string(stdout,s); - caml_ml_output_char(stdout,10); - return caml_ml_flush(stdout)} - function print_newline(param) - {caml_ml_output_char(stdout,10);return caml_ml_flush(stdout)} - function prerr_char(c){return caml_ml_output_char(stderr,c)} - function prerr_string(s){return output_string(stderr,s)} - function prerr_bytes(s){return output_bytes(stderr,s)} - function prerr_int(i) - {return output_string(stderr,caml_string_of_jsbytes("" + i))} - function prerr_float(f){return output_string(stderr,to_string(f))} - function prerr_endline(s) - {output_string(stderr,s); - caml_ml_output_char(stderr,10); - return caml_ml_flush(stderr)} - function prerr_newline(param) - {caml_ml_output_char(stderr,10);return caml_ml_flush(stderr)} - function read_line(param){caml_ml_flush(stdout);return input_line(stdin)} - function read_int(param){return caml_int_of_string(read_line(0))} - function read_int_opt(param){return int_of_string_opt(read_line(0))} - 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_) - {var - str2=_Es_[2], - fmt2=_Es_[1], - str1=param[2], - fmt1=param[1], - _Et_=cat(str1,cat(cst$0,str2)); - return [0,concat_fmt(fmt1,fmt2),_Et_]} - var exit_function=[0,flush_all]; - function at_exit(f) - {for(;;) - {var - f_yet_to_run=[0,1], - old_exit=exit_function[1], - new_exit$0= - function(f_yet_to_run,old_exit) - {function new_exit(param) - {if(compare_and_set(f_yet_to_run,1,0))caml_call1(f,0); - return caml_call1(old_exit,0)} - 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_}} - 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)} - caml_register_named_value - (caml_string_of_jsbytes("Pervasives.do_at_exit"),do_at_exit); - var - _m_= - [0, - runtime.caml_ml_seek_out_64, - runtime.caml_ml_pos_out_64, - caml_ml_channel_size_64, - runtime.caml_ml_seek_in_64, - runtime.caml_ml_pos_in_64, - caml_ml_channel_size_64], - set_binary_mode=caml_ml_set_binary_mode, - close$0=caml_ml_close_channel, - in_channel_length=caml_ml_channel_size, - pos_in=caml_ml_pos_in, - seek_in=runtime.caml_ml_seek_in, - input_value=caml_input_value, - input_binary_int=runtime.caml_ml_input_int, - input_byte=caml_ml_input_char, - input_char=caml_ml_input_char, - set_binary_mode$0=caml_ml_set_binary_mode, - out_channel_length=caml_ml_channel_size, - pos_out=runtime.caml_ml_pos_out, - seek_out=runtime.caml_ml_seek_out, - output_binary_int=runtime.caml_ml_output_int, - output_byte=caml_ml_output_char, - output_char=caml_ml_output_char, - flush=caml_ml_flush, - Stdlib= - [0, - invalid_arg, - failwith, - Exit, - Match_failure, - Assert_failure, - Invalid_argument, - Failure, - Not_found, - Out_of_memory, - Stack_overflow, - Sys_error, - End_of_file, - Division_by_zero, - Sys_blocked_io, - Undefined_recursive_module, - min, - max, - abs, - max_int, - min_int, - lnot, - infinity, - neg_infinity, - nan, - max_float, - min_float, - epsilon, - cat, - char_of_int, - string_of_bool, - bool_of_string_opt, - bool_of_string, - string_of_int, - int_of_string_opt, - to_string, - of_string_opt, - append, - stdin, - stdout, - stderr, - print_char, - print_string, - print_bytes, - print_int, - print_float, - print_endline, - print_newline, - prerr_char, - prerr_string, - prerr_bytes, - prerr_int, - prerr_float, - prerr_endline, - prerr_newline, - read_line, - read_int_opt, - read_int, - read_float_opt, - read_float, - open_text, - open_bin, - open_gen, - flush, - flush_all, - output_char, - output_string, - output_bytes, - output, - output_substring, - output_byte, - output_binary_int, - output_value, - seek_out, - pos_out, - out_channel_length, - close, - close_noerr, - set_binary_mode$0, - open_text$0, - open_bin$0, - open_gen$0, - input_char, - input_line, - input, - really_input, - really_input_string, - input_byte, - input_binary_int, - input_value, - seek_in, - pos_in, - in_channel_length, - close$0, - close_noerr$0, - set_binary_mode, - _m_, - string_of_format, - symbol, - exit, - at_exit, - valid_float_lexem, - unsafe_really_input, - do_at_exit]; - caml_register_global(775,Stdlib,"Stdlib"); - var - Exit$0=[248,cst_Stdlib_Pervasives_Exit,caml_fresh_oo_id(0)], - Stdlib_Pervasives= - [0, - invalid_arg, - failwith, - Exit$0, - min, - max, - abs, - max_int, - min_int, - lnot, - infinity, - neg_infinity, - nan, - max_float, - min_float, - epsilon, - cat, - char_of_int, - string_of_bool, - bool_of_string, - bool_of_string_opt, - string_of_int, - int_of_string_opt, - to_string, - of_string_opt, - append, - stdin, - stdout, - stderr, - print_char, - print_string, - print_bytes, - print_int, - print_float, - print_endline, - print_newline, - prerr_char, - prerr_string, - prerr_bytes, - prerr_int, - prerr_float, - prerr_endline, - prerr_newline, - read_line, - read_int, - read_int_opt, - read_float, - read_float_opt, - open_text, - open_bin, - open_gen, - flush, - flush_all, - output_char, - output_string, - output_bytes, - output, - output_substring, - output_byte, - output_binary_int, - output_value, - seek_out, - pos_out, - out_channel_length, - close, - close_noerr, - set_binary_mode$0, - open_text$0, - open_bin$0, - open_gen$0, - input_char, - input_line, - input, - really_input, - really_input_string, - input_byte, - input_binary_int, - input_value, - seek_in, - pos_in, - in_channel_length, - close$0, - close_noerr$0, - set_binary_mode, - string_of_format, - symbol, - exit, - at_exit, - valid_float_lexem, - do_at_exit]; - caml_register_global(776,Stdlib_Pervasives,"Stdlib__Pervasives"); - function left(v){return [0,v]} - function right(v){return [1,v]} - function is_left(param){return 0 === param[0]?1:0} - function is_right(param){return 0 === param[0]?0:1} - function find_left(param) - {if(0 === param[0]){var v=param[1];return [0,v]}return 0} - function find_right(param) - {if(0 === param[0])return 0;var v=param[1];return [0,v]} - function map_left(f,e) - {if(0 === e[0]){var v=e[1];return [0,caml_call1(f,v)]}return e} - function map_right(f,e) - {if(0 === e[0])return e;var v=e[1];return [1,caml_call1(f,v)]} - function map(left,right,param) - {if(0 === param[0]){var v=param[1];return [0,caml_call1(left,v)]} - var v$0=param[1]; - return [1,caml_call1(right,v$0)]} - function fold(left,right,param) - {if(0 === param[0]){var v=param[1];return caml_call1(left,v)} - var v$0=param[1]; - 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)}} - else - {var _Eq_=e1[1]; - if(0 !== e2[0]){var v2$0=e2[1];return caml_call2(right,_Eq_,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)} - return -1} - var _Eo_=e1[1]; - if(0 === e2[0])return 1; - var v2$0=e2[1]; - return caml_call2(right,_Eo_,v2$0)} - var - Stdlib_Either= - [0, - left, - right, - is_left, - is_right, - find_left, - find_right, - map_left, - map_right, - map, - fold, - fold, - fold, - equal, - compare]; - caml_register_global(777,Stdlib_Either,"Stdlib__Either"); - var - executable_name=runtime.caml_sys_executable_name(0), - match=runtime.caml_sys_get_config(0), - os_type=match[1], - match$0=[0,caml_string_of_jsbytes("js_of_ocaml")], - unix=runtime.caml_sys_const_ostype_unix(0), - win32=runtime.caml_sys_const_ostype_win32(0), - cygwin=runtime.caml_sys_const_ostype_cygwin(0), - max_array_length=runtime.caml_sys_const_max_wosize(0), - max_floatarray_length=max_array_length / 2 | 0, - max_string_length=(4 * max_array_length | 0) - 1 | 0, - big_endian=0, - match$1=32, - 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 interactive=[0,0]; - function set_signal(sig_num,sig_beh){return 0} - var - Break=[248,cst_Stdlib_Sys_Break,caml_fresh_oo_id(0)], - sigabrt=-1, - sigalrm=-2, - sigfpe=-3, - sighup=-4, - sigill=-5, - sigint=-6, - sigkill=-7, - sigpipe=-8, - sigquit=-9, - sigsegv=-10, - sigterm=-11, - sigusr1=-12, - sigusr2=-13, - sigchld=-14, - sigcont=-15, - sigstop=-16, - sigtstp=-17, - sigttin=-18, - sigttou=-19, - sigvtalrm=-20, - sigprof=-21, - sigbus=-22, - sigpoll=-23, - sigsys=-24, - sigtrap=-25, - sigurg=-26, - sigxcpu=-27, - sigxfsz=-28; - function catch_break(on){return on?0:0} - var development_version=0; - function Make(_Ek_,_Ej_){return [0,1]} - var - Immediate64=[0,Make], - Stdlib_Sys= - [0, - executable_name, - getenv_opt, - interactive, - os_type, - match$0, - unix, - win32, - cygwin, - match$1, - int_size, - big_endian, - max_string_length, - max_array_length, - max_floatarray_length, - set_signal, - sigabrt, - sigalrm, - sigfpe, - sighup, - sigill, - sigint, - sigkill, - sigpipe, - sigquit, - sigsegv, - sigterm, - sigusr1, - sigusr2, - sigchld, - sigcont, - sigstop, - sigtstp, - sigttin, - sigttou, - sigvtalrm, - sigprof, - sigbus, - sigpoll, - sigsys, - sigtrap, - sigurg, - sigxcpu, - sigxfsz, - Break, - catch_break, - ocaml_version, - development_version, - ocaml_release, - runtime.caml_ml_enable_runtime_warnings, - runtime.caml_ml_runtime_warnings_enabled, - Immediate64]; - caml_register_global(778,Stdlib_Sys,"Stdlib__Sys"); - function is_block(a){return 1 - (typeof a === "number"?1:0)} - function double_field(x,i){return caml_array_get(x,i)} - function set_double_field(x,i,v){return caml_array_set(x,i,v)} - var - first_non_constant_constructor=0, - last_non_constant_constructor_=245, - lazy_tag=246, - closure_tag=247, - object_tag=248, - infix_tag=249, - forward_tag=250, - no_scan_tag=251, - abstract_tag=251, - string_tag=252, - double_tag=253, - double_array_tag=254, - custom_tag=255, - int_tag=1000, - out_of_heap_tag=1001, - unaligned_tag=1002; - function info(obj) - {if(caml_obj_tag(obj) === 247) - {var - info=runtime.caml_obj_raw_field(obj,1), - arity=info >> 24, - start_env=info << 8 >>> 9 | 0; - return [0,arity,start_env]} - throw [0,Assert_failure,_n_]} - function of_val(x) - {var switch$0=0; - if(is_block(x) && caml_obj_tag(x) !== 248 && 1 <= x.length - 1) - {var slot=x[1];switch$0 = 1} - if(! switch$0)var slot=x; - var switch$1=0; - if(is_block(slot) && caml_obj_tag(slot) === 248) - {var name=slot[1];switch$1 = 1} - if(! switch$1)var name=invalid_arg(cst_Obj_extension_constructor$0); - return caml_obj_tag(name) === 252 - ?slot - :invalid_arg(cst_Obj_extension_constructor)} - function name(slot){return slot[1]} - function id(slot){return slot[2]} - var - Extension_constructor=[0,of_val,name,id], - extension_constructor=Extension_constructor[1], - extension_name=Extension_constructor[2], - 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); - 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_} - function get_key(e,o) - {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_get_key); - return runtime.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)} - 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)} - function unset_key(e,o) - {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_unset_key); - 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)} - function blit_key(e1,o1,e2,o2,l) - {if - (0 - <= - l - && - 0 - <= - o1 - && - ! - ((length(e1) - l | 0) < o1) - && - 0 - <= - o2 - && - ! - ((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_} - return invalid_arg(cst_Obj_Ephemeron_blit_key)} - var - _o_=runtime.caml_ephe_blit_data, - _p_=runtime.caml_ephe_check_data, - _q_= - [0, - create, - length, - get_key, - get_key_copy, - set_key, - unset_key, - check_key, - blit_key, - 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_, - max_ephe_length], - Stdlib_Obj= - [0, - is_block, - double_field, - set_double_field, - first_non_constant_constructor, - last_non_constant_constructor_, - lazy_tag, - closure_tag, - object_tag, - infix_tag, - forward_tag, - no_scan_tag, - abstract_tag, - string_tag, - double_tag, - double_array_tag, - custom_tag, - custom_tag, - int_tag, - out_of_heap_tag, - unaligned_tag, - [0,info], - Extension_constructor, - extension_constructor, - extension_name, - extension_id, - _q_]; - 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} - function force_lazy_block(blk) - {var closure=blk[1]; - blk[1] = raise_undefined; - try - {var result=caml_call1(closure,0); - caml_obj_make_forward(blk,result); - return result} - catch(e) - {e = caml_wrap_exception(e);blk[1] = function(param){throw e};throw e}} - function force_val_lazy_block(blk) - {var closure=blk[1]; - blk[1] = raise_undefined; - var result=caml_call1(closure,0); - caml_obj_make_forward(blk,result); - return result} - function force(lzv) - {var t=caml_obj_tag(lzv); - return t === 250?lzv[1]:t !== 246?lzv:force_lazy_block(lzv)} - function force_val(lzv) - {var t=caml_obj_tag(lzv); - return t === 250?lzv[1]:t !== 246?lzv:force_val_lazy_block(lzv)} - var - CamlinternalLazy= - [0,Undefined,force_lazy_block,force_val_lazy_block,force,force_val]; - caml_register_global(780,CamlinternalLazy,"CamlinternalLazy"); - function to_lazy(f){var x=caml_obj_block(246,1);x[1] = f;return x} - function from_val(v) - {var t=caml_obj_tag(v); - if(t !== 250 && t !== 246 && t !== 253)return v; - return runtime.caml_lazy_make_forward(v)} - function is_val(l){return caml_obj_tag(l) !== 246?1:0} - function map$0(f,x) - {return [246, - function(_D__) - {var - _D$_=caml_obj_tag(x), - _Ea_=250 === _D$_?x[1]:246 === _D$_?force_lazy_block(x):x; - return caml_call1(f,_Ea_)}]} - 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_))} - return [246, - function(_D7_) - {var - _D8_=caml_obj_tag(x), - _D9_=250 === _D8_?x[1]:246 === _D8_?force_lazy_block(x):x; - return caml_call1(f,_D9_)}]} - var - Stdlib_Lazy= - [0, - Undefined, - map$0, - is_val, - from_val, - map_val, - to_lazy, - force_val, - to_lazy, - from_val, - is_val]; - caml_register_global(781,Stdlib_Lazy,"Stdlib__Lazy"); - function empty(param){return 0} - function return$0(x,param){return [0,x,empty]} - function cons(x,next,param){return [0,x,next]} - function append$0(seq1,seq2,param) - {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 caml_call1(seq2,0)} - function map$1(f,seq,param) - {var match=caml_call1(seq,0); - if(match) - {var - next=match[2], - x=match[1], - _D2_=function(_D3_){return map$1(f,next,_D3_)}; - return [0,caml_call1(f,x),_D2_]} - return 0} - function filter_map(f,seq,param) - {var seq$0=seq; - for(;;) - {var match=caml_call1(seq$0,0); - if(match) - {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_)}]} - var seq$0=next; - continue} - return 0}} - function filter(f,seq,param) - {var seq$0=seq; - for(;;) - {var match=caml_call1(seq$0,0); - if(match) - {var next=match[2],x=match[1]; - if(caml_call1(f,x)) - return [0,x,function(_D0_){return filter(f,next,_D0_)}]; - 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_)} - return 0} - function flat_map(f,seq,param) - {var match=caml_call1(seq,0); - if(match) - {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_)} - return 0} - function fold_left(f,acc,seq) - {var acc$0=acc,seq$0=seq; - for(;;) - {var match=caml_call1(seq$0,0); - if(match) - {var - next=match[2], - x=match[1], - acc$1=caml_call2(f,acc$0,x), - acc$0=acc$1, - seq$0=next; - continue} - return acc$0}} - function iter(f,seq) - {var seq$0=seq; - for(;;) - {var match=caml_call1(seq$0,0); - if(match) - {var next=match[2],x=match[1]; - caml_call1(f,x); - var seq$0=next; - continue} - return 0}} - function unfold(f,u,param) - {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} - function is_empty(xs){var match=caml_call1(xs,0);return match?0:1} - function uncons(xs) - {var match=caml_call1(xs,0); - if(match){var xs$0=match[2],x=match[1];return [0,[0,x,xs$0]]} - return 0} - function length$0(xs$1) - {var accu=0,xs=xs$1; - for(;;) - {var match=caml_call1(xs,0); - if(match) - {var xs$0=match[2],accu$0=accu + 1 | 0,accu=accu$0,xs=xs$0;continue} - return accu}} - function iteri(f,xs$1) - {var i=0,xs=xs$1; - for(;;) - {var match=caml_call1(xs,0); - if(match) - {var xs$0=match[2],x=match[1]; - caml_call2(f,i,x); - var i$0=i + 1 | 0,i=i$0,xs=xs$0; - continue} - return 0}} - function fold_lefti(f,accu$1,xs$1) - {var accu=accu$1,i=0,xs=xs$1; - for(;;) - {var match=caml_call1(xs,0); - if(match) - {var - xs$0=match[2], - x=match[1], - accu$0=caml_call3(f,accu,i,x), - i$0=i + 1 | 0, - accu=accu$0, - i=i$0, - xs=xs$0; - continue} - return accu}} - function for_all(p,xs) - {var xs$0=xs; - 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_} - 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$0=xs$1; - continue} - return 0}} - function find(p,xs) - {var xs$0=xs; - for(;;) - {var match=caml_call1(xs$0,0); - if(match) - {var xs$1=match[2],x=match[1]; - if(caml_call1(p,x))return [0,x]; - var xs$0=xs$1; - continue} - return 0}} - function find_map(f,xs) - {var xs$0=xs; - for(;;) - {var match=caml_call1(xs$0,0); - if(match) - {var xs$1=match[2],x=match[1],result=caml_call1(f,x); - if(result)return result; - var xs$0=xs$1; - continue} - return 0}} - function iter2(f,xs,ys) - {var xs$0=xs,ys$0=ys; - for(;;) - {var match=caml_call1(xs$0,0); - 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]; - caml_call2(f,x,y); - var xs$0=xs$1,ys$0=ys$1; - continue} - return 0} - return 0}} - function fold_left2(f,accu,xs,ys) - {var accu$0=accu,xs$0=xs,ys$0=ys; - for(;;) - {var match=caml_call1(xs$0,0); - 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], - accu$1=caml_call3(f,accu$0,x,y), - accu$0=accu$1, - xs$0=xs$1, - ys$0=ys$1; - continue} - return accu$0} - return accu$0}} - function for_all2(f,xs,ys) - {var xs$0=xs,ys$0=ys; - for(;;) - {var match=caml_call1(xs$0,0); - 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_} - return 1} - return 1}} - function exists2(f,xs,ys) - {var xs$0=xs,ys$0=ys; - for(;;) - {var match=caml_call1(xs$0,0); - 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 xs$0=xs$1,ys$0=ys$1; - continue} - return 0} - return 0}} - function equal$0(eq,xs,ys) - {var xs$0=xs,ys$0=ys; - for(;;) - {var match=caml_call1(xs$0,0),match$0=caml_call1(ys$0,0); - if(match) - {if(match$0) - {var - ys$1=match$0[2], - 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_}} - else - if(! match$0)return 1; - return 0}} - function compare$0(cmp,xs,ys) - {var xs$0=xs,ys$0=ys; - for(;;) - {var match=caml_call1(xs$0,0),match$0=caml_call1(ys$0,0); - if(match) - {var _DN_=match[2],_DO_=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} - 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_]} - return 0} - function init(n,f) - {if(0 <= n) - {var _DI_=0;return function(_DJ_){return init_aux(f,_DI_,n,_DJ_)}} - return invalid_arg(cst_Seq_init)} - function repeat(x,param) - {return [0,x,function(_DH_){return repeat(x,_DH_)}]} - function forever(f,param) - {function _DF_(_DG_){return forever(f,_DG_)} - return [0,caml_call1(f,0),_DF_]} - function cycle_nonempty(xs,param) - {var _DD_=0; - return append$0(xs,function(_DE_){return cycle_nonempty(xs,_DE_)},_DD_)} - 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_)}]} - return 0} - function iterate1(f,x,param) - {var y=caml_call1(f,x); - return [0,y,function(_Dz_){return iterate1(f,y,_Dz_)}]} - function iterate(f,x) - {function _Dw_(_Dy_){return iterate1(f,x,_Dy_)} - return function(_Dx_){return [0,x,_Dw_]}} - 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_]} - return 0} - function mapi(f,xs) - {var _Dr_=0;return function(_Ds_){return mapi_aux(f,_Dr_,xs,_Ds_)}} - 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} - function scan(f,s,xs) - {function _Dn_(_Dp_){return tail_scan(f,s,xs,_Dp_)} - return function(_Do_){return [0,s,_Dn_]}} - function take_aux(n,xs) - {return 0 === n - ?empty - :function(param) - {var match=caml_call1(xs,0); - if(match) - {var xs$0=match[2],x=match[1]; - return [0,x,take_aux(n - 1 | 0,xs$0)]} - return 0}} - function take(n,xs) - {if(n < 0)invalid_arg(cst_Seq_take);return take_aux(n,xs)} - function drop(n,xs) - {return 0 <= n - ?0 === n - ?xs - :function(param) - {var n$0=n,xs$0=xs; - for(;;) - {var match=caml_call1(xs$0,0); - if(match) - {var xs$1=match[2],n$1=n$0 - 1 | 0; - if(0 === n$1)return caml_call1(xs$1,0); - var n$0=n$1,xs$0=xs$1; - continue} - return 0}} - :invalid_arg(cst_Seq_drop)} - function take_while(p,xs,param) - {var match=caml_call1(xs,0); - 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} - return 0} - function drop_while(p,xs,param) - {var xs$0=xs; - for(;;) - {var node=caml_call1(xs$0,0); - if(node) - {var xs$1=node[2],x=node[1]; - if(caml_call1(p,x)){var xs$0=xs$1;continue} - return node} - return 0}} - function group(eq,xs,param) - {var match=caml_call1(xs,0); - if(match) - {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_]} - return 0} - var Forced_twice=[248,cst_Stdlib_Seq_Forced_twice,caml_fresh_oo_id(0)]; - function failure(param){throw Forced_twice} - function memoize(xs) - {function s$0(param) - {var match=caml_call1(xs,0); - 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}} - function once(xs) - {function f(param) - {var match=caml_call1(xs,0); - if(match){var xs$0=match[2],x=match[1];return [0,x,once(xs$0)]} - return 0} - var action=[0,f]; - return function(param) - {var f=exchange(action,failure);return caml_call1(f,0)}} - function zip(xs,ys,param) - {var match=caml_call1(xs,0); - if(match) - {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} - return 0} - function map2(f,xs,ys,param) - {var match=caml_call1(xs,0); - if(match) - {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], - _C__=function(_C$_){return map2(f,xs$0,ys$0,_C$_)}; - return [0,caml_call2(f,x,y),_C__]} - 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 caml_call1(ys,0)} - function sorted_merge1(cmp,x,xs,y,ys) - {return 0 < caml_call2(cmp,x,y) - ?[0, - y, - function(_C7_) - {var match=caml_call1(ys,0); - if(match) - {var ys$0=match[2],y=match[1]; - return sorted_merge1(cmp,x,xs,y,ys$0)} - return [0,x,xs]}] - :[0, - x, - function(_C8_) - {var match=caml_call1(xs,0); - if(match) - {var xs$0=match[2],x=match[1]; - return sorted_merge1(cmp,x,xs$0,y,ys)} - return [0,y,ys]}]} - function sorted_merge(cmp,xs,ys,param) - {var match=caml_call1(xs,0),match$0=caml_call1(ys,0); - if(match) - {if(match$0) - {var ys$0=match$0[2],y=match$0[1],xs$0=match[2],x=match[1]; - return sorted_merge1(cmp,x,xs$0,y,ys$0)} - var c=match} - else - {if(! match$0)return 0;var c=match$0} - return c} - function map_fst(xys,param) - {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} - 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} - function unzip(xys) - {function _C2_(_C4_){return map_snd(xys,_C4_)} - return [0,function(_C3_){return map_fst(xys,_C3_)},_C2_]} - function filter_map_find_left_map(f,xs,param) - {var xs$0=xs; - for(;;) - {var match=caml_call1(xs$0,0); - if(match) - {var xs$1=match[2],x=match[1],match$0=caml_call1(f,x); - if(0 === match$0[0]) - {var y=match$0[1]; - return [0, - y, - function(_C1_){return filter_map_find_left_map(f,xs$1,_C1_)}]} - var xs$0=xs$1; - continue} - return 0}} - function filter_map_find_right_map(f,xs,param) - {var xs$0=xs; - for(;;) - {var match=caml_call1(xs$0,0); - if(match) - {var xs$1=match[2],x=match[1],match$0=caml_call1(f,x); - if(0 === match$0[0]){var xs$0=xs$1;continue} - var z=match$0[1]; - return [0, - z, - function(_C0_) - {return filter_map_find_right_map(f,xs$1,_C0_)}]} - return 0}} - function partition_map(f,xs) - {function _CX_(_CZ_){return filter_map_find_right_map(f,xs,_CZ_)} - return [0, - function(_CY_){return filter_map_find_left_map(f,xs,_CY_)}, - _CX_]} - 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 peel(xss) - {return unzip(function(_CS_){return filter_map(uncons,xss,_CS_)})} - 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) - {var match=caml_call1(xss,0); - if(match) - {var xss$0=match[2],xs=match[1],match$0=caml_call1(xs,0); - if(match$0) - {var - xs$0=match$0[2], - x=match$0[1], - 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_]} - 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 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 product(xs,ys) - {return map_product(function(x,y){return [0,x,y]},xs,ys)} - function of_dispenser(it) - {function c(param) - {var match=caml_call1(it,0); - if(match){var x=match[1];return [0,x,c]} - return 0} - return c} - function to_dispenser(xs) - {var s=[0,xs]; - return function(param) - {var match=caml_call1(s[1],0); - 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 - Stdlib_Seq= - [0, - is_empty, - uncons, - length$0, - iter, - fold_left, - iteri, - fold_lefti, - for_all, - exists, - find, - find_map, - iter2, - fold_left2, - for_all2, - exists2, - equal$0, - compare$0, - empty, - return$0, - cons, - init, - unfold, - repeat, - forever, - cycle, - iterate, - map$1, - mapi, - filter, - filter_map, - scan, - take, - drop, - take_while, - drop_while, - group, - memoize, - Forced_twice, - once, - transpose, - append$0, - concat, - flat_map, - flat_map, - zip, - map2, - interleave, - sorted_merge, - product, - map_product, - unzip, - unzip, - partition_map, - partition, - of_dispenser, - to_dispenser, - ints]; - caml_register_global(782,Stdlib_Seq,"Stdlib__Seq"); - var none=0; - function some(v){return [0,v]} - function value(o,default$0){if(o){var v=o[1];return v}return default$0} - function get$0(param) - {if(param){var v=param[1];return v} - return invalid_arg(cst_option_is_None)} - function bind(o,f){if(o){var v=o[1];return caml_call1(f,v)}return 0} - function join(param){if(param){var o=param[1];return o}return 0} - function map$2(f,o){if(o){var v=o[1];return [0,caml_call1(f,v)]}return 0} - function fold$0(none,some,param) - {if(param){var v=param[1];return caml_call1(some,v)}return none} - function iter$0(f,param) - {if(param){var v=param[1];return caml_call1(f,v)}return 0} - function is_none(param){return param?0:1} - function is_some(param){return param?1:0} - function equal$1(eq,o0,o1) - {if(o0) - {if(o1){var v1=o1[1],v0=o0[1];return caml_call2(eq,v0,v1)}} - else - if(! o1)return 1; - 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)} - 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_)}} - return empty} - var - Stdlib_Option= - [0, - none, - some, - value, - get$0, - bind, - join, - map$2, - fold$0, - iter$0, - is_none, - is_some, - equal$1, - compare$1, - to_result, - to_list, - to_seq]; - caml_register_global(783,Stdlib_Option,"Stdlib__Option"); - function ok(v){return [0,v]} - function error(e){return [1,e]} - function value$0(r,default$0) - {if(0 === r[0]){var v=r[1];return v}return default$0} - function get_ok(param) - {if(0 === param[0]){var v=param[1];return v} - return invalid_arg(cst_result_is_Error)} - function get_error(param) - {if(0 === param[0])return invalid_arg(cst_result_is_Ok); - var e=param[1]; - return e} - function bind$0(r,f) - {if(0 === r[0]){var v=r[1];return caml_call1(f,v)}return r} - function join$0(e){if(0 === e[0]){var r=e[1];return r}return e} - function map$3(f,e) - {if(0 === e[0]){var v=e[1];return [0,caml_call1(f,v)]}return e} - function map_error(f,v) - {if(0 === v[0])return v;var e=v[1];return [1,caml_call1(f,e)]} - function fold$1(ok,error,param) - {if(0 === param[0]){var v=param[1];return caml_call1(ok,v)} - var e=param[1]; - return caml_call1(error,e)} - function iter$1(f,param) - {if(0 === param[0]){var v=param[1];return caml_call1(f,v)}return 0} - function iter_error(f,param) - {if(0 === param[0])return 0;var e=param[1];return caml_call1(f,e)} - function is_ok(param){return 0 === param[0]?1:0} - 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)}} - else - {var _Cz_=r0[1]; - if(0 !== r1[0]){var e1=r1[1];return caml_call2(error,_Cz_,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)} - return -1} - var _Cx_=r0[1]; - if(0 === r1[0])return 1; - var e1=r1[1]; - return caml_call2(error,_Cx_,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_)}} - return empty} - var - Stdlib_Result= - [0, - ok, - error, - value$0, - get_ok, - get_error, - bind$0, - join$0, - map$3, - map_error, - fold$1, - iter$1, - iter_error, - is_ok, - is_error, - equal$2, - compare$2, - to_option, - to_list$0, - to_seq$0]; - caml_register_global(784,Stdlib_Result,"Stdlib__Result"); - function equal$3(_Cu_,_Ct_){return _Cu_ === _Ct_?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_} - var - Stdlib_Bool= - [0, - function(_Cr_){return 1 - _Cr_}, - equal$3, - compare$3, - _t_, - to_float, - to_string$0]; - caml_register_global(785,Stdlib_Bool,"Stdlib__Bool"); - function chr(n) - {if(0 <= n && ! (255 < n))return n;return invalid_arg(cst_Char_chr)} - function escaped(c) - {var switch$0=0; - if(40 <= c) - {if(92 === c)return cst$1;if(! (127 <= c))switch$0 = 1} - else - if(32 <= c) - {if(39 <= c)return cst$2;switch$0 = 1} - else - if(! (14 <= c)) - switch(c) - {case 8:return cst_b; - case 9:return cst_t; - case 10:return cst_n; - case 13:return cst_r - } - if(switch$0) - {var s$0=caml_create_bytes(1); - caml_bytes_unsafe_set(s$0,0,c); - return caml_string_of_bytes(s$0)} - var s=caml_create_bytes(4); - caml_bytes_unsafe_set(s,0,92); - caml_bytes_unsafe_set(s,1,48 + (c / 100 | 0) | 0); - caml_bytes_unsafe_set(s,2,48 + ((c / 10 | 0) % 10 | 0) | 0); - 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} - else - if(23 !== _Cq_)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} - else - if(23 !== _Cp_)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} - function compare$4(c1,c2){return c1 - c2 | 0} - function equal$4(c1,c2){return 0 === (c1 - c2 | 0)?1:0} - var - Stdlib_Char= - [0, - chr, - escaped, - lowercase, - uppercase, - lowercase_ascii, - uppercase_ascii, - compare$4, - equal$4]; - caml_register_global(786,Stdlib_Char,"Stdlib__Char"); - var - min$0=0, - max$0=1114111, - lo_bound=55295, - hi_bound=57344, - bom=65279, - rep=65533; - function succ(u) - {return u === 55295 - ?hi_bound - :u === 1114111?invalid_arg(err_no_succ):u + 1 | 0} - 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_; - else - var _Co_=57344 <= i?1:0,_Cn_=_Co_?i <= 1114111?1:0:_Co_; - return _Cn_} - function of_int(i) - {return is_valid(i) - ?i - :invalid_arg - (cat(caml_format_int(cst_X,i),cst_is_not_an_Unicode_scalar_v))} - function is_char(u){return u < 256?1:0} - function of_char(c){return c} - function to_char(u) - {return 255 < u - ?invalid_arg - (cat - (cst_U, - 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} - var compare$5=caml_int_compare; - function hash(_Ch_){return _Ch_} - 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} - function utf_decode(n,u){return (8 | n) << 24 | u} - function dec_invalid(n){return n << 24 | 65533} - function utf_8_byte_length(u) - {if(0 <= u) - {if(127 < u) - {if(2047 < u) - {if(65535 < u) - {if(1114111 < u)throw [0,Assert_failure,_u_];return 4} - return 3} - return 2} - return 1} - throw [0,Assert_failure,_v_]} - function utf_16_byte_length(u) - {if(0 <= u) - {if(65535 < u){if(1114111 < u)throw [0,Assert_failure,_w_];return 4} - return 2} - throw [0,Assert_failure,_x_]} - function _y_(_Cg_){return _Cg_} - var - Stdlib_Uchar= - [0, - min$0, - max$0, - bom, - rep, - succ, - pred, - is_valid, - of_int, - function(_Cf_){return _Cf_}, - _y_, - is_char, - of_char, - to_char, - unsafe_to_char, - equal$5, - compare$5, - hash, - utf_decode_is_valid, - utf_decode_uchar, - utf_decode_length, - utf_decode, - dec_invalid, - utf_8_byte_length, - utf_16_byte_length]; - caml_register_global(787,Stdlib_Uchar,"Stdlib__Uchar"); - function length$1(l) - {var len=0,param=l; - for(;;) - {if(param) - {var param$0=param[2],len$0=len + 1 | 0,len=len$0,param=param$0; - continue} - return len}} - function cons$0(a,l){return [0,a,l]} - function hd(param) - {if(param){var a=param[1];return a}return failwith(cst_hd)} - function tl(param) - {if(param){var l=param[2];return l}return failwith(cst_tl)} - function nth(l,n) - {if(0 <= n) - {var l$0=l,n$0=n; - for(;;) - {if(l$0) - {var l$1=l$0[2],a=l$0[1]; - if(0 === n$0)return a; - var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1; - continue} - return failwith(cst_nth)}} - return invalid_arg(cst_List_nth)} - function nth_opt(l,n) - {if(0 <= n) - {var l$0=l,n$0=n; - for(;;) - {if(l$0) - {var l$1=l$0[2],a=l$0[1]; - if(0 === n$0)return [0,a]; - var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1; - continue} - return 0}} - return invalid_arg(cst_List_nth$0)} - function rev_append(l1,l2) - {var l1$0=l1,l2$0=l2; - for(;;) - {if(l1$0) - {var l1$1=l1$0[2],a=l1$0[1],l2$1=[0,a,l2$0],l1$0=l1$1,l2$0=l2$1; - continue} - return l2$0}} - function rev(l){return rev_append(l,0)} - function init_aux$0(i,n,f) - {if(n <= i)return 0; - var r=caml_call1(f,i); - return [0,r,init_aux$0(i + 1 | 0,n,f)]} - function init$0(len,f) - {if(0 <= len) - {if(50 < len) - {var acc=0,i=0; - for(;;) - {if(len <= i)return rev(acc); - var i$0=i + 1 | 0,acc$0=[0,caml_call1(f,i),acc],acc=acc$0,i=i$0; - continue}} - return init_aux$0(0,len,f)} - return invalid_arg(cst_List_init)} - function flatten(param) - {if(param){var r=param[2],l=param[1];return append(l,flatten(r))} - return 0} - function map$4(f,param) - {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) - {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} - function mapi$0(f,l){return _z_(0,f,l)} - function rev_map(f,param) - {var accu=0,param$0=param; - for(;;) - {if(param$0) - {var - l=param$0[2], - a=param$0[1], - accu$0=[0,caml_call1(f,a),accu], - accu=accu$0, - param$0=l; - continue} - return accu}} - function iter$2(f,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],a=param$0[1]; - caml_call1(f,a); - var param$0=l; - continue} - return 0}} - function iteri$0(f,l$0) - {var i=0,param=l$0; - for(;;) - {if(param) - {var l=param[2],a=param[1]; - caml_call2(f,i,a); - var i$0=i + 1 | 0,i=i$0,param=l; - continue} - return 0}} - function fold_left$0(f,accu,l) - {var accu$0=accu,l$0=l; - for(;;) - {if(l$0) - {var - l$1=l$0[2], - a=l$0[1], - accu$1=caml_call2(f,accu$0,a), - accu$0=accu$1, - l$0=l$1; - continue} - return accu$0}} - function fold_right(f,l,accu) - {if(l){var l$0=l[2],a=l[1];return caml_call2(f,a,fold_right(f,l$0,accu))} - return accu} - function map2$0(f,l1,l2) - {if(l1) - {if(l2) - {var l2$0=l2[2],a2=l2[1],l1$0=l1[2],a1=l1[1],r=caml_call2(f,a1,a2); - return [0,r,map2$0(f,l1$0,l2$0)]}} - else - if(! l2)return 0; - return invalid_arg(cst_List_map2)} - function rev_map2(f,l1,l2) - {var accu=0,l1$0=l1,l2$0=l2; - for(;;) - {if(l1$0) - {if(l2$0) - {var - l2$1=l2$0[2], - a2=l2$0[1], - l1$1=l1$0[2], - a1=l1$0[1], - accu$0=[0,caml_call2(f,a1,a2),accu], - accu=accu$0, - l1$0=l1$1, - l2$0=l2$1; - continue}} - else - if(! l2$0)return accu; - return invalid_arg(cst_List_rev_map2)}} - function iter2$0(f,l1,l2) - {var l1$0=l1,l2$0=l2; - for(;;) - {if(l1$0) - {if(l2$0) - {var l2$1=l2$0[2],a2=l2$0[1],l1$1=l1$0[2],a1=l1$0[1]; - caml_call2(f,a1,a2); - var l1$0=l1$1,l2$0=l2$1; - continue}} - else - if(! l2$0)return 0; - return invalid_arg(cst_List_iter2)}} - function fold_left2$0(f,accu,l1,l2) - {var accu$0=accu,l1$0=l1,l2$0=l2; - for(;;) - {if(l1$0) - {if(l2$0) - {var - l2$1=l2$0[2], - a2=l2$0[1], - l1$1=l1$0[2], - a1=l1$0[1], - accu$1=caml_call3(f,accu$0,a1,a2), - accu$0=accu$1, - l1$0=l1$1, - l2$0=l2$1; - continue}} - else - if(! l2$0)return accu$0; - return invalid_arg(cst_List_fold_left2)}} - function fold_right2(f,l1,l2,accu) - {if(l1) - {if(l2) - {var l2$0=l2[2],a2=l2[1],l1$0=l1[2],a1=l1[1]; - return caml_call3(f,a1,a2,fold_right2(f,l1$0,l2$0,accu))}} - else - if(! l2)return accu; - return invalid_arg(cst_List_fold_right2)} - function for_all$0(p,param) - {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_} - 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 param$0=l; - continue} - return 0}} - function for_all2$0(p,l1,l2) - {var l1$0=l1,l2$0=l2; - for(;;) - {if(l1$0) - {if(l2$0) - {var - l2$1=l2$0[2], - 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_}} - else - if(! l2$0)return 1; - return invalid_arg(cst_List_for_all2)}} - function exists2$0(p,l1,l2) - {var l1$0=l1,l2$0=l2; - for(;;) - {if(l1$0) - {if(l2$0) - {var - l2$1=l2$0[2], - a2=l2$0[1], - l1$1=l1$0[2], - a1=l1$0[1], - _Cb_=caml_call2(p,a1,a2); - if(_Cb_)return _Cb_; - var l1$0=l1$1,l2$0=l2$1; - continue}} - else - if(! l2$0)return 0; - return invalid_arg(cst_List_exists2)}} - function mem(x,param) - {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 param$0=l; - continue} - return 0}} - function memq(x,param) - {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 param$0=l; - continue} - return 0}} - function assoc(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],match=param$0[1],b=match[2],a=match[1]; - if(0 === caml_compare(a,x))return b; - var param$0=l; - continue} - throw Not_found}} - function assoc_opt(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],match=param$0[1],b=match[2],a=match[1]; - if(0 === caml_compare(a,x))return [0,b]; - var param$0=l; - continue} - return 0}} - function assq(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],match=param$0[1],b=match[2],a=match[1]; - if(a === x)return b; - var param$0=l; - continue} - throw Not_found}} - function assq_opt(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],match=param$0[1],b=match[2],a=match[1]; - if(a === x)return [0,b]; - var param$0=l; - continue} - return 0}} - function mem_assoc(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - l=param$0[2], - match=param$0[1], - a=match[1], - _B__=0 === caml_compare(a,x)?1:0; - if(_B__)return _B__; - var param$0=l; - continue} - return 0}} - function mem_assq(x,param) - {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 param$0=l; - continue} - return 0}} - function remove_assoc(x,param) - {if(param) - {var l=param[2],pair=param[1],a=pair[1]; - return 0 === caml_compare(a,x)?l:[0,pair,remove_assoc(x,l)]} - return 0} - function remove_assq(x,param) - {if(param) - {var l=param[2],pair=param[1],a=pair[1]; - return a === x?l:[0,pair,remove_assq(x,l)]} - return 0} - function find$0(p,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],x=param$0[1]; - if(caml_call1(p,x))return x; - var param$0=l; - continue} - throw Not_found}} - function find_opt(p,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],x=param$0[1]; - if(caml_call1(p,x))return [0,x]; - var param$0=l; - continue} - return 0}} - function find_map$0(f,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],x=param$0[1],result=caml_call1(f,x); - if(result)return result; - var param$0=l; - continue} - return 0}} - function find_all(p) - {var accu=0; - return function(param$0) - {var accu$0=accu,param=param$0; - for(;;) - {if(param) - {var l=param[2],x=param[1]; - if(caml_call1(p,x)) - {var accu$1=[0,x,accu$0],accu$0=accu$1,param=l;continue} - var param=l; - continue} - return rev(accu$0)}}} - function filteri(p,param) - {var i=0,acc=0,param$0=param; - for(;;) - {if(param$0) - {var - l=param$0[2], - x=param$0[1], - acc$0=caml_call2(p,i,x)?[0,x,acc]:acc, - i$0=i + 1 | 0, - i=i$0, - acc=acc$0, - param$0=l; - continue} - return rev(acc)}} - function filter_map$0(f) - {var accu=0; - return function(param$0) - {var accu$0=accu,param=param$0; - for(;;) - {if(param) - {var l=param[2],x=param[1],match=caml_call1(f,x); - if(match) - {var v=match[1],accu$1=[0,v,accu$0],accu$0=accu$1,param=l; - continue} - var param=l; - continue} - return rev(accu$0)}}} - function concat_map(f,param) - {var acc=0,param$0=param; - for(;;) - {if(param$0) - {var - l=param$0[2], - x=param$0[1], - xs=caml_call1(f,x), - acc$0=rev_append(xs,acc), - acc=acc$0, - param$0=l; - continue} - return rev(acc)}} - function fold_left_map(f,accu,param) - {var accu$0=accu,l_accu=0,param$0=param; - for(;;) - {if(param$0) - {var - l=param$0[2], - x=param$0[1], - match=caml_call2(f,accu$0,x), - x$0=match[2], - accu$1=match[1], - l_accu$0=[0,x$0,l_accu], - accu$0=accu$1, - l_accu=l_accu$0, - param$0=l; - continue} - return [0,accu$0,rev(l_accu)]}} - function partition$0(p,param) - {var yes=0,no=0,param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],x=param$0[1]; - if(caml_call1(p,x)) - {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_]}} - function partition_map$0(p,param) - {var left=0,right=0,param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],x=param$0[1],match=caml_call1(p,x); - if(0 === match[0]) - {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_]}} - function split(param) - {if(param) - {var - l=param[2], - match=param[1], - y=match[2], - x=match[1], - match$0=split(l), - ry=match$0[2], - rx=match$0[1]; - return [0,[0,x,rx],[0,y,ry]]} - return _A_} - function combine(l1,l2) - {if(l1) - {if(l2) - {var l2$0=l2[2],a2=l2[1],l1$0=l1[2],a1=l1[1]; - return [0,[0,a1,a2],combine(l1$0,l2$0)]}} - else - if(! l2)return 0; - return invalid_arg(cst_List_combine)} - function merge(cmp,l1,l2) - {if(l1) - {if(l2) - {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1]; - return 0 < caml_call2(cmp,h1,h2) - ?[0,h2,merge(cmp,l1,t2)] - :[0,h1,merge(cmp,t1,l2)]} - return l1} - return l2} - function fast_sort(cmp,l) - {function rev_sort(n,l) - {if(2 === n) - {if(l) - {var _B3_=l[2]; - if(_B3_) - {var - tl=_B3_[2], - x2=_B3_[1], - x1=l[1], - 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 _B5_=l[2]; - if(_B5_) - {var _B6_=_B5_[2]; - if(_B6_) - {var - tl$1=_B6_[2], - x3=_B6_[1], - x2$0=_B5_[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]]]; - return [0,s$0,tl$1]}}} - var - n1=n >> 1, - n2=n - n1 | 0, - match=sort(n1,l), - l2$0=match[2], - s1=match[1], - match$0=sort(n2,l2$0), - tl$0=match$0[2], - s2=match$0[1], - l1=s1, - l2=s2, - accu=0; - for(;;) - {if(l1) - {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; - continue} - var _B4_=rev_append(l1,accu)} - else - var _B4_=rev_append(l2,accu); - return [0,_B4_,tl$0]}} - function sort(n,l) - {if(2 === n) - {if(l) - {var _BZ_=l[2]; - if(_BZ_) - {var - tl=_BZ_[2], - x2=_BZ_[1], - x1=l[1], - 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 _B1_=l[2]; - if(_B1_) - {var _B2_=_B1_[2]; - if(_B2_) - {var - tl$1=_B2_[2], - x3=_B2_[1], - x2$0=_B1_[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]]]; - return [0,s$0,tl$1]}}} - var - n1=n >> 1, - n2=n - n1 | 0, - match=rev_sort(n1,l), - l2$0=match[2], - s1=match[1], - match$0=rev_sort(n2,l2$0), - tl$0=match$0[2], - s2=match$0[1], - l1=s1, - l2=s2, - accu=0; - for(;;) - {if(l1) - {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; - continue} - var _B0_=rev_append(l1,accu)} - else - var _B0_=rev_append(l2,accu); - return [0,_B0_,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) - {if(2 === n) - {if(l) - {var _BQ_=l[2]; - if(_BQ_) - {var - tl=_BQ_[2], - x2=_BQ_[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]]; - return [0,s,tl]}}} - else - if(3 === n && l) - {var _BS_=l[2]; - if(_BS_) - {var _BT_=_BS_[2]; - if(_BT_) - {var - tl$1=_BT_[2], - x3=_BT_[1], - x2$0=_BS_[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_= - 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_; - else - if(0 < c$1) - {var c$3=caml_call2(cmp,x2$0,x3); - if(0 === c$3) - var _BV_=[0,x1$0,[0,x2$0,0]]; - else - if(0 < c$3) - var _BV_=[0,x1$0,[0,x2$0,[0,x3,0]]]; - else - var - c$4=caml_call2(cmp,x1$0,x3), - _BW_= - 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_} - else - {var c$5=caml_call2(cmp,x1$0,x3); - if(0 === c$5) - var _BX_=[0,x2$0,[0,x1$0,0]]; - else - if(0 < c$5) - var _BX_=[0,x2$0,[0,x1$0,[0,x3,0]]]; - else - var - c$6=caml_call2(cmp,x2$0,x3), - _BY_= - 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_} - return [0,s$0,tl$1]}}} - var - n1=n >> 1, - n2=n - n1 | 0, - match=sort(n1,l), - l2$0=match[2], - s1=match[1], - match$0=sort(n2,l2$0), - tl$0=match$0[2], - s2=match$0[1], - l1=s1, - l2=s2, - accu=0; - for(;;) - {if(l1) - {if(l2) - {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; - continue} - var _BR_=rev_append(l1,accu)} - else - var _BR_=rev_append(l2,accu); - return [0,_BR_,tl$0]}} - function sort(n,l) - {if(2 === n) - {if(l) - {var _BH_=l[2]; - if(_BH_) - {var - tl=_BH_[2], - x2=_BH_[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]]; - return [0,s,tl]}}} - else - if(3 === n && l) - {var _BJ_=l[2]; - if(_BJ_) - {var _BK_=_BJ_[2]; - if(_BK_) - {var - tl$1=_BK_[2], - x3=_BK_[1], - x2$0=_BJ_[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_= - 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_; - else - if(0 <= c$1) - {var c$3=caml_call2(cmp,x1$0,x3); - if(0 === c$3) - var _BM_=[0,x2$0,[0,x1$0,0]]; - else - if(0 <= c$3) - var - c$4=caml_call2(cmp,x2$0,x3), - _BN_= - 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_} - else - {var c$5=caml_call2(cmp,x2$0,x3); - if(0 === c$5) - var _BO_=[0,x1$0,[0,x2$0,0]]; - else - if(0 <= c$5) - var - c$6=caml_call2(cmp,x1$0,x3), - _BP_= - 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_} - return [0,s$0,tl$1]}}} - var - n1=n >> 1, - n2=n - n1 | 0, - match=rev_sort(n1,l), - l2$0=match[2], - s1=match[1], - match$0=rev_sort(n2,l2$0), - tl$0=match$0[2], - s2=match$0[1], - l1=s1, - l2=s2, - accu=0; - for(;;) - {if(l1) - {if(l2) - {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; - continue} - var _BI_=rev_append(l1,accu)} - else - var _BI_=rev_append(l2,accu); - return [0,_BI_,tl$0]}} - var len=length$1(l); - return 2 <= len?sort(len,l)[1]:l} - function compare_lengths(l1,l2) - {var l1$0=l1,l2$0=l2; - for(;;) - {if(l1$0) - {if(l2$0){var l2$1=l2$0[2],l1$1=l1$0[2],l1$0=l1$1,l2$0=l2$1;continue} - return 1} - return l2$0?-1:0}} - function compare_length_with(l,n) - {var l$0=l,n$0=n; - for(;;) - {if(l$0) - {var l$1=l$0[2]; - if(0 < n$0){var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1;continue} - return 1} - return 0 === n$0?0:0 < n$0?-1:1}} - function equal$6(eq,l1,l2) - {var l1$0=l1,l2$0=l2; - for(;;) - {if(l1$0) - {if(l2$0) - {var - l2$1=l2$0[2], - 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_}} - else - if(! l2$0)return 1; - return 0}} - function compare$6(cmp,l1,l2) - {var l1$0=l1,l2$0=l2; - for(;;) - {if(l1$0) - {var _BE_=l1$0[2],_BF_=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} - return c} - return 1} - return l2$0?-1:0}} - function to_seq$1(l) - {function aux(l,param) - {if(l) - {var tail=l[2],x=l[1]; - return [0,x,function(_BD_){return aux(tail,_BD_)}]} - return 0} - return function(_BC_){return aux(l,_BC_)}} - 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 match=caml_call1(seq,0); - if(match) - {var next=match[2],x=match[1]; - return [0,x,direct(depth - 1 | 0,next)]} - return 0} - return direct(500,seq)} - var - include$0= - [0, - length$1, - compare_lengths, - compare_length_with, - cons$0, - hd, - tl, - nth, - nth_opt, - rev, - init$0, - append, - rev_append, - flatten, - flatten, - equal$6, - compare$6, - iter$2, - iteri$0, - map$4, - mapi$0, - rev_map, - filter_map$0, - concat_map, - fold_left_map, - fold_left$0, - fold_right, - iter2$0, - map2$0, - rev_map2, - fold_left2$0, - fold_right2, - for_all$0, - exists$0, - for_all2$0, - exists2$0, - mem, - memq, - find$0, - find_opt, - find_map$0, - find_all, - find_all, - filteri, - partition$0, - partition_map$0, - assoc, - assoc_opt, - assq, - assq_opt, - mem_assoc, - mem_assq, - remove_assoc, - remove_assq, - split, - combine, - fast_sort, - fast_sort, - fast_sort, - sort_uniq, - merge, - to_seq$1, - of_seq]; - caml_register_global(788,include$0,"Stdlib__List"); - var zero=0,one=1,minus_one=-1; - 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} - 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} - function to_string$1(x){return caml_string_of_jsbytes("" + x)} - var - Stdlib_Int= - [0, - zero, - one, - minus_one, - abs$0, - max_int$0, - min_int$0, - lognot, - equal$7, - compare$7, - min$1, - max$1, - to_string$1]; - caml_register_global(789,Stdlib_Int,"Stdlib__Int"); - 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_; - for(;;) - {caml_bytes_unsafe_set(s,i,caml_call1(f,i)); - var _By_=i + 1 | 0; - if(_Bx_ !== i){var i=_By_;continue} - break}} - return s} - var empty$0=caml_create_bytes(0); - function copy(s) - {var len=caml_ml_bytes_length(s),r=caml_create_bytes(len); - caml_blit_bytes(s,0,r,0,len); - return r} - function of_bytes(b){return caml_string_of_bytes(copy(b))} - function to_bytes(s){return copy(caml_bytes_of_string(s))} - function sub(s,ofs,len) - {if - (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) - {var r=caml_create_bytes(len);caml_blit_bytes(s,ofs,r,0,len);return r} - return invalid_arg(cst_String_sub_Bytes_sub)} - 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; - if(a < 0) - {if(_Bv_ && ! match)switch$0 = 1} - else - if(! _Bv_ && match)switch$0 = 1; - return switch$0?invalid_arg(cst_Bytes_extend):c} - function extend(s,left,right) - {var - len=symbol$0(symbol$0(caml_ml_bytes_length(s),left),right), - r=caml_create_bytes(len); - if(0 <= left) - var dstoff=left,srcoff=0; - else - var dstoff=0,srcoff=- left | 0; - var cpylen=min$1(caml_ml_bytes_length(s) - srcoff | 0,len - dstoff | 0); - if(0 < cpylen)caml_blit_bytes(s,srcoff,r,dstoff,cpylen); - return r} - function fill(s,ofs,len,c) - {if - (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) - return caml_fill_bytes(s,ofs,len,c); - return invalid_arg(cst_String_fill_Bytes_fill)} - function blit(s1,ofs1,s2,ofs2,len) - {if - (0 - <= - len - && - 0 - <= - ofs1 - && - ! - ((caml_ml_bytes_length(s1) - len | 0) < ofs1) - && - 0 - <= - ofs2 - && - ! - ((caml_ml_bytes_length(s2) - len | 0) < ofs2)) - return caml_blit_bytes(s1,ofs1,s2,ofs2,len); - return invalid_arg(cst_Bytes_blit)} - function blit$0(s1,ofs1,s2,ofs2,len) - {if - (0 - <= - len - && - 0 - <= - ofs1 - && - ! - ((caml_ml_string_length(s1) - len | 0) < ofs1) - && - 0 - <= - ofs2 - && - ! - ((caml_ml_bytes_length(s2) - len | 0) < ofs2)) - 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_; - for(;;) - {caml_call1(f,caml_bytes_unsafe_get(a,i)); - var _Bu_=i + 1 | 0; - if(_Bt_ !== i){var i=_Bu_;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_; - for(;;) - {caml_call2(f,i,caml_bytes_unsafe_get(a,i)); - var _Br_=i + 1 | 0; - if(_Bq_ !== i){var i=_Br_;continue} - break}} - return 0} - function concat$0(sep,l) - {if(l) - {var seplen=caml_ml_bytes_length(sep),acc=0,param=l,pos$1=0; - for(;;) - {if(param) - {var _Bm_=param[1]; - if(param[2]) - {var - tl=param[2], - x=(caml_ml_bytes_length(_Bm_) + 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} - else - var _Bo_=acc; - var dst=caml_create_bytes(_Bo_),pos=pos$1,param$0=l; - for(;;) - {if(param$0) - {var _Bn_=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 - (sep,0,dst,pos + caml_ml_bytes_length(_Bn_) | 0,seplen); - var - pos$0=(pos + caml_ml_bytes_length(_Bn_) | 0) + seplen | 0, - pos=pos$0, - param$0=tl$0; - continue} - caml_blit_bytes(_Bn_,0,dst,pos,caml_ml_bytes_length(_Bn_)); - return dst} - return dst}}} - return empty$0} - function cat$0(s1,s2) - {var - l1=caml_ml_bytes_length(s1), - l2=caml_ml_bytes_length(s2), - r=caml_create_bytes(l1 + l2 | 0); - caml_blit_bytes(s1,0,r,0,l1); - 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} - else - if(2 !== _Bl_)switch$0 = 1; - return switch$0?1:0} - function trim(s) - {var len=caml_ml_bytes_length(s),i=[0,0]; - for(;;) - {if(i[1] < len && is_space(caml_bytes_unsafe_get(s,i[1]))) - {i[1]++;continue} - var j=[0,len - 1 | 0]; - for(;;) - {if(i[1] <= j[1] && is_space(caml_bytes_unsafe_get(s,j[1]))) - {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_; - 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} - else - if(56 < _Bi_ - 1 >>> 0){switch$0 = 1;switch$1 = 1} - if(! switch$1){var _Bj_=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} - 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_; - for(;;) - {var c=caml_bytes_unsafe_get(s,i),switch$2=0; - if(35 <= c) - if(92 === c) - switch$2 = 2; - else - if(127 <= c)switch$2 = 1;else switch$2 = 3; - else - if(32 <= c) - if(34 <= c)switch$2 = 2;else switch$2 = 3; - else - if(14 <= c) - switch$2 = 1; - else - switch(c) - {case 8: - caml_bytes_unsafe_set(s$0,n[1],92); - n[1]++; - caml_bytes_unsafe_set(s$0,n[1],98); - break; - case 9: - caml_bytes_unsafe_set(s$0,n[1],92); - n[1]++; - caml_bytes_unsafe_set(s$0,n[1],116); - break; - case 10: - caml_bytes_unsafe_set(s$0,n[1],92); - n[1]++; - caml_bytes_unsafe_set(s$0,n[1],110); - break; - case 13: - caml_bytes_unsafe_set(s$0,n[1],92); - n[1]++; - caml_bytes_unsafe_set(s$0,n[1],114); - break; - default:switch$2 = 1} - switch(switch$2) - {case 1: - caml_bytes_unsafe_set(s$0,n[1],92); - n[1]++; - caml_bytes_unsafe_set(s$0,n[1],48 + (c / 100 | 0) | 0); - n[1]++; - caml_bytes_unsafe_set(s$0,n[1],48 + ((c / 10 | 0) % 10 | 0) | 0); - n[1]++; - caml_bytes_unsafe_set(s$0,n[1],48 + (c % 10 | 0) | 0); - break; - case 2: - caml_bytes_unsafe_set(s$0,n[1],92); - n[1]++; - caml_bytes_unsafe_set(s$0,n[1],c); - break; - 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} - 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_; - 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} - 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_; - 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} - 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_; - 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} - 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_; - 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} - break}} - return r[1]} - function exists$1(p,s) - {var n=caml_ml_bytes_length(s),i=0; - for(;;) - {if(i === n)return 0; - if(caml_call1(p,caml_bytes_unsafe_get(s,i)))return 1; - var i$0=i + 1 | 0,i=i$0; - continue}} - function for_all$1(p,s) - {var n=caml_ml_bytes_length(s),i=0; - for(;;) - {if(i === n)return 1; - if(caml_call1(p,caml_bytes_unsafe_get(s,i))) - {var i$0=i + 1 | 0,i=i$0;continue} - return 0}} - function uppercase_ascii$0(s){return map$5(uppercase_ascii,s)} - function lowercase_ascii$0(s){return map$5(lowercase_ascii,s)} - function apply1(f,s) - {if(0 === caml_ml_bytes_length(s))return s; - var r=copy(s); - caml_bytes_unsafe_set(r,0,caml_call1(f,caml_bytes_unsafe_get(s,0))); - return r} - function capitalize_ascii(s){return apply1(uppercase_ascii,s)} - function uncapitalize_ascii(s){return apply1(lowercase_ascii,s)} - function starts_with(prefix,s) - {var - len_s=caml_ml_bytes_length(s), - len_pre=caml_ml_bytes_length(prefix), - _A3_=len_pre <= len_s?1:0; - if(_A3_) - {var i=0; - for(;;) - {if(i === len_pre)return 1; - if(caml_bytes_unsafe_get(s,i) !== caml_bytes_unsafe_get(prefix,i)) - return 0; - var i$0=i + 1 | 0,i=i$0; - continue}} - return _A3_} - 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_) - {var i=0; - for(;;) - {if(i === len_suf)return 1; - if - (caml_bytes_unsafe_get(s,diff + i | 0) - !== - caml_bytes_unsafe_get(suffix,i)) - return 0; - var i$0=i + 1 | 0,i=i$0; - continue}} - return _A2_} - function index_rec(s,lim,i,c) - {var i$0=i; - for(;;) - {if(lim <= i$0)throw Not_found; - if(caml_bytes_unsafe_get(s,i$0) === c)return i$0; - var i$1=i$0 + 1 | 0,i$0=i$1; - continue}} - function index(s,c){return index_rec(s,caml_ml_bytes_length(s),0,c)} - function index_rec_opt(s,lim,i,c) - {var i$0=i; - for(;;) - {if(lim <= i$0)return 0; - if(caml_bytes_unsafe_get(s,i$0) === c)return [0,i$0]; - var i$1=i$0 + 1 | 0,i$0=i$1; - continue}} - function index_opt(s,c) - {return index_rec_opt(s,caml_ml_bytes_length(s),0,c)} - function index_from(s,i,c) - {var l=caml_ml_bytes_length(s); - if(0 <= i && ! (l < i))return index_rec(s,l,i,c); - return invalid_arg(cst_String_index_from_Bytes_in)} - function index_from_opt(s,i,c) - {var l=caml_ml_bytes_length(s); - if(0 <= i && ! (l < i))return index_rec_opt(s,l,i,c); - return invalid_arg(cst_String_index_from_opt_Byte)} - function rindex_rec(s,i,c) - {var i$0=i; - for(;;) - {if(0 <= i$0) - {if(caml_bytes_unsafe_get(s,i$0) === c)return i$0; - var i$1=i$0 - 1 | 0,i$0=i$1; - continue} - throw Not_found}} - function rindex(s,c) - {return rindex_rec(s,caml_ml_bytes_length(s) - 1 | 0,c)} - function rindex_from(s,i,c) - {if(-1 <= i && ! (caml_ml_bytes_length(s) <= i))return rindex_rec(s,i,c); - return invalid_arg(cst_String_rindex_from_Bytes_r)} - function rindex_rec_opt(s,i,c) - {var i$0=i; - for(;;) - {if(0 <= i$0) - {if(caml_bytes_unsafe_get(s,i$0) === c)return [0,i$0]; - var i$1=i$0 - 1 | 0,i$0=i$1; - continue} - return 0}} - function rindex_opt(s,c) - {return rindex_rec_opt(s,caml_ml_bytes_length(s) - 1 | 0,c)} - function rindex_from_opt(s,i,c) - {if(-1 <= i && ! (caml_ml_bytes_length(s) <= i)) - return rindex_rec_opt(s,i,c); - return invalid_arg(cst_String_rindex_from_opt_Byt)} - function contains_from(s,i,c) - {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_} - 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_} - 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_; - 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_]; - j[1] = i} - var _AX_=i - 1 | 0; - if(0 !== i){var i=_AX_;continue} - break}} - var _AV_=r[1]; - return [0,sub(s,0,j[1]),_AV_]} - 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)} - function uncapitalize(s){return apply1(lowercase,s)} - 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_)}} - 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_)}} - function of_seq$0(i) - {var n=[0,0],buf=[0,make$0(256,0)]; - iter - (function(c) - {if(n[1] === caml_ml_bytes_length(buf[1])) - {var - new_len= - min$1(2 * caml_ml_bytes_length(buf[1]) | 0,max_string_length); - if(caml_ml_bytes_length(buf[1]) === new_len) - failwith(cst_Bytes_of_seq_cannot_grow_b); - var new_buf=make$0(new_len,0); - blit(buf[1],0,new_buf,0,n[1]); - buf[1] = new_buf} - caml_bytes_set(buf[1],n[1],c); - n[1]++; - return 0}, - i); - return sub(buf[1],0,n[1])} - function get$1(b,i){return caml_bswap16(caml_bytes_get16(b,i))} - function get_int8(b,i){return caml_bytes_get(b,i) << 24 >> 24} - function get_uint16_le(b,i){return caml_bytes_get16(b,i)} - function get_uint16_be(b,i){return caml_bswap16(caml_bytes_get16(b,i))} - function get_int16_ne(b,i){return caml_bytes_get16(b,i) << 16 >> 16} - function get_int16_le(b,i){return caml_bytes_get16(b,i) << 16 >> 16} - function get_int16_be(b,i){return get_uint16_be(b,i) << 16 >> 16} - function get_int32_le(b,i){return caml_bytes_get32(b,i)} - function get_int32_be(b,i){return caml_int32_bswap(caml_bytes_get32(b,i))} - function get_int64_le(b,i){return caml_bytes_get64(b,i)} - function get_int64_be(b,i){return caml_int64_bswap(caml_bytes_get64(b,i))} - function set$0(b,i,x){return caml_bytes_set16(b,i,caml_bswap16(x))} - function set_int16_le(b,i,x){return caml_bytes_set16(b,i,x)} - function set_int16_be(b,i,x){return caml_bytes_set16(b,i,caml_bswap16(x))} - function set_int32_le(b,i,x){return caml_bytes_set32(b,i,x)} - function set_int32_be(b,i,x) - {return caml_bytes_set32(b,i,caml_int32_bswap(x))} - function set_int64_le(b,i,x){return caml_bytes_set64(b,i,x)} - function set_int64_be(b,i,x) - {return caml_bytes_set64(b,i,caml_int64_bswap(x))} - var set_uint8=caml_bytes_set,set_uint16_ne=caml_bytes_set16; - function dec_ret(n,u){return utf_decode(n,u)} - function not_in_x80_to_xBF(b){return 2 !== (b >>> 6 | 0)?1:0} - 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_} - 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} - function utf_8_uchar_4(b0,b1,b2,b3) - {return (b0 & 7) << 18 | (b1 & 63) << 12 | (b2 & 63) << 6 | b3 & 63} - function get_utf_8_uchar(b,i) - {var b0=caml_bytes_get(b,i),max=caml_ml_bytes_length(b) - 1 | 0; - if(224 <= b0) - {var switch$0=0; - if(237 <= b0) - {if(! (245 <= b0)) - switch(b0 - 237 | 0) - {case 0: - var i$0=i + 1 | 0; - if(max < i$0)return dec_invalid(1); - var b1=caml_bytes_unsafe_get(b,i$0); - if(not_in_x80_to_x9F(b1))return dec_invalid(1); - var i$1=i$0 + 1 | 0; - if(max < i$1)return dec_invalid(2); - var b2=caml_bytes_unsafe_get(b,i$1); - return not_in_x80_to_xBF(b2) - ?dec_invalid(2) - :dec_ret(3,utf_8_uchar_3(b0,b1,b2)); - case 3: - var i$4=i + 1 | 0; - if(max < i$4)return dec_invalid(1); - var b1$1=caml_bytes_unsafe_get(b,i$4); - if(not_in_x90_to_xBF(b1$1))return dec_invalid(1); - var i$5=i$4 + 1 | 0; - if(max < i$5)return dec_invalid(2); - var b2$1=caml_bytes_unsafe_get(b,i$5); - if(not_in_x80_to_xBF(b2$1))return dec_invalid(2); - var i$6=i$5 + 1 | 0; - if(max < i$6)return dec_invalid(3); - var b3=caml_bytes_unsafe_get(b,i$6); - return not_in_x80_to_xBF(b3) - ?dec_invalid(3) - :dec_ret(4,utf_8_uchar_4(b0,b1$1,b2$1,b3)); - case 7: - var i$10=i + 1 | 0; - if(max < i$10)return dec_invalid(1); - var b1$3=caml_bytes_unsafe_get(b,i$10); - if(not_in_x80_to_x8F(b1$3))return dec_invalid(1); - var i$11=i$10 + 1 | 0; - if(max < i$11)return dec_invalid(2); - var b2$3=caml_bytes_unsafe_get(b,i$11); - if(not_in_x80_to_xBF(b2$3))return dec_invalid(2); - var i$12=i$11 + 1 | 0; - if(max < i$12)return dec_invalid(3); - var b3$1=caml_bytes_unsafe_get(b,i$12); - return not_in_x80_to_xBF(b3$1) - ?dec_invalid(3) - :dec_ret(4,utf_8_uchar_4(b0,b1$3,b2$3,b3$1)); - case 1: - case 2:switch$0 = 1;break; - default: - var i$7=i + 1 | 0; - if(max < i$7)return dec_invalid(1); - var b1$2=caml_bytes_unsafe_get(b,i$7); - if(not_in_x80_to_xBF(b1$2))return dec_invalid(1); - var i$8=i$7 + 1 | 0; - if(max < i$8)return dec_invalid(2); - var b2$2=caml_bytes_unsafe_get(b,i$8); - if(not_in_x80_to_xBF(b2$2))return dec_invalid(2); - var i$9=i$8 + 1 | 0; - if(max < i$9)return dec_invalid(3); - var b3$0=caml_bytes_unsafe_get(b,i$9); - return not_in_x80_to_xBF(b3$0) - ?dec_invalid(3) - :dec_ret(4,utf_8_uchar_4(b0,b1$2,b2$2,b3$0))}} - else - {if(! (225 <= b0)) - {var i$13=i + 1 | 0; - if(max < i$13)return dec_invalid(1); - var b1$4=caml_bytes_unsafe_get(b,i$13); - if(not_in_xA0_to_xBF(b1$4))return dec_invalid(1); - var i$14=i$13 + 1 | 0; - if(max < i$14)return dec_invalid(2); - var b2$4=caml_bytes_unsafe_get(b,i$14); - return not_in_x80_to_xBF(b2$4) - ?dec_invalid(2) - :dec_ret(3,utf_8_uchar_3(b0,b1$4,b2$4))} - switch$0 = 1} - if(switch$0) - {var i$2=i + 1 | 0; - if(max < i$2)return dec_invalid(1); - var b1$0=caml_bytes_unsafe_get(b,i$2); - if(not_in_x80_to_xBF(b1$0))return dec_invalid(1); - var i$3=i$2 + 1 | 0; - if(max < i$3)return dec_invalid(2); - var b2$0=caml_bytes_unsafe_get(b,i$3); - return not_in_x80_to_xBF(b2$0) - ?dec_invalid(2) - :dec_ret(3,utf_8_uchar_3(b0,b1$0,b2$0))}} - else - {if(! (128 <= b0))return dec_ret(1,b0); - if(194 <= b0) - {var i$15=i + 1 | 0; - if(max < i$15)return dec_invalid(1); - var b1$5=caml_bytes_unsafe_get(b,i$15); - return not_in_x80_to_xBF(b1$5) - ?dec_invalid(1) - :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} - 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_]; - var last=i + 3 | 0; - return max < last - ?0 - :(caml_bytes_set(b,i,240 | u >>> 18 | 0), - set(b,i + 1 | 0,128 | (u >>> 12 | 0) & 63), - set(b,i + 2 | 0,128 | (u >>> 6 | 0) & 63), - set(b,last,128 | u & 63), - 4)} - var last$0=i + 2 | 0; - return max < last$0 - ?0 - :(caml_bytes_set(b,i,224 | u >>> 12 | 0), - set(b,i + 1 | 0,128 | (u >>> 6 | 0) & 63), - set(b,last$0,128 | u & 63), - 3)} - var last$1=i + 1 | 0; - return max < last$1 - ?0 - :(caml_bytes_set(b,i,192 | u >>> 6 | 0), - set(b,last$1,128 | u & 63), - 2)} - caml_bytes_set(b,i,u); - return 1} - throw [0,Assert_failure,_C_]} - function is_valid_utf_8(b) - {var max=caml_ml_bytes_length(b) - 1 | 0,i=0; - for(;;) - {if(max < i)return 1; - var match=caml_bytes_unsafe_get(b,i); - if(224 <= match) - {var switch$0=0; - if(237 <= match) - {if(! (245 <= match)) - switch(match - 237 | 0) - {case 0: - var last=i + 2 | 0; - if - (! - (max < last) - && - ! - not_in_x80_to_x9F(caml_bytes_unsafe_get(b,i + 1 | 0)) - && - ! - not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last))) - {var i$0=last + 1 | 0,i=i$0;continue} - return 0; - case 3: - var last$1=i + 3 | 0; - if - (! - (max < last$1) - && - ! - not_in_x90_to_xBF(caml_bytes_unsafe_get(b,i + 1 | 0)) - && - ! - not_in_x80_to_xBF(caml_bytes_unsafe_get(b,i + 2 | 0)) - && - ! - not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$1))) - {var i$2=last$1 + 1 | 0,i=i$2;continue} - return 0; - case 7: - var last$3=i + 3 | 0; - if - (! - (max < last$3) - && - ! - not_in_x80_to_x8F(caml_bytes_unsafe_get(b,i + 1 | 0)) - && - ! - not_in_x80_to_xBF(caml_bytes_unsafe_get(b,i + 2 | 0)) - && - ! - not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$3))) - {var i$4=last$3 + 1 | 0,i=i$4;continue} - return 0; - case 1: - case 2:switch$0 = 1;break; - default: - var last$2=i + 3 | 0; - if - (! - (max < last$2) - && - ! - not_in_x80_to_xBF(caml_bytes_unsafe_get(b,i + 1 | 0)) - && - ! - not_in_x80_to_xBF(caml_bytes_unsafe_get(b,i + 2 | 0)) - && - ! - not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$2))) - {var i$3=last$2 + 1 | 0,i=i$3;continue} - return 0}} - else - {if(! (225 <= match)) - {var last$4=i + 2 | 0; - if - (! - (max < last$4) - && - ! - not_in_xA0_to_xBF(caml_bytes_unsafe_get(b,i + 1 | 0)) - && - ! - not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$4))) - {var i$5=last$4 + 1 | 0,i=i$5;continue} - return 0} - switch$0 = 1} - if(switch$0) - {var last$0=i + 2 | 0; - if - (! - (max < last$0) - && - ! - not_in_x80_to_xBF(caml_bytes_unsafe_get(b,i + 1 | 0)) - && - ! - not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$0))) - {var i$1=last$0 + 1 | 0,i=i$1;continue} - return 0}} - else - {if(! (128 <= match)){var i$7=i + 1 | 0,i=i$7;continue} - if(194 <= match) - {var last$5=i + 1 | 0; - if - (! - (max < last$5) - && - ! - not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$5))) - {var i$6=last$5 + 1 | 0,i=i$6;continue} - return 0}} - return 0}} - function get_utf_16be_uchar(b,i) - {var max=caml_ml_bytes_length(b) - 1 | 0; - if(0 <= i && ! (max < i)) - {if(i === max)return dec_invalid(1); - var hi=get$1(b,i); - if(55296 <= hi && ! (57343 < hi)) - {if(56319 < hi)return dec_invalid(2); - var last=i + 3 | 0; - if(max < last)return dec_invalid((max - i | 0) + 1 | 0); - var u=get$1(b,i + 2 | 0); - if(56320 <= u && ! (57343 < u)) - {var u$0=((hi & 1023) << 10 | u & 1023) + 65536 | 0; - return dec_ret(4,u$0)} - return dec_invalid(2)} - return dec_ret(2,hi)} - return invalid_arg(cst_index_out_of_bounds)} - function set_utf_16be_uchar(b,i,u) - {var max=caml_ml_bytes_length(b) - 1 | 0; - if(0 <= i && ! (max < i)) - {if(0 <= u) - {if(65535 < u) - {if(1114111 < u)throw [0,Assert_failure,_D_]; - var last=i + 3 | 0; - if(max < last)return 0; - var - u$0=u - 65536 | 0, - hi=55296 | u$0 >>> 10 | 0, - lo=56320 | u$0 & 1023; - set$0(b,i,hi); - set$0(b,i + 2 | 0,lo); - return 4} - var last$0=i + 1 | 0; - return max < last$0?0:(set$0(b,i,u),2)} - throw [0,Assert_failure,_E_]} - 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; - for(;;) - {if(max < i)return 1; - if(i === max)return 0; - var u=get$1(b,i); - if(55296 <= u && ! (57343 < u)) - {if(56319 < u)return 0; - var last=i + 3 | 0; - if(max < last)return 0; - var u$0=get$1(b,i + 2 | 0); - if(56320 <= u$0 && ! (57343 < u$0)) - {var i$1=i + 4 | 0,i=i$1;continue} - return 0} - var i$0=i + 2 | 0,i=i$0; - continue}} - function get_utf_16le_uchar(b,i) - {var max=caml_ml_bytes_length(b) - 1 | 0; - if(0 <= i && ! (max < i)) - {if(i === max)return dec_invalid(1); - var hi=caml_bytes_get16(b,i); - if(55296 <= hi && ! (57343 < hi)) - {if(56319 < hi)return dec_invalid(2); - var last=i + 3 | 0; - if(max < last)return dec_invalid((max - i | 0) + 1 | 0); - var u=caml_bytes_get16(b,i + 2 | 0); - if(56320 <= u && ! (57343 < u)) - {var u$0=((hi & 1023) << 10 | u & 1023) + 65536 | 0; - return dec_ret(4,u$0)} - return dec_invalid(2)} - return dec_ret(2,hi)} - return invalid_arg(cst_index_out_of_bounds$1)} - function set_utf_16le_uchar(b,i,u) - {var max=caml_ml_bytes_length(b) - 1 | 0; - if(0 <= i && ! (max < i)) - {if(0 <= u) - {if(65535 < u) - {if(1114111 < u)throw [0,Assert_failure,_F_]; - var last=i + 3 | 0; - if(max < last)return 0; - var - u$0=u - 65536 | 0, - hi=55296 | u$0 >>> 10 | 0, - lo=56320 | u$0 & 1023; - caml_bytes_set16(b,i,hi); - caml_bytes_set16(b,i + 2 | 0,lo); - 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_]} - 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; - for(;;) - {if(max < i)return 1; - if(i === max)return 0; - var u=caml_bytes_get16(b,i); - if(55296 <= u && ! (57343 < u)) - {if(56319 < u)return 0; - var last=i + 3 | 0; - if(max < last)return 0; - var u$0=caml_bytes_get16(b,i + 2 | 0); - if(56320 <= u$0 && ! (57343 < u$0)) - {var i$1=i + 4 | 0,i=i$1;continue} - return 0} - var i$0=i + 2 | 0,i=i$0; - continue}} - var - set_int64_ne=caml_bytes_set64, - set_int32_ne=caml_bytes_set32, - set_int16_ne=caml_bytes_set16, - set_int8=caml_bytes_set, - get_int64_ne=caml_bytes_get64, - get_int32_ne=caml_bytes_get32, - get_uint16_ne=caml_bytes_get16, - get_uint8=caml_bytes_get, - unsafe_of_string=caml_bytes_of_string, - unsafe_to_string=caml_string_of_bytes, - equal$8=runtime.caml_bytes_equal, - include$1= - [0, - make$0, - init$1, - empty$0, - copy, - to_bytes, - of_bytes, - sub, - sub_string, - extend, - fill, - blit, - blit$0, - concat$0, - cat$0, - iter$3, - iteri$1, - map$5, - mapi$1, - fold_left$1, - fold_right$0, - for_all$1, - exists$1, - trim, - escaped$0, - index, - index_opt, - rindex, - rindex_opt, - index_from, - index_from_opt, - rindex_from, - rindex_from_opt, - contains, - contains_from, - rcontains_from, - uppercase$0, - lowercase$0, - capitalize, - uncapitalize, - uppercase_ascii$0, - lowercase_ascii$0, - capitalize_ascii, - uncapitalize_ascii, - compare$8, - equal$8, - starts_with, - ends_with, - unsafe_to_string, - unsafe_of_string, - split_on_char, - to_seq$2, - to_seqi, - of_seq$0, - get_utf_8_uchar, - set_utf_8_uchar, - is_valid_utf_8, - get_utf_16be_uchar, - set_utf_16be_uchar, - is_valid_utf_16be, - get_utf_16le_uchar, - set_utf_16le_uchar, - is_valid_utf_16le, - get_uint8, - get_int8, - get_uint16_ne, - get_uint16_be, - get_uint16_le, - get_int16_ne, - get_int16_be, - get_int16_le, - get_int32_ne, - get_int32_be, - get_int32_le, - get_int64_ne, - get_int64_be, - get_int64_le, - set_uint8, - set_int8, - set_uint16_ne, - set_int16_be, - set_int16_le, - set_int16_ne, - set_int16_be, - set_int16_le, - set_int32_ne, - set_int32_be, - set_int32_le, - set_int64_ne, - set_int64_be, - set_int64_le]; - caml_register_global(790,include$1,"Stdlib__Bytes"); - function make$1(n,c){return caml_string_of_bytes(make$0(n,c))} - function init$2(n,f){return caml_string_of_bytes(init$1(n,f))} - function copy$0(s) - {return caml_string_of_bytes(copy(caml_bytes_of_string(s)))} - function sub$0(s,ofs,len) - {return caml_string_of_bytes(sub(caml_bytes_of_string(s),ofs,len))} - function concat$1(sep,l) - {if(l) - {var seplen=caml_ml_string_length(sep),acc=0,param=l,pos$1=0; - for(;;) - {if(param) - {var _AE_=param[1]; - if(param[2]) - {var - tl=param[2], - x=(caml_ml_string_length(_AE_) + 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} - else - var _AG_=acc; - var dst=caml_create_bytes(_AG_),pos=pos$1,param$0=l; - for(;;) - {if(param$0) - {var _AF_=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 - (sep,0,dst,pos + caml_ml_string_length(_AF_) | 0,seplen); - var - pos$0=(pos + caml_ml_string_length(_AF_) | 0) + seplen | 0, - pos=pos$0, - param$0=tl$0; - continue} - caml_blit_string(_AF_,0,dst,pos,caml_ml_string_length(_AF_))} - 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_; - for(;;) - {caml_call1(f,caml_string_unsafe_get(s,i)); - var _AD_=i + 1 | 0; - if(_AC_ !== i){var i=_AD_;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_; - for(;;) - {caml_call2(f,i,caml_string_unsafe_get(s,i)); - var _AA_=i + 1 | 0; - if(_Az_ !== i){var i=_AA_;continue} - break}} - return 0} - function map$6(f,s) - {return caml_string_of_bytes(map$5(f,caml_bytes_of_string(s)))} - function mapi$2(f,s) - {return caml_string_of_bytes(mapi$1(f,caml_bytes_of_string(s)))} - function fold_right$1(f,x,a) - {return fold_right$0(f,caml_bytes_of_string(x),a)} - function fold_left$2(f,a,x) - {return fold_left$1(f,a,caml_bytes_of_string(x))} - 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} - else - if(2 !== _Ax_)switch$0 = 1; - return switch$0?1:0} - function trim$0(s) - {if(caml_string_equal(s,cst$4))return s; - if - (! - is_space$0(caml_string_unsafe_get(s,0)) - && - ! - is_space$0(caml_string_unsafe_get(s,caml_ml_string_length(s) - 1 | 0))) - return s; - return caml_string_of_bytes(trim(caml_bytes_of_string(s)))} - function escaped$1(s) - {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} - else - if(2 === _Aw_)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; - continue}} - function index_rec$0(s,lim,i,c) - {var i$0=i; - for(;;) - {if(lim <= i$0)throw Not_found; - if(caml_string_unsafe_get(s,i$0) === c)return i$0; - var i$1=i$0 + 1 | 0,i$0=i$1; - continue}} - function index$0(s,c){return index_rec$0(s,caml_ml_string_length(s),0,c)} - function index_rec_opt$0(s,lim,i,c) - {var i$0=i; - for(;;) - {if(lim <= i$0)return 0; - if(caml_string_unsafe_get(s,i$0) === c)return [0,i$0]; - var i$1=i$0 + 1 | 0,i$0=i$1; - continue}} - function index_opt$0(s,c) - {return index_rec_opt$0(s,caml_ml_string_length(s),0,c)} - function index_from$0(s,i,c) - {var l=caml_ml_string_length(s); - if(0 <= i && ! (l < i))return index_rec$0(s,l,i,c); - return invalid_arg(cst_String_index_from_Bytes_in$0)} - function index_from_opt$0(s,i,c) - {var l=caml_ml_string_length(s); - if(0 <= i && ! (l < i))return index_rec_opt$0(s,l,i,c); - return invalid_arg(cst_String_index_from_opt_Byte$0)} - function rindex_rec$0(s,i,c) - {var i$0=i; - for(;;) - {if(0 <= i$0) - {if(caml_string_unsafe_get(s,i$0) === c)return i$0; - var i$1=i$0 - 1 | 0,i$0=i$1; - continue} - throw Not_found}} - function rindex$0(s,c) - {return rindex_rec$0(s,caml_ml_string_length(s) - 1 | 0,c)} - function rindex_from$0(s,i,c) - {if(-1 <= i && ! (caml_ml_string_length(s) <= i)) - return rindex_rec$0(s,i,c); - return invalid_arg(cst_String_rindex_from_Bytes_r$0)} - function rindex_rec_opt$0(s,i,c) - {var i$0=i; - for(;;) - {if(0 <= i$0) - {if(caml_string_unsafe_get(s,i$0) === c)return [0,i$0]; - var i$1=i$0 - 1 | 0,i$0=i$1; - continue} - return 0}} - function rindex_opt$0(s,c) - {return rindex_rec_opt$0(s,caml_ml_string_length(s) - 1 | 0,c)} - function rindex_from_opt$0(s,i,c) - {if(-1 <= i && ! (caml_ml_string_length(s) <= i)) - return rindex_rec_opt$0(s,i,c); - return invalid_arg(cst_String_rindex_from_opt_Byt$0)} - function contains_from$0(s,i,c) - {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_} - 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_} - 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)))} - function lowercase_ascii$1(s) - {return caml_string_of_bytes(lowercase_ascii$0(caml_bytes_of_string(s)))} - function capitalize_ascii$0(s) - {return caml_string_of_bytes(capitalize_ascii(caml_bytes_of_string(s)))} - function uncapitalize_ascii$0(s) - {return caml_string_of_bytes(uncapitalize_ascii(caml_bytes_of_string(s)))} - function starts_with$0(prefix,s) - {var - len_s=caml_ml_string_length(s), - len_pre=caml_ml_string_length(prefix), - _Ar_=len_pre <= len_s?1:0; - if(_Ar_) - {var i=0; - for(;;) - {if(i === len_pre)return 1; - if(caml_string_unsafe_get(s,i) !== caml_string_unsafe_get(prefix,i)) - return 0; - var i$0=i + 1 | 0,i=i$0; - continue}} - return _Ar_} - 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_) - {var i=0; - for(;;) - {if(i === len_suf)return 1; - if - (caml_string_unsafe_get(s,diff + i | 0) - !== - caml_string_unsafe_get(suffix,i)) - return 0; - var i$0=i + 1 | 0,i=i$0; - continue}} - return _Aq_} - 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_; - 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_]; - j[1] = i} - var _Ap_=i - 1 | 0; - if(0 !== i){var i=_Ap_;continue} - break}} - var _An_=r[1]; - return [0,sub$0(s,0,j[1]),_An_]} - function uppercase$1(s) - {return caml_string_of_bytes(uppercase$0(caml_bytes_of_string(s)))} - function lowercase$1(s) - {return caml_string_of_bytes(lowercase$0(caml_bytes_of_string(s)))} - function capitalize$0(s) - {return caml_string_of_bytes(capitalize(caml_bytes_of_string(s)))} - function uncapitalize$0(s) - {return caml_string_of_bytes(uncapitalize(caml_bytes_of_string(s)))} - function compare$9(x,y){return caml_string_compare(x,y)} - function to_seq$3(s){return to_seq$2(caml_bytes_of_string(s))} - function to_seqi$0(s){return to_seqi(caml_bytes_of_string(s))} - function of_seq$1(g){return caml_string_of_bytes(of_seq$0(g))} - function get_utf_8_uchar$0(s,i) - {return get_utf_8_uchar(caml_bytes_of_string(s),i)} - function is_valid_utf_8$0(s) - {return is_valid_utf_8(caml_bytes_of_string(s))} - function get_utf_16be_uchar$0(s,i) - {return get_utf_16be_uchar(caml_bytes_of_string(s),i)} - function is_valid_utf_16be$0(s) - {return is_valid_utf_16be(caml_bytes_of_string(s))} - function get_utf_16le_uchar$0(s,i) - {return get_utf_16le_uchar(caml_bytes_of_string(s),i)} - function is_valid_utf_16le$0(s) - {return is_valid_utf_16le(caml_bytes_of_string(s))} - function get_int8$0(s,i){return get_int8(caml_bytes_of_string(s),i)} - function get_uint16_le$0(s,i) - {return caml_bytes_get16(caml_bytes_of_string(s),i)} - function get_uint16_be$0(s,i) - {return get_uint16_be(caml_bytes_of_string(s),i)} - function get_int16_ne$0(s,i) - {return get_int16_ne(caml_bytes_of_string(s),i)} - function get_int16_le$0(s,i) - {return get_int16_le(caml_bytes_of_string(s),i)} - function get_int16_be$0(s,i) - {return get_int16_be(caml_bytes_of_string(s),i)} - function get_int32_le$0(s,i) - {return caml_bytes_get32(caml_bytes_of_string(s),i)} - function get_int32_be$0(s,i) - {return get_int32_be(caml_bytes_of_string(s),i)} - function get_int64_le$0(s,i) - {return caml_bytes_get64(caml_bytes_of_string(s),i)} - function get_int64_be$0(s,i) - {return get_int64_be(caml_bytes_of_string(s),i)} - var - get_int64_ne$0=runtime.caml_string_get64, - get_int32_ne$0=runtime.caml_string_get32, - get_uint16_ne$0=runtime.caml_string_get16, - get_uint8$0=caml_string_get, - equal$9=caml_string_equal, - include$2= - [0, - make$1, - init$2, - empty$1, - of_bytes, - to_bytes, - concat$1, - cat, - equal$9, - compare$9, - starts_with$0, - ends_with$0, - contains_from$0, - rcontains_from$0, - contains$0, - sub$0, - split_on_char$0, - map$6, - mapi$2, - fold_left$2, - fold_right$1, - for_all$2, - exists$2, - trim$0, - escaped$1, - uppercase_ascii$1, - lowercase_ascii$1, - capitalize_ascii$0, - uncapitalize_ascii$0, - iter$4, - iteri$2, - index_from$0, - index_from_opt$0, - rindex_from$0, - rindex_from_opt$0, - index$0, - index_opt$0, - rindex$0, - rindex_opt$0, - to_seq$3, - to_seqi$0, - of_seq$1, - get_utf_8_uchar$0, - is_valid_utf_8$0, - get_utf_16be_uchar$0, - is_valid_utf_16be$0, - get_utf_16le_uchar$0, - is_valid_utf_16le$0, - blit$0, - copy$0, - fill, - uppercase$1, - lowercase$1, - capitalize$0, - uncapitalize$0, - get_uint8$0, - get_int8$0, - get_uint16_ne$0, - get_uint16_be$0, - get_uint16_le$0, - get_int16_ne$0, - get_int16_be$0, - get_int16_le$0, - get_int32_ne$0, - get_int32_be$0, - get_int32_le$0, - get_int64_ne$0, - 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 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"); - function to_buffer(buff,ofs,len,v,flags) - {if - (0 - <= - ofs - && - 0 - <= - len - && - ! - ((caml_ml_bytes_length(buff) - len | 0) < ofs)) - return runtime.caml_output_value_to_buffer(buff,ofs,len,v,flags); - return invalid_arg(cst_Marshal_to_buffer_substrin)} - var header_size=20; - function data_size(buff,ofs) - {if(0 <= ofs && ! ((caml_ml_bytes_length(buff) - 20 | 0) < ofs)) - return caml_marshal_data_size(buff,ofs); - return invalid_arg(cst_Marshal_data_size)} - function total_size(buff,ofs){return 20 + data_size(buff,ofs) | 0} - function from_bytes(buff,ofs) - {if(0 <= ofs && ! ((caml_ml_bytes_length(buff) - 20 | 0) < ofs)) - {var len=caml_marshal_data_size(buff,ofs); - return (caml_ml_bytes_length(buff) - (20 + len | 0) | 0) < ofs - ?invalid_arg(cst_Marshal_from_bytes$0) - :runtime.caml_input_value_from_bytes(buff,ofs)} - return invalid_arg(cst_Marshal_from_bytes)} - function from_string(buff,ofs) - {return from_bytes(caml_bytes_of_string(buff),ofs)} - var - Stdlib_Marshal= - [0, - caml_output_value, - to_buffer, - caml_input_value, - from_bytes, - from_string, - header_size, - data_size, - total_size]; - caml_register_global(793,Stdlib_Marshal,"Stdlib__Marshal"); - var make_float=runtime.caml_make_float_vect,Floatarray=[0]; - 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_; - for(;;) - {res[1 + i] = caml_call1(f,i); - var _Aj_=i + 1 | 0; - if(_Ai_ !== i){var i=_Aj_;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_; - for(;;) - {res[1 + x] = caml_make_vect(sy,init); - var _Ag_=x + 1 | 0; - if(_Af_ !== x){var x=_Ag_;continue} - break}} - return res} - function copy$1(a) - {var l=a.length - 1;return 0 === l?[0]:caml_array_sub(a,0,l)} - function append$1(a1,a2) - {var l1=a1.length - 1; - return 0 === l1 - ?copy$1(a2) - :0 === a2.length - 1 - ?caml_array_sub(a1,0,l1) - :runtime.caml_array_append(a1,a2)} - function sub$1(a,ofs,len) - {if(0 <= ofs && 0 <= len && ! ((a.length - 1 - len | 0) < ofs)) - return caml_array_sub(a,ofs,len); - return invalid_arg(cst_Array_sub)} - function fill$0(a,ofs,len,v) - {if(0 <= ofs && 0 <= len && ! ((a.length - 1 - len | 0) < ofs)) - return runtime.caml_array_fill(a,ofs,len,v); - return invalid_arg(cst_Array_fill)} - function blit$1(a1,ofs1,a2,ofs2,len) - {if - (0 - <= - len - && - 0 - <= - ofs1 - && - ! - ((a1.length - 1 - len | 0) < ofs1) - && - 0 - <= - ofs2 - && - ! - ((a2.length - 1 - len | 0) < ofs2)) - 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_; - for(;;) - {caml_call1(f,a[1 + i]); - var _Ad_=i + 1 | 0; - if(_Ac_ !== i){var i=_Ad_;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__; - for(;;) - {caml_call2(f,a[1 + i],b[1 + i]); - var _Aa_=i + 1 | 0; - if(_z$_ !== i){var i=_Aa_;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_; - for(;;) - {r[1 + i] = caml_call1(f,a[1 + i]); - var _z9_=i + 1 | 0; - if(_z8_ !== i){var i=_z9_;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_; - 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} - break}} - return r} - function iteri$3(f,a) - {var _z2_=a.length - 1 - 1 | 0,_z1_=0; - if(! (_z2_ < 0)) - {var i=_z1_; - for(;;) - {caml_call2(f,i,a[1 + i]); - var _z3_=i + 1 | 0; - if(_z2_ !== i){var i=_z3_;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_; - for(;;) - {r[1 + i] = caml_call2(f,i,a[1 + i]); - var _z0_=i + 1 | 0; - if(_zZ_ !== i){var i=_z0_;continue} - break}} - return r} - function to_list$1(a) - {var i$1=a.length - 1 - 1 | 0,i=i$1,res=0; - for(;;) - {if(0 <= i) - {var res$0=[0,a[1 + i],res],i$0=i - 1 | 0,i=i$0,res=res$0;continue} - return res}} - function list_length(accu,param) - {var accu$0=accu,param$0=param; - for(;;) - {if(param$0) - {var - param$1=param$0[2], - accu$1=accu$0 + 1 | 0, - accu$0=accu$1, - param$0=param$1; - continue} - return accu$0}} - function of_list(l) - {if(l) - {var - tl=l[2], - hd=l[1], - a=caml_make_vect(list_length(0,l),hd), - i=1, - param=tl; - for(;;) - {if(param) - {var tl$0=param[2],hd$0=param[1]; - a[1 + i] = hd$0; - var i$0=i + 1 | 0,i=i$0,param=tl$0; - continue} - 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_; - for(;;) - {r[1] = caml_call2(f,r[1],a[1 + i]); - var _zX_=i + 1 | 0; - if(_zW_ !== i){var i=_zX_;continue} - break}} - return r[1]} - function fold_left_map$0(f,acc,input_array) - {var len=input_array.length - 1; - if(0 === len)return [0,acc,[0]]; - var - match=caml_call2(f,acc,input_array[1]), - elt=match[2], - 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_; - for(;;) - {var - match$0=caml_call2(f,acc$1[1],input_array[1 + i]), - elt$0=match$0[2], - 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} - 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_; - for(;;) - {r[1] = caml_call2(f,a[1 + i],r[1]); - var _zR_=i - 1 | 0; - if(0 !== i){var i=_zR_;continue} - break}} - return r[1]} - function exists$3(p,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 0; - if(caml_call1(p,a[1 + i]))return 1; - var i$0=i + 1 | 0,i=i$0; - continue}} - function for_all$3(p,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 1; - if(caml_call1(p,a[1 + i])){var i$0=i + 1 | 0,i=i$0;continue} - return 0}} - function for_all2$1(p,l1,l2) - {var n1=l1.length - 1,n2=l2.length - 1; - if(n1 !== n2)return invalid_arg(cst_Array_for_all2); - var i=0; - for(;;) - {if(i === n1)return 1; - if(caml_call2(p,l1[1 + i],l2[1 + i])) - {var i$0=i + 1 | 0,i=i$0;continue} - return 0}} - function exists2$1(p,l1,l2) - {var n1=l1.length - 1,n2=l2.length - 1; - if(n1 !== n2)return invalid_arg(cst_Array_exists2); - var i=0; - for(;;) - {if(i === n1)return 0; - if(caml_call2(p,l1[1 + i],l2[1 + i]))return 1; - var i$0=i + 1 | 0,i=i$0; - continue}} - function mem$0(x,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 0; - if(0 === caml_compare(a[1 + i],x))return 1; - var i$0=i + 1 | 0,i=i$0; - continue}} - function memq$0(x,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 0; - if(x === a[1 + i])return 1; - var i$0=i + 1 | 0,i=i$0; - continue}} - function find_opt$0(p,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 0; - var x=a[1 + i]; - if(caml_call1(p,x))return [0,x]; - var i$0=i + 1 | 0,i=i$0; - continue}} - function find_map$1(f,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 0; - var r=caml_call1(f,a[1 + i]); - if(r)return r; - var i$0=i + 1 | 0,i=i$0; - continue}} - function split$0(x) - {if(caml_equal(x,[0]))return [0,[0],[0]]; - var - match=x[1], - b0=match[2], - a0=match[1], - 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_; - 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} - 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_; - for(;;) - {x[1 + i] = [0,a[1 + i],b[1 + i]]; - var _zM_=i + 1 | 0; - if(_zL_ !== i){var i=_zM_;continue} - break}} - return x} - var Bottom=[248,cst_Stdlib_Array_Bottom,caml_fresh_oo_id(0)]; - function sort(cmp,a) - {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) - 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) - 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_))) - return i31 + 1 | 0} - if(i31 < l)return i31; - throw [0,Bottom,i]} - function trickledown(l,i,e) - {var i$0=i; - 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 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_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] === Bottom) - {var i$0=exn[2];caml_check_bound(a,i$0)[1 + i$0] = e;return 0} - throw exn}} - 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$0=i$1; - continue}} - function bubble(l,i) - {try - {var _zz_=bubbledown(l,i);return _zz_} - 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_; - 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} - break}} - var _zs_=l - 1 | 0; - if(! (_zs_ < 2)) - {var i$0=_zs_; - 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_; - 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 - (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_; - 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} - 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_; - caml_check_bound(a,0)[1] = e; - var _zv_=0} - else - var _zv_=_zt_; - return _zv_} - function fast_sort$0(cmp,a) - {function merge(src1ofs,src1len,src2,src2ofs,src2len,dst,dstofs) - {var - src1r=src1ofs + src1len | 0, - src2r=src2ofs + src2len | 0, - s2$1=caml_check_bound(src2,src2ofs)[1 + src2ofs], - s1$1=caml_check_bound(a,src1ofs)[1 + src1ofs], - i1=src1ofs, - s1=s1$1, - i2=src2ofs, - s2=s2$1, - d=dstofs; - for(;;) - {if(0 < caml_call2(cmp,s1,s2)) - {caml_check_bound(dst,d)[1 + d] = s2; - var i2$0=i2 + 1 | 0; - if(i2$0 < src2r) - {var - d$0=d + 1 | 0, - s2$0=caml_check_bound(src2,i2$0)[1 + i2$0], - i2=i2$0, - s2=s2$0, - d=d$0; - continue} - return blit$1(a,i1,dst,d + 1 | 0,src1r - i1 | 0)} - caml_check_bound(dst,d)[1 + d] = s1; - var i1$0=i1 + 1 | 0; - if(i1$0 < src1r) - {var - d$1=d + 1 | 0, - s1$0=caml_check_bound(a,i1$0)[1 + i1$0], - i1=i1$0, - s1=s1$0, - d=d$1; - 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_; - a: - for(;;) - {var - _zj_=srcofs + i | 0, - e=caml_check_bound(a,_zj_)[1 + _zj_], - 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 - _zl_=j[1], - _zm_=caml_check_bound(dst,_zl_)[1 + _zl_], - _zn_=j[1] + 1 | 0; - caml_check_bound(dst,_zn_)[1 + _zn_] = _zm_; - 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} - break} - break}} - return 0} - function sortto(srcofs,dst,dstofs,len) - {if(len <= 5)return isortto(srcofs,dst,dstofs,len); - var l1=len / 2 | 0,l2=len - l1 | 0; - sortto(srcofs + l1 | 0,dst,dstofs + l1 | 0,l2); - sortto(srcofs,a,srcofs + l2 | 0,l1); - return merge(srcofs + l2 | 0,l1,dst,dstofs + l1 | 0,l2,dst,dstofs)} - var l=a.length - 1; - if(l <= 5)return isortto(0,a,0,l); - var - l1=l / 2 | 0, - l2=l - l1 | 0, - t=caml_make_vect(l2,caml_check_bound(a,0)[1]); - sortto(l1,t,0,l2); - sortto(0,a,l2,l1); - return merge(l2,l1,t,0,l2,a,0)} - 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_)}]} - return 0} - var _zd_=0; - return function(_ze_){return aux(_zd_,_ze_)}} - 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_)}]} - return 0} - var _y$_=0; - return function(_za_){return aux(_y$_,_za_)}} - function of_seq$2(i$2) - {var _y__=0,l=fold_left(function(acc,x){return [0,x,acc]},_y__,i$2); - if(l) - {var - tl=l[2], - hd=l[1], - len=list_length(0,l), - a=caml_make_vect(len,hd), - i$1=len - 2 | 0, - i=i$1, - param=tl; - for(;;) - {if(param) - {var tl$0=param[2],hd$0=param[1]; - a[1 + i] = hd$0; - var i$0=i - 1 | 0,i=i$0,param=tl$0; - continue} - return a}} - return [0]} - var - concat$2=caml_array_concat, - include$3= - [0, - make_float, - init$3, - create_matrix, - create_matrix, - append$1, - concat$2, - sub$1, - copy$1, - fill$0, - blit$1, - to_list$1, - of_list, - iter$5, - iteri$3, - map$7, - mapi$3, - fold_left$3, - fold_left_map$0, - fold_right$2, - iter2$1, - map2$1, - for_all$3, - exists$3, - for_all2$1, - exists2$1, - mem$0, - memq$0, - find_opt$0, - find_map$1, - split$0, - combine$0, - sort, - fast_sort$0, - fast_sort$0, - to_seq$4, - to_seqi$1, - of_seq$2, - Floatarray]; - caml_register_global(794,include$3,"Stdlib__Array"); - var zero$0=0.,one$0=1.,minus_one$0=-1.; - function is_finite(x){return x - x == 0.?1:0} - function is_infinite(x){return 1. / x == 0.?1:0} - 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_} - 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} - function min$2(x,y) - {if(! (x < y)) - {var switch$0=0; - if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; - if(switch$0)return x != x?x:y} - return y != y?y:x} - function max$2(x,y) - {if(! (x < y)) - {var switch$0=0; - if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; - if(switch$0)return y != y?y:x} - return x != x?x:y} - function min_max(x,y) - {if(x == x && y == y) - {if(! (x < y)) - {var switch$0=0; - if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; - if(switch$0)return [0,y,x]} - return [0,x,y]} - return [0,nan,nan]} - function min_num(x,y) - {if(! (x < y)) - {var switch$0=0; - if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; - if(switch$0)return y != y?x:y} - return x != x?y:x} - function max_num(x,y) - {if(! (x < y)) - {var switch$0=0; - if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; - if(switch$0)return x != x?y:x} - return y != y?x:y} - function min_max_num(x,y) - {if(x != x)return [0,y,y]; - if(y != y)return [0,x,x]; - if(! (x < y)) - {var switch$0=0; - if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; - if(switch$0)return [0,y,x]} - 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 i=ofs; - for(;;) - {a[1 + i] = v; - var _y8_=i + 1 | 0; - if(_y7_ !== i){var i=_y8_;continue} - break}} - return 0} - function check(a,ofs,len,msg) - {var _y3_=ofs < 0?1:0; - if(_y3_) - var _y4_=_y3_; - else - {var _y5_=len < 0?1:0; - if(_y5_) - var _y4_=_y5_; - 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_} - 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_; - for(;;) - {res[1 + i] = caml_call1(f,i); - var _y2_=i + 1 | 0; - if(_y1_ !== i){var i=_y2_;continue} - break}} - return res} - return invalid_arg(cst_Float_Array_init)} - function append$2(a1,a2) - {var - l1=a1.length - 1, - l2=a2.length - 1, - result=caml_floatarray_create(l1 + l2 | 0); - caml_floatarray_blit(a1,0,result,0,l1); - caml_floatarray_blit(a2,0,result,l1,l2); - return result} - function concat$3(l) - {var acc=0,param=l; - for(;;) - {if(param) - {var - tl=param[2], - hd=param[1], - x=hd.length - 1 + acc | 0, - acc$0=acc <= x?x:invalid_arg(cst_Float_Array_concat), - acc=acc$0, - param=tl; - continue} - var result=caml_floatarray_create(acc),l$0=l,i=0; - for(;;) - {if(l$0) - {var tl$0=l$0[2],hd$0=l$0[1],hlen=hd$0.length - 1; - caml_floatarray_blit(hd$0,0,result,i,hlen); - var i$0=i + hlen | 0,l$0=tl$0,i=i$0; - continue} - if(i === acc)return result; - throw [0,Assert_failure,_I_]}}} - function sub$2(a,ofs,len) - {check(a,ofs,len,cst_Float_Array_sub); - var result=caml_floatarray_create(len); - caml_floatarray_blit(a,ofs,result,0,len); - return result} - function copy$2(a) - {var l=a.length - 1,result=caml_floatarray_create(l); - caml_floatarray_blit(a,0,result,0,l); - return result} - function fill$1(a,ofs,len,v) - {check(a,ofs,len,cst_Float_Array_fill);return unsafe_fill(a,ofs,len,v)} - function blit$2(src,sofs,dst,dofs,len) - {check(src,sofs,len,cst_Float_array_blit); - 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_]})} - function of_list$0(l) - {var result=caml_floatarray_create(length$1(l)),i=0,l$0=l; - for(;;) - {if(l$0) - {var t=l$0[2],h=l$0[1]; - result[1 + i] = h; - var i$0=i + 1 | 0,i=i$0,l$0=t; - continue} - return result}} - function iter$6(f,a) - {var _yX_=a.length - 1 - 1 | 0,_yW_=0; - if(! (_yX_ < 0)) - {var i=_yW_; - for(;;) - {caml_call1(f,a[1 + i]); - var _yY_=i + 1 | 0; - if(_yX_ !== i){var i=_yY_;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_; - for(;;) - {caml_call2(f,a[1 + i],b[1 + i]); - var _yV_=i + 1 | 0; - if(_yU_ !== i){var i=_yV_;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_; - for(;;) - {r[1 + i] = caml_call1(f,a[1 + i]); - var _yS_=i + 1 | 0; - if(_yR_ !== i){var i=_yS_;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_; - 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} - break}} - return r} - function iteri$4(f,a) - {var _yL_=a.length - 1 - 1 | 0,_yK_=0; - if(! (_yL_ < 0)) - {var i=_yK_; - for(;;) - {caml_call2(f,i,a[1 + i]); - var _yM_=i + 1 | 0; - if(_yL_ !== i){var i=_yM_;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_; - for(;;) - {r[1 + i] = caml_call2(f,i,a[1 + i]); - var _yJ_=i + 1 | 0; - if(_yI_ !== i){var i=_yJ_;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_; - for(;;) - {r[1] = caml_call2(f,r[1],a[1 + i]); - var _yG_=i + 1 | 0; - if(_yF_ !== i){var i=_yG_;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_; - for(;;) - {r[1] = caml_call2(f,a[1 + i],r[1]); - var _yD_=i - 1 | 0; - if(0 !== i){var i=_yD_;continue} - break}} - return r[1]} - function exists$4(p,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 0; - if(caml_call1(p,a[1 + i]))return 1; - var i$0=i + 1 | 0,i=i$0; - continue}} - function for_all$4(p,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 1; - if(caml_call1(p,a[1 + i])){var i$0=i + 1 | 0,i=i$0;continue} - return 0}} - function mem$1(x,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 0; - if(0 === caml_float_compare(a[1 + i],x))return 1; - var i$0=i + 1 | 0,i=i$0; - continue}} - function mem_ieee(x,a) - {var n=a.length - 1,i=0; - for(;;) - {if(i === n)return 0; - if(x == a[1 + i])return 1; - var i$0=i + 1 | 0,i=i$0; - continue}} - var Bottom$0=[248,cst_Stdlib_Float_Array_Bottom,caml_fresh_oo_id(0)]; - function sort$0(cmp,a) - {function maxson(l,i) - {var i31=((i + i | 0) + i | 0) + 1 | 0,x=[0,i31]; - if((i31 + 2 | 0) < l) - {if - (caml_call2 - (cmp,caml_array_get(a,i31),caml_array_get(a,i31 + 1 | 0)) - < - 0) - x[1] = i31 + 1 | 0; - if - (caml_call2 - (cmp,caml_array_get(a,x[1]),caml_array_get(a,i31 + 2 | 0)) - < - 0) - x[1] = i31 + 2 | 0; - return x[1]} - if - ((i31 + 1 | 0) - < - l - && - ! - (0 - <= - caml_call2(cmp,caml_array_get(a,i31),caml_array_get(a,i31 + 1 | 0)))) - return i31 + 1 | 0; - if(i31 < l)return i31; - throw [0,Bottom$0,i]} - function trickledown(l,i,e) - {var i$0=i; - for(;;) - {var j=maxson(l,i$0); - if(0 < caml_call2(cmp,caml_array_get(a,j),e)) - {caml_array_set(a,i$0,caml_array_get(a,j));var i$0=j;continue} - return caml_array_set(a,i$0,e)}} - function trickle(l,i,e) - {try - {var _yB_=trickledown(l,i,e);return _yB_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] === Bottom$0) - {var i$0=exn[2];return caml_array_set(a,i$0,e)} - throw exn}} - function bubbledown(l,i) - {var i$0=i; - for(;;) - {var i$1=maxson(l,i$0); - caml_array_set(a,i$0,caml_array_get(a,i$1)); - var i$0=i$1; - continue}} - function bubble(l,i) - {try - {var _yA_=bubbledown(l,i);return _yA_} - 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_; - 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} - break}} - var _yv_=l - 1 | 0; - if(! (_yv_ < 2)) - {var i$0=_yv_; - a: - for(;;) - {var e$0=caml_array_get(a,i$0); - caml_array_set(a,i$0,caml_array_get(a,0)); - 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(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} - break} - break}} - var _yw_=1 < l?1:0; - if(_yw_) - {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)} - else - var _yx_=_yw_; - return _yx_} - function stable_sort(cmp,a) - {function merge(src1ofs,src1len,src2,src2ofs,src2len,dst,dstofs) - {var - src1r=src1ofs + src1len | 0, - src2r=src2ofs + src2len | 0, - s2$1=caml_array_get(src2,src2ofs), - s1$1=caml_array_get(a,src1ofs), - i1=src1ofs, - s1=s1$1, - i2=src2ofs, - s2=s2$1, - d=dstofs; - for(;;) - {if(0 < caml_call2(cmp,s1,s2)) - {caml_array_set(dst,d,s2); - var i2$0=i2 + 1 | 0; - if(i2$0 < src2r) - {var - d$0=d + 1 | 0, - s2$0=caml_array_get(src2,i2$0), - i2=i2$0, - s2=s2$0, - d=d$0; - continue} - return blit$2(a,i1,dst,d + 1 | 0,src1r - i1 | 0)} - caml_array_set(dst,d,s1); - var i1$0=i1 + 1 | 0; - if(i1$0 < src1r) - {var - d$1=d + 1 | 0, - s1$0=caml_array_get(a,i1$0), - i1=i1$0, - s1=s1$0, - d=d$1; - 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_; - a: - for(;;) - {var - e=caml_array_get(a,srcofs + i | 0), - j=[0,(dstofs + i | 0) - 1 | 0]; - for(;;) - {if - (dstofs - <= - j[1] - && - 0 - < - caml_call2(cmp,caml_array_get(dst,j[1]),e)) - {caml_array_set(dst,j[1] + 1 | 0,caml_array_get(dst,j[1])); - 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} - break} - break}} - return 0} - function sortto(srcofs,dst,dstofs,len) - {if(len <= 5)return isortto(srcofs,dst,dstofs,len); - var l1=len / 2 | 0,l2=len - l1 | 0; - sortto(srcofs + l1 | 0,dst,dstofs + l1 | 0,l2); - sortto(srcofs,a,srcofs + l2 | 0,l1); - return merge(srcofs + l2 | 0,l1,dst,dstofs + l1 | 0,l2,dst,dstofs)} - var l=a.length - 1; - if(l <= 5)return isortto(0,a,0,l); - var l1=l / 2 | 0,l2=l - l1 | 0,t=caml_floatarray_create(l2); - sortto(l1,t,0,l2); - sortto(0,a,l2,l1); - return merge(l2,l1,t,0,l2,a,0)} - 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_)}]} - return 0} - var _yn_=0; - return function(_yo_){return aux(_yn_,_yo_)}} - 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_)}]} - return 0} - var _yj_=0; - return function(_yk_){return aux(_yj_,_yk_)}} - function of_seq$3(i$2) - {var - _yi_=0, - param$0=fold_left(function(acc,x){return [0,x,acc]},_yi_,i$2), - len=length$1(param$0), - a=caml_floatarray_create(len), - i$1=len - 1 | 0, - i=i$1, - param=param$0; - for(;;) - {if(param) - {var tl=param[2],hd=param[1]; - a[1 + i] = hd; - var i$0=i - 1 | 0,i=i$0,param=tl; - continue} - return a}} - 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_; - for(;;) - {r[1 + i] = caml_call1(f,a[1 + i]); - var _yh_=i + 1 | 0; - if(_yg_ !== i){var i=_yh_;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_; - for(;;) - {r[1 + i] = caml_call1(f,a[1 + i]); - var _ye_=i + 1 | 0; - if(_yd_ !== i){var i=_ye_;continue} - break}} - return r} - var - _K_=caml_floatarray_create, - _L_=caml_array_set, - _M_=caml_array_get, - _N_= - [0, - function(_yb_){return _yb_.length - 1}, - _M_, - _L_, - make$2, - _K_, - init$4, - append$2, - concat$3, - sub$2, - copy$2, - fill$1, - blit$2, - to_list$2, - of_list$0, - iter$6, - iteri$4, - map$8, - mapi$4, - fold_left$4, - fold_right$3, - iter2$2, - map2$2, - for_all$4, - exists$4, - mem$1, - mem_ieee, - sort$0, - stable_sort, - stable_sort, - to_seq$5, - to_seqi$2, - of_seq$3, - map_to_array, - map_from_array], - _O_=caml_floatarray_create, - _P_=caml_array_set, - _Q_=caml_array_get, - Stdlib_Float= - [0, - zero$0, - one$0, - minus_one$0, - succ$0, - pred$0, - infinity, - neg_infinity, - nan, - pi, - max_float, - min_float, - epsilon, - is_finite, - is_infinite, - is_nan, - is_integer, - of_string_opt, - to_string, - caml_float_compare, - equal$11, - min$2, - max$2, - min_max, - min_num, - max_num, - min_max_num, - hash$0, - [0, - function(_ya_){return _ya_.length - 1}, - _Q_, - _P_, - make$2, - _O_, - init$4, - append$2, - concat$3, - sub$2, - copy$2, - fill$1, - blit$2, - to_list$2, - of_list$0, - iter$6, - iteri$4, - map$8, - mapi$4, - fold_left$4, - fold_right$3, - iter2$2, - map2$2, - for_all$4, - exists$4, - mem$1, - mem_ieee, - sort$0, - stable_sort, - stable_sort, - to_seq$5, - to_seqi$2, - of_seq$3, - map_to_array, - map_from_array], - _N_]; - 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} - function pred$1(n){return n - 1 | 0} - function abs$1(n){return caml_greaterequal(n,0)?n:- n | 0} - var min_int$1=-2147483648,max_int$1=2147483647; - function lognot$0(n){return n ^ -1} - function unsigned_to_int(n) - {if - (! - (0 < caml_int_compare(0,n)) - && - ! - (0 < caml_int_compare(n,2147483647))) - return [0,n]; - return 0} - 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$_}} - 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) - {return caml_int_compare(n + 2147483648 | 0,m + 2147483648 | 0)} - function min$3(x,y){return caml_lessequal(x,y)?x:y} - function max$3(x,y){return caml_greaterequal(x,y)?x:y} - function unsigned_div(n,d) - {if(caml_lessthan(d,0))return 0 <= unsigned_compare(n,d)?one$1:zero$1; - var q=caml_div(n >>> 1 | 0,d) << 1,r=n - caml_mul(q,d) | 0; - return 0 <= unsigned_compare(r,d)?q + 1 | 0:q} - function unsigned_rem(n,d){return n - caml_mul(unsigned_div(n,d),d) | 0} - var - Stdlib_Int32= - [0, - zero$1, - one$1, - minus_one$1, - unsigned_div, - unsigned_rem, - succ$1, - pred$1, - abs$1, - max_int$1, - min_int$1, - lognot$0, - unsigned_to_int, - of_string_opt$0, - to_string$3, - compare$11, - unsigned_compare, - equal$12, - 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 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_)} - var max_int$3=caml_int64_of_int32(2147483647); - function unsigned_to_int$0(n) - {if - (! - (0 < caml_int64_compare(zero$2,n)) - && - ! - (0 < caml_int64_compare(n,max_int$3))) - return [0,runtime.caml_int64_to_int32(n)]; - return 0} - 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_}} - 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) - {return caml_int64_compare - (caml_int64_sub(n,min_int$2),caml_int64_sub(m,min_int$2))} - function min$4(x,y){return caml_lessequal(x,y)?x:y} - function max$4(x,y){return caml_greaterequal(x,y)?x:y} - function unsigned_div$0(n,d) - {if(caml_lessthan(d,zero$2)) - return 0 <= unsigned_compare$0(n,d)?one$2:zero$2; - var - q= - caml_int64_shift_left - (runtime.caml_int64_div(caml_int64_shift_right_unsigne(n,1),d),1), - r=caml_int64_sub(n,caml_int64_mul(q,d)); - return 0 <= unsigned_compare$0(r,d)?succ$2(q):q} - function unsigned_rem$0(n,d) - {return caml_int64_sub(n,caml_int64_mul(unsigned_div$0(n,d),d))} - var - Stdlib_Int64= - [0, - zero$2, - one$2, - minus_one$2, - unsigned_div$0, - unsigned_rem$0, - succ$2, - pred$2, - abs$2, - max_int$2, - min_int$2, - lognot$1, - unsigned_to_int$0, - of_string_opt$1, - to_string$4, - compare$12, - unsigned_compare$0, - equal$13, - min$4, - max$4]; - caml_register_global(797,Stdlib_Int64,"Stdlib__Int64"); - var zero$3=0,one$3=1,minus_one$3=-1; - function succ$3(n){return n + 1 | 0} - function pred$3(n){return n - 1 | 0} - function abs$3(n){return caml_greaterequal(n,0)?n:- n | 0} - var min_int$3=-2147483648,max_int$4=2147483647; - function lognot$2(n){return n ^ -1} - function unsigned_to_int$1(n) - {if - (! - (0 < caml_int_compare(0,n)) - && - ! - (0 < caml_int_compare(n,2147483647))) - return [0,n]; - return 0} - 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_}} - 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) - {return caml_int_compare(n + 2147483648 | 0,m + 2147483648 | 0)} - function min$5(x,y){return caml_lessequal(x,y)?x:y} - function max$5(x,y){return caml_greaterequal(x,y)?x:y} - function unsigned_div$1(n,d) - {if(caml_lessthan(d,0))return 0 <= unsigned_compare$1(n,d)?one$3:zero$3; - var q=caml_div(n >>> 1 | 0,d) << 1,r=n - caml_mul(q,d) | 0; - return 0 <= unsigned_compare$1(r,d)?q + 1 | 0:q} - function unsigned_rem$1(n,d) - {return n - caml_mul(unsigned_div$1(n,d),d) | 0} - var - Stdlib_Nativeint= - [0, - zero$3, - one$3, - minus_one$3, - unsigned_div$1, - unsigned_rem$1, - succ$3, - pred$3, - abs$3, - match$1, - max_int$4, - min_int$3, - lognot$2, - unsigned_to_int$1, - of_string_opt$2, - to_string$5, - compare$13, - unsigned_compare$1, - equal$14, - min$5, - max$5]; - caml_register_global(798,Stdlib_Nativeint,"Stdlib__Nativeint"); - 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_) - {buf[11] = buf[12]; - var _x5_=buf[12]; - buf[12] = [0,_x5_[1],_x5_[2],_x5_[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_) - {buf[11] = buf[12]; - var _x2_=buf[12]; - buf[12] = [0,_x2_[1],_x2_[2],_x2_[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, - aux_buffer=caml_create_bytes(512), - _xO_=[0], - _xP_=0, - _xQ_=0, - _xR_=0, - _xS_=0, - _xT_=0, - _xU_=0, - _xV_=0, - _xW_=caml_create_bytes(1024); - return [0, - function(lexbuf) - {var - read= - caml_call2(f,aux_buffer,caml_ml_bytes_length(aux_buffer)), - n=0 < read?read:(lexbuf[9] = 1,0); - if(caml_ml_bytes_length(lexbuf[2]) < (lexbuf[3] + n | 0)) - {if - (((lexbuf[3] - lexbuf[5] | 0) + n | 0) - <= - caml_ml_bytes_length(lexbuf[2])) - blit - (lexbuf[2],lexbuf[5],lexbuf[2],0,lexbuf[3] - lexbuf[5] | 0); - else - {var - newlen= - min$1 - (2 * caml_ml_bytes_length(lexbuf[2]) | 0,max_string_length); - if(newlen < ((lexbuf[3] - lexbuf[5] | 0) + n | 0)) - failwith(cst_Lexing_lex_refill_cannot_g); - var newbuf=caml_create_bytes(newlen); - blit(lexbuf[2],lexbuf[5],newbuf,0,lexbuf[3] - lexbuf[5] | 0); - lexbuf[2] = newbuf} - var s=lexbuf[5]; - lexbuf[4] = lexbuf[4] + s | 0; - lexbuf[6] = lexbuf[6] - s | 0; - 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_; - 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} - 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_]} - 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); - return [0, - function(lexbuf){lexbuf[9] = 1;return 0}, - _xL_, - _xK_, - _xJ_, - _xI_, - _xH_, - _xG_, - _xF_, - _xE_, - _xD_, - _xC_, - _xB_]} - 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]]; - return 0} - function with_positions(lexbuf){return lexbuf[12] !== dummy_pos?1:0} - function lexeme(lexbuf) - {var len=lexbuf[6] - lexbuf[5] | 0; - return sub_string(lexbuf[2],lexbuf[5],len)} - function sub_lexeme(lexbuf,i1,i2) - {var len=i2 - i1 | 0;return sub_string(lexbuf[2],i1,len)} - function sub_lexeme_opt(lexbuf,i1,i2) - {if(0 <= i1){var len=i2 - i1 | 0;return [0,sub_string(lexbuf[2],i1,len)]} - return 0} - function sub_lexeme_char(lexbuf,i){return caml_bytes_get(lexbuf[2],i)} - function sub_lexeme_char_opt(lexbuf,i) - {return 0 <= i?[0,caml_bytes_get(lexbuf[2],i)]:0} - function lexeme_char(lexbuf,i) - {return caml_bytes_get(lexbuf[2],lexbuf[5] + i | 0)} - function lexeme_start(lexbuf){return lexbuf[11][4]} - function lexeme_end(lexbuf){return lexbuf[12][4]} - function lexeme_start_p(lexbuf){return lexbuf[11]} - function lexeme_end_p(lexbuf){return lexbuf[12]} - 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_} - function flush_input(lb) - {lb[6] = 0; - lb[4] = 0; - var lcp=lb[12]; - if(lcp !== dummy_pos) - lb[12] = [0,lcp[1],zero_pos[2],zero_pos[3],zero_pos[4]]; - lb[3] = 0; - return 0} - var - Stdlib_Lexing= - [0, - dummy_pos, - from_channel, - from_string$0, - from_function, - set_position, - set_filename, - with_positions, - lexeme, - lexeme_char, - lexeme_start, - lexeme_end, - lexeme_start_p, - lexeme_end_p, - new_line, - flush_input, - sub_lexeme, - sub_lexeme_opt, - sub_lexeme_char, - sub_lexeme_char_opt, - engine, - new_engine]; - caml_register_global(799,Stdlib_Lexing,"Stdlib__Lexing"); - var - YYexit=[248,cst_Stdlib_Parsing_YYexit,caml_fresh_oo_id(0)], - Parse_error=[248,cst_Stdlib_Parsing_Parse_error,caml_fresh_oo_id(0)], - env= - [0, - caml_make_vect(100,0), - caml_make_vect(100,0), - caml_make_vect(100,dummy_pos), - caml_make_vect(100,dummy_pos), - 100, - 0, - 0, - 0, - dummy_pos, - dummy_pos, - 0, - 0, - 0, - 0, - 0, - 0]; - function grow_stacks(param) - {var - oldsize=env[5], - newsize=oldsize * 2 | 0, - new_s=caml_make_vect(newsize,0), - new_v=caml_make_vect(newsize,0), - new_start=caml_make_vect(newsize,dummy_pos), - new_end=caml_make_vect(newsize,dummy_pos); - blit$1(env[1],0,new_s,0,oldsize); - env[1] = new_s; - blit$1(env[2],0,new_v,0,oldsize); - env[2] = new_v; - blit$1(env[3],0,new_start,0,oldsize); - env[3] = new_start; - blit$1(env[4],0,new_end,0,oldsize); - env[4] = new_end; - env[5] = newsize; - return 0} - function clear_parser(param) - {fill$0(env[2],0,env[5],0);env[8] = 0;return 0} - var current_lookahead_fun=[0,function(param){return 0}]; - function yyparse(tables,start,lexer,lexbuf) - {var - init_asp=env[11], - init_sp=env[14], - init_stackbase=env[6], - init_state=env[15], - init_curr_char=env[7], - init_lval=env[8], - init_errflag=env[16]; - env[6] = env[14] + 1 | 0; - env[7] = start; - env[10] = lexbuf[12]; - try - {var cmd=0,arg=0; - for(;;) - {var match=runtime.caml_parse_engine(tables,env,cmd,arg); - switch(match) - {case 0: - var arg$0=caml_call1(lexer,lexbuf); - env[9] = lexbuf[11]; - env[10] = lexbuf[12]; - var cmd=1,arg=arg$0; - continue; - case 1:throw Parse_error; - case 2:grow_stacks(0);var cmd=2,arg=0;continue; - case 3:grow_stacks(0);var cmd=3,arg=0;continue; - 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_} - var cmd=cmd$0,arg=arg$1; - continue; - default: - caml_call1(tables[14],cst_syntax_error);var cmd=5,arg=0;continue}}} - catch(exn) - {exn = caml_wrap_exception(exn); - var curr_char=env[7]; - env[11] = init_asp; - env[14] = init_sp; - env[6] = init_stackbase; - env[15] = init_state; - env[7] = init_curr_char; - env[8] = init_lval; - env[16] = init_errflag; - if(exn[1] === YYexit){var v=exn[2];return v} - current_lookahead_fun[1] - = - function(tok) - {if(is_block(tok)) - {var _xw_=caml_obj_tag(tok); - return caml_check_bound(tables[3],_xw_)[1 + _xw_] === 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_]} - 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_]; - 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_]}} - function symbol_end_pos(param) - {var _xn_=env[11];return caml_check_bound(env[4],_xn_)[1 + _xn_]} - function rhs_start_pos(n) - {var _xm_=env[11] - (env[12] - n | 0) | 0; - return caml_check_bound(env[3],_xm_)[1 + _xm_]} - function rhs_end_pos(n) - {var _xl_=env[11] - (env[12] - n | 0) | 0; - return caml_check_bound(env[4],_xl_)[1 + _xl_]} - 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]} - function rhs_end(n){return rhs_end_pos(n)[4]} - function is_current_lookahead(tok) - {return caml_call1(current_lookahead_fun[1],tok)} - function parse_error(param){return 0} - var - Stdlib_Parsing= - [0, - symbol_start, - symbol_end, - rhs_start, - rhs_end, - symbol_start_pos, - symbol_end_pos, - rhs_start_pos, - rhs_end_pos, - clear_parser, - Parse_error, - function(_xk_){return runtime.caml_set_parser_trace(_xk_)}, - YYexit, - yyparse, - peek_val, - is_current_lookahead, - parse_error]; - caml_register_global(800,Stdlib_Parsing,"Stdlib__Parsing"); - var - Stdlib_Set= - [0, - function(Ord) - {function height(param){if(param){var h=param[4];return h}return 0} - 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_]} - 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)); - 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_)} - 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); - 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_)} - 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_]} - function add(x,t) - {if(t) - {var r=t[3],v=t[2],l=t[1],c=caml_call2(Ord[1],x,v); - if(0 === c)return t; - if(0 <= c){var rr=add(x,r);return r === rr?t:bal(l,v,rr)} - var ll=add(x,l); - return l === ll?t:bal(ll,v,r)} - return [0,0,x,0,1]} - function singleton(x){return [0,0,x,0,1]} - function add_min_element(x,param) - {if(param) - {var r=param[3],v=param[2],l=param[1]; - return bal(add_min_element(x,l),v,r)} - return singleton(x)} - function add_max_element(x,param) - {if(param) - {var r=param[3],v=param[2],l=param[1]; - return bal(l,v,add_max_element(x,r))} - return singleton(x)} - function join(l,v,r) - {if(l) - {if(r) - {var - rh=r[4], - rr=r[3], - rv=r[2], - rl=r[1], - lh=l[4], - lr=l[3], - lv=l[2], - ll=l[1]; - return (rh + 2 | 0) < lh - ?bal(ll,lv,join(lr,v,r)) - :(lh + 2 | 0) < rh?bal(join(l,v,rl),rv,rr):create(l,v,r)} - return add_max_element(v,l)} - return add_min_element(v,r)} - function min_elt(param) - {var param$0=param; - for(;;) - {if(param$0) - {var _xd_=param$0[1]; - if(_xd_){var param$0=_xd_;continue} - var v=param$0[2]; - return v} - throw Not_found}} - function min_elt_opt(param) - {var param$0=param; - for(;;) - {if(param$0) - {var _xc_=param$0[1]; - if(_xc_){var param$0=_xc_;continue} - var v=param$0[2]; - return [0,v]} - return 0}} - function max_elt(param) - {var param$0=param; - for(;;) - {if(param$0) - {if(param$0[3]){var param$1=param$0[3],param$0=param$1;continue} - var v=param$0[2]; - return v} - throw Not_found}} - function max_elt_opt(param) - {var param$0=param; - for(;;) - {if(param$0) - {if(param$0[3]){var param$1=param$0[3],param$0=param$1;continue} - var v=param$0[2]; - return [0,v]} - 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 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_)} - return t1} - return t2} - function split(x,param) - {if(param) - {var r=param[3],v=param[2],l=param[1],c=caml_call2(Ord[1],x,v); - if(0 === c)return [0,l,1,r]; - if(0 <= c) - {var match=split(x,r),rr=match[3],pres=match[2],lr=match[1]; - return [0,join(l,v,lr),pres,rr]} - var - match$0=split(x,l), - rl=match$0[3], - pres$0=match$0[2], - ll=match$0[1]; - return [0,ll,pres$0,join(rl,v,r)]} - return _V_} - var empty=0; - function is_empty(param){return param?0:1} - function mem(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[3], - v=param$0[2], - l=param$0[1], - c=caml_call2(Ord[1],x,v), - _w$_=0 === c?1:0; - if(_w$_)return _w$_; - var param$1=0 <= c?r:l,param$0=param$1; - continue} - return 0}} - function remove(x,t) - {if(t) - {var r=t[3],v=t[2],l=t[1],c=caml_call2(Ord[1],x,v); - if(0 === c) - {if(l) - {if(r) - {var _w__=remove_min_elt(r);return bal(l,min_elt(r),_w__)} - return l} - return r} - if(0 <= c){var rr=remove(x,r);return r === rr?t:bal(l,v,rr)} - var ll=remove(x,l); - return l === ll?t:bal(ll,v,r)} - return 0} - function union(s1,s2) - {if(s1) - {if(s2) - {var - h2=s2[4], - r2=s2[3], - v2=s2[2], - l2=s2[1], - h1=s1[4], - r1=s1[3], - v1=s1[2], - l1=s1[1]; - if(h2 <= h1) - {if(1 === h2)return add(v2,s1); - var - 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_)} - 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_)} - 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_)} - return 0} - return 0} - function split_bis(x,param) - {if(param) - {var r=param[3],v=param[2],l=param[1],c=caml_call2(Ord[1],x,v); - if(0 === c)return 0; - if(0 <= c) - {var match=split_bis(x,r); - if(match) - {var rr=match[2],lr=match[1];return [0,join(l,v,lr),rr]} - return 0} - var match$0=split_bis(x,l); - if(match$0) - {var rl=match$0[2],ll=match$0[1]; - return [0, - ll, - function(param){return join(caml_call1(rl,0),v,r)}]} - return 0} - return [0,0,function(param){return 0}]} - function disjoint(s1,s2) - {var s1$0=s1,s2$0=s2; - for(;;) - {if(s1$0 && s2$0) - {var r1=s1$0[3],v1=s1$0[2],l1=s1$0[1]; - 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 s2$1=caml_call1(r2,0),s1$0=r1,s2$0=s2$1;continue} - return _w3_} - 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_)} - return s1} - return 0} - function cons_enum(s,e) - {var s$0=s,e$0=e; - for(;;) - {if(s$0) - {var - r=s$0[3], - v=s$0[2], - s$1=s$0[1], - e$1=[0,v,r,e$0], - s$0=s$1, - e$0=e$1; - continue} - return e$0}} - function compare(s1,s2) - {var e2$2=cons_enum(s2,0),e1$2=cons_enum(s1,0),e1=e1$2,e2=e2$2; - for(;;) - {if(e1) - {if(e2) - {var - e2$0=e2[3], - r2=e2[2], - v2=e2[1], - e1$0=e1[3], - r1=e1[2], - v1=e1[1], - c=caml_call2(Ord[1],v1,v2); - if(0 === c) - {var - e2$1=cons_enum(r2,e2$0), - e1$1=cons_enum(r1,e1$0), - e1=e1$1, - e2=e2$1; - continue} - return c} - return 1} - return e2?-1:0}} - function equal(s1,s2){return 0 === compare(s1,s2)?1:0} - function subset(s1,s2) - {var s1$0=s1,s2$0=s2; - for(;;) - {if(s1$0) - {if(s2$0) - {var - r2=s2$0[3], - v2=s2$0[2], - l2=s2$0[1], - r1=s1$0[3], - v1=s1$0[2], - 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_} - 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_} - return 0} - return 1}} - function iter(f,param) - {var param$0=param; - for(;;) - {if(param$0) - {var r=param$0[3],v=param$0[2],l=param$0[1]; - iter(f,l); - caml_call1(f,v); - var param$0=r; - continue} - return 0}} - function fold(f,s,accu) - {var s$0=s,accu$0=accu; - for(;;) - {if(s$0) - {var - r=s$0[3], - v=s$0[2], - l=s$0[1], - accu$1=caml_call2(f,v,fold(f,l,accu$0)), - s$0=r, - accu$0=accu$1; - continue} - return accu$0}} - function for_all(p,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - 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_} - else - var _wV_=_wT_; - return _wV_} - return 1}} - function exists(p,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[3], - v=param$0[2], - l=param$0[1], - _wQ_=caml_call1(p,v); - if(_wQ_) - var _wR_=_wQ_; - else - {var _wS_=exists(p,l); - if(! _wS_){var param$0=r;continue} - var _wR_=_wS_} - return _wR_} - return 0}} - function filter(p,t) - {if(t) - {var - r=t[3], - v=t[2], - l=t[1], - l$0=filter(p,l), - pv=caml_call1(p,v), - r$0=filter(p,r); - if(pv){if(l === l$0 && r === r$0)return t;return join(l$0,v,r$0)} - return concat(l$0,r$0)} - return 0} - function partition(p,param) - {if(param) - {var - r=param[3], - v=param[2], - l=param[1], - match=partition(p,l), - lf=match[2], - lt=match[1], - pv=caml_call1(p,v), - 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_} - function cardinal(param) - {if(param) - {var r=param[3],l=param[1],_wN_=cardinal(r); - return (cardinal(l) + 1 | 0) + _wN_ | 0} - return 0} - function elements_aux(accu,param) - {var accu$0=accu,param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[3], - v=param$0[2], - l=param$0[1], - accu$1=[0,v,elements_aux(accu$0,r)], - accu$0=accu$1, - param$0=l; - continue} - return accu$0}} - function elements(s){return elements_aux(0,s)} - function find(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[3], - v=param$0[2], - l=param$0[1], - c=caml_call2(Ord[1],x,v); - if(0 === c)return v; - var param$1=0 <= c?r:l,param$0=param$1; - continue} - throw Not_found}} - function find_first(f,param$0) - {var param$1=param$0; - for(;;) - {if(param$1) - {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; - if(caml_call1(f,v$0)) - {var v0=v$0,param=l$0; - for(;;) - {if(param) - {var r=param[3],v=param[2],l=param[1]; - if(caml_call1(f,v)){var v0=v,param=l;continue} - var param=r; - continue} - return v0}} - var param$1=r$0; - continue} - throw Not_found}} - function find_first_opt(f,param$0) - {var param$1=param$0; - for(;;) - {if(param$1) - {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; - if(caml_call1(f,v$0)) - {var v0=v$0,param=l$0; - for(;;) - {if(param) - {var r=param[3],v=param[2],l=param[1]; - if(caml_call1(f,v)){var v0=v,param=l;continue} - var param=r; - continue} - return [0,v0]}} - var param$1=r$0; - continue} - return 0}} - function find_last(f,param$0) - {var param$1=param$0; - for(;;) - {if(param$1) - {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; - if(caml_call1(f,v$0)) - {var v0=v$0,param=r$0; - for(;;) - {if(param) - {var r=param[3],v=param[2],l=param[1]; - if(caml_call1(f,v)){var v0=v,param=r;continue} - var param=l; - continue} - return v0}} - var param$1=l$0; - continue} - throw Not_found}} - function find_last_opt(f,param$0) - {var param$1=param$0; - for(;;) - {if(param$1) - {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; - if(caml_call1(f,v$0)) - {var v0=v$0,param=r$0; - for(;;) - {if(param) - {var r=param[3],v=param[2],l=param[1]; - if(caml_call1(f,v)){var v0=v,param=r;continue} - var param=l; - continue} - return [0,v0]}} - var param$1=l$0; - continue} - return 0}} - function find_opt(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[3], - v=param$0[2], - l=param$0[1], - c=caml_call2(Ord[1],x,v); - if(0 === c)return [0,v]; - var param$1=0 <= c?r:l,param$0=param$1; - continue} - return 0}} - 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} - 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} - if(! switch$1)return join(l,v,r)} - return union(l,add(v,r))} - function map(f,t) - {if(t) - {var - r=t[3], - v=t[2], - l=t[1], - l$0=map(f,l), - v$0=caml_call1(f,v), - r$0=map(f,r); - if(l === l$0 && v === v$0 && r === r$0)return t; - return try_join(l$0,v$0,r$0)} - return 0} - function filter_map(f,t) - {if(t) - {var - r=t[3], - v=t[2], - l=t[1], - t1=filter_map(f,l), - v$0=caml_call1(f,v), - t2=filter_map(f,r); - if(v$0) - {var v$1=v$0[1]; - if(l === t1 && v === v$1 && r === t2)return t; - 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_)} - 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 - l$0=sort_uniq(Ord[1],l), - sub= - function(n,l) - {if(! (3 < n >>> 0)) - switch(n) - {case 0:return [0,0,l]; - case 1: - if(l){var l$3=l[2],x0=l[1];return [0,[0,0,x0,0,1],l$3]} - break; - case 2: - if(l) - {var _wH_=l[2]; - if(_wH_) - {var l$4=_wH_[2],x1=_wH_[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]; - 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) - {var - l$1=l$0[2], - mid=l$0[1], - match$0=sub((n - nl | 0) - 1 | 0,l$1), - l$2=match$0[2], - right=match$0[1]; - return [0,create(left,mid,right),l$2]} - throw [0,Assert_failure,_X_]}; - 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_)} - 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_)}]} - return 0} - function to_seq(c) - {var _wv_=cons_enum(c,0); - return function(_ww_){return seq_of_enum(_wv_,_ww_)}} - function snoc_enum(s,e) - {var s$0=s,e$0=e; - for(;;) - {if(s$0) - {var - s$1=s$0[3], - v=s$0[2], - l=s$0[1], - e$1=[0,v,l,e$0], - s$0=s$1, - e$0=e$1; - continue} - 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_)}]} - return 0} - function to_rev_seq(c) - {var _wr_=snoc_enum(c,0); - return function(_ws_){return rev_seq_of_enum(_wr_,_ws_)}} - function to_seq_from(low,s) - {var s$0=s,c=0; - for(;;) - {if(s$0) - {var r=s$0[3],v=s$0[2],l=s$0[1],n=caml_call2(Ord[1],v,low); - if(0 !== n) - {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]} - else - var _wp_=c; - return function(_wq_){return seq_of_enum(_wp_,_wq_)}}} - return [0, - empty, - is_empty, - mem, - add, - singleton, - remove, - union, - inter, - disjoint, - diff, - compare, - equal, - subset, - iter, - map, - fold, - for_all, - exists, - filter, - filter_map, - partition, - cardinal, - elements, - min_elt, - min_elt_opt, - max_elt, - max_elt_opt, - min_elt, - min_elt_opt, - split, - find, - find_opt, - find_first, - find_first_opt, - find_last, - find_last_opt, - of_list, - to_seq_from, - to_seq, - to_rev_seq, - add_seq, - of_seq]}]; - caml_register_global(801,Stdlib_Set,"Stdlib__Set"); - var - Stdlib_Map= - [0, - 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_]} - 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)); - 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_)} - 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); - 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_)} - 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 empty=0; - function is_empty(param){return param?0:1} - function add(x,data,m) - {if(m) - {var h=m[5],r=m[4],d=m[3],v=m[2],l=m[1],c=caml_call2(Ord[1],x,v); - if(0 === c)return d === data?m:[0,l,x,data,r,h]; - if(0 <= c){var rr=add(x,data,r);return r === rr?m:bal(l,v,d,rr)} - var ll=add(x,data,l); - return l === ll?m:bal(ll,v,d,r)} - return [0,0,x,data,0,1]} - function find(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[4], - d=param$0[3], - v=param$0[2], - l=param$0[1], - c=caml_call2(Ord[1],x,v); - if(0 === c)return d; - var param$1=0 <= c?r:l,param$0=param$1; - continue} - throw Not_found}} - function find_first(f,param$0) - {var param$1=param$0; - for(;;) - {if(param$1) - {var - r$0=param$1[4], - d$0=param$1[3], - v$0=param$1[2], - l$0=param$1[1]; - if(caml_call1(f,v$0)) - {var v0=v$0,d0=d$0,param=l$0; - for(;;) - {if(param) - {var r=param[4],d=param[3],v=param[2],l=param[1]; - if(caml_call1(f,v)){var v0=v,d0=d,param=l;continue} - var param=r; - continue} - return [0,v0,d0]}} - var param$1=r$0; - continue} - throw Not_found}} - function find_first_opt(f,param$0) - {var param$1=param$0; - for(;;) - {if(param$1) - {var - r$0=param$1[4], - d$0=param$1[3], - v$0=param$1[2], - l$0=param$1[1]; - if(caml_call1(f,v$0)) - {var v0=v$0,d0=d$0,param=l$0; - for(;;) - {if(param) - {var r=param[4],d=param[3],v=param[2],l=param[1]; - if(caml_call1(f,v)){var v0=v,d0=d,param=l;continue} - var param=r; - continue} - return [0,[0,v0,d0]]}} - var param$1=r$0; - continue} - return 0}} - function find_last(f,param$0) - {var param$1=param$0; - for(;;) - {if(param$1) - {var - r$0=param$1[4], - d$0=param$1[3], - v$0=param$1[2], - l$0=param$1[1]; - if(caml_call1(f,v$0)) - {var v0=v$0,d0=d$0,param=r$0; - for(;;) - {if(param) - {var r=param[4],d=param[3],v=param[2],l=param[1]; - if(caml_call1(f,v)){var v0=v,d0=d,param=r;continue} - var param=l; - continue} - return [0,v0,d0]}} - var param$1=l$0; - continue} - throw Not_found}} - function find_last_opt(f,param$0) - {var param$1=param$0; - for(;;) - {if(param$1) - {var - r$0=param$1[4], - d$0=param$1[3], - v$0=param$1[2], - l$0=param$1[1]; - if(caml_call1(f,v$0)) - {var v0=v$0,d0=d$0,param=r$0; - for(;;) - {if(param) - {var r=param[4],d=param[3],v=param[2],l=param[1]; - if(caml_call1(f,v)){var v0=v,d0=d,param=r;continue} - var param=l; - continue} - return [0,[0,v0,d0]]}} - var param$1=l$0; - continue} - return 0}} - function find_opt(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[4], - d=param$0[3], - v=param$0[2], - l=param$0[1], - c=caml_call2(Ord[1],x,v); - if(0 === c)return [0,d]; - var param$1=0 <= c?r:l,param$0=param$1; - continue} - return 0}} - function mem(x,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[4], - v=param$0[2], - l=param$0[1], - c=caml_call2(Ord[1],x,v), - _wi_=0 === c?1:0; - if(_wi_)return _wi_; - var param$1=0 <= c?r:l,param$0=param$1; - continue} - return 0}} - function min_binding(param) - {var param$0=param; - for(;;) - {if(param$0) - {var _wh_=param$0[1]; - if(_wh_){var param$0=_wh_;continue} - var d=param$0[3],v=param$0[2]; - return [0,v,d]} - throw Not_found}} - function min_binding_opt(param) - {var param$0=param; - for(;;) - {if(param$0) - {var _wg_=param$0[1]; - if(_wg_){var param$0=_wg_;continue} - var d=param$0[3],v=param$0[2]; - return [0,[0,v,d]]} - return 0}} - function max_binding(param) - {var param$0=param; - for(;;) - {if(param$0) - {if(param$0[4]){var param$1=param$0[4],param$0=param$1;continue} - var d=param$0[3],v=param$0[2]; - return [0,v,d]} - throw Not_found}} - function max_binding_opt(param) - {var param$0=param; - for(;;) - {if(param$0) - {if(param$0[4]){var param$1=param$0[4],param$0=param$1;continue} - var d=param$0[3],v=param$0[2]; - return [0,[0,v,d]]} - return 0}} - function remove_min_binding(param) - {if(param) - {var _wf_=param[1]; - if(_wf_) - {var r=param[4],d=param[3],v=param[2]; - return bal(remove_min_binding(_wf_),v,d,r)} - var r$0=param[4]; - return r$0} - return invalid_arg(cst_Map_remove_min_elt)} - function _vQ_(t1,t2) - {if(t1) - {if(t2) - {var match=min_binding(t2),d=match[2],x=match[1]; - return bal(t1,x,d,remove_min_binding(t2))} - return t1} - return t2} - 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){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)} - return 0} - function update(x,f,m) - {if(m) - {var h=m[5],r=m[4],d=m[3],v=m[2],l=m[1],c=caml_call2(Ord[1],x,v); - if(0 === c) - {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)} - 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)} - var match$0=caml_call1(f,0); - if(match$0){var data$0=match$0[1];return [0,0,x,data$0,0,1]} - return 0} - function iter(f,param) - {var param$0=param; - for(;;) - {if(param$0) - {var r=param$0[4],d=param$0[3],v=param$0[2],l=param$0[1]; - iter(f,l); - caml_call2(f,v,d); - var param$0=r; - continue} - return 0}} - function map(f,param) - {if(param) - {var - h=param[5], - r=param[4], - d=param[3], - v=param[2], - l=param[1], - l$0=map(f,l), - d$0=caml_call1(f,d), - r$0=map(f,r); - return [0,l$0,v,d$0,r$0,h]} - return 0} - function mapi(f,param) - {if(param) - {var - h=param[5], - r=param[4], - d=param[3], - v=param[2], - l=param[1], - l$0=mapi(f,l), - d$0=caml_call2(f,v,d), - r$0=mapi(f,r); - return [0,l$0,v,d$0,r$0,h]} - return 0} - function fold(f,m,accu) - {var m$0=m,accu$0=accu; - for(;;) - {if(m$0) - {var - r=m$0[4], - d=m$0[3], - v=m$0[2], - l=m$0[1], - accu$1=caml_call3(f,v,d,fold(f,l,accu$0)), - m$0=r, - accu$0=accu$1; - continue} - return accu$0}} - function for_all(p,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[4], - 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_} - else - var _we_=_wc_; - return _we_} - return 1}} - function exists(p,param) - {var param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[4], - d=param$0[3], - v=param$0[2], - l=param$0[1], - _v$_=caml_call2(p,v,d); - if(_v$_) - var _wa_=_v$_; - else - {var _wb_=exists(p,l); - if(! _wb_){var param$0=r;continue} - var _wa_=_wb_} - return _wa_} - return 0}} - function add_min_binding(k,x,param) - {if(param) - {var r=param[4],d=param[3],v=param[2],l=param[1]; - return bal(add_min_binding(k,x,l),v,d,r)} - return singleton(k,x)} - function add_max_binding(k,x,param) - {if(param) - {var r=param[4],d=param[3],v=param[2],l=param[1]; - return bal(l,v,d,add_max_binding(k,x,r))} - return singleton(k,x)} - function join(l,v,d,r) - {if(l) - {if(r) - {var - rh=r[5], - rr=r[4], - rd=r[3], - rv=r[2], - rl=r[1], - lh=l[5], - lr=l[4], - ld=l[3], - lv=l[2], - ll=l[1]; - return (rh + 2 | 0) < lh - ?bal(ll,lv,ld,join(lr,v,d,r)) - :(lh + 2 | 0) < rh - ?bal(join(l,v,d,rl),rv,rd,rr) - :create(l,v,d,r)} - return add_max_binding(v,d,l)} - return add_min_binding(v,d,r)} - function concat(t1,t2) - {if(t1) - {if(t2) - {var match=min_binding(t2),d=match[2],x=match[1]; - return join(t1,x,d,remove_min_binding(t2))} - return t1} - return t2} - function concat_or_join(t1,v,d,t2) - {if(d){var d$0=d[1];return join(t1,v,d$0,t2)}return concat(t1,t2)} - function split(x,param) - {if(param) - {var - r=param[4], - d=param[3], - v=param[2], - l=param[1], - c=caml_call2(Ord[1],x,v); - if(0 === c)return [0,l,[0,d],r]; - if(0 <= c) - {var match=split(x,r),rr=match[3],pres=match[2],lr=match[1]; - return [0,join(l,v,d,lr),pres,rr]} - var - match$0=split(x,l), - rl=match$0[3], - pres$0=match$0[2], - ll=match$0[1]; - return [0,ll,pres$0,join(rl,v,d,r)]} - return _Y_} - function merge(f,s1,s2) - {if(s1) - {var h1=s1[5],r1=s1[4],d1=s1[3],v1=s1[2],l1=s1[1]; - if(height(s2) <= h1) - {var - match=split(v1,s2), - 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_)}} - else - if(! s2)return 0; - if(s2) - {var - r2$0=s2[4], - d2$0=s2[3], - v2=s2[2], - l2$0=s2[1], - match$0=split(v2,s1), - 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_]} - function union(f,s1,s2) - {if(s1) - {if(s2) - {var - h2=s2[5], - r2=s2[4], - d2=s2[3], - v2=s2[2], - l2=s2[1], - h1=s1[5], - r1=s1[4], - d1=s1[3], - v1=s1[2], - l1=s1[1]; - if(h2 <= h1) - {var - match=split(v1,s2), - r2$0=match[3], - d2$0=match[2], - l2$0=match[1], - l=union(f,l1,l2$0), - r=union(f,r1,r2$0); - if(d2$0) - {var d2$1=d2$0[1]; - return concat_or_join(l,v1,caml_call3(f,v1,d1,d2$1),r)} - return join(l,v1,d1,r)} - var - match$0=split(v2,s1), - r1$0=match$0[3], - d1$0=match$0[2], - l1$0=match$0[1], - l$0=union(f,l1$0,l2), - r$0=union(f,r1$0,r2); - if(d1$0) - {var d1$1=d1$0[1]; - return concat_or_join(l$0,v2,caml_call3(f,v2,d1$1,d2),r$0)} - return join(l$0,v2,d2,r$0)} - var s=s1} - else - var s=s2; - return s} - function filter(p,m) - {if(m) - {var - r=m[4], - d=m[3], - v=m[2], - l=m[1], - l$0=filter(p,l), - pvd=caml_call2(p,v,d), - r$0=filter(p,r); - if(pvd) - {if(l === l$0 && r === r$0)return m;return join(l$0,v,d,r$0)} - return concat(l$0,r$0)} - return 0} - function filter_map(f,param) - {if(param) - {var - r=param[4], - d=param[3], - v=param[2], - l=param[1], - l$0=filter_map(f,l), - fvd=caml_call2(f,v,d), - r$0=filter_map(f,r); - if(fvd){var d$0=fvd[1];return join(l$0,v,d$0,r$0)} - return concat(l$0,r$0)} - return 0} - function partition(p,param) - {if(param) - {var - r=param[4], - d=param[3], - v=param[2], - l=param[1], - match=partition(p,l), - lf=match[2], - lt=match[1], - pvd=caml_call2(p,v,d), - 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 ___} - function cons_enum(m,e) - {var m$0=m,e$0=e; - for(;;) - {if(m$0) - {var - r=m$0[4], - d=m$0[3], - v=m$0[2], - m$1=m$0[1], - e$1=[0,v,d,r,e$0], - m$0=m$1, - e$0=e$1; - continue} - return e$0}} - function compare(cmp,m1,m2) - {var e2$2=cons_enum(m2,0),e1$2=cons_enum(m1,0),e1=e1$2,e2=e2$2; - for(;;) - {if(e1) - {if(e2) - {var - e2$0=e2[4], - r2=e2[3], - d2=e2[2], - v2=e2[1], - e1$0=e1[4], - r1=e1[3], - d1=e1[2], - v1=e1[1], - c=caml_call2(Ord[1],v1,v2); - if(0 === c) - {var c$0=caml_call2(cmp,d1,d2); - if(0 === c$0) - {var - e2$1=cons_enum(r2,e2$0), - e1$1=cons_enum(r1,e1$0), - e1=e1$1, - e2=e2$1; - continue} - return c$0} - return c} - return 1} - return e2?-1:0}} - function equal(cmp,m1,m2) - {var e2$2=cons_enum(m2,0),e1$2=cons_enum(m1,0),e1=e1$2,e2=e2$2; - for(;;) - {if(e1) - {if(e2) - {var - e2$0=e2[4], - r2=e2[3], - d2=e2[2], - v2=e2[1], - e1$0=e1[4], - 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_) - {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_} - else - var _v4_=_v2_; - return _v4_} - 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} - return 0} - function bindings_aux(accu,param) - {var accu$0=accu,param$0=param; - for(;;) - {if(param$0) - {var - r=param$0[4], - d=param$0[3], - v=param$0[2], - l=param$0[1], - accu$1=[0,[0,v,d],bindings_aux(accu$0,r)], - accu$0=accu$1, - param$0=l; - continue} - return accu$0}} - function bindings(s){return bindings_aux(0,s)} - function add_seq(i,m) - {return fold_left - (function(m,param) - {var v=param[2],k=param[1];return add(k,v,m)}, - m, - i)} - 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_)}]} - return 0} - function to_seq(m) - {var _vX_=cons_enum(m,0); - return function(_vY_){return seq_of_enum(_vX_,_vY_)}} - function snoc_enum(s,e) - {var s$0=s,e$0=e; - for(;;) - {if(s$0) - {var - s$1=s$0[4], - d=s$0[3], - v=s$0[2], - l=s$0[1], - e$1=[0,v,d,l,e$0], - s$0=s$1, - e$0=e$1; - continue} - 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); - return [0, - [0,k,v], - function(_vW_){return rev_seq_of_enum(_vV_,_vW_)}]} - return 0} - function to_rev_seq(c) - {var _vT_=snoc_enum(c,0); - return function(_vU_){return rev_seq_of_enum(_vT_,_vU_)}} - function to_seq_from(low,m) - {var m$0=m,c=0; - for(;;) - {if(m$0) - {var - r=m$0[4], - d=m$0[3], - v=m$0[2], - l=m$0[1], - n=caml_call2(Ord[1],v,low); - if(0 !== n) - {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]} - else - var _vR_=c; - return function(_vS_){return seq_of_enum(_vR_,_vS_)}}} - return [0, - empty, - is_empty, - mem, - add, - update, - singleton, - remove, - merge, - union, - compare, - equal, - iter, - fold, - for_all, - exists, - filter, - filter_map, - partition, - cardinal, - bindings, - min_binding, - min_binding_opt, - max_binding, - max_binding_opt, - min_binding, - min_binding_opt, - split, - find, - find_opt, - find_first, - find_first_opt, - find_last, - find_last_opt, - map, - mapi, - to_seq, - to_rev_seq, - to_seq_from, - add_seq, - of_seq]}]; - caml_register_global(802,Stdlib_Map,"Stdlib__Map"); - var Empty=[248,cst_Stdlib_Stack_Empty,caml_fresh_oo_id(0)]; - function create$0(param){return [0,0,0]} - function clear(s){s[1] = 0;s[2] = 0;return 0} - 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} - 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]} - return 0} - function top(s) - {var _vN_=s[1];if(_vN_){var hd=_vN_[1];return hd}throw Empty} - function top_opt(s) - {var _vM_=s[1];if(_vM_){var hd=_vM_[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])} - function fold$2(f,acc,s){return fold_left$0(f,acc,s[1])} - function to_seq$6(s){return to_seq$1(s[1])} - function add_seq(q,i){return iter(function(x){return push(x,q)},i)} - function of_seq$4(g){var s=create$0(0);add_seq(s,g);return s} - var - Stdlib_Stack= - [0, - Empty, - create$0, - push, - pop, - pop_opt, - top, - top_opt, - clear, - copy$3, - is_empty$0, - length$2, - iter$7, - fold$2, - to_seq$6, - add_seq, - of_seq$4]; - caml_register_global(803,Stdlib_Stack,"Stdlib__Stack"); - var Empty$0=[248,cst_Stdlib_Queue_Empty,caml_fresh_oo_id(0)]; - 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) - :(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} - function peek_opt(q) - {var _vJ_=q[2];if(_vJ_){var content=_vJ_[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_} - clear$0(q); - return _vI_} - 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_]} - clear$0(q); - return [0,_vG_]} - return 0} - function copy$4(q) - {var q_res=[0,q[1],0,0],prev=0,cell=q[2]; - for(;;) - {if(cell) - {var content=cell[1],next=cell[2],res=[0,content,0]; - if(prev)prev[2] = res;else q_res[2] = res; - var prev=res,cell=next; - continue} - q_res[3] = prev; - return q_res}} - function is_empty$1(q){return 0 === q[1]?1:0} - function length$3(q){return q[1]} - function iter$8(f,q) - {var cell=q[2]; - for(;;) - {if(cell) - {var content=cell[1],next=cell[2]; - caml_call1(f,content); - var cell=next; - continue} - return 0}} - function fold$3(f,accu$1,q) - {var accu=accu$1,cell=q[2]; - for(;;) - {if(cell) - {var - content=cell[1], - next=cell[2], - accu$0=caml_call2(f,accu,content), - accu=accu$0, - cell=next; - continue} - return accu}} - function transfer(q1,q2) - {var _vD_=0 < q1[1]?1:0; - if(_vD_) - {var _vE_=q2[3]; - return _vE_ - ?(q2[1] - = - q2[1] - + - q1[1] - | - 0, - _vE_[2] - = - q1[2], - q2[3] - = - q1[3], - clear$0(q1)) - :(q2[1] = q1[1],q2[2] = q1[2],q2[3] = q1[3],clear$0(q1))} - return _vD_} - 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} - var _vA_=q[2]; - return function(_vB_){return aux(_vA_,_vB_)}} - 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 - Stdlib_Queue= - [0, - Empty$0, - create$1, - add, - add, - take$0, - take_opt, - take$0, - peek, - peek_opt, - peek, - clear$0, - copy$4, - is_empty$1, - length$3, - iter$8, - fold$3, - transfer, - to_seq$7, - add_seq$0, - of_seq$5]; - caml_register_global(804,Stdlib_Queue,"Stdlib__Queue"); - var - Failure$0=[248,cst_Stdlib_Stream_Failure,caml_fresh_oo_id(0)], - Error=[248,cst_Stdlib_Stream_Error,caml_fresh_oo_id(0)]; - function count(param) - {if(param){var match=param[1],count=match[1];return count}return 0} - function data(param) - {if(param){var match=param[1],data=match[2];return data}return 0} - function fill_buff(b) - {b[3] = input(b[1],b[2],0,caml_ml_bytes_length(b[2]));b[4] = 0;return 0} - function get_data(count,d) - {var d$0=d; - for(;;) - {if(typeof d$0 !== "number") - switch(d$0[0]) - {case 1: - var d2=d$0[2],d1=d$0[1],match=get_data(count,d1); - if(typeof match === "number") - {var d$0=d2;continue} - else - {if(0 === match[0]) - {var d11=match[2],a=match[1];return [0,a,[1,d11,d2]]} - throw [0,Assert_failure,_$_]} - 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, - 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]} - return 0} - var match$0=caml_call1(_vx_[2],count); - if(match$0){var a$1=match$0[1];return [0,a$1,d$0]} - _vx_[1] = _aa_; - return 0; - case 4: - var b=d$0[1]; - if(b[3] <= b[4])fill_buff(b); - if(0 === b[3])return 0; - var r=caml_bytes_unsafe_get(b[2],b[4]); - b[4] = b[4] + 1 | 0; - return [0,r,d$0] - } - return d$0}} - function peek_data(s) - {for(;;) - {var _vr_=s[2]; - if(typeof _vr_ === "number") - return 0; - else - switch(_vr_[0]) - {case 0:var a=_vr_[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_]} - 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_; - 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]; - return x; - default: - var b=_vr_[1]; - if(b[3] <= b[4])fill_buff(b); - return 0 === b[3] - ?(s[2] = 0,0) - :[0,caml_bytes_unsafe_get(b[2],b[4])]}}} - function peek$0(param) - {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; - case 3: - var _vq_=_vp_[1]; - if(_vq_[1]){s[1] = s[1] + 1 | 0;_vq_[1] = 0;return 0} - break; - case 4: - var b=_vp_[1]; - if(b[3] <= b[4])fill_buff(b); - return 0 === b[3] - ?(s[2] = 0,0) - :(s[1] = s[1] + 1 | 0,b[4] = b[4] + 1 | 0,0) - } - var match=peek_data(s); - if(match)continue; - return 0}} - function junk(param) - {if(param){var data=param[1];return junk_data(data)}return 0} - function nget_data(n,s) - {if(0 < n) - {var match=peek_data(s); - if(match) - {var a=match[1]; - junk_data(s); - var - match$0=nget_data(n - 1 | 0,s), - k=match$0[3], - d=match$0[2], - al=match$0[1]; - return [0,[0,a,al],[0,a,d],k + 1 | 0]} - return [0,0,s[2],0]} - return [0,0,s[2],0]} - function npeek(n,param) - {if(param) - {var - d$0=param[1], - match=nget_data(n,d$0), - len=match[3], - d=match[2], - al=match[1]; - d$0[1] = d$0[1] - len | 0; - d$0[2] = d; - return al} - return 0} - function next(s) - {var match=peek$0(s); - if(match){var a=match[1];junk(s);return a} - throw Failure$0} - function empty$2(s){var match=peek$0(s);if(match)throw Failure$0;return 0} - function iter$9(f,strm) - {for(;;) - {var match=peek$0(strm); - if(match){var a=match[1];junk(strm);caml_call1(f,a);continue} - 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_)]]} - function of_string(s) - {var count=[0,0]; - return from - (function(param) - {var c=count[1]; - return c < caml_ml_string_length(s) - ?(count[1]++,[0,caml_string_get(s,c)]) - :0})} - function of_bytes$0(s) - {var count=[0,0]; - return from - (function(param) - {var c=count[1]; - return c < caml_ml_bytes_length(s) - ?(count[1]++,[0,caml_bytes_get(s,c)]) - :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 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) - {return [0, - [0, - 0, - [2, - [246, - function(_vl_) - {var _vm_=data(s);return [1,data(caml_call1(f,0)),_vm_]}]]]]} - function lcons(f,s) - {return [0, - [0, - 0, - [2, - [246, - function(_vj_) - {var _vk_=data(s);return [0,caml_call1(f,0),_vk_]}]]]]} - function lsing(f) - {return [0,[0,0,[2,[246,function(_vi_){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))}]]]]} - function dump_data(f,param) - {if(typeof param === "number") - return print_string(cst_Sempty); - else - switch(param[0]) - {case 0: - var d=param[2],a=param[1]; - print_string(cst_Scons); - caml_call1(f,a); - print_string(cst$7); - dump_data(f,d); - return print_string(cst$8); - case 1: - var d2=param[2],d1=param[1]; - print_string(cst_Sapp); - dump_data(f,d1); - print_string(cst$9); - dump_data(f,d2); - return print_string(cst$10); - 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, - Failure$0, - Error, - from, - of_list$1, - of_string, - of_bytes$0, - of_channel, - iter$9, - next, - empty$2, - peek$0, - junk, - count, - npeek, - iapp, - icons, - ising, - lapp, - lcons, - lsing, - sempty, - slazy, - dump]; - caml_register_global(805,Stdlib_Stream,"Stdlib__Stream"); - function create$2(n) - {var - n$0=1 <= n?n:1, - n$1=max_string_length < n$0?max_string_length:n$0, - s=caml_create_bytes(n$1); - return [0,s,0,n$1,s]} - function contents(b){return sub_string(b[1],0,b[2])} - function to_bytes$0(b){return sub(b[1],0,b[2])} - function sub$3(b,ofs,len) - {if(0 <= ofs && 0 <= len && ! ((b[2] - len | 0) < ofs)) - return sub_string(b[1],ofs,len); - return invalid_arg(cst_Buffer_sub)} - function blit$3(src,srcoff,dst,dstoff,len) - {if - (0 - <= - len - && - 0 - <= - srcoff - && - ! - ((src[2] - len | 0) < srcoff) - && - 0 - <= - dstoff - && - ! - ((caml_ml_bytes_length(dst) - len | 0) < dstoff)) - return caml_blit_bytes(src[1],srcoff,dst,dstoff,len); - return invalid_arg(cst_Buffer_blit)} - function nth$0(b,ofs) - {if(0 <= ofs && ! (b[2] <= ofs))return caml_bytes_unsafe_get(b[1],ofs); - return invalid_arg(cst_Buffer_nth)} - function length$4(b){return b[2]} - function clear$1(b){b[2] = 0;return 0} - function reset(b) - {b[2] = 0;b[1] = b[4];b[3] = caml_ml_bytes_length(b[1]);return 0} - function resize(b,more) - {var old_pos=b[2],old_len=b[3],new_len=[0,old_len]; - for(;;) - {if(new_len[1] < (old_pos + more | 0)) - {new_len[1] = 2 * new_len[1] | 0;continue} - if(max_string_length < new_len[1]) - if((old_pos + more | 0) <= max_string_length) - new_len[1] = max_string_length; - else - failwith(cst_Buffer_add_cannot_grow_buf); - var new_buffer=caml_create_bytes(new_len[1]); - blit(b[1],0,new_buffer,0,b[2]); - b[1] = new_buffer; - 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_]}} - function add_char(b,c) - {var pos=b[2]; - if(b[3] <= pos)resize(b,1); - caml_bytes_unsafe_set(b[1],pos,c); - b[2] = pos + 1 | 0; - return 0} - var uchar_utf_8_byte_length_max=4,uchar_utf_16_byte_length_max=4; - function add_utf_8_uchar(b,u) - {for(;;) - {var pos=b[2]; - if(b[3] <= pos)resize(b,uchar_utf_8_byte_length_max); - var n=set_utf_8_uchar(b[1],pos,u); - if(0 === n){resize(b,uchar_utf_8_byte_length_max);continue} - b[2] = pos + n | 0; - return 0}} - function add_utf_16be_uchar(b,u) - {for(;;) - {var pos=b[2]; - if(b[3] <= pos)resize(b,uchar_utf_16_byte_length_max); - var n=set_utf_16be_uchar(b[1],pos,u); - if(0 === n){resize(b,uchar_utf_16_byte_length_max);continue} - b[2] = pos + n | 0; - return 0}} - function add_utf_16le_uchar(b,u) - {for(;;) - {var pos=b[2]; - if(b[3] <= pos)resize(b,uchar_utf_16_byte_length_max); - var n=set_utf_16le_uchar(b[1],pos,u); - if(0 === n){resize(b,uchar_utf_16_byte_length_max);continue} - 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_; - 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); - 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); - b[2] = new_position; - return 0} - function add_subbytes(b,s,offset,len) - {return add_substring(b,caml_string_of_bytes(s),offset,len)} - function add_string(b,s) - {var len=caml_ml_string_length(s),new_position=b[2] + len | 0; - if(b[3] < new_position)resize(b,len); - caml_blit_string(s,0,b[1],b[2],len); - b[2] = new_position; - return 0} - 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); - if(b[3] < (b[2] + len | 0))resize(b,len); - var already_read=0,ofs=b[2],to_read=len,_vb_=b[1]; - for(;;) - {if(0 !== to_read) - {var r=input(ic,_vb_,ofs,to_read); - if(0 !== r) - {var - already_read$0=already_read + r | 0, - ofs$0=ofs + r | 0, - to_read$0=to_read - r | 0, - already_read=already_read$0, - ofs=ofs$0, - to_read=to_read$0; - continue}} - if((b[2] + already_read | 0) <= b[3]) - {b[2] = b[2] + already_read | 0; - if(already_read < len)throw End_of_file; - return 0} - throw [0,Assert_failure,_ae_]}} - 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; - for(;;) - {if(i$7 < lim$1) - {var current=caml_string_get(s,i$7); - if(36 === current) - {if(92 === previous) - {add_char(b,current); - var i$8=i$7 + 1 | 0,previous=32,i$7=i$8; - continue} - var start=i$7 + 1 | 0; - if(lim$1 <= start)throw Not_found; - var opening=caml_string_get(s,start),switch$0=0; - if(40 !== opening && 123 !== opening) - {var i$6=start + 1 | 0,lim$0=caml_ml_string_length(s),i$3=i$6; - for(;;) - {if(lim$0 <= i$3) - var stop=lim$0; - else - {var match=caml_string_get(s,i$3),switch$1=0; - if(91 <= match) - {if(97 <= match) - {if(! (123 <= match))switch$1 = 1} - else - if(95 === match)switch$1 = 1} - else - if(58 <= match) - {if(65 <= match)switch$1 = 1} - else - if(48 <= match)switch$1 = 1; - if(switch$1){var i$4=i$3 + 1 | 0,i$3=i$4;continue} - var stop=i$3} - var match$0=[0,sub$0(s,start,stop - start | 0),stop]; - switch$0 = 1; - break}} - if(! switch$0) - {var i$5=start + 1 | 0,k$2=0; - if(40 === opening) - var _u$_=41; - else - {if(123 !== opening)throw [0,Assert_failure,_af_];var _u$_=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$_) - {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} - var - match$0= - [0,sub$0(s,i$5,(i - start | 0) - 1 | 0),i + 1 | 0]; - break}} - var next_i=match$0[2],ident=match$0[1]; - add_string(b,caml_call1(f,ident)); - var previous=32,i$7=next_i; - continue} - if(92 === previous) - {add_char(b,92); - add_char(b,current); - var i$9=i$7 + 1 | 0,previous=32,i$7=i$9; - continue} - if(92 === current) - {var i$10=i$7 + 1 | 0,previous=current,i$7=i$10;continue} - 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_}} - 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_)}]} - var _u3_=0; - return function(_u4_){return aux(_u3_,_u4_)}} - function add_seq$1(b,seq) - {return iter(function(_u2_){return add_char(b,_u2_)},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; - if(b[3] < new_position)resize(b,1); - caml_bytes_unsafe_set(b[1],b[2],x); - b[2] = new_position; - return 0} - function add_int16_ne(b,x) - {var new_position=b[2] + 2 | 0; - if(b[3] < new_position)resize(b,2); - caml_bytes_set16(b[1],b[2],x); - b[2] = new_position; - return 0} - function add_int32_ne(b,x) - {var new_position=b[2] + 4 | 0; - if(b[3] < new_position)resize(b,4); - caml_bytes_set32(b[1],b[2],x); - b[2] = new_position; - return 0} - function add_int64_ne(b,x) - {var new_position=b[2] + 8 | 0; - if(b[3] < new_position)resize(b,8); - caml_bytes_set64(b[1],b[2],x); - b[2] = new_position; - return 0} - function add_int16_le(b,x){return add_int16_ne(b,x)} - function add_int16_be(b,x) - {var x$0=caml_bswap16(x);return add_int16_ne(b,x$0)} - function add_int32_le(b,x){return add_int32_ne(b,x)} - function add_int32_be(b,x) - {var x$0=caml_int32_bswap(x);return add_int32_ne(b,x$0)} - function add_int64_le(b,x){return add_int64_ne(b,x)} - function add_int64_be(b,x) - {var x$0=caml_int64_bswap(x);return add_int64_ne(b,x$0)} - var - Stdlib_Buffer= - [0, - create$2, - contents, - to_bytes$0, - sub$3, - blit$3, - nth$0, - length$4, - clear$1, - reset, - output_buffer, - truncate, - add_char, - add_utf_8_uchar, - add_utf_16le_uchar, - add_utf_16be_uchar, - add_string, - add_bytes, - add_substring, - add_subbytes, - add_substitute, - add_buffer, - add_channel, - to_seq$8, - to_seqi$3, - add_seq$1, - of_seq$6, - add_int8, - add_int8, - add_int16_ne, - add_int16_be, - add_int16_le, - add_int16_ne, - add_int16_be, - add_int16_le, - add_int32_ne, - add_int32_be, - add_int32_le, - add_int64_ne, - add_int64_be, - add_int64_le]; - caml_register_global(806,Stdlib_Buffer,"Stdlib__Buffer"); - function create_char_set(param){return make$0(32,0)} - function add_in_char_set(char_set,c) - {var str_ind=c >>> 3 | 0,mask=1 << (c & 7); - return caml_bytes_set - (char_set, - str_ind, - char_of_int(caml_bytes_get(char_set,str_ind) | mask))} - function freeze_char_set(char_set){return of_bytes(char_set)} - function rev_char_set(char_set) - {var char_set$0=create_char_set(0),i=0; - 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} - 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); - return 0 !== (caml_string_get(char_set,str_ind) & mask)?1:0} - function pad_of_pad_opt(pad_opt) - {if(pad_opt){var width=pad_opt[1];return [0,1,width]}return 0} - function param_format_of_ignored_format(ign,fmt) - {if(typeof ign === "number") - switch(ign) - {case 0:return [0,[0,fmt]]; - case 1:return [0,[1,fmt]]; - case 2:return [0,[19,fmt]]; - default:return [0,[22,fmt]]} - else - switch(ign[0]) - {case 0:var pad_opt=ign[1];return [0,[2,pad_of_pad_opt(pad_opt),fmt]]; - case 1: - var pad_opt$0=ign[1];return [0,[3,pad_of_pad_opt(pad_opt$0),fmt]]; - case 2: - var pad_opt$1=ign[2],iconv=ign[1]; - return [0,[4,iconv,pad_of_pad_opt(pad_opt$1),0,fmt]]; - case 3: - var pad_opt$2=ign[2],iconv$0=ign[1]; - return [0,[5,iconv$0,pad_of_pad_opt(pad_opt$2),0,fmt]]; - case 4: - var pad_opt$3=ign[2],iconv$1=ign[1]; - return [0,[6,iconv$1,pad_of_pad_opt(pad_opt$3),0,fmt]]; - case 5: - var pad_opt$4=ign[2],iconv$2=ign[1]; - 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]]; - case 7: - var pad_opt$6=ign[1];return [0,[9,pad_of_pad_opt(pad_opt$6),fmt]]; - case 8: - var fmtty=ign[2],pad_opt$7=ign[1]; - return [0,[13,pad_opt$7,fmtty,fmt]]; - case 9: - var fmtty$0=ign[2],pad_opt$8=ign[1]; - return [0,[14,pad_opt$8,fmtty$0,fmt]]; - case 10: - var char_set=ign[2],width_opt=ign[1]; - return [0,[20,width_opt,char_set,fmt]]; - default:var counter=ign[1];return [0,[21,counter,fmt]]}} - function default_float_precision(fconv){return 5 === fconv[2]?12:-6} - function buffer_create(init_size) - {return [0,0,caml_create_bytes(init_size)]} - function buffer_check_size(buf,overhead) - {var - len=caml_ml_bytes_length(buf[2]), - min_len=buf[1] + overhead | 0, - _uY_=len < min_len?1:0; - if(_uY_) - {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} - else - var _uZ_=_uY_; - return _uZ_} - function buffer_add_char(buf,c) - {buffer_check_size(buf,1); - caml_bytes_set(buf[2],buf[1],c); - buf[1] = buf[1] + 1 | 0; - return 0} - function buffer_add_string(buf,s) - {var str_len=caml_ml_string_length(s); - buffer_check_size(buf,str_len); - blit$0(s,0,buf[2],buf[1],str_len); - buf[1] = buf[1] + str_len | 0; - return 0} - function buffer_contents(buf){return sub_string(buf[2],0,buf[1])} - function char_of_iconv(iconv) - {switch(iconv) - {case 6: - case 7:return 120; - case 8: - case 9:return 88; - case 10: - case 11:return 111; - case 12: - case 15:return 117; - case 0: - case 1: - case 2: - case 13:return 100; - default:return 105}} - function char_of_fconv(opt,fconv) - {if(opt)var sth=opt[1],cF=sth;else var cF=70; - switch(fconv[2]) - {case 0:return 102; - case 1:return 101; - case 2:return 69; - case 3:return 103; - case 4:return 71; - case 5:return cF; - case 6:return 104; - case 7:return 72; - default:return 70}} - function bprint_padty(buf,padty) - {switch(padty) - {case 0:return buffer_add_char(buf,45); - case 1:return 0; - default:return buffer_add_char(buf,48)}} - function bprint_ignored_flag(buf,ign_flag) - {return ign_flag?buffer_add_char(buf,95):ign_flag} - function bprint_pad_opt(buf,pad_opt) - {if(pad_opt) - {var width=pad_opt[1]; - return buffer_add_string(buf,caml_string_of_jsbytes("" + width))} - return 0} - function bprint_padding(buf,pad) - {if(typeof pad === "number") - return 0; - else - {if(0 === pad[0]) - {var n=pad[2],padty=pad[1]; - bprint_padty(buf,padty); - return buffer_add_string(buf,caml_string_of_jsbytes("" + n))} - var padty$0=pad[1]; - bprint_padty(buf,padty$0); - return buffer_add_char(buf,42)}} - function bprint_precision(buf,prec) - {if(typeof prec === "number")return prec?buffer_add_string(buf,cst$11):0; - var n=prec[1]; - buffer_add_char(buf,46); - return buffer_add_string(buf,caml_string_of_jsbytes("" + n))} - function bprint_iconv_flag(buf,iconv) - {switch(iconv) - {case 1: - case 4:return buffer_add_char(buf,43); - case 2: - case 5:return buffer_add_char(buf,32); - case 7: - case 9: - case 11: - case 13: - case 14: - case 15:return buffer_add_char(buf,35); - default:return 0}} - function bprint_altint_fmt(buf,ign_flag,iconv,pad,prec,c) - {buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag); - bprint_iconv_flag(buf,iconv); - bprint_padding(buf,pad); - bprint_precision(buf,prec); - buffer_add_char(buf,c); - return buffer_add_char(buf,char_of_iconv(iconv))} - function bprint_fconv_flag(buf,fconv) - {switch(fconv[1]) - {case 0:break; - case 1:buffer_add_char(buf,43);break; - default:buffer_add_char(buf,32)} - return 8 <= fconv[2]?buffer_add_char(buf,35):0} - function string_of_formatting_lit(formatting_lit) - {if(typeof formatting_lit === "number") - switch(formatting_lit) - {case 0:return cst$12; - case 1:return cst$13; - case 2:return cst$14; - case 3:return cst$15; - case 4:return cst$16; - case 5:return cst$17; - default:return cst$18} - else - switch(formatting_lit[0]) - {case 0:var str=formatting_lit[1];return str; - case 1:var str$0=formatting_lit[1];return str$0; - default:var c=formatting_lit[1];return cat(cst$19,make$1(1,c))}} - 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_; - for(;;) - {bprint_char_literal(buf,caml_string_get(str,i)); - var _uX_=i + 1 | 0; - if(_uW_ !== i){var i=_uX_;continue} - break}} - return 0} - function bprint_fmtty(buf,fmtty) - {var fmtty$0=fmtty; - for(;;) - if(typeof fmtty$0 === "number") - return 0; - else - switch(fmtty$0[0]) - {case 0: - var rest=fmtty$0[1]; - buffer_add_string(buf,cst_c); - var fmtty$0=rest; - continue; - case 1: - var rest$0=fmtty$0[1]; - buffer_add_string(buf,cst_s); - var fmtty$0=rest$0; - continue; - case 2: - var rest$1=fmtty$0[1]; - buffer_add_string(buf,cst_i); - var fmtty$0=rest$1; - continue; - case 3: - var rest$2=fmtty$0[1]; - buffer_add_string(buf,cst_li); - var fmtty$0=rest$2; - continue; - case 4: - var rest$3=fmtty$0[1]; - buffer_add_string(buf,cst_ni); - var fmtty$0=rest$3; - continue; - case 5: - var rest$4=fmtty$0[1]; - buffer_add_string(buf,cst_Li); - var fmtty$0=rest$4; - continue; - case 6: - var rest$5=fmtty$0[1]; - buffer_add_string(buf,cst_f); - var fmtty$0=rest$5; - continue; - case 7: - var rest$6=fmtty$0[1]; - buffer_add_string(buf,cst_B); - var fmtty$0=rest$6; - continue; - case 8: - var rest$7=fmtty$0[2],sub_fmtty=fmtty$0[1]; - buffer_add_string(buf,cst$21); - bprint_fmtty(buf,sub_fmtty); - buffer_add_string(buf,cst$22); - var fmtty$0=rest$7; - continue; - case 9: - var rest$8=fmtty$0[3],sub_fmtty$0=fmtty$0[1]; - buffer_add_string(buf,cst$23); - bprint_fmtty(buf,sub_fmtty$0); - buffer_add_string(buf,cst$24); - var fmtty$0=rest$8; - continue; - case 10: - var rest$9=fmtty$0[1]; - buffer_add_string(buf,cst_a); - var fmtty$0=rest$9; - continue; - case 11: - var rest$10=fmtty$0[1]; - buffer_add_string(buf,cst_t$0); - var fmtty$0=rest$10; - continue; - case 12: - var rest$11=fmtty$0[1]; - buffer_add_string(buf,cst$25); - var fmtty$0=rest$11; - continue; - case 13: - var rest$12=fmtty$0[1]; - buffer_add_string(buf,cst_r$0); - var fmtty$0=rest$12; - continue; - default: - var rest$13=fmtty$0[1]; - buffer_add_string(buf,cst_r$1); - var fmtty$0=rest$13; - continue}} - function int_of_custom_arity(param) - {if(param){var x=param[1];return 1 + int_of_custom_arity(x) | 0}return 0} - function string_of_fmt(fmt) - {var buf=buffer_create(16); - function fmtiter(fmt,ign_flag) - {var fmt$0=fmt,ign_flag$0=ign_flag; - a: - for(;;) - if(typeof fmt$0 === "number") - return 0; - else - switch(fmt$0[0]) - {case 0: - var rest=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - buffer_add_char(buf,99); - var fmt$0=rest,ign_flag$0=0; - continue; - case 1: - var rest$0=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - buffer_add_char(buf,67); - var fmt$0=rest$0,ign_flag$0=0; - continue; - case 2: - var rest$1=fmt$0[2],pad=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - bprint_padding(buf,pad); - buffer_add_char(buf,115); - var fmt$0=rest$1,ign_flag$0=0; - continue; - case 3: - var rest$2=fmt$0[2],pad$0=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - bprint_padding(buf,pad$0); - buffer_add_char(buf,83); - var fmt$0=rest$2,ign_flag$0=0; - continue; - case 4: - var rest$3=fmt$0[4],prec=fmt$0[3],pad$1=fmt$0[2],iconv=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - bprint_iconv_flag(buf,iconv); - bprint_padding(buf,pad$1); - bprint_precision(buf,prec); - buffer_add_char(buf,char_of_iconv(iconv)); - var fmt$0=rest$3,ign_flag$0=0; - continue; - case 5: - var - rest$4=fmt$0[4], - prec$0=fmt$0[3], - pad$2=fmt$0[2], - iconv$0=fmt$0[1]; - bprint_altint_fmt(buf,ign_flag$0,iconv$0,pad$2,prec$0,108); - var fmt$0=rest$4,ign_flag$0=0; - continue; - case 6: - var - rest$5=fmt$0[4], - prec$1=fmt$0[3], - pad$3=fmt$0[2], - iconv$1=fmt$0[1]; - bprint_altint_fmt(buf,ign_flag$0,iconv$1,pad$3,prec$1,110); - var fmt$0=rest$5,ign_flag$0=0; - continue; - case 7: - var - rest$6=fmt$0[4], - prec$2=fmt$0[3], - pad$4=fmt$0[2], - iconv$2=fmt$0[1]; - bprint_altint_fmt(buf,ign_flag$0,iconv$2,pad$4,prec$2,76); - var fmt$0=rest$6,ign_flag$0=0; - continue; - case 8: - var - rest$7=fmt$0[4], - prec$3=fmt$0[3], - pad$5=fmt$0[2], - fconv=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - bprint_fconv_flag(buf,fconv); - bprint_padding(buf,pad$5); - bprint_precision(buf,prec$3); - buffer_add_char(buf,char_of_fconv(0,fconv)); - var fmt$0=rest$7,ign_flag$0=0; - continue; - case 9: - var rest$8=fmt$0[2],pad$6=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - bprint_padding(buf,pad$6); - buffer_add_char(buf,66); - var fmt$0=rest$8,ign_flag$0=0; - continue; - case 10: - var rest$9=fmt$0[1]; - buffer_add_string(buf,cst$26); - var fmt$0=rest$9; - continue; - case 11: - var rest$10=fmt$0[2],str=fmt$0[1]; - bprint_string_literal(buf,str); - var fmt$0=rest$10; - continue; - case 12: - var rest$11=fmt$0[2],chr$0=fmt$0[1]; - bprint_char_literal(buf,chr$0); - var fmt$0=rest$11; - continue; - case 13: - var rest$12=fmt$0[3],fmtty=fmt$0[2],pad_opt=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - bprint_pad_opt(buf,pad_opt); - buffer_add_char(buf,123); - bprint_fmtty(buf,fmtty); - buffer_add_char(buf,37); - buffer_add_char(buf,125); - var fmt$0=rest$12,ign_flag$0=0; - continue; - case 14: - var rest$13=fmt$0[3],fmtty$0=fmt$0[2],pad_opt$0=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - bprint_pad_opt(buf,pad_opt$0); - buffer_add_char(buf,40); - bprint_fmtty(buf,fmtty$0); - buffer_add_char(buf,37); - buffer_add_char(buf,41); - var fmt$0=rest$13,ign_flag$0=0; - continue; - case 15: - var rest$14=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - buffer_add_char(buf,97); - var fmt$0=rest$14,ign_flag$0=0; - continue; - case 16: - var rest$15=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - buffer_add_char(buf,116); - var fmt$0=rest$15,ign_flag$0=0; - continue; - case 17: - var rest$16=fmt$0[2],fmting_lit=fmt$0[1]; - bprint_string_literal(buf,string_of_formatting_lit(fmting_lit)); - var fmt$0=rest$16; - continue; - case 18: - var rest$17=fmt$0[2],fmting_gen=fmt$0[1]; - if(0 === fmting_gen[0]) - {var match$1=fmting_gen[1],str$0=match$1[2]; - buffer_add_string(buf,cst$27); - buffer_add_string(buf,str$0)} - else - {var match$2=fmting_gen[1],str$1=match$2[2]; - buffer_add_string(buf,cst$28); - buffer_add_string(buf,str$1)} - var fmt$0=rest$17; - continue; - case 19: - var rest$18=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - buffer_add_char(buf,114); - var fmt$0=rest$18,ign_flag$0=0; - continue; - case 20: - var rest$19=fmt$0[3],char_set=fmt$0[2],width_opt=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - bprint_pad_opt(buf,width_opt); - var - print_char= - function(buf,i) - {var c=char_of_int(i); - return 37 === c - ?(buffer_add_char(buf,37),buffer_add_char(buf,37)) - :64 === c - ?(buffer_add_char(buf,37),buffer_add_char(buf,64)) - :buffer_add_char(buf,c)}; - buffer_add_char(buf,91); - var - _uL_= - 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 is_alone(c) - {var - after=chr(c + 1 | 0), - before=chr(c - 1 | 0), - _uR_=is_in_char_set(_uQ_,c); - if(_uR_) - var - _uS_=is_in_char_set(_uQ_,before), - _uT_=_uS_?is_in_char_set(_uQ_,after):_uS_, - _uU_=1 - _uT_; - else - var _uU_=_uR_; - return _uU_} - return is_alone}, - is_alone=is_alone$0(_uL_); - 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))) - {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) - if(210 <= switcher)print_char(buf,255);else switch$0 = 1; - else - {if(46 < switcher - 1 >>> 0) - {var i$2=i + 1 | 0,i=i$2;continue} - switch$0 = 1} - if(switch$0) - {var i$1=i + 1 | 0; - if(! is_in_char_set(_uL_,char_of_int(i$1))) - {print_char(buf,i$1 - 1 | 0); - var i$6=i$1 + 1 | 0,i=i$6; - continue} - var - match$0=char_of_int(i$1), - switcher$0=match$0 - 45 | 0, - switch$1=0; - if(48 < switcher$0 >>> 0) - if(210 <= switcher$0) - {print_char(buf,254);print_char(buf,255)} - else - switch$1 = 1; - else - if(46 < switcher$0 - 1 >>> 0) - {if(! is_in_char_set(_uL_,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} - switch$1 = 1} - else - switch$1 = 1; - if(switch$1) - {if(! is_in_char_set(_uL_,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))) - {var j$1=j$0 + 1 | 0,j$0=j$1;continue} - print_char(buf,i$3); - print_char(buf,45); - print_char(buf,j$0 - 1 | 0); - if(j$0 < 256){var i$7=j$0 + 1 | 0,i=i$7;continue b} - break}}}} - if(is_alone(45))buffer_add_char(buf,45); - buffer_add_char(buf,93); - var fmt$0=rest$19,ign_flag$0=0; - continue a} - case 21: - var rest$20=fmt$0[2],counter=fmt$0[1]; - 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_); - var fmt$0=rest$20,ign_flag$0=0; - continue; - case 22: - var rest$21=fmt$0[1]; - buffer_add_char(buf,37); - bprint_ignored_flag(buf,ign_flag$0); - bprint_string_literal(buf,cst_0c); - var fmt$0=rest$21,ign_flag$0=0; - continue; - case 23: - var - rest$22=fmt$0[2], - ign=fmt$0[1], - match$3=param_format_of_ignored_format(ign,rest$22), - fmt$1=match$3[1], - fmt$0=fmt$1, - ign_flag$0=1; - continue; - default: - 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_; - 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} - break}} - var fmt$0=rest$23,ign_flag$0=0; - continue}} - fmtiter(fmt,0); - return buffer_contents(buf)} - function symm(param) - {if(typeof param === "number") - return 0; - else - switch(param[0]) - {case 0:var rest=param[1];return [0,symm(rest)]; - case 1:var rest$0=param[1];return [1,symm(rest$0)]; - case 2:var rest$1=param[1];return [2,symm(rest$1)]; - case 3:var rest$2=param[1];return [3,symm(rest$2)]; - case 4:var rest$3=param[1];return [4,symm(rest$3)]; - case 5:var rest$4=param[1];return [5,symm(rest$4)]; - case 6:var rest$5=param[1];return [6,symm(rest$5)]; - case 7:var rest$6=param[1];return [7,symm(rest$6)]; - case 8:var rest$7=param[2],ty=param[1];return [8,ty,symm(rest$7)]; - case 9: - var rest$8=param[3],ty2=param[2],ty1=param[1]; - return [9,ty2,ty1,symm(rest$8)]; - case 10:var rest$9=param[1];return [10,symm(rest$9)]; - case 11:var rest$10=param[1];return [11,symm(rest$10)]; - 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 trans(ty1,ty2) - {var switch$0=0; - if(typeof ty1 === "number") - if(typeof ty2 === "number") - return 0; - else - switch(ty2[0]) - {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; - case 8:switch$0 = 5;break; - case 9:switch$0 = 6;break; - default:throw [0,Assert_failure,_ah_]} - else - switch(ty1[0]) - {case 0: - var switch$1=0,_us_=ty1[1]; - if(typeof ty2 !== "number") - switch(ty2[0]) - {case 0:var rest2=ty2[1];return [0,trans(_us_,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; - case 11:switch$0 = 1;switch$1 = 1;break; - case 12:switch$0 = 2;switch$1 = 1;break; - case 13:switch$0 = 3;switch$1 = 1;break; - case 14:switch$0 = 4;switch$1 = 1;break - } - if(! switch$1)switch$0 = 7; - break; - case 1: - var switch$2=0,_ut_=ty1[1]; - if(typeof ty2 !== "number") - switch(ty2[0]) - {case 1:var rest2$0=ty2[1];return [1,trans(_ut_,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; - case 11:switch$0 = 1;switch$2 = 1;break; - case 12:switch$0 = 2;switch$2 = 1;break; - case 13:switch$0 = 3;switch$2 = 1;break; - case 14:switch$0 = 4;switch$2 = 1;break - } - if(! switch$2)switch$0 = 7; - break; - case 2: - var switch$3=0,_uu_=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 8:switch$0 = 5;break; - case 9:switch$0 = 6;break; - 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$3 = 1} - if(switch$3)switch$0 = 7; - break; - case 3: - var switch$4=0,_uv_=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 8:switch$0 = 5;break; - case 9:switch$0 = 6;break; - 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$4 = 1} - if(switch$4)switch$0 = 7; - break; - case 4: - var switch$5=0,_uw_=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 8:switch$0 = 5;break; - case 9:switch$0 = 6;break; - 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$5 = 1} - if(switch$5)switch$0 = 7; - break; - case 5: - var switch$6=0,_ux_=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 8:switch$0 = 5;break; - case 9:switch$0 = 6;break; - 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$6 = 1} - if(switch$6)switch$0 = 7; - break; - case 6: - var switch$7=0,_uy_=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 8:switch$0 = 5;break; - case 9:switch$0 = 6;break; - 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$7 = 1} - if(switch$7)switch$0 = 7; - break; - case 7: - var switch$8=0,_uz_=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 8:switch$0 = 5;break; - case 9:switch$0 = 6;break; - 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$8 = 1} - if(switch$8)switch$0 = 7; - break; - case 8: - var switch$9=0,_uA_=ty1[2],_uB_=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_]; - 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_]; - break; - case 9: - var switch$10=0,_uD_=ty1[3],_uE_=ty1[2],_uF_=ty1[1]; - if(typeof ty2 === "number") - switch$10 = 1; - else - switch(ty2[0]) - {case 8:switch$0 = 5;break; - case 9: - var - rest2$8=ty2[3], - ty22=ty2[2], - ty21=ty2[1], - ty=trans(symm(_uE_),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)]; - 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_]; - break; - case 10: - var _uG_=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_]; - case 11: - var switch$11=0,_uH_=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)]; - default:switch$11 = 1} - if(switch$11)throw [0,Assert_failure,_at_]; - break; - case 12: - var switch$12=0,_uI_=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)]; - default:switch$12 = 1} - if(switch$12)throw [0,Assert_failure,_au_]; - break; - case 13: - var switch$13=0,_uJ_=ty1[1]; - if(typeof ty2 === "number") - switch$13 = 1; - else - switch(ty2[0]) - {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)]; - default:switch$13 = 1} - if(switch$13)throw [0,Assert_failure,_av_]; - break; - default: - var switch$14=0,_uK_=ty1[1]; - if(typeof ty2 === "number") - switch$14 = 1; - else - switch(ty2[0]) - {case 10:break; - 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)]; - default:switch$14 = 1} - if(switch$14)throw [0,Assert_failure,_aw_]} - 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} - function fmtty_of_padding_fmtty(pad,fmtty) - {return typeof pad === "number"?fmtty:0 === pad[0]?fmtty:[2,fmtty]} - function fmtty_of_custom(arity,fmtty) - {if(arity) - {var arity$0=arity[1];return [12,fmtty_of_custom(arity$0,fmtty)]} - return fmtty} - function fmtty_of_fmt(fmtty) - {var fmtty$0=fmtty; - for(;;) - if(typeof fmtty$0 === "number") - return 0; - else - switch(fmtty$0[0]) - {case 0:var rest=fmtty$0[1];return [0,fmtty_of_fmt(rest)]; - case 1:var rest$0=fmtty$0[1];return [0,fmtty_of_fmt(rest$0)]; - case 2: - var rest$1=fmtty$0[2],pad=fmtty$0[1]; - return fmtty_of_padding_fmtty(pad,[1,fmtty_of_fmt(rest$1)]); - case 3: - var rest$2=fmtty$0[2],pad$0=fmtty$0[1]; - return fmtty_of_padding_fmtty(pad$0,[1,fmtty_of_fmt(rest$2)]); - case 4: - var - rest$3=fmtty$0[4], - prec=fmtty$0[3], - pad$1=fmtty$0[2], - ty_rest=fmtty_of_fmt(rest$3), - prec_ty=fmtty_of_precision_fmtty(prec,[2,ty_rest]); - return fmtty_of_padding_fmtty(pad$1,prec_ty); - case 5: - var - rest$4=fmtty$0[4], - prec$0=fmtty$0[3], - pad$2=fmtty$0[2], - ty_rest$0=fmtty_of_fmt(rest$4), - prec_ty$0=fmtty_of_precision_fmtty(prec$0,[3,ty_rest$0]); - return fmtty_of_padding_fmtty(pad$2,prec_ty$0); - case 6: - var - rest$5=fmtty$0[4], - prec$1=fmtty$0[3], - pad$3=fmtty$0[2], - ty_rest$1=fmtty_of_fmt(rest$5), - prec_ty$1=fmtty_of_precision_fmtty(prec$1,[4,ty_rest$1]); - return fmtty_of_padding_fmtty(pad$3,prec_ty$1); - case 7: - var - rest$6=fmtty$0[4], - prec$2=fmtty$0[3], - pad$4=fmtty$0[2], - ty_rest$2=fmtty_of_fmt(rest$6), - prec_ty$2=fmtty_of_precision_fmtty(prec$2,[5,ty_rest$2]); - return fmtty_of_padding_fmtty(pad$4,prec_ty$2); - case 8: - var - rest$7=fmtty$0[4], - prec$3=fmtty$0[3], - pad$5=fmtty$0[2], - ty_rest$3=fmtty_of_fmt(rest$7), - prec_ty$3=fmtty_of_precision_fmtty(prec$3,[6,ty_rest$3]); - return fmtty_of_padding_fmtty(pad$5,prec_ty$3); - case 9: - var rest$8=fmtty$0[2],pad$6=fmtty$0[1]; - return fmtty_of_padding_fmtty(pad$6,[7,fmtty_of_fmt(rest$8)]); - case 10:var fmtty$1=fmtty$0[1],fmtty$0=fmtty$1;continue; - case 11:var fmtty$2=fmtty$0[2],fmtty$0=fmtty$2;continue; - case 12:var fmtty$3=fmtty$0[2],fmtty$0=fmtty$3;continue; - case 13: - var rest$9=fmtty$0[3],ty=fmtty$0[2]; - return [8,ty,fmtty_of_fmt(rest$9)]; - case 14: - var rest$10=fmtty$0[3],ty$0=fmtty$0[2]; - return [9,ty$0,ty$0,fmtty_of_fmt(rest$10)]; - case 15:var rest$11=fmtty$0[1];return [10,fmtty_of_fmt(rest$11)]; - case 16:var rest$12=fmtty$0[1];return [11,fmtty_of_fmt(rest$12)]; - case 17:var fmtty$4=fmtty$0[2],fmtty$0=fmtty$4;continue; - case 18: - var - rest$13=fmtty$0[2], - fmting_gen=fmtty$0[1], - _t4_=fmtty_of_fmt(rest$13); - if(0 === fmting_gen[0]) - var match=fmting_gen[1],fmt=match[1],_t5_=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_); - 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)]; - case 22:var rest$17=fmtty$0[1];return [0,fmtty_of_fmt(rest$17)]; - case 23: - var rest$18=fmtty$0[2],ign=fmtty$0[1]; - if(typeof ign === "number") - switch(ign) - {case 0:var fmtty$0=rest$18;continue; - case 1:var fmtty$0=rest$18;continue; - case 2:return [14,fmtty_of_fmt(rest$18)]; - default:var fmtty$0=rest$18;continue} - else - switch(ign[0]) - {case 0:var fmtty$0=rest$18;continue; - case 1:var fmtty$0=rest$18;continue; - case 2:var fmtty$0=rest$18;continue; - case 3:var fmtty$0=rest$18;continue; - case 4:var fmtty$0=rest$18;continue; - case 5:var fmtty$0=rest$18;continue; - case 6:var fmtty$0=rest$18;continue; - case 7:var fmtty$0=rest$18;continue; - case 8:var fmtty$0=rest$18;continue; - case 9: - var fmtty$5=ign[2]; - return concat_fmtty(fmtty$5,fmtty_of_fmt(rest$18)); - case 10:var fmtty$0=rest$18;continue; - default:var fmtty$0=rest$18;continue} - default: - var rest$19=fmtty$0[3],arity=fmtty$0[1]; - return fmtty_of_custom(arity,fmtty_of_fmt(rest$19))}} - var - Type_mismatch= - [248,cst_CamlinternalFormat_Type_mi,caml_fresh_oo_id(0)]; - function type_padding(pad,fmtty) - {if(typeof pad === "number") - return [0,0,fmtty]; - else - {if(0 === pad[0]) - {var w=pad[2],padty=pad[1];return [0,[0,padty,w],fmtty]} - if(typeof fmtty !== "number" && 2 === fmtty[0]) - {var rest=fmtty[1],padty$0=pad[1];return [0,[1,padty$0],rest]} - throw Type_mismatch}} - function type_padprec(pad,prec,fmtty) - {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]} - 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 - } - throw Type_mismatch} - function type_format_gen(fmt,fmtty) - {if(typeof fmt === "number") - return [0,0,fmtty]; - else - switch(fmt[0]) - {case 0: - if(typeof fmtty !== "number" && 0 === fmtty[0]) - {var - fmtty_rest=fmtty[1], - fmt_rest=fmt[1], - match=type_format_gen(fmt_rest,fmtty_rest), - fmtty$0=match[2], - fmt$0=match[1]; - return [0,[0,fmt$0],fmtty$0]} - break; - case 1: - if(typeof fmtty !== "number" && 0 === fmtty[0]) - {var - fmtty_rest$0=fmtty[1], - fmt_rest$0=fmt[1], - match$0=type_format_gen(fmt_rest$0,fmtty_rest$0), - fmtty$1=match$0[2], - fmt$1=match$0[1]; - return [0,[1,fmt$1],fmtty$1]} - break; - case 2: - var - 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]) - {var - fmtty_rest$1=_tK_[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]} - 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]) - {var - fmtty_rest$2=_tM_[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]} - throw Type_mismatch; - case 4: - var - fmt_rest$3=fmt[4], - prec=fmt[3], - 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]) - {var - fmtty_rest$3=_tO_[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]} - throw Type_mismatch; - case 5: - var - fmt_rest$4=fmt[4], - prec$1=fmt[3], - 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]) - {var - fmtty_rest$4=_tQ_[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]} - throw Type_mismatch; - case 6: - var - fmt_rest$5=fmt[4], - prec$3=fmt[3], - 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]) - {var - fmtty_rest$5=_tS_[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]} - throw Type_mismatch; - case 7: - var - fmt_rest$6=fmt[4], - prec$5=fmt[3], - 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]) - {var - fmtty_rest$6=_tU_[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]} - throw Type_mismatch; - case 8: - var - fmt_rest$7=fmt[4], - prec$7=fmt[3], - 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]) - {var - fmtty_rest$7=_tW_[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]} - 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]) - {var - fmtty_rest$8=_tY_[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]} - throw Type_mismatch; - case 10: - var - fmt_rest$9=fmt[1], - match$17=type_format_gen(fmt_rest$9,fmtty), - fmtty$10=match$17[2], - fmt$10=match$17[1]; - return [0,[10,fmt$10],fmtty$10]; - case 11: - var - fmt_rest$10=fmt[2], - str=fmt[1], - match$18=type_format_gen(fmt_rest$10,fmtty), - fmtty$11=match$18[2], - fmt$11=match$18[1]; - return [0,[11,str,fmt$11],fmtty$11]; - case 12: - var - fmt_rest$11=fmt[2], - chr=fmt[1], - match$19=type_format_gen(fmt_rest$11,fmtty), - fmtty$12=match$19[2], - fmt$12=match$19[1]; - return [0,[12,chr,fmt$12],fmtty$12]; - case 13: - if(typeof fmtty !== "number" && 8 === fmtty[0]) - {var - fmtty_rest$9=fmtty[2], - sub_fmtty=fmtty[1], - fmt_rest$12=fmt[3], - sub_fmtty$0=fmt[2], - pad_opt=fmt[1]; - if(caml_notequal([0,sub_fmtty$0],[0,sub_fmtty])) - throw Type_mismatch; - var - match$20=type_format_gen(fmt_rest$12,fmtty_rest$9), - fmtty$13=match$20[2], - fmt$13=match$20[1]; - return [0,[13,pad_opt,sub_fmtty,fmt$13],fmtty$13]} - break; - case 14: - if(typeof fmtty !== "number" && 9 === fmtty[0]) - {var - fmtty_rest$10=fmtty[3], - sub_fmtty1=fmtty[1], - 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_)) - throw Type_mismatch; - var - match$21=type_format_gen(fmt_rest$13,erase_rel(fmtty_rest$10)), - fmtty$14=match$21[2], - fmt$14=match$21[1]; - return [0,[14,pad_opt$0,sub_fmtty1,fmt$14],fmtty$14]} - break; - case 15: - if(typeof fmtty !== "number" && 10 === fmtty[0]) - {var - fmtty_rest$11=fmtty[1], - fmt_rest$14=fmt[1], - match$22=type_format_gen(fmt_rest$14,fmtty_rest$11), - fmtty$15=match$22[2], - fmt$15=match$22[1]; - return [0,[15,fmt$15],fmtty$15]} - break; - case 16: - if(typeof fmtty !== "number" && 11 === fmtty[0]) - {var - fmtty_rest$12=fmtty[1], - fmt_rest$15=fmt[1], - match$23=type_format_gen(fmt_rest$15,fmtty_rest$12), - fmtty$16=match$23[2], - fmt$16=match$23[1]; - return [0,[16,fmt$16],fmtty$16]} - break; - case 17: - var - fmt_rest$16=fmt[2], - formatting_lit=fmt[1], - match$24=type_format_gen(fmt_rest$16,fmtty), - fmtty$17=match$24[2], - fmt$17=match$24[1]; - return [0,[17,formatting_lit,fmt$17],fmtty$17]; - case 18: - var fmt_rest$17=fmt[2],formatting_gen=fmt[1]; - if(0 === formatting_gen[0]) - {var - match$28=formatting_gen[1], - str$0=match$28[2], - fmt1=match$28[1], - match$29=type_format_gen(fmt1,fmtty), - fmtty2=match$29[2], - fmt2=match$29[1], - match$30=type_format_gen(fmt_rest$17,fmtty2), - fmtty3=match$30[2], - fmt3=match$30[1]; - return [0,[18,[0,[0,fmt2,str$0]],fmt3],fmtty3]} - var - match$31=formatting_gen[1], - str$1=match$31[2], - fmt1$0=match$31[1], - match$32=type_format_gen(fmt1$0,fmtty), - fmtty2$0=match$32[2], - fmt2$0=match$32[1], - match$33=type_format_gen(fmt_rest$17,fmtty2$0), - fmtty3$0=match$33[2], - fmt3$0=match$33[1]; - return [0,[18,[1,[0,fmt2$0,str$1]],fmt3$0],fmtty3$0]; - case 19: - if(typeof fmtty !== "number" && 13 === fmtty[0]) - {var - fmtty_rest$13=fmtty[1], - fmt_rest$18=fmt[1], - match$25=type_format_gen(fmt_rest$18,fmtty_rest$13), - fmtty$18=match$25[2], - fmt$18=match$25[1]; - return [0,[19,fmt$18],fmtty$18]} - break; - case 20: - if(typeof fmtty !== "number" && 1 === fmtty[0]) - {var - fmtty_rest$14=fmtty[1], - fmt_rest$19=fmt[3], - char_set=fmt[2], - width_opt=fmt[1], - match$26=type_format_gen(fmt_rest$19,fmtty_rest$14), - fmtty$19=match$26[2], - fmt$19=match$26[1]; - return [0,[20,width_opt,char_set,fmt$19],fmtty$19]} - break; - case 21: - if(typeof fmtty !== "number" && 2 === fmtty[0]) - {var - fmtty_rest$15=fmtty[1], - fmt_rest$20=fmt[2], - counter=fmt[1], - match$27=type_format_gen(fmt_rest$20,fmtty_rest$15), - fmtty$20=match$27[2], - fmt$20=match$27[1]; - return [0,[21,counter,fmt$20],fmtty$20]} - break; - case 23: - var rest=fmt[2],ign=fmt[1]; - if(typeof ign === "number") - switch(ign) - {case 0:return type_ignored_param_one(ign,rest,fmtty); - case 1:return type_ignored_param_one(ign,rest,fmtty); - case 2: - if(typeof fmtty !== "number" && 14 === fmtty[0]) - {var - fmtty_rest$16=fmtty[1], - match$34=type_format_gen(rest,fmtty_rest$16), - fmtty$21=match$34[2], - fmt$21=match$34[1]; - return [0,[23,2,fmt$21],fmtty$21]} - throw Type_mismatch; - default:return type_ignored_param_one(ign,rest,fmtty)} - else - switch(ign[0]) - {case 0:return type_ignored_param_one(ign,rest,fmtty); - case 1:return type_ignored_param_one(ign,rest,fmtty); - case 2:return type_ignored_param_one(ign,rest,fmtty); - case 3:return type_ignored_param_one(ign,rest,fmtty); - case 4:return type_ignored_param_one(ign,rest,fmtty); - case 5:return type_ignored_param_one(ign,rest,fmtty); - case 6:return type_ignored_param_one(ign,rest,fmtty); - case 7:return type_ignored_param_one(ign,rest,fmtty); - case 8: - var sub_fmtty$2=ign[2],pad_opt$1=ign[1]; - return type_ignored_param_one - ([8,pad_opt$1,sub_fmtty$2],rest,fmtty); - case 9: - 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], - fmtty$22=match$35[2], - fmt$22=match$35[1], - sub_fmtty$4=_t0_[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} - 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), - buf=buffer_create(16); - buffer_add_char(buf,37); - bprint_fconv_flag(buf,fconv); - buffer_add_char(buf,46); - buffer_add_string(buf,caml_string_of_jsbytes("" + prec$0)); - buffer_add_char(buf,symb); - 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_; - 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} - break}} - var - digits=n[1], - buf= - caml_create_bytes - (caml_ml_string_length(s) + ((digits - 1 | 0) / 3 | 0) | 0), - 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_; - 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} - 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 0: - case 13:var _tA_=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))} - 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 0: - case 13:var _tz_=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))} - 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 0: - case 13:var _ty_=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))} - 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 0: - case 13:var _tx_=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))} - function convert_float(fconv,prec,x) - {function hex(param) - {switch(fconv[1]) - {case 0:var sign=45;break; - case 1:var sign=43;break; - default:var sign=32} - return runtime.caml_hexstring_of_float(x,prec,sign)} - function caml_special_val(str) - {var match=runtime.caml_classify_float(x); - return 3 === match - ?x < 0.?cst_neg_infinity:cst_infinity - :4 <= match?cst_nan:str} - switch(fconv[2]) - {case 5: - var - str=caml_format_float(format_of_fconv(fconv,prec),x), - len=caml_ml_string_length(str), - i=0; - for(;;) - {if(i === len) - var _tv_=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} - else - if(21 < _tu_ - 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_)} - case 6:return hex(0); - case 7:return uppercase_ascii$1(hex(0)); - case 8:return caml_special_val(hex(0)); - default:return caml_format_float(format_of_fconv(fconv,prec),x)}} - function string_of_fmtty(fmtty) - {var buf=buffer_create(16); - bprint_fmtty(buf,fmtty); - return buffer_contents(buf)} - function make_printf$0(counter,k,acc,fmt) - {var k$0=k,acc$0=acc,fmt$0=fmt; - for(;;) - if(typeof fmt$0 === "number") - return caml_call1(k$0,acc$0); - else - switch(fmt$0[0]) - {case 0: - var rest=fmt$0[1]; - return function(c) - {var new_acc=[5,acc$0,c];return make_printf(k$0,new_acc,rest)}; - case 1: - var rest$0=fmt$0[1]; - return function(c) - {var - str=escaped(c), - l=caml_ml_string_length(str), - res=make$0(l + 2 | 0,39); - caml_blit_string(str,0,res,1,l); - var new_acc=[4,acc$0,caml_string_of_bytes(res)]; - return make_printf(k$0,new_acc,rest$0)}; - case 2: - var rest$1=fmt$0[2],pad=fmt$0[1]; - return make_padding(k$0,acc$0,rest$1,pad,function(str){return str}); - case 3: - var rest$2=fmt$0[2],pad$0=fmt$0[1]; - return make_padding(k$0,acc$0,rest$2,pad$0,string_to_caml_string); - case 4: - var rest$3=fmt$0[4],prec=fmt$0[3],pad$1=fmt$0[2],iconv=fmt$0[1]; - return make_int_padding_precision - (k$0,acc$0,rest$3,pad$1,prec,convert_int,iconv); - case 5: - var - rest$4=fmt$0[4], - prec$0=fmt$0[3], - pad$2=fmt$0[2], - iconv$0=fmt$0[1]; - return make_int_padding_precision - (k$0,acc$0,rest$4,pad$2,prec$0,convert_int32,iconv$0); - case 6: - var - rest$5=fmt$0[4], - prec$1=fmt$0[3], - pad$3=fmt$0[2], - iconv$1=fmt$0[1]; - return make_int_padding_precision - (k$0,acc$0,rest$5,pad$3,prec$1,convert_nativeint,iconv$1); - case 7: - var - rest$6=fmt$0[4], - prec$2=fmt$0[3], - pad$4=fmt$0[2], - iconv$2=fmt$0[1]; - return make_int_padding_precision - (k$0,acc$0,rest$6,pad$4,prec$2,convert_int64,iconv$2); - case 8: - var rest$7=fmt$0[4],prec$3=fmt$0[3],pad$5=fmt$0[2],fconv=fmt$0[1]; - if(typeof pad$5 === "number") - {if(typeof prec$3 === "number") - return prec$3 - ?function(p,x) - {var str=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); - return make_printf(k$0,[4,acc$0,str],rest$7)}; - var p=prec$3[1]; - return function(x) - {var str=convert_float(fconv,p,x); - 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]; - if(typeof prec$3 === "number") - return prec$3 - ?function(p,x) - {var str=fix_padding(_ts_,_tr_,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); - 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)); - return make_printf(k$0,[4,acc$0,str],rest$7)}} - var _tt_=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)); - 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); - 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)); - return make_printf(k$0,[4,acc$0,str],rest$7)}} - case 9: - var rest$8=fmt$0[2],pad$6=fmt$0[1]; - return make_padding(k$0,acc$0,rest$8,pad$6,string_of_bool); - case 10: - var fmt$1=fmt$0[1],acc$1=[7,acc$0],acc$0=acc$1,fmt$0=fmt$1; - continue; - case 11: - var - fmt$2=fmt$0[2], - str=fmt$0[1], - acc$2=[2,acc$0,str], - acc$0=acc$2, - fmt$0=fmt$2; - continue; - case 12: - var - fmt$3=fmt$0[2], - chr=fmt$0[1], - acc$3=[3,acc$0,chr], - acc$0=acc$3, - fmt$0=fmt$3; - continue; - case 13: - var - rest$9=fmt$0[3], - sub_fmtty=fmt$0[2], - ty=string_of_fmtty(sub_fmtty); - return function(str){return make_printf(k$0,[4,acc$0,ty],rest$9)}; - case 14: - var rest$10=fmt$0[3],fmtty=fmt$0[2]; - return function(param) - {var fmt=param[1]; - return make_printf - (k$0,acc$0,concat_fmt(recast(fmt,fmtty),rest$10))}; - case 15: - var rest$11=fmt$0[1]; - return function(f,x) - {return make_printf - (k$0, - [6,acc$0,function(o){return caml_call2(f,o,x)}], - rest$11)}; - case 16: - var rest$12=fmt$0[1]; - return function(f){return make_printf(k$0,[6,acc$0,f],rest$12)}; - case 17: - var - fmt$4=fmt$0[2], - fmting_lit=fmt$0[1], - acc$4=[0,acc$0,fmting_lit], - acc$0=acc$4, - fmt$0=fmt$4; - continue; - case 18: - var _tp_=fmt$0[1]; - if(0 === _tp_[0]) - {var - rest$13=fmt$0[2], - match=_tp_[1], - fmt$5=match[1], - k$3= - function(acc,k,rest) - {function k$0(kacc) - {return make_printf(k,[1,acc,[0,kacc]],rest)} - return k$0}, - k$1=k$3(acc$0,k$0,rest$13), - k$0=k$1, - acc$0=0, - fmt$0=fmt$5; - continue} - var - rest$14=fmt$0[2], - match$0=_tp_[1], - fmt$6=match$0[1], - k$4= - function(acc,k,rest) - {function k$0(kacc){return make_printf(k,[1,acc,[1,kacc]],rest)} - return k$0}, - k$2=k$4(acc$0,k$0,rest$14), - k$0=k$2, - acc$0=0, - fmt$0=fmt$6; - continue; - case 19:throw [0,Assert_failure,_ay_]; - 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)}; - case 21: - var rest$16=fmt$0[2]; - return function(n) - {var new_acc=[4,acc$0,caml_format_int(cst_u$0,n)]; - return make_printf(k$0,new_acc,rest$16)}; - case 22: - var rest$17=fmt$0[1]; - return function(c) - {var new_acc=[5,acc$0,c];return make_printf(k$0,new_acc,rest$17)}; - case 23: - var rest$18=fmt$0[2],ign=fmt$0[1]; - if(counter < 50) - {var counter$1=counter + 1 | 0; - return make_ignored_param$0(counter$1,k$0,acc$0,ign,rest$18)} - return caml_trampoline_return - (make_ignored_param$0,[0,k$0,acc$0,ign,rest$18]); - default: - var - rest$19=fmt$0[3], - f=fmt$0[2], - arity=fmt$0[1], - _tq_=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 caml_trampoline_return - (make_custom$0,[0,k$0,acc$0,rest$19,arity,_tq_])}} - function make_ignored_param$0(counter,k,acc,ign,fmt) - {if(typeof ign === "number") - switch(ign) - {case 0: - if(counter < 50) - {var counter$0=counter + 1 | 0; - return make_invalid_arg(counter$0,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 1: - if(counter < 50) - {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_]; - default: - if(counter < 50) - {var counter$2=counter + 1 | 0; - return make_invalid_arg(counter$2,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt])} - else - switch(ign[0]) - {case 0: - if(counter < 50) - {var counter$3=counter + 1 | 0; - return make_invalid_arg(counter$3,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 1: - if(counter < 50) - {var counter$4=counter + 1 | 0; - return make_invalid_arg(counter$4,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 2: - if(counter < 50) - {var counter$5=counter + 1 | 0; - return make_invalid_arg(counter$5,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 3: - if(counter < 50) - {var counter$6=counter + 1 | 0; - return make_invalid_arg(counter$6,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 4: - if(counter < 50) - {var counter$7=counter + 1 | 0; - return make_invalid_arg(counter$7,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 5: - if(counter < 50) - {var counter$8=counter + 1 | 0; - return make_invalid_arg(counter$8,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 6: - if(counter < 50) - {var counter$9=counter + 1 | 0; - return make_invalid_arg(counter$9,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 7: - if(counter < 50) - {var counter$10=counter + 1 | 0; - return make_invalid_arg(counter$10,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 8: - if(counter < 50) - {var counter$11=counter + 1 | 0; - return make_invalid_arg(counter$11,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 9: - var fmtty=ign[2]; - if(counter < 50) - {var counter$14=counter + 1 | 0; - return make_from_fmtty$0(counter$14,k,acc,fmtty,fmt)} - return caml_trampoline_return(make_from_fmtty$0,[0,k,acc,fmtty,fmt]); - case 10: - if(counter < 50) - {var counter$12=counter + 1 | 0; - return make_invalid_arg(counter$12,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - default: - if(counter < 50) - {var counter$13=counter + 1 | 0; - return make_invalid_arg(counter$13,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt])}} - function make_from_fmtty$0(counter,k,acc,fmtty,fmt) - {if(typeof fmtty === "number") - {if(counter < 50) - {var counter$0=counter + 1 | 0; - return make_invalid_arg(counter$0,k,acc,fmt)} - return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt])} - else - switch(fmtty[0]) - {case 0: - var rest=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest,fmt)}; - case 1: - var rest$0=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest$0,fmt)}; - case 2: - var rest$1=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest$1,fmt)}; - case 3: - var rest$2=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest$2,fmt)}; - case 4: - var rest$3=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest$3,fmt)}; - case 5: - var rest$4=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest$4,fmt)}; - case 6: - var rest$5=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest$5,fmt)}; - case 7: - var rest$6=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest$6,fmt)}; - case 8: - var rest$7=fmtty[2]; - return function(param){return make_from_fmtty(k,acc,rest$7,fmt)}; - case 9: - var - rest$8=fmtty[3], - ty2=fmtty[2], - ty1=fmtty[1], - ty=trans(symm(ty1),ty2); - return function(param) - {return make_from_fmtty(k,acc,concat_fmtty(ty,rest$8),fmt)}; - case 10: - var rest$9=fmtty[1]; - return function(param,_to_) - {return make_from_fmtty(k,acc,rest$9,fmt)}; - case 11: - var rest$10=fmtty[1]; - return function(param){return make_from_fmtty(k,acc,rest$10,fmt)}; - 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_]}} - function make_invalid_arg(counter,k,acc,fmt) - {var _tn_=[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])} - 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]; - 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])} - function make_printf(k,acc,fmt) - {return caml_trampoline(make_printf$0(0,k,acc,fmt))} - function make_ignored_param(k,acc,ign,fmt) - {return caml_trampoline(make_ignored_param$0(0,k,acc,ign,fmt))} - function make_from_fmtty(k,acc,fmtty,fmt) - {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) - {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 _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") - 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)}}} - function make_iprintf$0(counter,k,o,fmt) - {var k$0=k,fmt$0=fmt; - for(;;) - if(typeof fmt$0 === "number") - return caml_call1(k$0,o); - else - switch(fmt$0[0]) - {case 0: - var rest=fmt$0[1],_sA_=make_iprintf(k$0,o,rest); - return function(_ti_){return _sA_}; - case 1: - var rest$0=fmt$0[1],_sB_=make_iprintf(k$0,o,rest$0); - return function(_th_){return _sB_}; - 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_}} - else - {if(0 === _sC_[0]) - {var rest$2=fmt$0[2],_sE_=make_iprintf(k$0,o,rest$2); - return function(_tg_){return _sE_}} - var - rest$3=fmt$0[2], - _sF_=make_iprintf(k$0,o,rest$3), - _sG_=function(_tf_){return _sF_}; - return function(_te_){return _sG_}} - 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_}} - else - {if(0 === _sH_[0]) - {var rest$5=fmt$0[2],_sJ_=make_iprintf(k$0,o,rest$5); - return function(_tc_){return _sJ_}} - var - rest$6=fmt$0[2], - _sK_=make_iprintf(k$0,o,rest$6), - _sL_=function(_tb_){return _sK_}; - return function(_ta_){return _sL_}} - 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); - case 5: - var rest$8=fmt$0[4],prec$0=fmt$0[3],pad$0=fmt$0[2]; - return fn_of_padding_precision(k$0,o,rest$8,pad$0,prec$0); - case 6: - var rest$9=fmt$0[4],prec$1=fmt$0[3],pad$1=fmt$0[2]; - return fn_of_padding_precision(k$0,o,rest$9,pad$1,prec$1); - case 7: - var rest$10=fmt$0[4],prec$2=fmt$0[3],pad$2=fmt$0[2]; - return fn_of_padding_precision(k$0,o,rest$10,pad$2,prec$2); - case 8: - 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_}} - else - {if(0 === _sM_[0]) - {var rest$13=fmt$0[2],_sO_=make_iprintf(k$0,o,rest$13); - return function(_s__){return _sO_}} - var - rest$14=fmt$0[2], - _sP_=make_iprintf(k$0,o,rest$14), - _sQ_=function(_s9_){return _sP_}; - return function(_s8_){return _sQ_}} - 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_}; - case 14: - var rest$16=fmt$0[3],fmtty=fmt$0[2]; - return function(param) - {var fmt=param[1]; - return make_iprintf(k$0,o,concat_fmt(recast(fmt,fmtty),rest$16))}; - 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_}; - case 16: - var rest$18=fmt$0[1],_sU_=make_iprintf(k$0,o,rest$18); - return function(_s3_){return _sU_}; - 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 - rest$19=fmt$0[2], - match=_sV_[1], - fmt$5=match[1], - k$3= - function(k,rest) - {function k$0(koc){return make_iprintf(k,koc,rest)}return k$0}, - k$1=k$3(k$0,rest$19), - k$0=k$1, - fmt$0=fmt$5; - continue} - var - rest$20=fmt$0[2], - match$0=_sV_[1], - fmt$6=match$0[1], - k$4= - function(k,rest) - {function k$0(koc){return make_iprintf(k,koc,rest)}return k$0}, - k$2=k$4(k$0,rest$20), - k$0=k$2, - fmt$0=fmt$6; - continue; - case 19:throw [0,Assert_failure,_aC_]; - case 20: - var rest$21=fmt$0[3],_sW_=make_iprintf(k$0,o,rest$21); - return function(_s2_){return _sW_}; - case 21: - var rest$22=fmt$0[2],_sX_=make_iprintf(k$0,o,rest$22); - return function(_s1_){return _sX_}; - case 22: - var rest$23=fmt$0[1],_sY_=make_iprintf(k$0,o,rest$23); - return function(_s0_){return _sY_}; - case 23: - var rest$24=fmt$0[2],ign=fmt$0[1],_sZ_=0; - return make_ignored_param - (function(param){return caml_call1(k$0,o)},_sZ_,ign,rest$24); - default: - var rest$25=fmt$0[3],arity=fmt$0[1]; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return fn_of_custom_arity$0(counter$0,k$0,o,rest$25,arity)} - return caml_trampoline_return - (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_}} - if(counter < 50) - {var counter$0=counter + 1 | 0; - return make_iprintf$0(counter$0,k,o,fmt)} - return caml_trampoline_return(make_iprintf$0,[0,k,o,fmt])} - function make_iprintf(k,o,fmt) - {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(;;) - if(typeof acc$0 === "number") - return 0; - else - switch(acc$0[0]) - {case 0: - var - fmting_lit=acc$0[2], - p=acc$0[1], - s=string_of_formatting_lit(fmting_lit); - 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_); - output_string(o,cst$30); - var acc$0=acc$1; - continue} - var acc$2=_r4_[1]; - output_acc(o,_r5_); - output_string(o,cst$31); - var acc$0=acc$2; - continue; - case 6: - var f=acc$0[2],p$2=acc$0[1]; - output_acc(o,p$2); - return caml_call1(f,o); - case 7:var p$3=acc$0[1];output_acc(o,p$3);return caml_ml_flush(o); - case 8: - var msg=acc$0[2],p$4=acc$0[1]; - output_acc(o,p$4); - return invalid_arg(msg); - case 2: - case 4: - var s$0=acc$0[2],p$0=acc$0[1]; - output_acc(o,p$0); - return output_string(o,s$0); - default: - var c=acc$0[2],p$1=acc$0[1]; - output_acc(o,p$1); - return caml_ml_output_char(o,c)}} - function bufput_acc(b,acc) - {var acc$0=acc; - for(;;) - if(typeof acc$0 === "number") - return 0; - else - switch(acc$0[0]) - {case 0: - var - fmting_lit=acc$0[2], - p=acc$0[1], - s=string_of_formatting_lit(fmting_lit); - 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_); - add_string(b,cst$32); - var acc$0=acc$1; - continue} - var acc$2=_r2_[1]; - bufput_acc(b,_r3_); - add_string(b,cst$33); - var acc$0=acc$2; - continue; - case 6: - var f=acc$0[2],p$2=acc$0[1]; - bufput_acc(b,p$2); - return caml_call1(f,b); - case 7:var acc$3=acc$0[1],acc$0=acc$3;continue; - case 8: - var msg=acc$0[2],p$3=acc$0[1]; - bufput_acc(b,p$3); - return invalid_arg(msg); - case 2: - case 4: - var s$0=acc$0[2],p$0=acc$0[1]; - bufput_acc(b,p$0); - return add_string(b,s$0); - default: - var c=acc$0[2],p$1=acc$0[1];bufput_acc(b,p$1);return add_char(b,c)}} - function strput_acc(b,acc) - {var acc$0=acc; - for(;;) - if(typeof acc$0 === "number") - return 0; - else - switch(acc$0[0]) - {case 0: - var - fmting_lit=acc$0[2], - p=acc$0[1], - s=string_of_formatting_lit(fmting_lit); - 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_); - add_string(b,cst$34); - var acc$0=acc$1; - continue} - var acc$2=_r0_[1]; - strput_acc(b,_r1_); - add_string(b,cst$35); - var acc$0=acc$2; - continue; - case 6: - var f=acc$0[2],p$2=acc$0[1]; - strput_acc(b,p$2); - return add_string(b,caml_call1(f,0)); - case 7:var acc$3=acc$0[1],acc$0=acc$3;continue; - case 8: - var msg=acc$0[2],p$3=acc$0[1]; - strput_acc(b,p$3); - return invalid_arg(msg); - case 2: - case 4: - var s$0=acc$0[2],p$0=acc$0[1]; - strput_acc(b,p$0); - return add_string(b,s$0); - default: - var c=acc$0[2],p$1=acc$0[1];strput_acc(b,p$1);return add_char(b,c)}} - function failwith_message(param) - {var fmt=param[1],buf=create$2(256); - 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_; - var len=caml_ml_string_length(str); - function invalid_box(param) - {return caml_call1(failwith_message(_aE_),str)} - function parse_spaces(i) - {var i$0=i; - for(;;) - {if(i$0 === len)return i$0; - var match=caml_string_get(str,i$0); - if(9 !== match && 32 !== match)return i$0; - var i$1=i$0 + 1 | 0,i$0=i$1; - continue}} - function parse_lword(i,j) - {var j$0=j; - for(;;) - {if(j$0 === len)return j$0; - var match=caml_string_get(str,j$0); - if(25 < match - 97 >>> 0)return j$0; - var j$1=j$0 + 1 | 0,j$0=j$1; - continue}} - function parse_int(i,j) - {var j$0=j; - for(;;) - {if(j$0 === len)return j$0; - var match=caml_string_get(str,j$0),switch$0=0; - if(48 <= match) - {if(! (58 <= match))switch$0 = 1} - else - if(45 === match)switch$0 = 1; - if(switch$0){var j$1=j$0 + 1 | 0,j$0=j$1;continue} - return j$0}} - var - wstart=parse_spaces(0), - wend=parse_lword(wstart,wstart), - box_name=sub$0(str,wstart,wend - wstart | 0), - nstart=parse_spaces(wend), - nend=parse_int(nstart,nstart); - if(nstart === nend) - var indent=0; - 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_; - var indent=invalid_box(0)} - var exp_end=parse_spaces(nend); - if(exp_end !== len)invalid_box(0); - var switch$0=0; - if - (caml_string_notequal(box_name,cst$37) - && - caml_string_notequal(box_name,cst_b$0)) - var - box_type= - caml_string_notequal(box_name,cst_h) - ?caml_string_notequal(box_name,cst_hov) - ?caml_string_notequal(box_name,cst_hv) - ?caml_string_notequal(box_name,cst_v)?invalid_box(0):1 - :2 - :3 - :0; - else - switch$0 = 1; - if(switch$0)var box_type=4; - return [0,indent,box_type]} - function make_padding_fmt_ebb(pad,fmt) - {if(typeof pad === "number") - return [0,0,fmt]; - else - {if(0 === pad[0]){var w=pad[2],s=pad[1];return [0,[0,s,w],fmt]} - var s$0=pad[1]; - return [0,[1,s$0],fmt]}} - function make_padprec_fmt_ebb(pad,prec,fmt) - {if(typeof prec === "number") - var match=prec?[0,1,fmt]:[0,0,fmt]; - else - var p=prec[1],match=[0,[0,p],fmt]; - var prec$0=match[1]; - if(typeof pad === "number") - return [0,0,prec$0,fmt]; - else - {if(0 === pad[0]){var w=pad[2],s=pad[1];return [0,[0,s,w],prec$0,fmt]} - var s$0=pad[1]; - return [0,[1,s$0],prec$0,fmt]}} - function fmt_ebb_of_string(legacy_behavior,str) - {if(legacy_behavior) - var flag=legacy_behavior[1],legacy_behavior$0=flag; - else - var legacy_behavior$0=1; - function invalid_format_message(str_ind,msg) - {return caml_call3(failwith_message(_aF_),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)} - function expected_character(str_ind,expected,read) - {return caml_call4(failwith_message(_aH_),str,str_ind,expected,read)} - function add_literal(lit_start,str_ind,fmt) - {var size=str_ind - lit_start | 0; - return 0 === size - ?[0,fmt] - :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; - 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,_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) - {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; - default: - return expected_character - (str_ind$0 + 1 | 0,cst_character,125)}} - 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; - 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 - plus_used=[0,0], - hash_used=[0,0], - space_used=[0,0], - ign_used=[0,0], - pad_used=[0,0], - prec_used=[0,0]; - function get_plus(param){plus_used[1] = 1;return plus} - function get_hash(param){hash_used[1] = 1;return hash} - function get_space(param){space_used[1] = 1;return space} - function get_ign(param){ign_used[1] = 1;return ign} - function get_pad(param){pad_used[1] = 1;return pad} - function get_prec(param){prec_used[1] = 1;return prec} - function get_padprec(param){pad_used[1] = 1;return padprec} - function get_int_pad(param) - {var pad=get_pad(0),match=get_prec(0); - if(typeof match === "number" && ! match)return pad; - if(typeof pad === "number") - return 0; - else - {if(0 === pad[0]) - {if(2 <= pad[1]) - {var n=pad[2]; - return legacy_behavior$0 - ?[0,1,n] - :incompatible_flag(pct_ind,str_ind,48,cst_precision$0)} - return pad} - return 2 <= pad[1] - ?legacy_behavior$0 - ?_aN_ - :incompatible_flag(pct_ind,str_ind,48,cst_precision$1) - :pad}} - function check_no_0(symb,pad) - {if(typeof pad === "number") - return pad; - else - {if(0 === pad[0]) - {if(2 <= pad[1]) - {var width=pad[2]; - return legacy_behavior$0 - ?[0,1,width] - :incompatible_flag(pct_ind,str_ind,symb,cst_0$0)} - return pad} - return 2 <= pad[1] - ?legacy_behavior$0 - ?_aO_ - :incompatible_flag(pct_ind,str_ind,symb,cst_0$1) - :pad}} - function opt_of_pad(c,pad) - {if(typeof pad === "number") - return 0; - else - {if(0 === pad[0]) - switch(pad[1]) - {case 0: - var width=pad[2]; - return legacy_behavior$0 - ?[0,width] - :incompatible_flag(pct_ind,str_ind,c,cst$38); - case 1:var width$0=pad[2];return [0,width$0]; - default: - var width$1=pad[2]; - return legacy_behavior$0 - ?[0,width$1] - :incompatible_flag(pct_ind,str_ind,c,cst_0$2)} - return incompatible_flag(pct_ind,str_ind,c,cst$39)}} - function get_pad_opt(c){return opt_of_pad(c,get_pad(0))} - function get_padprec_opt(c){return opt_of_pad(c,get_padprec(0))} - var switch$0=0; - if(124 <= symb) - switch$0 = 1; - else - switch(symb) - {case 33: - var - match$6=parse(str_ind,end_ind), - fmt_rest$5=match$6[1], - fmt_result=[0,[10,fmt_rest$5]]; - break; - case 40: - var - sub_end=search_subformat_end(str_ind,end_ind,41), - match$8=parse(sub_end + 2 | 0,end_ind), - fmt_rest$7=match$8[1], - match$9=parse(str_ind,sub_end), - sub_fmt=match$9[1], - sub_fmtty=fmtty_of_fmt(sub_fmt); - if(get_ign(0)) - var - ignored$2=[9,get_pad_opt(95),sub_fmtty], - _ra_=[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_; - 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_; - break; - case 78: - var - match$16=parse(str_ind,end_ind), - 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]]; - else - var _ri_=[0,[21,counter$0,fmt_rest$14]]; - var fmt_result=_ri_; - break; - case 83: - var - pad$6=check_no_0(symb,get_padprec(0)), - match$17=parse(str_ind,end_ind), - fmt_rest$15=match$17[1]; - if(get_ign(0)) - var - ignored$7=[1,get_padprec_opt(95)], - _rj_=[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_; - break; - case 91: - if(str_ind === end_ind)unexpected_end_of_format(end_ind); - var - char_set=create_char_set(0), - add_char=function(c){return add_in_char_set(char_set,c)}, - add_range= - function(c$0,c) - {if(! (c < c$0)) - {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} - break}} - return 0}, - fail_single_percent= - function(str_ind) - {return caml_call2(failwith_message(_aX_),str,str_ind)}, - parse_char_set_content= - function(counter,str_ind,end_ind) - {var str_ind$0=str_ind; - for(;;) - {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); - var c=caml_string_get(str,str_ind$0); - if(45 === c) - {add_char(45); - 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; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return parse_char_set_after_char$0(counter$0,_rB_,end_ind,c)} - return caml_trampoline_return - (parse_char_set_after_char$0,[0,_rB_,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; - for(;;) - {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); - var c$1=caml_string_get(str,str_ind$0),switch$0=0; - if(46 <= c$1) - {if(64 === c$1) - switch$0 = 1; - else - if(93 === c$1){add_char(c$0);return str_ind$0 + 1 | 0}} - else - if(37 === c$1) - switch$0 = 1; - else - if(45 <= c$1) - {var str_ind$2=str_ind$0 + 1 | 0; - if(str_ind$2 === end_ind)unexpected_end_of_format(end_ind); - var c$2=caml_string_get(str,str_ind$2); - if(37 === c$2) - {if((str_ind$2 + 1 | 0) === end_ind) - unexpected_end_of_format(end_ind); - var c$3=caml_string_get(str,str_ind$2 + 1 | 0); - 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; - if(counter < 50) - {var counter$2=counter + 1 | 0; - return parse_char_set_content(counter$2,_rz_,end_ind)} - return caml_trampoline_return - (parse_char_set_content,[0,_rz_,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; - if(counter < 50) - {var counter$1=counter + 1 | 0; - return parse_char_set_content(counter$1,_rA_,end_ind)} - return caml_trampoline_return - (parse_char_set_content,[0,_rA_,end_ind])} - if(switch$0 && 37 === c$0) - {add_char(c$1); - var _ry_=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 caml_trampoline_return - (parse_char_set_content,[0,_ry_,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; - continue}}, - parse_char_set_after_char= - function(str_ind,end_ind,c) - {return caml_trampoline - (parse_char_set_after_char$0(0,str_ind,end_ind,c))}; - if(str_ind === end_ind)unexpected_end_of_format(end_ind); - var match$31=caml_string_get(str,str_ind); - if(94 === match$31) - var str_ind$0=str_ind + 1 | 0,reverse=1,str_ind$1=str_ind$0; - else - var reverse=0,str_ind$1=str_ind; - if(str_ind$1 === end_ind)unexpected_end_of_format(end_ind); - var - c=caml_string_get(str,str_ind$1), - next_ind=parse_char_set_after_char(str_ind$1 + 1 | 0,end_ind,c), - char_set$0=freeze_char_set(char_set), - char_set$1=reverse?rev_char_set(char_set$0):char_set$0, - match$21=parse(next_ind,end_ind), - fmt_rest$19=match$21[1]; - if(get_ign(0)) - var - ignored$9=[10,get_pad_opt(95),char_set$1], - _ro_=[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_; - break; - case 97: - var - match$22=parse(str_ind,end_ind), - fmt_rest$20=match$22[1], - fmt_result=[0,[15,fmt_rest$20]]; - break; - case 99: - var - char_format= - function(fmt_rest) - {return get_ign(0)?[0,[23,0,fmt_rest]]:[0,[0,fmt_rest]]}, - match$23=parse(str_ind,end_ind), - fmt_rest$21=match$23[1], - match$24=get_pad_opt(99); - 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_; - else - var - _rq_= - legacy_behavior$0 - ?char_format(fmt_rest$21) - :invalid_format_message - (str_ind,cst_non_zero_widths_are_unsupp); - var _rr_=_rq_} - else - var _rr_=char_format(fmt_rest$21); - var fmt_result=_rr_; - 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_; - break; - case 115: - var - pad$9=check_no_0(symb,get_padprec(0)), - match$26=parse(str_ind,end_ind), - fmt_rest$23=match$26[1]; - if(get_ign(0)) - var - ignored$10=[0,get_padprec_opt(95)], - _rt_=[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_; - break; - case 116: - var - match$28=parse(str_ind,end_ind), - fmt_rest$25=match$28[1], - fmt_result=[0,[16,fmt_rest$25]]; - break; - case 123: - var - sub_end$0=search_subformat_end(str_ind,end_ind,125), - match$29=parse(str_ind,sub_end$0), - sub_fmt$0=match$29[1], - match$30=parse(sub_end$0 + 2 | 0,end_ind), - fmt_rest$26=match$30[1], - sub_fmtty$0=fmtty_of_fmt(sub_fmt$0); - if(get_ign(0)) - var - ignored$11=[8,get_pad_opt(95),sub_fmtty$0], - _ru_=[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_; - break; - case 66: - case 98: - var - pad$3=check_no_0(symb,get_padprec(0)), - match$10=parse(str_ind,end_ind), - fmt_rest$8=match$10[1]; - if(get_ign(0)) - var - ignored$3=[7,get_padprec_opt(95)], - _rb_=[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_; - break; - case 37: - case 64: - var - match$7=parse(str_ind,end_ind), - fmt_rest$6=match$7[1], - fmt_result=[0,[12,symb,fmt_rest$6]]; - break; - case 76: - case 108: - case 110: - var switch$1=0; - if(str_ind !== end_ind) - {var - symb$0=caml_string_get(str,str_ind), - _rv_=symb$0 - 88 | 0, - switch$2=0; - if(! (32 < _rv_ >>> 0)) - switch(_rv_) - {case 0: - case 12: - case 17: - case 23: - case 29: - case 32:var _rh_=1;switch$2 = 1;break - } - if(! switch$2)var _rh_=0; - if(_rh_){switch$0 = 1;switch$1 = 1}} - if(! switch$1) - {var - match$15=parse(str_ind,end_ind), - fmt_rest$13=match$15[1], - switch$3=0; - if(108 <= symb) - {if(! (111 <= symb)) - switch(symb - 108 | 0) - {case 0:var counter=0;switch$3 = 1;break; - case 1:break; - 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(get_ign(0)) - var ignored$5=[11,counter],_rg_=[0,[23,ignored$5,fmt_rest$13]]; - else - var _rg_=[0,[21,counter,fmt_rest$13]]; - var fmt_result=_rg_} - break; - case 32: - case 35: - case 43: - case 45: - case 95: - var - fmt_result= - caml_call3(failwith_message(_aS_),str,pct_ind,symb); - break; - case 88: - case 100: - case 105: - case 111: - case 117: - case 120: - var - _rk_=get_space(0), - _rl_=get_hash(0), - iconv$2= - compute_int_conv(pct_ind,str_ind,get_plus(0),_rl_,_rk_,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]]; - else - var - _rn_=get_prec(0), - match$20=make_padprec_fmt_ebb(get_int_pad(0),_rn_,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_; - break; - case 69: - case 70: - case 71: - case 72: - case 101: - case 102: - 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_]} - 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; - 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_} - else - if(76 === symb) - {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__} - 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} - 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; - for(;;) - {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), - _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) - {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; - 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; - continue}} - 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_}} - function format_of_string_format(str,param) - {var - str$0=param[2], - fmt=param[1], - 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 - CamlinternalFormat= - [0, - is_in_char_set, - rev_char_set, - create_char_set, - add_in_char_set, - freeze_char_set, - param_format_of_ignored_format, - make_printf, - make_iprintf, - output_acc, - bufput_acc, - strput_acc, - type_format, - fmt_ebb_of_string, - format_of_string_fmtty, - format_of_string_format, - char_of_iconv, - string_of_formatting_lit, - string_of_fmtty, - string_of_fmt, - open_box_of_string, - symm, - trans, - recast]; - caml_register_global(807,CamlinternalFormat,"CamlinternalFormat"); - function kfprintf(k,o,param) - {var fmt=param[1],_qG_=0; - return make_printf - (function(acc){output_acc(o,acc);return caml_call1(k,o)}, - _qG_, - fmt)} - function kbprintf(k,b,param) - {var fmt=param[1],_qF_=0; - return make_printf - (function(acc){bufput_acc(b,acc);return caml_call1(k,b)}, - _qF_, - 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 ifprintf(oc,fmt) - {return ikfprintf(function(_qC_){return 0},oc,fmt)} - function ibprintf(b,fmt){return ikfprintf(function(_qB_){return 0},b,fmt)} - function printf(fmt){return fprintf(stdout,fmt)} - function eprintf(fmt){return fprintf(stderr,fmt)} - function ksprintf(k,param) - {var fmt=param[1]; - function k$0(acc) - {var buf=create$2(64); - strput_acc(buf,acc); - return caml_call1(k,contents(buf))} - return make_printf(k$0,0,fmt)} - function sprintf(fmt){return ksprintf(function(s){return s},fmt)} - var - Stdlib_Printf= - [0, - fprintf, - printf, - eprintf, - sprintf, - bprintf, - ifprintf, - ibprintf, - kfprintf, - ikfprintf, - ksprintf, - kbprintf, - ikfprintf, - ksprintf]; - caml_register_global(808,Stdlib_Printf,"Stdlib__Printf"); - var - Bad=[248,cst_Stdlib_Arg_Bad,caml_fresh_oo_id(0)], - Help=[248,cst_Stdlib_Arg_Help,caml_fresh_oo_id(0)], - Stop=[248,cst_Stdlib_Arg_Stop,caml_fresh_oo_id(0)]; - function assoc3(x,l) - {var l$0=l; - for(;;) - {if(l$0) - {var match=l$0[1],y2=match[2],y1=match[1]; - if(caml_equal(y1,x))return y2; - var l$1=l$0[2],l$0=l$1; - continue} - throw Not_found}} - function split$1(s) - {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_]} - function make_symlist(prefix,sep,suffix,l) - {if(l) - {var t=l[2],h=l[1],_qz_=cat(prefix,h); - return cat - (fold_left$0(function(x,y){return cat(x,cat(sep,y))},_qz_,t), - suffix)} - return cst_none} - function help_action(param){throw [0,Stop,_a9_]} - 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_; - var - _qu_= - [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_; - var - add2= - [0, - [0,cst_help$0,[0,help_action],cst_Display_this_list_of_optio$0], - 0]} - return append(speclist,append(_qu_,add2))} - function usage_b(buf,speclist,errmsg) - {caml_call1(bprintf(buf,_a__),errmsg); - var _qr_=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_) - {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_)} - 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 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_}} - 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_}} - 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_}} - function parse_and_expand_argv_dynamic_ - (allow_expand,current,argv,speclist,anonfun,errmsg) - {var initpos=current[1]; - function convert_error(error) - {var - b=create$2(200), - progname= - initpos < argv[1].length - 1 - ?caml_check_bound(argv[1],initpos)[1 + initpos] - :cst$54; - switch(error[0]) - {case 0: - var _qj_=error[1]; - if - (caml_string_notequal(_qj_,cst_help$3) - && - caml_string_notequal(_qj_,cst_help$4)) - caml_call2(bprintf(b,_ba_),progname,_qj_); - break; - case 1: - var expected=error[3],arg=error[2],opt=error[1]; - caml_call4(bprintf(b,_bd_),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)} - usage_b(b,speclist[1],errmsg); - if(! caml_equal(error,_bb_) && ! caml_equal(error,_bc_)) - return [0,Bad,contents(b)]; - return [0,Help,contents(b)]} - current[1]++; - for(;;) - {if(current[1] < argv[1].length - 1) - {try - {var - _p__=current[1], - s=caml_check_bound(argv[1],_p__)[1 + _p__], - 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]), - follow$0=follow$1, - action=_qa_} - catch(_qh_) - {_qh_ = caml_wrap_exception(_qh_); - if(_qh_ !== Not_found)throw _qh_; - 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_} - var - no_arg$0= - function(s,follow) - {function no_arg(param) - {if(follow) - {var arg=follow[1];throw [0,Stop,[1,s,arg,cst_no_argument]]} - return 0} - return no_arg}, - no_arg=no_arg$0(s,follow$0), - get_arg$0= - function(s,follow) - {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_]} - throw [0,Stop,[2,s]]} - return get_arg}, - get_arg=get_arg$0(s,follow$0), - consume_arg$0= - function(follow) - {function consume_arg(param) - {return follow?0:(current[1]++,0)} - return consume_arg}, - consume_arg=consume_arg$0(follow$0), - treat_action$0= - function(s,no_arg,get_arg,consume_arg) - {function treat_action(param) - {switch(param[0]) - {case 0:var f=param[1];no_arg(0);return caml_call1(f,0); - case 1: - var - f$0=param[1], - arg=get_arg(0), - match=bool_of_string_opt$0(arg); - if(match) - {var s$0=match[1];caml_call1(f$0,s$0);return consume_arg(0)} - throw [0,Stop,[1,s,arg,cst_a_boolean]]; - case 2:var r=param[1];no_arg(0);r[1] = 1;return 0; - case 3:var r$0=param[1];no_arg(0);r$0[1] = 0;return 0; - case 4: - var f$1=param[1],arg$0=get_arg(0); - caml_call1(f$1,arg$0); - return consume_arg(0); - case 5: - var r$1=param[1];r$1[1] = get_arg(0);return consume_arg(0); - case 6: - var - f$2=param[1], - arg$1=get_arg(0), - match$0=int_of_string_opt$0(arg$1); - if(match$0) - {var x=match$0[1];caml_call1(f$2,x);return consume_arg(0)} - throw [0,Stop,[1,s,arg$1,cst_an_integer]]; - case 7: - var - r$2=param[1], - arg$2=get_arg(0), - match$1=int_of_string_opt$0(arg$2); - if(match$1) - {var x$0=match$1[1];r$2[1] = x$0;return consume_arg(0)} - throw [0,Stop,[1,s,arg$2,cst_an_integer$0]]; - case 8: - var - f$3=param[1], - arg$3=get_arg(0), - match$2=float_of_string_opt(arg$3); - if(match$2) - {var x$1=match$2[1]; - caml_call1(f$3,x$1); - return consume_arg(0)} - throw [0,Stop,[1,s,arg$3,cst_a_float]]; - case 9: - var - r$3=param[1], - arg$4=get_arg(0), - match$3=float_of_string_opt(arg$4); - if(match$3) - {var x$2=match$3[1];r$3[1] = x$2;return consume_arg(0)} - throw [0,Stop,[1,s,arg$4,cst_a_float$0]]; - case 10: - var specs=param[1]; - no_arg(0); - return iter$2(treat_action,specs); - case 11: - var f$4=param[2],symb=param[1],arg$5=get_arg(0); - if(mem(arg$5,symb)) - {caml_call1(f$4,arg$5);return consume_arg(0)} - throw [0, - Stop, - [1, - s, - arg$5, - cat(cst_one_of,make_symlist(cst$57,cst$56,cst$55,symb))]]; - case 12: - var f$5=param[1]; - 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_]); - consume_arg(0); - continue} - return 0} - case 13: - var f$6=param[1]; - no_arg(0); - 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_]; - consume_arg(0); - continue} - return caml_call1(f$6,rev(acc[1]))} - default: - var f$7=param[1]; - if(1 - allow_expand) - throw [0,Invalid_argument,cst_Arg_Expand_is_is_only_allo]; - var arg$6=get_arg(0),newarg=caml_call1(f$7,arg$6); - consume_arg(0); - var - before=sub$1(argv[1],0,current[1] + 1 | 0), - after= - sub$1 - (argv[1], - current[1] + 1 | 0, - (argv[1].length - 1 - current[1] | 0) - 1 | 0); - argv[1] - = - caml_array_concat([0,before,[0,newarg,[0,after,0]]]); - return 0}} - return treat_action}, - treat_action=treat_action$0(s,no_arg,get_arg,consume_arg); - treat_action(action); - switch$0 = 1} - if(! switch$0)caml_call1(anonfun,s)} - catch(exn$0) - {exn$0 = caml_wrap_exception(exn$0); - if(exn$0[1] === Bad){var m=exn$0[2];throw convert_error([3,m])} - if(exn$0[1] === Stop){var e=exn$0[2];throw convert_error(e)} - throw exn$0; - var exn=exn$0} - current[1]++; - continue} - return 0}} - function parse_and_expand_argv_dynamic - (current,argv,speclist,anonfun,errmsg) - {return parse_and_expand_argv_dynamic_ - (1,current,argv,speclist,anonfun,errmsg)} - function parse_argv_dynamic(opt,argv,speclist,anonfun,errmsg) - {if(opt)var sth=opt[1],current$0=sth;else var current$0=current; - return parse_and_expand_argv_dynamic_ - (0,current$0,[0,argv],speclist,anonfun,errmsg)} - function parse_argv(opt,argv,speclist,anonfun,errmsg) - {if(opt)var sth=opt[1],current$0=sth;else var current$0=current; - return parse_argv_dynamic - ([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_} - 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)} - if(exn[1] === Help) - {var msg$1=exn[2];caml_call1(printf(_bh_),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_} - 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)} - if(exn[1] === Help) - {var msg$1=exn[2];caml_call1(printf(_bj_),msg$1);return exit(0)} - throw exn}} - function parse_expand(l,f,msg) - {try - {var - 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_} - 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)} - if(exn[1] === Help) - {var msg$1=exn[2];caml_call1(printf(_bl_),msg$1);return exit(0)} - throw exn}} - function second_word(s) - {var len=caml_ml_string_length(s); - function loop(n) - {var n$0=n; - for(;;) - {if(len <= n$0)return len; - if(32 === caml_string_get(s,n$0)) - {var n$1=n$0 + 1 | 0,n$0=n$1;continue} - return n$0}} - try - {var n$0=index$0(s,9)} - catch(_p5_) - {_p5_ = caml_wrap_exception(_p5_); - if(_p5_ === Not_found) - {try - {var n=index$0(s,32)} - catch(_p6_) - {_p6_ = caml_wrap_exception(_p6_); - if(_p6_ === Not_found)return len; - throw _p6_} - return loop(n + 1 | 0)} - throw _p5_} - return loop(n$0 + 1 | 0)} - function max_arg_len(cur,param) - {var doc=param[3],spec=param[2],kwd=param[1]; - return 11 === spec[0] - ?max$1(cur,caml_ml_string_length(kwd)) - :max$1(cur,caml_ml_string_length(kwd) + second_word(doc) | 0)} - function replace_leading_tab(s) - {var seen=[0,0]; - return map$6 - (function(c) - {if(9 === c && ! seen[1]){seen[1] = 1;return 32}return c}, - s)} - function align(opt,speclist) - {if(opt)var sth=opt[1],limit=sth;else var limit=max_int; - var - completed=add_help(speclist), - len=fold_left$0(max_arg_len,0,completed), - len$0=min$1(len,limit); - return map$4 - (function(ksd) - {var _p3_=ksd[1],_p4_=ksd[2]; - if(caml_string_notequal(ksd[3],cst$58)) - {if(11 === _p4_[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_, - 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_), - diff=(len$0 - kwd_len | 0) - cutcol | 0; - if(0 < diff) - {var - spaces=make$1(diff,32), - 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 ksd}, - completed)} - function read_aux(trim,sep,file) - {var ic=open_bin$0(file),buf=create$2(200),words=[0,0]; - function stash(param) - {var s=contents(buf); - 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_} - else - var word=s; - words[1] = [0,word,words[1]]; - return clear$1(buf)} - try - {for(;;) - {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) - {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_)} - function write_aux(sep,file,args) - {var oc=open_bin(file); - iter$5(function(s){return caml_call2(fprintf(oc,_bq_),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 - Stdlib_Arg= - [0, - parse, - parse_dynamic, - parse_argv, - parse_argv_dynamic, - parse_and_expand_argv_dynamic, - parse_expand, - Help, - Bad, - usage, - usage_string, - align, - current, - read_arg, - read_arg0, - write_arg, - write_arg0]; - caml_register_global(809,Stdlib_Arg,"Stdlib__Arg"); - var - Stdlib_Atomic= - [0,make,get,set,exchange,compare_and_set,fetch_and_add,incr,decr]; - caml_register_global(810,Stdlib_Atomic,"Stdlib__Atomic"); - var printers=[0,0]; - function field(x,i) - {var f=x[1 + i]; - return is_block(f) - ?caml_obj_tag(f) === 252 - ?caml_call1(sprintf(_bt_),f) - :caml_obj_tag(f) === 253?to_string(f):cst$60 - :caml_call1(sprintf(_bu_),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_)} - function use_printers(x) - {function conv(param) - {var param$0=param; - for(;;) - {if(param$0) - {var tl=param$0[2],hd=param$0[1]; - try - {var switch$0=0,val=caml_call1(hd,x);switch$0 = 1} - catch(_pS_){} - if(switch$0 && val){var s=val[1];return [0,s]} - var param$0=tl; - continue} - return 0}} - return conv(printers[1])} - function to_string_default(x) - {if(x === Out_of_memory)return cst_Out_of_memory; - if(x === Stack_overflow)return cst_Stack_overflow; - if(x[1] === Match_failure) - {var match$0=x[2],char$0=match$0[3],line=match$0[2],file=match$0[1]; - return caml_call5 - (sprintf(locfmt), - file, - line, - char$0, - char$0 + 5 | 0, - cst_Pattern_matching_failed)} - if(x[1] === Assert_failure) - {var - match$1=x[2], - char$1=match$1[3], - line$0=match$1[2], - file$0=match$1[1]; - return caml_call5 - (sprintf(locfmt), - file$0, - line$0, - char$1, - char$1 + 6 | 0, - cst_Assertion_failed)} - if(x[1] === Undefined_recursive_module) - {var - match$2=x[2], - char$2=match$2[3], - line$1=match$2[2], - file$1=match$2[1]; - return caml_call5 - (sprintf(locfmt), - file$1, - line$1, - char$2, - char$2 + 6 | 0, - cst_Undefined_recursive_module)} - if(0 === caml_obj_tag(x)) - {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_); - 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_)} - return x[1]} - function to_string$6(e) - {var match=use_printers(e); - if(match){var s=match[1];return s} - return to_string_default(e)} - function print(fct,arg) - {try - {var _pN_=caml_call1(fct,arg);return _pN_} - catch(x) - {x = caml_wrap_exception(x); - var _pM_=to_string$6(x); - caml_call1(eprintf(_by_),_pM_); - caml_ml_flush(stderr); - throw x}} - function catch$0(fct,arg) - {try - {var _pL_=caml_call1(fct,arg);return _pL_} - catch(x) - {x = caml_wrap_exception(x); - caml_ml_flush(stdout); - var _pK_=to_string$6(x); - caml_call1(eprintf(_bz_),_pK_); - return exit(2)}} - function raw_backtrace_entries(bt){return bt} - function convert_raw_backtrace(bt) - {return [0,runtime.caml_convert_raw_backtrace(bt)]} - function format_backtrace_slot(pos,slot) - {function info(is_raise) - {return is_raise - ?0 === pos?cst_Raised_at:cst_Re_raised_at - :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]); - return [0, - caml_call7(sprintf(_bA_),_pI_,_pH_,_pG_,_pF_,_pE_,_pD_,_pC_)]} - if(slot[1])return 0; - var _pJ_=info(0); - return [0,caml_call1(sprintf(_bB_),_pJ_)]} - 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_; - 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} - break}} - return 0} - return fprintf(outchan,_bD_)} - 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_; - 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} - break}} - return contents(b)} - return cst_Program_not_linked_with_g_} - function backtrace_slot_is_raise(param) - {return 0 === param[0]?param[1]:param[1]} - function backtrace_slot_is_inline(param){return 0 === param[0]?param[6]:0} - function backtrace_slot_location(param) - {return 0 === param[0]?[0,[0,param[2],param[3],param[4],param[5]]]:0} - function backtrace_slot_defname(param) - {if(0 === param[0] && caml_string_notequal(param[7],cst$65)) - return [0,param[7]]; - return 0} - function backtrace_slots(raw_backtrace) - {var match=convert_raw_backtrace(raw_backtrace); - if(match) - {var backtrace=match[1],i$1=backtrace.length - 1 - 1 | 0,i=i$1; - for(;;) - {if(-1 === i) - var _pv_=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}} - return 0} - function backtrace_slots_of_raw_entry(entry) - {return backtrace_slots([0,entry])} - function raw_backtrace_length(bt){return bt.length - 1} - function get_backtrace(param) - {return raw_backtrace_to_string(caml_get_exception_raw_backtra(0))} - function register_printer(fn) - {for(;;) - {var - 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_}} - 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(); - function default_uncaught_exception_han(exn,raw_backtrace) - {var _pr_=to_string$6(exn); - caml_call1(eprintf(_bG_),_pr_); - 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_])} - return caml_ml_flush(stderr)} - var uncaught_exception_handler=[0,default_uncaught_exception_han]; - function set_uncaught_exception_handler(fn) - {uncaught_exception_handler[1] = fn;return 0} - var empty_backtrace=[0]; - function handle_uncaught_exception(exn,debugger_in_use) - {try - {try - {var - raw_backtrace= - debugger_in_use?empty_backtrace:caml_get_exception_raw_backtra(0); - try {do_at_exit(0)}catch(_pq_){} - try - {var - _pm_=caml_call2(uncaught_exception_handler[1],exn,raw_backtrace), - _pl_=_pm_} - 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_); - print_raw_backtrace(stderr,raw_backtrace); - var _pk_=to_string$6(exn$0); - caml_call1(eprintf(_bI_),_pk_); - 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}} - 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_)} - var - _bM_= - [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_)} - var - Stdlib_Printexc= - [0, - to_string$6, - to_string_default, - print, - catch$0, - print_backtrace, - get_backtrace, - function(_pc_){return runtime.caml_record_backtrace(_pc_)}, - _bO_, - register_printer, - use_printers, - raw_backtrace_entries, - _bN_, - 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_, - _bJ_, - exn_slot_id, - exn_slot_name]; - caml_register_global(811,Stdlib_Printexc,"Stdlib__Printexc"); - function const$0(c,param){return c} - function flip(f,x,y){return caml_call2(f,y,x)} - function negate(p,v){return 1 - caml_call1(p,v)} - var - Finally_raised= - [248,cst_Stdlib_Fun_Finally_raised,caml_fresh_oo_id(0)]; - register_printer - (function(param) - {if(param[1] === Finally_raised) - {var exn=param[2]; - return [0,cat(cst_Fun_Finally_raised,to_string$6(exn))]} - return 0}); - function protect(finally$0,work) - {function finally_no_exn(param) - {try - {var _pb_=caml_call1(finally$0,0);return _pb_} - catch(e) - {e = caml_wrap_exception(e); - var bt=caml_get_exception_raw_backtra(0),exn=[0,Finally_raised,e]; - caml_restore_raw_backtrace(exn,bt); - throw exn}} - try - {var result=caml_call1(work,0)} - catch(work_exn) - {work_exn = caml_wrap_exception(work_exn); - var work_bt=caml_get_exception_raw_backtra(0); - finally_no_exn(0); - caml_restore_raw_backtrace(work_exn,work_bt); - throw work_exn} - finally_no_exn(0); - return result} - 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 - _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_); - 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_)} - function allocated_bytes(param) - {var - match=runtime.caml_gc_counters(0), - ma=match[3], - pro=match[2], - mi=match[1]; - return (mi + ma - pro) * 4} - function create_alarm(f){return [0,1]} - function delete_alarm(a){a[1] = 0;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__]; - 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 - Stdlib_Gc= - [0, - print_stat, - allocated_bytes, - function(_oR_,_oQ_){return runtime.caml_final_register(_oR_,_oQ_)}, - _ce_, - _cd_, - create_alarm, - delete_alarm, - _cc_]; - caml_register_global(813,Stdlib_Gc,"Stdlib__Gc"); - function string(str) - {return caml_md5_string(str,0,caml_ml_string_length(str))} - function bytes(b){return string(caml_string_of_bytes(b))} - function substring(str,ofs,len) - {if - (0 - <= - ofs - && - 0 - <= - len - && - ! - ((caml_ml_string_length(str) - len | 0) < ofs)) - return caml_md5_string(str,ofs,len); - return invalid_arg(cst_Digest_substring)} - function subbytes(b,ofs,len) - {return substring(caml_string_of_bytes(b),ofs,len)} - function file(filename) - {var ic=open_bin$0(filename); - try - {var d=runtime.caml_md5_chan(ic,-1)} - catch(e){e = caml_wrap_exception(e);caml_ml_close_channel(ic);throw e} - caml_ml_close_channel(ic); - 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 to_hex(d) - {if(16 !== caml_ml_string_length(d))invalid_arg(cst_Digest_to_hex); - var result=caml_create_bytes(32),i=0; - for(;;) - {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} - return caml_string_of_bytes(result)}} - function from_hex(s) - {if(32 !== caml_ml_string_length(s))invalid_arg(cst_Digest_from_hex); - function digit(c) - {if(65 <= c) - {if(97 <= c) - {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} - else - if(! (71 <= c))return (c - 65 | 0) + 10 | 0} - else - if(! (9 < c - 48 >>> 0))return c - 48 | 0; - 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)); - 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} - return caml_string_of_bytes(result)}} - var - Stdlib_Digest= - [0, - compare$9, - equal$9, - string, - bytes, - substring, - subbytes, - file, - output$0, - input$0, - to_hex, - from_hex]; - caml_register_global(814,Stdlib_Digest,"Stdlib__Digest"); - function new_state(param){return [0,caml_make_vect(55,0),0]} - function assign(st1,st2) - {blit$1(st2[1],0,st1[1],0,55);st1[2] = st2[2];return 0} - function full_init(s,seed) - {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_; - for(;;) - {var - j=i % 55 | 0, - k=caml_mod(i,l), - 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} - break}} - s[2] = 0; - return 0}} - function make$3(seed) - {var result=new_state(0);full_init(result,seed);return result} - function make_self_init(param){return make$3(caml_sys_random_seed(0))} - function copy$5(s){var result=new_state(0);assign(result,s);return result} - 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, - newval= - caml_check_bound(s[1],_oA_)[1 + _oA_] - + - (curval ^ (curval >>> 25 | 0) & 31) - | - 0, - newval30=newval & 1073741823, - _oB_=s[2]; - caml_check_bound(s[1],_oB_)[1 + _oB_] = newval30; - return newval30} - function intaux(s,n) - {for(;;) - {var r=bits(s),v=caml_mod(r,n); - if(((1073741823 - n | 0) + 1 | 0) < (r - v | 0))continue; - return v}} - function int$0(s,bound) - {if(! (1073741823 < bound) && 0 < bound)return intaux(s,bound); - return invalid_arg(cst_Random_int)} - function full_int(s,bound) - {if(0 < bound) - {if(1073741823 < bound) - for(;;) - {var b1=bits(s),b2=bits(s); - if(bound <= 2147483647) - var bpos=(b2 & 1073725440) << 1 | b1 >>> 15 | 0,r=bpos; - else - var - b3=bits(s), - bpos$0= - ((b3 & 1073741312) << 12 | b2 >>> 9 | 0) - << - 20 - | - b1 - >>> - 10 - | - 0, - r=bpos$0; - var v=caml_mod(r,bound); - if(((2147483647 - bound | 0) + 1 | 0) < (r - v | 0))continue; - return v} - return intaux(s,bound)} - return invalid_arg(cst_Random_full_int)} - function int32(s,bound) - {if(caml_lessequal(bound,0))return invalid_arg(cst_Random_int32); - for(;;) - {var b1=bits(s),b2=(bits(s) & 1) << 30,r=b1 | b2,v=caml_mod(r,bound); - if(caml_greaterthan(r - v | 0,(2147483647 - bound | 0) + 1 | 0)) - continue; - return v}} - function int64(s,bound) - {if(caml_lessequal(bound,_cg_))return invalid_arg(cst_Random_int64); - for(;;) - {var - b1=caml_int64_of_int32(bits(s)), - b2=caml_int64_shift_left(caml_int64_of_int32(bits(s)),30), - b3=caml_int64_shift_left(caml_int64_of_int32(bits(s) & 7),60), - r=caml_int64_or(b1,caml_int64_or(b2,b3)), - v=runtime.caml_int64_mod(r,bound); - if - (caml_greaterthan - (caml_int64_sub(r,v), - caml_int64_add(caml_int64_sub(max_int$2,bound),_cf_))) - continue; - return v}} - function nativeint(s,bound){return int32(s,bound)} - function float$0(s,bound) - {var r1=bits(s),r2=bits(s); - return (r1 / 1073741824. + r2) / 1073741824. * bound} - function bool(s){return 0 === (bits(s) & 1)?1:0} - function bits32(s) - {var b1=bits(s) >>> 14 | 0,b2=bits(s) >>> 14 | 0;return b1 | b2 << 16} - function bits64(s) - {var - b1=caml_int64_shift_right_unsigne(caml_int64_of_int32(bits(s)),9), - b2=caml_int64_shift_right_unsigne(caml_int64_of_int32(bits(s)),9), - b3=caml_int64_shift_right_unsigne(caml_int64_of_int32(bits(s)),8); - return caml_int64_or - (b1, - 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]; - 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)} - function int32$0(bound){return int32(default$0,bound)} - function nativeint$0(bound){return nativeint(default$0,bound)} - function int64$0(bound){return int64(default$0,bound)} - function float$1(scale){return float$0(default$0,scale)} - function bool$0(param){return bool(default$0)} - function bits32$0(param){return bits32(default$0)} - function bits64$0(param){return bits64(default$0)} - function nativebits$0(param){return nativebits(default$0)} - function full_init$0(seed){return full_init(default$0,seed)} - function init$5(seed){return full_init(default$0,[0,seed])} - function self_init(param){return full_init$0(caml_sys_random_seed(0))} - function get_state(param){return copy$5(default$0)} - function set_state(s){return assign(default$0,s)} - var - _ci_= - [0, - make$3, - make_self_init, - copy$5, - bits, - int$0, - full_int, - int32, - nativeint, - int64, - float$0, - bool, - bits32, - bits64, - nativebits], - Stdlib_Random= - [0, - init$5, - full_init$0, - self_init, - bits$0, - int$1, - full_int$0, - int32$0, - nativeint$0, - int64$0, - float$1, - bool$0, - bits32$0, - bits64$0, - nativebits$0, - _ci_, - 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_} - 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_; - 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 - 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)}]; - function power_2_above(x,n) - {var x$0=x; - for(;;) - {if(n <= x$0)return x$0; - if(max_array_length < (x$0 * 2 | 0))return x$0; - var x$1=x$0 * 2 | 0,x$0=x$1; - continue}} - function create$3(opt,initial_size) - {if(opt)var sth=opt[1],random=sth;else var random=randomized[1]; - 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_); - 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_} - function reset$0(h) - {var len=h[2].length - 1; - if(4 <= h.length - 1 && len !== abs(h[4])) - {h[1] = 0;h[2] = caml_make_vect(abs(h[4]),0);return 0} - return clear$2(h)} - function copy_bucketlist(param) - {if(param) - {var - key=param[1], - data=param[2], - next=param[3], - prec$0=[0,key,data,next], - prec=prec$0, - param$0=next; - for(;;) - {if(param$0) - {var - key$0=param$0[1], - data$0=param$0[2], - next$0=param$0[3], - r=[0,key$0,data$0,next$0]; - prec[3] = r; - var prec=r,param$0=next$0; - continue} - 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_]} - 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_; - a: - for(;;) - {var cell$1=caml_check_bound(odata,i$0)[1 + i$0],cell=cell$1; - for(;;) - {if(cell) - {var - key=cell[1], - data=cell[2], - next=cell[3], - cell$0=inplace?cell:[0,key,data,0], - nidx=caml_call1(indexfun,key), - match=caml_check_bound(ndata_tail,nidx)[1 + nidx]; - if(match) - match[3] = cell$0; - else - caml_check_bound(ndata,nidx)[1 + nidx] = cell$0; - 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} - break} - break}} - if(inplace) - {var _ok_=nsize - 1 | 0,_oj_=0; - if(! (_ok_ < 0)) - {var i=_oj_; - 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} - break}} - var _ol_=0} - else - var _ol_=inplace; - return _ol_} - 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_) - {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_} - function iter$10(f,h) - {function do_bucket(param) - {var param$0=param; - for(;;) - {if(param$0) - {var key=param$0[1],data=param$0[2],next=param$0[3]; - caml_call2(f,key,data); - var param$0=next; - continue} - return 0}} - 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_; - for(;;) - {do_bucket(caml_check_bound(d,i)[1 + i]); - var _of_=i + 1 | 0; - if(_oc_ !== i){var i=_of_;continue} - break}} - var _od_=1 - old_trav,_oe_=_od_?flip_ongoing_traversal(h):_od_; - return _oe_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(old_trav)throw exn; - flip_ongoing_traversal(h); - throw exn}} - function filter_map_inplace_bucket(f,h,i,prec,slot) - {var prec$0=prec,slot$0=slot; - for(;;) - {if(slot$0) - {var - key=slot$0[1], - data=slot$0[2], - next=slot$0[3], - match=caml_call2(f,key,data); - if(match) - {var data$0=match[1]; - if(prec$0) - prec$0[3] = slot$0; - else - caml_check_bound(h[2],i)[1 + i] = slot$0; - slot$0[2] = data$0; - var prec$0=slot$0,slot$0=next; - continue} - h[1] = h[1] - 1 | 0; - var slot$0=next; - continue} - return prec$0 - ?(prec$0[3] = 0,0) - :(caml_check_bound(h[2],i)[1 + i] = 0,0)}} - function filter_map_inplace(f,h) - {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_; - 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} - break}} - var _n__=1 - old_trav,_n$_=_n__?flip_ongoing_traversal(h):_n__; - return _n$_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(old_trav)throw exn; - flip_ongoing_traversal(h); - throw exn}} - function fold$4(f,h,init) - {function do_bucket(b,accu) - {var b$0=b,accu$0=accu; - for(;;) - {if(b$0) - {var - key=b$0[1], - data=b$0[2], - next=b$0[3], - accu$1=caml_call3(f,key,data,accu$0), - b$0=next, - accu$0=accu$1; - continue} - return accu$0}} - 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_; - 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} - break}} - if(1 - old_trav)flip_ongoing_traversal(h); - var _n5_=accu[1]; - return _n5_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(old_trav)throw exn; - flip_ongoing_traversal(h); - throw exn}} - function bucket_length(accu,param) - {var accu$0=accu,param$0=param; - for(;;) - {if(param$0) - {var - param$1=param$0[3], - accu$1=accu$0 + 1 | 0, - accu$0=accu$1, - param$0=param$1; - continue} - return accu$0}} - function stats(h) - {var - _nZ_=h[2], - _n0_=0, - mbl= - fold_left$3 - (function(m,b){return max$1(m,bucket_length(0,b))},_n0_,_nZ_), - histo=caml_make_vect(mbl + 1 | 0,0), - _n1_=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_; - return 0}, - _n1_); - return [0,h[1],h[2].length - 1,mbl,histo]} - function to_seq$9(tbl) - {var tbl_data=tbl[2]; - function aux(i,buck,param) - {var i$0=i,buck$0=buck; - 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_)}]} - if(i$0 === tbl_data.length - 1)return 0; - var - buck$1=caml_check_bound(tbl_data,i$0)[1 + i$0], - i$1=i$0 + 1 | 0, - i$0=i$1, - buck$0=buck$1; - continue}} - var _nV_=0,_nW_=0; - return function(_nX_){return aux(_nW_,_nV_,_nX_)}} - 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_)}} - 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_)}} - 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_} - 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_} - 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(;;) - {if(c) - {var k=c[1],next=c[3]; - if(caml_call2(H[1],k,key)) - {h[1] = h[1] - 1 | 0; - return prec - ?(prec[3] = next,0) - :(caml_check_bound(h[2],i)[1 + i] = next,0)} - var prec=c,c=next; - continue} - return 0}} - function find(h,key) - {var _nK_=key_index(h,key),match=caml_check_bound(h[2],_nK_)[1 + _nK_]; - if(match) - {var k1=match[1],d1=match[2],next1=match[3]; - if(caml_call2(H[1],key,k1))return d1; - if(next1) - {var k2=next1[1],d2=next1[2],next2=next1[3]; - if(caml_call2(H[1],key,k2))return d2; - if(next2) - {var k3=next2[1],d3=next2[2],next3=next2[3]; - if(caml_call2(H[1],key,k3))return d3; - var param=next3; - for(;;) - {if(param) - {var k=param[1],data=param[2],next=param[3]; - if(caml_call2(H[1],key,k))return data; - var param=next; - continue} - throw Not_found}} - throw Not_found} - 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_]; - if(match) - {var k1=match[1],d1=match[2],next1=match[3]; - if(caml_call2(H[1],key,k1))return [0,d1]; - if(next1) - {var k2=next1[1],d2=next1[2],next2=next1[3]; - if(caml_call2(H[1],key,k2))return [0,d2]; - if(next2) - {var k3=next2[1],d3=next2[2],next3=next2[3]; - if(caml_call2(H[1],key,k3))return [0,d3]; - var param=next3; - for(;;) - {if(param) - {var k=param[1],data=param[2],next=param[3]; - if(caml_call2(H[1],key,k))return [0,data]; - var param=next; - continue} - return 0}} - return 0} - return 0} - return 0} - function find_all(h,key) - {function find_in_bucket(param) - {var param$0=param; - for(;;) - {if(param$0) - {var k=param$0[1],d=param$0[2],next=param$0[3]; - if(caml_call2(H[1],k,key))return [0,d,find_in_bucket(next)]; - 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_])} - function replace(h,key,data) - {var - i=key_index(h,key), - param$0=caml_check_bound(h[2],i)[1 + i], - param=param$0; - for(;;) - {if(param) - {var k=param[1],next=param[3]; - if(! caml_call2(H[1],k,key)){var param=next;continue} - param[1] = key; - param[2] = data; - var _nF_=0} - else - var _nF_=1; - if(_nF_) - {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_} - else - var _nH_=_nF_; - return _nH_}} - function mem(h,key) - {var - _nE_=key_index(h,key), - param$0=caml_check_bound(h[2],_nE_)[1 + _nE_], - 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 param=next; - continue} - return 0}} - function add_seq(tbl,i) - {return iter - (function(param) - {var v=param[2],k=param[1];return add(tbl,k,v)}, - i)} - function replace_seq(tbl,i) - {return iter - (function(param) - {var v=param[2],k=param[1];return replace(tbl,k,v)}, - i)} - function of_seq(i){var tbl=create$3(0,16);replace_seq(tbl,i);return tbl} - return [0, - create$3, - clear$2, - reset$0, - copy$6, - add, - remove, - find, - find_opt, - find_all, - replace, - mem, - iter$10, - filter_map_inplace, - fold$4, - length$5, - stats, - to_seq$9, - to_seq_keys, - to_seq_values, - add_seq, - replace_seq, - of_seq]} - function Make$0(H) - {var equal=H[1]; - function hash(seed,x){return caml_call1(H[2],x)} - var - include=MakeSeeded([0,equal,hash]), - clear=include[2], - reset=include[3], - copy=include[4], - add=include[5], - remove=include[6], - find=include[7], - find_opt=include[8], - find_all=include[9], - replace=include[10], - mem=include[11], - iter=include[12], - filter_map_inplace=include[13], - fold=include[14], - length=include[15], - stats=include[16], - to_seq=include[17], - to_seq_keys=include[18], - 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)} - function of_seq(i) - {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} - return [0, - create, - clear, - reset, - copy, - add, - remove, - find, - find_opt, - find_all, - replace, - mem, - iter, - filter_map_inplace, - fold, - length, - stats, - to_seq, - to_seq_keys, - to_seq_values, - add_seq, - replace_seq, - of_seq]} - function hash$1(x){return caml_hash(10,100,0,x)} - function hash_param(n1,n2,x){return caml_hash(n1,n2,0,x)} - function seeded_hash(seed,x){return caml_hash(10,100,seed,x)} - function key_index(h,key) - {return 4 <= h.length - 1 - ?caml_hash(10,100,h[3],key) & (h[2].length - 1 - 1 | 0) - :invalid_arg(cst_Hashtbl_unsupported_hash_t)} - function add$0(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 _nB_=h[2].length - 1 << 1 < h[1]?1:0; - return _nB_?resize$0(key_index,h):_nB_} - 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(;;) - {if(c) - {var k=c[1],next=c[3]; - if(0 === caml_compare(k,key)) - {h[1] = h[1] - 1 | 0; - return prec - ?(prec[3] = next,0) - :(caml_check_bound(h[2],i)[1 + i] = next,0)} - var prec=c,c=next; - continue} - return 0}} - function find$1(h,key) - {var _nA_=key_index(h,key),match=caml_check_bound(h[2],_nA_)[1 + _nA_]; - if(match) - {var k1=match[1],d1=match[2],next1=match[3]; - if(0 === caml_compare(key,k1))return d1; - if(next1) - {var k2=next1[1],d2=next1[2],next2=next1[3]; - if(0 === caml_compare(key,k2))return d2; - if(next2) - {var k3=next2[1],d3=next2[2],next3=next2[3]; - if(0 === caml_compare(key,k3))return d3; - var param=next3; - for(;;) - {if(param) - {var k=param[1],data=param[2],next=param[3]; - if(0 === caml_compare(key,k))return data; - var param=next; - continue} - throw Not_found}} - throw Not_found} - 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_]; - if(match) - {var k1=match[1],d1=match[2],next1=match[3]; - if(0 === caml_compare(key,k1))return [0,d1]; - if(next1) - {var k2=next1[1],d2=next1[2],next2=next1[3]; - if(0 === caml_compare(key,k2))return [0,d2]; - if(next2) - {var k3=next2[1],d3=next2[2],next3=next2[3]; - if(0 === caml_compare(key,k3))return [0,d3]; - var param=next3; - for(;;) - {if(param) - {var k=param[1],data=param[2],next=param[3]; - if(0 === caml_compare(key,k))return [0,data]; - var param=next; - continue} - return 0}} - return 0} - return 0} - return 0} - function find_all$0(h,key) - {function find_in_bucket(param) - {var param$0=param; - for(;;) - {if(param$0) - {var k=param$0[1],data=param$0[2],next=param$0[3]; - if(0 === caml_compare(k,key))return [0,data,find_in_bucket(next)]; - 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_])} - function replace(h,key,data) - {var - i=key_index(h,key), - param$0=caml_check_bound(h[2],i)[1 + i], - param=param$0; - for(;;) - {if(param) - {var k=param[1],next=param[3]; - if(0 !== caml_compare(k,key)){var param=next;continue} - param[1] = key; - param[2] = data; - var _nv_=0} - else - var _nv_=1; - if(_nv_) - {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_} - else - var _nx_=_nv_; - return _nx_}} - function mem$2(h,key) - {var - _nu_=key_index(h,key), - param$0=caml_check_bound(h[2],_nu_)[1 + _nu_], - 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 param=next; - continue} - return 0}} - function add_seq$2(tbl,i) - {return iter - (function(param) - {var v=param[2],k=param[1];return add$0(tbl,k,v)}, - i)} - function replace_seq(tbl,i) - {return iter - (function(param) - {var v=param[2],k=param[1];return replace(tbl,k,v)}, - i)} - function of_seq$7(i){var tbl=create$3(0,16);replace_seq(tbl,i);return tbl} - function rebuild(opt,h) - {if(opt)var sth=opt[1],random=sth;else var random=randomized[1]; - 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_); - 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; - insert_all_buckets - (function(_ns_){return key_index(h$0,_ns_)},_nr_,_nq_,_np_); - return h$0} - var - Stdlib_Hashtbl= - [0, - create$3, - clear$2, - reset$0, - copy$6, - add$0, - find$1, - find_opt$1, - find_all$0, - mem$2, - remove, - replace, - iter$10, - filter_map_inplace, - fold$4, - length$5, - randomize, - is_randomized, - rebuild, - stats, - to_seq$9, - to_seq_keys, - to_seq_values, - add_seq$2, - replace_seq, - of_seq$7, - Make$0, - MakeSeeded, - hash$1, - seeded_hash, - hash_param, - 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); - 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_} - 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)} - function get_copy(e,o) - {raise_if_invalid_offset$0(e,o,cst_Weak_get_copy); - return runtime.caml_weak_get_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)} - function blit$4(e1,o1,e2,o2,l) - {if - (0 - <= - l - && - 0 - <= - o1 - && - ! - ((length$6(e1) - l | 0) < o1) - && - 0 - <= - o2 - && - ! - ((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_} - 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 i=ofs; - for(;;) - {set$1(ar,i,x); - var _ne_=i + 1 | 0; - if(_nd_ !== i){var i=_ne_;continue} - break}} - return 0} - throw [0,Invalid_argument,cst_Weak_fill]} - function Make$1(H) - {var emptybucket=weak_create(0); - function get_index(t,h){return caml_mod(h & 2147483647,t[1].length - 1)} - var limit=7; - function create(sz) - {var - sz$0=7 <= sz?sz:7, - sz$1=max_array_length < sz$0?max_array_length:sz$0; - return [0, - caml_make_vect(sz$1,emptybucket), - caml_make_vect(sz$1,[0]), - limit, - 0, - 0]} - function clear(t) - {var _nb_=t[1].length - 1 - 1 | 0,_na_=0; - if(! (_nb_ < 0)) - {var i=_na_; - 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} - break}} - t[3] = limit; - t[4] = 0; - return 0} - function fold(f,t,init) - {var _m$_=t[1],i=0; - return fold_right$2 - (function(b,accu$1) - {var i$0=i,accu=accu$1; - for(;;) - {if(length$6(b) <= i$0)return accu; - var match=get$2(b,i$0); - if(match) - {var - v=match[1], - accu$0=caml_call2(f,v,accu), - i$1=i$0 + 1 | 0, - i$0=i$1, - accu=accu$0; - continue} - var i$2=i$0 + 1 | 0,i$0=i$2; - continue}}, - _m$_, - init)} - function iter(f,t) - {var _m__=t[1],i=0; - return iter$5 - (function(b) - {var i$0=i; - for(;;) - {if(length$6(b) <= i$0)return 0; - var match=get$2(b,i$0); - if(match) - {var v=match[1]; - caml_call1(f,v); - var i$1=i$0 + 1 | 0,i$0=i$1; - continue} - var i$2=i$0 + 1 | 0,i$0=i$2; - continue}}, - _m__)} - 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, - 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; - return fold_right$2 - (function(_m7_,_m8_){return count_bucket(_m6_,_m7_,_m8_)}, - _m5_, - _m4_)} - function add_aux(t,setter,d,h,index) - {var - bucket$0=caml_check_bound(t[1],index)[1 + index], - hashes=caml_check_bound(t[2],index)[1 + index], - sz=length$6(bucket$0), - i$3=0; - for(;;) - {if(sz <= i$3) - {var - newsz= - min$1(((3 * sz | 0) / 2 | 0) + 3 | 0,max_array_length - 2 | 0); - if(newsz <= sz)failwith(cst_Weak_Make_hash_bucket_cann); - var - newbucket$0=weak_create(newsz), - newhashes=caml_make_vect(newsz,0); - blit$4(bucket$0,0,newbucket$0,0,sz); - blit$1(hashes,0,newhashes,0,sz); - caml_call3(setter,newbucket$0,sz,d); - 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_) - {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_], - n=length$6(bucket), - prev_len=(((n - 3 | 0) * 2 | 0) + 2 | 0) / 3 | 0, - live=count_bucket(0,bucket,0); - if(live <= prev_len) - {var j$2=length$6(bucket) - 1 | 0,i$0=0,j=j$2; - for(;;) - {if(prev_len <= j) - {if(check$0(bucket,i$0)) - {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 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]} - 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; - 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} - break}} - var _m2_=((t[1].length - 1) / 2 | 0) < t[4]?1:0; - if(_m2_) - {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; - iteri$3 - (function(j,ob) - {var i$0=i; - for(;;) - {if(length$6(ob) <= i$0)return 0; - var match=check$0(ob,i$0); - if(match) - {var - oh=caml_check_bound(t[2],j)[1 + j], - setter$0= - function(i) - {function setter(nb,ni,param){return blit$4(ob,i,nb,ni,1)} - return setter}, - setter=setter$0(i$0), - h=caml_check_bound(oh,i$0)[1 + i$0]; - add_aux(newt,setter,0,h,get_index(newt,h)); - var i$1=i$0 + 1 | 0,i$0=i$1; - continue} - var i$2=i$0 + 1 | 0,i$0=i$2; - continue}}, - _mP_); - t[1] = newt[1]; - t[2] = newt[2]; - t[3] = newt[3]; - t[4] = newt[4]; - t[5] = caml_mod(t[5],newt[1].length - 1); - return 0} - t[3] = max_int; - t[4] = 0; - return 0} - return _m2_} - 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; - return 0}} - function add(t,d) - {var h=caml_call1(H[2],d); - return add_aux(t,set$1,[0,d],h,get_index(t,h))} - function find_or(t,d,ifnotfound) - {var - h=caml_call1(H[2],d), - index=get_index(t,h), - bucket=caml_check_bound(t[1],index)[1 + index], - hashes=caml_check_bound(t[2],index)[1 + index], - sz=length$6(bucket), - i=0; - for(;;) - {if(sz <= i)return caml_call2(ifnotfound,h,index); - if(h === caml_check_bound(hashes,i)[1 + i]) - {var match=get_copy(bucket,i); - if(match) - {var v=match[1]; - if(caml_call2(H[1],v,d)) - {var match$0=get$2(bucket,i); - if(match$0){var v$0=match$0[1];return v$0} - var i$0=i + 1 | 0,i=i$0; - continue}} - var i$1=i + 1 | 0,i=i$1; - continue} - var i$2=i + 1 | 0,i=i$2; - continue}} - function merge(t,d) - {return find_or - (t, - d, - function(h,index){add_aux(t,set$1,[0,d],h,index);return d})} - function find(t,d) - {return find_or(t,d,function(h,index){throw Not_found})} - function find_opt(t,d) - {var - h=caml_call1(H[2],d), - index=get_index(t,h), - bucket=caml_check_bound(t[1],index)[1 + index], - hashes=caml_check_bound(t[2],index)[1 + index], - sz=length$6(bucket), - i=0; - for(;;) - {if(sz <= i)return 0; - if(h === caml_check_bound(hashes,i)[1 + i]) - {var match=get_copy(bucket,i); - if(match) - {var v=match[1]; - if(caml_call2(H[1],v,d)) - {var v$0=get$2(bucket,i); - if(v$0)return v$0; - var i$0=i + 1 | 0,i=i$0; - continue}} - var i$1=i + 1 | 0,i=i$1; - continue} - var i$2=i + 1 | 0,i=i$2; - continue}} - function find_shadow(t,d,iffound,ifnotfound) - {var - h=caml_call1(H[2],d), - index=get_index(t,h), - bucket=caml_check_bound(t[1],index)[1 + index], - hashes=caml_check_bound(t[2],index)[1 + index], - sz=length$6(bucket), - i=0; - for(;;) - {if(sz <= i)return ifnotfound; - if(h === caml_check_bound(hashes,i)[1 + i]) - {var match=get_copy(bucket,i); - if(match) - {var v=match[1]; - if(caml_call2(H[1],v,d))return caml_call2(iffound,bucket,i)} - var i$0=i + 1 | 0,i=i$0; - continue} - 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_)} - function mem(t,d) - {var _mN_=0;return find_shadow(t,d,function(w,i){return 1},_mN_)} - function find_all(t,d) - {var - h=caml_call1(H[2],d), - index=get_index(t,h), - bucket=caml_check_bound(t[1],index)[1 + index], - hashes=caml_check_bound(t[2],index)[1 + index], - sz=length$6(bucket), - i=0, - accu=0; - for(;;) - {if(sz <= i)return accu; - if(h === caml_check_bound(hashes,i)[1 + i]) - {var match=get_copy(bucket,i); - if(match) - {var v=match[1]; - if(caml_call2(H[1],v,d)) - {var match$0=get$2(bucket,i); - if(match$0) - {var - v$0=match$0[1], - accu$0=[0,v$0,accu], - i$0=i + 1 | 0, - i=i$0, - accu=accu$0; - continue} - var i$1=i + 1 | 0,i=i$1; - continue}} - var i$2=i + 1 | 0,i=i$2; - continue} - var i$3=i + 1 | 0,i=i$3; - continue}} - function stats(t) - {var len=t[1].length - 1,lens=map$7(length$6,t[1]); - sort(caml_int_compare,lens); - var - _mF_=0, - totlen= - fold_left$3(function(_mM_,_mL_){return _mM_ + _mL_ | 0},_mF_,lens), - _mG_=len - 1 | 0, - _mI_=len / 2 | 0, - _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_]} - return [0, - create, - clear, - merge, - add, - remove, - find, - find_opt, - find_all, - mem, - iter, - fold, - count, - stats]} - var - Stdlib_Weak= - [0, - weak_create, - length$6, - set$1, - get$2, - get_copy, - check$0, - fill$2, - blit$4, - Make$1]; - caml_register_global(817,Stdlib_Weak,"Stdlib__Weak"); - function id$0(x){return x} - var - String_tag=[248,cst_Stdlib_Format_String_tag,caml_fresh_oo_id(0)], - size=0, - unknown=-1; - function pp_enqueue(state,token) - {state[13] = state[13] + token[3] | 0;return add(token,state[28])} - var pp_infinity=1000000010; - function pp_output_string(state,s) - {return caml_call3(state[17],s,0,caml_ml_string_length(s))} - function pp_output_newline(state){return caml_call1(state[19],0)} - function format_pp_text(state,size,text) - {state[9] = state[9] - size | 0; - pp_output_string(state,text); - 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_} - function break_new_line(state,param,width) - {var after=param[3],offset=param[2],before=param[1]; - format_string(state,before); - pp_output_newline(state); - state[11] = 1; - var - indent=(state[6] - width | 0) + offset | 0, - real_indent=min$1(state[8],indent); - state[10] = real_indent; - 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_same_line(state,param) - {var after=param[3],width=param[2],before=param[1]; - format_string(state,before); - state[9] = state[9] - width | 0; - caml_call1(state[20],width); - return format_string(state,after)} - function format_pp_token(state,size$0,param) - {if(typeof param === "number") - switch(param) - {case 0: - var match$3=top_opt(state[3]); - if(match$3) - {var - match$4=match$3[1], - tabs=match$4[1], - add_tab= - function(n,ls) - {if(ls) - {var l=ls[2],x=ls[1]; - return caml_lessthan(n,x)?[0,n,ls]:[0,x,add_tab(n,l)]} - return [0,n,0]}; - tabs[1] = add_tab(state[6] - state[9] | 0,tabs[1]); - return 0} - return 0; - case 1:pop_opt(state[2]);return 0; - case 2:pop_opt(state[3]);return 0; - case 3: - var match$5=top_opt(state[2]); - if(match$5) - {var match$6=match$5[1],width$0=match$6[2]; - 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 match$1=take_opt(state[28]); - if(match$1) - {var match$2=match$1[1],size=match$2[1],length=match$2[3]; - state[12] = state[12] - length | 0; - state[9] = state[9] + size | 0; - return 0} - return 0} - return _mB_; - default: - var match$7=pop_opt(state[5]); - if(match$7) - {var tag_name=match$7[1],marker=caml_call1(state[25],tag_name); - return pp_output_string(state,marker)} - return 0} - else - switch(param[0]) - {case 0:var s=param[1];return format_pp_text(state,size$0,s); - case 1: - var - breaks=param[2], - fits=param[1], - off=breaks[2], - before=breaks[1], - match$8=top_opt(state[2]); - if(match$8) - {var match$9=match$8[1],width$1=match$9[2],box_type$0=match$9[1]; - switch(box_type$0) - {case 0:return break_same_line(state,fits); - case 1:return break_new_line(state,breaks,width$1); - case 2:return break_new_line(state,breaks,width$1); - case 3: - return state[9] < (size$0 + caml_ml_string_length(before) | 0) - ?break_new_line(state,breaks,width$1) - :break_same_line(state,fits); - case 4: - return state[11] - ?break_same_line(state,fits) - :state[9] < (size$0 + caml_ml_string_length(before) | 0) - ?break_new_line(state,breaks,width$1) - :((state[6] - width$1 | 0) + off | 0) < state[10] - ?break_new_line(state,breaks,width$1) - :break_same_line(state,fits); - default:return break_same_line(state,fits)}} - return 0; - case 2: - var - off$0=param[2], - n=param[1], - 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]; - 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} - else - var _mD_=first; - var tab=_mD_; - break}} - else - var tab=insertion_point; - var offset=tab - insertion_point | 0; - return 0 <= offset - ?break_same_line(state,[0,cst$69,offset + n | 0,cst$68]) - :break_new_line - (state,[0,cst$71,tab + off$0 | 0,cst$70],state[6])} - return 0; - case 3: - var - ty=param[2], - off$1=param[1], - insertion_point$0=state[6] - state[9] | 0; - if(state[8] < insertion_point$0) - {var match=top_opt(state[2]); - if(match) - {var match$0=match[1],width=match$0[2],box_type=match$0[1]; - if(state[9] < width && ! (3 < box_type - 1 >>> 0)) - break_line(state,width)} - else - pp_output_newline(state)} - var - width$2=state[9] - off$1 | 0, - box_type$1=1 === ty?1:state[9] < size$0?ty:5; - return push([0,box_type$1,width$2],state[2]); - case 4:var tbox=param[1];return push(tbox,state[3]); - default: - var tag_name$0=param[1],marker$0=caml_call1(state[24],tag_name$0); - pp_output_string(state,marker$0); - return push(tag_name$0,state[5])}} - function advance_left(state) - {for(;;) - {var match=peek_opt(state[28]); - if(match) - {var - match$0=match[1], - size=match$0[1], - 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_) - {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 0}} - function enqueue_advance(state,tok) - {pp_enqueue(state,tok);return advance_left(state)} - function enqueue_string_as(state,size,s) - {return enqueue_advance(state,[0,size,[0,s],size])} - function initialize_scan_stack(stack) - {clear(stack); - var queue_elem=[0,unknown,_cm_,0]; - return push([0,-1,queue_elem],stack)} - function set_size(state,ty) - {var match=top_opt(state[1]); - if(match) - {var - match$0=match[1], - queue_elem=match$0[2], - left_total=match$0[1], - _mu_=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]) - {case 3: - var - _mx_=1 - ty, - _my_= - _mx_ - ?(queue_elem[1] = state[13] + _mu_ | 0,pop_opt(state[1]),0) - :_mx_; - return _my_; - case 1: - case 2: - var - _mw_= - ty?(queue_elem[1] = state[13] + _mu_ | 0,pop_opt(state[1]),0):ty; - return _mw_ - } - return 0} - return 0} - function scan_push(state,b,token) - {pp_enqueue(state,token); - if(b)set_size(state,1); - var elem=[0,state[13],token]; - return push(elem,state[1])} - function pp_open_box_gen(state,indent,br_ty) - {state[14] = state[14] + 1 | 0; - 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; - if(_mq_) - {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} - else - var _mr_=_mq_; - return _mr_} - 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 token=[5,tag_name];return pp_enqueue(state,[0,size,token,0])} - return _mp_} - function pp_close_stag(state,param) - {if(state[23])pp_enqueue(state,[0,size,5,0]); - var _mn_=state[22]; - if(_mn_) - {var match=pop_opt(state[4]); - if(match){var tag_name=match[1];return caml_call1(state[27],tag_name)} - var _mo_=0} - else - var _mo_=_mn_; - return _mo_} - 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} - function pp_set_mark_tags(state,b){state[23] = b;return 0} - function pp_get_print_tags(state,param){return state[22]} - function pp_get_mark_tags(state,param){return state[23]} - function pp_set_tags(state,b) - {pp_set_print_tags(state,b);return pp_set_mark_tags(state,b)} - function pp_get_formatter_stag_function(state,param) - {return [0,state[24],state[25],state[26],state[27]]} - function pp_set_formatter_stag_function(state,param) - {var pct=param[4],pot=param[3],mct=param[2],mot=param[1]; - state[24] = mot; - state[25] = mct; - state[26] = pot; - state[27] = pct; - return 0} - function pp_rinit(state) - {state[12] = 1; - state[13] = 1; - clear$0(state[28]); - initialize_scan_stack(state[1]); - clear(state[2]); - clear(state[3]); - clear(state[4]); - clear(state[5]); - state[10] = 0; - state[14] = 0; - 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_); - for(;;) - {if(1 < state[14]){pp_close_box(state,0);continue} - state[13] = pp_infinity; - advance_left(state); - 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_} - function pp_print_as(state,isize,s) - {return pp_print_as_size(state,isize,s)} - function pp_print_string(state,s) - {return pp_print_as(state,caml_ml_string_length(s),s)} - function pp_print_bytes(state,s) - {return pp_print_as(state,caml_ml_bytes_length(s),of_bytes(s))} - function pp_print_int(state,i) - {return pp_print_string(state,caml_string_of_jsbytes("" + i))} - function pp_print_float(state,f) - {return pp_print_string(state,to_string(f))} - function pp_print_bool(state,b) - {return pp_print_string(state,string_of_bool(b))} - function pp_print_char(state,c){return pp_print_as(state,1,make$1(1,c))} - function pp_open_hbox(state,param){return pp_open_box_gen(state,0,0)} - function pp_open_vbox(state,indent) - {return pp_open_box_gen(state,indent,1)} - function pp_open_hvbox(state,indent) - {return pp_open_box_gen(state,indent,2)} - function pp_open_hovbox(state,indent) - {return pp_open_box_gen(state,indent,3)} - function pp_open_box(state,indent){return pp_open_box_gen(state,indent,4)} - function pp_print_newline(state,param) - {pp_flush_queue(state,1);return caml_call1(state[18],0)} - 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_} - 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_} - 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_) - {var - size=- state[13] | 0, - token=[1,fits,breaks], - length= - (caml_ml_string_length(before) + width | 0) - + - caml_ml_string_length(after) - | - 0, - elem=[0,size,token,length]; - return scan_push(state,1,elem)} - return _mi_} - 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])} - function pp_print_space(state,param){return pp_print_break(state,1,0)} - 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 elem=[0,size,[4,[0,[0,0]]],0];return enqueue_advance(state,elem)} - return _mh_} - 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 elem=[0,size,2,0]; - enqueue_advance(state,elem); - state[14] = state[14] - 1 | 0; - var _mg_=0} - else - var _mg_=_mf_} - else - var _mg_=_me_; - return _mg_} - function pp_print_tbreak(state,width,offset) - {var _md_=state[14] < state[15]?1:0; - if(_md_) - {var size=- state[13] | 0,elem=[0,size,[2,width,offset],width]; - return scan_push(state,1,elem)} - return _md_} - 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_} - function pp_set_max_boxes(state,n) - {var _ma_=1 < n?1:0,_mb_=_ma_?(state[15] = n,0):_ma_;return _mb_} - function pp_get_max_boxes(state,param){return state[15]} - function pp_over_max_boxes(state,param) - {return state[14] === state[15]?1:0} - function pp_set_ellipsis_text(state,s){state[16] = s;return 0} - 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 n=pp_limit(n$1); - state[7] = n; - state[8] = state[6] - state[7] | 0; - return pp_rinit(state)} - return _l__} - return _l$_} - 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 n$0=pp_limit(n); - state[6] = n$0; - var - new_max_indent= - state[8] <= state[6] - ?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_} - function validate_geometry(param) - {var margin=param[2],max_indent=param[1]; - return 2 <= max_indent?margin <= max_indent?_cn_:_co_:_cp_} - function check_geometry(geometry) - {var match=validate_geometry(geometry);return 0 === match[0]?1:0} - function pp_get_margin(state,param){return state[6]} - function pp_set_full_geometry(state,param) - {var margin=param[2],max_indent=param[1]; - pp_set_margin(state,margin); - pp_set_max_indent(state,max_indent); - return 0} - function pp_set_geometry(state,max_indent,margin) - {var geometry=[0,max_indent,margin],match=validate_geometry(geometry); - if(0 === match[0])return pp_set_full_geometry(state,geometry); - var msg=match[1]; - throw [0,Invalid_argument,cat(cst_Format_pp_set_geometry,msg)]} - function pp_safe_set_geometry(state,max_indent,margin) - {var geometry=[0,max_indent,margin],match=validate_geometry(geometry); - return 0 === match[0]?pp_set_full_geometry(state,geometry):0} - function pp_get_geometry(state,param){return [0,state[8],state[6]]} - function pp_update_geometry(state,update) - {var geometry=pp_get_geometry(state,0); - return pp_set_full_geometry(state,caml_call1(update,geometry))} - function pp_set_formatter_out_functions(state,param) - {var j=param[5],i=param[4],h=param[3],g=param[2],f=param[1]; - state[17] = f; - state[18] = g; - state[19] = h; - state[20] = i; - state[21] = j; - return 0} - function pp_get_formatter_out_functions(state,param) - {return [0,state[17],state[18],state[19],state[20],state[21]]} - function pp_set_formatter_output_functi(state,f,g) - {state[17] = f;state[18] = g;return 0} - function pp_get_formatter_output_functi(state,param) - {return [0,state[17],state[18]]} - function display_newline(state,param) - {return caml_call3(state[17],cst$76,0,1)} - var blank_line=make$1(80,32); - function display_indent(state,n) - {var n$0=n; - for(;;) - {var _l8_=0 < n$0?1:0; - if(_l8_) - {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_}} - function pp_set_formatter_out_channel(state,oc) - {state[17] - = - function(_l5_,_l6_,_l7_){return output_substring(oc,_l5_,_l6_,_l7_)}; - 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_)}; - return 0} - function default_pp_mark_open_tag(param) - {if(param[1] === String_tag) - {var s=param[2];return cat(cst$78,cat(s,cst$77))} - return cst$79} - function default_pp_mark_close_tag(param) - {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 pp_make_formatter(f,g,h,i,j) - {var pp_queue=create$1(0),sys_tok=[0,unknown,_cq_,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); - return [0, - scan_stack, - create$0(0), - _lZ_, - _lY_, - _lX_, - 78, - 10, - 68, - 78, - 0, - 1, - 1, - 1, - 1, - max_int, - cst$83, - f, - g, - h, - i, - j, - 0, - 0, - default_pp_mark_open_tag, - default_pp_mark_close_tag, - default_pp_print_open_tag, - default_pp_print_close_tag, - pp_queue]} - function formatter_of_out_functions(out_funs) - {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} - 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_)}; - return ppf} - function formatter_of_out_channel(oc) - {function _lL_(param){return caml_ml_flush(oc)} - return make_formatter - (function(_lM_,_lN_,_lO_) - {return output_substring(oc,_lM_,_lN_,_lO_)}, - _lL_)} - function formatter_of_buffer(b) - {function _lG_(_lK_){return 0} - return make_formatter - (function(_lH_,_lI_,_lJ_) - {return add_substring(b,_lH_,_lI_,_lJ_)}, - _lG_)} - var pp_buffer_size=512; - function pp_make_buffer(param){return create$2(pp_buffer_size)} - var - stdbuf=pp_make_buffer(0), - std_formatter=formatter_of_out_channel(stdout), - err_formatter=formatter_of_out_channel(stderr), - str_formatter=formatter_of_buffer(stdbuf); - function flush_buffer_formatter(buf,ppf) - {pp_flush_queue(ppf,0);var s=contents(buf);reset(buf);return s} - function flush_str_formatter(param) - {return flush_buffer_formatter(stdbuf,str_formatter)} - function make_symbolic_output_buffer(param){return [0,0]} - function clear_symbolic_output_buffer(sob){sob[1] = 0;return 0} - function get_symbolic_output_buffer(sob){return rev(sob[1])} - function flush_symbolic_output_buffer(sob) - {var items=get_symbolic_output_buffer(sob); - clear_symbolic_output_buffer(sob); - return items} - function add_symbolic_output_item(sob,item) - {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 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 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]; - if(param$0[2]) - {var vs=param$0[2]; - caml_call2(pp_v,ppf,_kH_); - 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 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; - var match$0=caml_call1(seq$1,0); - if(match$0) - {var seq$2=match$0[2],v$0=match$0[1]; - caml_call2(pp_v,ppf,v$0); - var seq=seq$2; - for(;;) - {var match=caml_call1(seq,0); - if(match) - {var seq$0=match[2],v=match[1]; - caml_call2(pp_sep,ppf,0); - caml_call2(pp_v,ppf,v); - var seq=seq$0; - continue} - return 0}} - return 0} - function pp_print_text(ppf,s) - {var len=caml_ml_string_length(s),left=[0,0],right=[0,0]; - function flush(param) - {pp_print_string(ppf,sub$0(s,left[1],right[1] - left[1] | 0)); - right[1]++; - left[1] = right[1]; - return 0} - for(;;) - {if(right[1] !== len) - {var match=caml_string_get(s,right[1]); - if(10 === match) - {flush(0);pp_force_newline(ppf,0)} - 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_}} - 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}; - 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) - {if(0 === param[0]){var v=param[1];return caml_call2(ok,ppf,v)} - var e=param[1]; - return caml_call2(error,ppf,e)} - function pp_print_either(left,right,ppf,param) - {if(0 === param[0]){var l=param[1];return caml_call2(left,ppf,l)} - var r=param[1]; - return caml_call2(right,ppf,r)} - function compute_tag(output,tag_acc) - {var buf=create$2(16),ppf=formatter_of_buffer(buf); - caml_call2(output,ppf,tag_acc); - pp_print_flush(ppf,0); - var len=buf[2]; - return 2 <= len?sub$3(buf,1,len - 2 | 0):contents(buf)} - function output_formatting_lit(ppf,fmting_lit) - {if(typeof fmting_lit === "number") - switch(fmting_lit) - {case 0:return pp_close_box(ppf,0); - case 1:return pp_close_tag(ppf,0); - case 2:return pp_print_flush(ppf,0); - case 3:return pp_force_newline(ppf,0); - case 4:return pp_print_newline(ppf,0); - case 5:return pp_print_char(ppf,64); - default:return pp_print_char(ppf,37)} - else - switch(fmting_lit[0]) - {case 0: - var offset=fmting_lit[3],width=fmting_lit[2]; - return pp_print_break(ppf,width,offset); - case 1:return 0; - default: - var c=fmting_lit[1]; - pp_print_char(ppf,64); - return pp_print_char(ppf,c)}} - function output_acc$0(ppf,acc) - {var switch$0=0; - if(typeof acc === "number") - return 0; - else - switch(acc[0]) - {case 0: - var f=acc[2],p=acc[1]; - 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_); - 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 - 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]; - switch$1 = 1; - switch$2 = 1}} - if(! switch$1){var s=acc[2],p$0=_kx_;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]; - switch$0 = 1; - switch$3 = 1; - switch$4 = 1}} - if(! switch$3){var c=acc[2],p$2=_kz_;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]; - switch$5 = 1; - switch$6 = 1}} - if(! switch$5){var s=acc[2],p$0=_kB_;switch$0 = 2} - break; - case 5: - var _kD_=acc[1],switch$7=0; - if(typeof _kD_ === "number" || ! (0 === _kD_[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]; - 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} - break; - case 6: - var f$0=acc[2],p$4=acc[1]; - output_acc$0(ppf,p$4); - return caml_call1(f$0,ppf); - case 7: - var p$5=acc[1];output_acc$0(ppf,p$5);return pp_print_flush(ppf,0); - default: - var msg=acc[2],p$6=acc[1]; - output_acc$0(ppf,p$6); - return invalid_arg(msg)} - switch(switch$0) - {case 0:output_acc$0(ppf,p$1);return pp_print_as_size(ppf,size,s$0); - case 1: - output_acc$0(ppf,p$3); - return pp_print_as_size(ppf,size$0,make$1(1,c$0)); - case 2:output_acc$0(ppf,p$0);return pp_print_string(ppf,s); - default:output_acc$0(ppf,p$2);return pp_print_char(ppf,c)}} - function strput_acc$0(ppf,acc) - {var switch$0=0; - if(typeof acc === "number") - return 0; - else - switch(acc[0]) - {case 0: - var f=acc[2],p=acc[1]; - 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_); - 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 - 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]; - switch$1 = 1; - switch$2 = 1}} - if(! switch$1){var s=acc[2],p$0=_kl_;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]; - switch$0 = 1; - switch$3 = 1; - switch$4 = 1}} - if(! switch$3){var c=acc[2],p$2=_kn_;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]; - switch$5 = 1; - switch$6 = 1}} - if(! switch$5){var s=acc[2],p$0=_kp_;switch$0 = 2} - break; - case 5: - var _kr_=acc[1],switch$7=0; - if(typeof _kr_ === "number" || ! (0 === _kr_[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]; - 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} - 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]; - 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_); - 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); - default: - var msg=acc[2],p$6=acc[1]; - strput_acc$0(ppf,p$6); - return invalid_arg(msg)} - switch(switch$0) - {case 0:strput_acc$0(ppf,p$1);return pp_print_as_size(ppf,size,s$0); - case 1: - strput_acc$0(ppf,p$3); - return pp_print_as_size(ppf,size$0,make$1(1,c$0)); - 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; - return make_printf - (function(acc){output_acc$0(ppf,acc);return caml_call1(k,ppf)}, - _ki_, - 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)} - function fprintf$0(ppf) - {function _kd_(_kf_){return 0} - return function(_ke_){return kfprintf$0(_kd_,ppf,_ke_)}} - 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; - return make_printf - (function(acc) - {return caml_call1 - (k,function(ppf){return output_acc$0(ppf,acc)})}, - _kc_, - fmt)} - function dprintf(fmt){return kdprintf(function(i){return i},fmt)} - function kprintf(k,param) - {var fmt=param[1],b=pp_make_buffer(0),ppf=formatter_of_buffer(b); - function k$0(acc) - {strput_acc$0(ppf,acc); - return caml_call1(k,flush_buffer_formatter(b,ppf))} - return make_printf(k$0,0,fmt)} - function sprintf$0(fmt){return kprintf(id$0,fmt)} - function kasprintf(k,param) - {var fmt=param[1],b=pp_make_buffer(0),ppf=formatter_of_buffer(b); - function k$0(acc) - {output_acc$0(ppf,acc); - return caml_call1(k,flush_buffer_formatter(b,ppf))} - return make_printf(k$0,0,fmt)} - function asprintf(fmt){return kasprintf(id$0,fmt)} - function flush_standard_formatters(param) - {pp_print_flush(std_formatter,0);return pp_print_flush(err_formatter,0)} - at_exit(flush_standard_formatters); - function pp_set_all_formatter_output_fu(state,f,g,h,i) - {pp_set_formatter_output_functi(state,f,g); - state[19] = h; - state[20] = i; - 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 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)} - return make_printf(k,0,fmt)} - function pp_set_formatter_tag_functions(state,param) - {var pct=param[4],pot=param[3],mct=param[2],mot=param[1]; - 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_)}; - return 0} - function pp_get_formatter_tag_functions(fmt,param) - {var funs=pp_get_formatter_stag_function(fmt,0); - function mark_open_tag(s){return caml_call1(funs[1],[0,String_tag,s])} - function mark_close_tag(s){return caml_call1(funs[2],[0,String_tag,s])} - 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_)} - var - Stdlib_Format= - [0, - pp_open_box, - open_box, - pp_close_box, - close_box, - pp_open_hbox, - open_hbox, - pp_open_vbox, - open_vbox, - pp_open_hvbox, - open_hvbox, - pp_open_hovbox, - open_hovbox, - pp_print_string, - print_string$0, - pp_print_bytes, - print_bytes$0, - pp_print_as, - print_as, - pp_print_int, - print_int$0, - pp_print_float, - print_float$0, - pp_print_char, - print_char$0, - pp_print_bool, - print_bool, - pp_print_space, - print_space, - pp_print_cut, - print_cut, - pp_print_break, - print_break, - pp_print_custom_break, - pp_force_newline, - force_newline, - pp_print_if_newline, - print_if_newline, - pp_print_flush, - print_flush, - pp_print_newline, - print_newline$0, - pp_set_margin, - set_margin, - pp_get_margin, - get_margin, - pp_set_max_indent, - set_max_indent, - pp_get_max_indent, - get_max_indent, - check_geometry, - pp_set_geometry, - set_geometry, - pp_safe_set_geometry, - safe_set_geometry, - pp_update_geometry, - update_geometry, - pp_get_geometry, - get_geometry, - pp_set_max_boxes, - set_max_boxes, - pp_get_max_boxes, - get_max_boxes, - pp_over_max_boxes, - over_max_boxes, - pp_open_tbox, - open_tbox, - pp_close_tbox, - close_tbox, - pp_set_tab, - set_tab, - pp_print_tab, - print_tab, - pp_print_tbreak, - print_tbreak, - pp_set_ellipsis_text, - set_ellipsis_text, - pp_get_ellipsis_text, - get_ellipsis_text, - String_tag, - pp_open_stag, - open_stag, - pp_close_stag, - close_stag, - pp_set_tags, - set_tags, - pp_set_print_tags, - set_print_tags, - pp_set_mark_tags, - set_mark_tags, - pp_get_print_tags, - get_print_tags, - pp_get_mark_tags, - get_mark_tags, - pp_set_formatter_out_channel, - set_formatter_out_channel, - pp_set_formatter_output_functi, - set_formatter_output_functions, - pp_get_formatter_output_functi, - get_formatter_output_functions, - pp_set_formatter_out_functions, - set_formatter_out_functions, - pp_get_formatter_out_functions, - get_formatter_out_functions, - pp_set_formatter_stag_function, - set_formatter_stag_functions, - pp_get_formatter_stag_function, - get_formatter_stag_functions, - formatter_of_out_channel, - std_formatter, - err_formatter, - formatter_of_buffer, - stdbuf, - str_formatter, - flush_str_formatter, - make_formatter, - formatter_of_out_functions, - make_symbolic_output_buffer, - clear_symbolic_output_buffer, - get_symbolic_output_buffer, - flush_symbolic_output_buffer, - add_symbolic_output_item, - formatter_of_symbolic_output_b, - pp_print_list, - pp_print_seq, - pp_print_text, - pp_print_option, - pp_print_result, - pp_print_either, - fprintf$0, - printf$0, - eprintf$0, - sprintf$0, - asprintf, - dprintf, - ifprintf$0, - kfprintf$0, - kdprintf, - ikfprintf$0, - kprintf, - kasprintf, - bprintf$0, - kprintf, - set_all_formatter_output_funct, - get_all_formatter_output_funct, - pp_set_all_formatter_output_fu, - pp_get_all_formatter_output_fu, - pp_open_tag, - open_tag, - pp_close_tag, - close_tag, - pp_set_formatter_tag_functions, - set_formatter_tag_functions, - pp_get_formatter_tag_functions, - get_formatter_tag_functions]; - caml_register_global(818,Stdlib_Format,"Stdlib__Format"); - var null_char=0; - function next_char(ib) - {try - {var c=caml_call1(ib[7],0); - ib[2] = c; - ib[3] = 1; - 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) - {ib[2] = null_char;ib[3] = 0;ib[1] = 1;return null_char} - throw _j0_}} - 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; - else - {if(0 === _jZ_[0])return cst_unnamed_Stdlib_input_chann; - var fname=_jZ_[1]; - return fname}} - function char_count(ib){return ib[3]?ib[4] - 1 | 0:ib[4]} - function reset_token(ib){return reset(ib[8])} - function invalidate_current_char(ib){ib[3] = 0;return 0} - function token_string(ib) - {var token_buffer=ib[8],tok=contents(token_buffer); - clear$1(token_buffer); - ib[6] = ib[6] + 1 | 0; - return tok} - function skip_char(width,ib){invalidate_current_char(ib);return width} - function ignore_char(width,ib){return skip_char(width - 1 | 0,ib)} - function store_char(width,ib,c) - {add_char(ib[8],c);return ignore_char(width,ib)} - var default_token_buffer_size=1024; - function create$4(iname,next) - {return [0, - 0, - null_char, - 0, - 0, - 0, - 0, - next, - create$2(default_token_buffer_size), - iname]} - function from_string$1(s) - {var i=[0,0],len=caml_ml_string_length(s); - function next(param) - {if(len <= i[1])throw End_of_file; - var c=caml_string_get(s,i[1]); - i[1]++; - return c} - return create$4(1,next)} - var _cr_=0; - function from_function$0(_jY_){return create$4(_cr_,_jY_)} - var len=1024; - function scan_close_at_end(ic) - {caml_ml_close_channel(ic);throw End_of_file} - function scan_raise_at_end(ic){throw End_of_file} - function from_ic(scan_close_ic,iname,ic) - {var buf=caml_create_bytes(1024),i=[0,0],lim=[0,0],eof=[0,0]; - function next(param) - {if(i[1] < lim[1]){var c=caml_bytes_get(buf,i[1]);i[1]++;return c} - if(eof[1])throw End_of_file; - lim[1] = input(ic,buf,0,len); - return 0 === lim[1] - ?(eof[1] = 1,caml_call1(scan_close_ic,ic)) - :(i[1] = 1,caml_bytes_get(buf,0))} - return create$4(iname,next)} - var stdib=from_ic(scan_raise_at_end,[1,cst$86,stdin],stdin); - function open_in_file(open_in,fname) - {if(caml_string_notequal(fname,cst$87)) - {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_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") - return 0; - else - {if(0 === _jV_[0]){var ic=_jV_[1];return caml_ml_close_channel(ic)} - var ic$0=_jV_[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 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_)} - 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))} - function bad_token_length(message) - {return bad_input(caml_call1(sprintf(_ct_),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))} - function check_this_char(ib,c) - {var ci=checked_peek_char(ib); - return ci === c?invalidate_current_char(ib):character_mismatch(c,ci)} - function check_char(ib,c$0) - {if(10 === c$0) - {var ci=checked_peek_char(ib); - return 10 === ci - ?invalidate_current_char(ib) - :13 === ci - ?(invalidate_current_char(ib),check_this_char(ib,10)) - :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} - else - if(1 < _jR_ - 2 >>> 0)switch$0 = 1; - if(switch$0){invalidate_current_char(ib);continue} - return 0} - return _jQ_} - 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)) - :1 - :0} - function integer_conversion_of_char(param) - {var switcher=param - 88 | 0; - if(! (32 < switcher >>> 0)) - switch(switcher) - {case 10:return 0; - case 12:return 1; - case 17:return 2; - case 23:return 3; - case 29:return 4; - case 0: - case 32:return 5 - } - throw [0,Assert_failure,_cx_]} - function token_int_literal(conv,ib) - {switch(conv) - {case 0:var tok=cat(cst_0b,token_string(ib));break; - case 3:var tok=cat(cst_0o,token_string(ib));break; - case 4:var tok=cat(cst_0u,token_string(ib));break; - case 5:var tok=cat(cst_0x,token_string(ib));break; - default:var tok=token_string(ib)} - var l=caml_ml_string_length(tok); - if(0 !== l && 43 === caml_string_get(tok,0)) - return sub$0(tok,1,l - 1 | 0); - return tok} - function token_float(ib){return caml_float_of_string(token_string(ib))} - function scan_decimal_digit_star(width,ib) - {var width$0=width; - for(;;) - {if(0 === width$0)return width$0; - var c=peek_char(ib); - if(ib[1])return width$0; - if(58 <= c) - {if(95 === c) - {var width$1=ignore_char(width$0,ib),width$0=width$1;continue}} - else - if(48 <= c) - {var width$2=store_char(width$0,ib,c),width$0=width$2;continue} - return width$0}} - 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)); - 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) - {if(0 === width$2)return bad_token_length(cst_digits); - var c$0=checked_peek_char(ib); - if(caml_call1(digitp,c$0)) - {var width$3=store_char(width$2,ib,c$0),width=width$3; - for(;;) - {if(0 === width)return width; - var c=peek_char(ib); - if(ib[1])return width; - if(caml_call1(digitp,c)) - {var width$0=store_char(width,ib,c),width=width$0;continue} - 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))} - 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 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 is_hexa_digit(param) - {var _jL_=param - 48 | 0,switch$0=0; - if(22 < _jL_ >>> 0) - {if(! (5 < _jL_ - 49 >>> 0))switch$0 = 1} - else - if(6 < _jL_ - 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_sign(width,ib) - {var c=checked_peek_char(ib),switcher=c - 43 | 0; - if(! (2 < switcher >>> 0)) - switch(switcher) - {case 0:return store_char(width,ib,c); - case 1:break; - default:return store_char(width,ib,c)} - return width} - function scan_optionally_signed_decimal(width,ib) - {var width$0=scan_sign(width,ib); - return scan_unsigned_decimal_int(width$0,ib)} - function scan_int_conversion(conv,width$1,ib) - {switch(conv) - {case 0:return scan_binary_int(width$1,ib); - case 1:return scan_optionally_signed_decimal(width$1,ib); - case 2: - var width$0=scan_sign(width$1,ib),c=checked_peek_char(ib); - if(48 === c) - {var width=store_char(width$0,ib,c); - if(0 === width)return width; - var c$0=peek_char(ib); - if(ib[1])return width; - var switch$0=0; - if(99 <= c$0) - {if(111 === c$0) - return scan_octal_int(store_char(width,ib,c$0),ib); - if(120 === c$0)switch$0 = 1} - else - if(88 === c$0) - switch$0 = 1; - else - if(98 <= c$0)return scan_binary_int(store_char(width,ib,c$0),ib); - return switch$0 - ?scan_hexadecimal_int(store_char(width,ib,c$0),ib) - :scan_decimal_digit_star(width,ib)} - return scan_unsigned_decimal_int(width$0,ib); - case 3:return scan_octal_int(width$1,ib); - case 4:return scan_unsigned_decimal_int(width$1,ib); - default:return scan_hexadecimal_int(width$1,ib)}} - function scan_fractional_part(width,ib) - {if(0 === width)return width; - var c=peek_char(ib); - return ib[1] - ?width - :9 < c - 48 >>> 0 - ?width - :scan_decimal_digit_star(store_char(width,ib,c),ib)} - function scan_exponent_part(width,ib) - {if(0 === width)return width; - var c=peek_char(ib); - if(ib[1])return width; - if(69 !== c && 101 !== c)return width; - return scan_optionally_signed_decimal(store_char(width,ib,c),ib)} - function scan_float(width$1,precision,ib) - {var - width=scan_sign(width$1,ib), - width$0=scan_decimal_digit_star(width,ib); - if(0 === width$0)return [0,width$0,precision]; - var c=peek_char(ib); - if(ib[1])return [0,width$0,precision]; - if(46 === c) - {var - width$2=store_char(width$0,ib,c), - precision$0=min$1(width$2,precision), - width$3= - width$2 - - - (precision$0 - scan_fractional_part(precision$0,ib) | 0) - | - 0; - return [0,scan_exponent_part(width$3,ib),precision$0]} - return [0,scan_exponent_part(width$0,ib),precision]} - function check_case_insensitive_string(width,ib,error,str) - {function lowercase(c) - {return 25 < c - 65 >>> 0?c:char_of_int((c - 65 | 0) + 97 | 0)} - var - len=caml_ml_string_length(str), - width$0=[0,width], - _jG_=len - 1 | 0, - _jF_=0; - if(! (_jG_ < 0)) - {var i=_jF_; - for(;;) - {var c=peek_char(ib),_jH_=lowercase(caml_string_get(str,i)); - if(lowercase(c) !== _jH_)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} - 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 - width$0=scan_sign(width,ib), - _ju_=0 === width$0?1:0, - _jv_=_ju_ || end_of_input(ib); - if(_jv_)bad_hex_float(0); - var c=peek_char(ib),switch$0=0; - if(78 <= c) - {var switcher=c - 79 | 0; - if(30 < switcher >>> 0) - {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); - return check_case_insensitive_string - (width$1,ib,bad_hex_float,cst_an)}} - else - if(26 === switcher)switch$0 = 1} - else - {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); - 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} - else - if(32 < _jC_ - 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); - if(46 === c$0) - {var width$6=store_char(width$5,ib,c$0),switch$2=0; - if(0 !== width$6 && ! end_of_input(ib)) - {var match$0=peek_char(ib),switch$3=0; - if(80 !== match$0 && 112 !== match$0) - {var - precision$0=min$1(width$6,precision), - width$10= - width$6 - - - (precision$0 - scan_hexadecimal_int(precision$0,ib) | 0) - | - 0; - switch$3 = 1} - if(! switch$3)var width$10=width$6; - var width$7=width$10; - switch$2 = 1} - if(! switch$2)var width$7=width$6; - var width$8=width$7} - else - var width$8=width$5; - if(0 !== width$8 && ! end_of_input(ib)) - {var c$1=peek_char(ib); - 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); - return scan_optionally_signed_decimal(width$9,ib)} - return width$8} - return width$5} - return width$4} - if(73 === c)switch$0 = 1} - 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); - 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 - 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); - var c=peek_char(ib),switcher=c - 69 | 0; - if(32 < switcher >>> 0) - {if(-23 === switcher) - {var - width$1=store_char(width$0,ib,c), - precision$0=min$1(width$1,precision), - width_precision=scan_fractional_part(precision$0,ib), - frac_width=precision$0 - width_precision | 0, - width$2=width$1 - frac_width | 0; - return scan_exponent_part(width$2,ib)}} - else - 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 - width$0=scan_sign(width,ib), - _jc_=0 === width$0?1:0, - _jd_=_jc_ || end_of_input(ib); - if(_jd_)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); - 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); - 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); - 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); - var c$1=peek_char(ib),switcher=c$1 - 80 | 0,switch$0=0; - if(32 < switcher >>> 0) - if(-34 === switcher) - {var width$5=store_char(width$4,ib,c$1),switch$1=0; - if(0 !== width$5 && ! end_of_input(ib)) - {var match=peek_char(ib),switch$2=0; - if(80 !== match && 112 !== match) - {var - precision$0=min$1(width$5,precision), - width$10= - width$5 - - - (precision$0 - scan_hexadecimal_int(precision$0,ib) | 0) - | - 0; - switch$2 = 1} - if(! switch$2)var width$10=width$5; - var width$6=width$10; - switch$1 = 1} - if(! switch$1)var width$6=width$5; - var width$7=width$6} - else - switch$0 = 1; - else - if(30 < switcher - 1 >>> 0)var width$7=width$4;else switch$0 = 1; - var width$8=switch$0?bad_float(0):width$7; - if(0 !== width$8 && ! end_of_input(ib)) - {var c$2=peek_char(ib); - 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); - return scan_optionally_signed_decimal(width$9,ib)} - return width$8} - return bad_float(0)} - function scan_string(stp,width,ib) - {var width$0=width; - for(;;) - {if(0 === width$0)return width$0; - var c=peek_char(ib); - if(ib[1])return width$0; - if(stp) - {var c$0=stp[1]; - 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} - else - if(1 < _i$_ - 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}} - function scan_char(width,ib) - {return store_char(width,ib,checked_peek_char(ib))} - function hexadecimal_value_of_char(d) - {return 97 <= d?d - 87 | 0:65 <= d?d - 55 | 0:d - 48 | 0} - 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_)} - function scan_backslash_char(width,ib) - {var c0=check_next_char_for_char(width,ib),switch$0=0; - if(40 <= c0) - {if(58 <= c0) - {var switcher=c0 - 92 | 0; - if(! (28 < switcher >>> 0)) - switch(switcher) - {case 28: - 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} - else - if(6 < _i6_ - 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, - switch$1=0; - if(0 <= c$0 && ! (255 < c$0)) - {var _i4_=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_); - case 0: - case 6: - case 18: - case 22: - case 24:switch$0 = 1;break - }} - else - if(48 <= c0) - {var - get_digit$0= - function(param) - {var c=next_char(ib); - return 9 < c - 48 >>> 0?bad_input_escape(c):c}, - c1$0=get_digit$0(0), - c2$0=get_digit$0(0), - c= - ((100 * (c0 - 48 | 0) | 0) + (10 * (c1$0 - 48 | 0) | 0) | 0) - + - (c2$0 - 48 | 0) - | - 0, - switch$2=0; - if(0 <= c && ! (255 < c)){var _i5_=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_)}} - else - if(34 === c0 || 39 <= c0)switch$0 = 1; - if(switch$0) - {var switch$3=0; - if(110 <= c0) - if(117 <= c0) - 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; - 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_)} - return bad_input_escape(c0)} - function scan_caml_char(width,ib) - {function find_stop(width) - {var c=check_next_char_for_char(width,ib); - return 39 === c?ignore_char(width,ib):character_mismatch(39,c)} - var c=checked_peek_char(ib); - if(39 === c) - {var - width$0=ignore_char(width,ib), - c$0=check_next_char_for_char(width$0,ib); - return 92 === c$0 - ?find_stop(scan_backslash_char(ignore_char(width$0,ib),ib)) - :find_stop(store_char(width$0,ib,c$0))} - return character_mismatch(39,c)} - function scan_caml_string(width,ib) - {function find_stop$0(counter,width) - {var width$0=width; - for(;;) - {var c=check_next_char_for_string(width$0,ib); - if(34 === c)return ignore_char(width$0,ib); - if(92 === c) - {var - 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); - if(counter < 50) - {var counter$0=counter + 1 | 0; - return skip_spaces(counter$0,_i0_)} - return caml_trampoline_return(skip_spaces,[0,_i0_])} - 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); - if(counter < 50) - {var counter$1=counter + 1 | 0; - return skip_spaces(counter$1,_i1_)} - return caml_trampoline_return(skip_spaces,[0,_i1_])} - 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; - continue} - var width$2=store_char(width$0,ib,c),width$0=width$2; - continue}} - function skip_spaces(counter,width) - {var width$0=width; - for(;;) - {var match=check_next_char_for_string(width$0,ib); - if(32 === match) - {var width$1=ignore_char(width$0,ib),width$0=width$1;continue} - if(counter < 50) - {var counter$0=counter + 1 | 0; - return find_stop$0(counter$0,width$0)} - return caml_trampoline_return(find_stop$0,[0,width$0])}} - function find_stop(width){return caml_trampoline(find_stop$0(0,width))} - var c=checked_peek_char(ib); - return 34 === c - ?find_stop(ignore_char(width,ib)) - :character_mismatch(34,c)} - function scan_chars_in_char_set(char_set,scan_indic,width,ib) - {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_; - else - var _iZ_=_iX_} - else - var _iZ_=_iW_; - if(_iZ_) - {store_char(max_int,ib,c);var i$1=i$0 - 1 | 0,i$0=i$1;continue} - return _iZ_}} - if(scan_indic) - {var c=scan_indic[1]; - scan_chars(width,c); - var _iV_=1 - ib[1]; - if(_iV_) - {var ci=peek_char(ib); - return c === ci?invalidate_current_char(ib):character_mismatch(c,ci)} - return _iV_} - return scan_chars(width,-1)} - function scanf_bad_input(ib,x) - {if(x[1] === Scan_failure) - var s=x[2]; - 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))} - 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_; - var - str=string_of_formatting_lit(fmting), - stp=caml_string_get(str,1), - sub_str=sub$0(str,2,caml_ml_string_length(str) - 2 | 0); - return [0,stp,sub_str]} - function take_format_readers$0(counter,k,fmt) - {var fmt$0=fmt; - for(;;) - if(typeof fmt$0 === "number") - return caml_call1(k,0); - else - switch(fmt$0[0]) - {case 0:var fmt$1=fmt$0[1],fmt$0=fmt$1;continue; - case 1:var fmt$2=fmt$0[1],fmt$0=fmt$2;continue; - case 2:var fmt$3=fmt$0[2],fmt$0=fmt$3;continue; - case 3:var fmt$4=fmt$0[2],fmt$0=fmt$4;continue; - case 4:var fmt$5=fmt$0[4],fmt$0=fmt$5;continue; - case 5:var fmt$6=fmt$0[4],fmt$0=fmt$6;continue; - case 6:var fmt$7=fmt$0[4],fmt$0=fmt$7;continue; - case 7:var fmt$8=fmt$0[4],fmt$0=fmt$8;continue; - case 8:var fmt$9=fmt$0[4],fmt$0=fmt$9;continue; - case 9:var fmt$10=fmt$0[2],fmt$0=fmt$10;continue; - case 10:var fmt$11=fmt$0[1],fmt$0=fmt$11;continue; - case 11:var fmt$12=fmt$0[2],fmt$0=fmt$12;continue; - 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)); - if(counter < 50) - {var counter$0=counter + 1 | 0; - return take_fmtty_format_readers$0(counter$0,k,_iT_,rest)} - return caml_trampoline_return - (take_fmtty_format_readers$0,[0,k,_iT_,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 - rest$0=fmt$0[2], - match=_iU_[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], - fmt$20=match$0[1], - fmt$21=concat_fmt(fmt$20,rest$1), - fmt$0=fmt$21; - continue; - case 19: - var fmt_rest=fmt$0[1]; - return function(reader) - {function new_k(readers_rest) - {return caml_call1(k,[0,reader,readers_rest])} - return take_format_readers(new_k,fmt_rest)}; - case 20:var fmt$22=fmt$0[3],fmt$0=fmt$22;continue; - case 21:var fmt$23=fmt$0[2],fmt$0=fmt$23;continue; - case 22:var fmt$24=fmt$0[1],fmt$0=fmt$24;continue; - case 23: - var rest$2=fmt$0[2],ign=fmt$0[1]; - if(typeof ign === "number") - switch(ign) - {case 0:var fmt$0=rest$2;continue; - case 1:var fmt$0=rest$2;continue; - case 2: - return function(reader) - {function new_k(readers_rest) - {return caml_call1(k,[0,reader,readers_rest])} - return take_format_readers(new_k,rest$2)}; - default:var fmt$0=rest$2;continue} - else - switch(ign[0]) - {case 0:var fmt$0=rest$2;continue; - case 1:var fmt$0=rest$2;continue; - case 2:var fmt$0=rest$2;continue; - case 3:var fmt$0=rest$2;continue; - case 4:var fmt$0=rest$2;continue; - case 5:var fmt$0=rest$2;continue; - case 6:var fmt$0=rest$2;continue; - case 7:var fmt$0=rest$2;continue; - case 8:var fmt$0=rest$2;continue; - case 9: - var fmtty$0=ign[2]; - if(counter < 50) - {var counter$1=counter + 1 | 0; - return take_fmtty_format_readers$0 - (counter$1,k,fmtty$0,rest$2)} - return caml_trampoline_return - (take_fmtty_format_readers$0,[0,k,fmtty$0,rest$2]); - case 10:var fmt$0=rest$2;continue; - default:var fmt$0=rest$2;continue} - default:var fmt$25=fmt$0[3],fmt$0=fmt$25;continue}} - function take_fmtty_format_readers$0(counter,k,fmtty,fmt) - {var fmtty$0=fmtty; - for(;;) - if(typeof fmtty$0 === "number") - {if(counter < 50) - {var counter$0=counter + 1 | 0; - return take_format_readers$0(counter$0,k,fmt)} - return caml_trampoline_return(take_format_readers$0,[0,k,fmt])} - else - switch(fmtty$0[0]) - {case 0:var fmtty$1=fmtty$0[1],fmtty$0=fmtty$1;continue; - case 1:var fmtty$2=fmtty$0[1],fmtty$0=fmtty$2;continue; - case 2:var fmtty$3=fmtty$0[1],fmtty$0=fmtty$3;continue; - case 3:var fmtty$4=fmtty$0[1],fmtty$0=fmtty$4;continue; - case 4:var fmtty$5=fmtty$0[1],fmtty$0=fmtty$5;continue; - case 5:var fmtty$6=fmtty$0[1],fmtty$0=fmtty$6;continue; - case 6:var fmtty$7=fmtty$0[1],fmtty$0=fmtty$7;continue; - case 7:var fmtty$8=fmtty$0[1],fmtty$0=fmtty$8;continue; - case 8:var fmtty$9=fmtty$0[2],fmtty$0=fmtty$9;continue; - case 9: - var - rest=fmtty$0[3], - ty2=fmtty$0[2], - ty1=fmtty$0[1], - ty=trans(symm(ty1),ty2), - fmtty$10=concat_fmtty(ty,rest), - fmtty$0=fmtty$10; - continue; - case 10:var fmtty$11=fmtty$0[1],fmtty$0=fmtty$11;continue; - case 11:var fmtty$12=fmtty$0[1],fmtty$0=fmtty$12;continue; - case 12:var fmtty$13=fmtty$0[1],fmtty$0=fmtty$13;continue; - case 13: - var fmt_rest=fmtty$0[1]; - return function(reader) - {function new_k(readers_rest) - {return caml_call1(k,[0,reader,readers_rest])} - return take_fmtty_format_readers(new_k,fmt_rest,fmt)}; - default: - var fmt_rest$0=fmtty$0[1]; - return function(reader) - {function new_k(readers_rest) - {return caml_call1(k,[0,reader,readers_rest])} - return take_fmtty_format_readers(new_k,fmt_rest$0,fmt)}}} - function take_format_readers(k,fmt) - {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 make_scanf(ib,fmt,readers) - {var fmt$0=fmt; - for(;;) - if(typeof fmt$0 === "number") - return 0; - else - switch(fmt$0[0]) - {case 0: - var rest=fmt$0[1]; - scan_char(0,ib); - var c=token_char(ib); - return [0,c,make_scanf(ib,rest,readers)]; - case 1: - var rest$0=fmt$0[1]; - scan_caml_char(0,ib); - 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]) - {case 17: - var - rest$2=_iH_[2], - fmting_lit=_iH_[1], - match=stopper_of_formatting_lit(fmting_lit), - str=match[2], - stp=match[1], - scan$0= - function(width,param,ib) - {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); - case 18: - var _iI_=_iH_[1]; - if(0 === _iI_[0]) - {var - rest$3=_iH_[2], - match$0=_iI_[1], - fmt$1=match$0[1], - scan$1= - function(width,param,ib){return scan_string(_cF_,width,ib)}; - return pad_prec_scanf - (ib, - concat_fmt(fmt$1,rest$3), - readers, - _iG_, - 0, - scan$1, - token_string)} - var - rest$4=_iH_[2], - match$1=_iI_[1], - fmt$2=match$1[1], - scan$2= - function(width,param,ib){return scan_string(_cG_,width,ib)}; - return pad_prec_scanf - (ib, - concat_fmt(fmt$2,rest$4), - readers, - _iG_, - 0, - scan$2, - token_string) - } - 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); - case 3: - var - rest$5=fmt$0[2], - pad=fmt$0[1], - scan$3=function(width,param,ib){return scan_caml_string(width,ib)}; - return pad_prec_scanf(ib,rest$5,readers,pad,0,scan$3,token_string); - case 4: - var - rest$6=fmt$0[4], - prec=fmt$0[3], - pad$0=fmt$0[2], - iconv=fmt$0[1], - conv=integer_conversion_of_char(char_of_iconv(iconv)), - scan$4= - function(width,param,ib) - {return scan_int_conversion(conv,width,ib)}; - return pad_prec_scanf - (ib, - rest$6, - readers, - pad$0, - prec, - scan$4, - function(ib) - {return caml_int_of_string(token_int_literal(conv,ib))}); - case 5: - var - rest$7=fmt$0[4], - prec$0=fmt$0[3], - pad$1=fmt$0[2], - iconv$0=fmt$0[1], - conv$0=integer_conversion_of_char(char_of_iconv(iconv$0)), - scan$5= - function(width,param,ib) - {return scan_int_conversion(conv$0,width,ib)}; - return pad_prec_scanf - (ib, - rest$7, - readers, - pad$1, - prec$0, - scan$5, - function(ib) - {return caml_int_of_string(token_int_literal(conv$0,ib))}); - case 6: - var - rest$8=fmt$0[4], - prec$1=fmt$0[3], - pad$2=fmt$0[2], - iconv$1=fmt$0[1], - conv$1=integer_conversion_of_char(char_of_iconv(iconv$1)), - scan$6= - function(width,param,ib) - {return scan_int_conversion(conv$1,width,ib)}; - return pad_prec_scanf - (ib, - rest$8, - readers, - pad$2, - prec$1, - scan$6, - function(ib) - {return caml_int_of_string(token_int_literal(conv$1,ib))}); - case 7: - var - rest$9=fmt$0[4], - prec$2=fmt$0[3], - pad$3=fmt$0[2], - iconv$2=fmt$0[1], - conv$2=integer_conversion_of_char(char_of_iconv(iconv$2)), - scan$7= - function(width,param,ib) - {return scan_int_conversion(conv$2,width,ib)}; - return pad_prec_scanf - (ib, - rest$9, - readers, - pad$3, - prec$2, - scan$7, - function(ib) - {return caml_int64_of_string(token_int_literal(conv$2,ib))}); - case 8: - switch(fmt$0[1][2]) - {case 5: - case 8: - var rest$11=fmt$0[4],prec$4=fmt$0[3],pad$5=fmt$0[2]; - return pad_prec_scanf - (ib, - rest$11, - readers, - pad$5, - prec$4, - scan_caml_float, - token_float); - case 6: - case 7: - var rest$12=fmt$0[4],prec$5=fmt$0[3],pad$6=fmt$0[2]; - return pad_prec_scanf - (ib,rest$12,readers,pad$6,prec$5,scan_hex_float,token_float); - default: - var rest$10=fmt$0[4],prec$3=fmt$0[3],pad$4=fmt$0[2]; - return pad_prec_scanf - (ib,rest$10,readers,pad$4,prec$3,scan_float,token_float)} - case 9: - var - rest$13=fmt$0[2], - pad$7=fmt$0[1], - scan$8= - function(param,_iS_,ib) - {var - c=checked_peek_char(ib), - m= - 102 === c - ?5 - :116 === c?4:bad_input(caml_call1(sprintf(_cC_),c)); - return scan_string(0,m,ib)}; - return pad_prec_scanf(ib,rest$13,readers,pad$7,0,scan$8,token_bool); - case 10: - var rest$14=fmt$0[1]; - if(end_of_input(ib)){var fmt$0=rest$14;continue} - 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); - var fmt$0=rest$15; - continue; - case 12: - var rest$16=fmt$0[2],chr=fmt$0[1]; - check_char(ib,chr); - var fmt$0=rest$16; - continue; - case 13: - var rest$17=fmt$0[3],fmtty=fmt$0[2],pad_opt=fmt$0[1]; - 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_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] !== Failure)throw exn; - var msg=exn[2],fmt$3=bad_input(msg)} - return [0,fmt$3,make_scanf(ib,rest$17,readers)]; - case 14: - var rest$18=fmt$0[3],fmtty$0=fmt$0[2],pad_opt$0=fmt$0[1]; - scan_caml_string(width_of_pad_opt(pad_opt$0),ib); - var s$0=token_string(ib); - try - {var - match$2=fmt_ebb_of_string(0,s$0), - fmt$6=match$2[1], - 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)), - fmt$5=fmt$8, - fmt$4=_iL_} - 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]} - return [0, - [0,fmt$4,s$0], - make_scanf(ib,concat_fmt(fmt$5,rest$18),readers)]; - case 15:return invalid_arg(cst_scanf_bad_conversion_a); - case 16:return invalid_arg(cst_scanf_bad_conversion_t); - case 17: - 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_); - 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]; - 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]; - check_char(ib,64); - check_char(ib,91); - var fmt$12=concat_fmt(fmt$11,rest$21),fmt$0=fmt$12; - continue; - case 19: - var fmt_rest=fmt$0[1]; - if(readers) - {var - readers_rest=readers[2], - reader=readers[1], - x=caml_call1(reader,ib); - 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 - rest$23=_iP_[2], - fmting_lit$0=_iP_[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_); - 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_); - 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)]; - case 21: - var - rest$24=fmt$0[2], - counter=fmt$0[1], - count=get_counter(ib,counter); - return [0,count,make_scanf(ib,rest$24,readers)]; - case 22: - var rest$25=fmt$0[1],c$1=checked_peek_char(ib); - return [0,c$1,make_scanf(ib,rest$25,readers)]; - case 23: - var - rest$26=fmt$0[2], - ign=fmt$0[1], - match$7=param_format_of_ignored_format(ign,rest$26), - 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_]; - 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) - {var f$0=f,args$0=args; - for(;;) - {if(args$0) - {var - r=args$0[2], - x=args$0[1], - f$1=caml_call1(f$0,x), - f$0=f$1, - args$0=r; - continue} - return f$0}} - function k(readers,f) - {reset_token(ib); - try - {var _iE_=[0,make_scanf(ib,fmt,readers)],_iD_=_iE_} - catch(exc) - {exc = caml_wrap_exception(exc); - var switch$0=0; - if - (exc[1] - !== - Scan_failure - && - exc[1] - !== - Failure - && - exc - !== - End_of_file) - {if(exc[1] !== Invalid_argument)throw exc; - var - msg=exc[2], - _iC_= - 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]; - return caml_call2(ef,ib,exc)} - return take_format_readers(k,fmt)} - function bscanf(ib,fmt){return kscanf(ib,scanf_bad_input,fmt)} - function ksscanf(s,ef,fmt){return kscanf(from_string$1(s),ef,fmt)} - function sscanf(s,fmt) - {return kscanf(from_string$1(s),scanf_bad_input,fmt)} - function scanf(fmt){return kscanf(stdib,scanf_bad_input,fmt)} - function bscanf_format(ib,format,f) - {scan_caml_string(max_int,ib); - var str=token_string(ib); - try - {var _iB_=format_of_string_format(str,format),fmt=_iB_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] !== Failure)throw exn; - var msg=exn[2],fmt=bad_input(msg)} - return caml_call1(f,fmt)} - 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 unescaped(s) - {function _iz_(x){return x} - return caml_call1(sscanf(cat(cst$92,cat(s,cst$91)),_cI_),_iz_)} - 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)} - var - Stdlib_Scanf= - [0, - [0, - stdib, - from_file, - from_file_bin, - close_in, - from_file, - from_file_bin, - from_string$1, - from_function$0, - from_channel$0, - end_of_input, - beginning_of_input, - name_of_input, - stdib], - Scan_failure, - bscanf, - sscanf, - scanf, - kscanf, - ksscanf, - bscanf_format, - sscanf_format, - format_from_string, - unescaped, - fscanf, - kfscanf]; - caml_register_global(819,Stdlib_Scanf,"Stdlib__Scanf"); - function register(name,v){return caml_register_named_value(name,v)} - function register_exception(name,exn) - {var slot=caml_obj_tag(exn) === 248?exn:exn[1]; - return caml_register_named_value(name,slot)} - var Stdlib_Callback=[0,register,register_exception]; - caml_register_global(820,Stdlib_Callback,"Stdlib__Callback"); - 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_; - 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} - break}} - accu[1] = accu[1] & 2147483647; - var tag=1073741823 < accu[1]?accu[1] + 2147483648 | 0:accu[1]; - return tag} - function compare$14(x,y){return caml_string_compare(x,y)} - var Vars=caml_call1(Stdlib_Map[1],[0,compare$14]); - function compare$15(x,y){return caml_string_compare(x,y)} - var - Meths=caml_call1(Stdlib_Map[1],[0,compare$15]), - compare$16=caml_int_compare, - Labs=caml_call1(Stdlib_Map[1],[0,compare$16]), - dummy_table=[0,0,[0,dummy_item],Meths[1],Labs[1],0,0,Vars[1],0], - table_count=[0,0], - dummy_met=caml_obj_block(0,0); - function fit_size(n){return 2 < n?fit_size((n + 1 | 0) / 2 | 0) * 2 | 0:n} - function new_table(pub_labels) - {table_count[1]++; - var - 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_; - 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} - 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 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} - else - var _io_=_in_; - return _io_} - var method_count=[0,0],inst_var_count=[0,0]; - function new_method(table) - {var index=table[2].length - 1; - resize$1(table,index + 1 | 0); - 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 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_}} - function get_method_labels(table,names) - {return map$7(function(_ik_){return get_method_label(table,_ik_)},names)} - function set_method(table,label,element) - {method_count[1]++; - return caml_call2(Labs[28],label,table[4]) - ?(resize$1(table,label + 1 | 0), - caml_check_bound(table[2],label)[1 + label] - = - element, - 0) - :(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) - return caml_check_bound(table[2],label)[1 + label]; - throw _ij_}} - function to_list$3(arr){return 0 === arr?0:to_list$1(arr)} - function narrow(table,vars,virt_meths,concr_meths) - {var - vars$0=to_list$3(vars), - virt_meths$0=to_list$3(virt_meths), - concr_meths$0=to_list$3(concr_meths), - virt_meth_labs= - map$4 - (function(_ih_){return get_method_label(table,_ih_)},virt_meths$0), - concr_meth_labs= - map$4 - (function(_ig_){return get_method_label(table,_ig_)},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) - {return mem(lab,vars$0)?caml_call3(Vars[4],lab,info,tvars):tvars} - table[7] = caml_call3(Vars[13],_h$_,_h__,_h9_); - 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]; - 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_); - return 0}, - concr_meths$0, - concr_meth_labs); - iter2$0 - (function(met,label) - {by_name[1] = caml_call3(Meths[4],met,label,by_name[1]); - by_label[1] = caml_call3(Labs[4],label,0,by_label[1]); - return 0}, - virt_meths$0, - virt_meth_labs); - table[3] = by_name[1]; - table[4] = by_label[1]; - var _ia_=0,_ib_=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_); - return 0} - function widen(table) - {var - match=hd(table[5]), - vars=match[6], - virt_meths=match[5], - saved_vars=match[4], - saved_hidden_meths=match[3], - by_label=match[2], - by_name=match[1]; - table[5] = tl(table[5]); - table[7] - = - fold_left$0 - (function(s,v) - {var _h8_=caml_call2(Vars[28],v,table[7]); - return caml_call3(Vars[4],v,_h8_,s)}, - saved_vars, - vars); - table[3] = by_name; - table[4] = by_label; - var _h7_=table[6]; - table[6] - = - fold_right - (function(met,hm) - {var lab=met[1];return mem(lab,virt_meths)?hm:[0,met,hm]}, - _h7_, - 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 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_}} - function to_array(arr){return caml_equal(arr,0)?[0]:arr} - function new_methods_variables(table,meths,vals) - {var - meths$0=to_array(meths), - 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_; - for(;;) - {var - _h3_= - 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} - break}} - var _hZ_=nvals - 1 | 0,_hY_=0; - if(! (_hZ_ < 0)) - {var i=_hY_; - 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} - 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_}} - function get_variables(table,names) - {return map$7(function(_hT_){return get_variable(table,_hT_)},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]); - var - tags=map$7(public_method_label,public_methods), - table=new_table(tags); - iteri$3 - (function(i,met) - {var lab=(i * 2 | 0) + 2 | 0; - table[3] = caml_call3(Meths[4],met,lab,table[3]); - table[4] = caml_call3(Labs[4],lab,1,table[4]); - return 0}, - public_methods); - return table} - function init_class(table) - {inst_var_count[1] = (inst_var_count[1] + table[1] | 0) - 1 | 0; - table[8] = rev(table[8]); - return resize$1 - (table, - 3 + ((caml_check_bound(table[2],1)[2] * 16 | 0) / 32 | 0) | 0)} - function inherits(cla,vals,virt_meths,concr_meths,param,top) - {var env=param[4],super$0=param[2]; - narrow(cla,vals,virt_meths,concr_meths); - 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_= - [0, - map$7 - (function(nm){return get_method(cla,get_method_label(cla,nm))},_hP_), - _hO_], - _hR_=to_array(vals); - return caml_array_concat - ([0, - [0,init], - [0, - map$7(function(_hS_){return get_variable(cla,_hS_)},_hR_), - _hQ_]])} - function make_class(pub_meths,class_init) - {var table=create_table(pub_meths),env_init=caml_call1(class_init,table); - init_class(table); - return [0,caml_call1(env_init,0),class_init,env_init,0]} - function make_class_store(pub_meths,class_init,init_table) - {var table=create_table(pub_meths),env_init=caml_call1(class_init,table); - init_class(table); - init_table[2] = class_init; - init_table[1] = env_init; - return 0} - function dummy_class(loc) - {function undef(param){throw [0,Undefined_recursive_module,loc]} - return [0,undef,undef,undef,0]} - function create_object(table) - {var obj=caml_obj_block(248,table[1]); - obj[1] = table[2]; - return caml_set_oo_id(obj)} - function create_object_opt(obj_0,table) - {if(obj_0)return obj_0; - var obj=caml_obj_block(248,table[1]); - obj[1] = table[2]; - return caml_set_oo_id(obj)} - function iter_f(obj,param) - {var param$0=param; - for(;;) - {if(param$0) - {var l=param$0[2],f=param$0[1]; - caml_call1(f,obj); - var param$0=l; - continue} - return 0}} - function run_initializers(obj,table) - {var inits=table[8],_hN_=0 !== inits?1:0; - return _hN_?iter_f(obj,inits):_hN_} - function run_initializers_opt(obj_0,obj,table) - {if(obj_0)return obj; - var inits=table[8]; - if(0 !== inits)iter_f(obj,inits); - return obj} - function create_object_and_run_initiali(obj_0,table) - {if(obj_0)return obj_0; - var obj=create_object(table); - run_initializers(obj,table); - return obj} - function get_data$0(param) - {if(param)return param[2];throw [0,Assert_failure,_cN_]} - function build_path(n,keys,tables) - {var res=[0,0,0,0],r=[0,res],_hJ_=0; - if(! (n < 0)) - {var i=_hJ_; - 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} - break}} - var _hK_=r[1]; - if(tables){tables[2] = _hK_;return res} - throw [0,Assert_failure,_cK_]} - function lookup_tables(root,keys) - {var tables$2=get_data$0(root); - if(tables$2) - {var i$1=keys.length - 1 - 1 | 0,i=i$1,tables=tables$2; - a: - for(;;) - {if(0 <= i) - {var key=caml_check_bound(keys,i)[1 + i],tables$0=tables; - for(;;) - {if(tables$0) - {if(tables$0[1] === key) - {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_]} - if(tables$0) - {var _hI_=tables$0[3]; - if(_hI_){var tables$0=_hI_;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_]}} - return tables}} - return build_path(keys.length - 1 - 1 | 0,keys,root)} - function new_cache(table) - {var n=new_method(table),switch$0=0; - if - (0 - !== - (n % 2 | 0) - && - ! - ((2 + ((caml_check_bound(table[2],1)[2] * 16 | 0) / 32 | 0) | 0) < n)) - {var n$0=new_method(table);switch$0 = 1} - if(! switch$0)var n$0=n; - caml_check_bound(table[2],n$0)[1 + n$0] = 0; - return n$0} - function set_methods(table,methods) - {var len=methods.length - 1,i=[0,0]; - for(;;) - {if(i[1] < len) - {var - _hC_=i[1], - label=caml_check_bound(methods,_hC_)[1 + _hC_], - next= - function(param) - {i[1]++; - var _hH_=i[1]; - return caml_check_bound(methods,_hH_)[1 + _hH_]}, - clo=next(0); - if(typeof clo === "number") - switch(clo) - {case 0: - var - x=next(0), - clo$0=function(x){return function(obj){return x}}(x); - break; - case 1: - var - n=next(0), - clo$0=function(n){return function(obj){return obj[1 + n]}}(n); - break; - case 2: - var - e=next(0), - n$0=next(0), - clo$0= - function(e,n){return function(obj){return obj[1 + e][1 + n]}} - (e,n$0); - break; - case 3: - var - n$1=next(0), - clo$0= - function(n) - {return function(obj){return caml_call1(obj[1][1 + n],obj)}} - (n$1); - break; - case 4: - var - n$2=next(0), - clo$0= - function(n){return function(obj,x){obj[1 + n] = x;return 0}} - (n$2); - break; - case 5: - var - f=next(0), - x$0=next(0), - clo$0= - function(f,x){return function(obj){return caml_call1(f,x)}} - (f,x$0); - break; - case 6: - var - f$0=next(0), - n$3=next(0), - clo$0= - function(f,n) - {return function(obj){return caml_call1(f,obj[1 + n])}} - (f$0,n$3); - break; - case 7: - var - f$1=next(0), - e$0=next(0), - n$4=next(0), - clo$0= - function(f,e,n) - {return function(obj) - {return caml_call1(f,obj[1 + e][1 + n])}} - (f$1,e$0,n$4); - break; - case 8: - var - f$2=next(0), - n$5=next(0), - clo$0= - function(f,n) - {return function(obj) - {return caml_call1(f,caml_call1(obj[1][1 + n],obj))}} - (f$2,n$5); - break; - case 9: - var - f$3=next(0), - x$1=next(0), - y=next(0), - clo$0= - function(f,x,y) - {return function(obj){return caml_call2(f,x,y)}} - (f$3,x$1,y); - break; - case 10: - var - f$4=next(0), - x$2=next(0), - n$6=next(0), - clo$0= - function(f,x,n) - {return function(obj){return caml_call2(f,x,obj[1 + n])}} - (f$4,x$2,n$6); - break; - case 11: - var - f$5=next(0), - x$3=next(0), - e$1=next(0), - n$7=next(0), - clo$0= - function(f,x,e,n) - {return function(obj) - {return caml_call2(f,x,obj[1 + e][1 + n])}} - (f$5,x$3,e$1,n$7); - break; - case 12: - var - f$6=next(0), - x$4=next(0), - n$8=next(0), - clo$0= - function(f,x,n) - {return function(obj) - {return caml_call2(f,x,caml_call1(obj[1][1 + n],obj))}} - (f$6,x$4,n$8); - break; - case 13: - var - f$7=next(0), - n$9=next(0), - x$5=next(0), - clo$0= - function(f,n,x) - {return function(obj){return caml_call2(f,obj[1 + n],x)}} - (f$7,n$9,x$5); - break; - case 14: - var - f$8=next(0), - e$2=next(0), - n$10=next(0), - x$6=next(0), - clo$0= - function(f,e,n,x) - {return function(obj) - {return caml_call2(f,obj[1 + e][1 + n],x)}} - (f$8,e$2,n$10,x$6); - break; - case 15: - var - f$9=next(0), - n$11=next(0), - x$7=next(0), - clo$0= - function(f,n,x) - {return function(obj) - {return caml_call2(f,caml_call1(obj[1][1 + n],obj),x)}} - (f$9,n$11,x$7); - break; - case 16: - var - n$12=next(0), - x$8=next(0), - clo$0= - function(n,x) - {return function(obj) - {return caml_call2(obj[1][1 + n],obj,x)}} - (n$12,x$8); - break; - case 17: - var - n$13=next(0), - m=next(0), - clo$0= - function(n,m) - {return function(obj) - {return caml_call2(obj[1][1 + n],obj,obj[1 + m])}} - (n$13,m); - break; - case 18: - var - n$14=next(0), - e$3=next(0), - m$0=next(0), - clo$0= - function(n,e,m) - {return function(obj) - {return caml_call2(obj[1][1 + n],obj,obj[1 + e][1 + m])}} - (n$14,e$3,m$0); - break; - case 19: - var - n$15=next(0), - m$1=next(0), - 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_)}} - (n$15,m$1); - break; - case 20: - var m$2=next(0),x$9=next(0); - new_cache(table); - var - clo$0= - function(m,x) - {return function(obj) - {return caml_call1(caml_get_public_method(x,m,0),x)}} - (m$2,x$9); - break; - case 21: - var m$3=next(0),n$16=next(0); - new_cache(table); - var - clo$0= - function(m,n) - {return function(obj) - {var _hE_=obj[1 + n]; - return caml_call1(caml_get_public_method(_hE_,m,0),_hE_)}} - (m$3,n$16); - break; - case 22: - var m$4=next(0),e$4=next(0),n$17=next(0); - new_cache(table); - var - 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_)}} - (m$4,e$4,n$17); - break; - default: - var m$5=next(0),n$18=next(0); - new_cache(table); - var - 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_)}} - (m$5,n$18)} - else - var clo$0=clo; - set_method(table,label,clo$0); - i[1]++; - continue} - return 0}} - function stats$0(param) - {return [0,table_count[1],method_count[1],inst_var_count[1]]} - var - CamlinternalOO= - [0, - public_method_label, - new_method, - new_variable, - new_methods_variables, - get_variable, - get_variables, - get_method_label, - get_method_labels, - get_method, - set_method, - set_methods, - narrow, - widen, - add_initializer, - dummy_table, - create_table, - init_class, - inherits, - make_class, - make_class_store, - dummy_class, - copy$7, - create_object, - create_object_opt, - run_initializers, - run_initializers_opt, - create_object_and_run_initiali, - lookup_tables, - params$0, - stats$0]; - caml_register_global(821,CamlinternalOO,"CamlinternalOO"); - var Stdlib_Oo=[0,copy$7,public_method_label,public_method_label]; - caml_register_global(822,Stdlib_Oo,"Stdlib__Oo"); - function init_mod_block(loc,comps$0) - {var - length=comps$0.length - 1, - modu=caml_obj_block(0,length), - _hy_=length - 1 | 0, - _hx_=0; - if(! (_hy_ < 0)) - {var i=_hx_; - for(;;) - {var shape=caml_check_bound(comps$0,i)[1 + i]; - if(typeof shape === "number") - switch(shape) - {case 0: - var - fn$0= - function(i) - {function fn(x) - {var fn$0=modu[1 + i]; - if(fn === fn$0)throw [0,Undefined_recursive_module,loc]; - return caml_call1(fn$0,x)} - return fn}, - fn=fn$0(i), - init=fn; - break; - case 1: - var l=[]; - runtime.caml_update_dummy - (l, - [246, - function(l,i) - {return function(_hA_) - {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_ - ?l$0[1] - :246 === _hB_?force_lazy_block(l$0):l$0}} - (l,i)]); - var init=l; - break; - default:var init=dummy_class(loc)} - else - if(0 === shape[0]) - var comps=shape[1],init=init_mod_block(loc,comps); - else - var v=shape[1],init=v; - modu[1 + i] = init; - var _hz_=i + 1 | 0; - if(_hy_ !== i){var i=_hz_;continue} - break}} - return modu} - function init_mod(loc,shape) - {if(typeof shape !== "number" && 0 === shape[0]) - {var comps=shape[1];return init_mod_block(loc,comps)} - 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_; - for(;;) - {var n$0=n[1 + i],shape=caml_check_bound(comps$0,i)[1 + i]; - if(typeof shape === "number") - if(2 === shape) - {var switch$0=0; - if(0 === caml_obj_tag(n$0) && 4 === n$0.length - 1) - {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} - break}} - else - switch$0 = 1; - if(switch$0)throw [0,Assert_failure,_cQ_]} - 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} - break}} - return 0} - throw [0,Assert_failure,_cR_]} - function update_mod(shape,o,n) - {if(typeof shape !== "number" && 0 === shape[0]) - {var comps=shape[1];return update_mod_block(comps,o,n)} - return failwith(cst_CamlinternalMod_update_mod)} - var CamlinternalMod=[0,init_mod,update_mod]; - caml_register_global(823,CamlinternalMod,"CamlinternalMod"); - var - initial_buffer=caml_create_bytes(32), - buffer=[0,initial_buffer], - bufpos=[0,0]; - function reset_buffer(param) - {buffer[1] = initial_buffer;bufpos[1] = 0;return 0} - function store(c) - {if(caml_ml_bytes_length(buffer[1]) <= bufpos[1]) - {var newbuffer=caml_create_bytes(2 * bufpos[1] | 0); - blit(buffer[1],0,newbuffer,0,bufpos[1]); - buffer[1] = newbuffer} - caml_bytes_set(buffer[1],bufpos[1],c); - bufpos[1]++; - return 0} - function get_string(param) - {var s=sub_string(buffer[1],0,bufpos[1]); - buffer[1] = initial_buffer; - return s} - function make_lexer(keywords) - {var kwd_table=caml_call2(Stdlib_Hashtbl[1],0,17); - iter$2 - (function(s){return caml_call3(Stdlib_Hashtbl[5],kwd_table,s,[0,s])}, - 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_} - catch(_hq_) - {_hq_ = caml_wrap_exception(_hq_); - if(_hq_ === Not_found)throw [0,Error,cat(cst_Illegal_character,s)]; - 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 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}} - 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; - if(! switch$0) - {junk(strm);store(_hj_);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 switch$0=0; - if(69 === _hg_ || 101 === _hg_)switch$0 = 1; - if(switch$0){junk(s);store(69);return exponent_part(s)}} - else - {if(46 === _hg_) - {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}} - else - if(30 < _hi_ - 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}}} - 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} - else - if(29 === _hf_)switch$0 = 1} - else - if(65 <= _he_) - {if(92 === _he_)switch$0 = 1} - else - if(33 <= _he_) - switch(_he_ - 33 | 0) - {case 0: - case 2: - case 3: - case 4: - case 5: - case 9: - case 10: - case 12: - case 14: - case 25: - case 27: - case 28: - case 29: - case 30: - case 31:switch$0 = 1;break - } - if(switch$0){junk(strm);store(_he_);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)}} - reset_buffer(0); - store(45); - return ident2(s)} - function ident(strm) - {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} - else - if(1 !== _hc_)switch$0 = 1} - else - if(48 <= _hb_) - {if(6 < _hb_ - 58 >>> 0)switch$0 = 1} - else - if(39 === _hb_)switch$0 = 1; - if(switch$0){junk(strm);store(_hb_);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} - else - if(125 !== _g3_)switch$0 = 2} - else - {var _g4_=_g3_ - 65 | 0; - if(57 < _g4_ >>> 0) - {if(! (58 <= _g4_)) - switch(_g4_ + 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_) - {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_} - store(c$0); - continue} - junk(strm); - store(_g6_); - continue} - throw Failure$0} - case 39: - junk(strm); - try - {var match$2=peek$0(strm); - if(! match$2)throw Failure$0; - var _g7_=match$2[1]; - if(92 === _g7_) - {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_} - else - {junk(strm);var c=_g7_}} - catch(_g__) - {_g__ = caml_wrap_exception(_g__); - if(_g__ === Failure$0)throw [0,Error,cst$94]; - throw _g__} - var match$0=peek$0(strm); - if(match$0 && 39 === match$0[1]) - {junk(strm);return [0,[5,c]]} - throw [0,Error,cst$95]; - case 40: - junk(strm); - if(counter < 50) - {var counter$0=counter + 1 | 0; - return maybe_comment(counter$0,strm)} - return caml_trampoline_return(maybe_comment,[0,strm]); - case 45:junk(strm);return neg_number(strm); - case 9: - case 10: - case 12: - case 13: - case 26: - case 32:junk(strm);continue; - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: - junk(strm);reset_buffer(0);store(_g3_);return number(strm); - case 33: - case 35: - case 36: - case 37: - case 38: - case 42: - case 43: - case 47: - case 58: - case 60: - case 61: - case 62: - case 63: - case 64:switch$0 = 2;break - }} - else - {var _g5_=_g4_ - 26 | 0; - if(5 < _g5_ >>> 0) - switch$0 = 1; - else - switch(_g5_) - {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 1: - junk(strm);reset_buffer(0);store(_g3_);return ident(strm); - default: - junk(strm);reset_buffer(0);store(_g3_);return ident2(strm)}} - return 0}} - function maybe_comment(counter,strm) - {var match=peek$0(strm); - if(match && 42 === match[1]) - {junk(strm); - comment(strm); - if(counter < 50) - {var counter$0=counter + 1 | 0;return next_token$0(counter$0,strm)} - 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))} - 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)}]; - function create(opt,initial_size) - {if(opt) - var sth=opt[1],random=sth; - else - var random=caml_call1(Stdlib_Hashtbl[17],0); - var x=16; - for(;;) - {if(! (initial_size <= x) && ! (max_array_length < (x * 2 | 0))) - {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_); - 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_; - for(;;) - {caml_check_bound(h[2],i)[1 + i] = 0; - var _gZ_=i + 1 | 0; - if(_gY_ !== i){var i=_gZ_;continue} - break}} - return 0} - function reset(h) - {var len=h[2].length - 1; - return len === h[4] - ?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_]} - function key_index(h,hkey){return hkey & (h[2].length - 1 - 1 | 0)} - function clean(h) - {function do_bucket(param) - {var param$0=param; - for(;;) - {if(param$0) - {var hkey=param$0[1],rest=param$0[3],c=param$0[2]; - if(caml_call1(H[7],c)) - {var rest$0=param$0[3],c$0=param$0[2]; - return [0,hkey,c$0,do_bucket(rest$0)]} - h[1] = h[1] - 1 | 0; - 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_; - 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} - 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_) - {var ndata=caml_make_vect(nsize,0); - h[2] = ndata; - var - insert_bucket= - function(param) - {if(param) - {var rest=param[3],data=param[2],hkey=param[1]; - 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_; - return 0} - return 0}, - _gM_=osize - 1 | 0, - _gL_=0; - if(! (_gM_ < 0)) - {var i=_gL_; - for(;;) - {insert_bucket(caml_check_bound(odata,i)[1 + i]); - var _gO_=i + 1 | 0; - if(_gM_ !== i){var i=_gO_;continue} - break}} - var _gN_=0} - else - var _gN_=_gK_; - return _gN_} - function add(h,key,info) - {var - hkey=caml_call2(H[2],h[3],key), - i=key_index(h,hkey), - container=caml_call2(H[1],key,info), - 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_} - function remove(h,key) - {var hkey=caml_call2(H[2],h[3],key); - function remove_bucket(param) - {var param$0=param; - for(;;) - {if(param$0) - {var hk=param$0[1],next=param$0[3],c=param$0[2]; - if(hkey === hk) - {var match=caml_call2(H[3],c,key); - switch(match) - {case 0:h[1] = h[1] - 1 | 0;return next; - case 1:return [0,hk,c,remove_bucket(next)]; - default:h[1] = h[1] - 1 | 0;var param$0=next;continue}} - var next$0=param$0[3],c$0=param$0[2]; - return [0,hk,c$0,remove_bucket(next$0)]} - 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_; - 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_], - param=param$1; - for(;;) - {if(param) - {var hk=param[1],rest=param[3],c=param[2]; - if(hkey === hk) - {var match=caml_call2(H[3],c,key); - switch(match) - {case 0: - var match$0=caml_call1(H[4],c); - if(match$0){var d=match$0[1];return d} - var param=rest; - continue; - case 1:var param=rest;continue; - default:var param=rest;continue}} - var param$0=param[3],param=param$0; - continue} - throw Not_found}} - 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_], - param=param$1; - for(;;) - {if(param) - {var hk=param[1],rest=param[3],c=param[2]; - if(hkey === hk) - {var match=caml_call2(H[3],c,key); - switch(match) - {case 0: - var d=caml_call1(H[4],c); - if(d)return d; - var param=rest; - continue; - case 1:var param=rest;continue; - default:var param=rest;continue}} - var param$0=param[3],param=param$0; - continue} - return 0}} - function find_all(h,key) - {var hkey=caml_call2(H[2],h[3],key); - function find_in_bucket(param) - {var param$0=param; - for(;;) - {if(param$0) - {var hk=param$0[1],rest=param$0[3],c=param$0[2]; - if(hkey === hk) - {var match=caml_call2(H[3],c,key); - switch(match) - {case 0: - var match$0=caml_call1(H[4],c); - if(match$0) - {var d=match$0[1];return [0,d,find_in_bucket(rest)]} - var param$0=rest; - continue; - case 1:var param$0=rest;continue; - default:var param$0=rest;continue}} - 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_])} - function replace(h,key,info) - {var hkey=caml_call2(H[2],h[3],key); - function replace_bucket(param) - {var param$0=param; - for(;;) - {if(param$0) - {var hk=param$0[1],next=param$0[3],c=param$0[2]; - if(hkey === hk) - {var match=caml_call2(H[3],c,key); - if(match){var param$0=next;continue} - return caml_call3(H[6],c,key,info)} - var param$1=param$0[3],param$0=param$1; - continue} - 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 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_}} - 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_], - param=param$1; - for(;;) - {if(param) - {var hk=param[1],rest=param[3],c=param[2]; - if(hk === hkey) - {var match=caml_call2(H[3],c,key); - if(match){var param=rest;continue} - return 1} - var param$0=param[3],param=param$0; - 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_; - a: - for(;;) - {var param$0=caml_check_bound(d$0,i)[1 + i],param=param$0; - for(;;) - {if(param) - {var - rest=param[3], - c=param[2], - match=caml_call1(H[5],c), - match$0=caml_call1(H[4],c), - switch$0=0; - if(match && match$0) - {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} - 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_; - a: - for(;;) - {var - _gv_=accu$1[1], - b$0=caml_check_bound(d$0,i)[1 + i], - b=b$0, - accu=_gv_; - for(;;) - {if(b) - {var - rest=b[3], - c=b[2], - match=caml_call1(H[5],c), - match$0=caml_call1(H[4],c), - switch$0=0; - if(match && match$0) - {var d=match$0[1],k=match[1],accu$0=caml_call3(f,k,d,accu); - switch$0 = 1} - if(! switch$0)var accu$0=accu; - var b=rest,accu=accu$0; - continue} - accu$1[1] = accu; - var _gw_=i + 1 | 0; - if(_gu_ !== i){var i=_gw_;continue a} - break} - break}} - return accu$1[1]} - function filter_map_inplace(f,h) - {function do_bucket(param) - {var param$0=param; - for(;;) - {if(param$0) - {var - rest=param$0[3], - c=param$0[2], - hk=param$0[1], - match=caml_call1(H[5],c), - match$0=caml_call1(H[4],c); - if(match && match$0) - {var d=match$0[1],k=match[1],match$1=caml_call2(f,k,d); - if(match$1) - {var new_d=match$1[1]; - caml_call3(H[6],c,k,new_d); - return [0,hk,c,do_bucket(rest)]} - var param$0=rest; - continue} - 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_; - 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} - break}} - return 0} - function length(h){return h[1]} - function bucket_length(accu,param) - {var accu$0=accu,param$0=param; - for(;;) - {if(param$0) - {var - param$1=param$0[3], - accu$1=accu$0 + 1 | 0, - accu$0=accu$1, - param$0=param$1; - continue} - return accu$0}} - function stats(h) - {var - _gl_=h[2], - _gm_=0, - mbl= - fold_left$3 - (function(m,b){return max$1(m,bucket_length(0,b))},_gm_,_gl_), - histo=caml_make_vect(mbl + 1 | 0,0), - _gn_=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_; - return 0}, - _gn_); - return [0,h[1],h[2].length - 1,mbl,histo]} - function bucket_length_alive(accu,param) - {var accu$0=accu,param$0=param; - for(;;) - {if(param$0) - {var rest=param$0[3],c=param$0[2]; - if(caml_call1(H[7],c)) - {var accu$1=accu$0 + 1 | 0,accu$0=accu$1,param$0=rest;continue} - var param$1=param$0[3],param$0=param$1; - continue} - return accu$0}} - function stats_alive(h) - {var - size=[0,0], - _gh_=h[2], - _gi_=0, - mbl= - fold_left$3 - (function(m,b){return max$1(m,bucket_length_alive(0,b))},_gi_,_gh_), - histo=caml_make_vect(mbl + 1 | 0,0), - _gj_=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_; - return 0}, - _gj_); - return [0,size[1],h[2].length - 1,mbl,histo]} - function to_seq(tbl) - {var tbl_data=tbl[2]; - function aux(i,buck,param) - {var i$0=i,buck$0=buck; - for(;;) - {if(buck$0) - {var - next=buck$0[3], - c=buck$0[2], - match=caml_call1(H[5],c), - match$0=caml_call1(H[4],c); - if(match && match$0) - {var data=match$0[1],key=match[1]; - return [0, - [0,key,data], - function(_gg_){return aux(i$0,next,_gg_)}]} - var buck$0=next; - continue} - if(i$0 === tbl_data.length - 1)return 0; - var - buck$1=caml_check_bound(tbl_data,i$0)[1 + i$0], - i$1=i$0 + 1 | 0, - i$0=i$1, - buck$0=buck$1; - continue}} - var _gd_=0,_ge_=0; - return function(_gf_){return aux(_ge_,_gd_,_gf_)}} - 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_)}} - 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_)}} - function add_seq(tbl,i) - {return iter - (function(param) - {var v=param[2],k=param[1];return add(tbl,k,v)}, - i)} - function replace_seq(tbl,i) - {return iter - (function(param) - {var v=param[2],k=param[1];return replace(tbl,k,v)}, - i)} - function of_seq(i){var tbl=create(0,16);replace_seq(tbl,i);return tbl} - return [0, - create, - clear, - reset, - copy, - add, - remove, - find, - find_opt, - find_all, - replace, - mem, - iter$0, - filter_map_inplace, - fold, - length, - stats, - to_seq, - to_seq_keys, - to_seq_values, - add_seq, - replace_seq, - 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 make$4(key,data) - {var eph=create$5(0);set_data(eph,data);set_key$0(eph,key);return eph} - function query(eph,key) - {var match=get_key$0(eph); - if(match){var k=match[1];return k === key?get_data$1(eph):0} - return 0} - function MakeSeeded$1(H) - {function create(k,d) - {var c=create$5(0);set_data(c,d);set_key$0(c,k);return c} - var hash=H[2]; - function equal(c,k) - {var match=get_key$0(c); - if(match){var k$0=match[1];return caml_call2(H[1],k,k$0)?0:1} - return 2} - function set_key_data(c,k,d) - {unset_data(c);set_key$0(c,k);return set_data(c,d)} - return MakeSeeded$0 - ([0, - create, - hash, - equal, - get_data$1, - get_key$0, - set_key_data, - check_key$0])} - function Make$2(H) - {var equal=H[1]; - function hash(seed,x){return caml_call1(H[2],x)} - var - include=MakeSeeded$1([0,equal,hash]), - clear=include[2], - reset=include[3], - copy=include[4], - add=include[5], - remove=include[6], - find=include[7], - find_opt=include[8], - find_all=include[9], - replace=include[10], - mem=include[11], - iter=include[12], - filter_map_inplace=include[13], - fold=include[14], - length=include[15], - stats=include[16], - to_seq=include[17], - to_seq_keys=include[18], - to_seq_values=include[19], - add_seq=include[20], - replace_seq=include[21], - clean=include[23], - stats_alive=include[24], - _f6_=include[1]; - function create(sz){return caml_call2(_f6_,_cS_,sz)} - function of_seq(i) - {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} - return [0, - create, - clear, - reset, - copy, - add, - remove, - find, - find_opt, - find_all, - replace, - mem, - iter, - filter_map_inplace, - fold, - length, - stats, - to_seq, - to_seq_keys, - to_seq_values, - add_seq, - replace_seq, - of_seq, - 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 test_key(k,e) - {var match=get_key$0(e); - if(match){var x=match[1];if(x === k)return 1} - return 0} - function remove$0(b,k) - {var l=b[1],acc=0; - for(;;) - {if(l) - {var h=l[1],t=l[2]; - if(test_key(k,h)){b[1] = rev_append(acc,t);return 0} - var l$0=l[2],acc$0=[0,h,acc],l=l$0,acc=acc$0; - continue} - return 0}} - function find$2(b,k) - {var - _f3_=b[1], - match=find_opt(function(_f4_){return test_key(k,_f4_)},_f3_); - 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 make$6(key1,key2,data) - {var eph=create$6(0); - set_data$0(eph,data); - set_key1(eph,key1); - set_key2(eph,key2); - return eph} - function query$0(eph,key1,key2) - {var match=get_key1(eph); - if(match) - {var k=match[1]; - if(k === key1) - {var match$0=get_key2(eph); - if(match$0) - {var k$0=match$0[1];return k$0 === key2?get_data$2(eph):0} - return 0} - return 0} - return 0} - function MakeSeeded$2(H1,H2) - {function create(param,d) - {var k2=param[2],k1=param[1],c=create$6(0); - set_data$0(c,d); - set_key1(c,k1); - set_key2(c,k2); - return c} - function hash(seed,param) - {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} - function equal(c,param) - {var k2=param[2],k1=param[1],match=get_key1(c),match$0=get_key2(c); - if(match && match$0) - {var k2$0=match$0[1],k1$0=match[1]; - if(caml_call2(H1[1],k1,k1$0) && caml_call2(H2[1],k2,k2$0))return 0; - return 1} - return 2} - function get_key(c) - {var match=get_key1(c),match$0=get_key2(c); - if(match && match$0) - {var k2=match$0[1],k1=match[1];return [0,[0,k1,k2]]} - return 0} - function set_key_data(c,param,d) - {var k2=param[2],k1=param[1]; - unset_data$0(c); - set_key1(c,k1); - 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_} - 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]; - function hash$0(seed,x){return caml_call1(H1[2],x)} - var - include=MakeSeeded$2([0,equal$0,hash$0],_fZ_), - clear=include[2], - reset=include[3], - copy=include[4], - add=include[5], - remove=include[6], - find=include[7], - find_opt=include[8], - find_all=include[9], - replace=include[10], - mem=include[11], - iter=include[12], - filter_map_inplace=include[13], - fold=include[14], - length=include[15], - stats=include[16], - to_seq=include[17], - to_seq_keys=include[18], - to_seq_values=include[19], - add_seq=include[20], - replace_seq=include[21], - clean=include[23], - stats_alive=include[24], - _f0_=include[1]; - function create(sz){return caml_call2(_f0_,_cT_,sz)} - function of_seq(i) - {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} - return [0, - create, - clear, - reset, - copy, - add, - remove, - find, - find_opt, - find_all, - replace, - mem, - iter, - filter_map_inplace, - fold, - length, - stats, - to_seq, - to_seq_keys, - to_seq_values, - add_seq, - replace_seq, - of_seq, - clean, - 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} - function test_keys(k1,k2,e) - {var match=get_key1(e),match$0=get_key2(e); - if(match && match$0) - {var x2=match$0[1],x1=match[1];if(x1 === k1 && x2 === k2)return 1} - return 0} - function remove$1(b,k1,k2) - {var l=b[1],acc=0; - for(;;) - {if(l) - {var h=l[1],t=l[2]; - if(test_keys(k1,k2,h)){b[1] = rev_append(acc,t);return 0} - var l$0=l[2],acc$0=[0,h,acc],l=l$0,acc=acc$0; - continue} - return 0}} - function find$3(b,k1,k2) - {var - _fW_=b[1], - match=find_opt(function(_fX_){return test_keys(k1,k2,_fX_)},_fW_); - 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 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)} - 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_; - 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} - 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_; - 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} - break}} - var _fQ_=get_data$3(eph); - return _fQ_} - catch(_fS_) - {_fS_ = caml_wrap_exception(_fS_);if(_fS_ === Exit)return 0;throw _fS_}} - 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_; - 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} - 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_; - 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} - break}} - return h[1]} - function equal(c,k) - {var len=k.length - 1,len$0=length$9(c); - if(len !== len$0)return 1; - var i$1=len - 1 | 0,i=i$1; - for(;;) - {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} - return 1} - return 2} - return 0}} - function get_key(c) - {var len=length$9(c); - if(0 === len)return [0,[0]]; - var match=get_key$1(c,0); - if(match) - {var k0=match[1],a=caml_make_vect(len,k0),i$1=len - 1 | 0,i=i$1; - for(;;) - {if(1 <= i) - {var match$0=get_key$1(c,i); - if(match$0) - {var ki=match$0[1]; - caml_check_bound(a,i)[1 + i] = ki; - var i$0=i - 1 | 0,i=i$0; - continue} - return 0} - return [0,a]}} - 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_; - 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} - 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_; - 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_}} - return MakeSeeded$0 - ([0,create,hash,equal,get_data$3,get_key,set_key_data,check_key])} - function Make$4(H) - {var equal=H[1]; - function hash(seed,x){return caml_call1(H[2],x)} - var - include=MakeSeeded$3([0,equal,hash]), - clear=include[2], - reset=include[3], - copy=include[4], - add=include[5], - remove=include[6], - find=include[7], - find_opt=include[8], - find_all=include[9], - replace=include[10], - mem=include[11], - iter=include[12], - filter_map_inplace=include[13], - fold=include[14], - length=include[15], - stats=include[16], - to_seq=include[17], - to_seq_keys=include[18], - to_seq_values=include[19], - add_seq=include[20], - replace_seq=include[21], - clean=include[23], - stats_alive=include[24], - _fy_=include[1]; - function create(sz){return caml_call2(_fy_,_cU_,sz)} - function of_seq(i) - {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} - return [0, - create, - clear, - reset, - copy, - add, - remove, - find, - find_opt, - find_all, - replace, - mem, - iter, - filter_map_inplace, - fold, - length, - stats, - to_seq, - to_seq_keys, - to_seq_values, - add_seq, - replace_seq, - of_seq, - 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 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_; - 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} - 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_}} - function remove$2(b,k) - {var l=b[1],acc=0; - for(;;) - {if(l) - {var h=l[1],t=l[2]; - if(test_keys$0(k,h)){b[1] = rev_append(acc,t);return 0} - var l$0=l[2],acc$0=[0,h,acc],l=l$0,acc=acc$0; - continue} - return 0}} - function find$4(b,k) - {var - _fq_=b[1], - match=find_opt(function(_fr_){return test_keys$0(k,_fr_)},_fq_); - if(match){var e=match[1];return get_data$3(e)} - return 0} - function length$10(b){return length$1(b[1])} - function clear$5(b){b[1] = 0;return 0} - var - Stdlib_Ephemeron= - [0, - [0, - create$5, - get_key$0, - get_key_copy$0, - set_key$0, - unset_key$0, - check_key$0, - blit_key$0, - get_data$1, - get_data_copy, - set_data, - unset_data, - check_data, - blit_data, - make$4, - query, - Make$2, - MakeSeeded$1, - [0,make$5,add$1,remove$0,find$2,length$7,clear$3]], - [0, - create$6, - get_key1, - get_key1_copy, - set_key1, - unset_key1, - check_key1, - get_key2, - get_key2_copy, - set_key2, - unset_key2, - check_key2, - blit_key1, - blit_key2, - blit_key12, - get_data$2, - get_data_copy$0, - set_data$0, - unset_data$0, - check_data$0, - blit_data$0, - make$6, - query$0, - Make$3, - MakeSeeded$2, - [0,make$7,add$2,remove$1,find$3,length$8,clear$4]], - [0, - create$7, - get_key$1, - get_key_copy$1, - set_key$1, - unset_key$1, - check_key$1, - blit_key$1, - get_data$3, - get_data_copy$1, - set_data$1, - unset_data$1, - check_data$1, - blit_data$1, - make$8, - query$1, - Make$4, - MakeSeeded$3, - [0,make$9,add$3,remove$2,find$4,length$10,clear$5]], - [0, - function(_fp_) - {return MakeSeeded$0 - ([0,_fp_[3],_fp_[1],_fp_[2],_fp_[5],_fp_[4],_fp_[6],_fp_[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; - var n$3=caml_ml_string_length(name) - 1 | 0,n=n$3; - for(;;) - {if(0 <= n) - {if(caml_call2(is_dir_sep,name,n)){var n$0=n - 1 | 0,n=n$0;continue} - var p=n + 1 | 0,n$1=n; - for(;;) - {if(0 <= n$1) - {if(caml_call2(is_dir_sep,name,n$1)) - return sub$0(name,n$1 + 1 | 0,(p - n$1 | 0) - 1 | 0); - var n$2=n$1 - 1 | 0,n$1=n$2; - continue} - return sub$0(name,0,p)}} - return sub$0(name,0,1)}} - function generic_dirname(is_dir_sep,current_dir_name,name) - {if(caml_string_equal(name,cst$101))return current_dir_name; - var n$5=caml_ml_string_length(name) - 1 | 0,n=n$5; - for(;;) - {if(0 <= n) - {if(caml_call2(is_dir_sep,name,n)){var n$0=n - 1 | 0,n=n$0;continue} - var n$1=n; - for(;;) - {if(0 <= n$1) - {if(caml_call2(is_dir_sep,name,n$1)) - {var n$3=n$1; - for(;;) - {if(0 <= n$3) - {if(caml_call2(is_dir_sep,name,n$3)) - {var n$4=n$3 - 1 | 0,n$3=n$4;continue} - return sub$0(name,0,n$3 + 1 | 0)} - return sub$0(name,0,1)}} - var n$2=n$1 - 1 | 0,n$1=n$2; - continue} - return current_dir_name}} - return sub$0(name,0,1)}} - 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_} - function is_implicit(n) - {var _fi_=is_relative(n); - if(_fi_) - {var - _fj_=caml_ml_string_length(n) < 2?1:0, - _fk_=_fj_ || caml_string_notequal(sub$0(n,0,2),cst$103); - if(_fk_) - var - _fl_=caml_ml_string_length(n) < 3?1:0, - _fm_=_fl_ || caml_string_notequal(sub$0(n,0,3),cst$102); - else - var _fm_=_fk_} - else - var _fm_=_fi_; - return _fm_} - function check_suffix(name,suff){return ends_with$0(suff,name)} - function chop_suffix_opt(suffix,filename) - {var - len_s=caml_ml_string_length(suffix), - len_f=caml_ml_string_length(filename); - if(len_s <= len_f) - {var r=sub$0(filename,len_f - len_s | 0,len_s); - return caml_string_equal(r,suffix) - ?[0,sub$0(filename,0,len_f - len_s | 0)] - :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} - 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_; - 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} - break}} - add_char(b,39); - return contents(b)} - function quote_command(cmd,stdin,stdout,stderr,args) - {if(stderr) - var - f=stderr[1], - _e__=caml_equal(stderr,stdout)?cst_2_1:cat(cst_2,quote(f)), - _e$_=_e__; - else - var _e$_=cst$109; - if(stdout) - var f$0=stdout[1],_fa_=cat(cst$104,quote(f$0)); - else - var _fa_=cst$108; - var _fb_=cat(_fa_,_e$_); - if(stdin) - var f$1=stdin[1],_fc_=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 - Unix= - [0, - null$0, - current_dir_name, - parent_dir_name, - dir_sep, - is_dir_sep, - is_relative, - is_implicit, - check_suffix, - chop_suffix_opt, - _cV_, - 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_; - else - var _e7_=92 === c?1:0,_e6_=_e7_ || (58 === c?1:0); - return _e6_} - 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_) - {var - _e1_=caml_ml_string_length(n) < 1?1:0, - _e2_=_e1_ || (92 !== caml_string_get(n,0)?1:0); - if(_e2_) - var - _e3_=caml_ml_string_length(n) < 2?1:0, - _e4_=_e3_ || (58 !== caml_string_get(n,1)?1:0); - else - var _e4_=_e2_} - else - var _e4_=_e0_; - return _e4_} - function is_implicit$0(n) - {var _eQ_=is_relative$0(n); - if(_eQ_) - {var - _eR_=caml_ml_string_length(n) < 2?1:0, - _eS_=_eR_ || caml_string_notequal(sub$0(n,0,2),cst$113); - if(_eS_) - {var - _eT_=caml_ml_string_length(n) < 2?1:0, - _eU_=_eT_ || caml_string_notequal(sub$0(n,0,2),cst$112); - if(_eU_) - {var - _eV_=caml_ml_string_length(n) < 3?1:0, - _eW_=_eV_ || caml_string_notequal(sub$0(n,0,3),cst$111); - if(_eW_) - var - _eX_=caml_ml_string_length(n) < 3?1:0, - _eY_=_eX_ || caml_string_notequal(sub$0(n,0,3),cst$110); - else - var _eY_=_eW_} - else - var _eY_=_eU_} - else - var _eY_=_eS_} - else - var _eY_=_eQ_; - return _eY_} - function check_suffix$0(name,suff) - {var _eN_=caml_ml_string_length(suff) <= caml_ml_string_length(name)?1:0; - if(_eN_) - 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_); - else - var _eP_=_eN_; - return _eP_} - function chop_suffix_opt$0(suffix,filename) - {var - len_s=caml_ml_string_length(suffix), - len_f=caml_ml_string_length(filename); - 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_) - ?[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 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; - if(! (n < 1)) - {var j=_eJ_; - for(;;) - {add_char(b,92); - var _eK_=j + 1 | 0; - if(n !== j){var j=_eK_;continue} - break}} - return 0} - function loop$0(counter,i) - {var i$0=i; - for(;;) - {if(i$0 === l)return add_char(b,34); - var c=caml_string_get(s,i$0); - if(34 === c) - {var _eH_=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])} - if(92 === c) - {var _eI_=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])} - add_char(b,c); - var i$1=i$0 + 1 | 0,i$0=i$1; - continue}} - function loop_bs(counter,n,i) - {var n$0=n,i$0=i; - for(;;) - {if(i$0 === l){add_char(b,34);return add_bs(n$0)} - var match=caml_string_get(s,i$0); - if(34 === match) - {add_bs((2 * n$0 | 0) + 1 | 0); - add_char(b,34); - var _eG_=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_])} - 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); - if(counter < 50) - {var counter$0=counter + 1 | 0;return loop$0(counter$0,i$0)} - return caml_trampoline_return(loop$0,[0,i$0])}} - function loop(i){return caml_trampoline(loop$0(0,i))} - loop(0); - return contents(b)} - function quote_cmd_filename(f) - {if(! contains$0(f,34) && ! contains$0(f,37)) - return contains$0(f,32)?cat(cst$116,cat(f,cst$115)):f; - return failwith(cat(cst_Filename_quote_command_bad,f))} - function quote_command$0(cmd,stdin,stdout,stderr,args) - {if(stderr) - var - f=stderr[1], - _ex_= - caml_equal(stderr,stdout) - ?cst_2_1$0 - :cat(cst_2$0,quote_cmd_filename(f)), - _ey_=_ex_; - else - var _ey_=cst$125; - var _ez_=[0,_ey_,_cW_]; - if(stdout) - var f$0=stdout[1],_eA_=cat(cst$117,quote_cmd_filename(f$0)); - else - var _eA_=cst$124; - var _eB_=[0,_eA_,_ez_]; - if(stdin) - var f$1=stdin[1],_eC_=cat(cst$118,quote_cmd_filename(f$1)); - else - var _eC_=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_]; - 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} - else - if(31 === _eF_)switch$0 = 1} - else - if(42 <= c) - {if(60 === c)switch$0 = 1} - else - if(33 <= c) - switch(c - 33 | 0) - {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_]])} - function drive_and_path(s) - {var _et_=2 <= caml_ml_string_length(s)?1:0; - if(_et_) - {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_} - 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_]} - return [0,cst$126,s]} - function dirname$0(s) - {var - match=drive_and_path(s), - path=match[2], - drive=match[1], - dir=generic_dirname(is_dir_sep$0,current_dir_name$0,path); - return cat(drive,dir)} - function basename$0(s) - {var match=drive_and_path(s),path=match[2]; - return generic_basename(is_dir_sep$0,current_dir_name$0,path)} - var - Win32= - [0, - null$1, - current_dir_name$0, - parent_dir_name$0, - dir_sep$0, - is_dir_sep$0, - is_relative$0, - is_implicit$0, - check_suffix$0, - chop_suffix_opt$0, - temp_dir_name, - quote$0, - 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_)} - var - Cygwin= - [0, - null$2, - current_dir_name$1, - parent_dir_name$1, - dir_sep$1, - is_dir_sep$0, - is_relative$0, - is_implicit$0, - check_suffix$0, - chop_suffix_opt$0, - _cV_, - quote, - quote_command, - basename$1, - dirname$1], - Sysdeps= - caml_string_notequal(os_type,cst_Cygwin) - ?caml_string_notequal(os_type,cst_Win32)?Unix:Win32 - :Cygwin, - null$3=Sysdeps[1], - current_dir_name$2=Sysdeps[2], - parent_dir_name$2=Sysdeps[3], - dir_sep$2=Sysdeps[4], - is_dir_sep$1=Sysdeps[5], - is_relative$1=Sysdeps[6], - is_implicit$1=Sysdeps[7], - check_suffix$1=Sysdeps[8], - chop_suffix_opt$1=Sysdeps[9], - temp_dir_name$0=Sysdeps[10], - quote$1=Sysdeps[11], - quote_command$1=Sysdeps[12], - basename$2=Sysdeps[13], - dirname$2=Sysdeps[14]; - function concat$4(dirname,filename) - {var l=caml_ml_string_length(dirname); - if(0 !== l && ! is_dir_sep$1(dirname,l - 1 | 0)) - return cat(dirname,cat(dir_sep$2,filename)); - return cat(dirname,filename)} - function chop_suffix(name,suff) - {return check_suffix$1(name,suff) - ?sub$0 - (name, - 0, - caml_ml_string_length(name) - caml_ml_string_length(suff) | 0) - :invalid_arg(cst_Filename_chop_suffix)} - function extension_len(name) - {var i$4=caml_ml_string_length(name) - 1 | 0,i$1=i$4; - for(;;) - {if(0 <= i$1 && ! is_dir_sep$1(name,i$1)) - {if(46 === caml_string_get(name,i$1)) - {var i$2=i$1 - 1 | 0,i=i$2; - for(;;) - {if(0 <= i && ! is_dir_sep$1(name,i)) - {if(46 === caml_string_get(name,i)) - {var i$0=i - 1 | 0,i=i$0;continue} - return caml_ml_string_length(name) - i$1 | 0} - return 0}} - var i$3=i$1 - 1 | 0,i$1=i$3; - continue} - return 0}} - function extension(name) - {var l=extension_len(name); - return 0 === l?cst$127:sub$0(name,caml_ml_string_length(name) - l | 0,l)} - function chop_extension(name) - {var l=extension_len(name); - return 0 === l - ?invalid_arg(cst_Filename_chop_extension) - :sub$0(name,0,caml_ml_string_length(name) - l | 0)} - 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)}]; - 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))} - 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]} - function temp_file(opt,prefix,suffix) - {if(opt) - var sth=opt[1],temp_dir=sth; - else - var temp_dir=current_temp_dir_name[1]; - function try_name(counter) - {var counter$0=counter; - for(;;) - {var name=temp_file_name(temp_dir,prefix,suffix); - try - {runtime.caml_sys_close(caml_sys_open(name,_cY_,384));return name} - catch(e) - {e = caml_wrap_exception(e); - if(e[1] === Sys_error) - {if(1000 <= counter$0)throw e; - var counter$1=counter$0 + 1 | 0,counter$0=counter$1; - 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; - else - var temp_dir=current_temp_dir_name[1]; - function try_name(counter) - {var counter$0=counter; - 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_} - catch(e) - {e = caml_wrap_exception(e); - if(e[1] === Sys_error) - {if(1000 <= counter$0)throw e; - var counter$1=counter$0 + 1 | 0,counter$0=counter$1; - continue} - throw e}}} - return try_name(0)} - var - Stdlib_Filename= - [0, - current_dir_name$2, - parent_dir_name$2, - dir_sep$2, - concat$4, - is_relative$1, - is_implicit$1, - check_suffix$1, - chop_suffix, - chop_suffix_opt$1, - extension, - remove_extension, - chop_extension, - basename$2, - dirname$2, - null$3, - temp_file, - open_temp_file, - get_temp_dir_name, - set_temp_dir_name, - temp_dir_name$0, - quote$1, - quote_command$1]; - caml_register_global(826,Stdlib_Filename,"Stdlib__Filename"); - function add$4(x,y){return [254,x[1] + y[1],x[2] + y[2]]} - function sub$4(x,y){return [254,x[1] - y[1],x[2] - y[2]]} - function neg(x){return [254,- x[1],- x[2]]} - function conj(x){return [254,x[1],- x[2]]} - function mul(x,y) - {return [254,x[1] * y[1] - x[2] * y[2],x[1] * y[2] + x[2] * y[1]]} - function div(x,y) - {if(Math.abs(y[2]) <= Math.abs(y[1])) - {var r=y[2] / y[1],d=y[1] + r * y[2]; - return [254,(x[1] + r * x[2]) / d,(x[2] - r * x[1]) / d]} - var r$0=y[1] / y[2],d$0=y[2] + r$0 * y[1]; - return [254,(r$0 * x[1] + x[2]) / d$0,(r$0 * x[2] - x[1]) / d$0]} - function inv(x){return div(one$4,x)} - function norm2(x){return x[1] * x[1] + x[2] * x[2]} - function norm(x) - {var r=Math.abs(x[1]),i=Math.abs(x[2]); - if(r == 0.)return i; - if(i == 0.)return r; - if(i <= r){var q=i / r;return r * Math.sqrt(1. + q * q)} - var q$0=r / i; - return i * Math.sqrt(1. + q$0 * q$0)} - 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_; - var r=Math.abs(x[1]),i=Math.abs(x[2]); - if(i <= r) - var - q=i / r, - w=Math.sqrt(r) * Math.sqrt(0.5 * (1. + Math.sqrt(1. + q * q))); - else - var - q$0=r / i, - w=Math.sqrt(i) * Math.sqrt(0.5 * (q$0 + Math.sqrt(1. + q$0 * q$0))); - if(0. <= x[1])return [254,w,0.5 * x[2] / w]; - var w$0=0. <= x[2]?w:- w; - return [254,0.5 * i / w,w$0]} - 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_]} - function pow(x,y){return exp(mul(y,log(x)))} - var - Stdlib_Complex= - [0, - zero$4, - one$4, - i, - neg, - conj, - add$4, - sub$4, - mul, - inv, - div, - sqrt, - norm2, - norm, - arg, - polar, - exp, - log, - pow]; - caml_register_global(827,Stdlib_Complex,"Stdlib__Complex"); - var - Stdlib_ArrayLabels= - [0, - make_float, - init$3, - create_matrix, - create_matrix, - append$1, - concat$2, - sub$1, - copy$1, - fill$0, - blit$1, - to_list$1, - of_list, - iter$5, - iteri$3, - map$7, - mapi$3, - fold_left$3, - fold_left_map$0, - fold_right$2, - iter2$1, - map2$1, - for_all$3, - exists$3, - for_all2$1, - exists2$1, - mem$0, - memq$0, - find_opt$0, - find_map$1, - split$0, - combine$0, - sort, - fast_sort$0, - fast_sort$0, - to_seq$4, - to_seqi$1, - of_seq$2, - Floatarray]; - caml_register_global(828,Stdlib_ArrayLabels,"Stdlib__ArrayLabels"); - var - Stdlib_ListLabels= - [0, - length$1, - compare_lengths, - compare_length_with, - cons$0, - hd, - tl, - nth, - nth_opt, - rev, - init$0, - append, - rev_append, - flatten, - flatten, - equal$6, - compare$6, - iter$2, - iteri$0, - map$4, - mapi$0, - rev_map, - filter_map$0, - concat_map, - fold_left_map, - fold_left$0, - fold_right, - iter2$0, - map2$0, - rev_map2, - fold_left2$0, - fold_right2, - for_all$0, - exists$0, - for_all2$0, - exists2$0, - mem, - memq, - find$0, - find_opt, - find_map$0, - find_all, - find_all, - filteri, - partition$0, - partition_map$0, - assoc, - assoc_opt, - assq, - assq_opt, - mem_assoc, - mem_assq, - remove_assoc, - remove_assq, - split, - combine, - fast_sort, - fast_sort, - fast_sort, - sort_uniq, - merge, - to_seq$1, - of_seq]; - caml_register_global(829,Stdlib_ListLabels,"Stdlib__ListLabels"); - var - Stdlib_BytesLabels= - [0, - make$0, - init$1, - empty$0, - copy, - to_bytes, - of_bytes, - sub, - sub_string, - extend, - fill, - blit, - blit$0, - concat$0, - cat$0, - iter$3, - iteri$1, - map$5, - mapi$1, - fold_left$1, - fold_right$0, - for_all$1, - exists$1, - trim, - escaped$0, - index, - index_opt, - rindex, - rindex_opt, - index_from, - index_from_opt, - rindex_from, - rindex_from_opt, - contains, - contains_from, - rcontains_from, - uppercase$0, - lowercase$0, - capitalize, - uncapitalize, - uppercase_ascii$0, - lowercase_ascii$0, - capitalize_ascii, - uncapitalize_ascii, - compare$8, - equal$8, - starts_with, - ends_with, - unsafe_to_string, - unsafe_of_string, - split_on_char, - to_seq$2, - to_seqi, - of_seq$0, - get_utf_8_uchar, - set_utf_8_uchar, - is_valid_utf_8, - get_utf_16be_uchar, - set_utf_16be_uchar, - is_valid_utf_16be, - get_utf_16le_uchar, - set_utf_16le_uchar, - is_valid_utf_16le, - get_uint8, - get_int8, - get_uint16_ne, - get_uint16_be, - get_uint16_le, - get_int16_ne, - get_int16_be, - get_int16_le, - get_int32_ne, - get_int32_be, - get_int32_le, - get_int64_ne, - get_int64_be, - get_int64_le, - set_uint8, - set_int8, - set_uint16_ne, - set_int16_be, - set_int16_le, - set_int16_ne, - set_int16_be, - set_int16_le, - set_int32_ne, - set_int32_be, - set_int32_le, - set_int64_ne, - set_int64_be, - set_int64_le]; - caml_register_global(830,Stdlib_BytesLabels,"Stdlib__BytesLabels"); - var - Stdlib_StringLabels= - [0, - make$1, - init$2, - empty$1, - of_bytes, - to_bytes, - concat$1, - cat, - equal$9, - compare$9, - starts_with$0, - ends_with$0, - contains_from$0, - rcontains_from$0, - contains$0, - sub$0, - split_on_char$0, - map$6, - mapi$2, - fold_left$2, - fold_right$1, - for_all$2, - exists$2, - trim$0, - escaped$1, - uppercase_ascii$1, - lowercase_ascii$1, - capitalize_ascii$0, - uncapitalize_ascii$0, - iter$4, - iteri$2, - index_from$0, - index_from_opt$0, - rindex_from$0, - rindex_from_opt$0, - index$0, - index_opt$0, - rindex$0, - rindex_opt$0, - to_seq$3, - to_seqi$0, - of_seq$1, - get_utf_8_uchar$0, - is_valid_utf_8$0, - get_utf_16be_uchar$0, - is_valid_utf_16be$0, - get_utf_16le_uchar$0, - is_valid_utf_16le$0, - blit$0, - copy$0, - fill, - uppercase$1, - lowercase$1, - capitalize$0, - uncapitalize$0, - get_uint8$0, - get_int8$0, - get_uint16_ne$0, - get_uint16_be$0, - get_uint16_le$0, - get_int16_ne$0, - get_int16_be$0, - get_int16_le$0, - get_int32_ne$0, - get_int32_be$0, - get_int32_le$0, - get_int64_ne$0, - get_int64_be$0, - get_int64_le$0]; - caml_register_global(831,Stdlib_StringLabels,"Stdlib__StringLabels"); - var Stdlib_MoreLabels=[0,Stdlib_Hashtbl,Stdlib_Map,Stdlib_Set]; - caml_register_global(832,Stdlib_MoreLabels,"Stdlib__MoreLabels"); - var Stdlib_StdLabels=[0]; - caml_register_global(833,Stdlib_StdLabels,"Stdlib__StdLabels"); - var - float32=0, - float64=1, - int8_signed=2, - int8_unsigned=3, - int16_signed=4, - int16_unsigned=5, - int32$1=6, - int64$1=7, - int$2=8, - nativeint$1=9, - complex32=10, - complex64=11, - char$0=12; - function kind_size_in_bytes(param) - {switch(param) - {case 0:return 4; - case 1:return 8; - case 2:return 1; - case 3:return 1; - case 4:return 2; - case 5:return 2; - case 6:return 4; - case 7:return 8; - case 8:return 4; - case 9:return 4; - case 10:return 8; - case 11:return 16; - default:return 1}} - var c_layout=0,fortran_layout=1; - 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_; - 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} - 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_; - 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} - break}} - return 0} - return caml_ba_set_generic(arr,idx,caml_call1(f,idx))} - function init$6(kind,layout,dims,f) - {var arr=caml_ba_create(kind,layout,dims),dlen=dims.length - 1; - return 0 === dlen - ?arr - :layout - ?(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_; - 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} - 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$_)} - 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__)}} - function size_in_bytes$0(arr) - {return kind_size_in_bytes(caml_ba_kind(arr))} - function of_value(kind,layout,v) - {var a=create$8(kind,layout);caml_call1(set$2(a),v);return a} - 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_)} - 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; - if(! (dim < 1)) - {var i$0=_d6_; - 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} - break}} - return arr} - var _d4_=dim - 1 | 0,_d3_=0; - if(! (_d4_ < 0)) - {var i=_d3_; - for(;;) - {caml_ba_set_1(arr,i,caml_call1(f,i)); - var _d5_=i + 1 | 0; - if(_d4_ !== i){var i=_d5_;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_; - 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} - 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); - return caml_mul - (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dZ_),_dY_)} - 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; - if(! (dim2 < 1)) - {var j$0=_dU_; - for(;;) - {var _dV_=1; - if(! (dim1 < 1)) - {var i$0=_dV_; - 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} - break}} - var _dW_=j$0 + 1 | 0; - if(dim2 !== j$0){var j$0=_dW_;continue} - break}} - return arr} - var _dP_=dim1 - 1 | 0,_dO_=0; - if(! (_dP_ < 0)) - {var i=_dO_; - for(;;) - {var _dR_=dim2 - 1 | 0,_dQ_=0; - if(! (_dR_ < 0)) - {var j=_dQ_; - 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} - break}} - var _dS_=i + 1 | 0; - if(_dP_ !== i){var i=_dS_;continue} - break}} - return arr} - function of_array$0(kind,layout,data) - {var - dim1=data.length - 1, - 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_; - 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_; - 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} - break}} - var _dM_=i + 1 | 0; - if(_dJ_ !== i){var i=_dM_;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); - return caml_mul - (caml_mul - (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dH_),_dG_), - _dF_)} - 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])} - function slice_right_2(a,n){return caml_ba_slice(a,[0,n])} - function init$9(kind,layout,dim1,dim2,dim3,f) - {var arr=create$11(kind,layout,dim1,dim2,dim3); - if(layout) - {var _dz_=1; - if(! (dim3 < 1)) - {var k$0=_dz_; - for(;;) - {var _dA_=1; - if(! (dim2 < 1)) - {var j$0=_dA_; - for(;;) - {var _dC_=1; - if(! (dim1 < 1)) - {var i$0=_dC_; - 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} - break}} - var _dD_=j$0 + 1 | 0; - if(dim2 !== j$0){var j$0=_dD_;continue} - break}} - var _dB_=k$0 + 1 | 0; - if(dim3 !== k$0){var k$0=_dB_;continue} - break}} - return arr} - var _dr_=dim1 - 1 | 0,_dq_=0; - if(! (_dr_ < 0)) - {var i=_dq_; - for(;;) - {var _dt_=dim2 - 1 | 0,_ds_=0; - if(! (_dt_ < 0)) - {var j=_ds_; - for(;;) - {var _dw_=dim3 - 1 | 0,_dv_=0; - if(! (_dw_ < 0)) - {var k=_dv_; - 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} - break}} - var _dx_=j + 1 | 0; - if(_dt_ !== j){var j=_dx_;continue} - break}} - var _du_=i + 1 | 0; - if(_dr_ !== i){var i=_du_;continue} - break}} - return arr} - function of_array$1(kind,layout,data) - {var - dim1=data.length - 1, - dim2=0 === dim1?0:caml_check_bound(data,0)[1].length - 1, - dim3= - 0 === dim2 - ?0 - :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_; - 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_; - 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_; - for(;;) - {caml_ba_set_3 - (ba, - i + ofs | 0, - 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} - break}} - var _do_=j + 1 | 0; - if(_dk_ !== j){var j=_do_;continue} - break}} - var _dl_=i + 1 | 0; - if(_di_ !== i){var i=_dl_;continue} - break}} - return ba} - function array0_of_genarray(a) - {return 0 === caml_ba_num_dims(a) - ?a - :invalid_arg(cst_Bigarray_array0_of_genarra)} - function array1_of_genarray(a) - {return 1 === caml_ba_num_dims(a) - ?a - :invalid_arg(cst_Bigarray_array1_of_genarra)} - function array2_of_genarray(a) - {return 2 === caml_ba_num_dims(a) - ?a - :invalid_arg(cst_Bigarray_array2_of_genarra)} - function array3_of_genarray(a) - {return 3 === caml_ba_num_dims(a) - ?a - :invalid_arg(cst_Bigarray_array3_of_genarra)} - function reshape_0(a){return caml_ba_reshape(a,[0])} - function reshape_1(a,dim1){return caml_ba_reshape(a,[0,dim1])} - function reshape_2(a,dim1,dim2){return caml_ba_reshape(a,[0,dim1,dim2])} - function reshape_3(a,dim1,dim2,dim3) - {return caml_ba_reshape(a,[0,dim1,dim2,dim3])} - var - Stdlib_Bigarray= - [0, - float32, - float64, - complex32, - complex64, - int8_signed, - int8_unsigned, - int16_signed, - int16_unsigned, - int$2, - int32$1, - int64$1, - nativeint$1, - char$0, - kind_size_in_bytes, - c_layout, - fortran_layout, - [0,init$6,dims,size_in_bytes], - [0, - create$8, - of_value, - caml_ba_change_layout, - size_in_bytes$0, - get$3, - set$2, - of_value], - [0, - create$9, - init$7, - caml_ba_change_layout, - size_in_bytes$1, - slice, - of_array], - [0, - create$10, - init$8, - caml_ba_change_layout, - size_in_bytes$2, - slice_left, - slice_right, - of_array$0], - [0, - create$11, - init$9, - caml_ba_change_layout, - size_in_bytes$3, - slice_left_1, - slice_right_1, - slice_left_2, - slice_right_2, - of_array$1], - array0_of_genarray, - array1_of_genarray, - array2_of_genarray, - array3_of_genarray, - caml_ba_reshape, - reshape_0, - reshape_1, - reshape_2, - reshape_3]; - 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 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)} - 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_} - 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_} - 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_} - 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_}} - 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_} - return [0,s]} - function read_upto(ic,buf,ofs,len) - {var ofs$0=ofs,len$0=len; - for(;;) - {if(0 !== len$0) - {var r=input(ic,buf,ofs$0,len$0); - if(0 !== r) - {var - len$1=len$0 - r | 0, - ofs$1=ofs$0 + r | 0, - ofs$0=ofs$1, - len$0=len$1; - continue}} - return ofs$0 - ofs | 0}} - function ensure(buf,ofs,n) - {var len=caml_ml_bytes_length(buf); - if((ofs + n | 0) <= len)return buf; - var new_len=[0,len]; - for(;;) - {if(new_len[1] < (ofs + n | 0)) - {new_len[1] = (2 * new_len[1] | 0) + 1 | 0;continue} - var - new_len$0=new_len[1], - new_len$1= - new_len$0 <= max_string_length - ?new_len$0 - :ofs < max_string_length - ?max_string_length - :failwith(cst_In_channel_input_all_chann), - new_buf=caml_create_bytes(new_len$1); - blit(buf,0,new_buf,0,ofs); - return new_buf}} - function input_all(ic) - {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$_; - var initial_size=-1} - var - initial_size$0=0 <= initial_size?initial_size:chunk_size, - initial_size$1= - initial_size$0 <= max_string_length?initial_size$0:max_string_length, - buf=caml_create_bytes(initial_size$1), - nread=read_upto(ic,buf,0,initial_size$1); - 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__} - function loop(buf,ofs) - {var buf$0=buf,ofs$0=ofs; - for(;;) - {var - buf$1=ensure(buf$0,ofs$0,chunk_size), - rem=caml_ml_bytes_length(buf$1) - ofs$0 | 0, - r=read_upto(ic,buf$1,ofs$0,rem); - if(r < rem)return sub_string(buf$1,0,ofs$0 + r | 0); - var ofs$1=ofs$0 + rem | 0,buf$0=buf$1,ofs$0=ofs$1; - continue}} - var buf$0=ensure(buf,nread,65537); - caml_bytes_set(buf$0,nread,c); - return loop(buf$0,nread + 1 | 0)} - var - Stdlib_In_channel= - [0, - stdin, - open_bin$0, - open_text$0, - open_gen$0, - with_open_bin, - with_open_text, - with_open_gen, - seek, - pos, - length$11, - close$0, - close_noerr$0, - input_char$0, - input_byte$0, - input_line$0, - input, - really_input$0, - really_input_string$0, - input_all, - set_binary_mode]; - 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 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)} - var - seek$0=_m_[1], - pos$0=_m_[2], - length$12=_m_[3], - Stdlib_Out_channel= - [0, - stdout, - stderr, - open_bin, - open_text, - open_gen, - with_open_bin$0, - with_open_text$0, - with_open_gen$0, - seek$0, - pos$0, - length$12, - close, - close_noerr, - flush, - flush_all, - output_char, - output_byte, - output_string, - output_bytes, - output, - output_substring, - set_binary_mode$0, - runtime.caml_ml_set_buffered, - runtime.caml_ml_is_buffered]; - caml_register_global(836,Stdlib_Out_channel,"Stdlib__Out_channel"); - return} - (globalThis)); - - -//# 1 "../../.js/dates_calc/dates_calc.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_fresh_oo_id=runtime.caml_fresh_oo_id, - caml_mul=runtime.caml_mul, - caml_register_global=runtime.caml_register_global, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_wrap_exception=runtime.caml_wrap_exception; - function caml_call2(f,a0,a1) - {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} - 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_Dates_calc_Dates_InvalidDa= - caml_string_of_jsbytes("Dates_calc.Dates.InvalidDate"), - cst_Dates_calc_Dates_Ambiguous= - caml_string_of_jsbytes("Dates_calc.Dates.AmbiguousComputation"), - Assert_failure=global_data.Assert_failure, - Stdlib_Format=global_data.Stdlib__Format, - Stdlib_Int=global_data.Stdlib__Int, - Dates_calc=[0]; - caml_register_global(10,Dates_calc,"Dates_calc"); - var - InvalidDate=[248,cst_Dates_calc_Dates_InvalidDa,caml_fresh_oo_id(0)], - AmbiguousComputation= - [248,cst_Dates_calc_Dates_Ambiguous,caml_fresh_oo_id(0)], - _h_=[0,caml_string_of_jsbytes("lib/dates.ml"),230,2], - _g_=[0,caml_string_of_jsbytes("lib/dates.ml"),226,2], - _f_= - [0, - [4,0,[0,2,4],0,[12,45,[4,0,[0,2,2],0,[12,45,[4,0,[0,2,2],0,0]]]]], - caml_string_of_jsbytes("%04d-%02d-%02d")], - _d_=[0,caml_string_of_jsbytes("lib/dates.ml"),123,2], - _e_=[0,caml_string_of_jsbytes("lib/dates.ml"),124,2], - _b_=[0,caml_string_of_jsbytes("lib/dates.ml"),109,2], - _c_=[0,caml_string_of_jsbytes("lib/dates.ml"),110,2], - _a_= - [0, - [12, - 91, - [4, - 0, - 0, - 0, - [11, - caml_string_of_jsbytes(" years, "), - [4, - 0, - 0, - 0, - [11, - caml_string_of_jsbytes(" months, "), - [4,0,0,0,[11,caml_string_of_jsbytes(" days]"),0]]]]]]], - caml_string_of_jsbytes("[%d years, %d months, %d days]")]; - function format_period(fmt,p) - {return caml_call5(Stdlib_Format[129],fmt,_a_,p[1],p[2],p[3])} - function make_period(years,months,days){return [0,years,months,days]} - function add_periods(d1,d2) - {return [0,d1[1] + d2[1] | 0,d1[2] + d2[2] | 0,d1[3] + d2[3] | 0]} - function sub_periods(d1,d2) - {return [0,d1[1] - d2[1] | 0,d1[2] - d2[2] | 0,d1[3] - d2[3] | 0]} - function mul_period(d1,m) - {return [0,caml_mul(d1[1],m),caml_mul(d1[2],m),caml_mul(d1[3],m)]} - function period_to_days(p) - {if(0 === p[1] && 0 === p[2])return p[3];throw AmbiguousComputation} - function is_leap_year(year) - {var _w_=0 === (year % 400 | 0)?1:0; - if(_w_) - var _x_=_w_; - else - var - _y_=0 === (year % 4 | 0)?1:0, - _x_=_y_?0 !== (year % 100 | 0)?1:0:_y_; - return _x_} - function days_in_month(month,is_leap_year) - {var switcher=month - 1 | 0; - if(11 < switcher >>> 0)throw InvalidDate; - switch(switcher) - {case 1:return is_leap_year?29:28; - case 3: - case 5: - case 8: - case 10:return 30; - default:return 31}} - function is_valid_date(d) - {try - {var _r_=1 <= d[3]?1:0; - if(_r_) - var - _s_=is_leap_year(d[1]), - _t_=days_in_month(d[2],_s_), - _u_=d[3] <= _t_?1:0; - else - var _u_=_r_; - return _u_} - catch(_v_) - {_v_ = caml_wrap_exception(_v_); - if(_v_ === InvalidDate)return 0; - throw _v_}} - function make_date(year,month,day) - {var d=[0,year,month,day];if(is_valid_date(d))return d;throw InvalidDate} - function add_months_to_first_of_month_d(year,month,months) - {var year$0=year,months$0=months; - for(;;) - {var new_month=month + months$0 | 0; - if(1 <= new_month && ! (12 < new_month))return [0,year$0,new_month]; - if(12 < new_month) - {var - months$1=months$0 - 12 | 0, - year$1=year$0 + 1 | 0, - year$0=year$1, - months$0=months$1; - continue} - var - months$2=months$0 + 12 | 0, - year$2=year$0 - 1 | 0, - year$0=year$2, - months$0=months$2; - continue}} - function add_dates(opt,d) - {if(opt)var sth=opt[1],round=sth;else var round=2; - return function(p) - {var - _o_=d[3], - match$0=add_months_to_first_of_month_d(d[1] + p[1] | 0,d[2],p[2]), - new_month$0=match$0[2], - new_year$0=match$0[1], - new_date=[0,new_year$0,new_month$0,_o_]; - if(is_valid_date(new_date)) - var _p_=new_date; - else - switch(round) - {case 0: - var switch$0=0; - if(1 <= new_date[2] && ! (12 < new_date[2])) - {var switch$1=0; - if(1 <= new_date[3] && ! (31 < new_date[3])) - if(is_valid_date(new_date)) - {var _p_=new_date;switch$1 = 1} - else - {var - match= - add_months_to_first_of_month_d(new_date[1],new_date[2],1), - new_month=match[2], - new_year=match[1], - _p_=[0,new_year,new_month,1]; - switch$1 = 1} - if(! switch$1)throw [0,Assert_failure,_e_]} - else - switch$0 = 1; - if(switch$0)throw [0,Assert_failure,_d_]; - break; - case 1: - var switch$2=0; - if(1 <= new_date[2] && ! (12 < new_date[2])) - {var switch$3=0; - if(1 <= new_date[3] && ! (31 < new_date[3])) - if(is_valid_date(new_date)) - {var _p_=new_date;switch$3 = 1} - else - {var - _m_=is_leap_year(new_date[1]), - _n_=days_in_month(new_date[2],_m_), - _p_=[0,new_date[1],new_date[2],_n_]; - switch$3 = 1} - if(! switch$3)throw [0,Assert_failure,_c_]} - else - switch$2 = 1; - if(switch$2)throw [0,Assert_failure,_b_]; - break; - default:throw AmbiguousComputation} - var d$0=_p_,days=p[3]; - for(;;) - {var - _q_=is_leap_year(d$0[1]), - days_in_d_month=days_in_month(d$0[2],_q_), - new_day=d$0[3] + days | 0; - if(1 <= new_day && new_day <= days_in_d_month) - return [0,d$0[1],d$0[2],new_day]; - if(days_in_d_month <= new_day) - {var - match$1=add_months_to_first_of_month_d(d$0[1],d$0[2],1), - new_month$1=match$1[2], - new_year$1=match$1[1], - days$0=(days - (days_in_d_month - d$0[3] | 0) | 0) - 1 | 0, - d$1=[0,new_year$1,new_month$1,1], - d$0=d$1, - days=days$0; - continue} - var - match$2=add_months_to_first_of_month_d(d$0[1],d$0[2],-1), - new_month$2=match$2[2], - new_year$2=match$2[1], - days$1=days + d$0[3] | 0, - d$2= - [0, - new_year$2, - new_month$2, - days_in_month(new_month$2,is_leap_year(new_year$2))], - d$0=d$2, - days=days$1; - continue}}} - function compare_dates(d1,d2) - {return 0 === caml_call2(Stdlib_Int[9],d1[1],d2[1]) - ?0 === caml_call2(Stdlib_Int[9],d1[2],d2[2]) - ?caml_call2(Stdlib_Int[9],d1[3],d2[3]) - :caml_call2(Stdlib_Int[9],d1[2],d2[2]) - :caml_call2(Stdlib_Int[9],d1[1],d2[1])} - function format_date(fmt,d) - {return caml_call5(Stdlib_Format[129],fmt,_f_,d[1],d[2],d[3])} - function first_day_of_month(d) - {if(is_valid_date(d))return make_date(d[1],d[2],1); - throw [0,Assert_failure,_g_]} - function last_day_of_month(d) - {if(is_valid_date(d)) - {var _l_=is_leap_year(d[1]),days_month=days_in_month(d[2],_l_); - return make_date(d[1],d[2],days_month)} - throw [0,Assert_failure,_h_]} - function neg_period(p){return [0,- p[1] | 0,- p[2] | 0,- p[3] | 0]} - function sub_dates(d1,d2) - {if(d1[1] === d2[1] && d1[2] === d2[2])return [0,0,0,d1[3] - d2[3] | 0]; - var cmp=compare_dates(d1,d2); - if(0 <= cmp) - {var - match=add_months_to_first_of_month_d(d2[1],d2[2],1), - new_d2_month=match[2], - new_d2_year=match[1], - new_d2=[0,new_d2_year,new_d2_month,1], - _i_=sub_dates(d1,new_d2), - _j_=d2[3], - _k_=is_leap_year(d2[1]); - return add_periods - ([0,0,0,(days_in_month(d2[2],_k_) - _j_ | 0) + 1 | 0],_i_)} - return neg_period(sub_dates(d2,d1))} - function date_to_ymd(d){return [0,d[1],d[2],d[3]]} - function period_to_ymds(p){return [0,p[1],p[2],p[3]]} - var - Dates_calc_Dates= - [0, - InvalidDate, - AmbiguousComputation, - make_date, - add_dates, - sub_dates, - compare_dates, - date_to_ymd, - format_date, - first_day_of_month, - last_day_of_month, - is_leap_year, - make_period, - neg_period, - add_periods, - sub_periods, - mul_period, - format_period, - period_to_days, - period_to_ymds]; - caml_register_global(14,Dates_calc_Dates,"Dates_calc__Dates"); - return} - (globalThis)); - - -//# 1 "../../.js/zarith/zarith.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_div=runtime.caml_div, - caml_equal=runtime.caml_equal, - caml_int64_to_float=runtime.caml_int64_to_float, - caml_ldexp_float=runtime.caml_ldexp_float, - caml_ml_string_length=runtime.caml_ml_string_length, - caml_mul=runtime.caml_mul, - 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_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])} - var - global_data=runtime.caml_get_global_data(), - cst_1_12=caml_string_of_jsbytes("1.12"), - cst_Z_log2up=caml_string_of_jsbytes("Z.log2up"), - cst_Z_log2=caml_string_of_jsbytes("Z.log2"), - cst_Z_signed_extract_negative_= - caml_string_of_jsbytes("Z.signed_extract: negative bit offset"), - cst_Z_signed_extract_nonpositi= - caml_string_of_jsbytes("Z.signed_extract: nonpositive bit length"), - cst_Z_testbit=caml_string_of_jsbytes("Z.testbit"), - cst_Z_Overflow=caml_string_of_jsbytes("Z.Overflow"), - cst_ml_z_overflow=caml_string_of_jsbytes("ml_z_overflow"), - cst_d=caml_string_of_jsbytes("%d"), - cst$0=caml_string_of_jsbytes(""), - cst_inf$1=caml_string_of_jsbytes("+inf"), - cst_inf$2=caml_string_of_jsbytes("-inf"), - cst_inf$3=caml_string_of_jsbytes("inf"), - cst_undef$0=caml_string_of_jsbytes("undef"), - cst_Q_of_string_invalid_digit= - caml_string_of_jsbytes("Q.of_string: invalid digit"), - cst_impossible_case$0=caml_string_of_jsbytes("impossible case"), - cst_impossible_case=caml_string_of_jsbytes("impossible case"), - cst_0=caml_string_of_jsbytes("0"), - cst_inf=caml_string_of_jsbytes("+inf"), - cst_inf$0=caml_string_of_jsbytes("-inf"), - cst_undef=caml_string_of_jsbytes("undef"), - cst=caml_string_of_jsbytes("/"), - cst_int64_of_big_int=caml_string_of_jsbytes("int64_of_big_int"), - cst_nativeint_of_big_int=caml_string_of_jsbytes("nativeint_of_big_int"), - cst_int32_of_big_int=caml_string_of_jsbytes("int32_of_big_int"), - cst_int_of_big_int=caml_string_of_jsbytes("int_of_big_int"), - cst_power_big_int_positive_big= - caml_string_of_jsbytes("power_big_int_positive_big_int"), - cst_power_int_positive_big_int= - caml_string_of_jsbytes("power_int_positive_big_int"), - cst_power_big_int_positive_int= - caml_string_of_jsbytes("power_big_int_positive_int"), - cst_power_int_positive_int= - caml_string_of_jsbytes("power_int_positive_int"), - Stdlib_Format=global_data.Stdlib__Format, - Stdlib_Buffer=global_data.Stdlib__Buffer, - Stdlib=global_data.Stdlib, - Stdlib_Sys=global_data.Stdlib__Sys, - Stdlib_Callback=global_data.Stdlib__Callback, - Stdlib_String=global_data.Stdlib__String, - Assert_failure=global_data.Assert_failure, - Zarith_version=[0,cst_1_12]; - caml_register_global(33,Zarith_version,"Zarith_version"); - var _a_=[248,cst_Z_Overflow,runtime.caml_fresh_oo_id(0)]; - runtime.ml_z_init(0); - caml_call2(Stdlib_Callback[2],cst_ml_z_overflow,_a_); - var - _S_=runtime.caml_int64_create_lo_mi_hi(1,0,0), - _aV_=[0,caml_string_of_jsbytes("q.ml"),486,25]; - function _b_(_gZ_) - {if(typeof _gZ_ === "number" && _gZ_ !== Stdlib[20])return - _gZ_ | 0; - return runtime.ml_z_neg(_gZ_)} - function _c_(_gX_,_gW_) - {if(typeof _gX_ === "number" && typeof _gW_ === "number") - {var _gY_=_gX_ + _gW_ | 0; - return 0 <= ((_gY_ ^ _gX_) & (_gY_ ^ _gW_)) - ?_gY_ - :runtime.ml_z_add(_gX_,_gW_)} - return runtime.ml_z_add(_gX_,_gW_)} - function _d_(_gU_,_gT_) - {if(typeof _gU_ === "number" && typeof _gT_ === "number") - {var _gV_=_gU_ - _gT_ | 0; - return 0 <= ((_gU_ ^ _gT_) & (_gV_ ^ _gU_)) - ?_gV_ - :runtime.ml_z_sub(_gU_,_gT_)} - return runtime.ml_z_sub(_gU_,_gT_)} - function _e_(_gS_,_gR_) - {if - (typeof _gS_ - === - "number" - && - typeof _gR_ - === - "number" - && - ! - runtime.ml_z_mul_overflows(_gS_,_gR_)) - return caml_mul(_gS_,_gR_); - return runtime.ml_z_mul(_gS_,_gR_)} - function _f_(_gQ_,_gP_) - {return typeof _gP_ === "number" - ?-1 === _gP_ - ?_b_(_gQ_) - :typeof _gQ_ === "number" - ?caml_div(_gQ_,_gP_) - :runtime.ml_z_div(_gQ_,_gP_) - :runtime.ml_z_div(_gQ_,_gP_)} - function _g_(_gO_,_gN_) - {return typeof _gN_ === "number" - ?-1 === _gN_ - ?0 - :typeof _gO_ === "number" - ?runtime.caml_mod(_gO_,_gN_) - :runtime.ml_z_rem(_gO_,_gN_) - :runtime.ml_z_rem(_gO_,_gN_)} - function _h_(_gM_,_gL_) - {return typeof _gL_ === "number" - ?-1 === _gL_ - ?_b_(_gM_) - :typeof _gM_ === "number" - ?caml_div(_gM_,_gL_) - :runtime.ml_z_divexact(_gM_,_gL_) - :runtime.ml_z_divexact(_gM_,_gL_)} - function _i_(_gK_) - {if(typeof _gK_ === "number" && _gK_ !== Stdlib[19])return _gK_ + 1 | 0; - return runtime.ml_z_succ(_gK_)} - function _j_(_gJ_) - {if(typeof _gJ_ === "number" && _gJ_ !== Stdlib[20])return _gJ_ - 1 | 0; - return runtime.ml_z_pred(_gJ_)} - function _k_(_gI_) - {return typeof _gI_ === "number" - ?0 <= _gI_ - ?_gI_ - :_gI_ !== Stdlib[20]?- _gI_ | 0:runtime.ml_z_abs(_gI_) - :runtime.ml_z_abs(_gI_)} - function _l_(_gH_,_gG_) - {if(typeof _gH_ === "number" && typeof _gG_ === "number") - return _gH_ & _gG_; - return runtime.ml_z_logand(_gH_,_gG_)} - function _m_(_gF_,_gE_) - {if(typeof _gF_ === "number" && typeof _gE_ === "number") - return _gF_ | _gE_; - return runtime.ml_z_logor(_gF_,_gE_)} - function _n_(_gD_,_gC_) - {if(typeof _gD_ === "number" && typeof _gC_ === "number") - return _gD_ ^ _gC_; - return runtime.ml_z_logxor(_gD_,_gC_)} - function _o_(_gB_) - {return typeof _gB_ === "number"?_gB_ ^ -1:runtime.ml_z_lognot(_gB_)} - function _p_(_gz_,_gy_) - {if(typeof _gz_ === "number" && 0 <= _gy_ && _gy_ < Stdlib_Sys[9]) - {var _gA_=_gz_ << _gy_; - return _gA_ >> _gy_ === _gz_?_gA_:runtime.ml_z_shift_left(_gz_,_gy_)} - return runtime.ml_z_shift_left(_gz_,_gy_)} - function _q_(_gw_,_gv_) - {if(typeof _gw_ === "number" && 0 <= _gv_) - {var _gx_=_gv_ < Stdlib_Sys[9]?_gv_:Stdlib_Sys[9] - 1 | 0; - return _gw_ >> _gx_} - return runtime.ml_z_shift_right(_gw_,_gv_)} - function _r_(_gu_,_gt_) - {if(typeof _gu_ === "number" && 0 <= _gt_) - return Stdlib_Sys[9] <= _gt_ - ?0 - :0 <= _gu_?_gu_ >>> _gt_ | 0:- ((- _gu_ | 0) >>> _gt_ | 0) | 0; - return runtime.ml_z_shift_right_trunc(_gu_,_gt_)} - function _s_(_gs_) - {return typeof _gs_ === "number"?_gs_:runtime.ml_z_to_int(_gs_)} - var _t_=0,_u_=1,_v_=-1; - function _w_(_gr_,_gq_) - {return 0 < runtime.ml_z_compare(_gr_,_gq_)?_gq_:_gr_} - function _x_(_gp_,_go_) - {return 0 <= runtime.ml_z_compare(_gp_,_go_)?_gp_:_go_} - function _y_(_gn_,_gm_){return runtime.ml_z_compare(_gn_,_gm_) <= 0?1:0} - function _z_(_gl_,_gk_){return 0 <= runtime.ml_z_compare(_gl_,_gk_)?1:0} - function _A_(_gj_,_gi_){return runtime.ml_z_compare(_gj_,_gi_) < 0?1:0} - function _B_(_gh_,_gg_){return 0 < runtime.ml_z_compare(_gh_,_gg_)?1:0} - function _C_(_gf_){return runtime.ml_z_format(cst_d,_gf_)} - function _D_(_ge_) - {return runtime.ml_z_of_substring_base - (0,_ge_,0,caml_ml_string_length(_ge_))} - function _E_(_gb_,_gc_,_gd_) - {return runtime.ml_z_of_substring_base(0,_gb_,_gc_,_gd_)} - function _F_(_ga_,_f$_) - {return runtime.ml_z_of_substring_base - (_ga_,_f$_,0,caml_ml_string_length(_f$_))} - function _G_(_f5_,_f4_) - {var _f6_=runtime.ml_z_div_rem(_f5_,_f4_),_f7_=_f6_[2],_f8_=_f6_[1]; - if(0 <= runtime.ml_z_sign(_f7_))return [0,_f8_,_f7_]; - if(0 <= runtime.ml_z_sign(_f4_)) - {var _f9_=_c_(_f7_,_f4_);return [0,_j_(_f8_),_f9_]} - var _f__=_d_(_f7_,_f4_); - return [0,_i_(_f8_),_f__]} - function _H_(_f3_,_f2_) - {return 0 <= runtime.ml_z_sign(_f2_) - ?runtime.ml_z_fdiv(_f3_,_f2_) - :runtime.ml_z_cdiv(_f3_,_f2_)} - function _I_(_f0_,_fZ_) - {var _f1_=_g_(_f0_,_fZ_); - return 0 <= runtime.ml_z_sign(_f1_)?_f1_:_c_(_f1_,_k_(_fZ_))} - function _J_(_fR_,_fQ_) - {var - _fS_=runtime.ml_z_sign(_fR_), - _fT_=runtime.ml_z_sign(_fQ_), - _fU_=_fS_ + 1 | 0; - if(! (2 < _fU_ >>> 0)) - switch(_fU_) - {case 0:if(0 === _fT_)return [0,_b_(_fR_),_v_,_t_];break; - case 1: - var _fY_=_fT_ + 1 | 0; - if(! (2 < _fY_ >>> 0)) - switch(_fY_) - {case 0:return [0,_b_(_fQ_),_t_,_v_]; - case 1:return [0,_t_,_t_,_t_]; - default:return [0,_fQ_,_t_,_u_]} - break; - default:if(0 === _fT_)return [0,_fR_,_u_,_t_]} - var - _fV_=runtime.ml_z_gcdext_intern(_fR_,_fQ_), - _fW_=_fV_[2], - _fX_=_fV_[1]; - return _fV_[3] - ?[0,_fX_,_fW_,_f_(_d_(_fX_,_e_(_fR_,_fW_)),_fQ_)] - :[0,_fX_,_f_(_d_(_fX_,_e_(_fQ_,_fW_)),_fR_),_fW_]} - function _K_(_fP_,_fO_) - {if(! caml_equal(_fP_,_t_) && ! caml_equal(_fO_,_t_)) - return _k_(_e_(_h_(_fP_,runtime.ml_z_gcd(_fP_,_fO_)),_fO_)); - return _t_} - function _L_(_fN_,_fM_) - {return 0 <= _fM_ - ?runtime.ml_z_testbit(_fN_,_fM_) - :caml_call1(Stdlib[1],cst_Z_testbit)} - function _M_(_fL_){return runtime.ml_z_testbit(_fL_,0)} - function _N_(_fK_){return 1 - runtime.ml_z_testbit(_fK_,0)} - function _O_(_fJ_,_fI_,_fH_) - {if(_fI_ < 0)caml_call1(Stdlib[1],cst_Z_signed_extract_negative_); - if(_fH_ < 1)caml_call1(Stdlib[1],cst_Z_signed_extract_nonpositi); - return _L_(_fJ_,(_fI_ + _fH_ | 0) - 1 | 0) - ?_o_(runtime.ml_z_extract(_o_(_fJ_),_fI_,_fH_)) - :runtime.ml_z_extract(_fJ_,_fI_,_fH_)} - function _P_(_fG_) - {return 0 < runtime.ml_z_sign(_fG_) - ?runtime.ml_z_numbits(_fG_) - 1 | 0 - :caml_call1(Stdlib[1],cst_Z_log2)} - function _Q_(_fF_) - {return 0 < runtime.ml_z_sign(_fF_) - ?runtime.ml_z_numbits(_j_(_fF_)) - :caml_call1(Stdlib[1],cst_Z_log2up)} - function _R_(_fC_,_fB_) - {var - _fD_=runtime.ml_z_to_int64(_fC_), - _fE_=_fB_?_fD_:runtime.caml_int64_or(_fD_,_S_); - return caml_int64_to_float(_fE_)} - function _T_(_fx_) - {if(typeof _fx_ === "number")return _fx_; - var _fy_=runtime.ml_z_numbits(_fx_); - if(63 < _fy_) - {var _fz_=_fy_ - 55 | 0,_fA_=_q_(_fx_,_fz_); - return caml_ldexp_float - (_R_(_fA_,runtime.ml_z_equal(_fx_,_p_(_fA_,_fz_))),_fz_)} - return caml_int64_to_float(runtime.ml_z_to_int64(_fx_))} - function _U_(_fv_){var _fw_=_C_(_fv_);return caml_call1(Stdlib[42],_fw_)} - function _V_(_ft_,_fs_) - {var _fu_=_C_(_fs_);return caml_call2(Stdlib[66],_ft_,_fu_)} - function _W_(_fr_,_fq_){return _C_(_fq_)} - function _X_(_fo_,_fn_) - {var _fp_=_C_(_fn_);return caml_call2(Stdlib_Buffer[16],_fo_,_fp_)} - function _Y_(_fl_,_fk_) - {var _fm_=_C_(_fk_);return caml_call2(Stdlib_Format[13],_fl_,_fm_)} - function _Z_(_fj_){return _fj_} - function ___(_fi_,_fh_){return runtime.ml_z_equal(_fi_,_fh_)} - var - Z= - [0, - _a_, - _t_, - _u_, - _v_, - _D_, - _E_, - _F_, - _i_, - _j_, - _k_, - _b_, - _c_, - _d_, - _e_, - _f_, - _g_, - _G_, - _H_, - _I_, - _h_, - _l_, - _m_, - _n_, - _o_, - _p_, - _q_, - _r_, - _L_, - _s_, - _T_, - _C_, - _U_, - _V_, - _W_, - _X_, - _Y_, - _y_, - _z_, - _A_, - _B_, - _w_, - _x_, - _N_, - _M_, - _J_, - _K_, - _P_, - _Q_, - _O_, - _b_, - _Z_, - _c_, - _d_, - _e_, - _f_, - _h_, - _g_, - _l_, - _m_, - _n_, - _o_, - _p_, - _q_, - [0, - ___, - _A_, - _B_, - _y_, - _z_, - function(_fg_,_ff_){return 1 - runtime.ml_z_equal(_fg_,_ff_)}], - cst_1_12, - _R_]; - caml_register_global(39,Z,"Z"); - function _$_(_fc_,_fb_) - {if(_fc_ !== 0 && _fb_ !== 1) - {var _fd_=runtime.ml_z_gcd(_fc_,_fb_); - if(_fd_ === 1)return [0,_fc_,_fb_]; - var _fe_=_h_(_fb_,_fd_); - return [0,_h_(_fc_,_fd_),_fe_]} - return [0,_fc_,_u_]} - function _aa_(_e__,_e9_) - {var _e$_=runtime.ml_z_sign(_e9_); - if(0 === _e$_)return [0,runtime.ml_z_sign(_e__),_t_]; - if(0 < _e$_)return _$_(_e__,_e9_); - var _fa_=_b_(_e9_); - return _$_(_b_(_e__),_fa_)} - function _ab_(_e8_){return [0,_e8_,_u_]} - function _ac_(_e7_){return _ab_(_e7_)} - function _ad_(_e6_){return _ab_(runtime.ml_z_of_int32(_e6_))} - function _ae_(_e5_){return _ab_(runtime.ml_z_of_int64(_e5_))} - function _af_(_e4_){return _ab_(runtime.ml_z_of_nativeint(_e4_))} - function _ag_(_e3_,_e2_){return _aa_(_e3_,_e2_)} - var - _ah_=_ab_(_t_), - _ai_=_ab_(_u_), - _ak_=[0,_u_,_t_], - _al_=[0,_v_,_t_], - _am_=[0,_t_,_t_], - _aj_=_ab_(_v_); - function _an_(_eY_) - {if(_eY_ == Stdlib[22])return _ak_; - if(_eY_ == Stdlib[23])return _al_; - if(4 === runtime.caml_classify_float(_eY_))return _am_; - var - _eZ_=runtime.caml_frexp_float(_eY_), - _e0_=_eZ_[2] - 53 | 0, - _e1_=runtime.ml_z_of_float(caml_ldexp_float(_eZ_[1],53)); - return 0 <= _e0_?_ab_(_p_(_e1_,_e0_)):_$_(_e1_,_p_(_u_,- _e0_ | 0))} - function _ao_(_eW_) - {if(_eW_[2] === 0) - {var _eX_=runtime.ml_z_sign(_eW_[1]) + 1 | 0; - if(! (2 < _eX_ >>> 0)) - switch(_eX_){case 0:return 2;case 1:break;default:return 1} - return 3} - return _eW_[1] === 0?0:4} - function _ap_(_eV_){return _eV_[2] !== 0?1:0} - function _aq_(_eU_){return _eU_[1]} - function _ar_(_eT_){return _eT_[2]} - function _as_(_eS_){return runtime.ml_z_sign(_eS_[1])} - function _at_(_eO_,_eN_) - {var _eP_=runtime.ml_z_equal(_eO_[1],_eN_[1]); - if(_eP_) - var - _eQ_=runtime.ml_z_equal(_eO_[2],_eN_[2]), - _eR_=_eQ_?3 !== _ao_(_eO_)?1:0:_eQ_; - else - var _eR_=_eP_; - return _eR_} - function _au_(_eH_,_eG_) - {var _eI_=_ao_(_eH_),_eJ_=_ao_(_eG_),switch$0=0; - switch(_eI_) - {case 1: - var _eM_=_eJ_ - 1 | 0; - if(! (2 < _eM_ >>> 0)) - switch(_eM_) - {case 0:switch$0 = 2;break;case 1:break;default:switch$0 = 1} - break; - case 2: - if(1 === _eJ_) - switch$0 = 1; - else - if(_eJ_) - switch(_eJ_ - 2 | 0) - {case 1:switch$0 = 1;break;case 2:break;default:switch$0 = 2} - break; - case 3:if(3 !== _eJ_)return -1;switch$0 = 2;break; - default:switch$0 = 1} - var switch$1=0; - switch(switch$0) - {case 1: - var _eK_=_eJ_ - 1 | 0; - if(! (2 < _eK_ >>> 0)) - switch(_eK_) - {case 0:switch$1 = 1;break;case 1:break;default:return 1} - break; - case 0:break; - default:return 0} - if(! switch$1) - {var switch$2=0; - if(! (4 <= _eI_)) - switch(_eI_) - {case 0:break;case 2:switch$2 = 1;break;default:switch$2 = 2} - var switch$3=0; - switch(switch$2) - {case 0: - if(2 !== _eJ_) - {if(caml_equal(_eH_[2],_eG_[2])) - return runtime.ml_z_compare(_eH_[1],_eG_[1]); - var _eL_=_e_(_eG_[1],_eH_[2]); - return runtime.ml_z_compare(_e_(_eH_[1],_eG_[2]),_eL_)} - switch$3 = 1; - break; - case 1:break; - default:switch$3 = 1} - if(switch$3)return 1} - return -1} - function _av_(_eF_,_eE_){return 0 < _au_(_eF_,_eE_)?_eE_:_eF_} - function _aw_(_eD_,_eC_){return 0 <= _au_(_eD_,_eC_)?_eD_:_eC_} - function _ax_(_ex_,_ew_) - {var _ey_=_ao_(_ex_),_ez_=_ao_(_ew_); - if(3 !== _ey_) - {var _eA_=_ez_ - 1 | 0,switch$0=0; - if(! (2 < _eA_ >>> 0)) - switch(_eA_) - {case 0:switch$0 = 2;break;case 1:break;default:switch$0 = 1} - var switch$1=0; - switch(switch$0) - {case 0: - var switch$2=0; - if(! (4 <= _ey_)) - switch(_ey_) - {case 0:break; - case 2:switch$1 = 1;switch$2 = 2;break; - default:switch$2 = 1} - var switch$3=0; - switch(switch$2) - {case 2:switch$3 = 1;break; - case 0: - if(2 !== _ez_) - {if(caml_equal(_ex_[2],_ew_[2]))return _y_(_ex_[1],_ew_[1]); - var _eB_=_e_(_ew_[1],_ex_[2]); - return _y_(_e_(_ex_[1],_ew_[2]),_eB_)} - break - } - if(! switch$3)return 0; - break; - case 1:break; - default:switch$1 = 1} - if(switch$1)return 1} - return 0} - function _ay_(_es_,_er_) - {var _et_=_ao_(_es_),_eu_=_ao_(_er_); - if(3 !== _et_) - {var switch$0=0; - if(2 <= _eu_) - switch(_eu_ - 2 | 0) - {case 2:break;case 1:switch$0 = 1;break;default:switch$0 = 2} - var switch$1=0; - switch(switch$0) - {case 0: - var switch$2=0; - if(! (4 <= _et_)) - switch(_et_) - {case 0:break; - case 1:switch$1 = 1;switch$2 = 2;break; - default:switch$2 = 1} - var switch$3=0; - switch(switch$2) - {case 2:switch$3 = 1;break; - case 0: - if(1 !== _eu_) - {if(caml_equal(_es_[2],_er_[2]))return _A_(_es_[1],_er_[1]); - var _ev_=_e_(_er_[1],_es_[2]); - return _A_(_e_(_es_[1],_er_[2]),_ev_)} - break - } - if(! switch$3)return 1; - break; - case 1:break; - default:switch$1 = 1} - if(switch$1)return 0} - return 0} - function _az_(_eq_,_ep_){return _ax_(_ep_,_eq_)} - function _aA_(_eo_,_en_){return _ay_(_en_,_eo_)} - function _aB_(_ej_) - {switch(_ao_(_ej_)) - {case 0:return cst_0; - case 1:return cst_inf; - case 2:return cst_inf$0; - case 3:return cst_undef; - default: - if(runtime.ml_z_equal(_ej_[2],1))return _C_(_ej_[1]); - var - _ek_=_C_(_ej_[2]), - _el_=caml_call2(Stdlib[28],cst,_ek_), - _em_=_C_(_ej_[1]); - return caml_call2(Stdlib[28],_em_,_el_)}} - function _aC_(_ei_){return _f_(_ei_[1],_ei_[2])} - function _aD_(_eh_){return _s_(_aC_(_eh_))} - function _aE_(_eg_){return runtime.ml_z_to_int32(_aC_(_eg_))} - function _aF_(_ef_){return runtime.ml_z_to_int64(_aC_(_ef_))} - function _aG_(_ee_){return runtime.ml_z_to_nativeint(_aC_(_ee_))} - function _aH_(_dZ_) - {switch(_ao_(_dZ_)) - {case 0:return 0.; - case 1:return Stdlib[22]; - case 2:return Stdlib[23]; - case 3:return Stdlib[24]; - default: - var - _d0_=_dZ_[1], - _d1_=_dZ_[2], - _d2_=runtime.ml_z_numbits(_d0_), - _d3_=runtime.ml_z_numbits(_d1_); - if(! (53 < _d2_) && ! (53 < _d3_)) - {var _ed_=caml_int64_to_float(runtime.ml_z_to_int64(_d1_)); - return caml_int64_to_float(runtime.ml_z_to_int64(_d0_)) / _ed_} - var _d4_=0 <= runtime.ml_z_sign(_d0_)?1:-1,_d5_=_d2_ - _d3_ | 0; - if(0 <= _d5_) - var _d7_=_p_(_d1_,_d5_),_d6_=_d0_; - else - var _d7_=_d1_,_d6_=_p_(_d0_,- _d5_ | 0); - if(_z_(_k_(_d6_),_d7_)) - var _d9_=_d5_,_d8_=_d6_; - else - var _d9_=_d5_ - 1 | 0,_d8_=_p_(_d6_,1); - var _d__=_G_(_p_(_d8_,54),_d7_); - if(-1080 < _d9_) - {var - _d$_=-1023 < _d9_?_t_:_p_(_d4_,55 + (-1023 - _d9_ | 0) | 0), - _ea_=_c_(_d$_,_d__[1]), - _eb_=0 === runtime.ml_z_sign(_d__[2])?_ea_:_m_(_u_,_ea_), - _ec_=_T_(_eb_); - return caml_ldexp_float(_ec_ - _T_(_d$_),_d9_ - 54 | 0)} - return caml_ldexp_float(_d4_,-1080)}} - function _aI_(_dX_){var _dY_=_dX_[2];return [0,_b_(_dX_[1]),_dY_]} - function _aJ_(_dV_){var _dW_=_dV_[2];return [0,_k_(_dV_[1]),_dW_]} - function _aK_(_dR_,_dQ_,_dP_) - {if(_dQ_[2] === _dP_[2]) - {var _dS_=_dQ_[2];return _$_(caml_call2(_dR_,_dQ_[1],_dP_[1]),_dS_)} - var _dT_=_e_(_dQ_[2],_dP_[2]),_dU_=_e_(_dP_[1],_dQ_[2]); - return _$_(caml_call2(_dR_,_e_(_dQ_[1],_dP_[2]),_dU_),_dT_)} - function _aL_(_dM_,_dL_) - {if(_dM_[2] !== 0 && _dL_[2] !== 0)return _aK_(_c_,_dM_,_dL_); - var _dN_=_ao_(_dM_),_dO_=_ao_(_dL_),switch$0=0; - switch(_dN_) - {case 0:return _dL_; - case 1: - switch(_dO_) - {case 2:switch$0 = 3;break;case 0:case 3:break;default:switch$0 = 1} - break; - case 2: - switch(_dO_) - {case 2:switch$0 = 2;break; - case 1:switch$0 = 3;break; - case 4:switch$0 = 4;break - } - break; - case 4: - switch(_dO_) - {case 4:return caml_call1(Stdlib[2],cst_impossible_case); - case 0: - case 3:break; - default:switch$0 = 2} - break - } - var switch$1=0; - switch(switch$0) - {case 0:if(3 === _dO_)switch$1 = 1;else if(! _dO_)return _dM_;break; - case 1:break; - case 2:switch$1 = 2 <= _dO_?3:2;break; - case 3:return _am_; - default:switch$1 = 3} - var switch$2=0; - switch(switch$1) - {case 0:if(! (3 <= _dN_))switch$2 = 1;break; - case 1:break; - case 2:switch$2 = 1;break; - default:return _al_} - return switch$2?_ak_:_am_} - function _aM_(_dI_,_dH_) - {if(_dI_[2] !== 0 && _dH_[2] !== 0)return _aK_(_d_,_dI_,_dH_); - var _dJ_=_ao_(_dI_),_dK_=_ao_(_dH_),switch$0=0; - switch(_dJ_) - {case 0:return _aI_(_dH_); - case 1: - switch(_dK_) - {case 1:switch$0 = 3;break;case 0:case 3:break;default:switch$0 = 1} - break; - case 2: - switch(_dK_) - {case 1:switch$0 = 2;break; - case 2:switch$0 = 3;break; - case 4:switch$0 = 4;break - } - break; - case 4: - switch(_dK_) - {case 4:return caml_call1(Stdlib[2],cst_impossible_case$0); - case 0: - case 3:break; - default:switch$0 = 2} - break - } - var switch$1=0; - switch(switch$0) - {case 0:if(3 === _dK_)switch$1 = 1;else if(! _dK_)return _dI_;break; - case 1:break; - case 2:switch$1 = 2 <= _dK_?2:3;break; - case 3:return _am_; - default:switch$1 = 3} - var switch$2=0; - switch(switch$1) - {case 0:if(! (3 <= _dJ_))switch$2 = 1;break; - case 1:break; - case 2:switch$2 = 1;break; - default:return _al_} - return switch$2?_ak_:_am_} - function _aN_(_dE_,_dD_) - {if(_dE_[2] !== 0 && _dD_[2] !== 0) - {var _dG_=_e_(_dE_[2],_dD_[2]);return _$_(_e_(_dE_[1],_dD_[1]),_dG_)} - var _dF_=runtime.ml_z_sign(_dD_[1]); - return [0,caml_mul(runtime.ml_z_sign(_dE_[1]),_dF_),_t_]} - function _aO_(_dA_) - {var _dB_=runtime.ml_z_sign(_dA_[1]) + 1 | 0; - if(! (2 < _dB_ >>> 0)) - switch(_dB_) - {case 0:var _dC_=_b_(_dA_[1]);return [0,_b_(_dA_[2]),_dC_]; - case 1:break; - default:return [0,_dA_[2],_dA_[1]]} - return _dA_[2] === 0?_am_:_ak_} - function _aP_(_dy_,_dx_) - {if(0 <= runtime.ml_z_sign(_dx_[1])) - return _aN_(_dy_,[0,_dx_[2],_dx_[1]]); - var _dz_=_b_(_dx_[1]); - return _aN_(_dy_,[0,_b_(_dx_[2]),_dz_])} - function _aQ_(_dv_,_du_) - {if(_dv_[2] === 0)return _dv_; - var _dw_=_dv_[2]; - return _$_(_p_(_dv_[1],_du_),_dw_)} - function _aR_(_ds_,_dr_) - {if(_ds_[2] === 0)return _ds_; - var _dt_=_p_(_ds_[2],_dr_); - return _$_(_ds_[1],_dt_)} - function _aS_(_dq_) - {switch(_dq_) - {case 0:return 2;case 1:return 8;case 2:return 10;default:return 16}} - function _aT_(_do_,_dn_,_dm_,_dl_) - {var _dp_=_dn_; - for(;;) - {if(_dm_ <= _dp_)return 0; - if(caml_call1(_dl_,caml_string_get(_do_,_dp_)))return [0,_dp_]; - var _dp_=_dp_ + 1 | 0; - continue}} - function _aU_(_cy_) - {if(caml_string_notequal(_cy_,cst$0)) - {if(caml_string_notequal(_cy_,cst_inf$1)) - {if(! caml_string_notequal(_cy_,cst_inf$2))return _al_; - if(caml_string_notequal(_cy_,cst_inf$3)) - {if(caml_string_notequal(_cy_,cst_undef$0)) - try - {var - _dc_=caml_call2(Stdlib_String[35],_cy_,47), - _dd_= - runtime.ml_z_of_substring_base - (0, - _cy_, - _dc_ + 1 | 0, - (caml_ml_string_length(_cy_) - _dc_ | 0) - 1 | 0), - _de_=_aa_(runtime.ml_z_of_substring_base(0,_cy_,0,_dc_),_dd_); - return _de_} - catch(_df_) - {_df_ = caml_wrap_exception(_df_); - if(_df_ === Stdlib[8]) - {var _cA_=caml_ml_string_length(_cy_),_cz_=0; - if(_cA_ < 1) - var _cB_=[0,0,_cz_]; - else - {var _c$_=caml_string_get(_cy_,0) - 43 | 0,switch$0=0; - if(! (2 < _c$_ >>> 0)) - {var switch$1=0; - switch(_c$_) - {case 0:var _db_=[0,0,1];break; - case 1:switch$1 = 1;break; - default:var _db_=[0,1,1]} - if(! switch$1){var _da_=_db_;switch$0 = 1}} - if(! switch$0)var _da_=[0,0,_cz_]; - var _cB_=_da_} - var _cC_=_cB_[2]; - if(_cA_ < (_cC_ + 2 | 0)) - var _cD_=[0,2,_cC_]; - else - {var - _c8_=caml_string_get(_cy_,_cC_), - _c9_=caml_string_get(_cy_,_cC_ + 1 | 0), - switch$2=0; - if(48 === _c8_) - {var switch$3=0; - if(89 <= _c9_) - {if(98 === _c9_) - switch$3 = 2; - else - if(111 === _c9_) - switch$3 = 1; - else - if(120 !== _c9_){switch$2 = 1;switch$3 = 3}} - else - if(66 === _c9_) - switch$3 = 2; - else - if(79 === _c9_) - switch$3 = 1; - else - if(! (88 <= _c9_)){switch$2 = 1;switch$3 = 3} - switch(switch$3) - {case 3:break; - case 0:var _c__=[0,3,_cC_ + 2 | 0];break; - case 1:var _c__=[0,1,_cC_ + 2 | 0];break; - default:var _c__=[0,0,_cC_ + 2 | 0]}} - else - switch$2 = 1; - if(switch$2)var _c__=[0,2,_cC_]; - var _cD_=_c__} - var - _cE_=_cD_[2], - _cF_=_cD_[1], - _cG_= - 2 === _cF_ - ?function(_di_) - {if(69 !== _di_ && 101 !== _di_)return 0;return 1} - :3 <= _cF_ - ?function(_dj_) - {if(80 !== _dj_ && 112 !== _dj_)return 0;return 1} - :function(_dk_){return 0}, - _cH_=_aT_(_cy_,_cE_,_cA_,_cG_); - if(_cH_) - var - _cI_=_cH_[1], - _cJ_=_cI_ + 1 | 0, - _cL_=_cI_, - _cK_= - _s_ - (runtime.ml_z_of_substring_base - (10,_cy_,_cJ_,_cA_ - _cJ_ | 0)); - else - var _cL_=_cA_,_cK_=0; - if(2 <= _cF_) - {var - _cM_= - _aT_(_cy_,_cE_,_cL_,function(_dh_){return 46 === _dh_?1:0}); - if(_cM_) - {var _cN_=_cM_[1]; - if(2 === _cF_) - var _cO_=1; - else - {if(! (3 <= _cF_))throw [0,Assert_failure,_aV_];var _cO_=4} - var _cQ_=_cN_ + 1 | 0,_cR_=_cL_ - 1 | 0,_cP_=0; - if(_cR_ < _cQ_) - var _cS_=_cP_; - else - {var _c4_=_cQ_,_c3_=_cP_; - for(;;) - {var _c5_=caml_string_get(_cy_,_c4_),switch$4=0; - if(71 <= _c5_) - {if(97 <= _c5_) - {if(! (103 <= _c5_))switch$4 = 1} - else - if(95 === _c5_){var _c6_=_c3_;switch$4 = 2}} - else - if(58 <= _c5_) - {if(65 <= _c5_)switch$4 = 1} - else - if(48 <= _c5_)switch$4 = 1; - switch(switch$4) - {case 0: - caml_call1(Stdlib[1],cst_Q_of_string_invalid_digit); - var _c6_=_c3_; - break; - case 1:var _c6_=_c3_ + 1 | 0;break - } - var _c7_=_c4_ + 1 | 0; - if(_cR_ !== _c4_){var _c4_=_c7_,_c3_=_c6_;continue} - var _cS_=_c6_; - break}} - var - _cT_= - _aT_ - (_cy_, - _cN_ + 1 | 0, - _cL_, - function(_dg_){return 95 !== _dg_?1:0}), - _cU_=_cT_?_cT_[1]:_cL_, - _cV_=caml_call3(Stdlib_String[15],_cy_,_cU_,_cL_ - _cU_ | 0), - _cW_=caml_call3(Stdlib_String[15],_cy_,_cE_,_cN_ - _cE_ | 0), - _cX_=caml_call2(Stdlib[28],_cW_,_cV_), - _cZ_=caml_mul(_cS_,_cO_), - _cY_=_F_(_aS_(_cF_),_cX_)} - else - var - _cZ_=0, - _cY_= - runtime.ml_z_of_substring_base - (_aS_(_cF_),_cy_,_cE_,_cL_ - _cE_ | 0)} - else - var - _cZ_=0, - _cY_= - runtime.ml_z_of_substring_base - (_aS_(_cF_),_cy_,_cE_,_cL_ - _cE_ | 0); - var - _c0_=_cK_ - _cZ_ | 0, - _c1_=2 === _cF_?10:3 <= _cF_?2:1, - _c2_= - 0 <= _c0_ - ?_ab_(_e_(_cY_,runtime.ml_z_pow(_c1_,_c0_))) - :_aa_(_cY_,runtime.ml_z_pow(_c1_,- _c0_ | 0)); - return _cB_[1]?_aI_(_c2_):_c2_} - throw _df_} - return _am_}} - return _ak_} - return _ah_} - function _aW_(_cw_) - {var _cx_=_aB_(_cw_);return caml_call1(Stdlib[42],_cx_)} - function _aX_(_cu_,_ct_) - {var _cv_=_aB_(_ct_);return caml_call2(Stdlib[66],_cu_,_cv_)} - function _aY_(_cs_,_cr_){return _aB_(_cr_)} - function _aZ_(_cp_,_co_) - {var _cq_=_aB_(_co_);return caml_call2(Stdlib_Buffer[16],_cp_,_cq_)} - function _a0_(_cm_,_cl_) - {var _cn_=_aB_(_cl_);return caml_call2(Stdlib_Format[13],_cm_,_cn_)} - function _a1_(_ck_){return _ck_} - var - Q= - [0, - _aa_, - _ah_, - _ai_, - _aj_, - _ak_, - _al_, - _am_, - _ab_, - _ac_, - _ad_, - _ae_, - _af_, - _ag_, - _an_, - _aU_, - _aq_, - _ar_, - _ao_, - _ap_, - _as_, - _au_, - _at_, - _av_, - _aw_, - _ax_, - _az_, - _ay_, - _aA_, - _aC_, - _aD_, - _aE_, - _aF_, - _aG_, - _aB_, - _aH_, - _aI_, - _aJ_, - _aL_, - _aM_, - _aN_, - _aO_, - _aP_, - _aQ_, - _aR_, - _aW_, - _aX_, - _aY_, - _aZ_, - _a0_, - _aI_, - _a1_, - _aL_, - _aM_, - _aN_, - _aP_, - _aQ_, - _aR_, - _ac_, - _ag_, - _ab_, - _aa_, - _at_, - _ay_, - _aA_, - _ax_, - _az_, - function(_cj_,_ci_){return 1 - _at_(_cj_,_ci_)}]; - caml_register_global(42,Q,"Q"); - function _a2_(_ch_,_cg_){return _c_(_ch_,_cg_)} - function _a3_(_cf_,_ce_){return _e_(_cf_,_ce_)} - function _a4_(_cd_){return _e_(_cd_,_cd_)} - function _a5_(_cc_){return runtime.ml_z_sqrt(_cc_)} - function _a6_(_cb_,_ca_){return runtime.ml_z_gcd(_cb_,_ca_)} - function _a7_(_b$_,_b__){return runtime.ml_z_pow(_b$_,_b__)} - function _a8_(_b9_,_b8_){return runtime.ml_z_pow(_b9_,_s_(_b8_))} - function _a9_(_b7_,_b6_) - {if(_b6_ < 0)throw [0,Stdlib[6],cst_power_int_positive_int]; - return runtime.ml_z_pow(_b7_,_b6_)} - function _a__(_b5_,_b4_) - {if(_b4_ < 0)throw [0,Stdlib[6],cst_power_big_int_positive_int]; - return runtime.ml_z_pow(_b5_,_b4_)} - function _a$_(_b3_,_b2_) - {if(runtime.ml_z_sign(_b2_) < 0) - throw [0,Stdlib[6],cst_power_int_positive_big_int]; - return _a8_(_b3_,_b2_)} - function _ba_(_b1_,_b0_) - {if(runtime.ml_z_sign(_b0_) < 0) - throw [0,Stdlib[6],cst_power_big_int_positive_big]; - return _a8_(_b1_,_b0_)} - function _bb_(_bZ_){return runtime.ml_z_sign(_bZ_)} - function _bc_(_bY_,_bX_){return runtime.ml_z_compare(_bY_,_bX_)} - function _bd_(_bW_,_bV_){return runtime.ml_z_equal(_bW_,_bV_)} - function _be_(_bU_,_bT_){return runtime.ml_z_compare(_bU_,_bT_) <= 0?1:0} - function _bf_(_bS_,_bR_){return 0 <= runtime.ml_z_compare(_bS_,_bR_)?1:0} - function _bg_(_bQ_,_bP_){return runtime.ml_z_compare(_bQ_,_bP_) < 0?1:0} - function _bh_(_bO_,_bN_){return 0 < runtime.ml_z_compare(_bO_,_bN_)?1:0} - function _bi_(_bM_){return runtime.ml_z_size(_bM_)} - function _bj_(_bL_){return _bL_} - function _bk_(_bK_){return runtime.ml_z_fits_int(_bK_)} - function _bl_(_bH_) - {try - {var _bI_=_s_(_bH_);return _bI_} - catch(_bJ_) - {_bJ_ = caml_wrap_exception(_bJ_); - if(_bJ_ === _a_)return caml_call1(Stdlib[2],cst_int_of_big_int); - throw _bJ_}} - function _bm_(_bG_){return runtime.ml_z_of_int32(_bG_)} - function _bn_(_bF_){return runtime.ml_z_of_nativeint(_bF_)} - function _bo_(_bE_){return runtime.ml_z_of_int64(_bE_)} - function _bp_(_bB_) - {try - {var _bC_=runtime.ml_z_to_int32(_bB_);return _bC_} - catch(_bD_) - {_bD_ = caml_wrap_exception(_bD_); - if(_bD_ === _a_)return caml_call1(Stdlib[2],cst_int32_of_big_int); - throw _bD_}} - function _bq_(_by_) - {try - {var _bz_=runtime.ml_z_to_nativeint(_by_);return _bz_} - catch(_bA_) - {_bA_ = caml_wrap_exception(_bA_); - if(_bA_ === _a_)return caml_call1(Stdlib[2],cst_nativeint_of_big_int); - throw _bA_}} - function _br_(_bv_) - {try - {var _bw_=runtime.ml_z_to_int64(_bv_);return _bw_} - catch(_bx_) - {_bx_ = caml_wrap_exception(_bx_); - if(_bx_ === _a_)return caml_call1(Stdlib[2],cst_int64_of_big_int); - throw _bx_}} - var - Big_int_Z= - [0, - _t_, - _u_, - _b_, - _k_, - _c_, - _i_, - _a2_, - _d_, - _j_, - _e_, - _a3_, - _a4_, - _a5_, - _G_, - _H_, - _I_, - _a6_, - _a7_, - _a8_, - _a9_, - _a__, - _a$_, - _ba_, - _bb_, - _bc_, - _bd_, - _be_, - _bf_, - _bg_, - _bh_, - _x_, - _w_, - _bi_, - _C_, - _D_, - _bj_, - _bk_, - _bl_, - _bm_, - _bn_, - _bo_, - _bp_, - _bq_, - _br_, - _T_, - _l_, - _m_, - _n_, - _p_, - _q_, - _r_, - function(_bu_,_bt_,_bs_){return runtime.ml_z_extract(_bu_,_bt_,_bs_)}]; - caml_register_global(43,Big_int_Z,"Big_int_Z"); - return} - (globalThis)); - - -//# 1 "../../.js/zarith_stubs_js/zarith_stubs_js.cma.js" -(function(globalThis) - {"use strict"; - var runtime=globalThis.jsoo_runtime,Zarith_stubs_js=[0]; - runtime.caml_register_global(0,Zarith_stubs_js,"Zarith_stubs_js"); - return} - (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" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_bytes_get=runtime.caml_bytes_get, - caml_bytes_set=runtime.caml_bytes_set, - caml_check_bound=runtime.caml_check_bound, - caml_classify_float=runtime.caml_classify_float, - caml_create_bytes=runtime.caml_create_bytes, - caml_equal=runtime.caml_equal, - caml_float_of_string=runtime.caml_float_of_string, - caml_fresh_oo_id=runtime.caml_fresh_oo_id, - 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, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_trampoline=runtime.caml_trampoline, - caml_trampoline_return=runtime.caml_trampoline_return, - 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_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_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_None$1=caml_string_of_jsbytes("None"), - cst_Unexpected_end_of_input$92= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$12=caml_string_of_jsbytes("Invalid token"), - cst_Unexpected_end_of_input$93= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Unexpected_end_of_input$94= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_escape_sequence$1= - caml_string_of_jsbytes("Invalid escape sequence"), - cst_Unexpected_end_of_input$95= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_low_surrogate_for_$1= - caml_string_of_jsbytes - ("Invalid low surrogate for code point beyond U+FFFF"), - cst_Missing_escape_sequence_re$1= - caml_string_of_jsbytes - ("Missing escape sequence representing low surrogate for code point beyond U+FFFF"), - cst_Unexpected_end_of_input$96= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_string_literal$5= - caml_string_of_jsbytes("Invalid string literal"), - cst_Unexpected_end_of_input$97= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$29= - caml_string_of_jsbytes("Expected ':' or '>' but found"), - cst_Unexpected_end_of_input$98= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$30= - caml_string_of_jsbytes("Expected '<' but found"), - cst_Unexpected_end_of_input$99= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$31= - caml_string_of_jsbytes("Expected '>' but found"), - cst_Unexpected_end_of_input$100= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$32= - caml_string_of_jsbytes("Expected ',' but found"), - cst_Unexpected_end_of_input$101= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$30= - caml_string_of_jsbytes("Expected '<', '\"' or '[' but found"), - cst_Unexpected_end_of_input$102= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Unterminated_comment$3=caml_string_of_jsbytes("Unterminated comment"), - cst_Expected_null_but_found$1= - caml_string_of_jsbytes("Expected 'null' but found"), - cst_Unexpected_end_of_input$103= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_true_or_false_but$1= - caml_string_of_jsbytes("Expected 'true' or 'false' but found"), - cst_Unexpected_end_of_input$104= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Int_overflow$5=caml_string_of_jsbytes("Int overflow"), - cst_Int_overflow$6=caml_string_of_jsbytes("Int overflow"), - cst_Expected_an_integer_but_fo$1= - caml_string_of_jsbytes - ("Expected an integer but found a string that doesn't even represent an integer"), - cst_Expected_integer_but_found$1= - caml_string_of_jsbytes("Expected integer but found"), - cst_Unexpected_end_of_input$105= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Int32_overflow$3=caml_string_of_jsbytes("Int32 overflow"), - cst_Expected_an_int32_but_foun$1= - caml_string_of_jsbytes - ("Expected an int32 but found a string that doesn't even represent an integer"), - cst_Expected_int32_but_found$1= - caml_string_of_jsbytes("Expected int32 but found"), - cst_Unexpected_end_of_input$106= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Int32_overflow$4=caml_string_of_jsbytes("Int32 overflow"), - cst_Expected_an_int64_but_foun$1= - caml_string_of_jsbytes - ("Expected an int64 but found a string that doesn't even represent an integer"), - cst_Expected_int64_but_found$1= - 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_Expected_a_number_but_foun$1= - caml_string_of_jsbytes - ("Expected a number but found a string that doesn't even represent a number"), - cst_Expected_number_but_found$1= - caml_string_of_jsbytes("Expected number but found"), - cst_Unexpected_end_of_input$108= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$33= - caml_string_of_jsbytes("Expected '\"' but found"), - cst_Unexpected_end_of_input$109= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$7= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$110= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$8= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$111= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$34= - caml_string_of_jsbytes("Expected '[' but found"), - cst_Unexpected_end_of_input$112= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$35= - caml_string_of_jsbytes("Expected '[' but found"), - cst_Unexpected_end_of_input$113= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$31= - caml_string_of_jsbytes("Expected ',' or ']' but found"), - cst_Unexpected_end_of_input$114= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$36= - caml_string_of_jsbytes("Expected ')' but found"), - cst_Unexpected_end_of_input$115= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$32= - caml_string_of_jsbytes("Expected ')' or '' but found"), - cst_Expected_or_but_found$33= - caml_string_of_jsbytes("Expected ']' or '' but found"), - cst_Expected_or_but_found$34= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Unexpected_end_of_input$116= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$35= - caml_string_of_jsbytes("Expected ',' or ']' but found"), - cst_Expected_or_but_found$36= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Expected_or_but_found$37= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Unexpected_end_of_input$117= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$37= - caml_string_of_jsbytes("Expected '{' but found"), - cst_Unexpected_end_of_input$118= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$38= - caml_string_of_jsbytes("Expected '{' but found"), - cst_Unexpected_end_of_input$119= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$38= - caml_string_of_jsbytes("Expected ',' or '}' but found"), - cst_Unexpected_end_of_input$120= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$39= - caml_string_of_jsbytes("Expected ':' but found"), - cst_Unexpected_end_of_input$121= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$39= - caml_string_of_jsbytes("Expected '(' or '[' but found"), - cst_Unexpected_end_of_input$122= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$40= - caml_string_of_jsbytes("Expected '(' but found"), - cst_Unexpected_end_of_input$123= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$41= - caml_string_of_jsbytes("Expected ')' but found"), - cst_Unexpected_end_of_input$124= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$42= - caml_string_of_jsbytes("Expected '[' but found"), - cst_Unexpected_end_of_input$125= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$43= - caml_string_of_jsbytes("Expected ']' but found"), - cst_Unexpected_end_of_input$126= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Unexpected_end_of_input$127= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$13=caml_string_of_jsbytes("Invalid token"), - cst_Invalid_string_literal$6= - caml_string_of_jsbytes("Invalid string literal"), - cst_Unexpected_end_of_input$128= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$40= - caml_string_of_jsbytes("Expected ':' or '>' but found"), - cst_Unexpected_end_of_input$129= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$9= - 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_Unexpected_end_of_input$131= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$14=caml_string_of_jsbytes("Invalid token"), - cst_Invalid_string_literal$7= - caml_string_of_jsbytes("Invalid string literal"), - cst_Unexpected_end_of_input$132= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$41= - caml_string_of_jsbytes("Expected ':' or '>' but found"), - cst_Unexpected_end_of_input$133= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$10= - 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_Expected_or_but_found$42= - caml_string_of_jsbytes("Expected ',' or '}' but found"), - cst_Unexpected_end_of_input$135= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$43= - caml_string_of_jsbytes("Expected ',' or ']' but found"), - cst_Unexpected_end_of_input$136= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$44= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Unexpected_end_of_input$137= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$44= - caml_string_of_jsbytes("Expected ':' but found"), - cst_Unexpected_end_of_input$138= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$45= - 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_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"), - cst_Blank_input_data$3=caml_string_of_jsbytes("Blank input data"), - cst_Junk_after_end_of_JSON_val$1= - 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_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_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_None$0=caml_string_of_jsbytes("None"), - cst_Unexpected_end_of_input$44= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$9=caml_string_of_jsbytes("Invalid token"), - cst_Unexpected_end_of_input$45= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Unexpected_end_of_input$46= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_escape_sequence$0= - caml_string_of_jsbytes("Invalid escape sequence"), - cst_Unexpected_end_of_input$47= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_low_surrogate_for_$0= - caml_string_of_jsbytes - ("Invalid low surrogate for code point beyond U+FFFF"), - cst_Missing_escape_sequence_re$0= - caml_string_of_jsbytes - ("Missing escape sequence representing low surrogate for code point beyond U+FFFF"), - cst_Unexpected_end_of_input$48= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_string_literal$2= - caml_string_of_jsbytes("Invalid string literal"), - cst_Unexpected_end_of_input$49= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$13= - caml_string_of_jsbytes("Expected ':' or '>' but found"), - cst_Unexpected_end_of_input$50= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$14= - caml_string_of_jsbytes("Expected '<' but found"), - cst_Unexpected_end_of_input$51= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$15= - caml_string_of_jsbytes("Expected '>' but found"), - cst_Unexpected_end_of_input$52= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$16= - caml_string_of_jsbytes("Expected ',' but found"), - cst_Unexpected_end_of_input$53= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$14= - caml_string_of_jsbytes("Expected '<', '\"' or '[' but found"), - cst_Unexpected_end_of_input$54= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Unterminated_comment$1=caml_string_of_jsbytes("Unterminated comment"), - cst_Expected_null_but_found$0= - caml_string_of_jsbytes("Expected 'null' but found"), - cst_Unexpected_end_of_input$55= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_true_or_false_but$0= - caml_string_of_jsbytes("Expected 'true' or 'false' but found"), - cst_Unexpected_end_of_input$56= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Int_overflow$3=caml_string_of_jsbytes("Int overflow"), - cst_Int_overflow$4=caml_string_of_jsbytes("Int overflow"), - cst_Expected_an_integer_but_fo$0= - caml_string_of_jsbytes - ("Expected an integer but found a string that doesn't even represent an integer"), - cst_Expected_integer_but_found$0= - caml_string_of_jsbytes("Expected integer but found"), - cst_Unexpected_end_of_input$57= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Int32_overflow$1=caml_string_of_jsbytes("Int32 overflow"), - cst_Expected_an_int32_but_foun$0= - caml_string_of_jsbytes - ("Expected an int32 but found a string that doesn't even represent an integer"), - cst_Expected_int32_but_found$0= - caml_string_of_jsbytes("Expected int32 but found"), - cst_Unexpected_end_of_input$58= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Int32_overflow$2=caml_string_of_jsbytes("Int32 overflow"), - cst_Expected_an_int64_but_foun$0= - caml_string_of_jsbytes - ("Expected an int64 but found a string that doesn't even represent an integer"), - cst_Expected_int64_but_found$0= - 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_Expected_a_number_but_foun$0= - caml_string_of_jsbytes - ("Expected a number but found a string that doesn't even represent a number"), - cst_Expected_number_but_found$0= - caml_string_of_jsbytes("Expected number but found"), - cst_Unexpected_end_of_input$60= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$17= - caml_string_of_jsbytes("Expected '\"' but found"), - cst_Unexpected_end_of_input$61= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$3= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$62= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$4= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$63= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$18= - caml_string_of_jsbytes("Expected '[' but found"), - cst_Unexpected_end_of_input$64= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$19= - caml_string_of_jsbytes("Expected '[' but found"), - cst_Unexpected_end_of_input$65= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$15= - caml_string_of_jsbytes("Expected ',' or ']' but found"), - cst_Unexpected_end_of_input$66= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$20= - caml_string_of_jsbytes("Expected ')' but found"), - cst_Unexpected_end_of_input$67= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$16= - caml_string_of_jsbytes("Expected ')' or '' but found"), - cst_Expected_or_but_found$17= - caml_string_of_jsbytes("Expected ']' or '' but found"), - cst_Expected_or_but_found$18= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Unexpected_end_of_input$68= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$19= - caml_string_of_jsbytes("Expected ',' or ']' but found"), - cst_Expected_or_but_found$20= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Expected_or_but_found$21= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Unexpected_end_of_input$69= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$21= - caml_string_of_jsbytes("Expected '{' but found"), - cst_Unexpected_end_of_input$70= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$22= - caml_string_of_jsbytes("Expected '{' but found"), - cst_Unexpected_end_of_input$71= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$22= - caml_string_of_jsbytes("Expected ',' or '}' but found"), - cst_Unexpected_end_of_input$72= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$23= - caml_string_of_jsbytes("Expected ':' but found"), - cst_Unexpected_end_of_input$73= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$23= - caml_string_of_jsbytes("Expected '(' or '[' but found"), - cst_Unexpected_end_of_input$74= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$24= - caml_string_of_jsbytes("Expected '(' but found"), - cst_Unexpected_end_of_input$75= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$25= - caml_string_of_jsbytes("Expected ')' but found"), - cst_Unexpected_end_of_input$76= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$26= - caml_string_of_jsbytes("Expected '[' but found"), - cst_Unexpected_end_of_input$77= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$27= - caml_string_of_jsbytes("Expected ']' but found"), - cst_Unexpected_end_of_input$78= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Unexpected_end_of_input$79= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$10=caml_string_of_jsbytes("Invalid token"), - cst_Invalid_string_literal$3= - caml_string_of_jsbytes("Invalid string literal"), - cst_Unexpected_end_of_input$80= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$24= - caml_string_of_jsbytes("Expected ':' or '>' but found"), - cst_Unexpected_end_of_input$81= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$5= - 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_Unexpected_end_of_input$83= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$11=caml_string_of_jsbytes("Invalid token"), - cst_Invalid_string_literal$4= - caml_string_of_jsbytes("Invalid string literal"), - cst_Unexpected_end_of_input$84= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$25= - caml_string_of_jsbytes("Expected ':' or '>' but found"), - cst_Unexpected_end_of_input$85= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$6= - 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_Expected_or_but_found$26= - caml_string_of_jsbytes("Expected ',' or '}' but found"), - cst_Unexpected_end_of_input$87= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$27= - caml_string_of_jsbytes("Expected ',' or ']' but found"), - cst_Unexpected_end_of_input$88= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$28= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Unexpected_end_of_input$89= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$28= - caml_string_of_jsbytes("Expected ':' but found"), - cst_Unexpected_end_of_input$90= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$29= - 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_Unterminated_comment$2=caml_string_of_jsbytes("Unterminated comment"), - cst_Expected_two_objects_check$0= - caml_string_of_jsbytes("Expected two objects, check inputs"), - cst_Can_t_convert_each_element$0= - caml_string_of_jsbytes("Can't convert each element of non-array type "), - cst_Expected_string_or_null_go$0= - caml_string_of_jsbytes("Expected string or null, got "), - cst_Expected_string_got$0=caml_string_of_jsbytes("Expected string, got "), - cst_Expected_array_got$0=caml_string_of_jsbytes("Expected array, got "), - cst_Expected_int_or_null_got$0= - caml_string_of_jsbytes("Expected int or null, got "), - cst_Expected_int_got$0=caml_string_of_jsbytes("Expected int, got "), - cst_Expected_float_or_null_got$0= - caml_string_of_jsbytes("Expected float or null, got "), - cst_Expected_float_got$0=caml_string_of_jsbytes("Expected float, got "), - cst_Expected_number_or_null_go$0= - caml_string_of_jsbytes("Expected number or null, got "), - cst_Expected_number_got$0=caml_string_of_jsbytes("Expected number, got "), - cst_Expected_bool_or_null_got$0= - caml_string_of_jsbytes("Expected bool or null, got "), - cst_Expected_bool_got$0=caml_string_of_jsbytes("Expected bool, got "), - cst_Expected_object_got$0=caml_string_of_jsbytes("Expected object, got "), - cst_Can_t_map_function_over_no$0= - caml_string_of_jsbytes("Can't map function over non-array type "), - cst_out_of_bounds$0=caml_string_of_jsbytes(" out of bounds"), - cst_Index$0=caml_string_of_jsbytes("Index "), - cst_of_non_array_type$0=caml_string_of_jsbytes(" of non-array type "), - 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_object$0=caml_string_of_jsbytes("object"), - cst_array$0=caml_string_of_jsbytes("array"), - cst_bool$0=caml_string_of_jsbytes("bool"), - cst_variant$0=caml_string_of_jsbytes("variant"), - cst_tuple$0=caml_string_of_jsbytes("tuple"), - cst_float$0=caml_string_of_jsbytes("float"), - cst_int$0=caml_string_of_jsbytes("int"), - cst_intlit$0=caml_string_of_jsbytes("intlit"), - cst_string$0=caml_string_of_jsbytes("string"), - stream$0=[0,1], - cst_Blank_input_data$2=caml_string_of_jsbytes("Blank input data"), - cst_Blank_input_data$1=caml_string_of_jsbytes("Blank input data"), - cst_Junk_after_end_of_JSON_val$0= - 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= - 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= - caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$14= - caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN_value_not_allowed_in_s$5= - 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= - caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$12= - 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_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_u00$1=caml_string_of_jsbytes("\\u00"), - cst_Null$0=caml_string_of_jsbytes("`Null"), - cst_Invalid_token=caml_string_of_jsbytes("Invalid token"), - cst_Invalid_token$0=caml_string_of_jsbytes("Invalid token"), - cst_Unexpected_end_of_input= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$1=caml_string_of_jsbytes("Invalid token"), - cst_Unexpected_end_of_input$0= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Unexpected_end_of_input$1= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_escape_sequence= - caml_string_of_jsbytes("Invalid escape sequence"), - cst_Unexpected_end_of_input$2= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_low_surrogate_for_= - caml_string_of_jsbytes - ("Invalid low surrogate for code point beyond U+FFFF"), - cst_Missing_escape_sequence_re= - caml_string_of_jsbytes - ("Missing escape sequence representing low surrogate for code point beyond U+FFFF"), - cst_Unexpected_end_of_input$3= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_string_literal= - caml_string_of_jsbytes("Invalid string literal"), - cst_Unexpected_end_of_input$4= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found= - caml_string_of_jsbytes("Expected ':' or '>' but found"), - cst_Unexpected_end_of_input$5= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found=caml_string_of_jsbytes("Expected '<' but found"), - cst_Unexpected_end_of_input$6= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$0=caml_string_of_jsbytes("Expected '>' but found"), - cst_Unexpected_end_of_input$7= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$1=caml_string_of_jsbytes("Expected ',' but found"), - cst_Unexpected_end_of_input$8= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$0= - caml_string_of_jsbytes("Expected '<', '\"' or '[' but found"), - cst_Unexpected_end_of_input$9= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Unterminated_comment=caml_string_of_jsbytes("Unterminated comment"), - cst_Expected_null_but_found= - caml_string_of_jsbytes("Expected 'null' but found"), - cst_Unexpected_end_of_input$10= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_true_or_false_but= - caml_string_of_jsbytes("Expected 'true' or 'false' but found"), - cst_Unexpected_end_of_input$11= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Int_overflow$1=caml_string_of_jsbytes("Int overflow"), - cst_Int_overflow$2=caml_string_of_jsbytes("Int overflow"), - cst_Expected_an_integer_but_fo= - caml_string_of_jsbytes - ("Expected an integer but found a string that doesn't even represent an integer"), - cst_Expected_integer_but_found= - caml_string_of_jsbytes("Expected integer but found"), - cst_Unexpected_end_of_input$12= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Int32_overflow=caml_string_of_jsbytes("Int32 overflow"), - cst_Expected_an_int32_but_foun= - caml_string_of_jsbytes - ("Expected an int32 but found a string that doesn't even represent an integer"), - cst_Expected_int32_but_found= - caml_string_of_jsbytes("Expected int32 but found"), - cst_Unexpected_end_of_input$13= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Int32_overflow$0=caml_string_of_jsbytes("Int32 overflow"), - cst_Expected_an_int64_but_foun= - caml_string_of_jsbytes - ("Expected an int64 but found a string that doesn't even represent an integer"), - cst_Expected_int64_but_found= - 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_Expected_a_number_but_foun= - caml_string_of_jsbytes - ("Expected a number but found a string that doesn't even represent a number"), - cst_Expected_number_but_found= - caml_string_of_jsbytes("Expected number but found"), - cst_Unexpected_end_of_input$15= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$2= - caml_string_of_jsbytes("Expected '\"' but found"), - cst_Unexpected_end_of_input$16= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$17= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$0= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$18= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$3=caml_string_of_jsbytes("Expected '[' but found"), - cst_Unexpected_end_of_input$19= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$4=caml_string_of_jsbytes("Expected '[' but found"), - cst_Unexpected_end_of_input$20= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$1= - caml_string_of_jsbytes("Expected ',' or ']' but found"), - cst_Unexpected_end_of_input$21= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$2=caml_string_of_jsbytes("Invalid token"), - cst_Expected_but_found$5=caml_string_of_jsbytes("Expected ')' but found"), - cst_Unexpected_end_of_input$22= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$2= - caml_string_of_jsbytes("Expected ')' or '' but found"), - cst_Expected_or_but_found$3= - caml_string_of_jsbytes("Expected ']' or '' but found"), - cst_Expected_or_but_found$4= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Unexpected_end_of_input$23= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$5= - caml_string_of_jsbytes("Expected ',' or ']' but found"), - cst_Expected_or_but_found$6= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Expected_or_but_found$7= - caml_string_of_jsbytes("Expected ',' or ')' but found"), - cst_Unexpected_end_of_input$24= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$6=caml_string_of_jsbytes("Expected '{' but found"), - cst_Unexpected_end_of_input$25= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$7=caml_string_of_jsbytes("Expected '{' but found"), - cst_Unexpected_end_of_input$26= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$8= - caml_string_of_jsbytes("Expected ',' or '}' but found"), - cst_Unexpected_end_of_input$27= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$8=caml_string_of_jsbytes("Expected ':' but found"), - cst_Unexpected_end_of_input$28= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$9= - caml_string_of_jsbytes("Expected '(' or '[' but found"), - cst_Unexpected_end_of_input$29= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$9=caml_string_of_jsbytes("Expected '(' but found"), - cst_Unexpected_end_of_input$30= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$10= - caml_string_of_jsbytes("Expected ')' but found"), - cst_Unexpected_end_of_input$31= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$11= - caml_string_of_jsbytes("Expected '[' but found"), - cst_Unexpected_end_of_input$32= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$12= - caml_string_of_jsbytes("Expected ']' but found"), - cst_Unexpected_end_of_input$33= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$3=caml_string_of_jsbytes("Invalid token"), - cst_Invalid_token$4=caml_string_of_jsbytes("Invalid token"), - cst_Unexpected_end_of_input$34= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$5=caml_string_of_jsbytes("Invalid token"), - cst_Invalid_string_literal$0= - caml_string_of_jsbytes("Invalid string literal"), - cst_Unexpected_end_of_input$35= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$10= - caml_string_of_jsbytes("Expected ':' or '>' but found"), - cst_Unexpected_end_of_input$36= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$1= - caml_string_of_jsbytes("Expected string or identifier but found"), - cst_Unexpected_end_of_input$37= - 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_Unexpected_end_of_input$38= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Invalid_token$8=caml_string_of_jsbytes("Invalid token"), - cst_Invalid_string_literal$1= - caml_string_of_jsbytes("Invalid string literal"), - cst_Unexpected_end_of_input$39= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_string_or_identif$2= - 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_Expected_or_but_found$11= - caml_string_of_jsbytes("Expected ',' or '}' but found"), - cst_Unexpected_end_of_input$41= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_or_but_found$12= - caml_string_of_jsbytes("Expected ',' or ']' but found"), - cst_Unexpected_end_of_input$42= - caml_string_of_jsbytes("Unexpected end of input"), - cst_Expected_but_found$13= - 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_Unterminated_comment$0=caml_string_of_jsbytes("Unterminated comment"), - cst_Expected_two_objects_check= - caml_string_of_jsbytes("Expected two objects, check inputs"), - cst_Can_t_convert_each_element= - caml_string_of_jsbytes("Can't convert each element of non-array type "), - cst_Expected_string_or_null_go= - caml_string_of_jsbytes("Expected string or null, got "), - cst_Expected_string_got=caml_string_of_jsbytes("Expected string, got "), - cst_Expected_array_got=caml_string_of_jsbytes("Expected array, got "), - cst_Expected_int_or_null_got= - caml_string_of_jsbytes("Expected int or null, got "), - cst_Expected_int_got=caml_string_of_jsbytes("Expected int, got "), - cst_Expected_float_or_null_got= - caml_string_of_jsbytes("Expected float or null, got "), - cst_Expected_float_got=caml_string_of_jsbytes("Expected float, got "), - cst_Expected_number_or_null_go= - caml_string_of_jsbytes("Expected number or null, got "), - cst_Expected_number_got=caml_string_of_jsbytes("Expected number, got "), - cst_Expected_bool_or_null_got= - caml_string_of_jsbytes("Expected bool or null, got "), - cst_Expected_bool_got=caml_string_of_jsbytes("Expected bool, got "), - cst_Expected_object_got=caml_string_of_jsbytes("Expected object, got "), - cst_Can_t_map_function_over_no= - caml_string_of_jsbytes("Can't map function over non-array type "), - cst_out_of_bounds=caml_string_of_jsbytes(" out of bounds"), - cst_Index=caml_string_of_jsbytes("Index "), - cst_of_non_array_type=caml_string_of_jsbytes(" of non-array type "), - 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_object=caml_string_of_jsbytes("object"), - cst_array=caml_string_of_jsbytes("array"), - cst_bool=caml_string_of_jsbytes("bool"), - cst_variant=caml_string_of_jsbytes("variant"), - cst_tuple=caml_string_of_jsbytes("tuple"), - cst_float=caml_string_of_jsbytes("float"), - cst_int=caml_string_of_jsbytes("int"), - cst_intlit=caml_string_of_jsbytes("intlit"), - cst_string=caml_string_of_jsbytes("string"), - stream=[0,1], - cst_Blank_input_data$0=caml_string_of_jsbytes("Blank input data"), - cst_Blank_input_data=caml_string_of_jsbytes("Blank input data"), - cst_Junk_after_end_of_JSON_val= - caml_string_of_jsbytes("Junk after end of JSON value:"), - cst_Int8_overflow=caml_string_of_jsbytes("Int8 overflow"), - 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_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_0$4=caml_string_of_jsbytes(".0"), - 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_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_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_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_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_NaN=caml_string_of_jsbytes("NaN"), - cst_0=caml_string_of_jsbytes(".0"), - cst_Infinity=caml_string_of_jsbytes("Infinity"), - cst_Infinity$0=caml_string_of_jsbytes("-Infinity"), - cst_true=caml_string_of_jsbytes("true"), - cst_false=caml_string_of_jsbytes("false"), - cst_null=caml_string_of_jsbytes("null"), - cst_b=caml_string_of_jsbytes("\\b"), - cst_t=caml_string_of_jsbytes("\\t"), - cst_n=caml_string_of_jsbytes("\\n"), - cst_f=caml_string_of_jsbytes("\\f"), - cst_r=caml_string_of_jsbytes("\\r"), - 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"), - 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"), - cst_Yojson_End_of_tuple=caml_string_of_jsbytes("Yojson.End_of_tuple"), - cst_Yojson_End_of_input=caml_string_of_jsbytes("Yojson.End_of_input"), - cst_Yojson_Basic_Int_overflow= - caml_string_of_jsbytes("Yojson.Basic.Int_overflow"), - ocaml_lex_tables= - [0, - caml_string_of_jsbytes - ("\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0"), - caml_string_of_jsbytes - ("\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), - caml_string_of_jsbytes - ("\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02"), - caml_string_of_jsbytes - ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), - caml_string_of_jsbytes - ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes("")], - cst_Yojson_Basic_Finally=caml_string_of_jsbytes("Yojson.Basic.Finally"), - cst_Yojson_Basic_Util_Type_err= - caml_string_of_jsbytes("Yojson.Basic.Util.Type_error"), - cst_Yojson_Basic_Util_Undefine= - caml_string_of_jsbytes("Yojson.Basic.Util.Undefined"), - cst_Yojson_Safe_Int_overflow= - caml_string_of_jsbytes("Yojson.Safe.Int_overflow"), - ocaml_lex_tables$0= - [0, - caml_string_of_jsbytes - ("\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0"), - caml_string_of_jsbytes - ("\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), - caml_string_of_jsbytes - ("\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02"), - caml_string_of_jsbytes - ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), - caml_string_of_jsbytes - ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes("")], - cst_Yojson_Safe_Finally=caml_string_of_jsbytes("Yojson.Safe.Finally"), - cst_Yojson_Safe_Util_Type_erro= - caml_string_of_jsbytes("Yojson.Safe.Util.Type_error"), - cst_Yojson_Safe_Util_Undefined= - caml_string_of_jsbytes("Yojson.Safe.Util.Undefined"), - cst_Yojson_Raw_Int_overflow= - caml_string_of_jsbytes("Yojson.Raw.Int_overflow"), - ocaml_lex_tables$1= - [0, - caml_string_of_jsbytes - ("\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0"), - caml_string_of_jsbytes - ("\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), - caml_string_of_jsbytes - ("\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02"), - caml_string_of_jsbytes - ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), - caml_string_of_jsbytes - ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - caml_string_of_jsbytes(""), - 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_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_Char=global_data.Stdlib__Char, - Stdlib_Lexing=global_data.Stdlib__Lexing, - _a_=[0,951901561,0], - _b_=[0,848054398,0], - _c_=[0,848054398,0], - ___= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _S_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _G_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _H_= - [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_= - [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_= - [0, - [11, - caml_string_of_jsbytes("`Assoc ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Assoc (@[")], - _F_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _L_= - [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_= - [0, - [11, - caml_string_of_jsbytes("`Floatlit ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [0, - [11, - caml_string_of_jsbytes("`List ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`List (@[")], - _R_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _T_= - [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_= - [0, - [11, - caml_string_of_jsbytes("`Bool ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [0, - [11, - caml_string_of_jsbytes("`Tuple ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Tuple (@[")], - _Z_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _$_= - [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_= - [0, - [11, - caml_string_of_jsbytes("`Variant ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Variant (@[")], - _ac_= - [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, - [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_= - [0, - [11, - caml_string_of_jsbytes("`Float ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [0, - [11, - caml_string_of_jsbytes("`Int ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [0, - [11, - caml_string_of_jsbytes("`Stringlit ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [0, - [11, - caml_string_of_jsbytes("`String ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [0, - [11, - caml_string_of_jsbytes("`Intlit ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _c8_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _cW_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _cX_= - [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_= - [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_= - [0, - [11, - caml_string_of_jsbytes("`Assoc ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Assoc (@[")], - _cV_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _c1_= - [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_= - [0, - [11, - caml_string_of_jsbytes("`Floatlit ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [0, - [11, - caml_string_of_jsbytes("`List ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`List (@[")], - _c7_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _c9_= - [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$_= - [0, - [11, - caml_string_of_jsbytes("`Bool ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [0, - [11, - caml_string_of_jsbytes("`Tuple ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Tuple (@[")], - _dd_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _df_= - [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_= - [0, - [11, - caml_string_of_jsbytes("`Variant ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Variant (@[")], - _di_= - [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_= - [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_= - [0, - [11, - caml_string_of_jsbytes("`Stringlit ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [0, - [11, - caml_string_of_jsbytes("`Intlit ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [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_= - [0, - [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], - caml_string_of_jsbytes("%s '%s'")], - _dv_= - [0, - [11, - caml_string_of_jsbytes("File "), - [2,0,[11,caml_string_of_jsbytes(", line"),0]]], - caml_string_of_jsbytes("File %s, line")], - _dw_= - [0, - [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], - caml_string_of_jsbytes("byte %i")], - _dy_= - [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_= - [0, - [2, - 0, - [12, - 32, - [4, - 3, - 0, - 0, - [11, - 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_= - [0, - [11, - caml_string_of_jsbytes("src="), - [3, - 0, - [11, - caml_string_of_jsbytes(" start="), - [4, - 3, - 0, - 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_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _cg_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _b9_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _b__= - [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_= - [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_= - [0, - [11, - caml_string_of_jsbytes("`Assoc ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Assoc (@[")], - _b8_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _cc_= - [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_= - [0, - [11, - caml_string_of_jsbytes("`List ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`List (@[")], - _cf_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _ch_= - [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_= - [0, - [11, - caml_string_of_jsbytes("`Bool ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [0, - [11, - caml_string_of_jsbytes("`Variant ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Variant (@[")], - _cn_= - [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_= - [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_= - [0, - [11, - caml_string_of_jsbytes("`Tuple ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Tuple (@[")], - _b3_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _b5_= - [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_= - [0, - [11, - caml_string_of_jsbytes("`Float ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [0, - [11, - caml_string_of_jsbytes("`Int ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [0, - [11, - caml_string_of_jsbytes("`Intlit ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [0, - [11, - caml_string_of_jsbytes("`String ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [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_= - [0, - [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], - caml_string_of_jsbytes("%s '%s'")], - _cG_= - [0, - [11, - caml_string_of_jsbytes("File "), - [2,0,[11,caml_string_of_jsbytes(", line"),0]]], - caml_string_of_jsbytes("File %s, line")], - _cH_= - [0, - [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], - caml_string_of_jsbytes("byte %i")], - _cJ_= - [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_= - [0, - [2, - 0, - [12, - 32, - [4, - 3, - 0, - 0, - [11, - 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")], - _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_= - [0, - [11, - caml_string_of_jsbytes("src="), - [3, - 0, - [11, - caml_string_of_jsbytes(" start="), - [4, - 3, - 0, - 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_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _a3_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _a4_= - [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_= - [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_= - [0, - [11, - caml_string_of_jsbytes("`Assoc ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`Assoc (@[")], - _a2_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _a8_= - [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__= - [0, - [11, - caml_string_of_jsbytes("`List ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0]], - caml_string_of_jsbytes("`List (@[")], - _a$_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes("<2>"),0], - caml_string_of_jsbytes("<2>")]], - [12,91,0]], - caml_string_of_jsbytes("@[<2>[")], - _bb_= - [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_= - [0, - [11, - caml_string_of_jsbytes("`Bool ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [0, - [11, - caml_string_of_jsbytes("`Float ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [0, - [11, - caml_string_of_jsbytes("`Int ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [0, - [11, - caml_string_of_jsbytes("`String ("), - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - 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_= - [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_= - [0, - [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], - caml_string_of_jsbytes("%s '%s'")], - _br_= - [0, - [11, - caml_string_of_jsbytes("File "), - [2,0,[11,caml_string_of_jsbytes(", line"),0]]], - caml_string_of_jsbytes("File %s, line")], - _bs_= - [0, - [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], - caml_string_of_jsbytes("byte %i")], - _bu_= - [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_= - [0, - [2, - 0, - [12, - 32, - [4, - 3, - 0, - 0, - [11, - 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_= - [0, - [11, - caml_string_of_jsbytes("src="), - [3, - 0, - [11, - caml_string_of_jsbytes(" start="), - [4, - 3, - 0, - 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_= - [0, - [11, - caml_string_of_jsbytes("src="), - [3, - 0, - [11, - caml_string_of_jsbytes(" start="), - [4, - 3, - 0, - 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)]; - function json_error(s){throw [0,Json_error,s]} - var - End_of_array=[248,cst_Yojson_End_of_array,caml_fresh_oo_id(0)], - End_of_object=[248,cst_Yojson_End_of_object,caml_fresh_oo_id(0)], - 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]; - 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)) - {caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],192 | (x >>> 6 | 0) & 31)); - return caml_call2(add,buf,caml_call1(Stdlib_Char[1],128 | x & 63))} - if(maxbits(16,x)) - {caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],224 | (x >>> 12 | 0) & 15)); - 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))} - if(maxbits(21,x)) - {caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],240 | (x >>> 18 | 0) & 7)); - caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 12 | 0) & 63)); - 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))} - if(maxbits(26,x)) - {caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],248 | (x >>> 24 | 0) & 3)); - caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 18 | 0) & 63)); - caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 12 | 0) & 63)); - 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))} - if(maxbits(31,x)) - {caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],252 | (x >>> 30 | 0) & 1)); - caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 24 | 0) & 63)); - caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 18 | 0) & 63)); - caml_call2 - (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 12 | 0) & 63)); - 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_]} - 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); - 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_)} - 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); - start[1] = stop + 1 | 0; - return 0} - function finish_string(src,start,ob) - {try - {var - _k0_= - caml_call4 - (Bi_outbuf[14], - ob, - src, - start[1], - caml_ml_string_length(src) - start[1] | 0); - return _k0_} - catch(exc) - {exc = caml_wrap_exception(exc); - caml_call4 - (Stdlib_Printf[3], - _e_, - 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_; - for(;;) - {var c=caml_string_get(s,i$0); - if(92 === c) - write_special(s,start,i$0,ob,cst); - else - {var switch$0=0; - if(35 <= c) - if(127 === c)switch$0 = 1;else switch$0 = 2; - else - 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 24: - case 25:switch$0 = 2;switch$1 = 1;break; - default:switch$0 = 1;switch$1 = 1}} - else - switch$0 = 1; - 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; - break - }} - var _kZ_=i$0 + 1 | 0; - if(_kY_ !== i$0){var i$0=_kZ_;continue} - break}} - finish_string(s,start,ob); - return caml_call2(Bi_outbuf[15],ob,34)} - function json_string_of_string(s) - {var ob=caml_call3(Bi_outbuf[3],0,0,10); - write_string(ob,s); - return caml_call1(Bi_outbuf[4],ob)} - function write_null(ob,param) - {return caml_call2(Bi_outbuf[13],ob,cst_null)} - function write_bool(ob,x) - {var _kW_=x?cst_true:cst_false;return caml_call2(Bi_outbuf[13],ob,_kW_)} - 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; - 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} - 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} - function float_needs_period(s) - {try - {var _kS_=caml_ml_string_length(s) - 1 | 0,_kR_=0; - if(! (_kS_ < 0)) - {var i=_kR_; - for(;;) - {var match=caml_string_get(s,i),switch$0=0; - if(48 <= match) - {if(! (58 <= match))switch$0 = 1} - 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} - 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_} - 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 - 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_} - 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); - 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_} - 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_)} - return 4 <= match - ?caml_call2(Bi_outbuf[13],ob,cst_NaN$1) - :write_normal_float_prec(significant_figures,ob,x)} - function write_std_float_fast(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var - _kJ_= - 0. < x - ?cst_Infinity_value_not_allowed - :cst_Infinity_value_not_allowed$0; - return json_error(_kJ_)} - 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_} - function write_std_float_prec(significant_figures,ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var - _kG_= - 0. < x - ?cst_Infinity_value_not_allowed$3 - :cst_Infinity_value_not_allowed$4; - return json_error(_kG_)} - return 4 <= match - ?json_error(cst_NaN_value_not_allowed_in_s$1) - :write_normal_float_prec(significant_figures,ob,x)} - var - write_intlit=Bi_outbuf[13], - write_floatlit=Bi_outbuf[13], - write_stringlit=Bi_outbuf[13]; - function iter2(f_elt,f_sep,x,param$0) - {if(param$0) - {var l$0=param$0[2],y$0=param$0[1]; - caml_call2(f_elt,x,y$0); - var param=l$0; - for(;;) - {if(param) - {var l=param[2],y=param[1]; - caml_call1(f_sep,x); - caml_call2(f_elt,x,y); - var param=l; - continue} - return 0}} - return 0} - function f_sep(ob){return caml_call2(Bi_outbuf[15],ob,44)} - function write_tuple(ob,l) - {caml_call2(Bi_outbuf[15],ob,40); - iter2(write_t,f_sep,ob,l); - return caml_call2(Bi_outbuf[15],ob,41)} - function write_list(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); - iter2(write_t,f_sep,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} - 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 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)} - var b=x[2]; - return write_bool(ob,b)} - if(726928360 <= _kF_){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)} - 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)} - 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]; - 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)} - function write_std_tuple(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); - iter2(write_std_json,f_sep,ob,l); - return caml_call2(Bi_outbuf[15],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 - 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); - return write_std_json(ob,x)}; - caml_call2(Bi_outbuf[15],ob,123); - iter2(f_elt,f_sep,ob,l); - return caml_call2(Bi_outbuf[15],ob,125)} - var s=x[2]; - return caml_call2(Bi_outbuf[13],ob,s)} - if(848054398 <= _kE_) - {var l$0=x[2]; - caml_call2(Bi_outbuf[15],ob,91); - iter2(write_std_json,f_sep,ob,l$0); - return caml_call2(Bi_outbuf[15],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)} - 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)} - 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)} - 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) - {if(opt)var sth=opt[1],len=sth;else var len=256; - if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],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); - return s} - function to_channel(buf,len,std,oc,x) - {if(buf) - var ob=buf[1],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; - 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); - try - {to_channel(0,len,std,oc,x); - var _kD_=caml_call1(Stdlib[76],oc); - return _kD_} - 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) - {if(opt)var sth=opt[1],len=sth;else var len=256; - if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],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); - return s} - function stream_to_channel(buf,len,std,oc,st) - {if(buf) - var ob=buf[1],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); - try - {stream_to_channel(0,len,std,oc,st); - var _kA_=caml_call1(Stdlib[76],oc); - return _kA_} - 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 - l$0=x[2], - _kt_= - 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]; - return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_kv_,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); - 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_)]}} - 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 xs=param[2]; - caml_call2(Stdlib_Format[129],fmt,_E_); - caml_call2(Stdlib_Format[129],fmt,_F_); - var - _kl_=0, - _km_= - 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_); - pp(fmt,value); - caml_call2(Stdlib_Format[129],fmt,_K_); - 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_)} - 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_) - {var xs$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_Q_); - caml_call2(Stdlib_Format[129],fmt,_R_); - var - _kn_=0, - _ko_= - function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_S_); - 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_)} - 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_) - {var tup=param[2]; - caml_call2(Stdlib_Format[129],fmt,_Y_); - caml_call2(Stdlib_Format[129],fmt,_Z_); - var - _kp_=0, - _kq_= - function(sep,e) - {if(sep)caml_call2(Stdlib_Format[129],fmt,___); - 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_)} - 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_); - 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)} - 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_) - {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_) - {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_)} - 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_) - {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_)} - 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)} - 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 switch$0=0; - if(848054398 <= _kd_) - {if(928231259 === _kd_) - {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(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]; - 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_) - {var - value=_ki_[2], - key=_ki_[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); - return result} - catch(_kh_) - {_kh_ = caml_wrap_exception(_kh_); - if(_kh_[1] === Stdlib[6])return 0; - throw _kh_}}} - else - if - (! - (848054399 <= _kd_) - && - typeof b$0 - !== - "number" - && - 848054398 - === - b$0[1]) - {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} - else - if(726928360 === _kd_) - {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(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_) - && - typeof b$0 - !== - "number" - && - 708012133 - === - b$0[1]) - {var - _kf_=b$0[2], - value=_kf_[2], - name=_kf_[1], - match=a$0[2], - value$0=match[2], - name$0=match[1], - match$0=caml_equal(name$0,name); - if(match$0) - {if(value$0) - {if(value) - {var b$3=value[1],a$3=value$0[1],a$0=a$3,b$0=b$3;continue}} - else - if(! value)return 1; - return 0} - return 0} - if(switch$0) - 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_}} - else - if(-375152890 <= _kd_) - {if(3654863 === _kd_) - {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(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_) - && - typeof b$0 - !== - "number" - && - -375152890 - === - 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(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_ - && - typeof b$0 - !== - "number" - && - -752863768 - === - 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) - {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) - {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) - {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]; - 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)} - 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) - {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)} - function hex$0(n) - {var _jP_=10 <= n?n + 87 | 0:n + 48 | 0; - return caml_call1(Stdlib_Char[1],_jP_)} - 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); - start[1] = stop + 1 | 0; - return 0} - function finish_string$0(src,start,ob) - {try - {var - _jO_= - caml_call4 - (Bi_outbuf[14], - ob, - src, - start[1], - caml_ml_string_length(src) - start[1] | 0); - return _jO_} - catch(exc) - {exc = caml_wrap_exception(exc); - caml_call4 - (Stdlib_Printf[3], - _aB_, - 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_; - for(;;) - {var c=caml_string_get(s,i$0); - if(92 === c) - write_special$0(s,start,i$0,ob,cst$20); - else - {var switch$0=0; - if(35 <= c) - if(127 === c)switch$0 = 1;else switch$0 = 2; - else - 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 24: - case 25:switch$0 = 2;switch$1 = 1;break; - default:switch$0 = 1;switch$1 = 1}} - else - switch$0 = 1; - 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; - break - }} - var _jN_=i$0 + 1 | 0; - if(_jM_ !== i$0){var i$0=_jN_;continue} - break}} - finish_string$0(s,start,ob); - return caml_call2(Bi_outbuf[15],ob,34)} - function write_null$0(ob,param) - {return caml_call2(Bi_outbuf[13],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 - _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; - 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} - 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} - function float_needs_period$0(s) - {try - {var _jG_=caml_ml_string_length(s) - 1 | 0,_jF_=0; - if(! (_jG_ < 0)) - {var i=_jF_; - for(;;) - {var match=caml_string_get(s,i),switch$0=0; - if(48 <= match) - {if(! (58 <= match))switch$0 = 1} - 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} - 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_} - 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 - 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_} - 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); - 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_} - 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_)} - return 4 <= match - ?caml_call2(Bi_outbuf[13],ob,cst_NaN$4) - :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_= - 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); - 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_} - function write_std_float_prec$0(significant_figures,ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var - _ju_= - 0. < x - ?cst_Infinity_value_not_allowed$9 - :cst_Infinity_value_not_allowed$10; - return json_error(_ju_)} - return 4 <= match - ?json_error(cst_NaN_value_not_allowed_in_s$4) - :write_normal_float_prec$0(significant_figures,ob,x)} - function iter2$0(f_elt,f_sep,x,param$0) - {if(param$0) - {var l$0=param$0[2],y$0=param$0[1]; - caml_call2(f_elt,x,y$0); - var param=l$0; - for(;;) - {if(param) - {var l=param[2],y=param[1]; - caml_call1(f_sep,x); - caml_call2(f_elt,x,y); - var param=l; - continue} - return 0}} - return 0} - function f_sep$0(ob){return caml_call2(Bi_outbuf[15],ob,44)} - function write_list$0(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); - iter2$0(write_t$0,f_sep$0,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} - 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 l$0=x[2]; - return write_list$0(ob,l$0)} - if(737456202 <= _jt_){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)} - 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 - 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); - return write_std_json$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)} - var l$0=x[2]; - caml_call2(Bi_outbuf[15],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)} - var f=x[2]; - return write_std_float$0(ob,f)} - if(3654863 <= _js_){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) - {if(opt)var sth=opt[1],len=sth;else var len=256; - if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],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); - return s} - function to_channel$1(buf,len,std,oc,x) - {if(buf) - var ob=buf[1],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; - 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); - try - {to_channel$1(0,len,std,oc,x); - var _jr_=caml_call1(Stdlib[76],oc); - return _jr_} - 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) - {if(opt)var sth=opt[1],len=sth;else var len=256; - if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],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); - return s} - function stream_to_channel$0(buf,len,std,oc,st) - {if(buf) - var ob=buf[1],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); - try - {stream_to_channel$0(0,len,std,oc,st); - var _jo_=caml_call1(Stdlib[76],oc); - return _jo_} - 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 - l$0=x[2], - _jk_= - 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]; - return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_jm_,l$1)]}} - return x} - function pp$0(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 xs=param[2]; - caml_call2(Stdlib_Format[129],fmt,_a1_); - caml_call2(Stdlib_Format[129],fmt,_a2_); - var - _je_=0, - _jf_= - 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_); - 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_)} - var xs$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_a__); - caml_call2(Stdlib_Format[129],fmt,_a$_); - var - _jg_=0, - _jh_= - function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_ba_); - pp$0(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_) - {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_)} - 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_) - {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_)} - 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)} - 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_) - {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(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$_}}} - else - if - (963043957 - === - _i9_ - && - typeof b - !== - "number" - && - 963043957 - === - b[1]) - {var - ys$0=b[2], - xs$0=a[2], - compare_keys= - function(param,_jc_) - {var key=_jc_[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_) - {var - value=_jb_[2], - key=_jb_[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); - return result$0} - catch(_ja_) - {_ja_ = caml_wrap_exception(_ja_); - if(_ja_[1] === Stdlib[6])return 0; - throw _ja_}}} - else - if(-976970511 === _i9_) - {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(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]) - {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)} - var - from_channel=Stdlib_Lexing[2], - from_string=Stdlib_Lexing[3], - lexeme=Stdlib_Lexing[8], - sub_lexeme=Stdlib_Lexing[16], - sub_lexeme_char=Stdlib_Lexing[18]; - function hex$1(c) - {if(65 <= c) - {if(97 <= c) - {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} - else - if(! (71 <= c))return (c - 65 | 0) + 10 | 0} - else - if(! (9 < c - 48 >>> 0))return c - 48 | 0; - throw [0,Assert_failure,_bq_]} - 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); - 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); - return json_error(msg)} - function lexer_error(descr,v,lexbuf) - {var _i6_=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_]}]; - 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), - 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, - Int_overflow=[248,cst_Yojson_Basic_Int_overflow,caml_fresh_oo_id(0)]; - function extract_positive_int(lexbuf) - {var - start=lexbuf[5], - stop=lexbuf[6], - s=lexbuf[2], - n=[0,0], - _i3_=stop - 1 | 0; - if(! (_i3_ < 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} - break}} - if(0 <= n[1])return n[1]; - throw Int_overflow} - function extract_negative_int(lexbuf) - {var - start=lexbuf[5] + 1 | 0, - stop=lexbuf[6], - s=lexbuf[2], - n=[0,0], - _i0_=stop - 1 | 0; - if(! (_i0_ < 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} - break}} - if(0 < n[1])throw Int_overflow; - return n[1]} - function newline(v,lexbuf) - {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}}}} - function read_json$2(counter,v,lexbuf) - {var _iT_=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_])} - function ocaml_lex_read_json_rec(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,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 _bA_; - case 1:return _bB_; - 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]); - 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) - return lexer_error(cst_Int_overflow,v,lexbuf); - throw _iS_} - case 8: - try - {var _iK_=[0,3654863,extract_negative_int(lexbuf)];return _iK_} - catch(_iR_) - {_iR_ = caml_wrap_exception(_iR_); - if(_iR_ === Int_overflow) - return lexer_error(cst_Int_overflow$0,v,lexbuf); - throw _iR_} - case 9: - return [0, - 365180284, - caml_float_of_string(caml_call1(lexeme,lexbuf))]; - case 10: - var acc=[0,0]; - try - {read_space(v,lexbuf); - read_object_end(lexbuf); - var field_name=read_ident(v,lexbuf); - 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_]; - for(;;) - {read_space(v,lexbuf); - read_object_sep(v,lexbuf); - read_space(v,lexbuf); - var field_name$0=read_ident(v,lexbuf); - 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_]; - continue}} - catch(_iQ_) - {_iQ_ = caml_wrap_exception(_iQ_); - if(_iQ_ === End_of_object) - return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; - throw _iQ_} - 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_]; - 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_]; - continue}} - catch(_iP_) - {_iP_ = caml_wrap_exception(_iP_); - if(_iP_ === End_of_array) - return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; - throw _iP_} - case 12:return long_error(cst_Invalid_token,v,lexbuf); - case 13:return long_error(cst_Invalid_token$0,v,lexbuf); - case 14: - if(counter < 50) - {var counter$0=counter + 1 | 0; - return read_json$2(counter$0,v,lexbuf)} - return caml_trampoline_return(read_json$2,[0,v,lexbuf]); - case 15: - finish_comment(v,lexbuf); - if(counter < 50) - {var counter$1=counter + 1 | 0; - return read_json$2(counter$1,v,lexbuf)} - return caml_trampoline_return(read_json$2,[0,v,lexbuf]); - case 16: - newline(v,lexbuf); - if(counter < 50) - {var counter$2=counter + 1 | 0; - return read_json$2(counter$2,v,lexbuf)} - return caml_trampoline_return(read_json$2,[0,v,lexbuf]); - case 17: - if(counter < 50) - {var counter$3=counter + 1 | 0; - return read_json$2(counter$3,v,lexbuf)} - return caml_trampoline_return(read_json$2,[0,v,lexbuf]); - case 18:return custom_error(cst_Unexpected_end_of_input,v,lexbuf); - 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 map_string(v,f,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=63; - 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: - var b=v[1],_iI_=b[3]; - return caml_call3(f,caml_call1(Stdlib_Bytes[6],b[1]),0,_iI_); - 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; - 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: - 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; - 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 finish_variant(v,lexbuf) - {var ocaml_lex_state=102; - 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: - var x=read_json(v,lexbuf); - read_space(v,lexbuf); - read_gt(v,lexbuf); - return [0,x]; - case 1:return 0; - case 2:return long_error(cst_Expected_or_but_found,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$5,v,lexbuf)}}} - function read_lt(v,lexbuf) - {var ocaml_lex_state=107; - 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,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$6,v,lexbuf)}}} - function read_comma(v,lexbuf) - {var ocaml_lex_state=115; - 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$1,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$8,v,lexbuf)}}} - function start_any_variant(v,lexbuf) - {var ocaml_lex_state=119; - 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:return -154522342; - case 1:caml_call1(Bi_outbuf[19],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 read_eof(lexbuf) - {var ocaml_lex_state=131; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)return 1; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_null(v,lexbuf) - {var ocaml_lex_state=140; - 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_null_but_found,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$10,v,lexbuf)}}} - function read_null_if_possible(v,lexbuf) - {var ocaml_lex_state=147; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)return 1; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_bool(v,lexbuf) - {var ocaml_lex_state=152; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(5 < 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 1; - case 1:return 0; - case 2:return 1; - case 3:return 0; - case 4:return long_error(cst_Expected_true_or_false_but,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$11,v,lexbuf)}}} - function ocaml_lex_read_int_rec(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,ocaml_lex_state$0,lexbuf); - if(4 < 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: - try - {var _iC_=extract_positive_int(lexbuf);return _iC_} - catch(_iH_) - {_iH_ = caml_wrap_exception(_iH_); - if(_iH_ === Int_overflow) - return lexer_error(cst_Int_overflow$1,v,lexbuf); - throw _iH_} - case 1: - try - {var _iD_=extract_negative_int(lexbuf);return _iD_} - catch(_iG_) - {_iG_ = caml_wrap_exception(_iG_); - if(_iG_ === Int_overflow) - return lexer_error(cst_Int_overflow$2,v,lexbuf); - throw _iG_} - case 2: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$1(v,lexbuf); - try - {var _iE_=caml_int_of_string(s);return _iE_} - catch(_iF_) - {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)}}} - function read_int(v,lexbuf){return ocaml_lex_read_int_rec(v,lexbuf,176)} - function ocaml_lex_read_int32_rec(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,ocaml_lex_state$0,lexbuf); - if(3 < 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: - try - {var _iy_=caml_int_of_string(caml_call1(lexeme,lexbuf)); - return _iy_} - catch(_iB_){return lexer_error(cst_Int32_overflow,v,lexbuf)} - case 1: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$1(v,lexbuf); - try - {var _iz_=caml_int_of_string(s);return _iz_} - catch(_iA_) - {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)}}} - function read_int32(v,lexbuf) - {return ocaml_lex_read_int32_rec(v,lexbuf,185)} - function ocaml_lex_read_int64_rec(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,ocaml_lex_state$0,lexbuf); - if(3 < 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: - try - {var _iu_=caml_int64_of_string(caml_call1(lexeme,lexbuf)); - return _iu_} - catch(_ix_){return lexer_error(cst_Int32_overflow$0,v,lexbuf)} - case 1: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$1(v,lexbuf); - try - {var _iv_=caml_int64_of_string(s);return _iv_} - catch(_iw_) - {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)}}} - function read_int64(v,lexbuf) - {return ocaml_lex_read_int64_rec(v,lexbuf,192)} - function ocaml_lex_read_number_rec(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,ocaml_lex_state$0,lexbuf); - if(6 < 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 Stdlib[24]; - case 1:return Stdlib[22]; - 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]); - 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) - ?custom_error(cst_Expected_a_number_but_foun,v,lexbuf) - :Stdlib[24] - :Stdlib[22] - :Stdlib[23]} - case 5:return long_error(cst_Expected_number_but_found,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$15,v,lexbuf)}}} - function read_number(v,lexbuf) - {return ocaml_lex_read_number_rec(v,lexbuf,199)} - function read_string(v,lexbuf) - {var ocaml_lex_state=233; - 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: - caml_call1(Bi_outbuf[19],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 map_ident(v,f,lexbuf) - {var ocaml_lex_state=242; - 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 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); - 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 - (read_cell,init_acc,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,ocaml_lex_state$0,lexbuf); - if(2 < 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: - var acc=[0,init_acc]; - try - {read_space(v,lexbuf); - read_array_end(lexbuf); - acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); - for(;;) - {read_space(v,lexbuf); - read_array_sep(v,lexbuf); - 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_} - 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) - {return ocaml_lex_read_sequence_rec(read_cell,init_acc,v,lexbuf,247)} - function ocaml_lex_read_list_rev_rec(read_cell,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,ocaml_lex_state$0,lexbuf); - if(2 < 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: - var acc=[0,0]; - try - {read_space(v,lexbuf); - read_array_end(lexbuf); - var _in_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_in_]; - 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_]; - continue}} - catch(_ip_) - {_ip_ = caml_wrap_exception(_ip_); - if(_ip_ === End_of_array)return acc[1]; - throw _ip_} - 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_tuple(read_cell,init_acc,v,lexbuf) - {var ocaml_lex_state=262; - 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 long_error(cst_Invalid_token$2,v,lexbuf); - case 1:return long_error(cst_Expected_but_found$5,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$22,v,lexbuf)}}} - function read_tuple_end(lexbuf) - {var ocaml_lex_state=266; - 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_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(v,std,lexbuf) - {var ocaml_lex_state=268; - 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: - if(std)return long_error(cst_Expected_or_but_found$2,v,lexbuf); - throw End_of_tuple; - case 1: - if(std)throw End_of_tuple; - return long_error(cst_Expected_or_but_found$3,v,lexbuf); - default:return 0}}} - function read_tuple_sep(v,lexbuf) - {var ocaml_lex_state=271; - 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_tuple; - case 2:return long_error(cst_Expected_or_but_found$4,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$23,v,lexbuf)}}} - function read_tuple_sep2(v,std,lexbuf) - {var ocaml_lex_state=276; - 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:return 0; - case 1: - if(std)return long_error(cst_Expected_or_but_found$5,v,lexbuf); - throw End_of_tuple; - case 2: - if(std)throw End_of_tuple; - return long_error(cst_Expected_or_but_found$6,v,lexbuf); - case 3:return long_error(cst_Expected_or_but_found$7,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$24,v,lexbuf)}}} - function ocaml_lex_read_abstract_fields - (read_key,read_field,init_acc,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,ocaml_lex_state$0,lexbuf); - if(2 < 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: - var acc=[0,init_acc]; - try - {read_space(v,lexbuf); - read_object_end(lexbuf); - var field_name=caml_call2(read_key,v,lexbuf); - read_space(v,lexbuf); - read_colon(v,lexbuf); - read_space(v,lexbuf); - acc[1] = caml_call4(read_field,acc[1],field_name,v,lexbuf); - for(;;) - {read_space(v,lexbuf); - read_object_sep(v,lexbuf); - read_space(v,lexbuf); - var field_name$0=caml_call2(read_key,v,lexbuf); - read_space(v,lexbuf); - read_colon(v,lexbuf); - 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_} - 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) - {return ocaml_lex_read_abstract_fields - (read_key,read_field,init_acc,v,lexbuf,282)} - function read_lcurl(v,lexbuf) - {var ocaml_lex_state=286; - 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$7,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$26,v,lexbuf)}}} - function start_any_tuple(v,lexbuf) - {var ocaml_lex_state=301; - 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 1; - case 2:return long_error(cst_Expected_or_but_found$9,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$29,v,lexbuf)}}} - function read_lpar(v,lexbuf) - {var ocaml_lex_state=306; - 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$9,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$30,v,lexbuf)}}} - function read_rpar(v,lexbuf) - {var ocaml_lex_state=310; - 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$10,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$31,v,lexbuf)}}} - function read_lbr(v,lexbuf) - {var ocaml_lex_state=314; - 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$11,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$32,v,lexbuf)}}} - function read_rbr(v,lexbuf) - {var ocaml_lex_state=318; - 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$12,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$33,v,lexbuf)}}} - function finish_skip_stringlit(v,lexbuf) - {var ocaml_lex_state=378; - 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_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; - 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_])} - function ocaml_lex_skip_json_rec(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,ocaml_lex_state$0,lexbuf); - if(18 < 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 0; - case 1:return 0; - case 2:return 0; - case 3:return 0; - case 4:return 0; - case 5:return 0; - case 6:return finish_skip_stringlit(v,lexbuf); - case 7:return 0; - case 8:return 0; - case 9: - try - {read_space(v,lexbuf); - read_object_end(lexbuf); - skip_ident(v,lexbuf); - read_space(v,lexbuf); - read_colon(v,lexbuf); - read_space(v,lexbuf); - skip_json(v,lexbuf); - for(;;) - {read_space(v,lexbuf); - read_object_sep(v,lexbuf); - read_space(v,lexbuf); - skip_ident(v,lexbuf); - read_space(v,lexbuf); - read_colon(v,lexbuf); - 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_} - case 10: - try - {read_space(v,lexbuf); - read_array_end(lexbuf); - skip_json(v,lexbuf); - for(;;) - {read_space(v,lexbuf); - read_array_sep(v,lexbuf); - 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_} - case 11:return long_error(cst_Invalid_token$3,v,lexbuf); - case 12:return long_error(cst_Invalid_token$4,v,lexbuf); - case 13: - if(counter < 50) - {var counter$0=counter + 1 | 0; - return skip_json$2(counter$0,v,lexbuf)} - return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); - case 14: - finish_comment(v,lexbuf); - if(counter < 50) - {var counter$1=counter + 1 | 0; - return skip_json$2(counter$1,v,lexbuf)} - return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); - case 15: - newline(v,lexbuf); - if(counter < 50) - {var counter$2=counter + 1 | 0; - return skip_json$2(counter$2,v,lexbuf)} - return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); - case 16: - if(counter < 50) - {var counter$3=counter + 1 | 0; - return skip_json$2(counter$3,v,lexbuf)} - return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); - case 17: - return custom_error(cst_Unexpected_end_of_input$34,v,lexbuf); - default:return long_error(cst_Invalid_token$5,v,lexbuf)}}} - function skip_json(v,lexbuf) - {return caml_trampoline(skip_json$2(0,v,lexbuf))} - function finish_skip_variant(v,lexbuf) - {var ocaml_lex_state=389; - 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: - skip_json(v,lexbuf);read_space(v,lexbuf);return read_gt(v,lexbuf); - 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; - 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],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}}}} - function finish_buffer_stringlit(v,lexbuf) - {var ocaml_lex_state=450; - 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: - caml_call2(Bi_outbuf[15],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; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return ocaml_lex_buffer_json_rec(counter$0,v,lexbuf,_ii_)} - return caml_trampoline_return - (ocaml_lex_buffer_json_rec,[0,v,lexbuf,_ii_])} - function ocaml_lex_buffer_json_rec(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,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(v[1],lexbuf); - case 1:return finish_buffer_stringlit(v,lexbuf); - case 2: - try - {caml_call2(Bi_outbuf[15],v[1],123); - buffer_space(v,lexbuf); - buffer_object_end(v,lexbuf); - buffer_ident(v,lexbuf); - buffer_space(v,lexbuf); - buffer_colon(v,lexbuf); - buffer_space(v,lexbuf); - buffer_json(v,lexbuf); - for(;;) - {buffer_space(v,lexbuf); - buffer_object_sep(v,lexbuf); - buffer_space(v,lexbuf); - buffer_ident(v,lexbuf); - buffer_space(v,lexbuf); - buffer_colon(v,lexbuf); - 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_} - case 3: - try - {caml_call2(Bi_outbuf[15],v[1],91); - buffer_space(v,lexbuf); - buffer_array_end(v,lexbuf); - buffer_json(v,lexbuf); - for(;;) - {buffer_space(v,lexbuf); - buffer_array_sep(v,lexbuf); - 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_} - case 4:return long_error(cst_Invalid_token$6,v,lexbuf); - case 5:return long_error(cst_Invalid_token$7,v,lexbuf); - case 6: - add_lexeme(v[1],lexbuf); - if(counter < 50) - {var counter$0=counter + 1 | 0; - 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); - 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); - newline(v,lexbuf); - if(counter < 50) - {var counter$2=counter + 1 | 0; - return buffer_json$2(counter$2,v,lexbuf)} - return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); - case 9: - add_lexeme(v[1],lexbuf); - if(counter < 50) - {var counter$3=counter + 1 | 0; - return buffer_json$2(counter$3,v,lexbuf)} - return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); - case 10: - return custom_error(cst_Unexpected_end_of_input$38,v,lexbuf); - 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 junk(lexbuf) - {var ocaml_lex_state=513; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)return caml_call1(lexeme,lexbuf); - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - read_junk[1] = junk; - function read_int8(v,lexbuf) - {var n=read_int(v,lexbuf); - 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_)} - function read_array(read_cell,v,lexbuf) - {var l=read_list_rev(read_cell,v,lexbuf); - if(l) - {var - tl=l[2], - x=l[1], - 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_; - for(;;) - {var _id_=caml_call1(Stdlib_List[5],r[1]); - caml_check_bound(a,i)[1 + i] = _id_; - r[1] = caml_call1(Stdlib_List[6],r[1]); - var _ie_=i - 1 | 0; - if(0 !== i){var i=_ie_;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_)}} - function from_lexbuf(v,opt,lexbuf) - {if(opt)var sth=opt[1],stream=sth;else var stream=0; - read_space(v,lexbuf); - if(read_eof(lexbuf))throw End_of_input; - var x=read_json(v,lexbuf); - if(1 - stream) - {read_space(v,lexbuf); - if(1 - read_eof(lexbuf)) - long_error(cst_Junk_after_end_of_JSON_val,v,lexbuf)} - return x} - function from_string$0(buf,fname,lnum,s) - {try - {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_}} - 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__}} - function from_file(buf,fname,lnum,file) - {var ic=caml_call1(Stdlib[79],file); - try - {var x=from_channel$0(buf,fname,lnum,ic); - caml_call1(Stdlib[93],ic); - 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) - {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - function f(i) - {try - {var _h8_=[0,from_lexbuf(v,stream,lexbuf)];return _h8_} - catch(e) - {e = caml_wrap_exception(e); - if(e === End_of_input){caml_call1(fin,0);return 0} - try - {caml_call1(fin,0)} - 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) - {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) - {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) - {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) - {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) - {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_} - 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) - {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)} - 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} - 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; - else - var - _h4_=js[1], - _h5_= - 708012133 <= _h4_ - ?726928360 === _h4_ - ?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]} - 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_}} - 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)} - function index(i,js) - {if(typeof js !== "number" && 848054398 === js[1]) - {var - l=js[2], - len=caml_call1(Stdlib_List[1],l), - wrapped_index=0 <= i?i:len + i | 0; - 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]} - 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)} - 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)]} - return typerr(cst_Can_t_map_function_over_no,js)} - function to_assoc(js) - {if(typeof js !== "number" && 963043957 === js[1]) - {var obj=js[2];return obj} - return typerr(cst_Expected_object_got,js)} - function to_option(f,x){return 870828711 === x?0:[0,caml_call1(f,x)]} - function to_bool(js) - {if(typeof js !== "number" && 737456202 === js[1]){var b=js[2];return b} - return typerr(cst_Expected_bool_got,js)} - function to_bool_option(js) - {if(typeof js === "number") - {if(870828711 === js)return 0} - else - if(737456202 === js[1]){var b=js[2];return [0,b]} - 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}} - 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]}} - 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} - return typerr(cst_Expected_float_got,js)} - function to_float_option(js) - {if(typeof js === "number") - {if(870828711 === js)return 0} - else - if(365180284 === js[1]){var f=js[2];return [0,f]} - return typerr(cst_Expected_float_or_null_got,js)} - function to_int(js) - {if(typeof js !== "number" && 3654863 === js[1]){var i=js[2];return i} - return typerr(cst_Expected_int_got,js)} - function to_int_option(js) - {if(typeof js === "number") - {if(870828711 === js)return 0} - else - if(3654863 === js[1]){var i=js[2];return [0,i]} - return typerr(cst_Expected_int_or_null_got,js)} - 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) - {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) - {if(typeof js === "number") - {if(870828711 === js)return 0} - else - if(-976970511 === js[1]){var s=js[2];return [0,s]} - return typerr(cst_Expected_string_or_null_go,js)} - function convert_each(f,js) - {if(typeof js !== "number" && 848054398 === js[1]) - {var l=js[2];return caml_call2(Stdlib_List[19],f,l)} - return typerr(cst_Can_t_convert_each_element,js)} - function filter_map(f,l$0) - {var acc=0,l=l$0; - for(;;) - {if(l) - {var tl=l[2],x=l[1],match=caml_call1(f,x); - if(match){var y=match[1],acc$0=[0,y,acc],acc=acc$0,l=tl;continue} - var l=tl; - continue} - return caml_call1(Stdlib_List[9],acc)}} - function flatten(l$0) - {var acc=0,l=l$0; - for(;;) - {if(l) - {var tl=l[2],x=l[1]; - if(typeof x !== "number" && 848054398 === x[1]) - {var - l2=x[2], - acc$0=caml_call2(Stdlib_List[12],l2,acc), - acc=acc$0, - l=tl; - continue} - var l=tl; - continue} - return caml_call1(Stdlib_List[9],acc)}} - function filter_index(i,l) - {return filter_map - (function(param) - {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}} - return 0}, - l)} - function filter_list(l) - {return filter_map - (function(param) - {if(typeof param !== "number" && 848054398 === param[1]) - {var l=param[2];return [0,l]} - return 0}, - l)} - function filter_member(k,l) - {return filter_map - (function(param) - {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}} - return 0}, - l)} - function filter_assoc(l) - {return filter_map - (function(param) - {if(typeof param !== "number" && 963043957 === param[1]) - {var l=param[2];return [0,l]} - return 0}, - l)} - function filter_bool(l) - {return filter_map - (function(param) - {if(typeof param !== "number" && 737456202 === param[1]) - {var x=param[2];return [0,x]} - return 0}, - l)} - function filter_int(l) - {return filter_map - (function(param) - {if(typeof param !== "number" && 3654863 === param[1]) - {var x=param[2];return [0,x]} - return 0}, - l)} - function filter_float(l) - {return filter_map - (function(param) - {if(typeof param !== "number" && 365180284 === param[1]) - {var x=param[2];return [0,x]} - return 0}, - l)} - function filter_number(l) - {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]}} - return 0}, - l)} - function filter_string(l) - {return filter_map - (function(param) - {if(typeof param !== "number" && -976970511 === param[1]) - {var x=param[2];return [0,x]} - 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_)} - 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_)} - function combine(first,second) - {if - (typeof first - !== - "number" - && - 963043957 - === - first[1] - && - typeof second - !== - "number" - && - 963043957 - === - second[1]) - {var b=second[2],a=first[2]; - return [0,963043957,caml_call2(Stdlib[37],a,b)]} - 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 - l=x[2], - _hE_= - 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_)]}} - 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_]}}} - return x} - function hex$2(n) - {var _hC_=10 <= n?n + 87 | 0:n + 48 | 0; - return caml_call1(Stdlib_Char[1],_hC_)} - 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); - start[1] = stop + 1 | 0; - return 0} - function finish_string$2(src,start,ob) - {try - {var - _hB_= - caml_call4 - (Bi_outbuf[14], - ob, - src, - start[1], - caml_ml_string_length(src) - start[1] | 0); - return _hB_} - catch(exc) - {exc = caml_wrap_exception(exc); - caml_call4 - (Stdlib_Printf[3], - _bC_, - 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_; - for(;;) - {var c=caml_string_get(s,i$0); - if(92 === c) - write_special$1(s,start,i$0,ob,cst$25); - else - {var switch$0=0; - if(35 <= c) - if(127 === c)switch$0 = 1;else switch$0 = 2; - else - 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 24: - case 25:switch$0 = 2;switch$1 = 1;break; - default:switch$0 = 1;switch$1 = 1}} - else - switch$0 = 1; - 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; - break - }} - var _hA_=i$0 + 1 | 0; - if(_hz_ !== i$0){var i$0=_hA_;continue} - break}} - finish_string$2(s,start,ob); - return caml_call2(Bi_outbuf[15],ob,34)} - function write_null$1(ob,param) - {return caml_call2(Bi_outbuf[13],ob,cst_null$3)} - function write_bool$1(ob,x) - {var _hx_=x?cst_true$2:cst_false$2; - return caml_call2(Bi_outbuf[13],ob,_hx_)} - 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; - 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} - 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} - function float_needs_period$1(s) - {try - {var _ht_=caml_ml_string_length(s) - 1 | 0,_hs_=0; - if(! (_ht_ < 0)) - {var i=_hs_; - for(;;) - {var match=caml_string_get(s,i),switch$0=0; - if(48 <= match) - {if(! (58 <= match))switch$0 = 1} - 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} - 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_} - 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 - 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_} - 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); - 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_} - 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_)} - return 4 <= match - ?caml_call2(Bi_outbuf[13],ob,cst_NaN$8) - :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_= - 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); - 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_} - function write_std_float_prec$1(significant_figures,ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var - _hh_= - 0. < x - ?cst_Infinity_value_not_allowed$15 - :cst_Infinity_value_not_allowed$16; - return json_error(_hh_)} - return 4 <= match - ?json_error(cst_NaN_value_not_allowed_in_s$7) - :write_normal_float_prec$1(significant_figures,ob,x)} - var write_intlit$0=Bi_outbuf[13]; - function iter2$1(f_elt,f_sep,x,param$0) - {if(param$0) - {var l$0=param$0[2],y$0=param$0[1]; - caml_call2(f_elt,x,y$0); - var param=l$0; - for(;;) - {if(param) - {var l=param[2],y=param[1]; - caml_call1(f_sep,x); - caml_call2(f_elt,x,y); - var param=l; - continue} - return 0}} - return 0} - function f_sep$1(ob){return caml_call2(Bi_outbuf[15],ob,44)} - function write_tuple$0(ob,l) - {caml_call2(Bi_outbuf[15],ob,40); - iter2$1(write_t$1,f_sep$1,ob,l); - return caml_call2(Bi_outbuf[15],ob,41)} - function write_list$1(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); - iter2$1(write_t$1,f_sep$1,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} - 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 l$1=x[2]; - return write_list$1(ob,l$1)} - if(737456202 <= _hg_){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)} - 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)} - 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]; - 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)} - function write_std_tuple$0(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); - iter2$1(write_std_json$1,f_sep$1,ob,l); - return caml_call2(Bi_outbuf[15],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 - 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); - return write_std_json$1(ob,x)}; - caml_call2(Bi_outbuf[15],ob,123); - iter2$1(f_elt,f_sep$1,ob,l$0); - return caml_call2(Bi_outbuf[15],ob,125)} - var l$1=x[2]; - caml_call2(Bi_outbuf[15],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)} - 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)} - 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)} - 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) - {if(opt)var sth=opt[1],len=sth;else var len=256; - if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],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); - return s} - function to_channel$2(buf,len,std,oc,x) - {if(buf) - var ob=buf[1],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; - 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); - try - {to_channel$2(0,len,std,oc,x); - var _he_=caml_call1(Stdlib[76],oc); - return _he_} - 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) - {if(opt)var sth=opt[1],len=sth;else var len=256; - if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],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); - return s} - function stream_to_channel$1(buf,len,std,oc,st) - {if(buf) - var ob=buf[1],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); - try - {stream_to_channel$1(0,len,std,oc,st); - var _hb_=caml_call1(Stdlib[76],oc); - return _hb_} - 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 - l$0=x[2], - _g6_= - 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]; - return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_g8_,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); - 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$_)]}} - return x} - function pp$1(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 tup=param[2]; - caml_call2(Stdlib_Format[129],fmt,_b2_); - caml_call2(Stdlib_Format[129],fmt,_b3_); - var - _gY_=0, - _gZ_= - function(sep,e) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_b4_); - pp$1(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_) - {var xs=param[2]; - caml_call2(Stdlib_Format[129],fmt,_b7_); - caml_call2(Stdlib_Format[129],fmt,_b8_); - var - _g0_=0, - _g1_= - 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_); - 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_)} - var xs$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_ce_); - caml_call2(Stdlib_Format[129],fmt,_cf_); - var - _g2_=0, - _g3_= - function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_cg_); - pp$1(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_) - {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_)} - 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_); - 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)} - 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_) - {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_)} - 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_) - {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_)} - 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)} - 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 switch$0=0; - if(737456203 <= _gQ_) - {if(848054398 === _gQ_) - {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_ - && - typeof b$0 - !== - "number" - && - 963043957 - === - b$0[1]) - {var - ys$0=b$0[2], - xs$0=a$0[2], - compare_keys= - function(param,_gW_) - {var key=_gW_[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_) - {var - value=_gV_[2], - key=_gV_[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); - return result$0} - catch(_gU_) - {_gU_ = caml_wrap_exception(_gU_); - if(_gU_[1] === Stdlib[6])return 0; - throw _gU_}}} - else - if(726928360 === _gQ_) - {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 - (737456202 - <= - _gQ_ - && - typeof b$0 - !== - "number" - && - 737456202 - === - b$0[1]) - {var b$1=b$0[2],a$1=a$0[2];return caml_equal(a$1,b$1)}} - else - if(typeof b$0 !== "number" && 708012133 === b$0[1]) - {var - _gS_=b$0[2], - value=_gS_[2], - name=_gS_[1], - match=a$0[2], - value$0=match[2], - name$0=match[1], - match$0=caml_equal(name$0,name); - if(match$0) - {if(value$0) - {if(value) - {var b$2=value[1],a$2=value$0[1],a$0=a$2,b$0=b$2;continue}} - else - if(! value)return 1; - return 0} - return 0} - if(switch$0) - 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_}} - else - if(-752863767 <= _gQ_) - {if(3654863 === _gQ_) - {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_ - && - typeof b$0 - !== - "number" - && - 365180284 - === - 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(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_ - && - typeof b$0 - !== - "number" - && - -752863768 - === - 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)} - var - from_channel$1=Stdlib_Lexing[2], - from_string$1=Stdlib_Lexing[3], - lexeme$0=Stdlib_Lexing[8], - sub_lexeme$0=Stdlib_Lexing[16], - sub_lexeme_char$0=Stdlib_Lexing[18]; - function hex$3(c) - {if(65 <= c) - {if(97 <= c) - {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} - else - if(! (71 <= c))return (c - 65 | 0) + 10 | 0} - else - if(! (9 < c - 48 >>> 0))return c - 48 | 0; - throw [0,Assert_failure,_cF_]} - 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); - 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); - return json_error(msg)} - function lexer_error$0(descr,v,lexbuf) - {var _gN_=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_]}]; - 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), - 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, - Int_overflow$0=[248,cst_Yojson_Safe_Int_overflow,caml_fresh_oo_id(0)]; - function extract_positive_int$0(lexbuf) - {var - start=lexbuf[5], - stop=lexbuf[6], - s=lexbuf[2], - n=[0,0], - _gK_=stop - 1 | 0; - if(! (_gK_ < 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} - break}} - if(0 <= n[1])return n[1]; - throw Int_overflow$0} - function extract_negative_int$0(lexbuf) - {var - start=lexbuf[5] + 1 | 0, - stop=lexbuf[6], - s=lexbuf[2], - n=[0,0], - _gH_=stop - 1 | 0; - if(! (_gH_ < 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} - break}} - if(0 < n[1])throw Int_overflow$0; - return n[1]} - function newline$0(v,lexbuf) - {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)}}} - function read_json$3(counter,v,lexbuf) - {var _gA_=0; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return ocaml_lex_read_json_rec$0(counter$0,v,lexbuf,_gA_)} - return caml_trampoline_return - (ocaml_lex_read_json_rec$0,[0,v,lexbuf,_gA_])} - function ocaml_lex_read_json_rec$0(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$0,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 _cP_; - case 1:return _cQ_; - 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]); - 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) - return [0,-752863768,caml_call1(lexeme$0,lexbuf)]; - throw _gz_} - 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) - return [0,-752863768,caml_call1(lexeme$0,lexbuf)]; - throw _gy_} - case 9: - return [0, - 365180284, - caml_float_of_string(caml_call1(lexeme$0,lexbuf))]; - case 10: - var acc=[0,0]; - try - {read_space$0(v,lexbuf); - read_object_end$0(lexbuf); - var field_name=read_ident$0(v,lexbuf); - 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_]; - for(;;) - {read_space$0(v,lexbuf); - read_object_sep$0(v,lexbuf); - read_space$0(v,lexbuf); - var field_name$0=read_ident$0(v,lexbuf); - 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_]; - continue}} - catch(_gx_) - {_gx_ = caml_wrap_exception(_gx_); - if(_gx_ === End_of_object) - return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; - throw _gx_} - 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_]; - 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_]; - continue}} - catch(_gw_) - {_gw_ = caml_wrap_exception(_gw_); - if(_gw_ === End_of_array) - return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; - throw _gw_} - 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_]; - 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_]; - continue}} - catch(_gv_) - {_gv_ = caml_wrap_exception(_gv_); - if(_gv_ === End_of_tuple) - return [0,726928360,caml_call1(Stdlib_List[9],acc$1[1])]; - throw _gv_} - case 13: - read_space$0(v,lexbuf); - var cons=read_ident$0(v,lexbuf); - read_space$0(v,lexbuf); - return [0,708012133,[0,cons,finish_variant$0(v,lexbuf)]]; - case 14: - if(counter < 50) - {var counter$0=counter + 1 | 0; - return read_json$3(counter$0,v,lexbuf)} - return caml_trampoline_return(read_json$3,[0,v,lexbuf]); - case 15: - finish_comment$0(v,lexbuf); - if(counter < 50) - {var counter$1=counter + 1 | 0; - return read_json$3(counter$1,v,lexbuf)} - return caml_trampoline_return(read_json$3,[0,v,lexbuf]); - case 16: - newline$0(v,lexbuf); - if(counter < 50) - {var counter$2=counter + 1 | 0; - return read_json$3(counter$2,v,lexbuf)} - return caml_trampoline_return(read_json$3,[0,v,lexbuf]); - case 17: - if(counter < 50) - {var counter$3=counter + 1 | 0; - return read_json$3(counter$3,v,lexbuf)} - return caml_trampoline_return(read_json$3,[0,v,lexbuf]); - 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 map_string$0(v,f,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=63; - 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 b=v[1],_gm_=b[3]; - return caml_call3(f,caml_call1(Stdlib_Bytes[6],b[1]),0,_gm_); - 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_stringlit$0(v,lexbuf) - {var ocaml_lex_state=91; - 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: - 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$0(cst_Invalid_string_literal$2,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$49,v,lexbuf)}}} - function read_lt$0(v,lexbuf) - {var ocaml_lex_state=107; - 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$14,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$51,v,lexbuf)}}} - function read_comma$0(v,lexbuf) - {var ocaml_lex_state=115; - 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$16,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$53,v,lexbuf)}}} - function start_any_variant$0(v,lexbuf) - {var ocaml_lex_state=119; - 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:return -154522342; - case 1:caml_call1(Bi_outbuf[19],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 read_eof$0(lexbuf) - {var ocaml_lex_state=131; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)return 1; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_null$0(v,lexbuf) - {var ocaml_lex_state=140; - 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_null_but_found$0,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$55,v,lexbuf)}}} - function read_null_if_possible$0(v,lexbuf) - {var ocaml_lex_state=147; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)return 1; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_bool$0(v,lexbuf) - {var ocaml_lex_state=152; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(5 < 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 1; - case 1:return 0; - case 2:return 1; - case 3:return 0; - case 4: - return long_error$0(cst_Expected_true_or_false_but$0,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$56,v,lexbuf)}}} - function ocaml_lex_read_int_rec$0(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$0,ocaml_lex_state$0,lexbuf); - if(4 < 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: - try - {var _gg_=extract_positive_int$0(lexbuf);return _gg_} - catch(_gl_) - {_gl_ = caml_wrap_exception(_gl_); - if(_gl_ === Int_overflow$0) - return lexer_error$0(cst_Int_overflow$3,v,lexbuf); - throw _gl_} - case 1: - try - {var _gh_=extract_negative_int$0(lexbuf);return _gh_} - catch(_gk_) - {_gk_ = caml_wrap_exception(_gk_); - if(_gk_ === Int_overflow$0) - return lexer_error$0(cst_Int_overflow$4,v,lexbuf); - throw _gk_} - case 2: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$3(v,lexbuf); - try - {var _gi_=caml_int_of_string(s);return _gi_} - catch(_gj_) - {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); - default: - return custom_error$0(cst_Unexpected_end_of_input$57,v,lexbuf)}}} - function read_int$0(v,lexbuf) - {return ocaml_lex_read_int_rec$0(v,lexbuf,176)} - function ocaml_lex_read_int32_rec$0(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$0,ocaml_lex_state$0,lexbuf); - if(3 < 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: - 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)} - case 1: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$3(v,lexbuf); - try - {var _gd_=caml_int_of_string(s);return _gd_} - catch(_ge_) - {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: - return custom_error$0(cst_Unexpected_end_of_input$58,v,lexbuf)}}} - function read_int32$0(v,lexbuf) - {return ocaml_lex_read_int32_rec$0(v,lexbuf,185)} - function ocaml_lex_read_int64_rec$0(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$0,ocaml_lex_state$0,lexbuf); - if(3 < 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: - 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)} - case 1: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$3(v,lexbuf); - try - {var _f$_=caml_int64_of_string(s);return _f$_} - catch(_ga_) - {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: - return custom_error$0(cst_Unexpected_end_of_input$59,v,lexbuf)}}} - function read_int64$0(v,lexbuf) - {return ocaml_lex_read_int64_rec$0(v,lexbuf,192)} - function ocaml_lex_read_number_rec$0(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$0,ocaml_lex_state$0,lexbuf); - if(6 < 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 Stdlib[24]; - case 1:return Stdlib[22]; - 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]); - 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) - ?custom_error$0(cst_Expected_a_number_but_foun$0,v,lexbuf) - :Stdlib[24] - :Stdlib[22] - :Stdlib[23]} - case 5: - return long_error$0(cst_Expected_number_but_found$0,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$60,v,lexbuf)}}} - function read_number$0(v,lexbuf) - {return ocaml_lex_read_number_rec$0(v,lexbuf,199)} - function read_string$0(v,lexbuf) - {var ocaml_lex_state=233; - 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: - caml_call1(Bi_outbuf[19],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 map_ident$0(v,f,lexbuf) - {var ocaml_lex_state=242; - 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 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); - case 2: - return long_error$0(cst_Expected_string_or_identif$4,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$63,v,lexbuf)}}} - function ocaml_lex_read_sequence_rec$0 - (read_cell,init_acc,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$0,ocaml_lex_state$0,lexbuf); - if(2 < 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: - var acc=[0,init_acc]; - try - {read_space$0(v,lexbuf); - read_array_end$0(lexbuf); - acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); - for(;;) - {read_space$0(v,lexbuf); - read_array_sep$0(v,lexbuf); - 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_} - 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)}}} - function read_sequence$0(read_cell,init_acc,v,lexbuf) - {return ocaml_lex_read_sequence_rec$0(read_cell,init_acc,v,lexbuf,247)} - function ocaml_lex_read_list_rev_rec$0(read_cell,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$0,ocaml_lex_state$0,lexbuf); - if(2 < 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: - var acc=[0,0]; - 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_]; - 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_]; - continue}} - catch(_f5_) - {_f5_ = caml_wrap_exception(_f5_); - if(_f5_ === End_of_array)return acc[1]; - throw _f5_} - 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 ocaml_lex_read_tuple_rec - (read_cell,init_acc,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$0,ocaml_lex_state$0,lexbuf); - if(2 < 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: - var pos=[0,0],acc=[0,init_acc]; - try - {read_space$0(v,lexbuf); - read_tuple_end$0(lexbuf); - acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf); - pos[1]++; - for(;;) - {read_space$0(v,lexbuf); - read_tuple_sep$0(v,lexbuf); - read_space$0(v,lexbuf); - 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_} - 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_end2$0(v,std,lexbuf) - {var ocaml_lex_state=268; - 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: - if(std)return long_error$0(cst_Expected_or_but_found$16,v,lexbuf); - throw End_of_tuple; - case 1: - if(std)throw End_of_tuple; - return long_error$0(cst_Expected_or_but_found$17,v,lexbuf); - default:return 0}}} - function read_tuple_sep2$0(v,std,lexbuf) - {var ocaml_lex_state=276; - 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:return 0; - case 1: - if(std)return long_error$0(cst_Expected_or_but_found$19,v,lexbuf); - throw End_of_tuple; - case 2: - if(std)throw End_of_tuple; - return long_error$0(cst_Expected_or_but_found$20,v,lexbuf); - case 3:return long_error$0(cst_Expected_or_but_found$21,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$69,v,lexbuf)}}} - function ocaml_lex_read_abstract_fields$0 - (read_key,read_field,init_acc,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$0,ocaml_lex_state$0,lexbuf); - if(2 < 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: - var acc=[0,init_acc]; - try - {read_space$0(v,lexbuf); - read_object_end$0(lexbuf); - var field_name=caml_call2(read_key,v,lexbuf); - read_space$0(v,lexbuf); - read_colon$0(v,lexbuf); - read_space$0(v,lexbuf); - acc[1] = caml_call4(read_field,acc[1],field_name,v,lexbuf); - for(;;) - {read_space$0(v,lexbuf); - read_object_sep$0(v,lexbuf); - read_space$0(v,lexbuf); - var field_name$0=caml_call2(read_key,v,lexbuf); - read_space$0(v,lexbuf); - read_colon$0(v,lexbuf); - 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_} - 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)}}} - function read_abstract_fields$0(read_key,read_field,init_acc,v,lexbuf) - {return ocaml_lex_read_abstract_fields$0 - (read_key,read_field,init_acc,v,lexbuf,282)} - function read_lcurl$0(v,lexbuf) - {var ocaml_lex_state=286; - 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$22,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$71,v,lexbuf)}}} - function start_any_tuple$0(v,lexbuf) - {var ocaml_lex_state=301; - 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 1; - case 2:return long_error$0(cst_Expected_or_but_found$23,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$74,v,lexbuf)}}} - function read_lpar$0(v,lexbuf) - {var ocaml_lex_state=306; - 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$24,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$75,v,lexbuf)}}} - function read_rpar$0(v,lexbuf) - {var ocaml_lex_state=310; - 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$25,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$76,v,lexbuf)}}} - function read_lbr$0(v,lexbuf) - {var ocaml_lex_state=314; - 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$26,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$77,v,lexbuf)}}} - function read_rbr$0(v,lexbuf) - {var ocaml_lex_state=318; - 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$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; - 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_Invalid_string_literal$3,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; - 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_skip_stringlit$0(v,lexbuf); - case 1:return 0; - case 2: - return long_error$0(cst_Expected_string_or_identif$5,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$82,v,lexbuf)}}} - function skip_json$3(counter,v,lexbuf) - {var _f0_=322; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return ocaml_lex_skip_json_rec$0(counter$0,v,lexbuf,_f0_)} - return caml_trampoline_return - (ocaml_lex_skip_json_rec$0,[0,v,lexbuf,_f0_])} - function ocaml_lex_skip_json_rec$0(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$0,ocaml_lex_state$0,lexbuf); - if(18 < 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 0; - case 1:return 0; - case 2:return 0; - case 3:return 0; - case 4:return 0; - case 5:return 0; - case 6:return finish_skip_stringlit$0(v,lexbuf); - case 7:return 0; - case 8:return 0; - case 9: - try - {read_space$0(v,lexbuf); - read_object_end$0(lexbuf); - skip_ident$0(v,lexbuf); - read_space$0(v,lexbuf); - read_colon$0(v,lexbuf); - read_space$0(v,lexbuf); - skip_json$0(v,lexbuf); - for(;;) - {read_space$0(v,lexbuf); - read_object_sep$0(v,lexbuf); - read_space$0(v,lexbuf); - skip_ident$0(v,lexbuf); - read_space$0(v,lexbuf); - read_colon$0(v,lexbuf); - 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_} - case 10: - try - {read_space$0(v,lexbuf); - read_array_end$0(lexbuf); - skip_json$0(v,lexbuf); - for(;;) - {read_space$0(v,lexbuf); - read_array_sep$0(v,lexbuf); - 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_} - case 11: - try - {read_space$0(v,lexbuf); - read_tuple_end$0(lexbuf); - skip_json$0(v,lexbuf); - for(;;) - {read_space$0(v,lexbuf); - read_tuple_sep$0(v,lexbuf); - 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_} - case 12: - read_space$0(v,lexbuf); - skip_ident$0(v,lexbuf); - read_space$0(v,lexbuf); - return finish_skip_variant$0(v,lexbuf); - case 13: - if(counter < 50) - {var counter$0=counter + 1 | 0; - return skip_json$3(counter$0,v,lexbuf)} - return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); - case 14: - finish_comment$0(v,lexbuf); - if(counter < 50) - {var counter$1=counter + 1 | 0; - return skip_json$3(counter$1,v,lexbuf)} - return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); - case 15: - newline$0(v,lexbuf); - if(counter < 50) - {var counter$2=counter + 1 | 0; - return skip_json$3(counter$2,v,lexbuf)} - return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); - case 16: - if(counter < 50) - {var counter$3=counter + 1 | 0; - return skip_json$3(counter$3,v,lexbuf)} - return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); - case 17: - return custom_error$0(cst_Unexpected_end_of_input$79,v,lexbuf); - 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; - 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: - 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$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); - 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; - 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],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_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}}}} - function finish_buffer_stringlit$0(v,lexbuf) - {var ocaml_lex_state=450; - 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: - caml_call2(Bi_outbuf[15],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; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return ocaml_lex_buffer_json_rec$0(counter$0,v,lexbuf,_fW_)} - return caml_trampoline_return - (ocaml_lex_buffer_json_rec$0,[0,v,lexbuf,_fW_])} - function ocaml_lex_buffer_json_rec$0(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$0,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$0(v[1],lexbuf); - case 1:return finish_buffer_stringlit$0(v,lexbuf); - case 2: - try - {caml_call2(Bi_outbuf[15],v[1],123); - buffer_space$0(v,lexbuf); - buffer_object_end$0(v,lexbuf); - buffer_ident$0(v,lexbuf); - buffer_space$0(v,lexbuf); - buffer_colon$0(v,lexbuf); - buffer_space$0(v,lexbuf); - buffer_json$0(v,lexbuf); - for(;;) - {buffer_space$0(v,lexbuf); - buffer_object_sep$0(v,lexbuf); - buffer_space$0(v,lexbuf); - buffer_ident$0(v,lexbuf); - buffer_space$0(v,lexbuf); - buffer_colon$0(v,lexbuf); - 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_} - case 3: - try - {caml_call2(Bi_outbuf[15],v[1],91); - buffer_space$0(v,lexbuf); - buffer_array_end$0(v,lexbuf); - buffer_json$0(v,lexbuf); - for(;;) - {buffer_space$0(v,lexbuf); - buffer_array_sep$0(v,lexbuf); - 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_} - case 4: - try - {caml_call2(Bi_outbuf[15],v[1],40); - buffer_space$0(v,lexbuf); - buffer_tuple_end(v,lexbuf); - buffer_json$0(v,lexbuf); - for(;;) - {buffer_space$0(v,lexbuf); - buffer_tuple_sep(v,lexbuf); - 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_} - case 5: - caml_call2(Bi_outbuf[15],v[1],60); - buffer_space$0(v,lexbuf); - buffer_ident$0(v,lexbuf); - buffer_space$0(v,lexbuf); - return finish_buffer_variant(v,lexbuf); - case 6: - add_lexeme$0(v[1],lexbuf); - if(counter < 50) - {var counter$0=counter + 1 | 0; - 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); - 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); - newline$0(v,lexbuf); - if(counter < 50) - {var counter$2=counter + 1 | 0; - return buffer_json$3(counter$2,v,lexbuf)} - return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); - case 9: - add_lexeme$0(v[1],lexbuf); - if(counter < 50) - {var counter$3=counter + 1 | 0; - return buffer_json$3(counter$3,v,lexbuf)} - return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); - case 10: - return custom_error$0(cst_Unexpected_end_of_input$83,v,lexbuf); - 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; - 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_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); - default: - return custom_error$0(cst_Unexpected_end_of_input$85,v,lexbuf)}}} - function junk$0(lexbuf) - {var ocaml_lex_state=513; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)return caml_call1(lexeme$0,lexbuf); - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - read_junk$0[1] = junk$0; - function read_int8$0(v,lexbuf) - {var n=read_int$0(v,lexbuf); - 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_)} - function read_array$0(read_cell,v,lexbuf) - {var l=read_list_rev$0(read_cell,v,lexbuf); - if(l) - {var - tl=l[2], - x=l[1], - 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_; - for(;;) - {var _fQ_=caml_call1(Stdlib_List[5],r[1]); - caml_check_bound(a,i)[1 + i] = _fQ_; - r[1] = caml_call1(Stdlib_List[6],r[1]); - var _fR_=i - 1 | 0; - if(0 !== i){var i=_fR_;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_)}} - function from_lexbuf$0(v,opt,lexbuf) - {if(opt)var sth=opt[1],stream=sth;else var stream=0; - read_space$0(v,lexbuf); - if(read_eof$0(lexbuf))throw End_of_input; - var x=read_json$0(v,lexbuf); - if(1 - stream) - {read_space$0(v,lexbuf); - if(1 - read_eof$0(lexbuf)) - long_error$0(cst_Junk_after_end_of_JSON_val$0,v,lexbuf)} - return x} - function from_string$2(buf,fname,lnum,s) - {try - {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_}} - 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_}} - function from_file$0(buf,fname,lnum,file) - {var ic=caml_call1(Stdlib[79],file); - try - {var x=from_channel$2(buf,fname,lnum,ic); - caml_call1(Stdlib[93],ic); - 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) - {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - function f(i) - {try - {var _fJ_=[0,from_lexbuf$0(v,stream$0,lexbuf)];return _fJ_} - catch(e) - {e = caml_wrap_exception(e); - if(e === End_of_input){caml_call1(fin,0);return 0} - try - {caml_call1(fin,0)} - 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) - {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) - {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) - {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) - {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) - {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_} - 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) - {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)} - 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} - 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; - else - var - _fF_=js[1], - _fG_= - 708012133 <= _fF_ - ?726928360 === _fF_ - ?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]} - 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_}} - 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)} - function index$0(i,js) - {if(typeof js !== "number" && 848054398 === js[1]) - {var - l=js[2], - len=caml_call1(Stdlib_List[1],l), - wrapped_index=0 <= i?i:len + i | 0; - 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]} - 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)} - 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)]} - return typerr$0(cst_Can_t_map_function_over_no$0,js)} - function to_assoc$0(js) - {if(typeof js !== "number" && 963043957 === js[1]) - {var obj=js[2];return obj} - return typerr$0(cst_Expected_object_got$0,js)} - function to_option$0(f,x){return 870828711 === x?0:[0,caml_call1(f,x)]} - function to_bool$0(js) - {if(typeof js !== "number" && 737456202 === js[1]){var b=js[2];return b} - return typerr$0(cst_Expected_bool_got$0,js)} - function to_bool_option$0(js) - {if(typeof js === "number") - {if(870828711 === js)return 0} - else - if(737456202 === js[1]){var b=js[2];return [0,b]} - 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}} - 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]}} - 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} - return typerr$0(cst_Expected_float_got$0,js)} - function to_float_option$0(js) - {if(typeof js === "number") - {if(870828711 === js)return 0} - else - if(365180284 === js[1]){var f=js[2];return [0,f]} - return typerr$0(cst_Expected_float_or_null_got$0,js)} - function to_int$0(js) - {if(typeof js !== "number" && 3654863 === js[1]){var i=js[2];return i} - return typerr$0(cst_Expected_int_got$0,js)} - function to_int_option$0(js) - {if(typeof js === "number") - {if(870828711 === js)return 0} - else - if(3654863 === js[1]){var i=js[2];return [0,i]} - return typerr$0(cst_Expected_int_or_null_got$0,js)} - 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) - {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) - {if(typeof js === "number") - {if(870828711 === js)return 0} - else - if(-976970511 === js[1]){var s=js[2];return [0,s]} - return typerr$0(cst_Expected_string_or_null_go$0,js)} - function convert_each$0(f,js) - {if(typeof js !== "number" && 848054398 === js[1]) - {var l=js[2];return caml_call2(Stdlib_List[19],f,l)} - return typerr$0(cst_Can_t_convert_each_element$0,js)} - function filter_map$0(f,l$0) - {var acc=0,l=l$0; - for(;;) - {if(l) - {var tl=l[2],x=l[1],match=caml_call1(f,x); - if(match){var y=match[1],acc$0=[0,y,acc],acc=acc$0,l=tl;continue} - var l=tl; - continue} - return caml_call1(Stdlib_List[9],acc)}} - function flatten$0(l$0) - {var acc=0,l=l$0; - for(;;) - {if(l) - {var tl=l[2],x=l[1]; - if(typeof x !== "number" && 848054398 === x[1]) - {var - l2=x[2], - acc$0=caml_call2(Stdlib_List[12],l2,acc), - acc=acc$0, - l=tl; - continue} - var l=tl; - continue} - return caml_call1(Stdlib_List[9],acc)}} - function filter_index$0(i,l) - {return filter_map$0 - (function(param) - {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}} - return 0}, - l)} - function filter_list$0(l) - {return filter_map$0 - (function(param) - {if(typeof param !== "number" && 848054398 === param[1]) - {var l=param[2];return [0,l]} - return 0}, - l)} - function filter_member$0(k,l) - {return filter_map$0 - (function(param) - {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}} - return 0}, - l)} - function filter_assoc$0(l) - {return filter_map$0 - (function(param) - {if(typeof param !== "number" && 963043957 === param[1]) - {var l=param[2];return [0,l]} - return 0}, - l)} - function filter_bool$0(l) - {return filter_map$0 - (function(param) - {if(typeof param !== "number" && 737456202 === param[1]) - {var x=param[2];return [0,x]} - return 0}, - l)} - function filter_int$0(l) - {return filter_map$0 - (function(param) - {if(typeof param !== "number" && 3654863 === param[1]) - {var x=param[2];return [0,x]} - return 0}, - l)} - function filter_float$0(l) - {return filter_map$0 - (function(param) - {if(typeof param !== "number" && 365180284 === param[1]) - {var x=param[2];return [0,x]} - return 0}, - l)} - function filter_number$0(l) - {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]}} - return 0}, - l)} - function filter_string$0(l) - {return filter_map$0 - (function(param) - {if(typeof param !== "number" && -976970511 === param[1]) - {var x=param[2];return [0,x]} - 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_)} - 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_)} - function combine$0(first,second) - {if - (typeof first - !== - "number" - && - 963043957 - === - first[1] - && - typeof second - !== - "number" - && - 963043957 - === - second[1]) - {var b=second[2],a=first[2]; - 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_)} - 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); - start[1] = stop + 1 | 0; - return 0} - function finish_string$4(src,start,ob) - {try - {var - _fj_= - caml_call4 - (Bi_outbuf[14], - ob, - src, - start[1], - caml_ml_string_length(src) - start[1] | 0); - return _fj_} - catch(exc) - {exc = caml_wrap_exception(exc); - caml_call4 - (Stdlib_Printf[3], - _cR_, - 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_; - for(;;) - {var c=caml_string_get(s,i$0); - if(92 === c) - write_special$2(s,start,i$0,ob,cst$31); - else - {var switch$0=0; - if(35 <= c) - if(127 === c)switch$0 = 1;else switch$0 = 2; - else - 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 24: - case 25:switch$0 = 2;switch$1 = 1;break; - default:switch$0 = 1;switch$1 = 1}} - else - switch$0 = 1; - 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; - break - }} - var _fi_=i$0 + 1 | 0; - if(_fh_ !== i$0){var i$0=_fi_;continue} - break}} - finish_string$4(s,start,ob); - return caml_call2(Bi_outbuf[15],ob,34)} - function write_null$2(ob,param) - {return caml_call2(Bi_outbuf[13],ob,cst_null$5)} - function write_bool$2(ob,x) - {var _ff_=x?cst_true$3:cst_false$3; - return caml_call2(Bi_outbuf[13],ob,_ff_)} - 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_); - var - write_intlit$1=Bi_outbuf[13], - write_floatlit$0=Bi_outbuf[13], - write_stringlit$0=Bi_outbuf[13]; - function iter2$2(f_elt,f_sep,x,param$0) - {if(param$0) - {var l$0=param$0[2],y$0=param$0[1]; - caml_call2(f_elt,x,y$0); - var param=l$0; - for(;;) - {if(param) - {var l=param[2],y=param[1]; - caml_call1(f_sep,x); - caml_call2(f_elt,x,y); - var param=l; - continue} - return 0}} - return 0} - function f_sep$2(ob){return caml_call2(Bi_outbuf[15],ob,44)} - function write_tuple$1(ob,l) - {caml_call2(Bi_outbuf[15],ob,40); - iter2$2(write_t$2,f_sep$2,ob,l); - return caml_call2(Bi_outbuf[15],ob,41)} - function write_list$2(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); - iter2$2(write_t$2,f_sep$2,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} - 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 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)} - 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)} - 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)} - 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]; - 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)} - function write_std_tuple$1(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); - iter2$2(write_std_json$2,f_sep$2,ob,l); - return caml_call2(Bi_outbuf[15],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 - 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); - return write_std_json$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)} - var s=x[2]; - return caml_call2(Bi_outbuf[13],ob,s)} - if(848054398 <= _fd_) - {var l$0=x[2]; - caml_call2(Bi_outbuf[15],ob,91); - iter2$2(write_std_json$2,f_sep$2,ob,l$0); - return caml_call2(Bi_outbuf[15],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)} - 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)} - 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) - {if(opt)var sth=opt[1],len=sth;else var len=256; - if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],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); - return s} - function to_channel$3(buf,len,std,oc,x) - {if(buf) - var ob=buf[1],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; - 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); - try - {to_channel$3(0,len,std,oc,x); - var _fc_=caml_call1(Stdlib[76],oc); - return _fc_} - 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) - {if(opt)var sth=opt[1],len=sth;else var len=256; - if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],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); - return s} - function stream_to_channel$2(buf,len,std,oc,st) - {if(buf) - var ob=buf[1],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); - try - {stream_to_channel$2(0,len,std,oc,st); - var _e$_=caml_call1(Stdlib[76],oc); - return _e$_} - 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 - l$0=x[2], - _e4_= - 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]; - return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_e6_,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); - 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_)]}} - return x} - function pp$2(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 xs=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cU_); - caml_call2(Stdlib_Format[129],fmt,_cV_); - var - _eW_=0, - _eX_= - 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_); - 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_)} - 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_) - {var xs$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_c6_); - caml_call2(Stdlib_Format[129],fmt,_c7_); - var - _eY_=0, - _eZ_= - function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_c8_); - pp$2(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__)} - 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_) - {var tup=param[2]; - caml_call2(Stdlib_Format[129],fmt,_dc_); - caml_call2(Stdlib_Format[129],fmt,_dd_); - var - _e0_=0, - _e1_= - function(sep,e) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_de_); - pp$2(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_)} - 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_); - 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)} - 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_) - {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_)} - 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)} - 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_) - {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_ - && - typeof b$0 - !== - "number" - && - 963043957 - === - b$0[1]) - {var - ys=b$0[2], - xs=a$0[2], - compare_keys= - function(param,_eU_) - {var key=_eU_[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_) - {var - value=_eT_[2], - key=_eT_[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); - return result} - catch(_eS_) - {_eS_ = caml_wrap_exception(_eS_); - if(_eS_[1] === Stdlib[6])return 0; - throw _eS_}}} - else - if(737456202 === _eO_) - {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_ - && - typeof b$0 - !== - "number" - && - 848054398 - === - 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(typeof b$0 !== "number" && 708012133 === b$0[1]) - {var - _eQ_=b$0[2], - value=_eQ_[2], - name=_eQ_[1], - match=a$0[2], - value$0=match[2], - name$0=match[1], - match$0=caml_equal(name$0,name); - if(match$0) - {if(value$0) - {if(value) - {var b$3=value[1],a$3=value$0[1],a$0=a$3,b$0=b$3;continue}} - else - if(! value)return 1; - return 0} - return 0}} - else - if - (726928360 - <= - _eO_ - && - typeof b$0 - !== - "number" - && - 726928360 - === - b$0[1]) - {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} - else - if(-752863768 === _eO_) - {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_ - && - typeof b$0 - !== - "number" - && - -375152890 - === - b$0[1]) - {var b$5=b$0[2],a$5=a$0[2];return caml_equal(a$5,b$5)} - if(switch$0) - 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_}} - 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)} - var - from_channel$3=Stdlib_Lexing[2], - from_string$3=Stdlib_Lexing[3], - lexeme$1=Stdlib_Lexing[8], - sub_lexeme$1=Stdlib_Lexing[16], - sub_lexeme_char$1=Stdlib_Lexing[18]; - function hex$5(c) - {if(65 <= c) - {if(97 <= c) - {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} - else - if(! (71 <= c))return (c - 65 | 0) + 10 | 0} - else - if(! (9 < c - 48 >>> 0))return c - 48 | 0; - throw [0,Assert_failure,_du_]} - 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); - 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); - return json_error(msg)} - function lexer_error$1(descr,v,lexbuf) - {var _eL_=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_]}]; - 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), - 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, - Int_overflow$1=[248,cst_Yojson_Raw_Int_overflow,caml_fresh_oo_id(0)]; - function extract_positive_int$1(lexbuf) - {var - start=lexbuf[5], - stop=lexbuf[6], - s=lexbuf[2], - n=[0,0], - _eI_=stop - 1 | 0; - if(! (_eI_ < 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} - break}} - if(0 <= n[1])return n[1]; - throw Int_overflow$1} - function make_positive_int(v,lexbuf) - {return [0,-752863768,caml_call1(lexeme$1,lexbuf)]} - function extract_negative_int$1(lexbuf) - {var - start=lexbuf[5] + 1 | 0, - stop=lexbuf[6], - s=lexbuf[2], - n=[0,0], - _eF_=stop - 1 | 0; - if(! (_eF_ < 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} - break}} - if(0 < n[1])throw Int_overflow$1; - return n[1]} - function make_negative_int(v,lexbuf) - {return [0,-752863768,caml_call1(lexeme$1,lexbuf)]} - function newline$1(v,lexbuf) - {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; - 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_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; - 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; - 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 finish_escaped_char$1(v,lexbuf) - {var ocaml_lex_state=68; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,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$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); - 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_; - if(55296 <= x && ! (56319 < x)) - {var ocaml_lex_state$1=82; - 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: - var - a$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 2 | 0), - 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_; - if(56320 <= y && ! (57343 < y)) - return utf8_of_surrogate_pair(v[1],x,y); - return long_error$1 - (cst_Invalid_low_surrogate_for_$1,v,lexbuf); - case 1: - return long_error$1 - (cst_Missing_escape_sequence_re$1,v,lexbuf); - default: - return custom_error$1 - (cst_Unexpected_end_of_input$96,v,lexbuf)}}} - return utf8_of_code(v[1],x); - 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(;;) - {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: - 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$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(;;) - {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 x=read_json$1(v,lexbuf); - read_space$1(v,lexbuf); - read_gt$1(v,lexbuf); - return [0,x]; - case 1:return 0; - 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(;;) - {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$30,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$99,v,lexbuf)}}} - function read_comma$1(v,lexbuf) - {var ocaml_lex_state=115; - 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$32,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$101,v,lexbuf)}}} - function start_any_variant$1(v,lexbuf) - {var ocaml_lex_state=119; - 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:return -154522342; - case 1:caml_call1(Bi_outbuf[19],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 read_eof$1(lexbuf) - {var ocaml_lex_state=131; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)return 1; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_null$1(v,lexbuf) - {var ocaml_lex_state=140; - 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_null_but_found$1,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$103,v,lexbuf)}}} - function read_null_if_possible$1(v,lexbuf) - {var ocaml_lex_state=147; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)return 1; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_bool$1(v,lexbuf) - {var ocaml_lex_state=152; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(5 < 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 1; - case 1:return 0; - case 2:return 1; - case 3:return 0; - case 4: - return long_error$1(cst_Expected_true_or_false_but$1,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$104,v,lexbuf)}}} - function ocaml_lex_read_int_rec$1(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(4 < 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: - try - {var _ei_=extract_positive_int$1(lexbuf);return _ei_} - catch(_en_) - {_en_ = caml_wrap_exception(_en_); - if(_en_ === Int_overflow$1) - return lexer_error$1(cst_Int_overflow$5,v,lexbuf); - throw _en_} - case 1: - try - {var _ej_=extract_negative_int$1(lexbuf);return _ej_} - catch(_em_) - {_em_ = caml_wrap_exception(_em_); - if(_em_ === Int_overflow$1) - return lexer_error$1(cst_Int_overflow$6,v,lexbuf); - throw _em_} - case 2: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$5(v,lexbuf); - try - {var _ek_=caml_int_of_string(s);return _ek_} - catch(_el_) - {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); - default: - return custom_error$1(cst_Unexpected_end_of_input$105,v,lexbuf)}}} - function read_int$1(v,lexbuf) - {return ocaml_lex_read_int_rec$1(v,lexbuf,176)} - function ocaml_lex_read_int32_rec$1(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(3 < 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: - 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)} - case 1: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$5(v,lexbuf); - try - {var _ef_=caml_int_of_string(s);return _ef_} - catch(_eg_) - {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: - return custom_error$1(cst_Unexpected_end_of_input$106,v,lexbuf)}}} - function read_int32$1(v,lexbuf) - {return ocaml_lex_read_int32_rec$1(v,lexbuf,185)} - function ocaml_lex_read_int64_rec$1(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(3 < 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: - 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)} - case 1: - caml_call1(Bi_outbuf[19],v[1]); - var s=finish_string$5(v,lexbuf); - try - {var _eb_=caml_int64_of_string(s);return _eb_} - catch(_ec_) - {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: - return custom_error$1(cst_Unexpected_end_of_input$107,v,lexbuf)}}} - function read_int64$1(v,lexbuf) - {return ocaml_lex_read_int64_rec$1(v,lexbuf,192)} - function ocaml_lex_read_number_rec$1(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(6 < 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 Stdlib[24]; - case 1:return Stdlib[22]; - 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]); - 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) - ?custom_error$1(cst_Expected_a_number_but_foun$1,v,lexbuf) - :Stdlib[24] - :Stdlib[22] - :Stdlib[23]} - case 5: - return long_error$1(cst_Expected_number_but_found$1,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$108,v,lexbuf)}}} - function read_number$1(v,lexbuf) - {return ocaml_lex_read_number_rec$1(v,lexbuf,199)} - function read_string$1(v,lexbuf) - {var ocaml_lex_state=233; - 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: - caml_call1(Bi_outbuf[19],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 map_ident$1(v,f,lexbuf) - {var ocaml_lex_state=242; - 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 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); - case 2: - return long_error$1(cst_Expected_string_or_identif$8,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$111,v,lexbuf)}}} - function ocaml_lex_read_sequence_rec$1 - (read_cell,init_acc,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(2 < 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: - var acc=[0,init_acc]; - try - {read_space$1(v,lexbuf); - read_array_end$1(lexbuf); - acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); - for(;;) - {read_space$1(v,lexbuf); - read_array_sep$1(v,lexbuf); - 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_} - 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)}}} - function read_sequence$1(read_cell,init_acc,v,lexbuf) - {return ocaml_lex_read_sequence_rec$1(read_cell,init_acc,v,lexbuf,247)} - function ocaml_lex_read_list_rev_rec$1(read_cell,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(2 < 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: - var acc=[0,0]; - 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_]; - 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_]; - continue}} - catch(_d7_) - {_d7_ = caml_wrap_exception(_d7_); - if(_d7_ === End_of_array)return acc[1]; - throw _d7_} - 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 ocaml_lex_read_tuple_rec$0 - (read_cell,init_acc,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(2 < 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: - var pos=[0,0],acc=[0,init_acc]; - try - {read_space$1(v,lexbuf); - read_tuple_end$1(lexbuf); - acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf); - pos[1]++; - for(;;) - {read_space$1(v,lexbuf); - read_tuple_sep$1(v,lexbuf); - read_space$1(v,lexbuf); - 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_} - 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_end2$1(v,std,lexbuf) - {var ocaml_lex_state=268; - 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: - if(std)return long_error$1(cst_Expected_or_but_found$32,v,lexbuf); - throw End_of_tuple; - case 1: - if(std)throw End_of_tuple; - return long_error$1(cst_Expected_or_but_found$33,v,lexbuf); - default:return 0}}} - function read_tuple_sep2$1(v,std,lexbuf) - {var ocaml_lex_state=276; - 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:return 0; - case 1: - if(std)return long_error$1(cst_Expected_or_but_found$35,v,lexbuf); - throw End_of_tuple; - case 2: - if(std)throw End_of_tuple; - return long_error$1(cst_Expected_or_but_found$36,v,lexbuf); - case 3:return long_error$1(cst_Expected_or_but_found$37,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$117,v,lexbuf)}}} - function ocaml_lex_read_abstract_fields$1 - (read_key,read_field,init_acc,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(2 < 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: - var acc=[0,init_acc]; - try - {read_space$1(v,lexbuf); - read_object_end$1(lexbuf); - var field_name=caml_call2(read_key,v,lexbuf); - read_space$1(v,lexbuf); - read_colon$1(v,lexbuf); - read_space$1(v,lexbuf); - acc[1] = caml_call4(read_field,acc[1],field_name,v,lexbuf); - for(;;) - {read_space$1(v,lexbuf); - read_object_sep$1(v,lexbuf); - read_space$1(v,lexbuf); - var field_name$0=caml_call2(read_key,v,lexbuf); - read_space$1(v,lexbuf); - read_colon$1(v,lexbuf); - 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_} - 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)}}} - function read_abstract_fields$1(read_key,read_field,init_acc,v,lexbuf) - {return ocaml_lex_read_abstract_fields$1 - (read_key,read_field,init_acc,v,lexbuf,282)} - function read_lcurl$1(v,lexbuf) - {var ocaml_lex_state=286; - 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$38,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$119,v,lexbuf)}}} - function start_any_tuple$1(v,lexbuf) - {var ocaml_lex_state=301; - 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 1; - case 2:return long_error$1(cst_Expected_or_but_found$39,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$122,v,lexbuf)}}} - function read_lpar$1(v,lexbuf) - {var ocaml_lex_state=306; - 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$40,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$123,v,lexbuf)}}} - function read_rpar$1(v,lexbuf) - {var ocaml_lex_state=310; - 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$41,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$124,v,lexbuf)}}} - function read_lbr$1(v,lexbuf) - {var ocaml_lex_state=314; - 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$42,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$125,v,lexbuf)}}} - function read_rbr$1(v,lexbuf) - {var ocaml_lex_state=318; - 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$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; - 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_Invalid_string_literal$6,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; - 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 finish_skip_stringlit$1(v,lexbuf); - case 1:return 0; - case 2: - return long_error$1(cst_Expected_string_or_identif$9,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$130,v,lexbuf)}}} - function skip_json$4(counter,v,lexbuf) - {var _d2_=322; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return ocaml_lex_skip_json_rec$1(counter$0,v,lexbuf,_d2_)} - return caml_trampoline_return - (ocaml_lex_skip_json_rec$1,[0,v,lexbuf,_d2_])} - function ocaml_lex_skip_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(18 < 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 0; - case 1:return 0; - case 2:return 0; - case 3:return 0; - case 4:return 0; - case 5:return 0; - case 6:return finish_skip_stringlit$1(v,lexbuf); - case 7:return 0; - case 8:return 0; - case 9: - try - {read_space$1(v,lexbuf); - read_object_end$1(lexbuf); - skip_ident$1(v,lexbuf); - read_space$1(v,lexbuf); - read_colon$1(v,lexbuf); - read_space$1(v,lexbuf); - skip_json$1(v,lexbuf); - for(;;) - {read_space$1(v,lexbuf); - read_object_sep$1(v,lexbuf); - read_space$1(v,lexbuf); - skip_ident$1(v,lexbuf); - read_space$1(v,lexbuf); - read_colon$1(v,lexbuf); - 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_} - case 10: - try - {read_space$1(v,lexbuf); - read_array_end$1(lexbuf); - skip_json$1(v,lexbuf); - for(;;) - {read_space$1(v,lexbuf); - read_array_sep$1(v,lexbuf); - 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_} - case 11: - try - {read_space$1(v,lexbuf); - read_tuple_end$1(lexbuf); - skip_json$1(v,lexbuf); - for(;;) - {read_space$1(v,lexbuf); - read_tuple_sep$1(v,lexbuf); - 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_} - case 12: - read_space$1(v,lexbuf); - skip_ident$1(v,lexbuf); - read_space$1(v,lexbuf); - return finish_skip_variant$1(v,lexbuf); - case 13: - if(counter < 50) - {var counter$0=counter + 1 | 0; - return skip_json$4(counter$0,v,lexbuf)} - return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); - case 14: - finish_comment$1(v,lexbuf); - if(counter < 50) - {var counter$1=counter + 1 | 0; - return skip_json$4(counter$1,v,lexbuf)} - return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); - case 15: - newline$1(v,lexbuf); - if(counter < 50) - {var counter$2=counter + 1 | 0; - return skip_json$4(counter$2,v,lexbuf)} - return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); - case 16: - if(counter < 50) - {var counter$3=counter + 1 | 0; - return skip_json$4(counter$3,v,lexbuf)} - return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); - case 17: - return custom_error$1(cst_Unexpected_end_of_input$127,v,lexbuf); - 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; - 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: - 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$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; - 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 caml_call2(Bi_outbuf[15],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$138,v,lexbuf)}}} - function buffer_tuple_sep$0(v,lexbuf) - {var ocaml_lex_state=494; - 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[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); - 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; - 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; - 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[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); - 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; - 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} - 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$1(v,lexbuf) - {var ocaml_lex_state=480; - 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[15],v[1],44); - case 1:caml_call2(Bi_outbuf[15],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; - 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} - 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; - 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: - 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); - default: - return custom_error$1(cst_Unexpected_end_of_input$132,v,lexbuf)}}} - function buffer_ident$1(v,lexbuf) - {var ocaml_lex_state=466; - 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 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$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; - 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_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); - default: - return custom_error$1(cst_Unexpected_end_of_input$133,v,lexbuf)}}} - function junk$1(lexbuf) - {var ocaml_lex_state=513; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)return caml_call1(lexeme$1,lexbuf); - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - read_junk$1[1] = junk$1; - function read_int8$1(v,lexbuf) - {var n=read_int$1(v,lexbuf); - 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_)} - function read_array$1(read_cell,v,lexbuf) - {var l=read_list_rev$1(read_cell,v,lexbuf); - if(l) - {var - tl=l[2], - x=l[1], - 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_; - for(;;) - {var _dS_=caml_call1(Stdlib_List[5],r[1]); - caml_check_bound(a,i)[1 + i] = _dS_; - r[1] = caml_call1(Stdlib_List[6],r[1]); - var _dT_=i - 1 | 0; - if(0 !== i){var i=_dT_;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_)}} - function from_lexbuf$1(v,opt,lexbuf) - {if(opt)var sth=opt[1],stream=sth;else var stream=0; - read_space$1(v,lexbuf); - if(read_eof$1(lexbuf))throw End_of_input; - var x=read_json$1(v,lexbuf); - if(1 - stream) - {read_space$1(v,lexbuf); - if(1 - read_eof$1(lexbuf)) - long_error$1(cst_Junk_after_end_of_JSON_val$1,v,lexbuf)} - return x} - function from_string$4(buf,fname,lnum,s) - {try - {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_}} - 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_}} - function from_file$1(buf,fname,lnum,file) - {var ic=caml_call1(Stdlib[79],file); - try - {var x=from_channel$4(buf,fname,lnum,ic); - caml_call1(Stdlib[93],ic); - 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) - {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - function f(i) - {try - {var _dL_=[0,from_lexbuf$1(v,stream$1,lexbuf)];return _dL_} - catch(e) - {e = caml_wrap_exception(e); - if(e === End_of_input){caml_call1(fin,0);return 0} - try - {caml_call1(fin,0)} - 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) - {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) - {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) - {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) - {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) - {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_} - 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) - {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)} - 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} - var - Yojson= - [0, - version, - Json_error, - json_error, - Lexer_state, - init_lexer, - End_of_array, - End_of_object, - End_of_tuple, - End_of_input, - [0, - to_string$1, - to_channel$1, - 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, - write_t$0, - sort$0, - write_null$0, - write_bool$0, - 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, - write_assoc$0, - write_list$0, - write_t$0, - write_std_json$0, - pp$0, - show$0, - equal$0, - pretty_format$0, - pretty_print$0, - pretty_to_string$0, - pretty_to_channel$0, - prettify, - compact, - Finally, - from_string$0, - from_channel$0, - from_file, - init_lexer, - from_lexbuf, - stream_from_string, - stream_from_channel, - stream_from_file, - stream_from_lexbuf, - linestream_from_channel, - linestream_from_file, - read_json, - finish_string$1, - read_string, - read_ident, - map_string, - map_ident, - start_any_variant, - finish_variant, - finish_skip_variant, - read_lt, - read_gt, - read_comma, - finish_stringlit, - finish_skip_stringlit, - finish_escaped_char, - finish_comment, - read_space, - read_eof, - read_null, - read_null_if_possible, - read_bool, - read_int, - read_int8, - read_int32, - read_int64, - read_number, - skip_ident, - read_sequence, - read_list, - read_list_rev, - read_array_end, - read_array_sep, - read_array, - read_tuple, - start_any_tuple, - read_lpar, - read_rpar, - read_tuple_end, - read_tuple_end2, - read_tuple_sep, - read_tuple_sep2, - read_lbr, - read_rbr, - read_fields, - read_abstract_fields, - read_lcurl, - read_object_end, - read_object_sep, - read_colon, - read_json, - skip_json, - buffer_json, - validate_json, - [0, - Type_error, - Undefined, - symbol, - keys, - values, - combine, - member, - index, - map, - to_assoc, - to_option, - to_bool, - to_bool_option, - to_number, - to_number_option, - to_float, - to_float_option, - to_int, - to_int_option, - to_list, - to_string$2, - to_string_option, - convert_each, - filter_map, - flatten, - filter_index, - filter_list, - filter_member, - filter_assoc, - filter_bool, - filter_int, - filter_float, - filter_number, - filter_string]], - [0, - pp$1, - show$1, - equal$1, - to_basic, - to_string$3, - to_channel$2, - 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, - write_t$1, - sort$1, - write_null$1, - write_bool$1, - 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, - write_intlit$0, - write_assoc$1, - write_list$1, - write_tuple$0, - write_std_tuple$0, - write_variant$0, - 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, - prettify$0, - compact$0, - Finally$0, - from_string$2, - from_channel$2, - 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, - read_json$0, - finish_string$3, - read_string$0, - read_ident$0, - map_string$0, - map_ident$0, - start_any_variant$0, - finish_variant$0, - finish_skip_variant$0, - read_lt$0, - read_gt$0, - read_comma$0, - finish_stringlit$0, - finish_skip_stringlit$0, - finish_escaped_char$0, - finish_comment$0, - read_space$0, - read_eof$0, - read_null$0, - read_null_if_possible$0, - read_bool$0, - read_int$0, - read_int8$0, - read_int32$0, - read_int64$0, - read_number$0, - skip_ident$0, - read_sequence$0, - read_list$0, - read_list_rev$0, - read_array_end$0, - read_array_sep$0, - read_array$0, - read_tuple$0, - start_any_tuple$0, - read_lpar$0, - read_rpar$0, - read_tuple_end$0, - read_tuple_end2$0, - read_tuple_sep$0, - read_tuple_sep2$0, - read_lbr$0, - read_rbr$0, - read_fields$0, - read_abstract_fields$0, - read_lcurl$0, - read_object_end$0, - read_object_sep$0, - read_colon$0, - 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, - member$0, - index$0, - map$0, - to_assoc$0, - to_option$0, - to_bool$0, - to_bool_option$0, - to_number$0, - to_number_option$0, - to_float$0, - to_float_option$0, - to_int$0, - to_int_option$0, - to_list$0, - to_string$4, - to_string_option$0, - convert_each$0, - filter_map$0, - flatten$0, - filter_index$0, - filter_list$0, - filter_member$0, - filter_assoc$0, - filter_bool$0, - filter_int$0, - filter_float$0, - filter_number$0, - filter_string$0]], - [0, - pp$2, - show$2, - equal$2, - to_string$5, - to_channel$3, - 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, - write_t$2, - sort$2, - write_null$2, - write_bool$2, - write_intlit$1, - write_floatlit$0, - write_stringlit$0, - write_assoc$2, - write_list$2, - write_tuple$1, - write_std_tuple$1, - write_variant$1, - 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, - prettify$1, - compact$1, - Finally$1, - from_string$4, - from_channel$4, - 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, - read_json$1, - finish_string$5, - read_string$1, - read_ident$1, - map_string$1, - map_ident$1, - start_any_variant$1, - finish_variant$1, - finish_skip_variant$1, - read_lt$1, - read_gt$1, - read_comma$1, - finish_stringlit$1, - finish_skip_stringlit$1, - finish_escaped_char$1, - finish_comment$1, - read_space$1, - read_eof$1, - read_null$1, - read_null_if_possible$1, - read_bool$1, - read_int$1, - read_int8$1, - read_int32$1, - read_int64$1, - read_number$1, - skip_ident$1, - read_sequence$1, - read_list$1, - read_list_rev$1, - read_array_end$1, - read_array_sep$1, - read_array$1, - read_tuple$1, - start_any_tuple$1, - read_lpar$1, - read_rpar$1, - read_tuple_end$1, - read_tuple_end2$1, - read_tuple_sep$1, - read_tuple_sep2$1, - read_lbr$1, - read_rbr$1, - read_fields$1, - read_abstract_fields$1, - read_lcurl$1, - read_object_end$1, - read_object_sep$1, - read_colon$1, - read_json$1, - skip_json$1, - buffer_json$1, - validate_json$1], - pp, - show, - equal, - to_string, - to_channel, - to_output, - to_file, - to_outbuf, - stream_to_string, - stream_to_channel, - stream_to_file, - stream_to_outbuf, - write_t, - sort, - write_null, - write_bool, - write_int, - write_float, - write_std_float, - write_float_fast, - write_std_float_fast, - write_float_prec, - write_std_float_prec, - write_string, - write_intlit, - write_floatlit, - write_stringlit, - write_assoc, - write_list, - write_tuple, - write_std_tuple, - write_variant, - write_std_variant, - write_t, - write_std_json, - pretty_format, - pretty_print, - pretty_to_string, - pretty_to_channel]; - caml_register_global(1035,Yojson,"Yojson"); - return} - (globalThis)); - - -//# 1 "../../.js/ppx_yojson_conv_lib/ppx_yojson_conv_lib.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_check_bound=runtime.caml_check_bound, - caml_fresh_oo_id=runtime.caml_fresh_oo_id, - caml_int_of_string=runtime.caml_int_of_string, - caml_register_global=runtime.caml_register_global, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes; - 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_fun_of_yojson_cannot_conve= - caml_string_of_jsbytes("fun_of_yojson: cannot convert function values"), - cst_opaque_of_yojson_cannot_co= - caml_string_of_jsbytes("opaque_of_yojson: cannot convert opaque values"), - cst_hashtbl_of_yojson_tuple_li= - caml_string_of_jsbytes("hashtbl_of_yojson: tuple list needed"), - cst_hashtbl_of_yojson_list_nee= - caml_string_of_jsbytes("hashtbl_of_yojson: list needed"), - cst_array_of_yojson_list_neede= - caml_string_of_jsbytes("array_of_yojson: list needed"), - cst_list_of_yojson_list_needed= - caml_string_of_jsbytes("list_of_yojson: list needed"), - cst_triple_of_yojson_invalid_f= - caml_string_of_jsbytes("triple_of_yojson: invalid format"), - cst_pair_of_yojson_invalid_for= - caml_string_of_jsbytes("pair_of_yojson: invalid format"), - cst_nativeint_of_yojson_intege= - caml_string_of_jsbytes("nativeint_of_yojson: integer needed"), - cst_int64_of_yojson_integer_ne= - caml_string_of_jsbytes("int64_of_yojson: integer needed"), - cst_int32_of_yojson_integer_ne= - caml_string_of_jsbytes("int32_of_yojson: integer needed"), - cst_float_of_yojson_float_need= - caml_string_of_jsbytes("float_of_yojson: float needed"), - cst_int_of_yojson_integer_need= - caml_string_of_jsbytes("int_of_yojson: integer needed"), - cst_char_of_yojson_string_must= - caml_string_of_jsbytes - ("char_of_yojson: string must contain one character only"), - cst_char_of_yojson_string_of_s= - caml_string_of_jsbytes("char_of_yojson: string of size one needed"), - cst_bytes_of_yojson_string_nee= - caml_string_of_jsbytes("bytes_of_yojson: string needed"), - cst_string_of_yojson_string_ne= - caml_string_of_jsbytes("string_of_yojson: string needed"), - cst_bool_of_yojson_true_false_= - caml_string_of_jsbytes("bool_of_yojson: true/false needed"), - cst_unit_of_yojson_Null_needed= - caml_string_of_jsbytes("unit_of_yojson: `Null needed"), - cst_Ppx_yojson_conv_lib_Yojson= - caml_string_of_jsbytes - ("Ppx_yojson_conv_lib__Yojson_conv.Of_yojson_error"), - cst$0=caml_string_of_jsbytes(" "), - cst_of_yojson_trying_to_conver= - caml_string_of_jsbytes("_of_yojson: trying to convert an empty type"), - cst_of_yojson_the_empty_list_i= - caml_string_of_jsbytes - ("_of_yojson: the empty list is an invalid polymorphic variant"), - cst_of_yojson_a_nested_list_is= - caml_string_of_jsbytes - ("_of_yojson: a nested list is an invalid polymorphic variant"), - cst_of_yojson_polymorphic_vari$0= - caml_string_of_jsbytes - ("_of_yojson: polymorphic variant tag takes an argument"), - cst_of_yojson_polymorphic_vari= - caml_string_of_jsbytes - ("_of_yojson: polymorphic variant does not take arguments"), - cst_of_yojson_no_matching_vari= - caml_string_of_jsbytes("_of_yojson: no matching variant found"), - cst_of_yojson_cannot_convert_v= - caml_string_of_jsbytes - ("_of_yojson: cannot convert values of types resulting from polymorphic record fields"), - cst_of_yojson_list_instead_of_= - caml_string_of_jsbytes - ("_of_yojson: list instead of atom for record expected"), - cst_extra_fields=caml_string_of_jsbytes("extra fields"), - cst_duplicate_fields=caml_string_of_jsbytes("duplicate fields"), - cst=caml_string_of_jsbytes(" "), - cst_of_yojson_unexpected_varia= - caml_string_of_jsbytes("_of_yojson: unexpected variant constructor"), - cst_of_yojson_expected_a_varia$0= - caml_string_of_jsbytes - ("_of_yojson: expected a variant type, saw an empty list"), - cst_of_yojson_expected_a_varia= - caml_string_of_jsbytes - ("_of_yojson: expected a variant type, saw a nested list"), - cst_of_yojson_this_constructor$0= - caml_string_of_jsbytes - ("_of_yojson: this constructor requires arguments"), - cst_of_yojson_this_constructor= - caml_string_of_jsbytes - ("_of_yojson: this constructor does not take arguments"), - cst_Ppx_yojson_conv_lib_Yojson$0= - caml_string_of_jsbytes - ("Ppx_yojson_conv_lib__Yojson_conv_error.No_variant_match"), - Stdlib_MoreLabels=global_data.Stdlib__MoreLabels, - Stdlib_ListLabels=global_data.Stdlib__ListLabels, - Stdlib_Lazy=global_data.Stdlib__Lazy, - Stdlib_BytesLabels=global_data.Stdlib__BytesLabels, - Stdlib=global_data.Stdlib, - CamlinternalLazy=global_data.CamlinternalLazy, - Stdlib_Nativeint=global_data.Stdlib__Nativeint, - Stdlib_Int64=global_data.Stdlib__Int64, - Stdlib_Int32=global_data.Stdlib__Int32, - Stdlib_StringLabels=global_data.Stdlib__StringLabels, - Stdlib_Printf=global_data.Stdlib__Printf, - Ppx_yojson_conv_lib=[0]; - caml_register_global(45,Ppx_yojson_conv_lib,"Ppx_yojson_conv_lib__"); - var Ppx_yojson_conv_lib_Yojsonable=[0]; - caml_register_global - (46, - Ppx_yojson_conv_lib_Yojsonable, - "Ppx_yojson_conv_lib__Yojsonable_intf"); - var - _b_=[0,-976970511,caml_string_of_jsbytes("")], - _a_=[0,-976970511,caml_string_of_jsbytes("")], - _g_= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes("_of_yojson: polymorphic variant tag "), - [3, - 0, - [11,caml_string_of_jsbytes(" has incorrect number of arguments"),0]]]], - caml_string_of_jsbytes - ("%s_of_yojson: polymorphic variant tag %S has incorrect number of arguments")], - _f_= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes - ("_of_yojson: the following record elements were undefined: "), - [2,0,0]]], - caml_string_of_jsbytes - ("%s_of_yojson: the following record elements were undefined: %s")], - _e_= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes("_of_yojson: "), - [2,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]]], - caml_string_of_jsbytes("%s_of_yojson: %s: %s")], - _d_= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes("_of_yojson: sum tag "), - [3, - 0, - [11,caml_string_of_jsbytes(" has incorrect number of arguments"),0]]]], - caml_string_of_jsbytes - ("%s_of_yojson: sum tag %S has incorrect number of arguments")], - _c_= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes("_of_yojson: tuple of size "), - [4,0,0,0,[11,caml_string_of_jsbytes(" expected"),0]]]], - caml_string_of_jsbytes("%s_of_yojson: tuple of size %d expected")]; - function yojson_of_unit(param){return 870828711} - function yojson_of_bool(b){return [0,737456202,b]} - function yojson_of_string(str){return [0,-976970511,str]} - function yojson_of_bytes(bytes) - {return [0,-976970511,caml_call1(Stdlib_BytesLabels[6],bytes)]} - function yojson_of_char(c) - {return [0,-976970511,caml_call2(Stdlib_StringLabels[1],1,c)]} - function yojson_of_int(n){return [0,3654863,n]} - function yojson_of_float(n){return [0,365180284,n]} - function yojson_of_int32(n) - {return [0,-752863768,caml_call1(Stdlib_Int32[14],n)]} - function yojson_of_int64(n) - {return [0,-752863768,caml_call1(Stdlib_Int64[14],n)]} - function yojson_of_nativeint(n) - {return [0,-752863768,caml_call1(Stdlib_Nativeint[15],n)]} - function yojson_of_ref(yojson_of_a,rf) - {return caml_call1(yojson_of_a,rf[1])} - function yojson_of_lazy_t(yojson_of_a,lv) - {var - _I_=runtime.caml_obj_tag(lv), - _J_=250 === _I_?lv[1]:246 === _I_?caml_call1(CamlinternalLazy[2],lv):lv; - return caml_call1(yojson_of_a,_J_)} - function yojson_of_option(yojson_of_a,param) - {if(param){var x=param[1];return caml_call1(yojson_of_a,x)} - return 870828711} - function yojson_of_pair(yojson_of_a,yojson_of_b,param) - {var b=param[2],a=param[1],_H_=[0,caml_call1(yojson_of_b,b),0]; - return [0,848054398,[0,caml_call1(yojson_of_a,a),_H_]]} - function yojson_of_triple(yojson_of_a,yojson_of_b,yojson_of_c,param) - {var - c=param[3], - b=param[2], - a=param[1], - _F_=[0,caml_call1(yojson_of_c,c),0], - _G_=[0,caml_call1(yojson_of_b,b),_F_]; - return [0,848054398,[0,caml_call1(yojson_of_a,a),_G_]]} - function yojson_of_list(yojson_of_a,lst) - {var _E_=caml_call2(Stdlib_ListLabels[21],yojson_of_a,lst); - return [0,848054398,caml_call1(Stdlib_ListLabels[9],_E_)]} - function yojson_of_array(yojson_of_a,ar) - {var lst_ref=[0,0],_B_=ar.length - 1 - 1 | 0; - if(! (_B_ < 0)) - {var i=_B_; - for(;;) - {var _C_=lst_ref[1]; - lst_ref[1] - = - [0,caml_call1(yojson_of_a,caml_check_bound(ar,i)[1 + i]),_C_]; - var _D_=i - 1 | 0; - if(0 !== i){var i=_D_;continue} - break}} - return [0,848054398,lst_ref[1]]} - function yojson_of_hashtbl(yojson_of_key,yojson_of_val,htbl) - {function coll(k,v,acc) - {var _A_=[0,caml_call1(yojson_of_val,v),0]; - return [0,[0,848054398,[0,caml_call1(yojson_of_key,k),_A_]],acc]} - return [0,848054398,caml_call3(Stdlib_MoreLabels[1][14],coll,htbl,0)]} - function yojson_of_opaque(param){return _a_} - function yojson_of_fun(param){return _b_} - var - Of_yojson_error=[248,cst_Ppx_yojson_conv_lib_Yojson,caml_fresh_oo_id(0)], - record_check_extra_fields=[0,1]; - function of_yojson_error_exn(exc,yojson) - {throw [0,Of_yojson_error,exc,yojson]} - function of_yojson_error(what,yojson) - {throw [0,Of_yojson_error,[0,Stdlib[7],what],yojson]} - function unit_of_yojson(yojson) - {return 870828711 === yojson - ?0 - :of_yojson_error(cst_unit_of_yojson_Null_needed,yojson)} - function bool_of_yojson(yojson) - {if(typeof yojson !== "number" && 737456202 === yojson[1]) - {var v=yojson[2];return v} - return of_yojson_error(cst_bool_of_yojson_true_false_,yojson)} - function string_of_yojson(yojson) - {if(typeof yojson !== "number" && -976970511 === yojson[1]) - {var str=yojson[2];return str} - return of_yojson_error(cst_string_of_yojson_string_ne,yojson)} - function bytes_of_yojson(yojson) - {if(typeof yojson !== "number" && -976970511 === yojson[1]) - {var str=yojson[2];return caml_call1(Stdlib_BytesLabels[5],str)} - return of_yojson_error(cst_bytes_of_yojson_string_nee,yojson)} - function char_of_yojson(yojson) - {if(typeof yojson !== "number" && -976970511 === yojson[1]) - {var str=yojson[2]; - if(1 !== runtime.caml_ml_string_length(str)) - of_yojson_error(cst_char_of_yojson_string_must,yojson); - return runtime.caml_string_get(str,0)} - return of_yojson_error(cst_char_of_yojson_string_of_s,yojson)} - function int_of_yojson(yojson) - {if(typeof yojson !== "number" && 3654863 === yojson[1]) - {var v=yojson[2];return v} - return of_yojson_error(cst_int_of_yojson_integer_need,yojson)} - function float_of_yojson(yojson) - {if(typeof yojson !== "number") - {var _z_=yojson[1]; - if(-752863768 === _z_) - {var str=yojson[2];return runtime.caml_float_of_string(str)} - if(3654863 === _z_){var i=yojson[2];return i} - if(365180284 === _z_){var v=yojson[2];return v}} - return of_yojson_error(cst_float_of_yojson_float_need,yojson)} - function int32_of_yojson(yojson) - {if(typeof yojson !== "number") - {var _y_=yojson[1]; - if(-752863768 === _y_) - {var str=yojson[2];return caml_int_of_string(str)} - if(3654863 === _y_){var v=yojson[2];return v}} - return of_yojson_error(cst_int32_of_yojson_integer_ne,yojson)} - function int64_of_yojson(yojson) - {if(typeof yojson !== "number") - {var _x_=yojson[1]; - if(-752863768 === _x_) - {var str=yojson[2];return runtime.caml_int64_of_string(str)} - if(3654863 === _x_) - {var v=yojson[2];return runtime.caml_int64_of_int32(v)}} - return of_yojson_error(cst_int64_of_yojson_integer_ne,yojson)} - function nativeint_of_yojson(yojson) - {if(typeof yojson !== "number") - {var _w_=yojson[1]; - if(-752863768 === _w_) - {var str=yojson[2];return caml_int_of_string(str)} - if(3654863 === _w_){var v=yojson[2];return v}} - return of_yojson_error(cst_nativeint_of_yojson_intege,yojson)} - function ref_of_yojson(a_of_yojson,yojson) - {return [0,caml_call1(a_of_yojson,yojson)]} - function lazy_t_of_yojson(a_of_yojson,yojson) - {var _v_=caml_call1(a_of_yojson,yojson); - return caml_call1(Stdlib_Lazy[4],_v_)} - function option_of_yojson(a_of_yojson,yojson) - {return 870828711 === yojson?0:[0,caml_call1(a_of_yojson,yojson)]} - function pair_of_yojson(a_of_yojson,b_of_yojson,yojson) - {if(typeof yojson !== "number" && 848054398 === yojson[1]) - {var _t_=yojson[2]; - if(_t_) - {var _u_=_t_[2]; - if(_u_ && ! _u_[2]) - {var - b_yojson=_u_[1], - a_yojson=_t_[1], - a=caml_call1(a_of_yojson,a_yojson), - b=caml_call1(b_of_yojson,b_yojson); - return [0,a,b]}}} - return of_yojson_error(cst_pair_of_yojson_invalid_for,yojson)} - function triple_of_yojson(a_of_yojson,b_of_yojson,c_of_yojson,yojson) - {if(typeof yojson !== "number" && 848054398 === yojson[1]) - {var _q_=yojson[2]; - if(_q_) - {var _r_=_q_[2]; - if(_r_) - {var _s_=_r_[2]; - if(_s_ && ! _s_[2]) - {var - c_yojson=_s_[1], - b_yojson=_r_[1], - a_yojson=_q_[1], - a=caml_call1(a_of_yojson,a_yojson), - b=caml_call1(b_of_yojson,b_yojson), - c=caml_call1(c_of_yojson,c_yojson); - return [0,a,b,c]}}}} - return of_yojson_error(cst_triple_of_yojson_invalid_f,yojson)} - function list_of_yojson(a_of_yojson,yojson) - {if(typeof yojson !== "number" && 848054398 === yojson[1]) - {var - lst=yojson[2], - rev_lst=caml_call2(Stdlib_ListLabels[21],a_of_yojson,lst); - return caml_call1(Stdlib_ListLabels[9],rev_lst)} - return of_yojson_error(cst_list_of_yojson_list_needed,yojson)} - function array_of_yojson(a_of_yojson,yojson) - {if(typeof yojson !== "number" && 848054398 === yojson[1]) - {var _o_=yojson[2]; - if(_o_) - {var - t=_o_[2], - h=_o_[1], - len=caml_call1(Stdlib_ListLabels[1],t) + 1 | 0, - res=runtime.caml_make_vect(len,caml_call1(a_of_yojson,h)), - i=1, - param=t; - for(;;) - {if(param) - {var t$0=param[2],h$0=param[1],_p_=caml_call1(a_of_yojson,h$0); - caml_check_bound(res,i)[1 + i] = _p_; - var i$0=i + 1 | 0,i=i$0,param=t$0; - continue} - return res}} - return [0]} - return of_yojson_error(cst_array_of_yojson_list_neede,yojson)} - function hashtbl_of_yojson(key_of_yojson,val_of_yojson,yojson) - {if(typeof yojson !== "number" && 848054398 === yojson[1]) - {var - lst=yojson[2], - htbl=caml_call2(Stdlib_MoreLabels[1][1],0,0), - act= - function(param) - {if(typeof param !== "number" && 848054398 === param[1]) - {var _k_=param[2]; - if(_k_) - {var _l_=_k_[2]; - if(_l_ && ! _l_[2]) - {var - v_yojson=_l_[1], - k_yojson=_k_[1], - _m_=caml_call1(val_of_yojson,v_yojson), - _n_=caml_call1(key_of_yojson,k_yojson); - return caml_call3(Stdlib_MoreLabels[1][5],htbl,_n_,_m_)}}} - return of_yojson_error(cst_hashtbl_of_yojson_tuple_li,yojson)}; - caml_call2(Stdlib_ListLabels[17],act,lst); - return htbl} - return of_yojson_error(cst_hashtbl_of_yojson_list_nee,yojson)} - function opaque_of_yojson(yojson) - {return of_yojson_error(cst_opaque_of_yojson_cannot_co,yojson)} - function fun_of_yojson(yojson) - {return of_yojson_error(cst_fun_of_yojson_cannot_conve,yojson)} - var - Ppx_yojson_conv_lib_Yojson_con= - [0, - yojson_of_unit, - yojson_of_bool, - yojson_of_string, - yojson_of_bytes, - yojson_of_char, - yojson_of_int, - yojson_of_float, - yojson_of_int32, - yojson_of_int64, - yojson_of_nativeint, - yojson_of_ref, - yojson_of_lazy_t, - yojson_of_option, - yojson_of_pair, - yojson_of_triple, - yojson_of_list, - yojson_of_array, - yojson_of_hashtbl, - yojson_of_opaque, - yojson_of_fun, - Of_yojson_error, - record_check_extra_fields, - of_yojson_error, - of_yojson_error_exn, - unit_of_yojson, - bool_of_yojson, - string_of_yojson, - bytes_of_yojson, - char_of_yojson, - int_of_yojson, - float_of_yojson, - int32_of_yojson, - int64_of_yojson, - nativeint_of_yojson, - ref_of_yojson, - lazy_t_of_yojson, - option_of_yojson, - pair_of_yojson, - triple_of_yojson, - list_of_yojson, - array_of_yojson, - hashtbl_of_yojson, - opaque_of_yojson, - fun_of_yojson, - [0, - yojson_of_unit, - yojson_of_bool, - yojson_of_string, - yojson_of_bytes, - yojson_of_char, - yojson_of_int, - yojson_of_float, - yojson_of_int32, - yojson_of_int64, - yojson_of_nativeint, - yojson_of_ref, - yojson_of_lazy_t, - yojson_of_option, - yojson_of_list, - yojson_of_array, - yojson_of_hashtbl, - unit_of_yojson, - bool_of_yojson, - string_of_yojson, - bytes_of_yojson, - char_of_yojson, - int_of_yojson, - float_of_yojson, - int32_of_yojson, - int64_of_yojson, - nativeint_of_yojson, - ref_of_yojson, - lazy_t_of_yojson, - option_of_yojson, - list_of_yojson, - array_of_yojson, - hashtbl_of_yojson]]; - caml_register_global - (57,Ppx_yojson_conv_lib_Yojson_con,"Ppx_yojson_conv_lib__Yojson_conv"); - var sprintf=Stdlib_Printf[4]; - function tuple_of_size_n_expected(loc,n,yojson) - {return of_yojson_error(caml_call3(sprintf,_c_,loc,n),yojson)} - function stag_no_args(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_this_constructor), - yojson)} - function stag_incorrect_n_args(loc,tag,yojson) - {var msg=caml_call3(sprintf,_d_,loc,tag); - return of_yojson_error(msg,yojson)} - function stag_takes_args(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_this_constructor$0), - yojson)} - function nested_list_invalid_sum(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_expected_a_varia), - yojson)} - function empty_list_invalid_sum(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_expected_a_varia$0), - yojson)} - function unexpected_stag(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_unexpected_varia), - yojson)} - function record_superfluous_fields(what,loc,rev_fld_names,yojson) - {var - _j_=caml_call1(Stdlib_ListLabels[9],rev_fld_names), - fld_names_str=caml_call2(Stdlib_StringLabels[6],cst,_j_), - msg=caml_call4(sprintf,_e_,loc,what,fld_names_str); - return of_yojson_error(msg,yojson)} - function record_duplicate_fields(loc,rev_fld_names,yojson) - {return record_superfluous_fields - (cst_duplicate_fields,loc,rev_fld_names,yojson)} - function record_extra_fields(loc,rev_fld_names,yojson) - {return record_superfluous_fields - (cst_extra_fields,loc,rev_fld_names,yojson)} - function record_get_undefined_loop(fields,param) - {var fields$0=fields,param$0=param; - for(;;) - {if(param$0) - {var _h_=param$0[1]; - if(_h_[1]) - {var - param$1=param$0[2], - field=_h_[2], - fields$1=[0,field,fields$0], - fields$0=fields$1, - param$0=param$1; - continue} - var param$2=param$0[2],param$0=param$2; - continue} - var _i_=caml_call1(Stdlib_ListLabels[9],fields$0); - return caml_call2(Stdlib_StringLabels[6],cst$0,_i_)}} - function record_undefined_elements(loc,yojson,lst) - {var - undefined$0=record_get_undefined_loop(0,lst), - msg=caml_call3(sprintf,_f_,loc,undefined$0); - return of_yojson_error(msg,yojson)} - function record_list_instead_atom(loc,yojson) - {var msg=caml_call2(Stdlib[28],loc,cst_of_yojson_list_instead_of_); - return of_yojson_error(msg,yojson)} - function record_poly_field_value(loc,yojson) - {var msg=caml_call2(Stdlib[28],loc,cst_of_yojson_cannot_convert_v); - return of_yojson_error(msg,yojson)} - var - No_variant_match= - [248,cst_Ppx_yojson_conv_lib_Yojson$0,caml_fresh_oo_id(0)]; - function no_variant_match(param){throw No_variant_match} - function no_matching_variant_found(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_no_matching_vari), - yojson)} - function ptag_no_args(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_polymorphic_vari), - yojson)} - function ptag_incorrect_n_args(loc,cnstr,yojson) - {var msg=caml_call3(sprintf,_g_,loc,cnstr); - return of_yojson_error(msg,yojson)} - function ptag_takes_args(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_polymorphic_vari$0), - yojson)} - function nested_list_invalid_poly_var(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_a_nested_list_is), - yojson)} - function empty_list_invalid_poly_var(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_the_empty_list_i), - yojson)} - function empty_type(loc,yojson) - {return of_yojson_error - (caml_call2(Stdlib[28],loc,cst_of_yojson_trying_to_conver), - yojson)} - var - Ppx_yojson_conv_lib_Yojson_con$0= - [0, - sprintf, - tuple_of_size_n_expected, - stag_no_args, - stag_incorrect_n_args, - stag_takes_args, - nested_list_invalid_sum, - empty_list_invalid_sum, - unexpected_stag, - record_superfluous_fields, - record_duplicate_fields, - record_extra_fields, - record_get_undefined_loop, - record_undefined_elements, - record_list_instead_atom, - record_poly_field_value, - No_variant_match, - no_variant_match, - no_matching_variant_found, - ptag_no_args, - ptag_incorrect_n_args, - ptag_takes_args, - nested_list_invalid_poly_var, - empty_list_invalid_poly_var, - empty_type]; - caml_register_global - (59, - Ppx_yojson_conv_lib_Yojson_con$0, - "Ppx_yojson_conv_lib__Yojson_conv_error"); - var Option=[0]; - function symbol(x){return x[1]} - var Ppx_yojson_conv_lib$0=[0,Option,symbol]; - caml_register_global(60,Ppx_yojson_conv_lib$0,"Ppx_yojson_conv_lib"); - return} - (globalThis)); - - -//# 1 "../../runtimes/ocaml/.runtime_ocaml.objs/runtime_ocaml.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_check_bound=runtime.caml_check_bound, - caml_equal=runtime.caml_equal, - caml_fresh_oo_id=runtime.caml_fresh_oo_id, - caml_register_global=runtime.caml_register_global, - caml_string_equal=runtime.caml_string_equal, - 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])} - 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_call6(f,a0,a1,a2,a3,a4,a5) - {return f.length == 6 - ?f(a0,a1,a2,a3,a4,a5) - :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])} - function caml_call7(f,a0,a1,a2,a3,a4,a5,a6) - {return f.length == 7 - ?f(a0,a1,a2,a3,a4,a5,a6) - :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])} - function caml_call9(f,a0,a1,a2,a3,a4,a5,a6,a7,a8) - {return f.length == 9 - ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8) - :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7,a8])} - var - global_data=runtime.caml_get_global_data(), - cst$3=caml_string_of_jsbytes("."), - cst$4=caml_string_of_jsbytes("."), - partial= - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [12, - 91, - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [15, - [17, - [0,caml_string_of_jsbytes("@;<1 -2>"),1,-2], - [12,93,[17,0,[12,32,[17,0,0]]]]]]]]]], - cst$5=caml_string_of_jsbytes("."), - cst$6=caml_string_of_jsbytes("."), - partial$0=[11,caml_string_of_jsbytes(""),0], - partial$1= - [12, - 91, - [17, - [0,caml_string_of_jsbytes("@,"),0,0], - [15, - [12, - 93, - [17, - 0, - [17, - [0,caml_string_of_jsbytes("@,"),0,0], - [17,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],[12,125,0]]]]]]]]], - partial$2=[0,caml_string_of_jsbytes("@ "),1,0], - partial$3= - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [15, - [12, - 44, - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [11, - caml_string_of_jsbytes("output:"), - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [15, - [12, - 44, - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [11,caml_string_of_jsbytes("body:"),[17,partial$2,partial$1]]]]]]]]]]], - cst$7=caml_string_of_jsbytes("."), - partial$4=[11,caml_string_of_jsbytes(""),0], - partial$5= - [12, - 91, - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [15, - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [12, - 93, - [17, - 0, - [17,0,[17,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],[12,125,0]]]]]]]]]], - partial$6= - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - partial$7= - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [12, - 91, - [17, - [0,caml_string_of_jsbytes("@,"),0,0], - [15, - [17, - 0, - [11, - caml_string_of_jsbytes("],"), - [17, - [0,caml_string_of_jsbytes("@,"),0,0], - [11, - caml_string_of_jsbytes("body:"), - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [18,partial$6,partial$5]]]]]]]]]]], - cst_unreachable_due_to_the_is_= - caml_string_of_jsbytes("unreachable due to the [is_subscope_call] test"), - cst_unreachable_due_to_the_is_$0= - caml_string_of_jsbytes - ("unreachable due to the [is_subscope_input_var_def] test"), - cst$13=caml_string_of_jsbytes("]"), - cst$14=caml_string_of_jsbytes("["), - cst_expected_variable_definiti= - caml_string_of_jsbytes - (" ]): expected variable definition (function output), found: "), - cst$15=caml_string_of_jsbytes(", "), - cst_Invalid_function_call= - caml_string_of_jsbytes("Invalid function call ([ "), - cst_expected_variable_definiti$0= - caml_string_of_jsbytes - (" ]): expected variable definition (function output), found: end of tokens"), - cst$16=caml_string_of_jsbytes(", "), - cst_Invalid_function_call$0= - caml_string_of_jsbytes("Invalid function call ([ "), - cst_Unexpected_event=caml_string_of_jsbytes("Unexpected event: "), - cst_Missing_function_output_va= - caml_string_of_jsbytes("Missing function output variable definition."), - cst_Invalid_start_of_function_= - caml_string_of_jsbytes("Invalid start of function call."), - cst_input$0=caml_string_of_jsbytes("input"), - cst_output$0=caml_string_of_jsbytes("output"), - 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(", "), - partial$8=[12,41,0], - cst_body=caml_string_of_jsbytes("body"), - cst_inputs=caml_string_of_jsbytes("inputs"), - cst_name=caml_string_of_jsbytes("name"), - cst_fun_calls=caml_string_of_jsbytes("fun_calls"), - cst_value=caml_string_of_jsbytes("value"), - cst_name$0=caml_string_of_jsbytes("name"), - cst_pos=caml_string_of_jsbytes("pos"), - cst_output=caml_string_of_jsbytes("output"), - cst_body$0=caml_string_of_jsbytes("body"), - cst_input=caml_string_of_jsbytes("input"), - cst_fun_name=caml_string_of_jsbytes("fun_name"), - cst=caml_string_of_jsbytes("\xe2\x80\xa6"), - cst$2=caml_string_of_jsbytes(""), - cst$1=caml_string_of_jsbytes("-"), - cst$0=caml_string_of_jsbytes(""), - cst_law_headings=caml_string_of_jsbytes("law_headings"), - cst_end_column=caml_string_of_jsbytes("end_column"), - cst_end_line=caml_string_of_jsbytes("end_line"), - cst_start_column=caml_string_of_jsbytes("start_column"), - cst_start_line=caml_string_of_jsbytes("start_line"), - cst_filename=caml_string_of_jsbytes("filename"), - cst_Runtime_ocaml_Runtime_Empt= - caml_string_of_jsbytes("Runtime_ocaml.Runtime.EmptyError"), - cst_Runtime_ocaml_Runtime_Asse= - caml_string_of_jsbytes("Runtime_ocaml.Runtime.AssertionFailed"), - cst_Runtime_ocaml_Runtime_Conf= - caml_string_of_jsbytes("Runtime_ocaml.Runtime.ConflictError"), - cst_Runtime_ocaml_Runtime_Unco= - caml_string_of_jsbytes("Runtime_ocaml.Runtime.UncomparableDurations"), - cst_Runtime_ocaml_Runtime_Indi= - caml_string_of_jsbytes("Runtime_ocaml.Runtime.IndivisableDurations"), - cst_Runtime_ocaml_Runtime_Impo= - caml_string_of_jsbytes("Runtime_ocaml.Runtime.ImpossibleDate"), - cst_Runtime_ocaml_Runtime_NoVa= - caml_string_of_jsbytes("Runtime_ocaml.Runtime.NoValueProvided"), - Stdlib_String=global_data.Stdlib__String, - Stdlib_Format=global_data.Stdlib__Format, - Stdlib_Array=global_data.Stdlib__Array, - Stdlib_Option=global_data.Stdlib__Option, - Stdlib=global_data.Stdlib, - Dates_calc_Dates=global_data.Dates_calc__Dates, - Q=global_data.Q, - Z=global_data.Z, - Stdlib_List=global_data.Stdlib__List, - Stdlib_Printf=global_data.Stdlib__Printf, - Yojson=global_data.Yojson, - Ppx_yojson_conv_lib_Yojson_con= - global_data.Ppx_yojson_conv_lib__Yojson_conv, - Stdlib_Map=global_data.Stdlib__Map, - Runtime_ocaml=[0]; - caml_register_global(112,Runtime_ocaml,"Runtime_ocaml"); - var - _u_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [11, - caml_string_of_jsbytes("@ %s:@ %a@]")], - _v_= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes(" line "), - [4,0,0,0,[11,caml_string_of_jsbytes(" to "),[4,0,0,0,0]]]]], - caml_string_of_jsbytes("%s line %d to %d")], - _w_= - [0, - [11,caml_string_of_jsbytes("no_pos"),0], - caml_string_of_jsbytes("no_pos")], - _x_= - [0, - [17,[0,caml_string_of_jsbytes("@ "),1,0],0], - caml_string_of_jsbytes("@ ")], - _y_= - [0, - [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(",@ ")], - _z_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [11, - caml_string_of_jsbytes(""), - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [2, - 0, - [11, - caml_string_of_jsbytes(": "), - [15, - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [11, - caml_string_of_jsbytes("computed from"), - [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,58,partial]]]]]]]]]], - caml_string_of_jsbytes - ("@[@ %s: %a@ computed from@ :@ @[[@ %a@;<1 -2>]@] @]")], - _M_= - [0, - [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], - caml_string_of_jsbytes(";@ ")], - _K_= - [0, - [12,44,[17,[0,caml_string_of_jsbytes("@,"),0,0],0]], - caml_string_of_jsbytes(",@,")], - _J_= - [0, - [2,0,[11,caml_string_of_jsbytes(": "),[15,0]]], - caml_string_of_jsbytes("%s: %a")], - _A_=[0,[11,caml_string_of_jsbytes("()"),0],caml_string_of_jsbytes("()")], - _B_= - [0,[11,caml_string_of_jsbytes("fun"),0],caml_string_of_jsbytes("fun")], - _C_=[0,[9,0,0],caml_string_of_jsbytes("%b")], - _D_= - [0, - [2,0,[11,caml_string_of_jsbytes("\xe2\x82\xac"),0]], - caml_string_of_jsbytes("%s\xe2\x82\xac")], - _E_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], - _F_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _G_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _H_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _I_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _L_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [2, - 0, - [11, - caml_string_of_jsbytes(" = {"), - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [15, - [17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,125,[17,0,0]]]]]]]], - caml_string_of_jsbytes("@[%s = {@ %a@;<1 -2>}@]")], - _N_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [12, - 91, - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [15, - [17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,[17,0,0]]]]]]], - caml_string_of_jsbytes("@[[@ %a@;<1 -2>]@]")], - _O_=[0,[15,0],caml_string_of_jsbytes("%a")], - _P_=[0,[15,0],caml_string_of_jsbytes("%a")], - _Q_=[0,0], - _R_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [11, - caml_string_of_jsbytes(""), - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [2, - 0, - [11, - caml_string_of_jsbytes(" :="), - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [12, - 123, - [18, - [1,[0,partial$0,caml_string_of_jsbytes("")]], - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [11,caml_string_of_jsbytes("input:"),partial$3]]]]]]]]]], - caml_string_of_jsbytes - ("@[@ %s :=@ {@[@ input:@ %a,@ output:@ %a,@ body:@ [@,%a]@]@,@]@,}")], - _S_=[0,0], - _T_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [11, - caml_string_of_jsbytes(""), - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [2, - 0, - [11, - caml_string_of_jsbytes(" :="), - [17, - [0,caml_string_of_jsbytes("@ "),1,0], - [12, - 123, - [18, - [1,[0,partial$4,caml_string_of_jsbytes("")]], - [17, - [0,caml_string_of_jsbytes("@,"),0,0], - [11,caml_string_of_jsbytes("inputs:"),partial$7]]]]]]]]]], - caml_string_of_jsbytes - ("@[@ %s :=@ {@[@,inputs:@ @[[@,%a@]],@,body:@ @[[@ %a@ ]@]@]@]@,}")], - _U_= - [0, - [17,[0,caml_string_of_jsbytes("@ "),1,0],0], - caml_string_of_jsbytes("@ ")], - _V_=[0,[17,4,0],caml_string_of_jsbytes("@.")], - _X_=[0,0,caml_string_of_jsbytes("")], - _W_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [15,[17,0,0]]], - caml_string_of_jsbytes("@[%a@]")], - _ac_=[0,0], - _ad_=[0,0], - _ae_=[0,0], - _ab_= - [0, - [11, - caml_string_of_jsbytes("An error occurred while parsing raw events: "), - [2,0,[12,10,0]]], - caml_string_of_jsbytes - ("An error occurred while parsing raw events: %s\n")], - _Z_= - [0, - [11,caml_string_of_jsbytes("BeginCall([ "),0], - caml_string_of_jsbytes("BeginCall([ ")], - ___= - [0, - [11,caml_string_of_jsbytes("EndCall([ "),0], - caml_string_of_jsbytes("EndCall([ ")], - _$_= - [0, - [11, - caml_string_of_jsbytes("VariableDefinition([ "), - [2,0,[11,caml_string_of_jsbytes(" ], "),[2,0,[12,41,0]]]]], - caml_string_of_jsbytes("VariableDefinition([ %s ], %s)")], - _aa_= - [0, - [11, - caml_string_of_jsbytes("DecisionTaken("), - [2, - 0, - [12, - 58, - [4, - 0, - 0, - 0, - [12,46,[4,0,0,0,[12,45,[4,0,0,0,[12,46,[4,0,0,0,partial$8]]]]]]]]]], - caml_string_of_jsbytes("DecisionTaken(%s:%d.%d-%d.%d)")], - _r_=[0,-976970511,caml_string_of_jsbytes("VarComputation")], - _s_=[0,-976970511,caml_string_of_jsbytes("FunCall")], - _t_=[0,-976970511,caml_string_of_jsbytes("SubScopeCall")], - _g_=[0,848054398,[0,[0,-976970511,caml_string_of_jsbytes("Unit")],0]], - _h_= - [0, - 848054398, - [0,[0,-976970511,caml_string_of_jsbytes("Unembeddable")],0]], - _i_=[0,-976970511,caml_string_of_jsbytes("Bool")], - _j_=[0,-976970511,caml_string_of_jsbytes("Money")], - _k_=[0,-976970511,caml_string_of_jsbytes("Integer")], - _l_=[0,-976970511,caml_string_of_jsbytes("Decimal")], - _m_=[0,-976970511,caml_string_of_jsbytes("Date")], - _n_=[0,-976970511,caml_string_of_jsbytes("Duration")], - _o_=[0,-976970511,caml_string_of_jsbytes("Enum")], - _p_=[0,-976970511,caml_string_of_jsbytes("Struct")], - _q_=[0,-976970511,caml_string_of_jsbytes("Array")], - _f_=[0,[15,0],caml_string_of_jsbytes("%a")], - _e_=[0,[15,0],caml_string_of_jsbytes("%a")], - _c_=[0,[15,0],caml_string_of_jsbytes("%a")], - _b_=[0,-1014801911,0], - _d_= - [0,[2,0,[15,[12,46,[15,[2,0,0]]]]],caml_string_of_jsbytes("%s%a.%a%s")], - _a_=[0,[8,[0,0,0],0,[0,2],0],caml_string_of_jsbytes("%.2f")]; - function yojson_of_source_position(param) - {var - v_law_headings=param[6], - v_end_column=param[5], - v_end_line=param[4], - v_start_column=param[3], - v_start_line=param[2], - v_filename=param[1], - arg= - caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][14], - Ppx_yojson_conv_lib_Yojson_con[45][3], - v_law_headings), - bnds=[0,[0,cst_law_headings,arg],0], - arg$0=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_end_column), - bnds$0=[0,[0,cst_end_column,arg$0],bnds], - arg$1=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_end_line), - bnds$1=[0,[0,cst_end_line,arg$1],bnds$0], - arg$2=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_start_column), - bnds$2=[0,[0,cst_start_column,arg$2],bnds$1], - arg$3=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_start_line), - bnds$3=[0,[0,cst_start_line,arg$3],bnds$2], - arg$4=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][3],v_filename), - bnds$4=[0,[0,cst_filename,arg$4],bnds$3]; - return [0,963043957,bnds$4]} - var - EmptyError=[248,cst_Runtime_ocaml_Runtime_Empt,caml_fresh_oo_id(0)], - AssertionFailed=[248,cst_Runtime_ocaml_Runtime_Asse,caml_fresh_oo_id(0)], - ConflictError=[248,cst_Runtime_ocaml_Runtime_Conf,caml_fresh_oo_id(0)], - UncomparableDurations= - [248,cst_Runtime_ocaml_Runtime_Unco,caml_fresh_oo_id(0)], - IndivisableDurations= - [248,cst_Runtime_ocaml_Runtime_Indi,caml_fresh_oo_id(0)], - ImpossibleDate=[248,cst_Runtime_ocaml_Runtime_Impo,caml_fresh_oo_id(0)], - NoValueProvided=[248,cst_Runtime_ocaml_Runtime_NoVa,caml_fresh_oo_id(0)]; - function money_of_cents_string(cents){return caml_call1(Z[5],cents)} - function money_of_units_int(units){return caml_call2(Z[54],units,100)} - function money_of_cents_integer(cents){return cents} - function money_to_float(m){return caml_call1(Z[30],m) / 100.} - function money_of_decimal(d) - {var _cH_=caml_call1(Q[9],100),_cI_=caml_call2(Q[40],d,_cH_); - return caml_call1(Q[29],_cI_)} - function money_to_string(m) - {var - _cD_=caml_call1(Q[9],100), - _cE_=caml_call1(Q[8],m), - _cF_=caml_call2(Q[55],_cE_,_cD_), - _cG_=caml_call1(Q[35],_cF_); - return caml_call2(Stdlib_Format[133],_a_,_cG_)} - function money_to_cents(m){return m} - function money_round(m) - {var match=runtime.ml_z_div_rem(m,100),cents=match[2],units=match[1]; - if(runtime.caml_lessthan(caml_call1(Z[10],cents),50)) - return caml_call2(Z[54],units,100); - var _cB_=runtime.ml_z_sign(units),_cC_=caml_call2(Z[52],units,_cB_); - return caml_call2(Z[54],_cC_,100)} - function decimal_of_string(d){return caml_call1(Q[15],d)} - function decimal_to_float(d){return caml_call1(Q[35],d)} - function decimal_of_float(d){return caml_call1(Q[14],d)} - function decimal_of_integer(d){return caml_call1(Q[8],d)} - function decimal_to_string(max_prec_digits,i) - {var - sign=caml_call1(Q[20],i), - _co_=caml_call1(Q[16],i), - n=caml_call1(Z[10],_co_), - _cp_=caml_call1(Q[17],i), - d=caml_call1(Z[10],_cp_), - int_part=caml_call2(Z[18],n,d), - n$0=[0,caml_call2(Z[19],n,d)], - digits=[0,0]; - function leading_zeroes(digits) - {function _cA_(digit,num_leading_zeroes) - {if(3455931 <= num_leading_zeroes[1])return num_leading_zeroes; - var i=num_leading_zeroes[2]; - return caml_equal(digit,Z[2]) - ?[0,-1014801911,i + 1 | 0] - :[0,3455931,i]} - var match=caml_call3(Stdlib_List[26],_cA_,digits,_b_); - if(3455931 <= match[1]){var i=match[2];return i} - var i$0=match[2]; - return i$0} - for(;;) - {if(runtime.caml_notequal(n$0[1],Z[2])) - {var _cq_=leading_zeroes(digits[1]); - if - ((caml_call1(Stdlib_List[1],digits[1]) - _cq_ | 0) - < - max_prec_digits) - {n$0[1] = caml_call2(Z[14],n$0[1],10); - var _cr_=digits[1]; - digits[1] = [0,caml_call2(Z[18],n$0[1],d),_cr_]; - n$0[1] = caml_call2(Z[19],n$0[1],d); - continue}} - var - _cs_=leading_zeroes(digits[1]), - _ct_= - (caml_call1(Stdlib_List[1],digits[1]) - _cs_ | 0) - === - max_prec_digits - ?cst - :cst$2, - _cu_=caml_call1(Stdlib_List[9],digits[1]), - _cv_= - function(fmt,digit) - {return caml_call4(Stdlib_Format[129],fmt,_c_,Z[36],digit)}, - _cw_=[0,function(fmt,param){return 0}], - _cx_=caml_call2(Stdlib_Format[123],_cw_,_cv_), - _cy_=Z[36], - _cz_=0 <= sign?cst$0:cst$1; - return caml_call7 - (Stdlib_Format[133],_d_,_cz_,_cy_,int_part,_cx_,_cu_,_ct_)}} - function decimal_round(q) - {var - n=caml_call1(Q[16],q), - d=caml_call1(Q[17],q), - _cl_=caml_call2(Z[54],2,d), - _cm_=caml_call2(Z[54],2,n), - _cn_=runtime.ml_z_fdiv(caml_call2(Z[52],_cm_,d),_cl_); - return caml_call1(Q[8],_cn_)} - function decimal_of_money(m) - {var _cj_=caml_call1(Q[9],100),_ck_=caml_call1(Q[8],m); - return caml_call2(Q[42],_ck_,_cj_)} - function integer_of_string(s){return caml_call1(Z[5],s)} - function integer_to_string(i){return caml_call1(Z[31],i)} - function integer_to_int(i){return caml_call1(Z[29],i)} - function integer_of_int(i){return i} - function integer_exponentiation(i,e){return runtime.ml_z_pow(i,e)} - var integer_log2=Z[47]; - function year_of_date(d) - {var match=caml_call1(Dates_calc_Dates[7],d),y=match[1];return y} - function month_number_of_date(d) - {var match=caml_call1(Dates_calc_Dates[7],d),m=match[2];return m} - function is_leap_year(y) - {var y$0=caml_call1(Z[29],y);return caml_call1(Dates_calc_Dates[11],y$0)} - function day_of_month_of_date(d) - {var match=caml_call1(Dates_calc_Dates[7],d),d$0=match[3];return d$0} - function date_of_numbers(year,month,day) - {try - {var _ch_=caml_call3(Dates_calc_Dates[3],year,month,day);return _ch_} - catch(_ci_){throw ImpossibleDate}} - function date_to_string(d) - {return caml_call3(Stdlib_Format[133],_e_,Dates_calc_Dates[8],d)} - var - first_day_of_month=Dates_calc_Dates[9], - last_day_of_month=Dates_calc_Dates[10]; - function duration_of_numbers(year,month,day) - {return caml_call3(Dates_calc_Dates[12],year,month,day)} - function duration_to_string(d) - {return caml_call3(Stdlib_Format[133],_f_,Dates_calc_Dates[17],d)} - function duration_to_years_months_days(d) - {return caml_call1(Dates_calc_Dates[19],d)} - function yojson_of_runtime_value(param) - {if(typeof param === "number") - return 0 === param?_g_:_h_; - else - switch(param[0]) - {case 0: - var - v0$4=param[1], - v0$5=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][2],v0$4); - return [0,848054398,[0,_i_,[0,v0$5,0]]]; - case 1: - var v0$6=param[1],v0=[0,365180284,money_to_float(v0$6)]; - return [0,848054398,[0,_j_,[0,v0,0]]]; - case 2: - var v0$7=param[1],v0$0=[0,3654863,integer_to_int(v0$7)]; - return [0,848054398,[0,_k_,[0,v0$0,0]]]; - case 3: - var v0$8=param[1],v0$1=[0,365180284,decimal_to_float(v0$8)]; - return [0,848054398,[0,_l_,[0,v0$1,0]]]; - case 4: - var v0$9=param[1],v0$2=[0,-976970511,date_to_string(v0$9)]; - return [0,848054398,[0,_m_,[0,v0$2,0]]]; - case 5: - var v0$10=param[1],v0$3=[0,-976970511,duration_to_string(v0$10)]; - return [0,848054398,[0,_n_,[0,v0$3,0]]]; - case 6: - var - v1=param[2], - v0$11=param[1], - v0$12= - caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][14], - Ppx_yojson_conv_lib_Yojson_con[45][3], - v0$11), - v1$0=v1[2], - v0$13=v1[1], - v0$14=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][3],v0$13), - v1$1=yojson_of_runtime_value(v1$0), - v1$2=[0,848054398,[0,v0$14,[0,v1$1,0]]]; - return [0,848054398,[0,_o_,[0,v0$12,[0,v1$2,0]]]]; - case 7: - var - v1$3=param[2], - v0$15=param[1], - v0$16= - caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][14], - Ppx_yojson_conv_lib_Yojson_con[45][3], - v0$15), - _cg_= - function(param) - {var - v1=param[2], - v0=param[1], - v0$0=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][3],v0), - v1$0=yojson_of_runtime_value(v1); - return [0,848054398,[0,v0$0,[0,v1$0,0]]]}, - v1$4=caml_call2(Ppx_yojson_conv_lib_Yojson_con[45][14],_cg_,v1$3); - return [0,848054398,[0,_p_,[0,v0$16,[0,v1$4,0]]]]; - default: - var - v0$17=param[1], - v0$18= - caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][15], - yojson_of_runtime_value, - v0$17); - return [0,848054398,[0,_q_,[0,v0$18,0]]]}} - function unembeddable(param){return 1} - function embed_unit(param){return 0} - function embed_bool(x){return [0,x]} - function embed_money(x){return [1,x]} - function embed_integer(x){return [2,x]} - function embed_decimal(x){return [3,x]} - function embed_date(x){return [4,x]} - function embed_duration(x){return [5,x]} - function embed_array(f,x){return [8,caml_call2(Stdlib_Array[15],f,x)]} - function yojson_of_information(v) - {return caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][14], - Ppx_yojson_conv_lib_Yojson_con[45][3], - v)} - function yojson_of_var_def(param) - {var - v_fun_calls=param[4], - v_value=param[3], - v_name=param[2], - v_pos=param[1], - _cf_= - caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][14],yojson_of_fun_call), - arg=caml_call2(Ppx_yojson_conv_lib_Yojson_con[45][13],_cf_,v_fun_calls), - bnds=[0,[0,cst_fun_calls,arg],0], - arg$0=yojson_of_runtime_value(v_value), - bnds$0=[0,[0,cst_value,arg$0],bnds], - arg$1=yojson_of_information(v_name), - bnds$1=[0,[0,cst_name$0,arg$1],bnds$0], - arg$2= - caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][13], - yojson_of_source_position, - v_pos), - bnds$2=[0,[0,cst_pos,arg$2],bnds$1]; - return [0,963043957,bnds$2]} - function yojson_of_fun_call(param) - {var - v_output=param[4], - v_body=param[3], - v_input=param[2], - v_fun_name=param[1], - arg=yojson_of_var_def(v_output), - bnds=[0,[0,cst_output,arg],0], - arg$0= - caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][14],yojson_of_event,v_body), - bnds$0=[0,[0,cst_body$0,arg$0],bnds], - arg$1=yojson_of_var_def(v_input), - bnds$1=[0,[0,cst_input,arg$1],bnds$0], - 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,_r_,[0,v0$0,0]]]; - case 1: - var v0$1=param[1],v0$2=yojson_of_fun_call(v0$1); - return [0,848054398,[0,_s_,[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,_t_,[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])} - function log_begin_call(info,f) - {log_ref[1] = [0,[0,info],log_ref[1]];return f} - function log_end_call(info,x) - {log_ref[1] = [0,[1,info],log_ref[1]];return x} - function log_variable_definition(info,embed,x) - {var _ce_=log_ref[1]; - log_ref[1] = [0,[2,info,caml_call1(embed,x)],_ce_]; - return x} - function log_decision_taken(pos,x) - {if(x)log_ref[1] = [0,[3,pos],log_ref[1]];return x} - function pp_events(opt,ppf,events) - {if(opt)var sth=opt[1],is_first_call=sth;else var is_first_call=1; - function format_var_def(ppf,var$0) - {var _cc_=var$0[3],_cd_=caml_call2(Stdlib_String[6],cst$3,var$0[2]); - return caml_call7 - (Stdlib_Format[129], - ppf, - _u_, - format_pos_opt, - var$0[1], - _cd_, - format_value, - _cc_)} - function format_pos_opt(ppf,param) - {if(param) - {var pos=param[1]; - return caml_call5(Stdlib_Format[129],ppf,_v_,pos[1],pos[2],pos[4])} - return caml_call2(Stdlib_Format[129],ppf,_w_)} - function format_var_defs(ppf) - {var - _cb_= - [0, - function(ppf,param){return caml_call2(Stdlib_Format[129],ppf,_x_)}]; - return caml_call3(Stdlib_Format[123],_cb_,format_var_def,ppf)} - function format_var_def_with_fun_calls(ppf,var_with_fun) - {var _b6_=var_with_fun[4]; - if(_b6_) - {var _b7_=_b6_[1]; - if(_b7_) - {var - _b8_= - function(ppf,fun_call){return format_event(ppf,[1,fun_call])}, - _b9_= - [0, - function(ppf,param) - {return caml_call2(Stdlib_Format[129],ppf,_y_)}], - _b__=caml_call2(Stdlib_Format[123],_b9_,_b8_), - _b$_=var_with_fun[3], - _ca_=caml_call2(Stdlib_String[6],cst$4,var_with_fun[2]); - return caml_call7 - (Stdlib_Format[129], - ppf, - _z_, - _ca_, - format_value, - _b$_, - _b__, - _b7_)}} - return format_var_def(ppf,var_with_fun)} - function format_value(ppf,param) - {if(typeof param === "number") - return 0 === param - ?caml_call2(Stdlib_Format[129],ppf,_A_) - :caml_call2(Stdlib_Format[129],ppf,_B_); - else - switch(param[0]) - {case 0: - var x=param[1];return caml_call3(Stdlib_Format[129],ppf,_C_,x); - case 1: - var x$0=param[1],_bU_=money_to_string(x$0); - return caml_call3(Stdlib_Format[129],ppf,_D_,_bU_); - case 2: - var x$1=param[1],_bV_=integer_to_int(x$1); - return caml_call3(Stdlib_Format[129],ppf,_E_,_bV_); - case 3: - var x$2=param[1],_bW_=decimal_to_string(10,x$2); - return caml_call3(Stdlib_Format[129],ppf,_F_,_bW_); - case 4: - var x$3=param[1],_bX_=date_to_string(x$3); - return caml_call3(Stdlib_Format[129],ppf,_G_,_bX_); - case 5: - var x$4=param[1],_bY_=duration_to_string(x$4); - return caml_call3(Stdlib_Format[129],ppf,_H_,_bY_); - case 6: - var match=param[2],name=match[1]; - return caml_call3(Stdlib_Format[129],ppf,_I_,name); - case 7: - var - attrs=param[2], - name$0=param[1], - _bZ_= - function(fmt,param) - {var value=param[2],name=param[1]; - return caml_call5 - (Stdlib_Format[129],fmt,_J_,name,format_value,value)}, - _b0_= - [0, - function(ppf,param) - {return caml_call2(Stdlib_Format[129],ppf,_K_)}], - _b1_=caml_call2(Stdlib_Format[123],_b0_,_bZ_), - _b2_=caml_call2(Stdlib_String[6],cst$5,name$0); - return caml_call5(Stdlib_Format[129],ppf,_L_,_b2_,_b1_,attrs); - default: - var - elts=param[1], - _b3_=caml_call1(Stdlib_Array[11],elts), - _b4_= - [0, - function(ppf,param) - {return caml_call2(Stdlib_Format[129],ppf,_M_)}], - _b5_=caml_call2(Stdlib_Format[123],_b4_,format_value); - return caml_call4(Stdlib_Format[129],ppf,_N_,_b5_,_b3_)}} - function format_event(ppf,param) - {switch(param[0]) - {case 0: - var var_def_with_fun=param[1]; - return caml_call1(Stdlib_Option[11],var_def_with_fun[4]) - ?caml_call4 - (Stdlib_Format[129], - ppf, - _O_, - format_var_def_with_fun_calls, - var_def_with_fun) - :caml_call4 - (Stdlib_Format[129],ppf,_P_,format_var_def,var_def_with_fun); - case 1: - var - match=param[1], - output=match[4], - body=match[3], - input=match[2], - fun_name=match[1], - _bM_=function(_bQ_,_bR_){return pp_events(_Q_,_bQ_,_bR_)}, - _bN_=caml_call2(Stdlib_String[6],cst$6,fun_name); - return caml_call9 - (Stdlib_Format[129], - ppf, - _R_, - _bN_, - format_var_def, - input, - format_var_def_with_fun_calls, - output, - _bM_, - body); - default: - var - body$0=param[3], - inputs=param[2], - name=param[1], - _bO_=function(_bS_,_bT_){return pp_events(_S_,_bS_,_bT_)}, - _bP_=caml_call2(Stdlib_String[6],cst$7,name); - return caml_call7 - (Stdlib_Format[129], - ppf, - _T_, - _bP_, - format_var_defs, - inputs, - _bO_, - body$0)}} - var - _bI_= - [0,function(ppf,param){return caml_call2(Stdlib_Format[129],ppf,_U_)}], - _bJ_=caml_call2(Stdlib_Format[123],_bI_,format_event), - _bK_=is_first_call?_V_:_X_, - _bL_=caml_call2(Stdlib[98],_W_,_bK_); - return caml_call4(Stdlib_Format[129],ppf,_bL_,_bJ_,events)} - var - StringMap=caml_call1(Stdlib_Map[1],[0,Stdlib_String[9]]), - empty=StringMap[1], - empty_ctx=[0,empty,0,0], - _Y_=0; - function raw_event_to_string(param) - {switch(param[0]) - {case 0: - var - name=param[1], - _bz_=caml_call2(Stdlib_String[6],cst$9,name), - _bA_=caml_call2(Stdlib[28],_bz_,cst$8), - _bB_=caml_call1(Stdlib_Printf[4],_Z_); - return caml_call2(Stdlib[28],_bB_,_bA_); - case 1: - var - name$0=param[1], - _bC_=caml_call2(Stdlib_String[6],cst$11,name$0), - _bD_=caml_call2(Stdlib[28],_bC_,cst$10), - _bE_=caml_call1(Stdlib_Printf[4],___); - return caml_call2(Stdlib[28],_bE_,_bD_); - case 2: - var - value=param[2], - name$1=param[1], - _bF_=yojson_of_runtime_value(value), - _bG_=caml_call4(Yojson[11][5],0,0,0,_bF_), - _bH_=caml_call2(Stdlib_String[6],cst$12,name$1); - return caml_call3(Stdlib_Printf[4],_$_,_bH_,_bG_); - default: - var pos=param[1]; - return caml_call6 - (Stdlib_Printf[4],_aa_,pos[1],pos[2],pos[3],pos[4],pos[5])}} - function parse_raw_events(raw_events) - {var nb_raw_events=caml_call1(Stdlib_List[1],raw_events); - function is_function_call(infos) - {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) - {if(events) - {var _bv_=events[1]; - if(2 === _bv_[0]) - {var _bw_=events[2]; - if(_bw_) - {var _bx_=_bw_[1]; - if(0 === _bx_[0]) - {var rest=_bw_[2],infos=_bx_[1],value=_bv_[2],name=_bv_[1]; - if(is_function_call(infos)) - {var - _bt_=3 === caml_call1(Stdlib_List[1],name)?1:0, - _bu_= - _bt_ - ?caml_string_equal - (cst_input$0,caml_call2(Stdlib_List[7],name,2)) - :_bt_; - if(_bu_) - {var - 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), - _by_=caml_call1(Stdlib_List[6],body_rev), - body=caml_call1(Stdlib_List[9],_by_), - 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,[0,0,name,value,0],body,output$0]]}}}}}} - return caml_call1(Stdlib[2],cst_Invalid_start_of_function_)} - function parse_events(ctx) - {var ctx$0=ctx; - a: - for(;;) - {var _aU_=ctx$0[3]; - if(_aU_) - {var _aV_=_aU_[1]; - switch(_aV_[0]) - {case 0: - var rest=_aU_[2],infos=_aV_[1]; - if(3 === caml_call1(Stdlib_List[1],infos)) - {if(infos) - {var _aW_=infos[2]; - if(_aW_) - {var _aX_=_aW_[2]; - if(_aX_ && ! _aX_[2]) - {var - var_name=_aW_[1], - body_ctx=parse_events([0,empty,_Y_,rest]), - match$0=caml_call2(StringMap[29],var_name,ctx$0[1]); - if(match$0) - var ls$0=match$0[1],inputs=ls$0; - else - var inputs=0; - var - ctx$1= - [0, - ctx$0[1], - [0,[2,infos,inputs,body_ctx[2]],ctx$0[2]], - body_ctx[3]], - ctx$0=ctx$1; - continue}}} - return caml_call1(Stdlib[2],cst_unreachable_due_to_the_is_)} - break; - case 1: - var rest$0=_aU_[2],_a0_=caml_call1(Stdlib_List[9],ctx$0[2]); - return [0,ctx$0[1],_a0_,rest$0]; - case 2: - var rest$1=_aU_[2],name=_aV_[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 _a1_=rest$1[1]; - if(0 === _a1_[0]) - {var infos$0=_a1_[1]; - if(is_function_call(infos$0)) - {var - match$1=parse_fun_call(ctx$0[3]), - fun_call=match$1[2], - rest$2=match$1[1], - ctx$3=[0,ctx$0[1],[0,[1,fun_call],ctx$0[2]],rest$2], - ctx$0=ctx$3; - continue}}} - break; - default: - var _a2_=_aU_[2]; - if(_a2_) - {var _a3_=_a2_[1]; - if(2 === _a3_[0]) - {var - rest$3=_a2_[2], - value=_a3_[2], - name$0=_a3_[1], - pos=_aV_[1], - _aS_=2 === caml_call1(Stdlib_List[1],name$0)?1:0; - if(_aS_) - var - _aT_=caml_call2(Stdlib_List[7],name$0,1), - _a4_=caml_call2(Stdlib_String[14],_aT_,46); - else - var _a4_=_aS_; - if(_a4_) - {if(name$0) - {var _a5_=name$0[2]; - if(_a5_ && ! _a5_[2]) - {var - var_dot_subscope_var_name=_a5_[1], - _a6_= - caml_call2(Stdlib_String[16],46,var_dot_subscope_var_name), - name$1=caml_call2(Stdlib_List[7],_a6_,0), - _a8_=ctx$0[1], - v=[0,[0,pos],name$0,value,0], - _a7_=ctx$0[2], - match=caml_call2(StringMap[29],name$1,_a8_); - if(match) - var - ls=match[1], - _bs_=caml_call3(StringMap[4],name$1,[0,v,ls],_a8_); - else - var _bs_=caml_call3(StringMap[4],name$1,[0,v,0],_a8_); - var ctx$4=[0,_bs_,_a7_,rest$3],ctx$0=ctx$4; - continue}} - return caml_call1 - (Stdlib[2],cst_unreachable_due_to_the_is_$0)} - var switch$0=0; - if(is_var_def(name$0)) - switch$0 = 1; - else - {var - _aQ_=3 === caml_call1(Stdlib_List[1],name$0)?1:0, - _aR_= - _aQ_ - ?caml_string_equal - (cst_output$0,caml_call2(Stdlib_List[7],name$0,2)) - :_aQ_; - if(_aR_) - switch$0 = 1; - else - if(rest$3) - {var _a9_=rest$3[1]; - if(0 === _a9_[0]) - {var infos$1=_a9_[1]; - if(is_function_call(infos$1)) - {var - raw_events$0=caml_call1(Stdlib_List[6],ctx$0[3]), - fun_calls=0, - rest$4=raw_events$0; - for(;;) - {if(rest$4 && 2 === rest$4[1][0]) - {var _a__=rest$4[2]; - if(_a__) - {var _a$_=_a__[1]; - if(0 === _a$_[0]) - {var infos$2=_a$_[1]; - if(is_function_call(infos$2)) - {var - match$2=parse_fun_call(rest$4), - fun_call$0=match$2[2], - raw_events=match$2[1], - fun_calls$1=[0,fun_call$0,fun_calls], - fun_calls=fun_calls$1, - rest$4=raw_events; - continue}}}} - var fun_calls$0=caml_call1(Stdlib_List[9],fun_calls); - if(rest$4) - {var _ba_=rest$4[1]; - if(2 === _ba_[0]) - var - rest$6=rest$4[2], - value$0=_ba_[2], - name$2=_ba_[1], - var_comp=[0,[0,[0,pos],name$2,value$0,[0,fun_calls$0]]], - rest$5=rest$6; - else - var - _bb_= - (nb_raw_events - caml_call1(Stdlib_List[1],rest$4) | 0) - + - 1 - | - 0, - _bc_=caml_call1(Stdlib[33],_bb_), - _bd_=caml_call2(Stdlib[28],_bc_,cst$13), - _be_=caml_call2(Stdlib[28],cst$14,_bd_), - _bf_=raw_event_to_string(_ba_), - _bg_=caml_call2(Stdlib[28],_bf_,_be_), - _bh_= - caml_call2(Stdlib[28],cst_expected_variable_definiti,_bg_), - _bi_=caml_call2(Stdlib_String[6],cst$15,infos$1), - _bj_=caml_call2(Stdlib[28],_bi_,_bh_), - _bk_=caml_call2(Stdlib[28],cst_Invalid_function_call,_bj_), - _bl_=caml_call1(Stdlib[2],_bk_), - var_comp=_bl_[2], - rest$5=_bl_[1]} - else - var - _bm_=caml_call2(Stdlib_String[6],cst$16,infos$1), - _bn_= - caml_call2(Stdlib[28],_bm_,cst_expected_variable_definiti$0), - _bo_=caml_call2(Stdlib[28],cst_Invalid_function_call$0,_bn_), - _bp_=caml_call1(Stdlib[2],_bo_), - var_comp=_bp_[2], - rest$5=_bp_[1]; - var - ctx$6=[0,ctx$0[1],[0,var_comp,ctx$0[2]],rest$5], - ctx$0=ctx$6; - continue a}}}}} - if(switch$0) - {var - ctx$5= - [0, - ctx$0[1], - [0,[0,[0,[0,pos],name$0,value,0]],ctx$0[2]], - rest$3], - ctx$0=ctx$5; - continue}}}} - var - _aY_=raw_event_to_string(_aV_), - _aZ_=caml_call2(Stdlib[28],cst_Unexpected_event,_aY_); - return caml_call1(Stdlib[2],_aZ_)} - var _bq_=ctx$0[3],_br_=caml_call1(Stdlib_List[9],ctx$0[2]); - return [0,ctx$0[1],_br_,_bq_]}} - try - {var _aP_=parse_events([0,empty,_Y_,raw_events]),ctx=_aP_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] !== Stdlib[7])throw exn; - var msg=exn[2]; - caml_call2(Stdlib_Printf[3],_ab_,msg); - var ctx=empty_ctx} - return ctx[2]} - function handle_default(pos,exceptions,just,cons) - {var _aL_=0; - function _aM_(acc,except) - {try - {var _aN_=[0,caml_call1(except,0)],new_val=_aN_} - catch(_aO_) - {_aO_ = caml_wrap_exception(_aO_); - if(_aO_ !== EmptyError)throw _aO_; - var new_val=0} - if(acc){if(new_val)throw [0,ConflictError,pos];return acc} - return new_val} - var except=caml_call3(Stdlib_Array[17],_aM_,_aL_,exceptions); - if(except){var x=except[1];return x} - if(caml_call1(just,0))return caml_call1(cons,0); - throw EmptyError} - function handle_default_opt(pos,exceptions,just,cons) - {function _aK_(acc,except) - {if(0 === acc[0])return except; - if(0 === except[0])return acc; - throw [0,ConflictError,pos]} - var except=caml_call3(Stdlib_Array[17],_aK_,_ac_,exceptions); - if(0 === except[0]) - {if(0 === just[0])return _ad_;var b=just[1];return b?cons:_ae_} - return except} - function no_input(param){throw EmptyError} - function compare_periods(p1,p2) - {try - {var - p1_days=caml_call1(Dates_calc_Dates[18],p1), - p2_days=caml_call1(Dates_calc_Dates[18],p2), - _aI_=runtime.caml_int_compare(p1_days,p2_days); - return _aI_} - catch(_aJ_) - {_aJ_ = caml_wrap_exception(_aJ_); - if(_aJ_ === Dates_calc_Dates[2])throw UncomparableDurations; - throw _aJ_}} - function equal_periods(p1,p2) - {try - {var - _aF_=caml_call2(Dates_calc_Dates[15],p1,p2), - _aG_=0 === caml_call1(Dates_calc_Dates[18],_aF_)?1:0; - return _aG_} - catch(_aH_) - {_aH_ = caml_wrap_exception(_aH_); - if(_aH_ === Dates_calc_Dates[2])throw UncomparableDurations; - throw _aH_}} - function o_not(_aE_){return 1 - _aE_} - function o_length(a){return a.length - 1} - function o_minus_int(i1){return caml_call2(Z[13],Z[2],i1)} - function o_minus_rat(i1){return caml_call2(Q[39],Q[2],i1)} - function o_minus_mon(m1){return caml_call2(Z[13],Z[2],m1)} - var o_minus_dur=Dates_calc_Dates[13]; - function o_and(_aC_,_aB_){var _aD_=_aC_?_aB_:_aC_;return _aD_} - function o_or(_az_,_ay_){var _aA_=_az_ || _ay_;return _aA_} - function o_xor(_ax_,_aw_){return _ax_ !== _aw_?1:0} - var o_eq=caml_equal,o_map=Stdlib_Array[15]; - function o_reduce(f,dft,a) - {var len=a.length - 1; - if(0 === len)return dft; - var r=[0,caml_check_bound(a,0)[1]],_at_=len - 1 | 0,_as_=1; - if(! (_at_ < 1)) - {var i=_as_; - for(;;) - {var _au_=caml_check_bound(a,i)[1 + i]; - r[1] = caml_call2(f,r[1],_au_); - var _av_=i + 1 | 0; - if(_at_ !== i){var i=_av_;continue} - break}} - return r[1]} - var o_concat=Stdlib_Array[5]; - function o_filter(f,a) - {var - _aq_=caml_call1(Stdlib_Array[11],a), - _ar_=caml_call2(Stdlib_List[41],f,_aq_); - return caml_call1(Stdlib_Array[12],_ar_)} - function o_add_int_int(i1,i2){return caml_call2(Z[12],i1,i2)} - function o_add_rat_rat(i1,i2){return caml_call2(Q[38],i1,i2)} - function o_add_mon_mon(m1,m2){return caml_call2(Z[12],m1,m2)} - function o_add_dat_dur(da,du) - {return caml_call3(Dates_calc_Dates[4],0,da,du)} - var o_add_dur_dur=Dates_calc_Dates[14]; - function o_sub_int_int(i1,i2){return caml_call2(Z[13],i1,i2)} - function o_sub_rat_rat(i1,i2){return caml_call2(Q[39],i1,i2)} - function o_sub_mon_mon(m1,m2){return caml_call2(Z[13],m1,m2)} - var o_sub_dat_dat=Dates_calc_Dates[5]; - function o_sub_dat_dur(dat,dur) - {var _ap_=caml_call1(Dates_calc_Dates[13],dur); - return caml_call3(Dates_calc_Dates[4],0,dat,_ap_)} - var o_sub_dur_dur=Dates_calc_Dates[15]; - function o_mult_int_int(i1,i2){return caml_call2(Z[14],i1,i2)} - function o_mult_rat_rat(i1,i2){return caml_call2(Q[40],i1,i2)} - function o_mult_mon_rat(i1,i2) - {var - i1_abs=caml_call1(Z[10],i1), - i2_abs=caml_call1(Q[37],i2), - _ak_=caml_call1(Q[20],i2), - sign_int=runtime.caml_mul(runtime.ml_z_sign(i1),_ak_), - _al_=caml_call1(Q[8],i1_abs), - rat_result=caml_call2(Q[40],_al_,i2_abs), - _am_=caml_call1(Q[17],rat_result), - match=runtime.ml_z_div_rem(caml_call1(Q[16],rat_result),_am_), - remainder=match[2], - res=match[1], - _an_=caml_call1(Q[17],rat_result); - if(runtime.caml_greaterequal(caml_call2(Z[54],2,remainder),_an_)) - {var _ao_=caml_call2(Z[12],res,1); - return caml_call2(Z[54],_ao_,sign_int)} - return caml_call2(Z[54],res,sign_int)} - function o_mult_dur_int(d,m) - {var _aj_=caml_call1(Z[29],m); - return caml_call2(Dates_calc_Dates[16],d,_aj_)} - function o_div_int_int(i1,i2) - {if(caml_equal(Z[2],i2))throw Stdlib[13]; - var _ah_=caml_call1(Q[8],i2),_ai_=caml_call1(Q[8],i1); - return caml_call2(Q[42],_ai_,_ah_)} - function o_div_rat_rat(i1,i2) - {if(caml_equal(Q[2],i2))throw Stdlib[13];return caml_call2(Q[42],i1,i2)} - function o_div_mon_mon(m1,m2) - {if(caml_equal(Z[2],m2))throw Stdlib[13]; - var _af_=caml_call1(Q[8],m2),_ag_=caml_call1(Q[8],m1); - return caml_call2(Q[42],_ag_,_af_)} - function o_div_mon_rat(m1,r1) - {if(caml_equal(Q[2],r1))throw Stdlib[13]; - return o_mult_mon_rat(m1,caml_call1(Q[41],r1))} - function o_lt_int_int(i1,i2){return runtime.ml_z_compare(i1,i2) < 0?1:0} - function o_lt_rat_rat(i1,i2){return caml_call2(Q[21],i1,i2) < 0?1:0} - function o_lt_mon_mon(m1,m2){return runtime.ml_z_compare(m1,m2) < 0?1:0} - function o_lt_dur_dur(d1,d2){return compare_periods(d1,d2) < 0?1:0} - function o_lt_dat_dat(d1,d2) - {return caml_call2(Dates_calc_Dates[6],d1,d2) < 0?1:0} - function o_lte_int_int(i1,i2){return runtime.ml_z_compare(i1,i2) <= 0?1:0} - function o_lte_rat_rat(i1,i2){return caml_call2(Q[21],i1,i2) <= 0?1:0} - function o_lte_mon_mon(m1,m2){return runtime.ml_z_compare(m1,m2) <= 0?1:0} - function o_lte_dur_dur(d1,d2){return compare_periods(d1,d2) <= 0?1:0} - function o_lte_dat_dat(d1,d2) - {return caml_call2(Dates_calc_Dates[6],d1,d2) <= 0?1:0} - function o_gt_int_int(i1,i2){return 0 < runtime.ml_z_compare(i1,i2)?1:0} - function o_gt_rat_rat(i1,i2){return 0 < caml_call2(Q[21],i1,i2)?1:0} - function o_gt_mon_mon(m1,m2){return 0 < runtime.ml_z_compare(m1,m2)?1:0} - function o_gt_dur_dur(d1,d2){return 0 < compare_periods(d1,d2)?1:0} - function o_gt_dat_dat(d1,d2) - {return 0 < caml_call2(Dates_calc_Dates[6],d1,d2)?1:0} - function o_gte_int_int(i1,i2){return 0 <= runtime.ml_z_compare(i1,i2)?1:0} - function o_gte_rat_rat(i1,i2){return 0 <= caml_call2(Q[21],i1,i2)?1:0} - function o_gte_mon_mon(m1,m2){return 0 <= runtime.ml_z_compare(m1,m2)?1:0} - function o_gte_dur_dur(d1,d2){return 0 <= compare_periods(d1,d2)?1:0} - function o_gte_dat_dat(d1,d2) - {return 0 <= caml_call2(Dates_calc_Dates[6],d1,d2)?1:0} - function o_eq_int_int(i1,i2){return runtime.ml_z_equal(i1,i2)} - function o_eq_rat_rat(i1,i2){return caml_call2(Q[22],i1,i2)} - function o_eq_mon_mon(m1,m2){return runtime.ml_z_equal(m1,m2)} - function o_eq_dur_dur(d1,d2){return equal_periods(d1,d2)} - function o_eq_dat_dat(d1,d2) - {return 0 === caml_call2(Dates_calc_Dates[6],d1,d2)?1:0} - var - o_fold=Stdlib_Array[17], - Oper= - [0, - o_not, - o_length, - decimal_of_integer, - decimal_of_money, - money_of_decimal, - day_of_month_of_date, - month_number_of_date, - year_of_date, - first_day_of_month, - last_day_of_month, - money_round, - decimal_round, - o_minus_int, - o_minus_rat, - o_minus_mon, - o_minus_dur, - o_and, - o_or, - o_xor, - o_eq, - o_map, - o_reduce, - o_concat, - o_filter, - o_add_int_int, - o_add_rat_rat, - o_add_mon_mon, - o_add_dat_dur, - o_add_dur_dur, - o_sub_int_int, - o_sub_rat_rat, - o_sub_mon_mon, - o_sub_dat_dat, - o_sub_dat_dur, - o_sub_dur_dur, - o_mult_int_int, - o_mult_rat_rat, - o_mult_mon_rat, - o_mult_dur_int, - o_div_int_int, - o_div_rat_rat, - o_div_mon_mon, - o_div_mon_rat, - o_lt_int_int, - o_lt_rat_rat, - o_lt_mon_mon, - o_lt_dur_dur, - o_lt_dat_dat, - o_lte_int_int, - o_lte_rat_rat, - o_lte_mon_mon, - o_lte_dur_dur, - o_lte_dat_dat, - o_gt_int_int, - o_gt_rat_rat, - o_gt_mon_mon, - o_gt_dur_dur, - o_gt_dat_dat, - o_gte_int_int, - o_gte_rat_rat, - o_gte_mon_mon, - o_gte_dur_dur, - o_gte_dat_dat, - o_eq_int_int, - o_eq_rat_rat, - o_eq_mon_mon, - o_eq_dur_dur, - o_eq_dat_dat, - o_fold], - o_not$0=Oper[1], - o_length$0=Oper[2], - o_torat_int=Oper[3], - o_torat_mon=Oper[4], - o_tomoney_rat=Oper[5], - o_getDay=Oper[6], - o_getMonth=Oper[7], - o_getYear=Oper[8], - o_firstDayOfMonth=Oper[9], - o_lastDayOfMonth=Oper[10], - o_round_mon=Oper[11], - o_round_rat=Oper[12], - o_minus_int$0=Oper[13], - o_minus_rat$0=Oper[14], - o_minus_mon$0=Oper[15], - o_minus_dur$0=Oper[16], - o_and$0=Oper[17], - o_or$0=Oper[18], - o_xor$0=Oper[19], - o_eq$0=Oper[20], - o_map$0=Oper[21], - o_reduce$0=Oper[22], - o_concat$0=Oper[23], - o_filter$0=Oper[24], - o_add_int_int$0=Oper[25], - o_add_rat_rat$0=Oper[26], - o_add_mon_mon$0=Oper[27], - o_add_dat_dur$0=Oper[28], - o_add_dur_dur$0=Oper[29], - o_sub_int_int$0=Oper[30], - o_sub_rat_rat$0=Oper[31], - o_sub_mon_mon$0=Oper[32], - o_sub_dat_dat$0=Oper[33], - o_sub_dat_dur$0=Oper[34], - o_sub_dur_dur$0=Oper[35], - o_mult_int_int$0=Oper[36], - o_mult_rat_rat$0=Oper[37], - o_mult_mon_rat$0=Oper[38], - o_mult_dur_int$0=Oper[39], - o_div_int_int$0=Oper[40], - o_div_rat_rat$0=Oper[41], - o_div_mon_mon$0=Oper[42], - o_div_mon_rat$0=Oper[43], - o_lt_int_int$0=Oper[44], - o_lt_rat_rat$0=Oper[45], - o_lt_mon_mon$0=Oper[46], - o_lt_dur_dur$0=Oper[47], - o_lt_dat_dat$0=Oper[48], - o_lte_int_int$0=Oper[49], - o_lte_rat_rat$0=Oper[50], - o_lte_mon_mon$0=Oper[51], - o_lte_dur_dur$0=Oper[52], - o_lte_dat_dat$0=Oper[53], - o_gt_int_int$0=Oper[54], - o_gt_rat_rat$0=Oper[55], - o_gt_mon_mon$0=Oper[56], - o_gt_dur_dur$0=Oper[57], - o_gt_dat_dat$0=Oper[58], - o_gte_int_int$0=Oper[59], - o_gte_rat_rat$0=Oper[60], - o_gte_mon_mon$0=Oper[61], - o_gte_dur_dur$0=Oper[62], - o_gte_dat_dat$0=Oper[63], - o_eq_int_int$0=Oper[64], - o_eq_rat_rat$0=Oper[65], - o_eq_mon_mon$0=Oper[66], - o_eq_dur_dur$0=Oper[67], - o_eq_dat_dat$0=Oper[68], - o_fold$0=Oper[69], - Runtime_ocaml_Runtime= - [0, - yojson_of_source_position, - EmptyError, - AssertionFailed, - ConflictError, - UncomparableDurations, - IndivisableDurations, - ImpossibleDate, - NoValueProvided, - yojson_of_runtime_value, - unembeddable, - embed_unit, - embed_bool, - embed_money, - embed_integer, - embed_decimal, - embed_date, - embed_duration, - embed_array, - yojson_of_information, - yojson_of_event, - yojson_of_var_def, - yojson_of_fun_call, - retrieve_log, - [0,parse_raw_events], - reset_log, - log_begin_call, - log_end_call, - log_variable_definition, - log_decision_taken, - pp_events, - money_of_cents_string, - money_of_units_int, - money_of_decimal, - money_of_cents_integer, - money_to_float, - money_to_string, - money_to_cents, - money_round, - decimal_of_string, - decimal_to_string, - decimal_of_integer, - decimal_of_float, - decimal_to_float, - decimal_round, - decimal_of_money, - integer_of_string, - integer_to_string, - integer_to_int, - integer_of_int, - integer_log2, - integer_exponentiation, - day_of_month_of_date, - month_number_of_date, - is_leap_year, - year_of_date, - date_to_string, - date_of_numbers, - first_day_of_month, - last_day_of_month, - duration_of_numbers, - duration_to_years_months_days, - duration_to_string, - handle_default, - handle_default_opt, - no_input, - Oper, - o_not$0, - o_length$0, - o_torat_int, - o_torat_mon, - o_tomoney_rat, - o_getDay, - o_getMonth, - o_getYear, - o_firstDayOfMonth, - o_lastDayOfMonth, - o_round_mon, - o_round_rat, - o_minus_int$0, - o_minus_rat$0, - o_minus_mon$0, - o_minus_dur$0, - o_and$0, - o_or$0, - o_xor$0, - o_eq$0, - o_map$0, - o_reduce$0, - o_concat$0, - o_filter$0, - o_add_int_int$0, - o_add_rat_rat$0, - o_add_mon_mon$0, - o_add_dat_dur$0, - o_add_dur_dur$0, - o_sub_int_int$0, - o_sub_rat_rat$0, - o_sub_mon_mon$0, - o_sub_dat_dat$0, - o_sub_dat_dur$0, - o_sub_dur_dur$0, - o_mult_int_int$0, - o_mult_rat_rat$0, - o_mult_mon_rat$0, - o_mult_dur_int$0, - o_div_int_int$0, - o_div_rat_rat$0, - o_div_mon_mon$0, - o_div_mon_rat$0, - o_lt_int_int$0, - o_lt_rat_rat$0, - o_lt_mon_mon$0, - o_lt_dur_dur$0, - o_lt_dat_dat$0, - o_lte_int_int$0, - o_lte_rat_rat$0, - o_lte_mon_mon$0, - o_lte_dur_dur$0, - o_lte_dat_dat$0, - o_gt_int_int$0, - o_gt_rat_rat$0, - o_gt_mon_mon$0, - o_gt_dur_dur$0, - o_gt_dat_dat$0, - o_gte_int_int$0, - o_gte_rat_rat$0, - o_gte_mon_mon$0, - o_gte_dur_dur$0, - o_gte_dat_dat$0, - o_eq_int_int$0, - o_eq_rat_rat$0, - o_eq_mon_mon$0, - o_eq_dur_dur$0, - o_eq_dat_dat$0, - o_fold$0]; - caml_register_global(126,Runtime_ocaml_Runtime,"Runtime_ocaml__Runtime"); - return} - (globalThis)); - - -//# 1 "../../.js/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_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(), - 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, - Js=[0], - Sys=[0], - 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} - var - Error= - [0, - raise, - caml_exn_with_js_backtrace, - runtime.caml_js_error_option_of_exception, - Exn], - For_compatibility_only=[0], - 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"); - return} - (globalThis)); - - -//# 1 "../../.js/js_of_ocaml/js_of_ocaml.cma.js" -(function(globalThis) - {"use strict"; - var - jsoo_exports=typeof module === "object" && module.exports || globalThis, - runtime=globalThis.jsoo_runtime, - caml_float_of_string=runtime.caml_float_of_string, - caml_fresh_oo_id=runtime.caml_fresh_oo_id, - caml_int_of_string=runtime.caml_int_of_string, - caml_js_from_array=runtime.caml_js_from_array, - caml_js_get=runtime.caml_js_get, - caml_js_html_escape=runtime.caml_js_html_escape, - caml_js_set=runtime.caml_js_set, - caml_js_wrap_callback=runtime.caml_js_wrap_callback, - caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback, - caml_jsbytes_of_string=runtime.caml_jsbytes_of_string, - caml_jsstring_of_string=runtime.caml_jsstring_of_string, - caml_list_of_js_array=runtime.caml_list_of_js_array, - caml_ml_string_length=runtime.caml_ml_string_length, - caml_register_global=runtime.caml_register_global, - caml_string_compare=runtime.caml_string_compare, - caml_string_notequal=runtime.caml_string_notequal, - caml_string_of_array=runtime.caml_string_of_array, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_string_of_jsstring=runtime.caml_string_of_jsstring, - 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_parseFloat=caml_string_of_jsbytes("parseFloat"), - cst_parseInt=caml_string_of_jsbytes("parseInt"), - cst_can_t_retrieve_file_name_n= - caml_string_of_jsbytes("can't retrieve file name: not implemented"), - cst_endings=caml_string_of_jsbytes("endings"), - cst_type=caml_string_of_jsbytes("type"), - cst_loadstart=caml_string_of_jsbytes("loadstart"), - cst_progress=caml_string_of_jsbytes("progress"), - cst_abort=caml_string_of_jsbytes("abort"), - cst_error=caml_string_of_jsbytes("error"), - cst_load=caml_string_of_jsbytes("load"), - cst_loadend=caml_string_of_jsbytes("loadend"), - cst_a$1=caml_string_of_jsbytes("a"), - cst_area$1=caml_string_of_jsbytes("area"), - cst_audio$1=caml_string_of_jsbytes("audio"), - cst_base$1=caml_string_of_jsbytes("base"), - cst_blockquote$1=caml_string_of_jsbytes("blockquote"), - cst_body$1=caml_string_of_jsbytes("body"), - cst_br$1=caml_string_of_jsbytes("br"), - cst_button$1=caml_string_of_jsbytes("button"), - cst_canvas$1=caml_string_of_jsbytes("canvas"), - cst_caption$1=caml_string_of_jsbytes("caption"), - cst_col$1=caml_string_of_jsbytes("col"), - cst_colgroup$1=caml_string_of_jsbytes("colgroup"), - cst_del$1=caml_string_of_jsbytes("del"), - cst_div$1=caml_string_of_jsbytes("div"), - cst_dl$1=caml_string_of_jsbytes("dl"), - cst_embed$1=caml_string_of_jsbytes("embed"), - cst_fieldset$1=caml_string_of_jsbytes("fieldset"), - cst_form$1=caml_string_of_jsbytes("form"), - cst_frame$1=caml_string_of_jsbytes("frame"), - cst_frameset$1=caml_string_of_jsbytes("frameset"), - cst_h1$1=caml_string_of_jsbytes("h1"), - cst_h2$1=caml_string_of_jsbytes("h2"), - cst_h3$1=caml_string_of_jsbytes("h3"), - cst_h4$1=caml_string_of_jsbytes("h4"), - cst_h5$1=caml_string_of_jsbytes("h5"), - cst_h6$1=caml_string_of_jsbytes("h6"), - cst_head$1=caml_string_of_jsbytes("head"), - cst_hr$1=caml_string_of_jsbytes("hr"), - cst_html$1=caml_string_of_jsbytes("html"), - cst_iframe$1=caml_string_of_jsbytes("iframe"), - cst_img$1=caml_string_of_jsbytes("img"), - cst_input$2=caml_string_of_jsbytes("input"), - cst_ins$1=caml_string_of_jsbytes("ins"), - cst_label$1=caml_string_of_jsbytes("label"), - cst_legend$1=caml_string_of_jsbytes("legend"), - cst_li$1=caml_string_of_jsbytes("li"), - cst_link$1=caml_string_of_jsbytes("link"), - cst_map$1=caml_string_of_jsbytes("map"), - cst_meta$1=caml_string_of_jsbytes("meta"), - cst_object$1=caml_string_of_jsbytes("object"), - cst_ol$1=caml_string_of_jsbytes("ol"), - cst_optgroup$1=caml_string_of_jsbytes("optgroup"), - cst_option$1=caml_string_of_jsbytes("option"), - cst_p$1=caml_string_of_jsbytes("p"), - cst_param$1=caml_string_of_jsbytes("param"), - cst_pre$1=caml_string_of_jsbytes("pre"), - cst_q$1=caml_string_of_jsbytes("q"), - cst_script$1=caml_string_of_jsbytes("script"), - cst_select$2=caml_string_of_jsbytes("select"), - cst_style$1=caml_string_of_jsbytes("style"), - cst_table$1=caml_string_of_jsbytes("table"), - cst_tbody$1=caml_string_of_jsbytes("tbody"), - cst_td$1=caml_string_of_jsbytes("td"), - cst_textarea$1=caml_string_of_jsbytes("textarea"), - cst_tfoot$1=caml_string_of_jsbytes("tfoot"), - cst_th$1=caml_string_of_jsbytes("th"), - cst_thead$1=caml_string_of_jsbytes("thead"), - cst_title$1=caml_string_of_jsbytes("title"), - cst_tr$1=caml_string_of_jsbytes("tr"), - cst_ul$1=caml_string_of_jsbytes("ul"), - cst_video$1=caml_string_of_jsbytes("video"), - cst_KeyH=caml_string_of_jsbytes("KeyH"), - cst_Digit6=caml_string_of_jsbytes("Digit6"), - cst_BrowserRefresh=caml_string_of_jsbytes("BrowserRefresh"), - cst_Backslash=caml_string_of_jsbytes("Backslash"), - cst_AltLeft=caml_string_of_jsbytes("AltLeft"), - cst_AltRight=caml_string_of_jsbytes("AltRight"), - cst_ArrowDown=caml_string_of_jsbytes("ArrowDown"), - cst_ArrowLeft=caml_string_of_jsbytes("ArrowLeft"), - cst_ArrowRight=caml_string_of_jsbytes("ArrowRight"), - cst_ArrowUp=caml_string_of_jsbytes("ArrowUp"), - cst_Backquote=caml_string_of_jsbytes("Backquote"), - cst_Backspace=caml_string_of_jsbytes("Backspace"), - cst_BracketLeft=caml_string_of_jsbytes("BracketLeft"), - cst_BracketRight=caml_string_of_jsbytes("BracketRight"), - cst_BrowserBack=caml_string_of_jsbytes("BrowserBack"), - cst_BrowserFavorites=caml_string_of_jsbytes("BrowserFavorites"), - cst_BrowserForward=caml_string_of_jsbytes("BrowserForward"), - cst_BrowserHome=caml_string_of_jsbytes("BrowserHome"), - cst_Delete=caml_string_of_jsbytes("Delete"), - cst_BrowserSearch=caml_string_of_jsbytes("BrowserSearch"), - cst_BrowserStop=caml_string_of_jsbytes("BrowserStop"), - cst_CapsLock=caml_string_of_jsbytes("CapsLock"), - cst_Comma=caml_string_of_jsbytes("Comma"), - cst_ContextMenu=caml_string_of_jsbytes("ContextMenu"), - cst_ControlLeft=caml_string_of_jsbytes("ControlLeft"), - cst_ControlRight=caml_string_of_jsbytes("ControlRight"), - cst_Digit0=caml_string_of_jsbytes("Digit0"), - cst_Digit1=caml_string_of_jsbytes("Digit1"), - cst_Digit2=caml_string_of_jsbytes("Digit2"), - cst_Digit3=caml_string_of_jsbytes("Digit3"), - cst_Digit4=caml_string_of_jsbytes("Digit4"), - cst_Digit5=caml_string_of_jsbytes("Digit5"), - cst_F6=caml_string_of_jsbytes("F6"), - cst_F1=caml_string_of_jsbytes("F1"), - cst_Digit7=caml_string_of_jsbytes("Digit7"), - cst_Digit8=caml_string_of_jsbytes("Digit8"), - cst_Digit9=caml_string_of_jsbytes("Digit9"), - cst_End=caml_string_of_jsbytes("End"), - cst_Enter=caml_string_of_jsbytes("Enter"), - cst_Equal=caml_string_of_jsbytes("Equal"), - cst_Escape=caml_string_of_jsbytes("Escape"), - cst_F10=caml_string_of_jsbytes("F10"), - cst_F11=caml_string_of_jsbytes("F11"), - cst_F12=caml_string_of_jsbytes("F12"), - cst_F2=caml_string_of_jsbytes("F2"), - cst_F3=caml_string_of_jsbytes("F3"), - cst_F4=caml_string_of_jsbytes("F4"), - cst_F5=caml_string_of_jsbytes("F5"), - cst_KeyA=caml_string_of_jsbytes("KeyA"), - cst_F7=caml_string_of_jsbytes("F7"), - cst_F8=caml_string_of_jsbytes("F8"), - cst_F9=caml_string_of_jsbytes("F9"), - cst_Home=caml_string_of_jsbytes("Home"), - cst_Insert=caml_string_of_jsbytes("Insert"), - cst_IntlBackslash=caml_string_of_jsbytes("IntlBackslash"), - cst_IntlYen=caml_string_of_jsbytes("IntlYen"), - cst_KeyB=caml_string_of_jsbytes("KeyB"), - cst_KeyC=caml_string_of_jsbytes("KeyC"), - cst_KeyD=caml_string_of_jsbytes("KeyD"), - cst_KeyE=caml_string_of_jsbytes("KeyE"), - cst_KeyF=caml_string_of_jsbytes("KeyF"), - cst_KeyG=caml_string_of_jsbytes("KeyG"), - cst_Numpad4=caml_string_of_jsbytes("Numpad4"), - cst_KeyX=caml_string_of_jsbytes("KeyX"), - cst_KeyP=caml_string_of_jsbytes("KeyP"), - cst_KeyI=caml_string_of_jsbytes("KeyI"), - cst_KeyJ=caml_string_of_jsbytes("KeyJ"), - cst_KeyK=caml_string_of_jsbytes("KeyK"), - cst_KeyL=caml_string_of_jsbytes("KeyL"), - cst_KeyM=caml_string_of_jsbytes("KeyM"), - cst_KeyN=caml_string_of_jsbytes("KeyN"), - cst_KeyO=caml_string_of_jsbytes("KeyO"), - cst_KeyQ=caml_string_of_jsbytes("KeyQ"), - cst_KeyR=caml_string_of_jsbytes("KeyR"), - cst_KeyS=caml_string_of_jsbytes("KeyS"), - cst_KeyT=caml_string_of_jsbytes("KeyT"), - cst_KeyU=caml_string_of_jsbytes("KeyU"), - cst_KeyV=caml_string_of_jsbytes("KeyV"), - cst_KeyW=caml_string_of_jsbytes("KeyW"), - cst_MetaRight=caml_string_of_jsbytes("MetaRight"), - cst_KeyY=caml_string_of_jsbytes("KeyY"), - cst_KeyZ=caml_string_of_jsbytes("KeyZ"), - cst_MediaPlayPause=caml_string_of_jsbytes("MediaPlayPause"), - cst_MediaStop=caml_string_of_jsbytes("MediaStop"), - cst_MediaTrackNext=caml_string_of_jsbytes("MediaTrackNext"), - cst_MediaTrackPrevious=caml_string_of_jsbytes("MediaTrackPrevious"), - cst_MetaLeft=caml_string_of_jsbytes("MetaLeft"), - cst_Minus=caml_string_of_jsbytes("Minus"), - cst_NumLock=caml_string_of_jsbytes("NumLock"), - cst_Numpad0=caml_string_of_jsbytes("Numpad0"), - cst_Numpad1=caml_string_of_jsbytes("Numpad1"), - cst_Numpad2=caml_string_of_jsbytes("Numpad2"), - cst_Numpad3=caml_string_of_jsbytes("Numpad3"), - cst_PageUp=caml_string_of_jsbytes("PageUp"), - cst_NumpadDivide=caml_string_of_jsbytes("NumpadDivide"), - cst_Numpad5=caml_string_of_jsbytes("Numpad5"), - cst_Numpad6=caml_string_of_jsbytes("Numpad6"), - cst_Numpad7=caml_string_of_jsbytes("Numpad7"), - cst_Numpad8=caml_string_of_jsbytes("Numpad8"), - cst_Numpad9=caml_string_of_jsbytes("Numpad9"), - cst_NumpadAdd=caml_string_of_jsbytes("NumpadAdd"), - cst_NumpadDecimal=caml_string_of_jsbytes("NumpadDecimal"), - cst_NumpadEnter=caml_string_of_jsbytes("NumpadEnter"), - cst_NumpadEqual=caml_string_of_jsbytes("NumpadEqual"), - cst_NumpadMultiply=caml_string_of_jsbytes("NumpadMultiply"), - cst_NumpadSubtract=caml_string_of_jsbytes("NumpadSubtract"), - cst_OSLeft=caml_string_of_jsbytes("OSLeft"), - cst_OSRight=caml_string_of_jsbytes("OSRight"), - cst_PageDown=caml_string_of_jsbytes("PageDown"), - cst_ShiftRight=caml_string_of_jsbytes("ShiftRight"), - cst_Pause=caml_string_of_jsbytes("Pause"), - cst_Period=caml_string_of_jsbytes("Period"), - cst_PrintScreen=caml_string_of_jsbytes("PrintScreen"), - cst_Quote=caml_string_of_jsbytes("Quote"), - cst_ScrollLock=caml_string_of_jsbytes("ScrollLock"), - cst_Semicolon=caml_string_of_jsbytes("Semicolon"), - cst_ShiftLeft=caml_string_of_jsbytes("ShiftLeft"), - cst_Slash=caml_string_of_jsbytes("Slash"), - cst_Space=caml_string_of_jsbytes("Space"), - cst_Tab=caml_string_of_jsbytes("Tab"), - cst_VolumeDown=caml_string_of_jsbytes("VolumeDown"), - cst_VolumeMute=caml_string_of_jsbytes("VolumeMute"), - cst_VolumeUp=caml_string_of_jsbytes("VolumeUp"), - cst_mouseout$0=caml_string_of_jsbytes("mouseout"), - cst_mouseover$0=caml_string_of_jsbytes("mouseover"), - cst_video$0=caml_string_of_jsbytes("video"), - cst_audio$0=caml_string_of_jsbytes("audio"), - cst_ul$0=caml_string_of_jsbytes("ul"), - cst_tr$0=caml_string_of_jsbytes("tr"), - cst_title$0=caml_string_of_jsbytes("title"), - cst_thead$0=caml_string_of_jsbytes("thead"), - cst_th$0=caml_string_of_jsbytes("th"), - cst_tfoot$0=caml_string_of_jsbytes("tfoot"), - cst_textarea$0=caml_string_of_jsbytes("textarea"), - cst_td$0=caml_string_of_jsbytes("td"), - cst_tbody$0=caml_string_of_jsbytes("tbody"), - cst_table$0=caml_string_of_jsbytes("table"), - cst_style$0=caml_string_of_jsbytes("style"), - cst_select$1=caml_string_of_jsbytes("select"), - cst_script$0=caml_string_of_jsbytes("script"), - cst_q$0=caml_string_of_jsbytes("q"), - cst_pre$0=caml_string_of_jsbytes("pre"), - cst_param$0=caml_string_of_jsbytes("param"), - cst_p$0=caml_string_of_jsbytes("p"), - cst_option$0=caml_string_of_jsbytes("option"), - cst_optgroup$0=caml_string_of_jsbytes("optgroup"), - cst_ol$0=caml_string_of_jsbytes("ol"), - cst_object$0=caml_string_of_jsbytes("object"), - cst_meta$0=caml_string_of_jsbytes("meta"), - cst_map$0=caml_string_of_jsbytes("map"), - cst_link$0=caml_string_of_jsbytes("link"), - cst_li$0=caml_string_of_jsbytes("li"), - cst_legend$0=caml_string_of_jsbytes("legend"), - cst_label$0=caml_string_of_jsbytes("label"), - cst_ins$0=caml_string_of_jsbytes("ins"), - cst_input$1=caml_string_of_jsbytes("input"), - cst_img$0=caml_string_of_jsbytes("img"), - cst_iframe$0=caml_string_of_jsbytes("iframe"), - cst_html$0=caml_string_of_jsbytes("html"), - cst_hr$0=caml_string_of_jsbytes("hr"), - cst_head$0=caml_string_of_jsbytes("head"), - cst_h6$0=caml_string_of_jsbytes("h6"), - cst_h5$0=caml_string_of_jsbytes("h5"), - cst_h4$0=caml_string_of_jsbytes("h4"), - cst_h3$0=caml_string_of_jsbytes("h3"), - cst_h2$0=caml_string_of_jsbytes("h2"), - cst_h1$0=caml_string_of_jsbytes("h1"), - cst_frame$0=caml_string_of_jsbytes("frame"), - cst_frameset$0=caml_string_of_jsbytes("frameset"), - cst_form$0=caml_string_of_jsbytes("form"), - cst_embed$0=caml_string_of_jsbytes("embed"), - cst_fieldset$0=caml_string_of_jsbytes("fieldset"), - cst_dl$0=caml_string_of_jsbytes("dl"), - cst_div$0=caml_string_of_jsbytes("div"), - cst_del$0=caml_string_of_jsbytes("del"), - cst_colgroup$0=caml_string_of_jsbytes("colgroup"), - cst_col$0=caml_string_of_jsbytes("col"), - cst_caption$0=caml_string_of_jsbytes("caption"), - cst_canvas$0=caml_string_of_jsbytes("canvas"), - cst_button$0=caml_string_of_jsbytes("button"), - cst_br$0=caml_string_of_jsbytes("br"), - cst_body$0=caml_string_of_jsbytes("body"), - cst_blockquote$0=caml_string_of_jsbytes("blockquote"), - cst_base$0=caml_string_of_jsbytes("base"), - cst_area$0=caml_string_of_jsbytes("area"), - cst_a$0=caml_string_of_jsbytes("a"), - cst_canvas=caml_string_of_jsbytes("canvas"), - cst_video=caml_string_of_jsbytes("video"), - cst_audio=caml_string_of_jsbytes("audio"), - cst_iframe=caml_string_of_jsbytes("iframe"), - cst_frame=caml_string_of_jsbytes("frame"), - cst_frameset=caml_string_of_jsbytes("frameset"), - cst_address=caml_string_of_jsbytes("address"), - cst_noscript=caml_string_of_jsbytes("noscript"), - cst_dt=caml_string_of_jsbytes("dt"), - cst_dd=caml_string_of_jsbytes("dd"), - cst_abbr=caml_string_of_jsbytes("abbr"), - cst_var=caml_string_of_jsbytes("var"), - cst_kbd=caml_string_of_jsbytes("kbd"), - cst_samp=caml_string_of_jsbytes("samp"), - cst_code=caml_string_of_jsbytes("code"), - cst_dfn=caml_string_of_jsbytes("dfn"), - cst_cite=caml_string_of_jsbytes("cite"), - cst_strong=caml_string_of_jsbytes("strong"), - cst_em=caml_string_of_jsbytes("em"), - cst_small=caml_string_of_jsbytes("small"), - cst_big=caml_string_of_jsbytes("big"), - cst_b=caml_string_of_jsbytes("b"), - cst_i=caml_string_of_jsbytes("i"), - cst_tt=caml_string_of_jsbytes("tt"), - cst_span=caml_string_of_jsbytes("span"), - cst_sup=caml_string_of_jsbytes("sup"), - cst_sub=caml_string_of_jsbytes("sub"), - cst_td=caml_string_of_jsbytes("td"), - cst_th=caml_string_of_jsbytes("th"), - cst_tr=caml_string_of_jsbytes("tr"), - cst_tbody=caml_string_of_jsbytes("tbody"), - cst_tfoot=caml_string_of_jsbytes("tfoot"), - cst_thead=caml_string_of_jsbytes("thead"), - cst_colgroup=caml_string_of_jsbytes("colgroup"), - cst_col=caml_string_of_jsbytes("col"), - cst_caption=caml_string_of_jsbytes("caption"), - cst_table=caml_string_of_jsbytes("table"), - cst_script=caml_string_of_jsbytes("script"), - cst_area=caml_string_of_jsbytes("area"), - cst_map=caml_string_of_jsbytes("map"), - cst_param=caml_string_of_jsbytes("param"), - cst_object=caml_string_of_jsbytes("object"), - cst_img=caml_string_of_jsbytes("img"), - cst_a=caml_string_of_jsbytes("a"), - cst_del=caml_string_of_jsbytes("del"), - cst_ins=caml_string_of_jsbytes("ins"), - cst_hr=caml_string_of_jsbytes("hr"), - cst_br=caml_string_of_jsbytes("br"), - cst_pre=caml_string_of_jsbytes("pre"), - cst_blockquote=caml_string_of_jsbytes("blockquote"), - cst_q=caml_string_of_jsbytes("q"), - cst_h6=caml_string_of_jsbytes("h6"), - cst_h5=caml_string_of_jsbytes("h5"), - cst_h4=caml_string_of_jsbytes("h4"), - cst_h3=caml_string_of_jsbytes("h3"), - cst_h2=caml_string_of_jsbytes("h2"), - cst_h1=caml_string_of_jsbytes("h1"), - cst_p=caml_string_of_jsbytes("p"), - cst_embed=caml_string_of_jsbytes("embed"), - cst_div=caml_string_of_jsbytes("div"), - cst_li=caml_string_of_jsbytes("li"), - cst_dl=caml_string_of_jsbytes("dl"), - cst_ol=caml_string_of_jsbytes("ol"), - cst_ul=caml_string_of_jsbytes("ul"), - cst_legend=caml_string_of_jsbytes("legend"), - cst_fieldset=caml_string_of_jsbytes("fieldset"), - cst_label=caml_string_of_jsbytes("label"), - cst_button=caml_string_of_jsbytes("button"), - cst_textarea=caml_string_of_jsbytes("textarea"), - cst_input$0=caml_string_of_jsbytes("input"), - cst_select$0=caml_string_of_jsbytes("select"), - cst_option=caml_string_of_jsbytes("option"), - cst_optgroup=caml_string_of_jsbytes("optgroup"), - cst_form=caml_string_of_jsbytes("form"), - cst_body=caml_string_of_jsbytes("body"), - cst_style=caml_string_of_jsbytes("style"), - cst_base=caml_string_of_jsbytes("base"), - cst_meta=caml_string_of_jsbytes("meta"), - cst_title=caml_string_of_jsbytes("title"), - cst_link=caml_string_of_jsbytes("link"), - cst_head=caml_string_of_jsbytes("head"), - cst_html=caml_string_of_jsbytes("html"), - cst_click=caml_string_of_jsbytes("click"), - cst_copy=caml_string_of_jsbytes("copy"), - cst_cut=caml_string_of_jsbytes("cut"), - cst_paste=caml_string_of_jsbytes("paste"), - cst_dblclick=caml_string_of_jsbytes("dblclick"), - cst_mousedown=caml_string_of_jsbytes("mousedown"), - cst_mouseup=caml_string_of_jsbytes("mouseup"), - cst_mouseover=caml_string_of_jsbytes("mouseover"), - cst_mousemove=caml_string_of_jsbytes("mousemove"), - cst_mouseout=caml_string_of_jsbytes("mouseout"), - cst_keypress=caml_string_of_jsbytes("keypress"), - cst_keydown=caml_string_of_jsbytes("keydown"), - cst_keyup=caml_string_of_jsbytes("keyup"), - cst_mousewheel=caml_string_of_jsbytes("mousewheel"), - cst_DOMMouseScroll=caml_string_of_jsbytes("DOMMouseScroll"), - cst_touchstart=caml_string_of_jsbytes("touchstart"), - cst_touchmove=caml_string_of_jsbytes("touchmove"), - cst_touchend=caml_string_of_jsbytes("touchend"), - cst_touchcancel=caml_string_of_jsbytes("touchcancel"), - cst_dragstart=caml_string_of_jsbytes("dragstart"), - cst_dragend=caml_string_of_jsbytes("dragend"), - cst_dragenter=caml_string_of_jsbytes("dragenter"), - cst_dragover=caml_string_of_jsbytes("dragover"), - cst_dragleave=caml_string_of_jsbytes("dragleave"), - cst_drag=caml_string_of_jsbytes("drag"), - cst_drop=caml_string_of_jsbytes("drop"), - cst_hashchange=caml_string_of_jsbytes("hashchange"), - cst_change=caml_string_of_jsbytes("change"), - cst_input=caml_string_of_jsbytes("input"), - cst_timeupdate=caml_string_of_jsbytes("timeupdate"), - cst_submit=caml_string_of_jsbytes("submit"), - cst_scroll=caml_string_of_jsbytes("scroll"), - cst_focus=caml_string_of_jsbytes("focus"), - cst_blur=caml_string_of_jsbytes("blur"), - cst_load$0=caml_string_of_jsbytes("load"), - cst_unload=caml_string_of_jsbytes("unload"), - cst_beforeunload=caml_string_of_jsbytes("beforeunload"), - cst_resize=caml_string_of_jsbytes("resize"), - cst_orientationchange=caml_string_of_jsbytes("orientationchange"), - cst_popstate=caml_string_of_jsbytes("popstate"), - cst_error$0=caml_string_of_jsbytes("error"), - cst_abort$0=caml_string_of_jsbytes("abort"), - cst_select=caml_string_of_jsbytes("select"), - cst_online=caml_string_of_jsbytes("online"), - cst_offline=caml_string_of_jsbytes("offline"), - cst_checking=caml_string_of_jsbytes("checking"), - cst_noupdate=caml_string_of_jsbytes("noupdate"), - cst_downloading=caml_string_of_jsbytes("downloading"), - cst_progress$0=caml_string_of_jsbytes("progress"), - cst_updateready=caml_string_of_jsbytes("updateready"), - cst_cached=caml_string_of_jsbytes("cached"), - cst_obsolete=caml_string_of_jsbytes("obsolete"), - cst_DOMContentLoaded=caml_string_of_jsbytes("DOMContentLoaded"), - cst_animationstart=caml_string_of_jsbytes("animationstart"), - cst_animationend=caml_string_of_jsbytes("animationend"), - cst_animationiteration=caml_string_of_jsbytes("animationiteration"), - cst_animationcancel=caml_string_of_jsbytes("animationcancel"), - cst_canplay=caml_string_of_jsbytes("canplay"), - cst_canplaythrough=caml_string_of_jsbytes("canplaythrough"), - cst_durationchange=caml_string_of_jsbytes("durationchange"), - cst_emptied=caml_string_of_jsbytes("emptied"), - cst_ended=caml_string_of_jsbytes("ended"), - cst_gotpointercapture=caml_string_of_jsbytes("gotpointercapture"), - cst_loadeddata=caml_string_of_jsbytes("loadeddata"), - cst_loadedmetadata=caml_string_of_jsbytes("loadedmetadata"), - cst_loadstart$0=caml_string_of_jsbytes("loadstart"), - cst_lostpointercapture=caml_string_of_jsbytes("lostpointercapture"), - cst_message=caml_string_of_jsbytes("message"), - cst_pause=caml_string_of_jsbytes("pause"), - cst_play=caml_string_of_jsbytes("play"), - cst_playing=caml_string_of_jsbytes("playing"), - cst_pointerenter=caml_string_of_jsbytes("pointerenter"), - cst_pointercancel=caml_string_of_jsbytes("pointercancel"), - cst_pointerdown=caml_string_of_jsbytes("pointerdown"), - cst_pointerleave=caml_string_of_jsbytes("pointerleave"), - cst_pointermove=caml_string_of_jsbytes("pointermove"), - cst_pointerout=caml_string_of_jsbytes("pointerout"), - cst_pointerover=caml_string_of_jsbytes("pointerover"), - cst_pointerup=caml_string_of_jsbytes("pointerup"), - cst_ratechange=caml_string_of_jsbytes("ratechange"), - cst_seeked=caml_string_of_jsbytes("seeked"), - cst_seeking=caml_string_of_jsbytes("seeking"), - cst_stalled=caml_string_of_jsbytes("stalled"), - cst_suspend=caml_string_of_jsbytes("suspend"), - cst_volumechange=caml_string_of_jsbytes("volumechange"), - cst_waiting=caml_string_of_jsbytes("waiting"), - cst_Js_of_ocaml_Dom_html_Canva= - caml_string_of_jsbytes("Js_of_ocaml__Dom_html.Canvas_not_available"), - cst_checkbox=caml_string_of_jsbytes("checkbox"), - cst_file=caml_string_of_jsbytes("file"), - cst_password=caml_string_of_jsbytes("password"), - cst_radio=caml_string_of_jsbytes("radio"), - cst_reset=caml_string_of_jsbytes("reset"), - cst_submit$0=caml_string_of_jsbytes("submit"), - cst_text=caml_string_of_jsbytes("text"), - cst_readystatechange=caml_string_of_jsbytes("readystatechange"), - cst_loadstart$1=caml_string_of_jsbytes("loadstart"), - cst_progress$1=caml_string_of_jsbytes("progress"), - cst_abort$1=caml_string_of_jsbytes("abort"), - cst_error$1=caml_string_of_jsbytes("error"), - cst_load$1=caml_string_of_jsbytes("load"), - cst_timeout=caml_string_of_jsbytes("timeout"), - cst_loadend$0=caml_string_of_jsbytes("loadend"), - cst_Worker_onmessage_is_undefi$0= - caml_string_of_jsbytes("Worker.onmessage is undefined"), - cst_Worker_onmessage_is_undefi= - caml_string_of_jsbytes("Worker.onmessage is undefined"), - cst_Worker_import_scripts_is_u= - caml_string_of_jsbytes("Worker.import_scripts is undefined"), - cst_webglcontextlost=caml_string_of_jsbytes("webglcontextlost"), - cst_webglcontextrestored=caml_string_of_jsbytes("webglcontextrestored"), - cst_webglcontextcreationerror= - caml_string_of_jsbytes("webglcontextcreationerror"), - cst_g=caml_string_of_jsbytes("g"), - cst=caml_string_of_jsbytes("[\\][()\\\\|+*.?{}^$]"), - cst$37=caml_string_of_jsbytes(""), - cst$13=caml_string_of_jsbytes(""), - cst$21=caml_string_of_jsbytes(""), - cst$14=caml_string_of_jsbytes("#"), - cst$15=caml_string_of_jsbytes("?"), - cst$20=caml_string_of_jsbytes(""), - cst$16=caml_string_of_jsbytes("/"), - cst$17=caml_string_of_jsbytes("/"), - cst$19=caml_string_of_jsbytes(":"), - cst$18=caml_string_of_jsbytes(""), - cst_http$1=caml_string_of_jsbytes("http://"), - cst$22=caml_string_of_jsbytes(""), - cst$30=caml_string_of_jsbytes(""), - cst$23=caml_string_of_jsbytes("#"), - cst$24=caml_string_of_jsbytes("?"), - cst$29=caml_string_of_jsbytes(""), - cst$25=caml_string_of_jsbytes("/"), - cst$26=caml_string_of_jsbytes("/"), - cst$28=caml_string_of_jsbytes(":"), - cst$27=caml_string_of_jsbytes(""), - cst_https$1=caml_string_of_jsbytes("https://"), - cst$31=caml_string_of_jsbytes(""), - cst$36=caml_string_of_jsbytes(""), - cst$32=caml_string_of_jsbytes("#"), - cst$33=caml_string_of_jsbytes("?"), - cst$35=caml_string_of_jsbytes(""), - cst$34=caml_string_of_jsbytes("/"), - cst_file$2=caml_string_of_jsbytes("file://"), - cst$12=caml_string_of_jsbytes(""), - cst$11=caml_string_of_jsbytes(""), - cst$10=caml_string_of_jsbytes(""), - cst$9=caml_string_of_jsbytes(""), - cst$8=caml_string_of_jsbytes(""), - cst$7=caml_string_of_jsbytes(""), - cst$6=caml_string_of_jsbytes(""), - cst$4=caml_string_of_jsbytes("="), - cst$5=caml_string_of_jsbytes("&"), - cst$2=caml_string_of_jsbytes(""), - cst$3=caml_string_of_jsbytes(""), - cst_file$0=caml_string_of_jsbytes("file"), - cst_file$1=caml_string_of_jsbytes("file:"), - cst_http=caml_string_of_jsbytes("http"), - cst_http$0=caml_string_of_jsbytes("http:"), - cst_https=caml_string_of_jsbytes("https"), - cst_https$0=caml_string_of_jsbytes("https:"), - cst$1=caml_string_of_jsbytes(" "), - cst_2B=caml_string_of_jsbytes("%2B"), - cst_Js_of_ocaml_Url_Local_exn= - caml_string_of_jsbytes("Js_of_ocaml__Url.Local_exn"), - cst$0=caml_string_of_jsbytes("+"), - cst_Js_of_ocaml_Url_Not_an_htt= - caml_string_of_jsbytes("Js_of_ocaml__Url.Not_an_http_protocol"), - cst_Hh_Tt_Tt_Pp_Ss_0_9a_zA_Z_0= - caml_string_of_jsbytes - ("^([Hh][Tt][Tt][Pp][Ss]?)://([0-9a-zA-Z.-]+|\\[[0-9a-zA-Z.-]+\\]|\\[[0-9A-Fa-f:.]+\\])?(:([0-9]+))?(/([^\\?#]*)(\\?([^#]*))?(#(.*))?)?$"), - cst_Ff_Ii_Ll_Ee= - caml_string_of_jsbytes - ("^([Ff][Ii][Ll][Ee])://([^\\?#]*)(\\?([^#]*))?(#(.*))?$"), - s=caml_string_of_jsbytes("4.0.0"), - git_version=caml_string_of_jsbytes(""), - cst$38=caml_string_of_jsbytes(""), - cst$41=caml_string_of_jsbytes("+"), - cst_Jstable_keys=caml_string_of_jsbytes("Jstable.keys"), - t5=runtime.caml_int64_create_lo_mi_hi(1,0,0), - cst_is_not_a_valid_length$0= - caml_string_of_jsbytes(" is not a valid length"), - cst_d_d_deg_grad_rad_turns= - caml_string_of_jsbytes("^(\\d*(?:\\.\\d*))(deg|grad|rad|turns)$"), - cst_length_conversion_error$0= - caml_string_of_jsbytes("length conversion error: "), - cst_deg$0=caml_string_of_jsbytes("deg"), - cst_grad$0=caml_string_of_jsbytes("grad"), - cst_rad$0=caml_string_of_jsbytes("rad"), - cst_turns$0=caml_string_of_jsbytes("turns"), - cst_deg=caml_string_of_jsbytes("deg"), - cst_grad=caml_string_of_jsbytes("grad"), - cst_rad=caml_string_of_jsbytes("rad"), - cst_turns=caml_string_of_jsbytes("turns"), - cst_is_not_a_valid_length= - caml_string_of_jsbytes(" is not a valid length"), - cst_0$0=caml_string_of_jsbytes("0"), - cst_d_d_s_S=caml_string_of_jsbytes("^(\\d*(?:\\.\\d*)?)\\s*(\\S*)$"), - cst_length_conversion_error= - caml_string_of_jsbytes("length conversion error: "), - cst_pc$0=caml_string_of_jsbytes("pc"), - cst_ch$0=caml_string_of_jsbytes("ch"), - cst_cm$0=caml_string_of_jsbytes("cm"), - cst_em$1=caml_string_of_jsbytes("em"), - cst_ex$0=caml_string_of_jsbytes("ex"), - cst_gd$0=caml_string_of_jsbytes("gd"), - cst_in$0=caml_string_of_jsbytes("in"), - cst_mm$0=caml_string_of_jsbytes("mm"), - cst_pt$0=caml_string_of_jsbytes("pt"), - cst_px$0=caml_string_of_jsbytes("px"), - cst_rem$0=caml_string_of_jsbytes("rem"), - cst_vh$0=caml_string_of_jsbytes("vh"), - cst_vm$0=caml_string_of_jsbytes("vm"), - cst_vw$0=caml_string_of_jsbytes("vw"), - cst_0=caml_string_of_jsbytes("0"), - cst_em$0=caml_string_of_jsbytes("em"), - cst_ex=caml_string_of_jsbytes("ex"), - cst_px=caml_string_of_jsbytes("px"), - cst_gd=caml_string_of_jsbytes("gd"), - cst_rem=caml_string_of_jsbytes("rem"), - cst_vw=caml_string_of_jsbytes("vw"), - cst_vh=caml_string_of_jsbytes("vh"), - cst_vm=caml_string_of_jsbytes("vm"), - cst_ch=caml_string_of_jsbytes("ch"), - cst_mm=caml_string_of_jsbytes("mm"), - cst_cm=caml_string_of_jsbytes("cm"), - cst_in=caml_string_of_jsbytes("in"), - cst_pt=caml_string_of_jsbytes("pt"), - cst_pc=caml_string_of_jsbytes("pc"), - cst$40=caml_string_of_jsbytes("): "), - cst_color_conversion_error$0= - caml_string_of_jsbytes("color conversion error ("), - cst$39=caml_string_of_jsbytes("): "), - cst_color_conversion_error= - caml_string_of_jsbytes("color conversion error ("), - cst_is_not_a_valid_color$0= - caml_string_of_jsbytes(" is not a valid color"), - cst_rgba_d_d_d_d_d= - caml_string_of_jsbytes - ("(rgba?)\\((?:(\\d*),(\\d*),(\\d*)(?:,(\\d*(?:\\.\\d*)?))?)\\)"), - cst_rgba_d_d_d_d_d$0= - caml_string_of_jsbytes - ("(rgba?)\\((?:(\\d*)%,(\\d*)%,(\\d*)%(?:,(\\d*(?:\\.\\d*)?))?)\\)"), - cst_hsla_d_d_d_d_d= - caml_string_of_jsbytes - ("(hsla?)\\((?:(\\d*),(\\d*)%,(\\d*)%(?:,(\\d*(?:\\.\\d*)?))?)\\)"), - cst_rgb=caml_string_of_jsbytes("rgb"), - cst_rgba=caml_string_of_jsbytes("rgba"), - cst_rgb$0=caml_string_of_jsbytes("rgb"), - cst_rgba$0=caml_string_of_jsbytes("rgba"), - cst_hsl=caml_string_of_jsbytes("hsl"), - cst_hsla=caml_string_of_jsbytes("hsla"), - cst_rgb_s_d_s_d_s_d= - caml_string_of_jsbytes("^rgb\\(\\s*\\d*,\\s*\\d*,\\s*\\d*\\)$"), - cst_rgb_s_d_s_d_s_d$0= - caml_string_of_jsbytes("^rgb\\(\\s*\\d*%,\\s*\\d*%,\\s*\\d*%\\)$"), - cst_rgba_s_d_s_d_s_d_d_d= - caml_string_of_jsbytes - ("^rgba\\(\\s*\\d*,\\s*\\d*,\\s*\\d*,\\d*\\.?\\d*\\)$"), - cst_rgba_s_d_s_d_s_d_d_d$0= - caml_string_of_jsbytes - ("^rgba\\(\\s*\\d*%,\\s*\\d*%,\\s*\\d*%,\\d*\\.?\\d*\\)$"), - cst_hsl_s_d_s_d_s_d= - caml_string_of_jsbytes("^hsl\\(\\s*\\d*,\\s*\\d*%,\\s*\\d*%\\)$"), - cst_hsla_s_d_s_d_s_d_d_d= - caml_string_of_jsbytes - ("^hsla\\(\\s*\\d*,\\s*\\d*%,\\s*\\d*%,\\d*\\.?\\d*\\)$"), - cst_is_not_a_valid_color=caml_string_of_jsbytes(" is not a valid color"), - cst_is_out_of_valid_range= - caml_string_of_jsbytes(" is out of valid range"), - partial=[8,[0,0,0],0,0,[12,41,0]], - partial$0=[12,41,0], - partial$1=[0,0,0], - cst_lightgrey$0=caml_string_of_jsbytes("lightgrey"), - cst_darkslategray$0=caml_string_of_jsbytes("darkslategray"), - cst_cornsilk$0=caml_string_of_jsbytes("cornsilk"), - cst_blue$0=caml_string_of_jsbytes("blue"), - cst_aliceblue$0=caml_string_of_jsbytes("aliceblue"), - cst_antiquewhite$0=caml_string_of_jsbytes("antiquewhite"), - cst_aqua$0=caml_string_of_jsbytes("aqua"), - cst_aquamarine$0=caml_string_of_jsbytes("aquamarine"), - cst_azure$0=caml_string_of_jsbytes("azure"), - cst_beige$0=caml_string_of_jsbytes("beige"), - cst_bisque$0=caml_string_of_jsbytes("bisque"), - cst_black$0=caml_string_of_jsbytes("black"), - cst_blanchedalmond$0=caml_string_of_jsbytes("blanchedalmond"), - cst_blueviolet$0=caml_string_of_jsbytes("blueviolet"), - cst_brown$0=caml_string_of_jsbytes("brown"), - cst_burlywood$0=caml_string_of_jsbytes("burlywood"), - cst_cadetblue$0=caml_string_of_jsbytes("cadetblue"), - cst_chartreuse$0=caml_string_of_jsbytes("chartreuse"), - cst_chocolate$0=caml_string_of_jsbytes("chocolate"), - cst_coral$0=caml_string_of_jsbytes("coral"), - cst_cornflowerblue$0=caml_string_of_jsbytes("cornflowerblue"), - cst_darkkhaki$0=caml_string_of_jsbytes("darkkhaki"), - cst_crimson$0=caml_string_of_jsbytes("crimson"), - cst_cyan$0=caml_string_of_jsbytes("cyan"), - cst_darkblue$0=caml_string_of_jsbytes("darkblue"), - cst_darkcyan$0=caml_string_of_jsbytes("darkcyan"), - cst_darkgoldenrod$0=caml_string_of_jsbytes("darkgoldenrod"), - cst_darkgray$0=caml_string_of_jsbytes("darkgray"), - cst_darkgreen$0=caml_string_of_jsbytes("darkgreen"), - cst_darkgrey$0=caml_string_of_jsbytes("darkgrey"), - cst_darkmagenta$0=caml_string_of_jsbytes("darkmagenta"), - cst_darkolivegreen$0=caml_string_of_jsbytes("darkolivegreen"), - cst_darkorange$0=caml_string_of_jsbytes("darkorange"), - cst_darkorchid$0=caml_string_of_jsbytes("darkorchid"), - cst_darkred$0=caml_string_of_jsbytes("darkred"), - cst_darksalmon$0=caml_string_of_jsbytes("darksalmon"), - cst_darkseagreen$0=caml_string_of_jsbytes("darkseagreen"), - cst_darkslateblue$0=caml_string_of_jsbytes("darkslateblue"), - cst_greenyellow$0=caml_string_of_jsbytes("greenyellow"), - cst_floralwhite$0=caml_string_of_jsbytes("floralwhite"), - cst_darkslategrey$0=caml_string_of_jsbytes("darkslategrey"), - cst_darkturquoise$0=caml_string_of_jsbytes("darkturquoise"), - cst_darkviolet$0=caml_string_of_jsbytes("darkviolet"), - cst_deeppink$0=caml_string_of_jsbytes("deeppink"), - cst_deepskyblue$0=caml_string_of_jsbytes("deepskyblue"), - cst_dimgray$0=caml_string_of_jsbytes("dimgray"), - cst_dimgrey$0=caml_string_of_jsbytes("dimgrey"), - cst_dodgerblue$0=caml_string_of_jsbytes("dodgerblue"), - cst_firebrick$0=caml_string_of_jsbytes("firebrick"), - cst_forestgreen$0=caml_string_of_jsbytes("forestgreen"), - cst_fuchsia$0=caml_string_of_jsbytes("fuchsia"), - cst_gainsboro$0=caml_string_of_jsbytes("gainsboro"), - cst_ghostwhite$0=caml_string_of_jsbytes("ghostwhite"), - cst_gold$0=caml_string_of_jsbytes("gold"), - cst_goldenrod$0=caml_string_of_jsbytes("goldenrod"), - cst_gray$0=caml_string_of_jsbytes("gray"), - cst_green$0=caml_string_of_jsbytes("green"), - cst_lavenderblush$0=caml_string_of_jsbytes("lavenderblush"), - cst_grey$0=caml_string_of_jsbytes("grey"), - cst_honeydew$0=caml_string_of_jsbytes("honeydew"), - cst_hotpink$0=caml_string_of_jsbytes("hotpink"), - cst_indianred$0=caml_string_of_jsbytes("indianred"), - cst_indigo$0=caml_string_of_jsbytes("indigo"), - cst_ivory$0=caml_string_of_jsbytes("ivory"), - cst_khaki$0=caml_string_of_jsbytes("khaki"), - cst_lavender$0=caml_string_of_jsbytes("lavender"), - cst_lawngreen$0=caml_string_of_jsbytes("lawngreen"), - cst_lemonchiffon$0=caml_string_of_jsbytes("lemonchiffon"), - cst_lightblue$0=caml_string_of_jsbytes("lightblue"), - cst_lightcoral$0=caml_string_of_jsbytes("lightcoral"), - cst_lightcyan$0=caml_string_of_jsbytes("lightcyan"), - cst_lightgoldenrodyellow$0=caml_string_of_jsbytes("lightgoldenrodyellow"), - cst_lightgray$0=caml_string_of_jsbytes("lightgray"), - cst_lightgreen$0=caml_string_of_jsbytes("lightgreen"), - cst_paleturquoise$0=caml_string_of_jsbytes("paleturquoise"), - cst_mediumslateblue$0=caml_string_of_jsbytes("mediumslateblue"), - cst_limegreen$0=caml_string_of_jsbytes("limegreen"), - cst_lightpink$0=caml_string_of_jsbytes("lightpink"), - cst_lightsalmon$0=caml_string_of_jsbytes("lightsalmon"), - cst_lightseagreen$0=caml_string_of_jsbytes("lightseagreen"), - cst_lightskyblue$0=caml_string_of_jsbytes("lightskyblue"), - cst_lightslategray$0=caml_string_of_jsbytes("lightslategray"), - cst_lightslategrey$0=caml_string_of_jsbytes("lightslategrey"), - cst_lightsteelblue$0=caml_string_of_jsbytes("lightsteelblue"), - cst_lightyellow$0=caml_string_of_jsbytes("lightyellow"), - cst_lime$0=caml_string_of_jsbytes("lime"), - cst_linen$0=caml_string_of_jsbytes("linen"), - cst_magenta$0=caml_string_of_jsbytes("magenta"), - cst_maroon$0=caml_string_of_jsbytes("maroon"), - cst_mediumaquamarine$0=caml_string_of_jsbytes("mediumaquamarine"), - cst_mediumblue$0=caml_string_of_jsbytes("mediumblue"), - cst_mediumorchid$0=caml_string_of_jsbytes("mediumorchid"), - cst_mediumpurple$0=caml_string_of_jsbytes("mediumpurple"), - cst_mediumseagreen$0=caml_string_of_jsbytes("mediumseagreen"), - cst_navy$0=caml_string_of_jsbytes("navy"), - cst_mediumspringgreen$0=caml_string_of_jsbytes("mediumspringgreen"), - cst_mediumturquoise$0=caml_string_of_jsbytes("mediumturquoise"), - cst_mediumvioletred$0=caml_string_of_jsbytes("mediumvioletred"), - cst_midnightblue$0=caml_string_of_jsbytes("midnightblue"), - cst_mintcream$0=caml_string_of_jsbytes("mintcream"), - cst_mistyrose$0=caml_string_of_jsbytes("mistyrose"), - cst_moccasin$0=caml_string_of_jsbytes("moccasin"), - cst_navajowhite$0=caml_string_of_jsbytes("navajowhite"), - cst_oldlace$0=caml_string_of_jsbytes("oldlace"), - cst_olive$0=caml_string_of_jsbytes("olive"), - cst_olivedrab$0=caml_string_of_jsbytes("olivedrab"), - cst_orange$0=caml_string_of_jsbytes("orange"), - cst_orangered$0=caml_string_of_jsbytes("orangered"), - cst_orchid$0=caml_string_of_jsbytes("orchid"), - cst_palegoldenrod$0=caml_string_of_jsbytes("palegoldenrod"), - cst_palegreen$0=caml_string_of_jsbytes("palegreen"), - cst_skyblue$0=caml_string_of_jsbytes("skyblue"), - cst_rosybrown$0=caml_string_of_jsbytes("rosybrown"), - cst_palevioletred$0=caml_string_of_jsbytes("palevioletred"), - cst_papayawhip$0=caml_string_of_jsbytes("papayawhip"), - cst_peachpuff$0=caml_string_of_jsbytes("peachpuff"), - cst_peru$0=caml_string_of_jsbytes("peru"), - cst_pink$0=caml_string_of_jsbytes("pink"), - cst_plum$0=caml_string_of_jsbytes("plum"), - cst_powderblue$0=caml_string_of_jsbytes("powderblue"), - cst_purple$0=caml_string_of_jsbytes("purple"), - cst_red$0=caml_string_of_jsbytes("red"), - cst_royalblue$0=caml_string_of_jsbytes("royalblue"), - cst_saddlebrown$0=caml_string_of_jsbytes("saddlebrown"), - cst_salmon$0=caml_string_of_jsbytes("salmon"), - cst_sandybrown$0=caml_string_of_jsbytes("sandybrown"), - cst_seagreen$0=caml_string_of_jsbytes("seagreen"), - cst_seashell$0=caml_string_of_jsbytes("seashell"), - cst_sienna$0=caml_string_of_jsbytes("sienna"), - cst_silver$0=caml_string_of_jsbytes("silver"), - cst_thistle$0=caml_string_of_jsbytes("thistle"), - cst_slateblue$0=caml_string_of_jsbytes("slateblue"), - cst_slategray$0=caml_string_of_jsbytes("slategray"), - cst_slategrey$0=caml_string_of_jsbytes("slategrey"), - cst_snow$0=caml_string_of_jsbytes("snow"), - cst_springgreen$0=caml_string_of_jsbytes("springgreen"), - cst_steelblue$0=caml_string_of_jsbytes("steelblue"), - cst_tan$0=caml_string_of_jsbytes("tan"), - cst_teal$0=caml_string_of_jsbytes("teal"), - cst_tomato$0=caml_string_of_jsbytes("tomato"), - cst_turquoise$0=caml_string_of_jsbytes("turquoise"), - cst_violet$0=caml_string_of_jsbytes("violet"), - cst_wheat$0=caml_string_of_jsbytes("wheat"), - cst_white$0=caml_string_of_jsbytes("white"), - cst_whitesmoke$0=caml_string_of_jsbytes("whitesmoke"), - cst_yellow$0=caml_string_of_jsbytes("yellow"), - cst_yellowgreen$0=caml_string_of_jsbytes("yellowgreen"), - cst_is_not_a_valid_color_name= - caml_string_of_jsbytes(" is not a valid color name"), - cst_aliceblue=caml_string_of_jsbytes("aliceblue"), - cst_antiquewhite=caml_string_of_jsbytes("antiquewhite"), - cst_aqua=caml_string_of_jsbytes("aqua"), - cst_aquamarine=caml_string_of_jsbytes("aquamarine"), - cst_azure=caml_string_of_jsbytes("azure"), - cst_beige=caml_string_of_jsbytes("beige"), - cst_bisque=caml_string_of_jsbytes("bisque"), - cst_black=caml_string_of_jsbytes("black"), - cst_blanchedalmond=caml_string_of_jsbytes("blanchedalmond"), - cst_blue=caml_string_of_jsbytes("blue"), - cst_blueviolet=caml_string_of_jsbytes("blueviolet"), - cst_brown=caml_string_of_jsbytes("brown"), - cst_burlywood=caml_string_of_jsbytes("burlywood"), - cst_cadetblue=caml_string_of_jsbytes("cadetblue"), - cst_chartreuse=caml_string_of_jsbytes("chartreuse"), - cst_chocolate=caml_string_of_jsbytes("chocolate"), - cst_coral=caml_string_of_jsbytes("coral"), - cst_cornflowerblue=caml_string_of_jsbytes("cornflowerblue"), - cst_cornsilk=caml_string_of_jsbytes("cornsilk"), - cst_crimson=caml_string_of_jsbytes("crimson"), - cst_cyan=caml_string_of_jsbytes("cyan"), - cst_darkblue=caml_string_of_jsbytes("darkblue"), - cst_darkcyan=caml_string_of_jsbytes("darkcyan"), - cst_darkgoldenrod=caml_string_of_jsbytes("darkgoldenrod"), - cst_darkgray=caml_string_of_jsbytes("darkgray"), - cst_darkgreen=caml_string_of_jsbytes("darkgreen"), - cst_darkgrey=caml_string_of_jsbytes("darkgrey"), - cst_darkkhaki=caml_string_of_jsbytes("darkkhaki"), - cst_darkmagenta=caml_string_of_jsbytes("darkmagenta"), - cst_darkolivegreen=caml_string_of_jsbytes("darkolivegreen"), - cst_darkorange=caml_string_of_jsbytes("darkorange"), - cst_darkorchid=caml_string_of_jsbytes("darkorchid"), - cst_darkred=caml_string_of_jsbytes("darkred"), - cst_darksalmon=caml_string_of_jsbytes("darksalmon"), - cst_darkseagreen=caml_string_of_jsbytes("darkseagreen"), - cst_darkslateblue=caml_string_of_jsbytes("darkslateblue"), - cst_darkslategray=caml_string_of_jsbytes("darkslategray"), - cst_darkslategrey=caml_string_of_jsbytes("darkslategrey"), - cst_darkturquoise=caml_string_of_jsbytes("darkturquoise"), - cst_darkviolet=caml_string_of_jsbytes("darkviolet"), - cst_deeppink=caml_string_of_jsbytes("deeppink"), - cst_deepskyblue=caml_string_of_jsbytes("deepskyblue"), - cst_dimgray=caml_string_of_jsbytes("dimgray"), - cst_dimgrey=caml_string_of_jsbytes("dimgrey"), - cst_dodgerblue=caml_string_of_jsbytes("dodgerblue"), - cst_firebrick=caml_string_of_jsbytes("firebrick"), - cst_floralwhite=caml_string_of_jsbytes("floralwhite"), - cst_forestgreen=caml_string_of_jsbytes("forestgreen"), - cst_fuchsia=caml_string_of_jsbytes("fuchsia"), - cst_gainsboro=caml_string_of_jsbytes("gainsboro"), - cst_ghostwhite=caml_string_of_jsbytes("ghostwhite"), - cst_gold=caml_string_of_jsbytes("gold"), - cst_goldenrod=caml_string_of_jsbytes("goldenrod"), - cst_gray=caml_string_of_jsbytes("gray"), - cst_grey=caml_string_of_jsbytes("grey"), - cst_green=caml_string_of_jsbytes("green"), - cst_greenyellow=caml_string_of_jsbytes("greenyellow"), - cst_honeydew=caml_string_of_jsbytes("honeydew"), - cst_hotpink=caml_string_of_jsbytes("hotpink"), - cst_indianred=caml_string_of_jsbytes("indianred"), - cst_indigo=caml_string_of_jsbytes("indigo"), - cst_ivory=caml_string_of_jsbytes("ivory"), - cst_khaki=caml_string_of_jsbytes("khaki"), - cst_lavender=caml_string_of_jsbytes("lavender"), - cst_lavenderblush=caml_string_of_jsbytes("lavenderblush"), - cst_lawngreen=caml_string_of_jsbytes("lawngreen"), - cst_lemonchiffon=caml_string_of_jsbytes("lemonchiffon"), - cst_lightblue=caml_string_of_jsbytes("lightblue"), - cst_lightcoral=caml_string_of_jsbytes("lightcoral"), - cst_lightcyan=caml_string_of_jsbytes("lightcyan"), - cst_lightgoldenrodyellow=caml_string_of_jsbytes("lightgoldenrodyellow"), - cst_lightgray=caml_string_of_jsbytes("lightgray"), - cst_lightgreen=caml_string_of_jsbytes("lightgreen"), - cst_lightgrey=caml_string_of_jsbytes("lightgrey"), - cst_lightpink=caml_string_of_jsbytes("lightpink"), - cst_lightsalmon=caml_string_of_jsbytes("lightsalmon"), - cst_lightseagreen=caml_string_of_jsbytes("lightseagreen"), - cst_lightskyblue=caml_string_of_jsbytes("lightskyblue"), - cst_lightslategray=caml_string_of_jsbytes("lightslategray"), - cst_lightslategrey=caml_string_of_jsbytes("lightslategrey"), - cst_lightsteelblue=caml_string_of_jsbytes("lightsteelblue"), - cst_lightyellow=caml_string_of_jsbytes("lightyellow"), - cst_lime=caml_string_of_jsbytes("lime"), - cst_limegreen=caml_string_of_jsbytes("limegreen"), - cst_linen=caml_string_of_jsbytes("linen"), - cst_magenta=caml_string_of_jsbytes("magenta"), - cst_maroon=caml_string_of_jsbytes("maroon"), - cst_mediumaquamarine=caml_string_of_jsbytes("mediumaquamarine"), - cst_mediumblue=caml_string_of_jsbytes("mediumblue"), - cst_mediumorchid=caml_string_of_jsbytes("mediumorchid"), - cst_mediumpurple=caml_string_of_jsbytes("mediumpurple"), - cst_mediumseagreen=caml_string_of_jsbytes("mediumseagreen"), - cst_mediumslateblue=caml_string_of_jsbytes("mediumslateblue"), - cst_mediumspringgreen=caml_string_of_jsbytes("mediumspringgreen"), - cst_mediumturquoise=caml_string_of_jsbytes("mediumturquoise"), - cst_mediumvioletred=caml_string_of_jsbytes("mediumvioletred"), - cst_midnightblue=caml_string_of_jsbytes("midnightblue"), - cst_mintcream=caml_string_of_jsbytes("mintcream"), - cst_mistyrose=caml_string_of_jsbytes("mistyrose"), - cst_moccasin=caml_string_of_jsbytes("moccasin"), - cst_navajowhite=caml_string_of_jsbytes("navajowhite"), - cst_navy=caml_string_of_jsbytes("navy"), - cst_oldlace=caml_string_of_jsbytes("oldlace"), - cst_olive=caml_string_of_jsbytes("olive"), - cst_olivedrab=caml_string_of_jsbytes("olivedrab"), - cst_orange=caml_string_of_jsbytes("orange"), - cst_orangered=caml_string_of_jsbytes("orangered"), - cst_orchid=caml_string_of_jsbytes("orchid"), - cst_palegoldenrod=caml_string_of_jsbytes("palegoldenrod"), - cst_palegreen=caml_string_of_jsbytes("palegreen"), - cst_paleturquoise=caml_string_of_jsbytes("paleturquoise"), - cst_palevioletred=caml_string_of_jsbytes("palevioletred"), - cst_papayawhip=caml_string_of_jsbytes("papayawhip"), - cst_peachpuff=caml_string_of_jsbytes("peachpuff"), - cst_peru=caml_string_of_jsbytes("peru"), - cst_pink=caml_string_of_jsbytes("pink"), - cst_plum=caml_string_of_jsbytes("plum"), - cst_powderblue=caml_string_of_jsbytes("powderblue"), - cst_purple=caml_string_of_jsbytes("purple"), - cst_red=caml_string_of_jsbytes("red"), - cst_rosybrown=caml_string_of_jsbytes("rosybrown"), - cst_royalblue=caml_string_of_jsbytes("royalblue"), - cst_saddlebrown=caml_string_of_jsbytes("saddlebrown"), - cst_salmon=caml_string_of_jsbytes("salmon"), - cst_sandybrown=caml_string_of_jsbytes("sandybrown"), - cst_seagreen=caml_string_of_jsbytes("seagreen"), - cst_seashell=caml_string_of_jsbytes("seashell"), - cst_sienna=caml_string_of_jsbytes("sienna"), - cst_silver=caml_string_of_jsbytes("silver"), - cst_skyblue=caml_string_of_jsbytes("skyblue"), - cst_slateblue=caml_string_of_jsbytes("slateblue"), - cst_slategray=caml_string_of_jsbytes("slategray"), - cst_slategrey=caml_string_of_jsbytes("slategrey"), - cst_snow=caml_string_of_jsbytes("snow"), - cst_springgreen=caml_string_of_jsbytes("springgreen"), - cst_steelblue=caml_string_of_jsbytes("steelblue"), - cst_tan=caml_string_of_jsbytes("tan"), - cst_teal=caml_string_of_jsbytes("teal"), - cst_thistle=caml_string_of_jsbytes("thistle"), - cst_tomato=caml_string_of_jsbytes("tomato"), - cst_turquoise=caml_string_of_jsbytes("turquoise"), - cst_violet=caml_string_of_jsbytes("violet"), - cst_wheat=caml_string_of_jsbytes("wheat"), - cst_white=caml_string_of_jsbytes("white"), - cst_whitesmoke=caml_string_of_jsbytes("whitesmoke"), - cst_yellow=caml_string_of_jsbytes("yellow"), - cst_yellowgreen=caml_string_of_jsbytes("yellowgreen"), - cst_vkern$0=caml_string_of_jsbytes("vkern"), - cst_view$0=caml_string_of_jsbytes("view"), - cst_use$0=caml_string_of_jsbytes("use"), - cst_tspan$0=caml_string_of_jsbytes("tspan"), - cst_tref$0=caml_string_of_jsbytes("tref"), - cst_title$3=caml_string_of_jsbytes("title"), - cst_textpath$0=caml_string_of_jsbytes("textpath"), - cst_text$1=caml_string_of_jsbytes("text"), - cst_symbol$0=caml_string_of_jsbytes("symbol"), - cst_switch$0=caml_string_of_jsbytes("switch"), - cst_svg$0=caml_string_of_jsbytes("svg"), - cst_style$3=caml_string_of_jsbytes("style"), - cst_stop$0=caml_string_of_jsbytes("stop"), - cst_set$0=caml_string_of_jsbytes("set"), - cst_script$3=caml_string_of_jsbytes("script"), - cst_rect$0=caml_string_of_jsbytes("rect"), - cst_radialgradient$0=caml_string_of_jsbytes("radialgradient"), - cst_polyline$0=caml_string_of_jsbytes("polyline"), - cst_polygon$0=caml_string_of_jsbytes("polygon"), - cst_pattern$0=caml_string_of_jsbytes("pattern"), - cst_path$0=caml_string_of_jsbytes("path"), - cst_mpath$0=caml_string_of_jsbytes("mpath"), - cst_missing_glyph$0=caml_string_of_jsbytes("missing-glyph"), - cst_metadata$0=caml_string_of_jsbytes("metadata"), - cst_mask$0=caml_string_of_jsbytes("mask"), - cst_lineargradient$0=caml_string_of_jsbytes("lineargradient"), - cst_line$0=caml_string_of_jsbytes("line"), - cst_image$0=caml_string_of_jsbytes("image"), - cst_hkern$0=caml_string_of_jsbytes("hkern"), - cst_glyphref$0=caml_string_of_jsbytes("glyphref"), - cst_glyph$0=caml_string_of_jsbytes("glyph"), - cst_g$1=caml_string_of_jsbytes("g"), - cst_foreignobject=caml_string_of_jsbytes("foreignobject"), - cst_font_face_uri$0=caml_string_of_jsbytes("font-face-uri"), - cst_font_face_src$0=caml_string_of_jsbytes("font-face-src"), - cst_font_face_name$0=caml_string_of_jsbytes("font-face-name"), - cst_font_face_format$0=caml_string_of_jsbytes("font-face-format"), - cst_font_face$0=caml_string_of_jsbytes("font-face"), - cst_font$0=caml_string_of_jsbytes("font"), - cst_filter$0=caml_string_of_jsbytes("filter"), - cst_ellipse$0=caml_string_of_jsbytes("ellipse"), - cst_desc$0=caml_string_of_jsbytes("desc"), - cst_defs$0=caml_string_of_jsbytes("defs"), - cst_cursor$0=caml_string_of_jsbytes("cursor"), - cst_clippath$0=caml_string_of_jsbytes("clippath"), - cst_circle$0=caml_string_of_jsbytes("circle"), - cst_animatetransform$0=caml_string_of_jsbytes("animatetransform"), - cst_animatemotion$0=caml_string_of_jsbytes("animatemotion"), - cst_animatecolor$0=caml_string_of_jsbytes("animatecolor"), - cst_animate$0=caml_string_of_jsbytes("animate"), - cst_altglyphitem$0=caml_string_of_jsbytes("altglyphitem"), - cst_altglyphdef$0=caml_string_of_jsbytes("altglyphdef"), - cst_altglyph$0=caml_string_of_jsbytes("altglyph"), - cst_a$3=caml_string_of_jsbytes("a"), - cst_vkern=caml_string_of_jsbytes("vkern"), - cst_view=caml_string_of_jsbytes("view"), - cst_use=caml_string_of_jsbytes("use"), - cst_tspan=caml_string_of_jsbytes("tspan"), - cst_tref=caml_string_of_jsbytes("tref"), - cst_title$2=caml_string_of_jsbytes("title"), - cst_textpath=caml_string_of_jsbytes("textpath"), - cst_text$0=caml_string_of_jsbytes("text"), - cst_symbol=caml_string_of_jsbytes("symbol"), - cst_switch=caml_string_of_jsbytes("switch"), - cst_svg=caml_string_of_jsbytes("svg"), - cst_style$2=caml_string_of_jsbytes("style"), - cst_stop=caml_string_of_jsbytes("stop"), - cst_set=caml_string_of_jsbytes("set"), - cst_script$2=caml_string_of_jsbytes("script"), - cst_rect=caml_string_of_jsbytes("rect"), - cst_radialgradient=caml_string_of_jsbytes("radialgradient"), - cst_polyline=caml_string_of_jsbytes("polyline"), - cst_polygon=caml_string_of_jsbytes("polygon"), - cst_pattern=caml_string_of_jsbytes("pattern"), - cst_path=caml_string_of_jsbytes("path"), - cst_mpath=caml_string_of_jsbytes("mpath"), - cst_missing_glyph=caml_string_of_jsbytes("missing-glyph"), - cst_metadata=caml_string_of_jsbytes("metadata"), - cst_mask=caml_string_of_jsbytes("mask"), - cst_lineargradient=caml_string_of_jsbytes("lineargradient"), - cst_line=caml_string_of_jsbytes("line"), - cst_image=caml_string_of_jsbytes("image"), - cst_hkern=caml_string_of_jsbytes("hkern"), - cst_glyphref=caml_string_of_jsbytes("glyphref"), - cst_glyph=caml_string_of_jsbytes("glyph"), - cst_g$0=caml_string_of_jsbytes("g"), - cst_foreignObject=caml_string_of_jsbytes("foreignObject"), - cst_font_face_uri=caml_string_of_jsbytes("font-face-uri"), - cst_font_face_src=caml_string_of_jsbytes("font-face-src"), - cst_font_face_name=caml_string_of_jsbytes("font-face-name"), - cst_font_face_format=caml_string_of_jsbytes("font-face-format"), - cst_font_face=caml_string_of_jsbytes("font-face"), - cst_font=caml_string_of_jsbytes("font"), - cst_filter=caml_string_of_jsbytes("filter"), - cst_ellipse=caml_string_of_jsbytes("ellipse"), - cst_desc=caml_string_of_jsbytes("desc"), - cst_defs=caml_string_of_jsbytes("defs"), - cst_cursor=caml_string_of_jsbytes("cursor"), - cst_clippath=caml_string_of_jsbytes("clippath"), - cst_circle=caml_string_of_jsbytes("circle"), - cst_animatetransform=caml_string_of_jsbytes("animatetransform"), - cst_animatemotion=caml_string_of_jsbytes("animatemotion"), - cst_animatecolor=caml_string_of_jsbytes("animatecolor"), - cst_animate=caml_string_of_jsbytes("animate"), - cst_altglyphitem=caml_string_of_jsbytes("altglyphitem"), - cst_altglyphdef=caml_string_of_jsbytes("altglyphdef"), - cst_altglyph=caml_string_of_jsbytes("altglyph"), - cst_a$2=caml_string_of_jsbytes("a"), - cst_Js_of_ocaml_Dom_svg_SVGErr= - caml_string_of_jsbytes("Js_of_ocaml__Dom_svg.SVGError"), - Stdlib_String=global_data.Stdlib__String, - Stdlib_Char=global_data.Stdlib__Char, - Stdlib=global_data.Stdlib, - Jsoo_runtime=global_data.Jsoo_runtime, - Stdlib_Printexc=global_data.Stdlib__Printexc, - Assert_failure=global_data.Assert_failure, - 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__"); - 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], - _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")], - _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")], - _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")], - _ca_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _cb_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _cc_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _cd_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _ce_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _cf_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _cg_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _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_= - caml_list_of_js_array - ([caml_string_of_jsbytes("aliceblue"), - caml_string_of_jsbytes("antiquewhite"), - caml_string_of_jsbytes("aqua"), - caml_string_of_jsbytes("aquamarine"), - caml_string_of_jsbytes("azure"), - caml_string_of_jsbytes("beige"), - caml_string_of_jsbytes("bisque"), - caml_string_of_jsbytes("black"), - caml_string_of_jsbytes("blanchedalmond"), - caml_string_of_jsbytes("blue"), - caml_string_of_jsbytes("blueviolet"), - caml_string_of_jsbytes("brown"), - caml_string_of_jsbytes("burlywood"), - caml_string_of_jsbytes("cadetblue"), - caml_string_of_jsbytes("chartreuse"), - caml_string_of_jsbytes("chocolate"), - caml_string_of_jsbytes("coral"), - caml_string_of_jsbytes("cornflowerblue"), - caml_string_of_jsbytes("cornsilk"), - caml_string_of_jsbytes("crimson"), - caml_string_of_jsbytes("cyan"), - caml_string_of_jsbytes("darkblue"), - caml_string_of_jsbytes("darkcyan"), - caml_string_of_jsbytes("darkgoldenrod"), - caml_string_of_jsbytes("darkgray"), - caml_string_of_jsbytes("darkgreen"), - caml_string_of_jsbytes("darkgrey"), - caml_string_of_jsbytes("darkkhaki"), - caml_string_of_jsbytes("darkmagenta"), - caml_string_of_jsbytes("darkolivegreen"), - caml_string_of_jsbytes("darkorange"), - caml_string_of_jsbytes("darkorchid"), - caml_string_of_jsbytes("darkred"), - caml_string_of_jsbytes("darksalmon"), - caml_string_of_jsbytes("darkseagreen"), - caml_string_of_jsbytes("darkslateblue"), - caml_string_of_jsbytes("darkslategray"), - caml_string_of_jsbytes("darkslategrey"), - caml_string_of_jsbytes("darkturquoise"), - caml_string_of_jsbytes("darkviolet"), - caml_string_of_jsbytes("deeppink"), - caml_string_of_jsbytes("deepskyblue"), - caml_string_of_jsbytes("dimgray"), - caml_string_of_jsbytes("dimgrey"), - caml_string_of_jsbytes("dodgerblue"), - caml_string_of_jsbytes("firebrick"), - caml_string_of_jsbytes("floralwhite"), - caml_string_of_jsbytes("forestgreen"), - caml_string_of_jsbytes("fuchsia"), - caml_string_of_jsbytes("gainsboro"), - caml_string_of_jsbytes("ghostwhite"), - caml_string_of_jsbytes("gold"), - caml_string_of_jsbytes("goldenrod"), - caml_string_of_jsbytes("gray"), - caml_string_of_jsbytes("green"), - caml_string_of_jsbytes("greenyellow"), - caml_string_of_jsbytes("grey"), - caml_string_of_jsbytes("honeydew"), - caml_string_of_jsbytes("hotpink"), - caml_string_of_jsbytes("indianred"), - caml_string_of_jsbytes("indigo"), - caml_string_of_jsbytes("ivory"), - caml_string_of_jsbytes("khaki"), - caml_string_of_jsbytes("lavender"), - caml_string_of_jsbytes("lavenderblush"), - caml_string_of_jsbytes("lawngreen"), - caml_string_of_jsbytes("lemonchiffon"), - caml_string_of_jsbytes("lightblue"), - caml_string_of_jsbytes("lightcoral"), - caml_string_of_jsbytes("lightcyan"), - caml_string_of_jsbytes("lightgoldenrodyellow"), - caml_string_of_jsbytes("lightgray"), - caml_string_of_jsbytes("lightgreen"), - caml_string_of_jsbytes("lightgrey"), - caml_string_of_jsbytes("lightpink"), - caml_string_of_jsbytes("lightsalmon"), - caml_string_of_jsbytes("lightseagreen"), - caml_string_of_jsbytes("lightskyblue"), - caml_string_of_jsbytes("lightslategray"), - caml_string_of_jsbytes("lightslategrey"), - caml_string_of_jsbytes("lightsteelblue"), - caml_string_of_jsbytes("lightyellow"), - caml_string_of_jsbytes("lime"), - caml_string_of_jsbytes("limegreen"), - caml_string_of_jsbytes("linen"), - caml_string_of_jsbytes("magenta"), - caml_string_of_jsbytes("maroon"), - caml_string_of_jsbytes("mediumaquamarine"), - caml_string_of_jsbytes("mediumblue"), - caml_string_of_jsbytes("mediumorchid"), - caml_string_of_jsbytes("mediumpurple"), - caml_string_of_jsbytes("mediumseagreen"), - caml_string_of_jsbytes("mediumslateblue"), - caml_string_of_jsbytes("mediumspringgreen"), - caml_string_of_jsbytes("mediumturquoise"), - caml_string_of_jsbytes("mediumvioletred"), - caml_string_of_jsbytes("midnightblue"), - caml_string_of_jsbytes("mintcream"), - caml_string_of_jsbytes("mistyrose"), - caml_string_of_jsbytes("moccasin"), - caml_string_of_jsbytes("navajowhite"), - caml_string_of_jsbytes("navy"), - caml_string_of_jsbytes("oldlace"), - caml_string_of_jsbytes("olive"), - caml_string_of_jsbytes("olivedrab"), - caml_string_of_jsbytes("orange"), - caml_string_of_jsbytes("orangered"), - caml_string_of_jsbytes("orchid"), - caml_string_of_jsbytes("palegoldenrod"), - caml_string_of_jsbytes("palegreen"), - caml_string_of_jsbytes("paleturquoise"), - caml_string_of_jsbytes("palevioletred"), - caml_string_of_jsbytes("papayawhip"), - caml_string_of_jsbytes("peachpuff"), - caml_string_of_jsbytes("peru"), - caml_string_of_jsbytes("pink"), - caml_string_of_jsbytes("plum"), - caml_string_of_jsbytes("powderblue"), - caml_string_of_jsbytes("purple"), - caml_string_of_jsbytes("red"), - caml_string_of_jsbytes("rosybrown"), - caml_string_of_jsbytes("royalblue"), - caml_string_of_jsbytes("saddlebrown"), - caml_string_of_jsbytes("salmon"), - caml_string_of_jsbytes("sandybrown"), - caml_string_of_jsbytes("seagreen"), - caml_string_of_jsbytes("seashell"), - caml_string_of_jsbytes("sienna"), - caml_string_of_jsbytes("silver"), - caml_string_of_jsbytes("skyblue"), - caml_string_of_jsbytes("slateblue"), - caml_string_of_jsbytes("slategray"), - caml_string_of_jsbytes("slategrey"), - caml_string_of_jsbytes("snow"), - caml_string_of_jsbytes("springgreen"), - caml_string_of_jsbytes("steelblue"), - caml_string_of_jsbytes("tan"), - caml_string_of_jsbytes("teal"), - caml_string_of_jsbytes("thistle"), - caml_string_of_jsbytes("tomato"), - caml_string_of_jsbytes("turquoise"), - caml_string_of_jsbytes("violet"), - caml_string_of_jsbytes("wheat"), - caml_string_of_jsbytes("white"), - caml_string_of_jsbytes("whitesmoke"), - caml_string_of_jsbytes("yellow"), - caml_string_of_jsbytes("yellowgreen")]), - _b6_= - [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_= - [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_= - [0, - [11, - caml_string_of_jsbytes("rgb("), - [4, - 0, - 0, - 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_= - [0, - [11, - caml_string_of_jsbytes("rgba("), - [4, - 0, - 0, - 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_= - [0, - [11, - caml_string_of_jsbytes("rgba("), - [4, - 0, - 0, - 0, - [12, - 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_= - [0, - [11, - caml_string_of_jsbytes("hsl("), - [4, - 0, - 0, - 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_= - [0, - [11, - caml_string_of_jsbytes("hsla("), - [4, - 0, - 0, - 0, - [12, - 44, - [4, - 0, - 0, - 0, - [12, - 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], - _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], - _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], - _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], - _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], - _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]; - 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} - function symbol$2(x,y){return x === y?1:0} - function symbol$3(x,y){return y < x?1:0} - function symbol$4(x,y){return y <= x?1:0} - var compare=runtime.caml_int_compare; - function equal(x,y){return x === y?1:0} - function max(x,y){return y <= x?x:y} - function min(x,y){return x <= y?x:y} - var - Int_replace_polymorphic_compar= - [0, - symbol, - symbol$0, - symbol$1, - symbol$2, - symbol$3, - symbol$4, - compare, - equal, - max, - min], - make=Stdlib_String[1], - init=Stdlib_String[2], - empty=Stdlib_String[3], - of_bytes=Stdlib_String[4], - to_bytes=Stdlib_String[5], - concat=Stdlib_String[6], - cat=Stdlib_String[7], - compare$0=Stdlib_String[9], - starts_with=Stdlib_String[10], - ends_with=Stdlib_String[11], - contains_from=Stdlib_String[12], - rcontains_from=Stdlib_String[13], - contains=Stdlib_String[14], - sub=Stdlib_String[15], - split_on_char=Stdlib_String[16], - map=Stdlib_String[17], - mapi=Stdlib_String[18], - fold_left=Stdlib_String[19], - fold_right=Stdlib_String[20], - for_all=Stdlib_String[21], - exists=Stdlib_String[22], - trim=Stdlib_String[23], - escaped=Stdlib_String[24], - uppercase_ascii=Stdlib_String[25], - lowercase_ascii=Stdlib_String[26], - capitalize_ascii=Stdlib_String[27], - uncapitalize_ascii=Stdlib_String[28], - iter=Stdlib_String[29], - iteri=Stdlib_String[30], - index_from=Stdlib_String[31], - index_from_opt=Stdlib_String[32], - rindex_from=Stdlib_String[33], - rindex_from_opt=Stdlib_String[34], - index=Stdlib_String[35], - index_opt=Stdlib_String[36], - rindex=Stdlib_String[37], - rindex_opt=Stdlib_String[38], - to_seq=Stdlib_String[39], - to_seqi=Stdlib_String[40], - of_seq=Stdlib_String[41], - get_utf_8_uchar=Stdlib_String[42], - is_valid_utf_8=Stdlib_String[43], - get_utf_16be_uchar=Stdlib_String[44], - is_valid_utf_16be=Stdlib_String[45], - get_utf_16le_uchar=Stdlib_String[46], - is_valid_utf_16le=Stdlib_String[47], - blit=Stdlib_String[48], - copy=Stdlib_String[49], - fill=Stdlib_String[50], - uppercase=Stdlib_String[51], - lowercase=Stdlib_String[52], - capitalize=Stdlib_String[53], - uncapitalize=Stdlib_String[54], - get_uint8=Stdlib_String[55], - get_int8=Stdlib_String[56], - get_uint16_ne=Stdlib_String[57], - get_uint16_be=Stdlib_String[58], - get_uint16_le=Stdlib_String[59], - get_int16_ne=Stdlib_String[60], - get_int16_be=Stdlib_String[61], - get_int16_le=Stdlib_String[62], - get_int32_ne=Stdlib_String[63], - get_int32_be=Stdlib_String[64], - get_int32_le=Stdlib_String[65], - get_int64_ne=Stdlib_String[66], - get_int64_be=Stdlib_String[67], - get_int64_le=Stdlib_String[68]; - function equal$0(x,y){return runtime.caml_string_equal(x,y)} - var - String= - [0, - make, - init, - empty, - of_bytes, - to_bytes, - concat, - cat, - compare$0, - starts_with, - ends_with, - contains_from, - rcontains_from, - contains, - sub, - split_on_char, - map, - mapi, - fold_left, - fold_right, - for_all, - exists, - trim, - escaped, - uppercase_ascii, - lowercase_ascii, - capitalize_ascii, - uncapitalize_ascii, - iter, - iteri, - index_from, - index_from_opt, - rindex_from, - rindex_from_opt, - index, - index_opt, - rindex, - rindex_opt, - to_seq, - to_seqi, - of_seq, - get_utf_8_uchar, - is_valid_utf_8, - get_utf_16be_uchar, - is_valid_utf_16be, - get_utf_16le_uchar, - is_valid_utf_16le, - blit, - copy, - fill, - uppercase, - lowercase, - capitalize, - uncapitalize, - get_uint8, - get_int8, - get_uint16_ne, - get_uint16_be, - get_uint16_le, - get_int16_ne, - get_int16_be, - get_int16_le, - get_int32_ne, - get_int32_be, - get_int32_le, - get_int64_ne, - get_int64_be, - get_int64_le, - equal$0], - chr=Stdlib_Char[1], - escaped$0=Stdlib_Char[2], - lowercase$0=Stdlib_Char[3], - uppercase$0=Stdlib_Char[4], - lowercase_ascii$0=Stdlib_Char[5], - uppercase_ascii$0=Stdlib_Char[6], - compare$1=Stdlib_Char[7]; - function equal$1(x,y){return x === y?1:0} - var - Char= - [0, - chr, - escaped$0, - lowercase$0, - uppercase$0, - lowercase_ascii$0, - uppercase_ascii$0, - compare$1, - equal$1], - symbol$5=Int_replace_polymorphic_compar[1], - symbol$6=Int_replace_polymorphic_compar[2], - symbol$7=Int_replace_polymorphic_compar[3], - symbol$8=Int_replace_polymorphic_compar[4], - symbol$9=Int_replace_polymorphic_compar[5], - symbol$10=Int_replace_polymorphic_compar[6], - compare$2=Int_replace_polymorphic_compar[7], - equal$2=Int_replace_polymorphic_compar[8], - max$0=Int_replace_polymorphic_compar[9], - min$0=Int_replace_polymorphic_compar[10], - Js_of_ocaml_Import= - [0, - Poly, - Int_replace_polymorphic_compar, - String, - Char, - symbol$5, - symbol$6, - symbol$7, - symbol$8, - symbol$9, - symbol$10, - compare$2, - equal$2, - max$0, - min$0]; - caml_register_global(1638,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 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_} - 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_)} - var - Opt= - [0, - no_handler, - return$0, - map$0, - bind, - test, - iter$0, - case$0, - get, - option, - to_option]; - function return$1(_gL_){return _gL_} - 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_} - 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_)} - var - Optdef= - [0, - t39, - return$1, - map$1, - bind$0, - test$0, - iter$1, - case$1, - get$0, - 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 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_)} - var - t25=true, - t4=false, - string_constr=Unsafe[1].String, - t11=Unsafe[1].RegExp, - t4$0=Unsafe[1].Object; - function object_keys(t3){return t4$0.keys(t3)} - var - array_length=Unsafe[1].Array, - array_get=caml_js_get, - array_set=caml_js_set; - function array_map(f,a) - {return a.map - (caml_js_wrap_callback - (function(x,idx,param){return caml_call1(f,x)}))} - function array_mapi(f,a) - {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_} - var - t122=Unsafe[1].Date, - math=Unsafe[1].Math, - error_constr=Unsafe[1].Error, - include=Jsoo_runtime[3], - raise=include[1], - attach_js_backtrace=include[2], - of_exn=include[3], - Error=include[4]; - 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_)} - 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)} - var JSON=Unsafe[1].JSON; - function decodeURI(s){return Unsafe[1].decodeURI(s)} - function decodeURIComponent(s){return Unsafe[1].decodeURIComponent(s)} - function encodeURI(s){return Unsafe[1].encodeURI(s)} - function encodeURIComponent(s){return Unsafe[1].encodeURIComponent(s)} - function escape(s){return Unsafe[1].escape(s)} - function unescape(s){return Unsafe[1].unescape(s)} - function isNaN(i){return Unsafe[1].isNaN(i) | 0} - function parseInt(s) - {var s$0=Unsafe[1].parseInt(s); - return isNaN(s$0)?caml_call1(Stdlib[2],cst_parseInt):s$0} - function parseFloat(s) - {var s$0=Unsafe[1].parseFloat(s); - return isNaN(s$0)?caml_call1(Stdlib[2],cst_parseFloat):s$0} - function _a_(param) - {if(param[1] === Error){var e=param[2];return [0,to_string(e)]}return 0} - caml_call1(Stdlib_Printexc[9],_a_); - function _b_(e) - {return e instanceof array_length - ?0 - :[0,caml_string_of_jsstring(e.toString())]} - caml_call1(Stdlib_Printexc[9],_b_); - function export_js(field,x){return jsoo_exports[field] = x} - function export$0(field,x) - {return export_js(caml_jsstring_of_string(field),x)} - function export_all(obj) - {var - t27=object_keys(obj), - t26= - caml_js_wrap_callback - (function(key,param,_gB_){return export_js(key,obj[key])}); - return t27.forEach(t26)} - var _c_=runtime.caml_js_error_of_exception; - function _d_(_gA_){return _gA_} - var - _e_= - [0, - to_string, - name, - message, - stack, - raise, - attach_js_backtrace, - of_exn, - Error, - function(_gz_){return _gz_}, - _d_]; - function _f_(_gy_){return _gy_} - var - Js_of_ocaml_Js= - [0, - no_handler, - function(_gx_){return _gx_}, - t39, - _f_, - Opt, - Optdef, - t25, - t4, - string_constr, - t11, - t11, - t11, - object_keys, - array_length, - array_length, - array_get, - array_set, - array_map, - array_mapi, - str_array, - match_result, - t122, - t122, - t122, - t122, - t122, - t122, - t122, - t122, - t122, - math, - error_constr, - _e_, - JSON, - decodeURI, - decodeURIComponent, - encodeURI, - encodeURIComponent, - escape, - unescape, - isNaN, - parseInt, - parseFloat, - coerce, - coerce_opt, - export$0, - export_all, - Unsafe, - string_of_error, - raise_js_error, - attach_js_backtrace, - _c_, - Error]; - caml_register_global(1642,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_); - if(match) - {var e=match[1],i$0=i + 1 | 0,acc$0=[0,e,acc],acc=acc$0,i=i$0; - continue} - var i$1=i + 1 | 0,i=i$1; - continue} - return caml_call1(Stdlib_List[9],acc)}} - var - disconnected=1, - preceding=2, - following=4, - contains$0=8, - contained_by=16, - implementation_specific=32; - function has(t,mask){return caml_call2(symbol$8,t & mask,mask)} - function add(x,y){return x | y} - var - DocumentPosition= - [0, - disconnected, - preceding, - following, - contains$0, - contained_by, - implementation_specific, - has, - add, - add]; - function appendChild(p,n){p.appendChild(n);return 0} - function removeChild(p,n){p.removeChild(n);return 0} - function replaceChild(p,n,o){p.replaceChild(n,o);return 0} - function insertBefore(p,n,o){p.insertBefore(n,o);return 0} - function nodeType(e) - {var match=e.nodeType; - if(match) - switch(match - 1 | 0) - {case 0:return [0,e];case 1:return [1,e];case 2:case 3:return [2,e]} - return [3,e]} - function cast(e,t){return e.nodeType === t?e:no_handler} - function element(e){return cast(e,1)} - function text(e) - {if(3 !== e.nodeType && 4 !== e.nodeType)return no_handler;return e} - function attr(e){return cast(e,2)} - function handler(f) - {return function(e) - {if(caml_call1(Opt[5],e)) - {var res=caml_call1(f,e); - if(1 - (res | 0))e.preventDefault(); - return res} - var t18=event,t17=caml_call1(f,t18); - if(1 - (t17 | 0))t18.returnValue = t17; - return t17}} - function full_handler(f) - {return runtime.caml_js_wrap_meth_callback_unsafe - (function(this$0,e) - {if(caml_call1(Opt[5],e)) - {var res=caml_call2(f,this$0,e); - if(1 - (res | 0))e.preventDefault(); - return res} - var t21=event,t20=caml_call2(f,this$0,t21); - if(1 - (t20 | 0))t21.returnValue = t20; - 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_); - 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_)} - return t27} - return t27} - function make$0(s){return caml_jsstring_of_string(s)} - var Event=[0,make$0]; - function addEventListenerWithOptions(t50,t47,capture,once,passive,t48) - {if(t50.addEventListener === t39) - {var - 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_)}}; - t50.attachEvent(t34,t35); - return function(param){return t50.detachEvent(t34,t35)}} - var t49={}; - function iter(t,f){if(t){var b=t[1];return caml_call1(f,b)}return 0} - iter(capture,function(t37){return t49.capture = t37}); - iter(once,function(t39){return t49.once = t39}); - iter(passive,function(t41){return t49.passive = t41}); - t50.addEventListener(t47,t48,t49); - return function(param){return t50.removeEventListener(t47,t48,t49)}} - function addEventListener(e,typ,h,capt) - {return addEventListenerWithOptions(e,typ,[0,capt],0,0,h)} - function removeEventListener(id){return caml_call1(id,0)} - function preventDefault(t54) - {if(caml_call1(Optdef[5],t54.preventDefault))return t54.preventDefault(); - var t53=! ! 0; - return t54.returnValue = t53} - function createCustomEvent(bubbles,cancelable,detail,t62) - {function opt_iter(f,param) - {if(param){var x=param[1];return caml_call1(f,x)}return 0} - var t63={}; - opt_iter(function(x){var t55=! ! x;return t63.bubbles = t55},bubbles); - opt_iter - (function(x){var t57=! ! x;return t63.cancelable = t57},cancelable); - opt_iter(function(t59){return t63.detail = t59},detail); - var t64=Unsafe[1].CustomEvent; - return new t64(t62,t63)} - var - Js_of_ocaml_Dom= - [0, - DocumentPosition, - insertBefore, - replaceChild, - removeChild, - appendChild, - list_of_nodeList, - nodeType, - [0,element,text,attr], - no_handler, - handler, - full_handler, - invoke_handler, - eventTarget, - Event, - addEventListenerWithOptions, - addEventListener, - removeEventListener, - preventDefault, - createCustomEvent]; - caml_register_global(1645,Js_of_ocaml_Dom,"Js_of_ocaml__Dom"); - var - arrayBuffer=Unsafe[1].ArrayBuffer, - int8Array_inBuffer=Unsafe[1].Int8Array, - t11$0=Unsafe[1].Uint8Array, - int16Array_inBuffer=Unsafe[1].Int16Array, - uint16Array_inBuffer=Unsafe[1].Uint16Array, - int32Array_inBuffer=Unsafe[1].Int32Array, - uint32Array_inBuffer=Unsafe[1].Uint32Array, - float32Array_inBuffer=Unsafe[1].Float32Array, - float64Array_inBuffer=Unsafe[1].Float64Array, - set=caml_js_set; - function get$1(a,i){return a[i]} - function unsafe_get(a,i){return a[i]} - var dataView=Unsafe[1].DataView; - function of_arrayBuffer(ab) - {var uint8=new t11$0(ab);return caml_string_of_array(uint8)} - var - Js_of_ocaml_Typed_array= - [0, - arrayBuffer, - runtime.caml_ba_kind_of_typed_array, - runtime.caml_ba_to_typed_array, - runtime.caml_ba_from_typed_array, - int8Array_inBuffer, - int8Array_inBuffer, - int8Array_inBuffer, - int8Array_inBuffer, - int8Array_inBuffer, - t11$0, - t11$0, - t11$0, - t11$0, - t11$0, - int16Array_inBuffer, - int16Array_inBuffer, - int16Array_inBuffer, - int16Array_inBuffer, - int16Array_inBuffer, - uint16Array_inBuffer, - uint16Array_inBuffer, - uint16Array_inBuffer, - uint16Array_inBuffer, - uint16Array_inBuffer, - int32Array_inBuffer, - int32Array_inBuffer, - int32Array_inBuffer, - int32Array_inBuffer, - int32Array_inBuffer, - uint32Array_inBuffer, - uint32Array_inBuffer, - uint32Array_inBuffer, - uint32Array_inBuffer, - uint32Array_inBuffer, - float32Array_inBuffer, - float32Array_inBuffer, - float32Array_inBuffer, - float32Array_inBuffer, - float32Array_inBuffer, - float64Array_inBuffer, - float64Array_inBuffer, - float64Array_inBuffer, - float64Array_inBuffer, - float64Array_inBuffer, - set, - get$1, - unsafe_get, - dataView, - dataView, - [0, - runtime.bigstring_to_array_buffer, - runtime.bigstring_to_typed_array, - runtime.bigstring_of_array_buffer, - 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"); - var t3=Unsafe[1].Blob; - function filter_map(f,param) - {var param$0=param; - for(;;) - {if(param$0) - {var q=param$0[2],v=param$0[1],match=caml_call1(f,v); - if(match){var v$0=match[1];return [0,v$0,filter_map(f,q)]} - var param$0=q; - continue} - return 0}} - function blob_raw(contentType,endings,a) - {var _gm_=0; - if(endings) - var _gn_=116179762 <= endings[1]?_h_:_i_,_go_=_gn_; - else - var _go_=0; - var - _gp_=[0,[0,cst_type,contentType],[0,[0,cst_endings,_go_],_gm_]], - options= - filter_map - (function(param) - {var v=param[2],name=param[1]; - if(v) - {var v$0=v[1];return [0,[0,name,caml_jsstring_of_string(v$0)]]} - return 0}, - _gp_), - options$0= - options - ?runtime.caml_js_object(caml_call1(Stdlib_Array[12],options)) - :t39, - t1=caml_js_from_array(a); - return new t3(t1,options$0)} - 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} - var a$0=param[2]; - return a$0} - if(288368849 <= _gl_) - {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); - return blob_raw(contentType,endings,caml_call1(Stdlib_Array[12],l$0))} - function filename(file) - {var match=caml_call1(Optdef[10],file.name); - if(match){var name=match[1];return name} - var match$0=caml_call1(Optdef[10],file.fileName); - if(match$0){var name$0=match$0[1];return name$0} - return caml_call1(Stdlib[2],cst_can_t_retrieve_file_name_n)} - var doc_constr=Unsafe[1].Document; - function document(e){return e instanceof doc_constr?e:no_handler} - function blob(e){return e instanceof t3?e:no_handler} - function string(e){return typeof e === "string"?e:no_handler} - function arrayBuffer$0(e){return e instanceof arrayBuffer?e:no_handler} - var - loadstart=caml_call1(Event[1],cst_loadstart), - progress=caml_call1(Event[1],cst_progress), - abort=caml_call1(Event[1],cst_abort), - error=caml_call1(Event[1],cst_error), - load=caml_call1(Event[1],cst_load), - loadend=caml_call1(Event[1],cst_loadend), - ReaderEvent=[0,loadstart,progress,abort,error,load,loadend], - fileReader=Unsafe[1].FileReader, - Js_of_ocaml_File= - [0, - blob_from_string, - blob_from_any, - [0,document,blob,function(_gj_){return _gj_},string,arrayBuffer$0], - ReaderEvent, - filename, - fileReader, - addEventListener]; - caml_register_global(1648,Js_of_ocaml_File,"Js_of_ocaml__File"); - var - onIE=runtime.caml_js_on_ie(0) | 0, - click=caml_call1(Event[1],cst_click), - copy$0=caml_call1(Event[1],cst_copy), - cut=caml_call1(Event[1],cst_cut), - paste=caml_call1(Event[1],cst_paste), - dblclick=caml_call1(Event[1],cst_dblclick), - mousedown=caml_call1(Event[1],cst_mousedown), - mouseup=caml_call1(Event[1],cst_mouseup), - mouseover=caml_call1(Event[1],cst_mouseover), - mousemove=caml_call1(Event[1],cst_mousemove), - mouseout=caml_call1(Event[1],cst_mouseout), - keypress=caml_call1(Event[1],cst_keypress), - keydown=caml_call1(Event[1],cst_keydown), - keyup=caml_call1(Event[1],cst_keyup), - mousewheel=caml_call1(Event[1],cst_mousewheel), - DOMMouseScroll=caml_call1(Event[1],cst_DOMMouseScroll), - touchstart=caml_call1(Event[1],cst_touchstart), - touchmove=caml_call1(Event[1],cst_touchmove), - touchend=caml_call1(Event[1],cst_touchend), - touchcancel=caml_call1(Event[1],cst_touchcancel), - dragstart=caml_call1(Event[1],cst_dragstart), - dragend=caml_call1(Event[1],cst_dragend), - dragenter=caml_call1(Event[1],cst_dragenter), - dragover=caml_call1(Event[1],cst_dragover), - dragleave=caml_call1(Event[1],cst_dragleave), - drag=caml_call1(Event[1],cst_drag), - drop=caml_call1(Event[1],cst_drop), - hashchange=caml_call1(Event[1],cst_hashchange), - change=caml_call1(Event[1],cst_change), - input=caml_call1(Event[1],cst_input), - timeupdate=caml_call1(Event[1],cst_timeupdate), - submit=caml_call1(Event[1],cst_submit), - scroll=caml_call1(Event[1],cst_scroll), - focus=caml_call1(Event[1],cst_focus), - blur=caml_call1(Event[1],cst_blur), - load$0=caml_call1(Event[1],cst_load$0), - unload=caml_call1(Event[1],cst_unload), - beforeunload=caml_call1(Event[1],cst_beforeunload), - resize=caml_call1(Event[1],cst_resize), - orientationchange=caml_call1(Event[1],cst_orientationchange), - popstate=caml_call1(Event[1],cst_popstate), - error$0=caml_call1(Event[1],cst_error$0), - abort$0=caml_call1(Event[1],cst_abort$0), - select=caml_call1(Event[1],cst_select), - online=caml_call1(Event[1],cst_online), - offline=caml_call1(Event[1],cst_offline), - checking=caml_call1(Event[1],cst_checking), - noupdate=caml_call1(Event[1],cst_noupdate), - downloading=caml_call1(Event[1],cst_downloading), - progress$0=caml_call1(Event[1],cst_progress$0), - updateready=caml_call1(Event[1],cst_updateready), - cached=caml_call1(Event[1],cst_cached), - obsolete=caml_call1(Event[1],cst_obsolete), - domContentLoaded=caml_call1(Event[1],cst_DOMContentLoaded), - animationstart=caml_call1(Event[1],cst_animationstart), - animationend=caml_call1(Event[1],cst_animationend), - animationiteration=caml_call1(Event[1],cst_animationiteration), - animationcancel=caml_call1(Event[1],cst_animationcancel), - canplay=caml_call1(Event[1],cst_canplay), - canplaythrough=caml_call1(Event[1],cst_canplaythrough), - durationchange=caml_call1(Event[1],cst_durationchange), - emptied=caml_call1(Event[1],cst_emptied), - ended=caml_call1(Event[1],cst_ended), - gotpointercapture=caml_call1(Event[1],cst_gotpointercapture), - loadeddata=caml_call1(Event[1],cst_loadeddata), - loadedmetadata=caml_call1(Event[1],cst_loadedmetadata), - loadstart$0=caml_call1(Event[1],cst_loadstart$0), - lostpointercapture=caml_call1(Event[1],cst_lostpointercapture), - message$0=caml_call1(Event[1],cst_message), - pause=caml_call1(Event[1],cst_pause), - play=caml_call1(Event[1],cst_play), - playing=caml_call1(Event[1],cst_playing), - pointerenter=caml_call1(Event[1],cst_pointerenter), - pointercancel=caml_call1(Event[1],cst_pointercancel), - pointerdown=caml_call1(Event[1],cst_pointerdown), - pointerleave=caml_call1(Event[1],cst_pointerleave), - pointermove=caml_call1(Event[1],cst_pointermove), - pointerout=caml_call1(Event[1],cst_pointerout), - pointerover=caml_call1(Event[1],cst_pointerover), - pointerup=caml_call1(Event[1],cst_pointerup), - ratechange=caml_call1(Event[1],cst_ratechange), - seeked=caml_call1(Event[1],cst_seeked), - seeking=caml_call1(Event[1],cst_seeking), - stalled=caml_call1(Event[1],cst_stalled), - suspend=caml_call1(Event[1],cst_suspend), - 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) - {var t8=loc.protocol,t7=loc.hostname,t9=loc.port; - if - (caml_call2(symbol$8,t8.length,0) - && - caml_call2(symbol$8,t7.length,0)) - return ""; - var t13=t8.concat("//",t7); - 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_)} - 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 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 getElementById_opt(id) - {var t19=caml_jsstring_of_string(id),_f$_=t87.getElementById(t19); - return caml_call1(Opt[10],_f$_)} - 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 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)} - function unsafeCreateElement(doc,name){return createElement(doc,name)} - var createElementSyntax=[0,785140586]; - function unsafeCreateElementEx(type,name,doc,elt) - {for(;;) - {if(0 === type && 0 === name)return createElement(doc,elt); - var _f1_=createElementSyntax[1]; - if(785140586 === _f1_) - {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_; - continue} - if(982028505 <= _f1_) - {var t40=new array_length(); - t40.push("<",caml_jsstring_of_string(elt)); - opt_iter - (type, - function(t) - {var t34=caml_js_html_escape(t); - t40.push(' type="',t34,'"'); - return 0}); - opt_iter - (name, - function(n) - {var t38=caml_js_html_escape(n); - t40.push(' name="',t38,'"'); - return 0}); - t40.push(">"); - return doc.createElement(t40.join(""))} - var t28=createElement(doc,elt); - opt_iter(type,function(t25){return t28.type = t25}); - opt_iter(name,function(t27){return t28.name = t27}); - return t28}} - function createHtml(doc){return unsafeCreateElement(doc,cst_html)} - function createHead(doc){return unsafeCreateElement(doc,cst_head)} - function createLink(doc){return unsafeCreateElement(doc,cst_link)} - function createTitle(doc){return unsafeCreateElement(doc,cst_title)} - function createMeta(doc){return unsafeCreateElement(doc,cst_meta)} - function createBase(doc){return unsafeCreateElement(doc,cst_base)} - function createStyle(doc){return unsafeCreateElement(doc,cst_style)} - function createBody(doc){return unsafeCreateElement(doc,cst_body)} - function createForm(doc){return unsafeCreateElement(doc,cst_form)} - function createOptgroup(doc){return unsafeCreateElement(doc,cst_optgroup)} - function createOption(doc){return unsafeCreateElement(doc,cst_option)} - function createSelect(type,name,doc) - {return unsafeCreateElementEx(type,name,doc,cst_select$0)} - function createInput(type,name,doc) - {return unsafeCreateElementEx(type,name,doc,cst_input$0)} - function createTextarea(type,name,doc) - {return unsafeCreateElementEx(type,name,doc,cst_textarea)} - function createButton(type,name,doc) - {return unsafeCreateElementEx(type,name,doc,cst_button)} - function createLabel(doc){return unsafeCreateElement(doc,cst_label)} - function createFieldset(doc){return unsafeCreateElement(doc,cst_fieldset)} - function createLegend(doc){return unsafeCreateElement(doc,cst_legend)} - function createUl(doc){return unsafeCreateElement(doc,cst_ul)} - function createOl(doc){return unsafeCreateElement(doc,cst_ol)} - function createDl(doc){return unsafeCreateElement(doc,cst_dl)} - function createLi(doc){return unsafeCreateElement(doc,cst_li)} - function createDiv(doc){return unsafeCreateElement(doc,cst_div)} - function createEmbed(doc){return unsafeCreateElement(doc,cst_embed)} - function createP(doc){return unsafeCreateElement(doc,cst_p)} - function createH1(doc){return unsafeCreateElement(doc,cst_h1)} - function createH2(doc){return unsafeCreateElement(doc,cst_h2)} - function createH3(doc){return unsafeCreateElement(doc,cst_h3)} - function createH4(doc){return unsafeCreateElement(doc,cst_h4)} - function createH5(doc){return unsafeCreateElement(doc,cst_h5)} - function createH6(doc){return unsafeCreateElement(doc,cst_h6)} - function createQ(doc){return unsafeCreateElement(doc,cst_q)} - function createBlockquote(doc) - {return unsafeCreateElement(doc,cst_blockquote)} - function createPre(doc){return unsafeCreateElement(doc,cst_pre)} - function createBr(doc){return unsafeCreateElement(doc,cst_br)} - function createHr(doc){return unsafeCreateElement(doc,cst_hr)} - function createIns(doc){return unsafeCreateElement(doc,cst_ins)} - function createDel(doc){return unsafeCreateElement(doc,cst_del)} - function createA(doc){return unsafeCreateElement(doc,cst_a)} - function createImg(doc){return unsafeCreateElement(doc,cst_img)} - function createObject(doc){return unsafeCreateElement(doc,cst_object)} - function createParam(doc){return unsafeCreateElement(doc,cst_param)} - function createMap(doc){return unsafeCreateElement(doc,cst_map)} - function createArea(doc){return unsafeCreateElement(doc,cst_area)} - function createScript(doc){return unsafeCreateElement(doc,cst_script)} - function createTable(doc){return unsafeCreateElement(doc,cst_table)} - function createCaption(doc){return unsafeCreateElement(doc,cst_caption)} - function createCol(doc){return unsafeCreateElement(doc,cst_col)} - function createColgroup(doc){return unsafeCreateElement(doc,cst_colgroup)} - function createThead(doc){return unsafeCreateElement(doc,cst_thead)} - function createTfoot(doc){return unsafeCreateElement(doc,cst_tfoot)} - function createTbody(doc){return unsafeCreateElement(doc,cst_tbody)} - function createTr(doc){return unsafeCreateElement(doc,cst_tr)} - function createTh(doc){return unsafeCreateElement(doc,cst_th)} - function createTd(doc){return unsafeCreateElement(doc,cst_td)} - function createSub(doc){return createElement(doc,cst_sub)} - function createSup(doc){return createElement(doc,cst_sup)} - function createSpan(doc){return createElement(doc,cst_span)} - function createTt(doc){return createElement(doc,cst_tt)} - function createI(doc){return createElement(doc,cst_i)} - function createB(doc){return createElement(doc,cst_b)} - function createBig(doc){return createElement(doc,cst_big)} - function createSmall(doc){return createElement(doc,cst_small)} - function createEm(doc){return createElement(doc,cst_em)} - function createStrong(doc){return createElement(doc,cst_strong)} - function createCite(doc){return createElement(doc,cst_cite)} - function createDfn(doc){return createElement(doc,cst_dfn)} - function createCode(doc){return createElement(doc,cst_code)} - function createSamp(doc){return createElement(doc,cst_samp)} - function createKbd(doc){return createElement(doc,cst_kbd)} - function createVar(doc){return createElement(doc,cst_var)} - function createAbbr(doc){return createElement(doc,cst_abbr)} - function createDd(doc){return createElement(doc,cst_dd)} - function createDt(doc){return createElement(doc,cst_dt)} - function createNoscript(doc){return createElement(doc,cst_noscript)} - function createAddress(doc){return createElement(doc,cst_address)} - function createFrameset(doc){return unsafeCreateElement(doc,cst_frameset)} - function createFrame(doc){return unsafeCreateElement(doc,cst_frame)} - function createIframe(doc){return unsafeCreateElement(doc,cst_iframe)} - function createAudio(doc){return unsafeCreateElement(doc,cst_audio)} - function createVideo(doc){return unsafeCreateElement(doc,cst_video)} - var - Canvas_not_available= - [248,cst_Js_of_ocaml_Dom_html_Canva,caml_fresh_oo_id(0)]; - function createCanvas(doc) - {var t52=unsafeCreateElement(doc,cst_canvas); - if(1 - caml_call1(Opt[5],t52.getContext))throw Canvas_not_available; - return t52} - var - html_element=Unsafe[1].HTMLElement, - element$0= - html_element === t39 - ?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} - 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)} - function blockquote(e){return unsafeCoerce(cst_blockquote$0,e)} - function body(e){return unsafeCoerce(cst_body$0,e)} - function br(e){return unsafeCoerce(cst_br$0,e)} - function button(e){return unsafeCoerce(cst_button$0,e)} - function canvas(e){return unsafeCoerce(cst_canvas$0,e)} - function caption(e){return unsafeCoerce(cst_caption$0,e)} - function col(e){return unsafeCoerce(cst_col$0,e)} - function colgroup(e){return unsafeCoerce(cst_colgroup$0,e)} - function del(e){return unsafeCoerce(cst_del$0,e)} - function div(e){return unsafeCoerce(cst_div$0,e)} - function dl(e){return unsafeCoerce(cst_dl$0,e)} - function fieldset(e){return unsafeCoerce(cst_fieldset$0,e)} - function embed(e){return unsafeCoerce(cst_embed$0,e)} - function form(e){return unsafeCoerce(cst_form$0,e)} - function frameset(e){return unsafeCoerce(cst_frameset$0,e)} - function frame(e){return unsafeCoerce(cst_frame$0,e)} - function h1(e){return unsafeCoerce(cst_h1$0,e)} - function h2(e){return unsafeCoerce(cst_h2$0,e)} - function h3(e){return unsafeCoerce(cst_h3$0,e)} - function h4(e){return unsafeCoerce(cst_h4$0,e)} - function h5(e){return unsafeCoerce(cst_h5$0,e)} - function h6(e){return unsafeCoerce(cst_h6$0,e)} - function head(e){return unsafeCoerce(cst_head$0,e)} - function hr(e){return unsafeCoerce(cst_hr$0,e)} - function html(e){return unsafeCoerce(cst_html$0,e)} - function iframe(e){return unsafeCoerce(cst_iframe$0,e)} - function img(e){return unsafeCoerce(cst_img$0,e)} - function input$0(e){return unsafeCoerce(cst_input$1,e)} - function ins(e){return unsafeCoerce(cst_ins$0,e)} - function label(e){return unsafeCoerce(cst_label$0,e)} - function legend(e){return unsafeCoerce(cst_legend$0,e)} - function li(e){return unsafeCoerce(cst_li$0,e)} - function link(e){return unsafeCoerce(cst_link$0,e)} - function map$2(e){return unsafeCoerce(cst_map$0,e)} - function meta(e){return unsafeCoerce(cst_meta$0,e)} - function object(e){return unsafeCoerce(cst_object$0,e)} - function ol(e){return unsafeCoerce(cst_ol$0,e)} - function optgroup(e){return unsafeCoerce(cst_optgroup$0,e)} - function option$1(e){return unsafeCoerce(cst_option$0,e)} - function p(e){return unsafeCoerce(cst_p$0,e)} - function param(e){return unsafeCoerce(cst_param$0,e)} - function pre(e){return unsafeCoerce(cst_pre$0,e)} - function q(e){return unsafeCoerce(cst_q$0,e)} - function script(e){return unsafeCoerce(cst_script$0,e)} - function select$0(e){return unsafeCoerce(cst_select$1,e)} - function style(e){return unsafeCoerce(cst_style$0,e)} - function table(e){return unsafeCoerce(cst_table$0,e)} - function tbody(e){return unsafeCoerce(cst_tbody$0,e)} - function td(e){return unsafeCoerce(cst_td$0,e)} - function textarea(e){return unsafeCoerce(cst_textarea$0,e)} - function tfoot(e){return unsafeCoerce(cst_tfoot$0,e)} - function th(e){return unsafeCoerce(cst_th$0,e)} - function thead(e){return unsafeCoerce(cst_thead$0,e)} - function title(e){return unsafeCoerce(cst_title$0,e)} - function tr(e){return unsafeCoerce(cst_tr$0,e)} - function ul(e){return unsafeCoerce(cst_ul$0,e)} - function audio(e){return unsafeCoerce(cst_audio$0,e)} - function video(e){return unsafeCoerce(cst_video$0,e)} - function unsafeCoerceEvent(constr,ev) - {if(constr !== t39 && ev instanceof constr)return ev;return no_handler} - function mouseEvent(ev){return unsafeCoerceEvent(Unsafe[1].MouseEvent,ev)} - function keyboardEvent(ev) - {return unsafeCoerceEvent(Unsafe[1].KeyboardEvent,ev)} - function wheelEvent(ev){return unsafeCoerceEvent(Unsafe[1].WheelEvent,ev)} - function mouseScrollEvent(ev) - {return unsafeCoerceEvent(Unsafe[1].MouseScrollEvent,ev)} - function popStateEvent(ev) - {return unsafeCoerceEvent(Unsafe[1].PopStateEvent,ev)} - function messageEvent(ev) - {return unsafeCoerceEvent(Unsafe[1].MessageEvent,ev)} - function eventRelatedTarget(e) - {function _fX_(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_)} - 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 elementClientPosition(e) - {var t80=e.getBoundingClientRect(),t81=t87.body,t82=t87.documentElement; - return [0, - ((t80.left | 0) - t81.clientLeft | 0) - t82.clientLeft | 0, - ((t80.top | 0) - t81.clientTop | 0) - t82.clientTop | 0]} - function getDocumentScroll(param) - {var t88=t87.body,t89=t87.documentElement; - return [0, - t88.scrollLeft + t89.scrollLeft | 0, - t88.scrollTop + t89.scrollTop | 0]} - function buttonPressed(ev) - {function _fR_(x){return x} - function _fS_(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_)} - 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_)} - function addMousewheelEventListener(e,h,capt) - {return addMousewheelEventListenerWith(e,[0,capt],0,0,h)} - function f(v) - {var - match=caml_string_of_jsstring(v), - switch$0=caml_string_compare(match,cst_KeyH); - if(0 <= switch$0) - {if(! (0 < switch$0))return 8; - var switch$1=caml_string_compare(match,cst_Numpad4); - if(0 <= switch$1) - {if(! (0 < switch$1))return 72; - var switch$2=caml_string_compare(match,cst_PageUp); - if(0 <= switch$2) - {if(! (0 < switch$2))return 98; - var switch$3=caml_string_compare(match,cst_ShiftRight); - if(0 <= switch$3) - {if(! (0 < switch$3))return 91; - if(! caml_string_notequal(match,cst_Slash))return 55; - if(! caml_string_notequal(match,cst_Space))return 41; - if(! caml_string_notequal(match,cst_Tab))return 39; - if(! caml_string_notequal(match,cst_VolumeDown))return 103; - if(! caml_string_notequal(match,cst_VolumeMute))return 102; - if(! caml_string_notequal(match,cst_VolumeUp))return 104} - else - {if(! caml_string_notequal(match,cst_Pause))return 123; - if(! caml_string_notequal(match,cst_Period))return 54; - if(! caml_string_notequal(match,cst_PrintScreen))return 120; - if(! caml_string_notequal(match,cst_Quote))return 50; - if(! caml_string_notequal(match,cst_ScrollLock))return 119; - if(! caml_string_notequal(match,cst_Semicolon))return 49; - if(! caml_string_notequal(match,cst_ShiftLeft))return 90}} - else - {var switch$4=caml_string_compare(match,cst_NumpadDivide); - if(0 <= switch$4) - {if(! (0 < switch$4))return 84; - if(! caml_string_notequal(match,cst_NumpadEnter))return 83; - if(! caml_string_notequal(match,cst_NumpadEqual))return 82; - if(! caml_string_notequal(match,cst_NumpadMultiply))return 78; - if(! caml_string_notequal(match,cst_NumpadSubtract))return 79; - if(! caml_string_notequal(match,cst_OSLeft))return 117; - if(! caml_string_notequal(match,cst_OSRight))return 118; - if(! caml_string_notequal(match,cst_PageDown))return 99} - else - {if(! caml_string_notequal(match,cst_Numpad5))return 73; - if(! caml_string_notequal(match,cst_Numpad6))return 74; - if(! caml_string_notequal(match,cst_Numpad7))return 75; - if(! caml_string_notequal(match,cst_Numpad8))return 76; - if(! caml_string_notequal(match,cst_Numpad9))return 77; - if(! caml_string_notequal(match,cst_NumpadAdd))return 80; - if(! caml_string_notequal(match,cst_NumpadDecimal))return 81}}} - else - {var switch$5=caml_string_compare(match,cst_KeyX); - if(0 <= switch$5) - {if(! (0 < switch$5))return 24; - var switch$6=caml_string_compare(match,cst_MetaRight); - if(0 <= switch$6) - {if(! (0 < switch$6))return 89; - if(! caml_string_notequal(match,cst_Minus))return 37; - if(! caml_string_notequal(match,cst_NumLock))return 85; - if(! caml_string_notequal(match,cst_Numpad0))return 68; - if(! caml_string_notequal(match,cst_Numpad1))return 69; - if(! caml_string_notequal(match,cst_Numpad2))return 70; - if(! caml_string_notequal(match,cst_Numpad3))return 71} - else - {if(! caml_string_notequal(match,cst_KeyY))return 25; - if(! caml_string_notequal(match,cst_KeyZ))return 26; - if(! caml_string_notequal(match,cst_MediaPlayPause))return 107; - if(! caml_string_notequal(match,cst_MediaStop))return 108; - if(! caml_string_notequal(match,cst_MediaTrackNext))return 106; - if(! caml_string_notequal(match,cst_MediaTrackPrevious)) - return 105; - if(! caml_string_notequal(match,cst_MetaLeft))return 88}} - else - {var switch$7=caml_string_compare(match,cst_KeyP); - if(0 <= switch$7) - {if(! (0 < switch$7))return 16; - if(! caml_string_notequal(match,cst_KeyQ))return 17; - if(! caml_string_notequal(match,cst_KeyR))return 18; - if(! caml_string_notequal(match,cst_KeyS))return 19; - if(! caml_string_notequal(match,cst_KeyT))return 20; - if(! caml_string_notequal(match,cst_KeyU))return 21; - if(! caml_string_notequal(match,cst_KeyV))return 22; - if(! caml_string_notequal(match,cst_KeyW))return 23} - else - {if(! caml_string_notequal(match,cst_KeyI))return 9; - if(! caml_string_notequal(match,cst_KeyJ))return 10; - if(! caml_string_notequal(match,cst_KeyK))return 11; - if(! caml_string_notequal(match,cst_KeyL))return 12; - if(! caml_string_notequal(match,cst_KeyM))return 13; - if(! caml_string_notequal(match,cst_KeyN))return 14; - if(! caml_string_notequal(match,cst_KeyO))return 15}}}} - else - {var switch$8=caml_string_compare(match,cst_Digit6); - if(0 <= switch$8) - {if(! (0 < switch$8))return 33; - var switch$9=caml_string_compare(match,cst_F6); - if(0 <= switch$9) - {if(! (0 < switch$9))return 61; - var switch$10=caml_string_compare(match,cst_KeyA); - if(0 <= switch$10) - {if(! (0 < switch$10))return 1; - if(! caml_string_notequal(match,cst_KeyB))return 2; - if(! caml_string_notequal(match,cst_KeyC))return 3; - if(! caml_string_notequal(match,cst_KeyD))return 4; - if(! caml_string_notequal(match,cst_KeyE))return 5; - if(! caml_string_notequal(match,cst_KeyF))return 6; - if(! caml_string_notequal(match,cst_KeyG))return 7} - else - {if(! caml_string_notequal(match,cst_F7))return 62; - if(! caml_string_notequal(match,cst_F8))return 63; - if(! caml_string_notequal(match,cst_F9))return 64; - if(! caml_string_notequal(match,cst_Home))return 100; - if(! caml_string_notequal(match,cst_Insert))return 44; - if(! caml_string_notequal(match,cst_IntlBackslash))return 121; - if(! caml_string_notequal(match,cst_IntlYen))return 122}} - else - {var switch$11=caml_string_compare(match,cst_F1); - if(0 <= switch$11) - {if(! (0 < switch$11))return 56; - if(! caml_string_notequal(match,cst_F10))return 65; - if(! caml_string_notequal(match,cst_F11))return 66; - if(! caml_string_notequal(match,cst_F12))return 67; - if(! caml_string_notequal(match,cst_F2))return 57; - if(! caml_string_notequal(match,cst_F3))return 58; - if(! caml_string_notequal(match,cst_F4))return 59; - if(! caml_string_notequal(match,cst_F5))return 60} - else - {if(! caml_string_notequal(match,cst_Digit7))return 34; - if(! caml_string_notequal(match,cst_Digit8))return 35; - if(! caml_string_notequal(match,cst_Digit9))return 36; - if(! caml_string_notequal(match,cst_End))return 101; - if(! caml_string_notequal(match,cst_Enter))return 40; - if(! caml_string_notequal(match,cst_Equal))return 38; - if(! caml_string_notequal(match,cst_Escape))return 42}}} - else - {var switch$12=caml_string_compare(match,cst_BrowserRefresh); - if(0 <= switch$12) - {if(! (0 < switch$12))return 113; - var switch$13=caml_string_compare(match,cst_Delete); - if(0 <= switch$13) - {if(! (0 < switch$13))return 45; - if(! caml_string_notequal(match,cst_Digit0))return 27; - if(! caml_string_notequal(match,cst_Digit1))return 28; - if(! caml_string_notequal(match,cst_Digit2))return 29; - if(! caml_string_notequal(match,cst_Digit3))return 30; - if(! caml_string_notequal(match,cst_Digit4))return 31; - if(! caml_string_notequal(match,cst_Digit5))return 32} - else - {if(! caml_string_notequal(match,cst_BrowserSearch))return 110; - if(! caml_string_notequal(match,cst_BrowserStop))return 114; - if(! caml_string_notequal(match,cst_CapsLock))return 46; - if(! caml_string_notequal(match,cst_Comma))return 53; - if(! caml_string_notequal(match,cst_ContextMenu))return 109; - if(! caml_string_notequal(match,cst_ControlLeft))return 86; - if(! caml_string_notequal(match,cst_ControlRight))return 87}} - else - {var switch$14=caml_string_compare(match,cst_Backslash); - if(0 <= switch$14) - {if(! (0 < switch$14))return 52; - if(! caml_string_notequal(match,cst_Backspace))return 43; - if(! caml_string_notequal(match,cst_BracketLeft))return 47; - if(! caml_string_notequal(match,cst_BracketRight))return 48; - if(! caml_string_notequal(match,cst_BrowserBack))return 116; - if(! caml_string_notequal(match,cst_BrowserFavorites)) - return 112; - if(! caml_string_notequal(match,cst_BrowserForward))return 115; - if(! caml_string_notequal(match,cst_BrowserHome))return 111} - else - {if(! caml_string_notequal(match,cst_AltLeft))return 92; - if(! caml_string_notequal(match,cst_AltRight))return 93; - if(! caml_string_notequal(match,cst_ArrowDown))return 97; - if(! caml_string_notequal(match,cst_ArrowLeft))return 94; - if(! caml_string_notequal(match,cst_ArrowRight))return 95; - if(! caml_string_notequal(match,cst_ArrowUp))return 96; - if(! caml_string_notequal(match,cst_Backquote))return 51}}}} - return 0} - function try_key_code_left(param) - {if(19 <= param) - {if(91 === param)return 88} - else - if(16 <= param) - switch(param - 16 | 0) - {case 0:return 90;case 1:return 86;default:return 92} - return 0} - function try_key_code_right(param) - {if(19 <= param) - {if(91 === param)return 89} - else - if(16 <= param) - switch(param - 16 | 0) - {case 0:return 91;case 1:return 87;default:return 93} - return 0} - function try_key_code_numpad(param) - {if(47 <= param) - {var switcher=param - 96 | 0; - if(! (15 < switcher >>> 0)) - switch(switcher) - {case 0:return 68; - case 1:return 69; - case 2:return 70; - case 3:return 71; - case 4:return 72; - case 5:return 73; - case 6:return 74; - case 7:return 75; - case 8:return 76; - case 9:return 77; - case 10:return 78; - case 11:return 80; - case 12:break; - case 13:return 79; - case 14:return 81; - default:return 84}} - else - if(12 <= param) - switch(param - 12 | 0) - {case 0:return 73; - case 1:return 83; - case 21:return 77; - case 22:return 71; - case 23:return 69; - case 24:return 75; - case 25:return 72; - case 26:return 76; - case 27:return 74; - case 28:return 70; - case 33:return 68; - case 34:return 81 - } - return 0} - function try_key_code_normal(param) - {var switcher=param - 8 | 0; - if(! (214 < switcher >>> 0)) - {var _fM_=switcher; - if(67 <= _fM_) - switch(_fM_) - {case 67:return 11; - case 68:return 12; - case 69:return 13; - case 70:return 14; - case 71:return 15; - case 72:return 16; - case 73:return 17; - case 74:return 18; - case 75:return 19; - case 76:return 20; - case 77:return 21; - case 78:return 22; - case 79:return 23; - case 80:return 24; - case 81:return 25; - case 82:return 26; - case 85:return 109; - case 104:return 56; - case 105:return 57; - case 106:return 58; - case 107:return 59; - case 108:return 60; - case 109:return 61; - case 110:return 62; - case 111:return 63; - case 112:return 64; - case 113:return 65; - case 114:return 66; - case 115:return 67; - case 137:return 119; - case 178:return 49; - case 179:return 38; - case 180:return 53; - case 181:return 37; - case 182:return 54; - case 183:return 55; - case 184:return 51; - case 211:return 47; - case 212:return 52; - case 213:return 48; - case 214:return 50 - } - else - switch(_fM_) - {case 0:return 43; - case 1:return 39; - case 5:return 40; - case 11:return 123; - case 12:return 46; - case 19:return 42; - case 24:return 41; - case 25:return 98; - case 26:return 99; - case 27:return 101; - case 28:return 100; - case 29:return 94; - case 30:return 96; - case 31:return 95; - case 32:return 97; - case 34:return 120; - case 37:return 44; - case 38:return 45; - case 40:return 27; - case 41:return 28; - case 42:return 29; - case 43:return 30; - case 44:return 31; - case 45:return 32; - case 46:return 33; - case 47:return 34; - case 48:return 35; - case 49:return 36; - case 57:return 1; - case 58:return 2; - case 59:return 3; - case 60:return 4; - case 61:return 5; - case 62:return 6; - case 63:return 7; - case 64:return 8; - case 65:return 9; - case 66:return 10 - }} - return 0} - function make_unidentified(param){return 0} - 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 match=evt.location,switcher=match - 1 | 0; - if(2 < switcher >>> 0) - var _fH_=make_unidentified; - else - switch(switcher) - {case 0: - var - _fC_=evt.keyCode, - _fH_=function(_fJ_){return run_next(_fC_,try_key_code_left,_fJ_)}; - break; - case 1: - var - _fD_=evt.keyCode, - _fH_=function(_fI_){return run_next(_fD_,try_key_code_right,_fI_)}; - break; - default: - var - _fE_=evt.keyCode, - _fH_=function(_fK_){return run_next(_fE_,try_key_code_numpad,_fK_)}} - var value=evt.code; - return symbol$11 - (symbol$11 - (symbol$11 - (0, - function(v) - {return v?v:caml_call3(Optdef[7],value,make_unidentified,f)}), - _fH_), - _fG_)} - 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} - 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; - 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_} - function tagged(e) - {var t112=e.tagName,tag=caml_string_of_jsbytes(t112.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)) - switch(switcher) - {case 0: - return caml_string_notequal(tag,cst_a$1) - ?caml_string_notequal(tag,cst_area$1) - ?caml_string_notequal(tag,cst_audio$1)?[61,e]:[2,e] - :[1,e] - :[0,e]; - case 1: - return caml_string_notequal(tag,cst_base$1) - ?caml_string_notequal(tag,cst_blockquote$1) - ?caml_string_notequal(tag,cst_body$1) - ?caml_string_notequal(tag,cst_br$1) - ?caml_string_notequal(tag,cst_button$1)?[61,e]:[7,e] - :[6,e] - :[5,e] - :[4,e] - :[3,e]; - case 2: - return caml_string_notequal(tag,cst_canvas$1) - ?caml_string_notequal(tag,cst_caption$1) - ?caml_string_notequal(tag,cst_col$1) - ?caml_string_notequal(tag,cst_colgroup$1)?[61,e]:[11,e] - :[10,e] - :[9,e] - :[8,e]; - case 3: - return caml_string_notequal(tag,cst_del$1) - ?caml_string_notequal(tag,cst_div$1) - ?caml_string_notequal(tag,cst_dl$1)?[61,e]:[14,e] - :[13,e] - :[12,e]; - case 4:return caml_string_notequal(tag,cst_embed$1)?[61,e]:[15,e]; - case 5: - return caml_string_notequal(tag,cst_fieldset$1) - ?caml_string_notequal(tag,cst_form$1) - ?caml_string_notequal(tag,cst_frame$1) - ?caml_string_notequal(tag,cst_frameset$1)?[61,e]:[18,e] - :[19,e] - :[17,e] - :[16,e]; - case 7: - return caml_string_notequal(tag,cst_h1$1) - ?caml_string_notequal(tag,cst_h2$1) - ?caml_string_notequal(tag,cst_h3$1) - ?caml_string_notequal(tag,cst_h4$1) - ?caml_string_notequal(tag,cst_h5$1) - ?caml_string_notequal(tag,cst_h6$1) - ?caml_string_notequal(tag,cst_head$1) - ?caml_string_notequal(tag,cst_hr$1) - ?caml_string_notequal(tag,cst_html$1)?[61,e]:[28,e] - :[27,e] - :[26,e] - :[25,e] - :[24,e] - :[23,e] - :[22,e] - :[21,e] - :[20,e]; - case 8: - return caml_string_notequal(tag,cst_iframe$1) - ?caml_string_notequal(tag,cst_img$1) - ?caml_string_notequal(tag,cst_input$2) - ?caml_string_notequal(tag,cst_ins$1)?[61,e]:[32,e] - :[31,e] - :[30,e] - :[29,e]; - case 11: - return caml_string_notequal(tag,cst_label$1) - ?caml_string_notequal(tag,cst_legend$1) - ?caml_string_notequal(tag,cst_li$1) - ?caml_string_notequal(tag,cst_link$1)?[61,e]:[36,e] - :[35,e] - :[34,e] - :[33,e]; - case 12: - return caml_string_notequal(tag,cst_map$1) - ?caml_string_notequal(tag,cst_meta$1)?[61,e]:[38,e] - :[37,e]; - case 14: - return caml_string_notequal(tag,cst_object$1) - ?caml_string_notequal(tag,cst_ol$1) - ?caml_string_notequal(tag,cst_optgroup$1) - ?caml_string_notequal(tag,cst_option$1)?[61,e]:[42,e] - :[41,e] - :[40,e] - :[39,e]; - case 15: - return caml_string_notequal(tag,cst_p$1) - ?caml_string_notequal(tag,cst_param$1) - ?caml_string_notequal(tag,cst_pre$1)?[61,e]:[45,e] - :[44,e] - :[43,e]; - case 16:return caml_string_notequal(tag,cst_q$1)?[61,e]:[46,e]; - case 18: - return caml_string_notequal(tag,cst_script$1) - ?caml_string_notequal(tag,cst_select$2) - ?caml_string_notequal(tag,cst_style$1)?[61,e]:[49,e] - :[48,e] - :[47,e]; - case 19: - return caml_string_notequal(tag,cst_table$1) - ?caml_string_notequal(tag,cst_tbody$1) - ?caml_string_notequal(tag,cst_td$1) - ?caml_string_notequal(tag,cst_textarea$1) - ?caml_string_notequal(tag,cst_tfoot$1) - ?caml_string_notequal(tag,cst_th$1) - ?caml_string_notequal(tag,cst_thead$1) - ?caml_string_notequal(tag,cst_title$1) - ?caml_string_notequal(tag,cst_tr$1)?[61,e]:[58,e] - :[57,e] - :[56,e] - :[55,e] - :[54,e] - :[53,e] - :[52,e] - :[51,e] - :[50,e]; - case 20:return caml_string_notequal(tag,cst_ul$1)?[61,e]:[59,e]; - case 21:return caml_string_notequal(tag,cst_video$1)?[61,e]:[60,e] - } - 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 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 opt_taggedEvent(ev) - {function _fd_(ev){return [0,taggedEvent(ev)]} - function _fe_(param){return 0} - return caml_call3(Opt[7],ev,_fe_,_fd_)} - 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_)} - var - requestAnimationFrame= - runtime.caml_js_pure_expr - (function(param) - {var - l= - [0, - _j_.requestAnimationFrame, - [0, - _j_.mozRequestAnimationFrame, - [0, - _j_.webkitRequestAnimationFrame, - [0, - _j_.oRequestAnimationFrame, - [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]) - {var - now=function(param){var t123=new t122();return t123.getTime()}, - last=[0,now(0)]; - return function(callback) - {var - t=now(0), - dt=last[1] + 16.6666666666666679 - t, - dt$0=dt < 0.?0.:dt; - last[1] = t; - _j_.setTimeout(callback,dt$0); - return 0}} - throw _fa_}}); - function hasPushState(param) - {var t128=_j_.history;return caml_call1(Optdef[5],t128.pushState)} - function hasPlaceholder(param) - {var t129=createInput(0,0,t87); - return caml_call1(Optdef[5],t129.placeholder)} - function hasRequired(param) - {var t130=createInput(0,0,t87); - return caml_call1(Optdef[5],t130.required)} - var overflow_limit=2147483000.; - function setTimeout(callback,d) - {var id=[0,0]; - function loop(step,param) - {if(2147483000. < step) - var remain=step - 2147483000.,step$0=overflow_limit; - 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)]; - 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)} - return 0} - function js_array_of_collection(c){return [].slice.call(c)} - var - Js_of_ocaml_Dom_html= - [0, - d, - t87, - getElementById_opt, - getElementById_exn, - getElementById_coerce, - getElementById, - location_origin, - _j_, - no_handler, - handler, - full_handler, - invoke_handler, - eventTarget, - eventRelatedTarget, - Event$0, - addEventListenerWithOptions, - addEventListener, - removeEventListener, - addMousewheelEventListenerWith, - addMousewheelEventListener, - createCustomEvent, - buttonPressed, - eventAbsolutePosition$0, - elementClientPosition, - getDocumentScroll, - [0,of_event,try_key_code_normal], - [0,of_event$0], - createHtml, - createHead, - createLink, - createTitle, - createMeta, - createBase, - createStyle, - createBody, - createForm, - createOptgroup, - createOption, - createSelect, - createInput, - createTextarea, - createButton, - createLabel, - createFieldset, - createLegend, - createUl, - createOl, - createDl, - createLi, - createDiv, - createEmbed, - createP, - createH1, - createH2, - createH3, - createH4, - createH5, - createH6, - createQ, - createBlockquote, - createPre, - createBr, - createHr, - createIns, - createDel, - createA, - createImg, - createObject, - createParam, - createMap, - createArea, - createScript, - createTable, - createCaption, - createCol, - createColgroup, - createThead, - createTfoot, - createTbody, - createTr, - createTh, - createTd, - createSub, - createSup, - createSpan, - createTt, - createI, - createB, - createBig, - createSmall, - createEm, - createStrong, - createCite, - createDfn, - createCode, - createSamp, - createKbd, - createVar, - createAbbr, - createDd, - createDt, - createNoscript, - createAddress, - createFrameset, - createFrame, - createIframe, - createAudio, - createVideo, - Canvas_not_available, - createCanvas, - element$1, - tagged, - opt_tagged, - taggedEvent, - opt_taggedEvent, - stopPropagation, - [0, - element$0, - a, - area, - audio, - base, - blockquote, - body, - br, - button, - canvas, - caption, - col, - colgroup, - del, - div, - embed, - dl, - fieldset, - form, - frameset, - frame, - h1, - h2, - h3, - h4, - h5, - h6, - head, - hr, - html, - iframe, - img, - input$0, - ins, - label, - legend, - li, - link, - map$2, - meta, - object, - ol, - optgroup, - option$1, - p, - param, - pre, - q, - script, - select$0, - style, - table, - tbody, - td, - textarea, - tfoot, - th, - thead, - title, - tr, - ul, - video, - mouseEvent, - keyboardEvent, - wheelEvent, - mouseScrollEvent, - popStateEvent, - messageEvent], - setTimeout, - clearTimeout, - js_array_of_collection, - requestAnimationFrame, - runtime.caml_js_html_entities, - onIE, - hasPushState, - hasPlaceholder, - hasRequired]; - caml_register_global(1651,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; - for(;;) - {if(param$0) - {var q=param$0[2],v=param$0[1],match=caml_call1(f,v); - if(match){var v$0=match[1];return [0,v$0,filter_map$0(f,q)]} - var param$0=q; - continue} - return 0}} - 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_} - 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_= - function(v$2) - {var match$3=tagged(v$2); - switch(match$3[0]) - {case 31: - var v=match$3[1]; - if(get)var sth=get[1],get$0=sth;else var get$0=0; - if(have_content(v)) - {var - name$1=caml_string_of_jsstring(v.name), - value=v.value, - t20=v.type, - match=caml_string_of_jsbytes(t20.toLowerCase()); - if(caml_string_notequal(match,cst_checkbox)) - {if(! caml_string_notequal(match,cst_file)) - {if(get$0)return [0,[0,name$1,[0,-976970511,value]],0]; - var match$0=caml_call1(Optdef[10],v.files); - if(match$0) - {var list=match$0[1]; - if(caml_call2(symbol$8,list.length,0)) - return [0,[0,name$1,[0,-976970511,""]],0]; - 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_); - 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_); - if(match$2) - {var file=match$2[1]; - return [0,[0,name$1,[0,781515420,file]],0]} - return 0} - return 0} - var switch$0=0; - if(caml_string_notequal(match,cst_password)) - {if(caml_string_notequal(match,cst_radio)) - {var switch$1=0; - if - (caml_string_notequal(match,cst_reset) - && - caml_string_notequal(match,cst_submit$0)) - {if(caml_string_notequal(match,cst_text)) - return [0,[0,name$1,[0,-976970511,value]],0]; - switch$0 = 1; - switch$1 = 1} - if(! switch$1)return 0}} - else - switch$0 = 1; - if(switch$0)return [0,[0,name$1,[0,-976970511,value]],0]} - return v.checked | 0?[0,[0,name$1,[0,-976970511,value]],0]:0} - return 0; - case 48: - var v$0=match$3[1]; - if(have_content(v$0)) - {var name$0=caml_string_of_jsstring(v$0.name); - if(v$0.multiple | 0) - {var - _eZ_= - function(i) - {var t13=v$0.options,_e5_=t13.item(i); - return caml_call1(Opt[10],_e5_)}, - t10=v$0.options, - options=caml_call2(Stdlib_Array[2],t10.length,_eZ_), - _e0_=caml_call1(Stdlib_Array[11],options); - return filter_map$0 - (function(param) - {if(param) - {var e=param[1]; - return e.selected | 0 - ?[0,[0,name$0,[0,-976970511,e.value]]] - :0} - return 0}, - _e0_)} - return [0,[0,name$0,[0,-976970511,v$0.value]],0]} - return 0; - case 53: - var v$1=match$3[1]; - if(have_content(v$1)) - {var name=caml_string_of_jsstring(v$1.name); - 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_); - if(match) - {var x=match[1],i$0=i - 1 | 0,acc$0=[0,x,acc],acc=acc$0,i=i$0; - continue} - var i$1=i - i | 0,i=i$1; - continue}} - 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_); - return f.append(t38,file)} - var s=_eU_[2],t35=caml_jsstring_of_string(_eV_); - 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_); - 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]; - return [0,name,caml_string_of_jsstring(s)]} - throw [0,Assert_failure,_o_]} - return caml_call2(Stdlib_List[19],_eP_,_eO_)} - var - Js_of_ocaml_Form= - [0, - formData, - formData_form, - append, - post_form_contents, - get_form_contents, - empty_form_contents, - form_elements]; - caml_register_global(1652,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), - progress$1=caml_call1(Event[1],cst_progress$1), - abort$1=caml_call1(Event[1],cst_abort$1), - error$1=caml_call1(Event[1],cst_error$1), - 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= - [0, - readystatechange, - loadstart$1, - progress$1, - abort$1, - error$1, - load$1, - timeout, - loadend$0], - Js_of_ocaml_XmlHttpRequest=[0,runtime.caml_xmlhttprequest_create,Event$1]; - caml_register_global - (1653,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_)} - function set_onmessage(handler) - {if(Unsafe[1].onmessage === t39) - caml_call1(Stdlib[1],cst_Worker_onmessage_is_undefi); - function js_handler(ev){return caml_call1(handler,ev.data)} - var t7=caml_js_wrap_callback(js_handler); - return Unsafe[1].onmessage = t7} - function post_message(t10) - {if(Unsafe[1].postMessage === t39) - caml_call1(Stdlib[1],cst_Worker_onmessage_is_undefi$0); - return Unsafe[1].postMessage(t10)} - 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"); - 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"); - var - defaultContextAttributes= - {"alpha":t25, - "depth":t25, - "stencil":t4, - "antialias":t25, - "premultipliedAlpha":t4, - "preserveDrawingBuffer":t4, - "preferLowPowerToHighPerformance":t4, - "failIfMajorPerformanceCaveat":t4}, - webglcontextlost=caml_call1(Event$0[87],cst_webglcontextlost), - webglcontextrestored=caml_call1(Event$0[87],cst_webglcontextrestored), - webglcontextcreationerror= - caml_call1(Event$0[87],cst_webglcontextcreationerror), - Event$2= - [0,webglcontextlost,webglcontextrestored,webglcontextcreationerror]; - function getContext(t3) - {var ctx=t3.getContext("webgl"); - return caml_call1(Opt[5],ctx)?ctx:t3.getContext("experimental-webgl")} - function getContextWithAttributes(t9,t8) - {var ctx=t9.getContext("webgl",t8); - 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"); - function regexp(s) - {var t0=caml_jsbytes_of_string(s);return new t11(t0,"g")} - function regexp_case_fold(s) - {var t3=caml_jsbytes_of_string(s);return new t11(t3,"gi")} - function regexp_with_flag(s,f) - {var - t7=caml_jsstring_of_string(caml_call2(Stdlib[28],cst_g,f)), - 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 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_)} - 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 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 t21=new t11("[$]","g"); - function quote_repl(s) - {var t23=caml_jsbytes_of_string(s);return t23.replace(t21,"$$$$")} - function global_replace(r,s,s_by) - {r.lastIndex = 0; - var t27=quote_repl(s_by),t28=caml_jsbytes_of_string(s); - return caml_string_of_jsbytes(t28.replace(r,t27))} - function replace_first(r,s,s_by) - {var - match=r.ignoreCase | 0, - match$0=r.multiline | 0, - flags=match?match$0?"mi":"i":match$0?"m":"", - t32=r.source, - t35=new t11(t32,flags), - t36=quote_repl(s_by), - t37=caml_jsbytes_of_string(s); - return caml_string_of_jsbytes(t37.replace(t35,t36))} - function list_of_js_array(a) - {var idx$1=a.length - 1 | 0,accu=0,idx=idx$1; - for(;;) - {if(caml_call2(symbol$5,idx,0))return accu; - var - idx$0=idx - 1 | 0, - accu$0=[0,blunt_str_array_get(a,idx),accu], - accu=accu$0, - idx=idx$0; - continue}} - function split(r,s) - {r.lastIndex = 0; - var t42=caml_jsbytes_of_string(s); - return list_of_js_array(t42.split(r))} - function bounded_split(r,s,i) - {r.lastIndex = 0; - var t47=caml_jsbytes_of_string(s); - return list_of_js_array(t47.split(r,i))} - var t48=regexp(cst); - function quote(s) - {var t50=caml_jsbytes_of_string(s); - return caml_string_of_jsbytes(t50.replace(t48,"\\$&"))} - function regexp_string(s){return regexp(quote(s))} - function regexp_string_case_fold(s){return regexp_case_fold(quote(s))} - var - Js_of_ocaml_Regexp= - [0, - regexp, - regexp_case_fold, - regexp_with_flag, - quote, - regexp_string, - regexp_string_case_fold, - string_match, - search_forward, - search_forward, - matched_string, - matched_group, - global_replace, - replace_first, - split, - bounded_split]; - caml_register_global(1657,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"); - function urldecode_js_string_string(s) - {t14.lastIndex = 0; - return caml_string_of_jsbytes(unescape(s.replace(t14," ")))} - function urldecode(s) - {return caml_string_of_jsbytes - (unescape - (caml_jsbytes_of_string(global_replace(plus_re,s,cst$1))))} - function urlencode(opt,s) - {if(opt)var sth=opt[1],with_plus=sth;else var with_plus=1; - if(with_plus) - {var s$0=caml_string_of_jsbytes(escape(caml_jsbytes_of_string(s))); - return global_replace(plus_re,s$0,cst_2B)} - return caml_string_of_jsbytes(escape(caml_jsbytes_of_string(s)))} - var - Not_an_http_protocol= - [248,cst_Js_of_ocaml_Url_Not_an_htt,caml_fresh_oo_id(0)], - default_http_port=80, - default_https_port=443; - function path_of_path_string(s) - {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 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_} - return a} - function encode_arguments(l) - {function _ew_(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_)} - function decode_arguments_js_string(s) - {var - t0=caml_jsstring_of_string(caml_call2(String[1],1,38)), - t18=s.split(t0), - len=t18.length; - function aux(acc,idx) - {var idx$0=idx; - for(;;) - {if(caml_call2(symbol$5,idx$0,0))return acc; - try - {var - _eo_=idx$0 - 1 | 0, - _ep_= - function(s) - {function _eu_(param) - {var - y=param[2], - x=param[1], - _ev_=urldecode_js_string_string(y); - return [0,urldecode_js_string_string(x),_ev_]} - 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; - 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) - {var idx$1=idx$0 - 1 | 0,idx$0=idx$1;continue} - throw _er_}}} - return aux(0,len - 1 | 0)} - function decode_arguments(s) - {return decode_arguments_js_string(caml_jsbytes_of_string(s))} - var - t19=caml_jsbytes_of_string(cst_Hh_Tt_Tt_Pp_Ss_0_9a_zA_Z_0), - t24=new t11(t19), - 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) - {var - prot_string=caml_call2(Optdef[8],res[1],interrupt), - match=caml_string_of_jsbytes(prot_string.toLowerCase()); - if - (caml_string_notequal(match,cst_file$0) - && - caml_string_notequal(match,cst_file$1)) - {var switch$0=0; - if - (caml_string_notequal(match,cst_http) - && - caml_string_notequal(match,cst_http$0)) - {var switch$1=0; - if - (caml_string_notequal(match,cst_https) - && - caml_string_notequal(match,cst_https$0)) - switch$1 = 1; - if(! switch$1){var ssl=1;switch$0 = 2}} - else - switch$0 = 1; - var switch$2=0; - switch(switch$0) - {case 1:var ssl=0;switch$2 = 1;break; - case 0:break; - default:switch$2 = 1} - if(switch$2) - {var - _ef_=function(param){return caml_jsbytes_of_string(cst$7)}, - 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_= - caml_string_notequal(s,cst$6)?caml_int_of_string(s):ssl?443:80, - url= - [0, - urldecode_js_string_string - (caml_call2(Optdef[8],res[2],interrupt)), - _em_, - _ek_, - path_str, - _ej_, - _eh_], - _en_=ssl?[1,url]:[0,url]; - return [0,_en_]}} - throw Not_an_http_protocol} - function _d8_(param) - {function _d__(res) - {var - 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)} - 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_)} - function url_of_string(s) - {return url_of_js_string(caml_jsbytes_of_string(s))} - function string_of_url(param) - {switch(param[0]) - {case 0: - var - match=param[1], - frag=match[6], - args=match[5], - path=match[3], - 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_); - else - var _dv_=cst$21; - if(args) - var - _dw_=encode_arguments(args), - _dx_=caml_call2(Stdlib[28],cst$15,_dw_); - else - var _dx_=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_); - if(80 === port) - var _dE_=cst$18; - else - var - _dI_=caml_call1(Stdlib[33],port), - _dE_=caml_call2(Stdlib[28],cst$19,_dI_); - 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_); - case 1: - var - match$0=param[1], - frag$0=match$0[6], - args$0=match$0[5], - path$0=match$0[3], - port$0=match$0[2], - 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_); - else - var _dK_=cst$30; - if(args$0) - var - _dL_=encode_arguments(args$0), - _dM_=caml_call2(Stdlib[28],cst$24,_dL_); - else - var _dM_=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_); - if(443 === port$0) - var _dT_=cst$27; - else - var - _dX_=caml_call1(Stdlib[33],port$0), - _dT_=caml_call2(Stdlib[28],cst$28,_dX_); - 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_); - default: - var - match$1=param[1], - frag$1=match$1[4], - args$1=match$1[3], - 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_); - else - var _dZ_=cst$36; - if(args$1) - var - _d0_=encode_arguments(args$1), - _d1_=caml_call2(Stdlib[28],cst$33,_d0_); - else - var _d1_=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; - else - var - t42=function(param,_dt_){return 0}, - t41$0=function(param,_ds_){return 0}, - t40=function(param){return 0}, - _s_= - {"href":"", - "protocol":"", - "host":"", - "hostname":"", - "port":"", - "pathname":"", - "search":"", - "hash":"", - "origin":t39, - "reload":caml_js_wrap_meth_callback(t40), - "replace":caml_js_wrap_meth_callback(t41$0), - "assign":caml_js_wrap_meth_callback(t42)}; - var - host=urldecode_js_string_string(_s_.hostname), - protocol=urldecode_js_string_string(_s_.protocol), - _t_=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), - path=path_of_path_string(path_string), - t49=_s_.search; - if(t49.charAt(0) === "?") - var t52=_s_.search,_u_=t52.slice(1); - else - var _u_=_s_.search; - var arguments$0=decode_arguments_js_string(_u_); - 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 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)} - function set$0(u) - {var t62=caml_jsbytes_of_string(string_of_url(u));return _s_.href = t62} - var - as_string=urldecode_js_string_string(_s_.href), - Js_of_ocaml_Url= - [0, - urldecode, - urlencode, - default_http_port, - default_https_port, - path_of_path_string, - encode_arguments, - decode_arguments, - url_of_string, - string_of_url, - [0, - host, - port, - protocol, - path_string, - path, - arguments$0, - get_fragment, - set_fragment, - get$2, - set$0, - as_string]]; - caml_register_global(1659,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"); - function update_file(name,content) - {var oc=caml_call1(Stdlib[60],name); - caml_call2(Stdlib[66],oc,content); - return caml_call1(Stdlib[76],oc)} - function set_channel_flusher(out_channel,f) - {var - f$0= - caml_js_wrap_callback - (function(s){return caml_call1(f,caml_string_of_jsbytes(s))}); - return runtime.caml_ml_set_channel_output(out_channel,f$0)} - function set_channel_filler(in_channel,f) - {var f$0=caml_js_wrap_callback(f); - return runtime.caml_ml_set_channel_refill(in_channel,f$0)} - function mount(path,f) - {return runtime.caml_mount_autoload - (path, - caml_js_wrap_callback - (function(prefix,path){return caml_call2(f,prefix,path)}))} - function unmount(path){return runtime.caml_unmount(path)} - if(caml_call2(String[68],git_version,cst$38)) - 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_); - var - _v_=runtime.caml_create_file, - _w_=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_)}, - unmount, - mount, - _w_, - _v_, - update_file, - js_of_ocaml_version]; - caml_register_global(1661,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)} - function observe(node,f,box,param) - {var t1=caml_js_wrap_callback(f),t4=new t2$0(t1); - if(box) - {var box$0=box[1],t8={};t8.box = box$0;t4.observe(node,t8)} - else - t4.observe(node); - return t4} - var - 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"); - 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_= - caml_call1 - (caml_call1(Stdlib_List[19],caml_jsstring_of_string),entry_types), - t1=caml_js_from_array(caml_call1(Stdlib_Array[12],_dl_)), - t5={}; - t5.entryTypes = t1; - var t3=caml_js_wrap_callback(f),t6=new t4$1(t3); - t6.observe(t5); - 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"); - 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)} - function observe$1 - (node, - f, - child_list, - attributes, - character_data, - subtree, - attribute_old_value, - character_data_old_value, - attribute_filter, - param) - {function opt_iter(x,f) - {if(x){var x$0=x[1];return caml_call1(f,x$0)}return 0} - var t1=caml_js_wrap_callback(f),t19=new t2$1(t1),t18={}; - opt_iter(child_list,function(t3){return t18.childList = t3}); - opt_iter(attributes,function(t5){return t18.attributes = t5}); - opt_iter(character_data,function(t7){return t18.characterData = t7}); - opt_iter(subtree,function(t9){return t18.subtree = t9}); - opt_iter - (attribute_old_value,function(t11){return t18.attributeOldValue = t11}); - opt_iter - (character_data_old_value, - function(t13){return t18.characterDataOldValue = t13}); - opt_iter - (attribute_filter, - function(l) - {var t15=caml_js_from_array(caml_call1(Stdlib_Array[12],l)); - return t18.attributeFilter = t15}); - t19.observe(node,t18); - return t19} - var - 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"); - var t1=Unsafe[1].Object; - function create$0(param){return new t1()} - function add$0(t,k,v){return t[k.concat("_")] = v} - function remove(t,k){return delete t[k.concat("_")]} - function find(t,k){return t[k.concat("_")]} - function keys(t) - {var - t10=Unsafe[1].Object, - t11=t10.keys(t), - res=[0,0], - _dh_=t11.length - 1 | 0, - _dg_=0; - if(! (_dh_ < 0)) - {var i=_dg_; - for(;;) - {var - _di_=function(param){return caml_call1(Stdlib[2],cst_Jstable_keys)}, - t15=caml_call2(Optdef[8],t11[i],_di_), - 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} - 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"); - var t11$1=Unsafe[1].JSON; - function reviver(this$0,key,value) - {if(typeof value === "string")return caml_string_of_jsbytes(value); - if - (value instanceof array_length - && - 4 - === - value.length - && - 255 - === - value[0]) - return runtime.caml_int64_create_lo_mi_hi(value[1],value[2],value[3]); - 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_) - ?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"); - function string_of_name(param) - {var _de_=param; - if(74 <= _de_) - {if(111 <= _de_) - switch(_de_) - {case 111:return cst_palevioletred; - case 112:return cst_papayawhip; - case 113:return cst_peachpuff; - case 114:return cst_peru; - case 115:return cst_pink; - case 116:return cst_plum; - case 117:return cst_powderblue; - case 118:return cst_purple; - case 119:return cst_red; - case 120:return cst_rosybrown; - case 121:return cst_royalblue; - case 122:return cst_saddlebrown; - case 123:return cst_salmon; - case 124:return cst_sandybrown; - case 125:return cst_seagreen; - case 126:return cst_seashell; - case 127:return cst_sienna; - case 128:return cst_silver; - case 129:return cst_skyblue; - case 130:return cst_slateblue; - case 131:return cst_slategray; - case 132:return cst_slategrey; - case 133:return cst_snow; - case 134:return cst_springgreen; - case 135:return cst_steelblue; - case 136:return cst_tan; - case 137:return cst_teal; - case 138:return cst_thistle; - case 139:return cst_tomato; - case 140:return cst_turquoise; - case 141:return cst_violet; - case 142:return cst_wheat; - case 143:return cst_white; - case 144:return cst_whitesmoke; - case 145:return cst_yellow; - default:return cst_yellowgreen} - switch(_de_) - {case 74:return cst_lightpink; - case 75:return cst_lightsalmon; - case 76:return cst_lightseagreen; - case 77:return cst_lightskyblue; - case 78:return cst_lightslategray; - case 79:return cst_lightslategrey; - case 80:return cst_lightsteelblue; - case 81:return cst_lightyellow; - case 82:return cst_lime; - case 83:return cst_limegreen; - case 84:return cst_linen; - case 85:return cst_magenta; - case 86:return cst_maroon; - case 87:return cst_mediumaquamarine; - case 88:return cst_mediumblue; - case 89:return cst_mediumorchid; - case 90:return cst_mediumpurple; - case 91:return cst_mediumseagreen; - case 92:return cst_mediumslateblue; - case 93:return cst_mediumspringgreen; - case 94:return cst_mediumturquoise; - case 95:return cst_mediumvioletred; - case 96:return cst_midnightblue; - case 97:return cst_mintcream; - case 98:return cst_mistyrose; - case 99:return cst_moccasin; - case 100:return cst_navajowhite; - case 101:return cst_navy; - case 102:return cst_oldlace; - case 103:return cst_olive; - case 104:return cst_olivedrab; - case 105:return cst_orange; - case 106:return cst_orangered; - case 107:return cst_orchid; - case 108:return cst_palegoldenrod; - case 109:return cst_palegreen; - default:return cst_paleturquoise}} - if(37 <= _de_) - switch(_de_) - {case 37:return cst_darkslategrey; - case 38:return cst_darkturquoise; - case 39:return cst_darkviolet; - case 40:return cst_deeppink; - case 41:return cst_deepskyblue; - case 42:return cst_dimgray; - case 43:return cst_dimgrey; - case 44:return cst_dodgerblue; - case 45:return cst_firebrick; - case 46:return cst_floralwhite; - case 47:return cst_forestgreen; - case 48:return cst_fuchsia; - case 49:return cst_gainsboro; - case 50:return cst_ghostwhite; - case 51:return cst_gold; - case 52:return cst_goldenrod; - case 53:return cst_gray; - case 54:return cst_grey; - case 55:return cst_green; - case 56:return cst_greenyellow; - case 57:return cst_honeydew; - case 58:return cst_hotpink; - case 59:return cst_indianred; - case 60:return cst_indigo; - case 61:return cst_ivory; - case 62:return cst_khaki; - case 63:return cst_lavender; - case 64:return cst_lavenderblush; - case 65:return cst_lawngreen; - case 66:return cst_lemonchiffon; - case 67:return cst_lightblue; - case 68:return cst_lightcoral; - case 69:return cst_lightcyan; - case 70:return cst_lightgoldenrodyellow; - case 71:return cst_lightgray; - case 72:return cst_lightgreen; - default:return cst_lightgrey} - switch(_de_) - {case 0:return cst_aliceblue; - case 1:return cst_antiquewhite; - case 2:return cst_aqua; - case 3:return cst_aquamarine; - case 4:return cst_azure; - case 5:return cst_beige; - case 6:return cst_bisque; - case 7:return cst_black; - case 8:return cst_blanchedalmond; - case 9:return cst_blue; - case 10:return cst_blueviolet; - case 11:return cst_brown; - case 12:return cst_burlywood; - case 13:return cst_cadetblue; - case 14:return cst_chartreuse; - case 15:return cst_chocolate; - case 16:return cst_coral; - case 17:return cst_cornflowerblue; - case 18:return cst_cornsilk; - case 19:return cst_crimson; - case 20:return cst_cyan; - case 21:return cst_darkblue; - case 22:return cst_darkcyan; - case 23:return cst_darkgoldenrod; - case 24:return cst_darkgray; - case 25:return cst_darkgreen; - case 26:return cst_darkgrey; - case 27:return cst_darkkhaki; - case 28:return cst_darkmagenta; - case 29:return cst_darkolivegreen; - case 30:return cst_darkorange; - case 31:return cst_darkorchid; - case 32:return cst_darkred; - case 33:return cst_darksalmon; - case 34:return cst_darkseagreen; - case 35:return cst_darkslateblue; - default:return cst_darkslategray}} - function name_of_string(s) - {var switch$0=caml_string_compare(s,cst_lightgrey$0); - if(0 <= switch$0) - {if(! (0 < switch$0))return 73; - var switch$1=caml_string_compare(s,cst_paleturquoise$0); - if(0 <= switch$1) - {if(! (0 < switch$1))return 110; - var switch$2=caml_string_compare(s,cst_skyblue$0); - if(0 <= switch$2) - {if(! (0 < switch$2))return 129; - var switch$3=caml_string_compare(s,cst_thistle$0); - if(0 <= switch$3) - {if(! (0 < switch$3))return 138; - if(! caml_string_notequal(s,cst_tomato$0))return 139; - if(! caml_string_notequal(s,cst_turquoise$0))return 140; - if(! caml_string_notequal(s,cst_violet$0))return 141; - if(! caml_string_notequal(s,cst_wheat$0))return 142; - if(! caml_string_notequal(s,cst_white$0))return 143; - if(! caml_string_notequal(s,cst_whitesmoke$0))return 144; - if(! caml_string_notequal(s,cst_yellow$0))return 145; - if(! caml_string_notequal(s,cst_yellowgreen$0))return 146} - else - {if(! caml_string_notequal(s,cst_slateblue$0))return 130; - if(! caml_string_notequal(s,cst_slategray$0))return 131; - if(! caml_string_notequal(s,cst_slategrey$0))return 132; - if(! caml_string_notequal(s,cst_snow$0))return 133; - if(! caml_string_notequal(s,cst_springgreen$0))return 134; - if(! caml_string_notequal(s,cst_steelblue$0))return 135; - if(! caml_string_notequal(s,cst_tan$0))return 136; - if(! caml_string_notequal(s,cst_teal$0))return 137}} - else - {var switch$4=caml_string_compare(s,cst_rosybrown$0); - if(0 <= switch$4) - {if(! (0 < switch$4))return 120; - if(! caml_string_notequal(s,cst_royalblue$0))return 121; - if(! caml_string_notequal(s,cst_saddlebrown$0))return 122; - if(! caml_string_notequal(s,cst_salmon$0))return 123; - if(! caml_string_notequal(s,cst_sandybrown$0))return 124; - if(! caml_string_notequal(s,cst_seagreen$0))return 125; - if(! caml_string_notequal(s,cst_seashell$0))return 126; - if(! caml_string_notequal(s,cst_sienna$0))return 127; - if(! caml_string_notequal(s,cst_silver$0))return 128} - else - {if(! caml_string_notequal(s,cst_palevioletred$0))return 111; - if(! caml_string_notequal(s,cst_papayawhip$0))return 112; - if(! caml_string_notequal(s,cst_peachpuff$0))return 113; - if(! caml_string_notequal(s,cst_peru$0))return 114; - if(! caml_string_notequal(s,cst_pink$0))return 115; - if(! caml_string_notequal(s,cst_plum$0))return 116; - if(! caml_string_notequal(s,cst_powderblue$0))return 117; - if(! caml_string_notequal(s,cst_purple$0))return 118; - if(! caml_string_notequal(s,cst_red$0))return 119}}} - else - {var switch$5=caml_string_compare(s,cst_mediumslateblue$0); - if(0 <= switch$5) - {if(! (0 < switch$5))return 92; - var switch$6=caml_string_compare(s,cst_navy$0); - if(0 <= switch$6) - {if(! (0 < switch$6))return 101; - if(! caml_string_notequal(s,cst_oldlace$0))return 102; - if(! caml_string_notequal(s,cst_olive$0))return 103; - if(! caml_string_notequal(s,cst_olivedrab$0))return 104; - if(! caml_string_notequal(s,cst_orange$0))return 105; - if(! caml_string_notequal(s,cst_orangered$0))return 106; - if(! caml_string_notequal(s,cst_orchid$0))return 107; - if(! caml_string_notequal(s,cst_palegoldenrod$0))return 108; - if(! caml_string_notequal(s,cst_palegreen$0))return 109} - else - {if(! caml_string_notequal(s,cst_mediumspringgreen$0))return 93; - if(! caml_string_notequal(s,cst_mediumturquoise$0))return 94; - if(! caml_string_notequal(s,cst_mediumvioletred$0))return 95; - if(! caml_string_notequal(s,cst_midnightblue$0))return 96; - if(! caml_string_notequal(s,cst_mintcream$0))return 97; - if(! caml_string_notequal(s,cst_mistyrose$0))return 98; - if(! caml_string_notequal(s,cst_moccasin$0))return 99; - if(! caml_string_notequal(s,cst_navajowhite$0))return 100}} - else - {var switch$7=caml_string_compare(s,cst_limegreen$0); - if(0 <= switch$7) - {if(! (0 < switch$7))return 83; - if(! caml_string_notequal(s,cst_linen$0))return 84; - if(! caml_string_notequal(s,cst_magenta$0))return 85; - if(! caml_string_notequal(s,cst_maroon$0))return 86; - if(! caml_string_notequal(s,cst_mediumaquamarine$0))return 87; - if(! caml_string_notequal(s,cst_mediumblue$0))return 88; - if(! caml_string_notequal(s,cst_mediumorchid$0))return 89; - if(! caml_string_notequal(s,cst_mediumpurple$0))return 90; - if(! caml_string_notequal(s,cst_mediumseagreen$0))return 91} - else - {if(! caml_string_notequal(s,cst_lightpink$0))return 74; - if(! caml_string_notequal(s,cst_lightsalmon$0))return 75; - if(! caml_string_notequal(s,cst_lightseagreen$0))return 76; - if(! caml_string_notequal(s,cst_lightskyblue$0))return 77; - if(! caml_string_notequal(s,cst_lightslategray$0))return 78; - if(! caml_string_notequal(s,cst_lightslategrey$0))return 79; - if(! caml_string_notequal(s,cst_lightsteelblue$0))return 80; - if(! caml_string_notequal(s,cst_lightyellow$0))return 81; - if(! caml_string_notequal(s,cst_lime$0))return 82}}}} - else - {var switch$8=caml_string_compare(s,cst_darkslategray$0); - if(0 <= switch$8) - {if(! (0 < switch$8))return 36; - var switch$9=caml_string_compare(s,cst_greenyellow$0); - if(0 <= switch$9) - {if(! (0 < switch$9))return 56; - var switch$10=caml_string_compare(s,cst_lavenderblush$0); - if(0 <= switch$10) - {if(! (0 < switch$10))return 64; - if(! caml_string_notequal(s,cst_lawngreen$0))return 65; - if(! caml_string_notequal(s,cst_lemonchiffon$0))return 66; - if(! caml_string_notequal(s,cst_lightblue$0))return 67; - if(! caml_string_notequal(s,cst_lightcoral$0))return 68; - if(! caml_string_notequal(s,cst_lightcyan$0))return 69; - if(! caml_string_notequal(s,cst_lightgoldenrodyellow$0)) - return 70; - if(! caml_string_notequal(s,cst_lightgray$0))return 71; - if(! caml_string_notequal(s,cst_lightgreen$0))return 72} - else - {if(! caml_string_notequal(s,cst_grey$0))return 54; - if(! caml_string_notequal(s,cst_honeydew$0))return 57; - if(! caml_string_notequal(s,cst_hotpink$0))return 58; - if(! caml_string_notequal(s,cst_indianred$0))return 59; - if(! caml_string_notequal(s,cst_indigo$0))return 60; - if(! caml_string_notequal(s,cst_ivory$0))return 61; - if(! caml_string_notequal(s,cst_khaki$0))return 62; - if(! caml_string_notequal(s,cst_lavender$0))return 63}} - else - {var switch$11=caml_string_compare(s,cst_floralwhite$0); - if(0 <= switch$11) - {if(! (0 < switch$11))return 46; - if(! caml_string_notequal(s,cst_forestgreen$0))return 47; - if(! caml_string_notequal(s,cst_fuchsia$0))return 48; - if(! caml_string_notequal(s,cst_gainsboro$0))return 49; - if(! caml_string_notequal(s,cst_ghostwhite$0))return 50; - if(! caml_string_notequal(s,cst_gold$0))return 51; - if(! caml_string_notequal(s,cst_goldenrod$0))return 52; - if(! caml_string_notequal(s,cst_gray$0))return 53; - if(! caml_string_notequal(s,cst_green$0))return 55} - else - {if(! caml_string_notequal(s,cst_darkslategrey$0))return 37; - if(! caml_string_notequal(s,cst_darkturquoise$0))return 38; - if(! caml_string_notequal(s,cst_darkviolet$0))return 39; - if(! caml_string_notequal(s,cst_deeppink$0))return 40; - if(! caml_string_notequal(s,cst_deepskyblue$0))return 41; - if(! caml_string_notequal(s,cst_dimgray$0))return 42; - if(! caml_string_notequal(s,cst_dimgrey$0))return 43; - if(! caml_string_notequal(s,cst_dodgerblue$0))return 44; - if(! caml_string_notequal(s,cst_firebrick$0))return 45}}} - else - {var switch$12=caml_string_compare(s,cst_cornsilk$0); - if(0 <= switch$12) - {if(! (0 < switch$12))return 18; - var switch$13=caml_string_compare(s,cst_darkkhaki$0); - if(0 <= switch$13) - {if(! (0 < switch$13))return 27; - if(! caml_string_notequal(s,cst_darkmagenta$0))return 28; - if(! caml_string_notequal(s,cst_darkolivegreen$0))return 29; - if(! caml_string_notequal(s,cst_darkorange$0))return 30; - if(! caml_string_notequal(s,cst_darkorchid$0))return 31; - if(! caml_string_notequal(s,cst_darkred$0))return 32; - if(! caml_string_notequal(s,cst_darksalmon$0))return 33; - if(! caml_string_notequal(s,cst_darkseagreen$0))return 34; - if(! caml_string_notequal(s,cst_darkslateblue$0))return 35} - else - {if(! caml_string_notequal(s,cst_crimson$0))return 19; - if(! caml_string_notequal(s,cst_cyan$0))return 20; - if(! caml_string_notequal(s,cst_darkblue$0))return 21; - if(! caml_string_notequal(s,cst_darkcyan$0))return 22; - if(! caml_string_notequal(s,cst_darkgoldenrod$0))return 23; - if(! caml_string_notequal(s,cst_darkgray$0))return 24; - if(! caml_string_notequal(s,cst_darkgreen$0))return 25; - if(! caml_string_notequal(s,cst_darkgrey$0))return 26}} - else - {var switch$14=caml_string_compare(s,cst_blue$0); - if(0 <= switch$14) - {if(! (0 < switch$14))return 9; - if(! caml_string_notequal(s,cst_blueviolet$0))return 10; - if(! caml_string_notequal(s,cst_brown$0))return 11; - if(! caml_string_notequal(s,cst_burlywood$0))return 12; - if(! caml_string_notequal(s,cst_cadetblue$0))return 13; - if(! caml_string_notequal(s,cst_chartreuse$0))return 14; - if(! caml_string_notequal(s,cst_chocolate$0))return 15; - if(! caml_string_notequal(s,cst_coral$0))return 16; - if(! caml_string_notequal(s,cst_cornflowerblue$0))return 17} - else - {if(! caml_string_notequal(s,cst_aliceblue$0))return 0; - if(! caml_string_notequal(s,cst_antiquewhite$0))return 1; - if(! caml_string_notequal(s,cst_aqua$0))return 2; - if(! caml_string_notequal(s,cst_aquamarine$0))return 3; - if(! caml_string_notequal(s,cst_azure$0))return 4; - if(! caml_string_notequal(s,cst_beige$0))return 5; - 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_]} - 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_}} - 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) - {if(a){var a$0=a[1];return [6,[0,h,s,l,a$0]]}return [5,[0,h,s,l]]} - function string_of_t(param) - {switch(param[0]) - {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); - 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); - case 3: - var - match$1=param[1], - a=match$1[4], - 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); - case 4: - var - match$2=param[1], - a$0=match$2[4], - 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); - 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); - default: - var - match$4=param[1], - a$1=match$4[4], - 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)}} - 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$_) - {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$_} - in_range(red); - in_range(green); - in_range(blue); - return caml_call4(Stdlib_Printf[4],_b6_,red,green,blue)} - function js_t_of_js_string(s) - {var - t0=caml_jsbytes_of_string(cst_rgb_s_d_s_d_s_d), - t13=new t11(t0), - t2=caml_jsbytes_of_string(cst_rgb_s_d_s_d_s_d$0), - t17=new t11(t2), - t4=caml_jsbytes_of_string(cst_rgba_s_d_s_d_s_d_d_d), - t15=new t11(t4), - t6=caml_jsbytes_of_string(cst_rgba_s_d_s_d_s_d_d_d$0), - t19=new t11(t6), - t8=caml_jsbytes_of_string(cst_hsl_s_d_s_d_s_d), - t21=new t11(t8), - t10=caml_jsbytes_of_string(cst_hsla_s_d_s_d_s_d_d_d), - t23=new t11(t10); - if - (! - (t13.test(s) | 0) - && - ! - (t15.test(s) | 0) - && - ! - (t17.test(s) | 0) - && - ! - (t19.test(s) | 0) - && - ! - (t21.test(s) | 0) - && - ! - (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), - _c9_=caml_call2(Stdlib[28],_c8_,cst_is_not_a_valid_color); - throw [0,Stdlib[6],_c9_]} - return s} - function js(c) - {if(0 === c[0]) - {var n=c[1];return caml_jsstring_of_string(string_of_name(n))} - return caml_jsstring_of_string(string_of_t(c))} - 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 - fail= - function(param) - {var _c6_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color$0); - throw [0,Stdlib[6],_c6_]}, - 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), - i_of_s_o= - function(param) - {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]; - else - {if(_c5_[1] !== Stdlib[7])throw _c5_;var s=_c5_[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_]}} - 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]; - else - {if(_c0_[1] !== Stdlib[7])throw _c0_;var s=_c0_[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_]}}, - match=string_match(re_rgb,s,0); - if(match) - {var - r=match[1], - red=matched_group(r,2), - green=matched_group(r,3), - blue=matched_group(r,4), - 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)) - {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)) - {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_]]} - return fail(0)}} - return fail(0)} - var match$1=string_match(re_rgb_pct,s,0); - if(match$1) - {var - r$0=match$1[1], - red$0=matched_group(r$0,2), - green$0=matched_group(r$0,3), - blue$0=matched_group(r$0,4), - 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)) - {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)) - {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_]]} - return fail(0)}} - return fail(0)} - var match$3=string_match(re_hsl,s,0); - if(match$3) - {var - r$1=match$3[1], - red$1=matched_group(r$1,2), - green$1=matched_group(r$1,3), - blue$1=matched_group(r$1,4), - 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)) - {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)) - {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_]]} - return fail(0)}} - return fail(0)} - return fail(0)} - throw _cV_}} - 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); - case 1: - var f$0=param[1]; - return caml_call3(Stdlib_Printf[4],_b9_,f$0,cst_ex); - case 2: - var f$1=param[1]; - 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); - case 4: - var f$3=param[1]; - return caml_call3(Stdlib_Printf[4],_ca_,f$3,cst_rem); - case 5: - var f$4=param[1]; - return caml_call3(Stdlib_Printf[4],_cb_,f$4,cst_vw); - case 6: - var f$5=param[1]; - return caml_call3(Stdlib_Printf[4],_cc_,f$5,cst_vh); - case 7: - var f$6=param[1]; - return caml_call3(Stdlib_Printf[4],_cd_,f$6,cst_vm); - case 8: - var f$7=param[1]; - return caml_call3(Stdlib_Printf[4],_ce_,f$7,cst_ch); - case 9: - var f$8=param[1]; - return caml_call3(Stdlib_Printf[4],_cf_,f$8,cst_mm); - case 10: - var f$9=param[1]; - return caml_call3(Stdlib_Printf[4],_cg_,f$9,cst_cm); - case 11: - var f$10=param[1]; - return caml_call3(Stdlib_Printf[4],_ch_,f$10,cst_in); - case 12: - var f$11=param[1]; - return caml_call3(Stdlib_Printf[4],_ci_,f$11,cst_pt); - default: - var f$12=param[1]; - return caml_call3(Stdlib_Printf[4],_cj_,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 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)} - 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_]} - throw exn} - var f$0=_cz_} - 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); - 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]} - 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]} - return fail(0)} - return fail(0)} - return fail(0)} - var Length=[0,string_of_t$0,js$0,ml$0]; - 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); - case 1: - var f$0=param[1]; - return caml_call3(Stdlib_Printf[4],_cl_,f$0,cst_grad); - case 2: - var f$1=param[1]; - return caml_call3(Stdlib_Printf[4],_cm_,f$1,cst_rad); - default: - var f$2=param[1]; - return caml_call3(Stdlib_Printf[4],_cn_,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 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)} - 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_]} - throw exn} - var f$0=_cv_} - 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]} - return fail(0)} - return fail(0)} - var - Angle=[0,string_of_t$1,js$1,ml$1], - Js_of_ocaml_CSS= - [0, - [0, - string_of_name, - rgb_of_name, - hex_of_rgb, - rgb, - hsl, - string_of_t, - js, - ml, - js_t_of_js_string], - Length, - Angle]; - caml_register_global(1668,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; - 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]; - caml_register_global - (1669,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)]; - function createElement$0(t2,name) - {var t1=caml_jsstring_of_string(name); - return t2.createElementNS("http://www.w3.org/2000/svg",t1)} - function unsafeCreateElement$0(doc,name){return createElement$0(doc,name)} - function createA$0(doc){return unsafeCreateElement$0(doc,cst_a$2)} - function createAltGlyph(doc) - {return unsafeCreateElement$0(doc,cst_altglyph)} - function createAltGlyphDef(doc) - {return unsafeCreateElement$0(doc,cst_altglyphdef)} - function createAltGlyphItem(doc) - {return unsafeCreateElement$0(doc,cst_altglyphitem)} - function createAnimate(doc){return unsafeCreateElement$0(doc,cst_animate)} - function createAnimateColor(doc) - {return unsafeCreateElement$0(doc,cst_animatecolor)} - function createAnimateMotion(doc) - {return unsafeCreateElement$0(doc,cst_animatemotion)} - function createAnimateTransform(doc) - {return unsafeCreateElement$0(doc,cst_animatetransform)} - function createCircle(doc){return unsafeCreateElement$0(doc,cst_circle)} - function createClipPath(doc) - {return unsafeCreateElement$0(doc,cst_clippath)} - function createCursor(doc){return unsafeCreateElement$0(doc,cst_cursor)} - function createDefs(doc){return unsafeCreateElement$0(doc,cst_defs)} - function createDesc(doc){return unsafeCreateElement$0(doc,cst_desc)} - function createEllipse(doc){return unsafeCreateElement$0(doc,cst_ellipse)} - function createFilter(doc){return unsafeCreateElement$0(doc,cst_filter)} - function createFont(doc){return unsafeCreateElement$0(doc,cst_font)} - function createFontFace(doc) - {return unsafeCreateElement$0(doc,cst_font_face)} - function createFontFaceFormat(doc) - {return unsafeCreateElement$0(doc,cst_font_face_format)} - function createFontFaceName(doc) - {return unsafeCreateElement$0(doc,cst_font_face_name)} - function createFontFaceSrc(doc) - {return unsafeCreateElement$0(doc,cst_font_face_src)} - function createFontFaceUri(doc) - {return unsafeCreateElement$0(doc,cst_font_face_uri)} - function createForeignObject(doc) - {return unsafeCreateElement$0(doc,cst_foreignObject)} - function createG(doc){return unsafeCreateElement$0(doc,cst_g$0)} - function createGlyph(doc){return unsafeCreateElement$0(doc,cst_glyph)} - function createGlyphRef(doc) - {return unsafeCreateElement$0(doc,cst_glyphref)} - function createhkern(doc){return unsafeCreateElement$0(doc,cst_hkern)} - function createImage(doc){return unsafeCreateElement$0(doc,cst_image)} - function createLineElement(doc) - {return unsafeCreateElement$0(doc,cst_line)} - function createLinearElement(doc) - {return unsafeCreateElement$0(doc,cst_lineargradient)} - function createMask(doc){return unsafeCreateElement$0(doc,cst_mask)} - function createMetaData(doc) - {return unsafeCreateElement$0(doc,cst_metadata)} - function createMissingGlyph(doc) - {return unsafeCreateElement$0(doc,cst_missing_glyph)} - function createMPath(doc){return unsafeCreateElement$0(doc,cst_mpath)} - function createPath(doc){return unsafeCreateElement$0(doc,cst_path)} - function createPattern(doc){return unsafeCreateElement$0(doc,cst_pattern)} - function createPolygon(doc){return unsafeCreateElement$0(doc,cst_polygon)} - function createPolyline(doc) - {return unsafeCreateElement$0(doc,cst_polyline)} - function createRadialgradient(doc) - {return unsafeCreateElement$0(doc,cst_radialgradient)} - function createRect(doc){return unsafeCreateElement$0(doc,cst_rect)} - function createScript$0(doc) - {return unsafeCreateElement$0(doc,cst_script$2)} - function createSet(doc){return unsafeCreateElement$0(doc,cst_set)} - function createStop(doc){return unsafeCreateElement$0(doc,cst_stop)} - function createStyle$0(doc){return unsafeCreateElement$0(doc,cst_style$2)} - function createSvg(doc){return unsafeCreateElement$0(doc,cst_svg)} - function createSwitch(doc){return unsafeCreateElement$0(doc,cst_switch)} - function createSymbol(doc){return unsafeCreateElement$0(doc,cst_symbol)} - function createTextElement(doc) - {return unsafeCreateElement$0(doc,cst_text$0)} - function createTextpath(doc) - {return unsafeCreateElement$0(doc,cst_textpath)} - function createTitle$0(doc){return unsafeCreateElement$0(doc,cst_title$2)} - function createTref(doc){return unsafeCreateElement$0(doc,cst_tref)} - function createTspan(doc){return unsafeCreateElement$0(doc,cst_tspan)} - function createUse(doc){return unsafeCreateElement$0(doc,cst_use)} - function createView(doc){return unsafeCreateElement$0(doc,cst_view)} - 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]} - var - t6=caml_jsstring_of_string(id), - t7=Unsafe[1].document, - _cs_=t7.getElementById(t6); - return caml_call3(Opt[7],_cs_,_cr_,_cq_)} - 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} - 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)} - function altGlyphItem(e){return unsafeCoerce$0(e,cst_altglyphitem$0)} - function animate(e){return unsafeCoerce$0(e,cst_animate$0)} - function animateColor(e){return unsafeCoerce$0(e,cst_animatecolor$0)} - function animateMotion(e){return unsafeCoerce$0(e,cst_animatemotion$0)} - function animateTransform(e) - {return unsafeCoerce$0(e,cst_animatetransform$0)} - function circle(e){return unsafeCoerce$0(e,cst_circle$0)} - function clipPath(e){return unsafeCoerce$0(e,cst_clippath$0)} - function cursor(e){return unsafeCoerce$0(e,cst_cursor$0)} - function defs(e){return unsafeCoerce$0(e,cst_defs$0)} - function desc(e){return unsafeCoerce$0(e,cst_desc$0)} - function ellipse(e){return unsafeCoerce$0(e,cst_ellipse$0)} - function filter(e){return unsafeCoerce$0(e,cst_filter$0)} - function font(e){return unsafeCoerce$0(e,cst_font$0)} - function fontFace(e){return unsafeCoerce$0(e,cst_font_face$0)} - function fontFaceFormat(e) - {return unsafeCoerce$0(e,cst_font_face_format$0)} - function fontFaceName(e){return unsafeCoerce$0(e,cst_font_face_name$0)} - function fontFaceSrc(e){return unsafeCoerce$0(e,cst_font_face_src$0)} - function fontFaceUri(e){return unsafeCoerce$0(e,cst_font_face_uri$0)} - function foreignObject(e){return unsafeCoerce$0(e,cst_foreignobject)} - function g(e){return unsafeCoerce$0(e,cst_g$1)} - function glyph(e){return unsafeCoerce$0(e,cst_glyph$0)} - function glyphRef(e){return unsafeCoerce$0(e,cst_glyphref$0)} - function hkern(e){return unsafeCoerce$0(e,cst_hkern$0)} - function image(e){return unsafeCoerce$0(e,cst_image$0)} - function lineElement(e){return unsafeCoerce$0(e,cst_line$0)} - function linearElement(e){return unsafeCoerce$0(e,cst_lineargradient$0)} - function mask(e){return unsafeCoerce$0(e,cst_mask$0)} - function metaData(e){return unsafeCoerce$0(e,cst_metadata$0)} - function missingGlyph(e){return unsafeCoerce$0(e,cst_missing_glyph$0)} - function mPath(e){return unsafeCoerce$0(e,cst_mpath$0)} - function path$0(e){return unsafeCoerce$0(e,cst_path$0)} - function pattern(e){return unsafeCoerce$0(e,cst_pattern$0)} - function polygon(e){return unsafeCoerce$0(e,cst_polygon$0)} - function polyline(e){return unsafeCoerce$0(e,cst_polyline$0)} - function radialgradient(e){return unsafeCoerce$0(e,cst_radialgradient$0)} - function rect(e){return unsafeCoerce$0(e,cst_rect$0)} - function script$0(e){return unsafeCoerce$0(e,cst_script$3)} - function set$1(e){return unsafeCoerce$0(e,cst_set$0)} - function stop(e){return unsafeCoerce$0(e,cst_stop$0)} - function style$0(e){return unsafeCoerce$0(e,cst_style$3)} - function svg(e){return unsafeCoerce$0(e,cst_svg$0)} - function switch$0(e){return unsafeCoerce$0(e,cst_switch$0)} - function symbol$12(e){return unsafeCoerce$0(e,cst_symbol$0)} - function textElement(e){return unsafeCoerce$0(e,cst_text$1)} - function textpath(e){return unsafeCoerce$0(e,cst_textpath$0)} - function title$0(e){return unsafeCoerce$0(e,cst_title$3)} - function tref(e){return unsafeCoerce$0(e,cst_tref$0)} - function tspan(e){return unsafeCoerce$0(e,cst_tspan$0)} - function use(e){return unsafeCoerce$0(e,cst_use$0)} - function view(e){return unsafeCoerce$0(e,cst_view$0)} - function vkern(e){return unsafeCoerce$0(e,cst_vkern$0)} - var - Js_of_ocaml_Dom_svg= - [0, - t0, - SVGError, - createElement$0, - createA$0, - createAltGlyph, - createAltGlyphDef, - createAltGlyphItem, - createAnimate, - createAnimateColor, - createAnimateMotion, - createAnimateTransform, - createCircle, - createClipPath, - createCursor, - createDefs, - createDesc, - createEllipse, - createFilter, - createFont, - createFontFace, - createFontFaceFormat, - createFontFaceName, - createFontFaceSrc, - createFontFaceUri, - createForeignObject, - createG, - createGlyph, - createGlyphRef, - createhkern, - createImage, - createLineElement, - createLinearElement, - createMask, - createMetaData, - createMissingGlyph, - createMPath, - createPath, - createPattern, - createPolygon, - createPolyline, - createRadialgradient, - createRect, - createScript$0, - createSet, - createStop, - createStyle$0, - createSvg, - createSwitch, - createSymbol, - createTextElement, - createTextpath, - createTitle$0, - createTref, - createTspan, - createUse, - createView, - createvkern, - svg_element, - document$0, - getElementById$0, - [0, - element$2, - a$0, - altGlyph, - altGlyphDef, - altGlyphItem, - animate, - animateColor, - animateMotion, - animateTransform, - circle, - clipPath, - cursor, - defs, - desc, - ellipse, - filter, - font, - fontFace, - fontFaceFormat, - fontFaceName, - fontFaceSrc, - fontFaceUri, - foreignObject, - g, - glyph, - glyphRef, - hkern, - image, - lineElement, - linearElement, - mask, - metaData, - missingGlyph, - mPath, - path$0, - pattern, - polygon, - polyline, - radialgradient, - rect, - script$0, - set$1, - stop, - style$0, - svg, - switch$0, - symbol$12, - textElement, - textpath, - title$0, - tref, - tspan, - use, - view, - vkern]]; - caml_register_global(1670,Js_of_ocaml_Dom_svg,"Js_of_ocaml__Dom_svg"); - function withCredentials(b) - {var t1={},t0=! ! b;t1.withCredentials = t0;return t1} - var - eventSource=Unsafe[1].EventSource, - eventSource_options=Unsafe[1].EventSource, - Js_of_ocaml_EventSource= - [0,withCredentials,eventSource,eventSource_options,addEventListener]; - caml_register_global - (1671,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"); - function empty_position_options(param){return {}} - var - t1$0=Unsafe[1].navigator, - geolocation=caml_call1(Optdef[5],t1$0)?t1$0.geolocation:t1$0; - function is_supported$3(param){return caml_call1(Optdef[5],geolocation)} - var - Js_of_ocaml_Geolocation= - [0,empty_position_options,geolocation,is_supported$3]; - caml_register_global - (1673,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) - {return caml_call1(Optdef[5],intersectionObserver_unsafe)} - var - Js_of_ocaml_IntersectionObserv= - [0, - empty_intersection_observer_op, - is_supported$4, - intersectionObserver_unsafe]; - caml_register_global - (1674,Js_of_ocaml_IntersectionObserv,"Js_of_ocaml__IntersectionObserver"); - function object_options(param){return {"localeMatcher":"best fit"}} - function options(param) - {return {"localeMatcher":"best fit", - "usage":"sort", - "sensitivity":"variant", - "ignorePunctuation":t4, - "numeric":t4, - "caseFirst":"false"}} - var Collator=[0,object_options,options]; - function options$0(param) - {return {"localeMatcher":"best fit", - "timeZone":t39, - "hour12":t39, - "hourCycle":t39, - "formatMatcher":"best fit", - "weekday":t39, - "era":t39, - "year":t39, - "month":t39, - "day":t39, - "hour":t39, - "minute":t39, - "second":t39, - "timeZoneName":t39}} - var DateTimeFormat=[0,object_options,options$0]; - function options$1(param) - {return {"localeMatcher":"best fit", - "style":"decimal", - "currency":t39, - "currencyDisplay":t39, - "useGrouping":t25, - "minimumIntegerDigits":t39, - "minimumFractionDigits":t39, - "maximumFractionDigits":t39, - "minimumSignificantDigits":t39, - "maximumSignificantDigits":t39}} - var NumberFormat=[0,object_options,options$1]; - function options$2(param) - {return {"localeMatcher":"best fit","type":"cardinal"}} - 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; - function is_supported$5(param){return caml_call1(Optdef[5],intl)} - var - Js_of_ocaml_Intl= - [0, - Collator, - DateTimeFormat, - NumberFormat, - PluralRules, - intl, - collator_constr, - dateTimeFormat_constr, - numberFormat_constr, - pluralRules_constr, - is_supported$5]; - caml_register_global(1675,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"); - return} - (globalThis)); - - -//# 1 "../../runtimes/jsoo/.runtime_jsoo.objs/runtime_jsoo.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_int_of_string=runtime.caml_int_of_string, - caml_js_from_array=runtime.caml_js_from_array, - caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback, - caml_jsstring_of_string=runtime.caml_jsstring_of_string, - caml_register_global=runtime.caml_register_global, - 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])} - function caml_call7(f,a0,a1,a2,a3,a4,a5,a6) - {return f.length == 7 - ?f(a0,a1,a2,a3,a4,a5,a6) - :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])} - var - global_data=runtime.caml_get_global_data(), - partial=[4,0,0,0,[12,46,0]], - cst_No_rule_applies_in_the_giv= - caml_string_of_jsbytes - ("No rule applies in the given context to give a value to the variable"), - cst_A_conflict_happened_betwee= - caml_string_of_jsbytes - ("A conflict happened between two rules giving a value to the variable"), - cst_A_failure_happened_in_the_= - caml_string_of_jsbytes("A failure happened in the assertion"), - cst_Begin_call=caml_string_of_jsbytes("Begin call"), - cst_End_call=caml_string_of_jsbytes("End call"), - 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"), - Stdlib_Format=global_data.Stdlib__Format, - Js_of_ocaml_Js=global_data.Js_of_ocaml__Js, - Runtime_ocaml_Runtime=global_data.Runtime_ocaml__Runtime, - Yojson=global_data.Yojson, - Stdlib_List=global_data.Stdlib__List, - Stdlib_Array=global_data.Stdlib__Array, - Stdlib_String=global_data.Stdlib__String, - Stdlib=global_data.Stdlib, - Runtime_jsoo=[0]; - caml_register_global(52,Runtime_jsoo,"Runtime_jsoo"); - var - _a_= - [0, - [2, - 0, - [11, - caml_string_of_jsbytes(" in file "), - [2, - 0, - [11, - caml_string_of_jsbytes(", position "), - [4, - 0, - 0, - 0, - [12, - 58, - [4, - 0, - 0, - 0, - [11,caml_string_of_jsbytes("--"),[4,0,0,0,[12,58,partial]]]]]]]]]], - caml_string_of_jsbytes("%s in file %s, position %d:%d--%d:%d.")]; - function duration_of_jsoo(d) - {return caml_call3(Runtime_ocaml_Runtime[60],d.years,d.months,d.days)} - function duration_to_jsoo(d) - {var - match=caml_call1(Runtime_ocaml_Runtime[61],d), - days=match[3], - months=match[2], - years=match[1]; - return {"years":years,"months":months,"days":days}} - function date_of_jsoo(d) - {var d$0=runtime.caml_string_of_jsstring(d); - if(caml_call2(Stdlib_String[14],d$0,84)) - var - _r_=caml_call1(caml_call1(Stdlib_String[16],84),d$0), - d$1=caml_call1(Stdlib_List[5],_r_); - else - var d$1=d$0; - var match=caml_call2(Stdlib_String[16],45,d$1); - if(match) - {var _s_=match[2]; - if(_s_) - {var _t_=_s_[2]; - if(_t_ && ! _t_[2]) - {var - day=_t_[1], - month=_s_[1], - year=match[1], - _u_=caml_int_of_string(day), - _v_=caml_int_of_string(month), - _w_=caml_int_of_string(year); - return caml_call3(Runtime_ocaml_Runtime[57],_w_,_v_,_u_)}}} - return caml_call1(Stdlib[2],cst_date_of_jsoo_invalid_date)} - function date_to_jsoo(d) - {return caml_jsstring_of_string(caml_call1(Runtime_ocaml_Runtime[56],d))} - function t19(param) - {return caml_js_wrap_meth_callback - (function(param) - {var _i_=caml_call1(Runtime_ocaml_Runtime[23],0); - function _j_(evt) - {if(3 === evt[0]) - var - pos=evt[1], - _q_= - caml_call2(Stdlib_List[19],caml_jsstring_of_string,pos[6]), - t12=caml_js_from_array(caml_call1(Stdlib_Array[12],_q_)), - t7=caml_jsstring_of_string(pos[1]), - _l_= - caml_call1 - (Js_of_ocaml_Js[4], - {"fileName":t7, - "startLine":pos[2], - "endLine":pos[4], - "startColumn":pos[3], - "endColumn":pos[5], - "lawHeadings":t12}); - else - var _l_=Js_of_ocaml_Js[3]; - if(2 === evt[0]) - var v=evt[2],_m_=v; - else - var _m_=caml_call1(Runtime_ocaml_Runtime[10],0); - var - _n_=caml_call1(Runtime_ocaml_Runtime[9],_m_), - t15= - caml_jsstring_of_string(caml_call4(Yojson[11][5],0,0,0,_n_)); - if(3 === evt[0]) - var _o_=0; - else - var - info=evt[1], - _o_=caml_call2(Stdlib_List[19],caml_jsstring_of_string,info); - var - t14= - caml_js_from_array(caml_call1(Stdlib_Array[12],_o_)); - switch(evt[0]) - {case 0:var _p_=cst_Begin_call;break; - case 1:var _p_=cst_End_call;break; - case 2:var _p_=cst_Variable_definition;break; - default:var _p_=cst_Decision_taken} - var t13=caml_jsstring_of_string(_p_); - return {"eventType":t13, - "information":t14, - "loggedValueJson":t15, - "sourcePosition":_l_}} - var _k_=caml_call2(Stdlib_List[19],_j_,_i_); - return caml_js_from_array(caml_call1(Stdlib_Array[12],_k_))})} - function t18(param) - {return caml_js_wrap_meth_callback - (function(param) - {var - _d_=caml_call1(Runtime_ocaml_Runtime[23],0), - _e_=caml_call1(Runtime_ocaml_Runtime[24][1],_d_); - function _f_(event) - {var - _h_=caml_call1(Runtime_ocaml_Runtime[20],event), - t6= - caml_jsstring_of_string(caml_call4(Yojson[11][5],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_))})} - function t17(param) - {return caml_js_wrap_meth_callback(Runtime_ocaml_Runtime[25])} - var - event_manager= - {"resetLog":caml_js_wrap_meth_callback(t17), - "retrieveEvents":caml_js_wrap_meth_callback(t18), - "retrieveRawEvents":caml_js_wrap_meth_callback(t19)}; - function execute_or_throw_error(f) - {function throw_error(descr,pos) - {var - t21= - caml_jsstring_of_string - (caml_call7 - (Stdlib_Format[133],_a_,descr,pos[1],pos[2],pos[3],pos[4],pos[5])); - function t23(param){return t21} - var - _c_= - caml_call1 - (Js_of_ocaml_Js[33][9], - {"name":"NoValueProvided", - "message":t21, - "stack":Js_of_ocaml_Js[6][1], - "toString":caml_js_wrap_meth_callback(t23)}); - return caml_call1(Js_of_ocaml_Js[33][5],_c_)} - try - {var _b_=caml_call1(f,0);return _b_} - catch(exn) - {exn = caml_wrap_exception(exn); - if(exn[1] === Runtime_ocaml_Runtime[8]) - {var pos=exn[2]; - return throw_error(cst_No_rule_applies_in_the_giv,pos)} - if(exn[1] === Runtime_ocaml_Runtime[4]) - {var pos$0=exn[2]; - return throw_error(cst_A_conflict_happened_betwee,pos$0)} - if(exn[1] === Runtime_ocaml_Runtime[3]) - {var pos$1=exn[2]; - return throw_error(cst_A_failure_happened_in_the_,pos$1)} - throw exn}} - var - Runtime_jsoo_Runtime= - [0, - event_manager, - duration_of_jsoo, - duration_to_jsoo, - date_of_jsoo, - date_to_jsoo, - execute_or_throw_error]; - caml_register_global(62,Runtime_jsoo_Runtime,"Runtime_jsoo__Runtime"); - return} - (globalThis)); - - -//# 1 "law_source/.law_source.objs/law_source.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_js_from_array=runtime.caml_js_from_array, - caml_js_to_array=runtime.caml_js_to_array, - caml_js_wrap_callback=runtime.caml_js_wrap_callback, - caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback, - caml_register_global=runtime.caml_register_global, - caml_string_notequal=runtime.caml_string_notequal, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_string_of_jsstring=runtime.caml_string_of_jsstring, - 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_0$66=caml_string_of_jsbytes("0"), - cst_0$65=caml_string_of_jsbytes("0"), - cst_0$63=caml_string_of_jsbytes("0"), - cst_0$64=caml_string_of_jsbytes("0"), - cst_0$62=caml_string_of_jsbytes("0"), - cst_1$27=caml_string_of_jsbytes("1."), - cst_0_5$0=caml_string_of_jsbytes("0.5"), - cst_0$61=caml_string_of_jsbytes("0."), - cst_12$10=caml_string_of_jsbytes("12."), - cst_12$8=caml_string_of_jsbytes("12."), - cst_1$26=caml_string_of_jsbytes("1."), - cst_12$9=caml_string_of_jsbytes("12."), - cst_12$7=caml_string_of_jsbytes("12."), - cst_12$5=caml_string_of_jsbytes("12."), - cst_1$25=caml_string_of_jsbytes("1."), - cst_12$6=caml_string_of_jsbytes("12."), - cst_0$60=caml_string_of_jsbytes("0"), - cst_1$24=caml_string_of_jsbytes("1"), - cst_0_0369=caml_string_of_jsbytes("0.0369"), - cst_1$23=caml_string_of_jsbytes("1"), - cst_0_0567=caml_string_of_jsbytes("0.0567"), - cst_1$22=caml_string_of_jsbytes("1"), - cst_0_16$1=caml_string_of_jsbytes("0.16"), - cst_0_08$0=caml_string_of_jsbytes("0.08"), - cst_0_04=caml_string_of_jsbytes("0.04"), - cst_0$59=caml_string_of_jsbytes("0"), - cst_0$57=caml_string_of_jsbytes("0."), - cst_0$58=caml_string_of_jsbytes("0."), - cst_1$21=caml_string_of_jsbytes("1"), - cst_0_232=caml_string_of_jsbytes("0.232"), - cst_0$56=caml_string_of_jsbytes("0"), - cst_1$20=caml_string_of_jsbytes("1"), - cst_0_2379=caml_string_of_jsbytes("0.2379"), - cst_0$55=caml_string_of_jsbytes("0"), - cst_1$19=caml_string_of_jsbytes("1"), - cst_0_2437=caml_string_of_jsbytes("0.2437"), - cst_0$54=caml_string_of_jsbytes("0"), - cst_1$18=caml_string_of_jsbytes("1"), - cst_0_2496=caml_string_of_jsbytes("0.2496"), - cst_0$53=caml_string_of_jsbytes("0"), - cst_1$17=caml_string_of_jsbytes("1"), - cst_0_2555=caml_string_of_jsbytes("0.2555"), - cst_0$52=caml_string_of_jsbytes("0"), - cst_1$16=caml_string_of_jsbytes("1"), - cst_0_2613=caml_string_of_jsbytes("0.2613"), - cst_0$51=caml_string_of_jsbytes("0"), - cst_1$15=caml_string_of_jsbytes("1"), - cst_0_2672=caml_string_of_jsbytes("0.2672"), - cst_0$50=caml_string_of_jsbytes("0"), - cst_1$14=caml_string_of_jsbytes("1"), - cst_0_2804=caml_string_of_jsbytes("0.2804"), - cst_0$49=caml_string_of_jsbytes("0"), - cst_1$13=caml_string_of_jsbytes("1"), - cst_0_2936=caml_string_of_jsbytes("0.2936"), - cst_0$48=caml_string_of_jsbytes("0"), - cst_1$12=caml_string_of_jsbytes("1"), - cst_0_3068=caml_string_of_jsbytes("0.3068"), - cst_0$47=caml_string_of_jsbytes("0"), - cst_1$11=caml_string_of_jsbytes("1"), - cst_0_32$0=caml_string_of_jsbytes("0.32"), - cst_0$46=caml_string_of_jsbytes("0"), - cst_1$10=caml_string_of_jsbytes("1"), - cst_0_32=caml_string_of_jsbytes("0.32"), - cst_0$45=caml_string_of_jsbytes("0"), - cst_1$9=caml_string_of_jsbytes("1"), - cst_0_16$0=caml_string_of_jsbytes("0.16"), - cst_0$44=caml_string_of_jsbytes("0"), - cst_1$8=caml_string_of_jsbytes("1"), - cst_0_08=caml_string_of_jsbytes("0.08"), - cst_0$43=caml_string_of_jsbytes("0"), - cst_2$15=caml_string_of_jsbytes("2"), - cst_2$16=caml_string_of_jsbytes("2"), - cst_0_41=caml_string_of_jsbytes("0.41"), - cst_0$42=caml_string_of_jsbytes("0"), - cst_2$13=caml_string_of_jsbytes("2"), - cst_2$14=caml_string_of_jsbytes("2"), - cst_0_205=caml_string_of_jsbytes("0.205"), - cst_0$41=caml_string_of_jsbytes("0"), - cst_2$11=caml_string_of_jsbytes("2"), - cst_2$12=caml_string_of_jsbytes("2"), - cst_0_1025=caml_string_of_jsbytes("0.1025"), - cst_0$40=caml_string_of_jsbytes("0"), - cst_0_20234=caml_string_of_jsbytes("0.20234"), - cst_0_10117=caml_string_of_jsbytes("0.10117"), - cst_0_05059=caml_string_of_jsbytes("0.05059"), - cst_12$4=caml_string_of_jsbytes("12."), - cst_12$2=caml_string_of_jsbytes("12."), - cst_1$7=caml_string_of_jsbytes("1."), - cst_12$3=caml_string_of_jsbytes("12."), - cst_12$1=caml_string_of_jsbytes("12."), - cst_12=caml_string_of_jsbytes("12."), - cst_1$6=caml_string_of_jsbytes("1."), - cst_12$0=caml_string_of_jsbytes("12."), - cst_0$39=caml_string_of_jsbytes("0"), - cst_1$5=caml_string_of_jsbytes("1"), - cst_1$4=caml_string_of_jsbytes("1"), - cst_2$10=caml_string_of_jsbytes("2"), - cst_0$37=caml_string_of_jsbytes("0"), - cst_0_145=caml_string_of_jsbytes("0.145"), - cst_0$38=caml_string_of_jsbytes("0"), - cst_0$35=caml_string_of_jsbytes("0"), - cst_0_1393=caml_string_of_jsbytes("0.1393"), - cst_0$36=caml_string_of_jsbytes("0"), - cst_0$33=caml_string_of_jsbytes("0"), - cst_0_1335=caml_string_of_jsbytes("0.1335"), - cst_0$34=caml_string_of_jsbytes("0"), - cst_0$31=caml_string_of_jsbytes("0"), - cst_0_1278=caml_string_of_jsbytes("0.1278"), - cst_0$32=caml_string_of_jsbytes("0"), - cst_0$29=caml_string_of_jsbytes("0"), - cst_0_122=caml_string_of_jsbytes("0.122"), - cst_0$30=caml_string_of_jsbytes("0"), - cst_0$27=caml_string_of_jsbytes("0"), - cst_0_1163=caml_string_of_jsbytes("0.1163"), - cst_0$28=caml_string_of_jsbytes("0"), - cst_0$25=caml_string_of_jsbytes("0"), - cst_0_1105=caml_string_of_jsbytes("0.1105"), - cst_0$26=caml_string_of_jsbytes("0"), - cst_0$23=caml_string_of_jsbytes("0"), - cst_0_0976=caml_string_of_jsbytes("0.0976"), - cst_0$24=caml_string_of_jsbytes("0"), - cst_0$21=caml_string_of_jsbytes("0"), - cst_0_0847=caml_string_of_jsbytes("0.0847"), - cst_0$22=caml_string_of_jsbytes("0"), - cst_0$19=caml_string_of_jsbytes("0"), - cst_0_0717=caml_string_of_jsbytes("0.0717"), - cst_0$20=caml_string_of_jsbytes("0"), - cst_0$17=caml_string_of_jsbytes("0"), - cst_5728=caml_string_of_jsbytes("5728"), - cst_0$18=caml_string_of_jsbytes("0"), - cst_0$15=caml_string_of_jsbytes("0"), - cst_0_0588$0=caml_string_of_jsbytes("0.0588"), - cst_0$16=caml_string_of_jsbytes("0"), - cst_1$3=caml_string_of_jsbytes("1"), - cst_0_0588=caml_string_of_jsbytes("0.0588"), - cst_0$14=caml_string_of_jsbytes("0"), - cst_1$2=caml_string_of_jsbytes("1."), - cst_0_5=caml_string_of_jsbytes("0.5"), - cst_0$12=caml_string_of_jsbytes("0."), - cst_0$13=caml_string_of_jsbytes("0."), - cst_2$9=caml_string_of_jsbytes("2"), - cst_0_0463$0=caml_string_of_jsbytes("0.0463"), - cst_0$11=caml_string_of_jsbytes("0"), - cst_2$8=caml_string_of_jsbytes("2"), - cst_0_0539=caml_string_of_jsbytes("0.0539"), - cst_0$10=caml_string_of_jsbytes("0"), - cst_2$7=caml_string_of_jsbytes("2"), - cst_0_0615=caml_string_of_jsbytes("0.0615"), - cst_0$9=caml_string_of_jsbytes("0"), - cst_2$6=caml_string_of_jsbytes("2"), - cst_0_069=caml_string_of_jsbytes("0.069"), - cst_0$8=caml_string_of_jsbytes("0"), - cst_2$5=caml_string_of_jsbytes("2"), - cst_0_0766=caml_string_of_jsbytes("0.0766"), - cst_0$7=caml_string_of_jsbytes("0"), - cst_2$4=caml_string_of_jsbytes("2"), - cst_0_0842=caml_string_of_jsbytes("0.0842"), - cst_0$6=caml_string_of_jsbytes("0"), - cst_2$3=caml_string_of_jsbytes("2"), - cst_0_0918=caml_string_of_jsbytes("0.0918"), - cst_0$5=caml_string_of_jsbytes("0"), - cst_2$2=caml_string_of_jsbytes("2"), - cst_0_1089=caml_string_of_jsbytes("0.1089"), - cst_0$4=caml_string_of_jsbytes("0"), - cst_2$1=caml_string_of_jsbytes("2"), - cst_0_1259=caml_string_of_jsbytes("0.1259"), - cst_0$3=caml_string_of_jsbytes("0"), - cst_2$0=caml_string_of_jsbytes("2"), - cst_0_143=caml_string_of_jsbytes("0.143"), - cst_0$2=caml_string_of_jsbytes("0"), - cst_2=caml_string_of_jsbytes("2"), - cst_0_16=caml_string_of_jsbytes("0.16"), - cst_0$1=caml_string_of_jsbytes("0"), - cst_3$1=caml_string_of_jsbytes("3"), - cst_3$2=caml_string_of_jsbytes("3"), - cst_0_0463=caml_string_of_jsbytes("0.0463"), - cst_0$0=caml_string_of_jsbytes("0"), - cst_1$1=caml_string_of_jsbytes("1"), - cst_1$0=caml_string_of_jsbytes("1"), - cst_562800$0=caml_string_of_jsbytes("562800"), - cst_5628600=caml_string_of_jsbytes("5628600"), - cst_568400$0=caml_string_of_jsbytes("568400"), - cst_5684900=caml_string_of_jsbytes("5684900"), - cst_577500$0=caml_string_of_jsbytes("577500"), - cst_5775900=caml_string_of_jsbytes("5775900"), - cst_582700$0=caml_string_of_jsbytes("582700"), - cst_5827900=caml_string_of_jsbytes("5827900"), - cst_559500$0=caml_string_of_jsbytes("559500"), - cst_5595000=caml_string_of_jsbytes("5595000"), - cst_562800=caml_string_of_jsbytes("562800"), - cst_7877000=caml_string_of_jsbytes("7877000"), - cst_568400=caml_string_of_jsbytes("568400"), - cst_7955800=caml_string_of_jsbytes("7955800"), - cst_577500=caml_string_of_jsbytes("577500"), - cst_8083100=caml_string_of_jsbytes("8083100"), - cst_582700=caml_string_of_jsbytes("582700"), - cst_8155800=caml_string_of_jsbytes("8155800"), - cst_559500=caml_string_of_jsbytes("559500"), - cst_7830000=caml_string_of_jsbytes("7830000"), - cst_3$0=caml_string_of_jsbytes("3"), - cst_3=caml_string_of_jsbytes("3"), - cst_169$0=caml_string_of_jsbytes("169."), - cst_0_55$0=caml_string_of_jsbytes("0.55"), - cst_169=caml_string_of_jsbytes("169."), - cst_0_55=caml_string_of_jsbytes("0.55"), - cst_41316=caml_string_of_jsbytes("41316"), - cst_41440=caml_string_of_jsbytes("41440"), - cst_41481=caml_string_of_jsbytes("41481"), - cst_42228=caml_string_of_jsbytes("42228"), - cst_1003=caml_string_of_jsbytes("1003"), - cst_757=caml_string_of_jsbytes("757"), - cst_1015=caml_string_of_jsbytes("1015"), - cst_766=caml_string_of_jsbytes("766"), - cst_1025=caml_string_of_jsbytes("1025"), - cst_774=caml_string_of_jsbytes("774"), - cst_1057=caml_string_of_jsbytes("1057"), - cst_798=caml_string_of_jsbytes("798"), - cst_1085=caml_string_of_jsbytes("1085"), - cst_819=caml_string_of_jsbytes("819"), - cst_1107=caml_string_of_jsbytes("1107"), - cst_835=caml_string_of_jsbytes("835"), - cst_1127=caml_string_of_jsbytes("1127"), - cst_851=caml_string_of_jsbytes("851"), - cst_0=caml_string_of_jsbytes("0"), - cst_1=caml_string_of_jsbytes("-1"), - cst_i_avait_enfant_charge_avan= - caml_string_of_jsbytes - ("i_avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012_in"), - cst_i_personne_charge_effectiv= - caml_string_of_jsbytes - ("i_personne_charge_effective_permanente_remplit_titre_I_in"), - cst_i_personne_charge_effectiv$0= - caml_string_of_jsbytes - ("i_personne_charge_effective_permanente_est_parent_in"), - cst_i_r_sidence_in=caml_string_of_jsbytes("i_r\xc3\xa9sidence_in"), - cst_i_ressources_m_nage_in= - caml_string_of_jsbytes("i_ressources_m\xc3\xa9nage_in"), - cst_i_enfants_in=caml_string_of_jsbytes("i_enfants_in"), - cst_i_date_courante_in=caml_string_of_jsbytes("i_date_courante_in"), - cst_date_courante_in$2=caml_string_of_jsbytes("date_courante_in"), - cst_r_sidence_in$1=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), - cst_date_courante_in$1=caml_string_of_jsbytes("date_courante_in"), - cst_avait_enfant_charge_avant_= - caml_string_of_jsbytes - ("avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012_in"), - cst_enfants_charge_in= - caml_string_of_jsbytes("enfants_\xc3\xa0_charge_in"), - cst_date_courante_in$0=caml_string_of_jsbytes("date_courante_in"), - cst_r_sidence_in$0=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), - cst_ressources_m_nage_in= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_in"), - cst_personne_charge_effective_= - caml_string_of_jsbytes - ("personne_charge_effective_permanente_remplit_titre_I_in"), - cst_personne_charge_effective_$0= - caml_string_of_jsbytes - ("personne_charge_effective_permanente_est_parent_in"), - cst_enfants_in=caml_string_of_jsbytes("enfants_in"), - cst_r_sidence_in=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), - cst_prestation_courante_in= - caml_string_of_jsbytes("prestation_courante_in"), - cst_date_courante_in=caml_string_of_jsbytes("date_courante_in"), - cst_r_gime_outre_mer_l751_1= - caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1"), - cst_ge_l512_3_2=caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2"), - cst_conditions_hors_ge= - caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"), - cst_droit_ouvert=caml_string_of_jsbytes("droit_ouvert"), - cst_le_plus_g=caml_string_of_jsbytes("le_plus_\xc3\xa2g\xc3\xa9"), - cst_b_n_ficie_titre_personnel_= - caml_string_of_jsbytes - ("b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"), - cst_a_d_j_ouvert_droit_aux_all= - caml_string_of_jsbytes - ("a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"), - cst_prise_en_charge=caml_string_of_jsbytes("prise_en_charge"), - cst_date_de_naissance=caml_string_of_jsbytes("date_de_naissance"), - cst_r_muneration_mensuelle= - caml_string_of_jsbytes("r\xc3\xa9muneration_mensuelle"), - cst_obligation_scolaire=caml_string_of_jsbytes("obligation_scolaire"), - cst_identifiant=caml_string_of_jsbytes("identifiant"), - cst_d_b_n_ficie_titre_personne= - caml_string_of_jsbytes - ("d_b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"), - cst_d_a_d_j_ouvert_droit_aux_a= - caml_string_of_jsbytes - ("d_a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"), - cst_d_prise_en_charge=caml_string_of_jsbytes("d_prise_en_charge"), - cst_d_date_de_naissance=caml_string_of_jsbytes("d_date_de_naissance"), - cst_d_r_muneration_mensuelle= - caml_string_of_jsbytes("d_r\xc3\xa9muneration_mensuelle"), - cst_d_identifiant=caml_string_of_jsbytes("d_identifiant"), - cst_i_montant_vers=caml_string_of_jsbytes("i_montant_vers\xc3\xa9"), - cst_montant=caml_string_of_jsbytes("montant"), - cst_brut_horaire=caml_string_of_jsbytes("brut_horaire"), - cst_montant_vers=caml_string_of_jsbytes("montant_vers\xc3\xa9"), - cst_ge_minimum_alin_a_1_l521_3= - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - cst_Guadeloupe=caml_string_of_jsbytes("Guadeloupe"), - cst_Guyane=caml_string_of_jsbytes("Guyane"), - cst_Martinique=caml_string_of_jsbytes("Martinique"), - cst_LaR_union=caml_string_of_jsbytes("LaR\xc3\xa9union"), - cst_SaintBarth_lemy=caml_string_of_jsbytes("SaintBarth\xc3\xa9lemy"), - cst_SaintMartin=caml_string_of_jsbytes("SaintMartin"), - cst_M_tropole=caml_string_of_jsbytes("M\xc3\xa9tropole"), - cst_SaintPierreEtMiquelon=caml_string_of_jsbytes("SaintPierreEtMiquelon"), - cst_Mayotte=caml_string_of_jsbytes("Mayotte"), - cst_PrestationAccueilJeuneEnfa= - caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"), - cst_AllocationsFamiliales=caml_string_of_jsbytes("AllocationsFamiliales"), - cst_Compl_mentFamilial= - caml_string_of_jsbytes("Compl\xc3\xa9mentFamilial"), - cst_AllocationLogement=caml_string_of_jsbytes("AllocationLogement"), - cst_Allocation_ducationEnfantH= - caml_string_of_jsbytes - ("Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9"), - cst_AllocationSoutienFamilial= - caml_string_of_jsbytes("AllocationSoutienFamilial"), - cst_AllocationRentr_eScolaire= - caml_string_of_jsbytes("AllocationRentr\xc3\xa9eScolaire"), - cst_AllocationJournali_rePrese= - caml_string_of_jsbytes("AllocationJournali\xc3\xa8rePresenceParentale"), - cst_Normal=caml_string_of_jsbytes("Normal"), - cst_AllocationVers_eAuxService= - caml_string_of_jsbytes("AllocationVers\xc3\xa9eAuxServicesSociaux"), - cst_Compl_te=caml_string_of_jsbytes("Compl\xc3\xa8te"), - cst_Partag_e=caml_string_of_jsbytes("Partag\xc3\xa9e"), - cst_Z_ro=caml_string_of_jsbytes("Z\xc3\xa9ro"), - cst_Avant=caml_string_of_jsbytes("Avant"), - cst_Pendant=caml_string_of_jsbytes("Pendant"), - cst_Apr_s=caml_string_of_jsbytes("Apr\xc3\xa8s"), - cst_GardeAltern_ePartageAlloca= - caml_string_of_jsbytes("GardeAltern\xc3\xa9ePartageAllocations"), - cst_GardeAltern_eAllocataireUn= - caml_string_of_jsbytes("GardeAltern\xc3\xa9eAllocataireUnique"), - cst_EffectiveEtPermanente=caml_string_of_jsbytes("EffectiveEtPermanente"), - cst_ServicesSociauxAllocationV= - caml_string_of_jsbytes - ("ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille"), - cst_ServicesSociauxAllocationV$0= - caml_string_of_jsbytes - ("ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux"), - cst_The_function_conditions_ho= - caml_string_of_jsbytes - ("The function 'conditions_hors_age' translation isn't yet supported..."), - cst_The_function_droit_ouvert_= - caml_string_of_jsbytes - ("The function 'droit_ouvert' translation isn't yet supported..."), - cst_Guadeloupe$0=caml_string_of_jsbytes("Guadeloupe"), - cst_Guyane$0=caml_string_of_jsbytes("Guyane"), - cst_LaReunion=caml_string_of_jsbytes("LaReunion"), - cst_Martinique$0=caml_string_of_jsbytes("Martinique"), - cst_Mayotte$0=caml_string_of_jsbytes("Mayotte"), - cst_Metropole=caml_string_of_jsbytes("Metropole"), - cst_SaintBarthelemy=caml_string_of_jsbytes("SaintBarthelemy"), - cst_SaintMartin$0=caml_string_of_jsbytes("SaintMartin"), - cst_SaintPierreEtMiquelon$0= - caml_string_of_jsbytes("SaintPierreEtMiquelon"), - cst_AllocationEducationEnfantH= - caml_string_of_jsbytes("AllocationEducationEnfantHandicape"), - cst_AllocationJournalierePrese= - caml_string_of_jsbytes("AllocationJournalierePresenceParentale"), - cst_AllocationLogement$0=caml_string_of_jsbytes("AllocationLogement"), - cst_AllocationRentreeScolaire= - caml_string_of_jsbytes("AllocationRentreeScolaire"), - cst_AllocationSoutienFamilial$0= - caml_string_of_jsbytes("AllocationSoutienFamilial"), - cst_AllocationsFamiliales$0= - caml_string_of_jsbytes("AllocationsFamiliales"), - cst_ComplementFamilial=caml_string_of_jsbytes("ComplementFamilial"), - cst_PrestationAccueilJeuneEnfa$0= - caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"), - cst_AllocationVerseeAuxService= - caml_string_of_jsbytes("AllocationVerseeAuxServicesSociaux"), - cst_Normal$0=caml_string_of_jsbytes("Normal"), - cst_Complete=caml_string_of_jsbytes("Complete"), - cst_Partagee=caml_string_of_jsbytes("Partagee"), - cst_Zero=caml_string_of_jsbytes("Zero"), - cst_Apres=caml_string_of_jsbytes("Apres"), - cst_Avant$0=caml_string_of_jsbytes("Avant"), - cst_Pendant$0=caml_string_of_jsbytes("Pendant"), - cst_EffectiveEtPermanente$0= - caml_string_of_jsbytes("EffectiveEtPermanente"), - cst_GardeAlterneeAllocataireUn= - caml_string_of_jsbytes("GardeAlterneeAllocataireUnique"), - cst_GardeAlterneePartageAlloca= - caml_string_of_jsbytes("GardeAlterneePartageAllocations"), - cst_ServicesSociauxAllocationV$1= - caml_string_of_jsbytes("ServicesSociauxAllocationVerseeALaFamille"), - cst_ServicesSociauxAllocationV$2= - caml_string_of_jsbytes - ("ServicesSociauxAllocationVerseeAuxServicesSociaux"), - cst_AllocationsFamilialesLib= - caml_string_of_jsbytes("AllocationsFamilialesLib"), - cst_0$398=caml_string_of_jsbytes("0"), - cst_0$399=caml_string_of_jsbytes("0"), - cst_0$400=caml_string_of_jsbytes("0."), - cst_0$397=caml_string_of_jsbytes("0"), - cst_0$393=caml_string_of_jsbytes("0"), - cst_0$394=caml_string_of_jsbytes("0"), - cst_0$395=caml_string_of_jsbytes("0"), - cst_0$396=caml_string_of_jsbytes("0"), - cst_100$13=caml_string_of_jsbytes("100."), - cst_49$0=caml_string_of_jsbytes("49"), - cst_0_01$1=caml_string_of_jsbytes("0.01"), - cst_0$392=caml_string_of_jsbytes("0"), - cst_1$275=caml_string_of_jsbytes("1"), - cst_1$274=caml_string_of_jsbytes("1"), - cst_0$391=caml_string_of_jsbytes("0"), - cst_1$273=caml_string_of_jsbytes("1"), - cst_3$93=caml_string_of_jsbytes("3"), - cst_0_2$1=caml_string_of_jsbytes("0.2"), - cst_3$94=caml_string_of_jsbytes("3"), - cst_0$390=caml_string_of_jsbytes("0"), - cst_2_4=caml_string_of_jsbytes("2.4"), - cst_3$92=caml_string_of_jsbytes("3"), - cst_0$388=caml_string_of_jsbytes("0"), - cst_0$389=caml_string_of_jsbytes("0"), - cst_100$12=caml_string_of_jsbytes("100."), - cst_49=caml_string_of_jsbytes("49"), - cst_0_01$0=caml_string_of_jsbytes("0.01"), - cst_0$387=caml_string_of_jsbytes("0"), - cst_50$3=caml_string_of_jsbytes("50"), - cst_0$385=caml_string_of_jsbytes("0"), - cst_0$386=caml_string_of_jsbytes("0"), - cst_0$384=caml_string_of_jsbytes("0"), - cst_0$383=caml_string_of_jsbytes("0"), - cst_0$382=caml_string_of_jsbytes("0"), - cst_100$11=caml_string_of_jsbytes("100."), - cst_0_01=caml_string_of_jsbytes("0.01"), - cst_4999=caml_string_of_jsbytes("4999"), - cst_0_75$12=caml_string_of_jsbytes("0.75"), - cst_0_75$11=caml_string_of_jsbytes("0.75"), - cst_0$379=caml_string_of_jsbytes("0"), - cst_158700=caml_string_of_jsbytes("158700"), - cst_191300=caml_string_of_jsbytes("191300"), - cst_1$270=caml_string_of_jsbytes("1"), - cst_205500=caml_string_of_jsbytes("205500"), - cst_2$109=caml_string_of_jsbytes("2"), - cst_211300=caml_string_of_jsbytes("211300"), - cst_3$89=caml_string_of_jsbytes("3"), - cst_217100=caml_string_of_jsbytes("217100"), - cst_4$85=caml_string_of_jsbytes("4"), - cst_222900=caml_string_of_jsbytes("222900"), - cst_5$132=caml_string_of_jsbytes("5"), - cst_228000=caml_string_of_jsbytes("228000"), - cst_5$133=caml_string_of_jsbytes("5"), - cst_19800=caml_string_of_jsbytes("19800"), - cst_228000$0=caml_string_of_jsbytes("228000"), - cst_0$380=caml_string_of_jsbytes("0"), - cst_139300=caml_string_of_jsbytes("139300"), - cst_170600=caml_string_of_jsbytes("170600"), - cst_1$271=caml_string_of_jsbytes("1"), - cst_184700=caml_string_of_jsbytes("184700"), - cst_2$110=caml_string_of_jsbytes("2"), - cst_191200=caml_string_of_jsbytes("191200"), - cst_3$90=caml_string_of_jsbytes("3"), - cst_197700$0=caml_string_of_jsbytes("197700"), - cst_4$86=caml_string_of_jsbytes("4"), - cst_204200=caml_string_of_jsbytes("204200"), - cst_5$134=caml_string_of_jsbytes("5"), - cst_218700=caml_string_of_jsbytes("218700"), - cst_5$135=caml_string_of_jsbytes("5"), - cst_19100$1=caml_string_of_jsbytes("19100"), - cst_218700$0=caml_string_of_jsbytes("218700"), - cst_0$381=caml_string_of_jsbytes("0"), - cst_130600=caml_string_of_jsbytes("130600"), - cst_158400=caml_string_of_jsbytes("158400"), - cst_1$272=caml_string_of_jsbytes("1"), - cst_172600=caml_string_of_jsbytes("172600"), - cst_2$111=caml_string_of_jsbytes("2"), - cst_179800$0=caml_string_of_jsbytes("179800"), - cst_3$91=caml_string_of_jsbytes("3"), - cst_187000=caml_string_of_jsbytes("187000"), - cst_4$87=caml_string_of_jsbytes("4"), - cst_194200=caml_string_of_jsbytes("194200"), - cst_5$136=caml_string_of_jsbytes("5"), - cst_208600$0=caml_string_of_jsbytes("208600"), - cst_5$137=caml_string_of_jsbytes("5"), - cst_18200=caml_string_of_jsbytes("18200"), - cst_208600$1=caml_string_of_jsbytes("208600"), - cst_0$376=caml_string_of_jsbytes("0"), - cst_160400=caml_string_of_jsbytes("160400"), - cst_193400=caml_string_of_jsbytes("193400"), - cst_1$267=caml_string_of_jsbytes("1"), - cst_207800=caml_string_of_jsbytes("207800"), - cst_2$106=caml_string_of_jsbytes("2"), - cst_213700=caml_string_of_jsbytes("213700"), - cst_3$86=caml_string_of_jsbytes("3"), - cst_219600=caml_string_of_jsbytes("219600"), - cst_4$82=caml_string_of_jsbytes("4"), - cst_225500$0=caml_string_of_jsbytes("225500"), - cst_5$126=caml_string_of_jsbytes("5"), - cst_230500$1=caml_string_of_jsbytes("230500"), - cst_5$127=caml_string_of_jsbytes("5"), - cst_20000=caml_string_of_jsbytes("20000"), - cst_230500$2=caml_string_of_jsbytes("230500"), - cst_0$377=caml_string_of_jsbytes("0"), - cst_140800$0=caml_string_of_jsbytes("140800"), - cst_172500$0=caml_string_of_jsbytes("172500"), - cst_1$268=caml_string_of_jsbytes("1"), - cst_186700=caml_string_of_jsbytes("186700"), - cst_2$107=caml_string_of_jsbytes("2"), - cst_193300=caml_string_of_jsbytes("193300"), - cst_3$87=caml_string_of_jsbytes("3"), - cst_199900$1=caml_string_of_jsbytes("199900"), - cst_4$83=caml_string_of_jsbytes("4"), - cst_206500=caml_string_of_jsbytes("206500"), - cst_5$128=caml_string_of_jsbytes("5"), - cst_221100=caml_string_of_jsbytes("221100"), - cst_5$129=caml_string_of_jsbytes("5"), - cst_19300$0=caml_string_of_jsbytes("19300"), - cst_221100$0=caml_string_of_jsbytes("221100"), - cst_0$378=caml_string_of_jsbytes("0"), - cst_132000$0=caml_string_of_jsbytes("132000"), - cst_180100$1=caml_string_of_jsbytes("180100"), - cst_1$269=caml_string_of_jsbytes("1"), - cst_174500=caml_string_of_jsbytes("174500"), - cst_2$108=caml_string_of_jsbytes("2"), - cst_181800$0=caml_string_of_jsbytes("181800"), - cst_3$88=caml_string_of_jsbytes("3"), - cst_189100=caml_string_of_jsbytes("189100"), - cst_4$84=caml_string_of_jsbytes("4"), - cst_196400=caml_string_of_jsbytes("196400"), - cst_5$130=caml_string_of_jsbytes("5"), - cst_210900=caml_string_of_jsbytes("210900"), - cst_5$131=caml_string_of_jsbytes("5"), - cst_18400=caml_string_of_jsbytes("18400"), - cst_210900$0=caml_string_of_jsbytes("210900"), - cst_0$373=caml_string_of_jsbytes("0"), - cst_163300=caml_string_of_jsbytes("163300"), - cst_196900=caml_string_of_jsbytes("196900"), - cst_1$264=caml_string_of_jsbytes("1"), - cst_211600=caml_string_of_jsbytes("211600"), - cst_2$103=caml_string_of_jsbytes("2"), - cst_217600$0=caml_string_of_jsbytes("217600"), - cst_3$83=caml_string_of_jsbytes("3"), - cst_223600=caml_string_of_jsbytes("223600"), - cst_4$79=caml_string_of_jsbytes("4"), - cst_229600=caml_string_of_jsbytes("229600"), - cst_5$120=caml_string_of_jsbytes("5"), - cst_234600=caml_string_of_jsbytes("234600"), - cst_5$121=caml_string_of_jsbytes("5"), - cst_20400=caml_string_of_jsbytes("20400"), - cst_234600$0=caml_string_of_jsbytes("234600"), - cst_0$374=caml_string_of_jsbytes("0"), - cst_143300=caml_string_of_jsbytes("143300"), - cst_175600=caml_string_of_jsbytes("175600"), - cst_1$265=caml_string_of_jsbytes("1"), - cst_190100=caml_string_of_jsbytes("190100"), - cst_2$104=caml_string_of_jsbytes("2"), - cst_196600=caml_string_of_jsbytes("196600"), - cst_3$84=caml_string_of_jsbytes("3"), - cst_203500=caml_string_of_jsbytes("203500"), - cst_4$80=caml_string_of_jsbytes("4"), - cst_210200=caml_string_of_jsbytes("210200"), - cst_5$122=caml_string_of_jsbytes("5"), - cst_225100=caml_string_of_jsbytes("225100"), - cst_5$123=caml_string_of_jsbytes("5"), - cst_19600=caml_string_of_jsbytes("19600"), - cst_225100$0=caml_string_of_jsbytes("225100"), - cst_0$375=caml_string_of_jsbytes("0"), - cst_134400=caml_string_of_jsbytes("134400"), - cst_163000$0=caml_string_of_jsbytes("163000"), - cst_1$266=caml_string_of_jsbytes("1"), - cst_177700=caml_string_of_jsbytes("177700"), - cst_2$105=caml_string_of_jsbytes("2"), - cst_185100=caml_string_of_jsbytes("185100"), - cst_3$85=caml_string_of_jsbytes("3"), - cst_192500$0=caml_string_of_jsbytes("192500"), - cst_4$81=caml_string_of_jsbytes("4"), - cst_199900$0=caml_string_of_jsbytes("199900"), - cst_5$124=caml_string_of_jsbytes("5"), - cst_214700=caml_string_of_jsbytes("214700"), - cst_5$125=caml_string_of_jsbytes("5"), - cst_18700=caml_string_of_jsbytes("18700"), - cst_214700$0=caml_string_of_jsbytes("214700"), - cst_0$370=caml_string_of_jsbytes("0"), - cst_167200=caml_string_of_jsbytes("167200"), - cst_201600=caml_string_of_jsbytes("201600"), - cst_1$261=caml_string_of_jsbytes("1"), - cst_216700=caml_string_of_jsbytes("216700"), - cst_2$100=caml_string_of_jsbytes("2"), - cst_222800=caml_string_of_jsbytes("222800"), - cst_3$80=caml_string_of_jsbytes("3"), - cst_229000=caml_string_of_jsbytes("229000"), - cst_4$76=caml_string_of_jsbytes("4"), - cst_235100=caml_string_of_jsbytes("235100"), - cst_5$114=caml_string_of_jsbytes("5"), - cst_240200=caml_string_of_jsbytes("240200"), - cst_5$115=caml_string_of_jsbytes("5"), - cst_20900$0=caml_string_of_jsbytes("20900"), - cst_240200$0=caml_string_of_jsbytes("240200"), - cst_0$371=caml_string_of_jsbytes("0"), - cst_146700=caml_string_of_jsbytes("146700"), - cst_179800=caml_string_of_jsbytes("179800"), - cst_1$262=caml_string_of_jsbytes("1"), - cst_194700=caml_string_of_jsbytes("194700"), - cst_2$101=caml_string_of_jsbytes("2"), - cst_201500=caml_string_of_jsbytes("201500"), - cst_3$81=caml_string_of_jsbytes("3"), - cst_208400=caml_string_of_jsbytes("208400"), - cst_4$77=caml_string_of_jsbytes("4"), - cst_215200=caml_string_of_jsbytes("215200"), - cst_5$116=caml_string_of_jsbytes("5"), - cst_230500=caml_string_of_jsbytes("230500"), - cst_5$117=caml_string_of_jsbytes("5"), - cst_20100$0=caml_string_of_jsbytes("20100"), - cst_230500$0=caml_string_of_jsbytes("230500"), - cst_0$372=caml_string_of_jsbytes("0"), - cst_137600=caml_string_of_jsbytes("137600"), - cst_166900=caml_string_of_jsbytes("166900"), - cst_1$263=caml_string_of_jsbytes("1"), - cst_182000=caml_string_of_jsbytes("182000"), - cst_2$102=caml_string_of_jsbytes("2"), - cst_189500=caml_string_of_jsbytes("189500"), - cst_3$82=caml_string_of_jsbytes("3"), - cst_197100=caml_string_of_jsbytes("197100"), - cst_4$78=caml_string_of_jsbytes("4"), - cst_204700$0=caml_string_of_jsbytes("204700"), - cst_5$118=caml_string_of_jsbytes("5"), - cst_219900=caml_string_of_jsbytes("219900"), - cst_5$119=caml_string_of_jsbytes("5"), - cst_19100$0=caml_string_of_jsbytes("19100"), - cst_219900$0=caml_string_of_jsbytes("219900"), - cst_0$367=caml_string_of_jsbytes("0"), - cst_167400=caml_string_of_jsbytes("167400"), - cst_201800=caml_string_of_jsbytes("201800"), - cst_1$258=caml_string_of_jsbytes("1"), - cst_216900=caml_string_of_jsbytes("216900"), - cst_2$97=caml_string_of_jsbytes("2"), - cst_223000=caml_string_of_jsbytes("223000"), - cst_3$77=caml_string_of_jsbytes("3"), - cst_229200=caml_string_of_jsbytes("229200"), - cst_4$73=caml_string_of_jsbytes("4"), - cst_235300=caml_string_of_jsbytes("235300"), - cst_5$108=caml_string_of_jsbytes("5"), - cst_240400=caml_string_of_jsbytes("240400"), - cst_5$109=caml_string_of_jsbytes("5"), - cst_20900=caml_string_of_jsbytes("20900"), - cst_240400$0=caml_string_of_jsbytes("240400"), - cst_0$368=caml_string_of_jsbytes("0"), - cst_146800=caml_string_of_jsbytes("146800"), - cst_180000=caml_string_of_jsbytes("180000"), - cst_1$259=caml_string_of_jsbytes("1"), - cst_194900=caml_string_of_jsbytes("194900"), - cst_2$98=caml_string_of_jsbytes("2"), - cst_201700$0=caml_string_of_jsbytes("201700"), - cst_3$78=caml_string_of_jsbytes("3"), - cst_208600=caml_string_of_jsbytes("208600"), - cst_4$74=caml_string_of_jsbytes("4"), - cst_215400=caml_string_of_jsbytes("215400"), - cst_5$110=caml_string_of_jsbytes("5"), - cst_230700=caml_string_of_jsbytes("230700"), - cst_5$111=caml_string_of_jsbytes("5"), - cst_20100=caml_string_of_jsbytes("20100"), - cst_230700$0=caml_string_of_jsbytes("230700"), - cst_0$369=caml_string_of_jsbytes("0"), - cst_137700=caml_string_of_jsbytes("137700"), - cst_167100=caml_string_of_jsbytes("167100"), - cst_1$260=caml_string_of_jsbytes("1"), - cst_182200=caml_string_of_jsbytes("182200"), - cst_2$99=caml_string_of_jsbytes("2"), - cst_189700=caml_string_of_jsbytes("189700"), - cst_3$79=caml_string_of_jsbytes("3"), - cst_197300=caml_string_of_jsbytes("197300"), - cst_4$75=caml_string_of_jsbytes("4"), - cst_204900=caml_string_of_jsbytes("204900"), - cst_5$112=caml_string_of_jsbytes("5"), - cst_220100=caml_string_of_jsbytes("220100"), - cst_5$113=caml_string_of_jsbytes("5"), - cst_19100=caml_string_of_jsbytes("19100"), - cst_220100$0=caml_string_of_jsbytes("220100"), - cst_0$364=caml_string_of_jsbytes("0"), - cst_169100=caml_string_of_jsbytes("169100"), - cst_203800=caml_string_of_jsbytes("203800"), - cst_1$255=caml_string_of_jsbytes("1"), - cst_219100=caml_string_of_jsbytes("219100"), - cst_2$94=caml_string_of_jsbytes("2"), - cst_225200=caml_string_of_jsbytes("225200"), - cst_3$74=caml_string_of_jsbytes("3"), - cst_231500=caml_string_of_jsbytes("231500"), - cst_4$70=caml_string_of_jsbytes("4"), - cst_237700=caml_string_of_jsbytes("237700"), - cst_5$102=caml_string_of_jsbytes("5"), - cst_242800$1=caml_string_of_jsbytes("242800"), - cst_5$103=caml_string_of_jsbytes("5"), - cst_21100=caml_string_of_jsbytes("21100"), - cst_242800$2=caml_string_of_jsbytes("242800"), - cst_0$365=caml_string_of_jsbytes("0"), - cst_148300=caml_string_of_jsbytes("148300"), - cst_181800=caml_string_of_jsbytes("181800"), - cst_1$256=caml_string_of_jsbytes("1"), - cst_196800=caml_string_of_jsbytes("196800"), - cst_2$95=caml_string_of_jsbytes("2"), - cst_203700=caml_string_of_jsbytes("203700"), - cst_3$75=caml_string_of_jsbytes("3"), - cst_210700=caml_string_of_jsbytes("210700"), - cst_4$71=caml_string_of_jsbytes("4"), - cst_217600=caml_string_of_jsbytes("217600"), - cst_5$104=caml_string_of_jsbytes("5"), - cst_233000=caml_string_of_jsbytes("233000"), - cst_5$105=caml_string_of_jsbytes("5"), - cst_20300=caml_string_of_jsbytes("20300"), - cst_233000$0=caml_string_of_jsbytes("233000"), - cst_0$366=caml_string_of_jsbytes("0"), - cst_139100=caml_string_of_jsbytes("139100"), - cst_168800=caml_string_of_jsbytes("168800"), - cst_1$257=caml_string_of_jsbytes("1"), - cst_184000$1=caml_string_of_jsbytes("184000"), - cst_2$96=caml_string_of_jsbytes("2"), - cst_191600=caml_string_of_jsbytes("191600"), - cst_3$76=caml_string_of_jsbytes("3"), - cst_199300=caml_string_of_jsbytes("199300"), - cst_4$72=caml_string_of_jsbytes("4"), - cst_206900=caml_string_of_jsbytes("206900"), - cst_5$106=caml_string_of_jsbytes("5"), - cst_222300=caml_string_of_jsbytes("222300"), - cst_5$107=caml_string_of_jsbytes("5"), - cst_19300=caml_string_of_jsbytes("19300"), - cst_222300$0=caml_string_of_jsbytes("222300"), - cst_0$361=caml_string_of_jsbytes("0"), - cst_171100=caml_string_of_jsbytes("171100"), - cst_206200=caml_string_of_jsbytes("206200"), - cst_1$252=caml_string_of_jsbytes("1"), - cst_221700=caml_string_of_jsbytes("221700"), - cst_2$91=caml_string_of_jsbytes("2"), - cst_227900=caml_string_of_jsbytes("227900"), - cst_3$71=caml_string_of_jsbytes("3"), - cst_234300=caml_string_of_jsbytes("234300"), - cst_4$67=caml_string_of_jsbytes("4"), - cst_240600=caml_string_of_jsbytes("240600"), - cst_5$96=caml_string_of_jsbytes("5"), - cst_245700=caml_string_of_jsbytes("245700"), - cst_5$97=caml_string_of_jsbytes("5"), - cst_21400=caml_string_of_jsbytes("21400"), - cst_245700$0=caml_string_of_jsbytes("245700"), - cst_0$362=caml_string_of_jsbytes("0"), - cst_150100=caml_string_of_jsbytes("150100"), - cst_184000$0=caml_string_of_jsbytes("184000"), - cst_1$253=caml_string_of_jsbytes("1"), - cst_199200=caml_string_of_jsbytes("199200"), - cst_2$92=caml_string_of_jsbytes("2"), - cst_206100=caml_string_of_jsbytes("206100"), - cst_3$72=caml_string_of_jsbytes("3"), - cst_213200=caml_string_of_jsbytes("213200"), - cst_4$68=caml_string_of_jsbytes("4"), - cst_220200=caml_string_of_jsbytes("220200"), - cst_5$98=caml_string_of_jsbytes("5"), - cst_235800=caml_string_of_jsbytes("235800"), - cst_5$99=caml_string_of_jsbytes("5"), - cst_20500=caml_string_of_jsbytes("20500"), - cst_235800$0=caml_string_of_jsbytes("235800"), - cst_0$363=caml_string_of_jsbytes("0"), - cst_140800=caml_string_of_jsbytes("140800"), - cst_170800=caml_string_of_jsbytes("170800"), - cst_1$254=caml_string_of_jsbytes("1"), - cst_186200=caml_string_of_jsbytes("186200"), - cst_2$93=caml_string_of_jsbytes("2"), - cst_193900=caml_string_of_jsbytes("193900"), - cst_3$73=caml_string_of_jsbytes("3"), - cst_201700=caml_string_of_jsbytes("201700"), - cst_4$69=caml_string_of_jsbytes("4"), - cst_209400=caml_string_of_jsbytes("209400"), - cst_5$100=caml_string_of_jsbytes("5"), - cst_225000=caml_string_of_jsbytes("225000"), - cst_5$101=caml_string_of_jsbytes("5"), - cst_19500=caml_string_of_jsbytes("19500"), - cst_225000$0=caml_string_of_jsbytes("225000"), - cst_0$358=caml_string_of_jsbytes("0"), - cst_26084=caml_string_of_jsbytes("26084"), - cst_31435=caml_string_of_jsbytes("31435"), - cst_1$249=caml_string_of_jsbytes("1"), - cst_33798=caml_string_of_jsbytes("33798"), - cst_2$88=caml_string_of_jsbytes("2"), - cst_34743=caml_string_of_jsbytes("34743"), - cst_3$68=caml_string_of_jsbytes("3"), - cst_35719=caml_string_of_jsbytes("35719"), - cst_4$64=caml_string_of_jsbytes("4"), - cst_36679=caml_string_of_jsbytes("36679"), - cst_5$90=caml_string_of_jsbytes("5"), - cst_37457=caml_string_of_jsbytes("37457"), - cst_5$91=caml_string_of_jsbytes("5"), - cst_3262=caml_string_of_jsbytes("3262"), - cst_37457$0=caml_string_of_jsbytes("37457"), - cst_0$359=caml_string_of_jsbytes("0"), - cst_22883=caml_string_of_jsbytes("22883"), - cst_28051=caml_string_of_jsbytes("28051"), - cst_1$250=caml_string_of_jsbytes("1"), - cst_30368=caml_string_of_jsbytes("30368"), - cst_2$89=caml_string_of_jsbytes("2"), - cst_31420=caml_string_of_jsbytes("31420"), - cst_3$69=caml_string_of_jsbytes("3"), - cst_32502=caml_string_of_jsbytes("32502"), - cst_4$65=caml_string_of_jsbytes("4"), - cst_33569=caml_string_of_jsbytes("33569"), - cst_5$92=caml_string_of_jsbytes("5"), - cst_35947=caml_string_of_jsbytes("35947"), - cst_5$93=caml_string_of_jsbytes("5"), - cst_3125=caml_string_of_jsbytes("3125"), - cst_35947$0=caml_string_of_jsbytes("35947"), - cst_0$360=caml_string_of_jsbytes("0"), - cst_21465=caml_string_of_jsbytes("21465"), - cst_26038=caml_string_of_jsbytes("26038"), - cst_1$251=caml_string_of_jsbytes("1"), - cst_28386=caml_string_of_jsbytes("28386"), - cst_2$90=caml_string_of_jsbytes("2"), - cst_29560=caml_string_of_jsbytes("29560"), - cst_3$70=caml_string_of_jsbytes("3"), - cst_30749=caml_string_of_jsbytes("30749"), - cst_4$66=caml_string_of_jsbytes("4"), - cst_31923=caml_string_of_jsbytes("31923"), - cst_5$94=caml_string_of_jsbytes("5"), - cst_34301=caml_string_of_jsbytes("34301"), - cst_5$95=caml_string_of_jsbytes("5"), - cst_2973=caml_string_of_jsbytes("2973"), - cst_34301$0=caml_string_of_jsbytes("34301"), - cst_0$355=caml_string_of_jsbytes("0"), - cst_26397=caml_string_of_jsbytes("26397"), - cst_31812=caml_string_of_jsbytes("31812"), - cst_1$246=caml_string_of_jsbytes("1"), - cst_34204=caml_string_of_jsbytes("34204"), - cst_2$85=caml_string_of_jsbytes("2"), - cst_35160=caml_string_of_jsbytes("35160"), - cst_3$65=caml_string_of_jsbytes("3"), - cst_36148=caml_string_of_jsbytes("36148"), - cst_4$61=caml_string_of_jsbytes("4"), - cst_37119=caml_string_of_jsbytes("37119"), - cst_5$84=caml_string_of_jsbytes("5"), - cst_37906=caml_string_of_jsbytes("37906"), - cst_5$85=caml_string_of_jsbytes("5"), - cst_3301=caml_string_of_jsbytes("3301"), - cst_37906$0=caml_string_of_jsbytes("37906"), - cst_0$356=caml_string_of_jsbytes("0"), - cst_23158=caml_string_of_jsbytes("23158"), - cst_28388=caml_string_of_jsbytes("28388"), - cst_1$247=caml_string_of_jsbytes("1"), - cst_30732=caml_string_of_jsbytes("30732"), - cst_2$86=caml_string_of_jsbytes("2"), - cst_31797$2=caml_string_of_jsbytes("31797"), - cst_3$66=caml_string_of_jsbytes("3"), - cst_32892=caml_string_of_jsbytes("32892"), - cst_4$62=caml_string_of_jsbytes("4"), - cst_33972=caml_string_of_jsbytes("33972"), - cst_5$86=caml_string_of_jsbytes("5"), - cst_36378=caml_string_of_jsbytes("36378"), - cst_5$87=caml_string_of_jsbytes("5"), - cst_3163=caml_string_of_jsbytes("3163"), - cst_36378$0=caml_string_of_jsbytes("36378"), - cst_0$357=caml_string_of_jsbytes("0"), - cst_21723=caml_string_of_jsbytes("21723"), - cst_26350=caml_string_of_jsbytes("26350"), - cst_1$248=caml_string_of_jsbytes("1"), - cst_28727=caml_string_of_jsbytes("28727"), - cst_2$87=caml_string_of_jsbytes("2"), - cst_29915=caml_string_of_jsbytes("29915"), - cst_3$67=caml_string_of_jsbytes("3"), - cst_31118=caml_string_of_jsbytes("31118"), - cst_4$63=caml_string_of_jsbytes("4"), - cst_32306=caml_string_of_jsbytes("32306"), - cst_5$88=caml_string_of_jsbytes("5"), - cst_34713=caml_string_of_jsbytes("34713"), - cst_5$89=caml_string_of_jsbytes("5"), - cst_3009=caml_string_of_jsbytes("3009"), - cst_34713$0=caml_string_of_jsbytes("34713"), - cst_0$352=caml_string_of_jsbytes("0"), - cst_26714$0=caml_string_of_jsbytes("26714"), - cst_32194=caml_string_of_jsbytes("32194"), - cst_1$243=caml_string_of_jsbytes("1"), - cst_34614=caml_string_of_jsbytes("34614"), - cst_2$82=caml_string_of_jsbytes("2"), - cst_35582=caml_string_of_jsbytes("35582"), - cst_3$62=caml_string_of_jsbytes("3"), - cst_36582=caml_string_of_jsbytes("36582"), - cst_4$58=caml_string_of_jsbytes("4"), - cst_37564=caml_string_of_jsbytes("37564"), - cst_5$78=caml_string_of_jsbytes("5"), - cst_38361=caml_string_of_jsbytes("38361"), - cst_5$79=caml_string_of_jsbytes("5"), - cst_3341=caml_string_of_jsbytes("3341"), - cst_38361$0=caml_string_of_jsbytes("38361"), - cst_0$353=caml_string_of_jsbytes("0"), - cst_23436=caml_string_of_jsbytes("23436"), - cst_28729=caml_string_of_jsbytes("28729"), - cst_1$244=caml_string_of_jsbytes("1"), - cst_31101=caml_string_of_jsbytes("31101"), - cst_2$83=caml_string_of_jsbytes("2"), - cst_32179=caml_string_of_jsbytes("32179"), - cst_3$63=caml_string_of_jsbytes("3"), - cst_33287=caml_string_of_jsbytes("33287"), - cst_4$59=caml_string_of_jsbytes("4"), - cst_34380=caml_string_of_jsbytes("34380"), - cst_5$80=caml_string_of_jsbytes("5"), - cst_36815=caml_string_of_jsbytes("36815"), - cst_5$81=caml_string_of_jsbytes("5"), - cst_3201=caml_string_of_jsbytes("3201"), - cst_36815$0=caml_string_of_jsbytes("36815"), - cst_0$354=caml_string_of_jsbytes("0"), - cst_21984=caml_string_of_jsbytes("21984"), - cst_26666=caml_string_of_jsbytes("26666"), - cst_1$245=caml_string_of_jsbytes("1"), - cst_29072=caml_string_of_jsbytes("29072"), - cst_2$84=caml_string_of_jsbytes("2"), - cst_30274=caml_string_of_jsbytes("30274"), - cst_3$64=caml_string_of_jsbytes("3"), - cst_31491=caml_string_of_jsbytes("31491"), - cst_4$60=caml_string_of_jsbytes("4"), - cst_32694=caml_string_of_jsbytes("32694"), - cst_5$82=caml_string_of_jsbytes("5"), - cst_35130=caml_string_of_jsbytes("35130"), - cst_5$83=caml_string_of_jsbytes("5"), - cst_3045=caml_string_of_jsbytes("3045"), - cst_35130$0=caml_string_of_jsbytes("35130"), - cst_0$349=caml_string_of_jsbytes("0"), - cst_27195=caml_string_of_jsbytes("27195"), - cst_32773=caml_string_of_jsbytes("32773"), - cst_1$240=caml_string_of_jsbytes("1"), - cst_35237=caml_string_of_jsbytes("35237"), - cst_2$79=caml_string_of_jsbytes("2"), - cst_36222=caml_string_of_jsbytes("36222"), - cst_3$59=caml_string_of_jsbytes("3"), - cst_37240=caml_string_of_jsbytes("37240"), - cst_4$55=caml_string_of_jsbytes("4"), - cst_38240=caml_string_of_jsbytes("38240"), - cst_5$72=caml_string_of_jsbytes("5"), - cst_39051=caml_string_of_jsbytes("39051"), - cst_5$73=caml_string_of_jsbytes("5"), - cst_3401=caml_string_of_jsbytes("3401"), - cst_39051$0=caml_string_of_jsbytes("39051"), - cst_0$350=caml_string_of_jsbytes("0"), - cst_23858=caml_string_of_jsbytes("23858"), - cst_29246=caml_string_of_jsbytes("29246"), - cst_1$241=caml_string_of_jsbytes("1"), - cst_31661=caml_string_of_jsbytes("31661"), - cst_2$80=caml_string_of_jsbytes("2"), - cst_32758=caml_string_of_jsbytes("32758"), - cst_3$60=caml_string_of_jsbytes("3"), - cst_33886=caml_string_of_jsbytes("33886"), - cst_4$56=caml_string_of_jsbytes("4"), - cst_34999=caml_string_of_jsbytes("34999"), - cst_5$74=caml_string_of_jsbytes("5"), - cst_37478=caml_string_of_jsbytes("37478"), - cst_5$75=caml_string_of_jsbytes("5"), - cst_3259=caml_string_of_jsbytes("3259"), - cst_37478$0=caml_string_of_jsbytes("37478"), - cst_0$351=caml_string_of_jsbytes("0"), - cst_22380=caml_string_of_jsbytes("22380"), - cst_27146=caml_string_of_jsbytes("27146"), - cst_1$242=caml_string_of_jsbytes("1"), - cst_29595=caml_string_of_jsbytes("29595"), - cst_2$81=caml_string_of_jsbytes("2"), - cst_30819=caml_string_of_jsbytes("30819"), - cst_3$61=caml_string_of_jsbytes("3"), - cst_32058=caml_string_of_jsbytes("32058"), - cst_4$57=caml_string_of_jsbytes("4"), - cst_33282=caml_string_of_jsbytes("33282"), - cst_5$76=caml_string_of_jsbytes("5"), - cst_35762=caml_string_of_jsbytes("35762"), - cst_5$77=caml_string_of_jsbytes("5"), - cst_3100=caml_string_of_jsbytes("3100"), - cst_35762$0=caml_string_of_jsbytes("35762"), - cst_0$346=caml_string_of_jsbytes("0"), - cst_27956=caml_string_of_jsbytes("27956"), - cst_33691=caml_string_of_jsbytes("33691"), - cst_1$237=caml_string_of_jsbytes("1"), - cst_36224=caml_string_of_jsbytes("36224"), - cst_2$76=caml_string_of_jsbytes("2"), - cst_37236=caml_string_of_jsbytes("37236"), - cst_3$56=caml_string_of_jsbytes("3"), - cst_38283=caml_string_of_jsbytes("38283"), - cst_4$52=caml_string_of_jsbytes("4"), - cst_39311=caml_string_of_jsbytes("39311"), - cst_5$66=caml_string_of_jsbytes("5"), - cst_40144=caml_string_of_jsbytes("40144"), - cst_5$67=caml_string_of_jsbytes("5"), - cst_3496=caml_string_of_jsbytes("3496"), - cst_40144$0=caml_string_of_jsbytes("40144"), - cst_0$347=caml_string_of_jsbytes("0"), - cst_24526=caml_string_of_jsbytes("24526"), - cst_30065=caml_string_of_jsbytes("30065"), - cst_1$238=caml_string_of_jsbytes("1"), - cst_32548=caml_string_of_jsbytes("32548"), - cst_2$77=caml_string_of_jsbytes("2"), - cst_33675=caml_string_of_jsbytes("33675"), - cst_3$57=caml_string_of_jsbytes("3"), - cst_34865$0=caml_string_of_jsbytes("34865"), - cst_4$53=caml_string_of_jsbytes("4"), - cst_35979=caml_string_of_jsbytes("35979"), - cst_5$68=caml_string_of_jsbytes("5"), - cst_38527=caml_string_of_jsbytes("38527"), - cst_5$69=caml_string_of_jsbytes("5"), - cst_3350=caml_string_of_jsbytes("3350"), - cst_38527$0=caml_string_of_jsbytes("38527"), - cst_0$348=caml_string_of_jsbytes("0"), - cst_23007=caml_string_of_jsbytes("23007"), - cst_27906=caml_string_of_jsbytes("27906"), - cst_1$239=caml_string_of_jsbytes("1"), - cst_30424=caml_string_of_jsbytes("30424"), - cst_2$78=caml_string_of_jsbytes("2"), - cst_31682=caml_string_of_jsbytes("31682"), - cst_3$58=caml_string_of_jsbytes("3"), - cst_32956$0=caml_string_of_jsbytes("32956"), - cst_4$54=caml_string_of_jsbytes("4"), - cst_34214=caml_string_of_jsbytes("34214"), - cst_5$70=caml_string_of_jsbytes("5"), - cst_36733=caml_string_of_jsbytes("36733"), - cst_5$71=caml_string_of_jsbytes("5"), - cst_3187=caml_string_of_jsbytes("3187"), - cst_36733$0=caml_string_of_jsbytes("36733"), - cst_0$343=caml_string_of_jsbytes("0"), - cst_28728=caml_string_of_jsbytes("28728"), - cst_34621=caml_string_of_jsbytes("34621"), - cst_1$234=caml_string_of_jsbytes("1"), - cst_37224=caml_string_of_jsbytes("37224"), - cst_2$73=caml_string_of_jsbytes("2"), - cst_38264=caml_string_of_jsbytes("38264"), - cst_3$53=caml_string_of_jsbytes("3"), - cst_39340$0=caml_string_of_jsbytes("39340"), - cst_4$49=caml_string_of_jsbytes("4"), - cst_40396=caml_string_of_jsbytes("40396"), - cst_5$60=caml_string_of_jsbytes("5"), - cst_41252=caml_string_of_jsbytes("41252"), - cst_5$61=caml_string_of_jsbytes("5"), - cst_3592=caml_string_of_jsbytes("3592"), - cst_41252$0=caml_string_of_jsbytes("41252"), - cst_0$344=caml_string_of_jsbytes("0"), - cst_25203=caml_string_of_jsbytes("25203"), - cst_30895=caml_string_of_jsbytes("30895"), - cst_1$235=caml_string_of_jsbytes("1"), - cst_33446=caml_string_of_jsbytes("33446"), - cst_2$74=caml_string_of_jsbytes("2"), - cst_34604=caml_string_of_jsbytes("34604"), - cst_3$54=caml_string_of_jsbytes("3"), - cst_35796=caml_string_of_jsbytes("35796"), - cst_4$50=caml_string_of_jsbytes("4"), - cst_36972=caml_string_of_jsbytes("36972"), - cst_5$62=caml_string_of_jsbytes("5"), - cst_39590=caml_string_of_jsbytes("39590"), - cst_5$63=caml_string_of_jsbytes("5"), - cst_3442=caml_string_of_jsbytes("3442"), - cst_39590$0=caml_string_of_jsbytes("39590"), - cst_0$345=caml_string_of_jsbytes("0"), - cst_23642=caml_string_of_jsbytes("23642"), - cst_28676=caml_string_of_jsbytes("28676"), - cst_1$236=caml_string_of_jsbytes("1"), - cst_31264$0=caml_string_of_jsbytes("31264"), - cst_2$75=caml_string_of_jsbytes("2"), - cst_32556=caml_string_of_jsbytes("32556"), - cst_3$55=caml_string_of_jsbytes("3"), - cst_33866=caml_string_of_jsbytes("33866"), - cst_4$51=caml_string_of_jsbytes("4"), - cst_35158=caml_string_of_jsbytes("35158"), - cst_5$64=caml_string_of_jsbytes("5"), - cst_37778=caml_string_of_jsbytes("37778"), - cst_5$65=caml_string_of_jsbytes("5"), - cst_3275=caml_string_of_jsbytes("3275"), - cst_37778$0=caml_string_of_jsbytes("37778"), - cst_0$340=caml_string_of_jsbytes("0"), - cst_29575=caml_string_of_jsbytes("29575"), - cst_35642=caml_string_of_jsbytes("35642"), - cst_1$231=caml_string_of_jsbytes("1"), - cst_38322=caml_string_of_jsbytes("38322"), - cst_2$70=caml_string_of_jsbytes("2"), - cst_39393=caml_string_of_jsbytes("39393"), - cst_3$50=caml_string_of_jsbytes("3"), - cst_40501=caml_string_of_jsbytes("40501"), - cst_4$46=caml_string_of_jsbytes("4"), - cst_41588=caml_string_of_jsbytes("41588"), - cst_5$54=caml_string_of_jsbytes("5"), - cst_42469=caml_string_of_jsbytes("42469"), - cst_5$55=caml_string_of_jsbytes("5"), - cst_3698=caml_string_of_jsbytes("3698"), - cst_42469$0=caml_string_of_jsbytes("42469"), - cst_0$341=caml_string_of_jsbytes("0"), - cst_25946=caml_string_of_jsbytes("25946"), - cst_31806=caml_string_of_jsbytes("31806"), - cst_1$232=caml_string_of_jsbytes("1"), - cst_34433=caml_string_of_jsbytes("34433"), - cst_2$71=caml_string_of_jsbytes("2"), - cst_35625=caml_string_of_jsbytes("35625"), - cst_3$51=caml_string_of_jsbytes("3"), - cst_36852=caml_string_of_jsbytes("36852"), - cst_4$47=caml_string_of_jsbytes("4"), - cst_38063=caml_string_of_jsbytes("38063"), - cst_5$56=caml_string_of_jsbytes("5"), - cst_40758=caml_string_of_jsbytes("40758"), - cst_5$57=caml_string_of_jsbytes("5"), - cst_3544=caml_string_of_jsbytes("3544"), - cst_40758$0=caml_string_of_jsbytes("40758"), - cst_0$342=caml_string_of_jsbytes("0"), - cst_24339=caml_string_of_jsbytes("24339"), - cst_29522=caml_string_of_jsbytes("29522"), - cst_1$233=caml_string_of_jsbytes("1"), - cst_32186=caml_string_of_jsbytes("32186"), - cst_2$72=caml_string_of_jsbytes("2"), - cst_33516=caml_string_of_jsbytes("33516"), - cst_3$52=caml_string_of_jsbytes("3"), - cst_34865=caml_string_of_jsbytes("34865"), - cst_4$48=caml_string_of_jsbytes("4"), - cst_36195=caml_string_of_jsbytes("36195"), - cst_5$58=caml_string_of_jsbytes("5"), - cst_38892=caml_string_of_jsbytes("38892"), - cst_5$59=caml_string_of_jsbytes("5"), - cst_3372=caml_string_of_jsbytes("3372"), - cst_38892$0=caml_string_of_jsbytes("38892"), - cst_0$337=caml_string_of_jsbytes("0"), - cst_29670=caml_string_of_jsbytes("29670"), - cst_35757=caml_string_of_jsbytes("35757"), - cst_1$228=caml_string_of_jsbytes("1"), - cst_38445=caml_string_of_jsbytes("38445"), - cst_2$67=caml_string_of_jsbytes("2"), - cst_39519=caml_string_of_jsbytes("39519"), - cst_3$47=caml_string_of_jsbytes("3"), - cst_40601=caml_string_of_jsbytes("40601"), - cst_4$43=caml_string_of_jsbytes("4"), - cst_41721=caml_string_of_jsbytes("41721"), - cst_5$48=caml_string_of_jsbytes("5"), - cst_42605=caml_string_of_jsbytes("42605"), - cst_5$49=caml_string_of_jsbytes("5"), - cst_3710=caml_string_of_jsbytes("3710"), - cst_42605$0=caml_string_of_jsbytes("42605"), - cst_0$338=caml_string_of_jsbytes("0"), - cst_26029=caml_string_of_jsbytes("26029"), - cst_31908=caml_string_of_jsbytes("31908"), - cst_1$229=caml_string_of_jsbytes("1"), - cst_34643=caml_string_of_jsbytes("34643"), - cst_2$68=caml_string_of_jsbytes("2"), - cst_35739=caml_string_of_jsbytes("35739"), - cst_3$48=caml_string_of_jsbytes("3"), - cst_36970=caml_string_of_jsbytes("36970"), - cst_4$44=caml_string_of_jsbytes("4"), - cst_38185=caml_string_of_jsbytes("38185"), - cst_5$50=caml_string_of_jsbytes("5"), - cst_40888=caml_string_of_jsbytes("40888"), - cst_5$51=caml_string_of_jsbytes("5"), - cst_3555=caml_string_of_jsbytes("3555"), - cst_40888$0=caml_string_of_jsbytes("40888"), - cst_0$339=caml_string_of_jsbytes("0"), - cst_24417=caml_string_of_jsbytes("24417"), - cst_29616=caml_string_of_jsbytes("29616"), - cst_1$230=caml_string_of_jsbytes("1"), - cst_32289=caml_string_of_jsbytes("32289"), - cst_2$69=caml_string_of_jsbytes("2"), - cst_33623$0=caml_string_of_jsbytes("33623"), - cst_3$49=caml_string_of_jsbytes("3"), - cst_34977=caml_string_of_jsbytes("34977"), - cst_4$45=caml_string_of_jsbytes("4"), - cst_36311=caml_string_of_jsbytes("36311"), - cst_5$52=caml_string_of_jsbytes("5"), - cst_39016=caml_string_of_jsbytes("39016"), - cst_5$53=caml_string_of_jsbytes("5"), - cst_3383=caml_string_of_jsbytes("3383"), - cst_39016$0=caml_string_of_jsbytes("39016"), - cst_0$334=caml_string_of_jsbytes("0"), - cst_29996=caml_string_of_jsbytes("29996"), - cst_36149=caml_string_of_jsbytes("36149"), - cst_1$225=caml_string_of_jsbytes("1"), - cst_38868=caml_string_of_jsbytes("38868"), - cst_2$64=caml_string_of_jsbytes("2"), - cst_39954=caml_string_of_jsbytes("39954"), - cst_3$44=caml_string_of_jsbytes("3"), - cst_41078=caml_string_of_jsbytes("41078"), - cst_4$40=caml_string_of_jsbytes("4"), - cst_42180=caml_string_of_jsbytes("42180"), - cst_5$42=caml_string_of_jsbytes("5"), - cst_43074=caml_string_of_jsbytes("43074"), - cst_5$43=caml_string_of_jsbytes("5"), - cst_3751=caml_string_of_jsbytes("3751"), - cst_43074$0=caml_string_of_jsbytes("43074"), - cst_0$335=caml_string_of_jsbytes("0"), - cst_26315=caml_string_of_jsbytes("26315"), - cst_32259=caml_string_of_jsbytes("32259"), - cst_1$226=caml_string_of_jsbytes("1"), - cst_34923=caml_string_of_jsbytes("34923"), - cst_2$65=caml_string_of_jsbytes("2"), - cst_36132=caml_string_of_jsbytes("36132"), - cst_3$45=caml_string_of_jsbytes("3"), - cst_37373=caml_string_of_jsbytes("37373"), - cst_4$41=caml_string_of_jsbytes("4"), - cst_38605=caml_string_of_jsbytes("38605"), - cst_5$44=caml_string_of_jsbytes("5"), - cst_41338=caml_string_of_jsbytes("41338"), - cst_5$45=caml_string_of_jsbytes("5"), - cst_3594=caml_string_of_jsbytes("3594"), - cst_41338$0=caml_string_of_jsbytes("41338"), - cst_0$336=caml_string_of_jsbytes("0"), - cst_24686=caml_string_of_jsbytes("24686"), - cst_29942=caml_string_of_jsbytes("29942"), - cst_1$227=caml_string_of_jsbytes("1"), - cst_32644=caml_string_of_jsbytes("32644"), - cst_2$66=caml_string_of_jsbytes("2"), - cst_33993=caml_string_of_jsbytes("33993"), - cst_3$46=caml_string_of_jsbytes("3"), - cst_35362=caml_string_of_jsbytes("35362"), - cst_4$42=caml_string_of_jsbytes("4"), - cst_36710=caml_string_of_jsbytes("36710"), - cst_5$46=caml_string_of_jsbytes("5"), - cst_39445=caml_string_of_jsbytes("39445"), - cst_5$47=caml_string_of_jsbytes("5"), - cst_3420=caml_string_of_jsbytes("3420"), - cst_39445$0=caml_string_of_jsbytes("39445"), - cst_0$331=caml_string_of_jsbytes("0"), - cst_30296=caml_string_of_jsbytes("30296"), - cst_36510=caml_string_of_jsbytes("36510"), - cst_1$222=caml_string_of_jsbytes("1"), - cst_39257=caml_string_of_jsbytes("39257"), - cst_2$61=caml_string_of_jsbytes("2"), - cst_40354=caml_string_of_jsbytes("40354"), - cst_3$41=caml_string_of_jsbytes("3"), - cst_41489=caml_string_of_jsbytes("41489"), - cst_4$37=caml_string_of_jsbytes("4"), - cst_42602=caml_string_of_jsbytes("42602"), - cst_5$36=caml_string_of_jsbytes("5"), - cst_43505=caml_string_of_jsbytes("43505"), - cst_5$37=caml_string_of_jsbytes("5"), - cst_3789=caml_string_of_jsbytes("3789"), - cst_43505$0=caml_string_of_jsbytes("43505"), - cst_0$332=caml_string_of_jsbytes("0"), - cst_26578=caml_string_of_jsbytes("26578"), - cst_32582=caml_string_of_jsbytes("32582"), - cst_1$223=caml_string_of_jsbytes("1"), - cst_35272=caml_string_of_jsbytes("35272"), - cst_2$62=caml_string_of_jsbytes("2"), - cst_36493=caml_string_of_jsbytes("36493"), - cst_3$42=caml_string_of_jsbytes("3"), - cst_37751=caml_string_of_jsbytes("37751"), - cst_4$38=caml_string_of_jsbytes("4"), - cst_38991=caml_string_of_jsbytes("38991"), - cst_5$38=caml_string_of_jsbytes("5"), - cst_41751=caml_string_of_jsbytes("41751"), - cst_5$39=caml_string_of_jsbytes("5"), - cst_3630=caml_string_of_jsbytes("3630"), - cst_41751$0=caml_string_of_jsbytes("41751"), - cst_0$333=caml_string_of_jsbytes("0"), - cst_24933=caml_string_of_jsbytes("24933"), - cst_30241=caml_string_of_jsbytes("30241"), - cst_1$224=caml_string_of_jsbytes("1"), - cst_32970=caml_string_of_jsbytes("32970"), - cst_2$63=caml_string_of_jsbytes("2"), - cst_34333=caml_string_of_jsbytes("34333"), - cst_3$43=caml_string_of_jsbytes("3"), - cst_35716=caml_string_of_jsbytes("35716"), - cst_4$39=caml_string_of_jsbytes("4"), - cst_37077=caml_string_of_jsbytes("37077"), - cst_5$40=caml_string_of_jsbytes("5"), - cst_39839=caml_string_of_jsbytes("39839"), - cst_5$41=caml_string_of_jsbytes("5"), - cst_3454=caml_string_of_jsbytes("3454"), - cst_39839$0=caml_string_of_jsbytes("39839"), - cst_0$328=caml_string_of_jsbytes("0"), - cst_30947=caml_string_of_jsbytes("30947"), - cst_37295=caml_string_of_jsbytes("37295"), - cst_1$219=caml_string_of_jsbytes("1"), - cst_40101=caml_string_of_jsbytes("40101"), - cst_2$58=caml_string_of_jsbytes("2"), - cst_41222=caml_string_of_jsbytes("41222"), - cst_3$38=caml_string_of_jsbytes("3"), - cst_42381=caml_string_of_jsbytes("42381"), - cst_4$34=caml_string_of_jsbytes("4"), - cst_43518=caml_string_of_jsbytes("43518"), - cst_5$30=caml_string_of_jsbytes("5"), - cst_44440=caml_string_of_jsbytes("44440"), - cst_5$31=caml_string_of_jsbytes("5"), - cst_3870=caml_string_of_jsbytes("3870"), - cst_44440$0=caml_string_of_jsbytes("44440"), - cst_0$329=caml_string_of_jsbytes("0"), - cst_27149=caml_string_of_jsbytes("27149"), - cst_33283=caml_string_of_jsbytes("33283"), - cst_1$220=caml_string_of_jsbytes("1"), - cst_36030=caml_string_of_jsbytes("36030"), - cst_2$59=caml_string_of_jsbytes("2"), - cst_37278=caml_string_of_jsbytes("37278"), - cst_3$39=caml_string_of_jsbytes("3"), - cst_38563=caml_string_of_jsbytes("38563"), - cst_4$35=caml_string_of_jsbytes("4"), - cst_39829=caml_string_of_jsbytes("39829"), - cst_5$32=caml_string_of_jsbytes("5"), - cst_42649=caml_string_of_jsbytes("42649"), - cst_5$33=caml_string_of_jsbytes("5"), - cst_3708=caml_string_of_jsbytes("3708"), - cst_42659=caml_string_of_jsbytes("42659"), - cst_0$330=caml_string_of_jsbytes("0"), - cst_25469=caml_string_of_jsbytes("25469"), - cst_30891=caml_string_of_jsbytes("30891"), - cst_1$221=caml_string_of_jsbytes("1"), - cst_33679=caml_string_of_jsbytes("33679"), - cst_2$60=caml_string_of_jsbytes("2"), - cst_35071=caml_string_of_jsbytes("35071"), - cst_3$40=caml_string_of_jsbytes("3"), - cst_36484=caml_string_of_jsbytes("36484"), - cst_4$36=caml_string_of_jsbytes("4"), - cst_37874=caml_string_of_jsbytes("37874"), - cst_5$34=caml_string_of_jsbytes("5"), - cst_40696=caml_string_of_jsbytes("40696"), - cst_5$35=caml_string_of_jsbytes("5"), - cst_3528=caml_string_of_jsbytes("3528"), - cst_40696$0=caml_string_of_jsbytes("40696"), - cst_0$325=caml_string_of_jsbytes("0"), - cst_31123=caml_string_of_jsbytes("31123"), - cst_37508=caml_string_of_jsbytes("37508"), - cst_1$216=caml_string_of_jsbytes("1"), - cst_40330=caml_string_of_jsbytes("40330"), - cst_2$55=caml_string_of_jsbytes("2"), - cst_41457=caml_string_of_jsbytes("41457"), - cst_3$35=caml_string_of_jsbytes("3"), - cst_42623=caml_string_of_jsbytes("42623"), - cst_4$31=caml_string_of_jsbytes("4"), - cst_43766=caml_string_of_jsbytes("43766"), - cst_5$24=caml_string_of_jsbytes("5"), - cst_44693=caml_string_of_jsbytes("44693"), - cst_5$25=caml_string_of_jsbytes("5"), - cst_3892=caml_string_of_jsbytes("3892"), - cst_44693$0=caml_string_of_jsbytes("44693"), - cst_0$326=caml_string_of_jsbytes("0"), - cst_27304=caml_string_of_jsbytes("27304"), - cst_33473=caml_string_of_jsbytes("33473"), - cst_1$217=caml_string_of_jsbytes("1"), - cst_36235=caml_string_of_jsbytes("36235"), - cst_2$56=caml_string_of_jsbytes("2"), - cst_37490=caml_string_of_jsbytes("37490"), - cst_3$36=caml_string_of_jsbytes("3"), - cst_38783=caml_string_of_jsbytes("38783"), - cst_4$32=caml_string_of_jsbytes("4"), - cst_40056=caml_string_of_jsbytes("40056"), - cst_5$26=caml_string_of_jsbytes("5"), - cst_42892=caml_string_of_jsbytes("42892"), - cst_5$27=caml_string_of_jsbytes("5"), - cst_3729=caml_string_of_jsbytes("3729"), - cst_42892$0=caml_string_of_jsbytes("42892"), - cst_0$327=caml_string_of_jsbytes("0"), - cst_25614=caml_string_of_jsbytes("25614"), - cst_31067=caml_string_of_jsbytes("31067"), - cst_1$218=caml_string_of_jsbytes("1"), - cst_33871=caml_string_of_jsbytes("33871"), - cst_2$57=caml_string_of_jsbytes("2"), - cst_35271=caml_string_of_jsbytes("35271"), - cst_3$37=caml_string_of_jsbytes("3"), - cst_36692=caml_string_of_jsbytes("36692"), - cst_4$33=caml_string_of_jsbytes("4"), - cst_38090=caml_string_of_jsbytes("38090"), - cst_5$28=caml_string_of_jsbytes("5"), - cst_40928=caml_string_of_jsbytes("40928"), - cst_5$29=caml_string_of_jsbytes("5"), - cst_3548=caml_string_of_jsbytes("3548"), - cst_40928$0=caml_string_of_jsbytes("40928"), - cst_0$322=caml_string_of_jsbytes("0"), - cst_31148=caml_string_of_jsbytes("31148"), - cst_37538=caml_string_of_jsbytes("37538"), - cst_1$213=caml_string_of_jsbytes("1"), - cst_40362=caml_string_of_jsbytes("40362"), - cst_2$52=caml_string_of_jsbytes("2"), - cst_41490=caml_string_of_jsbytes("41490"), - cst_3$32=caml_string_of_jsbytes("3"), - cst_42657=caml_string_of_jsbytes("42657"), - cst_4$28=caml_string_of_jsbytes("4"), - cst_43801=caml_string_of_jsbytes("43801"), - cst_5$18=caml_string_of_jsbytes("5"), - cst_44729=caml_string_of_jsbytes("44729"), - cst_5$19=caml_string_of_jsbytes("5"), - cst_3895=caml_string_of_jsbytes("3895"), - cst_44729$0=caml_string_of_jsbytes("44729"), - cst_0$323=caml_string_of_jsbytes("0"), - cst_27326=caml_string_of_jsbytes("27326"), - cst_33500$0=caml_string_of_jsbytes("33500"), - cst_1$214=caml_string_of_jsbytes("1"), - cst_36264=caml_string_of_jsbytes("36264"), - cst_2$53=caml_string_of_jsbytes("2"), - cst_37520=caml_string_of_jsbytes("37520"), - cst_3$33=caml_string_of_jsbytes("3"), - cst_38814=caml_string_of_jsbytes("38814"), - cst_4$29=caml_string_of_jsbytes("4"), - cst_40088=caml_string_of_jsbytes("40088"), - cst_5$20=caml_string_of_jsbytes("5"), - cst_42926=caml_string_of_jsbytes("42926"), - cst_5$21=caml_string_of_jsbytes("5"), - cst_3732=caml_string_of_jsbytes("3732"), - cst_42926$0=caml_string_of_jsbytes("42926"), - cst_0$324=caml_string_of_jsbytes("0"), - cst_25634=caml_string_of_jsbytes("25634"), - cst_31092=caml_string_of_jsbytes("31092"), - cst_1$215=caml_string_of_jsbytes("1"), - cst_33898=caml_string_of_jsbytes("33898"), - cst_2$54=caml_string_of_jsbytes("2"), - cst_35299=caml_string_of_jsbytes("35299"), - cst_3$34=caml_string_of_jsbytes("3"), - cst_36721=caml_string_of_jsbytes("36721"), - cst_4$30=caml_string_of_jsbytes("4"), - cst_38120=caml_string_of_jsbytes("38120"), - cst_5$22=caml_string_of_jsbytes("5"), - cst_40961=caml_string_of_jsbytes("40961"), - cst_5$23=caml_string_of_jsbytes("5"), - cst_3551=caml_string_of_jsbytes("3551"), - cst_40961$0=caml_string_of_jsbytes("40961"), - cst_0$319=caml_string_of_jsbytes("0"), - cst_31382=caml_string_of_jsbytes("31382"), - cst_37820=caml_string_of_jsbytes("37820"), - cst_1$210=caml_string_of_jsbytes("1"), - cst_40665=caml_string_of_jsbytes("40665"), - cst_2$49=caml_string_of_jsbytes("2"), - cst_41801=caml_string_of_jsbytes("41801"), - cst_3$29=caml_string_of_jsbytes("3"), - cst_42977=caml_string_of_jsbytes("42977"), - cst_4$25=caml_string_of_jsbytes("4"), - cst_44130=caml_string_of_jsbytes("44130"), - cst_5$12=caml_string_of_jsbytes("5"), - cst_45064=caml_string_of_jsbytes("45064"), - cst_5$13=caml_string_of_jsbytes("5"), - cst_3924=caml_string_of_jsbytes("3924"), - cst_45064$0=caml_string_of_jsbytes("45064"), - cst_0$320=caml_string_of_jsbytes("0"), - cst_27531=caml_string_of_jsbytes("27531"), - cst_33751=caml_string_of_jsbytes("33751"), - cst_1$211=caml_string_of_jsbytes("1"), - cst_36536=caml_string_of_jsbytes("36536"), - cst_2$50=caml_string_of_jsbytes("2"), - cst_37801=caml_string_of_jsbytes("37801"), - cst_3$30=caml_string_of_jsbytes("3"), - cst_39105=caml_string_of_jsbytes("39105"), - cst_4$26=caml_string_of_jsbytes("4"), - cst_40389=caml_string_of_jsbytes("40389"), - cst_5$14=caml_string_of_jsbytes("5"), - cst_43248=caml_string_of_jsbytes("43248"), - cst_5$15=caml_string_of_jsbytes("5"), - cst_3760=caml_string_of_jsbytes("3760"), - cst_43248$0=caml_string_of_jsbytes("43248"), - cst_0$321=caml_string_of_jsbytes("0"), - cst_25826=caml_string_of_jsbytes("25826"), - cst_31325=caml_string_of_jsbytes("31325"), - cst_1$212=caml_string_of_jsbytes("1"), - cst_34152=caml_string_of_jsbytes("34152"), - cst_2$51=caml_string_of_jsbytes("2"), - cst_35564=caml_string_of_jsbytes("35564"), - cst_3$31=caml_string_of_jsbytes("3"), - cst_36996=caml_string_of_jsbytes("36996"), - cst_4$27=caml_string_of_jsbytes("4"), - cst_38406=caml_string_of_jsbytes("38406"), - cst_5$16=caml_string_of_jsbytes("5"), - cst_41268=caml_string_of_jsbytes("41268"), - cst_5$17=caml_string_of_jsbytes("5"), - cst_3578=caml_string_of_jsbytes("3578"), - cst_41268$0=caml_string_of_jsbytes("41268"), - cst_0$316=caml_string_of_jsbytes("0"), - cst_31476=caml_string_of_jsbytes("31476"), - cst_37933=caml_string_of_jsbytes("37933"), - cst_1$207=caml_string_of_jsbytes("1"), - cst_40787=caml_string_of_jsbytes("40787"), - cst_2$46=caml_string_of_jsbytes("2"), - cst_41927=caml_string_of_jsbytes("41927"), - cst_3$26=caml_string_of_jsbytes("3"), - cst_43106=caml_string_of_jsbytes("43106"), - cst_4$22=caml_string_of_jsbytes("4"), - cst_44262=caml_string_of_jsbytes("44262"), - cst_5$6=caml_string_of_jsbytes("5"), - cst_45200=caml_string_of_jsbytes("45200"), - cst_5$7=caml_string_of_jsbytes("5"), - cst_3936=caml_string_of_jsbytes("3936"), - cst_45200$0=caml_string_of_jsbytes("45200"), - cst_0$317=caml_string_of_jsbytes("0"), - cst_27614=caml_string_of_jsbytes("27614"), - cst_33853=caml_string_of_jsbytes("33853"), - cst_1$208=caml_string_of_jsbytes("1"), - cst_36646=caml_string_of_jsbytes("36646"), - cst_2$47=caml_string_of_jsbytes("2"), - cst_37915=caml_string_of_jsbytes("37915"), - cst_3$27=caml_string_of_jsbytes("3"), - cst_39222=caml_string_of_jsbytes("39222"), - cst_4$23=caml_string_of_jsbytes("4"), - cst_40510=caml_string_of_jsbytes("40510"), - cst_5$8=caml_string_of_jsbytes("5"), - cst_43378=caml_string_of_jsbytes("43378"), - cst_5$9=caml_string_of_jsbytes("5"), - cst_3771=caml_string_of_jsbytes("3771"), - cst_43378$0=caml_string_of_jsbytes("43378"), - cst_0$318=caml_string_of_jsbytes("0"), - cst_25904=caml_string_of_jsbytes("25904"), - cst_31419=caml_string_of_jsbytes("31419"), - cst_1$209=caml_string_of_jsbytes("1"), - cst_34255=caml_string_of_jsbytes("34255"), - cst_2$48=caml_string_of_jsbytes("2"), - cst_35670=caml_string_of_jsbytes("35670"), - cst_3$28=caml_string_of_jsbytes("3"), - cst_37107=caml_string_of_jsbytes("37107"), - cst_4$24=caml_string_of_jsbytes("4"), - cst_38521=caml_string_of_jsbytes("38521"), - cst_5$10=caml_string_of_jsbytes("5"), - cst_41392=caml_string_of_jsbytes("41392"), - cst_5$11=caml_string_of_jsbytes("5"), - cst_3588=caml_string_of_jsbytes("3588"), - cst_41392$0=caml_string_of_jsbytes("41392"), - cst_0$314=caml_string_of_jsbytes("0"), - cst_0$315=caml_string_of_jsbytes("0"), - cst_1229$5=caml_string_of_jsbytes("1229"), - cst_2710$1=caml_string_of_jsbytes("2710"), - cst_5422$7=caml_string_of_jsbytes("5422"), - cst_0$313=caml_string_of_jsbytes("0"), - cst_5422$5=caml_string_of_jsbytes("5422"), - cst_1229$4=caml_string_of_jsbytes("1229"), - cst_5422$6=caml_string_of_jsbytes("5422"), - cst_1272$5=caml_string_of_jsbytes("1272"), - cst_2805$1=caml_string_of_jsbytes("2805"), - cst_5612$7=caml_string_of_jsbytes("5612"), - cst_0$312=caml_string_of_jsbytes("0"), - cst_5612$5=caml_string_of_jsbytes("5612"), - cst_1272$4=caml_string_of_jsbytes("1272"), - cst_5612$6=caml_string_of_jsbytes("5612"), - cst_16_25$0=caml_string_of_jsbytes("16.25"), - cst_0_0234$1=caml_string_of_jsbytes("0.0234"), - cst_390000=caml_string_of_jsbytes("390000"), - cst_1500$1=caml_string_of_jsbytes("1500"), - cst_1000$4=caml_string_of_jsbytes("1000"), - cst_6_55957$0=caml_string_of_jsbytes("6.55957"), - cst_1$206=caml_string_of_jsbytes("1."), - cst_500$3=caml_string_of_jsbytes("500"), - cst_0$311=caml_string_of_jsbytes("0"), - cst_50$2=caml_string_of_jsbytes("50"), - cst_0$309=caml_string_of_jsbytes("0"), - cst_0$310=caml_string_of_jsbytes("0"), - cst_0$307=caml_string_of_jsbytes("0"), - cst_0$308=caml_string_of_jsbytes("0"), - cst_0$306=caml_string_of_jsbytes("0"), - cst_0$304=caml_string_of_jsbytes("0"), - cst_0$305=caml_string_of_jsbytes("0"), - cst_8708=caml_string_of_jsbytes("8708"), - cst_13559=caml_string_of_jsbytes("13559"), - cst_21362=caml_string_of_jsbytes("21362"), - cst_33196=caml_string_of_jsbytes("33196"), - cst_17607$0=caml_string_of_jsbytes("17607"), - cst_27365$0=caml_string_of_jsbytes("27365"), - cst_17607=caml_string_of_jsbytes("17607"), - cst_27365=caml_string_of_jsbytes("27365"), - cst_8414=caml_string_of_jsbytes("8414"), - cst_13100=caml_string_of_jsbytes("13100"), - cst_20640=caml_string_of_jsbytes("20640"), - cst_32073=caml_string_of_jsbytes("32073"), - cst_17012$0=caml_string_of_jsbytes("17012"), - cst_26440$0=caml_string_of_jsbytes("26440"), - cst_17012=caml_string_of_jsbytes("17012"), - cst_26440=caml_string_of_jsbytes("26440"), - cst_0$303=caml_string_of_jsbytes("0"), - cst_5612$3=caml_string_of_jsbytes("5612"), - cst_1272$3=caml_string_of_jsbytes("1272"), - cst_5612$4=caml_string_of_jsbytes("5612"), - cst_0$302=caml_string_of_jsbytes("0"), - cst_5422$3=caml_string_of_jsbytes("5422"), - cst_1229$3=caml_string_of_jsbytes("1229"), - cst_5422$4=caml_string_of_jsbytes("5422"), - cst_1500$0=caml_string_of_jsbytes("1500"), - cst_500$2=caml_string_of_jsbytes("500"), - cst_1000$3=caml_string_of_jsbytes("1000"), - cst_0$301=caml_string_of_jsbytes("0"), - cst_169$2=caml_string_of_jsbytes("169."), - cst_0_55$2=caml_string_of_jsbytes("0.55"), - cst_169$1=caml_string_of_jsbytes("169."), - cst_0_55$1=caml_string_of_jsbytes("0.55"), - cst_12$15=caml_string_of_jsbytes("12."), - cst_0$300=caml_string_of_jsbytes("0"), - cst_0$299=caml_string_of_jsbytes("0"), - cst_0$293=caml_string_of_jsbytes("0"), - cst_0$294=caml_string_of_jsbytes("0"), - cst_2$45=caml_string_of_jsbytes("2"), - cst_90100=caml_string_of_jsbytes("90100"), - cst_135000=caml_string_of_jsbytes("135000"), - cst_0$295=caml_string_of_jsbytes("0"), - cst_0$296=caml_string_of_jsbytes("0"), - cst_0$297=caml_string_of_jsbytes("0"), - cst_0$298=caml_string_of_jsbytes("0"), - cst_0$292=caml_string_of_jsbytes("0"), - cst_9500=caml_string_of_jsbytes("9500"), - cst_258900=caml_string_of_jsbytes("258900"), - cst_0$290=caml_string_of_jsbytes("0."), - cst_0$291=caml_string_of_jsbytes("0."), - cst_1_25$0=caml_string_of_jsbytes("1.25"), - cst_1_25=caml_string_of_jsbytes("1.25"), - cst_0$289=caml_string_of_jsbytes("0"), - cst_0$288=caml_string_of_jsbytes("0"), - cst_0$287=caml_string_of_jsbytes("0"), - cst_0$286=caml_string_of_jsbytes("0."), - cst_0$285=caml_string_of_jsbytes("0."), - cst_999840=caml_string_of_jsbytes("999840"), - cst_1041840=caml_string_of_jsbytes("1041840"), - cst_1083840=caml_string_of_jsbytes("1083840"), - cst_1153302=caml_string_of_jsbytes("1153302"), - cst_1100144=caml_string_of_jsbytes("1100144"), - cst_1088175=caml_string_of_jsbytes("1088175"), - cst_1$204=caml_string_of_jsbytes("1"), - cst_2$41=caml_string_of_jsbytes("2"), - cst_2$42=caml_string_of_jsbytes("2"), - cst_2$43=caml_string_of_jsbytes("2"), - cst_1$205=caml_string_of_jsbytes("1"), - cst_2$44=caml_string_of_jsbytes("2"), - cst_9=caml_string_of_jsbytes("9"), - cst_9$0=caml_string_of_jsbytes("9"), - cst_16=caml_string_of_jsbytes("16"), - cst_16$0=caml_string_of_jsbytes("16"), - cst_16$1=caml_string_of_jsbytes("16"), - cst_9$1=caml_string_of_jsbytes("9"), - cst_16$2=caml_string_of_jsbytes("16"), - cst_8=caml_string_of_jsbytes("8"), - cst_70=caml_string_of_jsbytes("70"), - cst_70$0=caml_string_of_jsbytes("70"), - cst_3000000=caml_string_of_jsbytes("3000000"), - cst_0_1$0=caml_string_of_jsbytes("0.1"), - cst_0_1=caml_string_of_jsbytes("0.1"), - cst_0_2=caml_string_of_jsbytes("0.2"), - cst_0_2$0=caml_string_of_jsbytes("0.2"), - cst_0$284=caml_string_of_jsbytes("0"), - cst_0$282=caml_string_of_jsbytes("0"), - cst_0$283=caml_string_of_jsbytes("0"), - cst_50$1=caml_string_of_jsbytes("50"), - cst_0$280=caml_string_of_jsbytes("0"), - cst_0$281=caml_string_of_jsbytes("0"), - cst_0_95$3=caml_string_of_jsbytes("0.95"), - cst_0_95$4=caml_string_of_jsbytes("0.95"), - cst_0$278=caml_string_of_jsbytes("0"), - cst_0$279=caml_string_of_jsbytes("0"), - cst_100$9=caml_string_of_jsbytes("100."), - cst_100$10=caml_string_of_jsbytes("100."), - cst_0_005$2=caml_string_of_jsbytes("0.005"), - cst_12$14=caml_string_of_jsbytes("12."), - cst_0$277=caml_string_of_jsbytes("0."), - cst_0_75$10=caml_string_of_jsbytes("0.75"), - cst_0_75$9=caml_string_of_jsbytes("0.75"), - cst_0_75$8=caml_string_of_jsbytes("0.75"), - cst_0$276=caml_string_of_jsbytes("0"), - cst_0_95$2=caml_string_of_jsbytes("0.95"), - cst_0$275=caml_string_of_jsbytes("0"), - cst_86900=caml_string_of_jsbytes("86900"), - cst_97100=caml_string_of_jsbytes("97100"), - cst_1$203=caml_string_of_jsbytes("1"), - cst_10200=caml_string_of_jsbytes("10200"), - cst_107300=caml_string_of_jsbytes("107300"), - cst_0$272=caml_string_of_jsbytes("0"), - cst_208500$0=caml_string_of_jsbytes("208500"), - cst_251500$0=caml_string_of_jsbytes("251500"), - cst_1$200=caml_string_of_jsbytes("1"), - cst_43000$0=caml_string_of_jsbytes("43000"), - cst_294500$0=caml_string_of_jsbytes("294500"), - cst_0$273=caml_string_of_jsbytes("0"), - cst_186000$0=caml_string_of_jsbytes("186000"), - cst_223900$0=caml_string_of_jsbytes("223900"), - cst_1$201=caml_string_of_jsbytes("1"), - cst_37900$0=caml_string_of_jsbytes("37900"), - cst_261800$0=caml_string_of_jsbytes("261800"), - cst_0$274=caml_string_of_jsbytes("0"), - cst_173600$0=caml_string_of_jsbytes("173600"), - cst_208200$0=caml_string_of_jsbytes("208200"), - cst_1$202=caml_string_of_jsbytes("1"), - cst_34600=caml_string_of_jsbytes("34600"), - cst_242800$0=caml_string_of_jsbytes("242800"), - cst_0$269=caml_string_of_jsbytes("0"), - cst_167800$0=caml_string_of_jsbytes("167800"), - cst_202500$1=caml_string_of_jsbytes("202500"), - cst_1$197=caml_string_of_jsbytes("1"), - cst_34700$0=caml_string_of_jsbytes("34700"), - cst_237200$0=caml_string_of_jsbytes("237200"), - cst_0$270=caml_string_of_jsbytes("0"), - cst_149600$0=caml_string_of_jsbytes("149600"), - cst_180100$0=caml_string_of_jsbytes("180100"), - cst_1$198=caml_string_of_jsbytes("1"), - cst_30500$2=caml_string_of_jsbytes("30500"), - cst_210600$0=caml_string_of_jsbytes("210600"), - cst_0$271=caml_string_of_jsbytes("0"), - cst_139700$0=caml_string_of_jsbytes("139700"), - cst_167600$0=caml_string_of_jsbytes("167600"), - cst_1$199=caml_string_of_jsbytes("1"), - cst_27900$0=caml_string_of_jsbytes("27900"), - cst_195500$0=caml_string_of_jsbytes("195500"), - cst_0$266=caml_string_of_jsbytes("0"), - cst_198100=caml_string_of_jsbytes("198100"), - cst_239000=caml_string_of_jsbytes("239000"), - cst_1$194=caml_string_of_jsbytes("1"), - cst_40900=caml_string_of_jsbytes("40900"), - cst_279900=caml_string_of_jsbytes("279900"), - cst_0$267=caml_string_of_jsbytes("0"), - cst_176800=caml_string_of_jsbytes("176800"), - cst_212800=caml_string_of_jsbytes("212800"), - cst_1$195=caml_string_of_jsbytes("1"), - cst_36000=caml_string_of_jsbytes("36000"), - cst_248800=caml_string_of_jsbytes("248800"), - cst_0$268=caml_string_of_jsbytes("0"), - cst_165000=caml_string_of_jsbytes("165000"), - cst_197900=caml_string_of_jsbytes("197900"), - cst_1$196=caml_string_of_jsbytes("1"), - cst_32900=caml_string_of_jsbytes("32900"), - cst_230800=caml_string_of_jsbytes("230800"), - cst_0$263=caml_string_of_jsbytes("0"), - cst_159500=caml_string_of_jsbytes("159500"), - cst_192500=caml_string_of_jsbytes("192500"), - cst_1$191=caml_string_of_jsbytes("1"), - cst_33000=caml_string_of_jsbytes("33000"), - cst_225500=caml_string_of_jsbytes("225500"), - cst_0$264=caml_string_of_jsbytes("0"), - cst_142200=caml_string_of_jsbytes("142200"), - cst_171200=caml_string_of_jsbytes("171200"), - cst_1$192=caml_string_of_jsbytes("1"), - cst_29000=caml_string_of_jsbytes("29000"), - cst_200200=caml_string_of_jsbytes("200200"), - cst_0$265=caml_string_of_jsbytes("0"), - cst_132800=caml_string_of_jsbytes("132800"), - cst_159300=caml_string_of_jsbytes("159300"), - cst_1$193=caml_string_of_jsbytes("1"), - cst_26500=caml_string_of_jsbytes("26500"), - cst_185800$0=caml_string_of_jsbytes("185800"), - cst_0$260=caml_string_of_jsbytes("0"), - cst_200100=caml_string_of_jsbytes("200100"), - cst_141400=caml_string_of_jsbytes("141400"), - cst_1$188=caml_string_of_jsbytes("1"), - cst_41300=caml_string_of_jsbytes("41300"), - cst_182700=caml_string_of_jsbytes("182700"), - cst_0$261=caml_string_of_jsbytes("0"), - cst_178600=caml_string_of_jsbytes("178600"), - cst_215000=caml_string_of_jsbytes("215000"), - cst_1$189=caml_string_of_jsbytes("1"), - cst_36400=caml_string_of_jsbytes("36400"), - cst_251400=caml_string_of_jsbytes("251400"), - cst_0$262=caml_string_of_jsbytes("0"), - cst_166700=caml_string_of_jsbytes("166700"), - cst_199900=caml_string_of_jsbytes("199900"), - cst_1$190=caml_string_of_jsbytes("1"), - cst_33200=caml_string_of_jsbytes("33200"), - cst_233100=caml_string_of_jsbytes("233100"), - cst_0$257=caml_string_of_jsbytes("0"), - cst_161100=caml_string_of_jsbytes("161100"), - cst_194400=caml_string_of_jsbytes("194400"), - cst_1$185=caml_string_of_jsbytes("1"), - cst_33300=caml_string_of_jsbytes("33300"), - cst_227700=caml_string_of_jsbytes("227700"), - cst_0$258=caml_string_of_jsbytes("0"), - cst_143600=caml_string_of_jsbytes("143600"), - cst_172900=caml_string_of_jsbytes("172900"), - cst_1$186=caml_string_of_jsbytes("1"), - cst_29300=caml_string_of_jsbytes("29300"), - cst_202200=caml_string_of_jsbytes("202200"), - cst_0$259=caml_string_of_jsbytes("0"), - cst_134100=caml_string_of_jsbytes("134100"), - cst_160900=caml_string_of_jsbytes("160900"), - cst_1$187=caml_string_of_jsbytes("1"), - cst_26800=caml_string_of_jsbytes("26800"), - cst_187700=caml_string_of_jsbytes("187700"), - cst_0$254=caml_string_of_jsbytes("0"), - cst_202500$0=caml_string_of_jsbytes("202500"), - cst_244300=caml_string_of_jsbytes("244300"), - cst_1$182=caml_string_of_jsbytes("1"), - cst_41800=caml_string_of_jsbytes("41800"), - cst_286100=caml_string_of_jsbytes("286100"), - cst_0$255=caml_string_of_jsbytes("0"), - cst_180700=caml_string_of_jsbytes("180700"), - cst_217500=caml_string_of_jsbytes("217500"), - cst_1$183=caml_string_of_jsbytes("1"), - cst_36800=caml_string_of_jsbytes("36800"), - cst_254300=caml_string_of_jsbytes("254300"), - cst_0$256=caml_string_of_jsbytes("0"), - cst_168700=caml_string_of_jsbytes("168700"), - cst_202300=caml_string_of_jsbytes("202300"), - cst_1$184=caml_string_of_jsbytes("1"), - cst_33600=caml_string_of_jsbytes("33600"), - cst_235900=caml_string_of_jsbytes("235900"), - cst_0$251=caml_string_of_jsbytes("0"), - cst_30871=caml_string_of_jsbytes("30871"), - cst_37243=caml_string_of_jsbytes("37243"), - cst_1$179=caml_string_of_jsbytes("1"), - cst_6372=caml_string_of_jsbytes("6372"), - cst_43615=caml_string_of_jsbytes("43615"), - cst_0$252=caml_string_of_jsbytes("0"), - cst_27548=caml_string_of_jsbytes("27548"), - cst_33148=caml_string_of_jsbytes("33148"), - cst_1$180=caml_string_of_jsbytes("1"), - cst_5610=caml_string_of_jsbytes("5610"), - cst_38768=caml_string_of_jsbytes("38768"), - cst_0$253=caml_string_of_jsbytes("0"), - cst_25718=caml_string_of_jsbytes("25718"), - cst_30840=caml_string_of_jsbytes("30840"), - cst_1$181=caml_string_of_jsbytes("1"), - cst_5122=caml_string_of_jsbytes("5122"), - cst_35962=caml_string_of_jsbytes("35962"), - cst_0$248=caml_string_of_jsbytes("0"), - cst_163000=caml_string_of_jsbytes("163000"), - cst_196700=caml_string_of_jsbytes("196700"), - cst_1$176=caml_string_of_jsbytes("1"), - cst_33700=caml_string_of_jsbytes("33700"), - cst_230400=caml_string_of_jsbytes("230400"), - cst_0$249=caml_string_of_jsbytes("0"), - cst_145300=caml_string_of_jsbytes("145300"), - cst_175000=caml_string_of_jsbytes("175000"), - cst_1$177=caml_string_of_jsbytes("1"), - cst_29700=caml_string_of_jsbytes("29700"), - cst_204700=caml_string_of_jsbytes("204700"), - cst_0$250=caml_string_of_jsbytes("0"), - cst_135700=caml_string_of_jsbytes("135700"), - cst_162800=caml_string_of_jsbytes("162800"), - cst_1$178=caml_string_of_jsbytes("1"), - cst_27100=caml_string_of_jsbytes("27100"), - cst_189900=caml_string_of_jsbytes("189900"), - cst_0$245=caml_string_of_jsbytes("0"), - cst_24849=caml_string_of_jsbytes("24849"), - cst_29987=caml_string_of_jsbytes("29987"), - cst_1$173=caml_string_of_jsbytes("1"), - cst_5138=caml_string_of_jsbytes("5138"), - cst_35125=caml_string_of_jsbytes("35125"), - cst_0$246=caml_string_of_jsbytes("0"), - cst_22151=caml_string_of_jsbytes("22151"), - cst_26679=caml_string_of_jsbytes("26679"), - cst_1$174=caml_string_of_jsbytes("1"), - cst_4528=caml_string_of_jsbytes("4528"), - cst_31207=caml_string_of_jsbytes("31207"), - cst_0$247=caml_string_of_jsbytes("0"), - cst_20687=caml_string_of_jsbytes("20687"), - cst_24818=caml_string_of_jsbytes("24818"), - cst_1$175=caml_string_of_jsbytes("1"), - cst_4131=caml_string_of_jsbytes("4131"), - cst_28949=caml_string_of_jsbytes("28949"), - cst_0$242=caml_string_of_jsbytes("0"), - cst_31241=caml_string_of_jsbytes("31241"), - cst_37689=caml_string_of_jsbytes("37689"), - cst_1$170=caml_string_of_jsbytes("1"), - cst_6448=caml_string_of_jsbytes("6448"), - cst_44137=caml_string_of_jsbytes("44137"), - cst_0$243=caml_string_of_jsbytes("0"), - cst_27879=caml_string_of_jsbytes("27879"), - cst_33556=caml_string_of_jsbytes("33556"), - cst_1$171=caml_string_of_jsbytes("1"), - cst_5677=caml_string_of_jsbytes("5677"), - cst_39233=caml_string_of_jsbytes("39233"), - cst_0$244=caml_string_of_jsbytes("0"), - cst_26027=caml_string_of_jsbytes("26027"), - cst_31210=caml_string_of_jsbytes("31210"), - cst_1$172=caml_string_of_jsbytes("1"), - cst_5183=caml_string_of_jsbytes("5183"), - cst_36393=caml_string_of_jsbytes("36393"), - cst_0$239=caml_string_of_jsbytes("0"), - cst_25147=caml_string_of_jsbytes("25147"), - cst_30347=caml_string_of_jsbytes("30347"), - cst_1$167=caml_string_of_jsbytes("1"), - cst_5200=caml_string_of_jsbytes("5200"), - cst_35547=caml_string_of_jsbytes("35547"), - cst_0$240=caml_string_of_jsbytes("0"), - cst_22417=caml_string_of_jsbytes("22417"), - cst_26999=caml_string_of_jsbytes("26999"), - cst_1$168=caml_string_of_jsbytes("1"), - cst_4582=caml_string_of_jsbytes("4582"), - cst_31581=caml_string_of_jsbytes("31581"), - cst_0$241=caml_string_of_jsbytes("0"), - cst_20935=caml_string_of_jsbytes("20935"), - cst_25116$0=caml_string_of_jsbytes("25116"), - cst_1$169=caml_string_of_jsbytes("1"), - cst_4181=caml_string_of_jsbytes("4181"), - cst_29297=caml_string_of_jsbytes("29297"), - cst_0$236=caml_string_of_jsbytes("0"), - cst_31616=caml_string_of_jsbytes("31616"), - cst_38141=caml_string_of_jsbytes("38141"), - cst_1$164=caml_string_of_jsbytes("1"), - cst_6525=caml_string_of_jsbytes("6525"), - cst_44666=caml_string_of_jsbytes("44666"), - cst_0$237=caml_string_of_jsbytes("0"), - cst_28214=caml_string_of_jsbytes("28214"), - cst_33959=caml_string_of_jsbytes("33959"), - cst_1$165=caml_string_of_jsbytes("1"), - cst_5745=caml_string_of_jsbytes("5745"), - cst_39704=caml_string_of_jsbytes("39704"), - cst_0$238=caml_string_of_jsbytes("0"), - cst_26339=caml_string_of_jsbytes("26339"), - cst_31584=caml_string_of_jsbytes("31584"), - cst_1$166=caml_string_of_jsbytes("1"), - cst_5245=caml_string_of_jsbytes("5245"), - cst_36829=caml_string_of_jsbytes("36829"), - cst_0$233=caml_string_of_jsbytes("0"), - cst_25449=caml_string_of_jsbytes("25449"), - cst_30711=caml_string_of_jsbytes("30711"), - cst_1$161=caml_string_of_jsbytes("1"), - cst_5262=caml_string_of_jsbytes("5262"), - cst_35973=caml_string_of_jsbytes("35973"), - cst_0$234=caml_string_of_jsbytes("0"), - cst_22686=caml_string_of_jsbytes("22686"), - cst_27323=caml_string_of_jsbytes("27323"), - cst_1$162=caml_string_of_jsbytes("1"), - cst_4637=caml_string_of_jsbytes("4637"), - cst_31960=caml_string_of_jsbytes("31960"), - cst_0$235=caml_string_of_jsbytes("0"), - cst_21186=caml_string_of_jsbytes("21186"), - cst_25417=caml_string_of_jsbytes("25417"), - cst_1$163=caml_string_of_jsbytes("1"), - cst_4231=caml_string_of_jsbytes("4231"), - cst_29648=caml_string_of_jsbytes("29648"), - cst_0$230=caml_string_of_jsbytes("0"), - cst_32185=caml_string_of_jsbytes("32185"), - cst_38827=caml_string_of_jsbytes("38827"), - cst_1$158=caml_string_of_jsbytes("1"), - cst_6642=caml_string_of_jsbytes("6642"), - cst_45469=caml_string_of_jsbytes("45469"), - cst_0$231=caml_string_of_jsbytes("0"), - cst_28722=caml_string_of_jsbytes("28722"), - cst_34570$0=caml_string_of_jsbytes("34570"), - cst_1$159=caml_string_of_jsbytes("1"), - cst_5848=caml_string_of_jsbytes("5848"), - cst_40418=caml_string_of_jsbytes("40418"), - cst_0$232=caml_string_of_jsbytes("0"), - cst_26813=caml_string_of_jsbytes("26813"), - cst_32152=caml_string_of_jsbytes("32152"), - cst_1$160=caml_string_of_jsbytes("1"), - cst_5339=caml_string_of_jsbytes("5339"), - cst_37491=caml_string_of_jsbytes("37491"), - cst_0$227=caml_string_of_jsbytes("0"), - cst_25907=caml_string_of_jsbytes("25907"), - cst_31264=caml_string_of_jsbytes("31264"), - cst_1$155=caml_string_of_jsbytes("1"), - cst_5357=caml_string_of_jsbytes("5357"), - cst_36621=caml_string_of_jsbytes("36621"), - cst_0$228=caml_string_of_jsbytes("0"), - cst_23094=caml_string_of_jsbytes("23094"), - cst_27814=caml_string_of_jsbytes("27814"), - cst_1$156=caml_string_of_jsbytes("1"), - cst_4720=caml_string_of_jsbytes("4720"), - cst_32534=caml_string_of_jsbytes("32534"), - cst_0$229=caml_string_of_jsbytes("0"), - cst_21567=caml_string_of_jsbytes("21567"), - cst_25874=caml_string_of_jsbytes("25874"), - cst_1$157=caml_string_of_jsbytes("1"), - cst_4307=caml_string_of_jsbytes("4307"), - cst_30181=caml_string_of_jsbytes("30181"), - cst_0$224=caml_string_of_jsbytes("0"), - cst_33086=caml_string_of_jsbytes("33086"), - cst_39914=caml_string_of_jsbytes("39914"), - cst_1$152=caml_string_of_jsbytes("1"), - cst_6828=caml_string_of_jsbytes("6828"), - cst_46742=caml_string_of_jsbytes("46742"), - cst_0$225=caml_string_of_jsbytes("0"), - cst_29526=caml_string_of_jsbytes("29526"), - cst_35538=caml_string_of_jsbytes("35538"), - cst_1$153=caml_string_of_jsbytes("1"), - cst_6012=caml_string_of_jsbytes("6012"), - cst_41550=caml_string_of_jsbytes("41550"), - cst_0$226=caml_string_of_jsbytes("0"), - cst_27564=caml_string_of_jsbytes("27564"), - cst_33052=caml_string_of_jsbytes("33052"), - cst_1$154=caml_string_of_jsbytes("1"), - cst_5488=caml_string_of_jsbytes("5488"), - cst_38541=caml_string_of_jsbytes("38541"), - cst_0$221=caml_string_of_jsbytes("0"), - cst_26632=caml_string_of_jsbytes("26632"), - cst_32139=caml_string_of_jsbytes("32139"), - cst_1$149=caml_string_of_jsbytes("1"), - cst_5507=caml_string_of_jsbytes("5507"), - cst_37646=caml_string_of_jsbytes("37646"), - cst_0$222=caml_string_of_jsbytes("0"), - cst_23741=caml_string_of_jsbytes("23741"), - cst_28593=caml_string_of_jsbytes("28593"), - cst_1$150=caml_string_of_jsbytes("1"), - cst_4852=caml_string_of_jsbytes("4852"), - cst_33445=caml_string_of_jsbytes("33445"), - cst_0$223=caml_string_of_jsbytes("0"), - cst_22171=caml_string_of_jsbytes("22171"), - cst_36598=caml_string_of_jsbytes("36598"), - cst_1$151=caml_string_of_jsbytes("1"), - cst_4428=caml_string_of_jsbytes("4428"), - cst_31026=caml_string_of_jsbytes("31026"), - cst_0$218=caml_string_of_jsbytes("0"), - cst_33999=caml_string_of_jsbytes("33999"), - cst_41016=caml_string_of_jsbytes("41016"), - cst_1$146=caml_string_of_jsbytes("1"), - cst_7016=caml_string_of_jsbytes("7016"), - cst_48032=caml_string_of_jsbytes("48032"), - cst_0$219=caml_string_of_jsbytes("0"), - cst_30341=caml_string_of_jsbytes("30341"), - cst_36519=caml_string_of_jsbytes("36519"), - cst_1$147=caml_string_of_jsbytes("1"), - cst_6178=caml_string_of_jsbytes("6178"), - cst_42697=caml_string_of_jsbytes("42697"), - cst_0$220=caml_string_of_jsbytes("0"), - cst_28325=caml_string_of_jsbytes("28325"), - cst_33964=caml_string_of_jsbytes("33964"), - cst_1$148=caml_string_of_jsbytes("1"), - cst_5639=caml_string_of_jsbytes("5639"), - cst_39605=caml_string_of_jsbytes("39605"), - cst_0$215=caml_string_of_jsbytes("0"), - cst_27367=caml_string_of_jsbytes("27367"), - cst_33026=caml_string_of_jsbytes("33026"), - cst_1$143=caml_string_of_jsbytes("1"), - cst_5659=caml_string_of_jsbytes("5659"), - cst_38685=caml_string_of_jsbytes("38685"), - cst_0$216=caml_string_of_jsbytes("0"), - cst_24396=caml_string_of_jsbytes("24396"), - cst_29382=caml_string_of_jsbytes("29382"), - cst_1$144=caml_string_of_jsbytes("1"), - cst_4986$0=caml_string_of_jsbytes("4986"), - cst_34368=caml_string_of_jsbytes("34368"), - cst_0$217=caml_string_of_jsbytes("0"), - cst_22783=caml_string_of_jsbytes("22783"), - cst_27332=caml_string_of_jsbytes("27332"), - cst_1$145=caml_string_of_jsbytes("1"), - cst_4550=caml_string_of_jsbytes("4550"), - cst_31882=caml_string_of_jsbytes("31882"), - cst_0$212=caml_string_of_jsbytes("0"), - cst_35002=caml_string_of_jsbytes("35002"), - cst_42226=caml_string_of_jsbytes("42226"), - cst_1$140=caml_string_of_jsbytes("1"), - cst_7223=caml_string_of_jsbytes("7223"), - cst_49449=caml_string_of_jsbytes("49449"), - cst_0$213=caml_string_of_jsbytes("0"), - cst_31236=caml_string_of_jsbytes("31236"), - cst_37596=caml_string_of_jsbytes("37596"), - cst_1$141=caml_string_of_jsbytes("1"), - cst_6360=caml_string_of_jsbytes("6360"), - cst_43957=caml_string_of_jsbytes("43957"), - cst_0$214=caml_string_of_jsbytes("0"), - cst_29161=caml_string_of_jsbytes("29161"), - cst_34966=caml_string_of_jsbytes("34966"), - cst_1$142=caml_string_of_jsbytes("1"), - cst_5805=caml_string_of_jsbytes("5805"), - cst_40773=caml_string_of_jsbytes("40773"), - cst_0$209=caml_string_of_jsbytes("0"), - cst_28174=caml_string_of_jsbytes("28174"), - cst_34000=caml_string_of_jsbytes("34000"), - cst_1$137=caml_string_of_jsbytes("1"), - cst_5826=caml_string_of_jsbytes("5826"), - cst_39826=caml_string_of_jsbytes("39826"), - cst_0$210=caml_string_of_jsbytes("0"), - cst_25116=caml_string_of_jsbytes("25116"), - cst_30249=caml_string_of_jsbytes("30249"), - cst_1$138=caml_string_of_jsbytes("1"), - cst_5133=caml_string_of_jsbytes("5133"), - cst_35382=caml_string_of_jsbytes("35382"), - cst_0$211=caml_string_of_jsbytes("0"), - cst_23455=caml_string_of_jsbytes("23455"), - cst_28138=caml_string_of_jsbytes("28138"), - cst_1$139=caml_string_of_jsbytes("1"), - cst_4684=caml_string_of_jsbytes("4684"), - cst_32823=caml_string_of_jsbytes("32823"), - cst_0$206=caml_string_of_jsbytes("0"), - cst_35114=caml_string_of_jsbytes("35114"), - cst_42361=caml_string_of_jsbytes("42361"), - cst_1$134=caml_string_of_jsbytes("1"), - cst_7246=caml_string_of_jsbytes("7246"), - cst_49607=caml_string_of_jsbytes("49607"), - cst_0$207=caml_string_of_jsbytes("0"), - cst_31336=caml_string_of_jsbytes("31336"), - cst_37716=caml_string_of_jsbytes("37716"), - cst_1$135=caml_string_of_jsbytes("1"), - cst_6380=caml_string_of_jsbytes("6380"), - cst_44098=caml_string_of_jsbytes("44098"), - cst_0$208=caml_string_of_jsbytes("0"), - cst_29254=caml_string_of_jsbytes("29254"), - cst_35078=caml_string_of_jsbytes("35078"), - cst_1$136=caml_string_of_jsbytes("1"), - cst_5824=caml_string_of_jsbytes("5824"), - cst_40903=caml_string_of_jsbytes("40903"), - cst_0$203=caml_string_of_jsbytes("0"), - cst_28264=caml_string_of_jsbytes("28264"), - cst_34109=caml_string_of_jsbytes("34109"), - cst_1$131=caml_string_of_jsbytes("1"), - cst_5845=caml_string_of_jsbytes("5845"), - cst_39953=caml_string_of_jsbytes("39953"), - cst_0$204=caml_string_of_jsbytes("0"), - cst_25196=caml_string_of_jsbytes("25196"), - cst_30346=caml_string_of_jsbytes("30346"), - cst_1$132=caml_string_of_jsbytes("1"), - cst_5149=caml_string_of_jsbytes("5149"), - cst_35495=caml_string_of_jsbytes("35495"), - cst_0$205=caml_string_of_jsbytes("0"), - cst_23530=caml_string_of_jsbytes("23530"), - cst_28228=caml_string_of_jsbytes("28228"), - cst_1$133=caml_string_of_jsbytes("1"), - cst_4699=caml_string_of_jsbytes("4699"), - cst_32928=caml_string_of_jsbytes("32928"), - cst_0$200=caml_string_of_jsbytes("0"), - cst_35500=caml_string_of_jsbytes("35500"), - cst_42827=caml_string_of_jsbytes("42827"), - cst_1$128=caml_string_of_jsbytes("1"), - cst_7326=caml_string_of_jsbytes("7326"), - cst_50153=caml_string_of_jsbytes("50153"), - cst_0$201=caml_string_of_jsbytes("0"), - cst_31681=caml_string_of_jsbytes("31681"), - cst_38131=caml_string_of_jsbytes("38131"), - cst_1$129=caml_string_of_jsbytes("1"), - cst_6450=caml_string_of_jsbytes("6450"), - cst_44583=caml_string_of_jsbytes("44583"), - cst_0$202=caml_string_of_jsbytes("0"), - cst_29576=caml_string_of_jsbytes("29576"), - cst_35464=caml_string_of_jsbytes("35464"), - cst_1$130=caml_string_of_jsbytes("1"), - cst_5888=caml_string_of_jsbytes("5888"), - cst_41353=caml_string_of_jsbytes("41353"), - cst_0$197=caml_string_of_jsbytes("0"), - cst_28575=caml_string_of_jsbytes("28575"), - cst_34484=caml_string_of_jsbytes("34484"), - cst_1$125=caml_string_of_jsbytes("1"), - cst_5909=caml_string_of_jsbytes("5909"), - cst_40392=caml_string_of_jsbytes("40392"), - cst_0$198=caml_string_of_jsbytes("0"), - cst_25473=caml_string_of_jsbytes("25473"), - cst_30680=caml_string_of_jsbytes("30680"), - cst_1$126=caml_string_of_jsbytes("1"), - cst_5206=caml_string_of_jsbytes("5206"), - cst_35885=caml_string_of_jsbytes("35885"), - cst_0$199=caml_string_of_jsbytes("0"), - cst_23789=caml_string_of_jsbytes("23789"), - cst_28539=caml_string_of_jsbytes("28539"), - cst_1$127=caml_string_of_jsbytes("1"), - cst_4751=caml_string_of_jsbytes("4751"), - cst_33290=caml_string_of_jsbytes("33290"), - cst_0$194=caml_string_of_jsbytes("0"), - cst_35855=caml_string_of_jsbytes("35855"), - cst_43255=caml_string_of_jsbytes("43255"), - cst_1$122=caml_string_of_jsbytes("1"), - cst_7399=caml_string_of_jsbytes("7399"), - cst_50655=caml_string_of_jsbytes("50655"), - cst_0$195=caml_string_of_jsbytes("0"), - cst_31998=caml_string_of_jsbytes("31998"), - cst_38512=caml_string_of_jsbytes("38512"), - cst_1$123=caml_string_of_jsbytes("1"), - cst_6515=caml_string_of_jsbytes("6515"), - cst_45029=caml_string_of_jsbytes("45029"), - cst_0$196=caml_string_of_jsbytes("0"), - cst_29872=caml_string_of_jsbytes("29872"), - cst_35819=caml_string_of_jsbytes("35819"), - cst_1$124=caml_string_of_jsbytes("1"), - cst_5947=caml_string_of_jsbytes("5947"), - cst_41767=caml_string_of_jsbytes("41767"), - cst_0$191=caml_string_of_jsbytes("0"), - cst_28861=caml_string_of_jsbytes("28861"), - cst_34829$0=caml_string_of_jsbytes("34829"), - cst_1$119=caml_string_of_jsbytes("1"), - cst_5968=caml_string_of_jsbytes("5968"), - cst_40796=caml_string_of_jsbytes("40796"), - cst_0$192=caml_string_of_jsbytes("0"), - cst_25728=caml_string_of_jsbytes("25728"), - cst_30987=caml_string_of_jsbytes("30987"), - cst_1$120=caml_string_of_jsbytes("1"), - cst_5258=caml_string_of_jsbytes("5258"), - cst_36244=caml_string_of_jsbytes("36244"), - cst_0$193=caml_string_of_jsbytes("0"), - cst_24027=caml_string_of_jsbytes("24027"), - cst_28824=caml_string_of_jsbytes("28824"), - cst_1$121=caml_string_of_jsbytes("1"), - cst_4799=caml_string_of_jsbytes("4799"), - cst_33623=caml_string_of_jsbytes("33623"), - cst_0$188=caml_string_of_jsbytes("0"), - cst_36626=caml_string_of_jsbytes("36626"), - cst_44185=caml_string_of_jsbytes("44185"), - cst_1$116=caml_string_of_jsbytes("1"), - cst_7558=caml_string_of_jsbytes("7558"), - cst_51744=caml_string_of_jsbytes("51744"), - cst_0$189=caml_string_of_jsbytes("0"), - cst_32686=caml_string_of_jsbytes("32686"), - cst_39340=caml_string_of_jsbytes("39340"), - cst_1$117=caml_string_of_jsbytes("1"), - cst_6655=caml_string_of_jsbytes("6655"), - cst_45997=caml_string_of_jsbytes("45997"), - cst_0$190=caml_string_of_jsbytes("0"), - cst_30514=caml_string_of_jsbytes("30514"), - cst_36589=caml_string_of_jsbytes("36589"), - cst_1$118=caml_string_of_jsbytes("1"), - cst_6075=caml_string_of_jsbytes("6075"), - cst_42665=caml_string_of_jsbytes("42665"), - cst_0$185=caml_string_of_jsbytes("0"), - cst_29482=caml_string_of_jsbytes("29482"), - cst_35578=caml_string_of_jsbytes("35578"), - cst_1$113=caml_string_of_jsbytes("1"), - cst_6096=caml_string_of_jsbytes("6096"), - cst_41673=caml_string_of_jsbytes("41673"), - cst_0$186=caml_string_of_jsbytes("0"), - cst_26281=caml_string_of_jsbytes("26281"), - cst_31653=caml_string_of_jsbytes("31653"), - cst_1$114=caml_string_of_jsbytes("1"), - cst_5371=caml_string_of_jsbytes("5371"), - cst_37023=caml_string_of_jsbytes("37023"), - cst_0$187=caml_string_of_jsbytes("0"), - cst_24544=caml_string_of_jsbytes("24544"), - cst_29444=caml_string_of_jsbytes("29444"), - cst_1$115=caml_string_of_jsbytes("1"), - cst_4902=caml_string_of_jsbytes("4902"), - cst_34346=caml_string_of_jsbytes("34346"), - cst_0$182=caml_string_of_jsbytes("0"), - cst_36835=caml_string_of_jsbytes("36835"), - cst_44437=caml_string_of_jsbytes("44437"), - cst_1$110=caml_string_of_jsbytes("1"), - cst_7601=caml_string_of_jsbytes("7601"), - cst_52039=caml_string_of_jsbytes("52039"), - cst_0$183=caml_string_of_jsbytes("0"), - cst_32872=caml_string_of_jsbytes("32872"), - cst_39564=caml_string_of_jsbytes("39564"), - cst_1$111=caml_string_of_jsbytes("1"), - cst_6693=caml_string_of_jsbytes("6693"), - cst_46259=caml_string_of_jsbytes("46259"), - cst_0$184=caml_string_of_jsbytes("0"), - cst_30688=caml_string_of_jsbytes("30688"), - cst_36798=caml_string_of_jsbytes("36798"), - cst_1$112=caml_string_of_jsbytes("1"), - cst_6110=caml_string_of_jsbytes("6110"), - cst_42908=caml_string_of_jsbytes("42908"), - cst_0$179=caml_string_of_jsbytes("0"), - cst_29650=caml_string_of_jsbytes("29650"), - cst_35781=caml_string_of_jsbytes("35781"), - cst_1$107=caml_string_of_jsbytes("1"), - cst_6131=caml_string_of_jsbytes("6131"), - cst_41911=caml_string_of_jsbytes("41911"), - cst_0$180=caml_string_of_jsbytes("0"), - cst_26431=caml_string_of_jsbytes("26431"), - cst_31833=caml_string_of_jsbytes("31833"), - cst_1$108=caml_string_of_jsbytes("1"), - cst_5402=caml_string_of_jsbytes("5402"), - cst_37234=caml_string_of_jsbytes("37234"), - cst_0$181=caml_string_of_jsbytes("0"), - cst_24684=caml_string_of_jsbytes("24684"), - cst_29612=caml_string_of_jsbytes("29612"), - cst_1$109=caml_string_of_jsbytes("1"), - cst_4930=caml_string_of_jsbytes("4930"), - cst_34542=caml_string_of_jsbytes("34542"), - cst_0$176=caml_string_of_jsbytes("0"), - cst_36864=caml_string_of_jsbytes("36864"), - cst_44473=caml_string_of_jsbytes("44473"), - cst_1$104=caml_string_of_jsbytes("1"), - cst_7607=caml_string_of_jsbytes("7607"), - cst_52081=caml_string_of_jsbytes("52081"), - cst_0$177=caml_string_of_jsbytes("0"), - cst_32898=caml_string_of_jsbytes("32898"), - cst_39596=caml_string_of_jsbytes("39596"), - cst_1$105=caml_string_of_jsbytes("1"), - cst_6698=caml_string_of_jsbytes("6698"), - cst_46296=caml_string_of_jsbytes("46296"), - cst_0$178=caml_string_of_jsbytes("0"), - cst_30713=caml_string_of_jsbytes("30713"), - cst_36827=caml_string_of_jsbytes("36827"), - cst_1$106=caml_string_of_jsbytes("1"), - cst_6115=caml_string_of_jsbytes("6115"), - cst_42942=caml_string_of_jsbytes("42942"), - cst_0$173=caml_string_of_jsbytes("0"), - cst_29674=caml_string_of_jsbytes("29674"), - cst_35810=caml_string_of_jsbytes("35810"), - cst_1$101=caml_string_of_jsbytes("1"), - cst_6136=caml_string_of_jsbytes("6136"), - cst_41945=caml_string_of_jsbytes("41945"), - cst_0$174=caml_string_of_jsbytes("0"), - cst_26452=caml_string_of_jsbytes("26452"), - cst_31858=caml_string_of_jsbytes("31858"), - cst_1$102=caml_string_of_jsbytes("1"), - cst_5406=caml_string_of_jsbytes("5406"), - cst_37264=caml_string_of_jsbytes("37264"), - cst_0$175=caml_string_of_jsbytes("0"), - cst_24704=caml_string_of_jsbytes("24704"), - cst_29636=caml_string_of_jsbytes("29636"), - cst_1$103=caml_string_of_jsbytes("1"), - cst_4934=caml_string_of_jsbytes("4934"), - cst_34570=caml_string_of_jsbytes("34570"), - cst_0$170=caml_string_of_jsbytes("0"), - cst_37140=caml_string_of_jsbytes("37140"), - cst_44807=caml_string_of_jsbytes("44807"), - cst_1$98=caml_string_of_jsbytes("1"), - cst_7664=caml_string_of_jsbytes("7664"), - cst_52472=caml_string_of_jsbytes("52472"), - cst_0$171=caml_string_of_jsbytes("0"), - cst_33145=caml_string_of_jsbytes("33145"), - cst_39893=caml_string_of_jsbytes("39893"), - cst_1$99=caml_string_of_jsbytes("1"), - cst_6748=caml_string_of_jsbytes("6748"), - cst_46643=caml_string_of_jsbytes("46643"), - cst_0$172=caml_string_of_jsbytes("0"), - cst_30943=caml_string_of_jsbytes("30943"), - cst_37103=caml_string_of_jsbytes("37103"), - cst_1$100=caml_string_of_jsbytes("1"), - cst_6161=caml_string_of_jsbytes("6161"), - cst_43264=caml_string_of_jsbytes("43264"), - cst_0$167=caml_string_of_jsbytes("0"), - cst_29897=caml_string_of_jsbytes("29897"), - cst_36079=caml_string_of_jsbytes("36079"), - cst_1$95=caml_string_of_jsbytes("1"), - cst_6182=caml_string_of_jsbytes("6182"), - cst_42260=caml_string_of_jsbytes("42260"), - cst_0$168=caml_string_of_jsbytes("0"), - cst_26650=caml_string_of_jsbytes("26650"), - cst_32097=caml_string_of_jsbytes("32097"), - cst_1$96=caml_string_of_jsbytes("1"), - cst_5447=caml_string_of_jsbytes("5447"), - cst_37543=caml_string_of_jsbytes("37543"), - cst_0$169=caml_string_of_jsbytes("0"), - cst_24889=caml_string_of_jsbytes("24889"), - cst_29858=caml_string_of_jsbytes("29858"), - cst_1$97=caml_string_of_jsbytes("1"), - cst_4971=caml_string_of_jsbytes("4971"), - cst_34829=caml_string_of_jsbytes("34829"), - cst_0$164=caml_string_of_jsbytes("0"), - cst_37252=caml_string_of_jsbytes("37252"), - cst_44941=caml_string_of_jsbytes("44941"), - cst_1$92=caml_string_of_jsbytes("1"), - cst_7687=caml_string_of_jsbytes("7687"), - cst_52629=caml_string_of_jsbytes("52629"), - cst_0$165=caml_string_of_jsbytes("0"), - cst_33244=caml_string_of_jsbytes("33244"), - cst_40013=caml_string_of_jsbytes("40013"), - cst_1$93=caml_string_of_jsbytes("1"), - cst_6768=caml_string_of_jsbytes("6768"), - cst_46783=caml_string_of_jsbytes("46783"), - cst_0$166=caml_string_of_jsbytes("0"), - cst_31036=caml_string_of_jsbytes("31036"), - cst_37215=caml_string_of_jsbytes("37215"), - cst_1$94=caml_string_of_jsbytes("1"), - cst_6179=caml_string_of_jsbytes("6179"), - cst_43394=caml_string_of_jsbytes("43394"), - cst_0$161=caml_string_of_jsbytes("0"), - cst_29986=caml_string_of_jsbytes("29986"), - cst_36187=caml_string_of_jsbytes("36187"), - cst_1$89=caml_string_of_jsbytes("1"), - cst_6201=caml_string_of_jsbytes("6201"), - cst_42386=caml_string_of_jsbytes("42386"), - cst_0$162=caml_string_of_jsbytes("0"), - cst_26730=caml_string_of_jsbytes("26730"), - cst_32193=caml_string_of_jsbytes("32193"), - cst_1$90=caml_string_of_jsbytes("1"), - cst_5463=caml_string_of_jsbytes("5463"), - cst_37656=caml_string_of_jsbytes("37656"), - cst_0$163=caml_string_of_jsbytes("0"), - cst_24964=caml_string_of_jsbytes("24964"), - cst_29948=caml_string_of_jsbytes("29948"), - cst_1$91=caml_string_of_jsbytes("1"), - cst_4986=caml_string_of_jsbytes("4986"), - cst_34934=caml_string_of_jsbytes("34934"), - cst_0$158=caml_string_of_jsbytes("0"), - cst_208500=caml_string_of_jsbytes("208500"), - cst_251500=caml_string_of_jsbytes("251500"), - cst_1$86=caml_string_of_jsbytes("1"), - cst_43000=caml_string_of_jsbytes("43000"), - cst_294500=caml_string_of_jsbytes("294500"), - cst_0$159=caml_string_of_jsbytes("0"), - cst_186000=caml_string_of_jsbytes("186000"), - cst_223900=caml_string_of_jsbytes("223900"), - cst_1$87=caml_string_of_jsbytes("1"), - cst_37900=caml_string_of_jsbytes("37900"), - cst_261800=caml_string_of_jsbytes("261800"), - cst_0$160=caml_string_of_jsbytes("0"), - cst_173600=caml_string_of_jsbytes("173600"), - cst_208200=caml_string_of_jsbytes("208200"), - cst_1$88=caml_string_of_jsbytes("1"), - cst_35600=caml_string_of_jsbytes("35600"), - cst_242800=caml_string_of_jsbytes("242800"), - cst_0$155=caml_string_of_jsbytes("0"), - cst_167800=caml_string_of_jsbytes("167800"), - cst_202500=caml_string_of_jsbytes("202500"), - cst_1$83=caml_string_of_jsbytes("1"), - cst_34700=caml_string_of_jsbytes("34700"), - cst_237200=caml_string_of_jsbytes("237200"), - cst_0$156=caml_string_of_jsbytes("0"), - cst_149600=caml_string_of_jsbytes("149600"), - cst_180100=caml_string_of_jsbytes("180100"), - cst_1$84=caml_string_of_jsbytes("1"), - cst_30500$1=caml_string_of_jsbytes("30500"), - cst_210600=caml_string_of_jsbytes("210600"), - cst_0$157=caml_string_of_jsbytes("0"), - cst_139700=caml_string_of_jsbytes("139700"), - cst_167600=caml_string_of_jsbytes("167600"), - cst_1$85=caml_string_of_jsbytes("1"), - cst_27900=caml_string_of_jsbytes("27900"), - cst_195500=caml_string_of_jsbytes("195500"), - cst_0$152=caml_string_of_jsbytes("0"), - cst_184000=caml_string_of_jsbytes("184000"), - cst_220000=caml_string_of_jsbytes("220000"), - cst_1$80=caml_string_of_jsbytes("1"), - cst_38000=caml_string_of_jsbytes("38000"), - cst_260000=caml_string_of_jsbytes("260000"), - cst_0$153=caml_string_of_jsbytes("0"), - cst_164200=caml_string_of_jsbytes("164200"), - cst_197700=caml_string_of_jsbytes("197700"), - cst_1$81=caml_string_of_jsbytes("1"), - cst_33500=caml_string_of_jsbytes("33500"), - cst_231200=caml_string_of_jsbytes("231200"), - cst_0$154=caml_string_of_jsbytes("0"), - cst_153200=caml_string_of_jsbytes("153200"), - cst_183700=caml_string_of_jsbytes("183700"), - cst_1$82=caml_string_of_jsbytes("1"), - cst_30500$0=caml_string_of_jsbytes("30500"), - cst_214200=caml_string_of_jsbytes("214200"), - cst_0$149=caml_string_of_jsbytes("0"), - cst_148100=caml_string_of_jsbytes("148100"), - cst_178700=caml_string_of_jsbytes("178700"), - cst_1$77=caml_string_of_jsbytes("1"), - cst_30600=caml_string_of_jsbytes("30600"), - cst_209300=caml_string_of_jsbytes("209300"), - cst_0$150=caml_string_of_jsbytes("0"), - cst_132000=caml_string_of_jsbytes("132000"), - cst_158900=caml_string_of_jsbytes("158900"), - cst_1$78=caml_string_of_jsbytes("1"), - cst_26900=caml_string_of_jsbytes("26900"), - cst_185800=caml_string_of_jsbytes("185800"), - cst_0$151=caml_string_of_jsbytes("0"), - cst_123300=caml_string_of_jsbytes("123300"), - cst_147900=caml_string_of_jsbytes("147900"), - cst_1$79=caml_string_of_jsbytes("1"), - cst_24600=caml_string_of_jsbytes("24600"), - cst_172500=caml_string_of_jsbytes("172500"), - cst_0$147=caml_string_of_jsbytes("0"), - cst_0$148=caml_string_of_jsbytes("0"), - cst_1272$2=caml_string_of_jsbytes("1272"), - cst_2805$0=caml_string_of_jsbytes("2805"), - cst_5612$2=caml_string_of_jsbytes("5612"), - cst_1229$2=caml_string_of_jsbytes("1229"), - cst_2710$0=caml_string_of_jsbytes("2710"), - cst_5422$2=caml_string_of_jsbytes("5422"), - cst_1224$2=caml_string_of_jsbytes("1224"), - cst_2699$0=caml_string_of_jsbytes("2699"), - cst_5399$2=caml_string_of_jsbytes("5399"), - cst_1272$1=caml_string_of_jsbytes("1272"), - cst_5612$1=caml_string_of_jsbytes("5612"), - cst_1229$1=caml_string_of_jsbytes("1229"), - cst_5422$1=caml_string_of_jsbytes("5422"), - cst_1224$1=caml_string_of_jsbytes("1224"), - cst_5399$1=caml_string_of_jsbytes("5399"), - cst_0_0226=caml_string_of_jsbytes("0.0226"), - cst_0_0234=caml_string_of_jsbytes("0.0234"), - cst_0_0172=caml_string_of_jsbytes("0.0172"), - cst_0_0226$0=caml_string_of_jsbytes("0.0226"), - cst_0_0234$0=caml_string_of_jsbytes("0.0234"), - cst_6_55957=caml_string_of_jsbytes("6.55957"), - cst_1$76=caml_string_of_jsbytes("1."), - cst_0_416=caml_string_of_jsbytes("0.416"), - cst_0_208$0=caml_string_of_jsbytes("0.208"), - cst_560085=caml_string_of_jsbytes("560085"), - cst_16_25=caml_string_of_jsbytes("16.25"), - cst_2211133=caml_string_of_jsbytes("2211133"), - cst_1000$2=caml_string_of_jsbytes("1000"), - cst_500$1=caml_string_of_jsbytes("500"), - cst_0$146=caml_string_of_jsbytes("0"), - cst_0$144=caml_string_of_jsbytes("0"), - cst_0$145=caml_string_of_jsbytes("0"), - cst_50$0=caml_string_of_jsbytes("50"), - cst_0$142=caml_string_of_jsbytes("0"), - cst_0$143=caml_string_of_jsbytes("0"), - cst_0_9$1=caml_string_of_jsbytes("0.9"), - cst_0_9$2=caml_string_of_jsbytes("0.9"), - cst_0_95$0=caml_string_of_jsbytes("0.95"), - cst_0_95$1=caml_string_of_jsbytes("0.95"), - cst_0$140=caml_string_of_jsbytes("0"), - cst_0$141=caml_string_of_jsbytes("0"), - cst_100$7=caml_string_of_jsbytes("100."), - cst_100$8=caml_string_of_jsbytes("100."), - cst_0_005$1=caml_string_of_jsbytes("0.005"), - cst_100$5=caml_string_of_jsbytes("100."), - cst_100$6=caml_string_of_jsbytes("100."), - cst_0_005$0=caml_string_of_jsbytes("0.005"), - cst_0$139=caml_string_of_jsbytes("0"), - cst_0_9$0=caml_string_of_jsbytes("0.9"), - cst_0$137=caml_string_of_jsbytes("0"), - cst_0$138=caml_string_of_jsbytes("0"), - cst_0_95=caml_string_of_jsbytes("0.95"), - cst_2142091=caml_string_of_jsbytes("2142091"), - cst_1339340=caml_string_of_jsbytes("1339340"), - cst_1500=caml_string_of_jsbytes("1500"), - cst_2668=caml_string_of_jsbytes("2668"), - cst_0$135=caml_string_of_jsbytes("0"), - cst_0$136=caml_string_of_jsbytes("0"), - cst_0$132=caml_string_of_jsbytes("0"), - cst_46192=caml_string_of_jsbytes("46192"), - cst_54152=caml_string_of_jsbytes("54152"), - cst_1$73=caml_string_of_jsbytes("1"), - cst_57741=caml_string_of_jsbytes("57741"), - cst_2$38=caml_string_of_jsbytes("2"), - cst_61794=caml_string_of_jsbytes("61794"), - cst_3$23=caml_string_of_jsbytes("3"), - cst_65862=caml_string_of_jsbytes("65862"), - cst_4$19=caml_string_of_jsbytes("4"), - cst_7368=caml_string_of_jsbytes("7368"), - cst_71039=caml_string_of_jsbytes("71039"), - cst_0$133=caml_string_of_jsbytes("0"), - cst_42242=caml_string_of_jsbytes("42242"), - cst_49299=caml_string_of_jsbytes("49299"), - cst_1$74=caml_string_of_jsbytes("1"), - cst_52565=caml_string_of_jsbytes("52565"), - cst_2$39=caml_string_of_jsbytes("2"), - cst_56268=caml_string_of_jsbytes("56268"), - cst_3$24=caml_string_of_jsbytes("3"), - cst_59957=caml_string_of_jsbytes("59957"), - cst_4$20=caml_string_of_jsbytes("4"), - cst_6659=caml_string_of_jsbytes("6659"), - cst_63887=caml_string_of_jsbytes("63887"), - cst_0$134=caml_string_of_jsbytes("0"), - cst_40096=caml_string_of_jsbytes("40096"), - cst_46634=caml_string_of_jsbytes("46634"), - cst_1$75=caml_string_of_jsbytes("1"), - cst_49475=caml_string_of_jsbytes("49475"), - cst_2$40=caml_string_of_jsbytes("2"), - cst_52740=caml_string_of_jsbytes("52740"), - cst_3$25=caml_string_of_jsbytes("3"), - cst_56004=caml_string_of_jsbytes("56004"), - cst_4$21=caml_string_of_jsbytes("4"), - cst_6180=caml_string_of_jsbytes("6180"), - cst_59675=caml_string_of_jsbytes("59675"), - cst_0$129=caml_string_of_jsbytes("0"), - cst_44630=caml_string_of_jsbytes("44630"), - cst_52321=caml_string_of_jsbytes("52321"), - cst_1$70=caml_string_of_jsbytes("1"), - cst_55788=caml_string_of_jsbytes("55788"), - cst_2$35=caml_string_of_jsbytes("2"), - cst_59704=caml_string_of_jsbytes("59704"), - cst_3$20=caml_string_of_jsbytes("3"), - cst_63635=caml_string_of_jsbytes("63635"), - cst_4$16=caml_string_of_jsbytes("4"), - cst_7119=caml_string_of_jsbytes("7119"), - cst_68637=caml_string_of_jsbytes("68637"), - cst_0$130=caml_string_of_jsbytes("0"), - cst_40814=caml_string_of_jsbytes("40814"), - cst_47632=caml_string_of_jsbytes("47632"), - cst_1$71=caml_string_of_jsbytes("1"), - cst_50787=caml_string_of_jsbytes("50787"), - cst_2$36=caml_string_of_jsbytes("2"), - cst_54365=caml_string_of_jsbytes("54365"), - cst_3$21=caml_string_of_jsbytes("3"), - cst_57929=caml_string_of_jsbytes("57929"), - cst_4$17=caml_string_of_jsbytes("4"), - cst_6434=caml_string_of_jsbytes("6434"), - cst_61727=caml_string_of_jsbytes("61727"), - cst_0$131=caml_string_of_jsbytes("0"), - cst_38740=caml_string_of_jsbytes("38740"), - cst_45057=caml_string_of_jsbytes("45057"), - cst_1$72=caml_string_of_jsbytes("1"), - cst_47802=caml_string_of_jsbytes("47802"), - cst_2$37=caml_string_of_jsbytes("2"), - cst_50957=caml_string_of_jsbytes("50957"), - cst_3$22=caml_string_of_jsbytes("3"), - cst_54110=caml_string_of_jsbytes("54110"), - cst_4$18=caml_string_of_jsbytes("4"), - cst_5971=caml_string_of_jsbytes("5971"), - cst_57657=caml_string_of_jsbytes("57657"), - cst_0$126=caml_string_of_jsbytes("0"), - cst_44443=caml_string_of_jsbytes("44443"), - cst_52101=caml_string_of_jsbytes("52101"), - cst_1$67=caml_string_of_jsbytes("1"), - cst_55555=caml_string_of_jsbytes("55555"), - cst_2$32=caml_string_of_jsbytes("2"), - cst_59454=caml_string_of_jsbytes("59454"), - cst_3$17=caml_string_of_jsbytes("3"), - cst_63369=caml_string_of_jsbytes("63369"), - cst_4$13=caml_string_of_jsbytes("4"), - cst_7089=caml_string_of_jsbytes("7089"), - cst_68350=caml_string_of_jsbytes("68350"), - cst_0$127=caml_string_of_jsbytes("0"), - cst_40643=caml_string_of_jsbytes("40643"), - cst_47433=caml_string_of_jsbytes("47433"), - cst_1$68=caml_string_of_jsbytes("1"), - cst_50575=caml_string_of_jsbytes("50575"), - cst_2$33=caml_string_of_jsbytes("2"), - cst_54138=caml_string_of_jsbytes("54138"), - cst_3$18=caml_string_of_jsbytes("3"), - cst_57687=caml_string_of_jsbytes("57687"), - cst_4$14=caml_string_of_jsbytes("4"), - cst_6407=caml_string_of_jsbytes("6407"), - cst_61469=caml_string_of_jsbytes("61469"), - cst_0$128=caml_string_of_jsbytes("0"), - cst_38578=caml_string_of_jsbytes("38578"), - cst_44869=caml_string_of_jsbytes("44869"), - cst_1$69=caml_string_of_jsbytes("1"), - cst_47602=caml_string_of_jsbytes("47602"), - cst_2$34=caml_string_of_jsbytes("2"), - cst_50744=caml_string_of_jsbytes("50744"), - cst_3$19=caml_string_of_jsbytes("3"), - cst_53884=caml_string_of_jsbytes("53884"), - cst_4$15=caml_string_of_jsbytes("4"), - cst_5946=caml_string_of_jsbytes("5946"), - cst_57416=caml_string_of_jsbytes("57416"), - cst_1000$1=caml_string_of_jsbytes("1000"), - cst_500$0=caml_string_of_jsbytes("500"), - cst_121726=caml_string_of_jsbytes("121726"), - cst_0$124=caml_string_of_jsbytes("0"), - cst_0$125=caml_string_of_jsbytes("0"), - cst_0$122=caml_string_of_jsbytes("0"), - cst_0$123=caml_string_of_jsbytes("0"), - cst_0$121=caml_string_of_jsbytes("0"), - cst_0$119=caml_string_of_jsbytes("0"), - cst_0$120=caml_string_of_jsbytes("0"), - cst_100000$3=caml_string_of_jsbytes("100000."), - cst_100000$4=caml_string_of_jsbytes("100000."), - cst_100000$1=caml_string_of_jsbytes("100000."), - cst_100000$2=caml_string_of_jsbytes("100000."), - cst_100000=caml_string_of_jsbytes("100000."), - cst_100000$0=caml_string_of_jsbytes("100000."), - cst_50=caml_string_of_jsbytes("50"), - cst_0$117=caml_string_of_jsbytes("0"), - cst_0$118=caml_string_of_jsbytes("0"), - cst_0_45$3=caml_string_of_jsbytes("0.45"), - cst_0$115=caml_string_of_jsbytes("0."), - cst_0_75$5=caml_string_of_jsbytes("0.75"), - cst_0_45$4=caml_string_of_jsbytes("0.45"), - cst_0_0045$5=caml_string_of_jsbytes("0.0045"), - cst_0_0045$6=caml_string_of_jsbytes("0.0045"), - cst_0_75$6=caml_string_of_jsbytes("0.75"), - cst_0_75$7=caml_string_of_jsbytes("0.75"), - cst_0_0068$1=caml_string_of_jsbytes("0.0068"), - cst_0_3$1=caml_string_of_jsbytes("0.3"), - cst_0_0045$7=caml_string_of_jsbytes("0.0045"), - cst_0$116=caml_string_of_jsbytes("0."), - cst_0_45$1=caml_string_of_jsbytes("0.45"), - cst_0$113=caml_string_of_jsbytes("0."), - cst_0_75$2=caml_string_of_jsbytes("0.75"), - cst_0_45$2=caml_string_of_jsbytes("0.45"), - cst_0_0045$2=caml_string_of_jsbytes("0.0045"), - cst_0_0045$3=caml_string_of_jsbytes("0.0045"), - cst_0_75$3=caml_string_of_jsbytes("0.75"), - cst_0_75$4=caml_string_of_jsbytes("0.75"), - cst_0_0068$0=caml_string_of_jsbytes("0.0068"), - cst_0_3$0=caml_string_of_jsbytes("0.3"), - cst_0_0045$4=caml_string_of_jsbytes("0.0045"), - cst_0$114=caml_string_of_jsbytes("0."), - cst_0_45=caml_string_of_jsbytes("0.45"), - cst_0$111=caml_string_of_jsbytes("0."), - cst_0_75=caml_string_of_jsbytes("0.75"), - cst_0_45$0=caml_string_of_jsbytes("0.45"), - cst_0_0045=caml_string_of_jsbytes("0.0045"), - cst_0_0045$0=caml_string_of_jsbytes("0.0045"), - cst_0_75$0=caml_string_of_jsbytes("0.75"), - cst_0_75$1=caml_string_of_jsbytes("0.75"), - cst_0_0068=caml_string_of_jsbytes("0.0068"), - cst_0_3=caml_string_of_jsbytes("0.3"), - cst_0_0045$1=caml_string_of_jsbytes("0.0045"), - cst_0$112=caml_string_of_jsbytes("0."), - cst_0$109=caml_string_of_jsbytes("0"), - cst_0$110=caml_string_of_jsbytes("0"), - cst_100$3=caml_string_of_jsbytes("100."), - cst_100$4=caml_string_of_jsbytes("100."), - cst_100$1=caml_string_of_jsbytes("100."), - cst_100$2=caml_string_of_jsbytes("100."), - cst_100=caml_string_of_jsbytes("100."), - cst_100$0=caml_string_of_jsbytes("100."), - cst_3663=caml_string_of_jsbytes("3663"), - cst_0_085$3=caml_string_of_jsbytes("0.085"), - cst_0_085$4=caml_string_of_jsbytes("0.085"), - cst_3663$0=caml_string_of_jsbytes("3663"), - cst_3539=caml_string_of_jsbytes("3539"), - cst_0_085$1=caml_string_of_jsbytes("0.085"), - cst_0_085$2=caml_string_of_jsbytes("0.085"), - cst_3539$0=caml_string_of_jsbytes("3539"), - cst_3524=caml_string_of_jsbytes("3524"), - cst_0_085=caml_string_of_jsbytes("0.085"), - cst_0_085$0=caml_string_of_jsbytes("0.085"), - cst_3524$0=caml_string_of_jsbytes("3524"), - cst_0$108=caml_string_of_jsbytes("0"), - cst_3_4=caml_string_of_jsbytes("3.4"), - cst_2_5$2=caml_string_of_jsbytes("2.5"), - cst_2_5$3=caml_string_of_jsbytes("2.5"), - cst_4$12=caml_string_of_jsbytes("4."), - cst_3_1=caml_string_of_jsbytes("3.1"), - cst_3_1$0=caml_string_of_jsbytes("3.1"), - cst_3$16=caml_string_of_jsbytes("3."), - cst_2$31=caml_string_of_jsbytes("2."), - cst_1272$0=caml_string_of_jsbytes("1272"), - cst_2805=caml_string_of_jsbytes("2805"), - cst_5612$0=caml_string_of_jsbytes("5612"), - cst_1229$0=caml_string_of_jsbytes("1229"), - cst_2710=caml_string_of_jsbytes("2710"), - cst_5422$0=caml_string_of_jsbytes("5422"), - cst_1224$0=caml_string_of_jsbytes("1224"), - cst_2699=caml_string_of_jsbytes("2699"), - cst_5399$0=caml_string_of_jsbytes("5399"), - cst_1272=caml_string_of_jsbytes("1272"), - cst_5612=caml_string_of_jsbytes("5612"), - cst_1229=caml_string_of_jsbytes("1229"), - cst_5422=caml_string_of_jsbytes("5422"), - cst_1224=caml_string_of_jsbytes("1224"), - cst_5399=caml_string_of_jsbytes("5399"), - cst_0$107=caml_string_of_jsbytes("0"), - cst_23138$0=caml_string_of_jsbytes("23138"), - cst_20165$0=caml_string_of_jsbytes("20165"), - cst_18900$0=caml_string_of_jsbytes("18900"), - cst_0$106=caml_string_of_jsbytes("0"), - cst_27905=caml_string_of_jsbytes("27905"), - cst_24683=caml_string_of_jsbytes("24683"), - cst_22911=caml_string_of_jsbytes("22911"), - cst_1$66=caml_string_of_jsbytes("1"), - cst_1$63=caml_string_of_jsbytes("1"), - cst_4576=caml_string_of_jsbytes("4576"), - cst_31539=caml_string_of_jsbytes("31539"), - cst_1$64=caml_string_of_jsbytes("1"), - cst_4043=caml_string_of_jsbytes("4043"), - cst_27774=caml_string_of_jsbytes("27774"), - cst_1$65=caml_string_of_jsbytes("1"), - cst_3682=caml_string_of_jsbytes("3682"), - cst_25689=caml_string_of_jsbytes("25689"), - cst_0$105=caml_string_of_jsbytes("0"), - cst_22355$0=caml_string_of_jsbytes("22355"), - cst_19484$0=caml_string_of_jsbytes("19484"), - cst_18261$0=caml_string_of_jsbytes("18261"), - cst_0$104=caml_string_of_jsbytes("0"), - cst_26962=caml_string_of_jsbytes("26962"), - cst_23848=caml_string_of_jsbytes("23848"), - cst_22136=caml_string_of_jsbytes("22136"), - cst_1$62=caml_string_of_jsbytes("1"), - cst_1$59=caml_string_of_jsbytes("1"), - cst_4421=caml_string_of_jsbytes("4421"), - cst_30473=caml_string_of_jsbytes("30473"), - cst_1$60=caml_string_of_jsbytes("1"), - cst_3906=caml_string_of_jsbytes("3906"), - cst_26835=caml_string_of_jsbytes("26835"), - cst_1$61=caml_string_of_jsbytes("1"), - cst_3557=caml_string_of_jsbytes("3557"), - cst_24821=caml_string_of_jsbytes("24821"), - cst_0$103=caml_string_of_jsbytes("0"), - cst_22262$0=caml_string_of_jsbytes("22262"), - cst_19402$0=caml_string_of_jsbytes("19402"), - cst_18185$0=caml_string_of_jsbytes("18185"), - cst_0$102=caml_string_of_jsbytes("0"), - cst_26849=caml_string_of_jsbytes("26849"), - cst_23748=caml_string_of_jsbytes("23748"), - cst_22044=caml_string_of_jsbytes("22044"), - cst_1$58=caml_string_of_jsbytes("1"), - cst_1$55=caml_string_of_jsbytes("1"), - cst_4403=caml_string_of_jsbytes("4403"), - cst_30345=caml_string_of_jsbytes("30345"), - cst_1$56=caml_string_of_jsbytes("1"), - cst_3890=caml_string_of_jsbytes("3890"), - cst_26723=caml_string_of_jsbytes("26723"), - cst_1$57=caml_string_of_jsbytes("1"), - cst_3542=caml_string_of_jsbytes("3542"), - cst_24717=caml_string_of_jsbytes("24717"), - cst_23138=caml_string_of_jsbytes("23138"), - cst_20165=caml_string_of_jsbytes("20165"), - cst_18900=caml_string_of_jsbytes("18900"), - cst_22355=caml_string_of_jsbytes("22355"), - cst_19484=caml_string_of_jsbytes("19484"), - cst_18261=caml_string_of_jsbytes("18261"), - cst_22262=caml_string_of_jsbytes("22262"), - cst_19402=caml_string_of_jsbytes("19402"), - cst_18185=caml_string_of_jsbytes("18185"), - cst_27765=caml_string_of_jsbytes("27765"), - cst_24198=caml_string_of_jsbytes("24198"), - cst_22680=caml_string_of_jsbytes("22680"), - cst_26826=caml_string_of_jsbytes("26826"), - cst_23380=caml_string_of_jsbytes("23380"), - cst_21913=caml_string_of_jsbytes("21913"), - cst_26714=caml_string_of_jsbytes("26714"), - cst_23282=caml_string_of_jsbytes("23282"), - cst_21821=caml_string_of_jsbytes("21821"), - cst_0$101=caml_string_of_jsbytes("0"), - cst_30850=caml_string_of_jsbytes("30850"), - cst_26887=caml_string_of_jsbytes("26887"), - cst_25200=caml_string_of_jsbytes("25200"), - cst_0$100=caml_string_of_jsbytes("0"), - cst_37207=caml_string_of_jsbytes("37207"), - cst_32910=caml_string_of_jsbytes("32910"), - cst_30548=caml_string_of_jsbytes("30548"), - cst_1$54=caml_string_of_jsbytes("1"), - cst_1$51=caml_string_of_jsbytes("1"), - cst_6101=caml_string_of_jsbytes("6101"), - cst_42052=caml_string_of_jsbytes("42052"), - cst_1$52=caml_string_of_jsbytes("1"), - cst_5390=caml_string_of_jsbytes("5390"), - cst_37032=caml_string_of_jsbytes("37032"), - cst_1$53=caml_string_of_jsbytes("1"), - cst_4909=caml_string_of_jsbytes("4909"), - cst_34252=caml_string_of_jsbytes("34252"), - cst_0$99=caml_string_of_jsbytes("0"), - cst_29807=caml_string_of_jsbytes("29807"), - cst_25978$1=caml_string_of_jsbytes("25978"), - cst_24348=caml_string_of_jsbytes("24348"), - cst_0$98=caml_string_of_jsbytes("0"), - cst_35949=caml_string_of_jsbytes("35949"), - cst_31797$1=caml_string_of_jsbytes("31797"), - cst_29515=caml_string_of_jsbytes("29515"), - cst_1$50=caml_string_of_jsbytes("1"), - cst_1$47=caml_string_of_jsbytes("1"), - cst_5895=caml_string_of_jsbytes("5895"), - cst_40630=caml_string_of_jsbytes("40630"), - cst_1$48=caml_string_of_jsbytes("1"), - cst_5208$1=caml_string_of_jsbytes("5208"), - cst_35780$1=caml_string_of_jsbytes("35780"), - cst_1$49=caml_string_of_jsbytes("1"), - cst_4743=caml_string_of_jsbytes("4743"), - cst_33094=caml_string_of_jsbytes("33094"), - cst_0$97=caml_string_of_jsbytes("0"), - cst_29682=caml_string_of_jsbytes("29682"), - cst_25859=caml_string_of_jsbytes("25859"), - cst_24246=caml_string_of_jsbytes("24246"), - cst_0$96=caml_string_of_jsbytes("0"), - cst_35799=caml_string_of_jsbytes("35799"), - cst_31664$0=caml_string_of_jsbytes("31664"), - cst_29392=caml_string_of_jsbytes("29392"), - cst_1$46=caml_string_of_jsbytes("1"), - cst_1$43=caml_string_of_jsbytes("1"), - cst_5870=caml_string_of_jsbytes("5870"), - cst_40460=caml_string_of_jsbytes("40460"), - cst_1$44=caml_string_of_jsbytes("1"), - cst_5186$0=caml_string_of_jsbytes("5186"), - cst_35630$0=caml_string_of_jsbytes("35630"), - cst_1$45=caml_string_of_jsbytes("1"), - cst_4723=caml_string_of_jsbytes("4723"), - cst_32956=caml_string_of_jsbytes("32956"), - cst_0$95=caml_string_of_jsbytes("0"), - cst_1000=caml_string_of_jsbytes("1000"), - cst_1000$0=caml_string_of_jsbytes("1000"), - cst_0$94=caml_string_of_jsbytes("0"), - cst_25978$0=caml_string_of_jsbytes("25978"), - cst_31797$0=caml_string_of_jsbytes("31797"), - cst_1$42=caml_string_of_jsbytes("1"), - cst_5208$0=caml_string_of_jsbytes("5208"), - cst_35780$0=caml_string_of_jsbytes("35780"), - cst_0$93=caml_string_of_jsbytes("0"), - cst_25978=caml_string_of_jsbytes("25978"), - cst_31797=caml_string_of_jsbytes("31797"), - cst_1$41=caml_string_of_jsbytes("1"), - cst_5208=caml_string_of_jsbytes("5208"), - cst_35780=caml_string_of_jsbytes("35780"), - cst_0$92=caml_string_of_jsbytes("0"), - cst_25869=caml_string_of_jsbytes("25869"), - cst_31664=caml_string_of_jsbytes("31664"), - cst_1$40=caml_string_of_jsbytes("1"), - cst_5186=caml_string_of_jsbytes("5186"), - cst_35630=caml_string_of_jsbytes("35630"), - cst_0$91=caml_string_of_jsbytes("0"), - cst_494900=caml_string_of_jsbytes("494900"), - cst_709000=caml_string_of_jsbytes("709000"), - cst_1$39=caml_string_of_jsbytes("1"), - cst_845600=caml_string_of_jsbytes("845600"), - cst_2$30=caml_string_of_jsbytes("2"), - cst_864600=caml_string_of_jsbytes("864600"), - cst_3$15=caml_string_of_jsbytes("3"), - cst_897700=caml_string_of_jsbytes("897700"), - cst_4$11=caml_string_of_jsbytes("4"), - cst_931100=caml_string_of_jsbytes("931100"), - cst_5$5=caml_string_of_jsbytes("5"), - cst_964200=caml_string_of_jsbytes("964200"), - cst_6$13=caml_string_of_jsbytes("6"), - cst_997500=caml_string_of_jsbytes("997500"), - cst_6$14=caml_string_of_jsbytes("6"), - cst_32800=caml_string_of_jsbytes("32800"), - cst_997500$0=caml_string_of_jsbytes("997500"), - cst_0$90=caml_string_of_jsbytes("0"), - cst_487000=caml_string_of_jsbytes("487000"), - cst_697700=caml_string_of_jsbytes("697700"), - cst_1$38=caml_string_of_jsbytes("1"), - cst_832200$0=caml_string_of_jsbytes("832200"), - cst_2$29=caml_string_of_jsbytes("2"), - cst_850900=caml_string_of_jsbytes("850900"), - cst_3$14=caml_string_of_jsbytes("3"), - cst_883400=caml_string_of_jsbytes("883400"), - cst_4$10=caml_string_of_jsbytes("4"), - cst_916300=caml_string_of_jsbytes("916300"), - cst_5$4=caml_string_of_jsbytes("5"), - cst_948800=caml_string_of_jsbytes("948800"), - cst_6$11=caml_string_of_jsbytes("6"), - cst_981600=caml_string_of_jsbytes("981600"), - cst_6$12=caml_string_of_jsbytes("6"), - cst_32300=caml_string_of_jsbytes("32300"), - cst_981600$0=caml_string_of_jsbytes("981600"), - cst_0$89=caml_string_of_jsbytes("0"), - cst_468300=caml_string_of_jsbytes("468300"), - cst_670900=caml_string_of_jsbytes("670900"), - cst_1$37=caml_string_of_jsbytes("1"), - cst_800200=caml_string_of_jsbytes("800200"), - cst_2$28=caml_string_of_jsbytes("2"), - cst_819200=caml_string_of_jsbytes("819200"), - cst_3$13=caml_string_of_jsbytes("3"), - cst_849500=caml_string_of_jsbytes("849500"), - cst_4$9=caml_string_of_jsbytes("4"), - cst_881100=caml_string_of_jsbytes("881100"), - cst_5$3=caml_string_of_jsbytes("5"), - cst_912400=caml_string_of_jsbytes("912400"), - cst_6$9=caml_string_of_jsbytes("6"), - cst_943900=caml_string_of_jsbytes("943900"), - cst_6$10=caml_string_of_jsbytes("6"), - cst_31100=caml_string_of_jsbytes("31100"), - cst_943900$0=caml_string_of_jsbytes("943900"), - cst_0$88=caml_string_of_jsbytes("0"), - cst_458800=caml_string_of_jsbytes("458800"), - cst_657200=caml_string_of_jsbytes("657200"), - cst_1$36=caml_string_of_jsbytes("1"), - cst_783900=caml_string_of_jsbytes("783900"), - cst_2$27=caml_string_of_jsbytes("2"), - cst_801500=caml_string_of_jsbytes("801500"), - cst_3$12=caml_string_of_jsbytes("3"), - cst_832200=caml_string_of_jsbytes("832200"), - cst_4$8=caml_string_of_jsbytes("4"), - cst_863100=caml_string_of_jsbytes("863100"), - cst_5$2=caml_string_of_jsbytes("5"), - cst_893800=caml_string_of_jsbytes("893800"), - cst_6$7=caml_string_of_jsbytes("6"), - cst_924600=caml_string_of_jsbytes("924600"), - cst_6$8=caml_string_of_jsbytes("6"), - cst_30500=caml_string_of_jsbytes("30500"), - cst_924600$0=caml_string_of_jsbytes("924600"), - cst_0$87=caml_string_of_jsbytes("0"), - cst_0_0283$1=caml_string_of_jsbytes("0.0283"), - cst_0_0315$1=caml_string_of_jsbytes("0.0315"), - cst_1$35=caml_string_of_jsbytes("1"), - cst_0_027$1=caml_string_of_jsbytes("0.027"), - cst_2$26=caml_string_of_jsbytes("2"), - cst_0_0238$1=caml_string_of_jsbytes("0.0238"), - cst_3$11=caml_string_of_jsbytes("3"), - cst_0_0201$1=caml_string_of_jsbytes("0.0201"), - cst_4$7=caml_string_of_jsbytes("4"), - cst_0_0185$1=caml_string_of_jsbytes("0.0185"), - cst_5$1=caml_string_of_jsbytes("5"), - cst_0_0179$1=caml_string_of_jsbytes("0.0179"), - cst_6$5=caml_string_of_jsbytes("6"), - cst_0_0173$3=caml_string_of_jsbytes("0.0173"), - cst_6$6=caml_string_of_jsbytes("6"), - cst_0_0006$1=caml_string_of_jsbytes("0.0006"), - cst_0_0173$4=caml_string_of_jsbytes("0.0173"), - cst_0$86=caml_string_of_jsbytes("0"), - cst_0_0283$0=caml_string_of_jsbytes("0.0283"), - cst_0_0315$0=caml_string_of_jsbytes("0.0315"), - cst_1$34=caml_string_of_jsbytes("1"), - cst_0_027$0=caml_string_of_jsbytes("0.027"), - cst_2$25=caml_string_of_jsbytes("2"), - cst_0_0238$0=caml_string_of_jsbytes("0.0238"), - cst_3$10=caml_string_of_jsbytes("3"), - cst_0_0201$0=caml_string_of_jsbytes("0.0201"), - cst_4$6=caml_string_of_jsbytes("4"), - cst_0_0185$0=caml_string_of_jsbytes("0.0185"), - cst_5$0=caml_string_of_jsbytes("5"), - cst_0_0179$0=caml_string_of_jsbytes("0.0179"), - cst_6$3=caml_string_of_jsbytes("6"), - cst_0_0173$1=caml_string_of_jsbytes("0.0173"), - cst_6$4=caml_string_of_jsbytes("6"), - cst_0_0006$0=caml_string_of_jsbytes("0.0006"), - cst_0_0173$2=caml_string_of_jsbytes("0.0173"), - cst_0$85=caml_string_of_jsbytes("0"), - cst_0_0283=caml_string_of_jsbytes("0.0283"), - cst_0_0315=caml_string_of_jsbytes("0.0315"), - cst_1$33=caml_string_of_jsbytes("1"), - cst_0_027=caml_string_of_jsbytes("0.027"), - cst_2$24=caml_string_of_jsbytes("2"), - cst_0_0238=caml_string_of_jsbytes("0.0238"), - cst_3$9=caml_string_of_jsbytes("3"), - cst_0_0201=caml_string_of_jsbytes("0.0201"), - cst_4$5=caml_string_of_jsbytes("4"), - cst_0_0185=caml_string_of_jsbytes("0.0185"), - cst_5=caml_string_of_jsbytes("5"), - cst_0_0179=caml_string_of_jsbytes("0.0179"), - cst_6$1=caml_string_of_jsbytes("6"), - cst_0_0173=caml_string_of_jsbytes("0.0173"), - cst_6$2=caml_string_of_jsbytes("6"), - cst_0_0006=caml_string_of_jsbytes("0.0006"), - cst_0_0173$0=caml_string_of_jsbytes("0.0173"), - cst_500=caml_string_of_jsbytes("500"), - cst_0_98=caml_string_of_jsbytes("0.98"), - cst_2_5$4=caml_string_of_jsbytes("2.5"), - cst_0_98$0=caml_string_of_jsbytes("0.98"), - cst_0_9=caml_string_of_jsbytes("0.9"), - cst_1003$0=caml_string_of_jsbytes("1003"), - cst_757$0=caml_string_of_jsbytes("757"), - cst_1015$0=caml_string_of_jsbytes("1015"), - cst_766$0=caml_string_of_jsbytes("766"), - cst_1025$0=caml_string_of_jsbytes("1025"), - cst_774$0=caml_string_of_jsbytes("774"), - cst_1057$0=caml_string_of_jsbytes("1057"), - cst_798$0=caml_string_of_jsbytes("798"), - cst_1085$0=caml_string_of_jsbytes("1085"), - cst_819$0=caml_string_of_jsbytes("819"), - cst_1107$0=caml_string_of_jsbytes("1107"), - cst_835$0=caml_string_of_jsbytes("835"), - cst_1127$0=caml_string_of_jsbytes("1127"), - cst_851$0=caml_string_of_jsbytes("851"), - cst_41316$0=caml_string_of_jsbytes("41316"), - cst_41440$0=caml_string_of_jsbytes("41440"), - cst_41481$0=caml_string_of_jsbytes("41481"), - cst_42228$0=caml_string_of_jsbytes("42228"), - cst_0$84=caml_string_of_jsbytes("0"), - cst_0$83=caml_string_of_jsbytes("0"), - cst_0$81=caml_string_of_jsbytes("0"), - cst_0$82=caml_string_of_jsbytes("0"), - cst_2$23=caml_string_of_jsbytes("2."), - cst_0$79=caml_string_of_jsbytes("0"), - cst_0$80=caml_string_of_jsbytes("0"), - cst_2$22=caml_string_of_jsbytes("2."), - cst_6$0=caml_string_of_jsbytes("6."), - cst_1$32=caml_string_of_jsbytes("1."), - cst_2$21=caml_string_of_jsbytes("2."), - cst_0$78=caml_string_of_jsbytes("0"), - cst_6=caml_string_of_jsbytes("6."), - cst_1$31=caml_string_of_jsbytes("1."), - cst_2$20=caml_string_of_jsbytes("2."), - cst_0$77=caml_string_of_jsbytes("0"), - cst_12$13=caml_string_of_jsbytes("12."), - cst_1952=caml_string_of_jsbytes("1952"), - cst_1953=caml_string_of_jsbytes("1953"), - cst_1954=caml_string_of_jsbytes("1954"), - cst_0$76=caml_string_of_jsbytes("0"), - cst_1_4$0=caml_string_of_jsbytes("1.4"), - cst_1_8$0=caml_string_of_jsbytes("1.8"), - cst_1$30=caml_string_of_jsbytes("1"), - cst_2_5$1=caml_string_of_jsbytes("2.5"), - cst_2$19=caml_string_of_jsbytes("2"), - cst_3$7=caml_string_of_jsbytes("3."), - cst_3$8=caml_string_of_jsbytes("3"), - cst_3_7$1=caml_string_of_jsbytes("3.7"), - cst_4$3=caml_string_of_jsbytes("4"), - cst_4_3$3=caml_string_of_jsbytes("4.3"), - cst_4$4=caml_string_of_jsbytes("4"), - cst_0_5$3=caml_string_of_jsbytes("0.5"), - cst_4_3$4=caml_string_of_jsbytes("4.3"), - cst_0$75=caml_string_of_jsbytes("0"), - cst_1_2=caml_string_of_jsbytes("1.2"), - cst_1_5=caml_string_of_jsbytes("1.5"), - cst_1$29=caml_string_of_jsbytes("1"), - cst_2_5$0=caml_string_of_jsbytes("2.5"), - cst_2$18=caml_string_of_jsbytes("2"), - cst_3$5=caml_string_of_jsbytes("3."), - cst_3$6=caml_string_of_jsbytes("3"), - cst_3_7$0=caml_string_of_jsbytes("3.7"), - cst_4$1=caml_string_of_jsbytes("4"), - cst_4_3$1=caml_string_of_jsbytes("4.3"), - cst_4$2=caml_string_of_jsbytes("4"), - cst_0_5$2=caml_string_of_jsbytes("0.5"), - cst_4_3$2=caml_string_of_jsbytes("4.3"), - cst_0$74=caml_string_of_jsbytes("0"), - cst_1_4=caml_string_of_jsbytes("1.4"), - cst_1_8=caml_string_of_jsbytes("1.8"), - cst_1$28=caml_string_of_jsbytes("1"), - cst_2_5=caml_string_of_jsbytes("2.5"), - cst_2$17=caml_string_of_jsbytes("2"), - cst_3$3=caml_string_of_jsbytes("3."), - cst_3$4=caml_string_of_jsbytes("3"), - cst_3_7=caml_string_of_jsbytes("3.7"), - cst_4=caml_string_of_jsbytes("4"), - cst_4_3=caml_string_of_jsbytes("4.3"), - cst_4$0=caml_string_of_jsbytes("4"), - cst_0_5$1=caml_string_of_jsbytes("0.5"), - cst_4_3$0=caml_string_of_jsbytes("4.3"), - cst_0$72=caml_string_of_jsbytes("0."), - cst_12$12=caml_string_of_jsbytes("12."), - cst_0$73=caml_string_of_jsbytes("0."), - cst_0$70=caml_string_of_jsbytes("0."), - cst_12$11=caml_string_of_jsbytes("12."), - cst_0$71=caml_string_of_jsbytes("0."), - cst_0_328=caml_string_of_jsbytes("0.328"), - cst_409505=caml_string_of_jsbytes("409505"), - cst_0_232$0=caml_string_of_jsbytes("0.232"), - cst_262985=caml_string_of_jsbytes("262985"), - cst_409505$0=caml_string_of_jsbytes("409505"), - cst_0_208=caml_string_of_jsbytes("0.208"), - cst_204761=caml_string_of_jsbytes("204761"), - cst_262985$0=caml_string_of_jsbytes("262985"), - cst_0_024=caml_string_of_jsbytes("0.024"), - cst_142303=caml_string_of_jsbytes("142303"), - cst_204761$0=caml_string_of_jsbytes("204761"), - cst_0$68=caml_string_of_jsbytes("0."), - cst_0$69=caml_string_of_jsbytes("0"), - cst_142303$0=caml_string_of_jsbytes("142303"), - cst_0_48=caml_string_of_jsbytes("0.48"), - cst_633129=caml_string_of_jsbytes("633129"), - cst_0_32$1=caml_string_of_jsbytes("0.32"), - cst_535744=caml_string_of_jsbytes("535744"), - cst_633129$0=caml_string_of_jsbytes("633129"), - cst_0_264=caml_string_of_jsbytes("0.264"), - cst_389618=caml_string_of_jsbytes("389618"), - cst_535744$0=caml_string_of_jsbytes("535744"), - cst_0_216=caml_string_of_jsbytes("0.216"), - cst_267871=caml_string_of_jsbytes("267871"), - cst_389618$0=caml_string_of_jsbytes("389618"), - cst_0_104=caml_string_of_jsbytes("0.104"), - cst_194810=caml_string_of_jsbytes("194810"), - cst_267871$0=caml_string_of_jsbytes("267871"), - cst_0_04$0=caml_string_of_jsbytes("0.04"), - cst_0$67=caml_string_of_jsbytes("0"), - cst_194810$0=caml_string_of_jsbytes("194810"), - cst_7632=caml_string_of_jsbytes("7632"), - cst_4557=caml_string_of_jsbytes("4557"), - cst_0_005=caml_string_of_jsbytes("0.005"), - cst_r_sidence_in$3=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), - cst_prestation_courante_in$0= - caml_string_of_jsbytes("prestation_courante_in"), - cst_date_courante_in$20=caml_string_of_jsbytes("date_courante_in"), - cst_r_sidence_in$2=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), - cst_date_courante_in$19=caml_string_of_jsbytes("date_courante_in"), - cst_date_courante_in$18=caml_string_of_jsbytes("date_courante_in"), - cst_ressources_m_nage_prises_e$0= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_prises_en_compte_in"), - cst_date_courante_in$17=caml_string_of_jsbytes("date_courante_in"), - cst_demandeur_in$4=caml_string_of_jsbytes("demandeur_in"), - cst_m_nage_in$4=caml_string_of_jsbytes("m\xc3\xa9nage_in"), - cst_ressources_m_nage_prises_e= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_prises_en_compte_in"), - cst_date_courante_in$16=caml_string_of_jsbytes("date_courante_in"), - cst_demandeur_in$3=caml_string_of_jsbytes("demandeur_in"), - cst_m_nage_in$3=caml_string_of_jsbytes("m\xc3\xa9nage_in"), - cst_montant_dette_in=caml_string_of_jsbytes("montant_dette_in"), - cst_d_pense_logement_in= - caml_string_of_jsbytes("d\xc3\xa9pense_logement_in"), - cst_montant_charges_in=caml_string_of_jsbytes("montant_charges_in"), - cst_montant_apl_in=caml_string_of_jsbytes("montant_apl_in"), - cst_aide_vers_e_in=caml_string_of_jsbytes("aide_vers\xc3\xa9e_in"), - cst_mode_occupation_in$2=caml_string_of_jsbytes("mode_occupation_in"), - cst_date_naissance_assur_in= - caml_string_of_jsbytes("date_naissance_assur\xc3\xa9_in"), - cst_type_aide_in$2=caml_string_of_jsbytes("type_aide_in"), - cst_date_courante_in$15=caml_string_of_jsbytes("date_courante_in"), - cst_zone_in$6=caml_string_of_jsbytes("zone_in"), - cst_nombre_personnes_charge_in$8= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_situation_familiale_in$1= - caml_string_of_jsbytes("situation_familiale_in"), - cst_ressources_m_nage_sans_arr$0= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_sans_arrondi_in"), - cst_mode_occupation_in$1=caml_string_of_jsbytes("mode_occupation_in"), - cst_cat_gorie_quivalence_loyer$0= - caml_string_of_jsbytes - ("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16_in"), - cst_date_courante_in$14=caml_string_of_jsbytes("date_courante_in"), - cst_zone_in$5=caml_string_of_jsbytes("zone_in"), - cst_situation_familiale_calcul$6= - caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), - cst_nombre_personnes_charge_in$7= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_ressources_m_nage_arrondie$6= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), - cst_redevance_in$0=caml_string_of_jsbytes("redevance_in"), - cst_date_conventionnement_in$0= - caml_string_of_jsbytes("date_conventionnement_in"), - cst_type_logement_foyer_in$0= - caml_string_of_jsbytes("type_logement_foyer_in"), - cst_copropri_t_in$0= - caml_string_of_jsbytes("copropri\xc3\xa9t\xc3\xa9_in"), - cst_charges_mensuelles_pr_t_in= - caml_string_of_jsbytes("charges_mensuelles_pr\xc3\xaat_in"), - cst_date_entr_e_logement_in$0= - caml_string_of_jsbytes("date_entr\xc3\xa9e_logement_in"), - cst_local_habit_premi_re_fois_$1= - caml_string_of_jsbytes - ("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire_in"), - cst_type_travaux_logement_in$0= - caml_string_of_jsbytes("type_travaux_logement_in"), - cst_date_signature_pr_t_in$0= - caml_string_of_jsbytes("date_signature_pr\xc3\xaat_in"), - cst_situation_r822_11_13_17_in$0= - caml_string_of_jsbytes("situation_r822_11_13_17_in"), - cst_mensualit_principale_in$0= - caml_string_of_jsbytes("mensualit\xc3\xa9_principale_in"), - cst_date_courante_in$13=caml_string_of_jsbytes("date_courante_in"), - cst_zone_in$4=caml_string_of_jsbytes("zone_in"), - cst_situation_familiale_calcul$5= - caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), - cst_nombre_personnes_charge_in$6= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_ressources_m_nage_arrondie$5= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_base_in"), - cst_changement_logement_d842_4$0= - caml_string_of_jsbytes("changement_logement_d842_4_in"), - cst_logement_meubl_d842_2_in$0= - caml_string_of_jsbytes("logement_meubl\xc3\xa9_d842_2_in"), - cst_r_duction_loyer_solidarit_$1= - caml_string_of_jsbytes("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_in"), - cst_colocation_in$0=caml_string_of_jsbytes("colocation_in"), - cst_type_aide_in$1=caml_string_of_jsbytes("type_aide_in"), - cst_g_es_ou_handicap_adultes_h$1= - caml_string_of_jsbytes - ("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers_in"), - cst_logement_est_chambre_in$0= - caml_string_of_jsbytes("logement_est_chambre_in"), - cst_zone_in$3=caml_string_of_jsbytes("zone_in"), - cst_situation_familiale_calcul$4= - caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), - cst_nombre_personnes_charge_in$5= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_date_courante_in$12=caml_string_of_jsbytes("date_courante_in"), - cst_b_n_ficiaire_aide_adulte_o$1= - caml_string_of_jsbytes - ("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s_in"), - cst_ressources_m_nage_arrondie$4= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), - cst_loyer_principal_in=caml_string_of_jsbytes("loyer_principal_in"), - cst_date_courante_in$11=caml_string_of_jsbytes("date_courante_in"), - cst_zone_in$2=caml_string_of_jsbytes("zone_in"), - cst_nombre_personnes_charge_in$4= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_situation_familiale_in$0= - caml_string_of_jsbytes("situation_familiale_in"), - cst_ressources_m_nage_sans_arr= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_sans_arrondi_in"), - cst_type_aide_in$0=caml_string_of_jsbytes("type_aide_in"), - cst_mode_occupation_in$0=caml_string_of_jsbytes("mode_occupation_in"), - cst_date_courante_in$10=caml_string_of_jsbytes("date_courante_in"), - cst_anciennet_logement_in= - caml_string_of_jsbytes("anciennet\xc3\xa9_logement_in"), - cst_type_pr_t_in=caml_string_of_jsbytes("type_pr\xc3\xaat_in"), - cst_zone_in$1=caml_string_of_jsbytes("zone_in"), - cst_situation_r822_11_13_17_in= - caml_string_of_jsbytes("situation_r822_11_13_17_in"), - cst_copropri_t_in=caml_string_of_jsbytes("copropri\xc3\xa9t\xc3\xa9_in"), - cst_date_entr_e_logement_in= - caml_string_of_jsbytes("date_entr\xc3\xa9e_logement_in"), - cst_local_habit_premi_re_fois_$0= - caml_string_of_jsbytes - ("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire_in"), - cst_date_signature_pr_t_in= - caml_string_of_jsbytes("date_signature_pr\xc3\xaat_in"), - cst_type_travaux_logement_in= - caml_string_of_jsbytes("type_travaux_logement_in"), - cst_situation_familiale_calcul$3= - caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), - cst_nombre_personnes_charge_in$3= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_ressources_m_nage_arrondie$3= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), - cst_mensualit_principale_in= - caml_string_of_jsbytes("mensualit\xc3\xa9_principale_in"), - cst_situation_familiale_calcul$2= - caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), - cst_nombre_personnes_charge_in$2= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_n_nombre_parts_d832_25_in$0= - caml_string_of_jsbytes("n_nombre_parts_d832_25_in"), - cst_condition_2_du_832_25_in$1= - caml_string_of_jsbytes("condition_2_du_832_25_in"), - cst_redevance_in=caml_string_of_jsbytes("redevance_in"), - cst_date_courante_in$9=caml_string_of_jsbytes("date_courante_in"), - cst_zone_in$0=caml_string_of_jsbytes("zone_in"), - cst_situation_familiale_calcul$1= - caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), - cst_nombre_personnes_charge_in$1= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_ressources_m_nage_arrondie$2= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), - cst_date_conventionnement_in= - caml_string_of_jsbytes("date_conventionnement_in"), - cst_type_logement_foyer_in= - caml_string_of_jsbytes("type_logement_foyer_in"), - cst_situation_familiale_calcul$0= - caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), - cst_nombre_personnes_charge_in$0= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_condition_2_du_832_25_in$0= - caml_string_of_jsbytes("condition_2_du_832_25_in"), - cst_n_nombre_parts_d832_25_in= - caml_string_of_jsbytes("n_nombre_parts_d832_25_in"), - cst_condition_2_du_832_25_in= - caml_string_of_jsbytes("condition_2_du_832_25_in"), - cst_ressources_m_nage_arrondie$1= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), - cst_logement_meubl_d842_2_in= - caml_string_of_jsbytes("logement_meubl\xc3\xa9_d842_2_in"), - cst_r_duction_loyer_solidarit_$0= - caml_string_of_jsbytes("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_in"), - cst_colocation_in=caml_string_of_jsbytes("colocation_in"), - cst_type_aide_in=caml_string_of_jsbytes("type_aide_in"), - cst_g_es_ou_handicap_adultes_h$0= - caml_string_of_jsbytes - ("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers_in"), - cst_logement_est_chambre_in= - caml_string_of_jsbytes("logement_est_chambre_in"), - cst_zone_in=caml_string_of_jsbytes("zone_in"), - cst_situation_familiale_calcul= - caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), - cst_nombre_personnes_charge_in= - caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), - cst_date_courante_in$8=caml_string_of_jsbytes("date_courante_in"), - cst_b_n_ficiaire_aide_adulte_o$0= - caml_string_of_jsbytes - ("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s_in"), - cst_ressources_m_nage_arrondie$0= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), - cst_loyer_principal_base_in= - caml_string_of_jsbytes("loyer_principal_base_in"), - cst_date_courante_in$7=caml_string_of_jsbytes("date_courante_in"), - cst_ressources_m_nage_arrondie= - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_base_in"), - cst_paiement_logement_distinct= - caml_string_of_jsbytes("paiement_logement_distinct_professionnel_in"), - cst_date_demande_ou_reexamen_d= - caml_string_of_jsbytes("date_demande_ou_reexamen_droit_in"), - cst_demandeur_poursuit_des_tud= - caml_string_of_jsbytes("demandeur_poursuit_des_\xc3\xa9tudes_in"), - cst_condition_ge_bourse_enseig= - caml_string_of_jsbytes - ("condition_\xc3\xa2ge_bourse_enseignement_sup\xc3\xa9rieur_in"), - cst_mode_occupation_in=caml_string_of_jsbytes("mode_occupation_in"), - cst_situation_familiale_in= - caml_string_of_jsbytes("situation_familiale_in"), - cst_personnes_charge_in= - caml_string_of_jsbytes("personnes_\xc3\xa0_charge_in"), - cst_conjoint_exerce_activit_r_= - caml_string_of_jsbytes - ("conjoint_exerce_activit\xc3\xa9_r\xc3\xa9mun\xc3\xa9r\xc3\xa9e_in"), - cst_demandeur_exerce_activit_r= - caml_string_of_jsbytes - ("demandeur_exerce_activit\xc3\xa9_r\xc3\xa9mun\xc3\xa9r\xc3\xa9e_in"), - cst_personnes_vivant_habituell= - caml_string_of_jsbytes("personnes_vivant_habituellement_foyer_in"), - cst_ressources_conjoint_in= - caml_string_of_jsbytes("ressources_conjoint_in"), - cst_ressources_demandeur_in= - caml_string_of_jsbytes("ressources_demandeur_in"), - cst_d_penses_justifi_es_r_elle= - caml_string_of_jsbytes - ("d\xc3\xa9penses_justifi\xc3\xa9es_r\xc3\xa9ellement_engag\xc3\xa9es_in"), - cst_date_courante_in$6=caml_string_of_jsbytes("date_courante_in"), - cst_demandeur_in$2=caml_string_of_jsbytes("demandeur_in"), - cst_m_nage_in$2=caml_string_of_jsbytes("m\xc3\xa9nage_in"), - cst_date_emm_nagement_in= - caml_string_of_jsbytes("date_emm\xc3\xa9nagement_in"), - cst_informations_in=caml_string_of_jsbytes("informations_in"), - cst_b_n_ficie_aide_personnalis= - caml_string_of_jsbytes - ("b\xc3\xa9n\xc3\xa9ficie_aide_personnalis\xc3\xa9e_logement_in"), - cst_demandeur_in$1=caml_string_of_jsbytes("demandeur_in"), - cst_m_nage_in$1=caml_string_of_jsbytes("m\xc3\xa9nage_in"), - cst_date_courante_in$5=caml_string_of_jsbytes("date_courante_in"), - cst_date_courante_in$4=caml_string_of_jsbytes("date_courante_in"), - cst_demandeur_in$0=caml_string_of_jsbytes("demandeur_in"), - cst_m_nage_in$0=caml_string_of_jsbytes("m\xc3\xa9nage_in"), - cst_condition_logement_surface= - caml_string_of_jsbytes("condition_logement_surface_in"), - cst_condition_logement_r_siden= - caml_string_of_jsbytes - ("condition_logement_r\xc3\xa9sidence_principale_in"), - cst_date_courante_in$3=caml_string_of_jsbytes("date_courante_in"), - cst_demandeur_in=caml_string_of_jsbytes("demandeur_in"), - cst_m_nage_in=caml_string_of_jsbytes("m\xc3\xa9nage_in"), - cst_enfant_na_tre_apr_s_quatri= - caml_string_of_jsbytes - ("enfant_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_quatri\xc3\xa8me_mois_grossesse"), - cst_condition_rattach_foyer_fi= - caml_string_of_jsbytes - ("condition_rattach\xc3\xa9_foyer_fiscal_parent_ifi"), - cst_situation_familiale=caml_string_of_jsbytes("situation_familiale"), - cst_nombre_autres_occupants_lo= - caml_string_of_jsbytes("nombre_autres_occupants_logement"), - cst_personnes_charge=caml_string_of_jsbytes("personnes_\xc3\xa0_charge"), - cst_logement=caml_string_of_jsbytes("logement"), - cst_prestations_re_ues= - caml_string_of_jsbytes("prestations_re\xc3\xa7ues"), - cst_zone=caml_string_of_jsbytes("zone"), - cst_surface_m_carr_s=caml_string_of_jsbytes("surface_m_carr\xc3\xa9s"), - cst_logement_decent_l89_462= - caml_string_of_jsbytes("logement_decent_l89_462"), - cst_usufruit=caml_string_of_jsbytes("usufruit"), - cst_lou_ou_sous_lou_des_tiers= - caml_string_of_jsbytes - ("lou\xc3\xa9_ou_sous_lou\xc3\xa9_\xc3\xa0_des_tiers"), - cst_propri_taire=caml_string_of_jsbytes("propri\xc3\xa9taire"), - cst_mode_occupation=caml_string_of_jsbytes("mode_occupation"), - cst_est_ehpad_ou_maison_autono= - caml_string_of_jsbytes("est_ehpad_ou_maison_autonomie_l313_12_asf"), - cst_r_sidence_principale= - caml_string_of_jsbytes("r\xc3\xa9sidence_principale"), - cst_Locataire=caml_string_of_jsbytes("Locataire"), - cst_R_sidentLogementFoyer= - caml_string_of_jsbytes("R\xc3\xa9sidentLogementFoyer"), - cst_AccessionPropri_t_LocalUsa= - caml_string_of_jsbytes - ("AccessionPropri\xc3\xa9t\xc3\xa9LocalUsageExclusifHabitation"), - cst_SousLocataire=caml_string_of_jsbytes("SousLocataire"), - cst_LocationAccession=caml_string_of_jsbytes("LocationAccession"), - cst_Location=caml_string_of_jsbytes("Location"), - cst_AccessionPropri_t= - caml_string_of_jsbytes("AccessionPropri\xc3\xa9t\xc3\xa9"), - cst_LogementFoyer=caml_string_of_jsbytes("LogementFoyer"), - cst_condition_2_r823_4=caml_string_of_jsbytes("condition_2_r823_4"), - cst_coefficents_enfants_garde_$2= - caml_string_of_jsbytes - ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), - cst_nombre_personnes_charge_pr$1= - caml_string_of_jsbytes - ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), - cst_ligibilit$3=caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"), - cst_date_courante$0=caml_string_of_jsbytes("date_courante"), - cst_changement_logement_d842_4= - caml_string_of_jsbytes("changement_logement_d842_4"), - cst_logement_meubl_d842_2= - caml_string_of_jsbytes("logement_meubl\xc3\xa9_d842_2"), - cst_g_es_ou_handicap_adultes_h= - caml_string_of_jsbytes - ("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"), - cst_colocation=caml_string_of_jsbytes("colocation"), - cst_logement_est_chambre=caml_string_of_jsbytes("logement_est_chambre"), - cst_b_n_ficiaire_aide_adulte_o= - caml_string_of_jsbytes - ("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"), - cst_loyer_principal=caml_string_of_jsbytes("loyer_principal"), - cst_bailleur=caml_string_of_jsbytes("bailleur"), - cst_personne_h_berg_e_centre_s= - caml_string_of_jsbytes - ("personne_h\xc3\xa9berg\xc3\xa9e_centre_soin_l_L162_22_3_s\xc3\xa9curit\xc3\xa9_sociale"), - cst_patrimoine=caml_string_of_jsbytes("patrimoine"), - cst_nationalit=caml_string_of_jsbytes("nationalit\xc3\xa9"), - cst_date_naissance$0=caml_string_of_jsbytes("date_naissance"), - cst_Enfant_Charge=caml_string_of_jsbytes("Enfant\xc3\x80Charge"), - cst_AutrePersonne_Charge= - caml_string_of_jsbytes("AutrePersonne\xc3\x80Charge"), - cst_r_gime_outre_mer_l751_1$0= - caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1"), - cst_ge_l512_3_2$0=caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2"), - cst_conditions_hors_ge$0= - caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"), - cst_droit_ouvert$0=caml_string_of_jsbytes("droit_ouvert"), - cst_date_naissance_troisi_me_e= - caml_string_of_jsbytes - ("date_naissance_troisi\xc3\xa8me_enfant_ou_dernier_si_plus"), - cst_nombre_enfants_na_tre_apr_= - caml_string_of_jsbytes - ("nombre_enfants_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_troisi\xc3\xa8me_mois_grossesse"), - cst_pr_t=caml_string_of_jsbytes("pr\xc3\xaat"), - cst_anciennet_logement= - caml_string_of_jsbytes("anciennet\xc3\xa9_logement"), - cst_situation_r822_11_13_17= - caml_string_of_jsbytes("situation_r822_11_13_17"), - cst_copropri_t=caml_string_of_jsbytes("copropri\xc3\xa9t\xc3\xa9"), - cst_local_habit_premi_re_fois_= - caml_string_of_jsbytes - ("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire"), - cst_type_travaux_logement_r842= - caml_string_of_jsbytes("type_travaux_logement_r842_5"), - cst_type_travaux_logement_d832= - caml_string_of_jsbytes("type_travaux_logement_d832_15"), - cst_date_entr_e_logement= - caml_string_of_jsbytes("date_entr\xc3\xa9e_logement"), - cst_charges_mensuelles_pr_t= - caml_string_of_jsbytes("charges_mensuelles_pr\xc3\xaat"), - cst_mensualit_principale= - caml_string_of_jsbytes("mensualit\xc3\xa9_principale"), - cst_logement_situ_commune_d_s_= - caml_string_of_jsbytes - ("logement_situ\xc3\xa9_commune_d\xc3\xa9s\xc3\xa9quilibre_l831_2"), - cst_Changement=caml_string_of_jsbytes("Changement"), - cst_PasDeChangement=caml_string_of_jsbytes("PasDeChangement"), - cst_Fran_aise=caml_string_of_jsbytes("Fran\xc3\xa7aise"), - cst_trang_re=caml_string_of_jsbytes("\xc3\x89trang\xc3\xa8re"), - cst_Non$1=caml_string_of_jsbytes("Non"), - cst_Oui$0=caml_string_of_jsbytes("Oui"), - cst_BailleurSocial=caml_string_of_jsbytes("BailleurSocial"), - cst_BailleurPriv_AvecConventio= - caml_string_of_jsbytes("BailleurPriv\xc3\xa9AvecConventionnementSocial"), - cst_BailleurPriv=caml_string_of_jsbytes("BailleurPriv\xc3\xa9"), - cst_situation_garde_altern_e= - caml_string_of_jsbytes("situation_garde_altern\xc3\xa9e"), - cst_obligation_scolaire$1=caml_string_of_jsbytes("obligation_scolaire"), - cst_r_muneration_mensuelle$1= - caml_string_of_jsbytes("r\xc3\xa9muneration_mensuelle"), - cst_date_de_naissance$1=caml_string_of_jsbytes("date_de_naissance"), - cst_a_d_j_ouvert_droit_aux_all$1= - caml_string_of_jsbytes - ("a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"), - cst_b_n_ficie_titre_personnel_$1= - caml_string_of_jsbytes - ("b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"), - cst_identifiant$1=caml_string_of_jsbytes("identifiant"), - cst_b_n_ficie_titre_personnel_$0= - caml_string_of_jsbytes - ("b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"), - cst_a_d_j_ouvert_droit_aux_all$0= - caml_string_of_jsbytes - ("a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"), - cst_prise_en_charge$0=caml_string_of_jsbytes("prise_en_charge"), - cst_date_de_naissance$0=caml_string_of_jsbytes("date_de_naissance"), - cst_r_muneration_mensuelle$0= - caml_string_of_jsbytes("r\xc3\xa9muneration_mensuelle"), - cst_obligation_scolaire$0=caml_string_of_jsbytes("obligation_scolaire"), - cst_identifiant$0=caml_string_of_jsbytes("identifiant"), - cst_cat_gorie_quivalence_loyer= - caml_string_of_jsbytes - ("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16"), - cst_redevance=caml_string_of_jsbytes("redevance"), - cst_construit_application_loi_= - caml_string_of_jsbytes("construit_application_loi_1957_12_III"), - cst_date_conventionnement=caml_string_of_jsbytes("date_conventionnement"), - cst_conventionn_livre_III_titr$1= - caml_string_of_jsbytes("conventionn\xc3\xa9_livre_III_titre_V_chap_III"), - cst_remplit_conditions_r832_21= - caml_string_of_jsbytes("remplit_conditions_r832_21"), - cst_type=caml_string_of_jsbytes("type"), - cst_coefficents_enfants_garde_$1= - caml_string_of_jsbytes - ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), - cst_nombre_personnes_charge_pr$0= - caml_string_of_jsbytes - ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), - cst_ligibilit$2=caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"), - cst_MoinsDeTroisEnfants=caml_string_of_jsbytes("MoinsDeTroisEnfants"), - cst_PlusDeTroisEnfants=caml_string_of_jsbytes("PlusDeTroisEnfants"), - cst_titulaire_allocation_perso= - caml_string_of_jsbytes - ("titulaire_allocation_personne_\xc3\xa2g\xc3\xa9e"), - cst_b_n_ficiaire_l161_19_l351_= - caml_string_of_jsbytes - ("b\xc3\xa9n\xc3\xa9ficiaire_l161_19_l351_8_l643_3_s\xc3\xa9cu"), - cst_incapacit_80_pourcent_ou_r= - caml_string_of_jsbytes - ("incapacit\xc3\xa9_80_pourcent_ou_restriction_emploi"), - cst_parent=caml_string_of_jsbytes("parent\xc3\xa9"), - cst_ascendant_descendant_colla= - caml_string_of_jsbytes - ("ascendant_descendant_collat\xc3\xa9ral_deuxi\xc3\xa8me_troisi\xc3\xa8me_degr\xc3\xa9"), - cst_ressources$0=caml_string_of_jsbytes("ressources"), - cst_date_naissance=caml_string_of_jsbytes("date_naissance"), - cst_taux$0=caml_string_of_jsbytes("taux"), - cst_bas$0=caml_string_of_jsbytes("bas"), - cst_haut$0=caml_string_of_jsbytes("haut"), - cst_taux=caml_string_of_jsbytes("taux"), - cst_bas=caml_string_of_jsbytes("bas"), - cst_haut=caml_string_of_jsbytes("haut"), - cst_Neuf=caml_string_of_jsbytes("Neuf"), - cst_Ancien=caml_string_of_jsbytes("Ancien"), - cst_titulaire_pr_t=caml_string_of_jsbytes("titulaire_pr\xc3\xaat"), - cst_date_signature=caml_string_of_jsbytes("date_signature"), - cst_type_pr_t=caml_string_of_jsbytes("type_pr\xc3\xaat"), - cst_brut_horaire$0=caml_string_of_jsbytes("brut_horaire"), - cst_montant$2=caml_string_of_jsbytes("montant"), - cst_aide_finale=caml_string_of_jsbytes("aide_finale"), - cst_ligibilit$1=caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"), - cst_coefficents_enfants_garde_$0= - caml_string_of_jsbytes - ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), - cst_traitement_aide_finale$8= - caml_string_of_jsbytes("traitement_aide_finale"), - cst_aide_finale_formule$8=caml_string_of_jsbytes("aide_finale_formule"), - cst_ligibilit$0=caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"), - cst_montant_impay=caml_string_of_jsbytes("montant_impay\xc3\xa9"), - cst_ge_ouverture_droit= - caml_string_of_jsbytes("\xc3\xa2ge_ouverture_droit"), - cst_traitement_aide_finale$7= - caml_string_of_jsbytes("traitement_aide_finale"), - cst_aide_finale_formule$7=caml_string_of_jsbytes("aide_finale_formule"), - cst_traitement_aide_finale$6= - caml_string_of_jsbytes("traitement_aide_finale"), - cst_aide_finale_formule$6=caml_string_of_jsbytes("aide_finale_formule"), - cst_loyer_minimal=caml_string_of_jsbytes("loyer_minimal"), - cst_montant_forfaitaire_charge$0= - caml_string_of_jsbytes("montant_forfaitaire_charges"), - cst_quivalence_loyer=caml_string_of_jsbytes("\xc3\xa9quivalence_loyer"), - cst_coefficient_prise_en_charg$1= - caml_string_of_jsbytes("coefficient_prise_en_charge"), - cst_traitement_aide_finale$5= - caml_string_of_jsbytes("traitement_aide_finale"), - cst_aide_finale_formule$5=caml_string_of_jsbytes("aide_finale_formule"), - cst_traitement_aide_finale$4= - caml_string_of_jsbytes("traitement_aide_finale"), - cst_aide_finale_formule$4=caml_string_of_jsbytes("aide_finale_formule"), - cst_ancienne_allocation_logeme= - caml_string_of_jsbytes("ancienne_allocation_logement"), - cst_ancien_loyer_principal= - caml_string_of_jsbytes("ancien_loyer_principal"), - cst_traitement_aide_finale$3= - caml_string_of_jsbytes("traitement_aide_finale"), - cst_aide_finale_formule$3=caml_string_of_jsbytes("aide_finale_formule"), - cst_traitement_aide_finale$2= - caml_string_of_jsbytes("traitement_aide_finale"), - cst_aide_finale_formule$2=caml_string_of_jsbytes("aide_finale_formule"), - cst_traitement_aide_finale$1= - caml_string_of_jsbytes("traitement_aide_finale"), - cst_aide_finale_formule$1=caml_string_of_jsbytes("aide_finale_formule"), - cst_coefficient_prise_en_charg$0= - caml_string_of_jsbytes("coefficient_prise_en_charge_d832_10"), - cst_mensualit_minimale= - caml_string_of_jsbytes("mensualit\xc3\xa9_minimale"), - cst_mensualit_ligible= - caml_string_of_jsbytes("mensualit\xc3\xa9_\xc3\xa9ligible"), - cst_n_nombre_parts_d832_11= - caml_string_of_jsbytes("n_nombre_parts_d832_11"), - cst_traitement_aide_finale$0= - caml_string_of_jsbytes("traitement_aide_finale"), - cst_aide_finale_formule$0=caml_string_of_jsbytes("aide_finale_formule"), - cst_coefficient_prise_en_charg= - caml_string_of_jsbytes("coefficient_prise_en_charge_d832_25"), - cst_quivalence_loyer_minimale= - caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_minimale"), - cst_plafond_quivalence_loyer_l= - caml_string_of_jsbytes - ("plafond_\xc3\xa9quivalence_loyer_\xc3\xa9ligible"), - cst_quivalence_loyer_ligible= - caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_\xc3\xa9ligible"), - cst_n_nombre_parts_d832_25$0= - caml_string_of_jsbytes("n_nombre_parts_d832_25"), - cst_coefficient_r_d832_25=caml_string_of_jsbytes("coefficient_r_d832_25"), - cst_coefficient_multiplicateur= - caml_string_of_jsbytes("coefficient_multiplicateur_d832_25"), - cst_n_nombre_parts_d832_25= - caml_string_of_jsbytes("n_nombre_parts_d832_25"), - cst_montant$1=caml_string_of_jsbytes("montant"), - cst_traitement_aide_finale= - caml_string_of_jsbytes("traitement_aide_finale"), - cst_aide_finale_formule=caml_string_of_jsbytes("aide_finale_formule"), - cst_participation_personnelle= - caml_string_of_jsbytes("participation_personnelle"), - cst_taux_composition_familiale= - caml_string_of_jsbytes("taux_composition_familiale"), - cst_participation_minimale= - caml_string_of_jsbytes("participation_minimale"), - cst_plafond_loyer_d823_16_2= - caml_string_of_jsbytes("plafond_loyer_d823_16_2"), - cst_montant_forfaitaire_charge= - caml_string_of_jsbytes("montant_forfaitaire_charges_d823_16"), - cst_montant$0=caml_string_of_jsbytes("montant"), - cst_ressources_prises_en_compt= - caml_string_of_jsbytes("ressources_prises_en_compte"), - cst_montant_prime_d_m_nagement= - caml_string_of_jsbytes("montant_prime_d\xc3\xa9m\xc3\xa9nagement"), - cst_coefficents_enfants_garde_= - caml_string_of_jsbytes - ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), - cst_nombre_personnes_charge_pr= - caml_string_of_jsbytes - ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), - cst_ligibilit=caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"), - cst_date_courante=caml_string_of_jsbytes("date_courante"), - cst_ressources=caml_string_of_jsbytes("ressources"), - cst_dur_e_r_sidence_durant_p_r= - caml_string_of_jsbytes - ("dur\xc3\xa9e_r\xc3\xa9sidence_durant_p\xc3\xa9riode_r_822_3_1_sup\xc3\xa9rieure_\xc3\xa0_6_mois"), - cst_satisfait_conditions_l512_= - caml_string_of_jsbytes - ("satisfait_conditions_l512_2_code_s\xc3\xa9curit\xc3\xa9_sociale"), - cst_ne_produisant_pas_revenu_p= - caml_string_of_jsbytes - ("ne_produisant_pas_revenu_p\xc3\xa9riode_r822_3_3_r822_4"), - cst_produisant_revenu_p_riode_= - caml_string_of_jsbytes - ("produisant_revenu_p\xc3\xa9riode_r822_3_3_r822_4"), - cst_conforme_article_l442_1= - caml_string_of_jsbytes("conforme_article_l442_1"), - cst_date_naissance_personne_so= - caml_string_of_jsbytes("date_naissance_personne_sous_location"), - cst_conventionn_livre_III_titr$0= - caml_string_of_jsbytes - ("conventionn\xc3\xa9_livre_III_titre_II_chap_I_sec_3"), - cst_r_duction_loyer_solidarit_= - caml_string_of_jsbytes - ("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_per\xc3\xa7ue"), - cst_conventionn_livre_III_titr= - caml_string_of_jsbytes("conventionn\xc3\xa9_livre_III_titre_V_chap_III"), - cst_PrestationAccueilJeuneEnfa$1= - caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"), - cst_AllocationsFamiliales$2= - caml_string_of_jsbytes("AllocationsFamiliales"), - cst_Compl_mentFamilial$1= - caml_string_of_jsbytes("Compl\xc3\xa9mentFamilial"), - cst_AllocationLogement$1=caml_string_of_jsbytes("AllocationLogement"), - cst_Allocation_ducationEnfantH$0= - caml_string_of_jsbytes - ("Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9"), - cst_AllocationSoutienFamilial$2= - caml_string_of_jsbytes("AllocationSoutienFamilial"), - cst_AllocationRentr_eScolaire$0= - caml_string_of_jsbytes("AllocationRentr\xc3\xa9eScolaire"), - cst_AllocationJournali_rePrese$0= - caml_string_of_jsbytes("AllocationJournali\xc3\xa8rePresenceParentale"), - cst_Avant$1=caml_string_of_jsbytes("Avant"), - cst_Pendant$1=caml_string_of_jsbytes("Pendant"), - cst_Apr_s$0=caml_string_of_jsbytes("Apr\xc3\xa8s"), - cst_GardeAltern_ePartageAlloca$0= - caml_string_of_jsbytes("GardeAltern\xc3\xa9ePartageAllocations"), - cst_GardeAltern_eAllocataireUn$0= - caml_string_of_jsbytes("GardeAltern\xc3\xa9eAllocataireUnique"), - cst_EffectiveEtPermanente$2= - caml_string_of_jsbytes("EffectiveEtPermanente"), - cst_ServicesSociauxAllocationV$3= - caml_string_of_jsbytes - ("ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille"), - cst_ServicesSociauxAllocationV$4= - caml_string_of_jsbytes - ("ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux"), - cst_Guadeloupe$1=caml_string_of_jsbytes("Guadeloupe"), - cst_Guyane$1=caml_string_of_jsbytes("Guyane"), - cst_Martinique$1=caml_string_of_jsbytes("Martinique"), - cst_LaR_union$0=caml_string_of_jsbytes("LaR\xc3\xa9union"), - cst_SaintBarth_lemy$0=caml_string_of_jsbytes("SaintBarth\xc3\xa9lemy"), - cst_SaintMartin$1=caml_string_of_jsbytes("SaintMartin"), - cst_M_tropole$0=caml_string_of_jsbytes("M\xc3\xa9tropole"), - cst_SaintPierreEtMiquelon$1= - caml_string_of_jsbytes("SaintPierreEtMiquelon"), - cst_Mayotte$1=caml_string_of_jsbytes("Mayotte"), - cst_PersonneSeule=caml_string_of_jsbytes("PersonneSeule"), - cst_Couple=caml_string_of_jsbytes("Couple"), - cst_tudiantLog_EnChambreCROUS= - caml_string_of_jsbytes("\xc3\x89tudiantLog\xc3\xa9EnChambreCROUS"), - cst_tudiantLog_EnChambreCROUSR= - caml_string_of_jsbytes - ("\xc3\x89tudiantLog\xc3\xa9EnChambreCROUSR\xc3\xa9habilit\xc3\xa9e"), - cst_Personnes_g_esSelon3DeD842= - caml_string_of_jsbytes("Personnes\xc3\x82g\xc3\xa9esSelon3DeD842_16"), - cst_AutresPersonnes=caml_string_of_jsbytes("AutresPersonnes"), - cst_LogementPersonnes_g_esOuHa= - caml_string_of_jsbytes - ("LogementPersonnes\xc3\x82g\xc3\xa9esOuHandicap\xc3\xa9es"), - cst_R_sidenceSociale=caml_string_of_jsbytes("R\xc3\xa9sidenceSociale"), - cst_FoyerJeunesTrvailleursOuMi= - caml_string_of_jsbytes - ("FoyerJeunesTrvailleursOuMigrantsConventionn\xc3\xa9L353_2Avant1995"), - cst_Autre$1=caml_string_of_jsbytes("Autre"), - cst_EffectiveEtPermanente$1= - caml_string_of_jsbytes("EffectiveEtPermanente"), - cst_R_sidenceAltern_eAllocatai= - caml_string_of_jsbytes - ("R\xc3\xa9sidenceAltern\xc3\xa9eAllocataireUnique"), - cst_R_sidenceAltern_eAllocatio= - caml_string_of_jsbytes - ("R\xc3\xa9sidenceAltern\xc3\xa9eAllocationsPartag\xc3\xa9e"), - cst_C_libataire=caml_string_of_jsbytes("C\xc3\xa9libataire"), - cst_Mari_s=caml_string_of_jsbytes("Mari\xc3\xa9s"), - cst_Pacs_s=caml_string_of_jsbytes("Pacs\xc3\xa9s"), - cst_Concubins=caml_string_of_jsbytes("Concubins"), - cst_C_libataireS_par_DeFait= - caml_string_of_jsbytes("C\xc3\xa9libataireS\xc3\xa9par\xc3\xa9DeFait"), - cst_ConcubinageDontS_par_DeFai= - caml_string_of_jsbytes("ConcubinageDontS\xc3\xa9par\xc3\xa9DeFait"), - cst_AidePersonnalis_eLogement= - caml_string_of_jsbytes("AidePersonnalis\xc3\xa9eLogement"), - cst_AllocationLogementFamilial$0= - caml_string_of_jsbytes("AllocationLogementFamiliale"), - cst_AllocationLogementSociale$0= - caml_string_of_jsbytes("AllocationLogementSociale"), - cst_Pas_ligible=caml_string_of_jsbytes("Pas\xc3\x89ligible"), - cst_AllocationLogementFamilial= - caml_string_of_jsbytes("AllocationLogementFamiliale"), - cst_AllocationLogementSociale= - caml_string_of_jsbytes("AllocationLogementSociale"), - cst_Impay_Loyer=caml_string_of_jsbytes("Impay\xc3\xa9Loyer"), - cst_Impay_Pr_t=caml_string_of_jsbytes("Impay\xc3\xa9Pr\xc3\xaat"), - cst_TotalAnnuel_ch_ances= - caml_string_of_jsbytes("TotalAnnuel\xc3\x89ch\xc3\xa9ances"), - cst_Mensualit=caml_string_of_jsbytes("Mensualit\xc3\xa9"), - cst_Loyer=caml_string_of_jsbytes("Loyer"), - cst_Bailleur=caml_string_of_jsbytes("Bailleur"), - cst_B_n_ficiaire=caml_string_of_jsbytes("B\xc3\xa9n\xc3\xa9ficiaire"), - cst_tablissementHabilit= - caml_string_of_jsbytes("\xc3\x89tablissementHabilit\xc3\xa9"), - cst_OuiAvecLoyerOuCharges=caml_string_of_jsbytes("OuiAvecLoyerOuCharges"), - cst_Non$0=caml_string_of_jsbytes("Non"), - cst_Zone1=caml_string_of_jsbytes("Zone1"), - cst_Zone2=caml_string_of_jsbytes("Zone2"), - cst_Zone3=caml_string_of_jsbytes("Zone3"), - cst_DateDeNaissance=caml_string_of_jsbytes("DateDeNaissance"), - cst_AvantPremierJourMoisCivilT= - caml_string_of_jsbytes - ("AvantPremierJourMoisCivilTroisi\xc3\xa8meMoisDeGrossesse"), - cst_Apr_sPremierJourMoisCivilT= - caml_string_of_jsbytes - ("Apr\xc3\xa8sPremierJourMoisCivilTroisi\xc3\xa8meMoisDeGrossesse"), - cst_Ascendant=caml_string_of_jsbytes("Ascendant"), - cst_Descendant=caml_string_of_jsbytes("Descendant"), - cst_Collat_ralDeuxi_meTroisi_m= - caml_string_of_jsbytes - ("Collat\xc3\xa9ralDeuxi\xc3\xa8meTroisi\xc3\xa8meDegr\xc3\xa9"), - cst_PasDeGardeAltern_e= - caml_string_of_jsbytes("PasDeGardeAltern\xc3\xa9e"), - cst_GardeAltern_eCoefficientPr= - caml_string_of_jsbytes("GardeAltern\xc3\xa9eCoefficientPriseEnCharge"), - cst_DemandeurOuConjointOuParen= - caml_string_of_jsbytes - ("DemandeurOuConjointOuParentOuViaPartsSoci\xc3\xa9t\xc3\xa9s"), - cst_Autre$0=caml_string_of_jsbytes("Autre"), - cst_AllocationsFamiliales$1= - caml_string_of_jsbytes("AllocationsFamiliales"), - cst_Compl_mentFamilial$0= - caml_string_of_jsbytes("Compl\xc3\xa9mentFamilial"), - cst_AllocationJeuneEnfant=caml_string_of_jsbytes("AllocationJeuneEnfant"), - cst_AllocationSoutienFamilial$1= - caml_string_of_jsbytes("AllocationSoutienFamilial"), - cst_AllocationSoutienEnfantHan= - caml_string_of_jsbytes("AllocationSoutienEnfantHandicap\xc3\xa9"), - cst_AllocationAdulteHandicap= - caml_string_of_jsbytes("AllocationAdulteHandicap\xc3\xa9"), - cst_Revenu$0=caml_string_of_jsbytes("Revenu"), - cst_Infini$0=caml_string_of_jsbytes("Infini"), - cst_Revenu=caml_string_of_jsbytes("Revenu"), - cst_Infini=caml_string_of_jsbytes("Infini"), - cst_Oui=caml_string_of_jsbytes("Oui"), - cst_Non=caml_string_of_jsbytes("Non"), - cst_ObjectifD_cenceLogement= - caml_string_of_jsbytes("ObjectifD\xc3\xa9cenceLogement"), - cst_Pr_vuDansListeR321_15= - caml_string_of_jsbytes("Pr\xc3\xa9vuDansListeR321_15"), - cst_AgrandirOuRendreHabitableD= - caml_string_of_jsbytes("AgrandirOuRendreHabitableD331_63"), - cst_PasDeTravaux$0=caml_string_of_jsbytes("PasDeTravaux"), - cst_TravauxPourAcquisitionD832= - caml_string_of_jsbytes("TravauxPourAcquisitionD832_15_1"), - cst_TravauxSurLogementD_j_Acqu= - caml_string_of_jsbytes - ("TravauxSurLogementD\xc3\xa9j\xc3\xa0AcquisD832_15_2"), - cst_PasDeTravaux=caml_string_of_jsbytes("PasDeTravaux"), - cst_Demandeur=caml_string_of_jsbytes("Demandeur"), - cst_VendeurQuandDemandeurACont= - caml_string_of_jsbytes("VendeurQuandDemandeurAContratLocationAccession"), - cst_D331_32=caml_string_of_jsbytes("D331_32"), - cst_D331_63_64=caml_string_of_jsbytes("D331_63_64"), - cst_D331_59_8=caml_string_of_jsbytes("D331_59_8"), - cst_D331_76_1=caml_string_of_jsbytes("D331_76_1"), - cst_Autre=caml_string_of_jsbytes("Autre"), - cst_The_function_n_nombre_part= - caml_string_of_jsbytes - ("The function 'n_nombre_parts_d832_25_in' translation isn't yet supported..."), - cst_The_function_condition_2_d= - caml_string_of_jsbytes - ("The function 'condition_2_du_832_25_in' translation isn't yet supported..."), - cst_The_function_condition_log= - caml_string_of_jsbytes - ("The function 'condition_logement_surface_in' translation isn't yet supported..."), - cst_The_function_condition_log$0= - caml_string_of_jsbytes - ("The function 'condition_logement_residence_principale_in' translation isn't yet supported..."), - cst_AccessionProprieteLocalUsa= - caml_string_of_jsbytes("AccessionProprieteLocalUsageExclusifHabitation"), - cst_Locataire$0=caml_string_of_jsbytes("Locataire"), - cst_LocationAccession$0=caml_string_of_jsbytes("LocationAccession"), - cst_ResidentLogementFoyer=caml_string_of_jsbytes("ResidentLogementFoyer"), - cst_SousLocataire$0=caml_string_of_jsbytes("SousLocataire"), - cst_AccessionPropriete=caml_string_of_jsbytes("AccessionPropriete"), - cst_Location$0=caml_string_of_jsbytes("Location"), - cst_LogementFoyer$0=caml_string_of_jsbytes("LogementFoyer"), - cst_The_function_condition_2_r= - caml_string_of_jsbytes - ("The function 'condition_2_r823_4' translation isn't yet supported..."), - cst_AutrePersonneACharge=caml_string_of_jsbytes("AutrePersonneACharge"), - cst_EnfantACharge=caml_string_of_jsbytes("EnfantACharge"), - cst_The_function_conditions_ho$0= - caml_string_of_jsbytes - ("The function 'conditions_hors_age' translation isn't yet supported..."), - cst_The_function_droit_ouvert_$0= - caml_string_of_jsbytes - ("The function 'droit_ouvert' translation isn't yet supported..."), - cst_Changement$0=caml_string_of_jsbytes("Changement"), - cst_PasDeChangement$0=caml_string_of_jsbytes("PasDeChangement"), - cst_Etrangere=caml_string_of_jsbytes("Etrangere"), - cst_Francaise=caml_string_of_jsbytes("Francaise"), - cst_Non$4=caml_string_of_jsbytes("Non"), - cst_Oui$2=caml_string_of_jsbytes("Oui"), - cst_BailleurPrive=caml_string_of_jsbytes("BailleurPrive"), - cst_BailleurPriveAvecConventio= - caml_string_of_jsbytes("BailleurPriveAvecConventionnementSocial"), - cst_BailleurSocial$0=caml_string_of_jsbytes("BailleurSocial"), - cst_MoinsDeTroisEnfants$0=caml_string_of_jsbytes("MoinsDeTroisEnfants"), - cst_PlusDeTroisEnfants$0=caml_string_of_jsbytes("PlusDeTroisEnfants"), - cst_Ancien$0=caml_string_of_jsbytes("Ancien"), - cst_Neuf$0=caml_string_of_jsbytes("Neuf"), - cst_The_function_traitement_ai$8= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale' translation isn't yet supported..."), - cst_The_function_traitement_ai$7= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale' translation isn't yet supported..."), - cst_The_function_traitement_ai$6= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale' translation isn't yet supported..."), - cst_The_function_traitement_ai$5= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale' translation isn't yet supported..."), - cst_The_function_traitement_ai$4= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale' translation isn't yet supported..."), - cst_The_function_traitement_ai$3= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale' translation isn't yet supported..."), - cst_The_function_traitement_ai$2= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale' translation isn't yet supported..."), - cst_The_function_traitement_ai$1= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale' translation isn't yet supported..."), - cst_The_function_traitement_ai$0= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale' translation isn't yet supported..."), - cst_The_function_traitement_ai= - caml_string_of_jsbytes - ("The function 'traitement_aide_finale' translation isn't yet supported..."), - cst_The_function_montant_trans= - caml_string_of_jsbytes - ("The function 'montant' translation isn't yet supported..."), - cst_AllocationEducationEnfantH$0= - caml_string_of_jsbytes("AllocationEducationEnfantHandicape"), - cst_AllocationJournalierePrese$0= - caml_string_of_jsbytes("AllocationJournalierePresenceParentale"), - cst_AllocationLogement$2=caml_string_of_jsbytes("AllocationLogement"), - cst_AllocationRentreeScolaire$0= - caml_string_of_jsbytes("AllocationRentreeScolaire"), - cst_AllocationSoutienFamilial$4= - caml_string_of_jsbytes("AllocationSoutienFamilial"), - cst_AllocationsFamiliales$4= - caml_string_of_jsbytes("AllocationsFamiliales"), - cst_ComplementFamilial$1=caml_string_of_jsbytes("ComplementFamilial"), - cst_PrestationAccueilJeuneEnfa$2= - caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"), - cst_Apres$0=caml_string_of_jsbytes("Apres"), - cst_Avant$2=caml_string_of_jsbytes("Avant"), - cst_Pendant$2=caml_string_of_jsbytes("Pendant"), - cst_EffectiveEtPermanente$4= - caml_string_of_jsbytes("EffectiveEtPermanente"), - cst_GardeAlterneeAllocataireUn$0= - caml_string_of_jsbytes("GardeAlterneeAllocataireUnique"), - cst_GardeAlterneePartageAlloca$0= - caml_string_of_jsbytes("GardeAlterneePartageAllocations"), - cst_ServicesSociauxAllocationV$5= - caml_string_of_jsbytes("ServicesSociauxAllocationVerseeALaFamille"), - cst_ServicesSociauxAllocationV$6= - caml_string_of_jsbytes - ("ServicesSociauxAllocationVerseeAuxServicesSociaux"), - cst_Guadeloupe$2=caml_string_of_jsbytes("Guadeloupe"), - cst_Guyane$2=caml_string_of_jsbytes("Guyane"), - cst_LaReunion$0=caml_string_of_jsbytes("LaReunion"), - cst_Martinique$2=caml_string_of_jsbytes("Martinique"), - cst_Mayotte$2=caml_string_of_jsbytes("Mayotte"), - cst_Metropole$0=caml_string_of_jsbytes("Metropole"), - cst_SaintBarthelemy$0=caml_string_of_jsbytes("SaintBarthelemy"), - cst_SaintMartin$2=caml_string_of_jsbytes("SaintMartin"), - cst_SaintPierreEtMiquelon$2= - caml_string_of_jsbytes("SaintPierreEtMiquelon"), - cst_Couple$0=caml_string_of_jsbytes("Couple"), - cst_PersonneSeule$0=caml_string_of_jsbytes("PersonneSeule"), - cst_AutresPersonnes$0=caml_string_of_jsbytes("AutresPersonnes"), - cst_EtudiantLogeEnChambreCROUS= - caml_string_of_jsbytes("EtudiantLogeEnChambreCROUS"), - cst_EtudiantLogeEnChambreCROUS$0= - caml_string_of_jsbytes("EtudiantLogeEnChambreCROUSRehabilitee"), - cst_PersonnesAgeesSelon3DeD842= - caml_string_of_jsbytes("PersonnesAgeesSelon3DeD842_16"), - cst_Autre$4=caml_string_of_jsbytes("Autre"), - cst_FoyerJeunesTrvailleursOuMi$0= - caml_string_of_jsbytes - ("FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995"), - cst_LogementPersonnesAgeesOuHa= - caml_string_of_jsbytes("LogementPersonnesAgeesOuHandicapees"), - cst_ResidenceSociale=caml_string_of_jsbytes("ResidenceSociale"), - cst_EffectiveEtPermanente$3= - caml_string_of_jsbytes("EffectiveEtPermanente"), - cst_ResidenceAlterneeAllocatai= - caml_string_of_jsbytes("ResidenceAlterneeAllocataireUnique"), - cst_ResidenceAlterneeAllocatio= - caml_string_of_jsbytes("ResidenceAlterneeAllocationsPartagee"), - cst_Celibataire=caml_string_of_jsbytes("Celibataire"), - cst_CelibataireSepareDeFait= - caml_string_of_jsbytes("CelibataireSepareDeFait"), - cst_ConcubinageDontSepareDeFai= - caml_string_of_jsbytes("ConcubinageDontSepareDeFait"), - cst_Concubins$0=caml_string_of_jsbytes("Concubins"), - cst_Maries=caml_string_of_jsbytes("Maries"), - cst_Pacses=caml_string_of_jsbytes("Pacses"), - cst_AidePersonnaliseeLogement= - caml_string_of_jsbytes("AidePersonnaliseeLogement"), - cst_AllocationLogementFamilial$2= - caml_string_of_jsbytes("AllocationLogementFamiliale"), - cst_AllocationLogementSociale$2= - caml_string_of_jsbytes("AllocationLogementSociale"), - cst_AllocationLogementFamilial$1= - caml_string_of_jsbytes("AllocationLogementFamiliale"), - cst_AllocationLogementSociale$1= - caml_string_of_jsbytes("AllocationLogementSociale"), - cst_PasEligible=caml_string_of_jsbytes("PasEligible"), - cst_ImpayeLoyer=caml_string_of_jsbytes("ImpayeLoyer"), - cst_ImpayePret=caml_string_of_jsbytes("ImpayePret"), - cst_Loyer$0=caml_string_of_jsbytes("Loyer"), - cst_Mensualite=caml_string_of_jsbytes("Mensualite"), - cst_TotalAnnuelEcheances=caml_string_of_jsbytes("TotalAnnuelEcheances"), - cst_Bailleur$0=caml_string_of_jsbytes("Bailleur"), - cst_Beneficiaire=caml_string_of_jsbytes("Beneficiaire"), - cst_EtablissementHabilite=caml_string_of_jsbytes("EtablissementHabilite"), - cst_Non$3=caml_string_of_jsbytes("Non"), - cst_OuiAvecLoyerOuCharges$0= - caml_string_of_jsbytes("OuiAvecLoyerOuCharges"), - cst_Zone1$0=caml_string_of_jsbytes("Zone1"), - cst_Zone2$0=caml_string_of_jsbytes("Zone2"), - cst_Zone3$0=caml_string_of_jsbytes("Zone3"), - cst_ApresPremierJourMoisCivilT= - caml_string_of_jsbytes - ("ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse"), - cst_AvantPremierJourMoisCivilT$0= - caml_string_of_jsbytes - ("AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse"), - cst_DateDeNaissance$0=caml_string_of_jsbytes("DateDeNaissance"), - cst_Ascendant$0=caml_string_of_jsbytes("Ascendant"), - cst_CollateralDeuxiemeTroisiem= - caml_string_of_jsbytes("CollateralDeuxiemeTroisiemeDegre"), - cst_Descendant$0=caml_string_of_jsbytes("Descendant"), - cst_GardeAlterneeCoefficientPr= - caml_string_of_jsbytes("GardeAlterneeCoefficientPriseEnCharge"), - cst_PasDeGardeAlternee=caml_string_of_jsbytes("PasDeGardeAlternee"), - cst_Autre$3=caml_string_of_jsbytes("Autre"), - cst_DemandeurOuConjointOuParen$0= - caml_string_of_jsbytes("DemandeurOuConjointOuParentOuViaPartsSocietes"), - cst_AllocationAdulteHandicape= - caml_string_of_jsbytes("AllocationAdulteHandicape"), - cst_AllocationJeuneEnfant$0= - caml_string_of_jsbytes("AllocationJeuneEnfant"), - cst_AllocationSoutienEnfantHan$0= - caml_string_of_jsbytes("AllocationSoutienEnfantHandicape"), - cst_AllocationSoutienFamilial$3= - caml_string_of_jsbytes("AllocationSoutienFamilial"), - cst_AllocationsFamiliales$3= - caml_string_of_jsbytes("AllocationsFamiliales"), - cst_ComplementFamilial$0=caml_string_of_jsbytes("ComplementFamilial"), - cst_Infini$2=caml_string_of_jsbytes("Infini"), - cst_Revenu$2=caml_string_of_jsbytes("Revenu"), - cst_Infini$1=caml_string_of_jsbytes("Infini"), - cst_Revenu$1=caml_string_of_jsbytes("Revenu"), - cst_Non$2=caml_string_of_jsbytes("Non"), - cst_Oui$1=caml_string_of_jsbytes("Oui"), - cst_AgrandirOuRendreHabitableD$0= - caml_string_of_jsbytes("AgrandirOuRendreHabitableD331_63"), - cst_ObjectifDecenceLogement= - caml_string_of_jsbytes("ObjectifDecenceLogement"), - cst_PasDeTravaux$2=caml_string_of_jsbytes("PasDeTravaux"), - cst_PrevuDansListeR321_15=caml_string_of_jsbytes("PrevuDansListeR321_15"), - cst_PasDeTravaux$1=caml_string_of_jsbytes("PasDeTravaux"), - cst_TravauxPourAcquisitionD832$0= - caml_string_of_jsbytes("TravauxPourAcquisitionD832_15_1"), - cst_TravauxSurLogementDejaAcqu= - caml_string_of_jsbytes("TravauxSurLogementDejaAcquisD832_15_2"), - cst_Demandeur$0=caml_string_of_jsbytes("Demandeur"), - cst_VendeurQuandDemandeurACont$0= - caml_string_of_jsbytes("VendeurQuandDemandeurAContratLocationAccession"), - cst_Autre$2=caml_string_of_jsbytes("Autre"), - cst_D331_32$0=caml_string_of_jsbytes("D331_32"), - cst_D331_59_8$0=caml_string_of_jsbytes("D331_59_8"), - 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, - Stdlib_Array=global_data.Stdlib__Array, - Runtime_jsoo_Runtime=global_data.Runtime_jsoo__Runtime, - Stdlib=global_data.Stdlib, - Stdlib_Printf=global_data.Stdlib__Printf, - Js_of_ocaml_Js=global_data.Js_of_ocaml__Js, - Law_source=[0]; - caml_register_global(8566,Law_source,"Law_source"); - var - PriseEnCharge=[0], - _j7_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 90, - 14, - 90, - 29, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _j0_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 101, - 18, - 101, - 64, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _j1_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 100, - 5, - 100, - 72, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jZ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 100, - 5, - 100, - 72, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jV_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 87, - 14, - 87, - 53, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jR_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 86, - 14, - 86, - 50, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jN_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 89, - 14, - 89, - 46, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jJ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 88, - 14, - 88, - 54, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jE_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 97, - 18, - 97, - 72, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jF_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 96, - 5, - 96, - 80, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jD_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 96, - 5, - 96, - 80, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jy_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 93, - 18, - 93, - 67, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jz_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 92, - 5, - 92, - 75, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jx_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 92, - 5, - 92, - 75, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jt_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 117, - 14, - 117, - 30, - [0, - caml_string_of_jsbytes("Article L131-1"), - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]]], - _jq_=[0,0], - _jr_=[1,0], - _js_=[2,0], - _ju_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 76, - 11, - 76, - 27, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jp_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 76, - 11, - 76, - 27, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jv_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0,caml_string_of_jsbytes("enfants_\xc3\xa0_charge"),0]], - _jA_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 92, - 5, - 92, - 75, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jB_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("allocations_familiales.personne_charge_effective_permanente_est_parent"), - 0]], - _jw_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 92, - 5, - 92, - 75, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jG_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 96, - 5, - 96, - 80, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jH_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("allocations_familiales.personne_charge_effective_permanente_remplit_titre_I"), - 0]], - _jC_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 96, - 5, - 96, - 80, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jK_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 88, - 14, - 88, - 54, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jL_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("allocations_familiales.ressources_m\xc3\xa9nage"), - 0]], - _jI_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 88, - 14, - 88, - 54, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jO_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 89, - 14, - 89, - 46, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jP_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0,caml_string_of_jsbytes("allocations_familiales.r\xc3\xa9sidence"),0]], - _jM_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 89, - 14, - 89, - 46, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jS_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 86, - 14, - 86, - 50, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jT_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0,caml_string_of_jsbytes("allocations_familiales.date_courante"),0]], - _jQ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 86, - 14, - 86, - 50, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jW_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 87, - 14, - 87, - 53, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jX_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("allocations_familiales.enfants_\xc3\xa0_charge"), - 0]], - _jU_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 87, - 14, - 87, - 53, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _j2_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 100, - 5, - 100, - 72, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _j3_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("allocations_familiales.avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012"), - 0]], - _jY_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 100, - 5, - 100, - 72, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _j4_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0, - caml_string_of_jsbytes("allocations_familiales"), - [0,caml_string_of_jsbytes("AllocationsFamiliales"),0]]], - _j5_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0, - caml_string_of_jsbytes("allocations_familiales"), - [0,caml_string_of_jsbytes("AllocationsFamiliales"),0]]], - _j8_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 80, - 12, - 80, - 27, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _j6_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 80, - 12, - 80, - 27, - [0, - caml_string_of_jsbytes("Interface du programme"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _j9_= - [0, - caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), - [0,caml_string_of_jsbytes("i_montant_vers\xc3\xa9"),0]], - _jk_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 45, - 14, - 45, - 27, - [0, - caml_string_of_jsbytes("R\xc3\xa8gles diverses"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _jg_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 183, - 14, - 183, - 62, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _jc_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"), - [0,caml_string_of_jsbytes("input"),0]]], - _jd_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"),0]], - _je_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"), - [0,caml_string_of_jsbytes("output"),0]]], - _jf_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"),0]], - _i__= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 189, - 14, - 189, - 61, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _i6_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 39, - 14, - 39, - 38, - [0, - caml_string_of_jsbytes("R\xc3\xa8gles diverses"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _i2_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_avec_garde_altern\xc3\xa9e_majoration"), - [0,caml_string_of_jsbytes("input"),0]]], - _i3_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_avec_garde_altern\xc3\xa9e_majoration"), - 0]], - _i4_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_avec_garde_altern\xc3\xa9e_majoration"), - [0,caml_string_of_jsbytes("output"),0]]], - _i5_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_avec_garde_altern\xc3\xa9e_majoration"), - 0]], - _iY_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 37, - 14, - 37, - 32, - [0, - caml_string_of_jsbytes("R\xc3\xa8gles diverses"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _iU_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 186, - 5, - 186, - 43, - [0, - caml_string_of_jsbytes("Article R521-4"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _iM_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("prise_en_compte"), - [0,caml_string_of_jsbytes("input"),0]]], - _iN_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("prise_en_compte"),0]], - _iO_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("prise_en_compte"), - [0,caml_string_of_jsbytes("output"),0]]], - _iP_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("prise_en_compte"),0]], - _iQ_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("montant_initial_majoration"), - [0,caml_string_of_jsbytes("input"),0]]], - _iR_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_initial_majoration"),0]], - _iS_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("montant_initial_majoration"), - [0,caml_string_of_jsbytes("output"),0]]], - _iT_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_initial_majoration"),0]], - _iV_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 128, - 11, - 128, - 49, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iL_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 128, - 11, - 128, - 49, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iI_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 125, - 14, - 125, - 46, - [0, - caml_string_of_jsbytes("Article R521-3"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _iC_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 268, - 5, - 270, - 41, - [0, - caml_string_of_jsbytes("Article D521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _iD_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 136, - 11, - 136, - 52, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iA_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 278, - 5, - 280, - 40, - [0, - caml_string_of_jsbytes("Article D521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _iB_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 136, - 11, - 136, - 52, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iE_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 136, - 11, - 136, - 52, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iz_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 286, - 14, - 286, - 55, - [0, - caml_string_of_jsbytes("Article D521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _ip_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("input"),0]]], - _iq_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _ir_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("output"),0]]], - _is_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _it_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 379, - 5, - 383, - 55, - [0, - caml_string_of_jsbytes("Article D755-5"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _iu_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 127, - 11, - 127, - 37, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ij_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("input"),0]]], - _ik_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _il_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("output"),0]]], - _im_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _in_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 389, - 5, - 392, - 56, - [0, - caml_string_of_jsbytes("Article D755-5"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _io_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 127, - 11, - 127, - 37, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iv_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 127, - 11, - 127, - 37, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ii_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 22, - 14, - 22, - 40, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _ie_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), - [0,caml_string_of_jsbytes("input"),0]]], - _if_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), - 0]], - _ig_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), - [0,caml_string_of_jsbytes("output"),0]]], - _ih_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), - 0]], - _iw_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 127, - 11, - 127, - 37, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _id_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 127, - 11, - 127, - 37, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _h__= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 356, - 5, - 357, - 69, - [0, - caml_string_of_jsbytes("Article D755-5"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _h$_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 104, - 11, - 104, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _h7_=[8,0], - _h8_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 151, - 24, - 151, - 44, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _h9_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 104, - 11, - 104, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ia_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 104, - 11, - 104, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _h6_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 18, - 14, - 18, - 34, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _h2_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 199, - 14, - 199, - 39, - [0, - caml_string_of_jsbytes("Article D521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _hY_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _hZ_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_forfaitaire"),0]], - _h0_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _h1_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_forfaitaire"),0]], - _hP_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("input"),0]]], - _hQ_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _hR_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("output"),0]]], - _hS_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _hT_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 60, - 5, - 60, - 38, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _hU_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 126, - 11, - 126, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hJ_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("input"),0]]], - _hK_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _hL_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("output"),0]]], - _hM_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _hN_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 101, - 5, - 101, - 38, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _hO_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 126, - 11, - 126, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hD_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("input"),0]]], - _hE_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _hF_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("output"),0]]], - _hG_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _hH_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 138, - 5, - 138, - 38, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _hI_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 126, - 11, - 126, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hx_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("input"),0]]], - _hy_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _hz_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert_majoration"), - [0,caml_string_of_jsbytes("output"),0]]], - _hA_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _hB_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 28, - 5, - 28, - 44, - [0, - caml_string_of_jsbytes("R\xc3\xa8gles diverses"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _hC_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 126, - 11, - 126, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hV_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 126, - 11, - 126, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hw_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 126, - 11, - 126, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ht_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 128, - 14, - 128, - 41, - [0, - caml_string_of_jsbytes("Article R521-3"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _hl_=[8,0], - _hm_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 350, - 5, - 350, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _hn_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hi_=[8,0], - _hj_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 358, - 5, - 358, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _hk_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hf_=[8,0], - _hg_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 366, - 5, - 366, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _hh_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hc_=[8,0], - _hd_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 374, - 5, - 374, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _he_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _g$_=[8,0], - _ha_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 382, - 5, - 382, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _hb_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _g8_=[8,0], - _g9_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 390, - 5, - 390, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _g__= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _g5_=[8,0], - _g6_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 398, - 5, - 398, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _g7_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _g2_=[8,0], - _g3_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 406, - 5, - 406, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _g4_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gZ_=[8,0], - _g0_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 414, - 5, - 414, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _g1_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gW_=[8,0], - _gX_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 422, - 5, - 422, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _gY_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ho_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gU_=[8,0], - _gV_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 177, - 14, - 177, - 50, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _hp_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gR_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 38, - 14, - 38, - 50, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gS_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gP_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 79, - 14, - 79, - 50, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gQ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gN_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 117, - 14, - 117, - 50, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gO_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gT_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gI_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 43, - 14, - 43, - 59, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gJ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gG_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 84, - 14, - 84, - 59, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gH_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gE_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 122, - 14, - 122, - 59, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gF_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gz_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 221, - 5, - 221, - 42, - [0, - caml_string_of_jsbytes("Article D521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gA_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 121, - 11, - 121, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gx_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 235, - 5, - 236, - 45, - [0, - caml_string_of_jsbytes("Article D521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gy_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 121, - 11, - 121, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gv_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 249, - 5, - 249, - 42, - [0, - caml_string_of_jsbytes("Article D521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gw_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 121, - 11, - 121, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gp_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 165, - 5, - 166, - 65, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gq_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 134, - 11, - 134, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gn_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 174, - 5, - 175, - 65, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _go_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 134, - 11, - 134, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gr_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 134, - 11, - 134, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gm_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 181, - 14, - 181, - 34, - [0, - caml_string_of_jsbytes("Article D521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gs_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 134, - 11, - 134, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gl_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 134, - 11, - 134, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gc_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - [0,caml_string_of_jsbytes("input"),0]]], - _gd_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - 0]], - _ge_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - [0,caml_string_of_jsbytes("output"),0]]], - _gf_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - 0]], - _gg_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 315, - 5, - 318, - 21, - [0, - caml_string_of_jsbytes("Article L521-3"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gh_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 125, - 11, - 125, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _f5_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - [0,caml_string_of_jsbytes("input"),0]]], - _f6_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - 0]], - _f7_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - [0,caml_string_of_jsbytes("output"),0]]], - _f8_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - 0]], - _f9_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"), - [0,caml_string_of_jsbytes("input"),0]]], - _f__= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"),0]], - _f$_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"), - [0,caml_string_of_jsbytes("output"),0]]], - _ga_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"),0]], - _gb_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 300, - 5, - 302, - 21, - [0, - caml_string_of_jsbytes("Article L521-3"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _gi_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 125, - 11, - 125, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _f4_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 125, - 11, - 125, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gj_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 125, - 11, - 125, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _f3_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 125, - 11, - 125, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fV_=[8,0], - _fW_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 159, - 6, - 159, - 71, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fX_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 103, - 11, - 103, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fU_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 409, - 5, - 410, - 72, - [0, - caml_string_of_jsbytes("Article L755-12"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _fY_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 103, - 11, - 103, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fZ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 103, - 11, - 103, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fT_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 101, - 5, - 101, - 70, - [0, - caml_string_of_jsbytes("Article L521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _f0_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 103, - 11, - 103, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fS_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 103, - 11, - 103, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fK_=[8,0], - _fL_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 251, - 5, - 252, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fM_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fH_=[8,0], - _fI_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 260, - 5, - 261, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fJ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fE_=[8,0], - _fF_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 269, - 5, - 270, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fG_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fB_=[8,0], - _fC_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 278, - 5, - 279, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fD_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fy_=[8,0], - _fz_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 287, - 5, - 288, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fA_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fv_=[8,0], - _fw_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 296, - 5, - 297, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fx_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fs_=[8,0], - _ft_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 305, - 5, - 306, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fu_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fp_=[8,0], - _fq_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 314, - 5, - 315, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fr_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fm_=[8,0], - _fn_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 323, - 5, - 324, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fo_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fj_=[8,0], - _fk_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 332, - 5, - 333, - 53, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fl_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fg_=[8,0], - _fh_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 341, - 5, - 341, - 49, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fi_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fN_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fe_=[8,0], - _ff_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 167, - 14, - 167, - 49, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _fO_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fc_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 365, - 5, - 366, - 71, - [0, - caml_string_of_jsbytes("Article D755-5"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _fd_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fb_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 362, - 29, - 362, - 64, - [0, - caml_string_of_jsbytes("Article D755-5"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _e9_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 142, - 14, - 142, - 34, - [0, - caml_string_of_jsbytes("Article R521-3"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _e5_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("prise_en_compte"), - [0,caml_string_of_jsbytes("input"),0]]], - _e6_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("prise_en_compte"),0]], - _e7_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("prise_en_compte"), - [0,caml_string_of_jsbytes("output"),0]]], - _e8_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("prise_en_compte"),0]], - _e1_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 160, - 14, - 160, - 34, - [0, - caml_string_of_jsbytes("Article R521-3"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _eU_=[8,0], - _eV_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 431, - 5, - 431, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _eW_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 116, - 11, - 116, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eR_=[8,0], - _eS_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 439, - 5, - 439, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _eT_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 116, - 11, - 116, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eO_=[8,0], - _eP_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 447, - 5, - 447, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _eQ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 116, - 11, - 116, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eL_=[8,0], - _eM_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 455, - 5, - 455, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _eN_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 116, - 11, - 116, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eI_=[8,0], - _eJ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 463, - 5, - 463, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _eK_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 116, - 11, - 116, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eF_=[8,0], - _eG_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 471, - 5, - 471, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _eH_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 116, - 11, - 116, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eC_=[8,0], - _eD_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 479, - 5, - 479, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _eE_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 116, - 11, - 116, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ez_=[8,0], - _eA_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 487, - 5, - 487, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _eB_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 116, - 11, - 116, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ew_=[8,0], - _ex_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 495, - 5, - 495, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _ey_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 116, - 11, - 116, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _et_=[8,0], - _eu_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 503, - 5, - 503, - 67, - [0, - caml_string_of_jsbytes("Annexe"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _ev_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 116, - 11, - 116, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eX_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 116, - 11, - 116, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _es_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 186, - 14, - 186, - 59, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _eo_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 195, - 14, - 195, - 67, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), - [0, - caml_string_of_jsbytes - ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), - 0]]]], - _ei_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 423, - 6, - 424, - 72, - [0, - caml_string_of_jsbytes("Article L755-12"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _ej_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 120, - 11, - 120, - 35, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ed_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0, - caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"), - [0,caml_string_of_jsbytes("input"),0]]], - _ee_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]], - _ef_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0, - caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"), - [0,caml_string_of_jsbytes("output"),0]]], - _eg_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]], - _eh_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 119, - 5, - 126, - 59, - [0, - caml_string_of_jsbytes("Article L521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _ek_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 120, - 11, - 120, - 35, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ec_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 120, - 11, - 120, - 35, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _el_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 120, - 11, - 120, - 35, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eb_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 120, - 11, - 120, - 35, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _d8_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 429, - 5, - 430, - 71, - [0, - caml_string_of_jsbytes("Article L755-12"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _d9_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 132, - 11, - 132, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _d7_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 31, - 9, - 31, - 32, - [0, - caml_string_of_jsbytes("R\xc3\xa8gles diverses"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _d__= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 132, - 11, - 132, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _d6_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 132, - 11, - 132, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _d0_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 23, - 5, - 23, - 67, - [0, - caml_string_of_jsbytes - ("Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), - [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], - _d1_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 149, - 11, - 149, - 27, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dY_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 56, - 5, - 56, - 67, - [0, - caml_string_of_jsbytes - ("Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), - [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], - _dZ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 149, - 11, - 149, - 27, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dW_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 89, - 5, - 89, - 67, - [0, - caml_string_of_jsbytes - ("Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), - [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], - _dX_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 149, - 11, - 149, - 27, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dU_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 116, - 5, - 116, - 67, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations"), - [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]]], - _dV_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 149, - 11, - 149, - 27, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _d2_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 149, - 11, - 149, - 27, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dT_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 304, - 14, - 304, - 30, - [0, - caml_string_of_jsbytes("Article D521-3"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _dN_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 30, - 5, - 30, - 67, - [0, - caml_string_of_jsbytes - ("Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), - [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], - _dO_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 150, - 11, - 150, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dL_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 63, - 5, - 63, - 67, - [0, - caml_string_of_jsbytes - ("Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), - [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], - _dM_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 150, - 11, - 150, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dJ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 96, - 5, - 96, - 67, - [0, - caml_string_of_jsbytes - ("Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), - [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], - _dK_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 150, - 11, - 150, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dH_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/decrets_divers.catala_fr"), - 132, - 5, - 132, - 67, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations"), - [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]]], - _dI_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 150, - 11, - 150, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dP_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 150, - 11, - 150, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dG_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 314, - 14, - 314, - 31, - [0, - caml_string_of_jsbytes("Article D521-3"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _dC_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 34, - 14, - 34, - 36, - [0, - caml_string_of_jsbytes("R\xc3\xa8gles diverses"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _dD_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 148, - 11, - 148, - 33, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dB_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 148, - 11, - 148, - 33, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dy_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 75, - 14, - 75, - 64, - [0, - caml_string_of_jsbytes("Article L512-3"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _du_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert"), - [0,caml_string_of_jsbytes("input"),0]]], - _dv_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert"),0]], - _dw_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert"), - [0,caml_string_of_jsbytes("output"),0]]], - _dx_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert"),0]], - _dp_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 83, - 19, - 83, - 67, - [0, - caml_string_of_jsbytes("Article R521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _dq_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 146, - 11, - 146, - 38, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _do_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 56, - 14, - 56, - 41, - [0, - caml_string_of_jsbytes("Article R521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _dr_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 146, - 11, - 146, - 38, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dn_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 146, - 11, - 146, - 38, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _di_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 33, - 14, - 33, - 40, - [0, - caml_string_of_jsbytes("R\xc3\xa8gles diverses"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _dc_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 157, - 14, - 157, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _c__= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 153, - 14, - 153, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _c9_=[1,0], - _c5_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 155, - 14, - 155, - 50, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cZ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 159, - 14, - 159, - 32, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cT_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 64, - 14, - 64, - 44, - [0, - caml_string_of_jsbytes("Article R521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _cP_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_D.catala_fr"), - 294, - 14, - 294, - 35, - [0, - caml_string_of_jsbytes("Article D521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _cK_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 259, - 5, - 260, - 56, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _cJ_=[1,0], - _cL_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 98, - 11, - 98, - 20, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cE_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 270, - 5, - 271, - 48, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _cD_=[0,0], - _cF_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 98, - 11, - 98, - 20, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cC_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 219, - 5, - 219, - 70, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _cB_=[0,0], - _cG_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 98, - 11, - 98, - 20, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cA_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 209, - 5, - 209, - 69, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _cz_=[0,0], - _cH_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 98, - 11, - 98, - 20, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cy_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 189, - 5, - 189, - 60, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _cx_=[0,0], - _cI_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 98, - 11, - 98, - 20, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cM_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 98, - 11, - 98, - 20, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cw_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 98, - 11, - 98, - 20, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cs_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 215, - 5, - 215, - 70, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _cr_=[1,0], - _ct_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 97, - 11, - 97, - 26, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cp_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 254, - 5, - 255, - 56, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _co_=[2,0], - _cq_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 97, - 11, - 97, - 26, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ck_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 264, - 5, - 265, - 48, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _cj_=[0,0], - _cl_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 97, - 11, - 97, - 26, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ci_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 205, - 5, - 205, - 69, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _ch_=[0,0], - _cm_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 97, - 11, - 97, - 26, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cg_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 185, - 5, - 185, - 60, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _cf_=[0,0], - _cn_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 97, - 11, - 97, - 26, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cu_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 97, - 11, - 97, - 26, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ce_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 97, - 11, - 97, - 26, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cv_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("prise_en_compte"),0]], - _cN_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("versement"),0]], - _cQ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 145, - 11, - 145, - 32, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cO_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 145, - 11, - 145, - 32, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cR_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("nombre_enfants_l521_1"),0]], - _cU_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 147, - 11, - 147, - 41, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cS_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 147, - 11, - 147, - 41, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cV_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("nombre_enfants_alin\xc3\xa9a_2_l521_3"),0]], - _cW_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("version_avril_2008"), - [0,caml_string_of_jsbytes("AllocationFamilialesAvril2008"),0]]], - _cX_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("version_avril_2008"), - [0,caml_string_of_jsbytes("AllocationFamilialesAvril2008"),0]]], - _c0_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 159, - 14, - 159, - 32, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _c1_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("bmaf.date_courante"),0]], - _cY_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 159, - 14, - 159, - 32, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _c2_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("bmaf"), - [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], - _c3_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("bmaf"), - [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], - _c6_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 155, - 14, - 155, - 50, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _c7_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("prestations_familiales.date_courante"),0]], - _c4_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 155, - 14, - 155, - 50, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _c$_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 153, - 14, - 153, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _da_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("prestations_familiales.prestation_courante"), - 0]], - _c8_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 153, - 14, - 153, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dd_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 157, - 14, - 157, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _de_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("prestations_familiales.r\xc3\xa9sidence"),0]], - _db_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 157, - 14, - 157, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _df_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("prestations_familiales"), - [0,caml_string_of_jsbytes("PrestationsFamiliales"),0]]], - _dg_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("prestations_familiales"), - [0,caml_string_of_jsbytes("PrestationsFamiliales"),0]]], - _dj_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 33, - 14, - 33, - 40, - [0, - caml_string_of_jsbytes("R\xc3\xa8gles diverses"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _dk_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("enfant_le_plus_\xc3\xa2g\xc3\xa9.enfants"), - 0]], - _dh_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 33, - 14, - 33, - 40, - [0, - caml_string_of_jsbytes("R\xc3\xa8gles diverses"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _dl_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("enfant_le_plus_\xc3\xa2g\xc3\xa9"), - [0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9"),0]]], - _dm_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("enfant_le_plus_\xc3\xa2g\xc3\xa9"), - [0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9"),0]]], - _ds_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - 0]], - _dz_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 95, - 11, - 95, - 61, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dt_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 95, - 11, - 95, - 61, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dA_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("enfants_\xc3\xa0_charge_droit_ouvert_prestation_familiale"), - 0]], - _dE_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"),0]], - _dQ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 150, - 11, - 150, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dF_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 150, - 11, - 150, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dR_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("plafond_II_d521_3"),0]], - _d3_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 149, - 11, - 149, - 27, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _dS_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 149, - 11, - 149, - 27, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _d4_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("plafond_I_d521_3"),0]], - _d$_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 132, - 11, - 132, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _d5_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 132, - 11, - 132, - 34, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ea_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_compl\xc3\xa9ment"),0]], - _em_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_forfaitaire"),0]], - _ep_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 117, - 11, - 117, - 64, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _en_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 117, - 11, - 117, - 64, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eq_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_initial_base_quatri\xc3\xa8me_enfant_et_plus_mayotte"), - 0]], - _eY_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 116, - 11, - 116, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _er_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 116, - 11, - 116, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _eZ_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_initial_base_troisi\xc3\xa8me_enfant_mayotte"), - 0]], - _e2_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 110, - 11, - 110, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _e0_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 110, - 11, - 110, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _e3_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("nombre_total_enfants"),0]], - _e__= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 109, - 11, - 109, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _e4_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 109, - 11, - 109, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _e$_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("nombre_moyen_enfants"),0]], - _fP_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fa_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 105, - 11, - 105, - 46, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fQ_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_initial_base_premier_enfant"),0]], - _f1_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 103, - 11, - 103, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _fR_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 103, - 11, - 103, - 28, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _f2_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_base"),0]], - _gk_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], - _gt_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"),0]], - _gB_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 121, - 11, - 121, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gu_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 121, - 11, - 121, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gC_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("montant_vers\xc3\xa9_forfaitaire_par_enfant"), - 0]], - _gK_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gD_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 107, - 11, - 107, - 56, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gL_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_initial_base_troisi\xc3\xa8me_enfant_et_plus"), - 0]], - _hq_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _gM_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 106, - 11, - 106, - 47, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hr_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("montant_initial_base_deuxi\xc3\xa8me_enfant"), - 0]], - _hu_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 108, - 11, - 108, - 38, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hs_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 108, - 11, - 108, - 38, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hv_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("rapport_enfants_total_moyen"),0]], - _hW_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), - 0]], - _h3_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 122, - 11, - 122, - 36, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _hX_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 122, - 11, - 122, - 36, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _h4_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_vers\xc3\xa9_forfaitaire"),0]], - _ib_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 104, - 11, - 104, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _h5_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 104, - 11, - 104, - 31, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ic_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_initial_base"),0]], - _ix_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_initial_majoration"),0]], - _iF_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 136, - 11, - 136, - 52, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iy_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 136, - 11, - 136, - 52, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iG_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_forfaitaire"), - 0]], - _iJ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 111, - 11, - 111, - 43, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iH_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 111, - 11, - 111, - 43, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iK_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_avec_garde_altern\xc3\xa9e_base"),0]], - _iW_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_avec_garde_altern\xc3\xa9e_majoration"), - 0]], - _iZ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 112, - 11, - 112, - 29, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _iX_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 112, - 11, - 112, - 29, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _i0_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_vers\xc3\xa9_base"),0]], - _i7_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 129, - 11, - 129, - 35, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _i1_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 129, - 11, - 129, - 35, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _i8_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_vers\xc3\xa9_majoration"),0]], - _i$_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 133, - 11, - 133, - 58, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _i9_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 133, - 11, - 133, - 58, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ja_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_base_compl\xc3\xa9ment_pour_base_et_majoration"), - 0]], - _jh_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 135, - 11, - 135, - 59, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _jb_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 135, - 11, - 135, - 59, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _ji_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0, - caml_string_of_jsbytes - ("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_base_et_majoration"), - 0]], - _jl_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 100, - 12, - 100, - 25, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _jj_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 100, - 12, - 100, - 25, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _jm_= - [0, - caml_string_of_jsbytes("AllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant_vers\xc3\xa9"),0]], - _jn_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 231, - 5, - 235, - 6, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _jo_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 231, - 5, - 235, - 6, - [0, - caml_string_of_jsbytes("Article L521-2"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _b$_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/autres_codes.catala_fr"), - 24, - 5, - 24, - 63, - [0, - caml_string_of_jsbytes("Article L821-3"), - [0, - caml_string_of_jsbytes - ("Sous-section 1 : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Section 2 : R\xc3\xa8gles de non-cumul"), - [0, - caml_string_of_jsbytes - ("Chapitre Ier : Principes g\xc3\xa9n\xc3\xa9raux"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _ca_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 57, - 12, - 57, - 24, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _b7_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 60, - 5, - 62, - 62, - [0, - caml_string_of_jsbytes("Article L512-3"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _b8_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 57, - 12, - 57, - 24, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _b6_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 49, - 5, - 50, - 50, - [0, - caml_string_of_jsbytes("Article L512-3"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _b9_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 57, - 12, - 57, - 24, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _b__= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 57, - 12, - 57, - 24, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cb_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 57, - 12, - 57, - 24, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _b5_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 57, - 12, - 57, - 24, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _cc_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 57, - 12, - 57, - 24, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _b4_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 57, - 12, - 57, - 24, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _b0_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 68, - 5, - 71, - 56, - [0, - caml_string_of_jsbytes("Article L512-3"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _b1_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 58, - 12, - 58, - 31, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bZ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 58, - 12, - 58, - 31, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _b2_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 58, - 12, - 58, - 31, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bY_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 58, - 12, - 58, - 31, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bU_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 215, - 18, - 215, - 41, - [0, - caml_string_of_jsbytes("Article R755-0-2"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _bV_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 59, - 11, - 59, - 27, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bT_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 31, - 14, - 31, - 30, - [0, - caml_string_of_jsbytes("Article R512-2"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application."), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _bI_=[5,0], - _bJ_=[4,0], - _bK_=[3,0], - _bL_=[2,0], - _bM_=[1,0], - _bN_=[0,0], - _bO_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_L.catala_fr"), - 357, - 5, - 362, - 30, - [0, - caml_string_of_jsbytes("Article L751-1"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _bP_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 61, - 12, - 61, - 35, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bH_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 61, - 12, - 61, - 35, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bB_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 68, - 14, - 68, - 28, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bx_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 69, - 14, - 69, - 32, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bt_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 21, - 14, - 21, - 26, - [0, - caml_string_of_jsbytes("Article R512-2"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application."), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _bu_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 60, - 12, - 60, - 24, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bs_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 60, - 12, - 60, - 24, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bv_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2"),0]], - _by_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 69, - 14, - 69, - 32, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bz_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("smic.date_courante"),0]], - _bw_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 69, - 14, - 69, - 32, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bC_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 68, - 14, - 68, - 28, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bD_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("smic.r\xc3\xa9sidence"),0]], - _bA_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 68, - 14, - 68, - 28, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bE_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]], - _bF_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]], - _bQ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 61, - 12, - 61, - 35, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bG_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 61, - 12, - 61, - 35, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bR_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1"),0]], - _bW_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 59, - 11, - 59, - 27, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bS_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 59, - 11, - 59, - 27, - [0, - caml_string_of_jsbytes("Prestations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _bX_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("plafond_l512_3_2"),0]], - _b3_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]], - _cd_= - [0, - caml_string_of_jsbytes("PrestationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert"),0]], - _bo_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 28, - 5, - 29, - 33, - [0, - caml_string_of_jsbytes - ("Instruction minist\xc3\xa9rielle N\xc2\xb0DSS/SD2B/2019/65 du 25 mars 2019 relative \xc3\xa0 la revalorisation au 1er avril 2019 des prestations familiales servies en m\xc3\xa9tropole"), - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]]], - _bp_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 12, - 6, - 19, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _bm_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 48, - 5, - 49, - 33, - [0, - caml_string_of_jsbytes - ("Instruction interminist\xc3\xa9rielle no DSS/SD2B/2020/33 du 18 f\xc3\xa9vrier 2020 relative \xc3\xa0 la revalorisation au 1er avril 2020 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]]], - _bn_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 12, - 6, - 19, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _bk_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 64, - 5, - 65, - 33, - [0, - caml_string_of_jsbytes - ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2021/65 du 19 mars 2021 relative \xc3\xa0 la revalorisation au 1er avril 2021 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]]], - _bl_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 12, - 6, - 19, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _bi_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 82, - 5, - 83, - 33, - [0, - caml_string_of_jsbytes - ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2022/82 du 28 mars 2022 relative \xc3\xa0 la revalorisation au 1er avril 2022 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]]], - _bj_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 12, - 6, - 19, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _bq_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 12, - 6, - 19, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _bh_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 12, - 6, - 19, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _br_= - [0, - caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant"),0]], - _a7_=[7,0], - _a8_=[5,0], - _a9_=[4,0], - _a__=[3,0], - _a$_=[2,0], - _ba_=[1,0], - _bb_=[0,0], - _bc_=[6,0], - _bd_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 29, - 5, - 38, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _be_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _a4_=[8,0], - _a5_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 47, - 5, - 49, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _a6_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _aU_=[7,0], - _aV_=[5,0], - _aW_=[4,0], - _aX_=[3,0], - _aY_=[2,0], - _aZ_=[1,0], - _a0_=[0,0], - _a1_=[6,0], - _a2_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 68, - 5, - 77, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _a3_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _aR_=[8,0], - _aS_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 86, - 5, - 88, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _aT_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _aH_=[7,0], - _aI_=[5,0], - _aJ_=[4,0], - _aK_=[3,0], - _aL_=[2,0], - _aM_=[1,0], - _aN_=[0,0], - _aO_=[6,0], - _aP_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 107, - 5, - 116, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _aQ_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _aE_=[8,0], - _aF_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 125, - 5, - 127, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _aG_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _au_=[7,0], - _av_=[5,0], - _aw_=[4,0], - _ax_=[3,0], - _ay_=[2,0], - _az_=[1,0], - _aA_=[0,0], - _aB_=[6,0], - _aC_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 146, - 5, - 155, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _aD_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _ar_=[8,0], - _as_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 165, - 5, - 167, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _at_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _ah_=[7,0], - _ai_=[5,0], - _aj_=[4,0], - _ak_=[3,0], - _al_=[2,0], - _am_=[1,0], - _an_=[0,0], - _ao_=[6,0], - _ap_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 186, - 5, - 195, - 6, - [0, - caml_string_of_jsbytes("Article 2"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _aq_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _ae_=[8,0], - _af_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 204, - 5, - 206, - 6, - [0, - caml_string_of_jsbytes("Article 2"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _ag_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _W_=[7,0], - _X_=[5,0], - _Y_=[4,0], - _Z_=[3,0], - ___=[2,0], - _$_=[1,0], - _aa_=[0,0], - _ab_=[6,0], - _ac_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 225, - 5, - 234, - 6, - [0, - caml_string_of_jsbytes("Article 2"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 29 juillet 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _ad_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _T_=[8,0], - _U_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 243, - 5, - 245, - 6, - [0, - caml_string_of_jsbytes("Article 2"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 29 juillet 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _V_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _J_=[7,0], - _K_=[5,0], - _L_=[4,0], - _M_=[3,0], - _N_=[2,0], - _O_=[1,0], - _P_=[0,0], - _Q_=[6,0], - _R_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 265, - 5, - 274, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2022-1608 du 22 d\xc3\xa9cembre 2022 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _S_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _G_=[8,0], - _H_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 283, - 5, - 285, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2022-1608 du 22 d\xc3\xa9cembre 2022 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _I_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _bf_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _F_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _bg_= - [0, - caml_string_of_jsbytes("Smic"), - [0,caml_string_of_jsbytes("brut_horaire"),0]], - _C_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/epilogue.catala_fr"), - 12, - 14, - 12, - 25, - [0, - caml_string_of_jsbytes("R\xc3\xa8gles diverses"), - [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], - _A_=[2,0], - _B_=[1,0], - _D_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 80, - 12, - 80, - 23, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _z_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 80, - 12, - 80, - 23, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _E_= - [0, - caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9"), - [0,caml_string_of_jsbytes("le_plus_\xc3\xa2g\xc3\xa9"),0]], - _w_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/securite_sociale_R.catala_fr"), - 78, - 14, - 78, - 41, - [0, - caml_string_of_jsbytes("Article R521-1"), - [0, - caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), - [0, - caml_string_of_jsbytes - ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _x_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 76, - 12, - 76, - 39, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _v_= - [0, - caml_string_of_jsbytes - ("examples/allocations_familiales/prologue.catala_fr"), - 76, - 12, - 76, - 39, - [0, - caml_string_of_jsbytes("Allocations familiales"), - [0, - caml_string_of_jsbytes("Champs d'applications"), - [0,caml_string_of_jsbytes("Prologue"),0]]]], - _y_= - [0, - caml_string_of_jsbytes("AllocationFamilialesAvril2008"), - [0, - caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), - 0]], - _u_=[0,caml_string_of_jsbytes("InterfaceAllocationsFamiliales_in"),0], - _t_=[0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales_in"),0], - _s_=[0,caml_string_of_jsbytes("Smic_in"),0], - _r_=[0,caml_string_of_jsbytes("AllocationsFamiliales_in"),0], - _q_=[0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9_in"),0], - _p_=[0,caml_string_of_jsbytes("PrestationsFamiliales_in"),0], - _o_=[0,caml_string_of_jsbytes("PrestationsFamiliales"),0], - _n_=[0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9"),0], - _m_=[0,caml_string_of_jsbytes("Enfant"),0], - _l_=[0,caml_string_of_jsbytes("EnfantEntr\xc3\xa9e"),0], - _k_=[0,caml_string_of_jsbytes("InterfaceAllocationsFamiliales"),0], - _j_=[0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0], - _i_=[0,caml_string_of_jsbytes("Smic"),0], - _h_=[0,caml_string_of_jsbytes("AllocationsFamiliales"),0], - _g_=[0,caml_string_of_jsbytes("AllocationFamilialesAvril2008"),0], - _f_=[0,caml_string_of_jsbytes("Collectivit\xc3\xa9"),0], - _e_= - [0, - caml_string_of_jsbytes("\xc3\x89l\xc3\xa9mentPrestationsFamiliales"), - 0], - _d_=[0,caml_string_of_jsbytes("VersementAllocations"),0], - _c_=[0,caml_string_of_jsbytes("PriseEnCompte"),0], - _b_=[0,caml_string_of_jsbytes("SituationObligationScolaire"),0], - _a_=[0,caml_string_of_jsbytes("PriseEnCharge"),0], - _kz_=[7,0], - _kA_=[5,0], - _kB_=[4,0], - _kC_=[6,0], - _kD_=[8,0], - _kE_=[2,0], - _kF_=[3,0], - _kG_=[1,0], - _kH_=[0,0], - _ky_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'Collectivite.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'Collectivite.t'")], - _kq_=[0,0], - _kr_=[2,0], - _ks_=[1,0], - _kt_=[5,0], - _ku_=[6,0], - _kv_=[3,0], - _kw_=[7,0], - _kx_=[4,0], - _kp_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'ElementPrestationsFamiliales.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'ElementPrestationsFamiliales.t'")], - _kn_=[0,0], - _ko_=[1,0], - _km_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'VersementAllocations.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'VersementAllocations.t'")], - _kj_=[2,0], - _kk_=[1,0], - _kl_=[0,0], - _ki_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'PriseEnCompte.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'PriseEnCompte.t'")], - _kf_=[1,0], - _kg_=[0,0], - _kh_=[2,0], - _ke_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'SituationObligationScolaire.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'SituationObligationScolaire.t'")], - _j$_=[4,0], - _ka_=[3,0], - _kb_=[0,0], - _kc_=[1,0], - _kd_=[2,0], - _j__= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'PriseEnCharge.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'PriseEnCharge.t'")], - _Vy_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/autres_sources.catala_fr"), - 284, - 14, - 284, - 25, - [0, - caml_string_of_jsbytes - ("Conseil d'\xc3\x89tat, 5\xc3\xa8me - 4\xc3\xa8me chambres r\xc3\xa9unies, 21/07/2017, 398563"), - 0]], - _Vu_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _Vv_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _Vw_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _Vx_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _Vq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1148, - 14, - 1148, - 63, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Vm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1176, - 14, - 1176, - 25, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Vg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1144, - 5, - 1144, - 70, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Vc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1141, - 14, - 1141, - 58, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _U__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1139, - 14, - 1139, - 54, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _U6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1137, - 14, - 1137, - 51, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _U0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1135, - 14, - 1135, - 59, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _UW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1133, - 14, - 1133, - 38, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _US_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1131, - 14, - 1131, - 34, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _UO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1129, - 14, - 1129, - 31, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _UK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1150, - 14, - 1150, - 48, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _UL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1118, - 11, - 1118, - 45, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _UJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1118, - 11, - 1118, - 45, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _UM_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes - ("m\xc3\xa9nage_sans_enfants_garde_altern\xc3\xa9e"), - 0]], - _UP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1129, - 14, - 1129, - 31, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _UQ_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0,caml_string_of_jsbytes("calculette.m\xc3\xa9nage"),0]], - _UN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1129, - 14, - 1129, - 31, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _UT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1131, - 14, - 1131, - 34, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _UU_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0,caml_string_of_jsbytes("calculette.demandeur"),0]], - _UR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1131, - 14, - 1131, - 34, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _UX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1133, - 14, - 1133, - 38, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _UY_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0,caml_string_of_jsbytes("calculette.date_courante"),0]], - _UV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1133, - 14, - 1133, - 38, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _U1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1135, - 14, - 1135, - 59, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _U2_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes - ("calculette.ressources_m\xc3\xa9nage_prises_en_compte"), - 0]], - _UZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1135, - 14, - 1135, - 59, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _U3_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes("calculette"), - [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]], - _U4_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes("calculette"), - [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]], - _U7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1137, - 14, - 1137, - 51, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _U8_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes - ("calculette_sans_garde_altern\xc3\xa9e.m\xc3\xa9nage"), - 0]], - _U5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1137, - 14, - 1137, - 51, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _U$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1139, - 14, - 1139, - 54, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Va_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes - ("calculette_sans_garde_altern\xc3\xa9e.demandeur"), - 0]], - _U9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1139, - 14, - 1139, - 54, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Vd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1141, - 14, - 1141, - 58, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Ve_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes - ("calculette_sans_garde_altern\xc3\xa9e.date_courante"), - 0]], - _Vb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1141, - 14, - 1141, - 58, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Vh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1144, - 5, - 1144, - 70, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Vi_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes - ("calculette_sans_garde_altern\xc3\xa9e.ressources_m\xc3\xa9nage_prises_en_compte"), - 0]], - _Vf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1144, - 5, - 1144, - 70, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Vj_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes("calculette_sans_garde_altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]], - _Vk_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes("calculette_sans_garde_altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]], - _Vn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1125, - 12, - 1125, - 23, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Vl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1125, - 12, - 1125, - 23, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Vo_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]], - _Vr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1119, - 11, - 1119, - 60, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Vp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1119, - 11, - 1119, - 60, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Vs_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0, - caml_string_of_jsbytes - ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), - 0]], - _Vz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1126, - 12, - 1126, - 23, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Vt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1126, - 12, - 1126, - 23, - [0, - caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _VA_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - [0,caml_string_of_jsbytes("aide_finale"),0]], - _UG_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1075, - 14, - 1075, - 33, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Uy_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _Uz_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _UA_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _UB_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _UC_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _UD_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _UE_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _UF_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _Uu_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1092, - 14, - 1092, - 36, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Um_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _Un_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _Uo_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _Up_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _Uq_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ur_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _Us_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _Ut_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _Uv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1054, - 12, - 1054, - 34, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Ul_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1054, - 12, - 1054, - 34, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Ui_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1054, - 14, - 1054, - 25, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Ue_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1099, - 14, - 1099, - 63, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _T__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1094, - 14, - 1094, - 62, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _T6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1090, - 14, - 1090, - 53, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _T2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1084, - 5, - 1084, - 65, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _TY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1079, - 14, - 1079, - 68, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _TU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1075, - 14, - 1075, - 66, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _TQ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1063, - 14, - 1063, - 58, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _TP_=[0,0], - _TL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1071, - 14, - 1071, - 64, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _TF_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1065, - 14, - 1065, - 50, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _TC_=[2,0], - _TD_=[1,0], - _TE_=[2,0], - _Ty_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1096, - 14, - 1096, - 54, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Tu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1092, - 14, - 1092, - 45, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Tq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1088, - 14, - 1088, - 66, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Tm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1081, - 14, - 1081, - 60, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Ti_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1077, - 14, - 1077, - 58, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Te_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1073, - 14, - 1073, - 56, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _S__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1067, - 14, - 1067, - 67, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _S6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1063, - 14, - 1063, - 63, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _S2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1059, - 14, - 1059, - 60, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _SW_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1049, - 5, - 1049, - 74, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _SS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1065, - 14, - 1065, - 55, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _SO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1061, - 14, - 1061, - 52, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _SK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1069, - 14, - 1069, - 59, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _SL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1069, - 14, - 1069, - 59, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _SM_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.date_courante"), - 0]], - _SJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1069, - 14, - 1069, - 59, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _SP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1061, - 14, - 1061, - 52, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _SQ_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.m\xc3\xa9nage"), - 0]], - _SN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1061, - 14, - 1061, - 52, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _ST_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1065, - 14, - 1065, - 55, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _SU_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.demandeur"), - 0]], - _SR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1065, - 14, - 1065, - 55, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _SX_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1049, - 5, - 1049, - 74, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _SY_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.b\xc3\xa9n\xc3\xa9ficie_aide_personnalis\xc3\xa9e_logement"), - 0]], - _SV_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1049, - 5, - 1049, - 74, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _SZ_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement"), - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - 0]]], - _S0_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement"), - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - 0]]], - _S3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1059, - 14, - 1059, - 60, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _S4_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.m\xc3\xa9nage"), - 0]], - _S1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1059, - 14, - 1059, - 60, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _S7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1063, - 14, - 1063, - 63, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _S8_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.demandeur"), - 0]], - _S5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1063, - 14, - 1063, - 63, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _S$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1067, - 14, - 1067, - 67, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Ta_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.date_courante"), - 0]], - _S9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1067, - 14, - 1067, - 67, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Tb_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - 0]]], - _Tc_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - 0]]], - _Tf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1073, - 14, - 1073, - 56, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Tg_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes("calcul_allocation_logement.mode_occupation"), - 0]], - _Td_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1073, - 14, - 1073, - 56, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Tj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1077, - 14, - 1077, - 58, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Tk_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_allocation_logement.ressources_m\xc3\xa9nage_sans_arrondi"), - 0]], - _Th_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1077, - 14, - 1077, - 58, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Tn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1081, - 14, - 1081, - 60, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _To_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_allocation_logement.situation_familiale"), - 0]], - _Tl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1081, - 14, - 1081, - 60, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Tr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1088, - 14, - 1088, - 66, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Ts_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_allocation_logement.nombre_personnes_\xc3\xa0_charge"), - 0]], - _Tp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1088, - 14, - 1088, - 66, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Tv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1092, - 14, - 1092, - 45, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Tw_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0,caml_string_of_jsbytes("calcul_allocation_logement.zone"),0]], - _Tt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1092, - 14, - 1092, - 45, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Tz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1096, - 14, - 1096, - 54, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _TA_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes("calcul_allocation_logement.date_courante"), - 0]], - _Tx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1096, - 14, - 1096, - 54, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _TG_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1065, - 14, - 1065, - 50, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _TH_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0,caml_string_of_jsbytes("calcul_allocation_logement.type_aide"),0]], - _TB_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1065, - 14, - 1065, - 50, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _TI_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes("calcul_allocation_logement"), - [0,caml_string_of_jsbytes("CalculAllocationLogement"),0]]], - _TJ_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes("calcul_allocation_logement"), - [0,caml_string_of_jsbytes("CalculAllocationLogement"),0]]], - _TM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1071, - 14, - 1071, - 64, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _TN_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_aide_personnalis\xc3\xa9e_logement.mode_occupation"), - 0]], - _TK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1071, - 14, - 1071, - 64, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _TR_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1063, - 14, - 1063, - 58, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _TS_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_aide_personnalis\xc3\xa9e_logement.type_aide"), - 0]], - _TO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1063, - 14, - 1063, - 58, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _TV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1075, - 14, - 1075, - 66, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _TW_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_aide_personnalis\xc3\xa9e_logement.ressources_m\xc3\xa9nage_sans_arrondi"), - 0]], - _TT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1075, - 14, - 1075, - 66, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _TZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1079, - 14, - 1079, - 68, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _T0_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_aide_personnalis\xc3\xa9e_logement.situation_familiale"), - 0]], - _TX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1079, - 14, - 1079, - 68, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _T3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1084, - 5, - 1084, - 65, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _T4_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_aide_personnalis\xc3\xa9e_logement.nombre_personnes_\xc3\xa0_charge"), - 0]], - _T1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1084, - 5, - 1084, - 65, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _T7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1090, - 14, - 1090, - 53, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _T8_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_aide_personnalis\xc3\xa9e_logement.zone"), - 0]], - _T5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1090, - 14, - 1090, - 53, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _T$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1094, - 14, - 1094, - 62, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Ua_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("calcul_aide_personnalis\xc3\xa9e_logement.date_courante"), - 0]], - _T9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1094, - 14, - 1094, - 62, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Ub_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes("calcul_aide_personnalis\xc3\xa9e_logement"), - [0,caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),0]]], - _Uc_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes("calcul_aide_personnalis\xc3\xa9e_logement"), - [0,caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),0]]], - _Uf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1055, - 12, - 1055, - 61, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Ud_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1055, - 12, - 1055, - 61, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Ug_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0, - caml_string_of_jsbytes - ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), - 0]], - _Uj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1052, - 12, - 1052, - 23, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Uh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1052, - 12, - 1052, - 23, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Uk_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]], - _Uw_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _UH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1053, - 12, - 1053, - 31, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _Ux_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1053, - 12, - 1053, - 31, - [0, - caml_string_of_jsbytes("Calculette globale"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], - _UI_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogement"), - [0,caml_string_of_jsbytes("aide_finale_formule"),0]], - _SG_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1406, - 14, - 1406, - 33, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _SC_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1408, - 14, - 1408, - 36, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _SD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 991, - 12, - 991, - 34, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _SB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 991, - 12, - 991, - 34, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Sy_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1520, - 14, - 1520, - 36, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Sr_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ss_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _St_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _Su_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _Si_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _Sj_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _Sk_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _Sl_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _R__= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _R$_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _Sa_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _Sb_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _R1_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _R2_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _R3_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _R4_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _RS_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _RT_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _RU_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _RV_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _RP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1539, - 16, - 1542, - 39, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _RQ_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes("direct"), - [0,caml_string_of_jsbytes("input"),0]]], - _RR_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("direct"),0]], - _RW_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1524, - 9, - 1545, - 10, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _RX_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes("direct"), - [0,caml_string_of_jsbytes("output"),0]]], - _RY_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("direct"),0]], - _RZ_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("direct"), - [0,caml_string_of_jsbytes("input"),0]]], - _R0_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("direct"),0]], - _R5_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1588, - 9, - 1599, - 10, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _R6_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("direct"), - [0,caml_string_of_jsbytes("output"),0]]], - _R7_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("direct"),0]], - _R8_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("direct"), - [0,caml_string_of_jsbytes("input"),0]]], - _R9_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("direct"),0]], - _Sc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1609, - 10, - 1624, - 11, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Sd_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("direct"), - [0,caml_string_of_jsbytes("output"),0]]], - _Se_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("direct"),0]], - _Sf_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1571, - 16, - 1574, - 39, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Sg_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes("direct"), - [0,caml_string_of_jsbytes("input"),0]]], - _Sh_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("direct"),0]], - _Sm_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1556, - 9, - 1577, - 10, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Sn_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes("direct"), - [0,caml_string_of_jsbytes("output"),0]]], - _So_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("direct"),0]], - _Sp_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("direct"), - [0,caml_string_of_jsbytes("input"),0]]], - _Sq_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("direct"),0]], - _Sv_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1636, - 10, - 1651, - 11, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Sw_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("direct"), - [0,caml_string_of_jsbytes("output"),0]]], - _Sx_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("direct"),0]], - _RL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 88, - 14, - 88, - 44, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _RF_=[0,0], - _RG_=[1,0], - _RH_=[1,0], - _RI_=[1,0], - _RJ_=[0,0], - _RK_=[1,0], - _RB_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4811, - 14, - 4811, - 31, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Rx_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1395, - 14, - 1395, - 34, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Ry_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 985, - 11, - 985, - 31, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Rw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 985, - 11, - 985, - 31, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Rz_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("cat\xc3\xa9gorie_calcul_apl"),0]], - _RC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 978, - 10, - 978, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _RA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 978, - 10, - 978, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _RD_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("ressources_m\xc3\xa9nage_avec_arrondi"),0]], - _RM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 986, - 11, - 986, - 41, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _RE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 986, - 11, - 986, - 41, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _RN_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("situation_familiale_calcul_apl"),0]], - _Sz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 988, - 11, - 988, - 33, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _RO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 988, - 11, - 988, - 33, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _SA_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("sous_calcul_traitement"),0]], - _SE_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _SH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 990, - 12, - 990, - 31, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _SF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 990, - 12, - 990, - 31, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _SI_= - [0, - caml_string_of_jsbytes("CalculAllocationLogement"), - [0,caml_string_of_jsbytes("aide_finale_formule"),0]], - _Rr_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1124, - 5, - 1124, - 73, - [0, - caml_string_of_jsbytes("Article L841-3"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Rq_=[2,0], - _Rs_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 412, - 10, - 412, - 16, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ro_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1137, - 5, - 1140, - 28, - [0, - caml_string_of_jsbytes("Article L841-4"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Rn_=[0,0], - _Rp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 412, - 10, - 412, - 16, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Rt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 412, - 10, - 412, - 16, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Rm_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1033, - 14, - 1033, - 25, - [0, - caml_string_of_jsbytes("Article L841-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Ri_=[0,0], - _Rj_=[0,0], - _Rk_=[1,0], - _Rl_=[2,0], - _Q$_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 1002, - 5, - 1006, - 29, - [0, - caml_string_of_jsbytes("Article L841-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Ra_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 403, - 11, - 403, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Q7_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 979, - 5, - 990, - 13, - [0, - caml_string_of_jsbytes("Article L841-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Q8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 403, - 11, - 403, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Q2_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("condition_2_r823_4"), - [0,caml_string_of_jsbytes("input"),0]]], - _Q3_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], - _Q4_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("condition_2_r823_4"), - [0,caml_string_of_jsbytes("output"),0]]], - _Q5_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], - _Q6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 961, - 5, - 963, - 9, - [0, - caml_string_of_jsbytes("Article L841-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Q9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 403, - 11, - 403, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Q__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 403, - 11, - 403, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Rb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 403, - 11, - 403, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _QV_=[2,0], - _Q0_=[0,0], - _QW_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert"), - [0,caml_string_of_jsbytes("input"),0]]], - _QX_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert"),0]], - _QY_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert"), - [0,caml_string_of_jsbytes("output"),0]]], - _QZ_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert"),0]], - _Q1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 922, - 5, - 947, - 29, - [0, - caml_string_of_jsbytes("Article L841-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Rc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 403, - 11, - 403, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _QO_=[2,0], - _QT_=[0,0], - _QP_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert"), - [0,caml_string_of_jsbytes("input"),0]]], - _QQ_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert"),0]], - _QR_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0, - caml_string_of_jsbytes("droit_ouvert"), - [0,caml_string_of_jsbytes("output"),0]]], - _QS_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert"),0]], - _QU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 890, - 5, - 911, - 8, - [0, - caml_string_of_jsbytes("Article L841-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Rd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 403, - 11, - 403, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _QJ_=[4,0], - _QK_=[3,0], - _QL_=[1,0], - _QM_=[0,0], - _QN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 870, - 5, - 875, - 6, - [0, - caml_string_of_jsbytes("Article L841-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Re_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 403, - 11, - 403, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _QI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 403, - 11, - 403, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _QE_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 840, - 14, - 840, - 25, - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]], - _QC_=[0,0], - _QD_=[2,0], - _Qy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 431, - 14, - 431, - 56, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Qu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 433, - 14, - 433, - 63, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Qo_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4769, - 9, - 4769, - 55, - [0, - caml_string_of_jsbytes("Article R842-14"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Qp_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4769, - 9, - 4769, - 55, - [0, - caml_string_of_jsbytes("Article R842-14"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Qq_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_surface"), - 0]], - _Ql_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4768, - 9, - 4768, - 68, - [0, - caml_string_of_jsbytes("Article R842-14"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Qm_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4768, - 9, - 4768, - 68, - [0, - caml_string_of_jsbytes("Article R842-14"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Qn_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_r\xc3\xa9sidence_principale"), - 0]], - _Qi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 429, - 14, - 429, - 47, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Qe_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 428, - 14, - 428, - 43, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Qa_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 427, - 14, - 427, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _P3_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4364, - 5, - 4369, - 28, - [0, - caml_string_of_jsbytes("Article R842-5"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _P4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 401, - 11, - 401, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _P2_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4347, - 5, - 4352, - 28, - [0, - caml_string_of_jsbytes("Article R842-5"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _P5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 401, - 11, - 401, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _P1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4330, - 5, - 4337, - 28, - [0, - caml_string_of_jsbytes("Article R842-5"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _P6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 401, - 11, - 401, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _P7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 401, - 11, - 401, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _P0_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4300, - 5, - 4302, - 28, - [0, - caml_string_of_jsbytes("Article R842-5"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _P8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 401, - 11, - 401, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _PZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 401, - 11, - 401, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _PT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 425, - 14, - 425, - 46, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _PS_=[6,0], - _PO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 421, - 14, - 421, - 56, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _PN_=[1,0], - _PJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 420, - 14, - 420, - 50, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _PF_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4171, - 14, - 4171, - 28, - [0, - caml_string_of_jsbytes("Article D841-1"), - [0, - caml_string_of_jsbytes("Chapitre 1 : Champ d'application"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _PG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 404, - 11, - 404, - 25, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _PE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 404, - 11, - 404, - 25, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _PH_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0,caml_string_of_jsbytes("dur\xc3\xa9e_l841_1_3"),0]], - _PK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 420, - 14, - 420, - 50, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _PL_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0,caml_string_of_jsbytes("prestations_familiales.date_courante"),0]], - _PI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 420, - 14, - 420, - 50, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _PP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 421, - 14, - 421, - 56, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _PQ_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes("prestations_familiales.prestation_courante"), - 0]], - _PM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 421, - 14, - 421, - 56, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _PU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 425, - 14, - 425, - 46, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _PV_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0,caml_string_of_jsbytes("prestations_familiales.r\xc3\xa9sidence"),0]], - _PR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 425, - 14, - 425, - 46, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _PW_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes("prestations_familiales"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - 0]]], - _PX_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes("prestations_familiales"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - 0]]], - _P9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 401, - 11, - 401, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _PY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 401, - 11, - 401, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _P__= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes("condition_accession_propri\xc3\xa9t\xc3\xa9"), - 0]], - _Qb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 427, - 14, - 427, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Qc_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_commune.m\xc3\xa9nage"), - 0]], - _P$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 427, - 14, - 427, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Qf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 428, - 14, - 428, - 43, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Qg_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune.demandeur"), - 0]], - _Qd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 428, - 14, - 428, - 43, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Qj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 429, - 14, - 429, - 47, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Qk_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_commune.date_courante"), - 0]], - _Qh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 429, - 14, - 429, - 47, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Qr_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - 0]]], - _Qs_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - 0]]], - _Qv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 414, - 12, - 414, - 61, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Qt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 414, - 12, - 414, - 61, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Qw_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes - ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), - 0]], - _Qz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 413, - 12, - 413, - 54, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Qx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 413, - 12, - 413, - 54, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _QA_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes - ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), - 0]], - _QF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 411, - 10, - 411, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _QB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 411, - 10, - 411, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _QG_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_dispositions_communes"), - 0]], - _Rf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 403, - 11, - 403, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _QH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 403, - 11, - 403, - 52, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Rg_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement_familiale"), - 0]], - _Ru_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 412, - 10, - 412, - 16, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Rh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 412, - 10, - 412, - 16, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Rv_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_l841_2"),0]], - _PA_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 591, - 5, - 593, - 36, - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]], - _PB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 370, - 12, - 370, - 23, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Pz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 370, - 12, - 370, - 23, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Pv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 381, - 14, - 381, - 56, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Pr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 383, - 14, - 383, - 63, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ph_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3693, - 5, - 3698, - 30, - [0, - caml_string_of_jsbytes("Article R832-21"), - [0, - caml_string_of_jsbytes - ("Sous-Section 1 : Conditions d'assimilation des logements-foyers aux logements \xc3\xa0 usage locatif"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _Pi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 363, - 11, - 363, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Pd_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), - [0,caml_string_of_jsbytes("input"),0]]], - _Pe_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), - 0]], - _Pf_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), - [0,caml_string_of_jsbytes("output"),0]]], - _Pg_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), - 0]], - _Pc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 701, - 5, - 704, - 30, - [0, - caml_string_of_jsbytes("Article L831-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Pj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 363, - 11, - 363, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Pb_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 684, - 5, - 687, - 30, - [0, - caml_string_of_jsbytes("Article L831-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Pk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 363, - 11, - 363, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Pa_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 641, - 5, - 650, - 30, - [0, - caml_string_of_jsbytes("Article L831-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Pl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 363, - 11, - 363, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _O8_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), - [0,caml_string_of_jsbytes("input"),0]]], - _O9_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), - 0]], - _O__= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), - [0,caml_string_of_jsbytes("output"),0]]], - _O$_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), - 0]], - _O7_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 620, - 5, - 623, - 30, - [0, - caml_string_of_jsbytes("Article L831-1"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Pm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 363, - 11, - 363, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Pn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 363, - 11, - 363, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _O6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 363, - 11, - 363, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _O0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 379, - 14, - 379, - 47, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 378, - 14, - 378, - 43, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 377, - 14, - 377, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 740, - 5, - 753, - 30, - [0, - caml_string_of_jsbytes("Article L831-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _OM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 364, - 11, - 364, - 34, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OK_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 721, - 5, - 726, - 30, - [0, - caml_string_of_jsbytes("Article L831-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _ON_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 364, - 11, - 364, - 34, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OJ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 716, - 31, - 716, - 54, - [0, - caml_string_of_jsbytes("Article L831-2"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _OO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 364, - 11, - 364, - 34, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 364, - 11, - 364, - 34, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 366, - 11, - 366, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 366, - 11, - 366, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 366, - 11, - 366, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ox_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3021, - 5, - 3024, - 41, - [0, - caml_string_of_jsbytes("Article R832-7"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Oy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 365, - 11, - 365, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ow_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2986, - 5, - 2988, - 42, - [0, - caml_string_of_jsbytes("Article R832-5"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Oz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 365, - 11, - 365, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 365, - 11, - 365, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ov_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 365, - 11, - 365, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 365, - 11, - 365, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ou_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 365, - 11, - 365, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OC_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), - 0]], - _OG_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), - 0]], - _OP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 364, - 11, - 364, - 34, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 364, - 11, - 364, - 34, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OQ_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("condition_logement_pr\xc3\xaat"),0]], - _OT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 377, - 14, - 377, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OU_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_commune.m\xc3\xa9nage"), - 0]], - _OR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 377, - 14, - 377, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 378, - 14, - 378, - 43, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _OY_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune.demandeur"), - 0]], - _OV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 378, - 14, - 378, - 43, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _O1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 379, - 14, - 379, - 47, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _O2_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("\xc3\xa9ligibilit\xc3\xa9_commune.date_courante"), - 0]], - _OZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 379, - 14, - 379, - 47, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _O3_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - 0]]], - _O4_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - 0]]], - _Po_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 363, - 11, - 363, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _O5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 363, - 11, - 363, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Pp_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("condition_logement_bailleur"),0]], - _Ps_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 372, - 12, - 372, - 61, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Pq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 372, - 12, - 372, - 61, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Pt_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), - 0]], - _Pw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 371, - 12, - 371, - 54, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Pu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 371, - 12, - 371, - 54, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Px_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0, - caml_string_of_jsbytes - ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), - 0]], - _PC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 370, - 12, - 370, - 23, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Py_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 370, - 12, - 370, - 23, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _PD_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]], - _Or_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2109, - 14, - 2109, - 40, - [0, - caml_string_of_jsbytes("Article D823-22"), - [0, - caml_string_of_jsbytes - ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Om_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 563, - 5, - 566, - 42, - [0, - caml_string_of_jsbytes("Article L823-8"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _On_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 456, - 11, - 456, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ol_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 456, - 11, - 456, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Oh_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4206, - 14, - 4206, - 29, - [0, - caml_string_of_jsbytes("Article 45"), - [0, - caml_string_of_jsbytes - ("Chapitre VIII : Prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Oc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2069, - 6, - 2079, - 75, - [0, - caml_string_of_jsbytes("Article D823-20"), - [0, - caml_string_of_jsbytes - ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Od_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 455, - 11, - 455, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ob_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 455, - 11, - 455, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _N7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 469, - 14, - 469, - 43, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _N3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 468, - 14, - 468, - 39, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _NZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 467, - 14, - 467, - 36, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _NT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 471, - 14, - 471, - 65, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _NO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2060, - 5, - 2065, - 77, - [0, - caml_string_of_jsbytes("Article D823-20"), - [0, - caml_string_of_jsbytes - ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _NP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 454, - 11, - 454, - 32, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _NN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 454, - 11, - 454, - 32, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _NJ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2083, - 14, - 2083, - 47, - [0, - caml_string_of_jsbytes("Article D823-20"), - [0, - caml_string_of_jsbytes - ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _NK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 457, - 11, - 457, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _NI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 457, - 11, - 457, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _NL_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("d\xc3\xa9lai_apr\xc3\xa8s_emm\xc3\xa9nagement_l823_8_2"), - 0]], - _NQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 454, - 11, - 454, - 32, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _NM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 454, - 11, - 454, - 32, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _NR_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0,caml_string_of_jsbytes("condition_rang_enfant"),0]], - _NU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 471, - 14, - 471, - 65, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _NV_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("base_mensuelle_allocations_familiales.date_courante"), - 0]], - _NS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 471, - 14, - 471, - 65, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _NW_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes("base_mensuelle_allocations_familiales"), - [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], - _NX_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes("base_mensuelle_allocations_familiales"), - [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], - _N0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 467, - 14, - 467, - 36, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _N1_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl.m\xc3\xa9nage"), - 0]], - _NY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 467, - 14, - 467, - 36, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _N4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 468, - 14, - 468, - 39, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _N5_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl.demandeur"),0]], - _N2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 468, - 14, - 468, - 39, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _N8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 469, - 14, - 469, - 43, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _N9_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl.date_courante"), - 0]], - _N6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 469, - 14, - 469, - 43, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _N__= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - 0]]], - _N$_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl"), - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - 0]]], - _Oe_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 455, - 11, - 455, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Oa_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 455, - 11, - 455, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Of_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("condition_p\xc3\xa9riode_d\xc3\xa9m\xc3\xa9nagement"), - 0]], - _Oi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 458, - 11, - 458, - 26, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Og_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 458, - 11, - 458, - 26, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Oj_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0,caml_string_of_jsbytes("plafond_d823_22"),0]], - _Oo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 456, - 11, - 456, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ok_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 456, - 11, - 456, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Op_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_logement"),0]], - _Os_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 464, - 12, - 464, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Oq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 464, - 12, - 464, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ot_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes("montant_prime_d\xc3\xa9m\xc3\xa9nagement"), - 0]], - _NF_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1424, - 14, - 1424, - 33, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _NB_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1426, - 14, - 1426, - 36, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _NC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 746, - 12, - 746, - 34, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _NA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 746, - 12, - 746, - 34, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Nx_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1436, - 14, - 1436, - 36, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Nq_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _Nr_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _Ns_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _Nt_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _Nh_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ni_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _Nj_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _Nk_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _M__= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("input"),0]]], - _M$_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _Na_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale"), - [0,caml_string_of_jsbytes("output"),0]]], - _Nb_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _M7_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1455, - 16, - 1458, - 39, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _M8_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("direct"), - [0,caml_string_of_jsbytes("input"),0]]], - _M9_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("direct"),0]], - _Nc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1440, - 9, - 1460, - 10, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Nd_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("direct"), - [0,caml_string_of_jsbytes("output"),0]]], - _Ne_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("direct"),0]], - _Nf_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("direct"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ng_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("direct"),0]], - _Nl_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1491, - 10, - 1507, - 11, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Nm_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("direct"), - [0,caml_string_of_jsbytes("output"),0]]], - _Nn_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("direct"),0]], - _No_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("direct"), - [0,caml_string_of_jsbytes("input"),0]]], - _Np_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("direct"),0]], - _Nu_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1471, - 9, - 1480, - 10, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Nv_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("direct"), - [0,caml_string_of_jsbytes("output"),0]]], - _Nw_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("direct"),0]], - _M3_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 78, - 14, - 78, - 44, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _MX_=[0,0], - _MY_=[1,0], - _MZ_=[1,0], - _M0_=[1,0], - _M1_=[0,0], - _M2_=[1,0], - _MT_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1974, - 14, - 1974, - 31, - [0, - caml_string_of_jsbytes("Article D823-17"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _MP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1413, - 14, - 1413, - 34, - [0, - caml_string_of_jsbytes("Article D823-9"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _MQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 740, - 11, - 740, - 31, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _MO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 740, - 11, - 740, - 31, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _MR_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("cat\xc3\xa9gorie_calcul_apl"),0]], - _MU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 734, - 10, - 734, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _MS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 734, - 10, - 734, - 22, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _MV_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("ressources_m\xc3\xa9nage_avec_arrondi"),0]], - _M4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 741, - 11, - 741, - 41, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _MW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 741, - 11, - 741, - 41, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _M5_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("situation_familiale_calcul_apl"),0]], - _Ny_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 743, - 11, - 743, - 33, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _M6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 743, - 11, - 743, - 33, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _Nz_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("sous_calcul_traitement"),0]], - _ND_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _NG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 745, - 12, - 745, - 31, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _NE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 745, - 12, - 745, - 31, - [0, - caml_string_of_jsbytes("Tous secteurs"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _NH_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), - [0,caml_string_of_jsbytes("aide_finale_formule"),0]], - _ML_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4504, - 14, - 4504, - 36, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _MH_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("input"),0]]], - _MI_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _MJ_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("output"),0]]], - _MK_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _MM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 882, - 10, - 882, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _MG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 882, - 10, - 882, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _MD_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4484, - 14, - 4484, - 36, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Mv_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _Mw_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _Mx_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _My_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _Mz_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _MA_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _MB_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _MC_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _ME_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 881, - 10, - 881, - 40, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Mu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 881, - 10, - 881, - 40, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Mr_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4470, - 14, - 4470, - 36, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Mj_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _Mk_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _Ml_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _Mm_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _Mn_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _Mo_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - 0]], - _Mp_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _Mq_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - 0]], - _Ms_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 880, - 10, - 880, - 32, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Mi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 880, - 10, - 880, - 32, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Mf_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4382, - 14, - 4382, - 33, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Mb_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4648, - 14, - 4648, - 47, - [0, - caml_string_of_jsbytes("Article D842-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _L9_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _L__= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], - _L$_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _Ma_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], - _Mc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 861, - 11, - 861, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _L8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 861, - 11, - 861, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _L5_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4411, - 14, - 4411, - 41, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _L1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4437, - 14, - 4437, - 33, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _LX_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4422, - 14, - 4422, - 33, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _LS_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4671, - 7, - 4674, - 44, - [0, - caml_string_of_jsbytes("Article D842-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _LT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 857, - 11, - 857, - 47, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _LR_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4659, - 14, - 4659, - 50, - [0, - caml_string_of_jsbytes("Article D842-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _LL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4408, - 14, - 4408, - 62, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _LM_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4408, - 14, - 4408, - 62, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _LN_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.n_nombre_parts_d832_25"), - 0]], - _LI_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4401, - 14, - 4401, - 61, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _LJ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4401, - 14, - 4401, - 61, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _LK_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.condition_2_du_832_25"), - 0]], - _LF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 895, - 14, - 895, - 49, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _LB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 905, - 14, - 905, - 53, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 903, - 14, - 903, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 901, - 14, - 901, - 70, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 899, - 14, - 899, - 65, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ll_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 897, - 14, - 897, - 67, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 893, - 14, - 893, - 61, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ld_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 891, - 14, - 891, - 59, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lc_=[3,0], - _K8_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4444, - 14, - 4444, - 70, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _K4_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4441, - 14, - 4441, - 69, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _K0_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4442, - 14, - 4442, - 75, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _KV_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4586, - 5, - 4586, - 44, - [0, - caml_string_of_jsbytes("Article D842-9"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _KN_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("input"),0]]], - _KO_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - 0]], - _KP_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("output"),0]]], - _KQ_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - 0]], - _KR_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("input"),0]]], - _KS_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - 0]], - _KT_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("output"),0]]], - _KU_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - 0]], - _KW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 852, - 11, - 852, - 36, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KM_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4568, - 14, - 4568, - 39, - [0, - caml_string_of_jsbytes("Article D842-9"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _KI_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("input"),0]]], - _KJ_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - 0]], - _KK_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("output"),0]]], - _KL_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - 0]], - _KD_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4735, - 5, - 4735, - 28, - [0, - caml_string_of_jsbytes("Article D842-12"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _KE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 834, - 10, - 834, - 15, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KC_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4725, - 14, - 4725, - 41, - [0, - caml_string_of_jsbytes("Article D842-12"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Kv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 633, - 24, - 633, - 56, - [0, - caml_string_of_jsbytes("Article 37"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Kn_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ko_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - 0]], - _Kp_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - [0,caml_string_of_jsbytes("output"),0]]], - _Kq_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - 0]], - _Kr_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ks_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - 0]], - _Kt_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - [0,caml_string_of_jsbytes("output"),0]]], - _Ku_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - 0]], - _Kw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 855, - 10, - 855, - 26, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Km_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3985, - 24, - 3985, - 56, - [0, - caml_string_of_jsbytes("Article 37"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Ke_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - [0,caml_string_of_jsbytes("input"),0]]], - _Kf_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - 0]], - _Kg_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - [0,caml_string_of_jsbytes("output"),0]]], - _Kh_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - 0]], - _Ki_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - [0,caml_string_of_jsbytes("input"),0]]], - _Kj_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - 0]], - _Kk_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - [0,caml_string_of_jsbytes("output"),0]]], - _Kl_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - 0]], - _Kx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 855, - 10, - 855, - 26, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ky_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 855, - 10, - 855, - 26, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Kd_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3909, - 14, - 3909, - 46, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _J$_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ka_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - 0]], - _Kb_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - [0,caml_string_of_jsbytes("output"),0]]], - _Kc_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - 0]], - _Kz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 855, - 10, - 855, - 26, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _J__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 855, - 10, - 855, - 26, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _J7_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4637, - 15, - 4637, - 37, - [0, - caml_string_of_jsbytes("Article D842-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _J8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 860, - 11, - 860, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _J6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 860, - 11, - 860, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _J2_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4696, - 6, - 4702, - 6, - [0, - caml_string_of_jsbytes("Article D842-12"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _J3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 858, - 11, - 858, - 42, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _J0_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4714, - 5, - 4715, - 59, - [0, - caml_string_of_jsbytes("Article D842-12"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _J1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 858, - 11, - 858, - 42, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _JV_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2913, - 5, - 2913, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _JW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _JT_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2959, - 5, - 2959, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _JU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _JR_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3005, - 5, - 3005, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _JS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _JP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3051, - 5, - 3051, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _JQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _JN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3097, - 5, - 3097, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _JO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _JL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3143, - 5, - 3143, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _JM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _JJ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3189, - 5, - 3189, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _JK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _JH_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3235, - 5, - 3235, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _JI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _JF_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3280, - 5, - 3280, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _JG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _JD_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3325, - 5, - 3325, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _JE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _JB_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3370, - 5, - 3370, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _JC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Jz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3415, - 5, - 3415, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _JA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Jx_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3460, - 5, - 3460, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Jy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Jv_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3505, - 5, - 3505, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Jw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Jt_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3550, - 5, - 3550, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Ju_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Jr_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3595, - 5, - 3595, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Js_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Jp_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3640, - 5, - 3640, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Jq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Jn_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3685, - 5, - 3685, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Jo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Jl_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3730, - 5, - 3730, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Jm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Jj_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3775, - 5, - 3775, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Jk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Jh_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3820, - 5, - 3820, - 62, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Ji_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Jf_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3865, - 5, - 3865, - 32, - [0, - caml_string_of_jsbytes("Article 33"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Jg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _JX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Je_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 854, - 10, - 854, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Jb_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4456, - 14, - 4456, - 36, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Jc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 879, - 10, - 879, - 32, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ja_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 879, - 10, - 879, - 32, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _I7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 655, - 5, - 655, - 16, - [0, - caml_string_of_jsbytes("Article 37"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _I8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 849, - 11, - 849, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _I6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 617, - 43, - 617, - 70, - [0, - caml_string_of_jsbytes("Article 34"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _I9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 849, - 11, - 849, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _I3_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4005, - 5, - 4005, - 16, - [0, - caml_string_of_jsbytes("Article 37"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _I4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 849, - 11, - 849, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _I2_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3951, - 31, - 3951, - 58, - [0, - caml_string_of_jsbytes("Article 34"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _I5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 849, - 11, - 849, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _I1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 849, - 47, - 849, - 53, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _IV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 907, - 14, - 907, - 50, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _IP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4448, - 14, - 4448, - 64, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _IL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4446, - 14, - 4446, - 59, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _IH_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4045, - 14, - 4045, - 33, - [0, - caml_string_of_jsbytes("Article 39"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _ID_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4034, - 14, - 4034, - 33, - [0, - caml_string_of_jsbytes("Article 38"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Iz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4052, - 14, - 4052, - 41, - [0, - caml_string_of_jsbytes("Article 39"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Iv_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4027, - 14, - 4027, - 41, - [0, - caml_string_of_jsbytes("Article 38"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Ir_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3973, - 14, - 3973, - 41, - [0, - caml_string_of_jsbytes("Article 36"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _In_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/autres_sources.catala_fr"), - 331, - 14, - 331, - 36, - [0, - caml_string_of_jsbytes("Article premier"), - [0, - caml_string_of_jsbytes - ("R\xc3\xa8glement (CE) n\xc2\xb02866/98 du conseil du 31 d\xc3\xa9cembre 1998 concernant les taux de conversion entre l'euro et les monnaies des \xc3\x89tats membres adoptant l'euro"), - 0]]], - _Ij_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 3963, - 14, - 3963, - 40, - [0, - caml_string_of_jsbytes("Article 35"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul des allocations de logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Ik_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 856, - 11, - 856, - 37, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ii_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 856, - 11, - 856, - 37, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Il_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("montant_forfaitaire_d842_6"),0]], - _Io_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 859, - 11, - 859, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Im_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 859, - 11, - 859, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ip_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("taux_francs_vers_euros"),0]], - _Is_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 862, - 11, - 862, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Iq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 862, - 11, - 862, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _It_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("montant_minimal_aide_d842_6"),0]], - _Iw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 863, - 11, - 863, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Iu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 863, - 11, - 863, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ix_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("montant_forfaitaire_d842_11"),0]], - _IA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 864, - 11, - 864, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Iy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 864, - 11, - 864, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _IB_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("montant_forfaitaire_d842_12"),0]], - _IE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 865, - 11, - 865, - 30, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _IC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 865, - 11, - 865, - 30, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _IF_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("coefficient_d842_11"),0]], - _II_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 866, - 11, - 866, - 30, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _IG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 866, - 11, - 866, - 30, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _IJ_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("coefficient_d842_12"),0]], - _IM_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4446, - 14, - 4446, - 59, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _IN_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"), - 0]], - _IK_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4446, - 14, - 4446, - 59, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _IQ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4448, - 14, - 4448, - 64, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _IR_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_nombre_parts.situation_familiale_calcul_apl"), - 0]], - _IO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4448, - 14, - 4448, - 64, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _IS_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts"), - [0, - caml_string_of_jsbytes - ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), - 0]]], - _IT_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts"), - [0, - caml_string_of_jsbytes - ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), - 0]]], - _IW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 907, - 14, - 907, - 50, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _IX_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], - _IU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 907, - 14, - 907, - 50, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _IY_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _IZ_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _I__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 849, - 11, - 849, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _I0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 849, - 11, - 849, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _I$_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("montant_forfaitaire_charges"),0]], - _Jd_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _JY_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), - 0]], - _J4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 858, - 11, - 858, - 42, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _JZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 858, - 11, - 858, - 42, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _J5_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("seuil_minimal_ressources_m\xc3\xa9nage"),0]], - _J9_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], - _KA_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), - 0]], - _KF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 834, - 10, - 834, - 15, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 834, - 10, - 834, - 15, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KG_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_seuil"), - 0]], - _KX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 852, - 11, - 852, - 36, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 852, - 11, - 852, - 36, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _KY_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("plafond_mensualit\xc3\xa9_d842_6"),0]], - _K1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4442, - 14, - 4442, - 75, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _K2_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _KZ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4442, - 14, - 4442, - 75, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _K5_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4441, - 14, - 4441, - 69, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _K6_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"), - 0]], - _K3_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4441, - 14, - 4441, - 69, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _K9_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4444, - 14, - 4444, - 70, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _K__= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"), - 0]], - _K7_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4444, - 14, - 4444, - 70, - [0, - caml_string_of_jsbytes("Article D842-6"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _K$_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], - _La_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], - _Le_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 891, - 14, - 891, - 59, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lf_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.type_logement_foyer"), - 0]], - _Lb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 891, - 14, - 891, - 59, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Li_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 893, - 14, - 893, - 61, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lj_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.date_conventionnement"), - 0]], - _Lg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 893, - 14, - 893, - 61, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 897, - 14, - 897, - 67, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ln_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _Lk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 897, - 14, - 897, - 67, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 899, - 14, - 899, - 65, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lr_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.nombre_personnes_\xc3\xa0_charge"), - 0]], - _Lo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 899, - 14, - 899, - 65, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 901, - 14, - 901, - 70, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lv_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.situation_familiale_calcul_apl"), - 0]], - _Ls_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 901, - 14, - 901, - 70, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ly_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 903, - 14, - 903, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Lz_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.zone"),0]], - _Lw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 903, - 14, - 903, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _LC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 905, - 14, - 905, - 53, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _LD_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.date_courante"),0]], - _LA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 905, - 14, - 905, - 53, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _LG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 895, - 14, - 895, - 49, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _LH_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.redevance"),0]], - _LE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 895, - 14, - 895, - 49, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _LO_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_apl_logement_foyer"), - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - 0]]], - _LP_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_apl_logement_foyer"), - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - 0]]], - _LU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 857, - 11, - 857, - 47, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _LQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 857, - 11, - 857, - 47, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _LV_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("seuil_minimal_d\xc3\xa9pense_nette_minimale"), - 0]], - _LY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 848, - 11, - 848, - 30, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _LW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 848, - 11, - 848, - 30, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _LZ_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("mensualit\xc3\xa9_\xc3\xa9ligible"),0]], - _L2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 850, - 11, - 850, - 30, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _L0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 850, - 11, - 850, - 30, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _L3_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("mensualit\xc3\xa9_minimale"),0]], - _L6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 851, - 11, - 851, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _L4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 851, - 11, - 851, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _L7_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("coefficient_prise_en_charge"),0]], - _Md_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - 0]], - _Mg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 876, - 12, - 876, - 31, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Me_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 876, - 12, - 876, - 31, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Mh_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("aide_finale_formule"),0]], - _Mt_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _MF_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _MN_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _If_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4918, - 14, - 4918, - 36, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Ib_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ic_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _Id_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("output"),0]]], - _Ie_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _Ig_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 949, - 10, - 949, - 25, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ia_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 949, - 10, - 949, - 25, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _H9_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4897, - 14, - 4897, - 36, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _H1_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_redevance"), - [0,caml_string_of_jsbytes("input"),0]]], - _H2_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], - _H3_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_redevance"), - [0,caml_string_of_jsbytes("output"),0]]], - _H4_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], - _H5_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _H6_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _H7_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _H8_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _H__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 948, - 10, - 948, - 40, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _H0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 948, - 10, - 948, - 40, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _HX_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4883, - 14, - 4883, - 36, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _HT_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _HU_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _HV_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _HW_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _HY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 947, - 10, - 947, - 19, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _HS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 947, - 10, - 947, - 19, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _HP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4865, - 14, - 4865, - 36, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _HH_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _HI_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _HJ_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _HK_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _HL_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _HM_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - 0]], - _HN_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _HO_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - 0]], - _HQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 946, - 10, - 946, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _HG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 946, - 10, - 946, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _HD_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4784, - 14, - 4784, - 33, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Hz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4972, - 14, - 4972, - 47, - [0, - caml_string_of_jsbytes("Article D842-17"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Hr_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _Hs_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], - _Ht_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _Hu_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], - _Hv_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("input"),0]]], - _Hw_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], - _Hx_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), - [0,caml_string_of_jsbytes("output"),0]]], - _Hy_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], - _HA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 926, - 11, - 926, - 44, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Hq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 926, - 11, - 926, - 44, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Hn_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4843, - 14, - 4843, - 27, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Hj_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4963, - 14, - 4963, - 36, - [0, - caml_string_of_jsbytes("Article D842-17"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Hk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 925, - 11, - 925, - 33, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Hi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 925, - 11, - 925, - 33, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Hf_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4805, - 14, - 4805, - 41, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _G$_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4841, - 14, - 4841, - 70, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _G7_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4831, - 14, - 4831, - 69, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _G3_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4832, - 14, - 4832, - 75, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _GZ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4851, - 14, - 4851, - 36, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _G0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 945, - 10, - 945, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 945, - 10, - 945, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4118, - 6, - 4118, - 79, - [0, - caml_string_of_jsbytes("Article 43"), - [0, - caml_string_of_jsbytes - ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _GV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 931, - 12, - 931, - 29, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GS_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4153, - 6, - 4154, - 38, - [0, - caml_string_of_jsbytes("Article 43"), - [0, - caml_string_of_jsbytes - ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _GT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 931, - 12, - 931, - 29, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4171, - 6, - 4172, - 24, - [0, - caml_string_of_jsbytes("Article 43"), - [0, - caml_string_of_jsbytes - ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _GQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 931, - 12, - 931, - 29, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4135, - 6, - 4136, - 46, - [0, - caml_string_of_jsbytes("Article 43"), - [0, - caml_string_of_jsbytes - ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _GR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 931, - 12, - 931, - 29, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 709, - 6, - 709, - 79, - [0, - caml_string_of_jsbytes("Article 43"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _GN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 931, - 12, - 931, - 29, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 746, - 6, - 747, - 38, - [0, - caml_string_of_jsbytes("Article 43"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _GL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 931, - 12, - 931, - 29, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 765, - 6, - 766, - 24, - [0, - caml_string_of_jsbytes("Article 43"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _GI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 931, - 12, - 931, - 29, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 727, - 6, - 728, - 46, - [0, - caml_string_of_jsbytes("Article 43"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _GJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 931, - 12, - 931, - 29, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GB_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4076, - 14, - 4076, - 41, - [0, - caml_string_of_jsbytes("Article 40"), - [0, - caml_string_of_jsbytes - ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _GC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 932, - 12, - 932, - 39, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 686, - 14, - 686, - 41, - [0, - caml_string_of_jsbytes("Article 40"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _GA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 932, - 12, - 932, - 39, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gt_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4802, - 14, - 4802, - 61, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Gu_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4802, - 14, - 4802, - 61, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Gv_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.condition_2_du_832_25"), - 0]], - _Gq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 956, - 14, - 956, - 49, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 966, - 14, - 966, - 53, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 964, - 14, - 964, - 44, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ge_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 962, - 14, - 962, - 70, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ga_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 960, - 14, - 960, - 65, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _F8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 958, - 14, - 958, - 67, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _F4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 954, - 14, - 954, - 61, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _F0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 952, - 14, - 952, - 59, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 968, - 14, - 968, - 50, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4837, - 14, - 4837, - 64, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _FK_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4835, - 14, - 4835, - 59, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _FG_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4839, - 14, - 4839, - 55, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _FC_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4191, - 14, - 4191, - 51, - [0, - caml_string_of_jsbytes("Article 44"), - [0, - caml_string_of_jsbytes - ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Fy_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4089, - 14, - 4089, - 41, - [0, - caml_string_of_jsbytes("Article 41"), - [0, - caml_string_of_jsbytes - ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Fu_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 4100, - 14, - 4100, - 42, - [0, - caml_string_of_jsbytes("Article 42"), - [0, - caml_string_of_jsbytes - ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _Fv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 927, - 11, - 927, - 39, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ft_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 927, - 11, - 927, - 39, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Fw_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("montant_minimal_aide_d842_15"),0]], - _Fz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 928, - 11, - 928, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Fx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 928, - 11, - 928, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FA_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("montant_forfaitaire_d842_15"),0]], - _FD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 929, - 11, - 929, - 48, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 929, - 11, - 929, - 48, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FE_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("montant_minimal_d\xc3\xa9pense_nette_d842_17"), - 0]], - _FH_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4839, - 14, - 4839, - 55, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _FI_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts.condition_2_du_832_25"), - 0]], - _FF_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4839, - 14, - 4839, - 55, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _FL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4835, - 14, - 4835, - 59, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _FM_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"), - 0]], - _FJ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4835, - 14, - 4835, - 59, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _FP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4837, - 14, - 4837, - 64, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _FQ_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_nombre_parts.situation_familiale_calcul_apl"), - 0]], - _FN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4837, - 14, - 4837, - 64, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _FR_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts"), - [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]], - _FS_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts"), - [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]], - _FV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 968, - 14, - 968, - 50, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FW_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], - _FT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 968, - 14, - 968, - 50, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _FX_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _FY_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _F1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 952, - 14, - 952, - 59, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _F2_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.type_logement_foyer"), - 0]], - _FZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 952, - 14, - 952, - 59, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _F5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 954, - 14, - 954, - 61, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _F6_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.date_conventionnement"), - 0]], - _F3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 954, - 14, - 954, - 61, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _F9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 958, - 14, - 958, - 67, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _F__= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _F7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 958, - 14, - 958, - 67, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 960, - 14, - 960, - 65, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gc_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.nombre_personnes_\xc3\xa0_charge"), - 0]], - _F$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 960, - 14, - 960, - 65, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 962, - 14, - 962, - 70, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gg_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_apl_logement_foyer.situation_familiale_calcul_apl"), - 0]], - _Gd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 962, - 14, - 962, - 70, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 964, - 14, - 964, - 44, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gk_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.zone"),0]], - _Gh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 964, - 14, - 964, - 44, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 966, - 14, - 966, - 53, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Go_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.date_courante"),0]], - _Gl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 966, - 14, - 966, - 53, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 956, - 14, - 956, - 49, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gs_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.redevance"),0]], - _Gp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 956, - 14, - 956, - 49, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gw_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_apl_logement_foyer"), - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - 0]]], - _Gx_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_apl_logement_foyer"), - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - 0]]], - _GD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 932, - 12, - 932, - 39, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Gy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 932, - 12, - 932, - 39, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GE_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("montant_forfaitaire_charges"),0]], - _GW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 931, - 12, - 931, - 29, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 931, - 12, - 931, - 29, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _GX_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("\xc3\xa9quivalence_loyer"),0]], - _G1_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _G4_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4832, - 14, - 4832, - 75, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _G5_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _G2_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4832, - 14, - 4832, - 75, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _G8_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4831, - 14, - 4831, - 69, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _G9_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"), - 0]], - _G6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4831, - 14, - 4831, - 69, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Ha_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4841, - 14, - 4841, - 70, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Hb_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"), - 0]], - _G__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4841, - 14, - 4841, - 70, - [0, - caml_string_of_jsbytes("Article D842-15"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Hc_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], - _Hd_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], - _Hg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 930, - 12, - 930, - 39, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _He_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 930, - 12, - 930, - 39, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Hh_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("coefficient_prise_en_charge"),0]], - _Hl_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], - _Ho_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 933, - 12, - 933, - 25, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Hm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 933, - 12, - 933, - 25, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Hp_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("loyer_minimal"),0]], - _HB_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), - 0]], - _HE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 943, - 12, - 943, - 31, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _HC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 943, - 12, - 943, - 31, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _HF_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("aide_finale_formule"),0]], - _HR_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), - 0]], - _HZ_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], - _H$_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _Ih_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _Fp_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4273, - 24, - 4273, - 43, - [0, - caml_string_of_jsbytes("Article D842-4"), - [0, - caml_string_of_jsbytes("Section 1 : Secteur locatif ordinaire"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Fq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 786, - 12, - 786, - 31, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Fo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 823, - 14, - 823, - 33, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Fj_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4281, - 24, - 4281, - 46, - [0, - caml_string_of_jsbytes("Article D842-4"), - [0, - caml_string_of_jsbytes("Section 1 : Secteur locatif ordinaire"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Fk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 788, - 12, - 788, - 34, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Fi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 824, - 14, - 824, - 36, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Fe_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ff_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _Fg_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"), - [0,caml_string_of_jsbytes("output"),0]]], - _Fh_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _Fl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 788, - 12, - 788, - 34, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Fd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 788, - 12, - 788, - 34, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _E__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 819, - 14, - 819, - 55, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _E6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 817, - 14, - 817, - 59, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _E2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 815, - 14, - 815, - 43, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 813, - 14, - 813, - 42, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 809, - 5, - 810, - 63, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 806, - 14, - 806, - 53, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 804, - 14, - 804, - 37, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 802, - 14, - 802, - 63, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 800, - 14, - 800, - 58, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 798, - 14, - 798, - 46, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ew_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 795, - 14, - 795, - 78, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Es_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 793, - 14, - 793, - 60, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Eo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 791, - 14, - 791, - 48, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ep_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 791, - 14, - 791, - 48, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Eq_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("calcul_apl_locatif.loyer_principal_base"),0]], - _En_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 791, - 14, - 791, - 48, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Et_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 793, - 14, - 793, - 60, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Eu_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes - ("calcul_apl_locatif.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _Er_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 793, - 14, - 793, - 60, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ex_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 795, - 14, - 795, - 78, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ey_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes - ("calcul_apl_locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"), - 0]], - _Ev_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 795, - 14, - 795, - 78, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 798, - 14, - 798, - 46, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EC_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("calcul_apl_locatif.date_courante"),0]], - _Ez_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 798, - 14, - 798, - 46, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 800, - 14, - 800, - 58, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EG_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes - ("calcul_apl_locatif.nombre_personnes_\xc3\xa0_charge"), - 0]], - _ED_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 800, - 14, - 800, - 58, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 802, - 14, - 802, - 63, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EK_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes - ("calcul_apl_locatif.situation_familiale_calcul_apl"), - 0]], - _EH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 802, - 14, - 802, - 63, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 804, - 14, - 804, - 37, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EO_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("calcul_apl_locatif.zone"),0]], - _EL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 804, - 14, - 804, - 37, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _ER_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 806, - 14, - 806, - 53, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _ES_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("calcul_apl_locatif.logement_est_chambre"),0]], - _EP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 806, - 14, - 806, - 53, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 809, - 5, - 810, - 63, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EW_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes - ("calcul_apl_locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"), - 0]], - _ET_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 809, - 5, - 810, - 63, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _EZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 813, - 14, - 813, - 42, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _E0_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("calcul_apl_locatif.type_aide"),0]], - _EX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 813, - 14, - 813, - 42, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _E3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 815, - 14, - 815, - 43, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _E4_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("calcul_apl_locatif.colocation"),0]], - _E1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 815, - 14, - 815, - 43, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _E7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 817, - 14, - 817, - 59, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _E8_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes - ("calcul_apl_locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - 0]], - _E5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 817, - 14, - 817, - 59, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _E$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 819, - 14, - 819, - 55, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Fa_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes - ("calcul_apl_locatif.logement_meubl\xc3\xa9_d842_2"), - 0]], - _E9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 819, - 14, - 819, - 55, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Fb_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes("calcul_apl_locatif"), - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - 0]]], - _Fc_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0, - caml_string_of_jsbytes("calcul_apl_locatif"), - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - 0]]], - _Fm_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], - _Fr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 786, - 12, - 786, - 31, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Fn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 786, - 12, - 786, - 31, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Fs_= - [0, - caml_string_of_jsbytes("CalculAllocationLogementLocatif"), - [0,caml_string_of_jsbytes("aide_finale_formule"),0]], - _Eh_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"), - 67, - 5, - 71, - 21, - [0, - caml_string_of_jsbytes("Article L512-3"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _Ei_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 40, - 12, - 40, - 24, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Eg_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"), - 56, - 5, - 57, - 50, - [0, - caml_string_of_jsbytes("Article L512-3"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _Ej_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 40, - 12, - 40, - 24, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Ek_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 40, - 12, - 40, - 24, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Ef_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 40, - 12, - 40, - 24, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _El_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 40, - 12, - 40, - 24, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Ee_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 40, - 12, - 40, - 24, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Ea_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"), - 77, - 5, - 81, - 24, - [0, - caml_string_of_jsbytes("Article L512-3"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _Eb_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 41, - 12, - 41, - 31, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _D$_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 41, - 12, - 41, - 31, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _Ec_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 41, - 12, - 41, - 31, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _D__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 41, - 12, - 41, - 31, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _D6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr"), - 62, - 18, - 62, - 41, - [0, - caml_string_of_jsbytes("Article R755-0-2"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _D7_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 42, - 11, - 42, - 27, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _D5_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr"), - 31, - 14, - 31, - 30, - [0, - caml_string_of_jsbytes("Article R512-2"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application."), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _DU_=[5,0], - _DV_=[4,0], - _DW_=[3,0], - _DX_=[2,0], - _DY_=[1,0], - _DZ_=[0,0], - _D0_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"), - 126, - 5, - 131, - 30, - [0, - caml_string_of_jsbytes("Article L751-1"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), - [0, - caml_string_of_jsbytes - ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _D1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 44, - 12, - 44, - 35, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _DT_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 44, - 12, - 44, - 35, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _DN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 51, - 14, - 51, - 28, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _DJ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 52, - 14, - 52, - 32, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _DF_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr"), - 21, - 14, - 21, - 26, - [0, - caml_string_of_jsbytes("Article R512-2"), - [0, - caml_string_of_jsbytes("Chapitre 2 : Champ d'application."), - [0, - caml_string_of_jsbytes - ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), - [0, - caml_string_of_jsbytes - ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _DG_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 43, - 12, - 43, - 24, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _DE_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 43, - 12, - 43, - 24, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _DH_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2"),0]], - _DK_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 52, - 14, - 52, - 32, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _DL_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("smic.date_courante"),0]], - _DI_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 52, - 14, - 52, - 32, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _DO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 51, - 14, - 51, - 28, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _DP_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("smic.r\xc3\xa9sidence"),0]], - _DM_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 51, - 14, - 51, - 28, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _DQ_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]], - _DR_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]], - _D2_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 44, - 12, - 44, - 35, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _DS_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 44, - 12, - 44, - 35, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _D3_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1"),0]], - _D8_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 42, - 11, - 42, - 27, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _D4_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), - 42, - 11, - 42, - 27, - [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], - _D9_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("plafond_l512_3_2"),0]], - _Ed_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]], - _Em_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - [0,caml_string_of_jsbytes("droit_ouvert"),0]], - _Dz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 409, - 14, - 409, - 32, - [0, - caml_string_of_jsbytes("Article R822-7"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Principes de neutralisation et d'abattement"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _Du_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 854, - 6, - 857, - 35, - [0, - caml_string_of_jsbytes("Article R822-20"), - [0, - caml_string_of_jsbytes - ("Sous-section 3 : Montant forfaitaire de ressources applicable aux \xc3\xa9tudiants"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _Dv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 508, - 12, - 508, - 39, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Dt_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 124, - 14, - 124, - 41, - [0, - caml_string_of_jsbytes("Article R822-2"), - [0, - caml_string_of_jsbytes - ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _Dp_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 462, - 14, - 462, - 32, - [0, - caml_string_of_jsbytes("Article R822-8"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Principes de neutralisation et d'abattement"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _Dj_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 418, - 14, - 418, - 65, - [0, - caml_string_of_jsbytes("Article R822-7"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Principes de neutralisation et d'abattement"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _Df_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 524, - 14, - 524, - 33, - [0, - caml_string_of_jsbytes("Article R822-10"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Principes de neutralisation et d'abattement"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _Db_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 129, - 14, - 129, - 62, - [0, - caml_string_of_jsbytes("Article R822-2"), - [0, - caml_string_of_jsbytes - ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _C9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 503, - 51, - 503, - 57, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _C5_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 11, - 14, - 11, - 41, - [0, - caml_string_of_jsbytes("Article 3"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Dispositions applicables aux ressources"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _C1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 21, - 14, - 21, - 41, - [0, - caml_string_of_jsbytes("Article 4"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Dispositions applicables aux ressources"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _CX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 493, - 46, - 493, - 52, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 495, - 10, - 495, - 15, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 495, - 10, - 495, - 15, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CZ_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_seuil"), - 0]], - _C2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 499, - 11, - 499, - 38, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _C0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 499, - 11, - 499, - 38, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _C3_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant_forfaitaire_r_822_8"),0]], - _C6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 501, - 11, - 501, - 38, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _C4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 501, - 11, - 501, - 38, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _C7_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant_forfaitaire_r_822_7"),0]], - _C__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 503, - 11, - 503, - 42, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _C8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 503, - 11, - 503, - 42, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _C$_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("ressources_forfaitaires_r822_20"),0]], - _Dc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 497, - 11, - 497, - 59, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Da_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 497, - 11, - 497, - 59, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Dd_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes - ("ressources_personnes_vivant_habituellement_foyer"), - 0]], - _Dg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 502, - 11, - 502, - 30, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _De_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 502, - 11, - 502, - 30, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Dh_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("abattement_r_822_10"),0]], - _Dk_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 418, - 14, - 418, - 65, - [0, - caml_string_of_jsbytes("Article R822-7"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Principes de neutralisation et d'abattement"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _Dl_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes - ("base_mensuelle_allocations_familiales.date_courante"), - 0]], - _Di_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 418, - 14, - 418, - 65, - [0, - caml_string_of_jsbytes("Article R822-7"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Principes de neutralisation et d'abattement"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _Dm_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("base_mensuelle_allocations_familiales"), - [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], - _Dn_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("base_mensuelle_allocations_familiales"), - [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], - _Dq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 498, - 11, - 498, - 29, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Do_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 498, - 11, - 498, - 29, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Dr_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("abattement_r_822_8"),0]], - _Dw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 508, - 12, - 508, - 39, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ds_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 508, - 12, - 508, - 39, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Dx_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("ressources_prises_en_compte"),0]], - _DA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 500, - 11, - 500, - 29, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Dy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 500, - 11, - 500, - 29, - [0, - caml_string_of_jsbytes - ("Prise en compte des ressources pour les aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _DB_= - [0, - caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("abattement_r_822_7"),0]], - _DC_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 142, - 13, - 143, - 74, - [0, - caml_string_of_jsbytes("Article R822-2"), - [0, - caml_string_of_jsbytes - ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _DD_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 142, - 13, - 143, - 74, - [0, - caml_string_of_jsbytes("Article R822-2"), - [0, - caml_string_of_jsbytes - ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _CP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 334, - 14, - 334, - 56, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 336, - 14, - 336, - 63, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CH_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1137, - 14, - 1137, - 49, - [0, - caml_string_of_jsbytes("Article R823-4"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _CD_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), - [0,caml_string_of_jsbytes("input"),0]]], - _CE_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), - 0]], - _CF_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), - [0,caml_string_of_jsbytes("output"),0]]], - _CG_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), - 0]], - _Cx_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1213, - 4, - 1219, - 48, - [0, - caml_string_of_jsbytes("Article R823-4"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Cy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 303, - 11, - 303, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cs_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("condition_2_r823_4"), - [0,caml_string_of_jsbytes("input"),0]]], - _Ct_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], - _Cu_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("condition_2_r823_4"), - [0,caml_string_of_jsbytes("output"),0]]], - _Cv_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], - _Cw_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1194, - 5, - 1194, - 44, - [0, - caml_string_of_jsbytes("Article R823-4"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Cz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 303, - 11, - 303, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cq_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1149, - 5, - 1152, - 44, - [0, - caml_string_of_jsbytes("Article R823-4"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Cr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 303, - 11, - 303, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 303, - 11, - 303, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 303, - 11, - 303, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Co_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 303, - 11, - 303, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ck_=[0,0], - _Cj_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1173, - 5, - 1189, - 10, - [0, - caml_string_of_jsbytes("Article R823-4"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Cl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 324, - 12, - 324, - 30, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ci_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 324, - 12, - 324, - 30, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 324, - 12, - 324, - 30, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ch_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 324, - 12, - 324, - 30, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 330, - 5, - 332, - 25, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ce_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 320, - 12, - 320, - 23, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 320, - 12, - 320, - 23, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _B__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 163, - 14, - 163, - 31, - [0, - caml_string_of_jsbytes("Article L351-8"), - [0, - caml_string_of_jsbytes("Section 5 : Taux et montant de la pension"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Ouverture du droit, liquidation et calcul des pensions de retraite"), - [0, - caml_string_of_jsbytes - ("Titre V : Assurance vieillesse - Assurance veuvage"), - [0, - caml_string_of_jsbytes - ("Livre III : Dispositions relatives aux assurances sociales et \xc3\xa0 diverses cat\xc3\xa9gories de personnes rattach\xc3\xa9es au r\xc3\xa9gime g\xc3\xa9n\xc3\xa9rale"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]], - _B4_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 72, - 5, - 73, - 52, - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]], - _B5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 302, - 11, - 302, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _B3_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 65, - 5, - 68, - 52, - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]], - _B6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 302, - 11, - 302, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _B2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 302, - 11, - 302, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BV_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 286, - 18, - 286, - 75, - [0, - caml_string_of_jsbytes("Article L822-5"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _BW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 314, - 11, - 314, - 36, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BS_=[5,0], - _BT_=[4,0], - _BU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 267, - 18, - 269, - 45, - [0, - caml_string_of_jsbytes("Article L822-5"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _BX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 314, - 11, - 314, - 36, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BR_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 944, - 5, - 944, - 58, - [0, - caml_string_of_jsbytes("Article R822-22"), - [0, - caml_string_of_jsbytes - ("Sous-section 4 : Prise en compte du patrimoine"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _BY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 314, - 11, - 314, - 36, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BQ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 250, - 33, - 250, - 58, - [0, - caml_string_of_jsbytes("Article L822-5"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _BM_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 125, - 14, - 125, - 32, - [0, - caml_string_of_jsbytes("Article L161-17-2"), - [0, - caml_string_of_jsbytes - ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."), - [0, - caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), - [0, - caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Dispositions relatives aux prestations"), - [0, - caml_string_of_jsbytes - ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), - [0, - caml_string_of_jsbytes - ("Titre III: Titre III : Dispositions communes relatives au financement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]]]], - _BH_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 385, - 18, - 385, - 44, - [0, - caml_string_of_jsbytes("Article L822-10"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _BI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 300, - 11, - 300, - 58, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 300, - 11, - 300, - 58, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 171, - 5, - 177, - 65, - [0, - caml_string_of_jsbytes("Article L822-3"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _BA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 295, - 11, - 295, - 45, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _By_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 156, - 5, - 158, - 30, - [0, - caml_string_of_jsbytes("Article L822-3"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _BB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 295, - 11, - 295, - 45, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bx_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 125, - 5, - 131, - 33, - [0, - caml_string_of_jsbytes("Article L822-2"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _BC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 295, - 11, - 295, - 45, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 295, - 11, - 295, - 45, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bq_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 203, - 5, - 208, - 39, - [0, - caml_string_of_jsbytes("Article L822-4"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Br_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 296, - 11, - 296, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bp_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 197, - 5, - 198, - 34, - [0, - caml_string_of_jsbytes("Article L822-4"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Bs_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 296, - 11, - 296, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 296, - 11, - 296, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bj_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 329, - 5, - 330, - 34, - [0, - caml_string_of_jsbytes("Article D815-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]], - _Bk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 317, - 11, - 317, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bh_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 334, - 5, - 335, - 34, - [0, - caml_string_of_jsbytes("Article D815-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]], - _Bi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 317, - 11, - 317, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bf_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 339, - 5, - 340, - 34, - [0, - caml_string_of_jsbytes("Article D815-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]], - _Bg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 317, - 11, - 317, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bd_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/autres_sources.catala_fr"), - 58, - 5, - 59, - 33, - [0, - caml_string_of_jsbytes - ('Circulaire de la CNAV 2023-3 du 09/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2023"'), - [0, - caml_string_of_jsbytes - ("Montants revaloris\xc3\xa9s de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), - 0]]], - _Be_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 317, - 11, - 317, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bb_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/autres_sources.catala_fr"), - 90, - 5, - 91, - 33, - [0, - caml_string_of_jsbytes - ('Circulaire de la CNAV 2022-3 du 11/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2022"'), - [0, - caml_string_of_jsbytes - ("Montants revaloris\xc3\xa9s de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), - 0]]], - _Bc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 317, - 11, - 317, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _A$_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/autres_sources.catala_fr"), - 123, - 5, - 124, - 33, - [0, - caml_string_of_jsbytes - ('Circulaire de la CNAV 2021-1 du 11/01/2021 "Revalorisation \xc3\xa0 compter du 1er janvier 2021"'), - [0, - caml_string_of_jsbytes - ("Montants revaloris\xc3\xa9s de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), - 0]]], - _Ba_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 317, - 11, - 317, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _A6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 107, - 5, - 110, - 67, - [0, - caml_string_of_jsbytes("Article L822-2"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _A7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 293, - 11, - 293, - 32, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _A5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 293, - 11, - 293, - 32, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _A1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 246, - 14, - 246, - 40, - [0, - caml_string_of_jsbytes("Article L822-5"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _AV_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 123, - 14, - 123, - 61, - [0, - caml_string_of_jsbytes("Article L161-17-2"), - [0, - caml_string_of_jsbytes - ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."), - [0, - caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), - [0, - caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Dispositions relatives aux prestations"), - [0, - caml_string_of_jsbytes - ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), - [0, - caml_string_of_jsbytes - ("Titre III: Titre III : Dispositions communes relatives au financement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]]]], - _AP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 46, - 5, - 46, - 41, - [0, - caml_string_of_jsbytes("Article L821-2"), - [0, - caml_string_of_jsbytes - ("Sous-section 1 : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Section 2 : R\xc3\xa8gles de non-cumul"), - [0, - caml_string_of_jsbytes - ("Chapitre Ier : Principes g\xc3\xa9n\xc3\xa9raux"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _AQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 294, - 12, - 294, - 51, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _AO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 294, - 12, - 294, - 51, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _AR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 294, - 12, - 294, - 51, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _AI_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1035, - 5, - 1063, - 65, - [0, - caml_string_of_jsbytes("Article R822-25"), - [0, - caml_string_of_jsbytes - ("Section 3 : Conditions relatives au logement"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _AJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 297, - 12, - 297, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _AH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 297, - 12, - 297, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _AK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 297, - 12, - 297, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _AC_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 346, - 18, - 346, - 67, - [0, - caml_string_of_jsbytes("Article L822-8"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _AD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 298, - 11, - 298, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _AB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 298, - 11, - 298, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Aw_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 360, - 18, - 360, - 61, - [0, - caml_string_of_jsbytes("Article L822-9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _Ax_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 299, - 11, - 299, - 58, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Av_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 299, - 11, - 299, - 58, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ar_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 146, - 14, - 146, - 43, - [0, - caml_string_of_jsbytes("Article L822-3"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _An_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 927, - 14, - 927, - 37, - [0, - caml_string_of_jsbytes("Article R822-22"), - [0, - caml_string_of_jsbytes - ("Sous-section 4 : Prise en compte du patrimoine"), - [0, - caml_string_of_jsbytes - ("Section 2 : Conditions relatives aux ressources"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _Aj_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 106, - 14, - 106, - 41, - [0, - caml_string_of_jsbytes("Article R822-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Conditions relatives au b\xc3\xa9n\xc3\xa9ficiaire"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Af_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 105, - 14, - 105, - 42, - [0, - caml_string_of_jsbytes("Article R822-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Conditions relatives au b\xc3\xa9n\xc3\xa9ficiaire"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _Ab_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 301, - 11, - 301, - 48, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _z9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 292, - 11, - 292, - 25, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _z__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 292, - 11, - 292, - 25, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _z8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 292, - 11, - 292, - 25, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _z$_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_pr\xc3\xaat"),0]], - _Ac_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 301, - 11, - 301, - 48, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Aa_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 301, - 11, - 301, - 48, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ad_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_peuplement_logement_l822_10"),0]], - _Ag_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 311, - 11, - 311, - 39, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ae_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 311, - 11, - 311, - 39, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ah_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("seuil_l822_3_parts_propri\xc3\xa9t\xc3\xa9"), - 0]], - _Ak_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 312, - 11, - 312, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ai_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 312, - 11, - 312, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Al_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("seuil_l822_3_parts_usufruit"),0]], - _Ao_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 313, - 11, - 313, - 34, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Am_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 313, - 11, - 313, - 34, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ap_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("seuil_l822_5_patrimoine"),0]], - _As_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 310, - 11, - 310, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Aq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 310, - 11, - 310, - 40, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _At_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("usufruit_ou_propri\xc3\xa9t\xc3\xa9_famille"), - 0]], - _Ay_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 299, - 11, - 299, - 58, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Au_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 299, - 11, - 299, - 58, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Az_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes - ("condition_non_ouverture_l822_9_decence_logement"), - 0]], - _AE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 298, - 11, - 298, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _AA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 298, - 11, - 298, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _AF_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_non_ouverture_l822_8"),0]], - _AL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 297, - 12, - 297, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _AG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 297, - 12, - 297, - 38, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _AM_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_logement_surface"),0]], - _AS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 294, - 12, - 294, - 51, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _AN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 294, - 12, - 294, - 51, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _AT_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes - ("condition_logement_r\xc3\xa9sidence_principale"), - 0]], - _AW_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 123, - 14, - 123, - 61, - [0, - caml_string_of_jsbytes("Article L161-17-2"), - [0, - caml_string_of_jsbytes - ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."), - [0, - caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), - [0, - caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Dispositions relatives aux prestations"), - [0, - caml_string_of_jsbytes - ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), - [0, - caml_string_of_jsbytes - ("Titre III: Titre III : Dispositions communes relatives au financement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]]]], - _AX_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes - ("ouverture_droits_retraite.date_naissance_assur\xc3\xa9"), - 0]], - _AU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 123, - 14, - 123, - 61, - [0, - caml_string_of_jsbytes("Article L161-17-2"), - [0, - caml_string_of_jsbytes - ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."), - [0, - caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), - [0, - caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Dispositions relatives aux prestations"), - [0, - caml_string_of_jsbytes - ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), - [0, - caml_string_of_jsbytes - ("Titre III: Titre III : Dispositions communes relatives au financement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]]]], - _AY_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("ouverture_droits_retraite"), - [0,caml_string_of_jsbytes("OuvertureDroitsRetraite"),0]]], - _AZ_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("ouverture_droits_retraite"), - [0,caml_string_of_jsbytes("OuvertureDroitsRetraite"),0]]], - _A2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 309, - 11, - 309, - 37, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _A0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 309, - 11, - 309, - 37, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _A3_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("patrimoine_total_demandeur"),0]], - _A8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 293, - 11, - 293, - 32, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _A4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 293, - 11, - 293, - 32, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _A9_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_nationalit\xc3\xa9"),0]], - _Bl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 317, - 11, - 317, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _A__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 317, - 11, - 317, - 41, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bm_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("plafond_individuel_l815_9_s\xc3\xa9cu"),0]], - _Bt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 296, - 11, - 296, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 296, - 11, - 296, - 44, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bu_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_logement_location_tiers"),0]], - _BD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 295, - 11, - 295, - 45, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Bv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 295, - 11, - 295, - 45, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BE_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_logement_mode_occupation"),0]], - _BJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 300, - 11, - 300, - 58, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 300, - 11, - 300, - 58, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BK_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes - ("condition_ouverture_l822_10_peuplement_logement"), - 0]], - _BN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 316, - 11, - 316, - 29, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 316, - 11, - 316, - 29, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BO_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("\xc3\xa2ge_l161_17_2_s\xc3\xa9cu"),0]], - _BZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 314, - 11, - 314, - 36, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _BP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 314, - 11, - 314, - 36, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _B0_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("patrimoine_pris_en_compte"),0]], - _B7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 302, - 11, - 302, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _B1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 302, - 11, - 302, - 31, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _B8_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_logement"),0]], - _B$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 315, - 11, - 315, - 28, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _B9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 315, - 11, - 315, - 28, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Ca_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("\xc3\xa2ge_l351_8_1_s\xc3\xa9cu"),0]], - _Cf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 320, - 12, - 320, - 23, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 320, - 12, - 320, - 23, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _Cg_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]], - _Cn_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], - _CB_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), - 0]], - _CI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 305, - 11, - 305, - 46, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 305, - 11, - 305, - 46, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CJ_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("personnes_\xc3\xa0_charge_prises_en_compte"), - 0]], - _CM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 322, - 12, - 322, - 61, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 322, - 12, - 322, - 61, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CN_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes - ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), - 0]], - _CQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 321, - 12, - 321, - 54, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 321, - 12, - 321, - 54, - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _CR_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes - ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), - 0]], - _CS_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 182, - 13, - 182, - 47, - [0, - caml_string_of_jsbytes("Article L822-3"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _CV_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 182, - 13, - 182, - 47, - [0, - caml_string_of_jsbytes("Article L822-3"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _CT_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 181, - 13, - 181, - 48, - [0, - caml_string_of_jsbytes("Article L822-3"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _CU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 181, - 13, - 181, - 48, - [0, - caml_string_of_jsbytes("Article L822-3"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _z5_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3178, - 14, - 3178, - 36, - [0, - caml_string_of_jsbytes("Article D832-10"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _z1_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("input"),0]]], - _z2_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _z3_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("output"),0]]], - _z4_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _z6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 716, - 10, - 716, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _z0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 716, - 10, - 716, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zX_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3085, - 14, - 3085, - 33, - [0, - caml_string_of_jsbytes("Article D832-10"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _zT_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3158, - 14, - 3158, - 36, - [0, - caml_string_of_jsbytes("Article D832-10"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _zL_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("input"),0]]], - _zM_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _zN_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("output"),0]]], - _zO_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _zP_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _zQ_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _zR_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _zS_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _zU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 715, - 10, - 715, - 40, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 715, - 10, - 715, - 40, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zH_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3213, - 14, - 3213, - 49, - [0, - caml_string_of_jsbytes("Article D832-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _zD_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3105, - 14, - 3105, - 33, - [0, - caml_string_of_jsbytes("Article D832-10"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _zz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3144, - 14, - 3144, - 36, - [0, - caml_string_of_jsbytes("Article D832-10"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _zr_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _zs_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _zt_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _zu_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _zv_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), - [0,caml_string_of_jsbytes("input"),0]]], - _zw_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), - 0]], - _zx_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), - [0,caml_string_of_jsbytes("output"),0]]], - _zy_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), - 0]], - _zA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 714, - 10, - 714, - 20, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 714, - 10, - 714, - 20, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zn_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3210, - 14, - 3210, - 49, - [0, - caml_string_of_jsbytes("Article D832-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _zi_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3426, - 5, - 3438, - 77, - [0, - caml_string_of_jsbytes("Article D832-15"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _zj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 680, - 12, - 680, - 31, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zg_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3481, - 5, - 3481, - 75, - [0, - caml_string_of_jsbytes("Article D832-15"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _zh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 680, - 12, - 680, - 31, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _y$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 1290, - 14, - 1290, - 42, - [0, - caml_string_of_jsbytes("Article 24"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _za_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 683, - 10, - 683, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _y__= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 497, - 14, - 497, - 42, - [0, - caml_string_of_jsbytes("Article 24"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _zb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 683, - 10, - 683, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _y9_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2393, - 14, - 2393, - 42, - [0, - caml_string_of_jsbytes("Article 24"), - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _zc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 683, - 10, - 683, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _y5_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3553, - 14, - 3553, - 55, - [0, - caml_string_of_jsbytes("Article D832-17"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _y1_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"), - [0,caml_string_of_jsbytes("input"),0]]], - _y2_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]], - _y3_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"), - [0,caml_string_of_jsbytes("output"),0]]], - _y4_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]], - _y6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 691, - 11, - 691, - 52, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _y0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 691, - 11, - 691, - 52, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yX_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3194, - 14, - 3194, - 49, - [0, - caml_string_of_jsbytes("Article D832-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yR_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3489, - 14, - 3489, - 70, - [0, - caml_string_of_jsbytes("Article D832-15"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3486, - 14, - 3486, - 69, - [0, - caml_string_of_jsbytes("Article D832-15"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yJ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3487, - 14, - 3487, - 75, - [0, - caml_string_of_jsbytes("Article D832-15"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yE_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3366, - 5, - 3366, - 44, - [0, - caml_string_of_jsbytes("Article D832-14"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yw_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - [0,caml_string_of_jsbytes("input"),0]]], - _yx_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - 0]], - _yy_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - [0,caml_string_of_jsbytes("output"),0]]], - _yz_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - 0]], - _yA_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - [0,caml_string_of_jsbytes("input"),0]]], - _yB_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - 0]], - _yC_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - [0,caml_string_of_jsbytes("output"),0]]], - _yD_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - 0]], - _yF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 682, - 10, - 682, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yv_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3346, - 14, - 3346, - 42, - [0, - caml_string_of_jsbytes("Article D832-14"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yr_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - [0,caml_string_of_jsbytes("input"),0]]], - _ys_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - 0]], - _yt_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - [0,caml_string_of_jsbytes("output"),0]]], - _yu_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - 0]], - _ym_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3531, - 5, - 3531, - 40, - [0, - caml_string_of_jsbytes("Article D832-17"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 690, - 11, - 690, - 41, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yl_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3542, - 14, - 3542, - 44, - [0, - caml_string_of_jsbytes("Article D832-17"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 690, - 11, - 690, - 41, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 690, - 11, - 690, - 41, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yh_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3279, - 14, - 3279, - 36, - [0, - caml_string_of_jsbytes("Article D832-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yb_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 806, - 5, - 821, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _yc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _x__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1061, - 5, - 1065, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _x$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _x8_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1094, - 5, - 1098, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _x9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _x6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1127, - 5, - 1131, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _x7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _x4_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1160, - 5, - 1164, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _x5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _x2_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1193, - 5, - 1197, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _x3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _x0_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1226, - 5, - 1230, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _x1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xY_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1259, - 5, - 1263, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xW_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1292, - 5, - 1296, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1325, - 5, - 1329, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xS_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1358, - 5, - 1362, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xQ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1391, - 5, - 1395, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1424, - 5, - 1428, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xM_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1457, - 5, - 1461, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xK_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1490, - 5, - 1494, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xI_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1523, - 5, - 1527, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xG_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1556, - 5, - 1560, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xE_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1589, - 5, - 1593, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xC_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1622, - 5, - 1626, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xA_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1655, - 5, - 1659, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xy_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1688, - 5, - 1692, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xw_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1721, - 5, - 1725, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xu_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1754, - 5, - 1758, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xs_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1787, - 5, - 1791, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xq_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1820, - 5, - 1824, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xo_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1853, - 5, - 1857, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xm_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1886, - 5, - 1890, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xk_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1919, - 5, - 1923, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xi_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1952, - 5, - 1956, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xg_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 1985, - 5, - 1989, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xe_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2018, - 5, - 2022, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2051, - 5, - 2055, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _xa_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2084, - 5, - 2088, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _xb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _w__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2117, - 5, - 2121, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _w$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _w8_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2150, - 5, - 2154, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _w9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _w6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2183, - 5, - 2187, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _w7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _w4_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2216, - 5, - 2220, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _w5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _w2_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2249, - 5, - 2252, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _w3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _w0_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2281, - 5, - 2284, - 36, - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]], - _w1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _ya_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wX_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 618, - 5, - 621, - 33, - [0, - caml_string_of_jsbytes("Article 17"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _wY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wV_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 662, - 5, - 665, - 33, - [0, - caml_string_of_jsbytes("Article 17"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _wW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wT_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 707, - 5, - 709, - 33, - [0, - caml_string_of_jsbytes("Article 17"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _wU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wR_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 750, - 5, - 752, - 33, - [0, - caml_string_of_jsbytes("Article 17"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _wS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 3, - 684, - 76, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _ye_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 684, - 11, - 684, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3595, - 5, - 3595, - 28, - [0, - caml_string_of_jsbytes("Article D832-18"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _wM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 693, - 11, - 693, - 41, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wK_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3587, - 14, - 3587, - 44, - [0, - caml_string_of_jsbytes("Article D832-18"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _wG_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3130, - 14, - 3130, - 36, - [0, - caml_string_of_jsbytes("Article D832-10"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _wH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 713, - 10, - 713, - 32, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 713, - 10, - 713, - 32, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wA_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2412, - 7, - 2412, - 18, - [0, - caml_string_of_jsbytes("Article 24"), - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _wB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 694, - 11, - 694, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 517, - 7, - 517, - 18, - [0, - caml_string_of_jsbytes("Article 24"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _wz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 694, - 11, - 694, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _ww_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 1310, - 7, - 1310, - 18, - [0, - caml_string_of_jsbytes("Article 24"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _wx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 694, - 11, - 694, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 694, - 11, - 694, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wt_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2333, - 29, - 2333, - 64, - [0, - caml_string_of_jsbytes("Article 19"), - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _wu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 694, - 11, - 694, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 483, - 29, - 483, - 64, - [0, - caml_string_of_jsbytes("Article 19"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _ws_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 694, - 11, - 694, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 1276, - 29, - 1276, - 64, - [0, - caml_string_of_jsbytes("Article 19"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _wq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 694, - 11, - 694, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 694, - 11, - 694, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 719, - 14, - 719, - 50, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wf_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2439, - 14, - 2439, - 50, - [0, - caml_string_of_jsbytes("Article 25"), - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _v$_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3283, - 14, - 3283, - 64, - [0, - caml_string_of_jsbytes("Article D832-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _v7_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3281, - 14, - 3281, - 59, - [0, - caml_string_of_jsbytes("Article D832-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _v3_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/autres_sources.catala_fr"), - 328, - 14, - 328, - 36, - [0, - caml_string_of_jsbytes("Article premier"), - [0, - caml_string_of_jsbytes - ("R\xc3\xa8glement (CE) n\xc2\xb02866/98 du conseil du 31 d\xc3\xa9cembre 1998 concernant les taux de conversion entre l'euro et les monnaies des \xc3\x89tats membres adoptant l'euro"), - 0]]], - _vZ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2381, - 14, - 2381, - 47, - [0, - caml_string_of_jsbytes("Article 23"), - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _vV_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2380, - 14, - 2380, - 47, - [0, - caml_string_of_jsbytes("Article 23"), - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _vR_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2379, - 14, - 2379, - 47, - [0, - caml_string_of_jsbytes("Article 23"), - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _vN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2457, - 14, - 2457, - 48, - [0, - caml_string_of_jsbytes("Article 26"), - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _vJ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2364, - 15, - 2364, - 49, - [0, - caml_string_of_jsbytes("Article 22"), - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _vF_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2355, - 14, - 2355, - 42, - [0, - caml_string_of_jsbytes("Article 21"), - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _vB_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2344, - 14, - 2344, - 41, - [0, - caml_string_of_jsbytes("Article 20"), - [0, - caml_string_of_jsbytes("Article 18"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _vC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 695, - 11, - 695, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 695, - 11, - 695, - 38, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vD_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("montant_forfaitaire_d832_10"),0]], - _vG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 696, - 11, - 696, - 39, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 696, - 11, - 696, - 39, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vH_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("montant_minimal_aide_d832_10"),0]], - _vK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 698, - 11, - 698, - 45, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 698, - 11, - 698, - 45, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vL_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_11"),0]], - _vO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 699, - 11, - 699, - 45, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 699, - 11, - 699, - 45, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vP_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_18"),0]], - _vS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 700, - 11, - 700, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 700, - 11, - 700, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vT_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("montant_limite_tranches_d832_15_1"),0]], - _vW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 701, - 11, - 701, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 701, - 11, - 701, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vX_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("taux_tranche_inf\xc3\xa9rieure_d832_15_1"), - 0]], - _v0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 702, - 11, - 702, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 702, - 11, - 702, - 44, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _v1_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("taux_tranche_sup\xc3\xa9rieure_d832_15_1"), - 0]], - _v4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 703, - 11, - 703, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _v2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 703, - 11, - 703, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _v5_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("taux_francs_vers_euros"),0]], - _v8_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3281, - 14, - 3281, - 59, - [0, - caml_string_of_jsbytes("Article D832-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _v9_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"), - 0]], - _v6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3281, - 14, - 3281, - 59, - [0, - caml_string_of_jsbytes("Article D832-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _wa_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3283, - 14, - 3283, - 64, - [0, - caml_string_of_jsbytes("Article D832-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _wb_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_nombre_parts.situation_familiale_calcul_apl"), - 0]], - _v__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3283, - 14, - 3283, - 64, - [0, - caml_string_of_jsbytes("Article D832-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _wc_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts"), - [0, - caml_string_of_jsbytes - ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), - 0]]], - _wd_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts"), - [0, - caml_string_of_jsbytes - ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), - 0]]], - _wg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 697, - 11, - 697, - 47, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _we_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 697, - 11, - 697, - 47, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wh_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_17_3"),0]], - _wk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 719, - 14, - 719, - 50, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wl_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], - _wi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 719, - 14, - 719, - 50, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wm_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _wn_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _wD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 694, - 11, - 694, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 694, - 11, - 694, - 46, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wE_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("montant_forfaitaire_charges_d832_10"),0]], - _wI_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _wN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 693, - 11, - 693, - 41, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 693, - 11, - 693, - 41, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _wO_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("ressources_m\xc3\xa9nage_avec_d832_18"),0]], - _yf_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), - 0]], - _yi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 685, - 11, - 685, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 685, - 11, - 685, - 33, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yj_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("n_nombre_parts_d832_11"),0]], - _yp_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]], - _yG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 682, - 10, - 682, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 682, - 10, - 682, - 14, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yH_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("plafond_mensualit\xc3\xa9_d832_10_3_base"), - 0]], - _yK_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3487, - 14, - 3487, - 75, - [0, - caml_string_of_jsbytes("Article D832-15"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yL_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _yI_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3487, - 14, - 3487, - 75, - [0, - caml_string_of_jsbytes("Article D832-15"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3486, - 14, - 3486, - 69, - [0, - caml_string_of_jsbytes("Article D832-15"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yP_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"), - 0]], - _yM_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3486, - 14, - 3486, - 69, - [0, - caml_string_of_jsbytes("Article D832-15"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yS_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3489, - 14, - 3489, - 70, - [0, - caml_string_of_jsbytes("Article D832-15"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yT_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"), - 0]], - _yQ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3489, - 14, - 3489, - 70, - [0, - caml_string_of_jsbytes("Article D832-15"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _yU_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], - _yV_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], - _yY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 687, - 10, - 687, - 17, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 687, - 10, - 687, - 17, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _yZ_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("coefficient_prise_en_charge_d832_10_formule"), - 0]], - _y7_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), - 0]], - _zd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 683, - 10, - 683, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _y8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 683, - 10, - 683, - 25, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _ze_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("plafond_mensualit\xc3\xa9_d832_10_3_copropri\xc3\xa9taires"), - 0]], - _zk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 680, - 12, - 680, - 31, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 680, - 12, - 680, - 31, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zl_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("mensualit\xc3\xa9_minimale"),0]], - _zo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 688, - 10, - 688, - 23, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 688, - 10, - 688, - 23, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zp_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("coefficient_prise_en_charge_d832_10_coeff_arrondi"), - 0]], - _zB_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _zE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 679, - 12, - 679, - 31, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 679, - 12, - 679, - 31, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zF_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("mensualit\xc3\xa9_\xc3\xa9ligible"),0]], - _zI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 689, - 10, - 689, - 15, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 689, - 10, - 689, - 15, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zJ_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes("coefficient_prise_en_charge_d832_10_seuil"), - 0]], - _zV_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _zY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 711, - 12, - 711, - 31, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 711, - 12, - 711, - 31, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _zZ_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("aide_finale_formule"),0]], - _z7_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _vx_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3832, - 14, - 3832, - 36, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _vt_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("input"),0]]], - _vu_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _vv_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("output"),0]]], - _vw_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _vy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 646, - 10, - 646, - 25, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vs_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 646, - 10, - 646, - 25, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vp_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3736, - 14, - 3736, - 33, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _vl_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3811, - 14, - 3811, - 36, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _vd_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("input"),0]]], - _ve_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _vf_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_abattement"), - [0,caml_string_of_jsbytes("output"),0]]], - _vg_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _vh_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _vi_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _vj_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _vk_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _vm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 645, - 10, - 645, - 40, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 645, - 10, - 645, - 40, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _u__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3976, - 5, - 3976, - 26, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _u$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 639, - 10, - 639, - 15, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _u9_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3889, - 14, - 3889, - 49, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _u5_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3797, - 14, - 3797, - 36, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _uX_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _uY_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _uZ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _u0_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _u1_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), - [0,caml_string_of_jsbytes("input"),0]]], - _u2_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), - 0]], - _u3_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), - [0,caml_string_of_jsbytes("output"),0]]], - _u4_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), - 0]], - _u6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 644, - 10, - 644, - 20, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 644, - 10, - 644, - 20, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uS_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3970, - 5, - 3970, - 26, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _uT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 638, - 10, - 638, - 23, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uR_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3886, - 14, - 3886, - 49, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _uN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3769, - 14, - 3769, - 40, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _uJ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4141, - 14, - 4141, - 55, - [0, - caml_string_of_jsbytes("Article D832-27"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _uF_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"), - [0,caml_string_of_jsbytes("input"),0]]], - _uG_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]], - _uH_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"), - [0,caml_string_of_jsbytes("output"),0]]], - _uI_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]], - _uK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 622, - 11, - 622, - 52, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 622, - 11, - 622, - 52, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uA_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3953, - 5, - 3953, - 26, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _uB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 637, - 10, - 637, - 17, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3865, - 14, - 3865, - 49, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _ut_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3775, - 14, - 3775, - 70, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _up_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3771, - 14, - 3771, - 69, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _ul_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3773, - 14, - 3773, - 75, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _uh_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4137, - 14, - 4137, - 44, - [0, - caml_string_of_jsbytes("Article D832-27"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _ui_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 624, - 11, - 624, - 41, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _ug_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 624, - 11, - 624, - 41, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3941, - 14, - 3941, - 36, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _ud_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 619, - 21, - 619, - 43, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _t__= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3757, - 14, - 3757, - 40, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _t6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2575, - 14, - 2575, - 48, - [0, - caml_string_of_jsbytes("Article 30"), - [0, - caml_string_of_jsbytes - ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _t2_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2714, - 14, - 2714, - 41, - [0, - caml_string_of_jsbytes("Article 32"), - [0, - caml_string_of_jsbytes - ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _tW_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3937, - 14, - 3937, - 64, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tS_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3935, - 14, - 3935, - 59, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3939, - 14, - 3939, - 55, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tK_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3783, - 14, - 3783, - 36, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 643, - 10, - 643, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 643, - 10, - 643, - 32, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tF_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2486, - 14, - 2486, - 48, - [0, - caml_string_of_jsbytes("Article 27"), - [0, - caml_string_of_jsbytes - ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _tG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 621, - 12, - 621, - 46, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 552, - 14, - 552, - 48, - [0, - caml_string_of_jsbytes("Article 27"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _tE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 621, - 12, - 621, - 46, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 1347, - 14, - 1347, - 48, - [0, - caml_string_of_jsbytes("Article 27"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _tC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 621, - 12, - 621, - 46, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 649, - 14, - 649, - 50, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tq_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3850, - 14, - 3850, - 35, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 615, - 12, - 615, - 33, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tm_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2551, - 14, - 2551, - 42, - [0, - caml_string_of_jsbytes("Article 29"), - [0, - caml_string_of_jsbytes - ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _ti_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2540, - 14, - 2540, - 41, - [0, - caml_string_of_jsbytes("Article 28"), - [0, - caml_string_of_jsbytes - ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _te_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2565, - 14, - 2565, - 35, - [0, - caml_string_of_jsbytes("Article 30"), - [0, - caml_string_of_jsbytes - ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _tf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 618, - 12, - 618, - 33, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _td_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 618, - 12, - 618, - 33, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tg_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("coefficient_r_d832_25"),0]], - _tj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 625, - 11, - 625, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _th_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 625, - 11, - 625, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tk_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("montant_forfaitaire_d832_24"),0]], - _tn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 627, - 11, - 627, - 39, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 627, - 11, - 627, - 39, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _to_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("montant_minimal_aide_d823_24"),0]], - _ts_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 615, - 12, - 615, - 33, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 615, - 12, - 615, - 33, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tt_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("condition_2_du_832_25"),0]], - _tw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 649, - 14, - 649, - 50, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tx_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], - _tu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 649, - 14, - 649, - 50, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _ty_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _tz_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _tH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 621, - 12, - 621, - 46, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 621, - 12, - 621, - 46, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _tI_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("plafond_\xc3\xa9quivalence_loyer_\xc3\xa9ligible"), - 0]], - _tM_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _tP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3939, - 14, - 3939, - 55, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tQ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts.condition_2_du_832_25"), - 0]], - _tN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3939, - 14, - 3939, - 55, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tT_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3935, - 14, - 3935, - 59, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tU_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"), - 0]], - _tR_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3935, - 14, - 3935, - 59, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tX_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3937, - 14, - 3937, - 64, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tY_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_nombre_parts.situation_familiale_calcul_apl"), - 0]], - _tV_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3937, - 14, - 3937, - 64, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tZ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts"), - [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]], - _t0_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_nombre_parts"), - [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]], - _t3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 626, - 11, - 626, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _t1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 626, - 11, - 626, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _t4_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("montant_forfaitaire_d832_27"),0]], - _t7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 617, - 12, - 617, - 46, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _t5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 617, - 12, - 617, - 46, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _t8_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_25"),0]], - _t$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 620, - 12, - 620, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _t9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 620, - 12, - 620, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _ua_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_\xc3\xa9ligible"), - 0]], - _ue_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 619, - 21, - 619, - 43, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _ub_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 619, - 21, - 619, - 43, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uf_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("n_nombre_parts_d832_25"),0]], - _uj_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]], - _um_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3773, - 14, - 3773, - 75, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _un_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"), - 0]], - _uk_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3773, - 14, - 3773, - 75, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _uq_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3771, - 14, - 3771, - 69, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _ur_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"), - 0]], - _uo_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3771, - 14, - 3771, - 69, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _uu_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3775, - 14, - 3775, - 70, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _uv_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"), - 0]], - _us_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3775, - 14, - 3775, - 70, - [0, - caml_string_of_jsbytes("Article D832-24"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _uw_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], - _ux_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], - _uC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 637, - 10, - 637, - 17, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 637, - 10, - 637, - 17, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uD_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("coefficient_prise_en_charge_d832_25_formule"), - 0]], - _uL_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), - 0]], - _uO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 628, - 12, - 628, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 628, - 12, - 628, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uP_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_minimale"),0]], - _uU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 638, - 10, - 638, - 23, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 638, - 10, - 638, - 23, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _uV_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("coefficient_prise_en_charge_d832_25_coeff_arrondi"), - 0]], - _u7_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], - _va_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 639, - 10, - 639, - 15, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _u8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 639, - 10, - 639, - 15, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vb_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes("coefficient_prise_en_charge_d832_25_seuil"), - 0]], - _vn_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _vq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 641, - 12, - 641, - 31, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 641, - 12, - 641, - 31, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _vr_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("aide_finale_formule"),0]], - _vz_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _s8_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1788, - 14, - 1788, - 33, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _s4_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1931, - 14, - 1931, - 39, - [0, - caml_string_of_jsbytes("Article D823-17"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _s0_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1914, - 14, - 1914, - 36, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _sW_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - [0,caml_string_of_jsbytes("input"),0]]], - _sX_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - 0]], - _sY_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - [0,caml_string_of_jsbytes("output"),0]]], - _sZ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - 0]], - _s1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 577, - 10, - 577, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 577, - 10, - 577, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sS_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1965, - 14, - 1965, - 42, - [0, - caml_string_of_jsbytes("Article D823-17"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _sO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 807, - 14, - 807, - 36, - [0, - caml_string_of_jsbytes("Article L832-3"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _sK_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("input"),0]]], - _sL_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _sM_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - [0,caml_string_of_jsbytes("output"),0]]], - _sN_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _sP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 576, - 10, - 576, - 36, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 576, - 10, - 576, - 36, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 1134, - 14, - 1134, - 33, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _sE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 550, - 10, - 550, - 22, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 341, - 14, - 341, - 33, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _sF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 550, - 10, - 550, - 22, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sB_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 414, - 14, - 414, - 33, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _sG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 550, - 10, - 550, - 22, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sx_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1882, - 14, - 1882, - 36, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _sp_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("input"),0]]], - _sq_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _sr_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - [0,caml_string_of_jsbytes("output"),0]]], - _ss_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _st_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("input"),0]]], - _su_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _sv_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0, - caml_string_of_jsbytes("montant"), - [0,caml_string_of_jsbytes("output"),0]]], - _sw_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _sy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 575, - 10, - 575, - 40, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _so_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 575, - 10, - 575, - 40, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _si_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 1127, - 14, - 1127, - 33, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _sj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 549, - 10, - 549, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 334, - 14, - 334, - 33, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _sk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 549, - 10, - 549, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sg_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 407, - 14, - 407, - 33, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _sl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 549, - 10, - 549, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1865, - 14, - 1865, - 36, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _r__= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"), - [0,caml_string_of_jsbytes("input"),0]]], - _r$_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]], - _sa_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"), - [0,caml_string_of_jsbytes("output"),0]]], - _sb_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]], - _sd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 574, - 10, - 574, - 32, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _r9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 574, - 10, - 574, - 32, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _r3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 1103, - 14, - 1103, - 28, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _r4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 551, - 11, - 551, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _r2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 307, - 14, - 307, - 28, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _r5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 551, - 11, - 551, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _r1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 381, - 14, - 381, - 28, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _r6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 551, - 11, - 551, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rW_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 302, - 14, - 302, - 36, - [0, - caml_string_of_jsbytes("Article 13"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _rX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 563, - 12, - 563, - 34, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 228, - 14, - 228, - 36, - [0, - caml_string_of_jsbytes("Article 13"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _rV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 563, - 12, - 563, - 34, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 1024, - 14, - 1024, - 36, - [0, - caml_string_of_jsbytes("Article 13"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _rT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 563, - 12, - 563, - 34, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1855, - 5, - 1855, - 50, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _rO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 573, - 10, - 573, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rM_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1841, - 14, - 1841, - 36, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _rP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 573, - 10, - 573, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 573, - 10, - 573, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rI_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1806, - 14, - 1806, - 28, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _rE_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 253, - 14, - 253, - 42, - [0, - caml_string_of_jsbytes("Article 10"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _rA_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 259, - 14, - 259, - 41, - [0, - caml_string_of_jsbytes("Article 10"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _rw_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4211, - 14, - 4211, - 29, - [0, - caml_string_of_jsbytes("Article D842-2"), - [0, - caml_string_of_jsbytes("Section 1 : Secteur locatif ordinaire"), - [0, - caml_string_of_jsbytes - ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), - [0, - caml_string_of_jsbytes("Titre IV : Allocations de Logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _rq_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 572, - 29, - 572, - 64, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _rr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 561, - 12, - 561, - 47, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _ro_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 450, - 29, - 450, - 64, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _rp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 561, - 12, - 561, - 47, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 1241, - 29, - 1241, - 64, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _rn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 561, - 12, - 561, - 47, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rs_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 561, - 12, - 561, - 47, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rj_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 230, - 29, - 230, - 64, - [0, - caml_string_of_jsbytes("Article 9"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _rk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 561, - 12, - 561, - 47, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rh_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 214, - 29, - 214, - 64, - [0, - caml_string_of_jsbytes("Article 9"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _ri_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 561, - 12, - 561, - 47, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 1010, - 29, - 1010, - 64, - [0, - caml_string_of_jsbytes("Article 9"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _rg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 561, - 12, - 561, - 47, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 561, - 12, - 561, - 47, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _q$_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 529, - 5, - 530, - 34, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _ra_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _q9_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 538, - 5, - 539, - 34, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _q__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _q7_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 547, - 5, - 547, - 35, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _q8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _q5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 406, - 5, - 407, - 34, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _q6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _q3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 415, - 5, - 416, - 34, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _q4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _q1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 424, - 5, - 424, - 35, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _q2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qZ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 1197, - 5, - 1198, - 34, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _q0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 1206, - 5, - 1207, - 34, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _qY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 1215, - 5, - 1215, - 35, - [0, - caml_string_of_jsbytes("Article 16"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _qW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qR_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 195, - 5, - 195, - 61, - [0, - caml_string_of_jsbytes("Article 8"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _qS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qP_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 179, - 5, - 179, - 61, - [0, - caml_string_of_jsbytes("Article 8"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _qQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 975, - 5, - 975, - 61, - [0, - caml_string_of_jsbytes("Article 8"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _qO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qK_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 188, - 14, - 188, - 37, - [0, - caml_string_of_jsbytes("Article 8"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _qL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 172, - 14, - 172, - 37, - [0, - caml_string_of_jsbytes("Article 8"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _qJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 968, - 14, - 968, - 37, - [0, - caml_string_of_jsbytes("Article 8"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _qH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qD_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 104, - 5, - 105, - 34, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _qE_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qB_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 114, - 5, - 115, - 34, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _qC_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 124, - 5, - 124, - 35, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _qA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 87, - 5, - 88, - 34, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _qy_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 97, - 5, - 98, - 34, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _qw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 107, - 5, - 107, - 35, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _qu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qr_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 884, - 5, - 885, - 34, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _qs_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 894, - 5, - 895, - 34, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _qq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 904, - 5, - 904, - 35, - [0, - caml_string_of_jsbytes("Article 7"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _qo_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qj_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 286, - 14, - 286, - 42, - [0, - caml_string_of_jsbytes("Article 12"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _qd_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 359, - 14, - 359, - 29, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _qe_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 552, - 11, - 552, - 26, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 431, - 14, - 431, - 29, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _qf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 552, - 11, - 552, - 26, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qa_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 1152, - 14, - 1152, - 29, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _qb_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 552, - 11, - 552, - 26, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _p7_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 467, - 14, - 467, - 44, - [0, - caml_string_of_jsbytes("Article 15"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _p8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 558, - 11, - 558, - 41, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _p5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 27, - 14, - 27, - 44, - [0, - caml_string_of_jsbytes("Article 15"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er juillet 2022 au 31 d\xc3\xa9cembre 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _p6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 558, - 11, - 558, - 41, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _p3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 822, - 14, - 822, - 44, - [0, - caml_string_of_jsbytes("Article 15"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er janvier 2022 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _p4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 558, - 11, - 558, - 41, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _p1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 1418, - 14, - 1418, - 44, - [0, - caml_string_of_jsbytes("Article 15"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er janvier 2020 au 31 d\xc3\xa9cembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _p2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 558, - 11, - 558, - 41, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pU_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 1069, - 14, - 1069, - 40, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]]], - _pV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 564, - 12, - 564, - 38, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), - 273, - 14, - 273, - 40, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Articles valables du 1er octobre 2021 au 30 juin 2022"), - [0, - caml_string_of_jsbytes - ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _pW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 564, - 12, - 564, - 38, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pS_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 348, - 14, - 348, - 40, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _pX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 564, - 12, - 564, - 38, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 580, - 14, - 580, - 50, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pI_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 274, - 14, - 274, - 41, - [0, - caml_string_of_jsbytes("Article 11"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _pE_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1905, - 14, - 1905, - 29, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _pF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 553, - 11, - 553, - 26, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 553, - 11, - 553, - 26, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pG_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("fraction_l832_3"),0]], - _pJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 556, - 11, - 556, - 38, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 556, - 11, - 556, - 38, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pK_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("montant_forfaitaire_d823_16"),0]], - _pN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 580, - 14, - 580, - 50, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pO_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], - _pL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 580, - 14, - 580, - 50, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pP_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _pQ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("contributions_sociales"), - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement"), - 0]]], - _pY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 564, - 12, - 564, - 38, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 564, - 12, - 564, - 38, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _pZ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("taux_composition_familiale"),0]], - _p9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 558, - 11, - 558, - 41, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _p0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 558, - 11, - 558, - 41, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _p__= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("abattement_forfaitaire_d823_17"),0]], - _qg_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 552, - 11, - 552, - 26, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _p$_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 552, - 11, - 552, - 26, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qh_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("loyer_r\xc3\xa9f\xc3\xa9rence"),0]], - _qk_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 557, - 11, - 557, - 39, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qi_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 557, - 11, - 557, - 39, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _ql_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("montant_minimal_aide_d823_16"),0]], - _rc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _qm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 562, - 12, - 562, - 35, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rd_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("plafond_loyer_d823_16_2"),0]], - _rt_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 561, - 12, - 561, - 47, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _re_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 561, - 12, - 561, - 47, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _ru_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("montant_forfaitaire_charges_d823_16"),0]], - _rx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 531, - 10, - 531, - 31, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rv_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 531, - 10, - 531, - 31, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _ry_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("loyer_principal_avec_r\xc3\xa9duction_meubl\xc3\xa9"), - 0]], - _rB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 555, - 11, - 555, - 38, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 555, - 11, - 555, - 38, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rC_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("plafond_suppression_d823_16"),0]], - _rF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 554, - 11, - 554, - 39, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 554, - 11, - 554, - 39, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rG_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes("plafond_d\xc3\xa9gressivit\xc3\xa9_d823_16"), - 0]], - _rJ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 547, - 11, - 547, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 547, - 11, - 547, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rK_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("loyer_\xc3\xa9ligible"),0]], - _rQ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]], - _rY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 563, - 12, - 563, - 34, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 563, - 12, - 563, - 34, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _rZ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("participation_minimale"),0]], - _r7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 551, - 11, - 551, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _r0_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 551, - 11, - 551, - 25, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _r8_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("rapport_loyers"),0]], - _se_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_minoration_forfaitaire"), - 0]], - _sm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 549, - 10, - 549, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sf_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 549, - 10, - 549, - 17, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sn_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("taux_loyer_\xc3\xa9ligible_formule"),0]], - _sz_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_contributions_sociales_arrondi"), - 0]], - _sH_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 550, - 10, - 550, - 22, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sA_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 550, - 10, - 550, - 22, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sI_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("taux_loyer_\xc3\xa9ligible_taux_arrondi"),0]], - _sQ_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0, - caml_string_of_jsbytes - ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), - 0]], - _sT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 559, - 11, - 559, - 39, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 559, - 11, - 559, - 39, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _sU_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("taux_prise_compte_ressources"),0]], - _s2_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], - _s5_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 565, - 12, - 565, - 37, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _s3_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 565, - 12, - 565, - 37, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _s6_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("participation_personnelle"),0]], - _s9_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 570, - 12, - 570, - 31, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _s7_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 570, - 12, - 570, - 31, - [0, - caml_string_of_jsbytes("Secteur locatif"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _s__= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - [0,caml_string_of_jsbytes("aide_finale_formule"),0]], - _s$_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1858, - 13, - 1858, - 74, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _tc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 1858, - 13, - 1858, - 74, - [0, - caml_string_of_jsbytes("Article D823-16"), - [0, - caml_string_of_jsbytes - ("Sous-section 2 : Calcul de l'aide en secteur locatif"), - [0, - caml_string_of_jsbytes - ("Section 1 : Calcul, liquidation et versement des aides"), - [0, - caml_string_of_jsbytes - ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _ta_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 817, - 13, - 817, - 61, - [0, - caml_string_of_jsbytes("Article L832-3"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _tb_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_legislatif.catala_fr"), - 817, - 13, - 817, - 61, - [0, - caml_string_of_jsbytes("Article L832-3"), - [0, - caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]], - _pr_=[7,0], - _ps_=[5,0], - _pt_=[4,0], - _pu_=[3,0], - _pv_=[2,0], - _pw_=[1,0], - _px_=[0,0], - _py_=[6,0], - _pz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 29, - 5, - 38, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _pA_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _po_=[8,0], - _pp_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 47, - 5, - 49, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _pq_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _pe_=[7,0], - _pf_=[5,0], - _pg_=[4,0], - _ph_=[3,0], - _pi_=[2,0], - _pj_=[1,0], - _pk_=[0,0], - _pl_=[6,0], - _pm_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 68, - 5, - 77, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _pn_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _pb_=[8,0], - _pc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 86, - 5, - 88, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _pd_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _o3_=[7,0], - _o4_=[5,0], - _o5_=[4,0], - _o6_=[3,0], - _o7_=[2,0], - _o8_=[1,0], - _o9_=[0,0], - _o__=[6,0], - _o$_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 107, - 5, - 116, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _pa_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _o0_=[8,0], - _o1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 125, - 5, - 127, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _o2_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _oQ_=[7,0], - _oR_=[5,0], - _oS_=[4,0], - _oT_=[3,0], - _oU_=[2,0], - _oV_=[1,0], - _oW_=[0,0], - _oX_=[6,0], - _oY_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 146, - 5, - 155, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _oZ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _oN_=[8,0], - _oO_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 165, - 5, - 167, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _oP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _oD_=[7,0], - _oE_=[5,0], - _oF_=[4,0], - _oG_=[3,0], - _oH_=[2,0], - _oI_=[1,0], - _oJ_=[0,0], - _oK_=[6,0], - _oL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 186, - 5, - 195, - 6, - [0, - caml_string_of_jsbytes("Article 2"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _oM_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _oA_=[8,0], - _oB_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 204, - 5, - 206, - 6, - [0, - caml_string_of_jsbytes("Article 2"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _oC_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _oq_=[7,0], - _or_=[5,0], - _os_=[4,0], - _ot_=[3,0], - _ou_=[2,0], - _ov_=[1,0], - _ow_=[0,0], - _ox_=[6,0], - _oy_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 225, - 5, - 234, - 6, - [0, - caml_string_of_jsbytes("Article 2"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 29 juillet 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _oz_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _on_=[8,0], - _oo_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 243, - 5, - 245, - 6, - [0, - caml_string_of_jsbytes("Article 2"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 29 juillet 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _op_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _od_=[7,0], - _oe_=[5,0], - _of_=[4,0], - _og_=[3,0], - _oh_=[2,0], - _oi_=[1,0], - _oj_=[0,0], - _ok_=[6,0], - _ol_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 265, - 5, - 274, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2022-1608 du 22 d\xc3\xa9cembre 2022 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _om_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _oa_=[8,0], - _ob_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 283, - 5, - 285, - 6, - [0, - caml_string_of_jsbytes("Article 1"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9cret n\xc2\xb0 2022-1608 du 22 d\xc3\xa9cembre 2022 portant rel\xc3\xa8vement du salaire minimum de croissance"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]]], - _oc_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _pB_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _n$_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), - 11, - 12, - 11, - 24, - [0, - caml_string_of_jsbytes("Prologue"), - [0, - caml_string_of_jsbytes("Montant du salaire minimum de croissance"), - 0]]], - _pC_= - [0, - caml_string_of_jsbytes("Smic"), - [0,caml_string_of_jsbytes("brut_horaire"),0]], - _n7_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 28, - 5, - 29, - 33, - [0, - caml_string_of_jsbytes - ("Instruction minist\xc3\xa9rielle N\xc2\xb0DSS/SD2B/2019/65 du 25 mars 2019 relative \xc3\xa0 la revalorisation au 1er avril 2019 des prestations familiales servies en m\xc3\xa9tropole"), - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]]], - _n8_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 12, - 6, - 19, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _n5_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 48, - 5, - 49, - 33, - [0, - caml_string_of_jsbytes - ("Instruction interminist\xc3\xa9rielle no DSS/SD2B/2020/33 du 18 f\xc3\xa9vrier 2020 relative \xc3\xa0 la revalorisation au 1er avril 2020 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]]], - _n6_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 12, - 6, - 19, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _n3_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 64, - 5, - 65, - 33, - [0, - caml_string_of_jsbytes - ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2021/65 du 19 mars 2021 relative \xc3\xa0 la revalorisation au 1er avril 2021 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]]], - _n4_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 12, - 6, - 19, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _n1_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 82, - 5, - 83, - 33, - [0, - caml_string_of_jsbytes - ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2022/82 du 28 mars 2022 relative \xc3\xa0 la revalorisation au 1er avril 2022 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]]], - _n2_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 12, - 6, - 19, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _n9_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 12, - 6, - 19, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _n0_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), - 6, - 12, - 6, - 19, - [0, - caml_string_of_jsbytes - ("Montant de la base mensuelle des allocations familiales"), - 0]], - _n__= - [0, - caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"), - [0,caml_string_of_jsbytes("montant"),0]], - _nV_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2245, - 14, - 2245, - 28, - [0, - caml_string_of_jsbytes("Article R824-2"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _nW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1018, - 12, - 1018, - 26, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2182, - 14, - 2182, - 28, - [0, - caml_string_of_jsbytes("Article R824-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _nX_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1018, - 12, - 1018, - 26, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2187, - 20, - 2187, - 55, - [0, - caml_string_of_jsbytes("Article R824-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _nQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1013, - 11, - 1013, - 43, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nN_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2203, - 20, - 2203, - 51, - [0, - caml_string_of_jsbytes("Article R824-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _nO_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1013, - 11, - 1013, - 43, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nL_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2269, - 7, - 2269, - 42, - [0, - caml_string_of_jsbytes("Article R824-2"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _nM_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1013, - 11, - 1013, - 43, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nJ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2297, - 7, - 2297, - 51, - [0, - caml_string_of_jsbytes("Article R824-2"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _nK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1013, - 11, - 1013, - 43, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nE_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2226, - 14, - 2226, - 36, - [0, - caml_string_of_jsbytes("Article R824-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _nF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1016, - 11, - 1016, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nC_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2322, - 14, - 2322, - 36, - [0, - caml_string_of_jsbytes("Article R824-2"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _nD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1016, - 11, - 1016, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nw_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2313, - 14, - 2313, - 36, - [0, - caml_string_of_jsbytes("Article R824-2"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _nx_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1015, - 11, - 1015, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nv_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2217, - 14, - 2217, - 36, - [0, - caml_string_of_jsbytes("Article R824-1"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _ny_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1015, - 11, - 1015, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nr_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 2345, - 14, - 2345, - 36, - [0, - caml_string_of_jsbytes("Article R824-3"), - [0, - caml_string_of_jsbytes - ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), - [0, - caml_string_of_jsbytes - ("Titre II : Dispositions communes aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _nm_=[0,0], - _nn_=[1,0], - _no_=[1,0], - _np_=[0,0], - _nq_=[0,0], - _ns_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1014, - 11, - 1014, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nl_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1014, - 11, - 1014, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nt_= - [0, - caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), - [0,caml_string_of_jsbytes("mode_occupation_impay\xc3\xa9"),0]], - _nz_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1015, - 11, - 1015, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1015, - 11, - 1015, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nA_= - [0, - caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_logement_brute"),0]], - _nG_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1016, - 11, - 1016, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1016, - 11, - 1016, - 33, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nH_= - [0, - caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), - [0,caml_string_of_jsbytes("d\xc3\xa9pense_logement_nette"),0]], - _nR_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1013, - 11, - 1013, - 43, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nI_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1013, - 11, - 1013, - 43, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nS_= - [0, - caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), - [0, - caml_string_of_jsbytes - ("seuil_impay\xc3\xa9_d\xc3\xa9pense_de_logement"), - 0]], - _nY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1018, - 12, - 1018, - 26, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nT_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 1018, - 12, - 1018, - 26, - [0, - caml_string_of_jsbytes - ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nZ_= - [0, - caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), - [0,caml_string_of_jsbytes("montant_impay\xc3\xa9"),0]], - _nh_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 119, - 5, - 119, - 42, - [0, - caml_string_of_jsbytes("Article L161-17-2"), - [0, - caml_string_of_jsbytes - ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."), - [0, - caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), - [0, - caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Dispositions relatives aux prestations"), - [0, - caml_string_of_jsbytes - ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), - [0, - caml_string_of_jsbytes - ("Titre III: Titre III : Dispositions communes relatives au financement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]]]], - _ni_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 998, - 12, - 998, - 31, - [0, - caml_string_of_jsbytes - ("Date d'ouverture des droits \xc3\xa0 la retraite"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nf_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 256, - 5, - 256, - 41, - [0, - caml_string_of_jsbytes("Article D161-2-1-9"), - [0, - caml_string_of_jsbytes - ("Paragraphe 2 : Ouverture du droit et liquidation."), - [0, - caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), - [0, - caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Dispositions relatives aux prestations"), - [0, - caml_string_of_jsbytes - ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), - [0, - caml_string_of_jsbytes - ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]]]], - _ng_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 998, - 12, - 998, - 31, - [0, - caml_string_of_jsbytes - ("Date d'ouverture des droits \xc3\xa0 la retraite"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nd_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 266, - 5, - 267, - 42, - [0, - caml_string_of_jsbytes("Article D161-2-1-9"), - [0, - caml_string_of_jsbytes - ("Paragraphe 2 : Ouverture du droit et liquidation."), - [0, - caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), - [0, - caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Dispositions relatives aux prestations"), - [0, - caml_string_of_jsbytes - ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), - [0, - caml_string_of_jsbytes - ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]]]], - _ne_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 998, - 12, - 998, - 31, - [0, - caml_string_of_jsbytes - ("Date d'ouverture des droits \xc3\xa0 la retraite"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nb_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 276, - 5, - 276, - 48, - [0, - caml_string_of_jsbytes("Article D161-2-1-9"), - [0, - caml_string_of_jsbytes - ("Paragraphe 2 : Ouverture du droit et liquidation."), - [0, - caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), - [0, - caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Dispositions relatives aux prestations"), - [0, - caml_string_of_jsbytes - ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), - [0, - caml_string_of_jsbytes - ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]]]], - _nc_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 998, - 12, - 998, - 31, - [0, - caml_string_of_jsbytes - ("Date d'ouverture des droits \xc3\xa0 la retraite"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _m$_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 285, - 5, - 285, - 48, - [0, - caml_string_of_jsbytes("Article D161-2-1-9"), - [0, - caml_string_of_jsbytes - ("Paragraphe 2 : Ouverture du droit et liquidation."), - [0, - caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), - [0, - caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Dispositions relatives aux prestations"), - [0, - caml_string_of_jsbytes - ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), - [0, - caml_string_of_jsbytes - ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]]]], - _na_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 998, - 12, - 998, - 31, - [0, - caml_string_of_jsbytes - ("Date d'ouverture des droits \xc3\xa0 la retraite"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _m9_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 294, - 5, - 294, - 48, - [0, - caml_string_of_jsbytes("Article D161-2-1-9"), - [0, - caml_string_of_jsbytes - ("Paragraphe 2 : Ouverture du droit et liquidation."), - [0, - caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), - [0, - caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), - [0, - caml_string_of_jsbytes - ("Chapitre 1er : Dispositions relatives aux prestations"), - [0, - caml_string_of_jsbytes - ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), - [0, - caml_string_of_jsbytes - ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), - [0, - caml_string_of_jsbytes - ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]]]]], - _m__= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 998, - 12, - 998, - 31, - [0, - caml_string_of_jsbytes - ("Date d'ouverture des droits \xc3\xa0 la retraite"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nj_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 998, - 12, - 998, - 31, - [0, - caml_string_of_jsbytes - ("Date d'ouverture des droits \xc3\xa0 la retraite"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _m8_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 998, - 12, - 998, - 31, - [0, - caml_string_of_jsbytes - ("Date d'ouverture des droits \xc3\xa0 la retraite"), - [0, - caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _nk_= - [0, - caml_string_of_jsbytes("OuvertureDroitsRetraite"), - [0,caml_string_of_jsbytes("\xc3\xa2ge_ouverture_droit"),0]], - _m5_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3260, - 14, - 3260, - 36, - [0, - caml_string_of_jsbytes("Article D832-11"), - [0, - caml_string_of_jsbytes - ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]], - _m6_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 659, - 12, - 659, - 34, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _m4_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 659, - 12, - 659, - 34, - [0, - caml_string_of_jsbytes - ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _m7_= - [0, - caml_string_of_jsbytes - ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), - [0,caml_string_of_jsbytes("n_nombre_parts_d832_11"),0]], - _m0_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4003, - 5, - 4003, - 26, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _m1_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 603, - 12, - 603, - 34, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mZ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 3916, - 14, - 3916, - 36, - [0, - caml_string_of_jsbytes("Article D832-25"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _m2_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 603, - 12, - 603, - 34, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mY_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 603, - 12, - 603, - 34, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _m3_= - [0, - caml_string_of_jsbytes("CalculNombrePartLogementFoyer"), - [0,caml_string_of_jsbytes("n_nombre_parts_d832_25"),0]], - _mU_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4089, - 5, - 4089, - 26, - [0, - caml_string_of_jsbytes("Article D832-26"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _mV_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 596, - 12, - 596, - 19, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mT_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4051, - 14, - 4051, - 21, - [0, - caml_string_of_jsbytes("Article D832-26"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _mP_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_construction_reglementaire.catala_fr"), - 4038, - 14, - 4038, - 50, - [0, - caml_string_of_jsbytes("Article D832-26"), - [0, - caml_string_of_jsbytes - ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), - [0, - caml_string_of_jsbytes("Section 3 : Logements-foyers"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Titre III : Aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("Livre VIII : Aides personnelles au logement"), - [0, - caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), - [0, - caml_string_of_jsbytes - ("Code de la construction et de l'habitation"), - 0]]]]]]]]], - _mO_=[1,0], - _mJ_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2650, - 5, - 2650, - 26, - [0, - caml_string_of_jsbytes("Article 31"), - [0, - caml_string_of_jsbytes - ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _mI_=[1,0], - _mK_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 591, - 11, - 591, - 35, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mH_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2601, - 14, - 2601, - 38, - [0, - caml_string_of_jsbytes("Article 31"), - [0, - caml_string_of_jsbytes - ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _mG_=[1,0], - _mC_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/arrete_2019-09-27.catala_fr"), - 2685, - 14, - 2685, - 41, - [0, - caml_string_of_jsbytes("Article 31"), - [0, - caml_string_of_jsbytes - ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), - 0]]]], - _mD_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 594, - 11, - 594, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mB_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 594, - 11, - 594, - 38, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mE_= - [0, - caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"), - [0,caml_string_of_jsbytes("montant_forfaitaire_d832_26"),0]], - _mL_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 591, - 11, - 591, - 35, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mF_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 591, - 11, - 591, - 35, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mM_= - [0, - caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"), - [0,caml_string_of_jsbytes("tranches_revenus_d832_26"),0]], - _mQ_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 592, - 11, - 592, - 47, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mN_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 592, - 11, - 592, - 47, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mR_= - [0, - caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"), - [0, - caml_string_of_jsbytes("tranches_revenus_d832_26_multipli\xc3\xa9es"), - 0]], - _mW_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 596, - 12, - 596, - 19, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mS_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 596, - 12, - 596, - 19, - [0, - caml_string_of_jsbytes("Secteur logement-foyer"), - [0, - caml_string_of_jsbytes - ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], - _mX_= - [0, - caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"), - [0,caml_string_of_jsbytes("montant"),0]], - _mx_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/autres_sources.catala_fr"), - 153, - 5, - 153, - 34, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Des contributions pour le remboursement de la dette sociale."), - [0, - caml_string_of_jsbytes - ("Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale"), - 0]]]], - _my_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 520, - 12, - 520, - 19, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _mw_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 520, - 12, - 520, - 19, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _mt_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/autres_sources.catala_fr"), - 191, - 39, - 191, - 68, - [0, - caml_string_of_jsbytes("Article 19"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Des contributions pour le remboursement de la dette sociale."), - [0, - caml_string_of_jsbytes - ("Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale"), - 0]]]], - _mo_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), - 37, - 9, - 37, - 20, - [0, - caml_string_of_jsbytes("Article L136-1-3"), - [0, - caml_string_of_jsbytes - ("Section 1 : De la contribution sociale sur les revenus d'activit\xc3\xa9 et sur les revenus de remplacement"), - [0, - caml_string_of_jsbytes - ("Chapitre 6 : Contribution sociale g\xc3\xa9n\xc3\xa9ralis\xc3\xa9e"), - [0, - caml_string_of_jsbytes - ("Titre III: Titre III : Dispositions communes relatives au financement"), - [0, - caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), - [0, - caml_string_of_jsbytes - ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), - 0]]]]]]], - _mp_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 518, - 11, - 518, - 22, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _mn_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 518, - 11, - 518, - 22, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _mq_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 518, - 11, - 518, - 22, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _mm_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 518, - 11, - 518, - 22, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _mr_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("exon\xc3\xa9r\xc3\xa9_csg"),0]], - _mu_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 517, - 11, - 517, - 20, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _ms_= - [0, - caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), - 517, - 11, - 517, - 20, - [0, - caml_string_of_jsbytes - ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), - [0, - caml_string_of_jsbytes - ("D\xc3\xa9clarations des champs d'application"), - [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], - _mv_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("taux_crds"),0]], - _mz_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - [0,caml_string_of_jsbytes("montant"),0]], - _mA_= - [0, - caml_string_of_jsbytes - ("examples/aides_logement/autres_sources.catala_fr"), - 157, - 13, - 157, - 24, - [0, - caml_string_of_jsbytes("Article 14"), - [0, - caml_string_of_jsbytes - ("Chapitre II : Des contributions pour le remboursement de la dette sociale."), - [0, - caml_string_of_jsbytes - ("Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale"), - 0]]]], - _ml_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales_in"), - 0], - _mk_=[0,caml_string_of_jsbytes("Smic_in"),0], - _mj_= - [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales_in"),0], - _mi_= - [0, - caml_string_of_jsbytes - ("CalculetteAidesAuLogementGardeAltern\xc3\xa9e_in"), - 0], - _mh_=[0,caml_string_of_jsbytes("CalculetteAidesAuLogement_in"),0], - _mg_= - [0,caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement_in"),0], - _mf_=[0,caml_string_of_jsbytes("OuvertureDroitsRetraite_in"),0], - _me_=[0,caml_string_of_jsbytes("CalculAllocationLogement_in"),0], - _md_=[0,caml_string_of_jsbytes("CalculAllocationLogementFoyer_in"),0], - _mc_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"), - 0], - _mb_=[0,caml_string_of_jsbytes("CalculAllocationLogementLocatif_in"),0], - _ma_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement_in"), - 0], - _l$_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"), - 0], - _l__= - [0, - caml_string_of_jsbytes - ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9_in"), - 0], - _l9_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementFoyer_in"), - 0], - _l8_=[0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer_in"),0], - _l7_= - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale_in"),0], - _l6_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementLocatif_in"), - 0], - _l5_= - [0, - caml_string_of_jsbytes - ("ContributionsSocialesAidesPersonnelleLogement_in"), - 0], - _l4_= - [0,caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement_in"),0], - _l3_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement_in"), - 0], - _l2_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AllocationLogement_in"), - 0], - _l1_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement_in"), - 0], - _l0_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement_in"), - 0], - _lZ_=[0,caml_string_of_jsbytes("M\xc3\xa9nage"),0], - _lY_=[0,caml_string_of_jsbytes("Logement"),0], - _lX_=[0,caml_string_of_jsbytes("ModeOccupation"),0], - _lW_=[0,caml_string_of_jsbytes("Cat\xc3\xa9gorieCalculAPL"),0], - _lV_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), - 0], - _lU_=[0,caml_string_of_jsbytes("Location"),0], - _lT_=[0,caml_string_of_jsbytes("Demandeur"),0], - _lS_=[0,caml_string_of_jsbytes("Personne\xc3\x80Charge"),0], - _lR_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), - 0], - _lQ_= - [0, - caml_string_of_jsbytes("InformationsPrimeDeD\xc3\xa9m\xc3\xa9nagement"), - 0], - _lP_=[0,caml_string_of_jsbytes("Propri\xc3\xa9taire"),0], - _lO_=[0,caml_string_of_jsbytes("ChangementLogementD842_4"),0], - _lN_=[0,caml_string_of_jsbytes("Nationalit\xc3\xa9"),0], - _lM_= - [0, - caml_string_of_jsbytes("Lou\xc3\xa9OuSousLou\xc3\xa9\xc3\x80DesTiers"), - 0], - _lL_=[0,caml_string_of_jsbytes("TypeBailleur"),0], - _lK_=[0,caml_string_of_jsbytes("Enfant\xc3\x80Charge"),0], - _lJ_=[0,caml_string_of_jsbytes("EnfantPrestationsFamiliales"),0], - _lI_=[0,caml_string_of_jsbytes("LogementFoyer"),0], - _lH_= - [0, - caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - 0], - _lG_= - [0, - caml_string_of_jsbytes - ("DateNaissanceTroisi\xc3\xa8meOuDernierPlusEnfant"), - 0], - _lF_=[0,caml_string_of_jsbytes("AutrePersonne\xc3\x80Charge"),0], - _lE_=[0,caml_string_of_jsbytes("TrancheRevenuD\xc3\xa9cimal"),0], - _lD_=[0,caml_string_of_jsbytes("TrancheRevenu"),0], - _lC_=[0,caml_string_of_jsbytes("NeufOuAncien"),0], - _lB_=[0,caml_string_of_jsbytes("Pr\xc3\xaat"),0], - _lA_=[0,caml_string_of_jsbytes("Smic"),0], - _lz_=[0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0], - _ly_= - [0, - caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), - 0], - _lx_=[0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0], - _lw_=[0,caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"),0], - _lv_=[0,caml_string_of_jsbytes("OuvertureDroitsRetraite"),0], - _lu_=[0,caml_string_of_jsbytes("CalculAllocationLogement"),0], - _lt_=[0,caml_string_of_jsbytes("CalculAllocationLogementFoyer"),0], - _ls_= - [0, - caml_string_of_jsbytes - ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - 0], - _lr_=[0,caml_string_of_jsbytes("CalculAllocationLogementLocatif"),0], - _lq_=[0,caml_string_of_jsbytes("InfosChangementLogementD842_4"),0], - _lp_= - [0,caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),0], - _lo_=[0,caml_string_of_jsbytes("Traitement_formule_aide_finale"),0], - _ln_= - [0, - caml_string_of_jsbytes - ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), - 0], - _lm_= - [0, - caml_string_of_jsbytes - ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), - 0], - _ll_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), - 0], - _lk_=[0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0], - _lj_= - [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0], - _li_= - [0, - caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), - 0], - _lh_= - [0, - caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), - 0], - _lg_=[0,caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"),0], - _lf_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), - 0], - _le_= - [0, - caml_string_of_jsbytes - ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), - 0], - _ld_=[0,caml_string_of_jsbytes("PersonneVivantHabituellementAuFoyer"),0], - _lc_=[0,caml_string_of_jsbytes("Conditions\xc3\x89trangers"),0], - _lb_=[0,caml_string_of_jsbytes("Patrimoine"),0], - _la_=[0,caml_string_of_jsbytes("PersonneSousLocation"),0], - _k$_=[0,caml_string_of_jsbytes("ConventionANHA"),0], - _k__=[0,caml_string_of_jsbytes("ConventionBailleurSocial"),0], - _k9_= - [0, - caml_string_of_jsbytes("\xc3\x89l\xc3\xa9mentPrestationsFamiliales"), - 0], - _k8_=[0,caml_string_of_jsbytes("SituationObligationScolaire"),0], - _k7_=[0,caml_string_of_jsbytes("PriseEnChargeEnfant"),0], - _k6_=[0,caml_string_of_jsbytes("Collectivit\xc3\xa9"),0], - _k5_=[0,caml_string_of_jsbytes("SituationFamilialeCalculAPL"),0], - _k4_= - [0, - caml_string_of_jsbytes - ("Cat\xc3\xa9gorie\xc3\x89quivalenceLoyerAllocationLogementFoyer"), - 0], - _k3_=[0,caml_string_of_jsbytes("TypeLogementFoyer"),0], - _k2_=[0,caml_string_of_jsbytes("PriseEnCharge"),0], - _k1_=[0,caml_string_of_jsbytes("SituationFamiliale"),0], - _k0_=[0,caml_string_of_jsbytes("TypeAidesPersonnelleLogement"),0], - _kZ_= - [0, - caml_string_of_jsbytes - ("Type\xc3\x89ligibilit\xc3\xa9AllocationLogement"), - 0], - _kY_=[0,caml_string_of_jsbytes("ModeOccupationImpay\xc3\xa9"),0], - _kX_=[0,caml_string_of_jsbytes("D\xc3\xa9penseLogement"),0], - _kW_=[0,caml_string_of_jsbytes("Versement\xc3\x80"),0], - _kV_= - [0,caml_string_of_jsbytes("PaiementLogementDistinctProfessionnel"),0], - _kU_=[0,caml_string_of_jsbytes("ZoneDHabitation"),0], - _kT_=[0,caml_string_of_jsbytes("DateDeNaissanceOuMoisDeGrossesse"),0], - _kS_=[0,caml_string_of_jsbytes("Parent\xc3\xa9"),0], - _kR_=[0,caml_string_of_jsbytes("SituationGardeAltern\xc3\xa9e"),0], - _kQ_=[0,caml_string_of_jsbytes("ParentOuAutre"),0], - _kP_=[0,caml_string_of_jsbytes("PrestationRe\xc3\xa7ue"),0], - _kO_=[0,caml_string_of_jsbytes("LimiteTrancheD\xc3\xa9cimal"),0], - _kN_=[0,caml_string_of_jsbytes("LimiteTranche"),0], - _kM_=[0,caml_string_of_jsbytes("Am\xc3\xa9lior\xc3\xa9ParOccupant"),0], - _kL_=[0,caml_string_of_jsbytes("TypeTravauxLogementR842_5"),0], - _kK_=[0,caml_string_of_jsbytes("TypeTravauxLogementD832_15"),0], - _kJ_=[0,caml_string_of_jsbytes("TitulairePr\xc3\xaat"),0], - _kI_=[0,caml_string_of_jsbytes("TypePr\xc3\xaat"),0], - _XE_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'ModeOccupation.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'ModeOccupation.t'")], - _XD_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'CategorieCalculAPL.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'CategorieCalculAPL.t'")], - _XC_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'PersonneACharge.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'PersonneACharge.t'")], - _XB_=[1,0], - _XA_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'ChangementLogementD8424.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'ChangementLogementD8424.t'")], - _Xz_=[0,0], - _Xy_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes("' kind for the enumeration 'Nationalite.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'Nationalite.t'")], - _Xx_=[0,0], - _Xw_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'LoueOuSousLoueADesTiers.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'LoueOuSousLoueADesTiers.t'")], - _Xv_=[2,0], - _Xu_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'TypeBailleur.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'TypeBailleur.t'")], - _Xt_=[0,0], - _Xs_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'")], - _Xr_=[0,0], - _Xq_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'NeufOuAncien.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'NeufOuAncien.t'")], - _Xi_=[0,0], - _Xj_=[2,0], - _Xk_=[1,0], - _Xl_=[5,0], - _Xm_=[6,0], - _Xn_=[3,0], - _Xo_=[7,0], - _Xp_=[4,0], - _Xh_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'ElementPrestationsFamiliales.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'ElementPrestationsFamiliales.t'")], - _Xe_=[1,0], - _Xf_=[0,0], - _Xg_=[2,0], - _Xd_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'SituationObligationScolaire.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'SituationObligationScolaire.t'")], - _W__=[4,0], - _W$_=[3,0], - _Xa_=[0,0], - _Xb_=[1,0], - _Xc_=[2,0], - _W9_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'PriseEnChargeEnfant.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'PriseEnChargeEnfant.t'")], - _W0_=[7,0], - _W1_=[5,0], - _W2_=[4,0], - _W3_=[6,0], - _W4_=[8,0], - _W5_=[2,0], - _W6_=[3,0], - _W7_=[1,0], - _W8_=[0,0], - _WZ_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'Collectivite.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'Collectivite.t'")], - _WX_=[0,0], - _WY_=[1,0], - _WW_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'SituationFamilialeCalculAPL.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'SituationFamilialeCalculAPL.t'")], - _WS_=[2,0], - _WT_=[1,0], - _WU_=[0,0], - _WV_=[3,0], - _WR_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'")], - _WN_=[1,0], - _WO_=[0,0], - _WP_=[2,0], - _WQ_=[3,0], - _WM_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'TypeLogementFoyer.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'TypeLogementFoyer.t'")], - _WJ_=[2,0], - _WK_=[1,0], - _WL_=[0,0], - _WI_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'PriseEnCharge.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'PriseEnCharge.t'")], - _WD_=[2,0], - _WE_=[3,0], - _WF_=[5,0], - _WG_=[4,0], - _WH_=[0,0], - _WC_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'SituationFamiliale.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'SituationFamiliale.t'")], - _Wz_=[2,0], - _WA_=[1,0], - _WB_=[0,0], - _Wy_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'TypeAidesPersonnelleLogement.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'TypeAidesPersonnelleLogement.t'")], - _Wv_=[0,0], - _Ww_=[2,0], - _Wx_=[1,0], - _Wu_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'TypeEligibiliteAllocationLogement.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'TypeEligibiliteAllocationLogement.t'")], - _Ws_=[1,0], - _Wt_=[0,0], - _Wr_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'ModeOccupationImpaye.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'ModeOccupationImpaye.t'")], - _Wq_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'DepenseLogement.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'DepenseLogement.t'")], - _Wn_=[2,0], - _Wo_=[1,0], - _Wp_=[0,0], - _Wm_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes("' kind for the enumeration 'VersementA.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'VersementA.t'")], - _Wl_=[1,0], - _Wk_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'")], - _Wh_=[2,0], - _Wi_=[1,0], - _Wj_=[0,0], - _Wg_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'ZoneDHabitation.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'ZoneDHabitation.t'")], - _We_=[1,0], - _Wf_=[2,0], - _Wd_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'")], - _Wa_=[1,0], - _Wb_=[2,0], - _Wc_=[0,0], - _V$_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes("' kind for the enumeration 'Parente.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'Parente.t'")], - _V__=[0,0], - _V9_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'SituationGardeAlternee.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'SituationGardeAlternee.t'")], - _V8_=[1,0], - _V7_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'ParentOuAutre.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'ParentOuAutre.t'")], - _V1_=[1,0], - _V2_=[0,0], - _V3_=[3,0], - _V4_=[4,0], - _V5_=[2,0], - _V6_=[5,0], - _V0_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'PrestationRecue.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'PrestationRecue.t'")], - _VZ_=[1,0], - _VY_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'LimiteTrancheDecimal.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'LimiteTrancheDecimal.t'")], - _VX_=[1,0], - _VW_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'LimiteTranche.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'LimiteTranche.t'")], - _VU_=[0,0], - _VV_=[1,0], - _VT_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'AmelioreParOccupant.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'AmelioreParOccupant.t'")], - _VP_=[1,0], - _VQ_=[3,0], - _VR_=[0,0], - _VS_=[2,0], - _VO_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'TypeTravauxLogementR8425.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementR8425.t'")], - _VL_=[1,0], - _VM_=[0,0], - _VN_=[2,0], - _VK_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'TypeTravauxLogementD83215.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementD83215.t'")], - _VI_=[1,0], - _VJ_=[0,0], - _VH_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes - ("' kind for the enumeration 'TitulairePret.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'TitulairePret.t'")], - _VC_=[3,0], - _VD_=[1,0], - _VE_=[2,0], - _VF_=[0,0], - _VG_=[4,0], - _VB_= - [0, - [11, - caml_string_of_jsbytes("Unexpected '"), - [2, - 0, - [11, - caml_string_of_jsbytes("' kind for the enumeration 'TypePret.t'"), - 0]]], - caml_string_of_jsbytes - ("Unexpected '%s' kind for the enumeration 'TypePret.t'")]; - function embed_prise_en_charge(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _ciM_= - [0, - cst_GardeAltern_ePartageAlloca, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _ciM_= - [0, - cst_GardeAltern_eAllocataireUn, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _ciM_= - [0, - cst_EffectiveEtPermanente, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - case 3: - var - x$3=x[1], - _ciM_= - [0, - cst_ServicesSociauxAllocationV, - caml_call1(Runtime_ocaml_Runtime[11],x$3)]; - break; - default: - var - x$4=x[1], - _ciM_= - [0, - cst_ServicesSociauxAllocationV$0, - caml_call1(Runtime_ocaml_Runtime[11],x$4)]} - return [6,_a_,_ciM_]} - var SituationObligationScolaire=[0]; - function embed_situation_obligation_sco(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _ciL_=[0,cst_Avant,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _ciL_=[0,cst_Pendant,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _ciL_=[0,cst_Apr_s,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_b_,_ciL_]} - var PriseEnCompte=[0]; - function embed_prise_en_compte(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _ciK_=[0,cst_Compl_te,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _ciK_=[0,cst_Partag_e,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _ciK_=[0,cst_Z_ro,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_c_,_ciK_]} - var VersementAllocations=[0]; - function embed_versement_allocations(x) - {if(0 === x[0]) - var - x$0=x[1], - _ciJ_=[0,cst_Normal,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var - x$1=x[1], - _ciJ_= - [0, - cst_AllocationVers_eAuxService, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_d_,_ciJ_]} - var ElementPrestationsFamiliales=[0]; - function embed_element_prestations_fami(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _ciI_= - [0, - cst_PrestationAccueilJeuneEnfa, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _ciI_= - [0, - cst_AllocationsFamiliales, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _ciI_= - [0, - cst_Compl_mentFamilial, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - case 3: - var - x$3=x[1], - _ciI_= - [0, - cst_AllocationLogement, - caml_call1(Runtime_ocaml_Runtime[11],x$3)]; - break; - case 4: - var - x$4=x[1], - _ciI_= - [0, - cst_Allocation_ducationEnfantH, - caml_call1(Runtime_ocaml_Runtime[11],x$4)]; - break; - case 5: - var - x$5=x[1], - _ciI_= - [0, - cst_AllocationSoutienFamilial, - caml_call1(Runtime_ocaml_Runtime[11],x$5)]; - break; - case 6: - var - x$6=x[1], - _ciI_= - [0, - cst_AllocationRentr_eScolaire, - caml_call1(Runtime_ocaml_Runtime[11],x$6)]; - break; - default: - var - x$7=x[1], - _ciI_= - [0, - cst_AllocationJournali_rePrese, - caml_call1(Runtime_ocaml_Runtime[11],x$7)]} - return [6,_e_,_ciI_]} - var Collectivite=[0]; - function embed_collectivite(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _ciH_=[0,cst_Guadeloupe,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _ciH_=[0,cst_Guyane,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _ciH_=[0,cst_Martinique,caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - case 3: - var - x$3=x[1], - _ciH_=[0,cst_LaR_union,caml_call1(Runtime_ocaml_Runtime[11],x$3)]; - break; - case 4: - var - x$4=x[1], - _ciH_= - [0,cst_SaintBarth_lemy,caml_call1(Runtime_ocaml_Runtime[11],x$4)]; - break; - case 5: - var - x$5=x[1], - _ciH_=[0,cst_SaintMartin,caml_call1(Runtime_ocaml_Runtime[11],x$5)]; - break; - case 6: - var - x$6=x[1], - _ciH_=[0,cst_M_tropole,caml_call1(Runtime_ocaml_Runtime[11],x$6)]; - break; - case 7: - var - x$7=x[1], - _ciH_= - [0, - cst_SaintPierreEtMiquelon, - caml_call1(Runtime_ocaml_Runtime[11],x$7)]; - break; - default: - var - x$8=x[1], - _ciH_=[0,cst_Mayotte,caml_call1(Runtime_ocaml_Runtime[11],x$8)]} - return [6,_f_,_ciH_]} - var AllocationFamilialesAvril2008=[0]; - function embed_allocation_familiales_av(x) - {return [7, - _g_, - [0, - [0, - cst_ge_minimum_alin_a_1_l521_3, - caml_call1(Runtime_ocaml_Runtime[17],x[1])], - 0]]} - var AllocationsFamiliales=[0]; - function embed_allocations_familiales(x) - {return [7, - _h_, - [0, - [0,cst_montant_vers,caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var Smic=[0]; - function embed_smic(x) - {return [7, - _i_, - [0, - [0,cst_brut_horaire,caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var BaseMensuelleAllocationsFamili=[0]; - function embed_base_mensuelle_allocatio(x) - {return [7, - _j_, - [0,[0,cst_montant,caml_call1(Runtime_ocaml_Runtime[13],x[1])],0]]} - var InterfaceAllocationsFamiliales=[0]; - function embed_interface_allocations_fa(x) - {return [7, - _k_, - [0, - [0, - cst_i_montant_vers, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var EnfantEntree=[0]; - function embed_enfant_entree(x) - {var - _ciC_= - [0, - [0, - cst_d_b_n_ficie_titre_personne, - caml_call1(Runtime_ocaml_Runtime[12],x[6])], - 0], - _ciD_= - [0, - [0, - cst_d_a_d_j_ouvert_droit_aux_a, - caml_call1(Runtime_ocaml_Runtime[12],x[5])], - _ciC_], - _ciE_=[0,[0,cst_d_prise_en_charge,embed_prise_en_charge(x[4])],_ciD_], - _ciF_= - [0, - [0, - cst_d_date_de_naissance, - caml_call1(Runtime_ocaml_Runtime[16],x[3])], - _ciE_], - _ciG_= - [0, - [0, - cst_d_r_muneration_mensuelle, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _ciF_]; - return [7, - _l_, - [0, - [0, - cst_d_identifiant, - caml_call1(Runtime_ocaml_Runtime[14],x[1])], - _ciG_]]} - var Enfant=[0]; - function embed_enfant(x) - {var - _ciw_= - [0, - [0, - cst_b_n_ficie_titre_personnel_, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - 0], - _cix_= - [0, - [0, - cst_a_d_j_ouvert_droit_aux_all, - caml_call1(Runtime_ocaml_Runtime[12],x[6])], - _ciw_], - _ciy_=[0,[0,cst_prise_en_charge,embed_prise_en_charge(x[5])],_cix_], - _ciz_= - [0, - [0,cst_date_de_naissance,caml_call1(Runtime_ocaml_Runtime[16],x[4])], - _ciy_], - _ciA_= - [0, - [0, - cst_r_muneration_mensuelle, - caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _ciz_], - _ciB_= - [0, - [0,cst_obligation_scolaire,embed_situation_obligation_sco(x[2])], - _ciA_]; - return [7, - _m_, - [0, - [0,cst_identifiant,caml_call1(Runtime_ocaml_Runtime[14],x[1])], - _ciB_]]} - var EnfantLePlusAge=[0]; - function embed_enfant_le_plus_age(x) - {return [7,_n_,[0,[0,cst_le_plus_g,embed_enfant(x[1])],0]]} - var PrestationsFamiliales=[0]; - function embed_prestations_familiales(x) - {var - _cit_= - [0, - [0, - cst_r_gime_outre_mer_l751_1, - caml_call1(Runtime_ocaml_Runtime[12],x[4])], - 0], - _ciu_= - [0, - [0,cst_ge_l512_3_2,caml_call1(Runtime_ocaml_Runtime[17],x[3])], - _cit_], - _civ_= - [0, - [0,cst_conditions_hors_ge,caml_call1(Runtime_ocaml_Runtime[10],x[2])], - _ciu_]; - return [7, - _o_, - [0, - [0,cst_droit_ouvert,caml_call1(Runtime_ocaml_Runtime[10],x[1])], - _civ_]]} - var PrestationsFamilialesIn=[0]; - function embed_prestations_familiales_i(x) - {var - _cir_=[0,[0,cst_r_sidence_in,embed_collectivite(x[3])],0], - _cis_= - [0, - [0,cst_prestation_courante_in,embed_element_prestations_fami(x[2])], - _cir_]; - return [7, - _p_, - [0, - [0, - cst_date_courante_in, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _cis_]]} - var AllocationFamilialesAvril2008I=[0]; - function embed_allocation_familiales_av$0(param){return 0} - var EnfantLePlusAgeIn=[0]; - function embed_enfant_le_plus_age_in(x) - {return [7, - _q_, - [0, - [0, - cst_enfants_in, - caml_call2(Runtime_ocaml_Runtime[18],embed_enfant,x[1])], - 0]]} - var AllocationsFamilialesIn=[0]; - function embed_allocations_familiales_i(x) - {var - _cil_= - [0, - [0, - cst_avait_enfant_charge_avant_, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - 0], - _cim_= - [0, - [0, - cst_enfants_charge_in, - caml_call2(Runtime_ocaml_Runtime[18],embed_enfant,x[6])], - _cil_], - _cin_= - [0, - [0,cst_date_courante_in$0,caml_call1(Runtime_ocaml_Runtime[16],x[5])], - _cim_], - _cio_=[0,[0,cst_r_sidence_in$0,embed_collectivite(x[4])],_cin_], - _cip_= - [0, - [0, - cst_ressources_m_nage_in, - caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _cio_], - _ciq_= - [0, - [0, - cst_personne_charge_effective_, - caml_call1(Runtime_ocaml_Runtime[12],x[2])], - _cip_]; - return [7, - _r_, - [0, - [0, - cst_personne_charge_effective_$0, - caml_call1(Runtime_ocaml_Runtime[12],x[1])], - _ciq_]]} - var SmicIn=[0]; - function embed_smic_in(x) - {var _cik_=[0,[0,cst_r_sidence_in$1,embed_collectivite(x[2])],0]; - return [7, - _s_, - [0, - [0, - cst_date_courante_in$1, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _cik_]]} - var BaseMensuelleAllocationsFamili$0=[0]; - function embed_base_mensuelle_allocatio$0(x) - {return [7, - _t_, - [0, - [0, - cst_date_courante_in$2, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - 0]]} - var InterfaceAllocationsFamiliales$0=[0]; - function embed_interface_allocations_fa$0(x) - {var - _cie_= - [0, - [0, - cst_i_avait_enfant_charge_avan, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - 0], - _cif_= - [0, - [0, - cst_i_personne_charge_effectiv, - caml_call1(Runtime_ocaml_Runtime[12],x[6])], - _cie_], - _cig_= - [0, - [0, - cst_i_personne_charge_effectiv$0, - caml_call1(Runtime_ocaml_Runtime[12],x[5])], - _cif_], - _cih_=[0,[0,cst_i_r_sidence_in,embed_collectivite(x[4])],_cig_], - _cii_= - [0, - [0, - cst_i_ressources_m_nage_in, - caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _cih_], - _cij_= - [0, - [0, - cst_i_enfants_in, - caml_call2(Runtime_ocaml_Runtime[18],embed_enfant_entree,x[2])], - _cii_]; - return [7, - _u_, - [0, - [0, - cst_i_date_courante_in, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _cij_]]} - function allocation_familiales_avril200(allocation_familiales_avril200) - {try - {var - _cia_= - function(param){return caml_call3(Runtime_ocaml_Runtime[60],16,0,0)}, - _cib_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_w_,1)}, - _cic_=caml_call4(Runtime_ocaml_Runtime[63],_x_,[0],_cib_,_cia_)} - catch(_cid_) - {_cid_ = caml_wrap_exception(_cid_); - if(_cid_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_v_]; - throw _cid_} - var - age_minimum_alinea_1_l521_3= - caml_call3 - (Runtime_ocaml_Runtime[28],_y_,Runtime_ocaml_Runtime[17],_cic_); - return [0,age_minimum_alinea_1_l521_3]} - function enfant_le_plus_age(enfant_le_plus_age_in) - {var enfants=enfant_le_plus_age_in[1]; - try - {var - _ch4_= - function(param) - {var - _ch8_=caml_call3(Runtime_ocaml_Runtime[57],2999,12,31), - _ch9_=caml_call1(Runtime_ocaml_Runtime[31],cst_0), - _ch__= - [0, - caml_call1(Runtime_ocaml_Runtime[46],cst_1), - _B_, - _ch9_, - _ch8_, - _A_, - 0, - 0]; - function _ch$_(potentiel_plus_age_1,potentiel_plus_age_2) - {return caml_call2 - (Runtime_ocaml_Runtime[114], - potentiel_plus_age_1[4], - potentiel_plus_age_2[4]) - ?potentiel_plus_age_1 - :potentiel_plus_age_2} - return caml_call3(Runtime_ocaml_Runtime[88],_ch$_,_ch__,enfants)}, - _ch5_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_C_,1)}, - _ch6_=caml_call4(Runtime_ocaml_Runtime[63],_D_,[0],_ch5_,_ch4_)} - catch(_ch7_) - {_ch7_ = caml_wrap_exception(_ch7_); - if(_ch7_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_z_]; - throw _ch7_} - var - le_plus_age= - caml_call3(Runtime_ocaml_Runtime[28],_E_,embed_enfant,_ch6_); - return [0,le_plus_age]} - function smic(smic_in) - {var date_courante=smic_in[1],residence=smic_in[2]; - try - {var - _ceg_=function(param){throw Runtime_ocaml_Runtime[2]}, - _ceh_=function(param){return 0}, - _cei_= - function(param) - {function _chV_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_851)} - function _chW_(param) - {var - _chX_=caml_call2(Runtime_ocaml_Runtime[86],residence,_G_), - _chY_=caml_call3(Runtime_ocaml_Runtime[57],2023,12,31), - _chZ_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_chY_), - _ch0_=caml_call2(Runtime_ocaml_Runtime[83],_chZ_,_chX_), - _ch1_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), - _ch2_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_ch1_), - _ch3_=caml_call2(Runtime_ocaml_Runtime[83],_ch2_,_ch0_); - return caml_call2(Runtime_ocaml_Runtime[29],_H_,_ch3_)} - return caml_call4(Runtime_ocaml_Runtime[63],_I_,[0],_chW_,_chV_)}, - _cej_= - function(param) - {function _chy_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1127)} - function _chz_(param) - {var - _chA_=caml_call2(Runtime_ocaml_Runtime[86],residence,_J_), - _chB_=caml_call2(Runtime_ocaml_Runtime[86],residence,_K_), - _chC_=caml_call2(Runtime_ocaml_Runtime[84],_chB_,_chA_), - _chD_=caml_call2(Runtime_ocaml_Runtime[86],residence,_L_), - _chE_=caml_call2(Runtime_ocaml_Runtime[84],_chD_,_chC_), - _chF_=caml_call2(Runtime_ocaml_Runtime[86],residence,_M_), - _chG_=caml_call2(Runtime_ocaml_Runtime[84],_chF_,_chE_), - _chH_=caml_call2(Runtime_ocaml_Runtime[86],residence,_N_), - _chI_=caml_call2(Runtime_ocaml_Runtime[84],_chH_,_chG_), - _chJ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_O_), - _chK_=caml_call2(Runtime_ocaml_Runtime[84],_chJ_,_chI_), - _chL_=caml_call2(Runtime_ocaml_Runtime[86],residence,_P_), - _chM_=caml_call2(Runtime_ocaml_Runtime[84],_chL_,_chK_), - _chN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_Q_), - _chO_=caml_call2(Runtime_ocaml_Runtime[84],_chN_,_chM_), - _chP_=caml_call3(Runtime_ocaml_Runtime[57],2023,12,31), - _chQ_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_chP_), - _chR_=caml_call2(Runtime_ocaml_Runtime[83],_chQ_,_chO_), - _chS_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), - _chT_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_chS_), - _chU_=caml_call2(Runtime_ocaml_Runtime[83],_chT_,_chR_); - return caml_call2(Runtime_ocaml_Runtime[29],_R_,_chU_)} - return caml_call4(Runtime_ocaml_Runtime[63],_S_,[0],_chz_,_chy_)}, - _cek_= - function(param) - {function _chp_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_835)} - function _chq_(param) - {var - _chr_=caml_call2(Runtime_ocaml_Runtime[86],residence,_T_), - _chs_=caml_call3(Runtime_ocaml_Runtime[57],2022,12,31), - _cht_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_chs_), - _chu_=caml_call2(Runtime_ocaml_Runtime[83],_cht_,_chr_), - _chv_=caml_call3(Runtime_ocaml_Runtime[57],2022,8,1), - _chw_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_chv_), - _chx_=caml_call2(Runtime_ocaml_Runtime[83],_chw_,_chu_); - return caml_call2(Runtime_ocaml_Runtime[29],_U_,_chx_)} - return caml_call4(Runtime_ocaml_Runtime[63],_V_,[0],_chq_,_chp_)}, - _cel_= - function(param) - {function _cg4_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1107)} - function _cg5_(param) - {var - _cg6_=caml_call2(Runtime_ocaml_Runtime[86],residence,_W_), - _cg7_=caml_call2(Runtime_ocaml_Runtime[86],residence,_X_), - _cg8_=caml_call2(Runtime_ocaml_Runtime[84],_cg7_,_cg6_), - _cg9_=caml_call2(Runtime_ocaml_Runtime[86],residence,_Y_), - _cg__=caml_call2(Runtime_ocaml_Runtime[84],_cg9_,_cg8_), - _cg$_=caml_call2(Runtime_ocaml_Runtime[86],residence,_Z_), - _cha_=caml_call2(Runtime_ocaml_Runtime[84],_cg$_,_cg__), - _chb_=caml_call2(Runtime_ocaml_Runtime[86],residence,___), - _chc_=caml_call2(Runtime_ocaml_Runtime[84],_chb_,_cha_), - _chd_=caml_call2(Runtime_ocaml_Runtime[86],residence,_$_), - _che_=caml_call2(Runtime_ocaml_Runtime[84],_chd_,_chc_), - _chf_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aa_), - _chg_=caml_call2(Runtime_ocaml_Runtime[84],_chf_,_che_), - _chh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ab_), - _chi_=caml_call2(Runtime_ocaml_Runtime[84],_chh_,_chg_), - _chj_=caml_call3(Runtime_ocaml_Runtime[57],2022,12,31), - _chk_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_chj_), - _chl_=caml_call2(Runtime_ocaml_Runtime[83],_chk_,_chi_), - _chm_=caml_call3(Runtime_ocaml_Runtime[57],2022,8,1), - _chn_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_chm_), - _cho_=caml_call2(Runtime_ocaml_Runtime[83],_chn_,_chl_); - return caml_call2(Runtime_ocaml_Runtime[29],_ac_,_cho_)} - return caml_call4(Runtime_ocaml_Runtime[63],_ad_,[0],_cg5_,_cg4_)}, - _cem_= - function(param) - {function _cgV_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_819)} - function _cgW_(param) - {var - _cgX_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ae_), - _cgY_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,31), - _cgZ_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_cgY_), - _cg0_=caml_call2(Runtime_ocaml_Runtime[83],_cgZ_,_cgX_), - _cg1_=caml_call3(Runtime_ocaml_Runtime[57],2022,5,1), - _cg2_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cg1_), - _cg3_=caml_call2(Runtime_ocaml_Runtime[83],_cg2_,_cg0_); - return caml_call2(Runtime_ocaml_Runtime[29],_af_,_cg3_)} - return caml_call4(Runtime_ocaml_Runtime[63],_ag_,[0],_cgW_,_cgV_)}, - _cen_= - function(param) - {function _cgy_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1085)} - function _cgz_(param) - {var - _cgA_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ah_), - _cgB_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ai_), - _cgC_=caml_call2(Runtime_ocaml_Runtime[84],_cgB_,_cgA_), - _cgD_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aj_), - _cgE_=caml_call2(Runtime_ocaml_Runtime[84],_cgD_,_cgC_), - _cgF_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ak_), - _cgG_=caml_call2(Runtime_ocaml_Runtime[84],_cgF_,_cgE_), - _cgH_=caml_call2(Runtime_ocaml_Runtime[86],residence,_al_), - _cgI_=caml_call2(Runtime_ocaml_Runtime[84],_cgH_,_cgG_), - _cgJ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_am_), - _cgK_=caml_call2(Runtime_ocaml_Runtime[84],_cgJ_,_cgI_), - _cgL_=caml_call2(Runtime_ocaml_Runtime[86],residence,_an_), - _cgM_=caml_call2(Runtime_ocaml_Runtime[84],_cgL_,_cgK_), - _cgN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ao_), - _cgO_=caml_call2(Runtime_ocaml_Runtime[84],_cgN_,_cgM_), - _cgP_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,31), - _cgQ_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_cgP_), - _cgR_=caml_call2(Runtime_ocaml_Runtime[83],_cgQ_,_cgO_), - _cgS_=caml_call3(Runtime_ocaml_Runtime[57],2022,5,1), - _cgT_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cgS_), - _cgU_=caml_call2(Runtime_ocaml_Runtime[83],_cgT_,_cgR_); - return caml_call2(Runtime_ocaml_Runtime[29],_ap_,_cgU_)} - return caml_call4(Runtime_ocaml_Runtime[63],_aq_,[0],_cgz_,_cgy_)}, - _ceo_= - function(param) - {function _cgp_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_798)} - function _cgq_(param) - {var - _cgr_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ar_), - _cgs_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,30), - _cgt_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_cgs_), - _cgu_=caml_call2(Runtime_ocaml_Runtime[83],_cgt_,_cgr_), - _cgv_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), - _cgw_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cgv_), - _cgx_=caml_call2(Runtime_ocaml_Runtime[83],_cgw_,_cgu_); - return caml_call2(Runtime_ocaml_Runtime[29],_as_,_cgx_)} - return caml_call4(Runtime_ocaml_Runtime[63],_at_,[0],_cgq_,_cgp_)}, - _cep_= - function(param) - {function _cf4_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1057)} - function _cf5_(param) - {var - _cf6_=caml_call2(Runtime_ocaml_Runtime[86],residence,_au_), - _cf7_=caml_call2(Runtime_ocaml_Runtime[86],residence,_av_), - _cf8_=caml_call2(Runtime_ocaml_Runtime[84],_cf7_,_cf6_), - _cf9_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aw_), - _cf__=caml_call2(Runtime_ocaml_Runtime[84],_cf9_,_cf8_), - _cf$_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ax_), - _cga_=caml_call2(Runtime_ocaml_Runtime[84],_cf$_,_cf__), - _cgb_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ay_), - _cgc_=caml_call2(Runtime_ocaml_Runtime[84],_cgb_,_cga_), - _cgd_=caml_call2(Runtime_ocaml_Runtime[86],residence,_az_), - _cge_=caml_call2(Runtime_ocaml_Runtime[84],_cgd_,_cgc_), - _cgf_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aA_), - _cgg_=caml_call2(Runtime_ocaml_Runtime[84],_cgf_,_cge_), - _cgh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aB_), - _cgi_=caml_call2(Runtime_ocaml_Runtime[84],_cgh_,_cgg_), - _cgj_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,30), - _cgk_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_cgj_), - _cgl_=caml_call2(Runtime_ocaml_Runtime[83],_cgk_,_cgi_), - _cgm_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), - _cgn_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cgm_), - _cgo_=caml_call2(Runtime_ocaml_Runtime[83],_cgn_,_cgl_); - return caml_call2(Runtime_ocaml_Runtime[29],_aC_,_cgo_)} - return caml_call4(Runtime_ocaml_Runtime[63],_aD_,[0],_cf5_,_cf4_)}, - _ceq_= - function(param) - {function _cfV_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_774)} - function _cfW_(param) - {var - _cfX_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aE_), - _cfY_=caml_call3(Runtime_ocaml_Runtime[57],2021,12,31), - _cfZ_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_cfY_), - _cf0_=caml_call2(Runtime_ocaml_Runtime[83],_cfZ_,_cfX_), - _cf1_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), - _cf2_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cf1_), - _cf3_=caml_call2(Runtime_ocaml_Runtime[83],_cf2_,_cf0_); - return caml_call2(Runtime_ocaml_Runtime[29],_aF_,_cf3_)} - return caml_call4(Runtime_ocaml_Runtime[63],_aG_,[0],_cfW_,_cfV_)}, - _cer_= - function(param) - {function _cfy_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1025)} - function _cfz_(param) - {var - _cfA_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aH_), - _cfB_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aI_), - _cfC_=caml_call2(Runtime_ocaml_Runtime[84],_cfB_,_cfA_), - _cfD_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aJ_), - _cfE_=caml_call2(Runtime_ocaml_Runtime[84],_cfD_,_cfC_), - _cfF_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aK_), - _cfG_=caml_call2(Runtime_ocaml_Runtime[84],_cfF_,_cfE_), - _cfH_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aL_), - _cfI_=caml_call2(Runtime_ocaml_Runtime[84],_cfH_,_cfG_), - _cfJ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aM_), - _cfK_=caml_call2(Runtime_ocaml_Runtime[84],_cfJ_,_cfI_), - _cfL_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aN_), - _cfM_=caml_call2(Runtime_ocaml_Runtime[84],_cfL_,_cfK_), - _cfN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aO_), - _cfO_=caml_call2(Runtime_ocaml_Runtime[84],_cfN_,_cfM_), - _cfP_=caml_call3(Runtime_ocaml_Runtime[57],2021,12,31), - _cfQ_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_cfP_), - _cfR_=caml_call2(Runtime_ocaml_Runtime[83],_cfQ_,_cfO_), - _cfS_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), - _cfT_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cfS_), - _cfU_=caml_call2(Runtime_ocaml_Runtime[83],_cfT_,_cfR_); - return caml_call2(Runtime_ocaml_Runtime[29],_aP_,_cfU_)} - return caml_call4(Runtime_ocaml_Runtime[63],_aQ_,[0],_cfz_,_cfy_)}, - _ces_= - function(param) - {function _cfp_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_766)} - function _cfq_(param) - {var - _cfr_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aR_), - _cfs_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), - _cft_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_cfs_), - _cfu_=caml_call2(Runtime_ocaml_Runtime[83],_cft_,_cfr_), - _cfv_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _cfw_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cfv_), - _cfx_=caml_call2(Runtime_ocaml_Runtime[83],_cfw_,_cfu_); - return caml_call2(Runtime_ocaml_Runtime[29],_aS_,_cfx_)} - return caml_call4(Runtime_ocaml_Runtime[63],_aT_,[0],_cfq_,_cfp_)}, - _cet_= - function(param) - {function _ce4_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1015)} - function _ce5_(param) - {var - _ce6_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aU_), - _ce7_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aV_), - _ce8_=caml_call2(Runtime_ocaml_Runtime[84],_ce7_,_ce6_), - _ce9_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aW_), - _ce__=caml_call2(Runtime_ocaml_Runtime[84],_ce9_,_ce8_), - _ce$_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aX_), - _cfa_=caml_call2(Runtime_ocaml_Runtime[84],_ce$_,_ce__), - _cfb_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aY_), - _cfc_=caml_call2(Runtime_ocaml_Runtime[84],_cfb_,_cfa_), - _cfd_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aZ_), - _cfe_=caml_call2(Runtime_ocaml_Runtime[84],_cfd_,_cfc_), - _cff_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a0_), - _cfg_=caml_call2(Runtime_ocaml_Runtime[84],_cff_,_cfe_), - _cfh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a1_), - _cfi_=caml_call2(Runtime_ocaml_Runtime[84],_cfh_,_cfg_), - _cfj_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), - _cfk_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_cfj_), - _cfl_=caml_call2(Runtime_ocaml_Runtime[83],_cfk_,_cfi_), - _cfm_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _cfn_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cfm_), - _cfo_=caml_call2(Runtime_ocaml_Runtime[83],_cfn_,_cfl_); - return caml_call2(Runtime_ocaml_Runtime[29],_a2_,_cfo_)} - return caml_call4(Runtime_ocaml_Runtime[63],_a3_,[0],_ce5_,_ce4_)}, - _ceu_= - function(param) - {function _ceV_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_757)} - function _ceW_(param) - {var - _ceX_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a4_), - _ceY_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), - _ceZ_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_ceY_), - _ce0_=caml_call2(Runtime_ocaml_Runtime[83],_ceZ_,_ceX_), - _ce1_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), - _ce2_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_ce1_), - _ce3_=caml_call2(Runtime_ocaml_Runtime[83],_ce2_,_ce0_); - return caml_call2(Runtime_ocaml_Runtime[29],_a5_,_ce3_)} - return caml_call4(Runtime_ocaml_Runtime[63],_a6_,[0],_ceW_,_ceV_)}, - _cev_= - [0, - function(param) - {function _cey_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1003)} - function _cez_(param) - {var - _ceA_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a7_), - _ceB_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a8_), - _ceC_=caml_call2(Runtime_ocaml_Runtime[84],_ceB_,_ceA_), - _ceD_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a9_), - _ceE_=caml_call2(Runtime_ocaml_Runtime[84],_ceD_,_ceC_), - _ceF_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a__), - _ceG_=caml_call2(Runtime_ocaml_Runtime[84],_ceF_,_ceE_), - _ceH_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a$_), - _ceI_=caml_call2(Runtime_ocaml_Runtime[84],_ceH_,_ceG_), - _ceJ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ba_), - _ceK_=caml_call2(Runtime_ocaml_Runtime[84],_ceJ_,_ceI_), - _ceL_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bb_), - _ceM_=caml_call2(Runtime_ocaml_Runtime[84],_ceL_,_ceK_), - _ceN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bc_), - _ceO_=caml_call2(Runtime_ocaml_Runtime[84],_ceN_,_ceM_), - _ceP_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), - _ceQ_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_ceP_), - _ceR_=caml_call2(Runtime_ocaml_Runtime[83],_ceQ_,_ceO_), - _ceS_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), - _ceT_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_ceS_), - _ceU_=caml_call2(Runtime_ocaml_Runtime[83],_ceT_,_ceR_); - return caml_call2(Runtime_ocaml_Runtime[29],_bd_,_ceU_)} - return caml_call4(Runtime_ocaml_Runtime[63],_be_,[0],_cez_,_cey_)}, - _ceu_, - _cet_, - _ces_, - _cer_, - _ceq_, - _cep_, - _ceo_, - _cen_, - _cem_, - _cel_, - _cek_, - _cej_, - _cei_], - _cew_=caml_call4(Runtime_ocaml_Runtime[63],_bf_,_cev_,_ceh_,_ceg_)} - catch(_cex_) - {_cex_ = caml_wrap_exception(_cex_); - if(_cex_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_F_]; - throw _cex_} - var - brut_horaire= - caml_call3 - (Runtime_ocaml_Runtime[28],_bg_,Runtime_ocaml_Runtime[13],_cew_); - return [0,brut_horaire]} - function base_mensuelle_allocations_fam(base_mensuelle_allocations_fam) - {var date_courante=base_mensuelle_allocations_fam[1]; - try - {var - _cdI_=function(param){throw Runtime_ocaml_Runtime[2]}, - _cdJ_=function(param){return 0}, - _cdK_= - function(param) - {function _cd$_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_42228)} - function _cea_(param) - {var - _ceb_=caml_call3(Runtime_ocaml_Runtime[57],2023,4,1), - _cec_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_ceb_), - _ced_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,1), - _cee_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_ced_), - _cef_=caml_call2(Runtime_ocaml_Runtime[83],_cee_,_cec_); - return caml_call2(Runtime_ocaml_Runtime[29],_bi_,_cef_)} - return caml_call4(Runtime_ocaml_Runtime[63],_bj_,[0],_cea_,_cd$_)}, - _cdL_= - function(param) - {function _cd4_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_41481)} - function _cd5_(param) - {var - _cd6_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,1), - _cd7_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_cd6_), - _cd8_=caml_call3(Runtime_ocaml_Runtime[57],2021,4,1), - _cd9_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cd8_), - _cd__=caml_call2(Runtime_ocaml_Runtime[83],_cd9_,_cd7_); - return caml_call2(Runtime_ocaml_Runtime[29],_bk_,_cd__)} - return caml_call4(Runtime_ocaml_Runtime[63],_bl_,[0],_cd5_,_cd4_)}, - _cdM_= - function(param) - {function _cdX_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_41440)} - function _cdY_(param) - {var - _cdZ_=caml_call3(Runtime_ocaml_Runtime[57],2021,4,1), - _cd0_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_cdZ_), - _cd1_=caml_call3(Runtime_ocaml_Runtime[57],2020,4,1), - _cd2_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cd1_), - _cd3_=caml_call2(Runtime_ocaml_Runtime[83],_cd2_,_cd0_); - return caml_call2(Runtime_ocaml_Runtime[29],_bm_,_cd3_)} - return caml_call4(Runtime_ocaml_Runtime[63],_bn_,[0],_cdY_,_cdX_)}, - _cdN_= - [0, - function(param) - {function _cdQ_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_41316)} - function _cdR_(param) - {var - _cdS_=caml_call3(Runtime_ocaml_Runtime[57],2020,4,1), - _cdT_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_cdS_), - _cdU_=caml_call3(Runtime_ocaml_Runtime[57],2019,4,1), - _cdV_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cdU_), - _cdW_=caml_call2(Runtime_ocaml_Runtime[83],_cdV_,_cdT_); - return caml_call2(Runtime_ocaml_Runtime[29],_bo_,_cdW_)} - return caml_call4(Runtime_ocaml_Runtime[63],_bp_,[0],_cdR_,_cdQ_)}, - _cdM_, - _cdL_, - _cdK_], - _cdO_=caml_call4(Runtime_ocaml_Runtime[63],_bq_,_cdN_,_cdJ_,_cdI_)} - catch(_cdP_) - {_cdP_ = caml_wrap_exception(_cdP_); - if(_cdP_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_bh_]; - throw _cdP_} - var - montant= - caml_call3 - (Runtime_ocaml_Runtime[28],_br_,Runtime_ocaml_Runtime[13],_cdO_); - return [0,montant]} - function prestations_familiales(prestations_familiales_in) - {var - date_courante=prestations_familiales_in[1], - residence=prestations_familiales_in[3]; - try - {var - _ccl_= - function(param){return caml_call3(Runtime_ocaml_Runtime[60],20,0,0)}, - _ccm_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bt_,1)}, - _ccn_=caml_call4(Runtime_ocaml_Runtime[63],_bu_,[0],_ccm_,_ccl_)} - catch(_cdH_) - {_cdH_ = caml_wrap_exception(_cdH_); - if(_cdH_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_bs_]; - throw _cdH_} - var - age_l512_3_2= - caml_call3 - (Runtime_ocaml_Runtime[28],_bv_,Runtime_ocaml_Runtime[17],_ccn_); - try - {var - _cco_=function(param){return date_courante}, - _ccp_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bx_,1)}, - _ccq_=caml_call4(Runtime_ocaml_Runtime[63],_by_,[0],_ccp_,_cco_), - smic_dot_date_courante= - caml_call3 - (Runtime_ocaml_Runtime[28],_bz_,Runtime_ocaml_Runtime[16],_ccq_)} - catch(_cdG_) - {_cdG_ = caml_wrap_exception(_cdG_); - if(_cdG_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_bw_]; - throw _cdG_} - try - {var - _ccr_=function(param){return residence}, - _ccs_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bB_,1)}, - _cct_=caml_call4(Runtime_ocaml_Runtime[63],_bC_,[0],_ccs_,_ccr_), - smic_dot_residence= - caml_call3(Runtime_ocaml_Runtime[28],_bD_,embed_collectivite,_cct_)} - catch(_cdF_) - {_cdF_ = caml_wrap_exception(_cdF_); - if(_cdF_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_bA_]; - throw _cdF_} - var - _ccu_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_bE_,smic), - [0,smic_dot_date_courante,smic_dot_residence]), - result=caml_call2(Runtime_ocaml_Runtime[27],_bF_,_ccu_), - smic_dot_brut_horaire=result[1]; - try - {var - _ccv_=function(param){return 0}, - _ccw_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bH_,1)}, - _ccx_= - [0, - function(param) - {function _cds_(param){return 1} - function _cdt_(param) - {var - _cdu_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bI_), - _cdv_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bJ_), - _cdw_=caml_call2(Runtime_ocaml_Runtime[84],_cdv_,_cdu_), - _cdx_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bK_), - _cdy_=caml_call2(Runtime_ocaml_Runtime[84],_cdx_,_cdw_), - _cdz_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bL_), - _cdA_=caml_call2(Runtime_ocaml_Runtime[84],_cdz_,_cdy_), - _cdB_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bM_), - _cdC_=caml_call2(Runtime_ocaml_Runtime[84],_cdB_,_cdA_), - _cdD_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bN_), - _cdE_=caml_call2(Runtime_ocaml_Runtime[84],_cdD_,_cdC_); - return caml_call2(Runtime_ocaml_Runtime[29],_bO_,_cdE_)} - return caml_call4(Runtime_ocaml_Runtime[63],_bP_,[0],_cdt_,_cds_)}], - _ccy_=caml_call4(Runtime_ocaml_Runtime[63],_bQ_,_ccx_,_ccw_,_ccv_)} - catch(_cdr_) - {_cdr_ = caml_wrap_exception(_cdr_); - if(_cdr_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_bG_]; - throw _cdr_} - var - regime_outre_mer_l751_1= - caml_call3 - (Runtime_ocaml_Runtime[28],_bR_,Runtime_ocaml_Runtime[12],_ccy_); - try - {var - _ccz_= - function(param) - {var - _cdo_=caml_call1(Runtime_ocaml_Runtime[39],cst_169), - _cdp_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55), - _cdq_= - caml_call2 - (Runtime_ocaml_Runtime[104],smic_dot_brut_horaire,_cdp_); - return caml_call2(Runtime_ocaml_Runtime[104],_cdq_,_cdo_)}, - _ccA_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bT_,1)}, - _ccB_= - [0, - function(param) - {function _cdj_(param) - {var - _cdl_=caml_call1(Runtime_ocaml_Runtime[39],cst_169$0), - _cdm_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55$0), - _cdn_= - caml_call2 - (Runtime_ocaml_Runtime[104],smic_dot_brut_horaire,_cdm_); - return caml_call2(Runtime_ocaml_Runtime[104],_cdn_,_cdl_)} - function _cdk_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_bU_,regime_outre_mer_l751_1)} - return caml_call4(Runtime_ocaml_Runtime[63],_bV_,[0],_cdk_,_cdj_)}], - _ccC_=caml_call4(Runtime_ocaml_Runtime[63],_bW_,_ccB_,_ccA_,_ccz_)} - catch(_cdi_) - {_cdi_ = caml_wrap_exception(_cdi_); - if(_cdi_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_bS_]; - throw _cdi_} - var - plafond_l512_3_2= - caml_call3 - (Runtime_ocaml_Runtime[28],_bX_,Runtime_ocaml_Runtime[13],_ccC_); - function _ccD_(param) - {try - {var - _cc6_=function(param){return 0}, - _cc7_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_bZ_,1)}, - _cc8_= - [0, - function(param$0) - {function _cc$_(param){return 1} - function _cda_(param$0) - {var - _cdb_= - caml_call2 - (Runtime_ocaml_Runtime[117],param[3],plafond_l512_3_2); - switch(param[2][0]) - {case 0:var _cdc_=0;break; - case 1:var _cdc_=0;break; - default:var _cdc_=1} - switch(param[2][0]) - {case 0:var _cdd_=0;break; - case 1:var _cdd_=1;break; - default:var _cdd_=0} - var _cde_=caml_call2(Runtime_ocaml_Runtime[84],_cdd_,_cdc_); - switch(param[2][0]) - {case 0:var _cdf_=1;break; - case 1:var _cdf_=0;break; - default:var _cdf_=0} - var - _cdg_=caml_call2(Runtime_ocaml_Runtime[84],_cdf_,_cde_), - _cdh_=caml_call2(Runtime_ocaml_Runtime[83],_cdg_,_cdb_); - return caml_call2(Runtime_ocaml_Runtime[29],_b0_,_cdh_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_b1_,[0],_cda_,_cc$_)}], - _cc9_=caml_call4(Runtime_ocaml_Runtime[63],_b2_,_cc8_,_cc7_,_cc6_); - return _cc9_} - catch(_cc__) - {_cc__ = caml_wrap_exception(_cc__); - if(_cc__ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_bY_]; - throw _cc__}} - var - conditions_hors_age= - caml_call3 - (Runtime_ocaml_Runtime[28],_b3_,Runtime_ocaml_Runtime[10],_ccD_); - function _ccE_(param) - {try - {var - _ccF_=function(param){return 0}, - _ccG_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_b5_,1)}, - _ccH_= - [0, - function(param$0) - {function _ccK_(param$0) - {function _ccP_(param){throw Runtime_ocaml_Runtime[2]} - function _ccQ_(param){return 0} - var - _ccR_= - [0, - function(param$0) - {function _ccS_(param){return 1} - function _ccT_(param$0) - {switch(param[2][0]) - {case 0:var _cc3_=0;break; - case 1:var _cc3_=1;break; - default:var _cc3_=0} - switch(param[2][0]) - {case 0:var _cc4_=1;break; - case 1:var _cc4_=0;break; - default:var _cc4_=0} - var _cc5_=caml_call2(Runtime_ocaml_Runtime[84],_cc4_,_cc3_); - return caml_call2(Runtime_ocaml_Runtime[29],_b6_,_cc5_)} - var - _ccU_= - [0, - function(param$0) - {function _ccV_(param){return 1} - function _ccW_(param$0) - {var - _ccX_= - caml_call2(Runtime_ocaml_Runtime[94],param[4],age_l512_3_2), - _ccY_= - caml_call2(Runtime_ocaml_Runtime[124],_ccX_,date_courante), - _ccZ_= - caml_call2 - (Runtime_ocaml_Runtime[117],param[3],plafond_l512_3_2), - _cc0_=caml_call2(Runtime_ocaml_Runtime[83],_ccZ_,_ccY_); - switch(param[2][0]) - {case 0:var _cc1_=0;break; - case 1:var _cc1_=0;break; - default:var _cc1_=1} - var _cc2_=caml_call2(Runtime_ocaml_Runtime[83],_cc1_,_cc0_); - return caml_call2(Runtime_ocaml_Runtime[29],_b7_,_cc2_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_b8_,[0],_ccW_,_ccV_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_b9_,_ccU_,_ccT_,_ccS_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_b__,_ccR_,_ccQ_,_ccP_)} - function _ccL_(param){return 1} - var - _ccM_= - [0, - function(param$0) - {function _ccN_(param){return 0} - function _ccO_(param$0) - {return caml_call2(Runtime_ocaml_Runtime[29],_b$_,param[7])} - return caml_call4 - (Runtime_ocaml_Runtime[63],_ca_,[0],_ccO_,_ccN_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_cb_,_ccM_,_ccL_,_ccK_)}], - _ccI_=caml_call4(Runtime_ocaml_Runtime[63],_cc_,_ccH_,_ccG_,_ccF_); - return _ccI_} - catch(_ccJ_) - {_ccJ_ = caml_wrap_exception(_ccJ_); - if(_ccJ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_b4_]; - throw _ccJ_}} - var - droit_ouvert= - caml_call3 - (Runtime_ocaml_Runtime[28],_cd_,Runtime_ocaml_Runtime[10],_ccE_); - return [0, - droit_ouvert, - conditions_hors_age, - age_l512_3_2, - regime_outre_mer_l751_1]} - function allocations_familiales(allocations_familiales_in) - {var - personne_charge_effective_perm=allocations_familiales_in[1], - personne_charge_effective_perm$0=allocations_familiales_in[2], - ressources_menage=allocations_familiales_in[3], - residence=allocations_familiales_in[4], - date_courante=allocations_familiales_in[5], - enfants_a_charge=allocations_familiales_in[6], - avait_enfant_a_charge_avant_1e=allocations_familiales_in[7]; - function _bVU_(param) - {try - {var - _cbZ_=function(param){throw Runtime_ocaml_Runtime[2]}, - _cb0_=function(param){return 0}, - _cb1_= - function(param$0) - {function _cca_(param){return _cf_} - function _ccb_(param$0) - {switch(param[5][0]) - {case 0:var _cck_=0;break; - case 1:var _cck_=0;break; - case 2:var _cck_=1;break; - case 3:var _cck_=0;break; - default:var _cck_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_cg_,_cck_)} - var - _ccc_= - [0, - function(param$0) - {function _ccd_(param){return _ch_} - function _cce_(param$0) - {switch(param[5][0]) - {case 0:var _ccj_=0;break; - case 1:var _ccj_=1;break; - case 2:var _ccj_=0;break; - case 3:var _ccj_=0;break; - default:var _ccj_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_ci_,_ccj_)} - var - _ccf_= - [0, - function(param$0) - {function _ccg_(param){return _cj_} - function _cch_(param$0) - {switch(param[5][0]) - {case 0:var _cci_=0;break; - case 1:var _cci_=0;break; - case 2:var _cci_=0;break; - case 3:var _cci_=1;break; - default:var _cci_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_ck_,_cci_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_cl_,[0],_cch_,_ccg_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_cm_,_ccf_,_cce_,_ccd_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_cn_,_ccc_,_ccb_,_cca_)}, - _cb2_= - function(param$0) - {function _cb9_(param){return _co_} - function _cb__(param$0) - {switch(param[5][0]) - {case 0:var _cb$_=0;break; - case 1:var _cb$_=0;break; - case 2:var _cb$_=0;break; - case 3:var _cb$_=0;break; - default:var _cb$_=1} - return caml_call2(Runtime_ocaml_Runtime[29],_cp_,_cb$_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_cq_,[0],_cb__,_cb9_)}, - _cb3_= - [0, - function(param$0) - {function _cb6_(param){return _cr_} - function _cb7_(param$0) - {switch(param[5][0]) - {case 0:var _cb8_=1;break; - case 1:var _cb8_=0;break; - case 2:var _cb8_=0;break; - case 3:var _cb8_=0;break; - default:var _cb8_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_cs_,_cb8_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_ct_,[0],_cb7_,_cb6_)}, - _cb2_, - _cb1_], - _cb4_=caml_call4(Runtime_ocaml_Runtime[63],_cu_,_cb3_,_cb0_,_cbZ_); - return _cb4_} - catch(_cb5_) - {_cb5_ = caml_wrap_exception(_cb5_); - if(_cb5_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ce_]; - throw _cb5_}} - var - prise_en_compte= - caml_call3 - (Runtime_ocaml_Runtime[28],_cv_,Runtime_ocaml_Runtime[10],_bVU_); - function _bVV_(param) - {try - {var - _cbB_=function(param){throw Runtime_ocaml_Runtime[2]}, - _cbC_=function(param){return 0}, - _cbD_= - function(param$0) - {function _cbK_(param){return _cx_} - function _cbL_(param$0) - {switch(param[5][0]) - {case 0:var _cbY_=0;break; - case 1:var _cbY_=0;break; - case 2:var _cbY_=1;break; - case 3:var _cbY_=0;break; - default:var _cbY_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_cy_,_cbY_)} - var - _cbM_= - [0, - function(param$0) - {function _cbN_(param){return _cz_} - function _cbO_(param$0) - {switch(param[5][0]) - {case 0:var _cbX_=0;break; - case 1:var _cbX_=1;break; - case 2:var _cbX_=0;break; - case 3:var _cbX_=0;break; - default:var _cbX_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_cA_,_cbX_)} - var - _cbP_= - [0, - function(param$0) - {function _cbQ_(param){return _cB_} - function _cbR_(param$0) - {switch(param[5][0]) - {case 0:var _cbW_=1;break; - case 1:var _cbW_=0;break; - case 2:var _cbW_=0;break; - case 3:var _cbW_=0;break; - default:var _cbW_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_cC_,_cbW_)} - var - _cbS_= - [0, - function(param$0) - {function _cbT_(param){return _cD_} - function _cbU_(param$0) - {switch(param[5][0]) - {case 0:var _cbV_=0;break; - case 1:var _cbV_=0;break; - case 2:var _cbV_=0;break; - case 3:var _cbV_=1;break; - default:var _cbV_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_cE_,_cbV_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_cF_,[0],_cbU_,_cbT_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_cG_,_cbS_,_cbR_,_cbQ_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_cH_,_cbP_,_cbO_,_cbN_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_cI_,_cbM_,_cbL_,_cbK_)}, - _cbE_= - [0, - function(param$0) - {function _cbH_(param){return _cJ_} - function _cbI_(param$0) - {switch(param[5][0]) - {case 0:var _cbJ_=0;break; - case 1:var _cbJ_=0;break; - case 2:var _cbJ_=0;break; - case 3:var _cbJ_=0;break; - default:var _cbJ_=1} - return caml_call2(Runtime_ocaml_Runtime[29],_cK_,_cbJ_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_cL_,[0],_cbI_,_cbH_)}, - _cbD_], - _cbF_=caml_call4(Runtime_ocaml_Runtime[63],_cM_,_cbE_,_cbC_,_cbB_); - return _cbF_} - catch(_cbG_) - {_cbG_ = caml_wrap_exception(_cbG_); - if(_cbG_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_cw_]; - throw _cbG_}} - caml_call3 - (Runtime_ocaml_Runtime[28],_cN_,Runtime_ocaml_Runtime[10],_bVV_); - try - {var - _bVW_= - function(param){return caml_call1(Runtime_ocaml_Runtime[46],cst_3)}, - _bVX_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cP_,1)}, - _bVY_=caml_call4(Runtime_ocaml_Runtime[63],_cQ_,[0],_bVX_,_bVW_)} - catch(_cbA_) - {_cbA_ = caml_wrap_exception(_cbA_); - if(_cbA_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_cO_]; - throw _cbA_} - caml_call3 - (Runtime_ocaml_Runtime[28],_cR_,Runtime_ocaml_Runtime[14],_bVY_); - try - {var - _bVZ_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[46],cst_3$0)}, - _bV0_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cT_,1)}, - _bV1_=caml_call4(Runtime_ocaml_Runtime[63],_cU_,[0],_bV0_,_bVZ_)} - catch(_cbz_) - {_cbz_ = caml_wrap_exception(_cbz_); - if(_cbz_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_cS_]; - throw _cbz_} - var - nombre_enfants_alinea_2_l521_3= - caml_call3 - (Runtime_ocaml_Runtime[28],_cV_,Runtime_ocaml_Runtime[14],_bV1_), - _bV2_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_cW_,allocation_familiales_avril200), - 0), - result=caml_call2(Runtime_ocaml_Runtime[27],_cX_,_bV2_), - version_avril_2008_dot_age_min=result[1]; - try - {var - _bV3_=function(param){return date_courante}, - _bV4_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cZ_,1)}, - _bV5_=caml_call4(Runtime_ocaml_Runtime[63],_c0_,[0],_bV4_,_bV3_), - bmaf_dot_date_courante= - caml_call3 - (Runtime_ocaml_Runtime[28],_c1_,Runtime_ocaml_Runtime[16],_bV5_)} - catch(_cby_) - {_cby_ = caml_wrap_exception(_cby_); - if(_cby_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_cY_]; - throw _cby_} - var - _bV6_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_c2_,base_mensuelle_allocations_fam), - [0,bmaf_dot_date_courante]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_c3_,_bV6_), - bmaf_dot_montant=result$0[1]; - try - {var - _bV7_=function(param){return date_courante}, - _bV8_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_c5_,1)}, - _bV9_=caml_call4(Runtime_ocaml_Runtime[63],_c6_,[0],_bV8_,_bV7_), - prestations_familiales_dot_dat= - caml_call3 - (Runtime_ocaml_Runtime[28],_c7_,Runtime_ocaml_Runtime[16],_bV9_)} - catch(_cbx_) - {_cbx_ = caml_wrap_exception(_cbx_); - if(_cbx_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_c4_]; - throw _cbx_} - try - {var - _bV__=function(param){return _c9_}, - _bV$_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_c__,1)}, - _bWa_=caml_call4(Runtime_ocaml_Runtime[63],_c$_,[0],_bV$_,_bV__), - prestations_familiales_dot_pre= - caml_call3 - (Runtime_ocaml_Runtime[28], - _da_, - embed_element_prestations_fami, - _bWa_)} - catch(_cbw_) - {_cbw_ = caml_wrap_exception(_cbw_); - if(_cbw_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_c8_]; - throw _cbw_} - try - {var - _bWb_=function(param){return residence}, - _bWc_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_dc_,1)}, - _bWd_=caml_call4(Runtime_ocaml_Runtime[63],_dd_,[0],_bWc_,_bWb_), - prestations_familiales_dot_res= - caml_call3(Runtime_ocaml_Runtime[28],_de_,embed_collectivite,_bWd_)} - catch(_cbv_) - {_cbv_ = caml_wrap_exception(_cbv_); - if(_cbv_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_db_]; - throw _cbv_} - var - _bWe_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_df_,prestations_familiales), - [0, - prestations_familiales_dot_dat, - prestations_familiales_dot_pre, - prestations_familiales_dot_res]), - result$1=caml_call2(Runtime_ocaml_Runtime[27],_dg_,_bWe_), - prestations_familiales_dot_dro=result$1[1], - prestations_familiales_dot_con=result$1[2], - prestations_familiales_dot_age=result$1[3], - prestations_familiales_dot_reg=result$1[4]; - try - {var - _bWf_=function(param){return enfants_a_charge}, - _bWg_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_di_,1)}, - _bWh_=caml_call4(Runtime_ocaml_Runtime[63],_dj_,[0],_bWg_,_bWf_), - _bWi_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant), - enfant_le_plus_age_dot_enfants= - caml_call3(Runtime_ocaml_Runtime[28],_dk_,_bWi_,_bWh_)} - catch(_cbu_) - {_cbu_ = caml_wrap_exception(_cbu_); - if(_cbu_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_dh_]; - throw _cbu_} - var - _bWj_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_dl_,enfant_le_plus_age), - [0,enfant_le_plus_age_dot_enfants]), - result$2=caml_call2(Runtime_ocaml_Runtime[27],_dm_,_bWj_), - enfant_le_plus_age_dot_le_plus=result$2[1]; - function _bWk_(param) - {try - {var - _cbj_= - function(param) - {return caml_call3(Runtime_ocaml_Runtime[60],14,0,0)}, - _cbk_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_do_,1)}, - _cbl_= - [0, - function(param$0) - {function _cbo_(param){return version_avril_2008_dot_age_min} - function _cbp_(param$0) - {var - _cbq_=caml_call3(Runtime_ocaml_Runtime[57],2008,4,30), - _cbr_=caml_call3(Runtime_ocaml_Runtime[60],11,0,0), - _cbs_=caml_call2(Runtime_ocaml_Runtime[94],param[4],_cbr_), - _cbt_=caml_call2(Runtime_ocaml_Runtime[119],_cbs_,_cbq_); - return caml_call2(Runtime_ocaml_Runtime[29],_dp_,_cbt_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_dq_,[0],_cbp_,_cbo_)}], - _cbm_=caml_call4(Runtime_ocaml_Runtime[63],_dr_,_cbl_,_cbk_,_cbj_); - return _cbm_} - catch(_cbn_) - {_cbn_ = caml_wrap_exception(_cbn_); - if(_cbn_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_dn_]; - throw _cbn_}} - var - age_minimum_alinea_1_l521_3= - caml_call3 - (Runtime_ocaml_Runtime[28],_ds_,Runtime_ocaml_Runtime[10],_bWk_); - try - {var - _bWl_= - function(param) - {function _cbf_(enfant) - {var - _cbg_= - caml_call3(Runtime_ocaml_Runtime[28],_du_,embed_enfant,enfant), - _cbh_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _dv_, - prestations_familiales_dot_dro), - _cbg_), - _cbi_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _dw_, - Runtime_ocaml_Runtime[12], - _cbh_); - return caml_call2(Runtime_ocaml_Runtime[27],_dx_,_cbi_)} - return caml_call2 - (Runtime_ocaml_Runtime[90],_cbf_,enfants_a_charge)}, - _bWm_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_dy_,1)}, - _bWn_=caml_call4(Runtime_ocaml_Runtime[63],_dz_,[0],_bWm_,_bWl_)} - catch(_cbe_) - {_cbe_ = caml_wrap_exception(_cbe_); - if(_cbe_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_dt_]; - throw _cbe_} - var - _bWo_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant), - enfants_a_charge_droit_ouvert_= - caml_call3(Runtime_ocaml_Runtime[28],_dA_,_bWo_,_bWn_); - function _bWp_(param) - {try - {var - _cba_= - function(param$0) - {return caml_call2 - (Runtime_ocaml_Runtime[86], - enfant_le_plus_age_dot_le_plus, - param)}, - _cbb_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_dC_,1)}, - _cbc_=caml_call4(Runtime_ocaml_Runtime[63],_dD_,[0],_cbb_,_cba_); - return _cbc_} - catch(_cbd_) - {_cbd_ = caml_wrap_exception(_cbd_); - if(_cbd_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_dB_]; - throw _cbd_}} - var - est_enfant_le_plus_age= - caml_call3 - (Runtime_ocaml_Runtime[28],_dE_,Runtime_ocaml_Runtime[10],_bWp_); - try - {var - _bWq_= - function(param) - {var - _ca7_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _ca8_=caml_call1(Runtime_ocaml_Runtime[69],_ca7_), - _ca9_=caml_call1(Runtime_ocaml_Runtime[31],cst_559500), - _ca__=caml_call2(Runtime_ocaml_Runtime[104],_ca9_,_ca8_), - _ca$_=caml_call1(Runtime_ocaml_Runtime[31],cst_7830000); - return caml_call2(Runtime_ocaml_Runtime[93],_ca$_,_ca__)}, - _bWr_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_dG_,1)}, - _bWs_= - [0, - function(param) - {function _caf_(param){throw Runtime_ocaml_Runtime[2]} - function _cag_(param){return 0} - function _cah_(param) - {function _caV_(param) - {var - _ca2_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _ca3_=caml_call1(Runtime_ocaml_Runtime[69],_ca2_), - _ca4_=caml_call1(Runtime_ocaml_Runtime[31],cst_582700), - _ca5_=caml_call2(Runtime_ocaml_Runtime[104],_ca4_,_ca3_), - _ca6_=caml_call1(Runtime_ocaml_Runtime[31],cst_8155800); - return caml_call2(Runtime_ocaml_Runtime[93],_ca6_,_ca5_)} - function _caW_(param) - {var - _caX_=caml_call3(Runtime_ocaml_Runtime[57],2021,12,31), - _caY_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_caX_), - _caZ_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), - _ca0_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_caZ_), - _ca1_=caml_call2(Runtime_ocaml_Runtime[83],_ca0_,_caY_); - return caml_call2(Runtime_ocaml_Runtime[29],_dH_,_ca1_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_dI_,[0],_caW_,_caV_)} - function _cai_(param) - {function _caJ_(param) - {var - _caQ_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _caR_=caml_call1(Runtime_ocaml_Runtime[69],_caQ_), - _caS_=caml_call1(Runtime_ocaml_Runtime[31],cst_577500), - _caT_=caml_call2(Runtime_ocaml_Runtime[104],_caS_,_caR_), - _caU_=caml_call1(Runtime_ocaml_Runtime[31],cst_8083100); - return caml_call2(Runtime_ocaml_Runtime[93],_caU_,_caT_)} - function _caK_(param) - {var - _caL_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), - _caM_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_caL_), - _caN_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _caO_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_caN_), - _caP_=caml_call2(Runtime_ocaml_Runtime[83],_caO_,_caM_); - return caml_call2(Runtime_ocaml_Runtime[29],_dJ_,_caP_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_dK_,[0],_caK_,_caJ_)} - function _caj_(param) - {function _cax_(param) - {var - _caE_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _caF_=caml_call1(Runtime_ocaml_Runtime[69],_caE_), - _caG_=caml_call1(Runtime_ocaml_Runtime[31],cst_568400), - _caH_=caml_call2(Runtime_ocaml_Runtime[104],_caG_,_caF_), - _caI_=caml_call1(Runtime_ocaml_Runtime[31],cst_7955800); - return caml_call2(Runtime_ocaml_Runtime[93],_caI_,_caH_)} - function _cay_(param) - {var - _caz_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), - _caA_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_caz_), - _caB_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), - _caC_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_caB_), - _caD_=caml_call2(Runtime_ocaml_Runtime[83],_caC_,_caA_); - return caml_call2(Runtime_ocaml_Runtime[29],_dL_,_caD_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_dM_,[0],_cay_,_cax_)} - var - _cak_= - [0, - function(param) - {function _cal_(param) - {var - _cas_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _cat_=caml_call1(Runtime_ocaml_Runtime[69],_cas_), - _cau_=caml_call1(Runtime_ocaml_Runtime[31],cst_562800), - _cav_=caml_call2(Runtime_ocaml_Runtime[104],_cau_,_cat_), - _caw_=caml_call1(Runtime_ocaml_Runtime[31],cst_7877000); - return caml_call2(Runtime_ocaml_Runtime[93],_caw_,_cav_)} - function _cam_(param) - {var - _can_=caml_call3(Runtime_ocaml_Runtime[57],2018,12,31), - _cao_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_can_), - _cap_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), - _caq_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_cap_), - _car_=caml_call2(Runtime_ocaml_Runtime[83],_caq_,_cao_); - return caml_call2(Runtime_ocaml_Runtime[29],_dN_,_car_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_dO_,[0],_cam_,_cal_)}, - _caj_, - _cai_, - _cah_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_dP_,_cak_,_cag_,_caf_)}], - _bWt_=caml_call4(Runtime_ocaml_Runtime[63],_dQ_,_bWs_,_bWr_,_bWq_)} - catch(_cae_) - {_cae_ = caml_wrap_exception(_cae_); - if(_cae_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_dF_]; - throw _cae_} - var - plafond_i_i_d521_3= - caml_call3 - (Runtime_ocaml_Runtime[28],_dR_,Runtime_ocaml_Runtime[13],_bWt_); - try - {var - _bWu_= - function(param) - {var - _b$$_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _caa_=caml_call1(Runtime_ocaml_Runtime[69],_b$$_), - _cab_=caml_call1(Runtime_ocaml_Runtime[31],cst_559500$0), - _cac_=caml_call2(Runtime_ocaml_Runtime[104],_cab_,_caa_), - _cad_=caml_call1(Runtime_ocaml_Runtime[31],cst_5595000); - return caml_call2(Runtime_ocaml_Runtime[93],_cad_,_cac_)}, - _bWv_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_dT_,1)}, - _bWw_= - [0, - function(param) - {function _b$j_(param){throw Runtime_ocaml_Runtime[2]} - function _b$k_(param){return 0} - function _b$l_(param) - {function _b$Z_(param) - {var - _b$6_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b$7_=caml_call1(Runtime_ocaml_Runtime[69],_b$6_), - _b$8_=caml_call1(Runtime_ocaml_Runtime[31],cst_582700$0), - _b$9_=caml_call2(Runtime_ocaml_Runtime[104],_b$8_,_b$7_), - _b$__=caml_call1(Runtime_ocaml_Runtime[31],cst_5827900); - return caml_call2(Runtime_ocaml_Runtime[93],_b$__,_b$9_)} - function _b$0_(param) - {var - _b$1_=caml_call3(Runtime_ocaml_Runtime[57],2021,12,31), - _b$2_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b$1_), - _b$3_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), - _b$4_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b$3_), - _b$5_=caml_call2(Runtime_ocaml_Runtime[83],_b$4_,_b$2_); - return caml_call2(Runtime_ocaml_Runtime[29],_dU_,_b$5_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_dV_,[0],_b$0_,_b$Z_)} - function _b$m_(param) - {function _b$N_(param) - {var - _b$U_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b$V_=caml_call1(Runtime_ocaml_Runtime[69],_b$U_), - _b$W_=caml_call1(Runtime_ocaml_Runtime[31],cst_577500$0), - _b$X_=caml_call2(Runtime_ocaml_Runtime[104],_b$W_,_b$V_), - _b$Y_=caml_call1(Runtime_ocaml_Runtime[31],cst_5775900); - return caml_call2(Runtime_ocaml_Runtime[93],_b$Y_,_b$X_)} - function _b$O_(param) - {var - _b$P_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), - _b$Q_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b$P_), - _b$R_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _b$S_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b$R_), - _b$T_=caml_call2(Runtime_ocaml_Runtime[83],_b$S_,_b$Q_); - return caml_call2(Runtime_ocaml_Runtime[29],_dW_,_b$T_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_dX_,[0],_b$O_,_b$N_)} - function _b$n_(param) - {function _b$B_(param) - {var - _b$I_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b$J_=caml_call1(Runtime_ocaml_Runtime[69],_b$I_), - _b$K_=caml_call1(Runtime_ocaml_Runtime[31],cst_568400$0), - _b$L_=caml_call2(Runtime_ocaml_Runtime[104],_b$K_,_b$J_), - _b$M_=caml_call1(Runtime_ocaml_Runtime[31],cst_5684900); - return caml_call2(Runtime_ocaml_Runtime[93],_b$M_,_b$L_)} - function _b$C_(param) - {var - _b$D_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), - _b$E_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b$D_), - _b$F_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), - _b$G_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b$F_), - _b$H_=caml_call2(Runtime_ocaml_Runtime[83],_b$G_,_b$E_); - return caml_call2(Runtime_ocaml_Runtime[29],_dY_,_b$H_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_dZ_,[0],_b$C_,_b$B_)} - var - _b$o_= - [0, - function(param) - {function _b$p_(param) - {var - _b$w_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b$x_=caml_call1(Runtime_ocaml_Runtime[69],_b$w_), - _b$y_=caml_call1(Runtime_ocaml_Runtime[31],cst_562800$0), - _b$z_=caml_call2(Runtime_ocaml_Runtime[104],_b$y_,_b$x_), - _b$A_=caml_call1(Runtime_ocaml_Runtime[31],cst_5628600); - return caml_call2(Runtime_ocaml_Runtime[93],_b$A_,_b$z_)} - function _b$q_(param) - {var - _b$r_=caml_call3(Runtime_ocaml_Runtime[57],2018,12,31), - _b$s_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b$r_), - _b$t_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), - _b$u_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b$t_), - _b$v_=caml_call2(Runtime_ocaml_Runtime[83],_b$u_,_b$s_); - return caml_call2(Runtime_ocaml_Runtime[29],_d0_,_b$v_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_d1_,[0],_b$q_,_b$p_)}, - _b$n_, - _b$m_, - _b$l_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_d2_,_b$o_,_b$k_,_b$j_)}], - _bWx_=caml_call4(Runtime_ocaml_Runtime[63],_d3_,_bWw_,_bWv_,_bWu_)} - catch(_b$i_) - {_b$i_ = caml_wrap_exception(_b$i_); - if(_b$i_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_dS_]; - throw _b$i_} - var - plafond_i_d521_3= - caml_call3 - (Runtime_ocaml_Runtime[28],_d4_,Runtime_ocaml_Runtime[13],_bWx_); - try - {var - _bWy_=function(param){return 0}, - _bWz_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_d6_,1)}, - _bWA_= - [0, - function(param) - {function _b_$_(param){return 1} - function _b$a_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_d7_,1)} - var - _b$b_= - [0, - function(param) - {function _b$c_(param){return 0} - function _b$d_(param) - {var - _b$e_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$0), - _b$f_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b$g_=caml_call2(Runtime_ocaml_Runtime[86],_b$f_,_b$e_), - _b$h_= - caml_call2 - (Runtime_ocaml_Runtime[83], - prestations_familiales_dot_reg, - _b$g_); - return caml_call2(Runtime_ocaml_Runtime[29],_d8_,_b$h_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_d9_,[0],_b$d_,_b$c_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_d__,_b$b_,_b$a_,_b_$_)}], - _bWB_=caml_call4(Runtime_ocaml_Runtime[63],_d$_,_bWA_,_bWz_,_bWy_)} - catch(_b___) - {_b___ = caml_wrap_exception(_b___); - if(_b___ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_d5_]; - throw _b___} - var - droit_ouvert_complement= - caml_call3 - (Runtime_ocaml_Runtime[28],_ea_,Runtime_ocaml_Runtime[12],_bWB_); - function _bWC_(param) - {try - {var - _b_J_=function(param){return 0}, - _b_K_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_ec_,1)}, - _b_L_= - [0, - function(param$0) - {function _b_O_(param){return 1} - function _b_P_(param$0) - {var - _b_X_= - caml_call3 - (Runtime_ocaml_Runtime[28],_ed_,embed_enfant,param), - _b_Y_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _ee_, - prestations_familiales_dot_con), - _b_X_), - _b_Z_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _ef_, - Runtime_ocaml_Runtime[12], - _b_Y_), - _b_0_=caml_call2(Runtime_ocaml_Runtime[27],_eg_,_b_Z_), - _b_1_=caml_call2(Runtime_ocaml_Runtime[83],param[6],_b_0_), - _b_2_=caml_call3(Runtime_ocaml_Runtime[60],0,0,365), - _b_3_= - caml_call2 - (Runtime_ocaml_Runtime[94], - param[4], - prestations_familiales_dot_age), - _b_4_= - caml_call2(Runtime_ocaml_Runtime[99],_b_3_,date_courante), - _b_5_=caml_call2(Runtime_ocaml_Runtime[113],_b_4_,_b_2_), - _b_6_=caml_call2(Runtime_ocaml_Runtime[83],_b_5_,_b_1_), - _b_7_=caml_call1(Runtime_ocaml_Runtime[68],enfants_a_charge), - _b_8_= - caml_call2 - (Runtime_ocaml_Runtime[125], - _b_7_, - nombre_enfants_alinea_2_l521_3), - _b_9_=caml_call2(Runtime_ocaml_Runtime[83],_b_8_,_b_6_); - return caml_call2(Runtime_ocaml_Runtime[29],_eh_,_b_9_)} - var - _b_Q_= - [0, - function(param) - {function _b_R_(param){return 0} - function _b_S_(param) - {var - _b_T_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$1), - _b_U_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b_V_=caml_call2(Runtime_ocaml_Runtime[86],_b_U_,_b_T_), - _b_W_= - caml_call2 - (Runtime_ocaml_Runtime[83], - prestations_familiales_dot_reg, - _b_V_); - return caml_call2(Runtime_ocaml_Runtime[29],_ei_,_b_W_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_ej_,[0],_b_S_,_b_R_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_ek_,_b_Q_,_b_P_,_b_O_)}], - _b_M_=caml_call4(Runtime_ocaml_Runtime[63],_el_,_b_L_,_b_K_,_b_J_); - return _b_M_} - catch(_b_N_) - {_b_N_ = caml_wrap_exception(_b_N_); - if(_b_N_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_eb_]; - throw _b_N_}} - var - droit_ouvert_forfaitaire= - caml_call3 - (Runtime_ocaml_Runtime[28],_em_,Runtime_ocaml_Runtime[10],_bWC_); - try - {var - _bWD_= - function(param) - {var - _b_B_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$1), - _b_C_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b_C_,_b_B_)) - {var - _b_D_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$2), - _b_E_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b_F_=caml_call2(Runtime_ocaml_Runtime[96],_b_E_,_b_D_), - _b_G_=caml_call1(Runtime_ocaml_Runtime[69],_b_F_), - _b_H_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0463), - _b_I_= - caml_call2(Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_H_); - return caml_call2(Runtime_ocaml_Runtime[104],_b_I_,_b_G_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$0)}, - _bWE_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_eo_,1)}, - _bWF_=caml_call4(Runtime_ocaml_Runtime[63],_ep_,[0],_bWE_,_bWD_)} - catch(_b_A_) - {_b_A_ = caml_wrap_exception(_b_A_); - if(_b_A_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_en_]; - throw _b_A_} - var - montant_initial_base_quatrieme= - caml_call3 - (Runtime_ocaml_Runtime[28],_eq_,Runtime_ocaml_Runtime[13],_bWF_); - try - {var - _bWG_= - function(param) - {var - _b_x_=caml_call1(Runtime_ocaml_Runtime[46],cst_2), - _b_y_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b_y_,_b_x_)) - {var _b_z_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_z_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$1)}, - _bWH_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_es_,1)}, - _bWI_= - [0, - function(param) - {function _b8t_(param){throw Runtime_ocaml_Runtime[2]} - function _b8u_(param){return 0} - function _b8v_(param) - {function _b_l_(param) - {var - _b_u_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$0), - _b_v_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b_v_,_b_u_)) - {var _b_w_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_143); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_w_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$2)} - function _b_m_(param) - {var - _b_n_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), - _b_o_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b_n_), - _b_p_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _b_q_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b_p_), - _b_r_=caml_call2(Runtime_ocaml_Runtime[83],_b_q_,_b_o_), - _b_s_=caml_call2(Runtime_ocaml_Runtime[86],residence,_et_), - _b_t_=caml_call2(Runtime_ocaml_Runtime[83],_b_s_,_b_r_); - return caml_call2(Runtime_ocaml_Runtime[29],_eu_,_b_t_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_ev_,[0],_b_m_,_b_l_)} - function _b8w_(param) - {function _b9$_(param) - {var - _b_i_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$1), - _b_j_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b_j_,_b_i_)) - {var _b_k_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1259); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_k_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$3)} - function _b_a_(param) - {var - _b_b_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), - _b_c_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b_b_), - _b_d_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), - _b_e_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b_d_), - _b_f_=caml_call2(Runtime_ocaml_Runtime[83],_b_e_,_b_c_), - _b_g_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ew_), - _b_h_=caml_call2(Runtime_ocaml_Runtime[83],_b_g_,_b_f_); - return caml_call2(Runtime_ocaml_Runtime[29],_ex_,_b_h_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_ey_,[0],_b_a_,_b9$_)} - function _b8x_(param) - {function _b9Z_(param) - {var - _b98_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$2), - _b99_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b99_,_b98_)) - {var _b9__=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1089); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9__)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$4)} - function _b90_(param) - {var - _b91_=caml_call3(Runtime_ocaml_Runtime[57],2018,12,31), - _b92_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b91_), - _b93_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), - _b94_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b93_), - _b95_=caml_call2(Runtime_ocaml_Runtime[83],_b94_,_b92_), - _b96_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ez_), - _b97_=caml_call2(Runtime_ocaml_Runtime[83],_b96_,_b95_); - return caml_call2(Runtime_ocaml_Runtime[29],_eA_,_b97_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_eB_,[0],_b90_,_b9Z_)} - function _b8y_(param) - {function _b9N_(param) - {var - _b9W_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$3), - _b9X_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b9X_,_b9W_)) - {var _b9Y_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0918); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9Y_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$5)} - function _b9O_(param) - {var - _b9P_=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), - _b9Q_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b9P_), - _b9R_=caml_call3(Runtime_ocaml_Runtime[57],2017,1,1), - _b9S_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b9R_), - _b9T_=caml_call2(Runtime_ocaml_Runtime[83],_b9S_,_b9Q_), - _b9U_=caml_call2(Runtime_ocaml_Runtime[86],residence,_eC_), - _b9V_=caml_call2(Runtime_ocaml_Runtime[83],_b9U_,_b9T_); - return caml_call2(Runtime_ocaml_Runtime[29],_eD_,_b9V_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_eE_,[0],_b9O_,_b9N_)} - function _b8z_(param) - {function _b9B_(param) - {var - _b9K_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$4), - _b9L_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b9L_,_b9K_)) - {var _b9M_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0842); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9M_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$6)} - function _b9C_(param) - {var - _b9D_=caml_call3(Runtime_ocaml_Runtime[57],2016,12,31), - _b9E_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b9D_), - _b9F_=caml_call3(Runtime_ocaml_Runtime[57],2016,1,1), - _b9G_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b9F_), - _b9H_=caml_call2(Runtime_ocaml_Runtime[83],_b9G_,_b9E_), - _b9I_=caml_call2(Runtime_ocaml_Runtime[86],residence,_eF_), - _b9J_=caml_call2(Runtime_ocaml_Runtime[83],_b9I_,_b9H_); - return caml_call2(Runtime_ocaml_Runtime[29],_eG_,_b9J_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_eH_,[0],_b9C_,_b9B_)} - function _b8A_(param) - {function _b9p_(param) - {var - _b9y_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$5), - _b9z_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b9z_,_b9y_)) - {var _b9A_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0766); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9A_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$7)} - function _b9q_(param) - {var - _b9r_=caml_call3(Runtime_ocaml_Runtime[57],2015,12,31), - _b9s_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b9r_), - _b9t_=caml_call3(Runtime_ocaml_Runtime[57],2015,1,1), - _b9u_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b9t_), - _b9v_=caml_call2(Runtime_ocaml_Runtime[83],_b9u_,_b9s_), - _b9w_=caml_call2(Runtime_ocaml_Runtime[86],residence,_eI_), - _b9x_=caml_call2(Runtime_ocaml_Runtime[83],_b9w_,_b9v_); - return caml_call2(Runtime_ocaml_Runtime[29],_eJ_,_b9x_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_eK_,[0],_b9q_,_b9p_)} - function _b8B_(param) - {function _b9d_(param) - {var - _b9m_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$6), - _b9n_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b9n_,_b9m_)) - {var _b9o_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_069); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9o_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$8)} - function _b9e_(param) - {var - _b9f_=caml_call3(Runtime_ocaml_Runtime[57],2014,12,31), - _b9g_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b9f_), - _b9h_=caml_call3(Runtime_ocaml_Runtime[57],2014,1,1), - _b9i_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b9h_), - _b9j_=caml_call2(Runtime_ocaml_Runtime[83],_b9i_,_b9g_), - _b9k_=caml_call2(Runtime_ocaml_Runtime[86],residence,_eL_), - _b9l_=caml_call2(Runtime_ocaml_Runtime[83],_b9k_,_b9j_); - return caml_call2(Runtime_ocaml_Runtime[29],_eM_,_b9l_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_eN_,[0],_b9e_,_b9d_)} - function _b8C_(param) - {function _b83_(param) - {var - _b9a_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$7), - _b9b_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b9b_,_b9a_)) - {var _b9c_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0615); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9c_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$9)} - function _b84_(param) - {var - _b85_=caml_call3(Runtime_ocaml_Runtime[57],2013,12,31), - _b86_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b85_), - _b87_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), - _b88_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b87_), - _b89_=caml_call2(Runtime_ocaml_Runtime[83],_b88_,_b86_), - _b8__=caml_call2(Runtime_ocaml_Runtime[86],residence,_eO_), - _b8$_=caml_call2(Runtime_ocaml_Runtime[83],_b8__,_b89_); - return caml_call2(Runtime_ocaml_Runtime[29],_eP_,_b8$_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_eQ_,[0],_b84_,_b83_)} - function _b8D_(param) - {function _b8R_(param) - {var - _b80_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$8), - _b81_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b81_,_b80_)) - {var _b82_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0539); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b82_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$10)} - function _b8S_(param) - {var - _b8T_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), - _b8U_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b8T_), - _b8V_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), - _b8W_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b8V_), - _b8X_=caml_call2(Runtime_ocaml_Runtime[83],_b8W_,_b8U_), - _b8Y_=caml_call2(Runtime_ocaml_Runtime[86],residence,_eR_), - _b8Z_=caml_call2(Runtime_ocaml_Runtime[83],_b8Y_,_b8X_); - return caml_call2(Runtime_ocaml_Runtime[29],_eS_,_b8Z_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_eT_,[0],_b8S_,_b8R_)} - var - _b8E_= - [0, - function(param) - {function _b8F_(param) - {var - _b8O_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$9), - _b8P_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b8P_,_b8O_)) - {var - _b8Q_= - caml_call1(Runtime_ocaml_Runtime[39],cst_0_0463$0); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b8Q_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$11)} - function _b8G_(param) - {var - _b8H_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), - _b8I_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b8H_), - _b8J_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), - _b8K_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b8J_), - _b8L_=caml_call2(Runtime_ocaml_Runtime[83],_b8K_,_b8I_), - _b8M_=caml_call2(Runtime_ocaml_Runtime[86],residence,_eU_), - _b8N_=caml_call2(Runtime_ocaml_Runtime[83],_b8M_,_b8L_); - return caml_call2(Runtime_ocaml_Runtime[29],_eV_,_b8N_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_eW_,[0],_b8G_,_b8F_)}, - _b8D_, - _b8C_, - _b8B_, - _b8A_, - _b8z_, - _b8y_, - _b8x_, - _b8w_, - _b8v_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_eX_,_b8E_,_b8u_,_b8t_)}], - _bWJ_=caml_call4(Runtime_ocaml_Runtime[63],_eY_,_bWI_,_bWH_,_bWG_)} - catch(_b8s_) - {_b8s_ = caml_wrap_exception(_b8s_); - if(_b8s_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_er_]; - throw _b8s_} - var - montant_initial_base_troisieme= - caml_call3 - (Runtime_ocaml_Runtime[28],_eZ_,Runtime_ocaml_Runtime[13],_bWJ_); - try - {var - _bWK_= - function(param) - {var - _b8r_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - return caml_call1(Runtime_ocaml_Runtime[69],_b8r_)}, - _bWL_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_e1_,1)}, - _bWM_=caml_call4(Runtime_ocaml_Runtime[63],_e2_,[0],_bWL_,_bWK_)} - catch(_b8q_) - {_b8q_ = caml_wrap_exception(_b8q_); - if(_b8q_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_e0_]; - throw _b8q_} - var - nombre_total_enfants= - caml_call3 - (Runtime_ocaml_Runtime[28],_e3_,Runtime_ocaml_Runtime[15],_bWM_); - try - {var - _bWN_= - function(param) - {function _b8j_(enfant) - {var - _b8n_= - caml_call3(Runtime_ocaml_Runtime[28],_e5_,embed_enfant,enfant), - _b8o_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_e6_,prise_en_compte), - _b8n_), - _b8p_= - caml_call3 - (Runtime_ocaml_Runtime[28],_e7_,embed_prise_en_compte,_b8o_), - match=caml_call2(Runtime_ocaml_Runtime[27],_e8_,_b8p_); - switch(match[0]) - {case 0:return caml_call1(Runtime_ocaml_Runtime[39],cst_1$2); - case 1:return caml_call1(Runtime_ocaml_Runtime[39],cst_0_5); - default:return caml_call1(Runtime_ocaml_Runtime[39],cst_0$12)}} - var - _b8k_= - caml_call2 - (Runtime_ocaml_Runtime[87], - _b8j_, - enfants_a_charge_droit_ouvert_), - _b8l_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$13); - function _b8m_(sum1,sum2) - {return caml_call2(Runtime_ocaml_Runtime[92],sum1,sum2)} - return caml_call3(Runtime_ocaml_Runtime[88],_b8m_,_b8l_,_b8k_)}, - _bWO_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_e9_,1)}, - _bWP_=caml_call4(Runtime_ocaml_Runtime[63],_e__,[0],_bWO_,_bWN_)} - catch(_b8i_) - {_b8i_ = caml_wrap_exception(_b8i_); - if(_b8i_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_e4_]; - throw _b8i_} - var - nombre_moyen_enfants= - caml_call3 - (Runtime_ocaml_Runtime[28],_e$_,Runtime_ocaml_Runtime[15],_bWP_); - try - {var - _bWQ_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$14)}, - _bWR_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_fb_,1)}, - _bWS_= - function(param) - {function _b8b_(param) - {var _b8h_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0588); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b8h_)} - function _b8c_(param) - {var - _b8d_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$3), - _b8e_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b8f_=caml_call2(Runtime_ocaml_Runtime[86],_b8e_,_b8d_), - _b8g_= - caml_call2 - (Runtime_ocaml_Runtime[83], - prestations_familiales_dot_reg, - _b8f_); - return caml_call2(Runtime_ocaml_Runtime[29],_fc_,_b8g_)} - return caml_call4(Runtime_ocaml_Runtime[63],_fd_,[0],_b8c_,_b8b_)}, - _bWT_= - [0, - function(param) - {function _b5B_(param) - {var - _b7__=caml_call1(Runtime_ocaml_Runtime[46],cst_0$15), - _b7$_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b7$_,_b7__)) - {var _b8a_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0588$0); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b8a_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$16)} - function _b5C_(param) - {var _b79_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fe_); - return caml_call2(Runtime_ocaml_Runtime[29],_ff_,_b79_)} - var - _b5D_= - [0, - function(param) - {function _b5E_(param){throw Runtime_ocaml_Runtime[2]} - function _b5F_(param){return 0} - function _b5G_(param) - {function _b73_(param) - {var - _b77_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$17), - _b78_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - return caml_call2(Runtime_ocaml_Runtime[120],_b78_,_b77_) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_5728) - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$18)} - function _b74_(param) - {var - _b75_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fg_), - _b76_= - caml_call2 - (Runtime_ocaml_Runtime[83], - _b75_, - avait_enfant_a_charge_avant_1e); - return caml_call2(Runtime_ocaml_Runtime[29],_fh_,_b76_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_fi_,[0],_b74_,_b73_)} - function _b5H_(param) - {function _b7P_(param) - {var - _b70_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$19), - _b71_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b71_,_b70_)) - {var _b72_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0717); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b72_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$20)} - function _b7Q_(param) - {var - _b7R_= - caml_call1 - (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), - _b7S_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), - _b7T_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b7S_), - _b7U_=caml_call2(Runtime_ocaml_Runtime[83],_b7T_,_b7R_), - _b7V_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _b7W_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b7V_), - _b7X_=caml_call2(Runtime_ocaml_Runtime[83],_b7W_,_b7U_), - _b7Y_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fj_), - _b7Z_=caml_call2(Runtime_ocaml_Runtime[83],_b7Y_,_b7X_); - return caml_call2(Runtime_ocaml_Runtime[29],_fk_,_b7Z_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_fl_,[0],_b7Q_,_b7P_)} - function _b5I_(param) - {function _b7B_(param) - {var - _b7M_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$21), - _b7N_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b7N_,_b7M_)) - {var _b7O_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0847); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b7O_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$22)} - function _b7C_(param) - {var - _b7D_= - caml_call1 - (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), - _b7E_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), - _b7F_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b7E_), - _b7G_=caml_call2(Runtime_ocaml_Runtime[83],_b7F_,_b7D_), - _b7H_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), - _b7I_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b7H_), - _b7J_=caml_call2(Runtime_ocaml_Runtime[83],_b7I_,_b7G_), - _b7K_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fm_), - _b7L_=caml_call2(Runtime_ocaml_Runtime[83],_b7K_,_b7J_); - return caml_call2(Runtime_ocaml_Runtime[29],_fn_,_b7L_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_fo_,[0],_b7C_,_b7B_)} - function _b5J_(param) - {function _b7n_(param) - {var - _b7y_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$23), - _b7z_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b7z_,_b7y_)) - {var _b7A_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0976); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b7A_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$24)} - function _b7o_(param) - {var - _b7p_= - caml_call1 - (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), - _b7q_=caml_call3(Runtime_ocaml_Runtime[57],2018,12,31), - _b7r_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b7q_), - _b7s_=caml_call2(Runtime_ocaml_Runtime[83],_b7r_,_b7p_), - _b7t_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), - _b7u_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b7t_), - _b7v_=caml_call2(Runtime_ocaml_Runtime[83],_b7u_,_b7s_), - _b7w_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fp_), - _b7x_=caml_call2(Runtime_ocaml_Runtime[83],_b7w_,_b7v_); - return caml_call2(Runtime_ocaml_Runtime[29],_fq_,_b7x_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_fr_,[0],_b7o_,_b7n_)} - function _b5K_(param) - {function _b6$_(param) - {var - _b7k_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$25), - _b7l_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b7l_,_b7k_)) - {var _b7m_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1105); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b7m_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$26)} - function _b7a_(param) - {var - _b7b_= - caml_call1 - (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), - _b7c_=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), - _b7d_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b7c_), - _b7e_=caml_call2(Runtime_ocaml_Runtime[83],_b7d_,_b7b_), - _b7f_=caml_call3(Runtime_ocaml_Runtime[57],2017,1,1), - _b7g_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b7f_), - _b7h_=caml_call2(Runtime_ocaml_Runtime[83],_b7g_,_b7e_), - _b7i_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fs_), - _b7j_=caml_call2(Runtime_ocaml_Runtime[83],_b7i_,_b7h_); - return caml_call2(Runtime_ocaml_Runtime[29],_ft_,_b7j_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_fu_,[0],_b7a_,_b6$_)} - function _b5L_(param) - {function _b6X_(param) - {var - _b68_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$27), - _b69_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b69_,_b68_)) - {var _b6__=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1163); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b6__)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$28)} - function _b6Y_(param) - {var - _b6Z_= - caml_call1 - (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), - _b60_=caml_call3(Runtime_ocaml_Runtime[57],2016,12,31), - _b61_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b60_), - _b62_=caml_call2(Runtime_ocaml_Runtime[83],_b61_,_b6Z_), - _b63_=caml_call3(Runtime_ocaml_Runtime[57],2016,1,1), - _b64_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b63_), - _b65_=caml_call2(Runtime_ocaml_Runtime[83],_b64_,_b62_), - _b66_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fv_), - _b67_=caml_call2(Runtime_ocaml_Runtime[83],_b66_,_b65_); - return caml_call2(Runtime_ocaml_Runtime[29],_fw_,_b67_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_fx_,[0],_b6Y_,_b6X_)} - function _b5M_(param) - {function _b6J_(param) - {var - _b6U_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$29), - _b6V_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b6V_,_b6U_)) - {var _b6W_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_122); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b6W_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$30)} - function _b6K_(param) - {var - _b6L_= - caml_call1 - (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), - _b6M_=caml_call3(Runtime_ocaml_Runtime[57],2015,12,31), - _b6N_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b6M_), - _b6O_=caml_call2(Runtime_ocaml_Runtime[83],_b6N_,_b6L_), - _b6P_=caml_call3(Runtime_ocaml_Runtime[57],2015,1,1), - _b6Q_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b6P_), - _b6R_=caml_call2(Runtime_ocaml_Runtime[83],_b6Q_,_b6O_), - _b6S_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fy_), - _b6T_=caml_call2(Runtime_ocaml_Runtime[83],_b6S_,_b6R_); - return caml_call2(Runtime_ocaml_Runtime[29],_fz_,_b6T_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_fA_,[0],_b6K_,_b6J_)} - function _b5N_(param) - {function _b6v_(param) - {var - _b6G_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$31), - _b6H_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b6H_,_b6G_)) - {var _b6I_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1278); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b6I_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$32)} - function _b6w_(param) - {var - _b6x_= - caml_call1 - (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), - _b6y_=caml_call3(Runtime_ocaml_Runtime[57],2014,12,31), - _b6z_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b6y_), - _b6A_=caml_call2(Runtime_ocaml_Runtime[83],_b6z_,_b6x_), - _b6B_=caml_call3(Runtime_ocaml_Runtime[57],2014,1,1), - _b6C_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b6B_), - _b6D_=caml_call2(Runtime_ocaml_Runtime[83],_b6C_,_b6A_), - _b6E_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fB_), - _b6F_=caml_call2(Runtime_ocaml_Runtime[83],_b6E_,_b6D_); - return caml_call2(Runtime_ocaml_Runtime[29],_fC_,_b6F_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_fD_,[0],_b6w_,_b6v_)} - function _b5O_(param) - {function _b6h_(param) - {var - _b6s_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$33), - _b6t_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b6t_,_b6s_)) - {var _b6u_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1335); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b6u_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$34)} - function _b6i_(param) - {var - _b6j_= - caml_call1 - (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), - _b6k_=caml_call3(Runtime_ocaml_Runtime[57],2013,12,31), - _b6l_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b6k_), - _b6m_=caml_call2(Runtime_ocaml_Runtime[83],_b6l_,_b6j_), - _b6n_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), - _b6o_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b6n_), - _b6p_=caml_call2(Runtime_ocaml_Runtime[83],_b6o_,_b6m_), - _b6q_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fE_), - _b6r_=caml_call2(Runtime_ocaml_Runtime[83],_b6q_,_b6p_); - return caml_call2(Runtime_ocaml_Runtime[29],_fF_,_b6r_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_fG_,[0],_b6i_,_b6h_)} - function _b5P_(param) - {function _b55_(param) - {var - _b6e_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$35), - _b6f_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b6f_,_b6e_)) - {var _b6g_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1393); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b6g_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$36)} - function _b56_(param) - {var - _b57_= - caml_call1 - (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), - _b58_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), - _b59_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b58_), - _b5__=caml_call2(Runtime_ocaml_Runtime[83],_b59_,_b57_), - _b5$_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), - _b6a_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b5$_), - _b6b_=caml_call2(Runtime_ocaml_Runtime[83],_b6a_,_b5__), - _b6c_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fH_), - _b6d_=caml_call2(Runtime_ocaml_Runtime[83],_b6c_,_b6b_); - return caml_call2(Runtime_ocaml_Runtime[29],_fI_,_b6d_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_fJ_,[0],_b56_,_b55_)} - var - _b5Q_= - [0, - function(param) - {function _b5R_(param) - {var - _b52_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$37), - _b53_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b53_,_b52_)) - {var _b54_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_145); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b54_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$38)} - function _b5S_(param) - {var - _b5T_= - caml_call1 - (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), - _b5U_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), - _b5V_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b5U_), - _b5W_=caml_call2(Runtime_ocaml_Runtime[83],_b5V_,_b5T_), - _b5X_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), - _b5Y_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b5X_), - _b5Z_=caml_call2(Runtime_ocaml_Runtime[83],_b5Y_,_b5W_), - _b50_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fK_), - _b51_=caml_call2(Runtime_ocaml_Runtime[83],_b50_,_b5Z_); - return caml_call2(Runtime_ocaml_Runtime[29],_fL_,_b51_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_fM_,[0],_b5S_,_b5R_)}, - _b5P_, - _b5O_, - _b5N_, - _b5M_, - _b5L_, - _b5K_, - _b5J_, - _b5I_, - _b5H_, - _b5G_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_fN_,_b5Q_,_b5F_,_b5E_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_fO_,_b5D_,_b5C_,_b5B_)}, - _bWS_], - _bWU_=caml_call4(Runtime_ocaml_Runtime[63],_fP_,_bWT_,_bWR_,_bWQ_)} - catch(_b5A_) - {_b5A_ = caml_wrap_exception(_b5A_); - if(_b5A_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_fa_]; - throw _b5A_} - var - montant_initial_base_premier_e= - caml_call3 - (Runtime_ocaml_Runtime[28],_fQ_,Runtime_ocaml_Runtime[13],_bWU_); - try - {var - _bWV_=function(param){return 0}, - _bWW_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_fS_,1)}, - _bWX_= - [0, - function(param) - {function _b5d_(param){return 1} - function _b5e_(param) - {var - _b5x_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$10), - _b5y_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b5z_=caml_call2(Runtime_ocaml_Runtime[125],_b5y_,_b5x_); - return caml_call2(Runtime_ocaml_Runtime[29],_fT_,_b5z_)} - var - _b5f_= - [0, - function(param) - {function _b5g_(param){throw Runtime_ocaml_Runtime[2]} - function _b5h_(param){return 0} - var - _b5i_= - [0, - function(param) - {function _b5j_(param){return 1} - function _b5k_(param) - {var - _b5t_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$4), - _b5u_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b5v_=caml_call2(Runtime_ocaml_Runtime[125],_b5u_,_b5t_), - _b5w_= - caml_call2 - (Runtime_ocaml_Runtime[83], - prestations_familiales_dot_reg, - _b5v_); - return caml_call2(Runtime_ocaml_Runtime[29],_fU_,_b5w_)} - var - _b5l_= - [0, - function(param) - {function _b5m_(param){return 1} - function _b5n_(param) - {var - _b5o_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$5), - _b5p_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b5q_=caml_call2(Runtime_ocaml_Runtime[125],_b5p_,_b5o_), - _b5r_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fV_), - _b5s_=caml_call2(Runtime_ocaml_Runtime[83],_b5r_,_b5q_); - return caml_call2(Runtime_ocaml_Runtime[29],_fW_,_b5s_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_fX_,[0],_b5n_,_b5m_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_fY_,_b5l_,_b5k_,_b5j_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_fZ_,_b5i_,_b5h_,_b5g_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_f0_,_b5f_,_b5e_,_b5d_)}], - _bWY_=caml_call4(Runtime_ocaml_Runtime[63],_f1_,_bWX_,_bWW_,_bWV_)} - catch(_b5c_) - {_b5c_ = caml_wrap_exception(_b5c_); - if(_b5c_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_fR_]; - throw _b5c_} - var - droit_ouvert_base= - caml_call3 - (Runtime_ocaml_Runtime[28],_f2_,Runtime_ocaml_Runtime[12],_bWY_); - function _bWZ_(param) - {try - {var - _b4J_=function(param){return 0}, - _b4K_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_f4_,1)}, - _b4L_= - [0, - function(param$0) - {function _b4O_(param){return 1} - function _b4P_(param$0) - {var - _b42_= - caml_call3 - (Runtime_ocaml_Runtime[28],_f5_,embed_enfant,param), - _b43_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_f6_,age_minimum_alinea_1_l521_3), - _b42_), - _b44_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _f7_, - Runtime_ocaml_Runtime[17], - _b43_), - _b45_=caml_call2(Runtime_ocaml_Runtime[27],_f8_,_b44_), - _b46_=caml_call2(Runtime_ocaml_Runtime[94],param[4],_b45_), - _b47_= - caml_call2(Runtime_ocaml_Runtime[119],_b46_,date_courante), - _b48_= - caml_call3 - (Runtime_ocaml_Runtime[28],_f9_,embed_enfant,param), - _b49_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_f__,est_enfant_le_plus_age), - _b48_), - _b4__= - caml_call3 - (Runtime_ocaml_Runtime[28], - _f$_, - Runtime_ocaml_Runtime[12], - _b49_), - _b4$_=caml_call2(Runtime_ocaml_Runtime[27],_ga_,_b4__), - _b5a_=caml_call1(Runtime_ocaml_Runtime[67],_b4$_), - _b5b_=caml_call2(Runtime_ocaml_Runtime[83],_b5a_,_b47_); - return caml_call2(Runtime_ocaml_Runtime[29],_gb_,_b5b_)} - var - _b4Q_= - [0, - function(param$0) - {function _b4R_(param){return 1} - function _b4S_(param$0) - {var - _b4T_= - caml_call3 - (Runtime_ocaml_Runtime[28],_gc_,embed_enfant,param), - _b4U_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_gd_,age_minimum_alinea_1_l521_3), - _b4T_), - _b4V_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _ge_, - Runtime_ocaml_Runtime[17], - _b4U_), - _b4W_=caml_call2(Runtime_ocaml_Runtime[27],_gf_,_b4V_), - _b4X_=caml_call2(Runtime_ocaml_Runtime[94],param[4],_b4W_), - _b4Y_= - caml_call2(Runtime_ocaml_Runtime[119],_b4X_,date_courante), - _b4Z_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b40_= - caml_call2 - (Runtime_ocaml_Runtime[125], - _b4Z_, - nombre_enfants_alinea_2_l521_3), - _b41_=caml_call2(Runtime_ocaml_Runtime[83],_b40_,_b4Y_); - return caml_call2(Runtime_ocaml_Runtime[29],_gg_,_b41_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_gh_,[0],_b4S_,_b4R_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_gi_,_b4Q_,_b4P_,_b4O_)}], - _b4M_=caml_call4(Runtime_ocaml_Runtime[63],_gj_,_b4L_,_b4K_,_b4J_); - return _b4M_} - catch(_b4N_) - {_b4N_ = caml_wrap_exception(_b4N_); - if(_b4N_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_f3_]; - throw _b4N_}} - var - droit_ouvert_majoration= - caml_call3 - (Runtime_ocaml_Runtime[28],_gk_,Runtime_ocaml_Runtime[10],_bWZ_); - function _bW0_(param) - {try - {var - _b38_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$39)}, - _b39_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_gm_,1)}, - _b3__= - [0, - function(param$0) - {function _b4b_(param){throw Runtime_ocaml_Runtime[2]} - function _b4c_(param){return 0} - function _b4d_(param$0) - {function _b4u_(param$0) - {var - _b4C_=caml_call1(Runtime_ocaml_Runtime[39],cst_12), - _b4D_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$6), - _b4E_=caml_call2(Runtime_ocaml_Runtime[107],_b4D_,_b4C_), - _b4F_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$0), - _b4G_=caml_call2(Runtime_ocaml_Runtime[104],param,_b4F_), - _b4H_= - caml_call2 - (Runtime_ocaml_Runtime[93],plafond_i_i_d521_3,_b4G_), - _b4I_= - caml_call2 - (Runtime_ocaml_Runtime[98],_b4H_,ressources_menage); - return caml_call2(Runtime_ocaml_Runtime[104],_b4I_,_b4E_)} - function _b4v_(param$0) - {var - _b4w_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$1), - _b4x_=caml_call2(Runtime_ocaml_Runtime[104],param,_b4w_), - _b4y_= - caml_call2 - (Runtime_ocaml_Runtime[93],plafond_i_i_d521_3,_b4x_), - _b4z_= - caml_call2 - (Runtime_ocaml_Runtime[117],ressources_menage,_b4y_), - _b4A_= - caml_call2 - (Runtime_ocaml_Runtime[122], - ressources_menage, - plafond_i_i_d521_3), - _b4B_=caml_call2(Runtime_ocaml_Runtime[83],_b4A_,_b4z_); - return caml_call2(Runtime_ocaml_Runtime[29],_gn_,_b4B_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_go_,[0],_b4v_,_b4u_)} - var - _b4e_= - [0, - function(param$0) - {function _b4f_(param$0) - {var - _b4n_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$2), - _b4o_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$7), - _b4p_=caml_call2(Runtime_ocaml_Runtime[107],_b4o_,_b4n_), - _b4q_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$3), - _b4r_=caml_call2(Runtime_ocaml_Runtime[104],param,_b4q_), - _b4s_= - caml_call2(Runtime_ocaml_Runtime[93],plafond_i_d521_3,_b4r_), - _b4t_= - caml_call2 - (Runtime_ocaml_Runtime[98],_b4s_,ressources_menage); - return caml_call2(Runtime_ocaml_Runtime[104],_b4t_,_b4p_)} - function _b4g_(param$0) - {var - _b4h_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$4), - _b4i_=caml_call2(Runtime_ocaml_Runtime[104],param,_b4h_), - _b4j_= - caml_call2(Runtime_ocaml_Runtime[93],plafond_i_d521_3,_b4i_), - _b4k_= - caml_call2 - (Runtime_ocaml_Runtime[117],ressources_menage,_b4j_), - _b4l_= - caml_call2 - (Runtime_ocaml_Runtime[122], - ressources_menage, - plafond_i_d521_3), - _b4m_=caml_call2(Runtime_ocaml_Runtime[83],_b4l_,_b4k_); - return caml_call2(Runtime_ocaml_Runtime[29],_gp_,_b4m_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_gq_,[0],_b4g_,_b4f_)}, - _b4d_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_gr_,_b4e_,_b4c_,_b4b_)}], - _b3$_=caml_call4(Runtime_ocaml_Runtime[63],_gs_,_b3__,_b39_,_b38_); - return _b3$_} - catch(_b4a_) - {_b4a_ = caml_wrap_exception(_b4a_); - if(_b4a_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_gl_]; - throw _b4a_}} - var - complement_degressif= - caml_call3 - (Runtime_ocaml_Runtime[28],_gt_,Runtime_ocaml_Runtime[10],_bW0_); - try - {var - _bW1_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bW2_=function(param){return 0}, - _bW3_= - function(param) - {function _b34_(param) - {var _b37_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_05059); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b37_)} - function _b35_(param) - {var - _b36_= - caml_call2 - (Runtime_ocaml_Runtime[122], - ressources_menage, - plafond_i_i_d521_3); - return caml_call2(Runtime_ocaml_Runtime[29],_gv_,_b36_)} - return caml_call4(Runtime_ocaml_Runtime[63],_gw_,[0],_b35_,_b34_)}, - _bW4_= - function(param) - {function _b3Y_(param) - {var _b33_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_10117); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b33_)} - function _b3Z_(param) - {var - _b30_= - caml_call2 - (Runtime_ocaml_Runtime[117], - ressources_menage, - plafond_i_i_d521_3), - _b31_= - caml_call2 - (Runtime_ocaml_Runtime[122], - ressources_menage, - plafond_i_d521_3), - _b32_=caml_call2(Runtime_ocaml_Runtime[83],_b31_,_b30_); - return caml_call2(Runtime_ocaml_Runtime[29],_gx_,_b32_)} - return caml_call4(Runtime_ocaml_Runtime[63],_gy_,[0],_b3Z_,_b3Y_)}, - _bW5_= - [0, - function(param) - {function _b3U_(param) - {var _b3X_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_20234); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3X_)} - function _b3V_(param) - {var - _b3W_= - caml_call2 - (Runtime_ocaml_Runtime[117], - ressources_menage, - plafond_i_d521_3); - return caml_call2(Runtime_ocaml_Runtime[29],_gz_,_b3W_)} - return caml_call4(Runtime_ocaml_Runtime[63],_gA_,[0],_b3V_,_b3U_)}, - _bW4_, - _bW3_], - _bW6_=caml_call4(Runtime_ocaml_Runtime[63],_gB_,_bW5_,_bW2_,_bW1_)} - catch(_b3T_) - {_b3T_ = caml_wrap_exception(_b3T_); - if(_b3T_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_gu_]; - throw _b3T_} - var - montant_verse_forfaitaire_par_= - caml_call3 - (Runtime_ocaml_Runtime[28],_gC_,Runtime_ocaml_Runtime[13],_bW6_); - try - {var - _bW7_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bW8_=function(param){return 0}, - _bW9_= - function(param) - {function _b3I_(param) - {var - _b3L_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$11), - _b3M_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b3M_,_b3L_)) - {var - _b3N_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$12), - _b3O_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b3P_=caml_call2(Runtime_ocaml_Runtime[96],_b3O_,_b3N_), - _b3Q_=caml_call1(Runtime_ocaml_Runtime[69],_b3P_), - _b3R_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1025), - _b3S_= - caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3R_); - return caml_call2(Runtime_ocaml_Runtime[104],_b3S_,_b3Q_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$40)} - function _b3J_(param) - {var - _b3K_= - caml_call2 - (Runtime_ocaml_Runtime[122], - ressources_menage, - plafond_i_i_d521_3); - return caml_call2(Runtime_ocaml_Runtime[29],_gE_,_b3K_)} - return caml_call4(Runtime_ocaml_Runtime[63],_gF_,[0],_b3J_,_b3I_)}, - _bW__= - function(param) - {function _b3v_(param) - {var - _b3A_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$13), - _b3B_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b3B_,_b3A_)) - {var - _b3C_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$14), - _b3D_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b3E_=caml_call2(Runtime_ocaml_Runtime[96],_b3D_,_b3C_), - _b3F_=caml_call1(Runtime_ocaml_Runtime[69],_b3E_), - _b3G_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_205), - _b3H_= - caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3G_); - return caml_call2(Runtime_ocaml_Runtime[104],_b3H_,_b3F_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$41)} - function _b3w_(param) - {var - _b3x_= - caml_call2 - (Runtime_ocaml_Runtime[117], - ressources_menage, - plafond_i_i_d521_3), - _b3y_= - caml_call2 - (Runtime_ocaml_Runtime[122], - ressources_menage, - plafond_i_d521_3), - _b3z_=caml_call2(Runtime_ocaml_Runtime[83],_b3y_,_b3x_); - return caml_call2(Runtime_ocaml_Runtime[29],_gG_,_b3z_)} - return caml_call4(Runtime_ocaml_Runtime[63],_gH_,[0],_b3w_,_b3v_)}, - _bW$_= - [0, - function(param) - {function _b3k_(param) - {var - _b3n_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$15), - _b3o_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b3o_,_b3n_)) - {var - _b3p_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$16), - _b3q_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b3r_=caml_call2(Runtime_ocaml_Runtime[96],_b3q_,_b3p_), - _b3s_=caml_call1(Runtime_ocaml_Runtime[69],_b3r_), - _b3t_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_41), - _b3u_= - caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3t_); - return caml_call2(Runtime_ocaml_Runtime[104],_b3u_,_b3s_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$42)} - function _b3l_(param) - {var - _b3m_= - caml_call2 - (Runtime_ocaml_Runtime[117], - ressources_menage, - plafond_i_d521_3); - return caml_call2(Runtime_ocaml_Runtime[29],_gI_,_b3m_)} - return caml_call4(Runtime_ocaml_Runtime[63],_gJ_,[0],_b3l_,_b3k_)}, - _bW__, - _bW9_], - _bXa_=caml_call4(Runtime_ocaml_Runtime[63],_gK_,_bW$_,_bW8_,_bW7_)} - catch(_b3j_) - {_b3j_ = caml_wrap_exception(_b3j_); - if(_b3j_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_gD_]; - throw _b3j_} - var - montant_initial_base_troisieme$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_gL_,Runtime_ocaml_Runtime[13],_bXa_); - try - {var - _bXb_= - function(param) - {function _b2W_(param){throw Runtime_ocaml_Runtime[2]} - function _b2X_(param){return 0} - function _b2Y_(param) - {function _b3d_(param) - {var - _b3g_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$8), - _b3h_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b3h_,_b3g_)) - {var _b3i_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_08); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3i_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$43)} - function _b3e_(param) - {var - _b3f_= - caml_call2 - (Runtime_ocaml_Runtime[122], - ressources_menage, - plafond_i_i_d521_3); - return caml_call2(Runtime_ocaml_Runtime[29],_gN_,_b3f_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_gO_,[0],_b3e_,_b3d_)} - function _b2Z_(param) - {function _b27_(param) - {var - _b3a_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$9), - _b3b_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b3b_,_b3a_)) - {var _b3c_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16$0); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3c_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$44)} - function _b28_(param) - {var - _b29_= - caml_call2 - (Runtime_ocaml_Runtime[117], - ressources_menage, - plafond_i_i_d521_3), - _b2__= - caml_call2 - (Runtime_ocaml_Runtime[122], - ressources_menage, - plafond_i_d521_3), - _b2$_=caml_call2(Runtime_ocaml_Runtime[83],_b2__,_b29_); - return caml_call2(Runtime_ocaml_Runtime[29],_gP_,_b2$_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_gQ_,[0],_b28_,_b27_)} - var - _b20_= - [0, - function(param) - {function _b21_(param) - {var - _b24_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$10), - _b25_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b25_,_b24_)) - {var _b26_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b26_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$45)} - function _b22_(param) - {var - _b23_= - caml_call2 - (Runtime_ocaml_Runtime[117], - ressources_menage, - plafond_i_d521_3); - return caml_call2(Runtime_ocaml_Runtime[29],_gR_,_b23_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_gS_,[0],_b22_,_b21_)}, - _b2Z_, - _b2Y_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_gT_,_b20_,_b2X_,_b2W_)}, - _bXc_=function(param){return 1}, - _bXd_= - [0, - function(param) - {function _b0L_(param) - {var - _b2T_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$11), - _b2U_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b2U_,_b2T_)) - {var _b2V_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32$0); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2V_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$46)} - function _b0M_(param) - {var _b2S_=caml_call2(Runtime_ocaml_Runtime[86],residence,_gU_); - return caml_call2(Runtime_ocaml_Runtime[29],_gV_,_b2S_)} - var - _b0N_= - [0, - function(param) - {function _b0O_(param){throw Runtime_ocaml_Runtime[2]} - function _b0P_(param){return 0} - function _b0Q_(param) - {function _b2G_(param) - {var - _b2P_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$12), - _b2Q_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b2Q_,_b2P_)) - {var _b2R_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3068); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2R_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$47)} - function _b2H_(param) - {var - _b2I_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), - _b2J_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b2I_), - _b2K_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _b2L_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b2K_), - _b2M_=caml_call2(Runtime_ocaml_Runtime[83],_b2L_,_b2J_), - _b2N_=caml_call2(Runtime_ocaml_Runtime[86],residence,_gW_), - _b2O_=caml_call2(Runtime_ocaml_Runtime[83],_b2N_,_b2M_); - return caml_call2(Runtime_ocaml_Runtime[29],_gX_,_b2O_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_gY_,[0],_b2H_,_b2G_)} - function _b0R_(param) - {function _b2u_(param) - {var - _b2D_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$13), - _b2E_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b2E_,_b2D_)) - {var _b2F_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2936); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2F_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$48)} - function _b2v_(param) - {var - _b2w_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), - _b2x_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b2w_), - _b2y_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), - _b2z_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b2y_), - _b2A_=caml_call2(Runtime_ocaml_Runtime[83],_b2z_,_b2x_), - _b2B_=caml_call2(Runtime_ocaml_Runtime[86],residence,_gZ_), - _b2C_=caml_call2(Runtime_ocaml_Runtime[83],_b2B_,_b2A_); - return caml_call2(Runtime_ocaml_Runtime[29],_g0_,_b2C_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_g1_,[0],_b2v_,_b2u_)} - function _b0S_(param) - {function _b2i_(param) - {var - _b2r_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$14), - _b2s_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b2s_,_b2r_)) - {var _b2t_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2804); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2t_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$49)} - function _b2j_(param) - {var - _b2k_=caml_call3(Runtime_ocaml_Runtime[57],2018,12,31), - _b2l_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b2k_), - _b2m_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), - _b2n_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b2m_), - _b2o_=caml_call2(Runtime_ocaml_Runtime[83],_b2n_,_b2l_), - _b2p_=caml_call2(Runtime_ocaml_Runtime[86],residence,_g2_), - _b2q_=caml_call2(Runtime_ocaml_Runtime[83],_b2p_,_b2o_); - return caml_call2(Runtime_ocaml_Runtime[29],_g3_,_b2q_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_g4_,[0],_b2j_,_b2i_)} - function _b0T_(param) - {function _b18_(param) - {var - _b2f_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$15), - _b2g_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b2g_,_b2f_)) - {var _b2h_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2672); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2h_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$50)} - function _b19_(param) - {var - _b1__=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), - _b1$_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b1__), - _b2a_=caml_call3(Runtime_ocaml_Runtime[57],2017,1,1), - _b2b_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b2a_), - _b2c_=caml_call2(Runtime_ocaml_Runtime[83],_b2b_,_b1$_), - _b2d_=caml_call2(Runtime_ocaml_Runtime[86],residence,_g5_), - _b2e_=caml_call2(Runtime_ocaml_Runtime[83],_b2d_,_b2c_); - return caml_call2(Runtime_ocaml_Runtime[29],_g6_,_b2e_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_g7_,[0],_b19_,_b18_)} - function _b0U_(param) - {function _b1W_(param) - {var - _b15_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$16), - _b16_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b16_,_b15_)) - {var _b17_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2613); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b17_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$51)} - function _b1X_(param) - {var - _b1Y_=caml_call3(Runtime_ocaml_Runtime[57],2016,12,31), - _b1Z_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b1Y_), - _b10_=caml_call3(Runtime_ocaml_Runtime[57],2016,1,1), - _b11_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b10_), - _b12_=caml_call2(Runtime_ocaml_Runtime[83],_b11_,_b1Z_), - _b13_=caml_call2(Runtime_ocaml_Runtime[86],residence,_g8_), - _b14_=caml_call2(Runtime_ocaml_Runtime[83],_b13_,_b12_); - return caml_call2(Runtime_ocaml_Runtime[29],_g9_,_b14_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_g__,[0],_b1X_,_b1W_)} - function _b0V_(param) - {function _b1K_(param) - {var - _b1T_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$17), - _b1U_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b1U_,_b1T_)) - {var _b1V_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2555); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b1V_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$52)} - function _b1L_(param) - {var - _b1M_=caml_call3(Runtime_ocaml_Runtime[57],2015,12,31), - _b1N_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b1M_), - _b1O_=caml_call3(Runtime_ocaml_Runtime[57],2015,1,1), - _b1P_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b1O_), - _b1Q_=caml_call2(Runtime_ocaml_Runtime[83],_b1P_,_b1N_), - _b1R_=caml_call2(Runtime_ocaml_Runtime[86],residence,_g$_), - _b1S_=caml_call2(Runtime_ocaml_Runtime[83],_b1R_,_b1Q_); - return caml_call2(Runtime_ocaml_Runtime[29],_ha_,_b1S_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_hb_,[0],_b1L_,_b1K_)} - function _b0W_(param) - {function _b1y_(param) - {var - _b1H_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$18), - _b1I_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b1I_,_b1H_)) - {var _b1J_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2496); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b1J_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$53)} - function _b1z_(param) - {var - _b1A_=caml_call3(Runtime_ocaml_Runtime[57],2014,12,31), - _b1B_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b1A_), - _b1C_=caml_call3(Runtime_ocaml_Runtime[57],2014,1,1), - _b1D_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b1C_), - _b1E_=caml_call2(Runtime_ocaml_Runtime[83],_b1D_,_b1B_), - _b1F_=caml_call2(Runtime_ocaml_Runtime[86],residence,_hc_), - _b1G_=caml_call2(Runtime_ocaml_Runtime[83],_b1F_,_b1E_); - return caml_call2(Runtime_ocaml_Runtime[29],_hd_,_b1G_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_he_,[0],_b1z_,_b1y_)} - function _b0X_(param) - {function _b1m_(param) - {var - _b1v_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$19), - _b1w_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b1w_,_b1v_)) - {var _b1x_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2437); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b1x_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$54)} - function _b1n_(param) - {var - _b1o_=caml_call3(Runtime_ocaml_Runtime[57],2013,12,31), - _b1p_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b1o_), - _b1q_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), - _b1r_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b1q_), - _b1s_=caml_call2(Runtime_ocaml_Runtime[83],_b1r_,_b1p_), - _b1t_=caml_call2(Runtime_ocaml_Runtime[86],residence,_hf_), - _b1u_=caml_call2(Runtime_ocaml_Runtime[83],_b1t_,_b1s_); - return caml_call2(Runtime_ocaml_Runtime[29],_hg_,_b1u_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_hh_,[0],_b1n_,_b1m_)} - function _b0Y_(param) - {function _b1a_(param) - {var - _b1j_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$20), - _b1k_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b1k_,_b1j_)) - {var _b1l_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2379); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b1l_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$55)} - function _b1b_(param) - {var - _b1c_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), - _b1d_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b1c_), - _b1e_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), - _b1f_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b1e_), - _b1g_=caml_call2(Runtime_ocaml_Runtime[83],_b1f_,_b1d_), - _b1h_=caml_call2(Runtime_ocaml_Runtime[86],residence,_hi_), - _b1i_=caml_call2(Runtime_ocaml_Runtime[83],_b1h_,_b1g_); - return caml_call2(Runtime_ocaml_Runtime[29],_hj_,_b1i_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_hk_,[0],_b1b_,_b1a_)} - var - _b0Z_= - [0, - function(param) - {function _b00_(param) - {var - _b09_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$21), - _b0__= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[120],_b0__,_b09_)) - {var _b0$_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_232); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b0$_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$56)} - function _b01_(param) - {var - _b02_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), - _b03_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_b02_), - _b04_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), - _b05_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_b04_), - _b06_=caml_call2(Runtime_ocaml_Runtime[83],_b05_,_b03_), - _b07_=caml_call2(Runtime_ocaml_Runtime[86],residence,_hl_), - _b08_=caml_call2(Runtime_ocaml_Runtime[83],_b07_,_b06_); - return caml_call2(Runtime_ocaml_Runtime[29],_hm_,_b08_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_hn_,[0],_b01_,_b00_)}, - _b0Y_, - _b0X_, - _b0W_, - _b0V_, - _b0U_, - _b0T_, - _b0S_, - _b0R_, - _b0Q_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_ho_,_b0Z_,_b0P_,_b0O_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_hp_,_b0N_,_b0M_,_b0L_)}], - _bXe_=caml_call4(Runtime_ocaml_Runtime[63],_hq_,_bXd_,_bXc_,_bXb_)} - catch(_b0K_) - {_b0K_ = caml_wrap_exception(_b0K_); - if(_b0K_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_gM_]; - throw _b0K_} - var - montant_initial_base_deuxieme_= - caml_call3 - (Runtime_ocaml_Runtime[28],_hr_,Runtime_ocaml_Runtime[13],_bXe_); - try - {var - _bXf_= - function(param) - {var _b0J_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$57); - return caml_call2 - (Runtime_ocaml_Runtime[86],nombre_total_enfants,_b0J_) - ?caml_call1(Runtime_ocaml_Runtime[39],cst_0$58) - :caml_call2 - (Runtime_ocaml_Runtime[107], - nombre_moyen_enfants, - nombre_total_enfants)}, - _bXg_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ht_,1)}, - _bXh_=caml_call4(Runtime_ocaml_Runtime[63],_hu_,[0],_bXg_,_bXf_)} - catch(_b0I_) - {_b0I_ = caml_wrap_exception(_b0I_); - if(_b0I_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_hs_]; - throw _b0I_} - var - rapport_enfants_total_moyen= - caml_call3 - (Runtime_ocaml_Runtime[28],_hv_,Runtime_ocaml_Runtime[15],_bXh_); - function _bXi_(param) - {try - {var - _bZ2_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bZ3_=function(param){return 0}, - _bZ4_= - function(param$0) - {function _b0B_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$59)} - function _b0C_(param$0) - {var - _b0D_= - caml_call3 - (Runtime_ocaml_Runtime[28],_hx_,embed_enfant,param), - _b0E_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_hy_,droit_ouvert_majoration), - _b0D_), - _b0F_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _hz_, - Runtime_ocaml_Runtime[12], - _b0E_), - _b0G_=caml_call2(Runtime_ocaml_Runtime[27],_hA_,_b0F_), - _b0H_=caml_call1(Runtime_ocaml_Runtime[67],_b0G_); - return caml_call2(Runtime_ocaml_Runtime[29],_hB_,_b0H_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_hC_,[0],_b0C_,_b0B_)}, - _bZ5_= - function(param$0) - {function _b0s_(param) - {var _b0A_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_04); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b0A_)} - function _b0t_(param$0) - {var - _b0u_= - caml_call3 - (Runtime_ocaml_Runtime[28],_hD_,embed_enfant,param), - _b0v_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_hE_,droit_ouvert_majoration), - _b0u_), - _b0w_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _hF_, - Runtime_ocaml_Runtime[12], - _b0v_), - _b0x_=caml_call2(Runtime_ocaml_Runtime[27],_hG_,_b0w_), - _b0y_= - caml_call2 - (Runtime_ocaml_Runtime[122], - ressources_menage, - plafond_i_i_d521_3), - _b0z_=caml_call2(Runtime_ocaml_Runtime[83],_b0y_,_b0x_); - return caml_call2(Runtime_ocaml_Runtime[29],_hH_,_b0z_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_hI_,[0],_b0t_,_b0s_)}, - _bZ6_= - function(param$0) - {function _b0h_(param) - {var _b0r_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_08$0); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b0r_)} - function _b0i_(param$0) - {var - _b0j_= - caml_call3 - (Runtime_ocaml_Runtime[28],_hJ_,embed_enfant,param), - _b0k_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_hK_,droit_ouvert_majoration), - _b0j_), - _b0l_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _hL_, - Runtime_ocaml_Runtime[12], - _b0k_), - _b0m_=caml_call2(Runtime_ocaml_Runtime[27],_hM_,_b0l_), - _b0n_= - caml_call2 - (Runtime_ocaml_Runtime[117], - ressources_menage, - plafond_i_i_d521_3), - _b0o_= - caml_call2 - (Runtime_ocaml_Runtime[122], - ressources_menage, - plafond_i_d521_3), - _b0p_=caml_call2(Runtime_ocaml_Runtime[83],_b0o_,_b0n_), - _b0q_=caml_call2(Runtime_ocaml_Runtime[83],_b0p_,_b0m_); - return caml_call2(Runtime_ocaml_Runtime[29],_hN_,_b0q_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_hO_,[0],_b0i_,_b0h_)}, - _bZ7_= - [0, - function(param$0) - {function _bZ__(param) - {var _b0g_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16$1); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b0g_)} - function _bZ$_(param$0) - {var - _b0a_= - caml_call3 - (Runtime_ocaml_Runtime[28],_hP_,embed_enfant,param), - _b0b_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_hQ_,droit_ouvert_majoration), - _b0a_), - _b0c_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _hR_, - Runtime_ocaml_Runtime[12], - _b0b_), - _b0d_=caml_call2(Runtime_ocaml_Runtime[27],_hS_,_b0c_), - _b0e_= - caml_call2 - (Runtime_ocaml_Runtime[117], - ressources_menage, - plafond_i_d521_3), - _b0f_=caml_call2(Runtime_ocaml_Runtime[83],_b0e_,_b0d_); - return caml_call2(Runtime_ocaml_Runtime[29],_hT_,_b0f_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_hU_,[0],_bZ$_,_bZ__)}, - _bZ6_, - _bZ5_, - _bZ4_], - _bZ8_=caml_call4(Runtime_ocaml_Runtime[63],_hV_,_bZ7_,_bZ3_,_bZ2_); - return _bZ8_} - catch(_bZ9_) - {_bZ9_ = caml_wrap_exception(_bZ9_); - if(_bZ9_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_hw_]; - throw _bZ9_}} - var - montant_initial_metropole_majo= - caml_call3 - (Runtime_ocaml_Runtime[28],_hW_,Runtime_ocaml_Runtime[10],_bXi_); - try - {var - _bXj_= - function(param) - {function _bZV_(enfant) - {var - _bZZ_= - caml_call3(Runtime_ocaml_Runtime[28],_hY_,embed_enfant,enfant), - _bZ0_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_hZ_,droit_ouvert_forfaitaire), - _bZZ_), - _bZ1_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _h0_, - Runtime_ocaml_Runtime[12], - _bZ0_); - return caml_call2(Runtime_ocaml_Runtime[27],_h1_,_bZ1_)} - var - _bZW_= - caml_call2(Runtime_ocaml_Runtime[90],_bZV_,enfants_a_charge), - _bZX_=caml_call1(Runtime_ocaml_Runtime[68],_bZW_), - _bZY_=caml_call1(Runtime_ocaml_Runtime[69],_bZX_); - return caml_call2 - (Runtime_ocaml_Runtime[104], - montant_verse_forfaitaire_par_, - _bZY_)}, - _bXk_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_h2_,1)}, - _bXl_=caml_call4(Runtime_ocaml_Runtime[63],_h3_,[0],_bXk_,_bXj_)} - catch(_bZU_) - {_bZU_ = caml_wrap_exception(_bZU_); - if(_bZU_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_hX_]; - throw _bZU_} - var - montant_verse_forfaitaire= - caml_call3 - (Runtime_ocaml_Runtime[28],_h4_,Runtime_ocaml_Runtime[13],_bXl_); - try - {var - _bXm_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[93], - montant_initial_base_deuxieme_, - montant_initial_base_troisieme$0)}, - _bXn_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_h6_,1)}, - _bXo_= - [0, - function(param) - {function _bZF_(param){throw Runtime_ocaml_Runtime[2]} - function _bZG_(param){return 0} - function _bZH_(param) - {function _bZP_(param) - {var - _bZS_= - caml_call2 - (Runtime_ocaml_Runtime[93], - montant_initial_base_premier_e, - montant_initial_base_deuxieme_), - _bZT_= - caml_call2 - (Runtime_ocaml_Runtime[93], - _bZS_, - montant_initial_base_troisieme); - return caml_call2 - (Runtime_ocaml_Runtime[93], - _bZT_, - montant_initial_base_quatrieme)} - function _bZQ_(param) - {var - _bZR_= - caml_call2(Runtime_ocaml_Runtime[86],residence,_h7_); - return caml_call2(Runtime_ocaml_Runtime[29],_h8_,_bZR_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_h9_,[0],_bZQ_,_bZP_)} - var - _bZI_= - [0, - function(param) - {function _bZJ_(param){return montant_initial_base_premier_e} - function _bZK_(param) - {var - _bZL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$22), - _bZM_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _bZN_=caml_call2(Runtime_ocaml_Runtime[86],_bZM_,_bZL_), - _bZO_= - caml_call2 - (Runtime_ocaml_Runtime[83], - prestations_familiales_dot_reg, - _bZN_); - return caml_call2(Runtime_ocaml_Runtime[29],_h__,_bZO_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_h$_,[0],_bZK_,_bZJ_)}, - _bZH_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_ia_,_bZI_,_bZG_,_bZF_)}], - _bXp_=caml_call4(Runtime_ocaml_Runtime[63],_ib_,_bXo_,_bXn_,_bXm_)} - catch(_bZE_) - {_bZE_ = caml_wrap_exception(_bZE_); - if(_bZE_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_h5_]; - throw _bZE_} - var - montant_initial_base= - caml_call3 - (Runtime_ocaml_Runtime[28],_ic_,Runtime_ocaml_Runtime[13],_bXp_); - function _bXq_(param) - {try - {var - _bYU_= - function(param$0) - {var - _bZB_= - caml_call3(Runtime_ocaml_Runtime[28],_ie_,embed_enfant,param), - _bZC_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _if_, - montant_initial_metropole_majo), - _bZB_), - _bZD_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _ig_, - Runtime_ocaml_Runtime[13], - _bZC_); - return caml_call2(Runtime_ocaml_Runtime[27],_ih_,_bZD_)}, - _bYV_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_ii_,1)}, - _bYW_= - [0, - function(param$0) - {function _bYZ_(param){throw Runtime_ocaml_Runtime[2]} - function _bY0_(param){return 0} - function _bY1_(param$0) - {function _bZl_(param) - {var _bZA_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0567); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_bZA_)} - function _bZm_(param$0) - {var - _bZn_=caml_call3(Runtime_ocaml_Runtime[60],16,0,0), - _bZo_=caml_call2(Runtime_ocaml_Runtime[94],param[4],_bZn_), - _bZp_= - caml_call2(Runtime_ocaml_Runtime[119],_bZo_,date_courante), - _bZq_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$23), - _bZr_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _bZs_=caml_call2(Runtime_ocaml_Runtime[86],_bZr_,_bZq_), - _bZt_=caml_call2(Runtime_ocaml_Runtime[83],_bZs_,_bZp_), - _bZu_= - caml_call2 - (Runtime_ocaml_Runtime[83], - prestations_familiales_dot_reg, - _bZt_), - _bZv_= - caml_call3 - (Runtime_ocaml_Runtime[28],_ij_,embed_enfant,param), - _bZw_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_ik_,droit_ouvert_majoration), - _bZv_), - _bZx_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _il_, - Runtime_ocaml_Runtime[12], - _bZw_), - _bZy_=caml_call2(Runtime_ocaml_Runtime[27],_im_,_bZx_), - _bZz_=caml_call2(Runtime_ocaml_Runtime[83],_bZy_,_bZu_); - return caml_call2(Runtime_ocaml_Runtime[29],_in_,_bZz_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_io_,[0],_bZm_,_bZl_)} - var - _bY2_= - [0, - function(param$0) - {function _bY3_(param) - {var _bZk_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0369); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_bZk_)} - function _bY4_(param$0) - {var - _bY5_=caml_call3(Runtime_ocaml_Runtime[60],16,0,0), - _bY6_=caml_call2(Runtime_ocaml_Runtime[94],param[4],_bY5_), - _bY7_= - caml_call2(Runtime_ocaml_Runtime[124],_bY6_,date_courante), - _bY8_=caml_call3(Runtime_ocaml_Runtime[60],11,0,0), - _bY9_=caml_call2(Runtime_ocaml_Runtime[94],param[4],_bY8_), - _bY__= - caml_call2(Runtime_ocaml_Runtime[119],_bY9_,date_courante), - _bY$_=caml_call2(Runtime_ocaml_Runtime[83],_bY__,_bY7_), - _bZa_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$24), - _bZb_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _bZc_=caml_call2(Runtime_ocaml_Runtime[86],_bZb_,_bZa_), - _bZd_=caml_call2(Runtime_ocaml_Runtime[83],_bZc_,_bY$_), - _bZe_= - caml_call2 - (Runtime_ocaml_Runtime[83], - prestations_familiales_dot_reg, - _bZd_), - _bZf_= - caml_call3 - (Runtime_ocaml_Runtime[28],_ip_,embed_enfant,param), - _bZg_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_iq_,droit_ouvert_majoration), - _bZf_), - _bZh_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _ir_, - Runtime_ocaml_Runtime[12], - _bZg_), - _bZi_=caml_call2(Runtime_ocaml_Runtime[27],_is_,_bZh_), - _bZj_=caml_call2(Runtime_ocaml_Runtime[83],_bZi_,_bZe_); - return caml_call2(Runtime_ocaml_Runtime[29],_it_,_bZj_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_iu_,[0],_bY4_,_bY3_)}, - _bY1_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_iv_,_bY2_,_bY0_,_bYZ_)}], - _bYX_=caml_call4(Runtime_ocaml_Runtime[63],_iw_,_bYW_,_bYV_,_bYU_); - return _bYX_} - catch(_bYY_) - {_bYY_ = caml_wrap_exception(_bYY_); - if(_bYY_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_id_]; - throw _bYY_}} - var - montant_initial_majoration= - caml_call3 - (Runtime_ocaml_Runtime[28],_ix_,Runtime_ocaml_Runtime[10],_bXq_); - try - {var - _bXr_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$60)}, - _bXs_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iz_,1)}, - _bXt_= - [0, - function(param) - {function _bYm_(param){throw Runtime_ocaml_Runtime[2]} - function _bYn_(param){return 0} - function _bYo_(param) - {function _bYF_(param) - {var - _bYN_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$5), - _bYO_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$25), - _bYP_=caml_call2(Runtime_ocaml_Runtime[107],_bYO_,_bYN_), - _bYQ_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$6), - _bYR_= - caml_call2 - (Runtime_ocaml_Runtime[104],montant_verse_forfaitaire,_bYQ_), - _bYS_= - caml_call2 - (Runtime_ocaml_Runtime[93],plafond_i_i_d521_3,_bYR_), - _bYT_= - caml_call2 - (Runtime_ocaml_Runtime[98],_bYS_,ressources_menage); - return caml_call2(Runtime_ocaml_Runtime[104],_bYT_,_bYP_)} - function _bYG_(param) - {var - _bYH_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$7), - _bYI_= - caml_call2 - (Runtime_ocaml_Runtime[104],montant_verse_forfaitaire,_bYH_), - _bYJ_= - caml_call2 - (Runtime_ocaml_Runtime[93],plafond_i_i_d521_3,_bYI_), - _bYK_= - caml_call2 - (Runtime_ocaml_Runtime[117],ressources_menage,_bYJ_), - _bYL_= - caml_call2 - (Runtime_ocaml_Runtime[122], - ressources_menage, - plafond_i_i_d521_3), - _bYM_=caml_call2(Runtime_ocaml_Runtime[83],_bYL_,_bYK_); - return caml_call2(Runtime_ocaml_Runtime[29],_iA_,_bYM_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_iB_,[0],_bYG_,_bYF_)} - var - _bYp_= - [0, - function(param) - {function _bYq_(param) - {var - _bYy_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$8), - _bYz_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$26), - _bYA_=caml_call2(Runtime_ocaml_Runtime[107],_bYz_,_bYy_), - _bYB_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$9), - _bYC_= - caml_call2 - (Runtime_ocaml_Runtime[104],montant_verse_forfaitaire,_bYB_), - _bYD_= - caml_call2(Runtime_ocaml_Runtime[93],plafond_i_d521_3,_bYC_), - _bYE_= - caml_call2 - (Runtime_ocaml_Runtime[98],_bYD_,ressources_menage); - return caml_call2(Runtime_ocaml_Runtime[104],_bYE_,_bYA_)} - function _bYr_(param) - {var - _bYs_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$10), - _bYt_= - caml_call2 - (Runtime_ocaml_Runtime[104],montant_verse_forfaitaire,_bYs_), - _bYu_= - caml_call2(Runtime_ocaml_Runtime[93],plafond_i_d521_3,_bYt_), - _bYv_= - caml_call2 - (Runtime_ocaml_Runtime[117],ressources_menage,_bYu_), - _bYw_= - caml_call2 - (Runtime_ocaml_Runtime[122], - ressources_menage, - plafond_i_d521_3), - _bYx_=caml_call2(Runtime_ocaml_Runtime[83],_bYw_,_bYv_); - return caml_call2(Runtime_ocaml_Runtime[29],_iC_,_bYx_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_iD_,[0],_bYr_,_bYq_)}, - _bYo_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_iE_,_bYp_,_bYn_,_bYm_)}], - _bXu_=caml_call4(Runtime_ocaml_Runtime[63],_iF_,_bXt_,_bXs_,_bXr_)} - catch(_bYl_) - {_bYl_ = caml_wrap_exception(_bYl_); - if(_bYl_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_iy_]; - throw _bYl_} - var - montant_verse_complement_pour_= - caml_call3 - (Runtime_ocaml_Runtime[28],_iG_,Runtime_ocaml_Runtime[13],_bXu_); - try - {var - _bXv_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[104], - montant_initial_base, - rapport_enfants_total_moyen)}, - _bXw_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iI_,1)}, - _bXx_=caml_call4(Runtime_ocaml_Runtime[63],_iJ_,[0],_bXw_,_bXv_)} - catch(_bYk_) - {_bYk_ = caml_wrap_exception(_bYk_); - if(_bYk_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_iH_]; - throw _bYk_} - var - montant_avec_garde_alternee_ba= - caml_call3 - (Runtime_ocaml_Runtime[28],_iK_,Runtime_ocaml_Runtime[13],_bXx_); - function _bXy_(param) - {try - {var - _bX__= - function(param$0) - {var - _bYc_= - caml_call3(Runtime_ocaml_Runtime[28],_iM_,embed_enfant,param), - _bYd_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_iN_,prise_en_compte), - _bYc_), - _bYe_= - caml_call3 - (Runtime_ocaml_Runtime[28],_iO_,embed_prise_en_compte,_bYd_), - match=caml_call2(Runtime_ocaml_Runtime[27],_iP_,_bYe_); - switch(match[0]) - {case 0: - var _bYf_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$27); - break; - case 1: - var _bYf_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$0); - break; - default: - var _bYf_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$61)} - var - _bYg_= - caml_call3(Runtime_ocaml_Runtime[28],_iQ_,embed_enfant,param), - _bYh_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_iR_,montant_initial_majoration), - _bYg_), - _bYi_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _iS_, - Runtime_ocaml_Runtime[13], - _bYh_), - _bYj_=caml_call2(Runtime_ocaml_Runtime[27],_iT_,_bYi_); - return caml_call2(Runtime_ocaml_Runtime[104],_bYj_,_bYf_)}, - _bX$_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_iU_,1)}, - _bYa_=caml_call4(Runtime_ocaml_Runtime[63],_iV_,[0],_bX$_,_bX__); - return _bYa_} - catch(_bYb_) - {_bYb_ = caml_wrap_exception(_bYb_); - if(_bYb_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_iL_]; - throw _bYb_}} - var - montant_avec_garde_alternee_ma= - caml_call3 - (Runtime_ocaml_Runtime[28],_iW_,Runtime_ocaml_Runtime[10],_bXy_); - try - {var - _bXz_= - function(param) - {return droit_ouvert_base - ?montant_avec_garde_alternee_ba - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$62)}, - _bXA_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iY_,1)}, - _bXB_=caml_call4(Runtime_ocaml_Runtime[63],_iZ_,[0],_bXA_,_bXz_)} - catch(_bX9_) - {_bX9_ = caml_wrap_exception(_bX9_); - if(_bX9_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_iX_]; - throw _bX9_} - var - montant_verse_base= - caml_call3 - (Runtime_ocaml_Runtime[28],_i0_,Runtime_ocaml_Runtime[13],_bXB_); - try - {var - _bXC_= - function(param) - {if(droit_ouvert_base) - {var - _bX2_= - function(enfant) - {var - _bX6_= - caml_call3 - (Runtime_ocaml_Runtime[28],_i2_,embed_enfant,enfant), - _bX7_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _i3_, - montant_avec_garde_alternee_ma), - _bX6_), - _bX8_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _i4_, - Runtime_ocaml_Runtime[13], - _bX7_); - return caml_call2(Runtime_ocaml_Runtime[27],_i5_,_bX8_)}, - _bX3_= - caml_call2(Runtime_ocaml_Runtime[87],_bX2_,enfants_a_charge), - _bX4_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$63), - _bX5_= - function(sum1,sum2) - {return caml_call2(Runtime_ocaml_Runtime[93],sum1,sum2)}; - return caml_call3(Runtime_ocaml_Runtime[88],_bX5_,_bX4_,_bX3_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$64)}, - _bXD_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_i6_,1)}, - _bXE_=caml_call4(Runtime_ocaml_Runtime[63],_i7_,[0],_bXD_,_bXC_)} - catch(_bX1_) - {_bX1_ = caml_wrap_exception(_bX1_); - if(_bX1_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_i1_]; - throw _bX1_} - var - montant_verse_majoration= - caml_call3 - (Runtime_ocaml_Runtime[28],_i8_,Runtime_ocaml_Runtime[13],_bXE_); - try - {var - _bXF_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[93], - montant_verse_base, - montant_verse_majoration)}, - _bXG_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_i__,1)}, - _bXH_=caml_call4(Runtime_ocaml_Runtime[63],_i$_,[0],_bXG_,_bXF_)} - catch(_bX0_) - {_bX0_ = caml_wrap_exception(_bX0_); - if(_bX0_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_i9_]; - throw _bX0_} - var - montant_base_complement_pour_b= - caml_call3 - (Runtime_ocaml_Runtime[28],_ja_,Runtime_ocaml_Runtime[13],_bXH_); - try - {var - _bXI_= - function(param) - {if(droit_ouvert_complement) - {var - _bXX_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _jc_, - Runtime_ocaml_Runtime[13], - montant_base_complement_pour_b), - _bXY_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_jd_,complement_degressif), - _bXX_), - _bXZ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _je_, - Runtime_ocaml_Runtime[13], - _bXY_); - return caml_call2(Runtime_ocaml_Runtime[27],_jf_,_bXZ_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$65)}, - _bXJ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jg_,1)}, - _bXK_=caml_call4(Runtime_ocaml_Runtime[63],_jh_,[0],_bXJ_,_bXI_)} - catch(_bXW_) - {_bXW_ = caml_wrap_exception(_bXW_); - if(_bXW_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_jb_]; - throw _bXW_} - var - montant_verse_complement_pour_$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_ji_,Runtime_ocaml_Runtime[13],_bXK_); - try - {var - _bXL_= - function(param) - {if(droit_ouvert_base) - {var - _bXT_= - caml_call2 - (Runtime_ocaml_Runtime[93], - montant_verse_base, - montant_verse_majoration), - _bXU_= - caml_call2 - (Runtime_ocaml_Runtime[93],_bXT_,montant_verse_forfaitaire), - _bXV_= - caml_call2 - (Runtime_ocaml_Runtime[93], - _bXU_, - montant_verse_complement_pour_$0); - return caml_call2 - (Runtime_ocaml_Runtime[93], - _bXV_, - montant_verse_complement_pour_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$66)}, - _bXM_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jk_,1)}, - _bXN_=caml_call4(Runtime_ocaml_Runtime[63],_jl_,[0],_bXM_,_bXL_)} - catch(_bXS_) - {_bXS_ = caml_wrap_exception(_bXS_); - if(_bXS_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_jj_]; - throw _bXS_} - var - montant_verse= - caml_call3 - (Runtime_ocaml_Runtime[28],_jm_,Runtime_ocaml_Runtime[13],_bXN_); - try - {var - _bXO_= - caml_call1(Runtime_ocaml_Runtime[67],personne_charge_effective_perm), - _bXP_= - caml_call2 - (Runtime_ocaml_Runtime[83],_bXO_,personne_charge_effective_perm$0), - _bXQ_= - caml_call2 - (Runtime_ocaml_Runtime[84],personne_charge_effective_perm,_bXP_)} - catch(_bXR_) - {_bXR_ = caml_wrap_exception(_bXR_); - if(_bXR_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_jn_]; - throw _bXR_} - if(_bXQ_)return [0,montant_verse]; - throw [0,Runtime_ocaml_Runtime[3],_jo_]} - function interface_allocations_familial(interface_allocations_familial) - {var - i_date_courante=interface_allocations_familial[1], - i_enfants=interface_allocations_familial[2], - i_ressources_menage=interface_allocations_familial[3], - i_residence=interface_allocations_familial[4], - i_personne_charge_effective_pe=interface_allocations_familial[5], - i_personne_charge_effective_pe$0=interface_allocations_familial[6], - i_avait_enfant_a_charge_avant_=interface_allocations_familial[7]; - try - {var - _bUZ_= - function(param) - {function _bVJ_(enfant) - {var - _bVK_=enfant[6], - _bVL_=enfant[5], - _bVM_=enfant[4], - _bVN_=enfant[3], - _bVO_=enfant[2], - _bVP_=caml_call3(Runtime_ocaml_Runtime[60],3,0,0), - _bVQ_=caml_call2(Runtime_ocaml_Runtime[94],enfant[3],_bVP_); - if(caml_call2(Runtime_ocaml_Runtime[129],_bVQ_,i_date_courante)) - var _bVR_=_jq_; - else - var - _bVS_=caml_call3(Runtime_ocaml_Runtime[60],16,0,0), - _bVT_=caml_call2(Runtime_ocaml_Runtime[94],enfant[3],_bVS_), - _bVR_= - caml_call2(Runtime_ocaml_Runtime[129],_bVT_,i_date_courante) - ?_jr_ - :_js_; - return [0,enfant[1],_bVR_,_bVO_,_bVN_,_bVM_,_bVL_,_bVK_]} - return caml_call2(Runtime_ocaml_Runtime[87],_bVJ_,i_enfants)}, - _bU0_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jt_,1)}, - _bU1_=caml_call4(Runtime_ocaml_Runtime[63],_ju_,[0],_bU0_,_bUZ_)} - catch(_bVI_) - {_bVI_ = caml_wrap_exception(_bVI_); - if(_bVI_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_jp_]; - throw _bVI_} - var - _bU2_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant), - enfants_a_charge=caml_call3(Runtime_ocaml_Runtime[28],_jv_,_bU2_,_bU1_); - try - {var - _bU3_=function(param){return 0}, - _bU4_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jx_,1)}, - _bU5_= - [0, - function(param) - {function _bVG_(param){return 1} - function _bVH_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29], - _jy_, - i_personne_charge_effective_pe)} - return caml_call4(Runtime_ocaml_Runtime[63],_jz_,[0],_bVH_,_bVG_)}], - _bU6_=caml_call4(Runtime_ocaml_Runtime[63],_jA_,_bU5_,_bU4_,_bU3_), - allocations_familiales_dot_per= - caml_call3 - (Runtime_ocaml_Runtime[28],_jB_,Runtime_ocaml_Runtime[12],_bU6_)} - catch(_bVF_) - {_bVF_ = caml_wrap_exception(_bVF_); - if(_bVF_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_jw_]; - throw _bVF_} - try - {var - _bU7_=function(param){return 0}, - _bU8_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jD_,1)}, - _bU9_= - [0, - function(param) - {function _bVD_(param){return 1} - function _bVE_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29], - _jE_, - i_personne_charge_effective_pe$0)} - return caml_call4(Runtime_ocaml_Runtime[63],_jF_,[0],_bVE_,_bVD_)}], - _bU__=caml_call4(Runtime_ocaml_Runtime[63],_jG_,_bU9_,_bU8_,_bU7_), - allocations_familiales_dot_per$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_jH_,Runtime_ocaml_Runtime[12],_bU__)} - catch(_bVC_) - {_bVC_ = caml_wrap_exception(_bVC_); - if(_bVC_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_jC_]; - throw _bVC_} - try - {var - _bU$_=function(param){return i_ressources_menage}, - _bVa_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jJ_,1)}, - _bVb_=caml_call4(Runtime_ocaml_Runtime[63],_jK_,[0],_bVa_,_bU$_), - allocations_familiales_dot_res= - caml_call3 - (Runtime_ocaml_Runtime[28],_jL_,Runtime_ocaml_Runtime[13],_bVb_)} - catch(_bVB_) - {_bVB_ = caml_wrap_exception(_bVB_); - if(_bVB_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_jI_]; - throw _bVB_} - try - {var - _bVc_=function(param){return i_residence}, - _bVd_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jN_,1)}, - _bVe_=caml_call4(Runtime_ocaml_Runtime[63],_jO_,[0],_bVd_,_bVc_), - allocations_familiales_dot_res$0= - caml_call3(Runtime_ocaml_Runtime[28],_jP_,embed_collectivite,_bVe_)} - catch(_bVA_) - {_bVA_ = caml_wrap_exception(_bVA_); - if(_bVA_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_jM_]; - throw _bVA_} - try - {var - _bVf_=function(param){return i_date_courante}, - _bVg_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jR_,1)}, - _bVh_=caml_call4(Runtime_ocaml_Runtime[63],_jS_,[0],_bVg_,_bVf_), - allocations_familiales_dot_dat= - caml_call3 - (Runtime_ocaml_Runtime[28],_jT_,Runtime_ocaml_Runtime[16],_bVh_)} - catch(_bVz_) - {_bVz_ = caml_wrap_exception(_bVz_); - if(_bVz_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_jQ_]; - throw _bVz_} - try - {var - _bVi_=function(param){return enfants_a_charge}, - _bVj_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jV_,1)}, - _bVk_=caml_call4(Runtime_ocaml_Runtime[63],_jW_,[0],_bVj_,_bVi_), - _bVl_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant), - allocations_familiales_dot_enf= - caml_call3(Runtime_ocaml_Runtime[28],_jX_,_bVl_,_bVk_)} - catch(_bVy_) - {_bVy_ = caml_wrap_exception(_bVy_); - if(_bVy_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_jU_]; - throw _bVy_} - try - {var - _bVm_=function(param){return 0}, - _bVn_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jZ_,1)}, - _bVo_= - [0, - function(param) - {function _bVw_(param){return 1} - function _bVx_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29], - _j0_, - i_avait_enfant_a_charge_avant_)} - return caml_call4(Runtime_ocaml_Runtime[63],_j1_,[0],_bVx_,_bVw_)}], - _bVp_=caml_call4(Runtime_ocaml_Runtime[63],_j2_,_bVo_,_bVn_,_bVm_), - allocations_familiales_dot_ava= - caml_call3 - (Runtime_ocaml_Runtime[28],_j3_,Runtime_ocaml_Runtime[12],_bVp_)} - catch(_bVv_) - {_bVv_ = caml_wrap_exception(_bVv_); - if(_bVv_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_jY_]; - throw _bVv_} - var - _bVq_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_j4_,allocations_familiales), - [0, - allocations_familiales_dot_per, - allocations_familiales_dot_per$0, - allocations_familiales_dot_res, - allocations_familiales_dot_res$0, - allocations_familiales_dot_dat, - allocations_familiales_dot_enf, - allocations_familiales_dot_ava]), - result=caml_call2(Runtime_ocaml_Runtime[27],_j5_,_bVq_), - allocations_familiales_dot_mon=result[1]; - try - {var - _bVr_=function(param){return allocations_familiales_dot_mon}, - _bVs_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_j7_,1)}, - _bVt_=caml_call4(Runtime_ocaml_Runtime[63],_j8_,[0],_bVs_,_bVr_)} - catch(_bVu_) - {_bVu_ = caml_wrap_exception(_bVu_); - if(_bVu_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_j6_]; - throw _bVu_} - var - i_montant_verse= - caml_call3 - (Runtime_ocaml_Runtime[28],_j9_,Runtime_ocaml_Runtime[13],_bVt_); - return [0,i_montant_verse]} - var - Law_source_Allocations_familia= - [0, - PriseEnCharge, - embed_prise_en_charge, - SituationObligationScolaire, - embed_situation_obligation_sco, - PriseEnCompte, - embed_prise_en_compte, - VersementAllocations, - embed_versement_allocations, - ElementPrestationsFamiliales, - embed_element_prestations_fami, - Collectivite, - embed_collectivite, - AllocationFamilialesAvril2008, - embed_allocation_familiales_av, - AllocationsFamiliales, - embed_allocations_familiales, - Smic, - embed_smic, - BaseMensuelleAllocationsFamili, - embed_base_mensuelle_allocatio, - InterfaceAllocationsFamiliales, - embed_interface_allocations_fa, - EnfantEntree, - embed_enfant_entree, - Enfant, - embed_enfant, - EnfantLePlusAge, - embed_enfant_le_plus_age, - PrestationsFamiliales, - embed_prestations_familiales, - PrestationsFamilialesIn, - embed_prestations_familiales_i, - AllocationFamilialesAvril2008I, - embed_allocation_familiales_av$0, - EnfantLePlusAgeIn, - embed_enfant_le_plus_age_in, - AllocationsFamilialesIn, - embed_allocations_familiales_i, - SmicIn, - embed_smic_in, - BaseMensuelleAllocationsFamili$0, - embed_base_mensuelle_allocatio$0, - InterfaceAllocationsFamiliales$0, - embed_interface_allocations_fa$0, - allocation_familiales_avril200, - enfant_le_plus_age, - smic, - base_mensuelle_allocations_fam, - prestations_familiales, - allocations_familiales, - interface_allocations_familial]; - caml_register_global - (8568, - Law_source_Allocations_familia, - "Law_source__Allocations_familiales"); - function prise_en_charge_to_jsoo(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"GardeAlterneePartageAllocations","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"GardeAlterneeAllocataireUnique","payload":arg$0}; - case 2: - var arg$1=param[1]; - return {"kind":"EffectiveEtPermanente","payload":arg$1}; - case 3: - var arg$2=param[1]; - return {"kind":"ServicesSociauxAllocationVerseeALaFamille", - "payload":arg$2}; - default: - var arg$3=param[1]; - return {"kind":"ServicesSociauxAllocationVerseeAuxServicesSociaux", - "payload":arg$3}}} - function prise_en_charge_of_jsoo(prise_en_charge) - {var cons=caml_string_of_jsstring(prise_en_charge.kind); - if(caml_string_notequal(cons,cst_EffectiveEtPermanente$0)) - {if(caml_string_notequal(cons,cst_GardeAlterneeAllocataireUn)) - {if(caml_string_notequal(cons,cst_GardeAlterneePartageAlloca)) - {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$1)) - {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$2)) - {var _bUY_=caml_call2(Stdlib_Printf[4],_j__,cons); - return caml_call1(Stdlib[2],_bUY_)} - return _j$_} - return _ka_} - return _kb_} - return _kc_} - return _kd_} - function situation_obligation_scolaire_(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Avant","payload":arg}; - case 1:var arg$0=param[1];return {"kind":"Pendant","payload":arg$0}; - default:var arg$1=param[1];return {"kind":"Apres","payload":arg$1}}} - function situation_obligation_scolaire_$0(situation_obligation_scolaire) - {var cons=caml_string_of_jsstring(situation_obligation_scolaire.kind); - if(caml_string_notequal(cons,cst_Apres)) - {if(caml_string_notequal(cons,cst_Avant$0)) - {if(caml_string_notequal(cons,cst_Pendant$0)) - {var _bUX_=caml_call2(Stdlib_Printf[4],_ke_,cons); - return caml_call1(Stdlib[2],_bUX_)} - return _kf_} - return _kg_} - return _kh_} - function prise_en_compte_to_jsoo(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Complete","payload":arg}; - case 1:var arg$0=param[1];return {"kind":"Partagee","payload":arg$0}; - default:var arg$1=param[1];return {"kind":"Zero","payload":arg$1}}} - function prise_en_compte_of_jsoo(prise_en_compte) - {var cons=caml_string_of_jsstring(prise_en_compte.kind); - if(caml_string_notequal(cons,cst_Complete)) - {if(caml_string_notequal(cons,cst_Partagee)) - {if(caml_string_notequal(cons,cst_Zero)) - {var _bUW_=caml_call2(Stdlib_Printf[4],_ki_,cons); - return caml_call1(Stdlib[2],_bUW_)} - return _kj_} - return _kk_} - return _kl_} - function versement_allocations_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1];return {"kind":"Normal","payload":arg}} - var arg$0=param[1]; - return {"kind":"AllocationVerseeAuxServicesSociaux","payload":arg$0}} - function versement_allocations_of_jsoo(versement_allocations) - {var cons=caml_string_of_jsstring(versement_allocations.kind); - if(caml_string_notequal(cons,cst_AllocationVerseeAuxService)) - {if(caml_string_notequal(cons,cst_Normal$0)) - {var _bUV_=caml_call2(Stdlib_Printf[4],_km_,cons); - return caml_call1(Stdlib[2],_bUV_)} - return _kn_} - return _ko_} - function element_prestations_familiales(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"PrestationAccueilJeuneEnfant","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"AllocationsFamiliales","payload":arg$0}; - case 2: - var arg$1=param[1]; - return {"kind":"ComplementFamilial","payload":arg$1}; - case 3: - var arg$2=param[1]; - return {"kind":"AllocationLogement","payload":arg$2}; - case 4: - var arg$3=param[1]; - return {"kind":"AllocationEducationEnfantHandicape","payload":arg$3}; - case 5: - var arg$4=param[1]; - return {"kind":"AllocationSoutienFamilial","payload":arg$4}; - case 6: - var arg$5=param[1]; - return {"kind":"AllocationRentreeScolaire","payload":arg$5}; - default: - var arg$6=param[1]; - return {"kind":"AllocationJournalierePresenceParentale", - "payload":arg$6}}} - function element_prestations_familiales$0(element_prestations_familiales) - {var cons=caml_string_of_jsstring(element_prestations_familiales.kind); - if(caml_string_notequal(cons,cst_AllocationEducationEnfantH)) - {if(caml_string_notequal(cons,cst_AllocationJournalierePrese)) - {if(caml_string_notequal(cons,cst_AllocationLogement$0)) - {if(caml_string_notequal(cons,cst_AllocationRentreeScolaire)) - {if(caml_string_notequal(cons,cst_AllocationSoutienFamilial$0)) - {if(caml_string_notequal(cons,cst_AllocationsFamiliales$0)) - {if(caml_string_notequal(cons,cst_ComplementFamilial)) - {if - (caml_string_notequal(cons,cst_PrestationAccueilJeuneEnfa$0)) - {var _bUU_=caml_call2(Stdlib_Printf[4],_kp_,cons); - return caml_call1(Stdlib[2],_bUU_)} - return _kq_} - return _kr_} - return _ks_} - return _kt_} - return _ku_} - return _kv_} - return _kw_} - return _kx_} - function collectivite_to_jsoo(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Guadeloupe","payload":arg}; - case 1:var arg$0=param[1];return {"kind":"Guyane","payload":arg$0}; - case 2: - var arg$1=param[1];return {"kind":"Martinique","payload":arg$1}; - case 3:var arg$2=param[1];return {"kind":"LaReunion","payload":arg$2}; - case 4: - var arg$3=param[1];return {"kind":"SaintBarthelemy","payload":arg$3}; - case 5: - var arg$4=param[1];return {"kind":"SaintMartin","payload":arg$4}; - case 6:var arg$5=param[1];return {"kind":"Metropole","payload":arg$5}; - case 7: - var arg$6=param[1]; - return {"kind":"SaintPierreEtMiquelon","payload":arg$6}; - default:var arg$7=param[1];return {"kind":"Mayotte","payload":arg$7}}} - function collectivite_of_jsoo(collectivite) - {var cons=caml_string_of_jsstring(collectivite.kind); - if(caml_string_notequal(cons,cst_Guadeloupe$0)) - {if(caml_string_notequal(cons,cst_Guyane$0)) - {if(caml_string_notequal(cons,cst_LaReunion)) - {if(caml_string_notequal(cons,cst_Martinique$0)) - {if(caml_string_notequal(cons,cst_Mayotte$0)) - {if(caml_string_notequal(cons,cst_Metropole)) - {if(caml_string_notequal(cons,cst_SaintBarthelemy)) - {if(caml_string_notequal(cons,cst_SaintMartin$0)) - {if(caml_string_notequal(cons,cst_SaintPierreEtMiquelon$0)) - {var _bUT_=caml_call2(Stdlib_Printf[4],_ky_,cons); - return caml_call1(Stdlib[2],_bUT_)} - return _kz_} - return _kA_} - return _kB_} - return _kC_} - return _kD_} - return _kE_} - return _kF_} - return _kG_} - return _kH_} - function allocation_familiales_avril200$0(allocation_familiales_avril200) - {var - t66= - caml_call1(Runtime_jsoo_Runtime[3],allocation_familiales_avril200[1]); - return {"ageMinimumAlinea1L5213":t66}} - function allocation_familiales_avril200$1(allocation_familiales_avril200) - {return [0, - caml_call1 - (Runtime_jsoo_Runtime[2], - allocation_familiales_avril200.ageMinimumAlinea1L5213)]} - function allocations_familiales_to_jsoo(allocations_familiales) - {var t68=caml_call1(Runtime_ocaml_Runtime[35],allocations_familiales[1]); - return {"montantVerse":t68}} - function allocations_familiales_of_jsoo(allocations_familiales) - {var - _bUS_= - caml_call1 - (Runtime_ocaml_Runtime[42],allocations_familiales.montantVerse); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_bUS_)]} - function smic_to_jsoo(smic) - {var t70=caml_call1(Runtime_ocaml_Runtime[35],smic[1]); - return {"brutHoraire":t70}} - function smic_of_jsoo(smic) - {var _bUR_=caml_call1(Runtime_ocaml_Runtime[42],smic.brutHoraire); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_bUR_)]} - function base_mensuelle_allocations_fam$0(base_mensuelle_allocations_fam) - {var - t72= - caml_call1 - (Runtime_ocaml_Runtime[35],base_mensuelle_allocations_fam[1]); - return {"montant":t72}} - function base_mensuelle_allocations_fam$1(base_mensuelle_allocations_fam) - {var - _bUQ_= - caml_call1 - (Runtime_ocaml_Runtime[42],base_mensuelle_allocations_fam.montant); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_bUQ_)]} - function interface_allocations_familial$0(interface_allocations_familial) - {var - t74= - caml_call1 - (Runtime_ocaml_Runtime[35],interface_allocations_familial[1]); - return {"iMontantVerse":t74}} - function interface_allocations_familial$1(interface_allocations_familial) - {var - _bUP_= - caml_call1 - (Runtime_ocaml_Runtime[42], - interface_allocations_familial.iMontantVerse); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_bUP_)]} - function enfant_entree_to_jsoo(enfant_entree) - {var - t81=! ! enfant_entree[6], - t80=! ! enfant_entree[5], - t79=prise_en_charge_to_jsoo(enfant_entree[4]), - t78=caml_call1(Runtime_jsoo_Runtime[5],enfant_entree[3]), - t77=caml_call1(Runtime_ocaml_Runtime[35],enfant_entree[2]), - t76=caml_call1(Runtime_ocaml_Runtime[48],enfant_entree[1]); - return {"dIdentifiant":t76, - "dRemunerationMensuelle":t77, - "dDateDeNaissance":t78, - "dPriseEnCharge":t79, - "dADejaOuvertDroitAuxAllocationsFamiliales":t80, - "dBeneficieTitrePersonnelAidePersonnelleLogement":t81}} - function enfant_entree_of_jsoo(enfant_entree) - {var - _bUJ_=enfant_entree.dBeneficieTitrePersonnelAidePersonnelleLogement | 0, - _bUK_=enfant_entree.dADejaOuvertDroitAuxAllocationsFamiliales | 0, - _bUL_=prise_en_charge_of_jsoo(enfant_entree.dPriseEnCharge), - _bUM_= - caml_call1(Runtime_jsoo_Runtime[4],enfant_entree.dDateDeNaissance), - _bUN_= - caml_call1 - (Runtime_ocaml_Runtime[42],enfant_entree.dRemunerationMensuelle), - _bUO_=caml_call1(Runtime_ocaml_Runtime[33],_bUN_); - return [0, - caml_call1(Runtime_ocaml_Runtime[49],enfant_entree.dIdentifiant), - _bUO_, - _bUM_, - _bUL_, - _bUK_, - _bUJ_]} - function enfant_to_jsoo(enfant) - {var - t94=! ! enfant[7], - t93=! ! enfant[6], - t92=prise_en_charge_to_jsoo(enfant[5]), - t91=caml_call1(Runtime_jsoo_Runtime[5],enfant[4]), - t90=caml_call1(Runtime_ocaml_Runtime[35],enfant[3]), - t89=situation_obligation_scolaire_(enfant[2]), - t88=caml_call1(Runtime_ocaml_Runtime[48],enfant[1]); - return {"identifiant":t88, - "obligationScolaire":t89, - "remunerationMensuelle":t90, - "dateDeNaissance":t91, - "priseEnCharge":t92, - "aDejaOuvertDroitAuxAllocationsFamiliales":t93, - "beneficieTitrePersonnelAidePersonnelleLogement":t94}} - function enfant_of_jsoo(enfant) - {var - _bUC_=enfant.beneficieTitrePersonnelAidePersonnelleLogement | 0, - _bUD_=enfant.aDejaOuvertDroitAuxAllocationsFamiliales | 0, - _bUE_=prise_en_charge_of_jsoo(enfant.priseEnCharge), - _bUF_=caml_call1(Runtime_jsoo_Runtime[4],enfant.dateDeNaissance), - _bUG_= - caml_call1(Runtime_ocaml_Runtime[42],enfant.remunerationMensuelle), - _bUH_=caml_call1(Runtime_ocaml_Runtime[33],_bUG_), - _bUI_=situation_obligation_scolaire_$0(enfant.obligationScolaire); - return [0, - caml_call1(Runtime_ocaml_Runtime[49],enfant.identifiant), - _bUI_, - _bUH_, - _bUF_, - _bUE_, - _bUD_, - _bUC_]} - function enfant_le_plus_age_to_jsoo(enfant_le_plus_age) - {var t102=enfant_to_jsoo(enfant_le_plus_age[1]); - return {"lePlusAge":t102}} - function enfant_le_plus_age_of_jsoo(enfant_le_plus_age) - {return [0,enfant_of_jsoo(enfant_le_plus_age.lePlusAge)]} - function prestations_familiales_to_jsoo(prestations_familiales) - {var - t107=! ! prestations_familiales[4], - t106=caml_call1(Runtime_jsoo_Runtime[3],prestations_familiales[3]); - function t105(param) - {return caml_js_wrap_meth_callback - (function(input) - {var _bUB_=enfant_of_jsoo(input); - return ! ! caml_call1(prestations_familiales[2],_bUB_)})} - function t104(param) - {return caml_js_wrap_meth_callback - (function(input) - {var _bUA_=enfant_of_jsoo(input); - return ! ! caml_call1(prestations_familiales[1],_bUA_)})} - return {"droitOuvert":caml_js_wrap_meth_callback(t104), - "conditionsHorsAge":caml_js_wrap_meth_callback(t105), - "ageL51232":t106, - "regimeOutreMerL7511":t107}} - function prestations_familiales_of_jsoo(prestations_familiales) - {var - _bUx_=prestations_familiales.regimeOutreMerL7511 | 0, - _bUy_= - caml_call1(Runtime_jsoo_Runtime[2],prestations_familiales.ageL51232), - _bUz_=caml_call1(Stdlib[2],cst_The_function_conditions_ho); - return [0, - caml_call1(Stdlib[2],cst_The_function_droit_ouvert_), - _bUz_, - _bUy_, - _bUx_]} - function prestations_familiales_in_to_j(prestations_familiales_in) - {var - t112=collectivite_to_jsoo(prestations_familiales_in[3]), - t111=element_prestations_familiales(prestations_familiales_in[2]), - t110=caml_call1(Runtime_jsoo_Runtime[5],prestations_familiales_in[1]); - return {"dateCouranteIn":t110, - "prestationCouranteIn":t111, - "residenceIn":t112}} - function prestations_familiales_in_of_j(prestations_familiales_in) - {var - _bUv_=collectivite_of_jsoo(prestations_familiales_in.residenceIn), - _bUw_= - element_prestations_familiales$0 - (prestations_familiales_in.prestationCouranteIn); - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - prestations_familiales_in.dateCouranteIn), - _bUw_, - _bUv_]} - function allocation_familiales_avril200$2(param){return {}} - function allocation_familiales_avril200$3(param){return 0} - function enfant_le_plus_age_in_to_jsoo(enfant_le_plus_age_in) - {var _bUt_=enfant_le_plus_age_in[1]; - function _bUu_(x){return enfant_to_jsoo(x)} - var t116=caml_js_from_array(caml_call2(Stdlib_Array[15],_bUu_,_bUt_)); - return {"enfantsIn":t116}} - function enfant_le_plus_age_in_of_jsoo(enfant_le_plus_age_in) - {var _bUr_=caml_js_to_array(enfant_le_plus_age_in.enfantsIn); - function _bUs_(x){return enfant_of_jsoo(x)} - return [0,caml_call1(caml_call1(Stdlib_Array[15],_bUs_),_bUr_)]} - function allocations_familiales_in_to_j(allocations_familiales_in) - {var - t124=! ! allocations_familiales_in[7], - _bUp_=allocations_familiales_in[6]; - function _bUq_(x){return enfant_to_jsoo(x)} - var - t123=caml_js_from_array(caml_call2(Stdlib_Array[15],_bUq_,_bUp_)), - t122=caml_call1(Runtime_jsoo_Runtime[5],allocations_familiales_in[5]), - t121=collectivite_to_jsoo(allocations_familiales_in[4]), - t120=caml_call1(Runtime_ocaml_Runtime[35],allocations_familiales_in[3]), - t119=! ! allocations_familiales_in[2], - t118=! ! allocations_familiales_in[1]; - return {"personneChargeEffectivePermanenteEstParentIn":t118, - "personneChargeEffectivePermanenteRemplitTitreIIn":t119, - "ressourcesMenageIn":t120, - "residenceIn":t121, - "dateCouranteIn":t122, - "enfantsAChargeIn":t123, - "avaitEnfantAChargeAvant1erJanvier2012In":t124}} - function allocations_familiales_in_of_j(allocations_familiales_in) - {var - _bUh_= - allocations_familiales_in.avaitEnfantAChargeAvant1erJanvier2012In - | - 0, - _bUi_=caml_js_to_array(allocations_familiales_in.enfantsAChargeIn); - function _bUj_(x){return enfant_of_jsoo(x)} - var - _bUk_=caml_call1(caml_call1(Stdlib_Array[15],_bUj_),_bUi_), - _bUl_= - caml_call1 - (Runtime_jsoo_Runtime[4],allocations_familiales_in.dateCouranteIn), - _bUm_=collectivite_of_jsoo(allocations_familiales_in.residenceIn), - _bUn_= - caml_call1 - (Runtime_ocaml_Runtime[42], - allocations_familiales_in.ressourcesMenageIn), - _bUo_=caml_call1(Runtime_ocaml_Runtime[33],_bUn_); - return [0, - allocations_familiales_in.personneChargeEffectivePermanenteEstParentIn - | - 0, - allocations_familiales_in.personneChargeEffectivePermanenteRemplitTitreIIn - | - 0, - _bUo_, - _bUm_, - _bUl_, - _bUk_, - _bUh_]} - function smic_in_to_jsoo(smic_in) - {var - t133=collectivite_to_jsoo(smic_in[2]), - t132=caml_call1(Runtime_jsoo_Runtime[5],smic_in[1]); - return {"dateCouranteIn":t132,"residenceIn":t133}} - function smic_in_of_jsoo(smic_in) - {var _bUg_=collectivite_of_jsoo(smic_in.residenceIn); - return [0, - caml_call1(Runtime_jsoo_Runtime[4],smic_in.dateCouranteIn), - _bUg_]} - function base_mensuelle_allocations_fam$2(base_mensuelle_allocations_fam) - {var - t136= - caml_call1(Runtime_jsoo_Runtime[5],base_mensuelle_allocations_fam[1]); - return {"dateCouranteIn":t136}} - function base_mensuelle_allocations_fam$3(base_mensuelle_allocations_fam) - {return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - base_mensuelle_allocations_fam.dateCouranteIn)]} - function interface_allocations_familial$2(interface_allocations_familial) - {var - t144=! ! interface_allocations_familial[7], - t143=! ! interface_allocations_familial[6], - t142=! ! interface_allocations_familial[5], - t141=collectivite_to_jsoo(interface_allocations_familial[4]), - t140= - caml_call1 - (Runtime_ocaml_Runtime[35],interface_allocations_familial[3]), - _bUe_=interface_allocations_familial[2]; - function _bUf_(x){return enfant_entree_to_jsoo(x)} - var - t139=caml_js_from_array(caml_call2(Stdlib_Array[15],_bUf_,_bUe_)), - t138= - caml_call1(Runtime_jsoo_Runtime[5],interface_allocations_familial[1]); - return {"iDateCouranteIn":t138, - "iEnfantsIn":t139, - "iRessourcesMenageIn":t140, - "iResidenceIn":t141, - "iPersonneChargeEffectivePermanenteEstParentIn":t142, - "iPersonneChargeEffectivePermanenteRemplitTitreIIn":t143, - "iAvaitEnfantAChargeAvant1erJanvier2012In":t144}} - function interface_allocations_familial$3(interface_allocations_familial) - {var - _bT7_= - interface_allocations_familial.iAvaitEnfantAChargeAvant1erJanvier2012In - | - 0, - _bT8_= - interface_allocations_familial.iPersonneChargeEffectivePermanenteRemplitTitreIIn - | - 0, - _bT9_= - interface_allocations_familial.iPersonneChargeEffectivePermanenteEstParentIn - | - 0, - _bT__=collectivite_of_jsoo(interface_allocations_familial.iResidenceIn), - _bT$_= - caml_call1 - (Runtime_ocaml_Runtime[42], - interface_allocations_familial.iRessourcesMenageIn), - _bUa_=caml_call1(Runtime_ocaml_Runtime[33],_bT$_), - _bUb_=caml_js_to_array(interface_allocations_familial.iEnfantsIn); - function _bUc_(x){return enfant_entree_of_jsoo(x)} - var _bUd_=caml_call1(caml_call1(Stdlib_Array[15],_bUc_),_bUb_); - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - interface_allocations_familial.iDateCouranteIn), - _bUd_, - _bUa_, - _bT__, - _bT9_, - _bT8_, - _bT7_]} - function allocation_familiales_avril200$4 - (allocation_familiales_avril200$1) - {return allocation_familiales_avril200$0 - (allocation_familiales_avril200(0))} - function enfant_le_plus_age$0(enfant_le_plus_age_in) - {return enfant_le_plus_age_to_jsoo - (enfant_le_plus_age - (enfant_le_plus_age_in_of_jsoo(enfant_le_plus_age_in)))} - function smic$0(smic_in) - {return smic_to_jsoo(smic(smic_in_of_jsoo(smic_in)))} - function base_mensuelle_allocations_fam$4 - (base_mensuelle_allocations_fam$1) - {return base_mensuelle_allocations_fam$0 - (base_mensuelle_allocations_fam - (base_mensuelle_allocations_fam$3 - (base_mensuelle_allocations_fam$1)))} - function prestations_familiales$0(prestations_familiales_in) - {return prestations_familiales_to_jsoo - (prestations_familiales - (prestations_familiales_in_of_j(prestations_familiales_in)))} - function allocations_familiales$0(allocations_familiales_in) - {return allocations_familiales_to_jsoo - (allocations_familiales - (allocations_familiales_in_of_j(allocations_familiales_in)))} - function interface_allocations_familial$4 - (interface_allocations_familial$1) - {return interface_allocations_familial$0 - (interface_allocations_familial - (interface_allocations_familial$3 - (interface_allocations_familial$1)))} - function t158(param) - {return caml_js_wrap_callback(interface_allocations_familial$4)} - function t157(param) - {return caml_js_wrap_callback(allocations_familiales$0)} - function t156(param) - {return caml_js_wrap_callback(prestations_familiales$0)} - function t155(param) - {return caml_js_wrap_callback(base_mensuelle_allocations_fam$4)} - function t154(param){return caml_js_wrap_callback(smic$0)} - function t153(param){return caml_js_wrap_callback(enfant_le_plus_age$0)} - function t152(param) - {return caml_js_wrap_callback(allocation_familiales_avril200$4)} - caml_call2 - (Js_of_ocaml_Js[46], - cst_AllocationsFamilialesLib, - {"allocationFamilialesAvril2008":caml_js_wrap_meth_callback(t152), - "enfantLePlusAge":caml_js_wrap_meth_callback(t153), - "smic":caml_js_wrap_meth_callback(t154), - "baseMensuelleAllocationsFamiliales":caml_js_wrap_meth_callback(t155), - "prestationsFamiliales":caml_js_wrap_meth_callback(t156), - "allocationsFamiliales":caml_js_wrap_meth_callback(t157), - "interfaceAllocationsFamiliales":caml_js_wrap_meth_callback(t158)}); - var - Law_source_Allocations_familia$0= - [0, - prise_en_charge_to_jsoo, - prise_en_charge_of_jsoo, - situation_obligation_scolaire_, - situation_obligation_scolaire_$0, - prise_en_compte_to_jsoo, - prise_en_compte_of_jsoo, - versement_allocations_to_jsoo, - versement_allocations_of_jsoo, - element_prestations_familiales, - element_prestations_familiales$0, - collectivite_to_jsoo, - collectivite_of_jsoo, - allocation_familiales_avril200$0, - allocation_familiales_avril200$1, - allocations_familiales_to_jsoo, - allocations_familiales_of_jsoo, - smic_to_jsoo, - smic_of_jsoo, - base_mensuelle_allocations_fam$0, - base_mensuelle_allocations_fam$1, - interface_allocations_familial$0, - interface_allocations_familial$1, - enfant_entree_to_jsoo, - enfant_entree_of_jsoo, - enfant_to_jsoo, - enfant_of_jsoo, - enfant_le_plus_age_to_jsoo, - enfant_le_plus_age_of_jsoo, - prestations_familiales_to_jsoo, - prestations_familiales_of_jsoo, - prestations_familiales_in_to_j, - prestations_familiales_in_of_j, - allocation_familiales_avril200$2, - allocation_familiales_avril200$3, - enfant_le_plus_age_in_to_jsoo, - enfant_le_plus_age_in_of_jsoo, - allocations_familiales_in_to_j, - allocations_familiales_in_of_j, - smic_in_to_jsoo, - smic_in_of_jsoo, - base_mensuelle_allocations_fam$2, - base_mensuelle_allocations_fam$3, - interface_allocations_familial$2, - interface_allocations_familial$3, - allocation_familiales_avril200$4, - enfant_le_plus_age$0, - smic$0, - base_mensuelle_allocations_fam$4, - prestations_familiales$0, - allocations_familiales$0, - interface_allocations_familial$4]; - caml_register_global - (8575, - Law_source_Allocations_familia$0, - "Law_source__Allocations_familiales_api_web"); - var TypePret=[0]; - function embed_type_pret(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bT6_=[0,cst_D331_32,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bT6_=[0,cst_D331_63_64,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _bT6_=[0,cst_D331_59_8,caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - case 3: - var - x$3=x[1], - _bT6_=[0,cst_D331_76_1,caml_call1(Runtime_ocaml_Runtime[11],x$3)]; - break; - default: - var - x$4=x[1], - _bT6_=[0,cst_Autre,caml_call1(Runtime_ocaml_Runtime[11],x$4)]} - return [6,_kI_,_bT6_]} - var TitulairePret=[0]; - function embed_titulaire_pret(x) - {if(0 === x[0]) - var - x$0=x[1], - _bT5_=[0,cst_Demandeur,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var - x$1=x[1], - _bT5_= - [0, - cst_VendeurQuandDemandeurACont, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_kJ_,_bT5_]} - var TypeTravauxLogementD83215=[0]; - function embed_type_travaux_logement_d8(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bT4_= - [0, - cst_TravauxPourAcquisitionD832, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bT4_= - [0, - cst_TravauxSurLogementD_j_Acqu, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bT4_=[0,cst_PasDeTravaux,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_kK_,_bT4_]} - var TypeTravauxLogementR8425=[0]; - function embed_type_travaux_logement_r8(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bT3_= - [0, - cst_ObjectifD_cenceLogement, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bT3_= - [0, - cst_Pr_vuDansListeR321_15, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _bT3_= - [0, - cst_AgrandirOuRendreHabitableD, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - default: - var - x$3=x[1], - _bT3_= - [0,cst_PasDeTravaux$0,caml_call1(Runtime_ocaml_Runtime[11],x$3)]} - return [6,_kL_,_bT3_]} - var AmelioreParOccupant=[0]; - function embed_ameliore_par_occupant(x) - {if(0 === x[0]) - var - x$0=x[1], - _bT2_=[0,cst_Oui,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var - x$1=x[1], - _bT2_=[0,cst_Non,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_kM_,_bT2_]} - var LimiteTranche=[0]; - function embed_limite_tranche(x) - {if(0 === x[0]) - var - x$0=x[1], - _bT1_=[0,cst_Revenu,caml_call1(Runtime_ocaml_Runtime[13],x$0)]; - else - var - x$1=x[1], - _bT1_=[0,cst_Infini,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_kN_,_bT1_]} - var LimiteTrancheDecimal=[0]; - function embed_limite_tranche_decimal(x) - {if(0 === x[0]) - var - x$0=x[1], - _bT0_=[0,cst_Revenu$0,caml_call1(Runtime_ocaml_Runtime[15],x$0)]; - else - var - x$1=x[1], - _bT0_=[0,cst_Infini$0,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_kO_,_bT0_]} - var PrestationRecue=[0]; - function embed_prestation_recue(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bTZ_= - [0, - cst_AllocationsFamiliales$1, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bTZ_= - [0, - cst_Compl_mentFamilial$0, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _bTZ_= - [0, - cst_AllocationJeuneEnfant, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - case 3: - var - x$3=x[1], - _bTZ_= - [0, - cst_AllocationSoutienFamilial$1, - caml_call1(Runtime_ocaml_Runtime[11],x$3)]; - break; - case 4: - var - x$4=x[1], - _bTZ_= - [0, - cst_AllocationSoutienEnfantHan, - caml_call1(Runtime_ocaml_Runtime[11],x$4)]; - break; - default: - var - x$5=x[1], - _bTZ_= - [0, - cst_AllocationAdulteHandicap, - caml_call1(Runtime_ocaml_Runtime[11],x$5)]} - return [6,_kP_,_bTZ_]} - var ParentOuAutre=[0]; - function embed_parent_ou_autre(x) - {if(0 === x[0]) - var - x$0=x[1], - _bTY_= - [0, - cst_DemandeurOuConjointOuParen, - caml_call1(Runtime_ocaml_Runtime[15],x$0)]; - else - var - x$1=x[1], - _bTY_=[0,cst_Autre$0,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_kQ_,_bTY_]} - var SituationGardeAlternee=[0]; - function embed_situation_garde_alternee(x) - {if(0 === x[0]) - var - x$0=x[1], - _bTX_= - [0,cst_PasDeGardeAltern_e,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var - x$1=x[1], - _bTX_= - [0, - cst_GardeAltern_eCoefficientPr, - caml_call1(Runtime_ocaml_Runtime[15],x$1)]; - return [6,_kR_,_bTX_]} - var Parente=[0]; - function embed_parente(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bTW_=[0,cst_Ascendant,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bTW_=[0,cst_Descendant,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bTW_= - [0, - cst_Collat_ralDeuxi_meTroisi_m, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_kS_,_bTW_]} - var DateDeNaissanceOuMoisDeGrosses=[0]; - function embed_date_de_naissance_ou_moi(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bTV_= - [0,cst_DateDeNaissance,caml_call1(Runtime_ocaml_Runtime[16],x$0)]; - break; - case 1: - var - x$1=x[1], - _bTV_= - [0, - cst_AvantPremierJourMoisCivilT, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bTV_= - [0, - cst_Apr_sPremierJourMoisCivilT, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_kT_,_bTV_]} - var ZoneDHabitation=[0]; - function embed_zone_d_habitation(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bTU_=[0,cst_Zone1,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bTU_=[0,cst_Zone2,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bTU_=[0,cst_Zone3,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_kU_,_bTU_]} - var PaiementLogementDistinctProfes=[0]; - function embed_paiement_logement_distin(x) - {if(0 === x[0]) - var - x$0=x[1], - _bTT_= - [0, - cst_OuiAvecLoyerOuCharges, - caml_call1(Runtime_ocaml_Runtime[13],x$0)]; - else - var - x$1=x[1], - _bTT_=[0,cst_Non$0,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_kV_,_bTT_]} - var VersementA=[0]; - function embed_versement_a(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bTS_=[0,cst_Bailleur,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bTS_=[0,cst_B_n_ficiaire,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bTS_= - [0, - cst_tablissementHabilit, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_kW_,_bTS_]} - var DepenseLogement=[0]; - function embed_depense_logement(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bTR_= - [0, - cst_TotalAnnuel_ch_ances, - caml_call1(Runtime_ocaml_Runtime[13],x$0)]; - break; - case 1: - var - x$1=x[1], - _bTR_=[0,cst_Mensualit,caml_call1(Runtime_ocaml_Runtime[13],x$1)]; - break; - default: - var - x$2=x[1], - _bTR_=[0,cst_Loyer,caml_call1(Runtime_ocaml_Runtime[13],x$2)]} - return [6,_kX_,_bTR_]} - var ModeOccupationImpaye=[0]; - function embed_mode_occupation_impaye(x) - {if(0 === x[0]) - var - x$0=x[1], - _bTQ_=[0,cst_Impay_Loyer,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var - x$1=x[1], - _bTQ_=[0,cst_Impay_Pr_t,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_kY_,_bTQ_]} - var TypeEligibiliteAllocationLogem=[0]; - function embed_type_eligibilite_allocat(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bTP_=[0,cst_Pas_ligible,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bTP_= - [0, - cst_AllocationLogementFamilial, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bTP_= - [0, - cst_AllocationLogementSociale, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_kZ_,_bTP_]} - var TypeAidesPersonnelleLogement=[0]; - function embed_type_aides_personnelle_l(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bTO_= - [0, - cst_AidePersonnalis_eLogement, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bTO_= - [0, - cst_AllocationLogementFamilial$0, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bTO_= - [0, - cst_AllocationLogementSociale$0, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_k0_,_bTO_]} - var SituationFamiliale=[0]; - function embed_situation_familiale(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bTN_=[0,cst_C_libataire,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bTN_=[0,cst_Mari_s,caml_call1(Runtime_ocaml_Runtime[16],x$1)]; - break; - case 2: - var - x$2=x[1], - _bTN_=[0,cst_Pacs_s,caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - case 3: - var - x$3=x[1], - _bTN_=[0,cst_Concubins,caml_call1(Runtime_ocaml_Runtime[11],x$3)]; - break; - case 4: - var - x$4=x[1], - _bTN_= - [0, - cst_C_libataireS_par_DeFait, - caml_call1(Runtime_ocaml_Runtime[11],x$4)]; - break; - default: - var - x$5=x[1], - _bTN_= - [0, - cst_ConcubinageDontS_par_DeFai, - caml_call1(Runtime_ocaml_Runtime[11],x$5)]} - return [6,_k1_,_bTN_]} - var PriseEnCharge$0=[0]; - function embed_prise_en_charge$0(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bTM_= - [0, - cst_EffectiveEtPermanente$1, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bTM_= - [0, - cst_R_sidenceAltern_eAllocatai, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bTM_= - [0, - cst_R_sidenceAltern_eAllocatio, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_k2_,_bTM_]} - var TypeLogementFoyer=[0]; - function embed_type_logement_foyer(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bTL_= - [0, - cst_LogementPersonnes_g_esOuHa, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bTL_= - [0,cst_R_sidenceSociale,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _bTL_= - [0, - cst_FoyerJeunesTrvailleursOuMi, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - default: - var - x$3=x[1], - _bTL_=[0,cst_Autre$1,caml_call1(Runtime_ocaml_Runtime[11],x$3)]} - return [6,_k3_,_bTL_]} - var CategorieEquivalenceLoyerAlloc=[0]; - function embed_categorie_equivalence_lo(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bTK_= - [0, - cst_tudiantLog_EnChambreCROUS, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bTK_= - [0, - cst_tudiantLog_EnChambreCROUSR, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _bTK_= - [0, - cst_Personnes_g_esSelon3DeD842, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - default: - var - x$3=x[1], - _bTK_= - [0,cst_AutresPersonnes,caml_call1(Runtime_ocaml_Runtime[11],x$3)]} - return [6,_k4_,_bTK_]} - var SituationFamilialeCalculAPL=[0]; - function embed_situation_familiale_calc(x) - {if(0 === x[0]) - var - x$0=x[1], - _bTJ_=[0,cst_PersonneSeule,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var - x$1=x[1], - _bTJ_=[0,cst_Couple,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_k5_,_bTJ_]} - var Collectivite$0=[0]; - function embed_collectivite$0(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bTI_=[0,cst_Guadeloupe$1,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bTI_=[0,cst_Guyane$1,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _bTI_=[0,cst_Martinique$1,caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - case 3: - var - x$3=x[1], - _bTI_=[0,cst_LaR_union$0,caml_call1(Runtime_ocaml_Runtime[11],x$3)]; - break; - case 4: - var - x$4=x[1], - _bTI_= - [0,cst_SaintBarth_lemy$0,caml_call1(Runtime_ocaml_Runtime[11],x$4)]; - break; - case 5: - var - x$5=x[1], - _bTI_= - [0,cst_SaintMartin$1,caml_call1(Runtime_ocaml_Runtime[11],x$5)]; - break; - case 6: - var - x$6=x[1], - _bTI_=[0,cst_M_tropole$0,caml_call1(Runtime_ocaml_Runtime[11],x$6)]; - break; - case 7: - var - x$7=x[1], - _bTI_= - [0, - cst_SaintPierreEtMiquelon$1, - caml_call1(Runtime_ocaml_Runtime[11],x$7)]; - break; - default: - var - x$8=x[1], - _bTI_=[0,cst_Mayotte$1,caml_call1(Runtime_ocaml_Runtime[11],x$8)]} - return [6,_k6_,_bTI_]} - var PriseEnChargeEnfant=[0]; - function embed_prise_en_charge_enfant(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bTH_= - [0, - cst_GardeAltern_ePartageAlloca$0, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bTH_= - [0, - cst_GardeAltern_eAllocataireUn$0, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _bTH_= - [0, - cst_EffectiveEtPermanente$2, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - case 3: - var - x$3=x[1], - _bTH_= - [0, - cst_ServicesSociauxAllocationV$3, - caml_call1(Runtime_ocaml_Runtime[11],x$3)]; - break; - default: - var - x$4=x[1], - _bTH_= - [0, - cst_ServicesSociauxAllocationV$4, - caml_call1(Runtime_ocaml_Runtime[11],x$4)]} - return [6,_k7_,_bTH_]} - var SituationObligationScolaire$0=[0]; - function embed_situation_obligation_sco$0(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bTG_=[0,cst_Avant$1,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bTG_=[0,cst_Pendant$1,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - default: - var - x$2=x[1], - _bTG_=[0,cst_Apr_s$0,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_k8_,_bTG_]} - var ElementPrestationsFamiliales$0=[0]; - function embed_element_prestations_fami$0(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bTF_= - [0, - cst_PrestationAccueilJeuneEnfa$1, - caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - break; - case 1: - var - x$1=x[1], - _bTF_= - [0, - cst_AllocationsFamiliales$2, - caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - break; - case 2: - var - x$2=x[1], - _bTF_= - [0, - cst_Compl_mentFamilial$1, - caml_call1(Runtime_ocaml_Runtime[11],x$2)]; - break; - case 3: - var - x$3=x[1], - _bTF_= - [0, - cst_AllocationLogement$1, - caml_call1(Runtime_ocaml_Runtime[11],x$3)]; - break; - case 4: - var - x$4=x[1], - _bTF_= - [0, - cst_Allocation_ducationEnfantH$0, - caml_call1(Runtime_ocaml_Runtime[11],x$4)]; - break; - case 5: - var - x$5=x[1], - _bTF_= - [0, - cst_AllocationSoutienFamilial$2, - caml_call1(Runtime_ocaml_Runtime[11],x$5)]; - break; - case 6: - var - x$6=x[1], - _bTF_= - [0, - cst_AllocationRentr_eScolaire$0, - caml_call1(Runtime_ocaml_Runtime[11],x$6)]; - break; - default: - var - x$7=x[1], - _bTF_= - [0, - cst_AllocationJournali_rePrese$0, - caml_call1(Runtime_ocaml_Runtime[11],x$7)]} - return [6,_k9_,_bTF_]} - var ConventionBailleurSocial=[0]; - function embed_convention_bailleur_soci(x) - {var - _bTE_= - [0, - [0, - cst_r_duction_loyer_solidarit_, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - 0]; - return [7, - _k__, - [0, - [0, - cst_conventionn_livre_III_titr, - caml_call1(Runtime_ocaml_Runtime[12],x[1])], - _bTE_]]} - var ConventionANHA=[0]; - function embed_convention_a_n_h_a(x) - {return [7, - _k$_, - [0, - [0, - cst_conventionn_livre_III_titr$0, - caml_call1(Runtime_ocaml_Runtime[12],x[1])], - 0]]} - var PersonneSousLocation=[0]; - function embed_personne_sous_location(x) - {var - _bTD_= - [0, - [0, - cst_conforme_article_l442_1, - caml_call1(Runtime_ocaml_Runtime[12],x[2])], - 0]; - return [7, - _la_, - [0, - [0, - cst_date_naissance_personne_so, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _bTD_]]} - var Patrimoine=[0]; - function embed_patrimoine(x) - {var - _bTC_= - [0, - [0, - cst_ne_produisant_pas_revenu_p, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - 0]; - return [7, - _lb_, - [0, - [0, - cst_produisant_revenu_p_riode_, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bTC_]]} - var ConditionsEtrangers=[0]; - function embed_conditions_etrangers(x) - {return [7, - _lc_, - [0, - [0, - cst_satisfait_conditions_l512_, - caml_call1(Runtime_ocaml_Runtime[12],x[1])], - 0]]} - var PersonneVivantHabituellementAu=[0]; - function embed_personne_vivant_habituel(x) - {var - _bTB_= - [0,[0,cst_ressources,caml_call1(Runtime_ocaml_Runtime[13],x[2])],0]; - return [7, - _ld_, - [0, - [0, - cst_dur_e_r_sidence_durant_p_r, - caml_call1(Runtime_ocaml_Runtime[12],x[1])], - _bTB_]]} - var EligibiliteAidePersonnaliseeLo=[0]; - function embed_eligibilite_aide_personn(x) - {var - _bTy_= - [0, - [0, - cst_coefficents_enfants_garde_, - caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[4])], - 0], - _bTz_= - [0, - [0, - cst_nombre_personnes_charge_pr, - caml_call1(Runtime_ocaml_Runtime[14],x[3])], - _bTy_], - _bTA_= - [0,[0,cst_ligibilit,caml_call1(Runtime_ocaml_Runtime[12],x[2])],_bTz_]; - return [7, - _le_, - [0, - [0, - cst_date_courante, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _bTA_]]} - var EligibilitePrimeDeDemenagement=[0]; - function embed_eligibilite_prime_de_dem(x) - {return [7, - _lf_, - [0, - [0, - cst_montant_prime_d_m_nagement, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var RessourcesAidesPersonnelleLoge=[0]; - function embed_ressources_aides_personn(x) - {return [7, - _lg_, - [0, - [0, - cst_ressources_prises_en_compt, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var ContributionsSocialesAidesPers=[0]; - function embed_contributions_sociales_a(x) - {return [7, - _lh_, - [0, - [0,cst_montant$0,caml_call1(Runtime_ocaml_Runtime[10],x[1])], - 0]]} - var CalculAidePersonnaliseeLogemen=[0]; - function embed_calcul_aide_personnalise(x) - {var - _bTs_= - [0, - [0, - cst_traitement_aide_finale, - caml_call1(Runtime_ocaml_Runtime[10],x[7])], - 0], - _bTt_= - [0, - [0, - cst_aide_finale_formule, - caml_call1(Runtime_ocaml_Runtime[13],x[6])], - _bTs_], - _bTu_= - [0, - [0, - cst_participation_personnelle, - caml_call1(Runtime_ocaml_Runtime[13],x[5])], - _bTt_], - _bTv_= - [0, - [0, - cst_taux_composition_familiale, - caml_call1(Runtime_ocaml_Runtime[15],x[4])], - _bTu_], - _bTw_= - [0, - [0, - cst_participation_minimale, - caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _bTv_], - _bTx_= - [0, - [0, - cst_plafond_loyer_d823_16_2, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bTw_]; - return [7, - _li_, - [0, - [0, - cst_montant_forfaitaire_charge, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bTx_]]} - var CalculEquivalenceLoyerMinimale=[0]; - function embed_calcul_equivalence_loyer(x) - {return [7, - _lj_, - [0, - [0,cst_montant$1,caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var CalculNombrePartLogementFoyer=[0]; - function embed_calcul_nombre_part_logem(x) - {return [7, - _lk_, - [0, - [0, - cst_n_nombre_parts_d832_25, - caml_call1(Runtime_ocaml_Runtime[15],x[1])], - 0]]} - var CalculAidePersonnaliseeLogemen$0=[0]; - function embed_calcul_aide_personnalise$0(x) - {var - _bTk_= - [0, - [0, - cst_traitement_aide_finale$0, - caml_call1(Runtime_ocaml_Runtime[10],x[9])], - 0], - _bTl_= - [0, - [0, - cst_aide_finale_formule$0, - caml_call1(Runtime_ocaml_Runtime[13],x[8])], - _bTk_], - _bTm_= - [0, - [0, - cst_coefficient_prise_en_charg, - caml_call1(Runtime_ocaml_Runtime[15],x[7])], - _bTl_], - _bTn_= - [0, - [0, - cst_quivalence_loyer_minimale, - caml_call1(Runtime_ocaml_Runtime[13],x[6])], - _bTm_], - _bTo_= - [0, - [0, - cst_plafond_quivalence_loyer_l, - caml_call1(Runtime_ocaml_Runtime[13],x[5])], - _bTn_], - _bTp_= - [0, - [0, - cst_quivalence_loyer_ligible, - caml_call1(Runtime_ocaml_Runtime[13],x[4])], - _bTo_], - _bTq_= - [0, - [0, - cst_n_nombre_parts_d832_25$0, - caml_call1(Runtime_ocaml_Runtime[15],x[3])], - _bTp_], - _bTr_= - [0, - [0, - cst_coefficient_r_d832_25, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bTq_]; - return [7, - _ll_, - [0, - [0, - cst_coefficient_multiplicateur, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bTr_]]} - var CalculNombrePartsAccessionProp=[0]; - function embed_calcul_nombre_parts_acce(x) - {return [7, - _lm_, - [0, - [0, - cst_n_nombre_parts_d832_11, - caml_call1(Runtime_ocaml_Runtime[15],x[1])], - 0]]} - var CalculAidePersonnaliseeLogemen$1=[0]; - function embed_calcul_aide_personnalise$1(x) - {var - _bTg_= - [0, - [0, - cst_traitement_aide_finale$1, - caml_call1(Runtime_ocaml_Runtime[10],x[5])], - 0], - _bTh_= - [0, - [0, - cst_aide_finale_formule$1, - caml_call1(Runtime_ocaml_Runtime[13],x[4])], - _bTg_], - _bTi_= - [0, - [0, - cst_coefficient_prise_en_charg$0, - caml_call1(Runtime_ocaml_Runtime[15],x[3])], - _bTh_], - _bTj_= - [0, - [0,cst_mensualit_minimale,caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bTi_]; - return [7, - _ln_, - [0, - [0, - cst_mensualit_ligible, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bTj_]]} - var TraitementFormuleAideFinale=[0]; - function embed_traitement_formule_aide_(x) - {var - _bTf_= - [0, - [0, - cst_traitement_aide_finale$2, - caml_call1(Runtime_ocaml_Runtime[10],x[2])], - 0]; - return [7, - _lo_, - [0, - [0, - cst_aide_finale_formule$2, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bTf_]]} - var CalculAidePersonnaliseeLogemen$2=[0]; - function embed_calcul_aide_personnalise$2(x) - {var - _bTe_= - [0, - [0, - cst_traitement_aide_finale$3, - caml_call1(Runtime_ocaml_Runtime[10],x[2])], - 0]; - return [7, - _lp_, - [0, - [0, - cst_aide_finale_formule$3, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bTe_]]} - var InfosChangementLogementD8424=[0]; - function embed_infos_changement_logemen(x) - {var - _bTd_= - [0, - [0, - cst_ancienne_allocation_logeme, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - 0]; - return [7, - _lq_, - [0, - [0, - cst_ancien_loyer_principal, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bTd_]]} - var CalculAllocationLogementLocati=[0]; - function embed_calcul_allocation_logeme(x) - {var - _bTc_= - [0, - [0, - cst_traitement_aide_finale$4, - caml_call1(Runtime_ocaml_Runtime[10],x[2])], - 0]; - return [7, - _lr_, - [0, - [0, - cst_aide_finale_formule$4, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bTc_]]} - var CalculAllocationLogementAccess=[0]; - function embed_calcul_allocation_logeme$0(x) - {var - _bTb_= - [0, - [0, - cst_traitement_aide_finale$5, - caml_call1(Runtime_ocaml_Runtime[10],x[2])], - 0]; - return [7, - _ls_, - [0, - [0, - cst_aide_finale_formule$5, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bTb_]]} - var CalculAllocationLogementFoyer=[0]; - function embed_calcul_allocation_logeme$1(x) - {var - _bS8_= - [0, - [0, - cst_traitement_aide_finale$6, - caml_call1(Runtime_ocaml_Runtime[10],x[6])], - 0], - _bS9_= - [0, - [0, - cst_aide_finale_formule$6, - caml_call1(Runtime_ocaml_Runtime[13],x[5])], - _bS8_], - _bS__= - [0, - [0,cst_loyer_minimal,caml_call1(Runtime_ocaml_Runtime[13],x[4])], - _bS9_], - _bS$_= - [0, - [0, - cst_montant_forfaitaire_charge$0, - caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _bS__], - _bTa_= - [0, - [0,cst_quivalence_loyer,caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bS$_]; - return [7, - _lt_, - [0, - [0, - cst_coefficient_prise_en_charg$1, - caml_call1(Runtime_ocaml_Runtime[15],x[1])], - _bTa_]]} - var CalculAllocationLogement=[0]; - function embed_calcul_allocation_logeme$2(x) - {var - _bS7_= - [0, - [0, - cst_traitement_aide_finale$7, - caml_call1(Runtime_ocaml_Runtime[10],x[2])], - 0]; - return [7, - _lu_, - [0, - [0, - cst_aide_finale_formule$7, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bS7_]]} - var OuvertureDroitsRetraite=[0]; - function embed_ouverture_droits_retrait(x) - {return [7, - _lv_, - [0, - [0, - cst_ge_ouverture_droit, - caml_call1(Runtime_ocaml_Runtime[17],x[1])], - 0]]} - var ImpayeDepenseLogement=[0]; - function embed_impaye_depense_logement(x) - {return [7, - _lw_, - [0, - [0, - cst_montant_impay, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var CalculetteAidesAuLogement=[0]; - function embed_calculette_aides_au_loge(x) - {var - _bS4_= - [0, - [0, - cst_coefficents_enfants_garde_$0, - caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[4])], - 0], - _bS5_= - [0, - [0, - cst_traitement_aide_finale$8, - caml_call1(Runtime_ocaml_Runtime[10],x[3])], - _bS4_], - _bS6_= - [0, - [0, - cst_aide_finale_formule$8, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bS5_]; - return [7, - _lx_, - [0, - [0,cst_ligibilit$0,caml_call1(Runtime_ocaml_Runtime[12],x[1])], - _bS6_]]} - var CalculetteAidesAuLogementGarde=[0]; - function embed_calculette_aides_au_loge$0(x) - {var - _bS3_= - [0,[0,cst_aide_finale,caml_call1(Runtime_ocaml_Runtime[13],x[2])],0]; - return [7, - _ly_, - [0, - [0,cst_ligibilit$1,caml_call1(Runtime_ocaml_Runtime[12],x[1])], - _bS3_]]} - var BaseMensuelleAllocationsFamili$1=[0]; - function embed_base_mensuelle_allocatio$1(x) - {return [7, - _lz_, - [0, - [0,cst_montant$2,caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var Smic$0=[0]; - function embed_smic$0(x) - {return [7, - _lA_, - [0, - [0, - cst_brut_horaire$0, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - 0]]} - var Pret=[0]; - function embed_pret(x) - {var - _bS1_=[0,[0,cst_titulaire_pr_t,embed_titulaire_pret(x[3])],0], - _bS2_= - [0, - [0,cst_date_signature,caml_call1(Runtime_ocaml_Runtime[16],x[2])], - _bS1_]; - return [7,_lB_,[0,[0,cst_type_pr_t,embed_type_pret(x[1])],_bS2_]]} - var NeufOuAncien=[0]; - function embed_neuf_ou_ancien(x) - {if(0 === x[0]) - var - x$0=x[1], - _bS0_=[0,cst_Neuf,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var x$1=x[1],_bS0_=[0,cst_Ancien,embed_ameliore_par_occupant(x$1)]; - return [6,_lC_,_bS0_]} - var TrancheRevenu=[0]; - function embed_tranche_revenu(x) - {var - _bSY_=[0,[0,cst_taux,caml_call1(Runtime_ocaml_Runtime[15],x[3])],0], - _bSZ_=[0,[0,cst_bas,caml_call1(Runtime_ocaml_Runtime[13],x[2])],_bSY_]; - return [7,_lD_,[0,[0,cst_haut,embed_limite_tranche(x[1])],_bSZ_]]} - var TrancheRevenuDecimal=[0]; - function embed_tranche_revenu_decimal(x) - {var - _bSW_=[0,[0,cst_taux$0,caml_call1(Runtime_ocaml_Runtime[15],x[3])],0], - _bSX_= - [0,[0,cst_bas$0,caml_call1(Runtime_ocaml_Runtime[15],x[2])],_bSW_]; - return [7, - _lE_, - [0,[0,cst_haut$0,embed_limite_tranche_decimal(x[1])],_bSX_]]} - var AutrePersonneACharge=[0]; - function embed_autre_personne_a_charge(x) - {var - _bSQ_= - [0, - [0, - cst_titulaire_allocation_perso, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - 0], - _bSR_= - [0, - [0, - cst_b_n_ficiaire_l161_19_l351_, - caml_call1(Runtime_ocaml_Runtime[12],x[6])], - _bSQ_], - _bSS_= - [0, - [0, - cst_incapacit_80_pourcent_ou_r, - caml_call1(Runtime_ocaml_Runtime[12],x[5])], - _bSR_], - _bST_=[0,[0,cst_parent,embed_parente(x[4])],_bSS_], - _bSU_= - [0, - [0, - cst_ascendant_descendant_colla, - caml_call1(Runtime_ocaml_Runtime[12],x[3])], - _bST_], - _bSV_= - [0, - [0,cst_ressources$0,caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bSU_]; - return [7, - _lF_, - [0, - [0, - cst_date_naissance, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _bSV_]]} - var DateNaissanceTroisiemeOuDernie=[0]; - function embed_date_naissance_troisieme(x) - {if(0 === x[0]) - var - x$0=x[1], - _bSP_= - [0,cst_MoinsDeTroisEnfants,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var - x$1=x[1], - _bSP_=[0,cst_PlusDeTroisEnfants,embed_date_de_naissance_ou_moi(x$1)]; - return [6,_lG_,_bSP_]} - var EligibiliteAllocationLogement=[0]; - function embed_eligibilite_allocation_l(x) - {var - _bSN_= - [0, - [0, - cst_coefficents_enfants_garde_$1, - caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[3])], - 0], - _bSO_= - [0, - [0, - cst_nombre_personnes_charge_pr$0, - caml_call1(Runtime_ocaml_Runtime[14],x[2])], - _bSN_]; - return [7, - _lH_, - [0, - [0,cst_ligibilit$2,embed_type_eligibilite_allocat(x[1])], - _bSO_]]} - var LogementFoyer=[0]; - function embed_logement_foyer(x) - {var - _bSH_= - [0, - [0, - cst_cat_gorie_quivalence_loyer, - embed_categorie_equivalence_lo(x[7])], - 0], - _bSI_= - [0,[0,cst_redevance,caml_call1(Runtime_ocaml_Runtime[13],x[6])],_bSH_], - _bSJ_= - [0, - [0, - cst_construit_application_loi_, - caml_call1(Runtime_ocaml_Runtime[12],x[5])], - _bSI_], - _bSK_= - [0, - [0, - cst_date_conventionnement, - caml_call1(Runtime_ocaml_Runtime[16],x[4])], - _bSJ_], - _bSL_= - [0, - [0, - cst_conventionn_livre_III_titr$1, - caml_call1(Runtime_ocaml_Runtime[12],x[3])], - _bSK_], - _bSM_= - [0, - [0, - cst_remplit_conditions_r832_21, - caml_call1(Runtime_ocaml_Runtime[12],x[2])], - _bSL_]; - return [7,_lI_,[0,[0,cst_type,embed_type_logement_foyer(x[1])],_bSM_]]} - var EnfantPrestationsFamiliales=[0]; - function embed_enfant_prestations_famil(x) - {var - _bSB_= - [0, - [0, - cst_b_n_ficie_titre_personnel_$0, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - 0], - _bSC_= - [0, - [0, - cst_a_d_j_ouvert_droit_aux_all$0, - caml_call1(Runtime_ocaml_Runtime[12],x[6])], - _bSB_], - _bSD_= - [0,[0,cst_prise_en_charge$0,embed_prise_en_charge_enfant(x[5])],_bSC_], - _bSE_= - [0, - [0, - cst_date_de_naissance$0, - caml_call1(Runtime_ocaml_Runtime[16],x[4])], - _bSD_], - _bSF_= - [0, - [0, - cst_r_muneration_mensuelle$0, - caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _bSE_], - _bSG_= - [0, - [0,cst_obligation_scolaire$0,embed_situation_obligation_sco$0(x[2])], - _bSF_]; - return [7, - _lJ_, - [0, - [0, - cst_identifiant$0, - caml_call1(Runtime_ocaml_Runtime[14],x[1])], - _bSG_]]} - var EnfantACharge=[0]; - function embed_enfant_a_charge(x) - {var - _bSv_= - [0, - [0,cst_situation_garde_altern_e,embed_situation_garde_alternee(x[7])], - 0], - _bSw_= - [0, - [0,cst_obligation_scolaire$1,embed_situation_obligation_sco$0(x[6])], - _bSv_], - _bSx_= - [0, - [0, - cst_r_muneration_mensuelle$1, - caml_call1(Runtime_ocaml_Runtime[13],x[5])], - _bSw_], - _bSy_= - [0, - [0, - cst_date_de_naissance$1, - caml_call1(Runtime_ocaml_Runtime[16],x[4])], - _bSx_], - _bSz_= - [0, - [0, - cst_a_d_j_ouvert_droit_aux_all$1, - caml_call1(Runtime_ocaml_Runtime[12],x[3])], - _bSy_], - _bSA_= - [0, - [0, - cst_b_n_ficie_titre_personnel_$1, - caml_call1(Runtime_ocaml_Runtime[12],x[2])], - _bSz_]; - return [7, - _lK_, - [0, - [0, - cst_identifiant$1, - caml_call1(Runtime_ocaml_Runtime[14],x[1])], - _bSA_]]} - var TypeBailleur=[0]; - function embed_type_bailleur(x) - {switch(x[0]) - {case 0: - var - x$0=x[1], - _bSu_=[0,cst_BailleurSocial,embed_convention_bailleur_soci(x$0)]; - break; - case 1: - var - x$1=x[1], - _bSu_= - [0,cst_BailleurPriv_AvecConventio,embed_convention_a_n_h_a(x$1)]; - break; - default: - var - x$2=x[1], - _bSu_=[0,cst_BailleurPriv,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} - return [6,_lL_,_bSu_]} - var LoueOuSousLoueADesTiers=[0]; - function embed_loue_ou_sous_loue_a_des_(x) - {if(0 === x[0]) - var - x$0=x[1], - _bSt_=[0,cst_Non$1,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var x$1=x[1],_bSt_=[0,cst_Oui$0,embed_personne_sous_location(x$1)]; - return [6,_lM_,_bSt_]} - var Nationalite=[0]; - function embed_nationalite(x) - {if(0 === x[0]) - var - x$0=x[1], - _bSs_=[0,cst_Fran_aise,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; - else - var x$1=x[1],_bSs_=[0,cst_trang_re,embed_conditions_etrangers(x$1)]; - return [6,_lN_,_bSs_]} - var ChangementLogementD8424=[0]; - function embed_changement_logement_d842(x) - {if(0 === x[0]) - var - x$0=x[1], - _bSr_=[0,cst_Changement,embed_infos_changement_logemen(x$0)]; - else - var - x$1=x[1], - _bSr_= - [0,cst_PasDeChangement,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; - return [6,_lO_,_bSr_]} - var Proprietaire=[0]; - function embed_proprietaire(x) - {var - _bSh_=[0,[0,cst_pr_t,embed_pret(x[11])],0], - _bSi_=[0,[0,cst_anciennet_logement,embed_neuf_ou_ancien(x[10])],_bSh_], - _bSj_= - [0, - [0, - cst_situation_r822_11_13_17, - caml_call1(Runtime_ocaml_Runtime[12],x[9])], - _bSi_], - _bSk_= - [0, - [0,cst_copropri_t,caml_call1(Runtime_ocaml_Runtime[12],x[8])], - _bSj_], - _bSl_= - [0, - [0, - cst_local_habit_premi_re_fois_, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - _bSk_], - _bSm_= - [0, - [0, - cst_type_travaux_logement_r842, - embed_type_travaux_logement_r8(x[6])], - _bSl_], - _bSn_= - [0, - [0, - cst_type_travaux_logement_d832, - embed_type_travaux_logement_d8(x[5])], - _bSm_], - _bSo_= - [0, - [0, - cst_date_entr_e_logement, - caml_call1(Runtime_ocaml_Runtime[16],x[4])], - _bSn_], - _bSp_= - [0, - [0, - cst_charges_mensuelles_pr_t, - caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _bSo_], - _bSq_= - [0, - [0, - cst_mensualit_principale, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bSp_]; - return [7, - _lP_, - [0, - [0, - cst_logement_situ_commune_d_s_, - caml_call1(Runtime_ocaml_Runtime[12],x[1])], - _bSq_]]} - var InformationsPrimeDeDemenagemen=[0]; - function embed_informations_prime_de_de(x) - {var - _bSg_= - [0, - [0, - cst_date_naissance_troisi_me_e, - embed_date_naissance_troisieme(x[2])], - 0]; - return [7, - _lQ_, - [0, - [0, - cst_nombre_enfants_na_tre_apr_, - caml_call1(Runtime_ocaml_Runtime[14],x[1])], - _bSg_]]} - var EligibilitePrestationsFamilial=[0]; - function embed_eligibilite_prestations_(x) - {var - _bSd_= - [0, - [0, - cst_r_gime_outre_mer_l751_1$0, - caml_call1(Runtime_ocaml_Runtime[12],x[4])], - 0], - _bSe_= - [0, - [0,cst_ge_l512_3_2$0,caml_call1(Runtime_ocaml_Runtime[17],x[3])], - _bSd_], - _bSf_= - [0, - [0, - cst_conditions_hors_ge$0, - caml_call1(Runtime_ocaml_Runtime[10],x[2])], - _bSe_]; - return [7, - _lR_, - [0, - [0, - cst_droit_ouvert$0, - caml_call1(Runtime_ocaml_Runtime[10],x[1])], - _bSf_]]} - var PersonneACharge=[0]; - function embed_personne_a_charge(x) - {if(0 === x[0]) - var x$0=x[1],_bSc_=[0,cst_Enfant_Charge,embed_enfant_a_charge(x$0)]; - else - var - x$1=x[1], - _bSc_=[0,cst_AutrePersonne_Charge,embed_autre_personne_a_charge(x$1)]; - return [6,_lS_,_bSc_]} - var Demandeur=[0]; - function embed_demandeur(x) - {var - _bR$_= - [0, - [0, - cst_personne_h_berg_e_centre_s, - caml_call1(Runtime_ocaml_Runtime[12],x[4])], - 0], - _bSa_=[0,[0,cst_patrimoine,embed_patrimoine(x[3])],_bR$_], - _bSb_=[0,[0,cst_nationalit,embed_nationalite(x[2])],_bSa_]; - return [7, - _lT_, - [0, - [0, - cst_date_naissance$0, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _bSb_]]} - var Location=[0]; - function embed_location(x) - {var - _bR4_= - [0, - [0, - cst_changement_logement_d842_4, - embed_changement_logement_d842(x[8])], - 0], - _bR5_= - [0, - [0, - cst_logement_meubl_d842_2, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - _bR4_], - _bR6_= - [0, - [0, - cst_g_es_ou_handicap_adultes_h, - caml_call1(Runtime_ocaml_Runtime[12],x[6])], - _bR5_], - _bR7_= - [0, - [0,cst_colocation,caml_call1(Runtime_ocaml_Runtime[12],x[5])], - _bR6_], - _bR8_= - [0, - [0, - cst_logement_est_chambre, - caml_call1(Runtime_ocaml_Runtime[12],x[4])], - _bR7_], - _bR9_= - [0, - [0, - cst_b_n_ficiaire_aide_adulte_o, - caml_call1(Runtime_ocaml_Runtime[12],x[3])], - _bR8_], - _bR__= - [0, - [0,cst_loyer_principal,caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bR9_]; - return [7,_lU_,[0,[0,cst_bailleur,embed_type_bailleur(x[1])],_bR__]]} - var EligibiliteAidesPersonnelleLog=[0]; - function embed_eligibilite_aides_person(x) - {var - _bR0_= - [0, - [0,cst_condition_2_r823_4,caml_call1(Runtime_ocaml_Runtime[10],x[5])], - 0], - _bR1_= - [0, - [0, - cst_coefficents_enfants_garde_$2, - caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[4])], - _bR0_], - _bR2_= - [0, - [0, - cst_nombre_personnes_charge_pr$1, - caml_call1(Runtime_ocaml_Runtime[14],x[3])], - _bR1_], - _bR3_= - [0, - [0,cst_ligibilit$3,caml_call1(Runtime_ocaml_Runtime[12],x[2])], - _bR2_]; - return [7, - _lV_, - [0, - [0, - cst_date_courante$0, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _bR3_]]} - var CategorieCalculAPL=[0]; - function embed_categorie_calcul_a_p_l(x) - {switch(x[0]) - {case 0:var x$0=x[1],_bRZ_=[0,cst_Location,embed_location(x$0)];break; - case 1: - var x$1=x[1],_bRZ_=[0,cst_AccessionPropri_t,embed_proprietaire(x$1)]; - break; - default: - var x$2=x[1],_bRZ_=[0,cst_LogementFoyer,embed_logement_foyer(x$2)]} - return [6,_lW_,_bRZ_]} - var ModeOccupation=[0]; - function embed_mode_occupation(x) - {switch(x[0]) - {case 0:var x$0=x[1],_bRY_=[0,cst_Locataire,embed_location(x$0)];break; - case 1: - var - x$1=x[1], - _bRY_=[0,cst_R_sidentLogementFoyer,embed_logement_foyer(x$1)]; - break; - case 2: - var - x$2=x[1], - _bRY_=[0,cst_AccessionPropri_t_LocalUsa,embed_proprietaire(x$2)]; - break; - case 3: - var x$3=x[1],_bRY_=[0,cst_SousLocataire,embed_location(x$3)];break; - default: - var x$4=x[1],_bRY_=[0,cst_LocationAccession,embed_proprietaire(x$4)]} - return [6,_lX_,_bRY_]} - var Logement=[0]; - function embed_logement(x) - {var - _bRQ_=[0,[0,cst_zone,embed_zone_d_habitation(x[9])],0], - _bRR_= - [0, - [0,cst_surface_m_carr_s,caml_call1(Runtime_ocaml_Runtime[14],x[8])], - _bRQ_], - _bRS_= - [0, - [0, - cst_logement_decent_l89_462, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - _bRR_], - _bRT_=[0,[0,cst_usufruit,embed_parent_ou_autre(x[6])],_bRS_], - _bRU_= - [0, - [0, - cst_lou_ou_sous_lou_des_tiers, - embed_loue_ou_sous_loue_a_des_(x[5])], - _bRT_], - _bRV_=[0,[0,cst_propri_taire,embed_parent_ou_autre(x[4])],_bRU_], - _bRW_=[0,[0,cst_mode_occupation,embed_mode_occupation(x[3])],_bRV_], - _bRX_= - [0, - [0, - cst_est_ehpad_ou_maison_autono, - caml_call1(Runtime_ocaml_Runtime[12],x[2])], - _bRW_]; - return [7, - _lY_, - [0, - [0, - cst_r_sidence_principale, - caml_call1(Runtime_ocaml_Runtime[12],x[1])], - _bRX_]]} - var Menage=[0]; - function embed_menage(x) - {var - _bRK_= - [0, - [0, - cst_enfant_na_tre_apr_s_quatri, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - 0], - _bRL_= - [0, - [0, - cst_condition_rattach_foyer_fi, - caml_call1(Runtime_ocaml_Runtime[12],x[6])], - _bRK_], - _bRM_= - [0,[0,cst_situation_familiale,embed_situation_familiale(x[5])],_bRL_], - _bRN_= - [0, - [0, - cst_nombre_autres_occupants_lo, - caml_call1(Runtime_ocaml_Runtime[14],x[4])], - _bRM_], - _bRO_= - [0, - [0, - cst_personnes_charge, - caml_call2(Runtime_ocaml_Runtime[18],embed_personne_a_charge,x[3])], - _bRN_], - _bRP_=[0,[0,cst_logement,embed_logement(x[2])],_bRO_]; - return [7, - _lZ_, - [0, - [0, - cst_prestations_re_ues, - caml_call2 - (Runtime_ocaml_Runtime[18],embed_prestation_recue,x[1])], - _bRP_]]} - var EligibiliteAidesPersonnelleLog$0=[0]; - function embed_eligibilite_aides_person$0(x) - {var - _bRG_= - [0, - [0, - cst_condition_logement_surface, - caml_call1(Runtime_ocaml_Runtime[10],x[5])], - 0], - _bRH_= - [0, - [0, - cst_condition_logement_r_siden, - caml_call1(Runtime_ocaml_Runtime[10],x[4])], - _bRG_], - _bRI_= - [0, - [0,cst_date_courante_in$3,caml_call1(Runtime_ocaml_Runtime[16],x[3])], - _bRH_], - _bRJ_=[0,[0,cst_demandeur_in,embed_demandeur(x[2])],_bRI_]; - return [7,_l0_,[0,[0,cst_m_nage_in,embed_menage(x[1])],_bRJ_]]} - var EligibiliteAidePersonnaliseeLo$0=[0]; - function embed_eligibilite_aide_personn$0(x) - {var - _bRE_= - [0, - [0,cst_date_courante_in$4,caml_call1(Runtime_ocaml_Runtime[16],x[3])], - 0], - _bRF_=[0,[0,cst_demandeur_in$0,embed_demandeur(x[2])],_bRE_]; - return [7,_l1_,[0,[0,cst_m_nage_in$0,embed_menage(x[1])],_bRF_]]} - var EligibiliteAllocationLogementI=[0]; - function embed_eligibilite_allocation_l$0(x) - {var - _bRB_= - [0, - [0, - cst_b_n_ficie_aide_personnalis, - caml_call1(Runtime_ocaml_Runtime[12],x[4])], - 0], - _bRC_=[0,[0,cst_demandeur_in$1,embed_demandeur(x[3])],_bRB_], - _bRD_=[0,[0,cst_m_nage_in$1,embed_menage(x[2])],_bRC_]; - return [7, - _l2_, - [0, - [0, - cst_date_courante_in$5, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _bRD_]]} - var EligibilitePrimeDeDemenagement$0=[0]; - function embed_eligibilite_prime_de_dem$0(x) - {var - _bRw_= - [0, - [0, - cst_d_penses_justifi_es_r_elle, - caml_call1(Runtime_ocaml_Runtime[13],x[6])], - 0], - _bRx_= - [0, - [0,cst_date_courante_in$6,caml_call1(Runtime_ocaml_Runtime[16],x[5])], - _bRw_], - _bRy_=[0,[0,cst_demandeur_in$2,embed_demandeur(x[4])],_bRx_], - _bRz_=[0,[0,cst_m_nage_in$2,embed_menage(x[3])],_bRy_], - _bRA_= - [0, - [0, - cst_date_emm_nagement_in, - caml_call1(Runtime_ocaml_Runtime[16],x[2])], - _bRz_]; - return [7, - _l3_, - [0, - [0,cst_informations_in,embed_informations_prime_de_de(x[1])], - _bRA_]]} - var RessourcesAidesPersonnelleLoge$0=[0]; - function embed_ressources_aides_personn$0(x) - {var - _bRk_= - [0, - [0, - cst_ressources_m_nage_arrondie, - caml_call1(Runtime_ocaml_Runtime[13],x[13])], - 0], - _bRl_= - [0, - [0, - cst_paiement_logement_distinct, - embed_paiement_logement_distin(x[12])], - _bRk_], - _bRm_= - [0, - [0, - cst_date_demande_ou_reexamen_d, - caml_call1(Runtime_ocaml_Runtime[16],x[11])], - _bRl_], - _bRn_= - [0, - [0, - cst_demandeur_poursuit_des_tud, - caml_call1(Runtime_ocaml_Runtime[12],x[10])], - _bRm_], - _bRo_= - [0, - [0, - cst_condition_ge_bourse_enseig, - caml_call1(Runtime_ocaml_Runtime[12],x[9])], - _bRn_], - _bRp_=[0,[0,cst_mode_occupation_in,embed_mode_occupation(x[8])],_bRo_], - _bRq_= - [0, - [0,cst_situation_familiale_in,embed_situation_familiale(x[7])], - _bRp_], - _bRr_= - [0, - [0, - cst_personnes_charge_in, - caml_call2(Runtime_ocaml_Runtime[18],embed_personne_a_charge,x[6])], - _bRq_], - _bRs_= - [0, - [0, - cst_conjoint_exerce_activit_r_, - caml_call1(Runtime_ocaml_Runtime[12],x[5])], - _bRr_], - _bRt_= - [0, - [0, - cst_demandeur_exerce_activit_r, - caml_call1(Runtime_ocaml_Runtime[12],x[4])], - _bRs_], - _bRu_= - [0, - [0, - cst_personnes_vivant_habituell, - caml_call2 - (Runtime_ocaml_Runtime[18],embed_personne_vivant_habituel,x[3])], - _bRt_], - _bRv_= - [0, - [0, - cst_ressources_conjoint_in, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bRu_]; - return [7, - _l4_, - [0, - [0, - cst_ressources_demandeur_in, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bRv_]]} - var ContributionsSocialesAidesPers$0=[0]; - function embed_contributions_sociales_a$0(x) - {return [7, - _l5_, - [0, - [0, - cst_date_courante_in$7, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - 0]]} - var CalculAidePersonnaliseeLogemen$3=[0]; - function embed_calcul_aide_personnalise$3(x) - {var - _bQ__= - [0, - [0, - cst_logement_meubl_d842_2_in, - caml_call1(Runtime_ocaml_Runtime[12],x[13])], - 0], - _bQ$_= - [0, - [0, - cst_r_duction_loyer_solidarit_$0, - caml_call1(Runtime_ocaml_Runtime[13],x[12])], - _bQ__], - _bRa_= - [0, - [0,cst_colocation_in,caml_call1(Runtime_ocaml_Runtime[12],x[11])], - _bQ$_], - _bRb_= - [0,[0,cst_type_aide_in,embed_type_aides_personnelle_l(x[10])],_bRa_], - _bRc_= - [0, - [0, - cst_g_es_ou_handicap_adultes_h$0, - caml_call1(Runtime_ocaml_Runtime[12],x[9])], - _bRb_], - _bRd_= - [0, - [0, - cst_logement_est_chambre_in, - caml_call1(Runtime_ocaml_Runtime[12],x[8])], - _bRc_], - _bRe_=[0,[0,cst_zone_in,embed_zone_d_habitation(x[7])],_bRd_], - _bRf_= - [0, - [0, - cst_situation_familiale_calcul, - embed_situation_familiale_calc(x[6])], - _bRe_], - _bRg_= - [0, - [0, - cst_nombre_personnes_charge_in, - caml_call1(Runtime_ocaml_Runtime[14],x[5])], - _bRf_], - _bRh_= - [0, - [0,cst_date_courante_in$8,caml_call1(Runtime_ocaml_Runtime[16],x[4])], - _bRg_], - _bRi_= - [0, - [0, - cst_b_n_ficiaire_aide_adulte_o$0, - caml_call1(Runtime_ocaml_Runtime[12],x[3])], - _bRh_], - _bRj_= - [0, - [0, - cst_ressources_m_nage_arrondie$0, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bRi_]; - return [7, - _l6_, - [0, - [0, - cst_loyer_principal_base_in, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bRj_]]} - var CalculEquivalenceLoyerMinimale$0=[0]; - function embed_calcul_equivalence_loyer$0(x) - {var - _bQ8_= - [0, - [0, - cst_n_nombre_parts_d832_25_in, - caml_call1(Runtime_ocaml_Runtime[15],x[3])], - 0], - _bQ9_= - [0, - [0, - cst_condition_2_du_832_25_in, - caml_call1(Runtime_ocaml_Runtime[12],x[2])], - _bQ8_]; - return [7, - _l7_, - [0, - [0, - cst_ressources_m_nage_arrondie$1, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bQ9_]]} - var CalculNombrePartLogementFoyerI=[0]; - function embed_calcul_nombre_part_logem$0(x) - {var - _bQ6_= - [0, - [0, - cst_situation_familiale_calcul$0, - embed_situation_familiale_calc(x[3])], - 0], - _bQ7_= - [0, - [0, - cst_nombre_personnes_charge_in$0, - caml_call1(Runtime_ocaml_Runtime[14],x[2])], - _bQ6_]; - return [7, - _l8_, - [0, - [0, - cst_condition_2_du_832_25_in$0, - caml_call1(Runtime_ocaml_Runtime[12],x[1])], - _bQ7_]]} - var CalculAidePersonnaliseeLogemen$4=[0]; - function embed_calcul_aide_personnalise$4(x) - {var - _bQX_= - [0, - [0, - cst_n_nombre_parts_d832_25_in$0, - caml_call1(Runtime_ocaml_Runtime[10],x[10])], - 0], - _bQY_= - [0, - [0, - cst_condition_2_du_832_25_in$1, - caml_call1(Runtime_ocaml_Runtime[10],x[9])], - _bQX_], - _bQZ_= - [0, - [0,cst_redevance_in,caml_call1(Runtime_ocaml_Runtime[13],x[8])], - _bQY_], - _bQ0_= - [0, - [0,cst_date_courante_in$9,caml_call1(Runtime_ocaml_Runtime[16],x[7])], - _bQZ_], - _bQ1_=[0,[0,cst_zone_in$0,embed_zone_d_habitation(x[6])],_bQ0_], - _bQ2_= - [0, - [0, - cst_situation_familiale_calcul$1, - embed_situation_familiale_calc(x[5])], - _bQ1_], - _bQ3_= - [0, - [0, - cst_nombre_personnes_charge_in$1, - caml_call1(Runtime_ocaml_Runtime[14],x[4])], - _bQ2_], - _bQ4_= - [0, - [0, - cst_ressources_m_nage_arrondie$2, - caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _bQ3_], - _bQ5_= - [0, - [0, - cst_date_conventionnement_in, - caml_call1(Runtime_ocaml_Runtime[16],x[2])], - _bQ4_]; - return [7, - _l9_, - [0, - [0,cst_type_logement_foyer_in,embed_type_logement_foyer(x[1])], - _bQ5_]]} - var CalculNombrePartsAccessionProp$0=[0]; - function embed_calcul_nombre_parts_acce$0(x) - {var - _bQW_= - [0, - [0, - cst_situation_familiale_calcul$2, - embed_situation_familiale_calc(x[2])], - 0]; - return [7, - _l__, - [0, - [0, - cst_nombre_personnes_charge_in$2, - caml_call1(Runtime_ocaml_Runtime[14],x[1])], - _bQW_]]} - var CalculAidePersonnaliseeLogemen$5=[0]; - function embed_calcul_aide_personnalise$5(x) - {var - _bQJ_= - [0, - [0, - cst_date_courante_in$10, - caml_call1(Runtime_ocaml_Runtime[16],x[14])], - 0], - _bQK_= - [0,[0,cst_anciennet_logement_in,embed_neuf_ou_ancien(x[13])],_bQJ_], - _bQL_=[0,[0,cst_type_pr_t_in,embed_type_pret(x[12])],_bQK_], - _bQM_=[0,[0,cst_zone_in$1,embed_zone_d_habitation(x[11])],_bQL_], - _bQN_= - [0, - [0, - cst_situation_r822_11_13_17_in, - caml_call1(Runtime_ocaml_Runtime[12],x[10])], - _bQM_], - _bQO_= - [0, - [0,cst_copropri_t_in,caml_call1(Runtime_ocaml_Runtime[12],x[9])], - _bQN_], - _bQP_= - [0, - [0, - cst_date_entr_e_logement_in, - caml_call1(Runtime_ocaml_Runtime[16],x[8])], - _bQO_], - _bQQ_= - [0, - [0, - cst_local_habit_premi_re_fois_$0, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - _bQP_], - _bQR_= - [0, - [0, - cst_date_signature_pr_t_in, - caml_call1(Runtime_ocaml_Runtime[16],x[6])], - _bQQ_], - _bQS_= - [0, - [0,cst_type_travaux_logement_in,embed_type_travaux_logement_d8(x[5])], - _bQR_], - _bQT_= - [0, - [0, - cst_situation_familiale_calcul$3, - embed_situation_familiale_calc(x[4])], - _bQS_], - _bQU_= - [0, - [0, - cst_nombre_personnes_charge_in$3, - caml_call1(Runtime_ocaml_Runtime[14],x[3])], - _bQT_], - _bQV_= - [0, - [0, - cst_ressources_m_nage_arrondie$3, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bQU_]; - return [7, - _l$_, - [0, - [0, - cst_mensualit_principale_in, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bQV_]]} - var CalculAidePersonnaliseeLogemen$6=[0]; - function embed_calcul_aide_personnalise$6(x) - {var - _bQD_= - [0, - [0, - cst_date_courante_in$11, - caml_call1(Runtime_ocaml_Runtime[16],x[7])], - 0], - _bQE_=[0,[0,cst_zone_in$2,embed_zone_d_habitation(x[6])],_bQD_], - _bQF_= - [0, - [0, - cst_nombre_personnes_charge_in$4, - caml_call1(Runtime_ocaml_Runtime[14],x[5])], - _bQE_], - _bQG_= - [0, - [0,cst_situation_familiale_in$0,embed_situation_familiale(x[4])], - _bQF_], - _bQH_= - [0, - [0, - cst_ressources_m_nage_sans_arr, - caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _bQG_], - _bQI_= - [0,[0,cst_type_aide_in$0,embed_type_aides_personnelle_l(x[2])],_bQH_]; - return [7, - _ma_, - [0, - [0,cst_mode_occupation_in$0,embed_mode_occupation(x[1])], - _bQI_]]} - var CalculAllocationLogementLocati$0=[0]; - function embed_calcul_allocation_logeme$3(x) - {var - _bQq_= - [0, - [0, - cst_changement_logement_d842_4$0, - embed_changement_logement_d842(x[14])], - 0], - _bQr_= - [0, - [0, - cst_logement_meubl_d842_2_in$0, - caml_call1(Runtime_ocaml_Runtime[12],x[13])], - _bQq_], - _bQs_= - [0, - [0, - cst_r_duction_loyer_solidarit_$1, - caml_call1(Runtime_ocaml_Runtime[13],x[12])], - _bQr_], - _bQt_= - [0, - [0,cst_colocation_in$0,caml_call1(Runtime_ocaml_Runtime[12],x[11])], - _bQs_], - _bQu_= - [0,[0,cst_type_aide_in$1,embed_type_aides_personnelle_l(x[10])],_bQt_], - _bQv_= - [0, - [0, - cst_g_es_ou_handicap_adultes_h$1, - caml_call1(Runtime_ocaml_Runtime[12],x[9])], - _bQu_], - _bQw_= - [0, - [0, - cst_logement_est_chambre_in$0, - caml_call1(Runtime_ocaml_Runtime[12],x[8])], - _bQv_], - _bQx_=[0,[0,cst_zone_in$3,embed_zone_d_habitation(x[7])],_bQw_], - _bQy_= - [0, - [0, - cst_situation_familiale_calcul$4, - embed_situation_familiale_calc(x[6])], - _bQx_], - _bQz_= - [0, - [0, - cst_nombre_personnes_charge_in$5, - caml_call1(Runtime_ocaml_Runtime[14],x[5])], - _bQy_], - _bQA_= - [0, - [0, - cst_date_courante_in$12, - caml_call1(Runtime_ocaml_Runtime[16],x[4])], - _bQz_], - _bQB_= - [0, - [0, - cst_b_n_ficiaire_aide_adulte_o$1, - caml_call1(Runtime_ocaml_Runtime[12],x[3])], - _bQA_], - _bQC_= - [0, - [0, - cst_ressources_m_nage_arrondie$4, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bQB_]; - return [7, - _mb_, - [0, - [0, - cst_loyer_principal_in, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bQC_]]} - var CalculAllocationLogementAccess$0=[0]; - function embed_calcul_allocation_logeme$4(x) - {var - _bQe_= - [0, - [0,cst_copropri_t_in$0,caml_call1(Runtime_ocaml_Runtime[12],x[13])], - 0], - _bQf_= - [0, - [0, - cst_charges_mensuelles_pr_t_in, - caml_call1(Runtime_ocaml_Runtime[13],x[12])], - _bQe_], - _bQg_= - [0, - [0, - cst_date_entr_e_logement_in$0, - caml_call1(Runtime_ocaml_Runtime[16],x[11])], - _bQf_], - _bQh_= - [0, - [0, - cst_local_habit_premi_re_fois_$1, - caml_call1(Runtime_ocaml_Runtime[12],x[10])], - _bQg_], - _bQi_= - [0, - [0, - cst_type_travaux_logement_in$0, - embed_type_travaux_logement_r8(x[9])], - _bQh_], - _bQj_= - [0, - [0, - cst_date_signature_pr_t_in$0, - caml_call1(Runtime_ocaml_Runtime[16],x[8])], - _bQi_], - _bQk_= - [0, - [0, - cst_situation_r822_11_13_17_in$0, - caml_call1(Runtime_ocaml_Runtime[12],x[7])], - _bQj_], - _bQl_= - [0, - [0, - cst_mensualit_principale_in$0, - caml_call1(Runtime_ocaml_Runtime[13],x[6])], - _bQk_], - _bQm_= - [0, - [0, - cst_date_courante_in$13, - caml_call1(Runtime_ocaml_Runtime[16],x[5])], - _bQl_], - _bQn_=[0,[0,cst_zone_in$4,embed_zone_d_habitation(x[4])],_bQm_], - _bQo_= - [0, - [0, - cst_situation_familiale_calcul$5, - embed_situation_familiale_calc(x[3])], - _bQn_], - _bQp_= - [0, - [0, - cst_nombre_personnes_charge_in$6, - caml_call1(Runtime_ocaml_Runtime[14],x[2])], - _bQo_]; - return [7, - _mc_, - [0, - [0, - cst_ressources_m_nage_arrondie$5, - caml_call1(Runtime_ocaml_Runtime[13],x[1])], - _bQp_]]} - var CalculAllocationLogementFoyerI=[0]; - function embed_calcul_allocation_logeme$5(x) - {var - _bP8_= - [0, - [0, - cst_cat_gorie_quivalence_loyer$0, - embed_categorie_equivalence_lo(x[9])], - 0], - _bP9_= - [0, - [0, - cst_date_courante_in$14, - caml_call1(Runtime_ocaml_Runtime[16],x[8])], - _bP8_], - _bP__=[0,[0,cst_zone_in$5,embed_zone_d_habitation(x[7])],_bP9_], - _bP$_= - [0, - [0, - cst_situation_familiale_calcul$6, - embed_situation_familiale_calc(x[6])], - _bP__], - _bQa_= - [0, - [0, - cst_nombre_personnes_charge_in$7, - caml_call1(Runtime_ocaml_Runtime[14],x[5])], - _bP$_], - _bQb_= - [0, - [0, - cst_ressources_m_nage_arrondie$6, - caml_call1(Runtime_ocaml_Runtime[13],x[4])], - _bQa_], - _bQc_= - [0, - [0,cst_redevance_in$0,caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _bQb_], - _bQd_= - [0, - [0, - cst_date_conventionnement_in$0, - caml_call1(Runtime_ocaml_Runtime[16],x[2])], - _bQc_]; - return [7, - _md_, - [0, - [0, - cst_type_logement_foyer_in$0, - embed_type_logement_foyer(x[1])], - _bQd_]]} - var CalculAllocationLogementIn=[0]; - function embed_calcul_allocation_logeme$6(x) - {var - _bP2_=[0,[0,cst_type_aide_in$2,embed_type_aides_personnelle_l(x[7])],0], - _bP3_= - [0, - [0, - cst_date_courante_in$15, - caml_call1(Runtime_ocaml_Runtime[16],x[6])], - _bP2_], - _bP4_=[0,[0,cst_zone_in$6,embed_zone_d_habitation(x[5])],_bP3_], - _bP5_= - [0, - [0, - cst_nombre_personnes_charge_in$8, - caml_call1(Runtime_ocaml_Runtime[14],x[4])], - _bP4_], - _bP6_= - [0, - [0,cst_situation_familiale_in$1,embed_situation_familiale(x[3])], - _bP5_], - _bP7_= - [0, - [0, - cst_ressources_m_nage_sans_arr$0, - caml_call1(Runtime_ocaml_Runtime[13],x[2])], - _bP6_]; - return [7, - _me_, - [0, - [0,cst_mode_occupation_in$1,embed_mode_occupation(x[1])], - _bP7_]]} - var OuvertureDroitsRetraiteIn=[0]; - function embed_ouverture_droits_retrait$0(x) - {return [7, - _mf_, - [0, - [0, - cst_date_naissance_assur_in, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - 0]]} - var ImpayeDepenseLogementIn=[0]; - function embed_impaye_depense_logement_(x) - {var - _bPX_= - [0, - [0,cst_montant_dette_in,caml_call1(Runtime_ocaml_Runtime[13],x[6])], - 0], - _bPY_= - [0,[0,cst_d_pense_logement_in,embed_depense_logement(x[5])],_bPX_], - _bPZ_= - [0, - [0,cst_montant_charges_in,caml_call1(Runtime_ocaml_Runtime[13],x[4])], - _bPY_], - _bP0_= - [0, - [0,cst_montant_apl_in,caml_call1(Runtime_ocaml_Runtime[13],x[3])], - _bPZ_], - _bP1_=[0,[0,cst_aide_vers_e_in,embed_versement_a(x[2])],_bP0_]; - return [7, - _mg_, - [0, - [0,cst_mode_occupation_in$2,embed_mode_occupation(x[1])], - _bP1_]]} - var CalculetteAidesAuLogementIn=[0]; - function embed_calculette_aides_au_loge$1(x) - {var - _bPU_= - [0, - [0, - cst_ressources_m_nage_prises_e, - caml_call1(Runtime_ocaml_Runtime[13],x[4])], - 0], - _bPV_= - [0, - [0, - cst_date_courante_in$16, - caml_call1(Runtime_ocaml_Runtime[16],x[3])], - _bPU_], - _bPW_=[0,[0,cst_demandeur_in$3,embed_demandeur(x[2])],_bPV_]; - return [7,_mh_,[0,[0,cst_m_nage_in$3,embed_menage(x[1])],_bPW_]]} - var CalculetteAidesAuLogementGarde$0=[0]; - function embed_calculette_aides_au_loge$2(x) - {var - _bPR_= - [0, - [0, - cst_ressources_m_nage_prises_e$0, - caml_call1(Runtime_ocaml_Runtime[13],x[4])], - 0], - _bPS_= - [0, - [0, - cst_date_courante_in$17, - caml_call1(Runtime_ocaml_Runtime[16],x[3])], - _bPR_], - _bPT_=[0,[0,cst_demandeur_in$4,embed_demandeur(x[2])],_bPS_]; - return [7,_mi_,[0,[0,cst_m_nage_in$4,embed_menage(x[1])],_bPT_]]} - var BaseMensuelleAllocationsFamili$2=[0]; - function embed_base_mensuelle_allocatio$2(x) - {return [7, - _mj_, - [0, - [0, - cst_date_courante_in$18, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - 0]]} - var SmicIn$0=[0]; - function embed_smic_in$0(x) - {var _bPQ_=[0,[0,cst_r_sidence_in$2,embed_collectivite$0(x[2])],0]; - return [7, - _mk_, - [0, - [0, - cst_date_courante_in$19, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _bPQ_]]} - var EligibilitePrestationsFamilial$0=[0]; - function embed_eligibilite_prestations_$0(x) - {var - _bPO_=[0,[0,cst_r_sidence_in$3,embed_collectivite$0(x[3])],0], - _bPP_= - [0, - [0, - cst_prestation_courante_in$0, - embed_element_prestations_fami$0(x[2])], - _bPO_]; - return [7, - _ml_, - [0, - [0, - cst_date_courante_in$20, - caml_call1(Runtime_ocaml_Runtime[16],x[1])], - _bPP_]]} - function contributions_sociales_aides_p(contributions_sociales_aides_p) - {var date_courante=contributions_sociales_aides_p[1]; - try - {var - _bPu_=function(param){return 0}, - _bPv_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mn_,1)}, - _bPw_= - [0, - function(param) - {function _bPM_(param){return 1} - function _bPN_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_mo_,1)} - return caml_call4(Runtime_ocaml_Runtime[63],_mp_,[0],_bPN_,_bPM_)}], - _bPx_=caml_call4(Runtime_ocaml_Runtime[63],_mq_,_bPw_,_bPv_,_bPu_)} - catch(_bPL_) - {_bPL_ = caml_wrap_exception(_bPL_); - if(_bPL_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_mm_]; - throw _bPL_} - var - exonere_csg= - caml_call3 - (Runtime_ocaml_Runtime[28],_mr_,Runtime_ocaml_Runtime[12],_bPx_); - try - {var - _bPy_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_005)}, - _bPz_= - function(param) - {var - _bPJ_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _bPK_=caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bPJ_); - return caml_call2(Runtime_ocaml_Runtime[29],_mt_,_bPK_)}, - _bPA_=caml_call4(Runtime_ocaml_Runtime[63],_mu_,[0],_bPz_,_bPy_)} - catch(_bPI_) - {_bPI_ = caml_wrap_exception(_bPI_); - if(_bPI_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ms_]; - throw _bPI_} - var - taux_crds= - caml_call3 - (Runtime_ocaml_Runtime[28],_mv_,Runtime_ocaml_Runtime[15],_bPA_); - function _bPB_(param) - {try - {var - _bPC_= - function(param$0) - {return caml_call2(Runtime_ocaml_Runtime[104],param,taux_crds)}, - _bPD_= - function(param) - {var - _bPG_=caml_call3(Runtime_ocaml_Runtime[57],2018,9,1), - _bPH_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bPG_); - return caml_call2(Runtime_ocaml_Runtime[29],_mx_,_bPH_)}, - _bPE_=caml_call4(Runtime_ocaml_Runtime[63],_my_,[0],_bPD_,_bPC_); - return _bPE_} - catch(_bPF_) - {_bPF_ = caml_wrap_exception(_bPF_); - if(_bPF_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_mw_]; - throw _bPF_}} - var - montant= - caml_call3 - (Runtime_ocaml_Runtime[28],_mz_,Runtime_ocaml_Runtime[10],_bPB_); - if(exonere_csg)return [0,montant]; - throw [0,Runtime_ocaml_Runtime[3],_mA_]} - function calcul_equivalence_loyer_minim(calcul_equivalence_loyer_minim) - {var - ressources_menage_arrondies=calcul_equivalence_loyer_minim[1], - condition_2_du_832_25=calcul_equivalence_loyer_minim[2], - n_nombre_parts_d832_25=calcul_equivalence_loyer_minim[3]; - try - {var - _bN3_= - function(param) - {return condition_2_du_832_25 - ?caml_call1(Runtime_ocaml_Runtime[31],cst_7632) - :caml_call1(Runtime_ocaml_Runtime[31],cst_4557)}, - _bN4_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mC_,1)}, - _bN5_=caml_call4(Runtime_ocaml_Runtime[63],_mD_,[0],_bN4_,_bN3_)} - catch(_bPt_) - {_bPt_ = caml_wrap_exception(_bPt_); - if(_bPt_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_mB_]; - throw _bPt_} - var - montant_forfaitaire_d832_26= - caml_call3 - (Runtime_ocaml_Runtime[28],_mE_,Runtime_ocaml_Runtime[13],_bN5_); - try - {var - _bN6_= - function(param) - {var - _bPd_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_48), - _bPe_= - [0,_mG_,caml_call1(Runtime_ocaml_Runtime[31],cst_633129),_bPd_], - _bPf_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32$1), - _bPg_=caml_call1(Runtime_ocaml_Runtime[31],cst_535744), - _bPh_= - [0, - [0,caml_call1(Runtime_ocaml_Runtime[31],cst_633129$0)], - _bPg_, - _bPf_], - _bPi_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_264), - _bPj_=caml_call1(Runtime_ocaml_Runtime[31],cst_389618), - _bPk_= - [0, - [0,caml_call1(Runtime_ocaml_Runtime[31],cst_535744$0)], - _bPj_, - _bPi_], - _bPl_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_216), - _bPm_=caml_call1(Runtime_ocaml_Runtime[31],cst_267871), - _bPn_= - [0, - [0,caml_call1(Runtime_ocaml_Runtime[31],cst_389618$0)], - _bPm_, - _bPl_], - _bPo_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_104), - _bPp_=caml_call1(Runtime_ocaml_Runtime[31],cst_194810), - _bPq_= - [0, - [0,caml_call1(Runtime_ocaml_Runtime[31],cst_267871$0)], - _bPp_, - _bPo_], - _bPr_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_04$0), - _bPs_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$67); - return [0, - [0, - [0,caml_call1(Runtime_ocaml_Runtime[31],cst_194810$0)], - _bPs_, - _bPr_], - _bPq_, - _bPn_, - _bPk_, - _bPh_, - _bPe_]}, - _bN7_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mH_,1)}, - _bN8_= - [0, - function(param) - {function _bO0_(param) - {var - _bO2_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_328), - _bO3_= - [0, - _mI_, - caml_call1(Runtime_ocaml_Runtime[31],cst_409505), - _bO2_], - _bO4_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_232$0), - _bO5_=caml_call1(Runtime_ocaml_Runtime[31],cst_262985), - _bO6_= - [0, - [0,caml_call1(Runtime_ocaml_Runtime[31],cst_409505$0)], - _bO5_, - _bO4_], - _bO7_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_208), - _bO8_=caml_call1(Runtime_ocaml_Runtime[31],cst_204761), - _bO9_= - [0, - [0,caml_call1(Runtime_ocaml_Runtime[31],cst_262985$0)], - _bO8_, - _bO7_], - _bO__=caml_call1(Runtime_ocaml_Runtime[39],cst_0_024), - _bO$_=caml_call1(Runtime_ocaml_Runtime[31],cst_142303), - _bPa_= - [0, - [0,caml_call1(Runtime_ocaml_Runtime[31],cst_204761$0)], - _bO$_, - _bO__], - _bPb_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$68), - _bPc_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$69); - return [0, - [0, - [0,caml_call1(Runtime_ocaml_Runtime[31],cst_142303$0)], - _bPc_, - _bPb_], - _bPa_, - _bO9_, - _bO6_, - _bO3_]} - function _bO1_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_mJ_,condition_2_du_832_25)} - return caml_call4(Runtime_ocaml_Runtime[63],_mK_,[0],_bO1_,_bO0_)}], - _bN9_=caml_call4(Runtime_ocaml_Runtime[63],_mL_,_bN8_,_bN7_,_bN6_)} - catch(_bOZ_) - {_bOZ_ = caml_wrap_exception(_bOZ_); - if(_bOZ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_mF_]; - throw _bOZ_} - var - _bN__=caml_call1(Runtime_ocaml_Runtime[18],embed_tranche_revenu), - tranches_revenus_d832_26= - caml_call3(Runtime_ocaml_Runtime[28],_mM_,_bN__,_bN9_); - try - {var - _bN$_= - function(param) - {function _bOS_(tranche) - {var - _bOT_=tranche[3], - _bOU_=caml_call1(Runtime_ocaml_Runtime[70],tranche[2]), - _bOV_= - caml_call2 - (Runtime_ocaml_Runtime[103],_bOU_,n_nombre_parts_d832_25), - _bOW_=tranche[1]; - if(0 === _bOW_[0]) - var - tranche_haut=_bOW_[1], - _bOX_=caml_call1(Runtime_ocaml_Runtime[70],tranche_haut), - _bOY_= - [0, - caml_call2 - (Runtime_ocaml_Runtime[103],_bOX_,n_nombre_parts_d832_25)]; - else - var _bOY_=_mO_; - return [0,_bOY_,_bOV_,_bOT_]} - return caml_call2 - (Runtime_ocaml_Runtime[87],_bOS_,tranches_revenus_d832_26)}, - _bOa_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mP_,1)}, - _bOb_=caml_call4(Runtime_ocaml_Runtime[63],_mQ_,[0],_bOa_,_bN$_)} - catch(_bOR_) - {_bOR_ = caml_wrap_exception(_bOR_); - if(_bOR_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_mN_]; - throw _bOR_} - var - _bOc_= - caml_call1(Runtime_ocaml_Runtime[18],embed_tranche_revenu_decimal), - tranches_revenus_d832_26_multi= - caml_call3(Runtime_ocaml_Runtime[28],_mR_,_bOc_,_bOb_); - try - {var - _bOd_= - function(param) - {var - ressources_menage_arrondies$0= - caml_call1 - (Runtime_ocaml_Runtime[70],ressources_menage_arrondies), - _bOA_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$11), - _bOB_= - caml_call1 - (Runtime_ocaml_Runtime[70],montant_forfaitaire_d832_26), - _bOC_= - caml_call2 - (Runtime_ocaml_Runtime[103],_bOB_,n_nombre_parts_d832_25); - function _bOD_(tranche) - {if - (caml_call2 - (Runtime_ocaml_Runtime[116], - ressources_menage_arrondies$0, - tranche[2])) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$70); - var _bOK_=tranche[1]; - if(0 === _bOK_[0]) - {var tranche_haut=_bOK_[1]; - if - (caml_call2 - (Runtime_ocaml_Runtime[126], - ressources_menage_arrondies$0, - tranche_haut)) - {var - _bOL_=tranche[3], - _bOM_= - caml_call2 - (Runtime_ocaml_Runtime[97],tranche_haut,tranche[2]); - return caml_call2(Runtime_ocaml_Runtime[103],_bOM_,_bOL_)} - var - _bON_=tranche[3], - _bOO_= - caml_call2 - (Runtime_ocaml_Runtime[97], - ressources_menage_arrondies$0, - tranche[2]); - return caml_call2(Runtime_ocaml_Runtime[103],_bOO_,_bON_)} - var - _bOP_=tranche[3], - _bOQ_= - caml_call2 - (Runtime_ocaml_Runtime[97], - ressources_menage_arrondies$0, - tranche[2]); - return caml_call2(Runtime_ocaml_Runtime[103],_bOQ_,_bOP_)} - var - _bOE_= - caml_call2 - (Runtime_ocaml_Runtime[87], - _bOD_, - tranches_revenus_d832_26_multi), - _bOF_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$71); - function _bOG_(sum1,sum2) - {return caml_call2(Runtime_ocaml_Runtime[92],sum1,sum2)} - var - _bOH_=caml_call3(Runtime_ocaml_Runtime[88],_bOG_,_bOF_,_bOE_), - _bOI_=caml_call2(Runtime_ocaml_Runtime[92],_bOH_,_bOC_), - _bOJ_=caml_call2(Runtime_ocaml_Runtime[107],_bOI_,_bOA_); - return caml_call1(Runtime_ocaml_Runtime[71],_bOJ_)}, - _bOe_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mT_,1)}, - _bOf_= - [0, - function(param) - {function _bOi_(param) - {var - ressources_menage_arrondies$0= - caml_call1 - (Runtime_ocaml_Runtime[70],ressources_menage_arrondies), - _bOk_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$12), - _bOl_= - caml_call1 - (Runtime_ocaml_Runtime[70],montant_forfaitaire_d832_26); - function _bOm_(tranche) - {if - (caml_call2 - (Runtime_ocaml_Runtime[116], - ressources_menage_arrondies$0, - tranche[2])) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$72); - var _bOt_=tranche[1]; - if(0 === _bOt_[0]) - {var tranche_haut=_bOt_[1]; - if - (caml_call2 - (Runtime_ocaml_Runtime[126], - ressources_menage_arrondies$0, - tranche_haut)) - {var - _bOu_=tranche[3], - _bOv_= - caml_call2 - (Runtime_ocaml_Runtime[97],tranche_haut,tranche[2]); - return caml_call2(Runtime_ocaml_Runtime[103],_bOv_,_bOu_)} - var - _bOw_=tranche[3], - _bOx_= - caml_call2 - (Runtime_ocaml_Runtime[97], - ressources_menage_arrondies$0, - tranche[2]); - return caml_call2(Runtime_ocaml_Runtime[103],_bOx_,_bOw_)} - var - _bOy_=tranche[3], - _bOz_= - caml_call2 - (Runtime_ocaml_Runtime[97], - ressources_menage_arrondies$0, - tranche[2]); - return caml_call2(Runtime_ocaml_Runtime[103],_bOz_,_bOy_)} - var - _bOn_= - caml_call2 - (Runtime_ocaml_Runtime[87], - _bOm_, - tranches_revenus_d832_26_multi), - _bOo_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$73); - function _bOp_(sum1,sum2) - {return caml_call2(Runtime_ocaml_Runtime[92],sum1,sum2)} - var - _bOq_=caml_call3(Runtime_ocaml_Runtime[88],_bOp_,_bOo_,_bOn_), - _bOr_=caml_call2(Runtime_ocaml_Runtime[92],_bOq_,_bOl_), - _bOs_=caml_call2(Runtime_ocaml_Runtime[107],_bOr_,_bOk_); - return caml_call1(Runtime_ocaml_Runtime[71],_bOs_)} - function _bOj_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_mU_,condition_2_du_832_25)} - return caml_call4(Runtime_ocaml_Runtime[63],_mV_,[0],_bOj_,_bOi_)}], - _bOg_=caml_call4(Runtime_ocaml_Runtime[63],_mW_,_bOf_,_bOe_,_bOd_)} - catch(_bOh_) - {_bOh_ = caml_wrap_exception(_bOh_); - if(_bOh_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_mS_]; - throw _bOh_} - var - montant= - caml_call3 - (Runtime_ocaml_Runtime[28],_mX_,Runtime_ocaml_Runtime[13],_bOg_); - return [0,montant]} - function calcul_nombre_part_logement_fo(calcul_nombre_part_logement_fo) - {var - condition_2_du_832_25=calcul_nombre_part_logement_fo[1], - nombre_personnes_a_charge=calcul_nombre_part_logement_fo[2], - situation_familiale_calcul_apl=calcul_nombre_part_logement_fo[3]; - try - {var - _bNA_= - function(param) - {var _bNS_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$74); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNS_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[39],cst_1_4) - :caml_call1(Runtime_ocaml_Runtime[39],cst_1_8); - var _bNT_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$28); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNT_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_2_5); - var _bNU_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$17); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNU_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_3$3); - var _bNV_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$4); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNV_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_3_7); - var _bNW_=caml_call1(Runtime_ocaml_Runtime[46],cst_4); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNW_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_4_3); - var - _bNX_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$0), - _bNY_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bNX_), - _bNZ_=caml_call1(Runtime_ocaml_Runtime[69],_bNY_), - _bN0_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$1), - _bN1_=caml_call2(Runtime_ocaml_Runtime[103],_bN0_,_bNZ_), - _bN2_=caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$0); - return caml_call2(Runtime_ocaml_Runtime[92],_bN2_,_bN1_)}, - _bNB_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mZ_,1)}, - _bNC_= - [0, - function(param) - {function _bNF_(param) - {var _bNH_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$75); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNH_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[39],cst_1_2) - :caml_call1(Runtime_ocaml_Runtime[39],cst_1_5); - var _bNI_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$29); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNI_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$0); - var _bNJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$18); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNJ_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_3$5); - var _bNK_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$6); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNK_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_3_7$0); - var _bNL_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$1); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNL_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$1); - var - _bNM_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$2), - _bNN_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bNM_), - _bNO_=caml_call1(Runtime_ocaml_Runtime[69],_bNN_), - _bNP_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$2), - _bNQ_=caml_call2(Runtime_ocaml_Runtime[103],_bNP_,_bNO_), - _bNR_=caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$2); - return caml_call2(Runtime_ocaml_Runtime[92],_bNR_,_bNQ_)} - function _bNG_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_m0_,condition_2_du_832_25)} - return caml_call4(Runtime_ocaml_Runtime[63],_m1_,[0],_bNG_,_bNF_)}], - _bND_=caml_call4(Runtime_ocaml_Runtime[63],_m2_,_bNC_,_bNB_,_bNA_)} - catch(_bNE_) - {_bNE_ = caml_wrap_exception(_bNE_); - if(_bNE_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_mY_]; - throw _bNE_} - var - n_nombre_parts_d832_25= - caml_call3 - (Runtime_ocaml_Runtime[28],_m3_,Runtime_ocaml_Runtime[15],_bND_); - return [0,n_nombre_parts_d832_25]} - function calcul_nombre_parts_accession_(calcul_nombre_parts_accession_) - {var - nombre_personnes_a_charge=calcul_nombre_parts_accession_[1], - situation_familiale_calcul_apl=calcul_nombre_parts_accession_[2]; - try - {var - _bNl_= - function(param) - {var _bNp_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$76); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNp_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[39],cst_1_4$0) - :caml_call1(Runtime_ocaml_Runtime[39],cst_1_8$0); - var _bNq_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$30); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNq_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$1); - var _bNr_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$19); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNr_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_3$7); - var _bNs_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$8); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNs_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_3_7$1); - var _bNt_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$3); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNt_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$3); - var - _bNu_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$4), - _bNv_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bNu_), - _bNw_=caml_call1(Runtime_ocaml_Runtime[69],_bNv_), - _bNx_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$3), - _bNy_=caml_call2(Runtime_ocaml_Runtime[103],_bNx_,_bNw_), - _bNz_=caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$4); - return caml_call2(Runtime_ocaml_Runtime[92],_bNz_,_bNy_)}, - _bNm_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_m5_,1)}, - _bNn_=caml_call4(Runtime_ocaml_Runtime[63],_m6_,[0],_bNm_,_bNl_)} - catch(_bNo_) - {_bNo_ = caml_wrap_exception(_bNo_); - if(_bNo_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_m4_]; - throw _bNo_} - var - n_nombre_parts_d832_11= - caml_call3 - (Runtime_ocaml_Runtime[28],_m7_,Runtime_ocaml_Runtime[15],_bNn_); - return [0,n_nombre_parts_d832_11]} - function ouverture_droits_retraite(ouverture_droits_retraite_in) - {var date_naissance_assure=ouverture_droits_retraite_in[1]; - try - {var - _bMB_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bMC_=function(param){return 0}, - _bMD_= - function(param) - {function _bNe_(param) - {var - _bNj_=caml_call3(Runtime_ocaml_Runtime[60],0,7,0), - _bNk_=caml_call3(Runtime_ocaml_Runtime[60],61,0,0); - return caml_call2(Runtime_ocaml_Runtime[95],_bNk_,_bNj_)} - function _bNf_(param) - {var - _bNg_=caml_call1(Runtime_ocaml_Runtime[46],cst_1954), - _bNh_= - caml_call1(Runtime_ocaml_Runtime[74],date_naissance_assure), - _bNi_=caml_call2(Runtime_ocaml_Runtime[86],_bNh_,_bNg_); - return caml_call2(Runtime_ocaml_Runtime[29],_m9_,_bNi_)} - return caml_call4(Runtime_ocaml_Runtime[63],_m__,[0],_bNf_,_bNe_)}, - _bME_= - function(param) - {function _bM9_(param) - {var - _bNc_=caml_call3(Runtime_ocaml_Runtime[60],0,2,0), - _bNd_=caml_call3(Runtime_ocaml_Runtime[60],61,0,0); - return caml_call2(Runtime_ocaml_Runtime[95],_bNd_,_bNc_)} - function _bM__(param) - {var - _bM$_=caml_call1(Runtime_ocaml_Runtime[46],cst_1953), - _bNa_= - caml_call1(Runtime_ocaml_Runtime[74],date_naissance_assure), - _bNb_=caml_call2(Runtime_ocaml_Runtime[86],_bNa_,_bM$_); - return caml_call2(Runtime_ocaml_Runtime[29],_m$_,_bNb_)} - return caml_call4(Runtime_ocaml_Runtime[63],_na_,[0],_bM__,_bM9_)}, - _bMF_= - function(param) - {function _bM2_(param) - {var - _bM7_=caml_call3(Runtime_ocaml_Runtime[60],0,9,0), - _bM8_=caml_call3(Runtime_ocaml_Runtime[60],60,0,0); - return caml_call2(Runtime_ocaml_Runtime[95],_bM8_,_bM7_)} - function _bM3_(param) - {var - _bM4_=caml_call1(Runtime_ocaml_Runtime[46],cst_1952), - _bM5_= - caml_call1(Runtime_ocaml_Runtime[74],date_naissance_assure), - _bM6_=caml_call2(Runtime_ocaml_Runtime[86],_bM5_,_bM4_); - return caml_call2(Runtime_ocaml_Runtime[29],_nb_,_bM6_)} - return caml_call4(Runtime_ocaml_Runtime[63],_nc_,[0],_bM3_,_bM2_)}, - _bMG_= - function(param) - {function _bMT_(param) - {var - _bM0_=caml_call3(Runtime_ocaml_Runtime[60],0,4,0), - _bM1_=caml_call3(Runtime_ocaml_Runtime[60],60,0,0); - return caml_call2(Runtime_ocaml_Runtime[95],_bM1_,_bM0_)} - function _bMU_(param) - {var - _bMV_=caml_call3(Runtime_ocaml_Runtime[57],1951,12,31), - _bMW_= - caml_call2 - (Runtime_ocaml_Runtime[119],date_naissance_assure,_bMV_), - _bMX_=caml_call3(Runtime_ocaml_Runtime[57],1951,7,1), - _bMY_= - caml_call2 - (Runtime_ocaml_Runtime[129],date_naissance_assure,_bMX_), - _bMZ_=caml_call2(Runtime_ocaml_Runtime[83],_bMY_,_bMW_); - return caml_call2(Runtime_ocaml_Runtime[29],_nd_,_bMZ_)} - return caml_call4(Runtime_ocaml_Runtime[63],_ne_,[0],_bMU_,_bMT_)}, - _bMH_= - function(param) - {function _bMP_(param) - {return caml_call3(Runtime_ocaml_Runtime[60],60,0,0)} - function _bMQ_(param) - {var - _bMR_=caml_call3(Runtime_ocaml_Runtime[57],1951,7,1), - _bMS_= - caml_call2 - (Runtime_ocaml_Runtime[114],date_naissance_assure,_bMR_); - return caml_call2(Runtime_ocaml_Runtime[29],_nf_,_bMS_)} - return caml_call4(Runtime_ocaml_Runtime[63],_ng_,[0],_bMQ_,_bMP_)}, - _bMI_= - [0, - function(param) - {function _bML_(param) - {return caml_call3(Runtime_ocaml_Runtime[60],62,0,0)} - function _bMM_(param) - {var - _bMN_=caml_call3(Runtime_ocaml_Runtime[57],1955,1,1), - _bMO_= - caml_call2 - (Runtime_ocaml_Runtime[129],date_naissance_assure,_bMN_); - return caml_call2(Runtime_ocaml_Runtime[29],_nh_,_bMO_)} - return caml_call4(Runtime_ocaml_Runtime[63],_ni_,[0],_bMM_,_bML_)}, - _bMH_, - _bMG_, - _bMF_, - _bME_, - _bMD_], - _bMJ_=caml_call4(Runtime_ocaml_Runtime[63],_nj_,_bMI_,_bMC_,_bMB_)} - catch(_bMK_) - {_bMK_ = caml_wrap_exception(_bMK_); - if(_bMK_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_m8_]; - throw _bMK_} - var - age_ouverture_droit= - caml_call3 - (Runtime_ocaml_Runtime[28],_nk_,Runtime_ocaml_Runtime[17],_bMJ_); - return [0,age_ouverture_droit]} - function impaye_depense_logement(impaye_depense_logement_in) - {var - mode_occupation=impaye_depense_logement_in[1], - aide_versee=impaye_depense_logement_in[2], - montant_apl=impaye_depense_logement_in[3], - montant_charges=impaye_depense_logement_in[4], - depense_logement=impaye_depense_logement_in[5], - montant_dette=impaye_depense_logement_in[6]; - try - {var - _bLj_= - function(param) - {switch(mode_occupation[0]) - {case 0:return _nm_; - case 1:return _nn_; - case 2:return _no_; - case 3:return _np_; - default:return _nq_}}, - _bLk_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_nr_,1)}, - _bLl_=caml_call4(Runtime_ocaml_Runtime[63],_ns_,[0],_bLk_,_bLj_)} - catch(_bMA_) - {_bMA_ = caml_wrap_exception(_bMA_); - if(_bMA_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_nl_]; - throw _bMA_} - var - mode_occupation_impaye= - caml_call3 - (Runtime_ocaml_Runtime[28],_nt_,embed_mode_occupation_impaye,_bLl_); - try - {var - _bLm_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bLn_=function(param){return 0}, - _bLo_= - [0, - function(param) - {function _bMt_(param){return depense_logement} - function _bMu_(param) - {var _bMz_=0 === mode_occupation_impaye[0]?1:0; - return caml_call2(Runtime_ocaml_Runtime[29],_nv_,_bMz_)} - var - _bMv_= - [0, - function(param) - {function _bMw_(param){return depense_logement} - function _bMx_(param) - {var _bMy_=0 === mode_occupation_impaye[0]?0:1; - return caml_call2(Runtime_ocaml_Runtime[29],_nw_,_bMy_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_nx_,[0],_bMx_,_bMw_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_ny_,_bMv_,_bMu_,_bMt_)}], - _bLp_=caml_call4(Runtime_ocaml_Runtime[63],_nz_,_bLo_,_bLn_,_bLm_)} - catch(_bMs_) - {_bMs_ = caml_wrap_exception(_bMs_); - if(_bMs_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_nu_]; - throw _bMs_} - var - depense_logement_brute= - caml_call3 - (Runtime_ocaml_Runtime[28],_nA_,embed_depense_logement,_bLp_); - try - {var - _bLq_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bLr_=function(param){return 0}, - _bLs_= - function(param) - {function _bMn_(param) - {switch(depense_logement[0]) - {case 0: - var - total_echeances=depense_logement[1], - _bMq_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$13), - _bMr_= - caml_call2(Runtime_ocaml_Runtime[104],montant_apl,_bMq_); - return [0, - caml_call2(Runtime_ocaml_Runtime[98],total_echeances,_bMr_)]; - case 1: - var mensualite=depense_logement[1]; - return [1, - caml_call2(Runtime_ocaml_Runtime[98],mensualite,montant_apl)]; - default:var loyer=depense_logement[1];return [2,loyer]}} - function _bMo_(param) - {var _bMp_=0 === mode_occupation_impaye[0]?0:1; - return caml_call2(Runtime_ocaml_Runtime[29],_nC_,_bMp_)} - return caml_call4(Runtime_ocaml_Runtime[63],_nD_,[0],_bMo_,_bMn_)}, - _bLt_= - [0, - function(param) - {function _bMk_(param) - {switch(depense_logement_brute[0]) - {case 0:var total=depense_logement_brute[1];return [0,total]; - case 1: - var mensualite=depense_logement_brute[1]; - return [1,mensualite]; - default: - var montant_loyer=depense_logement_brute[1]; - return [2, - caml_call2 - (Runtime_ocaml_Runtime[98],montant_loyer,montant_apl)]}} - function _bMl_(param) - {var _bMm_=0 === mode_occupation_impaye[0]?1:0; - return caml_call2(Runtime_ocaml_Runtime[29],_nE_,_bMm_)} - return caml_call4(Runtime_ocaml_Runtime[63],_nF_,[0],_bMl_,_bMk_)}, - _bLs_], - _bLu_=caml_call4(Runtime_ocaml_Runtime[63],_nG_,_bLt_,_bLr_,_bLq_)} - catch(_bMj_) - {_bMj_ = caml_wrap_exception(_bMj_); - if(_bMj_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_nB_]; - throw _bMj_} - var - depense_logement_nette= - caml_call3 - (Runtime_ocaml_Runtime[28],_nH_,embed_depense_logement,_bLu_); - try - {var - _bLv_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bLw_=function(param){return 0}, - _bLx_= - function(param) - {function _bMa_(param) - {switch(depense_logement_nette[0]) - {case 0: - var - echeance_pret_nette=depense_logement_nette[1], - _bMf_=caml_call1(Runtime_ocaml_Runtime[39],cst_6), - _bMg_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$31), - _bMh_=caml_call2(Runtime_ocaml_Runtime[107],_bMg_,_bMf_); - return caml_call2 - (Runtime_ocaml_Runtime[104],echeance_pret_nette,_bMh_); - case 1: - var - mensualite_nette=depense_logement_nette[1], - _bMi_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$20); - return caml_call2 - (Runtime_ocaml_Runtime[104],mensualite_nette,_bMi_); - default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$77)}} - function _bMb_(param) - {switch(aide_versee[0]) - {case 0:var _bMc_=0;break; - case 1:var _bMc_=0;break; - default:var _bMc_=1} - var - _bMd_=0 === mode_occupation_impaye[0]?0:1, - _bMe_=caml_call2(Runtime_ocaml_Runtime[83],_bMd_,_bMc_); - return caml_call2(Runtime_ocaml_Runtime[29],_nJ_,_bMe_)} - return caml_call4(Runtime_ocaml_Runtime[63],_nK_,[0],_bMb_,_bMa_)}, - _bLy_= - function(param) - {function _bL3_(param) - {switch(depense_logement_brute[0]) - {case 0: - var - echeance_pret_brute=depense_logement_brute[1], - _bL8_=caml_call1(Runtime_ocaml_Runtime[39],cst_6$0), - _bL9_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$32), - _bL__=caml_call2(Runtime_ocaml_Runtime[107],_bL9_,_bL8_); - return caml_call2 - (Runtime_ocaml_Runtime[104],echeance_pret_brute,_bL__); - case 1: - var - mensualite_brute=depense_logement_brute[1], - _bL$_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$21); - return caml_call2 - (Runtime_ocaml_Runtime[104],mensualite_brute,_bL$_); - default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$78)}} - function _bL4_(param) - {switch(aide_versee[0]) - {case 0:var _bL5_=0;break; - case 1:var _bL5_=1;break; - default:var _bL5_=0} - var - _bL6_=0 === mode_occupation_impaye[0]?0:1, - _bL7_=caml_call2(Runtime_ocaml_Runtime[83],_bL6_,_bL5_); - return caml_call2(Runtime_ocaml_Runtime[29],_nL_,_bL7_)} - return caml_call4(Runtime_ocaml_Runtime[63],_nM_,[0],_bL4_,_bL3_)}, - _bLz_= - function(param) - {function _bLW_(param) - {switch(depense_logement_nette[0]) - {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$79); - case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$80); - default: - var - loyer_net=depense_logement_nette[1], - _bL1_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$22), - _bL2_= - caml_call2 - (Runtime_ocaml_Runtime[93],loyer_net,montant_charges); - return caml_call2(Runtime_ocaml_Runtime[104],_bL2_,_bL1_)}} - function _bLX_(param) - {switch(aide_versee[0]) - {case 0:var _bLY_=1;break; - case 1:var _bLY_=0;break; - default:var _bLY_=0} - var - _bLZ_=0 === mode_occupation_impaye[0]?1:0, - _bL0_=caml_call2(Runtime_ocaml_Runtime[83],_bLZ_,_bLY_); - return caml_call2(Runtime_ocaml_Runtime[29],_nN_,_bL0_)} - return caml_call4(Runtime_ocaml_Runtime[63],_nO_,[0],_bLX_,_bLW_)}, - _bLA_= - [0, - function(param) - {function _bLP_(param) - {switch(depense_logement_brute[0]) - {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$81); - case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$82); - default: - var - loyer_brut=depense_logement_brute[1], - _bLU_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$23), - _bLV_= - caml_call2 - (Runtime_ocaml_Runtime[93],loyer_brut,montant_charges); - return caml_call2(Runtime_ocaml_Runtime[104],_bLV_,_bLU_)}} - function _bLQ_(param) - {switch(aide_versee[0]) - {case 0:var _bLR_=0;break; - case 1:var _bLR_=1;break; - default:var _bLR_=0} - var - _bLS_=0 === mode_occupation_impaye[0]?1:0, - _bLT_=caml_call2(Runtime_ocaml_Runtime[83],_bLS_,_bLR_); - return caml_call2(Runtime_ocaml_Runtime[29],_nP_,_bLT_)} - return caml_call4(Runtime_ocaml_Runtime[63],_nQ_,[0],_bLQ_,_bLP_)}, - _bLz_, - _bLy_, - _bLx_], - _bLB_=caml_call4(Runtime_ocaml_Runtime[63],_nR_,_bLA_,_bLw_,_bLv_)} - catch(_bLO_) - {_bLO_ = caml_wrap_exception(_bLO_); - if(_bLO_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_nI_]; - throw _bLO_} - var - seuil_impaye_depense_de_logeme= - caml_call3 - (Runtime_ocaml_Runtime[28],_nS_,Runtime_ocaml_Runtime[13],_bLB_); - try - {var - _bLC_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bLD_=function(param){return 0}, - _bLE_= - [0, - function(param) - {function _bLH_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[127], - montant_dette, - seuil_impaye_depense_de_logeme) - ?montant_dette - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$83)} - function _bLI_(param) - {var _bLN_=0 === mode_occupation_impaye[0]?1:0; - return caml_call2(Runtime_ocaml_Runtime[29],_nU_,_bLN_)} - var - _bLJ_= - [0, - function(param) - {function _bLK_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[127], - montant_dette, - seuil_impaye_depense_de_logeme) - ?montant_dette - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$84)} - function _bLL_(param) - {var _bLM_=0 === mode_occupation_impaye[0]?0:1; - return caml_call2(Runtime_ocaml_Runtime[29],_nV_,_bLM_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_nW_,[0],_bLL_,_bLK_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_nX_,_bLJ_,_bLI_,_bLH_)}], - _bLF_=caml_call4(Runtime_ocaml_Runtime[63],_nY_,_bLE_,_bLD_,_bLC_)} - catch(_bLG_) - {_bLG_ = caml_wrap_exception(_bLG_); - if(_bLG_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_nT_]; - throw _bLG_} - var - montant_impaye= - caml_call3 - (Runtime_ocaml_Runtime[28],_nZ_,Runtime_ocaml_Runtime[13],_bLF_); - return [0,montant_impaye]} - function base_mensuelle_allocations_fam$5(base_mensuelle_allocations_fam) - {var date_courante=base_mensuelle_allocations_fam[1]; - try - {var - _bKL_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bKM_=function(param){return 0}, - _bKN_= - function(param) - {function _bLc_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_42228$0)} - function _bLd_(param) - {var - _bLe_=caml_call3(Runtime_ocaml_Runtime[57],2023,4,1), - _bLf_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bLe_), - _bLg_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,1), - _bLh_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bLg_), - _bLi_=caml_call2(Runtime_ocaml_Runtime[83],_bLh_,_bLf_); - return caml_call2(Runtime_ocaml_Runtime[29],_n1_,_bLi_)} - return caml_call4(Runtime_ocaml_Runtime[63],_n2_,[0],_bLd_,_bLc_)}, - _bKO_= - function(param) - {function _bK7_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_41481$0)} - function _bK8_(param) - {var - _bK9_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,1), - _bK__= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bK9_), - _bK$_=caml_call3(Runtime_ocaml_Runtime[57],2021,4,1), - _bLa_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bK$_), - _bLb_=caml_call2(Runtime_ocaml_Runtime[83],_bLa_,_bK__); - return caml_call2(Runtime_ocaml_Runtime[29],_n3_,_bLb_)} - return caml_call4(Runtime_ocaml_Runtime[63],_n4_,[0],_bK8_,_bK7_)}, - _bKP_= - function(param) - {function _bK0_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_41440$0)} - function _bK1_(param) - {var - _bK2_=caml_call3(Runtime_ocaml_Runtime[57],2021,4,1), - _bK3_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bK2_), - _bK4_=caml_call3(Runtime_ocaml_Runtime[57],2020,4,1), - _bK5_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bK4_), - _bK6_=caml_call2(Runtime_ocaml_Runtime[83],_bK5_,_bK3_); - return caml_call2(Runtime_ocaml_Runtime[29],_n5_,_bK6_)} - return caml_call4(Runtime_ocaml_Runtime[63],_n6_,[0],_bK1_,_bK0_)}, - _bKQ_= - [0, - function(param) - {function _bKT_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_41316$0)} - function _bKU_(param) - {var - _bKV_=caml_call3(Runtime_ocaml_Runtime[57],2020,4,1), - _bKW_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bKV_), - _bKX_=caml_call3(Runtime_ocaml_Runtime[57],2019,4,1), - _bKY_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bKX_), - _bKZ_=caml_call2(Runtime_ocaml_Runtime[83],_bKY_,_bKW_); - return caml_call2(Runtime_ocaml_Runtime[29],_n7_,_bKZ_)} - return caml_call4(Runtime_ocaml_Runtime[63],_n8_,[0],_bKU_,_bKT_)}, - _bKP_, - _bKO_, - _bKN_], - _bKR_=caml_call4(Runtime_ocaml_Runtime[63],_n9_,_bKQ_,_bKM_,_bKL_)} - catch(_bKS_) - {_bKS_ = caml_wrap_exception(_bKS_); - if(_bKS_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_n0_]; - throw _bKS_} - var - montant= - caml_call3 - (Runtime_ocaml_Runtime[28],_n__,Runtime_ocaml_Runtime[13],_bKR_); - return [0,montant]} - function smic$1(smic_in) - {var date_courante=smic_in[1],residence=smic_in[2]; - try - {var - _bGZ_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bG0_=function(param){return 0}, - _bG1_= - function(param) - {function _bKC_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_851$0)} - function _bKD_(param) - {var - _bKE_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oa_), - _bKF_=caml_call3(Runtime_ocaml_Runtime[57],2023,12,31), - _bKG_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bKF_), - _bKH_=caml_call2(Runtime_ocaml_Runtime[83],_bKG_,_bKE_), - _bKI_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), - _bKJ_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bKI_), - _bKK_=caml_call2(Runtime_ocaml_Runtime[83],_bKJ_,_bKH_); - return caml_call2(Runtime_ocaml_Runtime[29],_ob_,_bKK_)} - return caml_call4(Runtime_ocaml_Runtime[63],_oc_,[0],_bKD_,_bKC_)}, - _bG2_= - function(param) - {function _bKf_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1127$0)} - function _bKg_(param) - {var - _bKh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_od_), - _bKi_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oe_), - _bKj_=caml_call2(Runtime_ocaml_Runtime[84],_bKi_,_bKh_), - _bKk_=caml_call2(Runtime_ocaml_Runtime[86],residence,_of_), - _bKl_=caml_call2(Runtime_ocaml_Runtime[84],_bKk_,_bKj_), - _bKm_=caml_call2(Runtime_ocaml_Runtime[86],residence,_og_), - _bKn_=caml_call2(Runtime_ocaml_Runtime[84],_bKm_,_bKl_), - _bKo_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oh_), - _bKp_=caml_call2(Runtime_ocaml_Runtime[84],_bKo_,_bKn_), - _bKq_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oi_), - _bKr_=caml_call2(Runtime_ocaml_Runtime[84],_bKq_,_bKp_), - _bKs_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oj_), - _bKt_=caml_call2(Runtime_ocaml_Runtime[84],_bKs_,_bKr_), - _bKu_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ok_), - _bKv_=caml_call2(Runtime_ocaml_Runtime[84],_bKu_,_bKt_), - _bKw_=caml_call3(Runtime_ocaml_Runtime[57],2023,12,31), - _bKx_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bKw_), - _bKy_=caml_call2(Runtime_ocaml_Runtime[83],_bKx_,_bKv_), - _bKz_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), - _bKA_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bKz_), - _bKB_=caml_call2(Runtime_ocaml_Runtime[83],_bKA_,_bKy_); - return caml_call2(Runtime_ocaml_Runtime[29],_ol_,_bKB_)} - return caml_call4(Runtime_ocaml_Runtime[63],_om_,[0],_bKg_,_bKf_)}, - _bG3_= - function(param) - {function _bJ8_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_835$0)} - function _bJ9_(param) - {var - _bJ__=caml_call2(Runtime_ocaml_Runtime[86],residence,_on_), - _bJ$_=caml_call3(Runtime_ocaml_Runtime[57],2022,12,31), - _bKa_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bJ$_), - _bKb_=caml_call2(Runtime_ocaml_Runtime[83],_bKa_,_bJ__), - _bKc_=caml_call3(Runtime_ocaml_Runtime[57],2022,8,1), - _bKd_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bKc_), - _bKe_=caml_call2(Runtime_ocaml_Runtime[83],_bKd_,_bKb_); - return caml_call2(Runtime_ocaml_Runtime[29],_oo_,_bKe_)} - return caml_call4(Runtime_ocaml_Runtime[63],_op_,[0],_bJ9_,_bJ8_)}, - _bG4_= - function(param) - {function _bJL_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1107$0)} - function _bJM_(param) - {var - _bJN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oq_), - _bJO_=caml_call2(Runtime_ocaml_Runtime[86],residence,_or_), - _bJP_=caml_call2(Runtime_ocaml_Runtime[84],_bJO_,_bJN_), - _bJQ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_os_), - _bJR_=caml_call2(Runtime_ocaml_Runtime[84],_bJQ_,_bJP_), - _bJS_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ot_), - _bJT_=caml_call2(Runtime_ocaml_Runtime[84],_bJS_,_bJR_), - _bJU_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ou_), - _bJV_=caml_call2(Runtime_ocaml_Runtime[84],_bJU_,_bJT_), - _bJW_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ov_), - _bJX_=caml_call2(Runtime_ocaml_Runtime[84],_bJW_,_bJV_), - _bJY_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ow_), - _bJZ_=caml_call2(Runtime_ocaml_Runtime[84],_bJY_,_bJX_), - _bJ0_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ox_), - _bJ1_=caml_call2(Runtime_ocaml_Runtime[84],_bJ0_,_bJZ_), - _bJ2_=caml_call3(Runtime_ocaml_Runtime[57],2022,12,31), - _bJ3_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bJ2_), - _bJ4_=caml_call2(Runtime_ocaml_Runtime[83],_bJ3_,_bJ1_), - _bJ5_=caml_call3(Runtime_ocaml_Runtime[57],2022,8,1), - _bJ6_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bJ5_), - _bJ7_=caml_call2(Runtime_ocaml_Runtime[83],_bJ6_,_bJ4_); - return caml_call2(Runtime_ocaml_Runtime[29],_oy_,_bJ7_)} - return caml_call4(Runtime_ocaml_Runtime[63],_oz_,[0],_bJM_,_bJL_)}, - _bG5_= - function(param) - {function _bJC_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_819$0)} - function _bJD_(param) - {var - _bJE_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oA_), - _bJF_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,31), - _bJG_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bJF_), - _bJH_=caml_call2(Runtime_ocaml_Runtime[83],_bJG_,_bJE_), - _bJI_=caml_call3(Runtime_ocaml_Runtime[57],2022,5,1), - _bJJ_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bJI_), - _bJK_=caml_call2(Runtime_ocaml_Runtime[83],_bJJ_,_bJH_); - return caml_call2(Runtime_ocaml_Runtime[29],_oB_,_bJK_)} - return caml_call4(Runtime_ocaml_Runtime[63],_oC_,[0],_bJD_,_bJC_)}, - _bG6_= - function(param) - {function _bJf_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1085$0)} - function _bJg_(param) - {var - _bJh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oD_), - _bJi_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oE_), - _bJj_=caml_call2(Runtime_ocaml_Runtime[84],_bJi_,_bJh_), - _bJk_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oF_), - _bJl_=caml_call2(Runtime_ocaml_Runtime[84],_bJk_,_bJj_), - _bJm_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oG_), - _bJn_=caml_call2(Runtime_ocaml_Runtime[84],_bJm_,_bJl_), - _bJo_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oH_), - _bJp_=caml_call2(Runtime_ocaml_Runtime[84],_bJo_,_bJn_), - _bJq_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oI_), - _bJr_=caml_call2(Runtime_ocaml_Runtime[84],_bJq_,_bJp_), - _bJs_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oJ_), - _bJt_=caml_call2(Runtime_ocaml_Runtime[84],_bJs_,_bJr_), - _bJu_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oK_), - _bJv_=caml_call2(Runtime_ocaml_Runtime[84],_bJu_,_bJt_), - _bJw_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,31), - _bJx_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bJw_), - _bJy_=caml_call2(Runtime_ocaml_Runtime[83],_bJx_,_bJv_), - _bJz_=caml_call3(Runtime_ocaml_Runtime[57],2022,5,1), - _bJA_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bJz_), - _bJB_=caml_call2(Runtime_ocaml_Runtime[83],_bJA_,_bJy_); - return caml_call2(Runtime_ocaml_Runtime[29],_oL_,_bJB_)} - return caml_call4(Runtime_ocaml_Runtime[63],_oM_,[0],_bJg_,_bJf_)}, - _bG7_= - function(param) - {function _bI8_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_798$0)} - function _bI9_(param) - {var - _bI__=caml_call2(Runtime_ocaml_Runtime[86],residence,_oN_), - _bI$_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,30), - _bJa_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bI$_), - _bJb_=caml_call2(Runtime_ocaml_Runtime[83],_bJa_,_bI__), - _bJc_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), - _bJd_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bJc_), - _bJe_=caml_call2(Runtime_ocaml_Runtime[83],_bJd_,_bJb_); - return caml_call2(Runtime_ocaml_Runtime[29],_oO_,_bJe_)} - return caml_call4(Runtime_ocaml_Runtime[63],_oP_,[0],_bI9_,_bI8_)}, - _bG8_= - function(param) - {function _bIL_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1057$0)} - function _bIM_(param) - {var - _bIN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oQ_), - _bIO_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oR_), - _bIP_=caml_call2(Runtime_ocaml_Runtime[84],_bIO_,_bIN_), - _bIQ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oS_), - _bIR_=caml_call2(Runtime_ocaml_Runtime[84],_bIQ_,_bIP_), - _bIS_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oT_), - _bIT_=caml_call2(Runtime_ocaml_Runtime[84],_bIS_,_bIR_), - _bIU_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oU_), - _bIV_=caml_call2(Runtime_ocaml_Runtime[84],_bIU_,_bIT_), - _bIW_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oV_), - _bIX_=caml_call2(Runtime_ocaml_Runtime[84],_bIW_,_bIV_), - _bIY_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oW_), - _bIZ_=caml_call2(Runtime_ocaml_Runtime[84],_bIY_,_bIX_), - _bI0_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oX_), - _bI1_=caml_call2(Runtime_ocaml_Runtime[84],_bI0_,_bIZ_), - _bI2_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,30), - _bI3_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bI2_), - _bI4_=caml_call2(Runtime_ocaml_Runtime[83],_bI3_,_bI1_), - _bI5_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), - _bI6_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bI5_), - _bI7_=caml_call2(Runtime_ocaml_Runtime[83],_bI6_,_bI4_); - return caml_call2(Runtime_ocaml_Runtime[29],_oY_,_bI7_)} - return caml_call4(Runtime_ocaml_Runtime[63],_oZ_,[0],_bIM_,_bIL_)}, - _bG9_= - function(param) - {function _bIC_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_774$0)} - function _bID_(param) - {var - _bIE_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o0_), - _bIF_=caml_call3(Runtime_ocaml_Runtime[57],2021,12,31), - _bIG_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bIF_), - _bIH_=caml_call2(Runtime_ocaml_Runtime[83],_bIG_,_bIE_), - _bII_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), - _bIJ_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bII_), - _bIK_=caml_call2(Runtime_ocaml_Runtime[83],_bIJ_,_bIH_); - return caml_call2(Runtime_ocaml_Runtime[29],_o1_,_bIK_)} - return caml_call4(Runtime_ocaml_Runtime[63],_o2_,[0],_bID_,_bIC_)}, - _bG__= - function(param) - {function _bIf_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1025$0)} - function _bIg_(param) - {var - _bIh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o3_), - _bIi_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o4_), - _bIj_=caml_call2(Runtime_ocaml_Runtime[84],_bIi_,_bIh_), - _bIk_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o5_), - _bIl_=caml_call2(Runtime_ocaml_Runtime[84],_bIk_,_bIj_), - _bIm_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o6_), - _bIn_=caml_call2(Runtime_ocaml_Runtime[84],_bIm_,_bIl_), - _bIo_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o7_), - _bIp_=caml_call2(Runtime_ocaml_Runtime[84],_bIo_,_bIn_), - _bIq_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o8_), - _bIr_=caml_call2(Runtime_ocaml_Runtime[84],_bIq_,_bIp_), - _bIs_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o9_), - _bIt_=caml_call2(Runtime_ocaml_Runtime[84],_bIs_,_bIr_), - _bIu_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o__), - _bIv_=caml_call2(Runtime_ocaml_Runtime[84],_bIu_,_bIt_), - _bIw_=caml_call3(Runtime_ocaml_Runtime[57],2021,12,31), - _bIx_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bIw_), - _bIy_=caml_call2(Runtime_ocaml_Runtime[83],_bIx_,_bIv_), - _bIz_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), - _bIA_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bIz_), - _bIB_=caml_call2(Runtime_ocaml_Runtime[83],_bIA_,_bIy_); - return caml_call2(Runtime_ocaml_Runtime[29],_o$_,_bIB_)} - return caml_call4(Runtime_ocaml_Runtime[63],_pa_,[0],_bIg_,_bIf_)}, - _bG$_= - function(param) - {function _bH8_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_766$0)} - function _bH9_(param) - {var - _bH__=caml_call2(Runtime_ocaml_Runtime[86],residence,_pb_), - _bH$_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), - _bIa_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bH$_), - _bIb_=caml_call2(Runtime_ocaml_Runtime[83],_bIa_,_bH__), - _bIc_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _bId_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bIc_), - _bIe_=caml_call2(Runtime_ocaml_Runtime[83],_bId_,_bIb_); - return caml_call2(Runtime_ocaml_Runtime[29],_pc_,_bIe_)} - return caml_call4(Runtime_ocaml_Runtime[63],_pd_,[0],_bH9_,_bH8_)}, - _bHa_= - function(param) - {function _bHL_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1015$0)} - function _bHM_(param) - {var - _bHN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pe_), - _bHO_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pf_), - _bHP_=caml_call2(Runtime_ocaml_Runtime[84],_bHO_,_bHN_), - _bHQ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pg_), - _bHR_=caml_call2(Runtime_ocaml_Runtime[84],_bHQ_,_bHP_), - _bHS_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ph_), - _bHT_=caml_call2(Runtime_ocaml_Runtime[84],_bHS_,_bHR_), - _bHU_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pi_), - _bHV_=caml_call2(Runtime_ocaml_Runtime[84],_bHU_,_bHT_), - _bHW_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pj_), - _bHX_=caml_call2(Runtime_ocaml_Runtime[84],_bHW_,_bHV_), - _bHY_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pk_), - _bHZ_=caml_call2(Runtime_ocaml_Runtime[84],_bHY_,_bHX_), - _bH0_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pl_), - _bH1_=caml_call2(Runtime_ocaml_Runtime[84],_bH0_,_bHZ_), - _bH2_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), - _bH3_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bH2_), - _bH4_=caml_call2(Runtime_ocaml_Runtime[83],_bH3_,_bH1_), - _bH5_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _bH6_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bH5_), - _bH7_=caml_call2(Runtime_ocaml_Runtime[83],_bH6_,_bH4_); - return caml_call2(Runtime_ocaml_Runtime[29],_pm_,_bH7_)} - return caml_call4(Runtime_ocaml_Runtime[63],_pn_,[0],_bHM_,_bHL_)}, - _bHb_= - function(param) - {function _bHC_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_757$0)} - function _bHD_(param) - {var - _bHE_=caml_call2(Runtime_ocaml_Runtime[86],residence,_po_), - _bHF_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), - _bHG_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bHF_), - _bHH_=caml_call2(Runtime_ocaml_Runtime[83],_bHG_,_bHE_), - _bHI_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), - _bHJ_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bHI_), - _bHK_=caml_call2(Runtime_ocaml_Runtime[83],_bHJ_,_bHH_); - return caml_call2(Runtime_ocaml_Runtime[29],_pp_,_bHK_)} - return caml_call4(Runtime_ocaml_Runtime[63],_pq_,[0],_bHD_,_bHC_)}, - _bHc_= - [0, - function(param) - {function _bHf_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1003$0)} - function _bHg_(param) - {var - _bHh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pr_), - _bHi_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ps_), - _bHj_=caml_call2(Runtime_ocaml_Runtime[84],_bHi_,_bHh_), - _bHk_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pt_), - _bHl_=caml_call2(Runtime_ocaml_Runtime[84],_bHk_,_bHj_), - _bHm_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pu_), - _bHn_=caml_call2(Runtime_ocaml_Runtime[84],_bHm_,_bHl_), - _bHo_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pv_), - _bHp_=caml_call2(Runtime_ocaml_Runtime[84],_bHo_,_bHn_), - _bHq_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pw_), - _bHr_=caml_call2(Runtime_ocaml_Runtime[84],_bHq_,_bHp_), - _bHs_=caml_call2(Runtime_ocaml_Runtime[86],residence,_px_), - _bHt_=caml_call2(Runtime_ocaml_Runtime[84],_bHs_,_bHr_), - _bHu_=caml_call2(Runtime_ocaml_Runtime[86],residence,_py_), - _bHv_=caml_call2(Runtime_ocaml_Runtime[84],_bHu_,_bHt_), - _bHw_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), - _bHx_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bHw_), - _bHy_=caml_call2(Runtime_ocaml_Runtime[83],_bHx_,_bHv_), - _bHz_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), - _bHA_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bHz_), - _bHB_=caml_call2(Runtime_ocaml_Runtime[83],_bHA_,_bHy_); - return caml_call2(Runtime_ocaml_Runtime[29],_pz_,_bHB_)} - return caml_call4(Runtime_ocaml_Runtime[63],_pA_,[0],_bHg_,_bHf_)}, - _bHb_, - _bHa_, - _bG$_, - _bG__, - _bG9_, - _bG8_, - _bG7_, - _bG6_, - _bG5_, - _bG4_, - _bG3_, - _bG2_, - _bG1_], - _bHd_=caml_call4(Runtime_ocaml_Runtime[63],_pB_,_bHc_,_bG0_,_bGZ_)} - catch(_bHe_) - {_bHe_ = caml_wrap_exception(_bHe_); - if(_bHe_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_n$_]; - throw _bHe_} - var - brut_horaire= - caml_call3 - (Runtime_ocaml_Runtime[28],_pC_,Runtime_ocaml_Runtime[13],_bHd_); - return [0,brut_horaire]} - function calcul_aide_personnalisee_loge(calcul_aide_personnalisee_loge) - {var - loyer_principal_base=calcul_aide_personnalisee_loge[1], - ressources_menage_arrondies=calcul_aide_personnalisee_loge[2], - beneficiaire_aide_adulte_ou_en=calcul_aide_personnalisee_loge[3], - date_courante=calcul_aide_personnalisee_loge[4], - nombre_personnes_a_charge=calcul_aide_personnalisee_loge[5], - situation_familiale_calcul_apl=calcul_aide_personnalisee_loge[6], - zone=calcul_aide_personnalisee_loge[7], - logement_est_chambre=calcul_aide_personnalisee_loge[8], - agees_ou_handicap_adultes_hebe=calcul_aide_personnalisee_loge[9], - type_aide=calcul_aide_personnalisee_loge[10], - colocation=calcul_aide_personnalisee_loge[11], - reduction_loyer_solidarite=calcul_aide_personnalisee_loge[12], - logement_meuble_d842_2=calcul_aide_personnalisee_loge[13]; - try - {var - _brE_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_98)}, - _brF_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_pE_,1)}, - _brG_=caml_call4(Runtime_ocaml_Runtime[63],_pF_,[0],_brF_,_brE_)} - catch(_bGY_) - {_bGY_ = caml_wrap_exception(_bGY_); - if(_bGY_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_pD_]; - throw _bGY_} - var - fraction_l832_3= - caml_call3 - (Runtime_ocaml_Runtime[28],_pG_,Runtime_ocaml_Runtime[15],_brG_); - try - {var - _brH_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_500)}, - _brI_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_pI_,1)}, - _brJ_=caml_call4(Runtime_ocaml_Runtime[63],_pJ_,[0],_brI_,_brH_)} - catch(_bGX_) - {_bGX_ = caml_wrap_exception(_bGX_); - if(_bGX_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_pH_]; - throw _bGX_} - var - montant_forfaitaire_d823_16= - caml_call3 - (Runtime_ocaml_Runtime[28],_pK_,Runtime_ocaml_Runtime[13],_brJ_); - try - {var - _brK_=function(param){return date_courante}, - _brL_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_pM_,1)}, - _brM_=caml_call4(Runtime_ocaml_Runtime[63],_pN_,[0],_brL_,_brK_), - contributions_sociales_dot_dat= - caml_call3 - (Runtime_ocaml_Runtime[28],_pO_,Runtime_ocaml_Runtime[16],_brM_)} - catch(_bGW_) - {_bGW_ = caml_wrap_exception(_bGW_); - if(_bGW_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_pL_]; - throw _bGW_} - var - _brN_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_pP_,contributions_sociales_aides_p), - [0,contributions_sociales_dot_dat]), - result=caml_call2(Runtime_ocaml_Runtime[27],_pQ_,_brN_), - contributions_sociales_dot_mon=result[1]; - try - {var - _brO_=function(param){throw Runtime_ocaml_Runtime[2]}, - _brP_=function(param){return 0}, - _brQ_= - [0, - function(param) - {function _bF1_(param) - {var _bGJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$85); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGJ_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0283) - :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0315); - var _bGK_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$33); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGK_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_027); - var _bGL_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$24); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGL_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0238); - var _bGM_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$9); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGM_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0201); - var _bGN_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$5); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGN_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0185); - var _bGO_=caml_call1(Runtime_ocaml_Runtime[46],cst_5); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGO_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0179); - var _bGP_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$1); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGP_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173); - var - _bGQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$2), - _bGR_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bGQ_), - _bGS_=caml_call1(Runtime_ocaml_Runtime[69],_bGR_), - _bGT_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0006), - _bGU_=caml_call2(Runtime_ocaml_Runtime[103],_bGT_,_bGS_), - _bGV_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$0); - return caml_call2(Runtime_ocaml_Runtime[97],_bGV_,_bGU_)} - function _bF2_(param) - {var - _bGH_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bGI_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bGH_); - return caml_call2(Runtime_ocaml_Runtime[29],_pS_,_bGI_)} - var - _bF3_= - [0, - function(param) - {function _bF4_(param) - {var _bGu_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$86); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGu_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0283$0) - :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0315$0); - var _bGv_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$34); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGv_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_027$0); - var _bGw_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$25); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGw_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0238$0); - var _bGx_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$10); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGx_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0201$0); - var _bGy_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$6); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGy_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0185$0); - var _bGz_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$0); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGz_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0179$0); - var _bGA_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$3); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGA_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$1); - var - _bGB_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$4), - _bGC_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bGB_), - _bGD_=caml_call1(Runtime_ocaml_Runtime[69],_bGC_), - _bGE_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0006$0), - _bGF_=caml_call2(Runtime_ocaml_Runtime[103],_bGE_,_bGD_), - _bGG_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$2); - return caml_call2(Runtime_ocaml_Runtime[97],_bGG_,_bGF_)} - function _bF5_(param) - {var - _bGp_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bGq_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bGp_), - _bGr_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bGs_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bGr_), - _bGt_=caml_call2(Runtime_ocaml_Runtime[83],_bGs_,_bGq_); - return caml_call2(Runtime_ocaml_Runtime[29],_pT_,_bGt_)} - var - _bF6_= - [0, - function(param) - {function _bF7_(param) - {var _bGc_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$87); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGc_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0283$1) - :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0315$1); - var _bGd_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$35); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGd_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_027$1); - var _bGe_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$26); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGe_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0238$1); - var _bGf_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$11); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGf_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0201$1); - var _bGg_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$7); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGg_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0185$1); - var _bGh_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$1); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGh_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0179$1); - var _bGi_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$5); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGi_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$3); - var - _bGj_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$6), - _bGk_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bGj_), - _bGl_=caml_call1(Runtime_ocaml_Runtime[69],_bGk_), - _bGm_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0006$1), - _bGn_=caml_call2(Runtime_ocaml_Runtime[103],_bGm_,_bGl_), - _bGo_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$4); - return caml_call2(Runtime_ocaml_Runtime[97],_bGo_,_bGn_)} - function _bF8_(param) - {var - _bF9_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bF__= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bF9_), - _bF$_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bGa_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bF$_), - _bGb_=caml_call2(Runtime_ocaml_Runtime[83],_bGa_,_bF__); - return caml_call2(Runtime_ocaml_Runtime[29],_pU_,_bGb_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_pV_,[0],_bF8_,_bF7_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_pW_,_bF6_,_bF5_,_bF4_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_pX_,_bF3_,_bF2_,_bF1_)}], - _brR_=caml_call4(Runtime_ocaml_Runtime[63],_pY_,_brQ_,_brP_,_brO_)} - catch(_bF0_) - {_bF0_ = caml_wrap_exception(_bF0_); - if(_bF0_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_pR_]; - throw _bF0_} - var - taux_composition_familiale= - caml_call3 - (Runtime_ocaml_Runtime[28],_pZ_,Runtime_ocaml_Runtime[15],_brR_); - try - {var - _brS_=function(param){throw Runtime_ocaml_Runtime[2]}, - _brT_=function(param){return 0}, - _brU_= - function(param) - {function _bFG_(param) - {var _bFN_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$88); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFN_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_458800) - :caml_call1(Runtime_ocaml_Runtime[31],cst_657200); - var _bFO_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$36); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFO_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_783900); - var _bFP_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$27); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFP_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_801500); - var _bFQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$12); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFQ_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_832200); - var _bFR_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$8); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFR_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_863100); - var _bFS_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$2); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFS_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_893800); - var _bFT_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$7); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFT_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_924600); - var - _bFU_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$8), - _bFV_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bFU_), - _bFW_=caml_call1(Runtime_ocaml_Runtime[69],_bFV_), - _bFX_=caml_call1(Runtime_ocaml_Runtime[31],cst_30500), - _bFY_=caml_call2(Runtime_ocaml_Runtime[104],_bFX_,_bFW_), - _bFZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_924600$0); - return caml_call2(Runtime_ocaml_Runtime[93],_bFZ_,_bFY_)} - function _bFH_(param) - {var - _bFI_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _bFJ_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bFI_), - _bFK_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), - _bFL_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bFK_), - _bFM_=caml_call2(Runtime_ocaml_Runtime[83],_bFL_,_bFJ_); - return caml_call2(Runtime_ocaml_Runtime[29],_p1_,_bFM_)} - return caml_call4(Runtime_ocaml_Runtime[63],_p2_,[0],_bFH_,_bFG_)}, - _brV_= - function(param) - {function _bFm_(param) - {var _bFt_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$89); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFt_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_468300) - :caml_call1(Runtime_ocaml_Runtime[31],cst_670900); - var _bFu_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$37); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFu_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_800200); - var _bFv_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$28); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFv_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_819200); - var _bFw_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$13); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFw_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_849500); - var _bFx_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$9); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFx_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_881100); - var _bFy_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$3); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFy_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_912400); - var _bFz_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$9); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFz_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_943900); - var - _bFA_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$10), - _bFB_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bFA_), - _bFC_=caml_call1(Runtime_ocaml_Runtime[69],_bFB_), - _bFD_=caml_call1(Runtime_ocaml_Runtime[31],cst_31100), - _bFE_=caml_call2(Runtime_ocaml_Runtime[104],_bFD_,_bFC_), - _bFF_=caml_call1(Runtime_ocaml_Runtime[31],cst_943900$0); - return caml_call2(Runtime_ocaml_Runtime[93],_bFF_,_bFE_)} - function _bFn_(param) - {var - _bFo_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bFp_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bFo_), - _bFq_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), - _bFr_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bFq_), - _bFs_=caml_call2(Runtime_ocaml_Runtime[83],_bFr_,_bFp_); - return caml_call2(Runtime_ocaml_Runtime[29],_p3_,_bFs_)} - return caml_call4(Runtime_ocaml_Runtime[63],_p4_,[0],_bFn_,_bFm_)}, - _brW_= - function(param) - {function _bE4_(param) - {var _bE$_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$90); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bE$_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_487000) - :caml_call1(Runtime_ocaml_Runtime[31],cst_697700); - var _bFa_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$38); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFa_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_832200$0); - var _bFb_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$29); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFb_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_850900); - var _bFc_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$14); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFc_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_883400); - var _bFd_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$10); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFd_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_916300); - var _bFe_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$4); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFe_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_948800); - var _bFf_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$11); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFf_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_981600); - var - _bFg_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$12), - _bFh_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bFg_), - _bFi_=caml_call1(Runtime_ocaml_Runtime[69],_bFh_), - _bFj_=caml_call1(Runtime_ocaml_Runtime[31],cst_32300), - _bFk_=caml_call2(Runtime_ocaml_Runtime[104],_bFj_,_bFi_), - _bFl_=caml_call1(Runtime_ocaml_Runtime[31],cst_981600$0); - return caml_call2(Runtime_ocaml_Runtime[93],_bFl_,_bFk_)} - function _bE5_(param) - {var - _bE6_=caml_call3(Runtime_ocaml_Runtime[57],2022,12,31), - _bE7_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_bE6_), - _bE8_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bE9_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bE8_), - _bE__=caml_call2(Runtime_ocaml_Runtime[83],_bE9_,_bE7_); - return caml_call2(Runtime_ocaml_Runtime[29],_p5_,_bE__)} - return caml_call4(Runtime_ocaml_Runtime[63],_p6_,[0],_bE5_,_bE4_)}, - _brX_= - [0, - function(param) - {function _bEN_(param) - {var _bER_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$91); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bER_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_494900) - :caml_call1(Runtime_ocaml_Runtime[31],cst_709000); - var _bES_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$39); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bES_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_845600); - var _bET_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$30); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bET_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_864600); - var _bEU_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$15); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEU_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_897700); - var _bEV_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$11); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEV_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_931100); - var _bEW_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$5); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEW_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_964200); - var _bEX_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$13); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEX_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_997500); - var - _bEY_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$14), - _bEZ_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bEY_), - _bE0_=caml_call1(Runtime_ocaml_Runtime[69],_bEZ_), - _bE1_=caml_call1(Runtime_ocaml_Runtime[31],cst_32800), - _bE2_=caml_call2(Runtime_ocaml_Runtime[104],_bE1_,_bE0_), - _bE3_=caml_call1(Runtime_ocaml_Runtime[31],cst_997500$0); - return caml_call2(Runtime_ocaml_Runtime[93],_bE3_,_bE2_)} - function _bEO_(param) - {var - _bEP_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), - _bEQ_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bEP_); - return caml_call2(Runtime_ocaml_Runtime[29],_p7_,_bEQ_)} - return caml_call4(Runtime_ocaml_Runtime[63],_p8_,[0],_bEO_,_bEN_)}, - _brW_, - _brV_, - _brU_], - _brY_=caml_call4(Runtime_ocaml_Runtime[63],_p9_,_brX_,_brT_,_brS_)} - catch(_bEM_) - {_bEM_ = caml_wrap_exception(_bEM_); - if(_bEM_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_p0_]; - throw _bEM_} - var - abattement_forfaitaire_d823_17= - caml_call3 - (Runtime_ocaml_Runtime[28],_p__,Runtime_ocaml_Runtime[13],_brY_); - try - {var - _brZ_=function(param){throw Runtime_ocaml_Runtime[2]}, - _br0_=function(param){return 0}, - _br1_= - function(param) - {function _bEy_(param) - {var _bEF_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$92); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEF_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25869) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31664); - var - _bEG_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$40), - _bEH_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bEG_), - _bEI_=caml_call1(Runtime_ocaml_Runtime[69],_bEH_), - _bEJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_5186), - _bEK_=caml_call2(Runtime_ocaml_Runtime[104],_bEJ_,_bEI_), - _bEL_=caml_call1(Runtime_ocaml_Runtime[31],cst_35630); - return caml_call2(Runtime_ocaml_Runtime[93],_bEL_,_bEK_)} - function _bEz_(param) - {var - _bEA_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bEB_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bEA_), - _bEC_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bED_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bEC_), - _bEE_=caml_call2(Runtime_ocaml_Runtime[83],_bED_,_bEB_); - return caml_call2(Runtime_ocaml_Runtime[29],_qa_,_bEE_)} - return caml_call4(Runtime_ocaml_Runtime[63],_qb_,[0],_bEz_,_bEy_)}, - _br2_= - [0, - function(param) - {function _bD__(param) - {var _bEr_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$93); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEr_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25978) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31797); - var - _bEs_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$41), - _bEt_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bEs_), - _bEu_=caml_call1(Runtime_ocaml_Runtime[69],_bEt_), - _bEv_=caml_call1(Runtime_ocaml_Runtime[31],cst_5208), - _bEw_=caml_call2(Runtime_ocaml_Runtime[104],_bEv_,_bEu_), - _bEx_=caml_call1(Runtime_ocaml_Runtime[31],cst_35780); - return caml_call2(Runtime_ocaml_Runtime[93],_bEx_,_bEw_)} - function _bD$_(param) - {var - _bEp_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bEq_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bEp_); - return caml_call2(Runtime_ocaml_Runtime[29],_qc_,_bEq_)} - var - _bEa_= - [0, - function(param) - {function _bEb_(param) - {var _bEi_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$94); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEi_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25978$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31797$0); - var - _bEj_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$42), - _bEk_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bEj_), - _bEl_=caml_call1(Runtime_ocaml_Runtime[69],_bEk_), - _bEm_=caml_call1(Runtime_ocaml_Runtime[31],cst_5208$0), - _bEn_=caml_call2(Runtime_ocaml_Runtime[104],_bEm_,_bEl_), - _bEo_=caml_call1(Runtime_ocaml_Runtime[31],cst_35780$0); - return caml_call2(Runtime_ocaml_Runtime[93],_bEo_,_bEn_)} - function _bEc_(param) - {var - _bEd_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bEe_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bEd_), - _bEf_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bEg_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bEf_), - _bEh_=caml_call2(Runtime_ocaml_Runtime[83],_bEg_,_bEe_); - return caml_call2(Runtime_ocaml_Runtime[29],_qd_,_bEh_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_qe_,[0],_bEc_,_bEb_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_qf_,_bEa_,_bD$_,_bD__)}, - _br1_], - _br3_=caml_call4(Runtime_ocaml_Runtime[63],_qg_,_br2_,_br0_,_brZ_)} - catch(_bD9_) - {_bD9_ = caml_wrap_exception(_bD9_); - if(_bD9_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_p$_]; - throw _bD9_} - var - loyer_reference= - caml_call3 - (Runtime_ocaml_Runtime[28],_qh_,Runtime_ocaml_Runtime[13],_br3_); - try - {var - _br4_= - function(param) - {switch(type_aide[0]) - {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$95); - case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_1000); - default:return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$0)}}, - _br5_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_qj_,1)}, - _br6_=caml_call4(Runtime_ocaml_Runtime[63],_qk_,[0],_br5_,_br4_)} - catch(_bD8_) - {_bD8_ = caml_wrap_exception(_bD8_); - if(_bD8_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_qi_]; - throw _bD8_} - var - montant_minimal_aide_d823_16= - caml_call3 - (Runtime_ocaml_Runtime[28],_ql_,Runtime_ocaml_Runtime[13],_br6_); - try - {var - _br7_= - function(param) - {function _bBE_(param){throw Runtime_ocaml_Runtime[2]} - function _bBF_(param){return 0} - function _bBG_(param) - {function _bDG_(param) - {switch(zone[0]) - {case 0: - var - _bDQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$43), - _bDR_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bDQ_), - _bDS_=caml_call1(Runtime_ocaml_Runtime[69],_bDR_), - _bDT_=caml_call1(Runtime_ocaml_Runtime[31],cst_5870), - _bDU_=caml_call2(Runtime_ocaml_Runtime[104],_bDT_,_bDS_), - _bDV_=caml_call1(Runtime_ocaml_Runtime[31],cst_40460); - return caml_call2(Runtime_ocaml_Runtime[93],_bDV_,_bDU_); - case 1: - var - _bDW_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$44), - _bDX_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bDW_), - _bDY_=caml_call1(Runtime_ocaml_Runtime[69],_bDX_), - _bDZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_5186$0), - _bD0_=caml_call2(Runtime_ocaml_Runtime[104],_bDZ_,_bDY_), - _bD1_=caml_call1(Runtime_ocaml_Runtime[31],cst_35630$0); - return caml_call2(Runtime_ocaml_Runtime[93],_bD1_,_bD0_); - default: - var - _bD2_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$45), - _bD3_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bD2_), - _bD4_=caml_call1(Runtime_ocaml_Runtime[69],_bD3_), - _bD5_=caml_call1(Runtime_ocaml_Runtime[31],cst_4723), - _bD6_=caml_call2(Runtime_ocaml_Runtime[104],_bD5_,_bD4_), - _bD7_=caml_call1(Runtime_ocaml_Runtime[31],cst_32956); - return caml_call2(Runtime_ocaml_Runtime[93],_bD7_,_bD6_)}} - function _bDH_(param) - {var - _bDI_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$46), - _bDJ_= - caml_call2 - (Runtime_ocaml_Runtime[125],nombre_personnes_a_charge,_bDI_), - _bDK_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bDL_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bDK_), - _bDM_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bDN_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bDM_), - _bDO_=caml_call2(Runtime_ocaml_Runtime[83],_bDN_,_bDL_), - _bDP_=caml_call2(Runtime_ocaml_Runtime[83],_bDO_,_bDJ_); - return caml_call2(Runtime_ocaml_Runtime[29],_qn_,_bDP_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_qo_,[0],_bDH_,_bDG_)} - function _bBH_(param) - {function _bDu_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_35799); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_31664$0); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_29392)}} - function _bDv_(param) - {var - _bDw_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$96), - _bDx_= - caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bDw_), - _bDy_=0 === situation_familiale_calcul_apl[0]?0:1, - _bDz_=caml_call2(Runtime_ocaml_Runtime[83],_bDy_,_bDx_), - _bDA_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bDB_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bDA_), - _bDC_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bDD_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bDC_), - _bDE_=caml_call2(Runtime_ocaml_Runtime[83],_bDD_,_bDB_), - _bDF_=caml_call2(Runtime_ocaml_Runtime[83],_bDE_,_bDz_); - return caml_call2(Runtime_ocaml_Runtime[29],_qp_,_bDF_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_qq_,[0],_bDv_,_bDu_)} - function _bBI_(param) - {function _bDi_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_29682); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_25859); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_24246)}} - function _bDj_(param) - {var - _bDk_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$97), - _bDl_= - caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bDk_), - _bDm_=0 === situation_familiale_calcul_apl[0]?1:0, - _bDn_=caml_call2(Runtime_ocaml_Runtime[83],_bDm_,_bDl_), - _bDo_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bDp_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bDo_), - _bDq_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bDr_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bDq_), - _bDs_=caml_call2(Runtime_ocaml_Runtime[83],_bDr_,_bDp_), - _bDt_=caml_call2(Runtime_ocaml_Runtime[83],_bDs_,_bDn_); - return caml_call2(Runtime_ocaml_Runtime[29],_qr_,_bDt_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_qs_,[0],_bDj_,_bDi_)} - function _bBJ_(param) - {function _bCS_(param) - {switch(zone[0]) - {case 0: - var - _bC2_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$47), - _bC3_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bC2_), - _bC4_=caml_call1(Runtime_ocaml_Runtime[69],_bC3_), - _bC5_=caml_call1(Runtime_ocaml_Runtime[31],cst_5895), - _bC6_=caml_call2(Runtime_ocaml_Runtime[104],_bC5_,_bC4_), - _bC7_=caml_call1(Runtime_ocaml_Runtime[31],cst_40630); - return caml_call2(Runtime_ocaml_Runtime[93],_bC7_,_bC6_); - case 1: - var - _bC8_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$48), - _bC9_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bC8_), - _bC__=caml_call1(Runtime_ocaml_Runtime[69],_bC9_), - _bC$_=caml_call1(Runtime_ocaml_Runtime[31],cst_5208$1), - _bDa_=caml_call2(Runtime_ocaml_Runtime[104],_bC$_,_bC__), - _bDb_=caml_call1(Runtime_ocaml_Runtime[31],cst_35780$1); - return caml_call2(Runtime_ocaml_Runtime[93],_bDb_,_bDa_); - default: - var - _bDc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$49), - _bDd_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bDc_), - _bDe_=caml_call1(Runtime_ocaml_Runtime[69],_bDd_), - _bDf_=caml_call1(Runtime_ocaml_Runtime[31],cst_4743), - _bDg_=caml_call2(Runtime_ocaml_Runtime[104],_bDf_,_bDe_), - _bDh_=caml_call1(Runtime_ocaml_Runtime[31],cst_33094); - return caml_call2(Runtime_ocaml_Runtime[93],_bDh_,_bDg_)}} - function _bCT_(param) - {var - _bCU_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$50), - _bCV_= - caml_call2 - (Runtime_ocaml_Runtime[125],nombre_personnes_a_charge,_bCU_), - _bCW_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bCX_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bCW_), - _bCY_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bCZ_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bCY_), - _bC0_=caml_call2(Runtime_ocaml_Runtime[83],_bCZ_,_bCX_), - _bC1_=caml_call2(Runtime_ocaml_Runtime[83],_bC0_,_bCV_); - return caml_call2(Runtime_ocaml_Runtime[29],_qt_,_bC1_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_qu_,[0],_bCT_,_bCS_)} - function _bBK_(param) - {function _bCG_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_35949); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_31797$1); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_29515)}} - function _bCH_(param) - {var - _bCI_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$98), - _bCJ_= - caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bCI_), - _bCK_=0 === situation_familiale_calcul_apl[0]?0:1, - _bCL_=caml_call2(Runtime_ocaml_Runtime[83],_bCK_,_bCJ_), - _bCM_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bCN_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bCM_), - _bCO_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bCP_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bCO_), - _bCQ_=caml_call2(Runtime_ocaml_Runtime[83],_bCP_,_bCN_), - _bCR_=caml_call2(Runtime_ocaml_Runtime[83],_bCQ_,_bCL_); - return caml_call2(Runtime_ocaml_Runtime[29],_qv_,_bCR_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_qw_,[0],_bCH_,_bCG_)} - function _bBL_(param) - {function _bCu_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_29807); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_25978$1); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_24348)}} - function _bCv_(param) - {var - _bCw_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$99), - _bCx_= - caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bCw_), - _bCy_=0 === situation_familiale_calcul_apl[0]?1:0, - _bCz_=caml_call2(Runtime_ocaml_Runtime[83],_bCy_,_bCx_), - _bCA_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bCB_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bCA_), - _bCC_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bCD_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bCC_), - _bCE_=caml_call2(Runtime_ocaml_Runtime[83],_bCD_,_bCB_), - _bCF_=caml_call2(Runtime_ocaml_Runtime[83],_bCE_,_bCz_); - return caml_call2(Runtime_ocaml_Runtime[29],_qx_,_bCF_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_qy_,[0],_bCv_,_bCu_)} - function _bBM_(param) - {function _bB7_(param) - {switch(zone[0]) - {case 0: - var - _bCc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$51), - _bCd_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bCc_), - _bCe_=caml_call1(Runtime_ocaml_Runtime[69],_bCd_), - _bCf_=caml_call1(Runtime_ocaml_Runtime[31],cst_6101), - _bCg_=caml_call2(Runtime_ocaml_Runtime[104],_bCf_,_bCe_), - _bCh_=caml_call1(Runtime_ocaml_Runtime[31],cst_42052); - return caml_call2(Runtime_ocaml_Runtime[93],_bCh_,_bCg_); - case 1: - var - _bCi_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$52), - _bCj_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bCi_), - _bCk_=caml_call1(Runtime_ocaml_Runtime[69],_bCj_), - _bCl_=caml_call1(Runtime_ocaml_Runtime[31],cst_5390), - _bCm_=caml_call2(Runtime_ocaml_Runtime[104],_bCl_,_bCk_), - _bCn_=caml_call1(Runtime_ocaml_Runtime[31],cst_37032); - return caml_call2(Runtime_ocaml_Runtime[93],_bCn_,_bCm_); - default: - var - _bCo_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$53), - _bCp_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bCo_), - _bCq_=caml_call1(Runtime_ocaml_Runtime[69],_bCp_), - _bCr_=caml_call1(Runtime_ocaml_Runtime[31],cst_4909), - _bCs_=caml_call2(Runtime_ocaml_Runtime[104],_bCr_,_bCq_), - _bCt_=caml_call1(Runtime_ocaml_Runtime[31],cst_34252); - return caml_call2(Runtime_ocaml_Runtime[93],_bCt_,_bCs_)}} - function _bB8_(param) - {var - _bB9_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$54), - _bB__= - caml_call2 - (Runtime_ocaml_Runtime[125],nombre_personnes_a_charge,_bB9_), - _bB$_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bCa_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bB$_), - _bCb_=caml_call2(Runtime_ocaml_Runtime[83],_bCa_,_bB__); - return caml_call2(Runtime_ocaml_Runtime[29],_qz_,_bCb_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_qA_,[0],_bB8_,_bB7_)} - function _bBN_(param) - {function _bBY_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_37207); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_32910); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_30548)}} - function _bBZ_(param) - {var - _bB0_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$100), - _bB1_= - caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bB0_), - _bB2_=0 === situation_familiale_calcul_apl[0]?0:1, - _bB3_=caml_call2(Runtime_ocaml_Runtime[83],_bB2_,_bB1_), - _bB4_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bB5_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bB4_), - _bB6_=caml_call2(Runtime_ocaml_Runtime[83],_bB5_,_bB3_); - return caml_call2(Runtime_ocaml_Runtime[29],_qB_,_bB6_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_qC_,[0],_bBZ_,_bBY_)} - var - _bBO_= - [0, - function(param) - {function _bBP_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_30850); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_26887); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_25200)}} - function _bBQ_(param) - {var - _bBR_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$101), - _bBS_= - caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bBR_), - _bBT_=0 === situation_familiale_calcul_apl[0]?1:0, - _bBU_=caml_call2(Runtime_ocaml_Runtime[83],_bBT_,_bBS_), - _bBV_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bBW_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bBV_), - _bBX_=caml_call2(Runtime_ocaml_Runtime[83],_bBW_,_bBU_); - return caml_call2(Runtime_ocaml_Runtime[29],_qD_,_bBX_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_qE_,[0],_bBQ_,_bBP_)}, - _bBN_, - _bBM_, - _bBL_, - _bBK_, - _bBJ_, - _bBI_, - _bBH_, - _bBG_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_qF_,_bBO_,_bBF_,_bBE_)}, - _br8_=function(param){return 1}, - _br9_= - function(param) - {function _bAK_(param) - {function _bBe_(param){throw Runtime_ocaml_Runtime[2]} - function _bBf_(param){return 0} - function _bBg_(param) - {function _bBw_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_26714); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_23282); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_21821)}} - function _bBx_(param) - {var - _bBy_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bBz_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bBy_), - _bBA_= - caml_call2 - (Runtime_ocaml_Runtime[83],_bBz_,logement_est_chambre), - _bBB_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bBC_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bBB_), - _bBD_=caml_call2(Runtime_ocaml_Runtime[83],_bBC_,_bBA_); - return caml_call2(Runtime_ocaml_Runtime[29],_qG_,_bBD_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_qH_,[0],_bBx_,_bBw_)} - function _bBh_(param) - {function _bBo_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_26826); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_23380); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_21913)}} - function _bBp_(param) - {var - _bBq_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bBr_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bBq_), - _bBs_= - caml_call2 - (Runtime_ocaml_Runtime[83],_bBr_,logement_est_chambre), - _bBt_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bBu_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bBt_), - _bBv_=caml_call2(Runtime_ocaml_Runtime[83],_bBu_,_bBs_); - return caml_call2(Runtime_ocaml_Runtime[29],_qI_,_bBv_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_qJ_,[0],_bBp_,_bBo_)} - var - _bBi_= - [0, - function(param) - {function _bBj_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_27765); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_24198); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_22680)}} - function _bBk_(param) - {var - _bBl_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bBm_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bBl_), - _bBn_= - caml_call2 - (Runtime_ocaml_Runtime[83],_bBm_,logement_est_chambre); - return caml_call2(Runtime_ocaml_Runtime[29],_qK_,_bBn_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_qL_,[0],_bBk_,_bBj_)}, - _bBh_, - _bBg_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_qM_,_bBi_,_bBf_,_bBe_)} - function _bAL_(param){return 1} - var - _bAM_= - [0, - function(param) - {function _bAN_(param){throw Runtime_ocaml_Runtime[2]} - function _bAO_(param){return 0} - function _bAP_(param) - {function _bA7_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_22262); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_19402); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_18185)}} - function _bA8_(param) - {var - _bA9_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bA__= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bA9_), - _bA$_= - caml_call2 - (Runtime_ocaml_Runtime[83],_bA__,logement_est_chambre), - _bBa_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bBb_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bBa_), - _bBc_=caml_call2(Runtime_ocaml_Runtime[83],_bBb_,_bA$_), - _bBd_= - caml_call2 - (Runtime_ocaml_Runtime[83], - _bBc_, - agees_ou_handicap_adultes_hebe); - return caml_call2(Runtime_ocaml_Runtime[29],_qN_,_bBd_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_qO_,[0],_bA8_,_bA7_)} - function _bAQ_(param) - {function _bAY_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_22355); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_19484); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_18261)}} - function _bAZ_(param) - {var - _bA0_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bA1_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bA0_), - _bA2_= - caml_call2 - (Runtime_ocaml_Runtime[83],_bA1_,logement_est_chambre), - _bA3_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bA4_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bA3_), - _bA5_=caml_call2(Runtime_ocaml_Runtime[83],_bA4_,_bA2_), - _bA6_= - caml_call2 - (Runtime_ocaml_Runtime[83], - _bA5_, - agees_ou_handicap_adultes_hebe); - return caml_call2(Runtime_ocaml_Runtime[29],_qP_,_bA6_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_qQ_,[0],_bAZ_,_bAY_)} - var - _bAR_= - [0, - function(param) - {function _bAS_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_23138); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_20165); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_18900)}} - function _bAT_(param) - {var - _bAU_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bAV_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bAU_), - _bAW_= - caml_call2 - (Runtime_ocaml_Runtime[83],_bAV_,logement_est_chambre), - _bAX_= - caml_call2 - (Runtime_ocaml_Runtime[83], - _bAW_, - agees_ou_handicap_adultes_hebe); - return caml_call2(Runtime_ocaml_Runtime[29],_qR_,_bAX_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_qS_,[0],_bAT_,_bAS_)}, - _bAQ_, - _bAP_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_qT_,_bAR_,_bAO_,_bAN_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_qU_,_bAM_,_bAL_,_bAK_)}, - _br__= - [0, - function(param) - {function _bx9_(param){throw Runtime_ocaml_Runtime[2]} - function _bx__(param){return 0} - function _bx$_(param) - {function _bAh_(param) - {switch(zone[0]) - {case 0: - var - _bAs_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$55), - _bAt_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bAs_), - _bAu_=caml_call1(Runtime_ocaml_Runtime[69],_bAt_), - _bAv_=caml_call1(Runtime_ocaml_Runtime[31],cst_4403), - _bAw_=caml_call2(Runtime_ocaml_Runtime[104],_bAv_,_bAu_), - _bAx_=caml_call1(Runtime_ocaml_Runtime[31],cst_30345); - return caml_call2(Runtime_ocaml_Runtime[93],_bAx_,_bAw_); - case 1: - var - _bAy_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$56), - _bAz_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bAy_), - _bAA_=caml_call1(Runtime_ocaml_Runtime[69],_bAz_), - _bAB_=caml_call1(Runtime_ocaml_Runtime[31],cst_3890), - _bAC_=caml_call2(Runtime_ocaml_Runtime[104],_bAB_,_bAA_), - _bAD_=caml_call1(Runtime_ocaml_Runtime[31],cst_26723); - return caml_call2(Runtime_ocaml_Runtime[93],_bAD_,_bAC_); - default: - var - _bAE_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$57), - _bAF_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bAE_), - _bAG_=caml_call1(Runtime_ocaml_Runtime[69],_bAF_), - _bAH_=caml_call1(Runtime_ocaml_Runtime[31],cst_3542), - _bAI_=caml_call2(Runtime_ocaml_Runtime[104],_bAH_,_bAG_), - _bAJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_24717); - return caml_call2(Runtime_ocaml_Runtime[93],_bAJ_,_bAI_)}} - function _bAi_(param) - {var - _bAj_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$58), - _bAk_= - caml_call2 - (Runtime_ocaml_Runtime[125],nombre_personnes_a_charge,_bAj_), - _bAl_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bAm_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bAl_), - _bAn_=caml_call2(Runtime_ocaml_Runtime[83],_bAm_,colocation), - _bAo_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bAp_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bAo_), - _bAq_=caml_call2(Runtime_ocaml_Runtime[83],_bAp_,_bAn_), - _bAr_=caml_call2(Runtime_ocaml_Runtime[83],_bAq_,_bAk_); - return caml_call2(Runtime_ocaml_Runtime[29],_qV_,_bAr_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_qW_,[0],_bAi_,_bAh_)} - function _bya_(param) - {function _bz6_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_26849); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_23748); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_22044)}} - function _bz7_(param) - {var - _bz8_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$102), - _bz9_= - caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bz8_), - _bz__=0 === situation_familiale_calcul_apl[0]?0:1, - _bz$_=caml_call2(Runtime_ocaml_Runtime[83],_bz__,_bz9_), - _bAa_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bAb_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bAa_), - _bAc_=caml_call2(Runtime_ocaml_Runtime[83],_bAb_,colocation), - _bAd_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bAe_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bAd_), - _bAf_=caml_call2(Runtime_ocaml_Runtime[83],_bAe_,_bAc_), - _bAg_=caml_call2(Runtime_ocaml_Runtime[83],_bAf_,_bz$_); - return caml_call2(Runtime_ocaml_Runtime[29],_qX_,_bAg_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_qY_,[0],_bz7_,_bz6_)} - function _byb_(param) - {function _bzT_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_22262$0); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_19402$0); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_18185$0)}} - function _bzU_(param) - {var - _bzV_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$103), - _bzW_= - caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bzV_), - _bzX_=0 === situation_familiale_calcul_apl[0]?1:0, - _bzY_=caml_call2(Runtime_ocaml_Runtime[83],_bzX_,_bzW_), - _bzZ_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bz0_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bzZ_), - _bz1_=caml_call2(Runtime_ocaml_Runtime[83],_bz0_,colocation), - _bz2_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bz3_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bz2_), - _bz4_=caml_call2(Runtime_ocaml_Runtime[83],_bz3_,_bz1_), - _bz5_=caml_call2(Runtime_ocaml_Runtime[83],_bz4_,_bzY_); - return caml_call2(Runtime_ocaml_Runtime[29],_qZ_,_bz5_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_q0_,[0],_bzU_,_bzT_)} - function _byc_(param) - {function _bzq_(param) - {switch(zone[0]) - {case 0: - var - _bzB_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$59), - _bzC_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bzB_), - _bzD_=caml_call1(Runtime_ocaml_Runtime[69],_bzC_), - _bzE_=caml_call1(Runtime_ocaml_Runtime[31],cst_4421), - _bzF_=caml_call2(Runtime_ocaml_Runtime[104],_bzE_,_bzD_), - _bzG_=caml_call1(Runtime_ocaml_Runtime[31],cst_30473); - return caml_call2(Runtime_ocaml_Runtime[93],_bzG_,_bzF_); - case 1: - var - _bzH_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$60), - _bzI_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bzH_), - _bzJ_=caml_call1(Runtime_ocaml_Runtime[69],_bzI_), - _bzK_=caml_call1(Runtime_ocaml_Runtime[31],cst_3906), - _bzL_=caml_call2(Runtime_ocaml_Runtime[104],_bzK_,_bzJ_), - _bzM_=caml_call1(Runtime_ocaml_Runtime[31],cst_26835); - return caml_call2(Runtime_ocaml_Runtime[93],_bzM_,_bzL_); - default: - var - _bzN_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$61), - _bzO_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bzN_), - _bzP_=caml_call1(Runtime_ocaml_Runtime[69],_bzO_), - _bzQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3557), - _bzR_=caml_call2(Runtime_ocaml_Runtime[104],_bzQ_,_bzP_), - _bzS_=caml_call1(Runtime_ocaml_Runtime[31],cst_24821); - return caml_call2(Runtime_ocaml_Runtime[93],_bzS_,_bzR_)}} - function _bzr_(param) - {var - _bzs_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$62), - _bzt_= - caml_call2 - (Runtime_ocaml_Runtime[125],nombre_personnes_a_charge,_bzs_), - _bzu_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bzv_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bzu_), - _bzw_=caml_call2(Runtime_ocaml_Runtime[83],_bzv_,colocation), - _bzx_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bzy_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bzx_), - _bzz_=caml_call2(Runtime_ocaml_Runtime[83],_bzy_,_bzw_), - _bzA_=caml_call2(Runtime_ocaml_Runtime[83],_bzz_,_bzt_); - return caml_call2(Runtime_ocaml_Runtime[29],_q1_,_bzA_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_q2_,[0],_bzr_,_bzq_)} - function _byd_(param) - {function _bzd_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_26962); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_23848); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_22136)}} - function _bze_(param) - {var - _bzf_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$104), - _bzg_= - caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bzf_), - _bzh_=0 === situation_familiale_calcul_apl[0]?0:1, - _bzi_=caml_call2(Runtime_ocaml_Runtime[83],_bzh_,_bzg_), - _bzj_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bzk_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bzj_), - _bzl_=caml_call2(Runtime_ocaml_Runtime[83],_bzk_,colocation), - _bzm_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bzn_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bzm_), - _bzo_=caml_call2(Runtime_ocaml_Runtime[83],_bzn_,_bzl_), - _bzp_=caml_call2(Runtime_ocaml_Runtime[83],_bzo_,_bzi_); - return caml_call2(Runtime_ocaml_Runtime[29],_q3_,_bzp_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_q4_,[0],_bze_,_bzd_)} - function _bye_(param) - {function _by2_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_22355$0); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_19484$0); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_18261$0)}} - function _by3_(param) - {var - _by4_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$105), - _by5_= - caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_by4_), - _by6_=0 === situation_familiale_calcul_apl[0]?1:0, - _by7_=caml_call2(Runtime_ocaml_Runtime[83],_by6_,_by5_), - _by8_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _by9_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_by8_), - _by__=caml_call2(Runtime_ocaml_Runtime[83],_by9_,colocation), - _by$_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bza_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_by$_), - _bzb_=caml_call2(Runtime_ocaml_Runtime[83],_bza_,_by__), - _bzc_=caml_call2(Runtime_ocaml_Runtime[83],_bzb_,_by7_); - return caml_call2(Runtime_ocaml_Runtime[29],_q5_,_bzc_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_q6_,[0],_by3_,_by2_)} - function _byf_(param) - {function _byC_(param) - {switch(zone[0]) - {case 0: - var - _byK_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$63), - _byL_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_byK_), - _byM_=caml_call1(Runtime_ocaml_Runtime[69],_byL_), - _byN_=caml_call1(Runtime_ocaml_Runtime[31],cst_4576), - _byO_=caml_call2(Runtime_ocaml_Runtime[104],_byN_,_byM_), - _byP_=caml_call1(Runtime_ocaml_Runtime[31],cst_31539); - return caml_call2(Runtime_ocaml_Runtime[93],_byP_,_byO_); - case 1: - var - _byQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$64), - _byR_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_byQ_), - _byS_=caml_call1(Runtime_ocaml_Runtime[69],_byR_), - _byT_=caml_call1(Runtime_ocaml_Runtime[31],cst_4043), - _byU_=caml_call2(Runtime_ocaml_Runtime[104],_byT_,_byS_), - _byV_=caml_call1(Runtime_ocaml_Runtime[31],cst_27774); - return caml_call2(Runtime_ocaml_Runtime[93],_byV_,_byU_); - default: - var - _byW_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$65), - _byX_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_byW_), - _byY_=caml_call1(Runtime_ocaml_Runtime[69],_byX_), - _byZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3682), - _by0_=caml_call2(Runtime_ocaml_Runtime[104],_byZ_,_byY_), - _by1_=caml_call1(Runtime_ocaml_Runtime[31],cst_25689); - return caml_call2(Runtime_ocaml_Runtime[93],_by1_,_by0_)}} - function _byD_(param) - {var - _byE_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$66), - _byF_= - caml_call2 - (Runtime_ocaml_Runtime[125],nombre_personnes_a_charge,_byE_), - _byG_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _byH_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_byG_), - _byI_=caml_call2(Runtime_ocaml_Runtime[83],_byH_,colocation), - _byJ_=caml_call2(Runtime_ocaml_Runtime[83],_byI_,_byF_); - return caml_call2(Runtime_ocaml_Runtime[29],_q7_,_byJ_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_q8_,[0],_byD_,_byC_)} - function _byg_(param) - {function _bys_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_27905); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_24683); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_22911)}} - function _byt_(param) - {var - _byu_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$106), - _byv_= - caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_byu_), - _byw_=0 === situation_familiale_calcul_apl[0]?0:1, - _byx_=caml_call2(Runtime_ocaml_Runtime[83],_byw_,_byv_), - _byy_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _byz_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_byy_), - _byA_=caml_call2(Runtime_ocaml_Runtime[83],_byz_,colocation), - _byB_=caml_call2(Runtime_ocaml_Runtime[83],_byA_,_byx_); - return caml_call2(Runtime_ocaml_Runtime[29],_q9_,_byB_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_q__,[0],_byt_,_bys_)} - var - _byh_= - [0, - function(param) - {function _byi_(param) - {switch(zone[0]) - {case 0: - return caml_call1(Runtime_ocaml_Runtime[31],cst_23138$0); - case 1: - return caml_call1(Runtime_ocaml_Runtime[31],cst_20165$0); - default: - return caml_call1(Runtime_ocaml_Runtime[31],cst_18900$0)}} - function _byj_(param) - {var - _byk_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$107), - _byl_= - caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_byk_), - _bym_=0 === situation_familiale_calcul_apl[0]?1:0, - _byn_=caml_call2(Runtime_ocaml_Runtime[83],_bym_,_byl_), - _byo_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _byp_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_byo_), - _byq_=caml_call2(Runtime_ocaml_Runtime[83],_byp_,colocation), - _byr_=caml_call2(Runtime_ocaml_Runtime[83],_byq_,_byn_); - return caml_call2(Runtime_ocaml_Runtime[29],_q$_,_byr_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_ra_,[0],_byj_,_byi_)}, - _byg_, - _byf_, - _bye_, - _byd_, - _byc_, - _byb_, - _bya_, - _bx$_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_rb_,_byh_,_bx__,_bx9_)}, - _br9_], - _br$_=caml_call4(Runtime_ocaml_Runtime[63],_rc_,_br__,_br8_,_br7_)} - catch(_bx8_) - {_bx8_ = caml_wrap_exception(_bx8_); - if(_bx8_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_qm_]; - throw _bx8_} - var - plafond_loyer_d823_16_2= - caml_call3 - (Runtime_ocaml_Runtime[28],_rd_,Runtime_ocaml_Runtime[13],_br$_); - try - {var - _bsa_= - function(param) - {function _bxz_(param){throw Runtime_ocaml_Runtime[2]} - function _bxA_(param){return 0} - function _bxB_(param) - {function _bxX_(param) - {var - _bx4_= - caml_call1 - (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), - _bx5_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224), - _bx6_=caml_call2(Runtime_ocaml_Runtime[104],_bx5_,_bx4_), - _bx7_=caml_call1(Runtime_ocaml_Runtime[31],cst_5399); - return caml_call2(Runtime_ocaml_Runtime[93],_bx7_,_bx6_)} - function _bxY_(param) - {var - _bxZ_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bx0_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bxZ_), - _bx1_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bx2_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bx1_), - _bx3_=caml_call2(Runtime_ocaml_Runtime[83],_bx2_,_bx0_); - return caml_call2(Runtime_ocaml_Runtime[29],_rf_,_bx3_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_rg_,[0],_bxY_,_bxX_)} - function _bxC_(param) - {function _bxM_(param) - {var - _bxT_= - caml_call1 - (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), - _bxU_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229), - _bxV_=caml_call2(Runtime_ocaml_Runtime[104],_bxU_,_bxT_), - _bxW_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422); - return caml_call2(Runtime_ocaml_Runtime[93],_bxW_,_bxV_)} - function _bxN_(param) - {var - _bxO_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bxP_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bxO_), - _bxQ_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bxR_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bxQ_), - _bxS_=caml_call2(Runtime_ocaml_Runtime[83],_bxR_,_bxP_); - return caml_call2(Runtime_ocaml_Runtime[29],_rh_,_bxS_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_ri_,[0],_bxN_,_bxM_)} - var - _bxD_= - [0, - function(param) - {function _bxE_(param) - {var - _bxI_= - caml_call1 - (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), - _bxJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_1272), - _bxK_=caml_call2(Runtime_ocaml_Runtime[104],_bxJ_,_bxI_), - _bxL_=caml_call1(Runtime_ocaml_Runtime[31],cst_5612); - return caml_call2(Runtime_ocaml_Runtime[93],_bxL_,_bxK_)} - function _bxF_(param) - {var - _bxG_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bxH_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bxG_); - return caml_call2(Runtime_ocaml_Runtime[29],_rj_,_bxH_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_rk_,[0],_bxF_,_bxE_)}, - _bxC_, - _bxB_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_rl_,_bxD_,_bxA_,_bxz_)}, - _bsb_=function(param){return 1}, - _bsc_= - [0, - function(param) - {function _bwZ_(param){throw Runtime_ocaml_Runtime[2]} - function _bw0_(param){return 0} - function _bw1_(param) - {function _bxn_(param) - {var - _bxv_= - caml_call1 - (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), - _bxw_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224$0), - _bxx_=caml_call2(Runtime_ocaml_Runtime[104],_bxw_,_bxv_), - _bxy_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_2699) - :caml_call1(Runtime_ocaml_Runtime[31],cst_5399$0); - return caml_call2(Runtime_ocaml_Runtime[93],_bxy_,_bxx_)} - function _bxo_(param) - {var - _bxp_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bxq_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bxp_), - _bxr_=caml_call2(Runtime_ocaml_Runtime[83],_bxq_,colocation), - _bxs_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bxt_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bxs_), - _bxu_=caml_call2(Runtime_ocaml_Runtime[83],_bxt_,_bxr_); - return caml_call2(Runtime_ocaml_Runtime[29],_rm_,_bxu_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_rn_,[0],_bxo_,_bxn_)} - function _bw2_(param) - {function _bxb_(param) - {var - _bxj_= - caml_call1 - (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), - _bxk_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$0), - _bxl_=caml_call2(Runtime_ocaml_Runtime[104],_bxk_,_bxj_), - _bxm_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_2710) - :caml_call1(Runtime_ocaml_Runtime[31],cst_5422$0); - return caml_call2(Runtime_ocaml_Runtime[93],_bxm_,_bxl_)} - function _bxc_(param) - {var - _bxd_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bxe_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bxd_), - _bxf_=caml_call2(Runtime_ocaml_Runtime[83],_bxe_,colocation), - _bxg_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bxh_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bxg_), - _bxi_=caml_call2(Runtime_ocaml_Runtime[83],_bxh_,_bxf_); - return caml_call2(Runtime_ocaml_Runtime[29],_ro_,_bxi_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_rp_,[0],_bxc_,_bxb_)} - var - _bw3_= - [0, - function(param) - {function _bw4_(param) - {var - _bw9_= - caml_call1 - (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), - _bw__=caml_call1(Runtime_ocaml_Runtime[31],cst_1272$0), - _bw$_=caml_call2(Runtime_ocaml_Runtime[104],_bw__,_bw9_), - _bxa_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_2805) - :caml_call1(Runtime_ocaml_Runtime[31],cst_5612$0); - return caml_call2(Runtime_ocaml_Runtime[93],_bxa_,_bw$_)} - function _bw5_(param) - {var - _bw6_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bw7_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bw6_), - _bw8_=caml_call2(Runtime_ocaml_Runtime[83],_bw7_,colocation); - return caml_call2(Runtime_ocaml_Runtime[29],_rq_,_bw8_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_rr_,[0],_bw5_,_bw4_)}, - _bw2_, - _bw1_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_rs_,_bw3_,_bw0_,_bwZ_)}], - _bsd_=caml_call4(Runtime_ocaml_Runtime[63],_rt_,_bsc_,_bsb_,_bsa_)} - catch(_bwY_) - {_bwY_ = caml_wrap_exception(_bwY_); - if(_bwY_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_re_]; - throw _bwY_} - var - montant_forfaitaire_charges_d8= - caml_call3 - (Runtime_ocaml_Runtime[28],_ru_,Runtime_ocaml_Runtime[13],_bsd_); - try - {var - _bse_= - function(param) - {if(logement_meuble_d842_2) - {var - _bwV_=caml_call1(Runtime_ocaml_Runtime[39],cst_3$16), - _bwW_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$31), - _bwX_=caml_call2(Runtime_ocaml_Runtime[107],_bwW_,_bwV_); - return caml_call2 - (Runtime_ocaml_Runtime[104],loyer_principal_base,_bwX_)} - return loyer_principal_base}, - _bsf_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_rw_,1)}, - _bsg_=caml_call4(Runtime_ocaml_Runtime[63],_rx_,[0],_bsf_,_bse_)} - catch(_bwU_) - {_bwU_ = caml_wrap_exception(_bwU_); - if(_bwU_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_rv_]; - throw _bwU_} - var - loyer_principal_avec_reduction= - caml_call3 - (Runtime_ocaml_Runtime[28],_ry_,Runtime_ocaml_Runtime[13],_bsg_); - try - {var - _bsh_= - function(param) - {switch(zone[0]) - {case 0: - var _bwR_=caml_call1(Runtime_ocaml_Runtime[39],cst_4$12); - return caml_call2 - (Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bwR_); - case 1: - var _bwS_=caml_call1(Runtime_ocaml_Runtime[39],cst_3_1); - return caml_call2 - (Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bwS_); - default: - var _bwT_=caml_call1(Runtime_ocaml_Runtime[39],cst_3_1$0); - return caml_call2 - (Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bwT_)}}, - _bsi_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_rA_,1)}, - _bsj_=caml_call4(Runtime_ocaml_Runtime[63],_rB_,[0],_bsi_,_bsh_)} - catch(_bwQ_) - {_bwQ_ = caml_wrap_exception(_bwQ_); - if(_bwQ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_rz_]; - throw _bwQ_} - var - plafond_suppression_d823_16= - caml_call3 - (Runtime_ocaml_Runtime[28],_rC_,Runtime_ocaml_Runtime[13],_bsj_); - try - {var - _bsk_= - function(param) - {switch(zone[0]) - {case 0: - var _bwN_=caml_call1(Runtime_ocaml_Runtime[39],cst_3_4); - return caml_call2 - (Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bwN_); - case 1: - var _bwO_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$2); - return caml_call2 - (Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bwO_); - default: - var _bwP_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$3); - return caml_call2 - (Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bwP_)}}, - _bsl_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_rE_,1)}, - _bsm_=caml_call4(Runtime_ocaml_Runtime[63],_rF_,[0],_bsl_,_bsk_)} - catch(_bwM_) - {_bwM_ = caml_wrap_exception(_bwM_); - if(_bwM_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_rD_]; - throw _bwM_} - var - plafond_degressivite_d823_16= - caml_call3 - (Runtime_ocaml_Runtime[28],_rG_,Runtime_ocaml_Runtime[13],_bsm_); - try - {var - _bsn_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[122], - loyer_principal_avec_reduction, - plafond_loyer_d823_16_2) - ?plafond_loyer_d823_16_2 - :loyer_principal_avec_reduction}, - _bso_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_rI_,1)}, - _bsp_=caml_call4(Runtime_ocaml_Runtime[63],_rJ_,[0],_bso_,_bsn_)} - catch(_bwL_) - {_bwL_ = caml_wrap_exception(_bwL_); - if(_bwL_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_rH_]; - throw _bwL_} - var - loyer_eligible= - caml_call3 - (Runtime_ocaml_Runtime[28],_rK_,Runtime_ocaml_Runtime[13],_bsp_); - function _bsq_(param) - {try - {var - _bwA_= - function(param$0) - {if - (caml_call2 - (Runtime_ocaml_Runtime[122], - loyer_principal_avec_reduction, - plafond_suppression_d823_16)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$108); - if - (caml_call2 - (Runtime_ocaml_Runtime[122], - loyer_principal_avec_reduction, - plafond_degressivite_d823_16)) - {var - _bwH_= - caml_call2 - (Runtime_ocaml_Runtime[98], - plafond_suppression_d823_16, - plafond_degressivite_d823_16), - _bwI_= - caml_call2 - (Runtime_ocaml_Runtime[98], - loyer_principal_avec_reduction, - plafond_degressivite_d823_16), - _bwJ_=caml_call2(Runtime_ocaml_Runtime[108],_bwI_,_bwH_), - _bwK_=caml_call2(Runtime_ocaml_Runtime[104],param,_bwJ_); - return caml_call2(Runtime_ocaml_Runtime[98],param,_bwK_)} - return param}, - _bwB_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_rM_,1)}, - _bwC_= - [0, - function(param$0) - {function _bwF_(param$0){return param} - function _bwG_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29], - _rN_, - beneficiaire_aide_adulte_ou_en)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_rO_,[0],_bwG_,_bwF_)}], - _bwD_=caml_call4(Runtime_ocaml_Runtime[63],_rP_,_bwC_,_bwB_,_bwA_); - return _bwD_} - catch(_bwE_) - {_bwE_ = caml_wrap_exception(_bwE_); - if(_bwE_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_rL_]; - throw _bwE_}} - var - traitement_aide_finale_diminue= - caml_call3 - (Runtime_ocaml_Runtime[28],_rQ_,Runtime_ocaml_Runtime[10],_bsq_); - try - {var - _bsr_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bss_=function(param){return 0}, - _bst_= - function(param) - {function _bwn_(param) - {var - _bwu_=caml_call1(Runtime_ocaml_Runtime[31],cst_3524), - _bwv_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085), - _bww_= - caml_call2 - (Runtime_ocaml_Runtime[93], - loyer_eligible, - montant_forfaitaire_charges_d8), - _bwx_=caml_call2(Runtime_ocaml_Runtime[104],_bww_,_bwv_); - if(caml_call2(Runtime_ocaml_Runtime[127],_bwx_,_bwu_)) - {var - _bwy_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$0), - _bwz_= - caml_call2 - (Runtime_ocaml_Runtime[93], - loyer_eligible, - montant_forfaitaire_charges_d8); - return caml_call2(Runtime_ocaml_Runtime[104],_bwz_,_bwy_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_3524$0)} - function _bwo_(param) - {var - _bwp_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bwq_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bwp_), - _bwr_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bws_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bwr_), - _bwt_=caml_call2(Runtime_ocaml_Runtime[83],_bws_,_bwq_); - return caml_call2(Runtime_ocaml_Runtime[29],_rS_,_bwt_)} - return caml_call4(Runtime_ocaml_Runtime[63],_rT_,[0],_bwo_,_bwn_)}, - _bsu_= - function(param) - {function _bwa_(param) - {var - _bwh_=caml_call1(Runtime_ocaml_Runtime[31],cst_3539), - _bwi_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$1), - _bwj_= - caml_call2 - (Runtime_ocaml_Runtime[93], - loyer_eligible, - montant_forfaitaire_charges_d8), - _bwk_=caml_call2(Runtime_ocaml_Runtime[104],_bwj_,_bwi_); - if(caml_call2(Runtime_ocaml_Runtime[127],_bwk_,_bwh_)) - {var - _bwl_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$2), - _bwm_= - caml_call2 - (Runtime_ocaml_Runtime[93], - loyer_eligible, - montant_forfaitaire_charges_d8); - return caml_call2(Runtime_ocaml_Runtime[104],_bwm_,_bwl_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_3539$0)} - function _bwb_(param) - {var - _bwc_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bwd_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bwc_), - _bwe_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bwf_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bwe_), - _bwg_=caml_call2(Runtime_ocaml_Runtime[83],_bwf_,_bwd_); - return caml_call2(Runtime_ocaml_Runtime[29],_rU_,_bwg_)} - return caml_call4(Runtime_ocaml_Runtime[63],_rV_,[0],_bwb_,_bwa_)}, - _bsv_= - [0, - function(param) - {function _bv2_(param) - {var - _bv6_=caml_call1(Runtime_ocaml_Runtime[31],cst_3663), - _bv7_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$3), - _bv8_= - caml_call2 - (Runtime_ocaml_Runtime[93], - loyer_eligible, - montant_forfaitaire_charges_d8), - _bv9_=caml_call2(Runtime_ocaml_Runtime[104],_bv8_,_bv7_); - if(caml_call2(Runtime_ocaml_Runtime[127],_bv9_,_bv6_)) - {var - _bv__=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$4), - _bv$_= - caml_call2 - (Runtime_ocaml_Runtime[93], - loyer_eligible, - montant_forfaitaire_charges_d8); - return caml_call2(Runtime_ocaml_Runtime[104],_bv$_,_bv__)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_3663$0)} - function _bv3_(param) - {var - _bv4_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bv5_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bv4_); - return caml_call2(Runtime_ocaml_Runtime[29],_rW_,_bv5_)} - return caml_call4(Runtime_ocaml_Runtime[63],_rX_,[0],_bv3_,_bv2_)}, - _bsu_, - _bst_], - _bsw_=caml_call4(Runtime_ocaml_Runtime[63],_rY_,_bsv_,_bss_,_bsr_)} - catch(_bv1_) - {_bv1_ = caml_wrap_exception(_bv1_); - if(_bv1_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_rR_]; - throw _bv1_} - var - participation_minimale= - caml_call3 - (Runtime_ocaml_Runtime[28],_rZ_,Runtime_ocaml_Runtime[13],_bsw_); - try - {var - _bsx_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bsy_=function(param){return 0}, - _bsz_= - [0, - function(param) - {function _bvs_(param) - {var - _bvW_=caml_call1(Runtime_ocaml_Runtime[39],cst_100), - _bvX_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$0), - _bvY_= - caml_call2 - (Runtime_ocaml_Runtime[108],loyer_eligible,loyer_reference), - _bvZ_=caml_call2(Runtime_ocaml_Runtime[103],_bvY_,_bvX_), - _bv0_=caml_call1(Runtime_ocaml_Runtime[78],_bvZ_); - return caml_call2(Runtime_ocaml_Runtime[107],_bv0_,_bvW_)} - function _bvt_(param) - {var - _bvU_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bvV_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bvU_); - return caml_call2(Runtime_ocaml_Runtime[29],_r1_,_bvV_)} - var - _bvu_= - [0, - function(param) - {function _bvv_(param) - {var - _bvP_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$1), - _bvQ_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$2), - _bvR_= - caml_call2 - (Runtime_ocaml_Runtime[108],loyer_eligible,loyer_reference), - _bvS_=caml_call2(Runtime_ocaml_Runtime[103],_bvR_,_bvQ_), - _bvT_=caml_call1(Runtime_ocaml_Runtime[78],_bvS_); - return caml_call2(Runtime_ocaml_Runtime[107],_bvT_,_bvP_)} - function _bvw_(param) - {var - _bvK_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bvL_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bvK_), - _bvM_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bvN_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bvM_), - _bvO_=caml_call2(Runtime_ocaml_Runtime[83],_bvN_,_bvL_); - return caml_call2(Runtime_ocaml_Runtime[29],_r2_,_bvO_)} - var - _bvx_= - [0, - function(param) - {function _bvy_(param) - {var - _bvF_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$3), - _bvG_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$4), - _bvH_= - caml_call2 - (Runtime_ocaml_Runtime[108],loyer_eligible,loyer_reference), - _bvI_=caml_call2(Runtime_ocaml_Runtime[103],_bvH_,_bvG_), - _bvJ_=caml_call1(Runtime_ocaml_Runtime[78],_bvI_); - return caml_call2(Runtime_ocaml_Runtime[107],_bvJ_,_bvF_)} - function _bvz_(param) - {var - _bvA_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bvB_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bvA_), - _bvC_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bvD_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bvC_), - _bvE_=caml_call2(Runtime_ocaml_Runtime[83],_bvD_,_bvB_); - return caml_call2(Runtime_ocaml_Runtime[29],_r3_,_bvE_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_r4_,[0],_bvz_,_bvy_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_r5_,_bvx_,_bvw_,_bvv_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_r6_,_bvu_,_bvt_,_bvs_)}], - _bsA_=caml_call4(Runtime_ocaml_Runtime[63],_r7_,_bsz_,_bsy_,_bsx_)} - catch(_bvr_) - {_bvr_ = caml_wrap_exception(_bvr_); - if(_bvr_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_r0_]; - throw _bvr_} - var - rapport_loyers= - caml_call3 - (Runtime_ocaml_Runtime[28],_r8_,Runtime_ocaml_Runtime[15],_bsA_); - function _bsB_(param) - {try - {var - _bvi_= - function(param$0) - {var - _bvm_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _r__, - Runtime_ocaml_Runtime[13], - param), - _bvn_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _r$_, - traitement_aide_finale_diminue), - _bvm_), - _bvo_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _sa_, - Runtime_ocaml_Runtime[13], - _bvn_), - aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_sb_,_bvo_), - _bvp_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$109), - _bvq_= - caml_call2 - (Runtime_ocaml_Runtime[98], - aide_finale, - montant_forfaitaire_d823_16); - return caml_call2(Runtime_ocaml_Runtime[127],_bvq_,_bvp_) - ?caml_call2 - (Runtime_ocaml_Runtime[98], - aide_finale, - montant_forfaitaire_d823_16) - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$110)}, - _bvj_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_sc_,1)}, - _bvk_=caml_call4(Runtime_ocaml_Runtime[63],_sd_,[0],_bvj_,_bvi_); - return _bvk_} - catch(_bvl_) - {_bvl_ = caml_wrap_exception(_bvl_); - if(_bvl_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_r9_]; - throw _bvl_}} - var - traitement_aide_finale_minorat= - caml_call3 - (Runtime_ocaml_Runtime[28],_se_,Runtime_ocaml_Runtime[10],_bsB_); - try - {var - _bsC_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bsD_=function(param){return 0}, - _bsE_= - [0, - function(param) - {function _bue_(param) - {var _bu4_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45); - if(caml_call2(Runtime_ocaml_Runtime[111],rapport_loyers,_bu4_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$111); - var - _bu5_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75), - _bu6_= - caml_call2(Runtime_ocaml_Runtime[111],rapport_loyers,_bu5_), - _bu7_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$0), - _bu8_= - caml_call2(Runtime_ocaml_Runtime[126],rapport_loyers,_bu7_); - if(caml_call2(Runtime_ocaml_Runtime[83],_bu8_,_bu6_)) - {var - _bu9_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045), - _bu__= - caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_bu9_), - _bu$_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$0); - return caml_call2(Runtime_ocaml_Runtime[103],_bu$_,_bu__)} - var _bva_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$0); - if(caml_call2(Runtime_ocaml_Runtime[126],rapport_loyers,_bva_)) - {var - _bvb_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$1), - _bvc_= - caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_bvb_), - _bvd_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068), - _bve_=caml_call2(Runtime_ocaml_Runtime[103],_bvd_,_bvc_), - _bvf_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3), - _bvg_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$1), - _bvh_=caml_call2(Runtime_ocaml_Runtime[103],_bvg_,_bvf_); - return caml_call2(Runtime_ocaml_Runtime[92],_bvh_,_bve_)} - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$112)} - function _buf_(param) - {var - _bu2_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bu3_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bu2_); - return caml_call2(Runtime_ocaml_Runtime[29],_sg_,_bu3_)} - var - _bug_= - [0, - function(param) - {function _buh_(param) - {var _buM_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$1); - if - (caml_call2(Runtime_ocaml_Runtime[111],rapport_loyers,_buM_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$113); - var - _buN_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$2), - _buO_= - caml_call2(Runtime_ocaml_Runtime[111],rapport_loyers,_buN_), - _buP_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$2), - _buQ_= - caml_call2(Runtime_ocaml_Runtime[126],rapport_loyers,_buP_); - if(caml_call2(Runtime_ocaml_Runtime[83],_buQ_,_buO_)) - {var - _buR_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$2), - _buS_= - caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_buR_), - _buT_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$3); - return caml_call2(Runtime_ocaml_Runtime[103],_buT_,_buS_)} - var _buU_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$3); - if - (caml_call2(Runtime_ocaml_Runtime[126],rapport_loyers,_buU_)) - {var - _buV_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$4), - _buW_= - caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_buV_), - _buX_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068$0), - _buY_=caml_call2(Runtime_ocaml_Runtime[103],_buX_,_buW_), - _buZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3$0), - _bu0_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$4), - _bu1_=caml_call2(Runtime_ocaml_Runtime[103],_bu0_,_buZ_); - return caml_call2(Runtime_ocaml_Runtime[92],_bu1_,_buY_)} - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$114)} - function _bui_(param) - {var - _buH_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _buI_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_buH_), - _buJ_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _buK_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_buJ_), - _buL_=caml_call2(Runtime_ocaml_Runtime[83],_buK_,_buI_); - return caml_call2(Runtime_ocaml_Runtime[29],_sh_,_buL_)} - var - _buj_= - [0, - function(param) - {function _buk_(param) - {var _bur_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$3); - if - (caml_call2(Runtime_ocaml_Runtime[111],rapport_loyers,_bur_)) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$115); - var - _bus_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$5), - _but_= - caml_call2(Runtime_ocaml_Runtime[111],rapport_loyers,_bus_), - _buu_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$4), - _buv_= - caml_call2(Runtime_ocaml_Runtime[126],rapport_loyers,_buu_); - if(caml_call2(Runtime_ocaml_Runtime[83],_buv_,_but_)) - {var - _buw_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$5), - _bux_= - caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_buw_), - _buy_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$6); - return caml_call2(Runtime_ocaml_Runtime[103],_buy_,_bux_)} - var _buz_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$6); - if - (caml_call2(Runtime_ocaml_Runtime[126],rapport_loyers,_buz_)) - {var - _buA_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$7), - _buB_= - caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_buA_), - _buC_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068$1), - _buD_=caml_call2(Runtime_ocaml_Runtime[103],_buC_,_buB_), - _buE_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3$1), - _buF_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$7), - _buG_=caml_call2(Runtime_ocaml_Runtime[103],_buF_,_buE_); - return caml_call2(Runtime_ocaml_Runtime[92],_buG_,_buD_)} - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$116)} - function _bul_(param) - {var - _bum_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bun_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bum_), - _buo_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bup_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_buo_), - _buq_=caml_call2(Runtime_ocaml_Runtime[83],_bup_,_bun_); - return caml_call2(Runtime_ocaml_Runtime[29],_si_,_buq_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_sj_,[0],_bul_,_buk_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_sk_,_buj_,_bui_,_buh_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_sl_,_bug_,_buf_,_bue_)}], - _bsF_=caml_call4(Runtime_ocaml_Runtime[63],_sm_,_bsE_,_bsD_,_bsC_)} - catch(_bud_) - {_bud_ = caml_wrap_exception(_bud_); - if(_bud_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_sf_]; - throw _bud_} - var - taux_loyer_eligible_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_sn_,Runtime_ocaml_Runtime[15],_bsF_); - function _bsG_(param) - {try - {var - _bt0_= - function(param$0) - {var - _bt4_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _sp_, - Runtime_ocaml_Runtime[13], - param), - _bt5_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _sq_, - traitement_aide_finale_minorat), - _bt4_), - _bt6_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _sr_, - Runtime_ocaml_Runtime[13], - _bt5_), - aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_ss_,_bt6_), - _bt7_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _st_, - Runtime_ocaml_Runtime[13], - aide_finale), - _bt8_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _su_, - contributions_sociales_dot_mon), - _bt7_), - _bt9_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _sv_, - Runtime_ocaml_Runtime[13], - _bt8_), - crds=caml_call2(Runtime_ocaml_Runtime[27],_sw_,_bt9_), - _bt__=caml_call1(Runtime_ocaml_Runtime[31],cst_50), - _bt$_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale,crds), - _bua_=caml_call2(Runtime_ocaml_Runtime[98],_bt$_,_bt__), - aide_finale_moins_crds_arrondi= - caml_call1(Runtime_ocaml_Runtime[77],_bua_), - _bub_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$117), - _buc_= - caml_call2 - (Runtime_ocaml_Runtime[93], - aide_finale_moins_crds_arrondi, - crds); - return caml_call2(Runtime_ocaml_Runtime[127],_buc_,_bub_) - ?caml_call2 - (Runtime_ocaml_Runtime[93], - aide_finale_moins_crds_arrondi, - crds) - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$118)}, - _bt1_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_sx_,1)}, - _bt2_=caml_call4(Runtime_ocaml_Runtime[63],_sy_,[0],_bt1_,_bt0_); - return _bt2_} - catch(_bt3_) - {_bt3_ = caml_wrap_exception(_bt3_); - if(_bt3_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_so_]; - throw _bt3_}} - var - traitement_aide_finale_contrib= - caml_call3 - (Runtime_ocaml_Runtime[28],_sz_,Runtime_ocaml_Runtime[10],_bsG_); - try - {var - _bsH_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bsI_=function(param){return 0}, - _bsJ_= - [0, - function(param) - {function _btu_(param) - {var - _btW_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000), - _btX_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$0), - _btY_= - caml_call2 - (Runtime_ocaml_Runtime[103], - taux_loyer_eligible_formule, - _btX_), - _btZ_=caml_call1(Runtime_ocaml_Runtime[78],_btY_); - return caml_call2(Runtime_ocaml_Runtime[107],_btZ_,_btW_)} - function _btv_(param) - {var - _btU_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _btV_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_btU_); - return caml_call2(Runtime_ocaml_Runtime[29],_sB_,_btV_)} - var - _btw_= - [0, - function(param) - {function _btx_(param) - {var - _btQ_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$1), - _btR_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$2), - _btS_= - caml_call2 - (Runtime_ocaml_Runtime[103], - taux_loyer_eligible_formule, - _btR_), - _btT_=caml_call1(Runtime_ocaml_Runtime[78],_btS_); - return caml_call2(Runtime_ocaml_Runtime[107],_btT_,_btQ_)} - function _bty_(param) - {var - _btL_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _btM_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_btL_), - _btN_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _btO_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_btN_), - _btP_=caml_call2(Runtime_ocaml_Runtime[83],_btO_,_btM_); - return caml_call2(Runtime_ocaml_Runtime[29],_sC_,_btP_)} - var - _btz_= - [0, - function(param) - {function _btA_(param) - {var - _btH_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$3), - _btI_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$4), - _btJ_= - caml_call2 - (Runtime_ocaml_Runtime[103], - taux_loyer_eligible_formule, - _btI_), - _btK_=caml_call1(Runtime_ocaml_Runtime[78],_btJ_); - return caml_call2(Runtime_ocaml_Runtime[107],_btK_,_btH_)} - function _btB_(param) - {var - _btC_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _btD_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_btC_), - _btE_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _btF_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_btE_), - _btG_=caml_call2(Runtime_ocaml_Runtime[83],_btF_,_btD_); - return caml_call2(Runtime_ocaml_Runtime[29],_sD_,_btG_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_sE_,[0],_btB_,_btA_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_sF_,_btz_,_bty_,_btx_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_sG_,_btw_,_btv_,_btu_)}], - _bsK_=caml_call4(Runtime_ocaml_Runtime[63],_sH_,_bsJ_,_bsI_,_bsH_)} - catch(_btt_) - {_btt_ = caml_wrap_exception(_btt_); - if(_btt_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_sA_]; - throw _btt_} - var - taux_loyer_eligible_taux_arron= - caml_call3 - (Runtime_ocaml_Runtime[28],_sI_,Runtime_ocaml_Runtime[15],_bsK_); - function _bsL_(param) - {try - {var - _bti_= - function(param$0) - {var - _btm_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _sK_, - Runtime_ocaml_Runtime[13], - param), - _btn_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _sL_, - traitement_aide_finale_contrib), - _btm_), - _bto_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _sM_, - Runtime_ocaml_Runtime[13], - _btn_), - aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_sN_,_bto_), - _btp_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$119), - _btq_= - caml_call2 - (Runtime_ocaml_Runtime[104], - reduction_loyer_solidarite, - fraction_l832_3), - _btr_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale,_btq_); - if(caml_call2(Runtime_ocaml_Runtime[127],_btr_,_btp_)) - {var - _bts_= - caml_call2 - (Runtime_ocaml_Runtime[104], - reduction_loyer_solidarite, - fraction_l832_3); - return caml_call2(Runtime_ocaml_Runtime[98],aide_finale,_bts_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$120)}, - _btj_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_sO_,1)}, - _btk_=caml_call4(Runtime_ocaml_Runtime[63],_sP_,[0],_btj_,_bti_); - return _btk_} - catch(_btl_) - {_btl_ = caml_wrap_exception(_btl_); - if(_btl_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_sJ_]; - throw _btl_}} - var - traitement_aide_finale_reducti= - caml_call3 - (Runtime_ocaml_Runtime[28],_sQ_,Runtime_ocaml_Runtime[10],_bsL_); - try - {var - _bsM_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[92], - taux_composition_familiale, - taux_loyer_eligible_taux_arron)}, - _bsN_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_sS_,1)}, - _bsO_=caml_call4(Runtime_ocaml_Runtime[63],_sT_,[0],_bsN_,_bsM_)} - catch(_bth_) - {_bth_ = caml_wrap_exception(_bth_); - if(_bth_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_sR_]; - throw _bth_} - var - taux_prise_compte_ressources= - caml_call3 - (Runtime_ocaml_Runtime[28],_sU_,Runtime_ocaml_Runtime[15],_bsO_); - function _bsP_(param) - {try - {var - _bta_= - function(param$0) - {var - _bte_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _sW_, - Runtime_ocaml_Runtime[13], - param), - _btf_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _sX_, - traitement_aide_finale_reducti), - _bte_), - _btg_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _sY_, - Runtime_ocaml_Runtime[13], - _btf_), - aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_sZ_,_btg_); - return caml_call2 - (Runtime_ocaml_Runtime[112], - aide_finale, - montant_minimal_aide_d823_16) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$121) - :aide_finale}, - _btb_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_s0_,1)}, - _btc_=caml_call4(Runtime_ocaml_Runtime[63],_s1_,[0],_btb_,_bta_); - return _btc_} - catch(_btd_) - {_btd_ = caml_wrap_exception(_btd_); - if(_btd_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_sV_]; - throw _btd_}} - var - traitement_aide_finale_montant= - caml_call3 - (Runtime_ocaml_Runtime[28],_s2_,Runtime_ocaml_Runtime[10],_bsP_); - try - {var - _bsQ_= - function(param) - {var - _bs__= - caml_call2 - (Runtime_ocaml_Runtime[98], - ressources_menage_arrondies, - abattement_forfaitaire_d823_17), - participation_ressources= - caml_call2 - (Runtime_ocaml_Runtime[104],_bs__,taux_prise_compte_ressources), - _bs$_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$122), - participation_ressources$0= - caml_call2 - (Runtime_ocaml_Runtime[112],participation_ressources,_bs$_) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$123) - :participation_ressources; - return caml_call2 - (Runtime_ocaml_Runtime[93], - participation_minimale, - participation_ressources$0)}, - _bsR_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_s4_,1)}, - _bsS_=caml_call4(Runtime_ocaml_Runtime[63],_s5_,[0],_bsR_,_bsQ_)} - catch(_bs9_) - {_bs9_ = caml_wrap_exception(_bs9_); - if(_bs9_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_s3_]; - throw _bs9_} - var - participation_personnelle= - caml_call3 - (Runtime_ocaml_Runtime[28],_s6_,Runtime_ocaml_Runtime[13],_bsS_); - try - {var - _bsT_= - function(param) - {var - _bs7_= - caml_call2 - (Runtime_ocaml_Runtime[93], - loyer_eligible, - montant_forfaitaire_charges_d8), - aide_finale= - caml_call2 - (Runtime_ocaml_Runtime[98],_bs7_,participation_personnelle), - _bs8_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$124); - return caml_call2(Runtime_ocaml_Runtime[112],aide_finale,_bs8_) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$125) - :aide_finale}, - _bsU_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_s8_,1)}, - _bsV_=caml_call4(Runtime_ocaml_Runtime[63],_s9_,[0],_bsU_,_bsT_)} - catch(_bs6_) - {_bs6_ = caml_wrap_exception(_bs6_); - if(_bs6_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_s7_]; - throw _bs6_} - var - aide_finale_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_s__,Runtime_ocaml_Runtime[13],_bsV_); - try - {var - _bsW_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$4), - _bsX_= - caml_call2(Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bsW_), - _bsY_= - caml_call2 - (Runtime_ocaml_Runtime[127],plafond_degressivite_d823_16,_bsX_)} - catch(_bs5_) - {_bs5_ = caml_wrap_exception(_bs5_); - if(_bs5_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_s$_]; - throw _bs5_} - if(_bsY_) - {try - {var - _bsZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_98$0), - _bs0_=caml_call2(Runtime_ocaml_Runtime[116],fraction_l832_3,_bsZ_), - _bs1_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_9), - _bs2_=caml_call2(Runtime_ocaml_Runtime[126],fraction_l832_3,_bs1_), - _bs3_=caml_call2(Runtime_ocaml_Runtime[83],_bs2_,_bs0_)} - catch(_bs4_) - {_bs4_ = caml_wrap_exception(_bs4_); - if(_bs4_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ta_]; - throw _bs4_} - if(_bs3_) - return [0, - montant_forfaitaire_charges_d8, - plafond_loyer_d823_16_2, - participation_minimale, - taux_composition_familiale, - participation_personnelle, - aide_finale_formule, - traitement_aide_finale_montant]; - throw [0,Runtime_ocaml_Runtime[3],_tb_]} - throw [0,Runtime_ocaml_Runtime[3],_tc_]} - function calcul_aide_personnalisee_loge$0(calcul_aide_personnalisee_loge) - {var - type_logement_foyer=calcul_aide_personnalisee_loge[1], - date_conventionnement=calcul_aide_personnalisee_loge[2], - ressources_menage_arrondies=calcul_aide_personnalisee_loge[3], - nombre_personnes_a_charge=calcul_aide_personnalisee_loge[4], - situation_familiale_calcul_apl=calcul_aide_personnalisee_loge[5], - zone=calcul_aide_personnalisee_loge[6], - date_courante=calcul_aide_personnalisee_loge[7], - redevance=calcul_aide_personnalisee_loge[8], - condition_2_du_832_25=calcul_aide_personnalisee_loge[9], - n_nombre_parts_d832_25=calcul_aide_personnalisee_loge[10]; - try - {var - _bm2_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_121726)}, - _bm3_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_te_,1)}, - _bm4_=caml_call4(Runtime_ocaml_Runtime[63],_tf_,[0],_bm3_,_bm2_)} - catch(_brD_) - {_brD_ = caml_wrap_exception(_brD_); - if(_brD_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_td_]; - throw _brD_} - var - coefficient_r_d832_25= - caml_call3 - (Runtime_ocaml_Runtime[28],_tg_,Runtime_ocaml_Runtime[13],_bm4_); - try - {var - _bm5_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$0)}, - _bm6_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ti_,1)}, - _bm7_=caml_call4(Runtime_ocaml_Runtime[63],_tj_,[0],_bm6_,_bm5_)} - catch(_brC_) - {_brC_ = caml_wrap_exception(_brC_); - if(_brC_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_th_]; - throw _brC_} - var - montant_forfaitaire_d832_24= - caml_call3 - (Runtime_ocaml_Runtime[28],_tk_,Runtime_ocaml_Runtime[13],_bm7_); - try - {var - _bm8_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$1)}, - _bm9_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tm_,1)}, - _bm__=caml_call4(Runtime_ocaml_Runtime[63],_tn_,[0],_bm9_,_bm8_)} - catch(_brB_) - {_brB_ = caml_wrap_exception(_brB_); - if(_brB_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_tl_]; - throw _brB_} - var - montant_minimal_aide_d823_24= - caml_call3 - (Runtime_ocaml_Runtime[28],_to_,Runtime_ocaml_Runtime[13],_bm__); - try - {var - _bm$_= - function(param) - {function _brx_(param) - {switch(type_logement_foyer[0]) - {case 0:return 0; - case 1: - var _brz_=caml_call3(Runtime_ocaml_Runtime[57],1994,12,31); - return caml_call2 - (Runtime_ocaml_Runtime[129],date_conventionnement,_brz_); - case 2: - var _brA_=caml_call3(Runtime_ocaml_Runtime[57],1990,9,30); - return caml_call2 - (Runtime_ocaml_Runtime[129],date_conventionnement,_brA_); - default:return 0}} - function _bry_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_tq_,1)} - return caml_call4(Runtime_ocaml_Runtime[63],_tr_,[0],_bry_,_brx_)}, - _bna_=function(param){return 1}, - _bnb_=[0,function(param){return caml_call1(condition_2_du_832_25,0)}], - _bnc_=caml_call4(Runtime_ocaml_Runtime[63],_ts_,_bnb_,_bna_,_bm$_)} - catch(_brw_) - {_brw_ = caml_wrap_exception(_brw_); - if(_brw_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_tp_]; - throw _brw_} - var - condition_2_du_832_25$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_tt_,Runtime_ocaml_Runtime[12],_bnc_); - try - {var - _bnd_=function(param){return date_courante}, - _bne_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tv_,1)}, - _bnf_=caml_call4(Runtime_ocaml_Runtime[63],_tw_,[0],_bne_,_bnd_), - contributions_sociales_dot_dat= - caml_call3 - (Runtime_ocaml_Runtime[28],_tx_,Runtime_ocaml_Runtime[16],_bnf_)} - catch(_brv_) - {_brv_ = caml_wrap_exception(_brv_); - if(_brv_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_tu_]; - throw _brv_} - var - _bng_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_ty_,contributions_sociales_aides_p), - [0,contributions_sociales_dot_dat]), - result=caml_call2(Runtime_ocaml_Runtime[27],_tz_,_bng_), - contributions_sociales_dot_mon=result[1]; - try - {var - _bnh_=function(param){throw Runtime_ocaml_Runtime[2]}, - _bni_=function(param){return 0}, - _bnj_= - function(param) - {function _bqW_(param) - {switch(zone[0]) - {case 0: - var _bq3_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$126); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bq3_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_44443) - :caml_call1(Runtime_ocaml_Runtime[31],cst_52101); - var _bq4_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$67); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bq4_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_55555); - var _bq5_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$32); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bq5_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_59454); - var _bq6_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$17); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bq6_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_63369); - var - _bq7_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$13), - _bq8_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bq7_), - _bq9_=caml_call1(Runtime_ocaml_Runtime[69],_bq8_), - _bq__=caml_call1(Runtime_ocaml_Runtime[31],cst_7089), - _bq$_=caml_call2(Runtime_ocaml_Runtime[104],_bq__,_bq9_), - _bra_=caml_call1(Runtime_ocaml_Runtime[31],cst_68350); - return caml_call2(Runtime_ocaml_Runtime[93],_bra_,_bq$_); - case 1: - var _brb_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$127); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_brb_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_40643) - :caml_call1(Runtime_ocaml_Runtime[31],cst_47433); - var _brc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$68); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_brc_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_50575); - var _brd_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$33); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_brd_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_54138); - var _bre_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$18); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bre_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_57687); - var - _brf_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$14), - _brg_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_brf_), - _brh_=caml_call1(Runtime_ocaml_Runtime[69],_brg_), - _bri_=caml_call1(Runtime_ocaml_Runtime[31],cst_6407), - _brj_=caml_call2(Runtime_ocaml_Runtime[104],_bri_,_brh_), - _brk_=caml_call1(Runtime_ocaml_Runtime[31],cst_61469); - return caml_call2(Runtime_ocaml_Runtime[93],_brk_,_brj_); - default: - var _brl_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$128); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_brl_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_38578) - :caml_call1(Runtime_ocaml_Runtime[31],cst_44869); - var _brm_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$69); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_brm_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_47602); - var _brn_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$34); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_brn_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_50744); - var _bro_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$19); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bro_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_53884); - var - _brp_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$15), - _brq_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_brp_), - _brr_=caml_call1(Runtime_ocaml_Runtime[69],_brq_), - _brs_=caml_call1(Runtime_ocaml_Runtime[31],cst_5946), - _brt_=caml_call2(Runtime_ocaml_Runtime[104],_brs_,_brr_), - _bru_=caml_call1(Runtime_ocaml_Runtime[31],cst_57416); - return caml_call2(Runtime_ocaml_Runtime[93],_bru_,_brt_)}} - function _bqX_(param) - {var - _bqY_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bqZ_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bqY_), - _bq0_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bq1_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bq0_), - _bq2_=caml_call2(Runtime_ocaml_Runtime[83],_bq1_,_bqZ_); - return caml_call2(Runtime_ocaml_Runtime[29],_tB_,_bq2_)} - return caml_call4(Runtime_ocaml_Runtime[63],_tC_,[0],_bqX_,_bqW_)}, - _bnk_= - function(param) - {function _bql_(param) - {switch(zone[0]) - {case 0: - var _bqs_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$129); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqs_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_44630) - :caml_call1(Runtime_ocaml_Runtime[31],cst_52321); - var _bqt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$70); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqt_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_55788); - var _bqu_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$35); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqu_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_59704); - var _bqv_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$20); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqv_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_63635); - var - _bqw_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$16), - _bqx_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bqw_), - _bqy_=caml_call1(Runtime_ocaml_Runtime[69],_bqx_), - _bqz_=caml_call1(Runtime_ocaml_Runtime[31],cst_7119), - _bqA_=caml_call2(Runtime_ocaml_Runtime[104],_bqz_,_bqy_), - _bqB_=caml_call1(Runtime_ocaml_Runtime[31],cst_68637); - return caml_call2(Runtime_ocaml_Runtime[93],_bqB_,_bqA_); - case 1: - var _bqC_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$130); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqC_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_40814) - :caml_call1(Runtime_ocaml_Runtime[31],cst_47632); - var _bqD_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$71); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqD_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_50787); - var _bqE_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$36); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqE_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_54365); - var _bqF_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$21); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqF_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_57929); - var - _bqG_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$17), - _bqH_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bqG_), - _bqI_=caml_call1(Runtime_ocaml_Runtime[69],_bqH_), - _bqJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_6434), - _bqK_=caml_call2(Runtime_ocaml_Runtime[104],_bqJ_,_bqI_), - _bqL_=caml_call1(Runtime_ocaml_Runtime[31],cst_61727); - return caml_call2(Runtime_ocaml_Runtime[93],_bqL_,_bqK_); - default: - var _bqM_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$131); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqM_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_38740) - :caml_call1(Runtime_ocaml_Runtime[31],cst_45057); - var _bqN_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$72); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqN_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_47802); - var _bqO_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$37); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqO_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_50957); - var _bqP_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$22); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqP_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_54110); - var - _bqQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$18), - _bqR_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bqQ_), - _bqS_=caml_call1(Runtime_ocaml_Runtime[69],_bqR_), - _bqT_=caml_call1(Runtime_ocaml_Runtime[31],cst_5971), - _bqU_=caml_call2(Runtime_ocaml_Runtime[104],_bqT_,_bqS_), - _bqV_=caml_call1(Runtime_ocaml_Runtime[31],cst_57657); - return caml_call2(Runtime_ocaml_Runtime[93],_bqV_,_bqU_)}} - function _bqm_(param) - {var - _bqn_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bqo_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bqn_), - _bqp_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bqq_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bqp_), - _bqr_=caml_call2(Runtime_ocaml_Runtime[83],_bqq_,_bqo_); - return caml_call2(Runtime_ocaml_Runtime[29],_tD_,_bqr_)} - return caml_call4(Runtime_ocaml_Runtime[63],_tE_,[0],_bqm_,_bql_)}, - _bnl_= - [0, - function(param) - {function _bpP_(param) - {switch(zone[0]) - {case 0: - var _bpT_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$132); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bpT_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_46192) - :caml_call1(Runtime_ocaml_Runtime[31],cst_54152); - var _bpU_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$73); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bpU_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_57741); - var _bpV_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$38); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bpV_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_61794); - var _bpW_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$23); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bpW_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_65862); - var - _bpX_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$19), - _bpY_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bpX_), - _bpZ_=caml_call1(Runtime_ocaml_Runtime[69],_bpY_), - _bp0_=caml_call1(Runtime_ocaml_Runtime[31],cst_7368), - _bp1_=caml_call2(Runtime_ocaml_Runtime[104],_bp0_,_bpZ_), - _bp2_=caml_call1(Runtime_ocaml_Runtime[31],cst_71039); - return caml_call2(Runtime_ocaml_Runtime[93],_bp2_,_bp1_); - case 1: - var _bp3_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$133); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bp3_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_42242) - :caml_call1(Runtime_ocaml_Runtime[31],cst_49299); - var _bp4_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$74); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bp4_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_52565); - var _bp5_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$39); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bp5_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_56268); - var _bp6_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$24); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bp6_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_59957); - var - _bp7_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$20), - _bp8_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bp7_), - _bp9_=caml_call1(Runtime_ocaml_Runtime[69],_bp8_), - _bp__=caml_call1(Runtime_ocaml_Runtime[31],cst_6659), - _bp$_=caml_call2(Runtime_ocaml_Runtime[104],_bp__,_bp9_), - _bqa_=caml_call1(Runtime_ocaml_Runtime[31],cst_63887); - return caml_call2(Runtime_ocaml_Runtime[93],_bqa_,_bp$_); - default: - var _bqb_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$134); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqb_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_40096) - :caml_call1(Runtime_ocaml_Runtime[31],cst_46634); - var _bqc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$75); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqc_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_49475); - var _bqd_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$40); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqd_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_52740); - var _bqe_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$25); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqe_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_56004); - var - _bqf_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$21), - _bqg_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bqf_), - _bqh_=caml_call1(Runtime_ocaml_Runtime[69],_bqg_), - _bqi_=caml_call1(Runtime_ocaml_Runtime[31],cst_6180), - _bqj_=caml_call2(Runtime_ocaml_Runtime[104],_bqi_,_bqh_), - _bqk_=caml_call1(Runtime_ocaml_Runtime[31],cst_59675); - return caml_call2(Runtime_ocaml_Runtime[93],_bqk_,_bqj_)}} - function _bpQ_(param) - {var - _bpR_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bpS_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bpR_); - return caml_call2(Runtime_ocaml_Runtime[29],_tF_,_bpS_)} - return caml_call4(Runtime_ocaml_Runtime[63],_tG_,[0],_bpQ_,_bpP_)}, - _bnk_, - _bnj_], - _bnm_=caml_call4(Runtime_ocaml_Runtime[63],_tH_,_bnl_,_bni_,_bnh_)} - catch(_bpO_) - {_bpO_ = caml_wrap_exception(_bpO_); - if(_bpO_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_tA_]; - throw _bpO_} - var - plafond_equivalence_loyer_elig= - caml_call3 - (Runtime_ocaml_Runtime[28],_tI_,Runtime_ocaml_Runtime[13],_bnm_); - function _bnn_(param) - {try - {var - _bpI_= - function(param$0) - {var - _bpM_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$135), - _bpN_= - caml_call2 - (Runtime_ocaml_Runtime[98],param,montant_forfaitaire_d832_24); - return caml_call2(Runtime_ocaml_Runtime[127],_bpN_,_bpM_) - ?caml_call2 - (Runtime_ocaml_Runtime[98], - param, - montant_forfaitaire_d832_24) - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$136)}, - _bpJ_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_tK_,1)}, - _bpK_=caml_call4(Runtime_ocaml_Runtime[63],_tL_,[0],_bpJ_,_bpI_); - return _bpK_} - catch(_bpL_) - {_bpL_ = caml_wrap_exception(_bpL_); - if(_bpL_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_tJ_]; - throw _bpL_}} - var - traitement_aide_finale_minorat= - caml_call3 - (Runtime_ocaml_Runtime[28],_tM_,Runtime_ocaml_Runtime[10],_bnn_); - try - {var - _bno_=function(param){return condition_2_du_832_25$0}, - _bnp_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tO_,1)}, - _bnq_=caml_call4(Runtime_ocaml_Runtime[63],_tP_,[0],_bnp_,_bno_), - calcul_nombre_parts_dot_condit= - caml_call3 - (Runtime_ocaml_Runtime[28],_tQ_,Runtime_ocaml_Runtime[12],_bnq_)} - catch(_bpH_) - {_bpH_ = caml_wrap_exception(_bpH_); - if(_bpH_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_tN_]; - throw _bpH_} - try - {var - _bnr_=function(param){return nombre_personnes_a_charge}, - _bns_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tS_,1)}, - _bnt_=caml_call4(Runtime_ocaml_Runtime[63],_tT_,[0],_bns_,_bnr_), - calcul_nombre_parts_dot_nombre= - caml_call3 - (Runtime_ocaml_Runtime[28],_tU_,Runtime_ocaml_Runtime[14],_bnt_)} - catch(_bpG_) - {_bpG_ = caml_wrap_exception(_bpG_); - if(_bpG_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_tR_]; - throw _bpG_} - try - {var - _bnu_=function(param){return situation_familiale_calcul_apl}, - _bnv_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tW_,1)}, - _bnw_=caml_call4(Runtime_ocaml_Runtime[63],_tX_,[0],_bnv_,_bnu_), - calcul_nombre_parts_dot_situat= - caml_call3 - (Runtime_ocaml_Runtime[28], - _tY_, - embed_situation_familiale_calc, - _bnw_)} - catch(_bpF_) - {_bpF_ = caml_wrap_exception(_bpF_); - if(_bpF_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_tV_]; - throw _bpF_} - var - _bnx_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_tZ_,calcul_nombre_part_logement_fo), - [0, - calcul_nombre_parts_dot_condit, - calcul_nombre_parts_dot_nombre, - calcul_nombre_parts_dot_situat]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_t0_,_bnx_), - calcul_nombre_parts_dot_n_nomb=result$0[1]; - try - {var - _bny_= - function(param) - {return condition_2_du_832_25$0 - ?caml_call1(Runtime_ocaml_Runtime[31],cst_1500) - :caml_call1(Runtime_ocaml_Runtime[31],cst_2668)}, - _bnz_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_t2_,1)}, - _bnA_=caml_call4(Runtime_ocaml_Runtime[63],_t3_,[0],_bnz_,_bny_)} - catch(_bpE_) - {_bpE_ = caml_wrap_exception(_bpE_); - if(_bpE_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_t1_]; - throw _bpE_} - var - montant_forfaitaire_d832_27= - caml_call3 - (Runtime_ocaml_Runtime[28],_t4_,Runtime_ocaml_Runtime[13],_bnA_); - try - {var - _bnB_= - function(param) - {return condition_2_du_832_25$0 - ?caml_call1(Runtime_ocaml_Runtime[31],cst_2142091) - :caml_call1(Runtime_ocaml_Runtime[31],cst_1339340)}, - _bnC_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_t6_,1)}, - _bnD_=caml_call4(Runtime_ocaml_Runtime[63],_t7_,[0],_bnC_,_bnB_)} - catch(_bpD_) - {_bpD_ = caml_wrap_exception(_bpD_); - if(_bpD_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_t5_]; - throw _bpD_} - var - coefficient_multiplicateur_d83= - caml_call3 - (Runtime_ocaml_Runtime[28],_t8_,Runtime_ocaml_Runtime[13],_bnD_); - try - {var - _bnE_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[127], - redevance, - plafond_equivalence_loyer_elig) - ?plafond_equivalence_loyer_elig - :redevance}, - _bnF_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_t__,1)}, - _bnG_=caml_call4(Runtime_ocaml_Runtime[63],_t$_,[0],_bnF_,_bnE_)} - catch(_bpC_) - {_bpC_ = caml_wrap_exception(_bpC_); - if(_bpC_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_t9_]; - throw _bpC_} - var - equivalence_loyer_eligible= - caml_call3 - (Runtime_ocaml_Runtime[28],_ua_,Runtime_ocaml_Runtime[13],_bnG_); - try - {var - _bnH_= - function(param) - {function _bpA_(param){return calcul_nombre_parts_dot_n_nomb} - function _bpB_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_uc_,1)} - return caml_call4(Runtime_ocaml_Runtime[63],_ud_,[0],_bpB_,_bpA_)}, - _bnI_=function(param){return 1}, - _bnJ_= - [0,function(param){return caml_call1(n_nombre_parts_d832_25,0)}], - _bnK_=caml_call4(Runtime_ocaml_Runtime[63],_ue_,_bnJ_,_bnI_,_bnH_)} - catch(_bpz_) - {_bpz_ = caml_wrap_exception(_bpz_); - if(_bpz_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ub_]; - throw _bpz_} - var - n_nombre_parts_d832_25$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_uf_,Runtime_ocaml_Runtime[15],_bnK_); - function _bnL_(param) - {try - {var - _bpv_= - function(param$0) - {return caml_call2 - (Runtime_ocaml_Runtime[98],equivalence_loyer_eligible,param)}, - _bpw_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_uh_,1)}, - _bpx_=caml_call4(Runtime_ocaml_Runtime[63],_ui_,[0],_bpw_,_bpv_); - return _bpx_} - catch(_bpy_) - {_bpy_ = caml_wrap_exception(_bpy_); - if(_bpy_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ug_]; - throw _bpy_}} - var - depense_nette_minimale_d832_27= - caml_call3 - (Runtime_ocaml_Runtime[28],_uj_,Runtime_ocaml_Runtime[10],_bnL_); - try - {var - _bnM_=function(param){return ressources_menage_arrondies}, - _bnN_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ul_,1)}, - _bnO_=caml_call4(Runtime_ocaml_Runtime[63],_um_,[0],_bnN_,_bnM_), - calcul_equivalence_loyer_minim$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_un_,Runtime_ocaml_Runtime[13],_bnO_)} - catch(_bpu_) - {_bpu_ = caml_wrap_exception(_bpu_); - if(_bpu_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_uk_]; - throw _bpu_} - try - {var - _bnP_=function(param){return condition_2_du_832_25$0}, - _bnQ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_up_,1)}, - _bnR_=caml_call4(Runtime_ocaml_Runtime[63],_uq_,[0],_bnQ_,_bnP_), - calcul_equivalence_loyer_minim$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_ur_,Runtime_ocaml_Runtime[12],_bnR_)} - catch(_bpt_) - {_bpt_ = caml_wrap_exception(_bpt_); - if(_bpt_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_uo_]; - throw _bpt_} - try - {var - _bnS_=function(param){return n_nombre_parts_d832_25$0}, - _bnT_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ut_,1)}, - _bnU_=caml_call4(Runtime_ocaml_Runtime[63],_uu_,[0],_bnT_,_bnS_), - calcul_equivalence_loyer_minim$2= - caml_call3 - (Runtime_ocaml_Runtime[28],_uv_,Runtime_ocaml_Runtime[15],_bnU_)} - catch(_bps_) - {_bps_ = caml_wrap_exception(_bps_); - if(_bps_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_us_]; - throw _bps_} - var - _bnV_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_uw_,calcul_equivalence_loyer_minim), - [0, - calcul_equivalence_loyer_minim$0, - calcul_equivalence_loyer_minim$1, - calcul_equivalence_loyer_minim$2]), - result$1=caml_call2(Runtime_ocaml_Runtime[27],_ux_,_bnV_), - calcul_equivalence_loyer_minim$3=result$1[1]; - try - {var - _bnW_= - function(param) - {var - _bpn_= - caml_call2 - (Runtime_ocaml_Runtime[104], - coefficient_r_d832_25, - n_nombre_parts_d832_25$0), - denominateur= - caml_call2 - (Runtime_ocaml_Runtime[98],ressources_menage_arrondies,_bpn_), - _bpo_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$137), - denominateur$0= - caml_call2(Runtime_ocaml_Runtime[112],denominateur,_bpo_) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$138) - :denominateur, - _bpp_= - caml_call2 - (Runtime_ocaml_Runtime[104], - coefficient_multiplicateur_d83, - n_nombre_parts_d832_25$0), - _bpq_=caml_call2(Runtime_ocaml_Runtime[108],denominateur$0,_bpp_), - _bpr_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95); - return caml_call2(Runtime_ocaml_Runtime[97],_bpr_,_bpq_)}, - _bnX_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_uz_,1)}, - _bnY_= - [0, - function(param) - {function _bpi_(param) - {var - _bpk_= - caml_call2 - (Runtime_ocaml_Runtime[104], - coefficient_multiplicateur_d83, - n_nombre_parts_d832_25$0), - _bpl_= - caml_call2 - (Runtime_ocaml_Runtime[108], - ressources_menage_arrondies, - _bpk_), - _bpm_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_9$0); - return caml_call2(Runtime_ocaml_Runtime[97],_bpm_,_bpl_)} - function _bpj_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_uA_,condition_2_du_832_25$0)} - return caml_call4(Runtime_ocaml_Runtime[63],_uB_,[0],_bpj_,_bpi_)}], - _bnZ_=caml_call4(Runtime_ocaml_Runtime[63],_uC_,_bnY_,_bnX_,_bnW_)} - catch(_bph_) - {_bph_ = caml_wrap_exception(_bph_); - if(_bph_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_uy_]; - throw _bph_} - var - coefficient_prise_en_charge_d8= - caml_call3 - (Runtime_ocaml_Runtime[28],_uD_,Runtime_ocaml_Runtime[15],_bnZ_); - function _bn0_(param) - {try - {var - _bpa_= - function(param$0) - {var - _bpe_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uF_, - Runtime_ocaml_Runtime[13], - param), - _bpf_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _uG_, - depense_nette_minimale_d832_27), - _bpe_), - _bpg_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uH_, - Runtime_ocaml_Runtime[13], - _bpf_), - depense_nette_minimale= - caml_call2(Runtime_ocaml_Runtime[27],_uI_,_bpg_); - return caml_call2 - (Runtime_ocaml_Runtime[117], - depense_nette_minimale, - montant_forfaitaire_d832_27) - ?caml_call2 - (Runtime_ocaml_Runtime[98], - montant_forfaitaire_d832_27, - depense_nette_minimale) - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$139)}, - _bpb_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_uJ_,1)}, - _bpc_=caml_call4(Runtime_ocaml_Runtime[63],_uK_,[0],_bpb_,_bpa_); - return _bpc_} - catch(_bpd_) - {_bpd_ = caml_wrap_exception(_bpd_); - if(_bpd_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_uE_]; - throw _bpd_}} - var - abattement_depense_nette_minim= - caml_call3 - (Runtime_ocaml_Runtime[28],_uL_,Runtime_ocaml_Runtime[10],_bn0_); - try - {var - _bn1_=function(param){return calcul_equivalence_loyer_minim$3}, - _bn2_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_uN_,1)}, - _bn3_=caml_call4(Runtime_ocaml_Runtime[63],_uO_,[0],_bn2_,_bn1_)} - catch(_bo$_) - {_bo$_ = caml_wrap_exception(_bo$_); - if(_bo$_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_uM_]; - throw _bo$_} - var - equivalence_loyer_minimale= - caml_call3 - (Runtime_ocaml_Runtime[28],_uP_,Runtime_ocaml_Runtime[13],_bn3_); - try - {var - _bn4_= - function(param) - {var - _bo5_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$5), - _bo6_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$6), - _bo7_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_005$0), - _bo8_= - caml_call2 - (Runtime_ocaml_Runtime[97], - coefficient_prise_en_charge_d8, - _bo7_), - _bo9_=caml_call2(Runtime_ocaml_Runtime[103],_bo8_,_bo6_), - _bo__=caml_call1(Runtime_ocaml_Runtime[78],_bo9_); - return caml_call2(Runtime_ocaml_Runtime[107],_bo__,_bo5_)}, - _bn5_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_uR_,1)}, - _bn6_= - [0, - function(param) - {function _boX_(param) - {var - _boZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$7), - _bo0_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$8), - _bo1_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_005$1), - _bo2_= - caml_call2 - (Runtime_ocaml_Runtime[97], - coefficient_prise_en_charge_d8, - _bo1_), - _bo3_=caml_call2(Runtime_ocaml_Runtime[103],_bo2_,_bo0_), - _bo4_=caml_call1(Runtime_ocaml_Runtime[78],_bo3_); - return caml_call2(Runtime_ocaml_Runtime[107],_bo4_,_boZ_)} - function _boY_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_uS_,condition_2_du_832_25$0)} - return caml_call4(Runtime_ocaml_Runtime[63],_uT_,[0],_boY_,_boX_)}], - _bn7_=caml_call4(Runtime_ocaml_Runtime[63],_uU_,_bn6_,_bn5_,_bn4_)} - catch(_boW_) - {_boW_ = caml_wrap_exception(_boW_); - if(_boW_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_uQ_]; - throw _boW_} - var - coefficient_prise_en_charge_d8$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_uV_,Runtime_ocaml_Runtime[15],_bn7_); - function _bn8_(param) - {try - {var - _boK_= - function(param$0) - {var - _boO_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uX_, - Runtime_ocaml_Runtime[13], - param), - _boP_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _uY_, - traitement_aide_finale_minorat), - _boO_), - _boQ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _uZ_, - Runtime_ocaml_Runtime[13], - _boP_), - aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_u0_,_boQ_), - _boR_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _u1_, - Runtime_ocaml_Runtime[13], - aide_finale), - _boS_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _u2_, - abattement_depense_nette_minim), - _boR_), - _boT_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _u3_, - Runtime_ocaml_Runtime[13], - _boS_), - _boU_=caml_call2(Runtime_ocaml_Runtime[27],_u4_,_boT_), - aide_finale$0= - caml_call2(Runtime_ocaml_Runtime[98],aide_finale,_boU_), - _boV_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$140); - return caml_call2 - (Runtime_ocaml_Runtime[127],aide_finale$0,_boV_) - ?aide_finale$0 - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$141)}, - _boL_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_u5_,1)}, - _boM_=caml_call4(Runtime_ocaml_Runtime[63],_u6_,[0],_boL_,_boK_); - return _boM_} - catch(_boN_) - {_boN_ = caml_wrap_exception(_boN_); - if(_boN_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_uW_]; - throw _boN_}} - var - traitement_aide_finale_abattem= - caml_call3 - (Runtime_ocaml_Runtime[28],_u7_,Runtime_ocaml_Runtime[10],_bn8_); - try - {var - _bn9_= - function(param) - {var _boJ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$0); - return caml_call2 - (Runtime_ocaml_Runtime[126], - coefficient_prise_en_charge_d8$0, - _boJ_) - ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$1) - :coefficient_prise_en_charge_d8$0}, - _bn__= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_u9_,1)}, - _bn$_= - [0, - function(param) - {function _boG_(param) - {var _boI_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_9$1); - return caml_call2 - (Runtime_ocaml_Runtime[126], - coefficient_prise_en_charge_d8$0, - _boI_) - ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_9$2) - :coefficient_prise_en_charge_d8$0} - function _boH_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_u__,condition_2_du_832_25$0)} - return caml_call4(Runtime_ocaml_Runtime[63],_u$_,[0],_boH_,_boG_)}], - _boa_=caml_call4(Runtime_ocaml_Runtime[63],_va_,_bn$_,_bn__,_bn9_)} - catch(_boF_) - {_boF_ = caml_wrap_exception(_boF_); - if(_boF_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_u8_]; - throw _boF_} - var - coefficient_prise_en_charge_d8$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_vb_,Runtime_ocaml_Runtime[15],_boa_); - function _bob_(param) - {try - {var - _boq_= - function(param$0) - {var - _bou_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vd_, - Runtime_ocaml_Runtime[13], - param), - _bov_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _ve_, - traitement_aide_finale_abattem), - _bou_), - _bow_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vf_, - Runtime_ocaml_Runtime[13], - _bov_), - aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_vg_,_bow_), - _box_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vh_, - Runtime_ocaml_Runtime[13], - aide_finale), - _boy_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _vi_, - contributions_sociales_dot_mon), - _box_), - _boz_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vj_, - Runtime_ocaml_Runtime[13], - _boy_), - crds=caml_call2(Runtime_ocaml_Runtime[27],_vk_,_boz_), - _boA_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$0), - _boB_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale,crds), - _boC_=caml_call2(Runtime_ocaml_Runtime[98],_boB_,_boA_), - aide_finale_moins_crds_arrondi= - caml_call1(Runtime_ocaml_Runtime[77],_boC_), - _boD_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$142), - _boE_= - caml_call2 - (Runtime_ocaml_Runtime[93], - aide_finale_moins_crds_arrondi, - crds); - return caml_call2(Runtime_ocaml_Runtime[127],_boE_,_boD_) - ?caml_call2 - (Runtime_ocaml_Runtime[93], - aide_finale_moins_crds_arrondi, - crds) - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$143)}, - _bor_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_vl_,1)}, - _bos_=caml_call4(Runtime_ocaml_Runtime[63],_vm_,[0],_bor_,_boq_); - return _bos_} - catch(_bot_) - {_bot_ = caml_wrap_exception(_bot_); - if(_bot_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_vc_]; - throw _bot_}} - var - traitement_aide_finale_contrib= - caml_call3 - (Runtime_ocaml_Runtime[28],_vn_,Runtime_ocaml_Runtime[10],_bob_); - try - {var - _boc_= - function(param) - {var - _boo_= - caml_call2 - (Runtime_ocaml_Runtime[98], - equivalence_loyer_eligible, - equivalence_loyer_minimale), - aide_finale= - caml_call2 - (Runtime_ocaml_Runtime[104], - _boo_, - coefficient_prise_en_charge_d8$1), - _bop_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$144); - return caml_call2(Runtime_ocaml_Runtime[112],aide_finale,_bop_) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$145) - :aide_finale}, - _bod_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vp_,1)}, - _boe_=caml_call4(Runtime_ocaml_Runtime[63],_vq_,[0],_bod_,_boc_)} - catch(_bon_) - {_bon_ = caml_wrap_exception(_bon_); - if(_bon_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_vo_]; - throw _bon_} - var - aide_finale_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_vr_,Runtime_ocaml_Runtime[13],_boe_); - function _bof_(param) - {try - {var - _bog_= - function(param$0) - {var - _bok_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vt_, - Runtime_ocaml_Runtime[13], - param), - _bol_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _vu_, - traitement_aide_finale_contrib), - _bok_), - _bom_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _vv_, - Runtime_ocaml_Runtime[13], - _bol_), - aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_vw_,_bom_); - return caml_call2 - (Runtime_ocaml_Runtime[112], - aide_finale, - montant_minimal_aide_d823_24) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$146) - :aide_finale}, - _boh_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_vx_,1)}, - _boi_=caml_call4(Runtime_ocaml_Runtime[63],_vy_,[0],_boh_,_bog_); - return _boi_} - catch(_boj_) - {_boj_ = caml_wrap_exception(_boj_); - if(_boj_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_vs_]; - throw _boj_}} - var - traitement_aide_finale_montant= - caml_call3 - (Runtime_ocaml_Runtime[28],_vz_,Runtime_ocaml_Runtime[10],_bof_); - return [0, - coefficient_multiplicateur_d83, - coefficient_r_d832_25, - n_nombre_parts_d832_25$0, - equivalence_loyer_eligible, - plafond_equivalence_loyer_elig, - equivalence_loyer_minimale, - coefficient_prise_en_charge_d8$1, - aide_finale_formule, - traitement_aide_finale_montant]} - function calcul_aide_personnalisee_loge$1(calcul_aide_personnalisee_loge) - {var - mensualite_principale=calcul_aide_personnalisee_loge[1], - ressources_menage_arrondies=calcul_aide_personnalisee_loge[2], - nombre_personnes_a_charge=calcul_aide_personnalisee_loge[3], - situation_familiale_calcul_apl=calcul_aide_personnalisee_loge[4], - type_travaux_logement=calcul_aide_personnalisee_loge[5], - date_signature_pret=calcul_aide_personnalisee_loge[6], - local_habite_premiere_fois_ben=calcul_aide_personnalisee_loge[7], - date_entree_logement=calcul_aide_personnalisee_loge[8], - copropriete=calcul_aide_personnalisee_loge[9], - situation_r822_11_13_17=calcul_aide_personnalisee_loge[10], - zone=calcul_aide_personnalisee_loge[11], - type_pret=calcul_aide_personnalisee_loge[12], - anciennete_logement=calcul_aide_personnalisee_loge[13], - date_courante=calcul_aide_personnalisee_loge[14]; - try - {var - _aVY_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$1)}, - _aVZ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vB_,1)}, - _aV0_=caml_call4(Runtime_ocaml_Runtime[63],_vC_,[0],_aVZ_,_aVY_)} - catch(_bm1_) - {_bm1_ = caml_wrap_exception(_bm1_); - if(_bm1_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_vA_]; - throw _bm1_} - var - montant_forfaitaire_d832_10= - caml_call3 - (Runtime_ocaml_Runtime[28],_vD_,Runtime_ocaml_Runtime[13],_aV0_); - try - {var - _aV1_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$2)}, - _aV2_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vF_,1)}, - _aV3_=caml_call4(Runtime_ocaml_Runtime[63],_vG_,[0],_aV2_,_aV1_)} - catch(_bm0_) - {_bm0_ = caml_wrap_exception(_bm0_); - if(_bm0_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_vE_]; - throw _bm0_} - var - montant_minimal_aide_d832_10= - caml_call3 - (Runtime_ocaml_Runtime[28],_vH_,Runtime_ocaml_Runtime[13],_aV3_); - try - {var - _aV4_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_2211133)}, - _aV5_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vJ_,1)}, - _aV6_=caml_call4(Runtime_ocaml_Runtime[63],_vK_,[0],_aV5_,_aV4_)} - catch(_bmZ_) - {_bmZ_ = caml_wrap_exception(_bmZ_); - if(_bmZ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_vI_]; - throw _bmZ_} - var - coefficient_multiplicateur_d83= - caml_call3 - (Runtime_ocaml_Runtime[28],_vL_,Runtime_ocaml_Runtime[13],_aV6_); - try - {var - _aV7_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[39],cst_16_25)}, - _aV8_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vN_,1)}, - _aV9_=caml_call4(Runtime_ocaml_Runtime[63],_vO_,[0],_aV8_,_aV7_)} - catch(_bmY_) - {_bmY_ = caml_wrap_exception(_bmY_); - if(_bmY_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_vM_]; - throw _bmY_} - var - coefficient_multiplicateur_d83$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_vP_,Runtime_ocaml_Runtime[15],_aV9_); - try - {var - _aV__= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_560085)}, - _aV$_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vR_,1)}, - _aWa_=caml_call4(Runtime_ocaml_Runtime[63],_vS_,[0],_aV$_,_aV__)} - catch(_bmX_) - {_bmX_ = caml_wrap_exception(_bmX_); - if(_bmX_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_vQ_]; - throw _bmX_} - var - montant_limite_tranches_d832_1= - caml_call3 - (Runtime_ocaml_Runtime[28],_vT_,Runtime_ocaml_Runtime[13],_aWa_); - try - {var - _aWb_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_208$0)}, - _aWc_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vV_,1)}, - _aWd_=caml_call4(Runtime_ocaml_Runtime[63],_vW_,[0],_aWc_,_aWb_)} - catch(_bmW_) - {_bmW_ = caml_wrap_exception(_bmW_); - if(_bmW_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_vU_]; - throw _bmW_} - var - taux_tranche_inferieure_d832_1= - caml_call3 - (Runtime_ocaml_Runtime[28],_vX_,Runtime_ocaml_Runtime[15],_aWd_); - try - {var - _aWe_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_416)}, - _aWf_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vZ_,1)}, - _aWg_=caml_call4(Runtime_ocaml_Runtime[63],_v0_,[0],_aWf_,_aWe_)} - catch(_bmV_) - {_bmV_ = caml_wrap_exception(_bmV_); - if(_bmV_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_vY_]; - throw _bmV_} - var - taux_tranche_superieure_d832_1= - caml_call3 - (Runtime_ocaml_Runtime[28],_v1_,Runtime_ocaml_Runtime[15],_aWg_); - try - {var - _aWh_= - function(param) - {var - _bmT_=caml_call1(Runtime_ocaml_Runtime[39],cst_6_55957), - _bmU_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$76); - return caml_call2(Runtime_ocaml_Runtime[107],_bmU_,_bmT_)}, - _aWi_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_v3_,1)}, - _aWj_=caml_call4(Runtime_ocaml_Runtime[63],_v4_,[0],_aWi_,_aWh_)} - catch(_bmS_) - {_bmS_ = caml_wrap_exception(_bmS_); - if(_bmS_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_v2_]; - throw _bmS_} - var - taux_francs_vers_euros= - caml_call3 - (Runtime_ocaml_Runtime[28],_v5_,Runtime_ocaml_Runtime[15],_aWj_); - try - {var - _aWk_=function(param){return nombre_personnes_a_charge}, - _aWl_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_v7_,1)}, - _aWm_=caml_call4(Runtime_ocaml_Runtime[63],_v8_,[0],_aWl_,_aWk_), - calcul_nombre_parts_dot_nombre= - caml_call3 - (Runtime_ocaml_Runtime[28],_v9_,Runtime_ocaml_Runtime[14],_aWm_)} - catch(_bmR_) - {_bmR_ = caml_wrap_exception(_bmR_); - if(_bmR_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_v6_]; - throw _bmR_} - try - {var - _aWn_=function(param){return situation_familiale_calcul_apl}, - _aWo_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_v$_,1)}, - _aWp_=caml_call4(Runtime_ocaml_Runtime[63],_wa_,[0],_aWo_,_aWn_), - calcul_nombre_parts_dot_situat= - caml_call3 - (Runtime_ocaml_Runtime[28], - _wb_, - embed_situation_familiale_calc, - _aWp_)} - catch(_bmQ_) - {_bmQ_ = caml_wrap_exception(_bmQ_); - if(_bmQ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_v__]; - throw _bmQ_} - var - _aWq_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_wc_,calcul_nombre_parts_accession_), - [0,calcul_nombre_parts_dot_nombre,calcul_nombre_parts_dot_situat]), - result=caml_call2(Runtime_ocaml_Runtime[27],_wd_,_aWq_), - calcul_nombre_parts_dot_n_nomb=result[1]; - try - {var - _aWr_= - function(param) - {if(0 === anciennete_logement[0]) - {var _bmO_=caml_call3(Runtime_ocaml_Runtime[57],1998,10,1); - return caml_call2 - (Runtime_ocaml_Runtime[119],date_signature_pret,_bmO_) - ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0226) - :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0234)} - var ameliore_par_occupant=anciennete_logement[1]; - if(0 === ameliore_par_occupant[0]) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0172); - var _bmP_=caml_call3(Runtime_ocaml_Runtime[57],1998,10,1); - return caml_call2 - (Runtime_ocaml_Runtime[119],date_signature_pret,_bmP_) - ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0226$0) - :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0234$0)}, - _aWs_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wf_,1)}, - _aWt_=caml_call4(Runtime_ocaml_Runtime[63],_wg_,[0],_aWs_,_aWr_)} - catch(_bmN_) - {_bmN_ = caml_wrap_exception(_bmN_); - if(_bmN_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_we_]; - throw _bmN_} - var - coefficient_multiplicateur_d83$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_wh_,Runtime_ocaml_Runtime[15],_aWt_); - try - {var - _aWu_=function(param){return date_courante}, - _aWv_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wj_,1)}, - _aWw_=caml_call4(Runtime_ocaml_Runtime[63],_wk_,[0],_aWv_,_aWu_), - contributions_sociales_dot_dat= - caml_call3 - (Runtime_ocaml_Runtime[28],_wl_,Runtime_ocaml_Runtime[16],_aWw_)} - catch(_bmM_) - {_bmM_ = caml_wrap_exception(_bmM_); - if(_bmM_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_wi_]; - throw _bmM_} - var - _aWx_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_wm_,contributions_sociales_aides_p), - [0,contributions_sociales_dot_dat]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_wn_,_aWx_), - contributions_sociales_dot_mon=result$0[1]; - try - {var - _aWy_= - function(param) - {function _bmd_(param){throw Runtime_ocaml_Runtime[2]} - function _bme_(param){return 0} - function _bmf_(param) - {function _bmB_(param) - {var - _bmI_= - caml_call1 - (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), - _bmJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224$1), - _bmK_=caml_call2(Runtime_ocaml_Runtime[104],_bmJ_,_bmI_), - _bmL_=caml_call1(Runtime_ocaml_Runtime[31],cst_5399$1); - return caml_call2(Runtime_ocaml_Runtime[93],_bmL_,_bmK_)} - function _bmC_(param) - {var - _bmD_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bmE_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bmD_), - _bmF_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bmG_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bmF_), - _bmH_=caml_call2(Runtime_ocaml_Runtime[83],_bmG_,_bmE_); - return caml_call2(Runtime_ocaml_Runtime[29],_wp_,_bmH_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_wq_,[0],_bmC_,_bmB_)} - function _bmg_(param) - {function _bmq_(param) - {var - _bmx_= - caml_call1 - (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), - _bmy_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$1), - _bmz_=caml_call2(Runtime_ocaml_Runtime[104],_bmy_,_bmx_), - _bmA_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422$1); - return caml_call2(Runtime_ocaml_Runtime[93],_bmA_,_bmz_)} - function _bmr_(param) - {var - _bms_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bmt_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bms_), - _bmu_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bmv_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bmu_), - _bmw_=caml_call2(Runtime_ocaml_Runtime[83],_bmv_,_bmt_); - return caml_call2(Runtime_ocaml_Runtime[29],_wr_,_bmw_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_ws_,[0],_bmr_,_bmq_)} - var - _bmh_= - [0, - function(param) - {function _bmi_(param) - {var - _bmm_= - caml_call1 - (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), - _bmn_=caml_call1(Runtime_ocaml_Runtime[31],cst_1272$1), - _bmo_=caml_call2(Runtime_ocaml_Runtime[104],_bmn_,_bmm_), - _bmp_=caml_call1(Runtime_ocaml_Runtime[31],cst_5612$1); - return caml_call2(Runtime_ocaml_Runtime[93],_bmp_,_bmo_)} - function _bmj_(param) - {var - _bmk_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _bml_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bmk_); - return caml_call2(Runtime_ocaml_Runtime[29],_wt_,_bml_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_wu_,[0],_bmj_,_bmi_)}, - _bmg_, - _bmf_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_wv_,_bmh_,_bme_,_bmd_)}, - _aWz_=function(param){return 1}, - _aWA_= - [0, - function(param) - {function _blD_(param){throw Runtime_ocaml_Runtime[2]} - function _blE_(param){return 0} - function _blF_(param) - {function _bl3_(param) - {var - _bl$_= - caml_call1 - (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), - _bma_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224$2), - _bmb_=caml_call2(Runtime_ocaml_Runtime[104],_bma_,_bl$_), - _bmc_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_2699$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_5399$2); - return caml_call2(Runtime_ocaml_Runtime[93],_bmc_,_bmb_)} - function _bl4_(param) - {var - _bl5_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bl6_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bl5_), - _bl7_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _bl8_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_bl7_), - _bl9_=caml_call2(Runtime_ocaml_Runtime[83],_bl8_,_bl6_), - _bl__= - caml_call2(Runtime_ocaml_Runtime[83],_bl9_,copropriete); - return caml_call2(Runtime_ocaml_Runtime[29],_ww_,_bl__)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_wx_,[0],_bl4_,_bl3_)} - function _blG_(param) - {function _blR_(param) - {var - _blZ_= - caml_call1 - (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), - _bl0_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$2), - _bl1_=caml_call2(Runtime_ocaml_Runtime[104],_bl0_,_blZ_), - _bl2_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_2710$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_5422$2); - return caml_call2(Runtime_ocaml_Runtime[93],_bl2_,_bl1_)} - function _blS_(param) - {var - _blT_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _blU_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_blT_), - _blV_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _blW_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_blV_), - _blX_=caml_call2(Runtime_ocaml_Runtime[83],_blW_,_blU_), - _blY_= - caml_call2(Runtime_ocaml_Runtime[83],_blX_,copropriete); - return caml_call2(Runtime_ocaml_Runtime[29],_wy_,_blY_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_wz_,[0],_blS_,_blR_)} - var - _blH_= - [0, - function(param) - {function _blI_(param) - {var - _blN_= - caml_call1 - (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), - _blO_=caml_call1(Runtime_ocaml_Runtime[31],cst_1272$2), - _blP_=caml_call2(Runtime_ocaml_Runtime[104],_blO_,_blN_), - _blQ_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_2805$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_5612$2); - return caml_call2(Runtime_ocaml_Runtime[93],_blQ_,_blP_)} - function _blJ_(param) - {var - _blK_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _blL_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_blK_), - _blM_= - caml_call2(Runtime_ocaml_Runtime[83],_blL_,copropriete); - return caml_call2(Runtime_ocaml_Runtime[29],_wA_,_blM_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_wB_,[0],_blJ_,_blI_)}, - _blG_, - _blF_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_wC_,_blH_,_blE_,_blD_)}], - _aWB_=caml_call4(Runtime_ocaml_Runtime[63],_wD_,_aWA_,_aWz_,_aWy_)} - catch(_blC_) - {_blC_ = caml_wrap_exception(_blC_); - if(_blC_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_wo_]; - throw _blC_} - var - montant_forfaitaire_charges_d8= - caml_call3 - (Runtime_ocaml_Runtime[28],_wE_,Runtime_ocaml_Runtime[13],_aWB_); - function _aWC_(param) - {try - {var - _blw_= - function(param$0) - {var - _blA_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$147), - _blB_= - caml_call2 - (Runtime_ocaml_Runtime[98],param,montant_forfaitaire_d832_10); - return caml_call2(Runtime_ocaml_Runtime[127],_blB_,_blA_) - ?caml_call2 - (Runtime_ocaml_Runtime[98], - param, - montant_forfaitaire_d832_10) - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$148)}, - _blx_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_wG_,1)}, - _bly_=caml_call4(Runtime_ocaml_Runtime[63],_wH_,[0],_blx_,_blw_); - return _bly_} - catch(_blz_) - {_blz_ = caml_wrap_exception(_blz_); - if(_blz_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_wF_]; - throw _blz_}} - var - traitement_aide_finale_minorat= - caml_call3 - (Runtime_ocaml_Runtime[28],_wI_,Runtime_ocaml_Runtime[10],_aWC_); - try - {var - _aWD_= - function(param) - {var - _blv_= - caml_call2 - (Runtime_ocaml_Runtime[104], - mensualite_principale, - coefficient_multiplicateur_d83$0); - return caml_call2 - (Runtime_ocaml_Runtime[117], - ressources_menage_arrondies, - _blv_) - ?caml_call2 - (Runtime_ocaml_Runtime[104], - mensualite_principale, - coefficient_multiplicateur_d83$0) - :ressources_menage_arrondies}, - _aWE_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wK_,1)}, - _aWF_= - [0, - function(param) - {function _blt_(param){return ressources_menage_arrondies} - function _blu_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_wL_,situation_r822_11_13_17)} - return caml_call4(Runtime_ocaml_Runtime[63],_wM_,[0],_blu_,_blt_)}], - _aWG_=caml_call4(Runtime_ocaml_Runtime[63],_wN_,_aWF_,_aWE_,_aWD_)} - catch(_bls_) - {_bls_ = caml_wrap_exception(_bls_); - if(_bls_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_wJ_]; - throw _bls_} - var - ressources_menage_avec_d832_18= - caml_call3 - (Runtime_ocaml_Runtime[28],_wO_,Runtime_ocaml_Runtime[13],_aWG_); - function _aWH_(param) - {try - {var - _aZs_=function(param){throw Runtime_ocaml_Runtime[2]}, - _aZt_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_wQ_,0)}, - _aZu_= - function(param$0) - {function _bjo_(param){throw Runtime_ocaml_Runtime[2]} - function _bjp_(param){return 0} - function _bjq_(param$0) - {function _bk0_(param) - {switch(zone[0]) - {case 0: - var _bk8_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$149); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bk8_)) - var - _bk9_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_148100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_178700); - else - var - _bk__=caml_call1(Runtime_ocaml_Runtime[46],cst_1$77), - _bk$_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bk__), - _bla_=caml_call1(Runtime_ocaml_Runtime[69],_bk$_), - _blb_=caml_call1(Runtime_ocaml_Runtime[31],cst_30600), - _blc_=caml_call2(Runtime_ocaml_Runtime[104],_blb_,_bla_), - _bld_=caml_call1(Runtime_ocaml_Runtime[31],cst_209300), - _bk9_=caml_call2(Runtime_ocaml_Runtime[93],_bld_,_blc_); - break; - case 1: - var _ble_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$150); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ble_)) - var - _bk9_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_132000) - :caml_call1(Runtime_ocaml_Runtime[31],cst_158900); - else - var - _blf_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$78), - _blg_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_blf_), - _blh_=caml_call1(Runtime_ocaml_Runtime[69],_blg_), - _bli_=caml_call1(Runtime_ocaml_Runtime[31],cst_26900), - _blj_=caml_call2(Runtime_ocaml_Runtime[104],_bli_,_blh_), - _blk_=caml_call1(Runtime_ocaml_Runtime[31],cst_185800), - _bk9_=caml_call2(Runtime_ocaml_Runtime[93],_blk_,_blj_); - break; - default: - var _bll_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$151); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bll_)) - var - _bk9_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_123300) - :caml_call1(Runtime_ocaml_Runtime[31],cst_147900); - else - var - _blm_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$79), - _bln_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_blm_), - _blo_=caml_call1(Runtime_ocaml_Runtime[69],_bln_), - _blp_=caml_call1(Runtime_ocaml_Runtime[31],cst_24600), - _blq_=caml_call2(Runtime_ocaml_Runtime[104],_blp_,_blo_), - _blr_=caml_call1(Runtime_ocaml_Runtime[31],cst_172500), - _bk9_=caml_call2(Runtime_ocaml_Runtime[93],_blr_,_blq_)} - return caml_call2 - (Runtime_ocaml_Runtime[104],_bk9_,taux_francs_vers_euros)} - function _bk1_(param$0) - {switch(type_pret[0]) - {case 0:var _bk2_=1;break; - case 1:var _bk2_=0;break; - case 2:var _bk2_=0;break; - case 3:var _bk2_=0;break; - default:var _bk2_=0} - var - _bk3_=0 === anciennete_logement[0]?0:1, - _bk4_=caml_call2(Runtime_ocaml_Runtime[83],_bk3_,_bk2_), - _bk5_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), - _bk6_=caml_call2(Runtime_ocaml_Runtime[129],param,_bk5_), - _bk7_=caml_call2(Runtime_ocaml_Runtime[83],_bk6_,_bk4_); - return caml_call2(Runtime_ocaml_Runtime[29],_wR_,_bk7_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_wS_,[0],_bk1_,_bk0_)} - function _bjr_(param$0) - {function _bkw_(param) - {switch(zone[0]) - {case 0: - var _bkE_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$152); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bkE_)) - var - _bkF_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_184000) - :caml_call1(Runtime_ocaml_Runtime[31],cst_220000); - else - var - _bkG_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$80), - _bkH_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bkG_), - _bkI_=caml_call1(Runtime_ocaml_Runtime[69],_bkH_), - _bkJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_38000), - _bkK_=caml_call2(Runtime_ocaml_Runtime[104],_bkJ_,_bkI_), - _bkL_=caml_call1(Runtime_ocaml_Runtime[31],cst_260000), - _bkF_=caml_call2(Runtime_ocaml_Runtime[93],_bkL_,_bkK_); - break; - case 1: - var _bkM_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$153); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bkM_)) - var - _bkF_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_164200) - :caml_call1(Runtime_ocaml_Runtime[31],cst_197700); - else - var - _bkN_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$81), - _bkO_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bkN_), - _bkP_=caml_call1(Runtime_ocaml_Runtime[69],_bkO_), - _bkQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_33500), - _bkR_=caml_call2(Runtime_ocaml_Runtime[104],_bkQ_,_bkP_), - _bkS_=caml_call1(Runtime_ocaml_Runtime[31],cst_231200), - _bkF_=caml_call2(Runtime_ocaml_Runtime[93],_bkS_,_bkR_); - break; - default: - var _bkT_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$154); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bkT_)) - var - _bkF_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_153200) - :caml_call1(Runtime_ocaml_Runtime[31],cst_183700); - else - var - _bkU_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$82), - _bkV_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bkU_), - _bkW_=caml_call1(Runtime_ocaml_Runtime[69],_bkV_), - _bkX_=caml_call1(Runtime_ocaml_Runtime[31],cst_30500$0), - _bkY_=caml_call2(Runtime_ocaml_Runtime[104],_bkX_,_bkW_), - _bkZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_214200), - _bkF_=caml_call2(Runtime_ocaml_Runtime[93],_bkZ_,_bkY_)} - return caml_call2 - (Runtime_ocaml_Runtime[104],_bkF_,taux_francs_vers_euros)} - function _bkx_(param$0) - {switch(type_pret[0]) - {case 0:var _bky_=1;break; - case 1:var _bky_=0;break; - case 2:var _bky_=0;break; - case 3:var _bky_=0;break; - default:var _bky_=0} - var - _bkz_=0 === anciennete_logement[0]?1:0, - _bkA_=caml_call2(Runtime_ocaml_Runtime[83],_bkz_,_bky_), - _bkB_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), - _bkC_=caml_call2(Runtime_ocaml_Runtime[129],param,_bkB_), - _bkD_=caml_call2(Runtime_ocaml_Runtime[83],_bkC_,_bkA_); - return caml_call2(Runtime_ocaml_Runtime[29],_wT_,_bkD_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_wU_,[0],_bkx_,_bkw_)} - function _bjs_(param$0) - {function _bj1_(param) - {switch(zone[0]) - {case 0: - var _bka_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$155); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bka_)) - var - _bkb_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_167800) - :caml_call1(Runtime_ocaml_Runtime[31],cst_202500); - else - var - _bkc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$83), - _bkd_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bkc_), - _bke_=caml_call1(Runtime_ocaml_Runtime[69],_bkd_), - _bkf_=caml_call1(Runtime_ocaml_Runtime[31],cst_34700), - _bkg_=caml_call2(Runtime_ocaml_Runtime[104],_bkf_,_bke_), - _bkh_=caml_call1(Runtime_ocaml_Runtime[31],cst_237200), - _bkb_=caml_call2(Runtime_ocaml_Runtime[93],_bkh_,_bkg_); - break; - case 1: - var _bki_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$156); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bki_)) - var - _bkb_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_149600) - :caml_call1(Runtime_ocaml_Runtime[31],cst_180100); - else - var - _bkj_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$84), - _bkk_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bkj_), - _bkl_=caml_call1(Runtime_ocaml_Runtime[69],_bkk_), - _bkm_=caml_call1(Runtime_ocaml_Runtime[31],cst_30500$1), - _bkn_=caml_call2(Runtime_ocaml_Runtime[104],_bkm_,_bkl_), - _bko_=caml_call1(Runtime_ocaml_Runtime[31],cst_210600), - _bkb_=caml_call2(Runtime_ocaml_Runtime[93],_bko_,_bkn_); - break; - default: - var _bkp_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$157); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bkp_)) - var - _bkb_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_139700) - :caml_call1(Runtime_ocaml_Runtime[31],cst_167600); - else - var - _bkq_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$85), - _bkr_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bkq_), - _bks_=caml_call1(Runtime_ocaml_Runtime[69],_bkr_), - _bkt_=caml_call1(Runtime_ocaml_Runtime[31],cst_27900), - _bku_=caml_call2(Runtime_ocaml_Runtime[104],_bkt_,_bks_), - _bkv_=caml_call1(Runtime_ocaml_Runtime[31],cst_195500), - _bkb_=caml_call2(Runtime_ocaml_Runtime[93],_bkv_,_bku_)} - return caml_call2 - (Runtime_ocaml_Runtime[104],_bkb_,taux_francs_vers_euros)} - function _bj2_(param$0) - {switch(type_pret[0]) - {case 0:var _bj3_=1;break; - case 1:var _bj3_=0;break; - case 2:var _bj3_=0;break; - case 3:var _bj3_=0;break; - default:var _bj3_=0} - var - _bj4_=0 === anciennete_logement[0]?0:1, - _bj5_=caml_call2(Runtime_ocaml_Runtime[83],_bj4_,_bj3_), - _bj6_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), - _bj7_=caml_call2(Runtime_ocaml_Runtime[114],param,_bj6_), - _bj8_=caml_call2(Runtime_ocaml_Runtime[83],_bj7_,_bj5_), - _bj9_=caml_call3(Runtime_ocaml_Runtime[57],1992,6,30), - _bj__=caml_call2(Runtime_ocaml_Runtime[129],param,_bj9_), - _bj$_=caml_call2(Runtime_ocaml_Runtime[83],_bj__,_bj8_); - return caml_call2(Runtime_ocaml_Runtime[29],_wV_,_bj$_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_wW_,[0],_bj2_,_bj1_)} - var - _bjt_= - [0, - function(param$0) - {function _bju_(param) - {switch(zone[0]) - {case 0: - var _bjF_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$158); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bjF_)) - var - _bjG_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_208500) - :caml_call1(Runtime_ocaml_Runtime[31],cst_251500); - else - var - _bjH_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$86), - _bjI_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bjH_), - _bjJ_=caml_call1(Runtime_ocaml_Runtime[69],_bjI_), - _bjK_=caml_call1(Runtime_ocaml_Runtime[31],cst_43000), - _bjL_=caml_call2(Runtime_ocaml_Runtime[104],_bjK_,_bjJ_), - _bjM_=caml_call1(Runtime_ocaml_Runtime[31],cst_294500), - _bjG_=caml_call2(Runtime_ocaml_Runtime[93],_bjM_,_bjL_); - break; - case 1: - var _bjN_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$159); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bjN_)) - var - _bjG_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_186000) - :caml_call1(Runtime_ocaml_Runtime[31],cst_223900); - else - var - _bjO_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$87), - _bjP_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bjO_), - _bjQ_=caml_call1(Runtime_ocaml_Runtime[69],_bjP_), - _bjR_=caml_call1(Runtime_ocaml_Runtime[31],cst_37900), - _bjS_=caml_call2(Runtime_ocaml_Runtime[104],_bjR_,_bjQ_), - _bjT_=caml_call1(Runtime_ocaml_Runtime[31],cst_261800), - _bjG_=caml_call2(Runtime_ocaml_Runtime[93],_bjT_,_bjS_); - break; - default: - var _bjU_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$160); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bjU_)) - var - _bjG_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_173600) - :caml_call1(Runtime_ocaml_Runtime[31],cst_208200); - else - var - _bjV_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$88), - _bjW_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bjV_), - _bjX_=caml_call1(Runtime_ocaml_Runtime[69],_bjW_), - _bjY_=caml_call1(Runtime_ocaml_Runtime[31],cst_35600), - _bjZ_=caml_call2(Runtime_ocaml_Runtime[104],_bjY_,_bjX_), - _bj0_=caml_call1(Runtime_ocaml_Runtime[31],cst_242800), - _bjG_=caml_call2(Runtime_ocaml_Runtime[93],_bj0_,_bjZ_)} - return caml_call2 - (Runtime_ocaml_Runtime[104],_bjG_,taux_francs_vers_euros)} - function _bjv_(param$0) - {switch(type_pret[0]) - {case 0:var _bjw_=1;break; - case 1:var _bjw_=0;break; - case 2:var _bjw_=0;break; - case 3:var _bjw_=0;break; - default:var _bjw_=0} - var - _bjx_=0 === anciennete_logement[0]?1:0, - _bjy_=caml_call2(Runtime_ocaml_Runtime[83],_bjx_,_bjw_), - _bjz_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), - _bjA_=caml_call2(Runtime_ocaml_Runtime[114],param,_bjz_), - _bjB_=caml_call2(Runtime_ocaml_Runtime[83],_bjA_,_bjy_), - _bjC_=caml_call3(Runtime_ocaml_Runtime[57],1992,6,30), - _bjD_=caml_call2(Runtime_ocaml_Runtime[129],param,_bjC_), - _bjE_=caml_call2(Runtime_ocaml_Runtime[83],_bjD_,_bjB_); - return caml_call2(Runtime_ocaml_Runtime[29],_wX_,_bjE_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_wY_,[0],_bjv_,_bju_)}, - _bjs_, - _bjr_, - _bjq_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_wZ_,_bjt_,_bjp_,_bjo_)}, - _aZv_= - [0, - function(param$0) - {function _aZy_(param$0) - {function _aZY_(param){throw Runtime_ocaml_Runtime[2]} - function _aZZ_(param){return 0} - function _aZ0_(param$0) - {function _biU_(param) - {switch(zone[0]) - {case 0: - var _bi5_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$161); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bi5_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29986) - :caml_call1(Runtime_ocaml_Runtime[31],cst_36187); - var - _bi6_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$89), - _bi7_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bi6_), - _bi8_=caml_call1(Runtime_ocaml_Runtime[69],_bi7_), - _bi9_=caml_call1(Runtime_ocaml_Runtime[31],cst_6201), - _bi__=caml_call2(Runtime_ocaml_Runtime[104],_bi9_,_bi8_), - _bi$_=caml_call1(Runtime_ocaml_Runtime[31],cst_42386); - return caml_call2(Runtime_ocaml_Runtime[93],_bi$_,_bi__); - case 1: - var _bja_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$162); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bja_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26730) - :caml_call1(Runtime_ocaml_Runtime[31],cst_32193); - var - _bjb_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$90), - _bjc_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bjb_), - _bjd_=caml_call1(Runtime_ocaml_Runtime[69],_bjc_), - _bje_=caml_call1(Runtime_ocaml_Runtime[31],cst_5463), - _bjf_=caml_call2(Runtime_ocaml_Runtime[104],_bje_,_bjd_), - _bjg_=caml_call1(Runtime_ocaml_Runtime[31],cst_37656); - return caml_call2(Runtime_ocaml_Runtime[93],_bjg_,_bjf_); - default: - var _bjh_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$163); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bjh_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24964) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29948); - var - _bji_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$91), - _bjj_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bji_), - _bjk_=caml_call1(Runtime_ocaml_Runtime[69],_bjj_), - _bjl_=caml_call1(Runtime_ocaml_Runtime[31],cst_4986), - _bjm_=caml_call2(Runtime_ocaml_Runtime[104],_bjl_,_bjk_), - _bjn_=caml_call1(Runtime_ocaml_Runtime[31],cst_34934); - return caml_call2(Runtime_ocaml_Runtime[93],_bjn_,_bjm_)}} - function _biV_(param$0) - {switch(type_pret[0]) - {case 0:var _biW_=0;break; - case 1:var _biW_=1;break; - case 2:var _biW_=0;break; - case 3:var _biW_=0;break; - default:var _biW_=0} - var - _biX_=0 === anciennete_logement[0]?0:1, - _biY_=caml_call2(Runtime_ocaml_Runtime[83],_biX_,_biW_), - _biZ_=caml_call3(Runtime_ocaml_Runtime[57],2019,9,30), - _bi0_=caml_call2(Runtime_ocaml_Runtime[129],param,_biZ_), - _bi1_=caml_call2(Runtime_ocaml_Runtime[83],_bi0_,_biY_), - _bi2_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bi3_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bi2_), - _bi4_=caml_call2(Runtime_ocaml_Runtime[83],_bi3_,_bi1_); - return caml_call2(Runtime_ocaml_Runtime[29],_w0_,_bi4_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_w1_,[0],_biV_,_biU_)} - function _aZ1_(param$0) - {function _bio_(param) - {switch(zone[0]) - {case 0: - var _biz_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$164); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_biz_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_37252) - :caml_call1(Runtime_ocaml_Runtime[31],cst_44941); - var - _biA_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$92), - _biB_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_biA_), - _biC_=caml_call1(Runtime_ocaml_Runtime[69],_biB_), - _biD_=caml_call1(Runtime_ocaml_Runtime[31],cst_7687), - _biE_=caml_call2(Runtime_ocaml_Runtime[104],_biD_,_biC_), - _biF_=caml_call1(Runtime_ocaml_Runtime[31],cst_52629); - return caml_call2(Runtime_ocaml_Runtime[93],_biF_,_biE_); - case 1: - var _biG_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$165); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_biG_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_33244) - :caml_call1(Runtime_ocaml_Runtime[31],cst_40013); - var - _biH_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$93), - _biI_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_biH_), - _biJ_=caml_call1(Runtime_ocaml_Runtime[69],_biI_), - _biK_=caml_call1(Runtime_ocaml_Runtime[31],cst_6768), - _biL_=caml_call2(Runtime_ocaml_Runtime[104],_biK_,_biJ_), - _biM_=caml_call1(Runtime_ocaml_Runtime[31],cst_46783); - return caml_call2(Runtime_ocaml_Runtime[93],_biM_,_biL_); - default: - var _biN_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$166); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_biN_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31036) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37215); - var - _biO_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$94), - _biP_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_biO_), - _biQ_=caml_call1(Runtime_ocaml_Runtime[69],_biP_), - _biR_=caml_call1(Runtime_ocaml_Runtime[31],cst_6179), - _biS_=caml_call2(Runtime_ocaml_Runtime[104],_biR_,_biQ_), - _biT_=caml_call1(Runtime_ocaml_Runtime[31],cst_43394); - return caml_call2(Runtime_ocaml_Runtime[93],_biT_,_biS_)}} - function _bip_(param$0) - {switch(type_pret[0]) - {case 0:var _biq_=0;break; - case 1:var _biq_=1;break; - case 2:var _biq_=0;break; - case 3:var _biq_=0;break; - default:var _biq_=0} - var - _bir_=0 === anciennete_logement[0]?1:0, - _bis_=caml_call2(Runtime_ocaml_Runtime[83],_bir_,_biq_), - _bit_=caml_call3(Runtime_ocaml_Runtime[57],2019,9,30), - _biu_=caml_call2(Runtime_ocaml_Runtime[129],param,_bit_), - _biv_=caml_call2(Runtime_ocaml_Runtime[83],_biu_,_bis_), - _biw_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bix_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_biw_), - _biy_=caml_call2(Runtime_ocaml_Runtime[83],_bix_,_biv_); - return caml_call2(Runtime_ocaml_Runtime[29],_w2_,_biy_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_w3_,[0],_bip_,_bio_)} - function _aZ2_(param$0) - {function _bhR_(param) - {switch(zone[0]) - {case 0: - var _bh5_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$167); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bh5_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29897) - :caml_call1(Runtime_ocaml_Runtime[31],cst_36079); - var - _bh6_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$95), - _bh7_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bh6_), - _bh8_=caml_call1(Runtime_ocaml_Runtime[69],_bh7_), - _bh9_=caml_call1(Runtime_ocaml_Runtime[31],cst_6182), - _bh__=caml_call2(Runtime_ocaml_Runtime[104],_bh9_,_bh8_), - _bh$_=caml_call1(Runtime_ocaml_Runtime[31],cst_42260); - return caml_call2(Runtime_ocaml_Runtime[93],_bh$_,_bh__); - case 1: - var _bia_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$168); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bia_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26650) - :caml_call1(Runtime_ocaml_Runtime[31],cst_32097); - var - _bib_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$96), - _bic_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bib_), - _bid_=caml_call1(Runtime_ocaml_Runtime[69],_bic_), - _bie_=caml_call1(Runtime_ocaml_Runtime[31],cst_5447), - _bif_=caml_call2(Runtime_ocaml_Runtime[104],_bie_,_bid_), - _big_=caml_call1(Runtime_ocaml_Runtime[31],cst_37543); - return caml_call2(Runtime_ocaml_Runtime[93],_big_,_bif_); - default: - var _bih_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$169); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bih_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24889) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29858); - var - _bii_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$97), - _bij_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bii_), - _bik_=caml_call1(Runtime_ocaml_Runtime[69],_bij_), - _bil_=caml_call1(Runtime_ocaml_Runtime[31],cst_4971), - _bim_=caml_call2(Runtime_ocaml_Runtime[104],_bil_,_bik_), - _bin_=caml_call1(Runtime_ocaml_Runtime[31],cst_34829); - return caml_call2(Runtime_ocaml_Runtime[93],_bin_,_bim_)}} - function _bhS_(param$0) - {switch(type_pret[0]) - {case 0:var _bhT_=0;break; - case 1:var _bhT_=1;break; - case 2:var _bhT_=0;break; - case 3:var _bhT_=0;break; - default:var _bhT_=0} - var - _bhU_=0 === anciennete_logement[0]?0:1, - _bhV_=caml_call2(Runtime_ocaml_Runtime[83],_bhU_,_bhT_), - _bhW_=caml_call3(Runtime_ocaml_Runtime[57],2019,9,30), - _bhX_=caml_call2(Runtime_ocaml_Runtime[114],param,_bhW_), - _bhY_=caml_call2(Runtime_ocaml_Runtime[83],_bhX_,_bhV_), - _bhZ_=caml_call3(Runtime_ocaml_Runtime[57],2017,9,30), - _bh0_=caml_call2(Runtime_ocaml_Runtime[129],param,_bhZ_), - _bh1_=caml_call2(Runtime_ocaml_Runtime[83],_bh0_,_bhY_), - _bh2_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bh3_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bh2_), - _bh4_=caml_call2(Runtime_ocaml_Runtime[83],_bh3_,_bh1_); - return caml_call2(Runtime_ocaml_Runtime[29],_w4_,_bh4_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_w5_,[0],_bhS_,_bhR_)} - function _aZ3_(param$0) - {function _bhi_(param) - {switch(zone[0]) - {case 0: - var _bhw_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$170); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bhw_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_37140) - :caml_call1(Runtime_ocaml_Runtime[31],cst_44807); - var - _bhx_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$98), - _bhy_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bhx_), - _bhz_=caml_call1(Runtime_ocaml_Runtime[69],_bhy_), - _bhA_=caml_call1(Runtime_ocaml_Runtime[31],cst_7664), - _bhB_=caml_call2(Runtime_ocaml_Runtime[104],_bhA_,_bhz_), - _bhC_=caml_call1(Runtime_ocaml_Runtime[31],cst_52472); - return caml_call2(Runtime_ocaml_Runtime[93],_bhC_,_bhB_); - case 1: - var _bhD_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$171); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bhD_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_33145) - :caml_call1(Runtime_ocaml_Runtime[31],cst_39893); - var - _bhE_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$99), - _bhF_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bhE_), - _bhG_=caml_call1(Runtime_ocaml_Runtime[69],_bhF_), - _bhH_=caml_call1(Runtime_ocaml_Runtime[31],cst_6748), - _bhI_=caml_call2(Runtime_ocaml_Runtime[104],_bhH_,_bhG_), - _bhJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_46643); - return caml_call2(Runtime_ocaml_Runtime[93],_bhJ_,_bhI_); - default: - var _bhK_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$172); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bhK_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_30943) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37103); - var - _bhL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$100), - _bhM_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bhL_), - _bhN_=caml_call1(Runtime_ocaml_Runtime[69],_bhM_), - _bhO_=caml_call1(Runtime_ocaml_Runtime[31],cst_6161), - _bhP_=caml_call2(Runtime_ocaml_Runtime[104],_bhO_,_bhN_), - _bhQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_43264); - return caml_call2(Runtime_ocaml_Runtime[93],_bhQ_,_bhP_)}} - function _bhj_(param$0) - {switch(type_pret[0]) - {case 0:var _bhk_=0;break; - case 1:var _bhk_=1;break; - case 2:var _bhk_=0;break; - case 3:var _bhk_=0;break; - default:var _bhk_=0} - var - _bhl_=0 === anciennete_logement[0]?1:0, - _bhm_=caml_call2(Runtime_ocaml_Runtime[83],_bhl_,_bhk_), - _bhn_=caml_call3(Runtime_ocaml_Runtime[57],2019,9,30), - _bho_=caml_call2(Runtime_ocaml_Runtime[114],param,_bhn_), - _bhp_=caml_call2(Runtime_ocaml_Runtime[83],_bho_,_bhm_), - _bhq_=caml_call3(Runtime_ocaml_Runtime[57],2017,9,30), - _bhr_=caml_call2(Runtime_ocaml_Runtime[129],param,_bhq_), - _bhs_=caml_call2(Runtime_ocaml_Runtime[83],_bhr_,_bhp_), - _bht_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bhu_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bht_), - _bhv_=caml_call2(Runtime_ocaml_Runtime[83],_bhu_,_bhs_); - return caml_call2(Runtime_ocaml_Runtime[29],_w6_,_bhv_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_w7_,[0],_bhj_,_bhi_)} - function _aZ4_(param$0) - {function _bgL_(param) - {switch(zone[0]) - {case 0: - var _bgZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$173); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bgZ_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29674) - :caml_call1(Runtime_ocaml_Runtime[31],cst_35810); - var - _bg0_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$101), - _bg1_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bg0_), - _bg2_=caml_call1(Runtime_ocaml_Runtime[69],_bg1_), - _bg3_=caml_call1(Runtime_ocaml_Runtime[31],cst_6136), - _bg4_=caml_call2(Runtime_ocaml_Runtime[104],_bg3_,_bg2_), - _bg5_=caml_call1(Runtime_ocaml_Runtime[31],cst_41945); - return caml_call2(Runtime_ocaml_Runtime[93],_bg5_,_bg4_); - case 1: - var _bg6_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$174); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bg6_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26452) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31858); - var - _bg7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$102), - _bg8_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bg7_), - _bg9_=caml_call1(Runtime_ocaml_Runtime[69],_bg8_), - _bg__=caml_call1(Runtime_ocaml_Runtime[31],cst_5406), - _bg$_=caml_call2(Runtime_ocaml_Runtime[104],_bg__,_bg9_), - _bha_=caml_call1(Runtime_ocaml_Runtime[31],cst_37264); - return caml_call2(Runtime_ocaml_Runtime[93],_bha_,_bg$_); - default: - var _bhb_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$175); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bhb_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24704) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29636); - var - _bhc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$103), - _bhd_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bhc_), - _bhe_=caml_call1(Runtime_ocaml_Runtime[69],_bhd_), - _bhf_=caml_call1(Runtime_ocaml_Runtime[31],cst_4934), - _bhg_=caml_call2(Runtime_ocaml_Runtime[104],_bhf_,_bhe_), - _bhh_=caml_call1(Runtime_ocaml_Runtime[31],cst_34570); - return caml_call2(Runtime_ocaml_Runtime[93],_bhh_,_bhg_)}} - function _bgM_(param$0) - {switch(type_pret[0]) - {case 0:var _bgN_=0;break; - case 1:var _bgN_=1;break; - case 2:var _bgN_=0;break; - case 3:var _bgN_=0;break; - default:var _bgN_=0} - var - _bgO_=0 === anciennete_logement[0]?0:1, - _bgP_=caml_call2(Runtime_ocaml_Runtime[83],_bgO_,_bgN_), - _bgQ_=caml_call3(Runtime_ocaml_Runtime[57],2017,9,30), - _bgR_=caml_call2(Runtime_ocaml_Runtime[114],param,_bgQ_), - _bgS_=caml_call2(Runtime_ocaml_Runtime[83],_bgR_,_bgP_), - _bgT_=caml_call3(Runtime_ocaml_Runtime[57],2015,9,30), - _bgU_=caml_call2(Runtime_ocaml_Runtime[129],param,_bgT_), - _bgV_=caml_call2(Runtime_ocaml_Runtime[83],_bgU_,_bgS_), - _bgW_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bgX_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bgW_), - _bgY_=caml_call2(Runtime_ocaml_Runtime[83],_bgX_,_bgV_); - return caml_call2(Runtime_ocaml_Runtime[29],_w8_,_bgY_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_w9_,[0],_bgM_,_bgL_)} - function _aZ5_(param$0) - {function _bgc_(param) - {switch(zone[0]) - {case 0: - var _bgq_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$176); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bgq_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_36864) - :caml_call1(Runtime_ocaml_Runtime[31],cst_44473); - var - _bgr_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$104), - _bgs_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bgr_), - _bgt_=caml_call1(Runtime_ocaml_Runtime[69],_bgs_), - _bgu_=caml_call1(Runtime_ocaml_Runtime[31],cst_7607), - _bgv_=caml_call2(Runtime_ocaml_Runtime[104],_bgu_,_bgt_), - _bgw_=caml_call1(Runtime_ocaml_Runtime[31],cst_52081); - return caml_call2(Runtime_ocaml_Runtime[93],_bgw_,_bgv_); - case 1: - var _bgx_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$177); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bgx_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_32898) - :caml_call1(Runtime_ocaml_Runtime[31],cst_39596); - var - _bgy_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$105), - _bgz_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bgy_), - _bgA_=caml_call1(Runtime_ocaml_Runtime[69],_bgz_), - _bgB_=caml_call1(Runtime_ocaml_Runtime[31],cst_6698), - _bgC_=caml_call2(Runtime_ocaml_Runtime[104],_bgB_,_bgA_), - _bgD_=caml_call1(Runtime_ocaml_Runtime[31],cst_46296); - return caml_call2(Runtime_ocaml_Runtime[93],_bgD_,_bgC_); - default: - var _bgE_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$178); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bgE_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_30713) - :caml_call1(Runtime_ocaml_Runtime[31],cst_36827); - var - _bgF_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$106), - _bgG_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bgF_), - _bgH_=caml_call1(Runtime_ocaml_Runtime[69],_bgG_), - _bgI_=caml_call1(Runtime_ocaml_Runtime[31],cst_6115), - _bgJ_=caml_call2(Runtime_ocaml_Runtime[104],_bgI_,_bgH_), - _bgK_=caml_call1(Runtime_ocaml_Runtime[31],cst_42942); - return caml_call2(Runtime_ocaml_Runtime[93],_bgK_,_bgJ_)}} - function _bgd_(param$0) - {switch(type_pret[0]) - {case 0:var _bge_=0;break; - case 1:var _bge_=1;break; - case 2:var _bge_=0;break; - case 3:var _bge_=0;break; - default:var _bge_=0} - var - _bgf_=0 === anciennete_logement[0]?1:0, - _bgg_=caml_call2(Runtime_ocaml_Runtime[83],_bgf_,_bge_), - _bgh_=caml_call3(Runtime_ocaml_Runtime[57],2017,9,30), - _bgi_=caml_call2(Runtime_ocaml_Runtime[114],param,_bgh_), - _bgj_=caml_call2(Runtime_ocaml_Runtime[83],_bgi_,_bgg_), - _bgk_=caml_call3(Runtime_ocaml_Runtime[57],2015,9,30), - _bgl_=caml_call2(Runtime_ocaml_Runtime[129],param,_bgk_), - _bgm_=caml_call2(Runtime_ocaml_Runtime[83],_bgl_,_bgj_), - _bgn_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bgo_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bgn_), - _bgp_=caml_call2(Runtime_ocaml_Runtime[83],_bgo_,_bgm_); - return caml_call2(Runtime_ocaml_Runtime[29],_w__,_bgp_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_w$_,[0],_bgd_,_bgc_)} - function _aZ6_(param$0) - {function _bfF_(param) - {switch(zone[0]) - {case 0: - var _bfT_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$179); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bfT_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29650) - :caml_call1(Runtime_ocaml_Runtime[31],cst_35781); - var - _bfU_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$107), - _bfV_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bfU_), - _bfW_=caml_call1(Runtime_ocaml_Runtime[69],_bfV_), - _bfX_=caml_call1(Runtime_ocaml_Runtime[31],cst_6131), - _bfY_=caml_call2(Runtime_ocaml_Runtime[104],_bfX_,_bfW_), - _bfZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_41911); - return caml_call2(Runtime_ocaml_Runtime[93],_bfZ_,_bfY_); - case 1: - var _bf0_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$180); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bf0_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26431) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31833); - var - _bf1_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$108), - _bf2_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bf1_), - _bf3_=caml_call1(Runtime_ocaml_Runtime[69],_bf2_), - _bf4_=caml_call1(Runtime_ocaml_Runtime[31],cst_5402), - _bf5_=caml_call2(Runtime_ocaml_Runtime[104],_bf4_,_bf3_), - _bf6_=caml_call1(Runtime_ocaml_Runtime[31],cst_37234); - return caml_call2(Runtime_ocaml_Runtime[93],_bf6_,_bf5_); - default: - var _bf7_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$181); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bf7_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24684) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29612); - var - _bf8_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$109), - _bf9_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bf8_), - _bf__=caml_call1(Runtime_ocaml_Runtime[69],_bf9_), - _bf$_=caml_call1(Runtime_ocaml_Runtime[31],cst_4930), - _bga_=caml_call2(Runtime_ocaml_Runtime[104],_bf$_,_bf__), - _bgb_=caml_call1(Runtime_ocaml_Runtime[31],cst_34542); - return caml_call2(Runtime_ocaml_Runtime[93],_bgb_,_bga_)}} - function _bfG_(param$0) - {switch(type_pret[0]) - {case 0:var _bfH_=0;break; - case 1:var _bfH_=1;break; - case 2:var _bfH_=0;break; - case 3:var _bfH_=0;break; - default:var _bfH_=0} - var - _bfI_=0 === anciennete_logement[0]?0:1, - _bfJ_=caml_call2(Runtime_ocaml_Runtime[83],_bfI_,_bfH_), - _bfK_=caml_call3(Runtime_ocaml_Runtime[57],2015,9,30), - _bfL_=caml_call2(Runtime_ocaml_Runtime[114],param,_bfK_), - _bfM_=caml_call2(Runtime_ocaml_Runtime[83],_bfL_,_bfJ_), - _bfN_=caml_call3(Runtime_ocaml_Runtime[57],2014,9,30), - _bfO_=caml_call2(Runtime_ocaml_Runtime[129],param,_bfN_), - _bfP_=caml_call2(Runtime_ocaml_Runtime[83],_bfO_,_bfM_), - _bfQ_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bfR_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bfQ_), - _bfS_=caml_call2(Runtime_ocaml_Runtime[83],_bfR_,_bfP_); - return caml_call2(Runtime_ocaml_Runtime[29],_xa_,_bfS_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xb_,[0],_bfG_,_bfF_)} - function _aZ7_(param$0) - {function _be8_(param) - {switch(zone[0]) - {case 0: - var _bfk_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$182); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bfk_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_36835) - :caml_call1(Runtime_ocaml_Runtime[31],cst_44437); - var - _bfl_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$110), - _bfm_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bfl_), - _bfn_=caml_call1(Runtime_ocaml_Runtime[69],_bfm_), - _bfo_=caml_call1(Runtime_ocaml_Runtime[31],cst_7601), - _bfp_=caml_call2(Runtime_ocaml_Runtime[104],_bfo_,_bfn_), - _bfq_=caml_call1(Runtime_ocaml_Runtime[31],cst_52039); - return caml_call2(Runtime_ocaml_Runtime[93],_bfq_,_bfp_); - case 1: - var _bfr_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$183); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bfr_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_32872) - :caml_call1(Runtime_ocaml_Runtime[31],cst_39564); - var - _bfs_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$111), - _bft_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bfs_), - _bfu_=caml_call1(Runtime_ocaml_Runtime[69],_bft_), - _bfv_=caml_call1(Runtime_ocaml_Runtime[31],cst_6693), - _bfw_=caml_call2(Runtime_ocaml_Runtime[104],_bfv_,_bfu_), - _bfx_=caml_call1(Runtime_ocaml_Runtime[31],cst_46259); - return caml_call2(Runtime_ocaml_Runtime[93],_bfx_,_bfw_); - default: - var _bfy_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$184); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bfy_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_30688) - :caml_call1(Runtime_ocaml_Runtime[31],cst_36798); - var - _bfz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$112), - _bfA_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bfz_), - _bfB_=caml_call1(Runtime_ocaml_Runtime[69],_bfA_), - _bfC_=caml_call1(Runtime_ocaml_Runtime[31],cst_6110), - _bfD_=caml_call2(Runtime_ocaml_Runtime[104],_bfC_,_bfB_), - _bfE_=caml_call1(Runtime_ocaml_Runtime[31],cst_42908); - return caml_call2(Runtime_ocaml_Runtime[93],_bfE_,_bfD_)}} - function _be9_(param$0) - {switch(type_pret[0]) - {case 0:var _be__=0;break; - case 1:var _be__=1;break; - case 2:var _be__=0;break; - case 3:var _be__=0;break; - default:var _be__=0} - var - _be$_=0 === anciennete_logement[0]?1:0, - _bfa_=caml_call2(Runtime_ocaml_Runtime[83],_be$_,_be__), - _bfb_=caml_call3(Runtime_ocaml_Runtime[57],2015,9,30), - _bfc_=caml_call2(Runtime_ocaml_Runtime[114],param,_bfb_), - _bfd_=caml_call2(Runtime_ocaml_Runtime[83],_bfc_,_bfa_), - _bfe_=caml_call3(Runtime_ocaml_Runtime[57],2014,9,30), - _bff_=caml_call2(Runtime_ocaml_Runtime[129],param,_bfe_), - _bfg_=caml_call2(Runtime_ocaml_Runtime[83],_bff_,_bfd_), - _bfh_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bfi_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bfh_), - _bfj_=caml_call2(Runtime_ocaml_Runtime[83],_bfi_,_bfg_); - return caml_call2(Runtime_ocaml_Runtime[29],_xc_,_bfj_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xd_,[0],_be9_,_be8_)} - function _aZ8_(param$0) - {function _bez_(param) - {switch(zone[0]) - {case 0: - var _beN_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$185); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_beN_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29482) - :caml_call1(Runtime_ocaml_Runtime[31],cst_35578); - var - _beO_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$113), - _beP_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_beO_), - _beQ_=caml_call1(Runtime_ocaml_Runtime[69],_beP_), - _beR_=caml_call1(Runtime_ocaml_Runtime[31],cst_6096), - _beS_=caml_call2(Runtime_ocaml_Runtime[104],_beR_,_beQ_), - _beT_=caml_call1(Runtime_ocaml_Runtime[31],cst_41673); - return caml_call2(Runtime_ocaml_Runtime[93],_beT_,_beS_); - case 1: - var _beU_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$186); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_beU_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26281) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31653); - var - _beV_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$114), - _beW_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_beV_), - _beX_=caml_call1(Runtime_ocaml_Runtime[69],_beW_), - _beY_=caml_call1(Runtime_ocaml_Runtime[31],cst_5371), - _beZ_=caml_call2(Runtime_ocaml_Runtime[104],_beY_,_beX_), - _be0_=caml_call1(Runtime_ocaml_Runtime[31],cst_37023); - return caml_call2(Runtime_ocaml_Runtime[93],_be0_,_beZ_); - default: - var _be1_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$187); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_be1_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24544) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29444); - var - _be2_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$115), - _be3_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_be2_), - _be4_=caml_call1(Runtime_ocaml_Runtime[69],_be3_), - _be5_=caml_call1(Runtime_ocaml_Runtime[31],cst_4902), - _be6_=caml_call2(Runtime_ocaml_Runtime[104],_be5_,_be4_), - _be7_=caml_call1(Runtime_ocaml_Runtime[31],cst_34346); - return caml_call2(Runtime_ocaml_Runtime[93],_be7_,_be6_)}} - function _beA_(param$0) - {switch(type_pret[0]) - {case 0:var _beB_=0;break; - case 1:var _beB_=1;break; - case 2:var _beB_=0;break; - case 3:var _beB_=0;break; - default:var _beB_=0} - var - _beC_=0 === anciennete_logement[0]?0:1, - _beD_=caml_call2(Runtime_ocaml_Runtime[83],_beC_,_beB_), - _beE_=caml_call3(Runtime_ocaml_Runtime[57],2014,9,30), - _beF_=caml_call2(Runtime_ocaml_Runtime[114],param,_beE_), - _beG_=caml_call2(Runtime_ocaml_Runtime[83],_beF_,_beD_), - _beH_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), - _beI_=caml_call2(Runtime_ocaml_Runtime[129],param,_beH_), - _beJ_=caml_call2(Runtime_ocaml_Runtime[83],_beI_,_beG_), - _beK_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _beL_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_beK_), - _beM_=caml_call2(Runtime_ocaml_Runtime[83],_beL_,_beJ_); - return caml_call2(Runtime_ocaml_Runtime[29],_xe_,_beM_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xf_,[0],_beA_,_bez_)} - function _aZ9_(param$0) - {function _bd2_(param) - {switch(zone[0]) - {case 0: - var _bee_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$188); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bee_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_36626) - :caml_call1(Runtime_ocaml_Runtime[31],cst_44185); - var - _bef_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$116), - _beg_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bef_), - _beh_=caml_call1(Runtime_ocaml_Runtime[69],_beg_), - _bei_=caml_call1(Runtime_ocaml_Runtime[31],cst_7558), - _bej_=caml_call2(Runtime_ocaml_Runtime[104],_bei_,_beh_), - _bek_=caml_call1(Runtime_ocaml_Runtime[31],cst_51744); - return caml_call2(Runtime_ocaml_Runtime[93],_bek_,_bej_); - case 1: - var _bel_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$189); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bel_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_32686) - :caml_call1(Runtime_ocaml_Runtime[31],cst_39340); - var - _bem_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$117), - _ben_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bem_), - _beo_=caml_call1(Runtime_ocaml_Runtime[69],_ben_), - _bep_=caml_call1(Runtime_ocaml_Runtime[31],cst_6655), - _beq_=caml_call2(Runtime_ocaml_Runtime[104],_bep_,_beo_), - _ber_=caml_call1(Runtime_ocaml_Runtime[31],cst_45997); - return caml_call2(Runtime_ocaml_Runtime[93],_ber_,_beq_); - default: - var _bes_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$190); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bes_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_30514) - :caml_call1(Runtime_ocaml_Runtime[31],cst_36589); - var - _bet_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$118), - _beu_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bet_), - _bev_=caml_call1(Runtime_ocaml_Runtime[69],_beu_), - _bew_=caml_call1(Runtime_ocaml_Runtime[31],cst_6075), - _bex_=caml_call2(Runtime_ocaml_Runtime[104],_bew_,_bev_), - _bey_=caml_call1(Runtime_ocaml_Runtime[31],cst_42665); - return caml_call2(Runtime_ocaml_Runtime[93],_bey_,_bex_)}} - function _bd3_(param$0) - {switch(type_pret[0]) - {case 0:var _bd4_=0;break; - case 1:var _bd4_=1;break; - case 2:var _bd4_=0;break; - case 3:var _bd4_=0;break; - default:var _bd4_=0} - var - _bd5_=0 === anciennete_logement[0]?1:0, - _bd6_=caml_call2(Runtime_ocaml_Runtime[83],_bd5_,_bd4_), - _bd7_=caml_call3(Runtime_ocaml_Runtime[57],2014,9,30), - _bd8_=caml_call2(Runtime_ocaml_Runtime[114],param,_bd7_), - _bd9_=caml_call2(Runtime_ocaml_Runtime[83],_bd8_,_bd6_), - _bd__=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), - _bd$_=caml_call2(Runtime_ocaml_Runtime[129],param,_bd__), - _bea_=caml_call2(Runtime_ocaml_Runtime[83],_bd$_,_bd9_), - _beb_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bec_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_beb_), - _bed_=caml_call2(Runtime_ocaml_Runtime[83],_bec_,_bea_); - return caml_call2(Runtime_ocaml_Runtime[29],_xg_,_bed_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xh_,[0],_bd3_,_bd2_)} - function _aZ__(param$0) - {function _bdt_(param) - {switch(zone[0]) - {case 0: - var _bdH_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$191); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bdH_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_28861) - :caml_call1(Runtime_ocaml_Runtime[31],cst_34829$0); - var - _bdI_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$119), - _bdJ_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bdI_), - _bdK_=caml_call1(Runtime_ocaml_Runtime[69],_bdJ_), - _bdL_=caml_call1(Runtime_ocaml_Runtime[31],cst_5968), - _bdM_=caml_call2(Runtime_ocaml_Runtime[104],_bdL_,_bdK_), - _bdN_=caml_call1(Runtime_ocaml_Runtime[31],cst_40796); - return caml_call2(Runtime_ocaml_Runtime[93],_bdN_,_bdM_); - case 1: - var _bdO_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$192); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bdO_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25728) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30987); - var - _bdP_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$120), - _bdQ_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bdP_), - _bdR_=caml_call1(Runtime_ocaml_Runtime[69],_bdQ_), - _bdS_=caml_call1(Runtime_ocaml_Runtime[31],cst_5258), - _bdT_=caml_call2(Runtime_ocaml_Runtime[104],_bdS_,_bdR_), - _bdU_=caml_call1(Runtime_ocaml_Runtime[31],cst_36244); - return caml_call2(Runtime_ocaml_Runtime[93],_bdU_,_bdT_); - default: - var _bdV_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$193); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bdV_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24027) - :caml_call1(Runtime_ocaml_Runtime[31],cst_28824); - var - _bdW_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$121), - _bdX_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bdW_), - _bdY_=caml_call1(Runtime_ocaml_Runtime[69],_bdX_), - _bdZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_4799), - _bd0_=caml_call2(Runtime_ocaml_Runtime[104],_bdZ_,_bdY_), - _bd1_=caml_call1(Runtime_ocaml_Runtime[31],cst_33623); - return caml_call2(Runtime_ocaml_Runtime[93],_bd1_,_bd0_)}} - function _bdu_(param$0) - {switch(type_pret[0]) - {case 0:var _bdv_=0;break; - case 1:var _bdv_=1;break; - case 2:var _bdv_=0;break; - case 3:var _bdv_=0;break; - default:var _bdv_=0} - var - _bdw_=0 === anciennete_logement[0]?0:1, - _bdx_=caml_call2(Runtime_ocaml_Runtime[83],_bdw_,_bdv_), - _bdy_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), - _bdz_=caml_call2(Runtime_ocaml_Runtime[114],param,_bdy_), - _bdA_=caml_call2(Runtime_ocaml_Runtime[83],_bdz_,_bdx_), - _bdB_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), - _bdC_=caml_call2(Runtime_ocaml_Runtime[129],param,_bdB_), - _bdD_=caml_call2(Runtime_ocaml_Runtime[83],_bdC_,_bdA_), - _bdE_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bdF_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bdE_), - _bdG_=caml_call2(Runtime_ocaml_Runtime[83],_bdF_,_bdD_); - return caml_call2(Runtime_ocaml_Runtime[29],_xi_,_bdG_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xj_,[0],_bdu_,_bdt_)} - function _aZ$_(param$0) - {function _bcW_(param) - {switch(zone[0]) - {case 0: - var _bc__=caml_call1(Runtime_ocaml_Runtime[46],cst_0$194); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bc__)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_35855) - :caml_call1(Runtime_ocaml_Runtime[31],cst_43255); - var - _bc$_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$122), - _bda_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bc$_), - _bdb_=caml_call1(Runtime_ocaml_Runtime[69],_bda_), - _bdc_=caml_call1(Runtime_ocaml_Runtime[31],cst_7399), - _bdd_=caml_call2(Runtime_ocaml_Runtime[104],_bdc_,_bdb_), - _bde_=caml_call1(Runtime_ocaml_Runtime[31],cst_50655); - return caml_call2(Runtime_ocaml_Runtime[93],_bde_,_bdd_); - case 1: - var _bdf_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$195); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bdf_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31998) - :caml_call1(Runtime_ocaml_Runtime[31],cst_38512); - var - _bdg_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$123), - _bdh_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bdg_), - _bdi_=caml_call1(Runtime_ocaml_Runtime[69],_bdh_), - _bdj_=caml_call1(Runtime_ocaml_Runtime[31],cst_6515), - _bdk_=caml_call2(Runtime_ocaml_Runtime[104],_bdj_,_bdi_), - _bdl_=caml_call1(Runtime_ocaml_Runtime[31],cst_45029); - return caml_call2(Runtime_ocaml_Runtime[93],_bdl_,_bdk_); - default: - var _bdm_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$196); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bdm_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29872) - :caml_call1(Runtime_ocaml_Runtime[31],cst_35819); - var - _bdn_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$124), - _bdo_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bdn_), - _bdp_=caml_call1(Runtime_ocaml_Runtime[69],_bdo_), - _bdq_=caml_call1(Runtime_ocaml_Runtime[31],cst_5947), - _bdr_=caml_call2(Runtime_ocaml_Runtime[104],_bdq_,_bdp_), - _bds_=caml_call1(Runtime_ocaml_Runtime[31],cst_41767); - return caml_call2(Runtime_ocaml_Runtime[93],_bds_,_bdr_)}} - function _bcX_(param$0) - {switch(type_pret[0]) - {case 0:var _bcY_=0;break; - case 1:var _bcY_=1;break; - case 2:var _bcY_=0;break; - case 3:var _bcY_=0;break; - default:var _bcY_=0} - var - _bcZ_=0 === anciennete_logement[0]?1:0, - _bc0_=caml_call2(Runtime_ocaml_Runtime[83],_bcZ_,_bcY_), - _bc1_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), - _bc2_=caml_call2(Runtime_ocaml_Runtime[114],param,_bc1_), - _bc3_=caml_call2(Runtime_ocaml_Runtime[83],_bc2_,_bc0_), - _bc4_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), - _bc5_=caml_call2(Runtime_ocaml_Runtime[129],param,_bc4_), - _bc6_=caml_call2(Runtime_ocaml_Runtime[83],_bc5_,_bc3_), - _bc7_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bc8_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bc7_), - _bc9_=caml_call2(Runtime_ocaml_Runtime[83],_bc8_,_bc6_); - return caml_call2(Runtime_ocaml_Runtime[29],_xk_,_bc9_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xl_,[0],_bcX_,_bcW_)} - function _a0a_(param$0) - {function _bcn_(param) - {switch(zone[0]) - {case 0: - var _bcB_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$197); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bcB_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_28575) - :caml_call1(Runtime_ocaml_Runtime[31],cst_34484); - var - _bcC_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$125), - _bcD_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bcC_), - _bcE_=caml_call1(Runtime_ocaml_Runtime[69],_bcD_), - _bcF_=caml_call1(Runtime_ocaml_Runtime[31],cst_5909), - _bcG_=caml_call2(Runtime_ocaml_Runtime[104],_bcF_,_bcE_), - _bcH_=caml_call1(Runtime_ocaml_Runtime[31],cst_40392); - return caml_call2(Runtime_ocaml_Runtime[93],_bcH_,_bcG_); - case 1: - var _bcI_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$198); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bcI_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25473) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30680); - var - _bcJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$126), - _bcK_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bcJ_), - _bcL_=caml_call1(Runtime_ocaml_Runtime[69],_bcK_), - _bcM_=caml_call1(Runtime_ocaml_Runtime[31],cst_5206), - _bcN_=caml_call2(Runtime_ocaml_Runtime[104],_bcM_,_bcL_), - _bcO_=caml_call1(Runtime_ocaml_Runtime[31],cst_35885); - return caml_call2(Runtime_ocaml_Runtime[93],_bcO_,_bcN_); - default: - var _bcP_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$199); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bcP_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23789) - :caml_call1(Runtime_ocaml_Runtime[31],cst_28539); - var - _bcQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$127), - _bcR_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bcQ_), - _bcS_=caml_call1(Runtime_ocaml_Runtime[69],_bcR_), - _bcT_=caml_call1(Runtime_ocaml_Runtime[31],cst_4751), - _bcU_=caml_call2(Runtime_ocaml_Runtime[104],_bcT_,_bcS_), - _bcV_=caml_call1(Runtime_ocaml_Runtime[31],cst_33290); - return caml_call2(Runtime_ocaml_Runtime[93],_bcV_,_bcU_)}} - function _bco_(param$0) - {switch(type_pret[0]) - {case 0:var _bcp_=0;break; - case 1:var _bcp_=1;break; - case 2:var _bcp_=0;break; - case 3:var _bcp_=0;break; - default:var _bcp_=0} - var - _bcq_=0 === anciennete_logement[0]?0:1, - _bcr_=caml_call2(Runtime_ocaml_Runtime[83],_bcq_,_bcp_), - _bcs_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), - _bct_=caml_call2(Runtime_ocaml_Runtime[114],param,_bcs_), - _bcu_=caml_call2(Runtime_ocaml_Runtime[83],_bct_,_bcr_), - _bcv_=caml_call3(Runtime_ocaml_Runtime[57],2010,12,31), - _bcw_=caml_call2(Runtime_ocaml_Runtime[129],param,_bcv_), - _bcx_=caml_call2(Runtime_ocaml_Runtime[83],_bcw_,_bcu_), - _bcy_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bcz_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bcy_), - _bcA_=caml_call2(Runtime_ocaml_Runtime[83],_bcz_,_bcx_); - return caml_call2(Runtime_ocaml_Runtime[29],_xm_,_bcA_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xn_,[0],_bco_,_bcn_)} - function _a0b_(param$0) - {function _bbQ_(param) - {switch(zone[0]) - {case 0: - var _bb4_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$200); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bb4_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_35500) - :caml_call1(Runtime_ocaml_Runtime[31],cst_42827); - var - _bb5_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$128), - _bb6_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bb5_), - _bb7_=caml_call1(Runtime_ocaml_Runtime[69],_bb6_), - _bb8_=caml_call1(Runtime_ocaml_Runtime[31],cst_7326), - _bb9_=caml_call2(Runtime_ocaml_Runtime[104],_bb8_,_bb7_), - _bb__=caml_call1(Runtime_ocaml_Runtime[31],cst_50153); - return caml_call2(Runtime_ocaml_Runtime[93],_bb__,_bb9_); - case 1: - var _bb$_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$201); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bb$_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31681) - :caml_call1(Runtime_ocaml_Runtime[31],cst_38131); - var - _bca_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$129), - _bcb_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bca_), - _bcc_=caml_call1(Runtime_ocaml_Runtime[69],_bcb_), - _bcd_=caml_call1(Runtime_ocaml_Runtime[31],cst_6450), - _bce_=caml_call2(Runtime_ocaml_Runtime[104],_bcd_,_bcc_), - _bcf_=caml_call1(Runtime_ocaml_Runtime[31],cst_44583); - return caml_call2(Runtime_ocaml_Runtime[93],_bcf_,_bce_); - default: - var _bcg_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$202); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bcg_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29576) - :caml_call1(Runtime_ocaml_Runtime[31],cst_35464); - var - _bch_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$130), - _bci_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bch_), - _bcj_=caml_call1(Runtime_ocaml_Runtime[69],_bci_), - _bck_=caml_call1(Runtime_ocaml_Runtime[31],cst_5888), - _bcl_=caml_call2(Runtime_ocaml_Runtime[104],_bck_,_bcj_), - _bcm_=caml_call1(Runtime_ocaml_Runtime[31],cst_41353); - return caml_call2(Runtime_ocaml_Runtime[93],_bcm_,_bcl_)}} - function _bbR_(param$0) - {switch(type_pret[0]) - {case 0:var _bbS_=0;break; - case 1:var _bbS_=1;break; - case 2:var _bbS_=0;break; - case 3:var _bbS_=0;break; - default:var _bbS_=0} - var - _bbT_=0 === anciennete_logement[0]?1:0, - _bbU_=caml_call2(Runtime_ocaml_Runtime[83],_bbT_,_bbS_), - _bbV_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), - _bbW_=caml_call2(Runtime_ocaml_Runtime[114],param,_bbV_), - _bbX_=caml_call2(Runtime_ocaml_Runtime[83],_bbW_,_bbU_), - _bbY_=caml_call3(Runtime_ocaml_Runtime[57],2010,12,31), - _bbZ_=caml_call2(Runtime_ocaml_Runtime[129],param,_bbY_), - _bb0_=caml_call2(Runtime_ocaml_Runtime[83],_bbZ_,_bbX_), - _bb1_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bb2_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bb1_), - _bb3_=caml_call2(Runtime_ocaml_Runtime[83],_bb2_,_bb0_); - return caml_call2(Runtime_ocaml_Runtime[29],_xo_,_bb3_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xp_,[0],_bbR_,_bbQ_)} - function _a0c_(param$0) - {function _bbh_(param) - {switch(zone[0]) - {case 0: - var _bbv_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$203); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bbv_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_28264) - :caml_call1(Runtime_ocaml_Runtime[31],cst_34109); - var - _bbw_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$131), - _bbx_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bbw_), - _bby_=caml_call1(Runtime_ocaml_Runtime[69],_bbx_), - _bbz_=caml_call1(Runtime_ocaml_Runtime[31],cst_5845), - _bbA_=caml_call2(Runtime_ocaml_Runtime[104],_bbz_,_bby_), - _bbB_=caml_call1(Runtime_ocaml_Runtime[31],cst_39953); - return caml_call2(Runtime_ocaml_Runtime[93],_bbB_,_bbA_); - case 1: - var _bbC_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$204); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bbC_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25196) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30346); - var - _bbD_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$132), - _bbE_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bbD_), - _bbF_=caml_call1(Runtime_ocaml_Runtime[69],_bbE_), - _bbG_=caml_call1(Runtime_ocaml_Runtime[31],cst_5149), - _bbH_=caml_call2(Runtime_ocaml_Runtime[104],_bbG_,_bbF_), - _bbI_=caml_call1(Runtime_ocaml_Runtime[31],cst_35495); - return caml_call2(Runtime_ocaml_Runtime[93],_bbI_,_bbH_); - default: - var _bbJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$205); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bbJ_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23530) - :caml_call1(Runtime_ocaml_Runtime[31],cst_28228); - var - _bbK_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$133), - _bbL_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bbK_), - _bbM_=caml_call1(Runtime_ocaml_Runtime[69],_bbL_), - _bbN_=caml_call1(Runtime_ocaml_Runtime[31],cst_4699), - _bbO_=caml_call2(Runtime_ocaml_Runtime[104],_bbN_,_bbM_), - _bbP_=caml_call1(Runtime_ocaml_Runtime[31],cst_32928); - return caml_call2(Runtime_ocaml_Runtime[93],_bbP_,_bbO_)}} - function _bbi_(param$0) - {switch(type_pret[0]) - {case 0:var _bbj_=0;break; - case 1:var _bbj_=1;break; - case 2:var _bbj_=0;break; - case 3:var _bbj_=0;break; - default:var _bbj_=0} - var - _bbk_=0 === anciennete_logement[0]?0:1, - _bbl_=caml_call2(Runtime_ocaml_Runtime[83],_bbk_,_bbj_), - _bbm_=caml_call3(Runtime_ocaml_Runtime[57],2010,12,31), - _bbn_=caml_call2(Runtime_ocaml_Runtime[114],param,_bbm_), - _bbo_=caml_call2(Runtime_ocaml_Runtime[83],_bbn_,_bbl_), - _bbp_=caml_call3(Runtime_ocaml_Runtime[57],2009,12,31), - _bbq_=caml_call2(Runtime_ocaml_Runtime[129],param,_bbp_), - _bbr_=caml_call2(Runtime_ocaml_Runtime[83],_bbq_,_bbo_), - _bbs_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _bbt_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bbs_), - _bbu_=caml_call2(Runtime_ocaml_Runtime[83],_bbt_,_bbr_); - return caml_call2(Runtime_ocaml_Runtime[29],_xq_,_bbu_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xr_,[0],_bbi_,_bbh_)} - function _a0d_(param$0) - {function _baK_(param) - {switch(zone[0]) - {case 0: - var _baY_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$206); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_baY_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_35114) - :caml_call1(Runtime_ocaml_Runtime[31],cst_42361); - var - _baZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$134), - _ba0_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_baZ_), - _ba1_=caml_call1(Runtime_ocaml_Runtime[69],_ba0_), - _ba2_=caml_call1(Runtime_ocaml_Runtime[31],cst_7246), - _ba3_=caml_call2(Runtime_ocaml_Runtime[104],_ba2_,_ba1_), - _ba4_=caml_call1(Runtime_ocaml_Runtime[31],cst_49607); - return caml_call2(Runtime_ocaml_Runtime[93],_ba4_,_ba3_); - case 1: - var _ba5_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$207); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ba5_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31336) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37716); - var - _ba6_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$135), - _ba7_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_ba6_), - _ba8_=caml_call1(Runtime_ocaml_Runtime[69],_ba7_), - _ba9_=caml_call1(Runtime_ocaml_Runtime[31],cst_6380), - _ba__=caml_call2(Runtime_ocaml_Runtime[104],_ba9_,_ba8_), - _ba$_=caml_call1(Runtime_ocaml_Runtime[31],cst_44098); - return caml_call2(Runtime_ocaml_Runtime[93],_ba$_,_ba__); - default: - var _bba_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$208); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bba_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29254) - :caml_call1(Runtime_ocaml_Runtime[31],cst_35078); - var - _bbb_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$136), - _bbc_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bbb_), - _bbd_=caml_call1(Runtime_ocaml_Runtime[69],_bbc_), - _bbe_=caml_call1(Runtime_ocaml_Runtime[31],cst_5824), - _bbf_=caml_call2(Runtime_ocaml_Runtime[104],_bbe_,_bbd_), - _bbg_=caml_call1(Runtime_ocaml_Runtime[31],cst_40903); - return caml_call2(Runtime_ocaml_Runtime[93],_bbg_,_bbf_)}} - function _baL_(param$0) - {switch(type_pret[0]) - {case 0:var _baM_=0;break; - case 1:var _baM_=1;break; - case 2:var _baM_=0;break; - case 3:var _baM_=0;break; - default:var _baM_=0} - var - _baN_=0 === anciennete_logement[0]?1:0, - _baO_=caml_call2(Runtime_ocaml_Runtime[83],_baN_,_baM_), - _baP_=caml_call3(Runtime_ocaml_Runtime[57],2010,12,31), - _baQ_=caml_call2(Runtime_ocaml_Runtime[114],param,_baP_), - _baR_=caml_call2(Runtime_ocaml_Runtime[83],_baQ_,_baO_), - _baS_=caml_call3(Runtime_ocaml_Runtime[57],2009,12,31), - _baT_=caml_call2(Runtime_ocaml_Runtime[129],param,_baS_), - _baU_=caml_call2(Runtime_ocaml_Runtime[83],_baT_,_baR_), - _baV_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _baW_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_baV_), - _baX_=caml_call2(Runtime_ocaml_Runtime[83],_baW_,_baU_); - return caml_call2(Runtime_ocaml_Runtime[29],_xs_,_baX_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xt_,[0],_baL_,_baK_)} - function _a0e_(param$0) - {function _bab_(param) - {switch(zone[0]) - {case 0: - var _bap_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$209); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bap_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_28174) - :caml_call1(Runtime_ocaml_Runtime[31],cst_34000); - var - _baq_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$137), - _bar_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_baq_), - _bas_=caml_call1(Runtime_ocaml_Runtime[69],_bar_), - _bat_=caml_call1(Runtime_ocaml_Runtime[31],cst_5826), - _bau_=caml_call2(Runtime_ocaml_Runtime[104],_bat_,_bas_), - _bav_=caml_call1(Runtime_ocaml_Runtime[31],cst_39826); - return caml_call2(Runtime_ocaml_Runtime[93],_bav_,_bau_); - case 1: - var _baw_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$210); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_baw_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25116) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30249); - var - _bax_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$138), - _bay_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bax_), - _baz_=caml_call1(Runtime_ocaml_Runtime[69],_bay_), - _baA_=caml_call1(Runtime_ocaml_Runtime[31],cst_5133), - _baB_=caml_call2(Runtime_ocaml_Runtime[104],_baA_,_baz_), - _baC_=caml_call1(Runtime_ocaml_Runtime[31],cst_35382); - return caml_call2(Runtime_ocaml_Runtime[93],_baC_,_baB_); - default: - var _baD_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$211); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_baD_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23455) - :caml_call1(Runtime_ocaml_Runtime[31],cst_28138); - var - _baE_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$139), - _baF_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_baE_), - _baG_=caml_call1(Runtime_ocaml_Runtime[69],_baF_), - _baH_=caml_call1(Runtime_ocaml_Runtime[31],cst_4684), - _baI_=caml_call2(Runtime_ocaml_Runtime[104],_baH_,_baG_), - _baJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_32823); - return caml_call2(Runtime_ocaml_Runtime[93],_baJ_,_baI_)}} - function _bac_(param$0) - {switch(type_pret[0]) - {case 0:var _bad_=0;break; - case 1:var _bad_=1;break; - case 2:var _bad_=0;break; - case 3:var _bad_=0;break; - default:var _bad_=0} - var - _bae_=0 === anciennete_logement[0]?0:1, - _baf_=caml_call2(Runtime_ocaml_Runtime[83],_bae_,_bad_), - _bag_=caml_call3(Runtime_ocaml_Runtime[57],2009,12,31), - _bah_=caml_call2(Runtime_ocaml_Runtime[114],param,_bag_), - _bai_=caml_call2(Runtime_ocaml_Runtime[83],_bah_,_baf_), - _baj_=caml_call3(Runtime_ocaml_Runtime[57],2008,12,31), - _bak_=caml_call2(Runtime_ocaml_Runtime[129],param,_baj_), - _bal_=caml_call2(Runtime_ocaml_Runtime[83],_bak_,_bai_), - _bam_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _ban_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_bam_), - _bao_=caml_call2(Runtime_ocaml_Runtime[83],_ban_,_bal_); - return caml_call2(Runtime_ocaml_Runtime[29],_xu_,_bao_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xv_,[0],_bac_,_bab_)} - function _a0f_(param$0) - {function _a$E_(param) - {switch(zone[0]) - {case 0: - var _a$S_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$212); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a$S_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_35002) - :caml_call1(Runtime_ocaml_Runtime[31],cst_42226); - var - _a$T_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$140), - _a$U_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a$T_), - _a$V_=caml_call1(Runtime_ocaml_Runtime[69],_a$U_), - _a$W_=caml_call1(Runtime_ocaml_Runtime[31],cst_7223), - _a$X_=caml_call2(Runtime_ocaml_Runtime[104],_a$W_,_a$V_), - _a$Y_=caml_call1(Runtime_ocaml_Runtime[31],cst_49449); - return caml_call2(Runtime_ocaml_Runtime[93],_a$Y_,_a$X_); - case 1: - var _a$Z_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$213); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a$Z_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31236) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37596); - var - _a$0_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$141), - _a$1_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a$0_), - _a$2_=caml_call1(Runtime_ocaml_Runtime[69],_a$1_), - _a$3_=caml_call1(Runtime_ocaml_Runtime[31],cst_6360), - _a$4_=caml_call2(Runtime_ocaml_Runtime[104],_a$3_,_a$2_), - _a$5_=caml_call1(Runtime_ocaml_Runtime[31],cst_43957); - return caml_call2(Runtime_ocaml_Runtime[93],_a$5_,_a$4_); - default: - var _a$6_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$214); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a$6_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29161) - :caml_call1(Runtime_ocaml_Runtime[31],cst_34966); - var - _a$7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$142), - _a$8_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a$7_), - _a$9_=caml_call1(Runtime_ocaml_Runtime[69],_a$8_), - _a$__=caml_call1(Runtime_ocaml_Runtime[31],cst_5805), - _a$$_=caml_call2(Runtime_ocaml_Runtime[104],_a$__,_a$9_), - _baa_=caml_call1(Runtime_ocaml_Runtime[31],cst_40773); - return caml_call2(Runtime_ocaml_Runtime[93],_baa_,_a$$_)}} - function _a$F_(param$0) - {switch(type_pret[0]) - {case 0:var _a$G_=0;break; - case 1:var _a$G_=1;break; - case 2:var _a$G_=0;break; - case 3:var _a$G_=0;break; - default:var _a$G_=0} - var - _a$H_=0 === anciennete_logement[0]?1:0, - _a$I_=caml_call2(Runtime_ocaml_Runtime[83],_a$H_,_a$G_), - _a$J_=caml_call3(Runtime_ocaml_Runtime[57],2009,12,31), - _a$K_=caml_call2(Runtime_ocaml_Runtime[114],param,_a$J_), - _a$L_=caml_call2(Runtime_ocaml_Runtime[83],_a$K_,_a$I_), - _a$M_=caml_call3(Runtime_ocaml_Runtime[57],2008,12,31), - _a$N_=caml_call2(Runtime_ocaml_Runtime[129],param,_a$M_), - _a$O_=caml_call2(Runtime_ocaml_Runtime[83],_a$N_,_a$L_), - _a$P_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a$Q_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a$P_), - _a$R_=caml_call2(Runtime_ocaml_Runtime[83],_a$Q_,_a$O_); - return caml_call2(Runtime_ocaml_Runtime[29],_xw_,_a$R_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xx_,[0],_a$F_,_a$E_)} - function _a0g_(param$0) - {function _a_7_(param) - {switch(zone[0]) - {case 0: - var _a$j_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$215); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a$j_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27367) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33026); - var - _a$k_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$143), - _a$l_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a$k_), - _a$m_=caml_call1(Runtime_ocaml_Runtime[69],_a$l_), - _a$n_=caml_call1(Runtime_ocaml_Runtime[31],cst_5659), - _a$o_=caml_call2(Runtime_ocaml_Runtime[104],_a$n_,_a$m_), - _a$p_=caml_call1(Runtime_ocaml_Runtime[31],cst_38685); - return caml_call2(Runtime_ocaml_Runtime[93],_a$p_,_a$o_); - case 1: - var _a$q_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$216); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a$q_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24396) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29382); - var - _a$r_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$144), - _a$s_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a$r_), - _a$t_=caml_call1(Runtime_ocaml_Runtime[69],_a$s_), - _a$u_=caml_call1(Runtime_ocaml_Runtime[31],cst_4986$0), - _a$v_=caml_call2(Runtime_ocaml_Runtime[104],_a$u_,_a$t_), - _a$w_=caml_call1(Runtime_ocaml_Runtime[31],cst_34368); - return caml_call2(Runtime_ocaml_Runtime[93],_a$w_,_a$v_); - default: - var _a$x_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$217); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a$x_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_22783) - :caml_call1(Runtime_ocaml_Runtime[31],cst_27332); - var - _a$y_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$145), - _a$z_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a$y_), - _a$A_=caml_call1(Runtime_ocaml_Runtime[69],_a$z_), - _a$B_=caml_call1(Runtime_ocaml_Runtime[31],cst_4550), - _a$C_=caml_call2(Runtime_ocaml_Runtime[104],_a$B_,_a$A_), - _a$D_=caml_call1(Runtime_ocaml_Runtime[31],cst_31882); - return caml_call2(Runtime_ocaml_Runtime[93],_a$D_,_a$C_)}} - function _a_8_(param$0) - {switch(type_pret[0]) - {case 0:var _a_9_=0;break; - case 1:var _a_9_=1;break; - case 2:var _a_9_=0;break; - case 3:var _a_9_=0;break; - default:var _a_9_=0} - var - _a___=0 === anciennete_logement[0]?0:1, - _a_$_=caml_call2(Runtime_ocaml_Runtime[83],_a___,_a_9_), - _a$a_=caml_call3(Runtime_ocaml_Runtime[57],2008,12,31), - _a$b_=caml_call2(Runtime_ocaml_Runtime[114],param,_a$a_), - _a$c_=caml_call2(Runtime_ocaml_Runtime[83],_a$b_,_a_$_), - _a$d_=caml_call3(Runtime_ocaml_Runtime[57],2007,12,31), - _a$e_=caml_call2(Runtime_ocaml_Runtime[129],param,_a$d_), - _a$f_=caml_call2(Runtime_ocaml_Runtime[83],_a$e_,_a$c_), - _a$g_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a$h_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a$g_), - _a$i_=caml_call2(Runtime_ocaml_Runtime[83],_a$h_,_a$f_); - return caml_call2(Runtime_ocaml_Runtime[29],_xy_,_a$i_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xz_,[0],_a_8_,_a_7_)} - function _a0h_(param$0) - {function _a_y_(param) - {switch(zone[0]) - {case 0: - var _a_M_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$218); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a_M_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_33999) - :caml_call1(Runtime_ocaml_Runtime[31],cst_41016); - var - _a_N_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$146), - _a_O_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a_N_), - _a_P_=caml_call1(Runtime_ocaml_Runtime[69],_a_O_), - _a_Q_=caml_call1(Runtime_ocaml_Runtime[31],cst_7016), - _a_R_=caml_call2(Runtime_ocaml_Runtime[104],_a_Q_,_a_P_), - _a_S_=caml_call1(Runtime_ocaml_Runtime[31],cst_48032); - return caml_call2(Runtime_ocaml_Runtime[93],_a_S_,_a_R_); - case 1: - var _a_T_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$219); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a_T_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_30341) - :caml_call1(Runtime_ocaml_Runtime[31],cst_36519); - var - _a_U_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$147), - _a_V_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a_U_), - _a_W_=caml_call1(Runtime_ocaml_Runtime[69],_a_V_), - _a_X_=caml_call1(Runtime_ocaml_Runtime[31],cst_6178), - _a_Y_=caml_call2(Runtime_ocaml_Runtime[104],_a_X_,_a_W_), - _a_Z_=caml_call1(Runtime_ocaml_Runtime[31],cst_42697); - return caml_call2(Runtime_ocaml_Runtime[93],_a_Z_,_a_Y_); - default: - var _a_0_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$220); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a_0_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_28325) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33964); - var - _a_1_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$148), - _a_2_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a_1_), - _a_3_=caml_call1(Runtime_ocaml_Runtime[69],_a_2_), - _a_4_=caml_call1(Runtime_ocaml_Runtime[31],cst_5639), - _a_5_=caml_call2(Runtime_ocaml_Runtime[104],_a_4_,_a_3_), - _a_6_=caml_call1(Runtime_ocaml_Runtime[31],cst_39605); - return caml_call2(Runtime_ocaml_Runtime[93],_a_6_,_a_5_)}} - function _a_z_(param$0) - {switch(type_pret[0]) - {case 0:var _a_A_=0;break; - case 1:var _a_A_=1;break; - case 2:var _a_A_=0;break; - case 3:var _a_A_=0;break; - default:var _a_A_=0} - var - _a_B_=0 === anciennete_logement[0]?1:0, - _a_C_=caml_call2(Runtime_ocaml_Runtime[83],_a_B_,_a_A_), - _a_D_=caml_call3(Runtime_ocaml_Runtime[57],2008,12,31), - _a_E_=caml_call2(Runtime_ocaml_Runtime[114],param,_a_D_), - _a_F_=caml_call2(Runtime_ocaml_Runtime[83],_a_E_,_a_C_), - _a_G_=caml_call3(Runtime_ocaml_Runtime[57],2007,12,31), - _a_H_=caml_call2(Runtime_ocaml_Runtime[129],param,_a_G_), - _a_I_=caml_call2(Runtime_ocaml_Runtime[83],_a_H_,_a_F_), - _a_J_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a_K_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a_J_), - _a_L_=caml_call2(Runtime_ocaml_Runtime[83],_a_K_,_a_I_); - return caml_call2(Runtime_ocaml_Runtime[29],_xA_,_a_L_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xB_,[0],_a_z_,_a_y_)} - function _a0i_(param$0) - {function _a91_(param) - {switch(zone[0]) - {case 0: - var _a_d_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$221); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a_d_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26632) - :caml_call1(Runtime_ocaml_Runtime[31],cst_32139); - var - _a_e_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$149), - _a_f_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a_e_), - _a_g_=caml_call1(Runtime_ocaml_Runtime[69],_a_f_), - _a_h_=caml_call1(Runtime_ocaml_Runtime[31],cst_5507), - _a_i_=caml_call2(Runtime_ocaml_Runtime[104],_a_h_,_a_g_), - _a_j_=caml_call1(Runtime_ocaml_Runtime[31],cst_37646); - return caml_call2(Runtime_ocaml_Runtime[93],_a_j_,_a_i_); - case 1: - var _a_k_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$222); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a_k_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23741) - :caml_call1(Runtime_ocaml_Runtime[31],cst_28593); - var - _a_l_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$150), - _a_m_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a_l_), - _a_n_=caml_call1(Runtime_ocaml_Runtime[69],_a_m_), - _a_o_=caml_call1(Runtime_ocaml_Runtime[31],cst_4852), - _a_p_=caml_call2(Runtime_ocaml_Runtime[104],_a_o_,_a_n_), - _a_q_=caml_call1(Runtime_ocaml_Runtime[31],cst_33445); - return caml_call2(Runtime_ocaml_Runtime[93],_a_q_,_a_p_); - default: - var _a_r_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$223); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a_r_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_22171) - :caml_call1(Runtime_ocaml_Runtime[31],cst_36598); - var - _a_s_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$151), - _a_t_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a_s_), - _a_u_=caml_call1(Runtime_ocaml_Runtime[69],_a_t_), - _a_v_=caml_call1(Runtime_ocaml_Runtime[31],cst_4428), - _a_w_=caml_call2(Runtime_ocaml_Runtime[104],_a_v_,_a_u_), - _a_x_=caml_call1(Runtime_ocaml_Runtime[31],cst_31026); - return caml_call2(Runtime_ocaml_Runtime[93],_a_x_,_a_w_)}} - function _a92_(param$0) - {switch(type_pret[0]) - {case 0:var _a93_=0;break; - case 1:var _a93_=1;break; - case 2:var _a93_=0;break; - case 3:var _a93_=0;break; - default:var _a93_=0} - var - _a94_=0 === anciennete_logement[0]?0:1, - _a95_=caml_call2(Runtime_ocaml_Runtime[83],_a94_,_a93_), - _a96_=caml_call3(Runtime_ocaml_Runtime[57],2007,12,31), - _a97_=caml_call2(Runtime_ocaml_Runtime[114],param,_a96_), - _a98_=caml_call2(Runtime_ocaml_Runtime[83],_a97_,_a95_), - _a99_=caml_call3(Runtime_ocaml_Runtime[57],2006,12,31), - _a9__=caml_call2(Runtime_ocaml_Runtime[129],param,_a99_), - _a9$_=caml_call2(Runtime_ocaml_Runtime[83],_a9__,_a98_), - _a_a_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a_b_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a_a_), - _a_c_=caml_call2(Runtime_ocaml_Runtime[83],_a_b_,_a9$_); - return caml_call2(Runtime_ocaml_Runtime[29],_xC_,_a_c_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xD_,[0],_a92_,_a91_)} - function _a0j_(param$0) - {function _a9s_(param) - {switch(zone[0]) - {case 0: - var _a9G_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$224); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a9G_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_33086) - :caml_call1(Runtime_ocaml_Runtime[31],cst_39914); - var - _a9H_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$152), - _a9I_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a9H_), - _a9J_=caml_call1(Runtime_ocaml_Runtime[69],_a9I_), - _a9K_=caml_call1(Runtime_ocaml_Runtime[31],cst_6828), - _a9L_=caml_call2(Runtime_ocaml_Runtime[104],_a9K_,_a9J_), - _a9M_=caml_call1(Runtime_ocaml_Runtime[31],cst_46742); - return caml_call2(Runtime_ocaml_Runtime[93],_a9M_,_a9L_); - case 1: - var _a9N_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$225); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a9N_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29526) - :caml_call1(Runtime_ocaml_Runtime[31],cst_35538); - var - _a9O_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$153), - _a9P_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a9O_), - _a9Q_=caml_call1(Runtime_ocaml_Runtime[69],_a9P_), - _a9R_=caml_call1(Runtime_ocaml_Runtime[31],cst_6012), - _a9S_=caml_call2(Runtime_ocaml_Runtime[104],_a9R_,_a9Q_), - _a9T_=caml_call1(Runtime_ocaml_Runtime[31],cst_41550); - return caml_call2(Runtime_ocaml_Runtime[93],_a9T_,_a9S_); - default: - var _a9U_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$226); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a9U_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27564) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33052); - var - _a9V_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$154), - _a9W_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a9V_), - _a9X_=caml_call1(Runtime_ocaml_Runtime[69],_a9W_), - _a9Y_=caml_call1(Runtime_ocaml_Runtime[31],cst_5488), - _a9Z_=caml_call2(Runtime_ocaml_Runtime[104],_a9Y_,_a9X_), - _a90_=caml_call1(Runtime_ocaml_Runtime[31],cst_38541); - return caml_call2(Runtime_ocaml_Runtime[93],_a90_,_a9Z_)}} - function _a9t_(param$0) - {switch(type_pret[0]) - {case 0:var _a9u_=0;break; - case 1:var _a9u_=1;break; - case 2:var _a9u_=0;break; - case 3:var _a9u_=0;break; - default:var _a9u_=0} - var - _a9v_=0 === anciennete_logement[0]?1:0, - _a9w_=caml_call2(Runtime_ocaml_Runtime[83],_a9v_,_a9u_), - _a9x_=caml_call3(Runtime_ocaml_Runtime[57],2007,12,31), - _a9y_=caml_call2(Runtime_ocaml_Runtime[114],param,_a9x_), - _a9z_=caml_call2(Runtime_ocaml_Runtime[83],_a9y_,_a9w_), - _a9A_=caml_call3(Runtime_ocaml_Runtime[57],2006,12,31), - _a9B_=caml_call2(Runtime_ocaml_Runtime[129],param,_a9A_), - _a9C_=caml_call2(Runtime_ocaml_Runtime[83],_a9B_,_a9z_), - _a9D_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a9E_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a9D_), - _a9F_=caml_call2(Runtime_ocaml_Runtime[83],_a9E_,_a9C_); - return caml_call2(Runtime_ocaml_Runtime[29],_xE_,_a9F_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xF_,[0],_a9t_,_a9s_)} - function _a0k_(param$0) - {function _a8V_(param) - {switch(zone[0]) - {case 0: - var _a89_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$227); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a89_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25907) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31264); - var - _a8__=caml_call1(Runtime_ocaml_Runtime[46],cst_1$155), - _a8$_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a8__), - _a9a_=caml_call1(Runtime_ocaml_Runtime[69],_a8$_), - _a9b_=caml_call1(Runtime_ocaml_Runtime[31],cst_5357), - _a9c_=caml_call2(Runtime_ocaml_Runtime[104],_a9b_,_a9a_), - _a9d_=caml_call1(Runtime_ocaml_Runtime[31],cst_36621); - return caml_call2(Runtime_ocaml_Runtime[93],_a9d_,_a9c_); - case 1: - var _a9e_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$228); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a9e_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23094) - :caml_call1(Runtime_ocaml_Runtime[31],cst_27814); - var - _a9f_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$156), - _a9g_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a9f_), - _a9h_=caml_call1(Runtime_ocaml_Runtime[69],_a9g_), - _a9i_=caml_call1(Runtime_ocaml_Runtime[31],cst_4720), - _a9j_=caml_call2(Runtime_ocaml_Runtime[104],_a9i_,_a9h_), - _a9k_=caml_call1(Runtime_ocaml_Runtime[31],cst_32534); - return caml_call2(Runtime_ocaml_Runtime[93],_a9k_,_a9j_); - default: - var _a9l_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$229); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a9l_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_21567) - :caml_call1(Runtime_ocaml_Runtime[31],cst_25874); - var - _a9m_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$157), - _a9n_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a9m_), - _a9o_=caml_call1(Runtime_ocaml_Runtime[69],_a9n_), - _a9p_=caml_call1(Runtime_ocaml_Runtime[31],cst_4307), - _a9q_=caml_call2(Runtime_ocaml_Runtime[104],_a9p_,_a9o_), - _a9r_=caml_call1(Runtime_ocaml_Runtime[31],cst_30181); - return caml_call2(Runtime_ocaml_Runtime[93],_a9r_,_a9q_)}} - function _a8W_(param$0) - {switch(type_pret[0]) - {case 0:var _a8X_=0;break; - case 1:var _a8X_=1;break; - case 2:var _a8X_=0;break; - case 3:var _a8X_=0;break; - default:var _a8X_=0} - var - _a8Y_=0 === anciennete_logement[0]?0:1, - _a8Z_=caml_call2(Runtime_ocaml_Runtime[83],_a8Y_,_a8X_), - _a80_=caml_call3(Runtime_ocaml_Runtime[57],2006,12,31), - _a81_=caml_call2(Runtime_ocaml_Runtime[114],param,_a80_), - _a82_=caml_call2(Runtime_ocaml_Runtime[83],_a81_,_a8Z_), - _a83_=caml_call3(Runtime_ocaml_Runtime[57],2005,8,31), - _a84_=caml_call2(Runtime_ocaml_Runtime[129],param,_a83_), - _a85_=caml_call2(Runtime_ocaml_Runtime[83],_a84_,_a82_), - _a86_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a87_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a86_), - _a88_=caml_call2(Runtime_ocaml_Runtime[83],_a87_,_a85_); - return caml_call2(Runtime_ocaml_Runtime[29],_xG_,_a88_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xH_,[0],_a8W_,_a8V_)} - function _a0l_(param$0) - {function _a8m_(param) - {switch(zone[0]) - {case 0: - var _a8A_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$230); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a8A_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_32185) - :caml_call1(Runtime_ocaml_Runtime[31],cst_38827); - var - _a8B_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$158), - _a8C_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a8B_), - _a8D_=caml_call1(Runtime_ocaml_Runtime[69],_a8C_), - _a8E_=caml_call1(Runtime_ocaml_Runtime[31],cst_6642), - _a8F_=caml_call2(Runtime_ocaml_Runtime[104],_a8E_,_a8D_), - _a8G_=caml_call1(Runtime_ocaml_Runtime[31],cst_45469); - return caml_call2(Runtime_ocaml_Runtime[93],_a8G_,_a8F_); - case 1: - var _a8H_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$231); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a8H_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_28722) - :caml_call1(Runtime_ocaml_Runtime[31],cst_34570$0); - var - _a8I_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$159), - _a8J_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a8I_), - _a8K_=caml_call1(Runtime_ocaml_Runtime[69],_a8J_), - _a8L_=caml_call1(Runtime_ocaml_Runtime[31],cst_5848), - _a8M_=caml_call2(Runtime_ocaml_Runtime[104],_a8L_,_a8K_), - _a8N_=caml_call1(Runtime_ocaml_Runtime[31],cst_40418); - return caml_call2(Runtime_ocaml_Runtime[93],_a8N_,_a8M_); - default: - var _a8O_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$232); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a8O_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26813) - :caml_call1(Runtime_ocaml_Runtime[31],cst_32152); - var - _a8P_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$160), - _a8Q_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a8P_), - _a8R_=caml_call1(Runtime_ocaml_Runtime[69],_a8Q_), - _a8S_=caml_call1(Runtime_ocaml_Runtime[31],cst_5339), - _a8T_=caml_call2(Runtime_ocaml_Runtime[104],_a8S_,_a8R_), - _a8U_=caml_call1(Runtime_ocaml_Runtime[31],cst_37491); - return caml_call2(Runtime_ocaml_Runtime[93],_a8U_,_a8T_)}} - function _a8n_(param$0) - {switch(type_pret[0]) - {case 0:var _a8o_=0;break; - case 1:var _a8o_=1;break; - case 2:var _a8o_=0;break; - case 3:var _a8o_=0;break; - default:var _a8o_=0} - var - _a8p_=0 === anciennete_logement[0]?1:0, - _a8q_=caml_call2(Runtime_ocaml_Runtime[83],_a8p_,_a8o_), - _a8r_=caml_call3(Runtime_ocaml_Runtime[57],2006,12,31), - _a8s_=caml_call2(Runtime_ocaml_Runtime[114],param,_a8r_), - _a8t_=caml_call2(Runtime_ocaml_Runtime[83],_a8s_,_a8q_), - _a8u_=caml_call3(Runtime_ocaml_Runtime[57],2005,8,31), - _a8v_=caml_call2(Runtime_ocaml_Runtime[129],param,_a8u_), - _a8w_=caml_call2(Runtime_ocaml_Runtime[83],_a8v_,_a8t_), - _a8x_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a8y_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a8x_), - _a8z_=caml_call2(Runtime_ocaml_Runtime[83],_a8y_,_a8w_); - return caml_call2(Runtime_ocaml_Runtime[29],_xI_,_a8z_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xJ_,[0],_a8n_,_a8m_)} - function _a0m_(param$0) - {function _a7P_(param) - {switch(zone[0]) - {case 0: - var _a73_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$233); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a73_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25449) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30711); - var - _a74_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$161), - _a75_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a74_), - _a76_=caml_call1(Runtime_ocaml_Runtime[69],_a75_), - _a77_=caml_call1(Runtime_ocaml_Runtime[31],cst_5262), - _a78_=caml_call2(Runtime_ocaml_Runtime[104],_a77_,_a76_), - _a79_=caml_call1(Runtime_ocaml_Runtime[31],cst_35973); - return caml_call2(Runtime_ocaml_Runtime[93],_a79_,_a78_); - case 1: - var _a7__=caml_call1(Runtime_ocaml_Runtime[46],cst_0$234); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a7__)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_22686) - :caml_call1(Runtime_ocaml_Runtime[31],cst_27323); - var - _a7$_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$162), - _a8a_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a7$_), - _a8b_=caml_call1(Runtime_ocaml_Runtime[69],_a8a_), - _a8c_=caml_call1(Runtime_ocaml_Runtime[31],cst_4637), - _a8d_=caml_call2(Runtime_ocaml_Runtime[104],_a8c_,_a8b_), - _a8e_=caml_call1(Runtime_ocaml_Runtime[31],cst_31960); - return caml_call2(Runtime_ocaml_Runtime[93],_a8e_,_a8d_); - default: - var _a8f_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$235); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a8f_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_21186) - :caml_call1(Runtime_ocaml_Runtime[31],cst_25417); - var - _a8g_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$163), - _a8h_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a8g_), - _a8i_=caml_call1(Runtime_ocaml_Runtime[69],_a8h_), - _a8j_=caml_call1(Runtime_ocaml_Runtime[31],cst_4231), - _a8k_=caml_call2(Runtime_ocaml_Runtime[104],_a8j_,_a8i_), - _a8l_=caml_call1(Runtime_ocaml_Runtime[31],cst_29648); - return caml_call2(Runtime_ocaml_Runtime[93],_a8l_,_a8k_)}} - function _a7Q_(param$0) - {switch(type_pret[0]) - {case 0:var _a7R_=0;break; - case 1:var _a7R_=1;break; - case 2:var _a7R_=0;break; - case 3:var _a7R_=0;break; - default:var _a7R_=0} - var - _a7S_=0 === anciennete_logement[0]?0:1, - _a7T_=caml_call2(Runtime_ocaml_Runtime[83],_a7S_,_a7R_), - _a7U_=caml_call3(Runtime_ocaml_Runtime[57],2005,8,31), - _a7V_=caml_call2(Runtime_ocaml_Runtime[114],param,_a7U_), - _a7W_=caml_call2(Runtime_ocaml_Runtime[83],_a7V_,_a7T_), - _a7X_=caml_call3(Runtime_ocaml_Runtime[57],2003,6,30), - _a7Y_=caml_call2(Runtime_ocaml_Runtime[129],param,_a7X_), - _a7Z_=caml_call2(Runtime_ocaml_Runtime[83],_a7Y_,_a7W_), - _a70_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a71_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a70_), - _a72_=caml_call2(Runtime_ocaml_Runtime[83],_a71_,_a7Z_); - return caml_call2(Runtime_ocaml_Runtime[29],_xK_,_a72_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xL_,[0],_a7Q_,_a7P_)} - function _a0n_(param$0) - {function _a7g_(param) - {switch(zone[0]) - {case 0: - var _a7u_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$236); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a7u_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31616) - :caml_call1(Runtime_ocaml_Runtime[31],cst_38141); - var - _a7v_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$164), - _a7w_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a7v_), - _a7x_=caml_call1(Runtime_ocaml_Runtime[69],_a7w_), - _a7y_=caml_call1(Runtime_ocaml_Runtime[31],cst_6525), - _a7z_=caml_call2(Runtime_ocaml_Runtime[104],_a7y_,_a7x_), - _a7A_=caml_call1(Runtime_ocaml_Runtime[31],cst_44666); - return caml_call2(Runtime_ocaml_Runtime[93],_a7A_,_a7z_); - case 1: - var _a7B_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$237); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a7B_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_28214) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33959); - var - _a7C_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$165), - _a7D_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a7C_), - _a7E_=caml_call1(Runtime_ocaml_Runtime[69],_a7D_), - _a7F_=caml_call1(Runtime_ocaml_Runtime[31],cst_5745), - _a7G_=caml_call2(Runtime_ocaml_Runtime[104],_a7F_,_a7E_), - _a7H_=caml_call1(Runtime_ocaml_Runtime[31],cst_39704); - return caml_call2(Runtime_ocaml_Runtime[93],_a7H_,_a7G_); - default: - var _a7I_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$238); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a7I_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26339) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31584); - var - _a7J_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$166), - _a7K_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a7J_), - _a7L_=caml_call1(Runtime_ocaml_Runtime[69],_a7K_), - _a7M_=caml_call1(Runtime_ocaml_Runtime[31],cst_5245), - _a7N_=caml_call2(Runtime_ocaml_Runtime[104],_a7M_,_a7L_), - _a7O_=caml_call1(Runtime_ocaml_Runtime[31],cst_36829); - return caml_call2(Runtime_ocaml_Runtime[93],_a7O_,_a7N_)}} - function _a7h_(param$0) - {switch(type_pret[0]) - {case 0:var _a7i_=0;break; - case 1:var _a7i_=1;break; - case 2:var _a7i_=0;break; - case 3:var _a7i_=0;break; - default:var _a7i_=0} - var - _a7j_=0 === anciennete_logement[0]?1:0, - _a7k_=caml_call2(Runtime_ocaml_Runtime[83],_a7j_,_a7i_), - _a7l_=caml_call3(Runtime_ocaml_Runtime[57],2005,8,31), - _a7m_=caml_call2(Runtime_ocaml_Runtime[114],param,_a7l_), - _a7n_=caml_call2(Runtime_ocaml_Runtime[83],_a7m_,_a7k_), - _a7o_=caml_call3(Runtime_ocaml_Runtime[57],2003,6,30), - _a7p_=caml_call2(Runtime_ocaml_Runtime[129],param,_a7o_), - _a7q_=caml_call2(Runtime_ocaml_Runtime[83],_a7p_,_a7n_), - _a7r_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a7s_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a7r_), - _a7t_=caml_call2(Runtime_ocaml_Runtime[83],_a7s_,_a7q_); - return caml_call2(Runtime_ocaml_Runtime[29],_xM_,_a7t_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xN_,[0],_a7h_,_a7g_)} - function _a0o_(param$0) - {function _a6J_(param) - {switch(zone[0]) - {case 0: - var _a6X_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$239); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a6X_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25147) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30347); - var - _a6Y_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$167), - _a6Z_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a6Y_), - _a60_=caml_call1(Runtime_ocaml_Runtime[69],_a6Z_), - _a61_=caml_call1(Runtime_ocaml_Runtime[31],cst_5200), - _a62_=caml_call2(Runtime_ocaml_Runtime[104],_a61_,_a60_), - _a63_=caml_call1(Runtime_ocaml_Runtime[31],cst_35547); - return caml_call2(Runtime_ocaml_Runtime[93],_a63_,_a62_); - case 1: - var _a64_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$240); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a64_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_22417) - :caml_call1(Runtime_ocaml_Runtime[31],cst_26999); - var - _a65_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$168), - _a66_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a65_), - _a67_=caml_call1(Runtime_ocaml_Runtime[69],_a66_), - _a68_=caml_call1(Runtime_ocaml_Runtime[31],cst_4582), - _a69_=caml_call2(Runtime_ocaml_Runtime[104],_a68_,_a67_), - _a6__=caml_call1(Runtime_ocaml_Runtime[31],cst_31581); - return caml_call2(Runtime_ocaml_Runtime[93],_a6__,_a69_); - default: - var _a6$_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$241); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a6$_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_20935) - :caml_call1(Runtime_ocaml_Runtime[31],cst_25116$0); - var - _a7a_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$169), - _a7b_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a7a_), - _a7c_=caml_call1(Runtime_ocaml_Runtime[69],_a7b_), - _a7d_=caml_call1(Runtime_ocaml_Runtime[31],cst_4181), - _a7e_=caml_call2(Runtime_ocaml_Runtime[104],_a7d_,_a7c_), - _a7f_=caml_call1(Runtime_ocaml_Runtime[31],cst_29297); - return caml_call2(Runtime_ocaml_Runtime[93],_a7f_,_a7e_)}} - function _a6K_(param$0) - {switch(type_pret[0]) - {case 0:var _a6L_=0;break; - case 1:var _a6L_=1;break; - case 2:var _a6L_=0;break; - case 3:var _a6L_=0;break; - default:var _a6L_=0} - var - _a6M_=0 === anciennete_logement[0]?0:1, - _a6N_=caml_call2(Runtime_ocaml_Runtime[83],_a6M_,_a6L_), - _a6O_=caml_call3(Runtime_ocaml_Runtime[57],2003,6,30), - _a6P_=caml_call2(Runtime_ocaml_Runtime[114],param,_a6O_), - _a6Q_=caml_call2(Runtime_ocaml_Runtime[83],_a6P_,_a6N_), - _a6R_=caml_call3(Runtime_ocaml_Runtime[57],2002,6,30), - _a6S_=caml_call2(Runtime_ocaml_Runtime[129],param,_a6R_), - _a6T_=caml_call2(Runtime_ocaml_Runtime[83],_a6S_,_a6Q_), - _a6U_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a6V_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a6U_), - _a6W_=caml_call2(Runtime_ocaml_Runtime[83],_a6V_,_a6T_); - return caml_call2(Runtime_ocaml_Runtime[29],_xO_,_a6W_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xP_,[0],_a6K_,_a6J_)} - function _a0p_(param$0) - {function _a6a_(param) - {switch(zone[0]) - {case 0: - var _a6o_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$242); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a6o_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31241) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37689); - var - _a6p_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$170), - _a6q_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a6p_), - _a6r_=caml_call1(Runtime_ocaml_Runtime[69],_a6q_), - _a6s_=caml_call1(Runtime_ocaml_Runtime[31],cst_6448), - _a6t_=caml_call2(Runtime_ocaml_Runtime[104],_a6s_,_a6r_), - _a6u_=caml_call1(Runtime_ocaml_Runtime[31],cst_44137); - return caml_call2(Runtime_ocaml_Runtime[93],_a6u_,_a6t_); - case 1: - var _a6v_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$243); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a6v_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27879) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33556); - var - _a6w_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$171), - _a6x_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a6w_), - _a6y_=caml_call1(Runtime_ocaml_Runtime[69],_a6x_), - _a6z_=caml_call1(Runtime_ocaml_Runtime[31],cst_5677), - _a6A_=caml_call2(Runtime_ocaml_Runtime[104],_a6z_,_a6y_), - _a6B_=caml_call1(Runtime_ocaml_Runtime[31],cst_39233); - return caml_call2(Runtime_ocaml_Runtime[93],_a6B_,_a6A_); - default: - var _a6C_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$244); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a6C_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26027) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31210); - var - _a6D_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$172), - _a6E_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a6D_), - _a6F_=caml_call1(Runtime_ocaml_Runtime[69],_a6E_), - _a6G_=caml_call1(Runtime_ocaml_Runtime[31],cst_5183), - _a6H_=caml_call2(Runtime_ocaml_Runtime[104],_a6G_,_a6F_), - _a6I_=caml_call1(Runtime_ocaml_Runtime[31],cst_36393); - return caml_call2(Runtime_ocaml_Runtime[93],_a6I_,_a6H_)}} - function _a6b_(param$0) - {switch(type_pret[0]) - {case 0:var _a6c_=0;break; - case 1:var _a6c_=1;break; - case 2:var _a6c_=0;break; - case 3:var _a6c_=0;break; - default:var _a6c_=0} - var - _a6d_=0 === anciennete_logement[0]?1:0, - _a6e_=caml_call2(Runtime_ocaml_Runtime[83],_a6d_,_a6c_), - _a6f_=caml_call3(Runtime_ocaml_Runtime[57],2003,6,30), - _a6g_=caml_call2(Runtime_ocaml_Runtime[114],param,_a6f_), - _a6h_=caml_call2(Runtime_ocaml_Runtime[83],_a6g_,_a6e_), - _a6i_=caml_call3(Runtime_ocaml_Runtime[57],2002,6,30), - _a6j_=caml_call2(Runtime_ocaml_Runtime[129],param,_a6i_), - _a6k_=caml_call2(Runtime_ocaml_Runtime[83],_a6j_,_a6h_), - _a6l_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a6m_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a6l_), - _a6n_=caml_call2(Runtime_ocaml_Runtime[83],_a6m_,_a6k_); - return caml_call2(Runtime_ocaml_Runtime[29],_xQ_,_a6n_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xR_,[0],_a6b_,_a6a_)} - function _a0q_(param$0) - {function _a5D_(param) - {switch(zone[0]) - {case 0: - var _a5R_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$245); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a5R_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24849) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29987); - var - _a5S_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$173), - _a5T_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a5S_), - _a5U_=caml_call1(Runtime_ocaml_Runtime[69],_a5T_), - _a5V_=caml_call1(Runtime_ocaml_Runtime[31],cst_5138), - _a5W_=caml_call2(Runtime_ocaml_Runtime[104],_a5V_,_a5U_), - _a5X_=caml_call1(Runtime_ocaml_Runtime[31],cst_35125); - return caml_call2(Runtime_ocaml_Runtime[93],_a5X_,_a5W_); - case 1: - var _a5Y_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$246); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a5Y_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_22151) - :caml_call1(Runtime_ocaml_Runtime[31],cst_26679); - var - _a5Z_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$174), - _a50_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a5Z_), - _a51_=caml_call1(Runtime_ocaml_Runtime[69],_a50_), - _a52_=caml_call1(Runtime_ocaml_Runtime[31],cst_4528), - _a53_=caml_call2(Runtime_ocaml_Runtime[104],_a52_,_a51_), - _a54_=caml_call1(Runtime_ocaml_Runtime[31],cst_31207); - return caml_call2(Runtime_ocaml_Runtime[93],_a54_,_a53_); - default: - var _a55_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$247); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a55_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_20687) - :caml_call1(Runtime_ocaml_Runtime[31],cst_24818); - var - _a56_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$175), - _a57_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a56_), - _a58_=caml_call1(Runtime_ocaml_Runtime[69],_a57_), - _a59_=caml_call1(Runtime_ocaml_Runtime[31],cst_4131), - _a5__=caml_call2(Runtime_ocaml_Runtime[104],_a59_,_a58_), - _a5$_=caml_call1(Runtime_ocaml_Runtime[31],cst_28949); - return caml_call2(Runtime_ocaml_Runtime[93],_a5$_,_a5__)}} - function _a5E_(param$0) - {switch(type_pret[0]) - {case 0:var _a5F_=0;break; - case 1:var _a5F_=1;break; - case 2:var _a5F_=0;break; - case 3:var _a5F_=0;break; - default:var _a5F_=0} - var - _a5G_=0 === anciennete_logement[0]?0:1, - _a5H_=caml_call2(Runtime_ocaml_Runtime[83],_a5G_,_a5F_), - _a5I_=caml_call3(Runtime_ocaml_Runtime[57],2002,6,30), - _a5J_=caml_call2(Runtime_ocaml_Runtime[114],param,_a5I_), - _a5K_=caml_call2(Runtime_ocaml_Runtime[83],_a5J_,_a5H_), - _a5L_=caml_call3(Runtime_ocaml_Runtime[57],2002,1,1), - _a5M_=caml_call2(Runtime_ocaml_Runtime[129],param,_a5L_), - _a5N_=caml_call2(Runtime_ocaml_Runtime[83],_a5M_,_a5K_), - _a5O_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a5P_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a5O_), - _a5Q_=caml_call2(Runtime_ocaml_Runtime[83],_a5P_,_a5N_); - return caml_call2(Runtime_ocaml_Runtime[29],_xS_,_a5Q_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xT_,[0],_a5E_,_a5D_)} - function _a0r_(param$0) - {function _a45_(param) - {switch(zone[0]) - {case 0: - var _a5h_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$248); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a5h_)) - var - _a5i_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_163000) - :caml_call1(Runtime_ocaml_Runtime[31],cst_196700); - else - var - _a5j_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$176), - _a5k_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a5j_), - _a5l_=caml_call1(Runtime_ocaml_Runtime[69],_a5k_), - _a5m_=caml_call1(Runtime_ocaml_Runtime[31],cst_33700), - _a5n_=caml_call2(Runtime_ocaml_Runtime[104],_a5m_,_a5l_), - _a5o_=caml_call1(Runtime_ocaml_Runtime[31],cst_230400), - _a5i_=caml_call2(Runtime_ocaml_Runtime[93],_a5o_,_a5n_); - break; - case 1: - var _a5p_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$249); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a5p_)) - var - _a5i_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_145300) - :caml_call1(Runtime_ocaml_Runtime[31],cst_175000); - else - var - _a5q_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$177), - _a5r_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a5q_), - _a5s_=caml_call1(Runtime_ocaml_Runtime[69],_a5r_), - _a5t_=caml_call1(Runtime_ocaml_Runtime[31],cst_29700), - _a5u_=caml_call2(Runtime_ocaml_Runtime[104],_a5t_,_a5s_), - _a5v_=caml_call1(Runtime_ocaml_Runtime[31],cst_204700), - _a5i_=caml_call2(Runtime_ocaml_Runtime[93],_a5v_,_a5u_); - break; - default: - var _a5w_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$250); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a5w_)) - var - _a5i_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_135700) - :caml_call1(Runtime_ocaml_Runtime[31],cst_162800); - else - var - _a5x_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$178), - _a5y_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a5x_), - _a5z_=caml_call1(Runtime_ocaml_Runtime[69],_a5y_), - _a5A_=caml_call1(Runtime_ocaml_Runtime[31],cst_27100), - _a5B_=caml_call2(Runtime_ocaml_Runtime[104],_a5A_,_a5z_), - _a5C_=caml_call1(Runtime_ocaml_Runtime[31],cst_189900), - _a5i_=caml_call2(Runtime_ocaml_Runtime[93],_a5C_,_a5B_)} - return caml_call2 - (Runtime_ocaml_Runtime[104],_a5i_,taux_francs_vers_euros)} - function _a46_(param$0) - {switch(type_pret[0]) - {case 0:var _a47_=0;break; - case 1:var _a47_=1;break; - case 2:var _a47_=0;break; - case 3:var _a47_=0;break; - default:var _a47_=0} - var - _a48_=0 === anciennete_logement[0]?0:1, - _a49_=caml_call2(Runtime_ocaml_Runtime[83],_a48_,_a47_), - _a4__=caml_call3(Runtime_ocaml_Runtime[57],2001,12,31), - _a4$_=caml_call2(Runtime_ocaml_Runtime[114],param,_a4__), - _a5a_=caml_call2(Runtime_ocaml_Runtime[83],_a4$_,_a49_), - _a5b_=caml_call3(Runtime_ocaml_Runtime[57],2001,7,1), - _a5c_=caml_call2(Runtime_ocaml_Runtime[129],param,_a5b_), - _a5d_=caml_call2(Runtime_ocaml_Runtime[83],_a5c_,_a5a_), - _a5e_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a5f_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a5e_), - _a5g_=caml_call2(Runtime_ocaml_Runtime[83],_a5f_,_a5d_); - return caml_call2(Runtime_ocaml_Runtime[29],_xU_,_a5g_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xV_,[0],_a46_,_a45_)} - function _a0s_(param$0) - {function _a4w_(param) - {switch(zone[0]) - {case 0: - var _a4K_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$251); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a4K_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_30871) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37243); - var - _a4L_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$179), - _a4M_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a4L_), - _a4N_=caml_call1(Runtime_ocaml_Runtime[69],_a4M_), - _a4O_=caml_call1(Runtime_ocaml_Runtime[31],cst_6372), - _a4P_=caml_call2(Runtime_ocaml_Runtime[104],_a4O_,_a4N_), - _a4Q_=caml_call1(Runtime_ocaml_Runtime[31],cst_43615); - return caml_call2(Runtime_ocaml_Runtime[93],_a4Q_,_a4P_); - case 1: - var _a4R_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$252); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a4R_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27548) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33148); - var - _a4S_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$180), - _a4T_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a4S_), - _a4U_=caml_call1(Runtime_ocaml_Runtime[69],_a4T_), - _a4V_=caml_call1(Runtime_ocaml_Runtime[31],cst_5610), - _a4W_=caml_call2(Runtime_ocaml_Runtime[104],_a4V_,_a4U_), - _a4X_=caml_call1(Runtime_ocaml_Runtime[31],cst_38768); - return caml_call2(Runtime_ocaml_Runtime[93],_a4X_,_a4W_); - default: - var _a4Y_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$253); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a4Y_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25718) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30840); - var - _a4Z_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$181), - _a40_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a4Z_), - _a41_=caml_call1(Runtime_ocaml_Runtime[69],_a40_), - _a42_=caml_call1(Runtime_ocaml_Runtime[31],cst_5122), - _a43_=caml_call2(Runtime_ocaml_Runtime[104],_a42_,_a41_), - _a44_=caml_call1(Runtime_ocaml_Runtime[31],cst_35962); - return caml_call2(Runtime_ocaml_Runtime[93],_a44_,_a43_)}} - function _a4x_(param$0) - {switch(type_pret[0]) - {case 0:var _a4y_=0;break; - case 1:var _a4y_=1;break; - case 2:var _a4y_=0;break; - case 3:var _a4y_=0;break; - default:var _a4y_=0} - var - _a4z_=0 === anciennete_logement[0]?1:0, - _a4A_=caml_call2(Runtime_ocaml_Runtime[83],_a4z_,_a4y_), - _a4B_=caml_call3(Runtime_ocaml_Runtime[57],2002,6,30), - _a4C_=caml_call2(Runtime_ocaml_Runtime[114],param,_a4B_), - _a4D_=caml_call2(Runtime_ocaml_Runtime[83],_a4C_,_a4A_), - _a4E_=caml_call3(Runtime_ocaml_Runtime[57],2002,1,1), - _a4F_=caml_call2(Runtime_ocaml_Runtime[129],param,_a4E_), - _a4G_=caml_call2(Runtime_ocaml_Runtime[83],_a4F_,_a4D_), - _a4H_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a4I_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a4H_), - _a4J_=caml_call2(Runtime_ocaml_Runtime[83],_a4I_,_a4G_); - return caml_call2(Runtime_ocaml_Runtime[29],_xW_,_a4J_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xX_,[0],_a4x_,_a4w_)} - function _a0t_(param$0) - {function _a3Y_(param) - {switch(zone[0]) - {case 0: - var _a4a_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$254); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a4a_)) - var - _a4b_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_202500$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_244300); - else - var - _a4c_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$182), - _a4d_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a4c_), - _a4e_=caml_call1(Runtime_ocaml_Runtime[69],_a4d_), - _a4f_=caml_call1(Runtime_ocaml_Runtime[31],cst_41800), - _a4g_=caml_call2(Runtime_ocaml_Runtime[104],_a4f_,_a4e_), - _a4h_=caml_call1(Runtime_ocaml_Runtime[31],cst_286100), - _a4b_=caml_call2(Runtime_ocaml_Runtime[93],_a4h_,_a4g_); - break; - case 1: - var _a4i_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$255); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a4i_)) - var - _a4b_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_180700) - :caml_call1(Runtime_ocaml_Runtime[31],cst_217500); - else - var - _a4j_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$183), - _a4k_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a4j_), - _a4l_=caml_call1(Runtime_ocaml_Runtime[69],_a4k_), - _a4m_=caml_call1(Runtime_ocaml_Runtime[31],cst_36800), - _a4n_=caml_call2(Runtime_ocaml_Runtime[104],_a4m_,_a4l_), - _a4o_=caml_call1(Runtime_ocaml_Runtime[31],cst_254300), - _a4b_=caml_call2(Runtime_ocaml_Runtime[93],_a4o_,_a4n_); - break; - default: - var _a4p_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$256); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a4p_)) - var - _a4b_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_168700) - :caml_call1(Runtime_ocaml_Runtime[31],cst_202300); - else - var - _a4q_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$184), - _a4r_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a4q_), - _a4s_=caml_call1(Runtime_ocaml_Runtime[69],_a4r_), - _a4t_=caml_call1(Runtime_ocaml_Runtime[31],cst_33600), - _a4u_=caml_call2(Runtime_ocaml_Runtime[104],_a4t_,_a4s_), - _a4v_=caml_call1(Runtime_ocaml_Runtime[31],cst_235900), - _a4b_=caml_call2(Runtime_ocaml_Runtime[93],_a4v_,_a4u_)} - return caml_call2 - (Runtime_ocaml_Runtime[104],_a4b_,taux_francs_vers_euros)} - function _a3Z_(param$0) - {switch(type_pret[0]) - {case 0:var _a30_=0;break; - case 1:var _a30_=1;break; - case 2:var _a30_=0;break; - case 3:var _a30_=0;break; - default:var _a30_=0} - var - _a31_=0 === anciennete_logement[0]?1:0, - _a32_=caml_call2(Runtime_ocaml_Runtime[83],_a31_,_a30_), - _a33_=caml_call3(Runtime_ocaml_Runtime[57],2001,12,31), - _a34_=caml_call2(Runtime_ocaml_Runtime[114],param,_a33_), - _a35_=caml_call2(Runtime_ocaml_Runtime[83],_a34_,_a32_), - _a36_=caml_call3(Runtime_ocaml_Runtime[57],2001,7,1), - _a37_=caml_call2(Runtime_ocaml_Runtime[129],param,_a36_), - _a38_=caml_call2(Runtime_ocaml_Runtime[83],_a37_,_a35_), - _a39_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a3__= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a39_), - _a3$_=caml_call2(Runtime_ocaml_Runtime[83],_a3__,_a38_); - return caml_call2(Runtime_ocaml_Runtime[29],_xY_,_a3$_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_xZ_,[0],_a3Z_,_a3Y_)} - function _a0u_(param$0) - {function _a3o_(param) - {switch(zone[0]) - {case 0: - var _a3C_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$257); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a3C_)) - var - _a3D_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_161100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_194400); - else - var - _a3E_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$185), - _a3F_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a3E_), - _a3G_=caml_call1(Runtime_ocaml_Runtime[69],_a3F_), - _a3H_=caml_call1(Runtime_ocaml_Runtime[31],cst_33300), - _a3I_=caml_call2(Runtime_ocaml_Runtime[104],_a3H_,_a3G_), - _a3J_=caml_call1(Runtime_ocaml_Runtime[31],cst_227700), - _a3D_=caml_call2(Runtime_ocaml_Runtime[93],_a3J_,_a3I_); - break; - case 1: - var _a3K_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$258); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a3K_)) - var - _a3D_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_143600) - :caml_call1(Runtime_ocaml_Runtime[31],cst_172900); - else - var - _a3L_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$186), - _a3M_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a3L_), - _a3N_=caml_call1(Runtime_ocaml_Runtime[69],_a3M_), - _a3O_=caml_call1(Runtime_ocaml_Runtime[31],cst_29300), - _a3P_=caml_call2(Runtime_ocaml_Runtime[104],_a3O_,_a3N_), - _a3Q_=caml_call1(Runtime_ocaml_Runtime[31],cst_202200), - _a3D_=caml_call2(Runtime_ocaml_Runtime[93],_a3Q_,_a3P_); - break; - default: - var _a3R_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$259); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a3R_)) - var - _a3D_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_134100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_160900); - else - var - _a3S_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$187), - _a3T_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a3S_), - _a3U_=caml_call1(Runtime_ocaml_Runtime[69],_a3T_), - _a3V_=caml_call1(Runtime_ocaml_Runtime[31],cst_26800), - _a3W_=caml_call2(Runtime_ocaml_Runtime[104],_a3V_,_a3U_), - _a3X_=caml_call1(Runtime_ocaml_Runtime[31],cst_187700), - _a3D_=caml_call2(Runtime_ocaml_Runtime[93],_a3X_,_a3W_)} - return caml_call2 - (Runtime_ocaml_Runtime[104],_a3D_,taux_francs_vers_euros)} - function _a3p_(param$0) - {switch(type_pret[0]) - {case 0:var _a3q_=0;break; - case 1:var _a3q_=1;break; - case 2:var _a3q_=0;break; - case 3:var _a3q_=0;break; - default:var _a3q_=0} - var - _a3r_=0 === anciennete_logement[0]?0:1, - _a3s_=caml_call2(Runtime_ocaml_Runtime[83],_a3r_,_a3q_), - _a3t_=caml_call3(Runtime_ocaml_Runtime[57],2001,6,30), - _a3u_=caml_call2(Runtime_ocaml_Runtime[119],param,_a3t_), - _a3v_=caml_call2(Runtime_ocaml_Runtime[83],_a3u_,_a3s_), - _a3w_=caml_call3(Runtime_ocaml_Runtime[57],2000,6,30), - _a3x_=caml_call2(Runtime_ocaml_Runtime[129],param,_a3w_), - _a3y_=caml_call2(Runtime_ocaml_Runtime[83],_a3x_,_a3v_), - _a3z_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a3A_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a3z_), - _a3B_=caml_call2(Runtime_ocaml_Runtime[83],_a3A_,_a3y_); - return caml_call2(Runtime_ocaml_Runtime[29],_x0_,_a3B_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_x1_,[0],_a3p_,_a3o_)} - function _a0v_(param$0) - {function _a2Q_(param) - {switch(zone[0]) - {case 0: - var _a24_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$260); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a24_)) - var - _a25_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_200100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_141400); - else - var - _a26_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$188), - _a27_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a26_), - _a28_=caml_call1(Runtime_ocaml_Runtime[69],_a27_), - _a29_=caml_call1(Runtime_ocaml_Runtime[31],cst_41300), - _a2__=caml_call2(Runtime_ocaml_Runtime[104],_a29_,_a28_), - _a2$_=caml_call1(Runtime_ocaml_Runtime[31],cst_182700), - _a25_=caml_call2(Runtime_ocaml_Runtime[93],_a2$_,_a2__); - break; - case 1: - var _a3a_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$261); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a3a_)) - var - _a25_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_178600) - :caml_call1(Runtime_ocaml_Runtime[31],cst_215000); - else - var - _a3b_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$189), - _a3c_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a3b_), - _a3d_=caml_call1(Runtime_ocaml_Runtime[69],_a3c_), - _a3e_=caml_call1(Runtime_ocaml_Runtime[31],cst_36400), - _a3f_=caml_call2(Runtime_ocaml_Runtime[104],_a3e_,_a3d_), - _a3g_=caml_call1(Runtime_ocaml_Runtime[31],cst_251400), - _a25_=caml_call2(Runtime_ocaml_Runtime[93],_a3g_,_a3f_); - break; - default: - var _a3h_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$262); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a3h_)) - var - _a25_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_166700) - :caml_call1(Runtime_ocaml_Runtime[31],cst_199900); - else - var - _a3i_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$190), - _a3j_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a3i_), - _a3k_=caml_call1(Runtime_ocaml_Runtime[69],_a3j_), - _a3l_=caml_call1(Runtime_ocaml_Runtime[31],cst_33200), - _a3m_=caml_call2(Runtime_ocaml_Runtime[104],_a3l_,_a3k_), - _a3n_=caml_call1(Runtime_ocaml_Runtime[31],cst_233100), - _a25_=caml_call2(Runtime_ocaml_Runtime[93],_a3n_,_a3m_)} - return caml_call2 - (Runtime_ocaml_Runtime[104],_a25_,taux_francs_vers_euros)} - function _a2R_(param$0) - {switch(type_pret[0]) - {case 0:var _a2S_=0;break; - case 1:var _a2S_=1;break; - case 2:var _a2S_=0;break; - case 3:var _a2S_=0;break; - default:var _a2S_=0} - var - _a2T_=0 === anciennete_logement[0]?1:0, - _a2U_=caml_call2(Runtime_ocaml_Runtime[83],_a2T_,_a2S_), - _a2V_=caml_call3(Runtime_ocaml_Runtime[57],2001,6,30), - _a2W_=caml_call2(Runtime_ocaml_Runtime[119],param,_a2V_), - _a2X_=caml_call2(Runtime_ocaml_Runtime[83],_a2W_,_a2U_), - _a2Y_=caml_call3(Runtime_ocaml_Runtime[57],2000,6,30), - _a2Z_=caml_call2(Runtime_ocaml_Runtime[129],param,_a2Y_), - _a20_=caml_call2(Runtime_ocaml_Runtime[83],_a2Z_,_a2X_), - _a21_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a22_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a21_), - _a23_=caml_call2(Runtime_ocaml_Runtime[83],_a22_,_a20_); - return caml_call2(Runtime_ocaml_Runtime[29],_x2_,_a23_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_x3_,[0],_a2R_,_a2Q_)} - function _a0w_(param$0) - {function _a2g_(param) - {switch(zone[0]) - {case 0: - var _a2u_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$263); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a2u_)) - var - _a2v_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_159500) - :caml_call1(Runtime_ocaml_Runtime[31],cst_192500); - else - var - _a2w_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$191), - _a2x_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a2w_), - _a2y_=caml_call1(Runtime_ocaml_Runtime[69],_a2x_), - _a2z_=caml_call1(Runtime_ocaml_Runtime[31],cst_33000), - _a2A_=caml_call2(Runtime_ocaml_Runtime[104],_a2z_,_a2y_), - _a2B_=caml_call1(Runtime_ocaml_Runtime[31],cst_225500), - _a2v_=caml_call2(Runtime_ocaml_Runtime[93],_a2B_,_a2A_); - break; - case 1: - var _a2C_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$264); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a2C_)) - var - _a2v_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_142200) - :caml_call1(Runtime_ocaml_Runtime[31],cst_171200); - else - var - _a2D_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$192), - _a2E_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a2D_), - _a2F_=caml_call1(Runtime_ocaml_Runtime[69],_a2E_), - _a2G_=caml_call1(Runtime_ocaml_Runtime[31],cst_29000), - _a2H_=caml_call2(Runtime_ocaml_Runtime[104],_a2G_,_a2F_), - _a2I_=caml_call1(Runtime_ocaml_Runtime[31],cst_200200), - _a2v_=caml_call2(Runtime_ocaml_Runtime[93],_a2I_,_a2H_); - break; - default: - var _a2J_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$265); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a2J_)) - var - _a2v_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_132800) - :caml_call1(Runtime_ocaml_Runtime[31],cst_159300); - else - var - _a2K_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$193), - _a2L_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a2K_), - _a2M_=caml_call1(Runtime_ocaml_Runtime[69],_a2L_), - _a2N_=caml_call1(Runtime_ocaml_Runtime[31],cst_26500), - _a2O_=caml_call2(Runtime_ocaml_Runtime[104],_a2N_,_a2M_), - _a2P_=caml_call1(Runtime_ocaml_Runtime[31],cst_185800$0), - _a2v_=caml_call2(Runtime_ocaml_Runtime[93],_a2P_,_a2O_)} - return caml_call2 - (Runtime_ocaml_Runtime[104],_a2v_,taux_francs_vers_euros)} - function _a2h_(param$0) - {switch(type_pret[0]) - {case 0:var _a2i_=0;break; - case 1:var _a2i_=1;break; - case 2:var _a2i_=0;break; - case 3:var _a2i_=0;break; - default:var _a2i_=0} - var - _a2j_=0 === anciennete_logement[0]?0:1, - _a2k_=caml_call2(Runtime_ocaml_Runtime[83],_a2j_,_a2i_), - _a2l_=caml_call3(Runtime_ocaml_Runtime[57],2000,6,30), - _a2m_=caml_call2(Runtime_ocaml_Runtime[114],param,_a2l_), - _a2n_=caml_call2(Runtime_ocaml_Runtime[83],_a2m_,_a2k_), - _a2o_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), - _a2p_=caml_call2(Runtime_ocaml_Runtime[129],param,_a2o_), - _a2q_=caml_call2(Runtime_ocaml_Runtime[83],_a2p_,_a2n_), - _a2r_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a2s_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a2r_), - _a2t_=caml_call2(Runtime_ocaml_Runtime[83],_a2s_,_a2q_); - return caml_call2(Runtime_ocaml_Runtime[29],_x4_,_a2t_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_x5_,[0],_a2h_,_a2g_)} - function _a0x_(param$0) - {function _a1I_(param) - {switch(zone[0]) - {case 0: - var _a1W_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$266); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a1W_)) - var - _a1X_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_198100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_239000); - else - var - _a1Y_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$194), - _a1Z_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a1Y_), - _a10_=caml_call1(Runtime_ocaml_Runtime[69],_a1Z_), - _a11_=caml_call1(Runtime_ocaml_Runtime[31],cst_40900), - _a12_=caml_call2(Runtime_ocaml_Runtime[104],_a11_,_a10_), - _a13_=caml_call1(Runtime_ocaml_Runtime[31],cst_279900), - _a1X_=caml_call2(Runtime_ocaml_Runtime[93],_a13_,_a12_); - break; - case 1: - var _a14_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$267); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a14_)) - var - _a1X_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_176800) - :caml_call1(Runtime_ocaml_Runtime[31],cst_212800); - else - var - _a15_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$195), - _a16_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a15_), - _a17_=caml_call1(Runtime_ocaml_Runtime[69],_a16_), - _a18_=caml_call1(Runtime_ocaml_Runtime[31],cst_36000), - _a19_=caml_call2(Runtime_ocaml_Runtime[104],_a18_,_a17_), - _a1__=caml_call1(Runtime_ocaml_Runtime[31],cst_248800), - _a1X_=caml_call2(Runtime_ocaml_Runtime[93],_a1__,_a19_); - break; - default: - var _a1$_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$268); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a1$_)) - var - _a1X_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_165000) - :caml_call1(Runtime_ocaml_Runtime[31],cst_197900); - else - var - _a2a_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$196), - _a2b_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a2a_), - _a2c_=caml_call1(Runtime_ocaml_Runtime[69],_a2b_), - _a2d_=caml_call1(Runtime_ocaml_Runtime[31],cst_32900), - _a2e_=caml_call2(Runtime_ocaml_Runtime[104],_a2d_,_a2c_), - _a2f_=caml_call1(Runtime_ocaml_Runtime[31],cst_230800), - _a1X_=caml_call2(Runtime_ocaml_Runtime[93],_a2f_,_a2e_)} - return caml_call2 - (Runtime_ocaml_Runtime[104],_a1X_,taux_francs_vers_euros)} - function _a1J_(param$0) - {switch(type_pret[0]) - {case 0:var _a1K_=0;break; - case 1:var _a1K_=1;break; - case 2:var _a1K_=0;break; - case 3:var _a1K_=0;break; - default:var _a1K_=0} - var - _a1L_=0 === anciennete_logement[0]?1:0, - _a1M_=caml_call2(Runtime_ocaml_Runtime[83],_a1L_,_a1K_), - _a1N_=caml_call3(Runtime_ocaml_Runtime[57],2000,6,30), - _a1O_=caml_call2(Runtime_ocaml_Runtime[114],param,_a1N_), - _a1P_=caml_call2(Runtime_ocaml_Runtime[83],_a1O_,_a1M_), - _a1Q_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), - _a1R_=caml_call2(Runtime_ocaml_Runtime[129],param,_a1Q_), - _a1S_=caml_call2(Runtime_ocaml_Runtime[83],_a1R_,_a1P_), - _a1T_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a1U_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a1T_), - _a1V_=caml_call2(Runtime_ocaml_Runtime[83],_a1U_,_a1S_); - return caml_call2(Runtime_ocaml_Runtime[29],_x6_,_a1V_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_x7_,[0],_a1J_,_a1I_)} - function _a0y_(param$0) - {function _a0__(param) - {switch(zone[0]) - {case 0: - var _a1m_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$269); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a1m_)) - var - _a1n_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_167800$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_202500$1); - else - var - _a1o_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$197), - _a1p_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a1o_), - _a1q_=caml_call1(Runtime_ocaml_Runtime[69],_a1p_), - _a1r_=caml_call1(Runtime_ocaml_Runtime[31],cst_34700$0), - _a1s_=caml_call2(Runtime_ocaml_Runtime[104],_a1r_,_a1q_), - _a1t_=caml_call1(Runtime_ocaml_Runtime[31],cst_237200$0), - _a1n_=caml_call2(Runtime_ocaml_Runtime[93],_a1t_,_a1s_); - break; - case 1: - var _a1u_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$270); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a1u_)) - var - _a1n_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_149600$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_180100$0); - else - var - _a1v_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$198), - _a1w_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a1v_), - _a1x_=caml_call1(Runtime_ocaml_Runtime[69],_a1w_), - _a1y_=caml_call1(Runtime_ocaml_Runtime[31],cst_30500$2), - _a1z_=caml_call2(Runtime_ocaml_Runtime[104],_a1y_,_a1x_), - _a1A_=caml_call1(Runtime_ocaml_Runtime[31],cst_210600$0), - _a1n_=caml_call2(Runtime_ocaml_Runtime[93],_a1A_,_a1z_); - break; - default: - var _a1B_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$271); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a1B_)) - var - _a1n_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_139700$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_167600$0); - else - var - _a1C_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$199), - _a1D_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a1C_), - _a1E_=caml_call1(Runtime_ocaml_Runtime[69],_a1D_), - _a1F_=caml_call1(Runtime_ocaml_Runtime[31],cst_27900$0), - _a1G_=caml_call2(Runtime_ocaml_Runtime[104],_a1F_,_a1E_), - _a1H_=caml_call1(Runtime_ocaml_Runtime[31],cst_195500$0), - _a1n_=caml_call2(Runtime_ocaml_Runtime[93],_a1H_,_a1G_)} - return caml_call2 - (Runtime_ocaml_Runtime[104],_a1n_,taux_francs_vers_euros)} - function _a0$_(param$0) - {switch(type_pret[0]) - {case 0:var _a1a_=0;break; - case 1:var _a1a_=1;break; - case 2:var _a1a_=0;break; - case 3:var _a1a_=0;break; - default:var _a1a_=0} - var - _a1b_=0 === anciennete_logement[0]?0:1, - _a1c_=caml_call2(Runtime_ocaml_Runtime[83],_a1b_,_a1a_), - _a1d_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), - _a1e_=caml_call2(Runtime_ocaml_Runtime[114],param,_a1d_), - _a1f_=caml_call2(Runtime_ocaml_Runtime[83],_a1e_,_a1c_), - _a1g_=caml_call3(Runtime_ocaml_Runtime[57],1992,6,30), - _a1h_=caml_call2(Runtime_ocaml_Runtime[129],param,_a1g_), - _a1i_=caml_call2(Runtime_ocaml_Runtime[83],_a1h_,_a1f_), - _a1j_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a1k_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a1j_), - _a1l_=caml_call2(Runtime_ocaml_Runtime[83],_a1k_,_a1i_); - return caml_call2(Runtime_ocaml_Runtime[29],_x8_,_a1l_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_x9_,[0],_a0$_,_a0__)} - var - _a0z_= - [0, - function(param$0) - {function _a0A_(param) - {switch(zone[0]) - {case 0: - var _a0O_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$272); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a0O_)) - var - _a0P_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_208500$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_251500$0); - else - var - _a0Q_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$200), - _a0R_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a0Q_), - _a0S_=caml_call1(Runtime_ocaml_Runtime[69],_a0R_), - _a0T_=caml_call1(Runtime_ocaml_Runtime[31],cst_43000$0), - _a0U_=caml_call2(Runtime_ocaml_Runtime[104],_a0T_,_a0S_), - _a0V_=caml_call1(Runtime_ocaml_Runtime[31],cst_294500$0), - _a0P_=caml_call2(Runtime_ocaml_Runtime[93],_a0V_,_a0U_); - break; - case 1: - var _a0W_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$273); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a0W_)) - var - _a0P_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_186000$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_223900$0); - else - var - _a0X_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$201), - _a0Y_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a0X_), - _a0Z_=caml_call1(Runtime_ocaml_Runtime[69],_a0Y_), - _a00_=caml_call1(Runtime_ocaml_Runtime[31],cst_37900$0), - _a01_=caml_call2(Runtime_ocaml_Runtime[104],_a00_,_a0Z_), - _a02_=caml_call1(Runtime_ocaml_Runtime[31],cst_261800$0), - _a0P_=caml_call2(Runtime_ocaml_Runtime[93],_a02_,_a01_); - break; - default: - var _a03_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$274); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a03_)) - var - _a0P_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_173600$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_208200$0); - else - var - _a04_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$202), - _a05_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a04_), - _a06_=caml_call1(Runtime_ocaml_Runtime[69],_a05_), - _a07_=caml_call1(Runtime_ocaml_Runtime[31],cst_34600), - _a08_=caml_call2(Runtime_ocaml_Runtime[104],_a07_,_a06_), - _a09_=caml_call1(Runtime_ocaml_Runtime[31],cst_242800$0), - _a0P_=caml_call2(Runtime_ocaml_Runtime[93],_a09_,_a08_)} - return caml_call2 - (Runtime_ocaml_Runtime[104],_a0P_,taux_francs_vers_euros)} - function _a0B_(param$0) - {switch(type_pret[0]) - {case 0:var _a0C_=0;break; - case 1:var _a0C_=1;break; - case 2:var _a0C_=0;break; - case 3:var _a0C_=0;break; - default:var _a0C_=0} - var - _a0D_=0 === anciennete_logement[0]?1:0, - _a0E_=caml_call2(Runtime_ocaml_Runtime[83],_a0D_,_a0C_), - _a0F_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), - _a0G_=caml_call2(Runtime_ocaml_Runtime[114],param,_a0F_), - _a0H_=caml_call2(Runtime_ocaml_Runtime[83],_a0G_,_a0E_), - _a0I_=caml_call3(Runtime_ocaml_Runtime[57],1992,6,30), - _a0J_=caml_call2(Runtime_ocaml_Runtime[129],param,_a0I_), - _a0K_=caml_call2(Runtime_ocaml_Runtime[83],_a0J_,_a0H_), - _a0L_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _a0M_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_a0L_), - _a0N_=caml_call2(Runtime_ocaml_Runtime[83],_a0M_,_a0K_); - return caml_call2(Runtime_ocaml_Runtime[29],_x__,_a0N_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_x$_,[0],_a0B_,_a0A_)}, - _a0y_, - _a0x_, - _a0w_, - _a0v_, - _a0u_, - _a0t_, - _a0s_, - _a0r_, - _a0q_, - _a0p_, - _a0o_, - _a0n_, - _a0m_, - _a0l_, - _a0k_, - _a0j_, - _a0i_, - _a0h_, - _a0g_, - _a0f_, - _a0e_, - _a0d_, - _a0c_, - _a0b_, - _a0a_, - _aZ$_, - _aZ__, - _aZ9_, - _aZ8_, - _aZ7_, - _aZ6_, - _aZ5_, - _aZ4_, - _aZ3_, - _aZ2_, - _aZ1_, - _aZ0_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_ya_,_a0z_,_aZZ_,_aZY_)} - function _aZz_(param){return 1} - var - _aZA_= - [0, - function(param$0) - {function _aZB_(param) - {var _aZQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$275); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aZQ_)) - var - _aZR_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_86900) - :caml_call1(Runtime_ocaml_Runtime[31],cst_97100); - else - var - _aZS_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$203), - _aZT_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aZS_), - _aZU_=caml_call1(Runtime_ocaml_Runtime[69],_aZT_), - _aZV_=caml_call1(Runtime_ocaml_Runtime[31],cst_10200), - _aZW_=caml_call2(Runtime_ocaml_Runtime[104],_aZV_,_aZU_), - _aZX_=caml_call1(Runtime_ocaml_Runtime[31],cst_107300), - _aZR_=caml_call2(Runtime_ocaml_Runtime[93],_aZX_,_aZW_); - return caml_call2 - (Runtime_ocaml_Runtime[104],_aZR_,taux_francs_vers_euros)} - function _aZC_(param$0) - {switch(type_pret[0]) - {case 0:var _aZD_=0;break; - case 1:var _aZD_=1;break; - case 2:var _aZD_=0;break; - case 3:var _aZD_=0;break; - default:var _aZD_=0} - if(0 === anciennete_logement[0]) - var _aZE_=0; - else - var - ameliore_par_occupant=anciennete_logement[1], - _aZP_=0 === ameliore_par_occupant[0]?1:0, - _aZE_=_aZP_; - var - _aZF_=caml_call2(Runtime_ocaml_Runtime[83],_aZE_,_aZD_), - _aZG_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), - _aZH_=caml_call2(Runtime_ocaml_Runtime[119],param,_aZG_), - _aZI_=caml_call2(Runtime_ocaml_Runtime[83],_aZH_,_aZF_), - _aZJ_=caml_call3(Runtime_ocaml_Runtime[57],1992,6,30), - _aZK_=caml_call2(Runtime_ocaml_Runtime[129],param,_aZJ_), - _aZL_=caml_call2(Runtime_ocaml_Runtime[83],_aZK_,_aZI_), - _aZM_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), - _aZN_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aZM_), - _aZO_=caml_call2(Runtime_ocaml_Runtime[83],_aZN_,_aZL_); - return caml_call2(Runtime_ocaml_Runtime[29],_yb_,_aZO_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_yc_,[0],_aZC_,_aZB_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_yd_,_aZA_,_aZz_,_aZy_)}, - _aZu_], - _aZw_=caml_call4(Runtime_ocaml_Runtime[63],_ye_,_aZv_,_aZt_,_aZs_); - return _aZw_} - catch(_aZx_) - {_aZx_ = caml_wrap_exception(_aZx_); - if(_aZx_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_wP_]; - throw _aZx_}} - var - calcul_plafond_mensualite_d832= - caml_call3 - (Runtime_ocaml_Runtime[28],_yf_,Runtime_ocaml_Runtime[10],_aWH_); - try - {var - _aWI_=function(param){return calcul_nombre_parts_dot_n_nomb}, - _aWJ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yh_,1)}, - _aWK_=caml_call4(Runtime_ocaml_Runtime[63],_yi_,[0],_aWJ_,_aWI_)} - catch(_aZr_) - {_aZr_ = caml_wrap_exception(_aZr_); - if(_aZr_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_yg_]; - throw _aZr_} - var - n_nombre_parts_d832_11= - caml_call3 - (Runtime_ocaml_Runtime[28],_yj_,Runtime_ocaml_Runtime[15],_aWK_); - function _aWL_(param) - {try - {var - _aZh_= - function(param$0) - {return caml_call2 - (Runtime_ocaml_Runtime[98],mensualite_principale,param)}, - _aZi_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_yl_,1)}, - _aZj_= - [0, - function(param$0) - {function _aZm_(param$0) - {var - _aZq_= - caml_call2 - (Runtime_ocaml_Runtime[93], - mensualite_principale, - montant_forfaitaire_charges_d8); - return caml_call2(Runtime_ocaml_Runtime[98],_aZq_,param)} - function _aZn_(param) - {var - _aZo_=caml_call3(Runtime_ocaml_Runtime[57],1999,6,30), - _aZp_= - caml_call2 - (Runtime_ocaml_Runtime[129],date_signature_pret,_aZo_); - return caml_call2(Runtime_ocaml_Runtime[29],_ym_,_aZp_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_yn_,[0],_aZn_,_aZm_)}], - _aZk_=caml_call4(Runtime_ocaml_Runtime[63],_yo_,_aZj_,_aZi_,_aZh_); - return _aZk_} - catch(_aZl_) - {_aZl_ = caml_wrap_exception(_aZl_); - if(_aZl_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_yk_]; - throw _aZl_}} - var - depense_nette_minimale_d832_10= - caml_call3 - (Runtime_ocaml_Runtime[28],_yp_,Runtime_ocaml_Runtime[10],_aWL_); - try - {var - _aWM_= - function(param) - {var - _aZe_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _yr_, - Runtime_ocaml_Runtime[16], - date_signature_pret), - _aZf_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _ys_, - calcul_plafond_mensualite_d832), - _aZe_), - _aZg_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _yt_, - Runtime_ocaml_Runtime[13], - _aZf_); - return caml_call2(Runtime_ocaml_Runtime[27],_yu_,_aZg_)}, - _aWN_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yv_,1)}, - _aWO_= - [0, - function(param) - {function _aY8_(param) - {var - _aY__= - caml_call3 - (Runtime_ocaml_Runtime[28], - _yw_, - Runtime_ocaml_Runtime[16], - date_signature_pret), - _aY$_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _yx_, - calcul_plafond_mensualite_d832), - _aY__), - _aZa_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _yy_, - Runtime_ocaml_Runtime[13], - _aY$_), - plafond_signature= - caml_call2(Runtime_ocaml_Runtime[27],_yz_,_aZa_), - _aZb_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _yA_, - Runtime_ocaml_Runtime[16], - date_entree_logement), - _aZc_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _yB_, - calcul_plafond_mensualite_d832), - _aZb_), - _aZd_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _yC_, - Runtime_ocaml_Runtime[13], - _aZc_), - plafond_entree= - caml_call2(Runtime_ocaml_Runtime[27],_yD_,_aZd_); - return caml_call2 - (Runtime_ocaml_Runtime[112], - plafond_signature, - plafond_entree) - ?plafond_entree - :plafond_signature} - function _aY9_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29], - _yE_, - local_habite_premiere_fois_ben)} - return caml_call4(Runtime_ocaml_Runtime[63],_yF_,[0],_aY9_,_aY8_)}], - _aWP_=caml_call4(Runtime_ocaml_Runtime[63],_yG_,_aWO_,_aWN_,_aWM_)} - catch(_aY7_) - {_aY7_ = caml_wrap_exception(_aY7_); - if(_aY7_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_yq_]; - throw _aY7_} - var - plafond_mensualite_d832_10_3_b= - caml_call3 - (Runtime_ocaml_Runtime[28],_yH_,Runtime_ocaml_Runtime[13],_aWP_); - try - {var - _aWQ_=function(param){return ressources_menage_arrondies}, - _aWR_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yJ_,1)}, - _aWS_=caml_call4(Runtime_ocaml_Runtime[63],_yK_,[0],_aWR_,_aWQ_), - calcul_equivalence_loyer_minim$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_yL_,Runtime_ocaml_Runtime[13],_aWS_)} - catch(_aY6_) - {_aY6_ = caml_wrap_exception(_aY6_); - if(_aY6_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_yI_]; - throw _aY6_} - try - {var - _aWT_=function(param){return 0}, - _aWU_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yN_,1)}, - _aWV_=caml_call4(Runtime_ocaml_Runtime[63],_yO_,[0],_aWU_,_aWT_), - calcul_equivalence_loyer_minim$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_yP_,Runtime_ocaml_Runtime[12],_aWV_)} - catch(_aY5_) - {_aY5_ = caml_wrap_exception(_aY5_); - if(_aY5_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_yM_]; - throw _aY5_} - try - {var - _aWW_=function(param){return n_nombre_parts_d832_11}, - _aWX_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yR_,1)}, - _aWY_=caml_call4(Runtime_ocaml_Runtime[63],_yS_,[0],_aWX_,_aWW_), - calcul_equivalence_loyer_minim$2= - caml_call3 - (Runtime_ocaml_Runtime[28],_yT_,Runtime_ocaml_Runtime[15],_aWY_)} - catch(_aY4_) - {_aY4_ = caml_wrap_exception(_aY4_); - if(_aY4_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_yQ_]; - throw _aY4_} - var - _aWZ_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_yU_,calcul_equivalence_loyer_minim), - [0, - calcul_equivalence_loyer_minim$0, - calcul_equivalence_loyer_minim$1, - calcul_equivalence_loyer_minim$2]), - result$1=caml_call2(Runtime_ocaml_Runtime[27],_yV_,_aWZ_), - calcul_equivalence_loyer_minim$3=result$1[1]; - try - {var - _aW0_= - function(param) - {var - _aY1_= - caml_call2 - (Runtime_ocaml_Runtime[104], - coefficient_multiplicateur_d83, - n_nombre_parts_d832_11), - _aY2_= - caml_call2 - (Runtime_ocaml_Runtime[108],ressources_menage_arrondies,_aY1_), - _aY3_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$2); - return caml_call2(Runtime_ocaml_Runtime[97],_aY3_,_aY2_)}, - _aW1_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yX_,1)}, - _aW2_=caml_call4(Runtime_ocaml_Runtime[63],_yY_,[0],_aW1_,_aW0_)} - catch(_aY0_) - {_aY0_ = caml_wrap_exception(_aY0_); - if(_aY0_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_yW_]; - throw _aY0_} - var - coefficient_prise_en_charge_d8= - caml_call3 - (Runtime_ocaml_Runtime[28],_yZ_,Runtime_ocaml_Runtime[15],_aW2_); - function _aW3_(param) - {try - {var - _aYR_= - function(param$0) - {var - _aYV_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _y1_, - Runtime_ocaml_Runtime[13], - param), - _aYW_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _y2_, - depense_nette_minimale_d832_10), - _aYV_), - _aYX_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _y3_, - Runtime_ocaml_Runtime[13], - _aYW_), - depense_nette_minimale= - caml_call2(Runtime_ocaml_Runtime[27],_y4_,_aYX_), - _aYY_= - caml_call2 - (Runtime_ocaml_Runtime[104], - ressources_menage_avec_d832_18, - coefficient_multiplicateur_d83$1); - if - (caml_call2 - (Runtime_ocaml_Runtime[117],depense_nette_minimale,_aYY_)) - {var - _aYZ_= - caml_call2 - (Runtime_ocaml_Runtime[104], - ressources_menage_avec_d832_18, - coefficient_multiplicateur_d83$1); - return caml_call2 - (Runtime_ocaml_Runtime[98],_aYZ_,depense_nette_minimale)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$276)}, - _aYS_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_y5_,1)}, - _aYT_=caml_call4(Runtime_ocaml_Runtime[63],_y6_,[0],_aYS_,_aYR_); - return _aYT_} - catch(_aYU_) - {_aYU_ = caml_wrap_exception(_aYU_); - if(_aYU_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_y0_]; - throw _aYU_}} - var - abattement_depense_nette_minim= - caml_call3 - (Runtime_ocaml_Runtime[28],_y7_,Runtime_ocaml_Runtime[10],_aW3_); - try - {var - _aW4_=function(param){throw Runtime_ocaml_Runtime[2]}, - _aW5_=function(param){return 0}, - _aW6_= - [0, - function(param) - {function _aYu_(param) - {if(copropriete) - {var _aYQ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$8); - return caml_call2 - (Runtime_ocaml_Runtime[104], - plafond_mensualite_d832_10_3_b, - _aYQ_)} - return plafond_mensualite_d832_10_3_b} - function _aYv_(param) - {var - _aYO_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _aYP_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aYO_); - return caml_call2(Runtime_ocaml_Runtime[29],_y9_,_aYP_)} - var - _aYw_= - [0, - function(param) - {function _aYx_(param) - {if(copropriete) - {var _aYN_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$9); - return caml_call2 - (Runtime_ocaml_Runtime[104], - plafond_mensualite_d832_10_3_b, - _aYN_)} - return plafond_mensualite_d832_10_3_b} - function _aYy_(param) - {var - _aYI_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _aYJ_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aYI_), - _aYK_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _aYL_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aYK_), - _aYM_=caml_call2(Runtime_ocaml_Runtime[83],_aYL_,_aYJ_); - return caml_call2(Runtime_ocaml_Runtime[29],_y__,_aYM_)} - var - _aYz_= - [0, - function(param) - {function _aYA_(param) - {if(copropriete) - {var - _aYH_= - caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$10); - return caml_call2 - (Runtime_ocaml_Runtime[104], - plafond_mensualite_d832_10_3_b, - _aYH_)} - return plafond_mensualite_d832_10_3_b} - function _aYB_(param) - {var - _aYC_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), - _aYD_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aYC_), - _aYE_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _aYF_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aYE_), - _aYG_=caml_call2(Runtime_ocaml_Runtime[83],_aYF_,_aYD_); - return caml_call2(Runtime_ocaml_Runtime[29],_y$_,_aYG_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_za_,[0],_aYB_,_aYA_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_zb_,_aYz_,_aYy_,_aYx_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_zc_,_aYw_,_aYv_,_aYu_)}], - _aW7_=caml_call4(Runtime_ocaml_Runtime[63],_zd_,_aW6_,_aW5_,_aW4_)} - catch(_aYt_) - {_aYt_ = caml_wrap_exception(_aYt_); - if(_aYt_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_y8_]; - throw _aYt_} - var - plafond_mensualite_d832_10_3_c= - caml_call3 - (Runtime_ocaml_Runtime[28],_ze_,Runtime_ocaml_Runtime[13],_aW7_); - try - {var - _aW8_=function(param){throw Runtime_ocaml_Runtime[2]}, - _aW9_=function(param){return 0}, - _aW__= - function(param) - {function _aYq_(param){return calcul_equivalence_loyer_minim$3} - function _aYr_(param) - {switch(type_travaux_logement[0]) - {case 0:var _aYs_=0;break; - case 1:var _aYs_=1;break; - default:var _aYs_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_zg_,_aYs_)} - return caml_call4(Runtime_ocaml_Runtime[63],_zh_,[0],_aYr_,_aYq_)}, - _aW$_= - [0, - function(param) - {function _aYb_(param) - {var - ressources_menage_arrondies$0= - caml_call1 - (Runtime_ocaml_Runtime[70],ressources_menage_arrondies), - montant_limite_tranches_d832_1$0= - caml_call1 - (Runtime_ocaml_Runtime[70],montant_limite_tranches_d832_1), - _aYg_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$14), - _aYh_= - caml_call2 - (Runtime_ocaml_Runtime[103], - montant_limite_tranches_d832_1$0, - n_nombre_parts_d832_11); - if - (caml_call2 - (Runtime_ocaml_Runtime[116], - ressources_menage_arrondies$0, - _aYh_)) - var - _aYi_= - caml_call2 - (Runtime_ocaml_Runtime[103], - ressources_menage_arrondies$0, - taux_tranche_inferieure_d832_1); - else - var - _aYp_= - caml_call2 - (Runtime_ocaml_Runtime[103], - montant_limite_tranches_d832_1$0, - n_nombre_parts_d832_11), - _aYi_= - caml_call2 - (Runtime_ocaml_Runtime[103], - _aYp_, - taux_tranche_inferieure_d832_1); - var - _aYj_= - caml_call2 - (Runtime_ocaml_Runtime[103], - montant_limite_tranches_d832_1$0, - n_nombre_parts_d832_11); - if - (caml_call2 - (Runtime_ocaml_Runtime[126], - ressources_menage_arrondies$0, - _aYj_)) - var - _aYk_= - caml_call2 - (Runtime_ocaml_Runtime[103], - montant_limite_tranches_d832_1$0, - n_nombre_parts_d832_11), - _aYl_= - caml_call2 - (Runtime_ocaml_Runtime[97], - ressources_menage_arrondies$0, - _aYk_), - _aYm_= - caml_call2 - (Runtime_ocaml_Runtime[103], - _aYl_, - taux_tranche_superieure_d832_1); - else - var _aYm_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$277); - var - _aYn_=caml_call2(Runtime_ocaml_Runtime[92],_aYm_,_aYi_), - _aYo_=caml_call2(Runtime_ocaml_Runtime[107],_aYn_,_aYg_); - return caml_call1(Runtime_ocaml_Runtime[71],_aYo_)} - function _aYc_(param) - {switch(type_travaux_logement[0]) - {case 0:var _aYd_=0;break; - case 1:var _aYd_=0;break; - default:var _aYd_=1} - switch(type_travaux_logement[0]) - {case 0:var _aYe_=1;break; - case 1:var _aYe_=0;break; - default:var _aYe_=0} - var _aYf_=caml_call2(Runtime_ocaml_Runtime[84],_aYe_,_aYd_); - return caml_call2(Runtime_ocaml_Runtime[29],_zi_,_aYf_)} - return caml_call4(Runtime_ocaml_Runtime[63],_zj_,[0],_aYc_,_aYb_)}, - _aW__], - _aXa_=caml_call4(Runtime_ocaml_Runtime[63],_zk_,_aW$_,_aW9_,_aW8_)} - catch(_aYa_) - {_aYa_ = caml_wrap_exception(_aYa_); - if(_aYa_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_zf_]; - throw _aYa_} - var - mensualite_minimale= - caml_call3 - (Runtime_ocaml_Runtime[28],_zl_,Runtime_ocaml_Runtime[13],_aXa_); - try - {var - _aXb_= - function(param) - {var - _aX6_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$9), - _aX7_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$10), - _aX8_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_005$2), - _aX9_= - caml_call2 - (Runtime_ocaml_Runtime[97], - coefficient_prise_en_charge_d8, - _aX8_), - _aX__=caml_call2(Runtime_ocaml_Runtime[103],_aX9_,_aX7_), - _aX$_=caml_call1(Runtime_ocaml_Runtime[78],_aX__); - return caml_call2(Runtime_ocaml_Runtime[107],_aX$_,_aX6_)}, - _aXc_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_zn_,1)}, - _aXd_=caml_call4(Runtime_ocaml_Runtime[63],_zo_,[0],_aXc_,_aXb_)} - catch(_aX5_) - {_aX5_ = caml_wrap_exception(_aX5_); - if(_aX5_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_zm_]; - throw _aX5_} - var - coefficient_prise_en_charge_d8$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_zp_,Runtime_ocaml_Runtime[15],_aXd_); - function _aXe_(param) - {try - {var - _aXT_= - function(param$0) - {var - _aXX_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zr_, - Runtime_ocaml_Runtime[13], - param), - _aXY_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _zs_, - traitement_aide_finale_minorat), - _aXX_), - _aXZ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zt_, - Runtime_ocaml_Runtime[13], - _aXY_), - aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_zu_,_aXZ_), - _aX0_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zv_, - Runtime_ocaml_Runtime[13], - aide_finale), - _aX1_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _zw_, - abattement_depense_nette_minim), - _aX0_), - _aX2_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zx_, - Runtime_ocaml_Runtime[13], - _aX1_), - _aX3_=caml_call2(Runtime_ocaml_Runtime[27],_zy_,_aX2_), - aide_finale$0= - caml_call2(Runtime_ocaml_Runtime[98],aide_finale,_aX3_), - _aX4_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$278); - return caml_call2 - (Runtime_ocaml_Runtime[127],aide_finale$0,_aX4_) - ?aide_finale$0 - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$279)}, - _aXU_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_zz_,1)}, - _aXV_=caml_call4(Runtime_ocaml_Runtime[63],_zA_,[0],_aXU_,_aXT_); - return _aXV_} - catch(_aXW_) - {_aXW_ = caml_wrap_exception(_aXW_); - if(_aXW_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_zq_]; - throw _aXW_}} - var - traitement_aide_finale_abattem= - caml_call3 - (Runtime_ocaml_Runtime[28],_zB_,Runtime_ocaml_Runtime[10],_aXe_); - try - {var - _aXf_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[122], - mensualite_principale, - plafond_mensualite_d832_10_3_c) - ?plafond_mensualite_d832_10_3_c - :mensualite_principale}, - _aXg_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_zD_,1)}, - _aXh_=caml_call4(Runtime_ocaml_Runtime[63],_zE_,[0],_aXg_,_aXf_)} - catch(_aXS_) - {_aXS_ = caml_wrap_exception(_aXS_); - if(_aXS_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_zC_]; - throw _aXS_} - var - mensualite_eligible= - caml_call3 - (Runtime_ocaml_Runtime[28],_zF_,Runtime_ocaml_Runtime[13],_aXh_); - try - {var - _aXi_= - function(param) - {var _aXR_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$3); - return caml_call2 - (Runtime_ocaml_Runtime[126], - coefficient_prise_en_charge_d8$0, - _aXR_) - ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$4) - :coefficient_prise_en_charge_d8$0}, - _aXj_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_zH_,1)}, - _aXk_=caml_call4(Runtime_ocaml_Runtime[63],_zI_,[0],_aXj_,_aXi_)} - catch(_aXQ_) - {_aXQ_ = caml_wrap_exception(_aXQ_); - if(_aXQ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_zG_]; - throw _aXQ_} - var - coefficient_prise_en_charge_d8$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_zJ_,Runtime_ocaml_Runtime[15],_aXk_); - function _aXl_(param) - {try - {var - _aXB_= - function(param$0) - {var - _aXF_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zL_, - Runtime_ocaml_Runtime[13], - param), - _aXG_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _zM_, - traitement_aide_finale_abattem), - _aXF_), - _aXH_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zN_, - Runtime_ocaml_Runtime[13], - _aXG_), - aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_zO_,_aXH_), - _aXI_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zP_, - Runtime_ocaml_Runtime[13], - aide_finale), - _aXJ_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _zQ_, - contributions_sociales_dot_mon), - _aXI_), - _aXK_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _zR_, - Runtime_ocaml_Runtime[13], - _aXJ_), - crds=caml_call2(Runtime_ocaml_Runtime[27],_zS_,_aXK_), - _aXL_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$1), - _aXM_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale,crds), - _aXN_=caml_call2(Runtime_ocaml_Runtime[98],_aXM_,_aXL_), - aide_finale_moins_crds_arrondi= - caml_call1(Runtime_ocaml_Runtime[77],_aXN_), - _aXO_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$280), - _aXP_= - caml_call2 - (Runtime_ocaml_Runtime[93], - aide_finale_moins_crds_arrondi, - crds); - return caml_call2(Runtime_ocaml_Runtime[127],_aXP_,_aXO_) - ?caml_call2 - (Runtime_ocaml_Runtime[93], - aide_finale_moins_crds_arrondi, - crds) - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$281)}, - _aXC_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_zT_,1)}, - _aXD_=caml_call4(Runtime_ocaml_Runtime[63],_zU_,[0],_aXC_,_aXB_); - return _aXD_} - catch(_aXE_) - {_aXE_ = caml_wrap_exception(_aXE_); - if(_aXE_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_zK_]; - throw _aXE_}} - var - traitement_aide_finale_contrib= - caml_call3 - (Runtime_ocaml_Runtime[28],_zV_,Runtime_ocaml_Runtime[10],_aXl_); - try - {var - _aXm_= - function(param) - {var - _aXy_= - caml_call2 - (Runtime_ocaml_Runtime[93], - mensualite_eligible, - montant_forfaitaire_charges_d8), - _aXz_= - caml_call2(Runtime_ocaml_Runtime[98],_aXy_,mensualite_minimale), - aide_finale= - caml_call2 - (Runtime_ocaml_Runtime[104], - _aXz_, - coefficient_prise_en_charge_d8$1), - _aXA_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$282); - return caml_call2(Runtime_ocaml_Runtime[112],aide_finale,_aXA_) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$283) - :aide_finale}, - _aXn_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_zX_,1)}, - _aXo_=caml_call4(Runtime_ocaml_Runtime[63],_zY_,[0],_aXn_,_aXm_)} - catch(_aXx_) - {_aXx_ = caml_wrap_exception(_aXx_); - if(_aXx_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_zW_]; - throw _aXx_} - var - aide_finale_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_zZ_,Runtime_ocaml_Runtime[13],_aXo_); - function _aXp_(param) - {try - {var - _aXq_= - function(param$0) - {var - _aXu_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _z1_, - Runtime_ocaml_Runtime[13], - param), - _aXv_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _z2_, - traitement_aide_finale_contrib), - _aXu_), - _aXw_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _z3_, - Runtime_ocaml_Runtime[13], - _aXv_), - aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_z4_,_aXw_); - return caml_call2 - (Runtime_ocaml_Runtime[112], - aide_finale, - montant_minimal_aide_d832_10) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$284) - :aide_finale}, - _aXr_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_z5_,1)}, - _aXs_=caml_call4(Runtime_ocaml_Runtime[63],_z6_,[0],_aXr_,_aXq_); - return _aXs_} - catch(_aXt_) - {_aXt_ = caml_wrap_exception(_aXt_); - if(_aXt_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_z0_]; - throw _aXt_}} - var - traitement_aide_finale_montant= - caml_call3 - (Runtime_ocaml_Runtime[28],_z7_,Runtime_ocaml_Runtime[10],_aXp_); - return [0, - mensualite_eligible, - mensualite_minimale, - coefficient_prise_en_charge_d8$1, - aide_finale_formule, - traitement_aide_finale_montant]} - function eligibilite_aides_personnelle_(eligibilite_aides_personnelle_) - {var - menage=eligibilite_aides_personnelle_[1], - demandeur=eligibilite_aides_personnelle_[2], - date_courante=eligibilite_aides_personnelle_[3], - condition_logement_residence_p=eligibilite_aides_personnelle_[4], - condition_logement_surface=eligibilite_aides_personnelle_[5]; - function _aQU_(param) - {try - {var - _aVU_=function(param){return 0}, - _aVV_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_z9_,1)}, - _aVW_=caml_call4(Runtime_ocaml_Runtime[63],_z__,[0],_aVV_,_aVU_); - return _aVW_} - catch(_aVX_) - {_aVX_ = caml_wrap_exception(_aVX_); - if(_aVX_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_z8_]; - throw _aVX_}} - caml_call3 - (Runtime_ocaml_Runtime[28],_z$_,Runtime_ocaml_Runtime[10],_aQU_); - try - {var - _aQV_=function(param){return 0}, - _aQW_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ab_,1)}, - _aQX_=caml_call4(Runtime_ocaml_Runtime[63],_Ac_,[0],_aQW_,_aQV_)} - catch(_aVT_) - {_aVT_ = caml_wrap_exception(_aVT_); - if(_aVT_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Aa_]; - throw _aVT_} - caml_call3 - (Runtime_ocaml_Runtime[28],_Ad_,Runtime_ocaml_Runtime[12],_aQX_); - try - {var - _aQY_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_1)}, - _aQZ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Af_,1)}, - _aQ0_=caml_call4(Runtime_ocaml_Runtime[63],_Ag_,[0],_aQZ_,_aQY_)} - catch(_aVS_) - {_aVS_ = caml_wrap_exception(_aVS_); - if(_aVS_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ae_]; - throw _aVS_} - var - seuil_l822_3_parts_propriete= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ah_,Runtime_ocaml_Runtime[15],_aQ0_); - try - {var - _aQ1_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_1$0)}, - _aQ2_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Aj_,1)}, - _aQ3_=caml_call4(Runtime_ocaml_Runtime[63],_Ak_,[0],_aQ2_,_aQ1_)} - catch(_aVR_) - {_aVR_ = caml_wrap_exception(_aVR_); - if(_aVR_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ai_]; - throw _aVR_} - var - seuil_l822_3_parts_usufruit= - caml_call3 - (Runtime_ocaml_Runtime[28],_Al_,Runtime_ocaml_Runtime[15],_aQ3_); - try - {var - _aQ4_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_3000000)}, - _aQ5_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_An_,1)}, - _aQ6_=caml_call4(Runtime_ocaml_Runtime[63],_Ao_,[0],_aQ5_,_aQ4_)} - catch(_aVQ_) - {_aVQ_ = caml_wrap_exception(_aVQ_); - if(_aVQ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Am_]; - throw _aVQ_} - var - seuil_l822_5_patrimoine= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ap_,Runtime_ocaml_Runtime[13],_aQ6_); - try - {var - _aQ7_= - function(param) - {var - _aVO_=0 === menage[2][6][0]?1:0, - _aVP_=0 === menage[2][4][0]?1:0; - return caml_call2(Runtime_ocaml_Runtime[84],_aVP_,_aVO_)}, - _aQ8_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ar_,1)}, - _aQ9_=caml_call4(Runtime_ocaml_Runtime[63],_As_,[0],_aQ8_,_aQ7_)} - catch(_aVN_) - {_aVN_ = caml_wrap_exception(_aVN_); - if(_aVN_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Aq_]; - throw _aVN_} - var - usufruit_ou_propriete_famille= - caml_call3 - (Runtime_ocaml_Runtime[28],_At_,Runtime_ocaml_Runtime[12],_aQ9_); - try - {var - _aQ__=function(param){return 0}, - _aQ$_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Av_,1)}, - _aRa_= - [0, - function(param) - {function _aVK_(param){return 1} - function _aVL_(param) - {var _aVM_=caml_call1(Runtime_ocaml_Runtime[67],menage[2][7]); - return caml_call2(Runtime_ocaml_Runtime[29],_Aw_,_aVM_)} - return caml_call4(Runtime_ocaml_Runtime[63],_Ax_,[0],_aVL_,_aVK_)}], - _aRb_=caml_call4(Runtime_ocaml_Runtime[63],_Ay_,_aRa_,_aQ$_,_aQ__)} - catch(_aVJ_) - {_aVJ_ = caml_wrap_exception(_aVJ_); - if(_aVJ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Au_]; - throw _aVJ_} - var - condition_non_ouverture_l822_9= - caml_call3 - (Runtime_ocaml_Runtime[28],_Az_,Runtime_ocaml_Runtime[12],_aRb_); - try - {var - _aRc_=function(param){return 0}, - _aRd_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_AB_,1)}, - _aRe_= - [0, - function(param) - {function _aVH_(param){return 1} - function _aVI_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_AC_,menage[6])} - return caml_call4(Runtime_ocaml_Runtime[63],_AD_,[0],_aVI_,_aVH_)}], - _aRf_=caml_call4(Runtime_ocaml_Runtime[63],_AE_,_aRe_,_aRd_,_aRc_)} - catch(_aVG_) - {_aVG_ = caml_wrap_exception(_aVG_); - if(_aVG_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_AA_]; - throw _aVG_} - var - condition_non_ouverture_l822_8= - caml_call3 - (Runtime_ocaml_Runtime[28],_AF_,Runtime_ocaml_Runtime[12],_aRf_); - try - {var - _aRg_= - function(param) - {function _aVm_(param){return 0} - function _aVn_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_AH_,1)} - var - _aVo_= - [0, - function(param) - {function _aVp_(param){return 1} - function _aVq_(param) - {var - _aVr_=caml_call1(Runtime_ocaml_Runtime[68],menage[3]), - _aVs_=menage[4]; - switch(menage[5][0]) - {case 0: - var _aVt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$204); - break; - case 1: - var _aVt_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$41); - break; - case 2: - var _aVt_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$42); - break; - case 3: - var _aVt_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$43); - break; - case 4: - var _aVt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$205); - break; - default: - var _aVt_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$44)} - var - _aVu_=caml_call2(Runtime_ocaml_Runtime[91],_aVt_,_aVs_), - nombre_personnes_logement= - caml_call2(Runtime_ocaml_Runtime[91],_aVu_,_aVr_), - _aVv_=caml_call1(Runtime_ocaml_Runtime[46],cst_9), - _aVw_=caml_call1(Runtime_ocaml_Runtime[68],menage[3]), - _aVx_=caml_call2(Runtime_ocaml_Runtime[91],menage[4],_aVw_), - _aVy_=caml_call2(Runtime_ocaml_Runtime[102],_aVx_,_aVv_); - switch(menage[5][0]) - {case 0: - var _aVz_=caml_call1(Runtime_ocaml_Runtime[46],cst_9$0); - break; - case 1: - var _aVz_=caml_call1(Runtime_ocaml_Runtime[46],cst_16); - break; - case 2: - var _aVz_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$0); - break; - case 3: - var _aVz_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$1); - break; - case 4: - var _aVz_=caml_call1(Runtime_ocaml_Runtime[46],cst_9$1); - break; - default: - var _aVz_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$2)} - var - condition_logement_surface_min= - caml_call2(Runtime_ocaml_Runtime[91],_aVz_,_aVy_), - _aVA_=caml_call1(Runtime_ocaml_Runtime[46],cst_8), - _aVB_= - caml_call2 - (Runtime_ocaml_Runtime[125],nombre_personnes_logement,_aVA_), - _aVC_=caml_call1(Runtime_ocaml_Runtime[46],cst_70), - _aVD_= - caml_call2 - (Runtime_ocaml_Runtime[125], - condition_logement_surface_min, - _aVC_); - if(caml_call2(Runtime_ocaml_Runtime[83],_aVD_,_aVB_)) - var - _aVE_=caml_call1(Runtime_ocaml_Runtime[46],cst_70$0), - _aVF_= - caml_call2(Runtime_ocaml_Runtime[125],menage[2][8],_aVE_); - else - var - _aVF_= - caml_call2 - (Runtime_ocaml_Runtime[125], - menage[2][8], - condition_logement_surface_min); - return caml_call2(Runtime_ocaml_Runtime[29],_AI_,_aVF_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_AJ_,[0],_aVq_,_aVp_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_AK_,_aVo_,_aVn_,_aVm_)}, - _aRh_=function(param){return 1}, - _aRi_= - [0,function(param){return caml_call1(condition_logement_surface,0)}], - _aRj_=caml_call4(Runtime_ocaml_Runtime[63],_AL_,_aRi_,_aRh_,_aRg_)} - catch(_aVl_) - {_aVl_ = caml_wrap_exception(_aVl_); - if(_aVl_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_AG_]; - throw _aVl_} - var - condition_logement_surface$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_AM_,Runtime_ocaml_Runtime[12],_aRj_); - try - {var - _aRk_= - function(param) - {function _aVg_(param){return 0} - function _aVh_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_AO_,1)} - var - _aVi_= - [0, - function(param) - {function _aVj_(param){return 1} - function _aVk_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_AP_,menage[2][1])} - return caml_call4 - (Runtime_ocaml_Runtime[63],_AQ_,[0],_aVk_,_aVj_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_AR_,_aVi_,_aVh_,_aVg_)}, - _aRl_=function(param){return 1}, - _aRm_= - [0, - function(param) - {return caml_call1(condition_logement_residence_p,0)}], - _aRn_=caml_call4(Runtime_ocaml_Runtime[63],_AS_,_aRm_,_aRl_,_aRk_)} - catch(_aVf_) - {_aVf_ = caml_wrap_exception(_aVf_); - if(_aVf_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_AN_]; - throw _aVf_} - var - condition_logement_residence_p$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_AT_,Runtime_ocaml_Runtime[12],_aRn_); - try - {var - _aRo_=function(param){return demandeur[1]}, - _aRp_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_AV_,1)}, - _aRq_=caml_call4(Runtime_ocaml_Runtime[63],_AW_,[0],_aRp_,_aRo_), - ouverture_droits_retraite_dot_= - caml_call3 - (Runtime_ocaml_Runtime[28],_AX_,Runtime_ocaml_Runtime[16],_aRq_)} - catch(_aVe_) - {_aVe_ = caml_wrap_exception(_aVe_); - if(_aVe_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_AU_]; - throw _aVe_} - var - _aRr_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_AY_,ouverture_droits_retraite), - [0,ouverture_droits_retraite_dot_]), - result=caml_call2(Runtime_ocaml_Runtime[27],_AZ_,_aRr_), - ouverture_droits_retraite_dot_$0=result[1]; - try - {var - _aRs_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[93],demandeur[3][1],demandeur[3][2])}, - _aRt_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_A1_,1)}, - _aRu_=caml_call4(Runtime_ocaml_Runtime[63],_A2_,[0],_aRt_,_aRs_)} - catch(_aVd_) - {_aVd_ = caml_wrap_exception(_aVd_); - if(_aVd_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_A0_]; - throw _aVd_} - var - patrimoine_total_demandeur= - caml_call3 - (Runtime_ocaml_Runtime[28],_A3_,Runtime_ocaml_Runtime[13],_aRu_); - try - {var - _aRv_=function(param){return 0}, - _aRw_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_A5_,1)}, - _aRx_= - [0, - function(param) - {function _aU$_(param){return 1} - function _aVa_(param) - {var _aVb_=demandeur[2]; - if(0 === _aVb_[0]) - var _aVc_=1; - else - var conditions=_aVb_[1],_aVc_=conditions[1]; - return caml_call2(Runtime_ocaml_Runtime[29],_A6_,_aVc_)} - return caml_call4(Runtime_ocaml_Runtime[63],_A7_,[0],_aVa_,_aU$_)}], - _aRy_=caml_call4(Runtime_ocaml_Runtime[63],_A8_,_aRx_,_aRw_,_aRv_)} - catch(_aU__) - {_aU__ = caml_wrap_exception(_aU__); - if(_aU__ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_A4_]; - throw _aU__} - var - condition_nationalite= - caml_call3 - (Runtime_ocaml_Runtime[28],_A9_,Runtime_ocaml_Runtime[12],_aRy_); - try - {var - _aRz_=function(param){throw Runtime_ocaml_Runtime[2]}, - _aRA_=function(param){return 0}, - _aRB_= - function(param) - {function _aU3_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1088175)} - function _aU4_(param) - {var - _aU5_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), - _aU6_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aU5_), - _aU7_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), - _aU8_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aU7_), - _aU9_=caml_call2(Runtime_ocaml_Runtime[83],_aU8_,_aU6_); - return caml_call2(Runtime_ocaml_Runtime[29],_A$_,_aU9_)} - return caml_call4(Runtime_ocaml_Runtime[63],_Ba_,[0],_aU4_,_aU3_)}, - _aRC_= - function(param) - {function _aUW_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1100144)} - function _aUX_(param) - {var - _aUY_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), - _aUZ_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aUY_), - _aU0_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), - _aU1_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aU0_), - _aU2_=caml_call2(Runtime_ocaml_Runtime[83],_aU1_,_aUZ_); - return caml_call2(Runtime_ocaml_Runtime[29],_Bb_,_aU2_)} - return caml_call4(Runtime_ocaml_Runtime[63],_Bc_,[0],_aUX_,_aUW_)}, - _aRD_= - function(param) - {function _aUP_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1153302)} - function _aUQ_(param) - {var - _aUR_=caml_call3(Runtime_ocaml_Runtime[57],2024,1,1), - _aUS_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aUR_), - _aUT_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), - _aUU_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aUT_), - _aUV_=caml_call2(Runtime_ocaml_Runtime[83],_aUU_,_aUS_); - return caml_call2(Runtime_ocaml_Runtime[29],_Bd_,_aUV_)} - return caml_call4(Runtime_ocaml_Runtime[63],_Be_,[0],_aUQ_,_aUP_)}, - _aRE_= - function(param) - {function _aUI_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1083840)} - function _aUJ_(param) - {var - _aUK_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), - _aUL_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aUK_), - _aUM_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,4), - _aUN_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aUM_), - _aUO_=caml_call2(Runtime_ocaml_Runtime[83],_aUN_,_aUL_); - return caml_call2(Runtime_ocaml_Runtime[29],_Bf_,_aUO_)} - return caml_call4(Runtime_ocaml_Runtime[63],_Bg_,[0],_aUJ_,_aUI_)}, - _aRF_= - function(param) - {function _aUB_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1041840)} - function _aUC_(param) - {var - _aUD_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _aUE_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aUD_), - _aUF_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), - _aUG_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aUF_), - _aUH_=caml_call2(Runtime_ocaml_Runtime[83],_aUG_,_aUE_); - return caml_call2(Runtime_ocaml_Runtime[29],_Bh_,_aUH_)} - return caml_call4(Runtime_ocaml_Runtime[63],_Bi_,[0],_aUC_,_aUB_)}, - _aRG_= - [0, - function(param) - {function _aUu_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_999840)} - function _aUv_(param) - {var - _aUw_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), - _aUx_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aUw_), - _aUy_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,4), - _aUz_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aUy_), - _aUA_=caml_call2(Runtime_ocaml_Runtime[83],_aUz_,_aUx_); - return caml_call2(Runtime_ocaml_Runtime[29],_Bj_,_aUA_)} - return caml_call4(Runtime_ocaml_Runtime[63],_Bk_,[0],_aUv_,_aUu_)}, - _aRF_, - _aRE_, - _aRD_, - _aRC_, - _aRB_], - _aRH_=caml_call4(Runtime_ocaml_Runtime[63],_Bl_,_aRG_,_aRA_,_aRz_)} - catch(_aUt_) - {_aUt_ = caml_wrap_exception(_aUt_); - if(_aUt_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_A__]; - throw _aUt_} - var - plafond_individuel_l815_9_secu= - caml_call3 - (Runtime_ocaml_Runtime[28],_Bm_,Runtime_ocaml_Runtime[13],_aRH_); - try - {var - _aRI_=function(param){return 0}, - _aRJ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Bo_,1)}, - _aRK_= - [0, - function(param) - {function _aUh_(param){return 0} - function _aUi_(param) - {var _aUs_=0 === menage[2][5][0]?1:0; - return caml_call2(Runtime_ocaml_Runtime[29],_Bp_,_aUs_)} - var - _aUj_= - [0, - function(param) - {function _aUk_(param){return 1} - function _aUl_(param) - {var _aUm_=menage[2][5]; - if(0 === _aUm_[0]) - var _aUn_=1; - else - var - personne=_aUm_[1], - _aUo_=personne[2], - _aUp_=caml_call3(Runtime_ocaml_Runtime[60],30,0,0), - _aUq_= - caml_call2(Runtime_ocaml_Runtime[94],personne[1],_aUp_), - _aUr_= - caml_call2(Runtime_ocaml_Runtime[124],_aUq_,date_courante), - _aUn_=caml_call2(Runtime_ocaml_Runtime[84],_aUr_,_aUo_); - return caml_call2(Runtime_ocaml_Runtime[29],_Bq_,_aUn_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Br_,[0],_aUl_,_aUk_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Bs_,_aUj_,_aUi_,_aUh_)}], - _aRL_=caml_call4(Runtime_ocaml_Runtime[63],_Bt_,_aRK_,_aRJ_,_aRI_)} - catch(_aUg_) - {_aUg_ = caml_wrap_exception(_aUg_); - if(_aUg_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Bn_]; - throw _aUg_} - var - condition_logement_location_ti= - caml_call3 - (Runtime_ocaml_Runtime[28],_Bu_,Runtime_ocaml_Runtime[12],_aRL_); - try - {var - _aRM_=function(param){return 0}, - _aRN_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Bw_,1)}, - _aRO_= - [0, - function(param) - {function _aT3_(param){return 1} - function _aT4_(param) - {switch(menage[2][3][0]) - {case 0:var _aUf_=1;break; - case 1:var _aUf_=1;break; - case 2:var _aUf_=menage[2][1];break; - case 3:var _aUf_=1;break; - default:var _aUf_=1} - return caml_call2(Runtime_ocaml_Runtime[29],_Bx_,_aUf_)} - var - _aT5_= - [0, - function(param) - {function _aT6_(param){return 0} - function _aT7_(param) - {switch(menage[2][3][0]) - {case 0: - var - usufruit_ou_propriete_famille$0= - usufruit_ou_propriete_famille; - break; - case 1:var usufruit_ou_propriete_famille$0=0;break; - case 2:var usufruit_ou_propriete_famille$0=0;break; - case 3:var usufruit_ou_propriete_famille$0=0;break; - default:var usufruit_ou_propriete_famille$0=0} - return caml_call2 - (Runtime_ocaml_Runtime[29], - _By_, - usufruit_ou_propriete_famille$0)} - var - _aT8_= - [0, - function(param) - {function _aT9_(param){return 1} - function _aT__(param) - {var _aT$_=menage[2][6]; - if(0 === _aT$_[0]) - var parts=_aT$_[1],parts$0=parts; - else - var parts$0=caml_call1(Runtime_ocaml_Runtime[39],cst_0$286); - var - _aUa_= - caml_call2 - (Runtime_ocaml_Runtime[111], - parts$0, - seuil_l822_3_parts_usufruit), - _aUb_=menage[2][4]; - if(0 === _aUb_[0]) - var parts$1=_aUb_[1],parts$2=parts$1; - else - var parts$2=caml_call1(Runtime_ocaml_Runtime[39],cst_0$285); - var - _aUc_= - caml_call2 - (Runtime_ocaml_Runtime[111], - parts$2, - seuil_l822_3_parts_propriete), - _aUd_=caml_call2(Runtime_ocaml_Runtime[83],_aUc_,_aUa_), - _aUe_= - caml_call2 - (Runtime_ocaml_Runtime[83], - usufruit_ou_propriete_famille, - _aUd_); - return caml_call2(Runtime_ocaml_Runtime[29],_Bz_,_aUe_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_BA_,[0],_aT__,_aT9_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_BB_,_aT8_,_aT7_,_aT6_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_BC_,_aT5_,_aT4_,_aT3_)}], - _aRP_=caml_call4(Runtime_ocaml_Runtime[63],_BD_,_aRO_,_aRN_,_aRM_)} - catch(_aT2_) - {_aT2_ = caml_wrap_exception(_aT2_); - if(_aT2_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Bv_]; - throw _aT2_} - var - condition_logement_mode_occupa= - caml_call3 - (Runtime_ocaml_Runtime[28],_BE_,Runtime_ocaml_Runtime[12],_aRP_); - try - {var - _aRQ_=function(param){return 0}, - _aRR_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_BG_,1)}, - _aRS_= - [0, - function(param) - {function _aT0_(param){return 1} - function _aT1_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29], - _BH_, - condition_logement_surface$0)} - return caml_call4(Runtime_ocaml_Runtime[63],_BI_,[0],_aT1_,_aT0_)}], - _aRT_=caml_call4(Runtime_ocaml_Runtime[63],_BJ_,_aRS_,_aRR_,_aRQ_)} - catch(_aTZ_) - {_aTZ_ = caml_wrap_exception(_aTZ_); - if(_aTZ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_BF_]; - throw _aTZ_} - var - condition_ouverture_l822_10_pe= - caml_call3 - (Runtime_ocaml_Runtime[28],_BK_,Runtime_ocaml_Runtime[12],_aRT_); - try - {var - _aRU_=function(param){return ouverture_droits_retraite_dot_$0}, - _aRV_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_BM_,1)}, - _aRW_=caml_call4(Runtime_ocaml_Runtime[63],_BN_,[0],_aRV_,_aRU_)} - catch(_aTY_) - {_aTY_ = caml_wrap_exception(_aTY_); - if(_aTY_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_BL_]; - throw _aTY_} - var - age_l161_17_2_secu= - caml_call3 - (Runtime_ocaml_Runtime[28],_BO_,Runtime_ocaml_Runtime[17],_aRW_); - try - {var - _aRX_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[122], - patrimoine_total_demandeur, - seuil_l822_5_patrimoine) - ?patrimoine_total_demandeur - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$287)}, - _aRY_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_BQ_,1)}, - _aRZ_= - [0, - function(param) - {function _aTI_(param){return demandeur[3][2]} - function _aTJ_(param) - {var - _aTX_= - caml_call2 - (Runtime_ocaml_Runtime[127], - patrimoine_total_demandeur, - seuil_l822_5_patrimoine); - return caml_call2(Runtime_ocaml_Runtime[29],_BR_,_aTX_)} - var - _aTK_= - [0, - function(param) - {function _aTL_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$288)} - function _aTM_(param) - {var _aTQ_=menage[1],_aTR_=0; - function _aTS_(acc,prestation) - {var - _aTU_=caml_call2(Runtime_ocaml_Runtime[86],prestation,_BS_), - _aTV_=caml_call2(Runtime_ocaml_Runtime[86],prestation,_BT_), - _aTW_=caml_call2(Runtime_ocaml_Runtime[84],_aTV_,_aTU_); - return caml_call2(Runtime_ocaml_Runtime[84],acc,_aTW_)} - var - _aTT_= - caml_call3(Runtime_ocaml_Runtime[135],_aTS_,_aTR_,_aTQ_); - return caml_call2(Runtime_ocaml_Runtime[29],_BU_,_aTT_)} - var - _aTN_= - [0, - function(param) - {function _aTO_(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$289)} - function _aTP_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_BV_,menage[2][2])} - return caml_call4 - (Runtime_ocaml_Runtime[63],_BW_,[0],_aTP_,_aTO_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_BX_,_aTN_,_aTM_,_aTL_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_BY_,_aTK_,_aTJ_,_aTI_)}], - _aR0_=caml_call4(Runtime_ocaml_Runtime[63],_BZ_,_aRZ_,_aRY_,_aRX_)} - catch(_aTH_) - {_aTH_ = caml_wrap_exception(_aTH_); - if(_aTH_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_BP_]; - throw _aTH_} - caml_call3 - (Runtime_ocaml_Runtime[28],_B0_,Runtime_ocaml_Runtime[13],_aR0_); - try - {var - _aR1_=function(param){return 0}, - _aR2_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_B2_,1)}, - _aR3_= - [0, - function(param) - {function _aTy_(param){return 1} - function _aTz_(param) - {var - _aTE_= - caml_call2 - (Runtime_ocaml_Runtime[83], - condition_logement_location_ti, - condition_ouverture_l822_10_pe), - _aTF_= - caml_call2 - (Runtime_ocaml_Runtime[83], - condition_logement_mode_occupa, - _aTE_), - _aTG_= - caml_call2 - (Runtime_ocaml_Runtime[83], - condition_logement_residence_p$0, - _aTF_); - return caml_call2(Runtime_ocaml_Runtime[29],_B3_,_aTG_)} - var - _aTA_= - [0, - function(param) - {function _aTB_(param){return 0} - function _aTC_(param) - {var - _aTD_= - caml_call2 - (Runtime_ocaml_Runtime[84], - condition_non_ouverture_l822_8, - condition_non_ouverture_l822_9); - return caml_call2(Runtime_ocaml_Runtime[29],_B4_,_aTD_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_B5_,[0],_aTC_,_aTB_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_B6_,_aTA_,_aTz_,_aTy_)}], - _aR4_=caml_call4(Runtime_ocaml_Runtime[63],_B7_,_aR3_,_aR2_,_aR1_)} - catch(_aTx_) - {_aTx_ = caml_wrap_exception(_aTx_); - if(_aTx_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_B1_]; - throw _aTx_} - var - eligibilite_logement= - caml_call3 - (Runtime_ocaml_Runtime[28],_B8_,Runtime_ocaml_Runtime[12],_aR4_); - try - {var - _aR5_= - function(param) - {var _aTw_=caml_call3(Runtime_ocaml_Runtime[60],5,0,0); - return caml_call2 - (Runtime_ocaml_Runtime[95],age_l161_17_2_secu,_aTw_)}, - _aR6_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_B__,1)}, - _aR7_=caml_call4(Runtime_ocaml_Runtime[63],_B$_,[0],_aR6_,_aR5_)} - catch(_aTv_) - {_aTv_ = caml_wrap_exception(_aTv_); - if(_aTv_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_B9_]; - throw _aTv_} - var - age_l351_8_1_secu= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ca_,Runtime_ocaml_Runtime[17],_aR7_); - try - {var - _aR8_=function(param){return 0}, - _aR9_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Cc_,1)}, - _aR__= - [0, - function(param) - {function _aTr_(param){return 1} - function _aTs_(param) - {var - _aTt_= - caml_call2 - (Runtime_ocaml_Runtime[83], - condition_logement_mode_occupa, - eligibilite_logement), - _aTu_= - caml_call2 - (Runtime_ocaml_Runtime[83],condition_nationalite,_aTt_); - return caml_call2(Runtime_ocaml_Runtime[29],_Cd_,_aTu_)} - return caml_call4(Runtime_ocaml_Runtime[63],_Ce_,[0],_aTs_,_aTr_)}], - _aR$_=caml_call4(Runtime_ocaml_Runtime[63],_Cf_,_aR__,_aR9_,_aR8_)} - catch(_aTq_) - {_aTq_ = caml_wrap_exception(_aTq_); - if(_aTq_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Cb_]; - throw _aTq_} - var - eligibilite= - caml_call3 - (Runtime_ocaml_Runtime[28],_Cg_,Runtime_ocaml_Runtime[12],_aR$_); - function _aSa_(param) - {try - {var - _aS3_=function(param){return 0}, - _aS4_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Ci_,1)}, - _aS5_= - [0, - function(param$0) - {function _aS8_(param){return 1} - function _aS9_(param$0) - {if(0 === param[0]) - var _aS__=0; - else - var - parent=param[1], - _aS$_=parent[6], - _aTa_= - caml_call2 - (Runtime_ocaml_Runtime[94],parent[1],age_l161_17_2_secu), - _aTb_= - caml_call2(Runtime_ocaml_Runtime[119],_aTa_,date_courante), - _aTc_=caml_call2(Runtime_ocaml_Runtime[83],_aTb_,_aS$_), - _aTd_=caml_call3(Runtime_ocaml_Runtime[60],65,0,0), - _aTe_=caml_call2(Runtime_ocaml_Runtime[94],parent[1],_aTd_), - _aTf_= - caml_call2(Runtime_ocaml_Runtime[119],_aTe_,date_courante), - _aTg_=caml_call2(Runtime_ocaml_Runtime[83],parent[7],_aTf_), - _aTh_= - caml_call2 - (Runtime_ocaml_Runtime[94],parent[1],age_l351_8_1_secu), - _aTi_= - caml_call2(Runtime_ocaml_Runtime[119],_aTh_,date_courante), - _aTj_=caml_call2(Runtime_ocaml_Runtime[84],_aTi_,_aTg_), - _aTk_=caml_call2(Runtime_ocaml_Runtime[84],_aTj_,_aTc_), - _aTl_=caml_call1(Runtime_ocaml_Runtime[39],cst_1_25), - _aTm_= - caml_call2 - (Runtime_ocaml_Runtime[104], - plafond_individuel_l815_9_secu, - _aTl_), - _aTn_=caml_call2(Runtime_ocaml_Runtime[117],parent[2],_aTm_), - _aTo_=caml_call2(Runtime_ocaml_Runtime[83],_aTn_,_aTk_), - _aTp_=caml_call2(Runtime_ocaml_Runtime[86],parent[4],_Ck_), - _aS__=caml_call2(Runtime_ocaml_Runtime[83],_aTp_,_aTo_); - return caml_call2(Runtime_ocaml_Runtime[29],_Cj_,_aS__)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Cl_,[0],_aS9_,_aS8_)}], - _aS6_=caml_call4(Runtime_ocaml_Runtime[63],_Cm_,_aS5_,_aS4_,_aS3_); - return _aS6_} - catch(_aS7_) - {_aS7_ = caml_wrap_exception(_aS7_); - if(_aS7_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ch_]; - throw _aS7_}} - var - condition_2_r823_4= - caml_call3 - (Runtime_ocaml_Runtime[28],_Cn_,Runtime_ocaml_Runtime[10],_aSa_); - function _aSb_(param) - {try - {var - _aSF_=function(param){return 0}, - _aSG_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Cp_,1)}, - _aSH_= - function(param$0) - {function _aSY_(param){return 1} - function _aSZ_(param$0) - {if(0 === param[0]) - var - enfant=param[1], - _aS0_=caml_call3(Runtime_ocaml_Runtime[60],21,0,0), - _aS1_=caml_call2(Runtime_ocaml_Runtime[94],enfant[4],_aS0_), - _aS2_= - caml_call2(Runtime_ocaml_Runtime[124],_aS1_,date_courante); - else - var _aS2_=0; - return caml_call2(Runtime_ocaml_Runtime[29],_Cq_,_aS2_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Cr_,[0],_aSZ_,_aSY_)}, - _aSI_= - [0, - function(param$0) - {function _aSL_(param){return 1} - function _aSM_(param$0) - {var - _aSU_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Cs_, - embed_personne_a_charge, - param), - _aSV_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Ct_,condition_2_r823_4), - _aSU_), - _aSW_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Cu_, - Runtime_ocaml_Runtime[12], - _aSV_), - _aSX_=caml_call2(Runtime_ocaml_Runtime[27],_Cv_,_aSW_); - return caml_call2(Runtime_ocaml_Runtime[29],_Cw_,_aSX_)} - var - _aSN_= - [0, - function(param$0) - {function _aSO_(param){return 1} - function _aSP_(param$0) - {if(0 === param[0]) - var _aSQ_=0; - else - var - parent=param[1], - _aSR_=caml_call1(Runtime_ocaml_Runtime[39],cst_1_25$0), - _aSS_= - caml_call2 - (Runtime_ocaml_Runtime[104], - plafond_individuel_l815_9_secu, - _aSR_), - _aST_=caml_call2(Runtime_ocaml_Runtime[117],parent[2],_aSS_), - _aSQ_=caml_call2(Runtime_ocaml_Runtime[83],parent[5],_aST_); - return caml_call2(Runtime_ocaml_Runtime[29],_Cx_,_aSQ_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Cy_,[0],_aSP_,_aSO_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Cz_,_aSN_,_aSM_,_aSL_)}, - _aSH_], - _aSJ_=caml_call4(Runtime_ocaml_Runtime[63],_CA_,_aSI_,_aSG_,_aSF_); - return _aSJ_} - catch(_aSK_) - {_aSK_ = caml_wrap_exception(_aSK_); - if(_aSK_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Co_]; - throw _aSK_}} - var - prise_en_compte_personne_a_cha= - caml_call3 - (Runtime_ocaml_Runtime[28],_CB_,Runtime_ocaml_Runtime[10],_aSb_); - try - {var - _aSc_= - function(param) - {var _aSA_=menage[3]; - function _aSB_(personne_a_charge) - {var - _aSC_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _CD_, - embed_personne_a_charge, - personne_a_charge), - _aSD_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _CE_, - prise_en_compte_personne_a_cha), - _aSC_), - _aSE_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _CF_, - Runtime_ocaml_Runtime[12], - _aSD_); - return caml_call2(Runtime_ocaml_Runtime[27],_CG_,_aSE_)} - return caml_call2(Runtime_ocaml_Runtime[90],_aSB_,_aSA_)}, - _aSd_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_CH_,1)}, - _aSe_=caml_call4(Runtime_ocaml_Runtime[63],_CI_,[0],_aSd_,_aSc_)} - catch(_aSz_) - {_aSz_ = caml_wrap_exception(_aSz_); - if(_aSz_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_CC_]; - throw _aSz_} - var - _aSf_=caml_call1(Runtime_ocaml_Runtime[18],embed_personne_a_charge), - personnes_a_charge_prises_en_c= - caml_call3(Runtime_ocaml_Runtime[28],_CJ_,_aSf_,_aSe_); - try - {var - _aSg_= - function(param) - {function _aSv_(personne_a_charge) - {if(0 === personne_a_charge[0]) - {var enfant=personne_a_charge[1];return 0 === enfant[7][0]?0:1} - return 0} - var - _aSw_= - caml_call2 - (Runtime_ocaml_Runtime[90], - _aSv_, - personnes_a_charge_prises_en_c); - function _aSx_(personne_a_charge) - {if(0 === personne_a_charge[0]) - {var enfant=personne_a_charge[1],_aSy_=enfant[7]; - if(0 === _aSy_[0]) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$290); - var coeff=_aSy_[1]; - return coeff} - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$291)} - return caml_call2(Runtime_ocaml_Runtime[87],_aSx_,_aSw_)}, - _aSh_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_CL_,1)}, - _aSi_=caml_call4(Runtime_ocaml_Runtime[63],_CM_,[0],_aSh_,_aSg_)} - catch(_aSu_) - {_aSu_ = caml_wrap_exception(_aSu_); - if(_aSu_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_CK_]; - throw _aSu_} - var - _aSj_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), - coefficents_enfants_garde_alte= - caml_call3(Runtime_ocaml_Runtime[28],_CN_,_aSj_,_aSi_); - try - {var - _aSk_= - function(param) - {return caml_call1 - (Runtime_ocaml_Runtime[68],personnes_a_charge_prises_en_c)}, - _aSl_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_CP_,1)}, - _aSm_=caml_call4(Runtime_ocaml_Runtime[63],_CQ_,[0],_aSl_,_aSk_)} - catch(_aSt_) - {_aSt_ = caml_wrap_exception(_aSt_); - if(_aSt_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_CO_]; - throw _aSt_} - var - nombre_personnes_a_charge_pris= - caml_call3 - (Runtime_ocaml_Runtime[28],_CR_,Runtime_ocaml_Runtime[14],_aSm_); - try - {var - _aSn_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2), - _aSo_= - caml_call2 - (Runtime_ocaml_Runtime[111],seuil_l822_3_parts_usufruit,_aSn_)} - catch(_aSs_) - {_aSs_ = caml_wrap_exception(_aSs_); - if(_aSs_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_CS_]; - throw _aSs_} - if(_aSo_) - {try - {var - _aSp_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2$0), - _aSq_= - caml_call2 - (Runtime_ocaml_Runtime[111],seuil_l822_3_parts_propriete,_aSp_)} - catch(_aSr_) - {_aSr_ = caml_wrap_exception(_aSr_); - if(_aSr_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_CT_]; - throw _aSr_} - if(_aSq_) - return [0, - date_courante, - eligibilite, - nombre_personnes_a_charge_pris, - coefficents_enfants_garde_alte, - condition_2_r823_4]; - throw [0,Runtime_ocaml_Runtime[3],_CU_]} - throw [0,Runtime_ocaml_Runtime[3],_CV_]} - function ressources_aides_personnelle_l(ressources_aides_personnelle_l) - {var - ressources_demandeur=ressources_aides_personnelle_l[1], - ressources_conjoint=ressources_aides_personnelle_l[2], - personnes_vivant_habituellemen=ressources_aides_personnelle_l[3], - demandeur_exerce_activite_remu=ressources_aides_personnelle_l[4], - conjoint_exerce_activite_remun=ressources_aides_personnelle_l[5], - personnes_a_charge=ressources_aides_personnelle_l[6], - situation_familiale=ressources_aides_personnelle_l[7], - mode_occupation=ressources_aides_personnelle_l[8], - condition_age_bourse_enseignem=ressources_aides_personnelle_l[9], - demandeur_poursuit_des_etudes=ressources_aides_personnelle_l[10], - date_demande_ou_reexamen_droit=ressources_aides_personnelle_l[11], - paiement_logement_distinct_pro=ressources_aides_personnelle_l[12]; - try - {var - _aPR_=function(param){throw Runtime_ocaml_Runtime[2]}, - _aPS_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_CX_,0)}, - _aPT_=caml_call4(Runtime_ocaml_Runtime[63],_CY_,[0],_aPS_,_aPR_)} - catch(_aQT_) - {_aQT_ = caml_wrap_exception(_aQT_); - if(_aQT_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_CW_]; - throw _aQT_} - caml_call3 - (Runtime_ocaml_Runtime[28],_CZ_,Runtime_ocaml_Runtime[13],_aPT_); - try - {var - _aPU_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_258900)}, - _aPV_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_C1_,1)}, - _aPW_=caml_call4(Runtime_ocaml_Runtime[63],_C2_,[0],_aPV_,_aPU_)} - catch(_aQS_) - {_aQS_ = caml_wrap_exception(_aQS_); - if(_aQS_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_C0_]; - throw _aQS_} - var - montant_forfaitaire_r_822_8= - caml_call3 - (Runtime_ocaml_Runtime[28],_C3_,Runtime_ocaml_Runtime[13],_aPW_); - try - {var - _aPX_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_9500)}, - _aPY_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_C5_,1)}, - _aPZ_=caml_call4(Runtime_ocaml_Runtime[63],_C6_,[0],_aPY_,_aPX_)} - catch(_aQR_) - {_aQR_ = caml_wrap_exception(_aQR_); - if(_aQR_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_C4_]; - throw _aQR_} - var - montant_forfaitaire_r_822_7= - caml_call3 - (Runtime_ocaml_Runtime[28],_C7_,Runtime_ocaml_Runtime[13],_aPZ_); - try - {var - _aP0_=function(param){throw Runtime_ocaml_Runtime[2]}, - _aP1_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_C9_,0)}, - _aP2_=caml_call4(Runtime_ocaml_Runtime[63],_C__,[0],_aP1_,_aP0_)} - catch(_aQQ_) - {_aQQ_ = caml_wrap_exception(_aQQ_); - if(_aQQ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_C8_]; - throw _aQQ_} - var - ressources_forfaitaires_r822_2= - caml_call3 - (Runtime_ocaml_Runtime[28],_C$_,Runtime_ocaml_Runtime[13],_aP2_); - try - {var - _aP3_= - function(param) - {function _aQM_(personne){return personne[2]} - var - _aQN_= - caml_call2 - (Runtime_ocaml_Runtime[87], - _aQM_, - personnes_vivant_habituellemen), - _aQO_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$292); - function _aQP_(sum1,sum2) - {return caml_call2(Runtime_ocaml_Runtime[93],sum1,sum2)} - return caml_call3(Runtime_ocaml_Runtime[88],_aQP_,_aQO_,_aQN_)}, - _aP4_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Db_,1)}, - _aP5_=caml_call4(Runtime_ocaml_Runtime[63],_Dc_,[0],_aP4_,_aP3_)} - catch(_aQL_) - {_aQL_ = caml_wrap_exception(_aQL_); - if(_aQL_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Da_]; - throw _aQL_} - var - ressources_personnes_vivant_ha= - caml_call3 - (Runtime_ocaml_Runtime[28],_Dd_,Runtime_ocaml_Runtime[13],_aP5_); - try - {var - _aP6_= - function(param) - {var - _aQH_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$293), - _aQI_=caml_call1(Runtime_ocaml_Runtime[68],personnes_a_charge); - if(caml_call2(Runtime_ocaml_Runtime[86],_aQI_,_aQH_)) - var abattement=caml_call1(Runtime_ocaml_Runtime[31],cst_0$294); - else - var - _aQJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$45), - _aQK_=caml_call1(Runtime_ocaml_Runtime[68],personnes_a_charge), - abattement= - caml_call2(Runtime_ocaml_Runtime[115],_aQK_,_aQJ_) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_90100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_135000); - switch(situation_familiale[0]) - {case 0:return abattement; - case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$295); - case 2:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$296); - case 3:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$297); - case 4:return abattement; - default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$298)}}, - _aP7_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Df_,1)}, - _aP8_=caml_call4(Runtime_ocaml_Runtime[63],_Dg_,[0],_aP7_,_aP6_)} - catch(_aQG_) - {_aQG_ = caml_wrap_exception(_aQG_); - if(_aQG_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_De_]; - throw _aQG_} - caml_call3 - (Runtime_ocaml_Runtime[28],_Dh_,Runtime_ocaml_Runtime[13],_aP8_); - try - {var - _aP9_=function(param){return date_demande_ou_reexamen_droit}, - _aP__= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Dj_,1)}, - _aP$_=caml_call4(Runtime_ocaml_Runtime[63],_Dk_,[0],_aP__,_aP9_), - base_mensuelle_allocations_fam= - caml_call3 - (Runtime_ocaml_Runtime[28],_Dl_,Runtime_ocaml_Runtime[16],_aP$_)} - catch(_aQF_) - {_aQF_ = caml_wrap_exception(_aQF_); - if(_aQF_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Di_]; - throw _aQF_} - var - _aQa_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Dm_,base_mensuelle_allocations_fam$5), - [0,base_mensuelle_allocations_fam]), - result=caml_call2(Runtime_ocaml_Runtime[27],_Dn_,_aQa_), - base_mensuelle_allocations_fam$0=result[1]; - try - {var - _aQb_= - function(param) - {return 0 === paiement_logement_distinct_pro[0] - ?montant_forfaitaire_r_822_8 - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$299)}, - _aQc_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Dp_,1)}, - _aQd_=caml_call4(Runtime_ocaml_Runtime[63],_Dq_,[0],_aQc_,_aQb_)} - catch(_aQE_) - {_aQE_ = caml_wrap_exception(_aQE_); - if(_aQE_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Do_]; - throw _aQE_} - caml_call3 - (Runtime_ocaml_Runtime[28],_Dr_,Runtime_ocaml_Runtime[13],_aQd_); - try - {var - _aQe_= - function(param) - {var - _aQD_= - caml_call2 - (Runtime_ocaml_Runtime[93], - ressources_demandeur, - ressources_conjoint); - return caml_call2 - (Runtime_ocaml_Runtime[93], - _aQD_, - ressources_personnes_vivant_ha)}, - _aQf_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Dt_,1)}, - _aQg_= - [0, - function(param) - {function _aQw_(param){return ressources_forfaitaires_r822_2} - function _aQx_(param) - {var - _aQy_= - caml_call2 - (Runtime_ocaml_Runtime[83], - condition_age_bourse_enseignem, - demandeur_poursuit_des_etudes); - switch(mode_occupation[0]) - {case 0:var _aQz_=0;break; - case 1:var _aQz_=1;break; - case 2:var _aQz_=0;break; - case 3:var _aQz_=0;break; - default:var _aQz_=0} - switch(mode_occupation[0]) - {case 0:var _aQA_=1;break; - case 1:var _aQA_=0;break; - case 2:var _aQA_=0;break; - case 3:var _aQA_=0;break; - default:var _aQA_=0} - var - _aQB_=caml_call2(Runtime_ocaml_Runtime[84],_aQA_,_aQz_), - _aQC_=caml_call2(Runtime_ocaml_Runtime[83],_aQB_,_aQy_); - return caml_call2(Runtime_ocaml_Runtime[29],_Du_,_aQC_)} - return caml_call4(Runtime_ocaml_Runtime[63],_Dv_,[0],_aQx_,_aQw_)}], - _aQh_=caml_call4(Runtime_ocaml_Runtime[63],_Dw_,_aQg_,_aQf_,_aQe_)} - catch(_aQv_) - {_aQv_ = caml_wrap_exception(_aQv_); - if(_aQv_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ds_]; - throw _aQv_} - var - ressources_prises_en_compte= - caml_call3 - (Runtime_ocaml_Runtime[28],_Dx_,Runtime_ocaml_Runtime[13],_aQh_); - try - {var - _aQi_= - function(param) - {var - _aQq_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$15), - _aQr_= - caml_call2 - (Runtime_ocaml_Runtime[104], - base_mensuelle_allocations_fam$0, - _aQq_), - _aQs_= - caml_call2 - (Runtime_ocaml_Runtime[93], - ressources_demandeur, - ressources_conjoint), - _aQt_=caml_call2(Runtime_ocaml_Runtime[127],_aQs_,_aQr_), - _aQu_= - caml_call2 - (Runtime_ocaml_Runtime[83], - conjoint_exerce_activite_remun, - _aQt_); - return caml_call2 - (Runtime_ocaml_Runtime[83], - demandeur_exerce_activite_remu, - _aQu_) - ?montant_forfaitaire_r_822_7 - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$300)}, - _aQj_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Dz_,1)}, - _aQk_=caml_call4(Runtime_ocaml_Runtime[63],_DA_,[0],_aQj_,_aQi_)} - catch(_aQp_) - {_aQp_ = caml_wrap_exception(_aQp_); - if(_aQp_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Dy_]; - throw _aQp_} - caml_call3 - (Runtime_ocaml_Runtime[28],_DB_,Runtime_ocaml_Runtime[13],_aQk_); - try - {var - _aQl_=1, - _aQm_= - function(acc,personne) - {return caml_call2(Runtime_ocaml_Runtime[83],acc,personne[1])}, - _aQn_= - caml_call3 - (Runtime_ocaml_Runtime[135], - _aQm_, - _aQl_, - personnes_vivant_habituellemen)} - catch(_aQo_) - {_aQo_ = caml_wrap_exception(_aQo_); - if(_aQo_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_DC_]; - throw _aQo_} - if(_aQn_)return [0,ressources_prises_en_compte]; - throw [0,Runtime_ocaml_Runtime[3],_DD_]} - function eligibilite_prestations_famili(eligibilite_prestations_famili) - {var - date_courante=eligibilite_prestations_famili[1], - residence=eligibilite_prestations_famili[3]; - try - {var - _aOz_= - function(param){return caml_call3(Runtime_ocaml_Runtime[60],20,0,0)}, - _aOA_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DF_,1)}, - _aOB_=caml_call4(Runtime_ocaml_Runtime[63],_DG_,[0],_aOA_,_aOz_)} - catch(_aPQ_) - {_aPQ_ = caml_wrap_exception(_aPQ_); - if(_aPQ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_DE_]; - throw _aPQ_} - var - age_l512_3_2= - caml_call3 - (Runtime_ocaml_Runtime[28],_DH_,Runtime_ocaml_Runtime[17],_aOB_); - try - {var - _aOC_=function(param){return date_courante}, - _aOD_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DJ_,1)}, - _aOE_=caml_call4(Runtime_ocaml_Runtime[63],_DK_,[0],_aOD_,_aOC_), - smic_dot_date_courante= - caml_call3 - (Runtime_ocaml_Runtime[28],_DL_,Runtime_ocaml_Runtime[16],_aOE_)} - catch(_aPP_) - {_aPP_ = caml_wrap_exception(_aPP_); - if(_aPP_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_DI_]; - throw _aPP_} - try - {var - _aOF_=function(param){return residence}, - _aOG_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DN_,1)}, - _aOH_=caml_call4(Runtime_ocaml_Runtime[63],_DO_,[0],_aOG_,_aOF_), - smic_dot_residence= - caml_call3 - (Runtime_ocaml_Runtime[28],_DP_,embed_collectivite$0,_aOH_)} - catch(_aPO_) - {_aPO_ = caml_wrap_exception(_aPO_); - if(_aPO_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_DM_]; - throw _aPO_} - var - _aOI_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_DQ_,smic$1), - [0,smic_dot_date_courante,smic_dot_residence]), - result=caml_call2(Runtime_ocaml_Runtime[27],_DR_,_aOI_), - smic_dot_brut_horaire=result[1]; - try - {var - _aOJ_=function(param){return 0}, - _aOK_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DT_,1)}, - _aOL_= - [0, - function(param) - {function _aPB_(param){return 1} - function _aPC_(param) - {var - _aPD_=caml_call2(Runtime_ocaml_Runtime[86],residence,_DU_), - _aPE_=caml_call2(Runtime_ocaml_Runtime[86],residence,_DV_), - _aPF_=caml_call2(Runtime_ocaml_Runtime[84],_aPE_,_aPD_), - _aPG_=caml_call2(Runtime_ocaml_Runtime[86],residence,_DW_), - _aPH_=caml_call2(Runtime_ocaml_Runtime[84],_aPG_,_aPF_), - _aPI_=caml_call2(Runtime_ocaml_Runtime[86],residence,_DX_), - _aPJ_=caml_call2(Runtime_ocaml_Runtime[84],_aPI_,_aPH_), - _aPK_=caml_call2(Runtime_ocaml_Runtime[86],residence,_DY_), - _aPL_=caml_call2(Runtime_ocaml_Runtime[84],_aPK_,_aPJ_), - _aPM_=caml_call2(Runtime_ocaml_Runtime[86],residence,_DZ_), - _aPN_=caml_call2(Runtime_ocaml_Runtime[84],_aPM_,_aPL_); - return caml_call2(Runtime_ocaml_Runtime[29],_D0_,_aPN_)} - return caml_call4(Runtime_ocaml_Runtime[63],_D1_,[0],_aPC_,_aPB_)}], - _aOM_=caml_call4(Runtime_ocaml_Runtime[63],_D2_,_aOL_,_aOK_,_aOJ_)} - catch(_aPA_) - {_aPA_ = caml_wrap_exception(_aPA_); - if(_aPA_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_DS_]; - throw _aPA_} - var - regime_outre_mer_l751_1= - caml_call3 - (Runtime_ocaml_Runtime[28],_D3_,Runtime_ocaml_Runtime[12],_aOM_); - try - {var - _aON_= - function(param) - {var - _aPx_=caml_call1(Runtime_ocaml_Runtime[39],cst_169$1), - _aPy_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55$1), - _aPz_= - caml_call2 - (Runtime_ocaml_Runtime[104],smic_dot_brut_horaire,_aPy_); - return caml_call2(Runtime_ocaml_Runtime[104],_aPz_,_aPx_)}, - _aOO_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_D5_,1)}, - _aOP_= - [0, - function(param) - {function _aPs_(param) - {var - _aPu_=caml_call1(Runtime_ocaml_Runtime[39],cst_169$2), - _aPv_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55$2), - _aPw_= - caml_call2 - (Runtime_ocaml_Runtime[104],smic_dot_brut_horaire,_aPv_); - return caml_call2(Runtime_ocaml_Runtime[104],_aPw_,_aPu_)} - function _aPt_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_D6_,regime_outre_mer_l751_1)} - return caml_call4(Runtime_ocaml_Runtime[63],_D7_,[0],_aPt_,_aPs_)}], - _aOQ_=caml_call4(Runtime_ocaml_Runtime[63],_D8_,_aOP_,_aOO_,_aON_)} - catch(_aPr_) - {_aPr_ = caml_wrap_exception(_aPr_); - if(_aPr_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_D4_]; - throw _aPr_} - var - plafond_l512_3_2= - caml_call3 - (Runtime_ocaml_Runtime[28],_D9_,Runtime_ocaml_Runtime[13],_aOQ_); - function _aOR_(param) - {try - {var - _aPd_=function(param){return 0}, - _aPe_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_D$_,1)}, - _aPf_= - [0, - function(param$0) - {function _aPi_(param){return 1} - function _aPj_(param$0) - {var - _aPk_= - caml_call2 - (Runtime_ocaml_Runtime[117],param[3],plafond_l512_3_2); - switch(param[2][0]) - {case 0:var _aPl_=0;break; - case 1:var _aPl_=0;break; - default:var _aPl_=1} - switch(param[2][0]) - {case 0:var _aPm_=0;break; - case 1:var _aPm_=1;break; - default:var _aPm_=0} - var _aPn_=caml_call2(Runtime_ocaml_Runtime[84],_aPm_,_aPl_); - switch(param[2][0]) - {case 0:var _aPo_=1;break; - case 1:var _aPo_=0;break; - default:var _aPo_=0} - var - _aPp_=caml_call2(Runtime_ocaml_Runtime[84],_aPo_,_aPn_), - _aPq_=caml_call2(Runtime_ocaml_Runtime[83],_aPp_,_aPk_); - return caml_call2(Runtime_ocaml_Runtime[29],_Ea_,_aPq_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Eb_,[0],_aPj_,_aPi_)}], - _aPg_=caml_call4(Runtime_ocaml_Runtime[63],_Ec_,_aPf_,_aPe_,_aPd_); - return _aPg_} - catch(_aPh_) - {_aPh_ = caml_wrap_exception(_aPh_); - if(_aPh_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_D__]; - throw _aPh_}} - var - conditions_hors_age= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ed_,Runtime_ocaml_Runtime[10],_aOR_); - function _aOS_(param) - {try - {var - _aOT_=function(param){return 0}, - _aOU_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Ef_,1)}, - _aOV_= - [0, - function(param$0) - {function _aOY_(param){throw Runtime_ocaml_Runtime[2]} - function _aOZ_(param){return 0} - var - _aO0_= - [0, - function(param$0) - {function _aO1_(param){return 1} - function _aO2_(param$0) - {switch(param[2][0]) - {case 0:var _aPa_=0;break; - case 1:var _aPa_=1;break; - default:var _aPa_=0} - switch(param[2][0]) - {case 0:var _aPb_=1;break; - case 1:var _aPb_=0;break; - default:var _aPb_=0} - var _aPc_=caml_call2(Runtime_ocaml_Runtime[84],_aPb_,_aPa_); - return caml_call2(Runtime_ocaml_Runtime[29],_Eg_,_aPc_)} - var - _aO3_= - [0, - function(param$0) - {function _aO4_(param){return 1} - function _aO5_(param$0) - {var - _aO6_= - caml_call2(Runtime_ocaml_Runtime[94],param[4],age_l512_3_2), - _aO7_= - caml_call2(Runtime_ocaml_Runtime[124],_aO6_,date_courante), - _aO8_= - caml_call2 - (Runtime_ocaml_Runtime[117],param[3],plafond_l512_3_2), - _aO9_=caml_call2(Runtime_ocaml_Runtime[83],_aO8_,_aO7_); - switch(param[2][0]) - {case 0:var _aO__=0;break; - case 1:var _aO__=0;break; - default:var _aO__=1} - var _aO$_=caml_call2(Runtime_ocaml_Runtime[83],_aO__,_aO9_); - return caml_call2(Runtime_ocaml_Runtime[29],_Eh_,_aO$_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Ei_,[0],_aO5_,_aO4_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Ej_,_aO3_,_aO2_,_aO1_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Ek_,_aO0_,_aOZ_,_aOY_)}], - _aOW_=caml_call4(Runtime_ocaml_Runtime[63],_El_,_aOV_,_aOU_,_aOT_); - return _aOW_} - catch(_aOX_) - {_aOX_ = caml_wrap_exception(_aOX_); - if(_aOX_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ee_]; - throw _aOX_}} - var - droit_ouvert= - caml_call3 - (Runtime_ocaml_Runtime[28],_Em_,Runtime_ocaml_Runtime[10],_aOS_); - return [0, - droit_ouvert, - conditions_hors_age, - age_l512_3_2, - regime_outre_mer_l751_1]} - function calcul_allocation_logement_loc(calcul_allocation_logement_loc) - {var - loyer_principal=calcul_allocation_logement_loc[1], - ressources_menage_arrondies=calcul_allocation_logement_loc[2], - beneficiaire_aide_adulte_ou_en=calcul_allocation_logement_loc[3], - date_courante=calcul_allocation_logement_loc[4], - nombre_personnes_a_charge=calcul_allocation_logement_loc[5], - situation_familiale_calcul_apl=calcul_allocation_logement_loc[6], - zone=calcul_allocation_logement_loc[7], - logement_est_chambre=calcul_allocation_logement_loc[8], - agees_ou_handicap_adultes_hebe=calcul_allocation_logement_loc[9], - type_aide=calcul_allocation_logement_loc[10], - colocation=calcul_allocation_logement_loc[11], - reduction_loyer_solidarite=calcul_allocation_logement_loc[12], - logement_meuble_d842_2=calcul_allocation_logement_loc[13], - changement_logement_d842_4=calcul_allocation_logement_loc[14]; - try - {var - _aNp_=function(param){return loyer_principal}, - _aNq_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Eo_,1)}, - _aNr_=caml_call4(Runtime_ocaml_Runtime[63],_Ep_,[0],_aNq_,_aNp_), - calcul_apl_locatif_dot_loyer_p= - caml_call3 - (Runtime_ocaml_Runtime[28],_Eq_,Runtime_ocaml_Runtime[13],_aNr_)} - catch(_aOy_) - {_aOy_ = caml_wrap_exception(_aOy_); - if(_aOy_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_En_]; - throw _aOy_} - try - {var - _aNs_=function(param){return ressources_menage_arrondies}, - _aNt_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Es_,1)}, - _aNu_=caml_call4(Runtime_ocaml_Runtime[63],_Et_,[0],_aNt_,_aNs_), - calcul_apl_locatif_dot_ressour= - caml_call3 - (Runtime_ocaml_Runtime[28],_Eu_,Runtime_ocaml_Runtime[13],_aNu_)} - catch(_aOx_) - {_aOx_ = caml_wrap_exception(_aOx_); - if(_aOx_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Er_]; - throw _aOx_} - try - {var - _aNv_=function(param){return beneficiaire_aide_adulte_ou_en}, - _aNw_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ew_,1)}, - _aNx_=caml_call4(Runtime_ocaml_Runtime[63],_Ex_,[0],_aNw_,_aNv_), - calcul_apl_locatif_dot_benefic= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ey_,Runtime_ocaml_Runtime[12],_aNx_)} - catch(_aOw_) - {_aOw_ = caml_wrap_exception(_aOw_); - if(_aOw_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ev_]; - throw _aOw_} - try - {var - _aNy_=function(param){return date_courante}, - _aNz_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EA_,1)}, - _aNA_=caml_call4(Runtime_ocaml_Runtime[63],_EB_,[0],_aNz_,_aNy_), - calcul_apl_locatif_dot_date_co= - caml_call3 - (Runtime_ocaml_Runtime[28],_EC_,Runtime_ocaml_Runtime[16],_aNA_)} - catch(_aOv_) - {_aOv_ = caml_wrap_exception(_aOv_); - if(_aOv_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ez_]; - throw _aOv_} - try - {var - _aNB_=function(param){return nombre_personnes_a_charge}, - _aNC_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EE_,1)}, - _aND_=caml_call4(Runtime_ocaml_Runtime[63],_EF_,[0],_aNC_,_aNB_), - calcul_apl_locatif_dot_nombre_= - caml_call3 - (Runtime_ocaml_Runtime[28],_EG_,Runtime_ocaml_Runtime[14],_aND_)} - catch(_aOu_) - {_aOu_ = caml_wrap_exception(_aOu_); - if(_aOu_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ED_]; - throw _aOu_} - try - {var - _aNE_=function(param){return situation_familiale_calcul_apl}, - _aNF_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EI_,1)}, - _aNG_=caml_call4(Runtime_ocaml_Runtime[63],_EJ_,[0],_aNF_,_aNE_), - calcul_apl_locatif_dot_situati= - caml_call3 - (Runtime_ocaml_Runtime[28], - _EK_, - embed_situation_familiale_calc, - _aNG_)} - catch(_aOt_) - {_aOt_ = caml_wrap_exception(_aOt_); - if(_aOt_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_EH_]; - throw _aOt_} - try - {var - _aNH_=function(param){return zone}, - _aNI_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EM_,1)}, - _aNJ_=caml_call4(Runtime_ocaml_Runtime[63],_EN_,[0],_aNI_,_aNH_), - calcul_apl_locatif_dot_zone= - caml_call3 - (Runtime_ocaml_Runtime[28],_EO_,embed_zone_d_habitation,_aNJ_)} - catch(_aOs_) - {_aOs_ = caml_wrap_exception(_aOs_); - if(_aOs_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_EL_]; - throw _aOs_} - try - {var - _aNK_=function(param){return logement_est_chambre}, - _aNL_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EQ_,1)}, - _aNM_=caml_call4(Runtime_ocaml_Runtime[63],_ER_,[0],_aNL_,_aNK_), - calcul_apl_locatif_dot_logemen= - caml_call3 - (Runtime_ocaml_Runtime[28],_ES_,Runtime_ocaml_Runtime[12],_aNM_)} - catch(_aOr_) - {_aOr_ = caml_wrap_exception(_aOr_); - if(_aOr_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_EP_]; - throw _aOr_} - try - {var - _aNN_=function(param){return agees_ou_handicap_adultes_hebe}, - _aNO_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EU_,1)}, - _aNP_=caml_call4(Runtime_ocaml_Runtime[63],_EV_,[0],_aNO_,_aNN_), - calcul_apl_locatif_dot_agees_o= - caml_call3 - (Runtime_ocaml_Runtime[28],_EW_,Runtime_ocaml_Runtime[12],_aNP_)} - catch(_aOq_) - {_aOq_ = caml_wrap_exception(_aOq_); - if(_aOq_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ET_]; - throw _aOq_} - try - {var - _aNQ_=function(param){return type_aide}, - _aNR_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EY_,1)}, - _aNS_=caml_call4(Runtime_ocaml_Runtime[63],_EZ_,[0],_aNR_,_aNQ_), - calcul_apl_locatif_dot_type_ai= - caml_call3 - (Runtime_ocaml_Runtime[28], - _E0_, - embed_type_aides_personnelle_l, - _aNS_)} - catch(_aOp_) - {_aOp_ = caml_wrap_exception(_aOp_); - if(_aOp_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_EX_]; - throw _aOp_} - try - {var - _aNT_=function(param){return colocation}, - _aNU_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_E2_,1)}, - _aNV_=caml_call4(Runtime_ocaml_Runtime[63],_E3_,[0],_aNU_,_aNT_), - calcul_apl_locatif_dot_colocat= - caml_call3 - (Runtime_ocaml_Runtime[28],_E4_,Runtime_ocaml_Runtime[12],_aNV_)} - catch(_aOo_) - {_aOo_ = caml_wrap_exception(_aOo_); - if(_aOo_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_E1_]; - throw _aOo_} - try - {var - _aNW_=function(param){return reduction_loyer_solidarite}, - _aNX_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_E6_,1)}, - _aNY_=caml_call4(Runtime_ocaml_Runtime[63],_E7_,[0],_aNX_,_aNW_), - calcul_apl_locatif_dot_reducti= - caml_call3 - (Runtime_ocaml_Runtime[28],_E8_,Runtime_ocaml_Runtime[13],_aNY_)} - catch(_aOn_) - {_aOn_ = caml_wrap_exception(_aOn_); - if(_aOn_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_E5_]; - throw _aOn_} - try - {var - _aNZ_=function(param){return logement_meuble_d842_2}, - _aN0_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_E__,1)}, - _aN1_=caml_call4(Runtime_ocaml_Runtime[63],_E$_,[0],_aN0_,_aNZ_), - calcul_apl_locatif_dot_logemen$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_Fa_,Runtime_ocaml_Runtime[12],_aN1_)} - catch(_aOm_) - {_aOm_ = caml_wrap_exception(_aOm_); - if(_aOm_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_E9_]; - throw _aOm_} - var - _aN2_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Fb_,calcul_aide_personnalisee_loge), - [0, - calcul_apl_locatif_dot_loyer_p, - calcul_apl_locatif_dot_ressour, - calcul_apl_locatif_dot_benefic, - calcul_apl_locatif_dot_date_co, - calcul_apl_locatif_dot_nombre_, - calcul_apl_locatif_dot_situati, - calcul_apl_locatif_dot_zone, - calcul_apl_locatif_dot_logemen, - calcul_apl_locatif_dot_agees_o, - calcul_apl_locatif_dot_type_ai, - calcul_apl_locatif_dot_colocat, - calcul_apl_locatif_dot_reducti, - calcul_apl_locatif_dot_logemen$0]), - result=caml_call2(Runtime_ocaml_Runtime[27],_Fc_,_aN2_), - calcul_apl_locatif_dot_aide_fi=result[6], - calcul_apl_locatif_dot_traitem=result[7]; - function _aN3_(param) - {try - {var - _aOb_= - function(param$0) - {var - _aOj_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Fe_, - Runtime_ocaml_Runtime[13], - param), - _aOk_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Ff_, - calcul_apl_locatif_dot_traitem), - _aOj_), - _aOl_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Fg_, - Runtime_ocaml_Runtime[13], - _aOk_); - return caml_call2(Runtime_ocaml_Runtime[27],_Fh_,_aOl_)}, - _aOc_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Fi_,1)}, - _aOd_= - [0, - function(param$0) - {function _aOg_(param$0){return param} - function _aOh_(param) - {if(0 === changement_logement_d842_4[0]) - var - infos=changement_logement_d842_4[1], - _aOi_= - caml_call2 - (Runtime_ocaml_Runtime[127],loyer_principal,infos[1]); - else - var _aOi_=0; - return caml_call2(Runtime_ocaml_Runtime[29],_Fj_,_aOi_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Fk_,[0],_aOh_,_aOg_)}], - _aOe_=caml_call4(Runtime_ocaml_Runtime[63],_Fl_,_aOd_,_aOc_,_aOb_); - return _aOe_} - catch(_aOf_) - {_aOf_ = caml_wrap_exception(_aOf_); - if(_aOf_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Fd_]; - throw _aOf_}} - var - traitement_aide_finale= - caml_call3 - (Runtime_ocaml_Runtime[28],_Fm_,Runtime_ocaml_Runtime[10],_aN3_); - try - {var - _aN4_=function(param){return calcul_apl_locatif_dot_aide_fi}, - _aN5_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Fo_,1)}, - _aN6_= - [0, - function(param) - {function _aN9_(param) - {if(0 === changement_logement_d842_4[0]) - {var - infos=changement_logement_d842_4[1], - _aOa_= - caml_call2(Runtime_ocaml_Runtime[98],infos[1],infos[2]); - return caml_call2 - (Runtime_ocaml_Runtime[98],loyer_principal,_aOa_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$301)} - function _aN__(param) - {if(0 === changement_logement_d842_4[0]) - var - infos=changement_logement_d842_4[1], - _aN$_= - caml_call2 - (Runtime_ocaml_Runtime[127],loyer_principal,infos[1]); - else - var _aN$_=0; - return caml_call2(Runtime_ocaml_Runtime[29],_Fp_,_aN$_)} - return caml_call4(Runtime_ocaml_Runtime[63],_Fq_,[0],_aN__,_aN9_)}], - _aN7_=caml_call4(Runtime_ocaml_Runtime[63],_Fr_,_aN6_,_aN5_,_aN4_)} - catch(_aN8_) - {_aN8_ = caml_wrap_exception(_aN8_); - if(_aN8_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Fn_]; - throw _aN8_} - var - aide_finale_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_Fs_,Runtime_ocaml_Runtime[13],_aN7_); - return [0,aide_finale_formule,traitement_aide_finale]} - function calcul_allocation_logement_foy(calcul_allocation_logement_foy) - {var - type_logement_foyer=calcul_allocation_logement_foy[1], - date_conventionnement=calcul_allocation_logement_foy[2], - redevance=calcul_allocation_logement_foy[3], - ressources_menage_arrondies=calcul_allocation_logement_foy[4], - nombre_personnes_a_charge=calcul_allocation_logement_foy[5], - situation_familiale_calcul_apl=calcul_allocation_logement_foy[6], - zone=calcul_allocation_logement_foy[7], - date_courante=calcul_allocation_logement_foy[8], - categorie_equivalence_loyer_d8=calcul_allocation_logement_foy[9]; - try - {var - _aJi_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$3)}, - _aJj_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Fu_,1)}, - _aJk_=caml_call4(Runtime_ocaml_Runtime[63],_Fv_,[0],_aJj_,_aJi_)} - catch(_aNo_) - {_aNo_ = caml_wrap_exception(_aNo_); - if(_aNo_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ft_]; - throw _aNo_} - var - montant_minimal_aide_d842_15= - caml_call3 - (Runtime_ocaml_Runtime[28],_Fw_,Runtime_ocaml_Runtime[13],_aJk_); - try - {var - _aJl_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$2)}, - _aJm_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Fy_,1)}, - _aJn_=caml_call4(Runtime_ocaml_Runtime[63],_Fz_,[0],_aJm_,_aJl_)} - catch(_aNn_) - {_aNn_ = caml_wrap_exception(_aNn_); - if(_aNn_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Fx_]; - throw _aNn_} - var - montant_forfaitaire_d842_15= - caml_call3 - (Runtime_ocaml_Runtime[28],_FA_,Runtime_ocaml_Runtime[13],_aJn_); - try - {var - _aJo_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1500$0)}, - _aJp_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FC_,1)}, - _aJq_=caml_call4(Runtime_ocaml_Runtime[63],_FD_,[0],_aJp_,_aJo_)} - catch(_aNm_) - {_aNm_ = caml_wrap_exception(_aNm_); - if(_aNm_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_FB_]; - throw _aNm_} - var - montant_minimal_depense_nette_= - caml_call3 - (Runtime_ocaml_Runtime[28],_FE_,Runtime_ocaml_Runtime[13],_aJq_); - try - {var - _aJr_=function(param){return 1}, - _aJs_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FG_,1)}, - _aJt_=caml_call4(Runtime_ocaml_Runtime[63],_FH_,[0],_aJs_,_aJr_), - calcul_nombre_parts_dot_condit= - caml_call3 - (Runtime_ocaml_Runtime[28],_FI_,Runtime_ocaml_Runtime[12],_aJt_)} - catch(_aNl_) - {_aNl_ = caml_wrap_exception(_aNl_); - if(_aNl_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_FF_]; - throw _aNl_} - try - {var - _aJu_=function(param){return nombre_personnes_a_charge}, - _aJv_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FK_,1)}, - _aJw_=caml_call4(Runtime_ocaml_Runtime[63],_FL_,[0],_aJv_,_aJu_), - calcul_nombre_parts_dot_nombre= - caml_call3 - (Runtime_ocaml_Runtime[28],_FM_,Runtime_ocaml_Runtime[14],_aJw_)} - catch(_aNk_) - {_aNk_ = caml_wrap_exception(_aNk_); - if(_aNk_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_FJ_]; - throw _aNk_} - try - {var - _aJx_=function(param){return situation_familiale_calcul_apl}, - _aJy_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FO_,1)}, - _aJz_=caml_call4(Runtime_ocaml_Runtime[63],_FP_,[0],_aJy_,_aJx_), - calcul_nombre_parts_dot_situat= - caml_call3 - (Runtime_ocaml_Runtime[28], - _FQ_, - embed_situation_familiale_calc, - _aJz_)} - catch(_aNj_) - {_aNj_ = caml_wrap_exception(_aNj_); - if(_aNj_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_FN_]; - throw _aNj_} - var - _aJA_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_FR_,calcul_nombre_part_logement_fo), - [0, - calcul_nombre_parts_dot_condit, - calcul_nombre_parts_dot_nombre, - calcul_nombre_parts_dot_situat]), - result=caml_call2(Runtime_ocaml_Runtime[27],_FS_,_aJA_), - calcul_nombre_parts_dot_n_nomb=result[1]; - try - {var - _aJB_=function(param){return date_courante}, - _aJC_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FU_,1)}, - _aJD_=caml_call4(Runtime_ocaml_Runtime[63],_FV_,[0],_aJC_,_aJB_), - contributions_sociales_dot_dat= - caml_call3 - (Runtime_ocaml_Runtime[28],_FW_,Runtime_ocaml_Runtime[16],_aJD_)} - catch(_aNi_) - {_aNi_ = caml_wrap_exception(_aNi_); - if(_aNi_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_FT_]; - throw _aNi_} - var - _aJE_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_FX_,contributions_sociales_aides_p), - [0,contributions_sociales_dot_dat]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_FY_,_aJE_), - contributions_sociales_dot_mon=result$0[1]; - try - {var - _aJF_=function(param){return type_logement_foyer}, - _aJG_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_F0_,1)}, - _aJH_=caml_call4(Runtime_ocaml_Runtime[63],_F1_,[0],_aJG_,_aJF_), - calcul_apl_logement_foyer_dot_= - caml_call3 - (Runtime_ocaml_Runtime[28],_F2_,embed_type_logement_foyer,_aJH_)} - catch(_aNh_) - {_aNh_ = caml_wrap_exception(_aNh_); - if(_aNh_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_FZ_]; - throw _aNh_} - try - {var - _aJI_=function(param){return date_conventionnement}, - _aJJ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_F4_,1)}, - _aJK_=caml_call4(Runtime_ocaml_Runtime[63],_F5_,[0],_aJJ_,_aJI_), - calcul_apl_logement_foyer_dot_$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_F6_,Runtime_ocaml_Runtime[16],_aJK_)} - catch(_aNg_) - {_aNg_ = caml_wrap_exception(_aNg_); - if(_aNg_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_F3_]; - throw _aNg_} - try - {var - _aJL_=function(param){return ressources_menage_arrondies}, - _aJM_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_F8_,1)}, - _aJN_=caml_call4(Runtime_ocaml_Runtime[63],_F9_,[0],_aJM_,_aJL_), - calcul_apl_logement_foyer_dot_$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_F__,Runtime_ocaml_Runtime[13],_aJN_)} - catch(_aNf_) - {_aNf_ = caml_wrap_exception(_aNf_); - if(_aNf_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_F7_]; - throw _aNf_} - try - {var - _aJO_=function(param){return nombre_personnes_a_charge}, - _aJP_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ga_,1)}, - _aJQ_=caml_call4(Runtime_ocaml_Runtime[63],_Gb_,[0],_aJP_,_aJO_), - calcul_apl_logement_foyer_dot_$2= - caml_call3 - (Runtime_ocaml_Runtime[28],_Gc_,Runtime_ocaml_Runtime[14],_aJQ_)} - catch(_aNe_) - {_aNe_ = caml_wrap_exception(_aNe_); - if(_aNe_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_F$_]; - throw _aNe_} - try - {var - _aJR_=function(param){return situation_familiale_calcul_apl}, - _aJS_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ge_,1)}, - _aJT_=caml_call4(Runtime_ocaml_Runtime[63],_Gf_,[0],_aJS_,_aJR_), - calcul_apl_logement_foyer_dot_$3= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Gg_, - embed_situation_familiale_calc, - _aJT_)} - catch(_aNd_) - {_aNd_ = caml_wrap_exception(_aNd_); - if(_aNd_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Gd_]; - throw _aNd_} - try - {var - _aJU_=function(param){return zone}, - _aJV_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Gi_,1)}, - _aJW_=caml_call4(Runtime_ocaml_Runtime[63],_Gj_,[0],_aJV_,_aJU_), - calcul_apl_logement_foyer_dot_$4= - caml_call3 - (Runtime_ocaml_Runtime[28],_Gk_,embed_zone_d_habitation,_aJW_)} - catch(_aNc_) - {_aNc_ = caml_wrap_exception(_aNc_); - if(_aNc_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Gh_]; - throw _aNc_} - try - {var - _aJX_=function(param){return date_courante}, - _aJY_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Gm_,1)}, - _aJZ_=caml_call4(Runtime_ocaml_Runtime[63],_Gn_,[0],_aJY_,_aJX_), - calcul_apl_logement_foyer_dot_$5= - caml_call3 - (Runtime_ocaml_Runtime[28],_Go_,Runtime_ocaml_Runtime[16],_aJZ_)} - catch(_aNb_) - {_aNb_ = caml_wrap_exception(_aNb_); - if(_aNb_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Gl_]; - throw _aNb_} - try - {var - _aJ0_=function(param){return redevance}, - _aJ1_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Gq_,1)}, - _aJ2_=caml_call4(Runtime_ocaml_Runtime[63],_Gr_,[0],_aJ1_,_aJ0_), - calcul_apl_logement_foyer_dot_$6= - caml_call3 - (Runtime_ocaml_Runtime[28],_Gs_,Runtime_ocaml_Runtime[13],_aJ2_)} - catch(_aNa_) - {_aNa_ = caml_wrap_exception(_aNa_); - if(_aNa_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Gp_]; - throw _aNa_} - function calcul_apl_logement_foyer_dot_$7(param) - {function _aM9_(param){return 1} - function _aM__(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Gt_,1)} - var _aM$_=caml_call4(Runtime_ocaml_Runtime[63],_Gu_,[0],_aM__,_aM9_); - return caml_call3 - (Runtime_ocaml_Runtime[28], - _Gv_, - Runtime_ocaml_Runtime[12], - _aM$_)} - function calcul_apl_logement_foyer_dot_$8(param) - {throw Runtime_ocaml_Runtime[2]} - var - _aJ3_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Gw_,calcul_aide_personnalisee_loge$0), - [0, - calcul_apl_logement_foyer_dot_, - calcul_apl_logement_foyer_dot_$0, - calcul_apl_logement_foyer_dot_$1, - calcul_apl_logement_foyer_dot_$2, - calcul_apl_logement_foyer_dot_$3, - calcul_apl_logement_foyer_dot_$4, - calcul_apl_logement_foyer_dot_$5, - calcul_apl_logement_foyer_dot_$6, - calcul_apl_logement_foyer_dot_$7, - calcul_apl_logement_foyer_dot_$8]), - result$1=caml_call2(Runtime_ocaml_Runtime[27],_Gx_,_aJ3_), - calcul_apl_logement_foyer_dot_$9=result$1[7]; - try - {var - _aJ4_=function(param){throw Runtime_ocaml_Runtime[2]}, - _aJ5_=function(param){return 0}, - _aJ6_= - function(param) - {function _aMX_(param) - {var _aM4_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$302); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aM4_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_5422$3); - var - _aM5_= - caml_call1 - (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), - _aM6_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$3), - _aM7_=caml_call2(Runtime_ocaml_Runtime[104],_aM6_,_aM5_), - _aM8_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422$4); - return caml_call2(Runtime_ocaml_Runtime[93],_aM8_,_aM7_)} - function _aMY_(param) - {var - _aMZ_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _aM0_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aMZ_), - _aM1_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _aM2_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aM1_), - _aM3_=caml_call2(Runtime_ocaml_Runtime[83],_aM2_,_aM0_); - return caml_call2(Runtime_ocaml_Runtime[29],_Gz_,_aM3_)} - return caml_call4(Runtime_ocaml_Runtime[63],_GA_,[0],_aMY_,_aMX_)}, - _aJ7_= - [0, - function(param) - {function _aMO_(param) - {var _aMS_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$303); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aMS_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_5612$3); - var - _aMT_= - caml_call1 - (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), - _aMU_=caml_call1(Runtime_ocaml_Runtime[31],cst_1272$3), - _aMV_=caml_call2(Runtime_ocaml_Runtime[104],_aMU_,_aMT_), - _aMW_=caml_call1(Runtime_ocaml_Runtime[31],cst_5612$4); - return caml_call2(Runtime_ocaml_Runtime[93],_aMW_,_aMV_)} - function _aMP_(param) - {var - _aMQ_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _aMR_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aMQ_); - return caml_call2(Runtime_ocaml_Runtime[29],_GB_,_aMR_)} - return caml_call4(Runtime_ocaml_Runtime[63],_GC_,[0],_aMP_,_aMO_)}, - _aJ6_], - _aJ8_=caml_call4(Runtime_ocaml_Runtime[63],_GD_,_aJ7_,_aJ5_,_aJ4_)} - catch(_aMN_) - {_aMN_ = caml_wrap_exception(_aMN_); - if(_aMN_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Gy_]; - throw _aMN_} - var - montant_forfaitaire_charges= - caml_call3 - (Runtime_ocaml_Runtime[28],_GE_,Runtime_ocaml_Runtime[13],_aJ8_); - try - {var - _aJ9_=function(param){throw Runtime_ocaml_Runtime[2]}, - _aJ__=function(param){return 0}, - _aJ$_= - function(param) - {function _aMu_(param) - {return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_17012) - :caml_call1(Runtime_ocaml_Runtime[31],cst_26440)} - function _aMv_(param) - {switch(categorie_equivalence_loyer_d8[0]) - {case 0:var _aMG_=0;break; - case 1:var _aMG_=1;break; - case 2:var _aMG_=0;break; - default:var _aMG_=0} - var - _aMH_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _aMI_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aMH_), - _aMJ_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _aMK_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aMJ_), - _aML_=caml_call2(Runtime_ocaml_Runtime[83],_aMK_,_aMI_), - _aMM_=caml_call2(Runtime_ocaml_Runtime[83],_aML_,_aMG_); - return caml_call2(Runtime_ocaml_Runtime[29],_GG_,_aMM_)} - var - _aMw_= - [0, - function(param) - {function _aMx_(param) - {return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_17012$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_26440$0)} - function _aMy_(param) - {switch(categorie_equivalence_loyer_d8[0]) - {case 0:var _aMz_=0;break; - case 1:var _aMz_=0;break; - case 2:var _aMz_=0;break; - default:var _aMz_=1} - var - _aMA_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _aMB_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aMA_), - _aMC_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _aMD_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aMC_), - _aME_=caml_call2(Runtime_ocaml_Runtime[83],_aMD_,_aMB_), - _aMF_=caml_call2(Runtime_ocaml_Runtime[83],_aME_,_aMz_); - return caml_call2(Runtime_ocaml_Runtime[29],_GH_,_aMF_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_GI_,[0],_aMy_,_aMx_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_GJ_,_aMw_,_aMv_,_aMu_)}, - _aKa_= - function(param) - {function _aMl_(param) - {return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_20640) - :caml_call1(Runtime_ocaml_Runtime[31],cst_32073)} - function _aMm_(param) - {switch(categorie_equivalence_loyer_d8[0]) - {case 0:var _aMn_=0;break; - case 1:var _aMn_=0;break; - case 2:var _aMn_=1;break; - default:var _aMn_=0} - var - _aMo_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _aMp_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aMo_), - _aMq_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _aMr_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aMq_), - _aMs_=caml_call2(Runtime_ocaml_Runtime[83],_aMr_,_aMp_), - _aMt_=caml_call2(Runtime_ocaml_Runtime[83],_aMs_,_aMn_); - return caml_call2(Runtime_ocaml_Runtime[29],_GK_,_aMt_)} - return caml_call4(Runtime_ocaml_Runtime[63],_GL_,[0],_aMm_,_aMl_)}, - _aKb_= - function(param) - {function _aMc_(param) - {return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_8414) - :caml_call1(Runtime_ocaml_Runtime[31],cst_13100)} - function _aMd_(param) - {switch(categorie_equivalence_loyer_d8[0]) - {case 0:var _aMe_=1;break; - case 1:var _aMe_=0;break; - case 2:var _aMe_=0;break; - default:var _aMe_=0} - var - _aMf_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _aMg_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aMf_), - _aMh_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _aMi_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aMh_), - _aMj_=caml_call2(Runtime_ocaml_Runtime[83],_aMi_,_aMg_), - _aMk_=caml_call2(Runtime_ocaml_Runtime[83],_aMj_,_aMe_); - return caml_call2(Runtime_ocaml_Runtime[29],_GM_,_aMk_)} - return caml_call4(Runtime_ocaml_Runtime[63],_GN_,[0],_aMd_,_aMc_)}, - _aKc_= - function(param) - {function _aL1_(param) - {return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_17607) - :caml_call1(Runtime_ocaml_Runtime[31],cst_27365)} - function _aL2_(param) - {switch(categorie_equivalence_loyer_d8[0]) - {case 0:var _aL__=0;break; - case 1:var _aL__=1;break; - case 2:var _aL__=0;break; - default:var _aL__=0} - var - _aL$_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _aMa_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aL$_), - _aMb_=caml_call2(Runtime_ocaml_Runtime[83],_aMa_,_aL__); - return caml_call2(Runtime_ocaml_Runtime[29],_GO_,_aMb_)} - var - _aL3_= - [0, - function(param) - {function _aL4_(param) - {return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_17607$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_27365$0)} - function _aL5_(param) - {switch(categorie_equivalence_loyer_d8[0]) - {case 0:var _aL6_=0;break; - case 1:var _aL6_=0;break; - case 2:var _aL6_=0;break; - default:var _aL6_=1} - var - _aL7_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _aL8_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aL7_), - _aL9_=caml_call2(Runtime_ocaml_Runtime[83],_aL8_,_aL6_); - return caml_call2(Runtime_ocaml_Runtime[29],_GP_,_aL9_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_GQ_,[0],_aL5_,_aL4_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_GR_,_aL3_,_aL2_,_aL1_)}, - _aKd_= - function(param) - {function _aLV_(param) - {return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_21362) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33196)} - function _aLW_(param) - {switch(categorie_equivalence_loyer_d8[0]) - {case 0:var _aLX_=0;break; - case 1:var _aLX_=0;break; - case 2:var _aLX_=1;break; - default:var _aLX_=0} - var - _aLY_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _aLZ_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aLY_), - _aL0_=caml_call2(Runtime_ocaml_Runtime[83],_aLZ_,_aLX_); - return caml_call2(Runtime_ocaml_Runtime[29],_GS_,_aL0_)} - return caml_call4(Runtime_ocaml_Runtime[63],_GT_,[0],_aLW_,_aLV_)}, - _aKe_= - [0, - function(param) - {function _aLP_(param) - {return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_8708) - :caml_call1(Runtime_ocaml_Runtime[31],cst_13559)} - function _aLQ_(param) - {switch(categorie_equivalence_loyer_d8[0]) - {case 0:var _aLR_=1;break; - case 1:var _aLR_=0;break; - case 2:var _aLR_=0;break; - default:var _aLR_=0} - var - _aLS_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _aLT_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aLS_), - _aLU_=caml_call2(Runtime_ocaml_Runtime[83],_aLT_,_aLR_); - return caml_call2(Runtime_ocaml_Runtime[29],_GU_,_aLU_)} - return caml_call4(Runtime_ocaml_Runtime[63],_GV_,[0],_aLQ_,_aLP_)}, - _aKd_, - _aKc_, - _aKb_, - _aKa_, - _aJ$_], - _aKf_=caml_call4(Runtime_ocaml_Runtime[63],_GW_,_aKe_,_aJ__,_aJ9_)} - catch(_aLO_) - {_aLO_ = caml_wrap_exception(_aLO_); - if(_aLO_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_GF_]; - throw _aLO_} - var - equivalence_loyer= - caml_call3 - (Runtime_ocaml_Runtime[28],_GX_,Runtime_ocaml_Runtime[13],_aKf_); - function _aKg_(param) - {try - {var - _aLI_= - function(param$0) - {var - _aLM_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$304), - _aLN_= - caml_call2 - (Runtime_ocaml_Runtime[98],param,montant_forfaitaire_d842_15); - return caml_call2(Runtime_ocaml_Runtime[112],_aLN_,_aLM_) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$305) - :caml_call2 - (Runtime_ocaml_Runtime[98], - param, - montant_forfaitaire_d842_15)}, - _aLJ_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_GZ_,1)}, - _aLK_=caml_call4(Runtime_ocaml_Runtime[63],_G0_,[0],_aLJ_,_aLI_); - return _aLK_} - catch(_aLL_) - {_aLL_ = caml_wrap_exception(_aLL_); - if(_aLL_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_GY_]; - throw _aLL_}} - var - traitement_aide_finale_minorat= - caml_call3 - (Runtime_ocaml_Runtime[28],_G1_,Runtime_ocaml_Runtime[10],_aKg_); - try - {var - _aKh_=function(param){return ressources_menage_arrondies}, - _aKi_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_G3_,1)}, - _aKj_=caml_call4(Runtime_ocaml_Runtime[63],_G4_,[0],_aKi_,_aKh_), - calcul_equivalence_loyer_minim$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_G5_,Runtime_ocaml_Runtime[13],_aKj_)} - catch(_aLH_) - {_aLH_ = caml_wrap_exception(_aLH_); - if(_aLH_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_G2_]; - throw _aLH_} - try - {var - _aKk_=function(param){return 1}, - _aKl_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_G7_,1)}, - _aKm_=caml_call4(Runtime_ocaml_Runtime[63],_G8_,[0],_aKl_,_aKk_), - calcul_equivalence_loyer_minim$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_G9_,Runtime_ocaml_Runtime[12],_aKm_)} - catch(_aLG_) - {_aLG_ = caml_wrap_exception(_aLG_); - if(_aLG_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_G6_]; - throw _aLG_} - try - {var - _aKn_=function(param){return calcul_nombre_parts_dot_n_nomb}, - _aKo_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_G$_,1)}, - _aKp_=caml_call4(Runtime_ocaml_Runtime[63],_Ha_,[0],_aKo_,_aKn_), - calcul_equivalence_loyer_minim$2= - caml_call3 - (Runtime_ocaml_Runtime[28],_Hb_,Runtime_ocaml_Runtime[15],_aKp_)} - catch(_aLF_) - {_aLF_ = caml_wrap_exception(_aLF_); - if(_aLF_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_G__]; - throw _aLF_} - var - _aKq_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Hc_,calcul_equivalence_loyer_minim), - [0, - calcul_equivalence_loyer_minim$0, - calcul_equivalence_loyer_minim$1, - calcul_equivalence_loyer_minim$2]), - result$2=caml_call2(Runtime_ocaml_Runtime[27],_Hd_,_aKq_), - calcul_equivalence_loyer_minim$3=result$2[1]; - try - {var - _aKr_=function(param){return calcul_apl_logement_foyer_dot_$9}, - _aKs_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Hf_,1)}, - _aKt_=caml_call4(Runtime_ocaml_Runtime[63],_Hg_,[0],_aKs_,_aKr_)} - catch(_aLE_) - {_aLE_ = caml_wrap_exception(_aLE_); - if(_aLE_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_He_]; - throw _aLE_} - var - coefficient_prise_en_charge= - caml_call3 - (Runtime_ocaml_Runtime[28],_Hh_,Runtime_ocaml_Runtime[15],_aKt_); - function _aKu_(param) - {try - {var - _aLz_= - function(param$0) - {var - _aLD_= - caml_call2 - (Runtime_ocaml_Runtime[93], - equivalence_loyer, - montant_forfaitaire_charges); - return caml_call2(Runtime_ocaml_Runtime[98],_aLD_,param)}, - _aLA_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Hj_,1)}, - _aLB_=caml_call4(Runtime_ocaml_Runtime[63],_Hk_,[0],_aLA_,_aLz_); - return _aLB_} - catch(_aLC_) - {_aLC_ = caml_wrap_exception(_aLC_); - if(_aLC_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Hi_]; - throw _aLC_}} - var - depense_nette_minimale= - caml_call3 - (Runtime_ocaml_Runtime[28],_Hl_,Runtime_ocaml_Runtime[10],_aKu_); - try - {var - _aKv_=function(param){return calcul_equivalence_loyer_minim$3}, - _aKw_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Hn_,1)}, - _aKx_=caml_call4(Runtime_ocaml_Runtime[63],_Ho_,[0],_aKw_,_aKv_)} - catch(_aLy_) - {_aLy_ = caml_wrap_exception(_aLy_); - if(_aLy_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Hm_]; - throw _aLy_} - var - loyer_minimal= - caml_call3 - (Runtime_ocaml_Runtime[28],_Hp_,Runtime_ocaml_Runtime[13],_aKx_); - function _aKy_(param) - {try - {var - _aLm_= - function(param$0) - {var - _aLq_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Hr_, - Runtime_ocaml_Runtime[13], - param), - _aLr_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Hs_,depense_nette_minimale), - _aLq_), - _aLs_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ht_, - Runtime_ocaml_Runtime[13], - _aLr_), - _aLt_=caml_call2(Runtime_ocaml_Runtime[27],_Hu_,_aLs_); - if - (caml_call2 - (Runtime_ocaml_Runtime[112], - _aLt_, - montant_minimal_depense_nette_)) - {var - _aLu_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Hv_, - Runtime_ocaml_Runtime[13], - param), - _aLv_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Hw_,depense_nette_minimale), - _aLu_), - _aLw_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Hx_, - Runtime_ocaml_Runtime[13], - _aLv_), - _aLx_=caml_call2(Runtime_ocaml_Runtime[27],_Hy_,_aLw_); - return caml_call2 - (Runtime_ocaml_Runtime[98], - montant_minimal_depense_nette_, - _aLx_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$306)}, - _aLn_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Hz_,1)}, - _aLo_=caml_call4(Runtime_ocaml_Runtime[63],_HA_,[0],_aLn_,_aLm_); - return _aLo_} - catch(_aLp_) - {_aLp_ = caml_wrap_exception(_aLp_); - if(_aLp_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Hq_]; - throw _aLp_}} - var - abattement_depense_nette_minim= - caml_call3 - (Runtime_ocaml_Runtime[28],_HB_,Runtime_ocaml_Runtime[10],_aKy_); - try - {var - _aKz_= - function(param) - {var - _aLk_= - caml_call2 - (Runtime_ocaml_Runtime[93], - equivalence_loyer, - montant_forfaitaire_charges), - _aLl_=caml_call2(Runtime_ocaml_Runtime[98],_aLk_,loyer_minimal); - return caml_call2 - (Runtime_ocaml_Runtime[104], - _aLl_, - coefficient_prise_en_charge)}, - _aKA_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_HD_,1)}, - _aKB_=caml_call4(Runtime_ocaml_Runtime[63],_HE_,[0],_aKA_,_aKz_)} - catch(_aLj_) - {_aLj_ = caml_wrap_exception(_aLj_); - if(_aLj_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_HC_]; - throw _aLj_} - var - aide_finale_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_HF_,Runtime_ocaml_Runtime[13],_aKB_); - function _aKC_(param) - {try - {var - _aK9_= - function(param$0) - {var - _aLb_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _HH_, - Runtime_ocaml_Runtime[13], - param), - _aLc_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _HI_, - traitement_aide_finale_minorat), - _aLb_), - _aLd_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _HJ_, - Runtime_ocaml_Runtime[13], - _aLc_), - aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_HK_,_aLd_), - _aLe_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _HL_, - Runtime_ocaml_Runtime[13], - aide_finale), - _aLf_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _HM_, - abattement_depense_nette_minim), - _aLe_), - _aLg_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _HN_, - Runtime_ocaml_Runtime[13], - _aLf_), - abattement=caml_call2(Runtime_ocaml_Runtime[27],_HO_,_aLg_), - _aLh_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$307), - _aLi_= - caml_call2(Runtime_ocaml_Runtime[98],aide_finale,abattement); - return caml_call2(Runtime_ocaml_Runtime[112],_aLi_,_aLh_) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$308) - :caml_call2 - (Runtime_ocaml_Runtime[98],aide_finale,abattement)}, - _aK__= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_HP_,1)}, - _aK$_=caml_call4(Runtime_ocaml_Runtime[63],_HQ_,[0],_aK__,_aK9_); - return _aK$_} - catch(_aLa_) - {_aLa_ = caml_wrap_exception(_aLa_); - if(_aLa_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_HG_]; - throw _aLa_}} - var - traitement_aide_finale_depense= - caml_call3 - (Runtime_ocaml_Runtime[28],_HR_,Runtime_ocaml_Runtime[10],_aKC_); - function _aKD_(param) - {try - {var - _aK2_= - function(param$0) - {var - _aK6_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _HT_, - Runtime_ocaml_Runtime[13], - param), - _aK7_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _HU_, - traitement_aide_finale_depense), - _aK6_), - _aK8_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _HV_, - Runtime_ocaml_Runtime[13], - _aK7_), - aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_HW_,_aK8_); - return caml_call2 - (Runtime_ocaml_Runtime[122],aide_finale,redevance) - ?redevance - :aide_finale}, - _aK3_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_HX_,1)}, - _aK4_=caml_call4(Runtime_ocaml_Runtime[63],_HY_,[0],_aK3_,_aK2_); - return _aK4_} - catch(_aK5_) - {_aK5_ = caml_wrap_exception(_aK5_); - if(_aK5_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_HS_]; - throw _aK5_}} - var - traitement_aide_finale_redevan= - caml_call3 - (Runtime_ocaml_Runtime[28],_HZ_,Runtime_ocaml_Runtime[10],_aKD_); - function _aKE_(param) - {try - {var - _aKN_= - function(param$0) - {var - _aKR_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _H1_, - Runtime_ocaml_Runtime[13], - param), - _aKS_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _H2_, - traitement_aide_finale_redevan), - _aKR_), - _aKT_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _H3_, - Runtime_ocaml_Runtime[13], - _aKS_), - aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_H4_,_aKT_), - _aKU_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _H5_, - Runtime_ocaml_Runtime[13], - aide_finale), - _aKV_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _H6_, - contributions_sociales_dot_mon), - _aKU_), - _aKW_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _H7_, - Runtime_ocaml_Runtime[13], - _aKV_), - crds=caml_call2(Runtime_ocaml_Runtime[27],_H8_,_aKW_), - _aKX_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$2), - _aKY_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale,crds), - _aKZ_=caml_call2(Runtime_ocaml_Runtime[98],_aKY_,_aKX_), - aide_finale_moins_crds_arrondi= - caml_call1(Runtime_ocaml_Runtime[77],_aKZ_), - _aK0_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$309), - _aK1_= - caml_call2 - (Runtime_ocaml_Runtime[93], - aide_finale_moins_crds_arrondi, - crds); - return caml_call2(Runtime_ocaml_Runtime[127],_aK1_,_aK0_) - ?caml_call2 - (Runtime_ocaml_Runtime[93], - aide_finale_moins_crds_arrondi, - crds) - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$310)}, - _aKO_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_H9_,1)}, - _aKP_=caml_call4(Runtime_ocaml_Runtime[63],_H__,[0],_aKO_,_aKN_); - return _aKP_} - catch(_aKQ_) - {_aKQ_ = caml_wrap_exception(_aKQ_); - if(_aKQ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_H0_]; - throw _aKQ_}} - var - traitement_aide_finale_contrib= - caml_call3 - (Runtime_ocaml_Runtime[28],_H$_,Runtime_ocaml_Runtime[10],_aKE_); - function _aKF_(param) - {try - {var - _aKG_= - function(param$0) - {var - _aKK_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ib_, - Runtime_ocaml_Runtime[13], - param), - _aKL_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Ic_, - traitement_aide_finale_contrib), - _aKK_), - _aKM_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Id_, - Runtime_ocaml_Runtime[13], - _aKL_), - aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_Ie_,_aKM_); - return caml_call2 - (Runtime_ocaml_Runtime[112], - aide_finale, - montant_minimal_aide_d842_15) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$311) - :aide_finale}, - _aKH_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_If_,1)}, - _aKI_=caml_call4(Runtime_ocaml_Runtime[63],_Ig_,[0],_aKH_,_aKG_); - return _aKI_} - catch(_aKJ_) - {_aKJ_ = caml_wrap_exception(_aKJ_); - if(_aKJ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ia_]; - throw _aKJ_}} - var - traitement_aide_finale_montant= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ih_,Runtime_ocaml_Runtime[10],_aKF_); - return [0, - coefficient_prise_en_charge, - equivalence_loyer, - montant_forfaitaire_charges, - loyer_minimal, - aide_finale_formule, - traitement_aide_finale_montant]} - function calcul_allocation_logement_acc(calcul_allocation_logement_acc) - {var - ressources_menage_arrondies_ba=calcul_allocation_logement_acc[1], - nombre_personnes_a_charge=calcul_allocation_logement_acc[2], - situation_familiale_calcul_apl=calcul_allocation_logement_acc[3], - zone=calcul_allocation_logement_acc[4], - date_courante=calcul_allocation_logement_acc[5], - mensualite_principale=calcul_allocation_logement_acc[6], - situation_r822_11_13_17=calcul_allocation_logement_acc[7], - date_signature_pret=calcul_allocation_logement_acc[8], - type_travaux_logement=calcul_allocation_logement_acc[9], - local_habite_premiere_fois_ben=calcul_allocation_logement_acc[10], - date_entree_logement=calcul_allocation_logement_acc[11], - charges_mensuelles_pret=calcul_allocation_logement_acc[12], - copropriete=calcul_allocation_logement_acc[13]; - try - {var - _anN_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$3)}, - _anO_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ij_,1)}, - _anP_=caml_call4(Runtime_ocaml_Runtime[63],_Ik_,[0],_anO_,_anN_)} - catch(_aJh_) - {_aJh_ = caml_wrap_exception(_aJh_); - if(_aJh_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ii_]; - throw _aJh_} - var - montant_forfaitaire_d842_6= - caml_call3 - (Runtime_ocaml_Runtime[28],_Il_,Runtime_ocaml_Runtime[13],_anP_); - try - {var - _anQ_= - function(param) - {var - _aJf_=caml_call1(Runtime_ocaml_Runtime[39],cst_6_55957$0), - _aJg_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$206); - return caml_call2(Runtime_ocaml_Runtime[107],_aJg_,_aJf_)}, - _anR_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_In_,1)}, - _anS_=caml_call4(Runtime_ocaml_Runtime[63],_Io_,[0],_anR_,_anQ_)} - catch(_aJe_) - {_aJe_ = caml_wrap_exception(_aJe_); - if(_aJe_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Im_]; - throw _aJe_} - var - taux_francs_vers_euros= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ip_,Runtime_ocaml_Runtime[15],_anS_); - try - {var - _anT_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$4)}, - _anU_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ir_,1)}, - _anV_=caml_call4(Runtime_ocaml_Runtime[63],_Is_,[0],_anU_,_anT_)} - catch(_aJd_) - {_aJd_ = caml_wrap_exception(_aJd_); - if(_aJd_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Iq_]; - throw _aJd_} - var - montant_minimal_aide_d842_6= - caml_call3 - (Runtime_ocaml_Runtime[28],_It_,Runtime_ocaml_Runtime[13],_anV_); - try - {var - _anW_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_1500$1)}, - _anX_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Iv_,1)}, - _anY_=caml_call4(Runtime_ocaml_Runtime[63],_Iw_,[0],_anX_,_anW_)} - catch(_aJc_) - {_aJc_ = caml_wrap_exception(_aJc_); - if(_aJc_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Iu_]; - throw _aJc_} - var - montant_forfaitaire_d842_11= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ix_,Runtime_ocaml_Runtime[13],_anY_); - try - {var - _anZ_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_390000)}, - _an0_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Iz_,1)}, - _an1_=caml_call4(Runtime_ocaml_Runtime[63],_IA_,[0],_an0_,_anZ_)} - catch(_aJb_) - {_aJb_ = caml_wrap_exception(_aJb_); - if(_aJb_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Iy_]; - throw _aJb_} - var - montant_forfaitaire_d842_12= - caml_call3 - (Runtime_ocaml_Runtime[28],_IB_,Runtime_ocaml_Runtime[13],_an1_); - try - {var - _an2_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0234$1)}, - _an3_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ID_,1)}, - _an4_=caml_call4(Runtime_ocaml_Runtime[63],_IE_,[0],_an3_,_an2_)} - catch(_aJa_) - {_aJa_ = caml_wrap_exception(_aJa_); - if(_aJa_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_IC_]; - throw _aJa_} - var - coefficient_d842_11= - caml_call3 - (Runtime_ocaml_Runtime[28],_IF_,Runtime_ocaml_Runtime[15],_an4_); - try - {var - _an5_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[39],cst_16_25$0)}, - _an6_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_IH_,1)}, - _an7_=caml_call4(Runtime_ocaml_Runtime[63],_II_,[0],_an6_,_an5_)} - catch(_aI$_) - {_aI$_ = caml_wrap_exception(_aI$_); - if(_aI$_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_IG_]; - throw _aI$_} - var - coefficient_d842_12= - caml_call3 - (Runtime_ocaml_Runtime[28],_IJ_,Runtime_ocaml_Runtime[15],_an7_); - try - {var - _an8_=function(param){return nombre_personnes_a_charge}, - _an9_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_IL_,1)}, - _an__=caml_call4(Runtime_ocaml_Runtime[63],_IM_,[0],_an9_,_an8_), - calcul_nombre_parts_dot_nombre= - caml_call3 - (Runtime_ocaml_Runtime[28],_IN_,Runtime_ocaml_Runtime[14],_an__)} - catch(_aI__) - {_aI__ = caml_wrap_exception(_aI__); - if(_aI__ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_IK_]; - throw _aI__} - try - {var - _an$_=function(param){return situation_familiale_calcul_apl}, - _aoa_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_IP_,1)}, - _aob_=caml_call4(Runtime_ocaml_Runtime[63],_IQ_,[0],_aoa_,_an$_), - calcul_nombre_parts_dot_situat= - caml_call3 - (Runtime_ocaml_Runtime[28], - _IR_, - embed_situation_familiale_calc, - _aob_)} - catch(_aI9_) - {_aI9_ = caml_wrap_exception(_aI9_); - if(_aI9_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_IO_]; - throw _aI9_} - var - _aoc_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_IS_,calcul_nombre_parts_accession_), - [0,calcul_nombre_parts_dot_nombre,calcul_nombre_parts_dot_situat]), - result=caml_call2(Runtime_ocaml_Runtime[27],_IT_,_aoc_), - calcul_nombre_parts_dot_n_nomb=result[1]; - try - {var - _aod_=function(param){return date_courante}, - _aoe_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_IV_,1)}, - _aof_=caml_call4(Runtime_ocaml_Runtime[63],_IW_,[0],_aoe_,_aod_), - contributions_sociales_dot_dat= - caml_call3 - (Runtime_ocaml_Runtime[28],_IX_,Runtime_ocaml_Runtime[16],_aof_)} - catch(_aI8_) - {_aI8_ = caml_wrap_exception(_aI8_); - if(_aI8_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_IU_]; - throw _aI8_} - var - _aog_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_IY_,contributions_sociales_aides_p), - [0,contributions_sociales_dot_dat]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_IZ_,_aog_), - contributions_sociales_dot_mon=result$0[1]; - try - {var - _aoh_=function(param){throw Runtime_ocaml_Runtime[2]}, - _aoi_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_I1_,0)}, - _aoj_= - function(param) - {function _aIP_(param) - {var _aI3_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$312); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aI3_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_5612$5); - var - _aI4_= - caml_call1 - (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), - _aI5_=caml_call1(Runtime_ocaml_Runtime[31],cst_1272$4), - _aI6_=caml_call2(Runtime_ocaml_Runtime[104],_aI5_,_aI4_), - _aI7_=caml_call1(Runtime_ocaml_Runtime[31],cst_5612$6); - return caml_call2(Runtime_ocaml_Runtime[93],_aI7_,_aI6_)} - function _aIQ_(param) - {var - _aI1_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _aI2_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aI1_); - return caml_call2(Runtime_ocaml_Runtime[29],_I2_,_aI2_)} - var - _aIR_= - [0, - function(param) - {function _aIS_(param) - {var - _aIX_= - caml_call1 - (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), - _aIY_=caml_call1(Runtime_ocaml_Runtime[31],cst_1272$5), - _aIZ_=caml_call2(Runtime_ocaml_Runtime[104],_aIY_,_aIX_), - _aI0_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_2805$1) - :caml_call1(Runtime_ocaml_Runtime[31],cst_5612$7); - return caml_call2(Runtime_ocaml_Runtime[93],_aI0_,_aIZ_)} - function _aIT_(param) - {var - _aIU_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _aIV_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aIU_), - _aIW_= - caml_call2(Runtime_ocaml_Runtime[83],_aIV_,copropriete); - return caml_call2(Runtime_ocaml_Runtime[29],_I3_,_aIW_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_I4_,[0],_aIT_,_aIS_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_I5_,_aIR_,_aIQ_,_aIP_)}, - _aok_= - [0, - function(param) - {function _aIq_(param) - {var _aIK_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$313); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aIK_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_5422$5); - var - _aIL_= - caml_call1 - (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), - _aIM_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$4), - _aIN_=caml_call2(Runtime_ocaml_Runtime[104],_aIM_,_aIL_), - _aIO_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422$6); - return caml_call2(Runtime_ocaml_Runtime[93],_aIO_,_aIN_)} - function _aIr_(param) - {var - _aIF_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _aIG_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aIF_), - _aIH_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _aII_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aIH_), - _aIJ_=caml_call2(Runtime_ocaml_Runtime[83],_aII_,_aIG_); - return caml_call2(Runtime_ocaml_Runtime[29],_I6_,_aIJ_)} - var - _aIs_= - [0, - function(param) - {function _aIt_(param) - {var - _aIB_= - caml_call1 - (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), - _aIC_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$5), - _aID_=caml_call2(Runtime_ocaml_Runtime[104],_aIC_,_aIB_), - _aIE_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_2710$1) - :caml_call1(Runtime_ocaml_Runtime[31],cst_5422$7); - return caml_call2(Runtime_ocaml_Runtime[93],_aIE_,_aID_)} - function _aIu_(param) - {var - _aIv_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _aIw_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aIv_), - _aIx_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _aIy_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aIx_), - _aIz_=caml_call2(Runtime_ocaml_Runtime[83],_aIy_,_aIw_), - _aIA_= - caml_call2(Runtime_ocaml_Runtime[83],_aIz_,copropriete); - return caml_call2(Runtime_ocaml_Runtime[29],_I7_,_aIA_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_I8_,[0],_aIu_,_aIt_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_I9_,_aIs_,_aIr_,_aIq_)}, - _aoj_], - _aol_=caml_call4(Runtime_ocaml_Runtime[63],_I__,_aok_,_aoi_,_aoh_)} - catch(_aIp_) - {_aIp_ = caml_wrap_exception(_aIp_); - if(_aIp_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_I0_]; - throw _aIp_} - var - montant_forfaitaire_charges= - caml_call3 - (Runtime_ocaml_Runtime[28],_I$_,Runtime_ocaml_Runtime[13],_aol_); - function _aom_(param) - {try - {var - _aIj_= - function(param$0) - {var - _aIn_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$314), - _aIo_= - caml_call2 - (Runtime_ocaml_Runtime[98],param,montant_forfaitaire_d842_6); - return caml_call2(Runtime_ocaml_Runtime[112],_aIo_,_aIn_) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$315) - :caml_call2 - (Runtime_ocaml_Runtime[98],param,montant_forfaitaire_d842_6)}, - _aIk_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Jb_,1)}, - _aIl_=caml_call4(Runtime_ocaml_Runtime[63],_Jc_,[0],_aIk_,_aIj_); - return _aIl_} - catch(_aIm_) - {_aIm_ = caml_wrap_exception(_aIm_); - if(_aIm_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ja_]; - throw _aIm_}} - var - traitement_aide_finale_minorat= - caml_call3 - (Runtime_ocaml_Runtime[28],_Jd_,Runtime_ocaml_Runtime[10],_aom_); - function _aon_(param) - {try - {var - _ar3_=function(param){throw Runtime_ocaml_Runtime[2]}, - _ar4_=function(param){return 0}, - _ar5_= - function(param$0) - {function _aHE_(param) - {switch(zone[0]) - {case 0: - var _aHL_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$316); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHL_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31476) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37933); - var _aHM_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$207); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHM_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40787); - var _aHN_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$46); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHN_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41927); - var _aHO_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$26); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHO_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_43106); - var _aHP_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$22); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHP_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_44262); - var _aHQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$6); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHQ_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_45200); - var - _aHR_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$7), - _aHS_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aHR_), - _aHT_=caml_call1(Runtime_ocaml_Runtime[69],_aHS_), - _aHU_=caml_call1(Runtime_ocaml_Runtime[31],cst_3936), - _aHV_=caml_call2(Runtime_ocaml_Runtime[104],_aHU_,_aHT_), - _aHW_=caml_call1(Runtime_ocaml_Runtime[31],cst_45200$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aHW_,_aHV_); - case 1: - var _aHX_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$317); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHX_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27614) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33853); - var _aHY_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$208); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHY_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36646); - var _aHZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$47); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHZ_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37915); - var _aH0_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$27); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aH0_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39222); - var _aH1_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$23); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aH1_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40510); - var _aH2_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$8); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aH2_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_43378); - var - _aH3_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$9), - _aH4_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aH3_), - _aH5_=caml_call1(Runtime_ocaml_Runtime[69],_aH4_), - _aH6_=caml_call1(Runtime_ocaml_Runtime[31],cst_3771), - _aH7_=caml_call2(Runtime_ocaml_Runtime[104],_aH6_,_aH5_), - _aH8_=caml_call1(Runtime_ocaml_Runtime[31],cst_43378$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aH8_,_aH7_); - default: - var _aH9_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$318); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aH9_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25904) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31419); - var _aH__=caml_call1(Runtime_ocaml_Runtime[46],cst_1$209); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aH__)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34255); - var _aH$_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$48); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aH$_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35670); - var _aIa_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$28); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aIa_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37107); - var _aIb_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$24); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aIb_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38521); - var _aIc_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$10); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aIc_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41392); - var - _aId_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$11), - _aIe_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aId_), - _aIf_=caml_call1(Runtime_ocaml_Runtime[69],_aIe_), - _aIg_=caml_call1(Runtime_ocaml_Runtime[31],cst_3588), - _aIh_=caml_call2(Runtime_ocaml_Runtime[104],_aIg_,_aIf_), - _aIi_=caml_call1(Runtime_ocaml_Runtime[31],cst_41392$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aIi_,_aIh_)}} - function _aHF_(param$0) - {var - _aHG_=caml_call3(Runtime_ocaml_Runtime[57],2019,10,1), - _aHH_=caml_call2(Runtime_ocaml_Runtime[129],param,_aHG_), - _aHI_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _aHJ_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aHI_), - _aHK_=caml_call2(Runtime_ocaml_Runtime[83],_aHJ_,_aHH_); - return caml_call2(Runtime_ocaml_Runtime[29],_Jf_,_aHK_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Jg_,[0],_aHF_,_aHE_)}, - _ar6_= - function(param$0) - {function _aGW_(param) - {switch(zone[0]) - {case 0: - var _aG6_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$319); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aG6_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31382) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37820); - var _aG7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$210); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aG7_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40665); - var _aG8_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$49); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aG8_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41801); - var _aG9_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$29); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aG9_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42977); - var _aG__=caml_call1(Runtime_ocaml_Runtime[46],cst_4$25); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aG__)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_44130); - var _aG$_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$12); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aG$_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_45064); - var - _aHa_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$13), - _aHb_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aHa_), - _aHc_=caml_call1(Runtime_ocaml_Runtime[69],_aHb_), - _aHd_=caml_call1(Runtime_ocaml_Runtime[31],cst_3924), - _aHe_=caml_call2(Runtime_ocaml_Runtime[104],_aHd_,_aHc_), - _aHf_=caml_call1(Runtime_ocaml_Runtime[31],cst_45064$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aHf_,_aHe_); - case 1: - var _aHg_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$320); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHg_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27531) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33751); - var _aHh_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$211); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHh_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36536); - var _aHi_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$50); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHi_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37801); - var _aHj_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$30); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHj_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39105); - var _aHk_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$26); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHk_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40389); - var _aHl_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$14); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHl_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_43248); - var - _aHm_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$15), - _aHn_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aHm_), - _aHo_=caml_call1(Runtime_ocaml_Runtime[69],_aHn_), - _aHp_=caml_call1(Runtime_ocaml_Runtime[31],cst_3760), - _aHq_=caml_call2(Runtime_ocaml_Runtime[104],_aHp_,_aHo_), - _aHr_=caml_call1(Runtime_ocaml_Runtime[31],cst_43248$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aHr_,_aHq_); - default: - var _aHs_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$321); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHs_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25826) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31325); - var _aHt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$212); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHt_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34152); - var _aHu_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$51); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHu_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35564); - var _aHv_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$31); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHv_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36996); - var _aHw_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$27); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHw_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38406); - var _aHx_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$16); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHx_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41268); - var - _aHy_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$17), - _aHz_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aHy_), - _aHA_=caml_call1(Runtime_ocaml_Runtime[69],_aHz_), - _aHB_=caml_call1(Runtime_ocaml_Runtime[31],cst_3578), - _aHC_=caml_call2(Runtime_ocaml_Runtime[104],_aHB_,_aHA_), - _aHD_=caml_call1(Runtime_ocaml_Runtime[31],cst_41268$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aHD_,_aHC_)}} - function _aGX_(param$0) - {var - _aGY_=caml_call3(Runtime_ocaml_Runtime[57],2019,10,1), - _aGZ_=caml_call2(Runtime_ocaml_Runtime[114],param,_aGY_), - _aG0_=caml_call3(Runtime_ocaml_Runtime[57],2017,10,1), - _aG1_=caml_call2(Runtime_ocaml_Runtime[129],param,_aG0_), - _aG2_=caml_call2(Runtime_ocaml_Runtime[83],_aG1_,_aGZ_), - _aG3_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _aG4_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aG3_), - _aG5_=caml_call2(Runtime_ocaml_Runtime[83],_aG4_,_aG2_); - return caml_call2(Runtime_ocaml_Runtime[29],_Jh_,_aG5_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Ji_,[0],_aGX_,_aGW_)}, - _ar7_= - function(param$0) - {function _aGc_(param) - {switch(zone[0]) - {case 0: - var _aGm_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$322); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGm_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31148) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37538); - var _aGn_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$213); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGn_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40362); - var _aGo_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$52); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGo_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41490); - var _aGp_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$32); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGp_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42657); - var _aGq_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$28); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGq_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_43801); - var _aGr_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$18); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGr_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_44729); - var - _aGs_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$19), - _aGt_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aGs_), - _aGu_=caml_call1(Runtime_ocaml_Runtime[69],_aGt_), - _aGv_=caml_call1(Runtime_ocaml_Runtime[31],cst_3895), - _aGw_=caml_call2(Runtime_ocaml_Runtime[104],_aGv_,_aGu_), - _aGx_=caml_call1(Runtime_ocaml_Runtime[31],cst_44729$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aGx_,_aGw_); - case 1: - var _aGy_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$323); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGy_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27326) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33500$0); - var _aGz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$214); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGz_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36264); - var _aGA_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$53); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGA_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37520); - var _aGB_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$33); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGB_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38814); - var _aGC_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$29); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGC_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40088); - var _aGD_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$20); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGD_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42926); - var - _aGE_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$21), - _aGF_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aGE_), - _aGG_=caml_call1(Runtime_ocaml_Runtime[69],_aGF_), - _aGH_=caml_call1(Runtime_ocaml_Runtime[31],cst_3732), - _aGI_=caml_call2(Runtime_ocaml_Runtime[104],_aGH_,_aGG_), - _aGJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_42926$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aGJ_,_aGI_); - default: - var _aGK_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$324); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGK_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25634) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31092); - var _aGL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$215); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGL_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33898); - var _aGM_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$54); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGM_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35299); - var _aGN_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$34); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGN_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36721); - var _aGO_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$30); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGO_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38120); - var _aGP_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$22); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGP_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40961); - var - _aGQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$23), - _aGR_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aGQ_), - _aGS_=caml_call1(Runtime_ocaml_Runtime[69],_aGR_), - _aGT_=caml_call1(Runtime_ocaml_Runtime[31],cst_3551), - _aGU_=caml_call2(Runtime_ocaml_Runtime[104],_aGT_,_aGS_), - _aGV_=caml_call1(Runtime_ocaml_Runtime[31],cst_40961$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aGV_,_aGU_)}} - function _aGd_(param$0) - {var - _aGe_=caml_call3(Runtime_ocaml_Runtime[57],2017,10,1), - _aGf_=caml_call2(Runtime_ocaml_Runtime[114],param,_aGe_), - _aGg_=caml_call3(Runtime_ocaml_Runtime[57],2015,10,1), - _aGh_=caml_call2(Runtime_ocaml_Runtime[129],param,_aGg_), - _aGi_=caml_call2(Runtime_ocaml_Runtime[83],_aGh_,_aGf_), - _aGj_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _aGk_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aGj_), - _aGl_=caml_call2(Runtime_ocaml_Runtime[83],_aGk_,_aGi_); - return caml_call2(Runtime_ocaml_Runtime[29],_Jj_,_aGl_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Jk_,[0],_aGd_,_aGc_)}, - _ar8_= - function(param$0) - {function _aFu_(param) - {switch(zone[0]) - {case 0: - var _aFE_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$325); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFE_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_31123) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37508); - var _aFF_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$216); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFF_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40330); - var _aFG_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$55); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFG_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41457); - var _aFH_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$35); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFH_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42623); - var _aFI_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$31); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFI_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_43766); - var _aFJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$24); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFJ_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_44693); - var - _aFK_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$25), - _aFL_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aFK_), - _aFM_=caml_call1(Runtime_ocaml_Runtime[69],_aFL_), - _aFN_=caml_call1(Runtime_ocaml_Runtime[31],cst_3892), - _aFO_=caml_call2(Runtime_ocaml_Runtime[104],_aFN_,_aFM_), - _aFP_=caml_call1(Runtime_ocaml_Runtime[31],cst_44693$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aFP_,_aFO_); - case 1: - var _aFQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$326); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFQ_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27304) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33473); - var _aFR_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$217); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFR_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36235); - var _aFS_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$56); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFS_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37490); - var _aFT_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$36); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFT_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38783); - var _aFU_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$32); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFU_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40056); - var _aFV_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$26); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFV_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42892); - var - _aFW_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$27), - _aFX_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aFW_), - _aFY_=caml_call1(Runtime_ocaml_Runtime[69],_aFX_), - _aFZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3729), - _aF0_=caml_call2(Runtime_ocaml_Runtime[104],_aFZ_,_aFY_), - _aF1_=caml_call1(Runtime_ocaml_Runtime[31],cst_42892$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aF1_,_aF0_); - default: - var _aF2_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$327); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aF2_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25614) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31067); - var _aF3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$218); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aF3_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33871); - var _aF4_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$57); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aF4_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35271); - var _aF5_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$37); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aF5_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36692); - var _aF6_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$33); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aF6_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38090); - var _aF7_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$28); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aF7_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40928); - var - _aF8_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$29), - _aF9_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aF8_), - _aF__=caml_call1(Runtime_ocaml_Runtime[69],_aF9_), - _aF$_=caml_call1(Runtime_ocaml_Runtime[31],cst_3548), - _aGa_=caml_call2(Runtime_ocaml_Runtime[104],_aF$_,_aF__), - _aGb_=caml_call1(Runtime_ocaml_Runtime[31],cst_40928$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aGb_,_aGa_)}} - function _aFv_(param$0) - {var - _aFw_=caml_call3(Runtime_ocaml_Runtime[57],2015,10,1), - _aFx_=caml_call2(Runtime_ocaml_Runtime[114],param,_aFw_), - _aFy_=caml_call3(Runtime_ocaml_Runtime[57],2014,10,1), - _aFz_=caml_call2(Runtime_ocaml_Runtime[129],param,_aFy_), - _aFA_=caml_call2(Runtime_ocaml_Runtime[83],_aFz_,_aFx_), - _aFB_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _aFC_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aFB_), - _aFD_=caml_call2(Runtime_ocaml_Runtime[83],_aFC_,_aFA_); - return caml_call2(Runtime_ocaml_Runtime[29],_Jl_,_aFD_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Jm_,[0],_aFv_,_aFu_)}, - _ar9_= - function(param$0) - {function _aEM_(param) - {switch(zone[0]) - {case 0: - var _aEW_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$328); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEW_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_30947) - :caml_call1(Runtime_ocaml_Runtime[31],cst_37295); - var _aEX_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$219); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEX_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40101); - var _aEY_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$58); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEY_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41222); - var _aEZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$38); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEZ_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42381); - var _aE0_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$34); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aE0_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_43518); - var _aE1_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$30); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aE1_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_44440); - var - _aE2_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$31), - _aE3_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aE2_), - _aE4_=caml_call1(Runtime_ocaml_Runtime[69],_aE3_), - _aE5_=caml_call1(Runtime_ocaml_Runtime[31],cst_3870), - _aE6_=caml_call2(Runtime_ocaml_Runtime[104],_aE5_,_aE4_), - _aE7_=caml_call1(Runtime_ocaml_Runtime[31],cst_44440$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aE7_,_aE6_); - case 1: - var _aE8_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$329); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aE8_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27149) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33283); - var _aE9_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$220); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aE9_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36030); - var _aE__=caml_call1(Runtime_ocaml_Runtime[46],cst_2$59); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aE__)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37278); - var _aE$_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$39); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aE$_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38563); - var _aFa_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$35); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFa_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39829); - var _aFb_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$32); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFb_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42649); - var - _aFc_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$33), - _aFd_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aFc_), - _aFe_=caml_call1(Runtime_ocaml_Runtime[69],_aFd_), - _aFf_=caml_call1(Runtime_ocaml_Runtime[31],cst_3708), - _aFg_=caml_call2(Runtime_ocaml_Runtime[104],_aFf_,_aFe_), - _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_42659); - return caml_call2(Runtime_ocaml_Runtime[93],_aFh_,_aFg_); - default: - var _aFi_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$330); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFi_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25469) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30891); - var _aFj_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$221); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFj_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33679); - var _aFk_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$60); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFk_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35071); - var _aFl_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$40); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFl_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36484); - var _aFm_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$36); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFm_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37874); - var _aFn_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$34); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFn_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40696); - var - _aFo_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$35), - _aFp_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aFo_), - _aFq_=caml_call1(Runtime_ocaml_Runtime[69],_aFp_), - _aFr_=caml_call1(Runtime_ocaml_Runtime[31],cst_3528), - _aFs_=caml_call2(Runtime_ocaml_Runtime[104],_aFr_,_aFq_), - _aFt_=caml_call1(Runtime_ocaml_Runtime[31],cst_40696$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aFt_,_aFs_)}} - function _aEN_(param$0) - {var - _aEO_=caml_call3(Runtime_ocaml_Runtime[57],2014,10,1), - _aEP_=caml_call2(Runtime_ocaml_Runtime[114],param,_aEO_), - _aEQ_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), - _aER_=caml_call2(Runtime_ocaml_Runtime[129],param,_aEQ_), - _aES_=caml_call2(Runtime_ocaml_Runtime[83],_aER_,_aEP_), - _aET_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _aEU_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aET_), - _aEV_=caml_call2(Runtime_ocaml_Runtime[83],_aEU_,_aES_); - return caml_call2(Runtime_ocaml_Runtime[29],_Jn_,_aEV_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Jo_,[0],_aEN_,_aEM_)}, - _ar__= - function(param$0) - {function _aD4_(param) - {switch(zone[0]) - {case 0: - var _aEc_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$331); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEc_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_30296) - :caml_call1(Runtime_ocaml_Runtime[31],cst_36510); - var _aEd_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$222); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEd_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39257); - var _aEe_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$61); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEe_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40354); - var _aEf_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$41); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEf_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41489); - var _aEg_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$37); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEg_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42602); - var _aEh_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$36); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEh_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_43505); - var - _aEi_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$37), - _aEj_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aEi_), - _aEk_=caml_call1(Runtime_ocaml_Runtime[69],_aEj_), - _aEl_=caml_call1(Runtime_ocaml_Runtime[31],cst_3789), - _aEm_=caml_call2(Runtime_ocaml_Runtime[104],_aEl_,_aEk_), - _aEn_=caml_call1(Runtime_ocaml_Runtime[31],cst_43505$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aEn_,_aEm_); - case 1: - var _aEo_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$332); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEo_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26578) - :caml_call1(Runtime_ocaml_Runtime[31],cst_32582); - var _aEp_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$223); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEp_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35272); - var _aEq_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$62); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEq_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36493); - var _aEr_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$42); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEr_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37751); - var _aEs_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$38); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEs_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38991); - var _aEt_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$38); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEt_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41751); - var - _aEu_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$39), - _aEv_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aEu_), - _aEw_=caml_call1(Runtime_ocaml_Runtime[69],_aEv_), - _aEx_=caml_call1(Runtime_ocaml_Runtime[31],cst_3630), - _aEy_=caml_call2(Runtime_ocaml_Runtime[104],_aEx_,_aEw_), - _aEz_=caml_call1(Runtime_ocaml_Runtime[31],cst_41751$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aEz_,_aEy_); - default: - var _aEA_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$333); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEA_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24933) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30241); - var _aEB_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$224); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEB_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32970); - var _aEC_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$63); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEC_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34333); - var _aED_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$43); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aED_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35716); - var _aEE_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$39); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEE_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37077); - var _aEF_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$40); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEF_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39839); - var - _aEG_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$41), - _aEH_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aEG_), - _aEI_=caml_call1(Runtime_ocaml_Runtime[69],_aEH_), - _aEJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3454), - _aEK_=caml_call2(Runtime_ocaml_Runtime[104],_aEJ_,_aEI_), - _aEL_=caml_call1(Runtime_ocaml_Runtime[31],cst_39839$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aEL_,_aEK_)}} - function _aD5_(param$0) - {var - _aD6_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), - _aD7_=caml_call2(Runtime_ocaml_Runtime[114],param,_aD6_), - _aD8_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), - _aD9_=caml_call2(Runtime_ocaml_Runtime[129],param,_aD8_), - _aD__=caml_call2(Runtime_ocaml_Runtime[83],_aD9_,_aD7_), - _aD$_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _aEa_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aD$_), - _aEb_=caml_call2(Runtime_ocaml_Runtime[83],_aEa_,_aD__); - return caml_call2(Runtime_ocaml_Runtime[29],_Jp_,_aEb_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Jq_,[0],_aD5_,_aD4_)}, - _ar$_= - function(param$0) - {function _aDk_(param) - {switch(zone[0]) - {case 0: - var _aDu_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$334); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDu_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29996) - :caml_call1(Runtime_ocaml_Runtime[31],cst_36149); - var _aDv_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$225); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDv_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38868); - var _aDw_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$64); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDw_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39954); - var _aDx_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$44); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDx_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41078); - var _aDy_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$40); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDy_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42180); - var _aDz_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$42); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDz_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_43074); - var - _aDA_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$43), - _aDB_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aDA_), - _aDC_=caml_call1(Runtime_ocaml_Runtime[69],_aDB_), - _aDD_=caml_call1(Runtime_ocaml_Runtime[31],cst_3751), - _aDE_=caml_call2(Runtime_ocaml_Runtime[104],_aDD_,_aDC_), - _aDF_=caml_call1(Runtime_ocaml_Runtime[31],cst_43074$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aDF_,_aDE_); - case 1: - var _aDG_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$335); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDG_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26315) - :caml_call1(Runtime_ocaml_Runtime[31],cst_32259); - var _aDH_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$226); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDH_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34923); - var _aDI_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$65); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDI_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36132); - var _aDJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$45); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDJ_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37373); - var _aDK_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$41); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDK_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38605); - var _aDL_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$44); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDL_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41338); - var - _aDM_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$45), - _aDN_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aDM_), - _aDO_=caml_call1(Runtime_ocaml_Runtime[69],_aDN_), - _aDP_=caml_call1(Runtime_ocaml_Runtime[31],cst_3594), - _aDQ_=caml_call2(Runtime_ocaml_Runtime[104],_aDP_,_aDO_), - _aDR_=caml_call1(Runtime_ocaml_Runtime[31],cst_41338$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aDR_,_aDQ_); - default: - var _aDS_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$336); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDS_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24686) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29942); - var _aDT_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$227); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDT_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32644); - var _aDU_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$66); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDU_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33993); - var _aDV_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$46); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDV_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35362); - var _aDW_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$42); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDW_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36710); - var _aDX_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$46); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDX_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39445); - var - _aDY_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$47), - _aDZ_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aDY_), - _aD0_=caml_call1(Runtime_ocaml_Runtime[69],_aDZ_), - _aD1_=caml_call1(Runtime_ocaml_Runtime[31],cst_3420), - _aD2_=caml_call2(Runtime_ocaml_Runtime[104],_aD1_,_aD0_), - _aD3_=caml_call1(Runtime_ocaml_Runtime[31],cst_39445$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aD3_,_aD2_)}} - function _aDl_(param$0) - {var - _aDm_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), - _aDn_=caml_call2(Runtime_ocaml_Runtime[114],param,_aDm_), - _aDo_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), - _aDp_=caml_call2(Runtime_ocaml_Runtime[129],param,_aDo_), - _aDq_=caml_call2(Runtime_ocaml_Runtime[83],_aDp_,_aDn_), - _aDr_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _aDs_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aDr_), - _aDt_=caml_call2(Runtime_ocaml_Runtime[83],_aDs_,_aDq_); - return caml_call2(Runtime_ocaml_Runtime[29],_Jr_,_aDt_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Js_,[0],_aDl_,_aDk_)}, - _asa_= - function(param$0) - {function _aCC_(param) - {switch(zone[0]) - {case 0: - var _aCM_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$337); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCM_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29670) - :caml_call1(Runtime_ocaml_Runtime[31],cst_35757); - var _aCN_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$228); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCN_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38445); - var _aCO_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$67); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCO_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39519); - var _aCP_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$47); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCP_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40601); - var _aCQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$43); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCQ_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41721); - var _aCR_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$48); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCR_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42605); - var - _aCS_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$49), - _aCT_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aCS_), - _aCU_=caml_call1(Runtime_ocaml_Runtime[69],_aCT_), - _aCV_=caml_call1(Runtime_ocaml_Runtime[31],cst_3710), - _aCW_=caml_call2(Runtime_ocaml_Runtime[104],_aCV_,_aCU_), - _aCX_=caml_call1(Runtime_ocaml_Runtime[31],cst_42605$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aCX_,_aCW_); - case 1: - var _aCY_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$338); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCY_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26029) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31908); - var _aCZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$229); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCZ_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34643); - var _aC0_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$68); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aC0_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35739); - var _aC1_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$48); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aC1_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36970); - var _aC2_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$44); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aC2_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38185); - var _aC3_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$50); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aC3_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40888); - var - _aC4_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$51), - _aC5_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aC4_), - _aC6_=caml_call1(Runtime_ocaml_Runtime[69],_aC5_), - _aC7_=caml_call1(Runtime_ocaml_Runtime[31],cst_3555), - _aC8_=caml_call2(Runtime_ocaml_Runtime[104],_aC7_,_aC6_), - _aC9_=caml_call1(Runtime_ocaml_Runtime[31],cst_40888$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aC9_,_aC8_); - default: - var _aC__=caml_call1(Runtime_ocaml_Runtime[46],cst_0$339); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aC__)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24417) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29616); - var _aC$_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$230); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aC$_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32289); - var _aDa_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$69); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDa_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33623$0); - var _aDb_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$49); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDb_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34977); - var _aDc_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$45); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDc_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36311); - var _aDd_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$52); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDd_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39016); - var - _aDe_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$53), - _aDf_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aDe_), - _aDg_=caml_call1(Runtime_ocaml_Runtime[69],_aDf_), - _aDh_=caml_call1(Runtime_ocaml_Runtime[31],cst_3383), - _aDi_=caml_call2(Runtime_ocaml_Runtime[104],_aDh_,_aDg_), - _aDj_=caml_call1(Runtime_ocaml_Runtime[31],cst_39016$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aDj_,_aDi_)}} - function _aCD_(param$0) - {var - _aCE_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), - _aCF_=caml_call2(Runtime_ocaml_Runtime[114],param,_aCE_), - _aCG_=caml_call3(Runtime_ocaml_Runtime[57],2010,1,1), - _aCH_=caml_call2(Runtime_ocaml_Runtime[129],param,_aCG_), - _aCI_=caml_call2(Runtime_ocaml_Runtime[83],_aCH_,_aCF_), - _aCJ_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _aCK_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aCJ_), - _aCL_=caml_call2(Runtime_ocaml_Runtime[83],_aCK_,_aCI_); - return caml_call2(Runtime_ocaml_Runtime[29],_Jt_,_aCL_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Ju_,[0],_aCD_,_aCC_)}, - _asb_= - function(param$0) - {function _aBU_(param) - {switch(zone[0]) - {case 0: - var _aB4_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$340); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aB4_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_29575) - :caml_call1(Runtime_ocaml_Runtime[31],cst_35642); - var _aB5_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$231); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aB5_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38322); - var _aB6_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$70); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aB6_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39393); - var _aB7_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$50); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aB7_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40501); - var _aB8_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$46); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aB8_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41588); - var _aB9_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$54); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aB9_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_42469); - var - _aB__=caml_call1(Runtime_ocaml_Runtime[46],cst_5$55), - _aB$_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aB__), - _aCa_=caml_call1(Runtime_ocaml_Runtime[69],_aB$_), - _aCb_=caml_call1(Runtime_ocaml_Runtime[31],cst_3698), - _aCc_=caml_call2(Runtime_ocaml_Runtime[104],_aCb_,_aCa_), - _aCd_=caml_call1(Runtime_ocaml_Runtime[31],cst_42469$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aCd_,_aCc_); - case 1: - var _aCe_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$341); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCe_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25946) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31806); - var _aCf_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$232); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCf_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34433); - var _aCg_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$71); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCg_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35625); - var _aCh_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$51); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCh_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36852); - var _aCi_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$47); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCi_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38063); - var _aCj_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$56); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCj_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40758); - var - _aCk_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$57), - _aCl_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aCk_), - _aCm_=caml_call1(Runtime_ocaml_Runtime[69],_aCl_), - _aCn_=caml_call1(Runtime_ocaml_Runtime[31],cst_3544), - _aCo_=caml_call2(Runtime_ocaml_Runtime[104],_aCn_,_aCm_), - _aCp_=caml_call1(Runtime_ocaml_Runtime[31],cst_40758$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aCp_,_aCo_); - default: - var _aCq_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$342); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCq_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24339) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29522); - var _aCr_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$233); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCr_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32186); - var _aCs_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$72); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCs_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33516); - var _aCt_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$52); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCt_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34865); - var _aCu_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$48); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCu_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36195); - var _aCv_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$58); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCv_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38892); - var - _aCw_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$59), - _aCx_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aCw_), - _aCy_=caml_call1(Runtime_ocaml_Runtime[69],_aCx_), - _aCz_=caml_call1(Runtime_ocaml_Runtime[31],cst_3372), - _aCA_=caml_call2(Runtime_ocaml_Runtime[104],_aCz_,_aCy_), - _aCB_=caml_call1(Runtime_ocaml_Runtime[31],cst_38892$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aCB_,_aCA_)}} - function _aBV_(param$0) - {var - _aBW_=caml_call3(Runtime_ocaml_Runtime[57],2010,1,1), - _aBX_=caml_call2(Runtime_ocaml_Runtime[114],param,_aBW_), - _aBY_=caml_call3(Runtime_ocaml_Runtime[57],2009,1,1), - _aBZ_=caml_call2(Runtime_ocaml_Runtime[129],param,_aBY_), - _aB0_=caml_call2(Runtime_ocaml_Runtime[83],_aBZ_,_aBX_), - _aB1_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _aB2_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aB1_), - _aB3_=caml_call2(Runtime_ocaml_Runtime[83],_aB2_,_aB0_); - return caml_call2(Runtime_ocaml_Runtime[29],_Jv_,_aB3_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Jw_,[0],_aBV_,_aBU_)}, - _asc_= - function(param$0) - {function _aBa_(param) - {switch(zone[0]) - {case 0: - var _aBk_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$343); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBk_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_28728) - :caml_call1(Runtime_ocaml_Runtime[31],cst_34621); - var _aBl_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$234); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBl_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37224); - var _aBm_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$73); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBm_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38264); - var _aBn_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$53); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBn_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39340$0); - var _aBo_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$49); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBo_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40396); - var _aBp_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$60); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBp_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_41252); - var - _aBq_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$61), - _aBr_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aBq_), - _aBs_=caml_call1(Runtime_ocaml_Runtime[69],_aBr_), - _aBt_=caml_call1(Runtime_ocaml_Runtime[31],cst_3592), - _aBu_=caml_call2(Runtime_ocaml_Runtime[104],_aBt_,_aBs_), - _aBv_=caml_call1(Runtime_ocaml_Runtime[31],cst_41252$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aBv_,_aBu_); - case 1: - var _aBw_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$344); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBw_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_25203) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30895); - var _aBx_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$235); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBx_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33446); - var _aBy_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$74); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBy_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34604); - var _aBz_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$54); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBz_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35796); - var _aBA_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$50); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBA_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36972); - var _aBB_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$62); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBB_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39590); - var - _aBC_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$63), - _aBD_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aBC_), - _aBE_=caml_call1(Runtime_ocaml_Runtime[69],_aBD_), - _aBF_=caml_call1(Runtime_ocaml_Runtime[31],cst_3442), - _aBG_=caml_call2(Runtime_ocaml_Runtime[104],_aBF_,_aBE_), - _aBH_=caml_call1(Runtime_ocaml_Runtime[31],cst_39590$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aBH_,_aBG_); - default: - var _aBI_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$345); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBI_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23642) - :caml_call1(Runtime_ocaml_Runtime[31],cst_28676); - var _aBJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$236); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBJ_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_31264$0); - var _aBK_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$75); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBK_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32556); - var _aBL_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$55); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBL_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33866); - var _aBM_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$51); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBM_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35158); - var _aBN_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$64); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBN_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37778); - var - _aBO_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$65), - _aBP_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aBO_), - _aBQ_=caml_call1(Runtime_ocaml_Runtime[69],_aBP_), - _aBR_=caml_call1(Runtime_ocaml_Runtime[31],cst_3275), - _aBS_=caml_call2(Runtime_ocaml_Runtime[104],_aBR_,_aBQ_), - _aBT_=caml_call1(Runtime_ocaml_Runtime[31],cst_37778$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aBT_,_aBS_)}} - function _aBb_(param$0) - {var - _aBc_=caml_call3(Runtime_ocaml_Runtime[57],2009,1,1), - _aBd_=caml_call2(Runtime_ocaml_Runtime[114],param,_aBc_), - _aBe_=caml_call3(Runtime_ocaml_Runtime[57],2008,1,1), - _aBf_=caml_call2(Runtime_ocaml_Runtime[129],param,_aBe_), - _aBg_=caml_call2(Runtime_ocaml_Runtime[83],_aBf_,_aBd_), - _aBh_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _aBi_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aBh_), - _aBj_=caml_call2(Runtime_ocaml_Runtime[83],_aBi_,_aBg_); - return caml_call2(Runtime_ocaml_Runtime[29],_Jx_,_aBj_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Jy_,[0],_aBb_,_aBa_)}, - _asd_= - function(param$0) - {function _aAs_(param) - {switch(zone[0]) - {case 0: - var _aAC_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$346); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAC_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27956) - :caml_call1(Runtime_ocaml_Runtime[31],cst_33691); - var _aAD_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$237); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAD_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36224); - var _aAE_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$76); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAE_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37236); - var _aAF_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$56); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAF_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38283); - var _aAG_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$52); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAG_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39311); - var _aAH_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$66); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAH_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_40144); - var - _aAI_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$67), - _aAJ_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aAI_), - _aAK_=caml_call1(Runtime_ocaml_Runtime[69],_aAJ_), - _aAL_=caml_call1(Runtime_ocaml_Runtime[31],cst_3496), - _aAM_=caml_call2(Runtime_ocaml_Runtime[104],_aAL_,_aAK_), - _aAN_=caml_call1(Runtime_ocaml_Runtime[31],cst_40144$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aAN_,_aAM_); - case 1: - var _aAO_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$347); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAO_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_24526) - :caml_call1(Runtime_ocaml_Runtime[31],cst_30065); - var _aAP_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$238); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAP_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32548); - var _aAQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$77); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAQ_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33675); - var _aAR_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$57); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAR_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34865$0); - var _aAS_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$53); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAS_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35979); - var _aAT_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$68); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAT_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38527); - var - _aAU_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$69), - _aAV_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aAU_), - _aAW_=caml_call1(Runtime_ocaml_Runtime[69],_aAV_), - _aAX_=caml_call1(Runtime_ocaml_Runtime[31],cst_3350), - _aAY_=caml_call2(Runtime_ocaml_Runtime[104],_aAX_,_aAW_), - _aAZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_38527$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aAZ_,_aAY_); - default: - var _aA0_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$348); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aA0_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23007) - :caml_call1(Runtime_ocaml_Runtime[31],cst_27906); - var _aA1_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$239); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aA1_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_30424); - var _aA2_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$78); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aA2_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_31682); - var _aA3_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$58); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aA3_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32956$0); - var _aA4_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$54); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aA4_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34214); - var _aA5_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$70); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aA5_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36733); - var - _aA6_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$71), - _aA7_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aA6_), - _aA8_=caml_call1(Runtime_ocaml_Runtime[69],_aA7_), - _aA9_=caml_call1(Runtime_ocaml_Runtime[31],cst_3187), - _aA__=caml_call2(Runtime_ocaml_Runtime[104],_aA9_,_aA8_), - _aA$_=caml_call1(Runtime_ocaml_Runtime[31],cst_36733$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aA$_,_aA__)}} - function _aAt_(param$0) - {var - _aAu_=caml_call3(Runtime_ocaml_Runtime[57],2008,1,1), - _aAv_=caml_call2(Runtime_ocaml_Runtime[114],param,_aAu_), - _aAw_=caml_call3(Runtime_ocaml_Runtime[57],2007,1,1), - _aAx_=caml_call2(Runtime_ocaml_Runtime[129],param,_aAw_), - _aAy_=caml_call2(Runtime_ocaml_Runtime[83],_aAx_,_aAv_), - _aAz_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _aAA_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_aAz_), - _aAB_=caml_call2(Runtime_ocaml_Runtime[83],_aAA_,_aAy_); - return caml_call2(Runtime_ocaml_Runtime[29],_Jz_,_aAB_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_JA_,[0],_aAt_,_aAs_)}, - _ase_= - function(param$0) - {function _azK_(param) - {switch(zone[0]) - {case 0: - var _azU_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$349); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azU_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_27195) - :caml_call1(Runtime_ocaml_Runtime[31],cst_32773); - var _azV_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$240); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azV_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35237); - var _azW_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$79); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azW_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36222); - var _azX_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$59); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azX_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37240); - var _azY_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$55); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azY_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38240); - var _azZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$72); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azZ_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_39051); - var - _az0_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$73), - _az1_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_az0_), - _az2_=caml_call1(Runtime_ocaml_Runtime[69],_az1_), - _az3_=caml_call1(Runtime_ocaml_Runtime[31],cst_3401), - _az4_=caml_call2(Runtime_ocaml_Runtime[104],_az3_,_az2_), - _az5_=caml_call1(Runtime_ocaml_Runtime[31],cst_39051$0); - return caml_call2(Runtime_ocaml_Runtime[93],_az5_,_az4_); - case 1: - var _az6_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$350); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_az6_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23858) - :caml_call1(Runtime_ocaml_Runtime[31],cst_29246); - var _az7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$241); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_az7_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_31661); - var _az8_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$80); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_az8_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32758); - var _az9_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$60); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_az9_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33886); - var _az__=caml_call1(Runtime_ocaml_Runtime[46],cst_4$56); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_az__)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34999); - var _az$_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$74); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_az$_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37478); - var - _aAa_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$75), - _aAb_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aAa_), - _aAc_=caml_call1(Runtime_ocaml_Runtime[69],_aAb_), - _aAd_=caml_call1(Runtime_ocaml_Runtime[31],cst_3259), - _aAe_=caml_call2(Runtime_ocaml_Runtime[104],_aAd_,_aAc_), - _aAf_=caml_call1(Runtime_ocaml_Runtime[31],cst_37478$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aAf_,_aAe_); - default: - var _aAg_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$351); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAg_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_22380) - :caml_call1(Runtime_ocaml_Runtime[31],cst_27146); - var _aAh_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$242); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAh_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_29595); - var _aAi_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$81); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAi_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_30819); - var _aAj_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$61); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAj_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32058); - var _aAk_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$57); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAk_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33282); - var _aAl_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$76); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAl_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35762); - var - _aAm_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$77), - _aAn_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aAm_), - _aAo_=caml_call1(Runtime_ocaml_Runtime[69],_aAn_), - _aAp_=caml_call1(Runtime_ocaml_Runtime[31],cst_3100), - _aAq_=caml_call2(Runtime_ocaml_Runtime[104],_aAp_,_aAo_), - _aAr_=caml_call1(Runtime_ocaml_Runtime[31],cst_35762$0); - return caml_call2(Runtime_ocaml_Runtime[93],_aAr_,_aAq_)}} - function _azL_(param$0) - {var - _azM_=caml_call3(Runtime_ocaml_Runtime[57],2007,1,1), - _azN_=caml_call2(Runtime_ocaml_Runtime[114],param,_azM_), - _azO_=caml_call3(Runtime_ocaml_Runtime[57],2005,9,1), - _azP_=caml_call2(Runtime_ocaml_Runtime[129],param,_azO_), - _azQ_=caml_call2(Runtime_ocaml_Runtime[83],_azP_,_azN_), - _azR_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _azS_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_azR_), - _azT_=caml_call2(Runtime_ocaml_Runtime[83],_azS_,_azQ_); - return caml_call2(Runtime_ocaml_Runtime[29],_JB_,_azT_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_JC_,[0],_azL_,_azK_)}, - _asf_= - function(param$0) - {function _ay2_(param) - {switch(zone[0]) - {case 0: - var _aza_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$352); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aza_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26714$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_32194); - var _azb_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$243); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azb_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34614); - var _azc_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$82); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azc_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35582); - var _azd_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$62); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azd_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36582); - var _aze_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$58); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aze_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37564); - var _azf_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$78); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azf_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_38361); - var - _azg_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$79), - _azh_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_azg_), - _azi_=caml_call1(Runtime_ocaml_Runtime[69],_azh_), - _azj_=caml_call1(Runtime_ocaml_Runtime[31],cst_3341), - _azk_=caml_call2(Runtime_ocaml_Runtime[104],_azj_,_azi_), - _azl_=caml_call1(Runtime_ocaml_Runtime[31],cst_38361$0); - return caml_call2(Runtime_ocaml_Runtime[93],_azl_,_azk_); - case 1: - var _azm_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$353); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azm_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23436) - :caml_call1(Runtime_ocaml_Runtime[31],cst_28729); - var _azn_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$244); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azn_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_31101); - var _azo_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$83); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azo_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32179); - var _azp_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$63); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azp_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33287); - var _azq_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$59); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azq_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34380); - var _azr_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$80); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azr_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36815); - var - _azs_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$81), - _azt_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_azs_), - _azu_=caml_call1(Runtime_ocaml_Runtime[69],_azt_), - _azv_=caml_call1(Runtime_ocaml_Runtime[31],cst_3201), - _azw_=caml_call2(Runtime_ocaml_Runtime[104],_azv_,_azu_), - _azx_=caml_call1(Runtime_ocaml_Runtime[31],cst_36815$0); - return caml_call2(Runtime_ocaml_Runtime[93],_azx_,_azw_); - default: - var _azy_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$354); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azy_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_21984) - :caml_call1(Runtime_ocaml_Runtime[31],cst_26666); - var _azz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$245); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azz_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_29072); - var _azA_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$84); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azA_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_30274); - var _azB_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$64); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azB_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_31491); - var _azC_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$60); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azC_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32694); - var _azD_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$82); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azD_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35130); - var - _azE_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$83), - _azF_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_azE_), - _azG_=caml_call1(Runtime_ocaml_Runtime[69],_azF_), - _azH_=caml_call1(Runtime_ocaml_Runtime[31],cst_3045), - _azI_=caml_call2(Runtime_ocaml_Runtime[104],_azH_,_azG_), - _azJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_35130$0); - return caml_call2(Runtime_ocaml_Runtime[93],_azJ_,_azI_)}} - function _ay3_(param$0) - {var - _ay4_=caml_call3(Runtime_ocaml_Runtime[57],2005,9,1), - _ay5_=caml_call2(Runtime_ocaml_Runtime[114],param,_ay4_), - _ay6_=caml_call3(Runtime_ocaml_Runtime[57],2003,7,1), - _ay7_=caml_call2(Runtime_ocaml_Runtime[129],param,_ay6_), - _ay8_=caml_call2(Runtime_ocaml_Runtime[83],_ay7_,_ay5_), - _ay9_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _ay__= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_ay9_), - _ay$_=caml_call2(Runtime_ocaml_Runtime[83],_ay__,_ay8_); - return caml_call2(Runtime_ocaml_Runtime[29],_JD_,_ay$_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_JE_,[0],_ay3_,_ay2_)}, - _asg_= - function(param$0) - {function _ayi_(param) - {switch(zone[0]) - {case 0: - var _ays_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$355); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ays_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26397) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31812); - var _ayt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$246); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayt_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34204); - var _ayu_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$85); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayu_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35160); - var _ayv_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$65); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayv_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36148); - var _ayw_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$61); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayw_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37119); - var _ayx_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$84); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayx_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37906); - var - _ayy_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$85), - _ayz_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_ayy_), - _ayA_=caml_call1(Runtime_ocaml_Runtime[69],_ayz_), - _ayB_=caml_call1(Runtime_ocaml_Runtime[31],cst_3301), - _ayC_=caml_call2(Runtime_ocaml_Runtime[104],_ayB_,_ayA_), - _ayD_=caml_call1(Runtime_ocaml_Runtime[31],cst_37906$0); - return caml_call2(Runtime_ocaml_Runtime[93],_ayD_,_ayC_); - case 1: - var _ayE_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$356); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayE_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_23158) - :caml_call1(Runtime_ocaml_Runtime[31],cst_28388); - var _ayF_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$247); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayF_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_30732); - var _ayG_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$86); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayG_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_31797$2); - var _ayH_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$66); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayH_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32892); - var _ayI_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$62); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayI_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33972); - var _ayJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$86); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayJ_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36378); - var - _ayK_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$87), - _ayL_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_ayK_), - _ayM_=caml_call1(Runtime_ocaml_Runtime[69],_ayL_), - _ayN_=caml_call1(Runtime_ocaml_Runtime[31],cst_3163), - _ayO_=caml_call2(Runtime_ocaml_Runtime[104],_ayN_,_ayM_), - _ayP_=caml_call1(Runtime_ocaml_Runtime[31],cst_36378$0); - return caml_call2(Runtime_ocaml_Runtime[93],_ayP_,_ayO_); - default: - var _ayQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$357); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayQ_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_21723) - :caml_call1(Runtime_ocaml_Runtime[31],cst_26350); - var _ayR_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$248); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayR_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_28727); - var _ayS_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$87); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayS_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_29915); - var _ayT_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$67); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayT_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_31118); - var _ayU_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$63); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayU_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32306); - var _ayV_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$88); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayV_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34713); - var - _ayW_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$89), - _ayX_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_ayW_), - _ayY_=caml_call1(Runtime_ocaml_Runtime[69],_ayX_), - _ayZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3009), - _ay0_=caml_call2(Runtime_ocaml_Runtime[104],_ayZ_,_ayY_), - _ay1_=caml_call1(Runtime_ocaml_Runtime[31],cst_34713$0); - return caml_call2(Runtime_ocaml_Runtime[93],_ay1_,_ay0_)}} - function _ayj_(param$0) - {var - _ayk_=caml_call3(Runtime_ocaml_Runtime[57],2003,7,1), - _ayl_=caml_call2(Runtime_ocaml_Runtime[114],param,_ayk_), - _aym_=caml_call3(Runtime_ocaml_Runtime[57],2002,7,1), - _ayn_=caml_call2(Runtime_ocaml_Runtime[129],param,_aym_), - _ayo_=caml_call2(Runtime_ocaml_Runtime[83],_ayn_,_ayl_), - _ayp_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _ayq_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_ayp_), - _ayr_=caml_call2(Runtime_ocaml_Runtime[83],_ayq_,_ayo_); - return caml_call2(Runtime_ocaml_Runtime[29],_JF_,_ayr_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_JG_,[0],_ayj_,_ayi_)}, - _ash_= - function(param$0) - {function _axA_(param) - {switch(zone[0]) - {case 0: - var _axK_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$358); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axK_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_26084) - :caml_call1(Runtime_ocaml_Runtime[31],cst_31435); - var _axL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$249); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axL_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33798); - var _axM_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$88); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axM_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34743); - var _axN_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$68); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axN_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35719); - var _axO_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$64); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axO_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_36679); - var _axP_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$90); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axP_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_37457); - var - _axQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$91), - _axR_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_axQ_), - _axS_=caml_call1(Runtime_ocaml_Runtime[69],_axR_), - _axT_=caml_call1(Runtime_ocaml_Runtime[31],cst_3262), - _axU_=caml_call2(Runtime_ocaml_Runtime[104],_axT_,_axS_), - _axV_=caml_call1(Runtime_ocaml_Runtime[31],cst_37457$0); - return caml_call2(Runtime_ocaml_Runtime[93],_axV_,_axU_); - case 1: - var _axW_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$359); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axW_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_22883) - :caml_call1(Runtime_ocaml_Runtime[31],cst_28051); - var _axX_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$250); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axX_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_30368); - var _axY_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$89); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axY_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_31420); - var _axZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$69); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axZ_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_32502); - var _ax0_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$65); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ax0_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_33569); - var _ax1_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$92); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ax1_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_35947); - var - _ax2_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$93), - _ax3_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_ax2_), - _ax4_=caml_call1(Runtime_ocaml_Runtime[69],_ax3_), - _ax5_=caml_call1(Runtime_ocaml_Runtime[31],cst_3125), - _ax6_=caml_call2(Runtime_ocaml_Runtime[104],_ax5_,_ax4_), - _ax7_=caml_call1(Runtime_ocaml_Runtime[31],cst_35947$0); - return caml_call2(Runtime_ocaml_Runtime[93],_ax7_,_ax6_); - default: - var _ax8_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$360); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ax8_)) - return 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_21465) - :caml_call1(Runtime_ocaml_Runtime[31],cst_26038); - var _ax9_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$251); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ax9_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_28386); - var _ax__=caml_call1(Runtime_ocaml_Runtime[46],cst_2$90); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ax__)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_29560); - var _ax$_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$70); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ax$_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_30749); - var _aya_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$66); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aya_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_31923); - var _ayb_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$94); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayb_)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_34301); - var - _ayc_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$95), - _ayd_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_ayc_), - _aye_=caml_call1(Runtime_ocaml_Runtime[69],_ayd_), - _ayf_=caml_call1(Runtime_ocaml_Runtime[31],cst_2973), - _ayg_=caml_call2(Runtime_ocaml_Runtime[104],_ayf_,_aye_), - _ayh_=caml_call1(Runtime_ocaml_Runtime[31],cst_34301$0); - return caml_call2(Runtime_ocaml_Runtime[93],_ayh_,_ayg_)}} - function _axB_(param$0) - {var - _axC_=caml_call3(Runtime_ocaml_Runtime[57],2002,7,1), - _axD_=caml_call2(Runtime_ocaml_Runtime[114],param,_axC_), - _axE_=caml_call3(Runtime_ocaml_Runtime[57],2002,1,1), - _axF_=caml_call2(Runtime_ocaml_Runtime[129],param,_axE_), - _axG_=caml_call2(Runtime_ocaml_Runtime[83],_axF_,_axD_), - _axH_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _axI_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_axH_), - _axJ_=caml_call2(Runtime_ocaml_Runtime[83],_axI_,_axG_); - return caml_call2(Runtime_ocaml_Runtime[29],_JH_,_axJ_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_JI_,[0],_axB_,_axA_)}, - _asi_= - function(param$0) - {function _awR_(param) - {switch(zone[0]) - {case 0: - var _aw1_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$361); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aw1_)) - var - _aw2_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_171100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_206200); - else - {var _aw3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$252); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aw3_)) - var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_221700); - else - {var _aw4_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$91); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aw4_)) - var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_227900); - else - {var _aw5_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$71); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aw5_)) - var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_234300); - else - {var _aw6_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$67); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aw6_)) - var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_240600); - else - {var _aw7_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$96); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aw7_)) - var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_245700); - else - var - _aw8_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$97), - _aw9_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aw8_), - _aw__=caml_call1(Runtime_ocaml_Runtime[69],_aw9_), - _aw$_=caml_call1(Runtime_ocaml_Runtime[31],cst_21400), - _axa_=caml_call2(Runtime_ocaml_Runtime[104],_aw$_,_aw__), - _axb_=caml_call1(Runtime_ocaml_Runtime[31],cst_245700$0), - _aw2_=caml_call2(Runtime_ocaml_Runtime[93],_axb_,_axa_)}}}}} - break; - case 1: - var _axc_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$362); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axc_)) - var - _aw2_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_150100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_184000$0); - else - {var _axd_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$253); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axd_)) - var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_199200); - else - {var _axe_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$92); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axe_)) - var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_206100); - else - {var _axf_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$72); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axf_)) - var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_213200); - else - {var _axg_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$68); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axg_)) - var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_220200); - else - {var _axh_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$98); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axh_)) - var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_235800); - else - var - _axi_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$99), - _axj_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_axi_), - _axk_=caml_call1(Runtime_ocaml_Runtime[69],_axj_), - _axl_=caml_call1(Runtime_ocaml_Runtime[31],cst_20500), - _axm_=caml_call2(Runtime_ocaml_Runtime[104],_axl_,_axk_), - _axn_=caml_call1(Runtime_ocaml_Runtime[31],cst_235800$0), - _aw2_=caml_call2(Runtime_ocaml_Runtime[93],_axn_,_axm_)}}}}} - break; - default: - var _axo_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$363); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axo_)) - var - _aw2_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_140800) - :caml_call1(Runtime_ocaml_Runtime[31],cst_170800); - else - {var _axp_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$254); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axp_)) - var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_186200); - else - {var _axq_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$93); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axq_)) - var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_193900); - else - {var _axr_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$73); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axr_)) - var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_201700); - else - {var _axs_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$69); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axs_)) - var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_209400); - else - {var _axt_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$100); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axt_)) - var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_225000); - else - var - _axu_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$101), - _axv_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_axu_), - _axw_=caml_call1(Runtime_ocaml_Runtime[69],_axv_), - _axx_=caml_call1(Runtime_ocaml_Runtime[31],cst_19500), - _axy_=caml_call2(Runtime_ocaml_Runtime[104],_axx_,_axw_), - _axz_=caml_call1(Runtime_ocaml_Runtime[31],cst_225000$0), - _aw2_=caml_call2(Runtime_ocaml_Runtime[93],_axz_,_axy_)}}}}}} - return caml_call2 - (Runtime_ocaml_Runtime[104],_aw2_,taux_francs_vers_euros)} - function _awS_(param$0) - {var - _awT_=caml_call3(Runtime_ocaml_Runtime[57],2002,1,1), - _awU_=caml_call2(Runtime_ocaml_Runtime[114],param,_awT_), - _awV_=caml_call3(Runtime_ocaml_Runtime[57],2001,7,1), - _awW_=caml_call2(Runtime_ocaml_Runtime[129],param,_awV_), - _awX_=caml_call2(Runtime_ocaml_Runtime[83],_awW_,_awU_), - _awY_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _awZ_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_awY_), - _aw0_=caml_call2(Runtime_ocaml_Runtime[83],_awZ_,_awX_); - return caml_call2(Runtime_ocaml_Runtime[29],_JJ_,_aw0_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_JK_,[0],_awS_,_awR_)}, - _asj_= - function(param$0) - {function _av8_(param) - {switch(zone[0]) - {case 0: - var _awg_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$364); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awg_)) - var - _awh_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_169100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_203800); - else - {var _awi_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$255); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awi_)) - var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_219100); - else - {var _awj_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$94); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awj_)) - var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_225200); - else - {var _awk_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$74); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awk_)) - var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_231500); - else - {var _awl_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$70); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awl_)) - var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_237700); - else - {var _awm_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$102); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awm_)) - var - _awh_= - caml_call1(Runtime_ocaml_Runtime[31],cst_242800$1); - else - var - _awn_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$103), - _awo_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_awn_), - _awp_=caml_call1(Runtime_ocaml_Runtime[69],_awo_), - _awq_=caml_call1(Runtime_ocaml_Runtime[31],cst_21100), - _awr_=caml_call2(Runtime_ocaml_Runtime[104],_awq_,_awp_), - _aws_=caml_call1(Runtime_ocaml_Runtime[31],cst_242800$2), - _awh_=caml_call2(Runtime_ocaml_Runtime[93],_aws_,_awr_)}}}}} - break; - case 1: - var _awt_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$365); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awt_)) - var - _awh_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_148300) - :caml_call1(Runtime_ocaml_Runtime[31],cst_181800); - else - {var _awu_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$256); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awu_)) - var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_196800); - else - {var _awv_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$95); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awv_)) - var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_203700); - else - {var _aww_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$75); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aww_)) - var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_210700); - else - {var _awx_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$71); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awx_)) - var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_217600); - else - {var _awy_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$104); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awy_)) - var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_233000); - else - var - _awz_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$105), - _awA_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_awz_), - _awB_=caml_call1(Runtime_ocaml_Runtime[69],_awA_), - _awC_=caml_call1(Runtime_ocaml_Runtime[31],cst_20300), - _awD_=caml_call2(Runtime_ocaml_Runtime[104],_awC_,_awB_), - _awE_=caml_call1(Runtime_ocaml_Runtime[31],cst_233000$0), - _awh_=caml_call2(Runtime_ocaml_Runtime[93],_awE_,_awD_)}}}}} - break; - default: - var _awF_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$366); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awF_)) - var - _awh_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_139100) - :caml_call1(Runtime_ocaml_Runtime[31],cst_168800); - else - {var _awG_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$257); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awG_)) - var - _awh_= - caml_call1(Runtime_ocaml_Runtime[31],cst_184000$1); - else - {var _awH_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$96); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awH_)) - var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_191600); - else - {var _awI_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$76); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awI_)) - var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_199300); - else - {var _awJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$72); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awJ_)) - var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_206900); - else - {var _awK_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$106); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awK_)) - var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_222300); - else - var - _awL_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$107), - _awM_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_awL_), - _awN_=caml_call1(Runtime_ocaml_Runtime[69],_awM_), - _awO_=caml_call1(Runtime_ocaml_Runtime[31],cst_19300), - _awP_=caml_call2(Runtime_ocaml_Runtime[104],_awO_,_awN_), - _awQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_222300$0), - _awh_=caml_call2(Runtime_ocaml_Runtime[93],_awQ_,_awP_)}}}}}} - return caml_call2 - (Runtime_ocaml_Runtime[104],_awh_,taux_francs_vers_euros)} - function _av9_(param$0) - {var - _av__=caml_call3(Runtime_ocaml_Runtime[57],2001,7,1), - _av$_=caml_call2(Runtime_ocaml_Runtime[114],param,_av__), - _awa_=caml_call3(Runtime_ocaml_Runtime[57],2000,7,1), - _awb_=caml_call2(Runtime_ocaml_Runtime[129],param,_awa_), - _awc_=caml_call2(Runtime_ocaml_Runtime[83],_awb_,_av$_), - _awd_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _awe_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_awd_), - _awf_=caml_call2(Runtime_ocaml_Runtime[83],_awe_,_awc_); - return caml_call2(Runtime_ocaml_Runtime[29],_JL_,_awf_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_JM_,[0],_av9_,_av8_)}, - _ask_= - function(param$0) - {function _avn_(param) - {switch(zone[0]) - {case 0: - var _avx_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$367); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avx_)) - var - _avy_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_167400) - :caml_call1(Runtime_ocaml_Runtime[31],cst_201800); - else - {var _avz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$258); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avz_)) - var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_216900); - else - {var _avA_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$97); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avA_)) - var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_223000); - else - {var _avB_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$77); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avB_)) - var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_229200); - else - {var _avC_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$73); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avC_)) - var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_235300); - else - {var _avD_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$108); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avD_)) - var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_240400); - else - var - _avE_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$109), - _avF_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_avE_), - _avG_=caml_call1(Runtime_ocaml_Runtime[69],_avF_), - _avH_=caml_call1(Runtime_ocaml_Runtime[31],cst_20900), - _avI_=caml_call2(Runtime_ocaml_Runtime[104],_avH_,_avG_), - _avJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_240400$0), - _avy_=caml_call2(Runtime_ocaml_Runtime[93],_avJ_,_avI_)}}}}} - break; - case 1: - var _avK_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$368); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avK_)) - var - _avy_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_146800) - :caml_call1(Runtime_ocaml_Runtime[31],cst_180000); - else - {var _avL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$259); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avL_)) - var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_194900); - else - {var _avM_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$98); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avM_)) - var - _avy_= - caml_call1(Runtime_ocaml_Runtime[31],cst_201700$0); - else - {var _avN_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$78); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avN_)) - var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_208600); - else - {var _avO_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$74); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avO_)) - var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_215400); - else - {var _avP_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$110); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avP_)) - var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_230700); - else - var - _avQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$111), - _avR_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_avQ_), - _avS_=caml_call1(Runtime_ocaml_Runtime[69],_avR_), - _avT_=caml_call1(Runtime_ocaml_Runtime[31],cst_20100), - _avU_=caml_call2(Runtime_ocaml_Runtime[104],_avT_,_avS_), - _avV_=caml_call1(Runtime_ocaml_Runtime[31],cst_230700$0), - _avy_=caml_call2(Runtime_ocaml_Runtime[93],_avV_,_avU_)}}}}} - break; - default: - var _avW_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$369); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avW_)) - var - _avy_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_137700) - :caml_call1(Runtime_ocaml_Runtime[31],cst_167100); - else - {var _avX_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$260); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avX_)) - var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_182200); - else - {var _avY_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$99); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avY_)) - var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_189700); - else - {var _avZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$79); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avZ_)) - var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_197300); - else - {var _av0_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$75); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_av0_)) - var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_204900); - else - {var _av1_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$112); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_av1_)) - var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_220100); - else - var - _av2_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$113), - _av3_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_av2_), - _av4_=caml_call1(Runtime_ocaml_Runtime[69],_av3_), - _av5_=caml_call1(Runtime_ocaml_Runtime[31],cst_19100), - _av6_=caml_call2(Runtime_ocaml_Runtime[104],_av5_,_av4_), - _av7_=caml_call1(Runtime_ocaml_Runtime[31],cst_220100$0), - _avy_=caml_call2(Runtime_ocaml_Runtime[93],_av7_,_av6_)}}}}}} - return caml_call2 - (Runtime_ocaml_Runtime[104],_avy_,taux_francs_vers_euros)} - function _avo_(param$0) - {var - _avp_=caml_call3(Runtime_ocaml_Runtime[57],2000,7,1), - _avq_=caml_call2(Runtime_ocaml_Runtime[114],param,_avp_), - _avr_=caml_call3(Runtime_ocaml_Runtime[57],1999,7,1), - _avs_=caml_call2(Runtime_ocaml_Runtime[129],param,_avr_), - _avt_=caml_call2(Runtime_ocaml_Runtime[83],_avs_,_avq_), - _avu_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _avv_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_avu_), - _avw_=caml_call2(Runtime_ocaml_Runtime[83],_avv_,_avt_); - return caml_call2(Runtime_ocaml_Runtime[29],_JN_,_avw_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_JO_,[0],_avo_,_avn_)}, - _asl_= - function(param$0) - {function _auE_(param) - {switch(zone[0]) - {case 0: - var _auO_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$370); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auO_)) - var - _auP_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_167200) - :caml_call1(Runtime_ocaml_Runtime[31],cst_201600); - else - {var _auQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$261); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auQ_)) - var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_216700); - else - {var _auR_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$100); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auR_)) - var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_222800); - else - {var _auS_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$80); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auS_)) - var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_229000); - else - {var _auT_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$76); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auT_)) - var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_235100); - else - {var _auU_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$114); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auU_)) - var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_240200); - else - var - _auV_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$115), - _auW_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_auV_), - _auX_=caml_call1(Runtime_ocaml_Runtime[69],_auW_), - _auY_=caml_call1(Runtime_ocaml_Runtime[31],cst_20900$0), - _auZ_=caml_call2(Runtime_ocaml_Runtime[104],_auY_,_auX_), - _au0_=caml_call1(Runtime_ocaml_Runtime[31],cst_240200$0), - _auP_=caml_call2(Runtime_ocaml_Runtime[93],_au0_,_auZ_)}}}}} - break; - case 1: - var _au1_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$371); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_au1_)) - var - _auP_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_146700) - :caml_call1(Runtime_ocaml_Runtime[31],cst_179800); - else - {var _au2_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$262); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_au2_)) - var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_194700); - else - {var _au3_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$101); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_au3_)) - var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_201500); - else - {var _au4_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$81); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_au4_)) - var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_208400); - else - {var _au5_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$77); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_au5_)) - var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_215200); - else - {var _au6_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$116); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_au6_)) - var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_230500); - else - var - _au7_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$117), - _au8_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_au7_), - _au9_=caml_call1(Runtime_ocaml_Runtime[69],_au8_), - _au__=caml_call1(Runtime_ocaml_Runtime[31],cst_20100$0), - _au$_=caml_call2(Runtime_ocaml_Runtime[104],_au__,_au9_), - _ava_=caml_call1(Runtime_ocaml_Runtime[31],cst_230500$0), - _auP_=caml_call2(Runtime_ocaml_Runtime[93],_ava_,_au$_)}}}}} - break; - default: - var _avb_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$372); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avb_)) - var - _auP_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_137600) - :caml_call1(Runtime_ocaml_Runtime[31],cst_166900); - else - {var _avc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$263); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avc_)) - var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_182000); - else - {var _avd_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$102); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avd_)) - var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_189500); - else - {var _ave_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$82); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ave_)) - var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_197100); - else - {var _avf_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$78); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avf_)) - var - _auP_= - caml_call1(Runtime_ocaml_Runtime[31],cst_204700$0); - else - {var _avg_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$118); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avg_)) - var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_219900); - else - var - _avh_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$119), - _avi_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_avh_), - _avj_=caml_call1(Runtime_ocaml_Runtime[69],_avi_), - _avk_=caml_call1(Runtime_ocaml_Runtime[31],cst_19100$0), - _avl_=caml_call2(Runtime_ocaml_Runtime[104],_avk_,_avj_), - _avm_=caml_call1(Runtime_ocaml_Runtime[31],cst_219900$0), - _auP_=caml_call2(Runtime_ocaml_Runtime[93],_avm_,_avl_)}}}}}} - return caml_call2 - (Runtime_ocaml_Runtime[104],_auP_,taux_francs_vers_euros)} - function _auF_(param$0) - {var - _auG_=caml_call3(Runtime_ocaml_Runtime[57],1999,7,1), - _auH_=caml_call2(Runtime_ocaml_Runtime[114],param,_auG_), - _auI_=caml_call3(Runtime_ocaml_Runtime[57],1998,7,1), - _auJ_=caml_call2(Runtime_ocaml_Runtime[129],param,_auI_), - _auK_=caml_call2(Runtime_ocaml_Runtime[83],_auJ_,_auH_), - _auL_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _auM_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_auL_), - _auN_=caml_call2(Runtime_ocaml_Runtime[83],_auM_,_auK_); - return caml_call2(Runtime_ocaml_Runtime[29],_JP_,_auN_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_JQ_,[0],_auF_,_auE_)}, - _asm_= - function(param$0) - {function _atV_(param) - {switch(zone[0]) - {case 0: - var _at5_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$373); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_at5_)) - var - _at6_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_163300) - :caml_call1(Runtime_ocaml_Runtime[31],cst_196900); - else - {var _at7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$264); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_at7_)) - var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_211600); - else - {var _at8_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$103); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_at8_)) - var - _at6_= - caml_call1(Runtime_ocaml_Runtime[31],cst_217600$0); - else - {var _at9_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$83); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_at9_)) - var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_223600); - else - {var _at__=caml_call1(Runtime_ocaml_Runtime[46],cst_4$79); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_at__)) - var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_229600); - else - {var _at$_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$120); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_at$_)) - var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_234600); - else - var - _aua_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$121), - _aub_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aua_), - _auc_=caml_call1(Runtime_ocaml_Runtime[69],_aub_), - _aud_=caml_call1(Runtime_ocaml_Runtime[31],cst_20400), - _aue_=caml_call2(Runtime_ocaml_Runtime[104],_aud_,_auc_), - _auf_=caml_call1(Runtime_ocaml_Runtime[31],cst_234600$0), - _at6_=caml_call2(Runtime_ocaml_Runtime[93],_auf_,_aue_)}}}}} - break; - case 1: - var _aug_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$374); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aug_)) - var - _at6_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_143300) - :caml_call1(Runtime_ocaml_Runtime[31],cst_175600); - else - {var _auh_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$265); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auh_)) - var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_190100); - else - {var _aui_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$104); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aui_)) - var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_196600); - else - {var _auj_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$84); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auj_)) - var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_203500); - else - {var _auk_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$80); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auk_)) - var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_210200); - else - {var _aul_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$122); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aul_)) - var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_225100); - else - var - _aum_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$123), - _aun_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aum_), - _auo_=caml_call1(Runtime_ocaml_Runtime[69],_aun_), - _aup_=caml_call1(Runtime_ocaml_Runtime[31],cst_19600), - _auq_=caml_call2(Runtime_ocaml_Runtime[104],_aup_,_auo_), - _aur_=caml_call1(Runtime_ocaml_Runtime[31],cst_225100$0), - _at6_=caml_call2(Runtime_ocaml_Runtime[93],_aur_,_auq_)}}}}} - break; - default: - var _aus_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$375); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aus_)) - var - _at6_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_134400) - :caml_call1(Runtime_ocaml_Runtime[31],cst_163000$0); - else - {var _aut_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$266); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aut_)) - var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_177700); - else - {var _auu_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$105); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auu_)) - var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_185100); - else - {var _auv_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$85); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auv_)) - var - _at6_= - caml_call1(Runtime_ocaml_Runtime[31],cst_192500$0); - else - {var _auw_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$81); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auw_)) - var - _at6_= - caml_call1(Runtime_ocaml_Runtime[31],cst_199900$0); - else - {var _aux_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$124); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aux_)) - var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_214700); - else - var - _auy_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$125), - _auz_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_auy_), - _auA_=caml_call1(Runtime_ocaml_Runtime[69],_auz_), - _auB_=caml_call1(Runtime_ocaml_Runtime[31],cst_18700), - _auC_=caml_call2(Runtime_ocaml_Runtime[104],_auB_,_auA_), - _auD_=caml_call1(Runtime_ocaml_Runtime[31],cst_214700$0), - _at6_=caml_call2(Runtime_ocaml_Runtime[93],_auD_,_auC_)}}}}}} - return caml_call2 - (Runtime_ocaml_Runtime[104],_at6_,taux_francs_vers_euros)} - function _atW_(param$0) - {var - _atX_=caml_call3(Runtime_ocaml_Runtime[57],1998,7,1), - _atY_=caml_call2(Runtime_ocaml_Runtime[114],param,_atX_), - _atZ_=caml_call3(Runtime_ocaml_Runtime[57],1997,7,1), - _at0_=caml_call2(Runtime_ocaml_Runtime[129],param,_atZ_), - _at1_=caml_call2(Runtime_ocaml_Runtime[83],_at0_,_atY_), - _at2_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _at3_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_at2_), - _at4_=caml_call2(Runtime_ocaml_Runtime[83],_at3_,_at1_); - return caml_call2(Runtime_ocaml_Runtime[29],_JR_,_at4_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_JS_,[0],_atW_,_atV_)}, - _asn_= - function(param$0) - {function _ata_(param) - {switch(zone[0]) - {case 0: - var _atk_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$376); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atk_)) - var - _atl_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_160400) - :caml_call1(Runtime_ocaml_Runtime[31],cst_193400); - else - {var _atm_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$267); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atm_)) - var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_207800); - else - {var _atn_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$106); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atn_)) - var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_213700); - else - {var _ato_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$86); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ato_)) - var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_219600); - else - {var _atp_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$82); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atp_)) - var - _atl_= - caml_call1(Runtime_ocaml_Runtime[31],cst_225500$0); - else - {var _atq_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$126); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atq_)) - var - _atl_= - caml_call1(Runtime_ocaml_Runtime[31],cst_230500$1); - else - var - _atr_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$127), - _ats_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_atr_), - _att_=caml_call1(Runtime_ocaml_Runtime[69],_ats_), - _atu_=caml_call1(Runtime_ocaml_Runtime[31],cst_20000), - _atv_=caml_call2(Runtime_ocaml_Runtime[104],_atu_,_att_), - _atw_=caml_call1(Runtime_ocaml_Runtime[31],cst_230500$2), - _atl_=caml_call2(Runtime_ocaml_Runtime[93],_atw_,_atv_)}}}}} - break; - case 1: - var _atx_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$377); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atx_)) - var - _atl_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_140800$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_172500$0); - else - {var _aty_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$268); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aty_)) - var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_186700); - else - {var _atz_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$107); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atz_)) - var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_193300); - else - {var _atA_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$87); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atA_)) - var - _atl_= - caml_call1(Runtime_ocaml_Runtime[31],cst_199900$1); - else - {var _atB_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$83); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atB_)) - var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_206500); - else - {var _atC_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$128); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atC_)) - var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_221100); - else - var - _atD_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$129), - _atE_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_atD_), - _atF_=caml_call1(Runtime_ocaml_Runtime[69],_atE_), - _atG_=caml_call1(Runtime_ocaml_Runtime[31],cst_19300$0), - _atH_=caml_call2(Runtime_ocaml_Runtime[104],_atG_,_atF_), - _atI_=caml_call1(Runtime_ocaml_Runtime[31],cst_221100$0), - _atl_=caml_call2(Runtime_ocaml_Runtime[93],_atI_,_atH_)}}}}} - break; - default: - var _atJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$378); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atJ_)) - var - _atl_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_132000$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_180100$1); - else - {var _atK_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$269); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atK_)) - var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_174500); - else - {var _atL_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$108); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atL_)) - var - _atl_= - caml_call1(Runtime_ocaml_Runtime[31],cst_181800$0); - else - {var _atM_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$88); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atM_)) - var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_189100); - else - {var _atN_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$84); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atN_)) - var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_196400); - else - {var _atO_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$130); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atO_)) - var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_210900); - else - var - _atP_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$131), - _atQ_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_atP_), - _atR_=caml_call1(Runtime_ocaml_Runtime[69],_atQ_), - _atS_=caml_call1(Runtime_ocaml_Runtime[31],cst_18400), - _atT_=caml_call2(Runtime_ocaml_Runtime[104],_atS_,_atR_), - _atU_=caml_call1(Runtime_ocaml_Runtime[31],cst_210900$0), - _atl_=caml_call2(Runtime_ocaml_Runtime[93],_atU_,_atT_)}}}}}} - return caml_call2 - (Runtime_ocaml_Runtime[104],_atl_,taux_francs_vers_euros)} - function _atb_(param$0) - {var - _atc_=caml_call3(Runtime_ocaml_Runtime[57],1997,7,1), - _atd_=caml_call2(Runtime_ocaml_Runtime[114],param,_atc_), - _ate_=caml_call3(Runtime_ocaml_Runtime[57],1994,7,1), - _atf_=caml_call2(Runtime_ocaml_Runtime[129],param,_ate_), - _atg_=caml_call2(Runtime_ocaml_Runtime[83],_atf_,_atd_), - _ath_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _ati_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_ath_), - _atj_=caml_call2(Runtime_ocaml_Runtime[83],_ati_,_atg_); - return caml_call2(Runtime_ocaml_Runtime[29],_JT_,_atj_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_JU_,[0],_atb_,_ata_)}, - _aso_= - [0, - function(param$0) - {function _asr_(param) - {switch(zone[0]) - {case 0: - var _asB_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$379); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asB_)) - var - _asC_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_158700) - :caml_call1(Runtime_ocaml_Runtime[31],cst_191300); - else - {var _asD_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$270); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asD_)) - var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_205500); - else - {var _asE_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$109); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asE_)) - var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_211300); - else - {var _asF_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$89); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asF_)) - var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_217100); - else - {var _asG_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$85); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asG_)) - var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_222900); - else - {var _asH_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$132); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asH_)) - var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_228000); - else - var - _asI_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$133), - _asJ_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_asI_), - _asK_=caml_call1(Runtime_ocaml_Runtime[69],_asJ_), - _asL_=caml_call1(Runtime_ocaml_Runtime[31],cst_19800), - _asM_=caml_call2(Runtime_ocaml_Runtime[104],_asL_,_asK_), - _asN_=caml_call1(Runtime_ocaml_Runtime[31],cst_228000$0), - _asC_=caml_call2(Runtime_ocaml_Runtime[93],_asN_,_asM_)}}}}} - break; - case 1: - var _asO_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$380); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asO_)) - var - _asC_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_139300) - :caml_call1(Runtime_ocaml_Runtime[31],cst_170600); - else - {var _asP_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$271); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asP_)) - var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_184700); - else - {var _asQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$110); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asQ_)) - var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_191200); - else - {var _asR_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$90); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asR_)) - var - _asC_= - caml_call1(Runtime_ocaml_Runtime[31],cst_197700$0); - else - {var _asS_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$86); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asS_)) - var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_204200); - else - {var _asT_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$134); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asT_)) - var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_218700); - else - var - _asU_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$135), - _asV_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_asU_), - _asW_=caml_call1(Runtime_ocaml_Runtime[69],_asV_), - _asX_=caml_call1(Runtime_ocaml_Runtime[31],cst_19100$1), - _asY_=caml_call2(Runtime_ocaml_Runtime[104],_asX_,_asW_), - _asZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_218700$0), - _asC_=caml_call2(Runtime_ocaml_Runtime[93],_asZ_,_asY_)}}}}} - break; - default: - var _as0_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$381); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_as0_)) - var - _asC_= - 0 === situation_familiale_calcul_apl[0] - ?caml_call1(Runtime_ocaml_Runtime[31],cst_130600) - :caml_call1(Runtime_ocaml_Runtime[31],cst_158400); - else - {var _as1_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$272); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_as1_)) - var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_172600); - else - {var _as2_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$111); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_as2_)) - var - _asC_= - caml_call1(Runtime_ocaml_Runtime[31],cst_179800$0); - else - {var _as3_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$91); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_as3_)) - var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_187000); - else - {var _as4_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$87); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_as4_)) - var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_194200); - else - {var _as5_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$136); - if - (caml_call2 - (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_as5_)) - var - _asC_= - caml_call1(Runtime_ocaml_Runtime[31],cst_208600$0); - else - var - _as6_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$137), - _as7_= - caml_call2 - (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_as6_), - _as8_=caml_call1(Runtime_ocaml_Runtime[69],_as7_), - _as9_=caml_call1(Runtime_ocaml_Runtime[31],cst_18200), - _as__=caml_call2(Runtime_ocaml_Runtime[104],_as9_,_as8_), - _as$_=caml_call1(Runtime_ocaml_Runtime[31],cst_208600$1), - _asC_=caml_call2(Runtime_ocaml_Runtime[93],_as$_,_as__)}}}}}} - return caml_call2 - (Runtime_ocaml_Runtime[104],_asC_,taux_francs_vers_euros)} - function _ass_(param$0) - {var - _ast_=caml_call3(Runtime_ocaml_Runtime[57],1994,7,1), - _asu_=caml_call2(Runtime_ocaml_Runtime[114],param,_ast_), - _asv_=caml_call3(Runtime_ocaml_Runtime[57],1992,7,1), - _asw_=caml_call2(Runtime_ocaml_Runtime[129],param,_asv_), - _asx_=caml_call2(Runtime_ocaml_Runtime[83],_asw_,_asu_), - _asy_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _asz_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_asy_), - _asA_=caml_call2(Runtime_ocaml_Runtime[83],_asz_,_asx_); - return caml_call2(Runtime_ocaml_Runtime[29],_JV_,_asA_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_JW_,[0],_ass_,_asr_)}, - _asn_, - _asm_, - _asl_, - _ask_, - _asj_, - _asi_, - _ash_, - _asg_, - _asf_, - _ase_, - _asd_, - _asc_, - _asb_, - _asa_, - _ar$_, - _ar__, - _ar9_, - _ar8_, - _ar7_, - _ar6_, - _ar5_], - _asp_=caml_call4(Runtime_ocaml_Runtime[63],_JX_,_aso_,_ar4_,_ar3_); - return _asp_} - catch(_asq_) - {_asq_ = caml_wrap_exception(_asq_); - if(_asq_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Je_]; - throw _asq_}} - var - calcul_plafond_mensualite_d842= - caml_call3 - (Runtime_ocaml_Runtime[28],_JY_,Runtime_ocaml_Runtime[10],_aon_); - try - {var - _aoo_=function(param){throw Runtime_ocaml_Runtime[2]}, - _aop_=function(param){return 0}, - _aoq_= - function(param) - {function _arX_(param){return montant_forfaitaire_d842_12} - function _arY_(param) - {switch(type_travaux_logement[0]) - {case 0:var _arZ_=0;break; - case 1:var _arZ_=1;break; - case 2:var _arZ_=0;break; - default:var _arZ_=0} - var - _ar0_=caml_call3(Runtime_ocaml_Runtime[57],1994,9,30), - _ar1_= - caml_call2 - (Runtime_ocaml_Runtime[124],date_signature_pret,_ar0_), - _ar2_=caml_call2(Runtime_ocaml_Runtime[83],_ar1_,_arZ_); - return caml_call2(Runtime_ocaml_Runtime[29],_J0_,_ar2_)} - return caml_call4(Runtime_ocaml_Runtime[63],_J1_,[0],_arY_,_arX_)}, - _aor_= - [0, - function(param) - {function _arH_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[104], - mensualite_principale, - coefficient_d842_12)} - function _arI_(param) - {switch(type_travaux_logement[0]) - {case 0:var _arJ_=0;break; - case 1:var _arJ_=0;break; - case 2:var _arJ_=1;break; - default:var _arJ_=0} - switch(type_travaux_logement[0]) - {case 0:var _arK_=1;break; - case 1:var _arK_=0;break; - case 2:var _arK_=0;break; - default:var _arK_=0} - var _arL_=caml_call2(Runtime_ocaml_Runtime[84],_arK_,_arJ_); - switch(type_travaux_logement[0]) - {case 0:var _arM_=0;break; - case 1:var _arM_=0;break; - case 2:var _arM_=0;break; - default:var _arM_=1} - var - _arN_=caml_call2(Runtime_ocaml_Runtime[84],_arM_,_arL_), - _arO_=caml_call3(Runtime_ocaml_Runtime[57],1994,9,30), - _arP_= - caml_call2 - (Runtime_ocaml_Runtime[124],date_signature_pret,_arO_), - _arQ_=caml_call2(Runtime_ocaml_Runtime[83],_arP_,_arN_), - _arR_=caml_call3(Runtime_ocaml_Runtime[57],1994,9,30), - _arS_= - caml_call2 - (Runtime_ocaml_Runtime[119],date_signature_pret,_arR_), - _arT_=caml_call3(Runtime_ocaml_Runtime[57],1992,9,30), - _arU_= - caml_call2 - (Runtime_ocaml_Runtime[129],date_signature_pret,_arT_), - _arV_=caml_call2(Runtime_ocaml_Runtime[83],_arU_,_arS_), - _arW_=caml_call2(Runtime_ocaml_Runtime[84],_arV_,_arQ_); - return caml_call2(Runtime_ocaml_Runtime[29],_J2_,_arW_)} - return caml_call4(Runtime_ocaml_Runtime[63],_J3_,[0],_arI_,_arH_)}, - _aoq_], - _aos_=caml_call4(Runtime_ocaml_Runtime[63],_J4_,_aor_,_aop_,_aoo_)} - catch(_arG_) - {_arG_ = caml_wrap_exception(_arG_); - if(_arG_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_JZ_]; - throw _arG_} - var - seuil_minimal_ressources_menag= - caml_call3 - (Runtime_ocaml_Runtime[28],_J5_,Runtime_ocaml_Runtime[13],_aos_); - function _aot_(param) - {try - {var - _arB_= - function(param$0) - {var - _arF_= - caml_call2 - (Runtime_ocaml_Runtime[93], - charges_mensuelles_pret, - montant_forfaitaire_charges); - return caml_call2(Runtime_ocaml_Runtime[98],_arF_,param)}, - _arC_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_J7_,1)}, - _arD_=caml_call4(Runtime_ocaml_Runtime[63],_J8_,[0],_arC_,_arB_); - return _arD_} - catch(_arE_) - {_arE_ = caml_wrap_exception(_arE_); - if(_arE_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_J6_]; - throw _arE_}} - var - depense_nette_minimale= - caml_call3 - (Runtime_ocaml_Runtime[28],_J9_,Runtime_ocaml_Runtime[10],_aot_); - function _aou_(param) - {try - {var - _aqY_= - function(param$0) - {var - _ary_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _J$_, - Runtime_ocaml_Runtime[16], - param), - _arz_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Ka_, - calcul_plafond_mensualite_d842), - _ary_), - _arA_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Kb_, - Runtime_ocaml_Runtime[13], - _arz_); - return caml_call2(Runtime_ocaml_Runtime[27],_Kc_,_arA_)}, - _aqZ_= - function(param) - {var - _arw_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _arx_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_arw_); - return caml_call2(Runtime_ocaml_Runtime[29],_Kd_,_arx_)}, - _aq0_= - [0, - function(param$0) - {function _aq3_(param){throw Runtime_ocaml_Runtime[2]} - function _aq4_(param){return 0} - var - _aq5_= - [0, - function(param$0) - {function _aq6_(param$0) - {if(copropriete) - {var - _aro_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$11), - _arp_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ke_, - Runtime_ocaml_Runtime[16], - param), - _arq_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Kf_, - calcul_plafond_mensualite_d842), - _arp_), - _arr_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Kg_, - Runtime_ocaml_Runtime[13], - _arq_), - _ars_=caml_call2(Runtime_ocaml_Runtime[27],_Kh_,_arr_); - return caml_call2(Runtime_ocaml_Runtime[104],_ars_,_aro_)} - var - _art_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ki_, - Runtime_ocaml_Runtime[16], - param), - _aru_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Kj_, - calcul_plafond_mensualite_d842), - _art_), - _arv_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Kk_, - Runtime_ocaml_Runtime[13], - _aru_); - return caml_call2(Runtime_ocaml_Runtime[27],_Kl_,_arv_)} - function _aq7_(param) - {var - _arm_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _arn_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_arm_); - return caml_call2(Runtime_ocaml_Runtime[29],_Km_,_arn_)} - var - _aq8_= - [0, - function(param$0) - {function _aq9_(param$0) - {if(copropriete) - {var - _are_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$12), - _arf_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Kn_, - Runtime_ocaml_Runtime[16], - param), - _arg_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Ko_, - calcul_plafond_mensualite_d842), - _arf_), - _arh_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Kp_, - Runtime_ocaml_Runtime[13], - _arg_), - _ari_=caml_call2(Runtime_ocaml_Runtime[27],_Kq_,_arh_); - return caml_call2(Runtime_ocaml_Runtime[104],_ari_,_are_)} - var - _arj_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Kr_, - Runtime_ocaml_Runtime[16], - param), - _ark_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Ks_, - calcul_plafond_mensualite_d842), - _arj_), - _arl_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Kt_, - Runtime_ocaml_Runtime[13], - _ark_); - return caml_call2(Runtime_ocaml_Runtime[27],_Ku_,_arl_)} - function _aq__(param) - {var - _aq$_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), - _ara_= - caml_call2(Runtime_ocaml_Runtime[114],date_courante,_aq$_), - _arb_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), - _arc_= - caml_call2(Runtime_ocaml_Runtime[129],date_courante,_arb_), - _ard_=caml_call2(Runtime_ocaml_Runtime[83],_arc_,_ara_); - return caml_call2(Runtime_ocaml_Runtime[29],_Kv_,_ard_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Kw_,[0],_aq__,_aq9_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Kx_,_aq8_,_aq7_,_aq6_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Ky_,_aq5_,_aq4_,_aq3_)}], - _aq1_=caml_call4(Runtime_ocaml_Runtime[63],_Kz_,_aq0_,_aqZ_,_aqY_); - return _aq1_} - catch(_aq2_) - {_aq2_ = caml_wrap_exception(_aq2_); - if(_aq2_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_J__]; - throw _aq2_}} - var - calcul_plafond_mensualite_d842$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_KA_,Runtime_ocaml_Runtime[10],_aou_); - try - {var - _aov_= - function(param) - {if - (caml_call2 - (Runtime_ocaml_Runtime[117], - ressources_menage_arrondies_ba, - seuil_minimal_ressources_menag)) - {var - _aqS_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$11), - _aqT_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_01), - _aqU_=caml_call1(Runtime_ocaml_Runtime[31],cst_4999), - _aqV_= - caml_call2 - (Runtime_ocaml_Runtime[93], - seuil_minimal_ressources_menag, - _aqU_), - _aqW_=caml_call2(Runtime_ocaml_Runtime[104],_aqV_,_aqT_), - _aqX_=caml_call1(Runtime_ocaml_Runtime[77],_aqW_); - return caml_call2(Runtime_ocaml_Runtime[104],_aqX_,_aqS_)} - return ressources_menage_arrondies_ba}, - _aow_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_KC_,1)}, - _aox_= - [0, - function(param) - {function _aqQ_(param){return ressources_menage_arrondies_ba} - function _aqR_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_KD_,situation_r822_11_13_17)} - return caml_call4(Runtime_ocaml_Runtime[63],_KE_,[0],_aqR_,_aqQ_)}], - _aoy_=caml_call4(Runtime_ocaml_Runtime[63],_KF_,_aox_,_aow_,_aov_)} - catch(_aqP_) - {_aqP_ = caml_wrap_exception(_aqP_); - if(_aqP_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_KB_]; - throw _aqP_} - var - ressources_menage_arrondies_se= - caml_call3 - (Runtime_ocaml_Runtime[28],_KG_,Runtime_ocaml_Runtime[13],_aoy_); - try - {var - _aoz_= - function(param) - {var - _aqM_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _KI_, - Runtime_ocaml_Runtime[16], - date_signature_pret), - _aqN_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _KJ_, - calcul_plafond_mensualite_d842$0), - _aqM_), - _aqO_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _KK_, - Runtime_ocaml_Runtime[13], - _aqN_); - return caml_call2(Runtime_ocaml_Runtime[27],_KL_,_aqO_)}, - _aoA_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_KM_,1)}, - _aoB_= - [0, - function(param) - {function _aqE_(param) - {var - _aqG_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _KN_, - Runtime_ocaml_Runtime[16], - date_signature_pret), - _aqH_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _KO_, - calcul_plafond_mensualite_d842$0), - _aqG_), - _aqI_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _KP_, - Runtime_ocaml_Runtime[13], - _aqH_), - plafond_signature= - caml_call2(Runtime_ocaml_Runtime[27],_KQ_,_aqI_), - _aqJ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _KR_, - Runtime_ocaml_Runtime[16], - date_entree_logement), - _aqK_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _KS_, - calcul_plafond_mensualite_d842$0), - _aqJ_), - _aqL_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _KT_, - Runtime_ocaml_Runtime[13], - _aqK_), - plafond_entree= - caml_call2(Runtime_ocaml_Runtime[27],_KU_,_aqL_); - return caml_call2 - (Runtime_ocaml_Runtime[112], - plafond_signature, - plafond_entree) - ?plafond_entree - :plafond_signature} - function _aqF_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29], - _KV_, - local_habite_premiere_fois_ben)} - return caml_call4(Runtime_ocaml_Runtime[63],_KW_,[0],_aqF_,_aqE_)}], - _aoC_=caml_call4(Runtime_ocaml_Runtime[63],_KX_,_aoB_,_aoA_,_aoz_)} - catch(_aqD_) - {_aqD_ = caml_wrap_exception(_aqD_); - if(_aqD_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_KH_]; - throw _aqD_} - var - plafond_mensualite_d842_6= - caml_call3 - (Runtime_ocaml_Runtime[28],_KY_,Runtime_ocaml_Runtime[13],_aoC_); - try - {var - _aoD_=function(param){return ressources_menage_arrondies_se}, - _aoE_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_K0_,1)}, - _aoF_=caml_call4(Runtime_ocaml_Runtime[63],_K1_,[0],_aoE_,_aoD_), - calcul_equivalence_loyer_minim$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_K2_,Runtime_ocaml_Runtime[13],_aoF_)} - catch(_aqC_) - {_aqC_ = caml_wrap_exception(_aqC_); - if(_aqC_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_KZ_]; - throw _aqC_} - try - {var - _aoG_=function(param){return 1}, - _aoH_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_K4_,1)}, - _aoI_=caml_call4(Runtime_ocaml_Runtime[63],_K5_,[0],_aoH_,_aoG_), - calcul_equivalence_loyer_minim$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_K6_,Runtime_ocaml_Runtime[12],_aoI_)} - catch(_aqB_) - {_aqB_ = caml_wrap_exception(_aqB_); - if(_aqB_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_K3_]; - throw _aqB_} - try - {var - _aoJ_=function(param){return calcul_nombre_parts_dot_n_nomb}, - _aoK_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_K8_,1)}, - _aoL_=caml_call4(Runtime_ocaml_Runtime[63],_K9_,[0],_aoK_,_aoJ_), - calcul_equivalence_loyer_minim$2= - caml_call3 - (Runtime_ocaml_Runtime[28],_K__,Runtime_ocaml_Runtime[15],_aoL_)} - catch(_aqA_) - {_aqA_ = caml_wrap_exception(_aqA_); - if(_aqA_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_K7_]; - throw _aqA_} - var - _aoM_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_K$_,calcul_equivalence_loyer_minim), - [0, - calcul_equivalence_loyer_minim$0, - calcul_equivalence_loyer_minim$1, - calcul_equivalence_loyer_minim$2]), - result$1=caml_call2(Runtime_ocaml_Runtime[27],_La_,_aoM_), - calcul_equivalence_loyer_minim$3=result$1[1]; - try - {var - _aoN_=function(param){return _Lc_}, - _aoO_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ld_,1)}, - _aoP_=caml_call4(Runtime_ocaml_Runtime[63],_Le_,[0],_aoO_,_aoN_), - calcul_apl_logement_foyer_dot_= - caml_call3 - (Runtime_ocaml_Runtime[28],_Lf_,embed_type_logement_foyer,_aoP_)} - catch(_aqz_) - {_aqz_ = caml_wrap_exception(_aqz_); - if(_aqz_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Lb_]; - throw _aqz_} - try - {var - _aoQ_= - function(param) - {return caml_call3(Runtime_ocaml_Runtime[57],1970,1,1)}, - _aoR_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Lh_,1)}, - _aoS_=caml_call4(Runtime_ocaml_Runtime[63],_Li_,[0],_aoR_,_aoQ_), - calcul_apl_logement_foyer_dot_$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_Lj_,Runtime_ocaml_Runtime[16],_aoS_)} - catch(_aqy_) - {_aqy_ = caml_wrap_exception(_aqy_); - if(_aqy_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Lg_]; - throw _aqy_} - try - {var - _aoT_=function(param){return ressources_menage_arrondies_se}, - _aoU_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ll_,1)}, - _aoV_=caml_call4(Runtime_ocaml_Runtime[63],_Lm_,[0],_aoU_,_aoT_), - calcul_apl_logement_foyer_dot_$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ln_,Runtime_ocaml_Runtime[13],_aoV_)} - catch(_aqx_) - {_aqx_ = caml_wrap_exception(_aqx_); - if(_aqx_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Lk_]; - throw _aqx_} - try - {var - _aoW_=function(param){return nombre_personnes_a_charge}, - _aoX_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Lp_,1)}, - _aoY_=caml_call4(Runtime_ocaml_Runtime[63],_Lq_,[0],_aoX_,_aoW_), - calcul_apl_logement_foyer_dot_$2= - caml_call3 - (Runtime_ocaml_Runtime[28],_Lr_,Runtime_ocaml_Runtime[14],_aoY_)} - catch(_aqw_) - {_aqw_ = caml_wrap_exception(_aqw_); - if(_aqw_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Lo_]; - throw _aqw_} - try - {var - _aoZ_=function(param){return situation_familiale_calcul_apl}, - _ao0_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Lt_,1)}, - _ao1_=caml_call4(Runtime_ocaml_Runtime[63],_Lu_,[0],_ao0_,_aoZ_), - calcul_apl_logement_foyer_dot_$3= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Lv_, - embed_situation_familiale_calc, - _ao1_)} - catch(_aqv_) - {_aqv_ = caml_wrap_exception(_aqv_); - if(_aqv_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ls_]; - throw _aqv_} - try - {var - _ao2_=function(param){return zone}, - _ao3_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Lx_,1)}, - _ao4_=caml_call4(Runtime_ocaml_Runtime[63],_Ly_,[0],_ao3_,_ao2_), - calcul_apl_logement_foyer_dot_$4= - caml_call3 - (Runtime_ocaml_Runtime[28],_Lz_,embed_zone_d_habitation,_ao4_)} - catch(_aqu_) - {_aqu_ = caml_wrap_exception(_aqu_); - if(_aqu_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Lw_]; - throw _aqu_} - try - {var - _ao5_=function(param){return date_courante}, - _ao6_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_LB_,1)}, - _ao7_=caml_call4(Runtime_ocaml_Runtime[63],_LC_,[0],_ao6_,_ao5_), - calcul_apl_logement_foyer_dot_$5= - caml_call3 - (Runtime_ocaml_Runtime[28],_LD_,Runtime_ocaml_Runtime[16],_ao7_)} - catch(_aqt_) - {_aqt_ = caml_wrap_exception(_aqt_); - if(_aqt_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_LA_]; - throw _aqt_} - try - {var - _ao8_= - function(param) - {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$382)}, - _ao9_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_LF_,1)}, - _ao__=caml_call4(Runtime_ocaml_Runtime[63],_LG_,[0],_ao9_,_ao8_), - calcul_apl_logement_foyer_dot_$6= - caml_call3 - (Runtime_ocaml_Runtime[28],_LH_,Runtime_ocaml_Runtime[13],_ao__)} - catch(_aqs_) - {_aqs_ = caml_wrap_exception(_aqs_); - if(_aqs_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_LE_]; - throw _aqs_} - function calcul_apl_logement_foyer_dot_$7(param) - {function _aqp_(param){return 1} - function _aqq_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_LI_,1)} - var _aqr_=caml_call4(Runtime_ocaml_Runtime[63],_LJ_,[0],_aqq_,_aqp_); - return caml_call3 - (Runtime_ocaml_Runtime[28], - _LK_, - Runtime_ocaml_Runtime[12], - _aqr_)} - function calcul_apl_logement_foyer_dot_$8(param) - {function _aqm_(param){return calcul_nombre_parts_dot_n_nomb} - function _aqn_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_LL_,1)} - var _aqo_=caml_call4(Runtime_ocaml_Runtime[63],_LM_,[0],_aqn_,_aqm_); - return caml_call3 - (Runtime_ocaml_Runtime[28], - _LN_, - Runtime_ocaml_Runtime[15], - _aqo_)} - var - _ao$_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_LO_,calcul_aide_personnalisee_loge$0), - [0, - calcul_apl_logement_foyer_dot_, - calcul_apl_logement_foyer_dot_$0, - calcul_apl_logement_foyer_dot_$1, - calcul_apl_logement_foyer_dot_$2, - calcul_apl_logement_foyer_dot_$3, - calcul_apl_logement_foyer_dot_$4, - calcul_apl_logement_foyer_dot_$5, - calcul_apl_logement_foyer_dot_$6, - calcul_apl_logement_foyer_dot_$7, - calcul_apl_logement_foyer_dot_$8]), - result$2=caml_call2(Runtime_ocaml_Runtime[27],_LP_,_ao$_), - calcul_apl_logement_foyer_dot_$9=result$2[7]; - try - {var - _apa_=function(param){return montant_forfaitaire_d842_11}, - _apb_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_LR_,1)}, - _apc_= - [0, - function(param) - {function _aqc_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[104], - ressources_menage_arrondies_se, - coefficient_d842_11)} - function _aqd_(param) - {var - _aqe_=caml_call3(Runtime_ocaml_Runtime[57],1999,7,1), - _aqf_= - caml_call2 - (Runtime_ocaml_Runtime[129],date_signature_pret,_aqe_); - switch(type_travaux_logement[0]) - {case 0:var _aqg_=0;break; - case 1:var _aqg_=0;break; - case 2:var _aqg_=1;break; - default:var _aqg_=0} - switch(type_travaux_logement[0]) - {case 0:var _aqh_=1;break; - case 1:var _aqh_=0;break; - case 2:var _aqh_=0;break; - default:var _aqh_=0} - var _aqi_=caml_call2(Runtime_ocaml_Runtime[84],_aqh_,_aqg_); - switch(type_travaux_logement[0]) - {case 0:var _aqj_=0;break; - case 1:var _aqj_=0;break; - case 2:var _aqj_=0;break; - default:var _aqj_=1} - var - _aqk_=caml_call2(Runtime_ocaml_Runtime[84],_aqj_,_aqi_), - _aql_=caml_call2(Runtime_ocaml_Runtime[83],_aqk_,_aqf_); - return caml_call2(Runtime_ocaml_Runtime[29],_LS_,_aql_)} - return caml_call4(Runtime_ocaml_Runtime[63],_LT_,[0],_aqd_,_aqc_)}], - _apd_=caml_call4(Runtime_ocaml_Runtime[63],_LU_,_apc_,_apb_,_apa_)} - catch(_aqb_) - {_aqb_ = caml_wrap_exception(_aqb_); - if(_aqb_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_LQ_]; - throw _aqb_} - var - seuil_minimal_depense_nette_mi= - caml_call3 - (Runtime_ocaml_Runtime[28],_LV_,Runtime_ocaml_Runtime[13],_apd_); - try - {var - _ape_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[122], - mensualite_principale, - plafond_mensualite_d842_6) - ?plafond_mensualite_d842_6 - :mensualite_principale}, - _apf_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_LX_,1)}, - _apg_=caml_call4(Runtime_ocaml_Runtime[63],_LY_,[0],_apf_,_ape_)} - catch(_aqa_) - {_aqa_ = caml_wrap_exception(_aqa_); - if(_aqa_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_LW_]; - throw _aqa_} - var - mensualite_eligible= - caml_call3 - (Runtime_ocaml_Runtime[28],_LZ_,Runtime_ocaml_Runtime[13],_apg_); - try - {var - _aph_=function(param){return calcul_equivalence_loyer_minim$3}, - _api_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_L1_,1)}, - _apj_=caml_call4(Runtime_ocaml_Runtime[63],_L2_,[0],_api_,_aph_)} - catch(_ap$_) - {_ap$_ = caml_wrap_exception(_ap$_); - if(_ap$_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_L0_]; - throw _ap$_} - var - mensualite_minimale= - caml_call3 - (Runtime_ocaml_Runtime[28],_L3_,Runtime_ocaml_Runtime[13],_apj_); - try - {var - _apk_=function(param){return calcul_apl_logement_foyer_dot_$9}, - _apl_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_L5_,1)}, - _apm_=caml_call4(Runtime_ocaml_Runtime[63],_L6_,[0],_apl_,_apk_)} - catch(_ap__) - {_ap__ = caml_wrap_exception(_ap__); - if(_ap__ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_L4_]; - throw _ap__} - var - coefficient_prise_en_charge= - caml_call3 - (Runtime_ocaml_Runtime[28],_L7_,Runtime_ocaml_Runtime[15],_apm_); - function _apn_(param) - {try - {var - _ap3_= - function(param$0) - {var - _ap7_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _L9_, - Runtime_ocaml_Runtime[13], - param), - _ap8_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_L__,depense_nette_minimale), - _ap7_), - _ap9_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _L$_, - Runtime_ocaml_Runtime[13], - _ap8_), - depense_nette_minimale$0= - caml_call2(Runtime_ocaml_Runtime[27],_Ma_,_ap9_); - return caml_call2 - (Runtime_ocaml_Runtime[112], - depense_nette_minimale$0, - seuil_minimal_depense_nette_mi) - ?caml_call2 - (Runtime_ocaml_Runtime[98], - seuil_minimal_depense_nette_mi, - depense_nette_minimale$0) - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$383)}, - _ap4_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Mb_,1)}, - _ap5_=caml_call4(Runtime_ocaml_Runtime[63],_Mc_,[0],_ap4_,_ap3_); - return _ap5_} - catch(_ap6_) - {_ap6_ = caml_wrap_exception(_ap6_); - if(_ap6_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_L8_]; - throw _ap6_}} - var - abattement_depense_nette_minim= - caml_call3 - (Runtime_ocaml_Runtime[28],_Md_,Runtime_ocaml_Runtime[10],_apn_); - try - {var - _apo_= - function(param) - {var - _ap1_= - caml_call2 - (Runtime_ocaml_Runtime[93], - mensualite_eligible, - montant_forfaitaire_charges), - _ap2_= - caml_call2(Runtime_ocaml_Runtime[98],_ap1_,mensualite_minimale); - return caml_call2 - (Runtime_ocaml_Runtime[104], - _ap2_, - coefficient_prise_en_charge)}, - _app_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Mf_,1)}, - _apq_=caml_call4(Runtime_ocaml_Runtime[63],_Mg_,[0],_app_,_apo_)} - catch(_ap0_) - {_ap0_ = caml_wrap_exception(_ap0_); - if(_ap0_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Me_]; - throw _ap0_} - var - aide_finale_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_Mh_,Runtime_ocaml_Runtime[13],_apq_); - function _apr_(param) - {try - {var - _apQ_= - function(param$0) - {var - _apU_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Mj_, - Runtime_ocaml_Runtime[13], - param), - _apV_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Mk_, - traitement_aide_finale_minorat), - _apU_), - _apW_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ml_, - Runtime_ocaml_Runtime[13], - _apV_), - aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_Mm_,_apW_), - _apX_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Mn_, - Runtime_ocaml_Runtime[13], - aide_finale), - _apY_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Mo_, - abattement_depense_nette_minim), - _apX_), - _apZ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Mp_, - Runtime_ocaml_Runtime[13], - _apY_), - abattement=caml_call2(Runtime_ocaml_Runtime[27],_Mq_,_apZ_); - return caml_call2 - (Runtime_ocaml_Runtime[112],aide_finale,abattement) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$384) - :caml_call2 - (Runtime_ocaml_Runtime[98],aide_finale,abattement)}, - _apR_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Mr_,1)}, - _apS_=caml_call4(Runtime_ocaml_Runtime[63],_Ms_,[0],_apR_,_apQ_); - return _apS_} - catch(_apT_) - {_apT_ = caml_wrap_exception(_apT_); - if(_apT_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Mi_]; - throw _apT_}} - var - traitement_aide_finale_depense= - caml_call3 - (Runtime_ocaml_Runtime[28],_Mt_,Runtime_ocaml_Runtime[10],_apr_); - function _aps_(param) - {try - {var - _apB_= - function(param$0) - {var - _apF_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Mv_, - Runtime_ocaml_Runtime[13], - param), - _apG_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Mw_, - traitement_aide_finale_depense), - _apF_), - _apH_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Mx_, - Runtime_ocaml_Runtime[13], - _apG_), - aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_My_,_apH_), - _apI_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Mz_, - Runtime_ocaml_Runtime[13], - aide_finale), - _apJ_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _MA_, - contributions_sociales_dot_mon), - _apI_), - _apK_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _MB_, - Runtime_ocaml_Runtime[13], - _apJ_), - crds=caml_call2(Runtime_ocaml_Runtime[27],_MC_,_apK_), - _apL_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$3), - _apM_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale,crds), - _apN_=caml_call2(Runtime_ocaml_Runtime[98],_apM_,_apL_), - aide_finale_moins_crds_arrondi= - caml_call1(Runtime_ocaml_Runtime[77],_apN_), - _apO_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$385), - _apP_= - caml_call2 - (Runtime_ocaml_Runtime[93], - aide_finale_moins_crds_arrondi, - crds); - return caml_call2(Runtime_ocaml_Runtime[127],_apP_,_apO_) - ?caml_call2 - (Runtime_ocaml_Runtime[93], - aide_finale_moins_crds_arrondi, - crds) - :caml_call1(Runtime_ocaml_Runtime[31],cst_0$386)}, - _apC_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_MD_,1)}, - _apD_=caml_call4(Runtime_ocaml_Runtime[63],_ME_,[0],_apC_,_apB_); - return _apD_} - catch(_apE_) - {_apE_ = caml_wrap_exception(_apE_); - if(_apE_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Mu_]; - throw _apE_}} - var - traitement_aide_finale_contrib= - caml_call3 - (Runtime_ocaml_Runtime[28],_MF_,Runtime_ocaml_Runtime[10],_aps_); - function _apt_(param) - {try - {var - _apu_= - function(param$0) - {var - _apy_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _MH_, - Runtime_ocaml_Runtime[13], - param), - _apz_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _MI_, - traitement_aide_finale_contrib), - _apy_), - _apA_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _MJ_, - Runtime_ocaml_Runtime[13], - _apz_), - aide_finale=caml_call2(Runtime_ocaml_Runtime[27],_MK_,_apA_); - return caml_call2 - (Runtime_ocaml_Runtime[112], - aide_finale, - montant_minimal_aide_d842_6) - ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$387) - :aide_finale}, - _apv_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_ML_,1)}, - _apw_=caml_call4(Runtime_ocaml_Runtime[63],_MM_,[0],_apv_,_apu_); - return _apw_} - catch(_apx_) - {_apx_ = caml_wrap_exception(_apx_); - if(_apx_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_MG_]; - throw _apx_}} - var - traitement_aide_finale_montant= - caml_call3 - (Runtime_ocaml_Runtime[28],_MN_,Runtime_ocaml_Runtime[10],_apt_); - return [0,aide_finale_formule,traitement_aide_finale_montant]} - function calcul_aide_personnalisee_loge$2 - (calcul_aide_personnalisee_loge$2) - {var - mode_occupation=calcul_aide_personnalisee_loge$2[1], - type_aide=calcul_aide_personnalisee_loge$2[2], - ressources_menage_sans_arrondi=calcul_aide_personnalisee_loge$2[3], - situation_familiale=calcul_aide_personnalisee_loge$2[4], - nombre_personnes_a_charge=calcul_aide_personnalisee_loge$2[5], - zone=calcul_aide_personnalisee_loge$2[6], - date_courante=calcul_aide_personnalisee_loge$2[7]; - try - {var - _amW_= - function(param) - {switch(mode_occupation[0]) - {case 0:var location=mode_occupation[1];return [0,location]; - case 1: - var logementfoyer=mode_occupation[1];return [2,logementfoyer]; - case 2: - var proprietaire=mode_occupation[1];return [1,proprietaire]; - case 3:var location$0=mode_occupation[1];return [0,location$0]; - default: - var proprietaire$0=mode_occupation[1];return [1,proprietaire$0]}}, - _amX_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_MP_,1)}, - _amY_=caml_call4(Runtime_ocaml_Runtime[63],_MQ_,[0],_amX_,_amW_)} - catch(_anM_) - {_anM_ = caml_wrap_exception(_anM_); - if(_anM_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_MO_]; - throw _anM_} - var - categorie_calcul_apl= - caml_call3 - (Runtime_ocaml_Runtime[28],_MR_,embed_categorie_calcul_a_p_l,_amY_); - try - {var - _amZ_= - function(param) - {var - _anG_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$12), - _anH_=caml_call1(Runtime_ocaml_Runtime[31],cst_49), - _anI_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_01$0), - _anJ_= - caml_call2 - (Runtime_ocaml_Runtime[104], - ressources_menage_sans_arrondi, - _anI_), - _anK_=caml_call2(Runtime_ocaml_Runtime[93],_anJ_,_anH_), - _anL_=caml_call1(Runtime_ocaml_Runtime[77],_anK_); - return caml_call2(Runtime_ocaml_Runtime[104],_anL_,_anG_)}, - _am0_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_MT_,1)}, - _am1_=caml_call4(Runtime_ocaml_Runtime[63],_MU_,[0],_am0_,_amZ_)} - catch(_anF_) - {_anF_ = caml_wrap_exception(_anF_); - if(_anF_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_MS_]; - throw _anF_} - var - ressources_menage_avec_arrondi= - caml_call3 - (Runtime_ocaml_Runtime[28],_MV_,Runtime_ocaml_Runtime[13],_am1_); - try - {var - _am2_= - function(param) - {switch(situation_familiale[0]) - {case 0:return _MX_; - case 1:return _MY_; - case 2:return _MZ_; - case 3:return _M0_; - case 4:return _M1_; - default:return _M2_}}, - _am3_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_M3_,1)}, - _am4_=caml_call4(Runtime_ocaml_Runtime[63],_M4_,[0],_am3_,_am2_)} - catch(_anE_) - {_anE_ = caml_wrap_exception(_anE_); - if(_anE_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_MW_]; - throw _anE_} - var - situation_familiale_calcul_apl= - caml_call3 - (Runtime_ocaml_Runtime[28],_M5_,embed_situation_familiale_calc,_am4_); - try - {var - _am5_= - function(param) - {switch(categorie_calcul_apl[0]) - {case 0: - var location=categorie_calcul_apl[1],_ang_=location[7]; - try - {var _anh_=location[1]; - switch(_anh_[0]) - {case 0:var bailleur=_anh_[1],_ani_=bailleur[2];break; - case 1: - var _ani_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$388); - break; - default: - var _ani_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$389)}} - catch(_anA_) - {_anA_ = caml_wrap_exception(_anA_); - if(_anA_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_M7_]; - throw _anA_} - var - _anj_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _M8_, - embed_calcul_aide_personnalise$3, - [0, - location[2], - ressources_menage_avec_arrondi, - location[3], - date_courante, - nombre_personnes_a_charge, - situation_familiale_calcul_apl, - zone, - location[4], - location[6], - type_aide, - location[5], - _ani_, - _ang_]), - result= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _M9_, - calcul_aide_personnalisee_loge), - _anj_), - _ank_= - function(param) - {var - _anx_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _M__, - Runtime_ocaml_Runtime[13], - param), - _any_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_M$_,result[7]),_anx_), - _anz_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Na_, - Runtime_ocaml_Runtime[13], - _any_); - return caml_call2(Runtime_ocaml_Runtime[27],_Nb_,_anz_)}, - result$0= - [0, - result[1], - result[2], - result[3], - result[4], - result[5], - result[6], - _ank_]; - if(caml_call2(Runtime_ocaml_Runtime[29],_Nc_,1)) - {var - _anl_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Nd_, - embed_calcul_aide_personnalise, - result$0), - traitement_formule= - caml_call2(Runtime_ocaml_Runtime[27],_Ne_,_anl_); - return [0,traitement_formule[6],traitement_formule[7]]} - throw Runtime_ocaml_Runtime[2]; - case 1: - var - proprietaire=categorie_calcul_apl[1], - _anm_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Nf_, - embed_calcul_aide_personnalise$5, - [0, - proprietaire[2], - ressources_menage_avec_arrondi, - nombre_personnes_a_charge, - situation_familiale_calcul_apl, - proprietaire[5], - proprietaire[11][2], - proprietaire[7], - proprietaire[4], - proprietaire[8], - proprietaire[9], - zone, - proprietaire[11][1], - proprietaire[10], - date_courante]), - result$1= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Ng_, - calcul_aide_personnalisee_loge$1), - _anm_), - _ann_= - function(param) - {var - _anu_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Nh_, - Runtime_ocaml_Runtime[13], - param), - _anv_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_Ni_,result$1[5]), - _anu_), - _anw_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Nj_, - Runtime_ocaml_Runtime[13], - _anv_); - return caml_call2(Runtime_ocaml_Runtime[27],_Nk_,_anw_)}, - result$2= - [0,result$1[1],result$1[2],result$1[3],result$1[4],_ann_]; - if(caml_call2(Runtime_ocaml_Runtime[29],_Nl_,1)) - {var - _ano_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Nm_, - embed_calcul_aide_personnalise$1, - result$2), - traitement_formule$0= - caml_call2(Runtime_ocaml_Runtime[27],_Nn_,_ano_); - return [0,traitement_formule$0[4],traitement_formule$0[5]]} - throw Runtime_ocaml_Runtime[2]; - default: - var - logement_foyer=categorie_calcul_apl[1], - _anp_=function(param){throw Runtime_ocaml_Runtime[2]}, - _anq_=function(param){throw Runtime_ocaml_Runtime[2]}, - _anr_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _No_, - embed_calcul_aide_personnalise$4, - [0, - logement_foyer[1], - logement_foyer[4], - ressources_menage_avec_arrondi, - nombre_personnes_a_charge, - situation_familiale_calcul_apl, - zone, - date_courante, - logement_foyer[6], - _anq_, - _anp_]), - result$3= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Np_, - calcul_aide_personnalisee_loge$0), - _anr_), - _ans_= - function(param) - {var - _anB_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Nq_, - Runtime_ocaml_Runtime[13], - param), - _anC_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_Nr_,result$3[9]), - _anB_), - _anD_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ns_, - Runtime_ocaml_Runtime[13], - _anC_); - return caml_call2(Runtime_ocaml_Runtime[27],_Nt_,_anD_)}, - result$4= - [0, - result$3[1], - result$3[2], - result$3[3], - result$3[4], - result$3[5], - result$3[6], - result$3[7], - result$3[8], - _ans_]; - if(caml_call2(Runtime_ocaml_Runtime[29],_Nu_,1)) - {var - _ant_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Nv_, - embed_calcul_aide_personnalise$0, - result$4), - traitement_formule$1= - caml_call2(Runtime_ocaml_Runtime[27],_Nw_,_ant_); - return [0,traitement_formule$1[8],traitement_formule$1[9]]} - throw Runtime_ocaml_Runtime[2]}}, - _am6_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Nx_,1)}, - _am7_=caml_call4(Runtime_ocaml_Runtime[63],_Ny_,[0],_am6_,_am5_)} - catch(_anf_) - {_anf_ = caml_wrap_exception(_anf_); - if(_anf_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_M6_]; - throw _anf_} - var - sous_calcul_traitement= - caml_call3 - (Runtime_ocaml_Runtime[28],_Nz_,embed_traitement_formule_aide_,_am7_); - function _am8_(param) - {try - {var - _anb_= - function(param$0) - {return caml_call1(sous_calcul_traitement[2],param)}, - _anc_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_NB_,1)}, - _and_=caml_call4(Runtime_ocaml_Runtime[63],_NC_,[0],_anc_,_anb_); - return _and_} - catch(_ane_) - {_ane_ = caml_wrap_exception(_ane_); - if(_ane_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_NA_]; - throw _ane_}} - var - traitement_aide_finale= - caml_call3 - (Runtime_ocaml_Runtime[28],_ND_,Runtime_ocaml_Runtime[10],_am8_); - try - {var - _am9_=function(param){return sous_calcul_traitement[1]}, - _am__= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_NF_,1)}, - _am$_=caml_call4(Runtime_ocaml_Runtime[63],_NG_,[0],_am__,_am9_)} - catch(_ana_) - {_ana_ = caml_wrap_exception(_ana_); - if(_ana_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_NE_]; - throw _ana_} - var - aide_finale_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_NH_,Runtime_ocaml_Runtime[13],_am$_); - return [0,aide_finale_formule,traitement_aide_finale]} - function eligibilite_prime_de_demenagem(eligibilite_prime_de_demenagem) - {var - informations=eligibilite_prime_de_demenagem[1], - date_emmenagement=eligibilite_prime_de_demenagem[2], - menage=eligibilite_prime_de_demenagem[3], - demandeur=eligibilite_prime_de_demenagem[4], - date_courante=eligibilite_prime_de_demenagem[5], - depenses_justifiees_reellement=eligibilite_prime_de_demenagem[6]; - try - {var - _alx_= - function(param){return caml_call3(Runtime_ocaml_Runtime[60],0,6,0)}, - _aly_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_NJ_,1)}, - _alz_=caml_call4(Runtime_ocaml_Runtime[63],_NK_,[0],_aly_,_alx_)} - catch(_amV_) - {_amV_ = caml_wrap_exception(_amV_); - if(_amV_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_NI_]; - throw _amV_} - var - delai_apres_emmenagement_l823_= - caml_call3 - (Runtime_ocaml_Runtime[28],_NL_,Runtime_ocaml_Runtime[17],_alz_); - try - {var - _alA_=function(param){return 0}, - _alB_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_NN_,1)}, - _alC_= - [0, - function(param) - {function _amL_(param){return 1} - function _amM_(param) - {var - _amN_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$92), - _amO_=informations[1], - _amP_=menage[3]; - function _amQ_(personne_a_charge) - {return 0 === personne_a_charge[0]?1:0} - var - _amR_=caml_call2(Runtime_ocaml_Runtime[90],_amQ_,_amP_), - _amS_=caml_call1(Runtime_ocaml_Runtime[68],_amR_), - _amT_=caml_call2(Runtime_ocaml_Runtime[91],_amS_,_amO_), - _amU_=caml_call2(Runtime_ocaml_Runtime[125],_amT_,_amN_); - return caml_call2(Runtime_ocaml_Runtime[29],_NO_,_amU_)} - return caml_call4(Runtime_ocaml_Runtime[63],_NP_,[0],_amM_,_amL_)}], - _alD_=caml_call4(Runtime_ocaml_Runtime[63],_NQ_,_alC_,_alB_,_alA_)} - catch(_amK_) - {_amK_ = caml_wrap_exception(_amK_); - if(_amK_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_NM_]; - throw _amK_} - var - condition_rang_enfant= - caml_call3 - (Runtime_ocaml_Runtime[28],_NR_,Runtime_ocaml_Runtime[12],_alD_); - try - {var - _alE_=function(param){return date_courante}, - _alF_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_NT_,1)}, - _alG_=caml_call4(Runtime_ocaml_Runtime[63],_NU_,[0],_alF_,_alE_), - base_mensuelle_allocations_fam= - caml_call3 - (Runtime_ocaml_Runtime[28],_NV_,Runtime_ocaml_Runtime[16],_alG_)} - catch(_amJ_) - {_amJ_ = caml_wrap_exception(_amJ_); - if(_amJ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_NS_]; - throw _amJ_} - var - _alH_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_NW_,base_mensuelle_allocations_fam$5), - [0,base_mensuelle_allocations_fam]), - result=caml_call2(Runtime_ocaml_Runtime[27],_NX_,_alH_), - base_mensuelle_allocations_fam$0=result[1]; - try - {var - _alI_=function(param){return menage}, - _alJ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_NZ_,1)}, - _alK_=caml_call4(Runtime_ocaml_Runtime[63],_N0_,[0],_alJ_,_alI_), - eligibilite_apl_dot_menage= - caml_call3(Runtime_ocaml_Runtime[28],_N1_,embed_menage,_alK_)} - catch(_amI_) - {_amI_ = caml_wrap_exception(_amI_); - if(_amI_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_NY_]; - throw _amI_} - try - {var - _alL_=function(param){return demandeur}, - _alM_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_N3_,1)}, - _alN_=caml_call4(Runtime_ocaml_Runtime[63],_N4_,[0],_alM_,_alL_), - eligibilite_apl_dot_demandeur= - caml_call3(Runtime_ocaml_Runtime[28],_N5_,embed_demandeur,_alN_)} - catch(_amH_) - {_amH_ = caml_wrap_exception(_amH_); - if(_amH_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_N2_]; - throw _amH_} - try - {var - _alO_=function(param){return date_courante}, - _alP_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_N7_,1)}, - _alQ_=caml_call4(Runtime_ocaml_Runtime[63],_N8_,[0],_alP_,_alO_), - eligibilite_apl_dot_date_coura= - caml_call3 - (Runtime_ocaml_Runtime[28],_N9_,Runtime_ocaml_Runtime[16],_alQ_)} - catch(_amG_) - {_amG_ = caml_wrap_exception(_amG_); - if(_amG_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_N6_]; - throw _amG_} - function eligibilite_apl_dot_condition_(param) - {throw Runtime_ocaml_Runtime[2]} - function eligibilite_apl_dot_condition_$0(param) - {throw Runtime_ocaml_Runtime[2]} - var - _alR_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_N__,eligibilite_aides_personnelle_), - [0, - eligibilite_apl_dot_menage, - eligibilite_apl_dot_demandeur, - eligibilite_apl_dot_date_coura, - eligibilite_apl_dot_condition_, - eligibilite_apl_dot_condition_$0]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_N$_,_alR_), - eligibilite_apl_dot_date_coura$0=result$0[1], - eligibilite_apl_dot_eligibilit=result$0[2]; - try - {var - _alS_=function(param){return 0}, - _alT_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ob_,1)}, - _alU_= - [0, - function(param) - {function _amw_(param){return 1} - function _amx_(param) - {var _amy_=informations[2]; - if(0 === _amy_[0]) - var _amz_=0; - else - {var date_naissance_ou_grossesse=_amy_[1]; - switch(date_naissance_ou_grossesse[0]) - {case 0: - var - date_naissance=date_naissance_ou_grossesse[1], - _amA_=caml_call3(Runtime_ocaml_Runtime[60],0,0,-1), - _amB_=caml_call3(Runtime_ocaml_Runtime[60],2,0,0), - _amC_= - caml_call2(Runtime_ocaml_Runtime[94],date_naissance,_amB_), - _amD_=caml_call1(Runtime_ocaml_Runtime[75],_amC_), - _amE_=caml_call2(Runtime_ocaml_Runtime[94],_amD_,_amA_), - _amF_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_amE_); - break; - case 1:var _amF_=0;break; - default:var _amF_=1} - var _amz_=_amF_} - return caml_call2(Runtime_ocaml_Runtime[29],_Oc_,_amz_)} - return caml_call4(Runtime_ocaml_Runtime[63],_Od_,[0],_amx_,_amw_)}], - _alV_=caml_call4(Runtime_ocaml_Runtime[63],_Oe_,_alU_,_alT_,_alS_)} - catch(_amv_) - {_amv_ = caml_wrap_exception(_amv_); - if(_amv_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Oa_]; - throw _amv_} - var - condition_periode_demenagement= - caml_call3 - (Runtime_ocaml_Runtime[28],_Of_,Runtime_ocaml_Runtime[12],_alV_); - try - {var - _alW_= - function(param) - {var - _ame_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$93), - _amf_=menage[3]; - function _amg_(personne_a_charge) - {return 0 === personne_a_charge[0]?1:0} - var - _amh_=caml_call2(Runtime_ocaml_Runtime[90],_amg_,_amf_), - _ami_=caml_call1(Runtime_ocaml_Runtime[68],_amh_); - if(caml_call2(Runtime_ocaml_Runtime[120],_ami_,_ame_)) - var - _amj_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2$1), - _amk_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$94), - _aml_=menage[3], - _amm_= - function(personne_a_charge) - {return 0 === personne_a_charge[0]?1:0}, - _amn_=caml_call2(Runtime_ocaml_Runtime[90],_amm_,_aml_), - _amo_=caml_call1(Runtime_ocaml_Runtime[68],_amn_), - _amp_=caml_call2(Runtime_ocaml_Runtime[96],_amo_,_amk_), - _amq_=caml_call1(Runtime_ocaml_Runtime[69],_amp_), - _amr_=caml_call2(Runtime_ocaml_Runtime[103],_amq_,_amj_), - _ams_= - caml_call2 - (Runtime_ocaml_Runtime[104], - base_mensuelle_allocations_fam$0, - _amr_); - else - var _ams_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$390); - var - _amt_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_4), - _amu_= - caml_call2 - (Runtime_ocaml_Runtime[104], - base_mensuelle_allocations_fam$0, - _amt_); - return caml_call2(Runtime_ocaml_Runtime[93],_amu_,_ams_)}, - _alX_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Oh_,1)}, - _alY_=caml_call4(Runtime_ocaml_Runtime[63],_Oi_,[0],_alX_,_alW_)} - catch(_amd_) - {_amd_ = caml_wrap_exception(_amd_); - if(_amd_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Og_]; - throw _amd_} - var - plafond_d823_22= - caml_call3 - (Runtime_ocaml_Runtime[28],_Oj_,Runtime_ocaml_Runtime[13],_alY_); - try - {var - _alZ_=function(param){return 0}, - _al0_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ol_,1)}, - _al1_= - [0, - function(param) - {function _al8_(param){return 1} - function _al9_(param) - {var - _al__= - caml_call2 - (Runtime_ocaml_Runtime[99], - eligibilite_apl_dot_date_coura$0, - date_emmenagement), - _al$_= - caml_call2 - (Runtime_ocaml_Runtime[118], - _al__, - delai_apres_emmenagement_l823_), - _ama_= - caml_call2 - (Runtime_ocaml_Runtime[83], - condition_periode_demenagement, - _al$_), - _amb_= - caml_call2 - (Runtime_ocaml_Runtime[83],condition_rang_enfant,_ama_), - _amc_= - caml_call2 - (Runtime_ocaml_Runtime[83], - eligibilite_apl_dot_eligibilit, - _amb_); - return caml_call2(Runtime_ocaml_Runtime[29],_Om_,_amc_)} - return caml_call4(Runtime_ocaml_Runtime[63],_On_,[0],_al9_,_al8_)}], - _al2_=caml_call4(Runtime_ocaml_Runtime[63],_Oo_,_al1_,_al0_,_alZ_)} - catch(_al7_) - {_al7_ = caml_wrap_exception(_al7_); - if(_al7_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ok_]; - throw _al7_} - caml_call3 - (Runtime_ocaml_Runtime[28],_Op_,Runtime_ocaml_Runtime[12],_al2_); - try - {var - _al3_= - function(param) - {return caml_call2 - (Runtime_ocaml_Runtime[117], - depenses_justifiees_reellement, - plafond_d823_22) - ?depenses_justifiees_reellement - :plafond_d823_22}, - _al4_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Or_,1)}, - _al5_=caml_call4(Runtime_ocaml_Runtime[63],_Os_,[0],_al4_,_al3_)} - catch(_al6_) - {_al6_ = caml_wrap_exception(_al6_); - if(_al6_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Oq_]; - throw _al6_} - var - montant_prime_demenagement= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ot_,Runtime_ocaml_Runtime[13],_al5_); - return [0,montant_prime_demenagement]} - function eligibilite_aide_personnalisee(eligibilite_aide_personnalisee) - {var - menage=eligibilite_aide_personnalisee[1], - demandeur=eligibilite_aide_personnalisee[2], - date_courante=eligibilite_aide_personnalisee[3]; - function _ajq_(param) - {try - {var - _ala_=function(param){return 0}, - _alb_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Ov_,1)}, - _alc_= - [0, - function(param$0) - {function _alf_(param){throw Runtime_ocaml_Runtime[2]} - function _alg_(param){return 0} - var - _alh_= - [0, - function(param$0) - {function _ali_(param){return 1} - function _alj_(param$0) - {switch(param[1][0]) - {case 0:var _als_=0;break; - case 1:var _als_=1;break; - case 2:var _als_=0;break; - case 3:var _als_=0;break; - default:var _als_=0} - switch(param[1][0]) - {case 0:var _alt_=1;break; - case 1:var _alt_=0;break; - case 2:var _alt_=0;break; - case 3:var _alt_=0;break; - default:var _alt_=0} - var - _alu_=caml_call2(Runtime_ocaml_Runtime[84],_alt_,_als_), - _alv_=0 === param[3][0]?1:0, - _alw_=caml_call2(Runtime_ocaml_Runtime[83],_alv_,_alu_); - return caml_call2(Runtime_ocaml_Runtime[29],_Ow_,_alw_)} - var - _alk_= - [0, - function(param$0) - {function _all_(param){return 1} - function _alm_(param$0) - {switch(param[1][0]) - {case 0:var _aln_=0;break; - case 1:var _aln_=0;break; - case 2:var _aln_=0;break; - case 3:var _aln_=1;break; - default:var _aln_=0} - switch(param[1][0]) - {case 0:var _alo_=0;break; - case 1:var _alo_=0;break; - case 2:var _alo_=1;break; - case 3:var _alo_=0;break; - default:var _alo_=0} - var - _alp_=caml_call2(Runtime_ocaml_Runtime[84],_alo_,_aln_), - _alq_=0 === param[3][0]?0:1, - _alr_=caml_call2(Runtime_ocaml_Runtime[83],_alq_,_alp_); - return caml_call2(Runtime_ocaml_Runtime[29],_Ox_,_alr_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Oy_,[0],_alm_,_all_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Oz_,_alk_,_alj_,_ali_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_OA_,_alh_,_alg_,_alf_)}], - _ald_=caml_call4(Runtime_ocaml_Runtime[63],_OB_,_alc_,_alb_,_ala_); - return _ald_} - catch(_ale_) - {_ale_ = caml_wrap_exception(_ale_); - if(_ale_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ou_]; - throw _ale_}} - var - caracteristiques_pret_l831_1_1= - caml_call3 - (Runtime_ocaml_Runtime[28],_OC_,Runtime_ocaml_Runtime[10],_ajq_); - function _ajr_(param) - {try - {var - _ak8_=function(param){return 0}, - _ak9_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_OE_,1)}, - _ak__=caml_call4(Runtime_ocaml_Runtime[63],_OF_,[0],_ak9_,_ak8_); - return _ak__} - catch(_ak$_) - {_ak$_ = caml_wrap_exception(_ak$_); - if(_ak$_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_OD_]; - throw _ak$_}} - var - caracteristiques_pret_l831_1_6= - caml_call3 - (Runtime_ocaml_Runtime[28],_OG_,Runtime_ocaml_Runtime[10],_ajr_); - try - {var - _ajs_=function(param){return 0}, - _ajt_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_OI_,1)}, - _aju_= - [0, - function(param) - {function _akE_(param){return 1} - function _akF_(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_OJ_,1)} - var - _akG_= - [0, - function(param) - {function _akH_(param){return 0} - function _akI_(param) - {var _ak4_=menage[2][3]; - switch(_ak4_[0]) - {case 0:var _ak5_=0;break; - case 1:var _ak5_=0;break; - case 2: - var - propriete=_ak4_[1], - _ak6_=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), - _ak5_= - caml_call2 - (Runtime_ocaml_Runtime[129],propriete[11][2],_ak6_); - break; - case 3:var _ak5_=0;break; - default: - var - propriete$0=_ak4_[1], - _ak7_=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), - _ak5_= - caml_call2 - (Runtime_ocaml_Runtime[129],propriete$0[11][2],_ak7_)} - return caml_call2(Runtime_ocaml_Runtime[29],_OK_,_ak5_)} - var - _akJ_= - [0, - function(param) - {function _akK_(param){return 1} - function _akL_(param) - {var _akM_=menage[2][3]; - switch(_akM_[0]) - {case 0:var _akN_=0;break; - case 1:var _akN_=0;break; - case 2: - var - propriete=_akM_[1], - _akO_=propriete[1], - _akP_=0 === propriete[10][0]?0:1, - _akQ_=caml_call2(Runtime_ocaml_Runtime[83],_akP_,_akO_), - _akR_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _akS_= - caml_call2 - (Runtime_ocaml_Runtime[114],propriete[11][2],_akR_), - _akT_=caml_call2(Runtime_ocaml_Runtime[83],_akS_,_akQ_), - _akU_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), - _akV_= - caml_call2 - (Runtime_ocaml_Runtime[129],propriete[11][2],_akU_), - _akN_=caml_call2(Runtime_ocaml_Runtime[83],_akV_,_akT_); - break; - case 3:var _akN_=0;break; - default: - var - propriete$0=_akM_[1], - _akW_=propriete$0[1], - _akX_=0 === propriete$0[10][0]?0:1, - _akY_=caml_call2(Runtime_ocaml_Runtime[83],_akX_,_akW_), - _akZ_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), - _ak0_= - caml_call2 - (Runtime_ocaml_Runtime[114],propriete$0[11][2],_akZ_), - _ak1_=caml_call2(Runtime_ocaml_Runtime[83],_ak0_,_akY_), - _ak2_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), - _ak3_= - caml_call2 - (Runtime_ocaml_Runtime[129],propriete$0[11][2],_ak2_), - _akN_=caml_call2(Runtime_ocaml_Runtime[83],_ak3_,_ak1_)} - return caml_call2(Runtime_ocaml_Runtime[29],_OL_,_akN_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_OM_,[0],_akL_,_akK_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_ON_,_akJ_,_akI_,_akH_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_OO_,_akG_,_akF_,_akE_)}], - _ajv_=caml_call4(Runtime_ocaml_Runtime[63],_OP_,_aju_,_ajt_,_ajs_)} - catch(_akD_) - {_akD_ = caml_wrap_exception(_akD_); - if(_akD_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_OH_]; - throw _akD_} - var - condition_logement_pret= - caml_call3 - (Runtime_ocaml_Runtime[28],_OQ_,Runtime_ocaml_Runtime[12],_ajv_); - try - {var - _ajw_=function(param){return menage}, - _ajx_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_OS_,1)}, - _ajy_=caml_call4(Runtime_ocaml_Runtime[63],_OT_,[0],_ajx_,_ajw_), - eligibilite_commune_dot_menage= - caml_call3(Runtime_ocaml_Runtime[28],_OU_,embed_menage,_ajy_)} - catch(_akC_) - {_akC_ = caml_wrap_exception(_akC_); - if(_akC_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_OR_]; - throw _akC_} - try - {var - _ajz_=function(param){return demandeur}, - _ajA_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_OW_,1)}, - _ajB_=caml_call4(Runtime_ocaml_Runtime[63],_OX_,[0],_ajA_,_ajz_), - eligibilite_commune_dot_demand= - caml_call3(Runtime_ocaml_Runtime[28],_OY_,embed_demandeur,_ajB_)} - catch(_akB_) - {_akB_ = caml_wrap_exception(_akB_); - if(_akB_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_OV_]; - throw _akB_} - try - {var - _ajC_=function(param){return date_courante}, - _ajD_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_O0_,1)}, - _ajE_=caml_call4(Runtime_ocaml_Runtime[63],_O1_,[0],_ajD_,_ajC_), - eligibilite_commune_dot_date_c= - caml_call3 - (Runtime_ocaml_Runtime[28],_O2_,Runtime_ocaml_Runtime[16],_ajE_)} - catch(_akA_) - {_akA_ = caml_wrap_exception(_akA_); - if(_akA_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_OZ_]; - throw _akA_} - function eligibilite_commune_dot_condit(param) - {throw Runtime_ocaml_Runtime[2]} - function eligibilite_commune_dot_condit$0(param) - {throw Runtime_ocaml_Runtime[2]} - var - _ajF_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_O3_,eligibilite_aides_personnelle_), - [0, - eligibilite_commune_dot_menage, - eligibilite_commune_dot_demand, - eligibilite_commune_dot_date_c, - eligibilite_commune_dot_condit, - eligibilite_commune_dot_condit$0]), - result=caml_call2(Runtime_ocaml_Runtime[27],_O4_,_ajF_), - eligibilite_commune_dot_eligib=result[2], - eligibilite_commune_dot_nombre=result[3], - eligibilite_commune_dot_coeffi=result[4]; - try - {var - _ajG_=function(param){return 0}, - _ajH_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_O6_,1)}, - _ajI_= - [0, - function(param) - {function _aj3_(param){throw Runtime_ocaml_Runtime[2]} - function _aj4_(param){return 0} - var - _aj5_= - [0, - function(param) - {function _aj6_(param){return 1} - function _aj7_(param) - {var _akv_=menage[2][3]; - switch(_akv_[0]) - {case 0:var _akw_=0;break; - case 1:var _akw_=0;break; - case 2: - var - propriete=_akv_[1], - _akx_= - caml_call3 - (Runtime_ocaml_Runtime[28],_O8_,embed_pret,propriete[11]), - _aky_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _O9_, - caracteristiques_pret_l831_1_1), - _akx_), - _akz_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _O__, - Runtime_ocaml_Runtime[12], - _aky_), - _akw_=caml_call2(Runtime_ocaml_Runtime[27],_O$_,_akz_); - break; - case 3:var _akw_=0;break; - default:var _akw_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_O7_,_akw_)} - var - _aj8_= - [0, - function(param) - {function _aj9_(param){return 1} - function _aj__(param) - {var _akr_=menage[2][3]; - switch(_akr_[0]) - {case 0: - var location=_akr_[1],_aks_=location[1]; - switch(_aks_[0]) - {case 0:var convention=_aks_[1],_akt_=convention[1];break; - case 1: - var convention$0=_aks_[1],_akt_=convention$0[1];break; - default:var _akt_=0} - var _aku_=_akt_; - break; - case 1:var _aku_=0;break; - case 2:var _aku_=0;break; - case 3:var _aku_=0;break; - default:var _aku_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_Pa_,_aku_)} - var - _aj$_= - [0, - function(param) - {function _aka_(param){return 1} - function _akb_(param) - {var _akp_=menage[2][3]; - switch(_akp_[0]) - {case 0:var _akq_=0;break; - case 1:var location=_akp_[1],_akq_=location[3];break; - case 2:var _akq_=0;break; - case 3:var _akq_=0;break; - default:var _akq_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_Pb_,_akq_)} - var - _akc_= - [0, - function(param) - {function _akd_(param){return 1} - function _ake_(param) - {var _akk_=menage[2][3]; - switch(_akk_[0]) - {case 0:var _akl_=0;break; - case 1:var _akl_=0;break; - case 2:var _akl_=0;break; - case 3:var _akl_=0;break; - default: - var - propriete=_akk_[1], - _akm_= - caml_call3 - (Runtime_ocaml_Runtime[28],_Pd_,embed_pret,propriete[11]), - _akn_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Pe_, - caracteristiques_pret_l831_1_6), - _akm_), - _ako_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Pf_, - Runtime_ocaml_Runtime[12], - _akn_), - _akl_=caml_call2(Runtime_ocaml_Runtime[27],_Pg_,_ako_)} - return caml_call2(Runtime_ocaml_Runtime[29],_Pc_,_akl_)} - var - _akf_= - [0, - function(param) - {function _akg_(param){return 1} - function _akh_(param) - {var _aki_=menage[2][3]; - switch(_aki_[0]) - {case 0:var _akj_=0;break; - case 1: - var logement_foyer=_aki_[1],_akj_=logement_foyer[2];break; - case 2:var _akj_=0;break; - case 3:var _akj_=0;break; - default:var _akj_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_Ph_,_akj_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Pi_,[0],_akh_,_akg_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Pj_,_akf_,_ake_,_akd_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Pk_,_akc_,_akb_,_aka_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Pl_,_aj$_,_aj__,_aj9_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Pm_,_aj8_,_aj7_,_aj6_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Pn_,_aj5_,_aj4_,_aj3_)}], - _ajJ_=caml_call4(Runtime_ocaml_Runtime[63],_Po_,_ajI_,_ajH_,_ajG_)} - catch(_aj2_) - {_aj2_ = caml_wrap_exception(_aj2_); - if(_aj2_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_O5_]; - throw _aj2_} - var - condition_logement_bailleur= - caml_call3 - (Runtime_ocaml_Runtime[28],_Pp_,Runtime_ocaml_Runtime[12],_ajJ_); - try - {var - _ajK_=function(param){return eligibilite_commune_dot_coeffi}, - _ajL_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Pr_,1)}, - _ajM_=caml_call4(Runtime_ocaml_Runtime[63],_Ps_,[0],_ajL_,_ajK_)} - catch(_aj1_) - {_aj1_ = caml_wrap_exception(_aj1_); - if(_aj1_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Pq_]; - throw _aj1_} - var - _ajN_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), - coefficents_enfants_garde_alte= - caml_call3(Runtime_ocaml_Runtime[28],_Pt_,_ajN_,_ajM_); - try - {var - _ajO_=function(param){return eligibilite_commune_dot_nombre}, - _ajP_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Pv_,1)}, - _ajQ_=caml_call4(Runtime_ocaml_Runtime[63],_Pw_,[0],_ajP_,_ajO_)} - catch(_aj0_) - {_aj0_ = caml_wrap_exception(_aj0_); - if(_aj0_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Pu_]; - throw _aj0_} - var - nombre_personnes_a_charge_pris= - caml_call3 - (Runtime_ocaml_Runtime[28],_Px_,Runtime_ocaml_Runtime[14],_ajQ_); - try - {var - _ajR_=function(param){return 0}, - _ajS_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Pz_,1)}, - _ajT_= - [0, - function(param) - {function _ajW_(param){return 1} - function _ajX_(param) - {var - _ajY_= - caml_call2 - (Runtime_ocaml_Runtime[83], - condition_logement_pret, - eligibilite_commune_dot_eligib), - _ajZ_= - caml_call2 - (Runtime_ocaml_Runtime[83], - condition_logement_bailleur, - _ajY_); - return caml_call2(Runtime_ocaml_Runtime[29],_PA_,_ajZ_)} - return caml_call4(Runtime_ocaml_Runtime[63],_PB_,[0],_ajX_,_ajW_)}], - _ajU_=caml_call4(Runtime_ocaml_Runtime[63],_PC_,_ajT_,_ajS_,_ajR_)} - catch(_ajV_) - {_ajV_ = caml_wrap_exception(_ajV_); - if(_ajV_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Py_]; - throw _ajV_} - var - eligibilite= - caml_call3 - (Runtime_ocaml_Runtime[28],_PD_,Runtime_ocaml_Runtime[12],_ajU_); - return [0, - date_courante, - eligibilite, - nombre_personnes_a_charge_pris, - coefficents_enfants_garde_alte]} - function eligibilite_allocation_logemen(eligibilite_allocation_logemen) - {var - date_courante=eligibilite_allocation_logemen[1], - menage=eligibilite_allocation_logemen[2], - demandeur=eligibilite_allocation_logemen[3], - beneficie_aide_personnalisee_l=eligibilite_allocation_logemen[4]; - try - {var - _agp_= - function(param){return caml_call3(Runtime_ocaml_Runtime[60],5,0,0)}, - _agq_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PF_,1)}, - _agr_=caml_call4(Runtime_ocaml_Runtime[63],_PG_,[0],_agq_,_agp_)} - catch(_ajp_) - {_ajp_ = caml_wrap_exception(_ajp_); - if(_ajp_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_PE_]; - throw _ajp_} - var - duree_l841_1_3= - caml_call3 - (Runtime_ocaml_Runtime[28],_PH_,Runtime_ocaml_Runtime[17],_agr_); - try - {var - _ags_=function(param){return date_courante}, - _agt_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PJ_,1)}, - _agu_=caml_call4(Runtime_ocaml_Runtime[63],_PK_,[0],_agt_,_ags_), - prestations_familiales_dot_dat= - caml_call3 - (Runtime_ocaml_Runtime[28],_PL_,Runtime_ocaml_Runtime[16],_agu_)} - catch(_ajo_) - {_ajo_ = caml_wrap_exception(_ajo_); - if(_ajo_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_PI_]; - throw _ajo_} - try - {var - _agv_=function(param){return _PN_}, - _agw_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PO_,1)}, - _agx_=caml_call4(Runtime_ocaml_Runtime[63],_PP_,[0],_agw_,_agv_), - prestations_familiales_dot_pre= - caml_call3 - (Runtime_ocaml_Runtime[28], - _PQ_, - embed_element_prestations_fami$0, - _agx_)} - catch(_ajn_) - {_ajn_ = caml_wrap_exception(_ajn_); - if(_ajn_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_PM_]; - throw _ajn_} - try - {var - _agy_=function(param){return _PS_}, - _agz_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PT_,1)}, - _agA_=caml_call4(Runtime_ocaml_Runtime[63],_PU_,[0],_agz_,_agy_), - prestations_familiales_dot_res= - caml_call3 - (Runtime_ocaml_Runtime[28],_PV_,embed_collectivite$0,_agA_)} - catch(_ajm_) - {_ajm_ = caml_wrap_exception(_ajm_); - if(_ajm_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_PR_]; - throw _ajm_} - var - _agB_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_PW_,eligibilite_prestations_famili), - [0, - prestations_familiales_dot_dat, - prestations_familiales_dot_pre, - prestations_familiales_dot_res]), - result=caml_call2(Runtime_ocaml_Runtime[27],_PX_,_agB_), - prestations_familiales_dot_dro=result[1]; - try - {var - _agC_=function(param){return 0}, - _agD_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PZ_,1)}, - _agE_= - [0, - function(param) - {function _aiV_(param){return 1} - function _aiW_(param) - {switch(menage[2][3][0]) - {case 0:var _ajl_=1;break; - case 1:var _ajl_=1;break; - case 2:var _ajl_=0;break; - case 3:var _ajl_=1;break; - default:var _ajl_=1} - return caml_call2(Runtime_ocaml_Runtime[29],_P0_,_ajl_)} - var - _aiX_= - [0, - function(param) - {function _aiY_(param){throw Runtime_ocaml_Runtime[2]} - function _aiZ_(param){return 0} - var - _ai0_= - [0, - function(param) - {function _ai1_(param){return 1} - function _ai2_(param) - {var _ajf_=menage[2][3]; - switch(_ajf_[0]) - {case 0:var _ajg_=0;break; - case 1:var _ajg_=0;break; - case 2: - var proprietaire=_ajf_[1]; - switch(proprietaire[6][0]) - {case 0:var _ajh_=1;break; - case 1:var _ajh_=0;break; - case 2:var _ajh_=0;break; - default:var _ajh_=0} - switch(proprietaire[6][0]) - {case 0:var _aji_=0;break; - case 1:var _aji_=0;break; - case 2:var _aji_=0;break; - default:var _aji_=1} - var - _ajj_=caml_call2(Runtime_ocaml_Runtime[84],_aji_,_ajh_), - _ajk_=0 === proprietaire[11][3][0]?1:0, - _ajg_=caml_call2(Runtime_ocaml_Runtime[83],_ajk_,_ajj_); - break; - case 3:var _ajg_=0;break; - default:var _ajg_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_P1_,_ajg_)} - var - _ai3_= - [0, - function(param) - {function _ai4_(param){return 1} - function _ai5_(param) - {var _ajb_=menage[2][3]; - switch(_ajb_[0]) - {case 0:var _ajc_=0;break; - case 1:var _ajc_=0;break; - case 2: - var proprietaire=_ajb_[1]; - switch(proprietaire[6][0]) - {case 0:var _ajd_=0;break; - case 1:var _ajd_=1;break; - case 2:var _ajd_=0;break; - default:var _ajd_=0} - var - _aje_=0 === proprietaire[11][3][0]?1:0, - _ajc_=caml_call2(Runtime_ocaml_Runtime[83],_aje_,_ajd_); - break; - case 3:var _ajc_=0;break; - default:var _ajc_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_P2_,_ajc_)} - var - _ai6_= - [0, - function(param) - {function _ai7_(param){return 1} - function _ai8_(param) - {var _ai9_=menage[2][3]; - switch(_ai9_[0]) - {case 0:var _ai__=0;break; - case 1:var _ai__=0;break; - case 2: - var proprietaire=_ai9_[1]; - switch(proprietaire[6][0]) - {case 0:var _ai$_=0;break; - case 1:var _ai$_=0;break; - case 2:var _ai$_=1;break; - default:var _ai$_=0} - var - _aja_=0 === proprietaire[11][3][0]?1:0, - _ai__=caml_call2(Runtime_ocaml_Runtime[83],_aja_,_ai$_); - break; - case 3:var _ai__=0;break; - default:var _ai__=0} - return caml_call2(Runtime_ocaml_Runtime[29],_P3_,_ai__)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_P4_,[0],_ai8_,_ai7_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_P5_,_ai6_,_ai5_,_ai4_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_P6_,_ai3_,_ai2_,_ai1_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_P7_,_ai0_,_aiZ_,_aiY_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_P8_,_aiX_,_aiW_,_aiV_)}], - _agF_=caml_call4(Runtime_ocaml_Runtime[63],_P9_,_agE_,_agD_,_agC_)} - catch(_aiU_) - {_aiU_ = caml_wrap_exception(_aiU_); - if(_aiU_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_PY_]; - throw _aiU_} - var - condition_accession_propriete= - caml_call3 - (Runtime_ocaml_Runtime[28],_P__,Runtime_ocaml_Runtime[12],_agF_); - try - {var - _agG_=function(param){return menage}, - _agH_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qa_,1)}, - _agI_=caml_call4(Runtime_ocaml_Runtime[63],_Qb_,[0],_agH_,_agG_), - eligibilite_commune_dot_menage= - caml_call3(Runtime_ocaml_Runtime[28],_Qc_,embed_menage,_agI_)} - catch(_aiT_) - {_aiT_ = caml_wrap_exception(_aiT_); - if(_aiT_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_P$_]; - throw _aiT_} - try - {var - _agJ_=function(param){return demandeur}, - _agK_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qe_,1)}, - _agL_=caml_call4(Runtime_ocaml_Runtime[63],_Qf_,[0],_agK_,_agJ_), - eligibilite_commune_dot_demand= - caml_call3(Runtime_ocaml_Runtime[28],_Qg_,embed_demandeur,_agL_)} - catch(_aiS_) - {_aiS_ = caml_wrap_exception(_aiS_); - if(_aiS_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Qd_]; - throw _aiS_} - try - {var - _agM_=function(param){return date_courante}, - _agN_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qi_,1)}, - _agO_=caml_call4(Runtime_ocaml_Runtime[63],_Qj_,[0],_agN_,_agM_), - eligibilite_commune_dot_date_c= - caml_call3 - (Runtime_ocaml_Runtime[28],_Qk_,Runtime_ocaml_Runtime[16],_agO_)} - catch(_aiR_) - {_aiR_ = caml_wrap_exception(_aiR_); - if(_aiR_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Qh_]; - throw _aiR_} - function eligibilite_commune_dot_condit(param) - {function _aiM_(param){return 1} - function _aiN_(param) - {var _aiP_=menage[2][3]; - switch(_aiP_[0]) - {case 0:var _aiQ_=0;break; - case 1:var logement_foyer=_aiP_[1],_aiQ_=logement_foyer[5];break; - case 2:var _aiQ_=0;break; - case 3:var _aiQ_=0;break; - default:var _aiQ_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_Ql_,_aiQ_)} - var _aiO_=caml_call4(Runtime_ocaml_Runtime[63],_Qm_,[0],_aiN_,_aiM_); - return caml_call3 - (Runtime_ocaml_Runtime[28], - _Qn_, - Runtime_ocaml_Runtime[12], - _aiO_)} - function eligibilite_commune_dot_condit$0(param) - {function _aiH_(param){return 1} - function _aiI_(param) - {var _aiK_=menage[2][3]; - switch(_aiK_[0]) - {case 0:var _aiL_=0;break; - case 1:var logement_foyer=_aiK_[1],_aiL_=logement_foyer[5];break; - case 2:var _aiL_=0;break; - case 3:var _aiL_=0;break; - default:var _aiL_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_Qo_,_aiL_)} - var _aiJ_=caml_call4(Runtime_ocaml_Runtime[63],_Qp_,[0],_aiI_,_aiH_); - return caml_call3 - (Runtime_ocaml_Runtime[28], - _Qq_, - Runtime_ocaml_Runtime[12], - _aiJ_)} - var - _agP_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Qr_,eligibilite_aides_personnelle_), - [0, - eligibilite_commune_dot_menage, - eligibilite_commune_dot_demand, - eligibilite_commune_dot_date_c, - eligibilite_commune_dot_condit, - eligibilite_commune_dot_condit$0]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_Qs_,_agP_), - eligibilite_commune_dot_eligib=result$0[2], - eligibilite_commune_dot_nombre=result$0[3], - eligibilite_commune_dot_coeffi=result$0[4], - eligibilite_commune_dot_condit$1=result$0[5]; - try - {var - _agQ_=function(param){return eligibilite_commune_dot_coeffi}, - _agR_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qu_,1)}, - _agS_=caml_call4(Runtime_ocaml_Runtime[63],_Qv_,[0],_agR_,_agQ_)} - catch(_aiG_) - {_aiG_ = caml_wrap_exception(_aiG_); - if(_aiG_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Qt_]; - throw _aiG_} - var - _agT_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), - coefficents_enfants_garde_alte= - caml_call3(Runtime_ocaml_Runtime[28],_Qw_,_agT_,_agS_); - try - {var - _agU_=function(param){return eligibilite_commune_dot_nombre}, - _agV_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qy_,1)}, - _agW_=caml_call4(Runtime_ocaml_Runtime[63],_Qz_,[0],_agV_,_agU_)} - catch(_aiF_) - {_aiF_ = caml_wrap_exception(_aiF_); - if(_aiF_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Qx_]; - throw _aiF_} - var - nombre_personnes_a_charge_pris= - caml_call3 - (Runtime_ocaml_Runtime[28],_QA_,Runtime_ocaml_Runtime[14],_agW_); - try - {var - _agX_= - function(param) - {var - _aiD_= - caml_call1 - (Runtime_ocaml_Runtime[67],condition_accession_propriete), - _aiE_= - caml_call1 - (Runtime_ocaml_Runtime[67],eligibilite_commune_dot_eligib); - return caml_call2(Runtime_ocaml_Runtime[84],_aiE_,_aiD_)?_QC_:_QD_}, - _agY_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_QE_,1)}, - _agZ_=caml_call4(Runtime_ocaml_Runtime[63],_QF_,[0],_agY_,_agX_)} - catch(_aiC_) - {_aiC_ = caml_wrap_exception(_aiC_); - if(_aiC_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_QB_]; - throw _aiC_} - var - eligibilite_dispositions_commu= - caml_call3 - (Runtime_ocaml_Runtime[28],_QG_,embed_type_eligibilite_allocat,_agZ_); - try - {var - _ag0_=function(param){return 0}, - _ag1_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_QI_,1)}, - _ag2_= - [0, - function(param) - {function _ahk_(param){return 1} - function _ahl_(param) - {var _air_=menage[1],_ais_=0; - function _ait_(acc,prestation) - {var - _aiv_=caml_call2(Runtime_ocaml_Runtime[86],prestation,_QJ_), - _aiw_=caml_call2(Runtime_ocaml_Runtime[86],prestation,_QK_), - _aix_=caml_call2(Runtime_ocaml_Runtime[84],_aiw_,_aiv_), - _aiy_=caml_call2(Runtime_ocaml_Runtime[86],prestation,_QL_), - _aiz_=caml_call2(Runtime_ocaml_Runtime[84],_aiy_,_aix_), - _aiA_=caml_call2(Runtime_ocaml_Runtime[86],prestation,_QM_), - _aiB_=caml_call2(Runtime_ocaml_Runtime[84],_aiA_,_aiz_); - return caml_call2(Runtime_ocaml_Runtime[84],acc,_aiB_)} - var - _aiu_= - caml_call3(Runtime_ocaml_Runtime[135],_ait_,_ais_,_air_); - return caml_call2(Runtime_ocaml_Runtime[29],_QN_,_aiu_)} - var - _ahm_= - [0, - function(param) - {function _ahn_(param){return 1} - function _aho_(param) - {var - _aif_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$273), - _aig_=menage[3]; - function _aih_(personne_a_charge) - {if(0 === personne_a_charge[0]) - {var - enfant=personne_a_charge[1], - _ail_=enfant[2], - _aim_=enfant[3], - _ain_=0 === enfant[7][0]?_QO_:_QT_, - _aio_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _QP_, - embed_enfant_prestations_famil, - [0, - enfant[1], - enfant[6], - enfant[5], - enfant[4], - _ain_, - _aim_, - _ail_]), - _aip_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _QQ_, - prestations_familiales_dot_dro), - _aio_), - _aiq_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _QR_, - Runtime_ocaml_Runtime[12], - _aip_); - return caml_call2(Runtime_ocaml_Runtime[27],_QS_,_aiq_)} - return 0} - var - _aii_=caml_call2(Runtime_ocaml_Runtime[90],_aih_,_aig_), - _aij_=caml_call1(Runtime_ocaml_Runtime[68],_aii_), - _aik_=caml_call2(Runtime_ocaml_Runtime[86],_aij_,_aif_); - return caml_call2(Runtime_ocaml_Runtime[29],_QU_,_aik_)} - var - _ahp_= - [0, - function(param) - {function _ahq_(param){return 1} - function _ahr_(param) - {var _ah0_=menage[5]; - switch(_ah0_[0]) - {case 0:var _ah1_=0;break; - case 1: - var - date_mariage=_ah0_[1], - _ah9_= - caml_call2 - (Runtime_ocaml_Runtime[94],date_mariage,duree_l841_1_3), - _ah1_= - caml_call2(Runtime_ocaml_Runtime[119],date_courante,_ah9_); - break; - case 2:var _ah1_=0;break; - case 3:var _ah1_=0;break; - case 4:var _ah1_=0;break; - default:var _ah1_=0} - var - _ah2_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$391), - _ah3_=menage[3]; - function _ah4_(personne_a_charge) - {if(0 === personne_a_charge[0]) - {var - enfant=personne_a_charge[1], - _ah__=enfant[2], - _ah$_=enfant[3], - _aia_=0 === enfant[7][0]?_QV_:_Q0_, - _aib_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _QW_, - embed_enfant_prestations_famil, - [0, - enfant[1], - enfant[6], - enfant[5], - enfant[4], - _aia_, - _ah$_, - _ah__]), - _aic_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _QX_, - prestations_familiales_dot_dro), - _aib_), - _aid_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _QY_, - Runtime_ocaml_Runtime[12], - _aic_), - _aie_=caml_call2(Runtime_ocaml_Runtime[27],_QZ_,_aid_); - return caml_call1(Runtime_ocaml_Runtime[67],_aie_)} - return 0} - var - _ah5_=caml_call2(Runtime_ocaml_Runtime[90],_ah4_,_ah3_), - _ah6_=caml_call1(Runtime_ocaml_Runtime[68],_ah5_), - _ah7_=caml_call2(Runtime_ocaml_Runtime[86],_ah6_,_ah2_), - _ah8_=caml_call2(Runtime_ocaml_Runtime[83],_ah7_,_ah1_); - return caml_call2(Runtime_ocaml_Runtime[29],_Q1_,_ah8_)} - var - _ahs_= - [0, - function(param) - {function _aht_(param) - {function _ahD_(param){throw Runtime_ocaml_Runtime[2]} - function _ahE_(param){return 0} - var - _ahF_= - [0, - function(param) - {function _ahG_(param){return 1} - function _ahH_(param) - {var - _ahR_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$274), - _ahS_=menage[3]; - function _ahT_(personne_a_charge) - {var - _ahX_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Q2_, - embed_personne_a_charge, - personne_a_charge), - _ahY_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Q3_, - eligibilite_commune_dot_condit$1), - _ahX_), - _ahZ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Q4_, - Runtime_ocaml_Runtime[12], - _ahY_); - return caml_call2(Runtime_ocaml_Runtime[27],_Q5_,_ahZ_)} - var - _ahU_=caml_call2(Runtime_ocaml_Runtime[90],_ahT_,_ahS_), - _ahV_=caml_call1(Runtime_ocaml_Runtime[68],_ahU_), - _ahW_=caml_call2(Runtime_ocaml_Runtime[125],_ahV_,_ahR_); - return caml_call2(Runtime_ocaml_Runtime[29],_Q6_,_ahW_)} - var - _ahI_= - [0, - function(param) - {function _ahJ_(param){return 1} - function _ahK_(param) - {var - _ahL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$275), - _ahM_=menage[3]; - function _ahN_(personne_a_charge) - {if(0 === personne_a_charge[0])return 0; - var parent=personne_a_charge[1]; - return caml_call2 - (Runtime_ocaml_Runtime[83],parent[3],parent[5])} - var - _ahO_=caml_call2(Runtime_ocaml_Runtime[90],_ahN_,_ahM_), - _ahP_=caml_call1(Runtime_ocaml_Runtime[68],_ahO_), - _ahQ_=caml_call2(Runtime_ocaml_Runtime[125],_ahP_,_ahL_); - return caml_call2(Runtime_ocaml_Runtime[29],_Q7_,_ahQ_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Q8_,[0],_ahK_,_ahJ_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Q9_,_ahI_,_ahH_,_ahG_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Q__,_ahF_,_ahE_,_ahD_)} - function _ahu_(param){return 1} - var - _ahv_= - [0, - function(param) - {function _ahw_(param){return 1} - function _ahx_(param) - {switch(menage[5][0]) - {case 0: - var - _ahy_=menage[7], - _ahz_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$392), - _ahA_=caml_call1(Runtime_ocaml_Runtime[68],menage[3]), - _ahB_=caml_call2(Runtime_ocaml_Runtime[86],_ahA_,_ahz_), - _ahC_=caml_call2(Runtime_ocaml_Runtime[83],_ahB_,_ahy_); - break; - case 1:var _ahC_=0;break; - case 2:var _ahC_=0;break; - case 3:var _ahC_=0;break; - case 4:var _ahC_=0;break; - default:var _ahC_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_Q$_,_ahC_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Ra_,[0],_ahx_,_ahw_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Rb_,_ahv_,_ahu_,_aht_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Rc_,_ahs_,_ahr_,_ahq_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Rd_,_ahp_,_aho_,_ahn_)}]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Re_,_ahm_,_ahl_,_ahk_)}], - _ag3_=caml_call4(Runtime_ocaml_Runtime[63],_Rf_,_ag2_,_ag1_,_ag0_)} - catch(_ahj_) - {_ahj_ = caml_wrap_exception(_ahj_); - if(_ahj_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_QH_]; - throw _ahj_} - var - eligibilite_allocation_logemen$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_Rg_,Runtime_ocaml_Runtime[12],_ag3_); - try - {var - _ag4_= - function(param) - {var - _ahi_= - caml_call2 - (Runtime_ocaml_Runtime[86],eligibilite_dispositions_commu,_Ri_); - return caml_call2 - (Runtime_ocaml_Runtime[84], - _ahi_, - beneficie_aide_personnalisee_l) - ?_Rj_ - :eligibilite_allocation_logemen$0?_Rk_:_Rl_}, - _ag5_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Rm_,1)}, - _ag6_= - [0, - function(param) - {function _ag9_(param){throw Runtime_ocaml_Runtime[2]} - function _ag__(param){return 0} - function _ag$_(param) - {function _ahd_(param){return _Rn_} - function _ahe_(param) - {var _ahf_=menage[2][3]; - switch(_ahf_[0]) - {case 0:var _ahg_=0;break; - case 1:var _ahg_=0;break; - case 2: - var - proprietaire=_ahf_[1], - _ahh_=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), - _ahg_= - caml_call2 - (Runtime_ocaml_Runtime[124],proprietaire[11][2],_ahh_); - break; - case 3:var _ahg_=0;break; - default:var _ahg_=0} - return caml_call2(Runtime_ocaml_Runtime[29],_Ro_,_ahg_)} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Rp_,[0],_ahe_,_ahd_)} - var - _aha_= - [0, - function(param) - {function _ahb_(param){return _Rq_} - function _ahc_(param) - {return caml_call2 - (Runtime_ocaml_Runtime[29],_Rr_,demandeur[4])} - return caml_call4 - (Runtime_ocaml_Runtime[63],_Rs_,[0],_ahc_,_ahb_)}, - _ag$_]; - return caml_call4 - (Runtime_ocaml_Runtime[63],_Rt_,_aha_,_ag__,_ag9_)}], - _ag7_=caml_call4(Runtime_ocaml_Runtime[63],_Ru_,_ag6_,_ag5_,_ag4_)} - catch(_ag8_) - {_ag8_ = caml_wrap_exception(_ag8_); - if(_ag8_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Rh_]; - throw _ag8_} - var - eligibilite_l841_2= - caml_call3 - (Runtime_ocaml_Runtime[28],_Rv_,embed_type_eligibilite_allocat,_ag7_); - return [0, - eligibilite_l841_2, - nombre_personnes_a_charge_pris, - coefficents_enfants_garde_alte]} - function calcul_allocation_logement(calcul_allocation_logement_in) - {var - mode_occupation=calcul_allocation_logement_in[1], - ressources_menage_sans_arrondi=calcul_allocation_logement_in[2], - situation_familiale=calcul_allocation_logement_in[3], - nombre_personnes_a_charge=calcul_allocation_logement_in[4], - zone=calcul_allocation_logement_in[5], - date_courante=calcul_allocation_logement_in[6], - type_aide=calcul_allocation_logement_in[7]; - try - {var - _afi_= - function(param) - {switch(mode_occupation[0]) - {case 0:var location=mode_occupation[1];return [0,location]; - case 1: - var logementfoyer=mode_occupation[1];return [2,logementfoyer]; - case 2: - var proprietaire=mode_occupation[1];return [1,proprietaire]; - case 3:var location$0=mode_occupation[1];return [0,location$0]; - default: - var proprietaire$0=mode_occupation[1];return [1,proprietaire$0]}}, - _afj_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Rx_,1)}, - _afk_=caml_call4(Runtime_ocaml_Runtime[63],_Ry_,[0],_afj_,_afi_)} - catch(_ago_) - {_ago_ = caml_wrap_exception(_ago_); - if(_ago_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Rw_]; - throw _ago_} - caml_call3 - (Runtime_ocaml_Runtime[28],_Rz_,embed_categorie_calcul_a_p_l,_afk_); - try - {var - _afl_= - function(param) - {var - _agi_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$13), - _agj_=caml_call1(Runtime_ocaml_Runtime[31],cst_49$0), - _agk_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_01$1), - _agl_= - caml_call2 - (Runtime_ocaml_Runtime[104], - ressources_menage_sans_arrondi, - _agk_), - _agm_=caml_call2(Runtime_ocaml_Runtime[93],_agl_,_agj_), - _agn_=caml_call1(Runtime_ocaml_Runtime[77],_agm_); - return caml_call2(Runtime_ocaml_Runtime[104],_agn_,_agi_)}, - _afm_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_RB_,1)}, - _afn_=caml_call4(Runtime_ocaml_Runtime[63],_RC_,[0],_afm_,_afl_)} - catch(_agh_) - {_agh_ = caml_wrap_exception(_agh_); - if(_agh_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_RA_]; - throw _agh_} - var - ressources_menage_avec_arrondi= - caml_call3 - (Runtime_ocaml_Runtime[28],_RD_,Runtime_ocaml_Runtime[13],_afn_); - try - {var - _afo_= - function(param) - {switch(situation_familiale[0]) - {case 0:return _RF_; - case 1:return _RG_; - case 2:return _RH_; - case 3:return _RI_; - case 4:return _RJ_; - default:return _RK_}}, - _afp_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_RL_,1)}, - _afq_=caml_call4(Runtime_ocaml_Runtime[63],_RM_,[0],_afp_,_afo_)} - catch(_agg_) - {_agg_ = caml_wrap_exception(_agg_); - if(_agg_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_RE_]; - throw _agg_} - var - situation_familiale_calcul_apl= - caml_call3 - (Runtime_ocaml_Runtime[28],_RN_,embed_situation_familiale_calc,_afq_); - try - {var - _afr_= - function(param) - {switch(mode_occupation[0]) - {case 0: - var - location=mode_occupation[1], - _afE_=location[8], - _afF_=location[7]; - try - {var _afG_=location[1]; - switch(_afG_[0]) - {case 0:var bailleur=_afG_[1],_afH_=bailleur[2];break; - case 1: - var _afH_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$393); - break; - default: - var _afH_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$394)}} - catch(_agc_) - {_agc_ = caml_wrap_exception(_agc_); - if(_agc_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_RP_]; - throw _agc_} - var - _afI_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _RQ_, - embed_calcul_allocation_logeme$3, - [0, - location[2], - ressources_menage_avec_arrondi, - location[3], - date_courante, - nombre_personnes_a_charge, - situation_familiale_calcul_apl, - zone, - location[4], - location[6], - type_aide, - location[5], - _afH_, - _afF_, - _afE_]), - result= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _RR_, - calcul_allocation_logement_loc), - _afI_), - _afJ_= - function(param) - {var - _af$_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _RS_, - Runtime_ocaml_Runtime[13], - param), - _aga_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_RT_,result[2]),_af$_), - _agb_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _RU_, - Runtime_ocaml_Runtime[13], - _aga_); - return caml_call2(Runtime_ocaml_Runtime[27],_RV_,_agb_)}, - result$0=[0,result[1],_afJ_]; - if(caml_call2(Runtime_ocaml_Runtime[29],_RW_,1)) - {var - _afK_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _RX_, - embed_calcul_allocation_logeme, - result$0), - traitement_formule= - caml_call2(Runtime_ocaml_Runtime[27],_RY_,_afK_); - return [0,traitement_formule[1],traitement_formule[2]]} - throw Runtime_ocaml_Runtime[2]; - case 1: - var - logement_foyer=mode_occupation[1], - _afL_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _RZ_, - embed_calcul_allocation_logeme$5, - [0, - logement_foyer[1], - logement_foyer[4], - logement_foyer[6], - ressources_menage_avec_arrondi, - nombre_personnes_a_charge, - situation_familiale_calcul_apl, - zone, - date_courante, - logement_foyer[7]]), - result$1= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _R0_, - calcul_allocation_logement_foy), - _afL_), - _afM_= - function(param) - {var - _af8_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _R1_, - Runtime_ocaml_Runtime[13], - param), - _af9_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_R2_,result$1[6]), - _af8_), - _af__= - caml_call3 - (Runtime_ocaml_Runtime[28], - _R3_, - Runtime_ocaml_Runtime[13], - _af9_); - return caml_call2(Runtime_ocaml_Runtime[27],_R4_,_af__)}, - result$2= - [0, - result$1[1], - result$1[2], - result$1[3], - result$1[4], - result$1[5], - _afM_]; - if(caml_call2(Runtime_ocaml_Runtime[29],_R5_,1)) - {var - _afN_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _R6_, - embed_calcul_allocation_logeme$1, - result$2), - traitement_formule$0= - caml_call2(Runtime_ocaml_Runtime[27],_R7_,_afN_); - return [0,traitement_formule$0[5],traitement_formule$0[6]]} - throw Runtime_ocaml_Runtime[2]; - case 2: - var - proprietaire=mode_occupation[1], - _afO_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _R8_, - embed_calcul_allocation_logeme$4, - [0, - ressources_menage_avec_arrondi, - nombre_personnes_a_charge, - situation_familiale_calcul_apl, - zone, - date_courante, - proprietaire[2], - proprietaire[9], - proprietaire[11][2], - proprietaire[6], - proprietaire[7], - proprietaire[4], - proprietaire[3], - proprietaire[8]]), - result$3= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _R9_, - calcul_allocation_logement_acc), - _afO_), - _afP_= - function(param) - {var - _af5_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _R__, - Runtime_ocaml_Runtime[13], - param), - _af6_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_R$_,result$3[2]), - _af5_), - _af7_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Sa_, - Runtime_ocaml_Runtime[13], - _af6_); - return caml_call2(Runtime_ocaml_Runtime[27],_Sb_,_af7_)}, - result$4=[0,result$3[1],_afP_]; - if(caml_call2(Runtime_ocaml_Runtime[29],_Sc_,1)) - {var - _afQ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Sd_, - embed_calcul_allocation_logeme$0, - result$4), - traitement_formule$1= - caml_call2(Runtime_ocaml_Runtime[27],_Se_,_afQ_); - return [0,traitement_formule$1[1],traitement_formule$1[2]]} - throw Runtime_ocaml_Runtime[2]; - case 3: - var - location$0=mode_occupation[1], - _afR_=location$0[8], - _afS_=location$0[7]; - try - {var _afT_=location$0[1]; - switch(_afT_[0]) - {case 0:var bailleur$0=_afT_[1],_afU_=bailleur$0[2];break; - case 1: - var _afU_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$395); - break; - default: - var _afU_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$396)}} - catch(_af4_) - {_af4_ = caml_wrap_exception(_af4_); - if(_af4_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Sf_]; - throw _af4_} - var - _afV_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Sg_, - embed_calcul_allocation_logeme$3, - [0, - location$0[2], - ressources_menage_avec_arrondi, - location$0[3], - date_courante, - nombre_personnes_a_charge, - situation_familiale_calcul_apl, - zone, - location$0[4], - location$0[6], - type_aide, - location$0[5], - _afU_, - _afS_, - _afR_]), - result$5= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Sh_, - calcul_allocation_logement_loc), - _afV_), - _afW_= - function(param) - {var - _af1_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Si_, - Runtime_ocaml_Runtime[13], - param), - _af2_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_Sj_,result$5[2]), - _af1_), - _af3_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Sk_, - Runtime_ocaml_Runtime[13], - _af2_); - return caml_call2(Runtime_ocaml_Runtime[27],_Sl_,_af3_)}, - result$6=[0,result$5[1],_afW_]; - if(caml_call2(Runtime_ocaml_Runtime[29],_Sm_,1)) - {var - _afX_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Sn_, - embed_calcul_allocation_logeme, - result$6), - traitement_formule$2= - caml_call2(Runtime_ocaml_Runtime[27],_So_,_afX_); - return [0,traitement_formule$2[1],traitement_formule$2[2]]} - throw Runtime_ocaml_Runtime[2]; - default: - var - proprietaire$0=mode_occupation[1], - _afY_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Sp_, - embed_calcul_allocation_logeme$4, - [0, - ressources_menage_avec_arrondi, - nombre_personnes_a_charge, - situation_familiale_calcul_apl, - zone, - date_courante, - proprietaire$0[2], - proprietaire$0[9], - proprietaire$0[11][2], - proprietaire$0[6], - proprietaire$0[7], - proprietaire$0[4], - proprietaire$0[3], - proprietaire$0[8]]), - result$7= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Sq_, - calcul_allocation_logement_acc), - _afY_), - _afZ_= - function(param) - {var - _agd_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Sr_, - Runtime_ocaml_Runtime[13], - param), - _age_= - caml_call1 - (caml_call2(Runtime_ocaml_Runtime[26],_Ss_,result$7[2]), - _agd_), - _agf_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _St_, - Runtime_ocaml_Runtime[13], - _age_); - return caml_call2(Runtime_ocaml_Runtime[27],_Su_,_agf_)}, - result$8=[0,result$7[1],_afZ_]; - if(caml_call2(Runtime_ocaml_Runtime[29],_Sv_,1)) - {var - _af0_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Sw_, - embed_calcul_allocation_logeme$0, - result$8), - traitement_formule$3= - caml_call2(Runtime_ocaml_Runtime[27],_Sx_,_af0_); - return [0,traitement_formule$3[1],traitement_formule$3[2]]} - throw Runtime_ocaml_Runtime[2]}}, - _afs_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Sy_,1)}, - _aft_=caml_call4(Runtime_ocaml_Runtime[63],_Sz_,[0],_afs_,_afr_)} - catch(_afD_) - {_afD_ = caml_wrap_exception(_afD_); - if(_afD_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_RO_]; - throw _afD_} - var - sous_calcul_traitement= - caml_call3 - (Runtime_ocaml_Runtime[28],_SA_,embed_traitement_formule_aide_,_aft_); - function _afu_(param) - {try - {var - _afz_= - function(param$0) - {return caml_call1(sous_calcul_traitement[2],param)}, - _afA_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_SC_,1)}, - _afB_=caml_call4(Runtime_ocaml_Runtime[63],_SD_,[0],_afA_,_afz_); - return _afB_} - catch(_afC_) - {_afC_ = caml_wrap_exception(_afC_); - if(_afC_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_SB_]; - throw _afC_}} - var - traitement_aide_finale= - caml_call3 - (Runtime_ocaml_Runtime[28],_SE_,Runtime_ocaml_Runtime[10],_afu_); - try - {var - _afv_=function(param){return sous_calcul_traitement[1]}, - _afw_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SG_,1)}, - _afx_=caml_call4(Runtime_ocaml_Runtime[63],_SH_,[0],_afw_,_afv_)} - catch(_afy_) - {_afy_ = caml_wrap_exception(_afy_); - if(_afy_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_SF_]; - throw _afy_} - var - aide_finale_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_SI_,Runtime_ocaml_Runtime[13],_afx_); - return [0,aide_finale_formule,traitement_aide_finale]} - function calculette_aides_au_logement(calculette_aides_au_logement_i) - {var - menage=calculette_aides_au_logement_i[1], - demandeur=calculette_aides_au_logement_i[2], - date_courante=calculette_aides_au_logement_i[3], - ressources_menage_prises_en_co=calculette_aides_au_logement_i[4]; - try - {var - _adl_=function(param){return date_courante}, - _adm_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SK_,1)}, - _adn_=caml_call4(Runtime_ocaml_Runtime[63],_SL_,[0],_adm_,_adl_), - eligibilite_allocation_logemen$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_SM_,Runtime_ocaml_Runtime[16],_adn_)} - catch(_afh_) - {_afh_ = caml_wrap_exception(_afh_); - if(_afh_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_SJ_]; - throw _afh_} - try - {var - _ado_=function(param){return menage}, - _adp_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SO_,1)}, - _adq_=caml_call4(Runtime_ocaml_Runtime[63],_SP_,[0],_adp_,_ado_), - eligibilite_allocation_logemen$1= - caml_call3(Runtime_ocaml_Runtime[28],_SQ_,embed_menage,_adq_)} - catch(_afg_) - {_afg_ = caml_wrap_exception(_afg_); - if(_afg_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_SN_]; - throw _afg_} - try - {var - _adr_=function(param){return demandeur}, - _ads_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SS_,1)}, - _adt_=caml_call4(Runtime_ocaml_Runtime[63],_ST_,[0],_ads_,_adr_), - eligibilite_allocation_logemen$2= - caml_call3(Runtime_ocaml_Runtime[28],_SU_,embed_demandeur,_adt_)} - catch(_aff_) - {_aff_ = caml_wrap_exception(_aff_); - if(_aff_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_SR_]; - throw _aff_} - try - {var - _adu_=function(param){return 0}, - _adv_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SW_,1)}, - _adw_=caml_call4(Runtime_ocaml_Runtime[63],_SX_,[0],_adv_,_adu_), - eligibilite_allocation_logemen$3= - caml_call3 - (Runtime_ocaml_Runtime[28],_SY_,Runtime_ocaml_Runtime[12],_adw_)} - catch(_afe_) - {_afe_ = caml_wrap_exception(_afe_); - if(_afe_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_SV_]; - throw _afe_} - var - _adx_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_SZ_,eligibilite_allocation_logemen), - [0, - eligibilite_allocation_logemen$0, - eligibilite_allocation_logemen$1, - eligibilite_allocation_logemen$2, - eligibilite_allocation_logemen$3]), - result=caml_call2(Runtime_ocaml_Runtime[27],_S0_,_adx_), - eligibilite_allocation_logemen$4=result[1], - eligibilite_allocation_logemen$5=result[2]; - try - {var - _ady_=function(param){return menage}, - _adz_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_S2_,1)}, - _adA_=caml_call4(Runtime_ocaml_Runtime[63],_S3_,[0],_adz_,_ady_), - eligibilite_aide_personnalisee$0= - caml_call3(Runtime_ocaml_Runtime[28],_S4_,embed_menage,_adA_)} - catch(_afd_) - {_afd_ = caml_wrap_exception(_afd_); - if(_afd_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_S1_]; - throw _afd_} - try - {var - _adB_=function(param){return demandeur}, - _adC_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_S6_,1)}, - _adD_=caml_call4(Runtime_ocaml_Runtime[63],_S7_,[0],_adC_,_adB_), - eligibilite_aide_personnalisee$1= - caml_call3(Runtime_ocaml_Runtime[28],_S8_,embed_demandeur,_adD_)} - catch(_afc_) - {_afc_ = caml_wrap_exception(_afc_); - if(_afc_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_S5_]; - throw _afc_} - try - {var - _adE_=function(param){return date_courante}, - _adF_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_S__,1)}, - _adG_=caml_call4(Runtime_ocaml_Runtime[63],_S$_,[0],_adF_,_adE_), - eligibilite_aide_personnalisee$2= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ta_,Runtime_ocaml_Runtime[16],_adG_)} - catch(_afb_) - {_afb_ = caml_wrap_exception(_afb_); - if(_afb_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_S9_]; - throw _afb_} - var - _adH_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Tb_,eligibilite_aide_personnalisee), - [0, - eligibilite_aide_personnalisee$0, - eligibilite_aide_personnalisee$1, - eligibilite_aide_personnalisee$2]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_Tc_,_adH_), - eligibilite_aide_personnalisee$3=result$0[2], - eligibilite_aide_personnalisee$4=result$0[3], - eligibilite_aide_personnalisee$5=result$0[4]; - try - {var - _adI_=function(param){return menage[2][3]}, - _adJ_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Te_,1)}, - _adK_=caml_call4(Runtime_ocaml_Runtime[63],_Tf_,[0],_adJ_,_adI_), - calcul_allocation_logement_dot= - caml_call3 - (Runtime_ocaml_Runtime[28],_Tg_,embed_mode_occupation,_adK_)} - catch(_afa_) - {_afa_ = caml_wrap_exception(_afa_); - if(_afa_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Td_]; - throw _afa_} - try - {var - _adL_=function(param){return ressources_menage_prises_en_co}, - _adM_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ti_,1)}, - _adN_=caml_call4(Runtime_ocaml_Runtime[63],_Tj_,[0],_adM_,_adL_), - calcul_allocation_logement_dot$0= - caml_call3 - (Runtime_ocaml_Runtime[28],_Tk_,Runtime_ocaml_Runtime[13],_adN_)} - catch(_ae$_) - {_ae$_ = caml_wrap_exception(_ae$_); - if(_ae$_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Th_]; - throw _ae$_} - try - {var - _adO_=function(param){return menage[5]}, - _adP_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Tm_,1)}, - _adQ_=caml_call4(Runtime_ocaml_Runtime[63],_Tn_,[0],_adP_,_adO_), - calcul_allocation_logement_dot$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_To_,embed_situation_familiale,_adQ_)} - catch(_ae__) - {_ae__ = caml_wrap_exception(_ae__); - if(_ae__ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Tl_]; - throw _ae__} - try - {var - _adR_=function(param){return eligibilite_allocation_logemen$5}, - _adS_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Tq_,1)}, - _adT_=caml_call4(Runtime_ocaml_Runtime[63],_Tr_,[0],_adS_,_adR_), - calcul_allocation_logement_dot$2= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ts_,Runtime_ocaml_Runtime[14],_adT_)} - catch(_ae9_) - {_ae9_ = caml_wrap_exception(_ae9_); - if(_ae9_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Tp_]; - throw _ae9_} - try - {var - _adU_=function(param){return menage[2][9]}, - _adV_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Tu_,1)}, - _adW_=caml_call4(Runtime_ocaml_Runtime[63],_Tv_,[0],_adV_,_adU_), - calcul_allocation_logement_dot$3= - caml_call3 - (Runtime_ocaml_Runtime[28],_Tw_,embed_zone_d_habitation,_adW_)} - catch(_ae8_) - {_ae8_ = caml_wrap_exception(_ae8_); - if(_ae8_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Tt_]; - throw _ae8_} - try - {var - _adX_=function(param){return date_courante}, - _adY_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ty_,1)}, - _adZ_=caml_call4(Runtime_ocaml_Runtime[63],_Tz_,[0],_adY_,_adX_), - calcul_allocation_logement_dot$4= - caml_call3 - (Runtime_ocaml_Runtime[28],_TA_,Runtime_ocaml_Runtime[16],_adZ_)} - catch(_ae7_) - {_ae7_ = caml_wrap_exception(_ae7_); - if(_ae7_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Tx_]; - throw _ae7_} - try - {var - _ad0_= - function(param) - {switch(eligibilite_allocation_logemen$4[0]) - {case 0:return _TC_;case 1:return _TD_;default:return _TE_}}, - _ad1_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TF_,1)}, - _ad2_=caml_call4(Runtime_ocaml_Runtime[63],_TG_,[0],_ad1_,_ad0_), - calcul_allocation_logement_dot$5= - caml_call3 - (Runtime_ocaml_Runtime[28], - _TH_, - embed_type_aides_personnelle_l, - _ad2_)} - catch(_ae6_) - {_ae6_ = caml_wrap_exception(_ae6_); - if(_ae6_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_TB_]; - throw _ae6_} - var - _ad3_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_TI_,calcul_allocation_logement), - [0, - calcul_allocation_logement_dot, - calcul_allocation_logement_dot$0, - calcul_allocation_logement_dot$1, - calcul_allocation_logement_dot$2, - calcul_allocation_logement_dot$3, - calcul_allocation_logement_dot$4, - calcul_allocation_logement_dot$5]), - result$1=caml_call2(Runtime_ocaml_Runtime[27],_TJ_,_ad3_), - calcul_allocation_logement_dot$6=result$1[1], - calcul_allocation_logement_dot$7=result$1[2]; - try - {var - _ad4_=function(param){return menage[2][3]}, - _ad5_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TL_,1)}, - _ad6_=caml_call4(Runtime_ocaml_Runtime[63],_TM_,[0],_ad5_,_ad4_), - calcul_aide_personnalisee_loge= - caml_call3 - (Runtime_ocaml_Runtime[28],_TN_,embed_mode_occupation,_ad6_)} - catch(_ae5_) - {_ae5_ = caml_wrap_exception(_ae5_); - if(_ae5_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_TK_]; - throw _ae5_} - try - {var - _ad7_=function(param){return _TP_}, - _ad8_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TQ_,1)}, - _ad9_=caml_call4(Runtime_ocaml_Runtime[63],_TR_,[0],_ad8_,_ad7_), - calcul_aide_personnalisee_loge$0= - caml_call3 - (Runtime_ocaml_Runtime[28], - _TS_, - embed_type_aides_personnelle_l, - _ad9_)} - catch(_ae4_) - {_ae4_ = caml_wrap_exception(_ae4_); - if(_ae4_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_TO_]; - throw _ae4_} - try - {var - _ad__=function(param){return ressources_menage_prises_en_co}, - _ad$_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TU_,1)}, - _aea_=caml_call4(Runtime_ocaml_Runtime[63],_TV_,[0],_ad$_,_ad__), - calcul_aide_personnalisee_loge$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_TW_,Runtime_ocaml_Runtime[13],_aea_)} - catch(_ae3_) - {_ae3_ = caml_wrap_exception(_ae3_); - if(_ae3_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_TT_]; - throw _ae3_} - try - {var - _aeb_=function(param){return menage[5]}, - _aec_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TY_,1)}, - _aed_=caml_call4(Runtime_ocaml_Runtime[63],_TZ_,[0],_aec_,_aeb_), - calcul_aide_personnalisee_loge$3= - caml_call3 - (Runtime_ocaml_Runtime[28],_T0_,embed_situation_familiale,_aed_)} - catch(_ae2_) - {_ae2_ = caml_wrap_exception(_ae2_); - if(_ae2_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_TX_]; - throw _ae2_} - try - {var - _aee_=function(param){return eligibilite_aide_personnalisee$4}, - _aef_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_T2_,1)}, - _aeg_=caml_call4(Runtime_ocaml_Runtime[63],_T3_,[0],_aef_,_aee_), - calcul_aide_personnalisee_loge$4= - caml_call3 - (Runtime_ocaml_Runtime[28],_T4_,Runtime_ocaml_Runtime[14],_aeg_)} - catch(_ae1_) - {_ae1_ = caml_wrap_exception(_ae1_); - if(_ae1_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_T1_]; - throw _ae1_} - try - {var - _aeh_=function(param){return menage[2][9]}, - _aei_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_T6_,1)}, - _aej_=caml_call4(Runtime_ocaml_Runtime[63],_T7_,[0],_aei_,_aeh_), - calcul_aide_personnalisee_loge$5= - caml_call3 - (Runtime_ocaml_Runtime[28],_T8_,embed_zone_d_habitation,_aej_)} - catch(_ae0_) - {_ae0_ = caml_wrap_exception(_ae0_); - if(_ae0_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_T5_]; - throw _ae0_} - try - {var - _aek_=function(param){return date_courante}, - _ael_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_T__,1)}, - _aem_=caml_call4(Runtime_ocaml_Runtime[63],_T$_,[0],_ael_,_aek_), - calcul_aide_personnalisee_loge$6= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ua_,Runtime_ocaml_Runtime[16],_aem_)} - catch(_aeZ_) - {_aeZ_ = caml_wrap_exception(_aeZ_); - if(_aeZ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_T9_]; - throw _aeZ_} - var - _aen_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Ub_,calcul_aide_personnalisee_loge$2), - [0, - calcul_aide_personnalisee_loge, - calcul_aide_personnalisee_loge$0, - calcul_aide_personnalisee_loge$1, - calcul_aide_personnalisee_loge$3, - calcul_aide_personnalisee_loge$4, - calcul_aide_personnalisee_loge$5, - calcul_aide_personnalisee_loge$6]), - result$2=caml_call2(Runtime_ocaml_Runtime[27],_Uc_,_aen_), - calcul_aide_personnalisee_loge$7=result$2[1], - calcul_aide_personnalisee_loge$8=result$2[2]; - try - {var - _aeo_=function(param){return eligibilite_aide_personnalisee$5}, - _aep_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ue_,1)}, - _aeq_=caml_call4(Runtime_ocaml_Runtime[63],_Uf_,[0],_aep_,_aeo_)} - catch(_aeY_) - {_aeY_ = caml_wrap_exception(_aeY_); - if(_aeY_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ud_]; - throw _aeY_} - var - _aer_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), - coefficents_enfants_garde_alte= - caml_call3(Runtime_ocaml_Runtime[28],_Ug_,_aer_,_aeq_); - try - {var - _aes_= - function(param) - {switch(eligibilite_allocation_logemen$4[0]) - {case 0:var _aeX_=0;break; - case 1:var _aeX_=1;break; - default:var _aeX_=1} - return caml_call2 - (Runtime_ocaml_Runtime[84], - eligibilite_aide_personnalisee$3, - _aeX_)}, - _aet_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ui_,1)}, - _aeu_=caml_call4(Runtime_ocaml_Runtime[63],_Uj_,[0],_aet_,_aes_)} - catch(_aeW_) - {_aeW_ = caml_wrap_exception(_aeW_); - if(_aeW_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Uh_]; - throw _aeW_} - var - eligibilite= - caml_call3 - (Runtime_ocaml_Runtime[28],_Uk_,Runtime_ocaml_Runtime[12],_aeu_); - function _aev_(param) - {try - {var - _aeK_= - function(param$0) - {var - _aeO_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Um_, - Runtime_ocaml_Runtime[13], - param), - _aeP_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Un_, - calcul_aide_personnalisee_loge$8), - _aeO_), - _aeQ_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Uo_, - Runtime_ocaml_Runtime[13], - _aeP_), - aide_finale_apl= - caml_call2(Runtime_ocaml_Runtime[27],_Up_,_aeQ_), - _aeR_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Uq_, - Runtime_ocaml_Runtime[13], - param), - _aeS_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Ur_, - calcul_allocation_logement_dot$7), - _aeR_), - _aeT_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Us_, - Runtime_ocaml_Runtime[13], - _aeS_), - aide_finale_al=caml_call2(Runtime_ocaml_Runtime[27],_Ut_,_aeT_); - if(caml_call1(Runtime_ocaml_Runtime[67],eligibilite)) - return param; - switch(eligibilite_allocation_logemen$4[0]) - {case 0:var _aeU_=1;break; - case 1:var _aeU_=0;break; - default:var _aeU_=0} - var _aeV_=caml_call1(Runtime_ocaml_Runtime[67],_aeU_); - return caml_call2 - (Runtime_ocaml_Runtime[83], - eligibilite_aide_personnalisee$3, - _aeV_) - ?caml_call2 - (Runtime_ocaml_Runtime[122],aide_finale_apl,aide_finale_al) - ?aide_finale_apl - :aide_finale_al - :eligibilite_aide_personnalisee$3 - ?aide_finale_apl - :aide_finale_al}, - _aeL_= - function(param) - {return caml_call2(Runtime_ocaml_Runtime[29],_Uu_,1)}, - _aeM_=caml_call4(Runtime_ocaml_Runtime[63],_Uv_,[0],_aeL_,_aeK_); - return _aeM_} - catch(_aeN_) - {_aeN_ = caml_wrap_exception(_aeN_); - if(_aeN_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ul_]; - throw _aeN_}} - var - traitement_aide_finale= - caml_call3 - (Runtime_ocaml_Runtime[28],_Uw_,Runtime_ocaml_Runtime[10],_aev_); - try - {var - _aew_= - function(param) - {if(caml_call1(Runtime_ocaml_Runtime[67],eligibilite)) - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$397); - switch(eligibilite_allocation_logemen$4[0]) - {case 0:var _aeA_=1;break; - case 1:var _aeA_=0;break; - default:var _aeA_=0} - var _aeB_=caml_call1(Runtime_ocaml_Runtime[67],_aeA_); - if - (caml_call2 - (Runtime_ocaml_Runtime[83], - eligibilite_aide_personnalisee$3, - _aeB_)) - {var - _aeC_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Uy_, - Runtime_ocaml_Runtime[13], - calcul_allocation_logement_dot$6), - _aeD_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Uz_, - calcul_allocation_logement_dot$7), - _aeC_), - _aeE_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _UA_, - Runtime_ocaml_Runtime[13], - _aeD_), - _aeF_=caml_call2(Runtime_ocaml_Runtime[27],_UB_,_aeE_), - _aeG_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _UC_, - Runtime_ocaml_Runtime[13], - calcul_aide_personnalisee_loge$7), - _aeH_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _UD_, - calcul_aide_personnalisee_loge$8), - _aeG_), - _aeI_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _UE_, - Runtime_ocaml_Runtime[13], - _aeH_), - _aeJ_=caml_call2(Runtime_ocaml_Runtime[27],_UF_,_aeI_); - return caml_call2(Runtime_ocaml_Runtime[122],_aeJ_,_aeF_) - ?calcul_aide_personnalisee_loge$7 - :calcul_allocation_logement_dot$6} - return eligibilite_aide_personnalisee$3 - ?calcul_aide_personnalisee_loge$7 - :calcul_allocation_logement_dot$6}, - _aex_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_UG_,1)}, - _aey_=caml_call4(Runtime_ocaml_Runtime[63],_UH_,[0],_aex_,_aew_)} - catch(_aez_) - {_aez_ = caml_wrap_exception(_aez_); - if(_aez_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ux_]; - throw _aez_} - var - aide_finale_formule= - caml_call3 - (Runtime_ocaml_Runtime[28],_UI_,Runtime_ocaml_Runtime[13],_aey_); - return [0, - eligibilite, - aide_finale_formule, - traitement_aide_finale, - coefficents_enfants_garde_alte]} - function calculette_aides_au_logement_g(calculette_aides_au_logement_g) - {var - menage=calculette_aides_au_logement_g[1], - demandeur=calculette_aides_au_logement_g[2], - date_courante=calculette_aides_au_logement_g[3], - ressources_menage_prises_en_co=calculette_aides_au_logement_g[4]; - try - {var - _acd_= - function(param) - {var - _ade_=menage[7], - _adf_=menage[6], - _adg_=menage[5], - _adh_=menage[4], - _adi_=menage[3]; - function _adj_(personne_a_charge) - {if(0 === personne_a_charge[0]) - {var enfant=personne_a_charge[1];return 0 === enfant[7][0]?1:0} - return 1} - var _adk_=caml_call2(Runtime_ocaml_Runtime[90],_adj_,_adi_); - return [0,menage[1],menage[2],_adk_,_adh_,_adg_,_adf_,_ade_]}, - _ace_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_UK_,1)}, - _acf_=caml_call4(Runtime_ocaml_Runtime[63],_UL_,[0],_ace_,_acd_)} - catch(_add_) - {_add_ = caml_wrap_exception(_add_); - if(_add_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_UJ_]; - throw _add_} - var - menage_sans_enfants_garde_alte= - caml_call3(Runtime_ocaml_Runtime[28],_UM_,embed_menage,_acf_); - try - {var - _acg_=function(param){return menage}, - _ach_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_UO_,1)}, - _aci_=caml_call4(Runtime_ocaml_Runtime[63],_UP_,[0],_ach_,_acg_), - calculette_dot_menage= - caml_call3(Runtime_ocaml_Runtime[28],_UQ_,embed_menage,_aci_)} - catch(_adc_) - {_adc_ = caml_wrap_exception(_adc_); - if(_adc_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_UN_]; - throw _adc_} - try - {var - _acj_=function(param){return demandeur}, - _ack_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_US_,1)}, - _acl_=caml_call4(Runtime_ocaml_Runtime[63],_UT_,[0],_ack_,_acj_), - calculette_dot_demandeur= - caml_call3(Runtime_ocaml_Runtime[28],_UU_,embed_demandeur,_acl_)} - catch(_adb_) - {_adb_ = caml_wrap_exception(_adb_); - if(_adb_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_UR_]; - throw _adb_} - try - {var - _acm_=function(param){return date_courante}, - _acn_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_UW_,1)}, - _aco_=caml_call4(Runtime_ocaml_Runtime[63],_UX_,[0],_acn_,_acm_), - calculette_dot_date_courante= - caml_call3 - (Runtime_ocaml_Runtime[28],_UY_,Runtime_ocaml_Runtime[16],_aco_)} - catch(_ada_) - {_ada_ = caml_wrap_exception(_ada_); - if(_ada_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_UV_]; - throw _ada_} - try - {var - _acp_=function(param){return ressources_menage_prises_en_co}, - _acq_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_U0_,1)}, - _acr_=caml_call4(Runtime_ocaml_Runtime[63],_U1_,[0],_acq_,_acp_), - calculette_dot_ressources_mena= - caml_call3 - (Runtime_ocaml_Runtime[28],_U2_,Runtime_ocaml_Runtime[13],_acr_)} - catch(_ac$_) - {_ac$_ = caml_wrap_exception(_ac$_); - if(_ac$_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_UZ_]; - throw _ac$_} - var - _acs_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_U3_,calculette_aides_au_logement), - [0, - calculette_dot_menage, - calculette_dot_demandeur, - calculette_dot_date_courante, - calculette_dot_ressources_mena]), - result=caml_call2(Runtime_ocaml_Runtime[27],_U4_,_acs_), - calculette_dot_eligibilite=result[1], - calculette_dot_aide_finale_for=result[2], - calculette_dot_traitement_aide=result[3], - calculette_dot_coefficents_enf=result[4]; - try - {var - _act_=function(param){return menage_sans_enfants_garde_alte}, - _acu_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_U6_,1)}, - _acv_=caml_call4(Runtime_ocaml_Runtime[63],_U7_,[0],_acu_,_act_), - calculette_sans_garde_alternee= - caml_call3(Runtime_ocaml_Runtime[28],_U8_,embed_menage,_acv_)} - catch(_ac__) - {_ac__ = caml_wrap_exception(_ac__); - if(_ac__ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_U5_]; - throw _ac__} - try - {var - _acw_=function(param){return demandeur}, - _acx_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_U__,1)}, - _acy_=caml_call4(Runtime_ocaml_Runtime[63],_U$_,[0],_acx_,_acw_), - calculette_sans_garde_alternee$0= - caml_call3(Runtime_ocaml_Runtime[28],_Va_,embed_demandeur,_acy_)} - catch(_ac9_) - {_ac9_ = caml_wrap_exception(_ac9_); - if(_ac9_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_U9_]; - throw _ac9_} - try - {var - _acz_=function(param){return date_courante}, - _acA_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vc_,1)}, - _acB_=caml_call4(Runtime_ocaml_Runtime[63],_Vd_,[0],_acA_,_acz_), - calculette_sans_garde_alternee$1= - caml_call3 - (Runtime_ocaml_Runtime[28],_Ve_,Runtime_ocaml_Runtime[16],_acB_)} - catch(_ac8_) - {_ac8_ = caml_wrap_exception(_ac8_); - if(_ac8_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Vb_]; - throw _ac8_} - try - {var - _acC_=function(param){return ressources_menage_prises_en_co}, - _acD_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vg_,1)}, - _acE_=caml_call4(Runtime_ocaml_Runtime[63],_Vh_,[0],_acD_,_acC_), - calculette_sans_garde_alternee$2= - caml_call3 - (Runtime_ocaml_Runtime[28],_Vi_,Runtime_ocaml_Runtime[13],_acE_)} - catch(_ac7_) - {_ac7_ = caml_wrap_exception(_ac7_); - if(_ac7_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Vf_]; - throw _ac7_} - var - _acF_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Vj_,calculette_aides_au_logement), - [0, - calculette_sans_garde_alternee, - calculette_sans_garde_alternee$0, - calculette_sans_garde_alternee$1, - calculette_sans_garde_alternee$2]), - result$0=caml_call2(Runtime_ocaml_Runtime[27],_Vk_,_acF_), - calculette_sans_garde_alternee$3=result$0[2]; - try - {var - _acG_=function(param){return calculette_dot_eligibilite}, - _acH_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vm_,1)}, - _acI_=caml_call4(Runtime_ocaml_Runtime[63],_Vn_,[0],_acH_,_acG_)} - catch(_ac6_) - {_ac6_ = caml_wrap_exception(_ac6_); - if(_ac6_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Vl_]; - throw _ac6_} - var - eligibilite= - caml_call3 - (Runtime_ocaml_Runtime[28],_Vo_,Runtime_ocaml_Runtime[12],_acI_); - try - {var - _acJ_=function(param){return calculette_dot_coefficents_enf}, - _acK_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vq_,1)}, - _acL_=caml_call4(Runtime_ocaml_Runtime[63],_Vr_,[0],_acK_,_acJ_)} - catch(_ac5_) - {_ac5_ = caml_wrap_exception(_ac5_); - if(_ac5_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Vp_]; - throw _ac5_} - var - _acM_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), - coefficents_enfants_garde_alte= - caml_call3(Runtime_ocaml_Runtime[28],_Vs_,_acM_,_acL_); - try - {var - _acN_= - function(param) - {var - _acR_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$398), - _acS_= - caml_call1 - (Runtime_ocaml_Runtime[68],coefficents_enfants_garde_alte); - if(caml_call2(Runtime_ocaml_Runtime[86],_acS_,_acR_)) - var _acT_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$399); - else - var - _acY_= - caml_call1 - (Runtime_ocaml_Runtime[68],coefficents_enfants_garde_alte), - _acZ_=caml_call1(Runtime_ocaml_Runtime[69],_acY_), - _ac0_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$400), - _ac1_= - function(sum1,sum2) - {return caml_call2(Runtime_ocaml_Runtime[92],sum1,sum2)}, - _ac2_= - caml_call3 - (Runtime_ocaml_Runtime[88], - _ac1_, - _ac0_, - coefficents_enfants_garde_alte), - _ac3_=caml_call2(Runtime_ocaml_Runtime[107],_ac2_,_acZ_), - _ac4_= - caml_call2 - (Runtime_ocaml_Runtime[98], - calculette_dot_aide_finale_for, - calculette_sans_garde_alternee$3), - _acT_=caml_call2(Runtime_ocaml_Runtime[104],_ac4_,_ac3_); - var - _acU_= - caml_call2 - (Runtime_ocaml_Runtime[93], - calculette_sans_garde_alternee$3, - _acT_), - _acV_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Vu_, - Runtime_ocaml_Runtime[13], - _acU_), - _acW_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Vv_, - calculette_dot_traitement_aide), - _acV_), - _acX_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Vw_, - Runtime_ocaml_Runtime[13], - _acW_); - return caml_call2(Runtime_ocaml_Runtime[27],_Vx_,_acX_)}, - _acO_= - function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vy_,1)}, - _acP_=caml_call4(Runtime_ocaml_Runtime[63],_Vz_,[0],_acO_,_acN_)} - catch(_acQ_) - {_acQ_ = caml_wrap_exception(_acQ_); - if(_acQ_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Vt_]; - throw _acQ_} - var - aide_finale= - caml_call3 - (Runtime_ocaml_Runtime[28],_VA_,Runtime_ocaml_Runtime[13],_acP_); - return [0,eligibilite,aide_finale]} - var - Law_source_Aides_logement= - [0, - TypePret, - embed_type_pret, - TitulairePret, - embed_titulaire_pret, - TypeTravauxLogementD83215, - embed_type_travaux_logement_d8, - TypeTravauxLogementR8425, - embed_type_travaux_logement_r8, - AmelioreParOccupant, - embed_ameliore_par_occupant, - LimiteTranche, - embed_limite_tranche, - LimiteTrancheDecimal, - embed_limite_tranche_decimal, - PrestationRecue, - embed_prestation_recue, - ParentOuAutre, - embed_parent_ou_autre, - SituationGardeAlternee, - embed_situation_garde_alternee, - Parente, - embed_parente, - DateDeNaissanceOuMoisDeGrosses, - embed_date_de_naissance_ou_moi, - ZoneDHabitation, - embed_zone_d_habitation, - PaiementLogementDistinctProfes, - embed_paiement_logement_distin, - VersementA, - embed_versement_a, - DepenseLogement, - embed_depense_logement, - ModeOccupationImpaye, - embed_mode_occupation_impaye, - TypeEligibiliteAllocationLogem, - embed_type_eligibilite_allocat, - TypeAidesPersonnelleLogement, - embed_type_aides_personnelle_l, - SituationFamiliale, - embed_situation_familiale, - PriseEnCharge$0, - embed_prise_en_charge$0, - TypeLogementFoyer, - embed_type_logement_foyer, - CategorieEquivalenceLoyerAlloc, - embed_categorie_equivalence_lo, - SituationFamilialeCalculAPL, - embed_situation_familiale_calc, - Collectivite$0, - embed_collectivite$0, - PriseEnChargeEnfant, - embed_prise_en_charge_enfant, - SituationObligationScolaire$0, - embed_situation_obligation_sco$0, - ElementPrestationsFamiliales$0, - embed_element_prestations_fami$0, - ConventionBailleurSocial, - embed_convention_bailleur_soci, - ConventionANHA, - embed_convention_a_n_h_a, - PersonneSousLocation, - embed_personne_sous_location, - Patrimoine, - embed_patrimoine, - ConditionsEtrangers, - embed_conditions_etrangers, - PersonneVivantHabituellementAu, - embed_personne_vivant_habituel, - EligibiliteAidePersonnaliseeLo, - embed_eligibilite_aide_personn, - EligibilitePrimeDeDemenagement, - embed_eligibilite_prime_de_dem, - RessourcesAidesPersonnelleLoge, - embed_ressources_aides_personn, - ContributionsSocialesAidesPers, - embed_contributions_sociales_a, - CalculAidePersonnaliseeLogemen, - embed_calcul_aide_personnalise, - CalculEquivalenceLoyerMinimale, - embed_calcul_equivalence_loyer, - CalculNombrePartLogementFoyer, - embed_calcul_nombre_part_logem, - CalculAidePersonnaliseeLogemen$0, - embed_calcul_aide_personnalise$0, - CalculNombrePartsAccessionProp, - embed_calcul_nombre_parts_acce, - CalculAidePersonnaliseeLogemen$1, - embed_calcul_aide_personnalise$1, - TraitementFormuleAideFinale, - embed_traitement_formule_aide_, - CalculAidePersonnaliseeLogemen$2, - embed_calcul_aide_personnalise$2, - InfosChangementLogementD8424, - embed_infos_changement_logemen, - CalculAllocationLogementLocati, - embed_calcul_allocation_logeme, - CalculAllocationLogementAccess, - embed_calcul_allocation_logeme$0, - CalculAllocationLogementFoyer, - embed_calcul_allocation_logeme$1, - CalculAllocationLogement, - embed_calcul_allocation_logeme$2, - OuvertureDroitsRetraite, - embed_ouverture_droits_retrait, - ImpayeDepenseLogement, - embed_impaye_depense_logement, - CalculetteAidesAuLogement, - embed_calculette_aides_au_loge, - CalculetteAidesAuLogementGarde, - embed_calculette_aides_au_loge$0, - BaseMensuelleAllocationsFamili$1, - embed_base_mensuelle_allocatio$1, - Smic$0, - embed_smic$0, - Pret, - embed_pret, - NeufOuAncien, - embed_neuf_ou_ancien, - TrancheRevenu, - embed_tranche_revenu, - TrancheRevenuDecimal, - embed_tranche_revenu_decimal, - AutrePersonneACharge, - embed_autre_personne_a_charge, - DateNaissanceTroisiemeOuDernie, - embed_date_naissance_troisieme, - EligibiliteAllocationLogement, - embed_eligibilite_allocation_l, - LogementFoyer, - embed_logement_foyer, - EnfantPrestationsFamiliales, - embed_enfant_prestations_famil, - EnfantACharge, - embed_enfant_a_charge, - TypeBailleur, - embed_type_bailleur, - LoueOuSousLoueADesTiers, - embed_loue_ou_sous_loue_a_des_, - Nationalite, - embed_nationalite, - ChangementLogementD8424, - embed_changement_logement_d842, - Proprietaire, - embed_proprietaire, - InformationsPrimeDeDemenagemen, - embed_informations_prime_de_de, - EligibilitePrestationsFamilial, - embed_eligibilite_prestations_, - PersonneACharge, - embed_personne_a_charge, - Demandeur, - embed_demandeur, - Location, - embed_location, - EligibiliteAidesPersonnelleLog, - embed_eligibilite_aides_person, - CategorieCalculAPL, - embed_categorie_calcul_a_p_l, - ModeOccupation, - embed_mode_occupation, - Logement, - embed_logement, - Menage, - embed_menage, - EligibiliteAidesPersonnelleLog$0, - embed_eligibilite_aides_person$0, - EligibiliteAidePersonnaliseeLo$0, - embed_eligibilite_aide_personn$0, - EligibiliteAllocationLogementI, - embed_eligibilite_allocation_l$0, - EligibilitePrimeDeDemenagement$0, - embed_eligibilite_prime_de_dem$0, - RessourcesAidesPersonnelleLoge$0, - embed_ressources_aides_personn$0, - ContributionsSocialesAidesPers$0, - embed_contributions_sociales_a$0, - CalculAidePersonnaliseeLogemen$3, - embed_calcul_aide_personnalise$3, - CalculEquivalenceLoyerMinimale$0, - embed_calcul_equivalence_loyer$0, - CalculNombrePartLogementFoyerI, - embed_calcul_nombre_part_logem$0, - CalculAidePersonnaliseeLogemen$4, - embed_calcul_aide_personnalise$4, - CalculNombrePartsAccessionProp$0, - embed_calcul_nombre_parts_acce$0, - CalculAidePersonnaliseeLogemen$5, - embed_calcul_aide_personnalise$5, - CalculAidePersonnaliseeLogemen$6, - embed_calcul_aide_personnalise$6, - CalculAllocationLogementLocati$0, - embed_calcul_allocation_logeme$3, - CalculAllocationLogementAccess$0, - embed_calcul_allocation_logeme$4, - CalculAllocationLogementFoyerI, - embed_calcul_allocation_logeme$5, - CalculAllocationLogementIn, - embed_calcul_allocation_logeme$6, - OuvertureDroitsRetraiteIn, - embed_ouverture_droits_retrait$0, - ImpayeDepenseLogementIn, - embed_impaye_depense_logement_, - CalculetteAidesAuLogementIn, - embed_calculette_aides_au_loge$1, - CalculetteAidesAuLogementGarde$0, - embed_calculette_aides_au_loge$2, - BaseMensuelleAllocationsFamili$2, - embed_base_mensuelle_allocatio$2, - SmicIn$0, - embed_smic_in$0, - EligibilitePrestationsFamilial$0, - embed_eligibilite_prestations_$0, - contributions_sociales_aides_p, - calcul_equivalence_loyer_minim, - calcul_nombre_part_logement_fo, - calcul_nombre_parts_accession_, - ouverture_droits_retraite, - impaye_depense_logement, - base_mensuelle_allocations_fam$5, - smic$1, - calcul_aide_personnalisee_loge, - calcul_aide_personnalisee_loge$0, - calcul_aide_personnalisee_loge$1, - eligibilite_aides_personnelle_, - ressources_aides_personnelle_l, - eligibilite_prestations_famili, - calcul_allocation_logement_loc, - calcul_allocation_logement_foy, - calcul_allocation_logement_acc, - calcul_aide_personnalisee_loge$2, - eligibilite_prime_de_demenagem, - eligibilite_aide_personnalisee, - eligibilite_allocation_logemen, - calcul_allocation_logement, - calculette_aides_au_logement, - calculette_aides_au_logement_g]; - caml_register_global - (8576,Law_source_Aides_logement,"Law_source__Aides_logement"); - function type_pret_to_jsoo(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"D331_32","payload":arg}; - case 1: - var arg$0=param[1];return {"kind":"D331_63_64","payload":arg$0}; - case 2:var arg$1=param[1];return {"kind":"D331_59_8","payload":arg$1}; - case 3:var arg$2=param[1];return {"kind":"D331_76_1","payload":arg$2}; - default:var arg$3=param[1];return {"kind":"Autre","payload":arg$3}}} - function type_pret_of_jsoo(type_pret) - {var cons=caml_string_of_jsstring(type_pret.kind); - if(caml_string_notequal(cons,cst_Autre$2)) - {if(caml_string_notequal(cons,cst_D331_32$0)) - {if(caml_string_notequal(cons,cst_D331_59_8$0)) - {if(caml_string_notequal(cons,cst_D331_63_64$0)) - {if(caml_string_notequal(cons,cst_D331_76_1$0)) - {var _acc_=caml_call2(Stdlib_Printf[4],_VB_,cons); - return caml_call1(Stdlib[2],_acc_)} - return _VC_} - return _VD_} - return _VE_} - return _VF_} - return _VG_} - function titulaire_pret_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1];return {"kind":"Demandeur","payload":arg}} - var arg$0=param[1]; - return {"kind":"VendeurQuandDemandeurAContratLocationAccession", - "payload":arg$0}} - function titulaire_pret_of_jsoo(titulaire_pret) - {var cons=caml_string_of_jsstring(titulaire_pret.kind); - if(caml_string_notequal(cons,cst_Demandeur$0)) - {if(caml_string_notequal(cons,cst_VendeurQuandDemandeurACont$0)) - {var _acb_=caml_call2(Stdlib_Printf[4],_VH_,cons); - return caml_call1(Stdlib[2],_acb_)} - return _VI_} - return _VJ_} - function type_travaux_logement_d832_15_(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"TravauxPourAcquisitionD832_15_1","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"TravauxSurLogementDejaAcquisD832_15_2", - "payload":arg$0}; - default: - var arg$1=param[1];return {"kind":"PasDeTravaux","payload":arg$1}}} - function type_travaux_logement_d832_15_$0(type_travaux_logement_d832_15) - {var cons=caml_string_of_jsstring(type_travaux_logement_d832_15.kind); - if(caml_string_notequal(cons,cst_PasDeTravaux$1)) - {if(caml_string_notequal(cons,cst_TravauxPourAcquisitionD832$0)) - {if(caml_string_notequal(cons,cst_TravauxSurLogementDejaAcqu)) - {var _aca_=caml_call2(Stdlib_Printf[4],_VK_,cons); - return caml_call1(Stdlib[2],_aca_)} - return _VL_} - return _VM_} - return _VN_} - function type_travaux_logement_r842_5_t(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"ObjectifDecenceLogement","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"PrevuDansListeR321_15","payload":arg$0}; - case 2: - var arg$1=param[1]; - return {"kind":"AgrandirOuRendreHabitableD331_63","payload":arg$1}; - default: - var arg$2=param[1];return {"kind":"PasDeTravaux","payload":arg$2}}} - function type_travaux_logement_r842_5_o(type_travaux_logement_r842_5) - {var cons=caml_string_of_jsstring(type_travaux_logement_r842_5.kind); - if(caml_string_notequal(cons,cst_AgrandirOuRendreHabitableD$0)) - {if(caml_string_notequal(cons,cst_ObjectifDecenceLogement)) - {if(caml_string_notequal(cons,cst_PasDeTravaux$2)) - {if(caml_string_notequal(cons,cst_PrevuDansListeR321_15)) - {var _ab$_=caml_call2(Stdlib_Printf[4],_VO_,cons); - return caml_call1(Stdlib[2],_ab$_)} - return _VP_} - return _VQ_} - return _VR_} - return _VS_} - function ameliore_par_occupant_to_jsoo(param) - {if(0 === param[0]){var arg=param[1];return {"kind":"Oui","payload":arg}} - var arg$0=param[1]; - return {"kind":"Non","payload":arg$0}} - function ameliore_par_occupant_of_jsoo(ameliore_par_occupant) - {var cons=caml_string_of_jsstring(ameliore_par_occupant.kind); - if(caml_string_notequal(cons,cst_Non$2)) - {if(caml_string_notequal(cons,cst_Oui$1)) - {var _ab__=caml_call2(Stdlib_Printf[4],_VT_,cons); - return caml_call1(Stdlib[2],_ab__)} - return _VU_} - return _VV_} - function limite_tranche_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1],t38=caml_call1(Runtime_ocaml_Runtime[35],arg); - return {"kind":"Revenu","payload":t38}} - var arg$0=param[1]; - return {"kind":"Infini","payload":arg$0}} - function limite_tranche_of_jsoo(limite_tranche) - {var cons=caml_string_of_jsstring(limite_tranche.kind); - if(caml_string_notequal(cons,cst_Infini$1)) - {if(caml_string_notequal(cons,cst_Revenu$1)) - {var _ab8_=caml_call2(Stdlib_Printf[4],_VW_,cons); - return caml_call1(Stdlib[2],_ab8_)} - var - _ab9_= - caml_call1(Runtime_ocaml_Runtime[42],limite_tranche.payload); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_ab9_)]} - return _VX_} - function limite_tranche_decimal_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1],t44=caml_call1(Runtime_ocaml_Runtime[43],arg); - return {"kind":"Revenu","payload":t44}} - var arg$0=param[1]; - return {"kind":"Infini","payload":arg$0}} - function limite_tranche_decimal_of_jsoo(limite_tranche_decimal) - {var cons=caml_string_of_jsstring(limite_tranche_decimal.kind); - if(caml_string_notequal(cons,cst_Infini$2)) - {if(caml_string_notequal(cons,cst_Revenu$2)) - {var _ab7_=caml_call2(Stdlib_Printf[4],_VY_,cons); - return caml_call1(Stdlib[2],_ab7_)} - return [0, - caml_call1 - (Runtime_ocaml_Runtime[42],limite_tranche_decimal.payload)]} - return _VZ_} - function prestation_recue_to_jsoo(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"AllocationsFamiliales","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"ComplementFamilial","payload":arg$0}; - case 2: - var arg$1=param[1]; - return {"kind":"AllocationJeuneEnfant","payload":arg$1}; - case 3: - var arg$2=param[1]; - return {"kind":"AllocationSoutienFamilial","payload":arg$2}; - case 4: - var arg$3=param[1]; - return {"kind":"AllocationSoutienEnfantHandicape","payload":arg$3}; - default: - var arg$4=param[1]; - return {"kind":"AllocationAdulteHandicape","payload":arg$4}}} - function prestation_recue_of_jsoo(prestation_recue) - {var cons=caml_string_of_jsstring(prestation_recue.kind); - if(caml_string_notequal(cons,cst_AllocationAdulteHandicape)) - {if(caml_string_notequal(cons,cst_AllocationJeuneEnfant$0)) - {if(caml_string_notequal(cons,cst_AllocationSoutienEnfantHan$0)) - {if(caml_string_notequal(cons,cst_AllocationSoutienFamilial$3)) - {if(caml_string_notequal(cons,cst_AllocationsFamiliales$3)) - {if(caml_string_notequal(cons,cst_ComplementFamilial$0)) - {var _ab6_=caml_call2(Stdlib_Printf[4],_V0_,cons); - return caml_call1(Stdlib[2],_ab6_)} - return _V1_} - return _V2_} - return _V3_} - return _V4_} - return _V5_} - return _V6_} - function parent_ou_autre_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1],t63=caml_call1(Runtime_ocaml_Runtime[43],arg); - return {"kind":"DemandeurOuConjointOuParentOuViaPartsSocietes", - "payload":t63}} - var arg$0=param[1]; - return {"kind":"Autre","payload":arg$0}} - function parent_ou_autre_of_jsoo(parent_ou_autre) - {var cons=caml_string_of_jsstring(parent_ou_autre.kind); - if(caml_string_notequal(cons,cst_Autre$3)) - {if(caml_string_notequal(cons,cst_DemandeurOuConjointOuParen$0)) - {var _ab5_=caml_call2(Stdlib_Printf[4],_V7_,cons); - return caml_call1(Stdlib[2],_ab5_)} - return [0, - caml_call1(Runtime_ocaml_Runtime[42],parent_ou_autre.payload)]} - return _V8_} - function situation_garde_alternee_to_js(param) - {if(0 === param[0]) - {var arg=param[1];return {"kind":"PasDeGardeAlternee","payload":arg}} - var arg$0=param[1],t71=caml_call1(Runtime_ocaml_Runtime[43],arg$0); - return {"kind":"GardeAlterneeCoefficientPriseEnCharge","payload":t71}} - function situation_garde_alternee_of_js(situation_garde_alternee) - {var cons=caml_string_of_jsstring(situation_garde_alternee.kind); - if(caml_string_notequal(cons,cst_GardeAlterneeCoefficientPr)) - {if(caml_string_notequal(cons,cst_PasDeGardeAlternee)) - {var _ab4_=caml_call2(Stdlib_Printf[4],_V9_,cons); - return caml_call1(Stdlib[2],_ab4_)} - return _V__} - return [1, - caml_call1 - (Runtime_ocaml_Runtime[42],situation_garde_alternee.payload)]} - function parente_to_jsoo(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Ascendant","payload":arg}; - case 1: - var arg$0=param[1];return {"kind":"Descendant","payload":arg$0}; - default: - var arg$1=param[1]; - return {"kind":"CollateralDeuxiemeTroisiemeDegre","payload":arg$1}}} - function parente_of_jsoo(parente) - {var cons=caml_string_of_jsstring(parente.kind); - if(caml_string_notequal(cons,cst_Ascendant$0)) - {if(caml_string_notequal(cons,cst_CollateralDeuxiemeTroisiem)) - {if(caml_string_notequal(cons,cst_Descendant$0)) - {var _ab3_=caml_call2(Stdlib_Printf[4],_V$_,cons); - return caml_call1(Stdlib[2],_ab3_)} - return _Wa_} - return _Wb_} - return _Wc_} - function date_de_naissance_ou_mois_de_g(param) - {switch(param[0]) - {case 0: - var arg=param[1],t82=caml_call1(Runtime_jsoo_Runtime[5],arg); - return {"kind":"DateDeNaissance","payload":t82}; - case 1: - var arg$0=param[1]; - return {"kind":"AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse", - "payload":arg$0}; - default: - var arg$1=param[1]; - return {"kind":"ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse", - "payload":arg$1}}} - function date_de_naissance_ou_mois_de_g$0(date_de_naissance_ou_mois_de_g) - {var cons=caml_string_of_jsstring(date_de_naissance_ou_mois_de_g.kind); - if(caml_string_notequal(cons,cst_ApresPremierJourMoisCivilT)) - {if(caml_string_notequal(cons,cst_AvantPremierJourMoisCivilT$0)) - {if(caml_string_notequal(cons,cst_DateDeNaissance$0)) - {var _ab2_=caml_call2(Stdlib_Printf[4],_Wd_,cons); - return caml_call1(Stdlib[2],_ab2_)} - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - date_de_naissance_ou_mois_de_g.payload)]} - return _We_} - return _Wf_} - function zone_d_habitation_to_jsoo(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Zone1","payload":arg}; - case 1:var arg$0=param[1];return {"kind":"Zone2","payload":arg$0}; - default:var arg$1=param[1];return {"kind":"Zone3","payload":arg$1}}} - function zone_d_habitation_of_jsoo(zone_d_habitation) - {var cons=caml_string_of_jsstring(zone_d_habitation.kind); - if(caml_string_notequal(cons,cst_Zone1$0)) - {if(caml_string_notequal(cons,cst_Zone2$0)) - {if(caml_string_notequal(cons,cst_Zone3$0)) - {var _ab1_=caml_call2(Stdlib_Printf[4],_Wg_,cons); - return caml_call1(Stdlib[2],_ab1_)} - return _Wh_} - return _Wi_} - return _Wj_} - function paiement_logement_distinct_pro(param) - {if(0 === param[0]) - {var arg=param[1],t97=caml_call1(Runtime_ocaml_Runtime[35],arg); - return {"kind":"OuiAvecLoyerOuCharges","payload":t97}} - var arg$0=param[1]; - return {"kind":"Non","payload":arg$0}} - function paiement_logement_distinct_pro$0(paiement_logement_distinct_pro) - {var cons=caml_string_of_jsstring(paiement_logement_distinct_pro.kind); - if(caml_string_notequal(cons,cst_Non$3)) - {if(caml_string_notequal(cons,cst_OuiAvecLoyerOuCharges$0)) - {var _abZ_=caml_call2(Stdlib_Printf[4],_Wk_,cons); - return caml_call1(Stdlib[2],_abZ_)} - var - _ab0_= - caml_call1 - (Runtime_ocaml_Runtime[42],paiement_logement_distinct_pro.payload); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_ab0_)]} - return _Wl_} - function versement_a_to_jsoo(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Bailleur","payload":arg}; - case 1: - var arg$0=param[1];return {"kind":"Beneficiaire","payload":arg$0}; - default: - var arg$1=param[1]; - return {"kind":"EtablissementHabilite","payload":arg$1}}} - function versement_a_of_jsoo(versement_a) - {var cons=caml_string_of_jsstring(versement_a.kind); - if(caml_string_notequal(cons,cst_Bailleur$0)) - {if(caml_string_notequal(cons,cst_Beneficiaire)) - {if(caml_string_notequal(cons,cst_EtablissementHabilite)) - {var _abY_=caml_call2(Stdlib_Printf[4],_Wm_,cons); - return caml_call1(Stdlib[2],_abY_)} - return _Wn_} - return _Wo_} - return _Wp_} - function depense_logement_to_jsoo(param) - {switch(param[0]) - {case 0: - var arg=param[1],t110=caml_call1(Runtime_ocaml_Runtime[35],arg); - return {"kind":"TotalAnnuelEcheances","payload":t110}; - case 1: - var arg$0=param[1],t112=caml_call1(Runtime_ocaml_Runtime[35],arg$0); - return {"kind":"Mensualite","payload":t112}; - default: - var arg$1=param[1],t114=caml_call1(Runtime_ocaml_Runtime[35],arg$1); - return {"kind":"Loyer","payload":t114}}} - function depense_logement_of_jsoo(depense_logement) - {var cons=caml_string_of_jsstring(depense_logement.kind); - if(caml_string_notequal(cons,cst_Loyer$0)) - {if(caml_string_notequal(cons,cst_Mensualite)) - {if(caml_string_notequal(cons,cst_TotalAnnuelEcheances)) - {var _abU_=caml_call2(Stdlib_Printf[4],_Wq_,cons); - return caml_call1(Stdlib[2],_abU_)} - var - _abV_= - caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_abV_)]} - var - _abW_= - caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload); - return [1,caml_call1(Runtime_ocaml_Runtime[33],_abW_)]} - var - _abX_= - caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload); - return [2,caml_call1(Runtime_ocaml_Runtime[33],_abX_)]} - function mode_occupation_impaye_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1];return {"kind":"ImpayeLoyer","payload":arg}} - var arg$0=param[1]; - return {"kind":"ImpayePret","payload":arg$0}} - function mode_occupation_impaye_of_jsoo(mode_occupation_impaye) - {var cons=caml_string_of_jsstring(mode_occupation_impaye.kind); - if(caml_string_notequal(cons,cst_ImpayeLoyer)) - {if(caml_string_notequal(cons,cst_ImpayePret)) - {var _abT_=caml_call2(Stdlib_Printf[4],_Wr_,cons); - return caml_call1(Stdlib[2],_abT_)} - return _Ws_} - return _Wt_} - function type_eligibilite_allocation_lo(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"PasEligible","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"AllocationLogementFamiliale","payload":arg$0}; - default: - var arg$1=param[1]; - return {"kind":"AllocationLogementSociale","payload":arg$1}}} - function type_eligibilite_allocation_lo$0(type_eligibilite_allocation_lo) - {var cons=caml_string_of_jsstring(type_eligibilite_allocation_lo.kind); - if(caml_string_notequal(cons,cst_AllocationLogementFamilial$1)) - {if(caml_string_notequal(cons,cst_AllocationLogementSociale$1)) - {if(caml_string_notequal(cons,cst_PasEligible)) - {var _abS_=caml_call2(Stdlib_Printf[4],_Wu_,cons); - return caml_call1(Stdlib[2],_abS_)} - return _Wv_} - return _Ww_} - return _Wx_} - function type_aides_personnelle_logemen(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"AidePersonnaliseeLogement","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"AllocationLogementFamiliale","payload":arg$0}; - default: - var arg$1=param[1]; - return {"kind":"AllocationLogementSociale","payload":arg$1}}} - function type_aides_personnelle_logemen$0(type_aides_personnelle_logemen) - {var cons=caml_string_of_jsstring(type_aides_personnelle_logemen.kind); - if(caml_string_notequal(cons,cst_AidePersonnaliseeLogement)) - {if(caml_string_notequal(cons,cst_AllocationLogementFamilial$2)) - {if(caml_string_notequal(cons,cst_AllocationLogementSociale$2)) - {var _abR_=caml_call2(Stdlib_Printf[4],_Wy_,cons); - return caml_call1(Stdlib[2],_abR_)} - return _Wz_} - return _WA_} - return _WB_} - function situation_familiale_to_jsoo(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Celibataire","payload":arg}; - case 1: - var arg$0=param[1],t141=caml_call1(Runtime_jsoo_Runtime[5],arg$0); - return {"kind":"Maries","payload":t141}; - case 2:var arg$1=param[1];return {"kind":"Pacses","payload":arg$1}; - case 3:var arg$2=param[1];return {"kind":"Concubins","payload":arg$2}; - case 4: - var arg$3=param[1]; - return {"kind":"CelibataireSepareDeFait","payload":arg$3}; - default: - var arg$4=param[1]; - return {"kind":"ConcubinageDontSepareDeFait","payload":arg$4}}} - function situation_familiale_of_jsoo(situation_familiale) - {var cons=caml_string_of_jsstring(situation_familiale.kind); - if(caml_string_notequal(cons,cst_Celibataire)) - {if(caml_string_notequal(cons,cst_CelibataireSepareDeFait)) - {if(caml_string_notequal(cons,cst_ConcubinageDontSepareDeFai)) - {if(caml_string_notequal(cons,cst_Concubins$0)) - {if(caml_string_notequal(cons,cst_Maries)) - {if(caml_string_notequal(cons,cst_Pacses)) - {var _abQ_=caml_call2(Stdlib_Printf[4],_WC_,cons); - return caml_call1(Stdlib[2],_abQ_)} - return _WD_} - return [1, - caml_call1 - (Runtime_jsoo_Runtime[4],situation_familiale.payload)]} - return _WE_} - return _WF_} - return _WG_} - return _WH_} - function prise_en_charge_to_jsoo$0(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"EffectiveEtPermanente","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"ResidenceAlterneeAllocataireUnique","payload":arg$0}; - default: - var arg$1=param[1]; - return {"kind":"ResidenceAlterneeAllocationsPartagee", - "payload":arg$1}}} - function prise_en_charge_of_jsoo$0(prise_en_charge) - {var cons=caml_string_of_jsstring(prise_en_charge.kind); - if(caml_string_notequal(cons,cst_EffectiveEtPermanente$3)) - {if(caml_string_notequal(cons,cst_ResidenceAlterneeAllocatai)) - {if(caml_string_notequal(cons,cst_ResidenceAlterneeAllocatio)) - {var _abP_=caml_call2(Stdlib_Printf[4],_WI_,cons); - return caml_call1(Stdlib[2],_abP_)} - return _WJ_} - return _WK_} - return _WL_} - function type_logement_foyer_to_jsoo(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"LogementPersonnesAgeesOuHandicapees","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"ResidenceSociale","payload":arg$0}; - case 2: - var arg$1=param[1]; - return {"kind": - "FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995", - "payload":arg$1}; - default:var arg$2=param[1];return {"kind":"Autre","payload":arg$2}}} - function type_logement_foyer_of_jsoo(type_logement_foyer) - {var cons=caml_string_of_jsstring(type_logement_foyer.kind); - if(caml_string_notequal(cons,cst_Autre$4)) - {if(caml_string_notequal(cons,cst_FoyerJeunesTrvailleursOuMi$0)) - {if(caml_string_notequal(cons,cst_LogementPersonnesAgeesOuHa)) - {if(caml_string_notequal(cons,cst_ResidenceSociale)) - {var _abO_=caml_call2(Stdlib_Printf[4],_WM_,cons); - return caml_call1(Stdlib[2],_abO_)} - return _WN_} - return _WO_} - return _WP_} - return _WQ_} - function categorie_equivalence_loyer_al(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"EtudiantLogeEnChambreCROUS","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"EtudiantLogeEnChambreCROUSRehabilitee", - "payload":arg$0}; - case 2: - var arg$1=param[1]; - return {"kind":"PersonnesAgeesSelon3DeD842_16","payload":arg$1}; - default: - var arg$2=param[1];return {"kind":"AutresPersonnes","payload":arg$2}}} - function categorie_equivalence_loyer_al$0(categorie_equivalence_loyer_al) - {var cons=caml_string_of_jsstring(categorie_equivalence_loyer_al.kind); - if(caml_string_notequal(cons,cst_AutresPersonnes$0)) - {if(caml_string_notequal(cons,cst_EtudiantLogeEnChambreCROUS)) - {if(caml_string_notequal(cons,cst_EtudiantLogeEnChambreCROUS$0)) - {if(caml_string_notequal(cons,cst_PersonnesAgeesSelon3DeD842)) - {var _abN_=caml_call2(Stdlib_Printf[4],_WR_,cons); - return caml_call1(Stdlib[2],_abN_)} - return _WS_} - return _WT_} - return _WU_} - return _WV_} - function situation_familiale_calcul_a_p(param) - {if(0 === param[0]) - {var arg=param[1];return {"kind":"PersonneSeule","payload":arg}} - var arg$0=param[1]; - return {"kind":"Couple","payload":arg$0}} - function situation_familiale_calcul_a_p$0(situation_familiale_calcul_a_p) - {var cons=caml_string_of_jsstring(situation_familiale_calcul_a_p.kind); - if(caml_string_notequal(cons,cst_Couple$0)) - {if(caml_string_notequal(cons,cst_PersonneSeule$0)) - {var _abM_=caml_call2(Stdlib_Printf[4],_WW_,cons); - return caml_call1(Stdlib[2],_abM_)} - return _WX_} - return _WY_} - function collectivite_to_jsoo$0(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Guadeloupe","payload":arg}; - case 1:var arg$0=param[1];return {"kind":"Guyane","payload":arg$0}; - case 2: - var arg$1=param[1];return {"kind":"Martinique","payload":arg$1}; - case 3:var arg$2=param[1];return {"kind":"LaReunion","payload":arg$2}; - case 4: - var arg$3=param[1];return {"kind":"SaintBarthelemy","payload":arg$3}; - case 5: - var arg$4=param[1];return {"kind":"SaintMartin","payload":arg$4}; - case 6:var arg$5=param[1];return {"kind":"Metropole","payload":arg$5}; - case 7: - var arg$6=param[1]; - return {"kind":"SaintPierreEtMiquelon","payload":arg$6}; - default:var arg$7=param[1];return {"kind":"Mayotte","payload":arg$7}}} - function collectivite_of_jsoo$0(collectivite) - {var cons=caml_string_of_jsstring(collectivite.kind); - if(caml_string_notequal(cons,cst_Guadeloupe$2)) - {if(caml_string_notequal(cons,cst_Guyane$2)) - {if(caml_string_notequal(cons,cst_LaReunion$0)) - {if(caml_string_notequal(cons,cst_Martinique$2)) - {if(caml_string_notequal(cons,cst_Mayotte$2)) - {if(caml_string_notequal(cons,cst_Metropole$0)) - {if(caml_string_notequal(cons,cst_SaintBarthelemy$0)) - {if(caml_string_notequal(cons,cst_SaintMartin$2)) - {if(caml_string_notequal(cons,cst_SaintPierreEtMiquelon$2)) - {var _abL_=caml_call2(Stdlib_Printf[4],_WZ_,cons); - return caml_call1(Stdlib[2],_abL_)} - return _W0_} - return _W1_} - return _W2_} - return _W3_} - return _W4_} - return _W5_} - return _W6_} - return _W7_} - return _W8_} - function prise_en_charge_enfant_to_jsoo(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"GardeAlterneePartageAllocations","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"GardeAlterneeAllocataireUnique","payload":arg$0}; - case 2: - var arg$1=param[1]; - return {"kind":"EffectiveEtPermanente","payload":arg$1}; - case 3: - var arg$2=param[1]; - return {"kind":"ServicesSociauxAllocationVerseeALaFamille", - "payload":arg$2}; - default: - var arg$3=param[1]; - return {"kind":"ServicesSociauxAllocationVerseeAuxServicesSociaux", - "payload":arg$3}}} - function prise_en_charge_enfant_of_jsoo(prise_en_charge_enfant) - {var cons=caml_string_of_jsstring(prise_en_charge_enfant.kind); - if(caml_string_notequal(cons,cst_EffectiveEtPermanente$4)) - {if(caml_string_notequal(cons,cst_GardeAlterneeAllocataireUn$0)) - {if(caml_string_notequal(cons,cst_GardeAlterneePartageAlloca$0)) - {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$5)) - {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$6)) - {var _abK_=caml_call2(Stdlib_Printf[4],_W9_,cons); - return caml_call1(Stdlib[2],_abK_)} - return _W__} - return _W$_} - return _Xa_} - return _Xb_} - return _Xc_} - function situation_obligation_scolaire_$1(param) - {switch(param[0]) - {case 0:var arg=param[1];return {"kind":"Avant","payload":arg}; - case 1:var arg$0=param[1];return {"kind":"Pendant","payload":arg$0}; - default:var arg$1=param[1];return {"kind":"Apres","payload":arg$1}}} - function situation_obligation_scolaire_$2(situation_obligation_scolaire) - {var cons=caml_string_of_jsstring(situation_obligation_scolaire.kind); - if(caml_string_notequal(cons,cst_Apres$0)) - {if(caml_string_notequal(cons,cst_Avant$2)) - {if(caml_string_notequal(cons,cst_Pendant$2)) - {var _abJ_=caml_call2(Stdlib_Printf[4],_Xd_,cons); - return caml_call1(Stdlib[2],_abJ_)} - return _Xe_} - return _Xf_} - return _Xg_} - function element_prestations_familiales$1(param) - {switch(param[0]) - {case 0: - var arg=param[1]; - return {"kind":"PrestationAccueilJeuneEnfant","payload":arg}; - case 1: - var arg$0=param[1]; - return {"kind":"AllocationsFamiliales","payload":arg$0}; - case 2: - var arg$1=param[1]; - return {"kind":"ComplementFamilial","payload":arg$1}; - case 3: - var arg$2=param[1]; - return {"kind":"AllocationLogement","payload":arg$2}; - case 4: - var arg$3=param[1]; - return {"kind":"AllocationEducationEnfantHandicape","payload":arg$3}; - case 5: - var arg$4=param[1]; - return {"kind":"AllocationSoutienFamilial","payload":arg$4}; - case 6: - var arg$5=param[1]; - return {"kind":"AllocationRentreeScolaire","payload":arg$5}; - default: - var arg$6=param[1]; - return {"kind":"AllocationJournalierePresenceParentale", - "payload":arg$6}}} - function element_prestations_familiales$2(element_prestations_familiales) - {var cons=caml_string_of_jsstring(element_prestations_familiales.kind); - if(caml_string_notequal(cons,cst_AllocationEducationEnfantH$0)) - {if(caml_string_notequal(cons,cst_AllocationJournalierePrese$0)) - {if(caml_string_notequal(cons,cst_AllocationLogement$2)) - {if(caml_string_notequal(cons,cst_AllocationRentreeScolaire$0)) - {if(caml_string_notequal(cons,cst_AllocationSoutienFamilial$4)) - {if(caml_string_notequal(cons,cst_AllocationsFamiliales$4)) - {if(caml_string_notequal(cons,cst_ComplementFamilial$1)) - {if - (caml_string_notequal(cons,cst_PrestationAccueilJeuneEnfa$2)) - {var _abI_=caml_call2(Stdlib_Printf[4],_Xh_,cons); - return caml_call1(Stdlib[2],_abI_)} - return _Xi_} - return _Xj_} - return _Xk_} - return _Xl_} - return _Xm_} - return _Xn_} - return _Xo_} - return _Xp_} - function convention_bailleur_social_to_(convention_bailleur_social) - {var - t237= - caml_call1(Runtime_ocaml_Runtime[35],convention_bailleur_social[2]), - t236=! ! convention_bailleur_social[1]; - return {"conventionneLivreIIITitreVChapIII":t236, - "reductionLoyerSolidaritePercue":t237}} - function convention_bailleur_social_of_(convention_bailleur_social) - {var - _abG_= - caml_call1 - (Runtime_ocaml_Runtime[42], - convention_bailleur_social.reductionLoyerSolidaritePercue), - _abH_=caml_call1(Runtime_ocaml_Runtime[33],_abG_); - return [0, - convention_bailleur_social.conventionneLivreIIITitreVChapIII | 0, - _abH_]} - function convention_a_n_h_a_to_jsoo(convention_a_n_h_a) - {var t240=! ! convention_a_n_h_a[1]; - return {"conventionneLivreIIITitreIIChapISec3":t240}} - function convention_a_n_h_a_of_jsoo(convention_a_n_h_a) - {return [0,convention_a_n_h_a.conventionneLivreIIITitreIIChapISec3 | 0]} - function personne_sous_location_to_jsoo(personne_sous_location) - {var - t243=! ! personne_sous_location[2], - t242=caml_call1(Runtime_jsoo_Runtime[5],personne_sous_location[1]); - return {"dateNaissancePersonneSousLocation":t242, - "conformeArticleL4421":t243}} - function personne_sous_location_of_jsoo(personne_sous_location) - {var _abF_=personne_sous_location.conformeArticleL4421 | 0; - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - personne_sous_location.dateNaissancePersonneSousLocation), - _abF_]} - function patrimoine_to_jsoo(patrimoine) - {var - t247=caml_call1(Runtime_ocaml_Runtime[35],patrimoine[2]), - t246=caml_call1(Runtime_ocaml_Runtime[35],patrimoine[1]); - return {"produisantRevenuPeriodeR82233R8224":t246, - "neProduisantPasRevenuPeriodeR82233R8224":t247}} - function patrimoine_of_jsoo(patrimoine) - {var - _abC_= - caml_call1 - (Runtime_ocaml_Runtime[42], - patrimoine.neProduisantPasRevenuPeriodeR82233R8224), - _abD_=caml_call1(Runtime_ocaml_Runtime[33],_abC_), - _abE_= - caml_call1 - (Runtime_ocaml_Runtime[42], - patrimoine.produisantRevenuPeriodeR82233R8224); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_abE_),_abD_]} - function conditions_etrangers_to_jsoo(conditions_etrangers) - {var t250=! ! conditions_etrangers[1]; - return {"satisfaitConditionsL5122CodeSecuriteSociale":t250}} - function conditions_etrangers_of_jsoo(conditions_etrangers) - {return [0, - conditions_etrangers.satisfaitConditionsL5122CodeSecuriteSociale - | - 0]} - function personne_vivant_habituellement(personne_vivant_habituellement) - {var - t253= - caml_call1 - (Runtime_ocaml_Runtime[35],personne_vivant_habituellement[2]), - t252=! ! personne_vivant_habituellement[1]; - return {"dureeResidenceDurantPeriodeR82231SuperieureA6Mois":t252, - "ressources":t253}} - function personne_vivant_habituellement$0(personne_vivant_habituellement) - {var - _abA_= - caml_call1 - (Runtime_ocaml_Runtime[42],personne_vivant_habituellement.ressources), - _abB_=caml_call1(Runtime_ocaml_Runtime[33],_abA_); - return [0, - personne_vivant_habituellement.dureeResidenceDurantPeriodeR82231SuperieureA6Mois - | - 0, - _abB_]} - function eligibilite_aide_personnalisee$0(eligibilite_aide_personnalisee) - {var _aby_=eligibilite_aide_personnalisee[4]; - function _abz_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)} - var - t259=caml_js_from_array(caml_call2(Stdlib_Array[15],_abz_,_aby_)), - t258= - caml_call1 - (Runtime_ocaml_Runtime[48],eligibilite_aide_personnalisee[3]), - t257=! ! eligibilite_aide_personnalisee[2], - t256= - caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aide_personnalisee[1]); - return {"dateCourante":t256, - "eligibilite":t257, - "nombrePersonnesAChargePrisesEnCompte":t258, - "coefficentsEnfantsGardeAlterneePrisEnCompte":t259}} - function eligibilite_aide_personnalisee$1(eligibilite_aide_personnalisee) - {var - _abt_= - caml_js_to_array - (eligibilite_aide_personnalisee.coefficentsEnfantsGardeAlterneePrisEnCompte); - function _abu_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)} - var - _abv_=caml_call1(caml_call1(Stdlib_Array[15],_abu_),_abt_), - _abw_= - caml_call1 - (Runtime_ocaml_Runtime[49], - eligibilite_aide_personnalisee.nombrePersonnesAChargePrisesEnCompte), - _abx_=eligibilite_aide_personnalisee.eligibilite | 0; - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - eligibilite_aide_personnalisee.dateCourante), - _abx_, - _abw_, - _abv_]} - function eligibilite_prime_de_demenagem$0(eligibilite_prime_de_demenagem) - {var - t264= - caml_call1 - (Runtime_ocaml_Runtime[35],eligibilite_prime_de_demenagem[1]); - return {"montantPrimeDemenagement":t264}} - function eligibilite_prime_de_demenagem$1(eligibilite_prime_de_demenagem) - {var - _abs_= - caml_call1 - (Runtime_ocaml_Runtime[42], - eligibilite_prime_de_demenagem.montantPrimeDemenagement); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_abs_)]} - function ressources_aides_personnelle_l$0(ressources_aides_personnelle_l) - {var - t266= - caml_call1 - (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[1]); - return {"ressourcesPrisesEnCompte":t266}} - function ressources_aides_personnelle_l$1(ressources_aides_personnelle_l) - {var - _abr_= - caml_call1 - (Runtime_ocaml_Runtime[42], - ressources_aides_personnelle_l.ressourcesPrisesEnCompte); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_abr_)]} - function contributions_sociales_aides_p$0(contributions_sociales_aides_p) - {function t268(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _abo_=caml_call1(Runtime_ocaml_Runtime[42],input), - _abp_=caml_call1(Runtime_ocaml_Runtime[33],_abo_), - _abq_=caml_call1(contributions_sociales_aides_p[1],_abp_); - return caml_call1(Runtime_ocaml_Runtime[35],_abq_)})} - return {"montant":caml_js_wrap_meth_callback(t268)}} - function contributions_sociales_aides_p$1(contributions_sociales_aides_p) - {return [0,caml_call1(Stdlib[2],cst_The_function_montant_trans)]} - function calcul_aide_personnalisee_loge$3(calcul_aide_personnalisee_loge) - {function t275(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _abl_=caml_call1(Runtime_ocaml_Runtime[42],input), - _abm_=caml_call1(Runtime_ocaml_Runtime[33],_abl_), - _abn_=caml_call1(calcul_aide_personnalisee_loge[7],_abm_); - return caml_call1(Runtime_ocaml_Runtime[35],_abn_)})} - var - t274= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[6]), - t273= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[5]), - t272= - caml_call1 - (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[4]), - t271= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[3]), - t270= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), - t269= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); - return {"montantForfaitaireChargesD82316":t269, - "plafondLoyerD823162":t270, - "participationMinimale":t271, - "tauxCompositionFamiliale":t272, - "participationPersonnelle":t273, - "aideFinaleFormule":t274, - "traitementAideFinale":caml_js_wrap_meth_callback(t275)}} - function calcul_aide_personnalisee_loge$4(calcul_aide_personnalisee_loge) - {var - _aba_=caml_call1(Stdlib[2],cst_The_function_traitement_ai), - _abb_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.aideFinaleFormule), - _abc_=caml_call1(Runtime_ocaml_Runtime[33],_abb_), - _abd_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.participationPersonnelle), - _abe_=caml_call1(Runtime_ocaml_Runtime[33],_abd_), - _abf_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.tauxCompositionFamiliale), - _abg_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.participationMinimale), - _abh_=caml_call1(Runtime_ocaml_Runtime[33],_abg_), - _abi_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.plafondLoyerD823162), - _abj_=caml_call1(Runtime_ocaml_Runtime[33],_abi_), - _abk_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.montantForfaitaireChargesD82316); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_abk_), - _abj_, - _abh_, - _abf_, - _abe_, - _abc_, - _aba_]} - function calcul_equivalence_loyer_minim$0(calcul_equivalence_loyer_minim) - {var - t282= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_equivalence_loyer_minim[1]); - return {"montant":t282}} - function calcul_equivalence_loyer_minim$1(calcul_equivalence_loyer_minim) - {var - _aa$_= - caml_call1 - (Runtime_ocaml_Runtime[42],calcul_equivalence_loyer_minim.montant); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_aa$_)]} - function calcul_nombre_part_logement_fo$0(calcul_nombre_part_logement_fo) - {var - t284= - caml_call1 - (Runtime_ocaml_Runtime[43],calcul_nombre_part_logement_fo[1]); - return {"nNombrePartsD83225":t284}} - function calcul_nombre_part_logement_fo$1(calcul_nombre_part_logement_fo) - {return [0, - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_nombre_part_logement_fo.nNombrePartsD83225)]} - function calcul_aide_personnalisee_loge$5(calcul_aide_personnalisee_loge) - {function t294(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _aa8_=caml_call1(Runtime_ocaml_Runtime[42],input), - _aa9_=caml_call1(Runtime_ocaml_Runtime[33],_aa8_), - _aa__=caml_call1(calcul_aide_personnalisee_loge[9],_aa9_); - return caml_call1(Runtime_ocaml_Runtime[35],_aa__)})} - var - t293= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[8]), - t292= - caml_call1 - (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[7]), - t291= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[6]), - t290= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[5]), - t289= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[4]), - t288= - caml_call1 - (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[3]), - t287= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), - t286= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); - return {"coefficientMultiplicateurD83225":t286, - "coefficientRD83225":t287, - "nNombrePartsD83225":t288, - "equivalenceLoyerEligible":t289, - "plafondEquivalenceLoyerEligible":t290, - "equivalenceLoyerMinimale":t291, - "coefficientPriseEnChargeD83225":t292, - "aideFinaleFormule":t293, - "traitementAideFinale":caml_js_wrap_meth_callback(t294)}} - function calcul_aide_personnalisee_loge$6(calcul_aide_personnalisee_loge) - {var - _aaU_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$0), - _aaV_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.aideFinaleFormule), - _aaW_=caml_call1(Runtime_ocaml_Runtime[33],_aaV_), - _aaX_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.coefficientPriseEnChargeD83225), - _aaY_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.equivalenceLoyerMinimale), - _aaZ_=caml_call1(Runtime_ocaml_Runtime[33],_aaY_), - _aa0_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.plafondEquivalenceLoyerEligible), - _aa1_=caml_call1(Runtime_ocaml_Runtime[33],_aa0_), - _aa2_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.equivalenceLoyerEligible), - _aa3_=caml_call1(Runtime_ocaml_Runtime[33],_aa2_), - _aa4_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.nNombrePartsD83225), - _aa5_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.coefficientRD83225), - _aa6_=caml_call1(Runtime_ocaml_Runtime[33],_aa5_), - _aa7_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.coefficientMultiplicateurD83225); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_aa7_), - _aa6_, - _aa4_, - _aa3_, - _aa1_, - _aaZ_, - _aaX_, - _aaW_, - _aaU_]} - function calcul_nombre_parts_accession_$0(calcul_nombre_parts_accession_) - {var - t303= - caml_call1 - (Runtime_ocaml_Runtime[43],calcul_nombre_parts_accession_[1]); - return {"nNombrePartsD83211":t303}} - function calcul_nombre_parts_accession_$1(calcul_nombre_parts_accession_) - {return [0, - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_nombre_parts_accession_.nNombrePartsD83211)]} - function calcul_aide_personnalisee_loge$7(calcul_aide_personnalisee_loge) - {function t309(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _aaR_=caml_call1(Runtime_ocaml_Runtime[42],input), - _aaS_=caml_call1(Runtime_ocaml_Runtime[33],_aaR_), - _aaT_=caml_call1(calcul_aide_personnalisee_loge[5],_aaS_); - return caml_call1(Runtime_ocaml_Runtime[35],_aaT_)})} - var - t308= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[4]), - t307= - caml_call1 - (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[3]), - t306= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), - t305= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); - return {"mensualiteEligible":t305, - "mensualiteMinimale":t306, - "coefficientPriseEnChargeD83210":t307, - "aideFinaleFormule":t308, - "traitementAideFinale":caml_js_wrap_meth_callback(t309)}} - function calcul_aide_personnalisee_loge$8(calcul_aide_personnalisee_loge) - {var - _aaK_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$1), - _aaL_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.aideFinaleFormule), - _aaM_=caml_call1(Runtime_ocaml_Runtime[33],_aaL_), - _aaN_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.coefficientPriseEnChargeD83210), - _aaO_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.mensualiteMinimale), - _aaP_=caml_call1(Runtime_ocaml_Runtime[33],_aaO_), - _aaQ_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.mensualiteEligible); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_aaQ_), - _aaP_, - _aaN_, - _aaM_, - _aaK_]} - function traitement_formule_aide_finale(traitement_formule_aide_finale) - {function t315(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _aaH_=caml_call1(Runtime_ocaml_Runtime[42],input), - _aaI_=caml_call1(Runtime_ocaml_Runtime[33],_aaH_), - _aaJ_=caml_call1(traitement_formule_aide_finale[2],_aaI_); - return caml_call1(Runtime_ocaml_Runtime[35],_aaJ_)})} - var - t314= - caml_call1 - (Runtime_ocaml_Runtime[35],traitement_formule_aide_finale[1]); - return {"aideFinaleFormule":t314, - "traitementAideFinale":caml_js_wrap_meth_callback(t315)}} - function traitement_formule_aide_finale$0(traitement_formule_aide_finale) - {var - _aaF_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$2), - _aaG_= - caml_call1 - (Runtime_ocaml_Runtime[42], - traitement_formule_aide_finale.aideFinaleFormule); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_aaG_),_aaF_]} - function calcul_aide_personnalisee_loge$9(calcul_aide_personnalisee_loge) - {function t318(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _aaC_=caml_call1(Runtime_ocaml_Runtime[42],input), - _aaD_=caml_call1(Runtime_ocaml_Runtime[33],_aaC_), - _aaE_=caml_call1(calcul_aide_personnalisee_loge[2],_aaD_); - return caml_call1(Runtime_ocaml_Runtime[35],_aaE_)})} - var - t317= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); - return {"aideFinaleFormule":t317, - "traitementAideFinale":caml_js_wrap_meth_callback(t318)}} - function calcul_aide_personnalisee_loge$10(calcul_aide_personnalisee_loge) - {var - _aaA_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$3), - _aaB_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.aideFinaleFormule); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_aaB_),_aaA_]} - function infos_changement_logement_d842(infos_changement_logement_d842) - {var - t321= - caml_call1 - (Runtime_ocaml_Runtime[35],infos_changement_logement_d842[2]), - t320= - caml_call1 - (Runtime_ocaml_Runtime[35],infos_changement_logement_d842[1]); - return {"ancienLoyerPrincipal":t320,"ancienneAllocationLogement":t321}} - function infos_changement_logement_d842$0(infos_changement_logement_d842) - {var - _aax_= - caml_call1 - (Runtime_ocaml_Runtime[42], - infos_changement_logement_d842.ancienneAllocationLogement), - _aay_=caml_call1(Runtime_ocaml_Runtime[33],_aax_), - _aaz_= - caml_call1 - (Runtime_ocaml_Runtime[42], - infos_changement_logement_d842.ancienLoyerPrincipal); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_aaz_),_aay_]} - function calcul_allocation_logement_loc$0(calcul_allocation_logement_loc) - {function t325(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _aau_=caml_call1(Runtime_ocaml_Runtime[42],input), - _aav_=caml_call1(Runtime_ocaml_Runtime[33],_aau_), - _aaw_=caml_call1(calcul_allocation_logement_loc[2],_aav_); - return caml_call1(Runtime_ocaml_Runtime[35],_aaw_)})} - var - t324= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[1]); - return {"aideFinaleFormule":t324, - "traitementAideFinale":caml_js_wrap_meth_callback(t325)}} - function calcul_allocation_logement_loc$1(calcul_allocation_logement_loc) - {var - _aas_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$4), - _aat_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_loc.aideFinaleFormule); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_aat_),_aas_]} - function calcul_allocation_logement_acc$0(calcul_allocation_logement_acc) - {function t328(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _aap_=caml_call1(Runtime_ocaml_Runtime[42],input), - _aaq_=caml_call1(Runtime_ocaml_Runtime[33],_aap_), - _aar_=caml_call1(calcul_allocation_logement_acc[2],_aaq_); - return caml_call1(Runtime_ocaml_Runtime[35],_aar_)})} - var - t327= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[1]); - return {"aideFinaleFormule":t327, - "traitementAideFinale":caml_js_wrap_meth_callback(t328)}} - function calcul_allocation_logement_acc$1(calcul_allocation_logement_acc) - {var - _aan_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$5), - _aao_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_acc.aideFinaleFormule); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_aao_),_aan_]} - function calcul_allocation_logement_foy$0(calcul_allocation_logement_foy) - {function t335(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _aak_=caml_call1(Runtime_ocaml_Runtime[42],input), - _aal_=caml_call1(Runtime_ocaml_Runtime[33],_aak_), - _aam_=caml_call1(calcul_allocation_logement_foy[6],_aal_); - return caml_call1(Runtime_ocaml_Runtime[35],_aam_)})} - var - t334= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[5]), - t333= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[4]), - t332= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[3]), - t331= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[2]), - t330= - caml_call1 - (Runtime_ocaml_Runtime[43],calcul_allocation_logement_foy[1]); - return {"coefficientPriseEnCharge":t330, - "equivalenceLoyer":t331, - "montantForfaitaireCharges":t332, - "loyerMinimal":t333, - "aideFinaleFormule":t334, - "traitementAideFinale":caml_js_wrap_meth_callback(t335)}} - function calcul_allocation_logement_foy$1(calcul_allocation_logement_foy) - {var - _aab_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$6), - _aac_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_foy.aideFinaleFormule), - _aad_=caml_call1(Runtime_ocaml_Runtime[33],_aac_), - _aae_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_foy.loyerMinimal), - _aaf_=caml_call1(Runtime_ocaml_Runtime[33],_aae_), - _aag_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_foy.montantForfaitaireCharges), - _aah_=caml_call1(Runtime_ocaml_Runtime[33],_aag_), - _aai_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_foy.equivalenceLoyer), - _aaj_=caml_call1(Runtime_ocaml_Runtime[33],_aai_); - return [0, - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_foy.coefficientPriseEnCharge), - _aaj_, - _aah_, - _aaf_, - _aad_, - _aab_]} - function calcul_allocation_logement_to_(calcul_allocation_logement) - {function t342(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _$__=caml_call1(Runtime_ocaml_Runtime[42],input), - _$$_=caml_call1(Runtime_ocaml_Runtime[33],_$__), - _aaa_=caml_call1(calcul_allocation_logement[2],_$$_); - return caml_call1(Runtime_ocaml_Runtime[35],_aaa_)})} - var - t341= - caml_call1(Runtime_ocaml_Runtime[35],calcul_allocation_logement[1]); - return {"aideFinaleFormule":t341, - "traitementAideFinale":caml_js_wrap_meth_callback(t342)}} - function calcul_allocation_logement_of_(calcul_allocation_logement) - {var - _$8_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$7), - _$9_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement.aideFinaleFormule); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_$9_),_$8_]} - function ouverture_droits_retraite_to_j(ouverture_droits_retraite) - {var - t344= - caml_call1(Runtime_jsoo_Runtime[3],ouverture_droits_retraite[1]); - return {"ageOuvertureDroit":t344}} - function ouverture_droits_retraite_of_j(ouverture_droits_retraite) - {return [0, - caml_call1 - (Runtime_jsoo_Runtime[2], - ouverture_droits_retraite.ageOuvertureDroit)]} - function impaye_depense_logement_to_jso(impaye_depense_logement) - {var - t346= - caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement[1]); - return {"montantImpaye":t346}} - function impaye_depense_logement_of_jso(impaye_depense_logement) - {var - _$7_= - caml_call1 - (Runtime_ocaml_Runtime[42],impaye_depense_logement.montantImpaye); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_$7_)]} - function calculette_aides_au_logement_t(calculette_aides_au_logement) - {var _$2_=calculette_aides_au_logement[4]; - function _$3_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)} - var t351=caml_js_from_array(caml_call2(Stdlib_Array[15],_$3_,_$2_)); - function t350(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _$4_=caml_call1(Runtime_ocaml_Runtime[42],input), - _$5_=caml_call1(Runtime_ocaml_Runtime[33],_$4_), - _$6_=caml_call1(calculette_aides_au_logement[3],_$5_); - return caml_call1(Runtime_ocaml_Runtime[35],_$6_)})} - var - t349= - caml_call1(Runtime_ocaml_Runtime[35],calculette_aides_au_logement[2]), - t348=! ! calculette_aides_au_logement[1]; - return {"eligibilite":t348, - "aideFinaleFormule":t349, - "traitementAideFinale":caml_js_wrap_meth_callback(t350), - "coefficentsEnfantsGardeAlterneePrisEnCompte":t351}} - function calculette_aides_au_logement_o(calculette_aides_au_logement) - {var - _$W_= - caml_js_to_array - (calculette_aides_au_logement.coefficentsEnfantsGardeAlterneePrisEnCompte); - function _$X_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)} - var - _$Y_=caml_call1(caml_call1(Stdlib_Array[15],_$X_),_$W_), - _$Z_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$8), - _$0_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calculette_aides_au_logement.aideFinaleFormule), - _$1_=caml_call1(Runtime_ocaml_Runtime[33],_$0_); - return [0,calculette_aides_au_logement.eligibilite | 0,_$1_,_$Z_,_$Y_]} - function calculette_aides_au_logement_g$0(calculette_aides_au_logement_g) - {var - t356= - caml_call1 - (Runtime_ocaml_Runtime[35],calculette_aides_au_logement_g[2]), - t355=! ! calculette_aides_au_logement_g[1]; - return {"eligibilite":t355,"aideFinale":t356}} - function calculette_aides_au_logement_g$1(calculette_aides_au_logement_g) - {var - _$U_= - caml_call1 - (Runtime_ocaml_Runtime[42],calculette_aides_au_logement_g.aideFinale), - _$V_=caml_call1(Runtime_ocaml_Runtime[33],_$U_); - return [0,calculette_aides_au_logement_g.eligibilite | 0,_$V_]} - function base_mensuelle_allocations_fam$6(base_mensuelle_allocations_fam) - {var - t359= - caml_call1 - (Runtime_ocaml_Runtime[35],base_mensuelle_allocations_fam[1]); - return {"montant":t359}} - function base_mensuelle_allocations_fam$7(base_mensuelle_allocations_fam) - {var - _$T_= - caml_call1 - (Runtime_ocaml_Runtime[42],base_mensuelle_allocations_fam.montant); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_$T_)]} - function smic_to_jsoo$0(smic) - {var t361=caml_call1(Runtime_ocaml_Runtime[35],smic[1]); - return {"brutHoraire":t361}} - function smic_of_jsoo$0(smic) - {var _$S_=caml_call1(Runtime_ocaml_Runtime[42],smic.brutHoraire); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_$S_)]} - function pret_to_jsoo(pret) - {var - t365=titulaire_pret_to_jsoo(pret[3]), - t364=caml_call1(Runtime_jsoo_Runtime[5],pret[2]), - t363=type_pret_to_jsoo(pret[1]); - return {"typePret":t363,"dateSignature":t364,"titulairePret":t365}} - function pret_of_jsoo(pret) - {var - _$Q_=titulaire_pret_of_jsoo(pret.titulairePret), - _$R_=caml_call1(Runtime_jsoo_Runtime[4],pret.dateSignature); - return [0,type_pret_of_jsoo(pret.typePret),_$R_,_$Q_]} - function neuf_ou_ancien_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1];return {"kind":"Neuf","payload":arg}} - var arg$0=param[1],t372=ameliore_par_occupant_to_jsoo(arg$0); - return {"kind":"Ancien","payload":t372}} - function neuf_ou_ancien_of_jsoo(neuf_ou_ancien) - {var cons=caml_string_of_jsstring(neuf_ou_ancien.kind); - if(caml_string_notequal(cons,cst_Ancien$0)) - {if(caml_string_notequal(cons,cst_Neuf$0)) - {var _$P_=caml_call2(Stdlib_Printf[4],_Xq_,cons); - return caml_call1(Stdlib[2],_$P_)} - return _Xr_} - return [1,ameliore_par_occupant_of_jsoo(neuf_ou_ancien.payload)]} - function tranche_revenu_to_jsoo(tranche_revenu) - {var - t377=caml_call1(Runtime_ocaml_Runtime[43],tranche_revenu[3]), - t376=caml_call1(Runtime_ocaml_Runtime[35],tranche_revenu[2]), - t375=limite_tranche_to_jsoo(tranche_revenu[1]); - return {"haut":t375,"bas":t376,"taux":t377}} - function tranche_revenu_of_jsoo(tranche_revenu) - {var - _$M_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu.taux), - _$N_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu.bas), - _$O_=caml_call1(Runtime_ocaml_Runtime[33],_$N_); - return [0,limite_tranche_of_jsoo(tranche_revenu.haut),_$O_,_$M_]} - function tranche_revenu_decimal_to_jsoo(tranche_revenu_decimal) - {var - t383=caml_call1(Runtime_ocaml_Runtime[43],tranche_revenu_decimal[3]), - t382=caml_call1(Runtime_ocaml_Runtime[43],tranche_revenu_decimal[2]), - t381=limite_tranche_decimal_to_jsoo(tranche_revenu_decimal[1]); - return {"haut":t381,"bas":t382,"taux":t383}} - function tranche_revenu_decimal_of_jsoo(tranche_revenu_decimal) - {var - _$K_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu_decimal.taux), - _$L_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu_decimal.bas); - return [0, - limite_tranche_decimal_of_jsoo(tranche_revenu_decimal.haut), - _$L_, - _$K_]} - function autre_personne_a_charge_to_jso(autre_personne_a_charge) - {var - t393=! ! autre_personne_a_charge[7], - t392=! ! autre_personne_a_charge[6], - t391=! ! autre_personne_a_charge[5], - t390=parente_to_jsoo(autre_personne_a_charge[4]), - t389=! ! autre_personne_a_charge[3], - t388=caml_call1(Runtime_ocaml_Runtime[35],autre_personne_a_charge[2]), - t387=caml_call1(Runtime_jsoo_Runtime[5],autre_personne_a_charge[1]); - return {"dateNaissance":t387, - "ressources":t388, - "ascendantDescendantCollateralDeuxiemeTroisiemeDegre":t389, - "parente":t390, - "incapacite80PourcentOuRestrictionEmploi":t391, - "beneficiaireL16119L3518L6433Secu":t392, - "titulaireAllocationPersonneAgee":t393}} - function autre_personne_a_charge_of_jso(autre_personne_a_charge) - {var - _$D_=autre_personne_a_charge.titulaireAllocationPersonneAgee | 0, - _$E_=autre_personne_a_charge.beneficiaireL16119L3518L6433Secu | 0, - _$F_= - autre_personne_a_charge.incapacite80PourcentOuRestrictionEmploi - | - 0, - _$G_=parente_of_jsoo(autre_personne_a_charge.parente), - _$H_= - autre_personne_a_charge.ascendantDescendantCollateralDeuxiemeTroisiemeDegre - | - 0, - _$I_= - caml_call1 - (Runtime_ocaml_Runtime[42],autre_personne_a_charge.ressources), - _$J_=caml_call1(Runtime_ocaml_Runtime[33],_$I_); - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4],autre_personne_a_charge.dateNaissance), - _$J_, - _$H_, - _$G_, - _$F_, - _$E_, - _$D_]} - function date_naissance_troisieme_ou_de(param) - {if(0 === param[0]) - {var arg=param[1];return {"kind":"MoinsDeTroisEnfants","payload":arg}} - var arg$0=param[1],t404=date_de_naissance_ou_mois_de_g(arg$0); - return {"kind":"PlusDeTroisEnfants","payload":t404}} - function date_naissance_troisieme_ou_de$0(date_naissance_troisieme_ou_de) - {var cons=caml_string_of_jsstring(date_naissance_troisieme_ou_de.kind); - if(caml_string_notequal(cons,cst_MoinsDeTroisEnfants$0)) - {if(caml_string_notequal(cons,cst_PlusDeTroisEnfants$0)) - {var _$C_=caml_call2(Stdlib_Printf[4],_Xs_,cons); - return caml_call1(Stdlib[2],_$C_)} - return [1, - date_de_naissance_ou_mois_de_g$0 - (date_naissance_troisieme_ou_de.payload)]} - return _Xt_} - function eligibilite_allocation_logemen$0(eligibilite_allocation_logemen) - {var _$A_=eligibilite_allocation_logemen[3]; - function _$B_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)} - var - t409=caml_js_from_array(caml_call2(Stdlib_Array[15],_$B_,_$A_)), - t408= - caml_call1 - (Runtime_ocaml_Runtime[48],eligibilite_allocation_logemen[2]), - t407=type_eligibilite_allocation_lo(eligibilite_allocation_logemen[1]); - return {"eligibilite":t407, - "nombrePersonnesAChargePrisesEnCompte":t408, - "coefficentsEnfantsGardeAlterneePrisEnCompte":t409}} - function eligibilite_allocation_logemen$1(eligibilite_allocation_logemen) - {var - _$w_= - caml_js_to_array - (eligibilite_allocation_logemen.coefficentsEnfantsGardeAlterneePrisEnCompte); - function _$x_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)} - var - _$y_=caml_call1(caml_call1(Stdlib_Array[15],_$x_),_$w_), - _$z_= - caml_call1 - (Runtime_ocaml_Runtime[49], - eligibilite_allocation_logemen.nombrePersonnesAChargePrisesEnCompte); - return [0, - type_eligibilite_allocation_lo$0 - (eligibilite_allocation_logemen.eligibilite), - _$z_, - _$y_]} - function logement_foyer_to_jsoo(logement_foyer) - {var - t419=categorie_equivalence_loyer_al(logement_foyer[7]), - t418=caml_call1(Runtime_ocaml_Runtime[35],logement_foyer[6]), - t417=! ! logement_foyer[5], - t416=caml_call1(Runtime_jsoo_Runtime[5],logement_foyer[4]), - t415=! ! logement_foyer[3], - t414=! ! logement_foyer[2], - t413=type_logement_foyer_to_jsoo(logement_foyer[1]); - return {"typeUser":t413, - "remplitConditionsR83221":t414, - "conventionneLivreIIITitreVChapIII":t415, - "dateConventionnement":t416, - "construitApplicationLoi195712III":t417, - "redevance":t418, - "categorieEquivalenceLoyerD84216":t419}} - function logement_foyer_of_jsoo(logement_foyer) - {var - _$p_= - categorie_equivalence_loyer_al$0 - (logement_foyer.categorieEquivalenceLoyerD84216), - _$q_=caml_call1(Runtime_ocaml_Runtime[42],logement_foyer.redevance), - _$r_=caml_call1(Runtime_ocaml_Runtime[33],_$q_), - _$s_=logement_foyer.construitApplicationLoi195712III | 0, - _$t_= - caml_call1 - (Runtime_jsoo_Runtime[4],logement_foyer.dateConventionnement), - _$u_=logement_foyer.conventionneLivreIIITitreVChapIII | 0, - _$v_=logement_foyer.remplitConditionsR83221 | 0; - return [0, - type_logement_foyer_of_jsoo(logement_foyer.typeUser), - _$v_, - _$u_, - _$t_, - _$s_, - _$r_, - _$p_]} - function enfant_prestations_familiales_(enfant_prestations_familiales) - {var - t433=! ! enfant_prestations_familiales[7], - t432=! ! enfant_prestations_familiales[6], - t431=prise_en_charge_enfant_to_jsoo(enfant_prestations_familiales[5]), - t430= - caml_call1(Runtime_jsoo_Runtime[5],enfant_prestations_familiales[4]), - t429= - caml_call1(Runtime_ocaml_Runtime[35],enfant_prestations_familiales[3]), - t428=situation_obligation_scolaire_$1(enfant_prestations_familiales[2]), - t427= - caml_call1(Runtime_ocaml_Runtime[48],enfant_prestations_familiales[1]); - return {"identifiant":t427, - "obligationScolaire":t428, - "remunerationMensuelle":t429, - "dateDeNaissance":t430, - "priseEnCharge":t431, - "aDejaOuvertDroitAuxAllocationsFamiliales":t432, - "beneficieTitrePersonnelAidePersonnelleLogement":t433}} - function enfant_prestations_familiales_$0(enfant_prestations_familiales) - {var - _$i_= - enfant_prestations_familiales.beneficieTitrePersonnelAidePersonnelleLogement - | - 0, - _$j_= - enfant_prestations_familiales.aDejaOuvertDroitAuxAllocationsFamiliales - | - 0, - _$k_= - prise_en_charge_enfant_of_jsoo - (enfant_prestations_familiales.priseEnCharge), - _$l_= - caml_call1 - (Runtime_jsoo_Runtime[4], - enfant_prestations_familiales.dateDeNaissance), - _$m_= - caml_call1 - (Runtime_ocaml_Runtime[42], - enfant_prestations_familiales.remunerationMensuelle), - _$n_=caml_call1(Runtime_ocaml_Runtime[33],_$m_), - _$o_= - situation_obligation_scolaire_$2 - (enfant_prestations_familiales.obligationScolaire); - return [0, - caml_call1 - (Runtime_ocaml_Runtime[49], - enfant_prestations_familiales.identifiant), - _$o_, - _$n_, - _$l_, - _$k_, - _$j_, - _$i_]} - function enfant_a_charge_to_jsoo(enfant_a_charge) - {var - t447=situation_garde_alternee_to_js(enfant_a_charge[7]), - t446=situation_obligation_scolaire_$1(enfant_a_charge[6]), - t445=caml_call1(Runtime_ocaml_Runtime[35],enfant_a_charge[5]), - t444=caml_call1(Runtime_jsoo_Runtime[5],enfant_a_charge[4]), - t443=! ! enfant_a_charge[3], - t442=! ! enfant_a_charge[2], - t441=caml_call1(Runtime_ocaml_Runtime[48],enfant_a_charge[1]); - return {"identifiant":t441, - "beneficieTitrePersonnelAidePersonnelleLogement":t442, - "aDejaOuvertDroitAuxAllocationsFamiliales":t443, - "dateDeNaissance":t444, - "remunerationMensuelle":t445, - "obligationScolaire":t446, - "situationGardeAlternee":t447}} - function enfant_a_charge_of_jsoo(enfant_a_charge) - {var - _$b_= - situation_garde_alternee_of_js(enfant_a_charge.situationGardeAlternee), - _$c_= - situation_obligation_scolaire_$2(enfant_a_charge.obligationScolaire), - _$d_= - caml_call1 - (Runtime_ocaml_Runtime[42],enfant_a_charge.remunerationMensuelle), - _$e_=caml_call1(Runtime_ocaml_Runtime[33],_$d_), - _$f_= - caml_call1(Runtime_jsoo_Runtime[4],enfant_a_charge.dateDeNaissance), - _$g_=enfant_a_charge.aDejaOuvertDroitAuxAllocationsFamiliales | 0, - _$h_=enfant_a_charge.beneficieTitrePersonnelAidePersonnelleLogement | 0; - return [0, - caml_call1 - (Runtime_ocaml_Runtime[49],enfant_a_charge.identifiant), - _$h_, - _$g_, - _$f_, - _$e_, - _$c_, - _$b_]} - function type_bailleur_to_jsoo(param) - {switch(param[0]) - {case 0: - var arg=param[1],t456=convention_bailleur_social_to_(arg); - return {"kind":"BailleurSocial","payload":t456}; - case 1: - var arg$0=param[1],t458=convention_a_n_h_a_to_jsoo(arg$0); - return {"kind":"BailleurPriveAvecConventionnementSocial", - "payload":t458}; - default: - var arg$1=param[1];return {"kind":"BailleurPrive","payload":arg$1}}} - function type_bailleur_of_jsoo(type_bailleur) - {var cons=caml_string_of_jsstring(type_bailleur.kind); - if(caml_string_notequal(cons,cst_BailleurPrive)) - {if(caml_string_notequal(cons,cst_BailleurPriveAvecConventio)) - {if(caml_string_notequal(cons,cst_BailleurSocial$0)) - {var _$a_=caml_call2(Stdlib_Printf[4],_Xu_,cons); - return caml_call1(Stdlib[2],_$a_)} - return [0,convention_bailleur_social_of_(type_bailleur.payload)]} - return [1,convention_a_n_h_a_of_jsoo(type_bailleur.payload)]} - return _Xv_} - function loue_ou_sous_loue_a_des_tiers_(param) - {if(0 === param[0]){var arg=param[1];return {"kind":"Non","payload":arg}} - var arg$0=param[1],t467=personne_sous_location_to_jsoo(arg$0); - return {"kind":"Oui","payload":t467}} - function loue_ou_sous_loue_a_des_tiers_$0(loue_ou_sous_loue_a_des_tiers) - {var cons=caml_string_of_jsstring(loue_ou_sous_loue_a_des_tiers.kind); - if(caml_string_notequal(cons,cst_Non$4)) - {if(caml_string_notequal(cons,cst_Oui$2)) - {var __$_=caml_call2(Stdlib_Printf[4],_Xw_,cons); - return caml_call1(Stdlib[2],__$_)} - return [1, - personne_sous_location_of_jsoo - (loue_ou_sous_loue_a_des_tiers.payload)]} - return _Xx_} - function nationalite_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1];return {"kind":"Francaise","payload":arg}} - var arg$0=param[1],t473=conditions_etrangers_to_jsoo(arg$0); - return {"kind":"Etrangere","payload":t473}} - function nationalite_of_jsoo(nationalite) - {var cons=caml_string_of_jsstring(nationalite.kind); - if(caml_string_notequal(cons,cst_Etrangere)) - {if(caml_string_notequal(cons,cst_Francaise)) - {var ____=caml_call2(Stdlib_Printf[4],_Xy_,cons); - return caml_call1(Stdlib[2],____)} - return _Xz_} - return [1,conditions_etrangers_of_jsoo(nationalite.payload)]} - function changement_logement_d842_4_to_(param) - {if(0 === param[0]) - {var arg=param[1],t477=infos_changement_logement_d842(arg); - return {"kind":"Changement","payload":t477}} - var arg$0=param[1]; - return {"kind":"PasDeChangement","payload":arg$0}} - function changement_logement_d842_4_of_(changement_logement_d842_4) - {var cons=caml_string_of_jsstring(changement_logement_d842_4.kind); - if(caml_string_notequal(cons,cst_Changement$0)) - {if(caml_string_notequal(cons,cst_PasDeChangement$0)) - {var __9_=caml_call2(Stdlib_Printf[4],_XA_,cons); - return caml_call1(Stdlib[2],__9_)} - return _XB_} - return [0, - infos_changement_logement_d842$0 - (changement_logement_d842_4.payload)]} - function proprietaire_to_jsoo(proprietaire) - {var - t492=pret_to_jsoo(proprietaire[11]), - t491=neuf_ou_ancien_to_jsoo(proprietaire[10]), - t490=! ! proprietaire[9], - t489=! ! proprietaire[8], - t488=! ! proprietaire[7], - t487=type_travaux_logement_r842_5_t(proprietaire[6]), - t486=type_travaux_logement_d832_15_(proprietaire[5]), - t485=caml_call1(Runtime_jsoo_Runtime[5],proprietaire[4]), - t484=caml_call1(Runtime_ocaml_Runtime[35],proprietaire[3]), - t483=caml_call1(Runtime_ocaml_Runtime[35],proprietaire[2]), - t482=! ! proprietaire[1]; - return {"logementSitueCommuneDesequilibreL8312":t482, - "mensualitePrincipale":t483, - "chargesMensuellesPret":t484, - "dateEntreeLogement":t485, - "typeTravauxLogementD83215":t486, - "typeTravauxLogementR8425":t487, - "localHabitePremiereFoisBeneficiaire":t488, - "copropriete":t489, - "situationR822111317":t490, - "ancienneteLogement":t491, - "pret":t492}} - function proprietaire_of_jsoo(proprietaire) - {var - __X_=pret_of_jsoo(proprietaire.pret), - __Y_=neuf_ou_ancien_of_jsoo(proprietaire.ancienneteLogement), - __Z_=proprietaire.situationR822111317 | 0, - __0_=proprietaire.copropriete | 0, - __1_=proprietaire.localHabitePremiereFoisBeneficiaire | 0, - __2_= - type_travaux_logement_r842_5_o(proprietaire.typeTravauxLogementR8425), - __3_= - type_travaux_logement_d832_15_$0 - (proprietaire.typeTravauxLogementD83215), - __4_= - caml_call1(Runtime_jsoo_Runtime[4],proprietaire.dateEntreeLogement), - __5_= - caml_call1 - (Runtime_ocaml_Runtime[42],proprietaire.chargesMensuellesPret), - __6_=caml_call1(Runtime_ocaml_Runtime[33],__5_), - __7_= - caml_call1 - (Runtime_ocaml_Runtime[42],proprietaire.mensualitePrincipale), - __8_=caml_call1(Runtime_ocaml_Runtime[33],__7_); - return [0, - proprietaire.logementSitueCommuneDesequilibreL8312 | 0, - __8_, - __6_, - __4_, - __3_, - __2_, - __1_, - __0_, - __Z_, - __Y_, - __X_]} - function informations_prime_de_demenage(informations_prime_de_demenage) - {var - t505=date_naissance_troisieme_ou_de(informations_prime_de_demenage[2]), - t504= - caml_call1 - (Runtime_ocaml_Runtime[48],informations_prime_de_demenage[1]); - return {"nombreEnfantsANaitreApresTroisiemeMoisGrossesse":t504, - "dateNaissanceTroisiemeEnfantOuDernierSiPlus":t505}} - function informations_prime_de_demenage$0(informations_prime_de_demenage) - {var - __W_= - date_naissance_troisieme_ou_de$0 - (informations_prime_de_demenage.dateNaissanceTroisiemeEnfantOuDernierSiPlus); - return [0, - caml_call1 - (Runtime_ocaml_Runtime[49], - informations_prime_de_demenage.nombreEnfantsANaitreApresTroisiemeMoisGrossesse), - __W_]} - function eligibilite_prestations_famili$0(eligibilite_prestations_famili) - {var - t511=! ! eligibilite_prestations_famili[4], - t510= - caml_call1(Runtime_jsoo_Runtime[3],eligibilite_prestations_famili[3]); - function t509(param) - {return caml_js_wrap_meth_callback - (function(input) - {var __V_=enfant_prestations_familiales_$0(input); - return ! - ! - caml_call1(eligibilite_prestations_famili[2],__V_)})} - function t508(param) - {return caml_js_wrap_meth_callback - (function(input) - {var __U_=enfant_prestations_familiales_$0(input); - return ! - ! - caml_call1(eligibilite_prestations_famili[1],__U_)})} - return {"droitOuvert":caml_js_wrap_meth_callback(t508), - "conditionsHorsAge":caml_js_wrap_meth_callback(t509), - "ageL51232":t510, - "regimeOutreMerL7511":t511}} - function eligibilite_prestations_famili$1(eligibilite_prestations_famili) - {var - __R_=eligibilite_prestations_famili.regimeOutreMerL7511 | 0, - __S_= - caml_call1 - (Runtime_jsoo_Runtime[2],eligibilite_prestations_famili.ageL51232), - __T_=caml_call1(Stdlib[2],cst_The_function_conditions_ho$0); - return [0, - caml_call1(Stdlib[2],cst_The_function_droit_ouvert_$0), - __T_, - __S_, - __R_]} - function personne_a_charge_to_jsoo(param) - {if(0 === param[0]) - {var arg=param[1],t515=enfant_a_charge_to_jsoo(arg); - return {"kind":"EnfantACharge","payload":t515}} - var arg$0=param[1],t517=autre_personne_a_charge_to_jso(arg$0); - return {"kind":"AutrePersonneACharge","payload":t517}} - function personne_a_charge_of_jsoo(personne_a_charge) - {var cons=caml_string_of_jsstring(personne_a_charge.kind); - if(caml_string_notequal(cons,cst_AutrePersonneACharge)) - {if(caml_string_notequal(cons,cst_EnfantACharge)) - {var __Q_=caml_call2(Stdlib_Printf[4],_XC_,cons); - return caml_call1(Stdlib[2],__Q_)} - return [0,enfant_a_charge_of_jsoo(personne_a_charge.payload)]} - return [1,autre_personne_a_charge_of_jso(personne_a_charge.payload)]} - function demandeur_to_jsoo(demandeur) - {var - t524=! ! demandeur[4], - t523=patrimoine_to_jsoo(demandeur[3]), - t522=nationalite_to_jsoo(demandeur[2]), - t521=caml_call1(Runtime_jsoo_Runtime[5],demandeur[1]); - return {"dateNaissance":t521, - "nationalite":t522, - "patrimoine":t523, - "personneHebergeeCentreSoinLL162223SecuriteSociale":t524}} - function demandeur_of_jsoo(demandeur) - {var - __N_=demandeur.personneHebergeeCentreSoinLL162223SecuriteSociale | 0, - __O_=patrimoine_of_jsoo(demandeur.patrimoine), - __P_=nationalite_of_jsoo(demandeur.nationalite); - return [0, - caml_call1(Runtime_jsoo_Runtime[4],demandeur.dateNaissance), - __P_, - __O_, - __N_]} - function location_to_jsoo(location) - {var - t536=changement_logement_d842_4_to_(location[8]), - t535=! ! location[7], - t534=! ! location[6], - t533=! ! location[5], - t532=! ! location[4], - t531=! ! location[3], - t530=caml_call1(Runtime_ocaml_Runtime[35],location[2]), - t529=type_bailleur_to_jsoo(location[1]); - return {"bailleur":t529, - "loyerPrincipal":t530, - "beneficiaireAideAdulteOuEnfantHandicapes":t531, - "logementEstChambre":t532, - "colocation":t533, - "ageesOuHandicapAdultesHebergeesOnereuxParticuliers":t534, - "logementMeubleD8422":t535, - "changementLogementD8424":t536}} - function location_of_jsoo(location) - {var - __F_=changement_logement_d842_4_of_(location.changementLogementD8424), - __G_=location.logementMeubleD8422 | 0, - __H_=location.ageesOuHandicapAdultesHebergeesOnereuxParticuliers | 0, - __I_=location.colocation | 0, - __J_=location.logementEstChambre | 0, - __K_=location.beneficiaireAideAdulteOuEnfantHandicapes | 0, - __L_=caml_call1(Runtime_ocaml_Runtime[42],location.loyerPrincipal), - __M_=caml_call1(Runtime_ocaml_Runtime[33],__L_); - return [0, - type_bailleur_of_jsoo(location.bailleur), - __M_, - __K_, - __J_, - __I_, - __H_, - __G_, - __F_]} - function eligibilite_aides_personnelle_$0(eligibilite_aides_personnelle_) - {function t549(param) - {return caml_js_wrap_meth_callback - (function(input) - {var __E_=personne_a_charge_of_jsoo(input); - return ! - ! - caml_call1(eligibilite_aides_personnelle_[5],__E_)})} - var __C_=eligibilite_aides_personnelle_[4]; - function __D_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)} - var - t548=caml_js_from_array(caml_call2(Stdlib_Array[15],__D_,__C_)), - t547= - caml_call1 - (Runtime_ocaml_Runtime[48],eligibilite_aides_personnelle_[3]), - t546=! ! eligibilite_aides_personnelle_[2], - t545= - caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aides_personnelle_[1]); - return {"dateCourante":t545, - "eligibilite":t546, - "nombrePersonnesAChargePrisesEnCompte":t547, - "coefficentsEnfantsGardeAlterneePrisEnCompte":t548, - "condition2R8234":caml_js_wrap_meth_callback(t549)}} - function eligibilite_aides_personnelle_$1(eligibilite_aides_personnelle_) - {var - __w_=caml_call1(Stdlib[2],cst_The_function_condition_2_r), - __x_= - caml_js_to_array - (eligibilite_aides_personnelle_.coefficentsEnfantsGardeAlterneePrisEnCompte); - function __y_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)} - var - __z_=caml_call1(caml_call1(Stdlib_Array[15],__y_),__x_), - __A_= - caml_call1 - (Runtime_ocaml_Runtime[49], - eligibilite_aides_personnelle_.nombrePersonnesAChargePrisesEnCompte), - __B_=eligibilite_aides_personnelle_.eligibilite | 0; - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - eligibilite_aides_personnelle_.dateCourante), - __B_, - __A_, - __z_, - __w_]} - function categorie_calcul_a_p_l_to_jsoo(param) - {switch(param[0]) - {case 0: - var arg=param[1],t555=location_to_jsoo(arg); - return {"kind":"Location","payload":t555}; - case 1: - var arg$0=param[1],t557=proprietaire_to_jsoo(arg$0); - return {"kind":"AccessionPropriete","payload":t557}; - default: - var arg$1=param[1],t559=logement_foyer_to_jsoo(arg$1); - return {"kind":"LogementFoyer","payload":t559}}} - function categorie_calcul_a_p_l_of_jsoo(categorie_calcul_a_p_l) - {var cons=caml_string_of_jsstring(categorie_calcul_a_p_l.kind); - if(caml_string_notequal(cons,cst_AccessionPropriete)) - {if(caml_string_notequal(cons,cst_Location$0)) - {if(caml_string_notequal(cons,cst_LogementFoyer$0)) - {var __v_=caml_call2(Stdlib_Printf[4],_XD_,cons); - return caml_call1(Stdlib[2],__v_)} - return [2,logement_foyer_of_jsoo(categorie_calcul_a_p_l.payload)]} - return [0,location_of_jsoo(categorie_calcul_a_p_l.payload)]} - return [1,proprietaire_of_jsoo(categorie_calcul_a_p_l.payload)]} - function mode_occupation_to_jsoo(param) - {switch(param[0]) - {case 0: - var arg=param[1],t565=location_to_jsoo(arg); - return {"kind":"Locataire","payload":t565}; - case 1: - var arg$0=param[1],t567=logement_foyer_to_jsoo(arg$0); - return {"kind":"ResidentLogementFoyer","payload":t567}; - case 2: - var arg$1=param[1],t569=proprietaire_to_jsoo(arg$1); - return {"kind":"AccessionProprieteLocalUsageExclusifHabitation", - "payload":t569}; - case 3: - var arg$2=param[1],t571=location_to_jsoo(arg$2); - return {"kind":"SousLocataire","payload":t571}; - default: - var arg$3=param[1],t573=proprietaire_to_jsoo(arg$3); - return {"kind":"LocationAccession","payload":t573}}} - function mode_occupation_of_jsoo(mode_occupation) - {var cons=caml_string_of_jsstring(mode_occupation.kind); - if(caml_string_notequal(cons,cst_AccessionProprieteLocalUsa)) - {if(caml_string_notequal(cons,cst_Locataire$0)) - {if(caml_string_notequal(cons,cst_LocationAccession$0)) - {if(caml_string_notequal(cons,cst_ResidentLogementFoyer)) - {if(caml_string_notequal(cons,cst_SousLocataire$0)) - {var __u_=caml_call2(Stdlib_Printf[4],_XE_,cons); - return caml_call1(Stdlib[2],__u_)} - return [3,location_of_jsoo(mode_occupation.payload)]} - return [1,logement_foyer_of_jsoo(mode_occupation.payload)]} - return [4,proprietaire_of_jsoo(mode_occupation.payload)]} - return [0,location_of_jsoo(mode_occupation.payload)]} - return [2,proprietaire_of_jsoo(mode_occupation.payload)]} - function logement_to_jsoo(logement) - {var - t588=zone_d_habitation_to_jsoo(logement[9]), - t587=caml_call1(Runtime_ocaml_Runtime[48],logement[8]), - t586=! ! logement[7], - t585=parent_ou_autre_to_jsoo(logement[6]), - t584=loue_ou_sous_loue_a_des_tiers_(logement[5]), - t583=parent_ou_autre_to_jsoo(logement[4]), - t582=mode_occupation_to_jsoo(logement[3]), - t581=! ! logement[2], - t580=! ! logement[1]; - return {"residencePrincipale":t580, - "estEhpadOuMaisonAutonomieL31312Asf":t581, - "modeOccupation":t582, - "proprietaire":t583, - "loueOuSousLoueADesTiers":t584, - "usufruit":t585, - "logementDecentL89462":t586, - "surfaceMCarres":t587, - "zone":t588}} - function logement_of_jsoo(logement) - {var - __n_=zone_d_habitation_of_jsoo(logement.zone), - __o_=caml_call1(Runtime_ocaml_Runtime[49],logement.surfaceMCarres), - __p_=logement.logementDecentL89462 | 0, - __q_=parent_ou_autre_of_jsoo(logement.usufruit), - __r_=loue_ou_sous_loue_a_des_tiers_$0(logement.loueOuSousLoueADesTiers), - __s_=parent_ou_autre_of_jsoo(logement.proprietaire), - __t_=mode_occupation_of_jsoo(logement.modeOccupation); - return [0, - logement.residencePrincipale | 0, - logement.estEhpadOuMaisonAutonomieL31312Asf | 0, - __t_, - __s_, - __r_, - __q_, - __p_, - __o_, - __n_]} - function menage_to_jsoo(menage) - {var - t604=! ! menage[7], - t603=! ! menage[6], - t602=situation_familiale_to_jsoo(menage[5]), - t601=caml_call1(Runtime_ocaml_Runtime[48],menage[4]), - __j_=menage[3]; - function __k_(x){return personne_a_charge_to_jsoo(x)} - var - t600=caml_js_from_array(caml_call2(Stdlib_Array[15],__k_,__j_)), - t599=logement_to_jsoo(menage[2]), - __l_=menage[1]; - function __m_(x){return prestation_recue_to_jsoo(x)} - var t598=caml_js_from_array(caml_call2(Stdlib_Array[15],__m_,__l_)); - return {"prestationsRecues":t598, - "logement":t599, - "personnesACharge":t600, - "nombreAutresOccupantsLogement":t601, - "situationFamiliale":t602, - "conditionRattacheFoyerFiscalParentIfi":t603, - "enfantANaitreApresQuatriemeMoisGrossesse":t604}} - function menage_of_jsoo(menage) - {var - _Z$_=menage.enfantANaitreApresQuatriemeMoisGrossesse | 0, - __a_=menage.conditionRattacheFoyerFiscalParentIfi | 0, - __b_=situation_familiale_of_jsoo(menage.situationFamiliale), - __c_= - caml_call1 - (Runtime_ocaml_Runtime[49],menage.nombreAutresOccupantsLogement), - __d_=caml_js_to_array(menage.personnesACharge); - function __e_(x){return personne_a_charge_of_jsoo(x)} - var - __f_=caml_call1(caml_call1(Stdlib_Array[15],__e_),__d_), - __g_=logement_of_jsoo(menage.logement), - __h_=caml_js_to_array(menage.prestationsRecues); - function __i_(x){return prestation_recue_of_jsoo(x)} - return [0, - caml_call1(caml_call1(Stdlib_Array[15],__i_),__h_), - __g_, - __f_, - __c_, - __b_, - __a_, - _Z$_]} - function eligibilite_aides_personnelle_$2(eligibilite_aides_personnelle_) - {function t616(param) - {return caml_js_wrap_meth_callback - (function(input) - {return ! - ! - caml_call1(eligibilite_aides_personnelle_[5],input)})} - function t615(param) - {return caml_js_wrap_meth_callback - (function(input) - {return ! - ! - caml_call1(eligibilite_aides_personnelle_[4],input)})} - var - t614= - caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aides_personnelle_[3]), - t613=demandeur_to_jsoo(eligibilite_aides_personnelle_[2]), - t612=menage_to_jsoo(eligibilite_aides_personnelle_[1]); - return {"menageIn":t612, - "demandeurIn":t613, - "dateCouranteIn":t614, - "conditionLogementResidencePrincipaleIn": - caml_js_wrap_meth_callback(t615), - "conditionLogementSurfaceIn":caml_js_wrap_meth_callback(t616)}} - function eligibilite_aides_personnelle_$3(eligibilite_aides_personnelle_) - {var - _Z7_=caml_call1(Stdlib[2],cst_The_function_condition_log), - _Z8_=caml_call1(Stdlib[2],cst_The_function_condition_log$0), - _Z9_= - caml_call1 - (Runtime_jsoo_Runtime[4], - eligibilite_aides_personnelle_.dateCouranteIn), - _Z__=demandeur_of_jsoo(eligibilite_aides_personnelle_.demandeurIn); - return [0, - menage_of_jsoo(eligibilite_aides_personnelle_.menageIn), - _Z__, - _Z9_, - _Z8_, - _Z7_]} - function eligibilite_aide_personnalisee$2(eligibilite_aide_personnalisee) - {var - t622= - caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aide_personnalisee[3]), - t621=demandeur_to_jsoo(eligibilite_aide_personnalisee[2]), - t620=menage_to_jsoo(eligibilite_aide_personnalisee[1]); - return {"menageIn":t620,"demandeurIn":t621,"dateCouranteIn":t622}} - function eligibilite_aide_personnalisee$3(eligibilite_aide_personnalisee) - {var - _Z5_= - caml_call1 - (Runtime_jsoo_Runtime[4], - eligibilite_aide_personnalisee.dateCouranteIn), - _Z6_=demandeur_of_jsoo(eligibilite_aide_personnalisee.demandeurIn); - return [0, - menage_of_jsoo(eligibilite_aide_personnalisee.menageIn), - _Z6_, - _Z5_]} - function eligibilite_allocation_logemen$2(eligibilite_allocation_logemen) - {var - t629=! ! eligibilite_allocation_logemen[4], - t628=demandeur_to_jsoo(eligibilite_allocation_logemen[3]), - t627=menage_to_jsoo(eligibilite_allocation_logemen[2]), - t626= - caml_call1(Runtime_jsoo_Runtime[5],eligibilite_allocation_logemen[1]); - return {"dateCouranteIn":t626, - "menageIn":t627, - "demandeurIn":t628, - "beneficieAidePersonnaliseeLogementIn":t629}} - function eligibilite_allocation_logemen$3(eligibilite_allocation_logemen) - {var - _Z2_= - eligibilite_allocation_logemen.beneficieAidePersonnaliseeLogementIn - | - 0, - _Z3_=demandeur_of_jsoo(eligibilite_allocation_logemen.demandeurIn), - _Z4_=menage_of_jsoo(eligibilite_allocation_logemen.menageIn); - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - eligibilite_allocation_logemen.dateCouranteIn), - _Z4_, - _Z3_, - _Z2_]} - function eligibilite_prime_de_demenagem$2(eligibilite_prime_de_demenagem) - {var - t639= - caml_call1 - (Runtime_ocaml_Runtime[35],eligibilite_prime_de_demenagem[6]), - t638= - caml_call1(Runtime_jsoo_Runtime[5],eligibilite_prime_de_demenagem[5]), - t637=demandeur_to_jsoo(eligibilite_prime_de_demenagem[4]), - t636=menage_to_jsoo(eligibilite_prime_de_demenagem[3]), - t635= - caml_call1(Runtime_jsoo_Runtime[5],eligibilite_prime_de_demenagem[2]), - t634=informations_prime_de_demenage(eligibilite_prime_de_demenagem[1]); - return {"informationsIn":t634, - "dateEmmenagementIn":t635, - "menageIn":t636, - "demandeurIn":t637, - "dateCouranteIn":t638, - "depensesJustifieesReellementEngageesIn":t639}} - function eligibilite_prime_de_demenagem$3(eligibilite_prime_de_demenagem) - {var - _ZW_= - caml_call1 - (Runtime_ocaml_Runtime[42], - eligibilite_prime_de_demenagem.depensesJustifieesReellementEngageesIn), - _ZX_=caml_call1(Runtime_ocaml_Runtime[33],_ZW_), - _ZY_= - caml_call1 - (Runtime_jsoo_Runtime[4], - eligibilite_prime_de_demenagem.dateCouranteIn), - _ZZ_=demandeur_of_jsoo(eligibilite_prime_de_demenagem.demandeurIn), - _Z0_=menage_of_jsoo(eligibilite_prime_de_demenagem.menageIn), - _Z1_= - caml_call1 - (Runtime_jsoo_Runtime[4], - eligibilite_prime_de_demenagem.dateEmmenagementIn); - return [0, - informations_prime_de_demenage$0 - (eligibilite_prime_de_demenagem.informationsIn), - _Z1_, - _Z0_, - _ZZ_, - _ZY_, - _ZX_]} - function ressources_aides_personnelle_l$2(ressources_aides_personnelle_l) - {var - t658= - caml_call1 - (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[13]), - t657=paiement_logement_distinct_pro(ressources_aides_personnelle_l[12]), - t656= - caml_call1(Runtime_jsoo_Runtime[5],ressources_aides_personnelle_l[11]), - t655=! ! ressources_aides_personnelle_l[10], - t654=! ! ressources_aides_personnelle_l[9], - t653=mode_occupation_to_jsoo(ressources_aides_personnelle_l[8]), - t652=situation_familiale_to_jsoo(ressources_aides_personnelle_l[7]), - _ZS_=ressources_aides_personnelle_l[6]; - function _ZT_(x){return personne_a_charge_to_jsoo(x)} - var - t651=caml_js_from_array(caml_call2(Stdlib_Array[15],_ZT_,_ZS_)), - t650=! ! ressources_aides_personnelle_l[5], - t649=! ! ressources_aides_personnelle_l[4], - _ZU_=ressources_aides_personnelle_l[3]; - function _ZV_(x){return personne_vivant_habituellement(x)} - var - t648=caml_js_from_array(caml_call2(Stdlib_Array[15],_ZV_,_ZU_)), - t647= - caml_call1 - (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[2]), - t646= - caml_call1 - (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[1]); - return {"ressourcesDemandeurIn":t646, - "ressourcesConjointIn":t647, - "personnesVivantHabituellementFoyerIn":t648, - "demandeurExerceActiviteRemunereeIn":t649, - "conjointExerceActiviteRemunereeIn":t650, - "personnesAChargeIn":t651, - "situationFamilialeIn":t652, - "modeOccupationIn":t653, - "conditionAgeBourseEnseignementSuperieurIn":t654, - "demandeurPoursuitDesEtudesIn":t655, - "dateDemandeOuReexamenDroitIn":t656, - "paiementLogementDistinctProfessionnelIn":t657, - "ressourcesMenageArrondiesBaseIn":t658}} - function ressources_aides_personnelle_l$3(ressources_aides_personnelle_l) - {var - _Zz_= - caml_call1 - (Runtime_ocaml_Runtime[42], - ressources_aides_personnelle_l.ressourcesMenageArrondiesBaseIn), - _ZA_=caml_call1(Runtime_ocaml_Runtime[33],_Zz_), - _ZB_= - paiement_logement_distinct_pro$0 - (ressources_aides_personnelle_l.paiementLogementDistinctProfessionnelIn), - _ZC_= - caml_call1 - (Runtime_jsoo_Runtime[4], - ressources_aides_personnelle_l.dateDemandeOuReexamenDroitIn), - _ZD_=ressources_aides_personnelle_l.demandeurPoursuitDesEtudesIn | 0, - _ZE_= - ressources_aides_personnelle_l.conditionAgeBourseEnseignementSuperieurIn - | - 0, - _ZF_= - mode_occupation_of_jsoo - (ressources_aides_personnelle_l.modeOccupationIn), - _ZG_= - situation_familiale_of_jsoo - (ressources_aides_personnelle_l.situationFamilialeIn), - _ZH_= - caml_js_to_array(ressources_aides_personnelle_l.personnesAChargeIn); - function _ZI_(x){return personne_a_charge_of_jsoo(x)} - var - _ZJ_=caml_call1(caml_call1(Stdlib_Array[15],_ZI_),_ZH_), - _ZK_= - ressources_aides_personnelle_l.conjointExerceActiviteRemunereeIn - | - 0, - _ZL_= - ressources_aides_personnelle_l.demandeurExerceActiviteRemunereeIn - | - 0, - _ZM_= - caml_js_to_array - (ressources_aides_personnelle_l.personnesVivantHabituellementFoyerIn); - function _ZN_(x){return personne_vivant_habituellement$0(x)} - var - _ZO_=caml_call1(caml_call1(Stdlib_Array[15],_ZN_),_ZM_), - _ZP_= - caml_call1 - (Runtime_ocaml_Runtime[42], - ressources_aides_personnelle_l.ressourcesConjointIn), - _ZQ_=caml_call1(Runtime_ocaml_Runtime[33],_ZP_), - _ZR_= - caml_call1 - (Runtime_ocaml_Runtime[42], - ressources_aides_personnelle_l.ressourcesDemandeurIn); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_ZR_), - _ZQ_, - _ZO_, - _ZL_, - _ZK_, - _ZJ_, - _ZG_, - _ZF_, - _ZE_, - _ZD_, - _ZC_, - _ZB_, - _ZA_]} - function contributions_sociales_aides_p$2(contributions_sociales_aides_p) - {var - t672= - caml_call1(Runtime_jsoo_Runtime[5],contributions_sociales_aides_p[1]); - return {"dateCouranteIn":t672}} - function contributions_sociales_aides_p$3(contributions_sociales_aides_p) - {return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - contributions_sociales_aides_p.dateCouranteIn)]} - function calcul_aide_personnalisee_loge$11(calcul_aide_personnalisee_loge) - {var - t686=! ! calcul_aide_personnalisee_loge[13], - t685= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[12]), - t684=! ! calcul_aide_personnalisee_loge[11], - t683=type_aides_personnelle_logemen(calcul_aide_personnalisee_loge[10]), - t682=! ! calcul_aide_personnalisee_loge[9], - t681=! ! calcul_aide_personnalisee_loge[8], - t680=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[7]), - t679=situation_familiale_calcul_a_p(calcul_aide_personnalisee_loge[6]), - t678= - caml_call1 - (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[5]), - t677= - caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[4]), - t676=! ! calcul_aide_personnalisee_loge[3], - t675= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), - t674= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); - return {"loyerPrincipalBaseIn":t674, - "ressourcesMenageArrondiesIn":t675, - "beneficiaireAideAdulteOuEnfantHandicapesIn":t676, - "dateCouranteIn":t677, - "nombrePersonnesAChargeIn":t678, - "situationFamilialeCalculAplIn":t679, - "zoneIn":t680, - "logementEstChambreIn":t681, - "ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn":t682, - "typeAideIn":t683, - "colocationIn":t684, - "reductionLoyerSolidariteIn":t685, - "logementMeubleD8422In":t686}} - function calcul_aide_personnalisee_loge$12(calcul_aide_personnalisee_loge) - {var - _Zk_=calcul_aide_personnalisee_loge.logementMeubleD8422In | 0, - _Zl_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.reductionLoyerSolidariteIn), - _Zm_=caml_call1(Runtime_ocaml_Runtime[33],_Zl_), - _Zn_=calcul_aide_personnalisee_loge.colocationIn | 0, - _Zo_= - type_aides_personnelle_logemen$0 - (calcul_aide_personnalisee_loge.typeAideIn), - _Zp_= - calcul_aide_personnalisee_loge.ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn - | - 0, - _Zq_=calcul_aide_personnalisee_loge.logementEstChambreIn | 0, - _Zr_=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn), - _Zs_= - situation_familiale_calcul_a_p$0 - (calcul_aide_personnalisee_loge.situationFamilialeCalculAplIn), - _Zt_= - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn), - _Zu_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_aide_personnalisee_loge.dateCouranteIn), - _Zv_= - calcul_aide_personnalisee_loge.beneficiaireAideAdulteOuEnfantHandicapesIn - | - 0, - _Zw_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.ressourcesMenageArrondiesIn), - _Zx_=caml_call1(Runtime_ocaml_Runtime[33],_Zw_), - _Zy_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.loyerPrincipalBaseIn); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_Zy_), - _Zx_, - _Zv_, - _Zu_, - _Zt_, - _Zs_, - _Zr_, - _Zq_, - _Zp_, - _Zo_, - _Zn_, - _Zm_, - _Zk_]} - function calcul_equivalence_loyer_minim$2(calcul_equivalence_loyer_minim) - {var - t702= - caml_call1 - (Runtime_ocaml_Runtime[43],calcul_equivalence_loyer_minim[3]), - t701=! ! calcul_equivalence_loyer_minim[2], - t700= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_equivalence_loyer_minim[1]); - return {"ressourcesMenageArrondiesIn":t700, - "condition2Du83225In":t701, - "nNombrePartsD83225In":t702}} - function calcul_equivalence_loyer_minim$3(calcul_equivalence_loyer_minim) - {var - _Zh_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_equivalence_loyer_minim.nNombrePartsD83225In), - _Zi_=calcul_equivalence_loyer_minim.condition2Du83225In | 0, - _Zj_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_equivalence_loyer_minim.ressourcesMenageArrondiesIn); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_Zj_),_Zi_,_Zh_]} - function calcul_nombre_part_logement_fo$2(calcul_nombre_part_logement_fo) - {var - t708=situation_familiale_calcul_a_p(calcul_nombre_part_logement_fo[3]), - t707= - caml_call1 - (Runtime_ocaml_Runtime[48],calcul_nombre_part_logement_fo[2]), - t706=! ! calcul_nombre_part_logement_fo[1]; - return {"condition2Du83225In":t706, - "nombrePersonnesAChargeIn":t707, - "situationFamilialeCalculAplIn":t708}} - function calcul_nombre_part_logement_fo$3(calcul_nombre_part_logement_fo) - {var - _Zf_= - situation_familiale_calcul_a_p$0 - (calcul_nombre_part_logement_fo.situationFamilialeCalculAplIn), - _Zg_= - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_nombre_part_logement_fo.nombrePersonnesAChargeIn); - return [0, - calcul_nombre_part_logement_fo.condition2Du83225In | 0, - _Zg_, - _Zf_]} - function calcul_aide_personnalisee_loge$13(calcul_aide_personnalisee_loge) - {function t721(param) - {return caml_js_wrap_meth_callback - (function(input) - {var - _Ze_= - caml_call1(calcul_aide_personnalisee_loge[10],input); - return caml_call1(Runtime_ocaml_Runtime[43],_Ze_)})} - function t720(param) - {return caml_js_wrap_meth_callback - (function(input) - {return ! - ! - caml_call1(calcul_aide_personnalisee_loge[9],input)})} - var - t719= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[8]), - t718= - caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[7]), - t717=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[6]), - t716=situation_familiale_calcul_a_p(calcul_aide_personnalisee_loge[5]), - t715= - caml_call1 - (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[4]), - t714= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[3]), - t713= - caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[2]), - t712=type_logement_foyer_to_jsoo(calcul_aide_personnalisee_loge[1]); - return {"typeLogementFoyerIn":t712, - "dateConventionnementIn":t713, - "ressourcesMenageArrondiesIn":t714, - "nombrePersonnesAChargeIn":t715, - "situationFamilialeCalculAplIn":t716, - "zoneIn":t717, - "dateCouranteIn":t718, - "redevanceIn":t719, - "condition2Du83225In":caml_js_wrap_meth_callback(t720), - "nNombrePartsD83225In":caml_js_wrap_meth_callback(t721)}} - function calcul_aide_personnalisee_loge$14(calcul_aide_personnalisee_loge) - {var - _Y5_=caml_call1(Stdlib[2],cst_The_function_n_nombre_part), - _Y6_=caml_call1(Stdlib[2],cst_The_function_condition_2_d), - _Y7_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.redevanceIn), - _Y8_=caml_call1(Runtime_ocaml_Runtime[33],_Y7_), - _Y9_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_aide_personnalisee_loge.dateCouranteIn), - _Y__=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn), - _Y$_= - situation_familiale_calcul_a_p$0 - (calcul_aide_personnalisee_loge.situationFamilialeCalculAplIn), - _Za_= - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn), - _Zb_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.ressourcesMenageArrondiesIn), - _Zc_=caml_call1(Runtime_ocaml_Runtime[33],_Zb_), - _Zd_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_aide_personnalisee_loge.dateConventionnementIn); - return [0, - type_logement_foyer_of_jsoo - (calcul_aide_personnalisee_loge.typeLogementFoyerIn), - _Zd_, - _Zc_, - _Za_, - _Y$_, - _Y__, - _Y9_, - _Y8_, - _Y6_, - _Y5_]} - function calcul_nombre_parts_accession_$2(calcul_nombre_parts_accession_) - {var - t731=situation_familiale_calcul_a_p(calcul_nombre_parts_accession_[2]), - t730= - caml_call1 - (Runtime_ocaml_Runtime[48],calcul_nombre_parts_accession_[1]); - return {"nombrePersonnesAChargeIn":t730, - "situationFamilialeCalculAplIn":t731}} - function calcul_nombre_parts_accession_$3(calcul_nombre_parts_accession_) - {var - _Y4_= - situation_familiale_calcul_a_p$0 - (calcul_nombre_parts_accession_.situationFamilialeCalculAplIn); - return [0, - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_nombre_parts_accession_.nombrePersonnesAChargeIn), - _Y4_]} - function calcul_aide_personnalisee_loge$15(calcul_aide_personnalisee_loge) - {var - t747= - caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[14]), - t746=neuf_ou_ancien_to_jsoo(calcul_aide_personnalisee_loge[13]), - t745=type_pret_to_jsoo(calcul_aide_personnalisee_loge[12]), - t744=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[11]), - t743=! ! calcul_aide_personnalisee_loge[10], - t742=! ! calcul_aide_personnalisee_loge[9], - t741= - caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[8]), - t740=! ! calcul_aide_personnalisee_loge[7], - t739= - caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[6]), - t738=type_travaux_logement_d832_15_(calcul_aide_personnalisee_loge[5]), - t737=situation_familiale_calcul_a_p(calcul_aide_personnalisee_loge[4]), - t736= - caml_call1 - (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[3]), - t735= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), - t734= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); - return {"mensualitePrincipaleIn":t734, - "ressourcesMenageArrondiesIn":t735, - "nombrePersonnesAChargeIn":t736, - "situationFamilialeCalculAplIn":t737, - "typeTravauxLogementIn":t738, - "dateSignaturePretIn":t739, - "localHabitePremiereFoisBeneficiaireIn":t740, - "dateEntreeLogementIn":t741, - "coproprieteIn":t742, - "situationR822111317In":t743, - "zoneIn":t744, - "typePretIn":t745, - "ancienneteLogementIn":t746, - "dateCouranteIn":t747}} - function calcul_aide_personnalisee_loge$16(calcul_aide_personnalisee_loge) - {var - _YP_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_aide_personnalisee_loge.dateCouranteIn), - _YQ_= - neuf_ou_ancien_of_jsoo - (calcul_aide_personnalisee_loge.ancienneteLogementIn), - _YR_=type_pret_of_jsoo(calcul_aide_personnalisee_loge.typePretIn), - _YS_=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn), - _YT_=calcul_aide_personnalisee_loge.situationR822111317In | 0, - _YU_=calcul_aide_personnalisee_loge.coproprieteIn | 0, - _YV_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_aide_personnalisee_loge.dateEntreeLogementIn), - _YW_= - calcul_aide_personnalisee_loge.localHabitePremiereFoisBeneficiaireIn - | - 0, - _YX_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_aide_personnalisee_loge.dateSignaturePretIn), - _YY_= - type_travaux_logement_d832_15_$0 - (calcul_aide_personnalisee_loge.typeTravauxLogementIn), - _YZ_= - situation_familiale_calcul_a_p$0 - (calcul_aide_personnalisee_loge.situationFamilialeCalculAplIn), - _Y0_= - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn), - _Y1_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.ressourcesMenageArrondiesIn), - _Y2_=caml_call1(Runtime_ocaml_Runtime[33],_Y1_), - _Y3_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.mensualitePrincipaleIn); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_Y3_), - _Y2_, - _Y0_, - _YZ_, - _YY_, - _YX_, - _YW_, - _YV_, - _YU_, - _YT_, - _YS_, - _YR_, - _YQ_, - _YP_]} - function calcul_aide_personnalisee_loge$17(calcul_aide_personnalisee_loge) - {var - t768= - caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[7]), - t767=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[6]), - t766= - caml_call1 - (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[5]), - t765=situation_familiale_to_jsoo(calcul_aide_personnalisee_loge[4]), - t764= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[3]), - t763=type_aides_personnelle_logemen(calcul_aide_personnalisee_loge[2]), - t762=mode_occupation_to_jsoo(calcul_aide_personnalisee_loge[1]); - return {"modeOccupationIn":t762, - "typeAideIn":t763, - "ressourcesMenageSansArrondiIn":t764, - "situationFamilialeIn":t765, - "nombrePersonnesAChargeIn":t766, - "zoneIn":t767, - "dateCouranteIn":t768}} - function calcul_aide_personnalisee_loge$18(calcul_aide_personnalisee_loge) - {var - _YI_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_aide_personnalisee_loge.dateCouranteIn), - _YJ_=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn), - _YK_= - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn), - _YL_= - situation_familiale_of_jsoo - (calcul_aide_personnalisee_loge.situationFamilialeIn), - _YM_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_aide_personnalisee_loge.ressourcesMenageSansArrondiIn), - _YN_=caml_call1(Runtime_ocaml_Runtime[33],_YM_), - _YO_= - type_aides_personnelle_logemen$0 - (calcul_aide_personnalisee_loge.typeAideIn); - return [0, - mode_occupation_of_jsoo - (calcul_aide_personnalisee_loge.modeOccupationIn), - _YO_, - _YN_, - _YL_, - _YK_, - _YJ_, - _YI_]} - function calcul_allocation_logement_loc$2(calcul_allocation_logement_loc) - {var - t789=changement_logement_d842_4_to_(calcul_allocation_logement_loc[14]), - t788=! ! calcul_allocation_logement_loc[13], - t787= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[12]), - t786=! ! calcul_allocation_logement_loc[11], - t785=type_aides_personnelle_logemen(calcul_allocation_logement_loc[10]), - t784=! ! calcul_allocation_logement_loc[9], - t783=! ! calcul_allocation_logement_loc[8], - t782=zone_d_habitation_to_jsoo(calcul_allocation_logement_loc[7]), - t781=situation_familiale_calcul_a_p(calcul_allocation_logement_loc[6]), - t780= - caml_call1 - (Runtime_ocaml_Runtime[48],calcul_allocation_logement_loc[5]), - t779= - caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_loc[4]), - t778=! ! calcul_allocation_logement_loc[3], - t777= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[2]), - t776= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[1]); - return {"loyerPrincipalIn":t776, - "ressourcesMenageArrondiesIn":t777, - "beneficiaireAideAdulteOuEnfantHandicapesIn":t778, - "dateCouranteIn":t779, - "nombrePersonnesAChargeIn":t780, - "situationFamilialeCalculAplIn":t781, - "zoneIn":t782, - "logementEstChambreIn":t783, - "ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn":t784, - "typeAideIn":t785, - "colocationIn":t786, - "reductionLoyerSolidariteIn":t787, - "logementMeubleD8422In":t788, - "changementLogementD8424In":t789}} - function calcul_allocation_logement_loc$3(calcul_allocation_logement_loc) - {var - _Ys_= - changement_logement_d842_4_of_ - (calcul_allocation_logement_loc.changementLogementD8424In), - _Yt_=calcul_allocation_logement_loc.logementMeubleD8422In | 0, - _Yu_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_loc.reductionLoyerSolidariteIn), - _Yv_=caml_call1(Runtime_ocaml_Runtime[33],_Yu_), - _Yw_=calcul_allocation_logement_loc.colocationIn | 0, - _Yx_= - type_aides_personnelle_logemen$0 - (calcul_allocation_logement_loc.typeAideIn), - _Yy_= - calcul_allocation_logement_loc.ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn - | - 0, - _Yz_=calcul_allocation_logement_loc.logementEstChambreIn | 0, - _YA_=zone_d_habitation_of_jsoo(calcul_allocation_logement_loc.zoneIn), - _YB_= - situation_familiale_calcul_a_p$0 - (calcul_allocation_logement_loc.situationFamilialeCalculAplIn), - _YC_= - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_allocation_logement_loc.nombrePersonnesAChargeIn), - _YD_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_allocation_logement_loc.dateCouranteIn), - _YE_= - calcul_allocation_logement_loc.beneficiaireAideAdulteOuEnfantHandicapesIn - | - 0, - _YF_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_loc.ressourcesMenageArrondiesIn), - _YG_=caml_call1(Runtime_ocaml_Runtime[33],_YF_), - _YH_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_loc.loyerPrincipalIn); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_YH_), - _YG_, - _YE_, - _YD_, - _YC_, - _YB_, - _YA_, - _Yz_, - _Yy_, - _Yx_, - _Yw_, - _Yv_, - _Yt_, - _Ys_]} - function calcul_allocation_logement_acc$2(calcul_allocation_logement_acc) - {var - t816=! ! calcul_allocation_logement_acc[13], - t815= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[12]), - t814= - caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_acc[11]), - t813=! ! calcul_allocation_logement_acc[10], - t812=type_travaux_logement_r842_5_t(calcul_allocation_logement_acc[9]), - t811= - caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_acc[8]), - t810=! ! calcul_allocation_logement_acc[7], - t809= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[6]), - t808= - caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_acc[5]), - t807=zone_d_habitation_to_jsoo(calcul_allocation_logement_acc[4]), - t806=situation_familiale_calcul_a_p(calcul_allocation_logement_acc[3]), - t805= - caml_call1 - (Runtime_ocaml_Runtime[48],calcul_allocation_logement_acc[2]), - t804= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[1]); - return {"ressourcesMenageArrondiesBaseIn":t804, - "nombrePersonnesAChargeIn":t805, - "situationFamilialeCalculAplIn":t806, - "zoneIn":t807, - "dateCouranteIn":t808, - "mensualitePrincipaleIn":t809, - "situationR822111317In":t810, - "dateSignaturePretIn":t811, - "typeTravauxLogementIn":t812, - "localHabitePremiereFoisBeneficiaireIn":t813, - "dateEntreeLogementIn":t814, - "chargesMensuellesPretIn":t815, - "coproprieteIn":t816}} - function calcul_allocation_logement_acc$3(calcul_allocation_logement_acc) - {var - _Yd_=calcul_allocation_logement_acc.coproprieteIn | 0, - _Ye_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_acc.chargesMensuellesPretIn), - _Yf_=caml_call1(Runtime_ocaml_Runtime[33],_Ye_), - _Yg_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_allocation_logement_acc.dateEntreeLogementIn), - _Yh_= - calcul_allocation_logement_acc.localHabitePremiereFoisBeneficiaireIn - | - 0, - _Yi_= - type_travaux_logement_r842_5_o - (calcul_allocation_logement_acc.typeTravauxLogementIn), - _Yj_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_allocation_logement_acc.dateSignaturePretIn), - _Yk_=calcul_allocation_logement_acc.situationR822111317In | 0, - _Yl_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_acc.mensualitePrincipaleIn), - _Ym_=caml_call1(Runtime_ocaml_Runtime[33],_Yl_), - _Yn_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_allocation_logement_acc.dateCouranteIn), - _Yo_=zone_d_habitation_of_jsoo(calcul_allocation_logement_acc.zoneIn), - _Yp_= - situation_familiale_calcul_a_p$0 - (calcul_allocation_logement_acc.situationFamilialeCalculAplIn), - _Yq_= - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_allocation_logement_acc.nombrePersonnesAChargeIn), - _Yr_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_acc.ressourcesMenageArrondiesBaseIn); - return [0, - caml_call1(Runtime_ocaml_Runtime[33],_Yr_), - _Yq_, - _Yp_, - _Yo_, - _Yn_, - _Ym_, - _Yk_, - _Yj_, - _Yi_, - _Yh_, - _Yg_, - _Yf_, - _Yd_]} - function calcul_allocation_logement_foy$2(calcul_allocation_logement_foy) - {var - t838=categorie_equivalence_loyer_al(calcul_allocation_logement_foy[9]), - t837= - caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_foy[8]), - t836=zone_d_habitation_to_jsoo(calcul_allocation_logement_foy[7]), - t835=situation_familiale_calcul_a_p(calcul_allocation_logement_foy[6]), - t834= - caml_call1 - (Runtime_ocaml_Runtime[48],calcul_allocation_logement_foy[5]), - t833= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[4]), - t832= - caml_call1 - (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[3]), - t831= - caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_foy[2]), - t830=type_logement_foyer_to_jsoo(calcul_allocation_logement_foy[1]); - return {"typeLogementFoyerIn":t830, - "dateConventionnementIn":t831, - "redevanceIn":t832, - "ressourcesMenageArrondiesIn":t833, - "nombrePersonnesAChargeIn":t834, - "situationFamilialeCalculAplIn":t835, - "zoneIn":t836, - "dateCouranteIn":t837, - "categorieEquivalenceLoyerD84216In":t838}} - function calcul_allocation_logement_foy$3(calcul_allocation_logement_foy) - {var - _X5_= - categorie_equivalence_loyer_al$0 - (calcul_allocation_logement_foy.categorieEquivalenceLoyerD84216In), - _X6_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_allocation_logement_foy.dateCouranteIn), - _X7_=zone_d_habitation_of_jsoo(calcul_allocation_logement_foy.zoneIn), - _X8_= - situation_familiale_calcul_a_p$0 - (calcul_allocation_logement_foy.situationFamilialeCalculAplIn), - _X9_= - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_allocation_logement_foy.nombrePersonnesAChargeIn), - _X__= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_foy.ressourcesMenageArrondiesIn), - _X$_=caml_call1(Runtime_ocaml_Runtime[33],_X__), - _Ya_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_foy.redevanceIn), - _Yb_=caml_call1(Runtime_ocaml_Runtime[33],_Ya_), - _Yc_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_allocation_logement_foy.dateConventionnementIn); - return [0, - type_logement_foyer_of_jsoo - (calcul_allocation_logement_foy.typeLogementFoyerIn), - _Yc_, - _Yb_, - _X$_, - _X9_, - _X8_, - _X7_, - _X6_, - _X5_]} - function calcul_allocation_logement_in_(calcul_allocation_logement_in) - {var - t854=type_aides_personnelle_logemen(calcul_allocation_logement_in[7]), - t853= - caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_in[6]), - t852=zone_d_habitation_to_jsoo(calcul_allocation_logement_in[5]), - t851= - caml_call1(Runtime_ocaml_Runtime[48],calcul_allocation_logement_in[4]), - t850=situation_familiale_to_jsoo(calcul_allocation_logement_in[3]), - t849= - caml_call1(Runtime_ocaml_Runtime[35],calcul_allocation_logement_in[2]), - t848=mode_occupation_to_jsoo(calcul_allocation_logement_in[1]); - return {"modeOccupationIn":t848, - "ressourcesMenageSansArrondiIn":t849, - "situationFamilialeIn":t850, - "nombrePersonnesAChargeIn":t851, - "zoneIn":t852, - "dateCouranteIn":t853, - "typeAideIn":t854}} - function calcul_allocation_logement_in_$0(calcul_allocation_logement_in) - {var - _XY_= - type_aides_personnelle_logemen$0 - (calcul_allocation_logement_in.typeAideIn), - _XZ_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calcul_allocation_logement_in.dateCouranteIn), - _X0_=zone_d_habitation_of_jsoo(calcul_allocation_logement_in.zoneIn), - _X1_= - caml_call1 - (Runtime_ocaml_Runtime[49], - calcul_allocation_logement_in.nombrePersonnesAChargeIn), - _X2_= - situation_familiale_of_jsoo - (calcul_allocation_logement_in.situationFamilialeIn), - _X3_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calcul_allocation_logement_in.ressourcesMenageSansArrondiIn), - _X4_=caml_call1(Runtime_ocaml_Runtime[33],_X3_); - return [0, - mode_occupation_of_jsoo - (calcul_allocation_logement_in.modeOccupationIn), - _X4_, - _X2_, - _X1_, - _X0_, - _XZ_, - _XY_]} - function ouverture_droits_retraite_in_t(ouverture_droits_retraite_in) - {var - t862= - caml_call1(Runtime_jsoo_Runtime[5],ouverture_droits_retraite_in[1]); - return {"dateNaissanceAssureIn":t862}} - function ouverture_droits_retraite_in_o(ouverture_droits_retraite_in) - {return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - ouverture_droits_retraite_in.dateNaissanceAssureIn)]} - function impaye_depense_logement_in_to_(impaye_depense_logement_in) - {var - t869= - caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement_in[6]), - t868=depense_logement_to_jsoo(impaye_depense_logement_in[5]), - t867= - caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement_in[4]), - t866= - caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement_in[3]), - t865=versement_a_to_jsoo(impaye_depense_logement_in[2]), - t864=mode_occupation_to_jsoo(impaye_depense_logement_in[1]); - return {"modeOccupationIn":t864, - "aideVerseeIn":t865, - "montantAplIn":t866, - "montantChargesIn":t867, - "depenseLogementIn":t868, - "montantDetteIn":t869}} - function impaye_depense_logement_in_of_(impaye_depense_logement_in) - {var - _XQ_= - caml_call1 - (Runtime_ocaml_Runtime[42],impaye_depense_logement_in.montantDetteIn), - _XR_=caml_call1(Runtime_ocaml_Runtime[33],_XQ_), - _XS_= - depense_logement_of_jsoo(impaye_depense_logement_in.depenseLogementIn), - _XT_= - caml_call1 - (Runtime_ocaml_Runtime[42], - impaye_depense_logement_in.montantChargesIn), - _XU_=caml_call1(Runtime_ocaml_Runtime[33],_XT_), - _XV_= - caml_call1 - (Runtime_ocaml_Runtime[42],impaye_depense_logement_in.montantAplIn), - _XW_=caml_call1(Runtime_ocaml_Runtime[33],_XV_), - _XX_=versement_a_of_jsoo(impaye_depense_logement_in.aideVerseeIn); - return [0, - mode_occupation_of_jsoo - (impaye_depense_logement_in.modeOccupationIn), - _XX_, - _XW_, - _XU_, - _XS_, - _XR_]} - function calculette_aides_au_logement_i(calculette_aides_au_logement_i) - {var - t879= - caml_call1 - (Runtime_ocaml_Runtime[35],calculette_aides_au_logement_i[4]), - t878= - caml_call1(Runtime_jsoo_Runtime[5],calculette_aides_au_logement_i[3]), - t877=demandeur_to_jsoo(calculette_aides_au_logement_i[2]), - t876=menage_to_jsoo(calculette_aides_au_logement_i[1]); - return {"menageIn":t876, - "demandeurIn":t877, - "dateCouranteIn":t878, - "ressourcesMenagePrisesEnCompteIn":t879}} - function calculette_aides_au_logement_i$0(calculette_aides_au_logement_i) - {var - _XM_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calculette_aides_au_logement_i.ressourcesMenagePrisesEnCompteIn), - _XN_=caml_call1(Runtime_ocaml_Runtime[33],_XM_), - _XO_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calculette_aides_au_logement_i.dateCouranteIn), - _XP_=demandeur_of_jsoo(calculette_aides_au_logement_i.demandeurIn); - return [0, - menage_of_jsoo(calculette_aides_au_logement_i.menageIn), - _XP_, - _XO_, - _XN_]} - function calculette_aides_au_logement_g$2(calculette_aides_au_logement_g) - {var - t887= - caml_call1 - (Runtime_ocaml_Runtime[35],calculette_aides_au_logement_g[4]), - t886= - caml_call1(Runtime_jsoo_Runtime[5],calculette_aides_au_logement_g[3]), - t885=demandeur_to_jsoo(calculette_aides_au_logement_g[2]), - t884=menage_to_jsoo(calculette_aides_au_logement_g[1]); - return {"menageIn":t884, - "demandeurIn":t885, - "dateCouranteIn":t886, - "ressourcesMenagePrisesEnCompteIn":t887}} - function calculette_aides_au_logement_g$3(calculette_aides_au_logement_g) - {var - _XI_= - caml_call1 - (Runtime_ocaml_Runtime[42], - calculette_aides_au_logement_g.ressourcesMenagePrisesEnCompteIn), - _XJ_=caml_call1(Runtime_ocaml_Runtime[33],_XI_), - _XK_= - caml_call1 - (Runtime_jsoo_Runtime[4], - calculette_aides_au_logement_g.dateCouranteIn), - _XL_=demandeur_of_jsoo(calculette_aides_au_logement_g.demandeurIn); - return [0, - menage_of_jsoo(calculette_aides_au_logement_g.menageIn), - _XL_, - _XK_, - _XJ_]} - function base_mensuelle_allocations_fam$8(base_mensuelle_allocations_fam) - {var - t892= - caml_call1(Runtime_jsoo_Runtime[5],base_mensuelle_allocations_fam[1]); - return {"dateCouranteIn":t892}} - function base_mensuelle_allocations_fam$9(base_mensuelle_allocations_fam) - {return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - base_mensuelle_allocations_fam.dateCouranteIn)]} - function smic_in_to_jsoo$0(smic_in) - {var - t895=collectivite_to_jsoo$0(smic_in[2]), - t894=caml_call1(Runtime_jsoo_Runtime[5],smic_in[1]); - return {"dateCouranteIn":t894,"residenceIn":t895}} - function smic_in_of_jsoo$0(smic_in) - {var _XH_=collectivite_of_jsoo$0(smic_in.residenceIn); - return [0, - caml_call1(Runtime_jsoo_Runtime[4],smic_in.dateCouranteIn), - _XH_]} - function eligibilite_prestations_famili$2(eligibilite_prestations_famili) - {var - t900=collectivite_to_jsoo$0(eligibilite_prestations_famili[3]), - t899= - element_prestations_familiales$1(eligibilite_prestations_famili[2]), - t898= - caml_call1(Runtime_jsoo_Runtime[5],eligibilite_prestations_famili[1]); - return {"dateCouranteIn":t898, - "prestationCouranteIn":t899, - "residenceIn":t900}} - function eligibilite_prestations_famili$3(eligibilite_prestations_famili) - {var - _XF_=collectivite_of_jsoo$0(eligibilite_prestations_famili.residenceIn), - _XG_= - element_prestations_familiales$2 - (eligibilite_prestations_famili.prestationCouranteIn); - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - eligibilite_prestations_famili.dateCouranteIn), - _XG_, - _XF_]} - function contributions_sociales_aides_p$4 - (contributions_sociales_aides_p$1) - {return contributions_sociales_aides_p$0 - (contributions_sociales_aides_p - (contributions_sociales_aides_p$3 - (contributions_sociales_aides_p$1)))} - function calcul_equivalence_loyer_minim$4 - (calcul_equivalence_loyer_minim$1) - {return calcul_equivalence_loyer_minim$0 - (calcul_equivalence_loyer_minim - (calcul_equivalence_loyer_minim$3 - (calcul_equivalence_loyer_minim$1)))} - function calcul_nombre_part_logement_fo$4 - (calcul_nombre_part_logement_fo$1) - {return calcul_nombre_part_logement_fo$0 - (calcul_nombre_part_logement_fo - (calcul_nombre_part_logement_fo$3 - (calcul_nombre_part_logement_fo$1)))} - function calcul_nombre_parts_accession_$4 - (calcul_nombre_parts_accession_$1) - {return calcul_nombre_parts_accession_$0 - (calcul_nombre_parts_accession_ - (calcul_nombre_parts_accession_$3 - (calcul_nombre_parts_accession_$1)))} - function ouverture_droits_retraite$0(ouverture_droits_retraite_in) - {return ouverture_droits_retraite_to_j - (ouverture_droits_retraite - (ouverture_droits_retraite_in_o(ouverture_droits_retraite_in)))} - function impaye_depense_logement$0(impaye_depense_logement_in) - {return impaye_depense_logement_to_jso - (impaye_depense_logement - (impaye_depense_logement_in_of_(impaye_depense_logement_in)))} - function base_mensuelle_allocations_fam$10(base_mensuelle_allocations_fam) - {return base_mensuelle_allocations_fam$6 - (base_mensuelle_allocations_fam$5 - (base_mensuelle_allocations_fam$9 - (base_mensuelle_allocations_fam)))} - function smic$2(smic_in) - {return smic_to_jsoo$0(smic$1(smic_in_of_jsoo$0(smic_in)))} - function calcul_aide_personnalisee_loge$19 - (calcul_aide_personnalisee_loge$0) - {return calcul_aide_personnalisee_loge$3 - (calcul_aide_personnalisee_loge - (calcul_aide_personnalisee_loge$12 - (calcul_aide_personnalisee_loge$0)))} - function calcul_aide_personnalisee_loge$20(calcul_aide_personnalisee_loge) - {return calcul_aide_personnalisee_loge$5 - (calcul_aide_personnalisee_loge$0 - (calcul_aide_personnalisee_loge$14 - (calcul_aide_personnalisee_loge)))} - function calcul_aide_personnalisee_loge$21(calcul_aide_personnalisee_loge) - {return calcul_aide_personnalisee_loge$7 - (calcul_aide_personnalisee_loge$1 - (calcul_aide_personnalisee_loge$16 - (calcul_aide_personnalisee_loge)))} - function eligibilite_aides_personnelle_$4 - (eligibilite_aides_personnelle_$1) - {return eligibilite_aides_personnelle_$0 - (eligibilite_aides_personnelle_ - (eligibilite_aides_personnelle_$3 - (eligibilite_aides_personnelle_$1)))} - function ressources_aides_personnelle_l$4 - (ressources_aides_personnelle_l$1) - {return ressources_aides_personnelle_l$0 - (ressources_aides_personnelle_l - (ressources_aides_personnelle_l$3 - (ressources_aides_personnelle_l$1)))} - function eligibilite_prestations_famili$4 - (eligibilite_prestations_famili$1) - {return eligibilite_prestations_famili$0 - (eligibilite_prestations_famili - (eligibilite_prestations_famili$3 - (eligibilite_prestations_famili$1)))} - function calcul_allocation_logement_loc$4 - (calcul_allocation_logement_loc$1) - {return calcul_allocation_logement_loc$0 - (calcul_allocation_logement_loc - (calcul_allocation_logement_loc$3 - (calcul_allocation_logement_loc$1)))} - function calcul_allocation_logement_foy$4 - (calcul_allocation_logement_foy$1) - {return calcul_allocation_logement_foy$0 - (calcul_allocation_logement_foy - (calcul_allocation_logement_foy$3 - (calcul_allocation_logement_foy$1)))} - function calcul_allocation_logement_acc$4 - (calcul_allocation_logement_acc$1) - {return calcul_allocation_logement_acc$0 - (calcul_allocation_logement_acc - (calcul_allocation_logement_acc$3 - (calcul_allocation_logement_acc$1)))} - function calcul_aide_personnalisee_loge$22(calcul_aide_personnalisee_loge) - {return calcul_aide_personnalisee_loge$9 - (calcul_aide_personnalisee_loge$2 - (calcul_aide_personnalisee_loge$18 - (calcul_aide_personnalisee_loge)))} - function eligibilite_prime_de_demenagem$4 - (eligibilite_prime_de_demenagem$1) - {return eligibilite_prime_de_demenagem$0 - (eligibilite_prime_de_demenagem - (eligibilite_prime_de_demenagem$3 - (eligibilite_prime_de_demenagem$1)))} - function eligibilite_aide_personnalisee$4 - (eligibilite_aide_personnalisee$1) - {return eligibilite_aide_personnalisee$0 - (eligibilite_aide_personnalisee - (eligibilite_aide_personnalisee$3 - (eligibilite_aide_personnalisee$1)))} - function eligibilite_allocation_logemen$4 - (eligibilite_allocation_logemen$1) - {return eligibilite_allocation_logemen$0 - (eligibilite_allocation_logemen - (eligibilite_allocation_logemen$3 - (eligibilite_allocation_logemen$1)))} - function calcul_allocation_logement$0(calcul_allocation_logement_in) - {return calcul_allocation_logement_to_ - (calcul_allocation_logement - (calcul_allocation_logement_in_$0 - (calcul_allocation_logement_in)))} - function calculette_aides_au_logement$0(calculette_aides_au_logement_i) - {return calculette_aides_au_logement_t - (calculette_aides_au_logement - (calculette_aides_au_logement_i$0 - (calculette_aides_au_logement_i)))} - function calculette_aides_au_logement_g$4 - (calculette_aides_au_logement_g$1) - {return calculette_aides_au_logement_g$0 - (calculette_aides_au_logement_g - (calculette_aides_au_logement_g$3 - (calculette_aides_au_logement_g$1)))} - function t927(param) - {return caml_js_wrap_callback(calculette_aides_au_logement_g$4)} - function t926(param) - {return caml_js_wrap_callback(calculette_aides_au_logement$0)} - function t925(param) - {return caml_js_wrap_callback(calcul_allocation_logement$0)} - function t924(param) - {return caml_js_wrap_callback(eligibilite_allocation_logemen$4)} - function t923(param) - {return caml_js_wrap_callback(eligibilite_aide_personnalisee$4)} - function t922(param) - {return caml_js_wrap_callback(eligibilite_prime_de_demenagem$4)} - function t921(param) - {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$22)} - function t920(param) - {return caml_js_wrap_callback(calcul_allocation_logement_acc$4)} - function t919(param) - {return caml_js_wrap_callback(calcul_allocation_logement_foy$4)} - function t918(param) - {return caml_js_wrap_callback(calcul_allocation_logement_loc$4)} - function t917(param) - {return caml_js_wrap_callback(eligibilite_prestations_famili$4)} - function t916(param) - {return caml_js_wrap_callback(ressources_aides_personnelle_l$4)} - function t915(param) - {return caml_js_wrap_callback(eligibilite_aides_personnelle_$4)} - function t914(param) - {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$21)} - function t913(param) - {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$20)} - function t912(param) - {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$19)} - function t911(param){return caml_js_wrap_callback(smic$2)} - function t910(param) - {return caml_js_wrap_callback(base_mensuelle_allocations_fam$10)} - function t909(param) - {return caml_js_wrap_callback(impaye_depense_logement$0)} - function t908(param) - {return caml_js_wrap_callback(ouverture_droits_retraite$0)} - function t907(param) - {return caml_js_wrap_callback(calcul_nombre_parts_accession_$4)} - function t906(param) - {return caml_js_wrap_callback(calcul_nombre_part_logement_fo$4)} - function t905(param) - {return caml_js_wrap_callback(calcul_equivalence_loyer_minim$4)} - function t904(param) - {return caml_js_wrap_callback(contributions_sociales_aides_p$4)} - caml_call2 - (Js_of_ocaml_Js[46], - cst_AidesLogementLib, - {"contributionsSocialesAidesPersonnelleLogement": - caml_js_wrap_meth_callback(t904), - "calculEquivalenceLoyerMinimale":caml_js_wrap_meth_callback(t905), - "calculNombrePartLogementFoyer":caml_js_wrap_meth_callback(t906), - "calculNombrePartsAccessionPropriete":caml_js_wrap_meth_callback(t907), - "ouvertureDroitsRetraite":caml_js_wrap_meth_callback(t908), - "impayeDepenseLogement":caml_js_wrap_meth_callback(t909), - "baseMensuelleAllocationsFamiliales":caml_js_wrap_meth_callback(t910), - "smic":caml_js_wrap_meth_callback(t911), - "calculAidePersonnaliseeLogementLocatif": - caml_js_wrap_meth_callback(t912), - "calculAidePersonnaliseeLogementFoyer":caml_js_wrap_meth_callback(t913), - "calculAidePersonnaliseeLogementAccessionPropriete": - caml_js_wrap_meth_callback(t914), - "eligibiliteAidesPersonnelleLogement":caml_js_wrap_meth_callback(t915), - "ressourcesAidesPersonnelleLogement":caml_js_wrap_meth_callback(t916), - "eligibilitePrestationsFamiliales":caml_js_wrap_meth_callback(t917), - "calculAllocationLogementLocatif":caml_js_wrap_meth_callback(t918), - "calculAllocationLogementFoyer":caml_js_wrap_meth_callback(t919), - "calculAllocationLogementAccessionPropriete": - caml_js_wrap_meth_callback(t920), - "calculAidePersonnaliseeLogement":caml_js_wrap_meth_callback(t921), - "eligibilitePrimeDeDemenagement":caml_js_wrap_meth_callback(t922), - "eligibiliteAidePersonnaliseeLogement":caml_js_wrap_meth_callback(t923), - "eligibiliteAllocationLogement":caml_js_wrap_meth_callback(t924), - "calculAllocationLogement":caml_js_wrap_meth_callback(t925), - "calculetteAidesAuLogement":caml_js_wrap_meth_callback(t926), - "calculetteAidesAuLogementGardeAlternee": - caml_js_wrap_meth_callback(t927)}); - var - Law_source_Aides_logement_api_= - [0, - type_pret_to_jsoo, - type_pret_of_jsoo, - titulaire_pret_to_jsoo, - titulaire_pret_of_jsoo, - type_travaux_logement_d832_15_, - type_travaux_logement_d832_15_$0, - type_travaux_logement_r842_5_t, - type_travaux_logement_r842_5_o, - ameliore_par_occupant_to_jsoo, - ameliore_par_occupant_of_jsoo, - limite_tranche_to_jsoo, - limite_tranche_of_jsoo, - limite_tranche_decimal_to_jsoo, - limite_tranche_decimal_of_jsoo, - prestation_recue_to_jsoo, - prestation_recue_of_jsoo, - parent_ou_autre_to_jsoo, - parent_ou_autre_of_jsoo, - situation_garde_alternee_to_js, - situation_garde_alternee_of_js, - parente_to_jsoo, - parente_of_jsoo, - date_de_naissance_ou_mois_de_g, - date_de_naissance_ou_mois_de_g$0, - zone_d_habitation_to_jsoo, - zone_d_habitation_of_jsoo, - paiement_logement_distinct_pro, - paiement_logement_distinct_pro$0, - versement_a_to_jsoo, - versement_a_of_jsoo, - depense_logement_to_jsoo, - depense_logement_of_jsoo, - mode_occupation_impaye_to_jsoo, - mode_occupation_impaye_of_jsoo, - type_eligibilite_allocation_lo, - type_eligibilite_allocation_lo$0, - type_aides_personnelle_logemen, - type_aides_personnelle_logemen$0, - situation_familiale_to_jsoo, - situation_familiale_of_jsoo, - prise_en_charge_to_jsoo$0, - prise_en_charge_of_jsoo$0, - type_logement_foyer_to_jsoo, - type_logement_foyer_of_jsoo, - categorie_equivalence_loyer_al, - categorie_equivalence_loyer_al$0, - situation_familiale_calcul_a_p, - situation_familiale_calcul_a_p$0, - collectivite_to_jsoo$0, - collectivite_of_jsoo$0, - prise_en_charge_enfant_to_jsoo, - prise_en_charge_enfant_of_jsoo, - situation_obligation_scolaire_$1, - situation_obligation_scolaire_$2, - element_prestations_familiales$1, - element_prestations_familiales$2, - convention_bailleur_social_to_, - convention_bailleur_social_of_, - convention_a_n_h_a_to_jsoo, - convention_a_n_h_a_of_jsoo, - personne_sous_location_to_jsoo, - personne_sous_location_of_jsoo, - patrimoine_to_jsoo, - patrimoine_of_jsoo, - conditions_etrangers_to_jsoo, - conditions_etrangers_of_jsoo, - personne_vivant_habituellement, - personne_vivant_habituellement$0, - eligibilite_aide_personnalisee$0, - eligibilite_aide_personnalisee$1, - eligibilite_prime_de_demenagem$0, - eligibilite_prime_de_demenagem$1, - ressources_aides_personnelle_l$0, - ressources_aides_personnelle_l$1, - contributions_sociales_aides_p$0, - contributions_sociales_aides_p$1, - calcul_aide_personnalisee_loge$3, - calcul_aide_personnalisee_loge$4, - calcul_equivalence_loyer_minim$0, - calcul_equivalence_loyer_minim$1, - calcul_nombre_part_logement_fo$0, - calcul_nombre_part_logement_fo$1, - calcul_aide_personnalisee_loge$5, - calcul_aide_personnalisee_loge$6, - calcul_nombre_parts_accession_$0, - calcul_nombre_parts_accession_$1, - calcul_aide_personnalisee_loge$7, - calcul_aide_personnalisee_loge$8, - traitement_formule_aide_finale, - traitement_formule_aide_finale$0, - calcul_aide_personnalisee_loge$9, - calcul_aide_personnalisee_loge$10, - infos_changement_logement_d842, - infos_changement_logement_d842$0, - calcul_allocation_logement_loc$0, - calcul_allocation_logement_loc$1, - calcul_allocation_logement_acc$0, - calcul_allocation_logement_acc$1, - calcul_allocation_logement_foy$0, - calcul_allocation_logement_foy$1, - calcul_allocation_logement_to_, - calcul_allocation_logement_of_, - ouverture_droits_retraite_to_j, - ouverture_droits_retraite_of_j, - impaye_depense_logement_to_jso, - impaye_depense_logement_of_jso, - calculette_aides_au_logement_t, - calculette_aides_au_logement_o, - calculette_aides_au_logement_g$0, - calculette_aides_au_logement_g$1, - base_mensuelle_allocations_fam$6, - base_mensuelle_allocations_fam$7, - smic_to_jsoo$0, - smic_of_jsoo$0, - pret_to_jsoo, - pret_of_jsoo, - neuf_ou_ancien_to_jsoo, - neuf_ou_ancien_of_jsoo, - tranche_revenu_to_jsoo, - tranche_revenu_of_jsoo, - tranche_revenu_decimal_to_jsoo, - tranche_revenu_decimal_of_jsoo, - autre_personne_a_charge_to_jso, - autre_personne_a_charge_of_jso, - date_naissance_troisieme_ou_de, - date_naissance_troisieme_ou_de$0, - eligibilite_allocation_logemen$0, - eligibilite_allocation_logemen$1, - logement_foyer_to_jsoo, - logement_foyer_of_jsoo, - enfant_prestations_familiales_, - enfant_prestations_familiales_$0, - enfant_a_charge_to_jsoo, - enfant_a_charge_of_jsoo, - type_bailleur_to_jsoo, - type_bailleur_of_jsoo, - loue_ou_sous_loue_a_des_tiers_, - loue_ou_sous_loue_a_des_tiers_$0, - nationalite_to_jsoo, - nationalite_of_jsoo, - changement_logement_d842_4_to_, - changement_logement_d842_4_of_, - proprietaire_to_jsoo, - proprietaire_of_jsoo, - informations_prime_de_demenage, - informations_prime_de_demenage$0, - eligibilite_prestations_famili$0, - eligibilite_prestations_famili$1, - personne_a_charge_to_jsoo, - personne_a_charge_of_jsoo, - demandeur_to_jsoo, - demandeur_of_jsoo, - location_to_jsoo, - location_of_jsoo, - eligibilite_aides_personnelle_$0, - eligibilite_aides_personnelle_$1, - categorie_calcul_a_p_l_to_jsoo, - categorie_calcul_a_p_l_of_jsoo, - mode_occupation_to_jsoo, - mode_occupation_of_jsoo, - logement_to_jsoo, - logement_of_jsoo, - menage_to_jsoo, - menage_of_jsoo, - eligibilite_aides_personnelle_$2, - eligibilite_aides_personnelle_$3, - eligibilite_aide_personnalisee$2, - eligibilite_aide_personnalisee$3, - eligibilite_allocation_logemen$2, - eligibilite_allocation_logemen$3, - eligibilite_prime_de_demenagem$2, - eligibilite_prime_de_demenagem$3, - ressources_aides_personnelle_l$2, - ressources_aides_personnelle_l$3, - contributions_sociales_aides_p$2, - contributions_sociales_aides_p$3, - calcul_aide_personnalisee_loge$11, - calcul_aide_personnalisee_loge$12, - calcul_equivalence_loyer_minim$2, - calcul_equivalence_loyer_minim$3, - calcul_nombre_part_logement_fo$2, - calcul_nombre_part_logement_fo$3, - calcul_aide_personnalisee_loge$13, - calcul_aide_personnalisee_loge$14, - calcul_nombre_parts_accession_$2, - calcul_nombre_parts_accession_$3, - calcul_aide_personnalisee_loge$15, - calcul_aide_personnalisee_loge$16, - calcul_aide_personnalisee_loge$17, - calcul_aide_personnalisee_loge$18, - calcul_allocation_logement_loc$2, - calcul_allocation_logement_loc$3, - calcul_allocation_logement_acc$2, - calcul_allocation_logement_acc$3, - calcul_allocation_logement_foy$2, - calcul_allocation_logement_foy$3, - calcul_allocation_logement_in_, - calcul_allocation_logement_in_$0, - ouverture_droits_retraite_in_t, - ouverture_droits_retraite_in_o, - impaye_depense_logement_in_to_, - impaye_depense_logement_in_of_, - calculette_aides_au_logement_i, - calculette_aides_au_logement_i$0, - calculette_aides_au_logement_g$2, - calculette_aides_au_logement_g$3, - base_mensuelle_allocations_fam$8, - base_mensuelle_allocations_fam$9, - smic_in_to_jsoo$0, - smic_in_of_jsoo$0, - eligibilite_prestations_famili$2, - eligibilite_prestations_famili$3, - contributions_sociales_aides_p$4, - calcul_equivalence_loyer_minim$4, - calcul_nombre_part_logement_fo$4, - calcul_nombre_parts_accession_$4, - ouverture_droits_retraite$0, - impaye_depense_logement$0, - base_mensuelle_allocations_fam$10, - smic$2, - calcul_aide_personnalisee_loge$19, - calcul_aide_personnalisee_loge$20, - calcul_aide_personnalisee_loge$21, - eligibilite_aides_personnelle_$4, - ressources_aides_personnelle_l$4, - eligibilite_prestations_famili$4, - calcul_allocation_logement_loc$4, - calcul_allocation_logement_foy$4, - calcul_allocation_logement_acc$4, - calcul_aide_personnalisee_loge$22, - eligibilite_prime_de_demenagem$4, - eligibilite_aide_personnalisee$4, - eligibilite_allocation_logemen$4, - calcul_allocation_logement$0, - calculette_aides_au_logement$0, - calculette_aides_au_logement_g$4]; - caml_register_global - (8577, - Law_source_Aides_logement_api_, - "Law_source__Aides_logement_api_web"); - return} - (globalThis)); - - -//# 1 ".api_web.eobjs/byte/dune__exe__Api_web.cmo.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_js_wrap_callback=runtime.caml_js_wrap_callback, - caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - var - global_data=runtime.caml_get_global_data(), - Law_source_Allocations_familia= - 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; - function t4(param) - {return caml_js_wrap_callback - (function(calculette_aides_au_logement_g) - {function _b_(param) - {var - t1= - caml_call1 - (Law_source_Aides_logement_api_[236], - calculette_aides_au_logement_g); - return t1.aideFinale} - return caml_call1(Runtime_jsoo_Runtime[6],_b_)})} - function t3(param) - {return caml_js_wrap_callback - (function(interface_allocations_familial) - {function _a_(param) - {var - t0= - caml_call1 - (Law_source_Allocations_familia[51], - interface_allocations_familial); - return t0.iMontantVerse} - return caml_call1(Runtime_jsoo_Runtime[6],_a_)})} - caml_call1 - (Js_of_ocaml_Js[47], - {"eventsManager":Runtime_jsoo_Runtime[1], - "computeAllocationsFamiliales":caml_js_wrap_meth_callback(t3), - "computeAidesAuLogement":caml_js_wrap_meth_callback(t4)}); - var Dune_exe_Api_web=[0]; - runtime.caml_register_global(12,Dune_exe_Api_web,"Dune__exe__Api_web"); - return} - (globalThis)); - - -//# 1 "../../.js/stdlib/std_exit.cmo.js" -(function(globalThis) - {"use strict"; - var runtime=globalThis.jsoo_runtime; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - var global_data=runtime.caml_get_global_data(),Stdlib=global_data.Stdlib; - caml_call1(Stdlib[103],0); - var Std_exit=[0]; - runtime.caml_register_global(1,Std_exit,"Std_exit"); - return} - (globalThis)); - - -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJhcGlfd2ViLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIk9iamVjdCIsImdsb2JhbFRoaXMiLCJ0aGlzIiwiZ2V0IiwiX1RfIiwiZ2xvYmFsIiwic2VsZiIsImNhbWxfaW50NjRfaXNfemVybyIsIngiLCJjYW1sX3N0cl9yZXBlYXQiLCJuIiwicyIsInIiLCJsIiwiY2FtbF9pbnQ2NF9vZmZzZXQiLCJNYXRoIiwiY2FtbF9yYWlzZV9jb25zdGFudCIsInRhZyIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsImgiLCJzaWduIiwib2Zmc2V0IiwibW9kdWx1cyIsImRpdmlzb3IiLCJxdW90aWVudCIsInkiLCJxIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludDY0X2lzX25lZ2F0aXZlIiwiY2FtbF9pbnQ2NF9uZWciLCJjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMiLCJhIiwiaSIsImxlbiIsImYiLCJTdHJpbmciLCJudWxsIiwiY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwianNvb19pc19hc2NpaSIsImNhbWxfdXRmMTZfb2ZfdXRmOCIsImIiLCJ0IiwiYyIsImMxIiwiYzIiLCJ2IiwiaiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImxlbmd0aCIsImNvbnRlbnQiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfcGFyc2VfZm9ybWF0IiwiZm10IiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJlcnJubyIsInZhcmlhbnQiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2J5dGVzX2JvdW5kX2Vycm9yIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfbWxfYnl0ZXNfbGVuZ3RoIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiQXJyYXkiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsImNhbWxfYmxpdF9zdHJpbmciLCJlIiwiTWxGaWxlIiwiTWxGYWtlRmlsZSIsIm9sZCIsImJ1ZiIsInBvcyIsImNsZW4iLCJuZXdfc3RyIiwib2xkX2RhdGEiLCJNbEZha2VEZXZpY2UiLCJyZXMiLCJTeW1ib2wiLCJuYW1lX3NsYXNoIiwibW9kZSIsInJhaXNlX3VuaXgiLCJwYXJlbnQiLCJSZWdFeHAiLCJzZWVuIiwibSIsIm9rIiwiZmlsZSIsImJ5dGVzIiwiY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIiwiY2FtbF9zdHJpbmdfdW5zYWZlX2dldCIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9hcnJheV9vZl9ieXRlcyIsImNhbWxfYnl0ZXNfdW5zYWZlX3NldCIsImNhbWxfYnl0ZXNfc2V0IiwiTWxOb2RlRmlsZSIsImZkIiwicmVxdWlyZSIsImVyciIsImJ1Zl9vZmZzZXQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJvIiwianNfc3RhdHMiLCJ0b19kaXIiLCJ0YXJnZXQiLCJsaW5rIiwiZmlsZV9raW5kIiwiY2FtbF9nZXRfcm9vdCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX3Jvb3QiLCJqc29vX21vdW50X3BvaW50IiwicmVzb2x2ZV9mc19kZXZpY2UiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3JhaXNlX25vdF9mb3VuZCIsImNhbWxfc3lzX2dldGVudiIsImciLCJ1bmRlZmluZWQiLCJzaGlmdF9yaWdodF9uYXQiLCJuYXQxIiwib2ZzMSIsImxlbjEiLCJuYXQyIiwib2ZzMiIsIm5iaXRzIiwid3JhcCIsImNhbWxfZ3Jfc3RhdGUiLCJjYW1sX2dyX3N0YXRlX2dldCIsImNhbWxfZ3JfcG9pbnRfY29sb3IiLCJpbSIsIk1sT2JqZWN0VGFibGUiLCJOYWl2ZUxvb2t1cCIsIm9ianMiLCJjYW1sX3N5c19yZW5hbWUiLCJvX3Jvb3QiLCJuX3Jvb3QiLCJjYW1sX2xvZzEwX2Zsb2F0IiwidW5peF91bmxpbmsiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwidW5peF9ybWRpciIsImNhbWxfbWxfcmVmaWxsX2lucHV0IiwiY2hhbiIsInN0ciIsInN0cl9sZW4iLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9tbF9tYXlfcmVmaWxsX2lucHV0IiwiY2hhbmlkIiwiY2FtbF9hcnJheV9ib3VuZF9lcnJvciIsImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lIiwiY2FtbF9nY19taW5vciIsImJpZ0ludCIsIkJBU0UiLCJMT0dfQkFTRSIsIk1BWF9JTlQiLCJNQVhfSU5UX0FSUiIsInNtYWxsVG9BcnJheSIsIkRFRkFVTFRfQUxQSEFCRVQiLCJCaWdJbnQiLCJqb29fZ2xvYmFsX29iamVjdCIsInN1cHBvcnRzTmF0aXZlQmlnSW50IiwiSW50ZWdlciIsInJhZGl4IiwiYWxwaGFiZXQiLCJjYXNlU2Vuc2l0aXZlIiwicGFyc2VWYWx1ZSIsInBhcnNlQmFzZSIsIkJpZ0ludGVnZXIiLCJ2YWx1ZSIsIlNtYWxsSW50ZWdlciIsIk5hdGl2ZUJpZ0ludCIsImlzUHJlY2lzZSIsImFycmF5VG9TbWFsbCIsImFyciIsInRyaW0iLCJjb21wYXJlQWJzIiwiY3JlYXRlQXJyYXkiLCJ0cnVuY2F0ZSIsImFkZCIsImxfYSIsImxfYiIsImNhcnJ5IiwiYmFzZSIsInN1bSIsImFkZEFueSIsImFkZFNtYWxsIiwic3VidHJhY3QiLCJhX2wiLCJiX2wiLCJib3Jyb3ciLCJkaWZmZXJlbmNlIiwic3VidHJhY3RBbnkiLCJzdWJ0cmFjdFNtYWxsIiwic21hbGwiLCJtdWx0aXBseUxvbmciLCJwcm9kdWN0IiwiYV9pIiwiYl9qIiwibXVsdGlwbHlTbWFsbCIsInNoaWZ0TGVmdCIsIm11bHRpcGx5S2FyYXRzdWJhIiwiYWMiLCJiZCIsImFiY2QiLCJ1c2VLYXJhdHN1YmEiLCJsMSIsImwyIiwiYWJzIiwibXVsdGlwbHlTbWFsbEFuZEFycmF5Iiwic3F1YXJlIiwiYV9qIiwiZGl2TW9kMSIsImRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCIsImxhbWJkYSIsInJlbWFpbmRlciIsInF1b3RpZW50RGlnaXQiLCJzaGlmdCIsImRpdk1vZFNtYWxsIiwiZGl2TW9kMiIsInBhcnQiLCJndWVzcyIsInhsZW4iLCJoaWdoeCIsImhpZ2h5IiwiY2hlY2siLCJkaXZNb2RBbnkiLCJFcnJvciIsImNvbXBhcmlzb24iLCJxU2lnbiIsIm1vZCIsIm1TaWduIiwiXzAiLCJfMSIsIl8yIiwiZXhwIiwiSW5maW5pdHkiLCJpc0Jhc2ljUHJpbWUiLCJtaWxsZXJSYWJpblRlc3QiLCJuUHJldiIsInN0cmljdCIsImlzUHJpbWUiLCJiaXRzIiwibG9nTiIsIml0ZXJhdGlvbnMiLCJuZXdUIiwibmV3UiIsImxhc3RUIiwibGFzdFIiLCJwb3dlcnNPZlR3byIsInBvd2VyczJMZW5ndGgiLCJoaWdoZXN0UG93ZXIyIiwic2hpZnRfaXNTbWFsbCIsInJlbVF1byIsImJpdHdpc2UiLCJmbiIsInhTaWduIiwieVNpZ24iLCJ4UmVtIiwieVJlbSIsInhEaWdpdCIsInlEaWdpdCIsInhEaXZNb2QiLCJ5RGl2TW9kIiwiTE9CTUFTS19JIiwiTE9CTUFTS19CSSIsInJvdWdoTE9CIiwiaW50ZWdlckxvZ2FyaXRobSIsInRtcCIsIm1heCIsIm1pbiIsImdjZCIsImxjbSIsInJhbmRCZXR3ZWVuIiwibG93IiwiaGlnaCIsInJhbmdlIiwiZGlnaXRzIiwidG9CYXNlIiwicmVzdHJpY3RlZCIsInRvcCIsImRpZ2l0IiwidGV4dCIsImFic0Jhc2UiLCJhbHBoYWJldFZhbHVlcyIsImlzTmVnYXRpdmUiLCJzdGFydCIsInBhcnNlQmFzZUZyb21BcnJheSIsInZhbCIsInBvdyIsInN0cmluZ2lmeSIsIm5lZyIsIk51bWJlciIsIm91dCIsImxlZnQiLCJkaXZtb2QiLCJ0b0Jhc2VTdHJpbmciLCJ6ZXJvcyIsInBhcnNlSW50IiwicGFyc2VTdHJpbmdWYWx1ZSIsInNwbGl0IiwiZGVjaW1hbFBsYWNlIiwiaXNWYWxpZCIsInBhcnNlTnVtYmVyVmFsdWUiLCJtbF96X25vcm1hbGl6ZSIsIm1sX3pfcG93IiwiejEiLCJtbF96X3Jvb3QiLCJ6IiwiemVybyIsIm9uZSIsImVuZCIsImFucyIsInR3byIsIm1pZCIsInBvIiwibWxfel9yb290cmVtIiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfYmFfdWludDhfZ2V0NjQiLCJiYSIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3JldHVybl9leG5fY29uc3RhbnQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jcmVhdGVfZmlsZSIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJjYW1sX3NldF9wYXJzZXJfdHJhY2UiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJ1bml4X2dldHRpbWVvZmRheSIsIkRhdGUiLCJjYW1sX211bCIsImNhbWxfaGFzaF9taXhfaW50IiwibnVtX2RpZ2l0c19uYXQiLCJuYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9jYWxsX2dlbiIsImFyZ3NMZW4iLCJleHRyYV9hcmdzIiwiYXJndW1lbnRzIiwibmFyZ3MiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzIiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX2djX2NvdW50ZXJzIiwibWxfel9kaXYiLCJ6MiIsIm1sX3pfc2lnbiIsIm1sX3pfYWRkIiwibWxfel9jZGl2IiwiejFfcG9zIiwiejJfcG9zIiwiY2FtbF9ncl9zeW5jaHJvbml6ZSIsInVuaXhfaGFzX3N5bWxpbmsiLCJ1bml0IiwibG9nMl9vayIsImpzb29fZmxvb3JfbG9nMiIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiaW50MzJhIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJrIiwicjMiLCJyMiIsInIxIiwiY2FtbF9iYV9zZXJpYWxpemUiLCJzeiIsImNvbXBsZXgiLCJjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50Iiwia2luZCIsImNhbWxfYmFfY3JlYXRlX2J1ZmZlciIsInNpemUiLCJ2aWV3IiwiZGF0YSIsImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2ludDY0X2hpMzIiLCJjYW1sX2ludDY0X2xvMzIiLCJjYW1sX2JhX2N1c3RvbV9uYW1lIiwiTWxfQmlnYXJyYXkiLCJsYXlvdXQiLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfYmFfZGVzZXJpYWxpemUiLCJyZWFkZXIiLCJudW1fZGltcyIsInNpemVfZGltIiwic2l6ZV9kaW1faGkiLCJzaXplX2RpbV9sbyIsInNpeHR5IiwiaW50NjQiLCJjYW1sX2JhX2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X2ludDY0IiwiY2FtbF9oYXNoX21peF9mbG9hdCIsInYwIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJ3IiwiY2FtbF9pbnQzMl91bm1hcnNoYWwiLCJjYW1sX25hdGl2ZWludF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X3VubWFyc2hhbCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfaGFzaCIsImNhbWxfY3VzdG9tX29wcyIsImNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSIsImNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbSIsIm51bSIsImN1c3RvbSIsInN3YXAiLCJjYW1sX2NvbXBhcmVfdmFsX3RhZyIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX2J5dGVzX2NvbXBhcmUiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwiZGl2X2RpZ2l0X25hdCIsIm5hdHEiLCJvZnNxIiwibmF0ciIsIm9mc3IiLCJyZW0iLCJudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQiLCJzaGlmdF9sZWZ0X25hdCIsIk1sTmF0IiwiY3JlYXRlX25hdCIsInNldF90b196ZXJvX25hdCIsImluY3JfbmF0IiwiY2FycnlfaW4iLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJzcmMiLCJkc3QiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfanNfaHRtbF9lbnRpdGllcyIsImVudGl0eSIsInRlbXAiLCJkb2N1bWVudCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQiLCJjYW1sX2JhX3NldF8yIiwibWxfel9vZl9pbnQ2NCIsImk2NCIsIm1sX3pfa3JvbmVja2VyIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJhcmdzMiIsImNhbWxfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImV2YWwiLCJzZXJpYWxpemVfbmF0IiwiY2FtbF9tZW1wcm9mX3NldCIsIl9jb250cm9sIiwibWxfel9uZWciLCJjYW1sX3N5c19leGl0IiwiY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3IiLCJjYW1sX2pzX2Zyb21fYXJyYXkiLCJjYW1sX2JhX3Jlc2hhcGUiLCJ2aW5kIiwibmV3X2RpbSIsImNhbWxfb29fbGFzdF9pZCIsImNhbWxfc2V0X29vX2lkIiwiY2FtbF9ncl9maWxsX3JlY3QiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYSIsInN0cjEiLCJwb3MxIiwiYmEyIiwicG9zMiIsInNsaWNlIiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9nZXRfZ2xvYmFsX2RhdGEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIiwiY2FtbF9iYV91aW50OF9nZXQxNiIsIm1sX3pfb2ZfaW50MzIiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfYmFfZ2V0XzEiLCJjYW1sX2JpZ3N0cmluZ19tZW1jbXAiLCJjYW1sX25ld19zdHJpbmciLCJjYW1sX2VyZl9mbG9hdCIsImExIiwiYTIiLCJhMyIsImE0IiwiYTUiLCJjYW1sX2JhX3VpbnQ4X2dldDMyIiwiY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCIsIm1sX3pfc2hpZnRfcmlnaHQiLCJhbXQiLCJjYW1sX29ial9ibG9jayIsImNhbWxfZ3JfY2xlYXJfZ3JhcGgiLCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIiwiYnMiLCJjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIiwiX3VuaXQiLCJseG9yX2RpZ2l0X25hdCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX2ZpbmFsX3JlbGVhc2UiLCJjYW1sX2pzX3RvX2FycmF5IiwibWxfel9sb2dvciIsImNhbWxfZ3JfcGxvdCIsImNvbG9yIiwiY2FtbF9ieXRlc19zZXQxNiIsImkxNiIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9ieXRlc19zZXQ2NCIsImNhbWxfaW50NjRfYnN3YXAiLCJtbF96X2ZpdHNfaW50IiwibWxfel9maXRzX2ludDMyIiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9maWxsX3N0cmluZyIsImNhbWxfZ2NfbWFqb3IiLCJtbF96X3NoaWZ0X2xlZnQiLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsInN0YXRlIiwiYmFja3RyayIsInVuaXhfZ2V0dWlkIiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2J5dGVzX2VxdWFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIiwib3NfdHlwZSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4iLCJjYW1sX2Nvc2hfZmxvYXQiLCJjYW1sX2VwaGVfa2V5X29mZnNldCIsImNhbWxfd2Vha19jaGVjayIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9ncl90ZXh0X3NpemUiLCJ0eHQiLCJjYW1sX2xleF9ydW5fbWVtIiwibWVtIiwiY3Vycl9wb3MiLCJjYW1sX2xleF9ydW5fdGFnIiwiY2FtbF9uZXdfbGV4X2VuZ2luZSIsImxleF9tZW0iLCJsZXhfYmFzZV9jb2RlIiwibGV4X2JhY2t0cmtfY29kZSIsImxleF9kZWZhdWx0X2NvZGUiLCJsZXhfdHJhbnNfY29kZSIsImxleF9jaGVja19jb2RlIiwibGV4X2NvZGUiLCJwY19vZmYiLCJwc3RhdGUiLCJiYXNlX2NvZGUiLCJjYW1sX2JhX3VpbnQ4X3NldDY0IiwibWxfel9wb3Bjb3VudCIsImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9hY29zaF9mbG9hdCIsImNhbWxfbWxfZmx1c2giLCJvdXRwdXQiLCJjYW1sX21sX3NlZWtfb3V0XzY0IiwiY29tcGFyZV9uYXRfcmVhbCIsImNhbWxfZ2Nfc2V0IiwiY2FtbF9qc19nZXQiLCJjYW1sX21sX3NldF9idWZmZXJlZCIsImNhbWxfZ2NfY29tcGFjdGlvbiIsImNhbWxfd2Vha19nZXQiLCJjYW1sX2VwaGVfZ2V0X2tleSIsImpzb29fel9vZl9qc19zdHJpbmdfYmFzZSIsImJjIiwibWxfel9vZl9zdWJzdHJpbmdfYmFzZSIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJ3aW5fY2xlYW51cCIsImNhbWxfc3lzX2Nsb3NlIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfc3lzX2lzYXR0eSIsIl9jaGFuIiwiaXNfZGlnaXRfemVybyIsInVuaXhfaW5ldF9hZGRyX29mX3N0cmluZyIsImNhbWxfanNfc2V0IiwibWxfel9nY2RleHRfaW50ZXJuIiwibGFzdHgiLCJsYXN0eSIsIm1sX3pfdGVzdGJpdCIsImNhbWxfYXJyYXlfZ2V0IiwiYXJyYXkiLCJpbmRleCIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCIsIm1sX3pfY29uZ3J1ZW50IiwiY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfbWxfc2Vla19pbl82NCIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJtbF96X2FicyIsImNhbWxfc3lzX2NvbnN0X2ludF9zaXplIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwibWxfel9zcXJ0IiwidW5peF9sb2NhbHRpbWUiLCJkX251bSIsImphbnVhcnlmaXJzdCIsImRveSIsImphbiIsImp1bCIsInN0ZFRpbWV6b25lT2Zmc2V0IiwiY2FtbF9qc19tZXRoX2NhbGwiLCJtbF96X2x1Y251bSIsImNhbWxfd2Vha19jcmVhdGUiLCJjYW1sX2VwaGVfY3JlYXRlIiwiY2FtbF9qc190b19ieXRlX3N0cmluZyIsIm1sX3pfcHJvYmFiX3ByaW1lIiwidW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfdHJhbXBvbGluZSIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJtbF96X3JlbSIsImNhbWxfd2Vha19zZXQiLCJjYW1sX3N5c19yZW1vdmUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2dldDMyIiwiY2FtbF9oeXBvdF9mbG9hdCIsIm1sX3pfZmFjTSIsImN1cnJlbnQiLCJjYW1sX2pzX2NhbGwiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF9lcGhlX3Vuc2V0X2tleSIsIm1sX3pfbXVsX292ZXJmbG93cyIsIm1sX3pfdG9faW50IiwiY2FtbF9oYXNoX21peF9ieXRlc19hcnIiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJtbF96X2ZhYyIsImNhbWxfcmFpc2VfZW5kX29mX2ZpbGUiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwibWxfel9kaXZpc2libGUiLCJjYW1sX29ial9yZWFjaGFibGVfd29yZHMiLCJudGhfZGlnaXRfbmF0IiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiZXhwb25lbnQiLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9saXN0X3RvX2pzX2FycmF5IiwiY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGUiLCJjYW1sX291dHB1dF92YWwiLCJXcml0ZXIiLCJmbGFncyIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImludGVybl9vYmpfdGFibGUiLCJtZW1vIiwiZXhpc3Rpbmdfb2Zmc2V0IiwiZXh0ZXJuX3JlYyIsIm9wcyIsInN6XzMyXzY0IiwiaGVhZGVyX3BvcyIsIm9sZF9wb3MiLCJ0eXBlX29mX3YiLCJjYW1sX3N0cmluZ19vZl9hcnJheSIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyIsImNhbWxfcmFpc2Vfbm90X2FfZGlyIiwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQiLCJjbWQiLCJ1bml4X2lzYXR0eSIsImZpbGVEZXNjcmlwdG9yIiwidHR5IiwiY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb24iLCJkZXNlcmlhbGl6ZV9uYXQiLCJpbml0aWFsaXplX25hdCIsIm1sX3pfc3VjYyIsImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3ciLCJ1bml4X2xzdGF0IiwidW5peF9sc3RhdF82NCIsImpzX3ByaW50X3N0ZG91dCIsImNhbWxfY29weXNpZ25fZmxvYXQiLCJjYW1sX2dyX3NldF90ZXh0X3NpemUiLCJjYW1sX21kNV9ieXRlcyIsInh4IiwiZmYiLCJnZyIsImhoIiwiaWkiLCJtZDUiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9lcGhlX3NldF9rZXkiLCJjYW1sX2J5dGVzX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXQiLCJjYW1sX2dyX3NpemVfeSIsIm1sX3pfZmFjMiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9pbnQ2NF9hbmQiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJtbF96X2JpbiIsImNvZWZmIiwiY2FtbF9zdGRfb3V0cHV0Iiwic2xlbiIsImpzX3ByaW50X3N0ZGVyciIsImNhbWxfc3lzX29wZW5faW50ZXJuYWwiLCJpZHgiLCJpbmZvIiwiY2FtbF9zeXNfb3BlbiIsIl9wZXJtcyIsIm1sX3pfZ2NkIiwiTWxTdHJpbmdSZWFkZXIiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIl9tYWdpYyIsIl9ibG9ja19sZW4iLCJudW1fb2JqZWN0cyIsIl9zaXplXzMyIiwiX3NpemVfNjQiLCJvYmpfY291bnRlciIsImludGVybl9yZWMiLCJoZWFkZXIiLCJleHBlY3RlZF9zaXplIiwiY2FtbF9zdHJpbmdfb2ZfYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMiLCJtbF96X211bCIsIm1sX3pfaGFtZGlzdCIsImNhbWxfc3RyaW5nX2dldCIsInJlX21hdGNoIiwicmVfd29yZF9sZXR0ZXJzIiwib3Bjb2RlcyIsImlzX3dvcmRfbGV0dGVyIiwiaW5fYml0c2V0IiwicmVfbWF0Y2hfaW1wbCIsInBhcnRpYWwiLCJwcm9nIiwiY3Bvb2wiLCJub3JtdGFibGUiLCJudW1ncm91cHMiLCJudW1yZWdpc3RlcnMiLCJzdGFydGNoYXJzIiwicGMiLCJxdWl0IiwiZ3JvdXBzIiwicmVfcmVnaXN0ZXIiLCJiYWNrdHJhY2siLCJpdGVtIiwicHVzaCIsImFjY2VwdCIsInByZWZpeF9tYXRjaCIsIm9wIiwic2FyZyIsInVhcmciLCJncm91cCIsInJlX3NlYXJjaF9iYWNrd2FyZCIsIm1sX3pfbG9nYW5kIiwiY2FtbF9qc19mcm9tX3N0cmluZyIsImNhbWxfYmFfc3ViIiwiY2hhbmdlZF9kaW0iLCJtdWwiLCJuZXdfZGltcyIsIm5ld19kYXRhIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9ieXRlc19zZXQzMiIsImkzMiIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9iYV91aW50OF9zZXQzMiIsIm1sX3pfZGl2X3JlbSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IiwiY2FtbF9zaWduYml0X2Zsb2F0IiwiY2FtbF9ncl9zZXRfbGluZV93aWR0aCIsImNhbWxfZ3Jfc2V0X2ZvbnQiLCJjYW1sX2dyX3NldF9jb2xvciIsImNvbnZlcnQiLCJudW1iZXIiLCJjX3N0ciIsImNhbWxfZ3JfbW92ZXRvIiwiY2FtbF9ncl9yZXNpemVfd2luZG93IiwiY2FtbF9ncl9zdGF0ZV9pbml0IiwiY2FtbF9ncl9jdXJyZW50X3giLCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkiLCJ0YSIsImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSIsImNhbWxfbWxfc2Vla19vdXQiLCJjYW1sX2pzX3R5cGVvZiIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiYnQiLCJjYW1sX2dyX2xpbmV0byIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZSIsImNhbWxfYmFfZGltXzMiLCJjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uIiwiY2FtbF9mb3JtYXRfZXhjZXB0aW9uIiwiYnVja2V0IiwiY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24iLCJoYW5kbGVyIiwiYXRfZXhpdCIsImNhbWxfZXBoZV9kYXRhX29mZnNldCIsImNhbWxfZXBoZV9jaGVja19kYXRhIiwiY2FtbF9ieXRlc19nZXQxNiIsImNhbWxfb2JqX21ha2VfZm9yd2FyZCIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lIiwiY2FtbF9leHAyX2Zsb2F0IiwiY2FtbF9ncl9jbG9zZV9ncmFwaCIsImNhbWxfY3JlYXRlX3N0cmluZyIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfbWQ1X2NoYW4iLCJjaGFuX2xlbiIsImNhbWxfb2JqX2R1cCIsImNhbWxfd2Vha19nZXRfY29weSIsImNhbWxfYXRhbmhfZmxvYXQiLCJjYW1sX21sX291dHB1dF9ieXRlcyIsInN0cmluZyIsImpzc3RyaW5nIiwiaWQiLCJjYW1sX21sX291dHB1dCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2FycmF5X2FwcGVuZCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsIiwibWxfel9uZXh0cHJpbWUiLCJjYW1sX2pzX2V4cHIiLCJjYW1sX2ludDY0X211bCIsImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIiwibWxfel9zdWIiLCJtbF96X2ZkaXYiLCJtbF96X3RvX2JpdHMiLCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyIsImNhbWxfZXZlbnRsb2dfcmVzdW1lIiwiY2FtbF9oYXNoX3VuaXZfcGFyYW0iLCJjb3VudCIsImxpbWl0Iiwib2JqIiwiaGFzaF9hY2N1IiwiaGFzaF9hdXgiLCJqc2J5dGVzIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJtbF96X2RpdmV4YWN0IiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyIiwicmVfcmVwbGFjZW1lbnRfdGV4dCIsInJlcGwiLCJvcmlnIiwiY3VyIiwiY2FtbF9wdXJlX2pzX2V4cHIiLCJibGl0X25hdCIsImNhbWxfaW50NjRfdWx0IiwiY2FtbF9pbnQ2NF94b3IiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzIiwiYmExIiwiYnl0ZXMyIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF90b19qc19zdHJpbmciLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJyZV9zZWFyY2hfZm9yd2FyZCIsImNhbWxfYmxpdF9zdHJpbmdfdG9fYmlnc3RyaW5nIiwiY2FtbF9tYWtlX3ZlY3QiLCJpbml0IiwiY2FtbF9tbF9zZWVrX2luIiwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIiwiY2FtbF9vYmpfaXNfYmxvY2siLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkIiwiY2FtbF9qc192YXIiLCJjYW1sX3RydW5jX2Zsb2F0IiwiY2FtbF96YXJpdGhfbWFyc2hhbCIsImJsb2NrIiwiY2FtbF9lcGhlX2JsaXRfZGF0YSIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsImJ1ZmYiLCJub3ciLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIiwiY2FtbF9iYV9nZXRfMiIsIndpbl9oYW5kbGVfZmQiLCJjYW1sX2JhX3VpbnQ4X3NldDE2Iiwid2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsIiwiY2FtbF9qc19kZWxldGUiLCJjYW1sX2ludF9vZl9zdHJpbmciLCJjYW1sX2xpc3RfbW91bnRfcG9pbnQiLCJwcmV2IiwiY2FtbF9tYXJzaGFsX2NvbnN0YW50cyIsImNhbWxfb2JqX3Jhd19maWVsZCIsImNhbWxfanNfZXF1YWxzIiwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IiwibWxfel9maXRzX25hdGl2ZWludCIsImNhbWxfZ3JfYXJjX2F1eCIsImN0eCIsImN4IiwiY3kiLCJyeSIsInJ4Iiwicm90IiwieFBvcyIsInlQb3MiLCJ4UG9zX3ByZXYiLCJ5UG9zX3ByZXYiLCJzcGFjZSIsImRlbHRhIiwiY2FtbF9ncl9maWxsX2FyYyIsImNhbWxfYmFfc2xpY2UiLCJudW1faW5kcyIsInN1Yl9kaW1zIiwibWxfel9vZl9uYXRpdmVpbnQiLCJjYW1sX21hcnNoYWxfZGF0YV9zaXplIiwiZ2V0MzIiLCJjYW1sX2lucHV0X3ZhbHVlIiwiY2FtbF9iYV9raW5kIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwibWxfel9pbnZlcnQiLCJtbF96X3Bvd20iLCJ6MyIsImludiIsIm1sX3pfcG93bV9zZWMiLCJjYW1sX2pzX3B1cmVfZXhwciIsImNvbXBhcmVfZGlnaXRzX25hdCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX2dyX3dhaXRfZXZlbnQiLCJfZXZsIiwiY2FtbF9ncl9zaWdpb19oYW5kbGVyIiwiY2FtbF9oYXNoX21peF9iaWdzdHJpbmciLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJ1bml4X2dtdGltZSIsImNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSIsImNhbWxfc3lzX2dldF9jb25maWciLCJ1bml4X3RpbWUiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsIm1sX3pfaGFzaCIsImFjYyIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwicmVfc3RyaW5nX21hdGNoIiwiQmlnU3RyaW5nUmVhZGVyIiwiY2FtbF9ncl9kdW1wX2ltYWdlIiwiY2FtbF9iYV9nZXRfZ2VuZXJpYyIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwibWxfel9lcXVhbCIsIm1sX3pfZml0c19pbnQ2NCIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEiLCJjYW1sX2JsaXRfYmlnc3RyaW5nX3RvX2JpZ3N0cmluZyIsIm1sX3pfc3FydF9yZW0iLCJkaWZmIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfZGl2IiwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJtbF96X3BlcmZlY3Rfc3F1YXJlIiwiY2FtbF9zeXNfZ2V0X2FyZ3YiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2dyX2NyZWF0ZV9pbWFnZSIsImNhbWxfZXBoZV9nZXRfa2V5X2NvcHkiLCJjYW1sX2xlc3N0aGFuIiwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCIsIm1sX3pfdG9fbmF0aXZlaW50IiwiY2FtbF9yZWdpc3Rlcl9nbG9iYWwiLCJuYW1lX29wdCIsIm11bHRfbmF0IiwibGVuMyIsInNxdWFyZV9uYXQiLCJjYW1sX2pzX2Zyb21fZmxvYXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9nY19zdGF0IiwiY2FtbF9nZXRfbWFqb3JfY3JlZGl0IiwiY2FtbF9zeXNfbW9kaWZ5X2FyZ3YiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfanNfZ2V0X2NvbnNvbGUiLCJjYW1sX3N5c191bnNhZmVfZ2V0ZW52IiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4iLCJyZWZpbGwiLCJmcyIsImNoYW5uZWwiLCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkiLCJjYW1sX3JvdW5kX2Zsb2F0IiwibWxfel9vZl9iaXRzIiwiYmFzZTEiLCJ1bml4X3N0YXQiLCJ1bml4X3N0YXRfNjQiLCJjYW1sX29qc19uZXdfYXJyIiwiRiIsImNvbXBsZW1lbnRfbmF0IiwibWxfel9sb2d4b3IiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfemFyaXRoX3VubWFyc2hhbCIsIm5lZ2F0ZSIsIm1sX3pfdHJhaWxpbmdfemVyb3MiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiYXJpdHkiLCJjYW1sX2djX21pbm9yX3dvcmRzIiwiY2FtbF9iYV9zZXRfMSIsImNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrIiwibGFuZF9kaWdpdF9uYXQiLCJjYW1sX2ludDY0X21vZCIsInVuaXhfcmVhZGxpbmsiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsIndpbl9zdGFydHVwIiwiY2FtbF9iYV9zZXRfMyIsIm1sX3pfamFjb2JpIiwibjEiLCJtbF96X2xlZ2VuZHJlIiwiY2FtbF9qc19pbnN0YW5jZW9mIiwiY2FtbF9nZXRfbWFqb3JfYnVja2V0IiwiY2FtbF9ibGl0X2JpZ3N0cmluZ190b19zdHJpbmciLCJzZXRfZGlnaXRfbmF0X25hdGl2ZSIsIm50aF9kaWdpdF9uYXRfbmF0aXZlIiwiY2FtbF9zdHJpbmdfc2V0NjQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNhbnZhcyIsImNvbnRleHQiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwidW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsImNhbWxfYmFfY3JlYXRlX2Zyb20iLCJkYXRhMSIsImRhdGEyIiwianN0eXAiLCJjYW1sX3RhbmhfZmxvYXQiLCJjYW1sX2dyX2RyYXdfc3RyIiwiZHgiLCJjYW1sX2dyX2RyYXdfc3RyaW5nIiwibWxfel9wcmltb3JpYWwiLCJjYW1sX2dyX2RyYXdfY2hhciIsImNhbWxfdW5tb3VudCIsIm1sX3pfZmliIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyIsImNhbWxfbWxfcG9zX2luXzY0IiwiY2FtbF9ncl9kcmF3X2ltYWdlIiwiaW1hZ2UiLCJjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSIsIl9jaGFubmVsIiwiY2FtbF9zdHJpbmdfc2V0IiwiY2FtbF9zeXNfcm1kaXIiLCJjYW1sX21sX3Bvc19vdXQiLCJjYW1sX3NwYWNldGltZV9lbmFibGVkIiwiY2FtbF9ieXRlc19ub3RlcXVhbCIsImNhbWxfcnVudGltZV9wYXJhbWV0ZXJzIiwiY2FtbF9qc19vYmplY3QiLCJjYW1sX2JhX2NyZWF0ZSIsImRpbXNfbWwiLCJjYW1sX3dlYWtfYmxpdCIsImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSIsImNhbWxfZm1hX2Zsb2F0IiwiU1BMSVQiLCJNSU5fVkFMVUUiLCJFUFNJTE9OIiwiQyIsIkEiLCJCIiwibXVsdGlwbHkiLCJhdCIsImFoaSIsImFsbyIsImJoaSIsImJsbyIsImFkanVzdCIsInNjYWxlIiwieHMiLCJ5cyIsInpzIiwieHkiLCJ1IiwiY2FtbF9ic3dhcDE2IiwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUiLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyIiwiY2FtbF9ncl9kcmF3X3JlY3QiLCJjYW1sX3N0cmluZ19nZXQxNiIsImNhbWxfZXBoZV91bnNldF9kYXRhIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX2JhX2dldF8zIiwiY2FtbF9lcGhlX2JsaXRfa2V5IiwibWxfel90b19pbnQzMiIsImNhbWxfaW5pdGlhbF90aW1lIiwiY2FtbF9zeXNfdGltZSIsImNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbiIsImNhbWxfY2hlY2tfYm91bmQiLCJ1bml4X2dldHB3dWlkIiwibWxfel9jb21wYXJlIiwiY2FtbF9oYXNoX21peF9zdHJpbmciLCJjYW1sX2hhc2giLCJzZWVkIiwicXVldWUiLCJyZCIsIndyIiwiY2FtbF9vYmpfdGFnIiwiRnVuY3Rpb24iLCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfZnJleHBfZmxvYXQiLCJtbF96X3ByZWQiLCJjYW1sX3N0cmluZ19nZXQ2NCIsImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbiIsImNhbWxfbWxfcG9zX291dF82NCIsIm1sX3pfZXh0cmFjdCIsIm1sX3pfcmVtb3ZlIiwibWxfel9vZl9mbG9hdCIsImYxIiwibWxfel9sb2dub3QiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZmxvYXRhcnJheV9ibGl0IiwiY2FtbF9nZXRfbWlub3JfZnJlZSIsImNhbWxfc2V0X3N0YXRpY19lbnYiLCJjYW1sX2JhX2NoYW5nZV9sYXlvdXQiLCJjYW1sX2pzX25ldyIsInVuaXhfbWtkaXIiLCJwZXJtIiwiY2FtbF9ncl9jdXJyZW50X3kiLCJjYW1sX2Zvcm1hdF9pbnQiLCJjYW1sX29ial90cnVuY2F0ZSIsImNhbWxfanNfdG9fc3RyaW5nIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJjYW1sX2FycmF5X2NvbmNhdCIsImNhbWxfZ3Jfb3Blbl9ncmFwaCIsInNwZWNzIiwic3RhdHVzIiwid2luIiwiZG9jIiwidGl0bGUiLCJib2R5IiwiY2FtbF9lcGhlX3NldF9kYXRhIiwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3QiLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfZXZlbnRsb2dfcGF1c2UiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsIm1sX3pfbnVtYml0cyIsInVwcGVyQm91bmQiLCJjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSIsImNhbWxfbG9nMXBfZmxvYXQiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImxvcl9kaWdpdF9uYXQiLCJjYW1sX2dyX2JsaXRfaW1hZ2UiLCJpbTIiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfanNfb25faWUiLCJ1YSIsImNhbWxfaW50NjRfc2hpZnRfcmlnaHQiLCJjYW1sX2JhX2xheW91dCIsImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIiwiY2FtbF9hcnJheV9zZXQiLCJuZXd2YWwiLCJjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbCIsIm1sX3pfcGVyZmVjdF9wb3dlciIsImxvZzJ6IiwienAiLCJzZXRfZGlnaXRfbmF0IiwibWxfel9pbml0IiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfbWxfY2hhbm5lbF9zaXplIiwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QiLCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdCIsInN0eWxlIiwiZXhwX3NpZ24iLCJzaWduX3N0ciIsImNzdCIsInhfc3RyIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IiwibWxfel9mb3JtYXQiLCJjYXMiLCJ3aWR0aCIsImFsdCIsInBhZCIsInByZWZpeCIsInByZSIsIm1sX3pfdG9faW50NjQiLCJtYXNrIiwibWxfel9zaXplIiwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIiwiY2FtbF9zeXNfYXJndiIsImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciIsImNhbWxfYmFfZmlsbCIsImNhbWxfbW9kZl9mbG9hdCIsImNhbWxfZ2NfZ2V0IiwiY2FtbF9mbG9hdF9jb21wYXJlIiwibWxfel9zaGlmdF9yaWdodF90cnVuYyIsImNhbWxfc3RyaW5nX3NldDMyIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2dyX21ha2VfaW1hZ2UiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImV2ZW50IiwiZXJyX25vX3ByZWQiLCJlcnJfbm9fc3VjYyIsInplcm8kMiIsIm9uZSQyIiwibWludXNfb25lJDIiLCJtaW5faW50JDIiLCJtYXhfaW50JDIiLCJkdW1teV9wb3MiLCJ6ZXJvX3BvcyIsInN1Yl9mb3JtYXQiLCJmb3JtYXR0aW5nX2xpdCIsImxvY2ZtdCIsIm51bGwkMCIsImN1cnJlbnRfZGlyX25hbWUiLCJwYXJlbnRfZGlyX25hbWUiLCJkaXJfc2VwIiwicXVvdGVxdW90ZSIsIm51bGwkMSIsImN1cnJlbnRfZGlyX25hbWUkMCIsInBhcmVudF9kaXJfbmFtZSQwIiwiZGlyX3NlcCQwIiwibnVsbCQyIiwiY3VycmVudF9kaXJfbmFtZSQxIiwicGFyZW50X2Rpcl9uYW1lJDEiLCJkaXJfc2VwJDEiLCJ6ZXJvJDQiLCJvbmUkNCIsImkiLCJlcmFzZV9yZWwiLCJyZXN0IiwicmVzdCQwIiwicmVzdCQxIiwicmVzdCQyIiwicmVzdCQzIiwicmVzdCQ0IiwicmVzdCQ1IiwicmVzdCQ2IiwicmVzdCQ3IiwidHkiLCJyZXN0JDgiLCJ0eTEiLCJyZXN0JDkiLCJyZXN0JDEwIiwicmVzdCQxMSIsInJlc3QkMTIiLCJyZXN0JDEzIiwiY29uY2F0X2ZtdHR5IiwiZm10dHkxIiwiZm10dHkyIiwidHkyIiwiY29uY2F0X2ZtdCIsImZtdDEiLCJmbXQyIiwicGFkIiwicGFkJDAiLCJwcmVjIiwicGFkJDEiLCJpY29udiIsInByZWMkMCIsInBhZCQyIiwiaWNvbnYkMCIsInByZWMkMSIsInBhZCQzIiwiaWNvbnYkMSIsInByZWMkMiIsInBhZCQ0IiwiaWNvbnYkMiIsInByZWMkMyIsInBhZCQ1IiwiZmNvbnYiLCJwYWQkNiIsInN0ciIsImNociIsImZtdHR5IiwicGFkJDciLCJmbXR0eSQwIiwicGFkJDgiLCJyZXN0JDE0IiwicmVzdCQxNSIsInJlc3QkMTYiLCJmbXRpbmdfbGl0IiwicmVzdCQxNyIsImZtdGluZ19nZW4iLCJyZXN0JDE4IiwicmVzdCQxOSIsImNoYXJfc2V0Iiwid2lkdGhfb3B0IiwicmVzdCQyMCIsImNvdW50ZXIiLCJyZXN0JDIxIiwicmVzdCQyMiIsImlnbiIsInJlc3QkMjMiLCJmIiwiYXJpdHkiLCJ2IiwiciIsImN1ciIsInNlZW4iLCJuIiwiZmFpbHdpdGgiLCJzIiwiaW52YWxpZF9hcmciLCJtaW4iLCJ4IiwieSIsIm1heCIsImFicyIsImxub3QiLCJpbmZpbml0eSIsIm5lZ19pbmZpbml0eSIsIm5hbiIsIm1heF9mbG9hdCIsIm1pbl9mbG9hdCIsImVwc2lsb24iLCJtYXhfaW50IiwibWluX2ludCIsInMxIiwiczIiLCJsMSIsImwyIiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImIiLCJib29sX29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInZhbGlkX2Zsb2F0X2xleGVtIiwibCIsImkkMCIsInRvX3N0cmluZyIsIm9mX3N0cmluZ19vcHQiLCJhcHBlbmQiLCJ0bCIsImhkIiwic3RkaW4iLCJzdGRvdXQiLCJzdGRlcnIiLCJvcGVuX2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX3RleHQiLCJvcGVuX2JpbiIsImZsdXNoX2FsbCIsIml0ZXIiLCJhIiwib3V0cHV0X2J5dGVzIiwib2MiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0Iiwib2ZzIiwibGVuIiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF92YWx1ZSIsImNoYW4iLCJjbG9zZSIsImNsb3NlX25vZXJyIiwib3Blbl9nZW4kMCIsIm9wZW5fdGV4dCQwIiwib3Blbl9iaW4kMCIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsImFjY3UiLCJiZWciLCJhY2N1JDAiLCJyZXMiLCJjbG9zZV9ub2VyciQwIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludCIsInJlYWRfaW50X29wdCIsInJlYWRfZmxvYXQiLCJyZWFkX2Zsb2F0X29wdCIsInN0cmluZ19vZl9mb3JtYXQiLCJzeW1ib2wiLCJzdHIyIiwic3RyMSIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJuZXdfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fYXRfZXhpdCIsImV4aXQiLCJyZXRjb2RlIiwic2V0X2JpbmFyeV9tb2RlIiwiY2xvc2UkMCIsImluX2NoYW5uZWxfbGVuZ3RoIiwicG9zX2luIiwic2Vla19pbiIsImlucHV0X3ZhbHVlIiwiaW5wdXRfYmluYXJ5X2ludCIsImlucHV0X2J5dGUiLCJpbnB1dF9jaGFyIiwic2V0X2JpbmFyeV9tb2RlJDAiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJwb3Nfb3V0Iiwic2Vla19vdXQiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2NoYXIiLCJmbHVzaCIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAiLCJ2JDAiLCJmb2xkIiwiZXF1YWwiLCJlMSIsImUyIiwidjIiLCJ2MiQwIiwiY29tcGFyZSIsIm1hdGNoJDEiLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3IiLCJsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl8iLCJsYXp5X3RhZyIsImNsb3N1cmVfdGFnIiwib2JqZWN0X3RhZyIsImluZml4X3RhZyIsImZvcndhcmRfdGFnIiwibm9fc2Nhbl90YWciLCJhYnN0cmFjdF90YWciLCJzdHJpbmdfdGFnIiwiZG91YmxlX3RhZyIsImRvdWJsZV9hcnJheV90YWciLCJjdXN0b21fdGFnIiwiaW50X3RhZyIsIm91dF9vZl9oZWFwX3RhZyIsInVuYWxpZ25lZF90YWciLCJpbmZvIiwib2JqIiwic3RhcnRfZW52Iiwib2ZfdmFsIiwic2xvdCIsImlkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZXh0ZW5zaW9uX25hbWUiLCJleHRlbnNpb25faWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsInJhaXNlX3VuZGVmaW5lZCIsImZvcmNlX2xhenlfYmxvY2siLCJibGsiLCJjbG9zdXJlIiwicmVzdWx0IiwiZm9yY2VfdmFsX2xhenlfYmxvY2siLCJmb3JjZSIsImx6diIsInQiLCJmb3JjZV92YWwiLCJ0b19sYXp5IiwiZnJvbV92YWwiLCJpc192YWwiLCJtYXAkMCIsIm1hcF92YWwiLCJlbXB0eSIsInJldHVybiQwIiwiY29ucyIsIm5leHQiLCJhcHBlbmQkMCIsInNlcTEiLCJzZXEyIiwibWFwJDEiLCJzZXEiLCJmaWx0ZXJfbWFwIiwic2VxJDAiLCJmaWx0ZXIiLCJjb25jYXQiLCJmbGF0X21hcCIsImZvbGRfbGVmdCIsImFjYyIsImFjYyQwIiwiYWNjJDEiLCJ1bmZvbGQiLCJ1IiwidSQwIiwiaXNfZW1wdHkiLCJ4cyIsInVuY29ucyIsInhzJDAiLCJsZW5ndGgkMCIsInhzJDEiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJhY2N1JDEiLCJmb3JfYWxsIiwicCIsImV4aXN0cyIsImZpbmQiLCJmaW5kX21hcCIsIml0ZXIyIiwieXMiLCJ5cyQwIiwieXMkMSIsImZvbGRfbGVmdDIiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJlcXVhbCQwIiwiZXEiLCJjb21wYXJlJDAiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwiZmFpbHVyZSIsIm1lbW9pemUiLCJvbmNlIiwiYWN0aW9uIiwiemlwIiwibWFwMiIsImludGVybGVhdmUiLCJzb3J0ZWRfbWVyZ2UxIiwic29ydGVkX21lcmdlIiwibWFwX2ZzdCIsInh5cyIsInh5cyQwIiwibWFwX3NuZCIsInVuemlwIiwiZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIiwiZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCIsInoiLCJwYXJ0aXRpb25fbWFwIiwicGFydGl0aW9uIiwicGVlbCIsInhzcyIsInRyYW5zcG9zZSIsInRhaWxzIiwiaGVhZHMiLCJyZW1haW5kZXJzIiwieHNzJDAiLCJ0YWlscyQwIiwiaGVhZHMkMCIsIm1hcF9wcm9kdWN0IiwicHJvZHVjdCIsIm9mX2Rpc3BlbnNlciIsIml0IiwidG9fZGlzcGVuc2VyIiwiaW50cyIsIm5vbmUiLCJzb21lIiwidmFsdWUiLCJkZWZhdWx0JDAiLCJnZXQkMCIsImJpbmQiLCJqb2luIiwibWFwJDIiLCJmb2xkJDAiLCJpdGVyJDAiLCJpc19ub25lIiwiaXNfc29tZSIsImVxdWFsJDEiLCJvMCIsInYxIiwidjAiLCJjb21wYXJlJDEiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsInZhbHVlJDAiLCJnZXRfb2siLCJnZXRfZXJyb3IiLCJiaW5kJDAiLCJqb2luJDAiLCJtYXAkMyIsIm1hcF9lcnJvciIsImZvbGQkMSIsIml0ZXIkMSIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwiZXF1YWwkMiIsInIwIiwicjEiLCJjb21wYXJlJDIiLCJ0b19vcHRpb24iLCJ0b19saXN0JDAiLCJ0b19zZXEkMCIsImVxdWFsJDMiLCJjb21wYXJlJDMiLCJ0b19mbG9hdCIsInRvX3N0cmluZyQwIiwiZXNjYXBlZCIsImxvd2VyY2FzZSIsInVwcGVyY2FzZSIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImNvbXBhcmUkNCIsImMxIiwiYzIiLCJlcXVhbCQ0IiwibWluJDAiLCJtYXgkMCIsImxvX2JvdW5kIiwiaGlfYm91bmQiLCJib20iLCJyZXAiLCJzdWNjIiwicHJlZCIsImlzX3ZhbGlkIiwib2ZfaW50IiwiaXNfY2hhciIsIm9mX2NoYXIiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJlcXVhbCQ1IiwiY29tcGFyZSQ1IiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsImRlY19pbnZhbGlkIiwidXRmXzhfYnl0ZV9sZW5ndGgiLCJ1dGZfMTZfYnl0ZV9sZW5ndGgiLCJsZW5ndGgkMSIsInBhcmFtJDAiLCJjb25zJDAiLCJudGgiLCJsJDAiLCJsJDEiLCJudGhfb3B0IiwicmV2X2FwcGVuZCIsImwxJDAiLCJsMiQwIiwibDEkMSIsImwyJDEiLCJyZXYiLCJpbml0X2F1eCQwIiwicGFyYW0iLCJhMiIsImExIiwicGFpciIsIngkMCIsInJ5IiwicngiLCJ0MiIsImgyIiwidDEiLCJoMSIsInJldl9zb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInNvcnQiLCJ0bCQwIiwiYyQwIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiYWNjdSQyIiwiYXV4IiwidGFpbCIsImRpcmVjdCIsImRlcHRoIiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsImFicyQwIiwibWF4X2ludCQwIiwibWluX2ludCQwIiwibG9nbm90IiwiZXF1YWwkNyIsImNvbXBhcmUkNyIsIm1pbiQxIiwibWF4JDEiLCJ0b19zdHJpbmckMSIsInN5bWJvbCQwIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwib2ZzMSIsIm9mczIiLCJzZXAiLCJzZXBsZW4iLCJkc3QiLCJpc19zcGFjZSIsImFwcGx5MSIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaSQxIiwiaW5kZXhfcmVjX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXhfcmVjX29wdCIsIm5ld19sZW4iLCJuZXdfYnVmIiwiZ2V0JDEiLCJzZXQkMCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImkkNCIsImIxJDEiLCJpJDUiLCJiMiQxIiwiaSQ2IiwiaSQxMCIsImIxJDMiLCJpJDExIiwiYjIkMyIsImkkMTIiLCJiMyQxIiwiaSQ3IiwiYjEkMiIsImkkOCIsImIyJDIiLCJpJDkiLCJiMyQwIiwiaSQxMyIsImIxJDQiLCJpJDE0IiwiYjIkNCIsImkkMiIsImIxJDAiLCJpJDMiLCJiMiQwIiwiaSQxNSIsImIxJDUiLCJzZXQiLCJsYXN0IiwibGFzdCQwIiwibGFzdCQxIiwibGFzdCQzIiwibGFzdCQyIiwibGFzdCQ0IiwibGFzdCQ1IiwiaGkiLCJsbyIsImlzX3NwYWNlJDAiLCJpbmRleF9yZWMkMCIsImluZGV4X3JlY19vcHQkMCIsInJpbmRleF9yZWMkMCIsInJpbmRleF9yZWNfb3B0JDAiLCJnIiwiZXF1YWwkMTAiLCJjb21wYXJlJDEwIiwidG9fc3RyaW5nJDIiLCJ0b19idWZmZXIiLCJidWZmIiwiZmxhZ3MiLCJoZWFkZXJfc2l6ZSIsImRhdGFfc2l6ZSIsInRvdGFsX3NpemUiLCJmcm9tX2J5dGVzIiwiZnJvbV9zdHJpbmciLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJwYXJhbSQxIiwiaGQkMCIsImlucHV0X2FycmF5IiwiZWx0Iiwib3V0cHV0X2FycmF5IiwiZWx0JDAiLCJhY2MkMiIsImEwIiwiYmkiLCJhaSIsIm5hIiwibmIiLCJtYXhzb24iLCJpMzEiLCJ0cmlja2xlZG93biIsInRyaWNrbGUiLCJidWJibGVkb3duIiwiYnViYmxlIiwiZSQwIiwiZmF0aGVyIiwibWVyZ2UiLCJzcmMxb2ZzIiwic3JjMWxlbiIsInNyYzIiLCJzcmMyb2ZzIiwic3JjMmxlbiIsImRzdG9mcyIsInNyYzFyIiwic3JjMnIiLCJzMiQxIiwiczEkMSIsImkxIiwiaTIiLCJpMiQwIiwiZCQwIiwiczIkMCIsImkxJDAiLCJkJDEiLCJzMSQwIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsInplcm8kMCIsIm9uZSQwIiwibWludXNfb25lJDAiLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsInBpIiwiaXNfaW50ZWdlciIsInN1Y2MkMCIsInByZWQkMCIsImVxdWFsJDExIiwibWluJDIiLCJtYXgkMiIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwiaGFzaCQwIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsIm1ha2UkMiIsImluaXQkNCIsImFwcGVuZCQyIiwiY29uY2F0JDMiLCJobGVuIiwic3ViJDIiLCJjb3B5JDIiLCJmaWxsJDEiLCJibGl0JDIiLCJzcmMiLCJzb2ZzIiwiZG9mcyIsInRvX2xpc3QkMiIsIm9mX2xpc3QkMCIsImgiLCJpdGVyJDYiLCJpdGVyMiQyIiwibWFwJDgiLCJtYXAyJDIiLCJpdGVyaSQ0IiwibWFwaSQ0IiwiZm9sZF9sZWZ0JDQiLCJmb2xkX3JpZ2h0JDMiLCJleGlzdHMkNCIsImZvcl9hbGwkNCIsIm1lbSQxIiwibWVtX2llZWUiLCJzb3J0JDAiLCJzdGFibGVfc29ydCIsInRvX3NlcSQ1IiwidG9fc2VxaSQyIiwib2Zfc2VxJDMiLCJtYXBfdG9fYXJyYXkiLCJtYXBfZnJvbV9hcnJheSIsInplcm8kMSIsIm9uZSQxIiwibWludXNfb25lJDEiLCJzdWNjJDEiLCJwcmVkJDEiLCJhYnMkMSIsIm1pbl9pbnQkMSIsIm1heF9pbnQkMSIsImxvZ25vdCQwIiwidW5zaWduZWRfdG9faW50IiwidG9fc3RyaW5nJDMiLCJvZl9zdHJpbmdfb3B0JDAiLCJjb21wYXJlJDExIiwiZXF1YWwkMTIiLCJ1bnNpZ25lZF9jb21wYXJlIiwibSIsIm1pbiQzIiwibWF4JDMiLCJ1bnNpZ25lZF9kaXYiLCJxIiwidW5zaWduZWRfcmVtIiwic3VjYyQyIiwicHJlZCQyIiwiYWJzJDIiLCJsb2dub3QkMSIsIm1heF9pbnQkMyIsInVuc2lnbmVkX3RvX2ludCQwIiwidG9fc3RyaW5nJDQiLCJvZl9zdHJpbmdfb3B0JDEiLCJjb21wYXJlJDEyIiwiZXF1YWwkMTMiLCJ1bnNpZ25lZF9jb21wYXJlJDAiLCJtaW4kNCIsIm1heCQ0IiwidW5zaWduZWRfZGl2JDAiLCJ1bnNpZ25lZF9yZW0kMCIsInplcm8kMyIsIm9uZSQzIiwibWludXNfb25lJDMiLCJzdWNjJDMiLCJwcmVkJDMiLCJhYnMkMyIsIm1pbl9pbnQkMyIsIm1heF9pbnQkNCIsImxvZ25vdCQyIiwidW5zaWduZWRfdG9faW50JDEiLCJ0b19zdHJpbmckNSIsIm9mX3N0cmluZ19vcHQkMiIsImNvbXBhcmUkMTMiLCJlcXVhbCQxNCIsInVuc2lnbmVkX2NvbXBhcmUkMSIsIm1pbiQ1IiwibWF4JDUiLCJ1bnNpZ25lZF9kaXYkMSIsInVuc2lnbmVkX3JlbSQxIiwiZW5naW5lIiwidGJsIiwic3RhdGUiLCJuZXdfZW5naW5lIiwiZnJvbV9mdW5jdGlvbiIsIm9wdCIsInN0aCIsIndpdGhfcG9zaXRpb25zIiwiYXV4X2J1ZmZlciIsImxleGJ1ZiIsInJlYWQiLCJuZXdsZW4iLCJuZXdidWYiLCJmcm9tX2NoYW5uZWwiLCJmcm9tX3N0cmluZyQwIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJhcmckMSIsImNtZCQwIiwiZXhuIiwiY3Vycl9jaGFyIiwidG9rIiwicGVla192YWwiLCJzeW1ib2xfc3RhcnRfcG9zIiwic3QiLCJlbiIsInN5bWJvbF9lbmRfcG9zIiwicmhzX3N0YXJ0X3BvcyIsInJoc19lbmRfcG9zIiwic3ltYm9sX3N0YXJ0Iiwic3ltYm9sX2VuZCIsInJoc19zdGFydCIsInJoc19lbmQiLCJpc19jdXJyZW50X2xvb2thaGVhZCIsInBhcnNlX2Vycm9yIiwiaGVpZ2h0IiwiaGwiLCJoJDAiLCJociIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiIsImxybCIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiIsInJsbCIsImFkZCIsInNpbmdsZXRvbiIsImFkZF9taW5fZWxlbWVudCIsImFkZF9tYXhfZWxlbWVudCIsInJoIiwibGgiLCJtaW5fZWx0IiwibWluX2VsdF9vcHQiLCJtYXhfZWx0IiwibWF4X2VsdF9vcHQiLCJyZW1vdmVfbWluX2VsdCIsInIkMCIsInNwbGl0IiwicHJlcyIsInByZXMkMCIsIm1lbSIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJzJDEiLCJlJDEiLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJmaW5kX2ZpcnN0X29wdCIsImZpbmRfbGFzdCIsImZpbmRfbGFzdF9vcHQiLCJmaW5kX29wdCIsInRyeV9qb2luIiwidiQxIiwib2ZfbGlzdCIsInN1YiIsImwkMyIsIngwIiwibCQ0IiwieDAkMCIsImwkNSIsIngwJDEiLCJubCIsIm1pZCIsImwkMiIsIng0IiwiYWRkX3NlcSIsIm9mX3NlcSIsInNlcV9vZl9lbnVtIiwic25vY19lbnVtIiwicmV2X3NlcV9vZl9lbnVtIiwidG9fcmV2X3NlcSIsInRvX3NlcV9mcm9tIiwibG93IiwibGQiLCJscmQiLCJyZCIsInJsZCIsImRhdGEiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtJDEiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjcmVhdGUkMCIsImNsZWFyIiwiY29weSQzIiwicHVzaCIsInBvcCIsInBvcF9vcHQiLCJ0b3AiLCJ0b3Bfb3B0IiwiaXNfZW1wdHkkMCIsImxlbmd0aCQyIiwiaXRlciQ3IiwiZm9sZCQyIiwidG9fc2VxJDYiLCJvZl9zZXEkNCIsImNyZWF0ZSQxIiwiY2xlYXIkMCIsImNlbGwiLCJwZWVrIiwiY29udGVudCIsInBlZWtfb3B0IiwidGFrZSQwIiwidGFrZV9vcHQiLCJjb3B5JDQiLCJxX3JlcyIsInByZXYiLCJpc19lbXB0eSQxIiwibGVuZ3RoJDMiLCJpdGVyJDgiLCJmb2xkJDMiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJ0b19zZXEkNyIsImFkZF9zZXEkMCIsIm9mX3NlcSQ1IiwiY291bnQiLCJmaWxsX2J1ZmYiLCJnZXRfZGF0YSIsImQxMSIsImEkMCIsImEkMSIsInBlZWtfZGF0YSIsInBlZWskMCIsImp1bmtfZGF0YSIsImp1bmsiLCJuZ2V0X2RhdGEiLCJhbCIsIm5wZWVrIiwiZW1wdHkkMiIsIml0ZXIkOSIsInN0cm0iLCJmcm9tIiwib2ZfbGlzdCQxIiwib2Zfc3RyaW5nIiwib2ZfYnl0ZXMkMCIsIm9mX2NoYW5uZWwiLCJpYXBwIiwiaWNvbnMiLCJpc2luZyIsImxhcHAiLCJsY29ucyIsImxzaW5nIiwic2VtcHR5Iiwic2xhenkiLCJkdW1wX2RhdGEiLCJkdW1wIiwiY3JlYXRlJDIiLCJjb250ZW50cyIsInRvX2J5dGVzJDAiLCJzdWIkMyIsImJsaXQkMyIsIm50aCQwIiwibGVuZ3RoJDQiLCJjbGVhciQxIiwicmVzZXQiLCJyZXNpemUiLCJtb3JlIiwib2xkX3BvcyIsIm9sZF9sZW4iLCJuZXdfYnVmZmVyIiwiYWRkX2NoYXIiLCJwb3MiLCJ1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXgiLCJ1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4IiwiYWRkX3V0Zl84X3VjaGFyIiwiYWRkX3V0Zl8xNmJlX3VjaGFyIiwiYWRkX3V0Zl8xNmxlX3VjaGFyIiwiYWRkX3N1YnN0cmluZyIsIm9mZnNldCIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJjdXJyZW50Iiwib3BlbmluZyIsImxpbSQwIiwic3RvcCIsImskMiIsImskMCIsImskMSIsIm5leHRfaSIsImlkZW50IiwidHJ1bmNhdGUiLCJ0b19zZXEkOCIsInRvX3NlcWkkMyIsImFkZF9zZXEkMSIsIm9mX3NlcSQ2IiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJjcmVhdGVfY2hhcl9zZXQiLCJhZGRfaW5fY2hhcl9zZXQiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImNoYXJfc2V0JDAiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiZm10IiwicGFkX29wdCQwIiwicGFkX29wdCQxIiwicGFkX29wdCQyIiwicGFkX29wdCQzIiwicGFkX29wdCQ0IiwicHJlY19vcHQiLCJwYWRfb3B0JDUiLCJuZGVjIiwicGFkX29wdCQ2IiwicGFkX29wdCQ3IiwicGFkX29wdCQ4IiwiZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24iLCJidWZmZXJfY3JlYXRlIiwiaW5pdF9zaXplIiwiYnVmZmVyX2NoZWNrX3NpemUiLCJvdmVyaGVhZCIsIm1pbl9sZW4iLCJuZXdfc3RyIiwiYnVmZmVyX2FkZF9jaGFyIiwiYnVmZmVyX2FkZF9zdHJpbmciLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJjRiIsImJwcmludF9wYWR0eSIsInBhZHR5IiwiYnByaW50X2lnbm9yZWRfZmxhZyIsImlnbl9mbGFnIiwiYnByaW50X3BhZF9vcHQiLCJicHJpbnRfcGFkZGluZyIsInBhZHR5JDAiLCJicHJpbnRfcHJlY2lzaW9uIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0Iiwic3RyJDAiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiYnByaW50X2ZtdHR5Iiwic3ViX2ZtdHR5Iiwic3ViX2ZtdHR5JDAiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5Iiwic3RyaW5nX29mX2ZtdCIsImZtdGl0ZXIiLCJmbXQkMCIsImlnbl9mbGFnJDAiLCJjaHIkMCIsInN0ciQxIiwiaXNfYWxvbmUkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDAiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJ0cmFucyIsInJlc3QyIiwicmVzdDIkMCIsInJlc3QyJDEiLCJyZXN0MiQyIiwicmVzdDIkMyIsInJlc3QyJDQiLCJyZXN0MiQ1IiwicmVzdDIkNiIsInJlc3QyJDciLCJ0eTIkMCIsInJlc3QyJDgiLCJ0eTIyIiwidHkyMSIsImZtdHR5X3JlbF9kZXQiLCJmNCIsImYyIiwicmVzdDIkOSIsInJlc3QyJDEwIiwicmVzdDIkMTEiLCJyZXN0MiQxMiIsInJlc3QyJDEzIiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJqZCIsImRqIiwiZ2EiLCJhZyIsImRlJDkiLCJlZCQ5IiwiYWYkOSIsImZhJDkiLCJkZSQxMCIsImVkJDEwIiwiYWYkMTAiLCJmYSQxMCIsImRlJDExIiwiZWQkMTEiLCJhZiQxMSIsImZhJDExIiwiZGUkMTIiLCJlZCQxMiIsImFmJDEyIiwiZmEkMTIiLCJkZSQxMyIsImVkJDEzIiwiYWYkMTMiLCJmYSQxMyIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJmbXR0eV9vZl9jdXN0b20iLCJhcml0eSQwIiwiZm10dHlfb2ZfZm10IiwidHlfcmVzdCIsInByZWNfdHkiLCJ0eV9yZXN0JDAiLCJwcmVjX3R5JDAiLCJ0eV9yZXN0JDEiLCJwcmVjX3R5JDEiLCJ0eV9yZXN0JDIiLCJwcmVjX3R5JDIiLCJ0eV9yZXN0JDMiLCJwcmVjX3R5JDMiLCJmbXR0eSQxIiwiZm10dHkkMiIsImZtdHR5JDMiLCJ0eSQwIiwiZm10dHkkNCIsImZtdHR5JDUiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpIiwidHlwZV9mb3JtYXRfZ2VuIiwiZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0Iiwic3ViX2ZtdHR5X3Jlc3QkMCIsImZtdHR5X3Jlc3QkMCIsInN1Yl9mbXR0eV9yZXN0JDEiLCJzdWJfZm10dHlfcmVzdCQyIiwiZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMyIsImZtdCQyIiwic3ViX2ZtdHR5X3Jlc3QkNCIsImZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDUiLCJmbXQkMyIsInN1Yl9mbXR0eV9yZXN0JDYiLCJmbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ3IiwiZm10JDQiLCJzdWJfZm10dHlfcmVzdCQ4IiwiZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkOSIsImZtdCQ1Iiwic3ViX2ZtdHR5X3Jlc3QkMTAiLCJmbXR0eV9yZXN0JDUiLCJzdWJfZm10dHlfcmVzdCQxMSIsImZtdCQ2Iiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJmbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQxMyIsImZtdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkMTQiLCJmbXR0eV9yZXN0JDciLCJzdWIyX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTUiLCJzdWIyX2ZtdHR5JDAiLCJmbXQkOCIsInN1Yl9mbXR0eV9yZXN0JDE2IiwiZm10dHlfcmVzdCQ4Iiwic3ViMl9mbXR0eSQxIiwic3ViMV9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE3Iiwic3ViMl9mbXR0eSQyIiwic3ViMV9mbXR0eSQwIiwiZm10JDkiLCJzdWJfZm10dHlfcmVzdCQxOCIsImZtdHR5X3Jlc3QkOSIsInN1Yl9mbXR0eV9yZXN0JDE5IiwiZm10JDEwIiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJmbXR0eV9yZXN0JDEwIiwic3ViX2ZtdHR5X3Jlc3QkMjEiLCJmbXQkMTEiLCJzdWJfZm10dHlfcmVzdCQyMiIsImZtdHR5X3Jlc3QkMTEiLCJzdWJfZm10dHlfcmVzdCQyMyIsImZtdCQxMiIsInN1Yl9mbXR0eV9yZXN0JDI0IiwiZm10dHlfcmVzdCQxMiIsInN1Yl9mbXR0eV9yZXN0JDI1IiwiZm10JDEzIiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJmbXRfcmVzdCIsImZtdF9yZXN0JDAiLCJmbXRfcmVzdCQxIiwiZm10X3Jlc3QkMiIsImZtdF9yZXN0JDMiLCJmbXRfcmVzdCQ0IiwiZm10X3Jlc3QkNSIsInByZWMkNCIsImZtdHR5JDYiLCJmbXRfcmVzdCQ2IiwicHJlYyQ1IiwicHJlYyQ2IiwiZm10dHkkNyIsImZtdF9yZXN0JDciLCJwcmVjJDciLCJwcmVjJDgiLCJmbXR0eSQ4IiwiZm10X3Jlc3QkOCIsImZtdHR5JDkiLCJmbXRfcmVzdCQ5IiwiZm10dHkkMTAiLCJmbXRfcmVzdCQxMCIsImZtdHR5JDExIiwiZm10X3Jlc3QkMTEiLCJmbXR0eSQxMiIsImZtdF9yZXN0JDEyIiwiZm10dHkkMTMiLCJzdWJfZm10dHkxIiwiZm10X3Jlc3QkMTMiLCJzdWJfZm10dHkkMSIsImZtdHR5JDE0IiwiZm10JDE0IiwiZm10X3Jlc3QkMTQiLCJmbXR0eSQxNSIsImZtdCQxNSIsImZtdF9yZXN0JDE1IiwiZm10dHkkMTYiLCJmbXQkMTYiLCJmbXRfcmVzdCQxNiIsImZtdHR5JDE3IiwiZm10JDE3IiwiZm10X3Jlc3QkMTciLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5MyIsImZtdDMiLCJmbXQxJDAiLCJmbXR0eTIkMCIsImZtdDIkMCIsImZtdHR5MyQwIiwiZm10MyQwIiwiZm10dHlfcmVzdCQxMyIsImZtdF9yZXN0JDE4IiwiZm10dHkkMTgiLCJmbXQkMTgiLCJmbXR0eV9yZXN0JDE0IiwiZm10X3Jlc3QkMTkiLCJmbXR0eSQxOSIsImZtdCQxOSIsImZtdHR5X3Jlc3QkMTUiLCJmbXRfcmVzdCQyMCIsImZtdHR5JDIwIiwiZm10JDIwIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsImZtdHR5X3Jlc3QkMTYiLCJmbXR0eSQyMSIsImZtdCQyMSIsInN1Yl9mbXR0eSQyIiwic3ViX2ZtdHR5JDMiLCJmbXR0eSQyMiIsImZtdCQyMiIsInN1Yl9mbXR0eSQ0IiwidHlwZV9mb3JtYXQiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImskMyIsImthY2MiLCJrJDQiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaWdub3JlZF9wYXJhbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJrb2MiLCJyZXN0JDI0IiwicmVzdCQyNSIsImZuX29mX2N1c3RvbV9hcml0eSQwIiwiZm5fb2ZfY3VzdG9tX2FyaXR5Iiwib3V0cHV0X2FjYyIsInAkMiIsInAkMyIsInAkNCIsImJ1ZnB1dF9hY2MiLCJzdHJwdXRfYWNjIiwiZmFpbHdpdGhfbWVzc2FnZSIsIm9wZW5fYm94X29mX3N0cmluZyIsImludmFsaWRfYm94IiwicGFyc2Vfc3BhY2VzIiwicGFyc2VfbHdvcmQiLCJwYXJzZV9pbnQiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsInVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCIsImVuZF9pbmQiLCJpbnZhbGlkX2Zvcm1hdF93aXRob3V0IiwiZXhwZWN0ZWRfY2hhcmFjdGVyIiwiZXhwZWN0ZWQiLCJhZGRfbGl0ZXJhbCIsImxpdF9zdGFydCIsInNpemUiLCJwYXJzZV9wb3NpdGl2ZSIsInN0cl9pbmQkMCIsInN0cl9pbmQkMSIsInBhcnNlX2ludGVnZXIiLCJuZXh0X2luZCIsImluY29tcGF0aWJsZV9mbGFnIiwicGN0X2luZCIsIm9wdGlvbiIsInN1YmZtdCIsImNvbXB1dGVfaW50X2NvbnYiLCJwbHVzIiwic3BhY2UiLCJwbHVzJDAiLCJzcGFjZSQwIiwic2VhcmNoX3N1YmZvcm1hdF9lbmQiLCJzdWJfZW5kIiwic3RyX2luZCQyIiwic3ViX2VuZCQwIiwic3RyX2luZCQzIiwic3ViX2VuZCQxIiwic3RyX2luZCQ0Iiwic3RyX2luZCQ1Iiwic3ViX2VuZCQyIiwic3RyX2luZCQ2Iiwic3RyX2luZCQ3IiwicGFyc2VfbWFnaWNfc2l6ZSIsInN0cl9pbmRfMSIsInN0cl9pbmRfMiIsInN0cl9pbmRfMyIsInBhcnNlIiwicGFyc2VfZ29vZF9icmVhayIsImZvcm1hdHRpbmdfbGl0JDAiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJwYXJzZV90YWciLCJpc19vcGVuX3RhZyIsImluZCIsInN1Yl9zdHIiLCJzdWJfZm10Iiwic3ViX2Zvcm1hdCQwIiwiZm9ybWF0dGluZyQwIiwiZm9ybWF0dGluZyIsInBhcnNlX2ZsYWdzIiwibWludXMiLCJzZXRfZmxhZyIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfbGl0ZXJhbCIsInBhcnNlX2FmdGVyX3ByZWNpc2lvbiIsInN5bWIkMCIsIm1pbnVzJDAiLCJwYXJzZV9jb252ZXJzaW9uIiwicGFyc2VfY29udiIsInBhZHByZWMiLCJwbHVzX3VzZWQiLCJoYXNoX3VzZWQiLCJzcGFjZV91c2VkIiwiaWduX3VzZWQiLCJwYWRfdXNlZCIsInByZWNfdXNlZCIsImdldF9wbHVzIiwiZ2V0X2hhc2giLCJnZXRfc3BhY2UiLCJnZXRfaWduIiwiZ2V0X3BhZCIsImdldF9wcmVjIiwiZ2V0X3BhZHByZWMiLCJnZXRfaW50X3BhZCIsImNoZWNrX25vXzAiLCJvcHRfb2ZfcGFkIiwid2lkdGgkMSIsImdldF9wYWRfb3B0IiwiZ2V0X3BhZHByZWNfb3B0IiwiZm10X3Jlc3VsdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwicGFkJDkiLCJmbXRfcmVzdCQyMyIsImlnbm9yZWQkMTAiLCJmbXRfcmVzdCQyNCIsInBhZCQxMCIsImZtdF9yZXN0JDI1Iiwic3ViX2ZtdCQwIiwiZm10X3Jlc3QkMjYiLCJpZ25vcmVkJDExIiwiaWdub3JlZCQzIiwiaWdub3JlZCQ1IiwiaWdub3JlZCQ4Iiwic3BhY2UkMSIsImhhc2gkMSIsInBsdXMkMiIsImtpbmQiLCJpZ25vcmVkJDQiLCJpZ25vcmVkIiwiaWdub3JlZCQwIiwiaWdub3JlZCQxIiwicGx1cyQxIiwiaWduJDAiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImFzc29jMyIsInkyIiwieTEiLCJzcGxpdCQxIiwibWFrZV9zeW1saXN0IiwiaGVscF9hY3Rpb24iLCJhZGRfaGVscCIsInNwZWNsaXN0IiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJib29sX29mX3N0cmluZ19vcHQkMCIsImludF9vZl9zdHJpbmdfb3B0JDAiLCJmbG9hdF9vZl9zdHJpbmdfb3B0IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwiZm9sbG93JDAiLCJrZXl3b3JkIiwibm9fYXJnJDAiLCJmb2xsb3ciLCJub19hcmciLCJnZXRfYXJnJDAiLCJnZXRfYXJnIiwiY29uc3VtZV9hcmckMCIsImNvbnN1bWVfYXJnIiwidHJlYXRfYWN0aW9uJDAiLCJ0cmVhdF9hY3Rpb24iLCJmJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJyJDIiLCJhcmckMiIsImYkMyIsImFyZyQzIiwieCQxIiwiciQzIiwiYXJnJDQiLCJ4JDIiLCJzcGVjcyIsImYkNCIsImFyZyQ1IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiYXJnJDYiLCJuZXdhcmciLCJwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyIsInBhcnNlX2FyZ3ZfZHluYW1pYyIsImN1cnJlbnQkMCIsInBhcnNlX2FyZ3YiLCJtc2ckMCIsIm1zZyQxIiwicGFyc2VfZHluYW1pYyIsInBhcnNlX2V4cGFuZCIsInNlY29uZF93b3JkIiwibG9vcCIsIm1heF9hcmdfbGVuIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsImFsaWduIiwibGltaXQiLCJjb21wbGV0ZWQiLCJrc2QiLCJjdXRjb2wkMCIsInNwYWNlcyQwIiwiY3V0Y29sIiwia3dkX2xlbiIsInNwYWNlcyIsInJlYWRfYXV4IiwidHJpbSIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwiY29udiIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsImNvbnN0cnVjdG9yIiwidG9fc3RyaW5nJDYiLCJwcmludCIsImZjdCIsImNhdGNoJDAiLCJyYXdfYmFja3RyYWNlX2VudHJpZXMiLCJidCIsImNvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImZvcm1hdF9iYWNrdHJhY2Vfc2xvdCIsImlzX3JhaXNlIiwicHJpbnRfcmF3X2JhY2t0cmFjZSIsIm91dGNoYW4iLCJyYXdfYmFja3RyYWNlIiwiYmFja3RyYWNlIiwicHJpbnRfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZV90b19zdHJpbmciLCJiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsImV4bl9zbG90IiwiZXhuX3Nsb3RfaWQiLCJleG5fc2xvdF9uYW1lIiwiZXJyb3JzIiwiZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuIiwic3RhdHVzIiwidW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJlbXB0eV9iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZGVidWdnZXJfaW5fdXNlIiwiZXhuJDAiLCJyYXdfYmFja3RyYWNlJDAiLCJjb25zdCQwIiwiZmxpcCIsIm5lZ2F0ZSIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJ3b3JrIiwiZmluYWxseV9ub19leG4iLCJ3b3JrX2V4biIsIndvcmtfYnQiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJvdXRwdXQkMCIsImRpZ2VzdCIsImlucHV0JDAiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJuZXdfc3RhdGUiLCJhc3NpZ24iLCJzdDEiLCJzdDIiLCJmdWxsX2luaXQiLCJzZWVkIiwic2VlZCQwIiwibWFrZSQzIiwibWFrZV9zZWxmX2luaXQiLCJjb3B5JDUiLCJiaXRzIiwiY3VydmFsIiwibmV3dmFsIiwibmV3dmFsMzAiLCJpbnRhdXgiLCJpbnQkMCIsImJvdW5kIiwiZnVsbF9pbnQiLCJicG9zIiwiYnBvcyQwIiwiaW50MzIiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJib29sIiwiYml0czMyIiwiYml0czY0IiwibmF0aXZlYml0cyIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludDMyJDAiLCJuYXRpdmVpbnQkMCIsImludDY0JDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJiaXRzMzIkMCIsImJpdHM2NCQwIiwibmF0aXZlYml0cyQwIiwiZnVsbF9pbml0JDAiLCJpbml0JDUiLCJzZWxmX2luaXQiLCJnZXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJvbmdvaW5nX3RyYXZlcnNhbCIsImZsaXBfb25nb2luZ190cmF2ZXJzYWwiLCJwYXJhbXMiLCJyYW5kb21pemVkX2RlZmF1bHQiLCJyYW5kb21pemVkIiwicmFuZG9taXplIiwiaXNfcmFuZG9taXplZCIsInBybmciLCJwb3dlcl8yX2Fib3ZlIiwiY3JlYXRlJDMiLCJpbml0aWFsX3NpemUiLCJyYW5kb20iLCJjbGVhciQyIiwicmVzZXQkMCIsImNvcHlfYnVja2V0bGlzdCIsImtleSQwIiwibmV4dCQwIiwiY29weSQ2IiwibGVuZ3RoJDUiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwiY2VsbCQwIiwibmlkeCIsIm1hdGNoIiwibWF0Y2gkMCIsInJlc2l6ZSQwIiwib3NpemUiLCJpdGVyJDEwIiwiZG9fYnVja2V0Iiwib2xkX3RyYXYiLCJmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiZm9sZCQ0IiwiYiQwIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0b19zZXEkOSIsInRibF9kYXRhIiwiYnVjayIsImJ1Y2skMCIsImJ1Y2skMSIsInRvX3NlcV9rZXlzIiwidG9fc2VxX3ZhbHVlcyIsImtleV9pbmRleCIsImJ1Y2tldCIsImsxIiwibmV4dDEiLCJrMiIsIm5leHQyIiwiazMiLCJkMyIsIm5leHQzIiwiZmluZF9hbGwiLCJmaW5kX2luX2J1Y2tldCIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsImNvcHkiLCJzeiIsImhhc2hfcGFyYW0iLCJzZWVkZWRfaGFzaCIsImFkZCQwIiwiZmluZCQxIiwiZmluZF9vcHQkMSIsImZpbmRfYWxsJDAiLCJtZW0kMiIsImFkZF9zZXEkMiIsIm9mX3NlcSQ3IiwicmVidWlsZCIsIndlYWtfY3JlYXRlIiwibGVuZ3RoJDYiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCQwIiwic2V0JDEiLCJnZXQkMiIsImdldF9jb3B5IiwiY2hlY2skMCIsImJsaXQkNCIsImZpbGwkMiIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJzeiQwIiwic3okMSIsImNvdW50X2J1Y2tldCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJpbmRleCIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJuZXd0Iiwib2IiLCJvaCIsInNldHRlciQwIiwibmkiLCJmaW5kX29yIiwiaWZub3Rmb3VuZCIsImZpbmRfc2hhZG93IiwiaWZmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJpZCQwIiwidW5rbm93biIsInBwX2VucXVldWUiLCJ0b2tlbiIsInBwX2luZmluaXR5IiwicHBfb3V0cHV0X3N0cmluZyIsInBwX291dHB1dF9uZXdsaW5lIiwiZm9ybWF0X3BwX3RleHQiLCJ0ZXh0IiwiZm9ybWF0X3N0cmluZyIsImJyZWFrX25ld19saW5lIiwicmVhbF9pbmRlbnQiLCJicmVha19saW5lIiwiYnJlYWtfc2FtZV9saW5lIiwiZm9ybWF0X3BwX3Rva2VuIiwic2l6ZSQwIiwidGFicyIsImFkZF90YWIiLCJscyIsInRhZ19uYW1lIiwibWFya2VyIiwiYnJlYWtzIiwiZml0cyIsIm9mZiIsImJveF90eXBlJDAiLCJvZmYkMCIsImluc2VydGlvbl9wb2ludCIsInRhYnMkMCIsImZpcnN0IiwiaGVhZCIsInRhYiIsIm9mZiQxIiwiaW5zZXJ0aW9uX3BvaW50JDAiLCJ3aWR0aCQyIiwiYm94X3R5cGUkMSIsInRib3giLCJ0YWdfbmFtZSQwIiwibWFya2VyJDAiLCJhZHZhbmNlX2xlZnQiLCJwZW5kaW5nX2NvdW50IiwiZW5xdWV1ZV9hZHZhbmNlIiwiZW5xdWV1ZV9zdHJpbmdfYXMiLCJpbml0aWFsaXplX3NjYW5fc3RhY2siLCJzdGFjayIsInF1ZXVlX2VsZW0iLCJzZXRfc2l6ZSIsImxlZnRfdG90YWwiLCJzY2FuX3B1c2giLCJlbGVtIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfb3Blbl90YWciLCJwcF9jbG9zZV90YWciLCJwcF9zZXRfcHJpbnRfdGFncyIsInBwX3NldF9tYXJrX3RhZ3MiLCJwcF9nZXRfcHJpbnRfdGFncyIsInBwX2dldF9tYXJrX3RhZ3MiLCJwcF9zZXRfdGFncyIsInBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBjdCIsInBvdCIsIm1jdCIsIm1vdCIsInBwX3Jpbml0IiwicHBfZmx1c2hfcXVldWUiLCJwcF9wcmludF9hc19zaXplIiwicHBfcHJpbnRfYXMiLCJpc2l6ZSIsInBwX3ByaW50X3N0cmluZyIsInBwX3ByaW50X2J5dGVzIiwicHBfcHJpbnRfaW50IiwicHBfcHJpbnRfZmxvYXQiLCJwcF9wcmludF9ib29sIiwicHBfcHJpbnRfY2hhciIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2luZGVudCIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJmbHVzaF9idWZmZXJfZm9ybWF0dGVyIiwiZmx1c2hfc3RyX2Zvcm1hdHRlciIsIm1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJzb2IiLCJnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJpdGVtcyIsImFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSIsIml0ZW0iLCJmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2IiLCJvcGVuX2hib3giLCJvcGVuX3Zib3giLCJvcGVuX2h2Ym94Iiwib3Blbl9ob3Zib3giLCJvcGVuX2JveCIsImNsb3NlX2JveCIsIm9wZW5fdGFnIiwiY2xvc2VfdGFnIiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfc3RyaW5nJDAiLCJwcmludF9ieXRlcyQwIiwicHJpbnRfaW50JDAiLCJwcmludF9mbG9hdCQwIiwicHJpbnRfY2hhciQwIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9uZXdsaW5lJDAiLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwidnMiLCJvcHQkMSIsInBwX3ByaW50X3NlcSIsInNlcSQxIiwic2VxJDIiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0Iiwib3V0cHV0X2FjYyQwIiwiYnR5IiwicCQ1IiwicCQ2Iiwic3RycHV0X2FjYyQwIiwic2l6ZSQxIiwia2ZwcmludGYkMCIsImlrZnByaW50ZiQwIiwiaWZwcmludGYkMCIsImZwcmludGYkMCIsInByaW50ZiQwIiwiZXByaW50ZiQwIiwia2RwcmludGYiLCJkcHJpbnRmIiwia3ByaW50ZiIsInNwcmludGYkMCIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsInBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImJwcmludGYkMCIsInBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsInN0cmluZ2lmeSIsInBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImZ1bnMiLCJtYXJrX29wZW5fdGFnIiwibWFya19jbG9zZV90YWciLCJwcmludF9vcGVuX3RhZyIsInByaW50X2Nsb3NlX3RhZyIsInNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsInJlc2V0X3Rva2VuIiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJza2lwX2NoYXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiY3JlYXRlJDQiLCJpbmFtZSIsImZyb21fc3RyaW5nJDEiLCJmcm9tX2Z1bmN0aW9uJDAiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJzdGRpYiIsIm9wZW5faW5fZmlsZSIsIm9wZW5faW4iLCJmcm9tX2ZpbGUiLCJmcm9tX2ZpbGVfYmluIiwiZnJvbV9jaGFubmVsJDAiLCJjbG9zZV9pbiIsImljJDAiLCJtZW1vIiwibWVtb19mcm9tX2ljIiwibWVtb19mcm9tX2NoYW5uZWwiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfZmxvYXQiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja190aGlzX2NoYXIiLCJjaGVja19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwidG9rZW5fZmxvYXQiLCJzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciIsInNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJzY2FuX2NoYXIiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwic2Nhbl9jYW1sX2NoYXIiLCJmaW5kX3N0b3AiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsImdldF9jb3VudGVyIiwid2lkdGhfb2ZfcGFkX29wdCIsInN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQiLCJmbXRpbmciLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzJDAiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzJDAiLCJyZWFkZXIiLCJuZXdfayIsInJlYWRlcnNfcmVzdCIsInRha2VfZm9ybWF0X3JlYWRlcnMiLCJmbXQkMjMiLCJmbXQkMjQiLCJmbXQkMjUiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIiwibWFrZV9zY2FuZiIsInJlYWRlcnMiLCJzY2FuJDAiLCJzdHJfcmVzdCIsInBhZF9wcmVjX3NjYW5mIiwic2NhbiQxIiwic2NhbiQyIiwic2NhbiQzIiwic2NhbiQ0IiwiY29udiQwIiwic2NhbiQ1IiwiY29udiQxIiwic2NhbiQ2IiwiY29udiQyIiwic2NhbiQ3Iiwic2NhbiQ4IiwiZm10aW5nX2xpdCQwIiwic3RwJDAiLCJzJDIiLCJzdHJfcmVzdCQwIiwicmVzdCQyNiIsImFyZ19yZXN0Iiwia3NjYW5mIiwiZWYiLCJhcHBseSIsImFyZ3MkMCIsImV4YyIsImJzY2FuZiIsImtzc2NhbmYiLCJzc2NhbmYiLCJzY2FuZiIsImJzY2FuZl9mb3JtYXQiLCJmb3JtYXQiLCJzc2NhbmZfZm9ybWF0IiwiZm9ybWF0X2Zyb21fc3RyaW5nIiwidW5lc2NhcGVkIiwia2ZzY2FuZiIsImZzY2FuZiIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwicGFyYW1zJDAiLCJpbml0aWFsX29iamVjdF9zaXplIiwiZHVtbXlfaXRlbSIsInRhZyIsImNvbXBhcmUkMTQiLCJjb21wYXJlJDE1IiwiY29tcGFyZSQxNiIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwicmVzaXplJDEiLCJhcnJheSIsIm5ld19zaXplIiwib2xkX3NpemUiLCJuZXdfYnVjayIsIm1ldGhvZF9jb3VudCIsImluc3RfdmFyX2NvdW50IiwibmV3X21ldGhvZCIsInRhYmxlIiwiZ2V0X21ldGhvZF9sYWJlbCIsImxhYmVsIiwiZ2V0X21ldGhvZF9sYWJlbHMiLCJuYW1lcyIsInNldF9tZXRob2QiLCJlbGVtZW50IiwiZ2V0X21ldGhvZCIsInRvX2xpc3QkMyIsImFyciIsIm5hcnJvdyIsInZhcnMiLCJ2aXJ0X21ldGhzIiwiY29uY3JfbWV0aHMiLCJ2YXJzJDAiLCJ2aXJ0X21ldGhzJDAiLCJjb25jcl9tZXRocyQwIiwidmlydF9tZXRoX2xhYnMiLCJjb25jcl9tZXRoX2xhYnMiLCJsYWIiLCJ0dmFycyIsImJ5X25hbWUiLCJieV9sYWJlbCIsIm1ldCIsImhtIiwid2lkZW4iLCJzYXZlZF92YXJzIiwic2F2ZWRfaGlkZGVuX21ldGhzIiwibmV3X3Nsb3QiLCJuZXdfdmFyaWFibGUiLCJ0b19hcnJheSIsIm5ld19tZXRob2RzX3ZhcmlhYmxlcyIsIm1ldGhzIiwidmFscyIsIm1ldGhzJDAiLCJubWV0aHMiLCJudmFscyIsImdldF92YXJpYWJsZSIsImdldF92YXJpYWJsZXMiLCJhZGRfaW5pdGlhbGl6ZXIiLCJjcmVhdGVfdGFibGUiLCJwdWJsaWNfbWV0aG9kcyIsInRhZ3MiLCJpbml0X2NsYXNzIiwiaW5oZXJpdHMiLCJjbGEiLCJzdXBlciQwIiwibm0iLCJtYWtlX2NsYXNzIiwicHViX21ldGhzIiwiY2xhc3NfaW5pdCIsImVudl9pbml0IiwibWFrZV9jbGFzc19zdG9yZSIsImluaXRfdGFibGUiLCJkdW1teV9jbGFzcyIsImxvYyIsInVuZGVmIiwiY3JlYXRlX29iamVjdCIsImNyZWF0ZV9vYmplY3Rfb3B0Iiwib2JqXzAiLCJpdGVyX2YiLCJydW5faW5pdGlhbGl6ZXJzIiwiaW5pdHMiLCJydW5faW5pdGlhbGl6ZXJzX29wdCIsImNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaSIsImdldF9kYXRhJDAiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290IiwidGFibGVzJDIiLCJ0YWJsZXMkMCIsInRhYmxlcyQxIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJjbG8kMCIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIngkMyIsIm4kNyIsIngkNCIsIm4kOCIsIm4kOSIsIngkNSIsImYkOCIsImUkMiIsIm4kMTAiLCJ4JDYiLCJmJDkiLCJuJDExIiwieCQ3IiwibiQxMiIsIngkOCIsIm4kMTMiLCJuJDE0IiwiZSQzIiwibiQxNSIsIm0kMiIsIngkOSIsIm0kMyIsIm4kMTYiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ1IiwibiQxOCIsInN0YXRzJDAiLCJpbml0X21vZF9ibG9jayIsImNvbXBzJDAiLCJtb2R1Iiwic2hhcGUiLCJmbiQwIiwiY29tcHMiLCJpbml0X21vZCIsInVwZGF0ZV9tb2RfYmxvY2siLCJjbCIsInVwZGF0ZV9tb2QiLCJpbml0aWFsX2J1ZmZlciIsImJ1ZmZlciIsImJ1ZnBvcyIsInJlc2V0X2J1ZmZlciIsInN0b3JlIiwibmV3YnVmZmVyIiwiZ2V0X3N0cmluZyIsIm1ha2VfbGV4ZXIiLCJrZXl3b3JkcyIsImt3ZF90YWJsZSIsImlkZW50X29yX2tleXdvcmQiLCJrZXl3b3JkX29yX2Vycm9yIiwiY29tbWVudCIsImVzY2FwZSIsImVuZF9leHBvbmVudF9wYXJ0IiwiZXhwb25lbnRfcGFydCIsIm51bWJlciIsImlkZW50MiIsIm5lZ19udW1iZXIiLCJuZXh0X3Rva2VuJDAiLCJtYXliZV9jb21tZW50IiwibmV4dF90b2tlbiIsImhrZXkiLCJjbGVhbiIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJyZXBsYWNlX2J1Y2tldCIsIm5ld19kIiwiYnVja2V0X2xlbmd0aF9hbGl2ZSIsInN0YXRzX2FsaXZlIiwiY3JlYXRlJDUiLCJnZXRfa2V5JDAiLCJnZXRfa2V5X2NvcHkkMCIsInNldF9rZXkkMCIsInVuc2V0X2tleSQwIiwiY2hlY2tfa2V5JDAiLCJibGl0X2tleSQwIiwiZ2V0X2RhdGEkMSIsImdldF9kYXRhX2NvcHkiLCJzZXRfZGF0YSIsInVuc2V0X2RhdGEiLCJjaGVja19kYXRhIiwiYmxpdF9kYXRhIiwibWFrZSQ0IiwiZXBoIiwicXVlcnkiLCJzZXRfa2V5X2RhdGEiLCJtYWtlJDUiLCJhZGQkMSIsInRlc3Rfa2V5IiwicmVtb3ZlJDAiLCJmaW5kJDIiLCJsZW5ndGgkNyIsImNsZWFyJDMiLCJjcmVhdGUkNiIsImdldF9rZXkxIiwiZ2V0X2tleTFfY29weSIsInNldF9rZXkxIiwidW5zZXRfa2V5MSIsImNoZWNrX2tleTEiLCJnZXRfa2V5MiIsImdldF9rZXkyX2NvcHkiLCJzZXRfa2V5MiIsInVuc2V0X2tleTIiLCJjaGVja19rZXkyIiwiYmxpdF9rZXkxIiwiYmxpdF9rZXkyIiwiYmxpdF9rZXkxMiIsImdldF9kYXRhJDIiLCJnZXRfZGF0YV9jb3B5JDAiLCJzZXRfZGF0YSQwIiwidW5zZXRfZGF0YSQwIiwiY2hlY2tfZGF0YSQwIiwiYmxpdF9kYXRhJDAiLCJtYWtlJDYiLCJrZXkxIiwia2V5MiIsInF1ZXJ5JDAiLCJrMiQwIiwiazEkMCIsIm1ha2UkNyIsImFkZCQyIiwidGVzdF9rZXlzIiwicmVtb3ZlJDEiLCJmaW5kJDMiLCJsZW5ndGgkOCIsImNsZWFyJDQiLCJjcmVhdGUkNyIsImxlbmd0aCQ5IiwiZ2V0X2tleSQxIiwiZ2V0X2tleV9jb3B5JDEiLCJzZXRfa2V5JDEiLCJ1bnNldF9rZXkkMSIsImNoZWNrX2tleSQxIiwiYmxpdF9rZXkkMSIsImdldF9kYXRhJDMiLCJnZXRfZGF0YV9jb3B5JDEiLCJzZXRfZGF0YSQxIiwidW5zZXRfZGF0YSQxIiwiY2hlY2tfZGF0YSQxIiwiYmxpdF9kYXRhJDEiLCJtYWtlJDgiLCJxdWVyeSQxIiwia2kiLCJrMCIsIm1ha2UkOSIsImFkZCQzIiwidGVzdF9rZXlzJDAiLCJyZW1vdmUkMiIsImZpbmQkNCIsImxlbmd0aCQxMCIsImNsZWFyJDUiLCJnZW5lcmljX2Jhc2VuYW1lIiwiaXNfZGlyX3NlcCIsImdlbmVyaWNfZGlybmFtZSIsImlzX3JlbGF0aXZlIiwiaXNfaW1wbGljaXQiLCJjaGVja19zdWZmaXgiLCJzdWZmIiwiY2hvcF9zdWZmaXhfb3B0IiwibGVuX2YiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lIiwicXVvdGUkMCIsImFkZF9icyIsImxvb3AkMCIsImxvb3BfYnMiLCJxdW90ZV9jbWRfZmlsZW5hbWUiLCJxdW90ZV9jb21tYW5kJDAiLCJkcml2ZV9hbmRfcGF0aCIsImRpcm5hbWUkMCIsInBhdGgiLCJkcml2ZSIsImRpciIsImJhc2VuYW1lJDAiLCJiYXNlbmFtZSQxIiwiZGlybmFtZSQxIiwibnVsbCQzIiwiY3VycmVudF9kaXJfbmFtZSQyIiwicGFyZW50X2Rpcl9uYW1lJDIiLCJkaXJfc2VwJDIiLCJpc19kaXJfc2VwJDEiLCJpc19yZWxhdGl2ZSQxIiwiaXNfaW1wbGljaXQkMSIsImNoZWNrX3N1ZmZpeCQxIiwiY2hvcF9zdWZmaXhfb3B0JDEiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQxIiwicXVvdGVfY29tbWFuZCQxIiwiYmFzZW5hbWUkMiIsImRpcm5hbWUkMiIsImNvbmNhdCQ0IiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiZXh0ZW5zaW9uIiwiY2hvcF9leHRlbnNpb24iLCJyZW1vdmVfZXh0ZW5zaW9uIiwicHJuZyQwIiwidGVtcF9maWxlX25hbWUiLCJ0ZW1wX2RpciIsInJuZCIsImN1cnJlbnRfdGVtcF9kaXJfbmFtZSIsInNldF90ZW1wX2Rpcl9uYW1lIiwiZ2V0X3RlbXBfZGlyX25hbWUiLCJ0ZW1wX2ZpbGUiLCJ0cnlfbmFtZSIsImNvdW50ZXIkMSIsIm9wZW5fdGVtcF9maWxlIiwic3RoJDAiLCJwZXJtcyIsInN0aCQxIiwiYWRkJDQiLCJzdWIkNCIsIm5lZyIsImNvbmoiLCJtdWwiLCJkaXYiLCJpbnYiLCJub3JtMiIsIm5vcm0iLCJxJDAiLCJwb2xhciIsInNxcnQiLCJ3JDAiLCJleHAiLCJsb2ciLCJwb3ciLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDhfc2lnbmVkIiwiaW50OF91bnNpZ25lZCIsImludDE2X3NpZ25lZCIsImludDE2X3Vuc2lnbmVkIiwiaW50MzIkMSIsImludDY0JDEiLCJpbnQkMiIsIm5hdGl2ZWludCQxIiwiY29tcGxleDMyIiwiY29tcGxleDY0Iiwia2luZF9zaXplX2luX2J5dGVzIiwiY19sYXlvdXQiLCJmb3J0cmFuX2xheW91dCIsImNsb29wIiwiaWR4IiwiY29sIiwiZmxvb3AiLCJpbml0JDYiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJjcmVhdGUkOCIsImdldCQzIiwic2V0JDIiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQ5IiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDciLCJvZl9hcnJheSIsImJhIiwiY3JlYXRlJDEwIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDgiLCJvZl9hcnJheSQwIiwicm93IiwiY3JlYXRlJDExIiwiZGltMyIsInNpemVfaW5fYnl0ZXMkMyIsInNsaWNlX2xlZnRfMSIsInNsaWNlX3JpZ2h0XzEiLCJzbGljZV9sZWZ0XzIiLCJzbGljZV9yaWdodF8yIiwiaW5pdCQ5Iiwib2ZfYXJyYXkkMSIsImFycmF5MF9vZl9nZW5hcnJheSIsImFycmF5MV9vZl9nZW5hcnJheSIsImFycmF5Ml9vZl9nZW5hcnJheSIsImFycmF5M19vZl9nZW5hcnJheSIsInJlc2hhcGVfMCIsInJlc2hhcGVfMSIsInJlc2hhcGVfMiIsInJlc2hhcGVfMyIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImxlbmd0aCQxMSIsImlucHV0X2NoYXIkMCIsImlucHV0X2J5dGUkMCIsImlucHV0X2xpbmUkMCIsInJlYWxseV9pbnB1dCQwIiwicmVhbGx5X2lucHV0X3N0cmluZyQwIiwicmVhZF91cHRvIiwiZW5zdXJlIiwibmV3X2xlbiQwIiwibmV3X2xlbiQxIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSQwIiwiaW5pdGlhbF9zaXplJDEiLCJucmVhZCIsImJ1ZiQwIiwiYnVmJDEiLCJyZW0iLCJ3aXRoX29wZW4kMCIsIndpdGhfb3Blbl9iaW4kMCIsIndpdGhfb3Blbl90ZXh0JDAiLCJ3aXRoX29wZW5fZ2VuJDAiLCJzZWVrJDAiLCJwb3MkMCIsImxlbmd0aCQxMiIsInlvanNvbl9vZl9zb3VyY2VfcG9zaXRpb24iLCJ2X2xhd19oZWFkaW5ncyIsInZfZW5kX2NvbHVtbiIsInZfZW5kX2xpbmUiLCJ2X3N0YXJ0X2NvbHVtbiIsInZfc3RhcnRfbGluZSIsInZfZmlsZW5hbWUiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJhcmckMSIsImJuZHMkMSIsImFyZyQyIiwiYm5kcyQyIiwiYXJnJDMiLCJibmRzJDMiLCJhcmckNCIsImJuZHMkNCIsIm1vbmV5X29mX2NlbnRzX3N0cmluZyIsImNlbnRzIiwibW9uZXlfb2ZfdW5pdHNfaW50IiwidW5pdHMiLCJtb25leV9vZl9jZW50c19pbnRlZ2VyIiwibW9uZXlfdG9fZmxvYXQiLCJtIiwibW9uZXlfb2ZfZGVjaW1hbCIsImQiLCJtb25leV90b19zdHJpbmciLCJtb25leV90b19jZW50cyIsIm1vbmV5X3JvdW5kIiwiZGVjaW1hbF9vZl9zdHJpbmciLCJkZWNpbWFsX3RvX2Zsb2F0IiwiZGVjaW1hbF9vZl9mbG9hdCIsImRlY2ltYWxfb2ZfaW50ZWdlciIsImRlY2ltYWxfdG9fc3RyaW5nIiwibWF4X3ByZWNfZGlnaXRzIiwiaSIsInNpZ24iLCJuIiwiaW50X3BhcnQiLCJuJDAiLCJkaWdpdHMiLCJsZWFkaW5nX3plcm9lcyIsImRpZ2l0IiwibnVtX2xlYWRpbmdfemVyb2VzIiwiaSQwIiwiZm10IiwiZGVjaW1hbF9yb3VuZCIsInEiLCJkZWNpbWFsX29mX21vbmV5IiwiaW50ZWdlcl9vZl9zdHJpbmciLCJzIiwiaW50ZWdlcl90b19zdHJpbmciLCJpbnRlZ2VyX3RvX2ludCIsImludGVnZXJfb2ZfaW50IiwiaW50ZWdlcl9leHBvbmVudGlhdGlvbiIsImUiLCJpbnRlZ2VyX2xvZzIiLCJ5ZWFyX29mX2RhdGUiLCJ5IiwibW9udGhfbnVtYmVyX29mX2RhdGUiLCJpc19sZWFwX3llYXIiLCJ5JDAiLCJkYXlfb2ZfbW9udGhfb2ZfZGF0ZSIsImQkMCIsImRhdGVfb2ZfbnVtYmVycyIsInllYXIiLCJtb250aCIsImRheSIsImRhdGVfdG9fc3RyaW5nIiwiZmlyc3RfZGF5X29mX21vbnRoIiwibGFzdF9kYXlfb2ZfbW9udGgiLCJkdXJhdGlvbl9vZl9udW1iZXJzIiwiZHVyYXRpb25fdG9fc3RyaW5nIiwiZHVyYXRpb25fdG9feWVhcnNfbW9udGhzX2RheXMiLCJ5b2pzb25fb2ZfcnVudGltZV92YWx1ZSIsInYwJDQiLCJ2MCQ1IiwidjAkNiIsInYwIiwidjAkNyIsInYwJDAiLCJ2MCQ4IiwidjAkMSIsInYwJDkiLCJ2MCQyIiwidjAkMTAiLCJ2MCQzIiwidjEiLCJ2MCQxMSIsInYwJDEyIiwidjEkMCIsInYwJDEzIiwidjAkMTQiLCJ2MSQxIiwidjEkMiIsInYxJDMiLCJ2MCQxNSIsInYwJDE2IiwidjEkNCIsInYwJDE3IiwidjAkMTgiLCJ1bmVtYmVkZGFibGUiLCJlbWJlZF91bml0IiwiZW1iZWRfYm9vbCIsIngiLCJlbWJlZF9tb25leSIsImVtYmVkX2ludGVnZXIiLCJlbWJlZF9kZWNpbWFsIiwiZW1iZWRfZGF0ZSIsImVtYmVkX2R1cmF0aW9uIiwiZW1iZWRfYXJyYXkiLCJmIiwieW9qc29uX29mX2luZm9ybWF0aW9uIiwidiIsInlvanNvbl9vZl92YXJfZGVmIiwidl9mdW5fY2FsbHMiLCJ2X3ZhbHVlIiwidl9uYW1lIiwidl9wb3MiLCJ5b2pzb25fb2ZfZnVuX2NhbGwiLCJ2X291dHB1dCIsInZfYm9keSIsInZfaW5wdXQiLCJ2X2Z1bl9uYW1lIiwieW9qc29uX29mX2V2ZW50Iiwidl9pbnB1dHMiLCJsb2dfcmVmIiwicmVzZXRfbG9nIiwicmV0cmlldmVfbG9nIiwibG9nX2JlZ2luX2NhbGwiLCJpbmZvIiwibG9nX2VuZF9jYWxsIiwibG9nX3ZhcmlhYmxlX2RlZmluaXRpb24iLCJlbWJlZCIsImxvZ19kZWNpc2lvbl90YWtlbiIsInBvcyIsInBwX2V2ZW50cyIsIm9wdCIsInBwZiIsImV2ZW50cyIsInN0aCIsImlzX2ZpcnN0X2NhbGwiLCJmb3JtYXRfdmFyX2RlZiIsInZhciQwIiwiZm9ybWF0X3Bvc19vcHQiLCJmb3JtYXRfdmFsdWUiLCJmb3JtYXRfdmFyX2RlZnMiLCJmb3JtYXRfdmFyX2RlZl93aXRoX2Z1bl9jYWxscyIsInZhcl93aXRoX2Z1biIsImZ1bl9jYWxsIiwiZm9ybWF0X2V2ZW50IiwieCQwIiwieCQxIiwieCQyIiwieCQzIiwieCQ0IiwibmFtZSIsImF0dHJzIiwibmFtZSQwIiwidmFsdWUiLCJlbHRzIiwidmFyX2RlZl93aXRoX2Z1biIsIm91dHB1dCIsImJvZHkiLCJpbnB1dCIsImZ1bl9uYW1lIiwiYm9keSQwIiwiaW5wdXRzIiwiZW1wdHkiLCJlbXB0eV9jdHgiLCJyYXdfZXZlbnRfdG9fc3RyaW5nIiwibmFtZSQxIiwicGFyc2VfcmF3X2V2ZW50cyIsInJhd19ldmVudHMiLCJuYl9yYXdfZXZlbnRzIiwiaXNfZnVuY3Rpb25fY2FsbCIsImluZm9zIiwiaXNfdmFyX2RlZiIsInBhcnNlX2Z1bl9jYWxsIiwicmVzdCIsImJvZHlfY3R4IiwicGFyc2VfZXZlbnRzIiwiYm9keV9yZXYiLCJyZXN0JDAiLCJ2YXJfZGVmIiwib3V0cHV0JDAiLCJjdHgiLCJjdHgkMCIsInZhcl9uYW1lIiwibHMkMCIsImN0eCQxIiwicmVzdCQxIiwiY3R4JDIiLCJpbmZvcyQwIiwicmVzdCQyIiwiY3R4JDMiLCJyZXN0JDMiLCJ2YXJfZG90X3N1YnNjb3BlX3Zhcl9uYW1lIiwibHMiLCJjdHgkNCIsImluZm9zJDEiLCJyYXdfZXZlbnRzJDAiLCJmdW5fY2FsbHMiLCJyZXN0JDQiLCJpbmZvcyQyIiwiZnVuX2NhbGwkMCIsImZ1bl9jYWxscyQxIiwiZnVuX2NhbGxzJDAiLCJyZXN0JDYiLCJ2YWx1ZSQwIiwibmFtZSQyIiwidmFyX2NvbXAiLCJyZXN0JDUiLCJjdHgkNiIsImN0eCQ1IiwibXNnIiwiaGFuZGxlX2RlZmF1bHQiLCJleGNlcHRpb25zIiwianVzdCIsImNvbnMiLCJhY2MiLCJleGNlcHQiLCJuZXdfdmFsIiwiaGFuZGxlX2RlZmF1bHRfb3B0IiwiYiIsIm5vX2lucHV0IiwiY29tcGFyZV9wZXJpb2RzIiwicDEiLCJwMiIsInAxX2RheXMiLCJwMl9kYXlzIiwiZXF1YWxfcGVyaW9kcyIsIm9fbm90Iiwib19sZW5ndGgiLCJhIiwib19taW51c19pbnQiLCJpMSIsIm9fbWludXNfcmF0Iiwib19taW51c19tb24iLCJtMSIsIm9fbWludXNfZHVyIiwib19hbmQiLCJvX29yIiwib194b3IiLCJvX2VxIiwib19tYXAiLCJvX3JlZHVjZSIsImRmdCIsImxlbiIsInIiLCJvX2NvbmNhdCIsIm9fZmlsdGVyIiwib19hZGRfaW50X2ludCIsImkyIiwib19hZGRfcmF0X3JhdCIsIm9fYWRkX21vbl9tb24iLCJtMiIsIm9fYWRkX2RhdF9kdXIiLCJkYSIsImR1Iiwib19hZGRfZHVyX2R1ciIsIm9fc3ViX2ludF9pbnQiLCJvX3N1Yl9yYXRfcmF0Iiwib19zdWJfbW9uX21vbiIsIm9fc3ViX2RhdF9kYXQiLCJvX3N1Yl9kYXRfZHVyIiwiZGF0IiwiZHVyIiwib19zdWJfZHVyX2R1ciIsIm9fbXVsdF9pbnRfaW50Iiwib19tdWx0X3JhdF9yYXQiLCJvX211bHRfbW9uX3JhdCIsImkxX2FicyIsImkyX2FicyIsInNpZ25faW50IiwicmF0X3Jlc3VsdCIsInJlbWFpbmRlciIsInJlcyIsIm9fbXVsdF9kdXJfaW50Iiwib19kaXZfaW50X2ludCIsIm9fZGl2X3JhdF9yYXQiLCJvX2Rpdl9tb25fbW9uIiwib19kaXZfbW9uX3JhdCIsInIxIiwib19sdF9pbnRfaW50Iiwib19sdF9yYXRfcmF0Iiwib19sdF9tb25fbW9uIiwib19sdF9kdXJfZHVyIiwiZDEiLCJkMiIsIm9fbHRfZGF0X2RhdCIsIm9fbHRlX2ludF9pbnQiLCJvX2x0ZV9yYXRfcmF0Iiwib19sdGVfbW9uX21vbiIsIm9fbHRlX2R1cl9kdXIiLCJvX2x0ZV9kYXRfZGF0Iiwib19ndF9pbnRfaW50Iiwib19ndF9yYXRfcmF0Iiwib19ndF9tb25fbW9uIiwib19ndF9kdXJfZHVyIiwib19ndF9kYXRfZGF0Iiwib19ndGVfaW50X2ludCIsIm9fZ3RlX3JhdF9yYXQiLCJvX2d0ZV9tb25fbW9uIiwib19ndGVfZHVyX2R1ciIsIm9fZ3RlX2RhdF9kYXQiLCJvX2VxX2ludF9pbnQiLCJvX2VxX3JhdF9yYXQiLCJvX2VxX21vbl9tb24iLCJvX2VxX2R1cl9kdXIiLCJvX2VxX2RhdF9kYXQiLCJvX2ZvbGQiLCJvX25vdCQwIiwib19sZW5ndGgkMCIsIm9fdG9yYXRfaW50Iiwib190b3JhdF9tb24iLCJvX3RvbW9uZXlfcmF0Iiwib19nZXREYXkiLCJvX2dldE1vbnRoIiwib19nZXRZZWFyIiwib19maXJzdERheU9mTW9udGgiLCJvX2xhc3REYXlPZk1vbnRoIiwib19yb3VuZF9tb24iLCJvX3JvdW5kX3JhdCIsIm9fbWludXNfaW50JDAiLCJvX21pbnVzX3JhdCQwIiwib19taW51c19tb24kMCIsIm9fbWludXNfZHVyJDAiLCJvX2FuZCQwIiwib19vciQwIiwib194b3IkMCIsIm9fZXEkMCIsIm9fbWFwJDAiLCJvX3JlZHVjZSQwIiwib19jb25jYXQkMCIsIm9fZmlsdGVyJDAiLCJvX2FkZF9pbnRfaW50JDAiLCJvX2FkZF9yYXRfcmF0JDAiLCJvX2FkZF9tb25fbW9uJDAiLCJvX2FkZF9kYXRfZHVyJDAiLCJvX2FkZF9kdXJfZHVyJDAiLCJvX3N1Yl9pbnRfaW50JDAiLCJvX3N1Yl9yYXRfcmF0JDAiLCJvX3N1Yl9tb25fbW9uJDAiLCJvX3N1Yl9kYXRfZGF0JDAiLCJvX3N1Yl9kYXRfZHVyJDAiLCJvX3N1Yl9kdXJfZHVyJDAiLCJvX211bHRfaW50X2ludCQwIiwib19tdWx0X3JhdF9yYXQkMCIsIm9fbXVsdF9tb25fcmF0JDAiLCJvX211bHRfZHVyX2ludCQwIiwib19kaXZfaW50X2ludCQwIiwib19kaXZfcmF0X3JhdCQwIiwib19kaXZfbW9uX21vbiQwIiwib19kaXZfbW9uX3JhdCQwIiwib19sdF9pbnRfaW50JDAiLCJvX2x0X3JhdF9yYXQkMCIsIm9fbHRfbW9uX21vbiQwIiwib19sdF9kdXJfZHVyJDAiLCJvX2x0X2RhdF9kYXQkMCIsIm9fbHRlX2ludF9pbnQkMCIsIm9fbHRlX3JhdF9yYXQkMCIsIm9fbHRlX21vbl9tb24kMCIsIm9fbHRlX2R1cl9kdXIkMCIsIm9fbHRlX2RhdF9kYXQkMCIsIm9fZ3RfaW50X2ludCQwIiwib19ndF9yYXRfcmF0JDAiLCJvX2d0X21vbl9tb24kMCIsIm9fZ3RfZHVyX2R1ciQwIiwib19ndF9kYXRfZGF0JDAiLCJvX2d0ZV9pbnRfaW50JDAiLCJvX2d0ZV9yYXRfcmF0JDAiLCJvX2d0ZV9tb25fbW9uJDAiLCJvX2d0ZV9kdXJfZHVyJDAiLCJvX2d0ZV9kYXRfZGF0JDAiLCJvX2VxX2ludF9pbnQkMCIsIm9fZXFfcmF0X3JhdCQwIiwib19lcV9tb25fbW9uJDAiLCJvX2VxX2R1cl9kdXIkMCIsIm9fZXFfZGF0X2RhdCQwIiwib19mb2xkJDAiLCJleG4iLCJtb2R1bGUiLCJnbG9iYWxUaGlzIiwibnVsbCIsInVuZGVmaW5lZCIsImpzb29fZXhwb3J0cyIsImV2ZW50IiwiZHVyYXRpb25fb2ZfanNvbyIsImQiLCJkdXJhdGlvbl90b19qc29vIiwiZGF5cyIsIm1vbnRocyIsInllYXJzIiwiZGF0ZV9vZl9qc29vIiwiZCQwIiwiZCQxIiwiZGF5IiwibW9udGgiLCJ5ZWFyIiwiZGF0ZV90b19qc29vIiwiZXZ0IiwicG9zIiwidiIsImluZm8iLCJldmVudCIsImV2ZW50X21hbmFnZXIiLCJleGVjdXRlX29yX3Rocm93X2Vycm9yIiwiZiIsInRocm93X2Vycm9yIiwiZGVzY3IiLCJwb3MkMCIsInBvcyQxIiwiZW1iZWRfcHJpc2VfZW5fY2hhcmdlIiwieCIsIngkMCIsIngkMSIsIngkMiIsIngkMyIsIngkNCIsImVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3NjbyIsImVtYmVkX3ByaXNlX2VuX2NvbXB0ZSIsImVtYmVkX3ZlcnNlbWVudF9hbGxvY2F0aW9ucyIsImVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaSIsIngkNSIsIngkNiIsIngkNyIsImVtYmVkX2NvbGxlY3Rpdml0ZSIsIngkOCIsImVtYmVkX2FsbG9jYXRpb25fZmFtaWxpYWxlc19hdiIsImVtYmVkX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMiLCJlbWJlZF9zbWljIiwiZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvIiwiZW1iZWRfaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhIiwiZW1iZWRfZW5mYW50X2VudHJlZSIsImVtYmVkX2VuZmFudCIsImVtYmVkX2VuZmFudF9sZV9wbHVzX2FnZSIsImVtYmVkX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMiLCJlbWJlZF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2kiLCJlbWJlZF9hbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXYkMCIsImVtYmVkX2VuZmFudF9sZV9wbHVzX2FnZV9pbiIsImVtYmVkX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaSIsImVtYmVkX3NtaWNfaW4iLCJlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW8kMCIsImVtYmVkX2ludGVyZmFjZV9hbGxvY2F0aW9uc19mYSQwIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwIiwiYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zIiwiZW5mYW50X2xlX3BsdXNfYWdlIiwiZW5mYW50X2xlX3BsdXNfYWdlX2luIiwiZW5mYW50cyIsInBvdGVudGllbF9wbHVzX2FnZV8xIiwicG90ZW50aWVsX3BsdXNfYWdlXzIiLCJsZV9wbHVzX2FnZSIsInNtaWMiLCJzbWljX2luIiwiZGF0ZV9jb3VyYW50ZSIsInJlc2lkZW5jZSIsImJydXRfaG9yYWlyZSIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSIsIm1vbnRhbnQiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiIsImFnZV9sNTEyXzNfMiIsInNtaWNfZG90X2RhdGVfY291cmFudGUiLCJzbWljX2RvdF9yZXNpZGVuY2UiLCJyZXN1bHQiLCJzbWljX2RvdF9icnV0X2hvcmFpcmUiLCJyZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSIsInBsYWZvbmRfbDUxMl8zXzIiLCJwYXJhbSIsImNvbmRpdGlvbnNfaG9yc19hZ2UiLCJkcm9pdF9vdXZlcnQiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiIsInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybSIsInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybSQwIiwicmVzc291cmNlc19tZW5hZ2UiLCJlbmZhbnRzX2FfY2hhcmdlIiwiYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlIiwicHJpc2VfZW5fY29tcHRlIiwibm9tYnJlX2VuZmFudHNfYWxpbmVhXzJfbDUyMV8zIiwidmVyc2lvbl9hdnJpbF8yMDA4X2RvdF9hZ2VfbWluIiwiYm1hZl9kb3RfZGF0ZV9jb3VyYW50ZSIsInJlc3VsdCQwIiwiYm1hZl9kb3RfbW9udGFudCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3ByZSIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlcyIsInJlc3VsdCQxIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfY29uIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfYWdlIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnIiwiZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9lbmZhbnRzIiwicmVzdWx0JDIiLCJlbmZhbnRfbGVfcGx1c19hZ2VfZG90X2xlX3BsdXMiLCJlbmZhbnQiLCJlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF8iLCJlc3RfZW5mYW50X2xlX3BsdXNfYWdlIiwicGxhZm9uZF9pX2lfZDUyMV8zIiwicGxhZm9uZF9pX2Q1MjFfMyIsImRyb2l0X291dmVydF9jb21wbGVtZW50IiwiZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlIiwibW9udGFudF9pbml0aWFsX2Jhc2VfcXVhdHJpZW1lIiwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lIiwibm9tYnJlX3RvdGFsX2VuZmFudHMiLCJzdW0xIiwic3VtMiIsIm5vbWJyZV9tb3llbl9lbmZhbnRzIiwibW9udGFudF9pbml0aWFsX2Jhc2VfcHJlbWllcl9lIiwiZHJvaXRfb3V2ZXJ0X2Jhc2UiLCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbiIsImNvbXBsZW1lbnRfZGVncmVzc2lmIiwibW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV9wYXJfIiwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lJDAiLCJtb250YW50X2luaXRpYWxfYmFzZV9kZXV4aWVtZV8iLCJyYXBwb3J0X2VuZmFudHNfdG90YWxfbW95ZW4iLCJtb250YW50X2luaXRpYWxfbWV0cm9wb2xlX21ham8iLCJtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlIiwibW9udGFudF9pbml0aWFsX2Jhc2UiLCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvbiIsIm1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyXyIsIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9iYSIsIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9tYSIsIm1vbnRhbnRfdmVyc2VfYmFzZSIsIm1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbiIsIm1vbnRhbnRfYmFzZV9jb21wbGVtZW50X3BvdXJfYiIsIm1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyXyQwIiwibW9udGFudF92ZXJzZSIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCIsImlfZGF0ZV9jb3VyYW50ZSIsImlfZW5mYW50cyIsImlfcmVzc291cmNlc19tZW5hZ2UiLCJpX3Jlc2lkZW5jZSIsImlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZSIsImlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZSQwIiwiaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyJDAiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXMiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXMkMCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2VuZiIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2F2YSIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbiIsImlfbW9udGFudF92ZXJzZSIsInByaXNlX2VuX2NoYXJnZV90b19qc29vIiwiYXJnIiwiYXJnJDAiLCJhcmckMSIsImFyZyQyIiwiYXJnJDMiLCJwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyIsInByaXNlX2VuX2NoYXJnZSIsImNvbnMiLCJzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV8iLCJzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV8kMCIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIiwicHJpc2VfZW5fY29tcHRlX3RvX2pzb28iLCJwcmlzZV9lbl9jb21wdGVfb2ZfanNvbyIsInZlcnNlbWVudF9hbGxvY2F0aW9uc190b19qc29vIiwidmVyc2VtZW50X2FsbG9jYXRpb25zX29mX2pzb28iLCJ2ZXJzZW1lbnRfYWxsb2NhdGlvbnMiLCJlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMiLCJhcmckNCIsImFyZyQ1IiwiYXJnJDYiLCJlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMkMCIsImNvbGxlY3Rpdml0ZV90b19qc29vIiwiYXJnJDciLCJjb2xsZWN0aXZpdGVfb2ZfanNvbyIsImNvbGxlY3Rpdml0ZSIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQwIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDEiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb28iLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX29mX2pzb28iLCJzbWljX3RvX2pzb28iLCJzbWljX29mX2pzb28iLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMCIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQxIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDAiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkMSIsImVuZmFudF9lbnRyZWVfdG9fanNvbyIsImVuZmFudF9lbnRyZWUiLCJlbmZhbnRfZW50cmVlX29mX2pzb28iLCJlbmZhbnRfdG9fanNvbyIsImVuZmFudF9vZl9qc29vIiwiZW5mYW50X2xlX3BsdXNfYWdlX3RvX2pzb28iLCJlbmZhbnRfbGVfcGx1c19hZ2Vfb2ZfanNvbyIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyIsImlucHV0IiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDIiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkMyIsImVuZmFudF9sZV9wbHVzX2FnZV9pbl90b19qc29vIiwiZW5mYW50X2xlX3BsdXNfYWdlX2luX29mX2pzb28iLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX3RvX2oiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2oiLCJzbWljX2luX3RvX2pzb28iLCJzbWljX2luX29mX2pzb28iLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMiIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQzIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDIiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkMyIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQ0IiwiZW5mYW50X2xlX3BsdXNfYWdlJDAiLCJzbWljJDAiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kNCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXMkMCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMkMCIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCQ0IiwiZW1iZWRfdHlwZV9wcmV0IiwiZW1iZWRfdGl0dWxhaXJlX3ByZXQiLCJlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgiLCJlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjgiLCJlbWJlZF9hbWVsaW9yZV9wYXJfb2NjdXBhbnQiLCJlbWJlZF9saW1pdGVfdHJhbmNoZSIsImVtYmVkX2xpbWl0ZV90cmFuY2hlX2RlY2ltYWwiLCJlbWJlZF9wcmVzdGF0aW9uX3JlY3VlIiwiZW1iZWRfcGFyZW50X291X2F1dHJlIiwiZW1iZWRfc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIiwiZW1iZWRfcGFyZW50ZSIsImVtYmVkX2RhdGVfZGVfbmFpc3NhbmNlX291X21vaSIsImVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uIiwiZW1iZWRfcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluIiwiZW1iZWRfdmVyc2VtZW50X2EiLCJlbWJlZF9kZXBlbnNlX2xvZ2VtZW50IiwiZW1iZWRfbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSIsImVtYmVkX3R5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdCIsImVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbCIsImVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGUiLCJlbWJlZF9wcmlzZV9lbl9jaGFyZ2UkMCIsImVtYmVkX3R5cGVfbG9nZW1lbnRfZm95ZXIiLCJlbWJlZF9jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG8iLCJlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGMiLCJlbWJlZF9jb2xsZWN0aXZpdGUkMCIsImVtYmVkX3ByaXNlX2VuX2NoYXJnZV9lbmZhbnQiLCJlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY28kMCIsImVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaSQwIiwiZW1iZWRfY29udmVudGlvbl9iYWlsbGV1cl9zb2NpIiwiZW1iZWRfY29udmVudGlvbl9hX25faF9hIiwiZW1iZWRfcGVyc29ubmVfc291c19sb2NhdGlvbiIsImVtYmVkX3BhdHJpbW9pbmUiLCJlbWJlZF9jb25kaXRpb25zX2V0cmFuZ2VycyIsImVtYmVkX3BlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbCIsImVtYmVkX2VsaWdpYmlsaXRlX2FpZGVfcGVyc29ubiIsImVtYmVkX2VsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbSIsImVtYmVkX3Jlc3NvdXJjZXNfYWlkZXNfcGVyc29ubiIsImVtYmVkX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYSIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSIsImVtYmVkX2NhbGN1bF9lcXVpdmFsZW5jZV9sb3llciIsImVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbSIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQwIiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0c19hY2NlIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDEiLCJlbWJlZF90cmFpdGVtZW50X2Zvcm11bGVfYWlkZV8iLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkMiIsImVtYmVkX2luZm9zX2NoYW5nZW1lbnRfbG9nZW1lbiIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQwIiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDEiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkMiIsImVtYmVkX291dmVydHVyZV9kcm9pdHNfcmV0cmFpdCIsImVtYmVkX2ltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50IiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlIiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlJDAiLCJlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW8kMSIsImVtYmVkX3NtaWMkMCIsImVtYmVkX3ByZXQiLCJlbWJlZF9uZXVmX291X2FuY2llbiIsImVtYmVkX3RyYW5jaGVfcmV2ZW51IiwiZW1iZWRfdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCIsImVtYmVkX2F1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIiwiZW1iZWRfZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sIiwiZW1iZWRfbG9nZW1lbnRfZm95ZXIiLCJlbWJlZF9lbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWwiLCJlbWJlZF9lbmZhbnRfYV9jaGFyZ2UiLCJlbWJlZF90eXBlX2JhaWxsZXVyIiwiZW1iZWRfbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfIiwiZW1iZWRfbmF0aW9uYWxpdGUiLCJlbWJlZF9jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDIiLCJlbWJlZF9wcm9wcmlldGFpcmUiLCJlbWJlZF9pbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGUiLCJlbWJlZF9lbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc18iLCJlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSIsImVtYmVkX2RlbWFuZGV1ciIsImVtYmVkX2xvY2F0aW9uIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29uIiwiZW1iZWRfY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCIsImVtYmVkX21vZGVfb2NjdXBhdGlvbiIsImVtYmVkX2xvZ2VtZW50IiwiZW1iZWRfbWVuYWdlIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29uJDAiLCJlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm4kMCIsImVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbCQwIiwiZW1iZWRfZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtJDAiLCJlbWJlZF9yZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm4kMCIsImVtYmVkX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYSQwIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDMiLCJlbWJlZF9jYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXIkMCIsImVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbSQwIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDQiLCJlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2UkMCIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQ1IiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDYiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkMyIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQ0IiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDUiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkNiIsImVtYmVkX291dmVydHVyZV9kcm9pdHNfcmV0cmFpdCQwIiwiZW1iZWRfaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfIiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlJDEiLCJlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2UkMiIsImVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpbyQyIiwiZW1iZWRfc21pY19pbiQwIiwiZW1iZWRfZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfJDAiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AiLCJleG9uZXJlX2NzZyIsInRhdXhfY3JkcyIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSIsInJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllcyIsImNvbmRpdGlvbl8yX2R1XzgzMl8yNSIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjYiLCJ0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjYiLCJ0cmFuY2hlIiwidHJhbmNoZV9oYXV0IiwidHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpIiwicmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzJDAiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8iLCJub21icmVfcGVyc29ubmVzX2FfY2hhcmdlIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fIiwibl9ub21icmVfcGFydHNfZDgzMl8xMSIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIiwiZGF0ZV9uYWlzc2FuY2VfYXNzdXJlIiwiYWdlX291dmVydHVyZV9kcm9pdCIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50IiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4iLCJtb2RlX29jY3VwYXRpb24iLCJhaWRlX3ZlcnNlZSIsIm1vbnRhbnRfYXBsIiwibW9udGFudF9jaGFyZ2VzIiwiZGVwZW5zZV9sb2dlbWVudCIsIm1vbnRhbnRfZGV0dGUiLCJtb2RlX29jY3VwYXRpb25faW1wYXllIiwiZGVwZW5zZV9sb2dlbWVudF9icnV0ZSIsInRvdGFsX2VjaGVhbmNlcyIsIm1lbnN1YWxpdGUiLCJsb3llciIsInRvdGFsIiwibW9udGFudF9sb3llciIsImRlcGVuc2VfbG9nZW1lbnRfbmV0dGUiLCJlY2hlYW5jZV9wcmV0X25ldHRlIiwibWVuc3VhbGl0ZV9uZXR0ZSIsImVjaGVhbmNlX3ByZXRfYnJ1dGUiLCJtZW5zdWFsaXRlX2JydXRlIiwibG95ZXJfbmV0IiwibG95ZXJfYnJ1dCIsInNldWlsX2ltcGF5ZV9kZXBlbnNlX2RlX2xvZ2VtZSIsIm1vbnRhbnRfaW1wYXllIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDUiLCJzbWljJDEiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UiLCJsb3llcl9wcmluY2lwYWxfYmFzZSIsImJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbiIsInpvbmUiLCJsb2dlbWVudF9lc3RfY2hhbWJyZSIsImFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZSIsInR5cGVfYWlkZSIsImNvbG9jYXRpb24iLCJyZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZSIsImxvZ2VtZW50X21ldWJsZV9kODQyXzIiLCJmcmFjdGlvbl9sODMyXzMiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTYiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXQiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb24iLCJ0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSIsImFiYXR0ZW1lbnRfZm9yZmFpdGFpcmVfZDgyM18xNyIsImxveWVyX3JlZmVyZW5jZSIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMTYiLCJwbGFmb25kX2xveWVyX2Q4MjNfMTZfMiIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kOCIsImxveWVyX3ByaW5jaXBhbF9hdmVjX3JlZHVjdGlvbiIsInBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNiIsInBsYWZvbmRfZGVncmVzc2l2aXRlX2Q4MjNfMTYiLCJsb3llcl9lbGlnaWJsZSIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51ZSIsInBhcnRpY2lwYXRpb25fbWluaW1hbGUiLCJyYXBwb3J0X2xveWVycyIsImFpZGVfZmluYWxlIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0IiwidGF1eF9sb3llcl9lbGlnaWJsZV9mb3JtdWxlIiwiY3JkcyIsImFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaSIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYiIsInRhdXhfbG95ZXJfZWxpZ2libGVfdGF1eF9hcnJvbiIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkdWN0aSIsInRhdXhfcHJpc2VfY29tcHRlX3Jlc3NvdXJjZXMiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnQiLCJwYXJ0aWNpcGF0aW9uX3Jlc3NvdXJjZXMiLCJwYXJ0aWNpcGF0aW9uX3Jlc3NvdXJjZXMkMCIsInBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGUiLCJhaWRlX2ZpbmFsZV9mb3JtdWxlIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDAiLCJ0eXBlX2xvZ2VtZW50X2ZveWVyIiwiZGF0ZV9jb252ZW50aW9ubmVtZW50IiwicmVkZXZhbmNlIiwiY29lZmZpY2llbnRfcl9kODMyXzI1IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI0IiwibW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18yNCIsImNvbmRpdGlvbl8yX2R1XzgzMl8yNSQwIiwicGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfY29uZGl0IiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0IiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21iIiwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI3IiwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzIiwiZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUiLCJuX25vbWJyZV9wYXJ0c19kODMyXzI1JDAiLCJkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjciLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kMCIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSQxIiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDIiLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kMyIsImRlbm9taW5hdGV1ciIsImRlbm9taW5hdGV1ciQwIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4IiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZSIsImFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbSIsImVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4JDAiLCJhaWRlX2ZpbmFsZSQwIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4JDEiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMSIsIm1lbnN1YWxpdGVfcHJpbmNpcGFsZSIsInR5cGVfdHJhdmF1eF9sb2dlbWVudCIsImRhdGVfc2lnbmF0dXJlX3ByZXQiLCJsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW4iLCJkYXRlX2VudHJlZV9sb2dlbWVudCIsImNvcHJvcHJpZXRlIiwic2l0dWF0aW9uX3I4MjJfMTFfMTNfMTciLCJ0eXBlX3ByZXQiLCJhbmNpZW5uZXRlX2xvZ2VtZW50IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzEwIiwibW9udGFudF9taW5pbWFsX2FpZGVfZDgzMl8xMCIsImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MyQwIiwibW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xIiwidGF1eF90cmFuY2hlX2luZmVyaWV1cmVfZDgzMl8xIiwidGF1eF90cmFuY2hlX3N1cGVyaWV1cmVfZDgzMl8xIiwidGF1eF9mcmFuY3NfdmVyc19ldXJvcyIsImFtZWxpb3JlX3Bhcl9vY2N1cGFudCIsImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MyQxIiwicmVzc291cmNlc19tZW5hZ2VfYXZlY19kODMyXzE4IiwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODMyIiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwIiwicGxhZm9uZF9zaWduYXR1cmUiLCJwbGFmb25kX2VudHJlZSIsInBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYiIsInBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYyIsIm1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMSQwIiwibWVuc3VhbGl0ZV9taW5pbWFsZSIsIm1lbnN1YWxpdGVfZWxpZ2libGUiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8iLCJtZW5hZ2UiLCJkZW1hbmRldXIiLCJjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3AiLCJjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZSIsInNldWlsX2w4MjJfM19wYXJ0c19wcm9wcmlldGUiLCJzZXVpbF9sODIyXzNfcGFydHNfdXN1ZnJ1aXQiLCJzZXVpbF9sODIyXzVfcGF0cmltb2luZSIsInVzdWZydWl0X291X3Byb3ByaWV0ZV9mYW1pbGxlIiwiY29uZGl0aW9uX25vbl9vdXZlcnR1cmVfbDgyMl85IiwiY29uZGl0aW9uX25vbl9vdXZlcnR1cmVfbDgyMl84Iiwibm9tYnJlX3BlcnNvbm5lc19sb2dlbWVudCIsImNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX21pbiIsImNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlJDAiLCJjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3AkMCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfZG90XyIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfZG90XyQwIiwicGF0cmltb2luZV90b3RhbF9kZW1hbmRldXIiLCJjb25kaXRpb25zIiwiY29uZGl0aW9uX25hdGlvbmFsaXRlIiwicGxhZm9uZF9pbmRpdmlkdWVsX2w4MTVfOV9zZWN1IiwicGVyc29ubmUiLCJjb25kaXRpb25fbG9nZW1lbnRfbG9jYXRpb25fdGkiLCJ1c3VmcnVpdF9vdV9wcm9wcmlldGVfZmFtaWxsZSQwIiwicGFydHMiLCJwYXJ0cyQwIiwicGFydHMkMSIsInBhcnRzJDIiLCJjb25kaXRpb25fbG9nZW1lbnRfbW9kZV9vY2N1cGEiLCJjb25kaXRpb25fb3V2ZXJ0dXJlX2w4MjJfMTBfcGUiLCJhZ2VfbDE2MV8xN18yX3NlY3UiLCJhY2MiLCJwcmVzdGF0aW9uIiwiZWxpZ2liaWxpdGVfbG9nZW1lbnQiLCJhZ2VfbDM1MV84XzFfc2VjdSIsImVsaWdpYmlsaXRlIiwicGFyZW50IiwiY29uZGl0aW9uXzJfcjgyM180IiwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX2FfY2hhIiwicGVyc29ubmVfYV9jaGFyZ2UiLCJwZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2MiLCJjb2VmZiIsImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZSIsIm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpcyIsInJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbCIsInJlc3NvdXJjZXNfZGVtYW5kZXVyIiwicmVzc291cmNlc19jb25qb2ludCIsInBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbiIsImRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdGVfcmVtdSIsImNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0ZV9yZW11biIsInBlcnNvbm5lc19hX2NoYXJnZSIsInNpdHVhdGlvbl9mYW1pbGlhbGUiLCJjb25kaXRpb25fYWdlX2JvdXJzZV9lbnNlaWduZW0iLCJkZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlcyIsImRhdGVfZGVtYW5kZV9vdV9yZWV4YW1lbl9kcm9pdCIsInBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3BybyIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfOCIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfNyIsInJlc3NvdXJjZXNfZm9yZmFpdGFpcmVzX3I4MjJfMiIsInJlc3NvdXJjZXNfcGVyc29ubmVzX3ZpdmFudF9oYSIsImFiYXR0ZW1lbnQiLCJyZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGUiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MiLCJsb3llcl9wcmluY2lwYWwiLCJjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG95ZXJfcCIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcmVzc291ciIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYmVuZWZpYyIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfZGF0ZV9jbyIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfbm9tYnJlXyIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfc2l0dWF0aSIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfem9uZSIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG9nZW1lbiIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYWdlZXNfbyIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHlwZV9haSIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfY29sb2NhdCIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcmVkdWN0aSIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG9nZW1lbiQwIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9haWRlX2ZpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90cmFpdGVtIiwiaW5mb3MiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95IiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4IiwibW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml8xNSIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xNSIsIm1vbnRhbnRfbWluaW1hbF9kZXBlbnNlX25ldHRlXyIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQwIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDEiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kMiIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQzIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDQiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kNSIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ2IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDciLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kOCIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ5IiwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzIiwiZXF1aXZhbGVuY2VfbG95ZXIiLCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UiLCJsb3llcl9taW5pbWFsIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kZXBlbnNlIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjIiwicmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2JhIiwiY2hhcmdlc19tZW5zdWVsbGVzX3ByZXQiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfNiIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfNiIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xMSIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xMiIsImNvZWZmaWNpZW50X2Q4NDJfMTEiLCJjb2VmZmljaWVudF9kODQyXzEyIiwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyIiwic2V1aWxfbWluaW1hbF9yZXNzb3VyY2VzX21lbmFnIiwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyJDAiLCJyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfc2UiLCJwbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82Iiwic2V1aWxfbWluaW1hbF9kZXBlbnNlX25ldHRlX21pIiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZSQwIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDIiLCJyZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGkiLCJsb2NhdGlvbiIsImxvZ2VtZW50Zm95ZXIiLCJwcm9wcmlldGFpcmUiLCJsb2NhdGlvbiQwIiwicHJvcHJpZXRhaXJlJDAiLCJjYXRlZ29yaWVfY2FsY3VsX2FwbCIsInJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaSIsImJhaWxsZXVyIiwidHJhaXRlbWVudF9mb3JtdWxlIiwidHJhaXRlbWVudF9mb3JtdWxlJDAiLCJsb2dlbWVudF9mb3llciIsInJlc3VsdCQzIiwicmVzdWx0JDQiLCJ0cmFpdGVtZW50X2Zvcm11bGUkMSIsInNvdXNfY2FsY3VsX3RyYWl0ZW1lbnQiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0iLCJpbmZvcm1hdGlvbnMiLCJkYXRlX2VtbWVuYWdlbWVudCIsImRlcGVuc2VzX2p1c3RpZmllZXNfcmVlbGxlbWVudCIsImRlbGFpX2FwcmVzX2VtbWVuYWdlbWVudF9sODIzXyIsImNvbmRpdGlvbl9yYW5nX2VuZmFudCIsImVsaWdpYmlsaXRlX2FwbF9kb3RfbWVuYWdlIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9kZW1hbmRldXIiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfY291cmEiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl8iLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl8kMCIsImVsaWdpYmlsaXRlX2FwbF9kb3RfZGF0ZV9jb3VyYSQwIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9lbGlnaWJpbGl0IiwiZGF0ZV9uYWlzc2FuY2Vfb3VfZ3Jvc3Nlc3NlIiwiZGF0ZV9uYWlzc2FuY2UiLCJjb25kaXRpb25fcGVyaW9kZV9kZW1lbmFnZW1lbnQiLCJwbGFmb25kX2Q4MjNfMjIiLCJtb250YW50X3ByaW1lX2RlbWVuYWdlbWVudCIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSIsImNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfMSIsImNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfNiIsInByb3ByaWV0ZSIsInByb3ByaWV0ZSQwIiwiY29uZGl0aW9uX2xvZ2VtZW50X3ByZXQiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9tZW5hZ2UiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kZW1hbmQiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kYXRlX2MiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXQiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXQkMCIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2VsaWdpYiIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X25vbWJyZSIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvZWZmaSIsImNvbnZlbnRpb24iLCJjb252ZW50aW9uJDAiLCJjb25kaXRpb25fbG9nZW1lbnRfYmFpbGxldXIiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4iLCJiZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2wiLCJkdXJlZV9sODQxXzFfMyIsImNvbmRpdGlvbl9hY2Nlc3Npb25fcHJvcHJpZXRlIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0JDEiLCJlbGlnaWJpbGl0ZV9kaXNwb3NpdGlvbnNfY29tbXUiLCJkYXRlX21hcmlhZ2UiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kMCIsImVsaWdpYmlsaXRlX2w4NDFfMiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4iLCJiYWlsbGV1ciQwIiwicmVzdWx0JDUiLCJyZXN1bHQkNiIsInRyYWl0ZW1lbnRfZm9ybXVsZSQyIiwicmVzdWx0JDciLCJyZXN1bHQkOCIsInRyYWl0ZW1lbnRfZm9ybXVsZSQzIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaSIsInJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jbyIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQxIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDIiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kMyIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQ0IiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDUiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkMCIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQxIiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDIiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkMyIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQ0IiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDUiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQxIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkMyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDUiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkNiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQ3IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDMiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkNCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ1IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDYiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkNyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ4IiwiYWlkZV9maW5hbGVfYXBsIiwiYWlkZV9maW5hbGVfYWwiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ciLCJtZW5hZ2Vfc2Fuc19lbmZhbnRzX2dhcmRlX2FsdGUiLCJjYWxjdWxldHRlX2RvdF9tZW5hZ2UiLCJjYWxjdWxldHRlX2RvdF9kZW1hbmRldXIiLCJjYWxjdWxldHRlX2RvdF9kYXRlX2NvdXJhbnRlIiwiY2FsY3VsZXR0ZV9kb3RfcmVzc291cmNlc19tZW5hIiwiY2FsY3VsZXR0ZV9kb3RfZWxpZ2liaWxpdGUiLCJjYWxjdWxldHRlX2RvdF9haWRlX2ZpbmFsZV9mb3IiLCJjYWxjdWxldHRlX2RvdF90cmFpdGVtZW50X2FpZGUiLCJjYWxjdWxldHRlX2RvdF9jb2VmZmljZW50c19lbmYiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUkMCIsImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZSQxIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlJDIiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUkMyIsInR5cGVfcHJldF90b19qc29vIiwidHlwZV9wcmV0X29mX2pzb28iLCJ0aXR1bGFpcmVfcHJldF90b19qc29vIiwidGl0dWxhaXJlX3ByZXRfb2ZfanNvbyIsInRpdHVsYWlyZV9wcmV0IiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfIiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfJDAiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfdCIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfbyIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUiLCJhbWVsaW9yZV9wYXJfb2NjdXBhbnRfdG9fanNvbyIsImFtZWxpb3JlX3Bhcl9vY2N1cGFudF9vZl9qc29vIiwibGltaXRlX3RyYW5jaGVfdG9fanNvbyIsImxpbWl0ZV90cmFuY2hlX29mX2pzb28iLCJsaW1pdGVfdHJhbmNoZSIsImxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfdG9fanNvbyIsImxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfb2ZfanNvbyIsImxpbWl0ZV90cmFuY2hlX2RlY2ltYWwiLCJwcmVzdGF0aW9uX3JlY3VlX3RvX2pzb28iLCJwcmVzdGF0aW9uX3JlY3VlX29mX2pzb28iLCJwcmVzdGF0aW9uX3JlY3VlIiwicGFyZW50X291X2F1dHJlX3RvX2pzb28iLCJwYXJlbnRfb3VfYXV0cmVfb2ZfanNvbyIsInBhcmVudF9vdV9hdXRyZSIsInNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV90b19qcyIsInNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV9vZl9qcyIsInNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSIsInBhcmVudGVfdG9fanNvbyIsInBhcmVudGVfb2ZfanNvbyIsInBhcmVudGUiLCJkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2ciLCJkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2ckMCIsInpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28iLCJ6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vIiwiem9uZV9kX2hhYml0YXRpb24iLCJwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm8kMCIsInZlcnNlbWVudF9hX3RvX2pzb28iLCJ2ZXJzZW1lbnRfYV9vZl9qc29vIiwidmVyc2VtZW50X2EiLCJkZXBlbnNlX2xvZ2VtZW50X3RvX2pzb28iLCJkZXBlbnNlX2xvZ2VtZW50X29mX2pzb28iLCJtb2RlX29jY3VwYXRpb25faW1wYXllX3RvX2pzb28iLCJtb2RlX29jY3VwYXRpb25faW1wYXllX29mX2pzb28iLCJ0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG8iLCJ0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG8kMCIsInR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbiIsInR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbiQwIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV90b19qc29vIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV9vZl9qc29vIiwicHJpc2VfZW5fY2hhcmdlX3RvX2pzb28kMCIsInByaXNlX2VuX2NoYXJnZV9vZl9qc29vJDAiLCJ0eXBlX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28iLCJ0eXBlX2xvZ2VtZW50X2ZveWVyX29mX2pzb28iLCJjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWwiLCJjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWwkMCIsInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcCIsInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcCQwIiwiY29sbGVjdGl2aXRlX3RvX2pzb28kMCIsImNvbGxlY3Rpdml0ZV9vZl9qc29vJDAiLCJwcmlzZV9lbl9jaGFyZ2VfZW5mYW50X3RvX2pzb28iLCJwcmlzZV9lbl9jaGFyZ2VfZW5mYW50X29mX2pzb28iLCJwcmlzZV9lbl9jaGFyZ2VfZW5mYW50Iiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfJDEiLCJzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV8kMiIsImVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyQxIiwiZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzJDIiLCJjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbF90b18iLCJjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbCIsImNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsX29mXyIsImNvbnZlbnRpb25fYV9uX2hfYV90b19qc29vIiwiY29udmVudGlvbl9hX25faF9hIiwiY29udmVudGlvbl9hX25faF9hX29mX2pzb28iLCJwZXJzb25uZV9zb3VzX2xvY2F0aW9uX3RvX2pzb28iLCJwZXJzb25uZV9zb3VzX2xvY2F0aW9uIiwicGVyc29ubmVfc291c19sb2NhdGlvbl9vZl9qc29vIiwicGF0cmltb2luZV90b19qc29vIiwicGF0cmltb2luZSIsInBhdHJpbW9pbmVfb2ZfanNvbyIsImNvbmRpdGlvbnNfZXRyYW5nZXJzX3RvX2pzb28iLCJjb25kaXRpb25zX2V0cmFuZ2VycyIsImNvbmRpdGlvbnNfZXRyYW5nZXJzX29mX2pzb28iLCJwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnQiLCJwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnQkMCIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQwIiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtJDEiLCJyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2wkMCIsInJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbCQxIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wJDAiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AkMSIsImNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mbyQwIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvJDEiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl8kMCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQxIiwidHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlIiwidHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlJDAiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkOSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxMCIsImluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0MiIsImluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0MiQwIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jJDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MkMSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjYyQwIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjJDEiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQxIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfdG9fIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfb2ZfIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV90b19qIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9vZl9qIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfdG9fanNvIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfb2ZfanNvIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF90IiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9vIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDAiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckMSIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ2IiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDciLCJzbWljX3RvX2pzb28kMCIsInNtaWNfb2ZfanNvbyQwIiwicHJldF90b19qc29vIiwicHJldCIsInByZXRfb2ZfanNvbyIsIm5ldWZfb3VfYW5jaWVuX3RvX2pzb28iLCJuZXVmX291X2FuY2llbl9vZl9qc29vIiwibmV1Zl9vdV9hbmNpZW4iLCJ0cmFuY2hlX3JldmVudV90b19qc29vIiwidHJhbmNoZV9yZXZlbnUiLCJ0cmFuY2hlX3JldmVudV9vZl9qc29vIiwidHJhbmNoZV9yZXZlbnVfZGVjaW1hbF90b19qc29vIiwidHJhbmNoZV9yZXZlbnVfZGVjaW1hbCIsInRyYW5jaGVfcmV2ZW51X2RlY2ltYWxfb2ZfanNvbyIsImF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX3RvX2pzbyIsImF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIiwiYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvIiwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2RlIiwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2RlJDAiLCJsb2dlbWVudF9mb3llcl90b19qc29vIiwibG9nZW1lbnRfZm95ZXJfb2ZfanNvbyIsImVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXyIsImVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwiZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfJDAiLCJlbmZhbnRfYV9jaGFyZ2VfdG9fanNvbyIsImVuZmFudF9hX2NoYXJnZSIsImVuZmFudF9hX2NoYXJnZV9vZl9qc29vIiwidHlwZV9iYWlsbGV1cl90b19qc29vIiwidHlwZV9iYWlsbGV1cl9vZl9qc29vIiwidHlwZV9iYWlsbGV1ciIsImxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXyIsImxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXyQwIiwibG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMiLCJuYXRpb25hbGl0ZV90b19qc29vIiwibmF0aW9uYWxpdGVfb2ZfanNvbyIsIm5hdGlvbmFsaXRlIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfIiwicHJvcHJpZXRhaXJlX3RvX2pzb28iLCJwcm9wcmlldGFpcmVfb2ZfanNvbyIsImluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZSIsImluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZSQwIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDAiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMSIsInBlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28iLCJwZXJzb25uZV9hX2NoYXJnZV9vZl9qc29vIiwiZGVtYW5kZXVyX3RvX2pzb28iLCJkZW1hbmRldXJfb2ZfanNvbyIsImxvY2F0aW9uX3RvX2pzb28iLCJsb2NhdGlvbl9vZl9qc29vIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfJDAiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMSIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2xfdG9fanNvbyIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2xfb2ZfanNvbyIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2wiLCJtb2RlX29jY3VwYXRpb25fdG9fanNvbyIsIm1vZGVfb2NjdXBhdGlvbl9vZl9qc29vIiwibG9nZW1lbnRfdG9fanNvbyIsImxvZ2VtZW50IiwibG9nZW1lbnRfb2ZfanNvbyIsIm1lbmFnZV90b19qc29vIiwibWVuYWdlX29mX2pzb28iLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMiIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQzIiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtJDIiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMyIsInJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbCQyIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDMiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AkMiIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDExIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEyIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvJDIiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxNCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQyIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDMiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTUiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTYiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTciLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTgiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MkMiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQzIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjJDIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQyIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDMiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl8iLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl8kMCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fdCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fbyIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX3RvXyIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX29mXyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaSQwIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDIiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckMyIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ4IiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDkiLCJzbWljX2luX3RvX2pzb28kMCIsInNtaWNfaW5fb2ZfanNvbyQwIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDIiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMyIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQ0IiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDQiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kNCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQ0Iiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSQwIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQkMCIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQxMCIsInNtaWMkMiIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxOSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMSIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQ0IiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDQiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkNCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMiIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQkMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQkMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQ0IiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsIl0sInNvdXJjZXMiOlsiIiwiL2J1aWx0aW4vK2ludDY0LmpzIiwiL2J1aWx0aW4vK21sQnl0ZXMuanMiLCIvYnVpbHRpbi8rZmFpbC5qcyIsIi9idWlsdGluLytzdGRsaWIuanMiLCIvYnVpbHRpbi8rZm9ybWF0LmpzIiwiL2J1aWx0aW4vK2llZWVfNzU0LmpzIiwiL2J1aWx0aW4vK2ZzX25vZGUuanMiLCIvYnVpbHRpbi8rZnMuanMiLCIvYnVpbHRpbi8rdW5peC5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rZnNfZmFrZS5qcyIsIi9idWlsdGluLytuYXQuanMiLCIvYnVpbHRpbi8rZ3JhcGhpY3MuanMiLCIvYnVpbHRpbi8rbWFyc2hhbC5qcyIsIi9idWlsdGluLytpby5qcyIsIi9idWlsdGluLytnYy5qcyIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvemFyaXRoX3N0dWJzX2pzL2JpZ2ludGVnZXIuanMiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL3phcml0aF9zdHVic19qcy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2JpZ2FycmF5LmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK3BhcnNpbmcuanMiLCIvYnVpbHRpbi8raW50cy5qcyIsIi9idWlsdGluLytoYXNoLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvYnVpbHRpbi8ranNsaWJfanNfb2Zfb2NhbWwuanMiLCIvYnVpbHRpbi8rb2JqLmpzIiwiL2J1aWx0aW4vK2JpZ3N0cmluZy5qcyIsIi9idWlsdGluLytiYWNrdHJhY2UuanMiLCIvYnVpbHRpbi8rbGV4aW5nLmpzIiwiL2J1aWx0aW4vK2FycmF5LmpzIiwiL2J1aWx0aW4vK3dlYWsuanMiLCIvYnVpbHRpbi8rbWQ1LmpzIiwiL2J1aWx0aW4vK3N0ci5qcyIsIi9idWlsdGluLytiaWdzdHJpbmctY3N0cnVjdC5qcyIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2ludDY0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9sZXhpbmcubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvcHJpbnRleGMubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2ZpbGVuYW1lLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NhbWxpbnRlcm5hbEF0b21pYy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9wZXJ2YXNpdmVzLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9saXN0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9pbl9jaGFubmVsLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9vdXRfY2hhbm5lbC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZWl0aGVyLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL29iai5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2FtbGludGVybmFsTGF6eS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc2VxLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9vcHRpb24ubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3Jlc3VsdC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvYm9vbC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2hhci5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvYnl0ZXMubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2ludC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC91bml0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9tYXJzaGFsLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9hcnJheS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvaW50MzIubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3BhcnNpbmcubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3NldC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvbWFwLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9zdGFjay5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvcXVldWUubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3N0cmVhbS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvYnVmZmVyLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9wcmludGYubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZnVuLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9nYy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZGlnZXN0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9oYXNodGJsLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC93ZWFrLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9mb3JtYXQubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3NjYW5mLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jYWxsYmFjay5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2FtbGludGVybmFsT08ubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NhbWxpbnRlcm5hbE1vZC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZ2VubGV4Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9lcGhlbWVyb24ubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2JpZ2FycmF5Lm1sIiwiL3dvcmtzcGFjZV9yb290L3J1bnRpbWVzL29jYW1sL3J1bnRpbWUubWwiLCIiLCIiLCIvd29ya3NwYWNlX3Jvb3QvcnVudGltZXMvanNvby9ydW50aW1lLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2FwaV93ZWIubWwiLCIvd29ya3NwYWNlX3Jvb3QvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FpZGVzX2xvZ2VtZW50Lm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9haWRlc19sb2dlbWVudF9hcGlfd2ViLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvYXBpX3dlYi5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc3RkX2V4aXQubWwiXSwibWFwcGluZ3MiOiI7O0NBQ0MsU0FBVUE7V0FDRkM7Ozs7S0FDTEM7T0FDRTtRQUNDO1VBQXNCRiw4Q0FFaEJHO1FBQ0hDO0lBRVIsU0FBU0Q7TUFDUCxJQUFJRSxPQUFTSCxRQUFRSTtNQUNyQkQsb0JBQW9CQTthQUNiTCxvQkFDVCxDQWJEO0dBY0NBOzs7O0lDMk5GLFNBQVNPLG1CQUFtQkMsR0FBSyxTQUFRLFVBQVk7SUN6THJELFNBQVNDLGdCQUFnQkMsRUFBR0M7TUFDMUIsR0FBR0QsT0FBUTtNQUNYLEdBQUlDLFNBQVUsT0FBUSxTQUFTRDtNQUMvQixJQUFNLEtBQVE7TUFDZDtPQUFRLENBQ04sR0FBSUEsTUFBT0UsS0FBS0Q7UUFDaEJEO1FBQ0EsR0FBSUEsT0FBUSxPQUFPRTtRQUNuQkQsS0FBS0E7UUFDTEU7UUFDQSxHQUFJQSxPQUFRLGFBTWhCO0lEN0NBLElBQUlDLGtCQUFvQjtJRUF4QixTQUFTRSxvQkFBcUJDLEtBQU8sTUFBTUEsR0FBSztJQzJDaEQsSUFBSUM7SURISixTQUFTQztNQUNQLG9CQUFvQkQsa0NBQ3RCO0lGdENBLFNBQVNFLFFBQVNDLEdBQUdDLEdBQUdDO01BQ3RCckIsVUFBVW1CLGNBQ1ZuQixVQUFVb0IsY0FDVnBCLFVBQVVxQixXQUNaO0lBQ0FIO0lBQ0FBOztlQUNFLFdBQVdBLFFBQVFsQixRQUFRQSxRQUFRQSxRQURaO0lBSXpCa0I7O2FBQXVDWjtNQUNyQyxHQUFJTixVQUFVTSxLQUFNO01BQ3BCLEdBQUlOLFVBQVVNLEtBQU07TUFDcEIsR0FBSU4sVUFBVU0sS0FBTTtNQUNwQixHQUFJTixVQUFVTSxLQUFN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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOzs7Ozs7O0l3Qm5XRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDa0JLQztLQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQ3dCQUM7S0FDQUM7S0FDQUM7S0FJQUM7S0FDQUM7Ozs7S0N6QkFDO0tBbUhBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDbzlFTUM7S0FRUUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDbGxGZEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NzRUVDO0tBQ0FDO0tBQ0FDO0tBQ0FDOzs7S0EvRVlDO0tBbUhaQztLQUNBQztLQUNBQztLQUNBQzs7O0tBbUlBQztLQUNBQztLQUNBQztLQUNBQzs7O0tDeFBGQztLQUNBQztLQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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RixHQUFJLHFCTTFjakJvQyxPTjBjYXBDLEVBQTBCO0lBM0s5QixTQzNKVGlGLFlEdVVZakYsR0FBSSxvQk0zY2hCb0MsT04yY1lwQyxFQUF5QjtJQTVLNUIsU0MxSlRrRixVRHVVVTVKO01BQXlCLHFCTTVjbkM4RyxPTjRjbUMsNEJBQXpCOUcsR0FBMEM7SUE3SzNDLFNDekpUNkosWUR1VVkzRixHQUF5QixxQk03Y3JDNEMsT042Y3FDLFVBQXpCNUMsR0FBNEM7SUE5Sy9DLFNDeEpUNEYsY0R1VWNwRjtNQUNoQixjTS9jRW9DLE9OOGNjcEM7TUFDUSxvQk0vY3RCb0M7TU4rYytDLHFCTS9jL0NBLE9OK2MyRDtJQWhMbEQsU0N2SlRpRDtNRHdVbUIsb0JNaGRuQmpELFdOZ2Q0QyxxQk1oZDVDQSxPTmdkd0Q7SUFqTC9DLFNDdEpUa0QsV0QyVVc1QyxHQUFJLDJCTW5kZkwsT05tZFdLLEVBQXdCO0lBckwxQixTQ3JKVDZDLGFEMlVhdkYsR0FBSSxxQk1wZGpCcUMsT05vZGFyQyxFQUEwQjtJQXRMOUIsU0NwSlR3RixZRDJVWXhGLEdBQUksb0JNcmRoQnFDLE9OcWRZckMsRUFBeUI7SUF2TDVCLFNDbkpUeUYsVUQyVVVuSztNQUF5QixxQk10ZG5DK0csT05zZG1DLDRCQUF6Qi9HLEdBQTBDO0lBeEwzQyxTQ2xKVG9LLFlEMlVZbEcsR0FBeUIscUJNdmRyQzZDLE9OdWRxQyxVQUF6QjdDLEdBQTRDO0lBekwvQyxTQ2pKVG1HLGNEMlVjM0Y7TUFDaEIsY016ZEVxQyxPTndkY3JDO01BQ1Esb0JNemR0QnFDO01OeWQrQyxxQk16ZC9DQSxPTnlkMkQ7SUEzTGxELFNDaEpUdUQ7TUQ0VW1CLG9CTTFkbkJ2RCxXTjBkNEMscUJNMWQ1Q0EsT04wZHdEO0lBNUwvQyxTQy9JVHdELGlCRCtVZSxjTS9kZnpELFFOK2RlLGtCSy9kZkQsTUwrZDZDO0lBaE1wQyxTQzlJVDJELGdCRCtVd0MsMEJBQWIsYUFBYTtJQWpNL0IsU0M3SVRDLG9CRCtVbUMsc0NBQWE7SUFsTXZDLFNDNUlUQyxrQkQrVTRDLDRCQUFiLGFBQWE7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Q0FDO09BekZBMUM7T0FnREFrQjtPQTBlRTZMO09BQ0FFO09BQ0FDO09BQ0FFO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BRUFDO09BVUFJO09BQ0FDO09BQ0FDO09BQ0FFO09BQ0FDO09BQ0FFO09BQ0FHO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FHO09BQ0FDO09BQ0FDO09BRUFDO09BWUFPO09BRUFDO09BS0FDO09BR0FDO09BSUFDO09BR0FFO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FHO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO0tBdEdBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUVBQztLQVVBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUVBQztLQVlBQztLQUVBQztLQUtBQztLQUdBQztLQUlBQztLQUdBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQzs7O09BbnBCTjlYOzs7Ozs7OztPQXNKQTRFO09BY0kyQjtPQUNBQztPQUNBQztPQUNBRTtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVKRTtPQVFBWTtPQVVBVjtPQU9BSztPQVNJUztVQWtKRTRDO09BbkpGN0M7T0FHQUU7T0FJQUU7T0FJQUM7T0FJQUU7T0FJSUU7T0FoTkp2SDtPQUNBRTtPQUlBSztPQUhBSDtPQUNBQztPQUtBSTtPQUdBQztPQUVBQztPQU1BQztPQUtBSTtPQUZBRDtPQURBRDtPQURBRDtPQXlDQWdCO09BT0FFO09BR0FDO09BQ0FFO09BQ0FDO09BQ0FDO09BRUFHO09BREFGO09BZUFRO09BUkFIO09BSUFDO09BUkFIO09Bb0JBVztPQUpBSjtPQU9BSztPQUNBQztPQUVBQztPQW1CQUU7T0FoQkFEO09Ba1hBZ0o7T0FzQkFPO09BcUJBRTs7T0FtQkV1RjtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQVVBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQVlBQztPQUVBQztPQUtBQztPQUdBQztPQUlBQztPQUdBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQzs7VUQ1cUJQOzs7Ozs7O0lDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7bUJDQ1lDLEtBQU8sTUFBTUEsR0FBdkI7SURERjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNBQTt5QkNDVUMsdUJBQXVCQSxrQkFBbUJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lERHBEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2VDQ0NBLFdEREQsNkJDQ0NDLEtEREQsSUNDQ0M7SURERDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dUNDQ0NDLHVCREREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCQ0NDQyxNREREOzs7Ozs7Ozs7O3lCQ0NDQSxNREREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDT3dCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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aURBQztPQWtDQUM7T0FvRUFDO09BZ0NBQztPQXNFQUM7T0F1QkFDO09BNENBQztPQWtCQUM7T0E0QkFDO09BTUFDO09BaUJBQztPQWdCQUM7T0E2QkFoUTtPQVlBaVE7T0FxQkFDO09BY0FDO09BdUJBQztPQVFBQztPQWVBQztPQUtBQztPQWFBQztPQVlBQztPQWtCRkM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FLQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQWpSO09BU0FOO09BU0F3UjtPQVNBQztPQVNBQztJQVVEOzs7O1VKamtKSjs7Ozs7OztJSUFBOzs7Ozs7Ozs7Ozs7Ozs7TUM0QzJCO3dCQUFLQztpQkFDbEI7bUJBRU07Ozs7dUJBSFlBO3VDQU1LO2lCQUx2Qiw4Q0FLd0IsRUFBQzs7TUFqQlo7d0JBQUtDO2lCQUNsQjttQkFFTTs7Ozt1QkFIWUE7MENBTVE7aUJBTDFCLDhDQUsyQixFQUFDO0lBWnZDOzs7Ozs7O1VEM0JIOzs7Ozs7O0lDQUE7Ozs7SUNrQlM7OztVRGxCVCIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG52YXIgY2FtbF9pbnQ2NF9vZmZzZXQgPSBNYXRoLnBvdygyLCAtMjQpO1xuXG4vL1Byb3ZpZGVzOiBNbEludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gTWxJbnQ2NCAobG8sbWksaGkpIHtcbiAgdGhpcy5sbyA9IGxvICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSBtaSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gaGkgJiAweGZmZmY7XG59XG5NbEludDY0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX2pcIlxuTWxJbnQ2NC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8sdGhpcy5taSx0aGlzLmhpKTtcbn1cblxuTWxJbnQ2NC5wcm90b3R5cGUudWNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICBpZiAodGhpcy5oaSA+IHguaGkpIHJldHVybiAxO1xuICBpZiAodGhpcy5oaSA8IHguaGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgaGkgPSB0aGlzLmhpIDw8IDE2O1xuICB2YXIgeGhpID0geC5oaSA8PCAxNjtcbiAgaWYgKGhpID4geGhpKSByZXR1cm4gMTtcbiAgaWYgKGhpIDwgeGhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICBpZiAodGhpcy5sbyA8IHgubG8pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsbyA9IC0gdGhpcy5sbztcbiAgdmFyIG1pID0gLSB0aGlzLm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gLSB0aGlzLmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyArIHgubG87XG4gIHZhciBtaSA9IHRoaXMubWkgKyB4Lm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gdGhpcy5oaSArIHguaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvIC0geC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSAtIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpIC0geC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gKiB4LmxvO1xuICB2YXIgbWkgPSAoKGxvICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLm1pICogeC5sbyArIHRoaXMubG8gKiB4Lm1pO1xuICB2YXIgaGkgPSAoKG1pICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLmhpICogeC5sbyArIHRoaXMubWkgKiB4Lm1pICsgdGhpcy5sbyAqIHguaGk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICh0aGlzLmxvfHRoaXMubWl8dGhpcy5oaSkgPT0gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMuaGkgPDwgMTYpIDwgMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvICYgeC5sbywgdGhpcy5taSAmIHgubWksIHRoaXMuaGkgJiB4LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG98eC5sbywgdGhpcy5taXx4Lm1pLCB0aGlzLmhpfHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG9eeC5sbywgdGhpcy5taV54Lm1pLCB0aGlzLmhpXnguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfbGVmdCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICBpZiAocyA8IDI0KSB7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICh0aGlzLmxvIDw8IHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCBzKSB8ICh0aGlzLmxvID4+ICgyNCAtIHMpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmhpIDw8IHMpIHwgKHRoaXMubWkgPj4gKDI0IC0gcykpKTtcbiAgfVxuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG8gPDwgKHMgLSAyNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCAocyAtIDI0KSkgfCAodGhpcy5sbyA+PiAoNDggLSBzKSkpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoMCwgMCwgdGhpcy5sbyA8PCAocyAtIDQ4KSlcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X3JpZ2h0X3Vuc2lnbmVkID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAodGhpcy5oaSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5oaSA+PiBzKSk7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IChzIC0gMjQpKSxcbiAgICAgIDApO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMuaGkgPj4gKHMgLSA0OCksIDAsIDApO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgdmFyIGggPSAodGhpcy5oaSA8PCAxNikgPj4gMTY7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAoaCA8PCAoMjQgLSBzKSksXG4gICAgICAoKHRoaXMuaGkgPDwgMTYpID4+IHMpID4+PiAxNik7XG4gIHZhciBzaWduID0gKHRoaXMuaGkgPDwgMTYpID4+IDMxO1xuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5taSA+PiAocyAtIDI0KSkgfCAodGhpcy5oaSA8PCAoNDggLSBzKSksXG4gICAgICAodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAyNCkgPj4gMTYsXG4gICAgICBzaWduICYgMHhmZmZmKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0ICgodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAzMiksIHNpZ24sIHNpZ24pO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNsMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5oaSA9ICh0aGlzLmhpIDw8IDEpIHwgKHRoaXMubWkgPj4gMjMpO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pIDw8IDEpIHwgKHRoaXMubG8gPj4gMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmxvID0gKHRoaXMubG8gPDwgMSkgJiAweGZmZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxzcjEgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG8gPSAoKHRoaXMubG8gPj4+IDEpIHwgKHRoaXMubWkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pID4+PiAxKSB8ICh0aGlzLmhpIDw8IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IHRoaXMuaGkgPj4+IDE7XG59XG5NbEludDY0LnByb3RvdHlwZS51ZGl2bW9kID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIG9mZnNldCA9IDA7XG4gIHZhciBtb2R1bHVzID0gdGhpcy5jb3B5KCk7XG4gIHZhciBkaXZpc29yID0geC5jb3B5KCk7XG4gIHZhciBxdW90aWVudCA9IG5ldyBNbEludDY0KDAsMCwwKTtcbiAgd2hpbGUgKG1vZHVsdXMudWNvbXBhcmUoZGl2aXNvcikgPiAwKSB7XG4gICAgb2Zmc2V0Kys7XG4gICAgZGl2aXNvci5sc2wxKCk7XG4gIH1cbiAgd2hpbGUgKG9mZnNldCA+PSAwKSB7XG4gICAgb2Zmc2V0IC0tO1xuICAgIHF1b3RpZW50LmxzbDEoKTtcbiAgICBpZiAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+PSAwKSB7XG4gICAgICBxdW90aWVudC5sbyArKztcbiAgICAgIG1vZHVsdXMgPSBtb2R1bHVzLnN1YihkaXZpc29yKTtcbiAgICB9XG4gICAgZGl2aXNvci5sc3IxKCk7XG4gIH1cbiAgcmV0dXJuIHsgcXVvdGllbnQgOiBxdW90aWVudCwgbW9kdWx1cyA6IG1vZHVsdXMgfTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGkgXiB5LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHEgPSB4LnVkaXZtb2QoeSkucXVvdGllbnQ7XG4gIGlmIChzaWduICYgMHg4MDAwKSBxID0gcS5uZWcoKTtcbiAgcmV0dXJuIHE7XG59XG5NbEludDY0LnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiAoeSlcbntcbiAgdmFyIHggPSB0aGlzO1xuICBpZiAoeS5pc1plcm8oKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgdmFyIHNpZ24gPSB4LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHIgPSB4LnVkaXZtb2QoeSkubW9kdWx1cztcbiAgaWYgKHNpZ24gJiAweDgwMDApIHIgPSByLm5lZygpO1xuICByZXR1cm4gcjtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvSW50ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICh0aGlzLm1pIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvRmxvYXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMuaGkgPDwgMTYpICogTWF0aC5wb3coMiwgMzIpICsgdGhpcy5taSAqIE1hdGgucG93KDIsIDI0KSkgKyB0aGlzLmxvO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFt0aGlzLmhpID4+IDgsXG4gICAgICAgICAgdGhpcy5oaSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSA+PiAxNixcbiAgICAgICAgICAodGhpcy5taSA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyA+PiAxNixcbiAgICAgICAgICAodGhpcy5sbyA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyAmIDB4ZmZdO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubG8zMiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubG8gfCAoKHRoaXMubWkgJiAweGZmKSA8PCAyNCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5oaTMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKCh0aGlzLm1pID4+PiA4KSAmIDB4ZmZmZikgfCAodGhpcy5oaSA8PCAxNik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdWx0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3VsdCh4LHkpIHsgcmV0dXJuIHgudWNvbXBhcmUoeSkgPCAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jb21wYXJlKHgseSwgdG90YWwpIHsgcmV0dXJuIHguY29tcGFyZSh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbmVnIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X25lZyAoeCkgeyByZXR1cm4geC5uZWcoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYWRkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FkZCAoeCwgeSkgeyByZXR1cm4geC5hZGQoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3N1YiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zdWIgKHgsIHkpIHsgcmV0dXJuIHguc3ViKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tdWwgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2ludDY0X211bCh4LHkpIHsgcmV0dXJuIHgubXVsKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc196ZXJvIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX3plcm8oeCkgeyByZXR1cm4gK3guaXNaZXJvKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSB7IHJldHVybiAreC5pc05lZygpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYW5kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FuZCAoeCwgeSkgeyByZXR1cm4geC5hbmQoeSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vciAoeCwgeSkgeyByZXR1cm4geC5vcih5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3hvciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF94b3IgKHgsIHkpIHsgcmV0dXJuIHgueG9yKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfbGVmdChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHRfdW5zaWduZWQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0ICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X3JpZ2h0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9kaXYgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZGl2ICh4LCB5KSB7IHJldHVybiB4LmRpdih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbW9kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X21vZCAoeCwgeSkgeyByZXR1cm4geC5tb2QoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2ludDMyIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2ludDMyICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh4ICYgMHhmZmZmZmYsICh4ID4+IDI0KSAmIDB4ZmZmZmZmLCAoeCA+PiAzMSkgJiAweGZmZmYpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9faW50MzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9faW50MzIgKHgpIHsgcmV0dXJuIHgudG9JbnQoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fZmxvYXQgKHgpIHsgcmV0dXJuIHgudG9GbG9hdCAoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2Zsb2F0ICh4KSB7XG4gIGlmICh4IDwgMCkgeCA9IE1hdGguY2VpbCh4KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KFxuICAgIHggJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCkgJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZm9ybWF0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdG9faW50MzJcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zvcm1hdCAoZm10LCB4KSB7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGYuc2lnbmVkY29udiAmJiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpKSB7XG4gICAgZi5zaWduID0gLTE7IHggPSBjYW1sX2ludDY0X25lZyh4KTtcbiAgfVxuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgdmFyIHdiYXNlID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihmLmJhc2UpO1xuICB2YXIgY3Z0YmwgPSBcIjAxMjM0NTY3ODlhYmNkZWZcIjtcbiAgZG8ge1xuICAgIHZhciBwID0geC51ZGl2bW9kKHdiYXNlKTtcbiAgICB4ID0gcC5xdW90aWVudDtcbiAgICBidWZmZXIgPSBjdnRibC5jaGFyQXQoY2FtbF9pbnQ2NF90b19pbnQzMihwLm1vZHVsdXMpKSArIGJ1ZmZlcjtcbiAgfSB3aGlsZSAoISBjYW1sX2ludDY0X2lzX3plcm8oeCkpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9ICcgJztcbiAgICB2YXIgbiA9IGYucHJlYyAtIGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBidWZmZXIgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBidWZmZXI7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgYnVmZmVyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSwgY2FtbF9mYWlsd2l0aCwgY2FtbF9wYXJzZV9kaWdpdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF91bHRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCxjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX3N0cmluZyhzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKTtcbiAgdmFyIGkgPSByWzBdLCBzaWduID0gclsxXSwgYmFzZSA9IHJbMl07XG4gIHZhciBiYXNlNjQgPSBjYW1sX2ludDY0X29mX2ludDMyKGJhc2UpO1xuICB2YXIgdGhyZXNob2xkID1cbiAgICAgIG5ldyBNbEludDY0KDB4ZmZmZmZmLCAweGZmZmZmZmYsIDB4ZmZmZikudWRpdm1vZChiYXNlNjQpLnF1b3RpZW50O1xuICB2YXIgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICBmb3IgKDs7KSB7XG4gICAgaSsrO1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gbXVsdGlwbGljYXRpb24gYmFzZSAqIHJlcyAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdCh0aHJlc2hvbGQsIHJlcykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAgIGQgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfYWRkKGNhbWxfaW50NjRfbXVsKGJhc2U2NCwgcmVzKSwgZCk7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIGFkZGl0aW9uIChiYXNlICogcmVzKSArIGQgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQocmVzLCBkKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKGJhc2UgPT0gMTAgJiYgY2FtbF9pbnQ2NF91bHQobmV3IE1sSW50NjQoMCwgMCwgMHg4MDAwKSwgcmVzKSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKHNpZ24gPCAwKSByZXMgPSBjYW1sX2ludDY0X25lZyhyZXMpO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkobG8sIG1pLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKVxufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGxvLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgbG8gJiAweGZmZmZmZixcbiAgICAoKGxvID4+PiAyNCkgJiAweGZmKSB8ICgoaGkgJiAweGZmZmYpIDw8IDgpLFxuICAgIChoaSA+Pj4gMTYpICYgMHhmZmZmKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbG8zMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9sbzMyKHYpeyByZXR1cm4gdi5sbzMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hpMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGkzMih2KXsgcmV0dXJuIHYuaGkzMigpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChhWzddIDw8IDAgfCAoYVs2XSA8PCA4KSB8IChhWzVdIDw8IDE2KSxcbiAgICAgICAgICAgICAgICAgICAgIGFbNF0gPDwgMCB8IChhWzNdIDw8IDgpIHwgKGFbMl0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVsxXSA8PCAwIHwgKGFbMF0gPDwgOCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19ieXRlcyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19ieXRlcyh4KSB7IHJldHVybiB4LnRvQXJyYXkoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGFzaCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oYXNoKHYpe1xuICByZXR1cm4gKHYubG8zMigpKSBeICh2LmhpMzIoKSlcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMC0yMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEFuIE9DYW1sIHN0cmluZyBpcyBhbiBvYmplY3Qgd2l0aCB0aHJlZSBmaWVsZHM6XG4vLyAtIHRhZyAndCdcbi8vIC0gbGVuZ3RoICdsJ1xuLy8gLSBjb250ZW50cyAnYydcbi8vXG4vLyBUaGUgY29udGVudHMgb2YgdGhlIHN0cmluZyBjYW4gYmUgZWl0aGVyIGEgSmF2YVNjcmlwdCBhcnJheSBvclxuLy8gYSBKYXZhU2NyaXB0IHN0cmluZy4gVGhlIGxlbmd0aCBvZiB0aGlzIHN0cmluZyBjYW4gYmUgbGVzcyB0aGFuIHRoZVxuLy8gbGVuZ3RoIG9mIHRoZSBPQ2FtbCBzdHJpbmcuIEluIHRoaXMgY2FzZSwgcmVtYWluaW5nIGJ5dGVzIGFyZVxuLy8gYXNzdW1lZCB0byBiZSB6ZXJvZXMuIEFycmF5cyBhcmUgbXV0YWJsZSBidXQgY29uc3VtZXMgbW9yZSBtZW1vcnlcbi8vIHRoYW4gc3RyaW5ncy4gQSBjb21tb24gcGF0dGVybiBpcyB0byBzdGFydCBmcm9tIGFuIGVtcHR5IHN0cmluZyBhbmRcbi8vIHByb2dyZXNzaXZlbHkgZmlsbCBpdCBmcm9tIHRoZSBzdGFydC4gUGFydGlhbCBzdHJpbmdzIG1ha2VzIGl0XG4vLyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgdGhpcyBlZmZpY2llbnRseS5cbi8vXG4vLyBXaGVuIGNvbnZlcnRpbmcgdG8gYW5kIGZyb20gVVRGLTE2LCB3ZSBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgdGhlXG4vLyBzdHJpbmcgaXMgY29tcG9zZWQgb25seSBvZiBBU0NJSSBjaGFyYWN0ZXJzIChpbiB3aGljaCBjYXNlLCBub1xuLy8gY29udmVyc2lvbiBuZWVkcyB0byBiZSBwZXJmb3JtZWQpIG9yIG5vdC5cbi8vXG4vLyBUaGUgc3RyaW5nIHRhZyBjYW4gdGh1cyB0YWtlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuLy8gICBmdWxsIHN0cmluZyAgICAgQllURSB8IFVOS05PV046ICAgICAgMFxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IEFTQ0lJOiAgICAgICAgOVxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IE5PVF9BU0NJSTogICAgOFxuLy8gICBzdHJpbmcgcHJlZml4ICAgUEFSVElBTDogICAgICAgICAgICAgMlxuLy8gICBhcnJheSAgICAgICAgICAgQVJSQVk6ICAgICAgICAgICAgICAgNFxuLy9cbi8vIE9uZSBjYW4gdXNlIGJpdCBtYXNraW5nIHRvIGRpc2NyaW1pbmF0ZSB0aGVzZSBkaWZmZXJlbnQgY2FzZXM6XG4vLyAgIGtub3duX2VuY29kaW5nKHgpID0geCY4XG4vLyAgIGlzX2FzY2lpKHgpID0gICAgICAgeCYxXG4vLyAgIGtpbmQoeCkgPSAgICAgICAgICAgeCY2XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9zdHJfcmVwZWF0KG4sIHMpIHtcbiAgaWYobiA9PSAwKSByZXR1cm4gXCJcIjtcbiAgaWYgKHMucmVwZWF0KSB7cmV0dXJuIHMucmVwZWF0KG4pO30gLy8gRUNNQXNjcmlwdCA2IGFuZCBGaXJlZm94IDI0K1xuICB2YXIgciA9IFwiXCIsIGwgPSAwO1xuICBmb3IoOzspIHtcbiAgICBpZiAobiAmIDEpIHIgKz0gcztcbiAgICBuID4+PSAxO1xuICAgIGlmIChuID09IDApIHJldHVybiByO1xuICAgIHMgKz0gcztcbiAgICBsKys7XG4gICAgaWYgKGwgPT0gOSkge1xuICAgICAgcy5zbGljZSgwLDEpOyAvLyBmbGF0dGVuIHRoZSBzdHJpbmdcbiAgICAgIC8vIHRoZW4sIHRoZSBmbGF0dGVuaW5nIG9mIHRoZSB3aG9sZSBzdHJpbmcgd2lsbCBiZSBmYXN0ZXIsXG4gICAgICAvLyBhcyBpdCB3aWxsIGJlIGNvbXBvc2VkIG9mIGxhcmdlciBwaWVjZXNcbiAgICB9XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG4vL1dlYWtkZWZcbi8vIFByZSBFQ01BU2NyaXB0IDUsIFthcHBseV0gd291bGQgbm90IHN1cHBvcnQgYXJyYXktbGlrZSBvYmplY3QuXG4vLyBJbiBzdWNoIHNldHVwLCBUeXBlZF9hcnJheSB3b3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBwb2x5ZmlsbCwgYW5kIFtmLmFwcGx5XSB3b3VsZFxuLy8gZmFpbCBoZXJlLiBNYXJrIHRoZSBwcmltaXRpdmUgYXMgV2Vha2RlZiwgc28gdGhhdCBwZW9wbGUgY2FuIG92ZXJyaWRlIGl0IGVhc2lseS5cbmZ1bmN0aW9uIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAoYSwgaSwgbGVuKSB7XG4gIHZhciBmID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbiAgaWYgKGkgPT0gMCAmJiBsZW4gPD0gNDA5NiAmJiBsZW4gPT0gYS5sZW5ndGgpIHJldHVybiBmLmFwcGx5IChudWxsLCBhKTtcbiAgdmFyIHMgPSBcIlwiO1xuICBmb3IgKDsgMCA8IGxlbjsgaSArPSAxMDI0LGxlbi09MTAyNClcbiAgICBzICs9IGYuYXBwbHkgKG51bGwsIGEuc2xpY2UoaSxpICsgTWF0aC5taW4obGVuLCAxMDI0KSkpO1xuICByZXR1cm4gcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91dGY4X29mX3V0ZjE2XG5mdW5jdGlvbiBjYW1sX3V0Zjhfb2ZfdXRmMTYocykge1xuICBmb3IgKHZhciBiID0gXCJcIiwgdCA9IGIsIGMsIGQsIGkgPSAwLCBsID0gcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjIDwgMHg4MCkge1xuICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyAoaiA8IGwpICYmIChjID0gcy5jaGFyQ29kZUF0KGopKSA8IDB4ODA7IGorKyk7XG4gICAgICBpZiAoaiAtIGkgPiA1MTIpIHsgdC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7IGIgKz0gcy5zbGljZShpLCBqKSB9XG4gICAgICBlbHNlIHQgKz0gcy5zbGljZShpLCBqKTtcbiAgICAgIGlmIChqID09IGwpIGJyZWFrO1xuICAgICAgaSA9IGo7XG4gICAgfVxuICAgIGlmIChjIDwgMHg4MDApIHtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGMwIHwgKGMgPj4gNikpO1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9IGVsc2UgaWYgKGMgPCAweGQ4MDAgfHwgYyA+PSAweGRmZmYpIHtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGUwIHwgKGMgPj4gMTIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfSBlbHNlIGlmIChjID49IDB4ZGJmZiB8fCBpICsgMSA9PSBsIHx8XG4gICAgICAgICAgICAgICAoZCA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGQgPiAweGRmZmYpIHtcbiAgICAgIC8vIFVubWF0Y2hlZCBzdXJyb2dhdGUgcGFpciwgcmVwbGFjZWQgYnkgXFx1ZmZmZCAocmVwbGFjZW1lbnQgY2hhcmFjdGVyKVxuICAgICAgdCArPSBcIlxceGVmXFx4YmZcXHhiZFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBpKys7XG4gICAgICBjID0gKGMgPDwgMTApICsgZCAtIDB4MzVmZGMwMDtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGYwIHwgKGMgPj4gMTgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gMTIpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9XG4gICAgaWYgKHQubGVuZ3RoID4gMTAyNCkge3Quc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiO31cbiAgfVxuICByZXR1cm4gYit0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIGNhbWxfdXRmMTZfb2ZfdXRmOChzKSB7XG4gIGZvciAodmFyIGIgPSBcIlwiLCB0ID0gXCJcIiwgYywgYzEsIGMyLCB2LCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYzEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGMxIDwgMHg4MCkge1xuICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyAoaiA8IGwpICYmIChjMSA9IHMuY2hhckNvZGVBdChqKSkgPCAweDgwOyBqKyspO1xuICAgICAgaWYgKGogLSBpID4gNTEyKSB7IHQuc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiOyBiICs9IHMuc2xpY2UoaSwgaikgfVxuICAgICAgZWxzZSB0ICs9IHMuc2xpY2UoaSwgaik7XG4gICAgICBpZiAoaiA9PSBsKSBicmVhaztcbiAgICAgIGkgPSBqO1xuICAgIH1cbiAgICB2ID0gMTtcbiAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSkge1xuICAgICAgYyA9IGMyICsgKGMxIDw8IDYpO1xuICAgICAgaWYgKGMxIDwgMHhlMCkge1xuICAgICAgICB2ID0gYyAtIDB4MzA4MDtcbiAgICAgICAgaWYgKHYgPCAweDgwKSB2ID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHYgPSAyO1xuICAgICAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSkge1xuICAgICAgICAgIGMgPSBjMiArIChjIDw8IDYpO1xuICAgICAgICAgIGlmIChjMSA8IDB4ZjApIHtcbiAgICAgICAgICAgIHYgPSBjIC0gMHhlMjA4MDtcbiAgICAgICAgICAgIGlmICgodiA8IDB4ODAwKSB8fCAoKHYgPj0gMHhkN2ZmKSAmJiAodiA8IDB4ZTAwMCkpKSB2ID0gMjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdiA9IDM7XG4gICAgICAgICAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSAmJlxuICAgICAgICAgICAgICAgIChjMSA8IDB4ZjUpKSB7XG4gICAgICAgICAgICAgIHYgPSBjMiAtIDB4M2M4MjA4MCArIChjIDw8IDYpO1xuICAgICAgICAgICAgICBpZiAodiA8IDB4MTAwMDAgfHwgdiA+IDB4MTBmZmZmKSB2ID0gMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHYgPCA0KSB7IC8vIEludmFsaWQgc2VxdWVuY2VcbiAgICAgIGkgLT0gdjtcbiAgICAgIHQgKz0gXCJcXHVmZmZkXCI7XG4gICAgfSBlbHNlIGlmICh2ID4gMHhmZmZmKVxuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZDdjMCArICh2ID4+IDEwKSwgMHhkYzAwICsgKHYgJiAweDNGRikpXG4gICAgZWxzZVxuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHYpO1xuICAgIGlmICh0Lmxlbmd0aCA+IDEwMjQpIHt0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjt9XG4gIH1cbiAgcmV0dXJuIGIrdDtcbn1cblxuLy9Qcm92aWRlczoganNvb19pc19hc2NpaVxuZnVuY3Rpb24ganNvb19pc19hc2NpaSAocykge1xuICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGdldHMgYmV0dGVyIGF0IGFyb3VuZCB0aGlzIHBvaW50IGZvciBhbGwgYnJvd3NlcnNcbiAgaWYgKHMubGVuZ3RoIDwgMjQpIHtcbiAgICAvLyBTcGlkZXJtb25rZXkgZ2V0cyBtdWNoIHNsb3dlciB3aGVuIHMubGVuZ3RoID49IDI0IChvbiA2NCBiaXQgYXJjaHMpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSBpZiAocy5jaGFyQ29kZUF0KGkpID4gMTI3KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZVxuICAgIHJldHVybiAhL1teXFx4MDAtXFx4N2ZdLy50ZXN0KHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICBkZWZhdWx0OiAvKiBQQVJUSUFMICovXG4gICAgaWYgKGkgPj0gcy5jLmxlbmd0aCkgcmV0dXJuIDA7XG4gIGNhc2UgMDogLyogQllURVMgKi9cbiAgICByZXR1cm4gcy5jLmNoYXJDb2RlQXQoaSk7XG4gIGNhc2UgNDogLyogQVJSQVkgKi9cbiAgICByZXR1cm4gcy5jW2ldXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSwgYykge1xuICAvLyBUaGUgT0NhbWwgY29tcGlsZXIgdXNlcyBDaGFyLnVuc2FmZV9jaHIgb24gaW50ZWdlcnMgbGFyZ2VyIHRoYW4gMjU1IVxuICBjICY9IDB4ZmY7XG4gIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykge1xuICAgIGlmIChpID09IHMuYy5sZW5ndGgpIHtcbiAgICAgIHMuYyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgIGlmIChpICsgMSA9PSBzLmwpIHMudCA9IDA7IC8qQllURVMgfCBVTktPV04qL1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheSAocyk7XG4gIH1cbiAgcy5jW2ldID0gYztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldCAocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDE2KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSAxKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDEpO1xuICByZXR1cm4gKGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQxNihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMSkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0MzIocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDMpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMSksXG4gICAgICBiMyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAyKSxcbiAgICAgIGI0ID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0IHwgYjMgPDwgMTYgfCBiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MzIocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMSksXG4gICAgICBiMyA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDIpLFxuICAgICAgYjQgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCB8IGIzIDw8IDE2IHwgYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDY0KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSA3KSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKyl7XG4gICAgYVs3IC0gal0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQ2NChzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKyl7XG4gICAgYVs3IC0gal0gPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQgKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0IChzLCBpLCBjKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldCAocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDE2KHMsaSxpMTYpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMiA9IDB4RkYgJiBpMTYgPj4gOCxcbiAgICAgIGIxID0gMHhGRiAmIGkxNjtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMCwgYjEpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAxLCBiMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDE2KHMsaSxpMTYpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0MTZcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQxNihzLGksaTE2KXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0MTYocyxpLGkxNik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQzMihzLGksaTMyKXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjQgPSAweEZGICYgaTMyID4+IDI0LFxuICAgICAgYjMgPSAweEZGICYgaTMyID4+IDE2LFxuICAgICAgYjIgPSAweEZGICYgaTMyID4+IDgsXG4gICAgICBiMSA9IDB4RkYgJiBpMzI7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMSwgYjIpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAyLCBiMyk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDMsIGI0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MzIocyxpLGkzMil7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQzMlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0MzJcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDMyKHMsaSxpMzIpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQzMihzLGksaTMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDY0KHMsaSxpNjQpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSA3KSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gY2FtbF9pbnQ2NF90b19ieXRlcyhpNjQpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKSB7XG4gICAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgNyAtIGosIGFbal0pO1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDY0KHMsaSxpNjQpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0NjRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDY0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQ2NChzLGksaTY0KXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0NjQocyxpLGk2NCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0IChzLCBpLCBjKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIChzKSB7XG4gIHZhciB0YWcgPSA5IC8qIEJZVEVTIHwgQVNDSUkgKi87XG4gIGlmICghanNvb19pc19hc2NpaShzKSlcbiAgICB0YWcgPSA4IC8qIEJZVEVTIHwgTk9UX0FTQ0lJICovLCBzID0gY2FtbF91dGY4X29mX3V0ZjE2KHMpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGFnLCBzLCBzLmxlbmd0aCk7XG59XG5cblxuLy9Qcm92aWRlczogTWxCeXRlc1xuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcywganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBNbEJ5dGVzICh0YWcsIGNvbnRlbnRzLCBsZW5ndGgpIHtcbiAgdGhpcy50PXRhZzsgdGhpcy5jPWNvbnRlbnRzOyB0aGlzLmw9bGVuZ3RoO1xufVxuTWxCeXRlcy5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpe1xuICBzd2l0Y2ggKHRoaXMudCkge1xuICBjYXNlIDk6IC8qQllURVMgfCBBU0NJSSovXG4gICAgcmV0dXJuIHRoaXMuYztcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHRoaXMpO1xuICBjYXNlIDA6IC8qQllURVMgfCBVTktPV04qL1xuICAgIGlmIChqc29vX2lzX2FzY2lpKHRoaXMuYykpIHtcbiAgICAgIHRoaXMudCA9IDk7IC8qQllURVMgfCBBU0NJSSovXG4gICAgICByZXR1cm4gdGhpcy5jO1xuICAgIH1cbiAgICB0aGlzLnQgPSA4OyAvKkJZVEVTIHwgTk9UX0FTQ0lJKi9cbiAgY2FzZSA4OiAvKkJZVEVTIHwgTk9UX0FTQ0lJKi9cbiAgICByZXR1cm4gdGhpcy5jO1xuICB9XG59O1xuTWxCeXRlcy5wcm90b3R5cGUudG9VdGYxNiA9IGZ1bmN0aW9uICgpe1xuICB2YXIgciA9IHRoaXMudG9TdHJpbmcoKTtcbiAgaWYodGhpcy50ID09IDkpIHJldHVybiByXG4gIHJldHVybiBjYW1sX3V0ZjE2X29mX3V0Zjgocik7XG59XG5NbEJ5dGVzLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uICgpe1xuICB2YXIgY29udGVudCA9IHRoaXMudCA9PSA0ID8gdGhpcy5jLnNsaWNlKCkgOiB0aGlzLmM7XG4gIHJldHVybiBuZXcgTWxCeXRlcyh0aGlzLnQsY29udGVudCx0aGlzLmwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyAocykge1xuICAvKiBBc3N1bWVzIG5vdCBCWVRFUyAqL1xuICBpZiAocy50ID09IDIgLyogUEFSVElBTCAqLylcbiAgICBzLmMgKz0gY2FtbF9zdHJfcmVwZWF0KHMubCAtIHMuYy5sZW5ndGgsICdcXDAnKVxuICBlbHNlXG4gICAgcy5jID0gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzIChzLmMsIDAsIHMuYy5sZW5ndGgpO1xuICBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LT1dOKi9cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQVJSQVkgKi9cbiAgaWYoZ2xvYmFsVGhpcy5VaW50OEFycmF5KSB7XG4gICAgdmFyIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50OEFycmF5KHMubCk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGEgPSBuZXcgQXJyYXkocy5sKTtcbiAgfVxuICB2YXIgYiA9IHMuYywgbCA9IGIubGVuZ3RoLCBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBiLmNoYXJDb2RlQXQoaSk7XG4gIGZvciAobCA9IHMubDsgaSA8IGw7IGkrKykgYVtpXSA9IDA7XG4gIHMuYyA9IGE7XG4gIHMudCA9IDQ7IC8qIEFSUkFZICovXG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9ieXRlcyAocykge1xuICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgcmV0dXJuIHMuYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2Zfc3RyaW5nIChzKSB7XG4gIHZhciBsID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgdmFyIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcobGVuKSB7XG4gIGlmKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0cmluZy5jcmVhdGVcIik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhsZW4/Mjo5LFwiXCIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcyxjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2J5dGVzKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQnl0ZXMuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2FycmF5IChhKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhhLDAsYS5sZW5ndGgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9hcnJheSAoYSkge1xuICByZXR1cm4gbmV3IE1sQnl0ZXMoNCxhLGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19jb21wYXJlIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfY29tcGFyZShzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDwgczIuYyk/LTE6KHMxLmMgPiBzMi5jKT8xOjA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2VxdWFsKHMxLCBzMikge1xuICBpZihzMSA9PT0gczIpIHJldHVybiAxO1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPT0gczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19lcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMik7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX25vdGVxdWFsKHMxLCBzMikgeyByZXR1cm4gMS1jYW1sX2J5dGVzX2VxdWFsKHMxLCBzMik7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzZXF1YWwgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW4gbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzdGhhbihzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDwgczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMyLHMxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMixzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzdGhhbihzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbGxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2ZpbGxfYnl0ZXMocywgaSwgbCwgYykge1xuICBpZiAobCA+IDApIHtcbiAgICBpZiAoaSA9PSAwICYmIChsID49IHMubCB8fCAocy50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsID49IHMuYy5sZW5ndGgpKSkge1xuICAgICAgaWYgKGMgPT0gMCkge1xuICAgICAgICBzLmMgPSBcIlwiO1xuICAgICAgICBzLnQgPSAyOyAvKiBQQVJUSUFMICovXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzLmMgPSBjYW1sX3N0cl9yZXBlYXQgKGwsIFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICAgICAgICBzLnQgPSAobCA9PSBzLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gICAgICBmb3IgKGwgKz0gaTsgaSA8IGw7IGkrKykgcy5jW2ldID0gYztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmlsbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZmlsbF9ieXRlc1xudmFyIGNhbWxfZmlsbF9zdHJpbmcgPSBjYW1sX2ZpbGxfYnl0ZXNcblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgaWYgKChpMiA9PSAwKSAmJlxuICAgICAgKGxlbiA+PSBzMi5sIHx8IChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsZW4gPj0gczIuYy5sZW5ndGgpKSkge1xuICAgIHMyLmMgPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIGlmIChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBpMiA9PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSB7XG4gICAgaWYgKHMyLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMyKTtcbiAgICB2YXIgYzEgPSBzMS5jLCBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT0gNCAvKiBBUlJBWSAqLykge1xuICAgICAgaWYgKGkyIDw9IGkxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4gKGxlbiwgYzEubGVuZ3RoIC0gaTEpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIGMyIFtpMiArIGldID0gYzEuY2hhckNvZGVBdChpMSArIGkpO1xuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLGIsYyxkLGUpIHtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGEpLGIsYyxkLGUpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykgeyByZXR1cm4gcy5sIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/LTE6KHMxID4gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDw9IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocy5jKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gcztcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIGlmIChqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpXG4gIGVsc2UgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF91dGY4X29mX3V0ZjE2KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocykgeyByZXR1cm4gbmV3IE1sQnl0ZXMoMCxzLHMubGVuZ3RoKTsgfVxuXG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLGksYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBzLmMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpe1xuICByZXR1cm4gcy50b1V0ZjE2KClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2lzX21sX2J5dGVzKHMpIHtcbiAgcmV0dXJuIChzIGluc3RhbmNlb2YgTWxCeXRlcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19jb250ZW50KHMpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYztcbiAgY2FzZSA0OlxuICAgIHJldHVybiBzLmNcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaVxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiAodHlwZW9mIHMgPT09IFwic3RyaW5nXCIgJiYgIS9bXlxceDAwLVxceGZmXS8udGVzdChzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nIChzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdG9fanNfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50ICh0YWcpIHsgdGhyb3cgdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmV0dXJuX2V4bl9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JldHVybl9leG5fY29uc3RhbnQgKHRhZykgeyByZXR1cm4gdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgYXJnKSB7IHRocm93IFswLCB0YWcsIGFyZ107IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9hcmdzICh0YWcsIGFyZ3MpIHsgdGhyb3cgWzAsIHRhZ10uY29uY2F0KGFyZ3MpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKHRhZywgbXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhtc2cpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYWlsd2l0aCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZhaWx3aXRoIChtc2cpIHtcbiAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSlcbiAgICBjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmU9WzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRmFpbHVyZVwiKSwtM107XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBtc2cpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuSW52YWxpZF9hcmd1bWVudCwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5FbmRfb2ZfZmlsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5Ob3RfZm91bmQpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF9jYWxsX2dlbihmLCBhcmdzKSB7XG4gIGlmKGYuZnVuKVxuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYuZnVuLCBhcmdzKTtcbiAgLy9GSVhNRSwgY2FuIGhhcHBlbiB3aXRoIHRvbyBtYW55IGFyZ3VtZW50c1xuICBpZih0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZjtcbiAgdmFyIG4gPSBmLmxlbmd0aCB8IDA7XG4gIGlmKG4gPT09IDApIHJldHVybiBmLmFwcGx5KG51bGwsYXJncyk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGggfCAwO1xuICB2YXIgZCA9IG4gLSBhcmdzTGVuIHwgMDtcbiAgaWYgKGQgPT0gMClcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgZWxzZSBpZiAoZCA8IDApIHtcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLmFwcGx5KG51bGwsYXJncy5zbGljZSgwLG4pKSxhcmdzLnNsaWNlKG4pKTtcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCl7XG4gICAgICB2YXIgZXh0cmFfYXJncyA9IChhcmd1bWVudHMubGVuZ3RoID09IDApPzE6YXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzLmxlbmd0aCtleHRyYV9hcmdzKTtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApIG5hcmdzW2FyZ3MubGVuZ3RoK2ldID0gYXJndW1lbnRzW2ldO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG52YXIgY2FtbF9uYW1lZF92YWx1ZXMgPSB7fTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSAoY29uc3QsY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZShubSx2KSB7XG4gIGNhbWxfbmFtZWRfdmFsdWVzW2NhbWxfanNieXRlc19vZl9zdHJpbmcobm0pXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlc1xuZnVuY3Rpb24gY2FtbF9uYW1lZF92YWx1ZShubSkge1xuICByZXR1cm4gY2FtbF9uYW1lZF92YWx1ZXNbbm1dXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbnZhciBjYW1sX2dsb2JhbF9kYXRhID0gWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX2dsb2JhbCAoY29uc3QsIHNoYWxsb3csIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKG4sIHYsIG5hbWVfb3B0KSB7XG4gIGlmKG5hbWVfb3B0ICYmIGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYylcbiAgICBuID0gZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jKG5hbWVfb3B0KTtcbiAgY2FtbF9nbG9iYWxfZGF0YVtuICsgMV0gPSB2O1xuICBpZihuYW1lX29wdCkgY2FtbF9nbG9iYWxfZGF0YVtuYW1lX29wdF0gPSB2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9nbG9iYWxfZGF0YSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2dldF9nbG9iYWxfZGF0YSAoKSB7IHJldHVybiBjYW1sX2dsb2JhbF9kYXRhOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfcHJpbnRhYmxlIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfaXNfcHJpbnRhYmxlKGMpIHsgcmV0dXJuICsoYyA+IDMxICYmIGMgPCAxMjcpOyB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEZvcm1hdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2Zvcm1hdFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2Zvcm1hdCAoZm10KSB7XG4gIGZtdCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KTtcbiAgdmFyIGxlbiA9IGZtdC5sZW5ndGg7XG4gIGlmIChsZW4gPiAzMSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZm9ybWF0X2ludDogZm9ybWF0IHRvbyBsb25nXCIpO1xuICB2YXIgZiA9XG4gICAgICB7IGp1c3RpZnk6JysnLCBzaWduc3R5bGU6Jy0nLCBmaWxsZXI6JyAnLCBhbHRlcm5hdGU6ZmFsc2UsXG4gICAgICAgIGJhc2U6MCwgc2lnbmVkY29udjpmYWxzZSwgd2lkdGg6MCwgdXBwZXJjYXNlOmZhbHNlLFxuICAgICAgICBzaWduOjEsIHByZWM6LTEsIGNvbnY6J2YnIH07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGZtdC5jaGFyQXQoaSk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSAnLSc6XG4gICAgICBmLmp1c3RpZnkgPSAnLSc7IGJyZWFrO1xuICAgIGNhc2UgJysnOiBjYXNlICcgJzpcbiAgICAgIGYuc2lnbnN0eWxlID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnMCc6XG4gICAgICBmLmZpbGxlciA9ICcwJzsgYnJlYWs7XG4gICAgY2FzZSAnIyc6XG4gICAgICBmLmFsdGVybmF0ZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOiBjYXNlICc1JzpcbiAgICBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzpcbiAgICAgIGYud2lkdGggPSAwO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLndpZHRoID0gZi53aWR0aCAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgICBicmVhaztcbiAgICBjYXNlICcuJzpcbiAgICAgIGYucHJlYyA9IDA7XG4gICAgICBpKys7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYucHJlYyA9IGYucHJlYyAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgY2FzZSAnZCc6IGNhc2UgJ2knOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlICd1JzpcbiAgICAgIGYuYmFzZSA9IDEwOyBicmVhaztcbiAgICBjYXNlICd4JzpcbiAgICAgIGYuYmFzZSA9IDE2OyBicmVhaztcbiAgICBjYXNlICdYJzpcbiAgICAgIGYuYmFzZSA9IDE2OyBmLnVwcGVyY2FzZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJ28nOlxuICAgICAgZi5iYXNlID0gODsgYnJlYWs7XG4gICAgY2FzZSAnZSc6IGNhc2UgJ2YnOiBjYXNlICdnJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYuY29udiA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJ0UnOiBjYXNlICdGJzogY2FzZSAnRyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLnVwcGVyY2FzZSA9IHRydWU7XG4gICAgICBmLmNvbnYgPSBjLnRvTG93ZXJDYXNlICgpOyBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcmF3YnVmZmVyKSB7XG4gIGlmIChmLnVwcGVyY2FzZSkgcmF3YnVmZmVyID0gcmF3YnVmZmVyLnRvVXBwZXJDYXNlKCk7XG4gIHZhciBsZW4gPSByYXdidWZmZXIubGVuZ3RoO1xuICAvKiBBZGp1c3QgbGVuIHRvIHJlZmxlY3QgYWRkaXRpb25hbCBjaGFycyAoc2lnbiwgZXRjKSAqL1xuICBpZiAoZi5zaWduZWRjb252ICYmIChmLnNpZ24gPCAwIHx8IGYuc2lnbnN0eWxlICE9ICctJykpIGxlbisrO1xuICBpZiAoZi5hbHRlcm5hdGUpIHtcbiAgICBpZiAoZi5iYXNlID09IDgpIGxlbiArPSAxO1xuICAgIGlmIChmLmJhc2UgPT0gMTYpIGxlbiArPSAyO1xuICB9XG4gIC8qIERvIHRoZSBmb3JtYXR0aW5nICovXG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnICcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgaWYgKGYuc2lnbmVkY29udikge1xuICAgIGlmIChmLnNpZ24gPCAwKSBidWZmZXIgKz0gJy0nO1xuICAgIGVsc2UgaWYgKGYuc2lnbnN0eWxlICE9ICctJykgYnVmZmVyICs9IGYuc2lnbnN0eWxlO1xuICB9XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gOCkgYnVmZmVyICs9ICcwJztcbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSAxNikgYnVmZmVyICs9IFwiMHhcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJzAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnMCc7XG4gIGJ1ZmZlciArPSByYXdidWZmZXI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJy0nKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGJ1ZmZlcik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczoganNvb19mbG9vcl9sb2cyXG52YXIgbG9nMl9vayA9IE1hdGgubG9nMiAmJiBNYXRoLmxvZzIoMS4xMjM1NTgyMDkyODg5NDc0RSszMDcpID09IDEwMjBcbmZ1bmN0aW9uIGpzb29fZmxvb3JfbG9nMih4KSB7XG4gIGlmKGxvZzJfb2spIHJldHVybiBNYXRoLmZsb29yKE1hdGgubG9nMih4KSlcbiAgdmFyIGkgPSAwO1xuICBpZiAoeCA9PSAwKSByZXR1cm4gLUluZmluaXR5O1xuICBpZih4Pj0xKSB7d2hpbGUgKHg+PTIpIHt4Lz0yOyBpKyt9IH1cbiAgZWxzZSB7d2hpbGUgKHggPCAxKSB7eCo9MjsgaS0tfSB9O1xuICByZXR1cm4gaTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzIsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXG5mdW5jdGlvbiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKCFpc0Zpbml0ZSh4KSkge1xuICAgIGlmIChpc05hTih4KSlcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgxLCAwLCAweDdmZjApO1xuICAgIGlmICh4ID4gMClcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweDdmZjApXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4ZmZmMClcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzB4ODAwMDooeD49MCk/MDoweDgwMDA7XG4gIGlmIChzaWduKSB4ID0gLXg7XG4gIC8vIEludDY0LmJpdHNfb2ZfZmxvYXQgMS4xMjM1NTgyMDkyODg5NDc0RSszMDcgPSAweDdmYjAwMDAwMDAwMDAwMDBMXG4gIC8vIHVzaW5nIE1hdGguTE9HMkUqTWF0aC5sb2coeCkgaW4gcGxhY2Ugb2YgTWF0aC5sb2cyIHJlc3VsdCBpbiBwcmVjaXNpb24gbG9zdFxuICB2YXIgZXhwID0ganNvb19mbG9vcl9sb2cyKHgpICsgMTAyMztcbiAgaWYgKGV4cCA8PSAwKSB7XG4gICAgZXhwID0gMDtcbiAgICB4IC89IE1hdGgucG93KDIsLTEwMjYpO1xuICB9IGVsc2Uge1xuICAgIHggLz0gTWF0aC5wb3coMixleHAtMTAyNyk7XG4gICAgaWYgKHggPCAxNikge1xuICAgICAgeCAqPSAyOyBleHAgLT0xOyB9XG4gICAgaWYgKGV4cCA9PSAwKSB7XG4gICAgICB4IC89IDI7IH1cbiAgfVxuICB2YXIgayA9IE1hdGgucG93KDIsMjQpO1xuICB2YXIgcjMgPSB4fDA7XG4gIHggPSAoeCAtIHIzKSAqIGs7XG4gIHZhciByMiA9IHh8MDtcbiAgeCA9ICh4IC0gcjIpICogaztcbiAgdmFyIHIxID0geHwwO1xuICByMyA9IChyMyAmMHhmKSB8IHNpZ24gfCBleHAgPDwgNDtcbiAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKHIxLCByMiwgcjMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBnbG9iYWxUaGlzLkZsb2F0MzJBcnJheSgxKTtcbiAgZmxvYXQzMmFbMF0gPSB4O1xuICB2YXIgaW50MzJhID0gbmV3IGdsb2JhbFRoaXMuSW50MzJBcnJheShmbG9hdDMyYS5idWZmZXIpO1xuICByZXR1cm4gaW50MzJhWzBdIHwgMDtcbn1cblxuLy9GUCBsaXRlcmFscyBjYW4gYmUgd3JpdHRlbiB1c2luZyB0aGUgaGV4YWRlY2ltYWxcbi8vbm90YXRpb24gMHg8bWFudGlzc2EgaW4gaGV4PnA8ZXhwb25lbnQ+IGZyb20gSVNPIEM5OS5cbi8vaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpL2pzLWhleGZsb2F0L2Jsb2IvbWFzdGVyL2hleGZsb2F0LmpzXG4vL1Byb3ZpZGVzOiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgKHgsIHByZWMsIHN0eWxlKSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIm5hblwiKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKCh4ID4gMCk/XCJpbmZpbml0eVwiOlwiLWluZmluaXR5XCIpO1xuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MTooeD49MCk/MDoxO1xuICBpZihzaWduKSB4ID0gLXg7XG4gIHZhciBleHAgPSAwO1xuICBpZiAoeCA9PSAwKSB7IH1cbiAgZWxzZSBpZiAoeCA8IDEpIHtcbiAgICB3aGlsZSAoeCA8IDEgJiYgZXhwID4gLTEwMjIpICB7IHggKj0gMjsgZXhwLS0gfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlICh4ID49IDIpIHsgeCAvPSAyOyBleHArKyB9XG4gIH1cbiAgdmFyIGV4cF9zaWduID0gZXhwIDwgMCA/ICcnIDogJysnO1xuICB2YXIgc2lnbl9zdHIgPSAnJztcbiAgaWYgKHNpZ24pIHNpZ25fc3RyID0gJy0nXG4gIGVsc2Uge1xuICAgIHN3aXRjaChzdHlsZSl7XG4gICAgY2FzZSA0MyAvKiAnKycgKi86IHNpZ25fc3RyID0gJysnOyBicmVhaztcbiAgICBjYXNlIDMyIC8qICcgJyAqLzogc2lnbl9zdHIgPSAnICc7IGJyZWFrO1xuICAgIGRlZmF1bHQ6IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAocHJlYyA+PSAwICYmIHByZWMgPCAxMykge1xuICAgIC8qIElmIGEgcHJlY2lzaW9uIGlzIGdpdmVuLCBhbmQgaXMgc21hbGwsIHJvdW5kIG1hbnRpc3NhIGFjY29yZGluZ2x5ICovXG4gICAgdmFyIGNzdCA9IE1hdGgucG93KDIscHJlYyAqIDQpO1xuICAgIHggPSBNYXRoLnJvdW5kKHggKiBjc3QpIC8gY3N0O1xuICB9XG4gIHZhciB4X3N0ciA9IHgudG9TdHJpbmcoMTYpO1xuICBpZihwcmVjID49IDApe1xuICAgIHZhciBpZHggPSB4X3N0ci5pbmRleE9mKCcuJyk7XG4gICAgaWYoaWR4PDApIHtcbiAgICAgIHhfc3RyICs9ICcuJyArIGNhbWxfc3RyX3JlcGVhdChwcmVjLCAnMCcpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBzaXplID0gaWR4KzErcHJlYztcbiAgICAgIGlmKHhfc3RyLmxlbmd0aCA8IHNpemUpXG4gICAgICAgIHhfc3RyICs9IGNhbWxfc3RyX3JlcGVhdChzaXplIC0geF9zdHIubGVuZ3RoLCAnMCcpO1xuICAgICAgZWxzZVxuICAgICAgICB4X3N0ciA9IHhfc3RyLnN1YnN0cigwLHNpemUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHNpZ25fc3RyICsgJzB4JyArIHhfc3RyICsgJ3AnICsgZXhwX3NpZ24gKyBleHAudG9TdHJpbmcoMTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGxvID0geC5sbztcbiAgdmFyIG1pID0geC5taTtcbiAgdmFyIGhpID0geC5oaTtcbiAgdmFyIGV4cCA9IChoaSAmIDB4N2ZmZikgPj4gNDtcbiAgaWYgKGV4cCA9PSAyMDQ3KSB7XG4gICAgaWYgKChsb3xtaXwoaGkmMHhmKSkgPT0gMClcbiAgICAgIHJldHVybiAoaGkgJiAweDgwMDApPygtSW5maW5pdHkpOkluZmluaXR5O1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBOYU47XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLC0yNCk7XG4gIHZhciByZXMgPSAobG8qayttaSkqaysoaGkmMHhmKTtcbiAgaWYgKGV4cCA+IDApIHtcbiAgICByZXMgKz0gMTY7XG4gICAgcmVzICo9IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICB9IGVsc2VcbiAgICByZXMgKj0gTWF0aC5wb3coMiwtMTAyNik7XG4gIGlmIChoaSAmIDB4ODAwMCkgcmVzID0gLSByZXM7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV4dGFmdGVyX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfc3ViLGNhbWxfaW50NjRfb2ZfaW50MzJcbmZ1bmN0aW9uIGNhbWxfbmV4dGFmdGVyX2Zsb2F0ICh4LHkpIHtcbiAgaWYoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIHJldHVybiBOYU47XG4gIGlmKHg9PXkpIHJldHVybiB5O1xuICBpZih4PT0wKXtcbiAgICBpZih5IDwgMClcbiAgICAgIHJldHVybiAtTWF0aC5wb3coMiwgLTEwNzQpXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE1hdGgucG93KDIsIC0xMDc0KVxuICB9XG4gIHZhciBiaXRzID0gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpO1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxKTtcbiAgaWYgKCh4PHkpID09ICh4PjApKVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X2FkZChiaXRzLCBvbmUpXG4gIGVsc2VcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9zdWIoYml0cywgb25lKVxuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGJpdHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RydW5jX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX3RydW5jX2Zsb2F0KHgpe1xuICByZXR1cm4gTWF0aC50cnVuYyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGludDMyYSA9IG5ldyBnbG9iYWxUaGlzLkludDMyQXJyYXkoMSk7XG4gIGludDMyYVswXSA9IHg7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBnbG9iYWxUaGlzLkZsb2F0MzJBcnJheShpbnQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGZsb2F0MzJhWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NsYXNzaWZ5X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NsYXNzaWZ5X2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPj0gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHJldHVybiAwO1xuICAgIGlmICh4ICE9IDApIHJldHVybiAxO1xuICAgIHJldHVybiAyO1xuICB9XG4gIHJldHVybiBpc05hTih4KT80OjM7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21vZGZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbW9kZl9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgdmFyIG5lZyA9ICgxL3gpIDwgMDtcbiAgICB4ID0gTWF0aC5hYnMoeCk7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yICh4KTtcbiAgICB2YXIgZiA9IHggLSBpO1xuICAgIGlmIChuZWcpIHsgaSA9IC1pOyBmID0gLWY7IH1cbiAgICByZXR1cm4gWzAsIGYsIGldO1xuICB9XG4gIGlmIChpc05hTiAoeCkpIHJldHVybiBbMCwgTmFOLCBOYU5dO1xuICByZXR1cm4gWzAsIDEveCwgeF07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xkZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xkZXhwX2Zsb2F0ICh4LGV4cCkge1xuICBleHAgfD0gMDtcbiAgaWYgKGV4cCA+IDEwMjMpIHtcbiAgICBleHAgLT0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIGlmIChleHAgPiAxMDIzKSB7ICAvLyBpbiBjYXNlIHggaXMgc3Vibm9ybWFsXG4gICAgICBleHAgLT0gMTAyMztcbiAgICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgfVxuICB9XG4gIGlmIChleHAgPCAtMTAyMykge1xuICAgIGV4cCArPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgLTEwMjMpO1xuICB9XG4gIHggKj0gTWF0aC5wb3coMiwgZXhwKTtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXhwX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfZnJleHBfZmxvYXQgKHgpIHtcbiAgaWYgKCh4ID09IDApIHx8ICFpc0Zpbml0ZSh4KSkgcmV0dXJuIFswLCB4LCAwXTtcbiAgdmFyIG5lZyA9IHggPCAwO1xuICBpZiAobmVnKSB4ID0gLSB4O1xuICB2YXIgZXhwID0gTWF0aC5tYXgoLTEwMjMsIGpzb29fZmxvb3JfbG9nMih4KSArIDEpO1xuICB4ICo9IE1hdGgucG93KDIsLWV4cCk7XG4gIHdoaWxlICh4IDwgMC41KSB7XG4gICAgeCAqPSAyO1xuICAgIGV4cC0tO1xuICB9XG4gIHdoaWxlICh4ID49IDEpIHtcbiAgICB4ICo9IDAuNTtcbiAgICBleHArKztcbiAgfVxuICBpZiAobmVnKSB4ID0gLSB4O1xuICByZXR1cm4gWzAsIHgsIGV4cF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbG9hdF9jb21wYXJlICh4LCB5KSB7XG4gIGlmICh4ID09PSB5KSByZXR1cm4gMDtcbiAgaWYgKHggPCB5KSByZXR1cm4gLTE7XG4gIGlmICh4ID4geSkgcmV0dXJuIDE7XG4gIGlmICh4ID09PSB4KSByZXR1cm4gMTtcbiAgaWYgKHkgPT09IHkpIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29weXNpZ25fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29weXNpZ25fZmxvYXQgKHgsIHkpIHtcbiAgaWYgKHkgPT0gMCkgeSA9IDEgLyB5O1xuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHJldHVybiAoeSA8IDApPygteCk6eDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zaWduYml0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpZ25iaXRfZmxvYXQoeCkge1xuICBpZiAoeCA9PSAwKSB4ID0gMSAvIHg7XG4gIHJldHVybiAoeCA8IDApPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9leHBtMV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHBtMV9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5leHBtMSh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9leHAyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cDJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5wb3coMiwgeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMXBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMXBfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cxcCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cyKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2h5cG90X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2h5cG90X2Zsb2F0ICh4LCB5KSB7IHJldHVybiBNYXRoLmh5cG90KHgsIHkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzEwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzEwX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmxvZzEwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Nvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Fjb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Fjb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFjb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3NpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5zaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2FzaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2FzaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFzaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3RhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC50YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2F0YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2F0YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmF0YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JvdW5kX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3JvdW5kX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnJvdW5kKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2NicnRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2JydF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jYnJ0KHgpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2VyZl9mbG9hdCh4KSB7XG4gIHZhciBhMSA9IDAuMjU0ODI5NTkyO1xuICB2YXIgYTIgPSAtMC4yODQ0OTY3MzY7XG4gIHZhciBhMyA9IDEuNDIxNDEzNzQxO1xuICB2YXIgYTQgPSAtMS40NTMxNTIwMjc7XG4gIHZhciBhNSA9IDEuMDYxNDA1NDI5O1xuICB2YXIgcCA9IDAuMzI3NTkxMTtcblxuICB2YXIgc2lnbiA9IDE7XG4gIGlmICh4IDwgMCkge1xuICAgIHNpZ24gPSAtMTtcbiAgfVxuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHZhciB0ID0gMS4wIC8gKDEuMCArIHAgKiB4KTtcbiAgdmFyIHkgPSAxLjAgLSAoKCgoYTUgKiB0ICsgYTQpICogdCArIGEzKSAqIHQgKyBhMikgKiB0ICsgYTEpICogdCAqIE1hdGguZXhwKC14ICogeCk7XG5cbiAgcmV0dXJuIHNpZ24gKiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZmNfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXJmX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2VyZmNfZmxvYXQoeCkge1xuICByZXR1cm4gMSAtIGNhbWxfZXJmX2Zsb2F0KHgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm1hX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZtYV9mbG9hdCh4LCB5LCB6KSB7XG4gIHZhciBTUExJVCA9IE1hdGgucG93KDIsIDI3KSArIDE7XG4gIHZhciBNSU5fVkFMVUUgPSBNYXRoLnBvdygyLCAtMTAyMik7XG4gIHZhciBFUFNJTE9OID0gTWF0aC5wb3coMiwgLTUyKTtcbiAgdmFyIEMgPSA0MTY7XG4gIHZhciBBID0gTWF0aC5wb3coMiwgK0MpO1xuICB2YXIgQiA9IE1hdGgucG93KDIsIC1DKTtcblxuICBmdW5jdGlvbiBtdWx0aXBseSAoYSwgYikge1xuICAgIHZhciBhdCA9IFNQTElUICogYTtcbiAgICB2YXIgYWhpID0gYXQgLSAoYXQgLSBhKTtcbiAgICB2YXIgYWxvID0gYSAtIGFoaTtcbiAgICB2YXIgYnQgPSBTUExJVCAqIGI7XG4gICAgdmFyIGJoaSA9IGJ0IC0gKGJ0IC0gYik7XG4gICAgdmFyIGJsbyA9IGIgLSBiaGk7XG4gICAgdmFyIHAgPSBhICogYjtcbiAgICB2YXIgZSA9ICgoYWhpICogYmhpIC0gcCkgKyBhaGkgKiBibG8gKyBhbG8gKiBiaGkpICsgYWxvICogYmxvO1xuICAgIHJldHVybiB7XG4gICAgICBwOiBwLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdmFyIHMgPSBhICsgYjtcbiAgICB2YXIgdiA9IHMgLSBhO1xuICAgIHZhciBlID0gKGEgLSAocyAtIHYpKSArIChiIC0gdik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHM6IHMsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGp1c3QgKHgsIHkpIHtcbiAgICByZXR1cm4geCAhPT0gMCAmJiB5ICE9PSAwICYmIFNQTElUICogeCAtIChTUExJVCAqIHggLSB4KSA9PT0geCA/IHggKiAoMSArICh4IDwgMCA/IC0xIDogKzEpICogKHkgPCAwID8gLTEgOiArMSkgKiBFUFNJTE9OKSA6IHg7XG4gIH07XG5cbiAgaWYgKHggPT09IDAgfHwgeCAhPT0geCB8fCB4ID09PSArMSAvIDAgfHwgeCA9PT0gLTEgLyAwIHx8XG4gICAgICB5ID09PSAwIHx8IHkgIT09IHkgfHwgeSA9PT0gKzEgLyAwIHx8IHkgPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB4ICogeSArIHo7XG4gIH1cbiAgaWYgKHogPT09IDApIHtcbiAgICByZXR1cm4geCAqIHk7XG4gIH1cbiAgaWYgKHogIT09IHogfHwgeiA9PT0gKzEgLyAwIHx8IHogPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHNjYWxlID0gMTtcbiAgd2hpbGUgKE1hdGguYWJzKHgpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeCAqPSBCO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHkgKj0gQjtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICogc2NhbGU7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHgpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeCAqPSBBO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHkgKj0gQTtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciB4cyA9IHg7XG4gIHZhciB5cyA9IHk7XG4gIHZhciB6cyA9IHogLyBzY2FsZTtcblxuICBpZiAoTWF0aC5hYnMoenMpID4gTWF0aC5hYnMoeHMgKiB5cykgKiA0IC8gRVBTSUxPTikge1xuICAgIHJldHVybiB6O1xuICB9XG4gIGlmIChNYXRoLmFicyh6cykgPCBNYXRoLmFicyh4cyAqIHlzKSAqIEVQU0lMT04gLyA0ICogRVBTSUxPTiAvIDQpIHtcbiAgICB6cyA9ICh6IDwgMCA/IC0xIDogKzEpICogTUlOX1ZBTFVFO1xuICB9XG5cbiAgdmFyIHh5ID0gbXVsdGlwbHkoeHMsIHlzKTtcbiAgdmFyIHMgPSBhZGQoeHkucCwgenMpO1xuICB2YXIgdSA9IGFkZCh4eS5lLCBzLmUpO1xuICB2YXIgaSA9IGFkZChzLnMsIHUucyk7XG5cbiAgdmFyIGYgPSBpLnMgKyBhZGp1c3QoaS5lLCB1LmUpO1xuICBpZiAoZiA9PT0gMCkge1xuICAgIHJldHVybiBmO1xuICB9XG5cbiAgdmFyIGZzID0gZiAqIHNjYWxlO1xuICBpZiAoTWF0aC5hYnMoZnMpID4gTUlOX1ZBTFVFKSB7XG4gICAgcmV0dXJuIGZzO1xuICB9XG5cbiAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSB3YXMgZXh0cmEgcm91bmRpbmcgZm9yIGEgZGVub3JtYWxpemVkIHZhbHVlLlxuICByZXR1cm4gZnMgKyBhZGp1c3QoZiAtIGZzIC8gc2NhbGUsIGkuZSkgKiBzY2FsZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9mbG9hdCAoZm10LCB4KSB7XG4gIGZ1bmN0aW9uIHRvRml4ZWQoeCxkcCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IDEuMCkge1xuICAgICAgcmV0dXJuIHgudG9GaXhlZChkcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlID0gcGFyc2VJbnQoeC50b1N0cmluZygpLnNwbGl0KCcrJylbMV0pO1xuICAgICAgaWYgKGUgPiAyMCkge1xuICAgICAgICBlIC09IDIwO1xuICAgICAgICB4IC89IE1hdGgucG93KDEwLGUpO1xuICAgICAgICB4ICs9IChuZXcgQXJyYXkoZSsxKSkuam9pbignMCcpO1xuICAgICAgICBpZihkcCA+IDApIHtcbiAgICAgICAgICB4ID0geCArICcuJyArIChuZXcgQXJyYXkoZHArMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cbiAgICAgIGVsc2UgcmV0dXJuIHgudG9GaXhlZChkcClcbiAgICB9XG4gIH1cbiAgdmFyIHMsIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICB2YXIgcHJlYyA9IChmLnByZWMgPCAwKT82OmYucHJlYztcbiAgaWYgKHggPCAwIHx8ICh4ID09IDAgJiYgMS94ID09IC1JbmZpbml0eSkpIHsgZi5zaWduID0gLTE7IHggPSAteDsgfVxuICBpZiAoaXNOYU4oeCkpIHsgcyA9IFwibmFuXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2UgaWYgKCFpc0Zpbml0ZSh4KSkgeyBzID0gXCJpbmZcIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZVxuICAgIHN3aXRjaCAoZi5jb252KSB7XG4gICAgY2FzZSAnZSc6XG4gICAgICB2YXIgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjKTtcbiAgICAgIC8vIGV4cG9uZW50IHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZGlnaXRzXG4gICAgICB2YXIgaSA9IHMubGVuZ3RoO1xuICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdmJzpcbiAgICAgIHMgPSB0b0ZpeGVkKHgsIHByZWMpOyBicmVhaztcbiAgICBjYXNlICdnJzpcbiAgICAgIHByZWMgPSBwcmVjP3ByZWM6MTtcbiAgICAgIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyAtIDEpO1xuICAgICAgdmFyIGogPSBzLmluZGV4T2YoJ2UnKTtcbiAgICAgIHZhciBleHAgPSArcy5zbGljZShqICsgMSk7XG4gICAgICBpZiAoZXhwIDwgLTQgfHwgeCA+PSAxZTIxIHx8IHgudG9GaXhlZCgwKS5sZW5ndGggPiBwcmVjKSB7XG4gICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgdmFyIGkgPSBqIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKSArIHMuc2xpY2Uoaik7XG4gICAgICAgIGkgPSBzLmxlbmd0aDtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcCA9IHByZWM7XG4gICAgICAgIGlmIChleHAgPCAwKSB7IHAgLT0gZXhwICsgMTsgcyA9IHgudG9GaXhlZChwKTsgfVxuICAgICAgICBlbHNlIHdoaWxlIChzID0geC50b0ZpeGVkKHApLCBzLmxlbmd0aCA+IHByZWMgKyAxKSBwLS07XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICAgIHZhciBpID0gcy5sZW5ndGggLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9zdHJpbmcocykge1xuICB2YXIgcmVzO1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKVxuICByZXMgPSArcztcbiAgaWYgKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHJldHVybiByZXM7XG4gIHMgPSBzLnJlcGxhY2UoL18vZyxcIlwiKTtcbiAgcmVzID0gK3M7XG4gIGlmICgoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKSByZXR1cm4gcmVzO1xuICB2YXIgbSA9IC9eICooWystXT8pMHgoWzAtOWEtZl0rKVxcLj8oWzAtOWEtZl0qKShwKFsrLV0/WzAtOV0rKSk/L2kuZXhlYyhzKTtcbiAgLy8gICAgICAgICAgMSAgICAgICAgMiAgICAgICAgICAgICAzICAgICAgICAgICA1XG4gIGlmKG0pe1xuICAgIHZhciBtMyA9IG1bM10ucmVwbGFjZSgvMCskLywnJyk7XG4gICAgdmFyIG1hbnRpc3NhID0gcGFyc2VJbnQobVsxXSArIG1bMl0gKyBtMywgMTYpO1xuICAgIHZhciBleHBvbmVudCA9IChtWzVdfDApIC0gNCptMy5sZW5ndGg7XG4gICAgcmVzID0gbWFudGlzc2EgKiBNYXRoLnBvdygyLCBleHBvbmVudCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZigvXlxcKz9pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gSW5maW5pdHk7XG4gIGlmKC9eLWluZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiAtSW5maW5pdHk7XG4gIGNhbWxfZmFpbHdpdGgoXCJmbG9hdF9vZl9zdHJpbmdcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucy5ub2RlICE9PSAndW5kZWZpbmVkJylcbn1cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiBmYWxzZVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9SZXF1aXJlczogTWxOb2RlRmlsZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBNbE5vZGVEZXZpY2Uocm9vdCkge1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubm0gPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAodGhpcy5yb290ICsgbmFtZSk7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLCBtb2RlLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ta2RpclN5bmModGhpcy5ubShuYW1lKSx7bW9kZTptb2RlfSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJtZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMucmVhZGRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRGlyZWN0b3J5KCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBiID0gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgICB0aGlzLmZzLnVubGlua1N5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIGI7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIGNvbnN0cyA9IHJlcXVpcmUoJ2NvbnN0YW50cycpO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBrZXkgaW4gZil7XG4gICAgc3dpdGNoKGtleSl7XG4gICAgY2FzZSBcInJkb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19SRE9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJ3cm9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fV1JPTkxZOyBicmVhaztcbiAgICBjYXNlIFwiYXBwZW5kXCIgIDpcbiAgICAgIHJlcyB8PSBjb25zdHMuT19XUk9OTFkgfCBjb25zdHMuT19BUFBFTkQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiY3JlYXRlXCIgICA6IHJlcyB8PSBjb25zdHMuT19DUkVBVDsgICAgYnJlYWs7XG4gICAgY2FzZSBcInRydW5jYXRlXCIgOiByZXMgfD0gY29uc3RzLk9fVFJVTkM7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJleGNsXCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX0VYQ0w7ICAgICBicmVhaztcbiAgICBjYXNlIFwiYmluYXJ5XCIgICA6IHJlcyB8PSBjb25zdHMuT19CSU5BUlk7ICAgYnJlYWs7XG4gICAgY2FzZSBcInRleHRcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fVEVYVDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJub25ibG9ja1wiIDogcmVzIHw9IGNvbnN0cy5PX05PTkJMT0NLOyBicmVhaztcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICB2YXIgZmQgPSB0aGlzLmZzLm9wZW5TeW5jKHRoaXMubm0obmFtZSksIHJlcyk7XG4gICAgcmV0dXJuIG5ldyBNbE5vZGVGaWxlKGZkKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlbmFtZSA9IGZ1bmN0aW9uKG8sIG4sIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlbmFtZVN5bmModGhpcy5ubShvKSwgdGhpcy5ubShuKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmxzdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN5bWxpbmsgPSBmdW5jdGlvbih0b19kaXIsIHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMuc3ltbGlua1N5bmModGhpcy5ubSh0YXJnZXQpLCB0aGlzLm5tKHBhdGgpLCB0b19kaXIgPyAnZGlyJyA6ICdmaWxlJyk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGxpbmsgPSB0aGlzLmZzLnJlYWRsaW5rU3luYyh0aGlzLm5tKG5hbWUpLCAndXRmOCcpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhsaW5rKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yYWlzZV9ub2RlanNfZXJyb3IgPSBmdW5jdGlvbihlcnIsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKFwiVW5peC5Vbml4X2Vycm9yXCIpO1xuICBpZiAocmFpc2VfdW5peCAmJiB1bml4X2Vycm9yKSB7XG4gICAgdmFyIGFyZ3MgPSBtYWtlX3VuaXhfZXJyX2FyZ3MoZXJyLmNvZGUsIGVyci5zeXNjYWxsLCBlcnIucGF0aCwgZXJyLmVycm5vKTtcbiAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdHNfZnJvbV9qcyA9IGZ1bmN0aW9uKGpzX3N0YXRzKSB7XG4gIC8qID09PVVuaXguZmlsZV9raW5kPT09XG4gICAqIHR5cGUgZmlsZV9raW5kID1cbiAgICogICAgIFNfUkVHICAgICAgICAgICAgICAgICAgICAgICAoKiogUmVndWxhciBmaWxlICopXG4gICAqICAgfCBTX0RJUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIERpcmVjdG9yeSAqKVxuICAgKiAgIHwgU19DSFIgICAgICAgICAgICAgICAgICAgICAgICgqKiBDaGFyYWN0ZXIgZGV2aWNlICopXG4gICAqICAgfCBTX0JMSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIEJsb2NrIGRldmljZSAqKVxuICAgKiAgIHwgU19MTksgICAgICAgICAgICAgICAgICAgICAgICgqKiBTeW1ib2xpYyBsaW5rICopXG4gICAqICAgfCBTX0ZJRk8gICAgICAgICAgICAgICAgICAgICAgKCoqIE5hbWVkIHBpcGUgKilcbiAgICogICB8IFNfU09DSyAgICAgICAgICAgICAgICAgICAgICAoKiogU29ja2V0ICopXG4gICAqL1xuICB2YXIgZmlsZV9raW5kO1xuICBpZiAoanNfc3RhdHMuaXNGaWxlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAwO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBmaWxlX2tpbmQgPSAxO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAyO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQmxvY2tEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDM7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgIGZpbGVfa2luZCA9IDQ7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNGSUZPKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA1O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU29ja2V0KCkpIHtcbiAgICBmaWxlX2tpbmQgPSA2O1xuICB9XG4gIC8qID09PVVuaXguc3RhdHM9PT1cbiAgICogdHlwZSBzdGF0cyA9XG4gICAqICB7IHN0X2RldiA6IGludDsgICAgICAgICAgICAgICAoKiogRGV2aWNlIG51bWJlciAqKVxuICAgKiAgICBzdF9pbm8gOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIElub2RlIG51bWJlciAqKVxuICAgKiAgICBzdF9raW5kIDogZmlsZV9raW5kOyAgICAgICAgKCoqIEtpbmQgb2YgdGhlIGZpbGUgKilcbiAgICogICAgc3RfcGVybSA6IGZpbGVfcGVybTsgICAgICAgICgqKiBBY2Nlc3MgcmlnaHRzICopXG4gICAqICAgIHN0X25saW5rIDogaW50OyAgICAgICAgICAgICAoKiogTnVtYmVyIG9mIGxpbmtzICopXG4gICAqICAgIHN0X3VpZCA6IGludDsgICAgICAgICAgICAgICAoKiogVXNlciBpZCBvZiB0aGUgb3duZXIgKilcbiAgICogICAgc3RfZ2lkIDogaW50OyAgICAgICAgICAgICAgICgqKiBHcm91cCBJRCBvZiB0aGUgZmlsZSdzIGdyb3VwICopXG4gICAqICAgIHN0X3JkZXYgOiBpbnQ7ICAgICAgICAgICAgICAoKiogRGV2aWNlIElEIChpZiBzcGVjaWFsIGZpbGUpICopXG4gICAqICAgIHN0X3NpemUgOiBpbnQ7ICAgICAgICAgICAgICAoKiogU2l6ZSBpbiBieXRlcyAqKVxuICAgKiAgICBzdF9hdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgYWNjZXNzIHRpbWUgKilcbiAgICogICAgc3RfbXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IG1vZGlmaWNhdGlvbiB0aW1lICopXG4gICAqICAgIHN0X2N0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBzdGF0dXMgY2hhbmdlIHRpbWUgKilcbiAgICogIH1cbiAgICovXG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGpzX3N0YXRzLmRldixcbiAgICBqc19zdGF0cy5pbm8sXG4gICAgZmlsZV9raW5kLFxuICAgIGpzX3N0YXRzLm1vZGUsXG4gICAganNfc3RhdHMubmxpbmssXG4gICAganNfc3RhdHMudWlkLFxuICAgIGpzX3N0YXRzLmdpZCxcbiAgICBqc19zdGF0cy5yZGV2LFxuICAgIGpzX3N0YXRzLnNpemUsXG4gICAganNfc3RhdHMuYXRpbWVNcyxcbiAgICBqc19zdGF0cy5tdGltZU1zLFxuICAgIGpzX3N0YXRzLmN0aW1lTXNcbiAgKTtcbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZURldmljZVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZURldmljZSgpIHtcbn1cblxuLy9Qcm92aWRlczogTWxOb2RlRmlsZVxuLy9SZXF1aXJlczogTWxGaWxlLCBjYW1sX2FycmF5X29mX3N0cmluZywgY2FtbF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19zZXQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbE5vZGVGaWxlKGZkKXtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMuZmQgPSBmZDtcbn1cbk1sTm9kZUZpbGUucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcblxuTWxOb2RlRmlsZS5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB0cnkge1xuICAgIHRoaXMuZnMuZnRydW5jYXRlU3luYyh0aGlzLmZkLGxlbnwwKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZpbGUucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5mc3RhdFN5bmModGhpcy5mZCkuc2l6ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGaWxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYsYnVmX29mZnNldCxsZW4pe1xuICB2YXIgYSA9IGNhbWxfYXJyYXlfb2Zfc3RyaW5nKGJ1Zik7XG4gIGlmKCEgKGEgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlVpbnQ4QXJyYXkpKVxuICAgIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50OEFycmF5KGEpO1xuICB2YXIgYnVmZmVyID0gZ2xvYmFsVGhpcy5CdWZmZXIuZnJvbShhKTtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWZmZXIsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuTWxOb2RlRmlsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxidWYsYnVmX29mZnNldCxsZW4pe1xuICB2YXIgYSA9IGNhbWxfYXJyYXlfb2ZfYnl0ZXMoYnVmKTtcbiAgaWYoISAoYSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuVWludDhBcnJheSkpXG4gICAgYSA9IG5ldyBnbG9iYWxUaGlzLlVpbnQ4QXJyYXkoYSk7XG4gIHZhciBidWZmZXIgPSBnbG9iYWxUaGlzLkJ1ZmZlci5mcm9tKGEpO1xuICB0cnkge1xuICAgIHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYnVmZmVyLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIGNhbWxfYnl0ZXNfc2V0KGJ1ZixidWZfb2Zmc2V0ICsgaSxidWZmZXJbYnVmX29mZnNldCtpXSk7XG4gIH1cbiAgcmV0dXJuIDBcbn1cbk1sTm9kZUZpbGUucHJvdG90eXBlLnJlYWRfb25lID0gZnVuY3Rpb24ob2Zmc2V0KXtcbiAgdmFyIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50OEFycmF5KDEpO1xuICB2YXIgYnVmZmVyID0gZ2xvYmFsVGhpcy5CdWZmZXIuZnJvbShhKTtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGJ1ZmZlciwgMCwgMSwgb2Zmc2V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiBidWZmZXJbMF07XG59XG5NbE5vZGVGaWxlLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCl7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5jbG9zZVN5bmModGhpcy5mZCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuXG5NbE5vZGVGaWxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZUZpbGU7XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZpbGVcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZUZpbGUoKXtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRHVtbXkgZmlsZXN5c3RlbVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpe1xuICByZXR1cm4gKG5hbWUuc2xpY2UoLTEpICE9PSBcIi9cIikgPyAobmFtZSArIFwiL1wiKSA6IG5hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5pZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZClcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKCkucmVwbGFjZSgvXFxcXC9nLCcvJyk7XG5lbHNlXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gIFwiL3N0YXRpY1wiO1xuY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2goY2FtbF9jdXJyZW50X2Rpcik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3Jvb3Rcbi8vUmVxdWlyZXM6IHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfZ2V0X3Jvb3QocGF0aCl7XG4gIHZhciB4ID0gcGF0aF9pc19hYnNvbHV0ZShwYXRoKTtcbiAgaWYgKCF4KSByZXR1cm47XG4gIHJldHVybiB4WzBdICsgXCIvXCJ9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcm9vdFxuLy9SZXF1aXJlczogY2FtbF9nZXRfcm9vdCwgY2FtbF9jdXJyZW50X2RpciwgY2FtbF9mYWlsd2l0aFxudmFyIGNhbWxfcm9vdCA9IGNhbWxfZ2V0X3Jvb3QoY2FtbF9jdXJyZW50X2RpcikgfHwgY2FtbF9mYWlsd2l0aChcInVuYWJsZSB0byBjb21wdXRlIGNhbWxfcm9vdFwiKTtcblxuXG4vL1Byb3ZpZGVzOiBNbEZpbGVcbmZ1bmN0aW9uIE1sRmlsZSgpeyAgfVxuXG4vL1Byb3ZpZGVzOiBwYXRoX2lzX2Fic29sdXRlXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCkge1xuICBmdW5jdGlvbiBwb3NpeChwYXRoKSB7XG4gICAgaWYgKHBhdGguY2hhckF0KDApID09PSAnLycpIHJldHVybiBbXCJcIiwgcGF0aC5zdWJzdHJpbmcoMSldO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdpbjMyKHBhdGgpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9iM2ZjYzI0NWZiMjU1Mzk5MDllZjFkNWVhYTAxZGJmOTJlMTY4NjMzL2xpYi9wYXRoLmpzI0w1NlxuICAgIHZhciBzcGxpdERldmljZVJlID0gL14oW2EtekEtWl06fFtcXFxcL117Mn1bXlxcXFwvXStbXFxcXC9dK1teXFxcXC9dKyk/KFtcXFxcL10pPyhbXFxzXFxTXSo/KSQvO1xuICAgIHZhciByZXN1bHQgPSBzcGxpdERldmljZVJlLmV4ZWMocGF0aCk7XG4gICAgdmFyIGRldmljZSA9IHJlc3VsdFsxXSB8fCAnJztcbiAgICB2YXIgaXNVbmMgPSBCb29sZWFuKGRldmljZSAmJiBkZXZpY2UuY2hhckF0KDEpICE9PSAnOicpO1xuXG4gICAgLy8gVU5DIHBhdGhzIGFyZSBhbHdheXMgYWJzb2x1dGVcbiAgICBpZiAoQm9vbGVhbihyZXN1bHRbMl0gfHwgaXNVbmMpKSB7XG4gICAgICB2YXIgcm9vdCA9IChyZXN1bHRbMV0gfHwgJycpO1xuICAgICAgdmFyIHNlcCA9IChyZXN1bHRbMl0gfHwgJycpO1xuICAgICAgcmV0dXJuIFtyb290LCBwYXRoLnN1YnN0cmluZyhyb290Lmxlbmd0aCArIHNlcC5sZW5ndGgpXVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSkge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyB3aW4zMiA6IHBvc2l4O1xuICB9XG4gIGVsc2UgcmV0dXJuIHBvc2l4XG59XG52YXIgcGF0aF9pc19hYnNvbHV0ZSA9IG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfcGF0aFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfbWFrZV9wYXRoIChuYW1lKSB7XG4gIG5hbWU9Y2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKCAhcGF0aF9pc19hYnNvbHV0ZShuYW1lKSApXG4gICAgbmFtZSA9IGNhbWxfY3VycmVudF9kaXIgKyBuYW1lO1xuICB2YXIgY29tcDAgPSBwYXRoX2lzX2Fic29sdXRlKG5hbWUpO1xuICB2YXIgY29tcCA9IGNvbXAwWzFdLnNwbGl0KFwiL1wiKTtcbiAgdmFyIG5jb21wID0gW11cbiAgZm9yKHZhciBpID0gMDsgaTxjb21wLmxlbmd0aDsgaSsrKXtcbiAgICBzd2l0Y2goY29tcFtpXSl7XG4gICAgY2FzZSBcIi4uXCI6IGlmKG5jb21wLmxlbmd0aD4xKSBuY29tcC5wb3AoKTsgYnJlYWs7XG4gICAgY2FzZSBcIi5cIjogYnJlYWs7XG4gICAgZGVmYXVsdDogbmNvbXAucHVzaChjb21wW2ldKTticmVha1xuICAgIH1cbiAgfVxuICBuY29tcC51bnNoaWZ0KGNvbXAwWzBdKTtcbiAgbmNvbXAub3JpZyA9IG5hbWU7XG4gIHJldHVybiBuY29tcDtcbn1cblxuLy9Qcm92aWRlczpqc29vX21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIE1sTm9kZURldmljZSwgY2FtbF9yb290LCBmc19ub2RlX3N1cHBvcnRlZFxudmFyIGpzb29fbW91bnRfcG9pbnQgPSBbXVxuaWYgKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShjYW1sX3Jvb3QpfSk7XG59IGVsc2Uge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn1cbmpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpcIi9zdGF0aWMvXCIsIGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKFwiL3N0YXRpYy9cIil9KTtcblxuLy9Qcm92aWRlczpjYW1sX2xpc3RfbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGlzdF9tb3VudF9wb2ludCgpe1xuICB2YXIgcHJldiA9IDBcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspe1xuICAgIHZhciBvbGQgPSBwcmV2O1xuICAgIHByZXYgPSBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhqc29vX21vdW50X3BvaW50W2ldLnBhdGgpLCBvbGRdXG4gIH1cbiAgcmV0dXJuIHByZXY7XG59XG5cbi8vUHJvdmlkZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2V0X3Jvb3QsIE1sTm9kZURldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IHBhdGguam9pbihcIi9cIik7XG4gIHZhciBuYW1lX3NsYXNoID0gY2FtbF90cmFpbGluZ19zbGFzaChuYW1lKTtcbiAgdmFyIHJlcztcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbSA9IGpzb29fbW91bnRfcG9pbnRbaV07XG4gICAgaWYobmFtZV9zbGFzaC5zZWFyY2gobS5wYXRoKSA9PSAwXG4gICAgICAgJiYgKCFyZXMgfHwgcmVzLnBhdGgubGVuZ3RoIDwgbS5wYXRoLmxlbmd0aCkpXG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICB9XG4gIGlmKCAhcmVzICYmIGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICB2YXIgcm9vdCA9IGNhbWxfZ2V0X3Jvb3QobmFtZSk7XG4gICAgaWYgKHJvb3QgJiYgcm9vdC5tYXRjaCgvXlthLXpBLVpdOlxcLyQvKSl7XG4gICAgICB2YXIgbSA9IHtwYXRoOnJvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2Uocm9vdCl9O1xuICAgICAganNvb19tb3VudF9wb2ludC5wdXNoKG0pO1xuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgICB9XG4gIH1cbiAgaWYoIHJlcyApIHJldHVybiByZXM7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwibm8gZGV2aWNlIGZvdW5kIGZvciBcIiArIG5hbWVfc2xhc2gpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vdW50X2F1dG9sb2FkXG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX21vdW50X2F1dG9sb2FkKG5hbWUsZil7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOm5hbWUsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UobmFtZSxmKX0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VubW91bnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfbWFrZV9wYXRoLCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3VubW91bnQobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAgdmFyIGlkeCA9IC0xO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKylcbiAgICBpZihqc29vX21vdW50X3BvaW50W2ldLnBhdGggPT0gbmFtZSkgaWR4ID0gaTtcbiAgaWYoaWR4ID4gLTEpIGpzb29fbW91bnRfcG9pbnQuc3BsaWNlKGlkeCwxKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0Y3dkXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRjd2QoKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfY3VycmVudF9kaXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jaGRpclxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19jaGRpcihkaXIpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkaXIpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIGlmKHJvb3QucmVzdCkgY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocm9vdC5wYXRoICsgcm9vdC5yZXN0KTtcbiAgICBlbHNlIGNhbWxfY3VycmVudF9kaXIgPSByb290LnBhdGg7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhkaXIpKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9hX2RpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm90X2FfZGlyKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2ZpbGVfZXhpc3RzXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfZmlsZV9leGlzdHMgKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfYV9kaXIsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5yZWFkZGlyKHJvb3QucmVzdCk7XG4gIHZhciBsID0gbmV3IEFycmF5KGEubGVuZ3RoICsgMSk7XG4gIGxbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGEubGVuZ3RoO2krKylcbiAgICBsW2krMV0gPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGFbaV0pO1xuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVtb3ZlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbW92ZShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIG9rID0gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCk7XG4gIGlmKG9rID09IDApIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLmlzX2Rpcihyb290LnJlc3QpO1xuICByZXR1cm4gYT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbmFtZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbmFtZShvLG4pe1xuICB2YXIgb19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobyk7XG4gIHZhciBuX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuKTtcbiAgaWYob19yb290LmRldmljZSAhPSBuX3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IGNhbm5vdCBtb3ZlIGZpbGUgYmV0d2VlbiB0d28gZmlsZXN5c3RlbVwiKTtcbiAgaWYoIW9fcm9vdC5kZXZpY2UucmVuYW1lKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IG5vIGltcGxlbWVudGVkXCIpO1xuICBvX3Jvb3QuZGV2aWNlLnJlbmFtZShvX3Jvb3QucmVzdCwgbl9yb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3N5c19ta2RpcihuYW1lLCBwZXJtKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LHBlcm0pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV9ub3RfYV9kaXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3JtZGlyKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ybWRpcihyb290LnJlc3QpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZSh2ZmQsIGtpbmQsIGxheW91dCwgc2hhcmVkLCBkaW1zLCBwb3MpIHtcbiAgLy8gdmFyIGRhdGEgPSBjYW1sX2dsb2JhbF9kYXRhLmZkc1t2ZmRdO1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9iYV9tYXBfZmlsZSBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUoYXJndixhcmduKXtcbiAgcmV0dXJuIGNhbWxfYmFfbWFwX2ZpbGUoYXJndlswXSxhcmd2WzFdLGFyZ3ZbMl0sYXJndlszXSxhcmd2WzRdLGFyZ3ZbNV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlX2V4dGVyblxuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZV9leHRlcm4obmFtZSxjb250ZW50KXtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKVxuICAgIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpO1xuICBlbHNlIHtcbiAgICBpZighZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCkgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICAgIGdsb2JhbFRoaXMuY2FtbF9mc190bXAucHVzaCh7bmFtZTpuYW1lLGNvbnRlbnQ6Y29udGVudH0pO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZzX2luaXRcbi8vUmVxdWlyZXM6IGpzb29fY3JlYXRlX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfZnNfaW5pdCAoKXtcbiAgdmFyIHRtcD1nbG9iYWxUaGlzLmNhbWxfZnNfdG1wXG4gIGlmKHRtcCl7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHRtcC5sZW5ndGg7IGkrKyl7XG4gICAgICBqc29vX2NyZWF0ZV9maWxlKHRtcFtpXS5uYW1lLHRtcFtpXS5jb250ZW50KTtcbiAgICB9XG4gIH1cbiAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlID0ganNvb19jcmVhdGVfZmlsZTtcbiAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKCEgcm9vdC5kZXZpY2UucmVnaXN0ZXIpIGNhbWxfZmFpbHdpdGgoXCJjYW5ub3QgcmVnaXN0ZXIgZmlsZVwiKTtcbiAgcm9vdC5kZXZpY2UucmVnaXN0ZXIocm9vdC5yZXN0LGNvbnRlbnQpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9maWxlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgbmFtZSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk7XG4gIHZhciBjb250ZW50ID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjb250ZW50KTtcbiAgcmV0dXJuIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSwgY29udGVudCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWFkX2ZpbGVfY29udGVudFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVhZF9maWxlX2NvbnRlbnQgKG5hbWUpIHtcbiAgdmFyIG5hbWUgPSAodHlwZW9mIG5hbWUgPT0gXCJzdHJpbmdcIik/Y2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTpuYW1lO1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3Qse3Jkb25seToxfSk7XG4gICAgdmFyIGxlbiAgPSBmaWxlLmxlbmd0aCgpO1xuICAgIHZhciBidWYgID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgICBmaWxlLnJlYWQoMCxidWYsMCxsZW4pO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9ieXRlcyhidWYpXG4gIH1cbiAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG59XG4iLCIvL1Byb3ZpZGVzOiB1bml4X2dldHRpbWVvZmRheVxuZnVuY3Rpb24gdW5peF9nZXR0aW1lb2ZkYXkgKCkge1xuICByZXR1cm4gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAvIDEwMDA7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfdGltZVxuLy9SZXF1aXJlczogdW5peF9nZXR0aW1lb2ZkYXlcbmZ1bmN0aW9uIHVuaXhfdGltZSAoKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKHVuaXhfZ2V0dGltZW9mZGF5ICgpKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF9nbXRpbWVcbmZ1bmN0aW9uIHVuaXhfZ210aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoRGF0ZS5VVEMoZC5nZXRVVENGdWxsWWVhcigpLCAwLCAxKSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgcmV0dXJuIEJMT0NLKDAsIGQuZ2V0VVRDU2Vjb25kcygpLCBkLmdldFVUQ01pbnV0ZXMoKSwgZC5nZXRVVENIb3VycygpLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXRlKCksIGQuZ2V0VVRDTW9udGgoKSwgZC5nZXRVVENGdWxsWWVhcigpIC0gMTkwMCxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF5KCksIGRveSxcbiAgICAgICAgICAgICAgIGZhbHNlIHwgMCAvKiBmb3IgVVRDIGRheWxpZ2h0IHNhdmluZ3MgdGltZSBpcyBmYWxzZSAqLylcbn1cblxuLy9Qcm92aWRlczogdW5peF9sb2NhbHRpbWVcbmZ1bmN0aW9uIHVuaXhfbG9jYWx0aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICB2YXIgamFuID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKTtcbiAgdmFyIGp1bCA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgNiwgMSk7XG4gIHZhciBzdGRUaW1lem9uZU9mZnNldCA9IE1hdGgubWF4KGphbi5nZXRUaW1lem9uZU9mZnNldCgpLCBqdWwuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFNlY29uZHMoKSwgZC5nZXRNaW51dGVzKCksIGQuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF0ZSgpLCBkLmdldE1vbnRoKCksIGQuZ2V0RnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldERheSgpLCBkb3ksXG4gICAgICAgICAgICAgICAoZC5nZXRUaW1lem9uZU9mZnNldCgpIDwgc3RkVGltZXpvbmVPZmZzZXQpIHwgMCAvKiBkYXlsaWdodCBzYXZpbmdzIHRpbWUgIGZpZWxkLiAqLylcbn1cblxuLy9Qcm92aWRlczogdW5peF9ta3RpbWVcbi8vUmVxdWlyZXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiB1bml4X21rdGltZSh0bSl7XG4gIHZhciBkID0gKG5ldyBEYXRlKHRtWzZdKzE5MDAsdG1bNV0sdG1bNF0sdG1bM10sdG1bMl0sdG1bMV0pKS5nZXRUaW1lKCk7XG4gIHZhciB0ID0gTWF0aC5mbG9vcihkIC8gMTAwMCk7XG4gIHZhciB0bTIgPSB1bml4X2xvY2FsdGltZSh0KTtcbiAgcmV0dXJuIEJMT0NLKDAsdCx0bTIpO1xufVxuXG4vL1Byb3ZpZGVzOiB3aW5fc3RhcnR1cCBjb25zdFxuZnVuY3Rpb24gd2luX3N0YXJ0dXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiB3aW5fY2xlYW51cCBjb25zdFxuZnVuY3Rpb24gd2luX2NsZWFudXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiB3aW5faGFuZGxlX2ZkIGNvbnN0XG5mdW5jdGlvbiB3aW5faGFuZGxlX2ZkKHgpIHtyZXR1cm4geDt9XG5cbi8vUHJvdmlkZXM6IHVuaXhfaXNhdHR5XG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciB0dHkgPSByZXF1aXJlKCd0dHknKTtcbiAgICByZXR1cm4gdHR5LmlzYXR0eShmaWxlRGVzY3JpcHRvcik/MTowO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciB1bml4X2Vycm9yID0gW1xuICAvKiA9PT1Vbml4LmVycm9yPT09XG4gICAqXG4gICAqIFRoaXMgYXJyYXkgaXMgaW4gb3JkZXIgb2YgdGhlIHZhcmlhbnQgaW4gT0NhbWxcbiAgICovXG4gIFwiRTJCSUdcIiwgXCJFQUNDRVNcIiwgXCJFQUdBSU5cIiwgXCJFQkFERlwiLCBcIkVCVVNZXCIsIFwiRUNISUxEXCIsIFwiRURFQURMS1wiLCBcIkVET01cIixcbiAgXCJFRVhJU1RcIiwgXCJFRkFVTFRcIiwgXCJFRkJJR1wiLCBcIkVJTlRSXCIsIFwiRUlOVkFMXCIsIFwiRUlPXCIsIFwiRUlTRElSXCIsIFwiRU1GSUxFXCIsXG4gIFwiRU1MSU5LXCIsIFwiRU5BTUVUT09MT05HXCIsIFwiRU5GSUxFXCIsIFwiRU5PREVWXCIsIFwiRU5PRU5UXCIsIFwiRU5PRVhFQ1wiLCBcIkVOT0xDS1wiLFxuICBcIkVOT01FTVwiLCBcIkVOT1NQQ1wiLCBcIkVOT1NZU1wiLCBcIkVOT1RESVJcIiwgXCJFTk9URU1QVFlcIiwgXCJFTk9UVFlcIiwgXCJFTlhJT1wiLFxuICBcIkVQRVJNXCIsIFwiRVBJUEVcIiwgXCJFUkFOR0VcIiwgXCJFUk9GU1wiLCBcIkVTUElQRVwiLCBcIkVTUkNIXCIsIFwiRVhERVZcIiwgXCJFV09VTERCTE9DS1wiLFxuICBcIkVJTlBST0dSRVNTXCIsIFwiRUFMUkVBRFlcIiwgXCJFTk9UU09DS1wiLCBcIkVERVNUQUREUlJFUVwiLCBcIkVNU0dTSVpFXCIsXG4gIFwiRVBST1RPVFlQRVwiLCBcIkVOT1BST1RPT1BUXCIsIFwiRVBST1RPTk9TVVBQT1JUXCIsIFwiRVNPQ0tUTk9TVVBQT1JUXCIsXG4gIFwiRU9QTk9UU1VQUFwiLCBcIkVQRk5PU1VQUE9SVFwiLCBcIkVBRk5PU1VQUE9SVFwiLCBcIkVBRERSSU5VU0VcIiwgXCJFQUREUk5PVEFWQUlMXCIsXG4gIFwiRU5FVERPV05cIiwgXCJFTkVUVU5SRUFDSFwiLCBcIkVORVRSRVNFVFwiLCBcIkVDT05OQUJPUlRFRFwiLCBcIkVDT05OUkVTRVRcIiwgXCJFTk9CVUZTXCIsXG4gIFwiRUlTQ09OTlwiLCBcIkVOT1RDT05OXCIsIFwiRVNIVVRET1dOXCIsIFwiRVRPT01BTllSRUZTXCIsIFwiRVRJTUVET1VUXCIsIFwiRUNPTk5SRUZVU0VEXCIsXG4gIFwiRUhPU1RET1dOXCIsIFwiRUhPU1RVTlJFQUNIXCIsIFwiRUxPT1BcIiwgXCJFT1ZFUkZMT1dcIlxuXTtcbmZ1bmN0aW9uIG1ha2VfdW5peF9lcnJfYXJncyhjb2RlLCBzeXNjYWxsLCBwYXRoLCBlcnJubykge1xuICB2YXIgdmFyaWFudCA9IHVuaXhfZXJyb3IuaW5kZXhPZihjb2RlKTtcbiAgaWYgKHZhcmlhbnQgPCAwKSB7XG4gICAgLy8gRGVmYXVsdCBpZiB1bmRlZmluZWRcbiAgICBpZiAoZXJybm8gPT0gbnVsbCkge1xuICAgICAgZXJybm8gPSAtOTk5OVxuICAgIH1cbiAgICAvLyBJZiBub25lIG9mIHRoZSBhYm92ZSB2YXJpYW50cywgZmFsbGJhY2sgdG8gRVVOS05PV05FUlIoaW50KVxuICAgIHZhcmlhbnQgPSBCTE9DSygwLCBlcnJubyk7XG4gIH1cbiAgdmFyIGFyZ3MgPSBbXG4gICAgdmFyaWFudCxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzeXNjYWxsIHx8IFwiXCIpLFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGggfHwgXCJcIilcbiAgXTtcbiAgcmV0dXJuIGFyZ3M7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uuc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJ1bml4X3N0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uuc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfc3RhdF82NFxuLy9SZXF1aXJlczogdW5peF9zdGF0XG52YXIgdW5peF9zdGF0XzY0ID0gdW5peF9zdGF0O1xuXG4vL1Byb3ZpZGVzOiB1bml4X2xzdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gdW5peF9sc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF9sc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5sc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfbHN0YXRfNjRcbi8vUmVxdWlyZXM6IHVuaXhfbHN0YXRcbnZhciB1bml4X2xzdGF0XzY0ID0gdW5peF9sc3RhdDtcblxuLy9Qcm92aWRlczogdW5peF9ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfbWtkaXIobmFtZSwgcGVybSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLm1rZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfbWtkaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LCBwZXJtLCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gdW5peF9ybWRpcihuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uucm1kaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF9ybWRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ybWRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfc3ltbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfc3ltbGluayh0b19kaXIsIHNyYywgZHN0KSB7XG4gIHZhciBzcmNfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKHNyYyk7XG4gIHZhciBkc3Rfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRzdCk7XG4gIGlmKHNyY19yb290LmRldmljZSAhPSBkc3Rfcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfc3ltbGluazogY2Fubm90IHN5bWxpbmsgYmV0d2VlbiB0d28gZmlsZXN5c3RlbXNcIik7XG4gIGlmICghc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF9zeW1saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHNyY19yb290LmRldmljZS5zeW1saW5rKHRvX2Rpciwgc3JjX3Jvb3QucmVzdCwgZHN0X3Jvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF9yZWFkbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfcmVhZGxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJlYWRsaW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfcmVhZGxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UucmVhZGxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X3VubGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfdW5saW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS51bmxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF91bmxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF9nZXR1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG5mdW5jdGlvbiB1bml4X2dldHVpZCh1bml0KSB7XG4gIGlmKGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKXtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCgpO1xuICB9XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfZ2V0cHd1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG5mdW5jdGlvbiB1bml4X2dldHB3dWlkKHVuaXQpIHtcbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKVxufVxuXG4vL1Byb3ZpZGVzOiB1bml4X2hhc19zeW1saW5rXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gdW5peF9oYXNfc3ltbGluayh1bml0KSB7XG4gIHJldHVybiBmc19ub2RlX3N1cHBvcnRlZCgpPzE6MFxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBTeXNcblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuU3lzX2Vycm9yLCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4aXQgKGNvZGUpIHtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICBpZihnLnF1aXQpIGcucXVpdChjb2RlKTtcbiAgLy9ub2RlanNcbiAgaWYoZy5wcm9jZXNzICYmIGcucHJvY2Vzcy5leGl0KVxuICAgIGcucHJvY2Vzcy5leGl0KGNvZGUpO1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJGdW5jdGlvbiAnZXhpdCcgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4bil7XG4gIHN3aXRjaChleG5bMl0pIHtcbiAgY2FzZSAtODogLy8gTWF0Y2hfZmFpbHVyZVxuICBjYXNlIC0xMTogLy8gQXNzZXJ0X2ZhaWx1cmVcbiAgY2FzZSAtMTI6IC8vIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG4gICAgcmV0dXJuIDE7XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXhuKXtcbiAgdmFyIHIgPSBcIlwiO1xuICBpZihleG5bMF0gPT0gMCkge1xuICAgIHIgKz0gZXhuWzFdWzFdO1xuICAgIGlmKGV4bi5sZW5ndGggPT0gMyAmJiBleG5bMl1bMF0gPT0gMCAmJiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4blsxXSkpIHtcblxuICAgICAgdmFyIGJ1Y2tldCA9IGV4blsyXTtcbiAgICAgIHZhciBzdGFydCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFydCA9IDJcbiAgICAgIHZhciBidWNrZXQgPSBleG47XG4gICAgfVxuICAgIHIgKz0gXCIoXCI7XG4gICAgZm9yKHZhciBpID0gc3RhcnQ7IGkgPCBidWNrZXQubGVuZ3RoOyBpICsrKXtcbiAgICAgIGlmKGkgPiBzdGFydCkgcis9XCIsIFwiO1xuICAgICAgdmFyIHYgPSBidWNrZXRbaV1cbiAgICAgIGlmKHR5cGVvZiB2ID09IFwibnVtYmVyXCIpXG4gICAgICAgIHIrPSB2LnRvU3RyaW5nKCk7XG4gICAgICBlbHNlIGlmKHYgaW5zdGFuY2VvZiBNbEJ5dGVzKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSBpZih0eXBlb2YgdiA9PSBcInN0cmluZ1wiKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSByICs9IFwiX1wiO1xuICAgIH1cbiAgICByICs9IFwiKVwiXG4gIH0gZWxzZSBpZiAoZXhuWzBdID09IDI0OCl7XG4gICAgciArPSBleG5bMV1cbiAgfVxuICByZXR1cm4gclxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9mb3JtYXRfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpe1xuICBpZihlcnIgaW5zdGFuY2VvZiBBcnJheSAmJiAoZXJyWzBdID09IDAgfHwgZXJyWzBdID09IDI0OCkpIHtcbiAgICB2YXIgaGFuZGxlciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCIpO1xuICAgIGlmKGhhbmRsZXIpIGhhbmRsZXIoZXJyLGZhbHNlKTtcbiAgICBlbHNlIHtcbiAgICAgIHZhciBtc2cgPSBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHZhciBhdF9leGl0ID0gY2FtbF9uYW1lZF92YWx1ZShcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiKTtcbiAgICAgIGlmKGF0X2V4aXQpIHsgYXRfZXhpdCgwKSB9XG4gICAgICBnbG9iYWxUaGlzLmNvbnNvbGUuZXJyb3IoXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uIFwiICsgbXNnICsgXCJcXG5cIik7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IGVyclxuICB9XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfc3RhdGljX2VudlxuZnVuY3Rpb24gY2FtbF9zZXRfc3RhdGljX2VudihrLHYpe1xuICBpZighZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYpXG4gICAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYgPSB7fVxuICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltrXSA9IHY7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0ZW52IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGVudiAobmFtZSkge1xuICB2YXIgZyA9IGdsb2JhbFRoaXM7XG4gIHZhciBuID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIC8vbm9kZWpzIGVudlxuICBpZihnLnByb2Nlc3NcbiAgICAgJiYgZy5wcm9jZXNzLmVudlxuICAgICAmJiBnLnByb2Nlc3MuZW52W25dICE9IHVuZGVmaW5lZClcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoZy5wcm9jZXNzLmVudltuXSk7XG4gIGlmKGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52XG4gICAgICYmIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXSlcbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQgKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnZcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfdW5zYWZlX2dldGVudihuYW1lKXtcbiAgcmV0dXJuIGNhbWxfc3lzX2dldGVudiAobmFtZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJndlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciBjYW1sX2FyZ3YgPSAoKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICB2YXIgbWFpbiA9IFwiYS5vdXRcIjtcbiAgdmFyIGFyZ3MgPSBbXVxuXG4gIGlmKGcucHJvY2Vzc1xuICAgICAmJiBnLnByb2Nlc3MuYXJndlxuICAgICAmJiBnLnByb2Nlc3MuYXJndi5sZW5ndGggPiAxKSB7XG4gICAgdmFyIGFyZ3YgPSBnLnByb2Nlc3MuYXJndlxuICAgIC8vbm9kZWpzXG4gICAgbWFpbiA9IGFyZ3ZbMV07XG4gICAgYXJncyA9IGFyZ3Yuc2xpY2UoMik7XG4gIH1cblxuICB2YXIgcCA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG1haW4pO1xuICB2YXIgYXJnczIgPSBbMCwgcF07XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKVxuICAgIGFyZ3MyLnB1c2goY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoYXJnc1tpXSkpO1xuICByZXR1cm4gYXJnczI7XG59KSgpKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG52YXIgY2FtbF9leGVjdXRhYmxlX25hbWUgPSBjYW1sX2FyZ3ZbMV1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2FyZ3YgKGEpIHtcbiAgcmV0dXJuIFswLCBjYW1sX2FyZ3ZbMV0sIGNhbWxfYXJndl07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfYXJndiAoYSkge1xuICByZXR1cm4gY2FtbF9hcmd2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19tb2RpZnlfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19tb2RpZnlfYXJndihhcmcpe1xuICBjYW1sX2FyZ3YgPSBhcmc7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG5mdW5jdGlvbiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUoYSl7XG4gIHJldHVybiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHZhciBjbWQgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhjbWQpO1xuICBpZiAodHlwZW9mIHJlcXVpcmUgIT0gXCJ1bmRlZmluZWRcIlxuICAgICAgJiYgcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpXG4gICAgICAmJiByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJykuZXhlY1N5bmMpIHtcbiAgICB0cnkge3JlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKS5leGVjU3luYyhjbWQse3N0ZGlvOiAnaW5oZXJpdCd9KTsgcmV0dXJuIDB9XG4gICAgY2F0Y2ggKGUpIHtyZXR1cm4gMX1cbiAgfVxuICBlbHNlIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWUgbXV0YWJsZVxudmFyIGNhbWxfaW5pdGlhbF90aW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAqIDAuMDAxO1xuZnVuY3Rpb24gY2FtbF9zeXNfdGltZSAoKSB7XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICByZXR1cm4gbm93ICogMC4wMDEgLSBjYW1sX2luaXRpYWxfdGltZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuXG4vL1JlcXVpcmVzOiBjYW1sX3N5c190aW1lXG5mdW5jdGlvbiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4oYikge1xuICByZXR1cm4gY2FtbF9zeXNfdGltZSgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yYW5kb21fc2VlZCBtdXRhYmxlXG4vL1RoZSBmdW5jdGlvbiBuZWVkcyB0byByZXR1cm4gYW4gYXJyYXkgc2luY2UgT0NhbWwgNC4wLi4uXG5mdW5jdGlvbiBjYW1sX3N5c19yYW5kb21fc2VlZCAoKSB7XG4gIGlmKGdsb2JhbFRoaXMuY3J5cHRvKSB7XG4gICAgaWYodHlwZW9mIGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyA9PT0gJ2Z1bmN0aW9uJyl7XG4gICAgICAvLyBXZWJicm93c2Vyc1xuICAgICAgdmFyIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50MzJBcnJheSgxKTtcbiAgICAgIGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhKTtcbiAgICAgIHJldHVybiBbMCxhWzBdXTtcbiAgICB9IGVsc2UgaWYoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMgPT09ICdmdW5jdGlvbicpe1xuICAgICAgLy8gTm9kZWpzXG4gICAgICB2YXIgYnVmZiA9IGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKDQpO1xuICAgICAgdmFyIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50MzJBcnJheShidWZmKTtcbiAgICAgIHJldHVybiBbMCxhWzBdXTtcbiAgICB9XG4gIH1cbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHZhciB4ID0gbm93XjB4ZmZmZmZmZmYqTWF0aC5yYW5kb20oKTtcbiAgcmV0dXJuIFswLHhdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfaW50X3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2ludF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgY29uc3Rcbi8vIG1heF9pbnQgLyA0IHNvIHRoYXQgdGhlIGZvbGxvd2luZyBkb2VzIG5vdCBvdmVyZmxvd1xuLy9sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDE7O1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSAoKSB7IHJldHVybiAoMHg3RkZGRkZGRi80KSB8IDA7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIlVuaXhcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiAoKSB7IHJldHVybiBvc190eXBlID09IFwiV2luMzJcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJDeWd3aW5cIiA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwianNfb2Zfb2NhbWxcIildO1xufVxuXG4vL1Byb3ZpZGVzOiBvc190eXBlXG52YXIgb3NfdHlwZSA9IChnbG9iYWxUaGlzLnByb2Nlc3MgJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09IFwid2luMzJcIikgPyBcIkN5Z3dpblwiIDogXCJVbml4XCI7XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2NvbmZpZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2NvbmZpZyAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhvc190eXBlKSwgMzIsIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzYXR0eShfY2hhbikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3ZhcmlhbnRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV92YXJpYW50KF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlcigpe3JldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmdcbmZ1bmN0aW9uIHVuaXhfaW5ldF9hZGRyX29mX3N0cmluZyAoKSB7cmV0dXJuIDA7fVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG52YXIgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5nc1xuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIChib29sKSB7XG4gIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IGJvb2w7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFxuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCAoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfcnVudGltZV93YXJuaW5ncztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9lbmFibGVkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUoX2NoYW5uZWwpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcIlNwYWNldGltZSBwcm9maWxpbmcgb25seSB3b3JrcyBmb3IgbmF0aXZlIGNvZGVcIik7XG59XG5cbi8vQWx3YXlzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpIHtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICBpZihnLnByb2Nlc3MgJiYgZy5wcm9jZXNzLm9uKSB7XG4gICAgZy5wcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIGZ1bmN0aW9uIChlcnIsIG9yaWdpbikge1xuICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKTtcbiAgICAgIGcucHJvY2Vzcy5leGl0ICgyKTtcbiAgICB9KVxuICB9XG4gIGVsc2UgaWYoZy5hZGRFdmVudExpc3RlbmVyKXtcbiAgICBnLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZnVuY3Rpb24oZXZlbnQpe1xuICAgICAgaWYoZXZlbnQuZXJyb3Ipe1xuICAgICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihldmVudC5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbmNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKTtcbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZURldmljZVxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXksIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZXNcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuZnVuY3Rpb24gTWxGYWtlRGV2aWNlIChyb290LCBmKSB7XG4gIHRoaXMuY29udGVudD17fTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbiAgdGhpcy5sb29rdXBGdW4gPSBmO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY3JlYXRlX2Rpcl9pZl9uZWVkZWQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBjb21wID0gbmFtZS5zcGxpdChcIi9cIik7XG4gIHZhciByZXMgPSBcIlwiO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgY29tcC5sZW5ndGggLSAxOyBpKyspe1xuICAgIHJlcyArPSBjb21wW2ldICsgXCIvXCI7XG4gICAgaWYodGhpcy5jb250ZW50W3Jlc10pIGNvbnRpbnVlO1xuICAgIHRoaXMuY29udGVudFtyZXNdID0gU3ltYm9sKFwiZGlyZWN0b3J5XCIpO1xuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnNsYXNoID0gZnVuY3Rpb24obmFtZSl7XG4gIHJldHVybiAvXFwvJC8udGVzdChuYW1lKT9uYW1lOihuYW1lICsgXCIvXCIpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5sb29rdXAgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKCF0aGlzLmNvbnRlbnRbbmFtZV0gJiYgdGhpcy5sb29rdXBGdW4pIHtcbiAgICB2YXIgcmVzID0gdGhpcy5sb29rdXBGdW4oY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnJvb3QpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpKTtcbiAgICBpZihyZXMgIT09IDApIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV09bmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcocmVzWzFdKSk7XG4gICAgfVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgLy8gVGhlIHJvb3Qgb2YgdGhlIGRldmljZSBleGlzdHNcbiAgaWYobmFtZSA9PSBcIlwiKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBkaXJlY3RvcnkgZXhpc3RzXG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgaWYodGhpcy5jb250ZW50W25hbWVfc2xhc2hdKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBmaWxlIGV4aXN0c1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSxtb2RlLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUVYSVNUXCIsIFwibWtkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogRmlsZSBleGlzdHNcIik7XG4gICAgfVxuICB9XG4gIHZhciBwYXJlbnQgPSAvXiguKilcXC9bXi9dKy8uZXhlYyhuYW1lKTtcbiAgcGFyZW50ID0gKHBhcmVudCAmJiBwYXJlbnRbMV0pIHx8ICcnO1xuICBpZighdGhpcy5leGlzdHMocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKHRoaXMuc2xhc2gobmFtZSkpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICBpZihuLm1hdGNoKHIpKSB7XG4gICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URU1QVFlcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCI6IERpcmVjdG9yeSBub3QgZW1wdHlcIik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF07XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgfVxuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICB2YXIgc2VlbiA9IHt9XG4gIHZhciBhID0gW107XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICB2YXIgbSA9IG4ubWF0Y2gocik7XG4gICAgaWYobSAmJiAhc2VlblttWzFdXSkge3NlZW5bbVsxXV0gPSB0cnVlOyBhLnB1c2gobVsxXSl9XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYobmFtZSA9PSBcIlwiKSAgcmV0dXJuIHRydWU7XG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG9rID0gdGhpcy5jb250ZW50W25hbWVdP3RydWU6ZmFsc2U7XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIHJldHVybiBvaztcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICB2YXIgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gICAgcmV0dXJuIGZpbGU7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlZ2lzdGVyPSBmdW5jdGlvbiAobmFtZSxjb250ZW50KXtcbiAgdmFyIGZpbGU7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lXSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgaWYoY2FtbF9pc19tbF9ieXRlcyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY29udGVudCk7XG4gIGlmKGNhbWxfaXNfbWxfc3RyaW5nKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudCBpbnN0YW5jZW9mIEFycmF5KVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2FycmF5KGNvbnRlbnQpKTtcbiAgZWxzZSBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50LnRvU3RyaW5nKSB7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoY29udGVudC50b1N0cmluZygpKSk7XG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGJ5dGVzKTtcbiAgfVxuICBpZihmaWxlKXtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IGZpbGU7XG4gIH1cbiAgZWxzZSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiByZWdpc3RlcmluZyBmaWxlIHdpdGggaW52YWxpZCBjb250ZW50IHR5cGVcIik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VEZXZpY2VcblxuLy9Qcm92aWRlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogTWxGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19nZXRcbmZ1bmN0aW9uIE1sRmFrZUZpbGUoY29udGVudCl7XG4gIHRoaXMuZGF0YSA9IGNvbnRlbnQ7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5NbEZha2VGaWxlLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHZhciBvbGQgPSB0aGlzLmRhdGE7XG4gIHRoaXMuZGF0YSA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbnwwKTtcbiAgY2FtbF9ibGl0X2J5dGVzKG9sZCwgMCwgdGhpcy5kYXRhLCAwLCBsZW4pO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgodGhpcy5kYXRhKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIHZhciBuZXdfc3RyID0gY2FtbF9jcmVhdGVfYnl0ZXMob2Zmc2V0ICsgbGVuKTtcbiAgICB2YXIgb2xkX2RhdGEgPSB0aGlzLmRhdGE7XG4gICAgdGhpcy5kYXRhID0gbmV3X3N0cjtcbiAgICBjYW1sX2JsaXRfYnl0ZXMob2xkX2RhdGEsIDAsIHRoaXMuZGF0YSwgMCwgY2xlbik7XG4gIH1cbiAgY2FtbF9ibGl0X3N0cmluZyhidWYsIHBvcywgdGhpcy5kYXRhLCBvZmZzZXQsIGxlbik7XG4gIHJldHVybiAwXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBjYW1sX2JsaXRfYnl0ZXModGhpcy5kYXRhLCBvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pO1xuICByZXR1cm4gMFxufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUucmVhZF9vbmUgPSBmdW5jdGlvbihvZmZzZXQpe1xuICByZXR1cm4gY2FtbF9ieXRlc19nZXQodGhpcy5kYXRhLCBvZmZzZXQpO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpe1xuXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sRmFrZUZpbGVcbiIsIi8vUHJvdmlkZXM6IGluaXRpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IHNlcmlhbGl6ZV9uYXQsIGRlc2VyaWFsaXplX25hdCwgY2FtbF9oYXNoX25hdFxuZnVuY3Rpb24gaW5pdGlhbGl6ZV9uYXQoKSB7XG4gIGNhbWxfY3VzdG9tX29wc1tcIl9uYXRcIl0gPVxuICAgIHsgZGVzZXJpYWxpemUgOiBkZXNlcmlhbGl6ZV9uYXQsXG4gICAgICBzZXJpYWxpemUgOiBzZXJpYWxpemVfbmF0LFxuICAgICAgaGFzaCA6IGNhbWxfaGFzaF9uYXRcbiAgICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sTmF0XG5mdW5jdGlvbiBNbE5hdCh4KXtcbiAgdGhpcy5kYXRhID0gbmV3IGdsb2JhbFRoaXMuSW50MzJBcnJheSh4KTtcbiAgLy8gbGVuZ3RoX25hdCBpc24ndCBleHRlcm5hbCwgc28gd2UgaGF2ZSB0byBtYWtlIHRoZSBPYmouc2l6ZVxuICAvLyB3b3JrIG91dCByaWdodC4gVGhlICsyIHRvIGFycmF5IGxlbmd0aCBzZWVtcyB0byB3b3JrLlxuICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGggKyAyXG59XG5cbk1sTmF0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX25hdFwiO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9uYXQoeCkge1xuICB2YXIgbGVuID0gbnVtX2RpZ2l0c19uYXQoeCwgMCwgeC5kYXRhLmxlbmd0aCk7XG4gIHZhciBoID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB4LmRhdGFbaV0pO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG5cbi8vUHJvdmlkZXM6IG5hdF9vZl9hcnJheVxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIG5hdF9vZl9hcnJheShsKXtcbiAgcmV0dXJuIG5ldyBNbE5hdChsKTtcbn1cblxuLy9Qcm92aWRlczogY3JlYXRlX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGNyZWF0ZV9uYXQoc2l6ZSkge1xuICB2YXIgYXJyID0gbmV3IE1sTmF0KHNpemUpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgYXJyLmRhdGFbaV0gPSAtMTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfdG9femVyb19uYXRcbmZ1bmN0aW9uIHNldF90b196ZXJvX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJsaXRfbmF0XG5mdW5jdGlvbiBibGl0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBuYXQyLmRhdGFbb2ZzMitpXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdFxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdChuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdFxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdChuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBudW1fZGlnaXRzX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYobmF0LmRhdGFbb2ZzK2ldICE9IDApIHJldHVybiBpKzE7XG4gIH1cbiAgcmV0dXJuIDE7IC8vIDAgY291bnRzIGFzIDEgZGlnaXRcbn1cblxuLy9Qcm92aWRlczogbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0XG5mdW5jdGlvbiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0LCBvZnMpIHtcbiAgdmFyIGEgPSBuYXQuZGF0YVtvZnNdO1xuICB2YXIgYiA9IDA7XG4gIGlmKGEgJiAweEZGRkYwMDAwKSB7IGIgKz0xNjsgYSA+Pj49MTY7IH1cbiAgaWYoYSAmIDB4RkYwMCkgICAgIHsgYiArPSA4OyBhID4+Pj0gODsgfVxuICBpZihhICYgMHhGMCkgICAgICAgeyBiICs9IDQ7IGEgPj4+PSA0OyB9XG4gIGlmKGEgJiAxMikgICAgICAgICB7IGIgKz0gMjsgYSA+Pj49IDI7IH1cbiAgaWYoYSAmIDIpICAgICAgICAgIHsgYiArPSAxOyBhID4+Pj0gMTsgfVxuICBpZihhICYgMSkgICAgICAgICAgeyBiICs9IDE7IH1cbiAgcmV0dXJuIDMyIC0gYjtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfaW50XG5mdW5jdGlvbiBpc19kaWdpdF9pbnQobmF0LCBvZnMpIHtcbiAgaWYgKG5hdC5kYXRhW29mc10gPj0gMCkgcmV0dXJuIDFcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X3plcm9cbmZ1bmN0aW9uIGlzX2RpZ2l0X3plcm8obmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSA9PSAwKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X29kZFxuZnVuY3Rpb24gaXNfZGlnaXRfb2RkKG5hdCwgb2ZzKSB7XG4gIGlmKG5hdC5kYXRhW29mc10gJiAxKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBpbmNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICh4IHwgMCk7XG4gICAgaWYoeCA9PSAoeCA+Pj4gMCkpIHtcbiAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBhZGRfbmF0XG4vL1JlcXVpcmVzOiBpbmNyX25hdFxuZnVuY3Rpb24gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHhcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmNyX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgY2FycnkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wbGVtZW50X25hdFxuZnVuY3Rpb24gY29tcGxlbWVudF9uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAoLTEgPj4+IDApIC0gKG5hdC5kYXRhW29mcytpXSA+Pj4gMCk7XG4gIH1cbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vUHJvdmlkZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBkZWNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcytpXSA+Pj4wKSAtIGJvcnJvdztcbiAgICBuYXQuZGF0YVtvZnMraV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChib3Jyb3cgPT0gMSkgPyAwIDogMTtcbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogc3ViX25hdFxuLy9SZXF1aXJlczogZGVjcl9uYXRcbmZ1bmN0aW9uIHN1Yl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGJvcnJvdyA9IChjYXJyeV9pbiA9PSAxKSA/IDAgOiAxO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIC0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAtIGJvcnJvdztcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCAoYm9ycm93PT0xKT8wOjEpO1xufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzW29mczNdXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IG11bHRfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBhZGRfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGEgPSAobmF0My5kYXRhW29mczNdID4+PiAwKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4MSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICogKGEgJiAweDAwMDBGRkZGKSArIGNhcnJ5O1xuICAgIHZhciB4MiA9IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSA+Pj4gMTYpO1xuICAgIGNhcnJ5ID0gTWF0aC5mbG9vcih4Mi82NTUzNik7XG4gICAgdmFyIHgzID0geDEgKyAoeDIgJSA2NTUzNikgKiA2NTUzNjtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHgzO1xuICAgIGNhcnJ5ICs9IE1hdGguZmxvb3IoeDMvNDI5NDk2NzI5Nik7XG4gIH1cblxuICBpZihsZW4yIDwgbGVuMSAmJiBjYXJyeSkge1xuICAgIHJldHVybiBhZGRfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBuYXRfb2ZfYXJyYXkoW2NhcnJ5XSksIDAsIDEsIDApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjYXJyeTtcbiAgfVxufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzXG4vLyBsZW4xID49IGxlbjIgKyBsZW4zLlxuLy9Qcm92aWRlczogbXVsdF9uYXRcbi8vUmVxdWlyZXM6IG11bHRfZGlnaXRfbmF0XG5mdW5jdGlvbiBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzLCBsZW4zKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4zOyBpKyspIHtcbiAgICBjYXJyeSArPSBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxK2ksIGxlbjEtaSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMytpKTtcbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIG5hdDEgPSAyICogbmF0MSArIG5hdDIgKiBuYXQyXG4vLyBsZW4xID49IDIgKiBsZW4yXG4vL1Byb3ZpZGVzOiBzcXVhcmVfbmF0XG4vL1JlcXVpcmVzOiBtdWx0X25hdCwgYWRkX25hdFxuZnVuY3Rpb24gc3F1YXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGNhcnJ5ICs9IGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0MSwgb2ZzMSwgbGVuMSwgMCk7XG4gIGNhcnJ5ICs9IG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpO1xuICByZXR1cm4gY2Fycnk7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9sZWZ0X25hdFxuZnVuY3Rpb24gc2hpZnRfbGVmdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbmJpdHMpIHtcbiAgaWYobmJpdHMgPT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMTsgaSsrKSB7XG4gICAgdmFyIGEgPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPDwgbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA+Pj4gKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vLyBBc3N1bWluZyBjID4gYSwgcmV0dXJucyBbcXVvdGllbnQsIHJlbWFpbmRlcl0gb2YgKGE8PDMyICsgYikvY1xuLy9Qcm92aWRlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2hlbHBlcihhLCBiLCBjKSB7XG4gIHZhciB4ID0gYSAqIDY1NTM2ICsgKGI+Pj4xNik7XG4gIHZhciB5ID0gTWF0aC5mbG9vcih4L2MpICogNjU1MzY7XG4gIHZhciB6ID0gKHggJSBjKSAqIDY1NTM2O1xuICB2YXIgdyA9IHogKyAoYiAmIDB4MDAwMEZGRkYpO1xuICByZXR1cm4gW3kgKyBNYXRoLmZsb29yKHcvYyksIHcgJSBjXTtcbn1cblxuLy8gbmF0MVtvZnMxK2xlbl0gPCBuYXQyW29mczJdXG4vL1Byb3ZpZGVzOiBkaXZfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfZGlnaXRfbmF0KG5hdHEsIG9mc3EsIG5hdHIsIG9mc3IsIG5hdDEsIG9mczEsIGxlbiwgbmF0Miwgb2ZzMikge1xuICB2YXIgcmVtID0gKG5hdDEuZGF0YVtvZnMxK2xlbi0xXSA+Pj4wKTtcbiAgLy8gbmF0cVtvZnNxK2xlbi0xXSBpcyBndWFyYW50ZWVkIHRvIGJlIHplcm8gKGR1ZSB0byB0aGUgTVNEIHJlcXVpcmVtZW50KSxcbiAgLy8gYW5kIHNob3VsZCBub3QgYmUgd3JpdHRlbiB0by5cbiAgZm9yKHZhciBpID0gbGVuLTI7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHggPSBkaXZfaGVscGVyKHJlbSwgKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDIuZGF0YVtvZnMyXSA+Pj4gMCkpO1xuICAgIG5hdHEuZGF0YVtvZnNxK2ldID0geFswXTtcbiAgICByZW0gPSB4WzFdO1xuICB9XG4gIG5hdHIuZGF0YVtvZnNyXSA9IHJlbTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIG5hdDFbbmF0MjpdIDo9IG5hdDEgLyBuYXQyXG4vLyBuYXQxWzpuYXQyXSA6PSBuYXQxICUgbmF0MlxuLy8gbGVuMSA+IGxlbjIsIG5hdDJbb2ZzMitsZW4yLTFdID4gbmF0MVtvZnMxK2xlbjEtMV1cbi8vUHJvdmlkZXM6IGRpdl9uYXRcbi8vUmVxdWlyZXM6IGRpdl9kaWdpdF9uYXQsIGRpdl9oZWxwZXIsIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdCwgc2hpZnRfbGVmdF9uYXQsIHNoaWZ0X3JpZ2h0X25hdCwgY3JlYXRlX25hdCwgc2V0X3RvX3plcm9fbmF0LCBtdWx0X2RpZ2l0X25hdCwgc3ViX25hdCwgY29tcGFyZV9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gZGl2X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIGlmKGxlbjIgPT0gMSkge1xuICAgIGRpdl9kaWdpdF9uYXQobmF0MSwgb2ZzMSsxLCBuYXQxLCBvZnMxLCBuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciBzID0gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdDIsIG9mczIrbGVuMi0xKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG5cbiAgdmFyIGQgPSAobmF0Mi5kYXRhW29mczIrbGVuMi0xXSA+Pj4gMCkgKyAxO1xuICB2YXIgYSA9IGNyZWF0ZV9uYXQobGVuMisxKTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IGxlbjI7IGktLSkge1xuICAgIC8vIERlY2VudCBsb3dlciBib3VuZCBvbiBxdW9cbiAgICB2YXIgcXVvID0gZCA9PSA0Mjk0OTY3Mjk2ID8gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA6IGRpdl9oZWxwZXIoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDEuZGF0YVtvZnMxK2ktMV0gPj4+MCksIGQpWzBdO1xuICAgIHNldF90b196ZXJvX25hdChhLCAwLCBsZW4yKzEpO1xuICAgIG11bHRfZGlnaXRfbmF0KGEsIDAsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFtxdW9dKSwgMCk7XG4gICAgc3ViX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMisxLCBhLCAwLCBsZW4yKzEsIDEpO1xuXG4gICAgd2hpbGUgKG5hdDEuZGF0YVtvZnMxK2ldICE9IDAgfHwgY29tcGFyZV9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpID49IDApIHtcbiAgICAgIHF1byA9IHF1byArIDE7XG4gICAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIG5hdDIsIG9mczIsIGxlbjIsIDEpO1xuICAgIH1cblxuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gcXVvO1xuICB9XG5cbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gc2hpZnQgcmVtYWluZGVyXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHJlc3RvcmVcbiAgcmV0dXJuIDA7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9yaWdodF9uYXRcbmZ1bmN0aW9uIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IGxlbjEtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgYSA9IG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPj4+IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPDwgKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfZGlnaXRzX25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA+IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIDE7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA8IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRcbi8vUmVxdWlyZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBhID0gbnVtX2RpZ2l0c19uYXQobmF0MSwgb2ZzMSwgbGVuMSk7XG4gIHZhciBiID0gbnVtX2RpZ2l0c19uYXQobmF0Miwgb2ZzMiwgbGVuMik7XG4gIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgZm9yKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgPiAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApKSByZXR1cm4gMTtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA8IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAtMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRfcmVhbFxuLy9SZXF1aXJlczogY29tcGFyZV9uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0X3JlYWwobmF0MSxuYXQyKXtcbiAgcmV0dXJuIGNvbXBhcmVfbmF0KG5hdDEsMCxuYXQxLmRhdGEubGVuZ3RoLG5hdDIsMCxuYXQyLmRhdGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogbGFuZF9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxhbmRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdICY9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGxvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gfD0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbHhvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGx4b3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIF49IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogc2VyaWFsaXplX25hdFxuZnVuY3Rpb24gc2VyaWFsaXplX25hdCh3cml0ZXIsIG5hdCwgc3ope1xuICB2YXIgbGVuID0gbmF0LmRhdGEubGVuZ3RoO1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgd3JpdGVyLndyaXRlKDMyLCBuYXQuZGF0YVtpXSk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICBzelsxXSA9IGxlbiAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGRlc2VyaWFsaXplX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGRlc2VyaWFsaXplX25hdChyZWFkZXIsIHN6KXtcbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBuYXQgPSBuZXcgTWxOYXQobGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBuYXQuZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICByZXR1cm4gbmF0O1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZVxudmFyIGNhbWxfZ3Jfc3RhdGU7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2dldCgpIHtcbiAgaWYoY2FtbF9ncl9zdGF0ZSkge1xuICAgIHJldHVybiBjYW1sX2dyX3N0YXRlO1xuICB9XG4gIHRocm93IFswLGNhbWxfbmFtZWRfdmFsdWUoXCJHcmFwaGljcy5HcmFwaGljX2ZhaWx1cmVcIiksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJOb3QgaW5pdGlhbGl6ZWRcIildXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZSxjYW1sX2dyX3N0YXRlX2luaXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCkge1xuICBjYW1sX2dyX3N0YXRlPWN0eDtcbiAgY2FtbF9ncl9zdGF0ZV9pbml0KClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9vcGVuX2dyYXBoKGluZm8pe1xuICB2YXIgZyA9IGdsb2JhbFRoaXM7XG4gIHZhciBpbmZvID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoaW5mbyk7XG4gIGZ1bmN0aW9uIGdldChuYW1lKXtcbiAgICB2YXIgcmVzID0gaW5mby5tYXRjaChcIihefCwpICpcIituYW1lK1wiICo9ICooW2EtekEtWjAtOV9dKykgKigsfCQpXCIpO1xuICAgIGlmKHJlcykgcmV0dXJuIHJlc1syXTtcbiAgfVxuICB2YXIgc3BlY3MgPSBbXTtcbiAgaWYoIShpbmZvPT1cIlwiKSkgc3BlY3MucHVzaChpbmZvKTtcbiAgdmFyIHRhcmdldCA9IGdldChcInRhcmdldFwiKTtcbiAgaWYoIXRhcmdldCkgdGFyZ2V0PVwiXCI7XG4gIHZhciBzdGF0dXMgPSBnZXQoXCJzdGF0dXNcIik7XG4gIGlmKCFzdGF0dXMpIHNwZWNzLnB1c2goXCJzdGF0dXM9MVwiKVxuXG4gIHZhciB3ID0gZ2V0KFwid2lkdGhcIik7XG4gIHcgPSB3P3BhcnNlSW50KHcpOjIwMDtcbiAgc3BlY3MucHVzaChcIndpZHRoPVwiK3cpO1xuXG4gIHZhciBoID0gZ2V0KFwiaGVpZ2h0XCIpO1xuICBoID0gaD9wYXJzZUludChoKToyMDA7XG4gIHNwZWNzLnB1c2goXCJoZWlnaHQ9XCIraCk7XG5cbiAgdmFyIHdpbiA9IGcub3BlbihcImFib3V0OmJsYW5rXCIsdGFyZ2V0LHNwZWNzLmpvaW4oXCIsXCIpKTtcbiAgaWYoIXdpbikge2NhbWxfZmFpbHdpdGgoXCJHcmFwaGljcy5vcGVuX2dyYXBoOiBjYW5ub3Qgb3BlbiB0aGUgd2luZG93XCIpfVxuICB2YXIgZG9jID0gd2luLmRvY3VtZW50O1xuICB2YXIgY2FudmFzID0gZG9jLmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGNhbnZhcy53aWR0aCA9IHc7XG4gIGNhbnZhcy5oZWlnaHQgPSBoO1xuICB2YXIgY3R4ID0gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCk7XG4gIGN0eC5zZXRfdGl0bGUgPSBmdW5jdGlvbiAodGl0bGUpIHtcbiAgICBkb2MudGl0bGUgPSB0aXRsZTtcbiAgfTtcbiAgY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KTtcbiAgdmFyIGJvZHkgPSBkb2MuYm9keTtcbiAgYm9keS5zdHlsZS5tYXJnaW4gPSBcIjBweFwiO1xuICBib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2luaXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yLGNhbWxfZ3JfbW92ZXRvLGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aCxjYW1sX2dyX3NldF90ZXh0X3NpemUsY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2luaXQoKXtcbiAgY2FtbF9ncl9tb3ZldG8oY2FtbF9ncl9zdGF0ZS54LGNhbWxfZ3Jfc3RhdGUueSk7XG4gIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyhjYW1sX2dyX3N0YXRlLndpZHRoLGNhbWxfZ3Jfc3RhdGUuaGVpZ2h0KTtcbiAgY2FtbF9ncl9zZXRfbGluZV93aWR0aChjYW1sX2dyX3N0YXRlLmxpbmVfd2lkdGgpO1xuICBjYW1sX2dyX3NldF90ZXh0X3NpemUoY2FtbF9ncl9zdGF0ZS50ZXh0X3NpemUpO1xuICBjYW1sX2dyX3NldF9mb250KGNhbWxfZ3Jfc3RhdGUuZm9udCk7XG4gIGNhbWxfZ3Jfc2V0X2NvbG9yKGNhbWxfZ3Jfc3RhdGUuY29sb3IpO1xuICBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUoY2FtbF9ncl9zdGF0ZS50aXRsZSk7XG4gIC8vY2FtbF9ncl9yZXNpemVfd2luZG93IG1pZ2h0IHJlc2V0IHNvbWUgY2FudmFzJyBwcm9wZXJ0aWVzXG4gIGNhbWxfZ3Jfc3RhdGUuY29udGV4dC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpe1xuICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICBjYW52YXMgOiBjYW52YXMsXG4gICAgeCA6IDAsXG4gICAgeSA6IDAsXG4gICAgd2lkdGggOiB3LFxuICAgIGhlaWdodCA6IGgsXG4gICAgbGluZV93aWR0aCA6IDEsXG4gICAgZm9udCA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJmaXhlZFwiKSxcbiAgICB0ZXh0X3NpemUgOiAyNixcbiAgICBjb2xvciA6IDB4MDAwMDAwLFxuICAgIHRpdGxlIDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKVxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RvY19vZl9zdGF0ZVxuZnVuY3Rpb24gY2FtbF9ncl9kb2Nfb2Zfc3RhdGUoc3RhdGUpIHtcbiAgaWYoc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQpXG4gICAgcmV0dXJuIHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gMDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUobmFtZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50aXRsZSA9IG5hbWU7XG4gIHZhciBqc25hbWUgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYocy5zZXRfdGl0bGUpIHMuc2V0X3RpdGxlKGpzbmFtZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3codyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpXG4gIHMud2lkdGggPSB3O1xuICBzLmhlaWdodCA9IGg7XG4gIHMuY2FudmFzLndpZHRoID0gdztcbiAgcy5jYW52YXMuaGVpZ2h0ID0gaDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xlYXJfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NsZWFyX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSBzLndpZHRoO1xuICBzLmNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgLy8gIHMuY29udGV4dC5zdHJva2VSZWN0ICgwLiwgMC4sIHMud2lkdGgsIHMuaGVpZ2h0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy53aWR0aDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5oZWlnaHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9jb2xvcihjb2xvcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgZnVuY3Rpb24gY29udmVydChudW1iZXIpIHtcbiAgICB2YXIgc3RyID0gJycgKyBudW1iZXIudG9TdHJpbmcoMTYpO1xuICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgMikgc3RyID0gJzAnICsgc3RyO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgdmFyXG4gIHIgPSAoY29sb3IgPj4gMTYpICYgMHhmZixcbiAgZyA9IChjb2xvciA+PiA4KSAgJiAweGZmLFxuICBiID0gKGNvbG9yID4+IDApICAmIDB4ZmY7XG4gIHMuY29sb3I9Y29sb3I7XG4gIHZhciBjX3N0ciA9ICcjJyArIGNvbnZlcnQocikgKyBjb252ZXJ0KGcpICsgY29udmVydChiKTtcbiAgcy5jb250ZXh0LmZpbGxTdHlsZSA9ICAgY19zdHI7XG4gIHMuY29udGV4dC5zdHJva2VTdHlsZSA9IGNfc3RyO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcGxvdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcGxvdCh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgdmFyIGNvbG9yID0gcy5jb2xvcjtcbiAgZFswXSA9IChjb2xvciA+PiAxNikgJiAweGZmOyAvL3JcbiAgZFsxXSA9IChjb2xvciA+PiA4KSAgJiAweGZmLCAvL2dcbiAgZFsyXSA9IChjb2xvciA+PiAwKSAgJiAweGZmOyAvL2JcbiAgZFszXSA9IDB4RkY7IC8vYVxuICBzLng9eDtcbiAgcy55PXk7XG4gIHMuY29udGV4dC5wdXRJbWFnZURhdGEoaW0seCxzLmhlaWdodCAtIHkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9wb2ludF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcG9pbnRfY29sb3IoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0geSwxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHJldHVybiAoZFswXSA8PCAxNikgKyAoZFsxXSA8PCA4KSArIGRbMl07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21vdmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbW92ZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnhcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy55XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2xpbmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbGluZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMuY29udGV4dC5saW5lVG8oeCxzLmhlaWdodCAtIHkpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5zdHJva2VSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2FyY19hdXgoY3R4LGN4LGN5LHJ5LHJ4LGExLGEyKXtcbiAgd2hpbGUoYTE+YTIpIGEyKz0zNjA7XG4gIGExIC89IDE4MDtcbiAgYTIgLz0gMTgwO1xuICB2YXIgcm90ID0gMCx4UG9zLHlQb3MseFBvc19wcmV2LHlQb3NfcHJldjtcbiAgdmFyIHNwYWNlID0gMjtcbiAgdmFyIG51bSA9ICgoKGEyIC0gYTEpICogTWF0aC5QSSAqICgocngrcnkpLzIpKSAvIHNwYWNlKSB8IDA7XG4gIHZhciBkZWx0YSA9IChhMiAtIGExKSAqIE1hdGguUEkgLyBudW07XG4gIHZhciBpID0gYTEgKiBNYXRoLlBJO1xuICBmb3IgKHZhciBqPTA7ajw9bnVtO2orKyl7XG4gICAgeFBvcyA9IGN4IC0gKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB4UG9zID0geFBvcy50b0ZpeGVkKDIpO1xuICAgIHlQb3MgPSBjeSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeVBvcyA9IHlQb3MudG9GaXhlZCgyKTtcbiAgICBpZiAoaj09MCkge1xuICAgICAgY3R4Lm1vdmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9IGVsc2UgaWYgKHhQb3NfcHJldiE9eFBvcyB8fCB5UG9zX3ByZXYhPXlQb3Mpe1xuICAgICAgY3R4LmxpbmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9XG4gICAgeFBvc19wcmV2PXhQb3M7XG4gICAgeVBvc19wcmV2PXlQb3M7XG4gICAgaS09IGRlbHRhOy8vY2N3XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9saW5lX3dpZHRoKHcpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMubGluZV93aWR0aCA9IHc7XG4gIHMuY29udGV4dC5saW5lV2lkdGggPSB3XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5maWxsUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcG9seVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9wb2x5KGFyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIGZvcih2YXIgaSA9IDI7IGkgPCBhci5sZW5ndGg7IGkrKylcbiAgICBzLmNvbnRleHQubGluZVRvKGFyW2ldWzFdLHMuaGVpZ2h0IC0gYXJbaV1bMl0pO1xuICBzLmNvbnRleHQubGluZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cihzdHIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBtID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KHN0cik7XG4gIHZhciBkeCA9IG0ud2lkdGg7XG4gIHMuY29udGV4dC5maWxsVGV4dChzdHIscy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy54ICs9IGR4IHwgMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfY2hhcihjKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyaW5nKHN0cil7XG4gIGNhbWxfZ3JfZHJhd19zdHIoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3RyKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2ZvbnQoZil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5mb250ID0gZjtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShzaXplKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRleHRfc2l6ZSA9IHNpemU7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfdGV4dF9zaXplKHR4dCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIHcgPSBzLmNvbnRleHQubWVhc3VyZVRleHQoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcodHh0KSkud2lkdGg7XG4gIHJldHVybiBbMCx3LHMudGV4dF9zaXplXTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21ha2VfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21ha2VfaW1hZ2UoYXJyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaCA9IGFyci5sZW5ndGggLSAxIDtcbiAgdmFyIHcgPSBhcnJbMV0ubGVuZ3RoIC0gMTtcbiAgdmFyIGltID0gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh3LGgpO1xuICBmb3IodmFyIGk9MDtpPGg7aSsrKXtcbiAgICBmb3IodmFyIGo9MDtqPHc7aisrKXtcbiAgICAgIHZhciBjID0gYXJyW2krMV1baisxXTtcbiAgICAgIHZhciBvID0gaSoodyo0KSArIChqICogNCk7XG4gICAgICBpZihjID09IC0xKSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gYyA+PiAxNiAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gYyA+PiAgOCAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gYyA+PiAgMCAmIDBYZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMHhmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGltXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2R1bXBfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2R1bXBfaW1hZ2UoaW0pe1xuICB2YXIgZGF0YSA9IFswXVxuICBmb3IodmFyIGk9MDsgaTxpbS5oZWlnaHQ7aSsrKXtcbiAgICBkYXRhW2krMV0gPSBbMF1cbiAgICBmb3IodmFyIGo9MDsgajxpbS53aWR0aDtqKyspe1xuICAgICAgdmFyIG8gPSBpKihpbS53aWR0aCo0KSArIChqICogNCksXG4gICAgICAgICAgciA9IGltLmRhdGFbbyswXSxcbiAgICAgICAgICBnID0gaW0uZGF0YVtvKzFdLFxuICAgICAgICAgIGIgPSBpbS5kYXRhW28rMl07XG4gICAgICBkYXRhW2krMV1baisxXSA9IChyIDw8IDE2KSArIChnIDw8IDgpICsgYlxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgaWYoIWltLmltYWdlKSB7XG4gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gICAgY2FudmFzLmdldENvbnRleHQoXCIyZFwiKS5wdXRJbWFnZURhdGEoaW0sMCwwKTtcbiAgICB2YXIgaW1hZ2UgPSBuZXcgZ2xvYmFsVGhpcy5JbWFnZSgpO1xuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICAgICAgaW0uaW1hZ2UgPSBpbWFnZTtcbiAgICB9XG4gICAgaW1hZ2Uuc3JjID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcbiAgfSBlbHNlIHtcbiAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltLmltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3JlYXRlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jcmVhdGVfaW1hZ2UoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh4LHkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9ibGl0X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9ibGl0X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltMiA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHksaW0ud2lkdGgsaW0uaGVpZ2h0KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbTIuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgIGltLmRhdGFbaV0gPSBpbTIuZGF0YVtpXTtcbiAgICBpbS5kYXRhW2krMV0gPSBpbTIuZGF0YVtpKzFdO1xuICAgIGltLmRhdGFbaSsyXSA9IGltMi5kYXRhW2krMl07XG4gICAgaW0uZGF0YVtpKzNdID0gaW0yLmRhdGFbaSszXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9faGFuZGxlclxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19oYW5kbGVyKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19zaWduYWwoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2FpdF9ldmVudFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93YWl0X2V2ZW50KF9ldmwpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93YWl0X2V2ZW50IG5vdCBJbXBsZW1lbnRlZDogdXNlIEdyYXBoaWNzX2pzIGluc3RlYWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3luY2hyb25pemVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3luY2hyb25pemUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9zeW5jaHJvbml6ZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3JlbWVtYmVyX21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVtZW1iZXJfbW9kZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3JlbWVtYmVyX21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kaXNwbGF5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfZGlzcGxheV9tb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9kaXNwbGF5X21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dpbmRvd19pZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93aW5kb3dfaWQoYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93aW5kb3dfaWQgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fc3Vid2luZG93KGEsYixjLGQpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3coYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9jb25zdGFudHNcbnZhciBjYW1sX21hcnNoYWxfY29uc3RhbnRzID0ge1xuICBQUkVGSVhfU01BTExfQkxPQ0s6ICAgICAgICAgMHg4MCxcbiAgUFJFRklYX1NNQUxMX0lOVDogICAgICAgICAgIDB4NDAsXG4gIFBSRUZJWF9TTUFMTF9TVFJJTkc6ICAgICAgICAweDIwLFxuICBDT0RFX0lOVDg6ICAgICAgICAgICAgICAgICAgMHgwMCxcbiAgQ09ERV9JTlQxNjogICAgICAgICAgICAgICAgIDB4MDEsXG4gIENPREVfSU5UMzI6ICAgICAgICAgICAgICAgICAweDAyLFxuICBDT0RFX0lOVDY0OiAgICAgICAgICAgICAgICAgMHgwMyxcbiAgQ09ERV9TSEFSRUQ4OiAgICAgICAgICAgICAgIDB4MDQsXG4gIENPREVfU0hBUkVEMTY6ICAgICAgICAgICAgICAweDA1LFxuICBDT0RFX1NIQVJFRDMyOiAgICAgICAgICAgICAgMHgwNixcbiAgQ09ERV9CTE9DSzMyOiAgICAgICAgICAgICAgIDB4MDgsXG4gIENPREVfQkxPQ0s2NDogICAgICAgICAgICAgICAweDEzLFxuICBDT0RFX1NUUklORzg6ICAgICAgICAgICAgICAgMHgwOSxcbiAgQ09ERV9TVFJJTkczMjogICAgICAgICAgICAgIDB4MEEsXG4gIENPREVfRE9VQkxFX0JJRzogICAgICAgICAgICAweDBCLFxuICBDT0RFX0RPVUJMRV9MSVRUTEU6ICAgICAgICAgMHgwQyxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0JJRzogICAgIDB4MEQsXG4gIENPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6ICAweDBFLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzogICAgMHgwRixcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6IDB4MDcsXG4gIENPREVfQ09ERVBPSU5URVI6ICAgICAgICAgICAweDEwLFxuICBDT0RFX0lORklYUE9JTlRFUjogICAgICAgICAgMHgxMSxcbiAgQ09ERV9DVVNUT006ICAgICAgICAgICAgICAgIDB4MTIsXG4gIENPREVfQ1VTVE9NX0xFTjogICAgICAgICAgICAweDE4LFxuICBDT0RFX0NVU1RPTV9GSVhFRDogICAgICAgICAgMHgxOVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBNbFN0cmluZ1JlYWRlciAocywgaSkgeyB0aGlzLnMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpOyB0aGlzLmkgPSBpOyB9XG5NbFN0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCA+PiAxNikgfCBzLmNoYXJDb2RlQXQoaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5zLnN1YnN0cmluZyhpLCBpICsgbGVuKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogQmlnU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheSwgY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gQmlnU3RyaW5nUmVhZGVyIChicywgaSkgeyB0aGlzLnMgPSBiczsgdGhpcy5pID0gaTsgfVxuQmlnU3RyaW5nUmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbWxfYmFfZ2V0XzEodGhpcy5zLHRoaXMuaSsrKTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbWxfYmFfZ2V0XzEodGhpcy5zLHRoaXMuaSsrKSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgOCkgfCBjYW1sX2JhX2dldF8xKHMsaSArIDEpXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpIDw8IDI0ID4+IDE2KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSk7XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpICAgICAgICAgKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgICA8PCAyNCkgfCAoY2FtbF9iYV9nZXRfMShzLGkrMSkgPDwgMTYpIHxcbiAgICAgIChjYW1sX2JhX2dldF8xKHMsaSsyKSA8PCA4KSAgfCBjYW1sX2JhX2dldF8xKHMsaSszKTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdmFyIGFyciA9IG5ldyBBcnJheShsZW4pXG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKXtcbiAgICAgIGFycltqXSA9IGNhbWxfYmFfZ2V0XzEodGhpcy5zLCBpK2opO1xuICAgIH1cbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICB9XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoY2FtbF9pbnQ2NF9vZl9ieXRlcyAoYSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKHMsIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocyksIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gIHNpemVbMF0gPSA4O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyAodCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tYXJzaGFsKHdyaXRlciwgdiwgc2l6ZXMpIHtcbiAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzICh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSAoOCwgYltpXSk7XG4gIHNpemVzWzBdID0gODsgc2l6ZXNbMV0gPSA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX3VubWFyc2hhbFxuZnVuY3Rpb24gY2FtbF9pbnQzMl91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1ICgpKSB7XG4gIGNhc2UgMTpcbiAgICBzaXplWzBdID0gNDtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gIGNhc2UgMjpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IG5hdGl2ZSBpbnRlZ2VyIHZhbHVlIHRvbyBsYXJnZVwiKTtcbiAgZGVmYXVsdDogY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG5hdGl2ZSBpbnRlZ2VyXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF91bm1hcnNoYWwsIGNhbWxfaW50NjRfbWFyc2hhbCwgY2FtbF9pbnQ2NF9jb21wYXJlLCBjYW1sX2ludDY0X2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsLCBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2VyaWFsaXplLCBjYW1sX2JhX2Rlc2VyaWFsaXplLCBjYW1sX2JhX2NvbXBhcmUsIGNhbWxfYmFfaGFzaFxudmFyIGNhbWxfY3VzdG9tX29wcyA9XG4gICAge1wiX2pcIjoge1xuICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDY0X3VubWFyc2hhbCxcbiAgICAgIHNlcmlhbGl6ZSAgOiBjYW1sX2ludDY0X21hcnNoYWwsXG4gICAgICBmaXhlZF9sZW5ndGggOiA4LFxuICAgICAgY29tcGFyZSA6IGNhbWxfaW50NjRfY29tcGFyZSxcbiAgICAgIGhhc2ggOiBjYW1sX2ludDY0X2hhc2hcbiAgICB9LFxuICAgICBcIl9pXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50MzJfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX25cIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycmF5XCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnJheVwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9LFxuICAgICBcIl9iaWdhcnIwMlwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyMDJcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfVxuICAgIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcblxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcykge1xuICB2YXIgX21hZ2ljID0gcmVhZGVyLnJlYWQzMnUgKClcbiAgdmFyIF9ibG9ja19sZW4gPSByZWFkZXIucmVhZDMydSAoKTtcbiAgdmFyIG51bV9vYmplY3RzID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gIHZhciBfc2l6ZV8zMiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICB2YXIgX3NpemVfNjQgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gKG51bV9vYmplY3RzID4gMCk/W106bnVsbDtcbiAgdmFyIG9ial9jb3VudGVyID0gMDtcbiAgZnVuY3Rpb24gaW50ZXJuX3JlYyAoKSB7XG4gICAgdmFyIGNvZGUgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgIGlmIChjb2RlID49IDB4NDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovKSB7XG4gICAgICBpZiAoY29kZSA+PSAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovKSB7XG4gICAgICAgIHZhciB0YWcgPSBjb2RlICYgMHhGO1xuICAgICAgICB2YXIgc2l6ZSA9IChjb2RlID4+IDQpICYgMHg3O1xuICAgICAgICB2YXIgdiA9IFt0YWddO1xuICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZVxuICAgICAgICByZXR1cm4gKGNvZGUgJiAweDNGKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNvZGUgPj0gMHgyMC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcgKi8pIHtcbiAgICAgICAgdmFyIGxlbiA9IGNvZGUgJiAweDFGO1xuICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoKGNvZGUpIHtcbiAgICAgICAgY2FzZSAweDAwOiAvL2NzdC5DT0RFX0lOVDg6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkOHMgKCk7XG4gICAgICAgIGNhc2UgMHgwMTogLy9jc3QuQ09ERV9JTlQxNjpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQxNnMgKCk7XG4gICAgICAgIGNhc2UgMHgwMjogLy9jc3QuQ09ERV9JTlQzMjpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gICAgICAgIGNhc2UgMHgwMzogLy9jc3QuQ09ERV9JTlQ2NDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGludGVnZXIgdG9vIGxhcmdlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MDQ6IC8vY3N0LkNPREVfU0hBUkVEODpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlciAtIG9mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNTogLy9jc3QuQ09ERV9TSEFSRUQxNjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQxNnUgKCk7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIgLSBvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDY6IC8vY3N0LkNPREVfU0hBUkVEMzI6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyIC0gb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA4OiAvL2NzdC5DT0RFX0JMT0NLMzI6XG4gICAgICAgICAgdmFyIGhlYWRlciA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgIHZhciB0YWcgPSBoZWFkZXIgJiAweEZGO1xuICAgICAgICAgIHZhciBzaXplID0gaGVhZGVyID4+IDEwO1xuICAgICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIHY7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgxMzogLy9jc3QuQ09ERV9CTE9DSzY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGRhdGEgYmxvY2sgdG9vIGxhcmdlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MDk6IC8vY3N0LkNPREVfU1RSSU5HODpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEE6IC8vY3N0LkNPREVfU1RSSU5HMzI6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQzogLy9jc3QuQ09ERV9ET1VCTEVfTElUVExFOlxuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgODtpKyspIHRbNyAtIGldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBCOiAvL2NzdC5DT0RFX0RPVUJMRV9CSUc6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFtpXSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgdmFyIHYgPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRTogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbNyAtIGpdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBEOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MDc6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbNyAtIGpdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBGOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2IFtpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEwOiAvL2NzdC5DT0RFX0NPREVQT0lOVEVSOlxuICAgICAgICBjYXNlIDB4MTE6IC8vY3N0LkNPREVfSU5GSVhQT0lOVEVSOlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGNvZGUgcG9pbnRlclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDEyOiAvL2NzdC5DT0RFX0NVU1RPTTpcbiAgICAgICAgY2FzZSAweDE4OiAvL2NzdC5DT0RFX0NVU1RPTV9MRU46XG4gICAgICAgIGNhc2UgMHgxOTogLy9jc3QuQ09ERV9DVVNUT01fRklYRUQ6XG4gICAgICAgICAgdmFyIGMsIHMgPSBcIlwiO1xuICAgICAgICAgIHdoaWxlICgoYyA9IHJlYWRlci5yZWFkOHUgKCkpICE9IDApIHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tzXTtcbiAgICAgICAgICB2YXIgZXhwZWN0ZWRfc2l6ZTtcbiAgICAgICAgICBpZighb3BzKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB1bmtub3duIGN1c3RvbSBibG9jayBpZGVudGlmaWVyXCIpO1xuICAgICAgICAgIHN3aXRjaChjb2RlKXtcbiAgICAgICAgICBjYXNlIDB4MTI6IC8vIGNzdC5DT0RFX0NVU1RPTSAoZGVwcmVjYXRlZClcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxOTogLy8gY3N0LkNPREVfQ1VTVE9NX0ZJWEVEXG4gICAgICAgICAgICBpZighb3BzLmZpeGVkX2xlbmd0aClcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBleHBlY3RlZCBhIGZpeGVkLXNpemUgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IG9wcy5maXhlZF9sZW5ndGg7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MTg6IC8vIGNzdC5DT0RFX0NVU1RPTV9MRU5cbiAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICAgIC8vIFNraXAgc2l6ZTY0XG4gICAgICAgICAgICByZWFkZXIucmVhZDMycygpOyByZWFkZXIucmVhZDMycygpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBvbGRfcG9zID0gcmVhZGVyLmk7XG4gICAgICAgICAgdmFyIHNpemUgPSBbMF07XG4gICAgICAgICAgdmFyIHYgPSBvcHMuZGVzZXJpYWxpemUocmVhZGVyLCBzaXplKTtcbiAgICAgICAgICBpZihleHBlY3RlZF9zaXplICE9IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBpZihleHBlY3RlZF9zaXplICE9IHNpemVbMF0pXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW5jb3JyZWN0IGxlbmd0aCBvZiBzZXJpYWxpemVkIGN1c3RvbSBibG9ja1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGlsbC1mb3JtZWQgbWVzc2FnZVwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB2YXIgcmVzID0gaW50ZXJuX3JlYyAoKTtcbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgc2l6ZSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2ID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIGQgPSB2Lmxlbmd0aDtcbiAgICBpZiAoZCA8IHNpemUpIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgdltkXSA9IGludGVybl9yZWMgKCk7XG4gIH1cbiAgaWYgKHR5cGVvZiBvZnMhPVwibnVtYmVyXCIpIG9mc1swXSA9IHJlYWRlci5pO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAocywgb2ZzKSB7XG4gIGZ1bmN0aW9uIGdldDMyKHMsaSkge1xuICAgIHJldHVybiAoY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkpIDw8IDI0KSB8XG4gICAgICAoY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkgKyAxKSA8PCAxNikgfFxuICAgICAgKGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgMikgPDwgOCkgfFxuICAgICAgY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkgKyAzKTtcbiAgfVxuICBpZiAoZ2V0MzIocywgb2ZzKSAhPSAoMHg4NDk1QTZCRXwwKSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiTWFyc2hhbC5kYXRhX3NpemU6IGJhZCBvYmplY3RcIik7XG4gIHJldHVybiAoZ2V0MzIocywgb2ZzICsgNCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBNbE9iamVjdFRhYmxlXG52YXIgTWxPYmplY3RUYWJsZTtcbmlmICh0eXBlb2YgZ2xvYmFsVGhpcy5XZWFrTWFwID09PSAndW5kZWZpbmVkJykge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgLyogcG9seWZpbGwgKHVzaW5nIGxpbmVhciBzZWFyY2gpICovXG4gICAgZnVuY3Rpb24gTmFpdmVMb29rdXAob2JqcykgeyB0aGlzLm9ianMgPSBvYmpzOyB9XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vYmpzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLm9ianNbaV0gPT09IHYpIHJldHVybiBpO1xuICAgICAgfVxuICAgIH07XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKCkge1xuICAgICAgLy8gRG8gbm90aGluZyBoZXJlLiBbTWxPYmplY3RUYWJsZS5zdG9yZV0gd2lsbCBwdXNoIHRvIFt0aGlzLm9ianNdIGRpcmVjdGx5LlxuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICAgIHRoaXMub2JqcyA9IFtdOyB0aGlzLmxvb2t1cCA9IG5ldyBOYWl2ZUxvb2t1cCh0aGlzLm9ianMpO1xuICAgIH07XG4gIH0oKTtcbn1cbmVsc2Uge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgZ2xvYmFsVGhpcy5XZWFrTWFwKCk7XG4gIH07XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnN0b3JlID0gZnVuY3Rpb24odikge1xuICB0aGlzLmxvb2t1cC5zZXQodiwgdGhpcy5vYmpzLmxlbmd0aCk7XG4gIHRoaXMub2Jqcy5wdXNoKHYpO1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5yZWNhbGwgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBpID0gdGhpcy5sb29rdXAuZ2V0KHYpO1xuICByZXR1cm4gKGkgPT09IHVuZGVmaW5lZClcbiAgICA/IHVuZGVmaW5lZCA6IHRoaXMub2Jqcy5sZW5ndGggLSBpOyAgIC8qIGluZGV4IGlzIHJlbGF0aXZlICovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGVnYWN5X2N1c3RvbV9jb2RlXG4vL1ZlcnNpb246ID49IDQuMDhcbnZhciBjYW1sX2xlZ2FjeV9jdXN0b21fY29kZSA9IGZhbHNlXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGVnYWN5X2N1c3RvbV9jb2RlXG4vL1ZlcnNpb246IDwgNC4wOFxudmFyIGNhbWxfbGVnYWN5X2N1c3RvbV9jb2RlID0gdHJ1ZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogTWxPYmplY3RUYWJsZSwgY2FtbF9saXN0X3RvX2pzX2FycmF5LCBjYW1sX2xlZ2FjeV9jdXN0b21fY29kZSwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xudmFyIGNhbWxfb3V0cHV0X3ZhbCA9IGZ1bmN0aW9uICgpe1xuICBmdW5jdGlvbiBXcml0ZXIgKCkgeyB0aGlzLmNodW5rID0gW107IH1cbiAgV3JpdGVyLnByb3RvdHlwZSA9IHtcbiAgICBjaHVua19pZHg6MjAsIGJsb2NrX2xlbjowLCBvYmpfY291bnRlcjowLCBzaXplXzMyOjAsIHNpemVfNjQ6MCxcbiAgICB3cml0ZTpmdW5jdGlvbiAoc2l6ZSwgdmFsdWUpIHtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2F0OmZ1bmN0aW9uIChwb3MsIHNpemUsIHZhbHVlKSB7XG4gICAgICB2YXIgcG9zID0gcG9zO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbcG9zKytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2NvZGU6ZnVuY3Rpb24gKHNpemUsIGNvZGUsIHZhbHVlKSB7XG4gICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gY29kZTtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX3NoYXJlZDpmdW5jdGlvbiAob2Zmc2V0KSB7XG4gICAgICBpZiAob2Zmc2V0IDwgKDEgPDwgOCkpIHRoaXMud3JpdGVfY29kZSg4LCAweDA0IC8qY3N0LkNPREVfU0hBUkVEOCovLCBvZmZzZXQpO1xuICAgICAgZWxzZSBpZiAob2Zmc2V0IDwgKDEgPDwgMTYpKSB0aGlzLndyaXRlX2NvZGUoMTYsIDB4MDUgLypjc3QuQ09ERV9TSEFSRUQxNiovLCBvZmZzZXQpO1xuICAgICAgZWxzZSB0aGlzLndyaXRlX2NvZGUoMzIsIDB4MDYgLypjc3QuQ09ERV9TSEFSRUQzMiovLCBvZmZzZXQpO1xuICAgIH0sXG4gICAgcG9zOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuY2h1bmtfaWR4IH0sXG4gICAgZmluYWxpemU6ZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5ibG9ja19sZW4gPSB0aGlzLmNodW5rX2lkeCAtIDIwO1xuICAgICAgdGhpcy5jaHVua19pZHggPSAwO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIDB4ODQ5NUE2QkUpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuYmxvY2tfbGVuKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLm9ial9jb3VudGVyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfMzIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV82NCk7XG4gICAgICByZXR1cm4gdGhpcy5jaHVuaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh2LCBmbGFncykge1xuICAgIGZsYWdzID0gY2FtbF9saXN0X3RvX2pzX2FycmF5KGZsYWdzKTtcblxuICAgIHZhciBub19zaGFyaW5nID0gKGZsYWdzLmluZGV4T2YoMCAvKk1hcnNoYWwuTm9fc2hhcmluZyovKSAhPT0gLTEpLFxuICAgICAgICBjbG9zdXJlcyA9ICAoZmxhZ3MuaW5kZXhPZigxIC8qTWFyc2hhbC5DbG9zdXJlcyovKSAhPT0gLTEpO1xuICAgIC8qIE1hcnNoYWwuQ29tcGF0XzMyIGlzIHJlZHVuZGFudCBzaW5jZSBpbnRlZ2VycyBhcmUgMzItYml0IGFueXdheSAqL1xuXG4gICAgaWYgKGNsb3N1cmVzKVxuICAgICAgZ2xvYmFsVGhpcy5jb25zb2xlLndhcm4oXCJpbiBjYW1sX291dHB1dF92YWw6IGZsYWcgTWFyc2hhbC5DbG9zdXJlcyBpcyBub3Qgc3VwcG9ydGVkLlwiKTtcblxuICAgIHZhciB3cml0ZXIgPSBuZXcgV3JpdGVyICgpO1xuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gbm9fc2hhcmluZyA/IG51bGwgOiBuZXcgTWxPYmplY3RUYWJsZSgpO1xuXG4gICAgZnVuY3Rpb24gbWVtbyh2KSB7XG4gICAgICBpZiAobm9fc2hhcmluZykgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGV4aXN0aW5nX29mZnNldCA9IGludGVybl9vYmpfdGFibGUucmVjYWxsKHYpO1xuICAgICAgaWYgKGV4aXN0aW5nX29mZnNldCkgeyB3cml0ZXIud3JpdGVfc2hhcmVkKGV4aXN0aW5nX29mZnNldCk7IHJldHVybiB0cnVlOyB9XG4gICAgICBlbHNlIHsgaW50ZXJuX29ial90YWJsZS5zdG9yZSh2KTsgcmV0dXJuIGZhbHNlOyB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZXJuX3JlYyAodikge1xuICAgICAgaWYgKHYuY2FtbF9jdXN0b20pIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIG5hbWUgPSB2LmNhbWxfY3VzdG9tO1xuICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW25hbWVdO1xuICAgICAgICB2YXIgc3pfMzJfNjQgPSBbMCwwXTtcbiAgICAgICAgaWYoIW9wcy5zZXJpYWxpemUpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQ3VzdG9tKVwiKTtcbiAgICAgICAgaWYoY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGUpIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTIgLypjc3QuQ09ERV9DVVNUT00qLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICB9IGVsc2UgaWYob3BzLmZpeGVkX2xlbmd0aCA9PSB1bmRlZmluZWQpe1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxOCAvKmNzdC5DT0RFX0NVU1RPTV9MRU4qLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgaGVhZGVyX3BvcyA9IHdyaXRlci5wb3MgKCk7XG4gICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcywgMzIsIHN6XzMyXzY0WzBdKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDQsIDMyLCAwKTsgLy8gemVyb1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgOCwgMzIsIHN6XzMyXzY0WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTkgLypjc3QuQ09ERV9DVVNUT01fRklYRUQqLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHdyaXRlci5wb3MoKTtcbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICAgIGlmIChvcHMuZml4ZWRfbGVuZ3RoICE9IHdyaXRlci5wb3MoKSAtIG9sZF9wb3MpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBpbmNvcnJlY3QgZml4ZWQgc2l6ZXMgc3BlY2lmaWVkIGJ5IFwiICsgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMiArICgoc3pfMzJfNjRbMF0gKyAzKSA+PiAyKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMiArICgoc3pfMzJfNjRbMV0gKyA3KSA+PiAzKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgICBpZiAodlswXSA9PSAyNTEpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQWJzdHJhY3QpXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEgJiYgbWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICBpZiAodlswXSA8IDE2ICYmIHYubGVuZ3RoIC0gMSA8IDgpXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovICsgdlswXSArICgodi5sZW5ndGggLSAxKTw8NCkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDggLypjc3QuQ09ERV9CTE9DSzMyKi8sICgodi5sZW5ndGgtMSkgPDwgMTApIHwgdlswXSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IHYubGVuZ3RoO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSB2Lmxlbmd0aDtcbiAgICAgICAgaWYgKHYubGVuZ3RoID4gMSkgc3RhY2sucHVzaCAodiwgMSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgICAgaWYoIShjYW1sX2lzX21sX2J5dGVzKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIikpKSkge1xuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IFtCeXRlcy50XSBjYW5ub3Qgc2FmZWx5IGJlIG1hcnNoYWxlZCB3aXRoIFstLWVuYWJsZSB1c2UtanMtc3RyaW5nXVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9ieXRlc19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICg4LCAweDA5Lypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoMzIsIDB4MEEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgbGVuO2krKylcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2ICE9ICh2fDApKXtcbiAgICAgICAgICB2YXIgdHlwZV9vZl92ID0gdHlwZW9mIHY7XG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBJZiBhIGZsb2F0IGhhcHBlbnMgdG8gYmUgYW4gaW50ZWdlciBpdCBpcyBzZXJpYWxpemVkIGFzIGFuIGludGVnZXJcbiAgICAgICAgICAvLyAoSnNfb2Zfb2NhbWwgY2Fubm90IHRlbGwgd2hldGhlciB0aGUgdHlwZSBvZiBhbiBpbnRlZ2VyIG51bWJlciBpc1xuICAgICAgICAgIC8vIGZsb2F0IG9yIGludGVnZXIuKSBUaGlzIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBjcmFzaGVzIHdoZW5cbiAgICAgICAgICAvLyB1bm1hcnNoYWxsaW5nIHVzaW5nIHRoZSBzdGFuZGFyZCBydW50aW1lLiBJdCBzZWVtcyBiZXR0ZXIgdG9cbiAgICAgICAgICAvLyBzeXN0ZW1hdGljYWxseSBmYWlsIG9uIG1hcnNoYWxsaW5nLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gICAgICAgICAgaWYodHlwZV9vZl92ICE9IFwibnVtYmVyXCIpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKFwiK3R5cGVfb2ZfditcIilcIik7XG4gICAgICAgICAgLy8gICAgICAgICAgdmFyIHQgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh2KSk7XG4gICAgICAgICAgLy8gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDBCIC8qY3N0LkNPREVfRE9VQkxFX0JJRyovKTtcbiAgICAgICAgICAvLyAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpPDg7IGkrKyl7d3JpdGVyLndyaXRlKDgsdFtpXSl9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodiA+PSAwICYmIHYgPCAweDQwKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAwWDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLyArIHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh2ID49IC0oMSA8PCA3KSAmJiB2IDwgKDEgPDwgNykpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSg4LCAweDAwIC8qY3N0LkNPREVfSU5UOCovLCB2KTtcbiAgICAgICAgICBlbHNlIGlmICh2ID49IC0oMSA8PCAxNSkgJiYgdiA8ICgxIDw8IDE1KSlcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDE2LCAweDAxIC8qY3N0LkNPREVfSU5UMTYqLywgdik7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDIgLypjc3QuQ09ERV9JTlQzMiovLCB2KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBleHRlcm5fcmVjICh2KTtcbiAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGkgPSBzdGFjay5wb3AgKCk7XG4gICAgICB2YXIgdiA9IHN0YWNrLnBvcCAoKTtcbiAgICAgIGlmIChpICsgMSA8IHYubGVuZ3RoKSBzdGFjay5wdXNoICh2LCBpICsgMSk7XG4gICAgICBleHRlcm5fcmVjICh2W2ldKTtcbiAgICB9XG4gICAgaWYgKGludGVybl9vYmpfdGFibGUpIHdyaXRlci5vYmpfY291bnRlciA9IGludGVybl9vYmpfdGFibGUub2Jqcy5sZW5ndGg7XG4gICAgd3JpdGVyLmZpbmFsaXplKCk7XG4gICAgcmV0dXJuIHdyaXRlci5jaHVuaztcbiAgfVxufSAoKTtcblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyAodiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2JsaXRfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciAocywgb2ZzLCBsZW4sIHYsIGZsYWdzKSB7XG4gIHZhciB0ID0gY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncyk7XG4gIGlmICh0Lmxlbmd0aCA+IGxlbikgY2FtbF9mYWlsd2l0aCAoXCJNYXJzaGFsLnRvX2J1ZmZlcjogYnVmZmVyIG92ZXJmbG93XCIpO1xuICBjYW1sX2JsaXRfYnl0ZXModCwgMCwgcywgb2ZzLCB0Lmxlbmd0aCk7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBJb1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jbG9zZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9zeXNfY2xvc2UoZmQpIHtcbiAgZGVsZXRlIGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2ZkXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RkX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX3N0ZF9vdXRwdXQoY2hhbmlkLHMpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIHN0ciA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocyk7XG4gIHZhciBzbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHN0cik7XG4gIGNoYW4uZmlsZS53cml0ZShjaGFuLm9mZnNldCwgc3RyLCAwLCBzbGVuKTtcbiAgY2hhbi5vZmZzZXQgKz0gc2xlbjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX2dsb2JhbF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcyxNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBqc19wcmludF9zdGRlcnIsIGpzX3ByaW50X3N0ZG91dFxuLy9SZXF1aXJlczogY2FtbF9zdGRfb3V0cHV0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChpZHgsb3V0cHV0LGZpbGUsZmxhZ3MpIHtcbiAgaWYoY2FtbF9nbG9iYWxfZGF0YS5mZHMgPT09IHVuZGVmaW5lZCkgY2FtbF9nbG9iYWxfZGF0YS5mZHMgPSBuZXcgQXJyYXkoKTtcbiAgZmxhZ3M9ZmxhZ3M/ZmxhZ3M6e307XG4gIHZhciBpbmZvID0ge307XG4gIGluZm8uZmlsZSA9IGZpbGU7XG4gIGluZm8ub2Zmc2V0ID0gZmxhZ3MuYXBwZW5kP2ZpbGUubGVuZ3RoKCk6MDtcbiAgaW5mby5mbGFncyA9IGZsYWdzO1xuICBpbmZvLm91dHB1dCA9IG91dHB1dDtcbiAgY2FtbF9nbG9iYWxfZGF0YS5mZHNbaWR4XSA9IGluZm87XG4gIGlmKCFjYW1sX2dsb2JhbF9kYXRhLmZkX2xhc3RfaWR4IHx8IGlkeCA+IGNhbWxfZ2xvYmFsX2RhdGEuZmRfbGFzdF9pZHgpXG4gICAgY2FtbF9nbG9iYWxfZGF0YS5mZF9sYXN0X2lkeCA9IGlkeDtcbiAgcmV0dXJuIGlkeDtcbn1cbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW4gKG5hbWUsIGZsYWdzLCBfcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUoZmxhZ3Mpe1xuICAgIHN3aXRjaChmbGFnc1sxXSl7XG4gICAgY2FzZSAwOiBmLnJkb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAxOiBmLndyb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAyOiBmLmFwcGVuZCA9IDE7YnJlYWs7XG4gICAgY2FzZSAzOiBmLmNyZWF0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA0OiBmLnRydW5jYXRlID0gMTticmVhaztcbiAgICBjYXNlIDU6IGYuZXhjbCA9IDE7IGJyZWFrO1xuICAgIGNhc2UgNjogZi5iaW5hcnkgPSAxO2JyZWFrO1xuICAgIGNhc2UgNzogZi50ZXh0ID0gMTticmVhaztcbiAgICBjYXNlIDg6IGYubm9uYmxvY2sgPSAxO2JyZWFrO1xuICAgIH1cbiAgICBmbGFncz1mbGFnc1syXTtcbiAgfVxuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3QsZik7XG4gIHZhciBpZHggPSBjYW1sX2dsb2JhbF9kYXRhLmZkX2xhc3RfaWR4P2NhbWxfZ2xvYmFsX2RhdGEuZmRfbGFzdF9pZHg6MDtcbiAgcmV0dXJuIGNhbWxfc3lzX29wZW5faW50ZXJuYWwgKGlkeCsxLGNhbWxfc3RkX291dHB1dCxmaWxlLGYpO1xufVxuY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCgwLGNhbWxfc3RkX291dHB1dCwgbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpKTsgLy9zdGRpblxuY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCgxLGpzX3ByaW50X3N0ZG91dCwgbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpKTsgLy9zdGRvdXRcbmNhbWxfc3lzX29wZW5faW50ZXJuYWwoMixqc19wcmludF9zdGRlcnIsIG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKSk7IC8vc3RkZXJyXG5cblxuLy8gb2NhbWwgQ2hhbm5lbHNcblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX25hbWUoKSB7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbHNcbnZhciBjYW1sX21sX2NoYW5uZWxzID0gbmV3IEFycmF5KCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QgKCkge1xuICB2YXIgbCA9IDA7XG4gIGZvcih2YXIgYyA9IDA7IGMgPCBjYW1sX21sX2NoYW5uZWxzLmxlbmd0aDsgYysrKXtcbiAgICBpZihjYW1sX21sX2NoYW5uZWxzW2NdICYmIGNhbWxfbWxfY2hhbm5lbHNbY10ub3BlbmVkICYmIGNhbWxfbWxfY2hhbm5lbHNbY10ub3V0KVxuICAgICAgbD1bMCxjYW1sX21sX2NoYW5uZWxzW2NdLmZkLGxdO1xuICB9XG4gIHJldHVybiBsO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9nbG9iYWxfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCAoZmQpIHtcbiAgdmFyIGRhdGEgPSBjYW1sX2dsb2JhbF9kYXRhLmZkc1tmZF07XG4gIGlmKGRhdGEuZmxhZ3MucmRvbmx5KSBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiKyBmZCArIFwiIGlzIHJlYWRvbmx5XCIpO1xuICB2YXIgY2hhbm5lbCA9IHtcbiAgICBmaWxlOmRhdGEuZmlsZSxcbiAgICBvZmZzZXQ6ZGF0YS5vZmZzZXQsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OnRydWUsXG4gICAgYnVmZmVyOlwiXCJcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsY2FtbF9zeXNfb3BlbixjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWQsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAoZmQpICB7XG4gIHZhciBkYXRhID0gY2FtbF9nbG9iYWxfZGF0YS5mZHNbZmRdO1xuICBpZihkYXRhLmZsYWdzLndyb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyB3cml0ZW9ubHlcIik7XG4gIHZhciByZWZpbGwgPSBudWxsO1xuICBpZihmZCA9PSAwICYmIGZzX25vZGVfc3VwcG9ydGVkKCkpe1xuICAgIHZhciBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gICAgcmVmaWxsID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGZzLnJlYWRGaWxlU3luYygwLCAndXRmOCcpKX07XG4gIH1cbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpkYXRhLmZpbGUsXG4gICAgb2Zmc2V0OmRhdGEub2Zmc2V0LFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDogZmFsc2UsXG4gICAgcmVmaWxsOnJlZmlsbFxuICB9O1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5uZWwuZmRdPWNoYW5uZWw7XG4gIHJldHVybiBjaGFubmVsLmZkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmQ7XG59XG5cbi8vUHJvdmlkZXM6IHdpbl9maWxlZGVzY3Jfb2ZfY2hhbm5lbFxuLy9SZXF1aXJlczogY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3JcbnZhciB3aW5fZmlsZWRlc2NyX29mX2NoYW5uZWwgPSBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUoY2hhbmlkLG1vZGUpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIGRhdGEgPSBjYW1sX2dsb2JhbF9kYXRhLmZkc1tjaGFuLmZkXTtcbiAgZGF0YS5mbGFncy50ZXh0ID0gIW1vZGVcbiAgZGF0YS5mbGFncy5iaW5hcnkgPSBtb2RlXG4gIHJldHVybiAwO1xufVxuXG4vL0lucHV0IGZyb20gaW5fY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Nsb3NlXG5mdW5jdGlvbiBjYW1sX21sX2Nsb3NlX2NoYW5uZWwgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICBjaGFuLm9wZW5lZCA9IGZhbHNlO1xuICBjaGFuLmZpbGUuY2xvc2UoKTtcbiAgY2FtbF9zeXNfY2xvc2UoY2hhbi5mZClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZpbGUubGVuZ3RoKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0KGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2hhbi5maWxlLmxlbmd0aCAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dChjaGFuaWQsZikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2FtbF9nbG9iYWxfZGF0YS5mZHNbY2hhbi5mZF0ub3V0cHV0ID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbChjaGFuaWQsZikge1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ucmVmaWxsID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcmVmaWxsX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfbWxfcmVmaWxsX2lucHV0IChjaGFuKSB7XG4gIHZhciBzdHIgPSBjaGFuLnJlZmlsbCgpO1xuICB2YXIgc3RyX2xlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIpO1xuICBpZiAoc3RyX2xlbiA9PSAwKSBjaGFuLnJlZmlsbCA9IG51bGw7XG4gIGNoYW4uZmlsZS53cml0ZShjaGFuLmZpbGUubGVuZ3RoKCksIHN0ciwgMCwgc3RyX2xlbik7XG4gIHJldHVybiBzdHJfbGVuO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX21heV9yZWZpbGxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfcmVmaWxsX2lucHV0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX21heV9yZWZpbGxfaW5wdXQgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYgKGNoYW4ucmVmaWxsID09IG51bGwpIHJldHVybjtcbiAgaWYgKGNoYW4uZmlsZS5sZW5ndGgoKSAhPSBjaGFuLm9mZnNldCkgcmV0dXJuO1xuICBjYW1sX21sX3JlZmlsbF9pbnB1dCAoY2hhbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfcmVmaWxsX2lucHV0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0IChjaGFuaWQsIHMsIGksIGwpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBsMiA9IGNoYW4uZmlsZS5sZW5ndGgoKSAtIGNoYW4ub2Zmc2V0O1xuICBpZiAobDIgPT0gMCAmJiBjaGFuLnJlZmlsbCAhPSBudWxsKSBsMiA9IGNhbWxfbWxfcmVmaWxsX2lucHV0KGNoYW4pO1xuICBpZiAobDIgPCBsKSBsID0gbDI7XG4gIGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LCBzLCBpLCBsKTtcbiAgY2hhbi5vZmZzZXQgKz0gbDtcbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcywgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWUgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcblxuICB2YXIgYnVmID0gY2FtbF9jcmVhdGVfYnl0ZXMoOCk7XG4gIGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LGJ1ZiwwLDgpO1xuXG4gIC8vIEhlYWRlciBpcyAyMCBieXRlc1xuICB2YXIgbGVuID0gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAoYnVmLCAwKSArIDIwO1xuXG4gIHZhciBidWYgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICBjaGFuLmZpbGUucmVhZChjaGFuLm9mZnNldCxidWYsMCxsZW4pO1xuXG4gIHZhciBvZmZzZXQgPSBbMF07XG4gIHZhciByZXMgPSBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMoYnVmLCBvZmZzZXQpO1xuICBjaGFuLm9mZnNldCA9IGNoYW4ub2Zmc2V0ICsgb2Zmc2V0WzBdO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfbWF5X3JlZmlsbF9pbnB1dCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9jaGFyIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNhbWxfbWxfbWF5X3JlZmlsbF9pbnB1dChjaGFuaWQpO1xuICBpZiAoY2hhbi5vZmZzZXQgPj0gY2hhbi5maWxlLmxlbmd0aCgpKVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgdmFyIHJlcyA9IGNoYW4uZmlsZS5yZWFkX29uZShjaGFuLm9mZnNldCk7XG4gIGNoYW4ub2Zmc2V0Kys7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21sX3JlZmlsbF9pbnB1dCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9pbnQgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIGZpbGUgPSBjaGFuLmZpbGU7XG4gIHdoaWxlICgoY2hhbi5vZmZzZXQgKyAzKSA+PSBmaWxlLmxlbmd0aCgpKSB7XG4gICAgdmFyIGwgPSBjYW1sX21sX3JlZmlsbF9pbnB1dChjaGFuKTtcbiAgICBpZiAobCA9PSAwKSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIH1cbiAgdmFyIG8gPSBjaGFuLm9mZnNldDtcbiAgdmFyIHIgPShmaWxlLnJlYWRfb25lKG8gICkgPDwgMjQpXG4gICAgICB8ICAoZmlsZS5yZWFkX29uZShvKzEpIDw8IDE2KVxuICAgICAgfCAgKGZpbGUucmVhZF9vbmUobysyKSA8PCA4KVxuICAgICAgfCAgKGZpbGUucmVhZF9vbmUobyszKSk7XG4gIGNoYW4ub2Zmc2V0Kz00O1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luKGNoYW5pZCxwb3Mpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYgKGNoYW4ucmVmaWxsICE9IG51bGwpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiSWxsZWdhbCBzZWVrXCIpO1xuICBjaGFuLm9mZnNldCA9IHBvcztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbl82NChjaGFuaWQscG9zKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmIChjaGFuLnJlZmlsbCAhPSBudWxsKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIklsbGVnYWwgc2Vla1wiKTtcbiAgY2hhbi5vZmZzZXQgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW4oY2hhbmlkKSB7cmV0dXJuIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5vZmZzZXR9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbl82NChjaGFuaWQpIHtyZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ub2Zmc2V0KX1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfbWF5X3JlZmlsbF9pbnB1dCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNhbWxfbWxfbWF5X3JlZmlsbF9pbnB1dChjaGFuaWQpO1xuICB2YXIgcCA9IGNoYW4ub2Zmc2V0O1xuICB2YXIgbGVuID0gY2hhbi5maWxlLmxlbmd0aCgpO1xuICBpZihwID49IGxlbikgeyByZXR1cm4gMDt9XG4gIHdoaWxlKHRydWUpIHtcbiAgICBpZihwID49IGxlbikgcmV0dXJuIC0gKHAgLSBjaGFuLm9mZnNldCk7XG4gICAgaWYoY2hhbi5maWxlLnJlYWRfb25lKHApID09IDEwKSByZXR1cm4gcCAtIGNoYW4ub2Zmc2V0ICsgMTtcbiAgICBwKys7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9mbHVzaFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3QgZmx1c2ggYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgaWYoIWNoYW4uYnVmZmVyIHx8IGNoYW4uYnVmZmVyID09IFwiXCIpIHJldHVybiAwO1xuICBpZihjaGFuLmZkXG4gICAgICYmIGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2NoYW4uZmRdXG4gICAgICYmIGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2NoYW4uZmRdLm91dHB1dCkge1xuICAgIHZhciBvdXRwdXQgPSBjYW1sX2dsb2JhbF9kYXRhLmZkc1tjaGFuLmZkXS5vdXRwdXQ7XG4gICAgc3dpdGNoKG91dHB1dC5sZW5ndGgpe1xuICAgIGNhc2UgMjogb3V0cHV0KGNoYW5pZCxjaGFuLmJ1ZmZlcik7YnJlYWs7XG4gICAgZGVmYXVsdDogb3V0cHV0KGNoYW4uYnVmZmVyKVxuICAgIH07XG4gIH1cbiAgY2hhbi5idWZmZXIgPSBcIlwiO1xuICByZXR1cm4gMDtcbn1cblxuLy9vdXRwdXQgdG8gb3V0X2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBvdXRwdXQgdG8gYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgdmFyIGJ5dGVzO1xuICBpZihvZmZzZXQgPT0gMCAmJiBjYW1sX21sX2J5dGVzX2xlbmd0aChidWZmZXIpID09IGxlbilcbiAgICBieXRlcyA9IGJ1ZmZlcjtcbiAgZWxzZSB7XG4gICAgYnl0ZXMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhidWZmZXIsb2Zmc2V0LGJ5dGVzLDAsbGVuKTtcbiAgfVxuICB2YXIgc3RyaW5nID0gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMoYnl0ZXMpO1xuICB2YXIganNzdHJpbmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHN0cmluZyk7XG4gIHZhciBpZCA9IGpzc3RyaW5nLmxhc3RJbmRleE9mKFwiXFxuXCIpO1xuICBpZihpZCA8IDApXG4gICAgY2hhbi5idWZmZXIrPWpzc3RyaW5nO1xuICBlbHNlIHtcbiAgICBjaGFuLmJ1ZmZlcis9anNzdHJpbmcuc3Vic3RyKDAsaWQrMSk7XG4gICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBjaGFuLmJ1ZmZlciArPSBqc3N0cmluZy5zdWJzdHIoaWQrMSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbil7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF9ieXRlcyhjaGFuaWQsY2FtbF9ieXRlc19vZl9zdHJpbmcoYnVmZmVyKSxvZmZzZXQsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2NoYXIgKGNoYW5pZCxjKSB7XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCwxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcsIGNhbWxfbWxfb3V0cHV0LGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWUgKGNoYW5pZCx2LGZsYWdzKSB7XG4gIHZhciBzID0gY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nKHYsIGZsYWdzKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCxjYW1sX21sX3N0cmluZ19sZW5ndGgocykpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0KGNoYW5pZCxwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5vZmZzZXQgPSBwb3M7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0LCBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0XzY0KGNoYW5pZCxwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5vZmZzZXQgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dChjaGFuaWQpIHtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLm9mZnNldFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dF82NChjaGFuaWQpIHtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLm9mZnNldCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9pbnQgKGNoYW5pZCxpKSB7XG4gIHZhciBhcnIgPSBbKGk+PjI0KSAmIDB4RkYsKGk+PjE2KSAmIDB4RkYsKGk+PjgpICYgMHhGRixpICYgMHhGRiBdO1xuICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsNCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaXNfYnVmZmVyZWRcbmZ1bmN0aW9uIGNhbWxfbWxfaXNfYnVmZmVyZWQoYykgeyByZXR1cm4gMSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2J1ZmZlcmVkXG5mdW5jdGlvbiBjYW1sX21sX3NldF9idWZmZXJlZChjLHYpIHsgcmV0dXJuIDAgfVxuIiwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3IoKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKCl7IHJldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9nY19mdWxsX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX2Z1bGxfbWFqb3IoKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvbXBhY3Rpb25cbmZ1bmN0aW9uIGNhbWxfZ2NfY29tcGFjdGlvbigpeyByZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY291bnRlcnNcbmZ1bmN0aW9uIGNhbWxfZ2NfY291bnRlcnMoKSB7IHJldHVybiBbMjU0LDAsMCwwXSB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbmZ1bmN0aW9uIGNhbWxfZ2NfcXVpY2tfc3RhdCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc3RhdFxuZnVuY3Rpb24gY2FtbF9nY19zdGF0KCkge1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19zZXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2dldFxuZnVuY3Rpb24gY2FtbF9nY19nZXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3NldFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3RlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3RlciAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVsZWFzZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWxlYXNlICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RhcnQocmF0ZSxzdGFja19zaXplLHRyYWNrZXIpe1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0b3BcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdG9wKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcmVzdW1lXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3Jlc3VtZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcGF1c2UodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnRcbmZ1bmN0aW9uIGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3Jfc2xpY2VcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3Jfc2xpY2Uod29yaykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yX3dvcmRzKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWlub3JfZnJlZVxuZnVuY3Rpb24gY2FtbF9nZXRfbWlub3JfZnJlZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2J1Y2tldFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfYnVja2V0KG4pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfY3JlZGl0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9jcmVkaXQobikgeyByZXR1cm4gMDsgfVxuIiwiLy9JbXBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9wZXRlcm9sc29uL0JpZ0ludGVnZXIuanMjNGU5OWIxNWI3OTUxMzM4ZjE2NDcyODM3N2M5MDZjYWFlNWE3ODIwMlxuXG4vL1Byb3ZpZGVzOiBiaWdJbnQgY29uc3RcbnZhciBiaWdJbnQgPSAoZnVuY3Rpb24gKHVuZGVmaW5lZCkge1xuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgdmFyIEJBU0UgPSAxZTcsXG4gICAgICAgIExPR19CQVNFID0gNyxcbiAgICAgICAgTUFYX0lOVCA9IDkwMDcxOTkyNTQ3NDA5OTIsXG4gICAgICAgIE1BWF9JTlRfQVJSID0gc21hbGxUb0FycmF5KE1BWF9JTlQpLFxuICAgICAgICBERUZBVUxUX0FMUEhBQkVUID0gXCIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjtcblxuICAgIHZhciBCaWdJbnQgPSBqb29fZ2xvYmFsX29iamVjdC5CaWdJbnQ7XG5cbiAgICB2YXIgc3VwcG9ydHNOYXRpdmVCaWdJbnQgPSB0eXBlb2YgQmlnSW50ID09PSBcImZ1bmN0aW9uXCI7XG5cbiAgICBmdW5jdGlvbiBJbnRlZ2VyKHYsIHJhZGl4LCBhbHBoYWJldCwgY2FzZVNlbnNpdGl2ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHYgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBJbnRlZ2VyWzBdO1xuICAgICAgICBpZiAodHlwZW9mIHJhZGl4ICE9PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gK3JhZGl4ID09PSAxMCAmJiAhYWxwaGFiZXQgPyBwYXJzZVZhbHVlKHYpIDogcGFyc2VCYXNlKHYsIHJhZGl4LCBhbHBoYWJldCwgY2FzZVNlbnNpdGl2ZSk7XG4gICAgICAgIHJldHVybiBwYXJzZVZhbHVlKHYpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIEJpZ0ludGVnZXIodmFsdWUsIHNpZ24pIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNpZ24gPSBzaWduO1xuICAgICAgICB0aGlzLmlzU21hbGwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jYW1sX2N1c3RvbSA9ICdfeic7XG4gICAgfVxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJbnRlZ2VyLnByb3RvdHlwZSk7XG5cbiAgICBmdW5jdGlvbiBTbWFsbEludGVnZXIodmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNpZ24gPSB2YWx1ZSA8IDA7XG4gICAgICAgIHRoaXMuaXNTbWFsbCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2FtbF9jdXN0b20gPSAnX3onO1xuICAgIH1cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJbnRlZ2VyLnByb3RvdHlwZSk7XG5cbiAgICBmdW5jdGlvbiBOYXRpdmVCaWdJbnQodmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNhbWxfY3VzdG9tID0gJ196JztcbiAgICB9XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSW50ZWdlci5wcm90b3R5cGUpO1xuXG4gICAgZnVuY3Rpb24gaXNQcmVjaXNlKG4pIHtcbiAgICAgICAgcmV0dXJuIC1NQVhfSU5UIDwgbiAmJiBuIDwgTUFYX0lOVDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzbWFsbFRvQXJyYXkobikgeyAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBkb2Vzbid0IHJlZmVyZW5jZSBCQVNFLCBuZWVkIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGlmIEJBU0UgY2hhbmdlc1xuICAgICAgICBpZiAobiA8IDFlNylcbiAgICAgICAgICAgIHJldHVybiBbbl07XG4gICAgICAgIGlmIChuIDwgMWUxNClcbiAgICAgICAgICAgIHJldHVybiBbbiAlIDFlNywgTWF0aC5mbG9vcihuIC8gMWU3KV07XG4gICAgICAgIHJldHVybiBbbiAlIDFlNywgTWF0aC5mbG9vcihuIC8gMWU3KSAlIDFlNywgTWF0aC5mbG9vcihuIC8gMWUxNCldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFycmF5VG9TbWFsbChhcnIpIHsgLy8gSWYgQkFTRSBjaGFuZ2VzIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gY2hhbmdlXG4gICAgICAgIHRyaW0oYXJyKTtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGFyci5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPCA0ICYmIGNvbXBhcmVBYnMoYXJyLCBNQVhfSU5UX0FSUikgPCAwKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gYXJyWzBdO1xuICAgICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIGFyclswXSArIGFyclsxXSAqIEJBU0U7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGFyclswXSArIChhcnJbMV0gKyBhcnJbMl0gKiBCQVNFKSAqIEJBU0U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cmltKHYpIHtcbiAgICAgICAgdmFyIGkgPSB2Lmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKHZbLS1pXSA9PT0gMCk7XG4gICAgICAgIHYubGVuZ3RoID0gaSArIDE7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlQXJyYXkobGVuZ3RoKSB7IC8vIGZ1bmN0aW9uIHNoYW1lbGVzc2x5IHN0b2xlbiBmcm9tIFlhZmZsZSdzIGxpYnJhcnkgaHR0cHM6Ly9naXRodWIuY29tL1lhZmZsZS9CaWdJbnRlZ2VyXG4gICAgICAgIHZhciB4ID0gbmV3IEFycmF5KGxlbmd0aCk7XG4gICAgICAgIHZhciBpID0gLTE7XG4gICAgICAgIHdoaWxlICgrK2kgPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIHhbaV0gPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRydW5jYXRlKG4pIHtcbiAgICAgICAgaWYgKG4gPiAwKSByZXR1cm4gTWF0aC5mbG9vcihuKTtcbiAgICAgICAgcmV0dXJuIE1hdGguY2VpbChuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGQoYSwgYikgeyAvLyBhc3N1bWVzIGEgYW5kIGIgYXJlIGFycmF5cyB3aXRoIGEubGVuZ3RoID49IGIubGVuZ3RoXG4gICAgICAgIHZhciBsX2EgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIGxfYiA9IGIubGVuZ3RoLFxuICAgICAgICAgICAgciA9IG5ldyBBcnJheShsX2EpLFxuICAgICAgICAgICAgY2FycnkgPSAwLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBzdW0sIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsX2I7IGkrKykge1xuICAgICAgICAgICAgc3VtID0gYVtpXSArIGJbaV0gKyBjYXJyeTtcbiAgICAgICAgICAgIGNhcnJ5ID0gc3VtID49IGJhc2UgPyAxIDogMDtcbiAgICAgICAgICAgIHJbaV0gPSBzdW0gLSBjYXJyeSAqIGJhc2U7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGkgPCBsX2EpIHtcbiAgICAgICAgICAgIHN1bSA9IGFbaV0gKyBjYXJyeTtcbiAgICAgICAgICAgIGNhcnJ5ID0gc3VtID09PSBiYXNlID8gMSA6IDA7XG4gICAgICAgICAgICByW2krK10gPSBzdW0gLSBjYXJyeSAqIGJhc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhcnJ5ID4gMCkgci5wdXNoKGNhcnJ5KTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkQW55KGEsIGIpIHtcbiAgICAgICAgaWYgKGEubGVuZ3RoID49IGIubGVuZ3RoKSByZXR1cm4gYWRkKGEsIGIpO1xuICAgICAgICByZXR1cm4gYWRkKGIsIGEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFNtYWxsKGEsIGNhcnJ5KSB7IC8vIGFzc3VtZXMgYSBpcyBhcnJheSwgY2FycnkgaXMgbnVtYmVyIHdpdGggMCA8PSBjYXJyeSA8IE1BWF9JTlRcbiAgICAgICAgdmFyIGwgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIHIgPSBuZXcgQXJyYXkobCksXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIHN1bSwgaTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgc3VtID0gYVtpXSAtIGJhc2UgKyBjYXJyeTtcbiAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihzdW0gLyBiYXNlKTtcbiAgICAgICAgICAgIHJbaV0gPSBzdW0gLSBjYXJyeSAqIGJhc2U7XG4gICAgICAgICAgICBjYXJyeSArPSAxO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChjYXJyeSA+IDApIHtcbiAgICAgICAgICAgIHJbaSsrXSA9IGNhcnJ5ICUgYmFzZTtcbiAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihjYXJyeSAvIGJhc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgaWYgKHRoaXMuc2lnbiAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdWJ0cmFjdChuLm5lZ2F0ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWUsIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoYWRkU21hbGwoYSwgTWF0aC5hYnMoYikpLCB0aGlzLnNpZ24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihhZGRBbnkoYSwgYiksIHRoaXMuc2lnbik7XG4gICAgfTtcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5wbHVzID0gQmlnSW50ZWdlci5wcm90b3R5cGUuYWRkO1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodik7XG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZTtcbiAgICAgICAgaWYgKGEgPCAwICE9PSBuLnNpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN1YnRyYWN0KG4ubmVnYXRlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgaWYgKGlzUHJlY2lzZShhICsgYikpIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKGEgKyBiKTtcbiAgICAgICAgICAgIGIgPSBzbWFsbFRvQXJyYXkoTWF0aC5hYnMoYikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihhZGRTbWFsbChiLCBNYXRoLmFicyhhKSksIGEgPCAwKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUucGx1cyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuYWRkO1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlICsgcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XG4gICAgfVxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUucGx1cyA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuYWRkO1xuXG4gICAgZnVuY3Rpb24gc3VidHJhY3QoYSwgYikgeyAvLyBhc3N1bWVzIGEgYW5kIGIgYXJlIGFycmF5cyB3aXRoIGEgPj0gYlxuICAgICAgICB2YXIgYV9sID0gYS5sZW5ndGgsXG4gICAgICAgICAgICBiX2wgPSBiLmxlbmd0aCxcbiAgICAgICAgICAgIHIgPSBuZXcgQXJyYXkoYV9sKSxcbiAgICAgICAgICAgIGJvcnJvdyA9IDAsXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIGksIGRpZmZlcmVuY2U7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBiX2w7IGkrKykge1xuICAgICAgICAgICAgZGlmZmVyZW5jZSA9IGFbaV0gLSBib3Jyb3cgLSBiW2ldO1xuICAgICAgICAgICAgaWYgKGRpZmZlcmVuY2UgPCAwKSB7XG4gICAgICAgICAgICAgICAgZGlmZmVyZW5jZSArPSBiYXNlO1xuICAgICAgICAgICAgICAgIGJvcnJvdyA9IDE7XG4gICAgICAgICAgICB9IGVsc2UgYm9ycm93ID0gMDtcbiAgICAgICAgICAgIHJbaV0gPSBkaWZmZXJlbmNlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaSA9IGJfbDsgaSA8IGFfbDsgaSsrKSB7XG4gICAgICAgICAgICBkaWZmZXJlbmNlID0gYVtpXSAtIGJvcnJvdztcbiAgICAgICAgICAgIGlmIChkaWZmZXJlbmNlIDwgMCkgZGlmZmVyZW5jZSArPSBiYXNlO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcltpKytdID0gZGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJbaV0gPSBkaWZmZXJlbmNlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoOyBpIDwgYV9sOyBpKyspIHtcbiAgICAgICAgICAgIHJbaV0gPSBhW2ldO1xuICAgICAgICB9XG4gICAgICAgIHRyaW0ocik7XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN1YnRyYWN0QW55KGEsIGIsIHNpZ24pIHtcbiAgICAgICAgdmFyIHZhbHVlO1xuICAgICAgICBpZiAoY29tcGFyZUFicyhhLCBiKSA+PSAwKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHN1YnRyYWN0KGEsIGIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgPSBzdWJ0cmFjdChiLCBhKTtcbiAgICAgICAgICAgIHNpZ24gPSAhc2lnbjtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZSA9IGFycmF5VG9TbWFsbCh2YWx1ZSk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGlmIChzaWduKSB2YWx1ZSA9IC12YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIodmFsdWUsIHNpZ24pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN1YnRyYWN0U21hbGwoYSwgYiwgc2lnbikgeyAvLyBhc3N1bWVzIGEgaXMgYXJyYXksIGIgaXMgbnVtYmVyIHdpdGggMCA8PSBiIDwgTUFYX0lOVFxuICAgICAgICB2YXIgbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgciA9IG5ldyBBcnJheShsKSxcbiAgICAgICAgICAgIGNhcnJ5ID0gLWIsXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIGksIGRpZmZlcmVuY2U7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIGRpZmZlcmVuY2UgPSBhW2ldICsgY2Fycnk7XG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IoZGlmZmVyZW5jZSAvIGJhc2UpO1xuICAgICAgICAgICAgZGlmZmVyZW5jZSAlPSBiYXNlO1xuICAgICAgICAgICAgcltpXSA9IGRpZmZlcmVuY2UgPCAwID8gZGlmZmVyZW5jZSArIGJhc2UgOiBkaWZmZXJlbmNlO1xuICAgICAgICB9XG4gICAgICAgIHIgPSBhcnJheVRvU21hbGwocik7XG4gICAgICAgIGlmICh0eXBlb2YgciA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgaWYgKHNpZ24pIHIgPSAtcjtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKHIpO1xuICAgICAgICB9IHJldHVybiBuZXcgQmlnSW50ZWdlcihyLCBzaWduKTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zdWJ0cmFjdCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgaWYgKHRoaXMuc2lnbiAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGQobi5uZWdhdGUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlLCBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbClcbiAgICAgICAgICAgIHJldHVybiBzdWJ0cmFjdFNtYWxsKGEsIE1hdGguYWJzKGIpLCB0aGlzLnNpZ24pO1xuICAgICAgICByZXR1cm4gc3VidHJhY3RBbnkoYSwgYiwgdGhpcy5zaWduKTtcbiAgICB9O1xuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm1pbnVzID0gQmlnSW50ZWdlci5wcm90b3R5cGUuc3VidHJhY3Q7XG5cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnN1YnRyYWN0ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpO1xuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmIChhIDwgMCAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGQobi5uZWdhdGUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcihhIC0gYik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1YnRyYWN0U21hbGwoYiwgTWF0aC5hYnMoYSksIGEgPj0gMCk7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm1pbnVzID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5zdWJ0cmFjdDtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc3VidHJhY3QgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlIC0gcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XG4gICAgfVxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubWludXMgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnN1YnRyYWN0O1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubmVnYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIodGhpcy52YWx1ZSwgIXRoaXMuc2lnbik7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHNpZ24gPSB0aGlzLnNpZ247XG4gICAgICAgIHZhciBzbWFsbCA9IG5ldyBTbWFsbEludGVnZXIoLXRoaXMudmFsdWUpO1xuICAgICAgICBzbWFsbC5zaWduID0gIXNpZ247XG4gICAgICAgIHJldHVybiBzbWFsbDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubmVnYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCgtdGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIodGhpcy52YWx1ZSwgZmFsc2UpO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKE1hdGguYWJzKHRoaXMudmFsdWUpKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlID49IDAgPyB0aGlzLnZhbHVlIDogLXRoaXMudmFsdWUpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlMb25nKGEsIGIpIHtcbiAgICAgICAgdmFyIGFfbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgYl9sID0gYi5sZW5ndGgsXG4gICAgICAgICAgICBsID0gYV9sICsgYl9sLFxuICAgICAgICAgICAgciA9IGNyZWF0ZUFycmF5KGwpLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBwcm9kdWN0LCBjYXJyeSwgaSwgYV9pLCBiX2o7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhX2w7ICsraSkge1xuICAgICAgICAgICAgYV9pID0gYVtpXTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYl9sOyArK2opIHtcbiAgICAgICAgICAgICAgICBiX2ogPSBiW2pdO1xuICAgICAgICAgICAgICAgIHByb2R1Y3QgPSBhX2kgKiBiX2ogKyByW2kgKyBqXTtcbiAgICAgICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IocHJvZHVjdCAvIGJhc2UpO1xuICAgICAgICAgICAgICAgIHJbaSArIGpdID0gcHJvZHVjdCAtIGNhcnJ5ICogYmFzZTtcbiAgICAgICAgICAgICAgICByW2kgKyBqICsgMV0gKz0gY2Fycnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdHJpbShyKTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlTbWFsbChhLCBiKSB7IC8vIGFzc3VtZXMgYSBpcyBhcnJheSwgYiBpcyBudW1iZXIgd2l0aCB8YnwgPCBCQVNFXG4gICAgICAgIHZhciBsID0gYS5sZW5ndGgsXG4gICAgICAgICAgICByID0gbmV3IEFycmF5KGwpLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBjYXJyeSA9IDAsXG4gICAgICAgICAgICBwcm9kdWN0LCBpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBwcm9kdWN0ID0gYVtpXSAqIGIgKyBjYXJyeTtcbiAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihwcm9kdWN0IC8gYmFzZSk7XG4gICAgICAgICAgICByW2ldID0gcHJvZHVjdCAtIGNhcnJ5ICogYmFzZTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoY2FycnkgPiAwKSB7XG4gICAgICAgICAgICByW2krK10gPSBjYXJyeSAlIGJhc2U7XG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IoY2FycnkgLyBiYXNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzaGlmdExlZnQoeCwgbikge1xuICAgICAgICB2YXIgciA9IFtdO1xuICAgICAgICB3aGlsZSAobi0tID4gMCkgci5wdXNoKDApO1xuICAgICAgICByZXR1cm4gci5jb25jYXQoeCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlLYXJhdHN1YmEoeCwgeSkge1xuICAgICAgICB2YXIgbiA9IE1hdGgubWF4KHgubGVuZ3RoLCB5Lmxlbmd0aCk7XG5cbiAgICAgICAgaWYgKG4gPD0gMzApIHJldHVybiBtdWx0aXBseUxvbmcoeCwgeSk7XG4gICAgICAgIG4gPSBNYXRoLmNlaWwobiAvIDIpO1xuXG4gICAgICAgIHZhciBiID0geC5zbGljZShuKSxcbiAgICAgICAgICAgIGEgPSB4LnNsaWNlKDAsIG4pLFxuICAgICAgICAgICAgZCA9IHkuc2xpY2UobiksXG4gICAgICAgICAgICBjID0geS5zbGljZSgwLCBuKTtcblxuICAgICAgICB2YXIgYWMgPSBtdWx0aXBseUthcmF0c3ViYShhLCBjKSxcbiAgICAgICAgICAgIGJkID0gbXVsdGlwbHlLYXJhdHN1YmEoYiwgZCksXG4gICAgICAgICAgICBhYmNkID0gbXVsdGlwbHlLYXJhdHN1YmEoYWRkQW55KGEsIGIpLCBhZGRBbnkoYywgZCkpO1xuXG4gICAgICAgIHZhciBwcm9kdWN0ID0gYWRkQW55KGFkZEFueShhYywgc2hpZnRMZWZ0KHN1YnRyYWN0KHN1YnRyYWN0KGFiY2QsIGFjKSwgYmQpLCBuKSksIHNoaWZ0TGVmdChiZCwgMiAqIG4pKTtcbiAgICAgICAgdHJpbShwcm9kdWN0KTtcbiAgICAgICAgcmV0dXJuIHByb2R1Y3Q7XG4gICAgfVxuXG4gICAgLy8gVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyBkZXJpdmVkIGZyb20gYSBzdXJmYWNlIGZpdCBvZiBhIGdyYXBoIHBsb3R0aW5nIHRoZSBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlXG4gICAgLy8gYmV0d2VlbiBsb25nIG11bHRpcGxpY2F0aW9uIGFuZCBrYXJhdHN1YmEgbXVsdGlwbGljYXRpb24gdmVyc3VzIHRoZSBsZW5ndGhzIG9mIHRoZSB0d28gYXJyYXlzLlxuICAgIGZ1bmN0aW9uIHVzZUthcmF0c3ViYShsMSwgbDIpIHtcbiAgICAgICAgcmV0dXJuIC0wLjAxMiAqIGwxIC0gMC4wMTIgKiBsMiArIDAuMDAwMDE1ICogbDEgKiBsMiA+IDA7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubXVsdGlwbHkgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodiksXG4gICAgICAgICAgICBhID0gdGhpcy52YWx1ZSwgYiA9IG4udmFsdWUsXG4gICAgICAgICAgICBzaWduID0gdGhpcy5zaWduICE9PSBuLnNpZ24sXG4gICAgICAgICAgICBhYnM7XG4gICAgICAgIGlmIChuLmlzU21hbGwpIHtcbiAgICAgICAgICAgIGlmIChiID09PSAwKSByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgICAgIGlmIChiID09PSAxKSByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIGlmIChiID09PSAtMSkgcmV0dXJuIHRoaXMubmVnYXRlKCk7XG4gICAgICAgICAgICBhYnMgPSBNYXRoLmFicyhiKTtcbiAgICAgICAgICAgIGlmIChhYnMgPCBCQVNFKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKG11bHRpcGx5U21hbGwoYSwgYWJzKSwgc2lnbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBiID0gc21hbGxUb0FycmF5KGFicyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVzZUthcmF0c3ViYShhLmxlbmd0aCwgYi5sZW5ndGgpKSAvLyBLYXJhdHN1YmEgaXMgb25seSBmYXN0ZXIgZm9yIGNlcnRhaW4gYXJyYXkgc2l6ZXNcbiAgICAgICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseUthcmF0c3ViYShhLCBiKSwgc2lnbik7XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseUxvbmcoYSwgYiksIHNpZ24pO1xuICAgIH07XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS50aW1lcyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5O1xuXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlTbWFsbEFuZEFycmF5KGEsIGIsIHNpZ24pIHsgLy8gYSA+PSAwXG4gICAgICAgIGlmIChhIDwgQkFTRSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKG11bHRpcGx5U21hbGwoYiwgYSksIHNpZ24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseUxvbmcoYiwgc21hbGxUb0FycmF5KGEpKSwgc2lnbik7XG4gICAgfVxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuX211bHRpcGx5QnlTbWFsbCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIGlmIChpc1ByZWNpc2UoYS52YWx1ZSAqIHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcihhLnZhbHVlICogdGhpcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG11bHRpcGx5U21hbGxBbmRBcnJheShNYXRoLmFicyhhLnZhbHVlKSwgc21hbGxUb0FycmF5KE1hdGguYWJzKHRoaXMudmFsdWUpKSwgdGhpcy5zaWduICE9PSBhLnNpZ24pO1xuICAgIH07XG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuX211bHRpcGx5QnlTbWFsbCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIGlmIChhLnZhbHVlID09PSAwKSByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgaWYgKGEudmFsdWUgPT09IDEpIHJldHVybiB0aGlzO1xuICAgICAgICBpZiAoYS52YWx1ZSA9PT0gLTEpIHJldHVybiB0aGlzLm5lZ2F0ZSgpO1xuICAgICAgICByZXR1cm4gbXVsdGlwbHlTbWFsbEFuZEFycmF5KE1hdGguYWJzKGEudmFsdWUpLCB0aGlzLnZhbHVlLCB0aGlzLnNpZ24gIT09IGEuc2lnbik7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm11bHRpcGx5ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlVmFsdWUodikuX211bHRpcGx5QnlTbWFsbCh0aGlzKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUudGltZXMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm11bHRpcGx5O1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5tdWx0aXBseSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgKiBwYXJzZVZhbHVlKHYpLnZhbHVlKTtcbiAgICB9XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS50aW1lcyA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubXVsdGlwbHk7XG5cbiAgICBmdW5jdGlvbiBzcXVhcmUoYSkge1xuICAgICAgICAvL2NvbnNvbGUuYXNzZXJ0KDIgKiBCQVNFICogQkFTRSA8IE1BWF9JTlQpO1xuICAgICAgICB2YXIgbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgciA9IGNyZWF0ZUFycmF5KGwgKyBsKSxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgcHJvZHVjdCwgY2FycnksIGksIGFfaSwgYV9qO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBhX2kgPSBhW2ldO1xuICAgICAgICAgICAgY2FycnkgPSAwIC0gYV9pICogYV9pO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IGk7IGogPCBsOyBqKyspIHtcbiAgICAgICAgICAgICAgICBhX2ogPSBhW2pdO1xuICAgICAgICAgICAgICAgIHByb2R1Y3QgPSAyICogKGFfaSAqIGFfaikgKyByW2kgKyBqXSArIGNhcnJ5O1xuICAgICAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihwcm9kdWN0IC8gYmFzZSk7XG4gICAgICAgICAgICAgICAgcltpICsgal0gPSBwcm9kdWN0IC0gY2FycnkgKiBiYXNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcltpICsgbF0gPSBjYXJyeTtcbiAgICAgICAgfVxuICAgICAgICB0cmltKHIpO1xuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zcXVhcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihzcXVhcmUodGhpcy52YWx1ZSksIGZhbHNlKTtcbiAgICB9O1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5zcXVhcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWUgKiB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAoaXNQcmVjaXNlKHZhbHVlKSkgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoc3F1YXJlKHNtYWxsVG9BcnJheShNYXRoLmFicyh0aGlzLnZhbHVlKSkpLCBmYWxzZSk7XG4gICAgfTtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc3F1YXJlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAqIHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRpdk1vZDEoYSwgYikgeyAvLyBMZWZ0IG92ZXIgZnJvbSBwcmV2aW91cyB2ZXJzaW9uLiBQZXJmb3JtcyBmYXN0ZXIgdGhhbiBkaXZNb2QyIG9uIHNtYWxsZXIgaW5wdXQgc2l6ZXMuXG4gICAgICAgIHZhciBhX2wgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIGJfbCA9IGIubGVuZ3RoLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVBcnJheShiLmxlbmd0aCksXG4gICAgICAgICAgICBkaXZpc29yTW9zdFNpZ25pZmljYW50RGlnaXQgPSBiW2JfbCAtIDFdLFxuICAgICAgICAgICAgLy8gbm9ybWFsaXphdGlvblxuICAgICAgICAgICAgbGFtYmRhID0gTWF0aC5jZWlsKGJhc2UgLyAoMiAqIGRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCkpLFxuICAgICAgICAgICAgcmVtYWluZGVyID0gbXVsdGlwbHlTbWFsbChhLCBsYW1iZGEpLFxuICAgICAgICAgICAgZGl2aXNvciA9IG11bHRpcGx5U21hbGwoYiwgbGFtYmRhKSxcbiAgICAgICAgICAgIHF1b3RpZW50RGlnaXQsIHNoaWZ0LCBjYXJyeSwgYm9ycm93LCBpLCBsLCBxO1xuICAgICAgICBpZiAocmVtYWluZGVyLmxlbmd0aCA8PSBhX2wpIHJlbWFpbmRlci5wdXNoKDApO1xuICAgICAgICBkaXZpc29yLnB1c2goMCk7XG4gICAgICAgIGRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCA9IGRpdmlzb3JbYl9sIC0gMV07XG4gICAgICAgIGZvciAoc2hpZnQgPSBhX2wgLSBiX2w7IHNoaWZ0ID49IDA7IHNoaWZ0LS0pIHtcbiAgICAgICAgICAgIHF1b3RpZW50RGlnaXQgPSBiYXNlIC0gMTtcbiAgICAgICAgICAgIGlmIChyZW1haW5kZXJbc2hpZnQgKyBiX2xdICE9PSBkaXZpc29yTW9zdFNpZ25pZmljYW50RGlnaXQpIHtcbiAgICAgICAgICAgICAgICBxdW90aWVudERpZ2l0ID0gTWF0aC5mbG9vcigocmVtYWluZGVyW3NoaWZ0ICsgYl9sXSAqIGJhc2UgKyByZW1haW5kZXJbc2hpZnQgKyBiX2wgLSAxXSkgLyBkaXZpc29yTW9zdFNpZ25pZmljYW50RGlnaXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcXVvdGllbnREaWdpdCA8PSBiYXNlIC0gMVxuICAgICAgICAgICAgY2FycnkgPSAwO1xuICAgICAgICAgICAgYm9ycm93ID0gMDtcbiAgICAgICAgICAgIGwgPSBkaXZpc29yLmxlbmd0aDtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjYXJyeSArPSBxdW90aWVudERpZ2l0ICogZGl2aXNvcltpXTtcbiAgICAgICAgICAgICAgICBxID0gTWF0aC5mbG9vcihjYXJyeSAvIGJhc2UpO1xuICAgICAgICAgICAgICAgIGJvcnJvdyArPSByZW1haW5kZXJbc2hpZnQgKyBpXSAtIChjYXJyeSAtIHEgKiBiYXNlKTtcbiAgICAgICAgICAgICAgICBjYXJyeSA9IHE7XG4gICAgICAgICAgICAgICAgaWYgKGJvcnJvdyA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyW3NoaWZ0ICsgaV0gPSBib3Jyb3cgKyBiYXNlO1xuICAgICAgICAgICAgICAgICAgICBib3Jyb3cgPSAtMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZW1haW5kZXJbc2hpZnQgKyBpXSA9IGJvcnJvdztcbiAgICAgICAgICAgICAgICAgICAgYm9ycm93ID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoYm9ycm93ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgcXVvdGllbnREaWdpdCAtPSAxO1xuICAgICAgICAgICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhcnJ5ICs9IHJlbWFpbmRlcltzaGlmdCArIGldIC0gYmFzZSArIGRpdmlzb3JbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjYXJyeSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlcltzaGlmdCArIGldID0gY2FycnkgKyBiYXNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FycnkgPSAwO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyW3NoaWZ0ICsgaV0gPSBjYXJyeTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnJ5ID0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBib3Jyb3cgKz0gY2Fycnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbc2hpZnRdID0gcXVvdGllbnREaWdpdDtcbiAgICAgICAgfVxuICAgICAgICAvLyBkZW5vcm1hbGl6YXRpb25cbiAgICAgICAgcmVtYWluZGVyID0gZGl2TW9kU21hbGwocmVtYWluZGVyLCBsYW1iZGEpWzBdO1xuICAgICAgICByZXR1cm4gW2FycmF5VG9TbWFsbChyZXN1bHQpLCBhcnJheVRvU21hbGwocmVtYWluZGVyKV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGl2TW9kMihhLCBiKSB7IC8vIEltcGxlbWVudGF0aW9uIGlkZWEgc2hhbWVsZXNzbHkgc3RvbGVuIGZyb20gU2lsZW50IE1hdHQncyBsaWJyYXJ5IGh0dHA6Ly9zaWxlbnRtYXR0LmNvbS9iaWdpbnRlZ2VyL1xuICAgICAgICAvLyBQZXJmb3JtcyBmYXN0ZXIgdGhhbiBkaXZNb2QxIG9uIGxhcmdlciBpbnB1dCBzaXplcy5cbiAgICAgICAgdmFyIGFfbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgYl9sID0gYi5sZW5ndGgsXG4gICAgICAgICAgICByZXN1bHQgPSBbXSxcbiAgICAgICAgICAgIHBhcnQgPSBbXSxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgZ3Vlc3MsIHhsZW4sIGhpZ2h4LCBoaWdoeSwgY2hlY2s7XG4gICAgICAgIHdoaWxlIChhX2wpIHtcbiAgICAgICAgICAgIHBhcnQudW5zaGlmdChhWy0tYV9sXSk7XG4gICAgICAgICAgICB0cmltKHBhcnQpO1xuICAgICAgICAgICAgaWYgKGNvbXBhcmVBYnMocGFydCwgYikgPCAwKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goMCk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4bGVuID0gcGFydC5sZW5ndGg7XG4gICAgICAgICAgICBoaWdoeCA9IHBhcnRbeGxlbiAtIDFdICogYmFzZSArIHBhcnRbeGxlbiAtIDJdO1xuICAgICAgICAgICAgaGlnaHkgPSBiW2JfbCAtIDFdICogYmFzZSArIGJbYl9sIC0gMl07XG4gICAgICAgICAgICBpZiAoeGxlbiA+IGJfbCkge1xuICAgICAgICAgICAgICAgIGhpZ2h4ID0gKGhpZ2h4ICsgMSkgKiBiYXNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3Vlc3MgPSBNYXRoLmNlaWwoaGlnaHggLyBoaWdoeSk7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgY2hlY2sgPSBtdWx0aXBseVNtYWxsKGIsIGd1ZXNzKTtcbiAgICAgICAgICAgICAgICBpZiAoY29tcGFyZUFicyhjaGVjaywgcGFydCkgPD0gMCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgZ3Vlc3MtLTtcbiAgICAgICAgICAgIH0gd2hpbGUgKGd1ZXNzKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGd1ZXNzKTtcbiAgICAgICAgICAgIHBhcnQgPSBzdWJ0cmFjdChwYXJ0LCBjaGVjayk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0LnJldmVyc2UoKTtcbiAgICAgICAgcmV0dXJuIFthcnJheVRvU21hbGwocmVzdWx0KSwgYXJyYXlUb1NtYWxsKHBhcnQpXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkaXZNb2RTbWFsbCh2YWx1ZSwgbGFtYmRhKSB7XG4gICAgICAgIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGgsXG4gICAgICAgICAgICBxdW90aWVudCA9IGNyZWF0ZUFycmF5KGxlbmd0aCksXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIGksIHEsIHJlbWFpbmRlciwgZGl2aXNvcjtcbiAgICAgICAgcmVtYWluZGVyID0gMDtcbiAgICAgICAgZm9yIChpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgICAgIGRpdmlzb3IgPSByZW1haW5kZXIgKiBiYXNlICsgdmFsdWVbaV07XG4gICAgICAgICAgICBxID0gdHJ1bmNhdGUoZGl2aXNvciAvIGxhbWJkYSk7XG4gICAgICAgICAgICByZW1haW5kZXIgPSBkaXZpc29yIC0gcSAqIGxhbWJkYTtcbiAgICAgICAgICAgIHF1b3RpZW50W2ldID0gcSB8IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtxdW90aWVudCwgcmVtYWluZGVyIHwgMF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGl2TW9kQW55KHNlbGYsIHYpIHtcbiAgICAgICAgdmFyIHZhbHVlLCBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgaWYgKHN1cHBvcnRzTmF0aXZlQmlnSW50KSB7XG4gICAgICAgICAgICByZXR1cm4gW25ldyBOYXRpdmVCaWdJbnQoc2VsZi52YWx1ZSAvIG4udmFsdWUpLCBuZXcgTmF0aXZlQmlnSW50KHNlbGYudmFsdWUgJSBuLnZhbHVlKV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGEgPSBzZWxmLnZhbHVlLCBiID0gbi52YWx1ZTtcbiAgICAgICAgdmFyIHF1b3RpZW50O1xuICAgICAgICBpZiAoYiA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGRpdmlkZSBieSB6ZXJvXCIpO1xuICAgICAgICBpZiAoc2VsZi5pc1NtYWxsKSB7XG4gICAgICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtuZXcgU21hbGxJbnRlZ2VyKHRydW5jYXRlKGEgLyBiKSksIG5ldyBTbWFsbEludGVnZXIoYSAlIGIpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbSW50ZWdlclswXSwgc2VsZl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgaWYgKGIgPT09IDEpIHJldHVybiBbc2VsZiwgSW50ZWdlclswXV07XG4gICAgICAgICAgICBpZiAoYiA9PSAtMSkgcmV0dXJuIFtzZWxmLm5lZ2F0ZSgpLCBJbnRlZ2VyWzBdXTtcbiAgICAgICAgICAgIHZhciBhYnMgPSBNYXRoLmFicyhiKTtcbiAgICAgICAgICAgIGlmIChhYnMgPCBCQVNFKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBkaXZNb2RTbWFsbChhLCBhYnMpO1xuICAgICAgICAgICAgICAgIHF1b3RpZW50ID0gYXJyYXlUb1NtYWxsKHZhbHVlWzBdKTtcbiAgICAgICAgICAgICAgICB2YXIgcmVtYWluZGVyID0gdmFsdWVbMV07XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuc2lnbikgcmVtYWluZGVyID0gLXJlbWFpbmRlcjtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHF1b3RpZW50ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLnNpZ24gIT09IG4uc2lnbikgcXVvdGllbnQgPSAtcXVvdGllbnQ7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbbmV3IFNtYWxsSW50ZWdlcihxdW90aWVudCksIG5ldyBTbWFsbEludGVnZXIocmVtYWluZGVyKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBbbmV3IEJpZ0ludGVnZXIocXVvdGllbnQsIHNlbGYuc2lnbiAhPT0gbi5zaWduKSwgbmV3IFNtYWxsSW50ZWdlcihyZW1haW5kZXIpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGIgPSBzbWFsbFRvQXJyYXkoYWJzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29tcGFyaXNvbiA9IGNvbXBhcmVBYnMoYSwgYik7XG4gICAgICAgIGlmIChjb21wYXJpc29uID09PSAtMSkgcmV0dXJuIFtJbnRlZ2VyWzBdLCBzZWxmXTtcbiAgICAgICAgaWYgKGNvbXBhcmlzb24gPT09IDApIHJldHVybiBbSW50ZWdlcltzZWxmLnNpZ24gPT09IG4uc2lnbiA/IDEgOiAtMV0sIEludGVnZXJbMF1dO1xuXG4gICAgICAgIC8vIGRpdk1vZDEgaXMgZmFzdGVyIG9uIHNtYWxsZXIgaW5wdXQgc2l6ZXNcbiAgICAgICAgaWYgKGEubGVuZ3RoICsgYi5sZW5ndGggPD0gMjAwKVxuICAgICAgICAgICAgdmFsdWUgPSBkaXZNb2QxKGEsIGIpO1xuICAgICAgICBlbHNlIHZhbHVlID0gZGl2TW9kMihhLCBiKTtcblxuICAgICAgICBxdW90aWVudCA9IHZhbHVlWzBdO1xuICAgICAgICB2YXIgcVNpZ24gPSBzZWxmLnNpZ24gIT09IG4uc2lnbixcbiAgICAgICAgICAgIG1vZCA9IHZhbHVlWzFdLFxuICAgICAgICAgICAgbVNpZ24gPSBzZWxmLnNpZ247XG4gICAgICAgIGlmICh0eXBlb2YgcXVvdGllbnQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGlmIChxU2lnbikgcXVvdGllbnQgPSAtcXVvdGllbnQ7XG4gICAgICAgICAgICBxdW90aWVudCA9IG5ldyBTbWFsbEludGVnZXIocXVvdGllbnQpO1xuICAgICAgICB9IGVsc2UgcXVvdGllbnQgPSBuZXcgQmlnSW50ZWdlcihxdW90aWVudCwgcVNpZ24pO1xuICAgICAgICBpZiAodHlwZW9mIG1vZCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgaWYgKG1TaWduKSBtb2QgPSAtbW9kO1xuICAgICAgICAgICAgbW9kID0gbmV3IFNtYWxsSW50ZWdlcihtb2QpO1xuICAgICAgICB9IGVsc2UgbW9kID0gbmV3IEJpZ0ludGVnZXIobW9kLCBtU2lnbik7XG4gICAgICAgIHJldHVybiBbcXVvdGllbnQsIG1vZF07XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2bW9kID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGRpdk1vZEFueSh0aGlzLCB2KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHF1b3RpZW50OiByZXN1bHRbMF0sXG4gICAgICAgICAgICByZW1haW5kZXI6IHJlc3VsdFsxXVxuICAgICAgICB9O1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5kaXZtb2QgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmRpdm1vZCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmRpdm1vZDtcblxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIGRpdk1vZEFueSh0aGlzLCB2KVswXTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUub3ZlciA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAvIHBhcnNlVmFsdWUodikudmFsdWUpO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5vdmVyID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5kaXZpZGUgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5vdmVyID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2aWRlO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIGRpdk1vZEFueSh0aGlzLCB2KVsxXTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubW9kID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5yZW1haW5kZXIgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlICUgcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnJlbWFpbmRlciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubW9kID0gQmlnSW50ZWdlci5wcm90b3R5cGUucmVtYWluZGVyID0gQmlnSW50ZWdlci5wcm90b3R5cGUubW9kO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxuICAgICAgICAgICAgYSA9IHRoaXMudmFsdWUsXG4gICAgICAgICAgICBiID0gbi52YWx1ZSxcbiAgICAgICAgICAgIHZhbHVlLCB4LCB5O1xuICAgICAgICBpZiAoYiA9PT0gMCkgcmV0dXJuIEludGVnZXJbMV07XG4gICAgICAgIGlmIChhID09PSAwKSByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgaWYgKGEgPT09IDEpIHJldHVybiBJbnRlZ2VyWzFdO1xuICAgICAgICBpZiAoYSA9PT0gLTEpIHJldHVybiBuLmlzRXZlbigpID8gSW50ZWdlclsxXSA6IEludGVnZXJbLTFdO1xuICAgICAgICBpZiAobi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW4uaXNTbWFsbCkgdGhyb3cgbmV3IEVycm9yKFwiVGhlIGV4cG9uZW50IFwiICsgbi50b1N0cmluZygpICsgXCIgaXMgdG9vIGxhcmdlLlwiKTtcbiAgICAgICAgaWYgKHRoaXMuaXNTbWFsbCkge1xuICAgICAgICAgICAgaWYgKGlzUHJlY2lzZSh2YWx1ZSA9IE1hdGgucG93KGEsIGIpKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih0cnVuY2F0ZSh2YWx1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIHggPSB0aGlzO1xuICAgICAgICB5ID0gSW50ZWdlclsxXTtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGlmIChiICYgMSA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHkgPSB5LnRpbWVzKHgpO1xuICAgICAgICAgICAgICAgIC0tYjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiID09PSAwKSBicmVhaztcbiAgICAgICAgICAgIGIgLz0gMjtcbiAgICAgICAgICAgIHggPSB4LnNxdWFyZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB5O1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5wb3cgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5wb3c7XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlLCBiID0gbi52YWx1ZTtcbiAgICAgICAgdmFyIF8wID0gQmlnSW50KDApLCBfMSA9IEJpZ0ludCgxKSwgXzIgPSBCaWdJbnQoMik7XG4gICAgICAgIGlmIChiID09PSBfMCkgcmV0dXJuIEludGVnZXJbMV07XG4gICAgICAgIGlmIChhID09PSBfMCkgcmV0dXJuIEludGVnZXJbMF07XG4gICAgICAgIGlmIChhID09PSBfMSkgcmV0dXJuIEludGVnZXJbMV07XG4gICAgICAgIGlmIChhID09PSBCaWdJbnQoLTEpKSByZXR1cm4gbi5pc0V2ZW4oKSA/IEludGVnZXJbMV0gOiBJbnRlZ2VyWy0xXTtcbiAgICAgICAgaWYgKG4uaXNOZWdhdGl2ZSgpKSByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludChfMCk7XG4gICAgICAgIHZhciB4ID0gdGhpcztcbiAgICAgICAgdmFyIHkgPSBJbnRlZ2VyWzFdO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgaWYgKChiICYgXzEpID09PSBfMSkge1xuICAgICAgICAgICAgICAgIHkgPSB5LnRpbWVzKHgpO1xuICAgICAgICAgICAgICAgIC0tYjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiID09PSBfMCkgYnJlYWs7XG4gICAgICAgICAgICBiIC89IF8yO1xuICAgICAgICAgICAgeCA9IHguc3F1YXJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubW9kUG93ID0gZnVuY3Rpb24gKGV4cCwgbW9kKSB7XG4gICAgICAgIGV4cCA9IHBhcnNlVmFsdWUoZXhwKTtcbiAgICAgICAgbW9kID0gcGFyc2VWYWx1ZShtb2QpO1xuICAgICAgICBpZiAobW9kLmlzWmVybygpKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgdGFrZSBtb2RQb3cgd2l0aCBtb2R1bHVzIDBcIik7XG4gICAgICAgIHZhciByID0gSW50ZWdlclsxXSxcbiAgICAgICAgICAgIGJhc2UgPSB0aGlzLm1vZChtb2QpO1xuICAgICAgICBpZiAoZXhwLmlzTmVnYXRpdmUoKSkge1xuICAgICAgICAgICAgZXhwID0gZXhwLm11bHRpcGx5KEludGVnZXJbLTFdKTtcbiAgICAgICAgICAgIGJhc2UgPSBiYXNlLm1vZEludihtb2QpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChleHAuaXNQb3NpdGl2ZSgpKSB7XG4gICAgICAgICAgICBpZiAoYmFzZS5pc1plcm8oKSkgcmV0dXJuIEludGVnZXJbMF07XG4gICAgICAgICAgICBpZiAoZXhwLmlzT2RkKCkpIHIgPSByLm11bHRpcGx5KGJhc2UpLm1vZChtb2QpO1xuICAgICAgICAgICAgZXhwID0gZXhwLmRpdmlkZSgyKTtcbiAgICAgICAgICAgIGJhc2UgPSBiYXNlLnNxdWFyZSgpLm1vZChtb2QpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5tb2RQb3cgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm1vZFBvdyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZFBvdztcblxuICAgIGZ1bmN0aW9uIGNvbXBhcmVBYnMoYSwgYikge1xuICAgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5sZW5ndGggPiBiLmxlbmd0aCA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gYS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKGFbaV0gIT09IGJbaV0pIHJldHVybiBhW2ldID4gYltpXSA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlQWJzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxuICAgICAgICAgICAgYSA9IHRoaXMudmFsdWUsXG4gICAgICAgICAgICBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkgcmV0dXJuIDE7XG4gICAgICAgIHJldHVybiBjb21wYXJlQWJzKGEsIGIpO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlQWJzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxuICAgICAgICAgICAgYSA9IE1hdGguYWJzKHRoaXMudmFsdWUpLFxuICAgICAgICAgICAgYiA9IG4udmFsdWU7XG4gICAgICAgIGlmIChuLmlzU21hbGwpIHtcbiAgICAgICAgICAgIGIgPSBNYXRoLmFicyhiKTtcbiAgICAgICAgICAgIHJldHVybiBhID09PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuY29tcGFyZUFicyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZTtcbiAgICAgICAgdmFyIGIgPSBwYXJzZVZhbHVlKHYpLnZhbHVlO1xuICAgICAgICBhID0gYSA+PSAwID8gYSA6IC1hO1xuICAgICAgICBiID0gYiA+PSAwID8gYiA6IC1iO1xuICAgICAgICByZXR1cm4gYSA9PT0gYiA/IDAgOiBhID4gYiA/IDEgOiAtMTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgLy8gU2VlIGRpc2N1c3Npb24gYWJvdXQgY29tcGFyaXNvbiB3aXRoIEluZmluaXR5OlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcGV0ZXJvbHNvbi9CaWdJbnRlZ2VyLmpzL2lzc3Vlcy82MVxuICAgICAgICBpZiAodiA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodiA9PT0gLUluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KSxcbiAgICAgICAgICAgIGEgPSB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgYiA9IG4udmFsdWU7XG4gICAgICAgIGlmICh0aGlzLnNpZ24gIT09IG4uc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIG4uc2lnbiA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaWduID8gLTEgOiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21wYXJlQWJzKGEsIGIpICogKHRoaXMuc2lnbiA/IC0xIDogMSk7XG4gICAgfTtcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlVG8gPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlO1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgaWYgKHYgPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHYgPT09IC1JbmZpbml0eSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodiksXG4gICAgICAgICAgICBhID0gdGhpcy52YWx1ZSxcbiAgICAgICAgICAgIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gYSA9PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhIDwgMCAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gYSA8IDAgPyAtMSA6IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGEgPCAwID8gMSA6IC0xO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlVG8gPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmNvbXBhcmU7XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAodikge1xuICAgICAgICBpZiAodiA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodiA9PT0gLUluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWU7XG4gICAgICAgIHZhciBiID0gcGFyc2VWYWx1ZSh2KS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIGEgPT09IGIgPyAwIDogYSA+IGIgPyAxIDogLTE7XG4gICAgfVxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuY29tcGFyZVRvID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5jb21wYXJlO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2KSA9PT0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZXEgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmVxdWFscyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZXEgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmVxdWFscyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmVxID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZXF1YWxzO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubm90RXF1YWxzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2KSAhPT0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubmVxID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5ub3RFcXVhbHMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm5lcSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubm90RXF1YWxzID0gQmlnSW50ZWdlci5wcm90b3R5cGUubmVxID0gQmlnSW50ZWdlci5wcm90b3R5cGUubm90RXF1YWxzO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZ3JlYXRlciA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPiAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5ndCA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZ3JlYXRlciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZ3QgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmdyZWF0ZXIgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ndCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmdyZWF0ZXI7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXIgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlKHYpIDwgMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubHQgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmxlc3NlciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubHQgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmxlc3NlciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmx0ID0gQmlnSW50ZWdlci5wcm90b3R5cGUubGVzc2VyO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZ3JlYXRlck9yRXF1YWxzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2KSA+PSAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5nZXEgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmdyZWF0ZXJPckVxdWFscyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZ2VxID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyT3JFcXVhbHMgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5nZXEgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyT3JFcXVhbHM7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXJPckVxdWFscyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPD0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubGVxID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5sZXNzZXJPckVxdWFscyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubGVxID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXJPckVxdWFscyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmxlcSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmxlc3Nlck9yRXF1YWxzO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWVbMF0gJiAxKSA9PT0gMDtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWUgJiAxKSA9PT0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWUgJiBCaWdJbnQoMSkpID09PSBCaWdJbnQoMCk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy52YWx1ZVswXSAmIDEpID09PSAxO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlICYgMSkgPT09IDE7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzT2RkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWUgJiBCaWdJbnQoMSkpID09PSBCaWdJbnQoMSk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQb3NpdGl2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnNpZ247XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzUG9zaXRpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID4gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNQb3NpdGl2ZSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNQb3NpdGl2ZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzTmVnYXRpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpZ247XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzTmVnYXRpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlIDwgMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNOZWdhdGl2ZSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNOZWdhdGl2ZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzVW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc1VuaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyh0aGlzLnZhbHVlKSA9PT0gMTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNVbml0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hYnMoKS52YWx1ZSA9PT0gQmlnSW50KDEpO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSBCaWdJbnQoMCk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNEaXZpc2libGVCeSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgaWYgKG4uaXNaZXJvKCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKG4uaXNVbml0KCkpIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAobi5jb21wYXJlQWJzKDIpID09PSAwKSByZXR1cm4gdGhpcy5pc0V2ZW4oKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kKG4pLmlzWmVybygpO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc0RpdmlzaWJsZUJ5ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc0RpdmlzaWJsZUJ5ID0gQmlnSW50ZWdlci5wcm90b3R5cGUuaXNEaXZpc2libGVCeTtcblxuICAgIGZ1bmN0aW9uIGlzQmFzaWNQcmltZSh2KSB7XG4gICAgICAgIHZhciBuID0gdi5hYnMoKTtcbiAgICAgICAgaWYgKG4uaXNVbml0KCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKG4uZXF1YWxzKDIpIHx8IG4uZXF1YWxzKDMpIHx8IG4uZXF1YWxzKDUpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKG4uaXNFdmVuKCkgfHwgbi5pc0RpdmlzaWJsZUJ5KDMpIHx8IG4uaXNEaXZpc2libGVCeSg1KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAobi5sZXNzZXIoNDkpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgLy8gd2UgZG9uJ3Qga25vdyBpZiBpdCdzIHByaW1lOiBsZXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBmaWd1cmUgaXQgb3V0XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWlsbGVyUmFiaW5UZXN0KG4sIGEpIHtcbiAgICAgICAgdmFyIG5QcmV2ID0gbi5wcmV2KCksXG4gICAgICAgICAgICBiID0gblByZXYsXG4gICAgICAgICAgICByID0gMCxcbiAgICAgICAgICAgIGQsIHQsIGksIHg7XG4gICAgICAgIHdoaWxlIChiLmlzRXZlbigpKSBiID0gYi5kaXZpZGUoMiksIHIrKztcbiAgICAgICAgbmV4dDogZm9yIChpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChuLmxlc3NlcihhW2ldKSkgY29udGludWU7XG4gICAgICAgICAgICB4ID0gYmlnSW50KGFbaV0pLm1vZFBvdyhiLCBuKTtcbiAgICAgICAgICAgIGlmICh4LmlzVW5pdCgpIHx8IHguZXF1YWxzKG5QcmV2KSkgY29udGludWU7XG4gICAgICAgICAgICBmb3IgKGQgPSByIC0gMTsgZCAhPSAwOyBkLS0pIHtcbiAgICAgICAgICAgICAgICB4ID0geC5zcXVhcmUoKS5tb2Qobik7XG4gICAgICAgICAgICAgICAgaWYgKHguaXNVbml0KCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoeC5lcXVhbHMoblByZXYpKSBjb250aW51ZSBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIFNldCBcInN0cmljdFwiIHRvIHRydWUgdG8gZm9yY2UgR1JILXN1cHBvcnRlZCBsb3dlciBib3VuZCBvZiAyKmxvZyhOKV4yXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcmltZSA9IGZ1bmN0aW9uIChzdHJpY3QpIHtcbiAgICAgICAgdmFyIGlzUHJpbWUgPSBpc0Jhc2ljUHJpbWUodGhpcyk7XG4gICAgICAgIGlmIChpc1ByaW1lICE9PSB1bmRlZmluZWQpIHJldHVybiBpc1ByaW1lO1xuICAgICAgICB2YXIgbiA9IHRoaXMuYWJzKCk7XG4gICAgICAgIHZhciBiaXRzID0gbi5iaXRMZW5ndGgoKTtcbiAgICAgICAgaWYgKGJpdHMgPD0gNjQpXG4gICAgICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIFsyLCAzLCA1LCA3LCAxMSwgMTMsIDE3LCAxOSwgMjMsIDI5LCAzMSwgMzddKTtcbiAgICAgICAgdmFyIGxvZ04gPSBNYXRoLmxvZygyKSAqIGJpdHMudG9KU051bWJlcigpO1xuICAgICAgICB2YXIgdCA9IE1hdGguY2VpbCgoc3RyaWN0ID09PSB0cnVlKSA/ICgyICogTWF0aC5wb3cobG9nTiwgMikpIDogbG9nTik7XG4gICAgICAgIGZvciAodmFyIGEgPSBbXSwgaSA9IDA7IGkgPCB0OyBpKyspIHtcbiAgICAgICAgICAgIGEucHVzaChiaWdJbnQoaSArIDIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIGEpO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc1ByaW1lID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc1ByaW1lID0gQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcmltZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzUHJvYmFibGVQcmltZSA9IGZ1bmN0aW9uIChpdGVyYXRpb25zKSB7XG4gICAgICAgIHZhciBpc1ByaW1lID0gaXNCYXNpY1ByaW1lKHRoaXMpO1xuICAgICAgICBpZiAoaXNQcmltZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gaXNQcmltZTtcbiAgICAgICAgdmFyIG4gPSB0aGlzLmFicygpO1xuICAgICAgICB2YXIgdCA9IGl0ZXJhdGlvbnMgPT09IHVuZGVmaW5lZCA/IDUgOiBpdGVyYXRpb25zO1xuICAgICAgICBmb3IgKHZhciBhID0gW10sIGkgPSAwOyBpIDwgdDsgaSsrKSB7XG4gICAgICAgICAgICBhLnB1c2goYmlnSW50LnJhbmRCZXR3ZWVuKDIsIG4ubWludXMoMikpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIGEpO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc1Byb2JhYmxlUHJpbWUgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzUHJvYmFibGVQcmltZSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmlzUHJvYmFibGVQcmltZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZEludiA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHZhciB0ID0gYmlnSW50Lnplcm8sIG5ld1QgPSBiaWdJbnQub25lLCByID0gcGFyc2VWYWx1ZShuKSwgbmV3UiA9IHRoaXMuYWJzKCksIHEsIGxhc3RULCBsYXN0UjtcbiAgICAgICAgd2hpbGUgKCFuZXdSLmlzWmVybygpKSB7XG4gICAgICAgICAgICBxID0gci5kaXZpZGUobmV3Uik7XG4gICAgICAgICAgICBsYXN0VCA9IHQ7XG4gICAgICAgICAgICBsYXN0UiA9IHI7XG4gICAgICAgICAgICB0ID0gbmV3VDtcbiAgICAgICAgICAgIHIgPSBuZXdSO1xuICAgICAgICAgICAgbmV3VCA9IGxhc3RULnN1YnRyYWN0KHEubXVsdGlwbHkobmV3VCkpO1xuICAgICAgICAgICAgbmV3UiA9IGxhc3RSLnN1YnRyYWN0KHEubXVsdGlwbHkobmV3UikpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghci5pc1VuaXQoKSkgdGhyb3cgbmV3IEVycm9yKHRoaXMudG9TdHJpbmcoKSArIFwiIGFuZCBcIiArIG4udG9TdHJpbmcoKSArIFwiIGFyZSBub3QgY28tcHJpbWVcIik7XG4gICAgICAgIGlmICh0LmNvbXBhcmUoMCkgPT09IC0xKSB7XG4gICAgICAgICAgICB0ID0gdC5hZGQobik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdC5uZWdhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5tb2RJbnYgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm1vZEludiA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZEludjtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmICh0aGlzLnNpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiBzdWJ0cmFjdFNtYWxsKHZhbHVlLCAxLCB0aGlzLnNpZ24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihhZGRTbWFsbCh2YWx1ZSwgMSksIHRoaXMuc2lnbik7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSArIDEgPCBNQVhfSU5UKSByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih2YWx1ZSArIDEpO1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoTUFYX0lOVF9BUlIsIGZhbHNlKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSArIEJpZ0ludCgxKSk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUucHJldiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGFkZFNtYWxsKHZhbHVlLCAxKSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1YnRyYWN0U21hbGwodmFsdWUsIDEsIHRoaXMuc2lnbik7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnByZXYgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAtIDEgPiAtTUFYX0lOVCkgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodmFsdWUgLSAxKTtcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKE1BWF9JTlRfQVJSLCB0cnVlKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUucHJldiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAtIEJpZ0ludCgxKSk7XG4gICAgfVxuXG4gICAgdmFyIHBvd2Vyc09mVHdvID0gWzFdO1xuICAgIHdoaWxlICgyICogcG93ZXJzT2ZUd29bcG93ZXJzT2ZUd28ubGVuZ3RoIC0gMV0gPD0gQkFTRSkgcG93ZXJzT2ZUd28ucHVzaCgyICogcG93ZXJzT2ZUd29bcG93ZXJzT2ZUd28ubGVuZ3RoIC0gMV0pO1xuICAgIHZhciBwb3dlcnMyTGVuZ3RoID0gcG93ZXJzT2ZUd28ubGVuZ3RoLCBoaWdoZXN0UG93ZXIyID0gcG93ZXJzT2ZUd29bcG93ZXJzMkxlbmd0aCAtIDFdO1xuXG4gICAgZnVuY3Rpb24gc2hpZnRfaXNTbWFsbChuKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyhuKSA8PSBCQVNFO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0TGVmdCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KS50b0pTTnVtYmVyKCk7XG4gICAgICAgIGlmICghc2hpZnRfaXNTbWFsbChuKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFN0cmluZyhuKSArIFwiIGlzIHRvbyBsYXJnZSBmb3Igc2hpZnRpbmcuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuIDwgMCkgcmV0dXJuIHRoaXMuc2hpZnRSaWdodCgtbik7XG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzO1xuICAgICAgICBpZiAocmVzdWx0LmlzWmVybygpKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICB3aGlsZSAobiA+PSBwb3dlcnMyTGVuZ3RoKSB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQubXVsdGlwbHkoaGlnaGVzdFBvd2VyMik7XG4gICAgICAgICAgICBuIC09IHBvd2VyczJMZW5ndGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQubXVsdGlwbHkocG93ZXJzT2ZUd29bbl0pO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5zaGlmdExlZnQgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnNoaWZ0TGVmdCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0TGVmdDtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0UmlnaHQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgcmVtUXVvO1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodikudG9KU051bWJlcigpO1xuICAgICAgICBpZiAoIXNoaWZ0X2lzU21hbGwobikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihTdHJpbmcobikgKyBcIiBpcyB0b28gbGFyZ2UgZm9yIHNoaWZ0aW5nLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobiA8IDApIHJldHVybiB0aGlzLnNoaWZ0TGVmdCgtbik7XG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzO1xuICAgICAgICB3aGlsZSAobiA+PSBwb3dlcnMyTGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmlzWmVybygpIHx8IChyZXN1bHQuaXNOZWdhdGl2ZSgpICYmIHJlc3VsdC5pc1VuaXQoKSkpIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICByZW1RdW8gPSBkaXZNb2RBbnkocmVzdWx0LCBoaWdoZXN0UG93ZXIyKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlbVF1b1sxXS5pc05lZ2F0aXZlKCkgPyByZW1RdW9bMF0ucHJldigpIDogcmVtUXVvWzBdO1xuICAgICAgICAgICAgbiAtPSBwb3dlcnMyTGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICByZW1RdW8gPSBkaXZNb2RBbnkocmVzdWx0LCBwb3dlcnNPZlR3b1tuXSk7XG4gICAgICAgIHJldHVybiByZW1RdW9bMV0uaXNOZWdhdGl2ZSgpID8gcmVtUXVvWzBdLnByZXYoKSA6IHJlbVF1b1swXTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc2hpZnRSaWdodCA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuc2hpZnRSaWdodCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0UmlnaHQ7XG5cbiAgICBmdW5jdGlvbiBiaXR3aXNlKHgsIHksIGZuKSB7XG4gICAgICAgIHkgPSBwYXJzZVZhbHVlKHkpO1xuICAgICAgICB2YXIgeFNpZ24gPSB4LmlzTmVnYXRpdmUoKSwgeVNpZ24gPSB5LmlzTmVnYXRpdmUoKTtcbiAgICAgICAgdmFyIHhSZW0gPSB4U2lnbiA/IHgubm90KCkgOiB4LFxuICAgICAgICAgICAgeVJlbSA9IHlTaWduID8geS5ub3QoKSA6IHk7XG4gICAgICAgIHZhciB4RGlnaXQgPSAwLCB5RGlnaXQgPSAwO1xuICAgICAgICB2YXIgeERpdk1vZCA9IG51bGwsIHlEaXZNb2QgPSBudWxsO1xuICAgICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICAgIHdoaWxlICgheFJlbS5pc1plcm8oKSB8fCAheVJlbS5pc1plcm8oKSkge1xuICAgICAgICAgICAgeERpdk1vZCA9IGRpdk1vZEFueSh4UmVtLCBoaWdoZXN0UG93ZXIyKTtcbiAgICAgICAgICAgIHhEaWdpdCA9IHhEaXZNb2RbMV0udG9KU051bWJlcigpO1xuICAgICAgICAgICAgaWYgKHhTaWduKSB7XG4gICAgICAgICAgICAgICAgeERpZ2l0ID0gaGlnaGVzdFBvd2VyMiAtIDEgLSB4RGlnaXQ7IC8vIHR3bydzIGNvbXBsZW1lbnQgZm9yIG5lZ2F0aXZlIG51bWJlcnNcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgeURpdk1vZCA9IGRpdk1vZEFueSh5UmVtLCBoaWdoZXN0UG93ZXIyKTtcbiAgICAgICAgICAgIHlEaWdpdCA9IHlEaXZNb2RbMV0udG9KU051bWJlcigpO1xuICAgICAgICAgICAgaWYgKHlTaWduKSB7XG4gICAgICAgICAgICAgICAgeURpZ2l0ID0gaGlnaGVzdFBvd2VyMiAtIDEgLSB5RGlnaXQ7IC8vIHR3bydzIGNvbXBsZW1lbnQgZm9yIG5lZ2F0aXZlIG51bWJlcnNcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgeFJlbSA9IHhEaXZNb2RbMF07XG4gICAgICAgICAgICB5UmVtID0geURpdk1vZFswXTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZuKHhEaWdpdCwgeURpZ2l0KSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN1bSA9IGZuKHhTaWduID8gMSA6IDAsIHlTaWduID8gMSA6IDApICE9PSAwID8gYmlnSW50KC0xKSA6IGJpZ0ludCgwKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IHJlc3VsdC5sZW5ndGggLSAxOyBpID49IDA7IGkgLT0gMSkge1xuICAgICAgICAgICAgc3VtID0gc3VtLm11bHRpcGx5KGhpZ2hlc3RQb3dlcjIpLmFkZChiaWdJbnQocmVzdWx0W2ldKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1bTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ub3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5lZ2F0ZSgpLnByZXYoKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubm90ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5ub3QgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ub3Q7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gYml0d2lzZSh0aGlzLCBuLCBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSAmIGI7IH0pO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5hbmQgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmFuZCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmFuZDtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIGJpdHdpc2UodGhpcywgbiwgZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgfCBiOyB9KTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUub3IgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm9yID0gQmlnSW50ZWdlci5wcm90b3R5cGUub3I7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gYml0d2lzZSh0aGlzLCBuLCBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSBeIGI7IH0pO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS54b3IgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnhvciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnhvcjtcblxuICAgIHZhciBMT0JNQVNLX0kgPSAxIDw8IDMwLCBMT0JNQVNLX0JJID0gKEJBU0UgJiAtQkFTRSkgKiAoQkFTRSAmIC1CQVNFKSB8IExPQk1BU0tfSTtcbiAgICBmdW5jdGlvbiByb3VnaExPQihuKSB7IC8vIGdldCBsb3dlc3RPbmVCaXQgKHJvdWdoKVxuICAgICAgICAvLyBTbWFsbEludGVnZXI6IHJldHVybiBNaW4obG93ZXN0T25lQml0KG4pLCAxIDw8IDMwKVxuICAgICAgICAvLyBCaWdJbnRlZ2VyOiByZXR1cm4gTWluKGxvd2VzdE9uZUJpdChuKSwgMSA8PCAxNCkgW0JBU0U9MWU3XVxuICAgICAgICB2YXIgdiA9IG4udmFsdWUsXG4gICAgICAgICAgICB4ID0gdHlwZW9mIHYgPT09IFwibnVtYmVyXCIgPyB2IHwgTE9CTUFTS19JIDpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdiA9PT0gXCJiaWdpbnRcIiA/IHYgfCBCaWdJbnQoTE9CTUFTS19JKSA6XG4gICAgICAgICAgICAgICAgICAgIHZbMF0gKyB2WzFdICogQkFTRSB8IExPQk1BU0tfQkk7XG4gICAgICAgIHJldHVybiB4ICYgLXg7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW50ZWdlckxvZ2FyaXRobSh2YWx1ZSwgYmFzZSkge1xuICAgICAgICBpZiAoYmFzZS5jb21wYXJlVG8odmFsdWUpIDw9IDApIHtcbiAgICAgICAgICAgIHZhciB0bXAgPSBpbnRlZ2VyTG9nYXJpdGhtKHZhbHVlLCBiYXNlLnNxdWFyZShiYXNlKSk7XG4gICAgICAgICAgICB2YXIgcCA9IHRtcC5wO1xuICAgICAgICAgICAgdmFyIGUgPSB0bXAuZTtcbiAgICAgICAgICAgIHZhciB0ID0gcC5tdWx0aXBseShiYXNlKTtcbiAgICAgICAgICAgIHJldHVybiB0LmNvbXBhcmVUbyh2YWx1ZSkgPD0gMCA/IHsgcDogdCwgZTogZSAqIDIgKyAxIH0gOiB7IHA6IHAsIGU6IGUgKiAyIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcDogYmlnSW50KDEpLCBlOiAwIH07XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuYml0TGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbiA9IHRoaXM7XG4gICAgICAgIGlmIChuLmNvbXBhcmVUbyhiaWdJbnQoMCkpIDwgMCkge1xuICAgICAgICAgICAgbiA9IG4ubmVnYXRlKCkuc3VidHJhY3QoYmlnSW50KDEpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobi5jb21wYXJlVG8oYmlnSW50KDApKSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGJpZ0ludCgwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmlnSW50KGludGVnZXJMb2dhcml0aG0obiwgYmlnSW50KDIpKS5lKS5hZGQoYmlnSW50KDEpKTtcbiAgICB9XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5iaXRMZW5ndGggPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmJpdExlbmd0aCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmJpdExlbmd0aDtcblxuICAgIGZ1bmN0aW9uIG1heChhLCBiKSB7XG4gICAgICAgIGEgPSBwYXJzZVZhbHVlKGEpO1xuICAgICAgICBiID0gcGFyc2VWYWx1ZShiKTtcbiAgICAgICAgcmV0dXJuIGEuZ3JlYXRlcihiKSA/IGEgOiBiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtaW4oYSwgYikge1xuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKTtcbiAgICAgICAgYiA9IHBhcnNlVmFsdWUoYik7XG4gICAgICAgIHJldHVybiBhLmxlc3NlcihiKSA/IGEgOiBiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnY2QoYSwgYikge1xuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKS5hYnMoKTtcbiAgICAgICAgYiA9IHBhcnNlVmFsdWUoYikuYWJzKCk7XG4gICAgICAgIGlmIChhLmVxdWFscyhiKSkgcmV0dXJuIGE7XG4gICAgICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYjtcbiAgICAgICAgaWYgKGIuaXNaZXJvKCkpIHJldHVybiBhO1xuICAgICAgICB2YXIgYyA9IEludGVnZXJbMV0sIGQsIHQ7XG4gICAgICAgIHdoaWxlIChhLmlzRXZlbigpICYmIGIuaXNFdmVuKCkpIHtcbiAgICAgICAgICAgIGQgPSBtaW4ocm91Z2hMT0IoYSksIHJvdWdoTE9CKGIpKTtcbiAgICAgICAgICAgIGEgPSBhLmRpdmlkZShkKTtcbiAgICAgICAgICAgIGIgPSBiLmRpdmlkZShkKTtcbiAgICAgICAgICAgIGMgPSBjLm11bHRpcGx5KGQpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChhLmlzRXZlbigpKSB7XG4gICAgICAgICAgICBhID0gYS5kaXZpZGUocm91Z2hMT0IoYSkpO1xuICAgICAgICB9XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIHdoaWxlIChiLmlzRXZlbigpKSB7XG4gICAgICAgICAgICAgICAgYiA9IGIuZGl2aWRlKHJvdWdoTE9CKGIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhLmdyZWF0ZXIoYikpIHtcbiAgICAgICAgICAgICAgICB0ID0gYjsgYiA9IGE7IGEgPSB0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYiA9IGIuc3VidHJhY3QoYSk7XG4gICAgICAgIH0gd2hpbGUgKCFiLmlzWmVybygpKTtcbiAgICAgICAgcmV0dXJuIGMuaXNVbml0KCkgPyBhIDogYS5tdWx0aXBseShjKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbGNtKGEsIGIpIHtcbiAgICAgICAgYSA9IHBhcnNlVmFsdWUoYSkuYWJzKCk7XG4gICAgICAgIGIgPSBwYXJzZVZhbHVlKGIpLmFicygpO1xuICAgICAgICByZXR1cm4gYS5kaXZpZGUoZ2NkKGEsIGIpKS5tdWx0aXBseShiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmFuZEJldHdlZW4oYSwgYikge1xuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKTtcbiAgICAgICAgYiA9IHBhcnNlVmFsdWUoYik7XG4gICAgICAgIHZhciBsb3cgPSBtaW4oYSwgYiksIGhpZ2ggPSBtYXgoYSwgYik7XG4gICAgICAgIHZhciByYW5nZSA9IGhpZ2guc3VidHJhY3QobG93KS5hZGQoMSk7XG4gICAgICAgIGlmIChyYW5nZS5pc1NtYWxsKSByZXR1cm4gbG93LmFkZChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiByYW5nZSkpO1xuICAgICAgICB2YXIgZGlnaXRzID0gdG9CYXNlKHJhbmdlLCBCQVNFKS52YWx1ZTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdLCByZXN0cmljdGVkID0gdHJ1ZTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaWdpdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciB0b3AgPSByZXN0cmljdGVkID8gZGlnaXRzW2ldIDogQkFTRTtcbiAgICAgICAgICAgIHZhciBkaWdpdCA9IHRydW5jYXRlKE1hdGgucmFuZG9tKCkgKiB0b3ApO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goZGlnaXQpO1xuICAgICAgICAgICAgaWYgKGRpZ2l0IDwgdG9wKSByZXN0cmljdGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvdy5hZGQoSW50ZWdlci5mcm9tQXJyYXkocmVzdWx0LCBCQVNFLCBmYWxzZSkpO1xuICAgIH1cblxuICAgIHZhciBwYXJzZUJhc2UgPSBmdW5jdGlvbiAodGV4dCwgYmFzZSwgYWxwaGFiZXQsIGNhc2VTZW5zaXRpdmUpIHtcbiAgICAgICAgYWxwaGFiZXQgPSBhbHBoYWJldCB8fCBERUZBVUxUX0FMUEhBQkVUO1xuICAgICAgICB0ZXh0ID0gU3RyaW5nKHRleHQpO1xuICAgICAgICBpZiAoIWNhc2VTZW5zaXRpdmUpIHtcbiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBhbHBoYWJldCA9IGFscGhhYmV0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxlbmd0aCA9IHRleHQubGVuZ3RoO1xuICAgICAgICB2YXIgaTtcbiAgICAgICAgdmFyIGFic0Jhc2UgPSBNYXRoLmFicyhiYXNlKTtcbiAgICAgICAgdmFyIGFscGhhYmV0VmFsdWVzID0ge307XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhbHBoYWJldC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYWxwaGFiZXRWYWx1ZXNbYWxwaGFiZXRbaV1dID0gaTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBjID0gdGV4dFtpXTtcbiAgICAgICAgICAgIGlmIChjID09PSBcIi1cIikgY29udGludWU7XG4gICAgICAgICAgICBpZiAoYyBpbiBhbHBoYWJldFZhbHVlcykge1xuICAgICAgICAgICAgICAgIGlmIChhbHBoYWJldFZhbHVlc1tjXSA+PSBhYnNCYXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjID09PSBcIjFcIiAmJiBhYnNCYXNlID09PSAxKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGMgKyBcIiBpcyBub3QgYSB2YWxpZCBkaWdpdCBpbiBiYXNlIFwiICsgYmFzZSArIFwiLlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYmFzZSA9IHBhcnNlVmFsdWUoYmFzZSk7XG4gICAgICAgIHZhciBkaWdpdHMgPSBbXTtcbiAgICAgICAgdmFyIGlzTmVnYXRpdmUgPSB0ZXh0WzBdID09PSBcIi1cIjtcbiAgICAgICAgZm9yIChpID0gaXNOZWdhdGl2ZSA/IDEgOiAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGMgPSB0ZXh0W2ldO1xuICAgICAgICAgICAgaWYgKGMgaW4gYWxwaGFiZXRWYWx1ZXMpIGRpZ2l0cy5wdXNoKHBhcnNlVmFsdWUoYWxwaGFiZXRWYWx1ZXNbY10pKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGMgPT09IFwiPFwiKSB7XG4gICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gaTtcbiAgICAgICAgICAgICAgICBkbyB7IGkrKzsgfSB3aGlsZSAodGV4dFtpXSAhPT0gXCI+XCIgJiYgaSA8IHRleHQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBkaWdpdHMucHVzaChwYXJzZVZhbHVlKHRleHQuc2xpY2Uoc3RhcnQgKyAxLCBpKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoYyArIFwiIGlzIG5vdCBhIHZhbGlkIGNoYXJhY3RlclwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VCYXNlRnJvbUFycmF5KGRpZ2l0cywgYmFzZSwgaXNOZWdhdGl2ZSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHBhcnNlQmFzZUZyb21BcnJheShkaWdpdHMsIGJhc2UsIGlzTmVnYXRpdmUpIHtcbiAgICAgICAgdmFyIHZhbCA9IEludGVnZXJbMF0sIHBvdyA9IEludGVnZXJbMV0sIGk7XG4gICAgICAgIGZvciAoaSA9IGRpZ2l0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgdmFsID0gdmFsLmFkZChkaWdpdHNbaV0udGltZXMocG93KSk7XG4gICAgICAgICAgICBwb3cgPSBwb3cudGltZXMoYmFzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzTmVnYXRpdmUgPyB2YWwubmVnYXRlKCkgOiB2YWw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RyaW5naWZ5KGRpZ2l0LCBhbHBoYWJldCkge1xuICAgICAgICBhbHBoYWJldCA9IGFscGhhYmV0IHx8IERFRkFVTFRfQUxQSEFCRVQ7XG4gICAgICAgIGlmIChkaWdpdCA8IGFscGhhYmV0Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGFscGhhYmV0W2RpZ2l0XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCI8XCIgKyBkaWdpdCArIFwiPlwiO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvQmFzZShuLCBiYXNlKSB7XG4gICAgICAgIGJhc2UgPSBiaWdJbnQoYmFzZSk7XG4gICAgICAgIGlmIChiYXNlLmlzWmVybygpKSB7XG4gICAgICAgICAgICBpZiAobi5pc1plcm8oKSkgcmV0dXJuIHsgdmFsdWU6IFswXSwgaXNOZWdhdGl2ZTogZmFsc2UgfTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBjb252ZXJ0IG5vbnplcm8gbnVtYmVycyB0byBiYXNlIDAuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiYXNlLmVxdWFscygtMSkpIHtcbiAgICAgICAgICAgIGlmIChuLmlzWmVybygpKSByZXR1cm4geyB2YWx1ZTogWzBdLCBpc05lZ2F0aXZlOiBmYWxzZSB9O1xuICAgICAgICAgICAgaWYgKG4uaXNOZWdhdGl2ZSgpKVxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBbXS5jb25jYXQuYXBwbHkoW10sIEFycmF5LmFwcGx5KG51bGwsIEFycmF5KC1uLnRvSlNOdW1iZXIoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKEFycmF5LnByb3RvdHlwZS52YWx1ZU9mLCBbMSwgMF0pXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGlzTmVnYXRpdmU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdmFyIGFyciA9IEFycmF5LmFwcGx5KG51bGwsIEFycmF5KG4udG9KU051bWJlcigpIC0gMSkpXG4gICAgICAgICAgICAgICAgLm1hcChBcnJheS5wcm90b3R5cGUudmFsdWVPZiwgWzAsIDFdKTtcbiAgICAgICAgICAgIGFyci51bnNoaWZ0KFsxXSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBbXS5jb25jYXQuYXBwbHkoW10sIGFyciksXG4gICAgICAgICAgICAgICAgaXNOZWdhdGl2ZTogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbmVnID0gZmFsc2U7XG4gICAgICAgIGlmIChuLmlzTmVnYXRpdmUoKSAmJiBiYXNlLmlzUG9zaXRpdmUoKSkge1xuICAgICAgICAgICAgbmVnID0gdHJ1ZTtcbiAgICAgICAgICAgIG4gPSBuLmFicygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiYXNlLmlzVW5pdCgpKSB7XG4gICAgICAgICAgICBpZiAobi5pc1plcm8oKSkgcmV0dXJuIHsgdmFsdWU6IFswXSwgaXNOZWdhdGl2ZTogZmFsc2UgfTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogQXJyYXkuYXBwbHkobnVsbCwgQXJyYXkobi50b0pTTnVtYmVyKCkpKVxuICAgICAgICAgICAgICAgICAgICAubWFwKE51bWJlci5wcm90b3R5cGUudmFsdWVPZiwgMSksXG4gICAgICAgICAgICAgICAgaXNOZWdhdGl2ZTogbmVnXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBvdXQgPSBbXTtcbiAgICAgICAgdmFyIGxlZnQgPSBuLCBkaXZtb2Q7XG4gICAgICAgIHdoaWxlIChsZWZ0LmlzTmVnYXRpdmUoKSB8fCBsZWZ0LmNvbXBhcmVBYnMoYmFzZSkgPj0gMCkge1xuICAgICAgICAgICAgZGl2bW9kID0gbGVmdC5kaXZtb2QoYmFzZSk7XG4gICAgICAgICAgICBsZWZ0ID0gZGl2bW9kLnF1b3RpZW50O1xuICAgICAgICAgICAgdmFyIGRpZ2l0ID0gZGl2bW9kLnJlbWFpbmRlcjtcbiAgICAgICAgICAgIGlmIChkaWdpdC5pc05lZ2F0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICBkaWdpdCA9IGJhc2UubWludXMoZGlnaXQpLmFicygpO1xuICAgICAgICAgICAgICAgIGxlZnQgPSBsZWZ0Lm5leHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dC5wdXNoKGRpZ2l0LnRvSlNOdW1iZXIoKSk7XG4gICAgICAgIH1cbiAgICAgICAgb3V0LnB1c2gobGVmdC50b0pTTnVtYmVyKCkpO1xuICAgICAgICByZXR1cm4geyB2YWx1ZTogb3V0LnJldmVyc2UoKSwgaXNOZWdhdGl2ZTogbmVnIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9CYXNlU3RyaW5nKG4sIGJhc2UsIGFscGhhYmV0KSB7XG4gICAgICAgIHZhciBhcnIgPSB0b0Jhc2UobiwgYmFzZSk7XG4gICAgICAgIHJldHVybiAoYXJyLmlzTmVnYXRpdmUgPyBcIi1cIiA6IFwiXCIpICsgYXJyLnZhbHVlLm1hcChmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ2lmeSh4LCBhbHBoYWJldCk7XG4gICAgICAgIH0pLmpvaW4oJycpO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAocmFkaXgpIHtcbiAgICAgICAgcmV0dXJuIHRvQmFzZSh0aGlzLCByYWRpeCk7XG4gICAgfTtcblxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIChyYWRpeCkge1xuICAgICAgICByZXR1cm4gdG9CYXNlKHRoaXMsIHJhZGl4KTtcbiAgICB9O1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKHJhZGl4KSB7XG4gICAgICAgIHJldHVybiB0b0Jhc2UodGhpcywgcmFkaXgpO1xuICAgIH07XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChyYWRpeCwgYWxwaGFiZXQpIHtcbiAgICAgICAgaWYgKHJhZGl4ID09PSB1bmRlZmluZWQpIHJhZGl4ID0gMTA7XG4gICAgICAgIGlmIChyYWRpeCAhPT0gMTApIHJldHVybiB0b0Jhc2VTdHJpbmcodGhpcywgcmFkaXgsIGFscGhhYmV0KTtcbiAgICAgICAgdmFyIHYgPSB0aGlzLnZhbHVlLCBsID0gdi5sZW5ndGgsIHN0ciA9IFN0cmluZyh2Wy0tbF0pLCB6ZXJvcyA9IFwiMDAwMDAwMFwiLCBkaWdpdDtcbiAgICAgICAgd2hpbGUgKC0tbCA+PSAwKSB7XG4gICAgICAgICAgICBkaWdpdCA9IFN0cmluZyh2W2xdKTtcbiAgICAgICAgICAgIHN0ciArPSB6ZXJvcy5zbGljZShkaWdpdC5sZW5ndGgpICsgZGlnaXQ7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNpZ24gPSB0aGlzLnNpZ24gPyBcIi1cIiA6IFwiXCI7XG4gICAgICAgIHJldHVybiBzaWduICsgc3RyO1xuICAgIH07XG5cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKHJhZGl4LCBhbHBoYWJldCkge1xuICAgICAgICBpZiAocmFkaXggPT09IHVuZGVmaW5lZCkgcmFkaXggPSAxMDtcbiAgICAgICAgaWYgKHJhZGl4ICE9IDEwKSByZXR1cm4gdG9CYXNlU3RyaW5nKHRoaXMsIHJhZGl4LCBhbHBoYWJldCk7XG4gICAgICAgIHJldHVybiBTdHJpbmcodGhpcy52YWx1ZSk7XG4gICAgfTtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudG9TdHJpbmcgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS50b0pTT04gPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS50b0pTT04gPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTsgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUudmFsdWVPZiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHRoaXMudG9TdHJpbmcoKSwgMTApO1xuICAgIH07XG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUudG9KU051bWJlciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnZhbHVlT2Y7XG5cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnZhbHVlT2YgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS50b0pTTnVtYmVyID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS52YWx1ZU9mO1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudmFsdWVPZiA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudG9KU051bWJlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHRoaXMudG9TdHJpbmcoKSwgMTApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlU3RyaW5nVmFsdWUodikge1xuICAgICAgICBpZiAoaXNQcmVjaXNlKCt2KSkge1xuICAgICAgICAgICAgdmFyIHggPSArdjtcbiAgICAgICAgICAgIGlmICh4ID09PSB0cnVuY2F0ZSh4KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwcG9ydHNOYXRpdmVCaWdJbnQgPyBuZXcgTmF0aXZlQmlnSW50KEJpZ0ludCh4KSkgOiBuZXcgU21hbGxJbnRlZ2VyKHgpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBpbnRlZ2VyOiBcIiArIHYpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzaWduID0gdlswXSA9PT0gXCItXCI7XG4gICAgICAgIGlmIChzaWduKSB2ID0gdi5zbGljZSgxKTtcbiAgICAgICAgdmFyIHNwbGl0ID0gdi5zcGxpdCgvZS9pKTtcbiAgICAgICAgaWYgKHNwbGl0Lmxlbmd0aCA+IDIpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW50ZWdlcjogXCIgKyBzcGxpdC5qb2luKFwiZVwiKSk7XG4gICAgICAgIGlmIChzcGxpdC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIHZhciBleHAgPSBzcGxpdFsxXTtcbiAgICAgICAgICAgIGlmIChleHBbMF0gPT09IFwiK1wiKSBleHAgPSBleHAuc2xpY2UoMSk7XG4gICAgICAgICAgICBleHAgPSArZXhwO1xuICAgICAgICAgICAgaWYgKGV4cCAhPT0gdHJ1bmNhdGUoZXhwKSB8fCAhaXNQcmVjaXNlKGV4cCkpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW50ZWdlcjogXCIgKyBleHAgKyBcIiBpcyBub3QgYSB2YWxpZCBleHBvbmVudC5cIik7XG4gICAgICAgICAgICB2YXIgdGV4dCA9IHNwbGl0WzBdO1xuICAgICAgICAgICAgdmFyIGRlY2ltYWxQbGFjZSA9IHRleHQuaW5kZXhPZihcIi5cIik7XG4gICAgICAgICAgICBpZiAoZGVjaW1hbFBsYWNlID49IDApIHtcbiAgICAgICAgICAgICAgICBleHAgLT0gdGV4dC5sZW5ndGggLSBkZWNpbWFsUGxhY2UgLSAxO1xuICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnNsaWNlKDAsIGRlY2ltYWxQbGFjZSkgKyB0ZXh0LnNsaWNlKGRlY2ltYWxQbGFjZSArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4cCA8IDApIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBpbmNsdWRlIG5lZ2F0aXZlIGV4cG9uZW50IHBhcnQgZm9yIGludGVnZXJzXCIpO1xuICAgICAgICAgICAgdGV4dCArPSAobmV3IEFycmF5KGV4cCArIDEpKS5qb2luKFwiMFwiKTtcbiAgICAgICAgICAgIHYgPSB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBpc1ZhbGlkID0gL14oWzAtOV1bMC05XSopJC8udGVzdCh2KTtcbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGludGVnZXI6IFwiICsgdik7XG4gICAgICAgIGlmIChzdXBwb3J0c05hdGl2ZUJpZ0ludCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQoQmlnSW50KHNpZ24gPyBcIi1cIiArIHYgOiB2KSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHIgPSBbXSwgbWF4ID0gdi5sZW5ndGgsIGwgPSBMT0dfQkFTRSwgbWluID0gbWF4IC0gbDtcbiAgICAgICAgd2hpbGUgKG1heCA+IDApIHtcbiAgICAgICAgICAgIHIucHVzaCgrdi5zbGljZShtaW4sIG1heCkpO1xuICAgICAgICAgICAgbWluIC09IGw7XG4gICAgICAgICAgICBpZiAobWluIDwgMCkgbWluID0gMDtcbiAgICAgICAgICAgIG1heCAtPSBsO1xuICAgICAgICB9XG4gICAgICAgIHRyaW0ocik7XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihyLCBzaWduKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU51bWJlclZhbHVlKHYpIHtcbiAgICAgICAgaWYgKHN1cHBvcnRzTmF0aXZlQmlnSW50KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludChCaWdJbnQodikpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1ByZWNpc2UodikpIHtcbiAgICAgICAgICAgIGlmICh2ICE9PSB0cnVuY2F0ZSh2KSkgdGhyb3cgbmV3IEVycm9yKHYgKyBcIiBpcyBub3QgYW4gaW50ZWdlci5cIik7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih2KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VTdHJpbmdWYWx1ZSh2LnRvU3RyaW5nKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlVmFsdWUodikge1xuICAgICAgICBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZU51bWJlclZhbHVlKHYpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3RyaW5nVmFsdWUodik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2ID09PSBcImJpZ2ludFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh2KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG4gICAgLy8gUHJlLWRlZmluZSBudW1iZXJzIGluIHJhbmdlIFstOTk5LDk5OV1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKykge1xuICAgICAgICBJbnRlZ2VyW2ldID0gcGFyc2VWYWx1ZShpKTtcbiAgICAgICAgaWYgKGkgPiAwKSBJbnRlZ2VyWy1pXSA9IHBhcnNlVmFsdWUoLWkpO1xuICAgIH1cbiAgICAvLyBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgIEludGVnZXIub25lID0gSW50ZWdlclsxXTtcbiAgICBJbnRlZ2VyLnplcm8gPSBJbnRlZ2VyWzBdO1xuICAgIEludGVnZXIubWludXNPbmUgPSBJbnRlZ2VyWy0xXTtcbiAgICBJbnRlZ2VyLm1heCA9IG1heDtcbiAgICBJbnRlZ2VyLm1pbiA9IG1pbjtcbiAgICBJbnRlZ2VyLmdjZCA9IGdjZDtcbiAgICBJbnRlZ2VyLmxjbSA9IGxjbTtcbiAgICBJbnRlZ2VyLmlzSW5zdGFuY2UgPSBmdW5jdGlvbiAoeCkgeyByZXR1cm4geCBpbnN0YW5jZW9mIEJpZ0ludGVnZXIgfHwgeCBpbnN0YW5jZW9mIFNtYWxsSW50ZWdlciB8fCB4IGluc3RhbmNlb2YgTmF0aXZlQmlnSW50OyB9O1xuICAgIEludGVnZXIucmFuZEJldHdlZW4gPSByYW5kQmV0d2VlbjtcblxuICAgIEludGVnZXIuZnJvbUFycmF5ID0gZnVuY3Rpb24gKGRpZ2l0cywgYmFzZSwgaXNOZWdhdGl2ZSkge1xuICAgICAgICByZXR1cm4gcGFyc2VCYXNlRnJvbUFycmF5KGRpZ2l0cy5tYXAocGFyc2VWYWx1ZSksIHBhcnNlVmFsdWUoYmFzZSB8fCAxMCksIGlzTmVnYXRpdmUpO1xuICAgIH07XG5cbiAgICByZXR1cm4gSW50ZWdlcjtcbn0pKCk7XG4iLCIvKiBnbG9iYWwgYmlnSW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuXG4vLyBXZSByZXByZXNlbnQgYSBbWi50XSBhcyBhIGphdmFzY3JpcHQgMzJiaXQgaW50ZWdlcnMgaWYgaXQgZml0cyBvciBhcyBhIGJpZ0ludC5cblxuLy9Qcm92aWRlczogbWxfel9ub3JtYWxpemVcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9ub3JtYWxpemUoeCl7XG4gIHZhciB5ID0geC50b0pTTnVtYmVyICgpIHwgMDtcbiAgaWYoeC5lcXVhbHMoYmlnSW50KHkpKSkgcmV0dXJuIHk7XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X211bF9vdmVyZmxvd3NcbmZ1bmN0aW9uIG1sX3pfbXVsX292ZXJmbG93cyh4LHkpe1xuICB2YXIgeiA9IHgqeTtcbiAgcmV0dXJuIHogIT0gKHp8MCk7XG59XG5cbi8vZXh0ZXJuYWwgaW5pdDogdW5pdCAtPiB1bml0XG4vL1Byb3ZpZGVzOiBtbF96X2luaXRcbi8vUmVxdWlyZXM6IGNhbWxfemFyaXRoX21hcnNoYWwsIGNhbWxfemFyaXRoX3VubWFyc2hhbCwgY2FtbF9jdXN0b21fb3BzLCBtbF96X2hhc2gsIG1sX3pfY29tcGFyZVxuZnVuY3Rpb24gbWxfel9pbml0KHVuaXQpIHtcbiAgY2FtbF9jdXN0b21fb3BzWydfeiddID1cbiAgICB7IHNlcmlhbGl6ZSA6IGNhbWxfemFyaXRoX21hcnNoYWwsXG4gICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfemFyaXRoX3VubWFyc2hhbCxcbiAgICAgIGhhc2ggOiBtbF96X2hhc2gsXG4gICAgICBjb21wYXJlIDogbWxfel9jb21wYXJlLFxuICAgIH07XG4gIHJldHVybiAwIH1cblxuLy9leHRlcm5hbCBuZWc6IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9uZWcgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfbmVnKHoxKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLm5lZ2F0ZSgpKTtcbn1cblxuLy9leHRlcm5hbCBhZGQ6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2FkZCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9hZGQoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLmFkZChiaWdJbnQoejIpKSk7XG59XG5cbi8vZXh0ZXJuYWwgc3ViOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9zdWIgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfc3ViKHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5zdWJ0cmFjdChiaWdJbnQoejIpKSk7XG59XG5cbi8vZXh0ZXJuYWwgbXVsOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9tdWwgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfbXVsKHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5tdWx0aXBseShiaWdJbnQoejIpKSk7XG59XG5cbi8vZXh0ZXJuYWwgZGl2OiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9kaXZcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfZGl2KHoxLCB6Mikge1xuICB6MiA9IGJpZ0ludCh6MilcbiAgaWYoejIuZXF1YWxzKGJpZ0ludCgwKSkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuZGl2aWRlKGJpZ0ludCh6MikpKVxufVxuXG4vL2V4dGVybmFsIGNkaXY6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2NkaXZcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9kaXYsIG1sX3pfc2lnbiwgbWxfel9hZGRcbmZ1bmN0aW9uIG1sX3pfY2Rpdih6MSwgejIpIHtcbiAgdmFyIHoxX3BvcyA9IG1sX3pfc2lnbih6MSk7XG4gIHZhciB6Ml9wb3MgPSBtbF96X3NpZ24oejIpO1xuICBpZiAoejFfcG9zICogejJfcG9zID4gMCkgLyogTXVsdGlwbGljYXRpb24gaXMgbGlrZSBhIHNpZ253aXNlIHhvciAqLyB7XG4gICAgaWYgKCFiaWdJbnQoejEpLm1vZChiaWdJbnQoejIpKS5lcXVhbHMoYmlnSW50KDApKSkge1xuICAgICAgcmV0dXJuIG1sX3pfYWRkKG1sX3pfZGl2KHoxLCB6MiksIGJpZ0ludCgxKSkgO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWxfel9kaXYoejEsIHoyKTtcbn1cblxuLy9leHRlcm5hbCBmZGl2OiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9mZGl2XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfZGl2LCBtbF96X3NpZ24sIG1sX3pfc3ViXG5mdW5jdGlvbiBtbF96X2ZkaXYoejEsIHoyKSB7XG4gIHZhciB6MV9wb3MgPSBtbF96X3NpZ24oejEpO1xuICB2YXIgejJfcG9zID0gbWxfel9zaWduKHoyKTtcbiAgaWYgKHoxX3BvcyAqIHoyX3BvcyA8IDApIC8qIE11bHRpcGxpY2F0aW9uIGlzIGxpa2UgYSBzaWdud2lzZSB4b3IgKi8ge1xuICAgIGlmICghYmlnSW50KHoxKS5tb2QoYmlnSW50KHoyKSkuZXF1YWxzKGJpZ0ludCgwKSkpIHtcbiAgICAgIHJldHVybiBtbF96X3N1YihtbF96X2Rpdih6MSwgejIpLCBiaWdJbnQoMSkpIDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1sX3pfZGl2KHoxLCB6Mik7XG59XG5cbi8vZXh0ZXJuYWwgcmVtOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9yZW1cbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfcmVtKHoxLCB6Mikge1xuICB6MiA9IGJpZ0ludCh6Mik7XG4gIGlmICh6Mi5lcXVhbHMoYmlnSW50KDApKSkge1xuICAgIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbiAgfVxuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5tb2QoejIpKTtcbn1cblxuLy9leHRlcm5hbCBkaXZfcmVtOiB0IC0+IHQgLT4gKHQgKiB0KVxuLy9Qcm92aWRlczogbWxfel9kaXZfcmVtXG4vL1JlcXVpcmVzOiBtbF96X2RpdiwgbWxfel9yZW1cbmZ1bmN0aW9uIG1sX3pfZGl2X3JlbSh6MSwgejIpIHtcbiAgcmV0dXJuIFswLCBtbF96X2Rpdih6MSx6MiksIG1sX3pfcmVtKHoxLCB6MildXG59XG4vL2V4dGVybmFsIHN1Y2M6IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9zdWNjIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3N1Y2MoejEpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkubmV4dCgpKTtcbn1cblxuLy9leHRlcm5hbCBwcmVkOiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfcHJlZCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9wcmVkKHoxKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLnByZXYoKSk7XG59XG5cbi8vZXh0ZXJuYWwgYWJzOiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfYWJzIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2Ficyh6MSkge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5hYnMoKSk7XG59XG5cbi8vZXh0ZXJuYWwgbG9nYW5kOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9sb2dhbmQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfbG9nYW5kKHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5hbmQoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIGxvZ29yOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9sb2dvciBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9sb2dvcih6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkub3IoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIGxvZ3hvcjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbG9neG9yIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2xvZ3hvcih6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkueG9yKGJpZ0ludCh6MikpKTtcbn1cblxuLy9leHRlcm5hbCBsb2dub3Q6IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9sb2dub3QgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCxtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9sb2dub3QoejEpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkubm90KCkpO1xufVxuXG4vL2V4dGVybmFsIHNoaWZ0X2xlZnQ6IHQgLT4gaW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc2hpZnRfbGVmdCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9zaGlmdF9sZWZ0KHoxLCBhbXQpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuc2hpZnRMZWZ0KGFtdCkpO1xufVxuXG4vL2V4dGVybmFsIHNoaWZ0X3JpZ2h0OiB0IC0+IGludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3NoaWZ0X3JpZ2h0IGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3NoaWZ0X3JpZ2h0KHoxLCBhbXQpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuc2hpZnRSaWdodChhbXQpKTtcbn1cblxuLy9leHRlcm5hbCBzaGlmdF9yaWdodF90cnVuYzogdCAtPiBpbnQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9zaGlmdF9yaWdodF90cnVuYyBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X2RpdlxuZnVuY3Rpb24gbWxfel9zaGlmdF9yaWdodF90cnVuYyh6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfZGl2KGJpZ0ludCh6MSksIGJpZ0ludCgyKS5wb3coejIpKVxufVxuXG4vL2V4dGVybmFsIG9mX2ludDMyOiBpbnQzMiAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X29mX2ludDMyIGNvbnN0XG5mdW5jdGlvbiBtbF96X29mX2ludDMyKGkpIHtcbiAgcmV0dXJuIGkgfCAwO1xufVxuXG4vL2V4dGVybmFsIG9mX25hdGl2ZWludDogbmF0aXZlaW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfb2ZfbmF0aXZlaW50IGNvbnN0XG5mdW5jdGlvbiBtbF96X29mX25hdGl2ZWludChpKSB7XG4gIHJldHVybiBpIHwgMDtcbn1cblxuLy9leHRlcm5hbCBvZl9pbnQ2NDogaW50NjQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9vZl9pbnQ2NCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2ludDY0X2NvbXBhcmUsIGNhbWxfaW50NjRfbmVnLCBtbF96X25vcm1hbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksY2FtbF9pbnQ2NF9oaTMyLGNhbWxfaW50NjRfbG8zMlxuZnVuY3Rpb24gbWxfel9vZl9pbnQ2NChpNjQpIHtcbiAgdmFyIG5lZyA9IGZhbHNlO1xuICBpZihjYW1sX2ludDY0X2NvbXBhcmUoaTY0LCBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSgwLDApKSA8IDApIHtcbiAgICBuZWcgPSB0cnVlO1xuICAgIGk2NCA9IGNhbWxfaW50NjRfbmVnKGk2NClcbiAgfVxuICB2YXIgbG8gPSBjYW1sX2ludDY0X2xvMzIoaTY0KSA+Pj4gMDtcbiAgdmFyIGhpID0gY2FtbF9pbnQ2NF9oaTMyKGk2NCkgPj4+IDA7XG4gIHZhciB4ID0gYmlnSW50KGxvKS5hZGQoYmlnSW50KGhpKS5zaGlmdExlZnQoMzIpKTtcbiAgaWYobmVnKSB7IHggPSB4Lm5lZ2F0ZSgpIH07XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZSh4KVxufVxuXG4vL2V4dGVybmFsIG9mX2Zsb2F0OiBmbG9hdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfbmFtZWRfdmFsdWUsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X29mX2Zsb2F0KGYxKSB7XG4gIGlmKGYxID09IEluZmluaXR5IHx8IGYxID09IC1JbmZpbml0eSB8fCBmMSAhPSBmMSlcbiAgICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfbmFtZWRfdmFsdWUoXCJtbF96X292ZXJmbG93XCIpKTtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludChmMTwwP01hdGguY2VpbChmMSk6TWF0aC5mbG9vcihmMSkpKTtcbn1cblxuLy9leHRlcm5hbCB0b19pbnQ6IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X3RvX2ludFxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBtbF96X3RvX2ludCh6MSkge1xuICBpZiAoejEgPT0gKHoxIHwgMCkpIHJldHVybiB6MSB8IDA7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9uYW1lZF92YWx1ZShcIm1sX3pfb3ZlcmZsb3dcIikpO1xufVxuXG4vL2V4dGVybmFsIHRvX2ludDMyOiB0IC0+IGludDMyXG4vL1Byb3ZpZGVzOiBtbF96X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBtbF96X3RvX2ludFxuZnVuY3Rpb24gbWxfel90b19pbnQzMih6MSkgeyByZXR1cm4gbWxfel90b19pbnQoejEpIH1cblxuLy9leHRlcm5hbCB0b19pbnQ2NDogdCAtPiBpbnQ2NFxuLy9Qcm92aWRlczogbWxfel90b19pbnQ2NFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X2ZpdHNfaW50NjQsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpXG5mdW5jdGlvbiBtbF96X3RvX2ludDY0KHoxKSB7XG4gIHoxID0gYmlnSW50KHoxKVxuICBpZighbWxfel9maXRzX2ludDY0KHoxKSkge1xuICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9uYW1lZF92YWx1ZShcIm1sX3pfb3ZlcmZsb3dcIikpO1xuICB9XG4gIHZhciBtYXNrID0gYmlnSW50KDB4ZmZmZmZmZmYpXG4gIHZhciBsbyA9IHoxLmFuZChtYXNrKS50b0pTTnVtYmVyKCk7XG4gIHZhciBoaSA9IHoxLnNoaWZ0UmlnaHQoMzIpLmFuZChtYXNrKS50b0pTTnVtYmVyKCk7XG4gIHZhciB4ID0gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobG8sIGhpKTtcbiAgcmV0dXJuIHg7XG59XG5cbi8vZXh0ZXJuYWwgdGVzdGJpdDogdCAtPiBib29sXG4vL1Byb3ZpZGVzOiBtbF96X3Rlc3RiaXRcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel90ZXN0Yml0KHoscG9zKXtcbiAgeiA9IGJpZ0ludCh6KTtcbiAgcmV0dXJuICh6LnNoaWZ0UmlnaHQocG9zKS5hbmQoYmlnSW50KDEpKS50b0pTTnVtYmVyKCkpfDA7XG59XG5cbi8vZXh0ZXJuYWwgdG9fbmF0aXZlaW50OiB0IC0+IG5hdGl2ZWludFxuLy9Qcm92aWRlczogbWxfel90b19uYXRpdmVpbnRcbi8vUmVxdWlyZXM6IG1sX3pfdG9faW50XG5mdW5jdGlvbiBtbF96X3RvX25hdGl2ZWludCh6MSkgeyByZXR1cm4gbWxfel90b19pbnQoejEpIH1cblxuLy9leHRlcm5hbCBmb3JtYXQ6IHN0cmluZyAtPiB0IC0+IHN0cmluZ1xuLy9Qcm92aWRlczogbWxfel9mb3JtYXQgXG4vL1JlcXVpcmVzOiBiaWdJbnRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfZmFpbHdpdGgsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2Zvcm1hdChmbXQsIHoxKSB7XG4gIHoxID0gYmlnSW50KHoxKTtcbiAgdmFyIGZtdCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KTtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL1phcml0aC9ibG9iL2QwNTU1ZDQ1MWNlMjk1YzQ0OTdmMjRhOGQ5OTkzZjhkZDIzMDk3ZGYvei5tbGlwI0wyOTdcbiAgdmFyIGJhc2UgPSAxMDtcbiAgdmFyIGNhcyA9IDA7XG4gIHZhciB3aWR0aCA9IDA7XG4gIHZhciBhbHQgPSAwO1xuICB2YXIgZGlyID0gMDtcbiAgdmFyIHNpZ24gPSAnJztcbiAgdmFyIHBhZCA9ICcgJztcbiAgdmFyIGlkeCA9IDA7XG4gIHZhciBwcmVmaXg9XCJcIjtcbiAgd2hpbGUoZm10W2lkeF0gPT0gJyUnKSBpZHgrKztcbiAgZm9yKDs7IGlkeCsrKSB7XG4gICAgaWYoZm10W2lkeF0gPT0gJyMnKSBhbHQgPSAxO1xuICAgIGVsc2UgaWYgKGZtdFtpZHhdID09ICcwJykgcGFkID0gJzAnO1xuICAgIGVsc2UgaWYgKGZtdFtpZHhdID09ICctJykgZGlyID0gMTtcbiAgICBlbHNlIGlmIChmbXRbaWR4XSA9PSAnICcgfHwgZm10W2lkeF0gPT0gJysnKSBzaWduID0gZm10W2lkeF07XG4gICAgZWxzZSBicmVhaztcbiAgfVxuICBpZih6MS5sdChiaWdJbnQoMCkpKXtzaWduID0gJy0nO3oxID0gejEubmVnYXRlKCl9O1xuICBmb3IoO2ZtdFtpZHhdPj0nMCcgJiYgZm10W2lkeF0gPD0nOSc7aWR4KyspXG4gICAgd2lkdGg9MTAqd2lkdGggKyAoK2ZtdFtpZHhdKTtcbiAgc3dpdGNoKGZtdFtpZHhdKXtcbiAgY2FzZSAnaSc6IGNhc2UgJ2QnOiBjYXNlICd1JzogYnJlYWs7XG4gIGNhc2UgJ2InOiBiYXNlID0gMjsgaWYoYWx0KSBwcmVmaXggPSBcIjBiXCI7IGJyZWFrO1xuICBjYXNlICdvJzogYmFzZSA9IDg7IGlmKGFsdCkgcHJlZml4ID0gXCIwb1wiOyBicmVhaztcbiAgY2FzZSAneCc6IGJhc2UgPSAxNjsgaWYoYWx0KSBwcmVmaXggPSBcIjB4XCI7IGJyZWFrO1xuICBjYXNlICdYJzogYmFzZSA9IDE2OyBpZihhbHQpIHByZWZpeCA9IFwiMFhcIjsgY2FzID0gMTsgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9mYWlsd2l0aChcIlVuc3VwcG9ydGVkIGZvcm1hdCAnXCIgKyBmbXQgKyBcIidcIik7XG4gIH1cbiAgaWYgKGRpcikgcGFkID0gJyAnO1xuICB2YXIgcmVzID0gejEudG9TdHJpbmcoYmFzZSk7XG4gIGlmIChjYXMgPT09IDEpIHtcbiAgICByZXMgPSByZXMudG9VcHBlckNhc2UoKTtcbiAgfVxuICB2YXIgc2l6ZSA9IHJlcy5sZW5ndGg7XG4gIGlmIChwYWQgPT0gJyAnKSB7XG4gICAgaWYoZGlyKSB7XG4gICAgICByZXMgPSBzaWduICsgcHJlZml4ICsgcmVzO1xuICAgICAgZm9yKDtyZXMubGVuZ3RoPHdpZHRoOykgcmVzID0gcmVzICsgcGFkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSBzaWduICsgcHJlZml4ICsgcmVzO1xuICAgICAgZm9yKDtyZXMubGVuZ3RoPHdpZHRoOykgcmVzID0gcGFkICsgcmVzO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgcHJlID0gc2lnbiArIHByZWZpeDtcbiAgICBmb3IoO3Jlcy5sZW5ndGgrcHJlLmxlbmd0aDx3aWR0aDspIHJlcyA9IHBhZCArIHJlcztcbiAgICByZXMgPSBwcmUgKyByZXM7XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocmVzKTtcbn1cblxuLy9Qcm92aWRlczoganNvb196X29mX2pzX3N0cmluZ19iYXNlXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIGpzb29fel9vZl9qc19zdHJpbmdfYmFzZShiYXNlLCBzKSB7XG4gIGlmIChiYXNlID09IDApIHsgLy8gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL1phcml0aC9ibG9iL2I4ZGJhZjQ4YTc5MjcwNjFkZjY5OWFkN2NlNjQyYmI0ZjFmZTUzMDgvY2FtbF96LmMjTDU5OFxuICAgIGJhc2UgPSAxMDtcbiAgICB2YXIgcCA9IDA7XG4gICAgdmFyIHNpZ24gPSAxO1xuICAgIGlmKHNbcF0gPT0gJy0nKSB7IHNpZ24gPSAtMTsgcCsrIH1cbiAgICBlbHNlIGlmIChzW3BdID09ICcrJykgeyBwKysgfVxuICAgIGlmIChzW3BdID09ICcwJykge1xuICAgICAgcCArKztcbiAgICAgIGlmIChzLmxlbmd0aCA9PSBwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGJjID0gc1twXTtcbiAgICAgICAgaWYgKGJjID09ICdvJyB8fCBiYyA9PSAnTycpIHtcbiAgICAgICAgICBiYXNlID0gODtcbiAgICAgICAgfSBlbHNlIGlmIChiYyA9PSAneCcgfHwgYmMgPT0gJ1gnKSB7XG4gICAgICAgICAgYmFzZSA9IDE2O1xuICAgICAgICB9IGVsc2UgaWYgKGJjID09ICdiJyB8fCBiYyA9PSAnQicpIHtcbiAgICAgICAgICBiYXNlID0gMjtcbiAgICAgICAgfSBcbiAgICAgICAgaWYoYmFzZSAhPSAxMCkge1xuICAgICAgICAgIHMgPSBzLnN1YnN0cmluZyhwKzEpO1xuICAgICAgICAgIGlmKHNpZ24gPT0gLTEpIHMgPSBcIi1cIiArIHM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG4gIGZ1bmN0aW9uIGRpZ2l0KGNvZGUpe1xuICAgIGlmKGNvZGUgPj0gNDggJiYgY29kZSA8PSA1NykgcmV0dXJuIGNvZGUgLSA0ODtcbiAgICBpZihjb2RlID49IDk3ICYmIGNvZGUgPD0gMTAyKSByZXR1cm4gY29kZSAtIDk3ICsgMTA7XG4gICAgaWYoY29kZSA+PSA2NSAmJiBjb2RlIDw9IDcwKSByZXR1cm4gY29kZSAtIDY1ICsgMTA7XG4gIH1cbiAgdmFyIGkgPSAwO1xuICBpZiAoc1tpXSA9PSAnKycpIHtcbiAgICAvL3JlbW92ZSBsZWFkaW5nICcrJ1xuICAgIHMgPSBzLnN1YnN0cmluZygxKTtcbiAgfVxuICBlbHNlIGlmKHNbaV0gPT0gJy0nKSBpKys7XG4gIGlmKHNbaV0gPT0gJ18nKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLm9mX3N1YnN0cmluZ19iYXNlOiBpbnZhbGlkIGRpZ2l0XCIpO1xuICBzID0gcy5yZXBsYWNlKC9fL2csJycpO1xuICAvL25vcm1hbGl6ZSBcImVtcHR5XCIgbnVtYmVyc1xuICBpZihzID09ICctJyB8fCBzID09ICcnKSBzID0gJzAnO1xuICBmb3IoIDsgaSA8IHMubGVuZ3RoIDsgaSsrKXtcbiAgICB2YXIgYyA9IGRpZ2l0KHMuY2hhckNvZGVBdChpKSk7XG4gICAgaWYoYyA9PSB1bmRlZmluZWQgfHwgYyA+PSBiYXNlKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5vZl9zdWJzdHJpbmdfYmFzZTogaW52YWxpZCBkaWdpdFwiKTtcbiAgfVxuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHMsIGJhc2UpKTtcbiAgXG59XG5cbi8vZXh0ZXJuYWwgb2Zfc3Vic3RyaW5nX2Jhc2U6IGludCAtPiBzdHJpbmcgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfb2Zfc3Vic3RyaW5nX2Jhc2Vcbi8vUmVxdWlyZXM6IGpzb29fel9vZl9qc19zdHJpbmdfYmFzZSwgY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIG1sX3pfb2Zfc3Vic3RyaW5nX2Jhc2UoYmFzZSwgcywgcG9zLCBsZW4pIHtcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIGlmKHBvcyAhPSAwIHx8IGxlbiAhPSBzLmxlbmd0aCkge1xuICAgIGlmIChzLmxlbmd0aCAtIHBvcyA8IGxlbikge1xuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5vZl9zdWJzdHJpbmdfYmFzZTogaW52YWxpZCBvZmZzZXQgb3IgbGVuZ3RoXCIpO1xuICAgIH1cbiAgICBzID0gcy5zbGljZShwb3MscG9zK2xlbik7XG4gIH1cbiAgcmV0dXJuIGpzb29fel9vZl9qc19zdHJpbmdfYmFzZShiYXNlLCBzKTtcbn1cblxuLy9leHRlcm5hbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X2NvbXBhcmUgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9jb21wYXJlKHoxLCB6Mikge1xuICByZXR1cm4gYmlnSW50KHoxKS5jb21wYXJlKGJpZ0ludCh6MikpO1xufVxuXG4vL2V4dGVybmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuLy9Qcm92aWRlczogbWxfel9lcXVhbCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X2VxdWFsKHoxLCB6Mikge1xuICByZXR1cm4gYmlnSW50KHoxKS5lcXVhbHMoYmlnSW50KHoyKSkgPyAxIDogMDtcbn1cblxuLy9leHRlcm5hbCBzaWduOiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9zaWduIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfc2lnbih6MSkge1xuICByZXR1cm4gYmlnSW50KHoxKS5jb21wYXJlKGJpZ0ludC56ZXJvKTtcbn1cblxuLy9leHRlcm5hbCBnY2Q6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2djZFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9nY2QoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQuZ2NkKGJpZ0ludCh6MSksIGJpZ0ludCh6MikpLmFicygpKTtcbn1cblxuLy9leHRlcm5hbCBudW1iaXRzOiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9udW1iaXRzIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfbnVtYml0cyh6MSkge1xuICB6MSA9IGJpZ0ludCh6MSkuYWJzKCk7XG4gIHZhciBuID0gMDtcbiAgdmFyIHVwcGVyQm91bmQgPSBiaWdJbnQub25lO1xuICB3aGlsZSAodXBwZXJCb3VuZC5sZXEoejEpKSB7XG4gICAgbiArPSAxO1xuICAgIHVwcGVyQm91bmQgPSB1cHBlckJvdW5kLm11bHRpcGx5KDIpO1xuICB9XG4gIHJldHVybiBuOyAvLyAyXntuLTF9IDw9IHx4fCA8IDJeblxufVxuXG4vL2V4dGVybmFsIGZpdHNfaW50OiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfZml0c19pbnQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9maXRzX2ludCh6MSkge1xuICBpZih6MSA9PSAoejEgfCAwKSkgcmV0dXJuIDE7XG4gIGVsc2UgcmV0dXJuIDA7XG59XG5cbi8vZXh0ZXJuYWwgZml0c19pbnQzMjogdCAtPiBib29sXG4vL1Byb3ZpZGVzOiBtbF96X2ZpdHNfaW50MzJcbi8vUmVxdWlyZXM6IG1sX3pfZml0c19pbnRcbmZ1bmN0aW9uIG1sX3pfZml0c19pbnQzMih6MSkge1xuICByZXR1cm4gbWxfel9maXRzX2ludCh6MSk7XG59XG5cbi8vZXh0ZXJuYWwgZml0c19pbnQ2NDogdCAtPiBib29sXG4vL1Byb3ZpZGVzOiBtbF96X2ZpdHNfaW50NjRcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9maXRzX2ludDY0KHoxKSB7XG4gIHoxID0gYmlnSW50KHoxKVxuICBpZiAoejEuY29tcGFyZShiaWdJbnQoXCI5MjIzMzcyMDM2ODU0Nzc1ODA3XCIpKSA8PSAwICYmIHoxLmNvbXBhcmUoYmlnSW50KFwiLTkyMjMzNzIwMzY4NTQ3NzU4MDhcIikpID49IDApXG4gICAgcmV0dXJuIDFcbiAgZWxzZVxuICAgIHJldHVybiAwXG59XG5cbi8vZXh0ZXJuYWwgZml0c19uYXRpdmVpbnQ6IHQgLT4gYm9vbFxuLy9Qcm92aWRlczogbWxfel9maXRzX25hdGl2ZWludFxuLy9SZXF1aXJlczogbWxfel9maXRzX2ludFxuZnVuY3Rpb24gbWxfel9maXRzX25hdGl2ZWludCh6MSkge1xuICByZXR1cm4gbWxfel9maXRzX2ludCh6MSk7XG59XG5cbi8vZXh0ZXJuYWwgcG93bTogdCAtPiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9wb3dtXG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplLCBtbF96X2ludmVydCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gbWxfel9wb3dtKHoxLCB6MiwgejMpIHtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIHoxID0gYmlnSW50KHoxKTtcbiAgejIgPSBiaWdJbnQoejIpO1xuICB6MyA9IGJpZ0ludCh6Myk7XG4gIGlmKHozLmVxdWFscyh6ZXJvKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xuICBpZih6My5hYnMoKS5lcXVhbHMob25lKSkgcmV0dXJuIDA7XG4gIGlmKHoyLmVxdWFscyh6ZXJvKSkgcmV0dXJuIDE7XG4gIGlmKHoyLmx0KDApKSB7XG4gICAgdmFyIGludiA9IGJpZ0ludChtbF96X2ludmVydCh6MSwgejMpKTtcbiAgICB2YXIgciA9IGludi5tb2RQb3coejIubmVnYXRlKCksIHozKTtcbiAgICBpZihyLmx0KHplcm8pKSByID0gci5hZGQoejMuYWJzKCkpO1xuICAgIHJldHVybiBtbF96X25vcm1hbGl6ZShyKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgciA9IGJpZ0ludCh6MSkubW9kUG93KHoyLCB6Myk7XG4gICAgaWYoci5sdCh6ZXJvKSkgciA9IHIuYWRkKHozLmFicygpKTtcbiAgICByZXR1cm4gbWxfel9ub3JtYWxpemUocik7XG4gIH1cbn1cblxuLy9leHRlcm5hbCBwb3duOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9wb3dcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9mYWlsd2l0aCwgbWxfel9ub3JtYWxpemUsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9wb3coejEsIGkxKSB7XG4gIGkxID0gYmlnSW50KGkxKTtcbiAgaWYgKGkxLmx0KGJpZ0ludCgwKSkpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLnBvdzogZXhwb25lbnQgbXVzdCBiZSBub25uZWdhdGl2ZVwiKTtcbiAgfVxuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5wb3coaTEpKTtcbn1cblxuLy9leHRlcm5hbCBoYXNoOiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9oYXNoIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBtbF96X2hhc2goejEpIHtcbiAgdmFyIGEgPSBiaWdJbnQoejEpLnRvQXJyYXkoTWF0aC5wb3coMiwgMzIpKTtcbiAgdmFyIGFjYyA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYS52YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgIGFjYyA9IGNhbWxfaGFzaF9taXhfaW50KGFjYywgYS52YWx1ZVtpXSk7XG4gIH1cbiAgaWYoYS52YWx1ZS5sZW5ndGggJSAyICE9IDApIHtcbiAgICBhY2MgPSBjYW1sX2hhc2hfbWl4X2ludChhY2MsIDApO1xuICB9XG4gIGlmKGEuaXNOZWdhdGl2ZSl7XG4gICAgYWNjID0gYWNjICsgMVxuICB9XG4gIHJldHVybiBhY2MgfCAwXG59XG5cbi8vZXh0ZXJuYWwgdG9fYml0czogdCAtPiBzdHJpbmdcbi8vUHJvdmlkZXM6IG1sX3pfdG9fYml0cyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9zdHJfcmVwZWF0LCBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfdG9fYml0cyh6MSkge1xuICB6MSA9IGJpZ0ludCh6MSkuYWJzKCk7XG4gIHZhciByZXMgPSBcIlwiO1xuICB3aGlsZSghejEuZXF1YWxzKGJpZ0ludCgwKSkpe1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHoxLm1vZChiaWdJbnQoMjU2KSkpO1xuICAgIHoxID0gejEuZGl2aWRlKGJpZ0ludCgyNTYpKTtcbiAgfVxuICB3aGlsZShyZXMubGVuZ3RoICUgNCAhPSAwKXtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgwKTtcbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhyZXMpO1xufVxuXG4vL2V4dGVybmFsIG9mX2JpdHM6IHN0cmluZyAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X29mX2JpdHMgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9vZl9iaXRzKHoxKSB7XG4gIHZhciByID0gYmlnSW50Lnplcm9cbiAgdmFyIGJhc2UxID0gYmlnSW50KDI1Nik7XG4gIHZhciBiYXNlID0gYmlnSW50Lm9uZTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCh6MSk7IGkrKyl7XG4gICAgdmFyIGQgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHoxLGkpO1xuICAgIHIgPSBiaWdJbnQoYmFzZSkubXVsdGlwbHkoZCkuYWRkKHIpO1xuICAgIGJhc2UgPSBiaWdJbnQoYmFzZSkubXVsdGlwbHkoYmFzZTEpO1xuICB9XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShyKTtcbn1cblxuLy9leHRlcm5hbCBwb3dtX3NlYzogdCAtPiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9wb3dtX3NlY1xuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2ZhaWx3aXRoLCBtbF96X3Bvd20sIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9wb3dtX3NlYyh6MSwgejIsIHozKSB7XG4gIHozID0gYmlnSW50KHozKS5hYnMoKTtcbiAgLy8gcG93bV9zZWMgcmVxdWlyZXMgdGhhdCB0aGUgZXhwb25lbnQgYmUgcG9zaXRpdmVcbiAgdmFyIG9uZSA9IGJpZ0ludCgxKTtcbiAgaWYgKGJpZ0ludCh6MikubHQob25lKSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloucG93bV9zZWM6IGV4cG9uZW50IG11c3QgYmUgcG9zaXRpdmVcIik7XG4gIH1cbiAgaWYgKCFiaWdJbnQoejMpLmFuZChvbmUpLmVxdWFscyhvbmUpKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5wb3dtX3NlYzogbW9kdWx1cyBtdXN0IGJlIG9kZFwiKTtcbiAgfVxuICByZXR1cm4gbWxfel9wb3dtKHoxLCB6MiwgejMpXG59XG5cbi8vZXh0ZXJuYWwgcm9vdDogdCAtPiBpbnQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9yb290XG4vL1JlcXVpcmVzOiBtbF96X3BvdywgIGJpZ0ludCwgbWxfel9ub3JtYWxpemUsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9yb290KHosIGkpIHtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIHogPSBiaWdJbnQoeik7XG5cbiAgaWYgKGkgJSAyID09PSAwICYmIHoubHQoemVybykpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLnJvb3Q6IGV2ZW4gcm9vdCBvZiBhIG5lZ2F0aXZlIG51bWJlclwiKTtcbiAgfVxuXG4gIGlmICh6LmVxdWFscyh6ZXJvKSB8fCB6LmVxdWFscyhvbmUpKSB7XG4gICAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHopO1xuICB9XG5cbiAgdmFyIHN0YXJ0ID0gemVybztcbiAgdmFyIGVuZCA9IHo7XG4gIHZhciBhbnMgPSBudWxsO1xuXG4gIHZhciB0d28gPSBiaWdJbnQoMik7XG5cbiAgd2hpbGUgKHN0YXJ0LmxlcShlbmQpKVxuICB7XG4gICAgdmFyIG1pZCA9IHN0YXJ0LmFkZChlbmQpLmRpdmlkZSh0d28pO1xuICAgIHZhciBwbyA9IG1pZC5wb3coaSk7XG4gICAgaWYgKHBvLmVxdWFscyh6KSkge1xuICAgICAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKG1pZCk7XG4gICAgfSBlbHNlIGlmIChwby5sdCh6KSkge1xuICAgICAgc3RhcnQgPSBtaWQubmV4dCgpO1xuICAgICAgYW5zID0gbWlkO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmQgPSBtaWQucHJldigpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYW5zKTtcbn1cblxuLy9leHRlcm5hbCByb290cmVtOiB0IC0+IGludCAtPiB0ICogdFxuLy9Qcm92aWRlczogbWxfel9yb290cmVtXG4vL1JlcXVpcmVzOiBtbF96X3BvdywgIGJpZ0ludCwgbWxfel9ub3JtYWxpemUsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9yb290cmVtKHosIGkpIHtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIHogPSBiaWdJbnQoeik7XG5cbiAgaWYgKGkgJSAyID09PSAwICYmIHoubHQoemVybykpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLnJvb3RyZW06IGV2ZW4gcm9vdCBvZiBhIG5lZ2F0aXZlIG51bWJlclwiKTtcbiAgfVxuXG4gIGlmICh6LmVxdWFscyh6ZXJvKSB8fCB6LmVxdWFscyhvbmUpKSB7XG4gICAgcmV0dXJuIFswLCBtbF96X25vcm1hbGl6ZSh6KSwgemVyb107XG4gIH1cblxuICB2YXIgc3RhcnQgPSB6ZXJvO1xuICB2YXIgZW5kID0gejtcbiAgdmFyIGFucyA9IG51bGw7XG5cbiAgdmFyIHR3byA9IGJpZ0ludCgyKTtcblxuICB3aGlsZSAoc3RhcnQubGVxKGVuZCkpXG4gIHtcbiAgICB2YXIgbWlkID0gc3RhcnQuYWRkKGVuZCkuZGl2aWRlKHR3byk7XG4gICAgdmFyIHBvID0gbWlkLnBvdyhpKTtcbiAgICBpZiAocG8uZXF1YWxzKHopKSB7XG4gICAgICByZXR1cm4gWzAsIG1sX3pfbm9ybWFsaXplKG1pZCksIHplcm9dO1xuICAgIH0gZWxzZSBpZiAocG8ubHQoeikpIHtcbiAgICAgIHN0YXJ0ID0gbWlkLm5leHQoKTtcbiAgICAgIGFucyA9IG1pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgZW5kID0gbWlkLnByZXYoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFswLCBtbF96X25vcm1hbGl6ZShhbnMpLCBtbF96X25vcm1hbGl6ZSh6Lm1pbnVzKGFucy5wb3coaSkpKV07XG59XG5cbi8vZXh0ZXJuYWwgaW52ZXJ0OiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9pbnZlcnRcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSwgbWxfel9nY2RleHRfaW50ZXJuLCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9pbnZlcnQoYSwgbikge1xuICAvLyBCZWNhdXNlIFthLm1vZEludihuKV0gcHJvZHVjZXMgZGlmZmVyZW50IHJlc3VsdHMgZm9yIGVkZ2UgY2FzZXMsXG4gIC8vIHdlIHdyb3RlIG91ciBvd24gaW1wbGVtZW50YXRpb24gYmFzZWQgb24gZ2NkZXh0X2ludGVybi5cbiAgYSA9IGJpZ0ludChhKTtcbiAgbiA9IGJpZ0ludChuKTtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIGlmKG4uYWJzKCkuZXF1YWxzKG9uZSkpXG4gICAgcmV0dXJuIDA7XG4gIGlmIChuLmVxdWFscyh6ZXJvKSAmJiBhLmFicygpLmVxdWFscyhvbmUpKSB7XG4gICAgcmV0dXJuIGE7XG4gIH1cbiAgaWYgKG4uZXF1YWxzKHplcm8pIHx8IGEuZXF1YWxzKHplcm8pKSB7XG4gICAgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xuICB9XG4gIHZhciB4ID0gbWxfel9nY2RleHRfaW50ZXJuKGEsIG4pO1xuICB2YXIgciA9IGJpZ0ludCh4WzJdKTtcbiAgdmFyIHRtcCA9IGJpZ0ludChhKS5tdWx0aXBseShyKS5tb2Qobik7XG4gIGlmKHRtcC5sdCh6ZXJvKSkgdG1wID0gdG1wLmFkZChuLmFicygpKTtcbiAgaWYoci5sdCh6ZXJvKSkgciA9IHIuYWRkKG4uYWJzKCkpO1xuICBpZih0bXAuZXF1YWxzKG9uZSkpIHtcbiAgICByZXR1cm4gbWxfel9ub3JtYWxpemUocik7XG4gIH1cbiAgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xufVxuXG4vL2V4dGVybmFsIHBlcmZlY3RfcG93ZXI6IHQgLT4gYm9vbFxuLy9Qcm92aWRlczogbWxfel9wZXJmZWN0X3Bvd2VyXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfZmFpbHdpdGgsIG1sX3pfbnVtYml0cywgbWxfel9yb290LCBtbF96X3Bvd1xuZnVuY3Rpb24gbWxfel9wZXJmZWN0X3Bvd2VyKHopIHtcbiAgLy8gUmV0dXJuIHRydWUgaWYgb3AgaXMgYSBwZXJmZWN0IHBvd2VyLCBpLmUuLCBpZiB0aGVyZSBleGlzdCBpbnRlZ2VycyBhIGFuZFxuICAvLyBiLCB3aXRoIGIgPiAxLCBzdWNoIHRoYXQgb3AgPSBhXmIuXG4gIC8vIE90aGVyd2lzZSBmYWxzZS5cbiAgeiA9IGJpZ0ludCh6KTtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG5cbiAgaWYgKHouZXF1YWxzKHplcm8pIHx8IHouZXF1YWxzKG9uZSkgfHwgei5lcXVhbHMob25lLm5lZ2F0ZSgpKSkge1xuICAgIHJldHVybiAxO1xuICB9XG4gIHZhciBsb2cyeiA9IG1sX3pfbnVtYml0cyh6LmFicygpKTtcbiAgZm9yICh2YXIgYiA9IDI7IGIgPD0gbG9nMno7IGIrKykge1xuICAgIGlmKHoubHQoemVybykgJiYgYiAlIDIgPT0gMCkgY29udGludWU7XG4gICAgdmFyIHpwID0gei5hYnMoKTtcbiAgICB2YXIgcCA9IGJpZ0ludChtbF96X3Jvb3QoenAsIGIpKTtcbiAgICBpZih6Lmx0KHplcm8pKSBwID0gcC5uZWdhdGUoKTtcbiAgICB2YXIgciA9IGJpZ0ludChtbF96X3BvdyhwLCBiKSk7XG4gICAgaWYgKHouZXF1YWxzKHIpKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vZXh0ZXJuYWwgcGVyZmVjdF9zcXVhcmU6IHQgLT4gYm9vbFxuLy9Qcm92aWRlczogbWxfel9wZXJmZWN0X3NxdWFyZVxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X3Jvb3RcbmZ1bmN0aW9uIG1sX3pfcGVyZmVjdF9zcXVhcmUoeikge1xuICB6ID0gYmlnSW50KHopO1xuICBpZiAoei5sdChiaWdJbnQoMCkpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHJvb3QgPSBiaWdJbnQobWxfel9yb290KHosIDIpKTtcbiAgaWYgKHJvb3QubXVsdGlwbHkocm9vdCkuZXEoeikpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gMFxuICB9O1xufVxuXG4vL2V4dGVybmFsIHByb2JhYl9wcmltZTogdCAtPiBpbnQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X3Byb2JhYl9wcmltZSBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X3Byb2JhYl9wcmltZSh6LCBpKSB7XG4gIGlmIChiaWdJbnQoeikuaXNQcm9iYWJsZVByaW1lKGkpKSB7XG4gICAgcmV0dXJuIDE7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLy9leHRlcm5hbCBuZXh0cHJpbWU6IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9uZXh0cHJpbWUgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfbmV4dHByaW1lKHoxKSB7XG4gIC8vIEludGVyZXN0aW5nbHksIHRoZSB6YXJpdGggbmV4dF9wcmltZSBvbmx5IHJldHVybnMgXG4gIC8vIHByb2JhYmFsaXN0aWMgcHJpbWVzLiAgV2UgZG8gdGhlIHNhbWUsIHdpdGggdGhlIFxuICAvLyBzYW1lIHByb2JhYmxpc3RpYyBwYXJhbWV0ZXIgb2YgMjUuXG4gIC8vIGh0dHBzOi8vZm9zc2llcy5vcmcvZG94L2dtcC02LjEuMi9tcHpfMm5leHRwcmltZV84Y19zb3VyY2UuaHRtbFxuICBcbiAgejEgPSBiaWdJbnQoejEpXG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIHZhciB0d28gPSBiaWdJbnQoMik7XG5cbiAgaWYgKHoxLmx0KG9uZSkgfHwgejEuZXF1YWxzKG9uZSkpIHtcbiAgICByZXR1cm4gMjtcbiAgfVxuXG4gIGlmICh6MS5hbmQob25lKS5lcXVhbHMob25lKSkge1xuICAgIHoxID0gejEuYWRkKHR3byk7XG4gIH0gZWxzZSB7XG4gICAgejEgPSB6MS5hZGQob25lKTtcbiAgfVxuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKHoxLmlzUHJvYmFibGVQcmltZSgyNSkpIHtcbiAgICAgIHJldHVybiBtbF96X25vcm1hbGl6ZSh6MSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHoxID0gejEuYWRkKHR3bylcbiAgICB9XG4gIH1cbn1cblxuLy9leHRlcm5hbCBleHRyYWN0OiB0IC0+IGludCAtPiBpbnQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9leHRyYWN0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2V4dHJhY3QoejEsIHBvcywgbGVuKSB7XG4gIHoxID0gYmlnSW50KHoxKTtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHoxLnNoaWZ0UmlnaHQocG9zKS5hbmQoYmlnSW50KDIpLnBvdyhsZW4pLnN1YnRyYWN0KDEpKSk7XG59XG5cbi8vZXh0ZXJuYWwgZ2NkZXh0X2ludGVybjogdCAtPiB0IC0+ICh0ICogdCAqIGJvb2wpXG4vL1Byb3ZpZGVzOiBtbF96X2djZGV4dF9pbnRlcm5cbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfZ2NkZXh0X2ludGVybih6MSwgejIpIHtcbiAgejEgPSBiaWdJbnQoejEpO1xuICB6MiA9IGJpZ0ludCh6Mik7XG4gIHZhciBnY2QgPSBiaWdJbnQuZ2NkKHoxLHoyKTtcbiAgdmFyIGEgPSB6MTtcbiAgdmFyIGIgPSB6MjtcbiAgdmFyIHggPSBiaWdJbnQoMCk7XG4gIHZhciBsYXN0eCA9IGJpZ0ludCgxKTtcbiAgdmFyIHkgPSBiaWdJbnQoMSk7XG4gIHZhciBsYXN0eSA9IGJpZ0ludCgxKTtcbiAgdmFyIHEsIHQsIHI7XG4gIGlmKHoxLmVxdWFscyhiaWdJbnQoMCkpKSB7XG4gICAgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xuICB9XG4gIHdoaWxlKCFiLmVxdWFscyhiaWdJbnQoMCkpKSB7XG4gICAgcSA9IGEuZGl2aWRlKGIpO1xuICAgIHIgPSBhLnN1YnRyYWN0KHEubXVsdGlwbHkoYikpO1xuICAgIHQgPSB4O1xuICAgIHggPSBsYXN0eC5zdWJ0cmFjdChxLm11bHRpcGx5KHgpKTtcbiAgICBsYXN0eCA9IHQ7XG4gICAgdCA9IHk7XG4gICAgeSA9IGxhc3R5LnN1YnRyYWN0KHEubXVsdGlwbHkoeSkpO1xuICAgIGxhc3R5ID0gdDtcbiAgICBhID0gYjtcbiAgICBiID0gcjtcbiAgfVxuICBpZihhLmx0KGJpZ0ludCgwKSkpXG4gICAgcmV0dXJuIFswLG1sX3pfbm9ybWFsaXplKGEubmVnYXRlKCkpLG1sX3pfbm9ybWFsaXplKGxhc3R4Lm5lZ2F0ZSgpKSwxXVxuICBlbHNlXG4gICAgcmV0dXJuIFswLG1sX3pfbm9ybWFsaXplKGEpLG1sX3pfbm9ybWFsaXplKGxhc3R4KSwxXVxufVxuXG4vL2V4dGVybmFsIHNxcnQ6IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9zcXJ0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfcm9vdCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X3NxcnQoejEpIHtcbiAgdmFyIHogPSBiaWdJbnQoejEpO1xuICB2YXIgemVybyA9IGJpZ0ludCgwKTtcbiAgaWYgKHoubHQoemVybykpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLnNxcnQ6IHNxdWFyZSByb290IG9mIGEgbmVnYXRpdmUgbnVtYmVyXCIpO1xuICB9XG4gIHJldHVybiBtbF96X3Jvb3QoeiwgMik7XG59XG5cbi8vZXh0ZXJuYWwgc3FydF9yZW06IHQgLT4gKHQgKiB0KVxuLy9Qcm92aWRlczogbWxfel9zcXJ0X3JlbVxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X3Jvb3QsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfc3FydF9yZW0oeikge1xuICB6ID0gYmlnSW50KHopO1xuICB2YXIgemVybyA9IGJpZ0ludCgwKTtcbiAgaWYgKHoubHQoemVybykpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLnNxcnRfcmVtOiBzcXVhcmUgcm9vdCBvZiBhIG5lZ2F0aXZlIG51bWJlclwiKTtcbiAgfVxuICB2YXIgcm9vdCA9IGJpZ0ludChtbF96X3Jvb3QoeiwgMikpO1xuICB2YXIgbXVsID0gcm9vdC5tdWx0aXBseShyb290KTtcbiAgdmFyIGRpZmYgPSB6LnN1YnRyYWN0KG11bCk7XG4gIHJldHVybiBbMCwgbWxfel9ub3JtYWxpemUocm9vdCksIG1sX3pfbm9ybWFsaXplKGRpZmYpXVxufVxuXG4vL2V4dGVybmFsIHRyYWlsaW5nX3plcm9zOiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel90cmFpbGluZ196ZXJvcyBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X3RyYWlsaW5nX3plcm9zKHopIHtcbiAgeiA9IGJpZ0ludCh6KS5hYnMoKTtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIGlmICh6LmVxdWFscyh6ZXJvKSkge1xuICAgIC8vIG1heF9pbnQgaW4gMzJiaXRcbiAgICByZXR1cm4gMHg3ZmZmZmZmZjtcbiAgfVxuICB2YXIgaSA9IDBcbiAgeiA9IHoueG9yKHoucHJldigpKS5zaGlmdFJpZ2h0KDEpO1xuICBmb3IgKGkgPSAwOyAhei5lcXVhbHMoYmlnSW50Lnplcm8pOyBpKyspIHtcbiAgICB6ID0gei5zaGlmdFJpZ2h0KDEpO1xuICB9XG4gIHJldHVybiBpO1xufVxuXG4vL2V4dGVybmFsIHBvcGNvdW50OiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9wb3Bjb3VudFxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBtbF96X3BvcGNvdW50KHopIHtcbiAgeiA9IGJpZ0ludCh6KTtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIGlmICh6Lmx0KHplcm8pKSB7XG4gICAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX25hbWVkX3ZhbHVlKFwibWxfel9vdmVyZmxvd1wiKSk7XG4gIH1cbiAgdmFyIGk7XG4gIGZvciAoaSA9IDA7ICF6LmVxdWFscyh6ZXJvKTsgaSsrKSB7XG4gICAgeiA9IHouYW5kKHoucHJldigpKTtcbiAgfVxuICBpZihpICE9IChpfDApKSBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfbmFtZWRfdmFsdWUoXCJtbF96X292ZXJmbG93XCIpKTtcbiAgcmV0dXJuIGl8MDtcbn1cblxuLy9leHRlcm5hbCBoYW1kaXN0OiB0IC0+IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X2hhbWRpc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9wb3Bjb3VudCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBtbF96X2hhbWRpc3QoejEsIHoyKSB7XG4gIGlmKGJpZ0ludCh6MSkuaXNOZWdhdGl2ZSgpICE9IGJpZ0ludCh6MikuaXNOZWdhdGl2ZSAoKSl7XG4gICAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX25hbWVkX3ZhbHVlKFwibWxfel9vdmVyZmxvd1wiKSk7XG4gIH1cbiAgaWYoKHoxICE9ICh6MSB8IDApIHx8IHoyICE9ICh6MiB8IDApKSAmJiAoYmlnSW50KHoxKS5pc05lZ2F0aXZlKCkgfHwgYmlnSW50KHoyKS5pc05lZ2F0aXZlICgpKSl7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5oYW1kaXN0OiBuZWdhdGl2ZSBhcmd1bWVudHNcIik7XG4gIH1cbiAgcmV0dXJuIG1sX3pfcG9wY291bnQoYmlnSW50KHoxKS54b3IoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIHNpemU6IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X3NpemUgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9zaXplKHoxKSB7XG4gIC8vIENsYWltIHRvIGJlIGEgMzItYml0IGFyY2hpdGVjdHVyZS5cbiAgcmV0dXJuIGJpZ0ludCh6MSkudG9BcnJheShNYXRoLnBvdygyLCAzMikpLnZhbHVlLmxlbmd0aDtcbn1cblxuLy9leHRlcm5hbCBkaXZleGFjdDogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfZGl2ZXhhY3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9kaXZcbmZ1bmN0aW9uIG1sX3pfZGl2ZXhhY3QoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X2Rpdih6MSwgejIpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfemFyaXRoX21hcnNoYWxcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gY2FtbF96YXJpdGhfbWFyc2hhbCh3cml0ZXIsIHYsIHN6KSB7XG4gIHYgPSBiaWdJbnQodik7XG4gIHZhciBiaXRzID0gdi50b0FycmF5KE1hdGgucG93KDIsIDMyKSk7XG4gIHdyaXRlci53cml0ZSg4LCBiaXRzLmlzTmVnYXRpdmUgPzEgOiAwKTtcbiAgdmFyIGJsb2NrID0gYml0cy52YWx1ZS5sZW5ndGg7XG4gIHZhciBsZW4gPSBibG9jayAqIDQ7XG4gIHdyaXRlci53cml0ZSgzMiwgbGVuKTtcbiAgZm9yKHZhciBpID0gYmxvY2sgLSAxOyBpID49IDA7IGkgLS0pe1xuICAgIHdyaXRlci53cml0ZSg4LCAoYml0cy52YWx1ZVtpXSA+Pj4gMCApICYgMHhmZik7XG4gICAgd3JpdGVyLndyaXRlKDgsIChiaXRzLnZhbHVlW2ldID4+PiA4ICkgJiAweGZmKTtcbiAgICB3cml0ZXIud3JpdGUoOCwgKGJpdHMudmFsdWVbaV0gPj4+IDE2KSAmIDB4ZmYpO1xuICAgIHdyaXRlci53cml0ZSg4LCAoYml0cy52YWx1ZVtpXSA+Pj4gMjQpICYgMHhmZik7XG4gIH1cbiAgc3pbMF0gPSA0ICogKDEgKyAoKChsZW4gKyAzKSAvIDQpIHwgMCkpO1xuICBzelsxXSA9IDggKiAoMSArICgoKGxlbiArIDcpIC8gOCkgfCAwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfemFyaXRoX3VubWFyc2hhbFxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2ZhaWx3aXRoLCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gY2FtbF96YXJpdGhfdW5tYXJzaGFsKHJlYWRlciwgc3opIHtcbiAgdmFyIG5lZ2F0ZTtcbiAgc3dpdGNoKHJlYWRlci5yZWFkOHUgKCkpIHtcbiAgY2FzZSAxOiBuZWdhdGUgPSB0cnVlOyBicmVhaztcbiAgY2FzZSAwOiBuZWdhdGUgPSBmYWxzZTsgYnJlYWs7XG4gIGRlZmF1bHQ6IGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogeiAobWFsZm9ybWVkIGlucHV0KVwiKTtcbiAgfVxuICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgdmFyIHggPSBiaWdJbnQoMCk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4gLyA0OyBpKyspe1xuICAgIHZhciB5ID0gYmlnSW50KHJlYWRlci5yZWFkOHUoKSk7XG4gICAgeSA9IHkuYWRkKChyZWFkZXIucmVhZDh1KCkpIDw8IDgpO1xuICAgIHkgPSB5LmFkZCgocmVhZGVyLnJlYWQ4dSgpKSA8PCAxNik7XG4gICAgeSA9IHkuYWRkKCgocmVhZGVyLnJlYWQ4dSgpKSA8PCAyNCkgPj4+IDApO1xuICAgIHggPSB5LnNoaWZ0TGVmdChpICogMzIpLmFkZCh4KTtcbiAgfVxuICBpZihuZWdhdGUpIHggPSB4Lm5lZ2F0ZSgpO1xuICBzelswXSA9IGxlbiArIDQ7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZSh4KVxufVxuXG4vL1Byb3ZpZGVzOiBtbF96X2RpdmlzaWJsZVxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X2RpdmlzaWJsZShhLCBiKXtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIGEgPSBiaWdJbnQoYSk7XG4gIGIgPSBiaWdJbnQoYik7XG4gIGlmKGEuZXF1YWxzKHplcm8pICYmIGIuZXF1YWxzKHplcm8pKSByZXR1cm4gMTtcbiAgcmV0dXJuIGEuaXNEaXZpc2libGVCeShiKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfY29uZ3J1ZW50XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfY29uZ3J1ZW50KGEsYixjKXtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIGEgPSBiaWdJbnQoYSk7XG4gIGIgPSBiaWdJbnQoYik7XG4gIGMgPSBiaWdJbnQoYyk7XG4gIGlmKGMuZXF1YWxzKHplcm8pICYmIGEuZXF1YWxzKGIpKSByZXR1cm4gMTtcbiAgcmV0dXJuIGEubWludXMoYikuaXNEaXZpc2libGVCeShjKSA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X3JlbW92ZVxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZSwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gbWxfel9yZW1vdmUoYSxiKXtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIGEgPSBiaWdJbnQoYSk7XG4gIGIgPSBiaWdJbnQoYik7XG4gIGlmKGIuZXF1YWxzKHplcm8pKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gIGlmKGEuZXF1YWxzKHplcm8pIHx8IGIuYWJzKCkuZXF1YWxzKG9uZSkpIHJldHVybiBbMCwgYSwgMF07XG4gIHZhciBpID0gMDtcbiAgd2hpbGUoYS5pc0RpdmlzaWJsZUJ5KGIpKXtcbiAgICBhID0gYS5kaXZpZGUoYik7XG4gICAgaSsrO1xuICB9XG4gIHJldHVybiBbMCwgbWxfel9ub3JtYWxpemUoYSksIGldO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X2ZhY1xuLy9SZXF1aXJlczogbWxfel9mYWNNLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIG1sX3pfZmFjKGkpe1xuICBpZihpPD0wKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLmZhY3Q6IG5lZ2F0aXZlIGFyZ3VtZW50c1wiKTtcbiAgcmV0dXJuIG1sX3pfZmFjTShpLDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X2ZhYzJcbi8vUmVxdWlyZXM6IG1sX3pfZmFjTSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X2ZhYzIoaSl7XG4gIGlmKGk8PTApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlouZmFjdDI6IG5lZ2F0aXZlIGFyZ3VtZW50c1wiKTtcbiAgcmV0dXJuIG1sX3pfZmFjTShpLDIpO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X2ZhY01cbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9mYWNNKGksIG0pe1xuICBpZihpPD0wfHxtPD0wKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLmZhY3RNOiBuZWdhdGl2ZSBhcmd1bWVudHNcIik7XG4gIG0gPSBiaWdJbnQobSk7XG4gIHZhciBjdXJyZW50ID0gYmlnSW50KGkpO1xuICB2YXIgcmVzID0gYmlnSW50KDEpO1xuICB3aGlsZShjdXJyZW50LmlzUG9zaXRpdmUoKSl7XG4gICAgcmVzID0gcmVzLm11bHRpcGx5KGN1cnJlbnQpO1xuICAgIGN1cnJlbnQgPSBjdXJyZW50Lm1pbnVzKG0pO1xuICB9XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShyZXMpO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X2ZpYlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBtbF96X25vcm1hbGl6ZSwgYmlnSW50XG5mdW5jdGlvbiBtbF96X2ZpYihpKXtcbiAgaWYoaSA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlouZmliOiBuZWdhdGl2ZSBhcmd1bWVudHNcIik7XG4gIGlmKGkgPT0gMCB8fCBpID09IDEpIHJldHVybiBpO1xuICB2YXIgYSA9IGJpZ0ludCgwKSwgYiA9IGJpZ0ludCgxKTtcbiAgZm9yKHZhciBrID0gMTsgayA8IGk7IGsrKyl7XG4gICAgdmFyIGIyID0gYjtcbiAgICBiID0gYS5hZGQoYik7XG4gICAgYSA9IGIyO1xuICB9XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiKTtcbn1cblxuLy9Qcm92aWRlczogbWxfel9sdWNudW1cbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgbWxfel9ub3JtYWxpemUsIGJpZ0ludFxuZnVuY3Rpb24gbWxfel9sdWNudW0oaSl7XG4gIGlmKGkgPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLmx1Y251bTogbmVnYXRpdmUgYXJndW1lbnRzXCIpO1xuICBpZihpID09IDApIHJldHVybiAyO1xuICBpZihpID09IDEpIHJldHVybiAxO1xuICB2YXIgYSA9IGJpZ0ludCgyKSwgYiA9IGJpZ0ludCgxKTtcbiAgZm9yKHZhciBrID0gMTsgayA8IGk7IGsrKyl7XG4gICAgdmFyIGIyID0gYjtcbiAgICBiID0gYS5hZGQoYik7XG4gICAgYSA9IGIyO1xuICB9XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiKTtcbn1cblxuLy9Qcm92aWRlczogbWxfel9qYWNvYmlcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X2phY29iaShuLCBrKXtcbiAgbiA9IGJpZ0ludChuKTtcbiAgayA9IGJpZ0ludChrKTtcbiAgLy9hc3NlcnQoayA+IDAgYW5kIGsgJSAyID09IDEpXG4gIGlmKGsubGVxKGJpZ0ludCgwKSkgfHwgay5tb2QoYmlnSW50KDIpKS5uZXEoYmlnSW50KDEpKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLmphY29iaTogc2Vjb25kIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIGV2ZW5cIik7XG4gIG4gPSBuLm1vZChrKTtcbiAgaWYobi5sdChiaWdJbnQoMCkpKSBuID0gbi5hZGQoayk7XG4gIHZhciB0ID0gMTtcbiAgd2hpbGUgKCEgbi5lcXVhbHMoYmlnSW50KDApKSl7XG4gICAgd2hpbGUgKG4uaXNEaXZpc2libGVCeShiaWdJbnQoMikpKSB7XG4gICAgICBuID0gbi5kaXZpZGUoYmlnSW50KDIpKVxuICAgICAgdmFyIHIgPSBrLm1vZChiaWdJbnQoOCkpXG4gICAgICBpZiAoci5lcXVhbHMoYmlnSW50KDMpKSB8fCByLmVxdWFscyhiaWdJbnQoNSkpKXtcbiAgICAgICAgdCA9IC10XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBuMSA9IG4sIGsxID0gaztcbiAgICBuID0gazE7XG4gICAgayA9IG4xO1xuICAgIGlmIChuLm1vZChiaWdJbnQoNCkpLmVxdWFscyhiaWdJbnQoMykpICYmICBrLm1vZChiaWdJbnQoNCkpLmVxdWFscyhiaWdJbnQoMykpKSB7XG4gICAgICB0ID0gLXRcbiAgICB9XG4gICAgbiA9IG4ubW9kKGspXG4gIH1cbiAgaWYoay5lcXVhbHMoYmlnSW50KDEpKSlcbiAgICByZXR1cm4gdFxuICBlbHNlXG4gICAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogbWxfel9sZWdlbmRyZVxuLy9SZXF1aXJlczogbWxfel9qYWNvYmlcbmZ1bmN0aW9uIG1sX3pfbGVnZW5kcmUoYSxiKXtcbiAgcmV0dXJuIG1sX3pfamFjb2JpKGEsYik7XG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfa3JvbmVja2VyXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBtbF96X2tyb25lY2tlcihuLGspe1xuICBjYW1sX2ZhaWx3aXRoKFwibWxfel9rcm9uZWNrZXIgaXMgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X3ByaW1vcmlhbFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9wcmltb3JpYWwoYSl7XG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIHZhciB0d28gPSBiaWdJbnQoMik7XG4gIHZhciB6MSA9IG9uZTtcbiAgdmFyIHJlcyA9IG9uZTtcbiAgYSA9IGJpZ0ludChhKTtcbiAgd2hpbGUgKHoxLmxlcShhKSkge1xuICAgIGlmICh6MS5pc1Byb2JhYmxlUHJpbWUoMjUpKSB7XG4gICAgICByZXMgPSByZXMubXVsdGlwbHkoejEpO1xuICAgIH1cbiAgICBpZih6MS5lcXVhbHMob25lKSB8fCB6MS5lcXVhbHModHdvKSkgejEgPSB6MS5hZGQob25lKTtcbiAgICBlbHNlIHoxID0gejEuYWRkKHR3bylcbiAgfVxuICByZXR1cm4gbWxfel9ub3JtYWxpemUocmVzKTtcbn1cblxuLy9Qcm92aWRlczogbWxfel9iaW5cbi8vUmVxdWlyZXM6IG1sX3pfbm9ybWFsaXplLCBiaWdJbnQsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9iaW4obiwgayl7XG4gIHZhciBuID0gYmlnSW50KG4pO1xuICB2YXIgayA9IGJpZ0ludChrKTtcbiAgdmFyIGNvZWZmID0gYmlnSW50KDEpO1xuICBmb3IgKHZhciB4ID0gbi5taW51cyhrKS5hZGQoYmlnSW50KDEpKTsgeC5sZXEobik7IHggPSB4LmFkZChiaWdJbnQoMSkpKSBjb2VmZiA9IGNvZWZmLm11bHRpcGx5KHgpO1xuICBmb3IgKHggPSBiaWdJbnQoMSk7IHgubGVxKGspOyB4ID0geC5hZGQoYmlnSW50KDEpKSkgY29lZmYgPSBjb2VmZi5kaXZpZGUoeCk7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShjb2VmZik7XG5cbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkLCBBbmR5IFJheVxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuLy9cbi8vIEJpZ2FycmF5LlxuLy9cbi8vIC0gYWxsIGJpZ2FycmF5IHR5cGVzIGluY2x1ZGluZyBJbnQ2NCBhbmQgQ29tcGxleC5cbi8vIC0gZm9ydHJhbiArIGMgbGF5b3V0c1xuLy8gLSBzdWIvc2xpY2UvcmVzaGFwZVxuLy8gLSByZXRhaW4gZmFzdCBwYXRoIGZvciAxZCBhcnJheSBhY2Nlc3NcblxuLy9Qcm92aWRlczogY2FtbF9iYV9pbml0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2JhX2luaXQoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemUoZGltcykge1xuICB2YXIgbl9kaW1zID0gZGltcy5sZW5ndGg7XG4gIHZhciBzaXplID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuX2RpbXM7IGkrKykge1xuICAgIGlmIChkaW1zW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmNyZWF0ZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIHNpemUgPSBzaXplICogZGltc1tpXTtcbiAgfVxuICByZXR1cm4gc2l6ZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKXtcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDc6IGNhc2UgMTA6IGNhc2UgMTE6IHJldHVybiAyO1xuICBkZWZhdWx0OiByZXR1cm4gMTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpe1xuICB2YXIgZyA9IGdsb2JhbFRoaXM7XG4gIHZhciB2aWV3O1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMDogIHZpZXcgPSBnLkZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTogIHZpZXcgPSBnLkZsb2F0NjRBcnJheTsgYnJlYWs7XG4gIGNhc2UgMjogIHZpZXcgPSBnLkludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgMzogIHZpZXcgPSBnLlVpbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDQ6ICB2aWV3ID0gZy5JbnQxNkFycmF5OyBicmVhaztcbiAgY2FzZSA1OiAgdmlldyA9IGcuVWludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDY6ICB2aWV3ID0gZy5JbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA3OiAgdmlldyA9IGcuSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgODogIHZpZXcgPSBnLkludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDk6ICB2aWV3ID0gZy5JbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxMDogdmlldyA9IGcuRmxvYXQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxMTogdmlldyA9IGcuRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAxMjogdmlldyA9IGcuVWludDhBcnJheTsgYnJlYWs7XG4gIH1cbiAgaWYgKCF2aWV3KSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHZhciBkYXRhID0gbmV3IHZpZXcoc2l6ZSAqIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCkpO1xuICByZXR1cm4gZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA8IDQuMTFcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyYXlcIlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1ZlcnNpb246ID49IDQuMTFcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyMDJcIlxuXG4vL1Byb3ZpZGVzOiBNbF9CaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSwgY2FtbF9pbnQ2NF9oaTMyLCBjYW1sX2ludDY0X2xvMzJcbmZ1bmN0aW9uIE1sX0JpZ2FycmF5IChraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuXG4gIHRoaXMua2luZCAgID0ga2luZCA7XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLmRpbXMgICA9IGRpbXM7XG4gIHRoaXMuZGF0YSA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gY2FtbF9iYV9jdXN0b21fbmFtZTtcblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgdmFyIG9mcyA9IDA7XG4gIGlmKHR5cGVvZiBhcmcgPT09IFwibnVtYmVyXCIpIGFyZyA9IFthcmddO1xuICBpZiAoISAoYXJnIGluc3RhbmNlb2YgQXJyYXkpKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJiaWdhcnJheS5qczogaW52YWxpZCBvZmZzZXRcIik7XG4gIGlmICh0aGlzLmRpbXMubGVuZ3RoICE9IGFyZy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuZ2V0L3NldDogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICBpZih0aGlzLmxheW91dCA9PSAwIC8qIGNfbGF5b3V0ICovKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhcmdbaV0gPCAwIHx8IGFyZ1tpXSA+PSB0aGlzLmRpbXNbaV0pXG4gICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgIG9mcyA9IChvZnMgKiB0aGlzLmRpbXNbaV0pICsgYXJnW2ldO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5kaW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMSB8fCBhcmdbaV0gPiB0aGlzLmRpbXNbaV0pe1xuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICB9XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIChhcmdbaV0gLSAxKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9mcztcbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChvZnMpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHZhciBsID0gdGhpcy5kYXRhW29mcyAqIDIgKyAwXTtcbiAgICB2YXIgaCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGwsaCk7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB2YXIgciA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGkgPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBbMjU0LCByLCBpXTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gdGhpcy5kYXRhW29mc11cbiAgfVxufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG9mcyx2KSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDBdID0gY2FtbF9pbnQ2NF9sbzMyKHYpO1xuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDBdID0gdlsxXTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gdlsyXTtcbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgYSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB2YXIgYiA9IGNhbWxfaW50NjRfaGkzMih2KTtcbiAgICBpZihhID09IGIpe1xuICAgICAgdGhpcy5kYXRhLmZpbGwoYSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gYSA6IGI7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIGltID0gdlsxXTtcbiAgICB2YXIgcmUgPSB2WzJdO1xuICAgIGlmKGltID09IHJlKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGltKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IodmFyIGkgPSAwOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHRoaXMuZGF0YVtpXSA9IChpJTIgPT0gMCkgPyBpbSA6IHJlO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgICBicmVhaztcbiAgfVxufVxuXG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKGIsIHRvdGFsKSB7XG4gIGlmICh0aGlzLmxheW91dCAhPSBiLmxheW91dCB8fCB0aGlzLmtpbmQgIT0gYi5raW5kKSB7XG4gICAgdmFyIGsxID0gdGhpcy5raW5kIHwgKHRoaXMubGF5b3V0IDw8IDgpO1xuICAgIHZhciBrMiA9ICAgIGIua2luZCB8IChiLmxheW91dCA8PCA4KTtcbiAgICByZXR1cm4gazIgLSBrMTtcbiAgfVxuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBiLmRpbXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGIuZGltcy5sZW5ndGggLSB0aGlzLmRpbXMubGVuZ3RoO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmICh0aGlzLmRpbXNbaV0gIT0gYi5kaW1zW2ldKVxuICAgICAgcmV0dXJuICh0aGlzLmRpbXNbaV0gPCBiLmRpbXNbaV0pID8gLTEgOiAxO1xuICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICBjYXNlIDA6XG4gIGNhc2UgMTpcbiAgY2FzZSAxMDpcbiAgY2FzZSAxMTpcbiAgICAvLyBGbG9hdHNcbiAgICB2YXIgeCwgeTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgeCA9IHRoaXMuZGF0YVtpXTtcbiAgICAgIHkgPSBiLmRhdGFbaV07XG4gICAgICBpZiAoeCA8IHkpXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh4ID4geSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoeCAhPSB5KSB7XG4gICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgIGlmICh4ID09IHgpIHJldHVybiAxO1xuICAgICAgICBpZiAoeSA9PSB5KSByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrPTIpIHtcbiAgICAgIC8vIENoZWNrIGhpZ2hlc3QgYml0cyBmaXJzdFxuICAgICAgaWYgKHRoaXMuZGF0YVtpKzFdIDwgYi5kYXRhW2krMV0pXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA+IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGlmICgodGhpcy5kYXRhW2ldID4+PiAwKSA8IChiLmRhdGFbaV0gPj4+IDApKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPiAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDI6XG4gIGNhc2UgMzpcbiAgY2FzZSA0OlxuICBjYXNlIDU6XG4gIGNhc2UgNjpcbiAgY2FzZSA4OlxuICBjYXNlIDk6XG4gIGNhc2UgMTI6XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmRhdGFbaV0gPCBiLmRhdGFbaV0pXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh0aGlzLmRhdGFbaV0gPiBiLmRhdGFbaV0pXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlfY18xXzFcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgYnVmZmVyKSB7XG4gIHRoaXMua2luZCAgID0ga2luZCA7XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLmRpbXMgICA9IGRpbXM7XG4gIHRoaXMuZGF0YSAgID0gYnVmZmVyO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUgPSBuZXcgTWxfQmlnYXJyYXkoKVxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgaWYodHlwZW9mIGFyZyAhPT0gXCJudW1iZXJcIil7XG4gICAgaWYoKGFyZyBpbnN0YW5jZW9mIEFycmF5KSAmJiBhcmcubGVuZ3RoID09IDEpXG4gICAgICBhcmcgPSBhcmdbMF07XG4gICAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJNbF9CaWdhcnJheV9jXzFfMS5vZmZzZXRcIik7XG4gIH1cbiAgaWYgKGFyZyA8IDAgfHwgYXJnID49IHRoaXMuZGltc1swXSlcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcmc7XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHJldHVybiB0aGlzLmRhdGFbb2ZzXTtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gIHJldHVybiAwXG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKHYpIHtcbiAgdGhpcy5kYXRhLmZpbGwodik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY29tcGFyZVxuZnVuY3Rpb24gY2FtbF9iYV9jb21wYXJlKGEsYix0b3RhbCl7XG4gIHJldHVybiBhLmNvbXBhcmUoYix0b3RhbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgTWxfQmlnYXJyYXlfY18xXzEsIGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSl7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKTtcbiAgaWYoY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSAqIHNpemVfcGVyX2VsZW1lbnQgIT0gZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJsZW5ndGggZG9lc24ndCBtYXRjaCBkaW1zXCIpO1xuICB9XG4gIGlmKGxheW91dCA9PSAwICYmIC8vIGNfbGF5b3V0XG4gICAgIGRpbXMubGVuZ3RoID09IDEgJiYgLy8gQXJyYXkxXG4gICAgIHNpemVfcGVyX2VsZW1lbnQgPT0gMSkgLy8gMS10by0xIG1hcHBpbmdcbiAgICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHJldHVybiBuZXcgTWxfQmlnYXJyYXkoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcblxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZShraW5kLCBsYXlvdXQsIGRpbXNfbWwpIHtcbiAgdmFyIGRpbXMgPSBjYW1sX2pzX2Zyb21fYXJyYXkoZGltc19tbCk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIGNhbWxfYmFfZ2V0X3NpemUoZGltcykpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY2hhbmdlX2xheW91dFxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2NoYW5nZV9sYXlvdXQoYmEsIGxheW91dCkge1xuICBpZihiYS5sYXlvdXQgPT0gbGF5b3V0KSByZXR1cm4gYmE7XG4gIHZhciBuZXdfZGltcyA9IFtdXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBuZXdfZGltc1tpXSA9IGJhLmRpbXNbYmEuZGltcy5sZW5ndGggLSBpIC0gMV07XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgbGF5b3V0LCBuZXdfZGltcywgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfa2luZFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kKGJhKSB7XG4gIHJldHVybiBiYS5raW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2xheW91dFxuZnVuY3Rpb24gY2FtbF9iYV9sYXlvdXQoYmEpIHtcbiAgcmV0dXJuIGJhLmxheW91dDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9udW1fZGltc1xuZnVuY3Rpb24gY2FtbF9iYV9udW1fZGltcyhiYSkge1xuICByZXR1cm4gYmEuZGltcy5sZW5ndGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZGltKGJhLCBpKSB7XG4gIGlmIChpIDwgMCB8fCBpID49IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmRpbVwiKTtcbiAgcmV0dXJuIGJhLmRpbXNbaV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8xKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8yKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8zKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfZ2VuZXJpYyhiYSwgaSkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSk7XG4gIHJldHVybiBiYS5nZXQob2ZzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQxNihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDEgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMgKyAxKTtcbiAgcmV0dXJuIChiMSB8IChiMiA8PCA4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MzIoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHJldHVybiAoIChiMSA8PCAwKSAgfFxuICAgICAgICAgICAoYjIgPDwgOCkgIHxcbiAgICAgICAgICAgKGIzIDw8IDE2KSB8XG4gICAgICAgICAgIChiNCA8PCAyNCkgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQ2NChiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyswKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcysxKTtcbiAgdmFyIGIzID0gYmEuZ2V0KG9mcysyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyszKTtcbiAgdmFyIGI1ID0gYmEuZ2V0KG9mcys0KTtcbiAgdmFyIGI2ID0gYmEuZ2V0KG9mcys1KTtcbiAgdmFyIGI3ID0gYmEuZ2V0KG9mcys2KTtcbiAgdmFyIGI4ID0gYmEuZ2V0KG9mcys3KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW2I4LGI3LGI2LGI1LGI0LGIzLGIyLGIxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzEoYmEsIGkwKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KGkwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzIoYmEsIGkwLCBpMSkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChbaTAsaTFdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzMoYmEsIGkwLCBpMSwgaTIpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxLGkyXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0X2dlbmVyaWMoYmEsIGksIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpLCB2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQxNihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDEgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYmEuc2V0KG9mcyswLCAgdiAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MzIoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzEsICh2ID4+PiA4KSAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysyLCAodiA+Pj4gMTYpICYgMHhmZik7XG4gIGJhLnNldChvZnMrMywgKHYgPj4+IDI0KSAmIDB4ZmYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQ2NChiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIHYgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHYpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgODsgaSsrKSBiYS5zZXQob2ZzK2ksIHZbNy1pXSlcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzEoYmEsIGkwLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoaTApLCB2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMihiYSwgaTAsIGkxLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLGkxXSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfM1xuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMyhiYSwgaTAsIGkxLCBpMiwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZmlsbFxuZnVuY3Rpb24gY2FtbF9iYV9maWxsKGJhLCB2KSB7XG4gIGJhLmZpbGwodik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9ibGl0KHNyYywgZHN0KSB7XG4gIGlmIChkc3QuZGltcy5sZW5ndGggIT0gc3JjLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmJsaXQ6IGRpbWVuc2lvbiBtaXNtYXRjaFwiKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkc3QuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAoZHN0LmRpbXNbaV0gIT0gc3JjLmRpbXNbaV0pXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGRzdC5kYXRhLnNldChzcmMuZGF0YSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3N1YlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc3ViKGJhLCBvZnMsIGxlbikge1xuICB2YXIgY2hhbmdlZF9kaW07XG4gIHZhciBtdWwgPSAxO1xuICBpZiAoYmEubGF5b3V0ID09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgICBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gMDtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IChiYS5kaW1zLmxlbmd0aCAtIDEpOyBpKyspXG4gICAgICBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gYmEuZGltcy5sZW5ndGggLSAxO1xuICAgIG9mcyA9IG9mcyAtIDE7XG4gIH1cbiAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCAob2ZzICsgbGVuKSA+IGJhLmRpbXNbY2hhbmdlZF9kaW1dKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5zdWI6IGJhZCBzdWItYXJyYXlcIik7XG4gIH1cbiAgdmFyIG5ld19kaW1zID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICBuZXdfZGltc1tpXSA9IGJhLmRpbXNbaV07XG4gIG5ld19kaW1zW2NoYW5nZWRfZGltXSA9IGxlbjtcbiAgbXVsICo9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogbXVsLCAob2ZzICsgbGVuKSAqIG11bCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NsaWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3NsaWNlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBudW1faW5kcyA9IHZpbmQubGVuZ3RoO1xuICB2YXIgaW5kZXggPSBbXTtcbiAgdmFyIHN1Yl9kaW1zID0gW107XG4gIHZhciBvZnM7XG5cbiAgaWYgKG51bV9pbmRzID4gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc2xpY2U6IHRvbyBtYW55IGluZGljZXNcIik7XG5cbiAgLy8gQ29tcHV0ZSBvZmZzZXQgYW5kIGNoZWNrIGJvdW5kc1xuICBpZiAoYmEubGF5b3V0ID09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IHZpbmRbaV07XG4gICAgZm9yICg7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSAwO1xuICAgIHN1Yl9kaW1zID0gYmEuZGltcy5zbGljZShudW1faW5kcyk7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbYmEuZGltcy5sZW5ndGggLSBudW1faW5kcyArIGldID0gdmluZFtpXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMTtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UoMCwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kcyk7XG4gIH1cbiAgb2ZzID0gYmEub2Zmc2V0KGluZGV4KTtcbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKHN1Yl9kaW1zKTtcbiAgdmFyIHNpemVfcGVyX2VsZW1lbnQgPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIHNpemVfcGVyX2VsZW1lbnQsIChvZnMgKyBzaXplKSAqIHNpemVfcGVyX2VsZW1lbnQpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgc3ViX2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9yZXNoYXBlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG5mdW5jdGlvbiBjYW1sX2JhX3Jlc2hhcGUoYmEsIHZpbmQpIHtcbiAgdmluZCA9IGNhbWxfanNfZnJvbV9hcnJheSh2aW5kKTtcbiAgdmFyIG5ld19kaW0gPSBbXTtcbiAgdmFyIG51bV9kaW1zID0gdmluZC5sZW5ndGg7XG5cbiAgaWYgKG51bV9kaW1zIDwgMCB8fCBudW1fZGltcyA+IDE2KXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIH1cbiAgdmFyIG51bV9lbHRzID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgbmV3X2RpbVtpXSA9IHZpbmRbaV07XG4gICAgaWYgKG5ld19kaW1baV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIG51bV9lbHRzID0gbnVtX2VsdHMgKiBuZXdfZGltW2ldO1xuICB9XG5cbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICAvLyBDaGVjayB0aGF0IHNpemVzIGFncmVlXG4gIGlmIChudW1fZWx0cyAhPSBzaXplKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IHNpemUgbWlzbWF0Y2hcIik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXJpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX3NlcmlhbGl6ZSh3cml0ZXIsIGJhLCBzeikge1xuICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXMubGVuZ3RoKTtcbiAgd3JpdGVyLndyaXRlKDMyLCAoYmEua2luZCB8IChiYS5sYXlvdXQgPDwgOCkpKTtcbiAgaWYoYmEuY2FtbF9jdXN0b20gPT0gXCJfYmlnYXJyMDJcIilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYoYmEuZGltc1tpXSA8IDB4ZmZmZilcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCBiYS5kaW1zW2ldKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIDB4ZmZmZik7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgMCk7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGltc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICBlbHNlXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHdyaXRlci53cml0ZSgzMixiYS5kaW1zW2ldKVxuICBzd2l0Y2goYmEua2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoOCwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDE2LCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICB3cml0ZXIud3JpdGUoOCwwKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OiAgLy8gSW50MzJBcnJheSAoaW50NjQpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhiYS5nZXQoaSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGJhLmdldChpKSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgaiA9IGJhLmdldChpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMV0pKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMl0pKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgY29tcGxleCA9IGJhLmdldChpKTtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsxXSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMl0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICBzelswXSA9ICg0ICsgYmEuZGltcy5sZW5ndGgpICogNDtcbiAgc3pbMV0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGVzZXJpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlcywgY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9kZXNlcmlhbGl6ZShyZWFkZXIsIHN6LCBuYW1lKXtcbiAgdmFyIG51bV9kaW1zID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgaWYgKG51bV9kaW1zIDwgMCB8fCBudW1fZGltcyA+IDE2KVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogd3JvbmcgbnVtYmVyIG9mIGJpZ2FycmF5IGRpbWVuc2lvbnNcIik7XG4gIHZhciB0YWcgPSByZWFkZXIucmVhZDMycygpO1xuICB2YXIga2luZCA9IHRhZyAmIDB4ZmZcbiAgdmFyIGxheW91dCA9ICh0YWcgPj4gOCkgJiAxO1xuICB2YXIgZGltcyA9IFtdXG4gIGlmKG5hbWUgPT0gXCJfYmlnYXJyMDJcIilcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIHtcbiAgICAgIHZhciBzaXplX2RpbSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgICBpZihzaXplX2RpbSA9PSAweGZmZmYpe1xuICAgICAgICB2YXIgc2l6ZV9kaW1faGkgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICB2YXIgc2l6ZV9kaW1fbG8gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICBpZihzaXplX2RpbV9oaSAhPSAwKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogYmlnYXJyYXkgZGltZW5zaW9uIG92ZXJmbG93IGluIDMyYml0XCIpO1xuICAgICAgICBzaXplX2RpbSA9IHNpemVfZGltX2xvO1xuICAgICAgfVxuICAgICAgZGltcy5wdXNoKHNpemVfZGltKTtcbiAgICB9XG4gIGVsc2VcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIGRpbXMucHVzaChyZWFkZXIucmVhZDMydSgpKTtcbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGRpbXMpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKTtcbiAgdmFyIGJhID0gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDhzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgdmFyIHNpeHR5ID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIGlmKHNpeHR5KSBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGNhbm5vdCByZWFkIGJpZ2FycmF5IHdpdGggNjQtYml0IE9DYW1sIGludHNcIik7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogLy8gKGludDY0KVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBpbnQ2NCA9IGNhbWxfaW50NjRfb2ZfYnl0ZXModCk7XG4gICAgICBiYS5zZXQoaSxpbnQ2NCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgZiA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGJhLnNldChpLGYpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICB2YXIgZiA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIGJhLnNldChpLGYpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICB2YXIgcmUgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICB2YXIgaW0gPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxbMjU0LHJlLGltXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgcmUgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW0gPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxbMjU0LHJlLGltXSk7XG4gICAgfVxuICAgIGJyZWFrXG4gIH1cbiAgc3pbMF0gPSAoNCArIG51bV9kaW1zKSAqIDQ7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9EZXByZWNhdGVkXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9mcm9tXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfZnJvbShkYXRhMSwgZGF0YTIsIGpzdHlwLCBraW5kLCBsYXlvdXQsIGRpbXMpe1xuICBpZihkYXRhMiB8fCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpID09IDIpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfY3JlYXRlX2Zyb206IHVzZSByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlXCIpO1xuICB9XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaGFzaCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9oYXNoX21peF9pbnQsIGNhbWxfaGFzaF9taXhfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfYmFfaGFzaChiYSl7XG4gIHZhciBudW1fZWx0cyA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIHZhciBoID0gMDtcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgaWYobnVtX2VsdHMgPiAyNTYpIG51bV9lbHRzID0gMjU2O1xuICAgIHZhciB3ID0gMCwgaSA9MDtcbiAgICBmb3IoaSA9IDA7IGkgKyA0IDw9IGJhLmRhdGEubGVuZ3RoOyBpKz00KXtcbiAgICAgIHcgPSBiYS5kYXRhW2krMF0gfCAoYmEuZGF0YVtpKzFdIDw8IDgpIHwgKGJhLmRhdGFbaSsyXSA8PCAxNikgfCAoYmEuZGF0YVtpKzNdIDw8IDI0KTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLHcpO1xuICAgIH1cbiAgICB3ID0gMDtcbiAgICBzd2l0Y2ggKG51bV9lbHRzICYgMykge1xuICAgIGNhc2UgMzogdyAgPSBiYS5kYXRhW2krMl0gPDwgMTY7ICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAyOiB3IHw9IGJhLmRhdGFbaSsxXSA8PCA4OyAgICAgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlIDE6IHcgfD0gYmEuZGF0YVtpKzBdO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMTI4KSBudW1fZWx0cyA9IDEyODtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgMiA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9Mil7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCAxNik7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgaWYgKChudW1fZWx0cyAmIDEpICE9IDApXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA3OiAgLy8gSW50MzJBcnJheSAoaW50NjQpXG4gICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgbnVtX2VsdHMgKj0gMlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBudW1fZWx0cyAqPTI7IC8qIGZhbGx0aHJvdWdoICovXG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9iYV90b190eXBlZF9hcnJheShiYSl7XG4gIHJldHVybiBiYS5kYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpe1xuICB2YXIgZyA9IGdsb2JhbFRoaXM7XG4gIHZhciBraW5kO1xuICBpZiAodGEgaW5zdGFuY2VvZiBnLkZsb2F0MzJBcnJheSkga2luZCA9IDA7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgZy5GbG9hdDY0QXJyYXkpIGtpbmQgPSAxO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIGcuSW50OEFycmF5KSBraW5kID0gMjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBnLlVpbnQ4QXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIGcuSW50MTZBcnJheSkga2luZCA9IDQ7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgZy5VaW50MTZBcnJheSkga2luZCA9IDU7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgZy5JbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBnLlVpbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXk6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHJldHVybiBraW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSh0YSl7XG4gIHZhciBraW5kID0gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgbGlicmFyeVxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEpzbGliXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfcHVyZV9leHByIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX3B1cmVfZXhwciAoZikgeyByZXR1cm4gZigpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfc2V0IChtdXRhYmxlLCBjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3NldChvLGYsdikgeyBvW2ZdPXY7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2dldChvLGYpIHsgcmV0dXJuIG9bZl07IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZGVsZXRlIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZGVsZXRlKG8sZikgeyBkZWxldGUgb1tmXTsgcmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaW5zdGFuY2VvZiAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19pbnN0YW5jZW9mKG8sYykgeyByZXR1cm4gKG8gaW5zdGFuY2VvZiBjKSA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdHlwZW9mIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdHlwZW9mKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmUocmVzKSB7XG4gIHZhciBjID0gMTtcbiAgd2hpbGUocmVzICYmIHJlcy5qb29fdHJhbXApe1xuICAgIHJlcyA9IHJlcy5qb29fdHJhbXAuYXBwbHkobnVsbCwgcmVzLmpvb19hcmdzKTtcbiAgICBjKys7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncykge1xuICByZXR1cm4ge2pvb190cmFtcDpmLGpvb19hcmdzOmFyZ3N9O1xufVxuXG4vL1Byb3ZpZGVzOiBqc19wcmludF9zdGRvdXQgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBqc19wcmludF9zdGRvdXQocykge1xuICB2YXIgcyA9IGNhbWxfdXRmMTZfb2ZfdXRmOChzKTtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICBpZiAoZy5wcm9jZXNzICYmIGcucHJvY2Vzcy5zdGRvdXQgJiYgZy5wcm9jZXNzLnN0ZG91dC53cml0ZSkge1xuICAgIGcucHJvY2Vzcy5zdGRvdXQud3JpdGUocylcbiAgfSBlbHNlIHtcbiAgICAvLyBEbyBub3Qgb3V0cHV0IHRoZSBsYXN0IFxcbiBpZiBwcmVzZW50XG4gICAgLy8gYXMgY29uc29sZSBsb2dnaW5nIGRpc3BsYXkgYSBuZXdsaW5lIGF0IHRoZSBlbmRcbiAgICBpZihzLmNoYXJDb2RlQXQocy5sZW5ndGggLSAxKSA9PSAxMClcbiAgICAgIHMgPSBzLnN1YnN0cigwLHMubGVuZ3RoIC0gMSApO1xuICAgIHZhciB2ID0gZy5jb25zb2xlO1xuICAgIHYgICYmIHYubG9nICYmIHYubG9nKHMpO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBqc19wcmludF9zdGRlcnIgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBqc19wcmludF9zdGRlcnIocykge1xuICB2YXIgcyA9IGNhbWxfdXRmMTZfb2ZfdXRmOChzKTtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICBpZiAoZy5wcm9jZXNzICYmIGcucHJvY2Vzcy5zdGRvdXQgJiYgZy5wcm9jZXNzLnN0ZG91dC53cml0ZSkge1xuICAgIGcucHJvY2Vzcy5zdGRlcnIud3JpdGUocylcbiAgfSBlbHNlIHtcbiAgICAvLyBEbyBub3Qgb3V0cHV0IHRoZSBsYXN0IFxcbiBpZiBwcmVzZW50XG4gICAgLy8gYXMgY29uc29sZSBsb2dnaW5nIGRpc3BsYXkgYSBuZXdsaW5lIGF0IHRoZSBlbmRcbiAgICBpZihzLmNoYXJDb2RlQXQocy5sZW5ndGggLSAxKSA9PSAxMClcbiAgICAgIHMgPSBzLnN1YnN0cigwLHMubGVuZ3RoIC0gMSApO1xuICAgIHZhciB2ID0gZy5jb25zb2xlO1xuICAgIHYgJiYgdi5lcnJvciAmJiB2LmVycm9yKHMpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfanNcbmZ1bmN0aW9uIGNhbWxfaXNfanMoKSB7XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dyYXBfZXhjZXB0aW9uIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsY2FtbF9uYW1lZF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9yZXR1cm5fZXhuX2NvbnN0YW50XG5mdW5jdGlvbiBjYW1sX3dyYXBfZXhjZXB0aW9uKGUpIHtcbiAgaWYoZSBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gZTtcbiAgLy9TdGFja19vdmVyZmxvdzogY2hyb21lLCBzYWZhcmlcbiAgaWYoZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlJhbmdlRXJyb3JcbiAgICAgJiYgZS5tZXNzYWdlXG4gICAgICYmIGUubWVzc2FnZS5tYXRjaCgvbWF4aW11bSBjYWxsIHN0YWNrL2kpKVxuICAgIHJldHVybiBjYW1sX3JldHVybl9leG5fY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5TdGFja19vdmVyZmxvdyk7XG4gIC8vU3RhY2tfb3ZlcmZsb3c6IGZpcmVmb3hcbiAgaWYoZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgJiYgZS5tZXNzYWdlXG4gICAgICYmIGUubWVzc2FnZS5tYXRjaCgvdG9vIG11Y2ggcmVjdXJzaW9uL2kpKVxuICAgIHJldHVybiBjYW1sX3JldHVybl9leG5fY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5TdGFja19vdmVyZmxvdyk7XG4gIC8vV3JhcCBFcnJvciBpbiBKcy5FcnJvciBleGNlcHRpb25cbiAgaWYoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IgJiYgY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIikpXG4gICAgcmV0dXJuIFswLGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpLGVdO1xuICAvL2ZhbGxiYWNrOiB3cmFwcGVkIGluIEZhaWx1cmVcbiAgcmV0dXJuIFswLGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoU3RyaW5nKGUpKV07XG59XG5cbi8vIEV4cGVyaW1lbnRhbFxuLy9Qcm92aWRlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgLy9uZXZlciByZXJhaXNlIGZvciBjb25zdGFudCBleG5cbiAgaWYoIWV4bi5qc19lcnJvciB8fCBmb3JjZSB8fCBleG5bMF0gPT0gMjQ4KSBleG4uanNfZXJyb3IgPSBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIkpzIGV4Y2VwdGlvbiBjb250YWluaW5nIGJhY2t0cmFjZVwiKTtcbiAgcmV0dXJuIGV4bjtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBbMCwgZXhuLmpzX2Vycm9yXTsgfVxuICByZXR1cm4gMDtcbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9ib29sKHgpIHsgcmV0dXJuICEheDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYm9vbCh4KSB7IHJldHVybiAreDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Zsb2F0IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9mbG9hdCh4KSB7IHJldHVybiB4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Zsb2F0IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9hcnJheShhKSB7XG4gIHJldHVybiBhLnNsaWNlKDEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc190b19hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc190b19hcnJheShhKSB7XG4gIHZhciBsZW4gPSBhLmxlbmd0aDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKzEpO1xuICBiWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxsZW47aSsrKSBiW2krMV0gPSBhW2ldO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X29mX2pzX2FycmF5IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfbGlzdF9vZl9qc19hcnJheShhKXtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGk9YS5sZW5ndGggLSAxOyBpPj0wOyBpLS0pe1xuICAgIHZhciBlID0gYVtpXTtcbiAgICBsID0gWzAsZSxsXTtcbiAgfVxuICByZXR1cm4gbFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xpc3RfdG9fanNfYXJyYXkgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9saXN0X3RvX2pzX2FycmF5KGwpe1xuICB2YXIgYSA9IFtdO1xuICBmb3IoOyBsICE9PSAwOyBsID0gbFsyXSkge1xuICAgIGEucHVzaChsWzFdKTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc192YXIgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBqc19wcmludF9zdGRlcnJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX3Zhcih4KSB7XG4gIHZhciB4ID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoeCk7XG4gIC8vQ2hlY2tzIHRoYXQgeCBoYXMgdGhlIGZvcm0gaWRlbnRbLmlkZW50XSpcbiAgaWYoIXgubWF0Y2goL15bYS16QS1aXyRdW2EtekEtWl8kMC05XSooXFwuW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKSokLykpe1xuICAgIGpzX3ByaW50X3N0ZGVycihcImNhbWxfanNfdmFyOiBcXFwiXCIgKyB4ICsgXCJcXFwiIGlzIG5vdCBhIHZhbGlkIEphdmFTY3JpcHQgdmFyaWFibGUuIGNvbnRpbnVpbmcgLi5cIik7XG4gICAgLy9nbG9iYWxUaGlzLmNvbnNvbGUuZXJyb3IoXCJKcy5VbnNhZmUuZXZhbF9zdHJpbmdcIilcbiAgfVxuICByZXR1cm4gZXZhbCh4KTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfY2FsbCAoY29uc3QsIG11dGFibGUsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfY2FsbChmLCBvLCBhcmdzKSB7IHJldHVybiBmLmFwcGx5KG8sIGNhbWxfanNfZnJvbV9hcnJheShhcmdzKSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuX2NhbGwgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2Z1bl9jYWxsKGYsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDE6IHJldHVybiBmKCk7XG4gIGNhc2UgMjogcmV0dXJuIGYgKGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBmIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIGNhc2UgODogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdLGFbN10pO1xuICB9XG4gIHJldHVybiBmLmFwcGx5KG51bGwsIGNhbWxfanNfZnJvbV9hcnJheShhKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX21ldGhfY2FsbCAobXV0YWJsZSwgY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX21ldGhfY2FsbChvLCBmLCBhcmdzKSB7XG4gIHJldHVybiBvW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGYpXS5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19uZXcgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX25ldyhjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMjogcmV0dXJuIG5ldyBjIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIGNhc2UgODogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpOyB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRjtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfb2pzX25ld19hcnIgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX29qc19uZXdfYXJyKGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDA6IHJldHVybiBuZXcgYztcbiAgY2FzZSAxOiByZXR1cm4gbmV3IGMgKGFbMF0pO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7IHJldHVybiBjLmFwcGx5KHRoaXMsIGEpOyB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRjtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFjayBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGlmKGxlbiA+IDApe1xuICAgICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBhcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgW3VuZGVmaW5lZF0pO1xuICAgIH1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBbYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGlmKG4gPT0gYXJpdHkgJiYgZi5sZW5ndGggPT0gYXJpdHkpIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJpdHkpO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoLCBhcml0eSlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLGFyZ3MpO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZixbdGhpcyxhcmdzXSk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJpdHkgKyAxKTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpOyB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2VxdWFscyBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09IHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXZhbF9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXZhbF9zdHJpbmcgKHMpIHtyZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V4cHIgKGNvbnN0KVxuLy9SZXF1aXJlczoganNfcHJpbnRfc3RkZXJyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19leHByKHMpIHtcbiAganNfcHJpbnRfc3RkZXJyKFwiY2FtbF9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcHVyZV9qc19leHByIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGpzX3ByaW50X3N0ZGVyclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcHVyZV9qc19leHByIChzKXtcbiAganNfcHJpbnRfc3RkZXJyKFwiY2FtbF9wdXJlX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgcmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19vYmplY3QgKG9iamVjdF9saXRlcmFsKVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfb2JqZWN0IChhKSB7XG4gIHZhciBvID0ge307XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwID0gYVtpXTtcbiAgICBvW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHBbMV0pXSA9IHBbMl07XG4gIH1cbiAgcmV0dXJuIG87XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogcGFyc2luZy5jIDg5ODMgMjAwOC0wOC0wNiAwOTozODoyNVogeGxlcm95ICQgKi9cblxuLyogVGhlIFBEQSBhdXRvbWF0b24gZm9yIHBhcnNlcnMgZ2VuZXJhdGVkIGJ5IGNhbWx5YWNjICovXG5cbi8qIFRoZSBwdXNoZG93biBhdXRvbWF0YSAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9sZXhfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZW5naW5lKHRhYmxlcywgZW52LCBjbWQsIGFyZylcbntcbiAgdmFyIEVSUkNPREUgPSAyNTY7XG5cbiAgLy92YXIgU1RBUlQgPSAwO1xuICAvL3ZhciBUT0tFTl9SRUFEID0gMTtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzEgPSAyO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMiA9IDM7XG4gIC8vdmFyIFNFTUFOVElDX0FDVElPTl9DT01QVVRFRCA9IDQ7XG4gIC8vdmFyIEVSUk9SX0RFVEVDVEVEID0gNTtcbiAgdmFyIGxvb3AgPSA2O1xuICB2YXIgdGVzdHNoaWZ0ID0gNztcbiAgdmFyIHNoaWZ0ID0gODtcbiAgdmFyIHNoaWZ0X3JlY292ZXIgPSA5O1xuICB2YXIgcmVkdWNlID0gMTA7XG5cbiAgdmFyIFJFQURfVE9LRU4gPSAwO1xuICB2YXIgUkFJU0VfUEFSU0VfRVJST1IgPSAxO1xuICB2YXIgR1JPV19TVEFDS1NfMSA9IDI7XG4gIHZhciBHUk9XX1NUQUNLU18yID0gMztcbiAgdmFyIENPTVBVVEVfU0VNQU5USUNfQUNUSU9OID0gNDtcbiAgdmFyIENBTExfRVJST1JfRlVOQ1RJT04gPSA1O1xuXG4gIHZhciBlbnZfc19zdGFjayA9IDE7XG4gIHZhciBlbnZfdl9zdGFjayA9IDI7XG4gIHZhciBlbnZfc3ltYl9zdGFydF9zdGFjayA9IDM7XG4gIHZhciBlbnZfc3ltYl9lbmRfc3RhY2sgPSA0O1xuICB2YXIgZW52X3N0YWNrc2l6ZSA9IDU7XG4gIHZhciBlbnZfc3RhY2tiYXNlID0gNjtcbiAgdmFyIGVudl9jdXJyX2NoYXIgPSA3O1xuICB2YXIgZW52X2x2YWwgPSA4O1xuICB2YXIgZW52X3N5bWJfc3RhcnQgPSA5O1xuICB2YXIgZW52X3N5bWJfZW5kID0gMTA7XG4gIHZhciBlbnZfYXNwID0gMTE7XG4gIHZhciBlbnZfcnVsZV9sZW4gPSAxMjtcbiAgdmFyIGVudl9ydWxlX251bWJlciA9IDEzO1xuICB2YXIgZW52X3NwID0gMTQ7XG4gIHZhciBlbnZfc3RhdGUgPSAxNTtcbiAgdmFyIGVudl9lcnJmbGFnID0gMTY7XG5cbiAgLy8gdmFyIF90YmxfYWN0aW9ucyA9IDE7XG4gIHZhciB0YmxfdHJhbnNsX2NvbnN0ID0gMjtcbiAgdmFyIHRibF90cmFuc2xfYmxvY2sgPSAzO1xuICB2YXIgdGJsX2xocyA9IDQ7XG4gIHZhciB0YmxfbGVuID0gNTtcbiAgdmFyIHRibF9kZWZyZWQgPSA2O1xuICB2YXIgdGJsX2Rnb3RvID0gNztcbiAgdmFyIHRibF9zaW5kZXggPSA4O1xuICB2YXIgdGJsX3JpbmRleCA9IDk7XG4gIHZhciB0YmxfZ2luZGV4ID0gMTA7XG4gIHZhciB0YmxfdGFibGVzaXplID0gMTE7XG4gIHZhciB0YmxfdGFibGUgPSAxMjtcbiAgdmFyIHRibF9jaGVjayA9IDEzO1xuICAvLyB2YXIgX3RibF9lcnJvcl9mdW5jdGlvbiA9IDE0O1xuICAvLyB2YXIgX3RibF9uYW1lc19jb25zdCA9IDE1O1xuICAvLyB2YXIgX3RibF9uYW1lc19ibG9jayA9IDE2O1xuXG4gIGlmICghdGFibGVzLmRnb3RvKSB7XG4gICAgdGFibGVzLmRlZnJlZCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2RlZnJlZF0pO1xuICAgIHRhYmxlcy5zaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9zaW5kZXhdKTtcbiAgICB0YWJsZXMuY2hlY2sgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfY2hlY2tdKTtcbiAgICB0YWJsZXMucmluZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfcmluZGV4XSk7XG4gICAgdGFibGVzLnRhYmxlICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3RhYmxlXSk7XG4gICAgdGFibGVzLmxlbiAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xlbl0pO1xuICAgIHRhYmxlcy5saHMgICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9saHNdKTtcbiAgICB0YWJsZXMuZ2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZ2luZGV4XSk7XG4gICAgdGFibGVzLmRnb3RvICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2Rnb3RvXSk7XG4gIH1cblxuICB2YXIgcmVzID0gMCwgbiwgbjEsIG4yLCBzdGF0ZTE7XG5cbiAgLy8gUkVTVE9SRVxuICB2YXIgc3AgPSBlbnZbZW52X3NwXTtcbiAgdmFyIHN0YXRlID0gZW52W2Vudl9zdGF0ZV07XG4gIHZhciBlcnJmbGFnID0gZW52W2Vudl9lcnJmbGFnXTtcblxuICBleGl0OmZvciAoOzspIHtcbiAgICBzd2l0Y2goY21kKSB7XG4gICAgY2FzZSAwOi8vU1RBUlQ6XG4gICAgICBzdGF0ZSA9IDA7XG4gICAgICBlcnJmbGFnID0gMDtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSA2Oi8vbG9vcDpcbiAgICAgIG4gPSB0YWJsZXMuZGVmcmVkW3N0YXRlXTtcbiAgICAgIGlmIChuICE9IDApIHsgY21kID0gcmVkdWNlOyBicmVhazsgfVxuICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA+PSAwKSB7IGNtZCA9IHRlc3RzaGlmdDsgYnJlYWs7IH1cbiAgICAgIHJlcyA9IFJFQURfVE9LRU47XG4gICAgICBicmVhayBleGl0O1xuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGxleGVyIGFuZCB1cGRhdGVzICovXG4gICAgICAvKiBzeW1iX3N0YXJ0IGFuZCBzeW1iX2VuZCAqL1xuICAgIGNhc2UgMTovL1RPS0VOX1JFQUQ6XG4gICAgICBpZiAoYXJnIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfYmxvY2tdW2FyZ1swXSArIDFdO1xuICAgICAgICBlbnZbZW52X2x2YWxdID0gYXJnWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfY29uc3RdW2FyZyArIDFdO1xuICAgICAgICBlbnZbZW52X2x2YWxdID0gMDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSA3Oi8vdGVzdHNoaWZ0OlxuICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlXTtcbiAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7XG4gICAgICAgIGNtZCA9IHNoaWZ0OyBicmVhaztcbiAgICAgIH1cbiAgICAgIG4xID0gdGFibGVzLnJpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBuID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgICAgY21kID0gcmVkdWNlOyBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChlcnJmbGFnIDw9IDApIHtcbiAgICAgICAgcmVzID0gQ0FMTF9FUlJPUl9GVU5DVElPTjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGVycm9yIGZ1bmN0aW9uICovXG4gICAgY2FzZSA1Oi8vRVJST1JfREVURUNURUQ6XG4gICAgICBpZiAoZXJyZmxhZyA8IDMpIHtcbiAgICAgICAgZXJyZmxhZyA9IDM7XG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV07XG4gICAgICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlMV07XG4gICAgICAgICAgbjIgPSBuMSArIEVSUkNPREU7XG4gICAgICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBFUlJDT0RFKSB7XG4gICAgICAgICAgICBjbWQgPSBzaGlmdF9yZWNvdmVyOyBicmVhaztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHNwIDw9IGVudltlbnZfc3RhY2tiYXNlXSkgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgICAgICAgICAgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgICAgICBzcC0tO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA9PSAwKSByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDg6Ly9zaGlmdDpcbiAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgaWYgKGVycmZsYWcgPiAwKSBlcnJmbGFnLS07XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDk6Ly9zaGlmdF9yZWNvdmVyOlxuICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgc3ArKztcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMTtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAyOi8vU1RBQ0tTX0dST1dOXzE6XG4gICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgIGVudltlbnZfdl9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfbHZhbF07XG4gICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfc3RhcnRdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRdO1xuICAgICAgY21kID0gbG9vcDtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAxMDovL3JlZHVjZTpcbiAgICAgIHZhciBtID0gdGFibGVzLmxlbltuXTtcbiAgICAgIGVudltlbnZfYXNwXSA9IHNwO1xuICAgICAgZW52W2Vudl9ydWxlX251bWJlcl0gPSBuO1xuICAgICAgZW52W2Vudl9ydWxlX2xlbl0gPSBtO1xuICAgICAgc3AgPSBzcCAtIG0gKyAxO1xuICAgICAgbSA9IHRhYmxlcy5saHNbbl07XG4gICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwXTtcbiAgICAgIG4xID0gdGFibGVzLmdpbmRleFttXTtcbiAgICAgIG4yID0gbjEgKyBzdGF0ZTE7XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gc3RhdGUxKVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBlbHNlXG4gICAgICAgIHN0YXRlID0gdGFibGVzLmRnb3RvW21dO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18yO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDM6Ly9TVEFDS1NfR1JPV05fMjpcbiAgICAgIHJlcyA9IENPTVBVVEVfU0VNQU5USUNfQUNUSU9OO1xuICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBzZW1hbnRpYyBhY3Rpb24gKi9cbiAgICBjYXNlIDQ6Ly9TRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQ6XG4gICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgIGVudltlbnZfdl9zdGFja11bc3AgKyAxXSA9IGFyZztcbiAgICAgIHZhciBhc3AgPSBlbnZbZW52X2FzcF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwICsgMV07XG4gICAgICBpZiAoc3AgPiBhc3ApIHtcbiAgICAgICAgLyogVGhpcyBpcyBhbiBlcHNpbG9uIHByb2R1Y3Rpb24uIFRha2Ugc3ltYl9zdGFydCBlcXVhbCB0byBzeW1iX2VuZC4gKi9cbiAgICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwICsgMV07XG4gICAgICB9XG4gICAgICBjbWQgPSBsb29wOyBicmVhaztcbiAgICAgIC8qIFNob3VsZCBub3QgaGFwcGVuICovXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICB9XG4gIH1cbiAgLy8gU0FWRVxuICBlbnZbZW52X3NwXSA9IHNwO1xuICBlbnZbZW52X3N0YXRlXSA9IHN0YXRlO1xuICBlbnZbZW52X2VycmZsYWddID0gZXJyZmxhZztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfcGFyc2VyX3RyYWNlIGNvbnN0XG4vL0R1bW15IGZ1bmN0aW9uIVxuZnVuY3Rpb24gY2FtbF9zZXRfcGFyc2VyX3RyYWNlKCkgeyByZXR1cm4gMDsgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfaW50IGNvbnN0IChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZywgY2FtbF9zdHJfcmVwZWF0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9pbnQoZm10LCBpKSB7XG4gIGlmIChjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCkgPT0gXCIlZFwiKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiK2kpO1xuICB2YXIgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIGlmIChpIDwgMCkgeyBpZiAoZi5zaWduZWRjb252KSB7IGYuc2lnbiA9IC0xOyBpID0gLWk7IH0gZWxzZSBpID4+Pj0gMDsgfVxuICB2YXIgcyA9IGkudG9TdHJpbmcoZi5iYXNlKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSAnICc7XG4gICAgdmFyIG4gPSBmLnByZWMgLSBzLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIHMgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBzO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2Vcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKSB7XG4gIHZhciBpID0gMCwgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpLCBiYXNlID0gMTAsIHNpZ24gPSAxO1xuICBpZiAobGVuID4gMCkge1xuICAgIHN3aXRjaCAoY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLGkpKSB7XG4gICAgY2FzZSA0NTogaSsrOyBzaWduID0gLTE7IGJyZWFrO1xuICAgIGNhc2UgNDM6IGkrKzsgc2lnbiA9IDE7IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoaSArIDEgPCBsZW4gJiYgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSA9PSA0OClcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSArIDEpKSB7XG4gICAgY2FzZSAxMjA6IGNhc2UgODg6IGJhc2UgPSAxNjsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlIDExMTogY2FzZSA3OTogYmFzZSA9ICA4OyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgIDk4OiBjYXNlIDY2OiBiYXNlID0gIDI7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTc6IGNhc2UgODU6IGkgKz0gMjsgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gW2ksIHNpZ24sIGJhc2VdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2RpZ2l0XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2RpZ2l0KGMpIHtcbiAgaWYgKGMgPj0gNDggJiYgYyA8PSA1NykgIHJldHVybiBjIC0gNDg7XG4gIGlmIChjID49IDY1ICYmIGMgPD0gOTApICByZXR1cm4gYyAtIDU1O1xuICBpZiAoYyA+PSA5NyAmJiBjIDw9IDEyMikgcmV0dXJuIGMgLSA4NztcbiAgcmV0dXJuIC0xO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfcGFyc2VfZGlnaXQsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfaW50X29mX3N0cmluZyAocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocyk7XG4gIHZhciBpID0gclswXSwgc2lnbiA9IHJbMV0sIGJhc2UgPSByWzJdO1xuICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICB2YXIgdGhyZXNob2xkID0gLTEgPj4+IDA7XG4gIHZhciBjID0gKGkgPCBsZW4pP2NhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk6MDtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGQ7XG4gIGZvciAoaSsrO2k8bGVuO2krKykge1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICByZXMgPSBiYXNlICogcmVzICsgZDtcbiAgICBpZiAocmVzID4gdGhyZXNob2xkKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAvLyBGb3IgYmFzZSBkaWZmZXJlbnQgZnJvbSAxMCwgd2UgZXhwZWN0IGFuIHVuc2lnbmVkIHJlcHJlc2VudGF0aW9uLFxuICAvLyBoZW5jZSBhbnkgdmFsdWUgb2YgJ3JlcycgKGxlc3MgdGhhbiAndGhyZXNob2xkJykgaXMgYWNjZXB0YWJsZS5cbiAgLy8gQnV0IHdlIGhhdmUgdG8gY29udmVydCB0aGUgcmVzdWx0IGJhY2sgdG8gYSBzaWduZWQgaW50ZWdlci5cbiAgcmVzID0gc2lnbiAqIHJlcztcbiAgaWYgKChiYXNlID09IDEwKSAmJiAoKHJlcyB8IDApICE9IHJlcykpXG4gICAgLyogU2lnbmVkIHJlcHJlc2VudGF0aW9uIGV4cGVjdGVkLCBhbGxvdyAtMl4obmJpdHMtMSkgdG8gMl4obmJpdHMtMSkgLSAxICovXG4gICAgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX211bCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tdWwoYSxiKXtcbiAgcmV0dXJuIE1hdGguaW11bChhLGIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RpdlxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9kaXYoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiAoeC95KXwwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9tb2QoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiB4JXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnN3YXAxNlxuZnVuY3Rpb24gY2FtbF9ic3dhcDE2KHgpIHtcbiAgcmV0dXJuICgoKCh4ICYgMHgwMEZGKSA8PCA4KSB8XG4gICAgICAgICAgICgoeCAmIDB4RkYwMCkgPj4gOCkpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYnN3YXBcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYnN3YXAoeCkge1xuICByZXR1cm4gKCgoeCAmIDB4MDAwMDAwRkYpIDw8IDI0KSB8XG4gICAgICAgICAgKCh4ICYgMHgwMDAwRkYwMCkgPDwgOCkgfFxuICAgICAgICAgICgoeCAmIDB4MDBGRjAwMDApID4+PiA4KSB8XG4gICAgICAgICAgKCh4ICYgMHhGRjAwMDAwMCkgPj4+IDI0KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Jzd2FwXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X2Jzd2FwKHgpIHtcbiAgdmFyIHkgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHgpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbeVs3XSwgeVs2XSwgeVs1XSwgeVs0XSwgeVszXSwgeVsyXSwgeVsxXSwgeVswXV0pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBIYXNodGJsXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF91bml2X3BhcmFtIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9oYXNoX3VuaXZfcGFyYW0gKGNvdW50LCBsaW1pdCwgb2JqKSB7XG4gIHZhciBoYXNoX2FjY3UgPSAwO1xuICBmdW5jdGlvbiBoYXNoX2F1eCAob2JqKSB7XG4gICAgbGltaXQgLS07XG4gICAgaWYgKGNvdW50IDwgMCB8fCBsaW1pdCA8IDApIHJldHVybjtcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgQXJyYXkgJiYgb2JqWzBdID09PSAob2JqWzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKG9ialswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgb2JqWzJdKSB8IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgbGltaXQrKzsgaGFzaF9hdXgob2JqKTsgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgb2JqWzBdKSB8IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSBvYmoubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkgaGFzaF9hdXggKG9ialtpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKG9iaikpIHtcbiAgICAgIGNvdW50IC0tO1xuICAgICAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQob2JqKTtcbiAgICAgIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKSB7XG5cdGZvciAodmFyIGIgPSBjb250ZW50LCBsID0gYi5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgICAgfSBlbHNlIHsgLyogQVJSQVkgKi9cbiAgICAgICAgZm9yICh2YXIgYSA9IGNvbnRlbnQsIGwgPSBhLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYVtpXSkgfCAwO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcob2JqKSkge1xuICAgICAgdmFyIGpzYnl0ZXMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG9iaik7XG4gICAgICBmb3IgKHZhciBiID0ganNieXRlcywgbCA9IGpzYnl0ZXMubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBmb3IgKHZhciBiID0gb2JqLCBsID0gb2JqLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSAob2JqfDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBjb3VudCAtLTtcbiAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9iaikgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSArb2JqKSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgY291bnQtLTtcbiAgICAgIHZhciBwID0gY2FtbF9pbnQ2NF90b19ieXRlcyAoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IChvYmopKTtcbiAgICAgIGZvciAodmFyIGkgPSA3OyBpID49IDA7IGktLSkgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgcFtpXSkgfCAwO1xuICAgIH0gZWxzZSBpZihvYmogJiYgb2JqLmNhbWxfY3VzdG9tKSB7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoID0gY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaChvYmopIHwgMDtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgaCkgfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBoYXNoX2F1eCAob2JqKTtcbiAgcmV0dXJuIGhhc2hfYWNjdSAmIDB4M0ZGRkZGRkY7XG59XG5cbi8vZnVuY3Rpb24gUk9UTDMyKHgsbikgeyByZXR1cm4gKCh4IDw8IG4pIHwgKHggPj4+ICgzMi1uKSkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50KGgsZCkge1xuICBkID0gY2FtbF9tdWwoZCwgMHhjYzllMmQ1MXwwKTtcbiAgZCA9ICgoZCA8PCAxNSkgfCAoZCA+Pj4gKDMyLTE1KSkpOyAvLyBST1RMMzIoZCwgMTUpO1xuICBkID0gY2FtbF9tdWwoZCwgMHgxYjg3MzU5Myk7XG4gIGggXj0gZDtcbiAgaCA9ICgoaCA8PCAxMykgfCAoaCA+Pj4gKDMyLTEzKSkpOyAgIC8vUk9UTDMyKGgsIDEzKTtcbiAgcmV0dXJuICgoKGggKyAoaCA8PCAyKSl8MCkgKyAoMHhlNjU0NmI2NHwwKSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmluYWwoaCkge1xuICBoIF49IGggPj4+IDE2O1xuICBoID0gY2FtbF9tdWwgKGgsIDB4ODVlYmNhNmJ8MCk7XG4gIGggXj0gaCA+Pj4gMTM7XG4gIGggPSBjYW1sX211bCAoaCwgMHhjMmIyYWUzNXwwKTtcbiAgaCBePSBoID4+PiAxNjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9oYXNoX21peF9pbnQ2NFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9mbG9hdCAoaCwgdjApIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfaW50NjQoaCwgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh2MCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbG8zMiwgY2FtbF9pbnQ2NF9oaTMyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludDY0IChoLCB2KSB7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2xvMzIodikpO1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9oaTMyKHYpKTtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCwgaSwgdztcbiAgZm9yIChpID0gMDsgaSArIDQgPD0gbGVuOyBpICs9IDQpIHtcbiAgICB3ID0gcy5jaGFyQ29kZUF0KGkpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCA4KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMikgPDwgMTYpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSszKSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHMuY2hhckNvZGVBdChpKzIpIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gcy5jaGFyQ29kZUF0KGkrMSkgPDwgODtcbiAgY2FzZSAxOlxuICAgIHcgfD0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHNbaV1cbiAgICAgIHwgKHNbaSsxXSA8PCA4KVxuICAgICAgfCAoc1tpKzJdIDw8IDE2KVxuICAgICAgfCAoc1tpKzNdIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICBjYXNlIDM6IHcgID0gc1tpKzJdIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gc1tpKzFdIDw8IDg7XG4gIGNhc2UgMTogdyB8PSBzW2ldO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlcyhoLCB2KSB7XG4gIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KHYpO1xuICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNvbnRlbnQpXG4gIGVsc2UgLyogQVJSQVkgKi9cbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgY29udGVudCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsIHYpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHYpKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2ggbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0LCBjYW1sX2hhc2hfbWl4X3N0cmluZywgY2FtbF9oYXNoX21peF9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaGFzaCAoY291bnQsIGxpbWl0LCBzZWVkLCBvYmopIHtcbiAgdmFyIHF1ZXVlLCByZCwgd3IsIHN6LCBudW0sIGgsIHYsIGksIGxlbjtcbiAgc3ogPSBsaW1pdDtcbiAgaWYgKHN6IDwgMCB8fCBzeiA+IDI1Nikgc3ogPSAyNTY7XG4gIG51bSA9IGNvdW50O1xuICBoID0gc2VlZDtcbiAgcXVldWUgPSBbb2JqXTsgcmQgPSAwOyB3ciA9IDE7XG4gIHdoaWxlIChyZCA8IHdyICYmIG51bSA+IDApIHtcbiAgICB2ID0gcXVldWVbcmQrK107XG4gICAgaWYgKHYgJiYgdi5jYW1sX2N1c3RvbSl7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2gpIHtcbiAgICAgICAgdmFyIGhoID0gY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2godik7XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludCAoaCwgaGgpO1xuICAgICAgICBudW0gLS07XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgc3dpdGNoICh2WzBdKSB7XG4gICAgICBjYXNlIDI0ODpcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2WzJdKTtcbiAgICAgICAgbnVtLS07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgcXVldWVbLS1yZF0gPSB2WzFdO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHZhciB0YWcgPSAoKHYubGVuZ3RoIC0gMSkgPDwgMTApIHwgdlswXTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHRhZyk7XG4gICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IHYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICBpZiAod3IgPj0gc3opIGJyZWFrO1xuICAgICAgICAgIHF1ZXVlW3dyKytdID0gdltpXTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodiA9PT0gKHZ8MCkpIHtcbiAgICAgIC8vIEludGVnZXJcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2K3YrMSk7XG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHYgPT09ICt2KSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCx2KTtcbiAgICAgIG51bS0tO1xuICAgIH1cbiAgfVxuICBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKXtcbiAgaWYgKHR5cGVvZiBhID09PSBcIm51bWJlclwiKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhhKSkgcmV0dXJuIDI1MjsgLy8gc3RyaW5nX3RhZ1xuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhhKSkgcmV0dXJuIDEyNTI7IC8vIG9jYW1sIHN0cmluZyAoaWYgZGlmZmVyZW50IGZyb20gYnl0ZXMpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSAmJiBhWzBdID09PSAoYVswXT4+PjApICYmIGFbMF0gPD0gMjU1KSB7XG4gICAgLy8gTG9vayBsaWtlIGFuIG9jYW1sIGJsb2NrXG4gICAgdmFyIHRhZyA9IGFbMF0gfCAwO1xuICAgIC8vIGlnbm9yZSBkb3VibGVfYXJyYXlfdGFnIGJlY2F1c2Ugd2UgY2Fubm90IGFjY3VyYXRlbHkgc2V0XG4gICAgLy8gdGhpcyB0YWcgd2hlbiB3ZSBjcmVhdGUgYW4gYXJyYXkgb2YgZmxvYXQuXG4gICAgcmV0dXJuICh0YWcgPT0gMjU0KT8wOnRhZ1xuICB9XG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBTdHJpbmcpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN0cmluZ1wiKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIE51bWJlcikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGEgJiYgYS5jYW1sX2N1c3RvbSkgcmV0dXJuIDEyNTU7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmIChhICYmIGEuY29tcGFyZSkgcmV0dXJuIDEyNTY7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcImZ1bmN0aW9uXCIpIHJldHVybiAxMjQ3OyAvLyBsaWtlIGNsb3N1cmVfdGFnICgyNDcpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3ltYm9sXCIpIHJldHVybiAxMjUxO1xuICByZXR1cm4gMTAwMTsgLy9vdXRfb2ZfaGVhcF90YWdcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKXtcbiAgcmV0dXJuIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0uY29tcGFyZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShudW0sIGN1c3RvbSwgc3dhcCwgdG90YWwpIHtcbiAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oY3VzdG9tKTtcbiAgaWYoY29tcCkge1xuICAgIHZhciB4ID0gKHN3YXAgPiAwKT9jb21wKGN1c3RvbSxudW0sdG90YWwpOmNvbXAobnVtLGN1c3RvbSx0b3RhbCk7XG4gICAgaWYodG90YWwgJiYgeCAhPSB4KSByZXR1cm4gc3dhcDsgLy8gdG90YWwgJiYgbmFuXG4gICAgaWYoK3ggIT0gK3gpIHJldHVybiAreDsgLy8gbmFuXG4gICAgaWYoKHggfCAwKSAhPSAwKSByZXR1cm4gKHggfCAwKTsgLy8gIW5hblxuICB9XG4gIHJldHVybiBzd2FwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWwgKGNvbnN0LCBjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludF9jb21wYXJlLCBjYW1sX3N0cmluZ19jb21wYXJlLCBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tLCBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsIChhLCBiLCB0b3RhbCkge1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgZm9yKDs7KSB7XG4gICAgaWYgKCEodG90YWwgJiYgYSA9PT0gYikpIHtcbiAgICAgIHZhciB0YWdfYSA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGEpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYodGFnX2EgPT0gMjUwKSB7IGEgPSBhWzFdOyBjb250aW51ZSB9XG5cbiAgICAgIHZhciB0YWdfYiA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGIpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYodGFnX2IgPT0gMjUwKSB7IGIgPSBiWzFdOyBjb250aW51ZSB9XG5cbiAgICAgIC8vIHRhZ3MgYXJlIGRpZmZlcmVudFxuICAgICAgaWYodGFnX2EgIT09IHRhZ19iKSB7XG4gICAgICAgIGlmKHRhZ19hID09IDEwMDApIHtcbiAgICAgICAgICBpZih0YWdfYiA9PSAxMjU1KSB7IC8vaW1tZWRpYXRlIGNhbiBjb21wYXJlIGFnYWluc3QgY3VzdG9tXG4gICAgICAgICAgICByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKGEsIGIsIC0xLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmKHRhZ19iID09IDEwMDApIHtcbiAgICAgICAgICBpZih0YWdfYSA9PSAxMjU1KSB7IC8vaW1tZWRpYXRlIGNhbiBjb21wYXJlIGFnYWluc3QgY3VzdG9tXG4gICAgICAgICAgICByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKGIsIGEsIDEsIHRvdGFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDFcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHRhZ19hIDwgdGFnX2IpPy0xOjE7XG4gICAgICB9XG4gICAgICBzd2l0Y2godGFnX2Epe1xuICAgICAgICAvLyAyNDY6IExhenlfdGFnIGhhbmRsZWQgYmVsbG93XG4gICAgICBjYXNlIDI0NzogLy8gQ2xvc3VyZV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNDg6IC8vIE9iamVjdFxuICAgICAgICB2YXIgeCA9IGNhbWxfaW50X2NvbXBhcmUoYVsyXSwgYlsyXSk7XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjQ5OiAvLyBJbmZpeFxuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1MDogLy8gRm9yd2FyZCB0YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlbiwgaGFuZGxlZCBhYm92ZVxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEZvcndhcmRfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MTogLy9BYnN0cmFjdFxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTI6IC8vIE9DYW1sIGJ5dGVzXG4gICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgdmFyIHggPSBjYW1sX2J5dGVzX2NvbXBhcmUoYSwgYik7XG4gICAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTM6IC8vIERvdWJsZV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IERvdWJsZV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjU0OiAvLyBEb3VibGVfYXJyYXlfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfYXJyYXlfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjU1OiAvLyBDdXN0b21fdGFnXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgQ3VzdG9tX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjQ3OiAvLyBGdW5jdGlvblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1NTogLy8gQ3VzdG9tXG4gICAgICAgIHZhciBjb21wID0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpO1xuICAgICAgICBpZihjb21wICE9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShiKSl7XG4gICAgICAgICAgcmV0dXJuIChhLmNhbWxfY3VzdG9tPGIuY2FtbF9jdXN0b20pPy0xOjE7XG4gICAgICAgIH1cbiAgICAgICAgaWYoIWNvbXApXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgIHZhciB4ID0gY29tcChhLGIsdG90YWwpO1xuICAgICAgICBpZih4ICE9IHgpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1NjogLy8gY29tcGFyZSBmdW5jdGlvblxuICAgICAgICB2YXIgeCA9IGEuY29tcGFyZShiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KSB7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIFVOT1JERVJFRFxuICAgICAgICAgIHJldHVybiB0b3RhbD8tMTp4O1xuICAgICAgICB9XG4gICAgICAgIGlmKHggIT09ICh4fDApKXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAwOiAvLyBOdW1iZXJcbiAgICAgICAgYSA9ICthO1xuICAgICAgICBiID0gK2I7XG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICBpZiAoYSAhPSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICBpZiAoYSA9PSBhKSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoYiA9PSBiKSByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwMDE6IC8vIFRoZSByZXN0XG4gICAgICAgIC8vIEhlcmUgd2UgY2FuIGJlIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gICAgICAgIC8vIDEuIEphdmFTY3JpcHQgcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vIDIuIEphdmFTY3JpcHQgb2JqZWN0IHRoYXQgY2FuIGJlIGNvZXJjZWQgdG8gcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vIDMuIEphdmFTY3JpcHQgb2JqZWN0IHRoYW4gY2Fubm90IGJlIGNvZXJjZWQgdG8gcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vXG4gICAgICAgIC8vICgzKSB3aWxsIHJhaXNlIGEgW1R5cGVFcnJvcl1cbiAgICAgICAgLy8gKDIpIHdpbGwgY29lcmNlIHRvIHByaW1pdGl2ZSB0eXBlcyB1c2luZyBbdmFsdWVPZl0gb3IgW3RvU3RyaW5nXVxuICAgICAgICAvLyAoMikgYW5kICgzKSwgYWZ0ZXIgZXZlbnR1YWwgY29lcmNpb25cbiAgICAgICAgLy8gLSBpZiBhIGFuZCBiIGFyZSBzdHJpbmdzLCBhcHBseSBsZXhpY29ncmFwaGljIGNvbXBhcmlzb25cbiAgICAgICAgLy8gLSBpZiBhIG9yIGIgYXJlIG5vdCBzdHJpbmdzLCBjb252ZXJ0IGEgYW5kIGIgdG8gbnVtYmVyXG4gICAgICAgIC8vICAgYW5kIGFwcGx5IHN0YW5kYXJkIGNvbXBhcmlzb25cbiAgICAgICAgLy9cbiAgICAgICAgLy8gRXhjZXB0aW9uOiBgIT1gIHdpbGwgbm90IGNvZXJjZS9jb252ZXJ0IGlmIGJvdGggYSBhbmQgYiBhcmUgb2JqZWN0c1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUxOiAvLyBKYXZhU2NyaXB0IFN5bWJvbCwgbm8gb3JkZXJpbmcuXG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyOiAvLyBvY2FtbCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhhKTtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGIpO1xuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZihhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTIwOiAvLyBqYXZhc2NyaXB0IHN0cmluZ3NcbiAgICAgICAgdmFyIGEgPSBhLnRvU3RyaW5nKCk7XG4gICAgICAgIHZhciBiID0gYi50b1N0cmluZygpO1xuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZihhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0NjogLy8gTGF6eV90YWdcbiAgICAgIGNhc2UgMjU0OiAvLyBEb3VibGVfYXJyYXlcbiAgICAgIGRlZmF1bHQ6IC8vIEJsb2NrIHdpdGggb3RoZXIgdGFnXG4gICAgICAgIGlmIChhLmxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIChhLmxlbmd0aCA8IGIubGVuZ3RoKT8tMToxO1xuICAgICAgICBpZiAoYS5sZW5ndGggPiAxKSBzdGFjay5wdXNoKGEsIGIsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YWNrLmxlbmd0aCA9PSAwKSByZXR1cm4gMDtcbiAgICB2YXIgaSA9IHN0YWNrLnBvcCgpO1xuICAgIGIgPSBzdGFjay5wb3AoKTtcbiAgICBhID0gc3RhY2sucG9wKCk7XG4gICAgaWYgKGkgKyAxIDwgYS5sZW5ndGgpIHN0YWNrLnB1c2goYSwgYiwgaSArIDEpO1xuICAgIGEgPSBhW2ldO1xuICAgIGIgPSBiW2ldO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZSAoYSwgYikgeyByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdHJ1ZSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaW50X2NvbXBhcmUgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pbnRfY29tcGFyZSAoYSwgYikge1xuICBpZiAoYSA8IGIpIHJldHVybiAoLTEpOyBpZiAoYSA9PSBiKSByZXR1cm4gMDsgcmV0dXJuIDE7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID09IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbm90ZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpICE9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPj0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JlYXRlcnRoYW4gbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVydGhhbiAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPiAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDw9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3N0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc3RoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDwgMCk7IH1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYjogY29kZSBzcGVjaWZpYyB0byBKc19vZl9vY2FtbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29uX2llIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX29uX2llICgpIHtcbiAgdmFyIHVhID1cbiAgICAgIGdsb2JhbFRoaXMubmF2aWdhdG9yP2dsb2JhbFRoaXMubmF2aWdhdG9yLnVzZXJBZ2VudDpcIlwiO1xuICByZXR1cm4gdWEuaW5kZXhPZihcIk1TSUVcIikgIT0gLTEgJiYgdWEuaW5kZXhPZihcIk9wZXJhXCIpICE9IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lc2NhcGUgY29uc3QgKGNvbnN0KVxudmFyIGNhbWxfanNfcmVnZXhwcyA9IHsgYW1wOi8mL2csIGx0Oi88L2csIHF1b3Q6L1xcXCIvZywgYWxsOi9bJjxcXFwiXS8gfTtcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lc2NhcGUgKHMpIHtcbiAgaWYgKCFjYW1sX2pzX3JlZ2V4cHMuYWxsLnRlc3QocykpIHJldHVybiBzO1xuICByZXR1cm4gcy5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5hbXAsIFwiJmFtcDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMubHQsIFwiJmx0O1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5xdW90LCBcIiZxdW90O1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VudGl0aWVzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZW50aXRpZXMocykge1xuICB2YXIgZW50aXR5ID0gL14mIz9bMC05YS16QS1aXSs7JC9cbiAgaWYocy5tYXRjaChlbnRpdHkpKVxuICB7XG4gICAgdmFyIHN0ciwgdGVtcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcbiAgICB0ZW1wLmlubmVySFRNTD0gcztcbiAgICBzdHI9IHRlbXAudGV4dENvbnRlbnQgfHwgdGVtcC5pbm5lclRleHQ7XG4gICAgdGVtcD1udWxsO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9mYWlsd2l0aChcIkludmFsaWQgZW50aXR5IFwiICsgcyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19nZXRfY29uc29sZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19nZXRfY29uc29sZSAoKSB7XG4gIHZhciBjID0gZ2xvYmFsVGhpcy5jb25zb2xlP2dsb2JhbFRoaXMuY29uc29sZTp7fTtcbiAgdmFyIG0gPSBbXCJsb2dcIiwgXCJkZWJ1Z1wiLCBcImluZm9cIiwgXCJ3YXJuXCIsIFwiZXJyb3JcIiwgXCJhc3NlcnRcIiwgXCJkaXJcIiwgXCJkaXJ4bWxcIixcbiAgICAgICAgICAgXCJ0cmFjZVwiLCBcImdyb3VwXCIsIFwiZ3JvdXBDb2xsYXBzZWRcIiwgXCJncm91cEVuZFwiLCBcInRpbWVcIiwgXCJ0aW1lRW5kXCJdO1xuICBmdW5jdGlvbiBmICgpIHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbS5sZW5ndGg7IGkrKykgaWYgKCFjW21baV1dKSBjW21baV1dPWY7XG4gIHJldHVybiBjO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZSh1bml0KXtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICBpZih0eXBlb2YgZy5YTUxIdHRwUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGcuWE1MSHR0cFJlcXVlc3QgfSBjYXRjaCAoZSkgeyB9O1xuICB9XG4gIGlmKHR5cGVvZiBnLmFjdGl2ZVhPYmplY3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnLmFjdGl2ZVhPYmplY3QoXCJNc3htbDIuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICAgIHRyeSB7IHJldHVybiBuZXcgZy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwzLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGcuYWN0aXZlWE9iamVjdChcIk1pY3Jvc29mdC5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gIH1cbiAgY2FtbF9mYWlsd2l0aChcIkNhbm5vdCBjcmVhdGUgYSBYTUxIdHRwUmVxdWVzdFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIGV4bi5qc19lcnJvcjsgfVxuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdXBkYXRlX2R1bW15XG5mdW5jdGlvbiBjYW1sX3VwZGF0ZV9kdW1teSAoeCwgeSkge1xuICBpZiggdHlwZW9mIHk9PT1cImZ1bmN0aW9uXCIgKSB7IHguZnVuID0geTsgcmV0dXJuIDA7IH1cbiAgaWYoIHkuZnVuICkgeyB4LmZ1biA9IHkuZnVuOyByZXR1cm4gMDsgfVxuICB2YXIgaSA9IHkubGVuZ3RoOyB3aGlsZSAoaS0tKSB4W2ldID0geVtpXTsgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX2Jsb2NrIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX2Jsb2NrICh4KSB7IHJldHVybiArKHggaW5zdGFuY2VvZiBBcnJheSk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90YWdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX29ial90YWcgKHgpIHtcbiAgaWYgKCh4IGluc3RhbmNlb2YgQXJyYXkpICYmIHhbMF0gPT0gKHhbMF0gPj4+IDApKVxuICAgIHJldHVybiB4WzBdXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh4KSlcbiAgICByZXR1cm4gMjUyXG4gIGVsc2UgaWYgKCh4IGluc3RhbmNlb2YgRnVuY3Rpb24pIHx8IHR5cGVvZiB4ID09IFwiZnVuY3Rpb25cIilcbiAgICByZXR1cm4gMjQ3XG4gIGVsc2UgaWYgKHggJiYgeC5jYW1sX2N1c3RvbSlcbiAgICByZXR1cm4gMjU1XG4gIGVsc2VcbiAgICByZXR1cm4gMTAwMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfdGFnIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF90YWcgKHgsIHRhZykgeyB4WzBdID0gdGFnOyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9vYmpfYmxvY2sgY29uc3QgKGNvbnN0LGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfYmxvY2sgKHRhZywgc2l6ZSkge1xuICB2YXIgbyA9IG5ldyBBcnJheShzaXplKzEpO1xuICBvWzBdPXRhZztcbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gc2l6ZTsgaSsrKSBvW2ldID0gMDtcbiAgcmV0dXJuIG87XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3dpdGhfdGFnXG5mdW5jdGlvbiBjYW1sX29ial93aXRoX3RhZyh0YWcseCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgYVswXSA9IHRhZztcbiAgZm9yKHZhciBpID0gMTsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfZHVwIG11dGFibGUgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfZHVwICh4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90cnVuY2F0ZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfb2JqX3RydW5jYXRlICh4LCBzKSB7XG4gIGlmIChzPD0wIHx8IHMgKyAxID4geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIk9iai50cnVuY2F0ZVwiKTtcbiAgaWYgKHgubGVuZ3RoICE9IHMgKyAxKSB4Lmxlbmd0aCA9IHMgKyAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfbWFrZV9mb3J3YXJkXG5mdW5jdGlvbiBjYW1sX29ial9tYWtlX2ZvcndhcmQgKGIsdikge1xuICBiWzBdPTI1MDtcbiAgYlsxXT12O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQgKHYpIHsgcmV0dXJuIFsyNTAsIHZdOyB9XG5cbi8vLy8vLy8vLy8vLy8gQ2FtbGludGVybmFsT09cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgY29uc3RcbnZhciBjYW1sX21ldGhvZF9jYWNoZSA9IFtdO1xuZnVuY3Rpb24gY2FtbF9nZXRfcHVibGljX21ldGhvZCAob2JqLCB0YWcsIGNhY2hlaWQpIHtcbiAgdmFyIG1ldGhzID0gb2JqWzFdO1xuICB2YXIgb2ZzID0gY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF07XG4gIGlmIChvZnMgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyYXkgaXMgbm90IHNwYXJzZVxuICAgIGZvciAodmFyIGkgPSBjYW1sX21ldGhvZF9jYWNoZS5sZW5ndGg7IGkgPCBjYWNoZWlkOyBpKyspXG4gICAgICBjYW1sX21ldGhvZF9jYWNoZVtpXSA9IDA7XG4gIH0gZWxzZSBpZiAobWV0aHNbb2ZzXSA9PT0gdGFnKSB7XG4gICAgcmV0dXJuIG1ldGhzW29mcyAtIDFdO1xuICB9XG4gIHZhciBsaSA9IDMsIGhpID0gbWV0aHNbMV0gKiAyICsgMSwgbWk7XG4gIHdoaWxlIChsaSA8IGhpKSB7XG4gICAgbWkgPSAoKGxpK2hpKSA+PiAxKSB8IDE7XG4gICAgaWYgKHRhZyA8IG1ldGhzW21pKzFdKSBoaSA9IG1pLTI7XG4gICAgZWxzZSBsaSA9IG1pO1xuICB9XG4gIGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdID0gbGkgKyAxO1xuICAvKiByZXR1cm4gMCBpZiB0YWcgaXMgbm90IHRoZXJlICovXG4gIHJldHVybiAodGFnID09IG1ldGhzW2xpKzFdID8gbWV0aHNbbGldIDogMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb29fbGFzdF9pZFxudmFyIGNhbWxfb29fbGFzdF9pZCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X29vX2lkXG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfc2V0X29vX2lkIChiKSB7XG4gIGJbMl09Y2FtbF9vb19sYXN0X2lkKys7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXNoX29vX2lkIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfZnJlc2hfb29faWQoKSB7XG4gIHJldHVybiBjYW1sX29vX2xhc3RfaWQrKztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9yYXdfZmllbGQobyxpKSB7IHJldHVybiBvW2krMV0gfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfcmF3X2ZpZWxkKG8saSx2KSB7IHJldHVybiBvW2krMV0gPSB2IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXG5mdW5jdGlvbiBjYW1sX29ial9yZWFjaGFibGVfd29yZHMobykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9hZGRfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX29ial9hZGRfb2Zmc2V0KHYsb2Zmc2V0KSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJPYmouYWRkX29mZnNldCBpcyBub3Qgc3VwcG9ydGVkXCIpO1xufVxuIiwiLy8vLy8vLy8vIEJJR1NUUklOR1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nKGgsIGJzKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLGJzLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGEuYnVmZmVyXG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGFcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIoYWIpIHtcbiAgdmFyIHRhID0gbmV3IGdsb2JhbFRoaXMuVWludDhBcnJheShhYik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShiYSkge1xuICB2YXIgdGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50OEFycmF5KGJhLmJ1ZmZlciwgYmEuYnl0ZU9mZnNldCwgYmEubGVuZ3RoICogYmEuQllURVNfUEVSX0VMRU1FTlQpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKDEyLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19tZW1jbXBcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX21lbWNtcChzMSwgcG9zMSwgczIsIHBvczIsIGxlbil7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEoczEscG9zMSArIGkpO1xuICAgIHZhciBiID0gY2FtbF9iYV9nZXRfMShzMixwb3MyICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKGJhMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTEua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMxID0gYmExLm9mZnNldChwb3MxKTtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnN1YmFycmF5KG9mczEsb2ZzMStsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2UscG9zMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihwb3MxICsgbGVuID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF9hcnJheV9vZl9zdHJpbmcoc3RyMSkuc2xpY2UocG9zMSxwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLG9mczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihwb3MxICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBjYW1sX2FycmF5X29mX2J5dGVzKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKGJhMSwgcG9zMSwgYnl0ZXMyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTEua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIGlmKG9mczEgKyBsZW4gPiBiYTEuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihwb3MyICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoYnl0ZXMyKSl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnNsaWNlKG9mczEsIG9mczErbGVuKTtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoc2xpY2UpLCAwLCBieXRlczIsIHBvczIsIGxlbik7XG4gIHJldHVybiAwXG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYmFja3RyYWNlX3N0YXR1cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9iYWNrdHJhY2Vfc3RhdHVzICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JlY29yZF9iYWNrdHJhY2UgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90ICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdDogaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZShleG4sIGJ0KSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCgpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiKTtcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBsZXhpbmcuYyA2MDQ1IDIwMDQtMDEtMDEgMTY6NDI6NDNaIGRvbGlnZXogJCAqL1xuXG4vKiBUaGUgdGFibGUtZHJpdmVuIGF1dG9tYXRvbiBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4LiAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9sZXhfYXJyYXkocykge1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTtcbiAgdmFyIGwgPSBzLmxlbmd0aCAvIDI7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKylcbiAgICBhW2ldID0gKHMuY2hhckNvZGVBdCgyICogaSkgfCAocy5jaGFyQ29kZUF0KDIgKiBpICsgMSkgPDwgOCkpIDw8IDE2ID4+IDE2O1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheSwgY2FtbF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9sZXhfZW5naW5lKHRibCwgc3RhcnRfc3RhdGUsIGxleGJ1Zikge1xuICB2YXIgbGV4X2J1ZmZlciA9IDI7XG4gIHZhciBsZXhfYnVmZmVyX2xlbiA9IDM7XG4gIHZhciBsZXhfc3RhcnRfcG9zID0gNTtcbiAgdmFyIGxleF9jdXJyX3BvcyA9IDY7XG4gIHZhciBsZXhfbGFzdF9wb3MgPSA3O1xuICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gODtcbiAgdmFyIGxleF9lb2ZfcmVhY2hlZCA9IDk7XG4gIHZhciBsZXhfYmFzZSA9IDE7XG4gIHZhciBsZXhfYmFja3RyayA9IDI7XG4gIHZhciBsZXhfZGVmYXVsdCA9IDM7XG4gIHZhciBsZXhfdHJhbnMgPSA0O1xuICB2YXIgbGV4X2NoZWNrID0gNTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSByZXR1cm4gLWJhc2UtMTtcbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKXtcbiAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PSAwKVxuICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2VcbiAgICAgICAgYyA9IDI1NjtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIFJlYWQgbmV4dCBpbnB1dCBjaGFyICovXG4gICAgICBjID0gYnVmZmVyW2xleGJ1ZltsZXhfY3Vycl9wb3NdXTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdICsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIGlmICh0YmwubGV4X2NoZWNrW2Jhc2UgKyBjXSA9PSBzdGF0ZSlcbiAgICAgIHN0YXRlID0gdGJsLmxleF90cmFuc1tiYXNlICsgY107XG4gICAgZWxzZVxuICAgICAgc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09IC0xKVxuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwibGV4aW5nOiBlbXB0eSB0b2tlblwiKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dO1xuICAgIH1lbHNle1xuICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzXG4gICAgICAgICBjb25zdW1lZCBieSB0aGUgYXV0b21hdG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpXG4gICAgICAqL1xuICAgICAgaWYgKGMgPT0gMjU2KSBsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9IDA7XG4gICAgfVxuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qIE5ldyBsZXhlciBlbmdpbmUsIHdpdGggbWVtb3J5IG9mIHBvc2l0aW9ucyAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLy9Qcm92aWRlczogY2FtbF9uZXdfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl9tZW0ocywgaSwgbWVtLCBjdXJyX3Bvcykge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChkc3QgPT0gMHhmZikgcmV0dXJuO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gY3Vycl9wb3M7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9sZXhfcnVuX3RhZyhzLCBpLCBtZW0pIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybiA7XG4gICAgdmFyIHNyYyA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChzcmMgPT0gMHhmZilcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSAtMTtcbiAgICBlbHNlXG4gICAgICBtZW0gW2RzdCArIDFdID0gbWVtIFtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX25ld19sZXhfZW5naW5lKHRibCwgc3RhcnRfc3RhdGUsIGxleGJ1Zikge1xuICB2YXIgbGV4X2J1ZmZlciA9IDI7XG4gIHZhciBsZXhfYnVmZmVyX2xlbiA9IDM7XG4gIHZhciBsZXhfc3RhcnRfcG9zID0gNTtcbiAgdmFyIGxleF9jdXJyX3BvcyA9IDY7XG4gIHZhciBsZXhfbGFzdF9wb3MgPSA3O1xuICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gODtcbiAgdmFyIGxleF9lb2ZfcmVhY2hlZCA9IDk7XG4gIHZhciBsZXhfbWVtID0gMTA7XG4gIHZhciBsZXhfYmFzZSA9IDE7XG4gIHZhciBsZXhfYmFja3RyayA9IDI7XG4gIHZhciBsZXhfZGVmYXVsdCA9IDM7XG4gIHZhciBsZXhfdHJhbnMgPSA0O1xuICB2YXIgbGV4X2NoZWNrID0gNTtcbiAgdmFyIGxleF9iYXNlX2NvZGUgPSA2O1xuICB2YXIgbGV4X2JhY2t0cmtfY29kZSA9IDc7XG4gIHZhciBsZXhfZGVmYXVsdF9jb2RlID0gODtcbiAgdmFyIGxleF90cmFuc19jb2RlID0gOTtcbiAgdmFyIGxleF9jaGVja19jb2RlID0gMTA7XG4gIHZhciBsZXhfY29kZSA9IDExO1xuXG4gIGlmICghdGJsLmxleF9kZWZhdWx0KSB7XG4gICAgdGJsLmxleF9iYXNlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV0pO1xuICAgIHRibC5sZXhfYmFja3RyayA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF0pO1xuICB9XG4gIGlmICghdGJsLmxleF9kZWZhdWx0X2NvZGUpIHtcbiAgICB0YmwubGV4X2Jhc2VfY29kZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VfY29kZV0pO1xuICAgIHRibC5sZXhfYmFja3Rya19jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya19jb2RlXSk7XG4gICAgdGJsLmxleF9jaGVja19jb2RlID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja19jb2RlXSk7XG4gICAgdGJsLmxleF90cmFuc19jb2RlID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc19jb2RlXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0X2NvZGUgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0X2NvZGVdKTtcbiAgfVxuICBpZiAodGJsLmxleF9jb2RlID09IG51bGwpIHRibC5sZXhfY29kZSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcodGJsW2xleF9jb2RlXSk7XG5cbiAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGNhbWxfYXJyYXlfb2ZfYnl0ZXMobGV4YnVmW2xleF9idWZmZXJdKTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvcig7Oykge1xuICAgIC8qIExvb2t1cCBiYXNlIGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJlciBmb3IgY3VycmVudCBzdGF0ZSAqL1xuICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTtcbiAgICBpZiAoYmFzZSA8IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2Jhc2VfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgcmV0dXJuIC1iYXNlLTE7XG4gICAgfVxuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2JhY2t0cmtfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICB2YXIgcHN0YXRlID0gc3RhdGUgO1xuICAgIGlmICh0YmwubGV4X2NoZWNrW2Jhc2UgKyBjXSA9PSBzdGF0ZSlcbiAgICAgIHN0YXRlID0gdGJsLmxleF90cmFuc1tiYXNlICsgY107XG4gICAgZWxzZVxuICAgICAgc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09IC0xKVxuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwibGV4aW5nOiBlbXB0eSB0b2tlblwiKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dO1xuICAgIH1lbHNle1xuICAgICAgLyogSWYgc29tZSB0cmFuc2l0aW9uLCBnZXQgYW5kIHBlcmZvcm0gbWVtb3J5IG1vdmVzICovXG4gICAgICB2YXIgYmFzZV9jb2RlID0gdGJsLmxleF9iYXNlX2NvZGVbcHN0YXRlXSwgcGNfb2ZmO1xuICAgICAgaWYgKHRibC5sZXhfY2hlY2tfY29kZVtiYXNlX2NvZGUgKyBjXSA9PSBwc3RhdGUpXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfdHJhbnNfY29kZVtiYXNlX2NvZGUgKyBjXTtcbiAgICAgIGVsc2VcbiAgICAgICAgcGNfb2ZmID0gdGJsLmxleF9kZWZhdWx0X2NvZGVbcHN0YXRlXTtcbiAgICAgIGlmIChwY19vZmYgPiAwKVxuICAgICAgICBjYW1sX2xleF9ydW5fbWVtXG4gICAgICAodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSwgbGV4YnVmW2xleF9jdXJyX3Bvc10pO1xuICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzXG4gICAgICAgICBjb25zdW1lZCBieSB0aGUgYXV0b21hdG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpXG4gICAgICAqL1xuICAgICAgaWYgKGMgPT0gMjU2KSBsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEFycmF5XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc3ViIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc3ViIChhLCBpLCBsZW4pIHtcbiAgdmFyIGEyID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYTJbMF09MDtcbiAgZm9yKHZhciBpMiA9IDEsIGkxPSBpKzE7IGkyIDw9IGxlbjsgaTIrKyxpMSsrICl7XG4gICAgYTJbaTJdPWFbaTFdO1xuICB9XG4gIHJldHVybiBhMjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9hcHBlbmQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9hcHBlbmQoYTEsIGEyKSB7XG4gIHZhciBsMSA9IGExLmxlbmd0aCwgbDIgPSBhMi5sZW5ndGg7XG4gIHZhciBsID0gbDErbDItMVxuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgYVswXSA9IDA7XG4gIHZhciBpID0gMSxqID0gMTtcbiAgZm9yKDtpPGwxO2krKykgYVtpXT1hMVtpXTtcbiAgZm9yKDtpPGw7aSsrLGorKykgYVtpXT1hMltqXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfY29uY2F0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfY29uY2F0KGwpIHtcbiAgdmFyIGEgPSBbMF07XG4gIHdoaWxlIChsICE9PSAwKSB7XG4gICAgdmFyIGIgPSBsWzFdO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYi5sZW5ndGg7IGkrKykgYS5wdXNoKGJbaV0pO1xuICAgIGwgPSBsWzJdO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIGlmIChpMiA8PSBpMSkge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IGxlbjsgaisrKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBqID0gbGVuOyBqID49IDE7IGotLSkgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy8vLy8vLy8vLy8vLyBQZXJ2YXNpdmVcbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc2V0IChtdXRhYmxlLCBjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X3NldCAoYXJyYXksIGluZGV4LCBuZXd2YWwpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBhcnJheVtpbmRleCsxXT1uZXd2YWw7IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2dldCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X2dldCAoYXJyYXksIGluZGV4KSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5W2luZGV4KzFdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfZmlsbChhcnJheSwgb2ZzLCBsZW4sIHYpe1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIGFycmF5W29mcytpKzFdID0gdjtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9jaGVja19ib3VuZCAoYXJyYXksIGluZGV4KSB7XG4gIGlmIChpbmRleCA+Pj4gMCA+PSBhcnJheS5sZW5ndGggLSAxKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX3ZlY3QgY29uc3QgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV92ZWN0IChsZW4sIGluaXQpIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTA7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSBpbml0O1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX2Zsb2F0X3ZlY3QgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX2Zsb2F0X3ZlY3QobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9jcmVhdGUobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gV2VhayBBUEksIGJ1dCB3aXRob3V0IHRoZSB3ZWFrIHNlbWFudGljc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxudmFyIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ID0gM1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfZGF0YV9vZmZzZXQgPSAyXG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfd2Vha19jcmVhdGUgKG4pIHtcbiAgaWYgKG4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5jcmVhdGVcIik7XG4gIHZhciB4ID0gWzI1MSxcImNhbWxfZXBoZV9saXN0X2hlYWRcIl07XG4gIHgubGVuZ3RoID0gY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBuO1xuICByZXR1cm4geDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX3NldFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF93ZWFrX3NldCh4LCBpLCB2KSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5zZXRcIik7XG4gIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IHY7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2dldFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF93ZWFrX2dldCh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfa2V5XCIpO1xuICByZXR1cm4gKHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpIF09PT11bmRlZmluZWQpPzA6eFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldO1xufVxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2dldF9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfZ2V0LGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXAsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF93ZWFrX2dldF9jb3B5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmdldF9jb3B5XCIpO1xuICB2YXIgeSA9IGNhbWxfd2Vha19nZXQoeCwgaSk7XG4gIGlmICh5ID09PSAwKSByZXR1cm4geTtcbiAgdmFyIHogPSB5WzFdO1xuICBpZiAoeiBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfY2hlY2sgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfd2Vha19jaGVjayh4LCBpKSB7XG4gIGlmKHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSE9PXVuZGVmaW5lZCAmJiB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gIT09MClcbiAgICByZXR1cm4gMTtcbiAgZWxzZVxuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF93ZWFrX2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICAvLyBtaW51cyBvbmUgYmVjYXVzZSBjYW1sX2FycmF5X2JsaXQgd29ya3Mgb24gb2NhbWwgYXJyYXlcbiAgY2FtbF9hcnJheV9ibGl0KGExLCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkxIC0gMSxcbiAgICAgICAgICAgICAgICAgIGEyLCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkyIC0gMSxcbiAgICAgICAgICAgICAgICAgIGxlbik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfY3JlYXRlXG52YXIgY2FtbF9lcGhlX2NyZWF0ZSA9IGNhbWxfd2Vha19jcmVhdGVcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfYmxpdFxudmFyIGNhbWxfZXBoZV9ibGl0X2tleSA9IGNhbWxfd2Vha19ibGl0XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfZ2V0XG52YXIgY2FtbF9lcGhlX2dldF9rZXkgPSBjYW1sX3dlYWtfZ2V0XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19nZXRfY29weVxudmFyIGNhbWxfZXBoZV9nZXRfa2V5X2NvcHkgPSBjYW1sX3dlYWtfZ2V0X2NvcHlcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2tleVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NoZWNrXG52YXIgY2FtbF9lcGhlX2NoZWNrX2tleSA9IGNhbWxfd2Vha19jaGVja1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX3NldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3NldF9rZXkoeCwgaSwgdikge1xuICByZXR1cm4gY2FtbF93ZWFrX3NldCh4LCBpLCBbMCwgdl0pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19zZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9rZXkoeCwgaSkge1xuICByZXR1cm4gY2FtbF93ZWFrX3NldCh4LCBpLCAwKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2RhdGEoc3JjLCBkc3Qpe1xuICBkc3RbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IHNyY1tjYW1sX2VwaGVfZGF0YV9vZmZzZXRdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gWzAsIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdKV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2RhdGEoeCwgZGF0YSl7XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGRhdGE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4LCBkYXRhKXtcbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9jaGFuXG4vL1JlcXVpcmVzOiBjYW1sX21kNV9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2FycmF5LGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9tZDVfY2hhbihjaGFuaWQsbGVuKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBjaGFuX2xlbiA9IGNoYW4uZmlsZS5sZW5ndGgoKTtcbiAgaWYobGVuPDApIGxlbiA9IGNoYW5fbGVuIC0gY2hhbi5vZmZzZXQ7XG4gIGlmKGNoYW4ub2Zmc2V0ICsgbGVuID4gY2hhbl9sZW4pIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgdmFyIGJ1ZiA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gIGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LGJ1ZiwwLGxlbik7XG4gIHJldHVybiBjYW1sX21kNV9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMoYnVmKSwwLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfbWQ1X2J5dGVzXG5mdW5jdGlvbiBjYW1sX21kNV9zdHJpbmcocywgb2ZzLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfbWQ1X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpLG9mcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfbWxfYnl0ZXNfY29udGVudFxudmFyIGNhbWxfbWQ1X2J5dGVzID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBhZGQgKHgsIHkpIHsgcmV0dXJuICh4ICsgeSkgfCAwOyB9XG4gIGZ1bmN0aW9uIHh4KHEsYSxiLHgscyx0KSB7XG4gICAgYSA9IGFkZChhZGQoYSwgcSksIGFkZCh4LCB0KSk7XG4gICAgcmV0dXJuIGFkZCgoYSA8PCBzKSB8IChhID4+PiAoMzIgLSBzKSksIGIpO1xuICB9XG4gIGZ1bmN0aW9uIGZmKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBjKSB8ICgofmIpICYgZCksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGdnKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBkKSB8IChjICYgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGhoKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGIgXiBjIF4gZCwgYSwgYiwgeCwgcywgdCk7IH1cbiAgZnVuY3Rpb24gaWkoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4geHgoYyBeIChiIHwgKH5kKSksIGEsIGIsIHgsIHMsIHQpOyB9XG5cbiAgZnVuY3Rpb24gbWQ1KGJ1ZmZlciwgbGVuZ3RoKSB7XG4gICAgdmFyIGkgPSBsZW5ndGg7XG4gICAgYnVmZmVyW2kgPj4gMl0gfD0gMHg4MCA8PCAoOCAqIChpICYgMykpO1xuICAgIGZvciAoaSA9IChpICYgfjB4MykgKyA4OyhpICYgMHgzRikgPCA2MCA7aSArPSA0KVxuICAgICAgYnVmZmVyWyhpID4+IDIpIC0gMV0gPSAwO1xuICAgIGJ1ZmZlclsoaSA+PiAyKSAtMV0gPSBsZW5ndGggPDwgMztcbiAgICBidWZmZXJbaSA+PiAyXSA9IChsZW5ndGggPj4gMjkpICYgMHgxRkZGRkZGRjtcblxuICAgIHZhciB3ID0gWzB4Njc0NTIzMDEsIDB4RUZDREFCODksIDB4OThCQURDRkUsIDB4MTAzMjU0NzZdO1xuXG4gICAgZm9yKGkgPSAwOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSArPSAxNikge1xuICAgICAgdmFyIGEgPSB3WzBdLCBiID0gd1sxXSwgYyA9IHdbMl0sIGQgPSB3WzNdO1xuXG4gICAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyW2krIDBdLCA3LCAweEQ3NkFBNDc4KTtcbiAgICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbaSsgMV0sIDEyLCAweEU4QzdCNzU2KTtcbiAgICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbaSsgMl0sIDE3LCAweDI0MjA3MERCKTtcbiAgICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbaSsgM10sIDIyLCAweEMxQkRDRUVFKTtcbiAgICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbaSsgNF0sIDcsIDB4RjU3QzBGQUYpO1xuICAgICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyA1XSwgMTIsIDB4NDc4N0M2MkEpO1xuICAgICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKyA2XSwgMTcsIDB4QTgzMDQ2MTMpO1xuICAgICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyA3XSwgMjIsIDB4RkQ0Njk1MDEpO1xuICAgICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyA4XSwgNywgMHg2OTgwOThEOCk7XG4gICAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyW2krIDldLCAxMiwgMHg4QjQ0RjdBRik7XG4gICAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyW2krMTBdLCAxNywgMHhGRkZGNUJCMSk7XG4gICAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyW2krMTFdLCAyMiwgMHg4OTVDRDdCRSk7XG4gICAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyW2krMTJdLCA3LCAweDZCOTAxMTIyKTtcbiAgICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbaSsxM10sIDEyLCAweEZEOTg3MTkzKTtcbiAgICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbaSsxNF0sIDE3LCAweEE2Nzk0MzhFKTtcbiAgICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbaSsxNV0sIDIyLCAweDQ5QjQwODIxKTtcblxuICAgICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyAxXSwgNSwgMHhGNjFFMjU2Mik7XG4gICAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyW2krIDZdLCA5LCAweEMwNDBCMzQwKTtcbiAgICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbaSsxMV0sIDE0LCAweDI2NUU1QTUxKTtcbiAgICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbaSsgMF0sIDIwLCAweEU5QjZDN0FBKTtcbiAgICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbaSsgNV0sIDUsIDB4RDYyRjEwNUQpO1xuICAgICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKzEwXSwgOSwgMHgwMjQ0MTQ1Myk7XG4gICAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyW2krMTVdLCAxNCwgMHhEOEExRTY4MSk7XG4gICAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyW2krIDRdLCAyMCwgMHhFN0QzRkJDOCk7XG4gICAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyW2krIDldLCA1LCAweDIxRTFDREU2KTtcbiAgICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbaSsxNF0sIDksIDB4QzMzNzA3RDYpO1xuICAgICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKyAzXSwgMTQsIDB4RjRENTBEODcpO1xuICAgICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyA4XSwgMjAsIDB4NDU1QTE0RUQpO1xuICAgICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKzEzXSwgNSwgMHhBOUUzRTkwNSk7XG4gICAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyW2krIDJdLCA5LCAweEZDRUZBM0Y4KTtcbiAgICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbaSsgN10sIDE0LCAweDY3NkYwMkQ5KTtcbiAgICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbaSsxMl0sIDIwLCAweDhEMkE0QzhBKTtcblxuICAgICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyA1XSwgNCwgMHhGRkZBMzk0Mik7XG4gICAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyW2krIDhdLCAxMSwgMHg4NzcxRjY4MSk7XG4gICAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyW2krMTFdLCAxNiwgMHg2RDlENjEyMik7XG4gICAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyW2krMTRdLCAyMywgMHhGREU1MzgwQyk7XG4gICAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyW2krIDFdLCA0LCAweEE0QkVFQTQ0KTtcbiAgICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbaSsgNF0sIDExLCAweDRCREVDRkE5KTtcbiAgICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbaSsgN10sIDE2LCAweEY2QkI0QjYwKTtcbiAgICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbaSsxMF0sIDIzLCAweEJFQkZCQzcwKTtcbiAgICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbaSsxM10sIDQsIDB4Mjg5QjdFQzYpO1xuICAgICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyAwXSwgMTEsIDB4RUFBMTI3RkEpO1xuICAgICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKyAzXSwgMTYsIDB4RDRFRjMwODUpO1xuICAgICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyA2XSwgMjMsIDB4MDQ4ODFEMDUpO1xuICAgICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyA5XSwgNCwgMHhEOUQ0RDAzOSk7XG4gICAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyW2krMTJdLCAxMSwgMHhFNkRCOTlFNSk7XG4gICAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyW2krMTVdLCAxNiwgMHgxRkEyN0NGOCk7XG4gICAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyW2krIDJdLCAyMywgMHhDNEFDNTY2NSk7XG5cbiAgICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbaSsgMF0sIDYsIDB4RjQyOTIyNDQpO1xuICAgICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyA3XSwgMTAsIDB4NDMyQUZGOTcpO1xuICAgICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzE0XSwgMTUsIDB4QUI5NDIzQTcpO1xuICAgICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyA1XSwgMjEsIDB4RkM5M0EwMzkpO1xuICAgICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKzEyXSwgNiwgMHg2NTVCNTlDMyk7XG4gICAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyW2krIDNdLCAxMCwgMHg4RjBDQ0M5Mik7XG4gICAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyW2krMTBdLCAxNSwgMHhGRkVGRjQ3RCk7XG4gICAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyW2krIDFdLCAyMSwgMHg4NTg0NUREMSk7XG4gICAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyW2krIDhdLCA2LCAweDZGQTg3RTRGKTtcbiAgICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbaSsxNV0sIDEwLCAweEZFMkNFNkUwKTtcbiAgICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbaSsgNl0sIDE1LCAweEEzMDE0MzE0KTtcbiAgICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbaSsxM10sIDIxLCAweDRFMDgxMUExKTtcbiAgICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbaSsgNF0sIDYsIDB4Rjc1MzdFODIpO1xuICAgICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKzExXSwgMTAsIDB4QkQzQUYyMzUpO1xuICAgICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKyAyXSwgMTUsIDB4MkFEN0QyQkIpO1xuICAgICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyA5XSwgMjEsIDB4RUI4NkQzOTEpO1xuXG4gICAgICB3WzBdID0gYWRkKGEsIHdbMF0pO1xuICAgICAgd1sxXSA9IGFkZChiLCB3WzFdKTtcbiAgICAgIHdbMl0gPSBhZGQoYywgd1syXSk7XG4gICAgICB3WzNdID0gYWRkKGQsIHdbM10pO1xuICAgIH1cblxuICAgIHZhciB0ID0gbmV3IEFycmF5KDE2KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKylcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgNDsgaisrKVxuICAgICAgICB0W2kgKiA0ICsgal0gPSAod1tpXSA+PiAoOCAqIGopKSAmIDB4RkY7XG4gICAgcmV0dXJuIHQ7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKHMsIG9mcywgbGVuKSB7XG4gICAgLy8gRklYOiBtYXliZSB3ZSBzaG91bGQgcGVyZm9ybSB0aGUgY29tcHV0YXRpb24gYnkgY2h1bmsgb2YgNjQgYnl0ZXNcbiAgICAvLyBhcyBpbiBodHRwOi8vd3d3Lm15ZXJzZGFpbHkub3JnL2pvc2VwaC9qYXZhc2NyaXB0L21kNS5qc1xuICAgIHZhciBidWYgPSBbXTtcbiAgICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudChzKTtcbiAgICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIil7XG4gICAgICB2YXIgYiA9IGNvbnRlbnQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSs9NCkge1xuICAgICAgICB2YXIgaiA9IGkgKyBvZnM7XG4gICAgICAgIGJ1ZltpPj4yXSA9XG4gICAgICAgICAgYi5jaGFyQ29kZUF0KGopIHwgKGIuY2hhckNvZGVBdChqKzEpIDw8IDgpIHxcbiAgICAgICAgICAoYi5jaGFyQ29kZUF0KGorMikgPDwgMTYpIHwgKGIuY2hhckNvZGVBdChqKzMpIDw8IDI0KTtcbiAgICAgIH1cbiAgICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIGJ1ZltpPj4yXSB8PSBiLmNoYXJDb2RlQXQoaSArIG9mcykgPDwgKDggKiAoaSAmIDMpKTtcbiAgICB9IGVsc2UgeyAvKiBBUlJBWSAqL1xuICAgICAgdmFyIGEgPSBjb250ZW50O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrPTQpIHtcbiAgICAgICAgdmFyIGogPSBpICsgb2ZzO1xuICAgICAgICBidWZbaT4+Ml0gPSBhW2pdIHwgKGFbaisxXSA8PCA4KSB8IChhW2orMl0gPDwgMTYpIHwgKGFbaiszXSA8PCAyNCk7XG4gICAgICB9XG4gICAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSBidWZbaT4+Ml0gfD0gYVtpICsgb2ZzXSA8PCAoOCAqIChpICYgMykpO1xuICAgIH1cbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkobWQ1KGJ1ZiwgbGVuKSk7XG4gIH1cbn0gKCk7XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBIdWdvIEhldXphcmRcbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIFNoYWNoYXIgSXR6aGFreVxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2Jsb2IvNC4wNy9vdGhlcmxpYnMvc3RyL3N0cnN0dWJzLmNcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2NvcS9qc2NvcS9ibG9iL3Y4LjExL2NvcS1qcy9qc19zdHViL3N0ci5qc1xuXG4vL1Byb3ZpZGVzOiByZV9tYXRjaFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZ2V0XG5cbnZhciByZV9tYXRjaCA9IGZ1bmN0aW9uKCl7XG4gIHZhciByZV93b3JkX2xldHRlcnMgPSBbXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHgwMC0weDFGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHhGRiwgMHgwMywgICAgICAgLyogMHgyMC0weDNGOiBkaWdpdHMgMC05ICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHg4NywgICAgICAgLyogMHg0MC0weDVGOiBBIHRvIFosIF8gKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDA3LCAgICAgICAvKiAweDYwLTB4N0Y6IGEgdG8geiAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4ODAtMHg5Rjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4QTAtMHhCRjogbm9uZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYsICAgICAgIC8qIDB4QzAtMHhERjogTGF0aW4tMSBhY2NlbnRlZCB1cHBlcmNhc2UgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGICAgICAgICAvKiAweEUwLTB4RkY6IExhdGluLTEgYWNjZW50ZWQgbG93ZXJjYXNlICovXG4gIF07XG5cbiAgdmFyIG9wY29kZXMgPSB7XG4gICAgQ0hBUjogMCwgQ0hBUk5PUk06IDEsIFNUUklORzogMiwgU1RSSU5HTk9STTogMywgQ0hBUkNMQVNTOiA0LFxuICAgIEJPTDogNSwgRU9MOiA2LCBXT1JEQk9VTkRBUlk6IDcsXG4gICAgQkVHR1JPVVA6IDgsIEVOREdST1VQOiA5LCBSRUZHUk9VUDogMTAsXG4gICAgQUNDRVBUOiAxMSxcbiAgICBTSU1QTEVPUFQ6IDEyLCBTSU1QTEVTVEFSOiAxMywgU0lNUExFUExVUzogMTQsXG4gICAgR09UTzogMTUsIFBVU0hCQUNLOiAxNiwgU0VUTUFSSzogMTcsXG4gICAgQ0hFQ0tQUk9HUkVTUzogMThcbiAgfTtcblxuICBmdW5jdGlvbiBpc193b3JkX2xldHRlcihjKSB7XG4gICAgcmV0dXJuIChyZV93b3JkX2xldHRlcnNbICAoYyA+PiAzKV0gPj4gKGMgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5fYml0c2V0KHMsaSkge1xuICAgIHJldHVybiAoY2FtbF9zdHJpbmdfZ2V0KHMsKGkgPj4gMykpID4+IChpICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlX21hdGNoX2ltcGwocmUsIHMsIHBvcywgcGFydGlhbCkge1xuXG4gICAgdmFyIHByb2cgICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMV0pLFxuICAgICAgICBjcG9vbCAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzJdKSxcbiAgICAgICAgbm9ybXRhYmxlICAgICA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVbM10pLFxuICAgICAgICBudW1ncm91cHMgICAgID0gcmVbNF0gfCAwLFxuICAgICAgICBudW1yZWdpc3RlcnMgID0gcmVbNV0gfCAwLFxuICAgICAgICBzdGFydGNoYXJzICAgID0gcmVbNl0gfCAwO1xuXG4gICAgdmFyIHMgPSBjYW1sX2FycmF5X29mX3N0cmluZyhzKTtcblxuICAgIHZhciBwYyA9IDAsXG4gICAgICAgIHF1aXQgPSBmYWxzZSxcbiAgICAgICAgc3RhY2sgPSBbXSxcbiAgICAgICAgZ3JvdXBzID0gbmV3IEFycmF5KG51bWdyb3VwcyksXG4gICAgICAgIHJlX3JlZ2lzdGVyID0gbmV3IEFycmF5KG51bXJlZ2lzdGVycyk7XG5cbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgIGdyb3Vwc1tpXSA9IHtzdGFydDogLTEsIGVuZDotMX1cbiAgICB9XG4gICAgZ3JvdXBzWzBdLnN0YXJ0ID0gcG9zO1xuXG4gICAgdmFyIGJhY2t0cmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBzdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKGl0ZW0udW5kbykge1xuICAgICAgICAgIGl0ZW0udW5kby5vYmpbaXRlbS51bmRvLnByb3BdID0gaXRlbS51bmRvLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoaXRlbS5wb3MpIHtcbiAgICAgICAgICBwYyA9IGl0ZW0ucG9zLnBjO1xuICAgICAgICAgIHBvcyA9IGl0ZW0ucG9zLnR4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1aXQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uKGl0ZW0pIHsgc3RhY2sucHVzaChpdGVtKTsgfTtcblxuICAgIHZhciBhY2NlcHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBncm91cHNbMF0uZW5kID0gcG9zO1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSgxICsgZ3JvdXBzLmxlbmd0aCoyKTtcbiAgICAgIHJlc3VsdFswXSA9IDA7IC8vIHRhZ1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHZhciBnID0gZ3JvdXBzW2ldO1xuICAgICAgICBpZihnLnN0YXJ0IDwgMCB8fCBnLmVuZCA8IDApIHtcbiAgICAgICAgICBnLnN0YXJ0ID0gZy5lbmQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbMippICsgMSBdID0gZy5zdGFydDtcbiAgICAgICAgcmVzdWx0WzIqaSArIDEgKyAxIF0gPSBnLmVuZDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfTtcblxuICAgIHZhciBwcmVmaXhfbWF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZihwYXJ0aWFsKSByZXR1cm4gYWNjZXB0ICgpO1xuICAgICAgZWxzZSBiYWNrdHJhY2sgKCk7XG4gICAgfVxuXG4gICAgLyogTWFpbiBERkEgaW50ZXJwcmV0ZXIgbG9vcCAqL1xuICAgIHdoaWxlICghcXVpdCkge1xuICAgICAgdmFyIG9wID0gcHJvZ1twY10gJiAweGZmLFxuICAgICAgICAgIHNhcmcgPSBwcm9nW3BjXSA+PiA4LFxuICAgICAgICAgIHVhcmcgPSBzYXJnICYgMHhmZixcbiAgICAgICAgICBjID0gc1twb3NdLFxuICAgICAgICAgIGdyb3VwO1xuXG4gICAgICBwYysrO1xuXG4gICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUjpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoYyA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJOT1JNOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklORzpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChjID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HTk9STTpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJDTEFTUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJPTDpcbiAgICAgICAgaWYocG9zID4gMCAmJiBzW3BvcyAtIDFdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FT0w6XG4gICAgICAgIGlmKHBvcyA8IHMubGVuZ3RoICYmIHNbcG9zXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuV09SREJPVU5EQVJZOlxuICAgICAgICBpZihwb3MgPT0gMCkge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzWzBdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocG9zID09PSBzLmxlbmd0aCkge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkgIT0gaXNfd29yZF9sZXR0ZXIoc1twb3NdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJFR0dST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5zdGFydH19KTtcbiAgICAgICAgZ3JvdXAuc3RhcnQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVOREdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajogZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLmVuZH19KTtcbiAgICAgICAgZ3JvdXAuZW5kID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5SRUZHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIGlmKGdyb3VwLnN0YXJ0IDwgMCB8fCBncm91cC5lbmQgPCAwKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgZm9yICh2YXIgaSA9IGdyb3VwLnN0YXJ0OyBpIDwgZ3JvdXAuZW5kOyBpKyspe1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihzW2ldICE9IHNbcG9zXSkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgICAgcG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFT1BUOlxuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVNUQVI6XG4gICAgICAgIHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKVxuICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFUExVUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkge1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICB9IHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5BQ0NFUFQ6XG4gICAgICAgIHJldHVybiBhY2NlcHQoKTtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5HT1RPOlxuICAgICAgICBwYyA9IHBjICsgc2FyZztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUFVTSEJBQ0s6XG4gICAgICAgIHB1c2goe3Bvczoge3BjOiBwYyArIHNhcmcsIHR4dDogcG9zfX0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TRVRNQVJLOlxuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOnJlX3JlZ2lzdGVyLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDogdWFyZyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZV9yZWdpc3Rlclt1YXJnXX19KTtcbiAgICAgICAgcmVfcmVnaXN0ZXJbdWFyZ10gPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIRUNLUFJPR1JFU1M6XG4gICAgICAgIGlmIChyZV9yZWdpc3Rlclt1YXJnXSA9PT0gcG9zKSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ5dGVjb2RlXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiByZV9tYXRjaF9pbXBsO1xufSgpO1xuXG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9mb3J3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9mb3J3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9mb3J3YXJkXCIpXG4gIHdoaWxlIChwb3MgPD0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zKys7XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfYmFja3dhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2JhY2t3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9iYWNrd2FyZFwiKVxuICB3aGlsZSAocG9zID49IDApIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MtLTtcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cblxuLy9Qcm92aWRlczogcmVfc3RyaW5nX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3N0cmluZ19tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zdHJpbmdfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3BhcnRpYWxfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfcGFydGlhbF9tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5wYXJ0aWFsX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAxKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9yZXBsYWNlbWVudF90ZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2dldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8gZXh0ZXJuYWwgcmVfcmVwbGFjZW1lbnRfdGV4dDogc3RyaW5nIC0+IGludCBhcnJheSAtPiBzdHJpbmcgLT4gc3RyaW5nXG5mdW5jdGlvbiByZV9yZXBsYWNlbWVudF90ZXh0KHJlcGwsZ3JvdXBzLG9yaWcpIHtcbiAgdmFyIHJlcGwgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlcGwpO1xuICB2YXIgbGVuID0gcmVwbC5sZW5ndGg7XG4gIHZhciBvcmlnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvcmlnKTtcbiAgdmFyIHJlcyA9IFwiXCI7IC8vcmVzdWx0XG4gIHZhciBuID0gMDsgLy8gY3VycmVudCBwb3NpdGlvblxuICB2YXIgY3VyOyAvL2N1cnJlbnQgY2hhclxuICB2YXIgc3RhcnQsIGVuZCwgYztcbiAgd2hpbGUobiA8IGxlbil7XG4gICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICBpZihjdXIgIT0gJ1xcXFwnKXtcbiAgICAgIHJlcyArPSBjdXI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYobiA9PSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIik7XG4gICAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgICAgc3dpdGNoKGN1cil7XG4gICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgcmVzICs9IGN1cjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6XG4gICAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICAgIGMgPSArY3VyO1xuICAgICAgICBpZiAoYyoyID49IGdyb3Vwcy5sZW5ndGggLSAxIClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIiApO1xuICAgICAgICBzdGFydCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcyxjKjIpO1xuICAgICAgICBlbmQgPSBjYW1sX2FycmF5X2dldChncm91cHMsIGMqMiArMSk7XG4gICAgICAgIGlmIChzdGFydCA9PSAtMSlcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIik7XG4gICAgICAgIHJlcys9b3JpZy5zbGljZShzdGFydCxlbmQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlcyArPSAoJ1xcXFwnICArIGN1cik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7IH1cbiIsIi8vVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lZCBpbiBDc3RydWN0XG4vL1RoZXJlIGFyZSBqdXN0IHByb3ZpZGVkIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29uc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfYmlnc3RyaW5nX3RvX2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuLy9XZWFrZGVmXG52YXIgY2FtbF9ibGl0X2JpZ3N0cmluZ190b19iaWdzdHJpbmcgPSBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfYmlnc3RyaW5nX3RvX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuLy9XZWFrZGVmXG52YXIgY2FtbF9ibGl0X2JpZ3N0cmluZ190b19zdHJpbmcgPSBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfc3RyaW5nX3RvX2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbi8vV2Vha2RlZlxudmFyIGNhbWxfYmxpdF9zdHJpbmdfdG9fYmlnc3RyaW5nID0gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgRGFuaWVsIEMuIEJ1ZW56bGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuXG5sZXQgZXJyX25vX3ByZWQgPSBcIlUrMDAwMCBoYXMgbm8gcHJlZGVjZXNzb3JcIlxubGV0IGVycl9ub19zdWNjID0gXCJVKzEwRkZGRiBoYXMgbm8gc3VjY2Vzc29yXCJcbmxldCBlcnJfbm90X3N2IGkgPSBmb3JtYXRfaW50IFwiJVhcIiBpIF4gXCIgaXMgbm90IGFuIFVuaWNvZGUgc2NhbGFyIHZhbHVlXCJcbmxldCBlcnJfbm90X2xhdGluMSB1ID0gXCJVK1wiIF4gZm9ybWF0X2ludCBcIiUwNFhcIiB1IF4gXCIgaXMgbm90IGEgbGF0aW4xIGNoYXJhY3RlclwiXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgbWluID0gMHgwMDAwXG5sZXQgbWF4ID0gMHgxMEZGRkZcbmxldCBsb19ib3VuZCA9IDB4RDdGRlxubGV0IGhpX2JvdW5kID0gMHhFMDAwXG5cbmxldCBib20gPSAweEZFRkZcbmxldCByZXAgPSAweEZGRkRcblxubGV0IHN1Y2MgdSA9XG4gIGlmIHUgPSBsb19ib3VuZCB0aGVuIGhpX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1heCB0aGVuIGludmFsaWRfYXJnIGVycl9ub19zdWNjIGVsc2VcbiAgdSArIDFcblxubGV0IHByZWQgdSA9XG4gIGlmIHUgPSBoaV9ib3VuZCB0aGVuIGxvX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1pbiB0aGVuIGludmFsaWRfYXJnIGVycl9ub19wcmVkIGVsc2VcbiAgdSAtIDFcblxubGV0IGlzX3ZhbGlkIGkgPSAobWluIDw9IGkgJiYgaSA8PSBsb19ib3VuZCkgfHwgKGhpX2JvdW5kIDw9IGkgJiYgaSA8PSBtYXgpXG5sZXQgb2ZfaW50IGkgPSBpZiBpc192YWxpZCBpIHRoZW4gaSBlbHNlIGludmFsaWRfYXJnIChlcnJfbm90X3N2IGkpXG5leHRlcm5hbCB1bnNhZmVfb2ZfaW50IDogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19pbnQgOiB0IC0+IGludCA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX2NoYXIgdSA9IHUgPCAyNTZcbmxldCBvZl9jaGFyIGMgPSBDaGFyLmNvZGUgY1xubGV0IHRvX2NoYXIgdSA9XG4gIGlmIHUgPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyAoZXJyX25vdF9sYXRpbjEgdSkgZWxzZVxuICBDaGFyLnVuc2FmZV9jaHIgdVxuXG5sZXQgdW5zYWZlX3RvX2NoYXIgPSBDaGFyLnVuc2FmZV9jaHJcblxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IGhhc2ggPSB0b19pbnRcblxuKCogVVRGIGNvZGVjcyB0b29scyAqKVxuXG50eXBlIHV0Zl9kZWNvZGUgPSBpbnRcbigqIFRoaXMgaXMgYW4gaW50IFsweERVVVVVVVVdIGRlY29tcG9zZWQgYXMgZm9sbG93czpcbiAgIC0gW0RdIGlzIGZvdXIgYml0cyBmb3IgZGVjb2RlIGluZm9ybWF0aW9uLCB0aGUgaGlnaGVzdCBiaXQgaXMgc2V0IGlmIHRoZVxuICAgICBkZWNvZGUgaXMgdmFsaWQuIFRoZSB0aHJlZSBsb3dlciBiaXRzIGluZGljYXRlIHRoZSBudW1iZXIgb2YgZWxlbWVudHNcbiAgICAgZnJvbSB0aGUgc291cmNlIHRoYXQgd2VyZSBjb25zdW1lZCBieSB0aGUgZGVjb2RlLlxuICAgLSBbVVVVVVVVXSBpcyB0aGUgZGVjb2RlZCBVbmljb2RlIGNoYXJhY3RlciBvciB0aGUgVW5pY29kZSByZXBsYWNlbWVudFxuICAgICBjaGFyYWN0ZXIgVStGRkZEIGlmIGZvciBpbnZhbGlkIGRlY29kZXMuICopXG5cbmxldCB2YWxpZF9iaXQgPSAyN1xubGV0IGRlY29kZV9iaXRzID0gMjRcblxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfaXNfdmFsaWQgZCA9IChkIGxzciB2YWxpZF9iaXQpID0gMVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfbGVuZ3RoIGQgPSAoZCBsc3IgZGVjb2RlX2JpdHMpIGxhbmQgMGIxMTFcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX3VjaGFyIGQgPSB1bnNhZmVfb2ZfaW50IChkIGxhbmQgMHhGRkZGRkYpXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZSBuIHUgPSAoKDggbG9yIG4pIGxzbCBkZWNvZGVfYml0cykgbG9yICh0b19pbnQgdSlcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX2ludmFsaWQgbiA9IChuIGxzbCBkZWNvZGVfYml0cykgbG9yIHJlcFxuXG5sZXQgdXRmXzhfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweDAwN0YgLT4gMVxufCB1IHdoZW4gdSA8PSAweDA3RkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gM1xufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCB1dGZfMTZfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50NjRdOiA2NC1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X3RvX2Zsb2F0XCIgXCJjYW1sX2ludDY0X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcblxubGV0IHplcm8gPSAwTFxubGV0IG9uZSA9IDFMXG5sZXQgbWludXNfb25lID0gLTFMXG5sZXQgc3VjYyBuID0gYWRkIG4gMUxcbmxldCBwcmVkIG4gPSBzdWIgbiAxTFxubGV0IGFicyBuID0gaWYgbiA+PSAwTCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwMDAwMDAwMDBMXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZGRkZGRkZGRkxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMUwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmcgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjQgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cblxuXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxudHlwZSB0ID0gaW50NjRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4ICopXG5cbnR5cGUgcG9zaXRpb24gPSB7XG4gIHBvc19mbmFtZSA6IHN0cmluZztcbiAgcG9zX2xudW0gOiBpbnQ7XG4gIHBvc19ib2wgOiBpbnQ7XG4gIHBvc19jbnVtIDogaW50O1xufVxuXG5sZXQgZHVtbXlfcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDA7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IC0xO1xufVxuXG50eXBlIGxleGJ1ZiA9XG4gIHsgcmVmaWxsX2J1ZmYgOiBsZXhidWYgLT4gdW5pdDtcbiAgICBtdXRhYmxlIGxleF9idWZmZXIgOiBieXRlcztcbiAgICBtdXRhYmxlIGxleF9idWZmZXJfbGVuIDogaW50O1xuICAgIG11dGFibGUgbGV4X2Fic19wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2N1cnJfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfYWN0aW9uIDogaW50O1xuICAgIG11dGFibGUgbGV4X2VvZl9yZWFjaGVkIDogYm9vbDtcbiAgICBtdXRhYmxlIGxleF9tZW0gOiBpbnQgYXJyYXk7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcCA6IHBvc2l0aW9uO1xuICAgIG11dGFibGUgbGV4X2N1cnJfcCA6IHBvc2l0aW9uO1xuICB9XG5cbnR5cGUgbGV4X3RhYmxlcyA9XG4gIHsgbGV4X2Jhc2U6IHN0cmluZztcbiAgICBsZXhfYmFja3Ryazogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0OiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrOiBzdHJpbmc7XG4gICAgbGV4X2Jhc2VfY29kZSA6IHN0cmluZztcbiAgICBsZXhfYmFja3Rya19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0X2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NvZGU6IHN0cmluZzt9XG5cbmV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcbmV4dGVybmFsIGNfbmV3X2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9uZXdfbGV4X2VuZ2luZVwiXG5cbmxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cblxubGV0IG5ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX25ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5sZXQgbGV4X3JlZmlsbCByZWFkX2Z1biBhdXhfYnVmZmVyIGxleGJ1ZiA9XG4gIGxldCByZWFkID1cbiAgICByZWFkX2Z1biBhdXhfYnVmZmVyIChCeXRlcy5sZW5ndGggYXV4X2J1ZmZlcikgaW5cbiAgbGV0IG4gPVxuICAgIGlmIHJlYWQgPiAwXG4gICAgdGhlbiByZWFkXG4gICAgZWxzZSAobGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyAwKSBpblxuICAoKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBidWZmZXI6XG4gICAgICAgIDwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLT5cbiAgICAgICAgfCAganVuayB8ICAgICAgdmFsaWQgZGF0YSAgICAgfCAgIGp1bmsgICAgfFxuICAgICAgICBeICAgICAgIF4gICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICBeXG4gICAgICAgIDAgICAgc3RhcnRfcG9zICAgICAgICAgICAgIGJ1ZmZlcl9lbmQgICAgQnl0ZXMubGVuZ3RoIGJ1ZmZlclxuICAqKVxuICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuID4gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyIHRoZW4gYmVnaW5cbiAgICAoKiBUaGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgblxuICAgICAgIDw9IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlclxuICAgIHRoZW4gYmVnaW5cbiAgICAgICgqIEJ1dCB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaWYgd2UgcmVjbGFpbSB0aGUganVuayBhdCB0aGUgYmVnaW5uaW5nXG4gICAgICAgICBvZiB0aGUgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBsZXhidWYubGV4X2J1ZmZlciAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICgqIFdlIG11c3QgZ3JvdyB0aGUgYnVmZmVyLiAgRG91YmxpbmcgaXRzIHNpemUgd2lsbCBwcm92aWRlIGVub3VnaFxuICAgICAgICAgc3BhY2Ugc2luY2UgbiA8PSBTdHJpbmcubGVuZ3RoIGF1eF9idWZmZXIgPD0gU3RyaW5nLmxlbmd0aCBidWZmZXIuXG4gICAgICAgICBXYXRjaCBvdXQgZm9yIHN0cmluZyBsZW5ndGggb3ZlcmZsb3csIHRob3VnaC4gKilcbiAgICAgIGxldCBuZXdsZW4gPVxuICAgICAgICBJbnQubWluICgyICogQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgbiA+IG5ld2xlblxuICAgICAgdGhlbiBmYWlsd2l0aCBcIkxleGluZy5sZXhfcmVmaWxsOiBjYW5ub3QgZ3JvdyBidWZmZXJcIjtcbiAgICAgIGxldCBuZXdidWYgPSBCeXRlcy5jcmVhdGUgbmV3bGVuIGluXG4gICAgICAoKiBDb3B5IHRoZSB2YWxpZCBkYXRhIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5ldyBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIG5ld2J1ZiAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpO1xuICAgICAgbGV4YnVmLmxleF9idWZmZXIgPC0gbmV3YnVmXG4gICAgZW5kO1xuICAgICgqIFJlYWxsb2NhdGlvbiBvciBub3QsIHdlIGhhdmUgc2hpZnRlZCB0aGUgZGF0YSBsZWZ0IGJ5XG4gICAgICAgc3RhcnRfcG9zIGNoYXJhY3RlcnM7IHVwZGF0ZSB0aGUgcG9zaXRpb25zICopXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBzO1xuICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gMDtcbiAgICBsZXhidWYubGV4X2xhc3RfcG9zIDwtIGxleGJ1Zi5sZXhfbGFzdF9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBzIDtcbiAgICBsZXQgdCA9IGxleGJ1Zi5sZXhfbWVtIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LTEgZG9cbiAgICAgIGxldCB2ID0gdC4oaSkgaW5cbiAgICAgIGlmIHYgPj0gMCB0aGVuXG4gICAgICAgIHQuKGkpIDwtIHYtc1xuICAgIGRvbmVcbiAgZW5kO1xuICAoKiBUaGVyZSBpcyBub3cgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICBCeXRlcy5ibGl0IGF1eF9idWZmZXIgMCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X2J1ZmZlcl9sZW4gbjtcbiAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG5cblxubGV0IHplcm9fcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDE7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IDA7XG59XG5cbmxldCBmcm9tX2Z1bmN0aW9uID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBmID1cbiAgeyByZWZpbGxfYnVmZiA9IGxleF9yZWZpbGwgZiAoQnl0ZXMuY3JlYXRlIDUxMik7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAxMDI0O1xuICAgIGxleF9idWZmZXJfbGVuID0gMDtcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gZmFsc2U7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBmcm9tX2NoYW5uZWwgP3dpdGhfcG9zaXRpb25zIGljID1cbiAgZnJvbV9mdW5jdGlvbiA/d2l0aF9wb3NpdGlvbnMgKGZ1biBidWYgbiAtPiBpbnB1dCBpYyBidWYgMCBuKVxuXG5sZXQgZnJvbV9zdHJpbmcgPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIHMgPVxuICB7IHJlZmlsbF9idWZmID0gKGZ1biBsZXhidWYgLT4gbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMub2Zfc3RyaW5nIHM7ICgqIGhhdmUgdG8gbWFrZSBhIGNvcHkgZm9yIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdW5zYWZlLXN0cmluZyBtb2RlICopXG4gICAgbGV4X2J1ZmZlcl9sZW4gPSBTdHJpbmcubGVuZ3RoIHM7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IHRydWU7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBzZXRfcG9zaXRpb24gbGV4YnVmIHBvc2l0aW9uID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgIDwtIHtwb3NpdGlvbiB3aXRoIHBvc19mbmFtZSA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19mbmFtZX07XG4gIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBwb3NpdGlvbi5wb3NfY251bVxuXG5sZXQgc2V0X2ZpbGVuYW1lIGxleGJ1ZiBmbmFtZSA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHtsZXhidWYubGV4X2N1cnJfcCB3aXRoIHBvc19mbmFtZSA9IGZuYW1lfVxuXG5sZXQgd2l0aF9wb3NpdGlvbnMgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zXG5cbmxldCBsZXhlbWUgbGV4YnVmID1cbiAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG5sZXQgc3ViX2xleGVtZSBsZXhidWYgaTEgaTIgPVxuICBsZXQgbGVuID0gaTItaTEgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW5cblxubGV0IHN1Yl9sZXhlbWVfb3B0IGxleGJ1ZiBpMSBpMiA9XG4gIGlmIGkxID49IDAgdGhlbiBiZWdpblxuICAgIGxldCBsZW4gPSBpMi1pMSBpblxuICAgIFNvbWUgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuKVxuICBlbmQgZWxzZSBiZWdpblxuICAgIE5vbmVcbiAgZW5kXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPSBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaVxuXG5sZXQgc3ViX2xleGVtZV9jaGFyX29wdCBsZXhidWYgaSA9XG4gIGlmIGkgPj0gMCB0aGVuXG4gICAgU29tZSAoQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGkpXG4gIGVsc2VcbiAgICBOb25lXG5cblxubGV0IGxleGVtZV9jaGFyIGxleGJ1ZiBpID1cbiAgQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIChsZXhidWYubGV4X3N0YXJ0X3BvcyArIGkpXG5cbmxldCBsZXhlbWVfc3RhcnQgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wLnBvc19jbnVtXG5sZXQgbGV4ZW1lX2VuZCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfY251bVxuXG5sZXQgbGV4ZW1lX3N0YXJ0X3AgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wXG5sZXQgbGV4ZW1lX2VuZF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wXG5cbmxldCBuZXdfbGluZSBsZXhidWYgPVxuICBsZXQgbGNwID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICAgIHsgbGNwIHdpdGhcbiAgICAgICAgcG9zX2xudW0gPSBsY3AucG9zX2xudW0gKyAxO1xuICAgICAgICBwb3NfYm9sID0gbGNwLnBvc19jbnVtO1xuICAgICAgfVxuXG5cblxuKCogRGlzY2FyZCBkYXRhIGxlZnQgaW4gbGV4ZXIgYnVmZmVyLiAqKVxuXG5sZXQgZmx1c2hfaW5wdXQgbGIgPVxuICBsYi5sZXhfY3Vycl9wb3MgPC0gMDtcbiAgbGIubGV4X2Fic19wb3MgPC0gMDtcbiAgbGV0IGxjcCA9IGxiLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGIubGV4X2N1cnJfcCA8LSB7emVyb19wb3Mgd2l0aCBwb3NfZm5hbWUgPSBsY3AucG9zX2ZuYW1lfTtcbiAgbGIubGV4X2J1ZmZlcl9sZW4gPC0gMDtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3NcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgKCogVG9vbHMgdG8gbWFuaXB1bGF0ZSBzY2FubmluZyBzZXQgb2YgY2hhcnMgKHNlZSAlWy4uLl0pICopXG5cbnR5cGUgbXV0YWJsZV9jaGFyX3NldCA9IGJ5dGVzXG5cbigqIENyZWF0ZSBhIGZyZXNoLCBlbXB0eSwgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBjcmVhdGVfY2hhcl9zZXQgKCkgPSBCeXRlcy5tYWtlIDMyICdcXDAwMCdcblxuKCogQWRkIGEgY2hhciBpbiBhIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgQnl0ZXMuc2V0IGNoYXJfc2V0IHN0cl9pbmRcbiAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChCeXRlcy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbG9yIG1hc2spKVxuXG5sZXQgZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgQnl0ZXMudG9fc3RyaW5nIGNoYXJfc2V0XG5cbigqIENvbXB1dGUgdGhlIGNvbXBsZW1lbnQgb2YgYSBjaGFyIHNldC4gKilcbmxldCByZXZfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBsZXQgY2hhcl9zZXQnID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gIGZvciBpID0gMCB0byAzMSBkb1xuICAgIEJ5dGVzLnNldCBjaGFyX3NldCcgaVxuICAgICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBpKSBseG9yIDB4RkYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjaGFyX3NldCdcblxuKCogUmV0dXJuIHRydWUgaWYgYSBgYycgaXMgaW4gYGNoYXJfc2V0Jy4gKilcbmxldCBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsYW5kIG1hc2spIDw+IDBcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIElnbm9yZWQgcGFyYW0gY29udmVyc2lvbiAqKVxuXG4oKiBHQURUIHVzZWQgdG8gYWJzdHJhY3QgYW4gZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXIuICopXG4oKiBTZWUgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0LiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYiA9IFBhcmFtX2Zvcm1hdF9FQkIgOlxuICAgICgneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYlxuXG4oKiBDb21wdXRlIGEgcGFkZGluZyBhc3NvY2lhdGVkIHRvIGEgcGFkX29wdGlvbiAoc2VlIFwiJV80MmRcIikuICopXG5sZXQgcGFkX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcGFkZGluZ1xuICB8IFNvbWUgd2lkdGggLT4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcblxuKCogQ29tcHV0ZSBhIHByZWNpc2lvbiBhc3NvY2lhdGVkIHRvIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfLjQyZlwiKS4gKilcbmxldCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0ID0gbWF0Y2ggcHJlY19vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcHJlY2lzaW9uXG4gIHwgU29tZSBuZGVjIC0+IExpdF9wcmVjaXNpb24gbmRlY1xuXG4oKiBUdXJuIGFuIGlnbm9yZWQgcGFyYW0gaW50byBpdHMgZXF1aXZhbGVudCBub3QtaWdub3JlZCBmb3JtYXQgbm9kZS4gKilcbigqIFVzZWQgZm9yIGZvcm1hdCBwcmV0dHktcHJpbnRpbmcgYW5kIFNjYW5mLiAqKVxubGV0IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPiAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFyYW1fZm9ybWF0X2ViYiA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENoYXIgZm10KVxuICB8IElnbm9yZWRfY2FtbF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9jaGFyIGZtdClcbiAgfCBJZ25vcmVkX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfc3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChJbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQzMiAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDMyIChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoTmF0aXZlaW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50NjQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQ2NCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2Zsb2F0IChwYWRfb3B0LCBwcmVjX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRmxvYXQgKChGbG9hdF9mbGFnXywgRmxvYXRfZiksXG4gICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9ib29sIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChCb29sIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoUmVhZGVyIGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdClcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZXMgKilcblxudHlwZSAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW4gPVxuICB8IEFjY19vcGVuX3RhZyBvZiAoJ2IsICdjKSBhY2NcbiAgfCBBY2Nfb3Blbl9ib3ggb2YgKCdiLCAnYykgYWNjXG5cbigqIFJldmVyc2VkIGxpc3Qgb2YgcHJpbnRpbmcgYXRvbXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgcHJpbnRmIGFyZ3VtZW50cy4gKilcbmFuZCAoJ2IsICdjKSBhY2MgPVxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCBvZiAoJ2IsICdjKSBhY2MgKiBmb3JtYXR0aW5nX2xpdFxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIG9mICgnYiwgJ2MpIGFjYyAqICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlblxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogTGl0ZXJhbCBzdHJpbmcgKilcbiAgfCBBY2NfY2hhcl9saXRlcmFsICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBMaXRlcmFsIGNoYXIgKilcbiAgfCBBY2NfZGF0YV9zdHJpbmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBHZW5lcmF0ZWQgc3RyaW5nICopXG4gIHwgQWNjX2RhdGFfY2hhciAgICAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogR2VuZXJhdGVkIGNoYXIgKilcbiAgfCBBY2NfZGVsYXkgICAgICAgICAgb2YgKCdiLCAnYykgYWNjICogKCdiIC0+ICdjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRGVsYXllZCBwcmludGluZyAoJWEsICV0KSAqKVxuICB8IEFjY19mbHVzaCAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgICAgICAgICAgICAgICgqIEZsdXNoICopXG4gIHwgQWNjX2ludmFsaWRfYXJnICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZ1xuICAgICAgKCogUmFpc2UgSW52YWxpZF9hcmd1bWVudCBtc2cgKilcbiAgfCBFbmRfb2ZfYWNjXG5cbigqIExpc3Qgb2YgaGV0ZXJvZ2VuZW91cyB2YWx1ZXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgc2NhbmYgY2FsbGJhY2sgYXJndW1lbnRzLiAqKVxudHlwZSAoJ2EsICdiKSBoZXRlcl9saXN0ID1cbiAgfCBDb25zIDogJ2MgKiAoJ2EsICdiKSBoZXRlcl9saXN0IC0+ICgnYyAtPiAnYSwgJ2IpIGhldGVyX2xpc3RcbiAgfCBOaWwgOiAoJ2IsICdiKSBoZXRlcl9saXN0XG5cbigqIEV4aXN0ZW50aWFsIEJsYWNrIEJveGVzLiAqKVxuKCogVXNlZCB0byBhYnN0cmFjdCBzb21lIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVycy4gKilcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkZGluZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiID0gUGFkZGluZ19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkcHJlYyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiID0gUGFkcHJlY19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAneikgcHJlY2lzaW9uICogKCd6LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYiA9IFBhZGRpbmdfZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcGFkZGluZyAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiID0gUHJlY2lzaW9uX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZHByZWNfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiID0gUGFkcHJlY19mbXRfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3AgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiXG5cbigqIEFic3RyYWN0IHRoZSAnYSBhbmQgJ2QgcGFyYW1ldGVycyBvZiBhbiBmbXQuICopXG4oKiBPdXRwdXQgdHlwZSBvZiB0aGUgZm9ybWF0IHBhcnNpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYiA9IEZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9mb3JtYXRfZ2VuIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYiA9IEZtdF9mbXR0eV9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmIgPSBGbXR0eV9mbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdHR5ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgYWxsIGZtdHR5IHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBmb3JtYXQgdHlwZXMuICopXG50eXBlIGZtdHR5X2ViYiA9IEZtdHR5X0VCQiA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPiBmbXR0eV9lYmJcblxuKCogQWJzdHJhY3QgYWxsIHBhZGRpbmcgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHBhZGRpbmdzLiAqKVxudHlwZSBwYWRkaW5nX2ViYiA9IFBhZGRpbmdfRUJCIDogKCdhLCAnYikgcGFkZGluZyAtPiBwYWRkaW5nX2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcHJlY2lzaW9uIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwcmVjaXNpb25zLiAqKVxudHlwZSBwcmVjaXNpb25fZWJiID0gUHJlY2lzaW9uX0VCQiA6ICgnYSwgJ2IpIHByZWNpc2lvbiAtPiBwcmVjaXNpb25fZWJiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29uc3RhbnRzICopXG5cbigqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBmbG9hdCBwcmludGluZy4gKilcbmxldCBkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udiA9XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgfCBGbG9hdF9oIHwgRmxvYXRfSFxuICB8IEZsb2F0X0NGIC0+IC02XG4gICgqIEZvciAlaCAlSCBhbmQgJSNGIGZvcm1hdHMsIGEgbmVnYXRpdmUgcHJlY2lzaW9uIG1lYW5zIFwiYXMgbWFueSBkaWdpdHMgYXNcbiAgICAgbmVjZXNzYXJ5XCIuICBGb3IgdGhlIG90aGVyIEZQIGZvcm1hdHMsIHdlIHRha2UgdGhlIGFic29sdXRlIHZhbHVlXG4gICAgIG9mIHRoZSBwcmVjaXNpb24sIGhlbmNlIDYgZGlnaXRzIGJ5IGRlZmF1bHQuICopXG4gIHwgRmxvYXRfRiAtPiAxMlxuICAoKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgT0NhbWwgZmxvYXQgcHJpbnRpbmcgKCVGKS4gKilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFeHRlcm5hbHMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0OiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50OiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQzMjogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X25hdGl2ZWludDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50NjQ6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmV4dGVybmFsIGhleHN0cmluZ19vZl9mbG9hdDogZmxvYXQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdFwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAoKiBUb29scyB0byBwcmV0dHktcHJpbnQgZm9ybWF0cyAqKVxuXG4oKiBUeXBlIG9mIGV4dGVuc2libGUgY2hhcmFjdGVyIGJ1ZmZlcnMuICopXG50eXBlIGJ1ZmZlciA9IHtcbiAgbXV0YWJsZSBpbmQgOiBpbnQ7XG4gIG11dGFibGUgYnl0ZXMgOiBieXRlcztcbn1cblxuKCogQ3JlYXRlIGEgZnJlc2ggYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jcmVhdGUgaW5pdF9zaXplID0geyBpbmQgPSAwOyBieXRlcyA9IEJ5dGVzLmNyZWF0ZSBpbml0X3NpemUgfVxuXG4oKiBDaGVjayBzaXplIG9mIHRoZSBidWZmZXIgYW5kIGdyb3cgaXQgaWYgbmVlZGVkLiAqKVxubGV0IGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBvdmVyaGVhZCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmLmJ5dGVzIGluXG4gIGxldCBtaW5fbGVuID0gYnVmLmluZCArIG92ZXJoZWFkIGluXG4gIGlmIG1pbl9sZW4gPiBsZW4gdGhlbiAoXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWF4IChsZW4gKiAyKSBtaW5fbGVuIGluXG4gICAgbGV0IG5ld19zdHIgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmLmJ5dGVzIDAgbmV3X3N0ciAwIGxlbjtcbiAgICBidWYuYnl0ZXMgPC0gbmV3X3N0cjtcbiAgKVxuXG4oKiBBZGQgdGhlIGNoYXJhY3RlciBgYycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX2NoYXIgYnVmIGMgPVxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgMTtcbiAgQnl0ZXMuc2V0IGJ1Zi5ieXRlcyBidWYuaW5kIGM7XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIDFcblxuKCogQWRkIHRoZSBzdHJpbmcgYHMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHMgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgc3RyX2xlbjtcbiAgU3RyaW5nLmJsaXQgcyAwIGJ1Zi5ieXRlcyBidWYuaW5kIHN0cl9sZW47XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIHN0cl9sZW5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIHRoZSBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NvbnRlbnRzIGJ1ZiA9XG4gIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmLmJ5dGVzIDAgYnVmLmluZFxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgY29udmVyc2lvbiB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfaWNvbnYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgfCBJbnRfQ2QgLT4gJ2QnIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2lcbiAgfCBJbnRfQ2kgLT4gJ2knIHwgSW50X3ggfCBJbnRfQ3ggLT4gJ3gnIHwgSW50X1ggfCBJbnRfQ1ggLT4gJ1gnIHwgSW50X29cbiAgfCBJbnRfQ28gLT4gJ28nIHwgSW50X3UgfCBJbnRfQ3UgLT4gJ3UnXG5cbigqIENvbnZlcnQgYSBmbG9hdCBjb252ZXJzaW9uIHRvIGNoYXIuICopXG4oKiBgY0YnIHdpbGwgYmUgJ0YnIGZvciBkaXNwbGF5aW5nIGZvcm1hdCBhbmQgJ2cnIHRvIGNhbGwgbGliYyBwcmludGYgKilcbmxldCBjaGFyX29mX2Zjb252ID8oY0Y9J0YnKSBmY29udiA9IG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiAtPiAnZicgfCBGbG9hdF9lIC0+ICdlJ1xuICB8IEZsb2F0X0UgLT4gJ0UnIHwgRmxvYXRfZyAtPiAnZydcbiAgfCBGbG9hdF9HIC0+ICdHJyB8IEZsb2F0X0YgLT4gY0ZcbiAgfCBGbG9hdF9oIC0+ICdoJyB8IEZsb2F0X0ggLT4gJ0gnXG4gIHwgRmxvYXRfQ0YgLT4gJ0YnXG5cblxuKCogQ29udmVydCBhIHNjYW5uaW5nIGNvdW50ZXIgdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2NvdW50ZXIgY291bnRlciA9IG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAgLT4gJ2wnXG4gIHwgQ2hhcl9jb3VudGVyICAtPiAnbidcbiAgfCBUb2tlbl9jb3VudGVyIC0+ICdOJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIGNoYXJfc2V0IGluIGEgYnVmZmVyIHdpdGggdGhlIE9DYW1sIGZvcm1hdCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldCA9XG4gIGxldCByZWMgcHJpbnRfc3RhcnQgc2V0ID1cbiAgICBsZXQgaXNfYWxvbmUgYyA9XG4gICAgICBsZXQgYmVmb3JlLCBhZnRlciA9IENoYXIuKGNociAoY29kZSBjIC0gMSksIGNociAoY29kZSBjICsgMSkpIGluXG4gICAgICBpc19pbl9jaGFyX3NldCBzZXQgY1xuICAgICAgJiYgbm90IChpc19pbl9jaGFyX3NldCBzZXQgYmVmb3JlICYmIGlzX2luX2NoYXJfc2V0IHNldCBhZnRlcikgaW5cbiAgICBpZiBpc19hbG9uZSAnXScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICddJztcbiAgICBwcmludF9vdXQgc2V0IDE7XG4gICAgaWYgaXNfYWxvbmUgJy0nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSc7XG4gIGFuZCBwcmludF9vdXQgc2V0IGkgPVxuICAgIGlmIGkgPCAyNTYgdGhlblxuICAgICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuIHByaW50X2ZpcnN0IHNldCBpXG4gICAgICBlbHNlIHByaW50X291dCBzZXQgKGkgKyAxKVxuICBhbmQgcHJpbnRfZmlyc3Qgc2V0IGkgPVxuICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJ1xcMjU1JyAtPiBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgfCAnXScgfCAnLScgLT4gcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIHwgXyAtPiBwcmludF9zZWNvbmQgc2V0IChpICsgMSk7XG4gIGFuZCBwcmludF9zZWNvbmQgc2V0IGkgPVxuICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlblxuICAgICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgICB8ICdcXDI1NScgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU0O1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgICB8ICddJyB8ICctJyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgICAgfCBfIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMik7XG4gICAgICB8IF8gLT5cbiAgICAgICAgcHJpbnRfaW4gc2V0IChpIC0gMSkgKGkgKyAyKTtcbiAgICBlbHNlIChcbiAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgKVxuICBhbmQgcHJpbnRfaW4gc2V0IGkgaiA9XG4gICAgaWYgaiA9IDI1NiB8fCBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaikpIHRoZW4gKFxuICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChpbnRfb2ZfY2hhciAnLScpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGogLSAxKTtcbiAgICAgIGlmIGogPCAyNTYgdGhlbiBwcmludF9vdXQgc2V0IChqICsgMSk7XG4gICAgKSBlbHNlXG4gICAgICBwcmludF9pbiBzZXQgaSAoaiArIDEpO1xuICBhbmQgcHJpbnRfY2hhciBidWYgaSA9IG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICB8ICdAJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQCc7XG4gICAgfCBjICAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBpblxuICBidWZmZXJfYWRkX2NoYXIgYnVmICdbJztcbiAgcHJpbnRfc3RhcnQgKFxuICAgIGlmIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0ICdcXDAwMCdcbiAgICB0aGVuICggYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXic7IHJldl9jaGFyX3NldCBjaGFyX3NldCApXG4gICAgZWxzZSBjaGFyX3NldFxuICApO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmICddJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIHBhZHR5IGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkdHkgYnVmIHBhZHR5ID0gbWF0Y2ggcGFkdHkgd2l0aFxuICB8IExlZnQgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nXG4gIHwgUmlnaHQgLT4gKClcbiAgfCBaZXJvcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcwJ1xuXG4oKiBQcmludCB0aGUgJ18nIG9mIGFuIGlnbm9yZWQgZmxhZyBpZiBuZWVkZWQuICopXG5sZXQgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWcgPVxuICBpZiBpZ25fZmxhZyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ18nXG5cbigqKiopXG5cbmxldCBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHdpZHRoIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyB3aWR0aClcblxuKCoqKilcblxuKCogUHJpbnQgcGFkZGluZyBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZGRpbmcgOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcGFkZGluZyAtPiB1bml0ID1cbmZ1biBidWYgcGFkIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPiAoKVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgbikgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKidcblxuKCogUHJpbnQgcHJlY2lzaW9uIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcHJlY2lzaW9uIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHByZWNpc2lvbiAtPiB1bml0ID1cbiAgZnVuIGJ1ZiBwcmVjIC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAtPiAoKVxuICB8IExpdF9wcmVjaXNpb24gbiAtPlxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiLipcIlxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgb3IgJyMnIGFzc29jaWF0ZWQgdG8gYW4gaW50IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9wZCB8IEludF9waSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEludF9zZCB8IEludF9zaSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEludF9DeCB8IEludF9DWCB8IEludF9DbyB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBJbnRfZCB8IEludF9pIHwgSW50X3ggfCBJbnRfWCB8IEludF9vIHwgSW50X3UgLT4gKClcblxuKCogUHJpbnQgYW4gY29tcGxldGUgaW50IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJTMuKmRcIikuICopXG5sZXQgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqIFByaW50IGEgY29tcGxldGUgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjIGMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgYW5kL29yICcjJyBhc3NvY2lhdGVkIHRvIGEgZmxvYXQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnYgPVxuICBiZWdpbiBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ZsYWdfcCAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEZsb2F0X2ZsYWdfcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEZsb2F0X2ZsYWdfIC0+ICgpIGVuZDtcbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9DRiAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HXG4gIHwgRmxvYXRfRiB8IEZsb2F0X2ggfCBGbG9hdF9IIC0+ICgpXG5cbigqIFByaW50IGEgY29tcGxldGUgZmxvYXQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlKyouM2ZcIikuICopXG5sZXQgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9mY29udiBmY29udilcblxuKCogQ29tcHV0ZSB0aGUgbGl0ZXJhbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBGb3JtYXR0aW5nX2xpdC4gKilcbigqIFVzZWQgYnkgUHJpbnRmIGFuZCBTY2FuZiB3aGVyZSBmb3JtYXR0aW5nIGlzIG5vdCBpbnRlcnByZXRlZC4gKilcbmxldCBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQgPSBtYXRjaCBmb3JtYXR0aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgLT4gXCJAXVwiXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgLT4gXCJAfVwiXG4gIHwgQnJlYWsgKHN0ciwgXywgXykgICAgLT4gc3RyXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgLT4gXCJAP1wiXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgLT4gXCJAXFxuXCJcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAtPiBcIkAuXCJcbiAgfCBNYWdpY19zaXplIChzdHIsIF8pICAtPiBzdHJcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAtPiBcIkBAXCJcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAtPiBcIkAlXCJcbiAgfCBTY2FuX2luZGljIGMgLT4gXCJAXCIgXiAoU3RyaW5nLm1ha2UgMSBjKVxuXG4oKioqKVxuXG4oKiBQcmludCBhIGxpdGVyYWwgY2hhciBpbiBhIGJ1ZmZlciwgZXNjYXBlICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyID0gbWF0Y2ggY2hyIHdpdGhcbiAgfCAnJScgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSVcIlxuICB8IF8gLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjaHJcblxuKCogUHJpbnQgYSBsaXRlcmFsIHN0cmluZyBpbiBhIGJ1ZmZlciwgZXNjYXBlIGFsbCAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyID1cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIHN0ci5baV1cbiAgZG9uZVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcHJldHR5LXByaW50aW5nICopXG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IHR5cGUgKGFuIGZtdHR5KSBpbiBhIGJ1ZmZlci4gKilcbmxldCByZWMgYnByaW50X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gICAgYnVmZmVyIC0+IChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gdW5pdCA9XG5mdW4gYnVmIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlY1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFN0cmluZ190eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVzXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWlcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQzMl90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVuaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGbG9hdF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlZlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEJvb2xfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVCXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWFcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBUaGV0YV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIldFwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFueV90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiU/XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgUmVhZGVyX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlX3JcIjtcbiAgICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXtcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJX1cIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5LCBfLCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUoXCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEVuZF9vZl9mbXR0eSAtPiAoKVxuXG4oKioqKVxuXG5sZXQgcmVjIGludF9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIGEgYiBjIC5cbiAgKGEsIGIsIGMpIGN1c3RvbV9hcml0eSAtPiBpbnQgPVxuICBmdW5jdGlvblxuICB8IEN1c3RvbV96ZXJvIC0+IDBcbiAgfCBDdXN0b21fc3VjYyB4IC0+IDEgKyBpbnRfb2ZfY3VzdG9tX2FyaXR5IHhcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2ZtdCBidWYgZm10ID1cbiAgbGV0IHJlYyBmbXRpdGVyIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGJvb2wgLT4gdW5pdCA9XG4gIGZ1biBmbXQgaWduX2ZsYWcgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnUyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdsJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnTCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0InO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYSc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3QnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgZm9yIF9pID0gMSB0byBpbnRfb2ZfY3VzdG9tX2FyaXR5IGFyaXR5IGRvXG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnPyc7XG4gICAgICBkb25lO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgUmVhZGVyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3InOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlIVwiO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNocjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAneyc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnfSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJygnO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyknO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHdpZHRoX29wdDsgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2NvdW50ZXIgY291bnRlcik7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIFwiMGNcIjsgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgICBmbXRpdGVyIGZtdCcgdHJ1ZTtcblxuICAgIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCk7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGZtdGluZ19nZW4gd2l0aFxuICAgICAgfCBPcGVuX3RhZyAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAe1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICB8IE9wZW5fYm94IChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkBbXCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIGVuZDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRW5kX29mX2Zvcm1hdCAtPiAoKVxuXG4gIGluIGZtdGl0ZXIgZm10IGZhbHNlXG5cbigqKiopXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdG8gc3RyaW5nLiAqKVxubGV0IHN0cmluZ19vZl9mbXQgZm10ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdCBidWYgZm10O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGUgZXh0cmFjdGlvbiAqKVxuXG50eXBlIChfLCBfKSBlcSA9IFJlZmwgOiAoJ2EsICdhKSBlcVxuXG4oKiBJbnZhcmlhbnQ6IHRoaXMgZnVuY3Rpb24gaXMgdGhlIGlkZW50aXR5IG9uIHZhbHVlcy5cblxuICAgSW4gcGFydGljdWxhciwgaWYgKHR5MSwgdHkyKSBoYXZlIGVxdWFsIHZhbHVlcywgdGhlblxuICAgKHRyYW5zIChzeW1tIHR5MSkgdHkyKSByZXNwZWN0cyB0aGUgJ3RyYW5zJyBwcmVjb25kaXRpb24uICopXG5sZXQgcmVjIHN5bW0gOiB0eXBlIGExIGIxIGMxIGQxIGUxIGYxIGEyIGIyIGMyIGQyIGUyIGYyIC5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10dHlfcmVsXG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+IENoYXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPiBJbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+IEludDMyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPiBJbnQ2NF90eSAoc3ltbSByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IE5hdGl2ZWludF90eSAoc3ltbSByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT4gRmxvYXRfdHkgKHN5bW0gcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT4gQm9vbF90eSAoc3ltbSByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+IFN0cmluZ190eSAoc3ltbSByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT4gVGhldGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+IEFscGhhX3R5IChzeW1tIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT4gQW55X3R5IChzeW1tIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT4gUmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPiBJZ25vcmVkX3JlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MiwgdHkxLCBzeW1tIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG5sZXQgcmVjIGZtdHR5X3JlbF9kZXQgOiB0eXBlIGExIGIgYyBkMSBlMSBmMSBhMiBkMiBlMiBmMiAuXG4gIChhMSwgYiwgYywgZDEsIGUxLCBmMSxcbiAgIGEyLCBiLCBjLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoKGYxLCBmMikgZXEgLT4gKGExLCBhMikgZXEpXG4gICogKChhMSwgYTIpIGVxIC0+IChmMSwgZjIpIGVxKVxuICAqICgoZTEsIGUyKSBlcSAtPiAoZDEsIGQyKSBlcSlcbiAgKiAoKGQxLCBkMikgZXEgLT4gKGUxLCBlMikgZXEpXG49IGZ1bmN0aW9uXG4gIHwgRW5kX29mX2ZtdHR5IC0+XG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcblxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IEZvcm1hdF9hcmdfdHkgKF90eSwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGxldCBhZywgZ2EsIGRqLCBqZCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIGxldCBSZWZsID0gYWcgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBnYSBSZWZsIGluIGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIGxldCBSZWZsID0gZGogUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBqZCBSZWZsIGluIGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuXG4oKiBQcmVjb25kaXRpb246IHdlIGFzc3VtZSB0aGF0IHRoZSB0d28gZm10dHlfcmVsIGFyZ3VtZW50cyBoYXZlIGVxdWFsXG4gICB2YWx1ZXMgKGF0IHBvc3NpYmx5IGRpc3RpbmN0IHR5cGVzKTsgdGhpcyBpbnZhcmlhbnQgY29tZXMgZnJvbSB0aGUgd2F5XG4gICBmbXR0eV9yZWwgd2l0bmVzc2VzIGFyZSBwcm9kdWNlZCBieSB0aGUgdHlwZS1jaGVja2VyXG5cbiAgIFRoZSBjb2RlIGJlbG93IHVzZXMgKGFzc2VydCBmYWxzZSkgd2hlbiB0aGlzIGFzc3VtcHRpb24gaXMgYnJva2VuLiBUaGVcbiAgIGNvZGUgcGF0dGVybiBpcyB0aGUgZm9sbG93aW5nOlxuXG4gICAgIHwgRm9vIHgsIEZvbyB5IC0+XG4gICAgICAgKCogY2FzZSB3aGVyZSBpbmRlZWQgYm90aCB2YWx1ZXNcbiAgICAgICAgICBzdGFydCB3aXRoIGNvbnN0cnVjdG9yIEZvbyAqKVxuICAgICB8IEZvbyBfLCBfXG4gICAgIHwgXywgRm9vIF8gLT5cbiAgICAgICAoKiBkaWZmZXJlbnQgaGVhZCBjb25zdHJ1Y3RvcnM6IGJyb2tlbiBwcmVjb25kaXRpb24gKilcbiAgICAgICBhc3NlcnQgZmFsc2VcbiopXG5hbmQgdHJhbnMgOiB0eXBlXG4gIGExIGIxIGMxIGQxIGUxIGYxXG4gIGEyIGIyIGMyIGQyIGUyIGYyXG4gIGEzIGIzIGMzIGQzIGUzIGYzXG4uXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG49IGZ1biB0eTEgdHkyIC0+IG1hdGNoIHR5MSwgdHkyIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QxLCBDaGFyX3R5IHJlc3QyIC0+IENoYXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFN0cmluZ190eSByZXN0MSwgU3RyaW5nX3R5IHJlc3QyIC0+IFN0cmluZ190eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQm9vbF90eSByZXN0MSwgQm9vbF90eSByZXN0MiAtPiBCb29sX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnRfdHkgcmVzdDEsIEludF90eSByZXN0MiAtPiBJbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDMyX3R5IHJlc3QxLCBJbnQzMl90eSByZXN0MiAtPiBJbnQzMl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50NjRfdHkgcmVzdDEsIEludDY0X3R5IHJlc3QyIC0+IEludDY0X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdDEsIE5hdGl2ZWludF90eSByZXN0MiAtPiBOYXRpdmVpbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZsb2F0X3R5IHJlc3QxLCBGbG9hdF90eSByZXN0MiAtPiBGbG9hdF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG5cbiAgfCBBbHBoYV90eSByZXN0MSwgQWxwaGFfdHkgcmVzdDIgLT4gQWxwaGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFscGhhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQWxwaGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFRoZXRhX3R5IHJlc3QxLCBUaGV0YV90eSByZXN0MiAtPiBUaGV0YV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgVGhldGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBUaGV0YV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgQW55X3R5IHJlc3QxLCBBbnlfdHkgcmVzdDIgLT4gQW55X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbnlfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbnlfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFJlYWRlcl90eSByZXN0MSwgUmVhZGVyX3R5IHJlc3QyIC0+IFJlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgUmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgUmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MSwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDIgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBJZ25vcmVkX3JlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X2FyZ190eSAodHkxLCByZXN0MSksIEZvcm1hdF9hcmdfdHkgKHR5MiwgcmVzdDIpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHJhbnMgdHkxIHR5MiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X2FyZ190eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9hcmdfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkxMiwgcmVzdDEpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyMSwgdHkyMiwgcmVzdDIpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxMikgdHkyMSBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTIyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfc3Vic3RfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEVuZF9vZl9mbXR0eSwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuICB8IEVuZF9vZl9mbXR0eSwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBFbmRfb2ZfZm10dHkgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCByZWMgZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmb3JtYXR0aW5nX2dlbiAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogRXh0cmFjdCB0aGUgdHlwZSByZXByZXNlbnRhdGlvbiAoYW4gZm10dHkpIG9mIGEgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcblxuICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50MzJfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKE5hdGl2ZWludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQ2NF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChGbG9hdF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcblxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgICAgICAgICAgIC0+XG4gICAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoQm9vbF90eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgIC0+IEFscGhhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAtPiBUaGV0YV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgICAgLT4gZm10dHlfb2ZfY3VzdG9tIGFyaXR5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBSZWFkZXIgcmVzdCAgICAgICAgICAgICAgICAtPiBSZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eSwgdHksIGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPiBTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+IEludF90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgLT4gZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAgLT5cbiAgICBjb25jYXRfZm10dHkgKGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIGZtdGluZ19nZW4pIChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgIC0+IEVuZF9vZl9mbXR0eVxuXG5hbmQgZm10dHlfb2ZfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAoeSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGFyaXR5IGZtdHR5IC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBmbXR0eVxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+IEFueV90eSAoZm10dHlfb2ZfY3VzdG9tIGFyaXR5IGZtdHR5KVxuXG4oKiBFeHRyYWN0IHRoZSBmbXR0eSBvZiBhbiBpZ25vcmVkIHBhcmFtZXRlciBmb2xsb3dlZCBieSB0aGUgcmVzdCBvZlxuICAgdGhlIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IGNvbmNhdF9mbXR0eSBmbXR0eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IElnbm9yZWRfcmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcGFkZGluZyBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpzXCIpLiAqKVxuYW5kIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcGFkZGluZyBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcGFkZGluZyBfIC0+IEludF90eSBmbXR0eVxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcHJlY2lzaW9uIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpLiopXG5hbmQgZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgICB8IE5vX3ByZWNpc2lvbiAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3ByZWNpc2lvbiBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcHJlY2lzaW9uICAgLT4gSW50X3R5IGZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGluZyAqKVxuXG4oKiBFeGNlcHRpb24gcmFpc2VkIHdoZW4gYSBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggYSBnaXZlbiBmb3JtYXQgdHlwZS4gKilcbmV4Y2VwdGlvbiBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBwYWRkaW5nLiAqKVxuKCogVGFrZSBhbiBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgdGhlIGludGVnZXIgc2hvdWxkIGJlIGtlcHQgYXMgYXJndW1lbnQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZGRpbmcgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkZGluZ19mbXR0eV9lYmIgPVxuZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQsIGZtdHR5IHdpdGhcbiAgfCBOb19wYWRkaW5nLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChOb19wYWRkaW5nLCBmbXR0eSlcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChMaXRfcGFkZGluZyAocGFkdHksdyksZm10dHkpXG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEludF90eSByZXN0IC0+IFBhZGRpbmdfZm10dHlfRUJCIChBcmdfcGFkZGluZyBwYWR0eSxyZXN0KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBDb252ZXJ0IGEgKHVwYWRkaW5nLCB1cHJlY2lzaW9uKSB0byBhIChwYWRkaW5nLCBwcmVjaXNpb24pLiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiBuZWVkZWQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZHByZWMgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSB6IC5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHopIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkcHJlY19mbXR0eV9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMsIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBOb19wcmVjaXNpb24sIHJlc3QpXG4gIHwgTGl0X3ByZWNpc2lvbiBwLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIExpdF9wcmVjaXNpb24gcCwgcmVzdClcbiAgfCBBcmdfcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBJbnRfdHkgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBBcmdfcHJlY2lzaW9uLCByZXN0KVxuICB8IF8sIFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogSWYgdHlwaW5nIHN1Y2NlZWQsIGdlbmVyYXRlIGEgY29weSBvZiB0aGUgZm9ybWF0IHdpdGggdGhlIHNhbWVcbiAgICB0eXBlIHBhcmFtZXRlcnMgYXMgdGhlIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgcmVjIHR5cGVfZm9ybWF0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IHdpdGhcbiAgfCBGbXRfZm10dHlfRUJCIChmbXQnLCBFbmRfb2ZfZm10dHkpIC0+IGZtdCdcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0X2dlbiA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIGZtdCwgZm10dHkgd2l0aFxuICB8IENoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBDYW1sX2NoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDYW1sX2NoYXIgZm10JywgZm10dHknKVxuICB8IFN0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChTdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBDYW1sX3N0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChDYW1sX3N0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDMyX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQ2NF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEZsb2F0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBCb29sIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBCb29sX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChCb29sIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmx1c2ggZm10X3Jlc3QsIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRmx1c2ggZm10JywgZm10dHknKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZ19saXRlcmFsIChzdHIsIGZtdCcpLCBmbXR0eScpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyX2xpdGVyYWwgKGNociwgZm10JyksIGZtdHR5JylcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1Yl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eScsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eTEsIF9zdWJfZm10dHkyLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5MSkgdGhlblxuICAgICAgcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9XG4gICAgICB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgKGVyYXNlX3JlbCBmbXR0eV9yZXN0KVxuICAgIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkxLCBmbXQnKSwgZm10dHknKVxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgQWxwaGEgZm10X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQWxwaGEgZm10JywgZm10dHknKVxuICB8IFRoZXRhIGZtdF9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFRoZXRhIGZtdCcsIGZtdHR5JylcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZ19nZW4sIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfZm9ybWF0dGluZ19nZW4gZm9ybWF0dGluZ19nZW4gZm10X3Jlc3QgZm10dHlfcmVzdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgZm10X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFJlYWRlciBmbXQnLCBmbXR0eScpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10X3Jlc3QpLCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQnKSwgZm10dHknKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10JyksIGZtdHR5JylcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtIGlnbiByZXN0IGZtdHR5X3Jlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QgLT4gRm10X2ZtdHR5X0VCQiAoRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdClcblxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYTEgYTMgYjEgYjMgYzEgYzMgZDEgZDMgZTEgZTIgZTMgZjEgZjIgZjMgLlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChmMSwgYjEsIGMxLCBlMSwgZTIsIGYyKSBmbXQgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHkgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10X2ZtdHR5X2ViYiA9XG5mdW4gZm9ybWF0dGluZ19nZW4gZm10MCBmbXR0eTAgLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG5cbigqIFR5cGUgYW4gSWdub3JlZF9wYXJhbSBub2RlIGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHAgcSB4IHkgeiB0IHUgdiBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIHksIHosIHQsIHEsIHApIGlnbm9yZWQgLT5cbiAgICAocCwgeSwgeiwgcSwgdSwgdikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGlnbiBmbXQgZm10dHkgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludCBfICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDMyIF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCBfICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDY0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zsb2F0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIChJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkpIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eScsIEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eSBmbXQgZm10dHkgaW5cbiAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10JyksXG4gICAgICAgICAgICAgICAgICAgZm10dHknKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+IChcbiAgICBtYXRjaCBmbXR0eSB3aXRoXG4gICAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSA6IHR5cGUgYTEgYTIgYjEgYjIgYzEgYzIgZDEgZDIgZTEgZTIgZjEgZjIgLlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZDIsIGEyKSBpZ25vcmVkIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdCAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eSAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBpZ24gZm10IGZtdHR5IC0+XG4gIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSBpblxuICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChpZ24sIGZtdCcpLCBmbXR0eScpXG5cbigqIFR5cGluZyBvZiB0aGUgY29tcGxleCBjYXNlOiBcIiVfKC4uLiUpXCIuICopXG5hbmQgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gOiB0eXBlIHcgeCB5IHogcCBzIHQgdSBhIGIgYyBkIGUgZiAuXG4gICAgKHcsIHgsIHksIHosIHMsIHApIGZtdHR5IC0+XG4gICAgKHAsIHgsIHksIHMsIHQsIHUpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlfZm10X2ViYiA9XG5mdW4gc3ViX2ZtdHR5IGZtdCBmbXR0eSAtPiBtYXRjaCBzdWJfZm10dHksIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQzMl90eSBzdWJfZm10dHlfcmVzdCwgSW50MzJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCwgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDY0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBGbG9hdF90eSBzdWJfZm10dHlfcmVzdCwgRmxvYXRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QsIEJvb2xfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQm9vbF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBUaGV0YV90eSBzdWJfZm10dHlfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHksIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViMl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViMl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIHN1Yl9mbXR0eV9yZXN0JyksIGZtdCcpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5LCAgc3ViMl9mbXR0eSwgIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICAoKiBUT0RPIGRlZmluZSBGbXR0eV9yZWxfRUJCIHRvIHJlbW92ZSB0aG9zZSBlcmFzZV9yZWwgKilcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBzdWJfZm10dHknID0gdHJhbnMgKHN5bW0gc3ViMV9mbXR0eScpIHN1YjJfZm10dHknIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgc3ViX2ZtdHR5JyBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIChlcmFzZV9yZWwgc3ViX2ZtdHR5X3Jlc3QpIGZtdCBmbXR0eV9yZXN0XG4gICAgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bW0gc3ViX2ZtdHR5X3Jlc3QnKSxcbiAgICAgICAgICAgICAgICAgICBmbXQnKVxuICB8IEVuZF9vZl9mbXR0eSwgZm10dHkgLT5cbiAgICBGbXR0eV9mbXRfRUJCIChFbmRfb2ZfZm10dHksIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYHJlY2FzdGAgaXMgYSBiaXQgZGlzYXBwb2ludGluZy4gVGhlXG4gICBpbnZhcmlhbnQgcHJvdmlkZWQgYnkgdGhlIHR5cGUgYXJlIHZlcnkgc3Ryb25nOiB0aGUgaW5wdXQgZm9ybWF0J3NcbiAgIHR5cGUgaXMgaW4gcmVsYXRpb24gdG8gdGhlIG91dHB1dCB0eXBlJ3MgYXMgd2l0bmVzc2VkIGJ5IHRoZVxuICAgZm10dHlfcmVsIGFyZ3VtZW50LiBPbmUgd291bGQgYXQgZmlyc3QgZXhwZWN0IHRoaXMgZnVuY3Rpb24gdG8gYmVcbiAgIHRvdGFsLCBhbmQgaW1wbGVtZW50YWJsZSBieSBleGhhdXN0aXZlIHBhdHRlcm4gbWF0Y2hpbmcuIEluc3RlYWQsXG4gICB3ZSByZXVzZSB0aGUgaGlnaGx5IHBhcnRpYWwgYW5kIG11Y2ggbGVzcyB3ZWxsLWRlZmluZWQgZnVuY3Rpb25cbiAgIGB0eXBlX2Zvcm1hdGAgdGhhdCBoYXMgbG9zdCBhbGwga25vd2xlZGdlIG9mIHRoZSBjb3JyZXNwb25kZW5jZVxuICAgYmV0d2VlbiB0aGUgYXJndW1lbnQncyB0eXBlcy5cblxuICAgQmVzaWRlcyB0aGUgZmFjdCB0aGF0IHRoaXMgZnVuY3Rpb24gcmV1c2VzIGEgbG90IG9mIHRoZVxuICAgYHR5cGVfZm9ybWF0YCBsb2dpYyAoZWcuOiBzZWVpbmcgSW50X3R5IGluIHRoZSBmbXR0eSBwYXJhbWV0ZXIgZG9lc1xuICAgbm90IGxldCB5b3UgbWF0Y2ggb24gSW50IG9ubHksIGFzIHlvdSBtYXkgaW4gZmFjdCBoYXZlIEZsb2F0XG4gICAoQXJnX3BhZGRpbmcsIC4uLikgKFwiJS4qZFwiKSBiZWdpbm5pbmcgd2l0aCBhbiBJbnRfdHkpLCBpdCBpcyBhbHNvXG4gICBhIHBhcnRpYWwgZnVuY3Rpb24sIGJlY2F1c2UgdGhlIHR5cGluZyBpbmZvcm1hdGlvbiBpbiBhIGZvcm1hdCBpc1xuICAgbm90IHF1aXRlIGVub3VnaCB0byByZWNvbnN0cnVjdCBpdCB1bmFtYmlndW91c2x5LiBGb3IgZXhhbXBsZSwgdGhlXG4gICBmb3JtYXQgdHlwZXMgb2YgXCIlZCVfclwiIGFuZCBcIiVfciVkXCIgaGF2ZSB0aGUgc2FtZSBmb3JtYXQ2XG4gICBwYXJhbWV0ZXJzLCBidXQgdGhleSBhcmUgbm90IGF0IGFsbCBleGNoYW5nZWFibGUsIGFuZCBwdXR0aW5nIG9uZVxuICAgaW4gcGxhY2Ugb2YgdGhlIG90aGVyIG11c3QgcmVzdWx0IGluIGEgZHluYW1pYyBmYWlsdXJlLlxuXG4gICBHaXZlbiB0aGF0OlxuICAgLSB3ZSdkIGhhdmUgdG8gZHVwbGljYXRlIGEgbG90IG9mIG5vbi10cml2aWFsIHR5cGluZyBsb2dpYyBmcm9tIHR5cGVfZm9ybWF0XG4gICAtIHRoaXMgd291bGRuJ3QgZXZlbiBlbGltaW5hdGUgKGFsbCkgdGhlIGR5bmFtaWMgZmFpbHVyZXNcbiAgIHdlIGRlY2lkZWQgdG8ganVzdCByZXVzZSB0eXBlX2Zvcm1hdCBkaXJlY3RseSBmb3Igbm93LlxuKilcbmxldCByZWNhc3QgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPlxuICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFByaW50aW5nIHRvb2xzICopXG5cbigqIEFkZCBwYWRkaW5nIHNwYWNlcyBhcm91bmQgYSBzdHJpbmcuICopXG5sZXQgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCwgcGFkdHkgPVxuICAgIGFicyB3aWR0aCxcbiAgICAoKiB3aGlsZSBsaXRlcmFsIHBhZGRpbmcgd2lkdGhzIGFyZSBhbHdheXMgbm9uLW5lZ2F0aXZlLFxuICAgICAgIGR5bmFtaWNhbGx5LXNldCB3aWR0aHMgKEFyZ19wYWRkaW5nLCBlZy4gJSpkKSBtYXkgYmUgbmVnYXRpdmU7XG4gICAgICAgd2UgaW50ZXJwcmV0IHRob3NlIGFzIHNwZWNpZnlpbmcgYSBwYWRkaW5nLXRvLXRoZS1sZWZ0OyB0aGlzXG4gICAgICAgbWVhbnMgdGhhdCAnMCcgbWF5IGdldCBkcm9wcGVkIGV2ZW4gaWYgaXQgd2FzIGV4cGxpY2l0bHkgc2V0LFxuICAgICAgIGJ1dDpcbiAgICAgICAtIHRoaXMgaXMgd2hhdCB0aGUgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRvZXMsIGFuZFxuICAgICAgICAgd2UgcHJlc2VydmUgY29tcGF0aWJpbGl0eSBpZiBwb3NzaWJsZVxuICAgICAgIC0gd2UgY291bGQgb25seSBzaWduYWwgdGhpcyBpc3N1ZSBieSBmYWlsaW5nIGF0IHJ1bnRpbWUsXG4gICAgICAgICB3aGljaCBpcyBub3QgdmVyeSBuaWNlLi4uICopXG4gICAgaWYgd2lkdGggPCAwIHRoZW4gTGVmdCBlbHNlIHBhZHR5IGluXG4gIGlmIHdpZHRoIDw9IGxlbiB0aGVuIHN0ciBlbHNlXG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2Ugd2lkdGggKGlmIHBhZHR5ID0gWmVyb3MgdGhlbiAnMCcgZWxzZSAnICcpIGluXG4gICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgIHwgTGVmdCAgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzIDAgbGVuXG4gICAgfCBSaWdodCAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMCAmJiAoc3RyLlswXSA9ICcrJyB8fCBzdHIuWzBdID0gJy0nIHx8IHN0ci5bMF0gPSAnICcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDAgc3RyLlswXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAod2lkdGggLSBsZW4gKyAxKSAobGVuIC0gMSlcbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMSAmJiBzdHIuWzBdID0gJzAnICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAod2lkdGggLSBsZW4gKyAyKSAobGVuIC0gMilcbiAgICB8IFplcm9zIC0+XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICBlbmQ7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQWRkICcwJyBwYWRkaW5nIHRvIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBzdHJpbmcgcmVwcmVzZW50YXRpb24uICopXG5sZXQgZml4X2ludF9wcmVjaXNpb24gcHJlYyBzdHIgPVxuICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBtYXRjaCBzdHIuWzBdIHdpdGhcbiAgfCAoJysnIHwgJy0nIHwgJyAnKSBhcyBjIHdoZW4gcHJlYyArIDEgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDEpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMCBjO1xuICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAocHJlYyAtIGxlbiArIDIpIChsZW4gLSAxKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyB3aGVuIHByZWMgKyAyID4gbGVuICYmIGxlbiA+IDEgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDIpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAocHJlYyAtIGxlbiArIDQpIChsZW4gLSAyKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyB3aGVuIHByZWMgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSBwcmVjICcwJyBpblxuICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAocHJlYyAtIGxlbikgbGVuO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgXyAtPlxuICAgIHN0clxuXG4oKiBFc2NhcGUgYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpbmcgY29udmVudGlvbi4gKilcbmxldCBzdHJpbmdfdG9fY2FtbF9zdHJpbmcgc3RyID1cbiAgbGV0IHN0ciA9IFN0cmluZy5lc2NhcGVkIHN0ciBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcXCInIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2ludC9pbnQzMi9uYXRpdmVpbnQvaW50NjQgZmlyc3QgYXJndW1lbnRcbiAgIGZyb20gYW4gaW50X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2ljb252ID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVkXCIgfCBJbnRfcGQgLT4gXCIlK2RcIiB8IEludF9zZCAtPiBcIiUgZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlaVwiIHwgSW50X3BpIC0+IFwiJStpXCIgfCBJbnRfc2kgLT4gXCIlIGlcIlxuICB8IEludF94IC0+IFwiJXhcIiB8IEludF9DeCAtPiBcIiUjeFwiXG4gIHwgSW50X1ggLT4gXCIlWFwiIHwgSW50X0NYIC0+IFwiJSNYXCJcbiAgfCBJbnRfbyAtPiBcIiVvXCIgfCBJbnRfQ28gLT4gXCIlI29cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJXVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252TCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlTGRcIiB8IEludF9wZCAtPiBcIiUrTGRcIiB8IEludF9zZCAtPiBcIiUgTGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJUxpXCIgfCBJbnRfcGkgLT4gXCIlK0xpXCIgfCBJbnRfc2kgLT4gXCIlIExpXCJcbiAgfCBJbnRfeCAtPiBcIiVMeFwiIHwgSW50X0N4IC0+IFwiJSNMeFwiXG4gIHwgSW50X1ggLT4gXCIlTFhcIiB8IEludF9DWCAtPiBcIiUjTFhcIlxuICB8IEludF9vIC0+IFwiJUxvXCIgfCBJbnRfQ28gLT4gXCIlI0xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVMdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZsID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVsZFwiIHwgSW50X3BkIC0+IFwiJStsZFwiIHwgSW50X3NkIC0+IFwiJSBsZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbGlcIiB8IEludF9waSAtPiBcIiUrbGlcIiB8IEludF9zaSAtPiBcIiUgbGlcIlxuICB8IEludF94IC0+IFwiJWx4XCIgfCBJbnRfQ3ggLT4gXCIlI2x4XCJcbiAgfCBJbnRfWCAtPiBcIiVsWFwiIHwgSW50X0NYIC0+IFwiJSNsWFwiXG4gIHwgSW50X28gLT4gXCIlbG9cIiB8IEludF9DbyAtPiBcIiUjbG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJWx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udm4gPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJW5kXCIgfCBJbnRfcGQgLT4gXCIlK25kXCIgfCBJbnRfc2QgLT4gXCIlIG5kXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVuaVwiIHwgSW50X3BpIC0+IFwiJStuaVwiIHwgSW50X3NpIC0+IFwiJSBuaVwiXG4gIHwgSW50X3ggLT4gXCIlbnhcIiB8IEludF9DeCAtPiBcIiUjbnhcIlxuICB8IEludF9YIC0+IFwiJW5YXCIgfCBJbnRfQ1ggLT4gXCIlI25YXCJcbiAgfCBJbnRfbyAtPiBcIiVub1wiIHwgSW50X0NvIC0+IFwiJSNub1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbnVcIlxuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2Zsb2F0IGZpcnN0IGFyZ3VtZW50IGZyb20gYSBmbG9hdF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjID1cbiAgICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gICAgbGV0IHN5bWIgPSBjaGFyX29mX2Zjb252IH5jRjonZycgZmNvbnYgaW5cbiAgICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgcHJlYyk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBzeW1iO1xuICAgIGJ1ZmZlcl9jb250ZW50cyBidWZcblxubGV0IHRyYW5zZm9ybV9pbnRfYWx0IGljb252IHMgPVxuICBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgbGV0IGRpZ2l0cyA9XG4gICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICB8ICcwJy4uJzknIC0+IGluY3IgblxuICAgICAgICB8IF8gLT4gKClcbiAgICAgIGRvbmU7XG4gICAgICAhblxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgKGRpZ2l0cyAtIDEpIC8gMykgaW5cbiAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICBsZXQgcHV0IGMgPSBCeXRlcy5zZXQgYnVmICFwb3MgYzsgaW5jciBwb3MgaW5cbiAgICBsZXQgbGVmdCA9IHJlZiAoKGRpZ2l0cyAtIDEpIG1vZCAzICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgJzAnLi4nOScgYXMgYyAtPlxuICAgICAgICAgIGlmICFsZWZ0ID0gMCB0aGVuIChwdXQgJ18nOyBsZWZ0IDo9IDMpOyBkZWNyIGxlZnQ7IHB1dCBjXG4gICAgICB8IGMgLT4gcHV0IGNcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gIHwgXyAtPiBzXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gYSBjb252ZXJzaW9uLiAqKVxubGV0IGNvbnZlcnRfaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludCAoZm9ybWF0X29mX2ljb252IGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50MzIgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50MzIgKGZvcm1hdF9vZl9pY29udmwgaWNvbnYpIG4pXG5sZXQgY29udmVydF9uYXRpdmVpbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfbmF0aXZlaW50IChmb3JtYXRfb2ZfaWNvbnZuIGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50NjQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50NjQgKGZvcm1hdF9vZl9pY29udkwgaWNvbnYpIG4pXG5cbigqIENvbnZlcnQgYSBmbG9hdCB0byBzdHJpbmcuICopXG4oKiBGaXggc3BlY2lhbCBjYXNlIG9mIFwiT0NhbWwgZmxvYXQgZm9ybWF0XCIuICopXG5sZXQgY29udmVydF9mbG9hdCBmY29udiBwcmVjIHggPVxuICBsZXQgaGV4ICgpID1cbiAgICBsZXQgc2lnbiA9XG4gICAgICBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICAgICAgfCBGbG9hdF9mbGFnX3AgLT4gJysnXG4gICAgICB8IEZsb2F0X2ZsYWdfcyAtPiAnICdcbiAgICAgIHwgXyAtPiAnLScgaW5cbiAgICBoZXhzdHJpbmdfb2ZfZmxvYXQgeCBwcmVjIHNpZ24gaW5cbiAgbGV0IGFkZF9kb3RfaWZfbmVlZGVkIHN0ciA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBpc192YWxpZCBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcuJyB8ICdlJyB8ICdFJyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBpc192YWxpZCAoaSArIDEpIGluXG4gICAgaWYgaXNfdmFsaWQgMCB0aGVuIHN0ciBlbHNlIHN0ciBeIFwiLlwiIGluXG4gIGxldCBjYW1sX3NwZWNpYWxfdmFsIHN0ciA9IG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfemVybyAtPiBzdHJcbiAgICB8IEZQX2luZmluaXRlIC0+IGlmIHggPCAwLjAgdGhlbiBcIm5lZ19pbmZpbml0eVwiIGVsc2UgXCJpbmZpbml0eVwiXG4gICAgfCBGUF9uYW4gLT4gXCJuYW5cIiBpblxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ggLT4gaGV4ICgpXG4gIHwgRmxvYXRfSCAtPiBTdHJpbmcudXBwZXJjYXNlX2FzY2lpIChoZXggKCkpXG4gIHwgRmxvYXRfQ0YgLT4gY2FtbF9zcGVjaWFsX3ZhbCAoaGV4ICgpKVxuICB8IEZsb2F0X0YgLT5cbiAgICBsZXQgc3RyID0gZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeCBpblxuICAgIGNhbWxfc3BlY2lhbF92YWwgKGFkZF9kb3RfaWZfbmVlZGVkIHN0cilcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyAtPlxuICAgIGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHhcblxuKCogQ29udmVydCBhIGNoYXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgZm9ybWF0X2NhbWxfY2hhciBjID1cbiAgbGV0IHN0ciA9IENoYXIuZXNjYXBlZCBjIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFwnJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQ29udmVydCBhIGZvcm1hdCB0eXBlIHRvIHN0cmluZyAqKVxubGV0IHN0cmluZ19vZl9mbXR0eSBmbXR0eSA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXR0eSBidWYgZm10dHk7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24gKilcblxuKCogTWFrZSBhIGdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24uICopXG4oKiBVc2VkIHRvIGdlbmVyYXRlIFByaW50ZiBhbmQgRm9ybWF0IHByaW50aW5nIGZ1bmN0aW9ucy4gKilcbigqIFBhcmFtZXRlcnM6XG4gICAgIGs6IGEgY29udGludWF0aW9uIGZpbmFsbHkgYXBwbGllZCB0byB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgdGhlIGFjY3VtdWxhdG9yLlxuICAgICBvOiB0aGUgb3V0cHV0IHN0cmVhbSAoc2VlIGssICVhIGFuZCAldCkuXG4gICAgIGFjYzogcmV2IGxpc3Qgb2YgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1c2gsIGZvcm1hdHRpbmcsIC4uLikuXG4gICAgIGZtdDogdGhlIGZvcm1hdC4gKilcbmxldCByZWMgbWFrZV9wcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9jYW1sX2NoYXIgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIChmdW4gc3RyIC0+IHN0cilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfdG9fY2FtbF9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludCBpY29udlxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQzMiBpY29udlxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfbmF0aXZlaW50IGljb252XG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDY0IGljb252XG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGZjb252XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfb2ZfYm9vbFxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBmdW4gZiB4IC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmdW4gbyAtPiBmIG8geCkpIHJlc3RcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgZnVuIGYgLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmICgpKVxuICB8IFJlYWRlciBfIC0+XG4gICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAqKVxuICAgICgqIEluZGVlZCwgc2luY2UgcHJpbnRmIGFuZCBjby4gdGFrZSBhIGZvcm1hdDQgYXMgYXJndW1lbnQsIHRoZSAnZCBhbmQgJ2VcbiAgICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgZm10IGFyZSBvYnZpb3VzbHkgZXF1YWxzLiBUaGUgUmVhZGVyIGlzIHRoZVxuICAgICAgIG9ubHkgY29uc3RydWN0b3Igd2hpY2ggdG91Y2ggJ2QgYW5kICdlIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgZm9ybWF0XG4gICAgICAgdHlwZSwgaXQgYWRkcyBhbiAoLT4pIHRvIHRoZSAnZCBwYXJhbWV0ZXJzLiBDb25zZXF1ZW50bHksIGEgZm9ybWF0NFxuICAgICAgIGNhbm5vdCBjb250YWluIGEgUmVhZGVyIG5vZGUsIGV4Y2VwdCBpbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvXG4gICAgICAgYW4gJXsuLi4lfS4gSXQncyBub3QgYSBwcm9ibGVtIGJlY2F1c2UgbWFrZV9wcmludGYgZG8gbm90IGNhbGxcbiAgICAgICBpdHNlbGYgcmVjdXJzaXZlbHkgb24gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0byAley4uLiV9LiAqKVxuICAgIGFzc2VydCBmYWxzZVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZmx1c2ggYWNjKSByZXN0XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19zdHJpbmdfbGl0ZXJhbCAoYWNjLCBzdHIpKSByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2NoYXJfbGl0ZXJhbCAoYWNjLCBjaHIpKSByZXN0XG5cbiAgfCBGb3JtYXRfYXJnIChfLCBzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gc3RyaW5nX29mX2ZtdHR5IHN1Yl9mbXR0eSBpblxuICAgIChmdW4gc3RyIC0+XG4gICAgICBpZ25vcmUgc3RyO1xuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHR5KSkgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPiBtYWtlX3ByaW50ZiBrIGFjY1xuICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgIGxldCBuZXdfYWNjID0gQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlW1wiKSBpblxuICAgIGZ1biBfIC0+IG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIGJlIHJlZnVzZWQgZm9yIFByaW50Zi4gKilcbiAgICAoKiBBY2NlcHRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gKilcbiAgICAoKiBJbnRlcnByZXQgJWwsICVuIGFuZCAlTCBhcyAldS4gKilcbiAgICBmdW4gbiAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2ludCBcIiV1XCIgbikgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIG1ha2VfaWdub3JlZF9wYXJhbSBrIGFjYyBpZ24gcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfbGl0IChhY2MsIGZtdGluZ19saXQpKSByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fdGFnIGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fYm94IGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgayBhY2NcblxuKCogRGVsYXkgdGhlIGVycm9yIChJbnZhbGlkX2FyZ3VtZW50IFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKS4gKilcbigqIEdlbmVyYXRlIGZ1bmN0aW9ucyB0byB0YWtlIHJlbWFpbmluZyBhcmd1bWVudHMgKGFmdGVyIHRoZSBcIiVfXCIpLiAqKVxuYW5kIG1ha2VfaWdub3JlZF9wYXJhbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG5cblxuKCogU3BlY2lhbCBjYXNlIG9mIHByaW50ZiBcIiVfKFwiLiAqKVxuYW5kIG1ha2VfZnJvbV9mbXR0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGZtdHR5IC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgUmVhZGVyX3R5IF8gICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIEluc2VydCBhbiBBY2NfaW52YWxpZF9hcmcgaW4gdGhlIGFjY3VtdWxhdG9yIGFuZCBjb250aW51ZSB0byBnZW5lcmF0ZVxuICAgY2xvc3VyZXMgdG8gZ2V0IHRoZSByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuYW5kIG1ha2VfaW52YWxpZF9hcmcgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT5cbiAgbWFrZV9wcmludGYgayAoQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKSkgZm10XG5cbigqIEZpeCBwYWRkaW5nLCB0YWtlIGl0IGFzIGFuIGV4dHJhIGludGVnZXIgYXJndW1lbnQgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfcGFkZGluZyA6IHR5cGUgeCB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB6IC0+IGEpIHBhZGRpbmcgLT4gKHogLT4gc3RyaW5nKSAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgdHJhbnMgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIHRyYW5zIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG5cbigqIEZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gZm9yIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NC4gKilcbigqIFRha2Ugb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiAoaW50X2NvbnYgLT4geiAtPiBzdHJpbmcpIC0+XG4gICAgaW50X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgdHJhbnMgaWNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IHRyYW5zIGljb252IHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcblxuKCogQ29udmVydCBhIGZsb2F0LCBmaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGlmIG5lZWRlZC4gKilcbigqIFRha2UgdGhlIGZsb2F0IGFyZ3VtZW50IGFuZCBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIGZsb2F0IC0+IGEpIHByZWNpc2lvbiAtPiBmbG9hdF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIGZjb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5hbmQgbWFrZV9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHggLT4geSA9XG4gIGZ1biBrIGFjYyByZXN0IGFyaXR5IGYgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgZnVuIHggLT5cbiAgICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgeClcblxubGV0IGNvbnN0IHggXyA9IHhcblxubGV0IHJlYyBtYWtlX2lwcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbiAgZnVuIGsgbyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQ2FtbF9zdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgQm9vbCAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX2N1c3RvbV9hcml0eSBrIG8gcmVzdCBhcml0eVxuICAgIHwgUmVhZGVyIF8gLT5cbiAgICAgICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAgU2VlIHRoZVxuICAgICAgICAgICBub3RlIGluIHRoZSBjb3JyZXNwb25kaW5nIGNhc2UgZm9yIG1ha2VfcHJpbnRmLiAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPlxuICAgICAgICAgIG1ha2VfaXByaW50ZiBrIG9cbiAgICAgICAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuICAgIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaWdub3JlZF9wYXJhbSAoZnVuIF8gLT4gayBvKSAoRW5kX29mX2FjYykgaWduIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgICAgICBrIG9cbmFuZCBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiA6XG4gIHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiB4ID1cbiAgZnVuIGsgbyBmbXQgcGFkIHByZWMgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAsIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKSlcbmFuZCBmbl9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+XG4gIHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB5ID1cbiAgZnVuIGsgbyBmbXQgLT4gZnVuY3Rpb25cbiAgICB8IEN1c3RvbV96ZXJvIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gZm10XG4gICAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgICAgICBjb25zdCAoZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyBmbXQgYXJpdHkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnRpbnVhdGlvbnMgZm9yIG1ha2VfcHJpbnRmICopXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgbyBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkB7XCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkBbXCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9jaGFyIG8gY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZiBvXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmbHVzaCBvXG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgbyBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBidWZwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDsgZiBiXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBidWZwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgJWEgYW5kICV0LiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGYgKCkpXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFcnJvciBtYW5hZ2VtZW50ICopXG5cbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgcHJldHR5LXByaW50ZWQgZXJyb3IgbWVzc2FnZS4gKilcbmxldCBmYWlsd2l0aF9tZXNzYWdlIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjU2IGluXG4gIGxldCBrIGFjYyA9IHN0cnB1dF9hY2MgYnVmIGFjYzsgZmFpbHdpdGggKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXR0aW5nIHRvb2xzICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYW4gb3BlbiBibG9jayBkZXNjcmlwdGlvbiAoaW5kZW50LCBibG9ja190eXBlKSAqKVxubGV0IG9wZW5fYm94X29mX3N0cmluZyBzdHIgPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gKDAsIFBwX2JveCkgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCBpbnZhbGlkX2JveCAoKSA9IGZhaWx3aXRoX21lc3NhZ2UgXCJpbnZhbGlkIGJveCBkZXNjcmlwdGlvbiAlU1wiIHN0ciBpblxuICAgIGxldCByZWMgcGFyc2Vfc3BhY2VzIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGkgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyAtPiBwYXJzZV9zcGFjZXMgKGkgKyAxKVxuICAgICAgICB8IF8gLT4gaVxuICAgIGFuZCBwYXJzZV9sd29yZCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnYScgLi4gJ3onIC0+IHBhcnNlX2x3b3JkIGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4galxuICAgIGFuZCBwYXJzZV9pbnQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBwYXJzZV9pbnQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqIGluXG4gICAgbGV0IHdzdGFydCA9IHBhcnNlX3NwYWNlcyAwIGluXG4gICAgbGV0IHdlbmQgPSBwYXJzZV9sd29yZCB3c3RhcnQgd3N0YXJ0IGluXG4gICAgbGV0IGJveF9uYW1lID0gU3RyaW5nLnN1YiBzdHIgd3N0YXJ0ICh3ZW5kIC0gd3N0YXJ0KSBpblxuICAgIGxldCBuc3RhcnQgPSBwYXJzZV9zcGFjZXMgd2VuZCBpblxuICAgIGxldCBuZW5kID0gcGFyc2VfaW50IG5zdGFydCBuc3RhcnQgaW5cbiAgICBsZXQgaW5kZW50ID1cbiAgICAgIGlmIG5zdGFydCA9IG5lbmQgdGhlbiAwIGVsc2VcbiAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgKFN0cmluZy5zdWIgc3RyIG5zdGFydCAobmVuZCAtIG5zdGFydCkpXG4gICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgbGV0IGV4cF9lbmQgPSBwYXJzZV9zcGFjZXMgbmVuZCBpblxuICAgIGlmIGV4cF9lbmQgPD4gbGVuIHRoZW4gaW52YWxpZF9ib3ggKCk7XG4gICAgbGV0IGJveF90eXBlID0gbWF0Y2ggYm94X25hbWUgd2l0aFxuICAgICAgfCBcIlwiIHwgXCJiXCIgLT4gUHBfYm94XG4gICAgICB8IFwiaFwiICAgICAgLT4gUHBfaGJveFxuICAgICAgfCBcInZcIiAgICAgIC0+IFBwX3Zib3hcbiAgICAgIHwgXCJodlwiICAgICAtPiBQcF9odmJveFxuICAgICAgfCBcImhvdlwiICAgIC0+IFBwX2hvdmJveFxuICAgICAgfCBfICAgICAgICAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIChpbmRlbnQsIGJveF90eXBlKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFBhcnNpbmcgdG9vbHMgKilcblxuKCogQ3JlYXRlIGEgcGFkZGluZ19mbXRfZWJiIGZyb20gYSBwYWRkaW5nIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHBhZGRpbmdfZm10X2ViYiA9XG5mdW4gcGFkIGZtdCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIGZtdClcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkZGluZ19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIGZtdClcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBmbXQpXG5cbigqIENyZWF0ZSBhIHByZWNpc2lvbl9mbXRfZWJiIGZyb20gYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHByZWNpc2lvbiAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcHJlY2lzaW9uX2ZtdF9lYmIgPVxuZnVuIHByZWMgZm10IC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAgICAtPiBQcmVjaXNpb25fZm10X0VCQiAoTm9fcHJlY2lzaW9uLCBmbXQpXG4gIHwgTGl0X3ByZWNpc2lvbiBwIC0+IFByZWNpc2lvbl9mbXRfRUJCIChMaXRfcHJlY2lzaW9uIHAsIGZtdClcbiAgfCBBcmdfcHJlY2lzaW9uICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKEFyZ19wcmVjaXNpb24sIGZtdClcblxuKCogQ3JlYXRlIGEgcGFkcHJlY19mbXRfZWJiIGZyb20gYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIGFuZCB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50c1xuICAgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZHByZWNfZm10X2ViYiA6IHR5cGUgeCB5IHogdCAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPlxuICAgIChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAoXywgXywgXywgXywgXykgcGFkcHJlY19mbXRfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXQgLT5cbiAgbGV0IFByZWNpc2lvbl9mbXRfRUJCIChwcmVjLCBmbXQnKSA9IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgcHJlYyBmbXQgaW5cbiAgbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChOb19wYWRkaW5nLCBwcmVjLCBmbXQnKVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRwcmVjX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgcHJlYywgZm10JylcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBwcmVjLCBmbXQnKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcGFyc2luZyAqKVxuXG4oKiBQYXJzZSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBmb3JtYXQgYW5kIGNyZWF0ZSBhIGZtdF9lYmIuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gaW4gY2FzZSBvZiBpbnZhbGlkIGZvcm1hdC4gKilcbmxldCBmbXRfZWJiX29mX3N0cmluZyA/bGVnYWN5X2JlaGF2aW9yIHN0ciA9XG4gICgqIFBhcmFtZXRlcnMgbmFtaW5nIGNvbnZlbnRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGxpdF9zdGFydDogc3RhcnQgb2YgdGhlIGxpdGVyYWwgc2VxdWVuY2UuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3RyX2luZDogY3VycmVudCBpbmRleCBpbiB0aGUgc3RyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBlbmRfaW5kOiBlbmQgb2YgdGhlIGN1cnJlbnQgKHN1Yi0pZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHBjdF9pbmQ6IGluZGV4IG9mIHRoZSAnJScgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAqKVxuICAoKiAgIC0gemVybzogIGlzIHRoZSAnMCcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBtaW51czogaXMgdGhlICctJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBsdXM6ICBpcyB0aGUgJysnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaGFzaDogIGlzIHRoZSAnIycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBzcGFjZTogaXMgdGhlICcgJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGlnbjogICBpcyB0aGUgJ18nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGFkOiBwYWRkaW5nIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwcmVjOiBwcmVjaXNpb24gb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN5bWI6IGNoYXIgcmVwcmVzZW50aW5nIHRoZSBjb252ZXJzaW9uICgnYycsICdzJywgJ2QnLCAuLi4pLiAqKVxuICAoKiAgIC0gY2hhcl9zZXQ6IHNldCBvZiBjaGFyYWN0ZXJzIGFzIGJpdG1hcCAoc2VlIHNjYW5mICVbLi4uXSkuICAgICopXG5cbiAgbGV0IGxlZ2FjeV9iZWhhdmlvciA9IG1hdGNoIGxlZ2FjeV9iZWhhdmlvciB3aXRoXG4gICAgfCBTb21lIGZsYWcgLT4gZmxhZ1xuICAgIHwgTm9uZSAtPiB0cnVlXG4gICgqICBXaGVuIHRoaXMgZmxhZyBpcyBlbmFibGVkLCB0aGUgZm9ybWF0IHBhcnNlciB0cmllcyB0byBiZWhhdmUgYXNcbiAgICAgIHRoZSA8NC4wMiBpbXBsZW1lbnRhdGlvbnMsIGluIHBhcnRpY3VsYXIgaXQgaWdub3JlcyBtb3N0IGJlbmluZVxuICAgICAgbm9uc2Vuc2ljYWwgZm9ybWF0LiBXaGVuIHRoZSBmbGFnIGlzIGRpc2FibGVkLCBpdCB3aWxsIHJlamVjdCBhbnlcbiAgICAgIGZvcm1hdCB0aGF0IGlzIG5vdCBhY2NlcHRlZCBieSB0aGUgc3BlY2lmaWNhdGlvbi5cblxuICAgICAgQSB0eXBpY2FsIGV4YW1wbGUgd291bGQgYmUgXCIlKyBkXCI6IHNwZWNpZnlpbmcgYm90aCAnKycgKGlmIHRoZVxuICAgICAgbnVtYmVyIGlzIHBvc2l0aXZlLCBwYWQgd2l0aCBhICcrJyB0byBnZXQgdGhlIHNhbWUgd2lkdGggYXNcbiAgICAgIG5lZ2F0aXZlIG51bWJlcnMpIGFuZCAnICcgKGlmIHRoZSBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoXG4gICAgICBhIHNwYWNlKSBkb2VzIG5vdCBtYWtlIHNlbnNlLCBidXQgdGhlIGxlZ2FjeSAoPCA0LjAyKVxuICAgICAgaW1wbGVtZW50YXRpb24gd2FzIGhhcHB5IHRvIGp1c3QgaWdub3JlIHRoZSBzcGFjZS5cbiAgKilcbiAgaW5cblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UuICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIHN0cl9pbmQgbXNnID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlc1wiXG4gICAgICBzdHIgc3RyX2luZCBtc2dcbiAgaW5cblxuICAoKiBVc2VkIHdoZW4gdGhlIGVuZCBvZiB0aGUgZm9ybWF0IChvciB0aGUgY3VycmVudCBzdWItZm9ybWF0KSB3YXMgZW5jb3VudGVyZWRcbiAgICAgIHVuZXhwZWN0ZWRseS4gKilcbiAgbGV0IHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kID1cbiAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIGVuZF9pbmRcbiAgICAgIFwidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0XCJcbiAgaW5cblxuICAoKiBVc2VkIGZvciAlMGM6IG5vIG90aGVyIHdpZHRocyBhcmUgaW1wbGVtZW50ZWQgKilcbiAgbGV0IGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZFxuICAgICAgXCJub24temVybyB3aWR0aHMgYXJlIHVuc3VwcG9ydGVkIGZvciAlYyBjb252ZXJzaW9uc1wiXG4gIGluXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiBvcHRpb24gZGVwZW5kZW5jeVxuICAgICBwcm9ibGVtLiAqKVxuICBsZXQgaW52YWxpZF9mb3JtYXRfd2l0aG91dCBzdHJfaW5kIGMgcyA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJyVjJyB3aXRob3V0ICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIGMgc1xuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiB1bmV4cGVjdGVkXG4gICAgIGNoYXJhY3Rlci4gKilcbiAgbGV0IGV4cGVjdGVkX2NoYXJhY3RlciBzdHJfaW5kIGV4cGVjdGVkIHJlYWQgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXMgZXhwZWN0ZWQsIHJlYWQgJUNcIlxuICAgICAgc3RyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZFxuICBpblxuXG4gICgqIFBhcnNlIHRoZSBzdHJpbmcgZnJvbSBiZWdfaW5kIChpbmNsdWRlZCkgdG8gZW5kX2luZCAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIHBhcnNlIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGJlZ19pbmQgZW5kX2luZCAtPiBwYXJzZV9saXRlcmFsIGJlZ19pbmQgYmVnX2luZCBlbmRfaW5kXG5cbiAgKCogUmVhZCBsaXRlcmFsIGNoYXJhY3RlcnMgdXAgdG8gJyUnIG9yICdAJyBzcGVjaWFsIGNoYXJhY3RlcnMuICopXG4gIGFuZCBwYXJzZV9saXRlcmFsIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBFbmRfb2ZfZm9ybWF0IGVsc2VcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZV9mb3JtYXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2FmdGVyX2F0IChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBmbXRfcmVzdFxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX2xpdGVyYWwgbGl0X3N0YXJ0IChzdHJfaW5kICsgMSkgZW5kX2luZFxuXG4gICgqIFBhcnNlIGEgZm9ybWF0IGFmdGVyICclJyAqKVxuICBhbmQgcGFyc2VfZm9ybWF0IDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgZW5kX2luZCAtPiBwYXJzZV9pZ24gcGN0X2luZCAocGN0X2luZCArIDEpIGVuZF9pbmRcblxuICBhbmQgcGFyc2VfaWduIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdfJyAtPiBwYXJzZV9mbGFncyBwY3RfaW5kIChzdHJfaW5kKzEpIGVuZF9pbmQgdHJ1ZVxuICAgICAgfCBfIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGZhbHNlXG5cbiAgYW5kIHBhcnNlX2ZsYWdzIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiXG4gID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGlnbiAtPlxuICAgIGxldCB6ZXJvID0gcmVmIGZhbHNlIGFuZCBtaW51cyA9IHJlZiBmYWxzZVxuICAgIGFuZCBwbHVzID0gcmVmIGZhbHNlIGFuZCBzcGFjZSA9IHJlZiBmYWxzZVxuICAgIGFuZCBoYXNoID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHNldF9mbGFnIHN0cl9pbmQgZmxhZyA9XG4gICAgICAoKiBpbiBsZWdhY3kgbW9kZSwgZHVwbGljYXRlIGZsYWdzIGFyZSBhY2NlcHRlZCAqKVxuICAgICAgaWYgIWZsYWcgJiYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBkdXBsaWNhdGUgZmxhZyAlQ1wiXG4gICAgICAgICAgc3RyIHN0cl9pbmQgc3RyLltzdHJfaW5kXTtcbiAgICAgIGZsYWcgOj0gdHJ1ZTtcbiAgICBpblxuICAgIGxldCByZWMgcmVhZF9mbGFncyBzdHJfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJzAnIC0+IHNldF9mbGFnIHN0cl9pbmQgemVybzsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnLScgLT4gc2V0X2ZsYWcgc3RyX2luZCBtaW51czsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcrJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHBsdXM7ICByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyMnIC0+IHNldF9mbGFnIHN0cl9pbmQgaGFzaDsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcgJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHNwYWNlOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBwYXJzZV9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kXG4gICAgICAgICAgIXplcm8gIW1pbnVzICFwbHVzICFoYXNoICFzcGFjZSBpZ25cbiAgICAgIGVuZFxuICAgIGluXG4gICAgcmVhZF9mbGFncyBzdHJfaW5kXG5cbiAgKCogVHJ5IHRvIHJlYWQgYSBkaWdpdGFsIG9yIGEgJyonIHBhZGRpbmcuICopXG4gIGFuZCBwYXJzZV9wYWRkaW5nIDogdHlwZSBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgemVybyBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFkdHkgPSBtYXRjaCB6ZXJvLCBtaW51cyB3aXRoXG4gICAgICB8IGZhbHNlLCBmYWxzZSAtPiBSaWdodFxuICAgICAgfCBmYWxzZSwgdHJ1ZSAgLT4gTGVmdFxuICAgICAgfCAgdHJ1ZSwgZmFsc2UgLT4gWmVyb3NcbiAgICAgIHwgIHRydWUsIHRydWUgIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExlZnRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJy0nIFwiMFwiIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICBsZXQgbmV3X2luZCwgd2lkdGggPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIG5ld19pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIChMaXRfcGFkZGluZyAocGFkdHksIHdpZHRoKSlcbiAgICB8ICcqJyAtPlxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIChBcmdfcGFkZGluZyBwYWR0eSlcbiAgICB8IF8gLT5cbiAgICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICAgIHwgTGVmdCAgLT5cbiAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICctJyBcInBhZGRpbmdcIjtcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgfCBaZXJvcyAtPlxuICAgICAgICAgKCogYSAnMCcgcGFkZGluZyBpbmRpY2F0aW9uIG5vdCBmb2xsb3dlZCBieSBhbnl0aGluZyBzaG91bGRcbiAgICAgICAgICAgYmUgaW50ZXJwcmV0ZWQgYXMgYSBSaWdodCBwYWRkaW5nIG9mIHdpZHRoIDAuIFRoaXMgaXMgdXNlZFxuICAgICAgICAgICBieSBzY2FubmluZyBjb252ZXJzaW9ucyAlMHMgYW5kICUwYyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICAoTGl0X3BhZGRpbmcgKFJpZ2h0LCAwKSlcbiAgICAgIHwgUmlnaHQgLT5cbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgZW5kXG5cbiAgKCogSXMgcHJlY2lzaW9uIGRlZmluZWQ/ICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wYWRkaW5nIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJy4nIC0+XG4gICAgICBwYXJzZV9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWRcbiAgICB8IHN5bWIgLT5cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgTm9fcHJlY2lzaW9uIHBhZCBzeW1iXG5cbiAgKCogUmVhZCB0aGUgZGlnaXRhbCBvciAnKicgcHJlY2lzaW9uLiAqKVxuICBhbmQgcGFyc2VfcHJlY2lzaW9uIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9saXRlcmFsIG1pbnVzIHN0cl9pbmQgPVxuICAgICAgbGV0IG5ld19pbmQsIHByZWMgPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgcGFkIChMaXRfcHJlY2lzaW9uIHByZWMpIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZFxuICAgIHwgKCcrJyB8ICctJykgYXMgc3ltYiB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPlxuICAgICAgKCogTGVnYWN5IG1vZGUgd291bGQgYWNjZXB0IGFuZCBpZ25vcmUgJysnIG9yICctJyBiZWZvcmUgdGhlXG4gICAgICAgICBpbnRlZ2VyIGRlc2NyaWJpbmcgdGhlIGRlc2lyZWQgcHJlY2lzaW9uOyBub3RlIHRoYXQgdGhpc1xuICAgICAgICAgY2Fubm90IGhhcHBlbiBmb3IgcGFkZGluZyB3aWR0aCwgYXMgJysnIGFuZCAnLScgYWxyZWFkeSBoYXZlXG4gICAgICAgICBhIHNlbWFudGljcyB0aGVyZS5cblxuICAgICAgICAgVGhhdCBzYWlkLCB0aGUgaWRlYSAoc3VwcG9ydGVkIGJ5IHRoaXMgdHdlYWspIHRoYXQgd2lkdGggYW5kXG4gICAgICAgICBwcmVjaXNpb24gbGl0ZXJhbHMgYXJlIFwiaW50ZWdlciBsaXRlcmFsc1wiIGluIHRoZSBPQ2FtbCBzZW5zZSBpc1xuICAgICAgICAgc3RpbGwgYmxhdGFudGx5IHdyb25nLCBhcyAxMjNfNDU2IG9yIDB4RkYgYXJlIHJlamVjdGVkLiAqKVxuICAgICAgcGFyc2VfbGl0ZXJhbCAobWludXMgfHwgc3ltYiA9ICctJykgKHN0cl9pbmQgKyAxKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlXG4gICAgICAgIGlnbiBwYWQgQXJnX3ByZWNpc2lvblxuICAgIHwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogbm90ZSB0aGF0IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkaWQgbm90IGlnbm9yZSAnLicgd2l0aG91dFxuICAgICAgICAgICBhIG51bWJlciAoYXMgaXQgZG9lcyBmb3IgcGFkZGluZyBpbmRpY2F0aW9ucyksIGJ1dFxuICAgICAgICAgICBpbnRlcnByZXRzIGl0IGFzICcuMCcgKilcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gMClcbiAgICAgIGVsc2VcbiAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICcuJyBcInByZWNpc2lvblwiXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIGNvbnZlcnNpb24uICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wcmVjaXNpb24gOiB0eXBlIHggeSB6IHQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgeSkgcGFkZGluZyAtPiAoeiwgdCkgcHJlY2lzaW9uIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9jb252ICh0eXBlIHUpICh0eXBlIHYpIChwYWRwcmVjIDogKHUsIHYpIHBhZGRpbmcpID1cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgcHJlYyBwYWRwcmVjIHN0ci5bc3RyX2luZF0gaW5cbiAgICAoKiBpbiBsZWdhY3kgbW9kZSwgc29tZSBmb3JtYXRzICglcyBhbmQgJVMpIGFjY2VwdCBhIHdlaXJkIG1peCBvZlxuICAgICAgIHBhZGRpbmcgYW5kIHByZWNpc2lvbiwgd2hpY2ggaXMgbWVyZ2VkIGFzIGEgc2luZ2xlIHBhZGRpbmdcbiAgICAgICBpbmZvcm1hdGlvbi4gRm9yIGV4YW1wbGUsIGluICUuMTBzIHRoZSBwcmVjaXNpb24gaXMgaW1wbGljaXRseVxuICAgICAgIHVuZGVyc3Rvb2QgYXMgcGFkZGluZyAlMTBzLCBidXQgdGhlIGxlZnQtcGFkZGluZyBjb21wb25lbnQgbWF5XG4gICAgICAgYmUgc3BlY2lmaWVkIGVpdGhlciBhcyBhIGxlZnQgcGFkZGluZyBvciBhIG5lZ2F0aXZlIHByZWNpc2lvbjpcbiAgICAgICAlLS4zcyBhbmQgJS4tM3MgYXJlIGVxdWl2YWxlbnQgdG8gJS0zcyAqKVxuICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nIC0+IChcbiAgICAgIG1hdGNoIG1pbnVzLCBwcmVjIHdpdGhcbiAgICAgICAgfCBfLCBOb19wcmVjaXNpb24gLT4gcGFyc2VfY29udiBOb19wYWRkaW5nXG4gICAgICAgIHwgZmFsc2UsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoUmlnaHQsIG4pKVxuICAgICAgICB8IHRydWUsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoTGVmdCwgbikpXG4gICAgICAgIHwgZmFsc2UsIEFyZ19wcmVjaXNpb24gLT4gcGFyc2VfY29udiAoQXJnX3BhZGRpbmcgUmlnaHQpXG4gICAgICAgIHwgdHJ1ZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBMZWZ0KVxuICAgIClcbiAgICB8IHBhZCAtPiBwYXJzZV9jb252IHBhZFxuXG4gICgqIENhc2UgYW5hbHlzaXMgb24gY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2NvbnZlcnNpb24gOiB0eXBlIHggeSB6IHQgdSB2IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+ICh4LCB5KSBwYWRkaW5nIC0+XG4gICAgICAgICh6LCB0KSBwcmVjaXNpb24gLT4gKHUsIHYpIHBhZGRpbmcgLT4gY2hhciAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCBwcmVjIHBhZHByZWMgc3ltYiAtPlxuICAgICgqIEZsYWdzIHVzZWQgdG8gY2hlY2sgb3B0aW9uIHVzYWdlcy9jb21wYXRpYmlsaXRpZXMuICopXG4gICAgbGV0IHBsdXNfdXNlZCAgPSByZWYgZmFsc2UgYW5kIGhhc2hfdXNlZCA9IHJlZiBmYWxzZVxuICAgIGFuZCBzcGFjZV91c2VkID0gcmVmIGZhbHNlIGFuZCBpZ25fdXNlZCAgID0gcmVmIGZhbHNlXG4gICAgYW5kIHBhZF91c2VkICAgPSByZWYgZmFsc2UgYW5kIHByZWNfdXNlZCAgPSByZWYgZmFsc2UgaW5cblxuICAgICgqIEFjY2VzcyB0byBvcHRpb25zLCB1cGRhdGUgZmxhZ3MuICopXG4gICAgbGV0IGdldF9wbHVzICAgICgpID0gcGx1c191c2VkICA6PSB0cnVlOyBwbHVzXG4gICAgYW5kIGdldF9oYXNoICAgKCkgPSBoYXNoX3VzZWQgOj0gdHJ1ZTsgaGFzaFxuICAgIGFuZCBnZXRfc3BhY2UgICAoKSA9IHNwYWNlX3VzZWQgOj0gdHJ1ZTsgc3BhY2VcbiAgICBhbmQgZ2V0X2lnbiAgICAgKCkgPSBpZ25fdXNlZCAgIDo9IHRydWU7IGlnblxuICAgIGFuZCBnZXRfcGFkICAgICAoKSA9IHBhZF91c2VkICAgOj0gdHJ1ZTsgcGFkXG4gICAgYW5kIGdldF9wcmVjICAgICgpID0gcHJlY191c2VkICA6PSB0cnVlOyBwcmVjXG4gICAgYW5kIGdldF9wYWRwcmVjICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRwcmVjIGluXG5cbiAgICBsZXQgZ2V0X2ludF9wYWQgKCkgOiAoeCx5KSBwYWRkaW5nID1cbiAgICAgICgqICU1LjNkIGlzIGFjY2VwdGVkIGFuZCBtZWFuaW5nZnVsOiBwYWQgdG8gbGVuZ3RoIDUgd2l0aFxuICAgICAgICAgc3BhY2VzLCBidXQgZmlyc3QgcGFkIHdpdGggemVyb3MgdXB0byBsZW5ndGggMyAoMC1wYWRkaW5nXG4gICAgICAgICBpcyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgXCJwcmVjaXNpb25cIiBmb3IgaW50ZWdlciBmb3JtYXRzKS5cblxuICAgICAgICAgJTA1LjNkIGlzIHJlZHVuZGFudDogcGFkIHRvIGxlbmd0aCA1ICp3aXRoIHplcm9zKiwgYnV0XG4gICAgICAgICBmaXJzdCBwYWQgd2l0aCB6ZXJvcy4uLiBUbyBhZGQgaW5zdWx0IHRvIHRoZSBpbmp1cnksIHRoZVxuICAgICAgICAgbGVnYWN5IGltcGxlbWVudGF0aW9uIGlnbm9yZXMgdGhlIDAtcGFkZGluZyBpbmRpY2F0aW9uIGFuZFxuICAgICAgICAgZG9lcyB0aGUgNSBwYWRkaW5nIHdpdGggc3BhY2VzIGluc3RlYWQuIFdlIHJldXNlIHRoaXNcbiAgICAgICAgIGludGVycHJldGF0aW9uIGZvciBjb21wYXRpYmlsaXR5LCBidXQgc3RhdGljYWxseSByZWplY3QgdGhpc1xuICAgICAgICAgZm9ybWF0IHdoZW4gdGhlIGxlZ2FjeSBtb2RlIGlzIGRpc2FibGVkLCB0byBwcm90ZWN0IHN0cmljdFxuICAgICAgICAgdXNlcnMgZnJvbSB0aGlzIGNvcm5lciBjYXNlLiAqKVxuICAgICAgIG1hdGNoIGdldF9wYWQgKCksIGdldF9wcmVjICgpIHdpdGhcbiAgICAgICAgIHwgcGFkLCBOb19wcmVjaXNpb24gLT4gcGFkXG4gICAgICAgICB8IE5vX3BhZGRpbmcsIF8gICAgIC0+IE5vX3BhZGRpbmdcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCBuKSwgXyAtPlxuICAgICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIG4pXG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIFplcm9zLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IExpdF9wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZFxuICAgICAgICAgfCBBcmdfcGFkZGluZyBfIGFzIHBhZCwgXyAtPiBwYWQgaW5cblxuICAgICgqIENoZWNrIHRoYXQgcGFkdHkgPD4gWmVyb3MuICopXG4gICAgbGV0IGNoZWNrX25vXzAgc3ltYiAodHlwZSBhIGIpIChwYWQgOiAoYSwgYikgcGFkZGluZykgOiAoYSxiKSBwYWRkaW5nID1cbiAgICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nICgoTGVmdCB8IFJpZ2h0KSwgXykgLT4gcGFkXG4gICAgICB8IEFyZ19wYWRkaW5nIChMZWZ0IHwgUmlnaHQpIC0+IHBhZFxuICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKVxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiMFwiXG4gICAgICB8IEFyZ19wYWRkaW5nIFplcm9zIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICBpblxuXG4gICAgKCogR2V0IHBhZGRpbmcgYXMgYSBwYWRfb3B0aW9uIChzZWUgXCIlX1wiLCBcIiV7XCIsIFwiJShcIiBhbmQgXCIlW1wiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBvcHRfb2ZfcGFkIGMgKHR5cGUgYSkgKHR5cGUgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA9IG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gTm9uZVxuICAgICAgfCBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKSAtPiBTb21lIHdpZHRoXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIFNvbWUgd2lkdGhcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicwJ1wiXG4gICAgICB8IExpdF9wYWRkaW5nIChMZWZ0LCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJy0nXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicqJ1wiXG4gICAgaW5cbiAgICBsZXQgZ2V0X3BhZF9vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZCAoKSkgaW5cbiAgICBsZXQgZ2V0X3BhZHByZWNfb3B0IGMgPSBvcHRfb2ZfcGFkIGMgKGdldF9wYWRwcmVjICgpKSBpblxuXG4gICAgKCogR2V0IHByZWNpc2lvbiBhcyBhIHByZWNfb3B0aW9uIChzZWUgXCIlX2ZcIikuXG4gICAgICAgKG5vIG5lZWQgZm9yIGxlZ2FjeSBtb2RlIHR3ZWFraW5nLCB0aG9zZSB3ZXJlIHJlamVjdGVkIGJ5IHRoZVxuICAgICAgIGxlZ2FjeSBwYXJzZXIgYXMgd2VsbCkgKilcbiAgICBsZXQgZ2V0X3ByZWNfb3B0ICgpID0gbWF0Y2ggZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgfCBOb19wcmVjaXNpb24gICAgICAgLT4gTm9uZVxuICAgICAgfCBMaXRfcHJlY2lzaW9uIG5kZWMgLT4gU29tZSBuZGVjXG4gICAgICB8IEFyZ19wcmVjaXNpb24gICAgICAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJ18nIFwiJyonXCJcbiAgICBpblxuXG4gICAgbGV0IGZtdF9yZXN1bHQgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICcsJyAtPlxuICAgICAgcGFyc2Ugc3RyX2luZCBlbmRfaW5kXG4gICAgfCAnYycgLT5cbiAgICAgIGxldCBjaGFyX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICVjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NoYXIsIGZtdF9yZXN0KSlcbiAgICAgICAgZWxzZSBGbXRfRUJCIChDaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBzY2FuX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICUwYyAqKVxuICAgICAgICBpZiBnZXRfaWduICgpXG4gICAgICAgIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9zY2FuX25leHRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBiZWdpbiBtYXRjaCBnZXRfcGFkX29wdCAnYycgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIDAgLT4gc2Nhbl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIF9uIC0+XG4gICAgICAgICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3JcbiAgICAgICAgICAgdGhlbiBpbnZhbGlkX25vbm51bGxfY2hhcl93aWR0aCBzdHJfaW5kXG4gICAgICAgICAgIGVsc2UgKCogbGVnYWN5IGlnbm9yZXMgJWMgd2lkdGhzICopIGNoYXJfZm9ybWF0IGZtdF9yZXN0XG4gICAgICBlbmRcbiAgICB8ICdDJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NhbWxfY2hhcixmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKENhbWxfY2hhciBmbXRfcmVzdClcbiAgICB8ICdzJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zdHJpbmcgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKFN0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdTJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9jYW1sX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnZCcgfCAnaScgfCAneCcgfCAnWCcgfCAnbycgfCAndScgLT5cbiAgICAgIGxldCBpY29udiA9IGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdOJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gVG9rZW5fY291bnRlciBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgfCAnbicgfCAnTCcgd2hlbiBzdHJfaW5kPWVuZF9pbmQgfHwgbm90IChpc19pbnRfYmFzZSBzdHIuW3N0cl9pbmRdKSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gY291bnRlcl9vZl9jaGFyIHN5bWIgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpKVxuICAgIHwgJ2wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQzMiAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDMyIChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnbicgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSlcbiAgICAgICAgICAoZ2V0X2hhc2ggKCkpIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ0wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQ2NCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDY0IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnZicgfCAnZScgfCAnRScgfCAnZycgfCAnRycgfCAnRicgfCAnaCcgfCAnSCcgLT5cbiAgICAgIGxldCBmY29udiA9XG4gICAgICAgIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmRcbiAgICAgICAgICAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3ltYiBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZmxvYXQgKGdldF9wYWRfb3B0ICdfJywgZ2V0X3ByZWNfb3B0ICgpKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2InIHwgJ0InIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Jvb2wgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEJvb2wgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnYScgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChBbHBoYSBmbXRfcmVzdClcbiAgICB8ICd0JyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKFRoZXRhIGZtdF9yZXN0KVxuICAgIHwgJ3InIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKFJlYWRlciBmbXRfcmVzdClcbiAgICB8ICchJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZsdXNoIGZtdF9yZXN0KVxuICAgIHwgKCclJyB8ICdAJykgYXMgYyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoYywgZm10X3Jlc3QpKVxuICAgIHwgJ3snIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnfScgaW5cbiAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIHN1Yl9lbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ3snLCBzdWJfZm10dHksIGZtdF9yZXN0KSlcbiAgICB8ICcoJyAtPlxuICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgJyknIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdWJfZW5kICsgMikgZW5kX2luZCBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IHN1Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdCBzdWJfZm10IGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnKCcsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJ1snIC0+XG4gICAgICBsZXQgbmV4dF9pbmQsIGNoYXJfc2V0ID0gcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9jaGFyX3NldCAoZ2V0X3BhZF9vcHQgJ18nLCBjaGFyX3NldCkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnWycsIGNoYXJfc2V0LCBmbXRfcmVzdCkpXG4gICAgfCAnLScgfCAnKycgfCAnIycgfCAnICcgfCAnXycgLT5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgIGZsYWcgJUMgaXMgb25seSBhbGxvd2VkIGFmdGVyIHRoZSAnJSUnLCBiZWZvcmUgcGFkZGluZyBhbmQgcHJlY2lzaW9uXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgc3ltYlxuICAgIHwgXyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgaW52YWxpZCBjb252ZXJzaW9uIFxcXCIlJSVjXFxcIlwiIHN0ciAoc3RyX2luZCAtIDEpIHN5bWJcbiAgICBpblxuICAgICgqIENoZWNrIGZvciB1bnVzZWQgb3B0aW9ucywgYW5kIHJlamVjdCB0aGVtIGFzIGluY29tcGF0aWJsZS5cblxuICAgICAgIFN1Y2ggY2hlY2tzIG5lZWQgdG8gYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsIGFzIHRoZSBsZWdhY3lcbiAgICAgICBwYXJzZXIgc2lsZW50bHkgaWdub3JlZCBpbmNvbXBhdGlibGUgZmxhZ3MuICopXG4gICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuIGJlZ2luXG4gICAgaWYgbm90ICFwbHVzX3VzZWQgJiYgcGx1cyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicrJ1wiO1xuICAgIGlmIG5vdCAhaGFzaF91c2VkICYmIGhhc2ggdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIjtcbiAgICBpZiBub3QgIXNwYWNlX3VzZWQgJiYgc3BhY2UgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIjtcbiAgICBpZiBub3QgIXBhZF91c2VkICAmJiBQYWRkaW5nX0VCQiBwYWQgPD4gUGFkZGluZ19FQkIgTm9fcGFkZGluZyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcImBwYWRkaW5nJ1wiO1xuICAgIGlmIG5vdCAhcHJlY191c2VkICYmIFByZWNpc2lvbl9FQkIgcHJlYyA8PiBQcmVjaXNpb25fRUJCIE5vX3ByZWNpc2lvbiB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgKGlmIGlnbiB0aGVuICdfJyBlbHNlIHN5bWIpXG4gICAgICAgIFwiYHByZWNpc2lvbidcIjtcbiAgICBpZiBpZ24gJiYgcGx1cyB0aGVuIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKydcIjtcbiAgICBlbmQ7XG4gICAgKCogdGhpcyBsYXN0IHRlc3QgbXVzdCBub3QgYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsXG4gICAgICAgYXMgaWdub3JpbmcgaXQgd291bGQgdHlwaWNhbGx5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0eXBpbmdcbiAgICAgICB0aGFuIHdoYXQgdGhlIGxlZ2FjeSBwYXJzZXIgdXNlZCAqKVxuICAgIGlmIG5vdCAhaWduX3VzZWQgJiYgaWduIHRoZW5cbiAgICAgIGJlZ2luIG1hdGNoIHN5bWIgd2l0aFxuICAgICAgICAoKiBhcmd1bWVudC1sZXNzIGZvcm1hdHMgY2FuIHNhZmVseSBiZSBpZ25vcmVkIGluIGxlZ2FjeSBtb2RlICopXG4gICAgICAgIHwgKCdAJyB8ICclJyB8ICchJyB8ICcsJykgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInXydcIlxuICAgICAgZW5kO1xuICAgIGZtdF9yZXN1bHRcblxuICAoKiBQYXJzZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uIChhZnRlciAnQCcpLiAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgRW5kX29mX2Zvcm1hdCkpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdbJyAtPlxuICAgICAgICBwYXJzZV90YWcgZmFsc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICddJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQ2xvc2VfYm94LCBmbXRfcmVzdCkpXG4gICAgICB8ICd7JyAtPlxuICAgICAgICBwYXJzZV90YWcgdHJ1ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ30nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV90YWcsIGZtdF9yZXN0KSlcbiAgICAgIHwgJywnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChCcmVhayAoXCJALFwiLCAwLCAwKSwgZm10X3Jlc3QpKVxuICAgICAgfCAnICcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAgXCIsIDEsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICc7JyAtPlxuICAgICAgICBwYXJzZV9nb29kX2JyZWFrIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnPycgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZGbHVzaCwgZm10X3Jlc3QpKVxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRm9yY2VfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnLicgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZsdXNoX25ld2xpbmUsIGZtdF9yZXN0KSlcbiAgICAgIHwgJzwnIC0+XG4gICAgICAgIHBhcnNlX21hZ2ljX3NpemUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9hdCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgd2hlbiBzdHJfaW5kICsgMSA8IGVuZF9pbmQgJiYgc3RyLltzdHJfaW5kICsgMV0gPSAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEVzY2FwZWRfcGVyY2VudCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsICgnQCcsIGZtdF9yZXN0KSlcbiAgICAgIHwgYyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoU2Nhbl9pbmRpYyBjLCBmbXRfcmVzdCkpXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIG9wdGlvbmFsIDxuYW1lPiBhZnRlciBcIkB7XCIgb3IgXCJAW1wiLiAqKVxuICBhbmQgcGFyc2VfdGFnIDogdHlwZSBlIGYgLiBib29sIC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gaXNfb3Blbl90YWcgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgdHJ5XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgbGV0IGluZCA9IFN0cmluZy5pbmRleF9mcm9tIHN0ciAoc3RyX2luZCArIDEpICc+JyBpblxuICAgICAgICBpZiBpbmQgPj0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciBzdHJfaW5kIChpbmQgLSBzdHJfaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCAoaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IHN1Yl9mb3JtYXQgPSBGb3JtYXQgKHN1Yl9mbXQsIHN1Yl9zdHIpIGluXG4gICAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nLCBmbXRfcmVzdCkpXG4gICAgICB8IF8gLT5cbiAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoRW5kX29mX2Zvcm1hdCwgXCJcIikgaW5cbiAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgaWYgaXNfb3Blbl90YWcgdGhlbiBPcGVuX3RhZyBzdWJfZm9ybWF0IGVsc2UgT3Blbl9ib3ggc3ViX2Zvcm1hdCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPHdpZHRoIG9mZnNldD4gYWZ0ZXIgXCJAO1wiLiAqKVxuICBhbmQgcGFyc2VfZ29vZF9icmVhayA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBsZXQgbmV4dF9pbmQsIGZvcm1hdHRpbmdfbGl0ID1cbiAgICAgIHRyeVxuICAgICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB8fCBzdHIuW3N0cl9pbmRdIDw+ICc8JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IChcbiAgICAgICAgICBsZXQgc3RyX2luZF8yLCB3aWR0aCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIGxldCBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF8yIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8zXSB3aXRoXG4gICAgICAgICAgICAgIHwgJz4nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZC0yKSAoc3RyX2luZF8zLXN0cl9pbmQrMykgaW5cbiAgICAgICAgICAgICAgICBzdHJfaW5kXzMgKyAxLCBCcmVhayAocywgd2lkdGgsIDApXG4gICAgICAgICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzQsIG9mZnNldCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8zIGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3RyX2luZF81ID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfNCBlbmRfaW5kIGluXG4gICAgICAgICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzVdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzUtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfNSArIDEsIEJyZWFrIChzLCB3aWR0aCwgb2Zmc2V0KVxuICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIClcbiAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgc3RyX2luZCwgQnJlYWsgKFwiQDtcIiwgMSwgMClcbiAgICBpblxuICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIHRoZSBzaXplIGluIGEgPG4+LiAqKVxuICBhbmQgcGFyc2VfbWFnaWNfc2l6ZSA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBtYXRjaFxuICAgICAgdHJ5XG4gICAgICAgIGxldCBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8xXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHNpemUgPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMSBlbmRfaW5kIGluXG4gICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgIGlmIHN0ci5bc3RyX2luZF8zXSA8PiAnPicgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZCAtIDIpIChzdHJfaW5kXzMgLSBzdHJfaW5kICsgMykgaW5cbiAgICAgICAgICBTb21lIChzdHJfaW5kXzMgKyAxLCBNYWdpY19zaXplIChzLCBzaXplKSlcbiAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgIE5vbmVcbiAgICB3aXRoXG4gICAgfCBTb21lIChuZXh0X2luZCwgZm9ybWF0dGluZ19saXQpIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljICc8JywgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIGFuZCBjb25zdHJ1Y3QgYSBjaGFyIHNldC4gKilcbiAgYW5kIHBhcnNlX2NoYXJfc2V0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcblxuICAgIGxldCBjaGFyX3NldCA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICAgIGxldCBhZGRfY2hhciBjID1cbiAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjO1xuICAgIGluXG4gICAgbGV0IGFkZF9yYW5nZSBjIGMnID1cbiAgICAgIGZvciBpID0gaW50X29mX2NoYXIgYyB0byBpbnRfb2ZfY2hhciBjJyBkb1xuICAgICAgICBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgKGNoYXJfb2ZfaW50IGkpO1xuICAgICAgZG9uZTtcbiAgICBpblxuXG4gICAgbGV0IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZCA9XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6ICclJScgYWxvbmUgaXMgbm90IGFjY2VwdGVkIGluIGNoYXJhY3RlciBzZXRzLCBcXFxuICAgICAgICAgdXNlICUlJSUgaW5zdGVhZCBhdCBwb3NpdGlvbiAlZC5cIiBzdHIgc3RyX2luZFxuICAgIGluXG5cbiAgICAoKiBQYXJzZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGEgY2hhciBzZXQuICopXG4gICAgbGV0IHJlYyBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGxldCBjID0gc3RyLltzdHJfaW5kXSBpblxuICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogUGFyc2UgdGhlIGNvbnRlbnQgb2YgYSBjaGFyIHNldCB1bnRpbCB0aGUgZmlyc3QgJ10nLiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9jb250ZW50IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnLScgLT5cbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCBjIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAgICgqIFRlc3QgZm9yIHJhbmdlIGluIGNoYXIgc2V0LiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9taW51cyAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyB3aGVuIGMgPSAnJScgLT5cbiAgICAgICAgYWRkX2NoYXIgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGlmIGMgPSAnJScgdGhlbiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmQ7XG4gICAgICAgICgqIG5vdGUgdGhhdCAnQCcgYWxvbmUgaXMgYWNjZXB0ZWQsIGFzIGRvbmUgYnkgdGhlIGxlZ2FjeVxuICAgICAgICAgICBpbXBsZW1lbnRhdGlvbjsgdGhlIGRvY3VtZW50YXRpb24gc3BlY2lmaWNhbGx5IHJlcXVpcmVzICVAXG4gICAgICAgICAgIHNvIHdlIGNvdWxkIHdhcm4gb24gdGhhdCAqKVxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjJ1xuXG4gICAgKCogTWFuYWdlIHJhbmdlIGluIGNoYXIgc2V0IChleGNlcHQgaWYgdGhlICctJyB0aGUgbGFzdCBjaGFyIGJlZm9yZSAnXScpICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIGFkZF9jaGFyICctJztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyAtPlxuICAgICAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMikgZW5kX2luZFxuICAgICAgICAgIHwgXyAtPiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmRcbiAgICAgICAgZW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGFkZF9yYW5nZSBjIGMnO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgIGluXG4gICAgbGV0IHN0cl9pbmQsIHJldmVyc2UgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgICB8ICdeJyAtPiBzdHJfaW5kICsgMSwgdHJ1ZVxuICAgICAgICB8IF8gLT4gc3RyX2luZCwgZmFsc2UgaW5cbiAgICBsZXQgbmV4dF9pbmQgPSBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICBsZXQgY2hhcl9zZXQgPSBmcmVlemVfY2hhcl9zZXQgY2hhcl9zZXQgaW5cbiAgICBuZXh0X2luZCwgKGlmIHJldmVyc2UgdGhlbiByZXZfY2hhcl9zZXQgY2hhcl9zZXQgZWxzZSBjaGFyX3NldClcblxuICAoKiBDb25zdW1lIGFsbCBuZXh0IHNwYWNlcywgcmFpc2UgYW4gRmFpbHVyZSBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGlmIHN0ci5bc3RyX2luZF0gPSAnICcgdGhlbiBwYXJzZV9zcGFjZXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGVsc2Ugc3RyX2luZFxuXG4gICgqIFJlYWQgYSBwb3NpdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIHN0cmluZywgcmFpc2UgYSBGYWlsdXJlIGlmIGVuZF9pbmQgaXNcbiAgICAgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCBhY2MgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gYWNjICogMTAgKyAoaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJykgaW5cbiAgICAgIGlmIG5ld19hY2MgPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogaW50ZWdlciAlZCBpcyBncmVhdGVyIHRoYW4gdGhlIGxpbWl0ICVkXCJcbiAgICAgICAgICBzdHIgbmV3X2FjYyBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG5ld19hY2NcbiAgICB8IF8gLT4gc3RyX2luZCwgYWNjXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmVcbiAgICAgaWYgZW5kX2luZCBpcyByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfaW50ZWdlciBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwXG4gICAgfCAnLScgLT4gKFxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgbGV0IG5leHRfaW5kLCBuID0gcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIDAgaW5cbiAgICAgICAgbmV4dF9pbmQsIC1uXG4gICAgICB8IGMgLT5cbiAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJkaWdpdFwiIGNcbiAgICApXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIEFkZCBhIGxpdGVyYWwgdG8gYSBmb3JtYXQgZnJvbSBhIGxpdGVyYWwgY2hhcmFjdGVyIHN1Yi1zZXF1ZW5jZS4gKilcbiAgYW5kIGFkZF9saXRlcmFsIDogdHlwZSBhIGQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gKGEsIF8sIF8sIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gbGl0X3N0YXJ0IHN0cl9pbmQgZm10IC0+IG1hdGNoIHN0cl9pbmQgLSBsaXRfc3RhcnQgd2l0aFxuICAgIHwgMCAgICAtPiBGbXRfRUJCIGZtdFxuICAgIHwgMSAgICAtPiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKHN0ci5bbGl0X3N0YXJ0XSwgZm10KSlcbiAgICB8IHNpemUgLT4gRm10X0VCQiAoU3RyaW5nX2xpdGVyYWwgKFN0cmluZy5zdWIgc3RyIGxpdF9zdGFydCBzaXplLCBmbXQpKVxuXG4gICgqIFNlYXJjaCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXRcbiAgICAgKGkuZS4gdGhlIGNvcnJlc3BvbmRpbmcgXCIlfVwiIG9yIFwiJSlcIikgKilcbiAgYW5kIHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IHVuY2xvc2VkIHN1Yi1mb3JtYXQsIFxcXG4gICAgICAgICBleHBlY3RlZCBcXFwiJSUlY1xcXCIgYXQgY2hhcmFjdGVyIG51bWJlciAlZFwiIHN0ciBjIGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnJScgLT5cbiAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgaWYgc3RyLltzdHJfaW5kICsgMV0gPSBjIHRoZW4gKCogRW5kIG9mIGZvcm1hdCBmb3VuZCAqKSBzdHJfaW5kIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgICB8ICdfJyAtPlxuICAgICAgICAgICgqIFNlYXJjaCBmb3IgXCIlXyhcIiBvciBcIiVfe1wiLiAqKVxuICAgICAgICAgIGlmIHN0cl9pbmQgKyAyID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDJdIHdpdGhcbiAgICAgICAgICB8ICd7JyAtPlxuICAgICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnKScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCBjXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgKCogJXsuLi4lfSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICd9JyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgKCogJSguLi4lKSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJ30nIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICUoLi4uJX0uICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJyknXCIgJ30nXG4gICAgICAgIHwgJyknIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICV7Li4uJSkuICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJ30nXCIgJyknXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIGVuZFxuICAgIHwgXyAtPiBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICgqIENoZWNrIGlmIHN5bWIgaXMgYSB2YWxpZCBpbnQgY29udmVyc2lvbiBhZnRlciBcIiVsXCIsIFwiJW5cIiBvciBcIiVMXCIgKilcbiAgYW5kIGlzX2ludF9iYXNlIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgKCogQ29udmVydCBhIGNoYXIgKGwsIG4gb3IgTCkgdG8gaXRzIGFzc29jaWF0ZWQgY291bnRlci4gKilcbiAgYW5kIGNvdW50ZXJfb2ZfY2hhciBzeW1iID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnbCcgLT4gTGluZV9jb3VudGVyICB8ICduJyAtPiBDaGFyX2NvdW50ZXJcbiAgICB8ICdMJyAtPiBUb2tlbl9jb3VudGVyIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBpbnRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBzcGFjZSBzeW1iID1cbiAgICBtYXRjaCBwbHVzLCBoYXNoLCBzcGFjZSwgc3ltYiB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X2QgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9pXG4gICAgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnZCcgLT4gSW50X3NkIHwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgJ2knIC0+IEludF9zaVxuICAgIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2QnIC0+IEludF9wZCB8ICB0cnVlLCBmYWxzZSwgZmFsc2UsICdpJyAtPiBJbnRfcGlcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd4JyAtPiBJbnRfeCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnWCcgLT4gSW50X1hcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICd4JyAtPiBJbnRfQ3ggfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnWCcgLT4gSW50X0NYXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnbycgLT4gSW50X29cbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdvJyAtPiBJbnRfQ29cbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd1JyAtPiBJbnRfdVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2QnIC0+IEludF9DZFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2knIC0+IEludF9DaVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3UnIC0+IEludF9DdVxuICAgIHwgXywgdHJ1ZSwgXywgJ3gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DeFxuICAgIHwgXywgdHJ1ZSwgXywgJ1gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DWFxuICAgIHwgXywgdHJ1ZSwgXywgJ28nIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9Db1xuICAgIHwgXywgdHJ1ZSwgXywgKCdkJyB8ICdpJyB8ICd1JykgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGZhbHNlIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIlxuICAgIHwgdHJ1ZSwgXywgdHJ1ZSwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiXG4gICAgfCBmYWxzZSwgXywgdHJ1ZSwgXyAgICAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBmYWxzZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyAnXCJcbiAgICB8IHRydWUsIF8sIGZhbHNlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgZmFsc2UgaGFzaCBzcGFjZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCBmYWxzZSwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzcGFjZSwgc3ltYikgdG8gaXRzIGFzc29jaWF0ZWQgZmxvYXRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIGxldCBmbGFnID0gbWF0Y2ggcGx1cywgc3BhY2Ugd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlIC0+IEZsb2F0X2ZsYWdfXG4gICAgfCBmYWxzZSwgIHRydWUgLT4gRmxvYXRfZmxhZ19zXG4gICAgfCAgdHJ1ZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19wXG4gICAgfCAgdHJ1ZSwgIHRydWUgLT5cbiAgICAgICgqIHBsdXMgYW5kIHNwYWNlOiBsZWdhY3kgaW1wbGVtZW50YXRpb24gcHJlZmVycyBwbHVzICopXG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBGbG9hdF9mbGFnX3BcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiIGluXG4gICAgbGV0IGtpbmQgPSBtYXRjaCBoYXNoLCBzeW1iIHdpdGhcbiAgICB8IF8sICdmJyAtPiBGbG9hdF9mXG4gICAgfCBfLCAnZScgLT4gRmxvYXRfZVxuICAgIHwgXywgJ0UnIC0+IEZsb2F0X0VcbiAgICB8IF8sICdnJyAtPiBGbG9hdF9nXG4gICAgfCBfLCAnRycgLT4gRmxvYXRfR1xuICAgIHwgXywgJ2gnIC0+IEZsb2F0X2hcbiAgICB8IF8sICdIJyAtPiBGbG9hdF9IXG4gICAgfCBmYWxzZSwgJ0YnIC0+IEZsb2F0X0ZcbiAgICB8IHRydWUsICdGJyAtPiBGbG9hdF9DRlxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgaW5cbiAgICBmbGFnLCBraW5kXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGluY29tcGF0aWJsZSBvcHRpb25zLiopXG4gIGFuZCBpbmNvbXBhdGlibGVfZmxhZyA6IHR5cGUgYSAuIGludCAtPiBpbnQgLT4gY2hhciAtPiBzdHJpbmcgLT4gYSA9XG4gICAgZnVuIHBjdF9pbmQgc3RyX2luZCBzeW1iIG9wdGlvbiAtPlxuICAgICAgbGV0IHN1YmZtdCA9IFN0cmluZy5zdWIgc3RyIHBjdF9pbmQgKHN0cl9pbmQgLSBwY3RfaW5kKSBpblxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgJXMgaXMgaW5jb21wYXRpYmxlIHdpdGggJyVjJyBpbiBzdWItZm9ybWF0ICVTXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgb3B0aW9uIHN5bWIgc3ViZm10XG5cbiAgaW4gcGFyc2UgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAoKiBHdWFyZGVkIHN0cmluZyB0byBmb3JtYXQgY29udmVyc2lvbnMgKilcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHN0ciBmbXR0eSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgZm10dHksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCJcbiAgICAgIHN0ciAoc3RyaW5nX29mX2ZtdHR5IGZtdHR5KVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGNvbXBhdGlibGUgd2l0aCBhbiBvdGhlciBmb3JtYXQuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgKEZvcm1hdCAoZm10Jywgc3RyJykpID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCAoZm10dHlfb2ZfZm10IGZtdCcpLCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiIHN0ciBzdHInXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gUHJpbnRmXG5cbnR5cGUgdCA9IGV4biA9IC4uXG5cbmxldCBwcmludGVycyA9IEF0b21pYy5tYWtlIFtdXG5cbmxldCBsb2NmbXQgPSBmb3JtYXRfb2Zfc3RyaW5nIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkOiAlc1wiXG5cbmxldCBmaWVsZCB4IGkgPVxuICBsZXQgZiA9IE9iai5maWVsZCB4IGkgaW5cbiAgaWYgbm90IChPYmouaXNfYmxvY2sgZikgdGhlblxuICAgIHNwcmludGYgXCIlZFwiIChPYmoubWFnaWMgZiA6IGludCkgICAgICAgICAgICgqIGNhbiBhbHNvIGJlIGEgY2hhciAqKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5zdHJpbmdfdGFnIHRoZW5cbiAgICBzcHJpbnRmIFwiJVNcIiAoT2JqLm1hZ2ljIGYgOiBzdHJpbmcpXG4gIGVsc2UgaWYgT2JqLnRhZyBmID0gT2JqLmRvdWJsZV90YWcgdGhlblxuICAgIHN0cmluZ19vZl9mbG9hdCAoT2JqLm1hZ2ljIGYgOiBmbG9hdClcbiAgZWxzZVxuICAgIFwiX1wiXG5cbmxldCByZWMgb3RoZXJfZmllbGRzIHggaSA9XG4gIGlmIGkgPj0gT2JqLnNpemUgeCB0aGVuIFwiXCJcbiAgZWxzZSBzcHJpbnRmIFwiLCAlcyVzXCIgKGZpZWxkIHggaSkgKG90aGVyX2ZpZWxkcyB4IChpKzEpKVxuXG5sZXQgZmllbGRzIHggPVxuICBtYXRjaCBPYmouc2l6ZSB4IHdpdGhcbiAgfCAwIC0+IFwiXCJcbiAgfCAxIC0+IFwiXCJcbiAgfCAyIC0+IHNwcmludGYgXCIoJXMpXCIgKGZpZWxkIHggMSlcbiAgfCBfIC0+IHNwcmludGYgXCIoJXMlcylcIiAoZmllbGQgeCAxKSAob3RoZXJfZmllbGRzIHggMilcblxubGV0IHVzZV9wcmludGVycyB4ID1cbiAgbGV0IHJlYyBjb252ID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBoZCB4IHdpdGhcbiAgICAgICAgIHwgTm9uZSB8IGV4Y2VwdGlvbiBfIC0+IGNvbnYgdGxcbiAgICAgICAgIHwgU29tZSBzIC0+IFNvbWUgcylcbiAgICB8IFtdIC0+IE5vbmUgaW5cbiAgY29udiAoQXRvbWljLmdldCBwcmludGVycylcblxubGV0IHRvX3N0cmluZ19kZWZhdWx0ID0gZnVuY3Rpb25cbiAgfCBPdXRfb2ZfbWVtb3J5IC0+IFwiT3V0IG9mIG1lbW9yeVwiXG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gXCJTdGFjayBvdmVyZmxvd1wiXG4gIHwgTWF0Y2hfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNSkgXCJQYXR0ZXJuIG1hdGNoaW5nIGZhaWxlZFwiXG4gIHwgQXNzZXJ0X2ZhaWx1cmUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiQXNzZXJ0aW9uIGZhaWxlZFwiXG4gIHwgVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiVW5kZWZpbmVkIHJlY3Vyc2l2ZSBtb2R1bGVcIlxuICB8IHggLT5cbiAgICAgIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICAgICAgaWYgT2JqLnRhZyB4IDw+IDAgdGhlblxuICAgICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgeCAwKSA6IHN0cmluZylcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNvbnN0cnVjdG9yID1cbiAgICAgICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgKE9iai5maWVsZCB4IDApIDApIDogc3RyaW5nKSBpblxuICAgICAgICBjb25zdHJ1Y3RvciBeIChmaWVsZHMgeClcblxubGV0IHRvX3N0cmluZyBlID1cbiAgbWF0Y2ggdXNlX3ByaW50ZXJzIGUgd2l0aFxuICB8IFNvbWUgcyAtPiBzXG4gIHwgTm9uZSAtPiB0b19zdHJpbmdfZGVmYXVsdCBlXG5cbmxldCBwcmludCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZmx1c2ggc3RkZXJyO1xuICAgIHJhaXNlIHhcblxubGV0IGNhdGNoIGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGZsdXNoIHN0ZG91dDtcbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZXhpdCAyXG5cbnR5cGUgcmF3X2JhY2t0cmFjZV9zbG90XG50eXBlIHJhd19iYWNrdHJhY2VfZW50cnkgPSBwcml2YXRlIGludFxudHlwZSByYXdfYmFja3RyYWNlID0gcmF3X2JhY2t0cmFjZV9lbnRyeSBhcnJheVxuXG5sZXQgcmF3X2JhY2t0cmFjZV9lbnRyaWVzIGJ0ID0gYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2U6XG4gIHVuaXQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2VcIlxuXG5leHRlcm5hbCByYWlzZV93aXRoX2JhY2t0cmFjZTogZXhuIC0+IHJhd19iYWNrdHJhY2UgLT4gJ2FcbiAgPSBcIiVyYWlzZV93aXRoX2JhY2t0cmFjZVwiXG5cbnR5cGUgYmFja3RyYWNlX3Nsb3QgPVxuICB8IEtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlICAgIDogYm9vbDtcbiAgICAgIGZpbGVuYW1lICAgIDogc3RyaW5nO1xuICAgICAgbGluZV9udW1iZXIgOiBpbnQ7XG4gICAgICBzdGFydF9jaGFyICA6IGludDtcbiAgICAgIGVuZF9jaGFyICAgIDogaW50O1xuICAgICAgaXNfaW5saW5lICAgOiBib29sO1xuICAgICAgZGVmbmFtZSAgICAgOiBzdHJpbmc7XG4gICAgfVxuICB8IFVua25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgOiBib29sXG4gICAgfVxuXG4oKiB0byBhdm9pZCB3YXJuaW5nICopXG5sZXQgXyA9IFtLbm93bl9sb2NhdGlvbiB7IGlzX3JhaXNlID0gZmFsc2U7IGZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIgPSAwOyBzdGFydF9jaGFyID0gMDsgZW5kX2NoYXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpc19pbmxpbmUgPSBmYWxzZTsgZGVmbmFtZSA9IFwiXCIgfTtcbiAgICAgICAgIFVua25vd25fbG9jYXRpb24geyBpc19yYWlzZSA9IGZhbHNlIH1dXG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90OlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2U6XG4gIHJhd19iYWNrdHJhY2UgLT4gYmFja3RyYWNlX3Nsb3QgYXJyYXkgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlXCJcblxubGV0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidCA9XG4gIHRyeSBTb21lIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBwb3Mgc2xvdCA9XG4gIGxldCBpbmZvIGlzX3JhaXNlID1cbiAgICBpZiBpc19yYWlzZSB0aGVuXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYXRcIiBlbHNlIFwiUmUtcmFpc2VkIGF0XCJcbiAgICBlbHNlXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYnkgcHJpbWl0aXZlIG9wZXJhdGlvbiBhdFwiIGVsc2UgXCJDYWxsZWQgZnJvbVwiXG4gIGluXG4gIG1hdGNoIHNsb3Qgd2l0aFxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgaWYgbC5pc19yYWlzZSB0aGVuXG4gICAgICAgICgqIGNvbXBpbGVyLWluc2VydGVkIHJlLXJhaXNlLCBza2lwcGVkICopIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgU29tZSAoc3ByaW50ZiBcIiVzIHVua25vd24gbG9jYXRpb25cIiAoaW5mbyBmYWxzZSkpXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgU29tZSAoc3ByaW50ZiBcIiVzICVzIGluIGZpbGUgXFxcIiVzXFxcIiVzLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgKGluZm8gbC5pc19yYWlzZSkgbC5kZWZuYW1lIGwuZmlsZW5hbWVcbiAgICAgICAgICAgICAgKGlmIGwuaXNfaW5saW5lIHRoZW4gXCIgKGlubGluZWQpXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICBsLmxpbmVfbnVtYmVyIGwuc3RhcnRfY2hhciBsLmVuZF9jaGFyKVxuXG5sZXQgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgZnByaW50ZiBvdXRjaGFuXG4gICAgICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGZwcmludGYgb3V0Y2hhbiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lXG5cbmxldCBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gcmF3X2JhY2t0cmFjZSA9XG4gIHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOiBwcmludHMgdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IHByaW50X2JhY2t0cmFjZSBvdXRjaGFuID1cbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxubGV0IGJhY2t0cmFjZV90b19zdHJpbmcgYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBicHJpbnRmIGIgXCIlc1xcblwiIHN0clxuICAgICAgZG9uZTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCByYXdfYmFja3RyYWNlX3RvX3N0cmluZyByYXdfYmFja3RyYWNlID1cbiAgYmFja3RyYWNlX3RvX3N0cmluZyAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX2lubGluZVxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBmYWxzZVxuXG50eXBlIGxvY2F0aW9uID0ge1xuICBmaWxlbmFtZSA6IHN0cmluZztcbiAgbGluZV9udW1iZXIgOiBpbnQ7XG4gIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gIGVuZF9jaGFyIDogaW50O1xufVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfbG9jYXRpb24gPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgIFNvbWUge1xuICAgICAgZmlsZW5hbWUgICAgPSBsLmZpbGVuYW1lO1xuICAgICAgbGluZV9udW1iZXIgPSBsLmxpbmVfbnVtYmVyO1xuICAgICAgc3RhcnRfY2hhciAgPSBsLnN0YXJ0X2NoYXI7XG4gICAgICBlbmRfY2hhciAgICA9IGwuZW5kX2NoYXI7XG4gICAgfVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfXG4gIHwgS25vd25fbG9jYXRpb24geyBkZWZuYW1lID0gXCJcIiB9IC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IFNvbWUgbC5kZWZuYW1lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHMgcmF3X2JhY2t0cmFjZSA9XG4gICgqIFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IFNvbWUgaXNcbiAgICAgcmV0dXJuZWQgb25seSBpZiBhIHBhcnQgb2YgdGhlIHRyYWNlIGlzIHVzYWJsZS4gVGhpcyBnaXZlcyB1c1xuICAgICBhIGJpdCBtb3JlIHdvcmsgdGhhbiBqdXN0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSwgYnV0IGl0IG1ha2VzIHRoZVxuICAgICBBUEkgbW9yZSB1c2VyLWZyaWVuZGx5IC0tIG90aGVyd2lzZSBtb3N0IHVzZXJzIHdvdWxkIGhhdmUgdG9cbiAgICAgcmVpbXBsZW1lbnQgdGhlIFwiUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIHNvcnJ5XCIgbG9naWNcbiAgICAgdGhlbXNlbHZlcy4gKilcbiAgbWF0Y2ggY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGJhY2t0cmFjZSAtPlxuICAgICAgbGV0IHVzYWJsZV9zbG90ID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgfCBLbm93bl9sb2NhdGlvbiBfIC0+IHRydWUgaW5cbiAgICAgIGxldCByZWMgZXhpc3RzX3VzYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKC0xKSAtPiBmYWxzZVxuICAgICAgICB8IGkgLT4gdXNhYmxlX3Nsb3QgYmFja3RyYWNlLihpKSB8fCBleGlzdHNfdXNhYmxlIChpIC0gMSkgaW5cbiAgICAgIGlmIGV4aXN0c191c2FibGUgKEFycmF5Lmxlbmd0aCBiYWNrdHJhY2UgLSAxKVxuICAgICAgdGhlbiBTb21lIGJhY2t0cmFjZVxuICAgICAgZWxzZSBOb25lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IGVudHJ5ID1cbiAgYmFja3RyYWNlX3Nsb3RzIFt8IGVudHJ5IHxdXG5cbm1vZHVsZSBTbG90ID0gc3RydWN0XG4gIHR5cGUgdCA9IGJhY2t0cmFjZV9zbG90XG4gIGxldCBmb3JtYXQgPSBmb3JtYXRfYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGlzX3JhaXNlID0gYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2VcbiAgbGV0IGlzX2lubGluZSA9IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZVxuICBsZXQgbG9jYXRpb24gPSBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvblxuICBsZXQgbmFtZSA9IGJhY2t0cmFjZV9zbG90X2RlZm5hbWVcbmVuZFxuXG5sZXQgcmF3X2JhY2t0cmFjZV9sZW5ndGggYnQgPSBBcnJheS5sZW5ndGggYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2UgLT4gaW50IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QgOlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gcmF3X2JhY2t0cmFjZV9zbG90IG9wdGlvblxuICA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFwiXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOlxuICAgcmV0dXJucyB0aGUgKnN0cmluZyogY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgZ2V0X2JhY2t0cmFjZSAoKSA9IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxuZXh0ZXJuYWwgcmVjb3JkX2JhY2t0cmFjZTogYm9vbCAtPiB1bml0ID0gXCJjYW1sX3JlY29yZF9iYWNrdHJhY2VcIlxuZXh0ZXJuYWwgYmFja3RyYWNlX3N0YXR1czogdW5pdCAtPiBib29sID0gXCJjYW1sX2JhY2t0cmFjZV9zdGF0dXNcIlxuXG5sZXQgcmVjIHJlZ2lzdGVyX3ByaW50ZXIgZm4gPVxuICBsZXQgb2xkX3ByaW50ZXJzID0gQXRvbWljLmdldCBwcmludGVycyBpblxuICBsZXQgbmV3X3ByaW50ZXJzID0gZm4gOjogb2xkX3ByaW50ZXJzIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwcmludGVycyBvbGRfcHJpbnRlcnMgbmV3X3ByaW50ZXJzIGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gcmVnaXN0ZXJfcHJpbnRlciBmblxuXG5leHRlcm5hbCBnZXRfY2FsbHN0YWNrOiBpbnQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2tcIlxuXG5sZXQgZXhuX3Nsb3QgeCA9XG4gIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmoudGFnIHggPSAwIHRoZW4gT2JqLmZpZWxkIHggMCBlbHNlIHhcblxubGV0IGV4bl9zbG90X2lkIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDEpIDogaW50KVxuXG5sZXQgZXhuX3Nsb3RfbmFtZSB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAwKSA6IHN0cmluZylcblxuZXh0ZXJuYWwgZ2V0X2RlYnVnX2luZm9fc3RhdHVzIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXNcIlxuXG4oKiBEZXNjcmlwdGlvbnMgZm9yIGVycm9ycyBpbiBzdGFydHVwLmguIFNlZSBhbHNvIGJhY2t0cmFjZS5jICopXG5sZXQgZXJyb3JzID0gW3wgXCJcIjtcbiAgKCogRklMRV9OT1RfRk9VTkQgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClcIjtcbiAgKCogQkFEX0JZVEVDT0RFICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpXCI7XG4gICgqIFdST05HX01BR0lDICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBoYXMgd3JvbmcgbWFnaWMgbnVtYmVyKVwiO1xuICAoKiBOT19GRFMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQ7XFxuIFxcXG4gICAgICAtLSB0b28gbWFueSBvcGVuIGZpbGVzLiBUcnkgcnVubmluZyB3aXRoIE9DQU1MUlVOUEFSQU09Yj0yKVwiXG58XVxuXG5sZXQgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZSA9XG4gIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBsZXQgc3RhdHVzID0gZ2V0X2RlYnVnX2luZm9fc3RhdHVzICgpIGluXG4gIGlmIHN0YXR1cyA8IDAgdGhlblxuICAgIHByZXJyX2VuZGxpbmUgZXJyb3JzLihhYnMgc3RhdHVzKTtcbiAgZmx1c2ggc3RkZXJyXG5cbmxldCB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA9IHJlZiBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyXG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZm4gPSB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA6PSBmblxuXG5sZXQgZW1wdHlfYmFja3RyYWNlIDogcmF3X2JhY2t0cmFjZSA9IFt8IHxdXG5cbmxldCB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgPVxuICB0cnlcbiAgICBnZXRfcmF3X2JhY2t0cmFjZSAoKVxuICB3aXRoIF8gKCogT3V0X29mX21lbW9yeT8gKikgLT5cbiAgICBlbXB0eV9iYWNrdHJhY2VcblxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICAoKiBHZXQgdGhlIGJhY2t0cmFjZSBub3csIGluIGNhc2Ugb25lIG9mIHRoZSBbYXRfZXhpdF0gZnVuY3Rpb25cbiAgICAgICBkZXN0cm95cyBpdC4gKilcbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9XG4gICAgICBpZiBkZWJ1Z2dlcl9pbl91c2UgKCogU2FtZSB0ZXN0IGFzIGluIFtydW50aW1lL3ByaW50ZXhjLmNdICopIHRoZW5cbiAgICAgICAgZW1wdHlfYmFja3RyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKVxuICAgIGluXG4gICAgKHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgIHRyeVxuICAgICAgIXVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlXG4gICAgd2l0aCBleG4nIC0+XG4gICAgICBsZXQgcmF3X2JhY2t0cmFjZScgPSB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXFxuXCJcbiAgICAgICAgKHRvX3N0cmluZyBleG4nKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2UnO1xuICAgICAgZmx1c2ggc3RkZXJyXG4gIHdpdGhcbiAgICB8IE91dF9vZl9tZW1vcnkgLT5cbiAgICAgICAgcHJlcnJfZW5kbGluZVxuICAgICAgICAgIFwiRmF0YWwgZXJyb3I6IG91dCBvZiBtZW1vcnkgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXJcIlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBbY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25dIGluXG4gICBbcnVudGltZS9wcmludGV4Yy5jXSB3aGljaCBleHBlY3RzIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZVxuICB3aXRoIF8gLT5cbiAgICAoKiBUaGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCAqKVxuICAgICgpXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIlxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIERhbWllbiBEb2xpZ2V6LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGdlbmVyaWNfcXVvdGUgcXVvdGVxdW90ZSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBpZiBzLltpXSA9ICdcXCcnXG4gICAgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIHF1b3RlcXVvdGVcbiAgICBlbHNlIEJ1ZmZlci5hZGRfY2hhciBiICBzLltpXVxuICBkb25lO1xuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1sxXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Jhc2VuYW1lLmh0bWxcbiAgSW4gc3RlcCAxIG9mIFtbMV1dLCB3ZSBjaG9vc2UgdG8gcmV0dXJuIFwiLlwiIGZvciBlbXB0eSBpbnB1dC5cbiAgICAoZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiBPQ2FtbClcbiAgSW4gc3RlcCAyLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4gIFN0ZXAgNiBpcyBub3QgaW1wbGVtZW50ZWQ6IHdlIGNvbnNpZGVyIHRoYXQgdGhlIFtzdWZmaXhdIG9wZXJhbmQgaXNcbiAgICBhbHdheXMgYWJzZW50LiAgU3VmZml4ZXMgYXJlIGhhbmRsZWQgYnkgW2Nob3Bfc3VmZml4XSBhbmQgW2Nob3BfZXh0ZW5zaW9uXS5cbiopXG5sZXQgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgZmluZF9lbmQgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGZpbmRfZW5kIChuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIG4gKG4gKyAxKVxuICBhbmQgZmluZF9iZWcgbiBwID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIHBcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gU3RyaW5nLnN1YiBuYW1lIChuICsgMSkgKHAgLSBuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIChuIC0gMSkgcFxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSBmaW5kX2VuZCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1syXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Rpcm5hbWUuaHRtbFxuICBJbiBzdGVwIDYgb2YgW1syXV0sIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiopXG5sZXQgZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyB0cmFpbGluZ19zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIHRyYWlsaW5nX3NlcCAobiAtIDEpXG4gICAgZWxzZSBiYXNlIG5cbiAgYW5kIGJhc2UgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgblxuICAgIGVsc2UgYmFzZSAobiAtIDEpXG4gIGFuZCBpbnRlcm1lZGlhdGVfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIChuIC0gMSlcbiAgICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChuICsgMSlcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgdHJhaWxpbmdfc2VwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5tb2R1bGUgdHlwZSBTWVNERVBTID0gc2lnXG4gIHZhbCBudWxsIDogc3RyaW5nXG4gIHZhbCBjdXJyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBwYXJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIGRpcl9zZXAgOiBzdHJpbmdcbiAgdmFsIGlzX2Rpcl9zZXAgOiBzdHJpbmcgLT4gaW50IC0+IGJvb2xcbiAgdmFsIGlzX3JlbGF0aXZlIDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGlzX2ltcGxpY2l0IDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNoZWNrX3N1ZmZpeCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgY2hvcF9zdWZmaXhfb3B0IDogc3VmZml4OnN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICB2YWwgdGVtcF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcXVvdGUgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBxdW90ZV9jb21tYW5kIDpcbiAgICBzdHJpbmcgLT4gP3N0ZGluOiBzdHJpbmcgLT4gP3N0ZG91dDogc3RyaW5nIC0+ID9zdGRlcnI6IHN0cmluZ1xuICAgICAgICAgICAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbiAgdmFsIGJhc2VuYW1lIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgZGlybmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbmVuZFxuXG5tb2R1bGUgVW5peCA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwIHMgaSA9IHMuW2ldID0gJy8nXG4gIGxldCBpc19yZWxhdGl2ZSBuID0gU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLydcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gIGxldCBjaGVja19zdWZmaXggbmFtZSBzdWZmID1cbiAgICBTdHJpbmcuZW5kc193aXRoIH5zdWZmaXg6c3VmZiBuYW1lXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgciA9IHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVE1QRElSXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIvdG1wXCJcbiAgbGV0IHF1b3RlID0gZ2VuZXJpY19xdW90ZSBcIidcXFxcJydcIlxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSAoY21kIDo6IGFyZ3MpKVxuICAgIF4gKG1hdGNoIHN0ZGluICB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA8XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBpZiBzdGRlcnIgPSBzdGRvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZSBmKVxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgV2luMzIgOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCJOVUxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIlxcXFxcIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBsZXQgYyA9IHMuW2ldIGluIGMgPSAnLycgfHwgYyA9ICdcXFxcJyB8fCBjID0gJzonXG4gIGxldCBpc19yZWxhdGl2ZSBuID1cbiAgICAoU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLycpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJ1xcXFwnKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IG4uWzFdIDw+ICc6JylcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLlxcXFxcIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uXFxcXFwiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICBTdHJpbmcubGVuZ3RoIG5hbWUgPj0gU3RyaW5nLmxlbmd0aCBzdWZmICYmXG4gICAobGV0IHMgPSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nLmxlbmd0aCBzdWZmKSBpblxuICAgIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgcyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgc3VmZilcblxuICBsZXQgY2hvcF9zdWZmaXhfb3B0IH5zdWZmaXggZmlsZW5hbWUgPVxuICAgIGxldCBsZW5fcyA9IFN0cmluZy5sZW5ndGggc3VmZml4IGFuZCBsZW5fZiA9IFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBpZiBsZW5fZiA+PSBsZW5fcyB0aGVuXG4gICAgICBsZXQgciA9IFN0cmluZy5zdWIgZmlsZW5hbWUgKGxlbl9mIC0gbGVuX3MpIGxlbl9zIGluXG4gICAgICBpZiBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHIgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cblxuICBsZXQgdGVtcF9kaXJfbmFtZSA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJURU1QXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIuXCJcbiAgbGV0IHF1b3RlIHMgPVxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ1xcXCInIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAwIGk7XG4gICAgICB8IGMgICAgLT4gQnVmZmVyLmFkZF9jaGFyIGIgYzsgbG9vcCAoaSsxKTtcbiAgICBhbmQgbG9vcF9icyBuIGkgPVxuICAgICAgaWYgaSA9IGwgdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7XG4gICAgICAgIGFkZF9icyBuO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICdcXFwiJyAtPiBhZGRfYnMgKDIqbisxKTsgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInOyBsb29wIChpKzEpO1xuICAgICAgICB8ICdcXFxcJyAtPiBsb29wX2JzIChuKzEpIChpKzEpO1xuICAgICAgICB8IF8gICAgLT4gYWRkX2JzIG47IGxvb3AgaVxuICAgICAgZW5kXG4gICAgYW5kIGFkZF9icyBuID0gZm9yIF9qID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJzsgZG9uZVxuICAgIGluXG4gICAgbG9vcCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4oKlxuUXVvdGluZyBjb21tYW5kcyBmb3IgZXhlY3V0aW9uIGJ5IGNtZC5leGUgaXMgZGlmZmljdWx0LlxuMS0gRWFjaCBhcmd1bWVudCBpcyBmaXJzdCBxdW90ZWQgdXNpbmcgdGhlIFwicXVvdGVcIiBmdW5jdGlvbiBhYm92ZSwgdG9cbiAgIHByb3RlY3QgaXQgYWdhaW5zdCB0aGUgcHJvY2Vzc2luZyBwZXJmb3JtZWQgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sXG4gICB0aGVuIGNtZC5leGUncyBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQgd2l0aCAnXicsIHVzaW5nXG4gICB0aGUgXCJxdW90ZV9jbWRcIiBmdW5jdGlvbiBiZWxvdy4gIEZvciBtb3JlIGRldGFpbHMsIHNlZVxuICAgaHR0cHM6Ly9ibG9ncy5tc2RuLm1pY3Jvc29mdC5jb20vdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS8yMDExLzA0LzIzXG4yLSBUaGUgY29tbWFuZCBhbmQgdGhlIHJlZGlyZWN0aW9uIGZpbGVzLCBpZiBhbnksIG11c3QgYmUgZG91YmxlLXF1b3RlZFxuICAgaW4gY2FzZSB0aGV5IGNvbnRhaW4gc3BhY2VzLiAgVGhpcyBxdW90aW5nIGlzIGludGVycHJldGVkIGJ5IGNtZC5leGUsXG4gICBub3QgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sIGhlbmNlIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmVcbiAgIGNhbm5vdCBiZSB1c2VkLiAgVGhlIHR3byBjaGFyYWN0ZXJzIHdlIGRvbid0IGtub3cgaG93IHRvIHF1b3RlXG4gICBpbnNpZGUgYSBkb3VibGUtcXVvdGVkIGNtZC5leGUgc3RyaW5nIGFyZSBkb3VibGUtcXVvdGUgYW5kIHBlcmNlbnQuXG4gICBXZSBqdXN0IGZhaWwgaWYgdGhlIGNvbW1hbmQgbmFtZSBvciB0aGUgcmVkaXJlY3Rpb24gZmlsZSBuYW1lc1xuICAgY29udGFpbiBhIGRvdWJsZSBxdW90ZSAobm90IGFsbG93ZWQgaW4gV2luZG93cyBmaWxlIG5hbWVzLCBhbnl3YXkpXG4gICBvciBhIHBlcmNlbnQuICBTZWUgZnVuY3Rpb24gXCJxdW90ZV9jbWRfZmlsZW5hbWVcIiBiZWxvdy5cbjMtIFRoZSB3aG9sZSBzdHJpbmcgcGFzc2VkIHRvIFN5cy5jb21tYW5kIGlzIHRoZW4gZW5jbG9zZWQgaW4gZG91YmxlXG4gICBxdW90ZXMsIHdoaWNoIGFyZSBpbW1lZGlhdGVseSBzdHJpcHBlZCBieSBjbWQuZXhlLiAgT3RoZXJ3aXNlLFxuICAgc29tZSBvZiB0aGUgZG91YmxlIHF1b3RlcyBmcm9tIHN0ZXAgMiBhYm92ZSBjYW4gYmUgbWlzcGFyc2VkLlxuICAgU2VlIGUuZy4gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk5NjUxNDFcbiopXG4gIGxldCBxdW90ZV9jbWQgcyA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKyAyMCkgaW5cbiAgICBTdHJpbmcuaXRlclxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcoJyB8ICcpJyB8ICchJyB8ICdeJyB8ICclJyB8ICdcXFwiJyB8ICc8JyB8ICc+JyB8ICcmJyB8ICd8JyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ14nOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYylcbiAgICAgIHM7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgbGV0IHF1b3RlX2NtZF9maWxlbmFtZSBmID1cbiAgICBpZiBTdHJpbmcuY29udGFpbnMgZiAnXFxcIicgfHwgU3RyaW5nLmNvbnRhaW5zIGYgJyUnIHRoZW5cbiAgICAgIGZhaWx3aXRoIChcIkZpbGVuYW1lLnF1b3RlX2NvbW1hbmQ6IGJhZCBmaWxlIG5hbWUgXCIgXiBmKVxuICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIGYgJyAnIHRoZW5cbiAgICAgIFwiXFxcIlwiIF4gZiBeIFwiXFxcIlwiXG4gICAgZWxzZVxuICAgICAgZlxuICAoKiBSZWRpcmVjdGlvbnMgaW4gY21kLmV4ZTogc2VlIGh0dHBzOi8vc3M2NC5jb20vbnQvc3ludGF4LXJlZGlyZWN0aW9uLmh0bWxcbiAgICAgYW5kIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3ByZXZpb3VzLXZlcnNpb25zL3dpbmRvd3MvaXQtcHJvL3dpbmRvd3MteHAvYmI0OTA5ODIodj10ZWNobmV0LjEwKVxuICAqKVxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW1xuICAgICAgXCJcXFwiXCI7XG4gICAgICBxdW90ZV9jbWRfZmlsZW5hbWUgY21kO1xuICAgICAgXCIgXCI7XG4gICAgICBxdW90ZV9jbWQgKFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHF1b3RlIGFyZ3MpKTtcbiAgICAgIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICAobWF0Y2ggc3RkZXJyIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBcIiAyPiYxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICBcIlxcXCJcIlxuICAgIF1cbiAgbGV0IGhhc19kcml2ZSBzID1cbiAgICBsZXQgaXNfbGV0dGVyID0gZnVuY3Rpb25cbiAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBTdHJpbmcubGVuZ3RoIHMgPj0gMiAmJiBpc19sZXR0ZXIgcy5bMF0gJiYgcy5bMV0gPSAnOidcbiAgbGV0IGRyaXZlX2FuZF9wYXRoIHMgPVxuICAgIGlmIGhhc19kcml2ZSBzXG4gICAgdGhlbiAoU3RyaW5nLnN1YiBzIDAgMiwgU3RyaW5nLnN1YiBzIDIgKFN0cmluZy5sZW5ndGggcyAtIDIpKVxuICAgIGVsc2UgKFwiXCIsIHMpXG4gIGxldCBkaXJuYW1lIHMgPVxuICAgIGxldCAoZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGxldCBkaXIgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGggaW5cbiAgICBkcml2ZSBeIGRpclxuICBsZXQgYmFzZW5hbWUgcyA9XG4gICAgbGV0IChfZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgQ3lnd2luIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiL2Rldi9udWxsXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCIvXCJcbiAgbGV0IGlzX2Rpcl9zZXAgPSBXaW4zMi5pc19kaXJfc2VwXG4gIGxldCBpc19yZWxhdGl2ZSA9IFdpbjMyLmlzX3JlbGF0aXZlXG4gIGxldCBpc19pbXBsaWNpdCA9IFdpbjMyLmlzX2ltcGxpY2l0XG4gIGxldCBjaGVja19zdWZmaXggPSBXaW4zMi5jaGVja19zdWZmaXhcbiAgbGV0IGNob3Bfc3VmZml4X29wdCA9IFdpbjMyLmNob3Bfc3VmZml4X29wdFxuICBsZXQgdGVtcF9kaXJfbmFtZSA9IFVuaXgudGVtcF9kaXJfbmFtZVxuICBsZXQgcXVvdGUgPSBVbml4LnF1b3RlXG4gIGxldCBxdW90ZV9jb21tYW5kID0gVW5peC5xdW90ZV9jb21tYW5kXG4gIGxldCBiYXNlbmFtZSA9IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJuYW1lID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuZW5kXG5cbm1vZHVsZSBTeXNkZXBzID1cbiAgKHZhbCAobWF0Y2ggU3lzLm9zX3R5cGUgd2l0aFxuICAgICAgIHwgXCJXaW4zMlwiIC0+IChtb2R1bGUgV2luMzI6IFNZU0RFUFMpXG4gICAgICAgfCBcIkN5Z3dpblwiIC0+IChtb2R1bGUgQ3lnd2luOiBTWVNERVBTKVxuICAgICAgIHwgXyAtPiAobW9kdWxlIFVuaXg6IFNZU0RFUFMpKSlcblxuaW5jbHVkZSBTeXNkZXBzXG5cbmxldCBjb25jYXQgZGlybmFtZSBmaWxlbmFtZSA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBkaXJuYW1lIGluXG4gIGlmIGwgPSAwIHx8IGlzX2Rpcl9zZXAgZGlybmFtZSAobC0xKVxuICB0aGVuIGRpcm5hbWUgXiBmaWxlbmFtZVxuICBlbHNlIGRpcm5hbWUgXiBkaXJfc2VwIF4gZmlsZW5hbWVcblxubGV0IGNob3Bfc3VmZml4IG5hbWUgc3VmZiA9XG4gIGlmIGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmZcbiAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gU3RyaW5nLmxlbmd0aCBzdWZmKVxuICBlbHNlIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9zdWZmaXhcIlxuXG5sZXQgZXh0ZW5zaW9uX2xlbiBuYW1lID1cbiAgbGV0IHJlYyBjaGVjayBpMCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaTAgKGkgLSAxKVxuICAgIGVsc2UgU3RyaW5nLmxlbmd0aCBuYW1lIC0gaTBcbiAgaW5cbiAgbGV0IHJlYyBzZWFyY2hfZG90IGkgPVxuICAgIGlmIGkgPCAwIHx8IGlzX2Rpcl9zZXAgbmFtZSBpIHRoZW4gMFxuICAgIGVsc2UgaWYgbmFtZS5baV0gPSAnLicgdGhlbiBjaGVjayBpIChpIC0gMSlcbiAgICBlbHNlIHNlYXJjaF9kb3QgKGkgLSAxKVxuICBpblxuICBzZWFyY2hfZG90IChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5sZXQgZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIFwiXCIgZWxzZSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpIGxcblxubGV0IGNob3BfZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9leHRlbnNpb25cIlxuICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5sZXQgcmVtb3ZlX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBuYW1lIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpXG5cbmV4dGVybmFsIG9wZW5fZGVzYzogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuZXh0ZXJuYWwgY2xvc2VfZGVzYzogaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX2Nsb3NlXCJcblxubGV0IHBybmcgPSBsYXp5KFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcblxubGV0IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcm5kID0gKFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpKSBsYW5kIDB4RkZGRkZGIGluXG4gIGNvbmNhdCB0ZW1wX2RpciAoUHJpbnRmLnNwcmludGYgXCIlcyUwNnglc1wiIHByZWZpeCBybmQgc3VmZml4KVxuXG5cbmxldCBjdXJyZW50X3RlbXBfZGlyX25hbWUgPSByZWYgdGVtcF9kaXJfbmFtZVxuXG5sZXQgc2V0X3RlbXBfZGlyX25hbWUgcyA9IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSA6PSBzXG5sZXQgZ2V0X3RlbXBfZGlyX25hbWUgKCkgPSAhY3VycmVudF90ZW1wX2Rpcl9uYW1lXG5cbmxldCB0ZW1wX2ZpbGUgPyh0ZW1wX2RpciA9ICFjdXJyZW50X3RlbXBfZGlyX25hbWUpIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgY2xvc2VfZGVzYyhvcGVuX2Rlc2MgbmFtZSBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fZXhjbF0gMG82MDApO1xuICAgICAgbmFtZVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAxMDAwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuXG5sZXQgb3Blbl90ZW1wX2ZpbGUgPyhtb2RlID0gW09wZW5fdGV4dF0pID8ocGVybXMgPSAwbzYwMClcbiAgICAgICAgICAgICAgICAgICA/KHRlbXBfZGlyID0gIWN1cnJlbnRfdGVtcF9kaXJfbmFtZSkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICAobmFtZSxcbiAgICAgICBvcGVuX291dF9nZW4gKE9wZW5fd3Jvbmx5OjpPcGVuX2NyZWF0OjpPcGVuX2V4Y2w6Om1vZGUpIHBlcm1zIG5hbWUpXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENvbXBsZXggbnVtYmVycyAqKVxuXG50eXBlIHQgPSB7IHJlOiBmbG9hdDsgaW06IGZsb2F0IH1cblxubGV0IHplcm8gPSB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG5sZXQgb25lID0geyByZSA9IDEuMDsgaW0gPSAwLjAgfVxubGV0IGkgPSB7IHJlID0gMC4wOyBpbSA9IDEuMCB9XG5cbmxldCBhZGQgeCB5ID0geyByZSA9IHgucmUgKy4geS5yZTsgaW0gPSB4LmltICsuIHkuaW0gfVxuXG5sZXQgc3ViIHggeSA9IHsgcmUgPSB4LnJlIC0uIHkucmU7IGltID0geC5pbSAtLiB5LmltIH1cblxubGV0IG5lZyB4ID0geyByZSA9IC0uIHgucmU7IGltID0gLS4geC5pbSB9XG5cbmxldCBjb25qIHggPSB7IHJlID0geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IG11bCB4IHkgPSB7IHJlID0geC5yZSAqLiB5LnJlIC0uIHguaW0gKi4geS5pbTtcbiAgICAgICAgICAgICAgICBpbSA9IHgucmUgKi4geS5pbSArLiB4LmltICouIHkucmUgfVxuXG5sZXQgZGl2IHggeSA9XG4gIGlmIGFic19mbG9hdCB5LnJlID49IGFic19mbG9hdCB5LmltIHRoZW5cbiAgICBsZXQgciA9IHkuaW0gLy4geS5yZSBpblxuICAgIGxldCBkID0geS5yZSArLiByICouIHkuaW0gaW5cbiAgICB7IHJlID0gKHgucmUgKy4gciAqLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAoeC5pbSAtLiByICouIHgucmUpIC8uIGQgfVxuICBlbHNlXG4gICAgbGV0IHIgPSB5LnJlIC8uIHkuaW0gaW5cbiAgICBsZXQgZCA9IHkuaW0gKy4gciAqLiB5LnJlIGluXG4gICAgeyByZSA9IChyICouIHgucmUgKy4geC5pbSkgLy4gZDtcbiAgICAgIGltID0gKHIgKi4geC5pbSAtLiB4LnJlKSAvLiBkIH1cblxubGV0IGludiB4ID0gZGl2IG9uZSB4XG5cbmxldCBub3JtMiB4ID0geC5yZSAqLiB4LnJlICsuIHguaW0gKi4geC5pbVxuXG5sZXQgbm9ybSB4ID1cbiAgKCogV2F0Y2ggb3V0IGZvciBvdmVyZmxvdyBpbiBjb21wdXRpbmcgcmVeMiArIGltXjIgKilcbiAgbGV0IHIgPSBhYnNfZmxvYXQgeC5yZSBhbmQgaSA9IGFic19mbG9hdCB4LmltIGluXG4gIGlmIHIgPSAwLjAgdGhlbiBpXG4gIGVsc2UgaWYgaSA9IDAuMCB0aGVuIHJcbiAgZWxzZSBpZiByID49IGkgdGhlblxuICAgIGxldCBxID0gaSAvLiByIGluIHIgKi4gc3FydCgxLjAgKy4gcSAqLiBxKVxuICBlbHNlXG4gICAgbGV0IHEgPSByIC8uIGkgaW4gaSAqLiBzcXJ0KDEuMCArLiBxICouIHEpXG5cbmxldCBhcmcgeCA9IGF0YW4yIHguaW0geC5yZVxuXG5sZXQgcG9sYXIgbiBhID0geyByZSA9IGNvcyBhICouIG47IGltID0gc2luIGEgKi4gbiB9XG5cbmxldCBzcXJ0IHggPVxuICBpZiB4LnJlID0gMC4wICYmIHguaW0gPSAwLjAgdGhlbiB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGFic19mbG9hdCB4LnJlIGFuZCBpID0gYWJzX2Zsb2F0IHguaW0gaW5cbiAgICBsZXQgdyA9XG4gICAgICBpZiByID49IGkgdGhlbiBiZWdpblxuICAgICAgICBsZXQgcSA9IGkgLy4gciBpblxuICAgICAgICBzcXJ0KHIpICouIHNxcnQoMC41ICouICgxLjAgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgcSA9IHIgLy4gaSBpblxuICAgICAgICBzcXJ0KGkpICouIHNxcnQoMC41ICouIChxICsuIHNxcnQoMS4wICsuIHEgKi4gcSkpKVxuICAgICAgZW5kIGluXG4gICAgaWYgeC5yZSA+PSAwLjBcbiAgICB0aGVuIHsgcmUgPSB3OyAgaW0gPSAwLjUgKi4geC5pbSAvLiB3IH1cbiAgICBlbHNlIHsgcmUgPSAwLjUgKi4gaSAvLiB3OyAgaW0gPSBpZiB4LmltID49IDAuMCB0aGVuIHcgZWxzZSAtLiB3IH1cbiAgZW5kXG5cbmxldCBleHAgeCA9XG4gIGxldCBlID0gZXhwIHgucmUgaW4geyByZSA9IGUgKi4gY29zIHguaW07IGltID0gZSAqLiBzaW4geC5pbSB9XG5cbmxldCBsb2cgeCA9IHsgcmUgPSBsb2cgKG5vcm0geCk7IGltID0gYXRhbjIgeC5pbSB4LnJlIH1cblxubGV0IHBvdyB4IHkgPSBleHAgKG11bCB5IChsb2cgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBhZGRpbmcgcG9zaXRpb24uICopXG50eXBlIHBhZHR5ID1cbiAgfCBMZWZ0ICAgKCogVGV4dCBpcyBsZWZ0IGp1c3RpZmllZCAoJy0nIG9wdGlvbikuICAgICAgICAgICAgICAgKilcbiAgfCBSaWdodCAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgKG5vICctJyBvcHRpb24pLiAgICAgICAgICAgKilcbiAgfCBaZXJvcyAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgYnkgemVyb3MgKHNlZSAnMCcgb3B0aW9uKS4gKilcblxuKCoqKilcblxuKCogSW50ZWdlciBjb252ZXJzaW9uLiAqKVxudHlwZSBpbnRfY29udiA9XG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgICAgICAgICgqICAlZCB8ICUrZCB8ICUgZCAgKilcbiAgfCBJbnRfaSB8IEludF9waSB8IEludF9zaSAgICAgICAgKCogICVpIHwgJStpIHwgJSBpICAqKVxuICB8IEludF94IHwgSW50X0N4ICAgICAgICAgICAgICAgICAoKiAgJXggfCAlI3ggICAgICAgICopXG4gIHwgSW50X1ggfCBJbnRfQ1ggICAgICAgICAgICAgICAgICgqICAlWCB8ICUjWCAgICAgICAgKilcbiAgfCBJbnRfbyB8IEludF9DbyAgICAgICAgICAgICAgICAgKCogICVvIHwgJSNvICAgICAgICAqKVxuICB8IEludF91ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJXUgICAgICAgICAgICAgICopXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1ICAgICAgICgqICAlI2QgfCAlI2kgfCAlI3UgKilcblxuKCogRmxvYXQgY29udmVyc2lvbi4gKilcbnR5cGUgZmxvYXRfZmxhZ19jb252ID1cbiAgfCBGbG9hdF9mbGFnXyAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3AgICAgICAgICAgICAgICAgICAgKCogJStbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19zICAgICAgICAgICAgICAgICAgICgqICUgW2ZlRWdHRmhIXSAqKVxudHlwZSBmbG9hdF9raW5kX2NvbnYgPVxuICB8IEZsb2F0X2YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWYgfCAlK2YgfCAlIGYgICopXG4gIHwgRmxvYXRfZSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZSB8ICUrZSB8ICUgZSAgKilcbiAgfCBGbG9hdF9FICAgICAgICAgICAgICAgICAgICAgICAgKCogICVFIHwgJStFIHwgJSBFICAqKVxuICB8IEZsb2F0X2cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWcgfCAlK2cgfCAlIGcgICopXG4gIHwgRmxvYXRfRyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRyB8ICUrRyB8ICUgRyAgKilcbiAgfCBGbG9hdF9GICAgICAgICAgICAgICAgICAgICAgICAgKCogICVGIHwgJStGIHwgJSBGICAqKVxuICB8IEZsb2F0X2ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWggfCAlK2ggfCAlIGggICopXG4gIHwgRmxvYXRfSCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlSCB8ICUrSCB8ICUgSCAgKilcbiAgfCBGbG9hdF9DRiAgICAgICAgICAgICAgICAgICAgICAgKCogICUjRnwgJSsjRnwgJSAjRiAqKVxudHlwZSBmbG9hdF9jb252ID0gZmxvYXRfZmxhZ19jb252ICogZmxvYXRfa2luZF9jb252XG5cbigqKiopXG5cbigqIENoYXIgc2V0cyAoc2VlICVbLi4uXSkgYXJlIGJpdG1hcHMgaW1wbGVtZW50ZWQgYXMgMzItY2hhciBzdHJpbmdzLiAqKVxudHlwZSBjaGFyX3NldCA9IHN0cmluZ1xuXG4oKioqKVxuXG4oKiBDb3VudGVyIHVzZWQgaW4gU2NhbmYuICopXG50eXBlIGNvdW50ZXIgPVxuICB8IExpbmVfY291bnRlciAgICAgKCogICVsICAgICAgKilcbiAgfCBDaGFyX2NvdW50ZXIgICAgICgqICAlbiAgICAgICopXG4gIHwgVG9rZW5fY291bnRlciAgICAoKiAgJU4sICVMICAqKVxuXG4oKioqKVxuXG4oKiBQYWRkaW5nIG9mIHN0cmluZ3MgYW5kIG51bWJlcnMuICopXG50eXBlICgnYSwgJ2IpIHBhZGRpbmcgPVxuICAoKiBObyBwYWRkaW5nIChleDogXCIlZFwiKSAqKVxuICB8IE5vX3BhZGRpbmcgIDogKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBMaXRlcmFsIHBhZGRpbmcgKGV4OiBcIiU4ZFwiKSAqKVxuICB8IExpdF9wYWRkaW5nIDogcGFkdHkgKiBpbnQgLT4gKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBQYWRkaW5nIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKmRcIikgKilcbiAgfCBBcmdfcGFkZGluZyA6IHBhZHR5IC0+IChpbnQgLT4gJ2EsICdhKSBwYWRkaW5nXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2QsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcGFkZGluZyBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwYWRfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBQcmVjaXNpb24gb2YgZmxvYXRzIGFuZCAnMCctcGFkZGluZyBvZiBpbnRlZ2Vycy4gKilcbnR5cGUgKCdhLCAnYikgcHJlY2lzaW9uID1cbiAgKCogTm8gcHJlY2lzaW9uIChleDogXCIlZlwiKSAqKVxuICB8IE5vX3ByZWNpc2lvbiA6ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBMaXRlcmFsIHByZWNpc2lvbiAoZXg6IFwiJS4zZlwiKSAqKVxuICB8IExpdF9wcmVjaXNpb24gOiBpbnQgLT4gKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIFByZWNpc2lvbiBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKSAqKVxuICB8IEFyZ19wcmVjaXNpb24gOiAoaW50IC0+ICdhLCAnYSkgcHJlY2lzaW9uXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2YsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcHJlY2lzaW9uIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHByZWNfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBzZWUgdGhlIEN1c3RvbSBmb3JtYXQgY29tYmluYXRvciAqKVxudHlwZSAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5ID1cbiAgfCBDdXN0b21femVybyA6ICgnYSwgc3RyaW5nLCAnYSkgY3VzdG9tX2FyaXR5XG4gIHwgQ3VzdG9tX3N1Y2MgOiAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5IC0+XG4gICAgKCdhLCAneCAtPiAnYiwgJ3ggLT4gJ2MpIGN1c3RvbV9hcml0eVxuXG4oKioqKVxuXG4oKiAgICAgICAgUmVsYXRpb25hbCBmb3JtYXQgdHlwZXNcblxuSW4gdGhlIGZpcnN0IGZvcm1hdCtnYWR0cyBpbXBsZW1lbnRhdGlvbiwgdGhlIHR5cGUgZm9yICUoLi4lKSBpbiB0aGVcbmZtdCBHQURUIHdhcyBhcyBmb2xsb3dzOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICogKCdkMSwgJ3ExLCAnZDIsICdxMikgcmVhZGVyX25iX3VuaWZpZXIgKlxuICAgICgneCwgJ2IsICdjLCAnZDEsICdxMSwgJ3UpIGZtdHR5ICpcbiAgICAoJ3UsICdiLCAnYywgJ3ExLCAnZTEsICdmKSBmbXQgLT5cbiAgICAgICgoJ3gsICdiLCAnYywgJ2QyLCAncTIsICd1KSBmb3JtYXQ2IC0+ICd4LCAnYiwgJ2MsICdkMSwgJ2UxLCAnZikgZm10XG5cbk5vdGljZSB0aGF0IHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2YgcG9zaXRpb24gaW4gdGhlIGZvcm1hdCBhcmd1bWVudFxuKCgneCwgLi4sICd1KSBmb3JtYXQ2IC0+IC4uKSBpcyBlcXVhbCB0byB0aGUgJ3UgcGFyYW1ldGVyIGluICdhXG5wb3NpdGlvbiBpbiB0aGUgZm9ybWF0IHRhaWwgKCgndSwgLi4sICdmKSBmbXQpLiBUaGlzIG1lYW5zIHRoYXQgdGhlXG50eXBlIG9mIHRoZSBleHBlY3RlZCBmb3JtYXQgcGFyYW1ldGVyIGRlcGVuZHMgb2Ygd2hlcmUgdGhlICUoLi4uJSlcbmFyZSBpbiB0aGUgZm9ybWF0IHN0cmluZzpcblxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpXCJcbiAgLSA6ICh1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiB1bml0XG4gID0gPGZ1bj5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKSVkXCJcbiAgLSA6IChpbnQgLT4gdW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCBpbnQgLT4gdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IGludCAtPiB1bml0XG4gID0gPGZ1bj5cblxuT24gdGhlIGNvbnRyYXJ5LCB0aGUgbGVnYWN5IHR5cGVyIGdpdmVzIGEgY2xldmVyIHR5cGUgdGhhdCBkb2VzIG5vdFxuZGVwZW5kIG9uIHRoZSBwb3NpdGlvbiBvZiAlKC4uJSkgaW4gdGhlIGZvcm1hdCBzdHJpbmcuIEZvciBleGFtcGxlLFxuJSglKSB3aWxsIGhhdmUgdGhlIHBvbHltb3JwaGljIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpOiBpdCBjYW5cbmJlIGNvbmNhdGVuYXRlZCB0byBhbnkgZm9ybWF0IHR5cGUsIGFuZCBvbmx5IGVuZm9yY2VzIHRoZSBjb25zdHJhaW50XG50aGF0IGl0cyAnYSBhbmQgJ2YgcGFyYW1ldGVycyBhcmUgZXF1YWwgKG5vIGZvcm1hdCBhcmd1bWVudHMpIGFuZCAnZFxuYW5kICdlIGFyZSBlcXVhbCAobm8gcmVhZGVyIGFyZ3VtZW50KS5cblxuVGhlIHdlYWtlbmluZyBvZiB0aGlzIHBhcmFtZXRlciB0eXBlIGluIHRoZSBHQURUIHZlcnNpb24gYnJva2UgdXNlclxuY29kZSAoaW4gZmFjdCBpdCBlc3NlbnRpYWxseSBtYWRlICUoLi4uJSkgdW51c2FibGUgZXhjZXB0IGF0IHRoZSBsYXN0XG5wb3NpdGlvbiBvZiBhIGZvcm1hdCkuIEluIHBhcnRpY3VsYXIsIHRoZSBmb2xsb3dpbmcgd291bGQgbm90IHdvcmtcbmFueW1vcmU6XG5cbiAgZnVuIHNlcCAtPlxuICAgIEZvcm1hdC5wcmludGYgXCJmb28lKCUpYmFyJSglKWJhelwiIHNlcCBzZXBcblxuQXMgdGhlIHR5cGUtY2hlY2tlciB3b3VsZCByZXF1aXJlIHR3byAqaW5jb21wYXRpYmxlKiB0eXBlcyBmb3IgdGhlICUoJSlcbmluIGRpZmZlcmVudCBwb3NpdGlvbnMuXG5cblRoZSBzb2x1dGlvbiB0byByZWdhaW4gYSBnZW5lcmFsIHR5cGUgZm9yICUoLi4lKSBpcyB0byBnZW5lcmFsaXplIHRoaXNcbnRlY2huaXF1ZSwgbm90IG9ubHkgb24gdGhlICdkLCAnZSBwYXJhbWV0ZXJzLCBidXQgb24gYWxsIHNpeFxucGFyYW1ldGVycyBvZiBhIGZvcm1hdDogd2UgaW50cm9kdWNlIGEgXCJyZWxhdGlvbmFsXCIgdHlwZVxuICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxud2hvc2UgdmFsdWVzIGFyZSBwcm9vZnMgdGhhdCAoJ2ExLCAuLiwgJ2YxKSBhbmQgKCdhMiwgLi4sICdmMikgbW9yYWxseVxuY29ycmVzcG9uZCB0byB0aGUgc2FtZSBmb3JtYXQgdHlwZTogJ2ExIGlzIG9idGFpbmVkIGZyb20gJ2YxLCdiMSwnYzFcbmluIHRoZSBleGFjdCBzYW1lIHdheSB0aGF0ICdhMiBpcyBvYnRhaW5lZCBmcm9tICdmMiwnYjIsJ2MyLCBldGMuXG5cbkZvciBleGFtcGxlLCB0aGUgcmVsYXRpb24gYmV0d2VlbiB0d28gZm9ybWF0IHR5cGVzIGJlZ2lubmluZyB3aXRoIGEgQ2hhclxucGFyYW1ldGVyIGlzIGFzIGZvbGxvd3M6XG5cbnwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5JbiB0aGUgZ2VuZXJhbCBjYXNlLCB0aGUgdGVybSBzdHJ1Y3R1cmUgb2YgZm10dHlfcmVsIGlzIChhbG1vc3RbMV0pXG5pc29tb3JwaGljIHRvIHRoZSBmbXR0eSBvZiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb246IGV2ZXJ5XG5jb25zdHJ1Y3RvciBpcyByZS1yZWFkIHdpdGggYSBiaW5hcnksIHJlbGF0aW9uYWwgdHlwZSwgaW5zdGVhZCBvZiB0aGVcbnByZXZpb3VzIHVuYXJ5IHR5cGluZy4gZm10dHkgY2FuIHRoZW4gYmUgcmUtZGVmaW5lZCBhcyB0aGUgZGlhZ29uYWwgb2ZcbmZtdHR5X3JlbDpcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuXG5PbmNlIHdlIGhhdmUgdGhpcyBmbXR0eV9yZWwgdHlwZSBpbiBwbGFjZSwgd2UgY2FuIGdpdmUgdGhlIG1vcmVcbmdlbmVyYWwgdHlwZSB0byAlKC4uLiUpOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuV2UgYWNjZXB0IGFueSBmb3JtYXQgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2KSAodGhpcyBpc1xuY29tcGxldGVseSB1bnJlbGF0ZWQgdG8gdGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQgZm9ybWF0KSwgYnV0IGFsc29cbnJlcXVpcmUgYSBwcm9vZiB0aGF0IHRoaXMgZm9ybWF0IGlzIGluIHJlbGF0aW9uIHRvIGFub3RoZXIgZm9ybWF0IHRoYXRcbmlzIGNvbmNhdGVuYWJsZSB0byB0aGUgZm9ybWF0IHRhaWwuIFdoZW4gZXhlY3V0aW5nIGEgJSguLi4lKSBmb3JtYXRcbihpbiBjYW1saW50ZXJuYWxGb3JtYXQubWw6bWFrZV9wcmludGYgb3Igc2NhbmYubWw6bWFrZV9zY2FuZiksIHdlXG50cmFuc3R5cGUgdGhlIGZvcm1hdCBhbG9uZyB0aGlzIHJlbGF0aW9uIHVzaW5nIHRoZSAncmVjYXN0JyBmdW5jdGlvblxudG8gdHJhbnNwb3NlIGJldHdlZW4gcmVsYXRlZCBmb3JtYXQgdHlwZXMuXG5cbiAgdmFsIHJlY2FzdCA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxKSBmbXRcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdFxuXG5OT1RFIFsxXTogdGhlIHR5cGluZyBvZiBGb3JtYXRfc3Vic3RfdHkgcmVxdWlyZXMgbm90IG9uZSBmb3JtYXQgdHlwZSwgYnV0XG50d28sIG9uZSB0byBlc3RhYmxpc2ggdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0IGFyZ3VtZW50IGFuZCB0aGVcbmZpcnN0IHNpeCBwYXJhbWV0ZXJzLCBhbmQgdGhlIG90aGVyIGZvciB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXRcbmFyZ3VtZW50IGFuZCB0aGUgbGFzdCBzaXggcGFyYW1ldGVycy5cblxufCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbldoZW4gd2UgZ2VuZXJhdGUgYSBmb3JtYXQgQVNULCB3ZSBnZW5lcmF0ZSBleGFjdGx5IHRoZSBzYW1lIHdpdG5lc3NcbmZvciBib3RoIHJlbGF0aW9ucywgYW5kIHRoZSB3aXRuZXNzLWNvbnZlcnNpb24gZnVuY3Rpb25zIGluXG5jYW1saW50ZXJuYWxGb3JtYXQgZG8gcmVseSBvbiB0aGlzIGludmFyaWFudC4gRm9yIGV4YW1wbGUsIHRoZVxuZnVuY3Rpb24gdGhhdCBwcm92ZXMgdGhhdCB0aGUgcmVsYXRpb24gaXMgdHJhbnNpdGl2ZVxuXG4gIHZhbCB0cmFucyA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG5cbmRvZXMgYXNzdW1lIHRoYXQgdGhlIHR3byBpbnB1dHMgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHRlcm0gc3RydWN0dXJlXG4oYW5kIGlzIG9ubHkgZXZlcnkgdXNlZCBmb3IgYXJndW1lbnQgd2l0bmVzc2VzIG9mIHRoZVxuRm9ybWF0X3N1YnN0X3R5IGNvbnN0cnVjdG9yKS5cbiopXG5cbigqIFR5cGUgb2YgYSBibG9jayB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggICAoKiBIb3Jpem9udGFsIGJsb2NrIG5vIGxpbmUgYnJlYWtpbmcgKilcbiAgfCBQcF92Ym94ICAgKCogVmVydGljYWwgYmxvY2sgZWFjaCBicmVhayBsZWFkcyB0byBhIG5ldyBsaW5lICopXG4gIHwgUHBfaHZib3ggICgqIEhvcml6b250YWwtdmVydGljYWwgYmxvY2s6IHNhbWUgYXMgdmJveCwgZXhjZXB0IGlmIHRoaXMgYmxvY2tcbiAgICAgICAgICAgICAgICAgaXMgc21hbGwgZW5vdWdoIHRvIGZpdCBvbiBhIHNpbmdsZSBsaW5lICopXG4gIHwgUHBfaG92Ym94ICgqIEhvcml6b250YWwgb3IgVmVydGljYWwgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrICopXG4gIHwgUHBfYm94ICAgICgqIEhvcml6b250YWwgb3IgSW5kZW50IGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jaywgb3JcbiAgICAgICAgICAgICAgICAgd2hlbiBpdCBsZWFkcyB0byBhIG5ldyBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudCBsaW5lICopXG4gIHwgUHBfZml0cyAgICgqIEludGVybmFsIHVzYWdlOiB3aGVuIGEgYmxvY2sgZml0cyBvbiBhIHNpbmdsZSBsaW5lICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGZvcm1hdHRpbmdfbGl0ID1cbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF0gICAqKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAfSAgICopXG4gIHwgQnJlYWsgb2Ygc3RyaW5nICogaW50ICogaW50ICAgICAgICAgICgqIEAsIHwgQCAgfCBAOyB8IEA7PD4gKilcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQD8gICAqKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXFxuICAqKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBALiAgICopXG4gIHwgTWFnaWNfc2l6ZSBvZiBzdHJpbmcgKiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA8bj4gKilcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQEAgICAqKVxuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAJSUgICopXG4gIHwgU2Nhbl9pbmRpYyBvZiBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBYICAgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuID1cbiAgfCBPcGVuX3RhZyA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQHsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuICB8IE9wZW5fYm94IDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAWyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IHR5cGUgZWxlbWVudHMuICopXG4oKiBJbiBwYXJ0aWN1bGFyIHVzZWQgdG8gcmVwcmVzZW50ICUoLi4uJSkgYW5kICV7Li4uJX0gY29udGVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcbmFuZCAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsID1cbiAgfCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBTdHJpbmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChzdHJpbmcgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBzdHJpbmcgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVkICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDMyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDMyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50MzIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgTmF0aXZlaW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAobmF0aXZlaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgbmF0aXZlaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDY0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDY0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50NjQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgRmxvYXRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVmICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoZmxvYXQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBmbG9hdCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBCb29sX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChib29sIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgYm9vbCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEZvcm1hdF9hcmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcbiAgfCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9ycy4gKilcbiAgfCBBbHBoYV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICd4IC0+ICdjMSkgLT4gJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICd4IC0+ICdjMikgLT4gJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgVGhldGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAnYzEpIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAnYzIpIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEFueV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVXNlZCBmb3IgY3VzdG9tIGZvcm1hdHMgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgUmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEVuZF9vZl9mbXR0eSA6XG4gICAgICAoJ2YxLCAnYjEsICdjMSwgJ2QxLCAnZDEsICdmMSxcbiAgICAgICAnZjIsICdiMiwgJ2MyLCAnZDIsICdkMiwgJ2YyKSBmbXR0eV9yZWxcblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgZWxlbWVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCA9XG4gIHwgQ2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50MzIgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBOYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbltkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIG5hdGl2ZWludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50NjQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICAgICAgZmxvYXRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGZsb2F0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtiQl0gKilcbiAgICAgICgneCwgYm9vbCAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsdXNoIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IFN0cmluZ19saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGFiYyAqKVxuICAgICAgc3RyaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2hhcl9saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogeCAqKVxuICAgICAgY2hhciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgRm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IEFscGhhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ3ggLT4gJ2MpIC0+ICd4IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFRoZXRhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ2MpIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcjogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgZm9ybWF0dGluZ19saXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXR0aW5nX2dlbiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgICgnYTEsICdiLCAnYywgJ2QxLCAnZTEsICdmMSkgZm9ybWF0dGluZ19nZW4gKlxuICAgICAgKCdmMSwgJ2IsICdjLCAnZTEsICdlMiwgJ2YyKSBmbXQgLT4gKCdhMSwgJ2IsICdjLCAnZDEsICdlMiwgJ2YyKSBmbXRcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4IC0+ICdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVsuLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChzdHJpbmcgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtubE5MXSAqKVxuICAgICAgY291bnRlciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGludCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IElnbm9yZWRfcGFyYW0gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgaWdub3JlZCAqICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEN1c3RvbSBwcmludGluZyBmb3JtYXQgKFBSIzY0NTIsIEdQUiMxNDApXG5cbiAgICAgV2UgaW5jbHVkZSBhIHR5cGUgQ3VzdG9tIG9mIFwiY3VzdG9tIGNvbnZlcnRlcnNcIiwgd2hlcmUgYW5cbiAgICAgYXJiaXRyYXJ5IGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgb25lIG9yIG1vcmVcbiAgICAgYXJndW1lbnRzLiBUaGVyZSBpcyBubyBzeW50YXggZm9yIGN1c3RvbSBjb252ZXJ0ZXJzLCBpdCBpcyBvbmx5XG4gICAgIGludGVuZGVkIGZvciBjdXN0b20gcHJvY2Vzc29ycyB0aGF0IHdpc2ggdG8gcmVseSBvbiB0aGVcbiAgICAgc3RkbGliLWRlZmluZWQgZm9ybWF0IEdBRFRzLlxuXG4gICAgIEZvciBpbnN0YW5jZSBhIHByZS1wcm9jZXNzb3IgY291bGQgY2hvb3NlIHRvIGludGVycHJldCBzdHJpbmdzXG4gICAgIHByZWZpeGVkIHdpdGggW1wiIVwiXSBhcyBmb3JtYXQgc3RyaW5ncyB3aGVyZSBbJXt7IC4uLiB9fV0gaXNcbiAgICAgYSBzcGVjaWFsIGZvcm0gdG8gcGFzcyBhIHRvX3N0cmluZyBmdW5jdGlvbiwgc28gdGhhdCBvbmUgY291bGRcbiAgICAgd3JpdGU6XG5cbiAgICAge1tcbiAgICAgICB0eXBlIHQgPSB7IHggOiBpbnQ7IHkgOiBpbnQgfVxuXG4gICAgICAgbGV0IHN0cmluZ19vZl90IHQgPSBQcmludGYuc3ByaW50ZiBcInsgeCA9ICVkOyB5ID0gJWQgfVwiIHQueCB0LnlcblxuICAgICAgIFByaW50Zi5wcmludGYgIVwidCA9ICV7e3N0cmluZ19vZl90fX1cIiB7IHggPSA0MjsgeSA9IDQyIH1cbiAgICAgXX1cbiAgKilcbiAgfCBDdXN0b20gOlxuICAgICAgKCdhLCAneCwgJ3kpIGN1c3RvbV9hcml0eSAqICh1bml0IC0+ICd4KSAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBlbmQgb2YgYSBmb3JtYXQgc3BlY2lmaWNhdGlvbiAqKVxuICB8IEVuZF9vZl9mb3JtYXQgOlxuICAgICAgICAoJ2YsICdiLCAnYywgJ2UsICdlLCAnZikgZm10XG5cbigqKiopXG5cbigqIFR5cGUgZm9yIGlnbm9yZWQgcGFyYW1ldGVycyAoc2VlIFwiJV9cIikuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWQgPVxuICB8IElnbm9yZWRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9zICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9TICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX25kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2YgKilcbiAgICAgIHBhZF9vcHRpb24gKiBwcmVjX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfYm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQiAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfey4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8oLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3JlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgKilcbiAgICAgICgnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1suLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1tubE5MXSAqKVxuICAgICAgY291bnRlciAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG5cbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gIEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ICogc3RyaW5nXG5cbmxldCByZWMgZXJhc2VfcmVsIDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gIChhLCBiLCBjLCBkLCBlLCBmLFxuICAgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eVxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgX3R5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkxLCBlcmFzZV9yZWwgcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgdHlwZSBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXQgdHlwZXMuICopXG4oKiBVc2VkIGJ5OlxuICAgKiByZWFkZXJfbmJfdW5pZmllcl9vZl9mbXR0eSB0byBjb3VudCByZWFkZXJzIGluIGFuIGZtdHR5LFxuICAgKiBTY2FuZi50YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIHRvIGV4dHJhY3QgcmVhZGVycyBpbnNpZGUgJSguLi4lKSxcbiAgICogQ2FtbGludGVybmFsRm9ybWF0LmZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IHRvIGV4dHJhY3QgZm9ybWF0IHR5cGUuICopXG5cbigqXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10dHkgPVxuKilcbmxldCByZWMgY29uY2F0X2ZtdHR5IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gICAgICAgZzEgajEgZzIgajJcbiAgLlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZDEsIGExLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZDIsIGEyKSBmbXR0eV9yZWwgLT5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKGcxLCBiMSwgYzEsIGoxLCBlMSwgZjEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBlMiwgZjIpIGZtdHR5X3JlbCA9XG5mdW4gZm10dHkxIGZtdHR5MiAtPiBtYXRjaCBmbXR0eTEgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IGZtdHR5MlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdHMuICopXG5sZXQgcmVjIGNvbmNhdF9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10ID1cbmZ1biBmbXQxIGZtdDIgLT4gbWF0Y2ggZm10MSB3aXRoXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgU3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgQ2FtbF9zdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50NjQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IENoYXIgKHJlc3QpIC0+XG4gICAgQ2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBDYW1sX2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBCb29sIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBBbHBoYSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIFRoZXRhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDdXN0b20gKGFyaXR5LCBmLCByZXN0KSAtPlxuICAgIEN1c3RvbSAoYXJpdHksIGYsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFJlYWRlciByZXN0IC0+XG4gICAgUmVhZGVyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgRmx1c2ggKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBTdHJpbmdfbGl0ZXJhbCAoc3RyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBDaGFyX2xpdGVyYWwgICAoY2hyLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdF9hcmcgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZyAgIChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX25leHRfY2hhciAocmVzdCkgLT5cbiAgICBTY2FuX25leHRfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIElnbm9yZWRfcGFyYW0gKGlnbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGZtdDJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIEdhYnJpZWwgU2NoZXJlciwgcHJvamV0IFBhcnRvdXQsIElOUklBIFBhcmlzLVNhY2xheSAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ2FtbGludGVybmFsQXRvbWljIGlzIGEgZGVwZW5kZW5jeSBvZiBTdGRsaWIsIHNvIGl0IGlzIGNvbXBpbGVkIHdpdGhcbiAgIC1ub3BlcnZhc2l2ZXMuICopXG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogV2UgYXJlIG5vdCByZXVzaW5nICgnYSByZWYpIGRpcmVjdGx5IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJlYXNvblxuICAgYWJvdXQgYXRvbWljaXR5IGlmIHdlIHdpc2ggdG86IGV2ZW4gaW4gYSBzZXF1ZW50aWFsIGltcGxlbWVudGF0aW9uLFxuICAgc2lnbmFscyBhbmQgb3RoZXIgYXN5bmNocm9ub3VzIGNhbGxiYWNrcyBtaWdodCBicmVhayBhdG9taWNpdHkuICopXG50eXBlICdhIHQgPSB7bXV0YWJsZSB2OiAnYX1cblxubGV0IG1ha2UgdiA9IHt2fVxubGV0IGdldCByID0gci52XG5sZXQgc2V0IHIgdiA9IHIudiA8LSB2XG5cbigqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBzZXQgdG8gbmV2ZXIgYmUgaW5saW5lZDogRmxhbWJkYSBpc1xuICAgYWxsb3dlZCB0byBtb3ZlIHN1cnJvdW5kaW5nIGNvZGUgaW5zaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uLFxuICAgaW5jbHVkaW5nIGFsbG9jYXRpb25zLiAqKVxuXG5sZXRbQGlubGluZSBuZXZlcl0gZXhjaGFuZ2UgciB2ID1cbiAgKCogQkVHSU4gQVRPTUlDICopXG4gIGxldCBjdXIgPSByLnYgaW5cbiAgci52IDwtIHY7XG4gICgqIEVORCBBVE9NSUMgKilcbiAgY3VyXG5cbmxldFtAaW5saW5lIG5ldmVyXSBjb21wYXJlX2FuZF9zZXQgciBzZWVuIHYgPVxuICAoKiBCRUdJTiBBVE9NSUMgKilcbiAgbGV0IGN1ciA9IHIudiBpblxuICBpZiBjdXIgPT0gc2VlbiB0aGVuIChcbiAgICByLnYgPC0gdjtcbiAgICAoKiBFTkQgQVRPTUlDICopXG4gICAgdHJ1ZVxuICApIGVsc2VcbiAgICBmYWxzZVxuXG5sZXRbQGlubGluZSBuZXZlcl0gZmV0Y2hfYW5kX2FkZCByIG4gPVxuICAoKiBCRUdJTiBBVE9NSUMgKilcbiAgbGV0IGN1ciA9IHIudiBpblxuICByLnYgPC0gKGN1ciArIG4pO1xuICAoKiBFTkQgQVRPTUlDICopXG4gIGN1clxuXG5sZXQgaW5jciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgMSlcbmxldCBkZWNyIHIgPSBpZ25vcmUgKGZldGNoX2FuZF9hZGQgciAoLTEpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeGNlcHRpb25zICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgKCogZm9yIHJ1bnRpbWUvZmFpbF9uYXQuYyAqKVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuYXJyYXlfYm91bmRfZXJyb3JcIlxuICAgIChJbnZhbGlkX2FyZ3VtZW50IFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKVxuXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlXCJcbmV4dGVybmFsIHJhaXNlX25vdHJhY2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZV9ub3RyYWNlXCJcblxubGV0IGZhaWx3aXRoIHMgPSByYWlzZShGYWlsdXJlIHMpXG5sZXQgaW52YWxpZF9hcmcgcyA9IHJhaXNlKEludmFsaWRfYXJndW1lbnQgcylcblxuZXhjZXB0aW9uIEV4aXRcbmV4Y2VwdGlvbiBNYXRjaF9mYWlsdXJlID0gTWF0Y2hfZmFpbHVyZVxuZXhjZXB0aW9uIEFzc2VydF9mYWlsdXJlID0gQXNzZXJ0X2ZhaWx1cmVcbmV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50ID0gSW52YWxpZF9hcmd1bWVudFxuZXhjZXB0aW9uIEZhaWx1cmUgPSBGYWlsdXJlXG5leGNlcHRpb24gTm90X2ZvdW5kID0gTm90X2ZvdW5kXG5leGNlcHRpb24gT3V0X29mX21lbW9yeSA9IE91dF9vZl9tZW1vcnlcbmV4Y2VwdGlvbiBTdGFja19vdmVyZmxvdyA9IFN0YWNrX292ZXJmbG93XG5leGNlcHRpb24gU3lzX2Vycm9yID0gU3lzX2Vycm9yXG5leGNlcHRpb24gRW5kX29mX2ZpbGUgPSBFbmRfb2ZfZmlsZVxuZXhjZXB0aW9uIERpdmlzaW9uX2J5X3plcm8gPSBEaXZpc2lvbl9ieV96ZXJvXG5leGNlcHRpb24gU3lzX2Jsb2NrZWRfaW8gPSBTeXNfYmxvY2tlZF9pb1xuZXhjZXB0aW9uIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcblxuKCogQ29tcG9zaXRpb24gb3BlcmF0b3JzICopXG5cbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5leHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4oKiBEZWJ1Z2dpbmcgKilcblxuZXh0ZXJuYWwgX19MT0NfXyA6IHN0cmluZyA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19GSUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfRklMRVwiXG5leHRlcm5hbCBfX0xJTkVfXyA6IGludCA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcbmV4dGVybmFsIF9fUE9TX18gOiBzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsIF9fRlVOQ1RJT05fXyA6IHN0cmluZyA9IFwiJWxvY19GVU5DVElPTlwiXG5cbmV4dGVybmFsIF9fTE9DX09GX18gOiAnYSAtPiBzdHJpbmcgKiAnYSA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19MSU5FX09GX18gOiAnYSAtPiBpbnQgKiAnYSA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fUE9TX09GX18gOiAnYSAtPiAoc3RyaW5nICogaW50ICogaW50ICogaW50KSAqICdhID0gXCIlbG9jX1BPU1wiXG5cbigqIENvbXBhcmlzb25zICopXG5cbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG5sZXQgbWluIHggeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICE9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXFcIlxuXG4oKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCBvciApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuXG4oKiBJbnRlZ2VyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCAoIH4rICkgOiBpbnQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsICggbW9kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5cbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxuXG5leHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG5sZXQgbG5vdCB4ID0geCBseG9yICgtMSlcblxuZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5leHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuXG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcblxuKCogRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCAoIH4rLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoICsuICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsICggLS4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgKCAqLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCAoIC8uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsICggKiogKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFic19mbG9hdCA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZF9mbG9hdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbmV4dGVybmFsIGZsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBmbG9hdF9vZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRydW5jYXRlIDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBpbnRfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5sZXQgaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmVnX2luZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweEZGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5hbiA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GMF8wMF8wMF8wMF8wMF8wMF8wMUxcbmxldCBtYXhfZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRUZfRkZfRkZfRkZfRkZfRkZfRkZMXG5sZXQgbWluX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDAwXzEwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IGVwc2lsb25fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4M0NfQjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5cbnR5cGUgZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4oKiBTdHJpbmcgYW5kIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZXMgU3RyaW5nIGFuZCBCeXRlcyAqKVxuXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgc3RyaW5nX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCAoIF4gKSBzMSBzMiA9XG4gIGxldCBsMSA9IHN0cmluZ19sZW5ndGggczEgYW5kIGwyID0gc3RyaW5nX2xlbmd0aCBzMiBpblxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAobDEgKyBsMikgaW5cbiAgc3RyaW5nX2JsaXQgczEgMCBzIDAgbDE7XG4gIHN0cmluZ19ibGl0IHMyIDAgcyBsMSBsMjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIENoYXIgKilcblxuZXh0ZXJuYWwgaW50X29mX2NoYXIgOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaGFyX29mX2ludCA6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxubGV0IGNoYXJfb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJjaGFyX29mX2ludFwiIGVsc2UgdW5zYWZlX2NoYXJfb2ZfaW50IG5cblxuKCogVW5pdCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiBQYWlyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgZnN0IDogJ2EgKiAnYiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCBzbmQgOiAnYSAqICdiIC0+ICdiID0gXCIlZmllbGQxXCJcblxuKCogUmVmZXJlbmNlcyAqKVxuXG50eXBlICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcbmV4dGVybmFsIGluY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVpbmNyXCJcbmV4dGVybmFsIGRlY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVkZWNyXCJcblxuKCogUmVzdWx0IHR5cGUgKilcblxudHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcblxuKCogU3RyaW5nIGNvbnZlcnNpb24gZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxubGV0IHN0cmluZ19vZl9ib29sIGIgPVxuICBpZiBiIHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCJcbmxldCBib29sX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IF8gLT4gaW52YWxpZF9hcmcgXCJib29sX29mX3N0cmluZ1wiXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG4gIHwgXyAtPiBOb25lXG5cbmxldCBzdHJpbmdfb2ZfaW50IG4gPVxuICBmb3JtYXRfaW50IFwiJWRcIiBuXG5cbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IHByb3ZpZGUgdGhpcyBkaXJlY3RseSBhcyBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZS4gKilcbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5leHRlcm5hbCBzdHJpbmdfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcblxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IHN0cmluZ19sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsIHRoZW4gcyBeIFwiLlwiIGVsc2VcbiAgICBtYXRjaCBzdHJpbmdfZ2V0IHMgaSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgIHwgXyAtPiBzXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3RyaW5nX29mX2Zsb2F0IGYgPSB2YWxpZF9mbG9hdF9sZXhlbSAoZm9ybWF0X2Zsb2F0IFwiJS4xMmdcIiBmKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IHByb3ZpZGUgdGhpcyBkaXJlY3RseSBhcyBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZS4gKilcbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbigqIExpc3Qgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBMaXN0ICopXG5cbmxldCByZWMgKCBAICkgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gICAgW10gLT4gbDJcbiAgfCBoZCA6OiB0bCAtPiBoZCA6OiAodGwgQCBsMilcblxuKCogSS9PIG9wZXJhdGlvbnMgKilcblxudHlwZSBpbl9jaGFubmVsXG50eXBlIG91dF9jaGFubmVsXG5cbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9vdXQgOiBpbnQgLT4gb3V0X2NoYW5uZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFwiXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3JfaW4gOiBpbnQgLT4gaW5fY2hhbm5lbCA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cIlxuXG5sZXQgc3RkaW4gPSBvcGVuX2Rlc2NyaXB0b3JfaW4gMFxubGV0IHN0ZG91dCA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMVxubGV0IHN0ZGVyciA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMlxuXG4oKiBHZW5lcmFsIG91dHB1dCBmdW5jdGlvbnMgKilcblxudHlwZSBvcGVuX2ZsYWcgPVxuICAgIE9wZW5fcmRvbmx5IHwgT3Blbl93cm9ubHkgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXQgfCBPcGVuX3RydW5jIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnkgfCBPcGVuX3RleHQgfCBPcGVuX25vbmJsb2NrXG5cbmV4dGVybmFsIG9wZW5fZGVzYyA6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcblxuZXh0ZXJuYWwgc2V0X291dF9jaGFubmVsX25hbWU6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9vdXRfZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0KG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X291dF9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX291dCBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl90ZXh0XSAwbzY2NiBuYW1lXG5cbmxldCBvcGVuX291dF9iaW4gbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fYmluYXJ5XSAwbzY2NiBuYW1lXG5cbmV4dGVybmFsIGZsdXNoIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9mbHVzaFwiXG5cbmV4dGVybmFsIG91dF9jaGFubmVsc19saXN0IDogdW5pdCAtPiBvdXRfY2hhbm5lbCBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFwiXG5cbmxldCBmbHVzaF9hbGwgKCkgPVxuICBsZXQgcmVjIGl0ZXIgPSBmdW5jdGlvblxuICAgICAgW10gLT4gKClcbiAgICB8IGE6OmwgLT5cbiAgICAgICAgYmVnaW4gdHJ5XG4gICAgICAgICAgICBmbHVzaCBhXG4gICAgICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgICAgICAoKSAoKiBpZ25vcmUgY2hhbm5lbHMgY2xvc2VkIGR1cmluZyBhIHByZWNlZGluZyBmbHVzaC4gKilcbiAgICAgICAgZW5kO1xuICAgICAgICBpdGVyIGxcbiAgaW4gaXRlciAob3V0X2NoYW5uZWxzX2xpc3QgKCkpXG5cbmV4dGVybmFsIHVuc2FmZV9vdXRwdXQgOiBvdXRfY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0X2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9vdXRwdXRfc3RyaW5nIDogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0XCJcblxuZXh0ZXJuYWwgb3V0cHV0X2NoYXIgOiBvdXRfY2hhbm5lbCAtPiBjaGFyIC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuXG5sZXQgb3V0cHV0X2J5dGVzIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0IG9jIHMgMCAoYnl0ZXNfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXRfc3RyaW5nIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIDAgKHN0cmluZ19sZW5ndGggcylcblxubGV0IG91dHB1dCBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dFwiXG4gIGVsc2UgdW5zYWZlX291dHB1dCBvYyBzIG9mcyBsZW5cblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IHN0cmluZ19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0X3N1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyBvZnMgbGVuXG5cbmV4dGVybmFsIG91dHB1dF9ieXRlIDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuZXh0ZXJuYWwgb3V0cHV0X2JpbmFyeV9pbnQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfaW50XCJcblxuZXh0ZXJuYWwgbWFyc2hhbF90b19jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gdW5pdCBsaXN0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmxldCBvdXRwdXRfdmFsdWUgY2hhbiB2ID0gbWFyc2hhbF90b19jaGFubmVsIGNoYW4gdiBbXVxuXG5leHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XCJcbmV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX291dFwiXG5leHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX291dF9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9vdXQgb2MgPSBmbHVzaCBvYzsgY2xvc2Vfb3V0X2NoYW5uZWwgb2NcbmxldCBjbG9zZV9vdXRfbm9lcnIgb2MgPVxuICAodHJ5IGZsdXNoIG9jIHdpdGggXyAtPiAoKSk7XG4gICh0cnkgY2xvc2Vfb3V0X2NoYW5uZWwgb2Mgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX291dCA6IG91dF9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBHZW5lcmFsIGlucHV0IGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBzZXRfaW5fY2hhbm5lbF9uYW1lOiBpbl9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9pbl9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9pbihvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9pbl9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX2luIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fdGV4dF0gMCBuYW1lXG5cbmxldCBvcGVuX2luX2JpbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX2JpbmFyeV0gMCBuYW1lXG5cbmV4dGVybmFsIGlucHV0X2NoYXIgOiBpbl9jaGFubmVsIC0+IGNoYXIgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5cbmV4dGVybmFsIHVuc2FmZV9pbnB1dCA6IGluX2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9pbnB1dFwiXG5cbmxldCBpbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWMgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuICgpIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW4gaW5cbiAgICBpZiByID0gMFxuICAgIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyAob2ZzICsgcikgKGxlbiAtIHIpXG4gIGVuZFxuXG5sZXQgcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwicmVhbGx5X2lucHV0XCJcbiAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSBsZW4gaW5cbiAgcmVhbGx5X2lucHV0IGljIHMgMCBsZW47XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG5leHRlcm5hbCBpbnB1dF9zY2FuX2xpbmUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcIlxuXG5sZXQgaW5wdXRfbGluZSBjaGFuID1cbiAgbGV0IHJlYyBidWlsZF9yZXN1bHQgYnVmIHBvcyA9IGZ1bmN0aW9uXG4gICAgW10gLT4gYnVmXG4gIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBsZW4gPSBieXRlc19sZW5ndGggaGQgaW5cbiAgICAgIGJ5dGVzX2JsaXQgaGQgMCBidWYgKHBvcyAtIGxlbikgbGVuO1xuICAgICAgYnVpbGRfcmVzdWx0IGJ1ZiAocG9zIC0gbGVuKSB0bCBpblxuICBsZXQgcmVjIHNjYW4gYWNjdSBsZW4gPVxuICAgIGxldCBuID0gaW5wdXRfc2Nhbl9saW5lIGNoYW4gaW5cbiAgICBpZiBuID0gMCB0aGVuIGJlZ2luICAgICAgICAgICAgICAgICAgICgqIG4gPSAwOiB3ZSBhcmUgYXQgRU9GICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICAgIHwgXyAgLT4gYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gYWNjdVxuICAgIGVuZCBlbHNlIGlmIG4gPiAwIHRoZW4gYmVnaW4gICAgICAgICAgKCogbiA+IDA6IG5ld2xpbmUgZm91bmQgaW4gYnVmZmVyICopXG4gICAgICBsZXQgcmVzID0gYnl0ZXNfY3JlYXRlIChuIC0gMSkgaW5cbiAgICAgIGlnbm9yZSAodW5zYWZlX2lucHV0IGNoYW4gcmVzIDAgKG4gLSAxKSk7XG4gICAgICBpZ25vcmUgKGlucHV0X2NoYXIgY2hhbik7ICAgICAgICAgICAoKiBza2lwIHRoZSBuZXdsaW5lICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmVzXG4gICAgICB8ICBfIC0+IGxldCBsZW4gPSBsZW4gKyBuIC0gMSBpblxuICAgICAgICAgICAgICBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiAocmVzIDo6IGFjY3UpXG4gICAgZW5kIGVsc2UgYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAoKiBuIDwgMDogbmV3bGluZSBub3QgZm91bmQgKilcbiAgICAgIGxldCBiZWcgPSBieXRlc19jcmVhdGUgKC1uKSBpblxuICAgICAgaWdub3JlKHVuc2FmZV9pbnB1dCBjaGFuIGJlZyAwICgtbikpO1xuICAgICAgc2NhbiAoYmVnIDo6IGFjY3UpIChsZW4gLSBuKVxuICAgIGVuZFxuICBpbiBieXRlc191bnNhZmVfdG9fc3RyaW5nIChzY2FuIFtdIDApXG5cbmV4dGVybmFsIGlucHV0X2J5dGUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcbmV4dGVybmFsIGlucHV0X2JpbmFyeV9pbnQgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9pbnRcIlxuZXh0ZXJuYWwgaW5wdXRfdmFsdWUgOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5cIlxuZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX2luXCJcbmV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX2luX25vZXJyIGljID0gKHRyeSBjbG9zZV9pbiBpYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfaW4gOiBpbl9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgb3V0cHV0ICopXG5cbmxldCBwcmludF9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRvdXQgY1xubGV0IHByaW50X3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgc1xubGV0IHByaW50X2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3Rkb3V0IHNcbmxldCBwcmludF9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJpbnRfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmludF9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzOyBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxubGV0IHByaW50X25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGVycm9yICopXG5cbmxldCBwcmVycl9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRlcnIgY1xubGV0IHByZXJyX3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgc1xubGV0IHByZXJyX2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3RkZXJyIHNcbmxldCBwcmVycl9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJlcnJfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmVycl9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzOyBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxubGV0IHByZXJyX25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgaW5wdXQgKilcblxubGV0IHJlYWRfbGluZSAoKSA9IGZsdXNoIHN0ZG91dDsgaW5wdXRfbGluZSBzdGRpblxubGV0IHJlYWRfaW50ICgpID0gaW50X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2ludF9vcHQgKCkgPSBpbnRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0ICgpID0gZmxvYXRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXRfb3B0ICgpID0gZmxvYXRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcblxuKCogT3BlcmF0aW9ucyBvbiBsYXJnZSBmaWxlcyAqKVxuXG5tb2R1bGUgTGFyZ2VGaWxlID1cbiAgc3RydWN0XG4gICAgZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX291dF82NFwiXG4gICAgZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50NjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgICBleHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5fNjRcIlxuICAgIGV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX2luXzY0XCJcbiAgICBleHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgZW5kXG5cbigqIEZvcm1hdHMgKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAgPSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbiAgID0gRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm10XG4gICAgICAgICAgICAgICAqIHN0cmluZ1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnYywgJ2MsICdkKSBmb3JtYXQ2XG5cbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxuXG5sZXQgc3RyaW5nX29mX2Zvcm1hdCAoRm9ybWF0IChfZm10LCBzdHIpKSA9IHN0clxuXG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgKCBeXiApIChGb3JtYXQgKGZtdDEsIHN0cjEpKSAoRm9ybWF0IChmbXQyLCBzdHIyKSkgPVxuICBGb3JtYXQgKENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5jb25jYXRfZm10IGZtdDEgZm10MixcbiAgICAgICAgICBzdHIxIF4gXCIlLFwiIF4gc3RyMilcblxuKCogTWlzY2VsbGFuZW91cyAqKVxuXG5leHRlcm5hbCBzeXNfZXhpdCA6IGludCAtPiAnYSA9IFwiY2FtbF9zeXNfZXhpdFwiXG5cbmxldCBleGl0X2Z1bmN0aW9uID0gQ2FtbGludGVybmFsQXRvbWljLm1ha2UgZmx1c2hfYWxsXG5cbmxldCByZWMgYXRfZXhpdCBmID1cbiAgbGV0IG1vZHVsZSBBdG9taWMgPSBDYW1saW50ZXJuYWxBdG9taWMgaW5cbiAgKCogTVBSIzcyNTMsIE1QUiM3Nzk2OiBtYWtlIHN1cmUgXCJmXCIgaXMgZXhlY3V0ZWQgb25seSBvbmNlICopXG4gIGxldCBmX3lldF90b19ydW4gPSBBdG9taWMubWFrZSB0cnVlIGluXG4gIGxldCBvbGRfZXhpdCA9IEF0b21pYy5nZXQgZXhpdF9mdW5jdGlvbiBpblxuICBsZXQgbmV3X2V4aXQgKCkgPVxuICAgIGlmIEF0b21pYy5jb21wYXJlX2FuZF9zZXQgZl95ZXRfdG9fcnVuIHRydWUgZmFsc2UgdGhlbiBmICgpIDtcbiAgICBvbGRfZXhpdCAoKVxuICBpblxuICBsZXQgc3VjY2VzcyA9IEF0b21pYy5jb21wYXJlX2FuZF9zZXQgZXhpdF9mdW5jdGlvbiBvbGRfZXhpdCBuZXdfZXhpdCBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIGF0X2V4aXQgZlxuXG5sZXQgZG9fYXRfZXhpdCAoKSA9IChDYW1saW50ZXJuYWxBdG9taWMuZ2V0IGV4aXRfZnVuY3Rpb24pICgpXG5cbmxldCBleGl0IHJldGNvZGUgPVxuICBkb19hdF9leGl0ICgpO1xuICBzeXNfZXhpdCByZXRjb2RlXG5cbmxldCBfID0gcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIiBkb19hdF9leGl0XG5cbmV4dGVybmFsIG1ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21ham9yXCJcbmV4dGVybmFsIG5ha2VkX3BvaW50ZXJzX2NoZWNrZWQgOiB1bml0IC0+IGJvb2xcbiAgPSBcImNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWRcIlxubGV0ICgpID0gaWYgbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCAoKSB0aGVuIGF0X2V4aXQgbWFqb3JcblxuKCpNT0RVTEVfQUxJQVNFUyopXG5tb2R1bGUgQXJnICAgICAgICAgID0gQXJnXG5tb2R1bGUgQXJyYXkgICAgICAgID0gQXJyYXlcbm1vZHVsZSBBcnJheUxhYmVscyAgPSBBcnJheUxhYmVsc1xubW9kdWxlIEF0b21pYyAgICAgICA9IEF0b21pY1xubW9kdWxlIEJpZ2FycmF5ICAgICA9IEJpZ2FycmF5XG5tb2R1bGUgQm9vbCAgICAgICAgID0gQm9vbFxubW9kdWxlIEJ1ZmZlciAgICAgICA9IEJ1ZmZlclxubW9kdWxlIEJ5dGVzICAgICAgICA9IEJ5dGVzXG5tb2R1bGUgQnl0ZXNMYWJlbHMgID0gQnl0ZXNMYWJlbHNcbm1vZHVsZSBDYWxsYmFjayAgICAgPSBDYWxsYmFja1xubW9kdWxlIENoYXIgICAgICAgICA9IENoYXJcbm1vZHVsZSBDb21wbGV4ICAgICAgPSBDb21wbGV4XG5tb2R1bGUgRGlnZXN0ICAgICAgID0gRGlnZXN0XG5tb2R1bGUgRWl0aGVyICAgICAgID0gRWl0aGVyXG5tb2R1bGUgRXBoZW1lcm9uICAgID0gRXBoZW1lcm9uXG5tb2R1bGUgRmlsZW5hbWUgICAgID0gRmlsZW5hbWVcbm1vZHVsZSBGbG9hdCAgICAgICAgPSBGbG9hdFxubW9kdWxlIEZvcm1hdCAgICAgICA9IEZvcm1hdFxubW9kdWxlIEZ1biAgICAgICAgICA9IEZ1blxubW9kdWxlIEdjICAgICAgICAgICA9IEdjXG5tb2R1bGUgR2VubGV4ICAgICAgID0gR2VubGV4XG5tb2R1bGUgSGFzaHRibCAgICAgID0gSGFzaHRibFxubW9kdWxlIEluX2NoYW5uZWwgICA9IEluX2NoYW5uZWxcbm1vZHVsZSBJbnQgICAgICAgICAgPSBJbnRcbm1vZHVsZSBJbnQzMiAgICAgICAgPSBJbnQzMlxubW9kdWxlIEludDY0ICAgICAgICA9IEludDY0XG5tb2R1bGUgTGF6eSAgICAgICAgID0gTGF6eVxubW9kdWxlIExleGluZyAgICAgICA9IExleGluZ1xubW9kdWxlIExpc3QgICAgICAgICA9IExpc3Rcbm1vZHVsZSBMaXN0TGFiZWxzICAgPSBMaXN0TGFiZWxzXG5tb2R1bGUgTWFwICAgICAgICAgID0gTWFwXG5tb2R1bGUgTWFyc2hhbCAgICAgID0gTWFyc2hhbFxubW9kdWxlIE1vcmVMYWJlbHMgICA9IE1vcmVMYWJlbHNcbm1vZHVsZSBOYXRpdmVpbnQgICAgPSBOYXRpdmVpbnRcbm1vZHVsZSBPYmogICAgICAgICAgPSBPYmpcbm1vZHVsZSBPbyAgICAgICAgICAgPSBPb1xubW9kdWxlIE9wdGlvbiAgICAgICA9IE9wdGlvblxubW9kdWxlIE91dF9jaGFubmVsICA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGFyc2luZyAgICAgID0gUGFyc2luZ1xubW9kdWxlIFBlcnZhc2l2ZXMgICA9IFBlcnZhc2l2ZXNcbm1vZHVsZSBQcmludGV4YyAgICAgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiAgICAgICA9IFByaW50ZlxubW9kdWxlIFF1ZXVlICAgICAgICA9IFF1ZXVlXG5tb2R1bGUgUmFuZG9tICAgICAgID0gUmFuZG9tXG5tb2R1bGUgUmVzdWx0ICAgICAgID0gUmVzdWx0XG5tb2R1bGUgU2NhbmYgICAgICAgID0gU2NhbmZcbm1vZHVsZSBTZXEgICAgICAgICAgPSBTZXFcbm1vZHVsZSBTZXQgICAgICAgICAgPSBTZXRcbm1vZHVsZSBTdGFjayAgICAgICAgPSBTdGFja1xubW9kdWxlIFN0ZExhYmVscyAgICA9IFN0ZExhYmVsc1xubW9kdWxlIFN0cmVhbSAgICAgICA9IFN0cmVhbVxubW9kdWxlIFN0cmluZyAgICAgICA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ0xhYmVscyA9IFN0cmluZ0xhYmVsc1xubW9kdWxlIFN5cyAgICAgICAgICA9IFN5c1xubW9kdWxlIFVjaGFyICAgICAgICA9IFVjaGFyXG5tb2R1bGUgVW5pdCAgICAgICAgID0gVW5pdFxubW9kdWxlIFdlYWsgICAgICAgICA9IFdlYWtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIEplcmVtaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSmFuZSBTdHJlZXQgR3JvdXAgTExDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIEBkZXByZWNhdGVkIFVzZSB7IVN0ZGxpYn0gKilcblxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZVwiXG5leHRlcm5hbCByYWlzZV9ub3RyYWNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2Vfbm90cmFjZVwiXG5sZXQgaW52YWxpZF9hcmcgPSBpbnZhbGlkX2FyZ1xubGV0IGZhaWx3aXRoID0gZmFpbHdpdGhcbmV4Y2VwdGlvbiBFeGl0XG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmxldCBtaW4gPSBtaW5cbmxldCBtYXggPSBtYXhcbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICE9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXFcIlxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCAmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuICBbQEBvY2FtbC5kZXByZWNhdGVkIFwiVXNlICgmJikgaW5zdGVhZC5cIl1cbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmV4dGVybmFsICggb3IgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbiAgW0BAb2NhbWwuZGVwcmVjYXRlZCBcIlVzZSAofHwpIGluc3RlYWQuXCJdXG5leHRlcm5hbCBfX0xPQ19fIDogc3RyaW5nID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0ZJTEVfXyA6IHN0cmluZyA9IFwiJWxvY19GSUxFXCJcbmV4dGVybmFsIF9fTElORV9fIDogaW50ID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19NT0RVTEVfXyA6IHN0cmluZyA9IFwiJWxvY19NT0RVTEVcIlxuZXh0ZXJuYWwgX19QT1NfXyA6IHN0cmluZyAqIGludCAqIGludCAqIGludCA9IFwiJWxvY19QT1NcIlxuZXh0ZXJuYWwgX19MT0NfT0ZfXyA6ICdhIC0+IHN0cmluZyAqICdhID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0xJTkVfT0ZfXyA6ICdhIC0+IGludCAqICdhID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19QT1NfT0ZfXyA6ICdhIC0+IChzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQpICogJ2EgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5leHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCAoIH4rICkgOiBpbnQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsICggbW9kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5sZXQgYWJzID0gYWJzXG5sZXQgbWF4X2ludCA9IG1heF9pbnRcbmxldCBtaW5faW50ID0gbWluX2ludFxuZXh0ZXJuYWwgKCBsYW5kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCAoIGxvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCAoIGx4b3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcbmxldCBsbm90ID0gbG5vdFxuZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5leHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZXh0ZXJuYWwgKCB+LS4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgKCB+Ky4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCArLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCAoIC0uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsICggKi4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgKCAvLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCAoICoqICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFic19mbG9hdCA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZF9mbG9hdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbmV4dGVybmFsIGZsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBmbG9hdF9vZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRydW5jYXRlIDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBpbnRfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmxldCBpbmZpbml0eSA9IGluZmluaXR5XG5sZXQgbmVnX2luZmluaXR5ID0gbmVnX2luZmluaXR5XG5sZXQgbmFuID0gbmFuXG5sZXQgbWF4X2Zsb2F0ID0gbWF4X2Zsb2F0XG5sZXQgbWluX2Zsb2F0ID0gbWluX2Zsb2F0XG5sZXQgZXBzaWxvbl9mbG9hdCA9IGVwc2lsb25fZmxvYXRcbnR5cGUgbm9ucmVjIGZwY2xhc3MgPSBmcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5sZXQgKCBeICkgPSAoIF4gKVxuZXh0ZXJuYWwgaW50X29mX2NoYXIgOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmxldCBjaGFyX29mX2ludCA9IGNoYXJfb2ZfaW50XG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcbmxldCBzdHJpbmdfb2ZfYm9vbCA9IHN0cmluZ19vZl9ib29sXG5sZXQgYm9vbF9vZl9zdHJpbmcgPSBib29sX29mX3N0cmluZ1xubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCA9IGJvb2xfb2Zfc3RyaW5nX29wdFxubGV0IHN0cmluZ19vZl9pbnQgPSBzdHJpbmdfb2ZfaW50XG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcbmxldCBpbnRfb2Zfc3RyaW5nX29wdCA9IGludF9vZl9zdHJpbmdfb3B0XG5sZXQgc3RyaW5nX29mX2Zsb2F0ID0gc3RyaW5nX29mX2Zsb2F0XG5leHRlcm5hbCBmbG9hdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0ID0gZmxvYXRfb2Zfc3RyaW5nX29wdFxuZXh0ZXJuYWwgZnN0IDogJ2EgKiAnYiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCBzbmQgOiAnYSAqICdiIC0+ICdiID0gXCIlZmllbGQxXCJcbmxldCAoIEAgKSAgPSAoIEAgKVxudHlwZSBub25yZWMgaW5fY2hhbm5lbCA9IGluX2NoYW5uZWxcbnR5cGUgbm9ucmVjIG91dF9jaGFubmVsID0gb3V0X2NoYW5uZWxcbmxldCBzdGRpbiA9IHN0ZGluXG5sZXQgc3Rkb3V0ID0gc3Rkb3V0XG5sZXQgc3RkZXJyID0gc3RkZXJyXG5sZXQgcHJpbnRfY2hhciA9IHByaW50X2NoYXJcbmxldCBwcmludF9zdHJpbmcgPSBwcmludF9zdHJpbmdcbmxldCBwcmludF9ieXRlcyA9IHByaW50X2J5dGVzXG5sZXQgcHJpbnRfaW50ID0gcHJpbnRfaW50XG5sZXQgcHJpbnRfZmxvYXQgPSBwcmludF9mbG9hdFxubGV0IHByaW50X2VuZGxpbmUgPSBwcmludF9lbmRsaW5lXG5sZXQgcHJpbnRfbmV3bGluZSA9IHByaW50X25ld2xpbmVcbmxldCBwcmVycl9jaGFyID0gcHJlcnJfY2hhclxubGV0IHByZXJyX3N0cmluZyA9IHByZXJyX3N0cmluZ1xubGV0IHByZXJyX2J5dGVzID0gcHJlcnJfYnl0ZXNcbmxldCBwcmVycl9pbnQgPSBwcmVycl9pbnRcbmxldCBwcmVycl9mbG9hdCA9IHByZXJyX2Zsb2F0XG5sZXQgcHJlcnJfZW5kbGluZSA9IHByZXJyX2VuZGxpbmVcbmxldCBwcmVycl9uZXdsaW5lID0gcHJlcnJfbmV3bGluZVxubGV0IHJlYWRfbGluZSA9IHJlYWRfbGluZVxubGV0IHJlYWRfaW50ID0gcmVhZF9pbnRcbmxldCByZWFkX2ludF9vcHQgPSByZWFkX2ludF9vcHRcbmxldCByZWFkX2Zsb2F0ID0gcmVhZF9mbG9hdFxubGV0IHJlYWRfZmxvYXRfb3B0ID0gcmVhZF9mbG9hdF9vcHRcbnR5cGUgbm9ucmVjIG9wZW5fZmxhZyA9IG9wZW5fZmxhZyA9XG4gICAgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcbmxldCBvcGVuX291dCA9IG9wZW5fb3V0XG5sZXQgb3Blbl9vdXRfYmluID0gb3Blbl9vdXRfYmluXG5sZXQgb3Blbl9vdXRfZ2VuID0gb3Blbl9vdXRfZ2VuXG5sZXQgZmx1c2ggPSBmbHVzaFxubGV0IGZsdXNoX2FsbCA9IGZsdXNoX2FsbFxubGV0IG91dHB1dF9jaGFyID0gb3V0cHV0X2NoYXJcbmxldCBvdXRwdXRfc3RyaW5nID0gb3V0cHV0X3N0cmluZ1xubGV0IG91dHB1dF9ieXRlcyA9IG91dHB1dF9ieXRlc1xubGV0IG91dHB1dCA9IG91dHB1dFxubGV0IG91dHB1dF9zdWJzdHJpbmcgPSBvdXRwdXRfc3Vic3RyaW5nXG5sZXQgb3V0cHV0X2J5dGUgPSBvdXRwdXRfYnl0ZVxubGV0IG91dHB1dF9iaW5hcnlfaW50ID0gb3V0cHV0X2JpbmFyeV9pbnRcbmxldCBvdXRwdXRfdmFsdWUgPSBvdXRwdXRfdmFsdWVcbmxldCBzZWVrX291dCA9IHNlZWtfb3V0XG5sZXQgcG9zX291dCA9IHBvc19vdXRcbmxldCBvdXRfY2hhbm5lbF9sZW5ndGggPSBvdXRfY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZV9vdXQgPSBjbG9zZV9vdXRcbmxldCBjbG9zZV9vdXRfbm9lcnIgPSBjbG9zZV9vdXRfbm9lcnJcbmxldCBzZXRfYmluYXJ5X21vZGVfb3V0ID0gc2V0X2JpbmFyeV9tb2RlX291dFxubGV0IG9wZW5faW4gPSBvcGVuX2luXG5sZXQgb3Blbl9pbl9iaW4gPSBvcGVuX2luX2JpblxubGV0IG9wZW5faW5fZ2VuID0gb3Blbl9pbl9nZW5cbmxldCBpbnB1dF9jaGFyID0gaW5wdXRfY2hhclxubGV0IGlucHV0X2xpbmUgPSBpbnB1dF9saW5lXG5sZXQgaW5wdXQgPSBpbnB1dFxubGV0IHJlYWxseV9pbnB1dCA9IHJlYWxseV9pbnB1dFxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgPSByZWFsbHlfaW5wdXRfc3RyaW5nXG5sZXQgaW5wdXRfYnl0ZSA9IGlucHV0X2J5dGVcbmxldCBpbnB1dF9iaW5hcnlfaW50ID0gaW5wdXRfYmluYXJ5X2ludFxubGV0IGlucHV0X3ZhbHVlID0gaW5wdXRfdmFsdWVcbmxldCBzZWVrX2luID0gc2Vla19pblxubGV0IHBvc19pbiA9IHBvc19pblxubGV0IGluX2NoYW5uZWxfbGVuZ3RoID0gaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZV9pbiA9IGNsb3NlX2luXG5sZXQgY2xvc2VfaW5fbm9lcnIgPSBjbG9zZV9pbl9ub2VyclxubGV0IHNldF9iaW5hcnlfbW9kZV9pbiA9IHNldF9iaW5hcnlfbW9kZV9pblxubW9kdWxlIExhcmdlRmlsZSA9IExhcmdlRmlsZVxudHlwZSBub25yZWMgJ2EgcmVmID0gJ2EgcmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuZXh0ZXJuYWwgaW5jciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWluY3JcIlxuZXh0ZXJuYWwgZGVjciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWRlY3JcIlxudHlwZSBub25yZWMgKCdhLCdiKSByZXN1bHQgPSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdjLCAnYywgJ2QpIGZvcm1hdDZcbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxubGV0IHN0cmluZ19vZl9mb3JtYXQgPSBzdHJpbmdfb2ZfZm9ybWF0XG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSBcIiVpZGVudGl0eVwiXG5sZXQgKCBeXiApID0gKCBeXiApXG5sZXQgZXhpdCA9IGV4aXRcbmxldCBhdF9leGl0ID0gYXRfZXhpdFxubGV0IHZhbGlkX2Zsb2F0X2xleGVtID0gdmFsaWRfZmxvYXRfbGV4ZW1cbmxldCBkb19hdF9leGl0ID0gZG9fYXRfZXhpdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICBOaWNvbGFzIE9qZWRhIEJhciwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBuZWcgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsIGFkZCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgc3ViIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCBtdWwgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsIGRpdiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgcmVtIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbWEgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbWFfZmxvYXRcIiBcImNhbWxfZm1hXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFicyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuXG5sZXQgemVybyA9IDAuXG5sZXQgb25lID0gMS5cbmxldCBtaW51c19vbmUgPSAtMS5cbmxldCBpbmZpbml0eSA9IFN0ZGxpYi5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IFN0ZGxpYi5uZWdfaW5maW5pdHlcbmxldCBuYW4gPSBTdGRsaWIubmFuXG5sZXQgaXNfZmluaXRlICh4OiBmbG9hdCkgPSB4IC0uIHggPSAwLlxubGV0IGlzX2luZmluaXRlICh4OiBmbG9hdCkgPSAxLiAvLiB4ID0gMC5cbmxldCBpc19uYW4gKHg6IGZsb2F0KSA9IHggPD4geFxuXG5sZXQgcGkgPSAweDEuOTIxZmI1NDQ0MmQxOHArMVxubGV0IG1heF9mbG9hdCA9IFN0ZGxpYi5tYXhfZmxvYXRcbmxldCBtaW5fZmxvYXQgPSBTdGRsaWIubWluX2Zsb2F0XG5sZXQgZXBzaWxvbiA9IFN0ZGxpYi5lcHNpbG9uX2Zsb2F0XG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nX29wdCA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdfb3B0XG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9mbG9hdFxudHlwZSBmcGNsYXNzID0gU3RkbGliLmZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHBvdyA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2JydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NicnRfZmxvYXRcIiBcImNhbWxfY2JydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwMl9mbG9hdFwiIFwiY2FtbF9leHAyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cyX2Zsb2F0XCIgXCJjYW1sX2xvZzJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZl9mbG9hdFwiIFwiY2FtbF9lcmZcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZmNfZmxvYXRcIiBcImNhbWxfZXJmY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0cnVuYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RydW5jX2Zsb2F0XCIgXCJjYW1sX3RydW5jXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHJvdW5kIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcm91bmRfZmxvYXRcIiBcImNhbWxfcm91bmRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IGlzX2ludGVnZXIgeCA9IHggPSB0cnVuYyB4ICYmIGlzX2Zpbml0ZSB4XG5cbmV4dGVybmFsIG5leHRfYWZ0ZXIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXRcIiBcImNhbWxfbmV4dGFmdGVyXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHN1Y2MgeCA9IG5leHRfYWZ0ZXIgeCBpbmZpbml0eVxubGV0IHByZWQgeCA9IG5leHRfYWZ0ZXIgeCBuZWdfaW5maW5pdHlcblxuZXh0ZXJuYWwgY29weV9zaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaWduX2JpdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBib29sXG4gID0gXCJjYW1sX3NpZ25iaXRfZmxvYXRcIiBcImNhbWxfc2lnbmJpdFwiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG50eXBlIHQgPSBmbG9hdFxuZXh0ZXJuYWwgY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludCA9IFwiJWNvbXBhcmVcIlxubGV0IGVxdWFsIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXRbQGlubGluZV0gbWluICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggfHwgaXNfbmFuIHkgdGhlbiAobmFuLCBuYW4pXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LCB5KSBlbHNlICh5LCB4KVxuXG5sZXRbQGlubGluZV0gbWluX251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggdGhlbiAoeSx5KVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4gKHgseClcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgseSkgZWxzZSAoeSx4KVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6IGludCAtPiBpbnQgLT4gaW50IC0+IGZsb2F0IC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBmbG9hdGFycmF5XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogdCAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgbGV0IHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBmb3IgaSA9IG9mcyB0byBvZnMgKyBsZW4gLSAxIGRvIHVuc2FmZV9zZXQgYSBpIHYgZG9uZVxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0OiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfYmxpdFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNoZWNrIGEgb2ZzIGxlbiBtc2cgPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPCAwIHx8IG9mcyArIGxlbiA+IGxlbmd0aCBhIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGxldCBtYWtlIG4gdiA9XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBuIGluXG4gICAgdW5zYWZlX2ZpbGwgcmVzdWx0IDAgbiB2O1xuICAgIHJlc3VsdFxuXG4gIGxldCBpbml0IGwgZiA9XG4gICAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmluaXRcIlxuICAgIGVsc2VcbiAgICAgIGxldCByZXMgPSBjcmVhdGUgbCBpblxuICAgICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICAgIGRvbmU7XG4gICAgICByZXNcblxuICBsZXQgYXBwZW5kIGExIGEyID1cbiAgICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgICBsZXQgbDIgPSBsZW5ndGggYTIgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChsMSArIGwyKSBpblxuICAgIHVuc2FmZV9ibGl0IGExIDAgcmVzdWx0IDAgbDE7XG4gICAgdW5zYWZlX2JsaXQgYTIgMCByZXN1bHQgbDEgbDI7XG4gICAgcmVzdWx0XG5cbiAgKCogbmV4dCAzIGZ1bmN0aW9uczogbW9kaWZpZWQgY29weSBvZiBjb2RlIGZyb20gc3RyaW5nLm1sICopXG4gIGxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID1cbiAgICBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5jb25jYXRcIlxuXG4gIGxldCByZWMgc3VtX2xlbmd0aHMgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgYWNjKSBhY2MpIHRsXG5cbiAgbGV0IGNvbmNhdCBsID1cbiAgICBsZXQgbGVuID0gc3VtX2xlbmd0aHMgMCBsIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgbCBpID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgKGkgPSBsZW4pXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGxldCBobGVuID0gbGVuZ3RoIGhkIGluXG4gICAgICAgIHVuc2FmZV9ibGl0IGhkIDAgcmVzdWx0IGkgaGxlbjtcbiAgICAgICAgbG9vcCB0bCAoaSArIGhsZW4pXG4gICAgaW5cbiAgICBsb29wIGwgMDtcbiAgICByZXN1bHRcblxuICBsZXQgc3ViIGEgb2ZzIGxlbiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuc3ViXCI7XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBhIG9mcyByZXN1bHQgMCBsZW47XG4gICAgcmVzdWx0XG5cbiAgbGV0IGNvcHkgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbCBpblxuICAgIHVuc2FmZV9ibGl0IGEgMCByZXN1bHQgMCBsO1xuICAgIHJlc3VsdFxuXG4gIGxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5maWxsXCI7XG4gICAgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxuICBsZXQgYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW4gPVxuICAgIGNoZWNrIHNyYyBzb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICBjaGVjayBkc3QgZG9mcyBsZW4gXCJGbG9hdC5hcnJheS5ibGl0XCI7XG4gICAgdW5zYWZlX2JsaXQgc3JjIHNvZnMgZHN0IGRvZnMgbGVuXG5cbiAgbGV0IHRvX2xpc3QgYSA9XG4gICAgTGlzdC5pbml0IChsZW5ndGggYSkgKHVuc2FmZV9nZXQgYSlcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICAgIGxldCByZWMgZmlsbCBpIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IHJlc3VsdFxuICAgICAgfCBoIDo6IHQgLT4gdW5zYWZlX3NldCByZXN1bHQgaSBoOyBmaWxsIChpICsgMSkgdFxuICAgIGluXG4gICAgZmlsbCAwIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyMiBmIGEgYiA9XG4gICAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2VcbiAgICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG4gIGxldCBtYXAgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICBsZXQgbWFwMiBmIGEgYiA9XG4gICAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICAgIGlmIGxhIDw+IGxiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyaSBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4gIGxldCBtYXBpIGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gICAgbGV0IHIgPSByZWYgeCBpblxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gICAgbGV0IHIgPSByZWYgeCBpblxuICAgIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICAgIGRvbmU7XG4gICAgIXJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGV4aXN0cyBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb3JfYWxsIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBsb29wIChpICsgMSlcbiAgICAgIGVsc2UgZmFsc2UgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1lbSB4IGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBidXQgc2xpZ2h0bHkgZGlmZmVyZW50ICopXG4gIGxldCBtZW1faWVlZSB4IGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIHggPSAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBleGNlcHRpb24gQm90dG9tIG9mIGludFxuICBsZXQgc29ydCBjbXAgYSA9XG4gICAgbGV0IG1heHNvbiBsIGkgPVxuICAgICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgICAgaWYgaTMxKzIgPCBsIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICAgIXhcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgICB0aGVuIGkzMSsxXG4gICAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgICBpblxuICAgIGxldCByZWMgdHJpY2tsZWRvd24gbCBpIGUgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGEgaSBlO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IHRyaWNrbGUgbCBpIGUgPSB0cnkgdHJpY2tsZWRvd24gbCBpIGUgd2l0aCBCb3R0b20gaSAtPiBzZXQgYSBpIGUgaW5cbiAgICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICBidWJibGVkb3duIGwgalxuICAgIGluXG4gICAgbGV0IGJ1YmJsZSBsIGkgPSB0cnkgYnViYmxlZG93biBsIGkgd2l0aCBCb3R0b20gaSAtPiBpIGluXG4gICAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgICAgYXNzZXJ0IChpIDw+IGZhdGhlcik7XG4gICAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgICBpZiBmYXRoZXIgPiAwIHRoZW4gdHJpY2tsZXVwIGZhdGhlciBlIGVsc2Ugc2V0IGEgMCBlO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGEgaSBlO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGZvciBpID0gKGwgKyAxKSAvIDMgLSAxIGRvd250byAwIGRvIHRyaWNrbGUgbCBpIChnZXQgYSBpKTsgZG9uZTtcbiAgICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgMCk7XG4gICAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gICAgZG9uZTtcbiAgICBpZiBsID4gMSB0aGVuIChsZXQgZSA9IChnZXQgYSAxKSBpbiBzZXQgYSAxIChnZXQgYSAwKTsgc2V0IGEgMCBlKVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCwgZXhjZXB0IGZvciB0aGUgY2FsbCB0byBbY3JlYXRlXSAqKVxuICBsZXQgY3V0b2ZmID0gNVxuICBsZXQgc3RhYmxlX3NvcnQgY21wIGEgPVxuICAgIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgICAgbGV0IHJlYyBsb29wIGkxIHMxIGkyIHMyIGQgPVxuICAgICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICAgIGxldCBpMSA9IGkxICsgMSBpblxuICAgICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgc2V0IGRzdCBkIHMyO1xuICAgICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgICAgbG9vcCBpMSBzMSBpMiAoZ2V0IHNyYzIgaTIpIChkICsgMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICAgIGVuZFxuICAgICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gICAgaW5cbiAgICBsZXQgaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgICBsZXQgaiA9IHJlZiAoZHN0b2ZzICsgaSAtIDEpIGluXG4gICAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgICBkZWNyIGo7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICAgIGRvbmU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgaWYgbGVuIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgICBzb3J0dG8gKHNyY29mcyArIGwxKSBkc3QgKGRzdG9mcyArIGwxKSBsMjtcbiAgICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gMCBhIDAgbCBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgICBsZXQgdCA9IGNyZWF0ZSBsMiBpblxuICAgICAgc29ydHRvIGwxIHQgMCBsMjtcbiAgICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICAgIGVuZFxuXG4gIGxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcWkgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9yZXZfbGlzdCBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCBhID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgW10gLT4gYVxuICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICBpblxuICAgIGZpbGwgKGxlbi0xKSBsXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9zZXEgaSA9XG4gICAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gICAgb2ZfcmV2X2xpc3QgbFxuXG5cbiAgbGV0IG1hcF90b19hcnJheSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsID0gMCB0aGVuIFt8IHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gQXJyYXkubWFrZSBsIChmICh1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgbGV0IG1hcF9mcm9tX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbmVuZFxuXG5tb2R1bGUgQXJyYXlMYWJlbHMgPSBBcnJheVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3JcbiAgIFRoaXMgaXMgYSBsYWdnZWQtRmlib25hY2NpIEYoNTUsIDI0LCArKSB3aXRoIGEgbW9kaWZpZWQgYWRkaXRpb25cbiAgIGZ1bmN0aW9uIHRvIGVuaGFuY2UgdGhlIG1peGluZyBvZiBiaXRzLlxuICAgSWYgd2UgdXNlIG5vcm1hbCBhZGRpdGlvbiwgdGhlIGxvdy1vcmRlciBiaXQgZmFpbHMgdGVzdHMgMSBhbmQgN1xuICAgb2YgdGhlIERpZWhhcmQgdGVzdCBzdWl0ZSwgYW5kIGJpdHMgMSBhbmQgMiBhbHNvIGZhaWwgdGVzdCA3LlxuICAgSWYgd2UgdXNlIG11bHRpcGxpY2F0aW9uIGFzIHN1Z2dlc3RlZCBieSBNYXJzYWdsaWEsIGl0IGRvZXNuJ3QgZmFyZVxuICAgbXVjaCBiZXR0ZXIuXG4gICBCeSBtaXhpbmcgdGhlIGJpdHMgb2Ygb25lIG9mIHRoZSBudW1iZXJzIGJlZm9yZSBhZGRpdGlvbiAoWE9SIHRoZVxuICAgNSBoaWdoLW9yZGVyIGJpdHMgaW50byB0aGUgbG93LW9yZGVyIGJpdHMpLCB3ZSBnZXQgYSBnZW5lcmF0b3IgdGhhdFxuICAgcGFzc2VzIGFsbCB0aGUgRGllaGFyZCB0ZXN0cy5cbiopXG5cbmV4dGVybmFsIHJhbmRvbV9zZWVkOiB1bml0IC0+IGludCBhcnJheSA9IFwiY2FtbF9zeXNfcmFuZG9tX3NlZWRcIlxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSB7IHN0IDogaW50IGFycmF5OyBtdXRhYmxlIGlkeCA6IGludCB9XG5cbiAgbGV0IG5ld19zdGF0ZSAoKSA9IHsgc3QgPSBBcnJheS5tYWtlIDU1IDA7IGlkeCA9IDAgfVxuICBsZXQgYXNzaWduIHN0MSBzdDIgPVxuICAgIEFycmF5LmJsaXQgc3QyLnN0IDAgc3QxLnN0IDAgNTU7XG4gICAgc3QxLmlkeCA8LSBzdDIuaWR4XG5cblxuICBsZXQgZnVsbF9pbml0IHMgc2VlZCA9XG4gICAgbGV0IGNvbWJpbmUgYWNjdSB4ID0gRGlnZXN0LnN0cmluZyAoYWNjdSBeIEludC50b19zdHJpbmcgeCkgaW5cbiAgICBsZXQgZXh0cmFjdCBkID1cbiAgICAgIENoYXIuY29kZSBkLlswXSArIChDaGFyLmNvZGUgZC5bMV0gbHNsIDgpICsgKENoYXIuY29kZSBkLlsyXSBsc2wgMTYpXG4gICAgICArIChDaGFyLmNvZGUgZC5bM10gbHNsIDI0KVxuICAgIGluXG4gICAgbGV0IHNlZWQgPSBpZiBBcnJheS5sZW5ndGggc2VlZCA9IDAgdGhlbiBbfCAwIHxdIGVsc2Ugc2VlZCBpblxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIHNlZWQgaW5cbiAgICBmb3IgaSA9IDAgdG8gNTQgZG9cbiAgICAgIHMuc3QuKGkpIDwtIGk7XG4gICAgZG9uZTtcbiAgICBsZXQgYWNjdSA9IHJlZiBcInhcIiBpblxuICAgIGZvciBpID0gMCB0byA1NCArIEludC5tYXggNTUgbCBkb1xuICAgICAgbGV0IGogPSBpIG1vZCA1NSBpblxuICAgICAgbGV0IGsgPSBpIG1vZCBsIGluXG4gICAgICBhY2N1IDo9IGNvbWJpbmUgIWFjY3Ugc2VlZC4oayk7XG4gICAgICBzLnN0LihqKSA8LSAocy5zdC4oaikgbHhvciBleHRyYWN0ICFhY2N1KSBsYW5kIDB4M0ZGRkZGRkY7ICAoKiBQUiM1NTc1ICopXG4gICAgZG9uZTtcbiAgICBzLmlkeCA8LSAwXG5cblxuICBsZXQgbWFrZSBzZWVkID1cbiAgICBsZXQgcmVzdWx0ID0gbmV3X3N0YXRlICgpIGluXG4gICAgZnVsbF9pbml0IHJlc3VsdCBzZWVkO1xuICAgIHJlc3VsdFxuXG5cbiAgbGV0IG1ha2Vfc2VsZl9pbml0ICgpID0gbWFrZSAocmFuZG9tX3NlZWQgKCkpXG5cbiAgbGV0IGNvcHkgcyA9XG4gICAgbGV0IHJlc3VsdCA9IG5ld19zdGF0ZSAoKSBpblxuICAgIGFzc2lnbiByZXN1bHQgcztcbiAgICByZXN1bHRcblxuXG4gICgqIFJldHVybnMgMzAgcmFuZG9tIGJpdHMgYXMgYW4gaW50ZWdlciAwIDw9IHggPCAxMDczNzQxODI0ICopXG4gIGxldCBiaXRzIHMgPVxuICAgIHMuaWR4IDwtIChzLmlkeCArIDEpIG1vZCA1NTtcbiAgICBsZXQgY3VydmFsID0gcy5zdC4ocy5pZHgpIGluXG4gICAgbGV0IG5ld3ZhbCA9IHMuc3QuKChzLmlkeCArIDI0KSBtb2QgNTUpXG4gICAgICAgICAgICAgICAgICsgKGN1cnZhbCBseG9yICgoY3VydmFsIGxzciAyNSkgbGFuZCAweDFGKSkgaW5cbiAgICBsZXQgbmV3dmFsMzAgPSBuZXd2YWwgbGFuZCAweDNGRkZGRkZGIGluICAoKiBQUiM1NTc1ICopXG4gICAgcy5zdC4ocy5pZHgpIDwtIG5ld3ZhbDMwO1xuICAgIG5ld3ZhbDMwXG5cblxuICBsZXQgcmVjIGludGF1eCBzIG4gPVxuICAgIGxldCByID0gYml0cyBzIGluXG4gICAgbGV0IHYgPSByIG1vZCBuIGluXG4gICAgaWYgciAtIHYgPiAweDNGRkZGRkZGIC0gbiArIDEgdGhlbiBpbnRhdXggcyBuIGVsc2UgdlxuXG4gIGxldCBpbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPiAweDNGRkZGRkZGIHx8IGJvdW5kIDw9IDBcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludFwiXG4gICAgZWxzZSBpbnRhdXggcyBib3VuZFxuXG4gIGxldCByZWMgaW50NjNhdXggcyBuID1cbiAgICBsZXQgbWF4X2ludF8zMiA9ICgxIGxzbCAzMCkgKyAweDNGRkZGRkZGIGluICgqIDB4N0ZGRkZGRkYgKilcbiAgICBsZXQgYjEgPSBiaXRzIHMgaW5cbiAgICBsZXQgYjIgPSBiaXRzIHMgaW5cbiAgICBsZXQgKHIsIG1heF9pbnQpID1cbiAgICAgIGlmIG4gPD0gbWF4X2ludF8zMiB0aGVuXG4gICAgICAgICgqIDMxIHJhbmRvbSBiaXRzIG9uIGJvdGggNjQtYml0IE9DYW1sIGFuZCBKYXZhU2NyaXB0LlxuICAgICAgICAgICBVc2UgdXBwZXIgMTUgYml0cyBvZiBiMSBhbmQgMTYgYml0cyBvZiBiMi4gKilcbiAgICAgICAgbGV0IGJwb3MgPVxuICAgICAgICAgICgoKGIyIGxhbmQgMHgzRkZGQzAwMCkgbHNsIDEpIGxvciAoYjEgbHNyIDE1KSlcbiAgICAgICAgaW5cbiAgICAgICAgICAoYnBvcywgbWF4X2ludF8zMilcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGIzID0gYml0cyBzIGluXG4gICAgICAgICgqIDYyIHJhbmRvbSBiaXRzIG9uIDY0LWJpdCBPQ2FtbDsgdW5yZWFjaGFibGUgb24gSmF2YVNjcmlwdC5cbiAgICAgICAgICAgVXNlIHVwcGVyIDIwIGJpdHMgb2YgYjEgYW5kIDIxIGJpdHMgb2YgYjIgYW5kIGIzLiAqKVxuICAgICAgICBsZXQgYnBvcyA9XG4gICAgICAgICAgKCgoKGIzIGxhbmQgMHgzRkZGRkUwMCkgbHNsIDEyKSBsb3IgKGIyIGxzciA5KSkgbHNsIDIwKVxuICAgICAgICAgICAgbG9yIChiMSBsc3IgMTApXG4gICAgICAgIGluXG4gICAgICAgICAgKGJwb3MsIG1heF9pbnQpXG4gICAgaW5cbiAgICBsZXQgdiA9IHIgbW9kIG4gaW5cbiAgICBpZiByIC0gdiA+IG1heF9pbnQgLSBuICsgMSB0aGVuIGludDYzYXV4IHMgbiBlbHNlIHZcblxuICBsZXQgZnVsbF9pbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5mdWxsX2ludFwiXG4gICAgZWxzZSBpZiBib3VuZCA+IDB4M0ZGRkZGRkYgdGhlblxuICAgICAgaW50NjNhdXggcyBib3VuZFxuICAgIGVsc2VcbiAgICAgIGludGF1eCBzIGJvdW5kXG5cblxuICBsZXQgcmVjIGludDMyYXV4IHMgbiA9XG4gICAgbGV0IGIxID0gSW50MzIub2ZfaW50IChiaXRzIHMpIGluXG4gICAgbGV0IGIyID0gSW50MzIuc2hpZnRfbGVmdCAoSW50MzIub2ZfaW50IChiaXRzIHMgbGFuZCAxKSkgMzAgaW5cbiAgICBsZXQgciA9IEludDMyLmxvZ29yIGIxIGIyIGluXG4gICAgbGV0IHYgPSBJbnQzMi5yZW0gciBuIGluXG4gICAgaWYgSW50MzIuc3ViIHIgdiA+IEludDMyLmFkZCAoSW50MzIuc3ViIEludDMyLm1heF9pbnQgbikgMWxcbiAgICB0aGVuIGludDMyYXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQzMiBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50MzJcIlxuICAgIGVsc2UgaW50MzJhdXggcyBib3VuZFxuXG5cbiAgbGV0IHJlYyBpbnQ2NGF1eCBzIG4gPVxuICAgIGxldCBiMSA9IEludDY0Lm9mX2ludCAoYml0cyBzKSBpblxuICAgIGxldCBiMiA9IEludDY0LnNoaWZ0X2xlZnQgKEludDY0Lm9mX2ludCAoYml0cyBzKSkgMzAgaW5cbiAgICBsZXQgYjMgPSBJbnQ2NC5zaGlmdF9sZWZ0IChJbnQ2NC5vZl9pbnQgKGJpdHMgcyBsYW5kIDcpKSA2MCBpblxuICAgIGxldCByID0gSW50NjQubG9nb3IgYjEgKEludDY0LmxvZ29yIGIyIGIzKSBpblxuICAgIGxldCB2ID0gSW50NjQucmVtIHIgbiBpblxuICAgIGlmIEludDY0LnN1YiByIHYgPiBJbnQ2NC5hZGQgKEludDY0LnN1YiBJbnQ2NC5tYXhfaW50IG4pIDFMXG4gICAgdGhlbiBpbnQ2NGF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50NjQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMExcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0XCJcbiAgICBlbHNlIGludDY0YXV4IHMgYm91bmRcblxuXG4gIGxldCBuYXRpdmVpbnQgPVxuICAgIGlmIE5hdGl2ZWludC5zaXplID0gMzJcbiAgICB0aGVuIGZ1biBzIGJvdW5kIC0+IE5hdGl2ZWludC5vZl9pbnQzMiAoaW50MzIgcyAoTmF0aXZlaW50LnRvX2ludDMyIGJvdW5kKSlcbiAgICBlbHNlIGZ1biBzIGJvdW5kIC0+IEludDY0LnRvX25hdGl2ZWludCAoaW50NjQgcyAoSW50NjQub2ZfbmF0aXZlaW50IGJvdW5kKSlcblxuXG4gICgqIFJldHVybnMgYSBmbG9hdCAwIDw9IHggPD0gMSB3aXRoIGF0IG1vc3QgNjAgYml0cyBvZiBwcmVjaXNpb24uICopXG4gIGxldCByYXdmbG9hdCBzID1cbiAgICBsZXQgc2NhbGUgPSAxMDczNzQxODI0LjAgICgqIDJeMzAgKilcbiAgICBhbmQgcjEgPSBTdGRsaWIuZmxvYXQgKGJpdHMgcylcbiAgICBhbmQgcjIgPSBTdGRsaWIuZmxvYXQgKGJpdHMgcylcbiAgICBpbiAocjEgLy4gc2NhbGUgKy4gcjIpIC8uIHNjYWxlXG5cblxuICBsZXQgZmxvYXQgcyBib3VuZCA9IHJhd2Zsb2F0IHMgKi4gYm91bmRcblxuICBsZXQgYm9vbCBzID0gKGJpdHMgcyBsYW5kIDEgPSAwKVxuXG4gIGxldCBiaXRzMzIgcyA9XG4gICAgbGV0IGIxID0gSW50MzIuKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKG9mX2ludCAoYml0cyBzKSkgMTQpIGluICAoKiAxNiBiaXRzICopXG4gICAgbGV0IGIyID0gSW50MzIuKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKG9mX2ludCAoYml0cyBzKSkgMTQpIGluICAoKiAxNiBiaXRzICopXG4gICAgSW50MzIuKGxvZ29yIGIxIChzaGlmdF9sZWZ0IGIyIDE2KSlcblxuICBsZXQgYml0czY0IHMgPVxuICAgIGxldCBiMSA9IEludDY0LihzaGlmdF9yaWdodF9sb2dpY2FsIChvZl9pbnQgKGJpdHMgcykpIDkpIGluICAoKiAyMSBiaXRzICopXG4gICAgbGV0IGIyID0gSW50NjQuKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKG9mX2ludCAoYml0cyBzKSkgOSkgaW4gICgqIDIxIGJpdHMgKilcbiAgICBsZXQgYjMgPSBJbnQ2NC4oc2hpZnRfcmlnaHRfbG9naWNhbCAob2ZfaW50IChiaXRzIHMpKSA4KSBpbiAgKCogMjIgYml0cyAqKVxuICAgIEludDY0Lihsb2dvciBiMSAobG9nb3IgKHNoaWZ0X2xlZnQgYjIgMjEpIChzaGlmdF9sZWZ0IGIzIDQyKSkpXG5cbiAgbGV0IG5hdGl2ZWJpdHMgPVxuICAgIGlmIE5hdGl2ZWludC5zaXplID0gMzJcbiAgICB0aGVuIGZ1biBzIC0+IE5hdGl2ZWludC5vZl9pbnQzMiAoYml0czMyIHMpXG4gICAgZWxzZSBmdW4gcyAtPiBJbnQ2NC50b19uYXRpdmVpbnQgKGJpdHM2NCBzKVxuXG5lbmRcblxuKCogVGhpcyBpcyB0aGUgc3RhdGUgeW91IGdldCB3aXRoIFtpbml0IDI3MTgyODE4XSBhbmQgdGhlbiBhcHBseWluZ1xuICAgdGhlIFwibGFuZCAweDNGRkZGRkZGXCIgZmlsdGVyIHRvIHRoZW0uICBTZWUgIzU1NzUsICM1NzkzLCAjNTk3Ny4gKilcbmxldCBkZWZhdWx0ID0ge1xuICBTdGF0ZS5zdCA9IFt8XG4gICAgICAweDNhZTI1MjJiOyAweDFkOGQ0NjM0OyAweDE1YjRmYWQwOyAweDE4YjE0YWNlOyAweDEyZjhhM2M0OyAweDNiMDg2YzQ3O1xuICAgICAgMHgxNmQ0NjdkNjsgMHgxMDFkOTFjNzsgMHgzMjFkZjE3NzsgMHgwMTc2YzE5MzsgMHgxZmY3MmJmMTsgMHgxZTg4OTEwOTtcbiAgICAgIDB4MGI0NjRiMTg7IDB4MmI4NmI5N2M7IDB4MDg5MWRhNDg7IDB4MDMxMzc0NjM7IDB4MDg1YWM1YTE7IDB4MTVkNjFmMmY7XG4gICAgICAweDNiY2VkMzU5OyAweDI5YzFjMTMyOyAweDNhODY3NjZlOyAweDM2NmQ4Yzg2OyAweDFmNWI2MjIyOyAweDNjZTFiNTlmO1xuICAgICAgMHgyZWJmNzhlMTsgMHgyN2NkMWI4NjsgMHgyNThmM2RjMzsgMHgzODlhODE5NDsgMHgwMmU0YzQ0YzsgMHgxOGM0M2Y3ZDtcbiAgICAgIDB4MGY2ZTUzNGY7IDB4MWU3ZGYzNTk7IDB4MDU1ZDBiN2U7IDB4MTBlODRlN2U7IDB4MTI2MTk4ZTQ7IDB4MGU3NzIyY2I7XG4gICAgICAweDFjYmVkZTI4OyAweDMzOTFiOTY0OyAweDNkNDBlOTJhOyAweDBjNTk5MzNkOyAweDBiOGNkMGI3OyAweDI0ZWZmZjFjO1xuICAgICAgMHgyODAzZmRhYTsgMHgwOGViYzcyZTsgMHgwZjUyMmUzMjsgMHgwNTM5OGVkYzsgMHgyMTQ0YTA0YzsgMHgwYWVmM2NiZDtcbiAgICAgIDB4MDFhZDQ3MTk7IDB4MzViOTNjZDY7IDB4MmE1NTlkNGY7IDB4MWU2ZmQ3Njg7IDB4MjZlMjdmMzY7IDB4MTg2ZjE4YzM7XG4gICAgICAweDJmYmY5NjdhO1xuICAgIHxdO1xuICBTdGF0ZS5pZHggPSAwO1xufVxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgZGVmYXVsdFxubGV0IGludCBib3VuZCA9IFN0YXRlLmludCBkZWZhdWx0IGJvdW5kXG5sZXQgZnVsbF9pbnQgYm91bmQgPSBTdGF0ZS5mdWxsX2ludCBkZWZhdWx0IGJvdW5kXG5sZXQgaW50MzIgYm91bmQgPSBTdGF0ZS5pbnQzMiBkZWZhdWx0IGJvdW5kXG5sZXQgbmF0aXZlaW50IGJvdW5kID0gU3RhdGUubmF0aXZlaW50IGRlZmF1bHQgYm91bmRcbmxldCBpbnQ2NCBib3VuZCA9IFN0YXRlLmludDY0IGRlZmF1bHQgYm91bmRcbmxldCBmbG9hdCBzY2FsZSA9IFN0YXRlLmZsb2F0IGRlZmF1bHQgc2NhbGVcbmxldCBib29sICgpID0gU3RhdGUuYm9vbCBkZWZhdWx0XG5sZXQgYml0czMyICgpID0gU3RhdGUuYml0czMyIGRlZmF1bHRcbmxldCBiaXRzNjQgKCkgPSBTdGF0ZS5iaXRzNjQgZGVmYXVsdFxubGV0IG5hdGl2ZWJpdHMgKCkgPSBTdGF0ZS5uYXRpdmViaXRzIGRlZmF1bHRcblxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUuZnVsbF9pbml0IGRlZmF1bHQgc2VlZFxubGV0IGluaXQgc2VlZCA9IFN0YXRlLmZ1bGxfaW5pdCBkZWZhdWx0IFt8IHNlZWQgfF1cbmxldCBzZWxmX2luaXQgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkKCkpXG5cbigqIE1hbmlwdWxhdGluZyB0aGUgY3VycmVudCBzdGF0ZS4gKilcblxubGV0IGdldF9zdGF0ZSAoKSA9IFN0YXRlLmNvcHkgZGVmYXVsdFxubGV0IHNldF9zdGF0ZSBzID0gU3RhdGUuYXNzaWduIGRlZmF1bHQgc1xuXG4oKioqKioqKioqKioqKioqKioqKipcblxuKCogVGVzdCBmdW5jdGlvbnMuICBOb3QgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkuXG4gICBUaGUgW2NoaXNxdWFyZV0gZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB3aXRoIG4gPiAxMHIuXG4gICBJdCByZXR1cm5zIGEgdHJpcGxlIChsb3csIGFjdHVhbCwgaGlnaCkuXG4gICBJZiBsb3cgPD0gYWN0dWFsIDw9IGhpZ2gsIHRoZSBbZ10gZnVuY3Rpb24gcGFzc2VkIHRoZSB0ZXN0LFxuICAgb3RoZXJ3aXNlIGl0IGZhaWxlZC5cblxuICBTb21lIHJlc3VsdHM6XG5cbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMFxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAgNTAwMFxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAwIDEwMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMjRcbmluaXQgMjk5NzkyNjQzOyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDI0XG5pbml0IDE0MTQyMTM2OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDI0XG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYgMTAyNDsgY2hpc3F1YXJlIGRpZmYgMTAwMDAwIDEwMjRcbmluaXQgMjcxODI4MTg7IGluaXRfZGlmZiAxMDA7IGNoaXNxdWFyZSBkaWZmIDEwMDAwMCAxMDBcbmluaXQgMjcxODI4MTg7IGluaXRfZGlmZjIgMTAyNDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDI0XG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYyIDEwMDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDBcbmluaXQgMTQxNDIxMzY7IGluaXRfZGlmZjIgMTAwOyBjaGlzcXVhcmUgZGlmZjIgMTAwMDAwIDEwMFxuaW5pdCAyOTk3OTI2NDM7IGluaXRfZGlmZjIgMTAwOyBjaGlzcXVhcmUgZGlmZjIgMTAwMDAwIDEwMFxuLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5MzYuNzU0NDQ2Nzk2NjMyNDY1LCA5OTcuNSwgMTA2My4yNDU1NTMyMDMzNjc1NClcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDg5Ljc0MDAwMDAwMDAwNTIzODcsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoNDg1OC41Nzg2NDM3NjI2OSwgNTA0NS41LCA1MTQxLjQyMTM1NjIzNzMxKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID1cbig5MzYuNzU0NDQ2Nzk2NjMyNDY1LCA5NDQuODA1OTk5OTk5OTgyMzA1LCAxMDYzLjI0NTU1MzIwMzM2NzU0KVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwMTkuMTk3NDQwMDAwMDAzNTUsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwNTkuMzE3NzYwMDAwMDA1MzYsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwMzkuOTg0NjM5OTk5OTk1MTIsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwNTQuMzgyMDc5OTk5OTk1NzcsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgOTAuMDk2MDAwMDAwMDA1LCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwNzYuNzg3MjAwMDAwMDA2MTIsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODUuMTc2MDAwMDAwMDA2NzUyMSwgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDg1LjIxNjAwMDAwMDAwMDM0OTIsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4MC42MjIwMDAwMDAwMDMwMjY4LCAxMjAuKVxuXG4qKVxuXG4oKiBSZXR1cm4gdGhlIHN1bSBvZiB0aGUgc3F1YXJlcyBvZiB2W2kwLGkxWyAqKVxubGV0IHJlYyBzdW1zcSB2IGkwIGkxID1cbiAgaWYgaTAgPj0gaTEgdGhlbiAwLjBcbiAgZWxzZSBpZiBpMSA9IGkwICsgMSB0aGVuIFN0ZGxpYi5mbG9hdCB2LihpMCkgKi4gU3RkbGliLmZsb2F0IHYuKGkwKVxuICBlbHNlIHN1bXNxIHYgaTAgKChpMCtpMSkvMikgKy4gc3Vtc3EgdiAoKGkwK2kxKS8yKSBpMVxuXG5cbmxldCBjaGlzcXVhcmUgZyBuIHIgPVxuICBpZiBuIDw9IDEwICogciB0aGVuIGludmFsaWRfYXJnIFwiY2hpc3F1YXJlXCI7XG4gIGxldCBmID0gQXJyYXkubWFrZSByIDAgaW5cbiAgZm9yIGkgPSAxIHRvIG4gZG9cbiAgICBsZXQgdCA9IGcgciBpblxuICAgIGYuKHQpIDwtIGYuKHQpICsgMVxuICBkb25lO1xuICBsZXQgdCA9IHN1bXNxIGYgMCByXG4gIGFuZCByID0gU3RkbGliLmZsb2F0IHJcbiAgYW5kIG4gPSBTdGRsaWIuZmxvYXQgbiBpblxuICBsZXQgc3IgPSAyLjAgKi4gc3FydCByIGluXG4gIChyIC0uIHNyLCAgIChyICouIHQgLy4gbikgLS4gbiwgICByICsuIHNyKVxuXG5cbigqIFRoaXMgaXMgdG8gdGVzdCBmb3IgbGluZWFyIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgcmFuZG9tIG51bWJlcnMuXG4qKVxubGV0IHN0ID0gcmVmIDBcbmxldCBpbml0X2RpZmYgciA9IHN0IDo9IGludCByXG5sZXQgZGlmZiByID1cbiAgbGV0IHgxID0gIXN0XG4gIGFuZCB4MiA9IGludCByXG4gIGluXG4gIHN0IDo9IHgyO1xuICBpZiB4MSA+PSB4MiB0aGVuXG4gICAgeDEgLSB4MlxuICBlbHNlXG4gICAgciArIHgxIC0geDJcblxuXG5sZXQgc3QxID0gcmVmIDBcbmFuZCBzdDIgPSByZWYgMFxuXG5cbigqIFRoaXMgaXMgdG8gdGVzdCBmb3IgcXVhZHJhdGljIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgcmFuZG9tXG4gICBudW1iZXJzLlxuKilcbmxldCBpbml0X2RpZmYyIHIgPSBzdDEgOj0gaW50IHI7IHN0MiA6PSBpbnQgclxubGV0IGRpZmYyIHIgPVxuICBsZXQgeDEgPSAhc3QxXG4gIGFuZCB4MiA9ICFzdDJcbiAgYW5kIHgzID0gaW50IHJcbiAgaW5cbiAgc3QxIDo9IHgyO1xuICBzdDIgOj0geDM7XG4gICh4MyAtIHgyIC0geDIgKyB4MSArIDIqcikgbW9kIHJcblxuXG4qKioqKioqKioqKioqKioqKioqKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGxpc3RzLiAqKVxudHlwZSAnYSB0ID0gJ2EgbGlzdCA9IFtdIHwgKDo6KSBvZiAnYSAqICdhIGxpc3RcblxuKCogTGlzdCBvcGVyYXRpb25zICopXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGxlblxuICB8IF86OmwgLT4gbGVuZ3RoX2F1eCAobGVuICsgMSkgbFxuXG5sZXQgbGVuZ3RoIGwgPSBsZW5ndGhfYXV4IDAgbFxuXG5sZXQgY29ucyBhIGwgPSBhOjpsXG5cbmxldCBoZCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJoZFwiXG4gIHwgYTo6XyAtPiBhXG5cbmxldCB0bCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJ0bFwiXG4gIHwgXzo6bCAtPiBsXG5cbmxldCBudGggbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibnRoXCJcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBudGhfb3B0IGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gU29tZSBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBhcHBlbmQgPSAoQClcblxubGV0IHJlYyByZXZfYXBwZW5kIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgYSA6OiBsIC0+IHJldl9hcHBlbmQgbCAoYSA6OiBsMilcblxubGV0IHJldiBsID0gcmV2X2FwcGVuZCBsIFtdXG5cbmxldCByZWMgaW5pdF90YWlscmVjX2F1eCBhY2MgaSBuIGYgPVxuICBpZiBpID49IG4gdGhlbiBhY2NcbiAgZWxzZSBpbml0X3RhaWxyZWNfYXV4IChmIGkgOjogYWNjKSAoaSsxKSBuIGZcblxubGV0IHJlYyBpbml0X2F1eCBpIG4gZiA9XG4gIGlmIGkgPj0gbiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgciA9IGYgaSBpblxuICAgIHIgOjogaW5pdF9hdXggKGkrMSkgbiBmXG5cbmxldCByZXZfaW5pdF90aHJlc2hvbGQgPVxuICBtYXRjaCBTeXMuYmFja2VuZF90eXBlIHdpdGhcbiAgfCBTeXMuTmF0aXZlIHwgU3lzLkJ5dGVjb2RlIC0+IDEwXzAwMFxuICAoKiBXZSBkb24ndCBrbm93IHRoZSBzaXplIG9mIHRoZSBzdGFjaywgYmV0dGVyIGJlIHNhZmUgYW5kIGFzc3VtZSBpdCdzXG4gICAgIHNtYWxsLiAqKVxuICB8IFN5cy5PdGhlciBfIC0+IDUwXG5cbmxldCBpbml0IGxlbiBmID1cbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5pbml0XCIgZWxzZVxuICBpZiBsZW4gPiByZXZfaW5pdF90aHJlc2hvbGQgdGhlbiByZXYgKGluaXRfdGFpbHJlY19hdXggW10gMCBsZW4gZilcbiAgZWxzZSBpbml0X2F1eCAwIGxlbiBmXG5cbmxldCByZWMgZmxhdHRlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBsOjpyIC0+IGwgQCBmbGF0dGVuIHJcblxubGV0IGNvbmNhdCA9IGZsYXR0ZW5cblxubGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBhOjpsIC0+IGxldCByID0gZiBhIGluIHIgOjogbWFwIGYgbFxuXG5sZXQgcmVjIG1hcGkgaSBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGE6OmwgLT4gbGV0IHIgPSBmIGkgYSBpbiByIDo6IG1hcGkgKGkgKyAxKSBmIGxcblxubGV0IG1hcGkgZiBsID0gbWFwaSAwIGYgbFxuXG5sZXQgcmV2X21hcCBmIGwgPVxuICBsZXQgcmVjIHJtYXBfZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IGE6OmwgLT4gcm1hcF9mIChmIGEgOjogYWNjdSkgbFxuICBpblxuICBybWFwX2YgW10gbFxuXG5cbmxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBhOyBpdGVyIGYgbFxuXG5sZXQgcmVjIGl0ZXJpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgaSBhOyBpdGVyaSAoaSArIDEpIGYgbFxuXG5sZXQgaXRlcmkgZiBsID0gaXRlcmkgMCBmIGxcblxubGV0IHJlYyBmb2xkX2xlZnQgZiBhY2N1IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmb2xkX2xlZnQgZiAoZiBhY2N1IGEpIGxcblxubGV0IHJlYyBmb2xkX3JpZ2h0IGYgbCBhY2N1ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZiBhIChmb2xkX3JpZ2h0IGYgbCBhY2N1KVxuXG5sZXQgcmVjIG1hcDIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBbXVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gbGV0IHIgPSBmIGExIGEyIGluIHIgOjogbWFwMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5tYXAyXCJcblxubGV0IHJldl9tYXAyIGYgbDEgbDIgPVxuICBsZXQgcmVjIHJtYXAyX2YgYWNjdSBsMSBsMiA9XG4gICAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIHwgKFtdLCBbXSkgLT4gYWNjdVxuICAgIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBybWFwMl9mIChmIGExIGEyIDo6IGFjY3UpIGwxIGwyXG4gICAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJldl9tYXAyXCJcbiAgaW5cbiAgcm1hcDJfZiBbXSBsMSBsMlxuXG5cbmxldCByZWMgaXRlcjIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiAoKVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMjsgaXRlcjIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuaXRlcjJcIlxuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiBhY2N1IGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGZvbGRfbGVmdDIgZiAoZiBhY2N1IGExIGEyKSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9sZWZ0MlwiXG5cbmxldCByZWMgZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1ID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTIgKGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSlcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfcmlnaHQyXCJcblxubGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IHRydWVcbiAgfCBhOjpsIC0+IHAgYSAmJiBmb3JfYWxsIHAgbFxuXG5sZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gcCBhIHx8IGV4aXN0cyBwIGxcblxubGV0IHJlYyBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IHRydWVcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgJiYgZm9yX2FsbDIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9yX2FsbDJcIlxuXG5sZXQgcmVjIGV4aXN0czIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBmYWxzZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiB8fCBleGlzdHMyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmV4aXN0czJcIlxuXG5sZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbSB4IGxcblxubGV0IHJlYyBtZW1xIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBhID09IHggfHwgbWVtcSB4IGxcblxubGV0IHJlYyBhc3NvYyB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBiIGVsc2UgYXNzb2MgeCBsXG5cbmxldCByZWMgYXNzb2Nfb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBTb21lIGIgZWxzZSBhc3NvY19vcHQgeCBsXG5cbmxldCByZWMgYXNzcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBiIGVsc2UgYXNzcSB4IGxcblxubGV0IHJlYyBhc3NxX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gU29tZSBiIGVsc2UgYXNzcV9vcHQgeCBsXG5cbmxldCByZWMgbWVtX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbV9hc3NvYyB4IGxcblxubGV0IHJlYyBtZW1fYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGEgPT0geCB8fCBtZW1fYXNzcSB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+XG4gICAgICBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzb2MgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+IGlmIGEgPT0geCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NxIHggbFxuXG5sZXQgcmVjIGZpbmQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHggZWxzZSBmaW5kIHAgbFxuXG5sZXQgcmVjIGZpbmRfb3B0IHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZF9vcHQgcCBsXG5cbmxldCByZWMgZmluZF9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgZiBsXG4gICAgIGVuZFxuXG5sZXQgZmluZF9hbGwgcCA9XG4gIGxldCByZWMgZmluZCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByZXYgYWNjdVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBmaW5kICh4IDo6IGFjY3UpIGwgZWxzZSBmaW5kIGFjY3UgbCBpblxuICBmaW5kIFtdXG5cbmxldCBmaWx0ZXIgPSBmaW5kX2FsbFxuXG5sZXQgZmlsdGVyaSBwIGwgPVxuICBsZXQgcmVjIGF1eCBpIGFjYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmV2IGFjY1xuICB8IHg6OmwgLT4gYXV4IChpICsgMSkgKGlmIHAgaSB4IHRoZW4geDo6YWNjIGVsc2UgYWNjKSBsXG4gIGluXG4gIGF1eCAwIFtdIGxcblxubGV0IGZpbHRlcl9tYXAgZiA9XG4gIGxldCByZWMgYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY3VcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IGFjY3UgbFxuICAgICAgICB8IFNvbWUgdiAtPiBhdXggKHYgOjogYWNjdSkgbFxuICBpblxuICBhdXggW11cblxubGV0IGNvbmNhdF9tYXAgZiBsID1cbiAgbGV0IHJlYyBhdXggZiBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgbGV0IHhzID0gZiB4IGluXG4gICAgICAgYXV4IGYgKHJldl9hcHBlbmQgeHMgYWNjKSBsXG4gIGluIGF1eCBmIFtdIGxcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2N1IGwgPVxuICBsZXQgcmVjIGF1eCBhY2N1IGxfYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1LCByZXYgbF9hY2N1XG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGFjY3UsIHggPSBmIGFjY3UgeCBpblxuICAgICAgICBhdXggYWNjdSAoeCA6OiBsX2FjY3UpIGwgaW5cbiAgYXV4IGFjY3UgW10gbFxuXG5sZXQgcGFydGl0aW9uIHAgbCA9XG4gIGxldCByZWMgcGFydCB5ZXMgbm8gPSBmdW5jdGlvblxuICB8IFtdIC0+IChyZXYgeWVzLCByZXYgbm8pXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHBhcnQgKHggOjogeWVzKSBubyBsIGVsc2UgcGFydCB5ZXMgKHggOjogbm8pIGwgaW5cbiAgcGFydCBbXSBbXSBsXG5cbmxldCBwYXJ0aXRpb25fbWFwIHAgbCA9XG4gIGxldCByZWMgcGFydCBsZWZ0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IGxlZnQsIHJldiByaWdodClcbiAgfCB4IDo6IGwgLT5cbiAgICAgYmVnaW4gbWF0Y2ggcCB4IHdpdGhcbiAgICAgICB8IEVpdGhlci5MZWZ0IHYgLT4gcGFydCAodiA6OiBsZWZ0KSByaWdodCBsXG4gICAgICAgfCBFaXRoZXIuUmlnaHQgdiAtPiBwYXJ0IGxlZnQgKHYgOjogcmlnaHQpIGxcbiAgICAgZW5kXG4gIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcmVjIHNwbGl0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoW10sIFtdKVxuICB8ICh4LHkpOjpsIC0+XG4gICAgICBsZXQgKHJ4LCByeSkgPSBzcGxpdCBsIGluICh4OjpyeCwgeTo6cnkpXG5cbmxldCByZWMgY29tYmluZSBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBbXVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gKGExLCBhMikgOjogY29tYmluZSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuY29tYmluZVwiXG5cbigqKiBzb3J0aW5nICopXG5cbmxldCByZWMgbWVyZ2UgY21wIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgbDIgLT4gbDJcbiAgfCBsMSwgW10gLT4gbDFcbiAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT5cbiAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICB0aGVuIGgxIDo6IG1lcmdlIGNtcCB0MSBsMlxuICAgICAgZWxzZSBoMiA6OiBtZXJnZSBjbXAgbDEgdDJcblxuXG5sZXQgc3RhYmxlX3NvcnQgY21wIGwgPVxuICBsZXQgcmVjIHJldl9tZXJnZSBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgaWYgY21wIGgxIGgyIDw9IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2UgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZSBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgcmV2X21lcmdlX3JldiBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgaWYgY21wIGgxIGgyID4gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZV9yZXYgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZV9yZXYgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHNvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID0gaWYgY21wIHgxIHgyIDw9IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBjbXAgeDEgeDIgPD0gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPD0gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA8PSAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPD0gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHJldl9zb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHJldl9zb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2VfcmV2IHMxIHMyIFtdLCB0bClcbiAgYW5kIHJldl9zb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBjbXAgeDEgeDIgPiAwIHRoZW5cbiAgICAgICAgICAgIGlmIGNtcCB4MiB4MyA+IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MiB4MyA+IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgc29ydCA9IHN0YWJsZV9zb3J0XG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuKCogTm90ZTogb24gYSBsaXN0IG9mIGxlbmd0aCBiZXR3ZWVuIGFib3V0IDEwMDAwMCAoZGVwZW5kaW5nIG9uIHRoZSBtaW5vclxuICAgaGVhcCBzaXplIGFuZCB0aGUgdHlwZSBvZiB0aGUgbGlzdCkgYW5kIFN5cy5tYXhfYXJyYXlfc2l6ZSwgaXQgaXNcbiAgIGFjdHVhbGx5IGZhc3RlciB0byB1c2UgdGhlIGZvbGxvd2luZywgYnV0IGl0IG1pZ2h0IGFsc28gdXNlIG1vcmUgbWVtb3J5XG4gICBiZWNhdXNlIHRoZSBhcmd1bWVudCBsaXN0IGNhbm5vdCBiZSBkZWFsbG9jYXRlZCBpbmNyZW1lbnRhbGx5LlxuXG4gICBBbHNvLCB0aGVyZSBzZWVtcyB0byBiZSBhIGJ1ZyBpbiB0aGlzIGNvZGUgb3IgaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiBvYmpfdHJ1bmNhdGUuXG5cbmV4dGVybmFsIG9ial90cnVuY2F0ZSA6ICdhIGFycmF5IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX29ial90cnVuY2F0ZVwiXG5cbmxldCBhcnJheV90b19saXN0X2luX3BsYWNlIGEgPVxuICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBhY2N1IG4gcCA9XG4gICAgaWYgcCA8PSAwIHRoZW4gYWNjdSBlbHNlIGJlZ2luXG4gICAgICBpZiBwID0gbiB0aGVuIGJlZ2luXG4gICAgICAgIG9ial90cnVuY2F0ZSBhIHA7XG4gICAgICAgIGxvb3AgKGEuKHAtMSkgOjogYWNjdSkgKG4tMTAwMCkgKHAtMSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxvb3AgKGEuKHAtMSkgOjogYWNjdSkgbiAocC0xKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGluXG4gIGxvb3AgW10gKGwtMTAwMCkgbFxuXG5cbmxldCBzdGFibGVfc29ydCBjbXAgbCA9XG4gIGxldCBhID0gQXJyYXkub2ZfbGlzdCBsIGluXG4gIEFycmF5LnN0YWJsZV9zb3J0IGNtcCBhO1xuICBhcnJheV90b19saXN0X2luX3BsYWNlIGFcblxuKilcblxuXG4oKiogc29ydGluZyArIHJlbW92aW5nIGR1cGxpY2F0ZXMgKilcblxubGV0IHNvcnRfdW5pcSBjbXAgbCA9XG4gIGxldCByZWMgcmV2X21lcmdlIGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZSB0MSB0MiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2UgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZSBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgcmV2X21lcmdlX3JldiBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjID4gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZV9yZXYgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZV9yZXYgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHNvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxXSBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDJdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgzXSBlbHNlIFt4MzsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gcmV2X3NvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gcmV2X3NvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZV9yZXYgczEgczIgW10sIHRsKVxuICBhbmQgcmV2X3NvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxXSBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDJdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgzXSBlbHNlIFt4MzsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHJlYyBjb21wYXJlX2xlbmd0aHMgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgXyA6OiBsMSwgXyA6OiBsMiAtPiBjb21wYXJlX2xlbmd0aHMgbDEgbDJcbjs7XG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhfd2l0aCBsIG4gPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIGlmIG4gPSAwIHRoZW4gMCBlbHNlXG4gICAgICBpZiBuID4gMCB0aGVuIC0xIGVsc2UgMVxuICB8IF8gOjogbCAtPlxuICAgIGlmIG4gPD0gMCB0aGVuIDEgZWxzZVxuICAgICAgY29tcGFyZV9sZW5ndGhfd2l0aCBsIChuLTEpXG47O1xuXG4oKiogezEgQ29tcGFyaXNvbn0gKilcblxuKCogTm90ZTogd2UgYXJlICpub3QqIHNob3J0Y3V0dGluZyB0aGUgbGlzdCBieSB1c2luZ1xuICAgW0xpc3QuY29tcGFyZV9sZW5ndGhzXSBmaXJzdDsgdGhpcyBtYXkgYmUgc2xvd2VyIG9uIGxvbmcgbGlzdHNcbiAgIGltbWVkaWF0ZWx5IHN0YXJ0IHdpdGggZGlzdGluY3QgZWxlbWVudHMuIEl0IGlzIGFsc28gaW5jb3JyZWN0IGZvclxuICAgW2NvbXBhcmVdIGJlbG93LCBhbmQgaXQgaXMgYmV0dGVyIChwcmluY2lwbGUgb2YgbGVhc3Qgc3VycHJpc2UpIHRvXG4gICB1c2UgdGhlIHNhbWUgYXBwcm9hY2ggZm9yIGJvdGggZnVuY3Rpb25zLiAqKVxubGV0IHJlYyBlcXVhbCBlcSBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHRydWVcbiAgfCBbXSwgXzo6XyB8IF86Ol8sIFtdIC0+IGZhbHNlXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT4gZXEgYTEgYTIgJiYgZXF1YWwgZXEgbDEgbDJcblxubGV0IHJlYyBjb21wYXJlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXzo6XyAtPiAtMVxuICB8IF86Ol8sIFtdIC0+IDFcbiAgfCBhMTo6bDEsIGEyOjpsMiAtPlxuICAgIGxldCBjID0gY21wIGExIGEyIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gY1xuICAgIGVsc2UgY29tcGFyZSBjbXAgbDEgbDJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBsID1cbiAgbGV0IHJlYyBhdXggbCAoKSA9IG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gU2VxLk5pbFxuICAgIHwgeCA6OiB0YWlsIC0+IFNlcS5Db25zICh4LCBhdXggdGFpbClcbiAgaW5cbiAgYXV4IGxcblxubGV0IG9mX3NlcSBzZXEgPVxuICBsZXQgcmVjIGRpcmVjdCBkZXB0aCBzZXEgOiBfIGxpc3QgPVxuICAgIGlmIGRlcHRoPTBcbiAgICB0aGVuXG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBzZXFcbiAgICAgIHw+IHJldiAoKiB0YWlscmVjICopXG4gICAgZWxzZSBtYXRjaCBzZXEoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gW11cbiAgICAgIHwgU2VxLkNvbnMgKHgsIG5leHQpIC0+IHggOjogZGlyZWN0IChkZXB0aC0xKSBuZXh0XG4gIGluXG4gIGRpcmVjdCA1MDAgc2VxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGluX2NoYW5uZWxcblxudHlwZSBvcGVuX2ZsYWcgPSBTdGRsaWIub3Blbl9mbGFnID1cbiAgfCBPcGVuX3Jkb25seVxuICB8IE9wZW5fd3Jvbmx5XG4gIHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0XG4gIHwgT3Blbl90cnVuY1xuICB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5XG4gIHwgT3Blbl90ZXh0XG4gIHwgT3Blbl9ub25ibG9ja1xuXG5sZXQgc3RkaW4gPSBTdGRsaWIuc3RkaW5cbmxldCBvcGVuX2JpbiA9IFN0ZGxpYi5vcGVuX2luX2JpblxubGV0IG9wZW5fdGV4dCA9IFN0ZGxpYi5vcGVuX2luXG5sZXQgb3Blbl9nZW4gPSBTdGRsaWIub3Blbl9pbl9nZW5cblxubGV0IHdpdGhfb3BlbiBvcGVuZnVuIHMgZiA9XG4gIGxldCBpYyA9IG9wZW5mdW4gcyBpblxuICBGdW4ucHJvdGVjdCB+ZmluYWxseTooZnVuICgpIC0+IFN0ZGxpYi5jbG9zZV9pbl9ub2VyciBpYylcbiAgICAoZnVuICgpIC0+IGYgaWMpXG5cbmxldCB3aXRoX29wZW5fYmluIHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9pbl9iaW4gcyBmXG5cbmxldCB3aXRoX29wZW5fdGV4dCBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5faW4gcyBmXG5cbmxldCB3aXRoX29wZW5fZ2VuIGZsYWdzIHBlcm0gcyBmID1cbiAgd2l0aF9vcGVuIChTdGRsaWIub3Blbl9pbl9nZW4gZmxhZ3MgcGVybSkgcyBmXG5cbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX2luXG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3NfaW5cbmxldCBsZW5ndGggPSBTdGRsaWIuTGFyZ2VGaWxlLmluX2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2VfaW5cbmxldCBjbG9zZV9ub2VyciA9IFN0ZGxpYi5jbG9zZV9pbl9ub2VyclxuXG5sZXQgaW5wdXRfY2hhciBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9jaGFyIGljIHdpdGhcbiAgfCBjIC0+IFNvbWUgY1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dF9ieXRlIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2J5dGUgaWMgd2l0aFxuICB8IG4gLT4gU29tZSBuXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0X2xpbmUgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgcyAtPiBTb21lIHNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXQgPSBTdGRsaWIuaW5wdXRcblxubGV0IHJlYWxseV9pbnB1dCBpYyBidWYgcG9zIGxlbiA9XG4gIG1hdGNoIFN0ZGxpYi5yZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gd2l0aFxuICB8ICgpIC0+IFNvbWUgKClcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gd2l0aFxuICB8IHMgLT4gU29tZSBzXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxuKCogUmVhZCB1cCB0byBbbGVuXSBieXRlcyBpbnRvIFtidWZdLCBzdGFydGluZyBhdCBbb2ZzXS4gUmV0dXJuIHRvdGFsIGJ5dGVzXG4gICByZWFkLiAqKVxubGV0IHJlYWRfdXB0byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBvZnMgbGVuID1cbiAgICBpZiBsZW4gPSAwIHRoZW4gb2ZzXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBTdGRsaWIuaW5wdXQgaWMgYnVmIG9mcyBsZW4gaW5cbiAgICAgIGlmIHIgPSAwIHRoZW5cbiAgICAgICAgb2ZzXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3AgKG9mcyArIHIpIChsZW4gLSByKVxuICAgIGVuZFxuICBpblxuICBsb29wIG9mcyBsZW4gLSBvZnNcblxuKCogQmVzdCBlZmZvcnQgYXR0ZW1wdCB0byByZXR1cm4gYSBidWZmZXIgd2l0aCA+PSAob2ZzICsgbikgYnl0ZXMgb2Ygc3RvcmFnZSxcbiAgIGFuZCBzdWNoIHRoYXQgaXQgY29pbmNpZGVzIHdpdGggW2J1Zl0gYXQgaW5kaWNlcyA8IFtvZnNdLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIGlzIGVxdWFsIHRvIFtidWZdIGl0c2VsZiBpZiBpdCBhbHJlYWR5IGhhcyBzdWZmaWNpZW50XG4gICBmcmVlIHNwYWNlLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIG1heSBoYXZlICpmZXdlciogdGhhbiBbb2ZzICsgbl0gYnl0ZXMgb2Ygc3RvcmFnZSBpZiB0aGlzXG4gICBudW1iZXIgaXMgPiBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXS4gSG93ZXZlciB0aGUgcmV0dXJuZWQgYnVmZmVyIHdpbGxcbiAgICphbHdheXMqIGhhdmUgPiBbb2ZzXSBieXRlcyBvZiBzdG9yYWdlLiBJbiB0aGUgbGltaXRpbmcgY2FzZSB3aGVuIFtvZnMgPSBsZW5cbiAgID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAoc28gdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gcmVzaXplIHRoZSBidWZmZXIgYXRcbiAgIGFsbCksIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5cbmxldCBlbnN1cmUgYnVmIG9mcyBuID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuID49IG9mcyArIG4gdGhlbiBidWZcbiAgZWxzZSBiZWdpblxuICAgIGxldCBuZXdfbGVuID0gcmVmIGxlbiBpblxuICAgIHdoaWxlICFuZXdfbGVuIDwgb2ZzICsgbiBkb1xuICAgICAgbmV3X2xlbiA6PSAyICogIW5ld19sZW4gKyAxXG4gICAgZG9uZTtcbiAgICBsZXQgbmV3X2xlbiA9ICFuZXdfbGVuIGluXG4gICAgbGV0IG5ld19sZW4gPVxuICAgICAgaWYgbmV3X2xlbiA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBuZXdfbGVuXG4gICAgICBlbHNlIGlmIG9mcyA8IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBmYWlsd2l0aCBcIkluX2NoYW5uZWwuaW5wdXRfYWxsOiBjaGFubmVsIGNvbnRlbnQgXFxcbiAgICAgICAgICAgICAgICAgIGlzIGxhcmdlciB0aGFuIG1heGltdW0gc3RyaW5nIGxlbmd0aFwiXG4gICAgaW5cbiAgICBsZXQgbmV3X2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYgMCBuZXdfYnVmIDAgb2ZzO1xuICAgIG5ld19idWZcbiAgZW5kXG5cbmxldCBpbnB1dF9hbGwgaWMgPVxuICBsZXQgY2h1bmtfc2l6ZSA9IDY1NTM2IGluICgqIElPX0JVRkZFUl9TSVpFICopXG4gIGxldCBpbml0aWFsX3NpemUgPVxuICAgIHRyeVxuICAgICAgU3RkbGliLmluX2NoYW5uZWxfbGVuZ3RoIGljIC0gU3RkbGliLnBvc19pbiBpY1xuICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgIC0xXG4gIGluXG4gIGxldCBpbml0aWFsX3NpemUgPSBpZiBpbml0aWFsX3NpemUgPCAwIHRoZW4gY2h1bmtfc2l6ZSBlbHNlIGluaXRpYWxfc2l6ZSBpblxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICBpZiBpbml0aWFsX3NpemUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgIGluaXRpYWxfc2l6ZVxuICAgIGVsc2VcbiAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICBpblxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGluaXRpYWxfc2l6ZSBpblxuICBsZXQgbnJlYWQgPSByZWFkX3VwdG8gaWMgYnVmIDAgaW5pdGlhbF9zaXplIGluXG4gIGlmIG5yZWFkIDwgaW5pdGlhbF9zaXplIHRoZW4gKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBwYXJ0aWFsbHkgZmlsbGVkICopXG4gICAgQnl0ZXMuc3ViX3N0cmluZyBidWYgMCBucmVhZFxuICBlbHNlIGJlZ2luICgqIG5yZWFkID0gaW5pdGlhbF9zaXplLCBtYXliZSBFT0YgcmVhY2hlZCAqKVxuICAgIG1hdGNoIFN0ZGxpYi5pbnB1dF9jaGFyIGljIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPlxuICAgICAgICAoKiBFT0YgcmVhY2hlZCwgYnVmZmVyIGlzIGNvbXBsZXRlbHkgZmlsbGVkICopXG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gICAgfCBjIC0+XG4gICAgICAgICgqIEVPRiBub3QgcmVhY2hlZCAqKVxuICAgICAgICBsZXQgcmVjIGxvb3AgYnVmIG9mcyA9XG4gICAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgb2ZzIGNodW5rX3NpemUgaW5cbiAgICAgICAgICBsZXQgcmVtID0gQnl0ZXMubGVuZ3RoIGJ1ZiAtIG9mcyBpblxuICAgICAgICAgICgqIFtyZW1dIGNhbiBiZSA8IFtjaHVua19zaXplXSBpZiBidWZmZXIgc2l6ZSBjbG9zZSB0b1xuICAgICAgICAgICAgIFtTeXMubWF4X3N0cmluZ19sZW5ndGhdICopXG4gICAgICAgICAgbGV0IHIgPSByZWFkX3VwdG8gaWMgYnVmIG9mcyByZW0gaW5cbiAgICAgICAgICBpZiByIDwgcmVtIHRoZW4gKCogRU9GIHJlYWNoZWQgKilcbiAgICAgICAgICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgKG9mcyArIHIpXG4gICAgICAgICAgZWxzZSAoKiByID0gcmVtICopXG4gICAgICAgICAgICBsb29wIGJ1ZiAob2ZzICsgcmVtKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYnVmID0gZW5zdXJlIGJ1ZiBucmVhZCAoY2h1bmtfc2l6ZSArIDEpIGluXG4gICAgICAgIEJ5dGVzLnNldCBidWYgbnJlYWQgYztcbiAgICAgICAgbG9vcCBidWYgKG5yZWFkICsgMSlcbiAgZW5kXG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX2luXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IG91dF9jaGFubmVsXG5cbnR5cGUgb3Blbl9mbGFnID0gU3RkbGliLm9wZW5fZmxhZyA9XG4gIHwgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcblxubGV0IHN0ZG91dCA9IFN0ZGxpYi5zdGRvdXRcbmxldCBzdGRlcnIgPSBTdGRsaWIuc3RkZXJyXG5sZXQgb3Blbl9iaW4gPSBTdGRsaWIub3Blbl9vdXRfYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5fb3V0XG5sZXQgb3Blbl9nZW4gPSBTdGRsaWIub3Blbl9vdXRfZ2VuXG5cbmxldCB3aXRoX29wZW4gb3BlbmZ1biBzIGYgPVxuICBsZXQgb2MgPSBvcGVuZnVuIHMgaW5cbiAgRnVuLnByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyIG9jKVxuICAgIChmdW4gKCkgLT4gZiBvYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX291dF9iaW4gcyBmXG5cbmxldCB3aXRoX29wZW5fdGV4dCBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5fb3V0IHMgZlxuXG5sZXQgd2l0aF9vcGVuX2dlbiBmbGFncyBwZXJtIHMgZiA9XG4gIHdpdGhfb3BlbiAoU3RkbGliLm9wZW5fb3V0X2dlbiBmbGFncyBwZXJtKSBzIGZcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfb3V0XG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3Nfb3V0XG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5vdXRfY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9vdXRcbmxldCBjbG9zZV9ub2VyciA9IFN0ZGxpYi5jbG9zZV9vdXRfbm9lcnJcbmxldCBmbHVzaCA9IFN0ZGxpYi5mbHVzaFxubGV0IGZsdXNoX2FsbCA9IFN0ZGxpYi5mbHVzaF9hbGxcbmxldCBvdXRwdXRfY2hhciA9IFN0ZGxpYi5vdXRwdXRfY2hhclxubGV0IG91dHB1dF9ieXRlID0gU3RkbGliLm91dHB1dF9ieXRlXG5sZXQgb3V0cHV0X3N0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gU3RkbGliLm91dHB1dF9ieXRlc1xubGV0IG91dHB1dCA9IFN0ZGxpYi5vdXRwdXRcbmxldCBvdXRwdXRfc3Vic3RyaW5nID0gU3RkbGliLm91dHB1dF9zdWJzdHJpbmdcbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX291dFxuXG5leHRlcm5hbCBzZXRfYnVmZmVyZWQgOiB0IC0+IGJvb2wgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZXRfYnVmZmVyZWRcIlxuXG5leHRlcm5hbCBpc19idWZmZXJlZCA6IHQgLT4gYm9vbCA9IFwiY2FtbF9tbF9pc19idWZmZXJlZFwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEdhYnJpZWwgU2NoZXJlciwgcHJvamV0IFBhcnNpZmFsLCBJTlJJQSBTYWNsYXkgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnYikgdCA9IExlZnQgb2YgJ2EgfCBSaWdodCBvZiAnYlxuXG5sZXQgbGVmdCB2ID0gTGVmdCB2XG5sZXQgcmlnaHQgdiA9IFJpZ2h0IHZcblxubGV0IGlzX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gdHJ1ZVxufCBSaWdodCBfIC0+IGZhbHNlXG5cbmxldCBpc19yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBmYWxzZVxufCBSaWdodCBfIC0+IHRydWVcblxubGV0IGZpbmRfbGVmdCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBTb21lIHZcbnwgUmlnaHQgXyAtPiBOb25lXG5cbmxldCBmaW5kX3JpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IE5vbmVcbnwgUmlnaHQgdiAtPiBTb21lIHZcblxubGV0IG1hcF9sZWZ0IGYgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gTGVmdCAoZiB2KVxufCBSaWdodCBfIGFzIGUgLT4gZVxuXG5sZXQgbWFwX3JpZ2h0IGYgPSBmdW5jdGlvblxufCBMZWZ0IF8gYXMgZSAtPiBlXG58IFJpZ2h0IHYgLT4gUmlnaHQgKGYgdilcblxubGV0IG1hcCB+bGVmdCB+cmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gTGVmdCAobGVmdCB2KVxufCBSaWdodCB2IC0+IFJpZ2h0IChyaWdodCB2KVxuXG5sZXQgZm9sZCB+bGVmdCB+cmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gbGVmdCB2XG58IFJpZ2h0IHYgLT4gcmlnaHQgdlxuXG5sZXQgaXRlciA9IGZvbGRcblxubGV0IGZvcl9hbGwgPSBmb2xkXG5cbmxldCBlcXVhbCB+bGVmdCB+cmlnaHQgZTEgZTIgPSBtYXRjaCBlMSwgZTIgd2l0aFxufCBMZWZ0IHYxLCBMZWZ0IHYyIC0+IGxlZnQgdjEgdjJcbnwgUmlnaHQgdjEsIFJpZ2h0IHYyIC0+IHJpZ2h0IHYxIHYyXG58IExlZnQgXywgUmlnaHQgXyB8IFJpZ2h0IF8sIExlZnQgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSB+bGVmdCB+cmlnaHQgZTEgZTIgPSBtYXRjaCBlMSwgZTIgd2l0aFxufCBMZWZ0IHYxLCBMZWZ0IHYyIC0+IGxlZnQgdjEgdjJcbnwgUmlnaHQgdjEsIFJpZ2h0IHYyIC0+IHJpZ2h0IHYxIHYyXG58IExlZnQgXywgUmlnaHQgXyAtPiAoLTEpXG58IFJpZ2h0IF8sIExlZnQgXyAtPiAxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbTmF0aXZlaW50XTogcHJvY2Vzc29yLW5hdGl2ZSBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWc6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbmVnXCJcbmV4dGVybmFsIGFkZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYWRkXCJcbmV4dGVybmFsIHN1YjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfc3ViXCJcbmV4dGVybmFsIG11bDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbXVsXCJcbmV4dGVybmFsIGRpdjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfZGl2XCJcbmV4dGVybmFsIHJlbTogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYW5kXCJcbmV4dGVybmFsIGxvZ29yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vclwiXG5leHRlcm5hbCBsb2d4b3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsOiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50OiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQ6IG5hdGl2ZWludCAtPiBpbnQgPSBcIiVuYXRpdmVpbnRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IG5hdGl2ZWludCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzI6IGludDMyIC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMjogbmF0aXZlaW50IC0+IGludDMyID0gXCIlbmF0aXZlaW50X3RvX2ludDMyXCJcblxubGV0IHplcm8gPSAwblxubGV0IG9uZSA9IDFuXG5sZXQgbWludXNfb25lID0gLTFuXG5sZXQgc3VjYyBuID0gYWRkIG4gMW5cbmxldCBwcmVkIG4gPSBzdWIgbiAxblxubGV0IGFicyBuID0gaWYgbiA+PSAwbiB0aGVuIG4gZWxzZSBuZWcgblxubGV0IHNpemUgPSBTeXMud29yZF9zaXplXG5sZXQgbWluX2ludCA9IHNoaWZ0X2xlZnQgMW4gKHNpemUgLSAxKVxubGV0IG1heF9pbnQgPSBzdWIgbWluX2ludCAxblxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbilcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gIGZ1biBuIC0+XG4gICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmcgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nOiBzdHJpbmcgLT4gbmF0aXZlaW50ID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gbmF0aXZlaW50XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogT3BlcmF0aW9ucyBvbiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbnMgb2YgdmFsdWVzICopXG5cbnR5cGUgdFxuXG50eXBlIHJhd19kYXRhID0gbmF0aXZlaW50XG5cbmV4dGVybmFsIHJlcHIgOiAnYSAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgb2JqIDogdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG1hZ2ljIDogJ2EgLT4gJ2IgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBpc19pbnQgOiB0IC0+IGJvb2wgPSBcIiVvYmpfaXNfaW50XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGlzX2Jsb2NrIGEgPSBub3QgKGlzX2ludCBhKVxuZXh0ZXJuYWwgdGFnIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3RhZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzZXRfdGFnIDogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfc2V0X3RhZ1wiXG5leHRlcm5hbCBzaXplIDogdCAtPiBpbnQgPSBcIiVvYmpfc2l6ZVwiXG5leHRlcm5hbCByZWFjaGFibGVfd29yZHMgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXCJcbmV4dGVybmFsIGZpZWxkIDogdCAtPiBpbnQgLT4gdCA9IFwiJW9ial9maWVsZFwiXG5leHRlcm5hbCBzZXRfZmllbGQgOiB0IC0+IGludCAtPiB0IC0+IHVuaXQgPSBcIiVvYmpfc2V0X2ZpZWxkXCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRhcnJheV9nZXRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9zZXQgOlxuICAgIGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcImNhbWxfZmxvYXRhcnJheV9zZXRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gZG91YmxlX2ZpZWxkIHggaSA9IGZsb2F0YXJyYXlfZ2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGlcbmxldCBbQGlubGluZSBhbHdheXNdIHNldF9kb3VibGVfZmllbGQgeCBpIHYgPVxuICBmbG9hdGFycmF5X3NldCAob2JqIHggOiBmbG9hdGFycmF5KSBpIHZcbmV4dGVybmFsIHJhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhID0gXCJjYW1sX29ial9yYXdfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X3Jhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkXCJcblxuZXh0ZXJuYWwgbmV3X2Jsb2NrIDogaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX29ial9ibG9ja1wiXG5leHRlcm5hbCBkdXAgOiB0IC0+IHQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3RydW5jYXRlXCJcbmV4dGVybmFsIGFkZF9vZmZzZXQgOiB0IC0+IEludDMyLnQgLT4gdCA9IFwiY2FtbF9vYmpfYWRkX29mZnNldFwiXG5leHRlcm5hbCB3aXRoX3RhZyA6IGludCAtPiB0IC0+IHQgPSBcImNhbWxfb2JqX3dpdGhfdGFnXCJcblxubGV0IGZpcnN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAwXG5sZXQgbGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMjQ1XG5cbmxldCBsYXp5X3RhZyA9IDI0NlxubGV0IGNsb3N1cmVfdGFnID0gMjQ3XG5sZXQgb2JqZWN0X3RhZyA9IDI0OFxubGV0IGluZml4X3RhZyA9IDI0OVxubGV0IGZvcndhcmRfdGFnID0gMjUwXG5cbmxldCBub19zY2FuX3RhZyA9IDI1MVxuXG5sZXQgYWJzdHJhY3RfdGFnID0gMjUxXG5sZXQgc3RyaW5nX3RhZyA9IDI1MlxubGV0IGRvdWJsZV90YWcgPSAyNTNcbmxldCBkb3VibGVfYXJyYXlfdGFnID0gMjU0XG5sZXQgY3VzdG9tX3RhZyA9IDI1NVxubGV0IGZpbmFsX3RhZyA9IGN1c3RvbV90YWdcblxuXG5sZXQgaW50X3RhZyA9IDEwMDBcbmxldCBvdXRfb2ZfaGVhcF90YWcgPSAxMDAxXG5sZXQgdW5hbGlnbmVkX3RhZyA9IDEwMDJcblxubW9kdWxlIENsb3N1cmUgPSBzdHJ1Y3RcbiAgdHlwZSBpbmZvID0ge1xuICAgIGFyaXR5OiBpbnQ7XG4gICAgc3RhcnRfZW52OiBpbnQ7XG4gIH1cblxuICBsZXQgaW5mb19vZl9yYXcgKGluZm8gOiBuYXRpdmVpbnQpID1cbiAgICBsZXQgb3BlbiBOYXRpdmVpbnQgaW5cbiAgICBsZXQgYXJpdHkgPVxuICAgICAgKCogc2lnbmVkOiBuZWdhdGl2ZSBmb3IgdHVwbGVkIGZ1bmN0aW9ucyAqKVxuICAgICAgaWYgU3lzLndvcmRfc2l6ZSA9IDY0IHRoZW5cbiAgICAgICAgdG9faW50IChzaGlmdF9yaWdodCBpbmZvIDU2KVxuICAgICAgZWxzZVxuICAgICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0IGluZm8gMjQpXG4gICAgaW5cbiAgICBsZXQgc3RhcnRfZW52ID1cbiAgICAgICgqIHN0YXJ0X2VudiBpcyB1bnNpZ25lZCwgYnV0IHdlIGtub3cgaXQgY2FuIGFsd2F5cyBmaXQgYW4gT0NhbWxcbiAgICAgICAgIGludGVnZXIgc28gd2UgdXNlIFt0b19pbnRdIGluc3RlYWQgb2YgW3Vuc2lnbmVkX3RvX2ludF0uICopXG4gICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKHNoaWZ0X2xlZnQgaW5mbyA4KSA5KSBpblxuICAgIHsgYXJpdHk7IHN0YXJ0X2VudiB9XG5cbiAgKCogbm90ZTogd2UgZXhwZWN0IGEgY2xvc3VyZSwgbm90IGFuIGluZml4IHBvaW50ZXIgKilcbiAgbGV0IGluZm8gKG9iaiA6IHQpID1cbiAgICBhc3NlcnQgKHRhZyBvYmogPSBjbG9zdXJlX3RhZyk7XG4gICAgaW5mb19vZl9yYXcgKHJhd19maWVsZCBvYmogMSlcbmVuZFxuXG5tb2R1bGUgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbnN0cnVjdFxuICB0eXBlIHQgPSBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgbGV0IG9mX3ZhbCB4ID1cbiAgICBsZXQgeCA9IHJlcHIgeCBpblxuICAgIGxldCBzbG90ID1cbiAgICAgIGlmIChpc19ibG9jayB4KSAmJiAodGFnIHgpIDw+IG9iamVjdF90YWcgJiYgKHNpemUgeCkgPj0gMSB0aGVuIGZpZWxkIHggMFxuICAgICAgZWxzZSB4XG4gICAgaW5cbiAgICBsZXQgbmFtZSA9XG4gICAgICBpZiAoaXNfYmxvY2sgc2xvdCkgJiYgKHRhZyBzbG90KSA9IG9iamVjdF90YWcgdGhlbiBmaWVsZCBzbG90IDBcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcbiAgICBpblxuICAgICAgaWYgKHRhZyBuYW1lKSA9IHN0cmluZ190YWcgdGhlbiAob2JqIHNsb3QgOiB0KVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIG5hbWUgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMCkgOiBzdHJpbmcpXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gaWQgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMSkgOiBpbnQpXG5lbmRcblxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IEV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWxcbmxldCBleHRlbnNpb25fbmFtZSA9IEV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5uYW1lXG5sZXQgZXh0ZW5zaW9uX2lkID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkXG5cbm1vZHVsZSBFcGhlbWVyb24gPSBzdHJ1Y3RcbiAgdHlwZSBvYmpfdCA9IHRcblxuICB0eXBlIHQgKCoqIGVwaGVtZXJvbiAqKVxuXG4gICAoKiogVG8gY2hhbmdlIGluIHN5bmMgd2l0aCB3ZWFrLmggKilcbiAgbGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMlxuICBsZXQgbWF4X2VwaGVfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2VwaGVfY3JlYXRlXCI7O1xuICBsZXQgY3JlYXRlIGwgPVxuICAgIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gbWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uY3JlYXRlXCI7XG4gICAgY3JlYXRlIGxcblxuICBsZXQgbGVuZ3RoIHggPSBzaXplKHJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGV4dGVybmFsIGdldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlcIlxuICBsZXQgZ2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleVwiO1xuICAgIGdldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleV9jb3B5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcIlxuICBsZXQgZ2V0X2tleV9jb3B5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5X2NvcHlcIjtcbiAgICBnZXRfa2V5X2NvcHkgZSBvXG5cbiAgZXh0ZXJuYWwgc2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuICBsZXQgc2V0X2tleSBlIG8geCA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5zZXRfa2V5XCI7XG4gICAgc2V0X2tleSBlIG8geFxuXG4gIGV4dGVybmFsIHVuc2V0X2tleTogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG4gIGxldCB1bnNldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnVuc2V0X2tleVwiO1xuICAgIHVuc2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBjaGVja19rZXk6IHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19rZXlcIlxuICBsZXQgY2hlY2tfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5jaGVja19rZXlcIjtcbiAgICBjaGVja19rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgYmxpdF9rZXkgOiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgID0gXCJjYW1sX2VwaGVfYmxpdF9rZXlcIlxuXG4gIGxldCBibGl0X2tleSBlMSBvMSBlMiBvMiBsID1cbiAgICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmJsaXRfa2V5XCJcbiAgICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXRfa2V5IGUxIG8xIGUyIG8yIGxcblxuICBleHRlcm5hbCBnZXRfZGF0YTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YVwiXG4gIGV4dGVybmFsIGdldF9kYXRhX2NvcHk6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVwiXG4gIGV4dGVybmFsIHNldF9kYXRhOiB0IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfZGF0YVwiXG4gIGV4dGVybmFsIHVuc2V0X2RhdGE6IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2RhdGFcIlxuICBleHRlcm5hbCBjaGVja19kYXRhOiB0IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19kYXRhXCJcbiAgZXh0ZXJuYWwgYmxpdF9kYXRhIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9ibGl0X2RhdGFcIlxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW50ZXJuYWxzIG9mIGZvcmNpbmcgbGF6eSB2YWx1ZXMuICopXG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5cbmxldCByYWlzZV91bmRlZmluZWQgPSBPYmoucmVwciAoZnVuICgpIC0+IHJhaXNlIFVuZGVmaW5lZClcblxuZXh0ZXJuYWwgbWFrZV9mb3J3YXJkIDogT2JqLnQgLT4gT2JqLnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfbWFrZV9mb3J3YXJkXCJcblxuKCogQXNzdW1lIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgbGF6eSAqKVxubGV0IGZvcmNlX2xhenlfYmxvY2sgKGJsayA6ICdhcmcgbGF6eV90KSA9XG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCAoT2JqLnJlcHIgYmxrKSAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgYmxrKSAwIHJhaXNlX3VuZGVmaW5lZDtcbiAgdHJ5XG4gICAgbGV0IHJlc3VsdCA9IGNsb3N1cmUgKCkgaW5cbiAgICBtYWtlX2ZvcndhcmQgKE9iai5yZXByIGJsaykgKE9iai5yZXByIHJlc3VsdCk7XG4gICAgcmVzdWx0XG4gIHdpdGggZSAtPlxuICAgIE9iai5zZXRfZmllbGQgKE9iai5yZXByIGJsaykgMCAoT2JqLnJlcHIgKGZ1biAoKSAtPiByYWlzZSBlKSk7XG4gICAgcmFpc2UgZVxuXG5cbigqIEFzc3VtZSBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGxhenkgKilcbmxldCBmb3JjZV92YWxfbGF6eV9ibG9jayAoYmxrIDogJ2FyZyBsYXp5X3QpID1cbiAgbGV0IGNsb3N1cmUgPSAoT2JqLm9iaiAoT2JqLmZpZWxkIChPYmoucmVwciBibGspIDApIDogdW5pdCAtPiAnYXJnKSBpblxuICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciBibGspIDAgcmFpc2VfdW5kZWZpbmVkO1xuICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICBtYWtlX2ZvcndhcmQgKE9iai5yZXByIGJsaykgKE9iai5yZXByIHJlc3VsdCk7XG4gIHJlc3VsdFxuXG5cbigqIFtmb3JjZV0gaXMgbm90IHVzZWQsIHNpbmNlIFtMYXp5LmZvcmNlXSBpcyBkZWNsYXJlZCBhcyBhIHByaW1pdGl2ZVxuICAgd2hvc2UgY29kZSBpbmxpbmVzIHRoZSB0YWcgdGVzdHMgb2YgaXRzIGFyZ3VtZW50LCBleGNlcHQgd2hlbiBhZmxcbiAgIGluc3RydW1lbnRhdGlvbiBpcyB0dXJuZWQgb24uICopXG5cbmxldCBmb3JjZSAobHp2IDogJ2FyZyBsYXp5X3QpID1cbiAgKCogVXNpbmcgW1N5cy5vcGFxdWVfaWRlbnRpdHldIHByZXZlbnRzIHR3byBwb3RlbnRpYWwgcHJvYmxlbXM6XG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGhhdmUgRm9yd2FyZF90YWcsIHRoZW4gaXRzIHRhZyBjb3VsZCBoYXZlXG4gICAgICAgY2hhbmdlZCBkdXJpbmcgR0MsIHNvIHRoYXQgaW5mb3JtYXRpb24gbXVzdCBiZSBmb3Jnb3R0ZW4gKHNlZSBHUFIjNzEzXG4gICAgICAgYW5kIGlzc3VlICM3MzAxKVxuICAgICAtIElmIHRoZSB2YWx1ZSBpcyBrbm93biB0byBiZSBpbW11dGFibGUsIHRoZW4gaWYgdGhlIGNvbXBpbGVyXG4gICAgICAgY2Fubm90IHByb3ZlIHRoYXQgdGhlIGxhc3QgYnJhbmNoIGlzIG5vdCB0YWtlbiBpdCB3aWxsIGlzc3VlIGFcbiAgICAgICB3YXJuaW5nIDU5IChtb2RpZmljYXRpb24gb2YgYW4gaW1tdXRhYmxlIHZhbHVlKSAqKVxuICBsZXQgbHp2ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSBsenYgaW5cbiAgbGV0IHggPSBPYmoucmVwciBsenYgaW5cbiAgbGV0IHQgPSBPYmoudGFnIHggaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB0aGVuIChPYmoub2JqIChPYmouZmllbGQgeCAwKSA6ICdhcmcpIGVsc2VcbiAgaWYgdCA8PiBPYmoubGF6eV90YWcgdGhlbiAoT2JqLm9iaiB4IDogJ2FyZylcbiAgZWxzZSBmb3JjZV9sYXp5X2Jsb2NrIGx6dlxuXG5cbmxldCBmb3JjZV92YWwgKGx6diA6ICdhcmcgbGF6eV90KSA9XG4gIGxldCB4ID0gT2JqLnJlcHIgbHp2IGluXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlbiAoT2JqLm9iaiAoT2JqLmZpZWxkIHggMCkgOiAnYXJnKSBlbHNlXG4gIGlmIHQgPD4gT2JqLmxhenlfdGFnIHRoZW4gKE9iai5vYmogeCA6ICdhcmcpXG4gIGVsc2UgZm9yY2VfdmFsX2xhenlfYmxvY2sgbHp2XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbTGF6eV06IGRlZmVycmVkIGNvbXB1dGF0aW9ucyAqKVxuXG5cbigqXG4gICBXQVJOSU5HOiBzb21lIHB1cnBsZSBtYWdpYyBpcyBnb2luZyBvbiBoZXJlLiAgRG8gbm90IHRha2UgdGhpcyBmaWxlXG4gICBhcyBhbiBleGFtcGxlIG9mIGhvdyB0byBwcm9ncmFtIGluIE9DYW1sLlxuKilcblxuXG4oKiBXZSBtYWtlIHVzZSBvZiB0d28gc3BlY2lhbCB0YWdzIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lOlxuICAgW2xhenlfdGFnXSBhbmQgW2ZvcndhcmRfdGFnXS5cblxuICAgQSB2YWx1ZSBvZiB0eXBlIFsnYSBMYXp5LnRdIGNhbiBiZSBvbmUgb2YgdGhyZWUgdGhpbmdzOlxuICAgMS4gQSBibG9jayBvZiBzaXplIDEgd2l0aCB0YWcgW2xhenlfdGFnXS4gIEl0cyBmaWVsZCBpcyBhIGNsb3N1cmUgb2ZcbiAgICAgIHR5cGUgW3VuaXQgLT4gJ2FdIHRoYXQgY29tcHV0ZXMgdGhlIHZhbHVlLlxuICAgMi4gQSBibG9jayBvZiBzaXplIDEgd2l0aCB0YWcgW2ZvcndhcmRfdGFnXS4gIEl0cyBmaWVsZCBpcyB0aGUgdmFsdWVcbiAgICAgIG9mIHR5cGUgWydhXSB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIDMuIEFueXRoaW5nIGVsc2UgZXhjZXB0IGEgZmxvYXQuICBUaGlzIGhhcyB0eXBlIFsnYV0gYW5kIGlzIHRoZSB2YWx1ZVxuICAgICAgdGhhdCB3YXMgY29tcHV0ZWQuXG4gICBFeGNlcHRpb25zIGFyZSBzdG9yZWQgaW4gZm9ybWF0ICgxKS5cbiAgIFRoZSBHQyB3aWxsIG1hZ2ljYWxseSBjaGFuZ2UgdGhpbmdzIGZyb20gKDIpIHRvICgzKSBhY2NvcmRpbmcgdG8gaXRzXG4gICBmYW5jeS5cblxuICAgSWYgT0NhbWwgd2FzIGNvbmZpZ3VyZWQgd2l0aCB0aGUgLWZsYXQtZmxvYXQtYXJyYXkgb3B0aW9uICh3aGljaCBpc1xuICAgY3VycmVudGx5IHRoZSBkZWZhdWx0KSwgdGhlIGZvbGxvd2luZyBpcyBhbHNvIHRydWU6XG4gICBXZSBjYW5ub3QgdXNlIHJlcHJlc2VudGF0aW9uICgzKSBmb3IgYSBbZmxvYXQgTGF6eS50XSBiZWNhdXNlXG4gICBbY2FtbF9tYWtlX2FycmF5XSBhc3N1bWVzIHRoYXQgb25seSBhIFtmbG9hdF0gdmFsdWUgY2FuIGhhdmUgdGFnXG4gICBbRG91YmxlX3RhZ10uXG5cbiAgIFdlIGhhdmUgdG8gdXNlIHRoZSBidWlsdC1pbiB0eXBlIGNvbnN0cnVjdG9yIFtsYXp5X3RdIHRvXG4gICBsZXQgdGhlIGNvbXBpbGVyIGltcGxlbWVudCB0aGUgc3BlY2lhbCB0eXBpbmcgYW5kIGNvbXBpbGF0aW9uXG4gICBydWxlcyBmb3IgdGhlIFtsYXp5XSBrZXl3b3JkLlxuKilcblxudHlwZSAnYSB0ID0gJ2EgQ2FtbGludGVybmFsTGF6eS50XG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgPSBDYW1saW50ZXJuYWxMYXp5LlVuZGVmaW5lZFxuXG5leHRlcm5hbCBtYWtlX2ZvcndhcmQgOiAnYSAtPiAnYSBsYXp5X3QgPSBcImNhbWxfbGF6eV9tYWtlX2ZvcndhcmRcIlxuXG5leHRlcm5hbCBmb3JjZSA6ICdhIHQgLT4gJ2EgPSBcIiVsYXp5X2ZvcmNlXCJcblxuXG5sZXQgZm9yY2VfdmFsID0gQ2FtbGludGVybmFsTGF6eS5mb3JjZV92YWxcblxubGV0IGZyb21fZnVuIChmIDogdW5pdCAtPiAnYXJnKSA9XG4gIGxldCB4ID0gT2JqLm5ld19ibG9jayBPYmoubGF6eV90YWcgMSBpblxuICBPYmouc2V0X2ZpZWxkIHggMCAoT2JqLnJlcHIgZik7XG4gIChPYmoub2JqIHggOiAnYXJnIHQpXG5cbmxldCBmcm9tX3ZhbCAodiA6ICdhcmcpID1cbiAgbGV0IHQgPSBPYmoudGFnIChPYmoucmVwciB2KSBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHx8IHQgPSBPYmoubGF6eV90YWcgfHwgdCA9IE9iai5kb3VibGVfdGFnIHRoZW4gYmVnaW5cbiAgICBtYWtlX2ZvcndhcmQgdlxuICBlbmQgZWxzZSBiZWdpblxuICAgIChPYmoubWFnaWMgdiA6ICdhcmcgdClcbiAgZW5kXG5cblxubGV0IGlzX3ZhbCAobCA6ICdhcmcgdCkgPSBPYmoudGFnIChPYmoucmVwciBsKSA8PiBPYmoubGF6eV90YWdcblxubGV0IGxhenlfZnJvbV9mdW4gPSBmcm9tX2Z1blxuXG5sZXQgbGF6eV9mcm9tX3ZhbCA9IGZyb21fdmFsXG5cbmxldCBsYXp5X2lzX3ZhbCA9IGlzX3ZhbFxuXG5cbmxldCBtYXAgZiB4ID1cbiAgbGF6eSAoZiAoZm9yY2UgeCkpXG5cbmxldCBtYXBfdmFsIGYgeCA9XG4gIGlmIGlzX3ZhbCB4XG4gIHRoZW4gbGF6eV9mcm9tX3ZhbCAoZiAoZm9yY2UgeCkpXG4gIGVsc2UgbGF6eSAoZiAoZm9yY2UgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU2ltb24gQ3J1YW5lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbU2VxXTogZnVuY3Rpb25hbCBpdGVyYXRvcnMgKilcblxudHlwZSArJ2Egbm9kZSA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiAnYSAqICdhIHRcblxuYW5kICdhIHQgPSB1bml0IC0+ICdhIG5vZGVcblxubGV0IGVtcHR5ICgpID0gTmlsXG5cbmxldCByZXR1cm4geCAoKSA9IENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgY29ucyB4IG5leHQgKCkgPSBDb25zICh4LCBuZXh0KVxuXG5sZXQgcmVjIGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBtYXRjaCBzZXExKCkgd2l0aFxuICB8IE5pbCAtPiBzZXEyKClcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zICh4LCBhcHBlbmQgbmV4dCBzZXEyKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoZiB4LCBtYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgICAgfCBTb21lIHkgLT4gQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgaWYgZiB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlciBmIG5leHQpXG4gICAgICBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBjb25jYXQgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgYXBwZW5kIHggKGNvbmNhdCBuZXh0KSAoKVxuXG5sZXQgcmVjIGZsYXRfbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBhcHBlbmQgKGYgeCkgKGZsYXRfbWFwIGYgbmV4dCkgKClcblxubGV0IGNvbmNhdF9tYXAgPSBmbGF0X21hcFxuXG5sZXQgcmVjIGZvbGRfbGVmdCBmIGFjYyBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+IGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgZm9sZF9sZWZ0IGYgYWNjIG5leHRcblxubGV0IHJlYyBpdGVyIGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgZiB4O1xuICAgICAgICBpdGVyIGYgbmV4dFxuXG5sZXQgcmVjIHVuZm9sZCBmIHUgKCkgPVxuICBtYXRjaCBmIHUgd2l0aFxuICB8IE5vbmUgLT4gTmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IENvbnMgKHgsIHVuZm9sZCBmIHUnKVxuXG5sZXQgaXNfZW1wdHkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zIChfLCBfKSAtPlxuICAgICAgZmFsc2VcblxubGV0IHVuY29ucyB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgU29tZSAoeCwgeHMpXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG5cblxuXG5sZXQgcmVjIGxlbmd0aF9hdXggYWNjdSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKF8sIHhzKSAtPlxuICAgICAgbGVuZ3RoX2F1eCAoYWNjdSArIDEpIHhzXG5cbmxldFtAaW5saW5lXSBsZW5ndGggeHMgPVxuICBsZW5ndGhfYXV4IDAgeHNcblxubGV0IHJlYyBpdGVyaV9hdXggZiBpIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICAoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgZiBpIHg7XG4gICAgICBpdGVyaV9hdXggZiAoaSsxKSB4c1xuXG5sZXRbQGlubGluZV0gaXRlcmkgZiB4cyA9XG4gIGl0ZXJpX2F1eCBmIDAgeHNcblxubGV0IHJlYyBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgaSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgaSB4IGluXG4gICAgICBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgKGkrMSkgeHNcblxubGV0W0BpbmxpbmVdIGZvbGRfbGVmdGkgZiBhY2N1IHhzID1cbiAgZm9sZF9sZWZ0aV9hdXggZiBhY2N1IDAgeHNcblxubGV0IHJlYyBmb3JfYWxsIHAgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHAgeCAmJiBmb3JfYWxsIHAgeHNcblxubGV0IHJlYyBleGlzdHMgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHAgeCB8fCBleGlzdHMgcCB4c1xuXG5sZXQgcmVjIGZpbmQgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZCBwIHhzXG5cbmxldCByZWMgZmluZF9tYXAgZiB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGZpbmRfbWFwIGYgeHNcbiAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHJlc3VsdFxuXG4oKiBbaXRlcjJdLCBbZm9sZF9sZWZ0Ml0sIFtmb3JfYWxsMl0sIFtleGlzdHMyXSwgW21hcDJdLCBbemlwXSB3b3JrIGFsc28gaW5cbiAgIHRoZSBjYXNlIHdoZXJlIHRoZSB0d28gc2VxdWVuY2VzIGhhdmUgZGlmZmVyZW50IGxlbmd0aHMuIFRoZXkgc3RvcCBhcyBzb29uXG4gICBhcyBvbmUgc2VxdWVuY2UgaXMgZXhoYXVzdGVkLiBUaGVpciBiZWhhdmlvciBpcyBzbGlnaHRseSBhc3ltbWV0cmljOiB3aGVuXG4gICBbeHNdIGlzIGVtcHR5LCB0aGV5IGRvIG5vdCBmb3JjZSBbeXNdOyBob3dldmVyLCB3aGVuIFt5c10gaXMgZW1wdHksIFt4c10gaXNcbiAgIGZvcmNlZCwgZXZlbiB0aG91Z2ggdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gYXBwbGljYXRpb24gW3hzKCldIHR1cm5zIG91dFxuICAgdG8gYmUgdXNlbGVzcy4gKilcblxubGV0IHJlYyBpdGVyMiBmIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICAoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgICgpXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGYgeCB5O1xuICAgICAgICAgIGl0ZXIyIGYgeHMgeXNcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgYWNjdSB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIGFjY3VcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgeCB5IGluXG4gICAgICAgICAgZm9sZF9sZWZ0MiBmIGFjY3UgeHMgeXNcblxubGV0IHJlYyBmb3JfYWxsMiBmIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeSAmJiBmb3JfYWxsMiBmIHhzIHlzXG5cbmxldCByZWMgZXhpc3RzMiBmIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBmYWxzZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGYgeCB5IHx8IGV4aXN0czIgZiB4cyB5c1xuXG5sZXQgcmVjIGVxdWFsIGVxIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gIHwgTmlsLCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgZXEgeCB5ICYmIGVxdWFsIGVxIHhzIHlzXG4gIHwgTmlsLCBDb25zIChfLCBfKVxuICB8IENvbnMgKF8sIF8pLCBOaWwgLT5cbiAgICAgIGZhbHNlXG5cbmxldCByZWMgY29tcGFyZSBjbXAgeHMgeXMgPVxuICBtYXRjaCB4cygpLCB5cygpIHdpdGhcbiAgfCBOaWwsIE5pbCAtPlxuICAgICAgMFxuICB8IENvbnMgKHgsIHhzKSwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBsZXQgYyA9IGNtcCB4IHkgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZSBjb21wYXJlIGNtcCB4cyB5c1xuICB8IE5pbCwgQ29ucyAoXywgXykgLT5cbiAgICAgIC0xXG4gIHwgQ29ucyAoXywgXyksIE5pbCAtPlxuICAgICAgKzFcblxuXG5cbigqIFtpbml0X2F1eCBmIGkgal0gaXMgdGhlIHNlcXVlbmNlIFtmIGksIC4uLiwgZiAoai0xKV0uICopXG5cbmxldCByZWMgaW5pdF9hdXggZiBpIGogKCkgPVxuICBpZiBpIDwgaiB0aGVuIGJlZ2luXG4gICAgQ29ucyAoZiBpLCBpbml0X2F1eCBmIChpICsgMSkgailcbiAgZW5kXG4gIGVsc2VcbiAgICBOaWxcblxubGV0IGluaXQgbiBmID1cbiAgaWYgbiA8IDAgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU2VxLmluaXRcIlxuICBlbHNlXG4gICAgaW5pdF9hdXggZiAwIG5cblxubGV0IHJlYyByZXBlYXQgeCAoKSA9XG4gIENvbnMgKHgsIHJlcGVhdCB4KVxuXG5sZXQgcmVjIGZvcmV2ZXIgZiAoKSA9XG4gIENvbnMgKGYoKSwgZm9yZXZlciBmKVxuXG4oKiBUaGlzIHByZWxpbWluYXJ5IGRlZmluaXRpb24gb2YgW2N5Y2xlXSByZXF1aXJlcyB0aGUgc2VxdWVuY2UgW3hzXVxuICAgdG8gYmUgbm9uZW1wdHkuIEFwcGx5aW5nIGl0IHRvIGFuIGVtcHR5IHNlcXVlbmNlIHdvdWxkIHByb2R1Y2UgYVxuICAgc2VxdWVuY2UgdGhhdCBkaXZlcmdlcyB3aGVuIGl0IGlzIGZvcmNlZC4gKilcblxubGV0IHJlYyBjeWNsZV9ub25lbXB0eSB4cyAoKSA9XG4gIGFwcGVuZCB4cyAoY3ljbGVfbm9uZW1wdHkgeHMpICgpXG5cbigqIFtjeWNsZSB4c10gY2hlY2tzIHdoZXRoZXIgW3hzXSBpcyBlbXB0eSBhbmQsIGlmIHNvLCByZXR1cm5zIGFuIGVtcHR5XG4gICBzZXF1ZW5jZS4gT3RoZXJ3aXNlLCBbY3ljbGUgeHNdIHByb2R1Y2VzIG9uZSBjb3B5IG9mIFt4c10gZm9sbG93ZWRcbiAgIHdpdGggdGhlIGluZmluaXRlIHNlcXVlbmNlIFtjeWNsZV9ub25lbXB0eSB4c10uIFRodXMsIHRoZSBub25lbXB0aW5lc3NcbiAgIGNoZWNrIGlzIHBlcmZvcm1lZCBqdXN0IG9uY2UuICopXG5cbmxldCBjeWNsZSB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMnKSAtPlxuICAgICAgQ29ucyAoeCwgYXBwZW5kIHhzJyAoY3ljbGVfbm9uZW1wdHkgeHMpKVxuXG4oKiBbaXRlcmF0ZTEgZiB4XSBpcyB0aGUgc2VxdWVuY2UgW2YgeCwgZiAoZiB4KSwgLi4uXS5cbiAgIEl0IGlzIGVxdWl2YWxlbnQgdG8gW3RhaWwgKGl0ZXJhdGUgZiB4KV0uXG4gICBbaXRlcmF0ZTFdIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbaXRlcmF0ZV0uICopXG5cbmxldCByZWMgaXRlcmF0ZTEgZiB4ICgpID1cbiAgbGV0IHkgPSBmIHggaW5cbiAgQ29ucyAoeSwgaXRlcmF0ZTEgZiB5KVxuXG4oKiBbaXRlcmF0ZSBmIHhdIGlzIHRoZSBzZXF1ZW5jZSBbeCwgZiB4LCAuLi5dLiAqKVxuXG4oKiBUaGUgcmVhc29uIHdoeSB3ZSBnaXZlIHRoaXMgc2xpZ2h0bHkgaW5kaXJlY3QgZGVmaW5pdGlvbiBvZiBbaXRlcmF0ZV0sXG4gICBhcyBvcHBvc2VkIHRvIHRoZSBtb3JlIG5haXZlIGRlZmluaXRpb24gdGhhdCBtYXkgY29tZSB0byBtaW5kLCBpcyB0aGF0XG4gICB3ZSBhcmUgY2FyZWZ1bCB0byBhdm9pZCBldmFsdWF0aW5nIFtmIHhdIHVudGlsIHRoaXMgZnVuY3Rpb24gY2FsbCBpc1xuICAgYWN0dWFsbHkgbmVjZXNzYXJ5LiBUaGUgbmFpdmUgZGVmaW5pdGlvbiAobm90IHNob3duIGhlcmUpIGNvbXB1dGVzIHRoZVxuICAgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBzZXF1ZW5jZSwgW2YgeF0sIHdoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IGlzXG4gICByZXF1ZXN0ZWQgYnkgdGhlIHVzZXIuICopXG5cbmxldCBpdGVyYXRlIGYgeCA9XG4gIGNvbnMgeCAoaXRlcmF0ZTEgZiB4KVxuXG5cblxubGV0IHJlYyBtYXBpX2F1eCBmIGkgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoZiBpIHgsIG1hcGlfYXV4IGYgKGkrMSkgeHMpXG5cbmxldFtAaW5saW5lXSBtYXBpIGYgeHMgPVxuICBtYXBpX2F1eCBmIDAgeHNcblxuKCogW3RhaWxfc2NhbiBmIHMgeHNdIGlzIGVxdWl2YWxlbnQgdG8gW3RhaWwgKHNjYW4gZiBzIHhzKV0uXG4gICBbdGFpbF9zY2FuXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW3NjYW5dLiAqKVxuXG4oKiBUaGlzIHNsaWdodGx5IGluZGlyZWN0IGRlZmluaXRpb24gb2YgW3NjYW5dIGlzIG1lYW50IHRvIGF2b2lkIGNvbXB1dGluZ1xuICAgZWxlbWVudHMgdG9vIGVhcmx5OyBzZWUgdGhlIGFib3ZlIGNvbW1lbnQgYWJvdXQgW2l0ZXJhdGUxXSBhbmQgW2l0ZXJhdGVdLiAqKVxuXG5sZXQgcmVjIHRhaWxfc2NhbiBmIHMgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbGV0IHMgPSBmIHMgeCBpblxuICAgICAgQ29ucyAocywgdGFpbF9zY2FuIGYgcyB4cylcblxubGV0IHNjYW4gZiBzIHhzID1cbiAgY29ucyBzICh0YWlsX3NjYW4gZiBzIHhzKVxuXG4oKiBbdGFrZV0gaXMgZGVmaW5lZCBpbiBzdWNoIGEgd2F5IHRoYXQgW3Rha2UgMCB4c10gcmV0dXJucyBbZW1wdHldXG4gICBpbW1lZGlhdGVseSwgd2l0aG91dCBhbGxvY2F0aW5nIGFueSBtZW1vcnkuICopXG5cbmxldCByZWMgdGFrZV9hdXggbiB4cyA9XG4gIGlmIG4gPSAwIHRoZW5cbiAgICBlbXB0eVxuICBlbHNlXG4gICAgZnVuICgpIC0+XG4gICAgICBtYXRjaCB4cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgTmlsXG4gICAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICAgIENvbnMgKHgsIHRha2VfYXV4IChuLTEpIHhzKVxuXG5sZXQgdGFrZSBuIHhzID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcS50YWtlXCI7XG4gIHRha2VfYXV4IG4geHNcblxuKCogW2ZvcmNlX2Ryb3AgbiB4c10gaXMgZXF1aXZhbGVudCB0byBbZHJvcCBuIHhzICgpXS5cbiAgIFtmb3JjZV9kcm9wIG4geHNdIHJlcXVpcmVzIFtuID4gMF0uXG4gICBbZm9yY2VfZHJvcF0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtkcm9wXS4gKilcblxubGV0IHJlYyBmb3JjZV9kcm9wIG4geHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKF8sIHhzKSAtPlxuICAgICAgbGV0IG4gPSBuIC0gMSBpblxuICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICB4cygpXG4gICAgICBlbHNlXG4gICAgICAgIGZvcmNlX2Ryb3AgbiB4c1xuXG4oKiBbZHJvcF0gaXMgZGVmaW5lZCBpbiBzdWNoIGEgd2F5IHRoYXQgW2Ryb3AgMCB4c10gcmV0dXJucyBbeHNdIGltbWVkaWF0ZWx5LFxuICAgd2l0aG91dCBhbGxvY2F0aW5nIGFueSBtZW1vcnkuICopXG5cbmxldCBkcm9wIG4geHMgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU2VxLmRyb3BcIlxuICBlbHNlIGlmIG4gPSAwIHRoZW5cbiAgICB4c1xuICBlbHNlXG4gICAgZnVuICgpIC0+XG4gICAgICBmb3JjZV9kcm9wIG4geHNcblxubGV0IHJlYyB0YWtlX3doaWxlIHAgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgaWYgcCB4IHRoZW4gQ29ucyAoeCwgdGFrZV93aGlsZSBwIHhzKSBlbHNlIE5pbFxuXG5sZXQgcmVjIGRyb3Bfd2hpbGUgcCB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIGFzIG5vZGUgLT5cbiAgICAgIGlmIHAgeCB0aGVuIGRyb3Bfd2hpbGUgcCB4cyAoKSBlbHNlIG5vZGVcblxubGV0IHJlYyBncm91cCBlcSB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBDb25zIChjb25zIHggKHRha2Vfd2hpbGUgKGVxIHgpIHhzKSwgZ3JvdXAgZXEgKGRyb3Bfd2hpbGUgKGVxIHgpIHhzKSlcblxuZXhjZXB0aW9uIEZvcmNlZF90d2ljZVxuXG5tb2R1bGUgU3VzcGVuc2lvbiA9IHN0cnVjdFxuXG4gIHR5cGUgJ2Egc3VzcGVuc2lvbiA9XG4gICAgdW5pdCAtPiAnYVxuXG4gICgqIENvbnZlcnNpb25zLiAqKVxuXG4gIGxldCB0b19sYXp5IDogJ2Egc3VzcGVuc2lvbiAtPiAnYSBMYXp5LnQgPVxuICAgIExhenkuZnJvbV9mdW5cbiAgICAoKiBmdW4gcyAtPiBsYXp5IChzKCkpICopXG5cbiAgbGV0IGZyb21fbGF6eSAocyA6ICdhIExhenkudCkgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBmdW4gKCkgLT4gTGF6eS5mb3JjZSBzXG5cbiAgKCogW21lbW9pemVdIHR1cm5zIGFuIGFyYml0cmFyeSBzdXNwZW5zaW9uIGludG8gYSBwZXJzaXN0ZW50IHN1c3BlbnNpb24uICopXG5cbiAgbGV0IG1lbW9pemUgKHMgOiAnYSBzdXNwZW5zaW9uKSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGZyb21fbGF6eSAodG9fbGF6eSBzKVxuXG4gICgqIFtmYWlsdXJlXSBpcyBhIHN1c3BlbnNpb24gdGhhdCBmYWlscyB3aGVuIGZvcmNlZC4gKilcblxuICBsZXQgZmFpbHVyZSA6IF8gc3VzcGVuc2lvbiA9XG4gICAgZnVuICgpIC0+XG4gICAgICAoKiBBIHN1c3BlbnNpb24gY3JlYXRlZCBieSBbb25jZV0gaGFzIGJlZW4gZm9yY2VkIHR3aWNlLiAqKVxuICAgICAgcmFpc2UgRm9yY2VkX3R3aWNlXG5cbiAgKCogSWYgW2ZdIGlzIGEgc3VzcGVuc2lvbiwgdGhlbiBbb25jZSBmXSBpcyBhIHN1c3BlbnNpb24gdGhhdCBjYW4gYmUgZm9yY2VkXG4gICAgIGF0IG1vc3Qgb25jZS4gSWYgaXQgaXMgZm9yY2VkIG1vcmUgdGhhbiBvbmNlLCB0aGVuIFtGb3JjZWRfdHdpY2VdIGlzXG4gICAgIHJhaXNlZC4gKilcblxuICBsZXQgb25jZSAoZiA6ICdhIHN1c3BlbnNpb24pIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgbGV0IGFjdGlvbiA9IENhbWxpbnRlcm5hbEF0b21pYy5tYWtlIGYgaW5cbiAgICBmdW4gKCkgLT5cbiAgICAgICgqIEdldCB0aGUgZnVuY3Rpb24gY3VycmVudGx5IHN0b3JlZCBpbiBbYWN0aW9uXSwgYW5kIHdyaXRlIHRoZVxuICAgICAgICAgZnVuY3Rpb24gW2ZhaWx1cmVdIGluIGl0cyBwbGFjZSwgc28gdGhlIG5leHQgYWNjZXNzIHdpbGwgcmVzdWx0XG4gICAgICAgICBpbiBhIGNhbGwgdG8gW2ZhaWx1cmUoKV0uICopXG4gICAgICBsZXQgZiA9IENhbWxpbnRlcm5hbEF0b21pYy5leGNoYW5nZSBhY3Rpb24gZmFpbHVyZSBpblxuICAgICAgZigpXG5cbmVuZCAoKiBTdXNwZW5zaW9uICopXG5cbmxldCByZWMgbWVtb2l6ZSB4cyA9XG4gIFN1c3BlbnNpb24ubWVtb2l6ZSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgQ29ucyAoeCwgbWVtb2l6ZSB4cylcbiAgKVxuXG5sZXQgcmVjIG9uY2UgeHMgPVxuICBTdXNwZW5zaW9uLm9uY2UgKGZ1biAoKSAtPlxuICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIENvbnMgKHgsIG9uY2UgeHMpXG4gIClcblxuXG5sZXQgcmVjIHppcCB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgTmlsXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIENvbnMgKCh4LCB5KSwgemlwIHhzIHlzKVxuXG5sZXQgcmVjIG1hcDIgZiB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgTmlsXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIENvbnMgKGYgeCB5LCBtYXAyIGYgeHMgeXMpXG5cbmxldCByZWMgaW50ZXJsZWF2ZSB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgeXMoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoeCwgaW50ZXJsZWF2ZSB5cyB4cylcblxuKCogW3NvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzXSBpcyBlcXVpdmFsZW50IHRvXG4gICAgIFtzb3J0ZWRfbWVyZ2UgY21wIChjb25zIHggeHMpIHlzXS5cblxuICAgW3NvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzXSBpcyBlcXVpdmFsZW50IHRvXG4gICAgIFtzb3J0ZWRfbWVyZ2UgY21wIHhzIChjb25zIHkgeXMpXS5cblxuICAgW3NvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCAoY29ucyB4IHhzKSAoY29ucyB5IHlzKV0uXG5cbiAgIFRoZXNlIHRocmVlIGZ1bmN0aW9ucyBhcmUgdXNlZCBhcyBidWlsZGluZyBibG9ja3MgaW4gdGhlIGRlZmluaXRpb25cbiAgIG9mIFtzb3J0ZWRfbWVyZ2VdLiAqKVxuXG5sZXQgcmVjIHNvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzICgpID1cbiAgbWF0Y2ggeXMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBDb25zICh4LCB4cylcbiAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5hbmQgc29ydGVkX21lcmdlMXIgY21wIHhzIHkgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIENvbnMgKHksIHlzKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXG5cbmFuZCBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXMgPVxuICBpZiBjbXAgeCB5IDw9IDAgdGhlblxuICAgIENvbnMgKHgsIHNvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzKVxuICBlbHNlXG4gICAgQ29ucyAoeSwgc29ydGVkX21lcmdlMWwgY21wIHggeHMgeXMpXG5cbmxldCBzb3J0ZWRfbWVyZ2UgY21wIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gICAgfCBOaWwsIE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IE5pbCwgY1xuICAgIHwgYywgTmlsIC0+XG4gICAgICAgIGNcbiAgICB8IENvbnMgKHgsIHhzKSwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5cbmxldCByZWMgbWFwX2ZzdCB4eXMgKCkgPVxuICBtYXRjaCB4eXMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICgoeCwgXyksIHh5cykgLT5cbiAgICAgIENvbnMgKHgsIG1hcF9mc3QgeHlzKVxuXG5sZXQgcmVjIG1hcF9zbmQgeHlzICgpID1cbiAgbWF0Y2ggeHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoKF8sIHkpLCB4eXMpIC0+XG4gICAgICBDb25zICh5LCBtYXBfc25kIHh5cylcblxubGV0IHVuemlwIHh5cyA9XG4gIG1hcF9mc3QgeHlzLCBtYXBfc25kIHh5c1xuXG5sZXQgc3BsaXQgPVxuICB1bnppcFxuXG4oKiBbZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgIFtmaWx0ZXJfbWFwIEVpdGhlci5maW5kX2xlZnQgKG1hcCBmIHhzKV0uICopXG5cbmxldCByZWMgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgRWl0aGVyLkxlZnQgeSAtPlxuICAgICAgICAgIENvbnMgKHksIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzKVxuICAgICAgfCBFaXRoZXIuUmlnaHQgXyAtPlxuICAgICAgICAgIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzICgpXG5cbmxldCByZWMgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IEVpdGhlci5MZWZ0IF8gLT5cbiAgICAgICAgICBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHMgKClcbiAgICAgIHwgRWl0aGVyLlJpZ2h0IHogLT5cbiAgICAgICAgICBDb25zICh6LCBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHMpXG5cbmxldCBwYXJ0aXRpb25fbWFwIGYgeHMgPVxuICBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyxcbiAgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzXG5cbmxldCBwYXJ0aXRpb24gcCB4cyA9XG4gIGZpbHRlciBwIHhzLCBmaWx0ZXIgKGZ1biB4IC0+IG5vdCAocCB4KSkgeHNcblxuKCogSWYgW3hzc10gaXMgYSBtYXRyaXggKGEgc2VxdWVuY2Ugb2Ygcm93cyksIHRoZW4gW3BlZWwgeHNzXSBpcyBhIHBhaXIgb2ZcbiAgIHRoZSBmaXJzdCBjb2x1bW4gKGEgc2VxdWVuY2Ugb2YgZWxlbWVudHMpIGFuZCBvZiB0aGUgcmVtYWluZGVyIG9mIHRoZVxuICAgbWF0cml4IChhIHNlcXVlbmNlIG9mIHNob3J0ZXIgcm93cykuIFRoZXNlIHR3byBzZXF1ZW5jZXMgaGF2ZSB0aGUgc2FtZVxuICAgbGVuZ3RoLiBUaGUgcm93cyBvZiB0aGUgbWF0cml4IFt4c3NdIGFyZSBub3QgcmVxdWlyZWQgdG8gaGF2ZSB0aGUgc2FtZVxuICAgbGVuZ3RoLiBBbiBlbXB0eSByb3cgaXMgaWdub3JlZC4gKilcblxuKCogQmVjYXVzZSBbcGVlbF0gdXNlcyBbdW56aXBdLCBpdHMgYXJndW1lbnQgbXVzdCBiZSBwZXJzaXN0ZW50LiBUaGUgc2FtZVxuICAgcmVtYXJrIGFwcGxpZXMgdG8gW3RyYW5zcG9zZV0sIFtkaWFnb25hbHNdLCBbcHJvZHVjdF0sIGV0Yy4gKilcblxubGV0IHBlZWwgeHNzID1cbiAgdW56aXAgKGZpbHRlcl9tYXAgdW5jb25zIHhzcylcblxubGV0IHJlYyB0cmFuc3Bvc2UgeHNzICgpID1cbiAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgeHNzIGluXG4gIGlmIGlzX2VtcHR5IGhlYWRzIHRoZW4gYmVnaW5cbiAgICBhc3NlcnQgKGlzX2VtcHR5IHRhaWxzKTtcbiAgICBOaWxcbiAgZW5kXG4gIGVsc2VcbiAgICBDb25zIChoZWFkcywgdHJhbnNwb3NlIHRhaWxzKVxuXG4oKiBUaGUgaW50ZXJuYWwgZnVuY3Rpb24gW2RpYWdvbmFsc10gdGFrZXMgYW4gZXh0cmEgYXJndW1lbnQsIFtyZW1haW5kZXJzXSxcbiAgIHdoaWNoIGNvbnRhaW5zIHRoZSByZW1haW5kZXJzIG9mIHRoZSByb3dzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW5cbiAgIGRpc2NvdmVyZWQuICopXG5cbmxldCByZWMgZGlhZ29uYWxzIHJlbWFpbmRlcnMgeHNzICgpID1cbiAgbWF0Y2ggeHNzKCkgd2l0aFxuICB8IENvbnMgKHhzLCB4c3MpIC0+XG4gICAgICBiZWdpbiBtYXRjaCB4cygpIHdpdGhcbiAgICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgICAgKCogV2UgZGlzY292ZXIgYSBuZXcgbm9uZW1wdHkgcm93IFt4IDo6IHhzXS4gVGh1cywgdGhlIG5leHQgZGlhZ29uYWxcbiAgICAgICAgICAgICBpcyBbeCA6OiBoZWFkc106IHRoaXMgZGlhZ29uYWwgYmVnaW5zIHdpdGggW3hdIGFuZCBjb250aW51ZXMgd2l0aFxuICAgICAgICAgICAgIHRoZSBmaXJzdCBlbGVtZW50IG9mIGV2ZXJ5IHJvdyBpbiBbcmVtYWluZGVyc10uIEluIHRoZSByZWN1cnNpdmVcbiAgICAgICAgICAgICBjYWxsLCB0aGUgYXJndW1lbnQgW3JlbWFpbmRlcnNdIGlzIGluc3RhbnRpYXRlZCB3aXRoIFt4cyA6OlxuICAgICAgICAgICAgIHRhaWxzXSwgd2hpY2ggbWVhbnMgdGhhdCB3ZSBoYXZlIG9uZSBtb3JlIHJlbWFpbmluZyByb3csIFt4c10sXG4gICAgICAgICAgICAgYW5kIHRoYXQgd2Uga2VlcCB0aGUgdGFpbHMgb2YgdGhlIHByZS1leGlzdGluZyByZW1haW5pbmcgcm93cy4gKilcbiAgICAgICAgICBsZXQgaGVhZHMsIHRhaWxzID0gcGVlbCByZW1haW5kZXJzIGluXG4gICAgICAgICAgQ29ucyAoY29ucyB4IGhlYWRzLCBkaWFnb25hbHMgKGNvbnMgeHMgdGFpbHMpIHhzcylcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgKCogV2UgZGlzY292ZXIgYSBuZXcgZW1wdHkgcm93LiBJbiB0aGlzIGNhc2UsIHRoZSBuZXcgZGlhZ29uYWwgaXNcbiAgICAgICAgICAgICBqdXN0IFtoZWFkc10sIGFuZCBbcmVtYWluZGVyc10gaXMgaW5zdGFudGlhdGVkIHdpdGgganVzdCBbdGFpbHNdLFxuICAgICAgICAgICAgIGFzIHdlIGRvIG5vdCBoYXZlIG9uZSBtb3JlIHJlbWFpbmluZyByb3cuICopXG4gICAgICAgICAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgcmVtYWluZGVycyBpblxuICAgICAgICAgIENvbnMgKGhlYWRzLCBkaWFnb25hbHMgdGFpbHMgeHNzKVxuICAgICAgZW5kXG4gIHwgTmlsIC0+XG4gICAgICAoKiBUaGVyZSBhcmUgbm8gbW9yZSByb3dzIHRvIGJlIGRpc2NvdmVyZWQuIFRoZXJlIHJlbWFpbnMgdG8gZXhoYXVzdFxuICAgICAgICAgdGhlIHJlbWFpbmluZyByb3dzLiAqKVxuICAgICAgdHJhbnNwb3NlIHJlbWFpbmRlcnMgKClcblxuKCogSWYgW3hzc10gaXMgYSBtYXRyaXggKGEgc2VxdWVuY2Ugb2Ygcm93cyksIHRoZW4gW2RpYWdvbmFscyB4c3NdIGlzXG4gICB0aGUgc2VxdWVuY2Ugb2YgaXRzIGRpYWdvbmFscy5cblxuICAgVGhlIGZpcnN0IGRpYWdvbmFsIGNvbnRhaW5zIGp1c3QgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlXG4gICBmaXJzdCByb3cuIFRoZSBzZWNvbmQgZGlhZ29uYWwgY29udGFpbnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlXG4gICBzZWNvbmQgcm93IGFuZCB0aGUgc2Vjb25kIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHJvdzsgYW5kIHNvIG9uLlxuICAgVGhpcyBraW5kIG9mIGRpYWdvbmFsIGlzIGluIGZhY3Qgc29tZXRpbWVzIGtub3duIGFzIGFuIGFudGlkaWFnb25hbC5cblxuICAgLSBFdmVyeSBkaWFnb25hbCBpcyBhIGZpbml0ZSBzZXF1ZW5jZS5cbiAgIC0gVGhlIHJvd3Mgb2YgdGhlIG1hdHJpeCBbeHNzXSBhcmUgbm90IHJlcXVpcmVkIHRvIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLlxuICAgLSBUaGUgbWF0cml4IFt4c3NdIGlzIG5vdCByZXF1aXJlZCB0byBiZSBmaW5pdGUgKGluIGVpdGhlciBkaXJlY3Rpb24pLlxuICAgLSBUaGUgbWF0cml4IFt4c3NdIG11c3QgYmUgcGVyc2lzdGVudC4gKilcblxubGV0IGRpYWdvbmFscyB4c3MgPVxuICBkaWFnb25hbHMgZW1wdHkgeHNzXG5cbmxldCBtYXBfcHJvZHVjdCBmIHhzIHlzID1cbiAgY29uY2F0IChkaWFnb25hbHMgKFxuICAgIG1hcCAoZnVuIHggLT5cbiAgICAgIG1hcCAoZnVuIHkgLT5cbiAgICAgICAgZiB4IHlcbiAgICAgICkgeXNcbiAgICApIHhzXG4gICkpXG5cbmxldCBwcm9kdWN0IHhzIHlzID1cbiAgbWFwX3Byb2R1Y3QgKGZ1biB4IHkgLT4gKHgsIHkpKSB4cyB5c1xuXG5sZXQgb2ZfZGlzcGVuc2VyIGl0ID1cbiAgbGV0IHJlYyBjICgpID1cbiAgICBtYXRjaCBpdCgpIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgTmlsXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQ29ucyAoeCwgYylcbiAgaW5cbiAgY1xuXG5sZXQgdG9fZGlzcGVuc2VyIHhzID1cbiAgbGV0IHMgPSByZWYgeHMgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggKCFzKSgpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOb25lXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgcyA6PSB4cztcbiAgICAgICAgU29tZSB4XG5cblxuXG5sZXQgcmVjIGludHMgaSAoKSA9XG4gIENvbnMgKGksIGludHMgKGkgKyAxKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID0gTm9uZSB8IFNvbWUgb2YgJ2FcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgc29tZSB2ID0gU29tZSB2XG5sZXQgdmFsdWUgbyB+ZGVmYXVsdCA9IG1hdGNoIG8gd2l0aCBTb21lIHYgLT4gdiB8IE5vbmUgLT4gZGVmYXVsdFxubGV0IGdldCA9IGZ1bmN0aW9uIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIm9wdGlvbiBpcyBOb25lXCJcbmxldCBiaW5kIG8gZiA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gZiB2XG5sZXQgam9pbiA9IGZ1bmN0aW9uIFNvbWUgbyAtPiBvIHwgTm9uZSAtPiBOb25lXG5sZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxubGV0IGZvbGQgfm5vbmUgfnNvbWUgPSBmdW5jdGlvbiBTb21lIHYgLT4gc29tZSB2IHwgTm9uZSAtPiBub25lXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gU29tZSB2IC0+IGYgdiB8IE5vbmUgLT4gKClcbmxldCBpc19ub25lID0gZnVuY3Rpb24gTm9uZSAtPiB0cnVlIHwgU29tZSBfIC0+IGZhbHNlXG5sZXQgaXNfc29tZSA9IGZ1bmN0aW9uIE5vbmUgLT4gZmFsc2UgfCBTb21lIF8gLT4gdHJ1ZVxuXG5sZXQgZXF1YWwgZXEgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGVxIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gdHJ1ZVxufCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIGNtcCBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gY21wIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gMFxufCBOb25lLCBTb21lIF8gLT4gLTFcbnwgU29tZSBfLCBOb25lIC0+IDFcblxubGV0IHRvX3Jlc3VsdCB+bm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gRXJyb3Igbm9uZSB8IFNvbWUgdiAtPiBPayB2XG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE5vbmUgLT4gW10gfCBTb21lIHYgLT4gW3ZdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gTm9uZSAtPiBTZXEuZW1wdHkgfCBTb21lIHYgLT4gU2VxLnJldHVybiB2XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2VcblxubGV0IG9rIHYgPSBPayB2XG5sZXQgZXJyb3IgZSA9IEVycm9yIGVcbmxldCB2YWx1ZSByIH5kZWZhdWx0ID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gZGVmYXVsdFxubGV0IGdldF9vayA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgRXJyb3IgX1wiXG5sZXQgZ2V0X2Vycm9yID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBlIHwgT2sgXyAtPiBpbnZhbGlkX2FyZyBcInJlc3VsdCBpcyBPayBfXCJcbmxldCBiaW5kIHIgZiA9IG1hdGNoIHIgd2l0aCBPayB2IC0+IGYgdiB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgam9pbiA9IGZ1bmN0aW9uIE9rIHIgLT4gciB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgbWFwIGYgPSBmdW5jdGlvbiBPayB2IC0+IE9rIChmIHYpIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXBfZXJyb3IgZiA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gRXJyb3IgKGYgZSkgfCBPayBfIGFzIHYgLT4gdlxubGV0IGZvbGQgfm9rIH5lcnJvciA9IGZ1bmN0aW9uIE9rIHYgLT4gb2sgdiB8IEVycm9yIGUgLT4gZXJyb3IgZVxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyAtPiAoKVxubGV0IGl0ZXJfZXJyb3IgZiA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZiBlIHwgT2sgXyAtPiAoKVxubGV0IGlzX29rID0gZnVuY3Rpb24gT2sgXyAtPiB0cnVlIHwgRXJyb3IgXyAtPiBmYWxzZVxubGV0IGlzX2Vycm9yID0gZnVuY3Rpb24gRXJyb3IgXyAtPiB0cnVlIHwgT2sgXyAtPiBmYWxzZVxuXG5sZXQgZXF1YWwgfm9rIH5lcnJvciByMCByMSA9IG1hdGNoIHIwLCByMSB3aXRoXG58IE9rIHYwLCBPayB2MSAtPiBvayB2MCB2MVxufCBFcnJvciBlMCwgRXJyb3IgZTEgLT4gZXJyb3IgZTAgZTFcbnwgXywgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBPayBfLCBFcnJvciBfIC0+IC0xXG58IEVycm9yIF8sIE9rIF8gLT4gMVxuXG5sZXQgdG9fb3B0aW9uID0gZnVuY3Rpb24gT2sgdiAtPiBTb21lIHYgfCBFcnJvciBfIC0+IE5vbmVcbmxldCB0b19saXN0ID0gZnVuY3Rpb24gT2sgdiAtPiBbdl0gfCBFcnJvciBfIC0+IFtdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gT2sgdiAtPiBTZXEucmV0dXJuIHYgfCBFcnJvciBfIC0+IFNlcS5lbXB0eVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBib29sID0gZmFsc2UgfCB0cnVlXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmxldCBlcXVhbCA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogYm9vbCAtPiBib29sIC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5leHRlcm5hbCB0b19pbnQgOiBib29sIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uIGZhbHNlIC0+IDAuIHwgdHJ1ZSAtPiAxLlxuXG4oKlxubGV0IG9mX3N0cmluZyA9IGZ1bmN0aW9uXG58IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG58IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxufCBfIC0+IE5vbmVcbiopXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvbiBmYWxzZSAtPiBcImZhbHNlXCIgfCB0cnVlIC0+IFwidHJ1ZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBjaHIgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcIkNoYXIuY2hyXCIgZWxzZSB1bnNhZmVfY2hyIG5cblxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCBlc2NhcGVkID0gZnVuY3Rpb25cbiAgfCAnXFwnJyAtPiBcIlxcXFwnXCJcbiAgfCAnXFxcXCcgLT4gXCJcXFxcXFxcXFwiXG4gIHwgJ1xcbicgLT4gXCJcXFxcblwiXG4gIHwgJ1xcdCcgLT4gXCJcXFxcdFwiXG4gIHwgJ1xccicgLT4gXCJcXFxcclwiXG4gIHwgJ1xcYicgLT4gXCJcXFxcYlwiXG4gIHwgJyAnIC4uICd+JyBhcyBjIC0+XG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAxIGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCBjO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG4gIHwgYyAtPlxuICAgICAgbGV0IG4gPSBjb2RlIGMgaW5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDQgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwICdcXFxcJztcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAxICh1bnNhZmVfY2hyICg0OCArIG4gLyAxMDApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAyICh1bnNhZmVfY2hyICg0OCArIChuIC8gMTApIG1vZCAxMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDMgKHVuc2FmZV9jaHIgKDQ4ICsgbiBtb2QgMTApKTtcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuXG5sZXQgbG93ZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onXG4gIHwgJ1xcMTkyJyAuLiAnXFwyMTQnXG4gIHwgJ1xcMjE2JyAuLiAnXFwyMjInIGFzIGMgLT5cbiAgICB1bnNhZmVfY2hyKGNvZGUgYyArIDMyKVxuICB8IGMgLT4gY1xuXG5sZXQgdXBwZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onXG4gIHwgJ1xcMjI0JyAuLiAnXFwyNDYnXG4gIHwgJ1xcMjQ4JyAuLiAnXFwyNTQnIGFzIGMgLT5cbiAgICB1bnNhZmVfY2hyKGNvZGUgYyAtIDMyKVxuICB8IGMgLT4gY1xuXG5sZXQgbG93ZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgKyAzMilcbiAgfCBjIC0+IGNcblxubGV0IHVwcGVyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjIC0gMzIpXG4gIHwgYyAtPiBjXG5cbnR5cGUgdCA9IGNoYXJcblxubGV0IGNvbXBhcmUgYzEgYzIgPSBjb2RlIGMxIC0gY29kZSBjMlxubGV0IGVxdWFsIChjMTogdCkgKGMyOiB0KSA9IGNvbXBhcmUgYzEgYzIgPSAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIHN0cmluZy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2ZpbGxfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB1bnNhZmVfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGJ5dGVzID0gXCIlYnl0ZXNfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmxldCBtYWtlIG4gYyA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgdW5zYWZlX2ZpbGwgcyAwIG4gYztcbiAgc1xuXG5sZXQgaW5pdCBuIGYgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgcyBpIChmIGkpXG4gIGRvbmU7XG4gIHNcblxubGV0IGVtcHR5ID0gY3JlYXRlIDBcblxubGV0IGNvcHkgcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXQgcyAwIHIgMCBsZW47XG4gIHJcblxubGV0IHRvX3N0cmluZyBiID0gdW5zYWZlX3RvX3N0cmluZyAoY29weSBiKVxubGV0IG9mX3N0cmluZyBzID0gY29weSAodW5zYWZlX29mX3N0cmluZyBzKVxuXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLnN1YiAvIEJ5dGVzLnN1YlwiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBzIG9mcyByIDAgbGVuO1xuICAgIHJcbiAgZW5kXG5cbmxldCBzdWJfc3RyaW5nIGIgb2ZzIGxlbiA9IHVuc2FmZV90b19zdHJpbmcgKHN1YiBiIG9mcyBsZW4pXG5cbigqIGFkZGl0aW9uIHdpdGggYW4gb3ZlcmZsb3cgY2hlY2sgKilcbmxldCAoKyspIGEgYiA9XG4gIGxldCBjID0gYSArIGIgaW5cbiAgbWF0Y2ggYSA8IDAsIGIgPCAwLCBjIDwgMCB3aXRoXG4gIHwgdHJ1ZSAsIHRydWUgLCBmYWxzZVxuICB8IGZhbHNlLCBmYWxzZSwgdHJ1ZSAgLT4gaW52YWxpZF9hcmcgXCJCeXRlcy5leHRlbmRcIiAoKiBvdmVyZmxvdyAqKVxuICB8IF8gLT4gY1xuXG5sZXQgZXh0ZW5kIHMgbGVmdCByaWdodCA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyArKyBsZWZ0ICsrIHJpZ2h0IGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICBsZXQgKHNyY29mZiwgZHN0b2ZmKSA9IGlmIGxlZnQgPCAwIHRoZW4gLWxlZnQsIDAgZWxzZSAwLCBsZWZ0IGluXG4gIGxldCBjcHlsZW4gPSBJbnQubWluIChsZW5ndGggcyAtIHNyY29mZikgKGxlbiAtIGRzdG9mZikgaW5cbiAgaWYgY3B5bGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IHMgc3Jjb2ZmIHIgZHN0b2ZmIGNweWxlbjtcbiAgclxuXG5sZXQgZmlsbCBzIG9mcyBsZW4gYyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmZpbGwgLyBCeXRlcy5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBzIG9mcyBsZW4gY1xuXG5sZXQgYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnl0ZXMuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG5sZXQgYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IHN0cmluZ19sZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuYmxpdCAvIEJ5dGVzLmJsaXRfc3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiQnl0ZXMuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBlbXB0eVxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW5cbiAgICAgICAgICB1bnNhZmVfYmxpdHNcbiAgICAgICAgICAgIChjcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCBzMSBzMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBzMSBpblxuICBsZXQgbDIgPSBsZW5ndGggczIgaW5cbiAgbGV0IHIgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gIHVuc2FmZV9ibGl0IHMxIDAgciAwIGwxO1xuICB1bnNhZmVfYmxpdCBzMiAwIHIgbDEgbDI7XG4gIHJcblxuXG5leHRlcm5hbCBjaGFyX2NvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgY2hhcl9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXDAxMicgfCAnXFxuJyB8ICdcXHInIHwgJ1xcdCcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHRyaW0gcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWkpIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGxldCBqID0gcmVmIChsZW4gLSAxKSBpblxuICB3aGlsZSAhaiA+PSAhaSAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFqKSBkb1xuICAgIGRlY3IgalxuICBkb25lO1xuICBpZiAhaiA+PSAhaSB0aGVuXG4gICAgc3ViIHMgIWkgKCFqIC0gIWkgKyAxKVxuICBlbHNlXG4gICAgZW1wdHlcblxubGV0IGVzY2FwZWQgcyA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgIG4gOj0gIW4gK1xuICAgICAgKG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXG4nIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXGInIC0+IDJcbiAgICAgICB8ICcgJyAuLiAnficgLT4gMVxuICAgICAgIHwgXyAtPiA0KVxuICBkb25lO1xuICBpZiAhbiA9IGxlbmd0aCBzIHRoZW4gY29weSBzIGVsc2UgYmVnaW5cbiAgICBsZXQgcycgPSBjcmVhdGUgIW4gaW5cbiAgICBuIDo9IDA7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgICAgYmVnaW4gbWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnbidcbiAgICAgIHwgJ1xcdCcgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3InXG4gICAgICB8ICdcXGInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnYidcbiAgICAgIHwgKCcgJyAuLiAnficpIGFzIGMgLT4gdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgICBsZXQgYSA9IGNoYXJfY29kZSBjIGluXG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgLyAxMDApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgKGEgLyAxMCkgbW9kIDEwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgbW9kIDEwKSk7XG4gICAgICBlbmQ7XG4gICAgICBpbmNyIG5cbiAgICBkb25lO1xuICAgIHMnXG4gIGVuZFxuXG5sZXQgbWFwIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcGkgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhclxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG5sZXQgYXBwbHkxIGYgcyA9XG4gIGlmIGxlbmd0aCBzID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY29weSBzIGluXG4gICAgdW5zYWZlX3NldCByIDAgKGYodW5zYWZlX2dldCBzIDApKTtcbiAgICByXG4gIGVuZFxuXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbnR5cGUgdCA9IGJ5dGVzXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfYnl0ZXNfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbigqIERlcHJlY2F0ZWQgZnVuY3Rpb25zIGltcGxlbWVudGVkIHZpYSBvdGhlciBkZXByZWNhdGVkIGZ1bmN0aW9ucyAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubGV0IHVwcGVyY2FzZSBzID0gbWFwIENoYXIudXBwZXJjYXNlIHNcbmxldCBsb3dlcmNhc2UgcyA9IG1hcCBDaGFyLmxvd2VyY2FzZSBzXG5cbmxldCBjYXBpdGFsaXplIHMgPSBhcHBseTEgQ2hhci51cHBlcmNhc2Ugc1xubGV0IHVuY2FwaXRhbGl6ZSBzID0gYXBwbHkxIENoYXIubG93ZXJjYXNlIHNcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGxldCBidWYgPSByZWYgKG1ha2UgMjU2ICdcXDAwMCcpIGluXG4gIGxldCByZXNpemUgKCkgPVxuICAgICgqIHJlc2l6ZSAqKVxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1pbiAoMiAqIGxlbmd0aCAhYnVmKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICBpZiBsZW5ndGggIWJ1ZiA9IG5ld19sZW4gdGhlbiBmYWlsd2l0aCBcIkJ5dGVzLm9mX3NlcTogY2Fubm90IGdyb3cgYnl0ZXNcIjtcbiAgICBsZXQgbmV3X2J1ZiA9IG1ha2UgbmV3X2xlbiAnXFwwMDAnIGluXG4gICAgYmxpdCAhYnVmIDAgbmV3X2J1ZiAwICFuO1xuICAgIGJ1ZiA6PSBuZXdfYnVmXG4gIGluXG4gIFNlcS5pdGVyXG4gICAgKGZ1biBjIC0+XG4gICAgICAgaWYgIW4gPSBsZW5ndGggIWJ1ZiB0aGVuIHJlc2l6ZSgpO1xuICAgICAgIHNldCAhYnVmICFuIGM7XG4gICAgICAgaW5jciBuKVxuICAgIGk7XG4gIHN1YiAhYnVmIDAgIW5cblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCogVGhlIGdldF8gZnVuY3Rpb25zIGFyZSBhbGwgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZ1XCJcbmV4dGVybmFsIGdldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9ieXRlc19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2J5dGVzX2dldDY0XCJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gc3dhcDE2ICh1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgdW5zYWZlX2dldF91aW50MTZfbmUgYiBpXG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9nZXRfdWludDE2X25lIGIgaVxuICBlbHNlIHN3YXAxNiAodW5zYWZlX2dldF91aW50MTZfbmUgYiBpKVxuXG5sZXQgZ2V0X2ludDggYiBpID1cbiAgKChnZXRfdWludDggYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDgpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDgpXG5cbmxldCBnZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfaW50MTZfbmUgYiBpID1cbiAgKChnZXRfdWludDE2X25lIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfbGUgYiBpID1cbiAgKChnZXRfdWludDE2X2xlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfYmUgYiBpID1cbiAgKChnZXRfdWludDE2X2JlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MzJfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDMyX2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgeFxuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfYmUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSB4IGVsc2VcbiAgdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIChzd2FwMTYgeClcblxubGV0IHNldF9pbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MTZfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF91aW50OCA9IHNldF9pbnQ4XG5sZXQgc2V0X3VpbnQxNl9uZSA9IHNldF9pbnQxNl9uZVxubGV0IHNldF91aW50MTZfYmUgPSBzZXRfaW50MTZfYmVcbmxldCBzZXRfdWludDE2X2xlID0gc2V0X2ludDE2X2xlXG5cbigqIFVURiBjb2RlY3MgYW5kIHZhbGlkYXRpb25zICopXG5cbmxldCBkZWNfaW52YWxpZCA9IFVjaGFyLnV0Zl9kZWNvZGVfaW52YWxpZFxubGV0W0BpbmxpbmVdIGRlY19yZXQgbiB1ID0gVWNoYXIudXRmX2RlY29kZSBuIChVY2hhci51bnNhZmVfb2ZfaW50IHUpXG5cbigqIEluIGNhc2Ugb2YgZGVjb2RpbmcgZXJyb3IsIGlmIHdlIGVycm9yIG9uIHRoZSBmaXJzdCBieXRlLCB3ZVxuICAgY29uc3VtZSB0aGUgYnl0ZSwgb3RoZXJ3aXNlIHdlIGNvbnN1bWUgdGhlIFtuXSBieXRlcyBwcmVjZWVkaW5nXG4gICB0aGUgZXJyb3JpbmcgYnl0ZS5cblxuICAgVGhpcyBtZWFucyB0aGF0IGlmIGEgY2xpZW50IHVzZXMgZGVjb2RlcyB3aXRob3V0IGNhcmluZyBhYm91dFxuICAgdmFsaWRpdHkgaXQgbmF0dXJhbGx5IHJlcGxhY2UgYm9ndXMgZGF0YSB3aXRoIFVjaGFyLnJlcCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBXSEFUV0cgRW5jb2Rpbmcgc3RhbmRhcmQuIE90aGVyIHNjaGVtZXMgYXJlIHBvc3NpYmxlIGJ5XG4gICBjb25zdWx0aW5nIHRoZSBudW1iZXIgb2YgdXNlZCBieXRlcyBvbiBpbnZhbGlkIGRlY29kZXMuIEZvciBtb3JlXG4gICBkZXRhaWxzIHNlZSBodHRwczovL2hzaXZvbmVuLmZpL2Jyb2tlbi11dGYtOC9cblxuICAgRm9yIHRoaXMgcmVhc29uIGluIFtnZXRfdXRmXzhfdWNoYXJdIHdlIGdyYWR1YWxseSBjaGVjayB0aGUgbmV4dFxuICAgYnl0ZSBpcyBhdmFpbGFibGUgcmF0aGVyIHRoYW4gZG9pbmcgaXQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlXG4gICBmaXJzdCBieXRlLiBDb250cmFzdCB3aXRoIFtpc192YWxpZF91dGZfOF0uICopXG5cbigqIFVURi04ICopXG5cbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3hCRiBiID0gYiBsc3IgNiA8PiAwYjEwXG5sZXRbQGlubGluZV0gbm90X2luX3hBMF90b194QkYgYiA9IGIgbHNyIDUgPD4gMGIxMDFcbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3g5RiBiID0gYiBsc3IgNSA8PiAwYjEwMFxubGV0W0BpbmxpbmVdIG5vdF9pbl94OTBfdG9feEJGIGIgPSBiIDwgMHg5MCB8fCAweEJGIDwgYlxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feDhGIGIgPSBiIGxzciA0IDw+IDB4OFxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfMiBiMCBiMSA9XG4gICgoYjAgbGFuZCAweDFGKSBsc2wgNikgbG9yXG4gICgoYjEgbGFuZCAweDNGKSlcblxubGV0W0BpbmxpbmVdIHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIgPVxuICAoKGIwIGxhbmQgMHgwRikgbHNsIDEyKSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpIGxzbCA2KSBsb3JcbiAgKChiMiBsYW5kIDB4M0YpKVxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMyA9XG4gICgoYjAgbGFuZCAweDA3KSBsc2wgMTgpIGxvclxuICAoKGIxIGxhbmQgMHgzRikgbHNsIDEyKSBsb3JcbiAgKChiMiBsYW5kIDB4M0YpIGxzbCA2KSBsb3JcbiAgKChiMyBsYW5kIDB4M0YpKVxuXG5sZXQgZ2V0X3V0Zl84X3VjaGFyIGIgaSA9XG4gIGxldCBiMCA9IGdldF91aW50OCBiIGkgaW4gKCogcmFpc2VzIGlmIFtpXSBpcyBub3QgYSB2YWxpZCBpbmRleC4gKilcbiAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDggaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBtYXRjaCBDaGFyLnVuc2FmZV9jaHIgYjAgd2l0aCAoKiBTZWUgVGhlIFVuaWNvZGUgU3RhbmRhcmQsIFRhYmxlIDMuNyAqKVxuICB8ICdcXHgwMCcgLi4gJ1xceDdGJyAtPiBkZWNfcmV0IDEgYjBcbiAgfCAnXFx4QzInIC4uICdcXHhERicgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgZGVjX3JldCAyICh1dGZfOF91Y2hhcl8yIGIwIGIxKVxuICB8ICdcXHhFMCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feEEwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEUxJyAuLiAnXFx4RUMnIHwgJ1xceEVFJyAuLiAnXFx4RUYnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgZGVjX3JldCAzICh1dGZfOF91Y2hhcl8zIGIwIGIxIGIyKVxuICB8ICdcXHhFRCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3g5RiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEYwJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94OTBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8ICdcXHhGMScgLi4gJ1xceEYzJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8ICdcXHhGNCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3g4RiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGxldCBiMyA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjMgdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGRlY19yZXQgNCAodXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMylcbiAgfCBfIC0+IGRlY19pbnZhbGlkIDFcblxubGV0IHNldF91dGZfOF91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQ4IGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweDAwN0YgLT5cbiAgICAgIHNldF91aW50OCBiIGkgdTtcbiAgICAgIDFcbiAgfCB1IHdoZW4gdSA8PSAweDA3RkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEMwIGxvciAodSBsc3IgNikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDIpXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhFMCBsb3IgKHUgbHNyIDEyKSk7XG4gICAgICAgc2V0IGIgKGkgKyAxKSAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICAzKVxuICB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhGMCBsb3IgKHUgbHNyIDE4KSk7XG4gICAgICAgc2V0IGIgKGkgKyAxKSAoMHg4MCBsb3IgKCh1IGxzciAxMikgbGFuZCAweDNGKSk7XG4gICAgICAgc2V0IGIgKGkgKyAyKSAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICA0KVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfOCBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50OCBpblxuICAgIG1hdGNoIENoYXIudW5zYWZlX2NociAoZ2V0IGIgaSkgd2l0aFxuICAgIHwgJ1xceDAwJyAuLiAnXFx4N0YnIC0+IGxvb3AgbWF4IGIgKGkgKyAxKVxuICAgIHwgJ1xceEMyJyAuLiAnXFx4REYnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEUwJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3hBMF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RTEnIC4uICdcXHhFQycgfCAnXFx4RUUnIC4uICdcXHhFRicgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEVEJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194OUYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjAnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDkwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMikpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjEnIC4uICdcXHhGMycgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGNCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feDhGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcblxuKCogVVRGLTE2QkUgKilcblxubGV0IGdldF91dGZfMTZiZV91Y2hhciBiIGkgPVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfYmUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBpZiBpID0gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gIG1hdGNoIGdldCBiIGkgd2l0aFxuICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gZGVjX3JldCAyIHVcbiAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBkZWNfaW52YWxpZCAyXG4gIHwgaGkgLT4gKCogY29tYmluZSBbaGldIHdpdGggYSBsb3cgc3Vycm9nYXRlICopXG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgKG1heCAtIGkgKyAxKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfaW52YWxpZCAyICgqIHJldHJ5IGhlcmUgKilcbiAgICAgIHwgbG8gLT5cbiAgICAgICAgICBsZXQgdSA9ICgoKGhpIGxhbmQgMHgzRkYpIGxzbCAxMCkgbG9yIChsbyBsYW5kIDB4M0ZGKSkgKyAweDEwMDAwIGluXG4gICAgICAgICAgZGVjX3JldCA0IHVcblxubGV0IHNldF91dGZfMTZiZV91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQxNl9iZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlIChzZXQgYiBpIHU7IDIpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgICBsZXQgaGkgPSAoMHhEODAwIGxvciAodScgbHNyIDEwKSkgaW5cbiAgICAgIGxldCBsbyA9ICgweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSkgaW5cbiAgICAgIHNldCBiIGkgaGk7IHNldCBiIChpICsgMikgbG87IDRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzE2YmUgYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfYmUgaW5cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgaWYgaSA9IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gbG9vcCBtYXggYiAoaSArIDIpXG4gICAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBmYWxzZVxuICAgIHwgX2hpIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBmYWxzZVxuICAgICAgICB8IF9sbyAtPiBsb29wIG1heCBiIChpICsgNClcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcblxuKCogVVRGLTE2TEUgKilcblxubGV0IGdldF91dGZfMTZsZV91Y2hhciBiIGkgPVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfbGUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBpZiBpID0gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gIG1hdGNoIGdldCBiIGkgd2l0aFxuICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gZGVjX3JldCAyIHVcbiAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBkZWNfaW52YWxpZCAyXG4gIHwgaGkgLT4gKCogY29tYmluZSBbaGldIHdpdGggYSBsb3cgc3Vycm9nYXRlICopXG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgKG1heCAtIGkgKyAxKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfaW52YWxpZCAyICgqIHJldHJ5IGhlcmUgKilcbiAgICAgIHwgbG8gLT5cbiAgICAgICAgICBsZXQgdSA9ICgoKGhpIGxhbmQgMHgzRkYpIGxzbCAxMCkgbG9yIChsbyBsYW5kIDB4M0ZGKSkgKyAweDEwMDAwIGluXG4gICAgICAgICAgZGVjX3JldCA0IHVcblxubGV0IHNldF91dGZfMTZsZV91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQxNl9sZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlIChzZXQgYiBpIHU7IDIpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgICBsZXQgaGkgPSAoMHhEODAwIGxvciAodScgbHNyIDEwKSkgaW5cbiAgICAgIGxldCBsbyA9ICgweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSkgaW5cbiAgICAgIHNldCBiIGkgaGk7IHNldCBiIChpICsgMikgbG87IDRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzE2bGUgYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfbGUgaW5cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgaWYgaSA9IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gbG9vcCBtYXggYiAoaSArIDIpXG4gICAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBmYWxzZVxuICAgIHwgX2hpIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBmYWxzZVxuICAgICAgICB8IF9sbyAtPiBsb29wIG1heCBiIChpICsgNClcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW50XG5cbmxldCB6ZXJvID0gMFxubGV0IG9uZSA9IDFcbmxldCBtaW51c19vbmUgPSAtMVxuZXh0ZXJuYWwgbmVnIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCBhZGQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCBzdWIgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCBtdWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCBkaXYgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCByZW0gOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCBsb2dvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxubGV0IGxvZ25vdCB4ID0gbG9neG9yIHggKC0xKVxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5cbigqXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcbmxldCBvZl9zdHJpbmcgcyA9IHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcbiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmxldCB0b19zdHJpbmcgeCA9IGZvcm1hdF9pbnQgXCIlZFwiIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IEdhbGxpdW0sIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU3RyaW5nIG9wZXJhdGlvbnMsIGJhc2VkIG9uIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gYnl0ZXMubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlc3RyaW5nX3NhZmVfc2V0XCJcbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfc3RyaW5nXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJXN0cmluZ191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDogc3RyaW5nIC0+IGludCAtPiAgYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9maWxsX3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbm1vZHVsZSBCID0gQnl0ZXNcblxubGV0IGJ0cyA9IEIudW5zYWZlX3RvX3N0cmluZ1xubGV0IGJvcyA9IEIudW5zYWZlX29mX3N0cmluZ1xuXG5sZXQgbWFrZSBuIGMgPVxuICBCLm1ha2UgbiBjIHw+IGJ0c1xubGV0IGluaXQgbiBmID1cbiAgQi5pbml0IG4gZiB8PiBidHNcbmxldCBlbXB0eSA9IFwiXCJcbmxldCBjb3B5IHMgPVxuICBCLmNvcHkgKGJvcyBzKSB8PiBidHNcbmxldCBvZl9ieXRlcyA9IEIudG9fc3RyaW5nXG5sZXQgdG9fYnl0ZXMgPSBCLm9mX3N0cmluZ1xubGV0IHN1YiBzIG9mcyBsZW4gPVxuICBCLnN1YiAoYm9zIHMpIG9mcyBsZW4gfD4gYnRzXG5sZXQgZmlsbCA9XG4gIEIuZmlsbFxubGV0IGJsaXQgPVxuICBCLmJsaXRfc3RyaW5nXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gXCJcIlxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW4gYnRzIEBAXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoQi5jcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCA9ICggXiApXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGl0ZXJpIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IHMgaSkgZG9uZVxuXG5sZXQgbWFwIGYgcyA9XG4gIEIubWFwIGYgKGJvcyBzKSB8PiBidHNcbmxldCBtYXBpIGYgcyA9XG4gIEIubWFwaSBmIChib3MgcykgfD4gYnRzXG5sZXQgZm9sZF9yaWdodCBmIHggYSA9XG4gIEIuZm9sZF9yaWdodCBmIChib3MgeCkgYVxubGV0IGZvbGRfbGVmdCBmIGEgeCA9XG4gIEIuZm9sZF9sZWZ0IGYgYSAoYm9zIHgpXG5sZXQgZXhpc3RzIGYgcyA9XG4gIEIuZXhpc3RzIGYgKGJvcyBzKVxubGV0IGZvcl9hbGwgZiBzID1cbiAgQi5mb3JfYWxsIGYgKGJvcyBzKVxuXG4oKiBCZXdhcmU6IHdlIGNhbm5vdCB1c2UgQi50cmltIG9yIEIuZXNjYXBlIGJlY2F1c2UgdGhleSBhbHdheXMgbWFrZSBhXG4gICBjb3B5LCBidXQgU3RyaW5nLm1saSBzcGVsbHMgb3V0IHNvbWUgY2FzZXMgd2hlcmUgd2UgYXJlIG5vdCBhbGxvd2VkXG4gICB0byBtYWtlIGEgY29weS4gKilcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBpZiBzID0gXCJcIiB0aGVuIHNcbiAgZWxzZSBpZiBpc19zcGFjZSAodW5zYWZlX2dldCBzIDApIHx8IGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgKGxlbmd0aCBzIC0gMSkpXG4gICAgdGhlbiBidHMgKEIudHJpbSAoYm9zIHMpKVxuICBlbHNlIHNcblxubGV0IGVzY2FwZWQgcyA9XG4gIGxldCByZWMgZXNjYXBlX2lmX25lZWRlZCBzIG4gaSA9XG4gICAgaWYgaSA+PSBuIHRoZW4gcyBlbHNlXG4gICAgICBtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXDAwMCcuLidcXDAzMScgfCAnXFwxMjcnLi4gJ1xcMjU1JyAtPlxuICAgICAgICAgIGJ0cyAoQi5lc2NhcGVkIChib3MgcykpXG4gICAgICB8IF8gLT4gZXNjYXBlX2lmX25lZWRlZCBzIG4gKGkrMSlcbiAgaW5cbiAgZXNjYXBlX2lmX25lZWRlZCBzIChsZW5ndGggcykgMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gICAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9XG4gIEIudXBwZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPVxuICBCLmxvd2VyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi51bmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG4oKiBEZXByZWNhdGVkIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCB2aWEgb3RoZXIgZGVwcmVjYXRlZCBmdW5jdGlvbnMgKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbmxldCB1cHBlcmNhc2UgcyA9XG4gIEIudXBwZXJjYXNlIChib3MgcykgfD4gYnRzXG5sZXQgbG93ZXJjYXNlIHMgPVxuICBCLmxvd2VyY2FzZSAoYm9zIHMpIHw+IGJ0c1xubGV0IGNhcGl0YWxpemUgcyA9XG4gIEIuY2FwaXRhbGl6ZSAoYm9zIHMpIHw+IGJ0c1xubGV0IHVuY2FwaXRhbGl6ZSBzID1cbiAgQi51bmNhcGl0YWxpemUgKGJvcyBzKSB8PiBidHNcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N0cmluZ19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IGJvcyBzIHw+IEIudG9fc2VxXG5cbmxldCB0b19zZXFpIHMgPSBib3MgcyB8PiBCLnRvX3NlcWlcblxubGV0IG9mX3NlcSBnID0gQi5vZl9zZXEgZyB8PiBidHNcblxuKCogVVRGIGRlY29kZXJzIGFuZCB2YWxpZGF0b3JzICopXG5cbmxldCBnZXRfdXRmXzhfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzhfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzggcyA9IEIuaXNfdmFsaWRfdXRmXzggKGJvcyBzKVxuXG5sZXQgZ2V0X3V0Zl8xNmJlX3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl8xNmJlX3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl8xNmJlIHMgPSBCLmlzX3ZhbGlkX3V0Zl8xNmJlIChib3MgcylcblxubGV0IGdldF91dGZfMTZsZV91Y2hhciBzIGkgPSBCLmdldF91dGZfMTZsZV91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfMTZsZSBzID0gQi5pc192YWxpZF91dGZfMTZsZSAoYm9zIHMpXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX3N0cmluZ19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjRcIlxuXG5sZXQgZ2V0X2ludDggcyBpID0gQi5nZXRfaW50OCAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2xlIHMgaSA9IEIuZ2V0X3VpbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2JlIHMgaSA9IEIuZ2V0X3VpbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbmUgcyBpID0gQi5nZXRfaW50MTZfbmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2xlIHMgaSA9IEIuZ2V0X2ludDE2X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9iZSBzIGkgPSBCLmdldF9pbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfbGUgcyBpID0gQi5nZXRfaW50MzJfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2JlIHMgaSA9IEIuZ2V0X2ludDMyX2JlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9sZSBzIGkgPSBCLmdldF9pbnQ2NF9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfYmUgcyBpID0gQi5nZXRfaW50NjRfYmUgKGJvcyBzKSBpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHVuaXQgPSAoKVxuXG5sZXQgZXF1YWwgKCkgKCkgPSB0cnVlXG5sZXQgY29tcGFyZSAoKSAoKSA9IDBcbmxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBleHRlcm5fZmxhZ3MgPVxuICAgIE5vX3NoYXJpbmdcbiAgfCBDbG9zdXJlc1xuICB8IENvbXBhdF8zMlxuKCogbm90ZTogdGhpcyB0eXBlIGRlZmluaXRpb24gaXMgdXNlZCBpbiAncnVudGltZS9kZWJ1Z2dlci5jJyAqKVxuXG5leHRlcm5hbCB0b19jaGFubmVsOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiB1bml0XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmV4dGVybmFsIHRvX2J5dGVzOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBieXRlc1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlc1wiXG5leHRlcm5hbCB0b19zdHJpbmc6ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IHN0cmluZ1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmdcIlxuZXh0ZXJuYWwgdG9fYnVmZmVyX3Vuc2FmZTpcbiAgICAgIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gaW50XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclwiXG5cbmxldCB0b19idWZmZXIgYnVmZiBvZnMgbGVuIHYgZmxhZ3MgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwudG9fYnVmZmVyOiBzdWJzdHJpbmcgb3V0IG9mIGJvdW5kc1wiXG4gIGVsc2UgdG9fYnVmZmVyX3Vuc2FmZSBidWZmIG9mcyBsZW4gdiBmbGFnc1xuXG4oKiBUaGUgZnVuY3Rpb25zIGJlbG93IHVzZSBieXRlIHNlcXVlbmNlcyBhcyBpbnB1dCwgbmV2ZXIgdXNpbmcgYW55XG4gICBtdXRhdGlvbi4gSXQgbWFrZXMgc2Vuc2UgdG8gdXNlIG5vbi1tdXRhdGVkIFtieXRlc10gcmF0aGVyIHRoYW5cbiAgIFtzdHJpbmddLCBiZWNhdXNlIHdlIHJlYWxseSB3b3JrIHdpdGggc2VxdWVuY2VzIG9mIGJ5dGVzLCBub3RcbiAgIGEgdGV4dCByZXByZXNlbnRhdGlvbi5cbiopXG5cbmV4dGVybmFsIGZyb21fY2hhbm5lbDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBmcm9tX2J5dGVzX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXNcIlxuZXh0ZXJuYWwgZGF0YV9zaXplX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZVwiXG5cbmxldCBoZWFkZXJfc2l6ZSA9IDIwXG5sZXQgZGF0YV9zaXplIGJ1ZmYgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGhlYWRlcl9zaXplXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmRhdGFfc2l6ZVwiXG4gIGVsc2UgZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mc1xubGV0IHRvdGFsX3NpemUgYnVmZiBvZnMgPSBoZWFkZXJfc2l6ZSArIGRhdGFfc2l6ZSBidWZmIG9mc1xuXG5sZXQgZnJvbV9ieXRlcyBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5mcm9tX2J5dGVzXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCBsZW4gPSBkYXRhX3NpemVfdW5zYWZlIGJ1ZmYgb2ZzIGluXG4gICAgaWYgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSAoaGVhZGVyX3NpemUgKyBsZW4pXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gICAgZWxzZSBmcm9tX2J5dGVzX3Vuc2FmZSBidWZmIG9mc1xuICBlbmRcblxubGV0IGZyb21fc3RyaW5nIGJ1ZmYgb2ZzID1cbiAgKCogQnl0ZXMudW5zYWZlX29mX3N0cmluZyBpcyBzYWZlIGhlcmUsIGFzIHRoZSBwcm9kdWNlZCBieXRlXG4gICAgIHNlcXVlbmNlIGlzIG5ldmVyIG11dGF0ZWQgKilcbiAgZnJvbV9ieXRlcyAoQnl0ZXMudW5zYWZlX29mX3N0cmluZyBidWZmKSBvZnNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGFycmF5cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGFycmF5XG5cbigqIEFycmF5IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogJ2EgYXJyYXkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbmV4dGVybmFsIGdldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcbmV4dGVybmFsIG1ha2U6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuZXh0ZXJuYWwgY3JlYXRlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIHVuc2FmZV9zdWIgOiAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X3N1YlwiXG5leHRlcm5hbCBhcHBlbmRfcHJpbSA6ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X2FwcGVuZFwiXG5leHRlcm5hbCBjb25jYXQgOiAnYSBhcnJheSBsaXN0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X2NvbmNhdFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gICdhIGFycmF5IC0+IGludCAtPiAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfYmxpdFwiXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6XG4gICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9hcnJheV9maWxsXCJcbmV4dGVybmFsIGNyZWF0ZV9mbG9hdDogaW50IC0+IGZsb2F0IGFycmF5ID0gXCJjYW1sX21ha2VfZmxvYXRfdmVjdFwiXG5sZXQgbWFrZV9mbG9hdCA9IGNyZWF0ZV9mbG9hdFxuXG5tb2R1bGUgRmxvYXRhcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gZmxvYXRhcnJheSA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IGZsb2F0YXJyYXkgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5lbmRcblxubGV0IGluaXQgbCBmID1cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2VcbiAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmluaXRcIlxuICAoKiBTZWUgIzY1NzUuIFdlIGNvdWxkIGFsc28gY2hlY2sgZm9yIG1heGltdW0gYXJyYXkgc2l6ZSwgYnV0IHRoaXMgZGVwZW5kc1xuICAgICBvbiB3aGV0aGVyIHdlIGNyZWF0ZSBhIGZsb2F0IGFycmF5IG9yIGEgcmVndWxhciBvbmUuLi4gKilcbiAgZWxzZVxuICAgbGV0IHJlcyA9IGNyZWF0ZSBsIChmIDApIGluXG4gICBmb3IgaSA9IDEgdG8gcHJlZCBsIGRvXG4gICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgIGRvbmU7XG4gICByZXNcblxubGV0IG1ha2VfbWF0cml4IHN4IHN5IGluaXQgPVxuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgZm9yIHggPSAwIHRvIHByZWQgc3ggZG9cbiAgICB1bnNhZmVfc2V0IHJlcyB4IChjcmVhdGUgc3kgaW5pdClcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBjcmVhdGVfbWF0cml4ID0gbWFrZV9tYXRyaXhcblxubGV0IGNvcHkgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW4gaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgdW5zYWZlX3N1YiBhIDAgbFxuXG5sZXQgYXBwZW5kIGExIGEyID1cbiAgbGV0IGwxID0gbGVuZ3RoIGExIGluXG4gIGlmIGwxID0gMCB0aGVuIGNvcHkgYTJcbiAgZWxzZSBpZiBsZW5ndGggYTIgPSAwIHRoZW4gdW5zYWZlX3N1YiBhMSAwIGwxXG4gIGVsc2UgYXBwZW5kX3ByaW0gYTEgYTJcblxubGV0IHN1YiBhIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGEgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LnN1YlwiXG4gIGVsc2UgdW5zYWZlX3N1YiBhIG9mcyBsZW5cblxubGV0IGZpbGwgYSBvZnMgbGVuIHYgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGEgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2XG5cbmxldCBibGl0IGExIG9mczEgYTIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggYTEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIGEyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuXG5cbmxldCBpdGVyIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZih1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgaXRlcjIgZiBhIGIgPVxuICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSBkb25lXG5cbmxldCBtYXAgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcDIgZiBhIGIgPVxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBsYSA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIChmICh1bnNhZmVfZ2V0IGEgMCkgKHVuc2FmZV9nZXQgYiAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcbiAgZW5kXG5cbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYgMCAodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCByZWMgdG9saXN0IGkgcmVzID1cbiAgICBpZiBpIDwgMCB0aGVuIHJlcyBlbHNlIHRvbGlzdCAoaSAtIDEpICh1bnNhZmVfZ2V0IGEgaSA6OiByZXMpIGluXG4gIHRvbGlzdCAobGVuZ3RoIGEgLSAxKSBbXVxuXG4oKiBDYW5ub3QgdXNlIExpc3QubGVuZ3RoIGhlcmUgYmVjYXVzZSB0aGUgTGlzdCBtb2R1bGUgZGVwZW5kcyBvbiBBcnJheS4gKilcbmxldCByZWMgbGlzdF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjdVxuICB8IF86OnQgLT4gbGlzdF9sZW5ndGggKHN1Y2MgYWNjdSkgdFxuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgYSA9IGNyZWF0ZSAobGlzdF9sZW5ndGggMCBsKSBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGkrMSkgdGwgaW5cbiAgICAgIGZpbGwgMSB0bFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2MgaW5wdXRfYXJyYXkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0X2FycmF5IGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoYWNjLCBbfHxdKSBlbHNlIGJlZ2luXG4gICAgbGV0IGFjYywgZWx0ID0gZiBhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgMCkgaW5cbiAgICBsZXQgb3V0cHV0X2FycmF5ID0gY3JlYXRlIGxlbiBlbHQgaW5cbiAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgYWNjJywgZWx0ID0gZiAhYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IGkpIGluXG4gICAgICBhY2MgOj0gYWNjJztcbiAgICAgIHVuc2FmZV9zZXQgb3V0cHV0X2FycmF5IGkgZWx0O1xuICAgIGRvbmU7XG4gICAgIWFjYywgb3V0cHV0X2FycmF5XG4gIGVuZFxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZm9yX2FsbDJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBleGlzdHMyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5leGlzdHMyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBtZW1xIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHggPT0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX29wdCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgIGVsc2UgbG9vcCAoc3VjYyBpKVxuICBpblxuICBsb29wIDBcblxubGV0IGZpbmRfbWFwIGYgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGYgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoc3VjYyBpKVxuICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgeCA9XG4gIGlmIHggPSBbfHxdIHRoZW4gW3x8XSwgW3x8XVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGEwLCBiMCA9IHVuc2FmZV9nZXQgeCAwIGluXG4gICAgbGV0IG4gPSBsZW5ndGggeCBpblxuICAgIGxldCBhID0gY3JlYXRlIG4gYTAgaW5cbiAgICBsZXQgYiA9IGNyZWF0ZSBuIGIwIGluXG4gICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICBsZXQgYWksIGJpID0gdW5zYWZlX2dldCB4IGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIGFpO1xuICAgICAgdW5zYWZlX3NldCBiIGkgYmlcbiAgICBkb25lO1xuICAgIGEsIGJcbiAgZW5kXG5cbmxldCBjb21iaW5lIGEgYiA9XG4gIGxldCBuYSA9IGxlbmd0aCBhIGluXG4gIGxldCBuYiA9IGxlbmd0aCBiIGluXG4gIGlmIG5hIDw+IG5iIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5jb21iaW5lXCI7XG4gIGlmIG5hID0gMCB0aGVuIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCB4ID0gY3JlYXRlIG5hICh1bnNhZmVfZ2V0IGEgMCwgdW5zYWZlX2dldCBiIDApIGluXG4gICAgZm9yIGkgPSAxIHRvIG5hIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCB4IGkgKHVuc2FmZV9nZXQgYSBpLCB1bnNhZmVfZ2V0IGIgaSlcbiAgICBkb25lO1xuICAgIHhcbiAgZW5kXG5cbmV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG5sZXQgc29ydCBjbXAgYSA9XG4gIGxldCBtYXhzb24gbCBpID1cbiAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICF4XG4gICAgZW5kIGVsc2VcbiAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgdGhlbiBpMzErMVxuICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICBpblxuICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgIGJ1YmJsZWRvd24gbCBqXG4gIGluXG4gIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgc2V0IGEgaSBlO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgZG9uZTtcbiAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuXG5sZXQgY3V0b2ZmID0gNVxubGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICBlbmRcbiAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgaW5cbiAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgZGVjciBqO1xuICAgICAgZG9uZTtcbiAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICBkb25lO1xuICBpblxuICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgbGV0IHQgPSBtYWtlIGwyIChnZXQgYSAwKSBpblxuICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICBlbmRcblxuXG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgb2ZfcmV2X2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGxlbiA9IGxpc3RfbGVuZ3RoIDAgbCBpblxuICAgICAgbGV0IGEgPSBjcmVhdGUgbGVuIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgICAgaW5cbiAgICAgIGZpbGwgKGxlbi0yKSB0bFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgb2ZfcmV2X2xpc3QgbFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDMyXTogMzItYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDMyID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDMyIC0+IGludCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX2Zsb2F0XCIgXCJjYW1sX2ludDMyX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQzMiAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQzMl90b19mbG9hdFwiIFwiY2FtbF9pbnQzMl90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgemVybyA9IDBsXG5sZXQgb25lID0gMWxcbmxldCBtaW51c19vbmUgPSAtMWxcbmxldCBzdWNjIG4gPSBhZGQgbiAxbFxubGV0IHByZWQgbiA9IHN1YiBuIDFsXG5sZXQgYWJzIG4gPSBpZiBuID49IDBsIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgbWluX2ludCA9IDB4ODAwMDAwMDBsXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZsXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFsKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gIHwgMzIgLT5cbiAgICAgIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gICAgICBmdW4gbiAtPlxuICAgICAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICB8IDY0IC0+XG4gICAgICAoKiBTbyB0aGF0IGl0IGNvbXBpbGVzIGluIDMyLWJpdCAqKVxuICAgICAgbGV0IG1hc2sgPSAweEZGRkYgbHNsIDE2IGxvciAweEZGRkYgaW5cbiAgICAgIGZ1biBuIC0+IFNvbWUgKHRvX2ludCBuIGxhbmQgbWFzaylcbiAgfCBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZyA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMiA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gaW50MzJcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcGFyc2luZyBlbmdpbmUgKilcblxub3BlbiBMZXhpbmdcblxuKCogSW50ZXJuYWwgaW50ZXJmYWNlIHRvIHRoZSBwYXJzaW5nIGVuZ2luZSAqKVxuXG50eXBlIHBhcnNlcl9lbnYgPVxuICB7IG11dGFibGUgc19zdGFjayA6IGludCBhcnJheTsgICAgICAgICgqIFN0YXRlcyAqKVxuICAgIG11dGFibGUgdl9zdGFjayA6IE9iai50IGFycmF5OyAgICAgICgqIFNlbWFudGljIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgKCogU3RhcnQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzeW1iX2VuZF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAgICgqIEVuZCBwb3NpdGlvbnMgKilcbiAgICBtdXRhYmxlIHN0YWNrc2l6ZSA6IGludDsgICAgICAgICAgICAoKiBTaXplIG9mIHRoZSBzdGFja3MgKilcbiAgICBtdXRhYmxlIHN0YWNrYmFzZSA6IGludDsgICAgICAgICAgICAoKiBCYXNlIHNwIGZvciBjdXJyZW50IHBhcnNlICopXG4gICAgbXV0YWJsZSBjdXJyX2NoYXIgOiBpbnQ7ICAgICAgICAgICAgKCogTGFzdCB0b2tlbiByZWFkICopXG4gICAgbXV0YWJsZSBsdmFsIDogT2JqLnQ7ICAgICAgICAgICAgICAgKCogSXRzIHNlbWFudGljIGF0dHJpYnV0ZSAqKVxuICAgIG11dGFibGUgc3ltYl9zdGFydCA6IHBvc2l0aW9uOyAgICAgICgqIFN0YXJ0IHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sKilcbiAgICBtdXRhYmxlIHN5bWJfZW5kIDogcG9zaXRpb247ICAgICAgICAoKiBFbmQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1ib2wgKilcbiAgICBtdXRhYmxlIGFzcCA6IGludDsgICAgICAgICAgICAgICAgICAoKiBUaGUgc3RhY2sgcG9pbnRlciBmb3IgYXR0cmlidXRlcyAqKVxuICAgIG11dGFibGUgcnVsZV9sZW4gOiBpbnQ7ICAgICAgICAgICAgICgqIE51bWJlciBvZiByaHMgaXRlbXMgaW4gdGhlIHJ1bGUgKilcbiAgICBtdXRhYmxlIHJ1bGVfbnVtYmVyIDogaW50OyAgICAgICAgICAoKiBSdWxlIG51bWJlciB0byByZWR1Y2UgYnkgKilcbiAgICBtdXRhYmxlIHNwIDogaW50OyAgICAgICAgICAgICAgICAgICAoKiBTYXZlZCBzcCBmb3IgcGFyc2VfZW5naW5lICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6IGludDsgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3RhdGUgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgZXJyZmxhZyA6IGludCB9ICAgICAgICAgICAgICgqIFNhdmVkIGVycm9yIGZsYWcgZm9yIHBhcnNlX2VuZ2luZSAqKVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxudHlwZSBwYXJzZV90YWJsZXMgPVxuICB7IGFjdGlvbnMgOiAocGFyc2VyX2VudiAtPiBPYmoudCkgYXJyYXk7XG4gICAgdHJhbnNsX2NvbnN0IDogaW50IGFycmF5O1xuICAgIHRyYW5zbF9ibG9jayA6IGludCBhcnJheTtcbiAgICBsaHMgOiBzdHJpbmc7XG4gICAgbGVuIDogc3RyaW5nO1xuICAgIGRlZnJlZCA6IHN0cmluZztcbiAgICBkZ290byA6IHN0cmluZztcbiAgICBzaW5kZXggOiBzdHJpbmc7XG4gICAgcmluZGV4IDogc3RyaW5nO1xuICAgIGdpbmRleCA6IHN0cmluZztcbiAgICB0YWJsZXNpemUgOiBpbnQ7XG4gICAgdGFibGUgOiBzdHJpbmc7XG4gICAgY2hlY2sgOiBzdHJpbmc7XG4gICAgZXJyb3JfZnVuY3Rpb24gOiBzdHJpbmcgLT4gdW5pdDtcbiAgICBuYW1lc19jb25zdCA6IHN0cmluZztcbiAgICBuYW1lc19ibG9jayA6IHN0cmluZyB9XG5cbmV4Y2VwdGlvbiBZWWV4aXQgb2YgT2JqLnRcbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuXG50eXBlIHBhcnNlcl9pbnB1dCA9XG4gICAgU3RhcnRcbiAgfCBUb2tlbl9yZWFkXG4gIHwgU3RhY2tzX2dyb3duXzFcbiAgfCBTdGFja3NfZ3Jvd25fMlxuICB8IFNlbWFudGljX2FjdGlvbl9jb21wdXRlZFxuICB8IEVycm9yX2RldGVjdGVkXG5cbnR5cGUgcGFyc2VyX291dHB1dCA9XG4gICAgUmVhZF90b2tlblxuICB8IFJhaXNlX3BhcnNlX2Vycm9yXG4gIHwgR3Jvd19zdGFja3NfMVxuICB8IEdyb3dfc3RhY2tzXzJcbiAgfCBDb21wdXRlX3NlbWFudGljX2FjdGlvblxuICB8IENhbGxfZXJyb3JfZnVuY3Rpb25cblxuKCogdG8gYXZvaWQgd2FybmluZ3MgKilcbmxldCBfID0gW1JlYWRfdG9rZW47IFJhaXNlX3BhcnNlX2Vycm9yOyBHcm93X3N0YWNrc18xOyBHcm93X3N0YWNrc18yO1xuICAgICAgICAgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb247IENhbGxfZXJyb3JfZnVuY3Rpb25dXG5cbmV4dGVybmFsIHBhcnNlX2VuZ2luZSA6XG4gICAgcGFyc2VfdGFibGVzIC0+IHBhcnNlcl9lbnYgLT4gcGFyc2VyX2lucHV0IC0+IE9iai50IC0+IHBhcnNlcl9vdXRwdXRcbiAgICA9IFwiY2FtbF9wYXJzZV9lbmdpbmVcIlxuXG5leHRlcm5hbCBzZXRfdHJhY2U6IGJvb2wgLT4gYm9vbFxuICAgID0gXCJjYW1sX3NldF9wYXJzZXJfdHJhY2VcIlxuXG5sZXQgZW52ID1cbiAgeyBzX3N0YWNrID0gQXJyYXkubWFrZSAxMDAgMDtcbiAgICB2X3N0YWNrID0gQXJyYXkubWFrZSAxMDAgKE9iai5yZXByICgpKTtcbiAgICBzeW1iX3N0YXJ0X3N0YWNrID0gQXJyYXkubWFrZSAxMDAgZHVtbXlfcG9zO1xuICAgIHN5bWJfZW5kX3N0YWNrID0gQXJyYXkubWFrZSAxMDAgZHVtbXlfcG9zO1xuICAgIHN0YWNrc2l6ZSA9IDEwMDtcbiAgICBzdGFja2Jhc2UgPSAwO1xuICAgIGN1cnJfY2hhciA9IDA7XG4gICAgbHZhbCA9IE9iai5yZXByICgpO1xuICAgIHN5bWJfc3RhcnQgPSBkdW1teV9wb3M7XG4gICAgc3ltYl9lbmQgPSBkdW1teV9wb3M7XG4gICAgYXNwID0gMDtcbiAgICBydWxlX2xlbiA9IDA7XG4gICAgcnVsZV9udW1iZXIgPSAwO1xuICAgIHNwID0gMDtcbiAgICBzdGF0ZSA9IDA7XG4gICAgZXJyZmxhZyA9IDAgfVxuXG5sZXQgZ3Jvd19zdGFja3MoKSA9XG4gIGxldCBvbGRzaXplID0gZW52LnN0YWNrc2l6ZSBpblxuICBsZXQgbmV3c2l6ZSA9IG9sZHNpemUgKiAyIGluXG4gIGxldCBuZXdfcyA9IEFycmF5Lm1ha2UgbmV3c2l6ZSAwXG4gIGFuZCBuZXdfdiA9IEFycmF5Lm1ha2UgbmV3c2l6ZSAoT2JqLnJlcHIgKCkpXG4gIGFuZCBuZXdfc3RhcnQgPSBBcnJheS5tYWtlIG5ld3NpemUgZHVtbXlfcG9zXG4gIGFuZCBuZXdfZW5kID0gQXJyYXkubWFrZSBuZXdzaXplIGR1bW15X3BvcyBpblxuICAgIEFycmF5LmJsaXQgZW52LnNfc3RhY2sgMCBuZXdfcyAwIG9sZHNpemU7XG4gICAgZW52LnNfc3RhY2sgPC0gbmV3X3M7XG4gICAgQXJyYXkuYmxpdCBlbnYudl9zdGFjayAwIG5ld192IDAgb2xkc2l6ZTtcbiAgICBlbnYudl9zdGFjayA8LSBuZXdfdjtcbiAgICBBcnJheS5ibGl0IGVudi5zeW1iX3N0YXJ0X3N0YWNrIDAgbmV3X3N0YXJ0IDAgb2xkc2l6ZTtcbiAgICBlbnYuc3ltYl9zdGFydF9zdGFjayA8LSBuZXdfc3RhcnQ7XG4gICAgQXJyYXkuYmxpdCBlbnYuc3ltYl9lbmRfc3RhY2sgMCBuZXdfZW5kIDAgb2xkc2l6ZTtcbiAgICBlbnYuc3ltYl9lbmRfc3RhY2sgPC0gbmV3X2VuZDtcbiAgICBlbnYuc3RhY2tzaXplIDwtIG5ld3NpemVcblxubGV0IGNsZWFyX3BhcnNlcigpID1cbiAgQXJyYXkuZmlsbCBlbnYudl9zdGFjayAwIGVudi5zdGFja3NpemUgKE9iai5yZXByICgpKTtcbiAgZW52Lmx2YWwgPC0gT2JqLnJlcHIgKClcblxubGV0IGN1cnJlbnRfbG9va2FoZWFkX2Z1biA9IHJlZiAoZnVuIChfIDogT2JqLnQpIC0+IGZhbHNlKVxuXG5sZXQgeXlwYXJzZSB0YWJsZXMgc3RhcnQgbGV4ZXIgbGV4YnVmID1cbiAgbGV0IHJlYyBsb29wIGNtZCBhcmcgPVxuICAgIG1hdGNoIHBhcnNlX2VuZ2luZSB0YWJsZXMgZW52IGNtZCBhcmcgd2l0aFxuICAgICAgUmVhZF90b2tlbiAtPlxuICAgICAgICBsZXQgdCA9IE9iai5yZXByKGxleGVyIGxleGJ1ZikgaW5cbiAgICAgICAgZW52LnN5bWJfc3RhcnQgPC0gbGV4YnVmLmxleF9zdGFydF9wO1xuICAgICAgICBlbnYuc3ltYl9lbmQgPC0gbGV4YnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGxvb3AgVG9rZW5fcmVhZCB0XG4gICAgfCBSYWlzZV9wYXJzZV9lcnJvciAtPlxuICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgIHwgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb24gLT5cbiAgICAgICAgbGV0IChhY3Rpb24sIHZhbHVlKSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICAoU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkLCB0YWJsZXMuYWN0aW9ucy4oZW52LnJ1bGVfbnVtYmVyKSBlbnYpXG4gICAgICAgICAgd2l0aCBQYXJzZV9lcnJvciAtPlxuICAgICAgICAgICAgKEVycm9yX2RldGVjdGVkLCBPYmoucmVwciAoKSkgaW5cbiAgICAgICAgbG9vcCBhY3Rpb24gdmFsdWVcbiAgICB8IEdyb3dfc3RhY2tzXzEgLT5cbiAgICAgICAgZ3Jvd19zdGFja3MoKTsgbG9vcCBTdGFja3NfZ3Jvd25fMSAoT2JqLnJlcHIgKCkpXG4gICAgfCBHcm93X3N0YWNrc18yIC0+XG4gICAgICAgIGdyb3dfc3RhY2tzKCk7IGxvb3AgU3RhY2tzX2dyb3duXzIgKE9iai5yZXByICgpKVxuICAgIHwgQ2FsbF9lcnJvcl9mdW5jdGlvbiAtPlxuICAgICAgICB0YWJsZXMuZXJyb3JfZnVuY3Rpb24gXCJzeW50YXggZXJyb3JcIjtcbiAgICAgICAgbG9vcCBFcnJvcl9kZXRlY3RlZCAoT2JqLnJlcHIgKCkpIGluXG4gIGxldCBpbml0X2FzcCA9IGVudi5hc3BcbiAgYW5kIGluaXRfc3AgPSBlbnYuc3BcbiAgYW5kIGluaXRfc3RhY2tiYXNlID0gZW52LnN0YWNrYmFzZVxuICBhbmQgaW5pdF9zdGF0ZSA9IGVudi5zdGF0ZVxuICBhbmQgaW5pdF9jdXJyX2NoYXIgPSBlbnYuY3Vycl9jaGFyXG4gIGFuZCBpbml0X2x2YWwgPSBlbnYubHZhbFxuICBhbmQgaW5pdF9lcnJmbGFnID0gZW52LmVycmZsYWcgaW5cbiAgZW52LnN0YWNrYmFzZSA8LSBlbnYuc3AgKyAxO1xuICBlbnYuY3Vycl9jaGFyIDwtIHN0YXJ0O1xuICBlbnYuc3ltYl9lbmQgPC0gbGV4YnVmLmxleF9jdXJyX3A7XG4gIHRyeVxuICAgIGxvb3AgU3RhcnQgKE9iai5yZXByICgpKVxuICB3aXRoIGV4biAtPlxuICAgIGxldCBjdXJyX2NoYXIgPSBlbnYuY3Vycl9jaGFyIGluXG4gICAgZW52LmFzcCA8LSBpbml0X2FzcDtcbiAgICBlbnYuc3AgPC0gaW5pdF9zcDtcbiAgICBlbnYuc3RhY2tiYXNlIDwtIGluaXRfc3RhY2tiYXNlO1xuICAgIGVudi5zdGF0ZSA8LSBpbml0X3N0YXRlO1xuICAgIGVudi5jdXJyX2NoYXIgPC0gaW5pdF9jdXJyX2NoYXI7XG4gICAgZW52Lmx2YWwgPC0gaW5pdF9sdmFsO1xuICAgIGVudi5lcnJmbGFnIDwtIGluaXRfZXJyZmxhZztcbiAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgWVlleGl0IHYgLT5cbiAgICAgICAgT2JqLm1hZ2ljIHZcbiAgICB8IF8gLT5cbiAgICAgICAgY3VycmVudF9sb29rYWhlYWRfZnVuIDo9XG4gICAgICAgICAgKGZ1biB0b2sgLT5cbiAgICAgICAgICAgIGlmIE9iai5pc19ibG9jayB0b2tcbiAgICAgICAgICAgIHRoZW4gdGFibGVzLnRyYW5zbF9ibG9jay4oT2JqLnRhZyB0b2spID0gY3Vycl9jaGFyXG4gICAgICAgICAgICBlbHNlIHRhYmxlcy50cmFuc2xfY29uc3QuKE9iai5tYWdpYyB0b2spID0gY3Vycl9jaGFyKTtcbiAgICAgICAgcmFpc2UgZXhuXG5cbmxldCBwZWVrX3ZhbCBlbnYgbiA9XG4gIE9iai5tYWdpYyBlbnYudl9zdGFjay4oZW52LmFzcCAtIG4pXG5cbmxldCBzeW1ib2xfc3RhcnRfcG9zICgpID1cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPD0gMCB0aGVuIGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcClcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgc3QgPSBlbnYuc3ltYl9zdGFydF9zdGFjay4oZW52LmFzcCAtIGkgKyAxKSBpblxuICAgICAgbGV0IGVuID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwIC0gaSArIDEpIGluXG4gICAgICBpZiBzdCA8PiBlbiB0aGVuIHN0IGVsc2UgbG9vcCAoaSAtIDEpXG4gICAgZW5kXG4gIGluXG4gIGxvb3AgZW52LnJ1bGVfbGVuXG5cbmxldCBzeW1ib2xfZW5kX3BvcyAoKSA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcClcbmxldCByaHNfc3RhcnRfcG9zIG4gPSBlbnYuc3ltYl9zdGFydF9zdGFjay4oZW52LmFzcCAtIChlbnYucnVsZV9sZW4gLSBuKSlcbmxldCByaHNfZW5kX3BvcyBuID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwIC0gKGVudi5ydWxlX2xlbiAtIG4pKVxuXG5sZXQgc3ltYm9sX3N0YXJ0ICgpID0gKHN5bWJvbF9zdGFydF9wb3MgKCkpLnBvc19jbnVtXG5sZXQgc3ltYm9sX2VuZCAoKSA9IChzeW1ib2xfZW5kX3BvcyAoKSkucG9zX2NudW1cbmxldCByaHNfc3RhcnQgbiA9IChyaHNfc3RhcnRfcG9zIG4pLnBvc19jbnVtXG5sZXQgcmhzX2VuZCBuID0gKHJoc19lbmRfcG9zIG4pLnBvc19jbnVtXG5cbmxldCBpc19jdXJyZW50X2xvb2thaGVhZCB0b2sgPVxuICAoIWN1cnJlbnRfbG9va2FoZWFkX2Z1bikoT2JqLnJlcHIgdG9rKVxuXG5sZXQgcGFyc2VfZXJyb3IgKF8gOiBzdHJpbmcpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU2V0cyBvdmVyIG9yZGVyZWQgdHlwZXMgKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUgZWx0XG4gICAgdHlwZSB0XG4gICAgdmFsIGVtcHR5OiB0XG4gICAgdmFsIGlzX2VtcHR5OiB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiBlbHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGFkZDogZWx0IC0+IHQgLT4gdFxuICAgIHZhbCBzaW5nbGV0b246IGVsdCAtPiB0XG4gICAgdmFsIHJlbW92ZTogZWx0IC0+IHQgLT4gdFxuICAgIHZhbCB1bmlvbjogdCAtPiB0IC0+IHRcbiAgICB2YWwgaW50ZXI6IHQgLT4gdCAtPiB0XG4gICAgdmFsIGRpc2pvaW50OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBkaWZmOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBzdWJzZXQ6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChlbHQgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gICAgdmFsIG1hcDogKGVsdCAtPiBlbHQpIC0+IHQgLT4gdFxuICAgIHZhbCBmb2xkOiAoZWx0IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gICAgdmFsIGZvcl9hbGw6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIGV4aXN0czogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZmlsdGVyOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoZWx0IC0+IGVsdCBvcHRpb24pIC0+IHQgLT4gdFxuICAgIHZhbCBwYXJ0aXRpb246IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0ICogdFxuICAgIHZhbCBjYXJkaW5hbDogdCAtPiBpbnRcbiAgICB2YWwgZWxlbWVudHM6IHQgLT4gZWx0IGxpc3RcbiAgICB2YWwgbWluX2VsdDogdCAtPiBlbHRcbiAgICB2YWwgbWluX2VsdF9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBtYXhfZWx0OiB0IC0+IGVsdFxuICAgIHZhbCBtYXhfZWx0X29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGNob29zZTogdCAtPiBlbHRcbiAgICB2YWwgY2hvb3NlX29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIHNwbGl0OiBlbHQgLT4gdCAtPiB0ICogYm9vbCAqIHRcbiAgICB2YWwgZmluZDogZWx0IC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfb3B0OiBlbHQgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfZmlyc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfbGFzdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBvZl9saXN0OiBlbHQgbGlzdCAtPiB0XG4gICAgdmFsIHRvX3NlcV9mcm9tIDogZWx0IC0+IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIHRvX3NlcSA6IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogZWx0IFNlcS50IC0+IHQgLT4gdFxuICAgIHZhbCBvZl9zZXEgOiBlbHQgU2VxLnQgLT4gdFxuICBlbmRcblxubW9kdWxlIE1ha2UoT3JkOiBPcmRlcmVkVHlwZSkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGVsdCA9IE9yZC50XG4gICAgdHlwZSB0ID0gRW1wdHkgfCBOb2RlIG9mIHtsOnQ7IHY6ZWx0OyByOnQ7IGg6aW50fVxuXG4gICAgKCogU2V0cyBhcmUgcmVwcmVzZW50ZWQgYnkgYmFsYW5jZWQgYmluYXJ5IHRyZWVzICh0aGUgaGVpZ2h0cyBvZiB0aGVcbiAgICAgICBjaGlsZHJlbiBkaWZmZXIgYnkgYXQgbW9zdCAyICopXG5cbiAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtofSAtPiBoXG5cbiAgICAoKiBDcmVhdGVzIGEgbmV3IG5vZGUgd2l0aCBsZWZ0IHNvbiBsLCB2YWx1ZSB2IGFuZCByaWdodCBzb24gci5cbiAgICAgICBXZSBtdXN0IGhhdmUgYWxsIGVsZW1lbnRzIG9mIGwgPCB2IDwgYWxsIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgbCBhbmQgciBtdXN0IGJlIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLlxuICAgICAgIElubGluZSBleHBhbnNpb24gb2YgaGVpZ2h0IGZvciBiZXR0ZXIgc3BlZWQuICopXG5cbiAgICBsZXQgY3JlYXRlIGwgdiByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBOb2Rle2w7IHY7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgICgqIFNhbWUgYXMgY3JlYXRlLCBidXQgcGVyZm9ybXMgb25lIHN0ZXAgb2YgcmViYWxhbmNpbmcgaWYgbmVjZXNzYXJ5LlxuICAgICAgIEFzc3VtZXMgbCBhbmQgciBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMy5cbiAgICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGNyZWF0ZSBmb3IgYmV0dGVyIHNwZWVkIGluIHRoZSBtb3N0IGZyZXF1ZW50IGNhc2VcbiAgICAgICB3aGVyZSBubyByZWJhbGFuY2luZyBpcyByZXF1aXJlZC4gKilcblxuICAgIGxldCBiYWwgbCB2IHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGlmIGhsID4gaHIgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9bGw7IHY9bHY7IHI9bHJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIGxsIGx2IChjcmVhdGUgbHIgdiByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgcj1scnJ9LT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxybCkgbHJ2IChjcmVhdGUgbHJyIHYgcilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1ybDsgdj1ydjsgcj1ycn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgcmwpIHJ2IHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyByPXJscn0gLT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBybGwpIHJsdiAoY3JlYXRlIHJsciBydiBycilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTm9kZXtsOyB2OyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICAoKiBJbnNlcnRpb24gb2Ygb25lIGVsZW1lbnQgKilcblxuICAgIGxldCByZWMgYWRkIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gdCBlbHNlXG4gICAgICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gYWRkIHggbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIHQgZWxzZSBiYWwgbGwgdiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIHQgZWxzZSBiYWwgbCB2IHJyXG5cbiAgICBsZXQgc2luZ2xldG9uIHggPSBOb2Rle2w9RW1wdHk7IHY9eDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCB2IGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGVsZW1lbnRzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGVsZW1lbnQuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2VsZW1lbnQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9lbGVtZW50IHggbCkgdiByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfZWxlbWVudCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiAoYWRkX21heF9lbGVtZW50IHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2VsZW1lbnQgdiByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9lbGVtZW50IHYgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyByPWxyOyBoPWxofSwgTm9kZXtsPXJsOyB2PXJ2OyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiAoam9pbiBsciB2IHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgcmwpIHJ2IHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IHJcblxuICAgICgqIFNtYWxsZXN0IGFuZCBncmVhdGVzdCBlbGVtZW50IG9mIGEgc2V0ICopXG5cbiAgICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyB2fSAtPiB2XG4gICAgICB8IE5vZGV7bH0gLT4gbWluX2VsdCBsXG5cbiAgICBsZXQgcmVjIG1pbl9lbHRfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHZ9IC0+IFNvbWUgdlxuICAgICAgfCBOb2Rle2x9IC0+IG1pbl9lbHRfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle3Y7IHI9RW1wdHl9IC0+IHZcbiAgICAgIHwgTm9kZXtyfSAtPiBtYXhfZWx0IHJcblxuICAgIGxldCByZWMgbWF4X2VsdF9vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7djsgcj1FbXB0eX0gLT4gU29tZSB2XG4gICAgICB8IE5vZGV7cn0gLT4gbWF4X2VsdF9vcHQgclxuXG4gICAgKCogUmVtb3ZlIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBnaXZlbiBzZXQgKilcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgdiByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgQXNzdW1lIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuICopXG5cbiAgICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiBiYWwgdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gam9pbiB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgKCogU3BsaXR0aW5nLiAgc3BsaXQgeCBzIHJldHVybnMgYSB0cmlwbGUgKGwsIHByZXNlbnQsIHIpIHdoZXJlXG4gICAgICAgIC0gbCBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIG9mIHMgdGhhdCBhcmUgPCB4XG4gICAgICAgIC0gciBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIG9mIHMgdGhhdCBhcmUgPiB4XG4gICAgICAgIC0gcHJlc2VudCBpcyBmYWxzZSBpZiBzIGNvbnRhaW5zIG5vIGVsZW1lbnQgZXF1YWwgdG8geCxcbiAgICAgICAgICBvciB0cnVlIGlmIHMgY29udGFpbnMgYW4gZWxlbWVudCBlcXVhbCB0byB4LiAqKVxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIGZhbHNlLCBFbXB0eSlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgdHJ1ZSwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgbHIsIHByZXMsIHJyKVxuXG4gICAgKCogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNldCBvcGVyYXRpb25zICopXG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBjID0gMCB8fCBtZW0geCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgcmVtb3ZlIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsOyB2OyByfSBhcyB0KSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICAgIGxldCBsbCA9IHJlbW92ZSB4IGwgaW5cbiAgICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSBiYWwgbGwgdiByXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW5cbiAgICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSBiYWwgbCB2IHJyXG5cbiAgICBsZXQgcmVjIHVuaW9uIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0MikgLT4gdDJcbiAgICAgIHwgKHQxLCBFbXB0eSkgLT4gdDFcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMTsgaD1oMX0sIE5vZGV7bD1sMjsgdj12Mjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgaWYgaDIgPSAxIHRoZW4gYWRkIHYyIHMxIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbGV0IChsMiwgXywgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYxICh1bmlvbiByMSByMilcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGlmIGgxID0gMSB0aGVuIGFkZCB2MSBzMiBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIGxldCAobDEsIF8sIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MiAodW5pb24gcjEgcjIpXG4gICAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgaW50ZXIgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IEVtcHR5XG4gICAgICB8IChfLCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIHNwbGl0IHYxIHQyIHdpdGhcbiAgICAgICAgICAgIChsMiwgZmFsc2UsIHIyKSAtPlxuICAgICAgICAgICAgICBjb25jYXQgKGludGVyIGwxIGwyKSAoaW50ZXIgcjEgcjIpXG4gICAgICAgICAgfCAobDIsIHRydWUsIHIyKSAtPlxuICAgICAgICAgICAgICBqb2luIChpbnRlciBsMSBsMikgdjEgKGludGVyIHIxIHIyKVxuXG4gICAgKCogU2FtZSBhcyBzcGxpdCwgYnV0IGNvbXB1dGUgdGhlIGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzXG4gICAgICAgb25seSBpZiB0aGUgcGl2b3QgZWxlbWVudCBpcyBub3QgaW4gdGhlIHNldC4gIFRoZSByaWdodCBzdWJ0cmVlXG4gICAgICAgaXMgY29tcHV0ZWQgb24gZGVtYW5kLiAqKVxuXG4gICAgdHlwZSBzcGxpdF9iaXMgPVxuICAgICAgfCBGb3VuZFxuICAgICAgfCBOb3RGb3VuZCBvZiB0ICogKHVuaXQgLT4gdClcblxuICAgIGxldCByZWMgc3BsaXRfYmlzIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vdEZvdW5kIChFbXB0eSwgKGZ1biAoKSAtPiBFbXB0eSkpXG4gICAgICB8IE5vZGV7bDsgdjsgcjsgX30gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gRm91bmRcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIHNwbGl0X2JpcyB4IGwgd2l0aFxuICAgICAgICAgICAgfCBGb3VuZCAtPiBGb3VuZFxuICAgICAgICAgICAgfCBOb3RGb3VuZCAobGwsIHJsKSAtPiBOb3RGb3VuZCAobGwsIChmdW4gKCkgLT4gam9pbiAocmwgKCkpIHYgcikpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggc3BsaXRfYmlzIHggciB3aXRoXG4gICAgICAgICAgICB8IEZvdW5kIC0+IEZvdW5kXG4gICAgICAgICAgICB8IE5vdEZvdW5kIChsciwgcnIpIC0+IE5vdEZvdW5kIChqb2luIGwgdiBsciwgcnIpXG5cbiAgICBsZXQgcmVjIGRpc2pvaW50IHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSB8IChfLCBFbXB0eSkgLT4gdHJ1ZVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgaWYgczEgPT0gczIgdGhlbiBmYWxzZVxuICAgICAgICAgIGVsc2UgbWF0Y2ggc3BsaXRfYmlzIHYxIHQyIHdpdGhcbiAgICAgICAgICAgICAgTm90Rm91bmQobDIsIHIyKSAtPiBkaXNqb2ludCBsMSBsMiAmJiBkaXNqb2ludCByMSAocjIgKCkpXG4gICAgICAgICAgICB8IEZvdW5kIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGRpZmYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IEVtcHR5XG4gICAgICB8ICh0MSwgRW1wdHkpIC0+IHQxXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBtYXRjaCBzcGxpdCB2MSB0MiB3aXRoXG4gICAgICAgICAgICAobDIsIGZhbHNlLCByMikgLT5cbiAgICAgICAgICAgICAgam9pbiAoZGlmZiBsMSBsMikgdjEgKGRpZmYgcjEgcjIpXG4gICAgICAgICAgfCAobDIsIHRydWUsIHIyKSAtPlxuICAgICAgICAgICAgICBjb25jYXQgKGRpZmYgbDEgbDIpIChkaWZmIHIxIHIyKVxuXG4gICAgdHlwZSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2YgZWx0ICogdCAqIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCByLCBlKSlcblxuICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgfCAoTW9yZSh2MSwgcjEsIGUxKSwgTW9yZSh2MiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgZWxzZSBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuXG4gICAgbGV0IGNvbXBhcmUgczEgczIgPVxuICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBzMSBFbmQpIChjb25zX2VudW0gczIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIHMxIHMyID1cbiAgICAgIGNvbXBhcmUgczEgczIgPSAwXG5cbiAgICBsZXQgcmVjIHN1YnNldCBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIEVtcHR5LCBfIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBfLCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IE5vZGUge2w9bDE7IHY9djE7IHI9cjF9LCAoTm9kZSB7bD1sMjsgdj12Mjsgcj1yMn0gYXMgdDIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIHN1YnNldCBsMSBsMiAmJiBzdWJzZXQgcjEgcjJcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIHN1YnNldCAoTm9kZSB7bD1sMTsgdj12MTsgcj1FbXB0eTsgaD0wfSkgbDIgJiYgc3Vic2V0IHIxIHQyXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc3Vic2V0IChOb2RlIHtsPUVtcHR5OyB2PXYxOyByPXIxOyBoPTB9KSByMiAmJiBzdWJzZXQgbDEgdDJcblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBpdGVyIGYgbDsgZiB2OyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBmb2xkIGYgcyBhY2N1ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gZm9sZCBmIHIgKGYgdiAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBwIHYgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHAgdiB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsOyB2OyByfSkgYXMgdCAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdiA9IHAgdiBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdiB0aGVuXG4gICAgICAgICAgICBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIHQgZWxzZSBqb2luIGwnIHYgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHYgPSBwIHYgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiByZilcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGV7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGVsZW1lbnRzX2F1eCAodiA6OiBlbGVtZW50c19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgZWxlbWVudHMgcyA9XG4gICAgICBlbGVtZW50c19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9lbHRcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2VsdF9vcHRcblxuICAgIGxldCByZWMgZmluZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gdlxuICAgICAgICAgIGVsc2UgZmluZCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdjAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3RfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdjAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX29wdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFNvbWUgdlxuICAgICAgICAgIGVsc2UgZmluZF9vcHQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCB0cnlfam9pbiBsIHYgciA9XG4gICAgICAoKiBbam9pbiBsIHYgcl0gY2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gKGVsZW1lbnRzIG9mIGwgPCB2IDxcbiAgICAgICAgIGVsZW1lbnRzIG9mIHIpOyB1c2UgW3RyeV9qb2luIGwgdiByXSB3aGVuIHRoaXMgcHJvcGVydHkgbWF5XG4gICAgICAgICBub3QgaG9sZCwgYnV0IHlvdSBob3BlIGl0IGRvZXMgaG9sZCBpbiB0aGUgY29tbW9uIGNhc2UgKilcbiAgICAgIGlmIChsID0gRW1wdHkgfHwgT3JkLmNvbXBhcmUgKG1heF9lbHQgbCkgdiA8IDApXG4gICAgICAmJiAociA9IEVtcHR5IHx8IE9yZC5jb21wYXJlIHYgKG1pbl9lbHQgcikgPCAwKVxuICAgICAgdGhlbiBqb2luIGwgdiByXG4gICAgICBlbHNlIHVuaW9uIGwgKGFkZCB2IHIpXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAoKiBlbmZvcmNlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciAqKVxuICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgbGV0IHYnID0gZiB2IGluXG4gICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICBpZiBsID09IGwnICYmIHYgPT0gdicgJiYgciA9PSByJyB0aGVuIHRcbiAgICAgICAgIGVsc2UgdHJ5X2pvaW4gbCcgdicgcidcblxuICAgIGxldCB0cnlfY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gdHJ5X2pvaW4gdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAoKiBlbmZvcmNlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciAqKVxuICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgIGxldCB2JyA9IGYgdiBpblxuICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgIGJlZ2luIG1hdGNoIHYnIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHYnIC0+XG4gICAgICAgICAgICAgIGlmIGwgPT0gbCcgJiYgdiA9PSB2JyAmJiByID09IHInIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIHRyeV9qb2luIGwnIHYnIHInXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICB0cnlfY29uY2F0IGwnIHInXG4gICAgICAgICBlbmRcblxuICAgIGxldCBvZl9zb3J0ZWRfbGlzdCBsID1cbiAgICAgIGxldCByZWMgc3ViIG4gbCA9XG4gICAgICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgICAgICB8IDAsIGwgLT4gRW1wdHksIGxcbiAgICAgICAgfCAxLCB4MCA6OiBsIC0+IE5vZGUge2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX0sIGxcbiAgICAgICAgfCAyLCB4MCA6OiB4MSA6OiBsIC0+XG4gICAgICAgICAgICBOb2Rle2w9Tm9kZXtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9OyB2PXgxOyByPUVtcHR5OyBoPTJ9LCBsXG4gICAgICAgIHwgMywgeDAgOjogeDEgOjogeDIgOjogbCAtPlxuICAgICAgICAgICAgTm9kZXtsPU5vZGV7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfTsgdj14MTtcbiAgICAgICAgICAgICAgICAgcj1Ob2Rle2w9RW1wdHk7IHY9eDI7IHI9RW1wdHk7IGg9MX07IGg9Mn0sIGxcbiAgICAgICAgfCBuLCBsIC0+XG4gICAgICAgICAgbGV0IG5sID0gbiAvIDIgaW5cbiAgICAgICAgICBsZXQgbGVmdCwgbCA9IHN1YiBubCBsIGluXG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IG1pZCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgcmlnaHQsIGwgPSBzdWIgKG4gLSBubCAtIDEpIGwgaW5cbiAgICAgICAgICAgIGNyZWF0ZSBsZWZ0IG1pZCByaWdodCwgbFxuICAgICAgaW5cbiAgICAgIGZzdCAoc3ViIChMaXN0Lmxlbmd0aCBsKSBsKVxuXG4gICAgbGV0IG9mX2xpc3QgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZW1wdHlcbiAgICAgIHwgW3gwXSAtPiBzaW5nbGV0b24geDBcbiAgICAgIHwgW3gwOyB4MV0gLT4gYWRkIHgxIChzaW5nbGV0b24geDApXG4gICAgICB8IFt4MDsgeDE7IHgyXSAtPiBhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSlcbiAgICAgIHwgW3gwOyB4MTsgeDI7IHgzXSAtPiBhZGQgeDMgKGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKSlcbiAgICAgIHwgW3gwOyB4MTsgeDI7IHgzOyB4NF0gLT4gYWRkIHg0IChhZGQgeDMgKGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKSkpXG4gICAgICB8IF8gLT4gb2Zfc29ydGVkX2xpc3QgKExpc3Quc29ydF91bmlxIE9yZC5jb21wYXJlIGwpXG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIHMgeCAtPiBhZGQgeCBzKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlICh4LCB0LCByZXN0KSAtPiBTZXEuQ29ucyAoeCwgc2VxX29mX2VudW1fIChjb25zX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19zZXEgYyA9IHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHJlYyBzbm9jX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gc25vY19lbnVtIHIgKE1vcmUodiwgbCwgZSkpXG5cbiAgICBsZXQgcmVjIHJldl9zZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlICh4LCB0LCByZXN0KSAtPiBTZXEuQ29ucyAoeCwgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fcmV2X3NlcSBjID0gcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBzID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBzIGMgPSBtYXRjaCBzIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgcjsgdjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBzIEVuZClcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISsnYSB0XG4gICAgdmFsIGVtcHR5OiAnYSB0XG4gICAgdmFsIGlzX2VtcHR5OiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiAga2V5IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBhZGQ6IGtleSAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgdXBkYXRlOiBrZXkgLT4gKCdhIG9wdGlvbiAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBzaW5nbGV0b246IGtleSAtPiAnYSAtPiAnYSB0XG4gICAgdmFsIHJlbW92ZToga2V5IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBtZXJnZTpcbiAgICAgICAgICAoa2V5IC0+ICdhIG9wdGlvbiAtPiAnYiBvcHRpb24gLT4gJ2Mgb3B0aW9uKSAtPiAnYSB0IC0+ICdiIHQgLT4gJ2MgdFxuICAgIHZhbCB1bmlvbjogKGtleSAtPiAnYSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGNvbXBhcmU6ICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgZXF1YWw6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGZvcl9hbGw6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGV4aXN0czogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgZmlsdGVyOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoa2V5IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgKiAnYSB0XG4gICAgdmFsIGNhcmRpbmFsOiAnYSB0IC0+IGludFxuICAgIHZhbCBiaW5kaW5nczogJ2EgdCAtPiAoa2V5ICogJ2EpIGxpc3RcbiAgICB2YWwgbWluX2JpbmRpbmc6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBtaW5fYmluZGluZ19vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgbWF4X2JpbmRpbmc6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBtYXhfYmluZGluZ19vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgY2hvb3NlOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgY2hvb3NlX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBzcGxpdDoga2V5IC0+ICdhIHQgLT4gJ2EgdCAqICdhIG9wdGlvbiAqICdhIHRcbiAgICB2YWwgZmluZDoga2V5IC0+ICdhIHQgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6IGtleSAtPiAnYSB0IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgbWFwOiAoJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBtYXBpOiAoa2V5IC0+ICdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBrZXkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID0gc3RydWN0XG5cbiAgICB0eXBlIGtleSA9IE9yZC50XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIG9mIHtsOidhIHQ7IHY6a2V5OyBkOidhOyByOidhIHQ7IGg6aW50fVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgbGV0IGNyZWF0ZSBsIHggZCByID1cbiAgICAgIGxldCBobCA9IGhlaWdodCBsIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IHNpbmdsZXRvbiB4IGQgPSBOb2Rle2w9RW1wdHk7IHY9eDsgZDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgbGV0IGJhbCBsIHggZCByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiBsZCAoY3JlYXRlIGxyIHggZCByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgZD1scmQ7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBscmwpIGxydiBscmQgKGNyZWF0ZSBscnIgeCBkIHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmwpIHJ2IHJkIHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyBkPXJsZDsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybGwpIHJsdiBybGQgKGNyZWF0ZSBybHIgcnYgcmQgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgYWRkIHggZGF0YSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGRhdGEgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCBkYXRhIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGRcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIGRcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfSAtPiBtaW5fYmluZGluZyBsXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0tPiBtaW5fYmluZGluZ19vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmcgclxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nX29wdCByXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiYWwgKHJlbW92ZV9taW5fYmluZGluZyBsKSB2IGQgclxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBiYWwgdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCAoTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpbiBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyB1cGRhdGUgeCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmIE5vbmUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFbXB0eVxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgICAgICBlbmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2UgbCByXG4gICAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVuZCBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHVwZGF0ZSB4IGYgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSB1cGRhdGUgeCBmIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaXRlciBmIGw7IGYgdiBkOyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgbWFwaSBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcGkgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXBpIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgZm9sZCBmIG0gYWNjdSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGZvbGQgZiByIChmIHYgZCAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgayBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBrZXlzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGtleS5cblxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2JpbmRpbmcgayB4IGwpIHYgZCByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgZCAoYWRkX21heF9iaW5kaW5nIGsgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgZCByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9iaW5kaW5nIHYgZCByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9iaW5kaW5nIHYgZCBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IGQ9bGQ7IHI9bHI7IGg9bGh9LFxuICAgICAgICAgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiBsZCAoam9pbiBsciB2IGQgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBkIHJsKSBydiByZCByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiBkIHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBqb2luIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IGNvbmNhdF9vcl9qb2luIHQxIHYgZCB0MiA9XG4gICAgICBtYXRjaCBkIHdpdGhcbiAgICAgIHwgU29tZSBkIC0+IGpvaW4gdDEgdiBkIHQyXG4gICAgICB8IE5vbmUgLT4gY29uY2F0IHQxIHQyXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgTm9uZSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCBTb21lIGQsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgZCByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgZCBsciwgcHJlcywgcnIpXG5cbiAgICBsZXQgcmVjIG1lcmdlIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sIF8pIHdoZW4gaDEgPj0gaGVpZ2h0IHMyIC0+XG4gICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYxIChmIHYxIChTb21lIGQxKSBkMikgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IChfLCBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyfSkgLT5cbiAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjIgKGYgdjIgZDEgKFNvbWUgZDIpKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGFzc2VydCBmYWxzZVxuXG4gICAgbGV0IHJlYyB1bmlvbiBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgIHwgKEVtcHR5LCBzKSB8IChzLCBFbXB0eSkgLT4gc1xuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sXG4gICAgICAgICBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjEgZDEgclxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGNvbmNhdF9vcl9qb2luIGwgdjEgKGYgdjEgZDEgZDIpIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQxIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjIgZDIgclxuICAgICAgICAgICAgfCBTb21lIGQxIC0+IGNvbmNhdF9vcl9qb2luIGwgdjIgKGYgdjIgZDEgZDIpIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSBhcyBtIC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2ZCB0aGVuIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gbSBlbHNlIGpvaW4gbCcgdiBkIHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtmXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGZ2ZCA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmdmQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGQnIC0+IGpvaW4gbCcgdiBkJyByJ1xuICAgICAgICAgICAgfCBOb25lIC0+IGNvbmNhdCBsJyByJ1xuICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2ZFxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBkIHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgZCByZilcblxuICAgIHR5cGUgJ2EgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGtleSAqICdhICogJ2EgdCAqICdhIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBtIGUgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgZCwgciwgZSkpXG5cbiAgICBsZXQgY29tcGFyZSBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCBkMSBkMiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gY29tcGFyZV9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGVxdWFsX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gdHJ1ZVxuICAgICAgICB8IChFbmQsIF8pICAtPiBmYWxzZVxuICAgICAgICB8IChfLCBFbmQpIC0+IGZhbHNlXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIE9yZC5jb21wYXJlIHYxIHYyID0gMCAmJiBjbXAgZDEgZDIgJiZcbiAgICAgICAgICAgIGVxdWFsX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gZXF1YWxfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBiaW5kaW5nc19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmluZGluZ3NfYXV4ICgodiwgZCkgOjogYmluZGluZ3NfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGJpbmRpbmdzIHMgPVxuICAgICAgYmluZGluZ3NfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fYmluZGluZ1xuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fYmluZGluZ19vcHRcblxuICAgIGxldCBhZGRfc2VxIGkgbSA9XG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoayx2KSAtPiBhZGQgayB2IG0pIG0gaVxuXG4gICAgbGV0IG9mX3NlcSBpID0gYWRkX3NlcSBpIGVtcHR5XG5cbiAgICBsZXQgcmVjIHNlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+IFNlcS5Db25zICgoayx2KSwgc2VxX29mX2VudW1fIChjb25zX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19zZXEgbSA9XG4gICAgICBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSBtIEVuZClcblxuICAgIGxldCByZWMgc25vY19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IGQ7IHJ9IC0+IHNub2NfZW51bSByIChNb3JlKHYsIGQsIGwsIGUpKVxuXG4gICAgbGV0IHJlYyByZXZfc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoayx2LHQscmVzdCkgLT5cbiAgICAgICAgICBTZXEuQ29ucyAoKGssdiksIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3Jldl9zZXEgYyA9XG4gICAgICByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgdG9fc2VxX2Zyb20gbG93IG0gPVxuICAgICAgbGV0IHJlYyBhdXggbG93IG0gYyA9IG1hdGNoIG0gd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGNcbiAgICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBffSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggT3JkLmNvbXBhcmUgdiBsb3cgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT4gTW9yZSAodiwgZCwgciwgYylcbiAgICAgICAgICAgICAgfCBuIHdoZW4gbjwwIC0+IGF1eCBsb3cgciBjXG4gICAgICAgICAgICAgIHwgXyAtPiBhdXggbG93IGwgKE1vcmUgKHYsIGQsIHIsIGMpKVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2VxX29mX2VudW1fIChhdXggbG93IG0gRW5kKVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBjIDogJ2EgbGlzdDsgbXV0YWJsZSBsZW4gOiBpbnQ7IH1cblxuZXhjZXB0aW9uIEVtcHR5XG5cbmxldCBjcmVhdGUgKCkgPSB7IGMgPSBbXTsgbGVuID0gMDsgfVxuXG5sZXQgY2xlYXIgcyA9IHMuYyA8LSBbXTsgcy5sZW4gPC0gMFxuXG5sZXQgY29weSBzID0geyBjID0gcy5jOyBsZW4gPSBzLmxlbjsgfVxuXG5sZXQgcHVzaCB4IHMgPSBzLmMgPC0geCA6OiBzLmM7IHMubGVuIDwtIHMubGVuICsgMVxuXG5sZXQgcG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgaGRcbiAgfCBbXSAgICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHBvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxOyBTb21lIGhkXG4gIHwgW10gICAgIC0+IE5vbmVcblxubGV0IHRvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBoZFxuICB8IFtdICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCB0b3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IFNvbWUgaGRcbiAgfCBbXSAgICAtPiBOb25lXG5cbmxldCBpc19lbXB0eSBzID0gKHMuYyA9IFtdKVxuXG5sZXQgbGVuZ3RoIHMgPSBzLmxlblxuXG5sZXQgaXRlciBmIHMgPSBMaXN0Lml0ZXIgZiBzLmNcblxubGV0IGZvbGQgZiBhY2MgcyA9IExpc3QuZm9sZF9sZWZ0IGYgYWNjIHMuY1xuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBMaXN0LnRvX3NlcSBzLmNcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBzID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBzIGc7XG4gIHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgRnJhbmNvaXMgUG90dGllciwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgSmVyZW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXhjZXB0aW9uIEVtcHR5XG5cbnR5cGUgJ2EgY2VsbCA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiB7IGNvbnRlbnQ6ICdhOyBtdXRhYmxlIG5leHQ6ICdhIGNlbGwgfVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgbGVuZ3RoOiBpbnQ7XG4gIG11dGFibGUgZmlyc3Q6ICdhIGNlbGw7XG4gIG11dGFibGUgbGFzdDogJ2EgY2VsbFxufVxuXG5sZXQgY3JlYXRlICgpID0ge1xuICBsZW5ndGggPSAwO1xuICBmaXJzdCA9IE5pbDtcbiAgbGFzdCA9IE5pbFxufVxuXG5sZXQgY2xlYXIgcSA9XG4gIHEubGVuZ3RoIDwtIDA7XG4gIHEuZmlyc3QgPC0gTmlsO1xuICBxLmxhc3QgPC0gTmlsXG5cbmxldCBhZGQgeCBxID1cbiAgbGV0IGNlbGwgPSBDb25zIHtcbiAgICBjb250ZW50ID0geDtcbiAgICBuZXh0ID0gTmlsXG4gIH0gaW5cbiAgbWF0Y2ggcS5sYXN0IHdpdGhcbiAgfCBOaWwgLT5cbiAgICBxLmxlbmd0aCA8LSAxO1xuICAgIHEuZmlyc3QgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuICB8IENvbnMgbGFzdCAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoICsgMTtcbiAgICBsYXN0Lm5leHQgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuXG5sZXQgcHVzaCA9XG4gIGFkZFxuXG5sZXQgcGVlayBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBjb250ZW50XG5cbmxldCBwZWVrX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IFNvbWUgY29udGVudFxuXG5sZXQgdG9wID1cbiAgcGVla1xuXG5sZXQgdGFrZSBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIGNvbnRlbnRcblxubGV0IHRha2Vfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIFNvbWUgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIFNvbWUgY29udGVudFxuXG5sZXQgcG9wID1cbiAgdGFrZVxuXG5sZXQgY29weSA9XG4gIGxldCByZWMgY29weSBxX3JlcyBwcmV2IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IHFfcmVzLmxhc3QgPC0gcHJldjsgcV9yZXNcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCByZXMgPSBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IGluXG4gICAgICBiZWdpbiBtYXRjaCBwcmV2IHdpdGhcbiAgICAgIHwgTmlsIC0+IHFfcmVzLmZpcnN0IDwtIHJlc1xuICAgICAgfCBDb25zIHAgLT4gcC5uZXh0IDwtIHJlc1xuICAgICAgZW5kO1xuICAgICAgY29weSBxX3JlcyByZXMgbmV4dFxuICBpblxuICBmdW4gcSAtPiBjb3B5IHsgbGVuZ3RoID0gcS5sZW5ndGg7IGZpcnN0ID0gTmlsOyBsYXN0ID0gTmlsIH0gTmlsIHEuZmlyc3RcblxubGV0IGlzX2VtcHR5IHEgPVxuICBxLmxlbmd0aCA9IDBcblxubGV0IGxlbmd0aCBxID1cbiAgcS5sZW5ndGhcblxubGV0IGl0ZXIgPVxuICBsZXQgcmVjIGl0ZXIgZiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgZiBjb250ZW50O1xuICAgICAgaXRlciBmIG5leHRcbiAgaW5cbiAgZnVuIGYgcSAtPiBpdGVyIGYgcS5maXJzdFxuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgZm9sZCBmIGFjY3UgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gYWNjdVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgY29udGVudCBpblxuICAgICAgZm9sZCBmIGFjY3UgbmV4dFxuICBpblxuICBmdW4gZiBhY2N1IHEgLT4gZm9sZCBmIGFjY3UgcS5maXJzdFxuXG5sZXQgdHJhbnNmZXIgcTEgcTIgPVxuICBpZiBxMS5sZW5ndGggPiAwIHRoZW5cbiAgICBtYXRjaCBxMi5sYXN0IHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHExLmxlbmd0aDtcbiAgICAgIHEyLmZpcnN0IDwtIHExLmZpcnN0O1xuICAgICAgcTIubGFzdCA8LSBxMS5sYXN0O1xuICAgICAgY2xlYXIgcTFcbiAgICB8IENvbnMgbGFzdCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHEyLmxlbmd0aCArIHExLmxlbmd0aDtcbiAgICAgIGxhc3QubmV4dCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcSA9XG4gIGxldCByZWMgYXV4IGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICB8IE5pbCAtPiBTZXEuTmlsXG4gICAgfCBDb25zIHsgY29udGVudD14OyBuZXh0OyB9IC0+IFNlcS5Db25zICh4LCBhdXggbmV4dClcbiAgaW5cbiAgYXV4IHEuZmlyc3RcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBxID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBxIGc7XG4gIHFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gJ2EgY2VsbCBvcHRpb25cbmFuZCAnYSBjZWxsID0geyBtdXRhYmxlIGNvdW50IDogaW50OyBtdXRhYmxlIGRhdGEgOiAnYSBkYXRhIH1cbmFuZCAnYSBkYXRhID1cbiAgICBTZW1wdHlcbiAgfCBTY29ucyBvZiAnYSAqICdhIGRhdGFcbiAgfCBTYXBwIG9mICdhIGRhdGEgKiAnYSBkYXRhXG4gIHwgU2xhenkgb2YgJ2EgZGF0YSBMYXp5LnRcbiAgfCBTZ2VuIG9mICdhIGdlblxuICB8IFNidWZmaW8gOiBidWZmaW8gLT4gY2hhciBkYXRhXG5hbmQgJ2EgZ2VuID0geyBtdXRhYmxlIGN1cnIgOiAnYSBvcHRpb24gb3B0aW9uOyBmdW5jIDogaW50IC0+ICdhIG9wdGlvbiB9XG5hbmQgYnVmZmlvID1cbiAgeyBpYyA6IGluX2NoYW5uZWw7IGJ1ZmYgOiBieXRlczsgbXV0YWJsZSBsZW4gOiBpbnQ7IG11dGFibGUgaW5kIDogaW50IH1cblxuZXhjZXB0aW9uIEZhaWx1cmVcbmV4Y2VwdGlvbiBFcnJvciBvZiBzdHJpbmdcblxubGV0IGNvdW50ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIHsgY291bnQgfSAtPiBjb3VudFxubGV0IGRhdGEgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gU2VtcHR5XG4gIHwgU29tZSB7IGRhdGEgfSAtPiBkYXRhXG5cbmxldCBmaWxsX2J1ZmYgYiA9XG4gIGIubGVuIDwtIGlucHV0IGIuaWMgYi5idWZmIDAgKEJ5dGVzLmxlbmd0aCBiLmJ1ZmYpOyBiLmluZCA8LSAwXG5cblxubGV0IHJlYyBnZXRfZGF0YSA6IHR5cGUgdi4gaW50IC0+IHYgZGF0YSAtPiB2IGRhdGEgPSBmdW4gY291bnQgZCAtPiBtYXRjaCBkIHdpdGhcbiAoKiBSZXR1cm5zIGVpdGhlciBTZW1wdHkgb3IgU2NvbnMoYSwgXykgZXZlbiB3aGVuIGQgaXMgYSBnZW5lcmF0b3JcbiAgICBvciBhIGJ1ZmZlci4gSW4gdGhvc2UgY2FzZXMsIHRoZSBpdGVtIGEgaXMgc2VlbiBhcyBleHRyYWN0ZWQgZnJvbVxuIHRoZSBnZW5lcmF0b3IvYnVmZmVyLlxuIFRoZSBjb3VudCBwYXJhbWV0ZXIgaXMgdXNlZCBmb3IgY2FsbGluZyBgU2dlbi1mdW5jdGlvbnMnLiAgKilcbiAgIFNlbXB0eSB8IFNjb25zIChfLCBfKSAtPiBkXG4gfCBTYXBwIChkMSwgZDIpIC0+XG4gICAgIGJlZ2luIG1hdGNoIGdldF9kYXRhIGNvdW50IGQxIHdpdGhcbiAgICAgICBTY29ucyAoYSwgZDExKSAtPiBTY29ucyAoYSwgU2FwcCAoZDExLCBkMikpXG4gICAgIHwgU2VtcHR5IC0+IGdldF9kYXRhIGNvdW50IGQyXG4gICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgZW5kXG4gfCBTZ2VuIHtjdXJyID0gU29tZSBOb25lfSAtPiBTZW1wdHlcbiB8IFNnZW4gKHtjdXJyID0gU29tZShTb21lIGEpfSBhcyBnKSAtPlxuICAgICBnLmN1cnIgPC0gTm9uZTsgU2NvbnMoYSwgZClcbiB8IFNnZW4gZyAtPlxuICAgICBiZWdpbiBtYXRjaCBnLmZ1bmMgY291bnQgd2l0aFxuICAgICAgIE5vbmUgLT4gZy5jdXJyIDwtIFNvbWUoTm9uZSk7IFNlbXB0eVxuICAgICB8IFNvbWUgYSAtPiBTY29ucyhhLCBkKVxuICAgICAgICAgKCogV2FybmluZzogYW55b25lIHVzaW5nIGcgdGhpbmtzIHRoYXQgYW4gaXRlbSBoYXMgYmVlbiByZWFkICopXG4gICAgIGVuZFxuIHwgU2J1ZmZpbyBiIC0+XG4gICAgIGlmIGIuaW5kID49IGIubGVuIHRoZW4gZmlsbF9idWZmIGI7XG4gICAgIGlmIGIubGVuID09IDAgdGhlbiBTZW1wdHkgZWxzZVxuICAgICAgIGxldCByID0gQnl0ZXMudW5zYWZlX2dldCBiLmJ1ZmYgYi5pbmQgaW5cbiAgICAgICAoKiBXYXJuaW5nOiBhbnlvbmUgdXNpbmcgZyB0aGlua3MgdGhhdCBhbiBpdGVtIGhhcyBiZWVuIHJlYWQgKilcbiAgICAgICBiLmluZCA8LSBzdWNjIGIuaW5kOyBTY29ucyhyLCBkKVxuIHwgU2xhenkgZiAtPiBnZXRfZGF0YSBjb3VudCAoTGF6eS5mb3JjZSBmKVxuXG5cbmxldCByZWMgcGVla19kYXRhIDogdHlwZSB2LiB2IGNlbGwgLT4gdiBvcHRpb24gPSBmdW4gcyAtPlxuICgqIGNvbnN1bHQgdGhlIGZpcnN0IGl0ZW0gb2YgcyAqKVxuIG1hdGNoIHMuZGF0YSB3aXRoXG4gICBTZW1wdHkgLT4gTm9uZVxuIHwgU2NvbnMgKGEsIF8pIC0+IFNvbWUgYVxuIHwgU2FwcCAoXywgXykgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZ2V0X2RhdGEgcy5jb3VudCBzLmRhdGEgd2l0aFxuICAgICAgIFNjb25zKGEsIF8pIGFzIGQgLT4gcy5kYXRhIDwtIGQ7IFNvbWUgYVxuICAgICB8IFNlbXB0eSAtPiBOb25lXG4gICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgZW5kXG4gfCBTbGF6eSBmIC0+IHMuZGF0YSA8LSAoTGF6eS5mb3JjZSBmKTsgcGVla19kYXRhIHNcbiB8IFNnZW4ge2N1cnIgPSBTb21lIGF9IC0+IGFcbiB8IFNnZW4gZyAtPiBsZXQgeCA9IGcuZnVuYyBzLmNvdW50IGluIGcuY3VyciA8LSBTb21lIHg7IHhcbiB8IFNidWZmaW8gYiAtPlxuICAgICBpZiBiLmluZCA+PSBiLmxlbiB0aGVuIGZpbGxfYnVmZiBiO1xuICAgICBpZiBiLmxlbiA9PSAwIHRoZW4gYmVnaW4gcy5kYXRhIDwtIFNlbXB0eTsgTm9uZSBlbmRcbiAgICAgZWxzZSBTb21lIChCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZiBiLmluZClcblxuXG5sZXQgcGVlayA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBzIC0+IHBlZWtfZGF0YSBzXG5cblxubGV0IHJlYyBqdW5rX2RhdGEgOiB0eXBlIHYuIHYgY2VsbCAtPiB1bml0ID0gZnVuIHMgLT5cbiAgbWF0Y2ggcy5kYXRhIHdpdGhcbiAgICBTY29ucyAoXywgZCkgLT4gcy5jb3VudCA8LSAoc3VjYyBzLmNvdW50KTsgcy5kYXRhIDwtIGRcbiAgfCBTZ2VuICh7Y3VyciA9IFNvbWUgX30gYXMgZykgLT4gcy5jb3VudCA8LSAoc3VjYyBzLmNvdW50KTsgZy5jdXJyIDwtIE5vbmVcbiAgfCBTYnVmZmlvIGIgLT5cbiAgICAgIGlmIGIuaW5kID49IGIubGVuIHRoZW4gZmlsbF9idWZmIGI7XG4gICAgICBpZiBiLmxlbiA9PSAwIHRoZW4gcy5kYXRhIDwtIFNlbXB0eVxuICAgICAgZWxzZSAocy5jb3VudCA8LSAoc3VjYyBzLmNvdW50KTsgYi5pbmQgPC0gc3VjYyBiLmluZClcbiAgfCBfIC0+XG4gICAgICBtYXRjaCBwZWVrX2RhdGEgcyB3aXRoXG4gICAgICAgIE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIC0+IGp1bmtfZGF0YSBzXG5cblxubGV0IGp1bmsgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGRhdGEgLT4ganVua19kYXRhIGRhdGFcblxubGV0IHJlYyBuZ2V0X2RhdGEgbiBzID1cbiAgaWYgbiA8PSAwIHRoZW4gW10sIHMuZGF0YSwgMFxuICBlbHNlXG4gICAgbWF0Y2ggcGVla19kYXRhIHMgd2l0aFxuICAgICAgU29tZSBhIC0+XG4gICAgICAgIGp1bmtfZGF0YSBzO1xuICAgICAgICBsZXQgKGFsLCBkLCBrKSA9IG5nZXRfZGF0YSAocHJlZCBuKSBzIGluIGEgOjogYWwsIFNjb25zIChhLCBkKSwgc3VjYyBrXG4gICAgfCBOb25lIC0+IFtdLCBzLmRhdGEsIDBcblxuXG5sZXQgbnBlZWtfZGF0YSBuIHMgPVxuICBsZXQgKGFsLCBkLCBsZW4pID0gbmdldF9kYXRhIG4gcyBpblxuICBzLmNvdW50IDwtIChzLmNvdW50IC0gbGVuKTtcbiAgcy5kYXRhIDwtIGQ7XG4gIGFsXG5cblxubGV0IG5wZWVrIG4gPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gW11cbiAgfCBTb21lIGQgLT4gbnBlZWtfZGF0YSBuIGRcblxubGV0IG5leHQgcyA9XG4gIG1hdGNoIHBlZWsgcyB3aXRoXG4gICAgU29tZSBhIC0+IGp1bmsgczsgYVxuICB8IE5vbmUgLT4gcmFpc2UgRmFpbHVyZVxuXG5cbmxldCBlbXB0eSBzID1cbiAgbWF0Y2ggcGVlayBzIHdpdGhcbiAgICBTb21lIF8gLT4gcmFpc2UgRmFpbHVyZVxuICB8IE5vbmUgLT4gKClcblxuXG5sZXQgaXRlciBmIHN0cm0gPVxuICBsZXQgcmVjIGRvX3JlYyAoKSA9XG4gICAgbWF0Y2ggcGVlayBzdHJtIHdpdGhcbiAgICAgIFNvbWUgYSAtPiBqdW5rIHN0cm07IGlnbm9yZShmIGEpOyBkb19yZWMgKClcbiAgICB8IE5vbmUgLT4gKClcbiAgaW5cbiAgZG9fcmVjICgpXG5cblxuKCogU3RyZWFtIGJ1aWxkaW5nIGZ1bmN0aW9ucyAqKVxuXG5sZXQgZnJvbSBmID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2dlbiB7Y3VyciA9IE5vbmU7IGZ1bmMgPSBmfX1cblxubGV0IG9mX2xpc3QgbCA9XG4gIFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IExpc3QuZm9sZF9yaWdodCAoZnVuIHggbCAtPiBTY29ucyAoeCwgbCkpIGwgU2VtcHR5fVxuXG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIGxldCBjb3VudCA9IHJlZiAwIGluXG4gIGZyb20gKGZ1biBfIC0+XG4gICAgKCogV2UgY2Fubm90IHVzZSB0aGUgaW5kZXggcGFzc2VkIGJ5IHRoZSBbZnJvbV0gZnVuY3Rpb24gZGlyZWN0bHlcbiAgICAgICBiZWNhdXNlIGl0IHJldHVybnMgdGhlIGN1cnJlbnQgc3RyZWFtIGNvdW50LCB3aXRoIGFic29sdXRlbHkgbm9cbiAgICAgICBndWFyYW50ZWUgdGhhdCBpdCB3aWxsIHN0YXJ0IGZyb20gMC4gRm9yIGV4YW1wbGUsIGluIHRoZSBjYXNlXG4gICAgICAgb2YgW1N0cmVhbS5pY29ucyAnYycgKFN0cmVhbS5mcm9tX3N0cmluZyBcImFiXCIpXSwgdGhlIGZpcnN0XG4gICAgICAgYWNjZXNzIHRvIHRoZSBzdHJpbmcgd2lsbCBiZSBtYWRlIHdpdGggY291bnQgWzFdIGFscmVhZHkuXG4gICAgKilcbiAgICBsZXQgYyA9ICFjb3VudCBpblxuICAgIGlmIGMgPCBTdHJpbmcubGVuZ3RoIHNcbiAgICB0aGVuIChpbmNyIGNvdW50OyBTb21lIHMuW2NdKVxuICAgIGVsc2UgTm9uZSlcblxuXG5sZXQgb2ZfYnl0ZXMgcyA9XG4gIGxldCBjb3VudCA9IHJlZiAwIGluXG4gIGZyb20gKGZ1biBfIC0+XG4gICAgbGV0IGMgPSAhY291bnQgaW5cbiAgICBpZiBjIDwgQnl0ZXMubGVuZ3RoIHNcbiAgICB0aGVuIChpbmNyIGNvdW50OyBTb21lIChCeXRlcy5nZXQgcyBjKSlcbiAgICBlbHNlIE5vbmUpXG5cblxubGV0IG9mX2NoYW5uZWwgaWMgPVxuICBTb21lIHtjb3VudCA9IDA7XG4gICAgICAgIGRhdGEgPSBTYnVmZmlvIHtpYyA9IGljOyBidWZmID0gQnl0ZXMuY3JlYXRlIDQwOTY7IGxlbiA9IDA7IGluZCA9IDB9fVxuXG5cbigqIFN0cmVhbSBleHByZXNzaW9ucyBidWlsZGVycyAqKVxuXG5sZXQgaWFwcCBpIHMgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTYXBwIChkYXRhIGksIGRhdGEgcyl9XG5sZXQgaWNvbnMgaSBzID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2NvbnMgKGksIGRhdGEgcyl9XG5sZXQgaXNpbmcgaSA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNjb25zIChpLCBTZW1wdHkpfVxuXG5sZXQgbGFwcCBmIHMgPVxuICBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTbGF6eSAobGF6eShTYXBwIChkYXRhIChmICgpKSwgZGF0YSBzKSkpfVxuXG5sZXQgbGNvbnMgZiBzID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2xhenkgKGxhenkoU2NvbnMgKGYgKCksIGRhdGEgcykpKX1cbmxldCBsc2luZyBmID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2xhenkgKGxhenkoU2NvbnMgKGYgKCksIFNlbXB0eSkpKX1cblxubGV0IHNlbXB0eSA9IE5vbmVcbmxldCBzbGF6eSBmID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2xhenkgKGxhenkoZGF0YSAoZiAoKSkpKX1cblxuKCogRm9yIGRlYnVnZ2luZyB1c2UgKilcblxubGV0IHJlYyBkdW1wIDogdHlwZSB2LiAodiAtPiB1bml0KSAtPiB2IHQgLT4gdW5pdCA9IGZ1biBmIHMgLT5cbiAgcHJpbnRfc3RyaW5nIFwie2NvdW50ID0gXCI7XG4gIHByaW50X2ludCAoY291bnQgcyk7XG4gIHByaW50X3N0cmluZyBcIjsgZGF0YSA9IFwiO1xuICBkdW1wX2RhdGEgZiAoZGF0YSBzKTtcbiAgcHJpbnRfc3RyaW5nIFwifVwiO1xuICBwcmludF9uZXdsaW5lICgpXG5hbmQgZHVtcF9kYXRhIDogdHlwZSB2LiAodiAtPiB1bml0KSAtPiB2IGRhdGEgLT4gdW5pdCA9IGZ1biBmIC0+XG4gIGZ1bmN0aW9uXG4gICAgU2VtcHR5IC0+IHByaW50X3N0cmluZyBcIlNlbXB0eVwiXG4gIHwgU2NvbnMgKGEsIGQpIC0+XG4gICAgICBwcmludF9zdHJpbmcgXCJTY29ucyAoXCI7XG4gICAgICBmIGE7XG4gICAgICBwcmludF9zdHJpbmcgXCIsIFwiO1xuICAgICAgZHVtcF9kYXRhIGYgZDtcbiAgICAgIHByaW50X3N0cmluZyBcIilcIlxuICB8IFNhcHAgKGQxLCBkMikgLT5cbiAgICAgIHByaW50X3N0cmluZyBcIlNhcHAgKFwiO1xuICAgICAgZHVtcF9kYXRhIGYgZDE7XG4gICAgICBwcmludF9zdHJpbmcgXCIsIFwiO1xuICAgICAgZHVtcF9kYXRhIGYgZDI7XG4gICAgICBwcmludF9zdHJpbmcgXCIpXCJcbiAgfCBTbGF6eSBfIC0+IHByaW50X3N0cmluZyBcIlNsYXp5XCJcbiAgfCBTZ2VuIF8gLT4gcHJpbnRfc3RyaW5nIFwiU2dlblwiXG4gIHwgU2J1ZmZpbyBfIC0+IHByaW50X3N0cmluZyBcIlNidWZmaW9cIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgUGllcnJlIFdlaXMgYW5kIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5OSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeHRlbnNpYmxlIGJ1ZmZlcnMgKilcblxudHlwZSB0ID1cbiB7bXV0YWJsZSBidWZmZXIgOiBieXRlcztcbiAgbXV0YWJsZSBwb3NpdGlvbiA6IGludDtcbiAgbXV0YWJsZSBsZW5ndGggOiBpbnQ7XG4gIGluaXRpYWxfYnVmZmVyIDogYnl0ZXN9XG4oKiBJbnZhcmlhbnRzOiBhbGwgcGFydHMgb2YgdGhlIGNvZGUgcHJlc2VydmUgdGhlIGludmFyaWFudHMgdGhhdDpcbiAgIC0gWzAgPD0gYi5wb3NpdGlvbiA8PSBiLmxlbmd0aF1cbiAgIC0gW2IubGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGIuYnVmZmVyXVxuXG4gICBOb3RlIGluIHBhcnRpY3VsYXIgdGhhdCBbYi5wb3NpdGlvbiA9IGIubGVuZ3RoXSBpcyBsZWdhbCxcbiAgIGl0IG1lYW5zIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxsIGFuZCB3aWxsIGhhdmUgdG8gYmUgZXh0ZW5kZWRcbiAgIGJlZm9yZSBhbnkgZnVydGhlciBhZGRpdGlvbi4gKilcblxubGV0IGNyZWF0ZSBuID1cbiBsZXQgbiA9IGlmIG4gPCAxIHRoZW4gMSBlbHNlIG4gaW5cbiBsZXQgbiA9IGlmIG4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiBTeXMubWF4X3N0cmluZ19sZW5ndGggZWxzZSBuIGluXG4gbGV0IHMgPSBCeXRlcy5jcmVhdGUgbiBpblxuIHtidWZmZXIgPSBzOyBwb3NpdGlvbiA9IDA7IGxlbmd0aCA9IG47IGluaXRpYWxfYnVmZmVyID0gc31cblxubGV0IGNvbnRlbnRzIGIgPSBCeXRlcy5zdWJfc3RyaW5nIGIuYnVmZmVyIDAgYi5wb3NpdGlvblxubGV0IHRvX2J5dGVzIGIgPSBCeXRlcy5zdWIgYi5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBzdWIgYiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGIucG9zaXRpb24gLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5zdWJcIlxuICBlbHNlIEJ5dGVzLnN1Yl9zdHJpbmcgYi5idWZmZXIgb2ZzIGxlblxuXG5cbmxldCBibGl0IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IHNyY29mZiA8IDAgfHwgc3Jjb2ZmID4gc3JjLnBvc2l0aW9uIC0gbGVuXG4gICAgICAgICAgICAgfHwgZHN0b2ZmIDwgMCB8fCBkc3RvZmYgPiAoQnl0ZXMubGVuZ3RoIGRzdCkgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5ibGl0XCJcbiAgZWxzZVxuICAgIEJ5dGVzLnVuc2FmZV9ibGl0IHNyYy5idWZmZXIgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuXG5cblxubGV0IG50aCBiIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID49IGIucG9zaXRpb24gdGhlblxuICAgaW52YWxpZF9hcmcgXCJCdWZmZXIubnRoXCJcbiAgZWxzZSBCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZmVyIG9mc1xuXG5cbmxldCBsZW5ndGggYiA9IGIucG9zaXRpb25cblxubGV0IGNsZWFyIGIgPSBiLnBvc2l0aW9uIDwtIDBcblxubGV0IHJlc2V0IGIgPVxuICBiLnBvc2l0aW9uIDwtIDA7XG4gIGIuYnVmZmVyIDwtIGIuaW5pdGlhbF9idWZmZXI7XG4gIGIubGVuZ3RoIDwtIEJ5dGVzLmxlbmd0aCBiLmJ1ZmZlclxuXG4oKiBbcmVzaXplIGIgbW9yZV0gZW5zdXJlcyB0aGF0IFtiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmxlbmd0aF0gaG9sZHNcbiAgIGJ5IGR5bmFtaWNhbGx5IGV4dGVuZGluZyBbYi5idWZmZXJdIGlmIG5lY2Vzc2FyeSAtLSBhbmQgdGh1c1xuICAgaW5jcmVhc2luZyBbYi5sZW5ndGhdLlxuXG4gICBJbiBwYXJ0aWN1bGFyLCBhZnRlciBbcmVzaXplIGIgbW9yZV0gaXMgY2FsbGVkLCBhIGRpcmVjdCBhY2Nlc3Mgb2ZcbiAgIHNpemUgW21vcmVdIGF0IFtiLnBvc2l0aW9uXSB3aWxsIGFsd2F5cyBiZSBpbi1ib3VuZHMsIHNvIHRoYXRcbiAgICh1bnNhZmVfe2dldCxzZXR9KSBtYXkgYmUgdXNlZCBmb3IgcGVyZm9ybWFuY2UuXG4qKVxubGV0IHJlc2l6ZSBiIG1vcmUgPVxuICBsZXQgb2xkX3BvcyA9IGIucG9zaXRpb24gaW5cbiAgbGV0IG9sZF9sZW4gPSBiLmxlbmd0aCBpblxuICBsZXQgbmV3X2xlbiA9IHJlZiBvbGRfbGVuIGluXG4gIHdoaWxlIG9sZF9wb3MgKyBtb3JlID4gIW5ld19sZW4gZG8gbmV3X2xlbiA6PSAyICogIW5ld19sZW4gZG9uZTtcbiAgaWYgIW5ld19sZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiBiZWdpblxuICAgIGlmIG9sZF9wb3MgKyBtb3JlIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIHRoZW4gbmV3X2xlbiA6PSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICBlbHNlIGZhaWx3aXRoIFwiQnVmZmVyLmFkZDogY2Fubm90IGdyb3cgYnVmZmVyXCJcbiAgZW5kO1xuICBsZXQgbmV3X2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAhbmV3X2xlbiBpblxuICAoKiBQUiM2MTQ4OiBsZXQncyBrZWVwIHVzaW5nIFtibGl0XSByYXRoZXIgdGhhbiBbdW5zYWZlX2JsaXRdIGluXG4gICAgIHRoaXMgdHJpY2t5IGZ1bmN0aW9uIHRoYXQgaXMgc2xvdyBhbnl3YXkuICopXG4gIEJ5dGVzLmJsaXQgYi5idWZmZXIgMCBuZXdfYnVmZmVyIDAgYi5wb3NpdGlvbjtcbiAgYi5idWZmZXIgPC0gbmV3X2J1ZmZlcjtcbiAgYi5sZW5ndGggPC0gIW5ld19sZW47XG4gIGFzc2VydCAoYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5sZW5ndGgpO1xuICBhc3NlcnQgKG9sZF9wb3MgKyBtb3JlIDw9IGIubGVuZ3RoKTtcbiAgKClcbiAgKCogTm90ZTogdGhlcmUgYXJlIHZhcmlvdXMgc2l0dWF0aW9ucyAocHJlZW1wdGl2ZSB0aHJlYWRzLCBzaWduYWxzIGFuZFxuICAgICBnYyBmaW5hbGl6ZXJzKSB3aGVyZSBPQ2FtbCBjb2RlIG1heSBiZSBydW4gYXN5bmNocm9ub3VzbHk7IGluXG4gICAgIHBhcnRpY3VsYXIsIHRoZXJlIG1heSBiZSBhIHJhY2Ugd2l0aCBhbm90aGVyIHVzZXIgb2YgW2JdLCBjaGFuZ2luZ1xuICAgICBpdHMgbXV0YWJsZSBmaWVsZHMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgW3Jlc2l6ZV0gY2FsbC4gVGhlIEJ1ZmZlclxuICAgICBtb2R1bGUgZG9lcyBub3QgcHJvdmlkZSBhbnkgY29ycmVjdG5lc3MgZ3VhcmFudGVlIGlmIHRoYXQgaGFwcGVucyxcbiAgICAgYnV0IHdlIG11c3Qgc3RpbGwgZW5zdXJlIHRoYXQgdGhlIGRhdGFzdHJ1Y3R1cmUgaW52YXJpYW50cyBob2xkIGZvclxuICAgICBtZW1vcnktc2FmZXR5IC0tIGFzIHdlIHBsYW4gdG8gdXNlIFt1bnNhZmVfe2dldCxzZXR9XS5cblxuICAgICBUaGVyZSBhcmUgdHdvIHBvdGVudGlhbCBhbGxvY2F0aW9uIHBvaW50cyBpbiB0aGlzIGZ1bmN0aW9uLFxuICAgICBbcmVmXSBhbmQgW0J5dGVzLmNyZWF0ZV0sIGJ1dCBhbGwgcmVhZHMgYW5kIHdyaXRlcyB0byB0aGUgZmllbGRzXG4gICAgIG9mIFtiXSBoYXBwZW4gYmVmb3JlIGJvdGggb2YgdGhlbSBvciBhZnRlciBib3RoIG9mIHRoZW0uXG5cbiAgICAgV2UgdGhlcmVmb3JlIGFzc3VtZSB0aGF0IFtiLnBvc2l0aW9uXSBtYXkgY2hhbmdlIGF0IHRoZXNlIGFsbG9jYXRpb25zLFxuICAgICBhbmQgY2hlY2sgdGhhdCB0aGUgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIubGVuZ3RoXSBwb3N0Y29uZGl0aW9uXG4gICAgIGhvbGRzIGZvciBib3RoIHZhbHVlcyBvZiBbYi5wb3NpdGlvbl0sIGJlZm9yZSBvciBhZnRlciB0aGUgZnVuY3Rpb25cbiAgICAgaXMgY2FsbGVkLiBNb3JlIHByZWNpc2VseSwgdGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzIG11c3QgaG9sZCBpZiB0aGVcbiAgICAgZnVuY3Rpb24gcmV0dXJucyBjb3JyZWN0bHksIGluIGFkZGl0aW9uIHRvIHRoZSB1c3VhbCBidWZmZXIgaW52YXJpYW50czpcbiAgICAgLSBbb2xkKGIucG9zaXRpb24pICsgbW9yZSA8PSBuZXcoYi5sZW5ndGgpXVxuICAgICAtIFtuZXcoYi5wb3NpdGlvbikgKyBtb3JlIDw9IG5ldyhiLmxlbmd0aCldXG4gICAgIC0gW29sZChiLmxlbmd0aCkgPD0gbmV3KGIubGVuZ3RoKV1cblxuICAgICBOb3RlOiBbYi5wb3NpdGlvbiArIG1vcmUgPD0gb2xkKGIubGVuZ3RoKV0gZG9lcyAqbm90KlxuICAgICBob2xkIGluIGdlbmVyYWwsIGFzIGl0IGlzIHByZWNpc2VseSB0aGUgY2FzZSB3aGVyZSB5b3UgbmVlZFxuICAgICB0byBjYWxsIFtyZXNpemVdIHRvIGluY3JlYXNlIFtiLmxlbmd0aF0uXG5cbiAgICAgTm90ZTogW2Fzc2VydF0gYWJvdmUgZG9lcyBub3QgbWVhbiB0aGF0IHdlIGtub3cgdGhlIGNvbmRpdGlvbnNcbiAgICAgYWx3YXlzIGhvbGQsIGJ1dCB0aGF0IHRoZSBmdW5jdGlvbiBtYXkgcmV0dXJuIGNvcnJlY3RseVxuICAgICBvbmx5IGlmIHRoZXkgaG9sZC5cblxuICAgICBOb3RlOiB0aGUgb3RoZXIgZnVuY3Rpb25zIGluIHRoaXMgbW9kdWxlIGRvZXMgbm90IG5lZWRcbiAgICAgdG8gYmUgY2hlY2tlZCB3aXRoIHRoaXMgbGV2ZWwgb2Ygc2NydXRpbnksIGdpdmVuIHRoYXQgdGhleVxuICAgICByZWFkL3dyaXRlIHRoZSBidWZmZXIgaW1tZWRpYXRlbHkgYWZ0ZXIgY2hlY2tpbmcgdGhhdFxuICAgICBbYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5sZW5ndGhdIGhvbGQgb3IgY2FsbGluZyBbcmVzaXplXS5cbiAgKilcblxubGV0IGFkZF9jaGFyIGIgYyA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDE7XG4gIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgcG9zIGM7XG4gIGIucG9zaXRpb24gPC0gcG9zICsgMVxuXG5sZXQgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4ID0gNFxubGV0IHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXggPSA0XG5cbmxldCByZWMgYWRkX3V0Zl84X3VjaGFyIGIgdSA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzhfdWNoYXIgYi5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzhfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCByZWMgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl8xNmJlX3VjaGFyIGIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfMTZiZV91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IHJlYyBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzE2bGVfdWNoYXIgYi5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl8xNmxlX3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgYWRkX3N1YnN0cmluZyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGlmIG9mZnNldCA8IDAgfHwgbGVuIDwgMCB8fCBvZmZzZXQgPiBTdHJpbmcubGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfc3Vic3RyaW5nL2FkZF9zdWJieXRlc1wiO1xuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgb2Zmc2V0IGIuYnVmZmVyIGIucG9zaXRpb24gbGVuO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX3N1YmJ5dGVzIGIgcyBvZmZzZXQgbGVuID1cbiAgYWRkX3N1YnN0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpIG9mZnNldCBsZW5cblxubGV0IGFkZF9zdHJpbmcgYiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgMCBiLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9ieXRlcyBiIHMgPSBhZGRfc3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcylcblxubGV0IGFkZF9idWZmZXIgYiBicyA9XG4gIGFkZF9zdWJieXRlcyBiIGJzLmJ1ZmZlciAwIGJzLnBvc2l0aW9uXG5cbigqIHRoaXMgKHByaXZhdGUpIGZ1bmN0aW9uIGNvdWxkIG1vdmUgaW50byB0aGUgc3RhbmRhcmQgbGlicmFyeSAqKVxubGV0IHJlYWxseV9pbnB1dF91cF90byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkID1cbiAgICBpZiB0b19yZWFkID0gMCB0aGVuIGFscmVhZHlfcmVhZFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gaW5wdXQgaWMgYnVmIG9mcyB0b19yZWFkIGluXG4gICAgICBpZiByID0gMCB0aGVuIGFscmVhZHlfcmVhZFxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBsZXQgYWxyZWFkeV9yZWFkID0gYWxyZWFkeV9yZWFkICsgciBpblxuICAgICAgICBsZXQgb2ZzID0gb2ZzICsgciBpblxuICAgICAgICBsZXQgdG9fcmVhZCA9IHRvX3JlYWQgLSByIGluXG4gICAgICAgIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQgfm9mcyB+dG9fcmVhZFxuICAgICAgZW5kXG4gICAgZW5kXG4gIGluIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQ6MCB+b2ZzIH50b19yZWFkOmxlblxuXG5cbmxldCB1bnNhZmVfYWRkX2NoYW5uZWxfdXBfdG8gYiBpYyBsZW4gPVxuICBpZiBiLnBvc2l0aW9uICsgbGVuID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIGxldCBuID0gcmVhbGx5X2lucHV0X3VwX3RvIGljIGIuYnVmZmVyIGIucG9zaXRpb24gbGVuIGluXG4gICgqIFRoZSBhc3NlcnRpb24gYmVsb3cgbWF5IGZhaWwgaW4gd2VpcmQgc2NlbmFyaW8gd2hlcmVcbiAgICAgdGhyZWFkZWQvZmluYWxpemVyIGNvZGUsIHJ1biBhc3luY2hyb25vdXNseSBkdXJpbmcgdGhlXG4gICAgIFtyZWFsbHlfaW5wdXRfdXBfdG9dIGNhbGwsIHJhY2VzIG9uIHRoZSBidWZmZXI7IHdlIGRvbid0IGVuc3VyZVxuICAgICBjb3JyZWN0bmVzcyBpbiB0aGlzIGNhc2UsIGJ1dCBuZWVkIHRvIHByZXNlcnZlIHRoZSBpbnZhcmlhbnRzIGZvclxuICAgICBtZW1vcnktc2FmZXR5IChzZWUgZGlzY3Vzc2lvbiBvZiBbcmVzaXplXSkuICopXG4gIGFzc2VydCAoYi5wb3NpdGlvbiArIG4gPD0gYi5sZW5ndGgpO1xuICBiLnBvc2l0aW9uIDwtIGIucG9zaXRpb24gKyBuO1xuICBuXG5cbmxldCBhZGRfY2hhbm5lbCBiIGljIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gICAoKiBQUiM1MDA0ICopXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX2NoYW5uZWxcIjtcbiAgbGV0IG4gPSB1bnNhZmVfYWRkX2NoYW5uZWxfdXBfdG8gYiBpYyBsZW4gaW5cbiAgKCogSXQgaXMgaW50ZW50aW9uYWwgdGhhdCBhIGNvbnN1bWVyIGNhdGNoaW5nIEVuZF9vZl9maWxlXG4gICAgIHdpbGwgc2VlIHRoZSBkYXRhIHdyaXR0ZW4gKHNlZSAjNjcxOSwgIzcxMzYpLiAqKVxuICBpZiBuIDwgbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGU7XG4gICgpXG5cbmxldCBvdXRwdXRfYnVmZmVyIG9jIGIgPVxuICBvdXRwdXQgb2MgYi5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgfCAnKCcgLT4gJyknXG4gIHwgJ3snIC0+ICd9J1xuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbigqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxubGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICBpZiBzLltpXSA9IG9wZW5pbmcgdGhlbiBhZHZhbmNlIChrICsgMSkgKGkgKyAxKSBsaW0gZWxzZVxuICAgIGlmIHMuW2ldID0gY2xvc2luZyB0aGVuXG4gICAgICBpZiBrID0gMCB0aGVuIGkgZWxzZSBhZHZhbmNlIChrIC0gMSkgKGkgKyAxKSBsaW1cbiAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbSBpblxuICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gbGltIGVsc2VcbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgfCAnXycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgIHwgXyAtPiBpIGluXG4gIGFkdmFuY2Ugc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxuKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbmxldCBmaW5kX2lkZW50IHMgc3RhcnQgbGltID1cbiAgaWYgc3RhcnQgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gIHwgJygnIHwgJ3snIGFzIGMgLT5cbiAgICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICAgU3RyaW5nLnN1YiBzIG5ld19zdGFydCAoc3RvcCAtIHN0YXJ0IC0gMSksIHN0b3AgKyAxXG4gICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgfCBfIC0+XG4gICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19ub25fYWxwaGEgcyAoc3RhcnQgKyAxKSBpblxuICAgICBTdHJpbmcuc3ViIHMgc3RhcnQgKHN0b3AgLSBzdGFydCksIHN0b3BcblxuKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgIGFjY29yZGluZyB0byB0aGUgZnVuY3Rpb24gbWFwcGluZyBmLiAqKVxubGV0IGFkZF9zdWJzdGl0dXRlIGIgZiBzID1cbiAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgIGlmIGkgPCBsaW0gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnJCcgYXMgY3VycmVudCB3aGVuIHByZXZpb3VzID0gJ1xcXFwnIC0+XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgfCAnJCcgLT5cbiAgICAgICAgIGxldCBqID0gaSArIDEgaW5cbiAgICAgICAgIGxldCBpZGVudCwgbmV4dF9pID0gZmluZF9pZGVudCBzIGogbGltIGluXG4gICAgICAgICBhZGRfc3RyaW5nIGIgKGYgaWRlbnQpO1xuICAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgfCBjdXJyZW50IHdoZW4gcHJldmlvdXMgPT0gJ1xcXFwnIC0+XG4gICAgICAgICBhZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICB8ICdcXFxcJyBhcyBjdXJyZW50IC0+XG4gICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgY3VycmVudCAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgZW5kIGVsc2VcbiAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXMgaW5cbiAgc3Vic3QgJyAnIDBcblxubGV0IHRydW5jYXRlIGIgbGVuID1cbiAgICBpZiBsZW4gPCAwIHx8IGxlbiA+IGxlbmd0aCBiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLnRydW5jYXRlXCJcbiAgICBlbHNlXG4gICAgICBiLnBvc2l0aW9uIDwtIGxlblxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMudW5zYWZlX2dldCBiLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmZXIgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCBhZGRfc2VxIGIgc2VxID0gU2VxLml0ZXIgKGFkZF9jaGFyIGIpIHNlcVxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgYiA9IGNyZWF0ZSAzMiBpblxuICBhZGRfc2VxIGIgaTtcbiAgYlxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MTYgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDMyIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0dVwiXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5cbmxldCBhZGRfaW50OCBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDEgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAxO1xuICB1bnNhZmVfc2V0X2ludDggYi5idWZmZXIgYi5wb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X25lIGIgeCA9XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgMiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gIHVuc2FmZV9zZXRfaW50MTYgYi5idWZmZXIgYi5wb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDMyX25lIGIgeCA9XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgNCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDQ7XG4gIHVuc2FmZV9zZXRfaW50MzIgYi5idWZmZXIgYi5wb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDY0X25lIGIgeCA9XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgOCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDg7XG4gIHVuc2FmZV9zZXRfaW50NjQgYi5idWZmZXIgYi5wb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X2xlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQxNl9iZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG5cbmxldCBhZGRfaW50MzJfbGUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDMyX2JlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeClcblxubGV0IGFkZF9pbnQ2NF9sZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50NjRfYmUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuXG5sZXQgYWRkX3VpbnQ4ID0gYWRkX2ludDhcbmxldCBhZGRfdWludDE2X25lID0gYWRkX2ludDE2X25lXG5sZXQgYWRkX3VpbnQxNl9sZSA9IGFkZF9pbnQxNl9sZVxubGV0IGFkZF91aW50MTZfYmUgPSBhZGRfaW50MTZfYmVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgWGF2aWVyIExlcm95IGFuZCBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbmxldCBrZnByaW50ZiBrIG8gKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIG8gYWNjOyBrIG8pIEVuZF9vZl9hY2MgZm10XG5sZXQga2JwcmludGYgayBiIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gYnVmcHV0X2FjYyBiIGFjYzsgayBiKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGlrZnByaW50ZiBrIG9jIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgb2MgZm10XG5sZXQgaWticHJpbnRmID0gaWtmcHJpbnRmXG5cbmxldCBmcHJpbnRmIG9jIGZtdCA9IGtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBicHJpbnRmIGIgZm10ID0ga2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgaWZwcmludGYgb2MgZm10ID0gaWtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBpYnByaW50ZiBiIGZtdCA9IGlrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBwcmludGYgZm10ID0gZnByaW50ZiBzdGRvdXQgZm10XG5sZXQgZXByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZGVyciBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgaycgYWNjID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHN0cnB1dF9hY2MgYnVmIGFjYztcbiAgICBrIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gcykgZm10XG5cbmxldCBrcHJpbnRmID0ga3NwcmludGZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBrZXkgPSBzdHJpbmdcbnR5cGUgZG9jID0gc3RyaW5nXG50eXBlIHVzYWdlX21zZyA9IHN0cmluZ1xudHlwZSBhbm9uX2Z1biA9IChzdHJpbmcgLT4gdW5pdClcblxudHlwZSBzcGVjID1cbiAgfCBVbml0IG9mICh1bml0IC0+IHVuaXQpICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHVuaXQgYXJndW1lbnQgKilcbiAgfCBCb29sIG9mIChib29sIC0+IHVuaXQpICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgYm9vbCBhcmd1bWVudCAqKVxuICB8IFNldCBvZiBib29sIHJlZiAgICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRydWUgKilcbiAgfCBDbGVhciBvZiBib29sIHJlZiAgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byBmYWxzZSAqKVxuICB8IFN0cmluZyBvZiAoc3RyaW5nIC0+IHVuaXQpICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBTZXRfc3RyaW5nIG9mIHN0cmluZyByZWYgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgc3RyaW5nIGFyZ3VtZW50ICopXG4gIHwgSW50IG9mIChpbnQgLT4gdW5pdCkgICAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhbiBpbnQgYXJndW1lbnQgKilcbiAgfCBTZXRfaW50IG9mIGludCByZWYgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgaW50IGFyZ3VtZW50ICopXG4gIHwgRmxvYXQgb2YgKGZsb2F0IC0+IHVuaXQpICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIGZsb2F0IGFyZ3VtZW50ICopXG4gIHwgU2V0X2Zsb2F0IG9mIGZsb2F0IHJlZiAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIGZsb2F0IGFyZ3VtZW50ICopXG4gIHwgVHVwbGUgb2Ygc3BlYyBsaXN0ICAgICAgICAgKCogVGFrZSBzZXZlcmFsIGFyZ3VtZW50cyBhY2NvcmRpbmcgdG8gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYyBsaXN0ICopXG4gIHwgU3ltYm9sIG9mIHN0cmluZyBsaXN0ICogKHN0cmluZyAtPiB1bml0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFRha2Ugb25lIG9mIHRoZSBzeW1ib2xzIGFzIGFyZ3VtZW50IGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIHN5bWJvbC4gKilcbiAgfCBSZXN0IG9mIChzdHJpbmcgLT4gdW5pdCkgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGVhY2ggcmVtYWluaW5nIGFyZ3VtZW50ICopXG4gIHwgUmVzdF9hbGwgb2YgKHN0cmluZyBsaXN0IC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogU3RvcCBpbnRlcnByZXRpbmcga2V5d29yZHMgYW5kIGNhbGwgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBhbGwgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbiAgfCBFeHBhbmQgb2YgKHN0cmluZyAtPiBzdHJpbmcgYXJyYXkpICgqIElmIHRoZSByZW1haW5pbmcgYXJndW1lbnRzIHRvIHByb2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBvZiB0aGUgZm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tcIi1mb29cIjsgXCJhcmdcIl0gQCByZXN0XSB3aGVyZSBcImZvb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyByZWdpc3RlcmVkIGFzIFtFeHBhbmQgZl0sIHRoZW4gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgW2YgXCJhcmdcIiBAIHJlc3RdIGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkLiBPbmx5IGFsbG93ZWQgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY10uICopXG5cbmV4Y2VwdGlvbiBCYWQgb2Ygc3RyaW5nXG5leGNlcHRpb24gSGVscCBvZiBzdHJpbmdcblxudHlwZSBlcnJvciA9XG4gIHwgVW5rbm93biBvZiBzdHJpbmdcbiAgfCBXcm9uZyBvZiBzdHJpbmcgKiBzdHJpbmcgKiBzdHJpbmcgICgqIG9wdGlvbiwgYWN0dWFsLCBleHBlY3RlZCAqKVxuICB8IE1pc3Npbmcgb2Ygc3RyaW5nXG4gIHwgTWVzc2FnZSBvZiBzdHJpbmdcblxuZXhjZXB0aW9uIFN0b3Agb2YgZXJyb3IgKCogdXNlZCBpbnRlcm5hbGx5ICopXG5cbm9wZW4gUHJpbnRmXG5cbmxldCByZWMgYXNzb2MzIHggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8ICh5MSwgeTIsIF8pIDo6IF8gd2hlbiB5MSA9IHggLT4geTJcbiAgfCBfIDo6IHQgLT4gYXNzb2MzIHggdFxuXG5cbmxldCBzcGxpdCBzID1cbiAgbGV0IGkgPSBTdHJpbmcuaW5kZXggcyAnPScgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBTdHJpbmcuc3ViIHMgMCBpLCBTdHJpbmcuc3ViIHMgKGkrMSkgKGxlbi0oaSsxKSlcblxuXG5sZXQgbWFrZV9zeW1saXN0IHByZWZpeCBzZXAgc3VmZml4IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBcIjxub25lPlwiXG4gIHwgaDo6dCAtPiAoTGlzdC5mb2xkX2xlZnQgKGZ1biB4IHkgLT4geCBeIHNlcCBeIHkpIChwcmVmaXggXiBoKSB0KSBeIHN1ZmZpeFxuXG5cbmxldCBwcmludF9zcGVjIGJ1ZiAoa2V5LCBzcGVjLCBkb2MpID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBkb2MgPiAwIHRoZW5cbiAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICB8IFN5bWJvbCAobCwgXykgLT5cbiAgICAgICAgYnByaW50ZiBidWYgXCIgICVzICVzJXNcXG5cIiBrZXkgKG1ha2Vfc3ltbGlzdCBcIntcIiBcInxcIiBcIn1cIiBsKSBkb2NcbiAgICB8IF8gLT5cbiAgICAgICAgYnByaW50ZiBidWYgXCIgICVzICVzXFxuXCIga2V5IGRvY1xuXG5cbmxldCBoZWxwX2FjdGlvbiAoKSA9IHJhaXNlIChTdG9wIChVbmtub3duIFwiLWhlbHBcIikpXG5cbmxldCBhZGRfaGVscCBzcGVjbGlzdCA9XG4gIGxldCBhZGQxID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItaGVscFwiIHNwZWNsaXN0KTsgW11cbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgW1wiLWhlbHBcIiwgVW5pdCBoZWxwX2FjdGlvbiwgXCIgRGlzcGxheSB0aGlzIGxpc3Qgb2Ygb3B0aW9uc1wiXVxuICBhbmQgYWRkMiA9XG4gICAgdHJ5IGlnbm9yZSAoYXNzb2MzIFwiLS1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItLWhlbHBcIiwgVW5pdCBoZWxwX2FjdGlvbiwgXCIgRGlzcGxheSB0aGlzIGxpc3Qgb2Ygb3B0aW9uc1wiXVxuICBpblxuICBzcGVjbGlzdCBAIChhZGQxIEAgYWRkMilcblxuXG5sZXQgdXNhZ2VfYiBidWYgc3BlY2xpc3QgZXJybXNnID1cbiAgYnByaW50ZiBidWYgXCIlc1xcblwiIGVycm1zZztcbiAgTGlzdC5pdGVyIChwcmludF9zcGVjIGJ1ZikgKGFkZF9oZWxwIHNwZWNsaXN0KVxuXG5cbmxldCB1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICB1c2FnZV9iIGIgc3BlY2xpc3QgZXJybXNnO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCB1c2FnZSBzcGVjbGlzdCBlcnJtc2cgPVxuICBlcHJpbnRmIFwiJXNcIiAodXNhZ2Vfc3RyaW5nIHNwZWNsaXN0IGVycm1zZylcblxuXG5sZXQgY3VycmVudCA9IHJlZiAwXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChib29sX29mX3N0cmluZyB4KVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG5cbmxldCBpbnRfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgeClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggYWxsb3dfZXhwYW5kIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm1zZyA9XG4gIGxldCBpbml0cG9zID0gIWN1cnJlbnQgaW5cbiAgbGV0IGNvbnZlcnRfZXJyb3IgZXJyb3IgPVxuICAgICgqIGNvbnZlcnQgYW4gaW50ZXJuYWwgZXJyb3IgdG8gYSBCYWQvSGVscCBleGNlcHRpb25cbiAgICAgICAqb3IqIGFkZCB0aGUgcHJvZ3JhbSBuYW1lIGFzIGEgcHJlZml4IGFuZCB0aGUgdXNhZ2UgbWVzc2FnZSBhcyBhIHN1ZmZpeFxuICAgICAgIHRvIGFuIHVzZXItcmFpc2VkIEJhZCBleGNlcHRpb24uXG4gICAgKilcbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gICAgbGV0IHByb2duYW1lID1cbiAgICAgIGlmIGluaXRwb3MgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSB0aGVuICFhcmd2Lihpbml0cG9zKSBlbHNlIFwiKD8pXCIgaW5cbiAgICBiZWdpbiBtYXRjaCBlcnJvciB3aXRoXG4gICAgICB8IFVua25vd24gXCItaGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gXCItLWhlbHBcIiAtPiAoKVxuICAgICAgfCBVbmtub3duIHMgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogdW5rbm93biBvcHRpb24gJyVzJy5cXG5cIiBwcm9nbmFtZSBzXG4gICAgICB8IE1pc3NpbmcgcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiBvcHRpb24gJyVzJyBuZWVkcyBhbiBhcmd1bWVudC5cXG5cIiBwcm9nbmFtZSBzXG4gICAgICB8IFdyb25nIChvcHQsIGFyZywgZXhwZWN0ZWQpIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IHdyb25nIGFyZ3VtZW50ICclcyc7IG9wdGlvbiAnJXMnIGV4cGVjdHMgJXMuXFxuXCJcbiAgICAgICAgICAgICAgICAgIHByb2duYW1lIGFyZyBvcHQgZXhwZWN0ZWRcbiAgICAgIHwgTWVzc2FnZSBzIC0+ICgqIHVzZXIgZXJyb3IgbWVzc2FnZSAqKVxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiAlcy5cXG5cIiBwcm9nbmFtZSBzXG4gICAgZW5kO1xuICAgIHVzYWdlX2IgYiAhc3BlY2xpc3QgZXJybXNnO1xuICAgIGlmIGVycm9yID0gVW5rbm93biBcIi1oZWxwXCIgfHwgZXJyb3IgPSBVbmtub3duIFwiLS1oZWxwXCJcbiAgICB0aGVuIEhlbHAgKEJ1ZmZlci5jb250ZW50cyBiKVxuICAgIGVsc2UgQmFkIChCdWZmZXIuY29udGVudHMgYilcbiAgaW5cbiAgaW5jciBjdXJyZW50O1xuICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIGRvXG4gICAgYmVnaW4gdHJ5XG4gICAgICBsZXQgcyA9ICFhcmd2LighY3VycmVudCkgaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggcyA+PSAxICYmIHMuWzBdID0gJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IGFjdGlvbiwgZm9sbG93ID1cbiAgICAgICAgICB0cnkgYXNzb2MzIHMgIXNwZWNsaXN0LCBOb25lXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBrZXl3b3JkLCBhcmcgPSBzcGxpdCBzIGluXG4gICAgICAgICAgICBhc3NvYzMga2V5d29yZCAhc3BlY2xpc3QsIFNvbWUgYXJnXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgKFN0b3AgKFVua25vd24gcykpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub19hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGFyZyAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJubyBhcmd1bWVudFwiKSkpIGluXG4gICAgICAgIGxldCBnZXRfYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBpZiAhY3VycmVudCArIDEgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSB0aGVuICFhcmd2LighY3VycmVudCArIDEpXG4gICAgICAgICAgICAgIGVsc2UgcmFpc2UgKFN0b3AgKE1pc3NpbmcgcykpXG4gICAgICAgICAgfCBTb21lIGFyZyAtPiBhcmdcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvbnN1bWVfYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpbmNyIGN1cnJlbnRcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIHRyZWF0X2FjdGlvbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVW5pdCBmIC0+IG5vX2FyZyAoKTsgZiAoKTtcbiAgICAgICAgfCBCb29sIGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBib29sX29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGJvb2xlYW5cIikpKVxuICAgICAgICAgICAgfCBTb21lIHMgLT4gZiBzXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXQgciAtPiBub19hcmcgKCk7IHIgOj0gdHJ1ZTtcbiAgICAgICAgfCBDbGVhciByIC0+IG5vX2FyZyAoKTsgciA6PSBmYWxzZTtcbiAgICAgICAgfCBTdHJpbmcgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGYgYXJnO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU3ltYm9sIChzeW1iLCBmKSAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGlmIExpc3QubWVtIGFyZyBzeW1iIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAgZiBhcmc7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwib25lIG9mOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiAobWFrZV9zeW1saXN0IFwiXCIgXCIgXCIgXCJcIiBzeW1iKSkpKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgU2V0X3N0cmluZyByIC0+XG4gICAgICAgICAgICByIDo9IGdldF9hcmcgKCk7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBJbnQgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGludF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYW4gaW50ZWdlclwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiBmIHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldF9pbnQgciAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGludF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYW4gaW50ZWdlclwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiByIDo9IHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IEZsb2F0IGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBmbG9hdF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBmbG9hdFwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiBmIHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldF9mbG9hdCByIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZmxvYXRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgZmxvYXRcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gciA6PSB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBUdXBsZSBzcGVjcyAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgTGlzdC5pdGVyIHRyZWF0X2FjdGlvbiBzcGVjcztcbiAgICAgICAgfCBSZXN0IGYgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgLSAxIGRvXG4gICAgICAgICAgICAgIGYgIWFyZ3YuKCFjdXJyZW50ICsgMSk7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgfCBSZXN0X2FsbCBmIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICB3aGlsZSAhY3VycmVudCA8IEFycmF5Lmxlbmd0aCAhYXJndiAtIDEgZG9cbiAgICAgICAgICAgICAgYWNjIDo9ICFhcmd2LighY3VycmVudCArIDEpIDo6ICFhY2M7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIGYgKExpc3QucmV2ICFhY2MpXG4gICAgICAgIHwgRXhwYW5kIGYgLT5cbiAgICAgICAgICAgIGlmIG5vdCBhbGxvd19leHBhbmQgdGhlblxuICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkFyZy5FeHBhbmQgaXMgaXMgb25seSBhbGxvd2VkIHdpdGggXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZy5wYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY1wiKTtcbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBsZXQgbmV3YXJnID0gZiBhcmcgaW5cbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IEFycmF5LnN1YiAhYXJndiAwICghY3VycmVudCArIDEpXG4gICAgICAgICAgICBhbmQgYWZ0ZXIgPVxuICAgICAgICAgICAgICBBcnJheS5zdWIgIWFyZ3YgKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICgoQXJyYXkubGVuZ3RoICFhcmd2KSAtICFjdXJyZW50IC0gMSkgaW5cbiAgICAgICAgICAgIGFyZ3Y6PSBBcnJheS5jb25jYXQgW2JlZm9yZTtuZXdhcmc7YWZ0ZXJdO1xuICAgICAgICBpblxuICAgICAgICB0cmVhdF9hY3Rpb24gYWN0aW9uIGVuZFxuICAgICAgZWxzZSBhbm9uZnVuIHNcbiAgICB3aXRoIHwgQmFkIG0gLT4gcmFpc2UgKGNvbnZlcnRfZXJyb3IgKE1lc3NhZ2UgbSkpO1xuICAgICAgICAgfCBTdG9wIGUgLT4gcmFpc2UgKGNvbnZlcnRfZXJyb3IgZSk7XG4gICAgZW5kO1xuICAgIGluY3IgY3VycmVudFxuICBkb25lXG5cbmxldCBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggdHJ1ZSBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2dcblxubGV0IHBhcnNlX2FyZ3ZfZHluYW1pYyA/KGN1cnJlbnQ9Y3VycmVudCkgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBmYWxzZSBjdXJyZW50IChyZWYgYXJndikgc3BlY2xpc3QgYW5vbmZ1blxuICAgIGVycm1zZ1xuXG5cbmxldCBwYXJzZV9hcmd2ID8oY3VycmVudD1jdXJyZW50KSBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYXJndl9keW5hbWljIH5jdXJyZW50OmN1cnJlbnQgYXJndiAocmVmIHNwZWNsaXN0KSBhbm9uZnVuIGVycm1zZ1xuXG5cbmxldCBwYXJzZSBsIGYgbXNnID1cbiAgdHJ5XG4gICAgcGFyc2VfYXJndiBTeXMuYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5cbmxldCBwYXJzZV9keW5hbWljIGwgZiBtc2cgPVxuICB0cnlcbiAgICBwYXJzZV9hcmd2X2R5bmFtaWMgU3lzLmFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxubGV0IHBhcnNlX2V4cGFuZCBsIGYgbXNnID1cbiAgdHJ5XG4gICAgbGV0IGFyZ3YgPSByZWYgU3lzLmFyZ3YgaW5cbiAgICBsZXQgc3BlYyA9IHJlZiBsIGluXG4gICAgbGV0IGN1cnJlbnQgPSByZWYgKCFjdXJyZW50KSBpblxuICAgIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIGN1cnJlbnQgYXJndiBzcGVjIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5cbmxldCBzZWNvbmRfd29yZCBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgbiA9XG4gICAgaWYgbiA+PSBsZW4gdGhlbiBsZW5cbiAgICBlbHNlIGlmIHMuW25dID0gJyAnIHRoZW4gbG9vcCAobisxKVxuICAgIGVsc2UgblxuICBpblxuICBtYXRjaCBTdHJpbmcuaW5kZXggcyAnXFx0JyB3aXRoXG4gIHwgbiAtPiBsb29wIChuKzEpXG4gIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggU3RyaW5nLmluZGV4IHMgJyAnIHdpdGhcbiAgICAgIHwgbiAtPiBsb29wIChuKzEpXG4gICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gbGVuXG4gICAgICBlbmRcblxuXG5sZXQgbWF4X2FyZ19sZW4gY3VyIChrd2QsIHNwZWMsIGRvYykgPVxuICBtYXRjaCBzcGVjIHdpdGhcbiAgfCBTeW1ib2wgXyAtPiBJbnQubWF4IGN1ciAoU3RyaW5nLmxlbmd0aCBrd2QpXG4gIHwgXyAtPiBJbnQubWF4IGN1ciAoU3RyaW5nLmxlbmd0aCBrd2QgKyBzZWNvbmRfd29yZCBkb2MpXG5cblxubGV0IHJlcGxhY2VfbGVhZGluZ190YWIgcyA9XG4gIGxldCBzZWVuID0gcmVmIGZhbHNlIGluXG4gIFN0cmluZy5tYXAgKGZ1bmN0aW9uICdcXHQnIHdoZW4gbm90ICFzZWVuIC0+IHNlZW4gOj0gdHJ1ZTsgJyAnIHwgYyAtPiBjKSBzXG5cbmxldCBhZGRfcGFkZGluZyBsZW4ga3NkID1cbiAgbWF0Y2gga3NkIHdpdGhcbiAgfCAoXywgXywgXCJcIikgLT5cbiAgICAgICgqIERvIG5vdCBwYWQgdW5kb2N1bWVudGVkIG9wdGlvbnMsIHNvIHRoYXQgdGhleSBzdGlsbCBkb24ndCBzaG93IHVwIHdoZW5cbiAgICAgICAqIHJ1biB0aHJvdWdoIFt1c2FnZV0gb3IgW3BhcnNlXS4gKilcbiAgICAgIGtzZFxuICB8IChrd2QsIChTeW1ib2wgXyBhcyBzcGVjKSwgbXNnKSAtPlxuICAgICAgbGV0IGN1dGNvbCA9IHNlY29uZF93b3JkIG1zZyBpblxuICAgICAgbGV0IHNwYWNlcyA9IFN0cmluZy5tYWtlICgoSW50Lm1heCAwIChsZW4gLSBjdXRjb2wpKSArIDMpICcgJyBpblxuICAgICAgKGt3ZCwgc3BlYywgXCJcXG5cIiBeIHNwYWNlcyBeIHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKVxuICB8IChrd2QsIHNwZWMsIG1zZykgLT5cbiAgICAgIGxldCBjdXRjb2wgPSBzZWNvbmRfd29yZCBtc2cgaW5cbiAgICAgIGxldCBrd2RfbGVuID0gU3RyaW5nLmxlbmd0aCBrd2QgaW5cbiAgICAgIGxldCBkaWZmID0gbGVuIC0ga3dkX2xlbiAtIGN1dGNvbCBpblxuICAgICAgaWYgZGlmZiA8PSAwIHRoZW5cbiAgICAgICAgKGt3ZCwgc3BlYywgcmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBzcGFjZXMgPSBTdHJpbmcubWFrZSBkaWZmICcgJyBpblxuICAgICAgICBsZXQgcHJlZml4ID0gU3RyaW5nLnN1YiAocmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpIDAgY3V0Y29sIGluXG4gICAgICAgIGxldCBzdWZmaXggPSBTdHJpbmcuc3ViIG1zZyBjdXRjb2wgKFN0cmluZy5sZW5ndGggbXNnIC0gY3V0Y29sKSBpblxuICAgICAgICAoa3dkLCBzcGVjLCBwcmVmaXggXiBzcGFjZXMgXiBzdWZmaXgpXG5cblxubGV0IGFsaWduID8obGltaXQ9bWF4X2ludCkgc3BlY2xpc3QgPVxuICBsZXQgY29tcGxldGVkID0gYWRkX2hlbHAgc3BlY2xpc3QgaW5cbiAgbGV0IGxlbiA9IExpc3QuZm9sZF9sZWZ0IG1heF9hcmdfbGVuIDAgY29tcGxldGVkIGluXG4gIGxldCBsZW4gPSBJbnQubWluIGxlbiBsaW1pdCBpblxuICBMaXN0Lm1hcCAoYWRkX3BhZGRpbmcgbGVuKSBjb21wbGV0ZWRcblxubGV0IHRyaW1fY3IgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgbGVuID4gMCAmJiBTdHJpbmcuZ2V0IHMgKGxlbiAtIDEpID0gJ1xccicgdGhlblxuICAgIFN0cmluZy5zdWIgcyAwIChsZW4gLSAxKVxuICBlbHNlXG4gICAgc1xuXG5sZXQgcmVhZF9hdXggdHJpbSBzZXAgZmlsZSA9XG4gIGxldCBpYyA9IG9wZW5faW5fYmluIGZpbGUgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIGxldCB3b3JkcyA9IHJlZiBbXSBpblxuICBsZXQgc3Rhc2ggKCkgPVxuICAgIGxldCB3b3JkID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIGxldCB3b3JkID0gaWYgdHJpbSB0aGVuIHRyaW1fY3Igd29yZCBlbHNlIHdvcmQgaW5cbiAgICB3b3JkcyA6PSB3b3JkIDo6ICF3b3JkcztcbiAgICBCdWZmZXIuY2xlYXIgYnVmXG4gIGluXG4gIGJlZ2luXG4gICAgdHJ5IHdoaWxlIHRydWUgZG9cbiAgICAgICAgbGV0IGMgPSBpbnB1dF9jaGFyIGljIGluXG4gICAgICAgIGlmIGMgPSBzZXAgdGhlbiBzdGFzaCAoKSBlbHNlIEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICAgICAgZG9uZVxuICAgIHdpdGggRW5kX29mX2ZpbGUgLT4gKClcbiAgZW5kO1xuICBpZiBCdWZmZXIubGVuZ3RoIGJ1ZiA+IDAgdGhlbiBzdGFzaCAoKTtcbiAgY2xvc2VfaW4gaWM7XG4gIEFycmF5Lm9mX2xpc3QgKExpc3QucmV2ICF3b3JkcylcblxubGV0IHJlYWRfYXJnID0gcmVhZF9hdXggdHJ1ZSAnXFxuJ1xuXG5sZXQgcmVhZF9hcmcwID0gcmVhZF9hdXggZmFsc2UgJ1xceDAwJ1xuXG5sZXQgd3JpdGVfYXV4IHNlcCBmaWxlIGFyZ3MgPVxuICBsZXQgb2MgPSBvcGVuX291dF9iaW4gZmlsZSBpblxuICBBcnJheS5pdGVyIChmdW4gcyAtPiBmcHJpbnRmIG9jIFwiJXMlY1wiIHMgc2VwKSBhcmdzO1xuICBjbG9zZV9vdXQgb2NcblxubGV0IHdyaXRlX2FyZyA9IHdyaXRlX2F1eCAnXFxuJ1xuXG5sZXQgd3JpdGVfYXJnMCA9IHdyaXRlX2F1eCAnXFx4MDAnXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGlkIDogJ2EgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5sZXQgY29uc3QgYyBfID0gY1xubGV0IGZsaXAgZiB4IHkgPSBmIHkgeFxubGV0IG5lZ2F0ZSBwIHYgPSBub3QgKHAgdilcblxuZXhjZXB0aW9uIEZpbmFsbHlfcmFpc2VkIG9mIGV4blxuXG5sZXQgKCkgPSBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIEBAIGZ1bmN0aW9uXG58IEZpbmFsbHlfcmFpc2VkIGV4biAtPiBTb21lIChcIkZ1bi5GaW5hbGx5X3JhaXNlZDogXCIgXiBQcmludGV4Yy50b19zdHJpbmcgZXhuKVxufCBfIC0+IE5vbmVcblxubGV0IHByb3RlY3QgfihmaW5hbGx5IDogdW5pdCAtPiB1bml0KSB3b3JrID1cbiAgbGV0IGZpbmFsbHlfbm9fZXhuICgpID1cbiAgICB0cnkgZmluYWxseSAoKSB3aXRoIGUgLT5cbiAgICAgIGxldCBidCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSAoRmluYWxseV9yYWlzZWQgZSkgYnRcbiAgaW5cbiAgbWF0Y2ggd29yayAoKSB3aXRoXG4gIHwgcmVzdWx0IC0+IGZpbmFsbHlfbm9fZXhuICgpIDsgcmVzdWx0XG4gIHwgZXhjZXB0aW9uIHdvcmtfZXhuIC0+XG4gICAgICBsZXQgd29ya19idCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBmaW5hbGx5X25vX2V4biAoKSA7XG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSB3b3JrX2V4biB3b3JrX2J0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIEphY3F1ZXMtSGVucmkgSm91cmRhbiwgcHJvamV0IEdhbGxpdW0sIElOUklBIFBhcmlzICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2LTIwMTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSAgICopXG4oKiAgICAgZXQgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc3RhdCA9IHtcbiAgbWlub3Jfd29yZHMgOiBmbG9hdDtcbiAgcHJvbW90ZWRfd29yZHMgOiBmbG9hdDtcbiAgbWFqb3Jfd29yZHMgOiBmbG9hdDtcbiAgbWlub3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIG1ham9yX2NvbGxlY3Rpb25zIDogaW50O1xuICBoZWFwX3dvcmRzIDogaW50O1xuICBoZWFwX2NodW5rcyA6IGludDtcbiAgbGl2ZV93b3JkcyA6IGludDtcbiAgbGl2ZV9ibG9ja3MgOiBpbnQ7XG4gIGZyZWVfd29yZHMgOiBpbnQ7XG4gIGZyZWVfYmxvY2tzIDogaW50O1xuICBsYXJnZXN0X2ZyZWUgOiBpbnQ7XG4gIGZyYWdtZW50cyA6IGludDtcbiAgY29tcGFjdGlvbnMgOiBpbnQ7XG4gIHRvcF9oZWFwX3dvcmRzIDogaW50O1xuICBzdGFja19zaXplIDogaW50O1xuICBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM6IGludDtcbn1cblxudHlwZSBjb250cm9sID0ge1xuICBtdXRhYmxlIG1pbm9yX2hlYXBfc2l6ZSA6IGludDtcbiAgbXV0YWJsZSBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludDtcbiAgbXV0YWJsZSBzcGFjZV9vdmVyaGVhZCA6IGludDtcbiAgbXV0YWJsZSB2ZXJib3NlIDogaW50O1xuICBtdXRhYmxlIG1heF9vdmVyaGVhZCA6IGludDtcbiAgbXV0YWJsZSBzdGFja19saW1pdCA6IGludDtcbiAgbXV0YWJsZSBhbGxvY2F0aW9uX3BvbGljeSA6IGludDtcbiAgd2luZG93X3NpemUgOiBpbnQ7XG4gIGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludDtcbiAgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnQ7XG59XG5cbmV4dGVybmFsIHN0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2Nfc3RhdFwiXG5leHRlcm5hbCBxdWlja19zdGF0IDogdW5pdCAtPiBzdGF0ID0gXCJjYW1sX2djX3F1aWNrX3N0YXRcIlxuZXh0ZXJuYWwgY291bnRlcnMgOiB1bml0IC0+IChmbG9hdCAqIGZsb2F0ICogZmxvYXQpID0gXCJjYW1sX2djX2NvdW50ZXJzXCJcbmV4dGVybmFsIG1pbm9yX3dvcmRzIDogdW5pdCAtPiAoZmxvYXQgW0B1bmJveGVkXSlcbiAgPSBcImNhbWxfZ2NfbWlub3Jfd29yZHNcIiBcImNhbWxfZ2NfbWlub3Jfd29yZHNfdW5ib3hlZFwiXG5leHRlcm5hbCBnZXQgOiB1bml0IC0+IGNvbnRyb2wgPSBcImNhbWxfZ2NfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGNvbnRyb2wgLT4gdW5pdCA9IFwiY2FtbF9nY19zZXRcIlxuZXh0ZXJuYWwgbWlub3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWlub3JcIlxuZXh0ZXJuYWwgbWFqb3Jfc2xpY2UgOiBpbnQgLT4gaW50ID0gXCJjYW1sX2djX21ham9yX3NsaWNlXCJcbmV4dGVybmFsIG1ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21ham9yXCJcbmV4dGVybmFsIGZ1bGxfbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfZnVsbF9tYWpvclwiXG5leHRlcm5hbCBjb21wYWN0IDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX2NvbXBhY3Rpb25cIlxuZXh0ZXJuYWwgZ2V0X21pbm9yX2ZyZWUgOiB1bml0IC0+IGludCA9IFwiY2FtbF9nZXRfbWlub3JfZnJlZVwiXG5leHRlcm5hbCBnZXRfYnVja2V0IDogaW50IC0+IGludCA9IFwiY2FtbF9nZXRfbWFqb3JfYnVja2V0XCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGdldF9jcmVkaXQgOiB1bml0IC0+IGludCA9IFwiY2FtbF9nZXRfbWFqb3JfY3JlZGl0XCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGh1Z2VfZmFsbGJhY2tfY291bnQgOiB1bml0IC0+IGludCA9IFwiY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50XCJcbmV4dGVybmFsIGV2ZW50bG9nX3BhdXNlIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2V2ZW50bG9nX3BhdXNlXCJcbmV4dGVybmFsIGV2ZW50bG9nX3Jlc3VtZSA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9ldmVudGxvZ19yZXN1bWVcIlxuXG5vcGVuIFByaW50ZlxuXG5sZXQgcHJpbnRfc3RhdCBjID1cbiAgbGV0IHN0ID0gc3RhdCAoKSBpblxuICBmcHJpbnRmIGMgXCJtaW5vcl9jb2xsZWN0aW9uczogICAgICAlZFxcblwiIHN0Lm1pbm9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJtYWpvcl9jb2xsZWN0aW9uczogICAgICAlZFxcblwiIHN0Lm1ham9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJjb21wYWN0aW9uczogICAgICAgICAgICAlZFxcblwiIHN0LmNvbXBhY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM6ICVkXFxuXCIgc3QuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgbGV0IGwxID0gU3RyaW5nLmxlbmd0aCAoc3ByaW50ZiBcIiUuMGZcIiBzdC5taW5vcl93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwibWlub3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWlub3Jfd29yZHM7XG4gIGZwcmludGYgYyBcInByb21vdGVkX3dvcmRzOiAlKi4wZlxcblwiIGwxIHN0LnByb21vdGVkX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJtYWpvcl93b3JkczogICAgJSouMGZcXG5cIiBsMSBzdC5tYWpvcl93b3JkcztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMiA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlZFwiIHN0LnRvcF9oZWFwX3dvcmRzKSBpblxuICBmcHJpbnRmIGMgXCJ0b3BfaGVhcF93b3JkczogJSpkXFxuXCIgbDIgc3QudG9wX2hlYXBfd29yZHM7XG4gIGZwcmludGYgYyBcImhlYXBfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsaXZlX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QubGl2ZV93b3JkcztcbiAgZnByaW50ZiBjIFwiZnJlZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmZyZWVfd29yZHM7XG4gIGZwcmludGYgYyBcImxhcmdlc3RfZnJlZTogICAlKmRcXG5cIiBsMiBzdC5sYXJnZXN0X2ZyZWU7XG4gIGZwcmludGYgYyBcImZyYWdtZW50czogICAgICAlKmRcXG5cIiBsMiBzdC5mcmFnbWVudHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBmcHJpbnRmIGMgXCJsaXZlX2Jsb2NrczogJWRcXG5cIiBzdC5saXZlX2Jsb2NrcztcbiAgZnByaW50ZiBjIFwiZnJlZV9ibG9ja3M6ICVkXFxuXCIgc3QuZnJlZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImhlYXBfY2h1bmtzOiAlZFxcblwiIHN0LmhlYXBfY2h1bmtzXG5cblxubGV0IGFsbG9jYXRlZF9ieXRlcyAoKSA9XG4gIGxldCAobWksIHBybywgbWEpID0gY291bnRlcnMgKCkgaW5cbiAgKG1pICsuIG1hIC0uIHBybykgKi4gZmxvYXRfb2ZfaW50IChTeXMud29yZF9zaXplIC8gOClcblxuXG5leHRlcm5hbCBmaW5hbGlzZSA6ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlZ2lzdGVyXCJcbmV4dGVybmFsIGZpbmFsaXNlX2xhc3QgOiAodW5pdCAtPiB1bml0KSAtPiAnYSAtPiB1bml0ID1cbiAgXCJjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXCJcbmV4dGVybmFsIGZpbmFsaXNlX3JlbGVhc2UgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZmluYWxfcmVsZWFzZVwiXG5cblxudHlwZSBhbGFybSA9IGJvb2wgcmVmXG50eXBlIGFsYXJtX3JlYyA9IHthY3RpdmUgOiBhbGFybTsgZiA6IHVuaXQgLT4gdW5pdH1cblxubGV0IHJlYyBjYWxsX2FsYXJtIGFyZWMgPVxuICBpZiAhKGFyZWMuYWN0aXZlKSB0aGVuIGJlZ2luXG4gICAgZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjO1xuICAgIGFyZWMuZiAoKTtcbiAgZW5kXG5cblxubGV0IGNyZWF0ZV9hbGFybSBmID1cbiAgbGV0IGFyZWMgPSB7IGFjdGl2ZSA9IHJlZiB0cnVlOyBmID0gZiB9IGluXG4gIGZpbmFsaXNlIGNhbGxfYWxhcm0gYXJlYztcbiAgYXJlYy5hY3RpdmVcblxuXG5sZXQgZGVsZXRlX2FsYXJtIGEgPSBhIDo9IGZhbHNlXG5cbm1vZHVsZSBNZW1wcm9mID1cbiAgc3RydWN0XG4gICAgdHlwZSBhbGxvY2F0aW9uX3NvdXJjZSA9IE5vcm1hbCB8IE1hcnNoYWwgfCBDdXN0b21cbiAgICB0eXBlIGFsbG9jYXRpb24gPVxuICAgICAgeyBuX3NhbXBsZXMgOiBpbnQ7XG4gICAgICAgIHNpemUgOiBpbnQ7XG4gICAgICAgIHNvdXJjZSA6IGFsbG9jYXRpb25fc291cmNlO1xuICAgICAgICBjYWxsc3RhY2sgOiBQcmludGV4Yy5yYXdfYmFja3RyYWNlIH1cblxuICAgIHR5cGUgKCdtaW5vciwgJ21ham9yKSB0cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3I6IGFsbG9jYXRpb24gLT4gJ21pbm9yIG9wdGlvbjtcbiAgICAgIGFsbG9jX21ham9yOiBhbGxvY2F0aW9uIC0+ICdtYWpvciBvcHRpb247XG4gICAgICBwcm9tb3RlOiAnbWlub3IgLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIGRlYWxsb2NfbWlub3I6ICdtaW5vciAtPiB1bml0O1xuICAgICAgZGVhbGxvY19tYWpvcjogJ21ham9yIC0+IHVuaXQ7XG4gICAgfVxuXG4gICAgbGV0IG51bGxfdHJhY2tlciA9IHtcbiAgICAgIGFsbG9jX21pbm9yID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBwcm9tb3RlID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgZGVhbGxvY19taW5vciA9IChmdW4gXyAtPiAoKSk7XG4gICAgICBkZWFsbG9jX21ham9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICB9XG5cbiAgICBleHRlcm5hbCBjX3N0YXJ0IDpcbiAgICAgIGZsb2F0IC0+IGludCAtPiAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgLT4gdW5pdFxuICAgICAgPSBcImNhbWxfbWVtcHJvZl9zdGFydFwiXG5cbiAgICBsZXQgc3RhcnRcbiAgICAgIH5zYW1wbGluZ19yYXRlXG4gICAgICA/KGNhbGxzdGFja19zaXplID0gbWF4X2ludClcbiAgICAgIHRyYWNrZXIgPVxuICAgICAgY19zdGFydCBzYW1wbGluZ19yYXRlIGNhbGxzdGFja19zaXplIHRyYWNrZXJcblxuICAgIGV4dGVybmFsIHN0b3AgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfbWVtcHJvZl9zdG9wXCJcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1lc3NhZ2UgZGlnZXN0IChNRDUpICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSA9IFN0cmluZy5jb21wYXJlXG5sZXQgZXF1YWwgPSBTdHJpbmcuZXF1YWxcblxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZzogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfc3RyaW5nXCJcbmV4dGVybmFsIGNoYW5uZWw6IGluX2NoYW5uZWwgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X2NoYW5cIlxuXG5sZXQgc3RyaW5nIHN0ciA9XG4gIHVuc2FmZV9zdHJpbmcgc3RyIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG5sZXQgYnl0ZXMgYiA9IHN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKVxuXG5sZXQgc3Vic3RyaW5nIHN0ciBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Quc3Vic3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfc3RyaW5nIHN0ciBvZnMgbGVuXG5cbmxldCBzdWJieXRlcyBiIG9mcyBsZW4gPSBzdWJzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYikgb2ZzIGxlblxuXG5sZXQgZmlsZSBmaWxlbmFtZSA9XG4gIGxldCBpYyA9IG9wZW5faW5fYmluIGZpbGVuYW1lIGluXG4gIG1hdGNoIGNoYW5uZWwgaWMgKC0xKSB3aXRoXG4gICAgfCBkIC0+IGNsb3NlX2luIGljOyBkXG4gICAgfCBleGNlcHRpb24gZSAtPiBjbG9zZV9pbiBpYzsgcmFpc2UgZVxuXG5sZXQgb3V0cHV0IGNoYW4gZGlnZXN0ID1cbiAgb3V0cHV0X3N0cmluZyBjaGFuIGRpZ2VzdFxuXG5sZXQgaW5wdXQgY2hhbiA9IHJlYWxseV9pbnB1dF9zdHJpbmcgY2hhbiAxNlxuXG5sZXQgY2hhcl9oZXggbiA9XG4gIENoYXIudW5zYWZlX2NociAobiArIGlmIG4gPCAxMCB0aGVuIENoYXIuY29kZSAnMCcgZWxzZSAoQ2hhci5jb2RlICdhJyAtIDEwKSlcblxubGV0IHRvX2hleCBkID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBkIDw+IDE2IHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QudG9faGV4XCI7XG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgMzIgaW5cbiAgZm9yIGkgPSAwIHRvIDE1IGRvXG4gICAgbGV0IHggPSBDaGFyLmNvZGUgZC5baV0gaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKSAoY2hhcl9oZXggKHggbHNyIDQpKTtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKzEpIChjaGFyX2hleCAoeCBsYW5kIDB4MGYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcblxubGV0IGZyb21faGV4IHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gMzIgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5mcm9tX2hleFwiO1xuICBsZXQgZGlnaXQgYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnMCcuLic5JyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCdcbiAgICB8ICdBJy4uJ0YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdBJyArIDEwXG4gICAgfCAnYScuLidmJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnYScgKyAxMFxuICAgIHwgXyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkRpZ2VzdC5mcm9tX2hleFwiKVxuICBpblxuICBsZXQgYnl0ZSBpID0gZGlnaXQgcy5baV0gbHNsIDQgKyBkaWdpdCBzLltpKzFdIGluXG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgZm9yIGkgPSAwIHRvIDE1IGRvXG4gICAgQnl0ZXMuc2V0IHJlc3VsdCBpIChDaGFyLmNociAoYnl0ZSAoMiAqIGkpKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzdWx0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEhhc2ggdGFibGVzICopXG5cbigqIFdlIGRvIGR5bmFtaWMgaGFzaGluZywgYW5kIHJlc2l6ZSB0aGUgdGFibGUgYW5kIHJlaGFzaCB0aGUgZWxlbWVudHNcbiAgIHdoZW4gYnVja2V0cyBiZWNvbWUgdG9vIGxvbmcuICopXG5cbnR5cGUgKCdhLCAnYikgdCA9XG4gIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICBtdXRhYmxlIGRhdGE6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgIHNlZWQ6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgIG11dGFibGUgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICgqIGluaXRpYWwgYXJyYXkgc2l6ZSAqKVxuICB9XG5cbmFuZCAoJ2EsICdiKSBidWNrZXRsaXN0ID1cbiAgICBFbXB0eVxuICB8IENvbnMgb2YgeyBtdXRhYmxlIGtleTogJ2E7XG4gICAgICAgICAgICAgIG11dGFibGUgZGF0YTogJ2I7XG4gICAgICAgICAgICAgIG11dGFibGUgbmV4dDogKCdhLCAnYikgYnVja2V0bGlzdCB9XG5cbigqIFRoZSBzaWduIG9mIGluaXRpYWxfc2l6ZSBlbmNvZGVzIHRoZSBmYWN0IHRoYXQgYSB0cmF2ZXJzYWwgaXNcbiAgIG9uZ29pbmcgb3Igbm90LlxuXG4gICBUaGlzIGRpc2FibGVzIHRoZSBlZmZpY2llbnQgaW4gcGxhY2UgaW1wbGVtZW50YXRpb24gb2YgcmVzaXppbmcuXG4qKVxuXG5sZXQgb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICB8fCBoLmluaXRpYWxfc2l6ZSA8IDBcblxubGV0IGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIGguaW5pdGlhbF9zaXplIDwtIC0gaC5pbml0aWFsX3NpemVcblxuKCogVG8gcGljayByYW5kb20gc2VlZHMgaWYgcmVxdWVzdGVkICopXG5cbmxldCByYW5kb21pemVkX2RlZmF1bHQgPVxuICBsZXQgcGFyYW1zID1cbiAgICB0cnkgU3lzLmdldGVudiBcIk9DQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT4gXCJcIiBpblxuICBTdHJpbmcuY29udGFpbnMgcGFyYW1zICdSJ1xuXG5sZXQgcmFuZG9taXplZCA9IHJlZiByYW5kb21pemVkX2RlZmF1bHRcblxubGV0IHJhbmRvbWl6ZSAoKSA9IHJhbmRvbWl6ZWQgOj0gdHJ1ZVxubGV0IGlzX3JhbmRvbWl6ZWQgKCkgPSAhcmFuZG9taXplZFxuXG5sZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCgpKVxuXG4oKiBGdW5jdGlvbnMgd2hpY2ggYXBwZWFyIGJlZm9yZSB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgbXVzdCBlaXRoZXIgYmVcbiAgIGluZGVwZW5kZW50IG9mIHRoZSBoYXNoIGZ1bmN0aW9uIG9yIHRha2UgaXQgYXMgYSBwYXJhbWV0ZXIgKHNlZSAjMjIwMiBhbmRcbiAgIGNvZGUgYmVsb3cgdGhlIGZ1bmN0b3IgZGVmaW5pdGlvbnMuICopXG5cbigqIENyZWF0aW5nIGEgZnJlc2gsIGVtcHR5IHRhYmxlICopXG5cbmxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICBpZiB4ID49IG4gdGhlbiB4XG4gIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG5sZXQgY3JlYXRlID8ocmFuZG9tID0gIXJhbmRvbWl6ZWQpIGluaXRpYWxfc2l6ZSA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgbGV0IHNlZWQgPSBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSBlbHNlIDAgaW5cbiAgeyBpbml0aWFsX3NpemUgPSBzOyBzaXplID0gMDsgc2VlZCA9IHNlZWQ7IGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHkgfVxuXG5sZXQgY2xlYXIgaCA9XG4gIGlmIGguc2l6ZSA+IDAgdGhlbiBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIEFycmF5LmZpbGwgaC5kYXRhIDAgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIEVtcHR5XG4gIGVuZFxuXG5sZXQgcmVzZXQgaCA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICAgIHx8IGxlbiA9IGFicyBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgY2xlYXIgaFxuICBlbHNlIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgaC5kYXRhIDwtIEFycmF5Lm1ha2UgKGFicyBoLmluaXRpYWxfc2l6ZSkgRW1wdHlcbiAgZW5kXG5cbmxldCBjb3B5X2J1Y2tldGxpc3QgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgbGV0IHJlYyBsb29wIHByZWMgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IENvbnMgcHJlYyAtPiAgcHJlYy5uZXh0IDwtIHJcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGxvb3AgciBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICBsb29wIHIgbmV4dDtcbiAgICAgIHJcblxubGV0IGNvcHkgaCA9IHsgaCB3aXRoIGRhdGEgPSBBcnJheS5tYXAgY29weV9idWNrZXRsaXN0IGguZGF0YSB9XG5cbmxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG5sZXQgaW5zZXJ0X2FsbF9idWNrZXRzIGluZGV4ZnVuIGlucGxhY2Ugb2RhdGEgbmRhdGEgPVxuICBsZXQgbnNpemUgPSBBcnJheS5sZW5ndGggbmRhdGEgaW5cbiAgbGV0IG5kYXRhX3RhaWwgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBhcyBjZWxsIC0+XG4gICAgICAgIGxldCBjZWxsID1cbiAgICAgICAgICBpZiBpbnBsYWNlIHRoZW4gY2VsbFxuICAgICAgICAgIGVsc2UgQ29ucyB7a2V5OyBkYXRhOyBuZXh0ID0gRW1wdHl9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBuaWR4ID0gaW5kZXhmdW4ga2V5IGluXG4gICAgICAgIGJlZ2luIG1hdGNoIG5kYXRhX3RhaWwuKG5pZHgpIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBuZGF0YS4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIGNlbGw7XG4gICAgICAgIGVuZDtcbiAgICAgICAgbmRhdGFfdGFpbC4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgaW5zZXJ0X2J1Y2tldCBuZXh0XG4gIGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggb2RhdGEgLSAxIGRvXG4gICAgaW5zZXJ0X2J1Y2tldCBvZGF0YS4oaSlcbiAgZG9uZTtcbiAgaWYgaW5wbGFjZSB0aGVuXG4gICAgZm9yIGkgPSAwIHRvIG5zaXplIC0gMSBkb1xuICAgICAgbWF0Y2ggbmRhdGFfdGFpbC4oaSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIEVtcHR5XG4gICAgZG9uZVxuXG5sZXQgcmVzaXplIGluZGV4ZnVuIGggPVxuICBsZXQgb2RhdGEgPSBoLmRhdGEgaW5cbiAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBsZXQgbmRhdGEgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gICAgbGV0IGlucGxhY2UgPSBub3QgKG9uZ29pbmdfdHJhdmVyc2FsIGgpIGluXG4gICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAgICAoKiBzbyB0aGF0IGluZGV4ZnVuIHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICBpbnNlcnRfYWxsX2J1Y2tldHMgKGluZGV4ZnVuIGgpIGlucGxhY2Ugb2RhdGEgbmRhdGFcbiAgZW5kXG5cbmxldCBpdGVyIGYgaCA9XG4gIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+XG4gICAgICAgICgpXG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZiBrZXkgZGF0YTsgZG9fYnVja2V0IG5leHQgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZG9fYnVja2V0IGQuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gRW1wdHlcbiAgICAgIGVuZFxuICB8IChDb25zICh7a2V5OyBkYXRhOyBuZXh0fSBhcyBjKSkgYXMgc2xvdCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZiBrZXkgZGF0YSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgbmV4dFxuICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gc2xvdFxuICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBzbG90XG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGMuZGF0YSA8LSBkYXRhO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgc2xvdCBuZXh0XG4gICAgICBlbmRcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSBmIGggPVxuICBsZXQgZCA9IGguZGF0YSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBFbXB0eSBoLmRhdGEuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGhcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCBmb2xkIGYgaCBpbml0ID1cbiAgbGV0IHJlYyBkb19idWNrZXQgYiBhY2N1ID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICAgIEVtcHR5IC0+XG4gICAgICAgIGFjY3VcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBkb19idWNrZXQgbmV4dCAoZiBrZXkgZGF0YSBhY2N1KSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBsZXQgYWNjdSA9IHJlZiBpbml0IGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgYWNjdSA6PSBkb19idWNrZXQgZC4oaSkgIWFjY3VcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICAhYWNjdVxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxudHlwZSBzdGF0aXN0aWNzID0ge1xuICBudW1fYmluZGluZ3M6IGludDtcbiAgbnVtX2J1Y2tldHM6IGludDtcbiAgbWF4X2J1Y2tldF9sZW5ndGg6IGludDtcbiAgYnVja2V0X2hpc3RvZ3JhbTogaW50IGFycmF5XG59XG5cbmxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgQ29uc3tuZXh0fSAtPiBidWNrZXRfbGVuZ3RoIChhY2N1ICsgMSkgbmV4dFxuXG5sZXQgc3RhdHMgaCA9XG4gIGxldCBtYmwgPVxuICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGggMCBiKSkgMCBoLmRhdGEgaW5cbiAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICBBcnJheS5pdGVyXG4gICAgKGZ1biBiIC0+XG4gICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICBoLmRhdGE7XG4gIHsgbnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHRibCA9XG4gICgqIGNhcHR1cmUgY3VycmVudCBhcnJheSwgc28gdGhhdCBldmVuIGlmIHRoZSB0YWJsZSBpcyByZXNpemVkIHdlXG4gICAgIGtlZXAgaXRlcmF0aW5nIG9uIHRoZSBzYW1lIGFycmF5ICopXG4gIGxldCB0YmxfZGF0YSA9IHRibC5kYXRhIGluXG4gICgqIHN0YXRlOiBpbmRleCAqIG5leHQgYnVja2V0IHRvIHRyYXZlcnNlICopXG4gIGxldCByZWMgYXV4IGkgYnVjayAoKSA9IG1hdGNoIGJ1Y2sgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0YmxfZGF0YVxuICAgICAgICB0aGVuIFNlcS5OaWxcbiAgICAgICAgZWxzZSBhdXgoaSsxKSB0YmxfZGF0YS4oaSkgKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgU2VxLkNvbnMgKChrZXksIGRhdGEpLCBhdXggaSBuZXh0KVxuICBpblxuICBhdXggMCBFbXB0eVxuXG5sZXQgdG9fc2VxX2tleXMgbSA9IFNlcS5tYXAgZnN0ICh0b19zZXEgbSlcblxubGV0IHRvX3NlcV92YWx1ZXMgbSA9IFNlcS5tYXAgc25kICh0b19zZXEgbSlcblxuKCogRnVuY3RvcmlhbCBpbnRlcmZhY2UgKilcblxubW9kdWxlIHR5cGUgSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaGFzaDogdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGhhc2g6IGludCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGU6IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHk6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQ6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQ6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGw6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGg6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlIDogP3JhbmRvbTpib29sIC0+IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZCA6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2VTZWVkZWQoSDogU2VlZGVkSGFzaGVkVHlwZSk6IChTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgdHlwZSBrZXkgPSBILnRcbiAgICB0eXBlICdhIGhhc2h0YmwgPSAoa2V5LCAnYSkgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIGhhc2h0YmxcbiAgICBsZXQgY3JlYXRlID0gY3JlYXRlXG4gICAgbGV0IGNsZWFyID0gY2xlYXJcbiAgICBsZXQgcmVzZXQgPSByZXNldFxuICAgIGxldCBjb3B5ID0gY29weVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGtleSA9XG4gICAgICAoSC5oYXNoIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuXG4gICAgbGV0IGFkZCBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbiAgICBsZXQgZmluZF9vcHQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG4gICAgbGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgICAgIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIFtdXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE9ZDsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBkIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgICAgIGVuZFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICAgICAgSC5lcXVhbCBrIGtleSB8fCBtZW1faW5fYnVja2V0IG5leHQgaW5cbiAgICAgIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG4gICAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSA9IGZpbHRlcl9tYXBfaW5wbGFjZVxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgc3RhdHMgPSBzdGF0c1xuICAgIGxldCB0b19zZXEgPSB0b19zZXFcbiAgICBsZXQgdG9fc2VxX2tleXMgPSB0b19zZXFfa2V5c1xuICAgIGxldCB0b19zZXFfdmFsdWVzID0gdG9fc2VxX3ZhbHVlc1xuICBlbmRcblxubW9kdWxlIE1ha2UoSDogSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4oKiBQb2x5bW9ycGhpYyBoYXNoIGZ1bmN0aW9uLWJhc2VkIHRhYmxlcyAqKVxuKCogQ29kZSBpbmNsdWRlZCBiZWxvdyB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgdG8gZ3VhcmQgYWdhaW5zdCBhY2NpZGVudGFsXG4gICB1c2UgLSBzZWUgIzIyMDIgKilcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5sZXQgaGFzaF9wYXJhbSBuMSBuMiB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gbjEgbjIgMCB4XG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxuXG5sZXQga2V5X2luZGV4IGgga2V5ID1cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDRcbiAgdGhlbiAoc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuICBlbHNlIGludmFsaWRfYXJnIFwiSGFzaHRibDogdW5zdXBwb3J0ZWQgaGFzaCB0YWJsZSBmb3JtYXRcIlxuXG5sZXQgYWRkIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbmxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICAoKVxuICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgIGVuZFxuICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbmxldCByZW1vdmUgaCBrZXkgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG5sZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG5sZXQgZmluZCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxubGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgTm9uZVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG5sZXQgZmluZF9vcHQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG5sZXQgZmluZF9hbGwgaCBrZXkgPVxuICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgW11cbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gZGF0YSA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbmxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbmxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gIGVuZFxuXG5sZXQgbWVtIGgga2V5ID1cbiAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgY29tcGFyZSBrIGtleSA9IDAgfHwgbWVtX2luX2J1Y2tldCBuZXh0IGluXG4gIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbmxldCBhZGRfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG5sZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gIHJlcGxhY2Vfc2VxIHRibCBpO1xuICB0YmxcblxubGV0IHJlYnVpbGQgPyhyYW5kb20gPSAhcmFuZG9taXplZCkgaCA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiAoQXJyYXkubGVuZ3RoIGguZGF0YSkgaW5cbiAgbGV0IHNlZWQgPVxuICAgIGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpXG4gICAgZWxzZSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguc2VlZFxuICAgIGVsc2UgMCBpblxuICBsZXQgaCcgPSB7XG4gICAgc2l6ZSA9IGguc2l6ZTtcbiAgICBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5O1xuICAgIHNlZWQgPSBzZWVkO1xuICAgIGluaXRpYWxfc2l6ZSA9IGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5pbml0aWFsX3NpemUgZWxzZSBzXG4gIH0gaW5cbiAgaW5zZXJ0X2FsbF9idWNrZXRzIChrZXlfaW5kZXggaCcpIGZhbHNlIGguZGF0YSBoJy5kYXRhO1xuICBoJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogV2VhayBhcnJheSBvcGVyYXRpb25zICopXG5cbnR5cGUgISdhIHRcblxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+ICdhIHQgPSBcImNhbWxfd2Vha19jcmVhdGVcIlxuXG5sZXQgY3JlYXRlIGwgPVxuICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IE9iai5FcGhlbWVyb24ubWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgaW52YWxpZF9hcmcoXCJXZWFrLmNyZWF0ZVwiKTtcbiAgY3JlYXRlIGxcblxuKCoqIG51bWJlciBvZiBhZGRpdGlvbmFsIHZhbHVlcyBpbiBhIHdlYWsgcG9pbnRlciAqKVxubGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMlxuXG5sZXQgbGVuZ3RoIHggPSBPYmouc2l6ZShPYmoucmVwciB4KSAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbmxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgaW52YWxpZF9hcmcobXNnKVxuXG5leHRlcm5hbCBzZXQnIDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuZXh0ZXJuYWwgdW5zZXQgOiAnYSB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfa2V5XCJcbmxldCBzZXQgZSBvIHggPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLnNldFwiO1xuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHVuc2V0IGUgb1xuICB8IFNvbWUgeCAtPiBzZXQnIGUgbyB4XG5cbmV4dGVybmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldFwiXG5sZXQgZ2V0IGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuZ2V0XCI7XG4gIGdldCBlIG9cblxuZXh0ZXJuYWwgZ2V0X2NvcHkgOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb24gPSBcImNhbWxfd2Vha19nZXRfY29weVwiXG5sZXQgZ2V0X2NvcHkgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRfY29weVwiO1xuICBnZXRfY29weSBlIG9cblxuZXh0ZXJuYWwgY2hlY2sgOiAnYSB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX3dlYWtfY2hlY2tcIlxubGV0IGNoZWNrIGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuY2hlY2tcIjtcbiAgY2hlY2sgZSBvXG5cbmV4dGVybmFsIGJsaXQgOiAnYSB0IC0+IGludCAtPiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF93ZWFrX2JsaXRcIlxuXG4oKiBibGl0OiBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuICopXG5sZXQgYmxpdCBlMSBvMSBlMiBvMiBsID1cbiAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICB8fCBvMiA8IDAgfHwgbzIgPiBsZW5ndGggZTIgLSBsXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXZWFrLmJsaXRcIlxuICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXQgZTEgbzEgZTIgbzIgbFxuXG5sZXQgZmlsbCBhciBvZnMgbGVuIHggPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGFyIC0gbGVuXG4gIHRoZW4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJXZWFrLmZpbGxcIilcbiAgZWxzZSBiZWdpblxuICAgIGZvciBpID0gb2ZzIHRvIChvZnMgKyBsZW4gLSAxKSBkb1xuICAgICAgc2V0IGFyIGkgeFxuICAgIGRvbmVcbiAgZW5kXG5cblxuKCoqIFdlYWsgaGFzaCB0YWJsZXMgKilcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIGRhdGFcbiAgdHlwZSB0XG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gdFxuICB2YWwgY2xlYXIgOiB0IC0+IHVuaXRcbiAgdmFsIG1lcmdlIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGFkZCA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiB0IC0+IGRhdGEgLT4gdW5pdFxuICB2YWwgZmluZCA6IHQgLT4gZGF0YSAtPiBkYXRhXG4gIHZhbCBmaW5kX29wdCA6IHQgLT4gZGF0YSAtPiBkYXRhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiB0IC0+IGRhdGEgLT4gZGF0YSBsaXN0XG4gIHZhbCBtZW0gOiB0IC0+IGRhdGEgLT4gYm9vbFxuICB2YWwgaXRlciA6IChkYXRhIC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChkYXRhIC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gIHZhbCBjb3VudCA6IHQgLT4gaW50XG4gIHZhbCBzdGF0cyA6IHQgLT4gaW50ICogaW50ICogaW50ICogaW50ICogaW50ICogaW50XG5lbmRcblxubW9kdWxlIE1ha2UgKEggOiBIYXNodGJsLkhhc2hlZFR5cGUpIDogKFMgd2l0aCB0eXBlIGRhdGEgPSBILnQpID0gc3RydWN0XG5cbiAgdHlwZSAnYSB3ZWFrX3QgPSAnYSB0XG4gIGxldCB3ZWFrX2NyZWF0ZSA9IGNyZWF0ZVxuICBsZXQgZW1wdHlidWNrZXQgPSB3ZWFrX2NyZWF0ZSAwXG5cbiAgdHlwZSBkYXRhID0gSC50XG5cbiAgdHlwZSB0ID0ge1xuICAgIG11dGFibGUgdGFibGUgOiBkYXRhIHdlYWtfdCBhcnJheTtcbiAgICBtdXRhYmxlIGhhc2hlcyA6IGludCBhcnJheSBhcnJheTtcbiAgICBtdXRhYmxlIGxpbWl0IDogaW50OyAgICAgICAgICAgICAgICgqIGJ1Y2tldCBzaXplIGxpbWl0ICopXG4gICAgbXV0YWJsZSBvdmVyc2l6ZSA6IGludDsgICAgICAgICAgICAoKiBudW1iZXIgb2Ygb3ZlcnNpemUgYnVja2V0cyAqKVxuICAgIG11dGFibGUgcm92ZXIgOiBpbnQ7ICAgICAgICAgICAgICAgKCogZm9yIGludGVybmFsIGJvb2trZWVwaW5nICopXG4gIH1cblxuICBsZXQgZ2V0X2luZGV4IHQgaCA9IChoIGxhbmQgbWF4X2ludCkgbW9kIChBcnJheS5sZW5ndGggdC50YWJsZSlcblxuICBsZXQgbGltaXQgPSA3XG4gIGxldCBvdmVyX2xpbWl0ID0gMlxuXG4gIGxldCBjcmVhdGUgc3ogPVxuICAgIGxldCBzeiA9IGlmIHN6IDwgNyB0aGVuIDcgZWxzZSBzeiBpblxuICAgIGxldCBzeiA9IGlmIHN6ID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBTeXMubWF4X2FycmF5X2xlbmd0aCBlbHNlIHN6IGluXG4gICAge1xuICAgICAgdGFibGUgPSBBcnJheS5tYWtlIHN6IGVtcHR5YnVja2V0O1xuICAgICAgaGFzaGVzID0gQXJyYXkubWFrZSBzeiBbfCB8XTtcbiAgICAgIGxpbWl0ID0gbGltaXQ7XG4gICAgICBvdmVyc2l6ZSA9IDA7XG4gICAgICByb3ZlciA9IDA7XG4gICAgfVxuXG4gIGxldCBjbGVhciB0ID1cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxIGRvXG4gICAgICB0LnRhYmxlLihpKSA8LSBlbXB0eWJ1Y2tldDtcbiAgICAgIHQuaGFzaGVzLihpKSA8LSBbfCB8XTtcbiAgICBkb25lO1xuICAgIHQubGltaXQgPC0gbGltaXQ7XG4gICAgdC5vdmVyc2l6ZSA8LSAwXG5cblxuICBsZXQgZm9sZCBmIHQgaW5pdCA9XG4gICAgbGV0IHJlYyBmb2xkX2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gYWNjdSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGZvbGRfYnVja2V0IChpKzEpIGIgKGYgdiBhY2N1KVxuICAgICAgfCBOb25lIC0+IGZvbGRfYnVja2V0IChpKzEpIGIgYWNjdVxuICAgIGluXG4gICAgQXJyYXkuZm9sZF9yaWdodCAoZm9sZF9idWNrZXQgMCkgdC50YWJsZSBpbml0XG5cblxuICBsZXQgaXRlciBmIHQgPVxuICAgIGxldCByZWMgaXRlcl9idWNrZXQgaSBiID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiAoKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGYgdjsgaXRlcl9idWNrZXQgKGkrMSkgYlxuICAgICAgfCBOb25lIC0+IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXIgKGl0ZXJfYnVja2V0IDApIHQudGFibGVcblxuXG4gIGxldCBpdGVyX3dlYWsgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgaiBiID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiAoKSBlbHNlXG4gICAgICBtYXRjaCBjaGVjayBiIGkgd2l0aFxuICAgICAgfCB0cnVlIC0+IGYgYiB0Lmhhc2hlcy4oaikgaTsgaXRlcl9idWNrZXQgKGkrMSkgaiBiXG4gICAgICB8IGZhbHNlIC0+IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgIGluXG4gICAgQXJyYXkuaXRlcmkgKGl0ZXJfYnVja2V0IDApIHQudGFibGVcblxuXG4gIGxldCByZWMgY291bnRfYnVja2V0IGkgYiBhY2N1ID1cbiAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gYWNjdSBlbHNlXG4gICAgY291bnRfYnVja2V0IChpKzEpIGIgKGFjY3UgKyAoaWYgY2hlY2sgYiBpIHRoZW4gMSBlbHNlIDApKVxuXG5cbiAgbGV0IGNvdW50IHQgPVxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGNvdW50X2J1Y2tldCAwKSB0LnRhYmxlIDBcblxuXG4gIGxldCBuZXh0X3N6IG4gPSBJbnQubWluICgzICogbiAvIDIgKyAzKSBTeXMubWF4X2FycmF5X2xlbmd0aFxuICBsZXQgcHJldl9zeiBuID0gKChuIC0gMykgKiAyICsgMikgLyAzXG5cbiAgbGV0IHRlc3Rfc2hyaW5rX2J1Y2tldCB0ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4odC5yb3ZlcikgaW5cbiAgICBsZXQgaGJ1Y2tldCA9IHQuaGFzaGVzLih0LnJvdmVyKSBpblxuICAgIGxldCBsZW4gPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHByZXZfbGVuID0gcHJldl9zeiBsZW4gaW5cbiAgICBsZXQgbGl2ZSA9IGNvdW50X2J1Y2tldCAwIGJ1Y2tldCAwIGluXG4gICAgaWYgbGl2ZSA8PSBwcmV2X2xlbiB0aGVuIGJlZ2luXG4gICAgICBsZXQgcmVjIGxvb3AgaSBqID1cbiAgICAgICAgaWYgaiA+PSBwcmV2X2xlbiB0aGVuIGJlZ2luXG4gICAgICAgICAgaWYgY2hlY2sgYnVja2V0IGkgdGhlbiBsb29wIChpICsgMSkgalxuICAgICAgICAgIGVsc2UgaWYgY2hlY2sgYnVja2V0IGogdGhlbiBiZWdpblxuICAgICAgICAgICAgYmxpdCBidWNrZXQgaiBidWNrZXQgaSAxO1xuICAgICAgICAgICAgaGJ1Y2tldC4oaSkgPC0gaGJ1Y2tldC4oaik7XG4gICAgICAgICAgICBsb29wIChpICsgMSkgKGogLSAxKTtcbiAgICAgICAgICBlbmQgZWxzZSBsb29wIGkgKGogLSAxKTtcbiAgICAgICAgZW5kO1xuICAgICAgaW5cbiAgICAgIGxvb3AgMCAobGVuZ3RoIGJ1Y2tldCAtIDEpO1xuICAgICAgaWYgcHJldl9sZW4gPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gZW1wdHlidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLih0LnJvdmVyKSA8LSBbfCB8XTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBwcmV2X2xlbiBpblxuICAgICAgICBibGl0IGJ1Y2tldCAwIG5ld2J1Y2tldCAwIHByZXZfbGVuO1xuICAgICAgICB0LnRhYmxlLih0LnJvdmVyKSA8LSBuZXdidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLih0LnJvdmVyKSA8LSBBcnJheS5zdWIgaGJ1Y2tldCAwIHByZXZfbGVuXG4gICAgICBlbmQ7XG4gICAgICBpZiBsZW4gPiB0LmxpbWl0ICYmIHByZXZfbGVuIDw9IHQubGltaXQgdGhlbiB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgLSAxO1xuICAgIGVuZDtcbiAgICB0LnJvdmVyIDwtICh0LnJvdmVyICsgMSkgbW9kIChBcnJheS5sZW5ndGggdC50YWJsZSlcblxuXG4gIGxldCByZWMgcmVzaXplIHQgPVxuICAgIGxldCBvbGRsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBuZXdsZW4gPSBuZXh0X3N6IG9sZGxlbiBpblxuICAgIGlmIG5ld2xlbiA+IG9sZGxlbiB0aGVuIGJlZ2luXG4gICAgICBsZXQgbmV3dCA9IGNyZWF0ZSBuZXdsZW4gaW5cbiAgICAgIGxldCBhZGRfd2VhayBvYiBvaCBvaSA9XG4gICAgICAgIGxldCBzZXR0ZXIgbmIgbmkgXyA9IGJsaXQgb2Igb2kgbmIgbmkgMSBpblxuICAgICAgICBsZXQgaCA9IG9oLihvaSkgaW5cbiAgICAgICAgYWRkX2F1eCBuZXd0IHNldHRlciBOb25lIGggKGdldF9pbmRleCBuZXd0IGgpO1xuICAgICAgaW5cbiAgICAgIGl0ZXJfd2VhayBhZGRfd2VhayB0O1xuICAgICAgdC50YWJsZSA8LSBuZXd0LnRhYmxlO1xuICAgICAgdC5oYXNoZXMgPC0gbmV3dC5oYXNoZXM7XG4gICAgICB0LmxpbWl0IDwtIG5ld3QubGltaXQ7XG4gICAgICB0Lm92ZXJzaXplIDwtIG5ld3Qub3ZlcnNpemU7XG4gICAgICB0LnJvdmVyIDwtIHQucm92ZXIgbW9kIEFycmF5Lmxlbmd0aCBuZXd0LnRhYmxlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICB0LmxpbWl0IDwtIG1heF9pbnQ7ICAgICAgICAgICAgICgqIG1heGltdW0gc2l6ZSBhbHJlYWR5IHJlYWNoZWQgKilcbiAgICAgIHQub3ZlcnNpemUgPC0gMDtcbiAgICBlbmRcblxuICBhbmQgYWRkX2F1eCB0IHNldHRlciBkIGggaW5kZXggPVxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5ld3N6ID1cbiAgICAgICAgICBJbnQubWluICgzICogc3ogLyAyICsgMykgKFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC0gYWRkaXRpb25hbF92YWx1ZXMpXG4gICAgICAgIGluXG4gICAgICAgIGlmIG5ld3N6IDw9IHN6IHRoZW4gZmFpbHdpdGggXCJXZWFrLk1ha2U6IGhhc2ggYnVja2V0IGNhbm5vdCBncm93IG1vcmVcIjtcbiAgICAgICAgbGV0IG5ld2J1Y2tldCA9IHdlYWtfY3JlYXRlIG5ld3N6IGluXG4gICAgICAgIGxldCBuZXdoYXNoZXMgPSBBcnJheS5tYWtlIG5ld3N6IDAgaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBzejtcbiAgICAgICAgQXJyYXkuYmxpdCBoYXNoZXMgMCBuZXdoYXNoZXMgMCBzejtcbiAgICAgICAgc2V0dGVyIG5ld2J1Y2tldCBzeiBkO1xuICAgICAgICBuZXdoYXNoZXMuKHN6KSA8LSBoO1xuICAgICAgICB0LnRhYmxlLihpbmRleCkgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4oaW5kZXgpIDwtIG5ld2hhc2hlcztcbiAgICAgICAgaWYgc3ogPD0gdC5saW1pdCAmJiBuZXdzeiA+IHQubGltaXQgdGhlbiBiZWdpblxuICAgICAgICAgIHQub3ZlcnNpemUgPC0gdC5vdmVyc2l6ZSArIDE7XG4gICAgICAgICAgZm9yIF9pID0gMCB0byBvdmVyX2xpbWl0IGRvIHRlc3Rfc2hyaW5rX2J1Y2tldCB0IGRvbmU7XG4gICAgICAgIGVuZDtcbiAgICAgICAgaWYgdC5vdmVyc2l6ZSA+IEFycmF5Lmxlbmd0aCB0LnRhYmxlIC8gb3Zlcl9saW1pdCB0aGVuIHJlc2l6ZSB0O1xuICAgICAgZW5kIGVsc2UgaWYgY2hlY2sgYnVja2V0IGkgdGhlbiBiZWdpblxuICAgICAgICBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldHRlciBidWNrZXQgaSBkO1xuICAgICAgICBoYXNoZXMuKGkpIDwtIGg7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBhZGQgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgYWRkX2F1eCB0IHNldCAoU29tZSBkKSBoIChnZXRfaW5kZXggdCBoKVxuXG5cbiAgbGV0IGZpbmRfb3IgdCBkIGlmbm90Zm91bmQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBpZm5vdGZvdW5kIGggaW5kZXhcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IG1lcmdlIHQgZCA9XG4gICAgZmluZF9vciB0IGQgKGZ1biBoIGluZGV4IC0+IGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCBpbmRleDsgZClcblxuXG4gIGxldCBmaW5kIHQgZCA9IGZpbmRfb3IgdCBkIChmdW4gX2ggX2luZGV4IC0+IHJhaXNlIE5vdF9mb3VuZClcblxuICBsZXQgZmluZF9vcHQgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gTm9uZVxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgXyBhcyB2IC0+IHZcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBmaW5kX3NoYWRvdyB0IGQgaWZmb3VuZCBpZm5vdGZvdW5kID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gaWZub3Rmb3VuZFxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZCAtPiBpZmZvdW5kIGJ1Y2tldCBpXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgcmVtb3ZlIHQgZCA9IGZpbmRfc2hhZG93IHQgZCAoZnVuIHcgaSAtPiBzZXQgdyBpIE5vbmUpICgpXG5cblxuICBsZXQgbWVtIHQgZCA9IGZpbmRfc2hhZG93IHQgZCAoZnVuIF93IF9pIC0+IHRydWUpIGZhbHNlXG5cblxuICBsZXQgZmluZF9hbGwgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSBhY2N1ID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBhY2N1XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IGxvb3AgKGkgKyAxKSAodiA6OiBhY2N1KVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpIGFjY3VcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSkgYWNjdVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpIGFjY3VcbiAgICBpblxuICAgIGxvb3AgMCBbXVxuXG5cbiAgbGV0IHN0YXRzIHQgPVxuICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBsZW5zID0gQXJyYXkubWFwIGxlbmd0aCB0LnRhYmxlIGluXG4gICAgQXJyYXkuc29ydCBjb21wYXJlIGxlbnM7XG4gICAgbGV0IHRvdGxlbiA9IEFycmF5LmZvbGRfbGVmdCAoICsgKSAwIGxlbnMgaW5cbiAgICAobGVuLCBjb3VudCB0LCB0b3RsZW4sIGxlbnMuKDApLCBsZW5zLihsZW4vMiksIGxlbnMuKGxlbi0xKSlcblxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQSBwcmV0dHktcHJpbnRpbmcgZmFjaWxpdHkgYW5kIGRlZmluaXRpb24gb2YgZm9ybWF0dGVycyBmb3IgJ3BhcmFsbGVsJ1xuICAgKGkuZS4gdW5yZWxhdGVkIG9yIGluZGVwZW5kZW50KSBwcmV0dHktcHJpbnRpbmcgb24gbXVsdGlwbGUgb3V0IGNoYW5uZWxzLiAqKVxuXG4oKlxuICAgVGhlIHByZXR0eS1wcmludGluZyBlbmdpbmUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzLlxuKilcblxubGV0IGlkIHggPSB4XG5cbigqIEEgZGV2b3RlZCB0eXBlIGZvciBzaXplcyB0byBhdm9pZCBjb25mdXNpb25cbiAgIGJldHdlZW4gc2l6ZXMgYW5kIG1lcmUgaW50ZWdlcnMuICopXG5tb2R1bGUgU2l6ZSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgdW5rbm93biA6IHRcbiAgdmFsIGlzX2tub3duIDogdCAtPiBib29sXG5lbmQgID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCB0b19pbnQgPSBpZFxuICBsZXQgb2ZfaW50ID0gaWRcbiAgbGV0IHplcm8gPSAwXG4gIGxldCB1bmtub3duID0gLTFcbiAgbGV0IGlzX2tub3duIG4gPSBuID49IDBcbmVuZFxuXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyBib3hlcyBkZWZpbml0aW9uOlxuICAgYSBwcmV0dHktcHJpbnRpbmcgYm94IGlzIGVpdGhlclxuICAgLSBoYm94OiBob3Jpem9udGFsIGJveCAobm8gbGluZSBzcGxpdHRpbmcpXG4gICAtIHZib3g6IHZlcnRpY2FsIGJveCAoZXZlcnkgYnJlYWsgaGludCBzcGxpdHMgdGhlIGxpbmUpXG4gICAtIGh2Ym94OiBob3Jpem9udGFsL3ZlcnRpY2FsIGJveFxuICAgICAodGhlIGJveCBiZWhhdmVzIGFzIGFuIGhvcml6b250YWwgYm94IGlmIGl0IGZpdHMgb25cbiAgICAgIHRoZSBjdXJyZW50IGxpbmUsIG90aGVyd2lzZSB0aGUgYm94IGJlaGF2ZXMgYXMgYSB2ZXJ0aWNhbCBib3gpXG4gICAtIGhvdmJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveFxuICAgICAodGhlIGJveCBpcyBjb21wYWN0aW5nIG1hdGVyaWFsLCBwcmludGluZyBhcyBtdWNoIG1hdGVyaWFsIGFzIHBvc3NpYmxlXG4gICAgICBvbiBldmVyeSBsaW5lcylcbiAgIC0gYm94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94IHdpdGggZW5oYW5jZWQgYm94IHN0cnVjdHVyZVxuICAgICAodGhlIGJveCBiZWhhdmVzIGFzIGFuIGhvcml6b250YWwgb3IgdmVydGljYWwgYm94IGJ1dCBicmVhayBoaW50cyBzcGxpdFxuICAgICAgdGhlIGxpbmUgaWYgc3BsaXR0aW5nIHdvdWxkIG1vdmUgdG8gdGhlIGxlZnQpXG4qKVxudHlwZSBib3hfdHlwZSA9IENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5ibG9ja190eXBlID1cbiAgfCBQcF9oYm94IHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IHwgUHBfZml0c1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgdG9rZW5zIGRlZmluaXRpb246XG4gICBhcmUgZWl0aGVyIHRleHQgdG8gcHJpbnQgb3IgcHJldHR5IHByaW50aW5nXG4gICBlbGVtZW50cyB0aGF0IGRyaXZlIGluZGVudGF0aW9uIGFuZCBsaW5lIHNwbGl0dGluZy4gKilcbnR5cGUgcHBfdG9rZW4gPVxuICB8IFBwX3RleHQgb2Ygc3RyaW5nICAgICAgICAgICgqIG5vcm1hbCB0ZXh0ICopXG4gIHwgUHBfYnJlYWsgb2YgeyAgICAgICAgICAgICAgKCogY29tcGxldGUgYnJlYWsgKilcbiAgICAgIGZpdHM6IHN0cmluZyAqIGludCAqIHN0cmluZzsgICAoKiBsaW5lIGlzIG5vdCBzcGxpdCAqKVxuICAgICAgYnJlYWtzOiBzdHJpbmcgKiBpbnQgKiBzdHJpbmc7ICgqIGxpbmUgaXMgc3BsaXQgKilcbiAgICB9XG4gIHwgUHBfdGJyZWFrIG9mIGludCAqIGludCAgICAgKCogZ28gdG8gbmV4dCB0YWJ1bGF0aW9uICopXG4gIHwgUHBfc3RhYiAgICAgICAgICAgICAgICAgICAgKCogc2V0IGEgdGFidWxhdGlvbiAqKVxuICB8IFBwX2JlZ2luIG9mIGludCAqIGJveF90eXBlICgqIGJlZ2lubmluZyBvZiBhIGJveCAqKVxuICB8IFBwX2VuZCAgICAgICAgICAgICAgICAgICAgICgqIGVuZCBvZiBhIGJveCAqKVxuICB8IFBwX3RiZWdpbiBvZiB0Ym94ICAgICAgICAgICgqIGJlZ2lubmluZyBvZiBhIHRhYnVsYXRpb24gYm94ICopXG4gIHwgUHBfdGVuZCAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF9uZXdsaW5lICAgICAgICAgICAgICAgICAoKiB0byBmb3JjZSBhIG5ld2xpbmUgaW5zaWRlIGEgYm94ICopXG4gIHwgUHBfaWZfbmV3bGluZSAgICAgICAgICAgICAgKCogdG8gZG8gc29tZXRoaW5nIG9ubHkgaWYgdGhpcyB2ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSBoYXMgYmVlbiBicm9rZW4gKilcbiAgfCBQcF9vcGVuX3RhZyBvZiBzdGFnICAgICAgICAgKCogb3BlbmluZyBhIHRhZyBuYW1lICopXG4gIHwgUHBfY2xvc2VfdGFnICAgICAgICAgICAgICAgKCogY2xvc2luZyB0aGUgbW9zdCByZWNlbnRseSBvcGVuIHRhZyAqKVxuXG5hbmQgc3RhZyA9IC4uXG5cbmFuZCB0Ym94ID0gUHBfdGJveCBvZiBpbnQgbGlzdCByZWYgICgqIFRhYnVsYXRpb24gYm94ICopXG5cbnR5cGUgdGFnID0gc3RyaW5nXG50eXBlIHN0YWcgKz0gU3RyaW5nX3RhZyBvZiB0YWdcblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWU6XG4gICBwcmV0dHktcHJpbnRpbmcgbWF0ZXJpYWwgaXMgbm90IHdyaXR0ZW4gaW4gdGhlIG91dHB1dCBhcyBzb29uIGFzIGVtaXR0ZWQ7XG4gICBpbnN0ZWFkLCB0aGUgbWF0ZXJpYWwgaXMgc2ltcGx5IHJlY29yZGVkIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSxcbiAgIHVudGlsIHRoZSBlbmNsb3NpbmcgYm94IGhhcyBhIGtub3duIGNvbXB1dGVkIHNpemUgYW5kIHByb3BlciBzcGxpdHRpbmdcbiAgIGRlY2lzaW9ucyBjYW4gYmUgbWFkZS5cblxuICAgVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGNvbnRhaW5zIGZvcm1hdHRpbmcgZWxlbWVudHMgdG8gYmUgcHJpbnRlZC5cbiAgIEVhY2ggZm9ybWF0dGluZyBlbGVtZW50IGlzIGEgdHVwbGUgKHNpemUsIHRva2VuLCBsZW5ndGgpLCB3aGVyZVxuICAgLSBsZW5ndGggaXMgdGhlIGRlY2xhcmVkIGxlbmd0aCBvZiB0aGUgdG9rZW4sXG4gICAtIHNpemUgaXMgZWZmZWN0aXZlIHNpemUgb2YgdGhlIHRva2VuIHdoZW4gaXQgaXMgcHJpbnRlZFxuICAgICAoc2l6ZSBpcyBzZXQgd2hlbiB0aGUgc2l6ZSBvZiB0aGUgYm94IGlzIGtub3duLCBzbyB0aGF0IHNpemUgb2YgYnJlYWtcbiAgICAgIGhpbnRzIGFyZSBkZWZpbml0aXZlKS4gKilcbnR5cGUgcHBfcXVldWVfZWxlbSA9IHtcbiAgbXV0YWJsZSBzaXplIDogU2l6ZS50O1xuICB0b2tlbiA6IHBwX3Rva2VuO1xuICBsZW5ndGggOiBpbnQ7XG59XG5cblxuKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGRlZmluaXRpb24uICopXG50eXBlIHBwX3F1ZXVlID0gcHBfcXVldWVfZWxlbSBRdWV1ZS50XG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay4gKilcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrOiBzY2FubmluZyBlbGVtZW50IGRlZmluaXRpb24uICopXG50eXBlIHBwX3NjYW5fZWxlbSA9IHtcbiAgbGVmdF90b3RhbCA6IGludDsgKCogVmFsdWUgb2YgcHBfbGVmdF90b3RhbCB3aGVuIHRoZSBlbGVtZW50IHdhcyBlbnF1ZXVlZC4gKilcbiAgcXVldWVfZWxlbSA6IHBwX3F1ZXVlX2VsZW1cbn1cblxuKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2s6XG4gICB0aGUgZm9ybWF0dGluZyBzdGFjayBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgYWxsIHRoZSBjdXJyZW50bHkgYWN0aXZlXG4gICBib3hlczsgdGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2sgaXMgdXNlZCB0byBzcGxpdCB0aGUgbGluZXNcbiAgIHdoaWxlIHByaW50aW5nIHRva2Vucy4gKilcblxuKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2s6IGZvcm1hdHRpbmcgc3RhY2sgZWxlbWVudCBkZWZpbml0aW9uLlxuICAgRWFjaCBzdGFjayBlbGVtZW50IGRlc2NyaWJlcyBhIHByZXR0eS1wcmludGluZyBib3guICopXG50eXBlIHBwX2Zvcm1hdF9lbGVtID0geyBib3hfdHlwZSA6IGJveF90eXBlOyB3aWR0aCA6IGludCB9XG5cbigqIFRoZSBmb3JtYXR0ZXIgZGVmaW5pdGlvbi5cbiAgIEVhY2ggZm9ybWF0dGVyIHZhbHVlIGlzIGEgcHJldHR5LXByaW50ZXIgaW5zdGFuY2Ugd2l0aCBhbGwgaXRzXG4gICBtYWNoaW5lcnkuICopXG50eXBlIGZvcm1hdHRlciA9IHtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuICBwcF9zY2FuX3N0YWNrIDogcHBfc2Nhbl9lbGVtIFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrLiAqKVxuICBwcF9mb3JtYXRfc3RhY2sgOiBwcF9mb3JtYXRfZWxlbSBTdGFjay50O1xuICBwcF90Ym94X3N0YWNrIDogdGJveCBTdGFjay50O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2VtYW50aWNzIHRhZyBzdGFjay4gKilcbiAgcHBfdGFnX3N0YWNrIDogc3RhZyBTdGFjay50O1xuICBwcF9tYXJrX3N0YWNrIDogc3RhZyBTdGFjay50O1xuICAoKiBWYWx1ZSBvZiByaWdodCBtYXJnaW4uICopXG4gIG11dGFibGUgcHBfbWFyZ2luIDogaW50O1xuICAoKiBNaW5pbWFsIHNwYWNlIGxlZnQgYmVmb3JlIG1hcmdpbiwgd2hlbiBvcGVuaW5nIGEgYm94LiAqKVxuICBtdXRhYmxlIHBwX21pbl9zcGFjZV9sZWZ0IDogaW50O1xuICAoKiBNYXhpbXVtIHZhbHVlIG9mIGluZGVudGF0aW9uOlxuICAgICBubyBib3ggY2FuIGJlIG9wZW5lZCBmdXJ0aGVyLiAqKVxuICBtdXRhYmxlIHBwX21heF9pbmRlbnQgOiBpbnQ7XG4gICgqIFNwYWNlIHJlbWFpbmluZyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxuICBtdXRhYmxlIHBwX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIEN1cnJlbnQgdmFsdWUgb2YgaW5kZW50YXRpb24uICopXG4gIG11dGFibGUgcHBfY3VycmVudF9pbmRlbnQgOiBpbnQ7XG4gICgqIFRydWUgd2hlbiB0aGUgbGluZSBoYXMgYmVlbiBicm9rZW4gYnkgdGhlIHByZXR0eS1wcmludGVyLiAqKVxuICBtdXRhYmxlIHBwX2lzX25ld19saW5lIDogYm9vbDtcbiAgKCogVG90YWwgd2lkdGggb2YgdG9rZW5zIGFscmVhZHkgcHJpbnRlZC4gKilcbiAgbXV0YWJsZSBwcF9sZWZ0X3RvdGFsIDogaW50O1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgZXZlciBwdXQgaW4gcXVldWUuICopXG4gIG11dGFibGUgcHBfcmlnaHRfdG90YWwgOiBpbnQ7XG4gICgqIEN1cnJlbnQgbnVtYmVyIG9mIG9wZW4gYm94ZXMuICopXG4gIG11dGFibGUgcHBfY3Vycl9kZXB0aCA6IGludDtcbiAgKCogTWF4aW11bSBudW1iZXIgb2YgYm94ZXMgd2hpY2ggY2FuIGJlIHNpbXVsdGFuZW91c2x5IG9wZW4uICopXG4gIG11dGFibGUgcHBfbWF4X2JveGVzIDogaW50O1xuICAoKiBFbGxpcHNpcyBzdHJpbmcuICopXG4gIG11dGFibGUgcHBfZWxsaXBzaXMgOiBzdHJpbmc7XG4gICgqIE91dHB1dCBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgKCogRmx1c2hpbmcgZnVuY3Rpb24uICopXG4gIG11dGFibGUgcHBfb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9uZXdsaW5lIDogdW5pdCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgYnJlYWsgaGludHMgc3BhY2VzLiAqKVxuICBtdXRhYmxlIHBwX291dF9zcGFjZXMgOiBpbnQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG4gICgqIEFyZSB0YWdzIHByaW50ZWQgPyAqKVxuICBtdXRhYmxlIHBwX3ByaW50X3RhZ3MgOiBib29sO1xuICAoKiBBcmUgdGFncyBtYXJrZWQgPyAqKVxuICBtdXRhYmxlIHBwX21hcmtfdGFncyA6IGJvb2w7XG4gICgqIEZpbmQgb3BlbmluZyBhbmQgY2xvc2luZyBtYXJrZXJzIG9mIHRhZ3MuICopXG4gIG11dGFibGUgcHBfbWFya19vcGVuX3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtdXRhYmxlIHBwX21hcmtfY2xvc2VfdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfcHJpbnRfb3Blbl90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gIG11dGFibGUgcHBfcHJpbnRfY2xvc2VfdGFnIDogc3RhZyAtPiB1bml0O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG4gIHBwX3F1ZXVlIDogcHBfcXVldWU7XG59XG5cblxuKCogVGhlIGZvcm1hdHRlciBzcGVjaWZpYyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zLiAqKVxudHlwZSBmb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPSB7XG4gIG1hcmtfb3Blbl9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBwcmludF9vcGVuX3N0YWcgOiBzdGFnIC0+IHVuaXQ7XG4gIHByaW50X2Nsb3NlX3N0YWcgOiBzdGFnIC0+IHVuaXQ7XG59XG5cblxuKCogVGhlIGZvcm1hdHRlciBmdW5jdGlvbnMgdG8gb3V0cHV0IG1hdGVyaWFsLiAqKVxudHlwZSBmb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9IHtcbiAgb3V0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQ7XG4gIG91dF9mbHVzaCA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gIG91dF9zcGFjZXMgOiBpbnQgLT4gdW5pdDtcbiAgb3V0X2luZGVudCA6IGludCAtPiB1bml0O1xufVxuXG5cbigqXG5cbiAgQXV4aWxpYXJpZXMgYW5kIGJhc2ljIGZ1bmN0aW9ucy5cblxuKilcblxuKCogRW50ZXIgYSB0b2tlbiBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG5sZXQgcHBfZW5xdWV1ZSBzdGF0ZSB0b2tlbiA9XG4gIHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgdG9rZW4ubGVuZ3RoO1xuICBRdWV1ZS5hZGQgdG9rZW4gc3RhdGUucHBfcXVldWVcblxuXG5sZXQgcHBfY2xlYXJfcXVldWUgc3RhdGUgPVxuICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIDE7IHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIDE7XG4gIFF1ZXVlLmNsZWFyIHN0YXRlLnBwX3F1ZXVlXG5cblxuKCogUHBfaW5maW5pdHk6IGxhcmdlIHZhbHVlIGZvciBkZWZhdWx0IHRva2VucyBzaXplLlxuXG4gICBQcF9pbmZpbml0eSBpcyBkb2N1bWVudGVkIGFzIGJlaW5nIGdyZWF0ZXIgdGhhbiAxZTEwOyB0byBhdm9pZFxuICAgY29uZnVzaW9uIGFib3V0IHRoZSB3b3JkICdncmVhdGVyJywgd2UgY2hvb3NlIHBwX2luZmluaXR5IGdyZWF0ZXJcbiAgIHRoYW4gMWUxMCArIDE7IGZvciBjb3JyZWN0IGhhbmRsaW5nIG9mIHRlc3RzIGluIHRoZSBhbGdvcml0aG0sXG4gICBwcF9pbmZpbml0eSBtdXN0IGJlIGV2ZW4gb25lIG1vcmUgdGhhbiAxZTEwICsgMTsgbGV0J3Mgc3RhbmQgb24gdGhlXG4gICBzYWZlIHNpZGUgYnkgY2hvb3NpbmcgMS5lMTArMTAuXG5cbiAgIFBwX2luZmluaXR5IGNvdWxkIHByb2JhYmx5IGJlIDEwNzM3NDE4MjMgdGhhdCBpcyAyXjMwIC0gMSwgdGhhdCBpc1xuICAgdGhlIG1pbmltYWwgdXBwZXIgYm91bmQgZm9yIGludGVnZXJzOyBub3cgdGhhdCBtYXhfaW50IGlzIGRlZmluZWQsXG4gICB0aGlzIGxpbWl0IGNvdWxkIGFsc28gYmUgZGVmaW5lZCBhcyBtYXhfaW50IC0gMS5cblxuICAgSG93ZXZlciwgYmVmb3JlIHNldHRpbmcgcHBfaW5maW5pdHkgdG8gc29tZXRoaW5nIGFyb3VuZCBtYXhfaW50LCB3ZVxuICAgbXVzdCBjYXJlZnVsbHkgZG91YmxlLWNoZWNrIGFsbCB0aGUgaW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbnNcbiAgIHRoYXQgaW52b2x2ZSBwcF9pbmZpbml0eSwgc2luY2UgYW55IG92ZXJmbG93IHdvdWxkIHdyZWNrIGhhdm9jIHRoZVxuICAgcHJldHR5LXByaW50aW5nIGFsZ29yaXRobSdzIGludmFyaWFudHMuIEdpdmVuIHRoYXQgdGhpcyBhcml0aG1ldGljXG4gICBjb3JyZWN0bmVzcyBjaGVjayBpcyBkaWZmaWN1bHQgYW5kIGVycm9yIHByb25lIGFuZCBnaXZlbiB0aGF0IDFlMTBcbiAgICsgMSBpcyBpbiBwcmFjdGljZSBsYXJnZSBlbm91Z2gsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYXR0ZW1wdCB0byBzZXRcbiAgIHBwX2luZmluaXR5IHRvIHRoZSB0aGVvcmV0aWNhbGx5IG1heGltdW0gbGltaXQuIEl0IGlzIG5vdCB3b3J0aCB0aGVcbiAgIGJ1cmRlbiAhICopXG5sZXQgcHBfaW5maW5pdHkgPSAxMDAwMDAwMDEwXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgZm9yIHRoZSBmb3JtYXR0ZXIuICopXG5sZXQgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBzID0gc3RhdGUucHBfb3V0X3N0cmluZyBzIDAgKFN0cmluZy5sZW5ndGggcylcbmFuZCBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lICgpXG5hbmQgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X3NwYWNlcyBuXG5hbmQgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X2luZGVudCBuXG5cbigqIEZvcm1hdCBhIHRleHR1YWwgdG9rZW4gKilcbmxldCBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHRleHQgPVxuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBzaXplO1xuICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHRleHQ7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIGZhbHNlXG5cbigqIEZvcm1hdCBhIHN0cmluZyBieSBpdHMgbGVuZ3RoLCBpZiBub3QgZW1wdHkgKilcbmxldCBmb3JtYXRfc3RyaW5nIHN0YXRlIHMgPVxuICBpZiBzIDw+IFwiXCIgdGhlbiBmb3JtYXRfcHBfdGV4dCBzdGF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBzXG5cbigqIFRvIGZvcm1hdCBhIGJyZWFrLCBpbmRlbnRpbmcgYSBuZXcgbGluZS4gKilcbmxldCBicmVha19uZXdfbGluZSBzdGF0ZSAoYmVmb3JlLCBvZmZzZXQsIGFmdGVyKSB3aWR0aCA9XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYmVmb3JlO1xuICBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gdHJ1ZTtcbiAgbGV0IGluZGVudCA9IHN0YXRlLnBwX21hcmdpbiAtIHdpZHRoICsgb2Zmc2V0IGluXG4gICgqIERvbid0IGluZGVudCBtb3JlIHRoYW4gcHBfbWF4X2luZGVudC4gKilcbiAgbGV0IHJlYWxfaW5kZW50ID0gSW50Lm1pbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGluZGVudCBpblxuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSByZWFsX2luZGVudDtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9jdXJyZW50X2luZGVudDtcbiAgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBzdGF0ZS5wcF9jdXJyZW50X2luZGVudDtcbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBhZnRlclxuXG5cbigqIFRvIGZvcmNlIGEgbGluZSBicmVhayBpbnNpZGUgYSBib3g6IG5vIG9mZnNldCBpcyBhZGRlZC4gKilcbmxldCBicmVha19saW5lIHN0YXRlIHdpZHRoID0gYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIDAsIFwiXCIpIHdpZHRoXG5cbigqIFRvIGZvcm1hdCBhIGJyZWFrIHRoYXQgZml0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoYmVmb3JlLCB3aWR0aCwgYWZ0ZXIpID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHdpZHRoO1xuICBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIHdpZHRoO1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gaW5kZW50IG5vIG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LCBpZiBvbmUgdHJpZXMgdG8gb3BlbiBhIGJveFxuICAgYmV5b25kIHBwX21heF9pbmRlbnQsIHRoZW4gdGhlIGJveCBpcyByZWplY3RlZCBvbiB0aGUgbGVmdFxuICAgYnkgc2ltdWxhdGluZyBhIGJyZWFrLiAqKVxubGV0IHBwX2ZvcmNlX2JyZWFrX2xpbmUgc3RhdGUgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZVxuICB8IFNvbWUgeyBib3hfdHlwZTsgd2lkdGggfSAtPlxuICAgIGlmIHdpZHRoID4gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuXG4gICAgICBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2ZpdHMgfCBQcF9oYm94IC0+ICgpXG4gICAgICB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCAtPiBicmVha19saW5lIHN0YXRlIHdpZHRoXG5cblxuKCogVG8gc2tpcCBhIHRva2VuLCBpZiB0aGUgcHJldmlvdXMgbGluZSBoYXMgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfc2tpcF90b2tlbiBzdGF0ZSA9XG4gIG1hdGNoIFF1ZXVlLnRha2Vfb3B0IHN0YXRlLnBwX3F1ZXVlIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHByaW50X2lmX25ld2xpbmUgbXVzdCBoYXZlIGJlZW4gdGhlIGxhc3QgcHJpbnRpbmcgY29tbWFuZCAqKVxuICB8IFNvbWUgeyBzaXplOyBsZW5ndGg7IF8gfSAtPlxuICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gc3RhdGUucHBfbGVmdF90b3RhbCAtIGxlbmd0aDtcbiAgICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgKyBTaXplLnRvX2ludCBzaXplXG5cblxuKCpcblxuICBUaGUgbWFpbiBwcmV0dHkgcHJpbnRpbmcgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBGb3JtYXR0aW5nIGEgdG9rZW4gd2l0aCBhIGdpdmVuIHNpemUuICopXG5sZXQgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgPSBmdW5jdGlvblxuXG4gIHwgUHBfdGV4dCBzIC0+XG4gICAgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSBzXG5cbiAgfCBQcF9iZWdpbiAob2ZmLCB0eSkgLT5cbiAgICBsZXQgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCBpblxuICAgIGlmIGluc2VydGlvbl9wb2ludCA+IHN0YXRlLnBwX21heF9pbmRlbnQgdGhlblxuICAgICAgKCogY2FuIG5vdCBvcGVuIGEgYm94IHJpZ2h0IHRoZXJlLiAqKVxuICAgICAgYmVnaW4gcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSBlbmQ7XG4gICAgbGV0IHdpZHRoID0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIG9mZiBpblxuICAgIGxldCBib3hfdHlwZSA9XG4gICAgICBtYXRjaCB0eSB3aXRoXG4gICAgICB8IFBwX3Zib3ggLT4gUHBfdmJveFxuICAgICAgfCBQcF9oYm94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzIC0+XG4gICAgICAgIGlmIHNpemUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gdHkgZWxzZSBQcF9maXRzIGluXG4gICAgU3RhY2sucHVzaCB7IGJveF90eXBlOyB3aWR0aCB9IHN0YXRlLnBwX2Zvcm1hdF9zdGFja1xuXG4gIHwgUHBfZW5kIC0+XG4gICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF90YmVnaW4gKFBwX3Rib3ggXyBhcyB0Ym94KSAtPlxuICAgIFN0YWNrLnB1c2ggdGJveCBzdGF0ZS5wcF90Ym94X3N0YWNrXG5cbiAgfCBQcF90ZW5kIC0+XG4gICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHw+IGlnbm9yZVxuXG4gIHwgUHBfc3RhYiAtPlxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gdGFidWxhdGlvbiBib3guICopXG4gICAgfCBTb21lIChQcF90Ym94IHRhYnMpIC0+XG4gICAgICBsZXQgcmVjIGFkZF90YWIgbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gW25dXG4gICAgICAgIHwgeCA6OiBsIGFzIGxzIC0+IGlmIG4gPCB4IHRoZW4gbiA6OiBscyBlbHNlIHggOjogYWRkX3RhYiBuIGwgaW5cbiAgICAgIHRhYnMgOj0gYWRkX3RhYiAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCkgIXRhYnNcbiAgICBlbmRcblxuICB8IFBwX3RicmVhayAobiwgb2ZmKSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCB0YWIgPVxuICAgICAgICBtYXRjaCAhdGFicyB3aXRoXG4gICAgICAgIHwgW10gLT4gaW5zZXJ0aW9uX3BvaW50XG4gICAgICAgIHwgZmlyc3QgOjogXyAtPlxuICAgICAgICAgIGxldCByZWMgZmluZCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgICAgICBpZiBoZWFkID49IGluc2VydGlvbl9wb2ludCB0aGVuIGhlYWQgZWxzZSBmaW5kIHRhaWxcbiAgICAgICAgICAgIHwgW10gLT4gZmlyc3QgaW5cbiAgICAgICAgICBmaW5kICF0YWJzIGluXG4gICAgICBsZXQgb2Zmc2V0ID0gdGFiIC0gaW5zZXJ0aW9uX3BvaW50IGluXG4gICAgICBpZiBvZmZzZXQgPj0gMFxuICAgICAgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgKFwiXCIsIG9mZnNldCArIG4sIFwiXCIpXG4gICAgICBlbHNlIGJyZWFrX25ld19saW5lIHN0YXRlIChcIlwiLCB0YWIgKyBvZmYsIFwiXCIpIHN0YXRlLnBwX21hcmdpblxuICAgIGVuZFxuXG4gIHwgUHBfbmV3bGluZSAtPlxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGUgKCogTm8gb3BlbiBib3guICopXG4gICAgfCBTb21lIHsgd2lkdGg7IF99IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcbiAgICBlbmRcblxuICB8IFBwX2lmX25ld2xpbmUgLT5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCAhPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgdGhlbiBwcF9za2lwX3Rva2VuIHN0YXRlXG5cbiAgfCBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IC0+XG4gICAgbGV0IGJlZm9yZSwgb2ZmLCBfID0gYnJlYWtzIGluXG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyBib3hfdHlwZTsgd2lkdGggfSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggYm94X3R5cGUgd2l0aFxuICAgICAgfCBQcF9ob3Zib3ggLT5cbiAgICAgICAgaWYgc2l6ZSArIFN0cmluZy5sZW5ndGggYmVmb3JlID4gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2JveCAtPlxuICAgICAgICAoKiBIYXZlIHRoZSBsaW5lIGp1c3QgYmVlbiBicm9rZW4gaGVyZSA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2lzX25ld19saW5lIHRoZW4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHMgZWxzZVxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGggZWxzZVxuICAgICAgICAoKiBicmVhayB0aGUgbGluZSBoZXJlIGxlYWRzIHRvIG5ldyBpbmRlbnRhdGlvbiA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ID4gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9odmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfZml0cyAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF92Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9oYm94IC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgfCBQcF9vcGVuX3RhZyB0YWdfbmFtZSAtPlxuICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlcjtcbiAgICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF9tYXJrX3N0YWNrXG5cbiAgIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgIGJlZ2luIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfbWFya19zdGFjayB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIHRhZ19uYW1lIGluXG4gICAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXJcbiAgICAgZW5kXG5cblxuKCogUHJpbnQgaWYgdG9rZW4gc2l6ZSBpcyBrbm93biBlbHNlIHByaW50aW5nIGlzIGRlbGF5ZWQuXG4gICBQcmludGluZyBpcyBkZWxheWVkIHdoZW4gdGhlIHRleHQgd2FpdGluZyBpbiB0aGUgcXVldWUgcmVxdWlyZXNcbiAgIG1vcmUgcm9vbSB0byBmb3JtYXQgdGhhbiBleGlzdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCByZWMgYWR2YW5jZV9sZWZ0IHN0YXRlID1cbiAgbWF0Y2ggUXVldWUucGVla19vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogTm8gdG9rZW5zIHRvIHByaW50ICopXG4gIHwgU29tZSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSAtPlxuICAgIGxldCBwZW5kaW5nX2NvdW50ID0gc3RhdGUucHBfcmlnaHRfdG90YWwgLSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIGluXG4gICAgaWYgU2l6ZS5pc19rbm93biBzaXplIHx8IHBlbmRpbmdfY291bnQgPj0gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIGJlZ2luXG4gICAgICBRdWV1ZS50YWtlIHN0YXRlLnBwX3F1ZXVlIHw+IGlnbm9yZTsgKCogTm90IGVtcHR5OiB3ZSBwZWVrIGludG8gaXQgKilcbiAgICAgIGxldCBzaXplID0gaWYgU2l6ZS5pc19rbm93biBzaXplIHRoZW4gU2l6ZS50b19pbnQgc2l6ZSBlbHNlIHBwX2luZmluaXR5IGluXG4gICAgICBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSB0b2tlbjtcbiAgICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gbGVuZ3RoICsgc3RhdGUucHBfbGVmdF90b3RhbDtcbiAgICAgIChhZHZhbmNlX2xlZnQgW0B0YWlsY2FsbF0pIHN0YXRlXG4gICAgZW5kXG5cblxuKCogVG8gZW5xdWV1ZSBhIHRva2VuIDogdHJ5IHRvIGFkdmFuY2UuICopXG5sZXQgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHRvayA9IHBwX2VucXVldWUgc3RhdGUgdG9rOyBhZHZhbmNlX2xlZnQgc3RhdGVcblxuXG4oKiBUbyBlbnF1ZXVlIHN0cmluZ3MuICopXG5sZXQgZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzID1cbiAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZTsgdG9rZW4gPSBQcF90ZXh0IHM7IGxlbmd0aCA9IFNpemUudG9faW50IHNpemUgfVxuXG5cbmxldCBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzID1cbiAgZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgKFNpemUub2ZfaW50IChTdHJpbmcubGVuZ3RoIHMpKSBzXG5cblxuKCogUm91dGluZXMgZm9yIHNjYW4gc3RhY2tcbiAgIGRldGVybWluZSBzaXplIG9mIGJveGVzLiAqKVxuXG4oKiBUaGUgc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbmxldCBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhY2sgPVxuICBTdGFjay5jbGVhciBzdGFjaztcbiAgbGV0IHF1ZXVlX2VsZW0gPSB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfdGV4dCBcIlwiOyBsZW5ndGggPSAwIH0gaW5cbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAtMTsgcXVldWVfZWxlbSB9IHN0YWNrXG5cbigqIFNldHRpbmcgdGhlIHNpemUgb2YgYm94ZXMgb24gc2NhbiBzdGFjazpcbiAgIGlmIHR5ID0gdHJ1ZSB0aGVuIHNpemUgb2YgYnJlYWsgaXMgc2V0IGVsc2Ugc2l6ZSBvZiBib3ggaXMgc2V0O1xuICAgaW4gZWFjaCBjYXNlIHBwX3NjYW5fc3RhY2sgaXMgcG9wcGVkLlxuXG4gICBOb3RlOlxuICAgUGF0dGVybiBtYXRjaGluZyBvbiBzY2FuIHN0YWNrIGlzIGV4aGF1c3RpdmUsIHNpbmNlIHNjYW5fc3RhY2sgaXMgbmV2ZXJcbiAgIGVtcHR5LlxuICAgUGF0dGVybiBtYXRjaGluZyBvbiB0b2tlbiBpbiBzY2FuIHN0YWNrIGlzIGFsc28gZXhoYXVzdGl2ZSxcbiAgIHNpbmNlIHNjYW5fcHVzaCBpcyB1c2VkIG9uIGJyZWFrcyBhbmQgb3BlbmluZyBvZiBib3hlcy4gKilcbmxldCBzZXRfc2l6ZSBzdGF0ZSB0eSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxuICB8IFNvbWUgeyBsZWZ0X3RvdGFsOyBxdWV1ZV9lbGVtIH0gLT5cbiAgICBsZXQgc2l6ZSA9IFNpemUudG9faW50IHF1ZXVlX2VsZW0uc2l6ZSBpblxuICAgICgqIHRlc3QgaWYgc2NhbiBzdGFjayBjb250YWlucyBhbnkgZGF0YSB0aGF0IGlzIG5vdCBvYnNvbGV0ZS4gKilcbiAgICBpZiBsZWZ0X3RvdGFsIDwgc3RhdGUucHBfbGVmdF90b3RhbCB0aGVuXG4gICAgICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhdGUucHBfc2Nhbl9zdGFja1xuICAgIGVsc2VcbiAgICAgIG1hdGNoIHF1ZXVlX2VsZW0udG9rZW4gd2l0aFxuICAgICAgfCBQcF9icmVhayBfIHwgUHBfdGJyZWFrIChfLCBfKSAtPlxuICAgICAgICBpZiB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX2JlZ2luIChfLCBfKSAtPlxuICAgICAgICBpZiBub3QgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF90ZXh0IF8gfCBQcF9zdGFiIHwgUHBfdGJlZ2luIF8gfCBQcF90ZW5kIHwgUHBfZW5kXG4gICAgICB8IFBwX25ld2xpbmUgfCBQcF9pZl9uZXdsaW5lIHwgUHBfb3Blbl90YWcgXyB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICAgICAoKSAoKiBzY2FuX3B1c2ggaXMgb25seSB1c2VkIGZvciBicmVha3MgYW5kIGJveGVzLiAqKVxuXG5cbigqIFB1c2ggYSB0b2tlbiBvbiBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay5cbiAgIElmIGIgaXMgdHJ1ZSBzZXRfc2l6ZSBpcyBjYWxsZWQuICopXG5sZXQgc2Nhbl9wdXNoIHN0YXRlIGIgdG9rZW4gPVxuICBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuO1xuICBpZiBiIHRoZW4gc2V0X3NpemUgc3RhdGUgdHJ1ZTtcbiAgbGV0IGVsZW0gPSB7IGxlZnRfdG90YWwgPSBzdGF0ZS5wcF9yaWdodF90b3RhbDsgcXVldWVfZWxlbSA9IHRva2VuIH0gaW5cbiAgU3RhY2sucHVzaCBlbGVtIHN0YXRlLnBwX3NjYW5fc3RhY2tcblxuXG4oKiBUbyBvcGVuIGEgbmV3IGJveCA6XG4gICB0aGUgdXNlciBtYXkgc2V0IHRoZSBkZXB0aCBib3VuZCBwcF9tYXhfYm94ZXNcbiAgIGFueSB0ZXh0IG5lc3RlZCBkZWVwZXIgaXMgcHJpbnRlZCBhcyB0aGUgZWxsaXBzaXMgc3RyaW5nLiAqKVxubGV0IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgYnJfdHkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX2JlZ2luIChpbmRlbnQsIGJyX3R5KTsgbGVuZ3RoID0gMCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIGZhbHNlIGVsZW0gZWxzZVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmcgc3RhdGUgc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUaGUgYm94IHdoaWNoIGlzIGFsd2F5cyBvcGVuLiAqKVxubGV0IHBwX29wZW5fc3lzX2JveCBzdGF0ZSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hvdmJveFxuXG4oKiBDbG9zZSBhIGJveCwgc2V0dGluZyBzaXplcyBvZiBpdHMgc3ViIGJveGVzLiAqKVxubGV0IHBwX2Nsb3NlX2JveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBiZWdpblxuICAgICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfZW5kOyBsZW5ndGggPSAwIH07XG4gICAgICBzZXRfc2l6ZSBzdGF0ZSB0cnVlOyBzZXRfc2l6ZSBzdGF0ZSBmYWxzZVxuICAgIGVuZDtcbiAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxO1xuICBlbmRcblxuXG4oKiBPcGVuIGEgdGFnLCBwdXNoaW5nIGl0IG9uIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfb3Blbl9zdGFnIHN0YXRlIHRhZ19uYW1lID1cbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gIGJlZ2luXG4gICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gICAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgdGFnX25hbWVcbiAgZW5kO1xuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIGxldCB0b2tlbiA9IFBwX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuOyBsZW5ndGggPSAwIH1cblxuXG4oKiBDbG9zZSBhIHRhZywgcG9wcGluZyBpdCBmcm9tIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfY2xvc2VfdGFnOyBsZW5ndGggPSAwIH07XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICAgIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGFnX3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgdGFnX25hbWVcblxubGV0IHBwX29wZW5fdGFnIHN0YXRlIHMgPSBwcF9vcGVuX3N0YWcgc3RhdGUgKFN0cmluZ190YWcgcylcbmxldCBwcF9jbG9zZV90YWcgc3RhdGUgKCkgPSBwcF9jbG9zZV9zdGFnIHN0YXRlICgpXG5cbmxldCBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiID0gc3RhdGUucHBfcHJpbnRfdGFncyA8LSBiXG5sZXQgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiID0gc3RhdGUucHBfbWFya190YWdzIDwtIGJcbmxldCBwcF9nZXRfcHJpbnRfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX3ByaW50X3RhZ3NcbmxldCBwcF9nZXRfbWFya190YWdzIHN0YXRlICgpID0gc3RhdGUucHBfbWFya190YWdzXG5sZXQgcHBfc2V0X3RhZ3Mgc3RhdGUgYiA9XG4gIHBwX3NldF9wcmludF90YWdzIHN0YXRlIGI7IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYlxuXG5cbigqIEhhbmRsaW5nIHRhZyBoYW5kbGluZyBmdW5jdGlvbnM6IGdldC9zZXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG1hcmtfb3Blbl9zdGFnID0gc3RhdGUucHBfbWFya19vcGVuX3RhZztcbiAgbWFya19jbG9zZV9zdGFnID0gc3RhdGUucHBfbWFya19jbG9zZV90YWc7XG4gIHByaW50X29wZW5fc3RhZyA9IHN0YXRlLnBwX3ByaW50X29wZW5fdGFnO1xuICBwcmludF9jbG9zZV9zdGFnID0gc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnO1xufVxuXG5cbmxldCBwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgbWFya19vcGVuX3N0YWcgPSBtb3Q7XG4gICAgIG1hcmtfY2xvc2Vfc3RhZyA9IG1jdDtcbiAgICAgcHJpbnRfb3Blbl9zdGFnID0gcG90O1xuICAgICBwcmludF9jbG9zZV9zdGFnID0gcGN0O1xuICB9ID1cbiAgc3RhdGUucHBfbWFya19vcGVuX3RhZyA8LSBtb3Q7XG4gIHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIDwtIG1jdDtcbiAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgPC0gcG90O1xuICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgPC0gcGN0XG5cblxuKCogSW5pdGlhbGl6ZSBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9yaW5pdCBzdGF0ZSA9XG4gIHBwX2NsZWFyX3F1ZXVlIHN0YXRlO1xuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhdGUucHBfc2Nhbl9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfZm9ybWF0X3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF90Ym94X3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX21hcmtfc3RhY2s7XG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIDA7XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gMDtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9tYXJnaW47XG4gIHBwX29wZW5fc3lzX2JveCBzdGF0ZVxuXG5sZXQgY2xlYXJfdGFnX3N0YWNrIHN0YXRlID1cbiAgU3RhY2suaXRlciAoZnVuIF8gLT4gcHBfY2xvc2VfdGFnIHN0YXRlICgpKSBzdGF0ZS5wcF90YWdfc3RhY2tcblxuXG4oKiBGbHVzaGluZyBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSBiID1cbiAgY2xlYXJfdGFnX3N0YWNrIHN0YXRlO1xuICB3aGlsZSBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSBkb1xuICAgIHBwX2Nsb3NlX2JveCBzdGF0ZSAoKVxuICBkb25lO1xuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBwcF9pbmZpbml0eTtcbiAgYWR2YW5jZV9sZWZ0IHN0YXRlO1xuICBpZiBiIHRoZW4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHBwX3Jpbml0IHN0YXRlXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBmb3JtYXQgdmFsdWVzIGFuZCB1c2UgYm94ZXMuXG5cbiopXG5cbigqIFRvIGZvcm1hdCBhIHN0cmluZy4gKilcbmxldCBwcF9wcmludF9hc19zaXplIHN0YXRlIHNpemUgcyA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHNcblxuXG5sZXQgcHBfcHJpbnRfYXMgc3RhdGUgaXNpemUgcyA9XG4gIHBwX3ByaW50X2FzX3NpemUgc3RhdGUgKFNpemUub2ZfaW50IGlzaXplKSBzXG5cblxubGV0IHBwX3ByaW50X3N0cmluZyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG5sZXQgcHBfcHJpbnRfYnl0ZXMgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChCeXRlcy5sZW5ndGggcykgKEJ5dGVzLnRvX3N0cmluZyBzKVxuXG4oKiBUbyBmb3JtYXQgYW4gaW50ZWdlci4gKilcbmxldCBwcF9wcmludF9pbnQgc3RhdGUgaSA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoSW50LnRvX3N0cmluZyBpKVxuXG4oKiBUbyBmb3JtYXQgYSBmbG9hdC4gKilcbmxldCBwcF9wcmludF9mbG9hdCBzdGF0ZSBmID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfZmxvYXQgZilcblxuKCogVG8gZm9ybWF0IGEgYm9vbGVhbi4gKilcbmxldCBwcF9wcmludF9ib29sIHN0YXRlIGIgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9ib29sIGIpXG5cbigqIFRvIGZvcm1hdCBhIGNoYXIuICopXG5sZXQgcHBfcHJpbnRfY2hhciBzdGF0ZSBjID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgMSAoU3RyaW5nLm1ha2UgMSBjKVxuXG5cbigqIE9wZW5pbmcgYm94ZXMuICopXG5sZXQgcHBfb3Blbl9oYm94IHN0YXRlICgpID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaGJveFxuYW5kIHBwX29wZW5fdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX3Zib3hcblxuYW5kIHBwX29wZW5faHZib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9odmJveFxuYW5kIHBwX29wZW5faG92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaG92Ym94XG5hbmQgcHBfb3Blbl9ib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ib3hcblxuXG4oKiBQcmludGluZyBxdWV1ZWQgdGV4dC5cblxuICAgW3BwX3ByaW50X2ZsdXNoXSBwcmludHMgYWxsIHBlbmRpbmcgaXRlbXMgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGFuZFxuICAgdGhlbiBmbHVzaGVzIHRoZSBsb3cgbGV2ZWwgb3V0cHV0IGRldmljZSBvZiB0aGUgZm9ybWF0dGVyIHRvIGFjdHVhbGx5XG4gICBkaXNwbGF5IHByaW50aW5nIG1hdGVyaWFsLlxuXG4gICBbcHBfcHJpbnRfbmV3bGluZV0gYmVoYXZlcyBhcyBbcHBfcHJpbnRfZmx1c2hdIGFmdGVyIHByaW50aW5nIGFuIGFkZGl0aW9uYWxcbiAgIG5ldyBsaW5lLiAqKVxubGV0IHBwX3ByaW50X25ld2xpbmUgc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB0cnVlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcbmFuZCBwcF9wcmludF9mbHVzaCBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIGZhbHNlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcblxuXG4oKiBUbyBnZXQgYSBuZXdsaW5lIHdoZW4gb25lIGRvZXMgbm90IHdhbnQgdG8gY2xvc2UgdGhlIGN1cnJlbnQgYm94LiAqKVxubGV0IHBwX2ZvcmNlX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIFRvIGZvcm1hdCBzb21ldGhpbmcsIG9ubHkgaW4gY2FzZSB0aGUgbGluZSBoYXMganVzdCBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9wcmludF9pZl9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlXG4gICAgICB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfaWZfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogR2VuZXJhbGl6ZWQgYnJlYWsgaGludCB0aGF0IGFsbG93cyBwcmludGluZyBzdHJpbmdzIGJlZm9yZS9hZnRlclxuICAgc2FtZS1saW5lIG9mZnNldCAod2lkdGgpIG9yIG5ldy1saW5lIG9mZnNldCAqKVxubGV0IHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZSB+Zml0cyB+YnJlYWtzID1cbiAgbGV0IGJlZm9yZSwgd2lkdGgsIGFmdGVyID0gZml0cyBpblxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCB0b2tlbiA9IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gaW5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBiZWZvcmUgKyB3aWR0aCArIFN0cmluZy5sZW5ndGggYWZ0ZXIgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG4oKiBQcmludGluZyBicmVhayBoaW50czpcbiAgIEEgYnJlYWsgaGludCBpbmRpY2F0ZXMgd2hlcmUgYSBib3ggbWF5IGJlIGJyb2tlbi5cbiAgIElmIGxpbmUgaXMgYnJva2VuIHRoZW4gb2Zmc2V0IGlzIGFkZGVkIHRvIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudFxuICAgYm94IGVsc2UgKHRoZSB2YWx1ZSBvZikgd2lkdGggYmxhbmtzIGFyZSBwcmludGVkLiAqKVxubGV0IHBwX3ByaW50X2JyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZVxuICAgIH5maXRzOihcIlwiLCB3aWR0aCwgXCJcIikgfmJyZWFrczooXCJcIiwgb2Zmc2V0LCBcIlwiKVxuXG5cbigqIFByaW50IGEgc3BhY2UgOlxuICAgYSBzcGFjZSBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgYSBzaW5nbGUgc3BhY2UgaWYgdGhlIGJyZWFrIGRvZXMgbm90XG4gICBzcGxpdCB0aGUgbGluZTtcbiAgIGEgY3V0IGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBub3RoaW5nIGlmIHRoZSBicmVhayBkb2VzIG5vdCBzcGxpdCB0aGVcbiAgIGxpbmUuICopXG5sZXQgcHBfcHJpbnRfc3BhY2Ugc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAxIDBcbmFuZCBwcF9wcmludF9jdXQgc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAwIDBcblxuXG4oKiBUYWJ1bGF0aW9uIGJveGVzLiAqKVxubGV0IHBwX29wZW5fdGJveCBzdGF0ZSAoKSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS56ZXJvIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJlZ2luIChQcF90Ym94IChyZWYgW10pKTsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKiBDbG9zZSBhIHRhYnVsYXRpb24gYm94LiAqKVxubGV0IHBwX2Nsb3NlX3Rib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfdGVuZDsgbGVuZ3RoID0gMCB9IGluXG4gICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtO1xuICAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxXG4gIGVuZFxuXG5cbigqIFByaW50IGEgdGFidWxhdGlvbiBicmVhay4gKilcbmxldCBwcF9wcmludF90YnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YnJlYWsgKHdpZHRoLCBvZmZzZXQpOyBsZW5ndGggPSB3aWR0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG5cbmxldCBwcF9wcmludF90YWIgc3RhdGUgKCkgPSBwcF9wcmludF90YnJlYWsgc3RhdGUgMCAwXG5cbmxldCBwcF9zZXRfdGFiIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfc3RhYjsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gY29udHJvbCB0aGUgcHJldHR5LXByaW50ZXJzXG5cbiopXG5cbigqIFNldF9tYXhfYm94ZXMuICopXG5sZXQgcHBfc2V0X21heF9ib3hlcyBzdGF0ZSBuID0gaWYgbiA+IDEgdGhlbiBzdGF0ZS5wcF9tYXhfYm94ZXMgPC0gblxuXG4oKiBUbyBrbm93IHRoZSBjdXJyZW50IG1heGltdW0gbnVtYmVyIG9mIGJveGVzIGFsbG93ZWQuICopXG5sZXQgcHBfZ2V0X21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG5sZXQgcHBfb3Zlcl9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbigqIEVsbGlwc2lzLiAqKVxubGV0IHBwX3NldF9lbGxpcHNpc190ZXh0IHN0YXRlIHMgPSBzdGF0ZS5wcF9lbGxpcHNpcyA8LSBzXG5hbmQgcHBfZ2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRvIHNldCB0aGUgbWFyZ2luIG9mIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX2xpbWl0IG4gPVxuICBpZiBuIDwgcHBfaW5maW5pdHkgdGhlbiBuIGVsc2UgcHJlZCBwcF9pbmZpbml0eVxuXG5cbigqIEludGVybmFsIHByZXR0eS1wcmludGVyIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWluX3NwYWNlX2xlZnQgPC0gbjtcbiAgICBzdGF0ZS5wcF9tYXhfaW5kZW50IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX3Jpbml0IHN0YXRlXG5cblxuKCogSW5pdGlhbGx5LCB3ZSBoYXZlIDpcbiAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdCwgYW5kXG4gICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luLiAqKVxubGV0IHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG4gPVxuICBpZiBuID4gMSB0aGVuXG4gICAgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIChzdGF0ZS5wcF9tYXJnaW4gLSBuKVxuXG5cbmxldCBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9pbmRlbnRcblxubGV0IHBwX3NldF9tYXJnaW4gc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWFyZ2luIDwtIG47XG4gICAgbGV0IG5ld19tYXhfaW5kZW50ID1cbiAgICAgICgqIFRyeSB0byBtYWludGFpbiBtYXhfaW5kZW50IHRvIGl0cyBhY3R1YWwgdmFsdWUuICopXG4gICAgICBpZiBzdGF0ZS5wcF9tYXhfaW5kZW50IDw9IHN0YXRlLnBwX21hcmdpblxuICAgICAgdGhlbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGVsc2VcbiAgICAgICgqIElmIHBvc3NpYmxlIG1haW50YWluIHBwX21pbl9zcGFjZV9sZWZ0IHRvIGl0cyBhY3R1YWwgdmFsdWUsXG4gICAgICAgICBpZiB0aGlzIGxlYWRzIHRvIGEgdG9vIHNtYWxsIG1heF9pbmRlbnQsIHRha2UgaGFsZiBvZiB0aGVcbiAgICAgICAgIG5ldyBtYXJnaW4sIGlmIGl0IGlzIGdyZWF0ZXIgdGhhbiAxLiAqKVxuICAgICAgIEludC5tYXggKEludC5tYXggKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0KVxuICAgICAgICAgICAgICAgIChzdGF0ZS5wcF9tYXJnaW4gLyAyKSkgMSBpblxuICAgICgqIFJlYnVpbGQgaW52YXJpYW50cy4gKilcbiAgICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuZXdfbWF4X2luZGVudFxuXG5cbigqKiBHZW9tZXRyeSBmdW5jdGlvbnMgYW5kIHR5cGVzICopXG50eXBlIGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OmludDsgbWFyZ2luOiBpbnR9XG5cbmxldCB2YWxpZGF0ZV9nZW9tZXRyeSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIGlmIG1heF9pbmRlbnQgPCAyIHRoZW5cbiAgICBFcnJvciBcIm1heF9pbmRlbnQgPCAyXCJcbiAgZWxzZSBpZiBtYXJnaW4gPD0gbWF4X2luZGVudCB0aGVuXG4gICAgRXJyb3IgXCJtYXJnaW4gPD0gbWF4X2luZGVudFwiXG4gIGVsc2UgT2sgKClcblxubGV0IGNoZWNrX2dlb21ldHJ5IGdlb21ldHJ5ID1cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IE9rICgpIC0+IHRydWVcbiAgfCBFcnJvciBfIC0+IGZhbHNlXG5cbmxldCBwcF9nZXRfbWFyZ2luIHN0YXRlICgpID0gc3RhdGUucHBfbWFyZ2luXG5cbmxldCBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIHBwX3NldF9tYXJnaW4gc3RhdGUgbWFyZ2luO1xuICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBtYXhfaW5kZW50O1xuICAoKVxuXG5sZXQgcHBfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBtc2cgLT5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJGb3JtYXQucHBfc2V0X2dlb21ldHJ5OiBcIiBeIG1zZykpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfc2FmZV9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIF9tc2cgLT5cbiAgICAgKClcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgPVxuICB7IG1hcmdpbiA9IHBwX2dldF9tYXJnaW4gc3RhdGUgKCk7IG1heF9pbmRlbnQgPSBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSB9XG5cbmxldCBwcF91cGRhdGVfZ2VvbWV0cnkgc3RhdGUgdXBkYXRlID1cbiAgbGV0IGdlb21ldHJ5ID0gcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpIGluXG4gIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlICh1cGRhdGUgZ2VvbWV0cnkpXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUge1xuICAgICAgb3V0X3N0cmluZyA9IGY7XG4gICAgICBvdXRfZmx1c2ggPSBnO1xuICAgICAgb3V0X25ld2xpbmUgPSBoO1xuICAgICAgb3V0X3NwYWNlcyA9IGk7XG4gICAgICBvdXRfaW5kZW50ID0gajtcbiAgICB9ID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGpcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgb3V0X3N0cmluZyA9IHN0YXRlLnBwX291dF9zdHJpbmc7XG4gIG91dF9mbHVzaCA9IHN0YXRlLnBwX291dF9mbHVzaDtcbiAgb3V0X25ld2xpbmUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZTtcbiAgb3V0X3NwYWNlcyA9IHN0YXRlLnBwX291dF9zcGFjZXM7XG4gIG91dF9pbmRlbnQgPSBzdGF0ZS5wcF9vdXRfaW5kZW50O1xufVxuXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgc3RyaW5nIG91dHB1dCBhbmQgZmx1c2ggZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSBmIGcgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIGY7IHN0YXRlLnBwX291dF9mbHVzaCA8LSBnXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgKCkgPVxuICAoc3RhdGUucHBfb3V0X3N0cmluZywgc3RhdGUucHBfb3V0X2ZsdXNoKVxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9uZXdsaW5lIHN0YXRlICgpID0gc3RhdGUucHBfb3V0X3N0cmluZyBcIlxcblwiIDAgIDFcblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IHNwYWNlcy4gKilcbmxldCBibGFua19saW5lID0gU3RyaW5nLm1ha2UgODAgJyAnXG5sZXQgcmVjIGRpc3BsYXlfYmxhbmtzIHN0YXRlIG4gPVxuICBpZiBuID4gMCB0aGVuXG4gIGlmIG4gPD0gODAgdGhlbiBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCBuIGVsc2VcbiAgYmVnaW5cbiAgICBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCA4MDtcbiAgICBkaXNwbGF5X2JsYW5rcyBzdGF0ZSAobiAtIDgwKVxuICBlbmRcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfaW5kZW50ID0gZGlzcGxheV9ibGFua3NcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zIGFzIHByaW50aW5nIHRvIGEgZ2l2ZW5cbiAgIFtQZXJ2YXNpdmUub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgc3RhdGUgb2MgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIG91dHB1dF9zdWJzdHJpbmcgb2M7XG4gIHN0YXRlLnBwX291dF9mbHVzaCA8LSAoZnVuICgpIC0+IGZsdXNoIG9jKTtcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHN0YXRlXG5cbigqXG5cbiAgRGVmaW5pbmcgc3BlY2lmaWMgZm9ybWF0dGVyc1xuXG4qKVxuXG5sZXQgZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8XCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcbmxldCBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8L1wiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5cbmxldCBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnID0gaWdub3JlXG5sZXQgZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWcgPSBpZ25vcmVcblxuKCogQnVpbGRpbmcgYSBmb3JtYXR0ZXIgZ2l2ZW4gaXRzIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuXG4gICBPdGhlciBmaWVsZHMgZ2V0IHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZXMuICopXG5sZXQgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqID1cbiAgKCogVGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGZvcm1hdHRlciBjb250YWlucyBhIGR1bW15IGJveC4gKilcbiAgbGV0IHBwX3F1ZXVlID0gUXVldWUuY3JlYXRlICgpIGluXG4gIGxldCBzeXNfdG9rID1cbiAgICB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfYmVnaW4gKDAsIFBwX2hvdmJveCk7IGxlbmd0aCA9IDAgfSBpblxuICBRdWV1ZS5hZGQgc3lzX3RvayBwcF9xdWV1ZTtcbiAgbGV0IHNjYW5fc3RhY2sgPSBTdGFjay5jcmVhdGUgKCkgaW5cbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHNjYW5fc3RhY2s7XG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gMTsgcXVldWVfZWxlbSA9IHN5c190b2sgfSBzY2FuX3N0YWNrO1xuICBsZXQgcHBfbWFyZ2luID0gNzhcbiAgYW5kIHBwX21pbl9zcGFjZV9sZWZ0ID0gMTAgaW5cbiAge1xuICAgIHBwX3NjYW5fc3RhY2sgPSBzY2FuX3N0YWNrO1xuICAgIHBwX2Zvcm1hdF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90Ym94X3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX3RhZ19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJrX3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX21hcmdpbiA9IHBwX21hcmdpbjtcbiAgICBwcF9taW5fc3BhY2VfbGVmdCA9IHBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luO1xuICAgIHBwX2N1cnJlbnRfaW5kZW50ID0gMDtcbiAgICBwcF9pc19uZXdfbGluZSA9IHRydWU7XG4gICAgcHBfbGVmdF90b3RhbCA9IDE7XG4gICAgcHBfcmlnaHRfdG90YWwgPSAxO1xuICAgIHBwX2N1cnJfZGVwdGggPSAxO1xuICAgIHBwX21heF9ib3hlcyA9IG1heF9pbnQ7XG4gICAgcHBfZWxsaXBzaXMgPSBcIi5cIjtcbiAgICBwcF9vdXRfc3RyaW5nID0gZjtcbiAgICBwcF9vdXRfZmx1c2ggPSBnO1xuICAgIHBwX291dF9uZXdsaW5lID0gaDtcbiAgICBwcF9vdXRfc3BhY2VzID0gaTtcbiAgICBwcF9vdXRfaW5kZW50ID0gajtcbiAgICBwcF9wcmludF90YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya190YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya19vcGVuX3RhZyA9IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZztcbiAgICBwcF9tYXJrX2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWc7XG4gICAgcHBfcHJpbnRfb3Blbl90YWcgPSBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnO1xuICAgIHBwX3ByaW50X2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnO1xuICAgIHBwX3F1ZXVlID0gcHBfcXVldWU7XG4gIH1cblxuXG4oKiBCdWlsZCBhIGZvcm1hdHRlciBvdXQgb2YgaXRzIG91dCBmdW5jdGlvbnMuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMgb3V0X2Z1bnMgPVxuICBwcF9tYWtlX2Zvcm1hdHRlclxuICAgIG91dF9mdW5zLm91dF9zdHJpbmdcbiAgICBvdXRfZnVucy5vdXRfZmx1c2hcbiAgICBvdXRfZnVucy5vdXRfbmV3bGluZVxuICAgIG91dF9mdW5zLm91dF9zcGFjZXNcbiAgICBvdXRfZnVucy5vdXRfaW5kZW50XG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3aXRoIGRlZmF1bHQgZnVuY3Rpb25zIHRvIG91dHB1dCBzcGFjZXMsXG4gIGluZGVudGF0aW9uLCBhbmQgbmV3IGxpbmVzLiAqKVxubGV0IG1ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCA9XG4gIGxldCBwcGYgPSBwcF9tYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggaWdub3JlIGlnbm9yZSBpZ25vcmUgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBwcGZcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbUGVydmFzaXZlLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgPVxuICBtYWtlX2Zvcm1hdHRlciAob3V0cHV0X3N1YnN0cmluZyBvYykgKGZ1biAoKSAtPiBmbHVzaCBvYylcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbQnVmZmVyLnRdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9idWZmZXIgYiA9XG4gIG1ha2VfZm9ybWF0dGVyIChCdWZmZXIuYWRkX3N1YnN0cmluZyBiKSBpZ25vcmVcblxuXG4oKiBBbGxvY2F0aW5nIGJ1ZmZlciBmb3IgcHJldHR5LXByaW50aW5nIHB1cnBvc2VzLlxuICAgRGVmYXVsdCBidWZmZXIgc2l6ZSBpcyBwcF9idWZmZXJfc2l6ZSBvciA1MTIuXG4qKVxubGV0IHBwX2J1ZmZlcl9zaXplID0gNTEyXG5sZXQgcHBfbWFrZV9idWZmZXIgKCkgPSBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplXG5cbigqIFRoZSBzdGFuZGFyZCAoc2hhcmVkKSBidWZmZXIuICopXG5sZXQgc3RkYnVmID0gcHBfbWFrZV9idWZmZXIgKClcblxuKCogUHJlZGVmaW5lZCBmb3JtYXR0ZXJzIHN0YW5kYXJkIGZvcm1hdHRlciB0byBwcmludFxuICAgdG8gW1N0ZGxpYi5zdGRvdXRdLCBbU3RkbGliLnN0ZGVycl0sIGFuZCB7IXN0ZGJ1Zn0uICopXG5sZXQgc3RkX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3Rkb3V0XG5hbmQgZXJyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3RkZXJyXG5hbmQgc3RyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9idWZmZXIgc3RkYnVmXG5cblxuKCogW2ZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZl0gZmx1c2hlcyBmb3JtYXR0ZXIgW3BwZl0sXG4gICB0aGVuIHJldHVybnMgdGhlIGNvbnRlbnRzIG9mIGJ1ZmZlciBbYnVmXSB0aGF0IGlzIHJlc2V0LlxuICAgRm9ybWF0dGVyIFtwcGZdIGlzIHN1cHBvc2VkIHRvIHByaW50IHRvIGJ1ZmZlciBbYnVmXSwgb3RoZXJ3aXNlIHRoaXNcbiAgIGZ1bmN0aW9uIGlzIG5vdCByZWFsbHkgdXNlZnVsLiAqKVxubGV0IGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZiA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHBwZiBmYWxzZTtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIEJ1ZmZlci5yZXNldCBidWY7XG4gIHNcblxuXG4oKiBGbHVzaCBbc3RyX2Zvcm1hdHRlcl0gYW5kIGdldCB0aGUgY29udGVudHMgb2YgW3N0ZGJ1Zl0uICopXG5sZXQgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSA9IGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgc3RkYnVmIHN0cl9mb3JtYXR0ZXJcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nXG4qKVxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmcgaXMgcHJldHR5LXByaW50aW5nIHdpdGggbm8gbG93IGxldmVsIG91dHB1dC5cblxuICBXaGVuIHVzaW5nIGEgc3ltYm9saWMgZm9ybWF0dGVyLCBhbGwgcmVndWxhciBwcmV0dHktcHJpbnRpbmcgYWN0aXZpdGllc1xuICBvY2N1ciBidXQgb3V0cHV0IG1hdGVyaWFsIGlzIHN5bWJvbGljIGFuZCBzdG9yZWQgaW4gYSBidWZmZXIgb2Ygb3V0cHV0XG4gIGl0ZW1zLiBBdCB0aGUgZW5kIG9mIHByZXR0eS1wcmludGluZywgZmx1c2hpbmcgdGhlIG91dHB1dCBidWZmZXIgYWxsb3dzXG4gIHBvc3QtcHJvY2Vzc2luZyBvZiBzeW1ib2xpYyBvdXRwdXQgYmVmb3JlIGxvdyBsZXZlbCBvdXRwdXQgb3BlcmF0aW9ucy5cbiopXG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2l0ZW0gPVxuICB8IE91dHB1dF9mbHVzaFxuICB8IE91dHB1dF9uZXdsaW5lXG4gIHwgT3V0cHV0X3N0cmluZyBvZiBzdHJpbmdcbiAgfCBPdXRwdXRfc3BhY2VzIG9mIGludFxuICB8IE91dHB1dF9pbmRlbnQgb2YgaW50XG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2J1ZmZlciA9IHtcbiAgbXV0YWJsZSBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgOiBzeW1ib2xpY19vdXRwdXRfaXRlbSBsaXN0O1xufVxuXG5sZXQgbWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyICgpID1cbiAgeyBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgPSBbXSB9XG5cbmxldCBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gW11cblxubGV0IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIExpc3QucmV2IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IGl0ZW1zID0gZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iIGluXG4gIGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iO1xuICBpdGVtc1xuXG5sZXQgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBpdGVtID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBpdGVtIDo6IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBzeW1ib2xpY19mbHVzaCBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X2ZsdXNoXG4gIGFuZCBzeW1ib2xpY19uZXdsaW5lIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfbmV3bGluZVxuICBhbmQgc3ltYm9saWNfc3RyaW5nIHNvYiBzIGkgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3N0cmluZyAoU3RyaW5nLnN1YiBzIGkgbikpXG4gIGFuZCBzeW1ib2xpY19zcGFjZXMgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zcGFjZXMgbilcbiAgYW5kIHN5bWJvbGljX2luZGVudCBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X2luZGVudCBuKSBpblxuXG4gIGxldCBmID0gc3ltYm9saWNfc3RyaW5nIHNvYlxuICBhbmQgZyA9IHN5bWJvbGljX2ZsdXNoIHNvYlxuICBhbmQgaCA9IHN5bWJvbGljX25ld2xpbmUgc29iXG4gIGFuZCBpID0gc3ltYm9saWNfc3BhY2VzIHNvYlxuICBhbmQgaiA9IHN5bWJvbGljX2luZGVudCBzb2IgaW5cbiAgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqXG5cbigqXG5cbiAgQmFzaWMgZnVuY3Rpb25zIG9uIHRoZSAnc3RhbmRhcmQnIGZvcm1hdHRlclxuICAodGhlIGZvcm1hdHRlciB0aGF0IHByaW50cyB0byBbU3RkbGliLnN0ZG91dF0pLlxuXG4qKVxuXG5sZXQgb3Blbl9oYm94ID0gcHBfb3Blbl9oYm94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX3Zib3ggPSBwcF9vcGVuX3Zib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5faHZib3ggPSBwcF9vcGVuX2h2Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX2hvdmJveCA9IHBwX29wZW5faG92Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX2JveCA9IHBwX29wZW5fYm94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV9ib3ggPSBwcF9jbG9zZV9ib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fdGFnID0gcHBfb3Blbl90YWcgc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX3RhZyA9IHBwX2Nsb3NlX3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9zdGFnID0gcHBfb3Blbl9zdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV9zdGFnID0gcHBfY2xvc2Vfc3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYXMgPSBwcF9wcmludF9hcyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfc3RyaW5nID0gcHBfcHJpbnRfc3RyaW5nIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9ieXRlcyA9IHBwX3ByaW50X2J5dGVzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9pbnQgPSBwcF9wcmludF9pbnQgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2Zsb2F0ID0gcHBfcHJpbnRfZmxvYXQgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2NoYXIgPSBwcF9wcmludF9jaGFyIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9ib29sID0gcHBfcHJpbnRfYm9vbCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYnJlYWsgPSBwcF9wcmludF9icmVhayBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfY3V0ID0gcHBfcHJpbnRfY3V0IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9zcGFjZSA9IHBwX3ByaW50X3NwYWNlIHN0ZF9mb3JtYXR0ZXJcbmFuZCBmb3JjZV9uZXdsaW5lID0gcHBfZm9yY2VfbmV3bGluZSBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfZmx1c2ggPSBwcF9wcmludF9mbHVzaCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfbmV3bGluZSA9IHBwX3ByaW50X25ld2xpbmUgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2lmX25ld2xpbmUgPSBwcF9wcmludF9pZl9uZXdsaW5lIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIG9wZW5fdGJveCA9IHBwX29wZW5fdGJveCBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2VfdGJveCA9IHBwX2Nsb3NlX3Rib3ggc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3RicmVhayA9IHBwX3ByaW50X3RicmVhayBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfdGFiID0gcHBfc2V0X3RhYiBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfdGFiID0gcHBfcHJpbnRfdGFiIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9tYXJnaW4gPSBwcF9zZXRfbWFyZ2luIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWFyZ2luID0gcHBfZ2V0X21hcmdpbiBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfbWF4X2luZGVudCA9IHBwX3NldF9tYXhfaW5kZW50IHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWF4X2luZGVudCA9IHBwX2dldF9tYXhfaW5kZW50IHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9nZW9tZXRyeSA9IHBwX3NldF9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5hbmQgc2FmZV9zZXRfZ2VvbWV0cnkgPSBwcF9zYWZlX3NldF9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2dlb21ldHJ5ID0gcHBfZ2V0X2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcbmFuZCB1cGRhdGVfZ2VvbWV0cnkgPSBwcF91cGRhdGVfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X21heF9ib3hlcyA9IHBwX3NldF9tYXhfYm94ZXMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXhfYm94ZXMgPSBwcF9nZXRfbWF4X2JveGVzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBvdmVyX21heF9ib3hlcyA9IHBwX292ZXJfbWF4X2JveGVzIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9lbGxpcHNpc190ZXh0ID0gcHBfc2V0X2VsbGlwc2lzX3RleHQgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9lbGxpcHNpc190ZXh0ID0gcHBfZ2V0X2VsbGlwc2lzX3RleHQgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBzZXRfcHJpbnRfdGFncyA9XG4gIHBwX3NldF9wcmludF90YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfcHJpbnRfdGFncyA9XG4gIHBwX2dldF9wcmludF90YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBzZXRfbWFya190YWdzID1cbiAgcHBfc2V0X21hcmtfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21hcmtfdGFncyA9XG4gIHBwX2dldF9tYXJrX3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIHNldF90YWdzID1cbiAgcHBfc2V0X3RhZ3Mgc3RkX2Zvcm1hdHRlclxuXG5cbigqIENvbnZlbmllbmNlIGZ1bmN0aW9ucyAqKVxuXG4oKiBUbyBmb3JtYXQgYSBsaXN0ICopXG5sZXQgcmVjIHBwX3ByaW50X2xpc3QgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IFt2XSAtPiBwcF92IHBwZiB2XG4gIHwgdiA6OiB2cyAtPlxuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF9wcmludF9saXN0IH5wcF9zZXAgcHBfdiBwcGYgdnNcblxuKCogVG8gZm9ybWF0IGEgc2VxdWVuY2UgKilcbmxldCByZWMgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBTZXEuTmlsIC0+ICgpXG4gIHwgU2VxLkNvbnMgKHYsIHNlcSkgLT5cbiAgICBwcF9zZXAgcHBmICgpO1xuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxXG5cbmxldCBwcF9wcmludF9zZXEgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiAoKVxuICB8IFNlcS5Db25zICh2LCBzZXEpIC0+XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXFcblxuKCogVG8gZm9ybWF0IGZyZWUtZmxvd2luZyB0ZXh0ICopXG5sZXQgcHBfcHJpbnRfdGV4dCBwcGYgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGxlZnQgPSByZWYgMCBpblxuICBsZXQgcmlnaHQgPSByZWYgMCBpblxuICBsZXQgZmx1c2ggKCkgPVxuICAgIHBwX3ByaW50X3N0cmluZyBwcGYgKFN0cmluZy5zdWIgcyAhbGVmdCAoIXJpZ2h0IC0gIWxlZnQpKTtcbiAgICBpbmNyIHJpZ2h0OyBsZWZ0IDo9ICFyaWdodDtcbiAgaW5cbiAgd2hpbGUgKCFyaWdodCA8PiBsZW4pIGRvXG4gICAgbWF0Y2ggcy5bIXJpZ2h0XSB3aXRoXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGZsdXNoICgpO1xuICAgICAgICBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICAgICAgfCAnICcgLT5cbiAgICAgICAgZmx1c2ggKCk7IHBwX3ByaW50X3NwYWNlIHBwZiAoKVxuICAgICAgKCogdGhlcmUgaXMgbm8gc3BlY2lmaWMgc3VwcG9ydCBmb3IgJ1xcdCdcbiAgICAgICAgIGFzIGl0IGlzIHVuY2xlYXIgd2hhdCBhIHJpZ2h0IHNlbWFudGljcyB3b3VsZCBiZSAqKVxuICAgICAgfCBfIC0+IGluY3IgcmlnaHRcbiAgZG9uZTtcbiAgaWYgIWxlZnQgPD4gbGVuIHRoZW4gZmx1c2ggKClcblxubGV0IHBwX3ByaW50X29wdGlvbiA/KG5vbmUgPSBmdW4gXyAoKSAtPiAoKSkgcHBfdiBwcGYgPSBmdW5jdGlvblxufCBOb25lIC0+IG5vbmUgcHBmICgpXG58IFNvbWUgdiAtPiBwcF92IHBwZiB2XG5cbmxldCBwcF9wcmludF9yZXN1bHQgfm9rIH5lcnJvciBwcGYgPSBmdW5jdGlvblxufCBPayB2IC0+IG9rIHBwZiB2XG58IEVycm9yIGUgLT4gZXJyb3IgcHBmIGVcblxubGV0IHBwX3ByaW50X2VpdGhlciB+bGVmdCB+cmlnaHQgcHBmID0gZnVuY3Rpb25cbnwgRWl0aGVyLkxlZnQgbCAtPiBsZWZ0IHBwZiBsXG58IEVpdGhlci5SaWdodCByIC0+IHJpZ2h0IHBwZiByXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBjb21wdXRlX3RhZyBvdXRwdXQgdGFnX2FjYyA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDE2IGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICBvdXRwdXQgcHBmIHRhZ19hY2M7XG4gIHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgbGV0IGxlbiA9IEJ1ZmZlci5sZW5ndGggYnVmIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBCdWZmZXIuY29udGVudHMgYnVmXG4gIGVsc2UgQnVmZmVyLnN1YiBidWYgMSAobGVuIC0gMilcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gIERlZmluaW5nIGNvbnRpbnVhdGlvbnMgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50cyBvZlxuICBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuXG5cbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBJbnRlcnByZXQgYSBmb3JtYXR0aW5nIGVudGl0eSBvbiBhIGZvcm1hdHRlci4gKilcbmxldCBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGZtdGluZ19saXQgPSBtYXRjaCBmbXRpbmdfbGl0IHdpdGhcbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX2JveCBwcGYgKClcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX3RhZyBwcGYgKClcbiAgfCBCcmVhayAoXywgd2lkdGgsIG9mZnNldCkgIC0+IHBwX3ByaW50X2JyZWFrIHBwZiB3aWR0aCBvZmZzZXRcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2ZsdXNoIHBwZiAoKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX3ByaW50X25ld2xpbmUgcHBmICgpXG4gIHwgTWFnaWNfc2l6ZSAoXywgXykgICAgICAgICAtPiAoKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnJSdcbiAgfCBTY2FuX2luZGljIGMgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJzsgcHBfcHJpbnRfY2hhciBwcGYgY1xuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYub3V0cHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBmIHBwZjtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYuYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBzdHJwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19kZWxheSAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKGYgKCkpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIChmICgpKTtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqXG5cbiAgRGVmaW5pbmcgW2ZwcmludGZdIGFuZCB2YXJpb3VzIGZsYXZvcnMgb2YgW2ZwcmludGZdLlxuXG4qKVxuXG5sZXQga2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgcHBmIGFjYzsgayBwcGYpXG4gICAgRW5kX29mX2FjYyBmbXRcblxuYW5kIGlrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBrIHBwZiBmbXRcblxubGV0IGlmcHJpbnRmIF9wcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgaWdub3JlICgpIGZtdFxuXG5sZXQgZnByaW50ZiBwcGYgPSBrZnByaW50ZiBpZ25vcmUgcHBmXG5sZXQgcHJpbnRmIGZtdCA9IGZwcmludGYgc3RkX2Zvcm1hdHRlciBmbXRcbmxldCBlcHJpbnRmIGZtdCA9IGZwcmludGYgZXJyX2Zvcm1hdHRlciBmbXRcblxubGV0IGtkcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IGsgKGZ1biBwcGYgLT4gb3V0cHV0X2FjYyBwcGYgYWNjKSlcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgZHByaW50ZiBmbXQgPSBrZHByaW50ZiAoZnVuIGkgLT4gaSkgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgc3RycHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiBpZCBmbXRcblxubGV0IGthc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgb3V0cHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgYXNwcmludGYgZm10ID0ga2FzcHJpbnRmIGlkIGZtdFxuXG4oKiBGbHVzaGluZyBzdGFuZGFyZCBmb3JtYXR0ZXJzIGF0IGVuZCBvZiBleGVjdXRpb24uICopXG5cbmxldCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpID1cbiAgcHBfcHJpbnRfZmx1c2ggc3RkX2Zvcm1hdHRlciAoKTtcbiAgcHBfcHJpbnRfZmx1c2ggZXJyX2Zvcm1hdHRlciAoKVxuXG5sZXQgKCkgPSBhdF9leGl0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnNcblxuKCpcblxuICBEZXByZWNhdGVkIHN0dWZmLlxuXG4qKVxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgcHBfc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZVxuICAgIH5vdXQ6ZiB+Zmx1c2g6ZyB+bmV3bGluZTpoIH5zcGFjZXM6aSA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSBmIGc7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGg7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gaVxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgcHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9XG4gIChzdGF0ZS5wcF9vdXRfc3RyaW5nLCBzdGF0ZS5wcF9vdXRfZmx1c2gsXG4gICBzdGF0ZS5wcF9vdXRfbmV3bGluZSwgc3RhdGUucHBfb3V0X3NwYWNlcylcblxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBnZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cblxuKCogRGVwcmVjYXRlZCA6IGVycm9yIHByb25lIGZ1bmN0aW9uLCBkbyBub3QgdXNlIGl0LlxuICAgVGhpcyBmdW5jdGlvbiBpcyBuZWl0aGVyIGNvbXBvc2l0aW9uYWwgbm9yIGluY3JlbWVudGFsLCBzaW5jZSBpdCBmbHVzaGVzXG4gICB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUgYXQgZWFjaCBjYWxsLlxuICAgVG8gZ2V0IHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHksIGRlZmluZSBhIGZvcm1hdHRlciBvZiB5b3VyIG93biB3cml0aW5nIHRvXG4gICB0aGUgYnVmZmVyIGFyZ3VtZW50LCBhcyBpblxuICAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYlxuICAgdGhlbiB1c2UgeyFmcHJpbnRmIHBwZn0gYXMgdXN1YWwuICopXG5sZXQgYnByaW50ZiBiIChGb3JtYXQgKGZtdCwgXykgOiAoJ2EsIGZvcm1hdHRlciwgdW5pdCkgZm9ybWF0KSA9XG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID0gb3V0cHV0X2FjYyBwcGYgYWNjOyBwcF9mbHVzaF9xdWV1ZSBwcGYgZmFsc2UgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbigqIERlcHJlY2F0ZWQgOiBhbGlhcyBmb3Iga3NwcmludGYuICopXG5sZXQga3ByaW50ZiA9IGtzcHJpbnRmXG5cblxuXG4oKiBEZXByZWNhdGVkIHRhZyBmdW5jdGlvbnMgKilcblxudHlwZSBmb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3RhZyA6IHRhZyAtPiBzdHJpbmc7XG4gIG1hcmtfY2xvc2VfdGFnIDogdGFnIC0+IHN0cmluZztcbiAgcHJpbnRfb3Blbl90YWcgOiB0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2VfdGFnIDogdGFnIC0+IHVuaXQ7XG59XG5cblxubGV0IHBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgIG1hcmtfb3Blbl90YWcgPSBtb3Q7XG4gICAgIG1hcmtfY2xvc2VfdGFnID0gbWN0O1xuICAgICBwcmludF9vcGVuX3RhZyA9IHBvdDtcbiAgICAgcHJpbnRfY2xvc2VfdGFnID0gcGN0O1xuICAgfSA9XG4gIGxldCBzdHJpbmdpZnkgZiBlID0gZnVuY3Rpb24gU3RyaW5nX3RhZyBzIC0+IGYgcyB8IF8gLT4gZSBpblxuICBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIDwtIHN0cmluZ2lmeSBtb3QgXCJcIjtcbiAgc3RhdGUucHBfbWFya19jbG9zZV90YWcgPC0gc3RyaW5naWZ5IG1jdCBcIlwiO1xuICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyA8LSBzdHJpbmdpZnkgcG90ICgpO1xuICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgPC0gc3RyaW5naWZ5IHBjdCAoKVxuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIGZtdCAoKSA9XG4gIGxldCBmdW5zID0gcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBmbXQgKCkgaW5cbiAgbGV0IG1hcmtfb3Blbl90YWcgcyA9IGZ1bnMubWFya19vcGVuX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAgbGV0IG1hcmtfY2xvc2VfdGFnIHMgPSBmdW5zLm1hcmtfY2xvc2Vfc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICBsZXQgcHJpbnRfb3Blbl90YWcgcyA9IGZ1bnMucHJpbnRfb3Blbl9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIGxldCBwcmludF9jbG9zZV90YWcgcyA9IGZ1bnMucHJpbnRfY2xvc2Vfc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICB7bWFya19vcGVuX3RhZzsgbWFya19jbG9zZV90YWc7IHByaW50X29wZW5fdGFnOyBwcmludF9jbG9zZV90YWd9XG5cbmxldCBzZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBhbGlhcyB0byBhdm9pZCB3YXJuaW5nIGZvciBhbWJpZ3VpdHkgYmV0d2VlblxuICAgU3RkbGliLmZvcm1hdDZcbiAgIGFuZCBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuXG4gICAodGhlIGZvcm1lciBpcyBpbiBmYWN0IGFuIGFsaWFzIGZvciB0aGUgbGF0dGVyLFxuICAgIGJ1dCB0aGUgYW1iaWd1aXR5IHdhcm5pbmcgZG9lc24ndCBjYXJlKVxuKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgU3RkbGliLmZvcm1hdDZcblxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3Igc2Nhbm5lcnMuICopXG5cbigqIFNjYW5uaW5nIGJ1ZmZlcnMuICopXG5tb2R1bGUgdHlwZSBTQ0FOTklORyA9IHNpZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbFxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHZhbCBzdGRpbiA6IGluX2NoYW5uZWxcbiAgKCogVGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0uXG4gICAgIFtzdGRpYl0gaXMgZXF1aXZhbGVudCB0byBbU2Nhbm5pbmcuZnJvbV9jaGFubmVsIFN0ZGxpYi5zdGRpbl0uICopXG5cbiAgdmFsIHN0ZGliIDogaW5fY2hhbm5lbFxuICAoKiBBbiBhbGlhcyBmb3IgW1NjYW5mLnN0ZGluXSwgdGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb21cbiAgICAgW1N0ZGxpYi5zdGRpbl0uICopXG5cbiAgdmFsIG5leHRfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBbU2Nhbm5pbmcubmV4dF9jaGFyIGliXSBhZHZhbmNlIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIuXG4gICAgIElmIG5vIG1vcmUgY2hhcmFjdGVyIGNhbiBiZSByZWFkLCBzZXRzIGEgZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGludmFsaWRhdGVfY3VycmVudF9jaGFyIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYl0gbWFyayB0aGUgY3VycmVudF9jaGFyIGFzIGFscmVhZHlcbiAgICAgc2Nhbm5lZC4gKilcblxuICB2YWwgcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5wZWVrX2NoYXIgaWJdIHJldHVybnMgdGhlIGN1cnJlbnQgY2hhciBhdmFpbGFibGUgaW5cbiAgICAgdGhlIGJ1ZmZlciBvciByZWFkcyBvbmUgaWYgbmVjZXNzYXJ5ICh3aGVuIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpc1xuICAgICBhbHJlYWR5IHNjYW5uZWQpLlxuICAgICBJZiBubyBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYW4gZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGNoZWNrZWRfcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFNhbWUgYXMgW1NjYW5uaW5nLnBlZWtfY2hhcl0gYWJvdmUgYnV0IGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgY2hhciBvclxuICAgICBmYWlsczogaW5zdGVhZCBvZiByZXR1cm5pbmcgYSBudWxsIGNoYXIgd2hlbiB0aGUgcmVhZGluZyBtZXRob2Qgb2YgdGhlXG4gICAgIGlucHV0IGJ1ZmZlciBoYXMgcmVhY2hlZCBhbiBlbmQgb2YgZmlsZSwgdGhlIGZ1bmN0aW9uIHJhaXNlcyBleGNlcHRpb25cbiAgICAgW0VuZF9vZl9maWxlXS4gKilcblxuICB2YWwgc3RvcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGNoYXIgLT4gaW50XG4gICgqIFtTY2FubmluZy5zdG9yZV9jaGFyIGxpbSBpYiBjXSBhZGRzIFtjXSB0byB0aGUgdG9rZW4gYnVmZmVyXG4gICAgIG9mIHRoZSBzY2FubmluZyBidWZmZXIgW2liXS4gSXQgYWxzbyBhZHZhbmNlcyB0aGUgc2Nhbm5pbmcgYnVmZmVyIGZvclxuICAgICBvbmUgY2hhcmFjdGVyIGFuZCByZXR1cm5zIFtsaW0gLSAxXSwgaW5kaWNhdGluZyB0aGUgbmV3IGxpbWl0IGZvciB0aGVcbiAgICAgbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuLiAqKVxuXG4gIHZhbCBza2lwX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnNraXBfY2hhciBsaW0gaWJdIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLiAqKVxuXG4gIHZhbCBpZ25vcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuaWdub3JlX2NoYXIgaWIgbGltXSBpZ25vcmVzIHRoZSBjdXJyZW50IGNoYXJhY3RlciBhbmRcbiAgICAgZGVjcmVtZW50cyB0aGUgbGltaXQuICopXG5cbiAgdmFsIHRva2VuIDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLnRva2VuIGliXSByZXR1cm5zIHRoZSBzdHJpbmcgc3RvcmVkIGludG8gdGhlIHRva2VuXG4gICAgIGJ1ZmZlciBvZiB0aGUgc2Nhbm5pbmcgYnVmZmVyOiBpdCByZXR1cm5zIHRoZSB0b2tlbiBtYXRjaGVkIGJ5IHRoZVxuICAgICBmb3JtYXQuICopXG5cbiAgdmFsIHJlc2V0X3Rva2VuIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5yZXNldF90b2tlbiBpYl0gcmVzZXRzIHRoZSB0b2tlbiBidWZmZXIgb2ZcbiAgICAgdGhlIGdpdmVuIHNjYW5uaW5nIGJ1ZmZlci4gKilcblxuICB2YWwgY2hhcl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5jaGFyX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVyc1xuICAgICByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGxpbmVfY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcubGluZV9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIG5ldyBsaW5lXG4gICAgIGNoYXJhY3RlcnMgcmVhZCBzbyBmYXIgZnJvbSB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCB0b2tlbl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy50b2tlbl9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRva2VucyByZWFkXG4gICAgIHNvIGZhciBmcm9tIFtpYl0uICopXG5cbiAgdmFsIGVvZiA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW9mIGliXSByZXR1cm5zIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGVuZF9vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgZW5kIG9mIGlucHV0IGNvbmRpdGlvblxuICAgICBvZiB0aGUgZ2l2ZW4gYnVmZmVyIChpZiBubyBjaGFyIGhhcyBldmVyIGJlZW4gcmVhZCwgYW4gYXR0ZW1wdCB0b1xuICAgICByZWFkIG9uZSBpcyBwZXJmb3JtZWQpLiAqKVxuXG4gIHZhbCBiZWdpbm5pbmdfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmJlZ2lubmluZ19vZl9pbnB1dCBpYl0gdGVzdHMgdGhlIGJlZ2lubmluZyBvZiBpbnB1dFxuICAgICBjb25kaXRpb24gb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbmFtZV9vZl9pbnB1dCA6IHNjYW5idWYgLT4gc3RyaW5nXG4gICgqIFtTY2FubmluZy5uYW1lX29mX2lucHV0IGliXSByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBjaGFyYWN0ZXJcbiAgICAgc291cmNlIGZvciBpbnB1dCBidWZmZXIgW2liXS4gKilcblxuICB2YWwgb3Blbl9pbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBvcGVuX2luX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGUgOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9maWxlX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX3N0cmluZyA6IHN0cmluZyAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2Z1bmN0aW9uIDogKHVuaXQgLT4gY2hhcikgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9jaGFubmVsIDogU3RkbGliLmluX2NoYW5uZWwgLT4gaW5fY2hhbm5lbFxuXG4gIHZhbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdFxuXG4gIHZhbCBtZW1vX2Zyb21fY2hhbm5lbCA6IFN0ZGxpYi5pbl9jaGFubmVsIC0+IGluX2NoYW5uZWxcbiAgKCogT2Jzb2xldGUuICopXG5cbmVuZFxuXG5cbm1vZHVsZSBTY2FubmluZyA6IFNDQU5OSU5HID0gc3RydWN0XG5cbiAgKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5mLiAqKVxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdHlwZSBpbl9jaGFubmVsX25hbWUgPVxuICAgIHwgRnJvbV9jaGFubmVsIG9mIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2ZpbGUgb2YgZmlsZV9uYW1lICogU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZnVuY3Rpb25cbiAgICB8IEZyb21fc3RyaW5nXG5cblxuICB0eXBlIGluX2NoYW5uZWwgPSB7XG4gICAgbXV0YWJsZSBpY19lb2YgOiBib29sO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyIDogY2hhcjtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jaGFyX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfbGluZV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX3Rva2VuX2NvdW50IDogaW50O1xuICAgIGljX2dldF9uZXh0X2NoYXIgOiB1bml0IC0+IGNoYXI7XG4gICAgaWNfdG9rZW5fYnVmZmVyIDogQnVmZmVyLnQ7XG4gICAgaWNfaW5wdXRfbmFtZSA6IGluX2NoYW5uZWxfbmFtZTtcbiAgfVxuXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIGxldCBudWxsX2NoYXIgPSAnXFwwMDAnXG5cbiAgKCogUmVhZHMgYSBuZXcgY2hhcmFjdGVyIGZyb20gaW5wdXQgYnVmZmVyLlxuICAgICBOZXh0X2NoYXIgbmV2ZXIgZmFpbHMsIGV2ZW4gaW4gY2FzZSBvZiBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IHRoZW4gc2ltcGx5IHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbi4gKilcbiAgbGV0IG5leHRfY2hhciBpYiA9XG4gICAgdHJ5XG4gICAgICBsZXQgYyA9IGliLmljX2dldF9uZXh0X2NoYXIgKCkgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIHRydWU7XG4gICAgICBpYi5pY19jaGFyX2NvdW50IDwtIHN1Y2MgaWIuaWNfY2hhcl9jb3VudDtcbiAgICAgIGlmIGMgPSAnXFxuJyB0aGVuIGliLmljX2xpbmVfY291bnQgPC0gc3VjYyBpYi5pY19saW5lX2NvdW50O1xuICAgICAgYyB3aXRoXG4gICAgfCBFbmRfb2ZfZmlsZSAtPlxuICAgICAgbGV0IGMgPSBudWxsX2NoYXIgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlO1xuICAgICAgaWIuaWNfZW9mIDwtIHRydWU7XG4gICAgICBjXG5cblxuICBsZXQgcGVla19jaGFyIGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2N1cnJlbnRfY2hhclxuICAgIGVsc2UgbmV4dF9jaGFyIGliXG5cblxuICAoKiBSZXR1cm5zIGEgdmFsaWQgY3VycmVudCBjaGFyIGZvciB0aGUgaW5wdXQgYnVmZmVyLiBJbiBwYXJ0aWN1bGFyXG4gICAgIG5vIGlycmVsZXZhbnQgbnVsbCBjaGFyYWN0ZXIgKGFzIHNldCBieSBbbmV4dF9jaGFyXSBpbiBjYXNlIG9mIGVuZFxuICAgICBvZiBpbnB1dCkgaXMgcmV0dXJuZWQsIHNpbmNlIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW5cbiAgICAgW25leHRfY2hhcl0gc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uIHdoaWxlIHRyeWluZyB0byByZWFkIGFcbiAgICAgbmV3IGNoYXJhY3Rlci4gKilcbiAgbGV0IGNoZWNrZWRfcGVla19jaGFyIGliID1cbiAgICBsZXQgYyA9IHBlZWtfY2hhciBpYiBpblxuICAgIGlmIGliLmljX2VvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAgIGNcblxuXG4gIGxldCBlbmRfb2ZfaW5wdXQgaWIgPVxuICAgIGlnbm9yZSAocGVla19jaGFyIGliKTtcbiAgICBpYi5pY19lb2ZcblxuXG4gIGxldCBlb2YgaWIgPSBpYi5pY19lb2ZcblxuICBsZXQgYmVnaW5uaW5nX29mX2lucHV0IGliID0gaWIuaWNfY2hhcl9jb3VudCA9IDBcblxuICBsZXQgbmFtZV9vZl9pbnB1dCBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgX2ljIC0+IFwidW5uYW1lZCBTdGRsaWIgaW5wdXQgY2hhbm5lbFwiXG4gICAgfCBGcm9tX2ZpbGUgKGZuYW1lLCBfaWMpIC0+IGZuYW1lXG4gICAgfCBGcm9tX2Z1bmN0aW9uIC0+IFwidW5uYW1lZCBmdW5jdGlvblwiXG4gICAgfCBGcm9tX3N0cmluZyAtPiBcInVubmFtZWQgY2hhcmFjdGVyIHN0cmluZ1wiXG5cblxuICBsZXQgY2hhcl9jb3VudCBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jaGFyX2NvdW50IC0gMVxuICAgIGVsc2UgaWIuaWNfY2hhcl9jb3VudFxuXG5cbiAgbGV0IGxpbmVfY291bnQgaWIgPSBpYi5pY19saW5lX2NvdW50XG5cbiAgbGV0IHJlc2V0X3Rva2VuIGliID0gQnVmZmVyLnJlc2V0IGliLmljX3Rva2VuX2J1ZmZlclxuXG4gIGxldCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiA9IGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZVxuXG4gIGxldCB0b2tlbiBpYiA9XG4gICAgbGV0IHRva2VuX2J1ZmZlciA9IGliLmljX3Rva2VuX2J1ZmZlciBpblxuICAgIGxldCB0b2sgPSBCdWZmZXIuY29udGVudHMgdG9rZW5fYnVmZmVyIGluXG4gICAgQnVmZmVyLmNsZWFyIHRva2VuX2J1ZmZlcjtcbiAgICBpYi5pY190b2tlbl9jb3VudCA8LSBzdWNjIGliLmljX3Rva2VuX2NvdW50O1xuICAgIHRva1xuXG5cbiAgbGV0IHRva2VuX2NvdW50IGliID0gaWIuaWNfdG9rZW5fY291bnRcblxuICBsZXQgc2tpcF9jaGFyIHdpZHRoIGliID1cbiAgICBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjtcbiAgICB3aWR0aFxuXG5cbiAgbGV0IGlnbm9yZV9jaGFyIHdpZHRoIGliID0gc2tpcF9jaGFyICh3aWR0aCAtIDEpIGliXG5cbiAgbGV0IHN0b3JlX2NoYXIgd2lkdGggaWIgYyA9XG4gICAgQnVmZmVyLmFkZF9jaGFyIGliLmljX3Rva2VuX2J1ZmZlciBjO1xuICAgIGlnbm9yZV9jaGFyIHdpZHRoIGliXG5cblxuICBsZXQgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSA9IDEwMjRcblxuICBsZXQgY3JlYXRlIGluYW1lIG5leHQgPSB7XG4gICAgaWNfZW9mID0gZmFsc2U7XG4gICAgaWNfY3VycmVudF9jaGFyID0gbnVsbF9jaGFyO1xuICAgIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA9IGZhbHNlO1xuICAgIGljX2NoYXJfY291bnQgPSAwO1xuICAgIGljX2xpbmVfY291bnQgPSAwO1xuICAgIGljX3Rva2VuX2NvdW50ID0gMDtcbiAgICBpY19nZXRfbmV4dF9jaGFyID0gbmV4dDtcbiAgICBpY190b2tlbl9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemU7XG4gICAgaWNfaW5wdXRfbmFtZSA9IGluYW1lO1xuICB9XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgcyA9XG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA+PSBsZW4gdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlXG4gICAgICBsZXQgYyA9IHMuWyFpXSBpblxuICAgICAgaW5jciBpO1xuICAgICAgYyBpblxuICAgIGNyZWF0ZSBGcm9tX3N0cmluZyBuZXh0XG5cblxuICBsZXQgZnJvbV9mdW5jdGlvbiA9IGNyZWF0ZSBGcm9tX2Z1bmN0aW9uXG5cbiAgKCogU2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsLiAqKVxuXG4gICgqIFBvc2l0aW9uIG9mIHRoZSBwcm9ibGVtOlxuXG4gICAgIFdlIGNhbm5vdCBwcmV2ZW50IHRoZSBzY2FubmluZyBtZWNoYW5pc20gdG8gdXNlIG9uZSBsb29rYWhlYWQgY2hhcmFjdGVyLFxuICAgICBpZiBuZWVkZWQgYnkgdGhlIHNlbWFudGljcyBvZiB0aGUgZm9ybWF0IHN0cmluZyBzcGVjaWZpY2F0aW9ucyAoZS5nLiBhXG4gICAgIHRyYWlsaW5nICdza2lwIHNwYWNlJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtYXQgc3RyaW5nKTsgaW4gdGhpcyBjYXNlLFxuICAgICB0aGUgbWFuZGF0b3J5IGxvb2thaGVhZCBjaGFyYWN0ZXIgaXMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgaW5wdXQgYW5kIG5vdFxuICAgICB1c2VkIHRvIHJldHVybiB0aGUgdG9rZW4gcmVhZC4gSXQgaXMgdGh1cyBtYW5kYXRvcnkgdG8gYmUgYWJsZSB0byBzdG9yZVxuICAgICBhbiB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBzb21ld2hlcmUgdG8gZ2V0IGl0IGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXJcbiAgICAgb2YgdGhlIG5leHQgc2Nhbi5cblxuICAgICBUbyBjaXJjdW12ZW50IHRoaXMgcHJvYmxlbSwgYWxsIHRoZSBzY2FubmluZyBmdW5jdGlvbnMgZ2V0IGEgbG93IGxldmVsXG4gICAgIGlucHV0IGJ1ZmZlciBhcmd1bWVudCB3aGVyZSB0aGV5IHN0b3JlIHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyIHdoZW5cbiAgICAgbmVlZGVkOyBhZGRpdGlvbmFsbHksIHRoZSBpbnB1dCBidWZmZXIgaXMgdGhlIG9ubHkgc291cmNlIG9mIGNoYXJhY3RlciBvZlxuICAgICBhIHNjYW5uZXIuIFRoZSBbc2NhbmJ1Zl0gaW5wdXQgYnVmZmVycyBhcmUgZGVmaW5lZCBpbiBtb2R1bGUgeyFTY2FubmluZ30uXG5cbiAgICAgTm93IHdlIHVuZGVyc3RhbmQgdGhhdCBpdCBpcyBleHRyZW1lbHkgaW1wb3J0YW50IHRoYXQgcmVsYXRlZCBhbmRcbiAgICAgc3VjY2Vzc2l2ZSBjYWxscyB0byBzY2FubmVycyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBzYW1lIGlucHV0IGJ1ZmZlci5cbiAgICAgSW4gZWZmZWN0LCBpZiBhIHNjYW5uZXIgW3NjYW4xXSBpcyByZWFkaW5nIGZyb20gW2liMV0gYW5kIHN0b3JlcyBhblxuICAgICB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBbYzFdIGludG8gaXRzIGlucHV0IGJ1ZmZlciBbaWIxXSwgdGhlblxuICAgICBhbm90aGVyIHNjYW5uZXIgW3NjYW4yXSBub3QgcmVhZGluZyBmcm9tIHRoZSBzYW1lIGJ1ZmZlciBbaWIxXSB3aWxsIG1pc3NcbiAgICAgdGhlIGNoYXJhY3RlciBbYzFdLCBzZWVtaW5nbHkgdmFuaXNoZWQgaW4gdGhlIGFpciBmcm9tIHRoZSBwb2ludCBvZiB2aWV3XG4gICAgIG9mIFtzY2FuMl0uXG5cbiAgICAgVGhpcyBtZWNoYW5pc20gd29ya3MgcGVyZmVjdGx5IHRvIHJlYWQgZnJvbSBzdHJpbmdzLCBmcm9tIGZpbGVzLCBhbmQgZnJvbVxuICAgICBmdW5jdGlvbnMsIHNpbmNlIGluIHRob3NlIGNhc2VzLCBhbGxvY2F0aW5nIHR3byBidWZmZXJzIHJlYWRpbmcgZnJvbSB0aGVcbiAgICAgc2FtZSBzb3VyY2UgaXMgdW5uYXR1cmFsLlxuXG4gICAgIFN0aWxsLCB0aGVyZSBpcyBhIGRpZmZpY3VsdHkgaW4gdGhlIGNhc2Ugb2Ygc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dFxuICAgICBjaGFubmVsLiBJbiBlZmZlY3QsIHdoZW4gc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsIFtpY10sIHRoaXMgY2hhbm5lbFxuICAgICBtYXkgbm90IGhhdmUgYmVlbiBhbGxvY2F0ZWQgZnJvbSB3aXRoaW4gdGhpcyBsaWJyYXJ5LiBIZW5jZSwgaXQgbWF5IGJlXG4gICAgIHNoYXJlZCAodHdvIGZ1bmN0aW9ucyBvZiB0aGUgdXNlcidzIHByb2dyYW0gbWF5IHN1Y2Nlc3NpdmVseSByZWFkIGZyb21cbiAgICAgW2ljXSkuIFRoaXMgaXMgaGlnaGx5IGVycm9yIHByb25lIHNpbmNlLCBvbmUgb2YgdGhlIGZ1bmN0aW9uIG1heSBzZWVrIHRoZVxuICAgICBpbnB1dCBjaGFubmVsLCB3aGlsZSB0aGUgb3RoZXIgZnVuY3Rpb24gaGFzIHN0aWxsIGFuIHVudXNlZCBsb29rYWhlYWRcbiAgICAgY2hhcmFjdGVyIGluIGl0cyBpbnB1dCBidWZmZXIuIEluIGNvbmNsdXNpb24sIHlvdSBzaG91bGQgbmV2ZXIgbWl4IGRpcmVjdFxuICAgICBsb3cgbGV2ZWwgcmVhZGluZyBhbmQgaGlnaCBsZXZlbCBzY2FubmluZyBmcm9tIHRoZSBzYW1lIGlucHV0IGNoYW5uZWwuXG5cbiAgKilcblxuICAoKiBQZXJmb3JtIGJ1ZmZlcml6ZWQgaW5wdXQgdG8gaW1wcm92ZSBlZmZpY2llbmN5LiAqKVxuICBsZXQgZmlsZV9idWZmZXJfc2l6ZSA9IHJlZiAxMDI0XG5cbiAgKCogVGhlIHNjYW5uZXIgY2xvc2VzIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dC4gKilcbiAgbGV0IHNjYW5fY2xvc2VfYXRfZW5kIGljID0gU3RkbGliLmNsb3NlX2luIGljOyByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gICgqIFRoZSBzY2FubmVyIGRvZXMgbm90IGNsb3NlIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dDpcbiAgICAgaXQganVzdCByYWlzZXMgW0VuZF9vZl9maWxlXS4gKilcbiAgbGV0IHNjYW5fcmFpc2VfYXRfZW5kIF9pYyA9IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgbGV0IGZyb21faWMgc2Nhbl9jbG9zZV9pYyBpbmFtZSBpYyA9XG4gICAgbGV0IGxlbiA9ICFmaWxlX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxpbSA9IHJlZiAwIGluXG4gICAgbGV0IGVvZiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpIDwgIWxpbSB0aGVuIGJlZ2luIGxldCBjID0gQnl0ZXMuZ2V0IGJ1ZiAhaSBpbiBpbmNyIGk7IGMgZW5kIGVsc2VcbiAgICAgIGlmICFlb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlIGJlZ2luXG4gICAgICAgIGxpbSA6PSBpbnB1dCBpYyBidWYgMCBsZW47XG4gICAgICAgIGlmICFsaW0gPSAwIHRoZW4gYmVnaW4gZW9mIDo9IHRydWU7IHNjYW5fY2xvc2VfaWMgaWMgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBpIDo9IDE7XG4gICAgICAgICAgQnl0ZXMuZ2V0IGJ1ZiAwXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGluXG4gICAgY3JlYXRlIGluYW1lIG5leHRcblxuXG4gIGxldCBmcm9tX2ljX2Nsb3NlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9jbG9zZV9hdF9lbmRcbiAgbGV0IGZyb21faWNfcmFpc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLlxuICAgICBPbmUgY291bGQgdHJ5IHRvIGRlZmluZSBbc3RkaWJdIGFzIGEgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgYSBjaGFyYWN0ZXJcbiAgICAgYXQgYSB0aW1lIChubyBidWZmZXJpemF0aW9uIGF0IGFsbCksIGJ1dCB1bmZvcnR1bmF0ZWx5IHRoZSB0b3AtbGV2ZWxcbiAgICAgaW50ZXJhY3Rpb24gd291bGQgYmUgd3JvbmcuIFRoaXMgaXMgZHVlIHRvIHNvbWUga2luZCBvZlxuICAgICAncmFjZSBjb25kaXRpb24nIHdoZW4gcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLFxuICAgICBzaW5jZSB0aGUgaW50ZXJhY3RpdmUgY29tcGlsZXIgYW5kIFtTY2FuZi5zY2FuZl0gd2lsbCBzaW11bHRhbmVvdXNseVxuICAgICByZWFkIHRoZSBtYXRlcmlhbCB0aGV5IG5lZWQgZnJvbSBbU3RkbGliLnN0ZGluXTsgdGhlbiwgY29uZnVzaW9uXG4gICAgIHdpbGwgcmVzdWx0IGZyb20gd2hhdCBzaG91bGQgYmUgcmVhZCBieSB0aGUgdG9wLWxldmVsIGFuZCB3aGF0IHNob3VsZCBiZVxuICAgICByZWFkIGJ5IFtTY2FuZi5zY2FuZl0uXG4gICAgIFRoaXMgaXMgZXZlbiBtb3JlIGNvbXBsaWNhdGVkIGJ5IHRoZSBvbmUgY2hhcmFjdGVyIGxvb2thaGVhZCB0aGF0XG4gICAgIFtTY2FuZi5zY2FuZl0gaXMgc29tZXRpbWVzIG9ibGlnZWQgdG8gbWFpbnRhaW46IHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyXG4gICAgIHdpbGwgYmUgYXZhaWxhYmxlIGZvciB0aGUgbmV4dCBbU2NhbmYuc2NhbmZdIGVudHJ5LCBzZWVtaW5nbHkgY29taW5nIGZyb21cbiAgICAgbm93aGVyZS5cbiAgICAgQWxzbyBubyBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuIHJlYWRpbmcgZnJvbSBzdGRpbjogaWYgbm90IGVub3VnaFxuICAgICBjaGFyYWN0ZXJzIGhhdmUgYmVlbiByZWFkLCB3ZSBzaW1wbHkgYXNrIHRvIHJlYWQgbW9yZS4gKilcbiAgbGV0IHN0ZGluID1cbiAgICBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG4gICAgICAoRnJvbV9maWxlIChcIi1cIiwgU3RkbGliLnN0ZGluKSkgU3RkbGliLnN0ZGluXG5cblxuICBsZXQgc3RkaWIgPSBzdGRpblxuXG4gIGxldCBvcGVuX2luX2ZpbGUgb3Blbl9pbiBmbmFtZSA9XG4gICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgIHwgXCItXCIgLT4gc3RkaW5cbiAgICB8IGZuYW1lIC0+XG4gICAgICBsZXQgaWMgPSBvcGVuX2luIGZuYW1lIGluXG4gICAgICBmcm9tX2ljX2Nsb3NlX2F0X2VuZCAoRnJvbV9maWxlIChmbmFtZSwgaWMpKSBpY1xuXG5cbiAgbGV0IG9wZW5faW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5cbiAgbGV0IG9wZW5faW5fYmluID0gb3Blbl9pbl9maWxlIFN0ZGxpYi5vcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2ZpbGUgPSBvcGVuX2luXG4gIGxldCBmcm9tX2ZpbGVfYmluID0gb3Blbl9pbl9iaW5cblxuICBsZXQgZnJvbV9jaGFubmVsIGljID1cbiAgICBmcm9tX2ljX3JhaXNlX2F0X2VuZCAoRnJvbV9jaGFubmVsIGljKSBpY1xuXG5cbiAgbGV0IGNsb3NlX2luIGliID1cbiAgICBtYXRjaCBpYi5pY19pbnB1dF9uYW1lIHdpdGhcbiAgICB8IEZyb21fY2hhbm5lbCBpYyAtPlxuICAgICAgU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2ZpbGUgKF9mbmFtZSwgaWMpIC0+IFN0ZGxpYi5jbG9zZV9pbiBpY1xuICAgIHwgRnJvbV9mdW5jdGlvbiB8IEZyb21fc3RyaW5nIC0+ICgpXG5cblxuICAoKlxuICAgICBPYnNvbGV0ZTogYSBtZW1vIFtmcm9tX2NoYW5uZWxdIHZlcnNpb24gdG8gYnVpbGQgYSBbU2Nhbm5pbmcuaW5fY2hhbm5lbF1cbiAgICAgc2Nhbm5pbmcgYnVmZmVyIG91dCBvZiBhIFtTdGRsaWIuaW5fY2hhbm5lbF0uXG4gICAgIFRoaXMgZnVuY3Rpb24gd2FzIHVzZWQgdG8gdHJ5IHRvIHByZXNlcnZlIHRoZSBzY2FubmluZ1xuICAgICBzZW1hbnRpY3MgZm9yIHRoZSAobm93IG9ic29sZXRlKSBmdW5jdGlvbiBbZnNjYW5mXS5cbiAgICAgR2l2ZW4gdGhhdCBhbGwgc2Nhbm5lciBtdXN0IHJlYWQgZnJvbSBhIFtTY2FubmluZy5pbl9jaGFubmVsXSBzY2FubmluZ1xuICAgICBidWZmZXIsIFtmc2NhbmZdIG11c3QgcmVhZCBmcm9tIG9uZSFcbiAgICAgTW9yZSBwcmVjaXNlbHksIGdpdmVuIFtpY10sIGFsbCBzdWNjZXNzaXZlIGNhbGxzIFtmc2NhbmYgaWNdIG11c3QgcmVhZFxuICAgICBmcm9tIHRoZSBzYW1lIHNjYW5uaW5nIGJ1ZmZlci5cbiAgICAgVGhpcyBvYmxpZ2VkIHRoaXMgbGlicmFyeSB0byBhbGxvY2F0ZWQgc2Nhbm5pbmcgYnVmZmVycyB0aGF0IHdlcmVcbiAgICAgbm90IHByb3Blcmx5IGdhcmJhZ2UgY29sbGVjdGFibGUsIGhlbmNlIGxlYWRpbmcgdG8gbWVtb3J5IGxlYWtzLlxuICAgICBJZiB5b3UgbmVlZCB0byByZWFkIGZyb20gYSBbU3RkbGliLmluX2NoYW5uZWxdIGlucHV0IGNoYW5uZWxcbiAgICAgW2ljXSwgc2ltcGx5IGRlZmluZSBhIFtTY2FubmluZy5pbl9jaGFubmVsXSBmb3JtYXR0ZWQgaW5wdXQgY2hhbm5lbCBhcyBpblxuICAgICBbbGV0IGliID0gU2Nhbm5pbmcuZnJvbV9jaGFubmVsIGljXSwgdGhlbiB1c2UgW1NjYW5mLmJzY2FuZiBpYl0gYXMgdXN1YWwuXG4gICopXG4gIGxldCBtZW1vX2Zyb21faWMgPVxuICAgIGxldCBtZW1vID0gcmVmIFtdIGluXG4gICAgKGZ1biBzY2FuX2Nsb3NlX2ljIGljIC0+XG4gICAgIHRyeSBMaXN0LmFzc3EgaWMgIW1lbW8gd2l0aFxuICAgICB8IE5vdF9mb3VuZCAtPlxuICAgICAgIGxldCBpYiA9XG4gICAgICAgICBmcm9tX2ljIHNjYW5fY2xvc2VfaWMgKEZyb21fY2hhbm5lbCBpYykgaWMgaW5cbiAgICAgICBtZW1vIDo9IChpYywgaWIpIDo6ICFtZW1vO1xuICAgICAgIGliKVxuXG5cbiAgKCogT2Jzb2xldGU6IHNlZSB7IW1lbW9fZnJvbV9pY30gYWJvdmUuICopXG4gIGxldCBtZW1vX2Zyb21fY2hhbm5lbCA9IG1lbW9fZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuXG5lbmRcblxuXG4oKiBGb3JtYXR0ZWQgaW5wdXQgZnVuY3Rpb25zLiAqKVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2Nhbm5lciA9XG4gICAgICgnYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgJ2IsICdjLCAnYSAtPiAnZCwgJ2QpIGZvcm1hdDYgLT4gJ2NcblxuXG4oKiBSZXBvcnRpbmcgZXJyb3JzLiAqKVxuZXhjZXB0aW9uIFNjYW5fZmFpbHVyZSBvZiBzdHJpbmdcblxubGV0IGJhZF9pbnB1dCBzID0gcmFpc2UgKFNjYW5fZmFpbHVyZSBzKVxuXG5sZXQgYmFkX2lucHV0X2VzY2FwZSBjID1cbiAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImlsbGVnYWwgZXNjYXBlIGNoYXJhY3RlciAlQ1wiIGMpXG5cblxubGV0IGJhZF90b2tlbl9sZW5ndGggbWVzc2FnZSA9XG4gIGJhZF9pbnB1dFxuICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgIFwic2Nhbm5pbmcgb2YgJXMgZmFpbGVkOiBcXFxuICAgICAgICB0aGUgc3BlY2lmaWVkIGxlbmd0aCB3YXMgdG9vIHNob3J0IGZvciB0b2tlblwiXG4gICAgICAgbWVzc2FnZSlcblxuXG5sZXQgYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHByZW1hdHVyZSBlbmQgb2YgZmlsZSBvY2N1cnJlZCBiZWZvcmUgZW5kIG9mIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJubyBkb3Qgb3IgZXhwb25lbnQgcGFydCBmb3VuZCBpbiBmbG9hdCB0b2tlblwiXG5cblxubGV0IGJhZF9oZXhfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJub3QgYSB2YWxpZCBmbG9hdCBpbiBoZXhhZGVjaW1hbCBub3RhdGlvblwiXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaF9lcnIgYyBjaSA9XG4gIFByaW50Zi5zcHJpbnRmIFwibG9va2luZyBmb3IgJUMsIGZvdW5kICVDXCIgYyBjaVxuXG5cbmxldCBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaSA9XG4gIGJhZF9pbnB1dCAoY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpKVxuXG5cbmxldCByZWMgc2tpcF93aGl0ZXMgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlbiBiZWdpblxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+XG4gICAgICBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgc2tpcF93aGl0ZXMgaWJcbiAgICB8IF8gLT4gKClcbiAgZW5kXG5cblxuKCogQ2hlY2tpbmcgdGhhdCBbY10gaXMgaW5kZWVkIGluIHRoZSBpbnB1dCwgdGhlbiBza2lwcyBpdC5cbiAgIEluIHRoaXMgY2FzZSwgdGhlIGNoYXJhY3RlciBbY10gaGFzIGJlZW4gZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlXG4gICBmb3JtYXQgYXMgYmVpbmcgbWFuZGF0b3J5IGluIHRoZSBpbnB1dDsgaGVuY2Ugd2Ugc2hvdWxkIGZhaWwgd2l0aFxuICAgW0VuZF9vZl9maWxlXSBpbiBjYXNlIG9mIGVuZF9vZl9pbnB1dC5cbiAgIChSZW1lbWJlciB0aGF0IFtTY2FuX2ZhaWx1cmVdIGlzIHJhaXNlZCBvbmx5IHdoZW4gKHdlIGNhbiBwcm92ZSBieVxuICAgZXZpZGVuY2UpIHRoYXQgdGhlIGlucHV0IGRvZXMgbm90IG1hdGNoIHRoZSBmb3JtYXQgc3RyaW5nIGdpdmVuLiBXZSBtdXN0XG4gICB0aHVzIGRpZmZlcmVudGlhdGUgW0VuZF9vZl9maWxlXSBhcyBhbiBlcnJvciBkdWUgdG8gbGFjayBvZiBpbnB1dCwgYW5kXG4gICBbU2Nhbl9mYWlsdXJlXSB3aGljaCBpcyBkdWUgdG8gcHJvdmFibHkgd3JvbmcgaW5wdXQuIEkgYW0gbm90IHN1cmUgdGhpcyBpc1xuICAgd29ydGggdGhlIGJ1cmRlbjogaXQgaXMgY29tcGxleCBhbmQgc29tZWhvdyBzdWJsaW1pbmFsOyBzaG91bGQgYmUgY2xlYXJlclxuICAgdG8gZmFpbCB3aXRoIFNjYW5fZmFpbHVyZSBcIk5vdCBlbm91Z2ggaW5wdXQgdG8gY29tcGxldGUgc2Nhbm5pbmdcIiEpXG5cbiAgIFRoYXQncyB3aHksIHdhaXRpbmcgZm9yIGEgYmV0dGVyIHNvbHV0aW9uLCB3ZSB1c2UgY2hlY2tlZF9wZWVrX2NoYXIgaGVyZS5cbiAgIFdlIGFyZSBhbHNvIGNhcmVmdWwgdG8gdHJlYXQgXCJcXHJcXG5cIiBpbiB0aGUgaW5wdXQgYXMgYW4gZW5kIG9mIGxpbmUgbWFya2VyOlxuICAgaXQgYWx3YXlzIG1hdGNoZXMgYSAnXFxuJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBpbnB1dCBmb3JtYXQgc3RyaW5nLiAqKVxubGV0IHJlYyBjaGVja19jaGFyIGliIGMgPVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnICcgLT4gc2tpcF93aGl0ZXMgaWJcbiAgfCAnXFxuJyAtPiBjaGVja19uZXdsaW5lIGliXG4gIHwgYyAtPiBjaGVja190aGlzX2NoYXIgaWIgY1xuXG5hbmQgY2hlY2tfdGhpc19jaGFyIGliIGMgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBjaSA9IGMgdGhlbiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiBlbHNlXG4gIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cbmFuZCBjaGVja19uZXdsaW5lIGliID1cbiAgbGV0IGNpID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggY2kgd2l0aFxuICB8ICdcXG4nIC0+IFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gIHwgJ1xccicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7IGNoZWNrX3RoaXNfY2hhciBpYiAnXFxuJ1xuICB8IF8gLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXG4nIGNpXG5cblxuKCogRXh0cmFjdGluZyB0b2tlbnMgZnJvbSB0aGUgb3V0cHV0IHRva2VuIGJ1ZmZlci4gKilcblxubGV0IHRva2VuX2NoYXIgaWIgPSAoU2Nhbm5pbmcudG9rZW4gaWIpLlswXVxuXG5sZXQgdG9rZW5fc3RyaW5nID0gU2Nhbm5pbmcudG9rZW5cblxubGV0IHRva2VuX2Jvb2wgaWIgPVxuICBtYXRjaCBTY2FubmluZy50b2tlbiBpYiB3aXRoXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IHMgLT4gYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImludmFsaWQgYm9vbGVhbiAnJXMnXCIgcylcblxuXG4oKiBUaGUgdHlwZSBvZiBpbnRlZ2VyIGNvbnZlcnNpb25zLiAqKVxudHlwZSBpbnRlZ2VyX2NvbnZlcnNpb24gPVxuICB8IEJfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBiaW5hcnkgY29udmVyc2lvbiAqKVxuICB8IERfY29udmVyc2lvbiAoKiBTaWduZWQgZGVjaW1hbCBjb252ZXJzaW9uICopXG4gIHwgSV9jb252ZXJzaW9uICgqIFNpZ25lZCBpbnRlZ2VyIGNvbnZlcnNpb24gKilcbiAgfCBPX2NvbnZlcnNpb24gKCogVW5zaWduZWQgb2N0YWwgY29udmVyc2lvbiAqKVxuICB8IFVfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBYX2NvbnZlcnNpb24gKCogVW5zaWduZWQgaGV4YWRlY2ltYWwgY29udmVyc2lvbiAqKVxuXG5cbmxldCBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciA9IGZ1bmN0aW9uXG4gIHwgJ2InIC0+IEJfY29udmVyc2lvblxuICB8ICdkJyAtPiBEX2NvbnZlcnNpb25cbiAgfCAnaScgLT4gSV9jb252ZXJzaW9uXG4gIHwgJ28nIC0+IE9fY29udmVyc2lvblxuICB8ICd1JyAtPiBVX2NvbnZlcnNpb25cbiAgfCAneCcgfCAnWCcgLT4gWF9jb252ZXJzaW9uXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuXG4oKiBFeHRyYWN0IGFuIGludGVnZXIgbGl0ZXJhbCB0b2tlbi5cbiAgIFNpbmNlIHRoZSBmdW5jdGlvbnMgU3RkbGliLippbnQqX29mX3N0cmluZyBkbyBub3QgYWNjZXB0IGEgbGVhZGluZyArLFxuICAgd2Ugc2tpcCBpdCBpZiBuZWNlc3NhcnkuICopXG5sZXQgdG9rZW5faW50X2xpdGVyYWwgY29udiBpYiA9XG4gIGxldCB0b2sgPVxuICAgIG1hdGNoIGNvbnYgd2l0aFxuICAgIHwgRF9jb252ZXJzaW9uIHwgSV9jb252ZXJzaW9uIC0+IFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBVX2NvbnZlcnNpb24gLT4gXCIwdVwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IE9fY29udmVyc2lvbiAtPiBcIjBvXCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgWF9jb252ZXJzaW9uIC0+IFwiMHhcIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBCX2NvbnZlcnNpb24gLT4gXCIwYlwiIF4gU2Nhbm5pbmcudG9rZW4gaWIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHRvayBpblxuICBpZiBsID0gMCB8fCB0b2suWzBdIDw+ICcrJyB0aGVuIHRvayBlbHNlIFN0cmluZy5zdWIgdG9rIDEgKGwgLSAxKVxuXG5cbigqIEFsbCB0aGUgZnVuY3Rpb25zIHRoYXQgY29udmVydCBhIHN0cmluZyB0byBhIG51bWJlciByYWlzZSB0aGUgZXhjZXB0aW9uXG4gICBGYWlsdXJlIHdoZW4gdGhlIGNvbnZlcnNpb24gaXMgbm90IHBvc3NpYmxlLlxuICAgVGhpcyBleGNlcHRpb24gaXMgdGhlbiB0cmFwcGVkIGluIFtrc2NhbmZdLiAqKVxubGV0IHRva2VuX2ludCBjb252IGliID0gaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcblxubGV0IHRva2VuX2Zsb2F0IGliID0gZmxvYXRfb2Zfc3RyaW5nIChTY2FubmluZy50b2tlbiBpYilcblxuKCogVG8gc2NhbiBuYXRpdmUgaW50cywgaW50MzIgYW5kIGludDY0IGludGVnZXJzLlxuICAgV2UgY2Fubm90IGFjY2VzcyB0byBjb252ZXJzaW9ucyB0by9mcm9tIHN0cmluZ3MgZm9yIHRob3NlIHR5cGVzLFxuICAgTmF0aXZlaW50Lm9mX3N0cmluZywgSW50MzIub2Zfc3RyaW5nLCBhbmQgSW50NjQub2Zfc3RyaW5nLFxuICAgc2luY2UgdGhvc2UgbW9kdWxlcyBhcmUgbm90IGF2YWlsYWJsZSB0byBbU2NhbmZdLlxuICAgSG93ZXZlciwgd2UgY2FuIGJpbmQgYW5kIHVzZSB0aGUgY29ycmVzcG9uZGluZyBwcmltaXRpdmVzIHRoYXQgYXJlXG4gICBhdmFpbGFibGUgaW4gdGhlIHJ1bnRpbWUuICopXG5leHRlcm5hbCBuYXRpdmVpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50MzJfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIGludDY0X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5cbmxldCB0b2tlbl9uYXRpdmVpbnQgY29udiBpYiA9IG5hdGl2ZWludF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5sZXQgdG9rZW5faW50MzIgY29udiBpYiA9IGludDMyX29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQ2NCBjb252IGliID0gaW50NjRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG4oKiBTY2FubmluZyBudW1iZXJzLiAqKVxuXG4oKiBEaWdpdHMgc2Nhbm5pbmcgZnVuY3Rpb25zIHN1cHBvc2UgdGhhdCBvbmUgY2hhcmFjdGVyIGhhcyBiZWVuIGNoZWNrZWQgYW5kXG4gICBpcyBhdmFpbGFibGUsIHNpbmNlIHRoZXkgcmV0dXJuIGF0IGVuZCBvZiBmaWxlIHdpdGggdGhlIGN1cnJlbnRseSBmb3VuZFxuICAgdG9rZW4gc2VsZWN0ZWQuXG5cbiAgIFB1dCBpdCBpbiBhbm90aGVyIHdheSwgdGhlIGRpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc2NhbiBmb3IgYSBwb3NzaWJseVxuICAgZW1wdHkgc2VxdWVuY2Ugb2YgZGlnaXRzLCAoaGVuY2UsIGEgc3VjY2Vzc2Z1bCBzY2FubmluZyBmcm9tIG9uZSBvZiB0aG9zZVxuICAgZnVuY3Rpb25zIGRvZXMgbm90IGltcGx5IHRoYXQgdGhlIHRva2VuIGlzIGEgd2VsbC1mb3JtZWQgbnVtYmVyOiB0byBnZXQgYVxuICAgdHJ1ZSBudW1iZXIsIGl0IGlzIG1hbmRhdG9yeSB0byBjaGVjayB0aGF0IGF0IGxlYXN0IG9uZSB2YWxpZCBkaWdpdCBpc1xuICAgYXZhaWxhYmxlIGJlZm9yZSBjYWxsaW5nIG9uZSBvZiB0aGUgZGlnaXQgc2Nhbm5pbmcgZnVuY3Rpb25zKS4gKilcblxuKCogVGhlIGRlY2ltYWwgY2FzZSBpcyB0cmVhdGVkIGVzcGVjaWFsbHkgZm9yIG9wdGltaXphdGlvbiBwdXJwb3Nlcy4gKilcbmxldCByZWMgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCAnXycgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYiBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkZWNpbWFsIGRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBjIC0+XG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSBkZWNpbWFsIGRpZ2l0XCIgYylcblxuXG4oKiBUbyBzY2FuIG51bWJlcnMgZnJvbSBvdGhlciBiYXNlcywgd2UgdXNlIGEgcHJlZGljYXRlIGFyZ3VtZW50IHRvXG4gICBzY2FuIGRpZ2l0cy4gKilcbmxldCBzY2FuX2RpZ2l0X3N0YXIgZGlnaXRwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBzY2FuX2RpZ2l0cyB3aWR0aCBpYiA9XG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgYyB3aGVuIGRpZ2l0cCBjIC0+XG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCAnXycgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuICAgIHwgXyAtPiB3aWR0aCBpblxuICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2RpZ2l0X3BsdXMgYmFzaXMgZGlnaXRwIHdpZHRoIGliID1cbiAgKCogRW5zdXJlIHdlIGhhdmUgZ290IGVub3VnaCB3aWR0aCBsZWZ0LFxuICAgICBhbmQgcmVhZCBhdCBsZWFzdCBvbmUgZGlnaXQuICopXG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkaWdpdHNcIiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgaWYgZGlnaXRwIGMgdGhlblxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWJcbiAgZWxzZVxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJjaGFyYWN0ZXIgJUMgaXMgbm90IGEgdmFsaWQgJXMgZGlnaXRcIiBjIGJhc2lzKVxuXG5cbmxldCBpc19iaW5hcnlfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnMScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9iaW5hcnlfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiYmluYXJ5XCIgaXNfYmluYXJ5X2RpZ2l0XG5cbmxldCBpc19vY3RhbF9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc3JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX29jdGFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcIm9jdGFsXCIgaXNfb2N0YWxfZGlnaXRcblxubGV0IGlzX2hleGFfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2hleGFkZWNpbWFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcImhleGFkZWNpbWFsXCIgaXNfaGV4YV9kaWdpdFxuXG4oKiBTY2FuIGEgZGVjaW1hbCBpbnRlZ2VyLiAqKVxubGV0IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgPSBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1c1xuXG5sZXQgc2Nhbl9zaWduIHdpZHRoIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnKycgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgJy0nIC0+IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgY1xuICB8IF8gLT4gd2lkdGhcblxuXG5sZXQgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2NhbiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHRoYXQgY291bGQgYmUgZ2l2ZW4gaW4gYW55IChjb21tb24pIGJhc2lzLlxuICAgSWYgZGlnaXRzIGFyZSBwcmVmaXhlZCBieSBvbmUgb2YgMHgsIDBYLCAwbywgb3IgMGIsIHRoZSBudW1iZXIgaXNcbiAgIGFzc3VtZWQgdG8gYmUgd3JpdHRlbiByZXNwZWN0aXZlbHkgaW4gaGV4YWRlY2ltYWwsIGhleGFkZWNpbWFsLFxuICAgb2N0YWwsIG9yIGJpbmFyeS4gKilcbmxldCBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICBiZWdpbiBtYXRjaCBjIHdpdGhcbiAgICB8ICd4JyB8ICdYJyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgJ28nIC0+IHNjYW5fb2N0YWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnYicgLT4gc2Nhbl9iaW5hcnlfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCBfIC0+IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGVuZFxuICB8IF8gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2ludF9jb252ZXJzaW9uIGNvbnYgd2lkdGggaWIgPVxuICBtYXRjaCBjb252IHdpdGhcbiAgfCBCX2NvbnZlcnNpb24gLT4gc2Nhbl9iaW5hcnlfaW50IHdpZHRoIGliXG4gIHwgRF9jb252ZXJzaW9uIC0+IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgfCBJX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9pbnQgd2lkdGggaWJcbiAgfCBPX2NvbnZlcnNpb24gLT4gc2Nhbl9vY3RhbF9pbnQgd2lkdGggaWJcbiAgfCBVX2NvbnZlcnNpb24gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IFhfY29udmVyc2lvbiAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbigqIFNjYW5uaW5nIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICopXG5cbigqIEZyYWN0aW9uYWwgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9mcmFjdGlvbmFsX3BhcnQgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogRXhwIHBhcnQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZWR1Y2VkIHRvIDAgZGlnaXRzLiAqKVxubGV0IHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnZScgfCAnRScgYXMgYyAtPlxuICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogU2NhbiB0aGUgaW50ZWdlciBwYXJ0IG9mIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCAobm90IHVzaW5nIHRoZVxuICAgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uIHNpbmNlIHRoZSBpbnRlZ2VyIHBhcnQgY2FuIGJlIGVtcHR5KTpcbiAgIGFuIG9wdGlvbmFsIHNpZ24sIGZvbGxvd2VkIGJ5IGEgcG9zc2libHkgZW1wdHkgc2VxdWVuY2Ugb2YgZGVjaW1hbFxuICAgZGlnaXRzIChlLmcuIC0uMSkuICopXG5sZXQgc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcblxuXG4oKlxuICAgRm9yIHRoZSB0aW1lIGJlaW5nIHdlIGhhdmUgKGFzIGZvdW5kIGluIHNjYW5mLm1saSk6XG4gICB0aGUgZmllbGQgd2lkdGggaXMgY29tcG9zZWQgb2YgYW4gb3B0aW9uYWwgaW50ZWdlciBsaXRlcmFsXG4gICBpbmRpY2F0aW5nIHRoZSBtYXhpbWFsIHdpZHRoIG9mIHRoZSB0b2tlbiB0byByZWFkLlxuICAgVW5mb3J0dW5hdGVseSwgdGhlIHR5cGUtY2hlY2tlciBsZXQgdGhlIHVzZXIgd3JpdGUgYW4gb3B0aW9uYWwgcHJlY2lzaW9uLFxuICAgc2luY2UgdGhpcyBpcyB2YWxpZCBmb3IgcHJpbnRmIGZvcm1hdCBzdHJpbmdzLlxuXG4gICBUaHVzLCB0aGUgbmV4dCBzdGVwIGZvciBTY2FuZiBpcyB0byBzdXBwb3J0IGEgZnVsbCB3aWR0aCBhbmQgcHJlY2lzaW9uXG4gICBpbmRpY2F0aW9uLCBtb3JlIG9yIGxlc3Mgc2ltaWxhciB0byB0aGUgb25lIGZvciBwcmludGYsIHBvc3NpYmx5IGV4dGVuZGVkXG4gICB0byB0aGUgc3BlY2lmaWNhdGlvbiBvZiBhIFttYXgsIG1pbl0gcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZFxuICAgZm9yIHN0cmluZ3MuIFNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgc3BlYyBmb3Igc2NhbmYubWxpOlxuXG4gICBUaGUgb3B0aW9uYWwgW3dpZHRoXSBpcyBhbiBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIG1heGltYWxcbiAgIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLiBGb3IgaW5zdGFuY2UsIFslNmRdIHJlYWRzIGFuIGludGVnZXIsXG4gICBoYXZpbmcgYXQgbW9zdCA2IGNoYXJhY3RlcnMuXG5cbiAgIFRoZSBvcHRpb25hbCBbcHJlY2lzaW9uXSBpcyBhIGRvdCBbLl0gZm9sbG93ZWQgYnkgYW4gaW50ZWdlcjpcblxuICAgLSBpbiB0aGUgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGNvbnZlcnNpb25zIChbJWZdLCBbJWVdLCBbJWddLCBbJUZdLCBbJUVdLFxuICAgYW5kIFslRl0gY29udmVyc2lvbnMsIHRoZSBbcHJlY2lzaW9uXSBpbmRpY2F0ZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mXG4gICBkaWdpdHMgdGhhdCBtYXkgZm9sbG93IHRoZSBkZWNpbWFsIHBvaW50LiBGb3IgaW5zdGFuY2UsIFslLjRmXSByZWFkcyBhXG4gICBbZmxvYXRdIHdpdGggYXQgbW9zdCA0IGZyYWN0aW9uYWwgZGlnaXRzLFxuXG4gICAtIGluIHRoZSBzdHJpbmcgY29udmVyc2lvbnMgKFslc10sIFslU10sIFslXFxbIHJhbmdlIFxcXV0pLCBhbmQgaW4gdGhlXG4gICBpbnRlZ2VyIG51bWJlciBjb252ZXJzaW9ucyAoWyVpXSwgWyVkXSwgWyV1XSwgWyV4XSwgWyVvXSwgYW5kIHRoZWlyXG4gICBbaW50MzJdLCBbaW50NjRdLCBhbmQgW25hdGl2ZV9pbnRdIGNvcnJlc3BvbmRlbnQpLCB0aGUgW3ByZWNpc2lvbl1cbiAgIGluZGljYXRlcyB0aGUgcmVxdWlyZWQgbWluaW11bSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZCxcblxuICAgLSBvbiBhbGwgb3RoZXIgY29udmVyc2lvbnMsIHRoZSB3aWR0aCBhbmQgcHJlY2lzaW9uIHNwZWNpZnkgdGhlIFttYXgsIG1pbl1cbiAgIHJhbmdlIGZvciB0aGUgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuXG4qKVxubGV0IHNjYW5fZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoLCBwcmVjaXNpb24gZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnLicgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICBsZXQgd2lkdGggPSB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIpIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cbiAgfCBfIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cblxuXG5sZXQgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgZXJyb3Igc3RyID1cbiAgbGV0IGxvd2VyY2FzZSBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICdBJyAuLiAnWicgLT5cbiAgICAgIGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgaW50X29mX2NoYXIgJ2EnKVxuICAgIHwgXyAtPiBjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGggPSByZWYgd2lkdGggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIGxvd2VyY2FzZSBjIDw+IGxvd2VyY2FzZSBzdHIuW2ldIHRoZW4gZXJyb3IgKCk7XG4gICAgaWYgIXdpZHRoID0gMCB0aGVuIGVycm9yICgpO1xuICAgIHdpZHRoIDo9IFNjYW5uaW5nLnN0b3JlX2NoYXIgIXdpZHRoIGliIGM7XG4gIGRvbmU7XG4gICF3aWR0aFxuXG5cbmxldCBzY2FuX2hleF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBsZXQgd2lkdGggPSBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwieFwiIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICAgIClcbiAgICAgICAgICB8IF8gLT4gd2lkdGggaW5cbiAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgICAgfCBfIC0+IHdpZHRoXG4gIClcbiAgfCAnbicgfCAnTicgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJhblwiXG4gIHwgJ2knIHwgJ0knIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwibmZpbml0eVwiXG4gIHwgXyAtPiBiYWRfaGV4X2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICgqIFRoZSBlZmZlY3RpdmUgd2lkdGggYXZhaWxhYmxlIGZvciBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IGlzXG4gICAgICAgdGhlIG1pbmltdW0gb2YgZGVjbGFyZWQgcHJlY2lzaW9uIGFuZCB3aWR0aCBsZWZ0LiAqKVxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICgqIEFmdGVyIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgd2l0aCBbcHJlY2lzaW9uXSBwcm92aXNpb25hbCB3aWR0aCxcbiAgICAgICBbd2lkdGhfcHJlY2lzaW9uXSBpcyBsZWZ0LiAqKVxuICAgIGxldCB3aWR0aF9wcmVjaXNpb24gPSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIgaW5cbiAgICAoKiBIZW5jZSwgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB0b29rIGV4YWN0bHlcbiAgICAgICBbcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uXSBjaGFycy4gKilcbiAgICBsZXQgZnJhY193aWR0aCA9IHByZWNpc2lvbiAtIHdpZHRoX3ByZWNpc2lvbiBpblxuICAgICgqIEFuZCBuZXcgcHJvdmlzaW9uYWwgd2lkdGggaXMgW3dpZHRoIC0gd2lkdGhfcHJlY2lzaW9uLiAqKVxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gZnJhY193aWR0aCBpblxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8ICdlJyB8ICdFJyAtPlxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8IF8gLT4gYmFkX2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPiAoXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIGFzIGMgLT4gKFxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgICAgbGV0IHdpZHRoID0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWIgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgIHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5faGV4YWRlY2ltYWxfaW50IHByZWNpc2lvbiBpYilcbiAgICAgICAgKVxuICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gYmFkX2Zsb2F0ICgpIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICdwJyB8ICdQJyBhcyBjIC0+XG4gICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICAgICAgICB8IF8gLT4gd2lkdGhcbiAgICApXG4gICAgfCBfIC0+XG4gICAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbiAgKVxuICB8ICcxJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliXG4oKiBTcGVjaWFsIGNhc2Ugb2YgbmFuIGFuZCBpbmZpbml0eTpcbiAgfCAnaScgLT5cbiAgfCAnbicgLT5cbiopXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG4oKiBTY2FuIGEgcmVndWxhciBzdHJpbmc6XG4gICBzdG9wcyB3aGVuIGVuY291bnRlcmluZyBhIHNwYWNlLCBpZiBubyBzY2FubmluZyBpbmRpY2F0aW9uIGhhcyBiZWVuIGdpdmVuO1xuICAgb3RoZXJ3aXNlLCBzdG9wcyB3aGVuIGVuY291bnRlcmluZyB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc2Nhbm5pbmdcbiAgIGluZGljYXRpb24gW3N0cF0uXG4gICBJdCBhbHNvIHN0b3BzIGF0IGVuZCBvZiBmaWxlIG9yIHdoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgaGFzXG4gICBiZWVuIHJlYWQuICopXG5sZXQgc2Nhbl9zdHJpbmcgc3RwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBsb29wIHdpZHRoID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICBtYXRjaCBzdHAgd2l0aFxuICAgICAgfCBTb21lIGMnIHdoZW4gYyA9IGMnIC0+IFNjYW5uaW5nLnNraXBfY2hhciB3aWR0aCBpYlxuICAgICAgfCBTb21lIF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpblxuICBsb29wIHdpZHRoXG5cblxuKCogU2NhbiBhIGNoYXI6IHBlZWsgc3RyaWN0bHkgb25lIGNoYXJhY3RlciBpbiB0aGUgaW5wdXQsIHdoYXRzb2V2ZXIuICopXG5sZXQgc2Nhbl9jaGFyIHdpZHRoIGliID1cbiAgKCogVGhlIGNhc2Ugd2lkdGggPSAwIGNvdWxkIG5vdCBoYXBwZW4gaGVyZSwgc2luY2UgaXQgaXMgdGVzdGVkIGJlZm9yZVxuICAgICBjYWxsaW5nIHNjYW5fY2hhciwgaW4gdGhlIG1haW4gc2Nhbm5pbmcgZnVuY3Rpb24uXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImEgY2hhcmFjdGVyXCIgZWxzZSAqKVxuICBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIChTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYilcblxuXG5sZXQgY2hhcl9mb3JfYmFja3NsYXNoID0gZnVuY3Rpb25cbiAgfCAnbicgLT4gJ1xcMDEwJ1xuICB8ICdyJyAtPiAnXFwwMTMnXG4gIHwgJ2InIC0+ICdcXDAwOCdcbiAgfCAndCcgLT4gJ1xcMDA5J1xuICB8IGMgLT4gY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYyA9IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcblxubGV0IGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxMDAgKiBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzAgK1xuICAgICAxMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICAgZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICBcImJhZCBjaGFyYWN0ZXIgZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlYyVjXCIgYzAgYzEgYzIpIGVsc2VcbiAgY2hhcl9vZl9pbnQgY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBoZXhhZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuICopXG5sZXQgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID1cbiAgbGV0IGQgPSBpbnRfb2ZfY2hhciBjIGluXG4gICgqIENvdWxkIGFsc28gYmU6XG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnOScgdGhlbiBkIC0gaW50X29mX2NoYXIgJzAnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdGJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdBJyBlbHNlXG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnZicgdGhlbiAxMCArIGQgLSBpbnRfb2ZfY2hhciAnYScgZWxzZSBhc3NlcnQgZmFsc2VcbiAgKilcbiAgaWYgZCA+PSBpbnRfb2ZfY2hhciAnYScgdGhlblxuICAgIGQgLSA4NyAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKikgZWxzZVxuICBpZiBkID49IGludF9vZl9jaGFyICdBJyB0aGVuXG4gICAgZCAtIDU1ICAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKikgZWxzZVxuICAgIGQgLSBpbnRfb2ZfY2hhciAnMCdcblxuXG5sZXQgY2hhcl9mb3JfaGV4YWRlY2ltYWxfY29kZSBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxNiAqIGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzEgK1xuICAgICAgICAgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMiBpblxuICBpZiBjIDwgMCB8fCBjID4gMjU1IHRoZW5cbiAgICBiYWRfaW5wdXRcbiAgICAgIChQcmludGYuc3ByaW50ZiBcImJhZCBjaGFyYWN0ZXIgaGV4YWRlY2ltYWwgZW5jb2RpbmcgXFxcXCVjJWNcIiBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogQ2FsbGVkIGluIHBhcnRpY3VsYXIgd2hlbiBlbmNvdW50ZXJpbmcgJ1xcXFwnIGFzIHN0YXJ0ZXIgb2YgYSBjaGFyLlxuICAgU3RvcHMgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nICdcXCcnLiAqKVxubGV0IGNoZWNrX25leHRfY2hhciBtZXNzYWdlIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlIGVsc2VcbiAgY1xuXG5cbmxldCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgPSBjaGVja19uZXh0X2NoYXIgXCJhIENoYXJcIlxubGV0IGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nID0gY2hlY2tfbmV4dF9jaGFyIFwiYSBTdHJpbmdcIlxuXG5sZXQgc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYiA9XG4gIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gIHwgJ1xcXFwnIHwgJ1xcJycgfCAnXFxcIicgfCAnbicgfCAndCcgfCAnYicgfCAncicgYXMgYyAtPlxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKGNoYXJfZm9yX2JhY2tzbGFzaCBjKVxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCBnZXRfZGlnaXQgKCkgPVxuICAgICAgbGV0IGMgPSBTY2FubmluZy5uZXh0X2NoYXIgaWIgaW5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMCA9IGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9kZWNpbWFsX2NvZGUgYzAgYzEgYzIpXG4gIHwgJ3gnIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyBhcyBjIC0+IGNcbiAgICAgIHwgYyAtPiBiYWRfaW5wdXRfZXNjYXBlIGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyKVxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXRfZXNjYXBlIGNcblxuXG4oKiBTY2FuIGEgY2hhcmFjdGVyIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX2NoYXIgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcJycgLT4gZmluZF9jaGFyIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXCcnIGNcblxuICBhbmQgZmluZF9jaGFyIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXFwnIC0+XG4gICAgICBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKSBpYilcbiAgICB8IGMgLT5cbiAgICAgIGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgYyBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgZGVsaW1pdGVkIHN0cmluZyAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFxcIicgY1xuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXFwiJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgJ1xcXFwnIC0+IHNjYW5fYmFja3NsYXNoIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIHNjYW5fYmFja3NsYXNoIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxyJyAtPiBza2lwX25ld2xpbmUgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgd2lkdGggaWIpXG5cbiAgYW5kIHNraXBfbmV3bGluZSB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgJ1xccicpXG5cbiAgYW5kIHNraXBfc3BhY2VzIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnICcgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3Agd2lkdGggaW5cblxuICBmaW5kX3N0YXJ0IHdpZHRoXG5cblxuKCogU2NhbiBhIGJvb2xlYW4gKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2Jvb2wgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGxldCBtID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICd0JyAtPiA0XG4gICAgfCAnZicgLT4gNVxuICAgIHwgYyAtPlxuICAgICAgYmFkX2lucHV0XG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcInRoZSBjaGFyYWN0ZXIgJUMgY2Fubm90IHN0YXJ0IGEgYm9vbGVhblwiIGMpIGluXG4gIHNjYW5fc3RyaW5nIE5vbmUgbSBpYlxuXG5cbigqIFNjYW4gYSBzdHJpbmcgY29udGFpbmluZyBlbGVtZW50cyBpbiBjaGFyX3NldCBhbmQgdGVybWluYXRlZCBieSBzY2FuX2luZGljXG4gICBpZiBwcm92aWRlZC4gKilcbmxldCBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IHNjYW5faW5kaWMgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fY2hhcnMgaSBzdHAgPVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgaSA+IDAgJiYgbm90IChTY2FubmluZy5lb2YgaWIpICYmXG4gICAgICAgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyAmJlxuICAgICAgIGludF9vZl9jaGFyIGMgPD4gc3RwIHRoZW5cbiAgICAgIGxldCBfID0gU2Nhbm5pbmcuc3RvcmVfY2hhciBtYXhfaW50IGliIGMgaW5cbiAgICAgIHNjYW5fY2hhcnMgKGkgLSAxKSBzdHAgaW5cbiAgbWF0Y2ggc2Nhbl9pbmRpYyB3aXRoXG4gIHwgTm9uZSAtPiBzY2FuX2NoYXJzIHdpZHRoICgtMSk7XG4gIHwgU29tZSBjIC0+XG4gICAgc2Nhbl9jaGFycyB3aWR0aCAoaW50X29mX2NoYXIgYyk7XG4gICAgaWYgbm90IChTY2FubmluZy5lb2YgaWIpIHRoZW5cbiAgICAgIGxldCBjaSA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgICAgaWYgYyA9IGNpXG4gICAgICB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gICAgICBlbHNlIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cblxuKCogVGhlIGdsb2JhbCBlcnJvciByZXBvcnQgZnVuY3Rpb24gZm9yIFtTY2FuZl0uICopXG5sZXQgc2NhbmZfYmFkX2lucHV0IGliID0gZnVuY3Rpb25cbiAgfCBTY2FuX2ZhaWx1cmUgcyB8IEZhaWx1cmUgcyAtPlxuICAgIGxldCBpID0gU2Nhbm5pbmcuY2hhcl9jb3VudCBpYiBpblxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJzY2FuZjogYmFkIGlucHV0IGF0IGNoYXIgbnVtYmVyICVpOiAlc1wiIGkgcylcbiAgfCB4IC0+IHJhaXNlIHhcblxuXG4oKiBHZXQgdGhlIGNvbnRlbnQgb2YgYSBjb3VudGVyIGZyb20gYW4gaW5wdXQgYnVmZmVyLiAqKVxubGV0IGdldF9jb3VudGVyIGliIGNvdW50ZXIgPVxuICBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgLT4gU2Nhbm5pbmcubGluZV9jb3VudCBpYlxuICB8IENoYXJfY291bnRlciAtPiBTY2FubmluZy5jaGFyX2NvdW50IGliXG4gIHwgVG9rZW5fY291bnRlciAtPiBTY2FubmluZy50b2tlbl9jb3VudCBpYlxuXG5cbigqIENvbXB1dGUgdGhlIHdpZHRoIG9mIGEgcGFkZGluZyBvcHRpb24gKHNlZSBcIiU0MntcIiBhbmQgXCIlMTIzKFwiKS4gKilcbmxldCB3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IG1heF9pbnRcbiAgfCBTb21lIHdpZHRoIC0+IHdpZHRoXG5cblxubGV0IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nID1cbiAgaWYgZm10aW5nID0gRXNjYXBlZF9wZXJjZW50IHRoZW4gJyUnLCBcIlwiIGVsc2VcbiAgICBsZXQgc3RyID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZyBpblxuICAgIGxldCBzdHAgPSBzdHIuWzFdIGluXG4gICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciAyIChTdHJpbmcubGVuZ3RoIHN0ciAtIDIpIGluXG4gICAgc3RwLCBzdWJfc3RyXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFJlYWRlciBtYW5hZ2VtZW50ICopXG5cbigqIEEgY2FsbCB0byB0YWtlX2Zvcm1hdF9yZWFkZXJzIG9uIGEgZm9ybWF0IGlzIGV2YWx1YXRlZCBpbnRvIGZ1bmN0aW9uc1xuICAgdGFraW5nIHJlYWRlcnMgYXMgYXJndW1lbnRzIGFuZCBhZ2dyZWdhdGUgdGhlbSBpbnRvIGFuIGhldGVyb2dlbmVvdXMgbGlzdCAqKVxuKCogV2hlbiBhbGwgcmVhZGVycyBhcmUgdGFrZW4sIGZpbmFsbHkgcGFzcyB0aGUgbGlzdCBvZiB0aGUgcmVhZGVycyB0byB0aGVcbiAgIGNvbnRpbnVhdGlvbiBrLiAqKVxubGV0IHJlYyB0YWtlX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgZCA9XG5mdW4gayBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdFxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9jaGFyIHJlc3QgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENhbWxfc3RyaW5nIChfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQzMiAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IE5hdGl2ZWludCAoXywgXywgXywgcmVzdCkgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50NjQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGbG9hdCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEJvb2wgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQWxwaGEgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEN1c3RvbSAoXywgXywgcmVzdCkgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSwgcmVzdCkgLT5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdCBmbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgICAgLT5cbiAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKSByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgICAgICAgLT4gdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIGsgaWduIHJlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgICAgICAgIC0+IGsgTmlsXG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGZtdHR5IGNvbWluZyBmcm9tIGEgRm9ybWF0X3N1YnN0IFwiJSguLi4lKVwiLiAqKVxuYW5kIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIHggeSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgeCwgeSkgZm10dHkgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFJlYWRlcl90eSBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgQ2hhcl90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGb3JtYXRfYXJnX3R5IChfLCByZXN0KSAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGlnbm9yZWQgcGFyYW1ldGVyLiAqKVxuYW5kIHRha2VfaWdub3JlZF9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBpZ25vcmVkIC0+XG4gICAgICAoeSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgeCwgZSwgZikgZm10IC0+IGQgPVxuZnVuIGsgaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10XG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgZm10dHkgZm10XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgc2Nhbm5pbmcgKilcblxuKCogTWFrZSBhIGdlbmVyaWMgc2Nhbm5pbmcgZnVuY3Rpb24uICopXG4oKiBTY2FuIGEgc3RyZWFtIGFjY29yZGluZyB0byBhIGZvcm1hdCBhbmQgcmVhZGVycyBvYnRhaW5lZCBieVxuICAgdGFrZV9mb3JtYXRfcmVhZGVycywgYW5kIGFnZ3JlZ2F0ZSBzY2FubmVkIHZhbHVlcyBpbnRvIGFuXG4gICBoZXRlcm9nZW5lb3VzIGxpc3QuICopXG4oKiBSZXR1cm4gdGhlIGhldGVyb2dlbmVvdXMgbGlzdCBvZiBzY2FubmVkIHZhbHVlcy4gKilcbmxldCByZWMgbWFrZV9zY2FuZiA6IHR5cGUgYSBjIGQgZSBmLlxuICAgIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKGQsIGUpIGhldGVyX2xpc3QgLT4gKGEsIGYpIGhldGVyX2xpc3QgPVxuZnVuIGliIGZtdCByZWFkZXJzIC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NoYXIgMCBpYiBpblxuICAgIGxldCBjID0gdG9rZW5fY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSBzdHApIHdpZHRoIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiBzdHJfcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICd7Jykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpKSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSAnWycpIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhblxuICAgICAgICAgICAgICAgICAgIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyBOb25lIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcblxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50IGMpXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludDMyIGMpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9uYXRpdmVpbnQgYylcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50NjQgYylcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9GIHwgRmxvYXRfQ0YpKSwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2NhbWxfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRykpLFxuICAgICAgICAgICBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9oIHwgRmxvYXRfSCkpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5faGV4X2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIF8gXyBpYiA9IHNjYW5fYm9vbCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fYm9vbFxuICB8IEFscGhhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJWFcXFwiXCJcbiAgfCBUaGV0YSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiV0XFxcIlwiXG4gIHwgQ3VzdG9tIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJT9cXFwiIChjdXN0b20gY29udmVydGVyKVwiXG4gIHwgUmVhZGVyIGZtdF9yZXN0IC0+XG4gICAgYmVnaW4gbWF0Y2ggcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkgLT5cbiAgICAgICAgbGV0IHggPSByZWFkZXIgaWIgaW5cbiAgICAgICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXRfcmVzdCByZWFkZXJzX3Jlc3QpXG4gICAgfCBOaWwgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJzY2FuZjogbWlzc2luZyByZWFkZXJcIlxuICAgIGVuZFxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBpZiBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICAgIGVsc2UgYmFkX2lucHV0IFwiZW5kIG9mIGlucHV0IG5vdCBmb3VuZFwiXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSBzdHI7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliIGNocjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuXG4gIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10ID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHMgZm10dHlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoZm10LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyAod2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0KSBpYiBpblxuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCwgZm10JyA9XG4gICAgICB0cnlcbiAgICAgICAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXQnID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICAoKiBUT0RPOiBmaW5kIGEgd2F5IHRvIGF2b2lkIHJlcGFyc2luZyB0d2ljZSAqKVxuXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR5cGUtY2hlY2tzIGJlbG93ICpjYW4qIGZhaWwgYmVjYXVzZSBvZiB0eXBlXG4gICAgICAgICAgIGFtYmlndWl0eSBpbiBwcmVzZW5jZSBvZiBpZ25vcmVkLXJlYWRlcnM6IFwiJV9yJWRcIiBhbmQgXCIlZCVfclwiXG4gICAgICAgICAgIGFyZSB0eXBlZCBpbiB0aGUgc2FtZSB3YXkuXG5cbiAgICAgICAgICAgIyBTY2FuZi5zc2NhbmYgXCJcXFwiJV9yJWRcXFwiM1wiIFwiJSglZCVfciUpXCIgaWdub3JlXG4gICAgICAgICAgICAgKGZ1biBmbXQgbiAtPiBzdHJpbmdfb2ZfZm9ybWF0IGZtdCwgbilcbiAgICAgICAgICAgRXhjZXB0aW9uOiBDYW1saW50ZXJuYWxGb3JtYXQuVHlwZV9taXNtYXRjaC5cblxuICAgICAgICAgICBXZSBzaG91bGQgcHJvcGVybHkgY2F0Y2ggdGhpcyBleGNlcHRpb24uXG4gICAgICAgICopXG4gICAgICAgIHR5cGVfZm9ybWF0IGZtdCAoZXJhc2VfcmVsIGZtdHR5KSxcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10JyAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoRm9ybWF0IChmbXQsIHMpLFxuICAgICAgICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCAoU29tZSBzdHApIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBDb25zIChzLCBtYWtlX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBsZXQgd2lkdGggPSB3aWR0aF9vZl9wYWRfb3B0IHdpZHRoX29wdCBpblxuICAgIHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgTm9uZSB3aWR0aCBpYjtcbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgbGV0IGNvdW50ID0gZ2V0X2NvdW50ZXIgaWIgY291bnRlciBpblxuICAgIENvbnMgKGNvdW50LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0KTtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiAnQCc7IGNoZWNrX2NoYXIgaWIgJ3snO1xuICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAnWyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcblxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgYmVnaW4gbWF0Y2ggbWFrZV9zY2FuZiBpYiBmbXQnIHJlYWRlcnMgd2l0aFxuICAgIHwgQ29ucyAoXywgYXJnX3Jlc3QpIC0+IGFyZ19yZXN0XG4gICAgfCBOaWwgLT4gYXNzZXJ0IGZhbHNlXG4gICAgZW5kXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgTmlsXG5cbigqIENhc2UgYW5hbHlzaXMgb24gcGFkZGluZyBhbmQgcHJlY2lzaW9uLiAqKVxuKCogUmVqZWN0IGZvcm1hdHMgY29udGFpbmluZyBcIiUqXCIgb3IgXCIlLipcIi4gKilcbigqIFBhc3MgcGFkZGluZyBhbmQgcHJlY2lzaW9uIHRvIHRoZSBnZW5lcmljIHNjYW5uZXIgYHNjYW4nLiAqKVxuYW5kIHBhZF9wcmVjX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYgeCB5IHogdCAuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT5cbiAgICAgIChpbnQgLT4gaW50IC0+IFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gdCkgLT5cbiAgICAgIChTY2FubmluZy5pbl9jaGFubmVsIC0+IHopIC0+XG4gICAgICAoeCwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgcGFkIHByZWMgc2NhbiB0b2tlbiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gbWF4X2ludCBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiB3IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgcCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nIChMZWZ0LCBfKSwgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlLVxcXCJcIlxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIF8pLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgQXJnX3BhZGRpbmcgXywgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICgqIERlZmluaW5nIFtzY2FuZl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbc2NhbmZdICopXG5cbnR5cGUgJ2Ega3NjYW5mX3Jlc3VsdCA9IEFyZ3Mgb2YgJ2EgfCBFeGMgb2YgZXhuXG5cbmxldCBrc2NhbmYgaWIgZWYgKEZvcm1hdCAoZm10LCBzdHIpKSA9XG4gIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYiAuIGEgLT4gKGEsIGIpIGhldGVyX2xpc3QgLT4gYiA9XG4gICAgZnVuIGYgYXJncyAtPiBtYXRjaCBhcmdzIHdpdGhcbiAgICB8IENvbnMgKHgsIHIpIC0+IGFwcGx5IChmIHgpIHJcbiAgICB8IE5pbCAtPiBmXG4gIGluXG4gIGxldCBrIHJlYWRlcnMgZiA9XG4gICAgU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWI7XG4gICAgbWF0Y2ggdHJ5IEFyZ3MgKG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpIHdpdGhcbiAgICAgIHwgKFNjYW5fZmFpbHVyZSBfIHwgRmFpbHVyZSBfIHwgRW5kX29mX2ZpbGUpIGFzIGV4YyAtPiBFeGMgZXhjXG4gICAgICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+XG4gICAgICAgIGludmFsaWRfYXJnIChtc2cgXiBcIiBpbiBmb3JtYXQgXFxcIlwiIF4gU3RyaW5nLmVzY2FwZWQgc3RyIF4gXCJcXFwiXCIpXG4gICAgd2l0aFxuICAgICAgfCBBcmdzIGFyZ3MgLT4gYXBwbHkgZiBhcmdzXG4gICAgICB8IEV4YyBleGMgLT4gZWYgaWIgZXhjXG4gIGluXG4gIHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxuKCoqKilcblxubGV0IGtic2NhbmYgPSBrc2NhbmZcbmxldCBic2NhbmYgaWIgZm10ID0ga2JzY2FuZiBpYiBzY2FuZl9iYWRfaW5wdXQgZm10XG5cbmxldCBrc3NjYW5mIHMgZWYgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZWYgZm10XG5sZXQgc3NjYW5mIHMgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgc2NhbmZfYmFkX2lucHV0IGZtdFxuXG5sZXQgc2NhbmYgZm10ID0ga3NjYW5mIFNjYW5uaW5nLnN0ZGliIHNjYW5mX2JhZF9pbnB1dCBmbXRcblxuKCoqKilcblxuKCogU2Nhbm5pbmcgZm9ybWF0IHN0cmluZ3MuICopXG5sZXQgYnNjYW5mX2Zvcm1hdCA6XG4gIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBpYiBmb3JtYXQgZiAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyBtYXhfaW50IGliIGluXG4gICAgbGV0IHN0ciA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQnID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgZm9ybWF0XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2cgaW5cbiAgICBmIGZtdCdcblxuXG5sZXQgc3NjYW5mX2Zvcm1hdCA6XG4gIHN0cmluZyAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIHMgZm9ybWF0IGYgLT4gYnNjYW5mX2Zvcm1hdCAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZm9ybWF0IGZcblxuXG5sZXQgZm9ybWF0X2Zyb21fc3RyaW5nIHMgZm10ID1cbiAgc3NjYW5mX2Zvcm1hdCAoXCJcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzIF4gXCJcXFwiXCIpIGZtdCAoZnVuIHggLT4geClcblxuXG5sZXQgdW5lc2NhcGVkIHMgPVxuICBzc2NhbmYgKFwiXFxcIlwiIF4gcyBeIFwiXFxcIlwiKSBcIiVTJSFcIiAoZnVuIHggLT4geClcblxuXG4oKiBEZXByZWNhdGVkICopXG5sZXQga2ZzY2FuZiBpYyBlZiBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5tZW1vX2Zyb21fY2hhbm5lbCBpYykgZWYgZm10XG5sZXQgZnNjYW5mIGljIGZtdCA9IGtzY2FuZiAoU2Nhbm5pbmcubWVtb19mcm9tX2NoYW5uZWwgaWMpIHNjYW5mX2JhZF9pbnB1dCBmbXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUmVnaXN0ZXJpbmcgT0NhbWwgdmFsdWVzIHdpdGggdGhlIEMgcnVudGltZSBmb3IgbGF0ZXIgY2FsbGJhY2tzICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+IE9iai50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0IHJlZ2lzdGVyIG5hbWUgdiA9XG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgKE9iai5yZXByIHYpXG5cbmxldCByZWdpc3Rlcl9leGNlcHRpb24gbmFtZSAoZXhuIDogZXhuKSA9XG4gIGxldCBleG4gPSBPYmoucmVwciBleG4gaW5cbiAgbGV0IHNsb3QgPSBpZiBPYmoudGFnIGV4biA9IE9iai5vYmplY3RfdGFnIHRoZW4gZXhuIGVsc2UgT2JqLmZpZWxkIGV4biAwIGluXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgc2xvdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgSmVyb21lIFZvdWlsbG9uLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIE9ialxuXG4oKioqKiBPYmplY3QgcmVwcmVzZW50YXRpb24gKioqKilcblxuZXh0ZXJuYWwgc2V0X2lkOiAnYSAtPiAnYSA9IFwiY2FtbF9zZXRfb29faWRcIiBbQEBub2FsbG9jXVxuXG4oKioqKiBPYmplY3QgY29weSAqKioqKVxuXG5sZXQgY29weSBvID1cbiAgbGV0IG8gPSAoT2JqLm9iaiAoT2JqLmR1cCAoT2JqLnJlcHIgbykpKSBpblxuICBzZXRfaWQgb1xuXG4oKioqKiBDb21wcmVzc2lvbiBvcHRpb25zICoqKiopXG4oKiBQYXJhbWV0ZXJzICopXG50eXBlIHBhcmFtcyA9IHtcbiAgICBtdXRhYmxlIGNvbXBhY3RfdGFibGUgOiBib29sO1xuICAgIG11dGFibGUgY29weV9wYXJlbnQgOiBib29sO1xuICAgIG11dGFibGUgY2xlYW5fd2hlbl9jb3B5aW5nIDogYm9vbDtcbiAgICBtdXRhYmxlIHJldHJ5X2NvdW50IDogaW50O1xuICAgIG11dGFibGUgYnVja2V0X3NtYWxsX3NpemUgOiBpbnRcbiAgfVxuXG5sZXQgcGFyYW1zID0ge1xuICBjb21wYWN0X3RhYmxlID0gdHJ1ZTtcbiAgY29weV9wYXJlbnQgPSB0cnVlO1xuICBjbGVhbl93aGVuX2NvcHlpbmcgPSB0cnVlO1xuICByZXRyeV9jb3VudCA9IDM7XG4gIGJ1Y2tldF9zbWFsbF9zaXplID0gMTZcbn1cblxuKCoqKiogUGFyYW1ldGVycyAqKioqKVxuXG5sZXQgaW5pdGlhbF9vYmplY3Rfc2l6ZSA9IDJcblxuKCoqKiogSXRlbXMgKioqKilcblxudHlwZSBpdGVtID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG5sZXQgZHVtbXlfaXRlbSA9IChtYWdpYyAoKSA6IGl0ZW0pXG5cbigqKioqIFR5cGVzICoqKiopXG5cbnR5cGUgdGFnXG50eXBlIGxhYmVsID0gaW50XG50eXBlIGNsb3N1cmUgPSBpdGVtXG50eXBlIHQgPSBEdW1teUEgfCBEdW1teUIgfCBEdW1teUMgb2YgaW50XG5sZXQgXyA9IFtEdW1teUE7IER1bW15QjsgRHVtbXlDIDBdICgqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5cbnR5cGUgb2JqID0gdCBhcnJheVxuZXh0ZXJuYWwgcmV0IDogKG9iaiAtPiAnYSkgLT4gY2xvc3VyZSA9IFwiJWlkZW50aXR5XCJcblxuKCoqKiogTGFiZWxzICoqKiopXG5cbmxldCBwdWJsaWNfbWV0aG9kX2xhYmVsIHMgOiB0YWcgPVxuICBsZXQgYWNjdSA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgYWNjdSA6PSAyMjMgKiAhYWNjdSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKDEgbHNsIDMxIC0gMSk7XG4gICgqIG1ha2UgaXQgc2lnbmVkIGZvciA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgKilcbiAgbGV0IHRhZyA9IGlmICFhY2N1ID4gMHgzRkZGRkZGRiB0aGVuICFhY2N1IC0gKDEgbHNsIDMxKSBlbHNlICFhY2N1IGluXG4gICgqIFByaW50Zi5lcHJpbnRmIFwiJXMgPSAlZFxcblwiIHMgdGFnOyBmbHVzaCBzdGRlcnI7ICopXG4gIG1hZ2ljIHRhZ1xuXG4oKioqKiBTcGFyc2UgYXJyYXkgKioqKilcblxubW9kdWxlIFZhcnMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gc3RyaW5nIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIHZhcnMgPSBpbnQgVmFycy50XG5cbm1vZHVsZSBNZXRocyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgbWV0aHMgPSBsYWJlbCBNZXRocy50XG5tb2R1bGUgTGFicyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBsYWJlbCBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBsYWJzID0gYm9vbCBMYWJzLnRcblxuKCogVGhlIGNvbXBpbGVyIGFzc3VtZXMgdGhhdCB0aGUgZmlyc3QgZmllbGQgb2YgdGhpcyBzdHJ1Y3R1cmUgaXMgW3NpemVdLiAqKVxudHlwZSB0YWJsZSA9XG4geyBtdXRhYmxlIHNpemU6IGludDtcbiAgIG11dGFibGUgbWV0aG9kczogY2xvc3VyZSBhcnJheTtcbiAgIG11dGFibGUgbWV0aG9kc19ieV9uYW1lOiBtZXRocztcbiAgIG11dGFibGUgbWV0aG9kc19ieV9sYWJlbDogbGFicztcbiAgIG11dGFibGUgcHJldmlvdXNfc3RhdGVzOlxuICAgICAobWV0aHMgKiBsYWJzICogKGxhYmVsICogaXRlbSkgbGlzdCAqIHZhcnMgKlxuICAgICAgbGFiZWwgbGlzdCAqIHN0cmluZyBsaXN0KSBsaXN0O1xuICAgbXV0YWJsZSBoaWRkZW5fbWV0aHM6IChsYWJlbCAqIGl0ZW0pIGxpc3Q7XG4gICBtdXRhYmxlIHZhcnM6IHZhcnM7XG4gICBtdXRhYmxlIGluaXRpYWxpemVyczogKG9iaiAtPiB1bml0KSBsaXN0IH1cblxubGV0IGR1bW15X3RhYmxlID1cbiAgeyBtZXRob2RzID0gW3wgZHVtbXlfaXRlbSB8XTtcbiAgICBtZXRob2RzX2J5X25hbWUgPSBNZXRocy5lbXB0eTtcbiAgICBtZXRob2RzX2J5X2xhYmVsID0gTGFicy5lbXB0eTtcbiAgICBwcmV2aW91c19zdGF0ZXMgPSBbXTtcbiAgICBoaWRkZW5fbWV0aHMgPSBbXTtcbiAgICB2YXJzID0gVmFycy5lbXB0eTtcbiAgICBpbml0aWFsaXplcnMgPSBbXTtcbiAgICBzaXplID0gMCB9XG5cbmxldCB0YWJsZV9jb3VudCA9IHJlZiAwXG5cbigqIGR1bW15X21ldCBzaG91bGQgYmUgYSBwb2ludGVyLCBzbyB1c2UgYW4gYXRvbSAqKVxubGV0IGR1bW15X21ldCA6IGl0ZW0gPSBvYmogKE9iai5uZXdfYmxvY2sgMCAwKVxuKCogaWYgZGVidWdnaW5nIGlzIG5lZWRlZCwgdGhpcyBjb3VsZCBiZSBhIGdvb2QgaWRlYTogKilcbigqIGxldCBkdW1teV9tZXQgKCkgPSBmYWlsd2l0aCBcIlVuZGVmaW5lZCBtZXRob2RcIiAqKVxuXG5sZXQgcmVjIGZpdF9zaXplIG4gPVxuICBpZiBuIDw9IDIgdGhlbiBuIGVsc2VcbiAgZml0X3NpemUgKChuKzEpLzIpICogMlxuXG5sZXQgbmV3X3RhYmxlIHB1Yl9sYWJlbHMgPVxuICBpbmNyIHRhYmxlX2NvdW50O1xuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHB1Yl9sYWJlbHMgaW5cbiAgbGV0IG1ldGhvZHMgPSBBcnJheS5tYWtlIChsZW4qMisyKSBkdW1teV9tZXQgaW5cbiAgbWV0aG9kcy4oMCkgPC0gbWFnaWMgbGVuO1xuICBtZXRob2RzLigxKSA8LSBtYWdpYyAoZml0X3NpemUgbGVuICogU3lzLndvcmRfc2l6ZSAvIDggLSAxKTtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG8gbWV0aG9kcy4oaSoyKzMpIDwtIG1hZ2ljIHB1Yl9sYWJlbHMuKGkpIGRvbmU7XG4gIHsgbWV0aG9kcyA9IG1ldGhvZHM7XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IGluaXRpYWxfb2JqZWN0X3NpemUgfVxuXG5sZXQgcmVzaXplIGFycmF5IG5ld19zaXplID1cbiAgbGV0IG9sZF9zaXplID0gQXJyYXkubGVuZ3RoIGFycmF5Lm1ldGhvZHMgaW5cbiAgaWYgbmV3X3NpemUgPiBvbGRfc2l6ZSB0aGVuIGJlZ2luXG4gICAgbGV0IG5ld19idWNrID0gQXJyYXkubWFrZSBuZXdfc2l6ZSBkdW1teV9tZXQgaW5cbiAgICBBcnJheS5ibGl0IGFycmF5Lm1ldGhvZHMgMCBuZXdfYnVjayAwIG9sZF9zaXplO1xuICAgIGFycmF5Lm1ldGhvZHMgPC0gbmV3X2J1Y2tcbiBlbmRcblxubGV0IHB1dCBhcnJheSBsYWJlbCBlbGVtZW50ID1cbiAgcmVzaXplIGFycmF5IChsYWJlbCArIDEpO1xuICBhcnJheS5tZXRob2RzLihsYWJlbCkgPC0gZWxlbWVudFxuXG4oKioqKiBDbGFzc2VzICoqKiopXG5cbmxldCBtZXRob2RfY291bnQgPSByZWYgMFxubGV0IGluc3RfdmFyX2NvdW50ID0gcmVmIDBcblxuKCogdHlwZSB0ICopXG50eXBlIG1ldGggPSBpdGVtXG5cbmxldCBuZXdfbWV0aG9kIHRhYmxlID1cbiAgbGV0IGluZGV4ID0gQXJyYXkubGVuZ3RoIHRhYmxlLm1ldGhvZHMgaW5cbiAgcmVzaXplIHRhYmxlIChpbmRleCArIDEpO1xuICBpbmRleFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBuYW1lID1cbiAgdHJ5XG4gICAgTWV0aHMuZmluZCBuYW1lIHRhYmxlLm1ldGhvZHNfYnlfbmFtZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBsYWJlbCA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gTWV0aHMuYWRkIG5hbWUgbGFiZWwgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiZWwgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsO1xuICAgIGxhYmVsXG5cbmxldCBnZXRfbWV0aG9kX2xhYmVscyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgbmFtZXNcblxubGV0IHNldF9tZXRob2QgdGFibGUgbGFiZWwgZWxlbWVudCA9XG4gIGluY3IgbWV0aG9kX2NvdW50O1xuICBpZiBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB0aGVuXG4gICAgcHV0IHRhYmxlIGxhYmVsIGVsZW1lbnRcbiAgZWxzZVxuICAgIHRhYmxlLmhpZGRlbl9tZXRocyA8LSAobGFiZWwsIGVsZW1lbnQpIDo6IHRhYmxlLmhpZGRlbl9tZXRoc1xuXG5sZXQgZ2V0X21ldGhvZCB0YWJsZSBsYWJlbCA9XG4gIHRyeSBMaXN0LmFzc29jIGxhYmVsIHRhYmxlLmhpZGRlbl9tZXRoc1xuICB3aXRoIE5vdF9mb3VuZCAtPiB0YWJsZS5tZXRob2RzLihsYWJlbClcblxubGV0IHRvX2xpc3QgYXJyID1cbiAgaWYgYXJyID09IG1hZ2ljIDAgdGhlbiBbXSBlbHNlIEFycmF5LnRvX2xpc3QgYXJyXG5cbmxldCBuYXJyb3cgdGFibGUgdmFycyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzID1cbiAgbGV0IHZhcnMgPSB0b19saXN0IHZhcnNcbiAgYW5kIHZpcnRfbWV0aHMgPSB0b19saXN0IHZpcnRfbWV0aHNcbiAgYW5kIGNvbmNyX21ldGhzID0gdG9fbGlzdCBjb25jcl9tZXRocyBpblxuICBsZXQgdmlydF9tZXRoX2xhYnMgPSBMaXN0Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgdmlydF9tZXRocyBpblxuICBsZXQgY29uY3JfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIGNvbmNyX21ldGhzIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LVxuICAgICAodGFibGUubWV0aG9kc19ieV9uYW1lLCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsLCB0YWJsZS5oaWRkZW5fbWV0aHMsXG4gICAgICB0YWJsZS52YXJzLCB2aXJ0X21ldGhfbGFicywgdmFycylcbiAgICAgOjogdGFibGUucHJldmlvdXNfc3RhdGVzO1xuICB0YWJsZS52YXJzIDwtXG4gICAgVmFycy5mb2xkXG4gICAgICAoZnVuIGxhYiBpbmZvIHR2YXJzIC0+XG4gICAgICAgIGlmIExpc3QubWVtIGxhYiB2YXJzIHRoZW4gVmFycy5hZGQgbGFiIGluZm8gdHZhcnMgZWxzZSB0dmFycylcbiAgICAgIHRhYmxlLnZhcnMgVmFycy5lbXB0eTtcbiAgbGV0IGJ5X25hbWUgPSByZWYgTWV0aHMuZW1wdHkgaW5cbiAgbGV0IGJ5X2xhYmVsID0gcmVmIExhYnMuZW1wdHkgaW5cbiAgTGlzdC5pdGVyMlxuICAgIChmdW4gbWV0IGxhYmVsIC0+XG4gICAgICAgYnlfbmFtZSA6PSBNZXRocy5hZGQgbWV0IGxhYmVsICFieV9uYW1lO1xuICAgICAgIGJ5X2xhYmVsIDo9XG4gICAgICAgICAgTGFicy5hZGQgbGFiZWxcbiAgICAgICAgICAgICh0cnkgTGFicy5maW5kIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZSlcbiAgICAgICAgICAgICFieV9sYWJlbClcbiAgICBjb25jcl9tZXRocyBjb25jcl9tZXRoX2xhYnM7XG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PSBMYWJzLmFkZCBsYWJlbCBmYWxzZSAhYnlfbGFiZWwpXG4gICAgdmlydF9tZXRocyB2aXJ0X21ldGhfbGFicztcbiAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtICFieV9uYW1lO1xuICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtICFieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRoX2xhYnMgdGhlbiBobSBlbHNlIG1ldDo6aG0pXG4gICAgICAgdGFibGUuaGlkZGVuX21ldGhzXG4gICAgICAgW11cblxubGV0IHdpZGVuIHRhYmxlID1cbiAgbGV0IChieV9uYW1lLCBieV9sYWJlbCwgc2F2ZWRfaGlkZGVuX21ldGhzLCBzYXZlZF92YXJzLCB2aXJ0X21ldGhzLCB2YXJzKSA9XG4gICAgTGlzdC5oZCB0YWJsZS5wcmV2aW91c19zdGF0ZXNcbiAgaW5cbiAgdGFibGUucHJldmlvdXNfc3RhdGVzIDwtIExpc3QudGwgdGFibGUucHJldmlvdXNfc3RhdGVzO1xuICB0YWJsZS52YXJzIDwtXG4gICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgKGZ1biBzIHYgLT4gVmFycy5hZGQgdiAoVmFycy5maW5kIHYgdGFibGUudmFycykgcylcbiAgICAgICBzYXZlZF92YXJzIHZhcnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSBieV9uYW1lO1xuICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIGJ5X2xhYmVsO1xuICB0YWJsZS5oaWRkZW5fbWV0aHMgPC1cbiAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoKGxhYiwgXykgYXMgbWV0KSBobSAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIGxhYiB2aXJ0X21ldGhzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIHNhdmVkX2hpZGRlbl9tZXRoc1xuXG5sZXQgbmV3X3Nsb3QgdGFibGUgPVxuICBsZXQgaW5kZXggPSB0YWJsZS5zaXplIGluXG4gIHRhYmxlLnNpemUgPC0gaW5kZXggKyAxO1xuICBpbmRleFxuXG5sZXQgbmV3X3ZhcmlhYmxlIHRhYmxlIG5hbWUgPVxuICB0cnkgVmFycy5maW5kIG5hbWUgdGFibGUudmFyc1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBpbmRleCA9IG5ld19zbG90IHRhYmxlIGluXG4gICAgaWYgbmFtZSA8PiBcIlwiIHRoZW4gdGFibGUudmFycyA8LSBWYXJzLmFkZCBuYW1lIGluZGV4IHRhYmxlLnZhcnM7XG4gICAgaW5kZXhcblxubGV0IHRvX2FycmF5IGFyciA9XG4gIGlmIGFyciA9IE9iai5tYWdpYyAwIHRoZW4gW3x8XSBlbHNlIGFyclxuXG5sZXQgbmV3X21ldGhvZHNfdmFyaWFibGVzIHRhYmxlIG1ldGhzIHZhbHMgPVxuICBsZXQgbWV0aHMgPSB0b19hcnJheSBtZXRocyBpblxuICBsZXQgbm1ldGhzID0gQXJyYXkubGVuZ3RoIG1ldGhzIGFuZCBudmFscyA9IEFycmF5Lmxlbmd0aCB2YWxzIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChubWV0aHMgKyBudmFscykgMCBpblxuICBmb3IgaSA9IDAgdG8gbm1ldGhzIC0gMSBkb1xuICAgIHJlcy4oaSkgPC0gZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBtZXRocy4oaSlcbiAgZG9uZTtcbiAgZm9yIGkgPSAwIHRvIG52YWxzIC0gMSBkb1xuICAgIHJlcy4oaStubWV0aHMpIDwtIG5ld192YXJpYWJsZSB0YWJsZSB2YWxzLihpKVxuICBkb25lO1xuICByZXNcblxubGV0IGdldF92YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnMgd2l0aCBOb3RfZm91bmQgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBnZXRfdmFyaWFibGVzIHRhYmxlIG5hbWVzID1cbiAgQXJyYXkubWFwIChnZXRfdmFyaWFibGUgdGFibGUpIG5hbWVzXG5cbmxldCBhZGRfaW5pdGlhbGl6ZXIgdGFibGUgZiA9XG4gIHRhYmxlLmluaXRpYWxpemVycyA8LSBmOjp0YWJsZS5pbml0aWFsaXplcnNcblxuKCpcbm1vZHVsZSBLZXlzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHRhZyBhcnJheSBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxubGV0IGtleV9tYXAgPSByZWYgS2V5cy5lbXB0eVxubGV0IGdldF9rZXkgdGFncyA6IGl0ZW0gPVxuICB0cnkgbWFnaWMgKEtleXMuZmluZCB0YWdzICFrZXlfbWFwIDogdGFnIGFycmF5KVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGtleV9tYXAgOj0gS2V5cy5hZGQgdGFncyB0YWdzICFrZXlfbWFwO1xuICAgIG1hZ2ljIHRhZ3NcbiopXG5cbmxldCBjcmVhdGVfdGFibGUgcHVibGljX21ldGhvZHMgPVxuICBpZiBwdWJsaWNfbWV0aG9kcyA9PSBtYWdpYyAwIHRoZW4gbmV3X3RhYmxlIFt8fF0gZWxzZVxuICAoKiBbcHVibGljX21ldGhvZHNdIG11c3QgYmUgaW4gYXNjZW5kaW5nIG9yZGVyIGZvciBieXRlY29kZSAqKVxuICBsZXQgdGFncyA9IEFycmF5Lm1hcCBwdWJsaWNfbWV0aG9kX2xhYmVsIHB1YmxpY19tZXRob2RzIGluXG4gIGxldCB0YWJsZSA9IG5ld190YWJsZSB0YWdzIGluXG4gIEFycmF5Lml0ZXJpXG4gICAgKGZ1biBpIG1ldCAtPlxuICAgICAgbGV0IGxhYiA9IGkqMisyIGluXG4gICAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgIDwtIE1ldGhzLmFkZCBtZXQgbGFiIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbClcbiAgICBwdWJsaWNfbWV0aG9kcztcbiAgdGFibGVcblxubGV0IGluaXRfY2xhc3MgdGFibGUgPVxuICBpbnN0X3Zhcl9jb3VudCA6PSAhaW5zdF92YXJfY291bnQgKyB0YWJsZS5zaXplIC0gMTtcbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIExpc3QucmV2IHRhYmxlLmluaXRpYWxpemVycztcbiAgcmVzaXplIHRhYmxlICgzICsgbWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemUpXG5cbmxldCBpbmhlcml0cyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzIChfLCBzdXBlciwgXywgZW52KSB0b3AgPVxuICBuYXJyb3cgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocztcbiAgbGV0IGluaXQgPVxuICAgIGlmIHRvcCB0aGVuIHN1cGVyIGNsYSBlbnYgZWxzZSBPYmoucmVwciAoc3VwZXIgY2xhKSBpblxuICB3aWRlbiBjbGE7XG4gIEFycmF5LmNvbmNhdFxuICAgIFtbfCByZXByIGluaXQgfF07XG4gICAgIG1hZ2ljIChBcnJheS5tYXAgKGdldF92YXJpYWJsZSBjbGEpICh0b19hcnJheSB2YWxzKSA6IGludCBhcnJheSk7XG4gICAgIEFycmF5Lm1hcFxuICAgICAgIChmdW4gbm0gLT4gcmVwciAoZ2V0X21ldGhvZCBjbGEgKGdldF9tZXRob2RfbGFiZWwgY2xhIG5tKSA6IGNsb3N1cmUpKVxuICAgICAgICh0b19hcnJheSBjb25jcl9tZXRocykgXVxuXG5sZXQgbWFrZV9jbGFzcyBwdWJfbWV0aHMgY2xhc3NfaW5pdCA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICAoZW52X2luaXQgKE9iai5yZXByIDApLCBjbGFzc19pbml0LCBlbnZfaW5pdCwgT2JqLnJlcHIgMClcblxudHlwZSBpbml0X3RhYmxlID0geyBtdXRhYmxlIGVudl9pbml0OiB0OyBtdXRhYmxlIGNsYXNzX2luaXQ6IHRhYmxlIC0+IHQgfVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxubGV0IG1ha2VfY2xhc3Nfc3RvcmUgcHViX21ldGhzIGNsYXNzX2luaXQgaW5pdF90YWJsZSA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICBpbml0X3RhYmxlLmNsYXNzX2luaXQgPC0gY2xhc3NfaW5pdDtcbiAgaW5pdF90YWJsZS5lbnZfaW5pdCA8LSBlbnZfaW5pdFxuXG5sZXQgZHVtbXlfY2xhc3MgbG9jID1cbiAgbGV0IHVuZGVmID0gZnVuIF8gLT4gcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYykgaW5cbiAgKE9iai5tYWdpYyB1bmRlZiwgdW5kZWYsIHVuZGVmLCBPYmoucmVwciAwKVxuXG4oKioqKiBPYmplY3RzICoqKiopXG5cbmxldCBjcmVhdGVfb2JqZWN0IHRhYmxlID1cbiAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgT2JqLm9iaiAoc2V0X2lkIG9iailcblxubGV0IGNyZWF0ZV9vYmplY3Rfb3B0IG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gICAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gICAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gICAgT2JqLm9iaiAoc2V0X2lkIG9iailcbiAgZW5kXG5cbmxldCByZWMgaXRlcl9mIG9iaiA9XG4gIGZ1bmN0aW9uXG4gICAgW10gICAtPiAoKVxuICB8IGY6OmwgLT4gZiBvYmo7IGl0ZXJfZiBvYmogbFxuXG5sZXQgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGUgPVxuICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgaWYgaW5pdHMgPD4gW10gdGhlblxuICAgIGl0ZXJfZiBvYmogaW5pdHNcblxubGV0IHJ1bl9pbml0aWFsaXplcnNfb3B0IG9ial8wIG9iaiB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9iaiBlbHNlIGJlZ2luXG4gICAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gICAgaWYgaW5pdHMgPD4gW10gdGhlbiBpdGVyX2Ygb2JqIGluaXRzO1xuICAgIG9ialxuICBlbmRcblxubGV0IGNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaXplcnMgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgbGV0IG9iaiA9IGNyZWF0ZV9vYmplY3QgdGFibGUgaW5cbiAgICBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZTtcbiAgICBvYmpcbiAgZW5kXG5cbigqIEVxdWl2YWxlbnQgcHJpbWl0aXZlIGJlbG93XG5sZXQgc2VuZHNlbGYgb2JqIGxhYiA9XG4gIChtYWdpYyBvYmogOiAob2JqIC0+IHQpIGFycmF5IGFycmF5KS4oMCkuKGxhYikgb2JqXG4qKVxuZXh0ZXJuYWwgc2VuZCA6IG9iaiAtPiB0YWcgLT4gJ2EgPSBcIiVzZW5kXCJcbmV4dGVybmFsIHNlbmRjYWNoZSA6IG9iaiAtPiB0YWcgLT4gdCAtPiBpbnQgLT4gJ2EgPSBcIiVzZW5kY2FjaGVcIlxuZXh0ZXJuYWwgc2VuZHNlbGYgOiBvYmogLT4gbGFiZWwgLT4gJ2EgPSBcIiVzZW5kc2VsZlwiXG5leHRlcm5hbCBnZXRfcHVibGljX21ldGhvZCA6IG9iaiAtPiB0YWcgLT4gY2xvc3VyZVxuICAgID0gXCJjYW1sX2dldF9wdWJsaWNfbWV0aG9kXCIgW0BAbm9hbGxvY11cblxuKCoqKiogdGFibGUgY29sbGVjdGlvbiBhY2Nlc3MgKioqKilcblxudHlwZSB0YWJsZXMgPVxuICB8IEVtcHR5XG4gIHwgQ29ucyBvZiB7a2V5IDogY2xvc3VyZTsgbXV0YWJsZSBkYXRhOiB0YWJsZXM7IG11dGFibGUgbmV4dDogdGFibGVzfVxuXG5sZXQgc2V0X2RhdGEgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhIDwtIHZcbmxldCBzZXRfbmV4dCB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHQgPC0gdlxubGV0IGdldF9rZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5rZXlcbmxldCBnZXRfZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGFcbmxldCBnZXRfbmV4dCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHRcblxubGV0IGJ1aWxkX3BhdGggbiBrZXlzIHRhYmxlcyA9XG4gIGxldCByZXMgPSBDb25zIHtrZXkgPSBPYmoubWFnaWMgMDsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gIGxldCByID0gcmVmIHJlcyBpblxuICBmb3IgaSA9IDAgdG8gbiBkb1xuICAgIHIgOj0gQ29ucyB7a2V5ID0ga2V5cy4oaSk7IGRhdGEgPSAhcjsgbmV4dCA9IEVtcHR5fVxuICBkb25lO1xuICBzZXRfZGF0YSB0YWJsZXMgIXI7XG4gIHJlc1xuXG5sZXQgcmVjIGxvb2t1cF9rZXlzIGkga2V5cyB0YWJsZXMgPVxuICBpZiBpIDwgMCB0aGVuIHRhYmxlcyBlbHNlXG4gIGxldCBrZXkgPSBrZXlzLihpKSBpblxuICBsZXQgcmVjIGxvb2t1cF9rZXkgKHRhYmxlczp0YWJsZXMpID1cbiAgICBpZiBnZXRfa2V5IHRhYmxlcyA9PSBrZXkgdGhlblxuICAgICAgbWF0Y2ggZ2V0X2RhdGEgdGFibGVzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IENvbnMgXyBhcyB0YWJsZXNfZGF0YSAtPlxuICAgICAgICAgIGxvb2t1cF9rZXlzIChpLTEpIGtleXMgdGFibGVzX2RhdGFcbiAgICBlbHNlXG4gICAgICBtYXRjaCBnZXRfbmV4dCB0YWJsZXMgd2l0aFxuICAgICAgfCBDb25zIF8gYXMgbmV4dCAtPiBsb29rdXBfa2V5IG5leHRcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBsZXQgbmV4dCA6IHRhYmxlcyA9IENvbnMge2tleTsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gICAgICAgICAgc2V0X25leHQgdGFibGVzIG5leHQ7XG4gICAgICAgICAgYnVpbGRfcGF0aCAoaS0xKSBrZXlzIG5leHRcbiAgaW5cbiAgbG9va3VwX2tleSB0YWJsZXNcblxubGV0IGxvb2t1cF90YWJsZXMgcm9vdCBrZXlzID1cbiAgbWF0Y2ggZ2V0X2RhdGEgcm9vdCB3aXRoXG4gIHwgQ29ucyBfIGFzIHJvb3RfZGF0YSAtPlxuICAgIGxvb2t1cF9rZXlzIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdF9kYXRhXG4gIHwgRW1wdHkgLT5cbiAgICBidWlsZF9wYXRoIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdFxuXG4oKioqKiBidWlsdGluIG1ldGhvZHMgKioqKilcblxubGV0IGdldF9jb25zdCB4ID0gcmV0IChmdW4gX29iaiAtPiB4KVxubGV0IGdldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIC0+IEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pXG5sZXQgZ2V0X2VudiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKVxubGV0IGdldF9tZXRoIG4gID0gcmV0IChmdW4gb2JqIC0+IHNlbmRzZWxmIG9iaiBuKVxubGV0IHNldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIHggLT4gQXJyYXkudW5zYWZlX3NldCBvYmogbiB4KVxubGV0IGFwcF9jb25zdCBmIHggPSByZXQgKGZ1biBfb2JqIC0+IGYgeClcbmxldCBhcHBfdmFyIGYgbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9lbnYgZiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfbWV0aCBmIG4gID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfY29uc3RfY29uc3QgZiB4IHkgPSByZXQgKGZ1biBfb2JqIC0+IGYgeCB5KVxubGV0IGFwcF9jb25zdF92YXIgZiB4IG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIHggKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9tZXRoIGYgeCBuID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF92YXJfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgeClcbmxldCBhcHBfbWV0aF9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikgeClcbmxldCBhcHBfY29uc3RfZW52IGYgeCBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9lbnZfY29uc3QgZiBlIG4geCA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIHgpXG5sZXQgbWV0aF9hcHBfY29uc3QgbiB4ID0gcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgeClcbmxldCBtZXRoX2FwcF92YXIgbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG0pKVxubGV0IG1ldGhfYXBwX2VudiBuIGUgbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbSkpXG5sZXQgbWV0aF9hcHBfbWV0aCBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoc2VuZHNlbGYgb2JqIG0pKVxubGV0IHNlbmRfY29uc3QgbSB4IGMgPVxuICByZXQgKGZ1biBvYmogLT4gc2VuZGNhY2hlIHggbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX3ZhciBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSA6IG9iaikgbVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9lbnYgbSBlIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZVxuICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldFxuICAgICAgICAgICAgICAgICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgOiBvYmopXG4gICAgICBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfbWV0aCBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoc2VuZHNlbGYgb2JqIG4pIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgbmV3X2NhY2hlIHRhYmxlID1cbiAgbGV0IG4gPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gIGxldCBuID1cbiAgICBpZiBuIG1vZCAyID0gMCB8fCBuID4gMiArIG1hZ2ljIHRhYmxlLm1ldGhvZHMuKDEpICogMTYgLyBTeXMud29yZF9zaXplXG4gICAgdGhlbiBuIGVsc2UgbmV3X21ldGhvZCB0YWJsZVxuICBpblxuICB0YWJsZS5tZXRob2RzLihuKSA8LSBPYmoubWFnaWMgMDtcbiAgblxuXG50eXBlIGltcGwgPVxuICAgIEdldENvbnN0XG4gIHwgR2V0VmFyXG4gIHwgR2V0RW52XG4gIHwgR2V0TWV0aFxuICB8IFNldFZhclxuICB8IEFwcENvbnN0XG4gIHwgQXBwVmFyXG4gIHwgQXBwRW52XG4gIHwgQXBwTWV0aFxuICB8IEFwcENvbnN0Q29uc3RcbiAgfCBBcHBDb25zdFZhclxuICB8IEFwcENvbnN0RW52XG4gIHwgQXBwQ29uc3RNZXRoXG4gIHwgQXBwVmFyQ29uc3RcbiAgfCBBcHBFbnZDb25zdFxuICB8IEFwcE1ldGhDb25zdFxuICB8IE1ldGhBcHBDb25zdFxuICB8IE1ldGhBcHBWYXJcbiAgfCBNZXRoQXBwRW52XG4gIHwgTWV0aEFwcE1ldGhcbiAgfCBTZW5kQ29uc3RcbiAgfCBTZW5kVmFyXG4gIHwgU2VuZEVudlxuICB8IFNlbmRNZXRoXG4gIHwgQ2xvc3VyZSBvZiBjbG9zdXJlXG5cbmxldCBtZXRob2RfaW1wbCB0YWJsZSBpIGFyciA9XG4gIGxldCBuZXh0ICgpID0gaW5jciBpOyBtYWdpYyBhcnIuKCFpKSBpblxuICBtYXRjaCBuZXh0KCkgd2l0aFxuICAgIEdldENvbnN0IC0+IGxldCB4IDogdCA9IG5leHQoKSBpbiBnZXRfY29uc3QgeFxuICB8IEdldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIGdldF92YXIgblxuICB8IEdldEVudiAgIC0+IGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGdldF9lbnYgZSBuXG4gIHwgR2V0TWV0aCAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X21ldGggblxuICB8IFNldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIHNldF92YXIgblxuICB8IEFwcENvbnN0IC0+IGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGFwcF9jb25zdCBmIHhcbiAgfCBBcHBWYXIgICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX3ZhciBmIG5cbiAgfCBBcHBFbnYgICAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gIGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfZW52IGYgZSBuXG4gIHwgQXBwTWV0aCAgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIGFwcF9tZXRoIGYgblxuICB8IEFwcENvbnN0Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCB5ID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfY29uc3QgZiB4IHlcbiAgfCBBcHBDb25zdFZhciAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF92YXIgZiB4IG5cbiAgfCBBcHBDb25zdEVudiAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0ICgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfZW52IGYgeCBlIG5cbiAgfCBBcHBDb25zdE1ldGggLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfbWV0aCBmIHggblxuICB8IEFwcFZhckNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX3Zhcl9jb25zdCBmIG4geFxuICB8IEFwcEVudkNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnZfY29uc3QgZiBlIG4geFxuICB8IEFwcE1ldGhDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9tZXRoX2NvbnN0IGYgbiB4XG4gIHwgTWV0aEFwcENvbnN0IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBtZXRoX2FwcF9jb25zdCBuIHhcbiAgfCBNZXRoQXBwVmFyIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF92YXIgbiBtXG4gIHwgTWV0aEFwcEVudiAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW5cbiAgICAgIG1ldGhfYXBwX2VudiBuIGUgbVxuICB8IE1ldGhBcHBNZXRoIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF9tZXRoIG4gbVxuICB8IFNlbmRDb25zdCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gc2VuZF9jb25zdCBtIHggKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kVmFyIC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gc2VuZF92YXIgbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZEVudiAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIHNlbmRfZW52IG0gZSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZE1ldGggLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX21ldGggbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgQ2xvc3VyZSBfIGFzIGNsbyAtPiBtYWdpYyBjbG9cblxubGV0IHNldF9tZXRob2RzIHRhYmxlIG1ldGhvZHMgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIG1ldGhvZHMgaW4gbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIGxldCBsYWJlbCA9IG1ldGhvZHMuKCFpKSBpbiBsZXQgY2xvID0gbWV0aG9kX2ltcGwgdGFibGUgaSBtZXRob2RzIGluXG4gICAgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBjbG87XG4gICAgaW5jciBpXG4gIGRvbmVcblxuKCoqKiogU3RhdGlzdGljcyAqKioqKVxuXG50eXBlIHN0YXRzID1cbiAgeyBjbGFzc2VzOiBpbnQ7IG1ldGhvZHM6IGludDsgaW5zdF92YXJzOiBpbnQ7IH1cblxubGV0IHN0YXRzICgpID1cbiAgeyBjbGFzc2VzID0gIXRhYmxlX2NvdW50O1xuICAgIG1ldGhvZHMgPSAhbWV0aG9kX2NvdW50OyBpbnN0X3ZhcnMgPSAhaW5zdF92YXJfY291bnQ7IH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzaGFwZSA9XG4gIHwgRnVuY3Rpb25cbiAgfCBMYXp5XG4gIHwgQ2xhc3NcbiAgfCBNb2R1bGUgb2Ygc2hhcGUgYXJyYXlcbiAgfCBWYWx1ZSBvZiBPYmoudFxuXG5sZXQgcmVjIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2Mgc2hhcGUgPVxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgIHwgRnVuY3Rpb24gLT5cbiAgICAgICBsZXQgcmVjIGZuICh4IDogJ2EpID1cbiAgICAgICAgIGxldCBmbicgOiAnYSAtPiAnYiA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICBpZiBmbiA9PSBmbicgdGhlblxuICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBmbicgeCBpblxuICAgICAgIE9iai5yZXByIGZuXG4gICAgfCBMYXp5IC0+XG4gICAgICAgbGV0IHJlYyBsID1cbiAgICAgICAgIGxhenkgKFxuICAgICAgICAgICBsZXQgbCcgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgICBpZiBsID09IGwnIHRoZW5cbiAgICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTGF6eS5mb3JjZSBsJykgaW5cbiAgICAgICBPYmoucmVwciBsXG4gICAgfCBDbGFzcyAtPlxuICAgICAgIE9iai5yZXByIChDYW1saW50ZXJuYWxPTy5kdW1teV9jbGFzcyBsb2MpXG4gICAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICAgIHwgVmFsdWUgdiAtPiB2XG4gIGluXG4gIE9iai5zZXRfZmllbGQgbW9kdSBpIGluaXRcblxuYW5kIGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcyA9XG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggY29tcHMgaW5cbiAgbGV0IG1vZHUgPSBPYmoubmV3X2Jsb2NrIDAgbGVuZ3RoIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBjb21wcy4oaSlcbiAgZG9uZTtcbiAgbW9kdVxuXG5sZXQgaW5pdF9tb2QgbG9jIHNoYXBlID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QuaW5pdF9tb2Q6IG5vdCBhIG1vZHVsZVwiXG5cbmxldCByZWMgdXBkYXRlX21vZF9maWVsZCBtb2R1IGkgc2hhcGUgbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBGdW5jdGlvbiB8IExhenkgLT5cbiAgICAgT2JqLnNldF9maWVsZCBtb2R1IGkgblxuICB8IFZhbHVlIF8gLT5cbiAgICAgKCkgKCogdGhlIHZhbHVlIGlzIGFscmVhZHkgdGhlcmUgKilcbiAgfCBDbGFzcyAtPlxuICAgICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA9IDQpO1xuICAgICBsZXQgY2wgPSBPYmouZmllbGQgbW9kdSBpIGluXG4gICAgIGZvciBqID0gMCB0byAzIGRvXG4gICAgICAgT2JqLnNldF9maWVsZCBjbCBqIChPYmouZmllbGQgbiBqKVxuICAgICBkb25lXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgKE9iai5maWVsZCBtb2R1IGkpIG5cblxuYW5kIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuID1cbiAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPj0gQXJyYXkubGVuZ3RoIGNvbXBzKTtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjb21wcyAtIDEgZG9cbiAgICB1cGRhdGVfbW9kX2ZpZWxkIG8gaSBjb21wcy4oaSkgKE9iai5maWVsZCBuIGkpXG4gIGRvbmVcblxubGV0IHVwZGF0ZV9tb2Qgc2hhcGUgbyBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gblxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QudXBkYXRlX21vZDogbm90IGEgbW9kdWxlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXSAoKiBpZ25vcmUgZGVwcmVjYXRpb24gd2FybmluZyBhYm91dCBtb2R1bGUgU3RyZWFtICopXG5cbnR5cGUgdG9rZW4gPVxuICAgIEt3ZCBvZiBzdHJpbmdcbiAgfCBJZGVudCBvZiBzdHJpbmdcbiAgfCBJbnQgb2YgaW50XG4gIHwgRmxvYXQgb2YgZmxvYXRcbiAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gIHwgQ2hhciBvZiBjaGFyXG5cbigqIFRoZSBzdHJpbmcgYnVmZmVyaW5nIG1hY2hpbmVyeSAqKVxuXG5sZXQgaW5pdGlhbF9idWZmZXIgPSBCeXRlcy5jcmVhdGUgMzJcblxubGV0IGJ1ZmZlciA9IHJlZiBpbml0aWFsX2J1ZmZlclxubGV0IGJ1ZnBvcyA9IHJlZiAwXG5cbmxldCByZXNldF9idWZmZXIgKCkgPSBidWZmZXIgOj0gaW5pdGlhbF9idWZmZXI7IGJ1ZnBvcyA6PSAwXG5cbmxldCBzdG9yZSBjID1cbiAgaWYgIWJ1ZnBvcyA+PSBCeXRlcy5sZW5ndGggIWJ1ZmZlciB0aGVuIGJlZ2luXG4gICAgbGV0IG5ld2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAoMiAqICFidWZwb3MpIGluXG4gICAgQnl0ZXMuYmxpdCAhYnVmZmVyIDAgbmV3YnVmZmVyIDAgIWJ1ZnBvcztcbiAgICBidWZmZXIgOj0gbmV3YnVmZmVyXG4gIGVuZDtcbiAgQnl0ZXMuc2V0ICFidWZmZXIgIWJ1ZnBvcyBjO1xuICBpbmNyIGJ1ZnBvc1xuXG5sZXQgZ2V0X3N0cmluZyAoKSA9XG4gIGxldCBzID0gQnl0ZXMuc3ViX3N0cmluZyAhYnVmZmVyIDAgIWJ1ZnBvcyBpbiBidWZmZXIgOj0gaW5pdGlhbF9idWZmZXI7IHNcblxuKCogVGhlIGxleGVyICopXG5cbmxldCBtYWtlX2xleGVyIGtleXdvcmRzID1cbiAgbGV0IGt3ZF90YWJsZSA9IEhhc2h0YmwuY3JlYXRlIDE3IGluXG4gIExpc3QuaXRlciAoZnVuIHMgLT4gSGFzaHRibC5hZGQga3dkX3RhYmxlIHMgKEt3ZCBzKSkga2V5d29yZHM7XG4gIGxldCBpZGVudF9vcl9rZXl3b3JkIGlkID1cbiAgICB0cnkgSGFzaHRibC5maW5kIGt3ZF90YWJsZSBpZCB3aXRoXG4gICAgICBOb3RfZm91bmQgLT4gSWRlbnQgaWRcbiAgYW5kIGtleXdvcmRfb3JfZXJyb3IgYyA9XG4gICAgbGV0IHMgPSBTdHJpbmcubWFrZSAxIGMgaW5cbiAgICB0cnkgSGFzaHRibC5maW5kIGt3ZF90YWJsZSBzIHdpdGhcbiAgICAgIE5vdF9mb3VuZCAtPiByYWlzZSAoU3RyZWFtLkVycm9yIChcIklsbGVnYWwgY2hhcmFjdGVyIFwiIF4gcykpXG4gIGluXG4gIGxldCByZWMgbmV4dF90b2tlbiAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnICcgfCAnXFwwMTAnIHwgJ1xcMDEzJyB8ICdcXDAwOScgfCAnXFwwMjYnIHwgJ1xcMDEyJykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBuZXh0X3Rva2VuIHN0cm1fX1xuICAgIHwgU29tZSAoJ0EnLi4nWicgfCAnYScuLid6JyB8ICdfJyB8ICdcXDE5MicuLidcXDI1NScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlIGM7IGlkZW50IHNcbiAgICB8IFNvbWVcbiAgICAgICAgKCchJyB8ICclJyB8ICcmJyB8ICckJyB8ICcjJyB8ICcrJyB8ICcvJyB8ICc6JyB8ICc8JyB8ICc9JyB8ICc+JyB8XG4gICAgICAgICAnPycgfCAnQCcgfCAnXFxcXCcgfCAnficgfCAnXicgfCAnfCcgfCAnKicgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlIGM7IGlkZW50MiBzXG4gICAgfCBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgYzsgbnVtYmVyIHNcbiAgICB8IFNvbWUgJ1xcJycgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgYyA9XG4gICAgICAgICAgdHJ5IGNoYXIgc3RybV9fIHdpdGhcbiAgICAgICAgICAgIFN0cmVhbS5GYWlsdXJlIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgICAgICBTb21lICdcXCcnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgU29tZSAoQ2hhciBjKVxuICAgICAgICB8IF8gLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgJ1xcXCInIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBTb21lIChTdHJpbmcgKHN0cmluZyBzKSlcbiAgICB8IFNvbWUgJy0nIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbmVnX251bWJlciBzdHJtX19cbiAgICB8IFNvbWUgJygnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfY29tbWVudCBzdHJtX19cbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IFNvbWUgKGtleXdvcmRfb3JfZXJyb3IgYylcbiAgICB8IF8gLT4gTm9uZVxuICBhbmQgaWRlbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZVxuICAgICAgICAoJ0EnLi4nWicgfCAnYScuLid6JyB8ICdcXDE5MicuLidcXDI1NScgfCAnMCcuLic5JyB8ICdfJyB8ICdcXCcnIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgaWRlbnQgc1xuICAgIHwgXyAtPiBTb21lIChpZGVudF9vcl9rZXl3b3JkIChnZXRfc3RyaW5nICgpKSlcbiAgYW5kIGlkZW50MiAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lXG4gICAgICAgICgnIScgfCAnJScgfCAnJicgfCAnJCcgfCAnIycgfCAnKycgfCAnLScgfCAnLycgfCAnOicgfCAnPCcgfCAnPScgfFxuICAgICAgICAgJz4nIHwgJz8nIHwgJ0AnIHwgJ1xcXFwnIHwgJ34nIHwgJ14nIHwgJ3wnIHwgJyonIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgaWRlbnQyIHNcbiAgICB8IF8gLT4gU29tZSAoaWRlbnRfb3Jfa2V5d29yZCAoZ2V0X3N0cmluZyAoKSkpXG4gIGFuZCBuZWdfbnVtYmVyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSAnLSc7IHN0b3JlIGM7IG51bWJlciBzXG4gICAgfCBfIC0+IGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgJy0nOyBpZGVudDIgc1xuICBhbmQgbnVtYmVyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgbnVtYmVyIHNcbiAgICB8IFNvbWUgJy4nIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgJy4nOyBkZWNpbWFsX3BhcnQgc1xuICAgIHwgU29tZSAoJ2UnIHwgJ0UnKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlICdFJzsgZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IFNvbWUgKEludCAoaW50X29mX3N0cmluZyAoZ2V0X3N0cmluZyAoKSkpKVxuICBhbmQgZGVjaW1hbF9wYXJ0IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgZGVjaW1hbF9wYXJ0IHNcbiAgICB8IFNvbWUgKCdlJyB8ICdFJykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSAnRSc7IGV4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBTb21lIChGbG9hdCAoZmxvYXRfb2Zfc3RyaW5nIChnZXRfc3RyaW5nICgpKSkpXG4gIGFuZCBleHBvbmVudF9wYXJ0IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcrJyB8ICctJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGVuZF9leHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gZW5kX2V4cG9uZW50X3BhcnQgc3RybV9fXG4gIGFuZCBlbmRfZXhwb25lbnRfcGFydCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGVuZF9leHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gU29tZSAoRmxvYXQgKGZsb2F0X29mX3N0cmluZyAoZ2V0X3N0cmluZyAoKSkpKVxuICBhbmQgc3RyaW5nIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJ1xcXCInIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgZ2V0X3N0cmluZyAoKVxuICAgIHwgU29tZSAnXFxcXCcgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgYyA9XG4gICAgICAgICAgdHJ5IGVzY2FwZSBzdHJtX18gd2l0aFxuICAgICAgICAgICAgU3RyZWFtLkZhaWx1cmUgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBzdHJpbmcgc1xuICAgIHwgU29tZSBjIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgc3RyaW5nIHNcbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIGNoYXIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnXFxcXCcgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBiZWdpbiB0cnkgZXNjYXBlIHN0cm1fXyB3aXRoXG4gICAgICAgICAgU3RyZWFtLkZhaWx1cmUgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNcbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIGVzY2FwZSAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICduJyAtPiBTdHJlYW0uanVuayBzdHJtX187ICdcXG4nXG4gICAgfCBTb21lICdyJyAtPiBTdHJlYW0uanVuayBzdHJtX187ICdcXHInXG4gICAgfCBTb21lICd0JyAtPiBTdHJlYW0uanVuayBzdHJtX187ICdcXHQnXG4gICAgfCBTb21lICgnMCcuLic5JyBhcyBjMSkgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBiZWdpbiBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMyKSAtPlxuICAgICAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgICAgICAgICAgU29tZSAoJzAnLi4nOScgYXMgYzMpIC0+XG4gICAgICAgICAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICAgICAgICAgIENoYXIuY2hyXG4gICAgICAgICAgICAgICAgICAoKENoYXIuY29kZSBjMSAtIDQ4KSAqIDEwMCArIChDaGFyLmNvZGUgYzIgLSA0OCkgKiAxMCArXG4gICAgICAgICAgICAgICAgICAgICAoQ2hhci5jb2RlIGMzIC0gNDgpKVxuICAgICAgICAgICAgfCBfIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNcbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIG1heWJlX2NvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKicgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBjb21tZW50IHM7IG5leHRfdG9rZW4gc1xuICAgIHwgXyAtPiBTb21lIChrZXl3b3JkX29yX2Vycm9yICcoJylcbiAgYW5kIGNvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKCcgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBtYXliZV9uZXN0ZWRfY29tbWVudCBzdHJtX19cbiAgICB8IFNvbWUgJyonIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfZW5kX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lIF8gLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjb21tZW50IHN0cm1fX1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgbWF5YmVfbmVzdGVkX2NvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBjb21tZW50IHM7IGNvbW1lbnQgc1xuICAgIHwgU29tZSBfIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY29tbWVudCBzdHJtX19cbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIG1heWJlX2VuZF9jb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJyknIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgKClcbiAgICB8IFNvbWUgJyonIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfZW5kX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lIF8gLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjb21tZW50IHN0cm1fX1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBpblxuICBmdW4gaW5wdXQgLT4gU3RyZWFtLmZyb20gKGZ1biBfY291bnQgLT4gbmV4dF90b2tlbiBpbnB1dClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9IHNpZ1xuXG4gIHR5cGUga2V5XG4gIHR5cGUgISdhIHRcbiAgdmFsIGNyZWF0ZSA6ID9yYW5kb20gKCp0aHdhcnQgdG9vbHMvc3luY19zdGRsaWJfZG9jcyopIDogYm9vbCAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIGZpbmRfb3B0IDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBpdGVyIDogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlIDogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCBmb2xkIDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgc3RhdHMgOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICB2YWwgY2xlYW46ICdhIHQgLT4gdW5pdFxuICB2YWwgc3RhdHNfYWxpdmU6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gICAgKCoqIHNhbWUgYXMgeyFzdGF0c30gYnV0IG9ubHkgY291bnQgdGhlIGFsaXZlIGJpbmRpbmdzICopXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuXG4gIHR5cGUga2V5XG4gIHR5cGUgISdhIHRcbiAgdmFsIGNyZWF0ZSA6IGludCAtPiAnYSB0XG4gIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICB2YWwgZmluZF9vcHQgOiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2UgOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIGZvbGQgOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIHZhbCBzdGF0cyA6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgR2VuSGFzaFRhYmxlID0gc3RydWN0XG5cbiAgdHlwZSBlcXVhbCA9XG4gIHwgRVRydWUgfCBFRmFsc2VcbiAgfCBFRGVhZCAoKiogdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHJlY2xhaW1lZCB0aGUgZGF0YSAqKVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkKEg6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgJ2EgY29udGFpbmVyXG4gICAgdmFsIGNyZWF0ZTogdCAtPiAnYSAtPiAnYSBjb250YWluZXJcbiAgICB2YWwgaGFzaDogaW50IC0+IHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAnYSBjb250YWluZXIgLT4gdCAtPiBlcXVhbFxuICAgIHZhbCBnZXRfZGF0YTogJ2EgY29udGFpbmVyIC0+ICdhIG9wdGlvblxuICAgIHZhbCBnZXRfa2V5OiAnYSBjb250YWluZXIgLT4gdCBvcHRpb25cbiAgICB2YWwgc2V0X2tleV9kYXRhOiAnYSBjb250YWluZXIgLT4gdCAtPiAnYSAtPiB1bml0XG4gICAgdmFsIGNoZWNrX2tleTogJ2EgY29udGFpbmVyIC0+IGJvb2xcbiAgZW5kKSA6IFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudFxuICA9IHN0cnVjdFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICAgICAgbXV0YWJsZSBkYXRhOiAnYSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICAgICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICAgICAgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gICAgICB9XG5cbiAgICBhbmQgJ2EgYnVja2V0bGlzdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgQ29ucyBvZiBpbnQgKCogaGFzaCBvZiB0aGUga2V5ICopICogJ2EgSC5jb250YWluZXIgKiAnYSBidWNrZXRsaXN0XG5cbiAgICAoKiogdGhlIGhhc2ggb2YgdGhlIGtleSBpcyBrZXB0IGluIG9yZGVyIHRvIHRlc3QgdGhlIGVxdWFsaXR5IG9mIHRoZSBoYXNoXG4gICAgICBiZWZvcmUgdGhlIGtleS4gU2FtZSByZWFzb24gYXMgZm9yIFdlYWsuTWFrZSAqKVxuXG4gICAgdHlwZSBrZXkgPSBILnRcblxuICAgIGxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICAgICAgaWYgeCA+PSBuIHRoZW4geFxuICAgICAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICAgICAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG4gICAgbGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSlcblxuICAgIGxldCBjcmVhdGUgPyhyYW5kb20gPSAoSGFzaHRibC5pc19yYW5kb21pemVkICgpKSkgaW5pdGlhbF9zaXplID1cbiAgICAgIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgICAgIGxldCBzZWVkID0gaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykgZWxzZSAwIGluXG4gICAgICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbiAgICBsZXQgY2xlYXIgaCA9XG4gICAgICBoLnNpemUgPC0gMDtcbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICBkb25lXG5cbiAgICBsZXQgcmVzZXQgaCA9XG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICAgICAgaWYgbGVuID0gaC5pbml0aWFsX3NpemUgdGhlblxuICAgICAgICBjbGVhciBoXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSBoLmluaXRpYWxfc2l6ZSBFbXB0eVxuICAgICAgZW5kXG5cbiAgICBsZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5LmNvcHkgaC5kYXRhIH1cblxuICAgIGxldCBrZXlfaW5kZXggaCBoa2V5ID1cbiAgICAgIGhrZXkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgY2xlYW4gaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIEVtcHR5XG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSB3aGVuIG5vdCAoSC5jaGVja19rZXkgYykgLT5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgfCBDb25zKGhrZXksIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBDb25zKGhrZXksIGMsIGRvX2J1Y2tldCByZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGQuKGkpIDwtIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgKCoqIHJlc2l6ZSBpcyB0aGUgb25seSBmdW5jdGlvbiB0byBkbyB0aGUgYWN0dWFsIGNsZWFuaW5nIG9mIGRlYWQga2V5c1xuICAgICAgICAocmVtb3ZlIGRvZXMgaXQganVzdCBiZWNhdXNlIGl0IGNvdWxkKS5cblxuICAgICAgICBUaGUgZ29hbCBpcyB0bzpcblxuICAgICAgICAtIG5vdCByZXNpemUgaW5maW5pdGVseSB3aGVuIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGFsaXZlIGtleXMgaXNcbiAgICAgICAgYm91bmRlZCBidXQga2V5cyBhcmUgY29udGludW91c2x5IGFkZGVkLiBUaGF0IHdvdWxkIGhhcHBlbiBpZlxuICAgICAgICB0aGlzIGZ1bmN0aW9uIGFsd2F5cyByZXNpemUuXG4gICAgICAgIC0gbm90IGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlciBlYWNoIGFkZGl0aW9uLCB0aGF0IHdvdWxkIGhhcHBlbiBpZiB0aGlzXG4gICAgICAgIGZ1bmN0aW9uIGRvbid0IHJlc2l6ZSBldmVuIHdoZW4gb25seSBvbmUga2V5IGlzIGRlYWQuXG5cbiAgICAgICAgU28gdGhlIGFsZ29yaXRobTpcbiAgICAgICAgLSBjbGVhbiB0aGUga2V5cyBiZWZvcmUgcmVzaXppbmdcbiAgICAgICAgLSBpZiB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBrZXlzIGlzIGxlc3MgdGhhbiBoYWxmIHRoZSBzaXplIG9mIHRoZVxuICAgICAgICBhcnJheSwgZG9uJ3QgcmVzaXplLlxuICAgICAgICAtIGlmIGl0IGlzIG1vcmUsIHJlc2l6ZS5cblxuICAgICAgICBUaGUgc2Vjb25kIHByb2JsZW0gcmVtYWlucyBpZiB0aGUgdGFibGUgcmVhY2hlcyB7IVN5cy5tYXhfYXJyYXlfbGVuZ3RofS5cblxuICAgICopXG4gICAgbGV0IHJlc2l6ZSBoID1cbiAgICAgIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICAgICAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gICAgICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgICAgIGNsZWFuIGg7XG4gICAgICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoICYmIGguc2l6ZSA+PSBvc2l6ZSBsc3IgMSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICAgICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAoKiBzbyB0aGF0IGtleV9pbmRleCBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgICAgIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgICAgIHwgQ29ucyhoa2V5LCBkYXRhLCByZXN0KSAtPlxuICAgICAgICAgICAgICBpbnNlcnRfYnVja2V0IHJlc3Q7ICgqIHByZXNlcnZlIG9yaWdpbmFsIG9yZGVyIG9mIGVsZW1lbnRzICopXG4gICAgICAgICAgICAgIGxldCBuaWR4ID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgICAgICAgICBuZGF0YS4obmlkeCkgPC0gQ29ucyhoa2V5LCBkYXRhLCBuZGF0YS4obmlkeCkpIGluXG4gICAgICAgIGZvciBpID0gMCB0byBvc2l6ZSAtIDEgZG9cbiAgICAgICAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICAgICAgICBkb25lXG4gICAgICBlbmRcblxuICAgIGxldCBhZGQgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnMoaGtleSwgY29udGFpbmVyLCBoLmRhdGEuKGkpKSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIHJlbW92ZV9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBoLnNpemUgPC0gaC5zaXplIC0gMTsgbmV4dFxuICAgICAgICAgICAgfCBFRmFsc2UgLT4gQ29ucyhoaywgYywgcmVtb3ZlX2J1Y2tldCBuZXh0KVxuICAgICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICAgICgqIFRoZSBkZWFkIGtleSBpcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQuIEl0IGlzIGFjY2VwdGFibGVcbiAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgZnVuY3Rpb24gc2luY2UgaXQgYWxyZWFkeSByZW1vdmVzIGEgYmluZGluZyAqKVxuICAgICAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgICAgIHJlbW92ZV9idWNrZXQgbmV4dFxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgQ29ucyhoayxjLG5leHQpIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dCkgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgaC5kYXRhLihpKSA8LSByZW1vdmVfYnVja2V0IGguZGF0YS4oaSlcblxuICAgICgqKiB7IWZpbmR9IGRvbid0IHJlbW92ZSBkZWFkIGtleXMgYmVjYXVzZSBpdCB3b3VsZCBiZSBzdXJwcmlzaW5nIGZvclxuICAgICAgICB0aGUgdXNlciB0aGF0IGEgcmVhZC1vbmx5IGZ1bmN0aW9uIG11dGF0ZXMgdGhlIHN0YXRlIChlZy4gY29uY3VycmVudFxuICAgICAgICBhY2Nlc3MpLiBTYW1lIGZvciB7IWl0ZXJ9LCB7IWZvbGR9LCB7IW1lbX0uXG4gICAgKilcbiAgICBsZXQgcmVjIGZpbmRfcmVjIGtleSBoa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmQgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlYyBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSBoa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIF8gYXMgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gW11cbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPiBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT4gZDo6ZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdCBpblxuICAgICAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KVxuXG5cbiAgICBsZXQgcmVwbGFjZSBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gSC5zZXRfa2V5X2RhdGEgYyBrZXkgaW5mb1xuICAgICAgICAgICAgfCBFRmFsc2UgfCBFRGVhZCAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKF8sXyxuZXh0KSAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIHRyeVxuICAgICAgICByZXBsYWNlX2J1Y2tldCBsXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25zKGhrZXksIGNvbnRhaW5lciwgbCk7XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrID0gaGtleSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gdHJ1ZVxuICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gbWVtX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoX2hrLCBfYywgcmVzdCkgLT4gbWVtX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuICAgIGxldCBpdGVyIGYgaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgICgpXG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgaywgU29tZSBkIC0+IGYgayBkXG4gICAgICAgICAgICBlbmQ7IGRvX2J1Y2tldCByZXN0IGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBkb19idWNrZXQgZC4oaSlcbiAgICAgIGRvbmVcblxuICAgIGxldCBmb2xkIGYgaCBpbml0ID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0IGIgYWNjdSA9XG4gICAgICAgIG1hdGNoIGIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgICBhY2N1XG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IGFjY3UgPSBiZWdpbiBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBhY2N1XG4gICAgICAgICAgICAgIHwgU29tZSBrLCBTb21lIGQgLT4gZiBrIGQgYWNjdVxuICAgICAgICAgICAgZW5kIGluXG4gICAgICAgICAgICBkb19idWNrZXQgcmVzdCBhY2N1ICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGxldCBhY2N1ID0gcmVmIGluaXQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgYWNjdSA6PSBkb19idWNrZXQgZC4oaSkgIWFjY3VcbiAgICAgIGRvbmU7XG4gICAgICAhYWNjdVxuXG4gICAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSBmIGggPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICBFbXB0eVxuICAgICAgICB8IENvbnMoaGssIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT5cbiAgICAgICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICAgICAgfCBTb21lIGssIFNvbWUgZCAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGYgayBkIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgbmV3X2QgLT5cbiAgICAgICAgICAgICAgICAgICAgSC5zZXRfa2V5X2RhdGEgYyBrIG5ld19kO1xuICAgICAgICAgICAgICAgICAgICBDb25zKGhrLCBjLCBkb19idWNrZXQgcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBkLihpKSA8LSBkb19idWNrZXQgZC4oaSlcbiAgICAgIGRvbmVcblxuICAgIGxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIHJlc3RcblxuICAgIGxldCBzdGF0cyBoID1cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBILmNoZWNrX2tleSBjIC0+XG4gICAgICAgICAgYnVja2V0X2xlbmd0aF9hbGl2ZSAoYWNjdSArIDEpIHJlc3RcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgcmVzdFxuXG4gICAgbGV0IHN0YXRzX2FsaXZlIGggPVxuICAgICAgbGV0IHNpemUgPSByZWYgMCBpblxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIpKSAwIGguZGF0YVxuICAgICAgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIgaW5cbiAgICAgICAgICAgc2l6ZSA6PSAhc2l6ZSArIGw7XG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gIXNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgdG9fc2VxIHRibCA9XG4gICAgICAoKiBjYXB0dXJlIGN1cnJlbnQgYXJyYXksIHNvIHRoYXQgZXZlbiBpZiB0aGUgdGFibGUgaXMgcmVzaXplZCB3ZVxuICAgICAgICAga2VlcCBpdGVyYXRpbmcgb24gdGhlIHNhbWUgYXJyYXkgKilcbiAgICAgIGxldCB0YmxfZGF0YSA9IHRibC5kYXRhIGluXG4gICAgICAoKiBzdGF0ZTogaW5kZXggKiBuZXh0IGJ1Y2tldCB0byB0cmF2ZXJzZSAqKVxuICAgICAgbGV0IHJlYyBhdXggaSBidWNrICgpID0gbWF0Y2ggYnVjayB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdGJsX2RhdGFcbiAgICAgICAgICAgIHRoZW4gU2VxLk5pbFxuICAgICAgICAgICAgZWxzZSBhdXgoaSsxKSB0YmxfZGF0YS4oaSkgKClcbiAgICAgICAgfCBDb25zIChfLCBjLCBuZXh0KSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gYXV4IGkgbmV4dCAoKVxuICAgICAgICAgICAgICB8IFNvbWUga2V5LCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgICAgIFNlcS5Db25zICgoa2V5LCBkYXRhKSwgYXV4IGkgbmV4dClcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGF1eCAwIEVtcHR5XG5cbiAgICBsZXQgdG9fc2VxX2tleXMgbSA9IFNlcS5tYXAgZnN0ICh0b19zZXEgbSlcblxuICAgIGxldCB0b19zZXFfdmFsdWVzIG0gPSBTZXEubWFwIHNuZCAodG9fc2VxIG0pXG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPYmpFcGggPSBPYmouRXBoZW1lcm9uXG5cbmxldCBfb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPlxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHhcbiAgfCBTb21lIHYgLT4gU29tZSAoT2JqLm9iaiB2KVxuXG4oKiogVGhlIHByZXZpb3VzIGZ1bmN0aW9uIGlzIHR5cGVkIHNvIHRoaXMgb25lIGlzIGFsc28gY29ycmVjdCAqKVxubGV0IG9ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT4gT2JqLm1hZ2ljIHhcblxuXG5tb2R1bGUgSzEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDFcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgZ2V0X2tleV9jb3B5ICh0OignaywnZCkgdCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgMClcbiAgbGV0IHNldF9rZXkgKHQ6KCdrLCdkKSB0KSAoazonaykgOiB1bml0ID0gT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5ICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IDBcbiAgbGV0IGNoZWNrX2tleSAodDooJ2ssJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAwXG5cbiAgbGV0IGJsaXRfa2V5ICh0MTooJ2ssJ2QpIHQpICh0MjooJ2ssJ2QpIHQpOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMCB0MiAwIDFcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgZ2V0X2RhdGFfY29weSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhX2NvcHkgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcbiAgbGV0IGNoZWNrX2RhdGEgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfZGF0YSB0XG4gIGxldCBibGl0X2RhdGEgKHQxOihfLCdkKSB0KSAodDI6KF8sJ2QpIHQpIDogdW5pdCA9IE9iakVwaC5ibGl0X2RhdGEgdDEgdDJcblxuICBsZXQgbWFrZSBrZXkgZGF0YSA9XG4gICAgbGV0IGVwaCA9IGNyZWF0ZSAoKSBpblxuICAgIHNldF9kYXRhIGVwaCBkYXRhO1xuICAgIHNldF9rZXkgZXBoIGtleTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleSA9XG4gICAgbWF0Y2ggZ2V0X2tleSBlcGggd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGsgd2hlbiBrID09IGtleSAtPiBnZXRfZGF0YSBlcGhcbiAgICB8IFNvbWUgXyAtPiBOb25lXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQgKEg6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChILnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgbGV0IGNyZWF0ZSBrIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBjXG4gICAgICBsZXQgaGFzaCA9IEguaGFzaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgICgqIHshZ2V0X2tleV9jb3B5fSBpcyBub3QgdXNlZCBiZWNhdXNlIHRoZSBlcXVhbGl0eSBvZiB0aGUgdXNlciBjYW4gYmVcbiAgICAgICAgICAgIHRoZSBwaHlzaWNhbCBlcXVhbGl0eSAqKVxuICAgICAgICBtYXRjaCBnZXRfa2V5IGMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrJyAtPlxuICAgICAgICAgICAgaWYgSC5lcXVhbCBrIGsnIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBnZXRfa2V5ID0gZ2V0X2tleVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgc2V0X2tleSBjIGs7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSA9IGNoZWNrX2tleVxuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIOiBIYXNodGJsLkhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2ssICdkKSB0ID0gKCdrLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrMV9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsgZCA9IGIgOj0gazFfbWFrZSBrIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleSBrIGUgPVxuICAgICAgbWF0Y2ggZ2V0X2tleSBlIHdpdGhcbiAgICAgIHwgU29tZSB4IHdoZW4geCA9PSBrIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsgPVxuICAgICAgbGV0IHJlYyBsb29wIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBoIDo6IHQgd2hlbiB0ZXN0X2tleSBrIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXkgaykgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgSzIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2sxLCAnazIsICdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrMSwnazIsJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDJcblxuICBsZXQgZ2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2sxIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IGdldF9rZXkxX2NvcHkgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2sxIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IDApXG4gIGxldCBzZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgKGs6J2sxKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgMCAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCAwXG4gIGxldCBjaGVja19rZXkxICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAxKVxuICBsZXQgZ2V0X2tleTJfY29weSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgMSlcbiAgbGV0IHNldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSAoazonazIpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAxIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IDFcbiAgbGV0IGNoZWNrX2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAxXG5cblxuICBsZXQgYmxpdF9rZXkxICh0MTooJ2sxLF8sXykgdCkgKHQyOignazEsXyxfKSB0KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAwIHQyIDAgMVxuICBsZXQgYmxpdF9rZXkyICh0MTooXywnazIsXykgdCkgKHQyOihfLCdrMixfKSB0KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAxIHQyIDEgMVxuICBsZXQgYmxpdF9rZXkxMiAodDE6KCdrMSwnazIsXykgdCkgKHQyOignazEsJ2syLF8pIHQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDAgdDIgMCAyXG5cbiAgbGV0IGdldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgZ2V0X2RhdGFfY29weSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnZCBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YV9jb3B5IHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgKGQ6J2QpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG4gIGxldCBjaGVja19kYXRhICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfZGF0YSB0XG4gIGxldCBibGl0X2RhdGEgKHQxOihfLF8sJ2QpIHQpICh0MjooXyxfLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGguYmxpdF9kYXRhIHQxIHQyXG5cbiAgbGV0IG1ha2Uga2V5MSBrZXkyIGRhdGEgPVxuICAgIGxldCBlcGggPSBjcmVhdGUgKCkgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBzZXRfa2V5MSBlcGgga2V5MTtcbiAgICBzZXRfa2V5MiBlcGgga2V5MjtcbiAgICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkga2V5MSk7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXkxIGtleTIgPVxuICAgIG1hdGNoIGdldF9rZXkxIGVwaCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5MSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBnZXRfa2V5MiBlcGggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5MiAtPiBnZXRfZGF0YSBlcGhcbiAgICAgICAgfCBTb21lIF8gLT4gTm9uZVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgXyAtPiBOb25lXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWRcbiAgICAgIChIMTpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpXG4gICAgICAoSDI6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChIMS50LEgyLnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgxLnQgKiBIMi50XG4gICAgICBsZXQgY3JlYXRlIChrMSxrMikgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleTEgYyBrMTsgc2V0X2tleTIgYyBrMjtcbiAgICAgICAgY1xuICAgICAgbGV0IGhhc2ggc2VlZCAoazEsazIpID1cbiAgICAgICAgSDEuaGFzaCBzZWVkIGsxICsgSDIuaGFzaCBzZWVkIGsyICogNjU1OTlcbiAgICAgIGxldCBlcXVhbCBjIChrMSxrMikgPVxuICAgICAgICBtYXRjaCBnZXRfa2V5MSBjLCBnZXRfa2V5MiBjIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIHwgXyAsIE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrMScsIFNvbWUgazInIC0+XG4gICAgICAgICAgICBpZiBIMS5lcXVhbCBrMSBrMScgJiYgSDIuZXF1YWwgazIgazInXG4gICAgICAgICAgICB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgZ2V0X2tleSBjID1cbiAgICAgICAgbWF0Y2ggZ2V0X2tleTEgYywgZ2V0X2tleTIgYyB3aXRoXG4gICAgICAgIHwgTm9uZSwgXyB8IF8gLCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGsxJywgU29tZSBrMicgLT4gU29tZSAoazEnLCBrMicpXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgKGsxLGsyKSBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9IGNoZWNrX2tleTEgYyAmJiBjaGVja19rZXkyIGNcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDE6IEhhc2h0YmwuSGFzaGVkVHlwZSkoSDI6IEhhc2h0YmwuSGFzaGVkVHlwZSk6XG4gICAgKFMgd2l0aCB0eXBlIGtleSA9IEgxLnQgKiBIMi50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDEudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgxLmVxdWFsXG4gICAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBIMS5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDIudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgyLmVxdWFsXG4gICAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBIMi5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2sxLCAnazIsICdkKSB0ID0gKCdrMSwgJ2syLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrMl9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsxIGsyIGQgPSBiIDo9IGsyX21ha2UgazEgazIgZCA6OiAhYlxuXG4gICAgbGV0IHRlc3Rfa2V5cyBrMSBrMiBlID1cbiAgICAgIG1hdGNoIGdldF9rZXkxIGUsIGdldF9rZXkyIGUgd2l0aFxuICAgICAgfCBTb21lIHgxLCBTb21lIHgyIHdoZW4geDEgPT0gazEgJiYgeDIgPT0gazIgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgazEgazIgPVxuICAgICAgbGV0IHJlYyBsb29wIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBoIDo6IHQgd2hlbiB0ZXN0X2tleXMgazEgazIgaCAtPiBiIDo9IExpc3QucmV2X2FwcGVuZCBhY2MgdFxuICAgICAgICB8IGggOjogdCAtPiBsb29wIHQgKGggOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgIWIgW11cblxuICAgIGxldCBmaW5kIGIgazEgazIgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXlzIGsxIGsyKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLbiA9IHN0cnVjdFxuICB0eXBlICgnaywnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSBuIDogKCdrLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSBuXG4gIGxldCBsZW5ndGggKGs6KCdrLCdkKSB0KSA6IGludCA9IE9iakVwaC5sZW5ndGgga1xuXG4gIGxldCBnZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgbilcbiAgbGV0IGdldF9rZXlfY29weSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiAnayBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCBuKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgKGs6J2spIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCBuIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgblxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgblxuXG4gIGxldCBibGl0X2tleSAodDE6KCdrLCdkKSB0KSAobzE6aW50KSAodDI6KCdrLCdkKSB0KSAobzI6aW50KSAobDppbnQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIG8xIHQyIG8yIGxcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgZ2V0X2RhdGFfY29weSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhX2NvcHkgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcbiAgbGV0IGNoZWNrX2RhdGEgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfZGF0YSB0XG4gIGxldCBibGl0X2RhdGEgKHQxOihfLCdkKSB0KSAodDI6KF8sJ2QpIHQpIDogdW5pdCA9IE9iakVwaC5ibGl0X2RhdGEgdDEgdDJcblxuICBsZXQgbWFrZSBrZXlzIGRhdGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGtleXMgaW5cbiAgICBsZXQgZXBoID0gY3JlYXRlIGwgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gc2V0X2tleSBlcGggaSBrZXlzLihpKSBkb25lO1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5cyA9XG4gICAgbGV0IGwgPSBsZW5ndGggZXBoIGluXG4gICAgdHJ5XG4gICAgICBpZiBsIDw+IEFycmF5Lmxlbmd0aCBrZXlzIHRoZW4gcmFpc2UgRXhpdDtcbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICBtYXRjaCBnZXRfa2V5IGVwaCBpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgfCBTb21lIGsgd2hlbiBrID09IGtleXMuKGkpIC0+ICgpXG4gICAgICAgIHwgU29tZSBfIC0+IHJhaXNlIEV4aXRcbiAgICAgIGRvbmU7XG4gICAgICBnZXRfZGF0YSBlcGhcbiAgICB3aXRoIEV4aXQgLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnQgYXJyYXlcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKEFycmF5Lmxlbmd0aCBrKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgY1xuICAgICAgbGV0IGhhc2ggc2VlZCBrID1cbiAgICAgICAgbGV0IGggPSByZWYgMCBpblxuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgaCA6PSBILmhhc2ggc2VlZCBrLihpKSAqIDY1NTk5ICsgIWg7XG4gICAgICAgIGRvbmU7XG4gICAgICAgICFoXG4gICAgICBsZXQgZXF1YWwgYyBrID1cbiAgICAgICAgbGV0IGxlbiAgPSBBcnJheS5sZW5ndGggayBpblxuICAgICAgICBsZXQgbGVuJyA9IGxlbmd0aCBjIGluXG4gICAgICAgIGlmIGxlbiAhPSBsZW4nIHRoZW4gR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHJlYyBlcXVhbF9hcnJheSBrIGMgaSA9XG4gICAgICAgICAgICBpZiBpIDwgMCB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBnZXRfa2V5IGMgaSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgICAgICAgfCBTb21lIGtpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGsuKGkpIGtpXG4gICAgICAgICAgICAgICAgICB0aGVuIGVxdWFsX2FycmF5IGsgYyAoaS0xKVxuICAgICAgICAgICAgICAgICAgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcXVhbF9hcnJheSBrIGMgKGxlbi0xKVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBnZXRfa2V5IGMgPVxuICAgICAgICBsZXQgbGVuID0gbGVuZ3RoIGMgaW5cbiAgICAgICAgaWYgbGVuID0gMCB0aGVuIFNvbWUgW3x8XVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIDAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGswIC0+XG4gICAgICAgICAgICAgIGxldCByZWMgZmlsbCBhIGkgPVxuICAgICAgICAgICAgICAgIGlmIGkgPCAxIHRoZW4gU29tZSBhXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIGkgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBraSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGEuKGkpIDwtIGtpO1xuICAgICAgICAgICAgICAgICAgICAgIGZpbGwgYSAoaS0xKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIGswIGluXG4gICAgICAgICAgICAgIGZpbGwgYSAobGVuLTEpXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgayBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgc2V0X2tleSBjIGkgay4oaSk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSBjID1cbiAgICAgICAgbGV0IHJlYyBjaGVjayBjIGkgPVxuICAgICAgICAgIGkgPCAwIHx8IChjaGVja19rZXkgYyBpICYmIGNoZWNrIGMgKGktMSkpIGluXG4gICAgICAgIGNoZWNrIGMgKGxlbmd0aCBjIC0gMSlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCBhcnJheSkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrLCAnZCkgdCA9ICgnaywgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQga25fbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrIGQgPSBiIDo9IGtuX21ha2UgayBkIDo6ICFiXG5cbiAgICBsZXQgdGVzdF9rZXlzIGsgZSA9XG4gICAgICB0cnlcbiAgICAgICAgaWYgbGVuZ3RoIGUgPD4gQXJyYXkubGVuZ3RoIGsgdGhlbiByYWlzZSBFeGl0O1xuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGsgLSAxIGRvXG4gICAgICAgICAgbWF0Y2ggZ2V0X2tleSBlIGkgd2l0aFxuICAgICAgICAgIHwgU29tZSB4IHdoZW4geCA9PSBrLihpKSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRydWVcbiAgICAgIHdpdGggRXhpdCAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsgPVxuICAgICAgbGV0IHJlYyBsb29wIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBoIDo6IHQgd2hlbiB0ZXN0X2tleXMgayBoIC0+IGIgOj0gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgIHwgaCA6OiB0IC0+IGxvb3AgdCAoaCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAhYiBbXVxuXG4gICAgbGV0IGZpbmQgYiBrID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5cyBrKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgTWFudWVsIFNlcnJhbm8gZXQgWGF2aWVyIExlcm95LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbQmlnYXJyYXldOiBsYXJnZSwgbXVsdGktZGltZW5zaW9uYWwsIG51bWVyaWNhbCBhcnJheXMgKilcblxuKCogVGhlc2UgdHlwZXMgaW4gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdGFibGVzIGluXG4gICAuLi90eXBpbmcvdHlwZW9wdC5tbCAqKVxuXG50eXBlIGZsb2F0MzJfZWx0ID0gRmxvYXQzMl9lbHRcbnR5cGUgZmxvYXQ2NF9lbHQgPSBGbG9hdDY0X2VsdFxudHlwZSBpbnQ4X3NpZ25lZF9lbHQgPSBJbnQ4X3NpZ25lZF9lbHRcbnR5cGUgaW50OF91bnNpZ25lZF9lbHQgPSBJbnQ4X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQxNl9zaWduZWRfZWx0ID0gSW50MTZfc2lnbmVkX2VsdFxudHlwZSBpbnQxNl91bnNpZ25lZF9lbHQgPSBJbnQxNl91bnNpZ25lZF9lbHRcbnR5cGUgaW50MzJfZWx0ID0gSW50MzJfZWx0XG50eXBlIGludDY0X2VsdCA9IEludDY0X2VsdFxudHlwZSBpbnRfZWx0ID0gSW50X2VsdFxudHlwZSBuYXRpdmVpbnRfZWx0ID0gTmF0aXZlaW50X2VsdFxudHlwZSBjb21wbGV4MzJfZWx0ID0gQ29tcGxleDMyX2VsdFxudHlwZSBjb21wbGV4NjRfZWx0ID0gQ29tcGxleDY0X2VsdFxuXG50eXBlICgnYSwgJ2IpIGtpbmQgPVxuICAgIEZsb2F0MzIgOiAoZmxvYXQsIGZsb2F0MzJfZWx0KSBraW5kXG4gIHwgRmxvYXQ2NCA6IChmbG9hdCwgZmxvYXQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3NpZ25lZCA6IChpbnQsIGludDhfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDhfdW5zaWduZWQgOiAoaW50LCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3NpZ25lZCA6IChpbnQsIGludDE2X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl91bnNpZ25lZCA6IChpbnQsIGludDE2X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDMyIDogKGludDMyLCBpbnQzMl9lbHQpIGtpbmRcbiAgfCBJbnQ2NCA6IChpbnQ2NCwgaW50NjRfZWx0KSBraW5kXG4gIHwgSW50IDogKGludCwgaW50X2VsdCkga2luZFxuICB8IE5hdGl2ZWludCA6IChuYXRpdmVpbnQsIG5hdGl2ZWludF9lbHQpIGtpbmRcbiAgfCBDb21wbGV4MzIgOiAoQ29tcGxleC50LCBjb21wbGV4MzJfZWx0KSBraW5kXG4gIHwgQ29tcGxleDY0IDogKENvbXBsZXgudCwgY29tcGxleDY0X2VsdCkga2luZFxuICB8IENoYXIgOiAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcblxudHlwZSBjX2xheW91dCA9IENfbGF5b3V0X3R5cFxudHlwZSBmb3J0cmFuX2xheW91dCA9IEZvcnRyYW5fbGF5b3V0X3R5cCAoKiopXG5cbnR5cGUgJ2EgbGF5b3V0ID1cbiAgICBDX2xheW91dDogY19sYXlvdXQgbGF5b3V0XG4gIHwgRm9ydHJhbl9sYXlvdXQ6IGZvcnRyYW5fbGF5b3V0IGxheW91dFxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfa2luZCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgZmxvYXQzMiA9IEZsb2F0MzJcbmxldCBmbG9hdDY0ID0gRmxvYXQ2NFxubGV0IGludDhfc2lnbmVkID0gSW50OF9zaWduZWRcbmxldCBpbnQ4X3Vuc2lnbmVkID0gSW50OF91bnNpZ25lZFxubGV0IGludDE2X3NpZ25lZCA9IEludDE2X3NpZ25lZFxubGV0IGludDE2X3Vuc2lnbmVkID0gSW50MTZfdW5zaWduZWRcbmxldCBpbnQzMiA9IEludDMyXG5sZXQgaW50NjQgPSBJbnQ2NFxubGV0IGludCA9IEludFxubGV0IG5hdGl2ZWludCA9IE5hdGl2ZWludFxubGV0IGNvbXBsZXgzMiA9IENvbXBsZXgzMlxubGV0IGNvbXBsZXg2NCA9IENvbXBsZXg2NFxubGV0IGNoYXIgPSBDaGFyXG5cbmxldCBraW5kX3NpemVfaW5fYnl0ZXMgOiB0eXBlIGEgYi4gKGEsIGIpIGtpbmQgLT4gaW50ID0gZnVuY3Rpb25cbiAgfCBGbG9hdDMyIC0+IDRcbiAgfCBGbG9hdDY0IC0+IDhcbiAgfCBJbnQ4X3NpZ25lZCAtPiAxXG4gIHwgSW50OF91bnNpZ25lZCAtPiAxXG4gIHwgSW50MTZfc2lnbmVkIC0+IDJcbiAgfCBJbnQxNl91bnNpZ25lZCAtPiAyXG4gIHwgSW50MzIgLT4gNFxuICB8IEludDY0IC0+IDhcbiAgfCBJbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBOYXRpdmVpbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBDb21wbGV4MzIgLT4gOFxuICB8IENvbXBsZXg2NCAtPiAxNlxuICB8IENoYXIgLT4gMVxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfbGF5b3V0IGVudW1lcmF0aW9uXG4gICBpbiBiaWdhcnJheS5oICopXG5cbmxldCBjX2xheW91dCA9IENfbGF5b3V0XG5sZXQgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dFxuXG5tb2R1bGUgR2VuYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdFxuICBleHRlcm5hbCBjcmVhdGU6ICgnYSwgJ2IpIGtpbmQgLT4gJ2MgbGF5b3V0IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgdFxuICAgICA9IFwiY2FtbF9iYV9jcmVhdGVcIlxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYVxuICAgICA9IFwiY2FtbF9iYV9nZXRfZ2VuZXJpY1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IGFycmF5IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfc2V0X2dlbmVyaWNcIlxuXG4gIGxldCByZWMgY2xvb3AgYXJyIGlkeCBmIGNvbCBtYXggPVxuICAgIGlmIGNvbCA9IEFycmF5Lmxlbmd0aCBpZHggdGhlbiBzZXQgYXJyIGlkeCAoZiBpZHgpXG4gICAgZWxzZSBmb3IgaiA9IDAgdG8gcHJlZCBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGNsb29wIGFyciBpZHggZiAoc3VjYyBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgcmVjIGZsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPCAwIHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAxIHRvIG1heC4oY29sKSBkb1xuICAgICAgICAgICBpZHguKGNvbCkgPC0gajtcbiAgICAgICAgICAgZmxvb3AgYXJyIGlkeCBmIChwcmVkIGNvbCkgbWF4XG4gICAgICAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW1zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltcyBpblxuICAgIG1hdGNoIEFycmF5Lmxlbmd0aCBkaW1zLCBsYXlvdXQgd2l0aFxuICAgIHwgMCwgXyAtPiBhcnJcbiAgICB8IGRsZW4sIENfbGF5b3V0IC0+IGNsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDApIGYgMCBkaW1zOyBhcnJcbiAgICB8IGRsZW4sIEZvcnRyYW5fbGF5b3V0IC0+IGZsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDEpIGYgKHByZWQgZGxlbikgZGltcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyclxuXG4gIGV4dGVybmFsIG51bV9kaW1zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcImNhbWxfYmFfbnVtX2RpbXNcIlxuICBleHRlcm5hbCBudGhfZGltOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX2JhX2RpbVwiXG4gIGxldCBkaW1zIGEgPVxuICAgIGxldCBuID0gbnVtX2RpbXMgYSBpblxuICAgIGxldCBkID0gQXJyYXkubWFrZSBuIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbi0xIGRvIGQuKGkpIDwtIG50aF9kaW0gYSBpIGRvbmU7XG4gICAgZFxuXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoQXJyYXkuZm9sZF9sZWZ0ICggKiApIDEgKGRpbXMgYXJyKSlcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc2xpY2VfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgc2xpY2VfcmlnaHQ6ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCBhcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zbGljZVwiXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG5lbmRcblxubW9kdWxlIEFycmF5MCA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8fF1cbiAgbGV0IGdldCBhcnIgPSBHZW5hcnJheS5nZXQgYXJyIFt8fF1cbiAgbGV0IHNldCBhcnIgPSBHZW5hcnJheS5zZXQgYXJyIFt8fF1cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPSBraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKVxuXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG5cbiAgbGV0IG9mX3ZhbHVlIGtpbmQgbGF5b3V0IHYgPVxuICAgIGxldCBhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGluXG4gICAgc2V0IGEgdjtcbiAgICBhXG4gIGxldCBpbml0ID0gb2ZfdmFsdWVcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzFcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuICBleHRlcm5hbCBkaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0gYXJyKVxuXG4gIGV4dGVybmFsIHN1YjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCAnYykgdCA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2UgKHR5cGUgdCkgKGEgOiAoXywgXywgdCkgR2VuYXJyYXkudCkgbiA9XG4gICAgbWF0Y2ggbGF5b3V0IGEgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gKEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XSA6IChfLCBfLCB0KSBHZW5hcnJheS50KVxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gKEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF06IChfLCBfLCB0KSBHZW5hcnJheS50KVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0gZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0gZiA9XG4gICAgZm9yIGkgPSAxIHRvIGRpbSBkbyB1bnNhZmVfc2V0IGFyciBpIChmIGkpIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbSBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbSBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IChBcnJheS5sZW5ndGggZGF0YSkgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkYXRhIC0gMSBkbyB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSBkYXRhLihpKSBkb25lO1xuICAgIGJhXG5lbmRcblxubW9kdWxlIEFycmF5MiA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTJ8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8yXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8yXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8yXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzJcIlxuICBleHRlcm5hbCBkaW0xOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwgZGltMjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMlwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbTEgYXJyKSAqIChkaW0yIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2VfbGVmdCBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0IGEgbiA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF1cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbTEgZG9cbiAgICAgIGZvciBqID0gMCB0byBwcmVkIGRpbTIgZG9cbiAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIChmIGkgailcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBmID1cbiAgICBmb3IgaiA9IDEgdG8gZGltMiBkb1xuICAgICAgZm9yIGkgPSAxIHRvIGRpbTEgZG9cbiAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIChmIGkgailcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0xIGRpbTIgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBkaW0xID0gQXJyYXkubGVuZ3RoIGRhdGEgaW5cbiAgICBsZXQgZGltMiA9IGlmIGRpbTEgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKSBpblxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGRpbTEgLSAxIGRvXG4gICAgICBsZXQgcm93ID0gZGF0YS4oaSkgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCByb3cgPD4gZGltMiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkyLm9mX2FycmF5OiBub24tcmVjdGFuZ3VsYXIgZGF0YVwiKTtcbiAgICAgIGZvciBqID0gMCB0byBkaW0yIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSAoaiArIG9mcykgcm93LihqKVxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkzID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW0xOyBkaW0yOyBkaW0zfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3NldF8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2FcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfM1wiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfM1wiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwgZGltMzogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fM1wiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbTEgYXJyKSAqIChkaW0yIGFycikgKiAoZGltMyBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OlxuICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0XzEgYSBuIG0gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzEgYSBuIG0gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bjsgbXxdXG4gIGxldCBzbGljZV9sZWZ0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdXG4gIGxldCBzbGljZV9yaWdodF8yIGEgbiA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF1cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICBmb3IgayA9IDAgdG8gcHJlZCBkaW0zIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGZvciBrID0gMSB0byBkaW0zIGRvXG4gICAgICBmb3IgaiA9IDEgdG8gZGltMiBkb1xuICAgICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiBrIChmIGkgaiBrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBkaW0xID0gQXJyYXkubGVuZ3RoIGRhdGEgaW5cbiAgICBsZXQgZGltMiA9IGlmIGRpbTEgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKSBpblxuICAgIGxldCBkaW0zID0gaWYgZGltMiA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApLigwKSBpblxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIGxldCBjb2wgPSByb3cuKGopIGluXG4gICAgICAgIGlmIEFycmF5Lmxlbmd0aCBjb2wgPD4gZGltMyB0aGVuXG4gICAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhXCIpO1xuICAgICAgICBmb3IgayA9IDAgdG8gZGltMyAtIDEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSAoaiArIG9mcykgKGsgKyBvZnMpIGNvbC4oaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTA6ICgnYSwgJ2IsICdjKSBBcnJheTAudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTE6ICgnYSwgJ2IsICdjKSBBcnJheTEudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTI6ICgnYSwgJ2IsICdjKSBBcnJheTIudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTM6ICgnYSwgJ2IsICdjKSBBcnJheTMudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5sZXQgYXJyYXkwX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMCB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5MF9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkxX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMSB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5MV9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkyX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMiB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5Ml9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkzX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMyB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5M19vZl9nZW5hcnJheVwiXG5cbmV4dGVybmFsIHJlc2hhcGU6XG4gICAoJ2EsICdiLCAnYykgR2VuYXJyYXkudCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCJjYW1sX2JhX3Jlc2hhcGVcIlxubGV0IHJlc2hhcGVfMCBhID0gcmVzaGFwZSBhIFt8fF1cbmxldCByZXNoYXBlXzEgYSBkaW0xID0gcmVzaGFwZSBhIFt8ZGltMXxdXG5sZXQgcmVzaGFwZV8yIGEgZGltMSBkaW0yID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yfF1cbmxldCByZXNoYXBlXzMgYSBkaW0xIGRpbTIgZGltMyA9IHJlc2hhcGUgYSBbfGRpbTE7ZGltMjtkaW0zfF1cblxuKCogRm9yY2UgY2FtbF9iYV9nZXRfezEsMiwzLE59IHRvIGJlIGxpbmtlZCBpbiwgc2luY2Ugd2UgZG9uJ3QgcmVmZXJcbiAgIHRvIHRob3NlIHByaW1pdGl2ZXMgZGlyZWN0bHkgaW4gdGhpcyBmaWxlICopXG5cbmxldCBfID1cbiAgbGV0IF8gPSBHZW5hcnJheS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTEuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkyLmdldCBpblxuICBsZXQgXyA9IEFycmF5My5nZXQgaW5cbiAgKClcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cbmV4dGVybmFsIGdldDE6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMVwiXG5leHRlcm5hbCBnZXQyOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzJcIlxuZXh0ZXJuYWwgZ2V0MzogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8zXCJcbmV4dGVybmFsIHNldDE6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMVwiXG5leHRlcm5hbCBzZXQyOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzJcIlxuZXh0ZXJuYWwgc2V0MzogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8zXCJcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDYXRhbGEgY29tcGlsZXIsIGEgc3BlY2lmaWNhdGlvbiBsYW5ndWFnZSBmb3IgdGF4XG4gICBhbmQgc29jaWFsIGJlbmVmaXRzIGNvbXB1dGF0aW9uIHJ1bGVzLiBDb3B5cmlnaHQgKEMpIDIwMjAgSW5yaWEsIGNvbnRyaWJ1dG9yOlxuICAgRGVuaXMgTWVyaWdvdXggPGRlbmlzLm1lcmlnb3V4QGlucmlhLmZyPiwgRW1pbGUgUm9sbGV5IDxlbWlsZS5yb2xsZXlAdHV0YS5pbz5cblxuICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3RcbiAgIHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mXG4gICB0aGUgTGljZW5zZSBhdFxuXG4gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUXG4gICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGVcbiAgIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyXG4gICB0aGUgTGljZW5zZS4gKilcblxuKCogQW4gaW50ZWdlciBudW1iZXIgb2YgY2VudHMgKilcbnR5cGUgbW9uZXkgPSBaLnRcbnR5cGUgaW50ZWdlciA9IFoudFxudHlwZSBkZWNpbWFsID0gUS50XG50eXBlIGRhdGUgPSBEYXRlc19jYWxjLkRhdGVzLmRhdGVcbnR5cGUgZHVyYXRpb24gPSBEYXRlc19jYWxjLkRhdGVzLnBlcmlvZFxudHlwZSAnYSBlb3B0aW9uID0gRU5vbmUgb2YgdW5pdCB8IEVTb21lIG9mICdhXG5cbnR5cGUgc291cmNlX3Bvc2l0aW9uID0ge1xuICBmaWxlbmFtZSA6IHN0cmluZztcbiAgc3RhcnRfbGluZSA6IGludDtcbiAgc3RhcnRfY29sdW1uIDogaW50O1xuICBlbmRfbGluZSA6IGludDtcbiAgZW5kX2NvbHVtbiA6IGludDtcbiAgbGF3X2hlYWRpbmdzIDogc3RyaW5nIGxpc3Q7XG59XG5bQEBkZXJpdmluZyB5b2pzb25fb2ZdXG5cbmV4Y2VwdGlvbiBFbXB0eUVycm9yXG5leGNlcHRpb24gQXNzZXJ0aW9uRmFpbGVkIG9mIHNvdXJjZV9wb3NpdGlvblxuZXhjZXB0aW9uIENvbmZsaWN0RXJyb3Igb2Ygc291cmNlX3Bvc2l0aW9uXG5leGNlcHRpb24gVW5jb21wYXJhYmxlRHVyYXRpb25zXG5leGNlcHRpb24gSW5kaXZpc2FibGVEdXJhdGlvbnNcbmV4Y2VwdGlvbiBJbXBvc3NpYmxlRGF0ZVxuZXhjZXB0aW9uIE5vVmFsdWVQcm92aWRlZCBvZiBzb3VyY2VfcG9zaXRpb25cblxubGV0IG1vbmV5X29mX2NlbnRzX3N0cmluZyAoY2VudHMgOiBzdHJpbmcpIDogbW9uZXkgPSBaLm9mX3N0cmluZyBjZW50c1xubGV0IG1vbmV5X29mX3VuaXRzX2ludCAodW5pdHMgOiBpbnQpIDogbW9uZXkgPSBaLihvZl9pbnQgdW5pdHMgKiBvZl9pbnQgMTAwKVxubGV0IG1vbmV5X29mX2NlbnRzX2ludGVnZXIgKGNlbnRzIDogaW50ZWdlcikgOiBtb25leSA9IGNlbnRzXG5sZXQgbW9uZXlfdG9fZmxvYXQgKG0gOiBtb25leSkgOiBmbG9hdCA9IFoudG9fZmxvYXQgbSAvLiAxMDAuXG5cbmxldCBtb25leV9vZl9kZWNpbWFsIChkIDogZGVjaW1hbCkgOiBtb25leSA9XG4gIFEudG9fYmlnaW50IChRLm11bCBkIChRLm9mX2ludCAxMDApKVxuXG5sZXQgbW9uZXlfdG9fc3RyaW5nIChtIDogbW9uZXkpIDogc3RyaW5nID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJS4yZlwiIFEuKHRvX2Zsb2F0IChvZl9iaWdpbnQgbSAvIG9mX2ludCAxMDApKVxuXG5sZXQgbW9uZXlfdG9fY2VudHMgbSA9IG1cblxubGV0IG1vbmV5X3JvdW5kIChtIDogbW9uZXkpIDogbW9uZXkgPVxuICBsZXQgdW5pdHMsIGNlbnRzID0gWi5kaXZfcmVtIG0gKFoub2ZfaW50IDEwMCkgaW5cbiAgKCogSWYgW21dIGlzIG5lZ2F0aXZlLCBbY2VudHNdIHdpbGwgYWxzbyBiZSBuZWdhdGl2ZS4gKilcbiAgaWYgWi4oYWJzIGNlbnRzIDwgb2ZfaW50IDUwKSB0aGVuIFouKHVuaXRzICogb2ZfaW50IDEwMClcbiAgZWxzZSBaLigodW5pdHMgKyBvZl9pbnQgKHNpZ24gdW5pdHMpKSAqIG9mX2ludCAxMDApXG5cbmxldCBkZWNpbWFsX29mX3N0cmluZyAoZCA6IHN0cmluZykgOiBkZWNpbWFsID0gUS5vZl9zdHJpbmcgZFxubGV0IGRlY2ltYWxfdG9fZmxvYXQgKGQgOiBkZWNpbWFsKSA6IGZsb2F0ID0gUS50b19mbG9hdCBkXG5sZXQgZGVjaW1hbF9vZl9mbG9hdCAoZCA6IGZsb2F0KSA6IGRlY2ltYWwgPSBRLm9mX2Zsb2F0IGRcbmxldCBkZWNpbWFsX29mX2ludGVnZXIgKGQgOiBpbnRlZ2VyKSA6IGRlY2ltYWwgPSBRLm9mX2JpZ2ludCBkXG5cbmxldCBkZWNpbWFsX3RvX3N0cmluZyB+KG1heF9wcmVjX2RpZ2l0cyA6IGludCkgKGkgOiBkZWNpbWFsKSA6IHN0cmluZyA9XG4gIGxldCBzaWduID0gUS5zaWduIGkgaW5cbiAgbGV0IG4gPSBaLmFicyAoUS5udW0gaSkgaW5cbiAgbGV0IGQgPSBaLmFicyAoUS5kZW4gaSkgaW5cbiAgbGV0IGludF9wYXJ0ID0gWi5lZGl2IG4gZCBpblxuICBsZXQgbiA9IHJlZiAoWi5lcmVtIG4gZCkgaW5cbiAgbGV0IGRpZ2l0cyA9IHJlZiBbXSBpblxuICBsZXQgbGVhZGluZ196ZXJvZXMgKGRpZ2l0cyA6IFoudCBsaXN0KSA6IGludCA9XG4gICAgbWF0Y2hcbiAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICAoZnVuIGRpZ2l0IG51bV9sZWFkaW5nX3plcm9lcyAtPlxuICAgICAgICAgIG1hdGNoIG51bV9sZWFkaW5nX3plcm9lcyB3aXRoXG4gICAgICAgICAgfCBgRW5kIF8gLT4gbnVtX2xlYWRpbmdfemVyb2VzXG4gICAgICAgICAgfCBgQmVnaW4gaSAtPiBpZiBaLihkaWdpdCA9IHplcm8pIHRoZW4gYEJlZ2luIChpICsgMSkgZWxzZSBgRW5kIGkpXG4gICAgICAgIGRpZ2l0cyAoYEJlZ2luIDApXG4gICAgd2l0aFxuICAgIHwgYEVuZCBpIC0+IGlcbiAgICB8IGBCZWdpbiBpIC0+IGlcbiAgaW5cbiAgd2hpbGVcbiAgICAhbiA8PiBaLnplcm9cbiAgICAmJiBMaXN0Lmxlbmd0aCAhZGlnaXRzIC0gbGVhZGluZ196ZXJvZXMgIWRpZ2l0cyA8IG1heF9wcmVjX2RpZ2l0c1xuICBkb1xuICAgIG4gOj0gWi5tdWwgIW4gKFoub2ZfaW50IDEwKTtcbiAgICBkaWdpdHMgOj0gWi5lZGl2ICFuIGQgOjogIWRpZ2l0cztcbiAgICBuIDo9IFouZXJlbSAhbiBkXG4gIGRvbmU7XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVzJWEuJWElc1wiXG4gICAgKGlmIHNpZ24gPCAwIHRoZW4gXCItXCIgZWxzZSBcIlwiKVxuICAgIFoucHBfcHJpbnQgaW50X3BhcnRcbiAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgICB+cHBfc2VwOihmdW4gX2ZtdCAoKSAtPiAoKSlcbiAgICAgICAoZnVuIGZtdCBkaWdpdCAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYVwiIFoucHBfcHJpbnQgZGlnaXQpKVxuICAgIChMaXN0LnJldiAhZGlnaXRzKVxuICAgIChpZiBMaXN0Lmxlbmd0aCAhZGlnaXRzIC0gbGVhZGluZ196ZXJvZXMgIWRpZ2l0cyA9IG1heF9wcmVjX2RpZ2l0cyB0aGVuIFwi4oCmXCJcbiAgICBlbHNlIFwiXCIpXG5cbmxldCBkZWNpbWFsX3JvdW5kIChxIDogZGVjaW1hbCkgOiBkZWNpbWFsID1cbiAgKCogSW1wbGVtZW50cyB0aGUgd29ya2Fyb3VuZCBieVxuICAgICBodHRwczovL2dtcGxpYi5vcmcvbGlzdC1hcmNoaXZlcy9nbXAtZGlzY3Vzcy8yMDA5LU1heS8wMDM3NjcuaHRtbCAqKVxuICBsZXQgbiA9IFEubnVtIHEgaW5cbiAgbGV0IGQgPSBRLmRlbiBxIGluXG4gIFEub2ZfYmlnaW50IFouKGZkaXYgKChvZl9pbnQgMiAqIG4pICsgZCkgKG9mX2ludCAyICogZCkpXG5cbmxldCBkZWNpbWFsX29mX21vbmV5IChtIDogbW9uZXkpIDogZGVjaW1hbCA9XG4gIFEuZGl2IChRLm9mX2JpZ2ludCBtKSAoUS5vZl9pbnQgMTAwKVxuXG5sZXQgaW50ZWdlcl9vZl9zdHJpbmcgKHMgOiBzdHJpbmcpIDogaW50ZWdlciA9IFoub2Zfc3RyaW5nIHNcbmxldCBpbnRlZ2VyX3RvX3N0cmluZyAoaSA6IGludGVnZXIpIDogc3RyaW5nID0gWi50b19zdHJpbmcgaVxubGV0IGludGVnZXJfdG9faW50IChpIDogaW50ZWdlcikgOiBpbnQgPSBaLnRvX2ludCBpXG5sZXQgaW50ZWdlcl9vZl9pbnQgKGkgOiBpbnQpIDogaW50ZWdlciA9IFoub2ZfaW50IGlcbmxldCBpbnRlZ2VyX2V4cG9uZW50aWF0aW9uIChpIDogaW50ZWdlcikgKGUgOiBpbnQpIDogaW50ZWdlciA9IFoucG93IGkgZVxubGV0IGludGVnZXJfbG9nMiA9IFoubG9nMlxuXG5sZXQgeWVhcl9vZl9kYXRlIChkIDogZGF0ZSkgOiBpbnRlZ2VyID1cbiAgbGV0IHksIF8sIF8gPSBEYXRlc19jYWxjLkRhdGVzLmRhdGVfdG9feW1kIGQgaW5cbiAgWi5vZl9pbnQgeVxuXG5sZXQgbW9udGhfbnVtYmVyX29mX2RhdGUgKGQgOiBkYXRlKSA6IGludGVnZXIgPVxuICBsZXQgXywgbSwgXyA9IERhdGVzX2NhbGMuRGF0ZXMuZGF0ZV90b195bWQgZCBpblxuICBaLm9mX2ludCBtXG5cbmxldCBpc19sZWFwX3llYXIgKHkgOiBpbnRlZ2VyKSA9XG4gIGxldCB5ID0gWi50b19pbnQgeSBpblxuICBEYXRlc19jYWxjLkRhdGVzLmlzX2xlYXBfeWVhciB5XG5cbmxldCBkYXlfb2ZfbW9udGhfb2ZfZGF0ZSAoZCA6IGRhdGUpIDogaW50ZWdlciA9XG4gIGxldCBfLCBfLCBkID0gRGF0ZXNfY2FsYy5EYXRlcy5kYXRlX3RvX3ltZCBkIGluXG4gIFoub2ZfaW50IGRcblxubGV0IGRhdGVfb2ZfbnVtYmVycyAoeWVhciA6IGludCkgKG1vbnRoIDogaW50KSAoZGF5IDogaW50KSA6IGRhdGUgPVxuICB0cnkgRGF0ZXNfY2FsYy5EYXRlcy5tYWtlX2RhdGUgfnllYXIgfm1vbnRoIH5kYXlcbiAgd2l0aCBfIC0+IHJhaXNlIEltcG9zc2libGVEYXRlXG5cbmxldCBkYXRlX3RvX3N0cmluZyAoZCA6IGRhdGUpIDogc3RyaW5nID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBEYXRlc19jYWxjLkRhdGVzLmZvcm1hdF9kYXRlIGRcblxubGV0IGZpcnN0X2RheV9vZl9tb250aCA9IERhdGVzX2NhbGMuRGF0ZXMuZmlyc3RfZGF5X29mX21vbnRoXG5sZXQgbGFzdF9kYXlfb2ZfbW9udGggPSBEYXRlc19jYWxjLkRhdGVzLmxhc3RfZGF5X29mX21vbnRoXG5cbmxldCBkdXJhdGlvbl9vZl9udW1iZXJzICh5ZWFyIDogaW50KSAobW9udGggOiBpbnQpIChkYXkgOiBpbnQpIDogZHVyYXRpb24gPVxuICBEYXRlc19jYWxjLkRhdGVzLm1ha2VfcGVyaW9kIH55ZWFyczp5ZWFyIH5tb250aHM6bW9udGggfmRheXM6ZGF5XG5cbmxldCBkdXJhdGlvbl90b19zdHJpbmcgKGQgOiBkdXJhdGlvbikgOiBzdHJpbmcgPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIERhdGVzX2NhbGMuRGF0ZXMuZm9ybWF0X3BlcmlvZCBkXG4oKiBicmVha3MgcHJldmlvdXMgZm9ybWF0ICopXG4oKiBsZXQgeCwgeSwgeiA9IENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLnltZCBkIGluXG4gKiBsZXQgdG9fcHJpbnQgPVxuICogICBMaXN0LmZpbHRlciAoZnVuIChhLCBfKSAtPiBhIDw+IDApIFt4LCBcInllYXJzXCI7IHksIFwibW9udGhzXCI7IHosIFwiZGF5c1wiXVxuICogaW5cbiAqIG1hdGNoIHRvX3ByaW50IHdpdGhcbiAqIHwgW10gLT4gXCJlbXB0eSBkdXJhdGlvblwiXG4gKiB8IF8gLT5cbiAqICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICogICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICogICAgICAgIH5wcF9zZXA6KGZ1biBmbXQgKCkgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCIpXG4gKiAgICAgICAgKGZ1biBmbXQgKGQsIGwpIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkICVzXCIgZCBsKSlcbiAqICAgICB0b19wcmludCAqKVxuXG5sZXQgZHVyYXRpb25fdG9feWVhcnNfbW9udGhzX2RheXMgKGQgOiBkdXJhdGlvbikgOiBpbnQgKiBpbnQgKiBpbnQgPVxuICBEYXRlc19jYWxjLkRhdGVzLnBlcmlvZF90b195bWRzIGRcblxubGV0IHlvanNvbl9vZl9tb25leSAobSA6IG1vbmV5KSA9IGBGbG9hdCAobW9uZXlfdG9fZmxvYXQgbSlcbmxldCB5b2pzb25fb2ZfaW50ZWdlciAoaSA6IGludGVnZXIpID0gYEludCAoaW50ZWdlcl90b19pbnQgaSlcbmxldCB5b2pzb25fb2ZfZGVjaW1hbCAoZCA6IGRlY2ltYWwpID0gYEZsb2F0IChkZWNpbWFsX3RvX2Zsb2F0IGQpXG5sZXQgeW9qc29uX29mX2RhdGUgKGQgOiBkYXRlKSA9IGBTdHJpbmcgKGRhdGVfdG9fc3RyaW5nIGQpXG5sZXQgeW9qc29uX29mX2R1cmF0aW9uIChkIDogZHVyYXRpb24pID0gYFN0cmluZyAoZHVyYXRpb25fdG9fc3RyaW5nIGQpXG5cbnR5cGUgcnVudGltZV92YWx1ZSA9XG4gIHwgVW5pdFxuICB8IEJvb2wgb2YgYm9vbFxuICB8IE1vbmV5IG9mIG1vbmV5XG4gIHwgSW50ZWdlciBvZiBpbnRlZ2VyXG4gIHwgRGVjaW1hbCBvZiBkZWNpbWFsXG4gIHwgRGF0ZSBvZiBkYXRlXG4gIHwgRHVyYXRpb24gb2YgZHVyYXRpb25cbiAgfCBFbnVtIG9mIHN0cmluZyBsaXN0ICogKHN0cmluZyAqIHJ1bnRpbWVfdmFsdWUpXG4gIHwgU3RydWN0IG9mIHN0cmluZyBsaXN0ICogKHN0cmluZyAqIHJ1bnRpbWVfdmFsdWUpIGxpc3RcbiAgfCBBcnJheSBvZiBydW50aW1lX3ZhbHVlIGFycmF5XG4gIHwgVW5lbWJlZGRhYmxlXG5bQEBkZXJpdmluZyB5b2pzb25fb2ZdXG5cbmxldCB1bmVtYmVkZGFibGUgXyA9IFVuZW1iZWRkYWJsZVxubGV0IGVtYmVkX3VuaXQgKCkgPSBVbml0XG5sZXQgZW1iZWRfYm9vbCB4ID0gQm9vbCB4XG5sZXQgZW1iZWRfbW9uZXkgeCA9IE1vbmV5IHhcbmxldCBlbWJlZF9pbnRlZ2VyIHggPSBJbnRlZ2VyIHhcbmxldCBlbWJlZF9kZWNpbWFsIHggPSBEZWNpbWFsIHhcbmxldCBlbWJlZF9kYXRlIHggPSBEYXRlIHhcbmxldCBlbWJlZF9kdXJhdGlvbiB4ID0gRHVyYXRpb24geFxubGV0IGVtYmVkX2FycmF5IGYgeCA9IEFycmF5IChBcnJheS5tYXAgZiB4KVxuXG50eXBlIGluZm9ybWF0aW9uID0gc3RyaW5nIGxpc3QgW0BAZGVyaXZpbmcgeW9qc29uX29mXVxuXG50eXBlIHJhd19ldmVudCA9XG4gIHwgQmVnaW5DYWxsIG9mIGluZm9ybWF0aW9uXG4gIHwgRW5kQ2FsbCBvZiBpbmZvcm1hdGlvblxuICB8IFZhcmlhYmxlRGVmaW5pdGlvbiBvZiBpbmZvcm1hdGlvbiAqIHJ1bnRpbWVfdmFsdWVcbiAgfCBEZWNpc2lvblRha2VuIG9mIHNvdXJjZV9wb3NpdGlvblxuXG50eXBlIGV2ZW50ID1cbiAgfCBWYXJDb21wdXRhdGlvbiBvZiB2YXJfZGVmXG4gIHwgRnVuQ2FsbCBvZiBmdW5fY2FsbFxuICB8IFN1YlNjb3BlQ2FsbCBvZiB7XG4gICAgICBuYW1lIDogaW5mb3JtYXRpb247XG4gICAgICBpbnB1dHMgOiB2YXJfZGVmIGxpc3Q7XG4gICAgICBib2R5IDogZXZlbnQgbGlzdDtcbiAgICB9XG5bQEBkZXJpdmluZyB5b2pzb25fb2ZdXG5cbmFuZCB2YXJfZGVmID0ge1xuICBwb3MgOiBzb3VyY2VfcG9zaXRpb24gb3B0aW9uO1xuICBuYW1lIDogaW5mb3JtYXRpb247XG4gIHZhbHVlIDogcnVudGltZV92YWx1ZTtcbiAgZnVuX2NhbGxzIDogZnVuX2NhbGwgbGlzdCBvcHRpb247XG59XG5cbmFuZCBmdW5fY2FsbCA9IHtcbiAgZnVuX25hbWUgOiBpbmZvcm1hdGlvbjtcbiAgaW5wdXQgOiB2YXJfZGVmO1xuICBib2R5IDogZXZlbnQgbGlzdDtcbiAgb3V0cHV0IDogdmFyX2RlZjtcbn1cblxubGV0IGxvZ19yZWYgOiByYXdfZXZlbnQgbGlzdCByZWYgPSByZWYgW11cbmxldCByZXNldF9sb2cgKCkgPSBsb2dfcmVmIDo9IFtdXG5sZXQgcmV0cmlldmVfbG9nICgpID0gTGlzdC5yZXYgIWxvZ19yZWZcblxubGV0IGxvZ19iZWdpbl9jYWxsIGluZm8gZiA9XG4gIGxvZ19yZWYgOj0gQmVnaW5DYWxsIGluZm8gOjogIWxvZ19yZWY7XG4gIGZcblxubGV0IGxvZ19lbmRfY2FsbCBpbmZvIHggPVxuICBsb2dfcmVmIDo9IEVuZENhbGwgaW5mbyA6OiAhbG9nX3JlZjtcbiAgeFxuXG5sZXQgbG9nX3ZhcmlhYmxlX2RlZmluaXRpb24gKGluZm8gOiBzdHJpbmcgbGlzdCkgZW1iZWQgKHggOiAnYSkgPVxuICBsb2dfcmVmIDo9IFZhcmlhYmxlRGVmaW5pdGlvbiAoaW5mbywgZW1iZWQgeCkgOjogIWxvZ19yZWY7XG4gIHhcblxubGV0IGxvZ19kZWNpc2lvbl90YWtlbiBwb3MgeCA9XG4gIGlmIHggdGhlbiBsb2dfcmVmIDo9IERlY2lzaW9uVGFrZW4gcG9zIDo6ICFsb2dfcmVmO1xuICB4XG5cbmxldCByZWMgcHBfZXZlbnRzID8oaXNfZmlyc3RfY2FsbCA9IHRydWUpIHBwZiBldmVudHMgPVxuICBsZXQgcmVjIGZvcm1hdF92YXJfZGVmIHBwZiB2YXIgPVxuICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIkBbPGhvdiAyPjx2YXJfZGVmIGF0ICVhPkAgJXM6QCAlYUBdXCIgZm9ybWF0X3Bvc19vcHRcbiAgICAgIHZhci5wb3NcbiAgICAgIChTdHJpbmcuY29uY2F0IFwiLlwiIHZhci5uYW1lKVxuICAgICAgZm9ybWF0X3ZhbHVlIHZhci52YWx1ZVxuICBhbmQgZm9ybWF0X3Bvc19vcHQgcHBmID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwibm9fcG9zXCJcbiAgICB8IFNvbWUgcG9zIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlcyBsaW5lICVkIHRvICVkXCIgcG9zLmZpbGVuYW1lIHBvcy5zdGFydF9saW5lXG4gICAgICAgIHBvcy5lbmRfbGluZVxuICBhbmQgZm9ybWF0X3Zhcl9kZWZzIHBwZiA9XG4gICAgRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgIH5wcF9zZXA6KGZ1biBwcGYgKCkgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiQCBcIilcbiAgICAgIGZvcm1hdF92YXJfZGVmIHBwZlxuICBhbmQgZm9ybWF0X3Zhcl9kZWZfd2l0aF9mdW5fY2FsbHMgcHBmIHZhcl93aXRoX2Z1biA9XG4gICAgbWF0Y2ggdmFyX3dpdGhfZnVuLmZ1bl9jYWxscyB3aXRoXG4gICAgfCBOb25lIHwgU29tZSBbXSAtPiBmb3JtYXRfdmFyX2RlZiBwcGYgdmFyX3dpdGhfZnVuXG4gICAgfCBTb21lIGZ1bl9jYWxscyAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgcHBmXG4gICAgICAgIFwiQFs8aG92IDI+PHZhcl9kZWZfd2l0aF9mdW4+QCAlczogJWFAIGNvbXB1dGVkIGZyb21AIDpAIEBbPGh2IDI+W0AgJWFAO1xcXG4gICAgICAgICA8MSAtMj5dQF0gQF1cIlxuICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIi5cIiB2YXJfd2l0aF9mdW4ubmFtZSlcbiAgICAgICAgZm9ybWF0X3ZhbHVlIHZhcl93aXRoX2Z1bi52YWx1ZVxuICAgICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgICAgICAgfnBwX3NlcDooZnVuIHBwZiAoKSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIsQCBcIilcbiAgICAgICAgICAgKGZ1biBwcGYgZnVuX2NhbGwgLT4gZm9ybWF0X2V2ZW50IHBwZiAoRnVuQ2FsbCBmdW5fY2FsbCkpKVxuICAgICAgICBmdW5fY2FsbHNcbiAgYW5kIGZvcm1hdF92YWx1ZSBwcGYgPSBmdW5jdGlvblxuICAgIHwgVW5lbWJlZGRhYmxlIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcImZ1blwiXG4gICAgfCBVbml0IC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIigpXCJcbiAgICB8IEJvb2wgeCAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlYlwiIHhcbiAgICB8IE1vbmV5IHggLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJXPigqxcIiAobW9uZXlfdG9fc3RyaW5nIHgpXG4gICAgfCBJbnRlZ2VyIHggLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWRcIiAoaW50ZWdlcl90b19pbnQgeClcbiAgICB8IERlY2ltYWwgeCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJXNcIiAoZGVjaW1hbF90b19zdHJpbmcgfm1heF9wcmVjX2RpZ2l0czoxMCB4KVxuICAgIHwgRGF0ZSB4IC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVzXCIgKGRhdGVfdG9fc3RyaW5nIHgpXG4gICAgfCBEdXJhdGlvbiB4IC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVzXCIgKGR1cmF0aW9uX3RvX3N0cmluZyB4KVxuICAgIHwgRW51bSAoXywgKG5hbWUsIF8pKSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlc1wiIG5hbWVcbiAgICB8IFN0cnVjdCAobmFtZSwgYXR0cnMpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCJAWzxodiAyPiVzID0ge0AgJWFAOzwxIC0yPn1AXVwiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IFwiLlwiIG5hbWUpXG4gICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgICAgICB+cHBfc2VwOihmdW4gcHBmICgpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIixALFwiKVxuICAgICAgICAgICAoZnVuIGZtdCAobmFtZSwgdmFsdWUpIC0+XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJXM6ICVhXCIgbmFtZSBmb3JtYXRfdmFsdWUgdmFsdWUpKVxuICAgICAgICBhdHRyc1xuICAgIHwgQXJyYXkgZWx0cyAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgcHBmIFwiQFs8aHYgMj5bQCAlYUA7PDEgLTI+XUBdXCJcbiAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0XG4gICAgICAgICAgIH5wcF9zZXA6KGZ1biBwcGYgKCkgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiO0AgXCIpXG4gICAgICAgICAgIGZvcm1hdF92YWx1ZSlcbiAgICAgICAgKGVsdHMgfD4gQXJyYXkudG9fbGlzdClcbiAgYW5kIGZvcm1hdF9ldmVudCBwcGYgPSBmdW5jdGlvblxuICAgIHwgVmFyQ29tcHV0YXRpb24gdmFyX2RlZl93aXRoX2Z1blxuICAgICAgd2hlbiBPcHRpb24uaXNfc29tZSB2YXJfZGVmX3dpdGhfZnVuLmZ1bl9jYWxscyAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWFcIiBmb3JtYXRfdmFyX2RlZl93aXRoX2Z1bl9jYWxscyB2YXJfZGVmX3dpdGhfZnVuXG4gICAgfCBWYXJDb21wdXRhdGlvbiB2YXJfZGVmIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVhXCIgZm9ybWF0X3Zhcl9kZWYgdmFyX2RlZlxuICAgIHwgRnVuQ2FsbCB7IGZ1bl9uYW1lOyBpbnB1dDsgYm9keTsgb3V0cHV0IH0gLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZlxuICAgICAgICBcIkBbPGhvdiAxPjxmdW5jdGlvbl9jYWxsPkAgJXMgOj1AIHtAWzxodiAxPkAgaW5wdXQ6QCAlYSxAIG91dHB1dDpAIFxcXG4gICAgICAgICAlYSxAIGJvZHk6QCBbQCxcXFxuICAgICAgICAgJWFdQF1ALFxcXG4gICAgICAgICBAXUAsXFxcbiAgICAgICAgIH1cIlxuICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIi5cIiBmdW5fbmFtZSlcbiAgICAgICAgZm9ybWF0X3Zhcl9kZWYgaW5wdXQgZm9ybWF0X3Zhcl9kZWZfd2l0aF9mdW5fY2FsbHMgb3V0cHV0XG4gICAgICAgIChwcF9ldmVudHMgfmlzX2ZpcnN0X2NhbGw6ZmFsc2UpXG4gICAgICAgIGJvZHlcbiAgICB8IFN1YlNjb3BlQ2FsbCB7IG5hbWU7IGlucHV0czsgYm9keSB9IC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAgICAgXCJAWzxodiAyPjxzdWJzY29wZV9jYWxsPkAgJXMgOj1AIHtAWzxodiAxPkAsXFxcbiAgICAgICAgIGlucHV0czpAIEBbPGh2IDI+W0AsXFxcbiAgICAgICAgICVhQF1dLEAsXFxcbiAgICAgICAgIGJvZHk6QCBAWzxodiAyPltAICVhQCBdQF1AXUBdQCxcXFxuICAgICAgICAgfVwiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IFwiLlwiIG5hbWUpIGZvcm1hdF92YXJfZGVmcyBpbnB1dHNcbiAgICAgICAgKHBwX2V2ZW50cyB+aXNfZmlyc3RfY2FsbDpmYWxzZSlcbiAgICAgICAgYm9keVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAoXCJAWzxodiAxPiVhQF1cIiBeXiBpZiBpc19maXJzdF9jYWxsIHRoZW4gXCJALlwiIGVsc2UgXCJcIilcbiAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgICB+cHBfc2VwOihmdW4gcHBmICgpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIkAgXCIpXG4gICAgICAgZm9ybWF0X2V2ZW50KVxuICAgIGV2ZW50c1xuXG5tb2R1bGUgRXZlbnRQYXJzZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFZhckRlZk1hcCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdHJpbmdNYXAgPSBNYXAuTWFrZSAoU3RyaW5nKVxuXG4gICAgdHlwZSB0ID0gdmFyX2RlZiBsaXN0IFN0cmluZ01hcC50XG5cbiAgICBsZXQgYWRkIChuYW1lIDogc3RyaW5nKSAodiA6IHZhcl9kZWYpIChtYXAgOiB0KSA6IHQgPVxuICAgICAgbWF0Y2ggU3RyaW5nTWFwLmZpbmRfb3B0IG5hbWUgbWFwIHdpdGhcbiAgICAgIHwgU29tZSBscyAtPiBTdHJpbmdNYXAuYWRkIG5hbWUgKHYgOjogbHMpIG1hcFxuICAgICAgfCBOb25lIC0+IFN0cmluZ01hcC5hZGQgbmFtZSBbdl0gbWFwXG5cbiAgICAoKiogW2dldCBuYW1lIG1hcF0gcmV0dXJucyB0aGUgbGlzdCBvZiBkZWZpbml0aW9ucyBpZiB0aGVyZSBpcyBhXG4gICAgICAgIGNvcnJlc3BvbmRpbmcgZW50cnksIG90aGVyd2lzZSwgcmV0dXJucyBhbiBlbXB0eSBhcnJheS4gKilcbiAgICBsZXQgZ2V0IChuYW1lIDogc3RyaW5nKSAobWFwIDogdCkgOiB2YXJfZGVmIGxpc3QgPVxuICAgICAgbWF0Y2ggU3RyaW5nTWFwLmZpbmRfb3B0IG5hbWUgbWFwIHdpdGggU29tZSBscyAtPiBscyB8IE5vbmUgLT4gW11cblxuICAgIGxldCBlbXB0eSA6IHQgPSBTdHJpbmdNYXAuZW1wdHlcbiAgZW5kXG5cbiAgdHlwZSBjb250ZXh0ID0ge1xuICAgICgqIEtlZXBzIHRyYWNrcyBvZiB0aGUgc3Vic2NvcGUgaW5wdXQgdmFyaWFibGUgZGVmaW5pdGlvbnMuICopXG4gICAgdmFycyA6IFZhckRlZk1hcC50O1xuICAgICgqIEN1cnJlbnQgcGFyc2VkIGV2ZW50cy4gKilcbiAgICBldmVudHMgOiBldmVudCBsaXN0O1xuICAgIHJlc3QgOiByYXdfZXZlbnQgbGlzdDtcbiAgfVxuXG4gIGxldCBlbXB0eV9jdHggPSB7IHZhcnMgPSBWYXJEZWZNYXAuZW1wdHk7IGV2ZW50cyA9IFtdOyByZXN0ID0gW10gfVxuXG4gIGxldCByYXdfZXZlbnRfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IEJlZ2luQ2FsbCBuYW1lIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIkJlZ2luQ2FsbChbIFwiIF4gU3RyaW5nLmNvbmNhdCBcIiwgXCIgbmFtZSBeIFwiIF0pXCJcbiAgICB8IEVuZENhbGwgbmFtZSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJFbmRDYWxsKFsgXCIgXiBTdHJpbmcuY29uY2F0IFwiLCBcIiBuYW1lIF4gXCIgXSlcIlxuICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIChuYW1lLCB2YWx1ZSkgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiVmFyaWFibGVEZWZpbml0aW9uKFsgJXMgXSwgJXMpXCIgKFN0cmluZy5jb25jYXQgXCIsIFwiIG5hbWUpXG4gICAgICAgICh5b2pzb25fb2ZfcnVudGltZV92YWx1ZSB2YWx1ZSB8PiBZb2pzb24uU2FmZS50b19zdHJpbmcpXG4gICAgfCBEZWNpc2lvblRha2VuIHBvcyAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJEZWNpc2lvblRha2VuKCVzOiVkLiVkLSVkLiVkKVwiIHBvcy5maWxlbmFtZSBwb3Muc3RhcnRfbGluZVxuICAgICAgICBwb3Muc3RhcnRfY29sdW1uIHBvcy5lbmRfbGluZSBwb3MuZW5kX2NvbHVtblxuXG4gIGxldCBwYXJzZV9yYXdfZXZlbnRzIHJhd19ldmVudHMgPVxuICAgIGxldCBuYl9yYXdfZXZlbnRzID0gTGlzdC5sZW5ndGggcmF3X2V2ZW50c1xuICAgIGFuZCBpc19mdW5jdGlvbl9jYWxsIGluZm9zID0gMiA9IExpc3QubGVuZ3RoIGluZm9zXG4gICAgYW5kIGlzX3N1YnNjb3BlX2NhbGwgaW5mb3MgPSAzID0gTGlzdC5sZW5ndGggaW5mb3NcbiAgICBhbmQgaXNfdmFyX2RlZiBuYW1lID0gMiA9IExpc3QubGVuZ3RoIG5hbWVcbiAgICBhbmQgaXNfb3V0cHV0X3Zhcl9kZWYgbmFtZSA9XG4gICAgICAzID0gTGlzdC5sZW5ndGggbmFtZSAmJiBcIm91dHB1dFwiID0gTGlzdC5udGggbmFtZSAyXG4gICAgYW5kIGlzX2lucHV0X3Zhcl9kZWYgbmFtZSA9XG4gICAgICAzID0gTGlzdC5sZW5ndGggbmFtZSAmJiBcImlucHV0XCIgPSBMaXN0Lm50aCBuYW1lIDJcbiAgICBhbmQgaXNfc3Vic2NvcGVfaW5wdXRfdmFyX2RlZiBuYW1lID1cbiAgICAgIDIgPSBMaXN0Lmxlbmd0aCBuYW1lICYmIFN0cmluZy5jb250YWlucyAoTGlzdC5udGggbmFtZSAxKSAnLidcbiAgICBpblxuICAgIGxldCByZWMgcGFyc2VfZXZlbnRzIChjdHggOiBjb250ZXh0KSA6IGNvbnRleHQgPVxuICAgICAgbWF0Y2ggY3R4LnJlc3Qgd2l0aFxuICAgICAgfCBbXSAtPiB7IGN0eCB3aXRoIGV2ZW50cyA9IGN0eC5ldmVudHMgfD4gTGlzdC5yZXYgfVxuICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIF8pIDo6IHJlc3Qgd2hlbiBpc192YXJfZGVmIG5hbWUgLT5cbiAgICAgICAgKCogVmFyaWFibGVEZWZpbml0aW9uIHdpdGhvdXQgcG9zaXRpb24gY29ycmVzcG9uZHMgdG8gYSBmdW5jdGlvblxuICAgICAgICAgICBkZWZpbml0aW9uIHdoaWNoIGFyZSBpZ25vcmVkIGZvciBub3cgaW4gc3RydWN0dXJlZCBldmVudHMuICopXG4gICAgICAgIHBhcnNlX2V2ZW50cyB7IGN0eCB3aXRoIHJlc3QgfVxuICAgICAgfCBEZWNpc2lvblRha2VuIHBvcyA6OiBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIHZhbHVlKSA6OiByZXN0XG4gICAgICAgIHdoZW4gaXNfc3Vic2NvcGVfaW5wdXRfdmFyX2RlZiBuYW1lIC0+IChcbiAgICAgICAgbWF0Y2ggbmFtZSB3aXRoXG4gICAgICAgIHwgW187IHZhcl9kb3Rfc3Vic2NvcGVfdmFyX25hbWVdIC0+XG4gICAgICAgICAgbGV0IHZhcl9uYW1lID1cbiAgICAgICAgICAgIExpc3QubnRoIChTdHJpbmcuc3BsaXRfb25fY2hhciAnLicgdmFyX2RvdF9zdWJzY29wZV92YXJfbmFtZSkgMFxuICAgICAgICAgIGluXG4gICAgICAgICAgcGFyc2VfZXZlbnRzXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGN0eCB3aXRoXG4gICAgICAgICAgICAgIHZhcnMgPVxuICAgICAgICAgICAgICAgIGN0eC52YXJzXG4gICAgICAgICAgICAgICAgfD4gVmFyRGVmTWFwLmFkZCB2YXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgeyBwb3MgPSBTb21lIHBvczsgbmFtZTsgdmFsdWU7IGZ1bl9jYWxscyA9IE5vbmUgfTtcbiAgICAgICAgICAgICAgcmVzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgZmFpbHdpdGggXCJ1bnJlYWNoYWJsZSBkdWUgdG8gdGhlIFtpc19zdWJzY29wZV9pbnB1dF92YXJfZGVmXSB0ZXN0XCIpXG4gICAgICB8IERlY2lzaW9uVGFrZW4gcG9zIDo6IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgdmFsdWUpIDo6IHJlc3RcbiAgICAgICAgd2hlbiBpc192YXJfZGVmIG5hbWUgfHwgaXNfb3V0cHV0X3Zhcl9kZWYgbmFtZSAtPlxuICAgICAgICBwYXJzZV9ldmVudHNcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjdHggd2l0aFxuICAgICAgICAgICAgZXZlbnRzID1cbiAgICAgICAgICAgICAgVmFyQ29tcHV0YXRpb24geyBwb3MgPSBTb21lIHBvczsgbmFtZTsgdmFsdWU7IGZ1bl9jYWxscyA9IE5vbmUgfVxuICAgICAgICAgICAgICA6OiBjdHguZXZlbnRzO1xuICAgICAgICAgICAgcmVzdDtcbiAgICAgICAgICB9XG4gICAgICB8IERlY2lzaW9uVGFrZW4gcG9zIDo6IFZhcmlhYmxlRGVmaW5pdGlvbiBfIDo6IEJlZ2luQ2FsbCBpbmZvcyA6OiBfXG4gICAgICAgIHdoZW4gaXNfZnVuY3Rpb25fY2FsbCBpbmZvcyAtPlxuICAgICAgICAoKiBWYXJpYWJsZSBkZWZpbml0aW9uIHdpdGggZnVuY3Rpb24gY2FsbHMuICopXG4gICAgICAgIGxldCByZWMgcGFyc2VfZnVuX2NhbGxzIGZ1bl9jYWxscyByYXdfZXZlbnRzID1cbiAgICAgICAgICBtYXRjaCByYXdfZXZlbnRzIHdpdGhcbiAgICAgICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiBfIDo6IEJlZ2luQ2FsbCBpbmZvcyA6OiBfXG4gICAgICAgICAgICB3aGVuIGlzX2Z1bmN0aW9uX2NhbGwgaW5mb3MgLT5cbiAgICAgICAgICAgIGxldCByZXN0LCBmdW5fY2FsbCA9IHBhcnNlX2Z1bl9jYWxsIHJhd19ldmVudHMgaW5cbiAgICAgICAgICAgIHBhcnNlX2Z1bl9jYWxscyAoZnVuX2NhbGwgOjogZnVuX2NhbGxzKSByZXN0XG4gICAgICAgICAgfCByZXN0IC0+IHJlc3QsIGZ1bl9jYWxscyB8PiBMaXN0LnJldlxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVzdCwgdmFyX2NvbXAgPVxuICAgICAgICAgIGxldCByZXN0LCBmdW5fY2FsbHMgPSBwYXJzZV9mdW5fY2FsbHMgW10gKExpc3QudGwgY3R4LnJlc3QpIGluXG4gICAgICAgICAgbWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIHZhbHVlKSA6OiByZXN0IC0+XG4gICAgICAgICAgICAoIHJlc3QsXG4gICAgICAgICAgICAgIFZhckNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgICAgeyBwb3MgPSBTb21lIHBvczsgbmFtZTsgdmFsdWU7IGZ1bl9jYWxscyA9IFNvbWUgZnVuX2NhbGxzIH0gKVxuICAgICAgICAgIHwgZXZlbnQgOjogXyAtPlxuICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgKFwiSW52YWxpZCBmdW5jdGlvbiBjYWxsIChbIFwiXG4gICAgICAgICAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIiwgXCIgaW5mb3NcbiAgICAgICAgICAgICAgXiBcIiBdKTogZXhwZWN0ZWQgdmFyaWFibGUgZGVmaW5pdGlvbiAoZnVuY3Rpb24gb3V0cHV0KSwgZm91bmQ6IFwiXG4gICAgICAgICAgICAgIF4gcmF3X2V2ZW50X3RvX3N0cmluZyBldmVudFxuICAgICAgICAgICAgICBeIFwiW1wiXG4gICAgICAgICAgICAgIF4gKG5iX3Jhd19ldmVudHMgLSBMaXN0Lmxlbmd0aCByZXN0ICsgMSB8PiBzdHJpbmdfb2ZfaW50KVxuICAgICAgICAgICAgICBeIFwiXVwiKVxuICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgIChcIkludmFsaWQgZnVuY3Rpb24gY2FsbCAoWyBcIlxuICAgICAgICAgICAgICBeIFN0cmluZy5jb25jYXQgXCIsIFwiIGluZm9zXG4gICAgICAgICAgICAgIF4gXCIgXSk6IGV4cGVjdGVkIHZhcmlhYmxlIGRlZmluaXRpb24gKGZ1bmN0aW9uIG91dHB1dCksIGZvdW5kOiBcXFxuICAgICAgICAgICAgICAgICBlbmQgb2YgdG9rZW5zXCIpXG4gICAgICAgIGluXG5cbiAgICAgICAgcGFyc2VfZXZlbnRzIHsgY3R4IHdpdGggZXZlbnRzID0gdmFyX2NvbXAgOjogY3R4LmV2ZW50czsgcmVzdCB9XG4gICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiBfIDo6IEJlZ2luQ2FsbCBpbmZvcyA6OiBfIHdoZW4gaXNfZnVuY3Rpb25fY2FsbCBpbmZvc1xuICAgICAgICAtPlxuICAgICAgICBsZXQgcmVzdCwgZnVuX2NhbGwgPSBwYXJzZV9mdW5fY2FsbCBjdHgucmVzdCBpblxuXG4gICAgICAgIHBhcnNlX2V2ZW50cyB7IGN0eCB3aXRoIGV2ZW50cyA9IEZ1bkNhbGwgZnVuX2NhbGwgOjogY3R4LmV2ZW50czsgcmVzdCB9XG4gICAgICB8IEJlZ2luQ2FsbCBpbmZvcyA6OiByZXN0IHdoZW4gaXNfc3Vic2NvcGVfY2FsbCBpbmZvcyAtPiAoXG4gICAgICAgIG1hdGNoIGluZm9zIHdpdGhcbiAgICAgICAgfCBbXzsgdmFyX25hbWU7IF9dIC0+XG4gICAgICAgICAgbGV0IGJvZHlfY3R4ID0gcGFyc2VfZXZlbnRzIHsgZW1wdHlfY3R4IHdpdGggcmVzdCB9IGluXG4gICAgICAgICAgbGV0IGlucHV0cyA9IFZhckRlZk1hcC5nZXQgdmFyX25hbWUgY3R4LnZhcnMgaW5cbiAgICAgICAgICBwYXJzZV9ldmVudHNcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY3R4IHdpdGhcbiAgICAgICAgICAgICAgZXZlbnRzID1cbiAgICAgICAgICAgICAgICBTdWJTY29wZUNhbGwgeyBuYW1lID0gaW5mb3M7IGlucHV0czsgYm9keSA9IGJvZHlfY3R4LmV2ZW50cyB9XG4gICAgICAgICAgICAgICAgOjogY3R4LmV2ZW50cztcbiAgICAgICAgICAgICAgcmVzdCA9IGJvZHlfY3R4LnJlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcInVucmVhY2hhYmxlIGR1ZSB0byB0aGUgW2lzX3N1YnNjb3BlX2NhbGxdIHRlc3RcIilcbiAgICAgIHwgRW5kQ2FsbCBfIDo6IHJlc3QgLT4geyBjdHggd2l0aCBldmVudHMgPSBjdHguZXZlbnRzIHw+IExpc3QucmV2OyByZXN0IH1cbiAgICAgIHwgZXZlbnQgOjogXyAtPiBmYWlsd2l0aCAoXCJVbmV4cGVjdGVkIGV2ZW50OiBcIiBeIHJhd19ldmVudF90b19zdHJpbmcgZXZlbnQpXG4gICAgYW5kIHBhcnNlX2Z1bl9jYWxsIGV2ZW50cyA9XG4gICAgICBtYXRjaCBldmVudHMgd2l0aFxuICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIHZhbHVlKSA6OiBCZWdpbkNhbGwgaW5mb3MgOjogcmVzdFxuICAgICAgICB3aGVuIGlzX2Z1bmN0aW9uX2NhbGwgaW5mb3MgJiYgaXNfaW5wdXRfdmFyX2RlZiBuYW1lIC0+XG4gICAgICAgIGxldCByZXN0LCBib2R5LCBvdXRwdXQgPVxuICAgICAgICAgIGxldCBib2R5X2N0eCA9XG4gICAgICAgICAgICBwYXJzZV9ldmVudHMgeyB2YXJzID0gVmFyRGVmTWFwLmVtcHR5OyBldmVudHMgPSBbXTsgcmVzdCB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYm9keV9yZXYgPSBMaXN0LnJldiBib2R5X2N0eC5ldmVudHMgaW5cbiAgICAgICAgICBib2R5X2N0eC5yZXN0LCBib2R5X3JldiB8PiBMaXN0LnRsIHw+IExpc3QucmV2LCBib2R5X3JldiB8PiBMaXN0LmhkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvdXRwdXQgPVxuICAgICAgICAgIG1hdGNoIG91dHB1dCB3aXRoXG4gICAgICAgICAgfCBWYXJDb21wdXRhdGlvbiB2YXJfZGVmIC0+IHZhcl9kZWZcbiAgICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJNaXNzaW5nIGZ1bmN0aW9uIG91dHB1dCB2YXJpYWJsZSBkZWZpbml0aW9uLlwiXG4gICAgICAgIGluXG5cbiAgICAgICAgKCByZXN0LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bl9uYW1lID0gaW5mb3M7XG4gICAgICAgICAgICBpbnB1dCA9IHsgcG9zID0gTm9uZTsgbmFtZTsgdmFsdWU7IGZ1bl9jYWxscyA9IE5vbmUgfTtcbiAgICAgICAgICAgIGJvZHk7XG4gICAgICAgICAgICBvdXRwdXQ7XG4gICAgICAgICAgfSApXG4gICAgICB8IF8gLT4gZmFpbHdpdGggXCJJbnZhbGlkIHN0YXJ0IG9mIGZ1bmN0aW9uIGNhbGwuXCJcbiAgICBpblxuXG4gICAgbGV0IGN0eCA9XG4gICAgICB0cnkgcGFyc2VfZXZlbnRzIHsgZW1wdHlfY3R4IHdpdGggcmVzdCA9IHJhd19ldmVudHMgfVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPlxuICAgICAgICAoKiBUT0RPOiBkaXNjdXNzIHdoYXQgc2hvdWxkIGJlIGRvbmUuICopXG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcGFyc2luZyByYXcgZXZlbnRzOiAlc1xcblwiIG1zZztcbiAgICAgICAgZW1wdHlfY3R4XG4gICAgaW5cbiAgICBjdHguZXZlbnRzXG5lbmRcblxubGV0IGhhbmRsZV9kZWZhdWx0IDpcbiAgICAgICdhLlxuICAgICAgc291cmNlX3Bvc2l0aW9uIC0+XG4gICAgICAodW5pdCAtPiAnYSkgYXJyYXkgLT5cbiAgICAgICh1bml0IC0+IGJvb2wpIC0+XG4gICAgICAodW5pdCAtPiAnYSkgLT5cbiAgICAgICdhID1cbiBmdW4gcG9zIGV4Y2VwdGlvbnMganVzdCBjb25zIC0+XG4gIGxldCBleGNlcHQgPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgZXhjZXB0IC0+XG4gICAgICAgIGxldCBuZXdfdmFsID0gdHJ5IFNvbWUgKGV4Y2VwdCAoKSkgd2l0aCBFbXB0eUVycm9yIC0+IE5vbmUgaW5cbiAgICAgICAgbWF0Y2ggYWNjLCBuZXdfdmFsIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIC0+IG5ld192YWxcbiAgICAgICAgfCBTb21lIF8sIE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSBfLCBTb21lIF8gLT4gcmFpc2UgKENvbmZsaWN0RXJyb3IgcG9zKSlcbiAgICAgIE5vbmUgZXhjZXB0aW9uc1xuICBpblxuICBtYXRjaCBleGNlcHQgd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPiBpZiBqdXN0ICgpIHRoZW4gY29ucyAoKSBlbHNlIHJhaXNlIEVtcHR5RXJyb3JcblxubGV0IGhhbmRsZV9kZWZhdWx0X29wdFxuICAgIChwb3MgOiBzb3VyY2VfcG9zaXRpb24pXG4gICAgKGV4Y2VwdGlvbnMgOiAnYSBlb3B0aW9uIGFycmF5KVxuICAgIChqdXN0IDogYm9vbCBlb3B0aW9uKVxuICAgIChjb25zIDogJ2EgZW9wdGlvbikgOiAnYSBlb3B0aW9uID1cbiAgbGV0IGV4Y2VwdCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBleGNlcHQgLT5cbiAgICAgICAgbWF0Y2ggYWNjLCBleGNlcHQgd2l0aFxuICAgICAgICB8IEVOb25lIF8sIF8gLT4gZXhjZXB0XG4gICAgICAgIHwgRVNvbWUgXywgRU5vbmUgXyAtPiBhY2NcbiAgICAgICAgfCBFU29tZSBfLCBFU29tZSBfIC0+IHJhaXNlIChDb25mbGljdEVycm9yIHBvcykpXG4gICAgICAoRU5vbmUgKCkpIGV4Y2VwdGlvbnNcbiAgaW5cbiAgbWF0Y2ggZXhjZXB0IHdpdGhcbiAgfCBFU29tZSBfIC0+IGV4Y2VwdFxuICB8IEVOb25lIF8gLT4gKFxuICAgIG1hdGNoIGp1c3Qgd2l0aFxuICAgIHwgRVNvbWUgYiAtPiBpZiBiIHRoZW4gY29ucyBlbHNlIEVOb25lICgpXG4gICAgfCBFTm9uZSBfIC0+IEVOb25lICgpKVxuXG5sZXQgbm9faW5wdXQgOiB1bml0IC0+ICdhID0gZnVuIF8gLT4gcmFpc2UgRW1wdHlFcnJvclxuXG4oKiBUT0RPOiBhZGQgYSBjb21wYXJlIGJ1aWx0LWluIHRvIGRhdGVzX2NhbGMuIEF0IHRoZSBtb21lbnQgdGhpcyBmYWlscyBvbiBlLmcuXG4gICBbMyBtb250aHMsIDQgbW9udGhzXSAqKVxubGV0IGNvbXBhcmVfcGVyaW9kcyAocDEgOiBkdXJhdGlvbikgKHAyIDogZHVyYXRpb24pIDogaW50ID1cbiAgdHJ5XG4gICAgbGV0IHAxX2RheXMgPSBEYXRlc19jYWxjLkRhdGVzLnBlcmlvZF90b19kYXlzIHAxIGluXG4gICAgbGV0IHAyX2RheXMgPSBEYXRlc19jYWxjLkRhdGVzLnBlcmlvZF90b19kYXlzIHAyIGluXG4gICAgY29tcGFyZSBwMV9kYXlzIHAyX2RheXNcbiAgd2l0aCBEYXRlc19jYWxjLkRhdGVzLkFtYmlndW91c0NvbXB1dGF0aW9uIC0+IHJhaXNlIFVuY29tcGFyYWJsZUR1cmF0aW9uc1xuXG4oKiBUT0RPOiBzYW1lIGhlcmUsIGFsdGhvdWdoIGl0IHdhcyB0d2Vha2VkIHRvIG5ldmVyIGZhaWwgb24gZXF1YWwgZGF0ZXMuXG4gICBDb21wYXJpbmcgdGhlIGRpZmZlcmVuY2UgdG8gZHVyYXRpb25fMCBpcyBub3QgYSBnb29kIGlkZWEgYmVjYXVzZSB3ZSBzdGlsbFxuICAgd2FudCB0byBmYWlsIG9uIFsxIG1vbnRoLCAzMCBkYXlzXSByYXRoZXIgdGhhbiByZXR1cm4gW2ZhbHNlXSAqKVxubGV0IGVxdWFsX3BlcmlvZHMgKHAxIDogZHVyYXRpb24pIChwMiA6IGR1cmF0aW9uKSA6IGJvb2wgPVxuICB0cnkgRGF0ZXNfY2FsYy5EYXRlcy5wZXJpb2RfdG9fZGF5cyAoRGF0ZXNfY2FsYy5EYXRlcy5zdWJfcGVyaW9kcyBwMSBwMikgPSAwXG4gIHdpdGggRGF0ZXNfY2FsYy5EYXRlcy5BbWJpZ3VvdXNDb21wdXRhdGlvbiAtPiByYWlzZSBVbmNvbXBhcmFibGVEdXJhdGlvbnNcblxubW9kdWxlIE9wZXIgPSBzdHJ1Y3RcbiAgbGV0IG9fbm90ID0gU3RkbGliLm5vdFxuICBsZXQgb19sZW5ndGggYSA9IFoub2ZfaW50IChBcnJheS5sZW5ndGggYSlcbiAgbGV0IG9fdG9yYXRfaW50ID0gZGVjaW1hbF9vZl9pbnRlZ2VyXG4gIGxldCBvX3RvcmF0X21vbiA9IGRlY2ltYWxfb2ZfbW9uZXlcbiAgbGV0IG9fdG9tb25leV9yYXQgPSBtb25leV9vZl9kZWNpbWFsXG4gIGxldCBvX2dldERheSA9IGRheV9vZl9tb250aF9vZl9kYXRlXG4gIGxldCBvX2dldE1vbnRoID0gbW9udGhfbnVtYmVyX29mX2RhdGVcbiAgbGV0IG9fZ2V0WWVhciA9IHllYXJfb2ZfZGF0ZVxuICBsZXQgb19maXJzdERheU9mTW9udGggPSBmaXJzdF9kYXlfb2ZfbW9udGhcbiAgbGV0IG9fbGFzdERheU9mTW9udGggPSBsYXN0X2RheV9vZl9tb250aFxuICBsZXQgb19yb3VuZF9tb24gPSBtb25leV9yb3VuZFxuICBsZXQgb19yb3VuZF9yYXQgPSBkZWNpbWFsX3JvdW5kXG4gIGxldCBvX21pbnVzX2ludCBpMSA9IFouc3ViIFouemVybyBpMVxuICBsZXQgb19taW51c19yYXQgaTEgPSBRLnN1YiBRLnplcm8gaTFcbiAgbGV0IG9fbWludXNfbW9uIG0xID0gWi5zdWIgWi56ZXJvIG0xXG4gIGxldCBvX21pbnVzX2R1ciA9IERhdGVzX2NhbGMuRGF0ZXMubmVnX3BlcmlvZFxuICBsZXQgb19hbmQgPSAoICYmIClcbiAgbGV0IG9fb3IgPSAoIHx8IClcbiAgbGV0IG9feG9yIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSAoIDw+IClcbiAgbGV0IG9fZXEgPSAoID0gKVxuICBsZXQgb19tYXAgPSBBcnJheS5tYXBcblxuICBsZXQgb19yZWR1Y2UgZiBkZnQgYSA9XG4gICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgaWYgbGVuID0gMCB0aGVuIGRmdFxuICAgIGVsc2VcbiAgICAgIGxldCByID0gcmVmIGEuKDApIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgICByIDo9IGYgIXIgYS4oaSlcbiAgICAgIGRvbmU7XG4gICAgICAhclxuXG4gIGxldCBvX2NvbmNhdCA9IEFycmF5LmFwcGVuZFxuICBsZXQgb19maWx0ZXIgZiBhID0gQXJyYXkub2ZfbGlzdCAoTGlzdC5maWx0ZXIgZiAoQXJyYXkudG9fbGlzdCBhKSlcbiAgbGV0IG9fYWRkX2ludF9pbnQgaTEgaTIgPSBaLmFkZCBpMSBpMlxuICBsZXQgb19hZGRfcmF0X3JhdCBpMSBpMiA9IFEuYWRkIGkxIGkyXG4gIGxldCBvX2FkZF9tb25fbW9uIG0xIG0yID0gWi5hZGQgbTEgbTJcbiAgbGV0IG9fYWRkX2RhdF9kdXIgZGEgZHUgPSBEYXRlc19jYWxjLkRhdGVzLmFkZF9kYXRlcyBkYSBkdVxuICBsZXQgb19hZGRfZHVyX2R1ciA9IERhdGVzX2NhbGMuRGF0ZXMuYWRkX3BlcmlvZHNcbiAgbGV0IG9fc3ViX2ludF9pbnQgaTEgaTIgPSBaLnN1YiBpMSBpMlxuICBsZXQgb19zdWJfcmF0X3JhdCBpMSBpMiA9IFEuc3ViIGkxIGkyXG4gIGxldCBvX3N1Yl9tb25fbW9uIG0xIG0yID0gWi5zdWIgbTEgbTJcbiAgbGV0IG9fc3ViX2RhdF9kYXQgPSBEYXRlc19jYWxjLkRhdGVzLnN1Yl9kYXRlc1xuICBsZXQgb19zdWJfZGF0X2R1ciBkYXQgZHVyID0gRGF0ZXNfY2FsYy5EYXRlcy4oYWRkX2RhdGVzIGRhdCAobmVnX3BlcmlvZCBkdXIpKVxuICBsZXQgb19zdWJfZHVyX2R1ciA9IERhdGVzX2NhbGMuRGF0ZXMuc3ViX3BlcmlvZHNcbiAgbGV0IG9fbXVsdF9pbnRfaW50IGkxIGkyID0gWi5tdWwgaTEgaTJcbiAgbGV0IG9fbXVsdF9yYXRfcmF0IGkxIGkyID0gUS5tdWwgaTEgaTJcblxuICBsZXQgb19tdWx0X21vbl9yYXQgaTEgaTIgPVxuICAgIGxldCBpMV9hYnMgPSBaLmFicyBpMSBpblxuICAgIGxldCBpMl9hYnMgPSBRLmFicyBpMiBpblxuICAgIGxldCBzaWduX2ludCA9IFouc2lnbiBpMSAqIFEuc2lnbiBpMiBpblxuICAgIGxldCByYXRfcmVzdWx0ID0gUS5tdWwgKFEub2ZfYmlnaW50IGkxX2FicykgaTJfYWJzIGluXG4gICAgbGV0IHJlcywgcmVtYWluZGVyID0gWi5kaXZfcmVtIChRLm51bSByYXRfcmVzdWx0KSAoUS5kZW4gcmF0X3Jlc3VsdCkgaW5cbiAgICAoKiB3ZSBwZXJmb3JtIG5lYXJlc3Qgcm91bmRpbmcgd2hlbiBtdWx0aXBseWluZyBhbiBhbW91bnQgb2YgbW9uZXkgYnkgYVxuICAgICAgIGRlY2ltYWwgISopXG4gICAgaWYgWi4ob2ZfaW50IDIgKiByZW1haW5kZXIgPj0gUS5kZW4gcmF0X3Jlc3VsdCkgdGhlblxuICAgICAgWi4oYWRkIHJlcyAob2ZfaW50IDEpICogb2ZfaW50IHNpZ25faW50KVxuICAgIGVsc2UgWi4ocmVzICogb2ZfaW50IHNpZ25faW50KVxuXG4gIGxldCBvX211bHRfZHVyX2ludCBkIG0gPSBEYXRlc19jYWxjLkRhdGVzLm11bF9wZXJpb2QgZCAoWi50b19pbnQgbSlcblxuICBsZXQgb19kaXZfaW50X2ludCBpMSBpMiA9XG4gICAgKCogSXQncyBub3Qgb24gdGhlIG9jYW1sZG9jLCBidXQgUS5kaXYgbGlrZWx5IGFscmVhZHkgcmFpc2VzIHRoaXMgPyAqKVxuICAgIGlmIFouemVybyA9IGkyIHRoZW4gcmFpc2UgRGl2aXNpb25fYnlfemVyb1xuICAgIGVsc2UgUS5kaXYgKFEub2ZfYmlnaW50IGkxKSAoUS5vZl9iaWdpbnQgaTIpXG5cbiAgbGV0IG9fZGl2X3JhdF9yYXQgaTEgaTIgPVxuICAgIGlmIFEuemVybyA9IGkyIHRoZW4gcmFpc2UgRGl2aXNpb25fYnlfemVybyBlbHNlIFEuZGl2IGkxIGkyXG5cbiAgbGV0IG9fZGl2X21vbl9tb24gbTEgbTIgPVxuICAgIGlmIFouemVybyA9IG0yIHRoZW4gcmFpc2UgRGl2aXNpb25fYnlfemVyb1xuICAgIGVsc2UgUS5kaXYgKFEub2ZfYmlnaW50IG0xKSAoUS5vZl9iaWdpbnQgbTIpXG5cbiAgbGV0IG9fZGl2X21vbl9yYXQgbTEgcjEgPVxuICAgIGlmIFEuemVybyA9IHIxIHRoZW4gcmFpc2UgRGl2aXNpb25fYnlfemVybyBlbHNlIG9fbXVsdF9tb25fcmF0IG0xIChRLmludiByMSlcblxuICBsZXQgb19sdF9pbnRfaW50IGkxIGkyID0gWi5jb21wYXJlIGkxIGkyIDwgMFxuICBsZXQgb19sdF9yYXRfcmF0IGkxIGkyID0gUS5jb21wYXJlIGkxIGkyIDwgMFxuICBsZXQgb19sdF9tb25fbW9uIG0xIG0yID0gWi5jb21wYXJlIG0xIG0yIDwgMFxuICBsZXQgb19sdF9kdXJfZHVyIGQxIGQyID0gY29tcGFyZV9wZXJpb2RzIGQxIGQyIDwgMFxuICBsZXQgb19sdF9kYXRfZGF0IGQxIGQyID0gRGF0ZXNfY2FsYy5EYXRlcy5jb21wYXJlX2RhdGVzIGQxIGQyIDwgMFxuICBsZXQgb19sdGVfaW50X2ludCBpMSBpMiA9IFouY29tcGFyZSBpMSBpMiA8PSAwXG4gIGxldCBvX2x0ZV9yYXRfcmF0IGkxIGkyID0gUS5jb21wYXJlIGkxIGkyIDw9IDBcbiAgbGV0IG9fbHRlX21vbl9tb24gbTEgbTIgPSBaLmNvbXBhcmUgbTEgbTIgPD0gMFxuICBsZXQgb19sdGVfZHVyX2R1ciBkMSBkMiA9IGNvbXBhcmVfcGVyaW9kcyBkMSBkMiA8PSAwXG4gIGxldCBvX2x0ZV9kYXRfZGF0IGQxIGQyID0gRGF0ZXNfY2FsYy5EYXRlcy5jb21wYXJlX2RhdGVzIGQxIGQyIDw9IDBcbiAgbGV0IG9fZ3RfaW50X2ludCBpMSBpMiA9IFouY29tcGFyZSBpMSBpMiA+IDBcbiAgbGV0IG9fZ3RfcmF0X3JhdCBpMSBpMiA9IFEuY29tcGFyZSBpMSBpMiA+IDBcbiAgbGV0IG9fZ3RfbW9uX21vbiBtMSBtMiA9IFouY29tcGFyZSBtMSBtMiA+IDBcbiAgbGV0IG9fZ3RfZHVyX2R1ciBkMSBkMiA9IGNvbXBhcmVfcGVyaW9kcyBkMSBkMiA+IDBcbiAgbGV0IG9fZ3RfZGF0X2RhdCBkMSBkMiA9IERhdGVzX2NhbGMuRGF0ZXMuY29tcGFyZV9kYXRlcyBkMSBkMiA+IDBcbiAgbGV0IG9fZ3RlX2ludF9pbnQgaTEgaTIgPSBaLmNvbXBhcmUgaTEgaTIgPj0gMFxuICBsZXQgb19ndGVfcmF0X3JhdCBpMSBpMiA9IFEuY29tcGFyZSBpMSBpMiA+PSAwXG4gIGxldCBvX2d0ZV9tb25fbW9uIG0xIG0yID0gWi5jb21wYXJlIG0xIG0yID49IDBcbiAgbGV0IG9fZ3RlX2R1cl9kdXIgZDEgZDIgPSBjb21wYXJlX3BlcmlvZHMgZDEgZDIgPj0gMFxuICBsZXQgb19ndGVfZGF0X2RhdCBkMSBkMiA9IERhdGVzX2NhbGMuRGF0ZXMuY29tcGFyZV9kYXRlcyBkMSBkMiA+PSAwXG4gIGxldCBvX2VxX2ludF9pbnQgaTEgaTIgPSBaLmVxdWFsIGkxIGkyXG4gIGxldCBvX2VxX3JhdF9yYXQgaTEgaTIgPSBRLmVxdWFsIGkxIGkyXG4gIGxldCBvX2VxX21vbl9tb24gbTEgbTIgPSBaLmVxdWFsIG0xIG0yXG4gIGxldCBvX2VxX2R1cl9kdXIgZDEgZDIgPSBlcXVhbF9wZXJpb2RzIGQxIGQyXG4gIGxldCBvX2VxX2RhdF9kYXQgZDEgZDIgPSBEYXRlc19jYWxjLkRhdGVzLmNvbXBhcmVfZGF0ZXMgZDEgZDIgPSAwXG4gIGxldCBvX2ZvbGQgPSBBcnJheS5mb2xkX2xlZnRcbmVuZFxuXG5pbmNsdWRlIE9wZXJcbiIsbnVsbCxudWxsLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQ2F0YWxhIGNvbXBpbGVyLCBhIHNwZWNpZmljYXRpb24gbGFuZ3VhZ2UgZm9yIHRheFxuICAgYW5kIHNvY2lhbCBiZW5lZml0cyBjb21wdXRhdGlvbiBydWxlcy4gQ29weXJpZ2h0IChDKSAyMDIwIElucmlhLCBjb250cmlidXRvcjpcbiAgIEVtaWxlIFJvbGxleSA8ZW1pbGUucm9sbGV5QHR1dGEuaW8+LlxuXG4gICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdFxuICAgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2ZcbiAgIHRoZSBMaWNlbnNlIGF0XG5cbiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVRcbiAgIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZVxuICAgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXJcbiAgIHRoZSBMaWNlbnNlLiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5tb2R1bGUgUl9vY2FtbCA9IFJ1bnRpbWVfb2NhbWwuUnVudGltZVxuXG5jbGFzcyB0eXBlIHNvdXJjZV9wb3NpdGlvbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBmaWxlTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgICBtZXRob2Qgc3RhcnRMaW5lIDogaW50IEpzLnByb3BcbiAgICBtZXRob2QgZW5kTGluZSA6IGludCBKcy5wcm9wXG4gICAgbWV0aG9kIHN0YXJ0Q29sdW1uIDogaW50IEpzLnByb3BcbiAgICBtZXRob2QgZW5kQ29sdW1uIDogaW50IEpzLnByb3BcbiAgICBtZXRob2QgbGF3SGVhZGluZ3MgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnByb3BcbiAgZW5kXG5cbmNsYXNzIHR5cGUgcmF3X2V2ZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGV2ZW50VHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgICBtZXRob2QgaW5mb3JtYXRpb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnByb3BcbiAgICBtZXRob2Qgc291cmNlUG9zaXRpb24gOiBzb3VyY2VfcG9zaXRpb24gSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuICAgIG1ldGhvZCBsb2dnZWRWYWx1ZUpzb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG5jbGFzcyB0eXBlIGV2ZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG5jbGFzcyB0eXBlIGR1cmF0aW9uID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHllYXJzIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbW9udGhzIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF5cyA6IGludCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgZHVyYXRpb25fb2ZfanNvbyBkID1cbiAgUl9vY2FtbC5kdXJhdGlvbl9vZl9udW1iZXJzIGQjIy55ZWFycyBkIyMubW9udGhzIGQjIy5kYXlzXG5cbmxldCBkdXJhdGlvbl90b19qc29vIGQgPVxuICBsZXQgeWVhcnMsIG1vbnRocywgZGF5cyA9IFJfb2NhbWwuZHVyYXRpb25fdG9feWVhcnNfbW9udGhzX2RheXMgZCBpblxuICBvYmplY3QlanNcbiAgICB2YWwgeWVhcnMgPSB5ZWFyc1xuICAgIHZhbCBtb250aHMgPSBtb250aHNcbiAgICB2YWwgZGF5cyA9IGRheXNcbiAgZW5kXG5cbmxldCBkYXRlX29mX2pzb28gZCA9XG4gIGxldCBkID0gSnMudG9fc3RyaW5nIGQgaW5cbiAgbGV0IGQgPVxuICAgIGlmIFN0cmluZy5jb250YWlucyBkICdUJyB0aGVuIGQgfD4gU3RyaW5nLnNwbGl0X29uX2NoYXIgJ1QnIHw+IExpc3QuaGRcbiAgICBlbHNlIGRcbiAgaW5cbiAgbWF0Y2ggU3RyaW5nLnNwbGl0X29uX2NoYXIgJy0nIGQgd2l0aFxuICB8IFt5ZWFyOyBtb250aDsgZGF5XSAtPlxuICAgIFJfb2NhbWwuZGF0ZV9vZl9udW1iZXJzIChpbnRfb2Zfc3RyaW5nIHllYXIpIChpbnRfb2Zfc3RyaW5nIG1vbnRoKVxuICAgICAgKGludF9vZl9zdHJpbmcgZGF5KVxuICB8IF8gLT4gZmFpbHdpdGggXCJkYXRlX29mX2pzb286IGludmFsaWQgZGF0ZVwiXG5cbmxldCBkYXRlX3RvX2pzb28gZCA9IEpzLnN0cmluZyBAQCBSX29jYW1sLmRhdGVfdG9fc3RyaW5nIGRcblxuY2xhc3MgdHlwZSBldmVudF9tYW5hZ2VyID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHJlc2V0TG9nIDogKHVuaXQsIHVuaXQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJldHJpZXZlRXZlbnRzIDpcbiAgICAgICh1bml0LCBldmVudCBKcy50IEpzLmpzX2FycmF5IEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJldHJpZXZlUmF3RXZlbnRzIDpcbiAgICAgICh1bml0LCByYXdfZXZlbnQgSnMudCBKcy5qc19hcnJheSBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG5cbmxldCBldmVudF9tYW5hZ2VyIDogZXZlbnRfbWFuYWdlciBKcy50ID1cbiAgb2JqZWN0JWpzXG4gICAgbWV0aG9kIHJlc2V0TG9nID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrIFJfb2NhbWwucmVzZXRfbG9nXG5cbiAgICBtZXRob2QgcmV0cmlldmVFdmVudHMgPVxuICAgICAgSnMud3JhcF9tZXRoX2NhbGxiYWNrIChmdW4gKCkgLT5cbiAgICAgICAgICBKcy5hcnJheVxuICAgICAgICAgICAgKEFycmF5Lm9mX2xpc3RcbiAgICAgICAgICAgICAgIChSX29jYW1sLnJldHJpZXZlX2xvZyAoKVxuICAgICAgICAgICAgICAgfD4gUl9vY2FtbC5FdmVudFBhcnNlci5wYXJzZV9yYXdfZXZlbnRzXG4gICAgICAgICAgICAgICB8PiBMaXN0Lm1hcCAoZnVuIGV2ZW50IC0+XG4gICAgICAgICAgICAgICAgICAgICAgb2JqZWN0JWpzXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBkYXRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfD4gUl9vY2FtbC55b2pzb25fb2ZfZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfD4gWW9qc29uLlNhZmUudG9fc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHw+IEpzLnN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgIGVuZCkpKSlcblxuICAgIG1ldGhvZCByZXRyaWV2ZVJhd0V2ZW50cyA9XG4gICAgICBKcy53cmFwX21ldGhfY2FsbGJhY2sgKGZ1biAoKSAtPlxuICAgICAgICAgIEpzLmFycmF5XG4gICAgICAgICAgICAoQXJyYXkub2ZfbGlzdFxuICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAoZnVuIGV2dCAtPlxuICAgICAgICAgICAgICAgICAgICBvYmplY3QlanNcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBldmVudFR5cGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgSnMuc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBldnQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJfb2NhbWwuQmVnaW5DYWxsIF8gLT4gXCJCZWdpbiBjYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFbmRDYWxsIF8gLT4gXCJFbmQgY2FsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIF8gLT4gXCJWYXJpYWJsZSBkZWZpbml0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZWNpc2lvblRha2VuIF8gLT4gXCJEZWNpc2lvbiB0YWtlblwiKVxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgaW5mb3JtYXRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgSnMuYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEFycmF5Lm9mX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGV2dCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQmVnaW5DYWxsIGluZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFbmRDYWxsIGluZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gKGluZm8sIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5tYXAgSnMuc3RyaW5nIGluZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZWNpc2lvblRha2VuIF8gLT4gW10pKVxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgbG9nZ2VkVmFsdWVKc29uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBldnQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gKF8sIHYpIC0+IHZcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgRW5kQ2FsbCBfIHwgQmVnaW5DYWxsIF8gfCBEZWNpc2lvblRha2VuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgUl9vY2FtbC51bmVtYmVkZGFibGUgKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICB8PiBSX29jYW1sLnlvanNvbl9vZl9ydW50aW1lX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8PiBZb2pzb24uU2FmZS50b19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHw+IEpzLnN0cmluZ1xuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgc291cmNlUG9zaXRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZXZ0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVjaXNpb25UYWtlbiBwb3MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuZGVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9iamVjdCVqc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGZpbGVOYW1lID0gSnMuc3RyaW5nIHBvcy5maWxlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIHN0YXJ0TGluZSA9IHBvcy5zdGFydF9saW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgZW5kTGluZSA9IHBvcy5lbmRfbGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIHN0YXJ0Q29sdW1uID0gcG9zLnN0YXJ0X2NvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGVuZENvbHVtbiA9IHBvcy5lbmRfY29sdW1uXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBsYXdIZWFkaW5ncyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKcy5hcnJheVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXJyYXkub2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgSnMuc3RyaW5nIHBvcy5sYXdfaGVhZGluZ3MpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBKcy51bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgICAgICAgICAgICAgICAgKFJfb2NhbWwucmV0cmlldmVfbG9nICgpKSkpKVxuICBlbmRcblxubGV0IGV4ZWN1dGVfb3JfdGhyb3dfZXJyb3IgZiA9XG4gIGxldCB0aHJvd19lcnJvciAoZGVzY3IgOiBzdHJpbmcpIChwb3MgOiBSX29jYW1sLnNvdXJjZV9wb3NpdGlvbikgPVxuICAgIGxldCBtc2cgPVxuICAgICAgSnMuc3RyaW5nXG4gICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlcyBpbiBmaWxlICVzLCBwb3NpdGlvbiAlZDolZC0tJWQ6JWQuXCIgZGVzY3JcbiAgICAgICAgICAgcG9zLmZpbGVuYW1lIHBvcy5zdGFydF9saW5lIHBvcy5zdGFydF9jb2x1bW4gcG9zLmVuZF9saW5lXG4gICAgICAgICAgIHBvcy5lbmRfY29sdW1uKVxuICAgIGluXG4gICAgSnMuSnNfZXJyb3IucmFpc2VfXG4gICAgICAoSnMuSnNfZXJyb3Iub2ZfZXJyb3JcbiAgICAgICAgIChvYmplY3QlanNcbiAgICAgICAgICAgIHZhbCBtdXRhYmxlIG5hbWUgPSBKcy5zdHJpbmcgXCJOb1ZhbHVlUHJvdmlkZWRcIlxuICAgICAgICAgICAgdmFsIG11dGFibGUgbWVzc2FnZSA9IG1zZ1xuICAgICAgICAgICAgdmFsIG11dGFibGUgc3RhY2sgPSBKcy5PcHRkZWYuZW1wdHlcbiAgICAgICAgICAgIG1ldGhvZCB0b1N0cmluZyA9IG1zZ1xuICAgICAgICAgZW5kKSlcbiAgaW5cbiAgdHJ5IGYgKCkgd2l0aFxuICB8IFJfb2NhbWwuTm9WYWx1ZVByb3ZpZGVkIHBvcyAtPlxuICAgIHRocm93X2Vycm9yXG4gICAgICBcIk5vIHJ1bGUgYXBwbGllcyBpbiB0aGUgZ2l2ZW4gY29udGV4dCB0byBnaXZlIGEgdmFsdWUgdG8gdGhlIHZhcmlhYmxlXCIgcG9zXG4gIHwgUl9vY2FtbC5Db25mbGljdEVycm9yIHBvcyAtPlxuICAgIHRocm93X2Vycm9yXG4gICAgICBcIkEgY29uZmxpY3QgaGFwcGVuZWQgYmV0d2VlbiB0d28gcnVsZXMgZ2l2aW5nIGEgdmFsdWUgdG8gdGhlIHZhcmlhYmxlXCIgcG9zXG4gIHwgUl9vY2FtbC5Bc3NlcnRpb25GYWlsZWQgcG9zIC0+XG4gICAgdGhyb3dfZXJyb3IgXCJBIGZhaWx1cmUgaGFwcGVuZWQgaW4gdGhlIGFzc2VydGlvblwiIHBvc1xuIiwiKCoqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgdGhlIENhdGFsYSBjb21waWxlciwgZG8gbm90IGVkaXQhICopXG5cbm9wZW4gUnVudGltZV9vY2FtbC5SdW50aW1lXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTQtMjYtMjctMzItNDEtNDJcIl1cblxubW9kdWxlIFByaXNlRW5DaGFyZ2UgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBvZiB1bml0XG4gICAgfCBHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgb2YgdW5pdFxuICAgIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIG9mIHVuaXRcbiAgICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIG9mIHVuaXRcbiAgICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9wcmlzZV9lbl9jaGFyZ2UgKHg6IFByaXNlRW5DaGFyZ2UudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJQcmlzZUVuQ2hhcmdlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgeCAtPlxuICAgICAgKFwiR2FyZGVBbHRlcm7DqWVQYXJ0YWdlQWxsb2NhdGlvbnNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIHggLT5cbiAgICAgIChcIkdhcmRlQWx0ZXJuw6llQWxsb2NhdGFpcmVVbmlxdWVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIHggLT4gKFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIHggLT5cbiAgICAgIChcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzw6llw4BMYUZhbWlsbGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCB4IC0+XG4gICAgICAoXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc8OpZUF1eFNlcnZpY2VzU29jaWF1eFwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgQXZhbnQgb2YgdW5pdFxuICAgIHwgUGVuZGFudCBvZiB1bml0XG4gICAgfCBBcHJlcyBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlICh4OiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQXZhbnQgeCAtPiAoXCJBdmFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBQZW5kYW50IHggLT4gKFwiUGVuZGFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBcHJlcyB4IC0+IChcIkFwcsOoc1wiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQcmlzZUVuQ29tcHRlID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IENvbXBsZXRlIG9mIHVuaXRcbiAgICB8IFBhcnRhZ2VlIG9mIHVuaXRcbiAgICB8IFplcm8gb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9wcmlzZV9lbl9jb21wdGUgKHg6IFByaXNlRW5Db21wdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJQcmlzZUVuQ29tcHRlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IENvbXBsZXRlIHggLT4gKFwiQ29tcGzDqHRlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFBhcnRhZ2VlIHggLT4gKFwiUGFydGFnw6llXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFplcm8geCAtPiAoXCJaw6lyb1wiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBWZXJzZW1lbnRBbGxvY2F0aW9ucyA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBOb3JtYWwgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3ZlcnNlbWVudF9hbGxvY2F0aW9ucyAoeDogVmVyc2VtZW50QWxsb2NhdGlvbnMudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJWZXJzZW1lbnRBbGxvY2F0aW9uc1wiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb3JtYWwgeCAtPiAoXCJOb3JtYWxcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uVmVyc8OpZUF1eFNlcnZpY2VzU29jaWF1eFwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IFByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnQgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbnNGYW1pbGlhbGVzIG9mIHVuaXRcbiAgICB8IENvbXBsZW1lbnRGYW1pbGlhbCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnQgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZSBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmUgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9lbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgKHg6IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCLDiWzDqW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudCB4IC0+XG4gICAgICAoXCJQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25zRmFtaWxpYWxlcyB4IC0+IChcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBDb21wbGVtZW50RmFtaWxpYWwgeCAtPiAoXCJDb21wbMOpbWVudEZhbWlsaWFsXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudCB4IC0+IChcIkFsbG9jYXRpb25Mb2dlbWVudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb27DiWR1Y2F0aW9uRW5mYW50SGFuZGljYXDDqVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uUmVudHLDqWVTY29sYWlyZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uSm91cm5hbGnDqHJlUHJlc2VuY2VQYXJlbnRhbGVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgQ29sbGVjdGl2aXRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEd1YWRlbG91cGUgb2YgdW5pdFxuICAgIHwgR3V5YW5lIG9mIHVuaXRcbiAgICB8IE1hcnRpbmlxdWUgb2YgdW5pdFxuICAgIHwgTGFSZXVuaW9uIG9mIHVuaXRcbiAgICB8IFNhaW50QmFydGhlbGVteSBvZiB1bml0XG4gICAgfCBTYWludE1hcnRpbiBvZiB1bml0XG4gICAgfCBNZXRyb3BvbGUgb2YgdW5pdFxuICAgIHwgU2FpbnRQaWVycmVFdE1pcXVlbG9uIG9mIHVuaXRcbiAgICB8IE1heW90dGUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9jb2xsZWN0aXZpdGUgKHg6IENvbGxlY3Rpdml0ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkNvbGxlY3Rpdml0w6lcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgR3VhZGVsb3VwZSB4IC0+IChcIkd1YWRlbG91cGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgR3V5YW5lIHggLT4gKFwiR3V5YW5lXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE1hcnRpbmlxdWUgeCAtPiAoXCJNYXJ0aW5pcXVlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IExhUmV1bmlvbiB4IC0+IChcIkxhUsOpdW5pb25cIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRCYXJ0aGVsZW15IHggLT4gKFwiU2FpbnRCYXJ0aMOpbGVteVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTYWludE1hcnRpbiB4IC0+IChcIlNhaW50TWFydGluXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE1ldHJvcG9sZSB4IC0+IChcIk3DqXRyb3BvbGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRQaWVycmVFdE1pcXVlbG9uIHggLT4gKFwiU2FpbnRQaWVycmVFdE1pcXVlbG9uXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE1heW90dGUgeCAtPiAoXCJNYXlvdHRlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4ID0gc3RydWN0XG4gIHR5cGUgdCA9IHthZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzM6IGR1cmF0aW9ufVxuZW5kXG5sZXQgZW1iZWRfYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCAoeDogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDgudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4XCJdLFxuICBbKFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIiwgZW1iZWRfZHVyYXRpb25cbiAgICB4LkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4LmFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfMyldKVxuXG5cbm1vZHVsZSBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge21vbnRhbnRfdmVyc2U6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoeDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIFsoXCJtb250YW50X3ZlcnPDqVwiLCBlbWJlZF9tb25leSB4LkFsbG9jYXRpb25zRmFtaWxpYWxlcy5tb250YW50X3ZlcnNlKV0pXG5cblxubW9kdWxlIFNtaWMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2JydXRfaG9yYWlyZTogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9zbWljICh4OiBTbWljLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJTbWljXCJdLFxuICBbKFwiYnJ1dF9ob3JhaXJlXCIsIGVtYmVkX21vbmV5IHguU21pYy5icnV0X2hvcmFpcmUpXSlcblxuXG5tb2R1bGUgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcyA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudDogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzICh4OiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwibW9udGFudFwiLCBlbWJlZF9tb25leSB4LkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMubW9udGFudCldKVxuXG5cbm1vZHVsZSBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2lfbW9udGFudF92ZXJzZTogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9pbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoeDogSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIFsoXCJpX21vbnRhbnRfdmVyc8OpXCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMuaV9tb250YW50X3ZlcnNlKV0pXG5cblxubW9kdWxlIEVuZmFudEVudHJlZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZF9pZGVudGlmaWFudDogaW50ZWdlcjtcbiAgICBkX3JlbXVuZXJhdGlvbl9tZW5zdWVsbGU6IG1vbmV5O1xuICAgIGRfZGF0ZV9kZV9uYWlzc2FuY2U6IGRhdGU7XG4gICAgZF9wcmlzZV9lbl9jaGFyZ2U6IFByaXNlRW5DaGFyZ2UudDtcbiAgICBkX2FfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXM6IGJvb2w7XG4gICAgZF9iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQ6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50X2VudHJlZSAoeDogRW5mYW50RW50cmVlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJFbmZhbnRFbnRyw6llXCJdLFxuICBbKFwiZF9pZGVudGlmaWFudFwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5FbmZhbnRFbnRyZWUuZF9pZGVudGlmaWFudCk7XG4gICAgKFwiZF9yw6ltdW5lcmF0aW9uX21lbnN1ZWxsZVwiLCBlbWJlZF9tb25leVxuICAgIHguRW5mYW50RW50cmVlLmRfcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSk7XG4gICAgKFwiZF9kYXRlX2RlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbmZhbnRFbnRyZWUuZF9kYXRlX2RlX25haXNzYW5jZSk7XG4gICAgKFwiZF9wcmlzZV9lbl9jaGFyZ2VcIiwgZW1iZWRfcHJpc2VfZW5fY2hhcmdlXG4gICAgeC5FbmZhbnRFbnRyZWUuZF9wcmlzZV9lbl9jaGFyZ2UpO1xuICAgIChcImRfYV9kw6lqw6Bfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudEVudHJlZS5kX2FfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpO1xuICAgIChcImRfYsOpbsOpZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50RW50cmVlLmRfYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KV0pXG5cblxubW9kdWxlIEVuZmFudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgaWRlbnRpZmlhbnQ6IGludGVnZXI7XG4gICAgb2JsaWdhdGlvbl9zY29sYWlyZTogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQ7XG4gICAgcmVtdW5lcmF0aW9uX21lbnN1ZWxsZTogbW9uZXk7XG4gICAgZGF0ZV9kZV9uYWlzc2FuY2U6IGRhdGU7XG4gICAgcHJpc2VfZW5fY2hhcmdlOiBQcmlzZUVuQ2hhcmdlLnQ7XG4gICAgYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlczogYm9vbDtcbiAgICBiZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQ6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50ICh4OiBFbmZhbnQudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIkVuZmFudFwiXSxcbiAgWyhcImlkZW50aWZpYW50XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVuZmFudC5pZGVudGlmaWFudCk7XG4gICAgKFwib2JsaWdhdGlvbl9zY29sYWlyZVwiLCBlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZVxuICAgIHguRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUpO1xuICAgIChcInLDqW11bmVyYXRpb25fbWVuc3VlbGxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5FbmZhbnQucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSk7XG4gICAgKFwiZGF0ZV9kZV9uYWlzc2FuY2VcIiwgZW1iZWRfZGF0ZVxuICAgIHguRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKTtcbiAgICAoXCJwcmlzZV9lbl9jaGFyZ2VcIiwgZW1iZWRfcHJpc2VfZW5fY2hhcmdlXG4gICAgeC5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKTtcbiAgICAoXCJhX2TDqWrDoF9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50LmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpO1xuICAgIChcImLDqW7DqWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudC5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpXSlcblxuXG5tb2R1bGUgRW5mYW50TGVQbHVzQWdlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtsZV9wbHVzX2FnZTogRW5mYW50LnR9XG5lbmRcbmxldCBlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2UgKHg6IEVuZmFudExlUGx1c0FnZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiRW5mYW50TGVQbHVzw4Jnw6lcIl0sXG4gIFsoXCJsZV9wbHVzX8OiZ8OpXCIsIGVtYmVkX2VuZmFudCB4LkVuZmFudExlUGx1c0FnZS5sZV9wbHVzX2FnZSldKVxuXG5cbm1vZHVsZSBQcmVzdGF0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRyb2l0X291dmVydDogRW5mYW50LnQgLT4gYm9vbDtcbiAgICBjb25kaXRpb25zX2hvcnNfYWdlOiBFbmZhbnQudCAtPiBib29sO1xuICAgIGFnZV9sNTEyXzNfMjogZHVyYXRpb247XG4gICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzE6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoeDogUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIFsoXCJkcm9pdF9vdXZlcnRcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5QcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZHJvaXRfb3V2ZXJ0KTtcbiAgICAoXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LlByZXN0YXRpb25zRmFtaWxpYWxlcy5jb25kaXRpb25zX2hvcnNfYWdlKTtcbiAgICAoXCLDomdlX2w1MTJfM18yXCIsIGVtYmVkX2R1cmF0aW9uXG4gICAgeC5QcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYWdlX2w1MTJfM18yKTtcbiAgICAoXCJyw6lnaW1lX291dHJlX21lcl9sNzUxXzFcIiwgZW1iZWRfYm9vbFxuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xKV0pXG5cblxubW9kdWxlIFByZXN0YXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIHByZXN0YXRpb25fY291cmFudGVfaW46IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudDtcbiAgICByZXNpZGVuY2VfaW46IENvbGxlY3Rpdml0ZS50XG4gIH1cbmVuZFxubGV0IGVtYmVkX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gKHg6IFByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LlByZXN0YXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInByZXN0YXRpb25fY291cmFudGVfaW5cIiwgZW1iZWRfZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgeC5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luKTtcbiAgICAoXCJyw6lzaWRlbmNlX2luXCIsIGVtYmVkX2NvbGxlY3Rpdml0ZVxuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luKV0pXG5cblxubW9kdWxlIEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gdW5pdFxuZW5kXG5sZXQgZW1iZWRfYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbiAoXzogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPSBVbml0XG5cblxubW9kdWxlIEVuZmFudExlUGx1c0FnZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtlbmZhbnRzX2luOiBFbmZhbnQudCBhcnJheX1cbmVuZFxubGV0IGVtYmVkX2VuZmFudF9sZV9wbHVzX2FnZV9pbiAoeDogRW5mYW50TGVQbHVzQWdlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkVuZmFudExlUGx1c8OCZ8OpX2luXCJdLFxuICBbKFwiZW5mYW50c19pblwiLCBlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSB4LkVuZmFudExlUGx1c0FnZUluLmVuZmFudHNfaW4pXSlcblxuXG5tb2R1bGUgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luOiBib29sO1xuICAgIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW46IGJvb2w7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfaW46IG1vbmV5O1xuICAgIHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBlbmZhbnRzX2FfY2hhcmdlX2luOiBFbmZhbnQudCBhcnJheTtcbiAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbjogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luICh4OiBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwicGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4pO1xuICAgIChcInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNzb3VyY2VzX21lbmFnZV9pbik7XG4gICAgKFwicsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGVcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJlbmZhbnRzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KVxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZW5mYW50c19hX2NoYXJnZV9pbik7XG4gICAgKFwiYXZhaXRfZW5mYW50X8OgX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luKV0pXG5cblxubW9kdWxlIFNtaWNJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTsgcmVzaWRlbmNlX2luOiBDb2xsZWN0aXZpdGUudH1cbmVuZFxubGV0IGVtYmVkX3NtaWNfaW4gKHg6IFNtaWNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiU21pY19pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguU21pY0luLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInLDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlIHguU21pY0luLnJlc2lkZW5jZV9pbildKVxuXG5cbm1vZHVsZSBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfY291cmFudGVfaW46IGRhdGV9XG5lbmRcbmxldCBlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luICh4OiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKV0pXG5cblxubW9kdWxlIEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBpX2RhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgaV9lbmZhbnRzX2luOiBFbmZhbnRFbnRyZWUudCBhcnJheTtcbiAgICBpX3Jlc3NvdXJjZXNfbWVuYWdlX2luOiBtb25leTtcbiAgICBpX3Jlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnQ7XG4gICAgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbjogYm9vbDtcbiAgICBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW46IGJvb2w7XG4gICAgaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbjogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9pbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc19pblwiXSxcbiAgWyhcImlfZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2RhdGVfY291cmFudGVfaW4pO1xuICAgIChcImlfZW5mYW50c19pblwiLCBlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50X2VudHJlZSlcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfZW5mYW50c19pbik7XG4gICAgKFwiaV9yZXNzb3VyY2VzX23DqW5hZ2VfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcmVzc291cmNlc19tZW5hZ2VfaW4pO1xuICAgIChcImlfcsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGVcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcmVzaWRlbmNlX2luKTtcbiAgICAoXCJpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4pO1xuICAgIChcImlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4pO1xuICAgIChcImlfYXZhaXRfZW5mYW50X8OgX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW4pXSlcblxuXG5cblxubGV0IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDggKGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW46IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4SW4udCkgOiBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOC50ID1cbiAgbGV0IGFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM186IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhcIjsgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiXVxuICAgIChlbWJlZF9kdXJhdGlvbikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NzY7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkdXJhdGlvbl9vZl9udW1iZXJzICgxNikgKDApICgwKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03NjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIHtBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOC5hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzMgPVxuICAgICBhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNffVxuXG5sZXQgZW5mYW50X2xlX3BsdXNfYWdlIChlbmZhbnRfbGVfcGx1c19hZ2VfaW46IEVuZmFudExlUGx1c0FnZUluLnQpIDogRW5mYW50TGVQbHVzQWdlLnQgPVxuICBsZXQgZW5mYW50c186IEVuZmFudC50IGFycmF5ID0gZW5mYW50X2xlX3BsdXNfYWdlX2luLkVuZmFudExlUGx1c0FnZUluLmVuZmFudHNfaW4gaW5cbiAgbGV0IGxlX3BsdXNfYWdlXzogRW5mYW50LnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJFbmZhbnRMZVBsdXPDgmfDqVwiOyBcImxlX3BsdXNfw6Jnw6lcIl0gKGVtYmVkX2VuZmFudCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9ODA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19yZWR1Y2VcbiAgICAgICAgICAgICAgKGZ1biAocG90ZW50aWVsX3BsdXNfYWdlXzFfOiBFbmZhbnQudClcbiAgICAgICAgICAgICAgICAgKHBvdGVudGllbF9wbHVzX2FnZV8yXzogRW5mYW50LnQpIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAobGV0IHBvdGVudGllbF9wbHVzX2FnZV8gOiBFbmZhbnQudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWVsX3BsdXNfYWdlXzFfXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAocG90ZW50aWVsX3BsdXNfYWdlXy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpKVxuICAgICAgICAgICAgICAgICAgICAgIChsZXQgcG90ZW50aWVsX3BsdXNfYWdlXyA6IEVuZmFudC50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBwb3RlbnRpZWxfcGx1c19hZ2VfMl9cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIChwb3RlbnRpZWxfcGx1c19hZ2VfLkVuZmFudC5kYXRlX2RlX25haXNzYW5jZSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgcG90ZW50aWVsX3BsdXNfYWdlXzFfIGVsc2UgcG90ZW50aWVsX3BsdXNfYWdlXzJfKVxuICAgICAgICAgICAgICAoe0VuZmFudC5pZGVudGlmaWFudCA9IChpbnRlZ2VyX29mX3N0cmluZyBcIi0xXCIpO1xuICAgICAgICAgICAgICAgICAgRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgKCkpO1xuICAgICAgICAgICAgICAgICAgRW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKTtcbiAgICAgICAgICAgICAgICAgIEVuZmFudC5kYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDI5OTkpICgxMikgKDMxKSk7XG4gICAgICAgICAgICAgICAgICBFbmZhbnQucHJpc2VfZW5fY2hhcmdlID1cbiAgICAgICAgICAgICAgICAgICAgKFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlICgpKTtcbiAgICAgICAgICAgICAgICAgIEVuZmFudC5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgICAgICAgICAgICAgICAgICAgZmFsc2U7XG4gICAgICAgICAgICAgICAgICBFbmZhbnQuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgZmFsc2V9KSBlbmZhbnRzXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT04MDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIHtFbmZhbnRMZVBsdXNBZ2UubGVfcGx1c19hZ2UgPSBsZV9wbHVzX2FnZV99XG5cbmxldCBzbWljIChzbWljX2luOiBTbWljSW4udCkgOiBTbWljLnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBzbWljX2luLlNtaWNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IHNtaWNfaW4uU21pY0luLnJlc2lkZW5jZV9pbiBpblxuICBsZXQgYnJ1dF9ob3JhaXJlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJTbWljXCI7IFwiYnJ1dF9ob3JhaXJlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMTgtMTE3MyBkdSAxOSBkw6ljZW1icmUgMjAxOCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMDNcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMTgtMTE3MyBkdSAxOSBkw6ljZW1icmUgMjAxOCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NTdcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03NzsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMTktMTM4NyBkdSAxOCBkw6ljZW1icmUgMjAxOSBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMTVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04ODsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMTktMTM4NyBkdSAxOCBkw6ljZW1icmUgMjAxOSBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NjZcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMC0xNTk4IGR1IDE2IGTDqWNlbWJyZSAyMDIwIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAyNVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjc7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIwLTE1OTggZHUgMTYgZMOpY2VtYnJlIDIwMjAgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzc0XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjEtMTc0MSBkdSAyMiBkw6ljZW1icmUgMjAyMSBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNCkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA1N1wiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjc7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIxLTE3NDEgZHUgMjIgZMOpY2VtYnJlIDIwMjEgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3OThcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk1OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTkgYXZyaWwgMjAyMiByZWxhdGlmIGF1IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDUpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA4NVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDY7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAxOSBhdnJpbCAyMDIyIHJlbGF0aWYgYXUgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODE5XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzNDsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI5IGp1aWxsZXQgMjAyMiByZWxhdGlmIGF1IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDgpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjExMDdcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI0Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjQ1OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjkganVpbGxldCAyMDIyIHJlbGF0aWYgYXUgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoOCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgzNVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzQ7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIyLTE2MDggZHUgMjIgZMOpY2VtYnJlIDIwMjIgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMTI3XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjItMTYwOCBkdSAyMiBkw6ljZW1icmUgMjAyMiBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NTFcIikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiOyBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19KSkpKSBpblxuICB7U21pYy5icnV0X2hvcmFpcmUgPSBicnV0X2hvcmFpcmVffVxuXG5sZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbjogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgbW9udGFudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBtaW5pc3TDqXJpZWxsZSBOwrBEU1MvU0QyQi8yMDE5LzY1IGR1IDI1IG1hcnMgMjAxOSByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAxOSBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoNCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoNCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEzMTZcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbm8gRFNTL1NEMkIvMjAyMC8zMyBkdSAxOCBmw6l2cmllciAyMDIwIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIwIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDQpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDQwXCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsERTUy8yQi8yMDIxLzY1IGR1IDE5IG1hcnMgMjAyMSByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAyMSBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgZGFucyBsZSBkw6lwYXJ0ZW1lbnQgZGUgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ4MVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3TDqXJpZWxsZSBuwrBEU1MvMkIvMjAyMi84MiBkdSAyOCBtYXJzIDIwMjIgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGF2cmlsIDIwMjIgZGVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIGxhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IGRhbnMgbGUgZMOpcGFydGVtZW50IGRlIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoNCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIyMjhcIikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIHtCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnQgPSBtb250YW50X31cblxubGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXMgKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW46IFByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQpIDogUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLlByZXN0YXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IHByZXN0YXRpb25fY291cmFudGVfOiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPSBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLlByZXN0YXRpb25zRmFtaWxpYWxlc0luLnByZXN0YXRpb25fY291cmFudGVfaW4gaW5cbiAgbGV0IHJlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gaW5cbiAgbGV0IGFnZV9sNTEyXzNfMl86IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiw6JnZV9sNTEyXzNfMlwiXSAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYwOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjE7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MTItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZHVyYXRpb25fb2ZfbnVtYmVycyAoMjApICgwKSAoMCkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjA7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgc21pY19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pYy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Njk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTY5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTY5OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Njk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkgaW5cbiAgbGV0IHNtaWNfZG90X3Jlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWMucsOpc2lkZW5jZVwiXSAoZW1iZWRfY29sbGVjdGl2aXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Njg7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTY4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTY4OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc2lkZW5jZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02ODsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogU21pYy50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWNcIjsgXCJTbWljXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJzbWljXCI7IFwiU21pY1wiXSBzbWljKVxuICAgICh7U21pY0luLmRhdGVfY291cmFudGVfaW4gPSBzbWljX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgU21pY0luLnJlc2lkZW5jZV9pbiA9IHNtaWNfZG90X3Jlc2lkZW5jZV99KSkpIGluXG4gIGxldCBzbWljX2RvdF9icnV0X2hvcmFpcmVfOiBtb25leSA9IHJlc3VsdF8uU21pYy5icnV0X2hvcmFpcmUgaW5cbiAgbGV0IHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInLDqWdpbWVfb3V0cmVfbWVyX2w3NTFfMVwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2MjsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzUxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gKCkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9sNTEyXzNfMl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwicGxhZm9uZF9sNTEyXzNfMlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU5OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTk7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE1OyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI3NTUtMC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzFfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgc21pY19kb3RfYnJ1dF9ob3JhaXJlX1xuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNTVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTY5LlwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMxOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTEyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgc21pY19kb3RfYnJ1dF9ob3JhaXJlX1xuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjU1XCIpKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxNjkuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU5OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbnNfaG9yc19hZ2VfOiBFbmZhbnQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU4OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MTItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHBhcmFtXy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHBhcmFtXy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9sNTEyXzNfMl8pKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01ODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01ODsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01ODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01ODsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfOiBFbmZhbnQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Nzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2F1dHJlc19jb2Rlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFLDqGdsZXMgZGUgbm9uLWN1bXVsXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogUHJpbmNpcGVzIGfDqW7DqXJhdXhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudC5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Nzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Nzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MjsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MTItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudC5yZW11bmVyYXRpb25fbWVuc3VlbGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbDUxMl8zXzJfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9sNTEyXzNfMl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTA7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIHtQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZHJvaXRfb3V2ZXJ0ID0gZHJvaXRfb3V2ZXJ0XztcbiAgICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmNvbmRpdGlvbnNfaG9yc19hZ2UgPSBjb25kaXRpb25zX2hvcnNfYWdlXztcbiAgICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZV9sNTEyXzNfMiA9IGFnZV9sNTEyXzNfMl87XG4gICAgIFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSA9IHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX31cblxubGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXMgKGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW46IEFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICBsZXQgcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfOiBib29sID0gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbiBpblxuICBsZXQgcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfX2lfOiBib29sID0gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV86IG1vbmV5ID0gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNzb3VyY2VzX21lbmFnZV9pbiBpblxuICBsZXQgcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGVuZmFudHNfYV9jaGFyZ2VfOiBFbmZhbnQudCBhcnJheSA9IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZW5mYW50c19hX2NoYXJnZV9pbiBpblxuICBsZXQgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfOiBib29sID0gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbiBpblxuICBsZXQgcHJpc2VfZW5fY29tcHRlXzogRW5mYW50LnQgLT4gUHJpc2VFbkNvbXB0ZS50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxNTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBQcmlzZUVuQ29tcHRlLlBhcnRhZ2VlICgpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI1NTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBQcmlzZUVuQ29tcHRlLlplcm8gKCkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk3OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjY1OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSAoKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwNTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwYXJhbV8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBQcmlzZUVuQ29tcHRlLkNvbXBsZXRlICgpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBQcmlzZUVuQ29tcHRlLkNvbXBsZXRlICgpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCB2ZXJzZW1lbnRfOiBFbmZhbnQudCAtPiBWZXJzZW1lbnRBbGxvY2F0aW9ucy50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwidmVyc2VtZW50XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2MDsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLkFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzE7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTk7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWwgKCkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDk7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLk5vcm1hbCAoKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODk7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHBhcmFtXy5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gVmVyc2VtZW50QWxsb2NhdGlvbnMuTm9ybWFsICgpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBub21icmVfZW5mYW50c19sNTIxXzFfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibm9tYnJlX2VuZmFudHNfbDUyMV8xXCJdIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNDU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQ1OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI5NDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE0NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDU7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX2VuZmFudHNfYWxpbmVhXzJfbDUyMV8zXzogaW50ZWdlciA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm5vbWJyZV9lbmZhbnRzX2FsaW7DqWFfMl9sNTIxXzNcIl1cbiAgICAoZW1iZWRfaW50ZWdlcikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0NzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTY0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTY0OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE0Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcmVzdWx0XzogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDgudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJ2ZXJzaW9uX2F2cmlsXzIwMDhcIjtcbiAgICAgIFwiQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInZlcnNpb25fYXZyaWxfMjAwOFwiO1xuICAgICAgXCJBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOFwiXSBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4KVxuICAgICgoKSkpKSBpblxuICBsZXQgdmVyc2lvbl9hdnJpbF8yMDA4X2RvdF9hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfOiBkdXJhdGlvbiA9IHJlc3VsdF8uQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDguYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zIGluXG4gIGxldCBibWFmX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJibWFmLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTU5OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTU5OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTU5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1OTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImJtYWZcIjsgXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdXG4gICAgKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImJtYWZcIjsgXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdXG4gICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAoe0Jhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgYm1hZl9kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBibWFmX2RvdF9tb250YW50XzogbW9uZXkgPSByZXN1bHRfLkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMubW9udGFudCBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE1NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTU7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTU7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTU1OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmVzdGF0aW9uX2NvdXJhbnRlXzogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXMucHJlc3RhdGlvbl9jb3VyYW50ZVwiXVxuICAgICAgKGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE1Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTM7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTM7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbnNGYW1pbGlhbGVzICgpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTUzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1MzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5yw6lzaWRlbmNlXCJdXG4gICAgICAoZW1iZWRfY29sbGVjdGl2aXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1NzsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1NzsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNpZGVuY2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTU3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1NzsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdIHByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgKHtQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIFByZXN0YXRpb25zRmFtaWxpYWxlc0luLnByZXN0YXRpb25fY291cmFudGVfaW4gPVxuICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3ByZXN0YXRpb25fY291cmFudGVfO1xuICAgICAgICBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gPVxuICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc2lkZW5jZV99KSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfOiBFbmZhbnQudCAtPiBib29sID0gcmVzdWx0Xy5QcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZHJvaXRfb3V2ZXJ0IGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9jb25kaXRpb25zX2hvcnNfYWdlXzogRW5mYW50LnQgLT4gYm9vbCA9IHJlc3VsdF8uUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmNvbmRpdGlvbnNfaG9yc19hZ2UgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2FnZV9sNTEyXzNfMl86IGR1cmF0aW9uID0gcmVzdWx0Xy5QcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYWdlX2w1MTJfM18yIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV86IGJvb2wgPSByZXN1bHRfLlByZXN0YXRpb25zRmFtaWxpYWxlcy5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSBpblxuICBsZXQgZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9lbmZhbnRzXzogRW5mYW50LnQgYXJyYXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZW5mYW50X2xlX3BsdXNfw6Jnw6kuZW5mYW50c1wiXVxuICAgICAgKGVtYmVkX2FycmF5IChlbWJlZF9lbmZhbnQpKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZW5mYW50c19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEVuZmFudExlUGx1c0FnZS50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImVuZmFudF9sZV9wbHVzX8OiZ8OpXCI7IFwiRW5mYW50TGVQbHVzw4Jnw6lcIl1cbiAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZW5mYW50X2xlX3BsdXNfw6Jnw6lcIjsgXCJFbmZhbnRMZVBsdXPDgmfDqVwiXVxuICAgIGVuZmFudF9sZV9wbHVzX2FnZSlcbiAgICAoe0VuZmFudExlUGx1c0FnZUluLmVuZmFudHNfaW4gPSBlbmZhbnRfbGVfcGx1c19hZ2VfZG90X2VuZmFudHNffSkpKSBpblxuICBsZXQgZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9sZV9wbHVzX2FnZV86IEVuZmFudC50ID0gcmVzdWx0Xy5FbmZhbnRMZVBsdXNBZ2UubGVfcGx1c19hZ2UgaW5cbiAgbGV0IGFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM186IEVuZmFudC50IC0+IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIl0gKHVuZW1iZWRkYWJsZSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0NjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Mzsgc3RhcnRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1ciAocGFyYW1fLkVuZmFudC5kYXRlX2RlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTEpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDgpICg0KSAoMzApKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9hdnJpbF8yMDA4X2RvdF9hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDE0KSAoMCkgKDApKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0NjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNDY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQ2OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXzogRW5mYW50LnQgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiZW5mYW50c1/DoF9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF9lbmZhbnQpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTc1OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19maWx0ZXJcbiAgICAgICAgICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydFwiXVxuICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfKVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpIGVuZmFudHNfYV9jaGFyZ2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk1OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGVzdF9lbmZhbnRfbGVfcGx1c19hZ2VfOiBFbmZhbnQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZXN0X2VuZmFudF9sZV9wbHVzX8OiZ8OpXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQ4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gKFxuICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICBvX2VxIGVuZmFudF9sZV9wbHVzX2FnZV9kb3RfbGVfcGx1c19hZ2VfIHBhcmFtXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTE0ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTQ4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX19pX2lfZDUyMV8zXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwbGFmb25kX0lJX2Q1MjFfM1wiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE1MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTA7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDaXJjdWxhaXJlIGludGVybWluaXN0w6lyaWVsbGUgTsKwIERTUy9TRDJCLzIwMTcvMzUyIGR1IDIyIGTDqWNlbWJyZSAyMDE3IHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBqYW52aWVyIDIwMTggZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXMgZOKAmWF0dHJpYnV0aW9uIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBsYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3ODc3MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NjI4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MzsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsCBEU1MvU0QyQi8yMDE4LzI3OSBkdSAxNyBkw6ljZW1icmUgMjAxOCByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE5IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzk1NTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTY4NDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MDsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTY7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3RlcmllbGxlIG5vIERTUy9TRDJCLzIwMTkvMjYxIGR1IDE4IGTDqWNlbWJyZSAyMDE5IHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBqYW52aWVyIDIwMjAgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXMgZOKAmWF0dHJpYnV0aW9uIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MDgzMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1Nzc1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTMyOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAxNCBkw6ljZW1icmUgMjAyMCByZWxhdGlmIGF1IG1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXMgZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgYXV4IHRyYW5jaGVzIGR1IGJhcsOobWUgYXBwbGljYWJsZSBhdSByZWNvdXZyZW1lbnQgZGVzIGluZHVzIGV0IMOgIGxhIHNhaXNpZSBkZXMgcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgxNTU4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4MjcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMxNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3ODMwMDAwXCIpXG4gICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTU5NTAwXCIpXG4gICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE1MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTA7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9faV9kNTIxXzNfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInBsYWZvbmRfSV9kNTIxXzNcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQ5OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0OTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2lyY3VsYWlyZSBpbnRlcm1pbmlzdMOpcmllbGxlIE7CsCBEU1MvU0QyQi8yMDE3LzM1MiBkdSAyMiBkw6ljZW1icmUgMjAxNyByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE4IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYyODYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTYyODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTY7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3TDqXJpZWxsZSBuwrAgRFNTL1NEMkIvMjAxOC8yNzkgZHUgMTcgZMOpY2VtYnJlIDIwMTggcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGphbnZpZXIgMjAxOSBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlcyBk4oCZYXR0cmlidXRpb24gZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIGxhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2ODQ5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU2ODQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDk7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg5OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0ZXJpZWxsZSBubyBEU1MvU0QyQi8yMDE5LzI2MSBkdSAxOCBkw6ljZW1icmUgMjAxOSByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDIwIGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTc3NTkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTc3NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTQgZMOpY2VtYnJlIDIwMjAgcmVsYXRpZiBhdSBtb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IGF1eCB0cmFuY2hlcyBkdSBiYXLDqG1lIGFwcGxpY2FibGUgYXUgcmVjb3V2cmVtZW50IGRlcyBpbmR1cyBldCDDoCBsYSBzYWlzaWUgZGVzIHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1ODI3OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1ODI3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMwNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMDQ7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTU5NTAwMFwiKVxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU1OTUwMFwiKVxuICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQ5OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGRyb2l0X291dmVydF9jb21wbGVtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydF9jb21wbMOpbWVudFwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTMyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzMjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzI7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTMyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzI7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mjk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDMwOyBlbmRfY29sdW1uPTcxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDc1NS0xMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTMyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzMjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTMyOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGRyb2l0X291dmVydF9mb3JmYWl0YWlyZV86IEVuZmFudC50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyMzsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyNDsgZW5kX2NvbHVtbj03MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDc1NS0xMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IERpc3Bvc2l0aW9ucyBwYXJ0aWN1bGnDqHJlcyDDoCBsYSBHdWFkZWxvdXBlLCDDoCBsYSBHdXlhbmUsIMOgIGxhIE1hcnRpbmlxdWUsIMOgIExhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSBldCDDoCBTYWludC1NYXJ0aW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludCAob19sZW5ndGggZW5mYW50c19hX2NoYXJnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX2VuZmFudHNfYWxpbmVhXzJfbDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kdXJfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2FnZV9sNTEyXzNfMl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDApICgwKSAoMzY1KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnQuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2NvbmRpdGlvbnNfaG9yc19hZ2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIHBhcmFtXykpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTEyMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTIwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2luaXRpYWxfYmFzZV9xdWF0cmllbWVfZW5mYW50X2V0X3BsdXNfbWF5b3R0ZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICBcIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3F1YXRyacOobWVfZW5mYW50X2V0X3BsdXNfbWF5b3R0ZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE5NTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDQ2M1wiKSlcbiAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzaWVtZV9lbmZhbnRfbWF5b3R0ZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICBcIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzacOobWVfZW5mYW50X21heW90dGVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzMTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA0NjNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzOTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA1MzlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0NzsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA2MTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ1NTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA2OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDYzOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDc2NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDcxOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE2KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg0MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Nzk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDc5OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDkxOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDg3OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTA4OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00OTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk1OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTI1OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01MDM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTAzOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTQzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTg2OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50XyAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjE2XCIpKVxuICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX3RvdGFsX2VuZmFudHNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibm9tYnJlX3RvdGFsX2VuZmFudHNcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTA7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYwOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAob19sZW5ndGggZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG5vbWJyZV9tb3llbl9lbmZhbnRzXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm5vbWJyZV9tb3llbl9lbmZhbnRzXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0MjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19yZWR1Y2VcbiAgICAgICAgICAgICAgKGZ1biAoc3VtMV86IGRlY2ltYWwpIChzdW0yXzogZGVjaW1hbCkgLT5cbiAgICAgICAgICAgICAgICAgb19hZGRfcmF0X3JhdCBzdW0xXyBzdW0yXykgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIilcbiAgICAgICAgICAgICAgKG9fbWFwXG4gICAgICAgICAgICAgICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfcHJpc2VfZW5fY29tcHRlKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgcHJpc2VfZW5fY29tcHRlXykgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuQ29tcGxldGUgXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuUGFydGFnZWUgXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjVcIilcbiAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ29tcHRlLlplcm8gXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSlcbiAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9iYXNlX3ByZW1pZXJfZW5mYW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfYmFzZV9wcmVtaWVyX2VuZmFudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI1MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI1MjsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjE0NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNjE7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMzkzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3MDsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEzKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEzMzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjc5OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTI3OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yODg7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMjJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE2KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTE2M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDY7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMTA1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA5NzZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzIzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzI0OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg0N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzM7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNzE3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0MTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTcyOFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjc7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDU4OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY2OyBlbmRfY29sdW1uPTcxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDU4OFwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM2Mjsgc3RhcnRfY29sdW1uPTI5OyBlbmRfbGluZT0zNjI7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGRyb2l0X291dmVydF9iYXNlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydF9iYXNlXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAzOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDM7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTk7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1OTsgZW5kX2NvbHVtbj03MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDEwOyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzU1LTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDM7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbl86IEVuZmFudC50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyNTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE4OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9lbmZhbnRzX2FsaW5lYV8yX2w1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfZHVyYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX2VuZmFudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtXykpKSkpKSkpIGRhdGVfY291cmFudGVfKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDI7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3QgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZXN0X2VuZmFudF9sZV9wbHVzX8OiZ8OpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlc3RfZW5mYW50X2xlX3BsdXNfw6Jnw6lcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlc3RfZW5mYW50X2xlX3BsdXNfw6Jnw6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlc3RfZW5mYW50X2xlX3BsdXNfYWdlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVzdF9lbmZhbnRfbGVfcGx1c1/DomfDqVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfZHVyYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXykpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyNTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGNvbXBsZW1lbnRfZGVncmVzc2lmXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJjb21wbMOpbWVudF9kw6lncmVzc2lmXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjY7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcGxhZm9uZF9faV9kNTIxXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2Q1MjFfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3NTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9pX2Q1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBsYWZvbmRfX2lfaV9kNTIxXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2lfZDUyMV8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4MTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4MTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfcGFyX2VuZmFudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lfZm9yZmFpdGFpcmVfcGFyX2VuZmFudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTIxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjE7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjIxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjE7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfZDUyMV8zXykpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjAyMzRcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjE7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzY7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTAxMTdcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjE7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNDk7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV8gcGxhZm9uZF9faV9pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA1MDU5XCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjE7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lX2VuZmFudF9ldF9wbHVzXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpw6htZV9lbmZhbnRfZXRfcGx1c1wiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfZDUyMV8zXykpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQxXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODQ7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIwNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV8gcGxhZm9uZF9faV9pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMDI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfZGV1eGllbWVfZW5mYW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfYmFzZV9kZXV4acOobWVfZW5mYW50XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzUwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzUwOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIzMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTg7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjM3OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjY7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjQzN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzQ7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjQ5NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODI7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjU1NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTA7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjYxM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTg7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjY3MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDY7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjgwNFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTQ7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjkzNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjI7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMzA2OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTc3OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjMyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlXyBwbGFmb25kX19pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMzJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03OTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Nzk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2lfZDUyMV8zXykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcmFwcG9ydF9lbmZhbnRzX3RvdGFsX21veWVuXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInJhcHBvcnRfZW5mYW50c190b3RhbF9tb3llblwiXSAoZW1iZWRfZGVjaW1hbClcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA4OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIChvX2VxIG5vbWJyZV90b3RhbF9lbmZhbnRzXyAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkgdGhlblxuICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0IG5vbWJyZV9tb3llbl9lbmZhbnRzXyBub21icmVfdG90YWxfZW5mYW50c18pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDg7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX21ldHJvcG9sZV9tYWpvcmF0aW9uXzogRW5mYW50LnQgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2Q1MjFfM18pICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIHBhcmFtXykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjE2XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2Q1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9pX2Q1MjFfM18pKSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb2l0X291dmVydF9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBwYXJhbV8pKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wOFwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzODsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9pX2Q1MjFfM18pICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIHBhcmFtXykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA0XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIHBhcmFtXykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTEyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTI2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X3ZlcnPDqV9mb3JmYWl0YWlyZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEyMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTk5OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfcGFyX2VuZmFudF9cbiAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9mb3JmYWl0YWlyZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSkgZW5mYW50c19hX2NoYXJnZV8pKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTIyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2luaXRpYWxfYmFzZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX2Jhc2VcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTc7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENzU1LTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfYmFzZV9wcmVtaWVyX2VuZmFudF8pKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTE7IHN0YXJ0X2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfYmFzZV9wcmVtaWVyX2VuZmFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9iYXNlX2RldXhpZW1lX2VuZmFudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfYmFzZV90cm9pc2llbWVfZW5mYW50X21heW90dGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9pbml0aWFsX2Jhc2VfcXVhdHJpZW1lX2VuZmFudF9ldF9wbHVzX21heW90dGVfKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2FkZF9tb25fbW9uIG1vbnRhbnRfaW5pdGlhbF9iYXNlX2RldXhpZW1lX2VuZmFudF9cbiAgICAgICAgICAgICAgbW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lX2VuZmFudF9ldF9wbHVzXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9tYWpvcmF0aW9uXzogRW5mYW50LnQgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvblwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyNzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI3OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzgzOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENzU1LTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb2l0X291dmVydF9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTEpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTYpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMzY5XCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjc7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTI7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTYpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA1NjdcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9pbml0aWFsX23DqXRyb3BvbGVfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9pbml0aWFsX23DqXRyb3BvbGVfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9tZXRyb3BvbGVfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyNzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI3OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyX2ZvcmZhaXRhaXJlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X3ZlcnPDqV9jb21wbMOpbWVudF9wb3VyX2ZvcmZhaXRhaXJlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM2OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzNjsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzNjsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzA7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2Q1MjFfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2Q1MjFfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzY7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjgwOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2lfZDUyMV8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBsYWZvbmRfX2lfaV9kNTIxXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI4Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yODY7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTM2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzNjsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuZWVfYmFzZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybsOpZV9iYXNlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTExOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgbW9udGFudF9pbml0aWFsX2Jhc2VfIHJhcHBvcnRfZW5mYW50c190b3RhbF9tb3llbl8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTExOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExMTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuZWVfbWFqb3JhdGlvbl86IEVuZmFudC50IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybsOpZV9tYWpvcmF0aW9uXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjg7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSAoXG4gICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg2OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfbWFqb3JhdGlvbl8pICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfZW5mYW50KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgKG1hdGNoICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9wcmlzZV9lbl9jb21wdGUpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICBwcmlzZV9lbl9jb21wdGVfKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ29tcHRlLkNvbXBsZXRlIF8gLT4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ29tcHRlLlBhcnRhZ2VlIF8gLT4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41XCIpXG4gICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNvbXB0ZS5aZXJvIF8gLT4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI4OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfYmFzZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lfYmFzZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTI7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIGRyb2l0X291dmVydF9iYXNlXyB0aGVuIG1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9iYXNlX1xuICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTI7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF92ZXJzZV9tYWpvcmF0aW9uXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X3ZlcnPDqV9tYWpvcmF0aW9uXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTI5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyOTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgZHJvaXRfb3V2ZXJ0X2Jhc2VfIHRoZW5cbiAgICAgICAgICAgICAgKG9fcmVkdWNlXG4gICAgICAgICAgICAgICAgIChmdW4gKHN1bTFfOiBtb25leSkgKHN1bTJfOiBtb25leSkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiBzdW0xXyBzdW0yXykgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgICAgKG9fbWFwXG4gICAgICAgICAgICAgICAgICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybsOpZV9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuw6llX21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybsOpZV9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm7DqWVfbWFqb3JhdGlvblwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpIGVuZmFudHNfYV9jaGFyZ2VfKSkgZWxzZVxuICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI5OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfYmFzZV9jb21wbGVtZW50X3BvdXJfYmFzZV9ldF9tYWpvcmF0aW9uXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwibW9udGFudF9iYXNlX2NvbXBsw6ltZW50X3BvdXJfYmFzZV9ldF9tYWpvcmF0aW9uXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTMzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzMzsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE4OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xODk7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfbW9uX21vbiBtb250YW50X3ZlcnNlX2Jhc2VfIG1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbl8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTMzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzMzsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlX2NvbXBsZW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25fOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgXCJtb250YW50X3ZlcnPDqV9jb21wbMOpbWVudF9wb3VyX2Jhc2VfZXRfbWFqb3JhdGlvblwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEzNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTgzOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiBkcm9pdF9vdXZlcnRfY29tcGxlbWVudF8gdGhlblxuICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbXBsw6ltZW50X2TDqWdyZXNzaWZcIl1cbiAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiY29tcGzDqW1lbnRfZMOpZ3Jlc3NpZlwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbXBsw6ltZW50X2TDqWdyZXNzaWZcIl1cbiAgICAgICAgICAgICAgICBjb21wbGVtZW50X2RlZ3Jlc3NpZl8pICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJjb21wbMOpbWVudF9kw6lncmVzc2lmXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgbW9udGFudF9iYXNlX2NvbXBsZW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25fKSkpKSkpKSBlbHNlXG4gICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEzNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF92ZXJzZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTAwOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NTsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiBkcm9pdF9vdXZlcnRfYmFzZV8gdGhlblxuICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBtb250YW50X3ZlcnNlX2Jhc2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2NvbXBsZW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2NvbXBsZW1lbnRfcG91cl9mb3JmYWl0YWlyZV8pIGVsc2VcbiAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwMDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIChvX29yIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfX2lfKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzMTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM1OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSkgaW5cbiAge0FsbG9jYXRpb25zRmFtaWxpYWxlcy5tb250YW50X3ZlcnNlID0gbW9udGFudF92ZXJzZV99XG5cbmxldCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW46IEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICBsZXQgaV9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgaV9lbmZhbnRzXzogRW5mYW50RW50cmVlLnQgYXJyYXkgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2VuZmFudHNfaW4gaW5cbiAgbGV0IGlfcmVzc291cmNlc19tZW5hZ2VfOiBtb25leSA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcmVzc291cmNlc19tZW5hZ2VfaW4gaW5cbiAgbGV0IGlfcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3Jlc2lkZW5jZV9pbiBpblxuICBsZXQgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF86IGJvb2wgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luIGluXG4gIGxldCBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX19pXzogYm9vbCA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbiBpblxuICBsZXQgaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl86IGJvb2wgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luIGluXG4gIGxldCBlbmZhbnRzX2FfY2hhcmdlXzogRW5mYW50LnQgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJlbmZhbnRzX8OgX2NoYXJnZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzY7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTMxLTFcIjsgXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX21hcFxuICAgICAgICAgICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnRFbnRyZWUudCkgLT5cbiAgICAgICAgICAgICAgICAge0VuZmFudC5pZGVudGlmaWFudCA9IChlbmZhbnRfLkVuZmFudEVudHJlZS5kX2lkZW50aWZpYW50KTtcbiAgICAgICAgICAgICAgICAgICAgRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDMpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlfZGF0ZV9jb3VyYW50ZV8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50ICgpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRFbnRyZWUuZF9kYXRlX2RlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTYpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlfZGF0ZV9jb3VyYW50ZV8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgKCkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzICgpKSkpO1xuICAgICAgICAgICAgICAgICAgICBFbmZhbnQucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSk7XG4gICAgICAgICAgICAgICAgICAgIEVuZmFudC5kYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgICAgICAgICAgICAgICAgICBFbmZhbnQucHJpc2VfZW5fY2hhcmdlID1cbiAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRFbnRyZWUuZF9wcmlzZV9lbl9jaGFyZ2UpO1xuICAgICAgICAgICAgICAgICAgICBFbmZhbnQuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyk7XG4gICAgICAgICAgICAgICAgICAgIEVuZmFudC5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEVudHJlZS5kX2JlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCl9KVxuICAgICAgICAgICAgICBpX2VuZmFudHNfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc2OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgIFwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudFwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05Mjsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTkyOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Mjsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTkyOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Mzsgc3RhcnRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkzOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTkyOyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9OTI7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTI7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT05MjsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19KSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX19pXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTY7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT05NjsgZW5kX2NvbHVtbj04MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTY7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT05NjsgZW5kX2NvbHVtbj04MDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj03MjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9faV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05Njsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTk2OyBlbmRfY29sdW1uPTgwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk2OyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9OTY7IGVuZF9jb2x1bW49ODA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSkpIGluXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNzb3VyY2VzX21lbmFnZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMucmVzc291cmNlc19tw6luYWdlXCJdIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg4OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODg7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGlfcmVzc291cmNlc19tZW5hZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODg7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSkpIGluXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLnLDqXNpZGVuY2VcIl1cbiAgICAgIChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04OTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTg5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBpX3Jlc2lkZW5jZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04OTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19KSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg2OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODY7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGlfZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04NjsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19KSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2VuZmFudHNfYV9jaGFyZ2VfOiBFbmZhbnQudCBhcnJheSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLmVuZmFudHNfw6BfY2hhcmdlXCJdXG4gICAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX2VuZmFudCkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04NzsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBlbmZhbnRzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0pKSBpblxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMuYXZhaXRfZW5mYW50X8OgX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMDsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTEwMDsgZW5kX2NvbHVtbj03MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDA7IGVuZF9jb2x1bW49NzI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTsgc3RhcnRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDA7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMDA7IGVuZF9jb2x1bW49NzI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAwOyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9MTAwOyBlbmRfY29sdW1uPTcyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgKHtBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbiA9XG4gICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XztcbiAgICAgICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbiA9XG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfX2lfO1xuICAgICAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNzb3VyY2VzX21lbmFnZV9pbiA9XG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzc291cmNlc19tZW5hZ2VfO1xuICAgICAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gPVxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc2lkZW5jZV87XG4gICAgICAgIEFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5lbmZhbnRzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9lbmZhbnRzX2FfY2hhcmdlXztcbiAgICAgICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW4gPVxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX30pKSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfdmVyc2VfOiBtb25leSA9IHJlc3VsdF8uQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnRfdmVyc2UgaW5cbiAgbGV0IGlfbW9udGFudF92ZXJzZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiaV9tb250YW50X3ZlcnPDqVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTgwOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTA7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfdmVyc2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTgwOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0pKSkpIGluXG4gIHtJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMuaV9tb250YW50X3ZlcnNlID0gaV9tb250YW50X3ZlcnNlX31cbiIsIigqKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHRoZSBDYXRhbGEgY29tcGlsZXIsIGRvIG5vdCBlZGl0ISAqKVxuXG5vcGVuIFJ1bnRpbWVfb2NhbWwuUnVudGltZVxub3BlbiBSdW50aW1lX2pzb28uUnVudGltZVxub3BlbiBKc19vZl9vY2FtbFxub3BlbiBBbGxvY2F0aW9uc19mYW1pbGlhbGVzXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTQtMjYtMjctMzItNDEtNDJcIl1cblxuKCogR2VuZXJhdGVkIEFQSSAqKVxuXG5jbGFzcyB0eXBlIHByaXNlX2VuX2NoYXJnZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcIlxuICAgICAgICAtIFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgICAgLSBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcHJpc2VfZW5fY2hhcmdlX3RvX2pzb28gOiBQcmlzZUVuQ2hhcmdlLnQgLT4gcHJpc2VfZW5fY2hhcmdlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyAocHJpc2VfZW5fY2hhcmdlIDogcHJpc2VfZW5fY2hhcmdlIEpzLnQpXG4gIDogUHJpc2VFbkNoYXJnZS50ID1cbiAgbWF0Y2ggcHJpc2VfZW5fY2hhcmdlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9uc1wiIC0+XG4gICAgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zICgpXG4gIHwgXCJHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlICgpXG4gIHwgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiAtPiBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSAoKVxuICB8IFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgKClcbiAgfCBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUHJpc2VFbkNoYXJnZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkF2YW50XCJcbiAgICAgICAgLSBcIlBlbmRhbnRcIlxuICAgICAgICAtIFwiQXByZXNcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV90b19qc29vXG4gIDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQgLT4gc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQXZhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdmFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBlbmRhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQZW5kYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXByZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBcHJlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfb2ZfanNvb1xuICAoc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgOiBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSBKcy50KVxuICA6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50ID1cbiAgbWF0Y2ggc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJBdmFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCAoKVxuICB8IFwiUGVuZGFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50ICgpXG4gIHwgXCJBcHJlc1wiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHByaXNlX2VuX2NvbXB0ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkNvbXBsZXRlXCJcbiAgICAgICAgLSBcIlBhcnRhZ2VlXCJcbiAgICAgICAgLSBcIlplcm9cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBwcmlzZV9lbl9jb21wdGVfdG9fanNvbyA6IFByaXNlRW5Db21wdGUudCAtPiBwcmlzZV9lbl9jb21wdGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQ29tcGxldGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGV0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBhcnRhZ2VlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFydGFnZWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBaZXJvIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiWmVyb1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcHJpc2VfZW5fY29tcHRlX29mX2pzb28gKHByaXNlX2VuX2NvbXB0ZSA6IHByaXNlX2VuX2NvbXB0ZSBKcy50KVxuICA6IFByaXNlRW5Db21wdGUudCA9XG4gIG1hdGNoIHByaXNlX2VuX2NvbXB0ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkNvbXBsZXRlXCIgLT4gUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSAoKVxuICB8IFwiUGFydGFnZWVcIiAtPiBQcmlzZUVuQ29tcHRlLlBhcnRhZ2VlICgpXG4gIHwgXCJaZXJvXCIgLT4gUHJpc2VFbkNvbXB0ZS5aZXJvICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQcmlzZUVuQ29tcHRlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHZlcnNlbWVudF9hbGxvY2F0aW9ucyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk5vcm1hbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdmVyc2VtZW50X2FsbG9jYXRpb25zX3RvX2pzb29cbiAgOiBWZXJzZW1lbnRBbGxvY2F0aW9ucy50IC0+IHZlcnNlbWVudF9hbGxvY2F0aW9ucyBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBOb3JtYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJOb3JtYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdmVyc2VtZW50X2FsbG9jYXRpb25zX29mX2pzb29cbiAgKHZlcnNlbWVudF9hbGxvY2F0aW9ucyA6IHZlcnNlbWVudF9hbGxvY2F0aW9ucyBKcy50KVxuICA6IFZlcnNlbWVudEFsbG9jYXRpb25zLnQgPVxuICBtYXRjaCB2ZXJzZW1lbnRfYWxsb2NhdGlvbnMjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJOb3JtYWxcIiAtPiBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWwgKClcbiAgfCBcIkFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiAtPlxuICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLkFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1ZlcnNlbWVudEFsbG9jYXRpb25zLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJcbiAgICAgICAgLSBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICA6IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb21wbGVtZW50RmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGVtZW50RmFtaWxpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAoZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIDogZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQpXG4gIDogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbWF0Y2ggZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudFwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5QcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbnNGYW1pbGlhbGVzICgpXG4gIHwgXCJDb21wbGVtZW50RmFtaWxpYWxcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQ29tcGxlbWVudEZhbWlsaWFsICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbkxvZ2VtZW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlXCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgKClcbiAgfCBcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCAoKVxuICB8IFwiQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlICgpXG4gIHwgXCJBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBjb2xsZWN0aXZpdGUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJHdWFkZWxvdXBlXCJcbiAgICAgICAgLSBcIkd1eWFuZVwiXG4gICAgICAgIC0gXCJNYXJ0aW5pcXVlXCJcbiAgICAgICAgLSBcIkxhUmV1bmlvblwiXG4gICAgICAgIC0gXCJTYWludEJhcnRoZWxlbXlcIlxuICAgICAgICAtIFwiU2FpbnRNYXJ0aW5cIlxuICAgICAgICAtIFwiTWV0cm9wb2xlXCJcbiAgICAgICAgLSBcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiXG4gICAgICAgIC0gXCJNYXlvdHRlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgY29sbGVjdGl2aXRlX3RvX2pzb28gOiBDb2xsZWN0aXZpdGUudCAtPiBjb2xsZWN0aXZpdGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgR3VhZGVsb3VwZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkd1YWRlbG91cGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBHdXlhbmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHdXlhbmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNYXJ0aW5pcXVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWFydGluaXF1ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IExhUmV1bmlvbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxhUmV1bmlvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNhaW50QmFydGhlbGVteSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNhaW50QmFydGhlbGVteVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNhaW50TWFydGluIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiU2FpbnRNYXJ0aW5cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNZXRyb3BvbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNZXRyb3BvbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTYWludFBpZXJyZUV0TWlxdWVsb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTYWludFBpZXJyZUV0TWlxdWVsb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNYXlvdHRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWF5b3R0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgY29sbGVjdGl2aXRlX29mX2pzb28gKGNvbGxlY3Rpdml0ZSA6IGNvbGxlY3Rpdml0ZSBKcy50KVxuICA6IENvbGxlY3Rpdml0ZS50ID1cbiAgbWF0Y2ggY29sbGVjdGl2aXRlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiR3VhZGVsb3VwZVwiIC0+IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpXG4gIHwgXCJHdXlhbmVcIiAtPiBDb2xsZWN0aXZpdGUuR3V5YW5lICgpXG4gIHwgXCJNYXJ0aW5pcXVlXCIgLT4gQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKClcbiAgfCBcIkxhUmV1bmlvblwiIC0+IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKClcbiAgfCBcIlNhaW50QmFydGhlbGVteVwiIC0+IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKClcbiAgfCBcIlNhaW50TWFydGluXCIgLT4gQ29sbGVjdGl2aXRlLlNhaW50TWFydGluICgpXG4gIHwgXCJNZXRyb3BvbGVcIiAtPiBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpXG4gIHwgXCJTYWludFBpZXJyZUV0TWlxdWVsb25cIiAtPiBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uICgpXG4gIHwgXCJNYXlvdHRlXCIgLT4gQ29sbGVjdGl2aXRlLk1heW90dGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NvbGxlY3Rpdml0ZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFnZU1pbmltdW1BbGluZWExTDUyMTM6XG4gICAgICBSdW50aW1lX2pzb28uUnVudGltZS5kdXJhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X3RvX2pzb29cbiAgICAoYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCA6IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4LnQpXG4gICAgOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFnZU1pbmltdW1BbGluZWExTDUyMTMgPVxuICAgICAgICBkdXJhdGlvbl90b19qc29vIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDguYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zXG4gICAgICBlbmRcbiAgbGV0IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb2ZfanNvb1xuICAgIChhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IDogYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCBKcy50KSA6XG4gICAgQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDgudCA9XG4gICAge1xuICAgICAgYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zID1cbiAgICAgICAgZHVyYXRpb25fb2ZfanNvb1xuICAgICAgICAgIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDgjIy5hZ2VNaW5pbXVtQWxpbmVhMUw1MjEzXG4gICAgfVxuXG5jbGFzcyB0eXBlIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRWZXJzZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgIDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb250YW50VmVyc2UgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5tb250YW50X3ZlcnNlXG4gICAgICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSA6XG4gICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnRfdmVyc2UgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyMjLm1vbnRhbnRWZXJzZVxuICAgIH1cblxuY2xhc3MgdHlwZSBzbWljID1cbiAgb2JqZWN0IG1ldGhvZCBicnV0SG9yYWlyZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHNtaWNfdG9fanNvbyAoc21pYyA6IFNtaWMudCkgOiBzbWljIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGJydXRIb3JhaXJlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHNtaWMuYnJ1dF9ob3JhaXJlXG4gICAgICBlbmRcbiAgbGV0IHNtaWNfb2ZfanNvbyAoc21pYyA6IHNtaWMgSnMudCkgOiBTbWljLnQgPVxuICAgIHtcbiAgICAgIGJydXRfaG9yYWlyZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBzbWljIyMuYnJ1dEhvcmFpcmVcbiAgICB9XG5cbmNsYXNzIHR5cGUgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdCBtZXRob2QgbW9udGFudDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpXG4gICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vbnRhbnQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5tb250YW50XG4gICAgICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9XG4gICAge1xuICAgICAgbW9udGFudCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIyMubW9udGFudFxuICAgIH1cblxuY2xhc3MgdHlwZSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdCBtZXRob2QgaU1vbnRhbnRWZXJzZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cbiAgICAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgOiBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudClcbiAgICA6IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGlNb250YW50VmVyc2UgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMuaV9tb250YW50X3ZlcnNlXG4gICAgICBlbmRcbiAgbGV0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX29mX2pzb29cbiAgICAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIDogaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50ID1cbiAgICB7XG4gICAgICBpX21vbnRhbnRfdmVyc2UgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMjIy5pTW9udGFudFZlcnNlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVuZmFudF9lbnRyZWUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZElkZW50aWZpYW50OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkUmVtdW5lcmF0aW9uTWVuc3VlbGxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGREYXRlRGVOYWlzc2FuY2U6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZFByaXNlRW5DaGFyZ2U6IHByaXNlX2VuX2NoYXJnZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZEFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXM6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkQmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudDpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X2VudHJlZV90b19qc29vIChlbmZhbnRfZW50cmVlIDogRW5mYW50RW50cmVlLnQpXG4gICAgOiBlbmZhbnRfZW50cmVlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRJZGVudGlmaWFudCA9IGludGVnZXJfdG9faW50IGVuZmFudF9lbnRyZWUuZF9pZGVudGlmaWFudFxuICAgICAgdmFsIGRSZW11bmVyYXRpb25NZW5zdWVsbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZW5mYW50X2VudHJlZS5kX3JlbXVuZXJhdGlvbl9tZW5zdWVsbGVcbiAgICAgIHZhbCBkRGF0ZURlTmFpc3NhbmNlID0gZGF0ZV90b19qc29vIGVuZmFudF9lbnRyZWUuZF9kYXRlX2RlX25haXNzYW5jZVxuICAgICAgdmFsIGRQcmlzZUVuQ2hhcmdlID1cbiAgICAgICAgcHJpc2VfZW5fY2hhcmdlX3RvX2pzb28gZW5mYW50X2VudHJlZS5kX3ByaXNlX2VuX2NoYXJnZVxuICAgICAgdmFsIGRBRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnRfZW50cmVlLmRfYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgdmFsIGRCZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50ID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnRfZW50cmVlLmRfYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9lbnRyZWVfb2ZfanNvbyAoZW5mYW50X2VudHJlZSA6IGVuZmFudF9lbnRyZWUgSnMudCkgOlxuICAgIEVuZmFudEVudHJlZS50ID1cbiAgICB7XG4gICAgICBkX2lkZW50aWZpYW50ID0gaW50ZWdlcl9vZl9pbnQgZW5mYW50X2VudHJlZSMjLmRJZGVudGlmaWFudDtcbiAgICAgIGRfcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBlbmZhbnRfZW50cmVlIyMuZFJlbXVuZXJhdGlvbk1lbnN1ZWxsZTtcbiAgICAgIGRfZGF0ZV9kZV9uYWlzc2FuY2UgPSBkYXRlX29mX2pzb28gZW5mYW50X2VudHJlZSMjLmREYXRlRGVOYWlzc2FuY2U7XG4gICAgICBkX3ByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgIHByaXNlX2VuX2NoYXJnZV9vZl9qc29vIGVuZmFudF9lbnRyZWUjIy5kUHJpc2VFbkNoYXJnZTtcbiAgICAgIGRfYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLnRvX2Jvb2wgZW5mYW50X2VudHJlZSMjLmRBRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzO1xuICAgICAgZF9iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgZW5mYW50X2VudHJlZSMjLmRCZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50XG4gICAgfVxuXG5jbGFzcyB0eXBlIGVuZmFudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBpZGVudGlmaWFudDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgb2JsaWdhdGlvblNjb2xhaXJlOlxuICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlbXVuZXJhdGlvbk1lbnN1ZWxsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRGVOYWlzc2FuY2U6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcHJpc2VFbkNoYXJnZTogcHJpc2VfZW5fY2hhcmdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudDpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X3RvX2pzb28gKGVuZmFudCA6IEVuZmFudC50KSA6IGVuZmFudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBpZGVudGlmaWFudCA9IGludGVnZXJfdG9faW50IGVuZmFudC5pZGVudGlmaWFudFxuICAgICAgdmFsIG9ibGlnYXRpb25TY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX3RvX2pzb28gZW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmVcbiAgICAgIHZhbCByZW11bmVyYXRpb25NZW5zdWVsbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGVcbiAgICAgIHZhbCBkYXRlRGVOYWlzc2FuY2UgPSBkYXRlX3RvX2pzb28gZW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlXG4gICAgICB2YWwgcHJpc2VFbkNoYXJnZSA9IHByaXNlX2VuX2NoYXJnZV90b19qc29vIGVuZmFudC5wcmlzZV9lbl9jaGFyZ2VcbiAgICAgIHZhbCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnQuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgdmFsIGJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQgPVxuICAgICAgICBKcy5ib29sIGVuZmFudC5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIGVuZFxuICBsZXQgZW5mYW50X29mX2pzb28gKGVuZmFudCA6IGVuZmFudCBKcy50KSA6IEVuZmFudC50ID1cbiAgICB7XG4gICAgICBpZGVudGlmaWFudCA9IGludGVnZXJfb2ZfaW50IGVuZmFudCMjLmlkZW50aWZpYW50O1xuICAgICAgb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX29mX2pzb28gZW5mYW50IyMub2JsaWdhdGlvblNjb2xhaXJlO1xuICAgICAgcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBlbmZhbnQjIy5yZW11bmVyYXRpb25NZW5zdWVsbGU7XG4gICAgICBkYXRlX2RlX25haXNzYW5jZSA9IGRhdGVfb2ZfanNvbyBlbmZhbnQjIy5kYXRlRGVOYWlzc2FuY2U7XG4gICAgICBwcmlzZV9lbl9jaGFyZ2UgPSBwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyBlbmZhbnQjIy5wcmlzZUVuQ2hhcmdlO1xuICAgICAgYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLnRvX2Jvb2wgZW5mYW50IyMuYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcztcbiAgICAgIGJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgIEpzLnRvX2Jvb2wgZW5mYW50IyMuYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudFxuICAgIH1cblxuY2xhc3MgdHlwZSBlbmZhbnRfbGVfcGx1c19hZ2UgPVxuICBvYmplY3QgbWV0aG9kIGxlUGx1c0FnZTogZW5mYW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV90b19qc29vIChlbmZhbnRfbGVfcGx1c19hZ2UgOiBFbmZhbnRMZVBsdXNBZ2UudClcbiAgICA6IGVuZmFudF9sZV9wbHVzX2FnZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBsZVBsdXNBZ2UgPSBlbmZhbnRfdG9fanNvbyBlbmZhbnRfbGVfcGx1c19hZ2UubGVfcGx1c19hZ2VcbiAgICAgIGVuZFxuICBsZXQgZW5mYW50X2xlX3BsdXNfYWdlX29mX2pzb29cbiAgICAoZW5mYW50X2xlX3BsdXNfYWdlIDogZW5mYW50X2xlX3BsdXNfYWdlIEpzLnQpIDogRW5mYW50TGVQbHVzQWdlLnQgPVxuICAgIHtsZV9wbHVzX2FnZSA9IGVuZmFudF9vZl9qc29vIGVuZmFudF9sZV9wbHVzX2FnZSMjLmxlUGx1c0FnZVxuICAgIH1cblxuY2xhc3MgdHlwZSBwcmVzdGF0aW9uc19mYW1pbGlhbGVzID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRyb2l0T3V2ZXJ0OiAoZW5mYW50IEpzLnQsICBib29sIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICAgIG1ldGhvZCBjb25kaXRpb25zSG9yc0FnZTpcbiAgICAgIChlbmZhbnQgSnMudCwgIGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIGFnZUw1MTIzMjogUnVudGltZV9qc29vLlJ1bnRpbWUuZHVyYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlZ2ltZU91dHJlTWVyTDc1MTE6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgOiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCkgOiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgbWV0aG9kIGRyb2l0T3V2ZXJ0ID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5ib29sIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzLmRyb2l0X291dmVydCAoZW5mYW50X29mX2pzb28gaW5wdXQpKSlcbiAgICAgIG1ldGhvZCBjb25kaXRpb25zSG9yc0FnZSA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMuYm9vbCAocHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5jb25kaXRpb25zX2hvcnNfYWdlIChlbmZhbnRfb2ZfanNvbyBpbnB1dCkpKVxuICAgICAgdmFsIGFnZUw1MTIzMiA9IGR1cmF0aW9uX3RvX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5hZ2VfbDUxMl8zXzJcbiAgICAgIHZhbCByZWdpbWVPdXRyZU1lckw3NTExID1cbiAgICAgICAgSnMuYm9vbCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzLnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXG4gICAgICBlbmRcbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzIDogcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSA6XG4gICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIGRyb2l0X291dmVydCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdkcm9pdF9vdXZlcnQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvbmRpdGlvbnNfaG9yc19hZ2UgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnY29uZGl0aW9uc19ob3JzX2FnZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiO1xuICAgICAgYWdlX2w1MTJfM18yID0gZHVyYXRpb25fb2ZfanNvbyBwcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMuYWdlTDUxMjMyO1xuICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzEgPVxuICAgICAgICBKcy50b19ib29sIHByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5yZWdpbWVPdXRyZU1lckw3NTExXG4gICAgfVxuXG5jbGFzcyB0eXBlIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcHJlc3RhdGlvbkNvdXJhbnRlSW46XG4gICAgICBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc2lkZW5jZUluOiBjb2xsZWN0aXZpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qc29vIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgOiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcHJlc3RhdGlvbkNvdXJhbnRlSW4gPVxuICAgICAgICBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLnByZXN0YXRpb25fY291cmFudGVfaW5cbiAgICAgIHZhbCByZXNpZGVuY2VJbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV90b19qc29vIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4ucmVzaWRlbmNlX2luXG4gICAgICBlbmRcbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICAgIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIDogcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KSA6XG4gICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBwcmVzdGF0aW9uX2NvdXJhbnRlX2luID1cbiAgICAgICAgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX29mX2pzb29cbiAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIyMucHJlc3RhdGlvbkNvdXJhbnRlSW47XG4gICAgICByZXNpZGVuY2VfaW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfb2ZfanNvbyBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIyMucmVzaWRlbmNlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbiA9XG5vYmplY3QgZW5kXG5sZXQgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbl90b19qc29vIChfIDogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhJbi50KSA6IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gSnMudCA9IG9iamVjdCVqcyBlbmRcbmxldCBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luX29mX2pzb28gKF8gOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luIEpzLnQpIDogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhJbi50ID0gKClcbmNsYXNzIHR5cGUgZW5mYW50X2xlX3BsdXNfYWdlX2luID1cbiAgb2JqZWN0IG1ldGhvZCBlbmZhbnRzSW46IGVuZmFudCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9pbl90b19qc29vIChlbmZhbnRfbGVfcGx1c19hZ2VfaW5cbiAgICA6IEVuZmFudExlUGx1c0FnZUluLnQpIDogZW5mYW50X2xlX3BsdXNfYWdlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGVuZmFudHNJbiA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X3RvX2pzb28geCkgZW5mYW50X2xlX3BsdXNfYWdlX2luLmVuZmFudHNfaW5cbiAgICAgIGVuZFxuICBsZXQgZW5mYW50X2xlX3BsdXNfYWdlX2luX29mX2pzb29cbiAgICAoZW5mYW50X2xlX3BsdXNfYWdlX2luIDogZW5mYW50X2xlX3BsdXNfYWdlX2luIEpzLnQpIDpcbiAgICBFbmZhbnRMZVBsdXNBZ2VJbi50ID1cbiAgICB7XG4gICAgICBlbmZhbnRzX2luID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBlbmZhbnRfb2ZfanNvbyB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGVuZmFudF9sZV9wbHVzX2FnZV9pbiMjLmVuZmFudHNJblxuICAgIH1cblxuY2xhc3MgdHlwZSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZUVzdFBhcmVudEluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc2lkZW5jZUluOiBjb2xsZWN0aXZpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVuZmFudHNBQ2hhcmdlSW46IGVuZmFudCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhdmFpdEVuZmFudEFDaGFyZ2VBdmFudDFlckphbnZpZXIyMDEySW46XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvbyAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZUVzdFBhcmVudEluID1cbiAgICAgICAgSnMuYm9vbCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luXG4gICAgICB2YWwgcGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluID1cbiAgICAgICAgSnMuYm9vbCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5yZXNzb3VyY2VzX21lbmFnZV9pblxuICAgICAgdmFsIHJlc2lkZW5jZUluID1cbiAgICAgICAgY29sbGVjdGl2aXRlX3RvX2pzb28gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5yZXNpZGVuY2VfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBlbmZhbnRzQUNoYXJnZUluID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBlbmZhbnRfdG9fanNvbyB4KSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmVuZmFudHNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBhdmFpdEVuZmFudEFDaGFyZ2VBdmFudDFlckphbnZpZXIyMDEySW4gPVxuICAgICAgICBKcy5ib29sIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW5cbiAgICAgIGVuZFxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gICAgKGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpIDpcbiAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50ID1cbiAgICB7XG4gICAgICBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICAgICAgIyMucGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlRXN0UGFyZW50SW47XG4gICAgICBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgICAgICAjIy5wZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVSZW1wbGl0VGl0cmVJSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMucmVzc291cmNlc01lbmFnZUluO1xuICAgICAgcmVzaWRlbmNlX2luID1cbiAgICAgICAgY29sbGVjdGl2aXRlX29mX2pzb28gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnJlc2lkZW5jZUluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBlbmZhbnRzX2FfY2hhcmdlX2luID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBlbmZhbnRfb2ZfanNvbyB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5lbmZhbnRzQUNoYXJnZUluO1xuICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmF2YWl0RW5mYW50QUNoYXJnZUF2YW50MWVySmFudmllcjIwMTJJblxuICAgIH1cblxuY2xhc3MgdHlwZSBzbWljX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc2lkZW5jZUluOiBjb2xsZWN0aXZpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgc21pY19pbl90b19qc29vIChzbWljX2luIDogU21pY0luLnQpIDogc21pY19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9IGRhdGVfdG9fanNvbyBzbWljX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCByZXNpZGVuY2VJbiA9IGNvbGxlY3Rpdml0ZV90b19qc29vIHNtaWNfaW4ucmVzaWRlbmNlX2luXG4gICAgICBlbmRcbiAgbGV0IHNtaWNfaW5fb2ZfanNvbyAoc21pY19pbiA6IHNtaWNfaW4gSnMudCkgOiBTbWljSW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9IGRhdGVfb2ZfanNvbyBzbWljX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICByZXNpZGVuY2VfaW4gPSBjb2xsZWN0aXZpdGVfb2ZfanNvbyBzbWljX2luIyMucmVzaWRlbmNlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA9XG4gIG9iamVjdCBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX3RvX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpXG4gICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpIDpcbiAgICBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBpRGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaUVuZmFudHNJbjogZW5mYW50X2VudHJlZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpUmVzc291cmNlc01lbmFnZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGlSZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpUGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlRXN0UGFyZW50SW46XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpUGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaUF2YWl0RW5mYW50QUNoYXJnZUF2YW50MWVySmFudmllcjIwMTJJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvb1xuICAgIChpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udClcbiAgICA6IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGlEYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX2RhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBpRW5mYW50c0luID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBlbmZhbnRfZW50cmVlX3RvX2pzb28geCkgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uaV9lbmZhbnRzX2luXG4gICAgICB2YWwgaVJlc3NvdXJjZXNNZW5hZ2VJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX3Jlc3NvdXJjZXNfbWVuYWdlX2luXG4gICAgICB2YWwgaVJlc2lkZW5jZUluID1cbiAgICAgICAgY29sbGVjdGl2aXRlX3RvX2pzb28gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uaV9yZXNpZGVuY2VfaW5cbiAgICAgIHZhbCBpUGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlRXN0UGFyZW50SW4gPVxuICAgICAgICBKcy5ib29sIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW5cbiAgICAgIHZhbCBpUGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluID1cbiAgICAgICAgSnMuYm9vbCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW5cbiAgICAgIHZhbCBpQXZhaXRFbmZhbnRBQ2hhcmdlQXZhbnQxZXJKYW52aWVyMjAxMkluID1cbiAgICAgICAgSnMuYm9vbCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luXG4gICAgICBlbmRcbiAgbGV0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgICAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgIDogaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCkgOlxuICAgIEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQgPVxuICAgIHtcbiAgICAgIGlfZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmlEYXRlQ291cmFudGVJbjtcbiAgICAgIGlfZW5mYW50c19pbiA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X2VudHJlZV9vZl9qc29vIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5pRW5mYW50c0luO1xuICAgICAgaV9yZXNzb3VyY2VzX21lbmFnZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmlSZXNzb3VyY2VzTWVuYWdlSW47XG4gICAgICBpX3Jlc2lkZW5jZV9pbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV9vZl9qc29vXG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5pUmVzaWRlbmNlSW47XG4gICAgICBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICAgICAgIyMuaVBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZUVzdFBhcmVudEluO1xuICAgICAgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICAgICAgIyMuaVBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZVJlbXBsaXRUaXRyZUlJbjtcbiAgICAgIGlfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgICAgICAjIy5pQXZhaXRFbmZhbnRBQ2hhcmdlQXZhbnQxZXJKYW52aWVyMjAxMkluXG4gICAgfVxuXG5cblxuXG5sZXQgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOFxuICAoYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbiA6IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gSnMudClcbiAgOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IEpzLnQgPVxuICBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luXG4gIHw+IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW5fb2ZfanNvb1xuICB8PiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4XG4gIHw+IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfdG9fanNvb1xuXG5cbmxldCBlbmZhbnRfbGVfcGx1c19hZ2UgKGVuZmFudF9sZV9wbHVzX2FnZV9pbiA6IGVuZmFudF9sZV9wbHVzX2FnZV9pbiBKcy50KVxuICA6IGVuZmFudF9sZV9wbHVzX2FnZSBKcy50ID1cbiAgZW5mYW50X2xlX3BsdXNfYWdlX2luXG4gIHw+IGVuZmFudF9sZV9wbHVzX2FnZV9pbl9vZl9qc29vXG4gIHw+IGVuZmFudF9sZV9wbHVzX2FnZVxuICB8PiBlbmZhbnRfbGVfcGx1c19hZ2VfdG9fanNvb1xuXG5cbmxldCBzbWljIChzbWljX2luIDogc21pY19pbiBKcy50KVxuICA6IHNtaWMgSnMudCA9XG4gIHNtaWNfaW4gfD4gc21pY19pbl9vZl9qc29vIHw+IHNtaWMgfD4gc21pY190b19qc29vXG5cblxubGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpXG4gIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICB8PiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cblxuXG5sZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiA6IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudClcbiAgOiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luXG4gIHw+IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICB8PiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gIHw+IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuXG5cbmxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KVxuICA6IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgfD4gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG5cblxubGV0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIChpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA6IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpXG4gIDogaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gIHw+IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuXG5cbmxldCBfID1cbiAgIEpzLmV4cG9ydCBcIkFsbG9jYXRpb25zRmFtaWxpYWxlc0xpYlwiXG4gICAgKG9iamVjdCVqc1xuICAgICAgXG4gICAgICBtZXRob2QgYWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDggOiAoYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbiBKcy50IC0+IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDggSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhcbiAgICAgIFxuICAgICAgbWV0aG9kIGVuZmFudExlUGx1c0FnZSA6IChlbmZhbnRfbGVfcGx1c19hZ2VfaW4gSnMudCAtPiBlbmZhbnRfbGVfcGx1c19hZ2UgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVuZmFudF9sZV9wbHVzX2FnZVxuICAgICAgXG4gICAgICBtZXRob2Qgc21pYyA6IChzbWljX2luIEpzLnQgLT4gc21pYyBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgc21pY1xuICAgICAgXG4gICAgICBtZXRob2QgYmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcyA6IChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgLT4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgXG4gICAgICBtZXRob2QgcHJlc3RhdGlvbnNGYW1pbGlhbGVzIDogKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCAtPiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBwcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCBhbGxvY2F0aW9uc0ZhbWlsaWFsZXMgOiAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIFxuICAgICAgbWV0aG9kIGludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlcyA6IChpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgXG4gICAgZW5kKSIsIigqKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHRoZSBDYXRhbGEgY29tcGlsZXIsIGRvIG5vdCBlZGl0ISAqKVxuXG5vcGVuIFJ1bnRpbWVfb2NhbWwuUnVudGltZVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi00LTI2LTI3LTMyLTQxLTQyXCJdXG5cbm1vZHVsZSBUeXBlUHJldCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBEMzMxXzMyIG9mIHVuaXRcbiAgICB8IEQzMzFfNjNfNjQgb2YgdW5pdFxuICAgIHwgRDMzMV81OV84IG9mIHVuaXRcbiAgICB8IEQzMzFfNzZfMSBvZiB1bml0XG4gICAgfCBBdXRyZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3R5cGVfcHJldCAoeDogVHlwZVByZXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlUHLDqnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRDMzMV8zMiB4IC0+IChcIkQzMzFfMzJcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgRDMzMV82M182NCB4IC0+IChcIkQzMzFfNjNfNjRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgRDMzMV81OV84IHggLT4gKFwiRDMzMV81OV84XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEQzMzFfNzZfMSB4IC0+IChcIkQzMzFfNzZfMVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBdXRyZSB4IC0+IChcIkF1dHJlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFRpdHVsYWlyZVByZXQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgRGVtYW5kZXVyIG9mIHVuaXRcbiAgICB8IFZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90aXR1bGFpcmVfcHJldCAoeDogVGl0dWxhaXJlUHJldC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlRpdHVsYWlyZVByw6p0XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IERlbWFuZGV1ciB4IC0+IChcIkRlbWFuZGV1clwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBWZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uIHggLT5cbiAgICAgIChcIlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb25cIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBUcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xIG9mIHVuaXRcbiAgICB8IFRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzIgb2YgdW5pdFxuICAgIHwgUGFzRGVUcmF2YXV4IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgKHg6IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlVHJhdmF1eExvZ2VtZW50RDgzMl8xNVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBUcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xIHggLT5cbiAgICAgIChcIlRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzFcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMiB4IC0+XG4gICAgICAoXCJUcmF2YXV4U3VyTG9nZW1lbnREw6lqw6BBY3F1aXNEODMyXzE1XzJcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGFzRGVUcmF2YXV4IHggLT4gKFwiUGFzRGVUcmF2YXV4XCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBPYmplY3RpZkRlY2VuY2VMb2dlbWVudCBvZiB1bml0XG4gICAgfCBQcmV2dURhbnNMaXN0ZVIzMjFfMTUgb2YgdW5pdFxuICAgIHwgQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgb2YgdW5pdFxuICAgIHwgUGFzRGVUcmF2YXV4IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSAoeDogVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVHlwZVRyYXZhdXhMb2dlbWVudFI4NDJfNVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBPYmplY3RpZkRlY2VuY2VMb2dlbWVudCB4IC0+IChcIk9iamVjdGlmRMOpY2VuY2VMb2dlbWVudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBQcmV2dURhbnNMaXN0ZVIzMjFfMTUgeCAtPiAoXCJQcsOpdnVEYW5zTGlzdGVSMzIxXzE1XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIHggLT5cbiAgICAgIChcIkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFBhc0RlVHJhdmF1eCB4IC0+IChcIlBhc0RlVHJhdmF1eFwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBBbWVsaW9yZVBhck9jY3VwYW50ID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IE91aSBvZiB1bml0XG4gICAgfCBOb24gb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9hbWVsaW9yZV9wYXJfb2NjdXBhbnQgKHg6IEFtZWxpb3JlUGFyT2NjdXBhbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJBbcOpbGlvcsOpUGFyT2NjdXBhbnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgT3VpIHggLT4gKFwiT3VpXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE5vbiB4IC0+IChcIk5vblwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBMaW1pdGVUcmFuY2hlID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IFJldmVudSBvZiBtb25leVxuICAgIHwgSW5maW5pIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfbGltaXRlX3RyYW5jaGUgKHg6IExpbWl0ZVRyYW5jaGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJMaW1pdGVUcmFuY2hlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFJldmVudSB4IC0+IChcIlJldmVudVwiLCBlbWJlZF9tb25leSB4KVxuICAgIHwgSW5maW5pIHggLT4gKFwiSW5maW5pXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIExpbWl0ZVRyYW5jaGVEZWNpbWFsID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IFJldmVudSBvZiBkZWNpbWFsXG4gICAgfCBJbmZpbmkgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9saW1pdGVfdHJhbmNoZV9kZWNpbWFsICh4OiBMaW1pdGVUcmFuY2hlRGVjaW1hbC50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkxpbWl0ZVRyYW5jaGVEw6ljaW1hbFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBSZXZlbnUgeCAtPiAoXCJSZXZlbnVcIiwgZW1iZWRfZGVjaW1hbCB4KVxuICAgIHwgSW5maW5pIHggLT4gKFwiSW5maW5pXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFByZXN0YXRpb25SZWN1ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgb2YgdW5pdFxuICAgIHwgQ29tcGxlbWVudEZhbWlsaWFsIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25KZXVuZUVuZmFudCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25BZHVsdGVIYW5kaWNhcGUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9wcmVzdGF0aW9uX3JlY3VlICh4OiBQcmVzdGF0aW9uUmVjdWUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJQcmVzdGF0aW9uUmXDp3VlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEFsbG9jYXRpb25zRmFtaWxpYWxlcyB4IC0+IChcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBDb21wbGVtZW50RmFtaWxpYWwgeCAtPiAoXCJDb21wbMOpbWVudEZhbWlsaWFsXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25KZXVuZUVuZmFudCB4IC0+IChcIkFsbG9jYXRpb25KZXVuZUVuZmFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcMOpXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25BZHVsdGVIYW5kaWNhcGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2Fww6lcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgUGFyZW50T3VBdXRyZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgb2YgZGVjaW1hbFxuICAgIHwgQXV0cmUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9wYXJlbnRfb3VfYXV0cmUgKHg6IFBhcmVudE91QXV0cmUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJQYXJlbnRPdUF1dHJlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IERlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlcyB4IC0+XG4gICAgICAoXCJEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jacOpdMOpc1wiLCBlbWJlZF9kZWNpbWFsIHgpXG4gICAgfCBBdXRyZSB4IC0+IChcIkF1dHJlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgUGFzRGVHYXJkZUFsdGVybmVlIG9mIHVuaXRcbiAgICB8IEdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2Ugb2YgZGVjaW1hbFxuICBlbmRcbmxldCBlbWJlZF9zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUgKHg6IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJTaXR1YXRpb25HYXJkZUFsdGVybsOpZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBQYXNEZUdhcmRlQWx0ZXJuZWUgeCAtPiAoXCJQYXNEZUdhcmRlQWx0ZXJuw6llXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgeCAtPlxuICAgICAgKFwiR2FyZGVBbHRlcm7DqWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2VcIiwgZW1iZWRfZGVjaW1hbCB4KSlcblxuXG5tb2R1bGUgUGFyZW50ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBBc2NlbmRhbnQgb2YgdW5pdFxuICAgIHwgRGVzY2VuZGFudCBvZiB1bml0XG4gICAgfCBDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3BhcmVudGUgKHg6IFBhcmVudGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJQYXJlbnTDqVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBc2NlbmRhbnQgeCAtPiAoXCJBc2NlbmRhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgRGVzY2VuZGFudCB4IC0+IChcIkRlc2NlbmRhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmUgeCAtPlxuICAgICAgKFwiQ29sbGF0w6lyYWxEZXV4acOobWVUcm9pc2nDqG1lRGVncsOpXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IERhdGVEZU5haXNzYW5jZSBvZiBkYXRlXG4gICAgfCBBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlIG9mIHVuaXRcbiAgICB8IEFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2Ugb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9kYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZVxuICAoeDogRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBEYXRlRGVOYWlzc2FuY2UgeCAtPiAoXCJEYXRlRGVOYWlzc2FuY2VcIiwgZW1iZWRfZGF0ZSB4KVxuICAgIHwgQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSB4IC0+XG4gICAgICAoXCJBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpw6htZU1vaXNEZUdyb3NzZXNzZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBcHJlc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlIHggLT5cbiAgICAgIChcIkFwcsOoc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpw6htZU1vaXNEZUdyb3NzZXNzZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBab25lREhhYml0YXRpb24gPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgWm9uZTEgb2YgdW5pdFxuICAgIHwgWm9uZTIgb2YgdW5pdFxuICAgIHwgWm9uZTMgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF96b25lX2RfaGFiaXRhdGlvbiAoeDogWm9uZURIYWJpdGF0aW9uLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiWm9uZURIYWJpdGF0aW9uXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFpvbmUxIHggLT4gKFwiWm9uZTFcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgWm9uZTIgeCAtPiAoXCJab25lMlwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBab25lMyB4IC0+IChcIlpvbmUzXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgT3VpQXZlY0xveWVyT3VDaGFyZ2VzIG9mIG1vbmV5XG4gICAgfCBOb24gb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9wYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsXG4gICh4OiBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBPdWlBdmVjTG95ZXJPdUNoYXJnZXMgeCAtPiAoXCJPdWlBdmVjTG95ZXJPdUNoYXJnZXNcIiwgZW1iZWRfbW9uZXkgeClcbiAgICB8IE5vbiB4IC0+IChcIk5vblwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBWZXJzZW1lbnRBID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEJhaWxsZXVyIG9mIHVuaXRcbiAgICB8IEJlbmVmaWNpYWlyZSBvZiB1bml0XG4gICAgfCBFdGFibGlzc2VtZW50SGFiaWxpdGUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF92ZXJzZW1lbnRfYSAoeDogVmVyc2VtZW50QS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlZlcnNlbWVudMOAXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEJhaWxsZXVyIHggLT4gKFwiQmFpbGxldXJcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQmVuZWZpY2lhaXJlIHggLT4gKFwiQsOpbsOpZmljaWFpcmVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgRXRhYmxpc3NlbWVudEhhYmlsaXRlIHggLT4gKFwiw4l0YWJsaXNzZW1lbnRIYWJpbGl0w6lcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgRGVwZW5zZUxvZ2VtZW50ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IFRvdGFsQW5udWVsRWNoZWFuY2VzIG9mIG1vbmV5XG4gICAgfCBNZW5zdWFsaXRlIG9mIG1vbmV5XG4gICAgfCBMb3llciBvZiBtb25leVxuICBlbmRcbmxldCBlbWJlZF9kZXBlbnNlX2xvZ2VtZW50ICh4OiBEZXBlbnNlTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJEw6lwZW5zZUxvZ2VtZW50XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFRvdGFsQW5udWVsRWNoZWFuY2VzIHggLT4gKFwiVG90YWxBbm51ZWzDiWNow6lhbmNlc1wiLCBlbWJlZF9tb25leSB4KVxuICAgIHwgTWVuc3VhbGl0ZSB4IC0+IChcIk1lbnN1YWxpdMOpXCIsIGVtYmVkX21vbmV5IHgpXG4gICAgfCBMb3llciB4IC0+IChcIkxveWVyXCIsIGVtYmVkX21vbmV5IHgpKVxuXG5cbm1vZHVsZSBNb2RlT2NjdXBhdGlvbkltcGF5ZSA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBJbXBheWVMb3llciBvZiB1bml0XG4gICAgfCBJbXBheWVQcmV0IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSAoeDogTW9kZU9jY3VwYXRpb25JbXBheWUudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJNb2RlT2NjdXBhdGlvbkltcGF5w6lcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgSW1wYXllTG95ZXIgeCAtPiAoXCJJbXBhecOpTG95ZXJcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgSW1wYXllUHJldCB4IC0+IChcIkltcGF5w6lQcsOqdFwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgUGFzRWxpZ2libGUgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgKHg6IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlR5cGXDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFBhc0VsaWdpYmxlIHggLT4gKFwiUGFzw4lsaWdpYmxlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKHg6IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgeCAtPlxuICAgICAgKFwiQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgU2l0dWF0aW9uRmFtaWxpYWxlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IENlbGliYXRhaXJlIG9mIHVuaXRcbiAgICB8IE1hcmllcyBvZiBkYXRlXG4gICAgfCBQYWNzZXMgb2YgdW5pdFxuICAgIHwgQ29uY3ViaW5zIG9mIHVuaXRcbiAgICB8IENlbGliYXRhaXJlU2VwYXJlRGVGYWl0IG9mIHVuaXRcbiAgICB8IENvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGUgKHg6IFNpdHVhdGlvbkZhbWlsaWFsZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlNpdHVhdGlvbkZhbWlsaWFsZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBDZWxpYmF0YWlyZSB4IC0+IChcIkPDqWxpYmF0YWlyZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXJpZXMgeCAtPiAoXCJNYXJpw6lzXCIsIGVtYmVkX2RhdGUgeClcbiAgICB8IFBhY3NlcyB4IC0+IChcIlBhY3PDqXNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ29uY3ViaW5zIHggLT4gKFwiQ29uY3ViaW5zXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IENlbGliYXRhaXJlU2VwYXJlRGVGYWl0IHggLT5cbiAgICAgIChcIkPDqWxpYmF0YWlyZVPDqXBhcsOpRGVGYWl0XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IENvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCB4IC0+XG4gICAgICAoXCJDb25jdWJpbmFnZURvbnRTw6lwYXLDqURlRmFpdFwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQcmlzZUVuQ2hhcmdlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSBvZiB1bml0XG4gICAgfCBSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIG9mIHVuaXRcbiAgICB8IFJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3ByaXNlX2VuX2NoYXJnZSAoeDogUHJpc2VFbkNoYXJnZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlByaXNlRW5DaGFyZ2VcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIHggLT4gKFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgeCAtPlxuICAgICAgKFwiUsOpc2lkZW5jZUFsdGVybsOpZUFsbG9jYXRhaXJlVW5pcXVlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZSB4IC0+XG4gICAgICAoXCJSw6lzaWRlbmNlQWx0ZXJuw6llQWxsb2NhdGlvbnNQYXJ0YWfDqWVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVHlwZUxvZ2VtZW50Rm95ZXIgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgTG9nZW1lbnRQZXJzb25uZXNBZ2Vlc091SGFuZGljYXBlZXMgb2YgdW5pdFxuICAgIHwgUmVzaWRlbmNlU29jaWFsZSBvZiB1bml0XG4gICAgfCBGb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NSBvZiB1bml0XG4gICAgfCBBdXRyZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3R5cGVfbG9nZW1lbnRfZm95ZXIgKHg6IFR5cGVMb2dlbWVudEZveWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVHlwZUxvZ2VtZW50Rm95ZXJcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTG9nZW1lbnRQZXJzb25uZXNBZ2Vlc091SGFuZGljYXBlZXMgeCAtPlxuICAgICAgKFwiTG9nZW1lbnRQZXJzb25uZXPDgmfDqWVzT3VIYW5kaWNhcMOpZXNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUmVzaWRlbmNlU29jaWFsZSB4IC0+IChcIlLDqXNpZGVuY2VTb2NpYWxlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1IHggLT5cbiAgICAgIChcIkZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm7DqUwzNTNfMkF2YW50MTk5NVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBdXRyZSB4IC0+IChcIkF1dHJlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llciA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBvZiB1bml0XG4gICAgfCBFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIG9mIHVuaXRcbiAgICB8IFBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IG9mIHVuaXRcbiAgICB8IEF1dHJlc1BlcnNvbm5lcyBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2NhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gICh4OiBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJDYXTDqWdvcmllw4lxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyB4IC0+XG4gICAgICAoXCLDiXR1ZGlhbnRMb2fDqUVuQ2hhbWJyZUNST1VTXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgeCAtPlxuICAgICAgKFwiw4l0dWRpYW50TG9nw6lFbkNoYW1icmVDUk9VU1LDqWhhYmlsaXTDqWVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgeCAtPlxuICAgICAgKFwiUGVyc29ubmVzw4Jnw6llc1NlbG9uM0RlRDg0Ml8xNlwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBdXRyZXNQZXJzb25uZXMgeCAtPiAoXCJBdXRyZXNQZXJzb25uZXNcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IFBlcnNvbm5lU2V1bGUgb2YgdW5pdFxuICAgIHwgQ291cGxlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgKHg6IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBQZXJzb25uZVNldWxlIHggLT4gKFwiUGVyc29ubmVTZXVsZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBDb3VwbGUgeCAtPiAoXCJDb3VwbGVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgQ29sbGVjdGl2aXRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEd1YWRlbG91cGUgb2YgdW5pdFxuICAgIHwgR3V5YW5lIG9mIHVuaXRcbiAgICB8IE1hcnRpbmlxdWUgb2YgdW5pdFxuICAgIHwgTGFSZXVuaW9uIG9mIHVuaXRcbiAgICB8IFNhaW50QmFydGhlbGVteSBvZiB1bml0XG4gICAgfCBTYWludE1hcnRpbiBvZiB1bml0XG4gICAgfCBNZXRyb3BvbGUgb2YgdW5pdFxuICAgIHwgU2FpbnRQaWVycmVFdE1pcXVlbG9uIG9mIHVuaXRcbiAgICB8IE1heW90dGUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9jb2xsZWN0aXZpdGUgKHg6IENvbGxlY3Rpdml0ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkNvbGxlY3Rpdml0w6lcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgR3VhZGVsb3VwZSB4IC0+IChcIkd1YWRlbG91cGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgR3V5YW5lIHggLT4gKFwiR3V5YW5lXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE1hcnRpbmlxdWUgeCAtPiAoXCJNYXJ0aW5pcXVlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IExhUmV1bmlvbiB4IC0+IChcIkxhUsOpdW5pb25cIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRCYXJ0aGVsZW15IHggLT4gKFwiU2FpbnRCYXJ0aMOpbGVteVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTYWludE1hcnRpbiB4IC0+IChcIlNhaW50TWFydGluXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE1ldHJvcG9sZSB4IC0+IChcIk3DqXRyb3BvbGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRQaWVycmVFdE1pcXVlbG9uIHggLT4gKFwiU2FpbnRQaWVycmVFdE1pcXVlbG9uXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE1heW90dGUgeCAtPiAoXCJNYXlvdHRlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFByaXNlRW5DaGFyZ2VFbmZhbnQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBvZiB1bml0XG4gICAgfCBHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgb2YgdW5pdFxuICAgIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIG9mIHVuaXRcbiAgICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIG9mIHVuaXRcbiAgICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9wcmlzZV9lbl9jaGFyZ2VfZW5mYW50ICh4OiBQcmlzZUVuQ2hhcmdlRW5mYW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUHJpc2VFbkNoYXJnZUVuZmFudFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIHggLT5cbiAgICAgIChcIkdhcmRlQWx0ZXJuw6llUGFydGFnZUFsbG9jYXRpb25zXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSB4IC0+XG4gICAgICAoXCJHYXJkZUFsdGVybsOpZUFsbG9jYXRhaXJlVW5pcXVlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSB4IC0+IChcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSB4IC0+XG4gICAgICAoXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc8OpZcOATGFGYW1pbGxlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggeCAtPlxuICAgICAgKFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnPDqWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IEF2YW50IG9mIHVuaXRcbiAgICB8IFBlbmRhbnQgb2YgdW5pdFxuICAgIHwgQXByZXMgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSAoeDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEF2YW50IHggLT4gKFwiQXZhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGVuZGFudCB4IC0+IChcIlBlbmRhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXByZXMgeCAtPiAoXCJBcHLDqHNcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcyA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50IG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25zRmFtaWxpYWxlcyBvZiB1bml0XG4gICAgfCBDb21wbGVtZW50RmFtaWxpYWwgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50IG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzICh4OiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiw4lsw6ltZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnQgeCAtPlxuICAgICAgKFwiUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgeCAtPiAoXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ29tcGxlbWVudEZhbWlsaWFsIHggLT4gKFwiQ29tcGzDqW1lbnRGYW1pbGlhbFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnQgeCAtPiAoXCJBbGxvY2F0aW9uTG9nZW1lbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uw4lkdWNhdGlvbkVuZmFudEhhbmRpY2Fww6lcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblJlbnRyw6llU2NvbGFpcmVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkpvdXJuYWxpw6hyZVByZXNlbmNlUGFyZW50YWxlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIENvbnZlbnRpb25CYWlsbGV1clNvY2lhbCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJOiBib29sO1xuICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX3BlcmN1ZTogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwgKHg6IENvbnZlbnRpb25CYWlsbGV1clNvY2lhbC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ29udmVudGlvbkJhaWxsZXVyU29jaWFsXCJdLFxuICBbKFwiY29udmVudGlvbm7DqV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSVwiLCBlbWJlZF9ib29sXG4gICAgeC5Db252ZW50aW9uQmFpbGxldXJTb2NpYWwuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJKTtcbiAgICAoXCJyw6lkdWN0aW9uX2xveWVyX3NvbGlkYXJpdMOpX3BlcsOndWVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNvbnZlbnRpb25CYWlsbGV1clNvY2lhbC5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9wZXJjdWUpXSlcblxuXG5tb2R1bGUgQ29udmVudGlvbkFOSEEgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2NvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfSUlfY2hhcF9JX3NlY18zOiBib29sfVxuZW5kXG5sZXQgZW1iZWRfY29udmVudGlvbl9hX25faF9hICh4OiBDb252ZW50aW9uQU5IQS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ29udmVudGlvbkFOSEFcIl0sXG4gIFsoXCJjb252ZW50aW9ubsOpX2xpdnJlX0lJSV90aXRyZV9JSV9jaGFwX0lfc2VjXzNcIiwgZW1iZWRfYm9vbFxuICAgIHguQ29udmVudGlvbkFOSEEuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9JSV9jaGFwX0lfc2VjXzMpXSlcblxuXG5tb2R1bGUgUGVyc29ubmVTb3VzTG9jYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRhdGVfbmFpc3NhbmNlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb246IGRhdGU7XG4gICAgY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzE6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcGVyc29ubmVfc291c19sb2NhdGlvbiAoeDogUGVyc29ubmVTb3VzTG9jYXRpb24udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlBlcnNvbm5lU291c0xvY2F0aW9uXCJdLFxuICBbKFwiZGF0ZV9uYWlzc2FuY2VfcGVyc29ubmVfc291c19sb2NhdGlvblwiLCBlbWJlZF9kYXRlXG4gICAgeC5QZXJzb25uZVNvdXNMb2NhdGlvbi5kYXRlX25haXNzYW5jZV9wZXJzb25uZV9zb3VzX2xvY2F0aW9uKTtcbiAgICAoXCJjb25mb3JtZV9hcnRpY2xlX2w0NDJfMVwiLCBlbWJlZF9ib29sXG4gICAgeC5QZXJzb25uZVNvdXNMb2NhdGlvbi5jb25mb3JtZV9hcnRpY2xlX2w0NDJfMSldKVxuXG5cbm1vZHVsZSBQYXRyaW1vaW5lID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBwcm9kdWlzYW50X3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNDogbW9uZXk7XG4gICAgbmVfcHJvZHVpc2FudF9wYXNfcmV2ZW51X3BlcmlvZGVfcjgyMl8zXzNfcjgyMl80OiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9wYXRyaW1vaW5lICh4OiBQYXRyaW1vaW5lLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJQYXRyaW1vaW5lXCJdLFxuICBbKFwicHJvZHVpc2FudF9yZXZlbnVfcMOpcmlvZGVfcjgyMl8zXzNfcjgyMl80XCIsIGVtYmVkX21vbmV5XG4gICAgeC5QYXRyaW1vaW5lLnByb2R1aXNhbnRfcmV2ZW51X3BlcmlvZGVfcjgyMl8zXzNfcjgyMl80KTtcbiAgICAoXCJuZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcMOpcmlvZGVfcjgyMl8zXzNfcjgyMl80XCIsIGVtYmVkX21vbmV5XG4gICAgeC5QYXRyaW1vaW5lLm5lX3Byb2R1aXNhbnRfcGFzX3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNCldKVxuXG5cbm1vZHVsZSBDb25kaXRpb25zRXRyYW5nZXJzID0gc3RydWN0XG4gIHR5cGUgdCA9IHtzYXRpc2ZhaXRfY29uZGl0aW9uc19sNTEyXzJfY29kZV9zZWN1cml0ZV9zb2NpYWxlOiBib29sfVxuZW5kXG5sZXQgZW1iZWRfY29uZGl0aW9uc19ldHJhbmdlcnMgKHg6IENvbmRpdGlvbnNFdHJhbmdlcnMudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNvbmRpdGlvbnPDiXRyYW5nZXJzXCJdLFxuICBbKFwic2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNvbmRpdGlvbnNFdHJhbmdlcnMuc2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc2VjdXJpdGVfc29jaWFsZSldKVxuXG5cbm1vZHVsZSBQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZHVyZWVfcmVzaWRlbmNlX2R1cmFudF9wZXJpb2RlX3JfODIyXzNfMV9zdXBlcmlldXJlX2FfNl9tb2lzOiBib29sO1xuICAgIHJlc3NvdXJjZXM6IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX3BlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llciAoeDogUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyXCJdLFxuICBbKFwiZHVyw6llX3LDqXNpZGVuY2VfZHVyYW50X3DDqXJpb2RlX3JfODIyXzNfMV9zdXDDqXJpZXVyZV/DoF82X21vaXNcIixcbiAgICBlbWJlZF9ib29sXG4gICAgeC5QZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci5kdXJlZV9yZXNpZGVuY2VfZHVyYW50X3BlcmlvZGVfcl84MjJfM18xX3N1cGVyaWV1cmVfYV82X21vaXMpO1xuICAgIChcInJlc3NvdXJjZXNcIiwgZW1iZWRfbW9uZXlcbiAgICB4LlBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLnJlc3NvdXJjZXMpXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX2NvdXJhbnRlOiBkYXRlO1xuICAgIGVsaWdpYmlsaXRlOiBib29sO1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZTogaW50ZWdlcjtcbiAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlOiBkZWNpbWFsIGFycmF5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCAoeDogRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5kYXRlX2NvdXJhbnRlKTtcbiAgICAoXCLDqWxpZ2liaWxpdMOpXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5lbGlnaWJpbGl0ZSk7XG4gICAgKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlKTtcbiAgICAoXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiLFxuICAgIGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKVxuICAgIHguRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUpXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHttb250YW50X3ByaW1lX2RlbWVuYWdlbWVudDogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgKHg6IEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiXSxcbiAgWyhcIm1vbnRhbnRfcHJpbWVfZMOpbcOpbmFnZW1lbnRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudC5tb250YW50X3ByaW1lX2RlbWVuYWdlbWVudCldKVxuXG5cbm1vZHVsZSBSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtyZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGU6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCAoeDogUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSxcbiAgWyhcInJlc3NvdXJjZXNfcHJpc2VzX2VuX2NvbXB0ZVwiLCBlbWJlZF9tb25leVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5yZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGUpXSlcblxuXG5tb2R1bGUgQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHttb250YW50OiBtb25leSAtPiBtb25leX1cbmVuZFxubGV0IGVtYmVkX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKHg6IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdLFxuICBbKFwibW9udGFudFwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50KV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNjogbW9uZXk7XG4gICAgcGxhZm9uZF9sb3llcl9kODIzXzE2XzI6IG1vbmV5O1xuICAgIHBhcnRpY2lwYXRpb25fbWluaW1hbGU6IG1vbmV5O1xuICAgIHRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlOiBkZWNpbWFsO1xuICAgIHBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGU6IG1vbmV5O1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGU6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGU6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiXSxcbiAgWyhcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNik7XG4gICAgKFwicGxhZm9uZF9sb3llcl9kODIzXzE2XzJcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBsYWZvbmRfbG95ZXJfZDgyM18xNl8yKTtcbiAgICAoXCJwYXJ0aWNpcGF0aW9uX21pbmltYWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX21pbmltYWxlKTtcbiAgICAoXCJ0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZVwiLCBlbWJlZF9kZWNpbWFsXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSk7XG4gICAgKFwicGFydGljaXBhdGlvbl9wZXJzb25uZWxsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSk7XG4gICAgKFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgKFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlID0gc3RydWN0XG4gIHR5cGUgdCA9IHttb250YW50OiBtb25leX1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSAoeDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdLFxuICBbKFwibW9udGFudFwiLCBlbWJlZF9tb25leSB4LkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS5tb250YW50KV0pXG5cblxubW9kdWxlIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtuX25vbWJyZV9wYXJ0c19kODMyXzI1OiBkZWNpbWFsfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyICh4OiBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJcIl0sXG4gIFsoXCJuX25vbWJyZV9wYXJ0c19kODMyXzI1XCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUpXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1OiBtb25leTtcbiAgICBjb2VmZmljaWVudF9yX2Q4MzJfMjU6IG1vbmV5O1xuICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjU6IGRlY2ltYWw7XG4gICAgZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGU6IG1vbmV5O1xuICAgIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGU6IG1vbmV5O1xuICAgIGVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlOiBtb25leTtcbiAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNTogZGVjaW1hbDtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl0sXG4gIFsoXCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNSk7XG4gICAgKFwiY29lZmZpY2llbnRfcl9kODMyXzI1XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1KTtcbiAgICAoXCJuX25vbWJyZV9wYXJ0c19kODMyXzI1XCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1KTtcbiAgICAoXCLDqXF1aXZhbGVuY2VfbG95ZXJfw6lsaWdpYmxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUpO1xuICAgIChcInBsYWZvbmRfw6lxdWl2YWxlbmNlX2xveWVyX8OpbGlnaWJsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUpO1xuICAgIChcIsOpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlKTtcbiAgICAoXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNVwiLCBlbWJlZF9kZWNpbWFsXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjUpO1xuICAgIChcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge25fbm9tYnJlX3BhcnRzX2Q4MzJfMTE6IGRlY2ltYWx9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGUgKHg6IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCJdLFxuICBbKFwibl9ub21icmVfcGFydHNfZDgzMl8xMVwiLCBlbWJlZF9kZWNpbWFsXG4gICAgeC5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS5uX25vbWJyZV9wYXJ0c19kODMyXzExKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbnN1YWxpdGVfZWxpZ2libGU6IG1vbmV5O1xuICAgIG1lbnN1YWxpdGVfbWluaW1hbGU6IG1vbmV5O1xuICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwOiBkZWNpbWFsO1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGU6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGU6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXSxcbiAgWyhcIm1lbnN1YWxpdMOpX8OpbGlnaWJsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX2VsaWdpYmxlKTtcbiAgICAoXCJtZW5zdWFsaXTDqV9taW5pbWFsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX21pbmltYWxlKTtcbiAgICAoXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMFwiLCBlbWJlZF9kZWNpbWFsXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwKTtcbiAgICAoXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF90cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUgKHg6IFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiVHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlXCJdLFxuICBbKFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiLCBlbWJlZF9tb25leVxuICAgIHguVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5UcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSldKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50ICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiXSxcbiAgWyhcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgKFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSldKVxuXG5cbm1vZHVsZSBJbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBhbmNpZW5fbG95ZXJfcHJpbmNpcGFsOiBtb25leTtcbiAgICBhbmNpZW5uZV9hbGxvY2F0aW9uX2xvZ2VtZW50OiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9pbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCAoeDogSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyXzRcIl0sXG4gIFsoXCJhbmNpZW5fbG95ZXJfcHJpbmNpcGFsXCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbl9sb3llcl9wcmluY2lwYWwpO1xuICAgIChcImFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuYW5jaWVubmVfYWxsb2NhdGlvbl9sb2dlbWVudCldKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCJdLFxuICBbKFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlKV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZTogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZTogbW9uZXkgLT4gbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSAoeDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXSxcbiAgWyhcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZTogZGVjaW1hbDtcbiAgICBlcXVpdmFsZW5jZV9sb3llcjogbW9uZXk7XG4gICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzOiBtb25leTtcbiAgICBsb3llcl9taW5pbWFsOiBtb25leTtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciAoeDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCJdLFxuICBbKFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZSk7XG4gICAgKFwiw6lxdWl2YWxlbmNlX2xveWVyXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcik7XG4gICAgKFwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXMpO1xuICAgIChcImxveWVyX21pbmltYWxcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmxveWVyX21pbmltYWwpO1xuICAgIChcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlKV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZTogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZTogbW9uZXkgLT4gbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQgKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCJdLFxuICBbKFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSldKVxuXG5cbm1vZHVsZSBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7YWdlX291dmVydHVyZV9kcm9pdDogZHVyYXRpb259XG5lbmRcbmxldCBlbWJlZF9vdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlICh4OiBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVcIl0sXG4gIFsoXCLDomdlX291dmVydHVyZV9kcm9pdFwiLCBlbWJlZF9kdXJhdGlvblxuICAgIHguT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUuYWdlX291dmVydHVyZV9kcm9pdCldKVxuXG5cbm1vZHVsZSBJbXBheWVEZXBlbnNlTG9nZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge21vbnRhbnRfaW1wYXllOiBtb25leX1cbmVuZFxubGV0IGVtYmVkX2ltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50ICh4OiBJbXBheWVEZXBlbnNlTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50XCJdLFxuICBbKFwibW9udGFudF9pbXBhecOpXCIsIGVtYmVkX21vbmV5IHguSW1wYXllRGVwZW5zZUxvZ2VtZW50Lm1vbnRhbnRfaW1wYXllKV0pXG5cblxubW9kdWxlIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGVsaWdpYmlsaXRlOiBib29sO1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGU6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGU6IG1vbmV5IC0+IG1vbmV5O1xuICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGU6IGRlY2ltYWwgYXJyYXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCAoeDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiXSxcbiAgWyhcIsOpbGlnaWJpbGl0w6lcIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5lbGlnaWJpbGl0ZSk7XG4gICAgKFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50cmFpdGVtZW50X2FpZGVfZmluYWxlKTtcbiAgICAoXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiLFxuICAgIGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlKV0pXG5cblxubW9kdWxlIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtlbGlnaWJpbGl0ZTogYm9vbDsgYWlkZV9maW5hbGU6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSAoeDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiXSxcbiAgWyhcIsOpbGlnaWJpbGl0w6lcIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUuZWxpZ2liaWxpdGUpO1xuICAgIChcImFpZGVfZmluYWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS5haWRlX2ZpbmFsZSldKVxuXG5cbm1vZHVsZSBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG4gIHR5cGUgdCA9IHttb250YW50OiBtb25leX1cbmVuZFxubGV0IGVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgKHg6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIFsoXCJtb250YW50XCIsIGVtYmVkX21vbmV5IHguQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy5tb250YW50KV0pXG5cblxubW9kdWxlIFNtaWMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2JydXRfaG9yYWlyZTogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9zbWljICh4OiBTbWljLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJTbWljXCJdLFxuICBbKFwiYnJ1dF9ob3JhaXJlXCIsIGVtYmVkX21vbmV5IHguU21pYy5icnV0X2hvcmFpcmUpXSlcblxuXG5tb2R1bGUgUHJldCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdHlwZV9wcmV0OiBUeXBlUHJldC50O1xuICAgIGRhdGVfc2lnbmF0dXJlOiBkYXRlO1xuICAgIHRpdHVsYWlyZV9wcmV0OiBUaXR1bGFpcmVQcmV0LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcHJldCAoeDogUHJldC50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiUHLDqnRcIl0sXG4gIFsoXCJ0eXBlX3Byw6p0XCIsIGVtYmVkX3R5cGVfcHJldCB4LlByZXQudHlwZV9wcmV0KTtcbiAgICAoXCJkYXRlX3NpZ25hdHVyZVwiLCBlbWJlZF9kYXRlIHguUHJldC5kYXRlX3NpZ25hdHVyZSk7XG4gICAgKFwidGl0dWxhaXJlX3Byw6p0XCIsIGVtYmVkX3RpdHVsYWlyZV9wcmV0IHguUHJldC50aXR1bGFpcmVfcHJldCldKVxuXG5cbm1vZHVsZSBOZXVmT3VBbmNpZW4gPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgTmV1ZiBvZiB1bml0XG4gICAgfCBBbmNpZW4gb2YgQW1lbGlvcmVQYXJPY2N1cGFudC50XG4gIGVuZFxubGV0IGVtYmVkX25ldWZfb3VfYW5jaWVuICh4OiBOZXVmT3VBbmNpZW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJOZXVmT3VBbmNpZW5cIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTmV1ZiB4IC0+IChcIk5ldWZcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQW5jaWVuIHggLT4gKFwiQW5jaWVuXCIsIGVtYmVkX2FtZWxpb3JlX3Bhcl9vY2N1cGFudCB4KSlcblxuXG5tb2R1bGUgVHJhbmNoZVJldmVudSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7aGF1dDogTGltaXRlVHJhbmNoZS50OyBiYXM6IG1vbmV5OyB0YXV4OiBkZWNpbWFsfVxuZW5kXG5sZXQgZW1iZWRfdHJhbmNoZV9yZXZlbnUgKHg6IFRyYW5jaGVSZXZlbnUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlRyYW5jaGVSZXZlbnVcIl0sXG4gIFsoXCJoYXV0XCIsIGVtYmVkX2xpbWl0ZV90cmFuY2hlIHguVHJhbmNoZVJldmVudS5oYXV0KTtcbiAgICAoXCJiYXNcIiwgZW1iZWRfbW9uZXkgeC5UcmFuY2hlUmV2ZW51LmJhcyk7XG4gICAgKFwidGF1eFwiLCBlbWJlZF9kZWNpbWFsIHguVHJhbmNoZVJldmVudS50YXV4KV0pXG5cblxubW9kdWxlIFRyYW5jaGVSZXZlbnVEZWNpbWFsID0gc3RydWN0XG4gIHR5cGUgdCA9IHtoYXV0OiBMaW1pdGVUcmFuY2hlRGVjaW1hbC50OyBiYXM6IGRlY2ltYWw7IHRhdXg6IGRlY2ltYWx9XG5lbmRcbmxldCBlbWJlZF90cmFuY2hlX3JldmVudV9kZWNpbWFsICh4OiBUcmFuY2hlUmV2ZW51RGVjaW1hbC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiVHJhbmNoZVJldmVudUTDqWNpbWFsXCJdLFxuICBbKFwiaGF1dFwiLCBlbWJlZF9saW1pdGVfdHJhbmNoZV9kZWNpbWFsIHguVHJhbmNoZVJldmVudURlY2ltYWwuaGF1dCk7XG4gICAgKFwiYmFzXCIsIGVtYmVkX2RlY2ltYWwgeC5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpO1xuICAgIChcInRhdXhcIiwgZW1iZWRfZGVjaW1hbCB4LlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpXSlcblxuXG5tb2R1bGUgQXV0cmVQZXJzb25uZUFDaGFyZ2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRhdGVfbmFpc3NhbmNlOiBkYXRlO1xuICAgIHJlc3NvdXJjZXM6IG1vbmV5O1xuICAgIGFzY2VuZGFudF9kZXNjZW5kYW50X2NvbGxhdGVyYWxfZGV1eGllbWVfdHJvaXNpZW1lX2RlZ3JlOiBib29sO1xuICAgIHBhcmVudGU6IFBhcmVudGUudDtcbiAgICBpbmNhcGFjaXRlXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaTogYm9vbDtcbiAgICBiZW5lZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3NlY3U6IGJvb2w7XG4gICAgdGl0dWxhaXJlX2FsbG9jYXRpb25fcGVyc29ubmVfYWdlZTogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9hdXRyZV9wZXJzb25uZV9hX2NoYXJnZSAoeDogQXV0cmVQZXJzb25uZUFDaGFyZ2UudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkF1dHJlUGVyc29ubmXDgENoYXJnZVwiXSxcbiAgWyhcImRhdGVfbmFpc3NhbmNlXCIsIGVtYmVkX2RhdGVcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLmRhdGVfbmFpc3NhbmNlKTtcbiAgICAoXCJyZXNzb3VyY2VzXCIsIGVtYmVkX21vbmV5XG4gICAgeC5BdXRyZVBlcnNvbm5lQUNoYXJnZS5yZXNzb3VyY2VzKTtcbiAgICAoXCJhc2NlbmRhbnRfZGVzY2VuZGFudF9jb2xsYXTDqXJhbF9kZXV4acOobWVfdHJvaXNpw6htZV9kZWdyw6lcIixcbiAgICBlbWJlZF9ib29sXG4gICAgeC5BdXRyZVBlcnNvbm5lQUNoYXJnZS5hc2NlbmRhbnRfZGVzY2VuZGFudF9jb2xsYXRlcmFsX2RldXhpZW1lX3Ryb2lzaWVtZV9kZWdyZSk7XG4gICAgKFwicGFyZW50w6lcIiwgZW1iZWRfcGFyZW50ZVxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UucGFyZW50ZSk7XG4gICAgKFwiaW5jYXBhY2l0w6lfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLmluY2FwYWNpdGVfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pKTtcbiAgICAoXCJiw6luw6lmaWNpYWlyZV9sMTYxXzE5X2wzNTFfOF9sNjQzXzNfc8OpY3VcIiwgZW1iZWRfYm9vbFxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UuYmVuZWZpY2lhaXJlX2wxNjFfMTlfbDM1MV84X2w2NDNfM19zZWN1KTtcbiAgICAoXCJ0aXR1bGFpcmVfYWxsb2NhdGlvbl9wZXJzb25uZV/DomfDqWVcIiwgZW1iZWRfYm9vbFxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UudGl0dWxhaXJlX2FsbG9jYXRpb25fcGVyc29ubmVfYWdlZSldKVxuXG5cbm1vZHVsZSBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBNb2luc0RlVHJvaXNFbmZhbnRzIG9mIHVuaXRcbiAgICB8IFBsdXNEZVRyb2lzRW5mYW50cyBvZiBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS50XG4gIGVuZFxubGV0IGVtYmVkX2RhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50XG4gICh4OiBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkRhdGVOYWlzc2FuY2VUcm9pc2nDqG1lT3VEZXJuaWVyUGx1c0VuZmFudFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBNb2luc0RlVHJvaXNFbmZhbnRzIHggLT4gKFwiTW9pbnNEZVRyb2lzRW5mYW50c1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBQbHVzRGVUcm9pc0VuZmFudHMgeCAtPlxuICAgICAgKFwiUGx1c0RlVHJvaXNFbmZhbnRzXCIsIGVtYmVkX2RhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlIHgpKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZWxpZ2liaWxpdGU6IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZTogaW50ZWdlcjtcbiAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlOiBkZWNpbWFsIGFycmF5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgKHg6IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCJdLFxuICBbKFwiw6lsaWdpYmlsaXTDqVwiLCBlbWJlZF90eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LmVsaWdpYmlsaXRlKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSk7XG4gICAgKFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIixcbiAgICBlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbClcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUpXSlcblxuXG5tb2R1bGUgTG9nZW1lbnRGb3llciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdHlwZV91c2VyOiBUeXBlTG9nZW1lbnRGb3llci50O1xuICAgIHJlbXBsaXRfY29uZGl0aW9uc19yODMyXzIxOiBib29sO1xuICAgIGNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSTogYm9vbDtcbiAgICBkYXRlX2NvbnZlbnRpb25uZW1lbnQ6IGRhdGU7XG4gICAgY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSTogYm9vbDtcbiAgICByZWRldmFuY2U6IG1vbmV5O1xuICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2OlxuICAgICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfbG9nZW1lbnRfZm95ZXIgKHg6IExvZ2VtZW50Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkxvZ2VtZW50Rm95ZXJcIl0sXG4gIFsoXCJ0eXBlXCIsIGVtYmVkX3R5cGVfbG9nZW1lbnRfZm95ZXJcbiAgICB4LkxvZ2VtZW50Rm95ZXIudHlwZV91c2VyKTtcbiAgICAoXCJyZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMVwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudEZveWVyLnJlbXBsaXRfY29uZGl0aW9uc19yODMyXzIxKTtcbiAgICAoXCJjb252ZW50aW9ubsOpX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvZ2VtZW50Rm95ZXIuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJKTtcbiAgICAoXCJkYXRlX2NvbnZlbnRpb25uZW1lbnRcIiwgZW1iZWRfZGF0ZVxuICAgIHguTG9nZW1lbnRGb3llci5kYXRlX2NvbnZlbnRpb25uZW1lbnQpO1xuICAgIChcImNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUlcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9nZW1lbnRGb3llci5jb25zdHJ1aXRfYXBwbGljYXRpb25fbG9pXzE5NTdfMTJfSUlJKTtcbiAgICAoXCJyZWRldmFuY2VcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkxvZ2VtZW50Rm95ZXIucmVkZXZhbmNlKTtcbiAgICAoXCJjYXTDqWdvcmllX8OpcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2XCIsXG4gICAgZW1iZWRfY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgICB4LkxvZ2VtZW50Rm95ZXIuY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTYpXSlcblxuXG5tb2R1bGUgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBpZGVudGlmaWFudDogaW50ZWdlcjtcbiAgICBvYmxpZ2F0aW9uX3Njb2xhaXJlOiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudDtcbiAgICByZW11bmVyYXRpb25fbWVuc3VlbGxlOiBtb25leTtcbiAgICBkYXRlX2RlX25haXNzYW5jZTogZGF0ZTtcbiAgICBwcmlzZV9lbl9jaGFyZ2U6IFByaXNlRW5DaGFyZ2VFbmZhbnQudDtcbiAgICBhX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzOiBib29sO1xuICAgIGJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudDogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9lbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoeDogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIFsoXCJpZGVudGlmaWFudFwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuaWRlbnRpZmlhbnQpO1xuICAgIChcIm9ibGlnYXRpb25fc2NvbGFpcmVcIiwgZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVcbiAgICB4LkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlKTtcbiAgICAoXCJyw6ltdW5lcmF0aW9uX21lbnN1ZWxsZVwiLCBlbWJlZF9tb25leVxuICAgIHguRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgIChcImRhdGVfZGVfbmFpc3NhbmNlXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5kYXRlX2RlX25haXNzYW5jZSk7XG4gICAgKFwicHJpc2VfZW5fY2hhcmdlXCIsIGVtYmVkX3ByaXNlX2VuX2NoYXJnZV9lbmZhbnRcbiAgICB4LkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5wcmlzZV9lbl9jaGFyZ2UpO1xuICAgIChcImFfZMOpasOgX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyk7XG4gICAgKFwiYsOpbsOpZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCldKVxuXG5cbm1vZHVsZSBFbmZhbnRBQ2hhcmdlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBpZGVudGlmaWFudDogaW50ZWdlcjtcbiAgICBiZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQ6IGJvb2w7XG4gICAgYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlczogYm9vbDtcbiAgICBkYXRlX2RlX25haXNzYW5jZTogZGF0ZTtcbiAgICByZW11bmVyYXRpb25fbWVuc3VlbGxlOiBtb25leTtcbiAgICBvYmxpZ2F0aW9uX3Njb2xhaXJlOiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudDtcbiAgICBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWU6IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUudFxuICB9XG5lbmRcbmxldCBlbWJlZF9lbmZhbnRfYV9jaGFyZ2UgKHg6IEVuZmFudEFDaGFyZ2UudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkVuZmFudMOAQ2hhcmdlXCJdLFxuICBbKFwiaWRlbnRpZmlhbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRW5mYW50QUNoYXJnZS5pZGVudGlmaWFudCk7XG4gICAgKFwiYsOpbsOpZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50QUNoYXJnZS5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpO1xuICAgIChcImFfZMOpasOgX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnRBQ2hhcmdlLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpO1xuICAgIChcImRhdGVfZGVfbmFpc3NhbmNlXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVuZmFudEFDaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgIChcInLDqW11bmVyYXRpb25fbWVuc3VlbGxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5FbmZhbnRBQ2hhcmdlLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgIChcIm9ibGlnYXRpb25fc2NvbGFpcmVcIiwgZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVcbiAgICB4LkVuZmFudEFDaGFyZ2Uub2JsaWdhdGlvbl9zY29sYWlyZSk7XG4gICAgKFwic2l0dWF0aW9uX2dhcmRlX2FsdGVybsOpZVwiLCBlbWJlZF9zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVcbiAgICB4LkVuZmFudEFDaGFyZ2Uuc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlKV0pXG5cblxubW9kdWxlIFR5cGVCYWlsbGV1ciA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBCYWlsbGV1clNvY2lhbCBvZiBDb252ZW50aW9uQmFpbGxldXJTb2NpYWwudFxuICAgIHwgQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsIG9mIENvbnZlbnRpb25BTkhBLnRcbiAgICB8IEJhaWxsZXVyUHJpdmUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90eXBlX2JhaWxsZXVyICh4OiBUeXBlQmFpbGxldXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlQmFpbGxldXJcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQmFpbGxldXJTb2NpYWwgeCAtPlxuICAgICAgKFwiQmFpbGxldXJTb2NpYWxcIiwgZW1iZWRfY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwgeClcbiAgICB8IEJhaWxsZXVyUHJpdmVBdmVjQ29udmVudGlvbm5lbWVudFNvY2lhbCB4IC0+XG4gICAgICAoXCJCYWlsbGV1clByaXbDqUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsXCIsIGVtYmVkX2NvbnZlbnRpb25fYV9uX2hfYSB4KVxuICAgIHwgQmFpbGxldXJQcml2ZSB4IC0+IChcIkJhaWxsZXVyUHJpdsOpXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIExvdWVPdVNvdXNMb3VlQURlc1RpZXJzID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IE5vbiBvZiB1bml0XG4gICAgfCBPdWkgb2YgUGVyc29ubmVTb3VzTG9jYXRpb24udFxuICBlbmRcbmxldCBlbWJlZF9sb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyAoeDogTG91ZU91U291c0xvdWVBRGVzVGllcnMudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJMb3XDqU91U291c0xvdcOpw4BEZXNUaWVyc1wiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb24geCAtPiAoXCJOb25cIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgT3VpIHggLT4gKFwiT3VpXCIsIGVtYmVkX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24geCkpXG5cblxubW9kdWxlIE5hdGlvbmFsaXRlID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IEZyYW5jYWlzZSBvZiB1bml0XG4gICAgfCBFdHJhbmdlcmUgb2YgQ29uZGl0aW9uc0V0cmFuZ2Vycy50XG4gIGVuZFxubGV0IGVtYmVkX25hdGlvbmFsaXRlICh4OiBOYXRpb25hbGl0ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIk5hdGlvbmFsaXTDqVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBGcmFuY2Fpc2UgeCAtPiAoXCJGcmFuw6dhaXNlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEV0cmFuZ2VyZSB4IC0+IChcIsOJdHJhbmfDqHJlXCIsIGVtYmVkX2NvbmRpdGlvbnNfZXRyYW5nZXJzIHgpKVxuXG5cbm1vZHVsZSBDaGFuZ2VtZW50TG9nZW1lbnREODQyNCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBDaGFuZ2VtZW50IG9mIEluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudFxuICAgIHwgUGFzRGVDaGFuZ2VtZW50IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgKHg6IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiQ2hhbmdlbWVudExvZ2VtZW50RDg0Ml80XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IENoYW5nZW1lbnQgeCAtPlxuICAgICAgKFwiQ2hhbmdlbWVudFwiLCBlbWJlZF9pbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCB4KVxuICAgIHwgUGFzRGVDaGFuZ2VtZW50IHggLT4gKFwiUGFzRGVDaGFuZ2VtZW50XCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFByb3ByaWV0YWlyZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbG9nZW1lbnRfc2l0dWVfY29tbXVuZV9kZXNlcXVpbGlicmVfbDgzMV8yOiBib29sO1xuICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZTogbW9uZXk7XG4gICAgY2hhcmdlc19tZW5zdWVsbGVzX3ByZXQ6IG1vbmV5O1xuICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50OiBkYXRlO1xuICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1OiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQ7XG4gICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNTogVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQ7XG4gICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlOiBib29sO1xuICAgIGNvcHJvcHJpZXRlOiBib29sO1xuICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3OiBib29sO1xuICAgIGFuY2llbm5ldGVfbG9nZW1lbnQ6IE5ldWZPdUFuY2llbi50O1xuICAgIHByZXQ6IFByZXQudFxuICB9XG5lbmRcbmxldCBlbWJlZF9wcm9wcmlldGFpcmUgKHg6IFByb3ByaWV0YWlyZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUHJvcHJpw6l0YWlyZVwiXSxcbiAgWyhcImxvZ2VtZW50X3NpdHXDqV9jb21tdW5lX2TDqXPDqXF1aWxpYnJlX2w4MzFfMlwiLCBlbWJlZF9ib29sXG4gICAgeC5Qcm9wcmlldGFpcmUubG9nZW1lbnRfc2l0dWVfY29tbXVuZV9kZXNlcXVpbGlicmVfbDgzMV8yKTtcbiAgICAoXCJtZW5zdWFsaXTDqV9wcmluY2lwYWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5Qcm9wcmlldGFpcmUubWVuc3VhbGl0ZV9wcmluY2lwYWxlKTtcbiAgICAoXCJjaGFyZ2VzX21lbnN1ZWxsZXNfcHLDqnRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LlByb3ByaWV0YWlyZS5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldCk7XG4gICAgKFwiZGF0ZV9lbnRyw6llX2xvZ2VtZW50XCIsIGVtYmVkX2RhdGVcbiAgICB4LlByb3ByaWV0YWlyZS5kYXRlX2VudHJlZV9sb2dlbWVudCk7XG4gICAgKFwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVcIiwgZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVcbiAgICB4LlByb3ByaWV0YWlyZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSk7XG4gICAgKFwidHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNVwiLCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81XG4gICAgeC5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSk7XG4gICAgKFwibG9jYWxfaGFiaXTDqV9wcmVtacOocmVfZm9pc19iw6luw6lmaWNpYWlyZVwiLCBlbWJlZF9ib29sXG4gICAgeC5Qcm9wcmlldGFpcmUubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlKTtcbiAgICAoXCJjb3Byb3ByacOpdMOpXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlByb3ByaWV0YWlyZS5jb3Byb3ByaWV0ZSk7XG4gICAgKFwic2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdcIiwgZW1iZWRfYm9vbFxuICAgIHguUHJvcHJpZXRhaXJlLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3KTtcbiAgICAoXCJhbmNpZW5uZXTDqV9sb2dlbWVudFwiLCBlbWJlZF9uZXVmX291X2FuY2llblxuICAgIHguUHJvcHJpZXRhaXJlLmFuY2llbm5ldGVfbG9nZW1lbnQpO1xuICAgIChcInByw6p0XCIsIGVtYmVkX3ByZXQgeC5Qcm9wcmlldGFpcmUucHJldCldKVxuXG5cbm1vZHVsZSBJbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBub21icmVfZW5mYW50c19hX25haXRyZV9hcHJlc190cm9pc2llbWVfbW9pc19ncm9zc2Vzc2U6IGludGVnZXI7XG4gICAgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX2VuZmFudF9vdV9kZXJuaWVyX3NpX3BsdXM6XG4gICAgICBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2luZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQgKHg6IEluZm9ybWF0aW9uc1ByaW1lRGVEZW1lbmFnZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkluZm9ybWF0aW9uc1ByaW1lRGVEw6ltw6luYWdlbWVudFwiXSxcbiAgWyhcIm5vbWJyZV9lbmZhbnRzX8OgX25hw650cmVfYXByw6hzX3Ryb2lzacOobWVfbW9pc19ncm9zc2Vzc2VcIixcbiAgICBlbWJlZF9pbnRlZ2VyXG4gICAgeC5JbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50Lm5vbWJyZV9lbmZhbnRzX2FfbmFpdHJlX2FwcmVzX3Ryb2lzaWVtZV9tb2lzX2dyb3NzZXNzZSk7XG4gICAgKFwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpw6htZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzXCIsXG4gICAgZW1iZWRfZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRcbiAgICB4LkluZm9ybWF0aW9uc1ByaW1lRGVEZW1lbmFnZW1lbnQuZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX2VuZmFudF9vdV9kZXJuaWVyX3NpX3BsdXMpXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRyb2l0X291dmVydDogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgLT4gYm9vbDtcbiAgICBjb25kaXRpb25zX2hvcnNfYWdlOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBib29sO1xuICAgIGFnZV9sNTEyXzNfMjogZHVyYXRpb247XG4gICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzE6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoeDogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIFsoXCJkcm9pdF9vdXZlcnRcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5kcm9pdF9vdXZlcnQpO1xuICAgIChcImNvbmRpdGlvbnNfaG9yc1/DomdlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSk7XG4gICAgKFwiw6JnZV9sNTEyXzNfMlwiLCBlbWJlZF9kdXJhdGlvblxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYWdlX2w1MTJfM18yKTtcbiAgICAoXCJyw6lnaW1lX291dHJlX21lcl9sNzUxXzFcIiwgZW1iZWRfYm9vbFxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucmVnaW1lX291dHJlX21lcl9sNzUxXzEpXSlcblxuXG5tb2R1bGUgUGVyc29ubmVBQ2hhcmdlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEVuZmFudEFDaGFyZ2Ugb2YgRW5mYW50QUNoYXJnZS50XG4gICAgfCBBdXRyZVBlcnNvbm5lQUNoYXJnZSBvZiBBdXRyZVBlcnNvbm5lQUNoYXJnZS50XG4gIGVuZFxubGV0IGVtYmVkX3BlcnNvbm5lX2FfY2hhcmdlICh4OiBQZXJzb25uZUFDaGFyZ2UudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJQZXJzb25uZcOAQ2hhcmdlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEVuZmFudEFDaGFyZ2UgeCAtPiAoXCJFbmZhbnTDgENoYXJnZVwiLCBlbWJlZF9lbmZhbnRfYV9jaGFyZ2UgeClcbiAgICB8IEF1dHJlUGVyc29ubmVBQ2hhcmdlIHggLT5cbiAgICAgIChcIkF1dHJlUGVyc29ubmXDgENoYXJnZVwiLCBlbWJlZF9hdXRyZV9wZXJzb25uZV9hX2NoYXJnZSB4KSlcblxuXG5tb2R1bGUgRGVtYW5kZXVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX25haXNzYW5jZTogZGF0ZTtcbiAgICBuYXRpb25hbGl0ZTogTmF0aW9uYWxpdGUudDtcbiAgICBwYXRyaW1vaW5lOiBQYXRyaW1vaW5lLnQ7XG4gICAgcGVyc29ubmVfaGViZXJnZWVfY2VudHJlX3NvaW5fbF9MMTYyXzIyXzNfc2VjdXJpdGVfc29jaWFsZTogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9kZW1hbmRldXIgKHg6IERlbWFuZGV1ci50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiRGVtYW5kZXVyXCJdLFxuICBbKFwiZGF0ZV9uYWlzc2FuY2VcIiwgZW1iZWRfZGF0ZSB4LkRlbWFuZGV1ci5kYXRlX25haXNzYW5jZSk7XG4gICAgKFwibmF0aW9uYWxpdMOpXCIsIGVtYmVkX25hdGlvbmFsaXRlXG4gICAgeC5EZW1hbmRldXIubmF0aW9uYWxpdGUpO1xuICAgIChcInBhdHJpbW9pbmVcIiwgZW1iZWRfcGF0cmltb2luZVxuICAgIHguRGVtYW5kZXVyLnBhdHJpbW9pbmUpO1xuICAgIChcInBlcnNvbm5lX2jDqWJlcmfDqWVfY2VudHJlX3NvaW5fbF9MMTYyXzIyXzNfc8OpY3VyaXTDqV9zb2NpYWxlXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguRGVtYW5kZXVyLnBlcnNvbm5lX2hlYmVyZ2VlX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3NlY3VyaXRlX3NvY2lhbGUpXSlcblxuXG5tb2R1bGUgTG9jYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGJhaWxsZXVyOiBUeXBlQmFpbGxldXIudDtcbiAgICBsb3llcl9wcmluY2lwYWw6IG1vbmV5O1xuICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlczogYm9vbDtcbiAgICBsb2dlbWVudF9lc3RfY2hhbWJyZTogYm9vbDtcbiAgICBjb2xvY2F0aW9uOiBib29sO1xuICAgIGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzOiBib29sO1xuICAgIGxvZ2VtZW50X21ldWJsZV9kODQyXzI6IGJvb2w7XG4gICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQ6IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfbG9jYXRpb24gKHg6IExvY2F0aW9uLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJMb2NhdGlvblwiXSxcbiAgWyhcImJhaWxsZXVyXCIsIGVtYmVkX3R5cGVfYmFpbGxldXIgeC5Mb2NhdGlvbi5iYWlsbGV1cik7XG4gICAgKFwibG95ZXJfcHJpbmNpcGFsXCIsIGVtYmVkX21vbmV5XG4gICAgeC5Mb2NhdGlvbi5sb3llcl9wcmluY2lwYWwpO1xuICAgIChcImLDqW7DqWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcMOpc1wiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2NhdGlvbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXMpO1xuICAgIChcImxvZ2VtZW50X2VzdF9jaGFtYnJlXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvY2F0aW9uLmxvZ2VtZW50X2VzdF9jaGFtYnJlKTtcbiAgICAoXCJjb2xvY2F0aW9uXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvY2F0aW9uLmNvbG9jYXRpb24pO1xuICAgIChcIsOiZ8OpZXNfb3VfaGFuZGljYXBfYWR1bHRlc19ow6liZXJnw6llc19vbsOpcmV1eF9wYXJ0aWN1bGllcnNcIixcbiAgICBlbWJlZF9ib29sXG4gICAgeC5Mb2NhdGlvbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVycyk7XG4gICAgKFwibG9nZW1lbnRfbWV1YmzDqV9kODQyXzJcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9jYXRpb24ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMik7XG4gICAgKFwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRcIiwgZW1iZWRfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRcbiAgICB4LkxvY2F0aW9uLmNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80KV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX2NvdXJhbnRlOiBkYXRlO1xuICAgIGVsaWdpYmlsaXRlOiBib29sO1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZTogaW50ZWdlcjtcbiAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlOiBkZWNpbWFsIGFycmF5O1xuICAgIGNvbmRpdGlvbl8yX3I4MjNfNDogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCAoeDogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmRhdGVfY291cmFudGUpO1xuICAgIChcIsOpbGlnaWJpbGl0w6lcIiwgZW1iZWRfYm9vbFxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZWxpZ2liaWxpdGUpO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlKTtcbiAgICAoXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiLFxuICAgIGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKVxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSk7XG4gICAgKFwiY29uZGl0aW9uXzJfcjgyM180XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuY29uZGl0aW9uXzJfcjgyM180KV0pXG5cblxubW9kdWxlIENhdGVnb3JpZUNhbGN1bEFQTCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBMb2NhdGlvbiBvZiBMb2NhdGlvbi50XG4gICAgfCBBY2Nlc3Npb25Qcm9wcmlldGUgb2YgUHJvcHJpZXRhaXJlLnRcbiAgICB8IExvZ2VtZW50Rm95ZXIgb2YgTG9nZW1lbnRGb3llci50XG4gIGVuZFxubGV0IGVtYmVkX2NhdGVnb3JpZV9jYWxjdWxfYV9wX2wgKHg6IENhdGVnb3JpZUNhbGN1bEFQTC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkNhdMOpZ29yaWVDYWxjdWxBUExcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTG9jYXRpb24geCAtPiAoXCJMb2NhdGlvblwiLCBlbWJlZF9sb2NhdGlvbiB4KVxuICAgIHwgQWNjZXNzaW9uUHJvcHJpZXRlIHggLT4gKFwiQWNjZXNzaW9uUHJvcHJpw6l0w6lcIiwgZW1iZWRfcHJvcHJpZXRhaXJlIHgpXG4gICAgfCBMb2dlbWVudEZveWVyIHggLT4gKFwiTG9nZW1lbnRGb3llclwiLCBlbWJlZF9sb2dlbWVudF9mb3llciB4KSlcblxuXG5tb2R1bGUgTW9kZU9jY3VwYXRpb24gPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgTG9jYXRhaXJlIG9mIExvY2F0aW9uLnRcbiAgICB8IFJlc2lkZW50TG9nZW1lbnRGb3llciBvZiBMb2dlbWVudEZveWVyLnRcbiAgICB8IEFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gb2YgUHJvcHJpZXRhaXJlLnRcbiAgICB8IFNvdXNMb2NhdGFpcmUgb2YgTG9jYXRpb24udFxuICAgIHwgTG9jYXRpb25BY2Nlc3Npb24gb2YgUHJvcHJpZXRhaXJlLnRcbiAgZW5kXG5sZXQgZW1iZWRfbW9kZV9vY2N1cGF0aW9uICh4OiBNb2RlT2NjdXBhdGlvbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIk1vZGVPY2N1cGF0aW9uXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IExvY2F0YWlyZSB4IC0+IChcIkxvY2F0YWlyZVwiLCBlbWJlZF9sb2NhdGlvbiB4KVxuICAgIHwgUmVzaWRlbnRMb2dlbWVudEZveWVyIHggLT5cbiAgICAgIChcIlLDqXNpZGVudExvZ2VtZW50Rm95ZXJcIiwgZW1iZWRfbG9nZW1lbnRfZm95ZXIgeClcbiAgICB8IEFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24geCAtPlxuICAgICAgKFwiQWNjZXNzaW9uUHJvcHJpw6l0w6lMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uXCIsIGVtYmVkX3Byb3ByaWV0YWlyZSB4KVxuICAgIHwgU291c0xvY2F0YWlyZSB4IC0+IChcIlNvdXNMb2NhdGFpcmVcIiwgZW1iZWRfbG9jYXRpb24geClcbiAgICB8IExvY2F0aW9uQWNjZXNzaW9uIHggLT4gKFwiTG9jYXRpb25BY2Nlc3Npb25cIiwgZW1iZWRfcHJvcHJpZXRhaXJlIHgpKVxuXG5cbm1vZHVsZSBMb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVzaWRlbmNlX3ByaW5jaXBhbGU6IGJvb2w7XG4gICAgZXN0X2VocGFkX291X21haXNvbl9hdXRvbm9taWVfbDMxM18xMl9hc2Y6IGJvb2w7XG4gICAgbW9kZV9vY2N1cGF0aW9uOiBNb2RlT2NjdXBhdGlvbi50O1xuICAgIHByb3ByaWV0YWlyZTogUGFyZW50T3VBdXRyZS50O1xuICAgIGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzOiBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy50O1xuICAgIHVzdWZydWl0OiBQYXJlbnRPdUF1dHJlLnQ7XG4gICAgbG9nZW1lbnRfZGVjZW50X2w4OV80NjI6IGJvb2w7XG4gICAgc3VyZmFjZV9tX2NhcnJlczogaW50ZWdlcjtcbiAgICB6b25lOiBab25lREhhYml0YXRpb24udFxuICB9XG5lbmRcbmxldCBlbWJlZF9sb2dlbWVudCAoeDogTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIkxvZ2VtZW50XCJdLFxuICBbKFwicsOpc2lkZW5jZV9wcmluY2lwYWxlXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvZ2VtZW50LnJlc2lkZW5jZV9wcmluY2lwYWxlKTtcbiAgICAoXCJlc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZlwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudC5lc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZik7XG4gICAgKFwibW9kZV9vY2N1cGF0aW9uXCIsIGVtYmVkX21vZGVfb2NjdXBhdGlvblxuICAgIHguTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKTtcbiAgICAoXCJwcm9wcmnDqXRhaXJlXCIsIGVtYmVkX3BhcmVudF9vdV9hdXRyZVxuICAgIHguTG9nZW1lbnQucHJvcHJpZXRhaXJlKTtcbiAgICAoXCJsb3XDqV9vdV9zb3VzX2xvdcOpX8OgX2Rlc190aWVyc1wiLCBlbWJlZF9sb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyc1xuICAgIHguTG9nZW1lbnQubG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMpO1xuICAgIChcInVzdWZydWl0XCIsIGVtYmVkX3BhcmVudF9vdV9hdXRyZVxuICAgIHguTG9nZW1lbnQudXN1ZnJ1aXQpO1xuICAgIChcImxvZ2VtZW50X2RlY2VudF9sODlfNDYyXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvZ2VtZW50LmxvZ2VtZW50X2RlY2VudF9sODlfNDYyKTtcbiAgICAoXCJzdXJmYWNlX21fY2FycsOpc1wiLCBlbWJlZF9pbnRlZ2VyIHguTG9nZW1lbnQuc3VyZmFjZV9tX2NhcnJlcyk7XG4gICAgKFwiem9uZVwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvbiB4LkxvZ2VtZW50LnpvbmUpXSlcblxuXG5tb2R1bGUgTWVuYWdlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBwcmVzdGF0aW9uc19yZWN1ZXM6IFByZXN0YXRpb25SZWN1ZS50IGFycmF5O1xuICAgIGxvZ2VtZW50OiBMb2dlbWVudC50O1xuICAgIHBlcnNvbm5lc19hX2NoYXJnZTogUGVyc29ubmVBQ2hhcmdlLnQgYXJyYXk7XG4gICAgbm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnQ6IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZTogU2l0dWF0aW9uRmFtaWxpYWxlLnQ7XG4gICAgY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpOiBib29sO1xuICAgIGVuZmFudF9hX25haXRyZV9hcHJlc19xdWF0cmllbWVfbW9pc19ncm9zc2Vzc2U6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfbWVuYWdlICh4OiBNZW5hZ2UudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIk3DqW5hZ2VcIl0sXG4gIFsoXCJwcmVzdGF0aW9uc19yZcOndWVzXCIsIGVtYmVkX2FycmF5IChlbWJlZF9wcmVzdGF0aW9uX3JlY3VlKVxuICAgIHguTWVuYWdlLnByZXN0YXRpb25zX3JlY3Vlcyk7XG4gICAgKFwibG9nZW1lbnRcIiwgZW1iZWRfbG9nZW1lbnQgeC5NZW5hZ2UubG9nZW1lbnQpO1xuICAgIChcInBlcnNvbm5lc1/DoF9jaGFyZ2VcIiwgZW1iZWRfYXJyYXkgKGVtYmVkX3BlcnNvbm5lX2FfY2hhcmdlKVxuICAgIHguTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSk7XG4gICAgKFwibm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguTWVuYWdlLm5vbWJyZV9hdXRyZXNfb2NjdXBhbnRzX2xvZ2VtZW50KTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlXCIsIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVcbiAgICB4Lk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKTtcbiAgICAoXCJjb25kaXRpb25fcmF0dGFjaMOpX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpXCIsIGVtYmVkX2Jvb2xcbiAgICB4Lk1lbmFnZS5jb25kaXRpb25fcmF0dGFjaGVfZm95ZXJfZmlzY2FsX3BhcmVudF9pZmkpO1xuICAgIChcImVuZmFudF/DoF9uYcOudHJlX2FwcsOoc19xdWF0cmnDqG1lX21vaXNfZ3Jvc3Nlc3NlXCIsIGVtYmVkX2Jvb2xcbiAgICB4Lk1lbmFnZS5lbmZhbnRfYV9uYWl0cmVfYXByZXNfcXVhdHJpZW1lX21vaXNfZ3Jvc3Nlc3NlKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbjogdW5pdCAtPiBib29sO1xuICAgIGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luOiB1bml0IC0+IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gKHg6IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luKTtcbiAgICAoXCJjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4pXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiAoeDogRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudF9pblwiXSxcbiAgWyhcIm3DqW5hZ2VfaW5cIiwgZW1iZWRfbWVuYWdlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRlbWFuZGV1cl9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgbWVuYWdlX2luOiBNZW5hZ2UudDtcbiAgICBkZW1hbmRldXJfaW46IERlbWFuZGV1ci50O1xuICAgIGJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW46IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiAoeDogRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudF9pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGVtYW5kZXVyX2luKTtcbiAgICAoXCJiw6luw6lmaWNpZV9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbildKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgaW5mb3JtYXRpb25zX2luOiBJbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50LnQ7XG4gICAgZGF0ZV9lbW1lbmFnZW1lbnRfaW46IGRhdGU7XG4gICAgbWVuYWdlX2luOiBNZW5hZ2UudDtcbiAgICBkZW1hbmRldXJfaW46IERlbWFuZGV1ci50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzX2luOiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4gKHg6IEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50X2luXCJdLFxuICBbKFwiaW5mb3JtYXRpb25zX2luXCIsIGVtYmVkX2luZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnRcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmluZm9ybWF0aW9uc19pbik7XG4gICAgKFwiZGF0ZV9lbW3DqW5hZ2VtZW50X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmRhdGVfZW1tZW5hZ2VtZW50X2luKTtcbiAgICAoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4ubWVuYWdlX2luKTtcbiAgICAoXCJkZW1hbmRldXJfaW5cIiwgZW1iZWRfZGVtYW5kZXVyXG4gICAgeC5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kZW1hbmRldXJfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiZMOpcGVuc2VzX2p1c3RpZmnDqWVzX3LDqWVsbGVtZW50X2VuZ2Fnw6llc19pblwiLCBlbWJlZF9tb25leVxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzX2luKV0pXG5cblxubW9kdWxlIFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVzc291cmNlc19kZW1hbmRldXJfaW46IG1vbmV5O1xuICAgIHJlc3NvdXJjZXNfY29uam9pbnRfaW46IG1vbmV5O1xuICAgIHBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW46XG4gICAgICBQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci50IGFycmF5O1xuICAgIGRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luOiBib29sO1xuICAgIGNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW46IGJvb2w7XG4gICAgcGVyc29ubmVzX2FfY2hhcmdlX2luOiBQZXJzb25uZUFDaGFyZ2UudCBhcnJheTtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2luOiBTaXR1YXRpb25GYW1pbGlhbGUudDtcbiAgICBtb2RlX29jY3VwYXRpb25faW46IE1vZGVPY2N1cGF0aW9uLnQ7XG4gICAgY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pbjogYm9vbDtcbiAgICBkZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlc19pbjogYm9vbDtcbiAgICBkYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXRfaW46IGRhdGU7XG4gICAgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9pbjpcbiAgICAgIFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwudDtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbjogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiAoeDogUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50X2luXCJdLFxuICBbKFwicmVzc291cmNlc19kZW1hbmRldXJfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX2RlbWFuZGV1cl9pbik7XG4gICAgKFwicmVzc291cmNlc19jb25qb2ludF9pblwiLCBlbWJlZF9tb25leVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnJlc3NvdXJjZXNfY29uam9pbnRfaW4pO1xuICAgIChcInBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW5cIixcbiAgICBlbWJlZF9hcnJheSAoZW1iZWRfcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyKVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW4pO1xuICAgIChcImRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdMOpX3LDqW11bsOpcsOpZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW4pO1xuICAgIChcImNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0w6lfcsOpbXVuw6lyw6llX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luKTtcbiAgICAoXCJwZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2FycmF5IChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSlcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfaW5cIiwgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4pO1xuICAgIChcIm1vZGVfb2NjdXBhdGlvbl9pblwiLCBlbWJlZF9tb2RlX29jY3VwYXRpb25cbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4pO1xuICAgIChcImNvbmRpdGlvbl/DomdlX2JvdXJzZV9lbnNlaWduZW1lbnRfc3Vww6lyaWV1cl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pbik7XG4gICAgKFwiZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc1/DqXR1ZGVzX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlc19pbik7XG4gICAgKFwiZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXRfaW4pO1xuICAgIChcInBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfaW5cIixcbiAgICBlbWJlZF9wYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19iYXNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4pXSlcblxuXG5tb2R1bGUgQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfY291cmFudGVfaW46IGRhdGV9XG5lbmRcbmxldCBlbWJlZF9jb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luICh4OiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50X2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGxveWVyX3ByaW5jaXBhbF9iYXNlX2luOiBtb25leTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbjogYm9vbDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV9pbjogYm9vbDtcbiAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbjogYm9vbDtcbiAgICB0eXBlX2FpZGVfaW46IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudDtcbiAgICBjb2xvY2F0aW9uX2luOiBib29sO1xuICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luOiBtb25leTtcbiAgICBsb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmX2luXCJdLFxuICBbKFwibG95ZXJfcHJpbmNpcGFsX2Jhc2VfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2Jhc2VfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJiw6luw6lmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXDDqXNfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi56b25lX2luKTtcbiAgICAoXCJsb2dlbWVudF9lc3RfY2hhbWJyZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luKTtcbiAgICAoXCLDomfDqWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaMOpYmVyZ8OpZXNfb27DqXJldXhfcGFydGljdWxpZXJzX2luXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbik7XG4gICAgKFwidHlwZV9haWRlX2luXCIsIGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luKTtcbiAgICAoXCJjb2xvY2F0aW9uX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbik7XG4gICAgKFwicsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbik7XG4gICAgKFwibG9nZW1lbnRfbWV1YmzDqV9kODQyXzJfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbjogYm9vbDtcbiAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1X2luOiBkZWNpbWFsXG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiAoeDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVfaW5cIl0sXG4gIFsoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcImNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4pO1xuICAgIChcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW5cIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfaW46IGJvb2w7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiAoeDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJfaW5cIl0sXG4gIFsoXCJjb25kaXRpb25fMl9kdV84MzJfMjVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICB0eXBlX2xvZ2VtZW50X2ZveWVyX2luOiBUeXBlTG9nZW1lbnRGb3llci50O1xuICAgIGRhdGVfY29udmVudGlvbm5lbWVudF9pbjogZGF0ZTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIHJlZGV2YW5jZV9pbjogbW9uZXk7XG4gICAgY29uZGl0aW9uXzJfZHVfODMyXzI1X2luOiB1bml0IC0+IGJvb2w7XG4gICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV9pbjogdW5pdCAtPiBkZWNpbWFsXG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4gKHg6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyX2luXCJdLFxuICBbKFwidHlwZV9sb2dlbWVudF9mb3llcl9pblwiLCBlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luKTtcbiAgICAoXCJkYXRlX2NvbnZlbnRpb25uZW1lbnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicmVkZXZhbmNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4pO1xuICAgIChcImNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbik7XG4gICAgKFwibl9ub21icmVfcGFydHNfZDgzMl8yNV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiAoeDogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmnDqXTDqV9pblwiXSxcbiAgWyhcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luOiBtb25leTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW46IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUudDtcbiAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X2luOiBkYXRlO1xuICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbjogYm9vbDtcbiAgICBkYXRlX2VudHJlZV9sb2dlbWVudF9pbjogZGF0ZTtcbiAgICBjb3Byb3ByaWV0ZV9pbjogYm9vbDtcbiAgICBzaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbjogYm9vbDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICB0eXBlX3ByZXRfaW46IFR5cGVQcmV0LnQ7XG4gICAgYW5jaWVubmV0ZV9sb2dlbWVudF9pbjogTmV1Zk91QW5jaWVuLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gKHg6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqV9pblwiXSxcbiAgWyhcIm1lbnN1YWxpdMOpX3ByaW5jaXBhbGVfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cIixcbiAgICBlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbik7XG4gICAgKFwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2luXCIsIGVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luKTtcbiAgICAoXCJkYXRlX3NpZ25hdHVyZV9wcsOqdF9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pbik7XG4gICAgKFwibG9jYWxfaGFiaXTDqV9wcmVtacOocmVfZm9pc19iw6luw6lmaWNpYWlyZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luKTtcbiAgICAoXCJkYXRlX2VudHLDqWVfbG9nZW1lbnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luKTtcbiAgICAoXCJjb3Byb3ByacOpdMOpX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uem9uZV9pbik7XG4gICAgKFwidHlwZV9wcsOqdF9pblwiLCBlbWJlZF90eXBlX3ByZXRcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3ByZXRfaW4pO1xuICAgIChcImFuY2llbm5ldMOpX2xvZ2VtZW50X2luXCIsIGVtYmVkX25ldWZfb3VfYW5jaWVuXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uYW5jaWVubmV0ZV9sb2dlbWVudF9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1vZGVfb2NjdXBhdGlvbl9pbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICB0eXBlX2FpZGVfaW46IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudDtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW46IG1vbmV5O1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfaW46IFNpdHVhdGlvbkZhbWlsaWFsZS50O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50X2luXCJdLFxuICBbKFwibW9kZV9vY2N1cGF0aW9uX2luXCIsIGVtYmVkX21vZGVfb2NjdXBhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbik7XG4gICAgKFwidHlwZV9haWRlX2luXCIsIGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50eXBlX2FpZGVfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9zYW5zX2Fycm9uZGlfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfaW5cIiwgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uem9uZV9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGxveWVyX3ByaW5jaXBhbF9pbjogbW9uZXk7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luOiBtb25leTtcbiAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW46IGJvb2w7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQ7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfaW46IGJvb2w7XG4gICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW46IGJvb2w7XG4gICAgdHlwZV9haWRlX2luOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQ7XG4gICAgY29sb2NhdGlvbl9pbjogYm9vbDtcbiAgICByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbjogbW9uZXk7XG4gICAgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbjogYm9vbDtcbiAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pbjogQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZfaW5cIl0sXG4gIFsoXCJsb3llcl9wcmluY2lwYWxfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb3llcl9wcmluY2lwYWxfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcImLDqW7DqWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcMOpc19pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi56b25lX2luKTtcbiAgICAoXCJsb2dlbWVudF9lc3RfY2hhbWJyZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW4pO1xuICAgIChcIsOiZ8OpZXNfb3VfaGFuZGljYXBfYWR1bHRlc19ow6liZXJnw6llc19vbsOpcmV1eF9wYXJ0aWN1bGllcnNfaW5cIixcbiAgICBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4pO1xuICAgIChcInR5cGVfYWlkZV9pblwiLCBlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luKTtcbiAgICAoXCJjb2xvY2F0aW9uX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luKTtcbiAgICAoXCJyw6lkdWN0aW9uX2xveWVyX3NvbGlkYXJpdMOpX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4pO1xuICAgIChcImxvZ2VtZW50X21ldWJsw6lfZDg0Ml8yX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luKTtcbiAgICAoXCJjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pblwiLCBlbWJlZF9jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbjogbW9uZXk7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50O1xuICAgIHpvbmVfaW46IFpvbmVESGFiaXRhdGlvbi50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luOiBtb25leTtcbiAgICBzaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbjogYm9vbDtcbiAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X2luOiBkYXRlO1xuICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbjogVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQ7XG4gICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luOiBib29sO1xuICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50X2luOiBkYXRlO1xuICAgIGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0X2luOiBtb25leTtcbiAgICBjb3Byb3ByaWV0ZV9pbjogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lfaW5cIl0sXG4gIFsoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cIixcbiAgICBlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi56b25lX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcIm1lbnN1YWxpdMOpX3ByaW5jaXBhbGVfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4pO1xuICAgIChcImRhdGVfc2lnbmF0dXJlX3Byw6p0X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4pO1xuICAgIChcInR5cGVfdHJhdmF1eF9sb2dlbWVudF9pblwiLCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW4pO1xuICAgIChcImxvY2FsX2hhYml0w6lfcHJlbWnDqHJlX2ZvaXNfYsOpbsOpZmljaWFpcmVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luKTtcbiAgICAoXCJkYXRlX2VudHLDqWVfbG9nZW1lbnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW4pO1xuICAgIChcImNoYXJnZXNfbWVuc3VlbGxlc19wcsOqdF9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW4pO1xuICAgIChcImNvcHJvcHJpw6l0w6lfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY29wcm9wcmlldGVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdHlwZV9sb2dlbWVudF9mb3llcl9pbjogVHlwZUxvZ2VtZW50Rm95ZXIudDtcbiAgICBkYXRlX2NvbnZlbnRpb25uZW1lbnRfaW46IGRhdGU7XG4gICAgcmVkZXZhbmNlX2luOiBtb25leTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luOlxuICAgICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyX2luXCJdLFxuICBbKFwidHlwZV9sb2dlbWVudF9mb3llcl9pblwiLCBlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW4pO1xuICAgIChcImRhdGVfY29udmVudGlvbm5lbWVudF9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmRhdGVfY29udmVudGlvbm5lbWVudF9pbik7XG4gICAgKFwicmVkZXZhbmNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnJlZGV2YW5jZV9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJjYXTDqWdvcmllX8OpcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luXCIsXG4gICAgZW1iZWRfY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1vZGVfb2NjdXBhdGlvbl9pbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW46IG1vbmV5O1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfaW46IFNpdHVhdGlvbkZhbWlsaWFsZS50O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICB0eXBlX2FpZGVfaW46IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiAoeDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudF9pblwiXSxcbiAgWyhcIm1vZGVfb2NjdXBhdGlvbl9pblwiLCBlbWJlZF9tb2RlX29jY3VwYXRpb25cbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX3NhbnNfYXJyb25kaV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2luXCIsIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwidHlwZV9haWRlX2luXCIsIGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnR5cGVfYWlkZV9pbildKVxuXG5cbm1vZHVsZSBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtkYXRlX25haXNzYW5jZV9hc3N1cmVfaW46IGRhdGV9XG5lbmRcbmxldCBlbWJlZF9vdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luICh4OiBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZV9pblwiXSxcbiAgWyhcImRhdGVfbmFpc3NhbmNlX2Fzc3Vyw6lfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi5kYXRlX25haXNzYW5jZV9hc3N1cmVfaW4pXSlcblxuXG5tb2R1bGUgSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1vZGVfb2NjdXBhdGlvbl9pbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICBhaWRlX3ZlcnNlZV9pbjogVmVyc2VtZW50QS50O1xuICAgIG1vbnRhbnRfYXBsX2luOiBtb25leTtcbiAgICBtb250YW50X2NoYXJnZXNfaW46IG1vbmV5O1xuICAgIGRlcGVuc2VfbG9nZW1lbnRfaW46IERlcGVuc2VMb2dlbWVudC50O1xuICAgIG1vbnRhbnRfZGV0dGVfaW46IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2ltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luICh4OiBJbXBheWVEZXBlbnNlTG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiSW1wYXnDqUTDqXBlbnNlTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJtb2RlX29jY3VwYXRpb25faW5cIiwgZW1iZWRfbW9kZV9vY2N1cGF0aW9uXG4gICAgeC5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4pO1xuICAgIChcImFpZGVfdmVyc8OpZV9pblwiLCBlbWJlZF92ZXJzZW1lbnRfYVxuICAgIHguSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4uYWlkZV92ZXJzZWVfaW4pO1xuICAgIChcIm1vbnRhbnRfYXBsX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb250YW50X2FwbF9pbik7XG4gICAgKFwibW9udGFudF9jaGFyZ2VzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb250YW50X2NoYXJnZXNfaW4pO1xuICAgIChcImTDqXBlbnNlX2xvZ2VtZW50X2luXCIsIGVtYmVkX2RlcGVuc2VfbG9nZW1lbnRcbiAgICB4LkltcGF5ZURlcGVuc2VMb2dlbWVudEluLmRlcGVuc2VfbG9nZW1lbnRfaW4pO1xuICAgIChcIm1vbnRhbnRfZGV0dGVfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfZGV0dGVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtZW5hZ2VfaW46IE1lbmFnZS50O1xuICAgIGRlbWFuZGV1cl9pbjogRGVtYW5kZXVyLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luOiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luICh4OiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLm1lbmFnZV9pbik7XG4gICAgKFwiZGVtYW5kZXVyX2luXCIsIGVtYmVkX2RlbWFuZGV1clxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRlbWFuZGV1cl9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX3ByaXNlc19lbl9jb21wdGVfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luKV0pXG5cblxubW9kdWxlIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW46IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gKHg6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZV9pblwiXSxcbiAgWyhcIm3DqW5hZ2VfaW5cIiwgZW1iZWRfbWVuYWdlXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLm1lbmFnZV9pbik7XG4gICAgKFwiZGVtYW5kZXVyX2luXCIsIGVtYmVkX2RlbWFuZGV1clxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5kZW1hbmRldXJfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luKV0pXG5cblxubW9kdWxlIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZX1cbmVuZFxubGV0IGVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gKHg6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc19pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4pXSlcblxuXG5tb2R1bGUgU21pY0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtkYXRlX2NvdXJhbnRlX2luOiBkYXRlOyByZXNpZGVuY2VfaW46IENvbGxlY3Rpdml0ZS50fVxuZW5kXG5sZXQgZW1iZWRfc21pY19pbiAoeDogU21pY0luLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJTbWljX2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5TbWljSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGUgeC5TbWljSW4ucmVzaWRlbmNlX2luKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgcHJlc3RhdGlvbl9jb3VyYW50ZV9pbjogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50O1xuICAgIHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc19pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJwcmVzdGF0aW9uX2NvdXJhbnRlX2luXCIsIGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luKTtcbiAgICAoXCJyw6lzaWRlbmNlX2luXCIsIGVtYmVkX2NvbGxlY3Rpdml0ZVxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4pXSlcblxuXG5cblxubGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW46IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpIDogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGV4b25lcmVfY3NnXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcImV4b27DqXLDqV9jc2dcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUxODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MTg7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUxODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTUxODsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTM2LTEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogRGUgbGEgY29udHJpYnV0aW9uIHNvY2lhbGUgc3VyIGxlcyByZXZlbnVzIGQnYWN0aXZpdMOpIGV0IHN1ciBsZXMgcmV2ZW51cyBkZSByZW1wbGFjZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDYgOiBDb250cmlidXRpb24gc29jaWFsZSBnw6luw6lyYWxpc8OpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJOiBUaXRyZSBJSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgcmVsYXRpdmVzIGF1IGZpbmFuY2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT01MTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTE4OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTE4OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfY3Jkc186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJ0YXV4X2NyZHNcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUxNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MTc7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTE7IHN0YXJ0X2NvbHVtbj0zOTsgZW5kX2xpbmU9MTkxOyBlbmRfY29sdW1uPTY4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogRGVzIGNvbnRyaWJ1dGlvbnMgcG91ciBsZSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGUuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiT3Jkb25uYW5jZSBuwrAgOTYtNTAgZHUgMjQgamFudmllciAxOTk2IHJlbGF0aXZlIGF1IHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZVwiXX1cbiAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA1XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUxNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MTc7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwibW9udGFudFwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTIwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTUyMDsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERlcyBjb250cmlidXRpb25zIHBvdXIgbGUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiT3Jkb25uYW5jZSBuwrAgOTYtNTAgZHUgMjQgamFudmllciAxOTk2IHJlbGF0aXZlIGF1IHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDkpICgxKSkpKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gb19tdWx0X21vbl9yYXQgcGFyYW1fIHRhdXhfY3Jkc18pKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTIwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTUyMDsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MjA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTIwOyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAodHJ5IGV4b25lcmVfY3NnXyB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTc7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogRGVzIGNvbnRyaWJ1dGlvbnMgcG91ciBsZSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGUuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJPcmRvbm5hbmNlIG7CsCA5Ni01MCBkdSAyNCBqYW52aWVyIDE5OTYgcmVsYXRpdmUgYXUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTc7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogRGVzIGNvbnRyaWJ1dGlvbnMgcG91ciBsZSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGUuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJPcmRvbm5hbmNlIG7CsCA5Ni01MCBkdSAyNCBqYW52aWVyIDE5OTYgcmVsYXRpdmUgYXUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlXCJdfSkgaW5cbiAge0NvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50ID0gbW9udGFudF99XG5cbmxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbjogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4udCkgOiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUudCA9XG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gaW5cbiAgbGV0IGNvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luIGluXG4gIGxldCBuX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIjsgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjZcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01OTQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTk0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI2ODU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjY4NTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiBjb25kaXRpb25fMl9kdV84MzJfMjVfIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc2MzJcIilcbiAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDU1N1wiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTk0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU5NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhbmNoZXNfcmV2ZW51c19kODMyXzI2XzogVHJhbmNoZVJldmVudS50IGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiOyBcInRyYW5jaGVzX3JldmVudXNfZDgzMl8yNlwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfdHJhbmNoZV9yZXZlbnUpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTkxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU5MTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5MTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU5MTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2NTA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2NTA7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBbfCh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDIzMDNcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKX0pO1xuICAgICAgICAgICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDQ3NjFcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0MjMwM1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjRcIil9KTtcbiAgICAgICAgICAgICAgICAgICAgICAoe1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYyOTg1XCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDQ3NjFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjA4XCIpfSk7XG4gICAgICAgICAgICAgICAgICAgICAgKHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwOTUwNVwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYyOTg1XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIzMlwiKX0pO1xuICAgICAgICAgICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID0gKExpbWl0ZVRyYW5jaGUuSW5maW5pICgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDk1MDVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMzI4XCIpfSl8XSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI2MDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjYwMTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIFt8KHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ4MTBcIikpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDRcIil9KTtcbiAgICAgICAgICAgICAgKHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjc4NzFcIikpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0ODEwXCIpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMDRcIil9KTtcbiAgICAgICAgICAgICAgKHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODk2MThcIikpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY3ODcxXCIpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yMTZcIil9KTtcbiAgICAgICAgICAgICAgKHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MzU3NDRcIikpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg5NjE4XCIpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yNjRcIil9KTtcbiAgICAgICAgICAgICAgKHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MzMxMjlcIikpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM1NzQ0XCIpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4zMlwiKX0pO1xuICAgICAgICAgICAgICAoe1RyYW5jaGVSZXZlbnUuaGF1dCA9IChMaW1pdGVUcmFuY2hlLkluZmluaSAoKSk7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MzMxMjlcIik7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQ4XCIpfSl8XSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTkxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU5MTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpcGxpZWVzXzogVHJhbmNoZVJldmVudURlY2ltYWwudCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIjtcbiAgICAgIFwidHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpcGxpw6llc1wiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01OTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTkyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAzODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDM4OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX21hcFxuICAgICAgICAgICAgICAoZnVuICh0cmFuY2hlXzogVHJhbmNoZVJldmVudS50KSAtPlxuICAgICAgICAgICAgICAgICB7VHJhbmNoZVJldmVudURlY2ltYWwuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCAodHJhbmNoZV8uVHJhbmNoZVJldmVudS5oYXV0KVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBMaW1pdGVUcmFuY2hlLlJldmVudSB0cmFuY2hlX2hhdXRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGVEZWNpbWFsLlJldmVudVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAob190b3JhdF9tb24gdHJhbmNoZV9oYXV0XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1XykpXG4gICAgICAgICAgICAgICAgICAgICB8IExpbWl0ZVRyYW5jaGUuSW5maW5pIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZURlY2ltYWwuSW5maW5pICgpKSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcyA9XG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfbW9uICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51LmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV8pO1xuICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4ID0gKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnUudGF1eCl9KVxuICAgICAgICAgICAgICB0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01OTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTkyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCI7IFwibW9udGFudFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01OTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTk2OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTk2OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTk2OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDg5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDg5OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfIDogZGVjaW1hbCA9XG4gICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAob190b21vbmV5X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19yZWR1Y2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoc3VtMV86IGRlY2ltYWwpIChzdW0yXzogZGVjaW1hbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfcmF0X3JhdCBzdW0xXyBzdW0yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHRyYW5jaGVfOiBUcmFuY2hlUmV2ZW51RGVjaW1hbC50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuaGF1dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExpbWl0ZVRyYW5jaGVEZWNpbWFsLlJldmVudSB0cmFuY2hlX2hhdXRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbmNoZV9oYXV0XykgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbmNoZV9oYXV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZURlY2ltYWwuSW5maW5pIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5jaGVzX3JldmVudXNfZDgzMl8yNl9tdWx0aXBsaWVlc18pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9tb24gbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI2XykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA1MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDUxOyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAobGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18gOiBkZWNpbWFsID1cbiAgICAgICAgICAgICAgIChvX3RvcmF0X21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChvX3RvbW9uZXlfcmF0XG4gICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgKG9fYWRkX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgIChvX3JlZHVjZVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoc3VtMV86IGRlY2ltYWwpIChzdW0yXzogZGVjaW1hbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX3JhdF9yYXQgc3VtMV8gc3VtMl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKG9fbWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuICh0cmFuY2hlXzogVHJhbmNoZVJldmVudURlY2ltYWwudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfcmF0X3JhdCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5oYXV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMaW1pdGVUcmFuY2hlRGVjaW1hbC5SZXZlbnUgdHJhbmNoZV9oYXV0XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuY2hlX2hhdXRfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXQgdHJhbmNoZV9oYXV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZURlY2ltYWwuSW5maW5pIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5jaGVzX3JldmVudXNfZDgzMl8yNl9tdWx0aXBsaWVlc18pKVxuICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9tb24gbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI2XylcbiAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01OTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTk2OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUubW9udGFudCA9IG1vbnRhbnRffVxuXG5sZXQgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyIChjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW46IENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4udCkgOiBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci50ID1cbiAgbGV0IGNvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJcIjsgXCJuX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02MDM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjAzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjAzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjAzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDAzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDAzOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS41XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjMuN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjQuM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkxNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTE2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS40XCIpXG4gICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAoIGlmIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpXG4gICAgICAgICAgICAgICAgIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjMuXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzXCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjMuN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNFwiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCI0LjNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCI0LjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjAuNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MDM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjAzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1ID1cbiAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV99XG5cbmxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGUgKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbjogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi50KSA6IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8xMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwibl9ub21icmVfcGFydHNfZDgzMl8xMVwiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjU5OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY1OTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjYwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyNjA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuNFwiKVxuICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjhcIikpIGVsc2VcbiAgICAgICAgICAgICAgKCBpZiAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKVxuICAgICAgICAgICAgICAgICB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiM1wiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjRcIikpIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjU5OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY1OTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTEgPVxuICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExX31cblxubGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUgKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW46IE91dmVydHVyZURyb2l0c1JldHJhaXRlSW4udCkgOiBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZS50ID1cbiAgbGV0IGRhdGVfbmFpc3NhbmNlX2Fzc3VyZV86IGRhdGUgPSBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luLk91dmVydHVyZURyb2l0c1JldHJhaXRlSW4uZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX2luIGluXG4gIGxldCBhZ2Vfb3V2ZXJ0dXJlX2Ryb2l0XzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZVwiOyBcIsOiZ2Vfb3V2ZXJ0dXJlX2Ryb2l0XCJdIChlbWJlZF9kdXJhdGlvbikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk5ODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05OTg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJEYXRlIGQnb3V2ZXJ0dXJlIGRlcyBkcm9pdHMgw6AgbGEgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTg7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05OTg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTk7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDE2MS0xNy0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDEgOiBJbmZvcm1hdGlvbiBldCBzaW1wbGlmaWNhdGlvbiBkZXMgZMOpbWFyY2hlcyBkZXMgYXNzdXLDqXMuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gNCA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zIGV0IGF1eCBzb2lucyAtIENvbnRyw7RsZSBtw6lkaWNhbCAtIFR1dGVsbGUgYXV4IHByZXN0YXRpb25zIHNvY2lhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUk6IFRpdHJlIElJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyByZWxhdGl2ZXMgYXUgZmluYW5jZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX25haXNzYW5jZV9hc3N1cmVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTUpICgxKSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDYyKSAoMCkgKDApKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk5ODsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk5ODsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI1NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEMTYxLTItMS05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDIgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gNCA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zIGV0IGF1eCBzb2lucyAtIENvbnRyw7RsZSBtw6lkaWNhbCAtIFR1dGVsbGUgYXV4IHByZXN0YXRpb25zIHNvY2lhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBJIDogR8OpbsOpcmFsaXTDqXMgLSBEaXNwb3NpdGlvbnMgY29tbXVuZXMgw6AgdG91dCBvdSBwYXJ0aWUgZGVzIHLDqWdpbWVzIGRlIGJhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfbmFpc3NhbmNlX2Fzc3VyZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk1MSkgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZHVyYXRpb25fb2ZfbnVtYmVycyAoNjApICgwKSAoMCkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTk4OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTk4OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJEYXRlIGQnb3V2ZXJ0dXJlIGRlcyBkcm9pdHMgw6AgbGEgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjY3OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQxNjEtMi0xLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcmFncmFwaGUgMiA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIEkgOiBHw6luw6lyYWxpdMOpcyAtIERpc3Bvc2l0aW9ucyBjb21tdW5lcyDDoCB0b3V0IG91IHBhcnRpZSBkZXMgcsOpZ2ltZXMgZGUgYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX25haXNzYW5jZV9hc3N1cmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTEpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX25haXNzYW5jZV9hc3N1cmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTEpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fYWRkX2R1cl9kdXIgKGR1cmF0aW9uX29mX251bWJlcnMgKDYwKSAoMCkgKDApKVxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNCkgKDApKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTg7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05OTg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzY7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDE2MS0yLTEtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAyIDogT3V2ZXJ0dXJlIGR1IGRyb2l0IGV0IGxpcXVpZGF0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQsOpbsOpZmljaWFpcmVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgSSA6IEfDqW7DqXJhbGl0w6lzIC0gRGlzcG9zaXRpb25zIGNvbW11bmVzIMOgIHRvdXQgb3UgcGFydGllIGRlcyByw6lnaW1lcyBkZSBiYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgKG9fZ2V0WWVhciBkYXRlX25haXNzYW5jZV9hc3N1cmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxOTUyXCIpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fYWRkX2R1cl9kdXIgKGR1cmF0aW9uX29mX251bWJlcnMgKDYwKSAoMCkgKDApKVxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoOSkgKDApKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTg7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05OTg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yODU7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDE2MS0yLTEtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAyIDogT3V2ZXJ0dXJlIGR1IGRyb2l0IGV0IGxpcXVpZGF0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQsOpbsOpZmljaWFpcmVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgSSA6IEfDqW7DqXJhbGl0w6lzIC0gRGlzcG9zaXRpb25zIGNvbW11bmVzIMOgIHRvdXQgb3UgcGFydGllIGRlcyByw6lnaW1lcyBkZSBiYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgKG9fZ2V0WWVhciBkYXRlX25haXNzYW5jZV9hc3N1cmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxOTUzXCIpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fYWRkX2R1cl9kdXIgKGR1cmF0aW9uX29mX251bWJlcnMgKDYxKSAoMCkgKDApKVxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoMikgKDApKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTg7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05OTg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTQ7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDE2MS0yLTEtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAyIDogT3V2ZXJ0dXJlIGR1IGRyb2l0IGV0IGxpcXVpZGF0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQsOpbsOpZmljaWFpcmVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgSSA6IEfDqW7DqXJhbGl0w6lzIC0gRGlzcG9zaXRpb25zIGNvbW11bmVzIMOgIHRvdXQgb3UgcGFydGllIGRlcyByw6lnaW1lcyBkZSBiYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgKG9fZ2V0WWVhciBkYXRlX25haXNzYW5jZV9hc3N1cmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxOTU0XCIpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fYWRkX2R1cl9kdXIgKGR1cmF0aW9uX29mX251bWJlcnMgKDYxKSAoMCkgKDApKVxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNykgKDApKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTk4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTk5ODsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7T3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUuYWdlX291dmVydHVyZV9kcm9pdCA9IGFnZV9vdXZlcnR1cmVfZHJvaXRffVxuXG5sZXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luOiBJbXBheWVEZXBlbnNlTG9nZW1lbnRJbi50KSA6IEltcGF5ZURlcGVuc2VMb2dlbWVudC50ID1cbiAgbGV0IG1vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4gaW5cbiAgbGV0IGFpZGVfdmVyc2VlXzogVmVyc2VtZW50QS50ID0gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4uSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4uYWlkZV92ZXJzZWVfaW4gaW5cbiAgbGV0IG1vbnRhbnRfYXBsXzogbW9uZXkgPSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb250YW50X2FwbF9pbiBpblxuICBsZXQgbW9udGFudF9jaGFyZ2VzXzogbW9uZXkgPSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb250YW50X2NoYXJnZXNfaW4gaW5cbiAgbGV0IGRlcGVuc2VfbG9nZW1lbnRfOiBEZXBlbnNlTG9nZW1lbnQudCA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLmRlcGVuc2VfbG9nZW1lbnRfaW4gaW5cbiAgbGV0IG1vbnRhbnRfZGV0dGVfOiBtb25leSA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfZGV0dGVfaW4gaW5cbiAgbGV0IG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfOiBNb2RlT2NjdXBhdGlvbkltcGF5ZS50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiSW1wYXnDqUTDqXBlbnNlTG9nZW1lbnRcIjsgXCJtb2RlX29jY3VwYXRpb25faW1wYXnDqVwiXVxuICAgIChlbWJlZF9tb2RlX29jY3VwYXRpb25faW1wYXllKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDE0OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM0NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMzQ1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgKE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgIChNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0ICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAoTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCAoKSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgKE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgKE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAxNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDE0OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX2xvZ2VtZW50X2JydXRlXzogRGVwZW5zZUxvZ2VtZW50LnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiOyBcImTDqXBlbnNlX2xvZ2VtZW50X2JydXRlXCJdXG4gICAgKGVtYmVkX2RlcGVuc2VfbG9nZW1lbnQpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDE1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMTU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxNTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxNTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMxMzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjMxMzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlcGVuc2VfbG9nZW1lbnRfKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjE3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjIxNzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlcGVuc2VfbG9nZW1lbnRfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDE1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMTU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGRlcGVuc2VfbG9nZW1lbnRfbmV0dGVfOiBEZXBlbnNlTG9nZW1lbnQudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50XCI7IFwiZMOpcGVuc2VfbG9nZW1lbnRfbmV0dGVcIl1cbiAgICAoZW1iZWRfZGVwZW5zZV9sb2dlbWVudCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAxNjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDE2OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjIyNjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyMjY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X2JydXRlX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIHRvdGFsXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyB0b3RhbF8pXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgbWVuc3VhbGl0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBtZW5zdWFsaXRlXylcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgbW9udGFudF9sb3llcl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChEZXBlbnNlTG9nZW1lbnQuTG95ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIG1vbnRhbnRfbG95ZXJfIG1vbnRhbnRfYXBsXykpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDE2OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMyMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzMjI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIHRvdGFsX2VjaGVhbmNlc18gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChEZXBlbnNlTG9nZW1lbnQuVG90YWxBbm51ZWxFY2hlYW5jZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHRvdGFsX2VjaGVhbmNlc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBtb250YW50X2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlIG1lbnN1YWxpdGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIG1lbnN1YWxpdGVfIG1vbnRhbnRfYXBsXykpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LkxveWVyIGxveWVyXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKERlcGVuc2VMb2dlbWVudC5Mb3llciBsb3llcl8pKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDE2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMTY7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNldWlsX2ltcGF5ZV9kZXBlbnNlX2RlX2xvZ2VtZW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiOyBcInNldWlsX2ltcGF5w6lfZMOpcGVuc2VfZGVfbG9nZW1lbnRcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDEzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMTM7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDEzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxMzsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxODc7IHN0YXJ0X2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTg3OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYWlkZV92ZXJzZWVfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmFpbGxldXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJlbmVmaWNpYWlyZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5FdGFibGlzc2VtZW50SGFiaWxpdGUgXyAtPiBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZGVwZW5zZV9sb2dlbWVudF9icnV0ZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LkxveWVyIGxveWVyX2JydXRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX2JydXRfIG1vbnRhbnRfY2hhcmdlc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLlwiKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxMzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTM7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjAzOyBzdGFydF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjIwMzsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFpZGVfdmVyc2VlX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJhaWxsZXVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJlbmVmaWNpYWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuRXRhYmxpc3NlbWVudEhhYmlsaXRlIF8gLT4gZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGRlcGVuc2VfbG9nZW1lbnRfbmV0dGVfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuVG90YWxBbm51ZWxFY2hlYW5jZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Mb3llciBsb3llcl9uZXRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX25ldF8gbW9udGFudF9jaGFyZ2VzXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuXCIpKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDEzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxMzsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyNjk7IHN0YXJ0X2NvbHVtbj03O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyNjk7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhaWRlX3ZlcnNlZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5CYWlsbGV1ciBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmVuZWZpY2lhaXJlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkV0YWJsaXNzZW1lbnRIYWJpbGl0ZSBfIC0+IGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X2JydXRlX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIGVjaGVhbmNlX3ByZXRfYnJ1dGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgZWNoZWFuY2VfcHJldF9icnV0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgbWVuc3VhbGl0ZV9icnV0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBtZW5zdWFsaXRlX2JydXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi5cIikpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LkxveWVyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxMzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTM7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjk3OyBzdGFydF9jb2x1bW49NztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjk3OyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYWlkZV92ZXJzZWVfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmFpbGxldXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJlbmVmaWNpYWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuRXRhYmxpc3NlbWVudEhhYmlsaXRlIF8gLT4gdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZGVwZW5zZV9sb2dlbWVudF9uZXR0ZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyBlY2hlYW5jZV9wcmV0X25ldHRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGVjaGVhbmNlX3ByZXRfbmV0dGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNi5cIikpKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlIG1lbnN1YWxpdGVfbmV0dGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgbWVuc3VhbGl0ZV9uZXR0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuXCIpKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Mb3llciBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDEzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMTM7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW1wYXllXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiOyBcIm1vbnRhbnRfaW1wYXnDqVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDE4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwMTg7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE4OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxODsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI0NTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI0NTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vbiBtb250YW50X2RldHRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V1aWxfaW1wYXllX2RlcGVuc2VfZGVfbG9nZW1lbnRfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2RldHRlXyBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTgyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE4MjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uIG1vbnRhbnRfZGV0dGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgc2V1aWxfaW1wYXllX2RlcGVuc2VfZGVfbG9nZW1lbnRfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9kZXR0ZV8gZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAxODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDE4OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtJbXBheWVEZXBlbnNlTG9nZW1lbnQubW9udGFudF9pbXBheWUgPSBtb250YW50X2ltcGF5ZV99XG5cbmxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBtb250YW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIG1pbmlzdMOpcmllbGxlIE7CsERTUy9TRDJCLzIwMTkvNjUgZHUgMjUgbWFycyAyMDE5IHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDE5IGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTMxNlwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG5vIERTUy9TRDJCLzIwMjAvMzMgZHUgMTggZsOpdnJpZXIgMjAyMCByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAyMCBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgZGFucyBsZSBkw6lwYXJ0ZW1lbnQgZGUgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ0MFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsERTUy8yQi8yMDIxLzY1IGR1IDE5IG1hcnMgMjAyMSByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAyMSBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgZGFucyBsZSBkw6lwYXJ0ZW1lbnQgZGUgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ4MVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgzOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsERTUy8yQi8yMDIyLzgyIGR1IDI4IG1hcnMgMjAyMiByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAyMiBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgZGFucyBsZSBkw6lwYXJ0ZW1lbnQgZGUgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjIyOFwiKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIHtCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnQgPSBtb250YW50X31cblxubGV0IHNtaWMgKHNtaWNfaW46IFNtaWNJbi50KSA6IFNtaWMudCA9XG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IHNtaWNfaW4uU21pY0luLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IHJlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gc21pY19pbi5TbWljSW4ucmVzaWRlbmNlX2luIGluXG4gIGxldCBicnV0X2hvcmFpcmVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlNtaWNcIjsgXCJicnV0X2hvcmFpcmVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAxOC0xMTczIGR1IDE5IGTDqWNlbWJyZSAyMDE4IHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwM1wiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ5OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAxOC0xMTczIGR1IDE5IGTDqWNlbWJyZSAyMDE4IHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc1N1wiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTc3OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAxOS0xMzg3IGR1IDE4IGTDqWNlbWJyZSAyMDE5IHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAxNVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg4OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAxOS0xMzg3IGR1IDE4IGTDqWNlbWJyZSAyMDE5IHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc2NlwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIwLTE1OTggZHUgMTYgZMOpY2VtYnJlIDIwMjAgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDI1XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNzsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjAtMTU5OCBkdSAxNiBkw6ljZW1icmUgMjAyMCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NzRcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU1OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMS0xNzQxIGR1IDIyIGTDqWNlbWJyZSAyMDIxIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDU3XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NzsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjEtMTc0MSBkdSAyMiBkw6ljZW1icmUgMjAyMSBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNCkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc5OFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAxOSBhdnJpbCAyMDIyIHJlbGF0aWYgYXUgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDg1XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwNjsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDE5IGF2cmlsIDIwMjIgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg1KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MTlcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM0OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjkganVpbGxldCAyMDIyIHJlbGF0aWYgYXUgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoOCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTEwN1wiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNDU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyOSBqdWlsbGV0IDIwMjIgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg4KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODM1XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3NDsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjItMTYwOCBkdSAyMiBkw6ljZW1icmUgMjAyMiBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjExMjdcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI4Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjg1OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMi0xNjA4IGR1IDIyIGTDqWNlbWJyZSAyMDIyIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg1MVwiKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7IFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX0pKSkpIGluXG4gIHtTbWljLmJydXRfaG9yYWlyZSA9IGJydXRfaG9yYWlyZV99XG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbjogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50KSA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnQgPVxuICBsZXQgbG95ZXJfcHJpbmNpcGFsX2Jhc2VfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxveWVyX3ByaW5jaXBhbF9iYXNlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiBpblxuICBsZXQgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzXzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi56b25lX2luIGluXG4gIGxldCBsb2dlbWVudF9lc3RfY2hhbWJyZV86IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiBpblxuICBsZXQgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gaW5cbiAgbGV0IHR5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiBpblxuICBsZXQgY29sb2NhdGlvbl86IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luIGluXG4gIGxldCByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV86IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4gaW5cbiAgbGV0IGxvZ2VtZW50X21ldWJsZV9kODQyXzJfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiBpblxuICBsZXQgZnJhY3Rpb25fbDgzMl8zXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImZyYWN0aW9uX2w4MzJfM1wiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTUzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1MzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xOTA1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk4XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTM7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODIzXzE2XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwibW9udGFudF9mb3JmYWl0YWlyZV9kODIzXzE2XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU1Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTY7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mjc0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTY7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01ODA7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTgwOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01ODA7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50IGluXG4gIGxldCB0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJ0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZVwiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTY0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY5OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjk7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAzMTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzOFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTg1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDAwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNlwiKSkpKSkpKSkpKSkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3MzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMzE1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzOFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxODVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDAwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSkpKSkpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0ODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0ODsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAzMTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjM4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTg1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTc5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTczXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDAwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSkpKSkpKSkpKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTY0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTdfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJhYmF0dGVtZW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTdcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTU4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTU4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTU4OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Njc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00Njc7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0OTQ5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3MDkwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NDU2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODY0NjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg5NzcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5MzExMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTY0MjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk5NzUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTk3NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIGp1aWxsZXQgMjAyMiBhdSAzMSBkw6ljZW1icmUgMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDg3MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjk3NzAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODMyMjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg1MDkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4ODM0MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTE2MzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk0ODgwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5ODE2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjk4MTYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTg7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgyMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgyMjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIGphbnZpZXIgMjAyMiBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2ODMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY3MDkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgwMDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MTkyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODQ5NTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg4MTEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5MTI0MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTQzOTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5NDM5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzExMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTU4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTU4OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDE4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQxODsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIGphbnZpZXIgMjAyMCBhdSAzMSBkw6ljZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDU4ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjU3MjAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzgzOTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgwMTUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MzIyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODYzMTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg5MzgwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5MjQ2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjkyNDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSkpKSkpKSkpKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTU4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBsb3llcl9yZWZlcmVuY2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImxveWVyX3LDqWbDqXJlbmNlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1MjsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUyOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTI7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTk7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1OTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1OTc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxNzk3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU3ODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyMDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzMTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzMTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1OTc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE3OTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU3ODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyMDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1Mjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MjsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1Mjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNTI7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU4NjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY2NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTYzMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTE4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTI7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18xNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMTZcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTU3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1NzsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI4Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yODY7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHR5cGVfYWlkZV9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgfCBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMDBcIilcbiAgICAgICAgICAgIHwgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTU3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1NzsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwicGxhZm9uZF9sb3llcl9kODIzXzE2XzJcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUyOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MzA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMxMzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDE2NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4OTAwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Mzg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTM5OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3OTA1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQ2ODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjkxMVwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTQ3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU0NzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE1MzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTc2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3Nzc0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA0M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTY4OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2ODJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA3OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjM1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDg0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgyNjFcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2OTYyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM4NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjEzNlwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyNDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNDczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQyMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjgzNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ4MjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTU3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE5Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTk4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMjYyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0MDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODE4NVwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIwNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjA3OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2ODQ5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM3NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjA0NFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIxNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjE1OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDM0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0MDNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY3MjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODkwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NzE3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU0MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5NTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMxMzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAxNjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg5MDBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTc5OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIzNTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0ODRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgyNjFcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTc1OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMjYyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDAyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MTg1XCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4ODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODg7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzc2NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDE5OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjY4MFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTcyOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2ODI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMzgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxOTEzXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk2ODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05Njg7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NzE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMjgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxODIxXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA4NTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjg4N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MjAwXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcyMDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjkxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNTQ4XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI0OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMDUyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjEwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzAzMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUzOTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQyNTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0OTA5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk4MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTk3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MzQ4XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNzk3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk1MTVcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNjMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTg5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTc4MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyMDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzMwOTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NzQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODg0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg4NTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NjgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU4NTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDI0NlwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODk0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg5NTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1Nzk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTM5MlwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTA0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkwNDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDQ2MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4NzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MTg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyOTU2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDcyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTYxOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjE7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3Mjsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTcyOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODA1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjE7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTA7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ1MDsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNDE7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNDE7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2OTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM5OVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTYxOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjE7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzA7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzMDsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYxMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2MTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYxOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE0OyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTQ7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA5XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjE7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDEwOyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDEwOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Mzk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTYxOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGxveWVyX3ByaW5jaXBhbF9hdmVjX3JlZHVjdGlvbl9tZXVibGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJsb3llcl9wcmluY2lwYWxfYXZlY19yw6lkdWN0aW9uX21ldWJsw6lcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTMxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTUzMTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDIxMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MjExOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZWN0ZXVyIGxvY2F0aWYgb3JkaW5haXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIGxvZ2VtZW50X21ldWJsZV9kODQyXzJfIHRoZW5cbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGxveWVyX3ByaW5jaXBhbF9iYXNlX1xuICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLlwiKVxuICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLlwiKSkpIGVsc2UgbG95ZXJfcHJpbmNpcGFsX2Jhc2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MzE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTMxOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU1OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI1OTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC5cIikpXG4gICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yX1xuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjMuMVwiKSlcbiAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy4xXCIpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTU1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1NTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwicGxhZm9uZF9kw6lncmVzc2l2aXTDqV9kODIzXzE2XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU1NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTQ7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjUzOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLjRcIikpXG4gICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yX1xuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNVwiKSlcbiAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTU0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1NDsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBsb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwibG95ZXJfw6lsaWdpYmxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTQ3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU0NzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTgwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xODA2OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiBsb3llcl9wcmluY2lwYWxfYXZlY19yZWR1Y3Rpb25fbWV1YmxlX1xuICAgICAgICAgICAgICAgICBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8pIHRoZW4gcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfIGVsc2VcbiAgICAgICAgICAgICAgbG95ZXJfcHJpbmNpcGFsX2F2ZWNfcmVkdWN0aW9uX21ldWJsZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU0Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NDc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnVlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnXDqVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzM7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NzM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3MzsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg1NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODU1OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBwYXJhbV8pKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NDE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODQxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiBsb3llcl9wcmluY2lwYWxfYXZlY19yZWR1Y3Rpb25fbWV1YmxlX1xuICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNl8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gbG95ZXJfcHJpbmNpcGFsX2F2ZWNfcmVkdWN0aW9uX21ldWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2XykgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG95ZXJfcHJpbmNpcGFsX2F2ZWNfcmVkdWN0aW9uX21ldWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBwbGFmb25kX3N1cHByZXNzaW9uX2Q4MjNfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9kZWdyZXNzaXZpdGVfZDgyM18xNl8pKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBwYXJhbV8pKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTU3Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzM7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NzM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTczOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBhcnRpY2lwYXRpb25fbWluaW1hbGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcInBhcnRpY2lwYXRpb25fbWluaW1hbGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4NVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY2M1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjYzXCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDEzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4NVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUzOVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTM5XCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyNDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMjQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MjRcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcmFwcG9ydF9sb3llcnNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwicmFwcG9ydF9sb3llcnNcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTE7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUxOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTE7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwMzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTAzOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfbW9uX21vbiBsb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG95ZXJfcmVmZXJlbmNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwNzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3llcl9yZWZlcmVuY2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgxOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzgxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfbW9uX21vbiBsb3llcl9lbGlnaWJsZV8gbG95ZXJfcmVmZXJlbmNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTUxOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzQ7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg2NTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NjU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludcOpXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludcOpXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnVlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51w6lcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01NzQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc0OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTc0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X2xveWVyX2VsaWdpYmxlX2Zvcm11bGVfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRhdXhfbG95ZXJfw6lsaWdpYmxlX2Zvcm11bGVcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NDk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTQ5OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NDk7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NDk7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NDk7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU0OTsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NDk7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTQ5OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExMjc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTEyNzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQ1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDQ1XCIpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuM1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwNzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIikpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA2OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU0OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NDk7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXSAodW5lbWJlZGRhYmxlKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODgyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg4MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGNyZHNfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwXCIpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTU3NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzU7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NzU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc1OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfbG95ZXJfZWxpZ2libGVfdGF1eF9hcnJvbmRpXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0YXV4X2xveWVyX8OpbGlnaWJsZV90YXV4X2Fycm9uZGlcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTUwOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTA7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MDsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUwOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExMzQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTEzNDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9sb3llcl9lbGlnaWJsZV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAwMDAuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwMDAwLlwiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0MTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQxOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0IHRhdXhfbG95ZXJfZWxpZ2libGVfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMDAwMC5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwMDAwLlwiKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxNDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0IHRhdXhfbG95ZXJfZWxpZ2libGVfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAwMDAuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAwMDAuXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTUwOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3LDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NzY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgwNzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgwNzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbl9sODMyXzNfKSkgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb25fbDgzMl8zXykpIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01NzY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTc2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTU5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1OTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xOTY1OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2FkZF9yYXRfcmF0IHRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgICB0YXV4X2xveWVyX2VsaWdpYmxlX3RhdXhfYXJyb25kaV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTk7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01Nzc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkxNDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5MTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3LDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBhaWRlX2ZpbmFsZV8pKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01Nzc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc3OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTc3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTY1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2NTsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkzMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xOTMxOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAobGV0IHBhcnRpY2lwYXRpb25fcmVzc291cmNlc18gOiBtb25leSA9XG4gICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZm9yZmFpdGFpcmVfZDgyM18xN18pXG4gICAgICAgICAgICAgICAgICB0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzXylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAobGV0IHBhcnRpY2lwYXRpb25fcmVzc291cmNlc18gOiBtb25leSA9XG4gICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAob19sdF9tb25fbW9uIHBhcnRpY2lwYXRpb25fcmVzc291cmNlc19cbiAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlIHBhcnRpY2lwYXRpb25fcmVzc291cmNlc18pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcGFydGljaXBhdGlvbl9taW5pbWFsZV8gcGFydGljaXBhdGlvbl9yZXNzb3VyY2VzXykpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTY1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2NTsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTcwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU3MDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc4ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNzg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBsb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggaWYgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NzA7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vbiBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNVwiKSkpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NTg7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODU4OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NTg7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODU4OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IGZyYWN0aW9uX2w4MzJfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfcmF0X3JhdCBmcmFjdGlvbl9sODMyXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOThcIikpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04MTc7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MTc7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODE3OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODE3OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAge0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2ID1cbiAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMiA9XG4gICAgICAgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX21pbmltYWxlID1cbiAgICAgICBwYXJ0aWNpcGF0aW9uX21pbmltYWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgIHRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSA9XG4gICAgICAgcGFydGljaXBhdGlvbl9wZXJzb25uZWxsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF99XG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50KSA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50ID1cbiAgbGV0IHR5cGVfbG9nZW1lbnRfZm95ZXJfOiBUeXBlTG9nZW1lbnRGb3llci50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luIGluXG4gIGxldCBkYXRlX2NvbnZlbnRpb25uZW1lbnRfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZWRldmFuY2VfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luIGluXG4gIGxldCBjb25kaXRpb25fMl9kdV84MzJfMjVfOiB1bml0IC0+IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8yNV86IHVuaXQgLT4gZGVjaW1hbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiBpblxuICBsZXQgY29lZmZpY2llbnRfcl9kODMyXzI1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY29lZmZpY2llbnRfcl9kODMyXzI1XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjE4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYxODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTY1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI1NjU7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIxNzI2XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MTg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYyNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU0MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNTQwOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjI1OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X21pbmltYWxfYWlkZV9kODIzXzI0XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwibW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18yNFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYyNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02Mjc7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU1MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNTUxOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjI3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYyNzsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJjb25kaXRpb25fMl9kdV84MzJfMjVcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYxNTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MTU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT4gY29uZGl0aW9uXzJfZHVfODMyXzI1XyAoKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYxNTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MTU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4NTA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODUwOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgbWF0Y2ggdHlwZV9sb2dlbWVudF9mb3llcl9cbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IFR5cGVMb2dlbWVudEZveWVyLkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgIHwgVHlwZUxvZ2VtZW50Rm95ZXIuUmVzaWRlbmNlU29jaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvbnZlbnRpb25uZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICB8IFR5cGVMb2dlbWVudEZveWVyLkZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY29udmVudGlvbm5lbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTApICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgfCBUeXBlTG9nZW1lbnRGb3llci5BdXRyZSBfIC0+IGZhbHNlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYxNTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NDk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NjQ5OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTY0OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02NDk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02NDk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50IGluXG4gIGxldCBwbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInBsYWZvbmRfw6lxdWl2YWxlbmNlX2xveWVyX8OpbGlnaWJsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02MjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjIxOyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjIxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjIxOyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ4Njsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0ODY7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDYxOTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQxNTJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTc3NDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MTc5NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY1ODYyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzEwMzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjczNjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIyNDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDkyOTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTI1NjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjI2OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU5OTU3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjM4ODdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY2NTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAwOTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDY2MzRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDk0NzVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Mjc0MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MDA0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTk2NzVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjIxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjIxOyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUyOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ0NjMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyMzIxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU1Nzg4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTk3MDRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MzYzNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY4NjM3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MTE5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwODE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ3NjMyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwNzg3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQzNjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NzkyOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxNzI3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NDM0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NzQwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ1MDU3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ3ODAyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTA5NTdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDExMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU3NjU3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1OTcxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyMTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNDc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzQ3OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ0NDQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyMTAxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU1NTU1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTk0NTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MzM2OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY4MzUwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MDg5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNjQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ3NDMzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwNTc1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQxMzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NzY4N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxNDY5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NDA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NTc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ0ODY5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ3NjAyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTA3NDRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Mzg4NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU3NDE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1OTQ2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjIxOyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0MzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc4Mzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM3ODM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHBhcmFtXyBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjRfKVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gcGFyYW1fIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNF8pIGVsc2VcbiAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02NDM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQzOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzkzOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTM5OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTM5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5Mzk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBjb25kaXRpb25fMl9kdV84MzJfMjVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzkzOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTM5OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzkzNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTM1OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTM1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5MzU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM5MzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzkzNTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM5Mzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzkzNzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkzNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTM3OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM5Mzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzkzNzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7XG4gICAgICBcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llclwiXSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIpXG4gICAgKHtDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxffSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN1wiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjY7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjcxNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNzE0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8gdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTUwMFwiKVxuICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjY4XCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjI2OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjE3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYxNzsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI1NzU7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgY29uZGl0aW9uXzJfZHVfODMyXzI1XyB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTQyMDkxXCIpXG4gICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzMzkzNDBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxNzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MTc7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiw6lxdWl2YWxlbmNlX2xveWVyX8OpbGlnaWJsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYyMDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MjA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzU3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NTc7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndGVfbW9uX21vbiByZWRldmFuY2VfIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfKVxuICAgICAgICAgICAgICB0aGVuIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfIGVsc2UgcmVkZXZhbmNlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjIwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYyMDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwibl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjE5OyBzdGFydF9jb2x1bW49MjE7IGVuZF9saW5lPTYxOTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPiBuX25vbWJyZV9wYXJ0c19kODMyXzI1XyAoKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYxOTsgc3RhcnRfY29sdW1uPTIxOyBlbmRfbGluZT02MTk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NDE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTQxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MTk7IHN0YXJ0X2NvbHVtbj0yMTsgZW5kX2xpbmU9NjE5OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMzc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTM3OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgb19zdWJfbW9uX21vbiBlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV8gcGFyYW1fKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTYyNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjI0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYyNDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5yZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNzczOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NzM7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3NzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc3MzsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNzczOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NzM7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNzcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NzE7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3NzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc3MTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNzcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NzE7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5uX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdXG4gICAgICAoZW1iZWRfZGVjaW1hbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM3NzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc3NTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc3NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzc1OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNzc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NzU7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSlcbiAgICAoe0NhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV99KSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLm1vbnRhbnQgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2Zvcm11bGVfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9mb3JtdWxlXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjM3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzNzsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYzNzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYzNzsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk1Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzk1MzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fc3ViX3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45XCIpXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM4NjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzg2NTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgKGxldCBkZW5vbWluYXRldXJfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGNvZWZmaWNpZW50X3JfZDgzMl8yNV9cbiAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAobGV0IGRlbm9taW5hdGV1cl8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAoIGlmIChvX2x0X21vbl9tb24gZGVub21pbmF0ZXVyXyAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBkZW5vbWluYXRldXJfKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjAuOTVcIilcbiAgICAgICAgICAgICAgIChvX2Rpdl9tb25fbW9uIGRlbm9taW5hdGV1cl9cbiAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1X1xuICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzNzsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjIyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYyMjsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE0MTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxNDE7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXVxuICAgICAgICAgICAgICAgICAgICBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiBkZXBlbnNlX25ldHRlX21pbmltYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjdfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN19cbiAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02MjI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjIyOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYyMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjI7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjI4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYyODsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc2OTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Mjg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjI4OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9jb2VmZl9hcnJvbmRpXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfY29lZmZfYXJyb25kaVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYzODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02Mzg7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02Mzg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02Mzg7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5NzA7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM4ODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzg4NjsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA1XCIpKVxuICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzODsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDQ7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3OTc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzk3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uIGFpZGVfZmluYWxlXyAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgdGhlbiBhaWRlX2ZpbmFsZV8gZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02NDQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ0OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDQ7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02Mzk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjM5OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjM5OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjM5OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTc2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTc2OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9jb2VmZl9hcnJvbmRpX1xuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfY29lZmZfYXJyb25kaV8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM4ODk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzg4OTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0XG4gICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2NvZWZmX2Fycm9uZGlfXG4gICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOTVcIikpIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45NVwiKVxuICAgICAgICAgICAgICBlbHNlIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2NvZWZmX2Fycm9uZGlfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Mzk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjM5OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXSAodW5lbWJlZGRhYmxlKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0NTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgxMTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4MTE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBjcmRzXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MFwiKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02NDU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ1OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDU7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjQxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY0MTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3MzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzczNjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgICAgZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggaWYgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02NDE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0NjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgzMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4MzI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMjRfKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0NjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NDY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ2OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNSA9XG4gICAgIGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1ID1cbiAgICAgICBjb2VmZmljaWVudF9yX2Q4MzJfMjVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNSA9XG4gICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSA9XG4gICAgICAgZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSA9XG4gICAgICAgcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSA9XG4gICAgICAgZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjUgPVxuICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxffVxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW46IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50KSA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gIGxldCBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiBpblxuICBsZXQgdHlwZV90cmF2YXV4X2xvZ2VtZW50XzogVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW4gaW5cbiAgbGV0IGRhdGVfc2lnbmF0dXJlX3ByZXRfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX3NpZ25hdHVyZV9wcmV0X2luIGluXG4gIGxldCBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gaW5cbiAgbGV0IGRhdGVfZW50cmVlX2xvZ2VtZW50XzogZGF0ZSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW4gaW5cbiAgbGV0IGNvcHJvcHJpZXRlXzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY29wcm9wcmlldGVfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9yODIyXzExXzEzXzE3XzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gaW5cbiAgbGV0IHpvbmVfOiBab25lREhhYml0YXRpb24udCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uem9uZV9pbiBpblxuICBsZXQgdHlwZV9wcmV0XzogVHlwZVByZXQudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV9wcmV0X2luIGluXG4gIGxldCBhbmNpZW5uZXRlX2xvZ2VtZW50XzogTmV1Zk91QW5jaWVuLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmFuY2llbm5ldGVfbG9nZW1lbnRfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMTBfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzEwXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY5NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIzNDQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjM0NDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjBcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5NTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MzJfMTBfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9taW5pbWFsX2FpZGVfZDgzMl8xMFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02OTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njk2OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzU1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIzNTU7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDIxXCI7IFwiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njk2OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xMV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzExXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY5ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTg7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIzNjQ7IHN0YXJ0X2NvbHVtbj0xNTsgZW5kX2xpbmU9MjM2NDsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjJcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjExMTMzXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTg7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE4XzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xOFwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY5OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTk7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI0NTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjQ1NzsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjZcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjE2LjI1XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTk7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDA7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIzNzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjM3OTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjNcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjAwODVcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzAwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwMDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfdHJhbmNoZV9pbmZlcmlldXJlX2Q4MzJfMTVfMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRhdXhfdHJhbmNoZV9pbmbDqXJpZXVyZV9kODMyXzE1XzFcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzAxOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzgwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIzODA7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDIzXCI7IFwiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIwOFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzAxOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdGF1eF90cmFuY2hlX3N1cGVyaWV1cmVfZDgzMl8xNV8xXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidGF1eF90cmFuY2hlX3N1cMOpcmlldXJlX2Q4MzJfMTVfMVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDI7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIzODE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjM4MTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjNcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuNDE2XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcwMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDI7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidGF1eF9mcmFuY3NfdmVyc19ldXJvc1wiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDM7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIHByZW1pZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSw6hnbGVtZW50IChDRSkgbsKwMjg2Ni85OCBkdSBjb25zZWlsIGR1IDMxIGTDqWNlbWJyZSAxOTk4IGNvbmNlcm5hbnQgbGVzIHRhdXggZGUgY29udmVyc2lvbiBlbnRyZSBsJ2V1cm8gZXQgbGVzIG1vbm5haWVzIGRlcyDDiXRhdHMgbWVtYnJlcyBhZG9wdGFudCBsJ2V1cm9cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2Rpdl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjYuNTU5NTdcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDM7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyODE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI4MTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyODE7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzI4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjgxOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMjgzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyODM7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI4Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjgzOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzI4Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjgzOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF9ub21icmVfcGFydHNcIjsgXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCJdXG4gICAgKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiOyBcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lcIl1cbiAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGUpXG4gICAgKHtDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICAgQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF99KSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzExXzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUubl9ub21icmVfcGFydHNfZDgzMl8xMSBpblxuICBsZXQgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xN18zXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xN18zXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njk3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5NzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQzOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNDM5OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNVwiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTgpICgxMCkgKDEpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIyNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjM0XCIpKVxuICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIGFtZWxpb3JlX3Bhcl9vY2N1cGFudF8gLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggYW1lbGlvcmVfcGFyX29jY3VwYW50X1xuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgIHwgQW1lbGlvcmVQYXJPY2N1cGFudC5PdWkgXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzJcIilcbiAgICAgICAgICAgICAgICAgfCBBbWVsaW9yZVBhck9jY3VwYW50Lk5vbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OCkgKDEwKSAoMSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMjZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjM0XCIpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcxOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03MTk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTcxOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03MTk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NzE5OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICh7Q29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVffSkpKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubW9udGFudCBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MzJfMTBfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MzJfMTBcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njk0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02OTQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY5NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njk0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDEyOyBzdGFydF9jb2x1bW49NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0MTI7IGVuZF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNFwiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHJvcHJpZXRlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODA1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02OTQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUxNzsgc3RhcnRfY29sdW1uPTc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MTc7IGVuZF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Byb3ByaWV0ZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY5NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njk0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzEwOyBzdGFydF9jb2x1bW49NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzMTA7IGVuZF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHJvcHJpZXRlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzOTlcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02OTQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzMzM7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzMzM7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOVwiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02OTQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4Mzsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDgzOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI3Njsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI3NjsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE5XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzOTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcxMzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxMzA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTMwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBwYXJhbV8gbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzEwXylcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHBhcmFtXyBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMTBfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcxMzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcxMzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfZDgzMl8xOF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXZlY19kODMyXzE4XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY5Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTM7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjkzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjkzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU5NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU5NTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU4Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNTg3OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfXG4gICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMThfKSkgdGhlblxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX1xuICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE4XykgZWxzZVxuICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjkzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfOiBkYXRlIC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBkYXRlKSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgwNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgyMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gYW1lbGlvcmVfcGFyX29jY3VwYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1lbGlvcmVfcGFyX29jY3VwYW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBbWVsaW9yZVBhck9jY3VwYW50Lk91aSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBbWVsaW9yZVBhck9jY3VwYW50Lk5vbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODY5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk3MTAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxMDczMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2NTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA4NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MTUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk0NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NjAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjM5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2MTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNzM2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA4MjAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDI4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwOTg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NzgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDI1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDk2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTgwMTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTA2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTM5NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NzYwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk1NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTI3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTMxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAwKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTgxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM5MDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzk5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTc2ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMjgwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ4ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NTAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTc5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2NDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTU5NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5MjUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI1NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0MjIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNzEyMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMDIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxMzI4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTU5MzAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODU4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOTM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDEpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMDEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDE0MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4MjcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNzg2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE1MDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTE0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTY2NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5OTkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMzMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjI2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjMwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDApICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAxKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjExMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk0NDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjc3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTQzNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3MjkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAyMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjkzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEzNDEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjA5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NzcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI2MzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAxKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDI1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ0MzAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODYxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTgwNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNzUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU0MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2ODcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDIzMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNTkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI5Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI5NjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDg3MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzI0M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDM2MTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MzcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc1NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMxNDhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NzY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTYxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1NzE4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwODQwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUxMjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzI5OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDEpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2MzAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTY3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDUzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTc1MDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDQ3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTM1NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2MjgwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg5OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjcxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzU4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzYyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0ODQ5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5OTg3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTEyNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUxMzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjE1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjY3OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEyMDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA2ODdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ4MThcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4OTQ5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzOTE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzOTU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMjQxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3Njg5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDEzN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY0NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzg3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzU1NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzkyMzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1Njc3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYwMjdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEyMTBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MzkzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTE4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0Mjg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MTQ3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwMzQ3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTU0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjQxN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjk5OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE1ODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA5MzVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjUxMTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5Mjk3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE4MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NTc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NjE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNSkgKDgpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNjE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4MTQxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDY2NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY1MjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODIxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzk1OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk3MDRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NzQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYzMzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE1ODRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2ODI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTI0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0OTA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNSkgKDgpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1NDQ5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNzExXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjY4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzMyM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE5NjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NjM3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjExODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU0MTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NjQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDIzMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1Mjc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNSkgKDgpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjE4NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODgyN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDU0NjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NjQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjg3MjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ1NzBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwNDE4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTg0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2ODEzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyMTUyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ5MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUzMzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTU2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTYwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg4KSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDYpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU5MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEyNjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NjIxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTM1N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDk0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3ODE0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjUzNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ3MjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTU2N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTg3NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzAxODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU4OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5MzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA2KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzA4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTkxNFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDY3NDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2ODI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk1MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1MzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxNTUwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjAxMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3NTY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzMDUyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODU0MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU0ODhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjIyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjI2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDYpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA3KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2NjMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyMTM5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzY0NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU1MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzc0MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODU5M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM0NDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0ODUyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIxNzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY1OThcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMDI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQyOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NTk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDgpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM5OTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEwMTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ4MDMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzAxNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwMzQxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NTE5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjY5N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxNzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODMyNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzk2NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk2MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NjM5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY4ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY5MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA3KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzM2N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzAyNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg2ODVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NjU5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQzOTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjkzODJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0MzY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDk4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyNzgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3MzMyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTg4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ1NTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzIxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzI1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDgpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MDAyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyMjI2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0OTQ0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjcyMjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTIzNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzU5NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDM5NTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MzYwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjkxNjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ5NjZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwNzczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTgwNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3NTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3NTg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDkpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjgxNzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5ODI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTgyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MTE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwMjQ5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTM4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUxMzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzQ1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODEzOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzI4MjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0Njg0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc4Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTc5MTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTExNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjM2MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDk2MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MjQ2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEzMzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc3MTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0MDk4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjM4MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5MjU0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MDc4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDkwM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4MjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODIwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODI0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDkpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4MjY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0MTA5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTk1M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4NDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTE5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDM0NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU0OTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MTQ5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM1MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjgyMjhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyOTI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDY5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NTM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NTc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI4MjdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUwMTUzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzMyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNjgxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4MTMxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDU4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY0NTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTU3NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTQ2NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzNTNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1ODg4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg4Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg5MDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODU3NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDQ4NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDAzOTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1OTA5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU0NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA2ODBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1ODg1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTIwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNzg5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4NTM5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzI5MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ3NTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTE5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTIzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1ODU1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMjU1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MDY1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjczOTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTk5OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODUxMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDUwMjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NTE1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk4NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU4MTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxNzY3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTk0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5NTI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5NTY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjg4NjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ4MjlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwNzk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTk2OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1NzI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwOTg3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjI0NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyNThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDAyN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODgyNFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM2MjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0Nzk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk4NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk4OTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NjI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0MTg1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MTc0NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjc1NThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjY4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTM0MFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDU5OTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NjU1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA1MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY1ODlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyNjY1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjA3NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwMTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwMjI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTQ4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTU3OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE2NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MDk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYyODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2NTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MDIzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTM3MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NTQ0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NDQ0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDM0NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ5MDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDUxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDU1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjgzNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDQzN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTIwMzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3NjAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzI4NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk1NjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ2MjU5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjY5M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNjg4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2Nzk4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjkwOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxMTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDg0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDg4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTY1MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTc4MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE5MTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTMxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY0MzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE4MzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MjM0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTQwMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0Njg0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NjEyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDU0MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ5MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTE3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTIxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjg2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDQ3M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTIwODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3NjA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzI4OThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk1OTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ2Mjk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjY5OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNzEzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2ODI3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0Mjk0MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxMTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTUwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTU0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTY3NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTgxMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE5NDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTM2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY0NTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE4NThcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MjY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTQwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NzA0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NjM2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDU3MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ5MzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTgzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTg3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzE0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDgwN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTI0NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3NjY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMxNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk4OTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ2NjQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjc0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwOTQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MTAzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzI2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxNjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjE2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjIwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTg5N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjA3OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDIyNjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY2NTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzIwOTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NTQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTQ0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0ODg5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5ODU4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDgyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ5NzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjQ5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjUyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MjUyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0OTQxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MjYyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjc2ODdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzI0NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDAxM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDY3ODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NzY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEwMzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcyMTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMzk0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjE3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyODE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyODQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTk4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjE4N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDIzODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MjAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY3MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzIxOTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NjU2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTQ2M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0OTY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5OTQ4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDkzNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ5ODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02MTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MjE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA4NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MTUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk0NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODYwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIzOTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjE4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3MzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDgyMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY2Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY2NTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjc4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAyNTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzcyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0OTYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODAxMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTM5NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NzYwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk1NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg0MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMDAwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYwMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzgwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjQyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk3NzAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzEyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE1MzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODM3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNDIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc1MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTc1MjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0ODEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNzg3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwOTMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTMyMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE1ODkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg1ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxMjMzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTQ3OTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNzI1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0zO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IGZhbHNlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8xMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02ODU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njg1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI3OTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njg1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjkwOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5MDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTMxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1MzE7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTkpICg2KSAoMzApKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbWVuc3VhbGl0ZV9wcmluY2lwYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MzJfMTBfKSBwYXJhbV8pKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1NDI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTQyOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gb19zdWJfbW9uX21vbiBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfIHBhcmFtXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02OTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjkwOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjkwOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iYXNlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInBsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zX2Jhc2VcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjgyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY4MjsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODI7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODI7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzY2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzY2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKGxldCBwbGFmb25kX3NpZ25hdHVyZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZGF0ZSkgZGF0ZV9zaWduYXR1cmVfcHJldF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIChsZXQgcGxhZm9uZF9lbnRyZWVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2RhdGUpIGRhdGVfZW50cmVlX2xvZ2VtZW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBpZiAob19sdF9tb25fbW9uIHBsYWZvbmRfc2lnbmF0dXJlXyBwbGFmb25kX2VudHJlZV8pXG4gICAgICAgICAgICAgICAgICAgICAgIHRoZW4gcGxhZm9uZF9lbnRyZWVfIGVsc2UgcGxhZm9uZF9zaWduYXR1cmVfKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzQ2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMzNDY7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl1cbiAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zXykgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiOyBcImlucHV0XCJdIChlbWJlZF9kYXRlKVxuICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF8pKSkpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY4Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02ODI7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM0ODc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzQ4NzsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0ODc7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNDg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0ODc7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM0ODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzQ4NjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0ODY7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzQ4Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNDg2OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5uX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdXG4gICAgICAoZW1iZWRfZGVjaW1hbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM0ODk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzQ4OTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDg5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0ODk7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzQ4OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNDg5OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSlcbiAgICAoe0NhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV99KSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLm1vbnRhbnQgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX2Zvcm11bGVfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9mb3JtdWxlXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njg3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY4NzsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTk0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMxOTQ7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19zdWJfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpXG4gICAgICAgICAgICAgIChvX2Rpdl9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMTFfXG4gICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY4Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02ODc7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjkxOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU1Mzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1NTM7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgICBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiBkZXBlbnNlX25ldHRlX21pbmltYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcmVzc291cmNlc19tZW5hZ2VfYXZlY19kODMyXzE4X1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE3XzNfKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcmVzc291cmNlc19tZW5hZ2VfYXZlY19kODMyXzE4X1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE3XzNfKVxuICAgICAgICAgICAgICAgICAgICAgICBkZXBlbnNlX25ldHRlX21pbmltYWxlXykgZWxzZVxuICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTY5MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTE7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTE7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2NvcHJvcHJpZXRhaXJlc186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJwbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM19jb3Byb3ByacOpdGFpcmVzXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY4Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02ODM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjgzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjgzOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4MzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjkwOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyOTA7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvcHJvcHJpZXRlXyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2Jhc2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iYXNlXykpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5Nzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk3OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb3Byb3ByaWV0ZV8gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2Jhc2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2Jhc2VfKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM5Mzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzOTM7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjRcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWYgY29wcm9wcmlldGVfIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iYXNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2Jhc2VfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjgzOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbWVuc3VhbGl0ZV9taW5pbWFsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtZW5zdWFsaXTDqV9taW5pbWFsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02ODA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjgwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4MDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4MDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0MjY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0Mzg7IGVuZF9jb2x1bW49Nzc7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuUGFzRGVUcmF2YXV4IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlBhc0RlVHJhdmF1eCBfIC0+IHRydWUpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIChsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXyA6IGRlY2ltYWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9tb24gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXylcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKGxldCBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfIDogZGVjaW1hbCA9XG4gICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X21vbiBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAob190b21vbmV5X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMTVfMV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMV8pKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF90cmFuY2hlX3N1cGVyaWV1cmVfZDgzMl8xNV8xXykgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfcmF0X3JhdCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X3RyYW5jaGVfaW5mZXJpZXVyZV9kODMyXzE1XzFfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF90cmFuY2hlX2luZmVyaWV1cmVfZDgzMl8xNV8xXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4MDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4MDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0ODE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0ODE7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuUGFzRGVUcmF2YXV4IF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjgwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY4MDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX2NvZWZmX2Fycm9uZGlfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9jb2VmZl9hcnJvbmRpXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njg4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY4ODsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjEwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyMTA7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA1XCIpKVxuICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njg4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY4ODsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MTQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE0OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE0NDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNDQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb24gYWlkZV9maW5hbGVfIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIGFpZGVfZmluYWxlXyBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTcxNDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MTQ7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcxNDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MTQ7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtZW5zdWFsaXRlX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1lbnN1YWxpdMOpX8OpbGlnaWJsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02Nzk7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Njc5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMxMDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzEwNTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfXG4gICAgICAgICAgICAgICAgIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfY29wcm9wcmlldGFpcmVzXykgdGhlblxuICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2NvcHJvcHJpZXRhaXJlc18gZWxzZVxuICAgICAgICAgICAgICBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Nzk7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Njc5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9zZXVpbFwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY4OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02ODk7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzIxMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjEzOyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdFxuICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9jb2VmZl9hcnJvbmRpX1xuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOTVcIilcbiAgICAgICAgICAgICAgZWxzZSBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9jb2VmZl9hcnJvbmRpXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njg5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY4OTsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MTU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE1OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE1ODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNTg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBjcmRzXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MFwiKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT03MTU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE1OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MTU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE1OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcxMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03MTE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzA4NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMDg1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbWVuc3VhbGl0ZV9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODMyXzEwXylcbiAgICAgICAgICAgICAgICAgICAgIG1lbnN1YWxpdGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxfKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggaWYgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcxMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03MTE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxNjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MTY7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTc4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE3ODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9taW5pbWFsX2FpZGVfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBhaWRlX2ZpbmFsZV8pKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT03MTY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE2OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MTY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE2OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX2VsaWdpYmxlID1cbiAgICAgbWVuc3VhbGl0ZV9lbGlnaWJsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUubWVuc3VhbGl0ZV9taW5pbWFsZSA9XG4gICAgICAgbWVuc3VhbGl0ZV9taW5pbWFsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTAgPVxuICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX3NldWlsXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF99XG5cbmxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW46IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCkgOiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID1cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tZW5hZ2VfaW4gaW5cbiAgbGV0IGRlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfOiB1bml0IC0+IGJvb2wgPSBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbiBpblxuICBsZXQgY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfOiB1bml0IC0+IGJvb2wgPSBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luIGluXG4gIGxldCBjb25kaXRpb25fcHJldF86IFByZXQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcImNvbmRpdGlvbl9wcsOqdFwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogUHJldC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0yOTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MjkyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTI5Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uX3BldXBsZW1lbnRfbG9nZW1lbnRfbDgyMl8xMF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9wZXVwbGVtZW50X2xvZ2VtZW50X2w4MjJfMTBcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzAxOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzAxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzZXVpbF9sODIyXzNfcGFydHNfcHJvcHJpZXRlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwic2V1aWxfbDgyMl8zX3BhcnRzX3Byb3ByacOpdMOpXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzExOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxMTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXUgYsOpbsOpZmljaWFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTE7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc2V1aWxfbDgyMl8zX3BhcnRzX3VzdWZydWl0XzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJzZXVpbF9sODIyXzNfcGFydHNfdXN1ZnJ1aXRcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMxMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTI7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1IGLDqW7DqWZpY2lhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzEyOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNldWlsX2w4MjJfNV9wYXRyaW1vaW5lXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwic2V1aWxfbDgyMl81X3BhdHJpbW9pbmVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzEzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05Mjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTI3OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBQcmlzZSBlbiBjb21wdGUgZHUgcGF0cmltb2luZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDAwMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTM7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdXN1ZnJ1aXRfb3VfcHJvcHJpZXRlX2ZhbWlsbGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJ1c3VmcnVpdF9vdV9wcm9wcmnDqXTDqV9mYW1pbGxlXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzEwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxMDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0NjsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX29yXG4gICAgICAgICAgICAgIChtYXRjaCAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5wcm9wcmlldGFpcmUpXG4gICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICB8IFBhcmVudE91QXV0cmUuRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzIHBhcnRzXyAtPlxuICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5BdXRyZSBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAobWF0Y2ggKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQudXN1ZnJ1aXQpXG4gICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICB8IFBhcmVudE91QXV0cmUuRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzIHBhcnRzXyAtPlxuICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5BdXRyZSBfIC0+IGZhbHNlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzEwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxMDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbm9uX291dmVydHVyZV9sODIyXzlfZGVjZW5jZV9sb2dlbWVudF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOV9kZWNlbmNlX2xvZ2VtZW50XCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5OTsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk5OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjA7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjA7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubG9nZW1lbnRfZGVjZW50X2w4OV80NjIpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Mjk5OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0yOTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Mjk5OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOFwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTI5ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTg7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ2OyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ2OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmNvbmRpdGlvbl9yYXR0YWNoZV9mb3llcl9maXNjYWxfcGFyZW50X2lmaSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mjk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTI5Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0yOTc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPiBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV8gKCkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5Nzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2MzsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBub21icmVfcGVyc29ubmVzX2xvZ2VtZW50XyA6IGludGVnZXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9taW5pbWFsZV9zYW5zX3NldWlsX21fY2FycmVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50ZWdlciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuUGFjc2VzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxNlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiOVwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9taW5pbWFsZV9zYW5zX3NldWlsX21fY2FycmVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjcwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiOFwiKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnN1cmZhY2VfbV9jYXJyZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNzBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnN1cmZhY2VfbV9jYXJyZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfbWluaW1hbGVfc2Fuc19zZXVpbF9tX2NhcnJlc18pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk3OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0yOTc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9sb2dlbWVudF9yw6lzaWRlbmNlX3ByaW5jaXBhbGVcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0yOTQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Mjk0OyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT4gY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXyAoKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0yOTQ7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTQ7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDEgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUsOoZ2xlcyBkZSBub24tY3VtdWxcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogUHJpbmNpcGVzIGfDqW7DqXJhdXhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnJlc2lkZW5jZV9wcmluY2lwYWxlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NDsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mjk0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTI5NDsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2RvdF9kYXRlX25haXNzYW5jZV9hc3N1cmVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgXCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlLmRhdGVfbmFpc3NhbmNlX2Fzc3Vyw6lcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTIzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyMzsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDE2MS0xNy0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAxIDogSW5mb3JtYXRpb24gZXQgc2ltcGxpZmljYXRpb24gZGVzIGTDqW1hcmNoZXMgZGVzIGFzc3Vyw6lzLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUk6IFRpdHJlIElJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyByZWxhdGl2ZXMgYXUgZmluYW5jZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTIzOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTYxLTE3LTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDEgOiBJbmZvcm1hdGlvbiBldCBzaW1wbGlmaWNhdGlvbiBkZXMgZMOpbWFyY2hlcyBkZXMgYXNzdXLDqXMuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSTogVGl0cmUgSUlJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIHJlbGF0aXZlcyBhdSBmaW5hbmNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfLkRlbWFuZGV1ci5kYXRlX25haXNzYW5jZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTIzOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTYxLTE3LTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDEgOiBJbmZvcm1hdGlvbiBldCBzaW1wbGlmaWNhdGlvbiBkZXMgZMOpbWFyY2hlcyBkZXMgYXNzdXLDqXMuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSTogVGl0cmUgSUlJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIHJlbGF0aXZlcyBhdSBmaW5hbmNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVwiO1xuICAgICAgXCJPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZVwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVcIjtcbiAgICAgIFwiT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVcIl0gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSlcbiAgICAoe091dmVydHVyZURyb2l0c1JldHJhaXRlSW4uZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX2luID1cbiAgICAgICAgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX30pKSkgaW5cbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfZG90X2FnZV9vdXZlcnR1cmVfZHJvaXRfOiBkdXJhdGlvbiA9IHJlc3VsdF8uT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUuYWdlX291dmVydHVyZV9kcm9pdCBpblxuICBsZXQgcGF0cmltb2luZV90b3RhbF9kZW1hbmRldXJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJwYXRyaW1vaW5lX3RvdGFsX2RlbWFuZGV1clwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMwOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDk7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI0Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNDY7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAoKGRlbWFuZGV1cl8uRGVtYW5kZXVyLnBhdHJpbW9pbmUpLlBhdHJpbW9pbmUucHJvZHVpc2FudF9yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQpXG4gICAgICAgICAgICAgICgoZGVtYW5kZXVyXy5EZW1hbmRldXIucGF0cmltb2luZSkuUGF0cmltb2luZS5uZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzA5OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9uYXRpb25hbGl0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiY29uZGl0aW9uX25hdGlvbmFsaXTDqVwiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MjkzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5MzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjkzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjkzOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExMDsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZGVtYW5kZXVyXy5EZW1hbmRldXIubmF0aW9uYWxpdGUpXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE5hdGlvbmFsaXRlLkZyYW5jYWlzZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTmF0aW9uYWxpdGUuRXRyYW5nZXJlIGNvbmRpdGlvbnNfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbnNfLkNvbmRpdGlvbnNFdHJhbmdlcnMuc2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc2VjdXJpdGVfc29jaWFsZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI5Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTI5Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9pbmRpdmlkdWVsX2w4MTVfOV9zZWN1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcInBsYWZvbmRfaW5kaXZpZHVlbF9sODE1Xzlfc8OpY3VcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzE3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxNzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgxNS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24gZGUgbCdhbGxvY2F0aW9uIGRlIHNvbGlkYXJpdMOpIGF1eCBwZXJzb25uZXMgw6Jnw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IEFsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJIDogQWxsb2NhdGlvbnMgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWxsb2NhdGlvbnMgYXV4IHBlcnNvbm5lcyDDomfDqWVzIC0gQWxsb2NhdGlvbiBhdXggYWR1bHRlcyBoYW5kaWNhcMOpcyAtIEFpZGVzIMOgIGwnZW1wbG9pIHBvdXIgbGEgZ2FyZGUgZGVzIGpldW5lcyBlbmZhbnRzIC0gUHJvdGVjdGlvbiBjb21wbMOpbWVudGFpcmUgZW4gbWF0acOocmUgZGUgc2FudMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoNCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI5OTk4NDBcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzNTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODE1LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbiBkZSBsJ2FsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogQWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIEkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXMgLSBBbGxvY2F0aW9uIGF1eCBhZHVsdGVzIGhhbmRpY2Fww6lzIC0gQWlkZXMgw6AgbCdlbXBsb2kgcG91ciBsYSBnYXJkZSBkZXMgamV1bmVzIGVuZmFudHMgLSBQcm90ZWN0aW9uIGNvbXBsw6ltZW50YWlyZSBlbiBtYXRpw6hyZSBkZSBzYW50w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwNDE4NDBcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0MDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODE1LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbiBkZSBsJ2FsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogQWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIEkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXMgLSBBbGxvY2F0aW9uIGF1eCBhZHVsdGVzIGhhbmRpY2Fww6lzIC0gQWlkZXMgw6AgbCdlbXBsb2kgcG91ciBsYSBnYXJkZSBkZXMgamV1bmVzIGVuZmFudHMgLSBQcm90ZWN0aW9uIGNvbXBsw6ltZW50YWlyZSBlbiBtYXRpw6hyZSBkZSBzYW50w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICg0KSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwODM4NDBcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNpcmN1bGFpcmUgZGUgbGEgQ05BViAyMDIzLTMgZHUgMDkvMDEvMjAyMiBcXFwiUmV2YWxvcmlzYXRpb24gw6AgY29tcHRlciBkdSAxZXIgamFudmllciAyMDIzXFxcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudHMgcmV2YWxvcmlzw6lzIGRlIGwnYWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDI0KSAoMSkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTE1MzMwMlwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05MTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2lyY3VsYWlyZSBkZSBsYSBDTkFWIDIwMjItMyBkdSAxMS8wMS8yMDIyIFxcXCJSZXZhbG9yaXNhdGlvbiDDoCBjb21wdGVyIGR1IDFlciBqYW52aWVyIDIwMjJcXFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50cyByZXZhbG9yaXPDqXMgZGUgbCdhbGxvY2F0aW9uIGRlIHNvbGlkYXJpdMOpIGF1eCBwZXJzb25uZXMgw6Jnw6llc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMTAwMTQ0XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNpcmN1bGFpcmUgZGUgbGEgQ05BViAyMDIxLTEgZHUgMTEvMDEvMjAyMSBcXFwiUmV2YWxvcmlzYXRpb24gw6AgY29tcHRlciBkdSAxZXIgamFudmllciAyMDIxXFxcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudHMgcmV2YWxvcmlzw6lzIGRlIGwnYWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA4ODE3NVwiKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aWVyc186IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aWVyc1wiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTI5Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTY7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5sb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLk5vbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy5PdWkgcGVyc29ubmVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV8uUGVyc29ubmVTb3VzTG9jYXRpb24uZGF0ZV9uYWlzc2FuY2VfcGVyc29ubmVfc291c19sb2NhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgzMCkgKDApICgwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV8uUGVyc29ubmVTb3VzTG9jYXRpb24uY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LmxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy5Ob24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLk91aSBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mjk2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfbW9kZV9vY2N1cGF0aW9uXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiY29uZGl0aW9uX2xvZ2VtZW50X21vZGVfb2NjdXBhdGlvblwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTI5NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTU7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTU7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzc7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIHVzdWZydWl0X291X3Byb3ByaWV0ZV9mYW1pbGxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnByb3ByaWV0YWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXJlbnRPdUF1dHJlLkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlcyBwYXJ0c18gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydHNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXJlbnRPdUF1dHJlLkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXVpbF9sODIyXzNfcGFydHNfcHJvcHJpZXRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQudXN1ZnJ1aXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5EZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgcGFydHNfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V1aWxfbDgyMl8zX3BhcnRzX3VzdWZydWl0XykpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXN1ZnJ1aXRfb3VfcHJvcHJpZXRlX2ZhbWlsbGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQucmVzaWRlbmNlX3ByaW5jaXBhbGUpXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5NTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mjk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5NTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fb3V2ZXJ0dXJlX2w4MjJfMTBfcGV1cGxlbWVudF9sb2dlbWVudF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9vdXZlcnR1cmVfbDgyMl8xMF9wZXVwbGVtZW50X2xvZ2VtZW50XCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzAwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMDsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAwOyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODU7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODU7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDA7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDA7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWdlX2wxNjFfMTdfMl9zZWN1XzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiw6JnZV9sMTYxXzE3XzJfc8OpY3VcIl1cbiAgICAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE2OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyNTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDE2MS0xNy0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAxIDogSW5mb3JtYXRpb24gZXQgc2ltcGxpZmljYXRpb24gZGVzIGTDqW1hcmNoZXMgZGVzIGFzc3Vyw6lzLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUk6IFRpdHJlIElJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyByZWxhdGl2ZXMgYXUgZmluYW5jZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfYWdlX291dmVydHVyZV9kcm9pdF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTY7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGF0cmltb2luZV9wcmlzX2VuX2NvbXB0ZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcInBhdHJpbW9pbmVfcHJpc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg2OyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4NjsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5lc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjc7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2OTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGJvb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXN0YXRpb25fOiBQcmVzdGF0aW9uUmVjdWUudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX29yIGFjY19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBwcmVzdGF0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcHJlc3RhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnByZXN0YXRpb25zX3JlY3VlcykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk0NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTQ0OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogUHJpc2UgZW4gY29tcHRlIGR1IHBhdHJpbW9pbmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uIHBhdHJpbW9pbmVfdG90YWxfZGVtYW5kZXVyX1xuICAgICAgICAgICAgICAgICAgICAgICBzZXVpbF9sODIyXzVfcGF0cmltb2luZV8pKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKGRlbWFuZGV1cl8uRGVtYW5kZXVyLnBhdHJpbW9pbmUpLlBhdHJpbW9pbmUubmVfcHJvZHVpc2FudF9wYXNfcmV2ZW51X3BlcmlvZGVfcjgyMl8zXzNfcjgyMl80KSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTA7IHN0YXJ0X2NvbHVtbj0zMzsgZW5kX2xpbmU9MjUwOyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHBhdHJpbW9pbmVfdG90YWxfZGVtYW5kZXVyX1xuICAgICAgICAgICAgICAgICBzZXVpbF9sODIyXzVfcGF0cmltb2luZV8pIHRoZW4gcGF0cmltb2luZV90b3RhbF9kZW1hbmRldXJfXG4gICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfbG9nZW1lbnRfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfbG9nZW1lbnRcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMwMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDI7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgY29uZGl0aW9uX25vbl9vdXZlcnR1cmVfbDgyMl84X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOV9kZWNlbmNlX2xvZ2VtZW50XykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZCBjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZCBjb25kaXRpb25fbG9nZW1lbnRfbW9kZV9vY2N1cGF0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX2xvZ2VtZW50X2xvY2F0aW9uX3RpZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fb3V2ZXJ0dXJlX2w4MjJfMTBfcGV1cGxlbWVudF9sb2dlbWVudF8pKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhZ2VfbDM1MV84XzFfc2VjdV86IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIsOiZ2VfbDM1MV84XzFfc8OpY3VcIl1cbiAgICAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE1OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDM1MS04XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiA1IDogVGF1eCBldCBtb250YW50IGRlIGxhIHBlbnNpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBPdXZlcnR1cmUgZHUgZHJvaXQsIGxpcXVpZGF0aW9uIGV0IGNhbGN1bCBkZXMgcGVuc2lvbnMgZGUgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWIDogQXNzdXJhbmNlIHZpZWlsbGVzc2UgLSBBc3N1cmFuY2UgdmV1dmFnZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIElJSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IGFzc3VyYW5jZXMgc29jaWFsZXMgZXQgw6AgZGl2ZXJzZXMgY2F0w6lnb3JpZXMgZGUgcGVyc29ubmVzIHJhdHRhY2jDqWVzIGF1IHLDqWdpbWUgZ8OpbsOpcmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfZHVyX2R1ciBhZ2VfbDE2MV8xN18yX3NlY3VfXG4gICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICg1KSAoMCkgKDApKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzE1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxNTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqVwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyMDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMjA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyMDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyMDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMzMDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzMyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX25hdGlvbmFsaXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX2xvZ2VtZW50X21vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfbG9nZW1lbnRfKSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzIwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyMDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzIwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyMDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fMl9yODIzXzRfOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcImNvbmRpdGlvbl8yX3I4MjNfNFwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTczOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExODk7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgcGFyZW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5wYXJlbnRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBhcmVudGUuQXNjZW5kYW50ICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLnJlc3NvdXJjZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfaW5kaXZpZHVlbF9sODE1Xzlfc2VjdV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuMjVcIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmRhdGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlX2wzNTFfOF8xX3NlY3VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLnRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmRhdGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDY1KSAoMCkgKDApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuZGF0ZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VfbDE2MV8xN18yX3NlY3VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5iZW5lZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3NlY3UpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjQ7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0zMjQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzI0OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMyNDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMjQ7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX8OgX2NoYXJnZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAzOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIxMzsgc3RhcnRfY29sdW1uPTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMTk7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIHBhcmVudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmluY2FwYWNpdGVfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5yZXNzb3VyY2VzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9pbmRpdmlkdWVsX2w4MTVfOV9zZWN1X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjI1XCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTk0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25fMl9yODIzXzRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCI7IFwib3V0cHV0XCJdIChlbWJlZF9ib29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiXSBjb25kaXRpb25fMl9yODIzXzRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX3BlcnNvbm5lX2FfY2hhcmdlKSBwYXJhbV8pKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE0OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTUyOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMy00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5kYXRlX2RlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgyMSkgKDApICgwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgcGFyZW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTMwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IFBlcnNvbm5lQUNoYXJnZS50IGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJwZXJzb25uZXNfw6BfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX3BlcnNvbm5lX2FfY2hhcmdlKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMwNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExMzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzNzsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMy00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fZmlsdGVyXG4gICAgICAgICAgICAgIChmdW4gKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgIFwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX8OgX2NoYXJnZVwiXVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICBcInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV/DoF9jaGFyZ2VcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgIFwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX8OgX2NoYXJnZVwiXVxuICAgICAgICAgICAgICAgICBwcmlzZV9lbl9jb21wdGVfcGVyc29ubmVfYV9jaGFyZ2VfKVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICBcInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV/DoF9jaGFyZ2VcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UpIHBlcnNvbm5lX2FfY2hhcmdlXykpKSkpKSlcbiAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMwNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IGRlY2ltYWwgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyMjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMjI7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzM2OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX21hcFxuICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLlBhc0RlR2FyZGVBbHRlcm5lZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgY29lZmZfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmXylcbiAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpXG4gICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5QYXNEZUdhcmRlQWx0ZXJuZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5HYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzIyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyMjsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCJdIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzIxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyMTsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMzNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMzQ7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gb19sZW5ndGggcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzIxOyBlbmRfY29sdW1uPTU0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfcmF0X3JhdCBzZXVpbF9sODIyXzNfcGFydHNfdXN1ZnJ1aXRfXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMlwiKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTgyOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTgyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODI7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfcmF0X3JhdCBzZXVpbF9sODIyXzNfcGFydHNfcHJvcHJpZXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjJcIikpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4MTsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4MTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTgxOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTgxOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIHtFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5kYXRlX2NvdXJhbnRlID0gZGF0ZV9jb3VyYW50ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmVsaWdpYmlsaXRlID0gZWxpZ2liaWxpdGVfO1xuICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgPVxuICAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfO1xuICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb25kaXRpb25fMl9yODIzXzQgPVxuICAgICAgIGNvbmRpdGlvbl8yX3I4MjNfNF99XG5cbmxldCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IChyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luOiBSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCkgOiBSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPVxuICBsZXQgcmVzc291cmNlc19kZW1hbmRldXJfOiBtb25leSA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnJlc3NvdXJjZXNfZGVtYW5kZXVyX2luIGluXG4gIGxldCByZXNzb3VyY2VzX2NvbmpvaW50XzogbW9uZXkgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX2NvbmpvaW50X2luIGluXG4gIGxldCBwZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyXzogUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5ID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl9pbiBpblxuICBsZXQgZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfOiBib29sID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW4gaW5cbiAgbGV0IGNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfOiBib29sID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uam9pbnRfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9pbiBpblxuICBsZXQgcGVyc29ubmVzX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQgYXJyYXkgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfOiBTaXR1YXRpb25GYW1pbGlhbGUudCA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4gaW5cbiAgbGV0IG1vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4gaW5cbiAgbGV0IGNvbmRpdGlvbl9hZ2VfYm91cnNlX2Vuc2VpZ25lbWVudF9zdXBlcmlldXJfOiBib29sID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pbiBpblxuICBsZXQgZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXNfOiBib29sID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXNfaW4gaW5cbiAgbGV0IGRhdGVfZGVtYW5kZV9vdV9yZWV4YW1lbl9kcm9pdF86IGRhdGUgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXRfaW4gaW5cbiAgbGV0IHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfOiBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLnQgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5wYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV86IG1vbmV5ID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19zZXVpbF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX3NldWlsXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ5NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00OTU7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDkzOyBzdGFydF9jb2x1bW49NDY7IGVuZF9saW5lPTQ5MzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IGZhbHNlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ5NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00OTU7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfOF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfOFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ5OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00OTk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjE7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBhcHBsaWNhYmxlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU4OTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ5OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00OTk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfN186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfN1wiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUwMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDE7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBhcHBsaWNhYmxlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTAxOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX2ZvcmZhaXRhaXJlc19yODIyXzIwXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwicmVzc291cmNlc19mb3JmYWl0YWlyZXNfcjgyMl8yMFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDM7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTAzOyBzdGFydF9jb2x1bW49NTE7IGVuZF9saW5lPTUwMzsgZW5kX2NvbHVtbj01NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IGZhbHNlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDM7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJyZXNzb3VyY2VzX3BlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDk3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ5NzsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjk7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAxIDogTW9kYWxpdMOpcyBnw6luw6lyYWxlcyBkZSBsJ2FwcHLDqWNpYXRpb24gZGVzIHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX3JlZHVjZVxuICAgICAgICAgICAgICAoZnVuIChzdW0xXzogbW9uZXkpIChzdW0yXzogbW9uZXkpIC0+IG9fYWRkX21vbl9tb24gc3VtMV8gc3VtMl8pXG4gICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgIChvX21hcFxuICAgICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV86IFBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgIHBlcnNvbm5lXy5QZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci5yZXNzb3VyY2VzKVxuICAgICAgICAgICAgICAgICBwZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyXykpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ5Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00OTc7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfcl84MjJfMTBfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJhYmF0dGVtZW50X3JfODIyXzEwXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwMjsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTUyNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01MjQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IFByaW5jaXBlcyBkZSBuZXV0cmFsaXNhdGlvbiBldCBkJ2FiYXR0ZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAobGV0IGFiYXR0ZW1lbnRfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgKG9fZXEgKG9fbGVuZ3RoIHBlcnNvbm5lc19hX2NoYXJnZV8pIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9pbnRfaW50IChvX2xlbmd0aCBwZXJzb25uZXNfYV9jaGFyZ2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjkwMTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzUwMDBcIikpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZSBfIC0+IGFiYXR0ZW1lbnRfXG4gICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPiBhYmF0dGVtZW50X1xuICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUwMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDI7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgXCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE4OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IFByaW5jaXBlcyBkZSBuZXV0cmFsaXNhdGlvbiBldCBkJ2FiYXR0ZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE4OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IFByaW5jaXBlcyBkZSBuZXV0cmFsaXNhdGlvbiBldCBkJ2FiYXR0ZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0XykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQxODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTg7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogUHJpbmNpcGVzIGRlIG5ldXRyYWxpc2F0aW9uIGV0IGQnYWJhdHRlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXVxuICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgKHtCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVffSkpKSBpblxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9udGFudF86IG1vbmV5ID0gcmVzdWx0Xy5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnQgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfcl84MjJfOF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcImFiYXR0ZW1lbnRfcl84MjJfOFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ5ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00OTg7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDYyOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IFByaW5jaXBlcyBkZSBuZXV0cmFsaXNhdGlvbiBldCBkJ2FiYXR0ZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLk91aUF2ZWNMb3llck91Q2hhcmdlcyBsb3llcl9vdV9jaGFyZ2VzXyAtPlxuICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfOF9cbiAgICAgICAgICAgIHwgUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC5Ob24gXyAtPlxuICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00OTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDk4OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJyZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MDg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTA4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTA4OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTA4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU0OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTc7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0yMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDMgOiBNb250YW50IGZvcmZhaXRhaXJlIGRlIHJlc3NvdXJjZXMgYXBwbGljYWJsZSBhdXggw6l0dWRpYW50c1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXNfKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNzb3VyY2VzX2ZvcmZhaXRhaXJlc19yODIyXzIwXykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyNDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDEgOiBNb2RhbGl0w6lzIGfDqW7DqXJhbGVzIGRlIGwnYXBwcsOpY2lhdGlvbiBkZXMgcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcmVzc291cmNlc19kZW1hbmRldXJfIHJlc3NvdXJjZXNfY29uam9pbnRfKVxuICAgICAgICAgICAgICByZXNzb3VyY2VzX3BlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MDg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTA4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X3JfODIyXzdfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJhYmF0dGVtZW50X3JfODIyXzdcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MDA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTAwOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwOTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi03XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBQcmluY2lwZXMgZGUgbmV1dHJhbGlzYXRpb24gZXQgZCdhYmF0dGVtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2FuZCBkZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9cbiAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHJlc3NvdXJjZXNfZGVtYW5kZXVyX1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX2NvbmpvaW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKSkgdGhlblxuICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzdfIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDA7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChhY2NfOiBib29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfOiBQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FuZCBhY2NfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lXy5QZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci5kdXJlZV9yZXNpZGVuY2VfZHVyYW50X3BlcmlvZGVfcl84MjJfM18xX3N1cGVyaWV1cmVfYV82X21vaXMpKVxuICAgICAgICAgICAgICAgICAgICAgICB0cnVlIHBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDI7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDM7IGVuZF9jb2x1bW49NzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMSA6IE1vZGFsaXTDqXMgZ8OpbsOpcmFsZXMgZGUgbCdhcHByw6ljaWF0aW9uIGRlcyByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Mjsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0MzsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAxIDogTW9kYWxpdMOpcyBnw6luw6lyYWxlcyBkZSBsJ2FwcHLDqWNpYXRpb24gZGVzIHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSBpblxuICB7UmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5yZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICByZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVffVxuXG5sZXQgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbjogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgcHJlc3RhdGlvbl9jb3VyYW50ZV86IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gaW5cbiAgbGV0IGFnZV9sNTEyXzNfMl86IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcIsOiZ2VfbDUxMl8zXzJcIl0gKGVtYmVkX2R1cmF0aW9uKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQzOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQzOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUxMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IENoYW1wIGQnYXBwbGljYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkdXJhdGlvbl9vZl9udW1iZXJzICgyMCkgKDApICgwKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIGxldCBzbWljX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pYy5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTUyOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT01Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01MjsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTUyOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpIGluXG4gIGxldCBzbWljX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pYy5yw6lzaWRlbmNlXCJdXG4gICAgICAoZW1iZWRfY29sbGVjdGl2aXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTE7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTUxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTUxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc2lkZW5jZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01MTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogU21pYy50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJzbWljXCI7IFwiU21pY1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWNcIjsgXCJTbWljXCJdIHNtaWMpXG4gICAgKHtTbWljSW4uZGF0ZV9jb3VyYW50ZV9pbiA9IHNtaWNfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBTbWljSW4ucmVzaWRlbmNlX2luID0gc21pY19kb3RfcmVzaWRlbmNlX30pKSkgaW5cbiAgbGV0IHNtaWNfZG90X2JydXRfaG9yYWlyZV86IG1vbmV5ID0gcmVzdWx0Xy5TbWljLmJydXRfaG9yYWlyZSBpblxuICBsZXQgcmVnaW1lX291dHJlX21lcl9sNzUxXzFfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInLDqWdpbWVfb3V0cmVfbWVyX2w3NTFfMVwiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00NDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IChcbiAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvc8OpY3VyaXTDqV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzMTsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzUxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gKCkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDQ7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDQ7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9sNTEyXzNfMl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInBsYWZvbmRfbDUxMl8zXzJcIl0gKGVtYmVkX21vbmV5KVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQyOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gKFxuICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyOyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjI7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjc1NS0wLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRMOpcGFydGVtZW50cyBkJ291dHJlLW1lclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICByZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBzbWljX2RvdF9icnV0X2hvcmFpcmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41NVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxNjkuXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMTsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUxMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IENoYW1wIGQnYXBwbGljYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHNtaWNfZG90X2JydXRfaG9yYWlyZV9cbiAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41NVwiKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTY5LlwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MjsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25zX2hvcnNfYWdlXzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MTItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9sNTEyXzNfMl8pKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQxOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKSkgaW5cbiAgbGV0IGRyb2l0X291dmVydF86IEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MDsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvc8OpY3VyaXTDqV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzE7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbDUxMl8zXzJfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VfbDUxMl8zXzJfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXykpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MTItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT00MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MDsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDA7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkpKSBpblxuICB7RWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZHJvaXRfb3V2ZXJ0ID0gZHJvaXRfb3V2ZXJ0XztcbiAgICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSA9XG4gICAgICAgY29uZGl0aW9uc19ob3JzX2FnZV87XG4gICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZV9sNTEyXzNfMiA9IGFnZV9sNTEyXzNfMl87XG4gICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xID1cbiAgICAgICByZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV99XG5cbmxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udCkgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnQgPVxuICBsZXQgbG95ZXJfcHJpbmNpcGFsXzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb3llcl9wcmluY2lwYWxfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luIGluXG4gIGxldCBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IHpvbmVfOiBab25lREhhYml0YXRpb24udCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnpvbmVfaW4gaW5cbiAgbGV0IGxvZ2VtZW50X2VzdF9jaGFtYnJlXzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luIGluXG4gIGxldCBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc186IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiBpblxuICBsZXQgdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luIGluXG4gIGxldCBjb2xvY2F0aW9uXzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmNvbG9jYXRpb25faW4gaW5cbiAgbGV0IHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbiBpblxuICBsZXQgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl86IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luIGluXG4gIGxldCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF86IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pbiBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb3llcl9wcmluY2lwYWxfYmFzZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYubG95ZXJfcHJpbmNpcGFsX2Jhc2VcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc5MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03OTE7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzkxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTc5MTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbG95ZXJfcHJpbmNpcGFsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03OTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NzkxOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc5Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03OTM7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzkzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTc5MzsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03OTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NzkzOyBlbmRfY29sdW1uPTYwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYuYsOpbsOpZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2Fww6lzXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03OTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Nzk1OyBlbmRfY29sdW1uPTc4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTc5NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03OTU7IGVuZF9jb2x1bW49Nzg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Nzk1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTc5NTsgZW5kX2NvbHVtbj03ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImNhbGN1bF9hcGxfbG9jYXRpZi5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03OTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Nzk4OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTc5ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03OTg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc5ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03OTg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl0gKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODAwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwMDsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MDA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODAwOyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MDA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODAwOyBlbmRfY29sdW1uPTU4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MDI7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODAyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwMjsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODAyOyBlbmRfY29sdW1uPTYzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImNhbGN1bF9hcGxfbG9jYXRpZi56b25lXCJdXG4gICAgICAoZW1iZWRfem9uZV9kX2hhYml0YXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODA0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwNDsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MDQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODA0OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB6b25lXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MDQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODA0OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVudF9lc3RfY2hhbWJyZV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi5sb2dlbWVudF9lc3RfY2hhbWJyZVwiXSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODA2OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MDY7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGxvZ2VtZW50X2VzdF9jaGFtYnJlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODA2OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc186IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi7DomfDqWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaMOpYmVyZ8OpZXNfb27DqXJldXhfcGFydGljdWxpZXJzXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MDk7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT04MTA7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODA5OyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9ODEwOyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgwOTsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTgxMDsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYudHlwZV9haWRlXCJdXG4gICAgICAoZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODEzOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgxMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTM7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHR5cGVfYWlkZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODEzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxMzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfY29sb2NhdGlvbl86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImNhbGN1bF9hcGxfbG9jYXRpZi5jb2xvY2F0aW9uXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODE1OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgxNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTU7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNvbG9jYXRpb25fKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgxNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTU7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3JlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi5yw6lkdWN0aW9uX2xveWVyX3NvbGlkYXJpdMOpXCJdIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODE3OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgxNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTc7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODE3OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVudF9tZXVibGVfZDg0Ml8yXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLmxvZ2VtZW50X21ldWJsw6lfZDg0Ml8yXCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgxOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODE5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxOTsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODE5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxOTsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImNhbGN1bF9hcGxfbG9jYXRpZlwiO1xuICAgICAgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWZcIjtcbiAgICAgIFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCJdXG4gICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmKVxuICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb3llcl9wcmluY2lwYWxfYmFzZV9pbiA9XG4gICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG95ZXJfcHJpbmNpcGFsX2Jhc2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi56b25lX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3pvbmVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xvZ2VtZW50X2VzdF9jaGFtYnJlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc187XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3R5cGVfYWlkZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9jb2xvY2F0aW9uXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVudF9tZXVibGVfZDg0Ml8yX30pKSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTYgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGxhZm9uZF9sb3llcl9kODIzXzE2XzIgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcGFydGljaXBhdGlvbl9taW5pbWFsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX21pbmltYWxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3RhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlXzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcGFydGljaXBhdGlvbl9wZXJzb25uZWxsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IFxuICAgIG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Nzg4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTc4ODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Nzg4OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03ODg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyODE7IHN0YXJ0X2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyODE7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LkNoYW5nZW1lbnQgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vbiBsb3llcl9wcmluY2lwYWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuYW5jaWVuX2xveWVyX3ByaW5jaXBhbCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuUGFzRGVDaGFuZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpIChmdW4gKF86IHVuaXQpIC0+IHBhcmFtXykpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgyNDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgyNDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl1cbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdXG4gICAgICAgICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfKVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT03ODg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Nzg4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03ODg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Nzg4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc4Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03ODY7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03ODY7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03ODY7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjczOyBzdGFydF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI3MzsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNlY3RldXIgbG9jYXRpZiBvcmRpbmFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LkNoYW5nZW1lbnQgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb24gbG95ZXJfcHJpbmNpcGFsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5hbmNpZW5fbG95ZXJfcHJpbmNpcGFsKSlcbiAgICAgICAgICAgICAgICAgICAgIHwgQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuUGFzRGVDaGFuZ2VtZW50IF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5DaGFuZ2VtZW50IGluZm9zXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gbG95ZXJfcHJpbmNpcGFsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5hbmNpZW5fbG95ZXJfcHJpbmNpcGFsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnQpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5QYXNEZUNoYW5nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODIzOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03ODY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Nzg2OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUgPSBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX31cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbjogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi50KSA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQgPVxuICBsZXQgdHlwZV9sb2dlbWVudF9mb3llcl86IFR5cGVMb2dlbWVudEZveWVyLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW4gaW5cbiAgbGV0IGRhdGVfY29udmVudGlvbm5lbWVudF86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmRhdGVfY29udmVudGlvbm5lbWVudF9pbiBpblxuICBsZXQgcmVkZXZhbmNlXzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnJlZGV2YW5jZV9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IHpvbmVfOiBab25lREhhYml0YXRpb24udCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uem9uZV9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2XzogQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luIGluXG4gIGxldCBtb250YW50X21pbmltYWxfYWlkZV9kODQyXzE1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfMTVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05Mjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTI3OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTAwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxMDA7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkyNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05Mjc7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzE1XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTI4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTkyODsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA4OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDg5OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0MVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkyODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05Mjg7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X21pbmltYWxfZGVwZW5zZV9uZXR0ZV9kODQyXzE3XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJtb250YW50X21pbmltYWxfZMOpcGVuc2VfbmV0dGVfZDg0Ml8xN1wiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05Mjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTI5OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTkxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxOTE7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkyOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05Mjk7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5jb25kaXRpb25fMl9kdV84MzJfMjVcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODM5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4Mzk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDgzOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODM5OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDgzOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODM5OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7IFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDgzNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODM1OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7IFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4MzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgzNTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODM1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MzU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODM3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4Mzc7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDgzNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODM3OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDgzNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODM3OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7IFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF9ub21icmVfcGFydHNcIjtcbiAgICAgIFwiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llclwiXSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIpXG4gICAgKHtDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxffSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Njg7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk2ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Njg7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Njg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTY4OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICh7Q29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVffSkpKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubW9udGFudCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfdHlwZV9sb2dlbWVudF9mb3llcl86IFR5cGVMb2dlbWVudEZveWVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnR5cGVfbG9nZW1lbnRfZm95ZXJcIl1cbiAgICAgIChlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk1Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NTI7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk1Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NTI7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0eXBlX2xvZ2VtZW50X2ZveWVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTUyOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY29udmVudGlvbm5lbWVudF86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLmRhdGVfY29udmVudGlvbm5lbWVudFwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTU0OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05NTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTU0OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb252ZW50aW9ubmVtZW50XykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTU0OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5yZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTU4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk1ODsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTU4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk1ODsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTU4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk1ODsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl1cbiAgICAgIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NjA7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk2MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NjA7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTYwOyBlbmRfY29sdW1uPTY1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTYyOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05NjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTYyOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTYyOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuem9uZVwiXVxuICAgICAgKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NjQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk2NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NjQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB6b25lXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTY0OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NjY7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk2Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NjY7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTY2OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3JlZGV2YW5jZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5yZWRldmFuY2VcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk1Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NTY7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk1Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NTY7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZWRldmFuY2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk1Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NTY7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogdW5pdCAtPiBib29sID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5jb25kaXRpb25fMl9kdV84MzJfMjVcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODAyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MDI7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDgwMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODAyOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogdW5pdCAtPiBkZWNpbWFsID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdIChlbWJlZF9kZWNpbWFsKVxuICAgICAgKHJhaXNlIEVtcHR5RXJyb3IpKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llclwiO1xuICAgICAgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCJdXG4gICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcilcbiAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF90eXBlX2xvZ2VtZW50X2ZveWVyXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9kYXRlX2NvbnZlbnRpb25uZW1lbnRfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9yZWRldmFuY2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfcl9kODMyXzI1XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9yX2Q4MzJfMjUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IFxuICAgIG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc1wiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkzMjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05MzI7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTMyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTMyOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDc2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA3NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0MFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkzMjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkzMjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MzI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTMyOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZXF1aXZhbGVuY2VfbG95ZXJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiw6lxdWl2YWxlbmNlX2xveWVyXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkzMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05MzE7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTMxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTMxOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTE4OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTE4OyBlbmRfY29sdW1uPTc5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NzA4XCIpXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM1NTlcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTMxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTMxOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTUzOyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTU0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTM2MlwiKVxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzMTk2XCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkzMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkzMTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkzMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTMxOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNzE7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDE3MjsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTc2MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjczNjVcIikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTM1OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTM2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzYwN1wiKVxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MzY1XCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkzMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkzMTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49Nzk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NDE0XCIpXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTMxMDBcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTMxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTMxOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03NDY7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTc0NzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0M1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwNjQwXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzIwNzNcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTMxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTMxOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTMxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05MzE7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzY1OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTc2NjsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MDEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NDQwXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzI3OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03Mjg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzAxMlwiKVxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NDQwXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MzE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTMxOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NDU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTQ1OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4NTE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00ODUxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHBhcmFtXyBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTVfKVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHBhcmFtXyBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTVfKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05NDU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTQ1OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQ1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk0NTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ4MzI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgzMjsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODMyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MzI7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODMyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MzI7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODMxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MzE7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDgzMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODMxOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDgzMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODMxOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7IFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2RlY2ltYWwpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NDE7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg0MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODQxOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NDE7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlKVxuICAgICh7Q2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUubW9udGFudCBpblxuICBsZXQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MzA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTMwOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4MDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgwNTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkzMDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05MzA7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05MjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTI1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5NjM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTYzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgb19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGVxdWl2YWxlbmNlX2xveWVyX1xuICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc18pIHBhcmFtXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05MjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTI1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTI1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTkyNTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGxveWVyX21pbmltYWxfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwibG95ZXJfbWluaW1hbFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MzM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTMzOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4NDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDg0MzsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkzMzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05MzM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTI2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTkyNjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00OTcyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk3MjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb24gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSBkZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgcGFyYW1fKSkpKSkpKSBtb250YW50X21pbmltYWxfZGVwZW5zZV9uZXR0ZV9kODQyXzE3XylcbiAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gbW9udGFudF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfZDg0Ml8xN19cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICBwYXJhbV8pKSkpKSkpKSBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTkyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05MjY7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTI2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk0Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05NDM7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc4NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Nzg0OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGVxdWl2YWxlbmNlX2xveWVyX1xuICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfKSBsb3llcl9taW5pbWFsXylcbiAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQzOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTk0MzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk0Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NDY7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg2NTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4NjU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGFiYXR0ZW1lbnRfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vbiAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gYWJhdHRlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIGFiYXR0ZW1lbnRfKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05NDY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTQ2OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQ2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk0NjsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NDc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTQ3OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4ODM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00ODgzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWYgKG9fZ3RfbW9uX21vbiBhaWRlX2ZpbmFsZV8gcmVkZXZhbmNlXykgdGhlbiByZWRldmFuY2VfXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk0NzsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk0Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NDc7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl0gKHVuZW1iZWRkYWJsZSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk0ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NDg7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg5Nzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4OTc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGNyZHNfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwXCIpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk0ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NDg7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NDg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTQ4OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk0OTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00OTE4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDkxODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfMTVfKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk0OTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk0OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NDk7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llciA9IGVxdWl2YWxlbmNlX2xveWVyXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzID1cbiAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5sb3llcl9taW5pbWFsID0gbG95ZXJfbWluaW1hbF87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUgPSBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxffVxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbjogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCkgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IHpvbmVfOiBab25lREhhYml0YXRpb24udCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uem9uZV9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG1lbnN1YWxpdGVfcHJpbmNpcGFsZV86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9yODIyXzExXzEzXzE3XzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gaW5cbiAgbGV0IGRhdGVfc2lnbmF0dXJlX3ByZXRfOiBkYXRlID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX3NpZ25hdHVyZV9wcmV0X2luIGluXG4gIGxldCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfOiBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luIGluXG4gIGxldCBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gaW5cbiAgbGV0IGRhdGVfZW50cmVlX2xvZ2VtZW50XzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW4gaW5cbiAgbGV0IGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0XzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNoYXJnZXNfbWVuc3VlbGxlc19wcmV0X2luIGluXG4gIGxldCBjb3Byb3ByaWV0ZV86IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzZcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODU2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg1NjsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzk2MzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODU2OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidGF1eF9mcmFuY3NfdmVyc19ldXJvc1wiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg1OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NTk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzMxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBwcmVtaWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUsOoZ2xlbWVudCAoQ0UpIG7CsDI4NjYvOTggZHUgY29uc2VpbCBkdSAzMSBkw6ljZW1icmUgMTk5OCBjb25jZXJuYW50IGxlcyB0YXV4IGRlIGNvbnZlcnNpb24gZW50cmUgbCdldXJvIGV0IGxlcyBtb25uYWllcyBkZXMgw4l0YXRzIG1lbWJyZXMgYWRvcHRhbnQgbCdldXJvXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19kaXZfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LjU1OTU3XCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODU5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml82XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg2Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjI7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTczOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5NzM7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjI7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTFcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDAyNzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xMlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NjQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA1Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDUyOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkwMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfZDg0Ml8xMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImNvZWZmaWNpZW50X2Q4NDJfMTFcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg2NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjU7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDM0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwMzQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzNFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODY1OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X2Q4NDJfMTJfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJjb2VmZmljaWVudF9kODQyXzEyXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODY2OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDQ1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIxNi4yNVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODY2OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ0NDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ0NjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ0Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQ2OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NDQ2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ0ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQ4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDQ4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDQ0ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQ4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7XG4gICAgICBcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCJdXG4gICAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICh7Q2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxffSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8xMV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTEgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkwNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDc7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MDc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTA3OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkwNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDc7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50IGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc1wiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODQ5OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NDk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODQ5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NDk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY1NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NTU7IGVuZF9jb2x1bW49MTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Byb3ByaWV0ZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYxNzsgc3RhcnRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYxNzsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NDk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODQ5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NDk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMDU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAwNTsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29wcm9wcmlldGVfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYxMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTI3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTUxOyBzdGFydF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzk1MTsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODQ5OyBzdGFydF9jb2x1bW49NDc7IGVuZF9saW5lPTg0OTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gZmFsc2UpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODQ5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg0OTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04Nzk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0NTY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDU2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBwYXJhbV8gbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzZfKVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHBhcmFtXyBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfNl8pKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg3OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04Nzk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODc5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg3OTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXzogZGF0ZSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogZGF0ZSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTEzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5MTM7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1ODcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkxMzAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA1NTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTEzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxNzEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjI5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI4MDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyODAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM5MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzA2MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODQ3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MTIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk3NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTg3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE4NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzA2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1ODQwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MjYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTc5ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODcwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk0MjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwODYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDg2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTU5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NTk7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NykgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2MDQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkzNDAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA3ODAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTM3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxOTYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjU1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQwODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzI1MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODY3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk5OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNjUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjExMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIxMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzIwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MDEwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3NDUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgxODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk2NDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMDkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTA5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDA1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMDU7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTcpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OCkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2MzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk2OTAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjExNjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTc2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjk2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM0NjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQzMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzU2MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTAxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NjYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAzNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjUxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI1MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzQ0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2MzAwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3NzcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg1MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTI1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk5OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNDcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTQ3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDUxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwNTE7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTgpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OSkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAxNjAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE2NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjI4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyOTAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzUxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQwMjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MDIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ2NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzk4MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA4NDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzc2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NjkwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MjAwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg5NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTcxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA0NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxOTkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTk5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDk3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwOTc7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTkpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAxODAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE2OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjMwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyOTIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzUzMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQwNDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MDQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ2ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODAwMDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA4NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNTQwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzc3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzEwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MjIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg5NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTczMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA0OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMDEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjAxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTQzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNDM7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDApICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2OTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAzODAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE5MTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjUyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzc3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQyODAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ4MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODE4MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTY4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMzcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjEwNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNzYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzMwMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMzMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2ODgwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4NDAwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkxNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTkzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA2OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMjMwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjIzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTg5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxODk7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDEpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA2MjAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIxNzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjc5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNDMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDA2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ1NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTUwMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODQwMDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTkyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwNjEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjEzMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzU4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM1ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNDA4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MDgwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4NjIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkzOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDE3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA5NDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyNTAwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjUwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjM1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyMzU7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjA4NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzc5OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ3NDNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzE5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ1N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ1N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjg4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjgwNTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDM2OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNTAyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzU2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTQ2NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYwMzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODM4NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk1NjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNzQ5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTkyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDMwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDMwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTQ7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyODA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzI4MDsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAzKSAoNykgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2Mzk3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTgxMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MjA0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTE2MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYxNDhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MTE5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3OTA2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3OTA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMTU4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODM4OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNzMyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTc5N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI4OTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzOTcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2Mzc4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2Mzc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxNzIzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjM1MFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4NzI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTkxNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzExMThcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMzA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NzEzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NzEzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzAwOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTQ7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1NDsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzMyNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzI1OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAzKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg5KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY3MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMTk0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ2MTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NTgyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjU4MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc1NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzgzNjFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzgzNjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzQxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM0MzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4NzI5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzExMDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMTc5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzI4N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQzODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4MTVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4MTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE5ODRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NjY2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjkwNzJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwMjc0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTQ5MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI2OTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzUxMzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzUxMzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzcwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzNzA7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg5KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzE5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI3NzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTIzN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYyMjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MjQwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODI0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTA1MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTA1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0MDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzg1OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjkyNDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY2MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI3NThcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzODg2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDk5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyNTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjM4MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxNDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTU5NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA4MTlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMDU4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzI4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTc2MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTc2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTQ7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0MTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQxNTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA4KSAoMSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3OTU2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzY5MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MjI0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzIzNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgyODNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MzExXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwMTQ0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwMTQ0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0NTI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDA2NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNTQ4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzY3NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ4NjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1OTc5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NTI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NTI3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM1MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMDA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzkwNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNDI0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY4MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI5NTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MjE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NzMzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NzMzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE4N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTQ7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1NDsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ2MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDYwOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDkpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjg3MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NjIxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcyMjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4MjY0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTM0MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzOTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEyNTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEyNTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTkyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjUyMDNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwODk1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM0NDZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NjA0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTc5NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY5NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk1OTBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk1OTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM2NDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4Njc2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEyNjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNTU2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzg2NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUxNThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc3NzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc3NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjc1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTA1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1MDU7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTU3NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2NDJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODMyMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkzOTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNTAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTU4OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjQ2OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjQ2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2OThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTk0NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE4MDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDQzM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2MjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2ODUyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODA2M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDc1OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDc1OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NDRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDMzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk1MjJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjE4NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM1MTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0ODY1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjE5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODg5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODg5MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTQ7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1NTA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU1MDsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NjcwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTc1N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NDQ1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTUxOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA2MDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNzIxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyNjA1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyNjA1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2MDI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTkwOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NjQzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTczOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY5NzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4MTg1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwODg4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwODg4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0NDE3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTYxNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMjg5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzYyM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ5NzdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MzExXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MDE2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MDE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTQ7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1NDsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU5NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTk1OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk5OTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MTQ5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg4NjhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5OTU0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTA3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIxODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMwNzRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMwNzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzUxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYzMTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMjU5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ5MjNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MTMyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzM3M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg2MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzMzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzMzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQ2ODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5OTQyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI2NDRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzOTkzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTM2MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY3MTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk0NDVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk0NDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjQwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NDA7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDI5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY1MTBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTI1N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzNTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDg5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjYwMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzUwNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzUwNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3ODlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjU3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI1ODJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI3MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY0OTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NzUxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODk5MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTc1MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTc1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDkzM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzAyNDFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjk3MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQzMzNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzE2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzA3N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTgzOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTgzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTQ7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2ODU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY4NTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoMTApICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDk0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcyOTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDEwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEyMjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMzgxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MzUxOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDQ0MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDQ0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzE0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzMyODNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjAzMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcyNzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NTYzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTgyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjY0OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjY1OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTQ2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA4OTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzY3OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUwNzFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NDg0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzg3NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDY5NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDY5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTQ7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3MzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzczMDsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEwKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzExMjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NTA4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzMzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDU3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjYyM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDM3NjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ2OTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ2OTNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODkyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjczMDRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNDczXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYyMzVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NDkwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODc4M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAwNTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI4OTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI4OTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU2MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMDY3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM4NzFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MjcxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgwOTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA5MjhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA5MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzc1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM3NzU7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMCkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMTQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzUzOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMzYyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ5MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDI2NTdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzODAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NzI5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NzI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MzI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MjY0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzUyMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg4MTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMDg4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyOTI2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyOTI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzczMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1NjM0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTA5MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzODk4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI5OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY3MjFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4MTIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwOTYxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwOTYxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTQ7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1NDsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgyMDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODIwOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTM4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc4MjBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDY2NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE4MDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyOTc3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDEzMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTA2NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTA2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzUzMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM3NTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjUzNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc4MDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MTA1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDM4OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzI0OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzI0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTgyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEzMjVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDE1MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU1NjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2OTk2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODQwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTI2OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTI2OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTQ7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4NjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg2NTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTQ3NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc5MzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDc4N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE5MjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzMTA2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDI2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzYxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM4NTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY0NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc5MTVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MjIyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDUxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzM3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzM3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTkwNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDI1NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2NzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MTA3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODUyMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTM5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTM5MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1ODhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg1NDsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODU0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNldWlsX21pbmltYWxfcmVzc291cmNlc19tZW5hZ2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInNldWlsX21pbmltYWxfcmVzc291cmNlc19tw6luYWdlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg1ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NTg7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1ODsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY5Njsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDcwMjsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg5KSAoMzApKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX1xuICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X2Q4NDJfMTJfKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1ODsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDcxNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDcxNTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPiBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzEyXykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODU4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg1ODsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2Mzc7IHN0YXJ0X2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NjM3OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICBvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXykgcGFyYW1fKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg2MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODYwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2MDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9hdmVjX2NvcHJvcHJpZXRlXzogZGF0ZSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl0gKHVuZW1iZWRkYWJsZSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IGRhdGUpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg1NTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTU7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1NTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTU7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1NTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYzMzsgc3RhcnRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYzMzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvcHJvcHJpZXRlXyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2Jhc2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9kYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1fKSkpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5ODU7IHN0YXJ0X2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzk4NTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvcHJvcHJpZXRlXyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2Jhc2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX2RhdGUpIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYmFzZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9kYXRlKSBwYXJhbV8pKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkwOTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXVxuICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXylcbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfZGF0ZSkgcGFyYW1fKSkpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg1NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04NTU7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODU1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg1NTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfc2V1aWxfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfc2V1aWxcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODM0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTgzNDsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODM0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODM0OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzM1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NzM1OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlXykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDcyNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NzI1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX1xuICAgICAgICAgICAgICAgICBzZXVpbF9taW5pbWFsX3Jlc3NvdXJjZXNfbWVuYWdlXykgdGhlblxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgKG9fcm91bmRfbW9uXG4gICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBzZXVpbF9taW5pbWFsX3Jlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDk5OVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMVwiKSkpXG4gICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpIGVsc2VcbiAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MzQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODM0OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInBsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg1Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NTI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1Mjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU4Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDU4NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAobGV0IHBsYWZvbmRfc2lnbmF0dXJlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9hdmVjX2NvcHJvcHJpZXRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX2RhdGUpIGRhdGVfc2lnbmF0dXJlX3ByZXRfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAobGV0IHBsYWZvbmRfZW50cmVlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9hdmVjX2NvcHJvcHJpZXRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX2RhdGUpIGRhdGVfZW50cmVlX2xvZ2VtZW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBpZiAob19sdF9tb25fbW9uIHBsYWZvbmRfc2lnbmF0dXJlXyBwbGFmb25kX2VudHJlZV8pXG4gICAgICAgICAgICAgICAgICAgICAgIHRoZW4gcGxhZm9uZF9lbnRyZWVfIGVsc2UgcGxhZm9uZF9zaWduYXR1cmVfKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTY4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ1Njg7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2F2ZWNfY29wcm9wcmlldGVfKVxuICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX2RhdGUpIGRhdGVfc2lnbmF0dXJlX3ByZXRfKSkpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODUyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ0NDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ0MjsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ0Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQyOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NldWlsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ0NDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ0MjsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDE7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0NDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ0MTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NDQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDE7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2RlY2ltYWwpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDQ0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDQ7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0NDQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ0NDsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzExXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ0NDQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ0NDsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUpXG4gICAgKHtDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfO1xuICAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS5tb250YW50IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF90eXBlX2xvZ2VtZW50X2ZveWVyXzogVHlwZUxvZ2VtZW50Rm95ZXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIudHlwZV9sb2dlbWVudF9mb3llclwiXVxuICAgICAgKGVtYmVkX3R5cGVfbG9nZW1lbnRfZm95ZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODkxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg5MTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTg5MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04OTE7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gVHlwZUxvZ2VtZW50Rm95ZXIuQXV0cmUgKCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODkxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg5MTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb252ZW50aW9ubmVtZW50XzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50XCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg5Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04OTM7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04OTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODkzOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfb2ZfbnVtYmVycyAoMTk3MCkgKDEpICgxKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04OTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODkzOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg5Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04OTc7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04OTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODk3OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19zZXVpbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODk3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg5NzsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdXG4gICAgICAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODk5OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODk5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg5OTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04OTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODk5OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTAxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkwMTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTkwMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDE7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTAxOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnpvbmVcIl0gKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkwMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTAzOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHpvbmVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkwMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDU7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTA1OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDU7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3JlZGV2YW5jZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5yZWRldmFuY2VcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg5NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04OTU7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04OTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODk1OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04OTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODk1OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfOiB1bml0IC0+IGJvb2wgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ0MDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQwMTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQwMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDAxOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IHVuaXQgLT4gZGVjaW1hbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXSAoZW1iZWRfZGVjaW1hbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ0MDg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQwODsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQwODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDA4OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyXCI7IFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiXVxuICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyXCI7IFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiXVxuICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIpXG4gICAgKHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luID1cbiAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfdHlwZV9sb2dlbWVudF9mb3llcl87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY29udmVudGlvbm5lbWVudF9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb252ZW50aW9ubmVtZW50XztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi56b25lX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF96b25lXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnJlZGV2YW5jZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcmVkZXZhbmNlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3JfZDgzMl8yNV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfOiBcbiAgICBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IHNldWlsX21pbmltYWxfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwic2V1aWxfbWluaW1hbF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODU3OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2NzE7IHN0YXJ0X2NvbHVtbj03O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ2NzQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTkpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfc2V1aWxfXG4gICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfZDg0Ml8xMV8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2NTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDY1OTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTFfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODU3OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1lbnN1YWxpdGVfZWxpZ2libGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwibWVuc3VhbGl0w6lfw6lsaWdpYmxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODQ4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg0ODsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQyMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDIyOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfKVxuICAgICAgICAgICAgICB0aGVuIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfIGVsc2UgbWVuc3VhbGl0ZV9wcmluY2lwYWxlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODQ4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg0ODsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtZW5zdWFsaXRlX21pbmltYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcIm1lbnN1YWxpdMOpX21pbmltYWxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODUwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg1MDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQzNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDM3OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg1MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NTA7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg1MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NTE7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0MTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQxMTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODUxOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjE7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2NDg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NjQ4OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSBkZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19sdF9tb25fbW9uIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgIHNldWlsX21pbmltYWxfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gc2V1aWxfbWluaW1hbF9kZXBlbnNlX25ldHRlX21pbmltYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICBkZXBlbnNlX25ldHRlX21pbmltYWxlXykgZWxzZVxuICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg2MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjE7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODYxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2MTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImFpZGVfZmluYWxlX2Zvcm11bGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NzY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9ODc2OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzgyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQzODI7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIG1lbnN1YWxpdGVfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc18pIG1lbnN1YWxpdGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NzY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9ODc2OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg4MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04ODA7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0NzA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDcwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWJhdHRlbWVudF8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZiAob19sdF9tb25fbW9uIGFpZGVfZmluYWxlXyBhYmF0dGVtZW50XykgdGhlblxuICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBhYmF0dGVtZW50XykpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODgwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg4MDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04ODA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODgwOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXSAodW5lbWJlZGRhYmxlKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODgxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg4MTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ4NDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0ODQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgY3Jkc18gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODgxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg4MTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04ODE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODgxOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg4Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04ODI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1MDQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTA0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfNl8pXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBhaWRlX2ZpbmFsZV8pKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT04ODI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODgyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg4Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04ODI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX31cblxubGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW46IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50KSA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudCA9XG4gIGxldCBtb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ubW9kZV9vY2N1cGF0aW9uX2luIGluXG4gIGxldCB0eXBlX2FpZGVfOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50eXBlX2FpZGVfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV86IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlXzogU2l0dWF0aW9uRmFtaWxpYWxlLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHpvbmVfOiBab25lREhhYml0YXRpb24udCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnpvbmVfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgY2F0ZWdvcmllX2NhbGN1bF9hcGxfOiBDYXRlZ29yaWVDYWxjdWxBUEwudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiY2F0w6lnb3JpZV9jYWxjdWxfYXBsXCJdXG4gICAgKGVtYmVkX2NhdGVnb3JpZV9jYWxjdWxfYV9wX2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NDA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzQwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQxMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDEzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggbW9kZV9vY2N1cGF0aW9uX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgbG9jYXRpb25fIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiBsb2NhdGlvbl8pXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBsb2dlbWVudGZveWVyXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuTG9nZW1lbnRGb3llciBsb2dlbWVudGZveWVyXylcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGFpcmVfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgcHJvcHJpZXRhaXJlXylcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uIGxvY2F0aW9uXylcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlIHByb3ByaWV0YWlyZV8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03NDA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzQwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwicmVzc291cmNlc19tw6luYWdlX2F2ZWNfYXJyb25kaVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTczNDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MzQ7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTc0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE5NzQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgIChvX3JvdW5kX21vblxuICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxXCIpKSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIFwiNDlcIikpKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MzQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzM0OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzQxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc0MTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03ODsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLk1hcmllcyBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzQxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc0MTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc291c19jYWxjdWxfdHJhaXRlbWVudF86IFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJzb3VzX2NhbGN1bF90cmFpdGVtZW50XCJdXG4gICAgKGVtYmVkX3RyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc0Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03NDM7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDM2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0MzY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBjYXRlZ29yaWVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6XG4gICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudCA9XG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbilcbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2Jhc2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IChsb2NhdGlvbl8uTG9jYXRpb24ubG95ZXJfcHJpbmNpcGFsKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NDY7IHN0YXJ0X2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDY7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NDE7IHN0YXJ0X2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ0MTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvY2F0aW9uLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NDg7IHN0YXJ0X2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ0ODsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBkYXRlX2NvdXJhbnRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NDQ7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ0NDsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NDI7IHN0YXJ0X2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ0MjsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQ1OyBzdGFydF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDU7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnpvbmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgem9uZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQzOyBzdGFydF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDM7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2NhdGlvbl8uTG9jYXRpb24ubG9nZW1lbnRfZXN0X2NoYW1icmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQ5OyBzdGFydF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDk7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvY2F0aW9uLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ1Mjsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDUyOyBlbmRfY29sdW1uPTgwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50eXBlX2FpZGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgdHlwZV9haWRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NTM7IHN0YXJ0X2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ1MzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmNvbG9jYXRpb24pIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ1MDsgc3RhcnRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDUwOyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChsb2NhdGlvbl8uTG9jYXRpb24uYmFpbGxldXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyU29jaWFsIGJhaWxsZXVyXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFpbGxldXJfLkNvbnZlbnRpb25CYWlsbGV1clNvY2lhbC5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9wZXJjdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDU1OyBzdGFydF9jb2x1bW49MTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NTg7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X21ldWJsZV9kODQyXzJfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ1OTsgc3RhcnRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDU5OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKX0pKSkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGxhZm9uZF9sb3llcl9kODIzXzE2XzIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX21pbmltYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX21pbmltYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpfSkgaW5cbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjtcbiAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQwOyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ2MDsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKVxuICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAobGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV8gOlxuICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDpcbiAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUubWVuc3VhbGl0ZV9wcmluY2lwYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0OTc7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTc7IGVuZF9jb2x1bW49NzI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5Mjsgc3RhcnRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDkyOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDkzOyBzdGFydF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk2OyBzdGFydF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTY7IGVuZF9jb2x1bW49Nzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk4OyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTg7IGVuZF9jb2x1bW49ODA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5OTsgc3RhcnRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDk5OyBlbmRfY29sdW1uPTY4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwMTsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmRhdGVfZW50cmVlX2xvZ2VtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUwMjsgc3RhcnRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTAyOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5jb3Byb3ByaWV0ZSkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTAzOyBzdGFydF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MDM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5zaXR1YXRpb25fcjgyMl8xMV8xM18xNylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDQ7IHN0YXJ0X2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwNDsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi56b25lX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHpvbmVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5NDsgc3RhcnRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDk0OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfcHJldF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LnR5cGVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDU7IHN0YXJ0X2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwNTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5hbmNpZW5uZXRlX2xvZ2VtZW50X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuYW5jaWVubmV0ZV9sb2dlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDY7IHN0YXJ0X2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwNjsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5NTsgc3RhcnRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDk1OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKX0pKSkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOlxuICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfZWxpZ2libGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfZWxpZ2libGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfbWluaW1hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUubWVuc3VhbGl0ZV9taW5pbWFsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKX0pIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0OTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwNzsgZW5kX2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSlcbiAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvZ2VtZW50Rm95ZXIgbG9nZW1lbnRfZm95ZXJfXyAtPlxuICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6XG4gICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQgPVxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbilcbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9nZW1lbnRfZm95ZXJfXy5Mb2dlbWVudEZveWVyLnR5cGVfdXNlcikgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDc4OyBzdGFydF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDc4OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY29udmVudGlvbm5lbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2VtZW50X2ZveWVyX18uTG9nZW1lbnRGb3llci5kYXRlX2NvbnZlbnRpb25uZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDc5OyBzdGFydF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0Nzk7IGVuZF9jb2x1bW49NzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NzI7IHN0YXJ0X2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ3MjsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDczOyBzdGFydF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NzM7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NzY7IHN0YXJ0X2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ3NjsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHpvbmVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3NDsgc3RhcnRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDc0OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBkYXRlX2NvdXJhbnRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NzU7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ3NTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnJlZGV2YW5jZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9nZW1lbnRfZm95ZXJfXy5Mb2dlbWVudEZveWVyLnJlZGV2YW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Nzc7IHN0YXJ0X2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ3NzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpfSkpKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKX0pIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIjtcbiAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIpXG4gICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3MTsgc3RhcnRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0ODA7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkgdGhlbiByZXN1bHRfIGVsc2UgKHJhaXNlIEVtcHR5RXJyb3IpKSkpKSkpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKHtUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzQzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc0MzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT03NDY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NzQ2OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDI2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQyNjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKHNvdXNfY2FsY3VsX3RyYWl0ZW1lbnRfLlRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKVxuICAgICAgICAgICAgICAgICAgIHBhcmFtXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT03NDY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NzQ2OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc0Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03NDY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc0NTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03NDU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDI0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0MjQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBzb3VzX2NhbGN1bF90cmFpdGVtZW50Xy5UcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzQ1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTc0NTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlID0gYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV99XG5cbmxldCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbjogRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4udCkgOiBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnQudCA9XG4gIGxldCBpbmZvcm1hdGlvbnNfOiBJbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50LnQgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uaW5mb3JtYXRpb25zX2luIGluXG4gIGxldCBkYXRlX2VtbWVuYWdlbWVudF86IGRhdGUgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGF0ZV9lbW1lbmFnZW1lbnRfaW4gaW5cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfOiBtb25leSA9IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfaW4gaW5cbiAgbGV0IGRlbGFpX2FwcmVzX2VtbWVuYWdlbWVudF9sODIzXzhfMl86IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgXCJkw6lsYWlfYXByw6hzX2VtbcOpbmFnZW1lbnRfbDgyM184XzJcIl0gKGVtYmVkX2R1cmF0aW9uKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDU3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ1NzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIwODM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjA4MzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0yMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNikgKDApKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU3OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fcmFuZ19lbmZhbnRfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcImNvbmRpdGlvbl9yYW5nX2VuZmFudFwiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDU0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ1NDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ1NDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwNjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwNjU7IGVuZF9jb2x1bW49Nzc7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0yMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5mb3JtYXRpb25zXy5JbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50Lm5vbWJyZV9lbmZhbnRzX2FfbmFpdHJlX2FwcmVzX3Ryb2lzaWVtZV9tb2lzX2dyb3NzZXNzZSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTQ7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NTQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU0OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgIFwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ3MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NzE7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ3MTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ3MTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICBcImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgXCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl1cbiAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKVxuICAgICh7QmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlX30pKSkgaW5cbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy5tb250YW50IGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2FwbC5tw6luYWdlXCJdXG4gICAgICAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ2Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Njc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ2NzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbWVuYWdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Njc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDY3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9kZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9hcGwuZGVtYW5kZXVyXCJdXG4gICAgICAoZW1iZWRfZGVtYW5kZXVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ2ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Njg7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ2ODsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Njg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDY4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hcGwuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDY5OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Njk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Njk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV86IHVuaXQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hcGwuY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpIChyYWlzZSBFbXB0eUVycm9yKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfOiB1bml0IC0+IGJvb2wgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYXBsLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXCJdIChlbWJlZF9ib29sKSAocmFpc2VcbiAgICAgIEVtcHR5RXJyb3IpKSBpblxuICBsZXQgcmVzdWx0XzogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9hcGxcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfYXBsXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAoe0VsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luID1cbiAgICAgICAgZWxpZ2liaWxpdGVfYXBsX2RvdF9tZW5hZ2VfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYXBsX2RvdF9kZW1hbmRldXJfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FwbF9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VffSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmVsaWdpYmlsaXRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogXG4gICAgZGVjaW1hbCBhcnJheSA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fMl9yODIzXzRfOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb25kaXRpb25fMl9yODIzXzQgaW5cbiAgbGV0IGNvbmRpdGlvbl9wZXJpb2RlX2RlbWVuYWdlbWVudF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9ww6lyaW9kZV9kw6ltw6luYWdlbWVudFwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ1NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDY5OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDc5OyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMjBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAoaW5mb3JtYXRpb25zXy5JbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50LmRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5Nb2luc0RlVHJvaXNFbmZhbnRzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5QbHVzRGVUcm9pc0VuZmFudHMgZGF0ZV9uYWlzc2FuY2Vfb3VfZ3Jvc3Nlc3NlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBkYXRlX25haXNzYW5jZV9vdV9ncm9zc2Vzc2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS5EYXRlRGVOYWlzc2FuY2UgZGF0ZV9uYWlzc2FuY2VfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpcnN0RGF5T2ZNb250aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXIgZGF0ZV9uYWlzc2FuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMikgKDApICgwKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDApICgwKSAoLTEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UuQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLkFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2Q4MjNfMjJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCJwbGFmb25kX2Q4MjNfMjJcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDU4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ1ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjA2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMDY7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJSSA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNFwiKSlcbiAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGVyc29ubmVfYV9jaGFyZ2VfOiBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yXCIpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ1ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTg7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2xvZ2VtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2xvZ2VtZW50XCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU2OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDU2OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjY7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMy04XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmQgZWxpZ2liaWxpdGVfYXBsX2RvdF9lbGlnaWJpbGl0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9yYW5nX2VuZmFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9wZXJpb2RlX2RlbWVuYWdlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2R1cl9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2VtbWVuYWdlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGFpX2FwcmVzX2VtbWVuYWdlbWVudF9sODIzXzhfMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTY7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU2OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ByaW1lX2RlbWVuYWdlbWVudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcIm1vbnRhbnRfcHJpbWVfZMOpbcOpbmFnZW1lbnRcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NjQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjEwOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMTA5OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIGRlcGVuc2VzX2p1c3RpZmllZXNfcmVlbGxlbWVudF9lbmdhZ2Vlc19cbiAgICAgICAgICAgICAgICAgcGxhZm9uZF9kODIzXzIyXykgdGhlblxuICAgICAgICAgICAgICBkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfIGVsc2UgcGxhZm9uZF9kODIzXzIyXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDY0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQ2NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7RWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50Lm1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50ID1cbiAgICAgbW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnRffVxuXG5sZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW46IEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQpIDogRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQgPVxuICBsZXQgbWVuYWdlXzogTWVuYWdlLnQgPSBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ubWVuYWdlX2luIGluXG4gIGxldCBkZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfMV86IFByZXQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV8xXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogUHJldC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAyMTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAyNDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODMyLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uUHJldC50aXR1bGFpcmVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5EZW1hbmRldXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwYXJhbV8uUHJldC50eXBlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHBhcmFtXy5QcmV0LnR5cGVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTg2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk4ODsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgzMi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwYXJhbV8uUHJldC50aXR1bGFpcmVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LkRlbWFuZGV1ciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLlByZXQudHlwZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLlByZXQudHlwZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0zNjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzY1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM2NTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfNl86IFByZXQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV82XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogUHJldC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM2NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM2Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfcHJldF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJjb25kaXRpb25fbG9nZW1lbnRfcHLDqnRcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM2NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY0OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc0MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTc1MzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuZGF0ZV9zaWduYXR1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuZGF0ZV9zaWduYXR1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5hbmNpZW5uZXRlX2xvZ2VtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLmxvZ2VtZW50X3NpdHVlX2NvbW11bmVfZGVzZXF1aWxpYnJlX2w4MzFfMikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gcHJvcHJpZXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUuYW5jaWVubmV0ZV9sb2dlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5sb2dlbWVudF9zaXR1ZV9jb21tdW5lX2Rlc2VxdWlsaWJyZV9sODMxXzIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MjE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzI2OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBwcm9wcmlldGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzE2OyBzdGFydF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzE2OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzY0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM2NDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5tw6luYWdlXCJdIChlbWJlZF9tZW5hZ2UpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mzc3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuZGVtYW5kZXVyXCJdIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3ODsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3ODsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlbWFuZGV1cl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mzc4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3ODsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc5OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc5OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mzc5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3OTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfOiBcbiAgICB1bml0IC0+IGJvb2wgPSBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmNvbmRpdGlvbl9sb2dlbWVudF9yw6lzaWRlbmNlX3ByaW5jaXBhbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAocmFpc2UgRW1wdHlFcnJvcikpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV86IHVuaXQgLT4gYm9vbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAocmFpc2UgRW1wdHlFcnJvcikpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZVwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmVcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICh7RWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tZW5hZ2VfaW4gPVxuICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9tZW5hZ2VfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGVtYW5kZXVyXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX30pKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5kYXRlX2NvdXJhbnRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmVsaWdpYmlsaXRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fMl9yODIzXzRfOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb25kaXRpb25fMl9yODIzXzQgaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9iYWlsbGV1cl86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgIFwiY29uZGl0aW9uX2xvZ2VtZW50X2JhaWxsZXVyXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzYzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM2MzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2MzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzYzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2MzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2OTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjk4OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgUjgzMi0yMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDEgOiBDb25kaXRpb25zIGQnYXNzaW1pbGF0aW9uIGRlcyBsb2dlbWVudHMtZm95ZXJzIGF1eCBsb2dlbWVudHMgw6AgdXNhZ2UgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBsb2dlbWVudF9mb3llcl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2VtZW50X2ZveWVyXy5Mb2dlbWVudEZveWVyLnJlbXBsaXRfY29uZGl0aW9uc19yODMyXzIxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA0OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIHByb3ByaWV0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfNlwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzZcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfNl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgbG9jYXRpb25fIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2dlbWVudEZveWVyLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY1MDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChsb2NhdGlvbl8uTG9jYXRpb24uYmFpbGxldXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clNvY2lhbCBjb252ZW50aW9uXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb252ZW50aW9uXy5Db252ZW50aW9uQmFpbGxldXJTb2NpYWwuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsIGNvbnZlbnRpb25fIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnZlbnRpb25fLkNvbnZlbnRpb25BTkhBLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfSUlfY2hhcF9JX3NlY18zKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjIwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyMzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV8xXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzFcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfMV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSkgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzYzOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM2Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogZGVjaW1hbCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbCkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNzI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzcyOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzgzOyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNzI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzcyOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXzogaW50ZWdlciA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCJdIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzcxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTM3MTsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM4MTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNzE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzcxOyBlbmRfY29sdW1uPTU0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqVwiXSAoZW1iZWRfYm9vbClcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzcwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTM3MDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzA7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTkxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01OTM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9sb2dlbWVudF9iYWlsbGV1cl9cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9sb2dlbWVudF9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9lbGlnaWJpbGl0ZV8pKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzcwOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM3MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zNzA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSA9IGRhdGVfY291cmFudGVfO1xuICAgICBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZWxpZ2liaWxpdGUgPSBlbGlnaWJpbGl0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlID1cbiAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX31cblxubGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgKGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW46IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBiZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XzogYm9vbCA9IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5iZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIGluXG4gIGxldCBkdXJlZV9sODQxXzFfM186IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImR1csOpZV9sODQxXzFfM1wiXSAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDA0OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE3MTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkdXJhdGlvbl9vZl9udW1iZXJzICg1KSAoMCkgKDApKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDA0OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MjA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDIwOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDIwOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDIwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMDsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmVzdGF0aW9uX2NvdXJhbnRlXzogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzLnByZXN0YXRpb25fY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9lbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25zRmFtaWxpYWxlcyAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDIxOyBlbmRfY29sdW1uPTU2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzLnLDqXNpZGVuY2VcIl0gKGVtYmVkX2NvbGxlY3Rpdml0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDI1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDI1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDI1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiXVxuICAgIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgKHtFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmVzdGF0aW9uX2NvdXJhbnRlXztcbiAgICAgICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gPVxuICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc2lkZW5jZV99KSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5kcm9pdF9vdXZlcnQgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2NvbmRpdGlvbnNfaG9yc19hZ2VfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfYWdlX2w1MTJfM18yXzogZHVyYXRpb24gPSByZXN1bHRfLkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZV9sNTEyXzNfMiBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfOiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSBpblxuICBsZXQgY29uZGl0aW9uX2FjY2Vzc2lvbl9wcm9wcmlldGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImNvbmRpdGlvbl9hY2Nlc3Npb25fcHJvcHJpw6l0w6lcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQwMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MDE7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAxOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAxOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAxOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDE7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDE7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAxOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAxOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAxOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzY5OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC50aXR1bGFpcmVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LkRlbWFuZGV1ciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzNDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM1MjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODQyLTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LkRlbWFuZGV1ciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5WZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzMwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDMzNzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuRGVtYW5kZXVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzAwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzAyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQwMTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDAxOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfbWVuYWdlXzogTWVuYWdlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5tw6luYWdlXCJdXG4gICAgICAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQyNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjc7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQyNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjc7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQyNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjc7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5kZW1hbmRldXJcIl1cbiAgICAgIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDI4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyODsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyODsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlbWFuZGV1cl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDI4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyODsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDI5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyOTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyOTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQyOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjk7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXzogXG4gICAgdW5pdCAtPiBib29sID0gZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzY4OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDc2ODsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi0xNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzY4OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDc2ODsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi0xNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIGxvZ2VtZW50X2ZveWVyXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIuY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV86IHVuaXQgLT4gYm9vbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDc2OTsgc3RhcnRfY29sdW1uPTk7IGVuZF9saW5lPTQ3Njk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItMTRcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc2OTsgc3RhcnRfY29sdW1uPTk7IGVuZF9saW5lPTQ3Njk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgKG1hdGNoICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIGxvZ2VtZW50X2ZveWVyXyAtPlxuICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIuY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSSlcbiAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmVcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZVwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X21lbmFnZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kZW1hbmRldXJfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VffSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmRhdGVfY291cmFudGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2VsaWdpYmlsaXRlXzogYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZWxpZ2liaWxpdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IFxuICAgIGRlY2ltYWwgYXJyYXkgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl8yX3I4MjNfNF86IFBlcnNvbm5lQUNoYXJnZS50IC0+IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvbmRpdGlvbl8yX3I4MjNfNCBpblxuICBsZXQgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IGRlY2ltYWwgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICBcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQxNDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MTQ7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQzMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MzM7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQxNDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MTQ7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCJdIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDEzOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQxMzsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQzMTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MTM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDEzOyBlbmRfY29sdW1uPTU0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfZGlzcG9zaXRpb25zX2NvbW11bmVzXzogVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICBcIsOpbGlnaWJpbGl0w6lfZGlzcG9zaXRpb25zX2NvbW11bmVzXCJdXG4gICAgKGVtYmVkX3R5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQxMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00MTE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODQwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg0MDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fb3IgKG9fbm90IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2VsaWdpYmlsaXRlXylcbiAgICAgICAgICAgICAgICAgKG9fbm90IGNvbmRpdGlvbl9hY2Nlc3Npb25fcHJvcHJpZXRlXykpIHRoZW5cbiAgICAgICAgICAgICAgKFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSAoKSkgZWxzZVxuICAgICAgICAgICAgICAoVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgKCkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDExOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9mYW1pbGlhbGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnRfZmFtaWxpYWxlXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQwMzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwMzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwMzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMDY7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5lbmZhbnRfYV9uYWl0cmVfYXByZXNfcXVhdHJpZW1lX21vaXNfZ3Jvc3Nlc3NlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAzOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAzOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05OTA7IGVuZF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfYV9jaGFyZ2VfOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgcGFyZW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuYXNjZW5kYW50X2Rlc2NlbmRhbnRfY29sbGF0ZXJhbF9kZXV4aWVtZV90cm9pc2llbWVfZGVncmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmluY2FwYWNpdGVfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTYzOyBlbmRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfYV9jaGFyZ2VfOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl8yX3I4MjNfNF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29ubmVfYV9jaGFyZ2VfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkyMjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk0NzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfYV9jaGFyZ2VfOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvaXRfb3V2ZXJ0XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuaWRlbnRpZmlhbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmlkZW50aWZpYW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2Uub2JsaWdhdGlvbl9zY29sYWlyZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZGF0ZV9kZV9uYWlzc2FuY2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucHJpc2VfZW5fY2hhcmdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuUGFzRGVHYXJkZUFsdGVybmVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaXNlRW5DaGFyZ2VFbmZhbnQuRWZmZWN0aXZlRXRQZXJtYW5lbnRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlRW5mYW50LkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KX0pKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIGRhdGVfbWFyaWFnZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXIgZGF0ZV9tYXJpYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJlZV9sODQxXzFfM18pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg5MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05MTE7IGVuZF9jb2x1bW49ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfYV9jaGFyZ2VfOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2Ryb2l0X291dmVydF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe0VuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5pZGVudGlmaWFudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmlkZW50aWZpYW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5vYmxpZ2F0aW9uX3Njb2xhaXJlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5yZW11bmVyYXRpb25fbWVuc3VlbGxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5kYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5QYXNEZUdhcmRlQWx0ZXJuZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlRW5mYW50LkVmZmVjdGl2ZUV0UGVybWFuZW50ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlRW5mYW50LkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KX0pKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGJvb2wpIChwcmVzdGF0aW9uXzogUHJlc3RhdGlvblJlY3VlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9fb3IgYWNjX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcHJlc3RhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25zRmFtaWxpYWxlcyAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBwcmVzdGF0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmVzdGF0aW9uUmVjdWUuQ29tcGxlbWVudEZhbWlsaWFsICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHByZXN0YXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHByZXN0YXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wcmVzdGF0aW9uc19yZWN1ZXMpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDAzOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MDM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9sODQxXzJfOiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2w4NDFfMlwiXVxuICAgIChlbWJlZF90eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDEyOyBlbmRfY29sdW1uPTE2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMjsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxMjsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMjsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDEyOyBlbmRfY29sdW1uPTE2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEyNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTI0OyBlbmRfY29sdW1uPTczO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZW1hbmRldXJfLkRlbWFuZGV1ci5wZXJzb25uZV9oZWJlcmdlZV9jZW50cmVfc29pbl9sX0wxNjJfMjJfM19zZWN1cml0ZV9zb2NpYWxlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTI7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxMjsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExMzc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE0MDsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgKCkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDMzOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgIChvX2VxIGVsaWdpYmlsaXRlX2Rpc3Bvc2l0aW9uc19jb21tdW5lc19cbiAgICAgICAgICAgICAgICAgICAgKFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSAoKSkpXG4gICAgICAgICAgICAgICAgIGJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfKSB0aGVuXG4gICAgICAgICAgICAgIChUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgKCkpIGVsc2VcbiAgICAgICAgICAgICAgKCBpZiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZhbWlsaWFsZV8gdGhlblxuICAgICAgICAgICAgICAgICAoVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVxuICAgICAgICAgICAgICAgICAgICAoKSkgZWxzZVxuICAgICAgICAgICAgICAgICAoVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcbiAgICAgICAgICAgICAgICAgICAgKCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDEyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQxMjsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0VsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LmVsaWdpYmlsaXRlID0gZWxpZ2liaWxpdGVfbDg0MV8yXztcbiAgICAgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlID1cbiAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfO1xuICAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlID1cbiAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX31cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbjogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudCA9XG4gIGxldCBtb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ubW9kZV9vY2N1cGF0aW9uX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi56b25lX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IHR5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnR5cGVfYWlkZV9pbiBpblxuICBsZXQgY2F0ZWdvcmllX2NhbGN1bF9hcGxfOiBDYXRlZ29yaWVDYWxjdWxBUEwudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImNhdMOpZ29yaWVfY2FsY3VsX2FwbFwiXVxuICAgIChlbWJlZF9jYXRlZ29yaWVfY2FsY3VsX2FfcF9sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTg1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk4NTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM5NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMzk1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggbW9kZV9vY2N1cGF0aW9uX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgbG9jYXRpb25fIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiBsb2NhdGlvbl8pXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBsb2dlbWVudGZveWVyXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuTG9nZW1lbnRGb3llciBsb2dlbWVudGZveWVyXylcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGFpcmVfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgcHJvcHJpZXRhaXJlXylcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uIGxvY2F0aW9uXylcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlIHByb3ByaWV0YWlyZV8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05ODU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTg1OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwicmVzc291cmNlc19tw6luYWdlX2F2ZWNfYXJyb25kaVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk3ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05Nzg7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4MTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgxMTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMVwiKSkgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICBcIjQ5XCIpKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTc4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk3ODsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk4Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05ODY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04ODsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLk1hcmllcyBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTg2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk4NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzb3VzX2NhbGN1bF90cmFpdGVtZW50XzogVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJzb3VzX2NhbGN1bF90cmFpdGVtZW50XCJdXG4gICAgKGVtYmVkX3RyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk4ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05ODg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MjA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTUyMDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudFxuICAgICAgICAgICAgICAgICAgID1cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxveWVyX3ByaW5jaXBhbCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTMwOyBzdGFydF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTMwOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MjU7IHN0YXJ0X2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUyNTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhdGlvbl8uTG9jYXRpb24uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUzMjsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTMyOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgZGF0ZV9jb3VyYW50ZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI4OyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1Mjg7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MjY7IHN0YXJ0X2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUyNjsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mjk7IHN0YXJ0X2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUyOTsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi56b25lX2luID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB6b25lXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mjc7IHN0YXJ0X2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUyNzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxvZ2VtZW50X2VzdF9jaGFtYnJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUzMzsgc3RhcnRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTMzOyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvY2F0aW9uLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUzNjsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTM2OyBlbmRfY29sdW1uPTgwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgdHlwZV9haWRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mzc7IHN0YXJ0X2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzNzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmNvbG9jYXRpb24pIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUzNDsgc3RhcnRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTM0OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGxvY2F0aW9uXy5Mb2NhdGlvbi5iYWlsbGV1cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJTb2NpYWwgYmFpbGxldXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYWlsbGV1cl8uQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX3BlcmN1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyUHJpdmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mzk7IHN0YXJ0X2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU0MjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2NhdGlvbl8uTG9jYXRpb24ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NDM7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU0MzsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2NhdGlvbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NDQ7IHN0YXJ0X2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU0NDsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKX0pIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI0OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU0NTsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIGxvZ2VtZW50X2ZveWVyX18gLT5cbiAgICAgICAgICAgICAgICAobGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID1cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcilcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbilcbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4udHlwZV9sb2dlbWVudF9mb3llcl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIudHlwZV91c2VyKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTc7IHN0YXJ0X2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1OTc7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5ODsgc3RhcnRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk4OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIucmVkZXZhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5NDsgc3RhcnRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk0OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODk7IHN0YXJ0X2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4OTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTA7IHN0YXJ0X2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5MDsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTkzOyBzdGFydF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1OTM7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnpvbmVfaW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHpvbmVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5MTsgc3RhcnRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTkxOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5Mjsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTkyOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2VtZW50X2ZveWVyX18uTG9nZW1lbnRGb3llci5jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTY7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5NjsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmxveWVyX21pbmltYWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmxveWVyX21pbmltYWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpfSkgaW5cbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbCBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImRpcmVjdFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcilcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTg4OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5OTsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAobGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV8gOlxuICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOlxuICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbilcbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYxMDsgc3RhcnRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYxMDsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYxMTsgc3RhcnRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjExOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjE0OyBzdGFydF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MTQ7IGVuZF9jb2x1bW49Nzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi56b25lX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHpvbmVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYxMjsgc3RhcnRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjEyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBkYXRlX2NvdXJhbnRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MTM7IHN0YXJ0X2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYxMzsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLm1lbnN1YWxpdGVfcHJpbmNpcGFsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MTU7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYxNTsgZW5kX2NvbHVtbj03MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjIzOyBzdGFydF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MjM7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX3NpZ25hdHVyZV9wcmV0X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuZGF0ZV9zaWduYXR1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjE4OyBzdGFydF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MTg7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYxNzsgc3RhcnRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjE3OyBlbmRfY29sdW1uPTc5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYyMDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjIwOyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5kYXRlX2VudHJlZV9sb2dlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MjE7IHN0YXJ0X2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYyMTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNoYXJnZXNfbWVuc3VlbGxlc19wcmV0X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuY2hhcmdlc19tZW5zdWVsbGVzX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjE2OyBzdGFydF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MTY7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuY29wcm9wcmlldGUpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYyMjsgc3RhcnRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjIyOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKX0pKSkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOlxuICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKX0pIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImRpcmVjdFwiO1xuICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSlcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjA5OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MjQ7IGVuZF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkgdGhlbiByZXN1bHRfIGVsc2UgKHJhaXNlIEVtcHR5RXJyb3IpKSkpKSkpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKHtUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudFxuICAgICAgICAgICAgICAgICAgID1cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxveWVyX3ByaW5jaXBhbCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTYyOyBzdGFydF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTYyOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NTc7IHN0YXJ0X2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU1NzsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhdGlvbl8uTG9jYXRpb24uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU2NDsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTY0OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgZGF0ZV9jb3VyYW50ZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTYwOyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NjA7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NTg7IHN0YXJ0X2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU1ODsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NjE7IHN0YXJ0X2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2MTsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi56b25lX2luID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB6b25lXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NTk7IHN0YXJ0X2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU1OTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxvZ2VtZW50X2VzdF9jaGFtYnJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU2NTsgc3RhcnRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTY1OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvY2F0aW9uLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU2ODsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTY4OyBlbmRfY29sdW1uPTgwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgdHlwZV9haWRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Njk7IHN0YXJ0X2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2OTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmNvbG9jYXRpb24pIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU2Njsgc3RhcnRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTY2OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGxvY2F0aW9uXy5Mb2NhdGlvbi5iYWlsbGV1cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJTb2NpYWwgYmFpbGxldXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYWlsbGV1cl8uQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX3BlcmN1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyUHJpdmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NzE7IHN0YXJ0X2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3NDsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2NhdGlvbl8uTG9jYXRpb24ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NzU7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3NTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2NhdGlvbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NzY7IHN0YXJ0X2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3NjsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKX0pIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTU2OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3NzsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6XG4gICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luKVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjM3OyBzdGFydF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjM3OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjM4OyBzdGFydF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2Mzg7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NDE7IHN0YXJ0X2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY0MTsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgem9uZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjM5OyBzdGFydF9jb2x1bW49MjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2Mzk7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY0MDsgc3RhcnRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjQwOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUubWVuc3VhbGl0ZV9wcmluY2lwYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY0Mjsgc3RhcnRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjQyOyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5zaXR1YXRpb25fcjgyMl8xMV8xM18xNylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTA7IHN0YXJ0X2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY1MDsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NDU7IHN0YXJ0X2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY0NTsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjQ0OyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NDQ7IGVuZF9jb2x1bW49Nzk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjQ3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NDc7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmRhdGVfZW50cmVlX2xvZ2VtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY0ODsgc3RhcnRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjQ4OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NDM7IHN0YXJ0X2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY0MzsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5jb3Byb3ByaWV0ZSkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjQ5OyBzdGFydF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NDk7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpfSkpKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpfSkgaW5cbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwiZGlyZWN0XCI7XG4gICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MzY7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY1MTsgZW5kX2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpfSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05ODg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTkxOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDA4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQwODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKHNvdXNfY2FsY3VsX3RyYWl0ZW1lbnRfLlRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKVxuICAgICAgICAgICAgICAgICAgIHBhcmFtXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05OTE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTkxOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk5MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05OTE7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05OTA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTkwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDA2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0MDY7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBzb3VzX2NhbGN1bF90cmFpdGVtZW50Xy5UcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTkwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTk5MDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSA9IGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV99XG5cbmxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4udCkgOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LnQgPVxuICBsZXQgbWVuYWdlXzogTWVuYWdlLnQgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5tZW5hZ2VfaW4gaW5cbiAgbGV0IGRlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfOiBtb25leSA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4gaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnQuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDY5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjk7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDY5OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDY5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjk7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9tZW5hZ2VfOiBNZW5hZ2UudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hbGxvY2F0aW9uX2xvZ2VtZW50Lm3DqW5hZ2VcIl0gKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDYxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjE7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDYxOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2MTsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnQuZGVtYW5kZXVyXCJdIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDY1OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2NTsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDY1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjU7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9iZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hbGxvY2F0aW9uX2xvZ2VtZW50LmLDqW7DqWZpY2llX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnRcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OTsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTEwNDk7IGVuZF9jb2x1bW49NzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ5OyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9MTA0OTsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNDk7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMDQ5OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjsgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnRcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfYWxsb2NhdGlvbl9sb2dlbWVudFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCJdIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQpXG4gICAgKHtFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5tZW5hZ2VfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X21lbmFnZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9kZW1hbmRldXJfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2JlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRffSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfbDg0MV8yXzogVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LmVsaWdpYmlsaXRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQubcOpbmFnZVwiXSAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA1OTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNTk7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA1OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDU5OyBlbmRfY29sdW1uPTYwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9kZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50LmRlbWFuZGV1clwiXVxuICAgICAgKGVtYmVkX2RlbWFuZGV1cilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjM7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDYzOyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2MzsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDY3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjc7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDY3OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDY3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjc7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICBcIsOpbGlnaWJpbGl0w6lfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgIFwiw6lsaWdpYmlsaXTDqV9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50XCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiXVxuICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudClcbiAgICAoe0VsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfbWVuYWdlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RlbWFuZGV1cl87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5lbGlnaWJpbGl0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X21vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvblwiXSAoZW1iZWRfbW9kZV9vY2N1cGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3MzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDczOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzM7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3MzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQucmVzc291cmNlc19tw6luYWdlX3NhbnNfYXJyb25kaVwiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3NzsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzc7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3NzsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlXzogU2l0dWF0aW9uRmFtaWxpYWxlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50LnNpdHVhdGlvbl9mYW1pbGlhbGVcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA4MTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODE7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDgxOyBlbmRfY29sdW1uPTYwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudC5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDg4OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwODg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA4ODsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA4ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDg4OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQuem9uZVwiXVxuICAgICAgKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwOTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5MjsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDkyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTI7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQuem9uZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDkyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTI7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50LmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDk2OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5NjsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA5Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDk2OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3R5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQudHlwZV9haWRlXCJdXG4gICAgICAoZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2NTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2NTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX2w4NDFfMl9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlIF8gLT5cbiAgICAgICAgICAgICAgICAoVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpKVxuICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAoVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgKCkpXG4gICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAoVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2NTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7IFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50XCI7XG4gICAgICBcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50XCI7XG4gICAgICBcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiXSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudClcbiAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9tb2RlX29jY3VwYXRpb25fO1xuICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfO1xuICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV87XG4gICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uem9uZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3pvbmVfO1xuICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnR5cGVfYWlkZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3R5cGVfYWlkZV99KSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X21vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvblwiXVxuICAgICAgKGVtYmVkX21vZGVfb2NjdXBhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzE7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDcxOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzE7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF90eXBlX2FpZGVfOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50LnR5cGVfYWlkZVwiXVxuICAgICAgKGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjM7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjM7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgKCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjM7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiOyBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5yZXNzb3VyY2VzX23DqW5hZ2Vfc2Fuc19hcnJvbmRpXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDc1OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3NTsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA3NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDc1OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5zaXR1YXRpb25fZmFtaWxpYWxlXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDc5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzk7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDc5OyBlbmRfY29sdW1uPTY4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3OTsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4NDsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTEwODQ7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4NDsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTEwODQ7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA4NDsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTEwODQ7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50LnpvbmVcIl0gKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwOTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5MDsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDkwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTA7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQuem9uZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDkwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTA7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDk0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTQ7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDk0OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDk0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTQ7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50XCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnRcIjtcbiAgICAgIFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudClcbiAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9tb2RlX29jY3VwYXRpb25fO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udHlwZV9haWRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF90eXBlX2FpZGVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luID1cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnpvbmVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3pvbmVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IFxuICAgIG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBkZWNpbWFsIGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbCkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDU1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwNTU7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDk5OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA1NTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDU1OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqVwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNTI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTA1MjsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA1NDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fb3IgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV9cbiAgICAgICAgICAgICAgKG1hdGNoIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX2w4NDFfMl9cbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgdHJ1ZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNTI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTA1MjsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1NDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDkyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA5MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfYXBsXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV9hbF8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmIChvX25vdCBlbGlnaWJpbGl0ZV8pIHRoZW4gcGFyYW1fIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV9sODQxXzJfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAoIGlmIChvX2d0X21vbl9tb24gYWlkZV9maW5hbGVfYXBsXyBhaWRlX2ZpbmFsZV9hbF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gYWlkZV9maW5hbGVfYXBsXyBlbHNlIGFpZGVfZmluYWxlX2FsXykgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gYWlkZV9maW5hbGVfYXBsXyBlbHNlIGFpZGVfZmluYWxlX2FsXykpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTA1NDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNTQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTA1NDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcImFpZGVfZmluYWxlX2Zvcm11bGVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDUzOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDc1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIChvX25vdCBlbGlnaWJpbGl0ZV8pIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX1xuICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX2w4NDFfMl9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXylcbiAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfXG4gICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA1Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDUzOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LmVsaWdpYmlsaXRlID0gZWxpZ2liaWxpdGVfO1xuICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LmFpZGVfZmluYWxlX2Zvcm11bGUgPSBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlXztcbiAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlID1cbiAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX31cblxubGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWUgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW46IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4udCkgOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS50ID1cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXzogbW9uZXkgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiBpblxuICBsZXQgbWVuYWdlX3NhbnNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV86IE1lbmFnZS50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICBcIm3DqW5hZ2Vfc2Fuc19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZVwiXSAoZW1iZWRfbWVuYWdlKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTExODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTE4OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTUwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTA7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAge01lbmFnZS5wcmVzdGF0aW9uc19yZWN1ZXMgPSAobWVuYWdlXy5NZW5hZ2UucHJlc3RhdGlvbnNfcmVjdWVzKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5sb2dlbWVudCA9IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCk7XG4gICAgICAgICAgICAgICBNZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlID1cbiAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgIChmdW4gKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLlBhc0RlR2FyZGVBbHRlcm5lZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCk7XG4gICAgICAgICAgICAgICBNZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZSA9XG4gICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5jb25kaXRpb25fcmF0dGFjaGVfZm95ZXJfZmlzY2FsX3BhcmVudF9pZmkgPVxuICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UuY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5lbmZhbnRfYV9uYWl0cmVfYXByZXNfcXVhdHJpZW1lX21vaXNfZ3Jvc3Nlc3NlID1cbiAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmVuZmFudF9hX25haXRyZV9hcHJlc19xdWF0cmllbWVfbW9pc19ncm9zc2Vzc2UpfSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTExODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTE4OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfbWVuYWdlXzogTWVuYWdlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiY2FsY3VsZXR0ZS5tw6luYWdlXCJdXG4gICAgICAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMjk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEyOTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEyOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTI5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbWVuYWdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTI5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMjk7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiY2FsY3VsZXR0ZS5kZW1hbmRldXJcIl1cbiAgICAgIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTEzMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTMxOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTMxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMzE7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzMTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCJjYWxjdWxldHRlLmRhdGVfY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzMzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEzMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTMzOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTEzMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTMzOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bGV0dGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgICAgXCJjYWxjdWxldHRlLnJlc3NvdXJjZXNfbcOpbmFnZV9wcmlzZXNfZW5fY29tcHRlXCJdIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTM1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMzU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExMzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzNTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzNTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiY2FsY3VsZXR0ZVwiO1xuICAgICAgXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCJjYWxjdWxldHRlXCI7XG4gICAgICBcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIl0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudClcbiAgICAoe0NhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5tZW5hZ2VfaW4gPSBjYWxjdWxldHRlX2RvdF9tZW5hZ2VfO1xuICAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID0gY2FsY3VsZXR0ZV9kb3RfZGVtYW5kZXVyXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGNhbGN1bGV0dGVfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiA9XG4gICAgICAgICAgY2FsY3VsZXR0ZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV99KSkpIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuZWxpZ2liaWxpdGUgaW5cbiAgbGV0IGNhbGN1bGV0dGVfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IFxuICAgIGRlY2ltYWwgYXJyYXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9tZW5hZ2VfOiBNZW5hZ2UudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgICAgXCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuw6llLm3DqW5hZ2VcIl0gKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTM3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMzc7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExMzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzNzsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV9zYW5zX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzNzsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgICBcImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm7DqWUuZGVtYW5kZXVyXCJdIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTEzOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTM5OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTM5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMzk7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzOTsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgICBcImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm7DqWUuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNDE7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE0MTsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE0MTsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgICAgXCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuw6llLnJlc3NvdXJjZXNfbcOpbmFnZV9wcmlzZXNfZW5fY29tcHRlXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE0NDsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTExNDQ7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNDQ7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMTQ0OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE0NDsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTExNDQ7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgXCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuw6llXCI7IFwiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiXVxuICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgIFwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybsOpZVwiOyBcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIl1cbiAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50KVxuICAgICh7Q2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfbWVuYWdlXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiA9XG4gICAgICAgICAgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9kZW1hbmRldXJfO1xuICAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4gPVxuICAgICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV99KSkpIGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2VsaWdpYmlsaXRlXzogYm9vbCA9IHJlc3VsdF8uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5lbGlnaWJpbGl0ZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uZXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogXG4gICAgZGVjaW1hbCBhcnJheSA9IHJlc3VsdF8uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCLDqWxpZ2liaWxpdMOpXCJdIChlbWJlZF9ib29sKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTI1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTExMjU7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE3NjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bGV0dGVfZG90X2VsaWdpYmlsaXRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTEyNTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMTI1OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IGRlY2ltYWwgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgIFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTExOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTE5OyBlbmRfY29sdW1uPTYwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTQ4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNDg7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgY2FsY3VsZXR0ZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTExOTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCJhaWRlX2ZpbmFsZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMjY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTEyNjsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI4NDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNvbnNlaWwgZCfDiXRhdCwgNcOobWUgLSA0w6htZSBjaGFtYnJlcyByw6l1bmllcywgMjEvMDcvMjAxNywgMzk4NTYzXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgIGNhbGN1bGV0dGVfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGNhbGN1bGV0dGVfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfKVxuICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgIChvX3JlZHVjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoc3VtMV86IGRlY2ltYWwpIChzdW0yXzogZGVjaW1hbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX3JhdF9yYXQgc3VtMV8gc3VtMl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pKSkpKSkpKSkpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMjY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTEyNjsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlLmVsaWdpYmlsaXRlID0gZWxpZ2liaWxpdGVfO1xuICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS5haWRlX2ZpbmFsZSA9IGFpZGVfZmluYWxlX31cbiIsIigqKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHRoZSBDYXRhbGEgY29tcGlsZXIsIGRvIG5vdCBlZGl0ISAqKVxuXG5vcGVuIFJ1bnRpbWVfb2NhbWwuUnVudGltZVxub3BlbiBSdW50aW1lX2pzb28uUnVudGltZVxub3BlbiBKc19vZl9vY2FtbFxub3BlbiBBaWRlc19sb2dlbWVudFxuXG5bQEBAb2NhbWwud2FybmluZyBcIi00LTI2LTI3LTMyLTQxLTQyXCJdXG5cbigqIEdlbmVyYXRlZCBBUEkgKilcblxuY2xhc3MgdHlwZSB0eXBlX3ByZXQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJEMzMxXzMyXCJcbiAgICAgICAgLSBcIkQzMzFfNjNfNjRcIlxuICAgICAgICAtIFwiRDMzMV81OV84XCJcbiAgICAgICAgLSBcIkQzMzFfNzZfMVwiXG4gICAgICAgIC0gXCJBdXRyZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfcHJldF90b19qc29vIDogVHlwZVByZXQudCAtPiB0eXBlX3ByZXQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgRDMzMV8zMiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkQzMzFfMzJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBEMzMxXzYzXzY0IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRDMzMV82M182NFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEQzMzFfNTlfOCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkQzMzFfNTlfOFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEQzMzFfNzZfMSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkQzMzFfNzZfMVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEF1dHJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXV0cmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHR5cGVfcHJldF9vZl9qc29vICh0eXBlX3ByZXQgOiB0eXBlX3ByZXQgSnMudCkgOiBUeXBlUHJldC50ID1cbiAgbWF0Y2ggdHlwZV9wcmV0IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRDMzMV8zMlwiIC0+IFR5cGVQcmV0LkQzMzFfMzIgKClcbiAgfCBcIkQzMzFfNjNfNjRcIiAtPiBUeXBlUHJldC5EMzMxXzYzXzY0ICgpXG4gIHwgXCJEMzMxXzU5XzhcIiAtPiBUeXBlUHJldC5EMzMxXzU5XzggKClcbiAgfCBcIkQzMzFfNzZfMVwiIC0+IFR5cGVQcmV0LkQzMzFfNzZfMSAoKVxuICB8IFwiQXV0cmVcIiAtPiBUeXBlUHJldC5BdXRyZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZVByZXQudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdGl0dWxhaXJlX3ByZXQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJEZW1hbmRldXJcIlxuICAgICAgICAtIFwiVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvblwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHRpdHVsYWlyZV9wcmV0X3RvX2pzb28gOiBUaXR1bGFpcmVQcmV0LnQgLT4gdGl0dWxhaXJlX3ByZXQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgRGVtYW5kZXVyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRGVtYW5kZXVyXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHRpdHVsYWlyZV9wcmV0X29mX2pzb28gKHRpdHVsYWlyZV9wcmV0IDogdGl0dWxhaXJlX3ByZXQgSnMudClcbiAgOiBUaXR1bGFpcmVQcmV0LnQgPVxuICBtYXRjaCB0aXR1bGFpcmVfcHJldCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkRlbWFuZGV1clwiIC0+IFRpdHVsYWlyZVByZXQuRGVtYW5kZXVyICgpXG4gIHwgXCJWZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uXCIgLT5cbiAgICBUaXR1bGFpcmVQcmV0LlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1RpdHVsYWlyZVByZXQudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJUcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xXCJcbiAgICAgICAgLSBcIlRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzJcIlxuICAgICAgICAtIFwiUGFzRGVUcmF2YXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfdG9fanNvb1xuICA6IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUudCAtPiB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBUcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUGFzRGVUcmF2YXV4IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFzRGVUcmF2YXV4XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV9vZl9qc29vXG4gICh0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSA6IHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IEpzLnQpXG4gIDogVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS50ID1cbiAgbWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJUcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xXCIgLT5cbiAgICBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzEgKClcbiAgfCBcIlRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzJcIiAtPlxuICAgIFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMiAoKVxuICB8IFwiUGFzRGVUcmF2YXV4XCIgLT4gVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5QYXNEZVRyYXZhdXggKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1R5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50XCJcbiAgICAgICAgLSBcIlByZXZ1RGFuc0xpc3RlUjMyMV8xNVwiXG4gICAgICAgIC0gXCJBZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82M1wiXG4gICAgICAgIC0gXCJQYXNEZVRyYXZhdXhcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X3RvX2pzb29cbiAgOiBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUudCAtPiB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBQcmV2dURhbnNMaXN0ZVIzMjFfMTUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQcmV2dURhbnNMaXN0ZVIzMjFfMTVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUGFzRGVUcmF2YXV4IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFzRGVUcmF2YXV4XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X29mX2pzb29cbiAgKHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgOiB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IEpzLnQpXG4gIDogVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQgPVxuICBtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnRcIiAtPlxuICAgIFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCAoKVxuICB8IFwiUHJldnVEYW5zTGlzdGVSMzIxXzE1XCIgLT5cbiAgICBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1ICgpXG4gIHwgXCJBZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82M1wiIC0+XG4gICAgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzICgpXG4gIHwgXCJQYXNEZVRyYXZhdXhcIiAtPiBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4ICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgYW1lbGlvcmVfcGFyX29jY3VwYW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiT3VpXCJcbiAgICAgICAgLSBcIk5vblwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGFtZWxpb3JlX3Bhcl9vY2N1cGFudF90b19qc29vXG4gIDogQW1lbGlvcmVQYXJPY2N1cGFudC50IC0+IGFtZWxpb3JlX3Bhcl9vY2N1cGFudCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBPdWkgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJPdWlcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBOb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJOb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGFtZWxpb3JlX3Bhcl9vY2N1cGFudF9vZl9qc29vXG4gIChhbWVsaW9yZV9wYXJfb2NjdXBhbnQgOiBhbWVsaW9yZV9wYXJfb2NjdXBhbnQgSnMudClcbiAgOiBBbWVsaW9yZVBhck9jY3VwYW50LnQgPVxuICBtYXRjaCBhbWVsaW9yZV9wYXJfb2NjdXBhbnQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJPdWlcIiAtPiBBbWVsaW9yZVBhck9jY3VwYW50Lk91aSAoKVxuICB8IFwiTm9uXCIgLT4gQW1lbGlvcmVQYXJPY2N1cGFudC5Ob24gKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0FtZWxpb3JlUGFyT2NjdXBhbnQudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgbGltaXRlX3RyYW5jaGUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJSZXZlbnVcIlxuICAgICAgICAtIFwiSW5maW5pXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbGltaXRlX3RyYW5jaGVfdG9fanNvbyA6IExpbWl0ZVRyYW5jaGUudCAtPiBsaW1pdGVfdHJhbmNoZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBSZXZlbnUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJSZXZlbnVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcbiAgfCBJbmZpbmkgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJJbmZpbmlcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGxpbWl0ZV90cmFuY2hlX29mX2pzb28gKGxpbWl0ZV90cmFuY2hlIDogbGltaXRlX3RyYW5jaGUgSnMudClcbiAgOiBMaW1pdGVUcmFuY2hlLnQgPVxuICBtYXRjaCBsaW1pdGVfdHJhbmNoZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlJldmVudVwiIC0+XG4gIExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIChKcy5VbnNhZmUuY29lcmNlIGxpbWl0ZV90cmFuY2hlIyMucGF5bG9hZCkpXG4gIHwgXCJJbmZpbmlcIiAtPiBMaW1pdGVUcmFuY2hlLkluZmluaSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnTGltaXRlVHJhbmNoZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiUmV2ZW51XCJcbiAgICAgICAgLSBcIkluZmluaVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfdG9fanNvb1xuICA6IExpbWl0ZVRyYW5jaGVEZWNpbWFsLnQgLT4gbGltaXRlX3RyYW5jaGVfZGVjaW1hbCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBSZXZlbnUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJSZXZlbnVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuICB8IEluZmluaSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkluZmluaVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbGltaXRlX3RyYW5jaGVfZGVjaW1hbF9vZl9qc29vXG4gIChsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIDogbGltaXRlX3RyYW5jaGVfZGVjaW1hbCBKcy50KVxuICA6IExpbWl0ZVRyYW5jaGVEZWNpbWFsLnQgPVxuICBtYXRjaCBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUmV2ZW51XCIgLT5cbiAgTGltaXRlVHJhbmNoZURlY2ltYWwuUmV2ZW51IChkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIyMucGF5bG9hZCkpXG4gIHwgXCJJbmZpbmlcIiAtPiBMaW1pdGVUcmFuY2hlRGVjaW1hbC5JbmZpbmkgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0xpbWl0ZVRyYW5jaGVEZWNpbWFsLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHByZXN0YXRpb25fcmVjdWUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIlxuICAgICAgICAtIFwiQ29tcGxlbWVudEZhbWlsaWFsXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25KZXVuZUVuZmFudFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25BZHVsdGVIYW5kaWNhcGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBwcmVzdGF0aW9uX3JlY3VlX3RvX2pzb28gOiBQcmVzdGF0aW9uUmVjdWUudCAtPiBwcmVzdGF0aW9uX3JlY3VlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEFsbG9jYXRpb25zRmFtaWxpYWxlcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IENvbXBsZW1lbnRGYW1pbGlhbCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25KZXVuZUVuZmFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25KZXVuZUVuZmFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25BZHVsdGVIYW5kaWNhcGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uQWR1bHRlSGFuZGljYXBlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwcmVzdGF0aW9uX3JlY3VlX29mX2pzb28gKHByZXN0YXRpb25fcmVjdWUgOiBwcmVzdGF0aW9uX3JlY3VlIEpzLnQpXG4gIDogUHJlc3RhdGlvblJlY3VlLnQgPVxuICBtYXRjaCBwcmVzdGF0aW9uX3JlY3VlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCIgLT4gUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25zRmFtaWxpYWxlcyAoKVxuICB8IFwiQ29tcGxlbWVudEZhbWlsaWFsXCIgLT4gUHJlc3RhdGlvblJlY3VlLkNvbXBsZW1lbnRGYW1pbGlhbCAoKVxuICB8IFwiQWxsb2NhdGlvbkpldW5lRW5mYW50XCIgLT4gUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25KZXVuZUVuZmFudCAoKVxuICB8IFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiIC0+XG4gICAgUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgKClcbiAgfCBcIkFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlXCIgLT5cbiAgICBQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcGUgKClcbiAgfCBcIkFsbG9jYXRpb25BZHVsdGVIYW5kaWNhcGVcIiAtPlxuICAgIFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uQWR1bHRlSGFuZGljYXBlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQcmVzdGF0aW9uUmVjdWUudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgcGFyZW50X291X2F1dHJlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzXCJcbiAgICAgICAgLSBcIkF1dHJlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcGFyZW50X291X2F1dHJlX3RvX2pzb28gOiBQYXJlbnRPdUF1dHJlLnQgLT4gcGFyZW50X291X2F1dHJlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IERlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGFyZykpXG4gICAgZW5kXG4gIHwgQXV0cmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdXRyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcGFyZW50X291X2F1dHJlX29mX2pzb28gKHBhcmVudF9vdV9hdXRyZSA6IHBhcmVudF9vdV9hdXRyZSBKcy50KVxuICA6IFBhcmVudE91QXV0cmUudCA9XG4gIG1hdGNoIHBhcmVudF9vdV9hdXRyZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlc1wiIC0+XG4gIFBhcmVudE91QXV0cmUuRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzIChkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBwYXJlbnRfb3VfYXV0cmUjIy5wYXlsb2FkKSlcbiAgfCBcIkF1dHJlXCIgLT4gUGFyZW50T3VBdXRyZS5BdXRyZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUGFyZW50T3VBdXRyZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJQYXNEZUdhcmRlQWx0ZXJuZWVcIlxuICAgICAgICAtIFwiR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV90b19qc29vXG4gIDogU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS50IC0+IHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBQYXNEZUdhcmRlQWx0ZXJuZWUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQYXNEZUdhcmRlQWx0ZXJuZWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBHYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGFyZykpXG4gICAgZW5kXG5cbmxldCBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVfb2ZfanNvb1xuICAoc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIDogc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIEpzLnQpXG4gIDogU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS50ID1cbiAgbWF0Y2ggc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUGFzRGVHYXJkZUFsdGVybmVlXCIgLT4gU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5QYXNEZUdhcmRlQWx0ZXJuZWUgKClcbiAgfCBcIkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2VcIiAtPlxuICBTaXR1YXRpb25HYXJkZUFsdGVybmVlLkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgKGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIChKcy5VbnNhZmUuY29lcmNlIHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBwYXJlbnRlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQXNjZW5kYW50XCJcbiAgICAgICAgLSBcIkRlc2NlbmRhbnRcIlxuICAgICAgICAtIFwiQ29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBwYXJlbnRlX3RvX2pzb28gOiBQYXJlbnRlLnQgLT4gcGFyZW50ZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBBc2NlbmRhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBc2NlbmRhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBEZXNjZW5kYW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRGVzY2VuZGFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IENvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHBhcmVudGVfb2ZfanNvbyAocGFyZW50ZSA6IHBhcmVudGUgSnMudCkgOiBQYXJlbnRlLnQgPVxuICBtYXRjaCBwYXJlbnRlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQXNjZW5kYW50XCIgLT4gUGFyZW50ZS5Bc2NlbmRhbnQgKClcbiAgfCBcIkRlc2NlbmRhbnRcIiAtPiBQYXJlbnRlLkRlc2NlbmRhbnQgKClcbiAgfCBcIkNvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlXCIgLT5cbiAgICBQYXJlbnRlLkNvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQYXJlbnRlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRGF0ZURlTmFpc3NhbmNlXCJcbiAgICAgICAgLSBcIkF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2VcIlxuICAgICAgICAtIFwiQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlX3RvX2pzb29cbiAgOiBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS50IC0+IGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IERhdGVEZU5haXNzYW5jZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkRhdGVEZU5haXNzYW5jZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGRhdGVfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IEF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2VcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlX29mX2pzb29cbiAgKGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlXG4gICAgOiBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSBKcy50KVxuICA6IERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLnQgPVxuICBtYXRjaCBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkRhdGVEZU5haXNzYW5jZVwiIC0+XG4gIERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLkRhdGVEZU5haXNzYW5jZSAoZGF0ZV9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlIyMucGF5bG9hZCkpXG4gIHwgXCJBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlXCIgLT5cbiAgICBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS5BdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlICgpXG4gIHwgXCJBcHJlc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlXCIgLT5cbiAgICBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS5BcHJlc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSB6b25lX2RfaGFiaXRhdGlvbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlpvbmUxXCJcbiAgICAgICAgLSBcIlpvbmUyXCJcbiAgICAgICAgLSBcIlpvbmUzXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyA6IFpvbmVESGFiaXRhdGlvbi50IC0+IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFpvbmUxIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiWm9uZTFcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBab25lMiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlpvbmUyXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgWm9uZTMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJab25lM1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvbyAoem9uZV9kX2hhYml0YXRpb24gOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50KVxuICA6IFpvbmVESGFiaXRhdGlvbi50ID1cbiAgbWF0Y2ggem9uZV9kX2hhYml0YXRpb24jIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJab25lMVwiIC0+IFpvbmVESGFiaXRhdGlvbi5ab25lMSAoKVxuICB8IFwiWm9uZTJcIiAtPiBab25lREhhYml0YXRpb24uWm9uZTIgKClcbiAgfCBcIlpvbmUzXCIgLT4gWm9uZURIYWJpdGF0aW9uLlpvbmUzICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdab25lREhhYml0YXRpb24udCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk91aUF2ZWNMb3llck91Q2hhcmdlc1wiXG4gICAgICAgIC0gXCJOb25cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsX3RvX2pzb29cbiAgOiBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLnQgLT4gcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBPdWlBdmVjTG95ZXJPdUNoYXJnZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJPdWlBdmVjTG95ZXJPdUNoYXJnZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcbiAgfCBOb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJOb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfb2ZfanNvb1xuICAocGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbFxuICAgIDogcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbCBKcy50KVxuICA6IFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwudCA9XG4gIG1hdGNoIHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWwjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJPdWlBdmVjTG95ZXJPdUNoYXJnZXNcIiAtPlxuICBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLk91aUF2ZWNMb3llck91Q2hhcmdlcyAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsIyMucGF5bG9hZCkpXG4gIHwgXCJOb25cIiAtPiBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLk5vbiAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSB2ZXJzZW1lbnRfYSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkJhaWxsZXVyXCJcbiAgICAgICAgLSBcIkJlbmVmaWNpYWlyZVwiXG4gICAgICAgIC0gXCJFdGFibGlzc2VtZW50SGFiaWxpdGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB2ZXJzZW1lbnRfYV90b19qc29vIDogVmVyc2VtZW50QS50IC0+IHZlcnNlbWVudF9hIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEJhaWxsZXVyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQmFpbGxldXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBCZW5lZmljaWFpcmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJCZW5lZmljaWFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBFdGFibGlzc2VtZW50SGFiaWxpdGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJFdGFibGlzc2VtZW50SGFiaWxpdGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHZlcnNlbWVudF9hX29mX2pzb28gKHZlcnNlbWVudF9hIDogdmVyc2VtZW50X2EgSnMudCkgOiBWZXJzZW1lbnRBLnQgPVxuICBtYXRjaCB2ZXJzZW1lbnRfYSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkJhaWxsZXVyXCIgLT4gVmVyc2VtZW50QS5CYWlsbGV1ciAoKVxuICB8IFwiQmVuZWZpY2lhaXJlXCIgLT4gVmVyc2VtZW50QS5CZW5lZmljaWFpcmUgKClcbiAgfCBcIkV0YWJsaXNzZW1lbnRIYWJpbGl0ZVwiIC0+IFZlcnNlbWVudEEuRXRhYmxpc3NlbWVudEhhYmlsaXRlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdWZXJzZW1lbnRBLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIGRlcGVuc2VfbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJUb3RhbEFubnVlbEVjaGVhbmNlc1wiXG4gICAgICAgIC0gXCJNZW5zdWFsaXRlXCJcbiAgICAgICAgLSBcIkxveWVyXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgZGVwZW5zZV9sb2dlbWVudF90b19qc29vIDogRGVwZW5zZUxvZ2VtZW50LnQgLT4gZGVwZW5zZV9sb2dlbWVudCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBUb3RhbEFubnVlbEVjaGVhbmNlcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlRvdGFsQW5udWVsRWNoZWFuY2VzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGFyZykpXG4gICAgZW5kXG4gIHwgTWVuc3VhbGl0ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1lbnN1YWxpdGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcbiAgfCBMb3llciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxveWVyXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGFyZykpXG4gICAgZW5kXG5cbmxldCBkZXBlbnNlX2xvZ2VtZW50X29mX2pzb28gKGRlcGVuc2VfbG9nZW1lbnQgOiBkZXBlbnNlX2xvZ2VtZW50IEpzLnQpXG4gIDogRGVwZW5zZUxvZ2VtZW50LnQgPVxuICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiVG90YWxBbm51ZWxFY2hlYW5jZXNcIiAtPlxuICBEZXBlbnNlTG9nZW1lbnQuVG90YWxBbm51ZWxFY2hlYW5jZXMgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgZGVwZW5zZV9sb2dlbWVudCMjLnBheWxvYWQpKVxuICB8IFwiTWVuc3VhbGl0ZVwiIC0+XG4gIERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIChKcy5VbnNhZmUuY29lcmNlIGRlcGVuc2VfbG9nZW1lbnQjIy5wYXlsb2FkKSlcbiAgfCBcIkxveWVyXCIgLT5cbiAgRGVwZW5zZUxvZ2VtZW50LkxveWVyIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIChKcy5VbnNhZmUuY29lcmNlIGRlcGVuc2VfbG9nZW1lbnQjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0RlcGVuc2VMb2dlbWVudC50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBtb2RlX29jY3VwYXRpb25faW1wYXllID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiSW1wYXllTG95ZXJcIlxuICAgICAgICAtIFwiSW1wYXllUHJldFwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfdG9fanNvb1xuICA6IE1vZGVPY2N1cGF0aW9uSW1wYXllLnQgLT4gbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBJbXBheWVMb3llciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkltcGF5ZUxveWVyXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgSW1wYXllUHJldCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkltcGF5ZVByZXRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfb2ZfanNvb1xuICAobW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSA6IG1vZGVfb2NjdXBhdGlvbl9pbXBheWUgSnMudClcbiAgOiBNb2RlT2NjdXBhdGlvbkltcGF5ZS50ID1cbiAgbWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkltcGF5ZUxveWVyXCIgLT4gTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgKClcbiAgfCBcIkltcGF5ZVByZXRcIiAtPiBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0ICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdNb2RlT2NjdXBhdGlvbkltcGF5ZS50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSB0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJQYXNFbGlnaWJsZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF90b19qc29vXG4gIDogVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgLT4gdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFBhc0VsaWdpYmxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFzRWxpZ2libGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X29mX2pzb29cbiAgKHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudFxuICAgIDogdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IEpzLnQpXG4gIDogVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgPVxuICBtYXRjaCB0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJQYXNFbGlnaWJsZVwiIC0+IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSAoKVxuICB8IFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCIgLT5cbiAgICBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCIgLT5cbiAgICBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50XCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vXG4gIDogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50IC0+IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICh0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IDogdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50KVxuICA6IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9XG4gIG1hdGNoIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50XCIgLT5cbiAgICBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgKClcbiAgfCBcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiIC0+XG4gICAgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgKClcbiAgfCBcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIiAtPlxuICAgIFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBzaXR1YXRpb25fZmFtaWxpYWxlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQ2VsaWJhdGFpcmVcIlxuICAgICAgICAtIFwiTWFyaWVzXCJcbiAgICAgICAgLSBcIlBhY3Nlc1wiXG4gICAgICAgIC0gXCJDb25jdWJpbnNcIlxuICAgICAgICAtIFwiQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXRcIlxuICAgICAgICAtIFwiQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV90b19qc29vXG4gIDogU2l0dWF0aW9uRmFtaWxpYWxlLnQgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBDZWxpYmF0YWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNlbGliYXRhaXJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTWFyaWVzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWFyaWVzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoZGF0ZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgUGFjc2VzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFjc2VzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQ29uY3ViaW5zIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ29uY3ViaW5zXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDZWxpYmF0YWlyZVNlcGFyZURlRmFpdFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IENvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9vZl9qc29vXG4gIChzaXR1YXRpb25fZmFtaWxpYWxlIDogc2l0dWF0aW9uX2ZhbWlsaWFsZSBKcy50KSA6IFNpdHVhdGlvbkZhbWlsaWFsZS50ID1cbiAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkNlbGliYXRhaXJlXCIgLT4gU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlICgpXG4gIHwgXCJNYXJpZXNcIiAtPlxuICBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIChkYXRlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2Ugc2l0dWF0aW9uX2ZhbWlsaWFsZSMjLnBheWxvYWQpKVxuICB8IFwiUGFjc2VzXCIgLT4gU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyAoKVxuICB8IFwiQ29uY3ViaW5zXCIgLT4gU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyAoKVxuICB8IFwiQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXRcIiAtPlxuICAgIFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCAoKVxuICB8IFwiQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0XCIgLT5cbiAgICBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0ICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdTaXR1YXRpb25GYW1pbGlhbGUudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgcHJpc2VfZW5fY2hhcmdlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCJcbiAgICAgICAgLSBcIlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIlxuICAgICAgICAtIFwiUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0aW9uc1BhcnRhZ2VlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcHJpc2VfZW5fY2hhcmdlX3RvX2pzb28gOiBQcmlzZUVuQ2hhcmdlLnQgLT4gcHJpc2VfZW5fY2hhcmdlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0aW9uc1BhcnRhZ2VlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0aW9uc1BhcnRhZ2VlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyAocHJpc2VfZW5fY2hhcmdlIDogcHJpc2VfZW5fY2hhcmdlIEpzLnQpXG4gIDogUHJpc2VFbkNoYXJnZS50ID1cbiAgbWF0Y2ggcHJpc2VfZW5fY2hhcmdlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCIgLT4gUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgKClcbiAgfCBcIlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSAoKVxuICB8IFwiUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0aW9uc1BhcnRhZ2VlXCIgLT5cbiAgICBQcmlzZUVuQ2hhcmdlLlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUHJpc2VFbkNoYXJnZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSB0eXBlX2xvZ2VtZW50X2ZveWVyID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiTG9nZW1lbnRQZXJzb25uZXNBZ2Vlc091SGFuZGljYXBlZXNcIlxuICAgICAgICAtIFwiUmVzaWRlbmNlU29jaWFsZVwiXG4gICAgICAgIC0gXCJGb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NVwiXG4gICAgICAgIC0gXCJBdXRyZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfbG9nZW1lbnRfZm95ZXJfdG9fanNvb1xuICA6IFR5cGVMb2dlbWVudEZveWVyLnQgLT4gdHlwZV9sb2dlbWVudF9mb3llciBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBMb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUmVzaWRlbmNlU29jaWFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlJlc2lkZW5jZVNvY2lhbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBGb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXV0cmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdXRyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV9sb2dlbWVudF9mb3llcl9vZl9qc29vXG4gICh0eXBlX2xvZ2VtZW50X2ZveWVyIDogdHlwZV9sb2dlbWVudF9mb3llciBKcy50KSA6IFR5cGVMb2dlbWVudEZveWVyLnQgPVxuICBtYXRjaCB0eXBlX2xvZ2VtZW50X2ZveWVyIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiTG9nZW1lbnRQZXJzb25uZXNBZ2Vlc091SGFuZGljYXBlZXNcIiAtPlxuICAgIFR5cGVMb2dlbWVudEZveWVyLkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzICgpXG4gIHwgXCJSZXNpZGVuY2VTb2NpYWxlXCIgLT4gVHlwZUxvZ2VtZW50Rm95ZXIuUmVzaWRlbmNlU29jaWFsZSAoKVxuICB8IFwiRm95ZXJKZXVuZXNUcnZhaWxsZXVyc091TWlncmFudHNDb252ZW50aW9ubmVMMzUzXzJBdmFudDE5OTVcIiAtPlxuICAgIFR5cGVMb2dlbWVudEZveWVyLkZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1ICgpXG4gIHwgXCJBdXRyZVwiIC0+IFR5cGVMb2dlbWVudEZveWVyLkF1dHJlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlTG9nZW1lbnRGb3llci50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTXCJcbiAgICAgICAgLSBcIkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWVcIlxuICAgICAgICAtIFwiUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTZcIlxuICAgICAgICAtIFwiQXV0cmVzUGVyc29ubmVzXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfdG9fanNvb1xuICA6IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50IC0+IGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTZcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBdXRyZXNQZXJzb25uZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdXRyZXNQZXJzb25uZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgKGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gICAgOiBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50KVxuICA6IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID1cbiAgbWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIjIy5raW5kXG4gICAgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTXCIgLT5cbiAgICBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgKClcbiAgfCBcIkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWVcIiAtPlxuICAgIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlICgpXG4gIHwgXCJQZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNlwiIC0+XG4gICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2ICgpXG4gIHwgXCJBdXRyZXNQZXJzb25uZXNcIiAtPlxuICAgIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXMgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlBlcnNvbm5lU2V1bGVcIlxuICAgICAgICAtIFwiQ291cGxlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvb1xuICA6IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50IC0+IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFBlcnNvbm5lU2V1bGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQZXJzb25uZVNldWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQ291cGxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ291cGxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gIChzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCA6IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQpXG4gIDogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPVxuICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlBlcnNvbm5lU2V1bGVcIiAtPiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSAoKVxuICB8IFwiQ291cGxlXCIgLT4gU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGNvbGxlY3Rpdml0ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkd1YWRlbG91cGVcIlxuICAgICAgICAtIFwiR3V5YW5lXCJcbiAgICAgICAgLSBcIk1hcnRpbmlxdWVcIlxuICAgICAgICAtIFwiTGFSZXVuaW9uXCJcbiAgICAgICAgLSBcIlNhaW50QmFydGhlbGVteVwiXG4gICAgICAgIC0gXCJTYWludE1hcnRpblwiXG4gICAgICAgIC0gXCJNZXRyb3BvbGVcIlxuICAgICAgICAtIFwiU2FpbnRQaWVycmVFdE1pcXVlbG9uXCJcbiAgICAgICAgLSBcIk1heW90dGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBjb2xsZWN0aXZpdGVfdG9fanNvbyA6IENvbGxlY3Rpdml0ZS50IC0+IGNvbGxlY3Rpdml0ZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBHdWFkZWxvdXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR3VhZGVsb3VwZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEd1eWFuZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkd1eWFuZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE1hcnRpbmlxdWUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNYXJ0aW5pcXVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTGFSZXVuaW9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTGFSZXVuaW9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2FpbnRCYXJ0aGVsZW15IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiU2FpbnRCYXJ0aGVsZW15XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2FpbnRNYXJ0aW4gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTYWludE1hcnRpblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE1ldHJvcG9sZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1ldHJvcG9sZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE1heW90dGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNYXlvdHRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBjb2xsZWN0aXZpdGVfb2ZfanNvbyAoY29sbGVjdGl2aXRlIDogY29sbGVjdGl2aXRlIEpzLnQpXG4gIDogQ29sbGVjdGl2aXRlLnQgPVxuICBtYXRjaCBjb2xsZWN0aXZpdGUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJHdWFkZWxvdXBlXCIgLT4gQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKClcbiAgfCBcIkd1eWFuZVwiIC0+IENvbGxlY3Rpdml0ZS5HdXlhbmUgKClcbiAgfCBcIk1hcnRpbmlxdWVcIiAtPiBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKVxuICB8IFwiTGFSZXVuaW9uXCIgLT4gQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKVxuICB8IFwiU2FpbnRCYXJ0aGVsZW15XCIgLT4gQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSAoKVxuICB8IFwiU2FpbnRNYXJ0aW5cIiAtPiBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gKClcbiAgfCBcIk1ldHJvcG9sZVwiIC0+IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKClcbiAgfCBcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiIC0+IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gKClcbiAgfCBcIk1heW90dGVcIiAtPiBDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnQ29sbGVjdGl2aXRlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHByaXNlX2VuX2NoYXJnZV9lbmZhbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zXCJcbiAgICAgICAgLSBcIkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZVwiXG4gICAgICAgIC0gXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIlxuICAgICAgICAtIFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGVcIlxuICAgICAgICAtIFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eFwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHByaXNlX2VuX2NoYXJnZV9lbmZhbnRfdG9fanNvb1xuICA6IFByaXNlRW5DaGFyZ2VFbmZhbnQudCAtPiBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50X29mX2pzb29cbiAgKHByaXNlX2VuX2NoYXJnZV9lbmZhbnQgOiBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50IEpzLnQpXG4gIDogUHJpc2VFbkNoYXJnZUVuZmFudC50ID1cbiAgbWF0Y2ggcHJpc2VfZW5fY2hhcmdlX2VuZmFudCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2VFbmZhbnQuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyAoKVxuICB8IFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCIgLT5cbiAgICBQcmlzZUVuQ2hhcmdlRW5mYW50LkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSAoKVxuICB8IFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCIgLT4gUHJpc2VFbkNoYXJnZUVuZmFudC5FZmZlY3RpdmVFdFBlcm1hbmVudGUgKClcbiAgfCBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlXCIgLT5cbiAgICBQcmlzZUVuQ2hhcmdlRW5mYW50LlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlICgpXG4gIHwgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCIgLT5cbiAgICBQcmlzZUVuQ2hhcmdlRW5mYW50LlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1ByaXNlRW5DaGFyZ2VFbmZhbnQudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJBdmFudFwiXG4gICAgICAgIC0gXCJQZW5kYW50XCJcbiAgICAgICAgLSBcIkFwcmVzXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfdG9fanNvb1xuICA6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50IC0+IHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEF2YW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXZhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBQZW5kYW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGVuZGFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFwcmVzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXByZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX29mX2pzb29cbiAgKHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIDogc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudClcbiAgOiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudCA9XG4gIG1hdGNoIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQXZhbnRcIiAtPiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgKClcbiAgfCBcIlBlbmRhbnRcIiAtPiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCAoKVxuICB8IFwiQXByZXNcIiAtPiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1NpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50XCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXG4gICAgICAgIC0gXCJDb21wbGVtZW50RmFtaWxpYWxcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkxvZ2VtZW50XCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cbiAgOiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgLT4gZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbnNGYW1pbGlhbGVzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQ29tcGxlbWVudEZhbWlsaWFsIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ29tcGxlbWVudEZhbWlsaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkxvZ2VtZW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkxvZ2VtZW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX29mX2pzb29cbiAgKGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA6IGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50KVxuICA6IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9XG4gIG1hdGNoIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudCAoKVxuICB8IFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25zRmFtaWxpYWxlcyAoKVxuICB8IFwiQ29tcGxlbWVudEZhbWlsaWFsXCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkNvbXBsZW1lbnRGYW1pbGlhbCAoKVxuICB8IFwiQWxsb2NhdGlvbkxvZ2VtZW50XCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25Mb2dlbWVudCAoKVxuICB8IFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlICgpXG4gIHwgXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgKClcbiAgfCBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZSAoKVxuICB8IFwiQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGVcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0VsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwgPVxuICBvYmplY3RcbiAgICBtZXRob2QgY29udmVudGlvbm5lTGl2cmVJSUlUaXRyZVZDaGFwSUlJOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZWR1Y3Rpb25Mb3llclNvbGlkYXJpdGVQZXJjdWU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbF90b19qc29vIChjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbFxuICAgIDogQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLnQpIDogY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgY29udmVudGlvbm5lTGl2cmVJSUlUaXRyZVZDaGFwSUlJID1cbiAgICAgICAgSnMuYm9vbCBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbC5jb252ZW50aW9ubmVfbGl2cmVfSUlJX3RpdHJlX1ZfY2hhcF9JSUlcbiAgICAgIHZhbCByZWR1Y3Rpb25Mb3llclNvbGlkYXJpdGVQZXJjdWUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfcGVyY3VlXG4gICAgICBlbmRcbiAgbGV0IGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsX29mX2pzb29cbiAgICAoY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwgOiBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbCBKcy50KSA6XG4gICAgQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLnQgPVxuICAgIHtcbiAgICAgIGNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSSA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbCMjLmNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVWQ2hhcElJSTtcbiAgICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX3BlcmN1ZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbCMjLnJlZHVjdGlvbkxveWVyU29saWRhcml0ZVBlcmN1ZVxuICAgIH1cblxuY2xhc3MgdHlwZSBjb252ZW50aW9uX2Ffbl9oX2EgPVxuICBvYmplY3RcbiAgICBtZXRob2QgY29udmVudGlvbm5lTGl2cmVJSUlUaXRyZUlJQ2hhcElTZWMzOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNvbnZlbnRpb25fYV9uX2hfYV90b19qc29vIChjb252ZW50aW9uX2Ffbl9oX2EgOiBDb252ZW50aW9uQU5IQS50KVxuICAgIDogY29udmVudGlvbl9hX25faF9hIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVJSUNoYXBJU2VjMyA9XG4gICAgICAgIEpzLmJvb2wgY29udmVudGlvbl9hX25faF9hLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfSUlfY2hhcF9JX3NlY18zXG4gICAgICBlbmRcbiAgbGV0IGNvbnZlbnRpb25fYV9uX2hfYV9vZl9qc29vXG4gICAgKGNvbnZlbnRpb25fYV9uX2hfYSA6IGNvbnZlbnRpb25fYV9uX2hfYSBKcy50KSA6IENvbnZlbnRpb25BTkhBLnQgPVxuICAgIHtcbiAgICAgIGNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfSUlfY2hhcF9JX3NlY18zID1cbiAgICAgICAgSnMudG9fYm9vbCBjb252ZW50aW9uX2Ffbl9oX2EjIy5jb252ZW50aW9ubmVMaXZyZUlJSVRpdHJlSUlDaGFwSVNlYzNcbiAgICB9XG5cbmNsYXNzIHR5cGUgcGVyc29ubmVfc291c19sb2NhdGlvbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlTmFpc3NhbmNlUGVyc29ubmVTb3VzTG9jYXRpb246XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbmZvcm1lQXJ0aWNsZUw0NDIxOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHBlcnNvbm5lX3NvdXNfbG9jYXRpb25fdG9fanNvbyAocGVyc29ubmVfc291c19sb2NhdGlvblxuICAgIDogUGVyc29ubmVTb3VzTG9jYXRpb24udCkgOiBwZXJzb25uZV9zb3VzX2xvY2F0aW9uIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVOYWlzc2FuY2VQZXJzb25uZVNvdXNMb2NhdGlvbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBwZXJzb25uZV9zb3VzX2xvY2F0aW9uLmRhdGVfbmFpc3NhbmNlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb25cbiAgICAgIHZhbCBjb25mb3JtZUFydGljbGVMNDQyMSA9XG4gICAgICAgIEpzLmJvb2wgcGVyc29ubmVfc291c19sb2NhdGlvbi5jb25mb3JtZV9hcnRpY2xlX2w0NDJfMVxuICAgICAgZW5kXG4gIGxldCBwZXJzb25uZV9zb3VzX2xvY2F0aW9uX29mX2pzb29cbiAgICAocGVyc29ubmVfc291c19sb2NhdGlvbiA6IHBlcnNvbm5lX3NvdXNfbG9jYXRpb24gSnMudCkgOlxuICAgIFBlcnNvbm5lU291c0xvY2F0aW9uLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfbmFpc3NhbmNlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBwZXJzb25uZV9zb3VzX2xvY2F0aW9uIyMuZGF0ZU5haXNzYW5jZVBlcnNvbm5lU291c0xvY2F0aW9uO1xuICAgICAgY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzEgPVxuICAgICAgICBKcy50b19ib29sIHBlcnNvbm5lX3NvdXNfbG9jYXRpb24jIy5jb25mb3JtZUFydGljbGVMNDQyMVxuICAgIH1cblxuY2xhc3MgdHlwZSBwYXRyaW1vaW5lID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHByb2R1aXNhbnRSZXZlbnVQZXJpb2RlUjgyMjMzUjgyMjQ6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5lUHJvZHVpc2FudFBhc1JldmVudVBlcmlvZGVSODIyMzNSODIyNDpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwYXRyaW1vaW5lX3RvX2pzb28gKHBhdHJpbW9pbmUgOiBQYXRyaW1vaW5lLnQpIDogcGF0cmltb2luZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBwcm9kdWlzYW50UmV2ZW51UGVyaW9kZVI4MjIzM1I4MjI0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHBhdHJpbW9pbmUucHJvZHVpc2FudF9yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzRcbiAgICAgIHZhbCBuZVByb2R1aXNhbnRQYXNSZXZlbnVQZXJpb2RlUjgyMjMzUjgyMjQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcGF0cmltb2luZS5uZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzRcbiAgICAgIGVuZFxuICBsZXQgcGF0cmltb2luZV9vZl9qc29vIChwYXRyaW1vaW5lIDogcGF0cmltb2luZSBKcy50KSA6IFBhdHJpbW9pbmUudCA9XG4gICAge1xuICAgICAgcHJvZHVpc2FudF9yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcGF0cmltb2luZSMjLnByb2R1aXNhbnRSZXZlbnVQZXJpb2RlUjgyMjMzUjgyMjQ7XG4gICAgICBuZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcGF0cmltb2luZSMjLm5lUHJvZHVpc2FudFBhc1JldmVudVBlcmlvZGVSODIyMzNSODIyNFxuICAgIH1cblxuY2xhc3MgdHlwZSBjb25kaXRpb25zX2V0cmFuZ2VycyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBzYXRpc2ZhaXRDb25kaXRpb25zTDUxMjJDb2RlU2VjdXJpdGVTb2NpYWxlOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjb25kaXRpb25zX2V0cmFuZ2Vyc190b19qc29vIChjb25kaXRpb25zX2V0cmFuZ2Vyc1xuICAgIDogQ29uZGl0aW9uc0V0cmFuZ2Vycy50KSA6IGNvbmRpdGlvbnNfZXRyYW5nZXJzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHNhdGlzZmFpdENvbmRpdGlvbnNMNTEyMkNvZGVTZWN1cml0ZVNvY2lhbGUgPVxuICAgICAgICBKcy5ib29sIGNvbmRpdGlvbnNfZXRyYW5nZXJzLnNhdGlzZmFpdF9jb25kaXRpb25zX2w1MTJfMl9jb2RlX3NlY3VyaXRlX3NvY2lhbGVcbiAgICAgIGVuZFxuICBsZXQgY29uZGl0aW9uc19ldHJhbmdlcnNfb2ZfanNvb1xuICAgIChjb25kaXRpb25zX2V0cmFuZ2VycyA6IGNvbmRpdGlvbnNfZXRyYW5nZXJzIEpzLnQpIDpcbiAgICBDb25kaXRpb25zRXRyYW5nZXJzLnQgPVxuICAgIHtcbiAgICAgIHNhdGlzZmFpdF9jb25kaXRpb25zX2w1MTJfMl9jb2RlX3NlY3VyaXRlX3NvY2lhbGUgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY29uZGl0aW9uc19ldHJhbmdlcnMjIy5zYXRpc2ZhaXRDb25kaXRpb25zTDUxMjJDb2RlU2VjdXJpdGVTb2NpYWxlXG4gICAgfVxuXG5jbGFzcyB0eXBlIHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkdXJlZVJlc2lkZW5jZUR1cmFudFBlcmlvZGVSODIyMzFTdXBlcmlldXJlQTZNb2lzOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlczogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llcl90b19qc29vXG4gICAgKHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llclxuICAgIDogUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIudClcbiAgICA6IHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llciBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkdXJlZVJlc2lkZW5jZUR1cmFudFBlcmlvZGVSODIyMzFTdXBlcmlldXJlQTZNb2lzID1cbiAgICAgICAgSnMuYm9vbCBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXIuZHVyZWVfcmVzaWRlbmNlX2R1cmFudF9wZXJpb2RlX3JfODIyXzNfMV9zdXBlcmlldXJlX2FfNl9tb2lzXG4gICAgICB2YWwgcmVzc291cmNlcyA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXIucmVzc291cmNlc1xuICAgICAgZW5kXG4gIGxldCBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXJfb2ZfanNvb1xuICAgIChwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXJcbiAgICAgIDogcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyIEpzLnQpIDpcbiAgICBQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci50ID1cbiAgICB7XG4gICAgICBkdXJlZV9yZXNpZGVuY2VfZHVyYW50X3BlcmlvZGVfcl84MjJfM18xX3N1cGVyaWV1cmVfYV82X21vaXMgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyXG4gICAgICAgICAgIyMuZHVyZWVSZXNpZGVuY2VEdXJhbnRQZXJpb2RlUjgyMjMxU3VwZXJpZXVyZUE2TW9pcztcbiAgICAgIHJlc3NvdXJjZXMgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyIyMucmVzc291cmNlc1xuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVsaWdpYmlsaXRlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGU6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGU6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgICA6IEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC50KVxuICAgIDogZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZSA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQuZGF0ZV9jb3VyYW50ZVxuICAgICAgdmFsIGVsaWdpYmlsaXRlID1cbiAgICAgICAgSnMuYm9vbCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQuZWxpZ2liaWxpdGVcbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGUgPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXG4gICAgICB2YWwgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZSA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgeCkgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVcbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gICAgICA6IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCBKcy50KSA6XG4gICAgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGUgPVxuICAgICAgICBkYXRlX29mX2pzb28gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IyMuZGF0ZUNvdXJhbnRlO1xuICAgICAgZWxpZ2liaWxpdGUgPVxuICAgICAgICBKcy50b19ib29sIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCMjLmVsaWdpYmlsaXRlO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGU7XG4gICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAgICAgICAgICMjLmNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50ID1cbiAgb2JqZWN0IG1ldGhvZCBtb250YW50UHJpbWVEZW1lbmFnZW1lbnQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgOiBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnQudClcbiAgICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb250YW50UHJpbWVEZW1lbmFnZW1lbnQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50Lm1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50XG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudFxuICAgICAgOiBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudC50ID1cbiAgICB7XG4gICAgICBtb250YW50X3ByaW1lX2RlbWVuYWdlbWVudCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQjIy5tb250YW50UHJpbWVEZW1lbmFnZW1lbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gIG9iamVjdCBtZXRob2QgcmVzc291cmNlc1ByaXNlc0VuQ29tcHRlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vXG4gICAgKHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICA6IFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudClcbiAgICA6IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgcmVzc291cmNlc1ByaXNlc0VuQ29tcHRlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQucmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlXG4gICAgICBlbmRcbiAgbGV0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAgIChyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICA6IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCkgOlxuICAgIFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9XG4gICAge1xuICAgICAgcmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQjIy5yZXNzb3VyY2VzUHJpc2VzRW5Db21wdGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtb250YW50OlxuICAgICAgKEpzLm51bWJlciBKcy50LCAgSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvb1xuICAgIChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudClcbiAgICA6IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICBtZXRob2QgbW9udGFudCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50Lm1vbnRhbnQgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgaW5wdXQpKSlcbiAgICAgIGVuZFxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgKGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIDogY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50KSA6XG4gICAgQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnQgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnbW9udGFudCcgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtb250YW50Rm9yZmFpdGFpcmVDaGFyZ2VzRDgyMzE2OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBsYWZvbmRMb3llckQ4MjMxNjI6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGFydGljaXBhdGlvbk1pbmltYWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRhdXhDb21wb3NpdGlvbkZhbWlsaWFsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwYXJ0aWNpcGF0aW9uUGVyc29ubmVsbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAoSnMubnVtYmVyIEpzLnQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX3RvX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gICAgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50KVxuICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXNEODIzMTYgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XG4gICAgICB2YWwgcGxhZm9uZExveWVyRDgyMzE2MiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYucGxhZm9uZF9sb3llcl9kODIzXzE2XzJcbiAgICAgIHZhbCBwYXJ0aWNpcGF0aW9uTWluaW1hbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmLnBhcnRpY2lwYXRpb25fbWluaW1hbGVcbiAgICAgIHZhbCB0YXV4Q29tcG9zaXRpb25GYW1pbGlhbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVcbiAgICAgIHZhbCBwYXJ0aWNpcGF0aW9uUGVyc29ubmVsbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmLnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIGlucHV0KSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9vZl9qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZlxuICAgICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYgSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZlxuICAgICAgICAgICMjLm1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXNEODIzMTY7XG4gICAgICBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYjIy5wbGFmb25kTG95ZXJEODIzMTYyO1xuICAgICAgcGFydGljaXBhdGlvbl9taW5pbWFsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYjIy5wYXJ0aWNpcGF0aW9uTWluaW1hbGU7XG4gICAgICB0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gICAgICAgICAgIyMudGF1eENvbXBvc2l0aW9uRmFtaWxpYWxlO1xuICAgICAgcGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZcbiAgICAgICAgICAjIy5wYXJ0aWNpcGF0aW9uUGVyc29ubmVsbGU7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiMjLmFpZGVGaW5hbGVGb3JtdWxlO1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlID1cbiAgb2JqZWN0IG1ldGhvZCBtb250YW50OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX3RvX2pzb29cbiAgICAoY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLnQpXG4gICAgOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUubW9udGFudFxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb2ZfanNvb1xuICAgIChjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcbiAgICAgIDogY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIEpzLnQpIDpcbiAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUudCA9XG4gICAge1xuICAgICAgbW9udGFudCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUjIy5tb250YW50XG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciA9XG4gIG9iamVjdCBtZXRob2Qgbk5vbWJyZVBhcnRzRDgzMjI1OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyIDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIudClcbiAgICA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBuTm9tYnJlUGFydHNEODMyMjUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgIChjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJcbiAgICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyIEpzLnQpIDpcbiAgICBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci50ID1cbiAgICB7XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIjIy5uTm9tYnJlUGFydHNEODMyMjVcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBjb2VmZmljaWVudE11bHRpcGxpY2F0ZXVyRDgzMjI1OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvZWZmaWNpZW50UkQ4MzIyNTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuTm9tYnJlUGFydHNEODMyMjU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZXF1aXZhbGVuY2VMb3llckVsaWdpYmxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBsYWZvbmRFcXVpdmFsZW5jZUxveWVyRWxpZ2libGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZXF1aXZhbGVuY2VMb3llck1pbmltYWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZUQ4MzIyNTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhaWRlRmluYWxlRm9ybXVsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZTpcbiAgICAgIChKcy5udW1iZXIgSnMudCwgIEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llclxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvZWZmaWNpZW50TXVsdGlwbGljYXRldXJEODMyMjUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XG4gICAgICB2YWwgY29lZmZpY2llbnRSRDgzMjI1ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1XG4gICAgICB2YWwgbk5vbWJyZVBhcnRzRDgzMjI1ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1XG4gICAgICB2YWwgZXF1aXZhbGVuY2VMb3llckVsaWdpYmxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVcbiAgICAgIHZhbCBwbGFmb25kRXF1aXZhbGVuY2VMb3llckVsaWdpYmxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZVxuICAgICAgdmFsIGVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyLmVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXG4gICAgICB2YWwgY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlRDgzMjI1ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNVxuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llclxuICAgICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudCA9XG4gICAge1xuICAgICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gICAgICAgICAgIyMuY29lZmZpY2llbnRNdWx0aXBsaWNhdGV1ckQ4MzIyNTtcbiAgICAgIGNvZWZmaWNpZW50X3JfZDgzMl8yNSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIyMuY29lZmZpY2llbnRSRDgzMjI1O1xuICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNSA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciMjLm5Ob21icmVQYXJ0c0Q4MzIyNTtcbiAgICAgIGVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIjIy5lcXVpdmFsZW5jZUxveWVyRWxpZ2libGU7XG4gICAgICBwbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJcbiAgICAgICAgICAjIy5wbGFmb25kRXF1aXZhbGVuY2VMb3llckVsaWdpYmxlO1xuICAgICAgZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciMjLmVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZTtcbiAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gICAgICAgICAgIyMuY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlRDgzMjI1O1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGUgPVxuICBvYmplY3QgbWV0aG9kIG5Ob21icmVQYXJ0c0Q4MzIxMTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV90b19qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgIDogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUudClcbiAgICA6IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBuTm9tYnJlUGFydHNEODMyMTEgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGUubl9ub21icmVfcGFydHNfZDgzMl8xMVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfb2ZfanNvb1xuICAgIChjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQpIDpcbiAgICBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICB7XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGUjIy5uTm9tYnJlUGFydHNEODMyMTFcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1lbnN1YWxpdGVFbGlnaWJsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtZW5zdWFsaXRlTWluaW1hbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlRDgzMjEwOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlOlxuICAgICAgKEpzLm51bWJlciBKcy50LCAgSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50KVxuICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbnN1YWxpdGVFbGlnaWJsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUubWVuc3VhbGl0ZV9lbGlnaWJsZVxuICAgICAgdmFsIG1lbnN1YWxpdGVNaW5pbWFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUubWVuc3VhbGl0ZV9taW5pbWFsZVxuICAgICAgdmFsIGNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZUQ4MzIxMCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZS5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMFxuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgaW5wdXQpKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50KSA6XG4gICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICB7XG4gICAgICBtZW5zdWFsaXRlX2VsaWdpYmxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgICAgICMjLm1lbnN1YWxpdGVFbGlnaWJsZTtcbiAgICAgIG1lbnN1YWxpdGVfbWluaW1hbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICAgICAgIyMubWVuc3VhbGl0ZU1pbmltYWxlO1xuICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTAgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgICAgICMjLmNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZUQ4MzIxMDtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICAgICAgIyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSB0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAoSnMubnVtYmVyIEpzLnQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlX3RvX2pzb28gKHRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZVxuICAgIDogVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnQpIDogdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAodHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgaW5wdXQpKSlcbiAgICAgIGVuZFxuICBsZXQgdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlX29mX2pzb29cbiAgICAodHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlIDogdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlIEpzLnQpIDpcbiAgICBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudCA9XG4gICAge1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICB0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUjIy5haWRlRmluYWxlRm9ybXVsZTtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAoSnMubnVtYmVyIEpzLnQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAgICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCMjLmFpZGVGaW5hbGVGb3JtdWxlO1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYW5jaWVuTG95ZXJQcmluY2lwYWw6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYW5jaWVubmVBbGxvY2F0aW9uTG9nZW1lbnQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF90b19qc29vXG4gICAgKGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IDogSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50KVxuICAgIDogaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYW5jaWVuTG95ZXJQcmluY2lwYWwgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQuYW5jaWVuX2xveWVyX3ByaW5jaXBhbFxuICAgICAgdmFsIGFuY2llbm5lQWxsb2NhdGlvbkxvZ2VtZW50ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80LmFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICAgIGVuZFxuICBsZXQgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfanNvb1xuICAgIChpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNFxuICAgICAgOiBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCBKcy50KSA6XG4gICAgSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50ID1cbiAgICB7XG4gICAgICBhbmNpZW5fbG95ZXJfcHJpbmNpcGFsID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IyMuYW5jaWVuTG95ZXJQcmluY2lwYWw7XG4gICAgICBhbmNpZW5uZV9hbGxvY2F0aW9uX2xvZ2VtZW50ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IyMuYW5jaWVubmVBbGxvY2F0aW9uTG9nZW1lbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBhaWRlRmluYWxlRm9ybXVsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZTpcbiAgICAgIChKcy5udW1iZXIgSnMudCwgIEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX3RvX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudClcbiAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIGlucHV0KSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmXG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYgSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudCA9XG4gICAge1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmIyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlOlxuICAgICAgKEpzLm51bWJlciBKcy50LCAgSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudClcbiAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIGlucHV0KSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICB7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUjIy5haWRlRmluYWxlRm9ybXVsZTtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlcXVpdmFsZW5jZUxveWVyOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXM6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG95ZXJNaW5pbWFsOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlOlxuICAgICAgKEpzLm51bWJlciBKcy50LCAgSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXG4gICAgICB2YWwgZXF1aXZhbGVuY2VMb3llciA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llci5lcXVpdmFsZW5jZV9sb3llclxuICAgICAgdmFsIG1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXMgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXG4gICAgICB2YWwgbG95ZXJNaW5pbWFsID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyLmxveWVyX21pbmltYWxcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID1cbiAgICB7XG4gICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIyMuY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlO1xuICAgICAgZXF1aXZhbGVuY2VfbG95ZXIgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIjIy5lcXVpdmFsZW5jZUxveWVyO1xuICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIyMubW9udGFudEZvcmZhaXRhaXJlQ2hhcmdlcztcbiAgICAgIGxveWVyX21pbmltYWwgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIjIy5sb3llck1pbmltYWw7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBhaWRlRmluYWxlRm9ybXVsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZTpcbiAgICAgIChKcy5udW1iZXIgSnMudCwgIEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF90b19qc29vIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudFxuICAgIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnQpIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgaW5wdXQpKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudCA9XG4gICAge1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCMjLmFpZGVGaW5hbGVGb3JtdWxlO1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBhZ2VPdXZlcnR1cmVEcm9pdDpcbiAgICAgIFJ1bnRpbWVfanNvby5SdW50aW1lLmR1cmF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfdG9fanNvbyAob3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVxuICAgIDogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUudCkgOiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFnZU91dmVydHVyZURyb2l0ID1cbiAgICAgICAgZHVyYXRpb25fdG9fanNvbyBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlLmFnZV9vdXZlcnR1cmVfZHJvaXRcbiAgICAgIGVuZFxuICBsZXQgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9vZl9qc29vXG4gICAgKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUgOiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIEpzLnQpIDpcbiAgICBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZS50ID1cbiAgICB7XG4gICAgICBhZ2Vfb3V2ZXJ0dXJlX2Ryb2l0ID1cbiAgICAgICAgZHVyYXRpb25fb2ZfanNvbyBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIyMuYWdlT3V2ZXJ0dXJlRHJvaXRcbiAgICB9XG5cbmNsYXNzIHR5cGUgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRJbXBheWU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF90b19qc29vIChpbXBheWVfZGVwZW5zZV9sb2dlbWVudFxuICAgIDogSW1wYXllRGVwZW5zZUxvZ2VtZW50LnQpIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudEltcGF5ZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudC5tb250YW50X2ltcGF5ZVxuICAgICAgZW5kXG4gIGxldCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vZl9qc29vXG4gICAgKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50IDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgSnMudCkgOlxuICAgIEltcGF5ZURlcGVuc2VMb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBtb250YW50X2ltcGF5ZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbXBheWVfZGVwZW5zZV9sb2dlbWVudCMjLm1vbnRhbnRJbXBheWVcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBlbGlnaWJpbGl0ZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAoSnMubnVtYmVyIEpzLnQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGU6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X3RvX2pzb28gKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRcbiAgICA6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudCkgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGVsaWdpYmlsaXRlID0gSnMuYm9vbCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50LmVsaWdpYmlsaXRlXG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudC50cmFpdGVtZW50X2FpZGVfZmluYWxlIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIGlucHV0KSkpXG4gICAgICB2YWwgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZSA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgeCkgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfb2ZfanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCBKcy50KSA6XG4gICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBlbGlnaWJpbGl0ZSA9IEpzLnRvX2Jvb2wgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCMjLmVsaWdpYmlsaXRlO1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudFxuICAgICAgICAgICMjLmNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBlbGlnaWJpbGl0ZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfdG9fanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlXG4gICAgOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS50KVxuICAgIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBlbGlnaWJpbGl0ZSA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZS5lbGlnaWJpbGl0ZVxuICAgICAgdmFsIGFpZGVGaW5hbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZS5haWRlX2ZpbmFsZVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX29mX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZVxuICAgICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlIEpzLnQpIDpcbiAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS50ID1cbiAgICB7XG4gICAgICBlbGlnaWJpbGl0ZSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSMjLmVsaWdpYmlsaXRlO1xuICAgICAgYWlkZV9maW5hbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSMjLmFpZGVGaW5hbGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdCBtZXRob2QgbW9udGFudDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpXG4gICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vbnRhbnQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5tb250YW50XG4gICAgICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9XG4gICAge1xuICAgICAgbW9udGFudCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIyMubW9udGFudFxuICAgIH1cblxuY2xhc3MgdHlwZSBzbWljID1cbiAgb2JqZWN0IG1ldGhvZCBicnV0SG9yYWlyZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHNtaWNfdG9fanNvbyAoc21pYyA6IFNtaWMudCkgOiBzbWljIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGJydXRIb3JhaXJlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHNtaWMuYnJ1dF9ob3JhaXJlXG4gICAgICBlbmRcbiAgbGV0IHNtaWNfb2ZfanNvbyAoc21pYyA6IHNtaWMgSnMudCkgOiBTbWljLnQgPVxuICAgIHtcbiAgICAgIGJydXRfaG9yYWlyZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBzbWljIyMuYnJ1dEhvcmFpcmVcbiAgICB9XG5cbmNsYXNzIHR5cGUgcHJldCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCB0eXBlUHJldDogdHlwZV9wcmV0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlU2lnbmF0dXJlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRpdHVsYWlyZVByZXQ6IHRpdHVsYWlyZV9wcmV0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHByZXRfdG9fanNvbyAocHJldCA6IFByZXQudCkgOiBwcmV0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHR5cGVQcmV0ID0gdHlwZV9wcmV0X3RvX2pzb28gcHJldC50eXBlX3ByZXRcbiAgICAgIHZhbCBkYXRlU2lnbmF0dXJlID0gZGF0ZV90b19qc29vIHByZXQuZGF0ZV9zaWduYXR1cmVcbiAgICAgIHZhbCB0aXR1bGFpcmVQcmV0ID0gdGl0dWxhaXJlX3ByZXRfdG9fanNvbyBwcmV0LnRpdHVsYWlyZV9wcmV0XG4gICAgICBlbmRcbiAgbGV0IHByZXRfb2ZfanNvbyAocHJldCA6IHByZXQgSnMudCkgOiBQcmV0LnQgPVxuICAgIHtcbiAgICAgIHR5cGVfcHJldCA9IHR5cGVfcHJldF9vZl9qc29vIHByZXQjIy50eXBlUHJldDtcbiAgICAgIGRhdGVfc2lnbmF0dXJlID0gZGF0ZV9vZl9qc29vIHByZXQjIy5kYXRlU2lnbmF0dXJlO1xuICAgICAgdGl0dWxhaXJlX3ByZXQgPSB0aXR1bGFpcmVfcHJldF9vZl9qc29vIHByZXQjIy50aXR1bGFpcmVQcmV0XG4gICAgfVxuXG5jbGFzcyB0eXBlIG5ldWZfb3VfYW5jaWVuID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiTmV1ZlwiXG4gICAgICAgIC0gXCJBbmNpZW5cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBuZXVmX291X2FuY2llbl90b19qc29vIDogTmV1Zk91QW5jaWVuLnQgLT4gbmV1Zl9vdV9hbmNpZW4gSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgTmV1ZiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk5ldWZcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbmNpZW4gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbmNpZW5cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChhbWVsaW9yZV9wYXJfb2NjdXBhbnRfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbmV1Zl9vdV9hbmNpZW5fb2ZfanNvbyAobmV1Zl9vdV9hbmNpZW4gOiBuZXVmX291X2FuY2llbiBKcy50KVxuICA6IE5ldWZPdUFuY2llbi50ID1cbiAgbWF0Y2ggbmV1Zl9vdV9hbmNpZW4jIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJOZXVmXCIgLT4gTmV1Zk91QW5jaWVuLk5ldWYgKClcbiAgfCBcIkFuY2llblwiIC0+XG4gIE5ldWZPdUFuY2llbi5BbmNpZW4gKGFtZWxpb3JlX3Bhcl9vY2N1cGFudF9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIG5ldWZfb3VfYW5jaWVuIyMucGF5bG9hZCkpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdOZXVmT3VBbmNpZW4udCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdHJhbmNoZV9yZXZlbnUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgaGF1dDogbGltaXRlX3RyYW5jaGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJhczogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0YXV4OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgdHJhbmNoZV9yZXZlbnVfdG9fanNvbyAodHJhbmNoZV9yZXZlbnUgOiBUcmFuY2hlUmV2ZW51LnQpXG4gICAgOiB0cmFuY2hlX3JldmVudSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBoYXV0ID0gbGltaXRlX3RyYW5jaGVfdG9fanNvbyB0cmFuY2hlX3JldmVudS5oYXV0XG4gICAgICB2YWwgYmFzID0gSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHRyYW5jaGVfcmV2ZW51LmJhc1xuICAgICAgdmFsIHRhdXggPSBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCB0cmFuY2hlX3JldmVudS50YXV4XG4gICAgICBlbmRcbiAgbGV0IHRyYW5jaGVfcmV2ZW51X29mX2pzb28gKHRyYW5jaGVfcmV2ZW51IDogdHJhbmNoZV9yZXZlbnUgSnMudCkgOlxuICAgIFRyYW5jaGVSZXZlbnUudCA9XG4gICAge1xuICAgICAgaGF1dCA9IGxpbWl0ZV90cmFuY2hlX29mX2pzb28gdHJhbmNoZV9yZXZlbnUjIy5oYXV0O1xuICAgICAgYmFzID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHRyYW5jaGVfcmV2ZW51IyMuYmFzO1xuICAgICAgdGF1eCA9IGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIHRyYW5jaGVfcmV2ZW51IyMudGF1eFxuICAgIH1cblxuY2xhc3MgdHlwZSB0cmFuY2hlX3JldmVudV9kZWNpbWFsID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGhhdXQ6IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJhczogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0YXV4OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbF90b19qc29vICh0cmFuY2hlX3JldmVudV9kZWNpbWFsXG4gICAgOiBUcmFuY2hlUmV2ZW51RGVjaW1hbC50KSA6IHRyYW5jaGVfcmV2ZW51X2RlY2ltYWwgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaGF1dCA9IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfdG9fanNvbyB0cmFuY2hlX3JldmVudV9kZWNpbWFsLmhhdXRcbiAgICAgIHZhbCBiYXMgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCB0cmFuY2hlX3JldmVudV9kZWNpbWFsLmJhc1xuICAgICAgdmFsIHRhdXggPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCB0cmFuY2hlX3JldmVudV9kZWNpbWFsLnRhdXhcbiAgICAgIGVuZFxuICBsZXQgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbF9vZl9qc29vXG4gICAgKHRyYW5jaGVfcmV2ZW51X2RlY2ltYWwgOiB0cmFuY2hlX3JldmVudV9kZWNpbWFsIEpzLnQpIDpcbiAgICBUcmFuY2hlUmV2ZW51RGVjaW1hbC50ID1cbiAgICB7XG4gICAgICBoYXV0ID0gbGltaXRlX3RyYW5jaGVfZGVjaW1hbF9vZl9qc29vIHRyYW5jaGVfcmV2ZW51X2RlY2ltYWwjIy5oYXV0O1xuICAgICAgYmFzID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCMjLmJhcztcbiAgICAgIHRhdXggPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB0cmFuY2hlX3JldmVudV9kZWNpbWFsIyMudGF1eFxuICAgIH1cblxuY2xhc3MgdHlwZSBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlTmFpc3NhbmNlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXM6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYXNjZW5kYW50RGVzY2VuZGFudENvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGFyZW50ZTogcGFyZW50ZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaW5jYXBhY2l0ZTgwUG91cmNlbnRPdVJlc3RyaWN0aW9uRW1wbG9pOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlTDE2MTE5TDM1MThMNjQzM1NlY3U6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRpdHVsYWlyZUFsbG9jYXRpb25QZXJzb25uZUFnZWU6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2VfdG9fanNvbyAoYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2VcbiAgICA6IEF1dHJlUGVyc29ubmVBQ2hhcmdlLnQpIDogYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZU5haXNzYW5jZSA9IGRhdGVfdG9fanNvbyBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS5kYXRlX25haXNzYW5jZVxuICAgICAgdmFsIHJlc3NvdXJjZXMgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UucmVzc291cmNlc1xuICAgICAgdmFsIGFzY2VuZGFudERlc2NlbmRhbnRDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZSA9XG4gICAgICAgIEpzLmJvb2wgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UuYXNjZW5kYW50X2Rlc2NlbmRhbnRfY29sbGF0ZXJhbF9kZXV4aWVtZV90cm9pc2llbWVfZGVncmVcbiAgICAgIHZhbCBwYXJlbnRlID0gcGFyZW50ZV90b19qc29vIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLnBhcmVudGVcbiAgICAgIHZhbCBpbmNhcGFjaXRlODBQb3VyY2VudE91UmVzdHJpY3Rpb25FbXBsb2kgPVxuICAgICAgICBKcy5ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLmluY2FwYWNpdGVfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pXG4gICAgICB2YWwgYmVuZWZpY2lhaXJlTDE2MTE5TDM1MThMNjQzM1NlY3UgPVxuICAgICAgICBKcy5ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLmJlbmVmaWNpYWlyZV9sMTYxXzE5X2wzNTFfOF9sNjQzXzNfc2VjdVxuICAgICAgdmFsIHRpdHVsYWlyZUFsbG9jYXRpb25QZXJzb25uZUFnZWUgPVxuICAgICAgICBKcy5ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLnRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWVcbiAgICAgIGVuZFxuICBsZXQgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvb1xuICAgIChhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSA6IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIEpzLnQpIDpcbiAgICBBdXRyZVBlcnNvbm5lQUNoYXJnZS50ID1cbiAgICB7XG4gICAgICBkYXRlX25haXNzYW5jZSA9IGRhdGVfb2ZfanNvbyBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSMjLmRhdGVOYWlzc2FuY2U7XG4gICAgICByZXNzb3VyY2VzID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIyMucmVzc291cmNlcztcbiAgICAgIGFzY2VuZGFudF9kZXNjZW5kYW50X2NvbGxhdGVyYWxfZGV1eGllbWVfdHJvaXNpZW1lX2RlZ3JlID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlXG4gICAgICAgICAgIyMuYXNjZW5kYW50RGVzY2VuZGFudENvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlO1xuICAgICAgcGFyZW50ZSA9IHBhcmVudGVfb2ZfanNvbyBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSMjLnBhcmVudGU7XG4gICAgICBpbmNhcGFjaXRlXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaSA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSMjLmluY2FwYWNpdGU4MFBvdXJjZW50T3VSZXN0cmljdGlvbkVtcGxvaTtcbiAgICAgIGJlbmVmaWNpYWlyZV9sMTYxXzE5X2wzNTFfOF9sNjQzXzNfc2VjdSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UjIy5iZW5lZmljaWFpcmVMMTYxMTlMMzUxOEw2NDMzU2VjdTtcbiAgICAgIHRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWUgPVxuICAgICAgICBKcy50b19ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIyMudGl0dWxhaXJlQWxsb2NhdGlvblBlcnNvbm5lQWdlZVxuICAgIH1cblxuY2xhc3MgdHlwZSBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk1vaW5zRGVUcm9pc0VuZmFudHNcIlxuICAgICAgICAtIFwiUGx1c0RlVHJvaXNFbmZhbnRzXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRfdG9fanNvb1xuICA6IERhdGVOYWlzc2FuY2VUcm9pc2llbWVPdURlcm5pZXJQbHVzRW5mYW50LnQgLT4gZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgTW9pbnNEZVRyb2lzRW5mYW50cyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1vaW5zRGVUcm9pc0VuZmFudHNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBQbHVzRGVUcm9pc0VuZmFudHMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQbHVzRGVUcm9pc0VuZmFudHNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZV90b19qc29vIGFyZykpXG4gICAgZW5kXG5cbmxldCBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudF9vZl9qc29vXG4gIChkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudFxuICAgIDogZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQgSnMudClcbiAgOiBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC50ID1cbiAgbWF0Y2ggZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQjIy5raW5kXG4gICAgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIk1vaW5zRGVUcm9pc0VuZmFudHNcIiAtPlxuICAgIERhdGVOYWlzc2FuY2VUcm9pc2llbWVPdURlcm5pZXJQbHVzRW5mYW50Lk1vaW5zRGVUcm9pc0VuZmFudHMgKClcbiAgfCBcIlBsdXNEZVRyb2lzRW5mYW50c1wiIC0+XG4gIERhdGVOYWlzc2FuY2VUcm9pc2llbWVPdURlcm5pZXJQbHVzRW5mYW50LlBsdXNEZVRyb2lzRW5mYW50cyAoZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2Vfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudCMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBlbGlnaWJpbGl0ZTpcbiAgICAgIHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF90b19qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50KVxuICAgIDogZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBlbGlnaWJpbGl0ZSA9XG4gICAgICAgIHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF90b19qc29vIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQuZWxpZ2liaWxpdGVcbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGUgPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVxuICAgICAgdmFsIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGUgPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IHgpIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZVxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIGVsaWdpYmlsaXRlID1cbiAgICAgICAgdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X29mX2pzb29cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IyMuZWxpZ2liaWxpdGU7XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGU7XG4gICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICAgICAgICAjIy5jb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGxvZ2VtZW50X2ZveWVyID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHR5cGVVc2VyOiB0eXBlX2xvZ2VtZW50X2ZveWVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZW1wbGl0Q29uZGl0aW9uc1I4MzIyMTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29udmVudGlvbm5lTGl2cmVJSUlUaXRyZVZDaGFwSUlJOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ29udmVudGlvbm5lbWVudDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25zdHJ1aXRBcHBsaWNhdGlvbkxvaTE5NTcxMklJSTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkZXZhbmNlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTY6XG4gICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBsb2dlbWVudF9mb3llcl90b19qc29vIChsb2dlbWVudF9mb3llciA6IExvZ2VtZW50Rm95ZXIudClcbiAgICA6IGxvZ2VtZW50X2ZveWVyIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHR5cGVVc2VyID0gdHlwZV9sb2dlbWVudF9mb3llcl90b19qc29vIGxvZ2VtZW50X2ZveWVyLnR5cGVfdXNlclxuICAgICAgdmFsIHJlbXBsaXRDb25kaXRpb25zUjgzMjIxID1cbiAgICAgICAgSnMuYm9vbCBsb2dlbWVudF9mb3llci5yZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMVxuICAgICAgdmFsIGNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVWQ2hhcElJSSA9XG4gICAgICAgIEpzLmJvb2wgbG9nZW1lbnRfZm95ZXIuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJXG4gICAgICB2YWwgZGF0ZUNvbnZlbnRpb25uZW1lbnQgPVxuICAgICAgICBkYXRlX3RvX2pzb28gbG9nZW1lbnRfZm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50XG4gICAgICB2YWwgY29uc3RydWl0QXBwbGljYXRpb25Mb2kxOTU3MTJJSUkgPVxuICAgICAgICBKcy5ib29sIGxvZ2VtZW50X2ZveWVyLmNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUlcbiAgICAgIHZhbCByZWRldmFuY2UgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgbG9nZW1lbnRfZm95ZXIucmVkZXZhbmNlXG4gICAgICB2YWwgY2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckQ4NDIxNiA9XG4gICAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28gbG9nZW1lbnRfZm95ZXIuY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZcbiAgICAgIGVuZFxuICBsZXQgbG9nZW1lbnRfZm95ZXJfb2ZfanNvbyAobG9nZW1lbnRfZm95ZXIgOiBsb2dlbWVudF9mb3llciBKcy50KSA6XG4gICAgTG9nZW1lbnRGb3llci50ID1cbiAgICB7XG4gICAgICB0eXBlX3VzZXIgPSB0eXBlX2xvZ2VtZW50X2ZveWVyX29mX2pzb28gbG9nZW1lbnRfZm95ZXIjIy50eXBlVXNlcjtcbiAgICAgIHJlbXBsaXRfY29uZGl0aW9uc19yODMyXzIxID1cbiAgICAgICAgSnMudG9fYm9vbCBsb2dlbWVudF9mb3llciMjLnJlbXBsaXRDb25kaXRpb25zUjgzMjIxO1xuICAgICAgY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJID1cbiAgICAgICAgSnMudG9fYm9vbCBsb2dlbWVudF9mb3llciMjLmNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVWQ2hhcElJSTtcbiAgICAgIGRhdGVfY29udmVudGlvbm5lbWVudCA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBsb2dlbWVudF9mb3llciMjLmRhdGVDb252ZW50aW9ubmVtZW50O1xuICAgICAgY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbG9nZW1lbnRfZm95ZXIjIy5jb25zdHJ1aXRBcHBsaWNhdGlvbkxvaTE5NTcxMklJSTtcbiAgICAgIHJlZGV2YW5jZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBsb2dlbWVudF9mb3llciMjLnJlZGV2YW5jZTtcbiAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2ID1cbiAgICAgICAgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgICAgICAgIGxvZ2VtZW50X2ZveWVyIyMuY2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckQ4NDIxNlxuICAgIH1cblxuY2xhc3MgdHlwZSBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBpZGVudGlmaWFudDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgb2JsaWdhdGlvblNjb2xhaXJlOlxuICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlbXVuZXJhdGlvbk1lbnN1ZWxsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRGVOYWlzc2FuY2U6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcHJpc2VFbkNoYXJnZTogcHJpc2VfZW5fY2hhcmdlX2VuZmFudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQ6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb28gKGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCkgOiBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBpZGVudGlmaWFudCA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLmlkZW50aWZpYW50XG4gICAgICB2YWwgb2JsaWdhdGlvblNjb2xhaXJlID1cbiAgICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfdG9fanNvbyBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlXG4gICAgICB2YWwgcmVtdW5lcmF0aW9uTWVuc3VlbGxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGVcbiAgICAgIHZhbCBkYXRlRGVOYWlzc2FuY2UgPVxuICAgICAgICBkYXRlX3RvX2pzb28gZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9kZV9uYWlzc2FuY2VcbiAgICAgIHZhbCBwcmlzZUVuQ2hhcmdlID1cbiAgICAgICAgcHJpc2VfZW5fY2hhcmdlX2VuZmFudF90b19qc29vIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLnByaXNlX2VuX2NoYXJnZVxuICAgICAgdmFsIGFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy5ib29sIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIHZhbCBiZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50ID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIGVuZFxuICBsZXQgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA6IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQpIDpcbiAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9XG4gICAge1xuICAgICAgaWRlbnRpZmlhbnQgPSBpbnRlZ2VyX29mX2ludCBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLmlkZW50aWZpYW50O1xuICAgICAgb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX29mX2pzb29cbiAgICAgICAgICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLm9ibGlnYXRpb25TY29sYWlyZTtcbiAgICAgIHJlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5yZW11bmVyYXRpb25NZW5zdWVsbGU7XG4gICAgICBkYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLmRhdGVEZU5haXNzYW5jZTtcbiAgICAgIHByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgIHByaXNlX2VuX2NoYXJnZV9lbmZhbnRfb2ZfanNvb1xuICAgICAgICAgIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMucHJpc2VFbkNoYXJnZTtcbiAgICAgIGFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgICAgICAjIy5hRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzO1xuICAgICAgYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgICAgICAgIyMuYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudFxuICAgIH1cblxuY2xhc3MgdHlwZSBlbmZhbnRfYV9jaGFyZ2UgPVxuICBvYmplY3RcbiAgICBtZXRob2QgaWRlbnRpZmlhbnQ6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQ6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZURlTmFpc3NhbmNlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlbXVuZXJhdGlvbk1lbnN1ZWxsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBvYmxpZ2F0aW9uU2NvbGFpcmU6XG4gICAgICBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uR2FyZGVBbHRlcm5lZTpcbiAgICAgIHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbmZhbnRfYV9jaGFyZ2VfdG9fanNvbyAoZW5mYW50X2FfY2hhcmdlIDogRW5mYW50QUNoYXJnZS50KVxuICAgIDogZW5mYW50X2FfY2hhcmdlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGlkZW50aWZpYW50ID0gaW50ZWdlcl90b19pbnQgZW5mYW50X2FfY2hhcmdlLmlkZW50aWZpYW50XG4gICAgICB2YWwgYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudCA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50X2FfY2hhcmdlLmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgdmFsIGFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy5ib29sIGVuZmFudF9hX2NoYXJnZS5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICB2YWwgZGF0ZURlTmFpc3NhbmNlID0gZGF0ZV90b19qc29vIGVuZmFudF9hX2NoYXJnZS5kYXRlX2RlX25haXNzYW5jZVxuICAgICAgdmFsIHJlbXVuZXJhdGlvbk1lbnN1ZWxsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBlbmZhbnRfYV9jaGFyZ2UucmVtdW5lcmF0aW9uX21lbnN1ZWxsZVxuICAgICAgdmFsIG9ibGlnYXRpb25TY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX3RvX2pzb28gZW5mYW50X2FfY2hhcmdlLm9ibGlnYXRpb25fc2NvbGFpcmVcbiAgICAgIHZhbCBzaXR1YXRpb25HYXJkZUFsdGVybmVlID1cbiAgICAgICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlX3RvX2pzb28gZW5mYW50X2FfY2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZVxuICAgICAgZW5kXG4gIGxldCBlbmZhbnRfYV9jaGFyZ2Vfb2ZfanNvbyAoZW5mYW50X2FfY2hhcmdlIDogZW5mYW50X2FfY2hhcmdlIEpzLnQpIDpcbiAgICBFbmZhbnRBQ2hhcmdlLnQgPVxuICAgIHtcbiAgICAgIGlkZW50aWZpYW50ID0gaW50ZWdlcl9vZl9pbnQgZW5mYW50X2FfY2hhcmdlIyMuaWRlbnRpZmlhbnQ7XG4gICAgICBiZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgZW5mYW50X2FfY2hhcmdlIyMuYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudDtcbiAgICAgIGFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy50b19ib29sIGVuZmFudF9hX2NoYXJnZSMjLmFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXM7XG4gICAgICBkYXRlX2RlX25haXNzYW5jZSA9IGRhdGVfb2ZfanNvbyBlbmZhbnRfYV9jaGFyZ2UjIy5kYXRlRGVOYWlzc2FuY2U7XG4gICAgICByZW11bmVyYXRpb25fbWVuc3VlbGxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGVuZmFudF9hX2NoYXJnZSMjLnJlbXVuZXJhdGlvbk1lbnN1ZWxsZTtcbiAgICAgIG9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV9vZl9qc29vXG4gICAgICAgICAgZW5mYW50X2FfY2hhcmdlIyMub2JsaWdhdGlvblNjb2xhaXJlO1xuICAgICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlID1cbiAgICAgICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlX29mX2pzb29cbiAgICAgICAgICBlbmZhbnRfYV9jaGFyZ2UjIy5zaXR1YXRpb25HYXJkZUFsdGVybmVlXG4gICAgfVxuXG5jbGFzcyB0eXBlIHR5cGVfYmFpbGxldXIgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJCYWlsbGV1clNvY2lhbFwiXG4gICAgICAgIC0gXCJCYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWxcIlxuICAgICAgICAtIFwiQmFpbGxldXJQcml2ZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfYmFpbGxldXJfdG9fanNvbyA6IFR5cGVCYWlsbGV1ci50IC0+IHR5cGVfYmFpbGxldXIgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQmFpbGxldXJTb2NpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJCYWlsbGV1clNvY2lhbFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBCYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJCYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChjb252ZW50aW9uX2Ffbl9oX2FfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IEJhaWxsZXVyUHJpdmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJCYWlsbGV1clByaXZlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0eXBlX2JhaWxsZXVyX29mX2pzb28gKHR5cGVfYmFpbGxldXIgOiB0eXBlX2JhaWxsZXVyIEpzLnQpXG4gIDogVHlwZUJhaWxsZXVyLnQgPVxuICBtYXRjaCB0eXBlX2JhaWxsZXVyIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQmFpbGxldXJTb2NpYWxcIiAtPlxuICBUeXBlQmFpbGxldXIuQmFpbGxldXJTb2NpYWwgKGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgdHlwZV9iYWlsbGV1ciMjLnBheWxvYWQpKVxuICB8IFwiQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsXCIgLT5cbiAgVHlwZUJhaWxsZXVyLkJhaWxsZXVyUHJpdmVBdmVjQ29udmVudGlvbm5lbWVudFNvY2lhbCAoY29udmVudGlvbl9hX25faF9hX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgdHlwZV9iYWlsbGV1ciMjLnBheWxvYWQpKVxuICB8IFwiQmFpbGxldXJQcml2ZVwiIC0+IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlQmFpbGxldXIudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJOb25cIlxuICAgICAgICAtIFwiT3VpXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNfdG9fanNvb1xuICA6IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLnQgLT4gbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgTm9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTm9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgT3VpIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiT3VpXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAocGVyc29ubmVfc291c19sb2NhdGlvbl90b19qc29vIGFyZykpXG4gICAgZW5kXG5cbmxldCBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyc19vZl9qc29vXG4gIChsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyA6IGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzIEpzLnQpXG4gIDogTG91ZU91U291c0xvdWVBRGVzVGllcnMudCA9XG4gIG1hdGNoIGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiTm9uXCIgLT4gTG91ZU91U291c0xvdWVBRGVzVGllcnMuTm9uICgpXG4gIHwgXCJPdWlcIiAtPlxuICBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy5PdWkgKHBlcnNvbm5lX3NvdXNfbG9jYXRpb25fb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnTG91ZU91U291c0xvdWVBRGVzVGllcnMudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgbmF0aW9uYWxpdGUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJGcmFuY2Fpc2VcIlxuICAgICAgICAtIFwiRXRyYW5nZXJlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbmF0aW9uYWxpdGVfdG9fanNvbyA6IE5hdGlvbmFsaXRlLnQgLT4gbmF0aW9uYWxpdGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgRnJhbmNhaXNlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRnJhbmNhaXNlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRXRyYW5nZXJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRXRyYW5nZXJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoY29uZGl0aW9uc19ldHJhbmdlcnNfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbmF0aW9uYWxpdGVfb2ZfanNvbyAobmF0aW9uYWxpdGUgOiBuYXRpb25hbGl0ZSBKcy50KSA6IE5hdGlvbmFsaXRlLnQgPVxuICBtYXRjaCBuYXRpb25hbGl0ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkZyYW5jYWlzZVwiIC0+IE5hdGlvbmFsaXRlLkZyYW5jYWlzZSAoKVxuICB8IFwiRXRyYW5nZXJlXCIgLT5cbiAgTmF0aW9uYWxpdGUuRXRyYW5nZXJlIChjb25kaXRpb25zX2V0cmFuZ2Vyc19vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIG5hdGlvbmFsaXRlIyMucGF5bG9hZCkpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdOYXRpb25hbGl0ZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkNoYW5nZW1lbnRcIlxuICAgICAgICAtIFwiUGFzRGVDaGFuZ2VtZW50XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fanNvb1xuICA6IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQgLT4gY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQ2hhbmdlbWVudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNoYW5nZW1lbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgUGFzRGVDaGFuZ2VtZW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFzRGVDaGFuZ2VtZW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9vZl9qc29vXG4gIChjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCA6IGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnQpXG4gIDogQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudCA9XG4gIG1hdGNoIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQ2hhbmdlbWVudFwiIC0+XG4gIENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LkNoYW5nZW1lbnQgKGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQjIy5wYXlsb2FkKSlcbiAgfCBcIlBhc0RlQ2hhbmdlbWVudFwiIC0+IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LlBhc0RlQ2hhbmdlbWVudCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgcHJvcHJpZXRhaXJlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGxvZ2VtZW50U2l0dWVDb21tdW5lRGVzZXF1aWxpYnJlTDgzMTI6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbnN1YWxpdGVQcmluY2lwYWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNoYXJnZXNNZW5zdWVsbGVzUHJldDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRW50cmVlTG9nZW1lbnQ6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNTpcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlVHJhdmF1eExvZ2VtZW50Ujg0MjU6XG4gICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29wcm9wcmlldGU6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvblI4MjIxMTEzMTc6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFuY2llbm5ldGVMb2dlbWVudDogbmV1Zl9vdV9hbmNpZW4gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHByZXQ6IHByZXQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgcHJvcHJpZXRhaXJlX3RvX2pzb28gKHByb3ByaWV0YWlyZSA6IFByb3ByaWV0YWlyZS50KVxuICAgIDogcHJvcHJpZXRhaXJlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGxvZ2VtZW50U2l0dWVDb21tdW5lRGVzZXF1aWxpYnJlTDgzMTIgPVxuICAgICAgICBKcy5ib29sIHByb3ByaWV0YWlyZS5sb2dlbWVudF9zaXR1ZV9jb21tdW5lX2Rlc2VxdWlsaWJyZV9sODMxXzJcbiAgICAgIHZhbCBtZW5zdWFsaXRlUHJpbmNpcGFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBwcm9wcmlldGFpcmUubWVuc3VhbGl0ZV9wcmluY2lwYWxlXG4gICAgICB2YWwgY2hhcmdlc01lbnN1ZWxsZXNQcmV0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHByb3ByaWV0YWlyZS5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldFxuICAgICAgdmFsIGRhdGVFbnRyZWVMb2dlbWVudCA9IGRhdGVfdG9fanNvbyBwcm9wcmlldGFpcmUuZGF0ZV9lbnRyZWVfbG9nZW1lbnRcbiAgICAgIHZhbCB0eXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1ID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfdG9fanNvbyBwcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVcbiAgICAgIHZhbCB0eXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUgPVxuICAgICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X3RvX2pzb28gcHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVcbiAgICAgIHZhbCBsb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZSA9XG4gICAgICAgIEpzLmJvb2wgcHJvcHJpZXRhaXJlLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZVxuICAgICAgdmFsIGNvcHJvcHJpZXRlID0gSnMuYm9vbCBwcm9wcmlldGFpcmUuY29wcm9wcmlldGVcbiAgICAgIHZhbCBzaXR1YXRpb25SODIyMTExMzE3ID0gSnMuYm9vbCBwcm9wcmlldGFpcmUuc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdcbiAgICAgIHZhbCBhbmNpZW5uZXRlTG9nZW1lbnQgPVxuICAgICAgICBuZXVmX291X2FuY2llbl90b19qc29vIHByb3ByaWV0YWlyZS5hbmNpZW5uZXRlX2xvZ2VtZW50XG4gICAgICB2YWwgcHJldCA9IHByZXRfdG9fanNvbyBwcm9wcmlldGFpcmUucHJldFxuICAgICAgZW5kXG4gIGxldCBwcm9wcmlldGFpcmVfb2ZfanNvbyAocHJvcHJpZXRhaXJlIDogcHJvcHJpZXRhaXJlIEpzLnQpIDpcbiAgICBQcm9wcmlldGFpcmUudCA9XG4gICAge1xuICAgICAgbG9nZW1lbnRfc2l0dWVfY29tbXVuZV9kZXNlcXVpbGlicmVfbDgzMV8yID1cbiAgICAgICAgSnMudG9fYm9vbCBwcm9wcmlldGFpcmUjIy5sb2dlbWVudFNpdHVlQ29tbXVuZURlc2VxdWlsaWJyZUw4MzEyO1xuICAgICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHByb3ByaWV0YWlyZSMjLm1lbnN1YWxpdGVQcmluY2lwYWxlO1xuICAgICAgY2hhcmdlc19tZW5zdWVsbGVzX3ByZXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcHJvcHJpZXRhaXJlIyMuY2hhcmdlc01lbnN1ZWxsZXNQcmV0O1xuICAgICAgZGF0ZV9lbnRyZWVfbG9nZW1lbnQgPSBkYXRlX29mX2pzb28gcHJvcHJpZXRhaXJlIyMuZGF0ZUVudHJlZUxvZ2VtZW50O1xuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgPVxuICAgICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV9vZl9qc29vXG4gICAgICAgICAgcHJvcHJpZXRhaXJlIyMudHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNTtcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgPVxuICAgICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X29mX2pzb29cbiAgICAgICAgICBwcm9wcmlldGFpcmUjIy50eXBlVHJhdmF1eExvZ2VtZW50Ujg0MjU7XG4gICAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmUgPVxuICAgICAgICBKcy50b19ib29sIHByb3ByaWV0YWlyZSMjLmxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlO1xuICAgICAgY29wcm9wcmlldGUgPSBKcy50b19ib29sIHByb3ByaWV0YWlyZSMjLmNvcHJvcHJpZXRlO1xuICAgICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTcgPSBKcy50b19ib29sIHByb3ByaWV0YWlyZSMjLnNpdHVhdGlvblI4MjIxMTEzMTc7XG4gICAgICBhbmNpZW5uZXRlX2xvZ2VtZW50ID1cbiAgICAgICAgbmV1Zl9vdV9hbmNpZW5fb2ZfanNvbyBwcm9wcmlldGFpcmUjIy5hbmNpZW5uZXRlTG9nZW1lbnQ7XG4gICAgICBwcmV0ID0gcHJldF9vZl9qc29vIHByb3ByaWV0YWlyZSMjLnByZXRcbiAgICB9XG5cbmNsYXNzIHR5cGUgaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBub21icmVFbmZhbnRzQU5haXRyZUFwcmVzVHJvaXNpZW1lTW9pc0dyb3NzZXNzZTpcbiAgICAgIGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVOYWlzc2FuY2VUcm9pc2llbWVFbmZhbnRPdURlcm5pZXJTaVBsdXM6XG4gICAgICBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X3RvX2pzb29cbiAgICAoaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudCA6IEluZm9ybWF0aW9uc1ByaW1lRGVEZW1lbmFnZW1lbnQudClcbiAgICA6IGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbm9tYnJlRW5mYW50c0FOYWl0cmVBcHJlc1Ryb2lzaWVtZU1vaXNHcm9zc2Vzc2UgPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50Lm5vbWJyZV9lbmZhbnRzX2FfbmFpdHJlX2FwcmVzX3Ryb2lzaWVtZV9tb2lzX2dyb3NzZXNzZVxuICAgICAgdmFsIGRhdGVOYWlzc2FuY2VUcm9pc2llbWVFbmZhbnRPdURlcm5pZXJTaVBsdXMgPVxuICAgICAgICBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudF90b19qc29vIGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQuZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX2VuZmFudF9vdV9kZXJuaWVyX3NpX3BsdXNcbiAgICAgIGVuZFxuICBsZXQgaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vZl9qc29vXG4gICAgKGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnRcbiAgICAgIDogaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudCBKcy50KSA6XG4gICAgSW5mb3JtYXRpb25zUHJpbWVEZURlbWVuYWdlbWVudC50ID1cbiAgICB7XG4gICAgICBub21icmVfZW5mYW50c19hX25haXRyZV9hcHJlc190cm9pc2llbWVfbW9pc19ncm9zc2Vzc2UgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnRcbiAgICAgICAgICAjIy5ub21icmVFbmZhbnRzQU5haXRyZUFwcmVzVHJvaXNpZW1lTW9pc0dyb3NzZXNzZTtcbiAgICAgIGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzID1cbiAgICAgICAgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRfb2ZfanNvb1xuICAgICAgICAgIGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnRcbiAgICAgICAgICAjIy5kYXRlTmFpc3NhbmNlVHJvaXNpZW1lRW5mYW50T3VEZXJuaWVyU2lQbHVzXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZHJvaXRPdXZlcnQ6XG4gICAgICAoZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCwgIGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIGNvbmRpdGlvbnNIb3JzQWdlOlxuICAgICAgKGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQsICBib29sIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICAgIG1ldGhvZCBhZ2VMNTEyMzI6IFJ1bnRpbWVfanNvby5SdW50aW1lLmR1cmF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZWdpbWVPdXRyZU1lckw3NTExOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIDogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudClcbiAgICA6IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICBtZXRob2QgZHJvaXRPdXZlcnQgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLmJvb2wgKGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMuZHJvaXRfb3V2ZXJ0IChlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vIGlucHV0KSkpXG4gICAgICBtZXRob2QgY29uZGl0aW9uc0hvcnNBZ2UgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLmJvb2wgKGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSAoZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvbyBpbnB1dCkpKVxuICAgICAgdmFsIGFnZUw1MTIzMiA9XG4gICAgICAgIGR1cmF0aW9uX3RvX2pzb28gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5hZ2VfbDUxMl8zXzJcbiAgICAgIHZhbCByZWdpbWVPdXRyZU1lckw3NTExID1cbiAgICAgICAgSnMuYm9vbCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgICA6IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIGRyb2l0X291dmVydCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdkcm9pdF9vdXZlcnQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvbmRpdGlvbnNfaG9yc19hZ2UgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnY29uZGl0aW9uc19ob3JzX2FnZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiO1xuICAgICAgYWdlX2w1MTJfM18yID1cbiAgICAgICAgZHVyYXRpb25fb2ZfanNvbyBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMuYWdlTDUxMjMyO1xuICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzEgPVxuICAgICAgICBKcy50b19ib29sIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5yZWdpbWVPdXRyZU1lckw3NTExXG4gICAgfVxuXG5jbGFzcyB0eXBlIHBlcnNvbm5lX2FfY2hhcmdlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRW5mYW50QUNoYXJnZVwiXG4gICAgICAgIC0gXCJBdXRyZVBlcnNvbm5lQUNoYXJnZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHBlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28gOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBwZXJzb25uZV9hX2NoYXJnZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBFbmZhbnRBQ2hhcmdlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRW5mYW50QUNoYXJnZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGVuZmFudF9hX2NoYXJnZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgQXV0cmVQZXJzb25uZUFDaGFyZ2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdXRyZVBlcnNvbm5lQUNoYXJnZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcblxubGV0IHBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28gKHBlcnNvbm5lX2FfY2hhcmdlIDogcGVyc29ubmVfYV9jaGFyZ2UgSnMudClcbiAgOiBQZXJzb25uZUFDaGFyZ2UudCA9XG4gIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRW5mYW50QUNoYXJnZVwiIC0+XG4gIFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIChlbmZhbnRfYV9jaGFyZ2Vfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBwZXJzb25uZV9hX2NoYXJnZSMjLnBheWxvYWQpKVxuICB8IFwiQXV0cmVQZXJzb25uZUFDaGFyZ2VcIiAtPlxuICBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgKGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgcGVyc29ubmVfYV9jaGFyZ2UjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1BlcnNvbm5lQUNoYXJnZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBkZW1hbmRldXIgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZU5haXNzYW5jZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuYXRpb25hbGl0ZTogbmF0aW9uYWxpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBhdHJpbW9pbmU6IHBhdHJpbW9pbmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lSGViZXJnZWVDZW50cmVTb2luTEwxNjIyMjNTZWN1cml0ZVNvY2lhbGU6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGRlbWFuZGV1cl90b19qc29vIChkZW1hbmRldXIgOiBEZW1hbmRldXIudCkgOiBkZW1hbmRldXIgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZU5haXNzYW5jZSA9IGRhdGVfdG9fanNvbyBkZW1hbmRldXIuZGF0ZV9uYWlzc2FuY2VcbiAgICAgIHZhbCBuYXRpb25hbGl0ZSA9IG5hdGlvbmFsaXRlX3RvX2pzb28gZGVtYW5kZXVyLm5hdGlvbmFsaXRlXG4gICAgICB2YWwgcGF0cmltb2luZSA9IHBhdHJpbW9pbmVfdG9fanNvbyBkZW1hbmRldXIucGF0cmltb2luZVxuICAgICAgdmFsIHBlcnNvbm5lSGViZXJnZWVDZW50cmVTb2luTEwxNjIyMjNTZWN1cml0ZVNvY2lhbGUgPVxuICAgICAgICBKcy5ib29sIGRlbWFuZGV1ci5wZXJzb25uZV9oZWJlcmdlZV9jZW50cmVfc29pbl9sX0wxNjJfMjJfM19zZWN1cml0ZV9zb2NpYWxlXG4gICAgICBlbmRcbiAgbGV0IGRlbWFuZGV1cl9vZl9qc29vIChkZW1hbmRldXIgOiBkZW1hbmRldXIgSnMudCkgOiBEZW1hbmRldXIudCA9XG4gICAge1xuICAgICAgZGF0ZV9uYWlzc2FuY2UgPSBkYXRlX29mX2pzb28gZGVtYW5kZXVyIyMuZGF0ZU5haXNzYW5jZTtcbiAgICAgIG5hdGlvbmFsaXRlID0gbmF0aW9uYWxpdGVfb2ZfanNvbyBkZW1hbmRldXIjIy5uYXRpb25hbGl0ZTtcbiAgICAgIHBhdHJpbW9pbmUgPSBwYXRyaW1vaW5lX29mX2pzb28gZGVtYW5kZXVyIyMucGF0cmltb2luZTtcbiAgICAgIHBlcnNvbm5lX2hlYmVyZ2VlX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3NlY3VyaXRlX3NvY2lhbGUgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgZGVtYW5kZXVyIyMucGVyc29ubmVIZWJlcmdlZUNlbnRyZVNvaW5MTDE2MjIyM1NlY3VyaXRlU29jaWFsZVxuICAgIH1cblxuY2xhc3MgdHlwZSBsb2NhdGlvbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBiYWlsbGV1cjogdHlwZV9iYWlsbGV1ciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG95ZXJQcmluY2lwYWw6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvZ2VtZW50RXN0Q2hhbWJyZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29sb2NhdGlvbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnM6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudE1ldWJsZUQ4NDIyOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjaGFuZ2VtZW50TG9nZW1lbnREODQyNDpcbiAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGxvY2F0aW9uX3RvX2pzb28gKGxvY2F0aW9uIDogTG9jYXRpb24udCkgOiBsb2NhdGlvbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBiYWlsbGV1ciA9IHR5cGVfYmFpbGxldXJfdG9fanNvbyBsb2NhdGlvbi5iYWlsbGV1clxuICAgICAgdmFsIGxveWVyUHJpbmNpcGFsID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGxvY2F0aW9uLmxveWVyX3ByaW5jaXBhbFxuICAgICAgdmFsIGJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXMgPVxuICAgICAgICBKcy5ib29sIGxvY2F0aW9uLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc1xuICAgICAgdmFsIGxvZ2VtZW50RXN0Q2hhbWJyZSA9IEpzLmJvb2wgbG9jYXRpb24ubG9nZW1lbnRfZXN0X2NoYW1icmVcbiAgICAgIHZhbCBjb2xvY2F0aW9uID0gSnMuYm9vbCBsb2NhdGlvbi5jb2xvY2F0aW9uXG4gICAgICB2YWwgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnMgPVxuICAgICAgICBKcy5ib29sIGxvY2F0aW9uLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXG4gICAgICB2YWwgbG9nZW1lbnRNZXVibGVEODQyMiA9IEpzLmJvb2wgbG9jYXRpb24ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMlxuICAgICAgdmFsIGNoYW5nZW1lbnRMb2dlbWVudEQ4NDI0ID1cbiAgICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fanNvbyBsb2NhdGlvbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNFxuICAgICAgZW5kXG4gIGxldCBsb2NhdGlvbl9vZl9qc29vIChsb2NhdGlvbiA6IGxvY2F0aW9uIEpzLnQpIDogTG9jYXRpb24udCA9XG4gICAge1xuICAgICAgYmFpbGxldXIgPSB0eXBlX2JhaWxsZXVyX29mX2pzb28gbG9jYXRpb24jIy5iYWlsbGV1cjtcbiAgICAgIGxveWVyX3ByaW5jaXBhbCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBsb2NhdGlvbiMjLmxveWVyUHJpbmNpcGFsO1xuICAgICAgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzID1cbiAgICAgICAgSnMudG9fYm9vbCBsb2NhdGlvbiMjLmJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXM7XG4gICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZSA9IEpzLnRvX2Jvb2wgbG9jYXRpb24jIy5sb2dlbWVudEVzdENoYW1icmU7XG4gICAgICBjb2xvY2F0aW9uID0gSnMudG9fYm9vbCBsb2NhdGlvbiMjLmNvbG9jYXRpb247XG4gICAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVycyA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBsb2NhdGlvbiMjLmFnZWVzT3VIYW5kaWNhcEFkdWx0ZXNIZWJlcmdlZXNPbmVyZXV4UGFydGljdWxpZXJzO1xuICAgICAgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMiA9IEpzLnRvX2Jvb2wgbG9jYXRpb24jIy5sb2dlbWVudE1ldWJsZUQ4NDIyO1xuICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgPVxuICAgICAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9vZl9qc29vIGxvY2F0aW9uIyMuY2hhbmdlbWVudExvZ2VtZW50RDg0MjRcbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVsaWdpYmlsaXRlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGU6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGU6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29uZGl0aW9uMlI4MjM0OlxuICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlIEpzLnQsICBib29sIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICA6IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGUgPVxuICAgICAgICBkYXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQuZGF0ZV9jb3VyYW50ZVxuICAgICAgdmFsIGVsaWdpYmlsaXRlID1cbiAgICAgICAgSnMuYm9vbCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudC5lbGlnaWJpbGl0ZVxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZSA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVxuICAgICAgdmFsIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGUgPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IHgpIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVcbiAgICAgIG1ldGhvZCBjb25kaXRpb24yUjgyMzQgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLmJvb2wgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50LmNvbmRpdGlvbl8yX3I4MjNfNCAocGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvbyBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IyMuZGF0ZUNvdXJhbnRlO1xuICAgICAgZWxpZ2liaWxpdGUgPVxuICAgICAgICBKcy50b19ib29sIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IyMuZWxpZ2liaWxpdGU7XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICAgICAgIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlO1xuICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgeCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgICAgICMjLmNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGU7XG4gICAgICBjb25kaXRpb25fMl9yODIzXzQgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnY29uZGl0aW9uXzJfcjgyM180JyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkxvY2F0aW9uXCJcbiAgICAgICAgLSBcIkFjY2Vzc2lvblByb3ByaWV0ZVwiXG4gICAgICAgIC0gXCJMb2dlbWVudEZveWVyXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbF90b19qc29vXG4gIDogQ2F0ZWdvcmllQ2FsY3VsQVBMLnQgLT4gY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBMb2NhdGlvbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxvY2F0aW9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAobG9jYXRpb25fdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IEFjY2Vzc2lvblByb3ByaWV0ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFjY2Vzc2lvblByb3ByaWV0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHByb3ByaWV0YWlyZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgTG9nZW1lbnRGb3llciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxvZ2VtZW50Rm95ZXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChsb2dlbWVudF9mb3llcl90b19qc29vIGFyZykpXG4gICAgZW5kXG5cbmxldCBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgKGNhdGVnb3JpZV9jYWxjdWxfYV9wX2wgOiBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sIEpzLnQpXG4gIDogQ2F0ZWdvcmllQ2FsY3VsQVBMLnQgPVxuICBtYXRjaCBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiTG9jYXRpb25cIiAtPlxuICBDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gKGxvY2F0aW9uX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCMjLnBheWxvYWQpKVxuICB8IFwiQWNjZXNzaW9uUHJvcHJpZXRlXCIgLT5cbiAgQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSAocHJvcHJpZXRhaXJlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCMjLnBheWxvYWQpKVxuICB8IFwiTG9nZW1lbnRGb3llclwiIC0+XG4gIENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIChsb2dlbWVudF9mb3llcl9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIGNhdGVnb3JpZV9jYWxjdWxfYV9wX2wjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NhdGVnb3JpZUNhbGN1bEFQTC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBtb2RlX29jY3VwYXRpb24gPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJMb2NhdGFpcmVcIlxuICAgICAgICAtIFwiUmVzaWRlbnRMb2dlbWVudEZveWVyXCJcbiAgICAgICAgLSBcIkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb25cIlxuICAgICAgICAtIFwiU291c0xvY2F0YWlyZVwiXG4gICAgICAgIC0gXCJMb2NhdGlvbkFjY2Vzc2lvblwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IG1vZGVfb2NjdXBhdGlvbl90b19qc29vIDogTW9kZU9jY3VwYXRpb24udCAtPiBtb2RlX29jY3VwYXRpb24gSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgTG9jYXRhaXJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG9jYXRhaXJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAobG9jYXRpb25fdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IFJlc2lkZW50TG9nZW1lbnRGb3llciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlJlc2lkZW50TG9nZW1lbnRGb3llclwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGxvZ2VtZW50X2ZveWVyX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBBY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHByb3ByaWV0YWlyZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgU291c0xvY2F0YWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNvdXNMb2NhdGFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChsb2NhdGlvbl90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgTG9jYXRpb25BY2Nlc3Npb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJMb2NhdGlvbkFjY2Vzc2lvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHByb3ByaWV0YWlyZV90b19qc29vIGFyZykpXG4gICAgZW5kXG5cbmxldCBtb2RlX29jY3VwYXRpb25fb2ZfanNvbyAobW9kZV9vY2N1cGF0aW9uIDogbW9kZV9vY2N1cGF0aW9uIEpzLnQpXG4gIDogTW9kZU9jY3VwYXRpb24udCA9XG4gIG1hdGNoIG1vZGVfb2NjdXBhdGlvbiMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkxvY2F0YWlyZVwiIC0+XG4gIE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSAobG9jYXRpb25fb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBcIlJlc2lkZW50TG9nZW1lbnRGb3llclwiIC0+XG4gIE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciAobG9nZW1lbnRfZm95ZXJfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBcIkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb25cIiAtPlxuICBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIChwcm9wcmlldGFpcmVfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBcIlNvdXNMb2NhdGFpcmVcIiAtPlxuICBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIChsb2NhdGlvbl9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIG1vZGVfb2NjdXBhdGlvbiMjLnBheWxvYWQpKVxuICB8IFwiTG9jYXRpb25BY2Nlc3Npb25cIiAtPlxuICBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiAocHJvcHJpZXRhaXJlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgbW9kZV9vY2N1cGF0aW9uIyMucGF5bG9hZCkpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdNb2RlT2NjdXBhdGlvbi50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBsb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCByZXNpZGVuY2VQcmluY2lwYWxlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlc3RFaHBhZE91TWFpc29uQXV0b25vbWllTDMxMzEyQXNmOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb2RlT2NjdXBhdGlvbjogbW9kZV9vY2N1cGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwcm9wcmlldGFpcmU6IHBhcmVudF9vdV9hdXRyZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG91ZU91U291c0xvdWVBRGVzVGllcnM6XG4gICAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdXN1ZnJ1aXQ6IHBhcmVudF9vdV9hdXRyZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnREZWNlbnRMODk0NjI6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHN1cmZhY2VNQ2FycmVzOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBsb2dlbWVudF90b19qc29vIChsb2dlbWVudCA6IExvZ2VtZW50LnQpIDogbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgcmVzaWRlbmNlUHJpbmNpcGFsZSA9IEpzLmJvb2wgbG9nZW1lbnQucmVzaWRlbmNlX3ByaW5jaXBhbGVcbiAgICAgIHZhbCBlc3RFaHBhZE91TWFpc29uQXV0b25vbWllTDMxMzEyQXNmID1cbiAgICAgICAgSnMuYm9vbCBsb2dlbWVudC5lc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZlxuICAgICAgdmFsIG1vZGVPY2N1cGF0aW9uID0gbW9kZV9vY2N1cGF0aW9uX3RvX2pzb28gbG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uXG4gICAgICB2YWwgcHJvcHJpZXRhaXJlID0gcGFyZW50X291X2F1dHJlX3RvX2pzb28gbG9nZW1lbnQucHJvcHJpZXRhaXJlXG4gICAgICB2YWwgbG91ZU91U291c0xvdWVBRGVzVGllcnMgPVxuICAgICAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyc190b19qc29vIGxvZ2VtZW50LmxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXG4gICAgICB2YWwgdXN1ZnJ1aXQgPSBwYXJlbnRfb3VfYXV0cmVfdG9fanNvbyBsb2dlbWVudC51c3VmcnVpdFxuICAgICAgdmFsIGxvZ2VtZW50RGVjZW50TDg5NDYyID0gSnMuYm9vbCBsb2dlbWVudC5sb2dlbWVudF9kZWNlbnRfbDg5XzQ2MlxuICAgICAgdmFsIHN1cmZhY2VNQ2FycmVzID0gaW50ZWdlcl90b19pbnQgbG9nZW1lbnQuc3VyZmFjZV9tX2NhcnJlc1xuICAgICAgdmFsIHpvbmUgPSB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGxvZ2VtZW50LnpvbmVcbiAgICAgIGVuZFxuICBsZXQgbG9nZW1lbnRfb2ZfanNvbyAobG9nZW1lbnQgOiBsb2dlbWVudCBKcy50KSA6IExvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIHJlc2lkZW5jZV9wcmluY2lwYWxlID0gSnMudG9fYm9vbCBsb2dlbWVudCMjLnJlc2lkZW5jZVByaW5jaXBhbGU7XG4gICAgICBlc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZiA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbG9nZW1lbnQjIy5lc3RFaHBhZE91TWFpc29uQXV0b25vbWllTDMxMzEyQXNmO1xuICAgICAgbW9kZV9vY2N1cGF0aW9uID0gbW9kZV9vY2N1cGF0aW9uX29mX2pzb28gbG9nZW1lbnQjIy5tb2RlT2NjdXBhdGlvbjtcbiAgICAgIHByb3ByaWV0YWlyZSA9IHBhcmVudF9vdV9hdXRyZV9vZl9qc29vIGxvZ2VtZW50IyMucHJvcHJpZXRhaXJlO1xuICAgICAgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgPVxuICAgICAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyc19vZl9qc29vXG4gICAgICAgICAgbG9nZW1lbnQjIy5sb3VlT3VTb3VzTG91ZUFEZXNUaWVycztcbiAgICAgIHVzdWZydWl0ID0gcGFyZW50X291X2F1dHJlX29mX2pzb28gbG9nZW1lbnQjIy51c3VmcnVpdDtcbiAgICAgIGxvZ2VtZW50X2RlY2VudF9sODlfNDYyID0gSnMudG9fYm9vbCBsb2dlbWVudCMjLmxvZ2VtZW50RGVjZW50TDg5NDYyO1xuICAgICAgc3VyZmFjZV9tX2NhcnJlcyA9IGludGVnZXJfb2ZfaW50IGxvZ2VtZW50IyMuc3VyZmFjZU1DYXJyZXM7XG4gICAgICB6b25lID0gem9uZV9kX2hhYml0YXRpb25fb2ZfanNvbyBsb2dlbWVudCMjLnpvbmVcbiAgICB9XG5cbmNsYXNzIHR5cGUgbWVuYWdlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHByZXN0YXRpb25zUmVjdWVzOlxuICAgICAgcHJlc3RhdGlvbl9yZWN1ZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudDogbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lc0FDaGFyZ2U6XG4gICAgICBwZXJzb25uZV9hX2NoYXJnZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVBdXRyZXNPY2N1cGFudHNMb2dlbWVudDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlOiBzaXR1YXRpb25fZmFtaWxpYWxlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb25SYXR0YWNoZUZveWVyRmlzY2FsUGFyZW50SWZpOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlbmZhbnRBTmFpdHJlQXByZXNRdWF0cmllbWVNb2lzR3Jvc3Nlc3NlOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBtZW5hZ2VfdG9fanNvbyAobWVuYWdlIDogTWVuYWdlLnQpIDogbWVuYWdlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHByZXN0YXRpb25zUmVjdWVzID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBwcmVzdGF0aW9uX3JlY3VlX3RvX2pzb28geCkgbWVuYWdlLnByZXN0YXRpb25zX3JlY3Vlc1xuICAgICAgdmFsIGxvZ2VtZW50ID0gbG9nZW1lbnRfdG9fanNvbyBtZW5hZ2UubG9nZW1lbnRcbiAgICAgIHZhbCBwZXJzb25uZXNBQ2hhcmdlID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBwZXJzb25uZV9hX2NoYXJnZV90b19qc29vIHgpIG1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2VcbiAgICAgIHZhbCBub21icmVBdXRyZXNPY2N1cGFudHNMb2dlbWVudCA9XG4gICAgICAgIGludGVnZXJfdG9faW50IG1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudFxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZSA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvbyBtZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZVxuICAgICAgdmFsIGNvbmRpdGlvblJhdHRhY2hlRm95ZXJGaXNjYWxQYXJlbnRJZmkgPVxuICAgICAgICBKcy5ib29sIG1lbmFnZS5jb25kaXRpb25fcmF0dGFjaGVfZm95ZXJfZmlzY2FsX3BhcmVudF9pZmlcbiAgICAgIHZhbCBlbmZhbnRBTmFpdHJlQXByZXNRdWF0cmllbWVNb2lzR3Jvc3Nlc3NlID1cbiAgICAgICAgSnMuYm9vbCBtZW5hZ2UuZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZVxuICAgICAgZW5kXG4gIGxldCBtZW5hZ2Vfb2ZfanNvbyAobWVuYWdlIDogbWVuYWdlIEpzLnQpIDogTWVuYWdlLnQgPVxuICAgIHtcbiAgICAgIHByZXN0YXRpb25zX3JlY3VlcyA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gcHJlc3RhdGlvbl9yZWN1ZV9vZl9qc29vIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgbWVuYWdlIyMucHJlc3RhdGlvbnNSZWN1ZXM7XG4gICAgICBsb2dlbWVudCA9IGxvZ2VtZW50X29mX2pzb28gbWVuYWdlIyMubG9nZW1lbnQ7XG4gICAgICBwZXJzb25uZXNfYV9jaGFyZ2UgPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IHBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBtZW5hZ2UjIy5wZXJzb25uZXNBQ2hhcmdlO1xuICAgICAgbm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnQgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludCBtZW5hZ2UjIy5ub21icmVBdXRyZXNPY2N1cGFudHNMb2dlbWVudDtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX29mX2pzb28gbWVuYWdlIyMuc2l0dWF0aW9uRmFtaWxpYWxlO1xuICAgICAgY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpID1cbiAgICAgICAgSnMudG9fYm9vbCBtZW5hZ2UjIy5jb25kaXRpb25SYXR0YWNoZUZveWVyRmlzY2FsUGFyZW50SWZpO1xuICAgICAgZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbWVuYWdlIyMuZW5mYW50QU5haXRyZUFwcmVzUXVhdHJpZW1lTW9pc0dyb3NzZXNzZVxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtZW5hZ2VJbjogbWVuYWdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJJbjogZGVtYW5kZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb25Mb2dlbWVudFJlc2lkZW5jZVByaW5jaXBhbGVJbjpcbiAgICAgICh1bml0LCAgYm9vbCBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgICBtZXRob2QgY29uZGl0aW9uTG9nZW1lbnRTdXJmYWNlSW46XG4gICAgICAodW5pdCwgIGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgIDogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KVxuICAgIDogZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbWVuYWdlSW4gPVxuICAgICAgICBtZW5hZ2VfdG9fanNvbyBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5tZW5hZ2VfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJJbiA9XG4gICAgICAgIGRlbWFuZGV1cl90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIG1ldGhvZCBjb25kaXRpb25Mb2dlbWVudFJlc2lkZW5jZVByaW5jaXBhbGVJbiA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMuYm9vbCAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luICggaW5wdXQpKSlcbiAgICAgIG1ldGhvZCBjb25kaXRpb25Mb2dlbWVudFN1cmZhY2VJbiA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMuYm9vbCAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4gKCBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1lbmFnZV9pbiA9XG4gICAgICAgIG1lbmFnZV9vZl9qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbiA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfaW4nIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1lbmFnZUluOiBtZW5hZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbWFuZGV1ckluOiBkZW1hbmRldXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgOiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50KVxuICAgIDogZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbmFnZUluID1cbiAgICAgICAgbWVuYWdlX3RvX2pzb28gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLm1lbmFnZV9pblxuICAgICAgdmFsIGRlbWFuZGV1ckluID1cbiAgICAgICAgZGVtYW5kZXVyX3RvX2pzb28gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgICAgOiBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1lbmFnZV9pbiA9XG4gICAgICAgIG1lbmFnZV9vZl9qc29vIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLm1lbmFnZUluO1xuICAgICAgZGVtYW5kZXVyX2luID1cbiAgICAgICAgZGVtYW5kZXVyX29mX2pzb29cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5kZW1hbmRldXJJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbmFnZUluOiBtZW5hZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbWFuZGV1ckluOiBkZW1hbmRldXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiA6IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4udClcbiAgICA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgbWVuYWdlSW4gPVxuICAgICAgICBtZW5hZ2VfdG9fanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLm1lbmFnZV9pblxuICAgICAgdmFsIGRlbWFuZGV1ckluID1cbiAgICAgICAgZGVtYW5kZXVyX3RvX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5kZW1hbmRldXJfaW5cbiAgICAgIHZhbCBiZW5lZmljaWVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4gPVxuICAgICAgICBKcy5ib29sIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pblxuICAgICAgOiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgbWVuYWdlX2luID1cbiAgICAgICAgbWVuYWdlX29mX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLm1lbmFnZUluO1xuICAgICAgZGVtYW5kZXVyX2luID1cbiAgICAgICAgZGVtYW5kZXVyX29mX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLmRlbWFuZGV1ckluO1xuICAgICAgYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMuYmVuZWZpY2llQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbmZvcm1hdGlvbnNJbjpcbiAgICAgIGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVFbW1lbmFnZW1lbnRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtZW5hZ2VJbjogbWVuYWdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJJbjogZGVtYW5kZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZXBlbnNlc0p1c3RpZmllZXNSZWVsbGVtZW50RW5nYWdlZXNJbjpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW5fdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW5cbiAgICA6IEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaW5mb3JtYXRpb25zSW4gPVxuICAgICAgICBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X3RvX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLmluZm9ybWF0aW9uc19pblxuICAgICAgdmFsIGRhdGVFbW1lbmFnZW1lbnRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uZGF0ZV9lbW1lbmFnZW1lbnRfaW5cbiAgICAgIHZhbCBtZW5hZ2VJbiA9XG4gICAgICAgIG1lbmFnZV90b19qc29vIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5tZW5hZ2VfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJJbiA9XG4gICAgICAgIGRlbWFuZGV1cl90b19qc29vIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5kZW1hbmRldXJfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIGRlcGVuc2VzSnVzdGlmaWVlc1JlZWxsZW1lbnRFbmdhZ2Vlc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5kZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfaW5cbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luX29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luXG4gICAgICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiBKcy50KSA6XG4gICAgRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgaW5mb3JtYXRpb25zX2luID1cbiAgICAgICAgaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIyMuaW5mb3JtYXRpb25zSW47XG4gICAgICBkYXRlX2VtbWVuYWdlbWVudF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiMjLmRhdGVFbW1lbmFnZW1lbnRJbjtcbiAgICAgIG1lbmFnZV9pbiA9XG4gICAgICAgIG1lbmFnZV9vZl9qc29vIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiMjLm1lbmFnZUluO1xuICAgICAgZGVtYW5kZXVyX2luID1cbiAgICAgICAgZGVtYW5kZXVyX29mX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pblxuICAgICAgICAgICMjLmRlcGVuc2VzSnVzdGlmaWVlc1JlZWxsZW1lbnRFbmdhZ2Vlc0luXG4gICAgfVxuXG5jbGFzcyB0eXBlIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgcmVzc291cmNlc0RlbWFuZGV1ckluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXNDb25qb2ludEluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lc1ZpdmFudEhhYml0dWVsbGVtZW50Rm95ZXJJbjpcbiAgICAgIHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llciBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJFeGVyY2VBY3Rpdml0ZVJlbXVuZXJlZUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25qb2ludEV4ZXJjZUFjdGl2aXRlUmVtdW5lcmVlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lc0FDaGFyZ2VJbjpcbiAgICAgIHBlcnNvbm5lX2FfY2hhcmdlIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUluOiBzaXR1YXRpb25fZmFtaWxpYWxlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb2RlT2NjdXBhdGlvbkluOiBtb2RlX29jY3VwYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbmRpdGlvbkFnZUJvdXJzZUVuc2VpZ25lbWVudFN1cGVyaWV1ckluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVtYW5kZXVyUG91cnN1aXREZXNFdHVkZXNJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZURlbWFuZGVPdVJlZXhhbWVuRHJvaXRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsSW46XG4gICAgICBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzQmFzZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl90b19qc29vXG4gICAgKHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICA6IFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KVxuICAgIDogcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNzb3VyY2VzRGVtYW5kZXVySW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5yZXNzb3VyY2VzX2RlbWFuZGV1cl9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNDb25qb2ludEluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ucmVzc291cmNlc19jb25qb2ludF9pblxuICAgICAgdmFsIHBlcnNvbm5lc1ZpdmFudEhhYml0dWVsbGVtZW50Rm95ZXJJbiA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyX3RvX2pzb28geCkgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5wZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyX2luXG4gICAgICB2YWwgZGVtYW5kZXVyRXhlcmNlQWN0aXZpdGVSZW11bmVyZWVJbiA9XG4gICAgICAgIEpzLmJvb2wgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5kZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9pblxuICAgICAgdmFsIGNvbmpvaW50RXhlcmNlQWN0aXZpdGVSZW11bmVyZWVJbiA9XG4gICAgICAgIEpzLmJvb2wgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5jb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luXG4gICAgICB2YWwgcGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBwZXJzb25uZV9hX2NoYXJnZV90b19qc29vIHgpIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ucGVyc29ubmVzX2FfY2hhcmdlX2luXG4gICAgICB2YWwgc2l0dWF0aW9uRmFtaWxpYWxlSW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX3RvX2pzb28gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luXG4gICAgICB2YWwgbW9kZU9jY3VwYXRpb25JbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl90b19qc29vIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ubW9kZV9vY2N1cGF0aW9uX2luXG4gICAgICB2YWwgY29uZGl0aW9uQWdlQm91cnNlRW5zZWlnbmVtZW50U3VwZXJpZXVySW4gPVxuICAgICAgICBKcy5ib29sIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pblxuICAgICAgdmFsIGRlbWFuZGV1clBvdXJzdWl0RGVzRXR1ZGVzSW4gPVxuICAgICAgICBKcy5ib29sIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXNfaW5cbiAgICAgIHZhbCBkYXRlRGVtYW5kZU91UmVleGFtZW5Ecm9pdEluID1cbiAgICAgICAgZGF0ZV90b19qc29vIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luXG4gICAgICB2YWwgcGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbEluID1cbiAgICAgICAgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF90b19qc29vIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ucGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNCYXNlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pblxuICAgICAgZW5kXG4gIGxldCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAocmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgOiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgcmVzc291cmNlc19kZW1hbmRldXJfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiMjLnJlc3NvdXJjZXNEZW1hbmRldXJJbjtcbiAgICAgIHJlc3NvdXJjZXNfY29uam9pbnRfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiMjLnJlc3NvdXJjZXNDb25qb2ludEluO1xuICAgICAgcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl9pbiA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyX29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMucGVyc29ubmVzVml2YW50SGFiaXR1ZWxsZW1lbnRGb3llckluO1xuICAgICAgZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLmRlbWFuZGV1ckV4ZXJjZUFjdGl2aXRlUmVtdW5lcmVlSW47XG4gICAgICBjb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5jb25qb2ludEV4ZXJjZUFjdGl2aXRlUmVtdW5lcmVlSW47XG4gICAgICBwZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IHBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMucGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvb1xuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4jIy5zaXR1YXRpb25GYW1pbGlhbGVJbjtcbiAgICAgIG1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl9vZl9qc29vXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiMjLm1vZGVPY2N1cGF0aW9uSW47XG4gICAgICBjb25kaXRpb25fYWdlX2JvdXJzZV9lbnNlaWduZW1lbnRfc3VwZXJpZXVyX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5jb25kaXRpb25BZ2VCb3Vyc2VFbnNlaWduZW1lbnRTdXBlcmlldXJJbjtcbiAgICAgIGRlbWFuZGV1cl9wb3Vyc3VpdF9kZXNfZXR1ZGVzX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5kZW1hbmRldXJQb3Vyc3VpdERlc0V0dWRlc0luO1xuICAgICAgZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLmRhdGVEZW1hbmRlT3VSZWV4YW1lbkRyb2l0SW47XG4gICAgICBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsX2luID1cbiAgICAgICAgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9vZl9qc29vXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLnBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWxJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzQmFzZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gPVxuICBvYmplY3QgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl90b19qc29vXG4gICAgKGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICA6IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpXG4gICAgOiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgZW5kXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgOiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLmRhdGVDb3VyYW50ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBsb3llclByaW5jaXBhbEJhc2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudEVzdENoYW1icmVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVBaWRlSW46IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbG9jYXRpb25JbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnRNZXVibGVEODQyMkluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50KVxuICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGxveWVyUHJpbmNpcGFsQmFzZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5sb3llcl9wcmluY2lwYWxfYmFzZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICB2YWwgem9uZUluID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uem9uZV9pblxuICAgICAgdmFsIGxvZ2VtZW50RXN0Q2hhbWJyZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW5cbiAgICAgIHZhbCBhZ2Vlc091SGFuZGljYXBBZHVsdGVzSGViZXJnZWVzT25lcmV1eFBhcnRpY3VsaWVyc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW5cbiAgICAgIHZhbCB0eXBlQWlkZUluID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi50eXBlX2FpZGVfaW5cbiAgICAgIHZhbCBjb2xvY2F0aW9uSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5jb2xvY2F0aW9uX2luXG4gICAgICB2YWwgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luXG4gICAgICB2YWwgbG9nZW1lbnRNZXVibGVEODQyMkluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnQgPVxuICAgIHtcbiAgICAgIGxveWVyX3ByaW5jaXBhbF9iYXNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmxveWVyUHJpbmNpcGFsQmFzZUluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjtcbiAgICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5iZW5lZmljaWFpcmVBaWRlQWR1bHRlT3VFbmZhbnRIYW5kaWNhcGVzSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLnpvbmVJbjtcbiAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmxvZ2VtZW50RXN0Q2hhbWJyZUluO1xuICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjtcbiAgICAgIHR5cGVfYWlkZV9pbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLnR5cGVBaWRlSW47XG4gICAgICBjb2xvY2F0aW9uX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmNvbG9jYXRpb25JbjtcbiAgICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLnJlZHVjdGlvbkxveWVyU29saWRhcml0ZUluO1xuICAgICAgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5sb2dlbWVudE1ldWJsZUQ4NDIySW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb24yRHU4MzIyNUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuTm9tYnJlUGFydHNEODMyMjVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbl90b19qc29vXG4gICAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pblxuICAgIDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4udClcbiAgICA6IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIGNvbmRpdGlvbjJEdTgzMjI1SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW5cbiAgICAgIHZhbCBuTm9tYnJlUGFydHNEODMyMjVJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pblxuICAgICAgOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gSnMudCkgOlxuICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnQgPVxuICAgIHtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4jIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW47XG4gICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICBKcy50b19ib29sIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiMjLmNvbmRpdGlvbjJEdTgzMjI1SW47XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4jIy5uTm9tYnJlUGFydHNEODMyMjVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgY29uZGl0aW9uMkR1ODMyMjVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgIDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi50KVxuICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvbmRpdGlvbjJEdTgzMjI1SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4gSnMudCkgOlxuICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4udCA9XG4gICAge1xuICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgSnMudG9fYm9vbCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4jIy5jb25kaXRpb24yRHU4MzIyNUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgdHlwZUxvZ2VtZW50Rm95ZXJJbjogdHlwZV9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvbnZlbnRpb25uZW1lbnRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZWRldmFuY2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb24yRHU4MzIyNUluOiAodW5pdCwgIGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIG5Ob21icmVQYXJ0c0Q4MzIyNUluOlxuICAgICAgKHVuaXQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5cbiAgICA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHR5cGVMb2dlbWVudEZveWVySW4gPVxuICAgICAgICB0eXBlX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICB2YWwgZGF0ZUNvbnZlbnRpb25uZW1lbnRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLmRhdGVfY29udmVudGlvbm5lbWVudF9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi56b25lX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVkZXZhbmNlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5yZWRldmFuY2VfaW5cbiAgICAgIG1ldGhvZCBjb25kaXRpb24yRHU4MzIyNUluID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5ib29sIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiAoIGlucHV0KSkpXG4gICAgICBtZXRob2Qgbk5vbWJyZVBhcnRzRDgzMjI1SW4gPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gKCBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luX29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50ID1cbiAgICB7XG4gICAgICB0eXBlX2xvZ2VtZW50X2ZveWVyX2luID1cbiAgICAgICAgdHlwZV9sb2dlbWVudF9mb3llcl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiMjLnR5cGVMb2dlbWVudEZveWVySW47XG4gICAgICBkYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICAgICAgIyMuZGF0ZUNvbnZlbnRpb25uZW1lbnRJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0luO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4jIy56b25lSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVkZXZhbmNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4jIy5yZWRldmFuY2VJbjtcbiAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdjb25kaXRpb25fMl9kdV84MzJfMjVfaW4nIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnbl9ub21icmVfcGFydHNfZDgzMl8yNV9pbicgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW46IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluOlxuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luX3RvX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgOiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnQpXG4gICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpIDpcbiAgICBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnQgPVxuICAgIHtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5zaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbWVuc3VhbGl0ZVByaW5jaXBhbGVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlVHJhdmF1eExvZ2VtZW50SW46XG4gICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZVNpZ25hdHVyZVByZXRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRW50cmVlTG9nZW1lbnRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb3Byb3ByaWV0ZUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25SODIyMTExMzE3SW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHpvbmVJbjogem9uZV9kX2hhYml0YXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVQcmV0SW46IHR5cGVfcHJldCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYW5jaWVubmV0ZUxvZ2VtZW50SW46IG5ldWZfb3VfYW5jaWVuIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbWVuc3VhbGl0ZVByaW5jaXBhbGVJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICB2YWwgdHlwZVRyYXZhdXhMb2dlbWVudEluID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luXG4gICAgICB2YWwgZGF0ZVNpZ25hdHVyZVByZXRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pblxuICAgICAgdmFsIGxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW5cbiAgICAgIHZhbCBkYXRlRW50cmVlTG9nZW1lbnRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW5cbiAgICAgIHZhbCBjb3Byb3ByaWV0ZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uY29wcm9wcmlldGVfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25SODIyMTExMzE3SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnpvbmVfaW5cbiAgICAgIHZhbCB0eXBlUHJldEluID1cbiAgICAgICAgdHlwZV9wcmV0X3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnR5cGVfcHJldF9pblxuICAgICAgdmFsIGFuY2llbm5ldGVMb2dlbWVudEluID1cbiAgICAgICAgbmV1Zl9vdV9hbmNpZW5fdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uYW5jaWVubmV0ZV9sb2dlbWVudF9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50ID1cbiAgICB7XG4gICAgICBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubWVuc3VhbGl0ZVByaW5jaXBhbGVJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW4gPVxuICAgICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMudHlwZVRyYXZhdXhMb2dlbWVudEluO1xuICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmRhdGVTaWduYXR1cmVQcmV0SW47XG4gICAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmVJbjtcbiAgICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuZGF0ZUVudHJlZUxvZ2VtZW50SW47XG4gICAgICBjb3Byb3ByaWV0ZV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5jb3Byb3ByaWV0ZUluO1xuICAgICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uUjgyMjExMTMxN0luO1xuICAgICAgem9uZV9pbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4jIy56b25lSW47XG4gICAgICB0eXBlX3ByZXRfaW4gPVxuICAgICAgICB0eXBlX3ByZXRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnR5cGVQcmV0SW47XG4gICAgICBhbmNpZW5uZXRlX2xvZ2VtZW50X2luID1cbiAgICAgICAgbmV1Zl9vdV9hbmNpZW5fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmFuY2llbm5ldGVMb2dlbWVudEluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmRhdGVDb3VyYW50ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbW9kZU9jY3VwYXRpb25JbjogbW9kZV9vY2N1cGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlQWlkZUluOiB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVJbjogc2l0dWF0aW9uX2ZhbWlsaWFsZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9kZU9jY3VwYXRpb25JbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4ubW9kZV9vY2N1cGF0aW9uX2luXG4gICAgICB2YWwgdHlwZUFpZGVJbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLnR5cGVfYWlkZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VTYW5zQXJyb25kaUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luXG4gICAgICB2YWwgc2l0dWF0aW9uRmFtaWxpYWxlSW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luXG4gICAgICB2YWwgem9uZUluID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLnpvbmVfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLm1vZGVPY2N1cGF0aW9uSW47XG4gICAgICB0eXBlX2FpZGVfaW4gPVxuICAgICAgICB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIyMudHlwZUFpZGVJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZVNhbnNBcnJvbmRpSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLnNpdHVhdGlvbkZhbWlsaWFsZUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHpvbmVfaW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLnpvbmVJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLmRhdGVDb3VyYW50ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbG95ZXJQcmluY2lwYWxJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudEVzdENoYW1icmVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVBaWRlSW46IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbG9jYXRpb25JbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnRNZXVibGVEODQyMkluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjaGFuZ2VtZW50TG9nZW1lbnREODQyNEluOlxuICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBsb3llclByaW5jaXBhbEluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG95ZXJfcHJpbmNpcGFsX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi56b25lX2luXG4gICAgICB2YWwgbG9nZW1lbnRFc3RDaGFtYnJlSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW5cbiAgICAgIHZhbCBhZ2Vlc091SGFuZGljYXBBZHVsdGVzSGViZXJnZWVzT25lcmV1eFBhcnRpY3VsaWVyc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luXG4gICAgICB2YWwgdHlwZUFpZGVJbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLnR5cGVfYWlkZV9pblxuICAgICAgdmFsIGNvbG9jYXRpb25JbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5jb2xvY2F0aW9uX2luXG4gICAgICB2YWwgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pblxuICAgICAgdmFsIGxvZ2VtZW50TWV1YmxlRDg0MjJJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luXG4gICAgICB2YWwgY2hhbmdlbWVudExvZ2VtZW50RDg0MjRJbiA9XG4gICAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luX29mX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udCA9XG4gICAge1xuICAgICAgbG95ZXJfcHJpbmNpcGFsX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5sb3llclByaW5jaXBhbEluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW47XG4gICAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXNJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy56b25lSW47XG4gICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMubG9nZW1lbnRFc3RDaGFtYnJlSW47XG4gICAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjtcbiAgICAgIHR5cGVfYWlkZV9pbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy50eXBlQWlkZUluO1xuICAgICAgY29sb2NhdGlvbl9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmNvbG9jYXRpb25JbjtcbiAgICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5yZWR1Y3Rpb25Mb3llclNvbGlkYXJpdGVJbjtcbiAgICAgIGxvZ2VtZW50X21ldWJsZV9kODQyXzJfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmxvZ2VtZW50TWV1YmxlRDg0MjJJbjtcbiAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X2luID1cbiAgICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5jaGFuZ2VtZW50TG9nZW1lbnREODQyNEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0Jhc2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW46IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluOlxuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHpvbmVJbjogem9uZV9kX2hhYml0YXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbnN1YWxpdGVQcmluY2lwYWxlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uUjgyMjExMTMxN0luOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlU2lnbmF0dXJlUHJldEluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVUcmF2YXV4TG9nZW1lbnRJbjpcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVFbnRyZWVMb2dlbWVudEluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNoYXJnZXNNZW5zdWVsbGVzUHJldEluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvcHJvcHJpZXRlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl90b19qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQpXG4gICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNCYXNlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi56b25lX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgbWVuc3VhbGl0ZVByaW5jaXBhbGVJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pblxuICAgICAgdmFsIHNpdHVhdGlvblI4MjIxMTEzMTdJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pblxuICAgICAgdmFsIGRhdGVTaWduYXR1cmVQcmV0SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5kYXRlX3NpZ25hdHVyZV9wcmV0X2luXG4gICAgICB2YWwgdHlwZVRyYXZhdXhMb2dlbWVudEluID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luXG4gICAgICB2YWwgbG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmVJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW5cbiAgICAgIHZhbCBkYXRlRW50cmVlTG9nZW1lbnRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luXG4gICAgICB2YWwgY2hhcmdlc01lbnN1ZWxsZXNQcmV0SW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldF9pblxuICAgICAgdmFsIGNvcHJvcHJpZXRlSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uY29wcm9wcmlldGVfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCA9XG4gICAge1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNCYXNlSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5zaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjtcbiAgICAgIHpvbmVfaW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiMjLnpvbmVJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm1lbnN1YWxpdGVQcmluY2lwYWxlSW47XG4gICAgICBzaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uUjgyMjExMTMxN0luO1xuICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlU2lnbmF0dXJlUHJldEluO1xuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2luID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnR5cGVUcmF2YXV4TG9nZW1lbnRJbjtcbiAgICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmVJbjtcbiAgICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmRhdGVFbnRyZWVMb2dlbWVudEluO1xuICAgICAgY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmNoYXJnZXNNZW5zdWVsbGVzUHJldEluO1xuICAgICAgY29wcm9wcmlldGVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiMjLmNvcHJvcHJpZXRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgdHlwZUxvZ2VtZW50Rm95ZXJJbjogdHlwZV9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvbnZlbnRpb25uZW1lbnRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZWRldmFuY2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyRDg0MjE2SW46XG4gICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgdHlwZUxvZ2VtZW50Rm95ZXJJbiA9XG4gICAgICAgIHR5cGVfbG9nZW1lbnRfZm95ZXJfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICB2YWwgZGF0ZUNvbnZlbnRpb25uZW1lbnRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW5cbiAgICAgIHZhbCByZWRldmFuY2VJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5yZWRldmFuY2VfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLnpvbmVfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgY2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckQ4NDIxNkluID1cbiAgICAgICAgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnQgPVxuICAgIHtcbiAgICAgIHR5cGVfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICAgICAgICB0eXBlX2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLnR5cGVMb2dlbWVudEZveWVySW47XG4gICAgICBkYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLmRhdGVDb252ZW50aW9ubmVtZW50SW47XG4gICAgICByZWRldmFuY2VfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5yZWRldmFuY2VJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLnJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIyMuem9uZUluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfaW4gPVxuICAgICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5cbiAgICAgICAgICAjIy5jYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyRDg0MjE2SW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbW9kZU9jY3VwYXRpb25JbjogbW9kZV9vY2N1cGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVJbjogc2l0dWF0aW9uX2ZhbWlsaWFsZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlQWlkZUluOiB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX3RvX2pzb28gKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXG4gICAgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi50KSA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vZGVPY2N1cGF0aW9uSW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5tb2RlX29jY3VwYXRpb25faW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uem9uZV9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCB0eXBlQWlkZUluID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLnR5cGVfYWlkZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMucmVzc291cmNlc01lbmFnZVNhbnNBcnJvbmRpSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy5zaXR1YXRpb25GYW1pbGlhbGVJbjtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgem9uZV9pbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy56b25lSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICB0eXBlX2FpZGVfaW4gPVxuICAgICAgICB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLnR5cGVBaWRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiA9XG4gIG9iamVjdCBtZXRob2QgZGF0ZU5haXNzYW5jZUFzc3VyZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbl90b19qc29vIChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luXG4gICAgOiBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluLnQpIDogb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlTmFpc3NhbmNlQXNzdXJlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbi5kYXRlX25haXNzYW5jZV9hc3N1cmVfaW5cbiAgICAgIGVuZFxuICBsZXQgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbl9vZl9qc29vXG4gICAgKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gOiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIEpzLnQpIDpcbiAgICBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfbmFpc3NhbmNlX2Fzc3VyZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIyMuZGF0ZU5haXNzYW5jZUFzc3VyZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vZGVPY2N1cGF0aW9uSW46IG1vZGVfb2NjdXBhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZVZlcnNlZUluOiB2ZXJzZW1lbnRfYSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbW9udGFudEFwbEluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnRDaGFyZ2VzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVwZW5zZUxvZ2VtZW50SW46IGRlcGVuc2VfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnREZXR0ZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5fdG9fanNvbyAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5cbiAgICA6IEltcGF5ZURlcGVuc2VMb2dlbWVudEluLnQpIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9kZU9jY3VwYXRpb25JbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl90b19qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLm1vZGVfb2NjdXBhdGlvbl9pblxuICAgICAgdmFsIGFpZGVWZXJzZWVJbiA9XG4gICAgICAgIHZlcnNlbWVudF9hX3RvX2pzb28gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4uYWlkZV92ZXJzZWVfaW5cbiAgICAgIHZhbCBtb250YW50QXBsSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4ubW9udGFudF9hcGxfaW5cbiAgICAgIHZhbCBtb250YW50Q2hhcmdlc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLm1vbnRhbnRfY2hhcmdlc19pblxuICAgICAgdmFsIGRlcGVuc2VMb2dlbWVudEluID1cbiAgICAgICAgZGVwZW5zZV9sb2dlbWVudF90b19qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLmRlcGVuc2VfbG9nZW1lbnRfaW5cbiAgICAgIHZhbCBtb250YW50RGV0dGVJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5tb250YW50X2RldHRlX2luXG4gICAgICBlbmRcbiAgbGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gOiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiBKcy50KSA6XG4gICAgSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgbW9kZV9vY2N1cGF0aW9uX2luID1cbiAgICAgICAgbW9kZV9vY2N1cGF0aW9uX29mX2pzb28gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgYWlkZV92ZXJzZWVfaW4gPVxuICAgICAgICB2ZXJzZW1lbnRfYV9vZl9qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMuYWlkZVZlcnNlZUluO1xuICAgICAgbW9udGFudF9hcGxfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4jIy5tb250YW50QXBsSW47XG4gICAgICBtb250YW50X2NoYXJnZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4jIy5tb250YW50Q2hhcmdlc0luO1xuICAgICAgZGVwZW5zZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIGRlcGVuc2VfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMuZGVwZW5zZUxvZ2VtZW50SW47XG4gICAgICBtb250YW50X2RldHRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMubW9udGFudERldHRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtZW5hZ2VJbjogbWVuYWdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJJbjogZGVtYW5kZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlUHJpc2VzRW5Db21wdGVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW5fdG9fanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnQpXG4gICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbmFnZUluID0gbWVuYWdlX3RvX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5tZW5hZ2VfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJJbiA9XG4gICAgICAgIGRlbWFuZGV1cl90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uZGVtYW5kZXVyX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiBKcy50KSA6XG4gICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1lbmFnZV9pbiA9IG1lbmFnZV9vZl9qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4jIy5tZW5hZ2VJbjtcbiAgICAgIGRlbWFuZGV1cl9pbiA9XG4gICAgICAgIGRlbWFuZGV1cl9vZl9qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4jIy5kZW1hbmRldXJJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIyMucmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtZW5hZ2VJbjogbWVuYWdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJJbjogZGVtYW5kZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlUHJpc2VzRW5Db21wdGVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW5fdG9fanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnQpXG4gICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbmFnZUluID1cbiAgICAgICAgbWVuYWdlX3RvX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5tZW5hZ2VfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJJbiA9XG4gICAgICAgIGRlbWFuZGV1cl90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uZGVtYW5kZXVyX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgICA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gSnMudCkgOlxuICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4udCA9XG4gICAge1xuICAgICAgbWVuYWdlX2luID1cbiAgICAgICAgbWVuYWdlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4jIy5kZW1hbmRldXJJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW5cbiAgICAgICAgICAjIy5yZXNzb3VyY2VzTWVuYWdlUHJpc2VzRW5Db21wdGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0IG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udClcbiAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCkgOlxuICAgIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmRhdGVDb3VyYW50ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIHNtaWNfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzaWRlbmNlSW46IGNvbGxlY3Rpdml0ZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBzbWljX2luX3RvX2pzb28gKHNtaWNfaW4gOiBTbWljSW4udCkgOiBzbWljX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID0gZGF0ZV90b19qc29vIHNtaWNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlc2lkZW5jZUluID0gY29sbGVjdGl2aXRlX3RvX2pzb28gc21pY19pbi5yZXNpZGVuY2VfaW5cbiAgICAgIGVuZFxuICBsZXQgc21pY19pbl9vZl9qc29vIChzbWljX2luIDogc21pY19pbiBKcy50KSA6IFNtaWNJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID0gZGF0ZV9vZl9qc29vIHNtaWNfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHJlc2lkZW5jZV9pbiA9IGNvbGxlY3Rpdml0ZV9vZl9qc29vIHNtaWNfaW4jIy5yZXNpZGVuY2VJblxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHByZXN0YXRpb25Db3VyYW50ZUluOlxuICAgICAgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgOiBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHByZXN0YXRpb25Db3VyYW50ZUluID1cbiAgICAgICAgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb28gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzaWRlbmNlSW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLnJlc2lkZW5jZV9pblxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcHJlc3RhdGlvbl9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnByZXN0YXRpb25Db3VyYW50ZUluO1xuICAgICAgcmVzaWRlbmNlX2luID1cbiAgICAgICAgY29sbGVjdGl2aXRlX29mX2pzb29cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIyMucmVzaWRlbmNlSW5cbiAgICB9XG5cblxuXG5cbmxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIDogY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50KVxuICA6IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCA9XG4gIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgfD4gY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgfD4gY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVxuICAoY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luIDogY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luIEpzLnQpXG4gIDogY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIEpzLnQgPVxuICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW5cbiAgfD4gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXG4gIHw+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV90b19qc29vXG5cblxubGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llclxuICAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIDogY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIEpzLnQpXG4gIDogY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyIEpzLnQgPVxuICBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW5cbiAgfD4gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl90b19qc29vXG5cblxubGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpXG4gIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQgPVxuICBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgfD4gY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV90b19qc29vXG5cblxubGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVcbiAgKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gOiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIEpzLnQpXG4gIDogb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSBKcy50ID1cbiAgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pblxuICB8PiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luX29mX2pzb29cbiAgfD4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVxuICB8PiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX3RvX2pzb29cblxuXG5sZXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRcbiAgKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gSnMudClcbiAgOiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudCBKcy50ID1cbiAgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5cbiAgfD4gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudFxuICB8PiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpXG4gIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICB8PiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cblxuXG5sZXQgc21pYyAoc21pY19pbiA6IHNtaWNfaW4gSnMudClcbiAgOiBzbWljIEpzLnQgPVxuICBzbWljX2luIHw+IHNtaWNfaW5fb2ZfanNvbyB8PiBzbWljIHw+IHNtaWNfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZcbiAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50KVxuICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiBKcy50ID1cbiAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZlxuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50KVxuICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIgSnMudCA9XG4gIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJcbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl90b19qc29vXG5cblxubGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpXG4gIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQgPVxuICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV90b19qc29vXG5cblxubGV0IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCA9XG4gIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gIHw+IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgfD4gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIChyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIDogcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50KVxuICA6IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCA9XG4gIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgfD4gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgfD4gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgKGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpXG4gIDogZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICB8PiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZlxuICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4gSnMudClcbiAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmIEpzLnQgPVxuICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiBKcy50KVxuICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIEpzLnQgPVxuICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pblxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gSnMudClcbiAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQgPVxuICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBKcy50KVxuICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgSnMudCA9XG4gIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudFxuICAoZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIDogZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIEpzLnQpXG4gIDogZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50IEpzLnQgPVxuICBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW5cbiAgfD4gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50XG4gIHw+IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF90b19qc29vXG5cblxubGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIDogZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQgPVxuICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5cbiAgfD4gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gIHw+IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgKGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gOiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50ID1cbiAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pblxuICB8PiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudFxuICB8PiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudClcbiAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50ID1cbiAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudFxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRcbiAgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIEpzLnQpXG4gIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCBKcy50ID1cbiAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pblxuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudFxuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X3RvX2pzb29cblxuXG5sZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZVxuICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gSnMudClcbiAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlIEpzLnQgPVxuICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gIHw+IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlXG4gIHw+IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfdG9fanNvb1xuXG5cbmxldCBfID1cbiAgIEpzLmV4cG9ydCBcIkFpZGVzTG9nZW1lbnRMaWJcIlxuICAgIChvYmplY3QlanNcbiAgICAgIFxuICAgICAgbWV0aG9kIGNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudCA6IChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQgLT4gY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlIDogKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiBKcy50IC0+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llciA6IChjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4gSnMudCAtPiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llclxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUgOiAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgLT4gY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgIFxuICAgICAgbWV0aG9kIG91dmVydHVyZURyb2l0c1JldHJhaXRlIDogKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gSnMudCAtPiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlXG4gICAgICBcbiAgICAgIG1ldGhvZCBpbXBheWVEZXBlbnNlTG9nZW1lbnQgOiAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gSnMudCAtPiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgOiAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIFxuICAgICAgbWV0aG9kIHNtaWMgOiAoc21pY19pbiBKcy50IC0+IHNtaWMgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIHNtaWNcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmIDogKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50IC0+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIgOiAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50IC0+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUgOiAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgLT4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFja1xuICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgIFxuICAgICAgbWV0aG9kIGVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50IDogKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQgLT4gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCByZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50IDogKHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudCAtPiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBlbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcyA6IChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgLT4gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZiA6IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQgLT4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZlxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIgOiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gSnMudCAtPiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZSA6IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgLT4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCA6IChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQgLT4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50IDogKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiBKcy50IC0+IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBlbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgOiAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQgLT4gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50IDogKGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCAtPiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQgOiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCAtPiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQgOiAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiBKcy50IC0+IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlIDogKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gSnMudCAtPiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlXG4gICAgICBcbiAgICBlbmQpIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZW5jaCBsYXcgbGlicmFyeSwgYSBjb2xsZWN0aW9uIG9mIGZ1bmN0aW9ucyBmb3JcbiAgIGNvbXB1dGluZyBGcmVuY2ggdGF4ZXMgYW5kIGJlbmVmaXRzIGRlcml2ZWQgZnJvbSBDYXRhbGEgcHJvZ3JhbXMuIENvcHlyaWdodFxuICAgKEMpIDIwMjEgSW5yaWEsIGNvbnRyaWJ1dG9yOiBEZW5pcyBNZXJpZ291eCA8ZGVuaXMubWVyaWdvdXhAaW5yaWEuZnI+LCBFbWlsZVxuICAgUm9sbGV5IDxlbWlsZS5yb2xsZXlAdHV0YS5pbz5cblxuICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3RcbiAgIHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mXG4gICB0aGUgTGljZW5zZSBhdFxuXG4gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUXG4gICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGVcbiAgIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyXG4gICB0aGUgTGljZW5zZS4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiBMYXdfc291cmNlXG5vcGVuIFJ1bnRpbWVfanNvby5SdW50aW1lXG5tb2R1bGUgQUYgPSBBbGxvY2F0aW9uc19mYW1pbGlhbGVzXG5tb2R1bGUgQUZfd2ViID0gQWxsb2NhdGlvbnNfZmFtaWxpYWxlc19hcGlfd2ViXG5tb2R1bGUgQUwgPSBBaWRlc19sb2dlbWVudFxubW9kdWxlIEFMX3dlYiA9IEFpZGVzX2xvZ2VtZW50X2FwaV93ZWJcblxubGV0IF8gPVxuICBKcy5leHBvcnRfYWxsXG4gICAgKG9iamVjdCVqc1xuICAgICAgIHZhbCBldmVudHNNYW5hZ2VyID0gZXZlbnRfbWFuYWdlclxuXG4gICAgICAgbWV0aG9kIGNvbXB1dGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcbiAgICAgICAgICAgOiAoQUZfd2ViLmludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIC0+IGZsb2F0KSBKcy5jYWxsYmFjayA9XG4gICAgICAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gLT5cbiAgICAgICAgICAgICBleGVjdXRlX29yX3Rocm93X2Vycm9yIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgICAgICAgICAgICAgICB8PiBBRl93ZWIuaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgcmVzdWx0IyMuaU1vbnRhbnRWZXJzZSkpXG5cbiAgICAgICBtZXRob2QgY29tcHV0ZUFpZGVzQXVMb2dlbWVudFxuICAgICAgICAgICA6IChBTF93ZWIuY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiAtPiBmbG9hdClcbiAgICAgICAgICAgICBKcy5jYWxsYmFjayA9XG4gICAgICAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiAtPlxuICAgICAgICAgICAgIGV4ZWN1dGVfb3JfdGhyb3dfZXJyb3IgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgICAgICAgICAgICAgICAgfD4gQUxfd2ViLmNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgcmVzdWx0IyMuYWlkZUZpbmFsZSkpXG4gICAgZW5kKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXX0= \ No newline at end of file +(function(a){typeof +globalThis!=="object"&&(this?b():(a.defineProperty(a.prototype,"_T_",{configurable:true,get:b}),_T_));function +b(){var +b=this||self;b.globalThis=b;delete +a.prototype._T_}}(Object));(function(aL){"use strict";var +bzw=aL,bzz=typeof +module==="object"&&module.exports||aL,AR="38527",iq=1133,rx=424,gV=857,cq="\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales",Gf="Article L521-1",kt="Paragraphe 2 : Ouverture du droit et liquidation.",nw=365180284,AQ="Changement",Ge="26714",Gd=163,AP="redevance_in",o9="SaintMartin",gM=815,Gc=1197,AO="1015",ju=891,ec="Section 1 : Seuils de constitution d'un impay\xc3\xa9",AM=4865,AN="559500",b6="Article 1",cX="aide_finale_formule",AL="35630",gU=122,sx="Article 31",kW="50",bg="Unexpected '",fY=299,Gb="34700",jt=181,nv="Article 19",o8=862,kV=305,js=4442,ei=128,ks="Avant",rw="identifiant",o7="Oui",sw=1127,Ga="43000",rv="Article D832-26",eD=683,ip=573,ru=383,eY=146,nu=">",o6=575,gf=153,F$=1027,io=1129,o5=1053,eh=297,AK=4437,o4="Article 17",an="Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9",F_="b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s_in",eX="Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es",AJ="local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire_in",nt=933,o2=1125,o3="baseMensuelleAllocationsFamiliales",AI="35762",aM="Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement",jr=804,A="Calcul du montant de l'allocation logement",F9=358,d2=2011,dg=2023,d1=295,F8=462,im="Article L841-1",rt="ServicesSociauxAllocationVerseeALaFamille",F7=3685,AG="186000",AH="Instruction interminist\xc3\xa9rielle no DSS/SD2B/2020/33 du 18 f\xc3\xa9vrier 2020 relative \xc3\xa0 la revalorisation au 1er avril 2020 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",AF="16.25",rs="0.0315",kr="traitement_aide_finale_diminu\xc3\xa9",ns=1118,jq=4835,F6="\xc3\xa9ligibilit\xc3\xa9_commune.date_courante",AE="40758",o1="e",o0=313,il="Autre",ik=798,AC=4382,AD=1150,F5="Article L822-2",AB=3909,jp=421,ge="smic",AA="39445",ij=1071,bD="Article D842-6",nr=1052,Ay=-43,Az="Neuf",Ax=3097,ii=901,Aw=3235,sv="Article 27",jo=897,F4="inf",F3="calculetteAidesAuLogementGardeAlternee",Av="27365",F2="Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",nq=685,Au=4637,F1="41392",kU=111,np=929,F0="Location",FZ=4456,As="240400",At=269,su=709,st="Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale",jn=619,FY="33500",kq="CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9",cp="Article D823-9",bI="traitement_aide_finale_minoration_forfaitaire",rr="\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",FX="infinity",FW=1855,ih="2.5",FV="3663",Aq=1134,Ar=278,eg="Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement",Ap=3194,eC="examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr",Ao="\\t",FT=3953,FU=2457,aG="examples/aides_logement/code_construction_legislatif.catala_fr",Am="situation_r822_11_13_17_in",An=330,FS=385,aP="Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien",kT=112,ig="1000",gL=1131,eb=563,c8="examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr",kS=701,Al="210600",FR="Unexpected '%s' kind for the enumeration 'ElementPrestationsFamiliales.t'",Ak="Couple",kp=687,no="SaintPierreEtMiquelon",FQ="loyer_minimal",ie=110,co="PrestationsFamiliales",oZ=464,FP="\xc3\x89l\xc3\xa9mentPrestationsFamiliales",Aj=1103,oY=679,FO="214700",FN=3973,id=615,dP="Calcul\xc3\x89quivalenceLoyerMinimale",Ai=2083,oX=554,FM="42926",jm=1096,rq=265,Ah=-32,nn=4408,Ag="39016",oW="AllocationLogementFamiliale",ea=1023,FK=2601,FL="interfaceAllocationsFamiliales",cl=561,nm="AllocationLogementSociale",Af=1974,Ae="plafond_l512_3_2",jl=639,rp="Chapitre II : Des contributions pour le remboursement de la dette sociale.",aW="examples/allocations_familiales/decrets_divers.catala_fr",fX=117,Ad=348,kR="compl\xc3\xa9ment_d\xc3\xa9gressif",ro="Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9",FI="240200",FJ="Assert_failure",ss="Section 1 : Secteur locatif ordinaire",FH="568400",sr="0.32",Ac="40961",FG=350,kQ="Non",jk=508,Ab=185,kP="Article R824-2",FF=219,FE=1e14,Aa="D331_76_1",jj=3489,oV="Article R521-3",z$="17607",$=2022,FC="34865",FD="Fatal error: exception %s\n",z_="261800",oU=865,ko=740,fW="Article 2",eB=256,dO=558,ic=786,z9="Article L521-3",FB="Article R822-1",z8="45064",FA="taux_francs_vers_euros",kO="abattement_d\xc3\xa9pense_nette_minimale_d832_10",oT=699,sq="mensualit\xc3\xa9_\xc3\xa9ligible",gd=1075,nl="D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance",sp="ENOENT",so=1395,rn="0.0006",ia=3935,ib=315,rl="EnfantLePlus\xc3\x82g\xc3\xa9",rm=259,z7=2685,nk=556,bw="examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr",z6="228000",Fz="ENOTEMPTY",z5="copropri\xc3\xa9t\xc3\xa9_in",sn="Article 13",Fy="calcul_apl_logement_foyer.nombre_personnes_\xc3\xa0_charge",z4="D331_59_8",Fw="Loyer",Fx="35947",z3=2540,ji=3486,eW=564,z2="brut_horaire",z1=172,Fv="x",z0="Sous-section 1 : Aides personnelles au logement",Fu="calculAidePersonnaliseeLogementAccessionPropriete",h$=547,ci="Articles valables du 1er octobre 2020 au 31 septembre 2021",kn="Article D755-5",fV=680,Ft="Article D842-4",jh=791,dF=314,sm="%d",rk=810,nj=4768,zZ="Z.of_substring_base: invalid digit",Fs="ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille",Fr="logement_est_chambre_in",h_=637,ni=285,zY="buffer.ml",e="Prologue : aides au logement",D="Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9",zX=3640,Fp="167600",Fq="39590",Fo=3213,Fn=2565,gT=2008,rj="0.0179",Fm=3505,zW="245700",B="Prologue",zV=3366,nh="calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge",Fl="Metropole",cd=100,kM="prise_en_compte_personne_\xc3\xa0_charge",kN=851,ng=702,h9=420,fq=300,h8=4831,_="3",a9="Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples",zU=230,oR=413,Fk="835",oS="169.",zT="plafond_\xc3\xa9quivalence_loyer_\xc3\xa9ligible",zS=0.5,Fj=4027,kL=990,cU="Article D521-1",Fh="conventionn\xc3\xa9_livre_III_titre_V_chap_III",oQ=622,Fi="sous_calcul_traitement",nf=4769,zR=374,h7=956,oP="Article D842-11",d0="Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses",zQ=4137,c4=107,ne=381,nd="Article D842-12",jg=690,oO="prestations_familiales",kK="est_enfant_le_plus_\xc3\xa2g\xc3\xa9",zP="26440",h6=649,Fg="201700",sl="Unix.Unix_error",h5=1139,zO=284,Fe="calculAidePersonnaliseeLogement",oN=553,Ff=3970,h4=1088,zN="Stack_overflow",fj="condition_2_r823_4",a7="Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer",aU="\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement",oM=4089,Fd=4843,h3=3487,zL=3460,zM="/static/",ri=253,Fc="Not_found",zK="1085",rg=235,rh="\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02",zJ="851",zI="41268",a0="examples/allocations_familiales/epilogue.catala_fr",oL=695,Fb="calcul_apl_logement_foyer.date_courante",ca=848054398,oK="Mayotte",Fa="smic.date_courante",zG=1841,zH=260,oJ="1224",E_="calcul_apl_locatif",E$=243,dA="calcul_plafond_mensualit\xc3\xa9_d832_10_3",h2=1049,rf="rmdir",oI=696,gc=1069,E8="participation_minimale",E9=32752,zF="33623",sk="19100",zE="37478",gb="calcul_nombre_parts",zD=3279,sj="Article 23",oH="Article R842-5",zC=1026,dq=149,E7="taux_composition_familiale",bQ="montant",dZ="Article L521-2",bu="examples/allocations_familiales/../smic/smic.catala_fr",zz="calculAllocationLogementLocatif",zA="37906",zB="false",dp=849,oG="Invalid integer: ",zy="PasDeChangement",E6=2381,bv="\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement",zx=3325,a_=106,E5=346,h1=186,dN=0x80,eV="Chapitre 1er : Dispositions relatives aux prestations",si="Fatal error: exception ",zw=4211,oF="\xc3\xa9ligibilit\xc3\xa9_commune",sh="0.0234",E4="43378",zv="calcul_apl_logement_foyer.date_conventionnement",h0=852,E3=234,zu=1413,hZ=1054,sg="25978",dY=303,zt=1556,E2=493,E1="Section 2 : R\xc3\xa8gles de non-cumul",hY="zone_in",sf="_",zr="eligibilitePrimeDeDemenagement",hX=517,zs=3143,re="compare: functional value",b5="0.",zo=114,zp="40928",zq="19300",nc=411,nb=978,zn="197700",zm="Invalid_argument",hW=4832,rd=823,E0="EndCall([ ",oE="0.9",EY="Article R822-22",EZ="prise_en_charge",zl="calcul_aide_personnalis\xc3\xa9e_logement",zk=249,EW="34301",EX="577500",zi=3941,zj="%ni",na=949,fp=324,W=2020,zh=3783,EV="PersonneSeule",zg=1418,oD=559,rc="0.0238",se="Article 9",EU="225100",ET="AutresPersonnes",dn="6",jf=495,zf="173600",fU=858,p="0",ap="Section 3 : Logements-foyers",ze="montant_forfaitaire_charges_d823_16",km="Article L161-17-2",d="examples/aides_logement/prologue.catala_fr",ES="eligibiliteAidesPersonnelleLogement",eU=817,bm=248,zd=1905,m$=341,oC=322,je=2007,ER="208200",y_="Zone1",y$="Locataire",za=2245,hV=301,zb="R\xc3\xa8glement (CE) n\xc2\xb02866/98 du conseil du 31 d\xc3\xa9cembre 1998 concernant les taux de conversion entre l'euro et les monnaies des \xc3\x89tats membres adoptant l'euro",zc="37457",EQ="562800",y9="535744",EP=572,y8="235800",m_=555,b4=403,m9=930,EN=2412,EO="resetLog",EM=4811,y7="\xc3\xa2ge_l512_3_2",U="AllocationsFamiliales",y6="situation_familiale_calcul_apl",rb="GardeAlterneeAllocataireUnique",m8="D\xc3\xa9cret n\xc2\xb0 2022-1608 du 22 d\xc3\xa9cembre 2022 portant rel\xc3\xa8vement du salaire minimum de croissance",EK="haut",EL=1215,gK=1024,y4="204761",y5="3.1",jd=802,m7=133,sd="35780",y2="calculAidePersonnaliseeLogementFoyer",y3=4470,EJ=4484,oB=945,fh=366,fi=0xffffff,EI="34829",y0=524,y1=4805,m6=876,jc="Titre III: Titre III : Dispositions communes relatives au financement",EH="36378",ax="Calculette globale",hU=286,EG="149600",ga=3775,yZ=3370,kJ="Article R824-1",c3=1994,EF=4568,hT=2010,bK="Prologue : prestations familiales",sc=2147483647,EE="774",oA=689,yY=", characters ",f$=456,ra="180100",f_="BaseMensuelleAllocationsFamiliales",yX="prestations_familiales.r\xc3\xa9sidence",ED="819",bn="Chapitre IV : Calcul des allocations de logement en secteur accession",yW="AllocationJournali\xc3\xa8rePresenceParentale",yV=".0",EC=4038,EB="36733",q$="AllocationFamilialesAvril2008",yU=328,jb=693,eT=855,EA="AllocationRentreeScolaire",q_="mensualit\xc3\xa9_minimale",kI="2.",m5=691,fo="5612",yT="Concubins",dE="calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9",yS="date_entr\xc3\xa9e_logement_in",sb="Montants revaloris\xc3\xa9s de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",yR="SaintBarth\xc3\xa9lemy",ab="Partie l\xc3\xa9gislative",yQ=357,hS=2003,kl="Article R823-4",yP="32956",br="examples/allocations_familiales/securite_sociale_D.catala_fr",yO="294500",yN=3085,q9="examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr",Ez=3051,dX="RessourcesAidesPersonnelleLogement",f9="Montant des plafonds de ressources",bq="Annexe",eS="Section 1 : B\xc3\xa9n\xc3\xa9ficiaires",Ey=2913,Ex="3524",yM="Article D832-27",Ew=3553,yL="Zone3",kk="500",fT=471,Ev=304,dM=2015,yK="40144",Eu=4052,fn="prise_en_compte",Et=3985,yJ=3144,Es="223900",yI="ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux",Er=138,yH="225500",oz=1998,x="Livre VIII : Aides personnelles au logement",hR=905,kj="caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6",q8="nan",Eq="38892",yG=1276,m4=4401,yE="calculNombrePartLogementFoyer",m3=646,yF=4972,kH="Impay\xc3\xa9D\xc3\xa9penseLogement",bf="Calculette avec garde altern\xc3\xa9e",Ep=0xdfff,hQ="4.3",eA="/",Eo=4504,sa="ENOTDIR",r$=1073741823,En=1426,yD=273,yB=4191,yC="\\r",r_="0.0068",r9=513,Em="calcul_allocation_logement",q7="coefficient_prise_en_charge",yz=4045,m1=743,m2=734,yA=206,El="1107",yy=3811,kG="Article D161-2-1-9",oy="Guyane",ow="PasDeTravaux",ox=311,m0=255,Ek="Revenu",bH="droit_ouvert_majoration",F="Partie r\xc3\xa9glementaire",c7="Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat",yx=4918,Ej="coefficient_r_d832_25",yw="Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s",Ei="Sous-section 4 : Prise en compte du patrimoine",i="D\xc3\xa9clarations des champs d'application",yv="End_of_file",Eh="calcul_apl_logement_foyer.condition_2_du_832_25",yu="calculAllocationLogementFoyer",ki="traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9",fg="Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer",ja="Article 24",q6="Failure",Eg="267871",yt="167800",Ef=2344,a6="CalculetteAidesAuLogement",Ed=1865,Ee=1347,Y=684,mZ=715,q5="\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",ys=0xdc00,yr="389618",ov="3.",i$=788,yq="185800",r8="0.0201",ou=880,Ec="Sys_error",yp=4003,fS="Article D521-2",Eb=3587,mY=703,ot=3595,r7="nombre_personnes_\xc3\xa0_charge_prises_en_compte",ez="Sous-section 4 : Assurance vieillesse",D$=3889,Ea="Printexc.handle_uncaught_exception",cT="Article D832-24",kF=618,os="30500",hP=1079,yo="194810",mW=745,mX="int_of_string",Q="examples/aides_logement/arrete_2019-09-27.catala_fr",yn="Chapitre Ier : Principes g\xc3\xa9n\xc3\xa9raux",or="Article 37",ym="39340",yl="name",cJ=103,i_=966,yj=4118,yk=447,i9=428,al="Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement",kE="traitement_aide_finale_redevance",D_=3951,dW=132,yi=" ])",D8="1.4",oq=698,D9=4005,mV="31797",yf="type_travaux_logement_in",yg="19484",yh=3210,mU=988,ye=3850,cG="Article 7",D7="%Li",mT=864,yd=3963,gJ=591,op=1014,q4="r\xc3\xa9muneration_mensuelle",dz=302,hO=960,yc=205,cF="Article 14",yb="34570",q3="date_de_naissance",i8=1090,mS="base_mensuelle_allocations_familiales",i7=795,D6=2439,i6=927,ya=2380,mR="_z",i5=2000,r6=1951,mQ=860,oo="Arr\xc3\xaat\xc3\xa9 du 29 juillet 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance",x$=2269,eR=136,b8="Titre IV : Allocations de logement",x_="retrieveRawEvents",ef="InterfaceAllocationsFamiliales",mP=985,D5=4851,i4=1077,kh="Pendant",q2="%a",gI=", ",ff="5422",x9=199,c6=2018,D4="17012",on="calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25",x8="AllocationJournalierePresenceParentale",D3=3542,bX="Chapitre III : Calcul des aides personnelles au logement en secteur locatif",D2="' kind for the enumeration 'ElementPrestationsFamiliales.t'",hN=682,fR=467,bE="Prestations familiales",DZ="Enfant\xc3\x80Charge",D0="calculette",D1="GardeAltern\xc3\xa9eAllocataireUnique",ey="Article D823-16",DY="172500",r5="n_nombre_parts_d832_25",r4="Apres",hM=1084,x7=359,bG="examples/aides_logement/../prestations_familiales/prologue.catala_fr",q1=2187,DX="179800",fm=" ",K="Secteur locatif",DW="Undefined_recursive_module",ae="output",x6="195500",x5=1194,x4=2959,bB="Articles valables du 1er octobre 2021 au 30 juin 2022",DV="base_mensuelle_allocations_familiales.date_courante",q0="199900",qZ=1424,cE=-976970511,x2="' kind for the enumeration 'SituationObligationScolaire.t'",x3="%.16g",DU="220100",om=189,x1=4422,kg="droit_ouvert_forfaitaire",kf=620,x0="%i",qY="0.01",DT="262985",xZ="409505",xY="LogementFoyer",DS="139700",ol="PrestationAccueilJeuneEnfant",DR="Article L822-4",ok=856,xX="41252",DO="0.1",DP="Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9",DQ=382,mO="5399",qX="2805",fe=123,mN=570,xW="calcul_apl_logement_foyer.type_logement_foyer",hL="0.0173",gH=806,L="Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement",fQ=159,xV="LocationAccession",i3=1067,mM=577,DN=183,qW="a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales",DM="41338",dy=0xff,xU=2217,mL="Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance",DL=-12,mK="calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies",mJ=458,xT=191,mI="Article 15",df="0.75",ke="Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin",DK="22355",mH=3654863,DJ="140800",oj=145,r3="Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",ex=455,DI=1997,xS="163000",oi=991,kd="0.5",oh="Article R842-14",kc=641,xR="fd ",DH=2203,xQ="41751",xP="181800",r2=409,xN="\xc3\xa9quivalence_loyer_\xc3\xa9ligible",xO="41316",DG=4784,bJ="traitement_aide_finale_contributions_sociales_arrondi",xM="cat\xc3\xa9gorie_calcul_apl",xL="757",cc="Prise en compte des ressources pour les aides personnelles au logement",kD="coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte",hJ=377,hK=1081,DF=1290,og=848,fP=2001,qV="Compl\xc3\xa9mentFamilial",hI=793,xK=633,DE="smic.r\xc3\xa9sidence",xJ=3260,az="Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es",f8=1018,mG=108,DD="Article D832-18",mF=-2147483648,eQ=2002,z="1",xI="Chapitre II : Dispositions applicables aux ressources",mE="Article R822-7",DC="42605",xG="VendeurQuandDemandeurAContratLocationAccession",xH="Article R755-0-2",qU=406,DB="calculNombrePartsAccessionPropriete",DA="allocationFamilialesAvril2008",r1=": Not a directory",xF="b",Dy="18900",Dz="Article D521-3",cS="CalculAidePersonnalis\xc3\xa9eLogement",xE="D331_63_64",dV=2012,Dx=4725,Dv="42469",Dw="Out_of_memory",xD=4897,E="examples/aides_logement/code_construction_reglementaire.catala_fr",ah="4",r0="index out of bounds",mD=986,Du=2379,xC=3886,Ds="27900",Dt=3481,i2=903,of="_bigarr02",Dr=3178,xA=975,xB="31264",mC=881,Dq=0xffffffff,hH=4441,gG=895,Dp="LaR\xc3\xa9union",xz=3531,mB="Article L822-5",mA=574,Do="981600",hF=3771,hG=292,ew=0xffff,i1=2009,Dn="%.17g",xx=1806,mz="calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25",xy=400,xv=1965,xw=1148,c5="100.",Dk="1.25",Dl=143,Dm=4100,xu="44729",xt=1310,eP="\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3",gF=963043957,P="5",my=142,oe=741,dm=126,i0="AllocationSoutienFamilial",xr=2575,xs=840,Dj="SousLocataire",xq="34713",od=628,bb="Section 1 : Calcul, liquidation et versement des aides",kC=124,Di=3550,xp="0.98",gE="Article L512-3",Dg=2182,Dh=1626,xn="633129",xo=422,iZ=427,dl=150,xm="41440",mx=135,iY=899,dk="\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement",dD="Sous-section 2 : Calcul de l'aide en secteur locatif",xl=2393,kb=252,Df="enfant_le_plus_\xc3\xa2g\xc3\xa9",I="examples/allocations_familiales/prologue.catala_fr",au="CalculAidePersonnalis\xc3\xa9eLogementFoyer",ev=".",oc=147,De=0xf0,xk="eligibilitePrestationsFamiliales",cI="12.",ch=694,mw="Guadeloupe",xj=276,bp=116,ob="230500",xi="enfantLePlusAge",oa=576,mv=627,dj=365,hE=813,fl="traitement_aide_finale_montant_minimal",di=294,xh="impossible case",iX=1073,dU="examples/allocations_familiales/securite_sociale_R.catala_fr",f7=968,eO="R\xc3\xa8gles diverses",Dd=3280,mu=500,Dc=-1080,Db="18185",hD=638,xg="SaintBarthelemy",dC=1063,Da=-1023,C_="type_logement_foyer_in",n$=859,C$=221,gD="1272",xf="ressources_m\xc3\xa9nage_avec_arrondi",C8="ouvertureDroitsRetraite",C9="\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement",iW=3773,C7="204700",rZ="Article L755-12",xe="TravauxPourAcquisitionD832_15_1",C6="Ancien",rY="lib/read.mll",xd=4411,gS="1229",C5="Article premier",mt=501,aZ="\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement",C4=1788,xc=4051,gC=819,ms='"',C3="Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations",mr="examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr",cR="CalculAllocationLogement",xb=231,hC=4448,C2="3539",rX="<",w_="208500",cg=931,w$="prestations_familiales.date_courante",xa=0x800,hB=617,mq=182,w9=398,rW=1152,C1=331,n_="\xc3\xa9ligibilit\xc3\xa9",w7="233000",w8=0.012,w6="calculAidePersonnaliseeLogementLocatif",bW="Article 33",iV=719,CZ=3005,C0="M\xc3\xa9tropole",CX="40696",CY=209,w5=131,CW="ressources_m\xc3\xa9nage_arrondies_seuil",w4=204,rV="Article D815-1",iT=834,iU="conditions_hors_\xc3\xa2ge",eN="traitement_aide_finale_abattement",bc="Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte",w2=726928360,ay=562,w3="221100",qT=165,w1="([^/]+)",CV="plafond_loyer_d823_16_2",mp=700,CU="Article 39",rU=0xf,w0=4883,rT=809,wZ="798",CT="BailleurSocial",ka="montant_initial_m\xc3\xa9tropole_majoration",n9=372,cs=125,kB="ressources_m\xc3\xa9nage_arrondies_in",iS=907,wY="Division_by_zero",f6=1092,n8=520,rS=4171,qS="Article L832-3",wX=708012133,CR=3976,CS="SituationObligationScolaire",CQ=4076,CO="AutrePersonne\xc3\x80Charge",n7=879,CP="44440",wW=3158,CN="AllocationJeuneEnfant",dL=2014,mo=1119,iR=1059,dK=552,CL="22262",CM=3797,hA="date_courante_in",n6=659,CK="Article D842-17",n5=697,CJ="Article L751-1",f5=503,rR=119,j$="montant_avec_garde_altern\xc3\xa9e_majoration",CI="70",eM=412,dT=104,wU="calculette_sans_garde_altern\xc3\xa9e",wV="Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2022/82 du 28 mars 2022 relative \xc3\xa0 la revalorisation au 1er avril 2022 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",n4=321,wT="version_avril_2008",iQ=468,wS="38361",n3=714,CH=439,fO=2013,wR=2714,CF="ouverture_droits_retraite",CG=102,wQ="mensualit\xc3\xa9_principale_in",hz=800,CE="997500",hy="100000.",wP="18261",fN=101,n2="calcul_nombre_parts.situation_familiale_calcul_apl",CD="participation_personnelle",CC="body",fM="Calcul des contributions sociales s'appliquant aux aides personnelles au logement",wO="Unexpected '%s' kind for the enumeration 'Collectivite.t'",rQ="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",gR=1e7,wN=3415,j_=254,CA=2333,CB="calcul_apl_logement_foyer.zone",qR=407,Cz="6.",wM="1003",dx="Article L841-2",Cy=" : flags Open_text and Open_binary are not compatible",d$="Article D832-15",eu="Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales",wL="43248",hx=4444,gQ=1992,eL="examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr",wK="\\\\",w="Code de la construction et de l'habitation",wJ="Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",Cx="Article 38",wH=2297,wI=188,Cu=463,Cv=160,Cw="0.04",wG="0.0226",qQ=270,wF="192500",Ct=3820,Cr=3346,Cs="230700",wE="217600",n1=926,Cq="0.0463",qP="GardeAlterneePartageAllocations",qO="\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0",n0="0.55",nZ=109,dh="droit_ouvert",H="Champs d'applications",wD=479,iP=952,bk="ContributionsSocialesAidesPersonnelleLogement",iO="Article D832-10",bl="Interface du programme",qN=-97,Cp=944,aO="examples/aides_logement/archives.catala_fr",iN=469,wC="218700",qL="Article D823-20",qM="ServicesSociauxAllocationVerseeAuxServicesSociaux",Co=2486,kA="d\xc3\xa9pense_nette_minimale_d832_27",iM=195,et="1.",fL=1015,gB=1094,wB="45200",de="d\xc3\xa9pense_nette_minimale",iL=954,qK="Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es",wA=2226,j9="Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base",rP="Article D823-17",Cn="Instruction minist\xc3\xa9rielle N\xc2\xb0DSS/SD2B/2019/65 du 25 mars 2019 relative \xc3\xa0 la revalorisation au 1er avril 2019 des prestations familiales servies en m\xc3\xa9tropole",iK=596,nY="AllocationLogement",wy="5186",wz="Unexpected '%s' kind for the enumeration 'SituationObligationScolaire.t'",dw=1065,fK=155,f4=518,Cm="calcul_apl_logement_foyer.situation_familiale_calcul_apl",ww="142303",mn=316,wx="37778",d_=296,nX=565,nW=215,d9="Article D832-11",wv="LaReunion",kz=947,Cl="AgrandirOuRendreHabitableD331_63",aC="Montant du salaire minimum de croissance",mm=557,iJ=3283,ee=621,qJ="0.3",wu="true",bd="Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution",f3=370,ad="Titre II : Dispositions communes aux aides personnelles au logement",Cj=214,Ck="25116",j8="Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s.",qI="1500",wt=" is too large for shifting.",Ci="237200",nV=502,mk="242800",ml="Map.bal",rO="5208",Ch="0.08",hw=4841,ws="@[",ag="Titre III : Aide personnalis\xc3\xa9e au logement",Cg="Apr\xc3\xa8s",af="Code de la s\xc3\xa9curit\xc3\xa9 sociale",Cf="42892",mj=688,mi="ml_z_overflow",wr="1.8",Ce=807,ky="contributions_sociales.date_courante",kx=850,wq=307,mh=309,wp="calcul_apl_logement_foyer.redevance",Cd=-752863768,Cb=904,rM="202500",rN="Article D832-17",Cc=360,B_="Article 10",iI=1144,B$="allocationsFamiliales",Ca="Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2021/65 du 19 mars 2021 relative \xc3\xa0 la revalorisation au 1er avril 2021 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",wo="582700",nU=167,B9="4986",nT=274,aD="CalculAidePersonnalis\xc3\xa9eLogementLocatif",B8=433,nS=531,eK="abattement_d\xc3\xa9pense_nette_minimale",B6=3769,B7="Sys_blocked_io",wn=450,qH="b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement",gA="Chapitre 2 : Champ d'application",wm="0.0588",nR="Chapitre 2 : Champ d'application.",rL=362,wl=3757,iH=3939,iG=3281,nQ=457,B5="49",wk=1882,Z="\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement",bz="Article D842-15",B4=1010,iF="nombre_personnes_\xc3\xa0_charge_in",mg=246,fJ=1016,wi="37900",wj="%u",mf="Article L831-1",me="Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession",fI="calcul_\xc3\xa9quivalence_loyer_minimale",fH=298,wh=4273,B2="Article 40",B3=4034,b7="\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement",wg="19402",md=925,X="2",cQ=127,nP=711,we="Article 30",wf="@{",cf="Montant de la base mensuelle des allocations familiales",wd=" : flags Open_rdonly and Open_wronly are not compatible",wc="0.232",rK="OuvertureDroitsRetraite",wa="Zone2",wb="43505",nO="D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance",cH="-",B1=336,hv=603,B0="type_aide_in",v_="n_nombre_parts_d832_11",v$=" : file already exists",BZ=2364,j7="EffectiveEtPermanente",v9="1127",BX="calculAllocationLogementAccessionPropriete",BY="41481",fd="0.0045",fG="Date d'ouverture des droits \xc3\xa0 la retraite",mc=866,v8=1099,BW="retrieveEvents",v7="20165",hu=4837,iE="situation_familiale_calcul_apl_in",BV="2699",nN=4802,ma=625,mb=644,v5="Infini",v6="prestationsFamiliales",fF="Article 43",v4="\\b",v3=3730,ak="Titre IV : Allocations de Logement",l$="Martinique",nM=404,cr="Article D832-25",v2=487,BU=2322,v1=12520,BT="Collectivit\xc3\xa9",cW=401,BS="42228",ck="Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement",aN="Chapitre 1er : Allocations familiales",ht=2016,v0="AllocationEducationEnfantHandicape",BR="832200",vZ=1176,vY=1408,BQ="AllocationRentr\xc3\xa9eScolaire",iD=1000,V="CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9",aa="",rJ=737456202,iC="Sous-section 2 : Principes de neutralisation et d'abattement",BP="^",l_="Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement",j6=746,hs=0x3f,BO="' kind for the enumeration 'Collectivite.t'",vX=4281,rI="184000",vW="251500",j5=334,dS="Article 16",BN="Article D842-9",vV="Match_failure",vU=3130,hr=716,BM=3189,at=2021,vT=4735,vS=2345,hq=4446,iB="0.085",kv="d\xc3\xa9pense_nette_minimale_d832_10",kw="CalculNombrePartLogementFoyer",vQ=1241,vR=1436,BL="35130",j4="montant_initial_majoration",fk="+",BK=2551,gP=1061,BI=4206,BJ="1057",BH=179,hp=425,BG=4963,vP=3916,BF="%li",cP=998,ho="Smic",BD="colocation_in",BE="234600",vO=2313,vN="logement_meubl\xc3\xa9_d842_2_in",vM=4659,BC="39051",vL="20900",nL="calcul_apl_logement_foyer",rH="208600",vK=267,hn=431,BB="impayeDepenseLogement",iA=962,BA="calcul_nombre_parts.condition_2_du_832_25",vJ=0xe0,l9=1126,By=2650,Bz="20100",l8=882,Bx="D331_32",eJ="contributions_sociales",iz=580,Bw="\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers_in",vI=225,hm=250,vH="calcul_apl_logement_foyer.ressources_m\xc3\xa9nage_arrondies",N="Secteur logement-foyer",qG="Article L831-2",J="Allocations familiales",iy=893,nK=624,qF="0.027",vF="\xc3\xa9ligibilit\xc3\xa9_commune.m\xc3\xa9nage",vG="allocations_familiales",rG=1255,ix="Article 8",bP="examples/allocations_familiales/securite_sociale_L.catala_fr",l7=594,vE=245,bC=2019,nJ="Article R521-1",rF="jsError",eI=0x8000,l6=1055,bj="Chapitre Ier : Champ d'application",Bv="Section 1 : Conditions relatives au b\xc3\xa9n\xc3\xa9ficiaire",iw=964,Bu="43074",l5=946,vD="6.55957",vC="eligibiliteAidePersonnaliseeLogement",l4="Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources",l3=371,fE=320,iv=129,hl=958,vB="\n",ku="abattement_d\xc3\xa9pense_nette_minimale_d832_27",hk=497,am="Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement",qE="3.7",Bt=483,f2=414,l2=310,bO="Tous secteurs",vz="Article 34",b$="calcul_plafond_mensualit\xc3\xa9_d842_6_base",vA=1033,iu=2005,Bs=-48,qD="9",it=4839,vy=4141,Br="1025",cj="camlinternalFormat.ml",eH=549,nI=312,Bq=686,nG=943,nH=148,Bp="132000",qC="0.0185",vx="924600",nF=713,c2=2017,vw=1124,Bo="date_naissance",cV=317,l1="Article R822-2",aj="CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9",ed="Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s",hj=1141,rE="obligation_scolaire",vv="EEXIST",Bn="r\xc3\xa9duction_loyer_solidarit\xc3\xa9_in",f1=293,eG=550,es=121,Bm="prestations_familiales.prestation_courante",nE=1999,Bi=824,Bj="\xc3\xa9ligibilit\xc3\xa9_commune.demandeur",Bk=1406,Bl="\\n",l0=1858,dv=120,lZ="16",Bg="23138",Bh="Article D832-14",rD=512,vu=0x7ff0,vt="eligibiliteAllocationLogement",lY=928,nD=861,qB="montant_forfaitaire_charges",er="traitement_aide_finale_d\xc3\xa9pense_nette_minimale",rC=177,vr=228,vs="\xc3\xa9quivalence_loyer_minimale",vq="0x",Bf="Ascendant",lX="0.005",nC=3865,t="Calcul du montant de l'aide personnalis\xc3\xa9e au logement",lV=499,lW="D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance",nB=645,Be="40888",vo="bas",vp="0.208",vn="date_conventionnement_in",vm="210900",Bd="219900",aw="traitement_aide_finale",vk="r\xc3\xa9gime_outre_mer_l751_1",be=105,vl="Invalid function call ([ ",vj="Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",eF=551,lU="Article R512-2",hi=1135,Bc="31664",bo="direct",vi="44693",f0=454,Bb=1520,hh="0.45",qA="2710",Ba=1914,gz=429,ac="input",vh="39839",A$="\xc3\xa9ligibilit\xc3\xa9_logement",qz="0.2",fD=157,dR=364,lT="D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance",vg=390,nA=498,A_=4586,fc="examples/aides_logement/autres_sources.catala_fr",A9=283,vf="calculAllocationLogement",qy="mkdir",gO=379,gy="Article L822-3",a4="Chapitre III : Modalit\xc3\xa9s de liquidation et de versement",dQ=1013,nz=592,ny=": No such file or directory",ve="\xc3\xa9quivalence_loyer",hg=378,vd=655,fZ="Chapitre VII : Calcul des allocations de logement en secteur logement-foyer",gN="Titre 5 : D\xc3\xa9partements d'outre-mer",lS=948,vc="766",va=2355,vb=4648,cO="CalculetteAidesAuLogementGardeAltern\xc3\xa9e",u$=151,A8="calculetteAidesAuLogement",rB="Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",fb=1137,A7="Descendant",cb="\xc3\x89ligibilit\xc3\xa9AllocationLogement",ba="D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte",A6=3832,nx=626,A5="\xc3\xa9ligibilit\xc3\xa9_apl",u_="taux",qx="Demandeur",bh="CalculAllocationLogementLocatif",A4="BeginCall([ ",u9=332,rA=822,j3="caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1",A3="GardeAltern\xc3\xa9ePartageAllocations",fC=932,A2="coefficient_multiplicateur_d832_25",is=3937,a1="\xc3\x89pilogue",A1=1931,ao="CalculAllocationLogementFoyer",A0="943900",AZ="bmaf",AY="calculEquivalenceLoyerMinimale",lR=2006,hf="0.95",AW="contributionsSocialesAidesPersonnelleLogement",AX="ressourcesAidesPersonnelleLogement",lQ=863,cC=363,u7="Pervasives.do_at_exit",u8="utf8",AV="222300",qw="ComplementFamilial",AU="225000",u6=3736,u5="date_signature_pr\xc3\xaat_in",u4="\xc3\xa9ligibilit\xc3\xa9_allocation_logement",rz="0.0283",aR=854,ry="0.16",lP=643,aQ="Article 18",u3=3105,ir=418,AT="36815",eE=134,dB="Section 2 : Conditions relatives aux ressources",AS=2109,aK="\xc3\x89ligibilit\xc3\xa9 aux allocations de logement";function +byC(d,b,e,c,f){if(c<=b)for(var +a=1;a<=f;a++)e[c+a]=d[b+a];else +for(var +a=f;a>=1;a--)e[c+a]=d[b+a];return 0}function +byD(b,d,c,e){for(var +a=0;a=b.l||b.t==2&&c>=b.c.length)){b.c=d.t==4?pl(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else +if(b.t==2&&f==b.c.length){b.c+=d.t==4?pl(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else{if(b.t!=4)pa(b);var +g=d.c,h=b.c;if(d.t==4)if(f<=e)for(var +a=0;a=0;a--)h[f+a]=g[e+a];else{var +i=Math.min(c,g.length-e);for(var +a=0;a>=1;if(b==0)return d;a+=a;c++;if(c==9)a.slice(0,1)}}function +gW(a){if(a.t==2)a.c+=jz(a.l-a.c.length,"\0");else +a.c=pl(a.c,0,a.c.length);a.t=0}function +GP(a){if(a.length<24){for(var +b=0;bcQ)return false;return true}else +return!/[^\x00-\x7f]/.test(a)}function +sP(e){for(var +j=aa,c=aa,g,f,h,a,b=0,i=e.length;brD){c.substr(0,1);j+=c;c=aa;j+=e.slice(b,d)}else +c+=e.slice(b,d);if(d==i)break;b=d}a=1;if(++b=0xd7ff&&a<0xe000)a=2}else{a=3;if(++b0x10ffff)a=3}}}}}if(a<4){b-=a;c+="\ufffd"}else +if(a>ew)c+=String.fromCharCode(0xd7c0+(a>>10),ys+(a&0x3FF));else +c+=String.fromCharCode(a);if(c.length>gK){c.substr(0,1);j+=c;c=aa}}return j+c}function +eZ(c,a,b){this.t=c;this.c=a;this.l=b}eZ.prototype.toString=function(){switch(this.t){case +9:return this.c;default:gW(this);case +0:if(GP(this.c)){this.t=9;return this.c}this.t=8;case +8:return this.c}};eZ.prototype.toUtf16=function(){var +a=this.toString();if(this.t==9)return a;return sP(a)};eZ.prototype.slice=function(){var +a=this.t==4?this.c.slice():this.c;return new +eZ(this.t,a,this.l)};function +Gq(a){return new +eZ(0,a,a.length)}function +a(a){return Gq(a)}function +sL(c,b){bzm(c,a(b))}var +bL=[0];function +bR(a){sL(bL.Invalid_argument,a)}function +Go(){bR(r0)}function +bY(a,c,b){b&=dy;if(a.t!=4){if(c==a.c.length){a.c+=String.fromCharCode(b);if(c+1==a.l)a.t=0;return 0}pa(a)}a.c[c]=b;return 0}function +d3(b,a,c){if(a>>>0>=b.l)Go();return bY(b,a,c)}function +kY(a,b){switch(a.t&6){default:if(b>=a.c.length)return 0;case +0:return a.c.charCodeAt(b);case +4:return a.c[b]}}function +dG(c,a){if(c.fun)return dG(c.fun,a);if(typeof +c!=="function")return c;var +b=c.length|0;if(b===0)return c.apply(null,a);var +e=a.length|0,d=b-e|0;if(d==0)return c.apply(null,a);else +if(d<0)return dG(c.apply(null,a.slice(0,b)),a.slice(b));else +return function(){var +e=arguments.length==0?1:arguments.length,d=new +Array(a.length+e);for(var +b=0;b>>0>=a.length-1)kX();return a}function +o_(a){if(isFinite(a)){if(Math.abs(a)>=2.2250738585072014e-308)return 0;if(a!=0)return 1;return 2}return isNaN(a)?4:3}function +byL(){return[0]}function +bZ(a){if(a<0)bR("Bytes.create");return new +eZ(a?2:9,aa,a)}function +k6(a){throw a}function +jy(){k6(bL.Division_by_zero)}function +Gt(b,a){if(a==0)jy();return b/a|0}function +d4(a){a.t&6&&gW(a);return a.c}var +bzB=Math.log2&&Math.log2(1.1235582092889474E+307)==1020;function +GO(a){if(bzB)return Math.floor(Math.log2(a));var +b=0;if(a==0)return-Infinity;if(a>=1)while(a>=2){a/=2;b++}else +while(a<1){a*=2;b--}return b}function +sE(c){var +a=new(aL.Float32Array)(1);a[0]=c;var +b=new(aL.Int32Array)(a.buffer);return b[0]|0}var +GA=Math.pow(2,-24);function +aT(b,c,a){this.lo=b&fi;this.mi=c&fi;this.hi=a&ew}aT.prototype.caml_custom="_j";aT.prototype.copy=function(){return new +aT(this.lo,this.mi,this.hi)};aT.prototype.ucompare=function(a){if(this.hi>a.hi)return 1;if(this.hia.mi)return 1;if(this.mia.lo)return 1;if(this.loc)return 1;if(ba.mi)return 1;if(this.mia.lo)return 1;if(this.lo>24),c=-this.hi+(b>>24);return new +aT(a,b,c)};aT.prototype.add=function(a){var +b=this.lo+a.lo,c=this.mi+a.mi+(b>>24),d=this.hi+a.hi+(c>>24);return new +aT(b,c,d)};aT.prototype.sub=function(a){var +b=this.lo-a.lo,c=this.mi-a.mi+(b>>24),d=this.hi-a.hi+(c>>24);return new +aT(b,c,d)};aT.prototype.mul=function(a){var +b=this.lo*a.lo,c=(b*GA|0)+this.mi*a.lo+this.lo*a.mi,d=(c*GA|0)+this.hi*a.lo+this.mi*a.mi+this.lo*a.hi;return new +aT(b,c,d)};aT.prototype.isZero=function(){return(this.lo|this.mi|this.hi)==0};aT.prototype.isNeg=function(){return this.hi<<16<0};aT.prototype.and=function(a){return new +aT(this.lo&a.lo,this.mi&a.mi,this.hi&a.hi)};aT.prototype.or=function(a){return new +aT(this.lo|a.lo,this.mi|a.mi,this.hi|a.hi)};aT.prototype.xor=function(a){return new +aT(this.lo^a.lo,this.mi^a.mi,this.hi^a.hi)};aT.prototype.shift_left=function(a){a=a&63;if(a==0)return this;if(a<24)return new +aT(this.lo<>24-a,this.hi<>24-a);if(a<48)return new +aT(0,this.lo<>48-a);return new +aT(0,0,this.lo<>a|this.mi<<24-a,this.mi>>a|this.hi<<24-a,this.hi>>a);if(a<48)return new +aT(this.mi>>a-24|this.hi<<48-a,this.hi>>a-24,0);return new +aT(this.hi>>a-48,0,0)};aT.prototype.shift_right=function(a){a=a&63;if(a==0)return this;var +c=this.hi<<16>>16;if(a<24)return new +aT(this.lo>>a|this.mi<<24-a,this.mi>>a|c<<24-a,this.hi<<16>>a>>>16);var +b=this.hi<<16>>31;if(a<48)return new +aT(this.mi>>a-24|this.hi<<48-a,this.hi<<16>>a-24>>16,b&ew);return new +aT(this.hi<<16>>a-32,b,b)};aT.prototype.lsl1=function(){this.hi=this.hi<<1|this.mi>>23;this.mi=(this.mi<<1|this.lo>>23)&fi;this.lo=this.lo<<1&fi};aT.prototype.lsr1=function(){this.lo=(this.lo>>>1|this.mi<<23)&fi;this.mi=(this.mi>>>1|this.hi<<23)&fi;this.hi=this.hi>>>1};aT.prototype.udivmod=function(e){var +c=0,b=this.copy(),a=e.copy(),d=new +aT(0,0,0);while(b.ucompare(a)>0){c++;a.lsl1()}while(c>=0){c--;d.lsl1();if(b.ucompare(a)>=0){d.lo++;b=b.sub(a)}a.lsr1()}return{quotient:d,modulus:b}};aT.prototype.div=function(a){var +b=this;if(a.isZero())jy();var +d=b.hi^a.hi;if(b.hi&eI)b=b.neg();if(a.hi&eI)a=a.neg();var +c=b.udivmod(a).quotient;if(d&eI)c=c.neg();return c};aT.prototype.mod=function(b){var +a=this;if(b.isZero())jy();var +d=a.hi;if(a.hi&eI)a=a.neg();if(b.hi&eI)b=b.neg();var +c=a.udivmod(b).modulus;if(d&eI)c=c.neg();return c};aT.prototype.toInt=function(){return this.lo|this.mi<<24};aT.prototype.toFloat=function(){return(this.hi<<16)*Math.pow(2,32)+this.mi*Math.pow(2,24)+this.lo};aT.prototype.toArray=function(){return[this.hi>>8,this.hi&dy,this.mi>>16,this.mi>>8&dy,this.mi&dy,this.lo>>16,this.lo>>8&dy,this.lo&dy]};aT.prototype.lo32=function(){return this.lo|(this.mi&dy)<<24};aT.prototype.hi32=function(){return this.mi>>>8&ew|this.hi<<16};function +gi(b,c,a){return new +aT(b,c,a)}function +pd(a){if(!isFinite(a)){if(isNaN(a))return gi(1,0,vu);return a>0?gi(0,0,vu):gi(0,0,0xfff0)}var +f=a==0&&1/a==-Infinity?eI:a>=0?0:eI;if(f)a=-a;var +b=GO(a)+ea;if(b<=0){b=0;a/=Math.pow(2,-zC)}else{a/=Math.pow(2,b-F$);if(a<16){a*=2;b-=1}if(b==0)a/=2}var +d=Math.pow(2,24),c=a|0;a=(a-c)*d;var +e=a|0;a=(a-e)*d;var +g=a|0;c=c&rU|f|b<<4;return gi(g,e,c)}function +k1(a){return a.toArray()}function +Gn(c,b,g){c.write(32,b.dims.length);c.write(32,b.kind|b.layout<<8);if(b.caml_custom==of)for(var +a=0;a>4;if(c==2047)return(f|g|b&rU)==0?b&eI?-Infinity:Infinity:NaN;var +e=Math.pow(2,-24),a=(f*e+g)*e+(b&rU);if(c>0){a+=16;a*=Math.pow(2,c-F$)}else +a*=Math.pow(2,-zC);if(b&eI)a=-a;return a}function +sy(b){var +d=b.length,c=1;for(var +a=0;a>>24&dy|(a&ew)<<8,a>>>16&ew)}function +sG(a){return a.hi32()}function +sH(a){return a.lo32()}var +byG=of;function +gg(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}gg.prototype.caml_custom=byG;gg.prototype.offset=function(b){var +c=0;if(typeof +b==="number")b=[b];if(!(b +instanceof +Array))bR("bigarray.js: invalid offset");if(this.dims.length!=b.length)bR("Bigarray.get/set: bad number of dimensions");if(this.layout==0)for(var +a=0;a=this.dims[a])kX();c=c*this.dims[a]+b[a]}else +for(var +a=this.dims.length-1;a>=0;a--){if(b[a]<1||b[a]>this.dims[a])kX();c=c*this.dims[a]+(b[a]-1)}return c};gg.prototype.get=function(a){switch(this.kind){case +7:var +d=this.data[a*2+0],b=this.data[a*2+1];return Gz(d,b);case +10:case +11:var +e=this.data[a*2+0],c=this.data[a*2+1];return[j_,e,c];default:return this.data[a]}};gg.prototype.set=function(a,b){switch(this.kind){case +7:this.data[a*2+0]=sH(b);this.data[a*2+1]=sG(b);break;case +10:case +11:this.data[a*2+0]=b[1];this.data[a*2+1]=b[2];break;default:this.data[a]=b;break}return 0};gg.prototype.fill=function(b){switch(this.kind){case +7:var +c=sH(b),e=sG(b);if(c==e)this.data.fill(c);else +for(var +a=0;ad)return 1;if(c!=d){if(!g)return NaN;if(c==c)return 1;if(d==d)return-1}}break;case +7:for(var +a=0;ab.data[a+1])return 1;if(this.data[a]>>>0>>0)return-1;if(this.data[a]>>>0>b.data[a]>>>0)return 1}break;case +2:case +3:case +4:case +5:case +6:case +8:case +9:case +12:for(var +a=0;ab.data[a])return 1}break}return 0};function +jv(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}jv.prototype=new +gg();jv.prototype.offset=function(a){if(typeof +a!=="number")if(a +instanceof +Array&&a.length==1)a=a[0];else +bR("Ml_Bigarray_c_1_1.offset");if(a<0||a>=this.dims[0])kX();return a};jv.prototype.get=function(a){return this.data[a]};jv.prototype.set=function(a,b){this.data[a]=b;return 0};jv.prototype.fill=function(a){this.data.fill(a);return 0};function +Gj(c,d,a,b){var +e=Gl(c);if(sy(a)*e!=b.length)bR("length doesn't match dims");if(d==0&&a.length==1&&e==1)return new +jv(c,d,a,b);return new +gg(c,d,a,b)}function +dr(b){if(!bL.Failure)bL.Failure=[bm,a(q6),-3];sL(bL.Failure,b)}function +Gk(b,v,r){var +i=b.read32s();if(i<0||i>16)dr("input_value: wrong number of bigarray dimensions");var +p=b.read32s(),j=p&dy,o=p>>8&1,h=[];if(r==of)for(var +a=0;a>>32-15;a=gl(a,0x1b873593);b^=a;b=b<<13|b>>>32-13;return(b+(b<<2)|0)+(0xe6546b64|0)|0}function +byV(a,b){a=cv(a,sH(b));a=cv(a,sG(b));return a}function +sC(a,b){return byV(a,pd(b))}function +Gm(c){var +b=sy(c.dims),d=0;switch(c.kind){case +2:case +3:case +12:if(b>eB)b=eB;var +e=0,a=0;for(a=0;a+4<=c.data.length;a+=4){e=c.data[a+0]|c.data[a+1]<<8|c.data[a+2]<<16|c.data[a+3]<<24;d=cv(d,e)}e=0;switch(b&3){case +3:e=c.data[a+2]<<16;case +2:e|=c.data[a+1]<<8;case +1:e|=c.data[a+0];d=cv(d,e)}break;case +4:case +5:if(b>ei)b=ei;var +e=0,a=0;for(a=0;a+2<=c.data.length;a+=2){e=c.data[a+0]|c.data[a+1]<<16;d=cv(d,e)}if((b&1)!=0)d=cv(d,c.data[a]);break;case +6:if(b>64)b=64;for(var +a=0;a64)b=64;for(var +a=0;a32)b=32;b*=2;for(var +a=0;a64)b=64;for(var +a=0;a32)b=32;for(var +a=0;a0?b(c,f,e):b(f,c,e);if(e&&a!=a)return d;if(+a!=+a)return+a;if((a|0)!=0)return a|0}return d}function +k2(a){return a +instanceof +eZ}function +pg(a){return k2(a)}function +Gs(a){if(typeof +a==="number")return iD;else +if(k2(a))return kb;else +if(pg(a))return 1252;else +if(a +instanceof +Array&&a[0]===a[0]>>>0&&a[0]<=m0){var +b=a[0]|0;return b==j_?0:b}else +if(a +instanceof +String)return v1;else +if(typeof +a=="string")return v1;else +if(a +instanceof +Number)return iD;else +if(a&&a.caml_custom)return rG;else +if(a&&a.compare)return 1256;else +if(typeof +a=="function")return 1247;else +if(typeof +a=="symbol")return 1251;return 1001}function +gj(a,b){if(ab.c?1:0}function +sN(a,b){return Gp(a,b)}function +o$(a,b,d){var +e=[];for(;;){if(!(d&&a===b)){var +f=Gs(a);if(f==hm){a=a[1];continue}var +g=Gs(b);if(g==hm){b=b[1];continue}if(f!==g){if(f==iD){if(g==rG)return Gr(a,b,-1,d);return-1}if(g==iD){if(f==rG)return Gr(b,a,1,d);return 1}return fb)return 1;if(a!=b){if(!d)return NaN;if(a==a)return 1;if(b==b)return-1}break;case +1001:if(ab)return 1;if(a!=b){if(!d)return NaN;if(a==a)return 1;if(b==b)return-1}break;case +1251:if(a!==b){if(!d)return NaN;return 1}break;case +1252:var +a=d4(a),b=d4(b);if(a!==b){if(ab)return 1}break;case +12520:var +a=a.toString(),b=b.toString();if(a!==b){if(ab)return 1}break;case +246:case +254:default:if(a.length!=b.length)return a.length1)e.push(a,b,1);break}}if(e.length==0)return 0;var +h=e.pop();b=e.pop();a=e.pop();if(h+10)if(c==0&&(b>=a.l||a.t==2&&b>=a.c.length))if(d==0){a.c=aa;a.t=2}else{a.c=jz(b,String.fromCharCode(d));a.t=b==a.l?0:2}else{if(a.t!=4)pa(a);for(b+=c;c0&&b===b)return b;a=a.replace(/_/g,aa);b=+a;if(a.length>0&&b===b||/^[+-]?nan$/i.test(a))return b;var +c=/^ *([+-]?)0x([0-9a-f]+)\.?([0-9a-f]*)(p([+-]?[0-9]+))?/i.exec(a);if(c){var +d=c[3].replace(/0+$/,aa),f=parseInt(c[1]+c[2]+d,16),e=(c[5]|0)-4*d.length;b=f*Math.pow(2,e);return b}if(/^\+?inf(inity)?$/i.test(a))return Infinity;if(/^-inf(inity)?$/i.test(a))return-Infinity;dr("float_of_string")}function +sK(d){d=d4(d);var +e=d.length;if(e>31)bR("format_int: format too long");var +a={justify:fk,signstyle:cH,filler:fm,alternate:false,base:0,signedconv:false,width:0,uppercase:false,sign:1,prec:-1,conv:"f"};for(var +c=0;c=0&&b<=9){a.width=a.width*10+b;c++}c--;break;case".":a.prec=0;c++;while(b=d.charCodeAt(c)-48,b>=0&&b<=9){a.prec=a.prec*10+b;c++}c--;case"d":case"i":a.signedconv=true;case"u":a.base=10;break;case"x":a.base=16;break;case"X":a.base=16;a.uppercase=true;break;case"o":a.base=8;break;case"e":case"f":case"g":a.signedconv=true;a.conv=b;break;case"E":case"F":case"G":a.signedconv=true;a.uppercase=true;a.conv=b.toLowerCase();break}}return a}function +sA(b,f){if(b.uppercase)f=f.toUpperCase();var +e=f.length;if(b.signedconv&&(b.sign<0||b.signstyle!=cH))e++;if(b.alternate){if(b.base==8)e+=1;if(b.base==16)e+=2}var +c=aa;if(b.justify==fk&&b.filler==fm)for(var +d=e;d20){c-=20;a/=Math.pow(10,c);a+=new +Array(c+1).join(p);if(b>0)a=a+ev+new +Array(b+1).join(p);return a}else +return a.toFixed(b)}}var +a,e=sK(i),d=e.prec<0?6:e.prec;if(c<0||c==0&&1/c==-Infinity){e.sign=-1;c=-c}if(isNaN(c)){a=q8;e.filler=fm}else +if(!isFinite(c)){a=F4;e.filler=fm}else +switch(e.conv){case"e":var +a=c.toExponential(d),b=a.length;if(a.charAt(b-3)==o1)a=a.slice(0,b-1)+p+a.slice(b-1);break;case"f":a=j(c,d);break;case"g":d=d?d:1;a=c.toExponential(d-1);var +h=a.indexOf(o1),g=+a.slice(h+1);if(g<-4||c>=1e21||c.toFixed(0).length>d){var +b=h-1;while(a.charAt(b)==p)b--;if(a.charAt(b)==ev)b--;a=a.slice(0,b+1)+a.slice(h);b=a.length;if(a.charAt(b-3)==o1)a=a.slice(0,b-1)+p+a.slice(b-1);break}else{var +f=d;if(g<0){f-=g+1;a=c.toFixed(f)}else +while(a=c.toFixed(f),a.length>d+1)f--;if(f){var +b=a.length-1;while(a.charAt(b)==p)b--;if(a.charAt(b)==ev)b--;a=a.slice(0,b+1)}}break}return sA(e,a)}function +pb(e,c){if(d4(e)==sm)return a(aa+c);var +b=sK(e);if(c<0)if(b.signedconv){b.sign=-1;c=-c}else +c>>>=0;var +d=c.toString(b.base);if(b.prec>=0){b.filler=fm;var +f=b.prec-d.length;if(f>0)d=jz(f,p)+d}return sA(b,d)}var +GH=0;function +cZ(){return GH++}function +byP(a){if(a==0||!isFinite(a))return[0,a,0];var +c=a<0;if(c)a=-a;var +b=Math.max(-ea,GO(a)+1);a*=Math.pow(2,-b);while(a=1){a*=zS;b++}if(c)a=-a;return[0,a,b]}function +ek(a){return a.toUtf16()}function +k7(){return typeof +aL.process!=="undefined"&&typeof +aL.process.versions!=="undefined"&&typeof +aL.process.versions.node!=="undefined"}function +bzC(){function +a(a){if(a.charAt(0)===eA)return[aa,a.substring(1)];return}function +b(c){var +g=/^([a-zA-Z]:|[\\/]{2}[^\\/]+[\\/]+[^\\/]+)?([\\/])?([\s\S]*?)$/,a=g.exec(c),b=a[1]||aa,e=Boolean(b&&b.charAt(1)!==":");if(Boolean(a[2]||e)){var +d=a[1]||aa,f=a[2]||aa;return[d,c.substring(d.length+f.length)]}return}return k7()&&aL.process&&aL.process.platform?aL.process.platform==="win32"?b:a:a}var +sT=bzC();function +GM(a){return a.slice(-1)!==eA?a+eA:a}if(k7()&&aL.process&&aL.process.cwd)var +kZ=aL.process.cwd().replace(/\\/g,eA);else +var +kZ="/static";kZ=GM(kZ);function +by$(a){a=ek(a);if(!sT(a))a=kZ+a;var +e=sT(a),d=e[1].split(eA),b=[];for(var +c=0;c1)b.pop();break;case".":break;default:b.push(d[c]);break}b.unshift(e[0]);b.orig=a;return b}function +bzt(e){for(var +f=aa,b=f,a,h,c=0,g=e.length;crD){b.substr(0,1);f+=b;b=aa;f+=e.slice(c,d)}else +b+=e.slice(c,d);if(d==g)break;c=d}if(a>6);b+=String.fromCharCode(dN|a&hs)}else +if(a<0xd800||a>=Ep)b+=String.fromCharCode(vJ|a>>12,dN|a>>6&hs,dN|a&hs);else +if(a>=0xdbff||c+1==g||(h=e.charCodeAt(c+1))Ep)b+="\xef\xbf\xbd";else{c++;a=(a<<10)+h-0x35fdc00;b+=String.fromCharCode(De|a>>18,dN|a>>12&hs,dN|a>>6&hs,dN|a&hs)}if(b.length>gK){b.substr(0,1);f+=b;b=aa}}return f+b}function +byK(a){var +b=9;if(!GP(a))b=8,a=bzt(a);return new +eZ(b,a,a.length)}function +aS(a){return byK(a)}var +bzT=["E2BIG","EACCES","EAGAIN","EBADF","EBUSY","ECHILD","EDEADLK","EDOM",vv,"EFAULT","EFBIG","EINTR","EINVAL","EIO","EISDIR","EMFILE","EMLINK","ENAMETOOLONG","ENFILE","ENODEV",sp,"ENOEXEC","ENOLCK","ENOMEM","ENOSPC","ENOSYS",sa,Fz,"ENOTTY","ENXIO","EPERM","EPIPE","ERANGE","EROFS","ESPIPE","ESRCH","EXDEV","EWOULDBLOCK","EINPROGRESS","EALREADY","ENOTSOCK","EDESTADDRREQ","EMSGSIZE","EPROTOTYPE","ENOPROTOOPT","EPROTONOSUPPORT","ESOCKTNOSUPPORT","EOPNOTSUPP","EPFNOSUPPORT","EAFNOSUPPORT","EADDRINUSE","EADDRNOTAVAIL","ENETDOWN","ENETUNREACH","ENETRESET","ECONNABORTED","ECONNRESET","ENOBUFS","EISCONN","ENOTCONN","ESHUTDOWN","ETOOMANYREFS","ETIMEDOUT","ECONNREFUSED","EHOSTDOWN","EHOSTUNREACH","ELOOP","EOVERFLOW"];function +g0(d,f,e,a){var +b=bzT.indexOf(d);if(b<0){if(a==null)a=-9999;b=[0,a]}var +c=[b,aS(f||aa),aS(e||aa)];return c}var +GF={};function +e3(a){return GF[a]}function +gZ(b,a){throw[0,b].concat(a)}function +byJ(a){return new +eZ(4,a,a.length)}function +bx(a){sL(bL.Sys_error,a)}function +bzk(a){bx(a+ny)}function +byI(b,a){if(a>>>0>=b.l)Go();return kY(b,a)}function +ds(a){return a.l}function +Gg(){}function +ct(a){this.data=a}ct.prototype=new +Gg();ct.prototype.truncate=function(a){var +b=this.data;this.data=bZ(a|0);gh(b,0,this.data,0,a)};ct.prototype.length=function(){return ds(this.data)};ct.prototype.write=function(b,d,g,a){var +c=this.length();if(b+a>=c){var +e=bZ(b+a),f=this.data;this.data=e;gh(f,0,this.data,0,c)}ej(d,g,this.data,b,a);return 0};ct.prototype.read=function(c,a,d,b){var +e=this.length();gh(this.data,c,a,d,b);return 0};ct.prototype.read_one=function(a){return byI(this.data,a)};ct.prototype.close=function(){};ct.prototype.constructor=ct;function +cY(b,a){this.content={};this.root=b;this.lookupFun=a}cY.prototype.nm=function(a){return this.root+a};cY.prototype.create_dir_if_needed=function(d){var +c=d.split(eA),b=aa;for(var +a=0;a>1|1;if(h=0)}function +sD(d,b){var +e=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b.charCodeAt(a)|b.charCodeAt(a+1)<<8|b.charCodeAt(a+2)<<16|b.charCodeAt(a+3)<<24;d=cv(d,c)}c=0;switch(e&3){case +3:c=b.charCodeAt(a+2)<<16;case +2:c|=b.charCodeAt(a+1)<<8;case +1:c|=b.charCodeAt(a);d=cv(d,c)}d^=e;return d}function +byW(a,b){return sD(a,d4(b))}function +byT(d,b){var +e=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b[a]|b[a+1]<<8|b[a+2]<<16|b[a+3]<<24;d=cv(d,c)}c=0;switch(e&3){case +3:c=b[a+2]<<16;case +2:c|=b[a+1]<<8;case +1:c|=b[a];d=cv(d,c)}d^=e;return d}function +GC(a){switch(a.t&6){default:gW(a);case +0:return a.c;case +4:return a.c}}function +byS(b,c){var +a=GC(c);return typeof +a==="string"?sD(b,a):byT(b,a)}function +byU(a){a^=a>>>16;a=gl(a,0x85ebca6b|0);a^=a>>>13;a=gl(a,0xc2b2ae35|0);a^=a>>>16;return a}function +byR(j,l,n,m){var +f,g,h,d,c,b,a,e,i;d=l;if(d<0||d>eB)d=eB;c=j;b=n;f=[m];g=0;h=1;while(g0){a=f[g++];if(a&&a.caml_custom){if(jw[a.caml_custom]&&jw[a.caml_custom].hash){var +k=jw[a.caml_custom].hash(a);b=cv(b,k);c--}}else +if(a +instanceof +Array&&a[0]===(a[0]|0))switch(a[0]){case +248:b=cv(b,a[2]);c--;break;case +250:f[--g]=a[1];break;default:var +o=a.length-1<<10|a[0];b=cv(b,o);for(e=1,i=a.length;e=d)break;f[h++]=a[e]}break}else +if(k2(a)){b=byS(b,a);c--}else +if(pg(a)){b=byW(b,a);c--}else +if(typeof +a==="string"){b=sD(b,a);c--}else +if(a===(a|0)){b=cv(b,a+a+1);c--}else +if(a===+a){b=sC(b,a);c--}}b=byU(b);return b&0x3FFFFFFF}function +byX(a,c,k){if(!isFinite(a)){if(isNaN(a))return aS(q8);return aS(a>0?FX:"-infinity")}var +i=a==0&&1/a==-Infinity?1:a>=0?0:1;if(i)a=-a;var +d=0;if(a==0);else +if(a<1)while(a<1&&d>-1022){a*=2;d--}else +while(a>=2){a/=2;d++}var +j=d<0?aa:fk,e=aa;if(i)e=cH;else +switch(k){case +43:e=fk;break;case +32:e=fm;break;default:break}if(c>=0&&c<13){var +g=Math.pow(2,c*4);a=Math.round(a*g)/g}var +b=a.toString(16);if(c>=0){var +h=b.indexOf(ev);if(h<0)b+=ev+jz(c,p);else{var +f=h+1+c;if(b.length>24&fi,a>>31&ew)}function +by8(a){return a.toInt()}function +by2(a){return+a.isNeg()}function +by5(a){return a.neg()}function +by0(g,c){var +a=sK(g);if(a.signedconv&&by2(c)){a.sign=-1;c=by5(c)}var +b=aa,h=by6(a.base),f="0123456789abcdef";do{var +e=c.udivmod(h);c=e.quotient;b=f.charAt(by8(e.modulus))+b}while(!by3(c));if(a.prec>=0){a.filler=fm;var +d=a.prec-b.length;if(d>0)b=jz(d,p)+b}return sA(a,b)}function +by7(a,b){return a.or(b)}function +pe(a){return a.toFloat()}function +bzj(c){var +a=0,e=aI(c),b=10,d=1;if(e>0)switch(d6(c,a)){case +45:a++;d=-1;break;case +43:a++;d=1;break}if(a+1=48&&a<=57)return a-48;if(a>=65&&a<=90)return a-55;if(a>=97&&a<=gU)return a-87;return-1}function +pf(f){var +h=bzj(f),c=h[0],i=h[1],d=h[2],g=aI(f),j=-1>>>0,e=c=d)dr(mX);var +a=b;for(c++;c=d)break;a=d*a+b;if(a>j)dr(mX)}if(c!=g)dr(mX);a=i*a;if(d==10&&(a|0)!=a)dr(mX);return a|0}function +gk(a){return a.slice(1)}function +gX(c){var +d=c.length,b=new +Array(d+1);b[0]=0;for(var +a=0;a0){var +c=new +Array(b);for(var +a=0;aea){a-=ea;b*=Math.pow(2,ea);if(a>ea){a-=ea;b*=Math.pow(2,ea)}}if(a<-ea){a+=ea;b*=Math.pow(2,-ea)}b*=Math.pow(2,a);return b}function +GB(a,b){return+(o$(a,b,false)<0)}function +k3(b){b=d4(b);var +d=b.length/2,c=new +Array(d);for(var +a=0;a>16;return c}function +sI(b,t,a){var +n=2,o=3,r=5,d=6,h=7,g=8,j=9,m=1,l=2,q=3,s=4,p=5;if(!b.lex_default){b.lex_base=k3(b[m]);b.lex_backtrk=k3(b[l]);b.lex_check=k3(b[p]);b.lex_trans=k3(b[s]);b.lex_default=k3(b[q])}var +e,c=t,k=Gh(a[n]);if(c>=0){a[h]=a[r]=a[d];a[g]=-1}else +c=-c-1;for(;;){var +f=b.lex_base[c];if(f<0)return-f-1;var +i=b.lex_backtrk[c];if(i>=0){a[h]=a[d];a[g]=i}if(a[d]>=a[o])if(a[j]==0)return-c-1;else +e=eB;else{e=k[a[d]];a[d]++}if(b.lex_check[f+e]==c)c=b.lex_trans[f+e];else +c=b.lex_default[c];if(c<0){a[d]=a[h];if(a[g]==-1)dr("lexing: empty token");else +return a[g]}else +if(e==eB)a[j]=0}}function +e1(a,d){if(a<0)kX();var +a=a+1|0,b=new +Array(a);b[0]=0;for(var +c=1;c>>32-b,c)}function +g(c,b,d,e,h,f,g){return a(b&d|~b&e,c,b,h,f,g)}function +h(d,b,e,c,h,f,g){return a(b&c|e&~c,d,b,h,f,g)}function +i(c,b,d,e,h,f,g){return a(b^d^e,c,b,h,f,g)}function +j(c,b,d,e,h,f,g){return a(d^(b|~e),c,b,h,f,g)}function +k(f,n){var +e=n;f[e>>2]|=dN<<8*(e&3);for(e=(e&~0x3)+8;(e&0x3F)<60;e+=4)f[(e>>2)-1]=0;f[(e>>2)-1]=n<<3;f[e>>2]=n>>29&0x1FFFFFFF;var +k=[0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476];for(e=0;e>8*m&0xFF;return o}return function(i,g,f){var +e=[],h=GC(i);if(typeof +h==="string"){var +d=h;for(var +a=0;a>2]=d.charCodeAt(b)|d.charCodeAt(b+1)<<8|d.charCodeAt(b+2)<<16|d.charCodeAt(b+3)<<24}for(;a>2]|=d.charCodeAt(a+g)<<8*(a&3)}else{var +c=h;for(var +a=0;a>2]=c[b]|c[b+1]<<8|c[b+2]<<16|c[b+3]<<24}for(;a>2]|=c[a+g]<<8*(a&3)}return bzq(k(e,f))}}();function +bzb(c,b,a){return bza(fr(c),b,a)}function +bzc(){return 0}var +e2=new +Array();function +gY(c){var +a=e2[c];if(!a.opened)bx("Cannot flush a closed channel");if(!a.buffer||a.buffer==aa)return 0;if(a.fd&&bL.fds[a.fd]&&bL.fds[a.fd].output){var +b=bL.fds[a.fd].output;switch(b.length){case +2:b(c,a.buffer);break;default:b(a.buffer)}}a.buffer=aa;return 0}function +GK(e,f){var +b=e2[e],d=a(f),c=aI(d);b.file.write(b.offset,d,0,c);b.offset+=c;return 0}function +bzx(a){var +a=sP(a),b=aL;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stderr.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var +c=b.console;c&&c.error&&c.error(a)}}function +bzy(a){var +a=sP(a),b=aL;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stdout.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var +c=b.console;c&&c.log&&c.log(a)}}function +pm(c,e,d,a){if(bL.fds===undefined)bL.fds=new +Array();a=a?a:{};var +b={};b.file=d;b.offset=a.append?d.length():0;b.flags=a;b.output=e;bL.fds[c]=b;if(!bL.fd_last_idx||c>bL.fd_last_idx)bL.fd_last_idx=c;return c}function +bzU(c,b,g){var +a={};while(b){switch(b[1]){case +0:a.rdonly=1;break;case +1:a.wronly=1;break;case +2:a.append=1;break;case +3:a.create=1;break;case +4:a.truncate=1;break;case +5:a.excl=1;break;case +6:a.binary=1;break;case +7:a.text=1;break;case +8:a.nonblock=1;break}b=b[2]}if(a.rdonly&&a.wronly)bx(d4(c)+wd);if(a.text&&a.binary)bx(d4(c)+Cy);var +d=GV(c),e=d.device.open(d.rest,a),f=bL.fd_last_idx?bL.fd_last_idx:0;return pm(f+1,GK,e,a)}pm(0,GK,new +ct(bZ(0)));pm(1,bzy,new +ct(bZ(0)));pm(2,bzx,new +ct(bZ(0)));function +bzd(a){var +c=bL.fds[a];if(c.flags.wronly)bx(xR+a+" is writeonly");var +d=null;if(a==0&&k7()){var +e=require("fs");d=function(){return aS(e.readFileSync(0,u8))}}var +b={file:c.file,offset:c.offset,fd:a,opened:true,out:false,refill:d};e2[b.fd]=b;return b.fd}function +GD(c){var +b=bL.fds[c];if(b.flags.rdonly)bx(xR+c+" is readonly");var +a={file:b.file,offset:b.offset,fd:c,opened:true,out:true,buffer:aa};e2[a.fd]=a;return a.fd}function +bze(){var +b=0;for(var +a=0;a>>0)return a[0];else +if(k2(a))return kb;else +if(pg(a))return kb;else +if(a +instanceof +Function||typeof +a=="function")return 247;else +if(a&&a.caml_custom)return m0;else +return iD}function +d5(b,c,a){if(a&&aL.toplevelReloc)b=aL.toplevelReloc(a);bL[b+1]=c;if(a)bL[a]=c}function +sM(a,b){GF[d4(a)]=b;return 0}function +bzn(a){a[2]=GH++;return a}function +byH(a,b){if(a===b)return 1;a.t&6&&gW(a);b.t&6&&gW(b);return a.c==b.c?1:0}function +pk(a,b){return byH(a,b)}function +bzp(){bR(r0)}function +bA(b,a){if(a>>>0>=aI(b))bzp();return d6(b,a)}function +M(a,b){return 1-pk(a,b)}function +bzr(){return 0x7FFFFFFF/4|0}function +bzl(){k6(bL.Not_found)}function +GL(c){var +a=aL,b=ek(c);if(a.process&&a.process.env&&a.process.env[b]!=undefined)return aS(a.process.env[b]);if(aL.jsoo_static_env&&aL.jsoo_static_env[b])return aS(aL.jsoo_static_env[b]);bzl()}function +bzs(){if(aL.crypto)if(typeof +aL.crypto.getRandomValues==="function"){var +a=new(aL.Uint32Array)(1);aL.crypto.getRandomValues(a);return[0,a[0]]}else +if(aL.crypto.randomBytes==="function"){var +b=aL.crypto.randomBytes(4),a=new(aL.Uint32Array)(b);return[0,a[0]]}var +c=new +Date().getTime(),d=c^Dq*Math.random();return[0,d]}function +sO(a){var +b=1;while(a&&a.joo_tramp){a=a.joo_tramp.apply(null,a.joo_args);b++}return a}function +cw(b,a){return{joo_tramp:b,joo_args:a}}function +GJ(a){return a}function +o(a){if(a +instanceof +Array)return a;if(aL.RangeError&&a +instanceof +aL.RangeError&&a.message&&a.message.match(/maximum call stack/i))return GJ(bL.Stack_overflow);if(aL.InternalError&&a +instanceof +aL.InternalError&&a.message&&a.message.match(/too much recursion/i))return GJ(bL.Stack_overflow);if(a +instanceof +aL.Error&&e3(rF))return[0,e3(rF),a];return[0,bL.Failure,aS(String(a))]}var +as=function(y){"use strict";var +f=gR,$=7,s=9007199254740992,H=q(s),M="0123456789abcdefghijklmnopqrstuvwxyz",g=bzw.BigInt,F=typeof +g==="function";function +d(a,b,c,f){if(typeof +a==="undefined")return d[0];if(typeof +b!=="undefined")return+b===10&&!c?e(a):ae(a,b,c,f);return e(a)}function +a(b,a){this.value=b;this.sign=a;this.isSmall=false;this.caml_custom=mR}a.prototype=Object.create(d.prototype);function +b(a){this.value=a;this.sign=a<0;this.isSmall=true;this.caml_custom=mR}b.prototype=Object.create(d.prototype);function +c(a){this.value=a;this.caml_custom=mR}c.prototype=Object.create(d.prototype);function +l(a){return-s0)return Math.floor(a);return Math.ceil(a)}function +N(g,h){var +i=g.length,j=h.length,e=new +Array(i),b=0,d=f,c,a;for(a=0;a=d?1:0;e[a]=c-b*d}while(a0)e.push(b);return e}function +t(a,b){if(a.length>=b.length)return N(a,b);return N(b,a)}function +A(g,a){var +h=g.length,d=new +Array(h),c=f,e,b;for(b=0;b0){d[b++]=a%c;a=Math.floor(a/c)}return d}a.prototype.add=function(f){var +b=e(f);if(this.sign!==b.sign)return this.subtract(b.negate());var +c=this.value,d=b.value;if(b.isSmall)return new +a(A(c,Math.abs(d)),this.sign);return new +a(t(c,d),this.sign)};a.prototype.plus=a.prototype.add;b.prototype.add=function(g){var +f=e(g),c=this.value;if(c<0!==f.sign)return this.subtract(f.negate());var +d=f.value;if(f.isSmall){if(l(c+d))return new +b(c+d);d=q(Math.abs(d))}return new +a(A(d,Math.abs(c)),c<0)};b.prototype.plus=b.prototype.add;c.prototype.add=function(a){return new +c(this.value+e(a).value)};c.prototype.plus=c.prototype.add;function +w(d,h){var +g=d.length,i=h.length,c=new +Array(g),e=0,j=f,a,b;for(a=0;a=0)c=w(e,f);else{c=w(f,e);d=!d}c=n(c);if(typeof +c==="number"){if(d)c=-c;return new +b(c)}return new +a(c,d)}function +E(h,l,k){var +j=h.length,c=new +Array(j),i=-l,g=f,e,d;for(e=0;e=0)};b.prototype.minus=b.prototype.subtract;c.prototype.subtract=function(a){return new +c(this.value-e(a).value)};c.prototype.minus=c.prototype.subtract;a.prototype.negate=function(){return new +a(this.value,!this.sign)};b.prototype.negate=function(){var +c=this.sign,a=new +b(-this.value);a.sign=!c;return a};c.prototype.negate=function(){return new +c(-this.value)};a.prototype.abs=function(){return new +a(this.value,false)};b.prototype.abs=function(){return new +b(Math.abs(this.value))};c.prototype.abs=function(){return new +c(this.value>=0?this.value:-this.value)};function +L(g,j){var +i=g.length,l=j.length,o=i+l,c=B(o),n=f,e,d,a,h,k;for(a=0;a0){e[b++]=a%c;a=Math.floor(a/c)}return e}function +W(c,b){var +a=[];while(b-->0)a.push(0);return a.concat(c)}function +C(b,c){var +a=Math.max(b.length,c.length);if(a<=30)return L(b,c);a=Math.ceil(a/2);var +f=b.slice(a),d=b.slice(0,a),i=c.slice(a),h=c.slice(0,a),e=C(d,h),g=C(f,i),k=C(t(d,f),t(h,i)),j=t(t(e,W(w(w(k,e),g),a)),W(g,2*a));m(j);return j}function +aj(a,b){return-(w8*a)-w8*b+0.000015*a*b>0}a.prototype.multiply=function(j){var +h=e(j),c=this.value,b=h.value,i=this.sign!==h.sign,g;if(h.isSmall){if(b===0)return d[0];if(b===1)return this;if(b===-1)return this.negate();g=Math.abs(b);if(g=0;d--){j=g-1;if(b[d+h]!==l)j=Math.floor((b[d+h]*g+b[d+h-1])/l);c=0;e=0;m=i.length;for(a=0;ah)d=(d+1)*i;c=Math.ceil(d/p);do{j=u(b,c);if(o(j,a)<=0)break;c--}while(c);e.push(c);a=w(a,j)}e.reverse();return[n(e),n(a)]}function +O(i,e){var +g=i.length,h=B(g),j=f,a,d,b,c;b=0;for(a=g-1;a>=0;--a){c=b*j+i[a];d=r(c/e);b=c-d*e;h[a]=d|0}return[h,b|0]}function +i(h,w){var +m,j=e(w);if(F)return[new +c(h.value/j.value),new +c(h.value%j.value)];var +l=h.value,i=j.value,g;if(i===0)throw new +Error("Cannot divide by zero");if(h.isSmall){if(j.isSmall)return[new +b(r(l/i)),new +b(l%i)];return[d[0],h]}if(j.isSmall){if(i===1)return[h,d[0]];if(i==-1)return[h.negate(),d[0]];var +s=Math.abs(i);if(sc.length?1:-1;for(var +a=b.length-1;a>=0;a--)if(b[a]!==c[a])return b[a]>c[a]?1:-1;return 0}a.prototype.compareAbs=function(d){var +a=e(d),b=this.value,c=a.value;if(a.isSmall)return 1;return o(b,c)};b.prototype.compareAbs=function(d){var +c=e(d),b=Math.abs(this.value),a=c.value;if(c.isSmall){a=Math.abs(a);return b===a?0:b>a?1:-1}return-1};c.prototype.compareAbs=function(c){var +a=this.value,b=e(c).value;a=a>=0?a:-a;b=b>=0?b:-b;return a===b?0:a>b?1:-1};a.prototype.compare=function(b){if(b===Infinity)return-1;if(b===-Infinity)return 1;var +a=e(b),c=this.value,d=a.value;if(this.sign!==a.sign)return a.sign?1:-1;if(a.isSmall)return this.sign?-1:1;return o(c,d)*(this.sign?-1:1)};a.prototype.compareTo=a.prototype.compare;b.prototype.compare=function(c){if(c===Infinity)return-1;if(c===-Infinity)return 1;var +b=e(c),a=this.value,d=b.value;if(b.isSmall)return a==d?0:a>d?1:-1;if(a<0!==b.sign)return a<0?-1:1;return a<0?1:-1};b.prototype.compareTo=b.prototype.compare;c.prototype.compare=function(a){if(a===Infinity)return-1;if(a===-Infinity)return 1;var +b=this.value,c=e(a).value;return b===c?0:b>c?1:-1};c.prototype.compareTo=c.prototype.compare;a.prototype.equals=function(a){return this.compare(a)===0};c.prototype.eq=c.prototype.equals=b.prototype.eq=b.prototype.equals=a.prototype.eq=a.prototype.equals;a.prototype.notEquals=function(a){return this.compare(a)!==0};c.prototype.neq=c.prototype.notEquals=b.prototype.neq=b.prototype.notEquals=a.prototype.neq=a.prototype.notEquals;a.prototype.greater=function(a){return this.compare(a)>0};c.prototype.gt=c.prototype.greater=b.prototype.gt=b.prototype.greater=a.prototype.gt=a.prototype.greater;a.prototype.lesser=function(a){return this.compare(a)<0};c.prototype.lt=c.prototype.lesser=b.prototype.lt=b.prototype.lesser=a.prototype.lt=a.prototype.lesser;a.prototype.greaterOrEquals=function(a){return this.compare(a)>=0};c.prototype.geq=c.prototype.greaterOrEquals=b.prototype.geq=b.prototype.greaterOrEquals=a.prototype.geq=a.prototype.greaterOrEquals;a.prototype.lesserOrEquals=function(a){return this.compare(a)<=0};c.prototype.leq=c.prototype.lesserOrEquals=b.prototype.leq=b.prototype.lesserOrEquals=a.prototype.leq=a.prototype.lesserOrEquals;a.prototype.isEven=function(){return(this.value[0]&1)===0};b.prototype.isEven=function(){return(this.value&1)===0};c.prototype.isEven=function(){return(this.value&g(1))===g(0)};a.prototype.isOdd=function(){return(this.value[0]&1)===1};b.prototype.isOdd=function(){return(this.value&1)===1};c.prototype.isOdd=function(){return(this.value&g(1))===g(1)};a.prototype.isPositive=function(){return!this.sign};b.prototype.isPositive=function(){return this.value>0};c.prototype.isPositive=b.prototype.isPositive;a.prototype.isNegative=function(){return this.sign};b.prototype.isNegative=function(){return this.value<0};c.prototype.isNegative=b.prototype.isNegative;a.prototype.isUnit=function(){return false};b.prototype.isUnit=function(){return Math.abs(this.value)===1};c.prototype.isUnit=function(){return this.abs().value===g(1)};a.prototype.isZero=function(){return false};b.prototype.isZero=function(){return this.value===0};c.prototype.isZero=function(){return this.value===g(0)};a.prototype.isDivisibleBy=function(b){var +a=e(b);if(a.isZero())return false;if(a.isUnit())return true;if(a.compareAbs(2)===0)return this.isEven();return this.mod(a).isZero()};c.prototype.isDivisibleBy=b.prototype.isDivisibleBy=a.prototype.isDivisibleBy;function +R(b){var +a=b.abs();if(a.isUnit())return false;if(a.equals(2)||a.equals(3)||a.equals(5))return true;if(a.isEven()||a.isDivisibleBy(3)||a.isDivisibleBy(5))return false;if(a.lesser(49))return true}function +J(d,e){var +g=d.prev(),c=g,h=0,f,i,b,a;while(c.isEven())c=c.divide(2),h++;next:for(b=0;b-s)return new +b(c-1);return new +a(H,true)};c.prototype.prev=function(){return new +c(this.value-g(1))};var +h=[1];while(2*h[h.length-1]<=f)h.push(2*h[h.length-1]);var +v=h.length,j=h[v-1];function +X(a){return Math.abs(a)<=f}a.prototype.shiftLeft=function(c){var +a=e(c).toJSNumber();if(!X(a))throw new +Error(String(a)+wt);if(a<0)return this.shiftRight(-a);var +b=this;if(b.isZero())return b;while(a>=v){b=b.multiply(j);a-=v-1}return b.multiply(h[a])};c.prototype.shiftLeft=b.prototype.shiftLeft=a.prototype.shiftLeft;a.prototype.shiftRight=function(d){var +a,b=e(d).toJSNumber();if(!X(b))throw new +Error(String(b)+wt);if(b<0)return this.shiftLeft(-b);var +c=this;while(b>=v){if(c.isZero()||c.isNegative()&&c.isUnit())return c;a=i(c,j);c=a[1].isNegative()?a[0].prev():a[0];b-=v-1}a=i(c,h[b]);return a[1].isNegative()?a[0].prev():a[0]};c.prototype.shiftRight=b.prototype.shiftRight=a.prototype.shiftRight;function +I(h,a,q){a=e(a);var +m=h.isNegative(),p=a.isNegative(),l=m?h.not():h,o=p?a.not():a,b=0,c=0,k=null,n=null,f=[];while(!l.isZero()||!o.isZero()){k=i(l,j);b=k[1].toJSNumber();if(m)b=j-1-b;n=i(o,j);c=n[1].toJSNumber();if(p)c=j-1-c;l=k[0];o=n[0];f.push(q(b,c))}var +g=q(m?1:0,p?1:0)!==0?as(-1):as(0);for(var +d=f.length-1;d>=0;d-=1)g=g.multiply(j).add(as(f[d]));return g}a.prototype.not=function(){return this.negate().prev()};c.prototype.not=b.prototype.not=a.prototype.not;a.prototype.and=function(a){return I(this,a,function(a,b){return a&b})};c.prototype.and=b.prototype.and=a.prototype.and;a.prototype.or=function(a){return I(this,a,function(a,b){return a|b})};c.prototype.or=b.prototype.or=a.prototype.or;a.prototype.xor=function(a){return I(this,a,function(a,b){return a^b})};c.prototype.xor=b.prototype.xor=a.prototype.xor;var +G=1<<30,_=(f&-f)*(f&-f)|G;function +D(c){var +a=c.value,b=typeof +a==="number"?a|G:typeof +a==="bigint"?a|g(G):a[0]+a[1]*f|_;return b&-b}function +Q(b,a){if(a.compareTo(b)<=0){var +f=Q(b,a.square(a)),d=f.p,c=f.e,e=d.multiply(a);return e.compareTo(b)<=0?{p:e,e:c*2+1}:{p:d,e:c*2}}return{p:as(1),e:0}}a.prototype.bitLength=function(){var +a=this;if(a.compareTo(as(0))<0)a=a.negate().subtract(as(1));if(a.compareTo(as(0))===0)return as(0);return as(Q(a,as(2)).e).add(as(1))};c.prototype.bitLength=b.prototype.bitLength=a.prototype.bitLength;function +S(a,b){a=e(a);b=e(b);return a.greater(b)?a:b}function +K(a,b){a=e(a);b=e(b);return a.lesser(b)?a:b}function +P(a,b){a=e(a).abs();b=e(b).abs();if(a.equals(b))return a;if(a.isZero())return b;if(b.isZero())return a;var +c=d[1],f,g;while(a.isEven()&&b.isEven()){f=K(D(a),D(b));a=a.divide(f);b=b.divide(f);c=c.multiply(f)}while(a.isEven())a=a.divide(D(a));do{while(b.isEven())b=b.divide(D(b));if(a.greater(b)){g=b;b=a;a=g}b=b.subtract(a)}while(!b.isZero());return c.isUnit()?a:a.multiply(c)}function +ad(a,b){a=e(a).abs();b=e(b).abs();return a.divide(P(a,b)).multiply(b)}function +ag(a,b){a=e(a);b=e(b);var +g=K(a,b),n=S(a,b),h=n.subtract(g).add(1);if(h.isSmall)return g.add(Math.floor(Math.random()*h));var +j=x(h,f).value,l=[],k=true;for(var +c=0;c=i){if(c===z&&i===1)continue;throw new +Error(c+" is not a valid digit in base "+g+ev)}}g=e(g);var +h=[],j=b[0]===cH;for(a=j?1:0;a=0;a--){b=b.add(e[a].times(c));c=c.times(f)}return g?b.negate():b}function +ah(b,a){a=a||M;if(b=0){e=c.divmod(b);c=e.quotient;var +d=e.remainder;if(d.isNegative()){d=b.minus(d).abs();c=c.next()}g.push(d.toJSNumber())}g.push(c.toJSNumber());return{value:g.reverse(),isNegative:f}}function +Z(d,c,b){var +a=x(d,c);return(a.isNegative?cH:aa)+a.value.map(function(a){return ah(a,b)}).join(aa)}a.prototype.toArray=function(a){return x(this,a)};b.prototype.toArray=function(a){return x(this,a)};c.prototype.toArray=function(a){return x(this,a)};a.prototype.toString=function(a,f){if(a===y)a=10;if(a!==10)return Z(this,a,f);var +d=this.value,c=d.length,e=String(d[--c]),h="0000000",b;while(--c>=0){b=String(d[c]);e+=h.slice(b.length)+b}var +g=this.sign?cH:aa;return g+e};b.prototype.toString=function(a,b){if(a===y)a=10;if(a!=10)return Z(this,a,b);return String(this.value)};c.prototype.toString=b.prototype.toString;c.prototype.toJSON=a.prototype.toJSON=b.prototype.toJSON=function(){return this.toString()};a.prototype.valueOf=function(){return parseInt(this.toString(),10)};a.prototype.toJSNumber=a.prototype.valueOf;b.prototype.valueOf=function(){return this.value};b.prototype.toJSNumber=b.prototype.valueOf;c.prototype.valueOf=c.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};function +V(d){if(l(+d)){var +n=+d;if(n===r(n))return F?new +c(g(n)):new +b(n);throw new +Error(oG+d)}var +s=d[0]===cH;if(s)d=d.slice(1);var +h=d.split(/e/i);if(h.length>2)throw new +Error(oG+h.join(o1));if(h.length===2){var +e=h[1];if(e[0]===fk)e=e.slice(1);e=+e;if(e!==r(e)||!l(e))throw new +Error(oG+e+" is not a valid exponent.");var +f=h[0],i=f.indexOf(ev);if(i>=0){e-=f.length-i-1;f=f.slice(0,i)+f.slice(i+1)}if(e<0)throw new +Error("Cannot include negative exponent part for integers");f+=new +Array(e+1).join(p);d=f}var +t=/^([0-9][0-9]*)$/.test(d);if(!t)throw new +Error(oG+d);if(F)return new +c(g(s?cH+d:d));var +q=[],j=d.length,o=$,k=j-o;while(j>0){q.push(+d.slice(k,j));k-=o;if(k<0)k=0;j-=o}m(q);return new +a(q,s)}function +af(a){if(F)return new +c(g(a));if(l(a)){if(a!==r(a))throw new +Error(a+" is not an integer.");return new +b(a)}return V(a.toString())}function +e(a){if(typeof +a==="number")return af(a);if(typeof +a==="string")return V(a);if(typeof +a==="bigint")return new +c(a);return a}for(var +k=0;k0)d[-k]=e(-k)}d.one=d[1];d.zero=d[0];d.minusOne=d[-1];d.max=S;d.min=K;d.gcd=P;d.lcm=ad;d.isInstance=function(d){return d +instanceof +a||d +instanceof +b||d +instanceof +c};d.randBetween=ag;d.fromArray=function(b,a,c){return U(b.map(e),e(a||10),c)};return d}();function +cL(a){var +b=a.toJSNumber()|0;if(a.equals(as(b)))return b;return a}function +GQ(a){return cL(as(a).abs())}function +GR(a,b){return cL(as(a).add(as(b)))}function +el(a,b){return as(a).compare(as(b))}function +jB(b,a){a=as(a);if(a.equals(as(0)))jy();return cL(as(b).divide(as(a)))}function +bzP(b,a){a=as(a);if(a.equals(as(0)))jy();return cL(as(b).mod(a))}function +sQ(a,b){return[0,jB(a,b),bzP(a,b)]}function +GS(a,b){return jB(a,b)}function +bzD(a,b){return as(a).equals(as(b))?1:0}function +c9(a){return as(a).compare(as.zero)}function +sS(a,b){return cL(as(a).subtract(as(b)))}function +bzE(a,b){var +c=c9(a),d=c9(b);if(c*d<0)if(!as(a).mod(as(b)).equals(as(0)))return sS(jB(a,b),as(1));return jB(a,b)}function +bzG(a,b){return cL(as.gcd(as(a),as(b)).abs())}function +bzu(c,e,g){e=as(e);var +a=e.toArray(Math.pow(2,32));c.write(8,a.isNegative?1:0);var +f=a.value.length,d=f*4;c.write(32,d);for(var +b=f-1;b>=0;b--){c.write(8,a.value[b]>>>0&dy);c.write(8,a.value[b]>>>8&dy);c.write(8,a.value[b]>>>16&dy);c.write(8,a.value[b]>>>24&dy)}g[0]=4*(1+((d+3)/4|0));g[1]=8*(1+((d+7)/8|0))}function +bzv(b,g){var +e;switch(b.read8u()){case +1:e=true;break;case +0:e=false;break;default:dr("input_value: z (malformed input)")}var +f=b.read32u(),c=as(0);for(var +d=0;d>>0);c=a.shiftLeft(d*32).add(c)}if(e)c=c.negate();g[0]=f+4;return cL(c)}function +bzH(d){var +b=as(d).toArray(Math.pow(2,32)),a=0;for(var +c=0;c=48&&a<=57)return a-48;if(a>=97&&a<=CG)return a-97+10;if(a>=65&&a<=70)return a-65+10}var +d=0;if(a[d]==fk)a=a.substring(1);else +if(a[d]==cH)d++;if(a[d]==sf)bR(zZ);a=a.replace(/_/g,aa);if(a==cH||a==aa)a=p;for(;d=c)bR(zZ)}return cL(as(a,c))}function +g1(d,a,b,c){a=d4(a);if(b!=0||c!=a.length){if(a.length-b=0?1:0}function +pn(a){a=as(a);if(!bzF(a))k6(e3(mi));var +b=as(Dq),d=a.and(b).toJSNumber(),c=a.shiftRight(32).and(b).toJSNumber(),e=Gz(d,c);return e}function +by_(a){switch(a[2]){case-8:case-11:case-12:return 1;default:return 0}}function +byO(b){var +a=aa;if(b[0]==0){a+=b[1][1];if(b.length==3&&b[2][0]==0&&by_(b[1]))var +e=b[2],f=1;else +var +f=2,e=b;a+="(";for(var +d=f;df)a+=gI;var +c=e[d];if(typeof +c=="number")a+=c.toString();else +if(c +instanceof +eZ)a+=ms+c.toString()+ms;else +if(typeof +c=="string")a+=ms+c.toString()+ms;else +a+=sf}a+=")"}else +if(b[0]==bm)a+=b[1];return a}function +Gu(a){if(a +instanceof +Array&&(a[0]==0||a[0]==bm)){var +c=e3(Ea);if(c)c(a,false);else{var +d=byO(a),b=e3(u7);if(b)b(0);aL.console.error(si+d+vB)}}else +throw a}function +bzo(){var +a=aL;if(a.process&&a.process.on)a.process.on("uncaughtException",function(b,c){Gu(b);a.process.exit(2)});else +if(a.addEventListener)a.addEventListener("error",function(a){if(a.error)Gu(a.error)})}bzo();function +r(a,b){return a.length==1?a(b):dG(a,[b])}function +aq(a,b,c){return a.length==2?a(b,c):dG(a,[b,c])}function +cB(a,b,c,d){return a.length==3?a(b,c,d):dG(a,[b,c,d])}function +u2(a,b,c,d,e){return a.length==4?a(b,c,d,e):dG(a,[b,c,d,e])}function +lO(a,b,c,d,e,f){return a.length==5?a(b,c,d,e,f):dG(a,[b,c,d,e,f])}function +byB(a,b,c,d,e,f,g){return a.length==6?a(b,c,d,e,f,g):dG(a,[b,c,d,e,f,g])}function +byA(a,b,c,d,e,f,g,h){return a.length==7?a(b,c,d,e,f,g,h):dG(a,[b,c,d,e,f,g,h])}byQ();var +pp=[bm,a(Dw),-1],sY=[bm,a(Ec),-2],k8=[bm,a(q6),-3],sU=[bm,a(zm),-4],pq=[bm,a(wY),-6],cD=[bm,a(Fc),-7],sW=[bm,a(vV),-8],sX=[bm,a(zN),-9],bs=[bm,a(FJ),-11],sZ=[bm,a(DW),DL],byx=[4,0,0,0,[12,45,[4,0,0,0,0]]],pG=[0,[11,a('File "'),[2,0,[11,a('", line '),[4,0,0,0,[11,a(yY),[4,0,0,0,[12,45,[4,0,0,0,[11,a(": "),[2,0,0]]]]]]]]]],a('File "%s", line %d, characters %d-%d: %s')],byy=[12,41,0],byz=[4,0,0,0,[12,46,0]],u1=[0,a("eventsManager"),a("computeAllocationsFamiliales"),a("computeAidesAuLogement")];d5(11,sZ,DW);d5(10,bs,FJ);d5(9,[bm,a(B7),-10],B7);d5(8,sX,zN);d5(7,sW,vV);d5(6,cD,Fc);d5(5,pq,wY);d5(4,[bm,a(yv),-5],yv);d5(3,sU,zm);d5(2,k8,q6);d5(1,sY,Ec);d5(0,pp,Dw);var +G9=a("output_substring"),G6=a("%.12g"),G5=a(ev),G3=a(wu),G4=a(zB),GW=a("Stdlib.Exit"),GY=gi(0,0,E9),GZ=gi(0,0,65520),G0=gi(1,0,E9),G$=a("CamlinternalLazy.Undefined"),He=a(wK),Hf=a("\\'"),Hg=a(v4),Hh=a(Ao),Hi=a(Bl),Hj=a(yC),Hd=a("Char.chr"),Hm=a("nth"),Hn=a("List.nth"),Hl=a("tl"),Hk=a("hd"),Hq=a("String.blit / Bytes.blit_string"),Hp=a("Bytes.blit"),Ho=a("String.sub / Bytes.sub"),Hv=a("String.contains_from / Bytes.contains_from"),Hs=a(aa),Hr=a("String.concat"),Hy=a("Array.blit"),Hx=a("Array.fill"),HD=a("Map.remove_min_elt"),HE=[0,0,0,0],HF=[0,a("map.ml"),xy,10],HG=[0,0,0],Hz=a(ml),HA=a(ml),HB=a(ml),HC=a(ml),HH=a("Stdlib.Queue.Empty"),HN=a("Buffer.add_substring/add_subbytes"),HM=a("Buffer.add: cannot grow buffer"),HL=[0,a(zY),93,2],HK=[0,a(zY),94,2],HJ=a("Buffer.sub"),HW=a("%c"),HX=a("%s"),HY=a(x0),HZ=a(BF),H0=a(zj),H1=a(D7),H2=a("%f"),H3=a("%B"),H4=a("%{"),H5=a("%}"),H6=a("%("),H7=a("%)"),H8=a(q2),H9=a("%t"),H_=a("%?"),H$=a("%r"),Ia=a("%_r"),Ib=[0,a(cj),kx,23],Im=[0,a(cj),814,21],Ie=[0,a(cj),gM,21],In=[0,a(cj),818,21],If=[0,a(cj),gC,21],Io=[0,a(cj),rA,19],Ig=[0,a(cj),rd,19],Ip=[0,a(cj),826,22],Ih=[0,a(cj),827,22],Iq=[0,a(cj),831,30],Ii=[0,a(cj),832,30],Ik=[0,a(cj),836,26],Ic=[0,a(cj),837,26],Il=[0,a(cj),846,28],Id=[0,a(cj),847,28],Ij=[0,a(cj),kN,23],Jt=a(wj),Jr=[0,a(cj),1558,4],Js=a("Printf: bad conversion %["),Ju=[0,a(cj),Dh,39],Jv=[0,a(cj),1649,31],Jw=[0,a(cj),1650,31],Jx=a("Printf: bad conversion %_"),Jy=a(wf),Jz=a(ws),JA=a(wf),JB=a(ws),JF=[0,[11,a("invalid box description "),[3,0,0]],a("invalid box description %S")],JD=a(aa),JE=[0,0,4],JG=a(aa),JH=a(xF),JI=a("h"),JJ=a("hov"),JK=a("hv"),JL=a("v"),Jp=a(q8),Jn=a("neg_infinity"),Jo=a(FX),Jm=a(ev),Jh=[0,cJ],I7=a("%+nd"),I8=a("% nd"),I_=a("%+ni"),I$=a("% ni"),Ja=a("%nx"),Jb=a("%#nx"),Jc=a("%nX"),Jd=a("%#nX"),Je=a("%no"),Jf=a("%#no"),I6=a("%nd"),I9=a(zj),Jg=a("%nu"),IU=a("%+ld"),IV=a("% ld"),IX=a("%+li"),IY=a("% li"),IZ=a("%lx"),I0=a("%#lx"),I1=a("%lX"),I2=a("%#lX"),I3=a("%lo"),I4=a("%#lo"),IT=a("%ld"),IW=a(BF),I5=a("%lu"),IH=a("%+Ld"),II=a("% Ld"),IK=a("%+Li"),IL=a("% Li"),IM=a("%Lx"),IN=a("%#Lx"),IO=a("%LX"),IP=a("%#LX"),IQ=a("%Lo"),IR=a("%#Lo"),IG=a("%Ld"),IJ=a(D7),IS=a("%Lu"),Iu=a("%+d"),Iv=a("% d"),Ix=a("%+i"),Iy=a("% i"),Iz=a("%x"),IA=a("%#x"),IB=a("%X"),IC=a("%#X"),ID=a("%o"),IE=a("%#o"),It=a(sm),Iw=a(x0),IF=a(wj),HO=a("@]"),HP=a("@}"),HQ=a("@?"),HR=a("@\n"),HS=a("@."),HT=a("@@"),HU=a("@%"),HV=a("@"),Ir=a("CamlinternalFormat.Type_mismatch"),JP=a(aa),JQ=[0,[11,a(gI),[2,0,[2,0,0]]],a(", %s%s")],Kd=[0,[11,a(si),[2,0,[12,10,0]]],a(FD)],Ke=[0,[11,a("Fatal error in uncaught exception handler: exception "),[2,0,[12,10,0]]],a("Fatal error in uncaught exception handler: exception %s\n")],Kc=a("Fatal error: out of memory in uncaught exception handler"),Ka=[0,[11,a(si),[2,0,[12,10,0]]],a(FD)],J8=[0,[2,0,[12,10,0]],a("%s\n")],J0=a("Raised at"),J1=a("Re-raised at"),J2=a("Raised by primitive operation at"),J3=a("Called from"),J4=a(" (inlined)"),J6=a(aa),J5=[0,[2,0,[12,32,[2,0,[11,a(' in file "'),[2,0,[12,34,[2,0,[11,a(", line "),[4,0,0,0,[11,a(yY),byx]]]]]]]]]],a('%s %s in file "%s"%s, line %d, characters %d-%d')],J7=[0,[2,0,[11,a(" unknown location"),0]],a("%s unknown location")],JV=a("Out of memory"),JW=a("Stack overflow"),JX=a("Pattern matching failed"),JY=a("Assertion failed"),JZ=a("Undefined recursive module"),JR=[0,[12,40,[2,0,[2,0,[12,41,0]]]],a("(%s%s)")],JS=a(aa),JT=a(aa),JU=[0,[12,40,[2,0,[12,41,0]]],a("(%s)")],JO=[0,[4,0,0,0,0],a(sm)],JM=[0,[3,0,0],a("%S")],JN=a(sf),J9=[0,a(aa),a("(Cannot print locations:\n bytecode executable program file not found)"),a("(Cannot print locations:\n bytecode executable program file appears to be corrupt)"),a("(Cannot print locations:\n bytecode executable program file has wrong magic number)"),a("(Cannot print locations:\n bytecode executable program file cannot be opened;\n -- too many open files. Try running with OCAMLRUNPARAM=b=2)")],Kf=a(Fv),Kt=[0,0],byv=a("OCAMLRUNPARAM"),byt=a("CAMLRUNPARAM"),Kg=a(aa),KT=[3,0,3],KU=a(ev),KO=a(nu),KP=a("<\/"),KQ=a(aa),KK=a(nu),KL=a(rX),KM=a(aa),KI=a("\n"),KE=a(aa),KF=a(aa),KG=a(aa),KH=a(aa),KD=[0,a(aa)],Kz=a(aa),KA=a(aa),KB=a(aa),KC=a(aa),Kx=[0,a(aa),0,a(aa)],Kw=a(aa),Kv=a("Stdlib.Format.String_tag"),K5=a(aa),La=[0,a("lib/dates.ml"),226,2],K$=[0,[4,0,[0,2,4],0,[12,45,[4,0,[0,2,2],0,[12,45,[4,0,[0,2,2],0,0]]]]],a("%04d-%02d-%02d")],K9=[0,[12,91,[4,0,0,0,[11,a(" years, "),[4,0,0,0,[11,a(" months, "),[4,0,0,0,[11,a(" days]"),0]]]]]]],a("[%d years, %d months, %d days]")],K6=a("Dates_calc.Dates.InvalidDate"),K7=a("Dates_calc.Dates.AmbiguousComputation"),Lf=gi(1,0,0),Lb=a("Z.Overflow"),Lc=a(mi),Lj=a(aa),Lk=a("+inf"),Ll=a("-inf"),Lm=a(F4),Ln=a("undef"),Lp=[0,a("q.ml"),486,25],Lo=a("Q.of_string: invalid digit"),Lh=a(xh),Lg=a(xh),Lt=a("Buf.extend: reached Sys.max_string_length"),L3=[0,a(rY),72,32],L0=[0,a(rY),72,32],LZ=a("Root is not an object or array"),LV=a("NaN value not allowed in standard JSON"),LW=[0,[8,[0,0,3],0,[0,16],0],a(x3)],LY=[0,[8,[0,0,3],0,[0,17],0],a(Dn)],LX=a(yV),LT=a("Infinity value not allowed in standard JSON"),LU=a("-Infinity value not allowed in standard JSON"),LP=a("NaN"),LQ=[0,[8,[0,0,3],0,[0,16],0],a(x3)],LS=[0,[8,[0,0,3],0,[0,17],0],a(Dn)],LR=a(yV),LN=a("Infinity"),LO=a("-Infinity"),LK=a(wu),LL=a(zB),LJ=a("null"),LD=a(v4),LE=a(Ao),LF=a(Bl),LG=a("\\f"),LH=a(yC),LI=a('\\"'),LC=a(wK),LB=[0,[11,a("src="),[3,0,[11,a(" start="),[4,3,0,0,[11,a(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]],a("src=%S start=%i len=%i\n%!")],Lz=a("\\u00"),Lw=[0,a(rY),72,32],Lu=a("Yojson.Json_error"),Ly=[0,a(qO),a(q5),a(rh),a(rQ),a(rr),a(aa),a(aa),a(aa),a(aa),a(aa),a(aa)],L2=[0,a(qO),a(q5),a(rh),a(rQ),a(rr),a(aa),a(aa),a(aa),a(aa),a(aa),a(aa)],L5=[0,a(qO),a(q5),a(rh),a(rQ),a(rr),a(aa),a(aa),a(aa),a(aa),a(aa),a(aa)],MY=a("unreachable due to the [is_subscope_call] test"),M0=a("unreachable due to the [is_subscope_input_var_def] test"),M1=a("]"),M2=a("["),M3=a(" ]): expected variable definition (function output), found: "),M4=a(gI),M5=a(vl),M6=a(" ]): expected variable definition (function output), found: end of tokens"),M7=a(gI),M8=a(vl),MZ=a("Unexpected event: "),M_=a("Missing function output variable definition."),M9=a("Invalid start of function call."),MX=a(ac),MW=a(ae),M$=[0,[11,a("An error occurred while parsing raw events: "),[2,0,[12,10,0]]],a("An error occurred while parsing raw events: %s\n")],MM=a(yi),MN=a(gI),MO=[0,[11,a(A4),0],a(A4)],MP=a(yi),MQ=a(gI),MR=[0,[11,a(E0),0],a(E0)],MS=a(gI),MT=[0,[11,a("VariableDefinition([ "),[2,0,[11,a(" ], "),[2,0,[12,41,0]]]]],a("VariableDefinition([ %s ], %s)")],MU=[0,[11,a("DecisionTaken("),[2,0,[12,58,[4,0,0,0,[12,46,[4,0,0,0,[12,45,[4,0,0,0,[12,46,[4,0,0,0,byy]]]]]]]]]],a("DecisionTaken(%s:%d.%d-%d.%d)")],Mw=[0,cE,a("VarComputation")],Mx=[0,cE,a("FunCall")],My=a(CC),Mz=a("inputs"),MA=a(yl),MB=[0,cE,a("SubScopeCall")],MC=a("fun_calls"),MD=a("value"),ME=a(yl),MF=a("pos"),MG=a(ae),MH=a(CC),MI=a(ac),MJ=a("fun_name"),Ml=[0,ca,[0,[0,cE,a("Unit")],0]],Mm=[0,ca,[0,[0,cE,a("Unembeddable")],0]],Mn=[0,cE,a("Bool")],Mo=[0,cE,a("Money")],Mp=[0,cE,a("Integer")],Mq=[0,cE,a("Decimal")],Mr=[0,cE,a("Date")],Ms=[0,cE,a("Duration")],Mt=[0,cE,a("Enum")],Mu=[0,cE,a("Struct")],Mv=[0,cE,a("Array")],Mk=[0,[15,0],a(q2)],Mj=[0,[15,0],a(q2)],L7=a("law_headings"),L8=a("end_column"),L9=a("end_line"),L_=a("start_column"),L$=a("start_line"),Ma=a("filename"),Mb=a("Runtime_ocaml.Runtime.EmptyError"),Mc=a("Runtime_ocaml.Runtime.AssertionFailed"),Md=a("Runtime_ocaml.Runtime.ConflictError"),Me=a("Runtime_ocaml.Runtime.UncomparableDurations"),Mg=a("Runtime_ocaml.Runtime.ImpossibleDate"),Mi=a("Runtime_ocaml.Runtime.NoValueProvided"),Na=a("Jsoo_runtime.Error.Exn"),Nb=a(rF),Nt=[0,[2,0,[11,a(" in file "),[2,0,[11,a(", position "),[4,0,0,0,[12,58,[4,0,0,0,[11,a("--"),[4,0,0,0,[12,58,byz]]]]]]]]]],a("%s in file %s, position %d:%d--%d:%d.")],Nu=a("No rule applies in the given context to give a value to the variable"),Nv=a("A conflict happened between two rules giving a value to the variable"),Nw=a("A failure happened in the assertion"),Nm=a("Begin call"),Nn=a("End call"),No=a("Variable definition"),Np=a("Decision taken"),Nk=a(aa),Ni=a("date_of_jsoo: invalid date"),Ng=[0,a(x_),a(BW),a(EO)],Nh=[0,a(x_),a(EO),a(BW)],$$=[0,a(a0),90,14,90,29,[0,a(bl),[0,a(a1),0]]],$4=[0,a(a0),fN,18,fN,64,[0,a(bl),[0,a(a1),0]]],$5=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],$3=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],$Z=[0,a(a0),87,14,87,53,[0,a(bl),[0,a(a1),0]]],$V=[0,a(a0),86,14,86,50,[0,a(bl),[0,a(a1),0]]],$R=[0,a(a0),89,14,89,46,[0,a(bl),[0,a(a1),0]]],$N=[0,a(a0),88,14,88,54,[0,a(bl),[0,a(a1),0]]],$I=[0,a(a0),97,18,97,72,[0,a(bl),[0,a(a1),0]]],$J=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$H=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$C=[0,a(a0),93,18,93,67,[0,a(bl),[0,a(a1),0]]],$D=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$B=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$x=[0,a(a0),fX,14,fX,30,[0,a("Article L131-1"),[0,a(bl),[0,a(a1),0]]]],$u=[0,0],$v=[1,0],$w=[2,0],$y=[0,a(a0),76,11,76,27,[0,a(bl),[0,a(a1),0]]],$t=[0,a(a0),76,11,76,27,[0,a(bl),[0,a(a1),0]]],$z=[0,a(ef),[0,a("enfants_\xc3\xa0_charge"),0]],$E=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$F=[0,a(ef),[0,a("allocations_familiales.personne_charge_effective_permanente_est_parent"),0]],$A=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$K=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$L=[0,a(ef),[0,a("allocations_familiales.personne_charge_effective_permanente_remplit_titre_I"),0]],$G=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$O=[0,a(a0),88,14,88,54,[0,a(bl),[0,a(a1),0]]],$P=[0,a(ef),[0,a("allocations_familiales.ressources_m\xc3\xa9nage"),0]],$M=[0,a(a0),88,14,88,54,[0,a(bl),[0,a(a1),0]]],$S=[0,a(a0),89,14,89,46,[0,a(bl),[0,a(a1),0]]],$T=[0,a(ef),[0,a("allocations_familiales.r\xc3\xa9sidence"),0]],$Q=[0,a(a0),89,14,89,46,[0,a(bl),[0,a(a1),0]]],$W=[0,a(a0),86,14,86,50,[0,a(bl),[0,a(a1),0]]],$X=[0,a(ef),[0,a("allocations_familiales.date_courante"),0]],$U=[0,a(a0),86,14,86,50,[0,a(bl),[0,a(a1),0]]],$0=[0,a(a0),87,14,87,53,[0,a(bl),[0,a(a1),0]]],$1=[0,a(ef),[0,a("allocations_familiales.enfants_\xc3\xa0_charge"),0]],$Y=[0,a(a0),87,14,87,53,[0,a(bl),[0,a(a1),0]]],$6=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],$7=[0,a(ef),[0,a("allocations_familiales.avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012"),0]],$2=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],$8=[0,a(ef),[0,a(vG),[0,a(U),0]]],$9=[0,a(ef),[0,a(vG),[0,a(U),0]]],aaa=[0,a(a0),80,12,80,27,[0,a(bl),[0,a(a1),0]]],$_=[0,a(a0),80,12,80,27,[0,a(bl),[0,a(a1),0]]],aab=[0,a(ef),[0,a("i_montant_vers\xc3\xa9"),0]],$n=[0,a(a0),45,14,45,27,[0,a(eO),[0,a(a1),0]]],$m=a(p),$i=[0,a(br),DN,14,DN,62,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],$d=[0,a(U),[0,a(kR),[0,a(ac),0]]],$e=[0,a(U),[0,a(kR),0]],$f=[0,a(U),[0,a(kR),[0,a(ae),0]]],$g=[0,a(U),[0,a(kR),0]],$h=a(p),_$=[0,a(br),om,14,om,61,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],_7=[0,a(a0),39,14,39,38,[0,a(eO),[0,a(a1),0]]],_1=[0,a(U),[0,a(j$),[0,a(ac),0]]],_2=[0,a(U),[0,a(j$),0]],_3=[0,a(U),[0,a(j$),[0,a(ae),0]]],_4=[0,a(U),[0,a(j$),0]],_5=a(p),_6=a(p),_X=[0,a(a0),37,14,37,32,[0,a(eO),[0,a(a1),0]]],_W=a(p),_S=[0,a(dU),h1,5,h1,43,[0,a("Article R521-4"),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],_H=[0,a(U),[0,a(fn),[0,a(ac),0]]],_I=[0,a(U),[0,a(fn),0]],_J=[0,a(U),[0,a(fn),[0,a(ae),0]]],_K=[0,a(U),[0,a(fn),0]],_L=a(et),_Q=a(kd),_R=a(b5),_M=[0,a(U),[0,a(j4),[0,a(ac),0]]],_N=[0,a(U),[0,a(j4),0]],_O=[0,a(U),[0,a(j4),[0,a(ae),0]]],_P=[0,a(U),[0,a(j4),0]],_T=[0,a(I),ei,11,ei,49,[0,a(J),[0,a(H),[0,a(B),0]]]],_G=[0,a(I),ei,11,ei,49,[0,a(J),[0,a(H),[0,a(B),0]]]],_D=[0,a(dU),cs,14,cs,46,[0,a(oV),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],_w=a(cI),_x=[0,a(br),268,5,qQ,41,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],_t=a(cI),_u=a(et),_v=a(cI),_y=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_q=a(cI),_r=[0,a(br),Ar,5,280,40,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],_n=a(cI),_o=a(et),_p=a(cI),_s=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_z=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_m=[0,a(br),hU,14,hU,55,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],_l=a(p),_a=a(z),_b=[0,a(U),[0,a(bH),[0,a(ac),0]]],_c=[0,a(U),[0,a(bH),0]],_d=[0,a(U),[0,a(bH),[0,a(ae),0]]],_e=[0,a(U),[0,a(bH),0]],_f=[0,a(br),gO,5,ru,55,[0,a(kn),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],Z$=a("0.0369"),_g=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],Z4=a(z),Z5=[0,a(U),[0,a(bH),[0,a(ac),0]]],Z6=[0,a(U),[0,a(bH),0]],Z7=[0,a(U),[0,a(bH),[0,a(ae),0]]],Z8=[0,a(U),[0,a(bH),0]],Z9=[0,a(br),389,5,392,56,[0,a(kn),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],Z3=a("0.0567"),Z_=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],_h=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],Z2=[0,a(br),22,14,22,40,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],ZY=[0,a(U),[0,a(ka),[0,a(ac),0]]],ZZ=[0,a(U),[0,a(ka),0]],Z0=[0,a(U),[0,a(ka),[0,a(ae),0]]],Z1=[0,a(U),[0,a(ka),0]],_i=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],ZX=[0,a(I),cQ,11,cQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],ZR=a(z),ZS=[0,a(br),356,5,yQ,69,[0,a(kn),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],ZT=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZO=[8,0],ZP=[0,a(aW),u$,24,u$,44,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],ZQ=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZU=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZN=[0,a(br),18,14,18,34,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],ZJ=[0,a(br),x9,14,x9,39,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],ZF=[0,a(U),[0,a(kg),[0,a(ac),0]]],ZG=[0,a(U),[0,a(kg),0]],ZH=[0,a(U),[0,a(kg),[0,a(ae),0]]],ZI=[0,a(U),[0,a(kg),0]],Zw=[0,a(U),[0,a(bH),[0,a(ac),0]]],Zx=[0,a(U),[0,a(bH),0]],Zy=[0,a(U),[0,a(bH),[0,a(ae),0]]],Zz=[0,a(U),[0,a(bH),0]],ZA=[0,a(br),60,5,60,38,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Zv=a(ry),ZB=[0,a(I),dm,11,dm,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Zp=[0,a(U),[0,a(bH),[0,a(ac),0]]],Zq=[0,a(U),[0,a(bH),0]],Zr=[0,a(U),[0,a(bH),[0,a(ae),0]]],Zs=[0,a(U),[0,a(bH),0]],Zt=[0,a(br),fN,5,fN,38,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Zo=a(Ch),Zu=[0,a(I),dm,11,dm,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Zi=[0,a(U),[0,a(bH),[0,a(ac),0]]],Zj=[0,a(U),[0,a(bH),0]],Zk=[0,a(U),[0,a(bH),[0,a(ae),0]]],Zl=[0,a(U),[0,a(bH),0]],Zm=[0,a(br),Er,5,Er,38,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Zh=a(Cw),Zn=[0,a(I),dm,11,dm,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Zb=[0,a(U),[0,a(bH),[0,a(ac),0]]],Zc=[0,a(U),[0,a(bH),0]],Zd=[0,a(U),[0,a(bH),[0,a(ae),0]]],Ze=[0,a(U),[0,a(bH),0]],Zf=[0,a(a0),28,5,28,44,[0,a(eO),[0,a(a1),0]]],Za=a(p),Zg=[0,a(I),dm,11,dm,47,[0,a(J),[0,a(H),[0,a(B),0]]]],ZC=[0,a(I),dm,11,dm,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Y$=[0,a(I),dm,11,dm,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Y8=[0,a(dU),ei,14,ei,41,[0,a(oV),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],Y6=a(b5),Y7=a(b5),YY=[8,0],YZ=[0,a(aW),FG,5,FG,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],YV=a(z),YW=a(wc),YX=a(p),Y0=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YS=[8,0],YT=[0,a(aW),F9,5,F9,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],YP=a(z),YQ=a("0.2379"),YR=a(p),YU=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YM=[8,0],YN=[0,a(aW),fh,5,fh,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],YJ=a(z),YK=a("0.2437"),YL=a(p),YO=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YG=[8,0],YH=[0,a(aW),zR,5,zR,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],YD=a(z),YE=a("0.2496"),YF=a(p),YI=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YA=[8,0],YB=[0,a(aW),DQ,5,DQ,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Yx=a(z),Yy=a("0.2555"),Yz=a(p),YC=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yu=[8,0],Yv=[0,a(aW),vg,5,vg,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Yr=a(z),Ys=a("0.2613"),Yt=a(p),Yw=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yo=[8,0],Yp=[0,a(aW),w9,5,w9,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Yl=a(z),Ym=a("0.2672"),Yn=a(p),Yq=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yi=[8,0],Yj=[0,a(aW),qU,5,qU,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Yf=a(z),Yg=a("0.2804"),Yh=a(p),Yk=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yc=[8,0],Yd=[0,a(aW),f2,5,f2,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],X$=a(z),Ya=a("0.2936"),Yb=a(p),Ye=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],X8=[8,0],X9=[0,a(aW),xo,5,xo,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],X5=a(z),X6=a("0.3068"),X7=a(p),X_=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Y1=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],X3=[8,0],X4=[0,a(aW),rC,14,rC,50,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],X0=a(z),X1=a(sr),X2=a(p),Y2=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XX=[0,a(br),38,14,38,50,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],XU=a(z),XV=a(sr),XW=a(p),XY=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XS=[0,a(br),79,14,79,50,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],XP=a(z),XQ=a(ry),XR=a(p),XT=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XN=[0,a(br),fX,14,fX,50,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],XK=a(z),XL=a(Ch),XM=a(p),XO=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XZ=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XF=[0,a(br),43,14,43,59,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],XB=a(X),XC=a(X),XD=a("0.41"),XE=a(p),XG=[0,a(I),c4,11,c4,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Xz=[0,a(br),84,14,84,59,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xv=a(X),Xw=a(X),Xx=a("0.205"),Xy=a(p),XA=[0,a(I),c4,11,c4,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Xt=[0,a(br),gU,14,gU,59,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xp=a(X),Xq=a(X),Xr=a("0.1025"),Xs=a(p),Xu=[0,a(I),c4,11,c4,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Xk=[0,a(br),C$,5,C$,42,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xj=a("0.20234"),Xl=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xh=[0,a(br),rg,5,236,45,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xg=a("0.10117"),Xi=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xe=[0,a(br),zk,5,zk,42,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],Xd=a("0.05059"),Xf=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],W8=a(cI),W9=[0,a(br),qT,5,166,65,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],W5=a(cI),W6=a(et),W7=a(cI),W_=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],W2=a(cI),W3=[0,a(br),174,5,175,65,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],WZ=a(cI),W0=a(et),W1=a(cI),W4=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],W$=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],WY=[0,a(br),jt,14,jt,34,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],WX=a(p),Xa=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],WW=[0,a(I),eE,11,eE,31,[0,a(J),[0,a(H),[0,a(B),0]]]],WN=[0,a(U),[0,a(eP),[0,a(ac),0]]],WO=[0,a(U),[0,a(eP),0]],WP=[0,a(U),[0,a(eP),[0,a(ae),0]]],WQ=[0,a(U),[0,a(eP),0]],WR=[0,a(bP),ib,5,318,21,[0,a(z9),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],WS=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WE=[0,a(U),[0,a(eP),[0,a(ac),0]]],WF=[0,a(U),[0,a(eP),0]],WG=[0,a(U),[0,a(eP),[0,a(ae),0]]],WH=[0,a(U),[0,a(eP),0]],WI=[0,a(U),[0,a(kK),[0,a(ac),0]]],WJ=[0,a(U),[0,a(kK),0]],WK=[0,a(U),[0,a(kK),[0,a(ae),0]]],WL=[0,a(U),[0,a(kK),0]],WM=[0,a(bP),fq,5,dz,21,[0,a(z9),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],WT=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WD=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WU=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WC=[0,a(I),cs,11,cs,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Wt=a(z),Wu=[8,0],Wv=[0,a(aW),fQ,6,fQ,71,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],Ww=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wr=a(z),Ws=[0,a(bP),r2,5,410,72,[0,a(rZ),[0,a(eX),[0,a(ke),[0,a(d0),[0,a(ab),[0,a(af),0]]]]]]],Wx=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wy=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wp=a(X),Wq=[0,a(bP),fN,5,fN,70,[0,a(Gf),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Wz=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wo=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wg=[8,0],Wh=[0,a(aW),251,5,kb,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Wd=a(p),We=a("0.145"),Wf=a(p),Wi=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Wa=[8,0],Wb=[0,a(aW),zH,5,261,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],V9=a(p),V_=a("0.1393"),V$=a(p),Wc=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],V6=[8,0],V7=[0,a(aW),At,5,qQ,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],V3=a(p),V4=a("0.1335"),V5=a(p),V8=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],V0=[8,0],V1=[0,a(aW),Ar,5,279,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],VX=a(p),VY=a("0.1278"),VZ=a(p),V2=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VU=[8,0],VV=[0,a(aW),287,5,288,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],VR=a(p),VS=a("0.122"),VT=a(p),VW=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VO=[8,0],VP=[0,a(aW),d_,5,eh,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],VL=a(p),VM=a("0.1163"),VN=a(p),VQ=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VI=[8,0],VJ=[0,a(aW),kV,5,306,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],VF=a(p),VG=a("0.1105"),VH=a(p),VK=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VC=[8,0],VD=[0,a(aW),dF,5,ib,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Vz=a(p),VA=a("0.0976"),VB=a(p),VE=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vw=[8,0],Vx=[0,a(aW),323,5,fp,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Vt=a(p),Vu=a("0.0847"),Vv=a(p),Vy=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vq=[8,0],Vr=[0,a(aW),u9,5,333,53,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Vn=a(p),Vo=a("0.0717"),Vp=a(p),Vs=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vk=[8,0],Vl=[0,a(aW),m$,5,m$,49,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Vh=a(p),Vi=a("5728"),Vj=a(p),Vm=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Wj=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vf=[8,0],Vg=[0,a(aW),nU,14,nU,49,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],Vc=a(p),Vd=a(wm),Ve=a(p),Wk=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],U$=a(z),Va=[0,a(br),dj,5,fh,71,[0,a(kn),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],U_=a(wm),Vb=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],U9=[0,a(br),rL,29,rL,64,[0,a(kn),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(a9),[0,a(af),0]]]]]]],U8=a(p),U4=[0,a(dU),my,14,my,34,[0,a(oV),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],UW=[0,a(U),[0,a(fn),[0,a(ac),0]]],UX=[0,a(U),[0,a(fn),0]],UY=[0,a(U),[0,a(fn),[0,a(ae),0]]],UZ=[0,a(U),[0,a(fn),0]],U0=a(et),U1=a(kd),U2=a(b5),U3=a(b5),US=[0,a(dU),Cv,14,Cv,34,[0,a(oV),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],UL=[8,0],UM=[0,a(aW),hn,5,hn,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],UI=a(X),UJ=a(Cq),UK=a(p),UN=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],UF=[8,0],UG=[0,a(aW),CH,5,CH,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],UC=a(X),UD=a("0.0539"),UE=a(p),UH=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Uz=[8,0],UA=[0,a(aW),yk,5,yk,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Uw=a(X),Ux=a("0.0615"),Uy=a(p),UB=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Ut=[8,0],Uu=[0,a(aW),ex,5,ex,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Uq=a(X),Ur=a("0.069"),Us=a(p),Uv=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Un=[8,0],Uo=[0,a(aW),Cu,5,Cu,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Uk=a(X),Ul=a("0.0766"),Um=a(p),Up=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Uh=[8,0],Ui=[0,a(aW),fT,5,fT,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],Ue=a(X),Uf=a("0.0842"),Ug=a(p),Uj=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Ub=[8,0],Uc=[0,a(aW),wD,5,wD,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],T_=a(X),T$=a("0.0918"),Ua=a(p),Ud=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],T7=[8,0],T8=[0,a(aW),v2,5,v2,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],T4=a(X),T5=a("0.1089"),T6=a(p),T9=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],T1=[8,0],T2=[0,a(aW),jf,5,jf,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],TY=a(X),TZ=a("0.1259"),T0=a(p),T3=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],TV=[8,0],TW=[0,a(aW),f5,5,f5,67,[0,a(bq),[0,a(ba),[0,a(bc),0]]]],TS=a(X),TT=a("0.143"),TU=a(p),TX=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],UO=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],TR=[0,a(aW),h1,14,h1,59,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],TO=a(X),TP=a(ry),TQ=a(p),TK=[0,a(aW),iM,14,iM,67,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],TG=a(_),TH=a(_),TI=a(Cq),TJ=a(p),Tz=a(z),TA=[0,a(bP),423,6,rx,72,[0,a(rZ),[0,a(eX),[0,a(ke),[0,a(d0),[0,a(ab),[0,a(af),0]]]]]]],TB=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],Tu=[0,a(co),[0,a(iU),[0,a(ac),0]]],Tv=[0,a(co),[0,a(iU),0]],Tw=[0,a(co),[0,a(iU),[0,a(ae),0]]],Tx=[0,a(co),[0,a(iU),0]],Ty=[0,a(bP),rR,5,dm,59,[0,a(Gf),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],TC=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],Tt=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],TD=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],Ts=[0,a(I),dv,11,dv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],Tm=a(z),Tn=[0,a(bP),gz,5,430,71,[0,a(rZ),[0,a(eX),[0,a(ke),[0,a(d0),[0,a(ab),[0,a(af),0]]]]]]],To=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Tl=[0,a(a0),31,9,31,32,[0,a(eO),[0,a(a1),0]]],Tp=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Tk=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Te=[0,a(aW),23,5,23,67,[0,a(F2),[0,a(f9),0]]],Tc=a(EQ),Td=a("5628600"),Tf=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],Ta=[0,a(aW),56,5,56,67,[0,a(vj),[0,a(f9),0]]],S_=a(FH),S$=a("5684900"),Tb=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],S8=[0,a(aW),89,5,89,67,[0,a(wJ),[0,a(f9),0]]],S6=a(EX),S7=a("5775900"),S9=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],S4=[0,a(aW),bp,5,bp,67,[0,a(b6),[0,a(C3),[0,a(f9),0]]]],S2=a(wo),S3=a("5827900"),S5=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],Tg=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],S1=[0,a(br),Ev,14,Ev,30,[0,a(Dz),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],SZ=a(AN),S0=a("5595000"),ST=[0,a(aW),30,5,30,67,[0,a(F2),[0,a(f9),0]]],SR=a(EQ),SS=a("7877000"),SU=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SP=[0,a(aW),63,5,63,67,[0,a(vj),[0,a(f9),0]]],SN=a(FH),SO=a("7955800"),SQ=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SL=[0,a(aW),96,5,96,67,[0,a(wJ),[0,a(f9),0]]],SJ=a(EX),SK=a("8083100"),SM=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SH=[0,a(aW),dW,5,dW,67,[0,a(b6),[0,a(C3),[0,a(f9),0]]]],SF=a(wo),SG=a("8155800"),SI=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SV=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SE=[0,a(br),dF,14,dF,31,[0,a(Dz),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],SC=a(AN),SD=a("7830000"),Sy=[0,a(a0),34,14,34,36,[0,a(eO),[0,a(a1),0]]],Sz=[0,a(I),nH,11,nH,33,[0,a(J),[0,a(H),[0,a(B),0]]]],Sx=[0,a(I),nH,11,nH,33,[0,a(J),[0,a(H),[0,a(B),0]]]],Su=[0,a(bP),75,14,75,64,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Sq=[0,a(co),[0,a(dh),[0,a(ac),0]]],Sr=[0,a(co),[0,a(dh),0]],Ss=[0,a(co),[0,a(dh),[0,a(ae),0]]],St=[0,a(co),[0,a(dh),0]],Sl=[0,a(dU),83,19,83,67,[0,a(nJ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],Sm=[0,a(I),eY,11,eY,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Sk=[0,a(dU),56,14,56,41,[0,a(nJ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],Sn=[0,a(I),eY,11,eY,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Sj=[0,a(I),eY,11,eY,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Se=[0,a(a0),33,14,33,40,[0,a(eO),[0,a(a1),0]]],R_=[0,a(I),fD,14,fD,46,[0,a(J),[0,a(H),[0,a(B),0]]]],R6=[0,a(I),gf,14,gf,56,[0,a(J),[0,a(H),[0,a(B),0]]]],R5=[1,0],R1=[0,a(I),fK,14,fK,50,[0,a(J),[0,a(H),[0,a(B),0]]]],RV=[0,a(I),fQ,14,fQ,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RP=[0,a(dU),64,14,64,44,[0,a(nJ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],RO=a(_),RK=[0,a(br),di,14,di,35,[0,a(fS),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(af),0]]]]]]],RJ=a(_),RE=[0,a(bP),rm,5,zH,56,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],RD=[1,0],RF=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Ry=[0,a(bP),qQ,5,271,48,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rx=[0,0],Rz=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Rw=[0,a(bP),FF,5,FF,70,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rv=[0,0],RA=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Ru=[0,a(bP),CY,5,CY,69,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rt=[0,0],RB=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Rs=[0,a(bP),om,5,om,60,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rr=[0,0],RC=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],RG=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Rq=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],Rm=[0,a(bP),nW,5,nW,70,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rl=[1,0],Rn=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rj=[0,a(bP),j_,5,m0,56,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Ri=[2,0],Rk=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Re=[0,a(bP),264,5,rq,48,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rd=[0,0],Rf=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rc=[0,a(bP),yc,5,yc,69,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Rb=[0,0],Rg=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Ra=[0,a(bP),Ab,5,Ab,60,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Q$=[0,0],Rh=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Ro=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Q_=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rp=[0,a(U),[0,a(fn),0]],RH=[0,a(U),[0,a("versement"),0]],RL=[0,a(I),oj,11,oj,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RI=[0,a(I),oj,11,oj,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RM=[0,a(U),[0,a("nombre_enfants_l521_1"),0]],RQ=[0,a(I),oc,11,oc,41,[0,a(J),[0,a(H),[0,a(B),0]]]],RN=[0,a(I),oc,11,oc,41,[0,a(J),[0,a(H),[0,a(B),0]]]],RR=[0,a(U),[0,a("nombre_enfants_alin\xc3\xa9a_2_l521_3"),0]],RS=[0,a(U),[0,a(wT),[0,a(q$),0]]],RT=[0,a(U),[0,a(wT),[0,a(q$),0]]],RW=[0,a(I),fQ,14,fQ,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RX=[0,a(U),[0,a("bmaf.date_courante"),0]],RU=[0,a(I),fQ,14,fQ,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RY=[0,a(U),[0,a(AZ),[0,a(f_),0]]],RZ=[0,a(U),[0,a(AZ),[0,a(f_),0]]],R2=[0,a(I),fK,14,fK,50,[0,a(J),[0,a(H),[0,a(B),0]]]],R3=[0,a(U),[0,a(w$),0]],R0=[0,a(I),fK,14,fK,50,[0,a(J),[0,a(H),[0,a(B),0]]]],R7=[0,a(I),gf,14,gf,56,[0,a(J),[0,a(H),[0,a(B),0]]]],R8=[0,a(U),[0,a(Bm),0]],R4=[0,a(I),gf,14,gf,56,[0,a(J),[0,a(H),[0,a(B),0]]]],R$=[0,a(I),fD,14,fD,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Sa=[0,a(U),[0,a(yX),0]],R9=[0,a(I),fD,14,fD,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Sb=[0,a(U),[0,a(oO),[0,a(co),0]]],Sc=[0,a(U),[0,a(oO),[0,a(co),0]]],Sf=[0,a(a0),33,14,33,40,[0,a(eO),[0,a(a1),0]]],Sg=[0,a(U),[0,a("enfant_le_plus_\xc3\xa2g\xc3\xa9.enfants"),0]],Sd=[0,a(a0),33,14,33,40,[0,a(eO),[0,a(a1),0]]],Sh=[0,a(U),[0,a(Df),[0,a(rl),0]]],Si=[0,a(U),[0,a(Df),[0,a(rl),0]]],So=[0,a(U),[0,a(eP),0]],Sv=[0,a(I),95,11,95,61,[0,a(J),[0,a(H),[0,a(B),0]]]],Sp=[0,a(I),95,11,95,61,[0,a(J),[0,a(H),[0,a(B),0]]]],Sw=[0,a(U),[0,a("enfants_\xc3\xa0_charge_droit_ouvert_prestation_familiale"),0]],SA=[0,a(U),[0,a(kK),0]],SW=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SB=[0,a(I),dl,11,dl,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SX=[0,a(U),[0,a("plafond_II_d521_3"),0]],Th=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],SY=[0,a(I),dq,11,dq,27,[0,a(J),[0,a(H),[0,a(B),0]]]],Ti=[0,a(U),[0,a("plafond_I_d521_3"),0]],Tq=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Tj=[0,a(I),dW,11,dW,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Tr=[0,a(U),[0,a("droit_ouvert_compl\xc3\xa9ment"),0]],TE=[0,a(U),[0,a(kg),0]],TL=[0,a(I),fX,11,fX,64,[0,a(J),[0,a(H),[0,a(B),0]]]],TF=[0,a(I),fX,11,fX,64,[0,a(J),[0,a(H),[0,a(B),0]]]],TM=[0,a(U),[0,a("montant_initial_base_quatri\xc3\xa8me_enfant_et_plus_mayotte"),0]],UP=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],TN=[0,a(I),bp,11,bp,56,[0,a(J),[0,a(H),[0,a(B),0]]]],UQ=[0,a(U),[0,a("montant_initial_base_troisi\xc3\xa8me_enfant_mayotte"),0]],UT=[0,a(I),ie,11,ie,31,[0,a(J),[0,a(H),[0,a(B),0]]]],UR=[0,a(I),ie,11,ie,31,[0,a(J),[0,a(H),[0,a(B),0]]]],UU=[0,a(U),[0,a("nombre_total_enfants"),0]],U5=[0,a(I),nZ,11,nZ,31,[0,a(J),[0,a(H),[0,a(B),0]]]],UV=[0,a(I),nZ,11,nZ,31,[0,a(J),[0,a(H),[0,a(B),0]]]],U6=[0,a(U),[0,a("nombre_moyen_enfants"),0]],Wl=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],U7=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Wm=[0,a(U),[0,a("montant_initial_base_premier_enfant"),0]],WA=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wn=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],WB=[0,a(U),[0,a("droit_ouvert_base"),0]],WV=[0,a(U),[0,a(bH),0]],Xb=[0,a(U),[0,a(kR),0]],Xm=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xc=[0,a(I),es,11,es,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xn=[0,a(U),[0,a("montant_vers\xc3\xa9_forfaitaire_par_enfant"),0]],XH=[0,a(I),c4,11,c4,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Xo=[0,a(I),c4,11,c4,56,[0,a(J),[0,a(H),[0,a(B),0]]]],XI=[0,a(U),[0,a("montant_initial_base_troisi\xc3\xa8me_enfant_et_plus"),0]],Y3=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XJ=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Y4=[0,a(U),[0,a("montant_initial_base_deuxi\xc3\xa8me_enfant"),0]],Y9=[0,a(I),mG,11,mG,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Y5=[0,a(I),mG,11,mG,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Y_=[0,a(U),[0,a("rapport_enfants_total_moyen"),0]],ZD=[0,a(U),[0,a(ka),0]],ZK=[0,a(I),gU,11,gU,36,[0,a(J),[0,a(H),[0,a(B),0]]]],ZE=[0,a(I),gU,11,gU,36,[0,a(J),[0,a(H),[0,a(B),0]]]],ZL=[0,a(U),[0,a("montant_vers\xc3\xa9_forfaitaire"),0]],ZV=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZM=[0,a(I),dT,11,dT,31,[0,a(J),[0,a(H),[0,a(B),0]]]],ZW=[0,a(U),[0,a("montant_initial_base"),0]],_j=[0,a(U),[0,a(j4),0]],_A=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_k=[0,a(I),eR,11,eR,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_B=[0,a(U),[0,a("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_forfaitaire"),0]],_E=[0,a(I),kU,11,kU,43,[0,a(J),[0,a(H),[0,a(B),0]]]],_C=[0,a(I),kU,11,kU,43,[0,a(J),[0,a(H),[0,a(B),0]]]],_F=[0,a(U),[0,a("montant_avec_garde_altern\xc3\xa9e_base"),0]],_U=[0,a(U),[0,a(j$),0]],_Y=[0,a(I),kT,11,kT,29,[0,a(J),[0,a(H),[0,a(B),0]]]],_V=[0,a(I),kT,11,kT,29,[0,a(J),[0,a(H),[0,a(B),0]]]],_Z=[0,a(U),[0,a("montant_vers\xc3\xa9_base"),0]],_8=[0,a(I),iv,11,iv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],_0=[0,a(I),iv,11,iv,35,[0,a(J),[0,a(H),[0,a(B),0]]]],_9=[0,a(U),[0,a("montant_vers\xc3\xa9_majoration"),0]],$a=[0,a(I),m7,11,m7,58,[0,a(J),[0,a(H),[0,a(B),0]]]],__=[0,a(I),m7,11,m7,58,[0,a(J),[0,a(H),[0,a(B),0]]]],$b=[0,a(U),[0,a("montant_base_compl\xc3\xa9ment_pour_base_et_majoration"),0]],$j=[0,a(I),mx,11,mx,59,[0,a(J),[0,a(H),[0,a(B),0]]]],$c=[0,a(I),mx,11,mx,59,[0,a(J),[0,a(H),[0,a(B),0]]]],$k=[0,a(U),[0,a("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_base_et_majoration"),0]],$o=[0,a(I),cd,12,cd,25,[0,a(J),[0,a(H),[0,a(B),0]]]],$l=[0,a(I),cd,12,cd,25,[0,a(J),[0,a(H),[0,a(B),0]]]],$p=[0,a(U),[0,a("montant_vers\xc3\xa9"),0]],$q=[0,a(bP),xb,5,rg,6,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],$r=[0,a(bP),xb,5,rg,6,[0,a(dZ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Q5=[0,a("examples/allocations_familiales/autres_codes.catala_fr"),24,5,24,63,[0,a("Article L821-3"),[0,a(z0),[0,a(E1),[0,a(yn),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]]]],Q6=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q1=[0,a(bP),60,5,62,62,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Q2=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q0=[0,a(bP),49,5,50,50,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],Q3=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q4=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q7=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],QZ=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q8=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],QY=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],QU=[0,a(bP),68,5,71,56,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],QV=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],QT=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],QW=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],QS=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],QO=[0,a(dU),nW,18,nW,41,[0,a(xH),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(c7),[0,a(af),0]]]]]]],QM=a(oS),QN=a(n0),QP=[0,a(I),59,11,59,27,[0,a(bE),[0,a(H),[0,a(B),0]]]],QL=[0,a(dU),31,14,31,30,[0,a(lU),[0,a(nR),[0,a(ed),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],QJ=a(oS),QK=a(n0),Qy=[5,0],Qz=[4,0],QA=[3,0],QB=[2,0],QC=[1,0],QD=[0,0],QE=[0,a(bP),yQ,5,rL,30,[0,a(CJ),[0,a(yw),[0,a(ke),[0,a(d0),[0,a(ab),[0,a(af),0]]]]]]],QF=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qx=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qr=[0,a(I),68,14,68,28,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qn=[0,a(I),69,14,69,32,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qj=[0,a(dU),21,14,21,26,[0,a(lU),[0,a(nR),[0,a(ed),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],Qk=[0,a(I),60,12,60,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qi=[0,a(I),60,12,60,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Ql=[0,a(co),[0,a(y7),0]],Qo=[0,a(I),69,14,69,32,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qp=[0,a(co),[0,a(Fa),0]],Qm=[0,a(I),69,14,69,32,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qs=[0,a(I),68,14,68,28,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qt=[0,a(co),[0,a(DE),0]],Qq=[0,a(I),68,14,68,28,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qu=[0,a(co),[0,a(ge),[0,a(ho),0]]],Qv=[0,a(co),[0,a(ge),[0,a(ho),0]]],QG=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qw=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],QH=[0,a(co),[0,a(vk),0]],QQ=[0,a(I),59,11,59,27,[0,a(bE),[0,a(H),[0,a(B),0]]]],QI=[0,a(I),59,11,59,27,[0,a(bE),[0,a(H),[0,a(B),0]]]],QR=[0,a(co),[0,a(Ae),0]],QX=[0,a(co),[0,a(iU),0]],Q9=[0,a(co),[0,a(dh),0]],Qe=[0,a(eC),28,5,29,33,[0,a(Cn),[0,a(cf),0]]],Qd=a(xO),Qf=[0,a(eC),6,12,6,19,[0,a(cf),0]],Qb=[0,a(eC),48,5,49,33,[0,a(AH),[0,a(cf),0]]],Qa=a(xm),Qc=[0,a(eC),6,12,6,19,[0,a(cf),0]],P_=[0,a(eC),64,5,65,33,[0,a(Ca),[0,a(cf),0]]],P9=a(BY),P$=[0,a(eC),6,12,6,19,[0,a(cf),0]],P7=[0,a(eC),82,5,83,33,[0,a(wV),[0,a(cf),0]]],P6=a(BS),P8=[0,a(eC),6,12,6,19,[0,a(cf),0]],Qg=[0,a(eC),6,12,6,19,[0,a(cf),0]],P5=[0,a(eC),6,12,6,19,[0,a(cf),0]],Qh=[0,a(f_),[0,a(bQ),0]],PT=[7,0],PU=[5,0],PV=[4,0],PW=[3,0],PX=[2,0],PY=[1,0],PZ=[0,0],P0=[6,0],P1=[0,a(bu),29,5,38,6,[0,a(b6),[0,a(lT),[0,a(aC),0]]]],PS=a(wM),P2=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],PP=[8,0],PQ=[0,a(bu),47,5,49,6,[0,a(b6),[0,a(lT),[0,a(aC),0]]]],PO=a(xL),PR=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],PE=[7,0],PF=[5,0],PG=[4,0],PH=[3,0],PI=[2,0],PJ=[1,0],PK=[0,0],PL=[6,0],PM=[0,a(bu),68,5,77,6,[0,a(b6),[0,a(nO),[0,a(aC),0]]]],PD=a(AO),PN=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],PA=[8,0],PB=[0,a(bu),86,5,88,6,[0,a(b6),[0,a(nO),[0,a(aC),0]]]],Pz=a(vc),PC=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Pp=[7,0],Pq=[5,0],Pr=[4,0],Ps=[3,0],Pt=[2,0],Pu=[1,0],Pv=[0,0],Pw=[6,0],Px=[0,a(bu),c4,5,bp,6,[0,a(b6),[0,a(lW),[0,a(aC),0]]]],Po=a(Br),Py=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Pl=[8,0],Pm=[0,a(bu),cs,5,cQ,6,[0,a(b6),[0,a(lW),[0,a(aC),0]]]],Pk=a(EE),Pn=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Pa=[7,0],Pb=[5,0],Pc=[4,0],Pd=[3,0],Pe=[2,0],Pf=[1,0],Pg=[0,0],Ph=[6,0],Pi=[0,a(bu),eY,5,fK,6,[0,a(b6),[0,a(nl),[0,a(aC),0]]]],O$=a(BJ),Pj=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],O8=[8,0],O9=[0,a(bu),qT,5,nU,6,[0,a(b6),[0,a(nl),[0,a(aC),0]]]],O7=a(wZ),O_=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OX=[7,0],OY=[5,0],OZ=[4,0],O0=[3,0],O1=[2,0],O2=[1,0],O3=[0,0],O4=[6,0],O5=[0,a(bu),h1,5,iM,6,[0,a(fW),[0,a(mL),[0,a(aC),0]]]],OW=a(zK),O6=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OT=[8,0],OU=[0,a(bu),w4,5,yA,6,[0,a(fW),[0,a(mL),[0,a(aC),0]]]],OS=a(ED),OV=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OI=[7,0],OJ=[5,0],OK=[4,0],OL=[3,0],OM=[2,0],ON=[1,0],OO=[0,0],OP=[6,0],OQ=[0,a(bu),vI,5,E3,6,[0,a(fW),[0,a(oo),[0,a(aC),0]]]],OH=a(El),OR=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OE=[8,0],OF=[0,a(bu),E$,5,vE,6,[0,a(fW),[0,a(oo),[0,a(aC),0]]]],OD=a(Fk),OG=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Ot=[7,0],Ou=[5,0],Ov=[4,0],Ow=[3,0],Ox=[2,0],Oy=[1,0],Oz=[0,0],OA=[6,0],OB=[0,a(bu),rq,5,nT,6,[0,a(b6),[0,a(m8),[0,a(aC),0]]]],Os=a(v9),OC=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Op=[8,0],Oq=[0,a(bu),A9,5,ni,6,[0,a(b6),[0,a(m8),[0,a(aC),0]]]],Oo=a(zJ),Or=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],P3=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],On=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],P4=[0,a(ho),[0,a(z2),0]],Ok=[0,a(a0),12,14,12,25,[0,a(eO),[0,a(a1),0]]],Og=[2,0],Oh=a(p),Oi=[1,0],Oj=a("-1"),Ol=[0,a(I),80,12,80,23,[0,a(J),[0,a(H),[0,a(B),0]]]],Of=[0,a(I),80,12,80,23,[0,a(J),[0,a(H),[0,a(B),0]]]],Om=[0,a(rl),[0,a("le_plus_\xc3\xa2g\xc3\xa9"),0]],Oc=[0,a(dU),78,14,78,41,[0,a(nJ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],Od=[0,a(I),76,12,76,39,[0,a(J),[0,a(H),[0,a(B),0]]]],Ob=[0,a(I),76,12,76,39,[0,a(J),[0,a(H),[0,a(B),0]]]],Oe=[0,a(q$),[0,a(eP),0]],N5=a(qH),N6=a(qW),N7=a(EZ),N8=a(q3),N9=a(q4),N_=a(rE),N$=a(rw),Oa=[0,a("Enfant"),0],NV=a(mw),NX=a(oy),NY=a(l$),NZ=a(Dp),N0=a(yR),N1=a(o9),N2=a(C0),N3=a(no),N4=a(oK),NW=[0,a(BT),0],NM=a(ol),NO=a(U),NP=a(qV),NQ=a(nY),NR=a(DP),NS=a(i0),NT=a(BQ),NU=a(yW),NN=[0,a(FP),0],NH=a("Compl\xc3\xa8te"),NJ=a("Partag\xc3\xa9e"),NK=a("Z\xc3\xa9ro"),NI=[0,a("PriseEnCompte"),0],ND=a(ks),NF=a(kh),NG=a(Cg),NE=[0,a(CS),0],Nx=a(A3),Nz=a(D1),NA=a(j7),NB=a(Fs),NC=a(yI),Ny=[0,a("PriseEnCharge"),0],abb=a(aa),aaN=a(mw),aaO=a(oy),aaP=a(wv),aaQ=a(l$),aaR=a(oK),aaS=a(Fl),aaT=a(xg),aaU=a(o9),aaV=a(no),aaX=[7,0],aaY=[5,0],aaZ=[4,0],aa0=[6,0],aa1=[8,0],aa2=[2,0],aa3=[3,0],aa4=[1,0],aa5=[0,0],aaW=[0,[11,a(bg),[2,0,[11,a(BO),0]]],a(wO)],aaw=a(v0),aax=a(x8),aay=a(nY),aaz=a(EA),aaA=a(i0),aaB=a(U),aaC=a(qw),aaD=a(ol),aaF=[0,0],aaG=[2,0],aaH=[1,0],aaI=[5,0],aaJ=[6,0],aaK=[3,0],aaL=[7,0],aaM=[4,0],aaE=[0,[11,a(bg),[2,0,[11,a(D2),0]]],a(FR)],aap=a(r4),aaq=a(ks),aar=a(kh),aat=[1,0],aau=[0,0],aav=[2,0],aas=[0,[11,a(bg),[2,0,[11,a(x2),0]]],a(wz)],aae=a(j7),aaf=a(rb),aag=a(qP),aah=a(rt),aai=a(qM),aak=[4,0],aal=[3,0],aam=[0,0],aan=[1,0],aao=[2,0],aaj=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PriseEnCharge.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PriseEnCharge.t'")],aac=[0,a(B$),a(o3),a(ge),a(DA),a(FL),a(v6),a(xi)],aad=[0,a(ge),a(v6),a(FL),a(xi),a(o3),a(B$),a(DA)],abj=a("AllocationsFamilialesLib"),bt1=[0,a(fc),zO,14,zO,25,[0,a("Conseil d'\xc3\x89tat, 5\xc3\xa8me - 4\xc3\xa8me chambres r\xc3\xa9unies, 21/07/2017, 398563"),0]],btU=a(p),btV=a(p),bt0=a(b5),btW=[0,a(a6),[0,a(aw),[0,a(ac),0]]],btX=[0,a(a6),[0,a(aw),0]],btY=[0,a(a6),[0,a(aw),[0,a(ae),0]]],btZ=[0,a(a6),[0,a(aw),0]],btQ=[0,a(d),xw,14,xw,63,[0,a(bf),[0,a(e),0]]],btM=[0,a(d),vZ,14,vZ,25,[0,a(bf),[0,a(e),0]]],btG=[0,a(d),iI,5,iI,70,[0,a(bf),[0,a(e),0]]],btC=[0,a(d),hj,14,hj,58,[0,a(bf),[0,a(e),0]]],bty=[0,a(d),h5,14,h5,54,[0,a(bf),[0,a(e),0]]],btu=[0,a(d),fb,14,fb,51,[0,a(bf),[0,a(e),0]]],bto=[0,a(d),hi,14,hi,59,[0,a(bf),[0,a(e),0]]],btk=[0,a(d),iq,14,iq,38,[0,a(bf),[0,a(e),0]]],btg=[0,a(d),gL,14,gL,34,[0,a(bf),[0,a(e),0]]],btc=[0,a(d),io,14,io,31,[0,a(bf),[0,a(e),0]]],bs_=[0,a(d),AD,14,AD,48,[0,a(bf),[0,a(e),0]]],bs$=[0,a(d),ns,11,ns,45,[0,a(bf),[0,a(e),0]]],bs9=[0,a(d),ns,11,ns,45,[0,a(bf),[0,a(e),0]]],bta=[0,a(cO),[0,a("m\xc3\xa9nage_sans_enfants_garde_altern\xc3\xa9e"),0]],btd=[0,a(d),io,14,io,31,[0,a(bf),[0,a(e),0]]],bte=[0,a(cO),[0,a("calculette.m\xc3\xa9nage"),0]],btb=[0,a(d),io,14,io,31,[0,a(bf),[0,a(e),0]]],bth=[0,a(d),gL,14,gL,34,[0,a(bf),[0,a(e),0]]],bti=[0,a(cO),[0,a("calculette.demandeur"),0]],btf=[0,a(d),gL,14,gL,34,[0,a(bf),[0,a(e),0]]],btl=[0,a(d),iq,14,iq,38,[0,a(bf),[0,a(e),0]]],btm=[0,a(cO),[0,a("calculette.date_courante"),0]],btj=[0,a(d),iq,14,iq,38,[0,a(bf),[0,a(e),0]]],btp=[0,a(d),hi,14,hi,59,[0,a(bf),[0,a(e),0]]],btq=[0,a(cO),[0,a("calculette.ressources_m\xc3\xa9nage_prises_en_compte"),0]],btn=[0,a(d),hi,14,hi,59,[0,a(bf),[0,a(e),0]]],btr=[0,a(cO),[0,a(D0),[0,a(a6),0]]],bts=[0,a(cO),[0,a(D0),[0,a(a6),0]]],btv=[0,a(d),fb,14,fb,51,[0,a(bf),[0,a(e),0]]],btw=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.m\xc3\xa9nage"),0]],btt=[0,a(d),fb,14,fb,51,[0,a(bf),[0,a(e),0]]],btz=[0,a(d),h5,14,h5,54,[0,a(bf),[0,a(e),0]]],btA=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.demandeur"),0]],btx=[0,a(d),h5,14,h5,54,[0,a(bf),[0,a(e),0]]],btD=[0,a(d),hj,14,hj,58,[0,a(bf),[0,a(e),0]]],btE=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.date_courante"),0]],btB=[0,a(d),hj,14,hj,58,[0,a(bf),[0,a(e),0]]],btH=[0,a(d),iI,5,iI,70,[0,a(bf),[0,a(e),0]]],btI=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.ressources_m\xc3\xa9nage_prises_en_compte"),0]],btF=[0,a(d),iI,5,iI,70,[0,a(bf),[0,a(e),0]]],btJ=[0,a(cO),[0,a(wU),[0,a(a6),0]]],btK=[0,a(cO),[0,a(wU),[0,a(a6),0]]],btN=[0,a(d),o2,12,o2,23,[0,a(bf),[0,a(e),0]]],btL=[0,a(d),o2,12,o2,23,[0,a(bf),[0,a(e),0]]],btO=[0,a(cO),[0,a(n_),0]],btR=[0,a(d),mo,11,mo,60,[0,a(bf),[0,a(e),0]]],btP=[0,a(d),mo,11,mo,60,[0,a(bf),[0,a(e),0]]],btS=[0,a(cO),[0,a(kD),0]],bt2=[0,a(d),l9,12,l9,23,[0,a(bf),[0,a(e),0]]],btT=[0,a(d),l9,12,l9,23,[0,a(bf),[0,a(e),0]]],bt3=[0,a(cO),[0,a("aide_finale"),0]],bs5=[0,a(aG),gd,14,gd,33,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsW=a(p),bsX=[0,a(cR),[0,a(aw),[0,a(ac),0]]],bsY=[0,a(cR),[0,a(aw),0]],bsZ=[0,a(cR),[0,a(aw),[0,a(ae),0]]],bs0=[0,a(cR),[0,a(aw),0]],bs1=[0,a(cS),[0,a(aw),[0,a(ac),0]]],bs2=[0,a(cS),[0,a(aw),0]],bs3=[0,a(cS),[0,a(aw),[0,a(ae),0]]],bs4=[0,a(cS),[0,a(aw),0]],bsS=[0,a(aG),f6,14,f6,36,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsK=[0,a(cS),[0,a(aw),[0,a(ac),0]]],bsL=[0,a(cS),[0,a(aw),0]],bsM=[0,a(cS),[0,a(aw),[0,a(ae),0]]],bsN=[0,a(cS),[0,a(aw),0]],bsO=[0,a(cR),[0,a(aw),[0,a(ac),0]]],bsP=[0,a(cR),[0,a(aw),0]],bsQ=[0,a(cR),[0,a(aw),[0,a(ae),0]]],bsR=[0,a(cR),[0,a(aw),0]],bsT=[0,a(d),hZ,12,hZ,34,[0,a(ax),[0,a(e),0]]],bsJ=[0,a(d),hZ,12,hZ,34,[0,a(ax),[0,a(e),0]]],bsG=[0,a(aG),hZ,14,hZ,25,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsC=[0,a(d),v8,14,v8,63,[0,a(ax),[0,a(e),0]]],bsw=[0,a(d),gB,14,gB,62,[0,a(ax),[0,a(e),0]]],bss=[0,a(d),i8,14,i8,53,[0,a(ax),[0,a(e),0]]],bso=[0,a(d),hM,5,hM,65,[0,a(ax),[0,a(e),0]]],bsk=[0,a(d),hP,14,hP,68,[0,a(ax),[0,a(e),0]]],bsg=[0,a(d),gd,14,gd,66,[0,a(ax),[0,a(e),0]]],bsc=[0,a(aG),dC,14,dC,58,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsb=[0,0],br9=[0,a(d),ij,14,ij,64,[0,a(ax),[0,a(e),0]]],br3=[0,a(aG),dw,14,dw,50,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],br0=[2,0],br1=[1,0],br2=[2,0],brW=[0,a(d),jm,14,jm,54,[0,a(ax),[0,a(e),0]]],brS=[0,a(d),f6,14,f6,45,[0,a(ax),[0,a(e),0]]],brO=[0,a(d),h4,14,h4,66,[0,a(ax),[0,a(e),0]]],brK=[0,a(d),hK,14,hK,60,[0,a(ax),[0,a(e),0]]],brG=[0,a(d),i4,14,i4,58,[0,a(ax),[0,a(e),0]]],brC=[0,a(d),iX,14,iX,56,[0,a(ax),[0,a(e),0]]],brw=[0,a(d),i3,14,i3,67,[0,a(ax),[0,a(e),0]]],brs=[0,a(d),dC,14,dC,63,[0,a(ax),[0,a(e),0]]],bro=[0,a(d),iR,14,iR,60,[0,a(ax),[0,a(e),0]]],bri=[0,a(aG),h2,5,h2,74,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bre=[0,a(d),dw,14,dw,55,[0,a(ax),[0,a(e),0]]],bra=[0,a(d),gP,14,gP,52,[0,a(ax),[0,a(e),0]]],bq8=[0,a(d),gc,14,gc,59,[0,a(ax),[0,a(e),0]]],bq9=[0,a(d),gc,14,gc,59,[0,a(ax),[0,a(e),0]]],bq_=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.date_courante"),0]],bq7=[0,a(d),gc,14,gc,59,[0,a(ax),[0,a(e),0]]],brb=[0,a(d),gP,14,gP,52,[0,a(ax),[0,a(e),0]]],brc=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.m\xc3\xa9nage"),0]],bq$=[0,a(d),gP,14,gP,52,[0,a(ax),[0,a(e),0]]],brf=[0,a(d),dw,14,dw,55,[0,a(ax),[0,a(e),0]]],brg=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.demandeur"),0]],brd=[0,a(d),dw,14,dw,55,[0,a(ax),[0,a(e),0]]],brj=[0,a(aG),h2,5,h2,74,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],brk=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.b\xc3\xa9n\xc3\xa9ficie_aide_personnalis\xc3\xa9e_logement"),0]],brh=[0,a(aG),h2,5,h2,74,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],brl=[0,a(a6),[0,a(u4),[0,a(cb),0]]],brm=[0,a(a6),[0,a(u4),[0,a(cb),0]]],brp=[0,a(d),iR,14,iR,60,[0,a(ax),[0,a(e),0]]],brq=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.m\xc3\xa9nage"),0]],brn=[0,a(d),iR,14,iR,60,[0,a(ax),[0,a(e),0]]],brt=[0,a(d),dC,14,dC,63,[0,a(ax),[0,a(e),0]]],bru=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.demandeur"),0]],brr=[0,a(d),dC,14,dC,63,[0,a(ax),[0,a(e),0]]],brx=[0,a(d),i3,14,i3,67,[0,a(ax),[0,a(e),0]]],bry=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.date_courante"),0]],brv=[0,a(d),i3,14,i3,67,[0,a(ax),[0,a(e),0]]],brz=[0,a(a6),[0,a(C9),[0,a(b7),0]]],brA=[0,a(a6),[0,a(C9),[0,a(b7),0]]],brD=[0,a(d),iX,14,iX,56,[0,a(ax),[0,a(e),0]]],brE=[0,a(a6),[0,a("calcul_allocation_logement.mode_occupation"),0]],brB=[0,a(d),iX,14,iX,56,[0,a(ax),[0,a(e),0]]],brH=[0,a(d),i4,14,i4,58,[0,a(ax),[0,a(e),0]]],brI=[0,a(a6),[0,a("calcul_allocation_logement.ressources_m\xc3\xa9nage_sans_arrondi"),0]],brF=[0,a(d),i4,14,i4,58,[0,a(ax),[0,a(e),0]]],brL=[0,a(d),hK,14,hK,60,[0,a(ax),[0,a(e),0]]],brM=[0,a(a6),[0,a("calcul_allocation_logement.situation_familiale"),0]],brJ=[0,a(d),hK,14,hK,60,[0,a(ax),[0,a(e),0]]],brP=[0,a(d),h4,14,h4,66,[0,a(ax),[0,a(e),0]]],brQ=[0,a(a6),[0,a("calcul_allocation_logement.nombre_personnes_\xc3\xa0_charge"),0]],brN=[0,a(d),h4,14,h4,66,[0,a(ax),[0,a(e),0]]],brT=[0,a(d),f6,14,f6,45,[0,a(ax),[0,a(e),0]]],brU=[0,a(a6),[0,a("calcul_allocation_logement.zone"),0]],brR=[0,a(d),f6,14,f6,45,[0,a(ax),[0,a(e),0]]],brX=[0,a(d),jm,14,jm,54,[0,a(ax),[0,a(e),0]]],brY=[0,a(a6),[0,a("calcul_allocation_logement.date_courante"),0]],brV=[0,a(d),jm,14,jm,54,[0,a(ax),[0,a(e),0]]],br4=[0,a(aG),dw,14,dw,50,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],br5=[0,a(a6),[0,a("calcul_allocation_logement.type_aide"),0]],brZ=[0,a(aG),dw,14,dw,50,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],br6=[0,a(a6),[0,a(Em),[0,a(cR),0]]],br7=[0,a(a6),[0,a(Em),[0,a(cR),0]]],br_=[0,a(d),ij,14,ij,64,[0,a(ax),[0,a(e),0]]],br$=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.mode_occupation"),0]],br8=[0,a(d),ij,14,ij,64,[0,a(ax),[0,a(e),0]]],bsd=[0,a(aG),dC,14,dC,58,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bse=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.type_aide"),0]],bsa=[0,a(aG),dC,14,dC,58,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsh=[0,a(d),gd,14,gd,66,[0,a(ax),[0,a(e),0]]],bsi=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.ressources_m\xc3\xa9nage_sans_arrondi"),0]],bsf=[0,a(d),gd,14,gd,66,[0,a(ax),[0,a(e),0]]],bsl=[0,a(d),hP,14,hP,68,[0,a(ax),[0,a(e),0]]],bsm=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.situation_familiale"),0]],bsj=[0,a(d),hP,14,hP,68,[0,a(ax),[0,a(e),0]]],bsp=[0,a(d),hM,5,hM,65,[0,a(ax),[0,a(e),0]]],bsq=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.nombre_personnes_\xc3\xa0_charge"),0]],bsn=[0,a(d),hM,5,hM,65,[0,a(ax),[0,a(e),0]]],bst=[0,a(d),i8,14,i8,53,[0,a(ax),[0,a(e),0]]],bsu=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.zone"),0]],bsr=[0,a(d),i8,14,i8,53,[0,a(ax),[0,a(e),0]]],bsx=[0,a(d),gB,14,gB,62,[0,a(ax),[0,a(e),0]]],bsy=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.date_courante"),0]],bsv=[0,a(d),gB,14,gB,62,[0,a(ax),[0,a(e),0]]],bsz=[0,a(a6),[0,a(zl),[0,a(cS),0]]],bsA=[0,a(a6),[0,a(zl),[0,a(cS),0]]],bsD=[0,a(d),l6,12,l6,61,[0,a(ax),[0,a(e),0]]],bsB=[0,a(d),l6,12,l6,61,[0,a(ax),[0,a(e),0]]],bsE=[0,a(a6),[0,a(kD),0]],bsH=[0,a(d),nr,12,nr,23,[0,a(ax),[0,a(e),0]]],bsF=[0,a(d),nr,12,nr,23,[0,a(ax),[0,a(e),0]]],bsI=[0,a(a6),[0,a(n_),0]],bsU=[0,a(a6),[0,a(aw),0]],bs6=[0,a(d),o5,12,o5,31,[0,a(ax),[0,a(e),0]]],bsV=[0,a(d),o5,12,o5,31,[0,a(ax),[0,a(e),0]]],bs7=[0,a(a6),[0,a(cX),0]],bq4=[0,a(E),Bk,14,Bk,33,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bq0=[0,a(E),vY,14,vY,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bq1=[0,a(d),oi,12,oi,34,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bqZ=[0,a(d),oi,12,oi,34,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bqW=[0,a(E),Bb,14,Bb,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqP=[0,a(V),[0,a(aw),[0,a(ac),0]]],bqQ=[0,a(V),[0,a(aw),0]],bqR=[0,a(V),[0,a(aw),[0,a(ae),0]]],bqS=[0,a(V),[0,a(aw),0]],bqE=[0,a(bh),[0,a(aw),[0,a(ac),0]]],bqF=[0,a(bh),[0,a(aw),0]],bqG=[0,a(bh),[0,a(aw),[0,a(ae),0]]],bqH=[0,a(bh),[0,a(aw),0]],bqu=[0,a(V),[0,a(aw),[0,a(ac),0]]],bqv=[0,a(V),[0,a(aw),0]],bqw=[0,a(V),[0,a(aw),[0,a(ae),0]]],bqx=[0,a(V),[0,a(aw),0]],bql=[0,a(ao),[0,a(aw),[0,a(ac),0]]],bqm=[0,a(ao),[0,a(aw),0]],bqn=[0,a(ao),[0,a(aw),[0,a(ae),0]]],bqo=[0,a(ao),[0,a(aw),0]],bqa=[0,a(bh),[0,a(aw),[0,a(ac),0]]],bqb=[0,a(bh),[0,a(aw),0]],bqc=[0,a(bh),[0,a(aw),[0,a(ae),0]]],bqd=[0,a(bh),[0,a(aw),0]],bqh=a(p),bqi=a(p),bp9=[0,a(E),1539,16,1542,39,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bp_=[0,a(bh),[0,a(bo),[0,a(ac),0]]],bp$=[0,a(bh),[0,a(bo),0]],bqe=[0,a(E),1524,9,1545,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqf=[0,a(bh),[0,a(bo),[0,a(ae),0]]],bqg=[0,a(bh),[0,a(bo),0]],bqj=[0,a(ao),[0,a(bo),[0,a(ac),0]]],bqk=[0,a(ao),[0,a(bo),0]],bqp=[0,a(E),1588,9,1599,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqq=[0,a(ao),[0,a(bo),[0,a(ae),0]]],bqr=[0,a(ao),[0,a(bo),0]],bqs=[0,a(V),[0,a(bo),[0,a(ac),0]]],bqt=[0,a(V),[0,a(bo),0]],bqy=[0,a(E),1609,10,1624,11,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqz=[0,a(V),[0,a(bo),[0,a(ae),0]]],bqA=[0,a(V),[0,a(bo),0]],bqL=a(p),bqM=a(p),bqB=[0,a(E),1571,16,1574,39,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqC=[0,a(bh),[0,a(bo),[0,a(ac),0]]],bqD=[0,a(bh),[0,a(bo),0]],bqI=[0,a(E),zt,9,1577,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqJ=[0,a(bh),[0,a(bo),[0,a(ae),0]]],bqK=[0,a(bh),[0,a(bo),0]],bqN=[0,a(V),[0,a(bo),[0,a(ac),0]]],bqO=[0,a(V),[0,a(bo),0]],bqT=[0,a(E),1636,10,1651,11,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqU=[0,a(V),[0,a(bo),[0,a(ae),0]]],bqV=[0,a(V),[0,a(bo),0]],bp5=[0,a(Q),88,14,88,44,[0,a(cG),[0,a(bX),[0,a(L),0]]]],bpZ=[0,0],bp0=[1,0],bp1=[1,0],bp2=[1,0],bp3=[0,0],bp4=[1,0],bpV=[0,a(E),EM,14,EM,31,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bpS=a(c5),bpT=a(B5),bpU=a(qY),bpO=[0,a(E),so,14,so,34,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bpP=[0,a(d),mP,11,mP,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpN=[0,a(d),mP,11,mP,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpQ=[0,a(cR),[0,a(xM),0]],bpW=[0,a(d),nb,10,nb,22,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpR=[0,a(d),nb,10,nb,22,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpX=[0,a(cR),[0,a(xf),0]],bp6=[0,a(d),mD,11,mD,41,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bpY=[0,a(d),mD,11,mD,41,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bp7=[0,a(cR),[0,a(y6),0]],bqX=[0,a(d),mU,11,mU,33,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bp8=[0,a(d),mU,11,mU,33,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bqY=[0,a(cR),[0,a(Fi),0]],bq2=[0,a(cR),[0,a(aw),0]],bq5=[0,a(d),kL,12,kL,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bq3=[0,a(d),kL,12,kL,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bq6=[0,a(cR),[0,a(cX),0]],bpI=[0,a(aG),vw,5,vw,73,[0,a("Article L841-3"),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpH=[2,0],bpJ=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpF=[0,a(aG),fb,5,1140,28,[0,a("Article L841-4"),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpE=[0,0],bpG=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpK=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpD=[0,a(aG),vA,14,vA,25,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpz=[0,0],bpA=[0,0],bpB=[1,0],bpC=[2,0],bpp=a(p),bpq=[0,a(aG),1002,5,1006,29,[0,a(im),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpr=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpk=a(z),bpl=[0,a(aG),979,5,kL,13,[0,a(im),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpm=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpf=[0,a(aU),[0,a(fj),[0,a(ac),0]]],bpg=[0,a(aU),[0,a(fj),0]],bph=[0,a(aU),[0,a(fj),[0,a(ae),0]]],bpi=[0,a(aU),[0,a(fj),0]],bpe=a(z),bpj=[0,a(aG),961,5,963,9,[0,a(im),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpn=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpo=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bps=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bo9=[2,0],bpc=[0,0],bo_=[0,a(cq),[0,a(dh),[0,a(ac),0]]],bo$=[0,a(cq),[0,a(dh),0]],bpa=[0,a(cq),[0,a(dh),[0,a(ae),0]]],bpb=[0,a(cq),[0,a(dh),0]],bo8=a(p),bpd=[0,a(aG),922,5,kz,29,[0,a(im),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpt=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bo1=[2,0],bo6=[0,0],bo2=[0,a(cq),[0,a(dh),[0,a(ac),0]]],bo3=[0,a(cq),[0,a(dh),0]],bo4=[0,a(cq),[0,a(dh),[0,a(ae),0]]],bo5=[0,a(cq),[0,a(dh),0]],bo0=a(z),bo7=[0,a(aG),890,5,911,8,[0,a(im),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpu=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],boV=[4,0],boW=[3,0],boX=[1,0],boY=[0,0],boZ=[0,a(aG),870,5,875,6,[0,a(im),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpv=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],boU=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],boQ=[0,a(aG),xs,14,xs,25,[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]],boO=[0,0],boP=[2,0],boK=[0,a(d),hn,14,hn,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],boG=[0,a(d),B8,14,B8,63,[0,a(aK),[0,a(i),[0,a(e),0]]]],boA=[0,a(E),nf,9,nf,55,[0,a(oh),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boB=[0,a(E),nf,9,nf,55,[0,a(oh),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boC=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_surface"),0]],box=[0,a(E),nj,9,nj,68,[0,a(oh),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boy=[0,a(E),nj,9,nj,68,[0,a(oh),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boz=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_r\xc3\xa9sidence_principale"),0]],bou=[0,a(d),gz,14,gz,47,[0,a(aK),[0,a(i),[0,a(e),0]]]],boq=[0,a(d),i9,14,i9,43,[0,a(aK),[0,a(i),[0,a(e),0]]]],bom=[0,a(d),iZ,14,iZ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bod=[0,a(E),4364,5,4369,28,[0,a(oH),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boe=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boc=[0,a(E),4347,5,4352,28,[0,a(oH),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bof=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bob=[0,a(E),4330,5,4337,28,[0,a(oH),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bog=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boh=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boa=[0,a(E),4300,5,4302,28,[0,a(oH),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boi=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn$=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn5=[0,a(d),hp,14,hp,46,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn4=[6,0],bn0=[0,a(d),jp,14,jp,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnZ=[1,0],bnV=[0,a(d),h9,14,h9,50,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnR=[0,a(E),rS,14,rS,28,[0,a("Article D841-1"),[0,a("Chapitre 1 : Champ d'application"),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]],bnS=[0,a(d),nM,11,nM,25,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnQ=[0,a(d),nM,11,nM,25,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnT=[0,a(cb),[0,a("dur\xc3\xa9e_l841_1_3"),0]],bnW=[0,a(d),h9,14,h9,50,[0,a(aK),[0,a(i),[0,a(e),0]]]],bnX=[0,a(cb),[0,a(w$),0]],bnU=[0,a(d),h9,14,h9,50,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn1=[0,a(d),jp,14,jp,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn2=[0,a(cb),[0,a(Bm),0]],bnY=[0,a(d),jp,14,jp,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn6=[0,a(d),hp,14,hp,46,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn7=[0,a(cb),[0,a(yX),0]],bn3=[0,a(d),hp,14,hp,46,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn8=[0,a(cb),[0,a(oO),[0,a(cq),0]]],bn9=[0,a(cb),[0,a(oO),[0,a(cq),0]]],boj=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn_=[0,a(d),cW,11,cW,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bok=[0,a(cb),[0,a("condition_accession_propri\xc3\xa9t\xc3\xa9"),0]],bon=[0,a(d),iZ,14,iZ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boo=[0,a(cb),[0,a(vF),0]],bol=[0,a(d),iZ,14,iZ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bor=[0,a(d),i9,14,i9,43,[0,a(aK),[0,a(i),[0,a(e),0]]]],bos=[0,a(cb),[0,a(Bj),0]],bop=[0,a(d),i9,14,i9,43,[0,a(aK),[0,a(i),[0,a(e),0]]]],bov=[0,a(d),gz,14,gz,47,[0,a(aK),[0,a(i),[0,a(e),0]]]],bow=[0,a(cb),[0,a(F6),0]],bot=[0,a(d),gz,14,gz,47,[0,a(aK),[0,a(i),[0,a(e),0]]]],boD=[0,a(cb),[0,a(oF),[0,a(aU),0]]],boE=[0,a(cb),[0,a(oF),[0,a(aU),0]]],boH=[0,a(d),f2,12,f2,61,[0,a(aK),[0,a(i),[0,a(e),0]]]],boF=[0,a(d),f2,12,f2,61,[0,a(aK),[0,a(i),[0,a(e),0]]]],boI=[0,a(cb),[0,a(kD),0]],boL=[0,a(d),oR,12,oR,54,[0,a(aK),[0,a(i),[0,a(e),0]]]],boJ=[0,a(d),oR,12,oR,54,[0,a(aK),[0,a(i),[0,a(e),0]]]],boM=[0,a(cb),[0,a(r7),0]],boR=[0,a(d),nc,10,nc,31,[0,a(aK),[0,a(i),[0,a(e),0]]]],boN=[0,a(d),nc,10,nc,31,[0,a(aK),[0,a(i),[0,a(e),0]]]],boS=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_dispositions_communes"),0]],bpw=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],boT=[0,a(d),b4,11,b4,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpx=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement_familiale"),0]],bpL=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpy=[0,a(d),eM,10,eM,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpM=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_l841_2"),0]],bnM=[0,a(aG),gJ,5,593,36,[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]],bnN=[0,a(d),f3,12,f3,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnL=[0,a(d),f3,12,f3,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnH=[0,a(d),ne,14,ne,56,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnD=[0,a(d),ru,14,ru,63,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnt=[0,a(E),3693,5,3698,30,[0,a("Article R832-21"),[0,a("Sous-Section 1 : Conditions d'assimilation des logements-foyers aux logements \xc3\xa0 usage locatif"),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],bnu=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnp=[0,a(b7),[0,a(kj),[0,a(ac),0]]],bnq=[0,a(b7),[0,a(kj),0]],bnr=[0,a(b7),[0,a(kj),[0,a(ae),0]]],bns=[0,a(b7),[0,a(kj),0]],bno=[0,a(aG),kS,5,704,30,[0,a(mf),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bnv=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnn=[0,a(aG),Y,5,kp,30,[0,a(mf),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bnw=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnm=[0,a(aG),kc,5,650,30,[0,a(mf),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bnx=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bni=[0,a(b7),[0,a(j3),[0,a(ac),0]]],bnj=[0,a(b7),[0,a(j3),0]],bnk=[0,a(b7),[0,a(j3),[0,a(ae),0]]],bnl=[0,a(b7),[0,a(j3),0]],bnh=[0,a(aG),kf,5,623,30,[0,a(mf),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bny=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnz=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bng=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bna=[0,a(d),gO,14,gO,47,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm8=[0,a(d),hg,14,hg,43,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm4=[0,a(d),hJ,14,hJ,40,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmX=[0,a(aG),ko,5,753,30,[0,a(qG),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bmY=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmW=[0,a(aG),721,5,726,30,[0,a(qG),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bmZ=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmV=[0,a(aG),hr,31,hr,54,[0,a(qG),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bm0=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmU=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmQ=[0,a(d),fh,11,fh,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmR=[0,a(d),fh,11,fh,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmP=[0,a(d),fh,11,fh,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmJ=[0,a(E),3021,5,3024,41,[0,a("Article R832-7"),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmK=[0,a(d),dj,11,dj,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmI=[0,a(E),2986,5,2988,42,[0,a("Article R832-5"),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmL=[0,a(d),dj,11,dj,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmM=[0,a(d),dj,11,dj,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmH=[0,a(d),dj,11,dj,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmN=[0,a(d),dj,11,dj,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmG=[0,a(d),dj,11,dj,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmO=[0,a(b7),[0,a(j3),0]],bmS=[0,a(b7),[0,a(kj),0]],bm1=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmT=[0,a(d),dR,11,dR,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm2=[0,a(b7),[0,a("condition_logement_pr\xc3\xaat"),0]],bm5=[0,a(d),hJ,14,hJ,40,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm6=[0,a(b7),[0,a(vF),0]],bm3=[0,a(d),hJ,14,hJ,40,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm9=[0,a(d),hg,14,hg,43,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm_=[0,a(b7),[0,a(Bj),0]],bm7=[0,a(d),hg,14,hg,43,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnb=[0,a(d),gO,14,gO,47,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnc=[0,a(b7),[0,a(F6),0]],bm$=[0,a(d),gO,14,gO,47,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnd=[0,a(b7),[0,a(oF),[0,a(aU),0]]],bne=[0,a(b7),[0,a(oF),[0,a(aU),0]]],bnA=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnf=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnB=[0,a(b7),[0,a("condition_logement_bailleur"),0]],bnE=[0,a(d),n9,12,n9,61,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnC=[0,a(d),n9,12,n9,61,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnF=[0,a(b7),[0,a(kD),0]],bnI=[0,a(d),l3,12,l3,54,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnG=[0,a(d),l3,12,l3,54,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnJ=[0,a(b7),[0,a(r7),0]],bnO=[0,a(d),f3,12,f3,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnK=[0,a(d),f3,12,f3,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnP=[0,a(b7),[0,a(n_),0]],bmD=[0,a(E),AS,14,AS,40,[0,a("Article D823-22"),[0,a(l_),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmy=[0,a(aG),eb,5,566,42,[0,a("Article L823-8"),[0,a(a4),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bmz=[0,a(d),f$,11,f$,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmx=[0,a(d),f$,11,f$,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmt=[0,a(Q),BI,14,BI,29,[0,a("Article 45"),[0,a("Chapitre VIII : Prime de d\xc3\xa9m\xc3\xa9nagement"),[0,a(L),0]]]],bmo=a(_),bmp=a(qz),bmq=a(_),bms=a(p),bmr=a("2.4"),bmj=[0,a(E),2069,6,2079,75,[0,a(qL),[0,a(l_),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmk=[0,a(d),ex,11,ex,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmi=[0,a(d),ex,11,ex,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmc=[0,a(d),iN,14,iN,43,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl_=[0,a(d),iQ,14,iQ,39,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl6=[0,a(d),fR,14,fR,36,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl0=[0,a(d),fT,14,fT,65,[0,a(bv),[0,a(i),[0,a(e),0]]]],blU=a(_),blV=[0,a(E),2060,5,2065,77,[0,a(qL),[0,a(l_),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blW=[0,a(d),f0,11,f0,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],blT=[0,a(d),f0,11,f0,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],blP=[0,a(E),Ai,14,Ai,47,[0,a(qL),[0,a(l_),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blQ=[0,a(d),nQ,11,nQ,44,[0,a(bv),[0,a(i),[0,a(e),0]]]],blO=[0,a(d),nQ,11,nQ,44,[0,a(bv),[0,a(i),[0,a(e),0]]]],blR=[0,a(dk),[0,a("d\xc3\xa9lai_apr\xc3\xa8s_emm\xc3\xa9nagement_l823_8_2"),0]],blX=[0,a(d),f0,11,f0,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],blS=[0,a(d),f0,11,f0,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],blY=[0,a(dk),[0,a("condition_rang_enfant"),0]],bl1=[0,a(d),fT,14,fT,65,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl2=[0,a(dk),[0,a(DV),0]],blZ=[0,a(d),fT,14,fT,65,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl3=[0,a(dk),[0,a(mS),[0,a(f_),0]]],bl4=[0,a(dk),[0,a(mS),[0,a(f_),0]]],bl7=[0,a(d),fR,14,fR,36,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl8=[0,a(dk),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.m\xc3\xa9nage"),0]],bl5=[0,a(d),fR,14,fR,36,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl$=[0,a(d),iQ,14,iQ,39,[0,a(bv),[0,a(i),[0,a(e),0]]]],bma=[0,a(dk),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.demandeur"),0]],bl9=[0,a(d),iQ,14,iQ,39,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmd=[0,a(d),iN,14,iN,43,[0,a(bv),[0,a(i),[0,a(e),0]]]],bme=[0,a(dk),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.date_courante"),0]],bmb=[0,a(d),iN,14,iN,43,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmf=[0,a(dk),[0,a(A5),[0,a(aU),0]]],bmg=[0,a(dk),[0,a(A5),[0,a(aU),0]]],bml=[0,a(d),ex,11,ex,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmh=[0,a(d),ex,11,ex,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmm=[0,a(dk),[0,a("condition_p\xc3\xa9riode_d\xc3\xa9m\xc3\xa9nagement"),0]],bmu=[0,a(d),mJ,11,mJ,26,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmn=[0,a(d),mJ,11,mJ,26,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmv=[0,a(dk),[0,a("plafond_d823_22"),0]],bmA=[0,a(d),f$,11,f$,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmw=[0,a(d),f$,11,f$,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmB=[0,a(dk),[0,a(A$),0]],bmE=[0,a(d),oZ,12,oZ,38,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmC=[0,a(d),oZ,12,oZ,38,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmF=[0,a(dk),[0,a("montant_prime_d\xc3\xa9m\xc3\xa9nagement"),0]],blK=[0,a(E),qZ,14,qZ,33,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blG=[0,a(E),En,14,En,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blH=[0,a(d),j6,12,j6,34,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blF=[0,a(d),j6,12,j6,34,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blC=[0,a(E),vR,14,vR,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blv=[0,a(au),[0,a(aw),[0,a(ac),0]]],blw=[0,a(au),[0,a(aw),0]],blx=[0,a(au),[0,a(aw),[0,a(ae),0]]],bly=[0,a(au),[0,a(aw),0]],blm=[0,a(aj),[0,a(aw),[0,a(ac),0]]],bln=[0,a(aj),[0,a(aw),0]],blo=[0,a(aj),[0,a(aw),[0,a(ae),0]]],blp=[0,a(aj),[0,a(aw),0]],blb=[0,a(aD),[0,a(aw),[0,a(ac),0]]],blc=[0,a(aD),[0,a(aw),0]],bld=[0,a(aD),[0,a(aw),[0,a(ae),0]]],ble=[0,a(aD),[0,a(aw),0]],bli=a(p),blj=a(p),bk_=[0,a(E),1455,16,1458,39,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bk$=[0,a(aD),[0,a(bo),[0,a(ac),0]]],bla=[0,a(aD),[0,a(bo),0]],blf=[0,a(E),1440,9,1460,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blg=[0,a(aD),[0,a(bo),[0,a(ae),0]]],blh=[0,a(aD),[0,a(bo),0]],blk=[0,a(aj),[0,a(bo),[0,a(ac),0]]],bll=[0,a(aj),[0,a(bo),0]],blq=[0,a(E),1491,10,1507,11,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blr=[0,a(aj),[0,a(bo),[0,a(ae),0]]],bls=[0,a(aj),[0,a(bo),0]],blt=[0,a(au),[0,a(bo),[0,a(ac),0]]],blu=[0,a(au),[0,a(bo),0]],blz=[0,a(E),1471,9,1480,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blA=[0,a(au),[0,a(bo),[0,a(ae),0]]],blB=[0,a(au),[0,a(bo),0]],bk6=[0,a(Q),78,14,78,44,[0,a(cG),[0,a(bX),[0,a(L),0]]]],bk0=[0,0],bk1=[1,0],bk2=[1,0],bk3=[1,0],bk4=[0,0],bk5=[1,0],bkW=[0,a(E),Af,14,Af,31,[0,a(rP),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],bkT=a(c5),bkU=a(B5),bkV=a(qY),bkP=[0,a(E),zu,14,zu,34,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bkQ=[0,a(d),ko,11,ko,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkO=[0,a(d),ko,11,ko,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkR=[0,a(cS),[0,a(xM),0]],bkX=[0,a(d),m2,10,m2,22,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkS=[0,a(d),m2,10,m2,22,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkY=[0,a(cS),[0,a(xf),0]],bk7=[0,a(d),oe,11,oe,41,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bkZ=[0,a(d),oe,11,oe,41,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bk8=[0,a(cS),[0,a(y6),0]],blD=[0,a(d),m1,11,m1,33,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bk9=[0,a(d),m1,11,m1,33,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blE=[0,a(cS),[0,a(Fi),0]],blI=[0,a(cS),[0,a(aw),0]],blL=[0,a(d),mW,12,mW,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blJ=[0,a(d),mW,12,mW,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blM=[0,a(cS),[0,a(cX),0]],bkL=[0,a(E),Eo,14,Eo,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bkG=[0,a(V),[0,a(bJ),[0,a(ac),0]]],bkH=[0,a(V),[0,a(bJ),0]],bkI=[0,a(V),[0,a(bJ),[0,a(ae),0]]],bkJ=[0,a(V),[0,a(bJ),0]],bkK=a(p),bkM=[0,a(d),l8,10,l8,25,[0,a(D),[0,a(A),[0,a(e),0]]]],bkF=[0,a(d),l8,10,l8,25,[0,a(D),[0,a(A),[0,a(e),0]]]],bkC=[0,a(E),EJ,14,EJ,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bkr=[0,a(V),[0,a(er),[0,a(ac),0]]],bks=[0,a(V),[0,a(er),0]],bkt=[0,a(V),[0,a(er),[0,a(ae),0]]],bku=[0,a(V),[0,a(er),0]],bkv=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],bkw=[0,a(bk),[0,a(bQ),0]],bkx=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],bky=[0,a(bk),[0,a(bQ),0]],bkz=a(kW),bkA=a(p),bkB=a(p),bkD=[0,a(d),mC,10,mC,40,[0,a(D),[0,a(A),[0,a(e),0]]]],bkq=[0,a(d),mC,10,mC,40,[0,a(D),[0,a(A),[0,a(e),0]]]],bkn=[0,a(E),y3,14,y3,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bke=[0,a(V),[0,a(bI),[0,a(ac),0]]],bkf=[0,a(V),[0,a(bI),0]],bkg=[0,a(V),[0,a(bI),[0,a(ae),0]]],bkh=[0,a(V),[0,a(bI),0]],bki=[0,a(V),[0,a(eK),[0,a(ac),0]]],bkj=[0,a(V),[0,a(eK),0]],bkk=[0,a(V),[0,a(eK),[0,a(ae),0]]],bkl=[0,a(V),[0,a(eK),0]],bkm=a(p),bko=[0,a(d),ou,10,ou,32,[0,a(D),[0,a(A),[0,a(e),0]]]],bkd=[0,a(d),ou,10,ou,32,[0,a(D),[0,a(A),[0,a(e),0]]]],bka=[0,a(E),AC,14,AC,33,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bj8=[0,a(E),vb,14,vb,47,[0,a(oP),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bj3=[0,a(V),[0,a(de),[0,a(ac),0]]],bj4=[0,a(V),[0,a(de),0]],bj5=[0,a(V),[0,a(de),[0,a(ae),0]]],bj6=[0,a(V),[0,a(de),0]],bj7=a(p),bj9=[0,a(d),nD,11,nD,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bj2=[0,a(d),nD,11,nD,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bjZ=[0,a(E),xd,14,xd,41,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjV=[0,a(E),AK,14,AK,33,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjR=[0,a(E),x1,14,x1,33,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjM=[0,a(E),4671,7,4674,44,[0,a(oP),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjN=[0,a(d),gV,11,gV,47,[0,a(D),[0,a(A),[0,a(e),0]]]],bjL=[0,a(E),vM,14,vM,50,[0,a(oP),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjF=[0,a(E),nn,14,nn,62,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjG=[0,a(E),nn,14,nn,62,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjH=[0,a(V),[0,a("calcul_apl_logement_foyer.n_nombre_parts_d832_25"),0]],bjC=[0,a(E),m4,14,m4,61,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjD=[0,a(E),m4,14,m4,61,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjE=[0,a(V),[0,a(Eh),0]],bjz=[0,a(d),gG,14,gG,49,[0,a(D),[0,a(A),[0,a(e),0]]]],bjy=a(p),bju=[0,a(d),hR,14,hR,53,[0,a(D),[0,a(A),[0,a(e),0]]]],bjq=[0,a(d),i2,14,i2,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bjm=[0,a(d),ii,14,ii,70,[0,a(D),[0,a(A),[0,a(e),0]]]],bji=[0,a(d),iY,14,iY,65,[0,a(D),[0,a(A),[0,a(e),0]]]],bje=[0,a(d),jo,14,jo,67,[0,a(D),[0,a(A),[0,a(e),0]]]],bja=[0,a(d),iy,14,iy,61,[0,a(D),[0,a(A),[0,a(e),0]]]],bi8=[0,a(d),ju,14,ju,59,[0,a(D),[0,a(A),[0,a(e),0]]]],bi7=[3,0],bi1=[0,a(E),hx,14,hx,70,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biX=[0,a(E),hH,14,hH,69,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biT=[0,a(E),js,14,js,75,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biO=[0,a(E),A_,5,A_,44,[0,a(BN),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biG=[0,a(V),[0,a(dE),[0,a(ac),0]]],biH=[0,a(V),[0,a(dE),0]],biI=[0,a(V),[0,a(dE),[0,a(ae),0]]],biJ=[0,a(V),[0,a(dE),0]],biK=[0,a(V),[0,a(dE),[0,a(ac),0]]],biL=[0,a(V),[0,a(dE),0]],biM=[0,a(V),[0,a(dE),[0,a(ae),0]]],biN=[0,a(V),[0,a(dE),0]],biP=[0,a(d),h0,11,h0,36,[0,a(D),[0,a(A),[0,a(e),0]]]],biF=[0,a(E),EF,14,EF,39,[0,a(BN),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biB=[0,a(V),[0,a(dE),[0,a(ac),0]]],biC=[0,a(V),[0,a(dE),0]],biD=[0,a(V),[0,a(dE),[0,a(ae),0]]],biE=[0,a(V),[0,a(dE),0]],biw=[0,a(E),vT,5,vT,28,[0,a(nd),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bix=[0,a(d),iT,10,iT,15,[0,a(D),[0,a(A),[0,a(e),0]]]],biv=[0,a(E),Dx,14,Dx,41,[0,a(nd),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bis=a(c5),bit=a(qY),biu=a("4999"),bil=[0,a(aO),xK,24,xK,56,[0,a(or),[0,a(bB),[0,a(aM),0]]]],bic=a(df),bid=[0,a(V),[0,a(b$),[0,a(ac),0]]],bie=[0,a(V),[0,a(b$),0]],bif=[0,a(V),[0,a(b$),[0,a(ae),0]]],big=[0,a(V),[0,a(b$),0]],bih=[0,a(V),[0,a(b$),[0,a(ac),0]]],bii=[0,a(V),[0,a(b$),0]],bij=[0,a(V),[0,a(b$),[0,a(ae),0]]],bik=[0,a(V),[0,a(b$),0]],bim=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bib=[0,a(Q),Et,24,Et,56,[0,a(or),[0,a(bn),[0,a(L),0]]]],bh4=a(df),bh5=[0,a(V),[0,a(b$),[0,a(ac),0]]],bh6=[0,a(V),[0,a(b$),0]],bh7=[0,a(V),[0,a(b$),[0,a(ae),0]]],bh8=[0,a(V),[0,a(b$),0]],bh9=[0,a(V),[0,a(b$),[0,a(ac),0]]],bh_=[0,a(V),[0,a(b$),0]],bh$=[0,a(V),[0,a(b$),[0,a(ae),0]]],bia=[0,a(V),[0,a(b$),0]],bin=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bio=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bh3=[0,a(Q),AB,14,AB,46,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bhZ=[0,a(V),[0,a(b$),[0,a(ac),0]]],bh0=[0,a(V),[0,a(b$),0]],bh1=[0,a(V),[0,a(b$),[0,a(ae),0]]],bh2=[0,a(V),[0,a(b$),0]],bip=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bhY=[0,a(d),eT,10,eT,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bhV=[0,a(E),Au,15,Au,37,[0,a(oP),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bhW=[0,a(d),mQ,11,mQ,33,[0,a(D),[0,a(A),[0,a(e),0]]]],bhU=[0,a(d),mQ,11,mQ,33,[0,a(D),[0,a(A),[0,a(e),0]]]],bhQ=[0,a(E),4696,6,4702,6,[0,a(nd),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bhR=[0,a(d),fU,11,fU,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bhO=[0,a(E),4714,5,4715,59,[0,a(nd),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bhP=[0,a(d),fU,11,fU,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bhJ=[0,a(Q),Ey,5,Ey,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bgZ=a(p),bg0=a("158700"),bg1=a("191300"),bg2=a(z),bg3=a("205500"),bg4=a(X),bg5=a("211300"),bg6=a(_),bg7=a("217100"),bg8=a(ah),bg9=a("222900"),bg_=a(P),bg$=a(z6),bha=a(P),bhb=a("19800"),bhc=a(z6),bhd=a(p),bhe=a("139300"),bhf=a("170600"),bhg=a(z),bhh=a("184700"),bhi=a(X),bhj=a("191200"),bhk=a(_),bhl=a(zn),bhm=a(ah),bhn=a("204200"),bho=a(P),bhp=a(wC),bhq=a(P),bhr=a(sk),bhs=a(wC),bht=a(p),bhu=a("130600"),bhv=a("158400"),bhw=a(z),bhx=a("172600"),bhy=a(X),bhz=a(DX),bhA=a(_),bhB=a("187000"),bhC=a(ah),bhD=a("194200"),bhE=a(P),bhF=a(rH),bhG=a(P),bhH=a("18200"),bhI=a(rH),bhK=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bgX=[0,a(Q),x4,5,x4,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bgb=a(p),bgc=a("160400"),bgd=a("193400"),bge=a(z),bgf=a("207800"),bgg=a(X),bgh=a("213700"),bgi=a(_),bgj=a("219600"),bgk=a(ah),bgl=a(yH),bgm=a(P),bgn=a(ob),bgo=a(P),bgp=a("20000"),bgq=a(ob),bgr=a(p),bgs=a(DJ),bgt=a(DY),bgu=a(z),bgv=a("186700"),bgw=a(X),bgx=a("193300"),bgy=a(_),bgz=a(q0),bgA=a(ah),bgB=a("206500"),bgC=a(P),bgD=a(w3),bgE=a(P),bgF=a(zq),bgG=a(w3),bgH=a(p),bgI=a(Bp),bgJ=a(ra),bgK=a(z),bgL=a("174500"),bgM=a(X),bgN=a(xP),bgO=a(_),bgP=a("189100"),bgQ=a(ah),bgR=a("196400"),bgS=a(P),bgT=a(vm),bgU=a(P),bgV=a("18400"),bgW=a(vm),bgY=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bf$=[0,a(Q),CZ,5,CZ,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bfp=a(p),bfq=a("163300"),bfr=a("196900"),bfs=a(z),bft=a("211600"),bfu=a(X),bfv=a(wE),bfw=a(_),bfx=a("223600"),bfy=a(ah),bfz=a("229600"),bfA=a(P),bfB=a(BE),bfC=a(P),bfD=a("20400"),bfE=a(BE),bfF=a(p),bfG=a("143300"),bfH=a("175600"),bfI=a(z),bfJ=a("190100"),bfK=a(X),bfL=a("196600"),bfM=a(_),bfN=a("203500"),bfO=a(ah),bfP=a("210200"),bfQ=a(P),bfR=a(EU),bfS=a(P),bfT=a("19600"),bfU=a(EU),bfV=a(p),bfW=a("134400"),bfX=a(xS),bfY=a(z),bfZ=a("177700"),bf0=a(X),bf1=a("185100"),bf2=a(_),bf3=a(wF),bf4=a(ah),bf5=a(q0),bf6=a(P),bf7=a(FO),bf8=a(P),bf9=a("18700"),bf_=a(FO),bga=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bfn=[0,a(Q),Ez,5,Ez,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],beD=a(p),beE=a("167200"),beF=a("201600"),beG=a(z),beH=a("216700"),beI=a(X),beJ=a("222800"),beK=a(_),beL=a("229000"),beM=a(ah),beN=a("235100"),beO=a(P),beP=a(FI),beQ=a(P),beR=a(vL),beS=a(FI),beT=a(p),beU=a("146700"),beV=a(DX),beW=a(z),beX=a("194700"),beY=a(X),beZ=a("201500"),be0=a(_),be1=a("208400"),be2=a(ah),be3=a("215200"),be4=a(P),be5=a(ob),be6=a(P),be7=a(Bz),be8=a(ob),be9=a(p),be_=a("137600"),be$=a("166900"),bfa=a(z),bfb=a("182000"),bfc=a(X),bfd=a("189500"),bfe=a(_),bff=a("197100"),bfg=a(ah),bfh=a(C7),bfi=a(P),bfj=a(Bd),bfk=a(P),bfl=a(sk),bfm=a(Bd),bfo=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],beB=[0,a(Q),Ax,5,Ax,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bdR=a(p),bdS=a("167400"),bdT=a("201800"),bdU=a(z),bdV=a("216900"),bdW=a(X),bdX=a("223000"),bdY=a(_),bdZ=a("229200"),bd0=a(ah),bd1=a("235300"),bd2=a(P),bd3=a(As),bd4=a(P),bd5=a(vL),bd6=a(As),bd7=a(p),bd8=a("146800"),bd9=a("180000"),bd_=a(z),bd$=a("194900"),bea=a(X),beb=a(Fg),bec=a(_),bed=a(rH),bee=a(ah),bef=a("215400"),beg=a(P),beh=a(Cs),bei=a(P),bej=a(Bz),bek=a(Cs),bel=a(p),bem=a("137700"),ben=a("167100"),beo=a(z),bep=a("182200"),beq=a(X),ber=a("189700"),bes=a(_),bet=a("197300"),beu=a(ah),bev=a("204900"),bew=a(P),bex=a(DU),bey=a(P),bez=a(sk),beA=a(DU),beC=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bdP=[0,a(Q),zs,5,zs,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bc5=a(p),bc6=a("169100"),bc7=a("203800"),bc8=a(z),bc9=a("219100"),bc_=a(X),bc$=a("225200"),bda=a(_),bdb=a("231500"),bdc=a(ah),bdd=a("237700"),bde=a(P),bdf=a(mk),bdg=a(P),bdh=a("21100"),bdi=a(mk),bdj=a(p),bdk=a("148300"),bdl=a(xP),bdm=a(z),bdn=a("196800"),bdo=a(X),bdp=a("203700"),bdq=a(_),bdr=a("210700"),bds=a(ah),bdt=a(wE),bdu=a(P),bdv=a(w7),bdw=a(P),bdx=a("20300"),bdy=a(w7),bdz=a(p),bdA=a("139100"),bdB=a("168800"),bdC=a(z),bdD=a(rI),bdE=a(X),bdF=a("191600"),bdG=a(_),bdH=a("199300"),bdI=a(ah),bdJ=a("206900"),bdK=a(P),bdL=a(AV),bdM=a(P),bdN=a(zq),bdO=a(AV),bdQ=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bc3=[0,a(Q),BM,5,BM,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bch=a(p),bci=a("171100"),bcj=a("206200"),bck=a(z),bcl=a("221700"),bcm=a(X),bcn=a("227900"),bco=a(_),bcp=a("234300"),bcq=a(ah),bcr=a("240600"),bcs=a(P),bct=a(zW),bcu=a(P),bcv=a("21400"),bcw=a(zW),bcx=a(p),bcy=a("150100"),bcz=a(rI),bcA=a(z),bcB=a("199200"),bcC=a(X),bcD=a("206100"),bcE=a(_),bcF=a("213200"),bcG=a(ah),bcH=a("220200"),bcI=a(P),bcJ=a(y8),bcK=a(P),bcL=a("20500"),bcM=a(y8),bcN=a(p),bcO=a(DJ),bcP=a("170800"),bcQ=a(z),bcR=a("186200"),bcS=a(X),bcT=a("193900"),bcU=a(_),bcV=a(Fg),bcW=a(ah),bcX=a("209400"),bcY=a(P),bcZ=a(AU),bc0=a(P),bc1=a("19500"),bc2=a(AU),bc4=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bcf=[0,a(Q),Aw,5,Aw,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bbv=a(p),bbw=a("26084"),bbx=a("31435"),bby=a(z),bbz=a("33798"),bbA=a(X),bbB=a("34743"),bbC=a(_),bbD=a("35719"),bbE=a(ah),bbF=a("36679"),bbG=a(P),bbH=a(zc),bbI=a(P),bbJ=a("3262"),bbK=a(zc),bbL=a(p),bbM=a("22883"),bbN=a("28051"),bbO=a(z),bbP=a("30368"),bbQ=a(X),bbR=a("31420"),bbS=a(_),bbT=a("32502"),bbU=a(ah),bbV=a("33569"),bbW=a(P),bbX=a(Fx),bbY=a(P),bbZ=a("3125"),bb0=a(Fx),bb1=a(p),bb2=a("21465"),bb3=a("26038"),bb4=a(z),bb5=a("28386"),bb6=a(X),bb7=a("29560"),bb8=a(_),bb9=a("30749"),bb_=a(ah),bb$=a("31923"),bca=a(P),bcb=a(EW),bcc=a(P),bcd=a("2973"),bce=a(EW),bcg=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bbt=[0,a(Q),Dd,5,Dd,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],baJ=a(p),baK=a("26397"),baL=a("31812"),baM=a(z),baN=a("34204"),baO=a(X),baP=a("35160"),baQ=a(_),baR=a("36148"),baS=a(ah),baT=a("37119"),baU=a(P),baV=a(zA),baW=a(P),baX=a("3301"),baY=a(zA),baZ=a(p),ba0=a("23158"),ba1=a("28388"),ba2=a(z),ba3=a("30732"),ba4=a(X),ba5=a(mV),ba6=a(_),ba7=a("32892"),ba8=a(ah),ba9=a("33972"),ba_=a(P),ba$=a(EH),bba=a(P),bbb=a("3163"),bbc=a(EH),bbd=a(p),bbe=a("21723"),bbf=a("26350"),bbg=a(z),bbh=a("28727"),bbi=a(X),bbj=a("29915"),bbk=a(_),bbl=a("31118"),bbm=a(ah),bbn=a("32306"),bbo=a(P),bbp=a(xq),bbq=a(P),bbr=a("3009"),bbs=a(xq),bbu=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],baH=[0,a(Q),zx,5,zx,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a$X=a(p),a$Y=a(Ge),a$Z=a("32194"),a$0=a(z),a$1=a("34614"),a$2=a(X),a$3=a("35582"),a$4=a(_),a$5=a("36582"),a$6=a(ah),a$7=a("37564"),a$8=a(P),a$9=a(wS),a$_=a(P),a$$=a("3341"),baa=a(wS),bab=a(p),bac=a("23436"),bad=a("28729"),bae=a(z),baf=a("31101"),bag=a(X),bah=a("32179"),bai=a(_),baj=a("33287"),bak=a(ah),bal=a("34380"),bam=a(P),ban=a(AT),bao=a(P),bap=a("3201"),baq=a(AT),bar=a(p),bas=a("21984"),bat=a("26666"),bau=a(z),bav=a("29072"),baw=a(X),bax=a("30274"),bay=a(_),baz=a("31491"),baA=a(ah),baB=a("32694"),baC=a(P),baD=a(BL),baE=a(P),baF=a("3045"),baG=a(BL),baI=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a$V=[0,a(Q),yZ,5,yZ,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a_$=a(p),a$a=a("27195"),a$b=a("32773"),a$c=a(z),a$d=a("35237"),a$e=a(X),a$f=a("36222"),a$g=a(_),a$h=a("37240"),a$i=a(ah),a$j=a("38240"),a$k=a(P),a$l=a(BC),a$m=a(P),a$n=a("3401"),a$o=a(BC),a$p=a(p),a$q=a("23858"),a$r=a("29246"),a$s=a(z),a$t=a("31661"),a$u=a(X),a$v=a("32758"),a$w=a(_),a$x=a("33886"),a$y=a(ah),a$z=a("34999"),a$A=a(P),a$B=a(zE),a$C=a(P),a$D=a("3259"),a$E=a(zE),a$F=a(p),a$G=a("22380"),a$H=a("27146"),a$I=a(z),a$J=a("29595"),a$K=a(X),a$L=a("30819"),a$M=a(_),a$N=a("32058"),a$O=a(ah),a$P=a("33282"),a$Q=a(P),a$R=a(AI),a$S=a(P),a$T=a("3100"),a$U=a(AI),a$W=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a_9=[0,a(Q),wN,5,wN,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a_n=a(p),a_o=a("27956"),a_p=a("33691"),a_q=a(z),a_r=a("36224"),a_s=a(X),a_t=a("37236"),a_u=a(_),a_v=a("38283"),a_w=a(ah),a_x=a("39311"),a_y=a(P),a_z=a(yK),a_A=a(P),a_B=a("3496"),a_C=a(yK),a_D=a(p),a_E=a("24526"),a_F=a("30065"),a_G=a(z),a_H=a("32548"),a_I=a(X),a_J=a("33675"),a_K=a(_),a_L=a(FC),a_M=a(ah),a_N=a("35979"),a_O=a(P),a_P=a(AR),a_Q=a(P),a_R=a("3350"),a_S=a(AR),a_T=a(p),a_U=a("23007"),a_V=a("27906"),a_W=a(z),a_X=a("30424"),a_Y=a(X),a_Z=a("31682"),a_0=a(_),a_1=a(yP),a_2=a(ah),a_3=a("34214"),a_4=a(P),a_5=a(EB),a_6=a(P),a_7=a("3187"),a_8=a(EB),a__=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a_l=[0,a(Q),zL,5,zL,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a9B=a(p),a9C=a("28728"),a9D=a("34621"),a9E=a(z),a9F=a("37224"),a9G=a(X),a9H=a("38264"),a9I=a(_),a9J=a(ym),a9K=a(ah),a9L=a("40396"),a9M=a(P),a9N=a(xX),a9O=a(P),a9P=a("3592"),a9Q=a(xX),a9R=a(p),a9S=a("25203"),a9T=a("30895"),a9U=a(z),a9V=a("33446"),a9W=a(X),a9X=a("34604"),a9Y=a(_),a9Z=a("35796"),a90=a(ah),a91=a("36972"),a92=a(P),a93=a(Fq),a94=a(P),a95=a("3442"),a96=a(Fq),a97=a(p),a98=a("23642"),a99=a("28676"),a9_=a(z),a9$=a(xB),a_a=a(X),a_b=a("32556"),a_c=a(_),a_d=a("33866"),a_e=a(ah),a_f=a("35158"),a_g=a(P),a_h=a(wx),a_i=a(P),a_j=a("3275"),a_k=a(wx),a_m=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a9z=[0,a(Q),Fm,5,Fm,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a8P=a(p),a8Q=a("29575"),a8R=a("35642"),a8S=a(z),a8T=a("38322"),a8U=a(X),a8V=a("39393"),a8W=a(_),a8X=a("40501"),a8Y=a(ah),a8Z=a("41588"),a80=a(P),a81=a(Dv),a82=a(P),a83=a("3698"),a84=a(Dv),a85=a(p),a86=a("25946"),a87=a("31806"),a88=a(z),a89=a("34433"),a8_=a(X),a8$=a("35625"),a9a=a(_),a9b=a("36852"),a9c=a(ah),a9d=a("38063"),a9e=a(P),a9f=a(AE),a9g=a(P),a9h=a("3544"),a9i=a(AE),a9j=a(p),a9k=a("24339"),a9l=a("29522"),a9m=a(z),a9n=a("32186"),a9o=a(X),a9p=a("33516"),a9q=a(_),a9r=a(FC),a9s=a(ah),a9t=a("36195"),a9u=a(P),a9v=a(Eq),a9w=a(P),a9x=a("3372"),a9y=a(Eq),a9A=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a8N=[0,a(Q),Di,5,Di,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a73=a(p),a74=a("29670"),a75=a("35757"),a76=a(z),a77=a("38445"),a78=a(X),a79=a("39519"),a7_=a(_),a7$=a("40601"),a8a=a(ah),a8b=a("41721"),a8c=a(P),a8d=a(DC),a8e=a(P),a8f=a("3710"),a8g=a(DC),a8h=a(p),a8i=a("26029"),a8j=a("31908"),a8k=a(z),a8l=a("34643"),a8m=a(X),a8n=a("35739"),a8o=a(_),a8p=a("36970"),a8q=a(ah),a8r=a("38185"),a8s=a(P),a8t=a(Be),a8u=a(P),a8v=a("3555"),a8w=a(Be),a8x=a(p),a8y=a("24417"),a8z=a("29616"),a8A=a(z),a8B=a("32289"),a8C=a(X),a8D=a(zF),a8E=a(_),a8F=a("34977"),a8G=a(ah),a8H=a("36311"),a8I=a(P),a8J=a(Ag),a8K=a(P),a8L=a("3383"),a8M=a(Ag),a8O=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a71=[0,a(Q),ot,5,ot,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a7f=a(p),a7g=a("29996"),a7h=a("36149"),a7i=a(z),a7j=a("38868"),a7k=a(X),a7l=a("39954"),a7m=a(_),a7n=a("41078"),a7o=a(ah),a7p=a("42180"),a7q=a(P),a7r=a(Bu),a7s=a(P),a7t=a("3751"),a7u=a(Bu),a7v=a(p),a7w=a("26315"),a7x=a("32259"),a7y=a(z),a7z=a("34923"),a7A=a(X),a7B=a("36132"),a7C=a(_),a7D=a("37373"),a7E=a(ah),a7F=a("38605"),a7G=a(P),a7H=a(DM),a7I=a(P),a7J=a("3594"),a7K=a(DM),a7L=a(p),a7M=a("24686"),a7N=a("29942"),a7O=a(z),a7P=a("32644"),a7Q=a(X),a7R=a("33993"),a7S=a(_),a7T=a("35362"),a7U=a(ah),a7V=a("36710"),a7W=a(P),a7X=a(AA),a7Y=a(P),a7Z=a("3420"),a70=a(AA),a72=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a7d=[0,a(Q),zX,5,zX,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a6t=a(p),a6u=a("30296"),a6v=a("36510"),a6w=a(z),a6x=a("39257"),a6y=a(X),a6z=a("40354"),a6A=a(_),a6B=a("41489"),a6C=a(ah),a6D=a("42602"),a6E=a(P),a6F=a(wb),a6G=a(P),a6H=a("3789"),a6I=a(wb),a6J=a(p),a6K=a("26578"),a6L=a("32582"),a6M=a(z),a6N=a("35272"),a6O=a(X),a6P=a("36493"),a6Q=a(_),a6R=a("37751"),a6S=a(ah),a6T=a("38991"),a6U=a(P),a6V=a(xQ),a6W=a(P),a6X=a("3630"),a6Y=a(xQ),a6Z=a(p),a60=a("24933"),a61=a("30241"),a62=a(z),a63=a("32970"),a64=a(X),a65=a("34333"),a66=a(_),a67=a("35716"),a68=a(ah),a69=a("37077"),a6_=a(P),a6$=a(vh),a7a=a(P),a7b=a("3454"),a7c=a(vh),a7e=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a6r=[0,a(Q),F7,5,F7,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a5H=a(p),a5I=a("30947"),a5J=a("37295"),a5K=a(z),a5L=a("40101"),a5M=a(X),a5N=a("41222"),a5O=a(_),a5P=a("42381"),a5Q=a(ah),a5R=a("43518"),a5S=a(P),a5T=a(CP),a5U=a(P),a5V=a("3870"),a5W=a(CP),a5X=a(p),a5Y=a("27149"),a5Z=a("33283"),a50=a(z),a51=a("36030"),a52=a(X),a53=a("37278"),a54=a(_),a55=a("38563"),a56=a(ah),a57=a("39829"),a58=a(P),a59=a("42649"),a5_=a(P),a5$=a("3708"),a6a=a("42659"),a6b=a(p),a6c=a("25469"),a6d=a("30891"),a6e=a(z),a6f=a("33679"),a6g=a(X),a6h=a("35071"),a6i=a(_),a6j=a("36484"),a6k=a(ah),a6l=a("37874"),a6m=a(P),a6n=a(CX),a6o=a(P),a6p=a("3528"),a6q=a(CX),a6s=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a5F=[0,a(Q),v3,5,v3,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a4V=a(p),a4W=a("31123"),a4X=a("37508"),a4Y=a(z),a4Z=a("40330"),a40=a(X),a41=a("41457"),a42=a(_),a43=a("42623"),a44=a(ah),a45=a("43766"),a46=a(P),a47=a(vi),a48=a(P),a49=a("3892"),a4_=a(vi),a4$=a(p),a5a=a("27304"),a5b=a("33473"),a5c=a(z),a5d=a("36235"),a5e=a(X),a5f=a("37490"),a5g=a(_),a5h=a("38783"),a5i=a(ah),a5j=a("40056"),a5k=a(P),a5l=a(Cf),a5m=a(P),a5n=a("3729"),a5o=a(Cf),a5p=a(p),a5q=a("25614"),a5r=a("31067"),a5s=a(z),a5t=a("33871"),a5u=a(X),a5v=a("35271"),a5w=a(_),a5x=a("36692"),a5y=a(ah),a5z=a("38090"),a5A=a(P),a5B=a(zp),a5C=a(P),a5D=a("3548"),a5E=a(zp),a5G=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a4T=[0,a(Q),ga,5,ga,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a39=a(p),a3_=a("31148"),a3$=a("37538"),a4a=a(z),a4b=a("40362"),a4c=a(X),a4d=a("41490"),a4e=a(_),a4f=a("42657"),a4g=a(ah),a4h=a("43801"),a4i=a(P),a4j=a(xu),a4k=a(P),a4l=a("3895"),a4m=a(xu),a4n=a(p),a4o=a("27326"),a4p=a(FY),a4q=a(z),a4r=a("36264"),a4s=a(X),a4t=a("37520"),a4u=a(_),a4v=a("38814"),a4w=a(ah),a4x=a("40088"),a4y=a(P),a4z=a(FM),a4A=a(P),a4B=a("3732"),a4C=a(FM),a4D=a(p),a4E=a("25634"),a4F=a("31092"),a4G=a(z),a4H=a("33898"),a4I=a(X),a4J=a("35299"),a4K=a(_),a4L=a("36721"),a4M=a(ah),a4N=a("38120"),a4O=a(P),a4P=a(Ac),a4Q=a(P),a4R=a("3551"),a4S=a(Ac),a4U=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a37=[0,a(Q),Ct,5,Ct,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a3l=a(p),a3m=a("31382"),a3n=a("37820"),a3o=a(z),a3p=a("40665"),a3q=a(X),a3r=a("41801"),a3s=a(_),a3t=a("42977"),a3u=a(ah),a3v=a("44130"),a3w=a(P),a3x=a(z8),a3y=a(P),a3z=a("3924"),a3A=a(z8),a3B=a(p),a3C=a("27531"),a3D=a("33751"),a3E=a(z),a3F=a("36536"),a3G=a(X),a3H=a("37801"),a3I=a(_),a3J=a("39105"),a3K=a(ah),a3L=a("40389"),a3M=a(P),a3N=a(wL),a3O=a(P),a3P=a("3760"),a3Q=a(wL),a3R=a(p),a3S=a("25826"),a3T=a("31325"),a3U=a(z),a3V=a("34152"),a3W=a(X),a3X=a("35564"),a3Y=a(_),a3Z=a("36996"),a30=a(ah),a31=a("38406"),a32=a(P),a33=a(zI),a34=a(P),a35=a("3578"),a36=a(zI),a38=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a3j=[0,a(Q),nC,5,nC,32,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a2z=a(p),a2A=a("31476"),a2B=a("37933"),a2C=a(z),a2D=a("40787"),a2E=a(X),a2F=a("41927"),a2G=a(_),a2H=a("43106"),a2I=a(ah),a2J=a("44262"),a2K=a(P),a2L=a(wB),a2M=a(P),a2N=a("3936"),a2O=a(wB),a2P=a(p),a2Q=a("27614"),a2R=a("33853"),a2S=a(z),a2T=a("36646"),a2U=a(X),a2V=a("37915"),a2W=a(_),a2X=a("39222"),a2Y=a(ah),a2Z=a("40510"),a20=a(P),a21=a(E4),a22=a(P),a23=a("3771"),a24=a(E4),a25=a(p),a26=a("25904"),a27=a("31419"),a28=a(z),a29=a("34255"),a2_=a(X),a2$=a("35670"),a3a=a(_),a3b=a("37107"),a3c=a(ah),a3d=a("38521"),a3e=a(P),a3f=a(F1),a3g=a(P),a3h=a("3588"),a3i=a(F1),a3k=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bhL=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a2y=[0,a(d),aR,10,aR,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a2v=[0,a(E),FZ,14,FZ,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a2t=a(p),a2u=a(p),a2w=[0,a(d),n7,10,n7,32,[0,a(D),[0,a(A),[0,a(e),0]]]],a2s=[0,a(d),n7,10,n7,32,[0,a(D),[0,a(A),[0,a(e),0]]]],a2n=[0,a(aO),vd,5,vd,16,[0,a(or),[0,a(bB),[0,a(aM),0]]]],a2k=a(gS),a2l=a(qA),a2m=a(ff),a2o=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a2j=[0,a(aO),hB,43,hB,70,[0,a(vz),[0,a(bB),[0,a(aM),0]]]],a2f=a(p),a2g=a(ff),a2h=a(gS),a2i=a(ff),a2p=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a2c=[0,a(Q),D9,5,D9,16,[0,a(or),[0,a(bn),[0,a(L),0]]]],a1$=a(gD),a2a=a(qX),a2b=a(fo),a2d=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1_=[0,a(Q),D_,31,D_,58,[0,a(vz),[0,a(bn),[0,a(L),0]]]],a16=a(p),a17=a(fo),a18=a(gD),a19=a(fo),a2e=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a15=[0,a(d),dp,47,dp,53,[0,a(D),[0,a(A),[0,a(e),0]]]],a1Z=[0,a(d),iS,14,iS,50,[0,a(D),[0,a(A),[0,a(e),0]]]],a1T=[0,a(E),hC,14,hC,64,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1P=[0,a(E),hq,14,hq,59,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1L=[0,a(Q),yz,14,yz,33,[0,a(CU),[0,a(bn),[0,a(L),0]]]],a1K=a(AF),a1G=[0,a(Q),B3,14,B3,33,[0,a(Cx),[0,a(bn),[0,a(L),0]]]],a1F=a(sh),a1B=[0,a(Q),Eu,14,Eu,41,[0,a(CU),[0,a(bn),[0,a(L),0]]]],a1A=a("390000"),a1w=[0,a(Q),Fj,14,Fj,41,[0,a(Cx),[0,a(bn),[0,a(L),0]]]],a1v=a(qI),a1r=[0,a(Q),FN,14,FN,41,[0,a("Article 36"),[0,a(bn),[0,a(L),0]]]],a1q=a(ig),a1m=[0,a(fc),C1,14,C1,36,[0,a(C5),[0,a(zb),0]]],a1k=a(vD),a1l=a(et),a1g=[0,a(Q),yd,14,yd,40,[0,a("Article 35"),[0,a(bn),[0,a(L),0]]]],a1f=a(kk),a1h=[0,a(d),ok,11,ok,37,[0,a(D),[0,a(A),[0,a(e),0]]]],a1e=[0,a(d),ok,11,ok,37,[0,a(D),[0,a(A),[0,a(e),0]]]],a1i=[0,a(V),[0,a("montant_forfaitaire_d842_6"),0]],a1n=[0,a(d),n$,11,n$,33,[0,a(D),[0,a(A),[0,a(e),0]]]],a1j=[0,a(d),n$,11,n$,33,[0,a(D),[0,a(A),[0,a(e),0]]]],a1o=[0,a(V),[0,a(FA),0]],a1s=[0,a(d),o8,11,o8,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1p=[0,a(d),o8,11,o8,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1t=[0,a(V),[0,a("montant_minimal_aide_d842_6"),0]],a1x=[0,a(d),lQ,11,lQ,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1u=[0,a(d),lQ,11,lQ,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1y=[0,a(V),[0,a("montant_forfaitaire_d842_11"),0]],a1C=[0,a(d),mT,11,mT,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1z=[0,a(d),mT,11,mT,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1D=[0,a(V),[0,a("montant_forfaitaire_d842_12"),0]],a1H=[0,a(d),oU,11,oU,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1E=[0,a(d),oU,11,oU,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1I=[0,a(V),[0,a("coefficient_d842_11"),0]],a1M=[0,a(d),mc,11,mc,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1J=[0,a(d),mc,11,mc,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1N=[0,a(V),[0,a("coefficient_d842_12"),0]],a1Q=[0,a(E),hq,14,hq,59,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1R=[0,a(V),[0,a(nh),0]],a1O=[0,a(E),hq,14,hq,59,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1U=[0,a(E),hC,14,hC,64,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1V=[0,a(V),[0,a(n2),0]],a1S=[0,a(E),hC,14,hC,64,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1W=[0,a(V),[0,a(gb),[0,a(kq),0]]],a1X=[0,a(V),[0,a(gb),[0,a(kq),0]]],a10=[0,a(d),iS,14,iS,50,[0,a(D),[0,a(A),[0,a(e),0]]]],a11=[0,a(V),[0,a(ky),0]],a1Y=[0,a(d),iS,14,iS,50,[0,a(D),[0,a(A),[0,a(e),0]]]],a12=[0,a(V),[0,a(eJ),[0,a(bk),0]]],a13=[0,a(V),[0,a(eJ),[0,a(bk),0]]],a2q=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a14=[0,a(d),dp,11,dp,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a2r=[0,a(V),[0,a(qB),0]],a2x=[0,a(V),[0,a(bI),0]],bhM=[0,a(V),[0,a(b$),0]],bhS=[0,a(d),fU,11,fU,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bhN=[0,a(d),fU,11,fU,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bhT=[0,a(V),[0,a("seuil_minimal_ressources_m\xc3\xa9nage"),0]],bhX=[0,a(V),[0,a(de),0]],biq=[0,a(V),[0,a(dE),0]],biy=[0,a(d),iT,10,iT,15,[0,a(D),[0,a(A),[0,a(e),0]]]],bir=[0,a(d),iT,10,iT,15,[0,a(D),[0,a(A),[0,a(e),0]]]],biz=[0,a(V),[0,a(CW),0]],biQ=[0,a(d),h0,11,h0,36,[0,a(D),[0,a(A),[0,a(e),0]]]],biA=[0,a(d),h0,11,h0,36,[0,a(D),[0,a(A),[0,a(e),0]]]],biR=[0,a(V),[0,a("plafond_mensualit\xc3\xa9_d842_6"),0]],biU=[0,a(E),js,14,js,75,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biV=[0,a(V),[0,a(mK),0]],biS=[0,a(E),js,14,js,75,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biY=[0,a(E),hH,14,hH,69,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biZ=[0,a(V),[0,a(on),0]],biW=[0,a(E),hH,14,hH,69,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bi2=[0,a(E),hx,14,hx,70,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bi3=[0,a(V),[0,a(mz),0]],bi0=[0,a(E),hx,14,hx,70,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bi4=[0,a(V),[0,a(fI),[0,a(dP),0]]],bi5=[0,a(V),[0,a(fI),[0,a(dP),0]]],bi9=[0,a(d),ju,14,ju,59,[0,a(D),[0,a(A),[0,a(e),0]]]],bi_=[0,a(V),[0,a(xW),0]],bi6=[0,a(d),ju,14,ju,59,[0,a(D),[0,a(A),[0,a(e),0]]]],bjb=[0,a(d),iy,14,iy,61,[0,a(D),[0,a(A),[0,a(e),0]]]],bjc=[0,a(V),[0,a(zv),0]],bi$=[0,a(d),iy,14,iy,61,[0,a(D),[0,a(A),[0,a(e),0]]]],bjf=[0,a(d),jo,14,jo,67,[0,a(D),[0,a(A),[0,a(e),0]]]],bjg=[0,a(V),[0,a(vH),0]],bjd=[0,a(d),jo,14,jo,67,[0,a(D),[0,a(A),[0,a(e),0]]]],bjj=[0,a(d),iY,14,iY,65,[0,a(D),[0,a(A),[0,a(e),0]]]],bjk=[0,a(V),[0,a(Fy),0]],bjh=[0,a(d),iY,14,iY,65,[0,a(D),[0,a(A),[0,a(e),0]]]],bjn=[0,a(d),ii,14,ii,70,[0,a(D),[0,a(A),[0,a(e),0]]]],bjo=[0,a(V),[0,a(Cm),0]],bjl=[0,a(d),ii,14,ii,70,[0,a(D),[0,a(A),[0,a(e),0]]]],bjr=[0,a(d),i2,14,i2,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bjs=[0,a(V),[0,a(CB),0]],bjp=[0,a(d),i2,14,i2,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bjv=[0,a(d),hR,14,hR,53,[0,a(D),[0,a(A),[0,a(e),0]]]],bjw=[0,a(V),[0,a(Fb),0]],bjt=[0,a(d),hR,14,hR,53,[0,a(D),[0,a(A),[0,a(e),0]]]],bjA=[0,a(d),gG,14,gG,49,[0,a(D),[0,a(A),[0,a(e),0]]]],bjB=[0,a(V),[0,a(wp),0]],bjx=[0,a(d),gG,14,gG,49,[0,a(D),[0,a(A),[0,a(e),0]]]],bjI=[0,a(V),[0,a(nL),[0,a(au),0]]],bjJ=[0,a(V),[0,a(nL),[0,a(au),0]]],bjO=[0,a(d),gV,11,gV,47,[0,a(D),[0,a(A),[0,a(e),0]]]],bjK=[0,a(d),gV,11,gV,47,[0,a(D),[0,a(A),[0,a(e),0]]]],bjP=[0,a(V),[0,a("seuil_minimal_d\xc3\xa9pense_nette_minimale"),0]],bjS=[0,a(d),og,11,og,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bjQ=[0,a(d),og,11,og,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bjT=[0,a(V),[0,a(sq),0]],bjW=[0,a(d),kx,11,kx,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bjU=[0,a(d),kx,11,kx,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bjX=[0,a(V),[0,a(q_),0]],bj0=[0,a(d),kN,11,kN,38,[0,a(D),[0,a(A),[0,a(e),0]]]],bjY=[0,a(d),kN,11,kN,38,[0,a(D),[0,a(A),[0,a(e),0]]]],bj1=[0,a(V),[0,a(q7),0]],bj_=[0,a(V),[0,a(eK),0]],bkb=[0,a(d),m6,12,m6,31,[0,a(D),[0,a(A),[0,a(e),0]]]],bj$=[0,a(d),m6,12,m6,31,[0,a(D),[0,a(A),[0,a(e),0]]]],bkc=[0,a(V),[0,a(cX),0]],bkp=[0,a(V),[0,a(er),0]],bkE=[0,a(V),[0,a(bJ),0]],bkN=[0,a(V),[0,a(fl),0]],a1b=[0,a(E),yx,14,yx,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a08=[0,a(ao),[0,a(bJ),[0,a(ac),0]]],a09=[0,a(ao),[0,a(bJ),0]],a0_=[0,a(ao),[0,a(bJ),[0,a(ae),0]]],a0$=[0,a(ao),[0,a(bJ),0]],a1a=a(p),a1c=[0,a(d),na,10,na,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a07=[0,a(d),na,10,na,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a04=[0,a(E),xD,14,xD,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0T=[0,a(ao),[0,a(kE),[0,a(ac),0]]],a0U=[0,a(ao),[0,a(kE),0]],a0V=[0,a(ao),[0,a(kE),[0,a(ae),0]]],a0W=[0,a(ao),[0,a(kE),0]],a0X=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],a0Y=[0,a(bk),[0,a(bQ),0]],a0Z=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],a00=[0,a(bk),[0,a(bQ),0]],a01=a(kW),a02=a(p),a03=a(p),a05=[0,a(d),lS,10,lS,40,[0,a(N),[0,a(A),[0,a(e),0]]]],a0S=[0,a(d),lS,10,lS,40,[0,a(N),[0,a(A),[0,a(e),0]]]],a0P=[0,a(E),w0,14,w0,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0L=[0,a(ao),[0,a(er),[0,a(ac),0]]],a0M=[0,a(ao),[0,a(er),0]],a0N=[0,a(ao),[0,a(er),[0,a(ae),0]]],a0O=[0,a(ao),[0,a(er),0]],a0Q=[0,a(d),kz,10,kz,19,[0,a(N),[0,a(A),[0,a(e),0]]]],a0K=[0,a(d),kz,10,kz,19,[0,a(N),[0,a(A),[0,a(e),0]]]],a0H=[0,a(E),AM,14,AM,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0x=[0,a(ao),[0,a(bI),[0,a(ac),0]]],a0y=[0,a(ao),[0,a(bI),0]],a0z=[0,a(ao),[0,a(bI),[0,a(ae),0]]],a0A=[0,a(ao),[0,a(bI),0]],a0B=[0,a(ao),[0,a(eK),[0,a(ac),0]]],a0C=[0,a(ao),[0,a(eK),0]],a0D=[0,a(ao),[0,a(eK),[0,a(ae),0]]],a0E=[0,a(ao),[0,a(eK),0]],a0F=a(p),a0G=a(p),a0I=[0,a(d),l5,10,l5,32,[0,a(N),[0,a(A),[0,a(e),0]]]],a0w=[0,a(d),l5,10,l5,32,[0,a(N),[0,a(A),[0,a(e),0]]]],a0t=[0,a(E),DG,14,DG,33,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0p=[0,a(E),yF,14,yF,47,[0,a(CK),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0g=[0,a(ao),[0,a(de),[0,a(ac),0]]],a0h=[0,a(ao),[0,a(de),0]],a0i=[0,a(ao),[0,a(de),[0,a(ae),0]]],a0j=[0,a(ao),[0,a(de),0]],a0k=[0,a(ao),[0,a(de),[0,a(ac),0]]],a0l=[0,a(ao),[0,a(de),0]],a0m=[0,a(ao),[0,a(de),[0,a(ae),0]]],a0n=[0,a(ao),[0,a(de),0]],a0o=a(p),a0q=[0,a(d),n1,11,n1,44,[0,a(N),[0,a(A),[0,a(e),0]]]],a0f=[0,a(d),n1,11,n1,44,[0,a(N),[0,a(A),[0,a(e),0]]]],a0c=[0,a(E),Fd,14,Fd,27,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ_=[0,a(E),BG,14,BG,36,[0,a(CK),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ$=[0,a(d),md,11,md,33,[0,a(N),[0,a(A),[0,a(e),0]]]],aZ9=[0,a(d),md,11,md,33,[0,a(N),[0,a(A),[0,a(e),0]]]],aZ6=[0,a(E),y1,14,y1,41,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ0=[0,a(E),hw,14,hw,70,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZW=[0,a(E),h8,14,h8,69,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZS=[0,a(E),hW,14,hW,75,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZO=[0,a(E),D5,14,D5,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZM=a(p),aZN=a(p),aZP=[0,a(d),oB,10,oB,32,[0,a(N),[0,a(A),[0,a(e),0]]]],aZL=[0,a(d),oB,10,oB,32,[0,a(N),[0,a(A),[0,a(e),0]]]],aZH=[0,a(Q),yj,6,yj,79,[0,a(fF),[0,a(fZ),[0,a(L),0]]]],aZF=a("8708"),aZG=a("13559"),aZI=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZD=[0,a(Q),4153,6,4154,38,[0,a(fF),[0,a(fZ),[0,a(L),0]]]],aZB=a("21362"),aZC=a("33196"),aZE=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZy=[0,a(Q),rS,6,4172,24,[0,a(fF),[0,a(fZ),[0,a(L),0]]]],aZw=a(z$),aZx=a(Av),aZz=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZv=[0,a(Q),4135,6,4136,46,[0,a(fF),[0,a(fZ),[0,a(L),0]]]],aZt=a(z$),aZu=a(Av),aZA=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZr=[0,a(aO),su,6,su,79,[0,a(fF),[0,a(bB),[0,a(aM),0]]]],aZp=a("8414"),aZq=a("13100"),aZs=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZn=[0,a(aO),j6,6,747,38,[0,a(fF),[0,a(bB),[0,a(aM),0]]]],aZl=a("20640"),aZm=a("32073"),aZo=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZi=[0,a(aO),765,6,766,24,[0,a(fF),[0,a(bB),[0,a(aM),0]]]],aZg=a(D4),aZh=a(zP),aZj=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZf=[0,a(aO),727,6,728,46,[0,a(fF),[0,a(bB),[0,a(aM),0]]]],aZd=a(D4),aZe=a(zP),aZk=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aY_=[0,a(Q),CQ,14,CQ,41,[0,a(B2),[0,a(fZ),[0,a(L),0]]]],aY6=a(p),aY7=a(fo),aY8=a(gD),aY9=a(fo),aY$=[0,a(d),fC,12,fC,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aY4=[0,a(aO),Bq,14,Bq,41,[0,a(B2),[0,a(bB),[0,a(aM),0]]]],aY0=a(p),aY1=a(ff),aY2=a(gS),aY3=a(ff),aY5=[0,a(d),fC,12,fC,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aYU=[0,a(E),nN,14,nN,61,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYV=[0,a(E),nN,14,nN,61,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYW=[0,a(ao),[0,a(Eh),0]],aYR=[0,a(d),h7,14,h7,49,[0,a(N),[0,a(A),[0,a(e),0]]]],aYN=[0,a(d),i_,14,i_,53,[0,a(N),[0,a(A),[0,a(e),0]]]],aYJ=[0,a(d),iw,14,iw,44,[0,a(N),[0,a(A),[0,a(e),0]]]],aYF=[0,a(d),iA,14,iA,70,[0,a(N),[0,a(A),[0,a(e),0]]]],aYB=[0,a(d),hO,14,hO,65,[0,a(N),[0,a(A),[0,a(e),0]]]],aYx=[0,a(d),hl,14,hl,67,[0,a(N),[0,a(A),[0,a(e),0]]]],aYt=[0,a(d),iL,14,iL,61,[0,a(N),[0,a(A),[0,a(e),0]]]],aYp=[0,a(d),iP,14,iP,59,[0,a(N),[0,a(A),[0,a(e),0]]]],aYj=[0,a(d),f7,14,f7,50,[0,a(N),[0,a(A),[0,a(e),0]]]],aYd=[0,a(E),hu,14,hu,64,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aX$=[0,a(E),jq,14,jq,59,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aX7=[0,a(E),it,14,it,55,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aX3=[0,a(Q),yB,14,yB,51,[0,a("Article 44"),[0,a(fZ),[0,a(L),0]]]],aX2=a(qI),aXY=[0,a(Q),oM,14,oM,41,[0,a("Article 41"),[0,a(fZ),[0,a(L),0]]]],aXX=a(kk),aXT=[0,a(Q),Dm,14,Dm,42,[0,a("Article 42"),[0,a(fZ),[0,a(L),0]]]],aXS=a(ig),aXU=[0,a(d),i6,11,i6,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aXR=[0,a(d),i6,11,i6,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aXV=[0,a(ao),[0,a("montant_minimal_aide_d842_15"),0]],aXZ=[0,a(d),lY,11,lY,38,[0,a(N),[0,a(A),[0,a(e),0]]]],aXW=[0,a(d),lY,11,lY,38,[0,a(N),[0,a(A),[0,a(e),0]]]],aX0=[0,a(ao),[0,a("montant_forfaitaire_d842_15"),0]],aX4=[0,a(d),np,11,np,48,[0,a(N),[0,a(A),[0,a(e),0]]]],aX1=[0,a(d),np,11,np,48,[0,a(N),[0,a(A),[0,a(e),0]]]],aX5=[0,a(ao),[0,a("montant_minimal_d\xc3\xa9pense_nette_d842_17"),0]],aX8=[0,a(E),it,14,it,55,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aX9=[0,a(ao),[0,a(BA),0]],aX6=[0,a(E),it,14,it,55,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYa=[0,a(E),jq,14,jq,59,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYb=[0,a(ao),[0,a(nh),0]],aX_=[0,a(E),jq,14,jq,59,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYe=[0,a(E),hu,14,hu,64,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYf=[0,a(ao),[0,a(n2),0]],aYc=[0,a(E),hu,14,hu,64,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYg=[0,a(ao),[0,a(gb),[0,a(kw),0]]],aYh=[0,a(ao),[0,a(gb),[0,a(kw),0]]],aYk=[0,a(d),f7,14,f7,50,[0,a(N),[0,a(A),[0,a(e),0]]]],aYl=[0,a(ao),[0,a(ky),0]],aYi=[0,a(d),f7,14,f7,50,[0,a(N),[0,a(A),[0,a(e),0]]]],aYm=[0,a(ao),[0,a(eJ),[0,a(bk),0]]],aYn=[0,a(ao),[0,a(eJ),[0,a(bk),0]]],aYq=[0,a(d),iP,14,iP,59,[0,a(N),[0,a(A),[0,a(e),0]]]],aYr=[0,a(ao),[0,a(xW),0]],aYo=[0,a(d),iP,14,iP,59,[0,a(N),[0,a(A),[0,a(e),0]]]],aYu=[0,a(d),iL,14,iL,61,[0,a(N),[0,a(A),[0,a(e),0]]]],aYv=[0,a(ao),[0,a(zv),0]],aYs=[0,a(d),iL,14,iL,61,[0,a(N),[0,a(A),[0,a(e),0]]]],aYy=[0,a(d),hl,14,hl,67,[0,a(N),[0,a(A),[0,a(e),0]]]],aYz=[0,a(ao),[0,a(vH),0]],aYw=[0,a(d),hl,14,hl,67,[0,a(N),[0,a(A),[0,a(e),0]]]],aYC=[0,a(d),hO,14,hO,65,[0,a(N),[0,a(A),[0,a(e),0]]]],aYD=[0,a(ao),[0,a(Fy),0]],aYA=[0,a(d),hO,14,hO,65,[0,a(N),[0,a(A),[0,a(e),0]]]],aYG=[0,a(d),iA,14,iA,70,[0,a(N),[0,a(A),[0,a(e),0]]]],aYH=[0,a(ao),[0,a(Cm),0]],aYE=[0,a(d),iA,14,iA,70,[0,a(N),[0,a(A),[0,a(e),0]]]],aYK=[0,a(d),iw,14,iw,44,[0,a(N),[0,a(A),[0,a(e),0]]]],aYL=[0,a(ao),[0,a(CB),0]],aYI=[0,a(d),iw,14,iw,44,[0,a(N),[0,a(A),[0,a(e),0]]]],aYO=[0,a(d),i_,14,i_,53,[0,a(N),[0,a(A),[0,a(e),0]]]],aYP=[0,a(ao),[0,a(Fb),0]],aYM=[0,a(d),i_,14,i_,53,[0,a(N),[0,a(A),[0,a(e),0]]]],aYS=[0,a(d),h7,14,h7,49,[0,a(N),[0,a(A),[0,a(e),0]]]],aYT=[0,a(ao),[0,a(wp),0]],aYQ=[0,a(d),h7,14,h7,49,[0,a(N),[0,a(A),[0,a(e),0]]]],aYX=[0,a(ao),[0,a(nL),[0,a(au),0]]],aYY=[0,a(ao),[0,a(nL),[0,a(au),0]]],aZa=[0,a(d),fC,12,fC,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aYZ=[0,a(d),fC,12,fC,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aZb=[0,a(ao),[0,a(qB),0]],aZJ=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZc=[0,a(d),cg,12,cg,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZK=[0,a(ao),[0,a(ve),0]],aZQ=[0,a(ao),[0,a(bI),0]],aZT=[0,a(E),hW,14,hW,75,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZU=[0,a(ao),[0,a(mK),0]],aZR=[0,a(E),hW,14,hW,75,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZX=[0,a(E),h8,14,h8,69,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZY=[0,a(ao),[0,a(on),0]],aZV=[0,a(E),h8,14,h8,69,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ1=[0,a(E),hw,14,hw,70,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ2=[0,a(ao),[0,a(mz),0]],aZZ=[0,a(E),hw,14,hw,70,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ3=[0,a(ao),[0,a(fI),[0,a(dP),0]]],aZ4=[0,a(ao),[0,a(fI),[0,a(dP),0]]],aZ7=[0,a(d),m9,12,m9,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aZ5=[0,a(d),m9,12,m9,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aZ8=[0,a(ao),[0,a(q7),0]],a0a=[0,a(ao),[0,a(de),0]],a0d=[0,a(d),nt,12,nt,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a0b=[0,a(d),nt,12,nt,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a0e=[0,a(ao),[0,a(FQ),0]],a0r=[0,a(ao),[0,a(eK),0]],a0u=[0,a(d),nG,12,nG,31,[0,a(N),[0,a(A),[0,a(e),0]]]],a0s=[0,a(d),nG,12,nG,31,[0,a(N),[0,a(A),[0,a(e),0]]]],a0v=[0,a(ao),[0,a(cX),0]],a0J=[0,a(ao),[0,a(er),0]],a0R=[0,a(ao),[0,a(kE),0]],a06=[0,a(ao),[0,a(bJ),0]],a1d=[0,a(ao),[0,a(fl),0]],aXN=[0,a(E),wh,24,wh,43,[0,a(Ft),[0,a(ss),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aXM=a(p),aXO=[0,a(d),ic,12,ic,31,[0,a(K),[0,a(A),[0,a(e),0]]]],aXL=[0,a(d),rd,14,rd,33,[0,a(K),[0,a(A),[0,a(e),0]]]],aXG=[0,a(E),vX,24,vX,46,[0,a(Ft),[0,a(ss),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aXH=[0,a(d),i$,12,i$,34,[0,a(K),[0,a(A),[0,a(e),0]]]],aXF=[0,a(d),Bi,14,Bi,36,[0,a(K),[0,a(A),[0,a(e),0]]]],aXB=[0,a(aD),[0,a(fl),[0,a(ac),0]]],aXC=[0,a(aD),[0,a(fl),0]],aXD=[0,a(aD),[0,a(fl),[0,a(ae),0]]],aXE=[0,a(aD),[0,a(fl),0]],aXI=[0,a(d),i$,12,i$,34,[0,a(K),[0,a(A),[0,a(e),0]]]],aXA=[0,a(d),i$,12,i$,34,[0,a(K),[0,a(A),[0,a(e),0]]]],aXv=[0,a(d),gC,14,gC,55,[0,a(K),[0,a(A),[0,a(e),0]]]],aXr=[0,a(d),eU,14,eU,59,[0,a(K),[0,a(A),[0,a(e),0]]]],aXn=[0,a(d),gM,14,gM,43,[0,a(K),[0,a(A),[0,a(e),0]]]],aXj=[0,a(d),hE,14,hE,42,[0,a(K),[0,a(A),[0,a(e),0]]]],aXf=[0,a(d),rT,5,rk,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aXb=[0,a(d),gH,14,gH,53,[0,a(K),[0,a(A),[0,a(e),0]]]],aW9=[0,a(d),jr,14,jr,37,[0,a(K),[0,a(A),[0,a(e),0]]]],aW5=[0,a(d),jd,14,jd,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aW1=[0,a(d),hz,14,hz,58,[0,a(K),[0,a(A),[0,a(e),0]]]],aWX=[0,a(d),ik,14,ik,46,[0,a(K),[0,a(A),[0,a(e),0]]]],aWT=[0,a(d),i7,14,i7,78,[0,a(K),[0,a(A),[0,a(e),0]]]],aWP=[0,a(d),hI,14,hI,60,[0,a(K),[0,a(A),[0,a(e),0]]]],aWL=[0,a(d),jh,14,jh,48,[0,a(K),[0,a(A),[0,a(e),0]]]],aWM=[0,a(d),jh,14,jh,48,[0,a(K),[0,a(A),[0,a(e),0]]]],aWN=[0,a(bh),[0,a("calcul_apl_locatif.loyer_principal_base"),0]],aWK=[0,a(d),jh,14,jh,48,[0,a(K),[0,a(A),[0,a(e),0]]]],aWQ=[0,a(d),hI,14,hI,60,[0,a(K),[0,a(A),[0,a(e),0]]]],aWR=[0,a(bh),[0,a("calcul_apl_locatif.ressources_m\xc3\xa9nage_arrondies"),0]],aWO=[0,a(d),hI,14,hI,60,[0,a(K),[0,a(A),[0,a(e),0]]]],aWU=[0,a(d),i7,14,i7,78,[0,a(K),[0,a(A),[0,a(e),0]]]],aWV=[0,a(bh),[0,a("calcul_apl_locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),0]],aWS=[0,a(d),i7,14,i7,78,[0,a(K),[0,a(A),[0,a(e),0]]]],aWY=[0,a(d),ik,14,ik,46,[0,a(K),[0,a(A),[0,a(e),0]]]],aWZ=[0,a(bh),[0,a("calcul_apl_locatif.date_courante"),0]],aWW=[0,a(d),ik,14,ik,46,[0,a(K),[0,a(A),[0,a(e),0]]]],aW2=[0,a(d),hz,14,hz,58,[0,a(K),[0,a(A),[0,a(e),0]]]],aW3=[0,a(bh),[0,a("calcul_apl_locatif.nombre_personnes_\xc3\xa0_charge"),0]],aW0=[0,a(d),hz,14,hz,58,[0,a(K),[0,a(A),[0,a(e),0]]]],aW6=[0,a(d),jd,14,jd,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aW7=[0,a(bh),[0,a("calcul_apl_locatif.situation_familiale_calcul_apl"),0]],aW4=[0,a(d),jd,14,jd,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aW_=[0,a(d),jr,14,jr,37,[0,a(K),[0,a(A),[0,a(e),0]]]],aW$=[0,a(bh),[0,a("calcul_apl_locatif.zone"),0]],aW8=[0,a(d),jr,14,jr,37,[0,a(K),[0,a(A),[0,a(e),0]]]],aXc=[0,a(d),gH,14,gH,53,[0,a(K),[0,a(A),[0,a(e),0]]]],aXd=[0,a(bh),[0,a("calcul_apl_locatif.logement_est_chambre"),0]],aXa=[0,a(d),gH,14,gH,53,[0,a(K),[0,a(A),[0,a(e),0]]]],aXg=[0,a(d),rT,5,rk,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aXh=[0,a(bh),[0,a("calcul_apl_locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),0]],aXe=[0,a(d),rT,5,rk,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aXk=[0,a(d),hE,14,hE,42,[0,a(K),[0,a(A),[0,a(e),0]]]],aXl=[0,a(bh),[0,a("calcul_apl_locatif.type_aide"),0]],aXi=[0,a(d),hE,14,hE,42,[0,a(K),[0,a(A),[0,a(e),0]]]],aXo=[0,a(d),gM,14,gM,43,[0,a(K),[0,a(A),[0,a(e),0]]]],aXp=[0,a(bh),[0,a("calcul_apl_locatif.colocation"),0]],aXm=[0,a(d),gM,14,gM,43,[0,a(K),[0,a(A),[0,a(e),0]]]],aXs=[0,a(d),eU,14,eU,59,[0,a(K),[0,a(A),[0,a(e),0]]]],aXt=[0,a(bh),[0,a("calcul_apl_locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),0]],aXq=[0,a(d),eU,14,eU,59,[0,a(K),[0,a(A),[0,a(e),0]]]],aXw=[0,a(d),gC,14,gC,55,[0,a(K),[0,a(A),[0,a(e),0]]]],aXx=[0,a(bh),[0,a("calcul_apl_locatif.logement_meubl\xc3\xa9_d842_2"),0]],aXu=[0,a(d),gC,14,gC,55,[0,a(K),[0,a(A),[0,a(e),0]]]],aXy=[0,a(bh),[0,a(E_),[0,a(aD),0]]],aXz=[0,a(bh),[0,a(E_),[0,a(aD),0]]],aXJ=[0,a(bh),[0,a(aw),0]],aXP=[0,a(d),ic,12,ic,31,[0,a(K),[0,a(A),[0,a(e),0]]]],aXK=[0,a(d),ic,12,ic,31,[0,a(K),[0,a(A),[0,a(e),0]]]],aXQ=[0,a(bh),[0,a(cX),0]],aWE=[0,a(mr),67,5,71,21,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],aWF=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWD=[0,a(mr),56,5,57,50,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],aWG=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWH=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWC=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWI=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWB=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWx=[0,a(mr),77,5,81,24,[0,a(gE),[0,a(gA),[0,a(ed),[0,a(az),[0,a(ab),[0,a(af),0]]]]]]],aWy=[0,a(bG),41,12,41,31,[0,a(bK),0]],aWw=[0,a(bG),41,12,41,31,[0,a(bK),0]],aWz=[0,a(bG),41,12,41,31,[0,a(bK),0]],aWv=[0,a(bG),41,12,41,31,[0,a(bK),0]],aWr=[0,a(q9),62,18,62,41,[0,a(xH),[0,a(eX),[0,a(gN),[0,a(d0),[0,a(c7),[0,a(af),0]]]]]]],aWp=a(oS),aWq=a(n0),aWs=[0,a(bG),42,11,42,27,[0,a(bK),0]],aWo=[0,a(q9),31,14,31,30,[0,a(lU),[0,a(nR),[0,a(ed),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],aWm=a(oS),aWn=a(n0),aWb=[5,0],aWc=[4,0],aWd=[3,0],aWe=[2,0],aWf=[1,0],aWg=[0,0],aWh=[0,a(mr),dm,5,w5,30,[0,a(CJ),[0,a(yw),[0,a(ke),[0,a(d0),[0,a(ab),[0,a(af),0]]]]]]],aWi=[0,a(bG),44,12,44,35,[0,a(bK),0]],aWa=[0,a(bG),44,12,44,35,[0,a(bK),0]],aV6=[0,a(bG),51,14,51,28,[0,a(bK),0]],aV2=[0,a(bG),52,14,52,32,[0,a(bK),0]],aVY=[0,a(q9),21,14,21,26,[0,a(lU),[0,a(nR),[0,a(ed),[0,a(az),[0,a(c7),[0,a(af),0]]]]]]],aVZ=[0,a(bG),43,12,43,24,[0,a(bK),0]],aVX=[0,a(bG),43,12,43,24,[0,a(bK),0]],aV0=[0,a(cq),[0,a(y7),0]],aV3=[0,a(bG),52,14,52,32,[0,a(bK),0]],aV4=[0,a(cq),[0,a(Fa),0]],aV1=[0,a(bG),52,14,52,32,[0,a(bK),0]],aV7=[0,a(bG),51,14,51,28,[0,a(bK),0]],aV8=[0,a(cq),[0,a(DE),0]],aV5=[0,a(bG),51,14,51,28,[0,a(bK),0]],aV9=[0,a(cq),[0,a(ge),[0,a(ho),0]]],aV_=[0,a(cq),[0,a(ge),[0,a(ho),0]]],aWj=[0,a(bG),44,12,44,35,[0,a(bK),0]],aV$=[0,a(bG),44,12,44,35,[0,a(bK),0]],aWk=[0,a(cq),[0,a(vk),0]],aWt=[0,a(bG),42,11,42,27,[0,a(bK),0]],aWl=[0,a(bG),42,11,42,27,[0,a(bK),0]],aWu=[0,a(cq),[0,a(Ae),0]],aWA=[0,a(cq),[0,a(iU),0]],aWJ=[0,a(cq),[0,a(dh),0]],aVS=[0,a(E),r2,14,r2,32,[0,a(mE),[0,a(iC),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVQ=a(cI),aVR=a(p),aVL=[0,a(E),aR,6,gV,35,[0,a("Article R822-20"),[0,a("Sous-section 3 : Montant forfaitaire de ressources applicable aux \xc3\xa9tudiants"),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVM=[0,a(d),jk,12,jk,39,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVK=[0,a(E),kC,14,kC,41,[0,a(l1),[0,a(l4),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVG=[0,a(E),F8,14,F8,32,[0,a("Article R822-8"),[0,a(iC),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVF=a(p),aVz=[0,a(E),ir,14,ir,65,[0,a(mE),[0,a(iC),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVv=[0,a(E),y0,14,y0,33,[0,a("Article R822-10"),[0,a(iC),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVm=a(p),aVn=a(p),aVs=a(X),aVt=a("90100"),aVu=a("135000"),aVo=a(p),aVp=a(p),aVq=a(p),aVr=a(p),aVi=[0,a(E),iv,14,iv,62,[0,a(l1),[0,a(l4),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVh=a(p),aVd=[0,a(d),f5,51,f5,57,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU$=[0,a(Q),11,14,11,41,[0,a("Article 3"),[0,a(xI),[0,a(L),0]]]],aU_=a("9500"),aU6=[0,a(Q),21,14,21,41,[0,a("Article 4"),[0,a(xI),[0,a(L),0]]]],aU5=a("258900"),aU1=[0,a(d),E2,46,E2,52,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU2=[0,a(d),jf,10,jf,15,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU0=[0,a(d),jf,10,jf,15,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU3=[0,a(dX),[0,a(CW),0]],aU7=[0,a(d),lV,11,lV,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU4=[0,a(d),lV,11,lV,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU8=[0,a(dX),[0,a("montant_forfaitaire_r_822_8"),0]],aVa=[0,a(d),mt,11,mt,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aU9=[0,a(d),mt,11,mt,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVb=[0,a(dX),[0,a("montant_forfaitaire_r_822_7"),0]],aVe=[0,a(d),f5,11,f5,42,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVc=[0,a(d),f5,11,f5,42,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVf=[0,a(dX),[0,a("ressources_forfaitaires_r822_20"),0]],aVj=[0,a(d),hk,11,hk,59,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVg=[0,a(d),hk,11,hk,59,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVk=[0,a(dX),[0,a("ressources_personnes_vivant_habituellement_foyer"),0]],aVw=[0,a(d),nV,11,nV,30,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVl=[0,a(d),nV,11,nV,30,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVx=[0,a(dX),[0,a("abattement_r_822_10"),0]],aVA=[0,a(E),ir,14,ir,65,[0,a(mE),[0,a(iC),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVB=[0,a(dX),[0,a(DV),0]],aVy=[0,a(E),ir,14,ir,65,[0,a(mE),[0,a(iC),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVC=[0,a(dX),[0,a(mS),[0,a(f_),0]]],aVD=[0,a(dX),[0,a(mS),[0,a(f_),0]]],aVH=[0,a(d),nA,11,nA,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVE=[0,a(d),nA,11,nA,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVI=[0,a(dX),[0,a("abattement_r_822_8"),0]],aVN=[0,a(d),jk,12,jk,39,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVJ=[0,a(d),jk,12,jk,39,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVO=[0,a(dX),[0,a("ressources_prises_en_compte"),0]],aVT=[0,a(d),mu,11,mu,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVP=[0,a(d),mu,11,mu,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVU=[0,a(dX),[0,a("abattement_r_822_7"),0]],aVV=[0,a(E),my,13,Dl,74,[0,a(l1),[0,a(l4),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVW=[0,a(E),my,13,Dl,74,[0,a(l1),[0,a(l4),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aUQ=[0,a(d),j5,14,j5,56,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUM=[0,a(d),B1,14,B1,63,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUK=a(b5),aUL=a(b5),aUG=[0,a(E),fb,14,fb,49,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUC=[0,a(aU),[0,a(kM),[0,a(ac),0]]],aUD=[0,a(aU),[0,a(kM),0]],aUE=[0,a(aU),[0,a(kM),[0,a(ae),0]]],aUF=[0,a(aU),[0,a(kM),0]],aUw=a(Dk),aUv=[0,a(E),1213,4,1219,48,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUx=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUq=[0,a(aU),[0,a(fj),[0,a(ac),0]]],aUr=[0,a(aU),[0,a(fj),0]],aUs=[0,a(aU),[0,a(fj),[0,a(ae),0]]],aUt=[0,a(aU),[0,a(fj),0]],aUu=[0,a(E),x5,5,x5,44,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUy=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUo=[0,a(E),1149,5,rW,44,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUp=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUn=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUz=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUm=[0,a(d),dY,11,dY,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUh=a(Dk),aUi=[0,0],aUg=[0,a(E),1173,5,1189,10,[0,a(kl),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUj=[0,a(d),fp,12,fp,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUf=[0,a(d),fp,12,fp,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUk=[0,a(d),fp,12,fp,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUe=[0,a(d),fp,12,fp,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUa=[0,a(d),An,5,u9,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUb=[0,a(d),fE,12,fE,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT$=[0,a(d),fE,12,fE,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT7=[0,a(c8),Gd,14,Gd,31,[0,a("Article L351-8"),[0,a("Section 5 : Taux et montant de la pension"),[0,a("Chapitre 1er : Ouverture du droit, liquidation et calcul des pensions de retraite"),[0,a("Titre V : Assurance vieillesse - Assurance veuvage"),[0,a("Livre III : Dispositions relatives aux assurances sociales et \xc3\xa0 diverses cat\xc3\xa9gories de personnes rattach\xc3\xa9es au r\xc3\xa9gime g\xc3\xa9n\xc3\xa9rale"),[0,a(ab),[0,a(af),0]]]]]]]],aT1=[0,a(aG),72,5,73,52,[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]],aT2=[0,a(d),dz,11,dz,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT0=[0,a(aG),65,5,68,52,[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]],aT3=[0,a(d),dz,11,dz,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTZ=[0,a(d),dz,11,dz,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTS=[0,a(aG),hU,18,hU,75,[0,a(mB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTR=a(p),aTT=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTO=[5,0],aTP=[4,0],aTQ=[0,a(aG),vK,18,At,45,[0,a(mB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTN=a(p),aTU=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTM=[0,a(E),Cp,5,Cp,58,[0,a(EY),[0,a(Ei),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aTV=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTL=[0,a(aG),hm,33,hm,58,[0,a(mB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTK=a(p),aTG=[0,a(c8),cs,14,cs,32,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(ab),[0,a(af),0]]]]]]]]]],aTB=[0,a(aG),FS,18,FS,44,[0,a("Article L822-10"),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTC=[0,a(d),fq,11,fq,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTA=[0,a(d),fq,11,fq,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTt=a(b5),aTs=a(b5),aTr=[0,a(aG),171,5,rC,65,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTu=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTq=[0,a(aG),156,5,158,30,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTv=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTp=[0,a(aG),cs,5,w5,33,[0,a(F5),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTw=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTo=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTi=[0,a(aG),203,5,208,39,[0,a(DR),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTj=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTh=[0,a(aG),197,5,198,34,[0,a(DR),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTk=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTg=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTb=[0,a(c8),329,5,An,34,[0,a(rV),[0,a(rB),[0,a(r3),[0,a(qK),[0,a(ro),[0,a(a9),[0,a(af),0]]]]]]]],aTa=a("999840"),aTc=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS_=[0,a(c8),j5,5,335,34,[0,a(rV),[0,a(rB),[0,a(r3),[0,a(qK),[0,a(ro),[0,a(a9),[0,a(af),0]]]]]]]],aS9=a("1041840"),aS$=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS7=[0,a(c8),339,5,340,34,[0,a(rV),[0,a(rB),[0,a(r3),[0,a(qK),[0,a(ro),[0,a(a9),[0,a(af),0]]]]]]]],aS6=a("1083840"),aS8=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS4=[0,a(fc),58,5,59,33,[0,a('Circulaire de la CNAV 2023-3 du 09/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2023"'),[0,a(sb),0]]],aS3=a("1153302"),aS5=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS1=[0,a(fc),90,5,91,33,[0,a('Circulaire de la CNAV 2022-3 du 11/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2022"'),[0,a(sb),0]]],aS0=a("1100144"),aS2=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSY=[0,a(fc),fe,5,kC,33,[0,a('Circulaire de la CNAV 2021-1 du 11/01/2021 "Revalorisation \xc3\xa0 compter du 1er janvier 2021"'),[0,a(sb),0]]],aSX=a("1088175"),aSZ=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSS=[0,a(aG),c4,5,ie,67,[0,a(F5),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aST=[0,a(d),f1,11,f1,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSR=[0,a(d),f1,11,f1,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSN=[0,a(aG),mg,14,mg,40,[0,a(mB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aSH=[0,a(c8),fe,14,fe,61,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(ab),[0,a(af),0]]]]]]]]]],aSB=[0,a(aG),46,5,46,41,[0,a("Article L821-2"),[0,a(z0),[0,a(E1),[0,a(yn),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]]]],aSC=[0,a(d),di,12,di,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSA=[0,a(d),di,12,di,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSD=[0,a(d),di,12,di,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSe=a(z),aSq=a(X),aSr=a(X),aSs=a(X),aSt=a(z),aSu=a(X),aSf=a(qD),aSg=a(qD),aSl=a(lZ),aSm=a(lZ),aSn=a(lZ),aSo=a(qD),aSp=a(lZ),aSh=a("8"),aSi=a(CI),aSj=a(CI),aSk=[0,a(E),1035,5,dC,65,[0,a("Article R822-25"),[0,a("Section 3 : Conditions relatives au logement"),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aSv=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSd=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSw=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR_=[0,a(aG),E5,18,E5,67,[0,a("Article L822-8"),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aR$=[0,a(d),fH,11,fH,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR9=[0,a(d),fH,11,fH,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR4=[0,a(aG),Cc,18,Cc,61,[0,a("Article L822-9"),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aR5=[0,a(d),fY,11,fY,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR3=[0,a(d),fY,11,fY,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRZ=[0,a(aG),eY,14,eY,43,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aRV=[0,a(E),i6,14,i6,37,[0,a(EY),[0,a(Ei),[0,a(dB),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aRU=a("3000000"),aRQ=[0,a(E),a_,14,a_,41,[0,a(FB),[0,a(Bv),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRP=a(DO),aRL=[0,a(E),be,14,be,42,[0,a(FB),[0,a(Bv),[0,a(bd),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRK=a(DO),aRG=[0,a(d),hV,11,hV,48,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRC=[0,a(d),hG,11,hG,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRD=[0,a(d),hG,11,hG,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRB=[0,a(d),hG,11,hG,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRE=[0,a(aU),[0,a("condition_pr\xc3\xaat"),0]],aRH=[0,a(d),hV,11,hV,48,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRF=[0,a(d),hV,11,hV,48,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRI=[0,a(aU),[0,a("condition_peuplement_logement_l822_10"),0]],aRM=[0,a(d),ox,11,ox,39,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRJ=[0,a(d),ox,11,ox,39,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRN=[0,a(aU),[0,a("seuil_l822_3_parts_propri\xc3\xa9t\xc3\xa9"),0]],aRR=[0,a(d),nI,11,nI,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRO=[0,a(d),nI,11,nI,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRS=[0,a(aU),[0,a("seuil_l822_3_parts_usufruit"),0]],aRW=[0,a(d),o0,11,o0,34,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRT=[0,a(d),o0,11,o0,34,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRX=[0,a(aU),[0,a("seuil_l822_5_patrimoine"),0]],aR0=[0,a(d),l2,11,l2,40,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRY=[0,a(d),l2,11,l2,40,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR1=[0,a(aU),[0,a("usufruit_ou_propri\xc3\xa9t\xc3\xa9_famille"),0]],aR6=[0,a(d),fY,11,fY,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR2=[0,a(d),fY,11,fY,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR7=[0,a(aU),[0,a("condition_non_ouverture_l822_9_decence_logement"),0]],aSa=[0,a(d),fH,11,fH,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR8=[0,a(d),fH,11,fH,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSb=[0,a(aU),[0,a("condition_non_ouverture_l822_8"),0]],aSx=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSc=[0,a(d),eh,12,eh,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSy=[0,a(aU),[0,a("condition_logement_surface"),0]],aSE=[0,a(d),di,12,di,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSz=[0,a(d),di,12,di,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSF=[0,a(aU),[0,a("condition_logement_r\xc3\xa9sidence_principale"),0]],aSI=[0,a(c8),fe,14,fe,61,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(ab),[0,a(af),0]]]]]]]]]],aSJ=[0,a(aU),[0,a("ouverture_droits_retraite.date_naissance_assur\xc3\xa9"),0]],aSG=[0,a(c8),fe,14,fe,61,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(ab),[0,a(af),0]]]]]]]]]],aSK=[0,a(aU),[0,a(CF),[0,a(rK),0]]],aSL=[0,a(aU),[0,a(CF),[0,a(rK),0]]],aSO=[0,a(d),mh,11,mh,37,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSM=[0,a(d),mh,11,mh,37,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSP=[0,a(aU),[0,a("patrimoine_total_demandeur"),0]],aSU=[0,a(d),f1,11,f1,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSQ=[0,a(d),f1,11,f1,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSV=[0,a(aU),[0,a("condition_nationalit\xc3\xa9"),0]],aTd=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSW=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTe=[0,a(aU),[0,a("plafond_individuel_l815_9_s\xc3\xa9cu"),0]],aTl=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTf=[0,a(d),d_,11,d_,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTm=[0,a(aU),[0,a("condition_logement_location_tiers"),0]],aTx=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTn=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTy=[0,a(aU),[0,a("condition_logement_mode_occupation"),0]],aTD=[0,a(d),fq,11,fq,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTz=[0,a(d),fq,11,fq,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTE=[0,a(aU),[0,a("condition_ouverture_l822_10_peuplement_logement"),0]],aTH=[0,a(d),mn,11,mn,29,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTF=[0,a(d),mn,11,mn,29,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTI=[0,a(aU),[0,a("\xc3\xa2ge_l161_17_2_s\xc3\xa9cu"),0]],aTW=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTJ=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTX=[0,a(aU),[0,a("patrimoine_pris_en_compte"),0]],aT4=[0,a(d),dz,11,dz,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTY=[0,a(d),dz,11,dz,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT5=[0,a(aU),[0,a(A$),0]],aT8=[0,a(d),ib,11,ib,28,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT6=[0,a(d),ib,11,ib,28,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT9=[0,a(aU),[0,a("\xc3\xa2ge_l351_8_1_s\xc3\xa9cu"),0]],aUc=[0,a(d),fE,12,fE,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT_=[0,a(d),fE,12,fE,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUd=[0,a(aU),[0,a(n_),0]],aUl=[0,a(aU),[0,a(fj),0]],aUA=[0,a(aU),[0,a(kM),0]],aUH=[0,a(d),kV,11,kV,46,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUB=[0,a(d),kV,11,kV,46,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUI=[0,a(aU),[0,a("personnes_\xc3\xa0_charge_prises_en_compte"),0]],aUN=[0,a(d),oC,12,oC,61,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUJ=[0,a(d),oC,12,oC,61,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUO=[0,a(aU),[0,a(kD),0]],aUR=[0,a(d),n4,12,n4,54,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUP=[0,a(d),n4,12,n4,54,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUS=[0,a(aU),[0,a(r7),0]],aUU=a(qz),aUT=[0,a(aG),mq,13,mq,47,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aUY=[0,a(aG),mq,13,mq,47,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aUW=a(qz),aUV=[0,a(aG),jt,13,jt,48,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aUX=[0,a(aG),jt,13,jt,48,[0,a(gy),[0,a(bd),[0,a(ad),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aRy=[0,a(E),Dr,14,Dr,36,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRt=[0,a(aj),[0,a(bJ),[0,a(ac),0]]],aRu=[0,a(aj),[0,a(bJ),0]],aRv=[0,a(aj),[0,a(bJ),[0,a(ae),0]]],aRw=[0,a(aj),[0,a(bJ),0]],aRx=a(p),aRz=[0,a(d),hr,10,hr,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRs=[0,a(d),hr,10,hr,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRp=[0,a(E),yN,14,yN,33,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRn=a(p),aRo=a(p),aRj=[0,a(E),wW,14,wW,36,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQ_=[0,a(aj),[0,a(eN),[0,a(ac),0]]],aQ$=[0,a(aj),[0,a(eN),0]],aRa=[0,a(aj),[0,a(eN),[0,a(ae),0]]],aRb=[0,a(aj),[0,a(eN),0]],aRc=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],aRd=[0,a(bk),[0,a(bQ),0]],aRe=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],aRf=[0,a(bk),[0,a(bQ),0]],aRg=a(kW),aRh=a(p),aRi=a(p),aRk=[0,a(d),mZ,10,mZ,40,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ9=[0,a(d),mZ,10,mZ,40,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ6=[0,a(E),Fo,14,Fo,49,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQ4=a(hf),aQ5=a(hf),aQ0=[0,a(E),u3,14,u3,33,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQW=[0,a(E),yJ,14,yJ,36,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQM=[0,a(aj),[0,a(bI),[0,a(ac),0]]],aQN=[0,a(aj),[0,a(bI),0]],aQO=[0,a(aj),[0,a(bI),[0,a(ae),0]]],aQP=[0,a(aj),[0,a(bI),0]],aQQ=[0,a(aj),[0,a(kO),[0,a(ac),0]]],aQR=[0,a(aj),[0,a(kO),0]],aQS=[0,a(aj),[0,a(kO),[0,a(ae),0]]],aQT=[0,a(aj),[0,a(kO),0]],aQU=a(p),aQV=a(p),aQX=[0,a(d),n3,10,n3,20,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQL=[0,a(d),n3,10,n3,20,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQI=[0,a(E),yh,14,yh,49,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQF=a(c5),aQG=a(c5),aQH=a(lX),aQA=[0,a(E),3426,5,3438,77,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQy=a(cI),aQz=a(b5),aQB=[0,a(d),fV,12,fV,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQw=[0,a(E),Dt,5,Dt,75,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQx=[0,a(d),fV,12,fV,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQp=[0,a(aO),DF,14,DF,42,[0,a(ja),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aQo=a(df),aQq=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQn=[0,a(aO),hk,14,hk,42,[0,a(ja),[0,a(bB),[0,a(aM),0]]]],aQm=a(df),aQr=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQl=[0,a(Q),xl,14,xl,42,[0,a(ja),[0,a(aQ),[0,a(L),0]]]],aQk=a(df),aQs=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQg=[0,a(E),Ew,14,Ew,55,[0,a(rN),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQb=[0,a(aj),[0,a(kv),[0,a(ac),0]]],aQc=[0,a(aj),[0,a(kv),0]],aQd=[0,a(aj),[0,a(kv),[0,a(ae),0]]],aQe=[0,a(aj),[0,a(kv),0]],aQf=a(p),aQh=[0,a(d),m5,11,m5,52,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQa=[0,a(d),m5,11,m5,52,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aP9=[0,a(E),Ap,14,Ap,49,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP8=a(hf),aP2=[0,a(E),jj,14,jj,70,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPY=[0,a(E),ji,14,ji,69,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPU=[0,a(E),h3,14,h3,75,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPP=[0,a(E),zV,5,zV,44,[0,a(Bh),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPH=[0,a(aj),[0,a(dA),[0,a(ac),0]]],aPI=[0,a(aj),[0,a(dA),0]],aPJ=[0,a(aj),[0,a(dA),[0,a(ae),0]]],aPK=[0,a(aj),[0,a(dA),0]],aPL=[0,a(aj),[0,a(dA),[0,a(ac),0]]],aPM=[0,a(aj),[0,a(dA),0]],aPN=[0,a(aj),[0,a(dA),[0,a(ae),0]]],aPO=[0,a(aj),[0,a(dA),0]],aPQ=[0,a(d),hN,10,hN,14,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPG=[0,a(E),Cr,14,Cr,42,[0,a(Bh),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPC=[0,a(aj),[0,a(dA),[0,a(ac),0]]],aPD=[0,a(aj),[0,a(dA),0]],aPE=[0,a(aj),[0,a(dA),[0,a(ae),0]]],aPF=[0,a(aj),[0,a(dA),0]],aPx=[0,a(E),xz,5,xz,40,[0,a(rN),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPy=[0,a(d),jg,11,jg,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPw=[0,a(E),D3,14,D3,44,[0,a(rN),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPz=[0,a(d),jg,11,jg,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPv=[0,a(d),jg,11,jg,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPs=[0,a(E),zD,14,zD,36,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPm=[0,a(Q),gH,5,821,36,[0,a(aQ),[0,a(L),0]]],aPg=a(p),aPh=a("86900"),aPi=a("97100"),aPj=a(z),aPk=a("10200"),aPl=a("107300"),aPn=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPd=[0,a(Q),gP,5,dw,36,[0,a(aQ),[0,a(L),0]]],aOX=a(p),aOY=a(w_),aOZ=a(vW),aO0=a(z),aO1=a(Ga),aO2=a(yO),aO3=a(p),aO4=a(AG),aO5=a(Es),aO6=a(z),aO7=a(wi),aO8=a(z_),aO9=a(p),aO_=a(zf),aO$=a(ER),aPa=a(z),aPb=a("34600"),aPc=a(mk),aPe=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aOV=[0,a(Q),gB,5,1098,36,[0,a(aQ),[0,a(L),0]]],aOD=a(p),aOE=a(yt),aOF=a(rM),aOG=a(z),aOH=a(Gb),aOI=a(Ci),aOJ=a(p),aOK=a(EG),aOL=a(ra),aOM=a(z),aON=a(os),aOO=a(Al),aOP=a(p),aOQ=a(DS),aOR=a(Fp),aOS=a(z),aOT=a(Ds),aOU=a(x6),aOW=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aOB=[0,a(Q),sw,5,gL,36,[0,a(aQ),[0,a(L),0]]],aOj=a(p),aOk=a("198100"),aOl=a("239000"),aOm=a(z),aOn=a("40900"),aOo=a("279900"),aOp=a(p),aOq=a("176800"),aOr=a("212800"),aOs=a(z),aOt=a("36000"),aOu=a("248800"),aOv=a(p),aOw=a("165000"),aOx=a("197900"),aOy=a(z),aOz=a("32900"),aOA=a("230800"),aOC=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aOh=[0,a(Q),1160,5,1164,36,[0,a(aQ),[0,a(L),0]]],aN1=a(p),aN2=a("159500"),aN3=a(wF),aN4=a(z),aN5=a("33000"),aN6=a(yH),aN7=a(p),aN8=a("142200"),aN9=a("171200"),aN_=a(z),aN$=a("29000"),aOa=a("200200"),aOb=a(p),aOc=a("132800"),aOd=a("159300"),aOe=a(z),aOf=a("26500"),aOg=a(yq),aOi=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aNZ=[0,a(Q),1193,5,Gc,36,[0,a(aQ),[0,a(L),0]]],aNH=a(p),aNI=a("200100"),aNJ=a("141400"),aNK=a(z),aNL=a("41300"),aNM=a("182700"),aNN=a(p),aNO=a("178600"),aNP=a("215000"),aNQ=a(z),aNR=a("36400"),aNS=a("251400"),aNT=a(p),aNU=a("166700"),aNV=a(q0),aNW=a(z),aNX=a("33200"),aNY=a("233100"),aN0=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aNF=[0,a(Q),1226,5,1230,36,[0,a(aQ),[0,a(L),0]]],aNn=a(p),aNo=a("161100"),aNp=a("194400"),aNq=a(z),aNr=a("33300"),aNs=a("227700"),aNt=a(p),aNu=a("143600"),aNv=a("172900"),aNw=a(z),aNx=a("29300"),aNy=a("202200"),aNz=a(p),aNA=a("134100"),aNB=a("160900"),aNC=a(z),aND=a("26800"),aNE=a("187700"),aNG=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aNl=[0,a(Q),1259,5,1263,36,[0,a(aQ),[0,a(L),0]]],aM5=a(p),aM6=a(rM),aM7=a("244300"),aM8=a(z),aM9=a("41800"),aM_=a("286100"),aM$=a(p),aNa=a("180700"),aNb=a("217500"),aNc=a(z),aNd=a("36800"),aNe=a("254300"),aNf=a(p),aNg=a("168700"),aNh=a("202300"),aNi=a(z),aNj=a("33600"),aNk=a("235900"),aNm=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aM3=[0,a(Q),1292,5,1296,36,[0,a(aQ),[0,a(L),0]]],aML=a(p),aMM=a("30871"),aMN=a("37243"),aMO=a(z),aMP=a("6372"),aMQ=a("43615"),aMR=a(p),aMS=a("27548"),aMT=a("33148"),aMU=a(z),aMV=a("5610"),aMW=a("38768"),aMX=a(p),aMY=a("25718"),aMZ=a("30840"),aM0=a(z),aM1=a("5122"),aM2=a("35962"),aM4=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aMJ=[0,a(Q),1325,5,1329,36,[0,a(aQ),[0,a(L),0]]],aMr=a(p),aMs=a(xS),aMt=a("196700"),aMu=a(z),aMv=a("33700"),aMw=a("230400"),aMx=a(p),aMy=a("145300"),aMz=a("175000"),aMA=a(z),aMB=a("29700"),aMC=a(C7),aMD=a(p),aME=a("135700"),aMF=a("162800"),aMG=a(z),aMH=a("27100"),aMI=a("189900"),aMK=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aMp=[0,a(Q),1358,5,1362,36,[0,a(aQ),[0,a(L),0]]],aL9=a(p),aL_=a("24849"),aL$=a("29987"),aMa=a(z),aMb=a("5138"),aMc=a("35125"),aMd=a(p),aMe=a("22151"),aMf=a("26679"),aMg=a(z),aMh=a("4528"),aMi=a("31207"),aMj=a(p),aMk=a("20687"),aMl=a("24818"),aMm=a(z),aMn=a("4131"),aMo=a("28949"),aMq=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aL7=[0,a(Q),1391,5,so,36,[0,a(aQ),[0,a(L),0]]],aLP=a(p),aLQ=a("31241"),aLR=a("37689"),aLS=a(z),aLT=a("6448"),aLU=a("44137"),aLV=a(p),aLW=a("27879"),aLX=a("33556"),aLY=a(z),aLZ=a("5677"),aL0=a("39233"),aL1=a(p),aL2=a("26027"),aL3=a("31210"),aL4=a(z),aL5=a("5183"),aL6=a("36393"),aL8=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aLN=[0,a(Q),qZ,5,1428,36,[0,a(aQ),[0,a(L),0]]],aLv=a(p),aLw=a("25147"),aLx=a("30347"),aLy=a(z),aLz=a("5200"),aLA=a("35547"),aLB=a(p),aLC=a("22417"),aLD=a("26999"),aLE=a(z),aLF=a("4582"),aLG=a("31581"),aLH=a(p),aLI=a("20935"),aLJ=a(Ck),aLK=a(z),aLL=a("4181"),aLM=a("29297"),aLO=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aLt=[0,a(Q),1457,5,1461,36,[0,a(aQ),[0,a(L),0]]],aLb=a(p),aLc=a("31616"),aLd=a("38141"),aLe=a(z),aLf=a("6525"),aLg=a("44666"),aLh=a(p),aLi=a("28214"),aLj=a("33959"),aLk=a(z),aLl=a("5745"),aLm=a("39704"),aLn=a(p),aLo=a("26339"),aLp=a("31584"),aLq=a(z),aLr=a("5245"),aLs=a("36829"),aLu=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aK$=[0,a(Q),1490,5,1494,36,[0,a(aQ),[0,a(L),0]]],aKT=a(p),aKU=a("25449"),aKV=a("30711"),aKW=a(z),aKX=a("5262"),aKY=a("35973"),aKZ=a(p),aK0=a("22686"),aK1=a("27323"),aK2=a(z),aK3=a("4637"),aK4=a("31960"),aK5=a(p),aK6=a("21186"),aK7=a("25417"),aK8=a(z),aK9=a("4231"),aK_=a("29648"),aLa=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aKR=[0,a(Q),1523,5,1527,36,[0,a(aQ),[0,a(L),0]]],aKz=a(p),aKA=a("32185"),aKB=a("38827"),aKC=a(z),aKD=a("6642"),aKE=a("45469"),aKF=a(p),aKG=a("28722"),aKH=a(yb),aKI=a(z),aKJ=a("5848"),aKK=a("40418"),aKL=a(p),aKM=a("26813"),aKN=a("32152"),aKO=a(z),aKP=a("5339"),aKQ=a("37491"),aKS=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aKx=[0,a(Q),zt,5,1560,36,[0,a(aQ),[0,a(L),0]]],aKf=a(p),aKg=a("25907"),aKh=a(xB),aKi=a(z),aKj=a("5357"),aKk=a("36621"),aKl=a(p),aKm=a("23094"),aKn=a("27814"),aKo=a(z),aKp=a("4720"),aKq=a("32534"),aKr=a(p),aKs=a("21567"),aKt=a("25874"),aKu=a(z),aKv=a("4307"),aKw=a("30181"),aKy=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aKd=[0,a(Q),1589,5,1593,36,[0,a(aQ),[0,a(L),0]]],aJX=a(p),aJY=a("33086"),aJZ=a("39914"),aJ0=a(z),aJ1=a("6828"),aJ2=a("46742"),aJ3=a(p),aJ4=a("29526"),aJ5=a("35538"),aJ6=a(z),aJ7=a("6012"),aJ8=a("41550"),aJ9=a(p),aJ_=a("27564"),aJ$=a("33052"),aKa=a(z),aKb=a("5488"),aKc=a("38541"),aKe=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aJV=[0,a(Q),1622,5,Dh,36,[0,a(aQ),[0,a(L),0]]],aJD=a(p),aJE=a("26632"),aJF=a("32139"),aJG=a(z),aJH=a("5507"),aJI=a("37646"),aJJ=a(p),aJK=a("23741"),aJL=a("28593"),aJM=a(z),aJN=a("4852"),aJO=a("33445"),aJP=a(p),aJQ=a("22171"),aJR=a("36598"),aJS=a(z),aJT=a("4428"),aJU=a("31026"),aJW=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aJB=[0,a(Q),1655,5,1659,36,[0,a(aQ),[0,a(L),0]]],aJj=a(p),aJk=a("33999"),aJl=a("41016"),aJm=a(z),aJn=a("7016"),aJo=a("48032"),aJp=a(p),aJq=a("30341"),aJr=a("36519"),aJs=a(z),aJt=a("6178"),aJu=a("42697"),aJv=a(p),aJw=a("28325"),aJx=a("33964"),aJy=a(z),aJz=a("5639"),aJA=a("39605"),aJC=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aJh=[0,a(Q),1688,5,1692,36,[0,a(aQ),[0,a(L),0]]],aI1=a(p),aI2=a("27367"),aI3=a("33026"),aI4=a(z),aI5=a("5659"),aI6=a("38685"),aI7=a(p),aI8=a("24396"),aI9=a("29382"),aI_=a(z),aI$=a(B9),aJa=a("34368"),aJb=a(p),aJc=a("22783"),aJd=a("27332"),aJe=a(z),aJf=a("4550"),aJg=a("31882"),aJi=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aIZ=[0,a(Q),1721,5,1725,36,[0,a(aQ),[0,a(L),0]]],aIH=a(p),aII=a("35002"),aIJ=a("42226"),aIK=a(z),aIL=a("7223"),aIM=a("49449"),aIN=a(p),aIO=a("31236"),aIP=a("37596"),aIQ=a(z),aIR=a("6360"),aIS=a("43957"),aIT=a(p),aIU=a("29161"),aIV=a("34966"),aIW=a(z),aIX=a("5805"),aIY=a("40773"),aI0=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aIF=[0,a(Q),1754,5,1758,36,[0,a(aQ),[0,a(L),0]]],aIn=a(p),aIo=a("28174"),aIp=a("34000"),aIq=a(z),aIr=a("5826"),aIs=a("39826"),aIt=a(p),aIu=a(Ck),aIv=a("30249"),aIw=a(z),aIx=a("5133"),aIy=a("35382"),aIz=a(p),aIA=a("23455"),aIB=a("28138"),aIC=a(z),aID=a("4684"),aIE=a("32823"),aIG=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aIl=[0,a(Q),1787,5,1791,36,[0,a(aQ),[0,a(L),0]]],aH5=a(p),aH6=a("35114"),aH7=a("42361"),aH8=a(z),aH9=a("7246"),aH_=a("49607"),aH$=a(p),aIa=a("31336"),aIb=a("37716"),aIc=a(z),aId=a("6380"),aIe=a("44098"),aIf=a(p),aIg=a("29254"),aIh=a("35078"),aIi=a(z),aIj=a("5824"),aIk=a("40903"),aIm=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aH3=[0,a(Q),1820,5,1824,36,[0,a(aQ),[0,a(L),0]]],aHL=a(p),aHM=a("28264"),aHN=a("34109"),aHO=a(z),aHP=a("5845"),aHQ=a("39953"),aHR=a(p),aHS=a("25196"),aHT=a("30346"),aHU=a(z),aHV=a("5149"),aHW=a("35495"),aHX=a(p),aHY=a("23530"),aHZ=a("28228"),aH0=a(z),aH1=a("4699"),aH2=a("32928"),aH4=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aHJ=[0,a(Q),1853,5,1857,36,[0,a(aQ),[0,a(L),0]]],aHr=a(p),aHs=a("35500"),aHt=a("42827"),aHu=a(z),aHv=a("7326"),aHw=a("50153"),aHx=a(p),aHy=a("31681"),aHz=a("38131"),aHA=a(z),aHB=a("6450"),aHC=a("44583"),aHD=a(p),aHE=a("29576"),aHF=a("35464"),aHG=a(z),aHH=a("5888"),aHI=a("41353"),aHK=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aHp=[0,a(Q),1886,5,1890,36,[0,a(aQ),[0,a(L),0]]],aG9=a(p),aG_=a("28575"),aG$=a("34484"),aHa=a(z),aHb=a("5909"),aHc=a("40392"),aHd=a(p),aHe=a("25473"),aHf=a("30680"),aHg=a(z),aHh=a("5206"),aHi=a("35885"),aHj=a(p),aHk=a("23789"),aHl=a("28539"),aHm=a(z),aHn=a("4751"),aHo=a("33290"),aHq=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aG7=[0,a(Q),1919,5,1923,36,[0,a(aQ),[0,a(L),0]]],aGP=a(p),aGQ=a("35855"),aGR=a("43255"),aGS=a(z),aGT=a("7399"),aGU=a("50655"),aGV=a(p),aGW=a("31998"),aGX=a("38512"),aGY=a(z),aGZ=a("6515"),aG0=a("45029"),aG1=a(p),aG2=a("29872"),aG3=a("35819"),aG4=a(z),aG5=a("5947"),aG6=a("41767"),aG8=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aGN=[0,a(Q),1952,5,1956,36,[0,a(aQ),[0,a(L),0]]],aGv=a(p),aGw=a("28861"),aGx=a(EI),aGy=a(z),aGz=a("5968"),aGA=a("40796"),aGB=a(p),aGC=a("25728"),aGD=a("30987"),aGE=a(z),aGF=a("5258"),aGG=a("36244"),aGH=a(p),aGI=a("24027"),aGJ=a("28824"),aGK=a(z),aGL=a("4799"),aGM=a(zF),aGO=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aGt=[0,a(Q),1985,5,1989,36,[0,a(aQ),[0,a(L),0]]],aGb=a(p),aGc=a("36626"),aGd=a("44185"),aGe=a(z),aGf=a("7558"),aGg=a("51744"),aGh=a(p),aGi=a("32686"),aGj=a(ym),aGk=a(z),aGl=a("6655"),aGm=a("45997"),aGn=a(p),aGo=a("30514"),aGp=a("36589"),aGq=a(z),aGr=a("6075"),aGs=a("42665"),aGu=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aF$=[0,a(Q),c6,5,$,36,[0,a(aQ),[0,a(L),0]]],aFT=a(p),aFU=a("29482"),aFV=a("35578"),aFW=a(z),aFX=a("6096"),aFY=a("41673"),aFZ=a(p),aF0=a("26281"),aF1=a("31653"),aF2=a(z),aF3=a("5371"),aF4=a("37023"),aF5=a(p),aF6=a("24544"),aF7=a("29444"),aF8=a(z),aF9=a("4902"),aF_=a("34346"),aGa=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aFR=[0,a(Q),2051,5,2055,36,[0,a(aQ),[0,a(L),0]]],aFz=a(p),aFA=a("36835"),aFB=a("44437"),aFC=a(z),aFD=a("7601"),aFE=a("52039"),aFF=a(p),aFG=a("32872"),aFH=a("39564"),aFI=a(z),aFJ=a("6693"),aFK=a("46259"),aFL=a(p),aFM=a("30688"),aFN=a("36798"),aFO=a(z),aFP=a("6110"),aFQ=a("42908"),aFS=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aFx=[0,a(Q),2084,5,2088,36,[0,a(aQ),[0,a(L),0]]],aFf=a(p),aFg=a("29650"),aFh=a("35781"),aFi=a(z),aFj=a("6131"),aFk=a("41911"),aFl=a(p),aFm=a("26431"),aFn=a("31833"),aFo=a(z),aFp=a("5402"),aFq=a("37234"),aFr=a(p),aFs=a("24684"),aFt=a("29612"),aFu=a(z),aFv=a("4930"),aFw=a("34542"),aFy=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aFd=[0,a(Q),2117,5,2121,36,[0,a(aQ),[0,a(L),0]]],aEX=a(p),aEY=a("36864"),aEZ=a("44473"),aE0=a(z),aE1=a("7607"),aE2=a("52081"),aE3=a(p),aE4=a("32898"),aE5=a("39596"),aE6=a(z),aE7=a("6698"),aE8=a("46296"),aE9=a(p),aE_=a("30713"),aE$=a("36827"),aFa=a(z),aFb=a("6115"),aFc=a("42942"),aFe=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aEV=[0,a(Q),2150,5,2154,36,[0,a(aQ),[0,a(L),0]]],aED=a(p),aEE=a("29674"),aEF=a("35810"),aEG=a(z),aEH=a("6136"),aEI=a("41945"),aEJ=a(p),aEK=a("26452"),aEL=a("31858"),aEM=a(z),aEN=a("5406"),aEO=a("37264"),aEP=a(p),aEQ=a("24704"),aER=a("29636"),aES=a(z),aET=a("4934"),aEU=a(yb),aEW=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aEB=[0,a(Q),2183,5,q1,36,[0,a(aQ),[0,a(L),0]]],aEj=a(p),aEk=a("37140"),aEl=a("44807"),aEm=a(z),aEn=a("7664"),aEo=a("52472"),aEp=a(p),aEq=a("33145"),aEr=a("39893"),aEs=a(z),aEt=a("6748"),aEu=a("46643"),aEv=a(p),aEw=a("30943"),aEx=a("37103"),aEy=a(z),aEz=a("6161"),aEA=a("43264"),aEC=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aEh=[0,a(Q),2216,5,2220,36,[0,a(aQ),[0,a(L),0]]],aD1=a(p),aD2=a("29897"),aD3=a("36079"),aD4=a(z),aD5=a("6182"),aD6=a("42260"),aD7=a(p),aD8=a("26650"),aD9=a("32097"),aD_=a(z),aD$=a("5447"),aEa=a("37543"),aEb=a(p),aEc=a("24889"),aEd=a("29858"),aEe=a(z),aEf=a("4971"),aEg=a(EI),aEi=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDZ=[0,a(Q),2249,5,2252,36,[0,a(aQ),[0,a(L),0]]],aDH=a(p),aDI=a("37252"),aDJ=a("44941"),aDK=a(z),aDL=a("7687"),aDM=a("52629"),aDN=a(p),aDO=a("33244"),aDP=a("40013"),aDQ=a(z),aDR=a("6768"),aDS=a("46783"),aDT=a(p),aDU=a("31036"),aDV=a("37215"),aDW=a(z),aDX=a("6179"),aDY=a("43394"),aD0=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDF=[0,a(Q),2281,5,2284,36,[0,a(aQ),[0,a(L),0]]],aDn=a(p),aDo=a("29986"),aDp=a("36187"),aDq=a(z),aDr=a("6201"),aDs=a("42386"),aDt=a(p),aDu=a("26730"),aDv=a("32193"),aDw=a(z),aDx=a("5463"),aDy=a("37656"),aDz=a(p),aDA=a("24964"),aDB=a("29948"),aDC=a(z),aDD=a(B9),aDE=a("34934"),aDG=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPf=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPo=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDk=[0,a(Q),kF,5,ee,33,[0,a(o4),[0,a(me),[0,a(L),0]]]],aC4=a(p),aC5=a(w_),aC6=a(vW),aC7=a(z),aC8=a(Ga),aC9=a(yO),aC_=a(p),aC$=a(AG),aDa=a(Es),aDb=a(z),aDc=a(wi),aDd=a(z_),aDe=a(p),aDf=a(zf),aDg=a(ER),aDh=a(z),aDi=a("35600"),aDj=a(mk),aDl=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aC2=[0,a(Q),662,5,665,33,[0,a(o4),[0,a(me),[0,a(L),0]]]],aCK=a(p),aCL=a(yt),aCM=a(rM),aCN=a(z),aCO=a(Gb),aCP=a(Ci),aCQ=a(p),aCR=a(EG),aCS=a(ra),aCT=a(z),aCU=a(os),aCV=a(Al),aCW=a(p),aCX=a(DS),aCY=a(Fp),aCZ=a(z),aC0=a(Ds),aC1=a(x6),aC3=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aCI=[0,a(Q),707,5,su,33,[0,a(o4),[0,a(me),[0,a(L),0]]]],aCq=a(p),aCr=a(rI),aCs=a("220000"),aCt=a(z),aCu=a("38000"),aCv=a("260000"),aCw=a(p),aCx=a("164200"),aCy=a(zn),aCz=a(z),aCA=a(FY),aCB=a("231200"),aCC=a(p),aCD=a("153200"),aCE=a("183700"),aCF=a(z),aCG=a(os),aCH=a("214200"),aCJ=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aCo=[0,a(Q),750,5,752,33,[0,a(o4),[0,a(me),[0,a(L),0]]]],aB8=a(p),aB9=a("148100"),aB_=a("178700"),aB$=a(z),aCa=a("30600"),aCb=a("209300"),aCc=a(p),aCd=a(Bp),aCe=a("158900"),aCf=a(z),aCg=a("26900"),aCh=a(yq),aCi=a(p),aCj=a("123300"),aCk=a("147900"),aCl=a(z),aCm=a("24600"),aCn=a(DY),aCp=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDm=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB7=[0,a(d),Y,3,Y,76,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPp=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB6=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB2=[0,a(E),ot,5,ot,28,[0,a(DD),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aB3=[0,a(d),jb,11,jb,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB1=[0,a(E),Eb,14,Eb,44,[0,a(DD),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aBX=[0,a(E),vU,14,vU,36,[0,a(iO),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aBV=a(p),aBW=a(p),aBY=[0,a(d),nF,10,nF,32,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBU=[0,a(d),nF,10,nF,32,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBP=[0,a(Q),EN,7,EN,18,[0,a(ja),[0,a(aQ),[0,a(L),0]]]],aBM=a(gD),aBN=a(qX),aBO=a(fo),aBQ=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBK=[0,a(aO),hX,7,hX,18,[0,a(ja),[0,a(bB),[0,a(aM),0]]]],aBH=a(gS),aBI=a(qA),aBJ=a(ff),aBL=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBF=[0,a(aO),xt,7,xt,18,[0,a(ja),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aBC=a(oJ),aBD=a(BV),aBE=a(mO),aBG=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBR=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBz=[0,a(Q),CA,29,CA,64,[0,a(nv),[0,a(aQ),[0,a(L),0]]]],aBx=a(gD),aBy=a(fo),aBA=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBv=[0,a(aO),Bt,29,Bt,64,[0,a(nv),[0,a(bB),[0,a(aM),0]]]],aBt=a(gS),aBu=a(ff),aBw=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBr=[0,a(aO),yG,29,yG,64,[0,a(nv),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aBp=a(oJ),aBq=a(mO),aBs=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBB=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBj=[0,a(d),iV,14,iV,50,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBf=[0,a(Q),D6,14,D6,50,[0,a("Article 25"),[0,a(aQ),[0,a(L),0]]]],aBa=a(wG),aBb=a(sh),aBc=a("0.0172"),aBd=a(wG),aBe=a(sh),aA6=[0,a(E),iJ,14,iJ,64,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA2=[0,a(E),iG,14,iG,59,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aAY=[0,a(fc),yU,14,yU,36,[0,a(C5),[0,a(zb),0]]],aAW=a(vD),aAX=a(et),aAS=[0,a(Q),E6,14,E6,47,[0,a(sj),[0,a(aQ),[0,a(L),0]]]],aAR=a("0.416"),aAN=[0,a(Q),ya,14,ya,47,[0,a(sj),[0,a(aQ),[0,a(L),0]]]],aAM=a(vp),aAI=[0,a(Q),Du,14,Du,47,[0,a(sj),[0,a(aQ),[0,a(L),0]]]],aAH=a("560085"),aAD=[0,a(Q),FU,14,FU,48,[0,a("Article 26"),[0,a(aQ),[0,a(L),0]]]],aAC=a(AF),aAy=[0,a(Q),BZ,15,BZ,49,[0,a("Article 22"),[0,a(aQ),[0,a(L),0]]]],aAx=a("2211133"),aAt=[0,a(Q),va,14,va,42,[0,a("Article 21"),[0,a(aQ),[0,a(L),0]]]],aAs=a(ig),aAo=[0,a(Q),Ef,14,Ef,41,[0,a("Article 20"),[0,a(aQ),[0,a(L),0]]]],aAn=a(kk),aAp=[0,a(d),oL,11,oL,38,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAm=[0,a(d),oL,11,oL,38,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAq=[0,a(aj),[0,a("montant_forfaitaire_d832_10"),0]],aAu=[0,a(d),oI,11,oI,39,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAr=[0,a(d),oI,11,oI,39,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAv=[0,a(aj),[0,a("montant_minimal_aide_d832_10"),0]],aAz=[0,a(d),oq,11,oq,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAw=[0,a(d),oq,11,oq,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAA=[0,a(aj),[0,a("coefficient_multiplicateur_d832_11"),0]],aAE=[0,a(d),oT,11,oT,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAB=[0,a(d),oT,11,oT,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAF=[0,a(aj),[0,a("coefficient_multiplicateur_d832_18"),0]],aAJ=[0,a(d),mp,11,mp,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAG=[0,a(d),mp,11,mp,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAK=[0,a(aj),[0,a("montant_limite_tranches_d832_15_1"),0]],aAO=[0,a(d),kS,11,kS,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAL=[0,a(d),kS,11,kS,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAP=[0,a(aj),[0,a("taux_tranche_inf\xc3\xa9rieure_d832_15_1"),0]],aAT=[0,a(d),ng,11,ng,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAQ=[0,a(d),ng,11,ng,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAU=[0,a(aj),[0,a("taux_tranche_sup\xc3\xa9rieure_d832_15_1"),0]],aAZ=[0,a(d),mY,11,mY,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAV=[0,a(d),mY,11,mY,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aA0=[0,a(aj),[0,a(FA),0]],aA3=[0,a(E),iG,14,iG,59,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA4=[0,a(aj),[0,a(nh),0]],aA1=[0,a(E),iG,14,iG,59,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA7=[0,a(E),iJ,14,iJ,64,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA8=[0,a(aj),[0,a(n2),0]],aA5=[0,a(E),iJ,14,iJ,64,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aA9=[0,a(aj),[0,a(gb),[0,a(kq),0]]],aA_=[0,a(aj),[0,a(gb),[0,a(kq),0]]],aBg=[0,a(d),n5,11,n5,47,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aA$=[0,a(d),n5,11,n5,47,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBh=[0,a(aj),[0,a("coefficient_multiplicateur_d832_17_3"),0]],aBk=[0,a(d),iV,14,iV,50,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBl=[0,a(aj),[0,a(ky),0]],aBi=[0,a(d),iV,14,iV,50,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBm=[0,a(aj),[0,a(eJ),[0,a(bk),0]]],aBn=[0,a(aj),[0,a(eJ),[0,a(bk),0]]],aBS=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBo=[0,a(d),ch,11,ch,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBT=[0,a(aj),[0,a("montant_forfaitaire_charges_d832_10"),0]],aBZ=[0,a(aj),[0,a(bI),0]],aB4=[0,a(d),jb,11,jb,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB0=[0,a(d),jb,11,jb,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB5=[0,a(aj),[0,a("ressources_m\xc3\xa9nage_avec_d832_18"),0]],aPq=[0,a(aj),[0,a(dA),0]],aPt=[0,a(d),nq,11,nq,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPr=[0,a(d),nq,11,nq,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPu=[0,a(aj),[0,a(v_),0]],aPA=[0,a(aj),[0,a(kv),0]],aPR=[0,a(d),hN,10,hN,14,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPB=[0,a(d),hN,10,hN,14,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPS=[0,a(aj),[0,a("plafond_mensualit\xc3\xa9_d832_10_3_base"),0]],aPV=[0,a(E),h3,14,h3,75,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPW=[0,a(aj),[0,a(mK),0]],aPT=[0,a(E),h3,14,h3,75,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPZ=[0,a(E),ji,14,ji,69,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP0=[0,a(aj),[0,a(on),0]],aPX=[0,a(E),ji,14,ji,69,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP3=[0,a(E),jj,14,jj,70,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP4=[0,a(aj),[0,a(mz),0]],aP1=[0,a(E),jj,14,jj,70,[0,a(d$),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP5=[0,a(aj),[0,a(fI),[0,a(dP),0]]],aP6=[0,a(aj),[0,a(fI),[0,a(dP),0]]],aP_=[0,a(d),kp,10,kp,17,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aP7=[0,a(d),kp,10,kp,17,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aP$=[0,a(aj),[0,a("coefficient_prise_en_charge_d832_10_formule"),0]],aQi=[0,a(aj),[0,a(kO),0]],aQt=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQj=[0,a(d),eD,10,eD,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQu=[0,a(aj),[0,a("plafond_mensualit\xc3\xa9_d832_10_3_copropri\xc3\xa9taires"),0]],aQC=[0,a(d),fV,12,fV,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQv=[0,a(d),fV,12,fV,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQD=[0,a(aj),[0,a(q_),0]],aQJ=[0,a(d),mj,10,mj,23,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQE=[0,a(d),mj,10,mj,23,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQK=[0,a(aj),[0,a("coefficient_prise_en_charge_d832_10_coeff_arrondi"),0]],aQY=[0,a(aj),[0,a(eN),0]],aQ1=[0,a(d),oY,12,oY,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQZ=[0,a(d),oY,12,oY,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ2=[0,a(aj),[0,a(sq),0]],aQ7=[0,a(d),oA,10,oA,15,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ3=[0,a(d),oA,10,oA,15,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQ8=[0,a(aj),[0,a("coefficient_prise_en_charge_d832_10_seuil"),0]],aRl=[0,a(aj),[0,a(bJ),0]],aRq=[0,a(d),nP,12,nP,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRm=[0,a(d),nP,12,nP,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRr=[0,a(aj),[0,a(cX),0]],aRA=[0,a(aj),[0,a(fl),0]],aAj=[0,a(E),A6,14,A6,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aAe=[0,a(au),[0,a(bJ),[0,a(ac),0]]],aAf=[0,a(au),[0,a(bJ),0]],aAg=[0,a(au),[0,a(bJ),[0,a(ae),0]]],aAh=[0,a(au),[0,a(bJ),0]],aAi=a(p),aAk=[0,a(d),m3,10,m3,25,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAd=[0,a(d),m3,10,m3,25,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAa=[0,a(E),u6,14,u6,33,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],az_=a(p),az$=a(p),az6=[0,a(E),yy,14,yy,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azV=[0,a(au),[0,a(eN),[0,a(ac),0]]],azW=[0,a(au),[0,a(eN),0]],azX=[0,a(au),[0,a(eN),[0,a(ae),0]]],azY=[0,a(au),[0,a(eN),0]],azZ=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],az0=[0,a(bk),[0,a(bQ),0]],az1=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],az2=[0,a(bk),[0,a(bQ),0]],az3=a(kW),az4=a(p),az5=a(p),az7=[0,a(d),nB,10,nB,40,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azU=[0,a(d),nB,10,nB,40,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azQ=[0,a(E),CR,5,CR,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azO=a(oE),azP=a(oE),azR=[0,a(d),jl,10,jl,15,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azN=[0,a(E),D$,14,D$,49,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azL=a(hf),azM=a(hf),azH=[0,a(E),CM,14,CM,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azx=[0,a(au),[0,a(bI),[0,a(ac),0]]],azy=[0,a(au),[0,a(bI),0]],azz=[0,a(au),[0,a(bI),[0,a(ae),0]]],azA=[0,a(au),[0,a(bI),0]],azB=[0,a(au),[0,a(ku),[0,a(ac),0]]],azC=[0,a(au),[0,a(ku),0]],azD=[0,a(au),[0,a(ku),[0,a(ae),0]]],azE=[0,a(au),[0,a(ku),0]],azF=a(p),azG=a(p),azI=[0,a(d),mb,10,mb,20,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azw=[0,a(d),mb,10,mb,20,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azs=[0,a(E),Ff,5,Ff,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azp=a(c5),azq=a(c5),azr=a(lX),azt=[0,a(d),hD,10,hD,23,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azo=[0,a(E),xC,14,xC,49,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azl=a(c5),azm=a(c5),azn=a(lX),azh=[0,a(E),B6,14,B6,40,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azd=[0,a(E),vy,14,vy,55,[0,a(yM),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay_=[0,a(au),[0,a(kA),[0,a(ac),0]]],ay$=[0,a(au),[0,a(kA),0]],aza=[0,a(au),[0,a(kA),[0,a(ae),0]]],azb=[0,a(au),[0,a(kA),0]],azc=a(p),aze=[0,a(d),oQ,11,oQ,52,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ay9=[0,a(d),oQ,11,oQ,52,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ay5=[0,a(E),FT,5,FT,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay4=a(oE),ay6=[0,a(d),h_,10,h_,17,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ay3=[0,a(E),nC,14,nC,49,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay0=a(p),ay1=a(p),ay2=a(hf),ayU=[0,a(E),ga,14,ga,70,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayQ=[0,a(E),hF,14,hF,69,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayM=[0,a(E),iW,14,iW,75,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayI=[0,a(E),zQ,14,zQ,44,[0,a(yM),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayJ=[0,a(d),nK,11,nK,41,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayH=[0,a(d),nK,11,nK,41,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayD=[0,a(E),zi,14,zi,36,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayE=[0,a(d),jn,21,jn,43,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayz=[0,a(E),wl,14,wl,40,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayv=[0,a(Q),xr,14,xr,48,[0,a(we),[0,a(fg),[0,a(L),0]]]],ayt=a("2142091"),ayu=a("1339340"),ayp=[0,a(Q),wR,14,wR,41,[0,a("Article 32"),[0,a(fg),[0,a(L),0]]]],ayn=a(qI),ayo=a("2668"),ayh=[0,a(E),is,14,is,64,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayd=[0,a(E),ia,14,ia,59,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ax$=[0,a(E),iH,14,iH,55,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ax7=[0,a(E),zh,14,zh,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ax5=a(p),ax6=a(p),ax8=[0,a(d),lP,10,lP,32,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ax4=[0,a(d),lP,10,lP,32,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ax0=[0,a(Q),Co,14,Co,48,[0,a(sv),[0,a(fg),[0,a(L),0]]]],axq=a(p),axr=a("46192"),axs=a("54152"),axt=a(z),axu=a("57741"),axv=a(X),axw=a("61794"),axx=a(_),axy=a("65862"),axz=a(ah),axA=a("7368"),axB=a("71039"),axC=a(p),axD=a("42242"),axE=a("49299"),axF=a(z),axG=a("52565"),axH=a(X),axI=a("56268"),axJ=a(_),axK=a("59957"),axL=a(ah),axM=a("6659"),axN=a("63887"),axO=a(p),axP=a("40096"),axQ=a("46634"),axR=a(z),axS=a("49475"),axT=a(X),axU=a("52740"),axV=a(_),axW=a("56004"),axX=a(ah),axY=a("6180"),axZ=a("59675"),ax1=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],axo=[0,a(aO),dK,14,dK,48,[0,a(sv),[0,a(bB),[0,a(aM),0]]]],awQ=a(p),awR=a("44630"),awS=a("52321"),awT=a(z),awU=a("55788"),awV=a(X),awW=a("59704"),awX=a(_),awY=a("63635"),awZ=a(ah),aw0=a("7119"),aw1=a("68637"),aw2=a(p),aw3=a("40814"),aw4=a("47632"),aw5=a(z),aw6=a("50787"),aw7=a(X),aw8=a("54365"),aw9=a(_),aw_=a("57929"),aw$=a(ah),axa=a("6434"),axb=a("61727"),axc=a(p),axd=a("38740"),axe=a("45057"),axf=a(z),axg=a("47802"),axh=a(X),axi=a("50957"),axj=a(_),axk=a("54110"),axl=a(ah),axm=a("5971"),axn=a("57657"),axp=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awO=[0,a(aO),Ee,14,Ee,48,[0,a(sv),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],awe=a(p),awf=a("44443"),awg=a("52101"),awh=a(z),awi=a("55555"),awj=a(X),awk=a("59454"),awl=a(_),awm=a("63369"),awn=a(ah),awo=a("7089"),awp=a("68350"),awq=a(p),awr=a("40643"),aws=a("47433"),awt=a(z),awu=a("50575"),awv=a(X),aww=a("54138"),awx=a(_),awy=a("57687"),awz=a(ah),awA=a("6407"),awB=a("61469"),awC=a(p),awD=a("38578"),awE=a("44869"),awF=a(z),awG=a("47602"),awH=a(X),awI=a("50744"),awJ=a(_),awK=a("53884"),awL=a(ah),awM=a("5946"),awN=a("57416"),awP=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av_=[0,a(d),h6,14,h6,50,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av5=[0,a(E),ye,14,ye,35,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],av6=[0,a(d),id,12,id,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av1=[0,a(Q),BK,14,BK,42,[0,a("Article 29"),[0,a(fg),[0,a(L),0]]]],av0=a(ig),avW=[0,a(Q),z3,14,z3,41,[0,a("Article 28"),[0,a(fg),[0,a(L),0]]]],avV=a(kk),avR=[0,a(Q),Fn,14,Fn,35,[0,a(we),[0,a(fg),[0,a(L),0]]]],avQ=a("121726"),avS=[0,a(d),kF,12,kF,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avP=[0,a(d),kF,12,kF,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avT=[0,a(au),[0,a(Ej),0]],avX=[0,a(d),ma,11,ma,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avU=[0,a(d),ma,11,ma,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avY=[0,a(au),[0,a("montant_forfaitaire_d832_24"),0]],av2=[0,a(d),mv,11,mv,39,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],avZ=[0,a(d),mv,11,mv,39,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av3=[0,a(au),[0,a("montant_minimal_aide_d823_24"),0]],av7=[0,a(d),id,12,id,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av4=[0,a(d),id,12,id,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av8=[0,a(au),[0,a("condition_2_du_832_25"),0]],av$=[0,a(d),h6,14,h6,50,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awa=[0,a(au),[0,a(ky),0]],av9=[0,a(d),h6,14,h6,50,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awb=[0,a(au),[0,a(eJ),[0,a(bk),0]]],awc=[0,a(au),[0,a(eJ),[0,a(bk),0]]],ax2=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awd=[0,a(d),ee,12,ee,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ax3=[0,a(au),[0,a(zT),0]],ax9=[0,a(au),[0,a(bI),0]],aya=[0,a(E),iH,14,iH,55,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayb=[0,a(au),[0,a(BA),0]],ax_=[0,a(E),iH,14,iH,55,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aye=[0,a(E),ia,14,ia,59,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayf=[0,a(au),[0,a(nh),0]],ayc=[0,a(E),ia,14,ia,59,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayi=[0,a(E),is,14,is,64,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayj=[0,a(au),[0,a(n2),0]],ayg=[0,a(E),is,14,is,64,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayk=[0,a(au),[0,a(gb),[0,a(kw),0]]],ayl=[0,a(au),[0,a(gb),[0,a(kw),0]]],ayq=[0,a(d),nx,11,nx,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aym=[0,a(d),nx,11,nx,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayr=[0,a(au),[0,a("montant_forfaitaire_d832_27"),0]],ayw=[0,a(d),hB,12,hB,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ays=[0,a(d),hB,12,hB,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayx=[0,a(au),[0,a(A2),0]],ayA=[0,a(d),kf,12,kf,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayy=[0,a(d),kf,12,kf,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayB=[0,a(au),[0,a(xN),0]],ayF=[0,a(d),jn,21,jn,43,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayC=[0,a(d),jn,21,jn,43,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayG=[0,a(au),[0,a(r5),0]],ayK=[0,a(au),[0,a(kA),0]],ayN=[0,a(E),iW,14,iW,75,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayO=[0,a(au),[0,a(mK),0]],ayL=[0,a(E),iW,14,iW,75,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayR=[0,a(E),hF,14,hF,69,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayS=[0,a(au),[0,a(on),0]],ayP=[0,a(E),hF,14,hF,69,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayV=[0,a(E),ga,14,ga,70,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayW=[0,a(au),[0,a(mz),0]],ayT=[0,a(E),ga,14,ga,70,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayX=[0,a(au),[0,a(fI),[0,a(dP),0]]],ayY=[0,a(au),[0,a(fI),[0,a(dP),0]]],ay7=[0,a(d),h_,10,h_,17,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayZ=[0,a(d),h_,10,h_,17,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ay8=[0,a(au),[0,a("coefficient_prise_en_charge_d832_25_formule"),0]],azf=[0,a(au),[0,a(ku),0]],azi=[0,a(d),od,12,od,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azg=[0,a(d),od,12,od,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azj=[0,a(au),[0,a(vs),0]],azu=[0,a(d),hD,10,hD,23,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azk=[0,a(d),hD,10,hD,23,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azv=[0,a(au),[0,a("coefficient_prise_en_charge_d832_25_coeff_arrondi"),0]],azJ=[0,a(au),[0,a(eN),0]],azS=[0,a(d),jl,10,jl,15,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azK=[0,a(d),jl,10,jl,15,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azT=[0,a(au),[0,a("coefficient_prise_en_charge_d832_25_seuil"),0]],az8=[0,a(au),[0,a(bJ),0]],aAb=[0,a(d),kc,12,kc,31,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],az9=[0,a(d),kc,12,kc,31,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAc=[0,a(au),[0,a(cX),0]],aAl=[0,a(au),[0,a(fl),0]],avF=[0,a(E),C4,14,C4,33,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avD=a(p),avE=a(p),avz=[0,a(E),A1,14,A1,39,[0,a(rP),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avx=a(p),avy=a(p),avt=[0,a(E),Ba,14,Ba,36,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avo=[0,a(aD),[0,a(ki),[0,a(ac),0]]],avp=[0,a(aD),[0,a(ki),0]],avq=[0,a(aD),[0,a(ki),[0,a(ae),0]]],avr=[0,a(aD),[0,a(ki),0]],avs=a(p),avu=[0,a(d),mM,10,mM,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avn=[0,a(d),mM,10,mM,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avk=[0,a(E),xv,14,xv,42,[0,a(rP),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avg=[0,a(aG),Ce,14,Ce,36,[0,a(qS),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],ava=[0,a(aD),[0,a(bJ),[0,a(ac),0]]],avb=[0,a(aD),[0,a(bJ),0]],avc=[0,a(aD),[0,a(bJ),[0,a(ae),0]]],avd=[0,a(aD),[0,a(bJ),0]],ave=a(p),avf=a(p),avh=[0,a(d),oa,10,oa,36,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],au$=[0,a(d),oa,10,oa,36,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],au5=[0,a(aO),Aq,14,Aq,33,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],au3=a(hy),au4=a(hy),au6=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],au2=[0,a(aO),m$,14,m$,33,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],au0=a(hy),au1=a(hy),au7=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auZ=[0,a(Q),f2,14,f2,33,[0,a(cF),[0,a(bX),[0,a(L),0]]]],auX=a(hy),auY=a(hy),au8=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auT=[0,a(E),wk,14,wk,36,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],auI=[0,a(aD),[0,a(bI),[0,a(ac),0]]],auJ=[0,a(aD),[0,a(bI),0]],auK=[0,a(aD),[0,a(bI),[0,a(ae),0]]],auL=[0,a(aD),[0,a(bI),0]],auM=[0,a(bk),[0,a(bQ),[0,a(ac),0]]],auN=[0,a(bk),[0,a(bQ),0]],auO=[0,a(bk),[0,a(bQ),[0,a(ae),0]]],auP=[0,a(bk),[0,a(bQ),0]],auQ=a(kW),auR=a(p),auS=a(p),auU=[0,a(d),o6,10,o6,40,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auH=[0,a(d),o6,10,o6,40,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auB=[0,a(aO),sw,14,sw,33,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aup=a(hh),auq=a(b5),aur=a(df),aus=a(hh),aut=a(fd),auu=a(fd),auv=a(df),auw=a(df),aux=a(r_),auy=a(qJ),auz=a(fd),auA=a(b5),auC=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auo=[0,a(aO),j5,14,j5,33,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],auc=a(hh),aud=a(b5),aue=a(df),auf=a(hh),aug=a(fd),auh=a(fd),aui=a(df),auj=a(df),auk=a(r_),aul=a(qJ),aum=a(fd),aun=a(b5),auD=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aub=[0,a(Q),qR,14,qR,33,[0,a(cF),[0,a(bX),[0,a(L),0]]]],at1=a(hh),at2=a(b5),at3=a(df),at4=a(hh),at5=a(fd),at6=a(fd),at7=a(df),at8=a(df),at9=a(r_),at_=a(qJ),at$=a(fd),aua=a(b5),auE=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atX=[0,a(E),Ed,14,Ed,36,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],atR=[0,a(aD),[0,a(kr),[0,a(ac),0]]],atS=[0,a(aD),[0,a(kr),0]],atT=[0,a(aD),[0,a(kr),[0,a(ae),0]]],atU=[0,a(aD),[0,a(kr),0]],atV=a(p),atW=a(p),atY=[0,a(d),mA,10,mA,32,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atQ=[0,a(d),mA,10,mA,32,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atK=[0,a(aO),Aj,14,Aj,28,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],atI=a(c5),atJ=a(c5),atL=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atH=[0,a(aO),wq,14,wq,28,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],atF=a(c5),atG=a(c5),atM=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atE=[0,a(Q),ne,14,ne,28,[0,a(cF),[0,a(bX),[0,a(L),0]]]],atC=a(c5),atD=a(c5),atN=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atx=[0,a(Q),dz,14,dz,36,[0,a(sn),[0,a(bX),[0,a(L),0]]]],att=a(FV),atu=a(iB),atv=a(iB),atw=a(FV),aty=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atr=[0,a(aO),vr,14,vr,36,[0,a(sn),[0,a(bB),[0,a(aM),0]]]],atn=a(C2),ato=a(iB),atp=a(iB),atq=a(C2),ats=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atl=[0,a(aO),gK,14,gK,36,[0,a(sn),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],ath=a(Ex),ati=a(iB),atj=a(iB),atk=a(Ex),atm=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atc=[0,a(E),FW,5,FW,50,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],atd=[0,a(d),ip,10,ip,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atb=[0,a(E),zG,14,zG,36,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ata=a(p),ate=[0,a(d),ip,10,ip,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as$=[0,a(d),ip,10,ip,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as8=[0,a(E),xx,14,xx,28,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],as4=[0,a(Q),ri,14,ri,42,[0,a(B_),[0,a(bX),[0,a(L),0]]]],as1=a("3.4"),as2=a(ih),as3=a(ih),asX=[0,a(Q),rm,14,rm,41,[0,a(B_),[0,a(bX),[0,a(L),0]]]],asU=a("4."),asV=a(y5),asW=a(y5),asQ=[0,a(E),zw,14,zw,29,[0,a("Article D842-2"),[0,a(ss),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],asO=a(ov),asP=a(kI),asI=[0,a(Q),EP,29,EP,64,[0,a(dS),[0,a(bX),[0,a(L),0]]]],asF=a(gD),asG=a(qX),asH=a(fo),asJ=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asD=[0,a(aO),wn,29,wn,64,[0,a(dS),[0,a(bB),[0,a(aM),0]]]],asA=a(gS),asB=a(qA),asC=a(ff),asE=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asy=[0,a(aO),vQ,29,vQ,64,[0,a(dS),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],asv=a(oJ),asw=a(BV),asx=a(mO),asz=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asK=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ass=[0,a(Q),zU,29,zU,64,[0,a(se),[0,a(bX),[0,a(L),0]]]],asq=a(gD),asr=a(fo),ast=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aso=[0,a(aO),Cj,29,Cj,64,[0,a(se),[0,a(bB),[0,a(aM),0]]]],asm=a(gS),asn=a(ff),asp=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ask=[0,a(aO),B4,29,B4,64,[0,a(se),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],asi=a(oJ),asj=a(mO),asl=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asu=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asb=a(p),asc=[0,a(Q),529,5,530,34,[0,a(dS),[0,a(bX),[0,a(L),0]]]],ar_=a(Bg),ar$=a(v7),asa=a(Dy),asd=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ar7=a(p),ar8=[0,a(Q),538,5,539,34,[0,a(dS),[0,a(bX),[0,a(L),0]]]],ar4=a("27905"),ar5=a("24683"),ar6=a("22911"),ar9=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ar1=a(z),ar2=[0,a(Q),h$,5,h$,35,[0,a(dS),[0,a(bX),[0,a(L),0]]]],arS=a(z),arT=a("4576"),arU=a("31539"),arV=a(z),arW=a("4043"),arX=a("27774"),arY=a(z),arZ=a("3682"),ar0=a("25689"),ar3=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arP=a(p),arQ=[0,a(aO),qU,5,qR,34,[0,a(dS),[0,a(bB),[0,a(aM),0]]]],arM=a(DK),arN=a(yg),arO=a(wP),arR=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arJ=a(p),arK=[0,a(aO),415,5,416,34,[0,a(dS),[0,a(bB),[0,a(aM),0]]]],arG=a("26962"),arH=a("23848"),arI=a("22136"),arL=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arD=a(z),arE=[0,a(aO),rx,5,rx,35,[0,a(dS),[0,a(bB),[0,a(aM),0]]]],aru=a(z),arv=a("4421"),arw=a("30473"),arx=a(z),ary=a("3906"),arz=a("26835"),arA=a(z),arB=a("3557"),arC=a("24821"),arF=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arr=a(p),ars=[0,a(aO),Gc,5,1198,34,[0,a(dS),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aro=a(CL),arp=a(wg),arq=a(Db),art=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arl=a(p),arm=[0,a(aO),1206,5,1207,34,[0,a(dS),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],ari=a("26849"),arj=a("23748"),ark=a("22044"),arn=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arf=a(z),arg=[0,a(aO),EL,5,EL,35,[0,a(dS),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aq8=a(z),aq9=a("4403"),aq_=a("30345"),aq$=a(z),ara=a("3890"),arb=a("26723"),arc=a(z),ard=a("3542"),are=a("24717"),arh=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ase=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aq4=[0,a(Q),iM,5,iM,61,[0,a(ix),[0,a(bX),[0,a(L),0]]]],aq1=a(Bg),aq2=a(v7),aq3=a(Dy),aq5=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqZ=[0,a(aO),BH,5,BH,61,[0,a(ix),[0,a(bB),[0,a(aM),0]]]],aqW=a(DK),aqX=a(yg),aqY=a(wP),aq0=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqU=[0,a(aO),xA,5,xA,61,[0,a(ix),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aqR=a(CL),aqS=a(wg),aqT=a(Db),aqV=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aq6=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqO=[0,a(Q),wI,14,wI,37,[0,a(ix),[0,a(bX),[0,a(L),0]]]],aqL=a("27765"),aqM=a("24198"),aqN=a("22680"),aqP=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqJ=[0,a(aO),z1,14,z1,37,[0,a(ix),[0,a(bB),[0,a(aM),0]]]],aqG=a("26826"),aqH=a("23380"),aqI=a("21913"),aqK=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqE=[0,a(aO),f7,14,f7,37,[0,a(ix),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aqB=a(Ge),aqC=a("23282"),aqD=a("21821"),aqF=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqQ=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aq7=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqx=a(p),aqy=[0,a(Q),dT,5,be,34,[0,a(cG),[0,a(bX),[0,a(L),0]]]],aqu=a("30850"),aqv=a("26887"),aqw=a("25200"),aqz=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqr=a(p),aqs=[0,a(Q),zo,5,115,34,[0,a(cG),[0,a(bX),[0,a(L),0]]]],aqo=a("37207"),aqp=a("32910"),aqq=a("30548"),aqt=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aql=a(z),aqm=[0,a(Q),kC,5,kC,35,[0,a(cG),[0,a(bX),[0,a(L),0]]]],aqc=a(z),aqd=a("6101"),aqe=a("42052"),aqf=a(z),aqg=a("5390"),aqh=a("37032"),aqi=a(z),aqj=a("4909"),aqk=a("34252"),aqn=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ap$=a(p),aqa=[0,a(aO),87,5,88,34,[0,a(cG),[0,a(bB),[0,a(aM),0]]]],ap8=a("29807"),ap9=a(sg),ap_=a("24348"),aqb=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ap5=a(p),ap6=[0,a(aO),97,5,98,34,[0,a(cG),[0,a(bB),[0,a(aM),0]]]],ap2=a("35949"),ap3=a(mV),ap4=a("29515"),ap7=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apZ=a(z),ap0=[0,a(aO),c4,5,c4,35,[0,a(cG),[0,a(bB),[0,a(aM),0]]]],apQ=a(z),apR=a("5895"),apS=a("40630"),apT=a(z),apU=a(rO),apV=a(sd),apW=a(z),apX=a("4743"),apY=a("33094"),ap1=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apN=a(p),apO=[0,a(aO),884,5,885,34,[0,a(cG),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],apK=a("29682"),apL=a("25859"),apM=a("24246"),apP=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apH=a(p),apI=[0,a(aO),894,5,gG,34,[0,a(cG),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],apE=a("35799"),apF=a(Bc),apG=a("29392"),apJ=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apB=a(z),apC=[0,a(aO),Cb,5,Cb,35,[0,a(cG),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aps=a(z),apt=a("5870"),apu=a("40460"),apv=a(z),apw=a(wy),apx=a(AL),apy=a(z),apz=a("4723"),apA=a(yP),apD=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqA=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apo=[0,a(Q),hU,14,hU,42,[0,a("Article 12"),[0,a(bX),[0,a(L),0]]]],apl=a(p),apm=a(ig),apn=a(ig),apf=[0,a(aO),x7,14,x7,29,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],ao$=a(p),apa=a(sg),apb=a(mV),apc=a(z),apd=a(rO),ape=a(sd),apg=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ao_=[0,a(Q),hn,14,hn,29,[0,a(cF),[0,a(bX),[0,a(L),0]]]],ao4=a(p),ao5=a(sg),ao6=a(mV),ao7=a(z),ao8=a(rO),ao9=a(sd),aph=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ao2=[0,a(aO),rW,14,rW,29,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],aoW=a(p),aoX=a("25869"),aoY=a(Bc),aoZ=a(z),ao0=a(wy),ao1=a(AL),ao3=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aoR=[0,a(Q),fR,14,fR,44,[0,a(mI),[0,a(bX),[0,a(L),0]]]],aoz=a(p),aoA=a("494900"),aoB=a("709000"),aoC=a(z),aoD=a("845600"),aoE=a(X),aoF=a("864600"),aoG=a(_),aoH=a("897700"),aoI=a(ah),aoJ=a("931100"),aoK=a(P),aoL=a("964200"),aoM=a(dn),aoN=a(CE),aoO=a(dn),aoP=a("32800"),aoQ=a(CE),aoS=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aox=[0,a(aO),27,14,27,44,[0,a(mI),[0,a("Articles valables du 1er juillet 2022 au 31 d\xc3\xa9cembre 2022"),[0,a(aM),0]]]],aof=a(p),aog=a("487000"),aoh=a("697700"),aoi=a(z),aoj=a(BR),aok=a(X),aol=a("850900"),aom=a(_),aon=a("883400"),aoo=a(ah),aop=a("916300"),aoq=a(P),aor=a("948800"),aos=a(dn),aot=a(Do),aou=a(dn),aov=a("32300"),aow=a(Do),aoy=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aod=[0,a(aO),rA,14,rA,44,[0,a(mI),[0,a("Articles valables du 1er janvier 2022 au 30 juin 2022"),[0,a(aM),0]]]],anX=a(p),anY=a("468300"),anZ=a("670900"),an0=a(z),an1=a("800200"),an2=a(X),an3=a("819200"),an4=a(_),an5=a("849500"),an6=a(ah),an7=a("881100"),an8=a(P),an9=a("912400"),an_=a(dn),an$=a(A0),aoa=a(dn),aob=a("31100"),aoc=a(A0),aoe=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anV=[0,a(aO),zg,14,zg,44,[0,a(mI),[0,a("Articles valables du 1er janvier 2020 au 31 d\xc3\xa9cembre 2021"),[0,a(aM),0]]]],anD=a(p),anE=a("458800"),anF=a("657200"),anG=a(z),anH=a("783900"),anI=a(X),anJ=a("801500"),anK=a(_),anL=a(BR),anM=a(ah),anN=a("863100"),anO=a(P),anP=a("893800"),anQ=a(dn),anR=a(vx),anS=a(dn),anT=a(os),anU=a(vx),anW=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anw=[0,a(aO),gc,14,gc,40,[0,a(cF),[0,a(L),[0,a(ci),[0,a(aM),0]]]]],ane=a(p),anf=a(rz),ang=a(rs),anh=a(z),ani=a(qF),anj=a(X),ank=a(rc),anl=a(_),anm=a(r8),ann=a(ah),ano=a(qC),anp=a(P),anq=a(rj),anr=a(dn),ans=a(hL),ant=a(dn),anu=a(rn),anv=a(hL),anx=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],and=[0,a(aO),yD,14,yD,40,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],amX=a(p),amY=a(rz),amZ=a(rs),am0=a(z),am1=a(qF),am2=a(X),am3=a(rc),am4=a(_),am5=a(r8),am6=a(ah),am7=a(qC),am8=a(P),am9=a(rj),am_=a(dn),am$=a(hL),ana=a(dn),anb=a(rn),anc=a(hL),any=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amW=[0,a(Q),Ad,14,Ad,40,[0,a(cF),[0,a(bX),[0,a(L),0]]]],amE=a(p),amF=a(rz),amG=a(rs),amH=a(z),amI=a(qF),amJ=a(X),amK=a(rc),amL=a(_),amM=a(r8),amN=a(ah),amO=a(qC),amP=a(P),amQ=a(rj),amR=a(dn),amS=a(hL),amT=a(dn),amU=a(rn),amV=a(hL),anz=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amy=[0,a(d),iz,14,iz,50,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amu=[0,a(Q),nT,14,nT,41,[0,a("Article 11"),[0,a(bX),[0,a(L),0]]]],amt=a(kk),amp=[0,a(E),zd,14,zd,29,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],amo=a(xp),amq=[0,a(d),oN,11,oN,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amn=[0,a(d),oN,11,oN,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amr=[0,a(aD),[0,a("fraction_l832_3"),0]],amv=[0,a(d),nk,11,nk,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ams=[0,a(d),nk,11,nk,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amw=[0,a(aD),[0,a("montant_forfaitaire_d823_16"),0]],amz=[0,a(d),iz,14,iz,50,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amA=[0,a(aD),[0,a(ky),0]],amx=[0,a(d),iz,14,iz,50,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amB=[0,a(aD),[0,a(eJ),[0,a(bk),0]]],amC=[0,a(aD),[0,a(eJ),[0,a(bk),0]]],anA=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amD=[0,a(d),eW,12,eW,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anB=[0,a(aD),[0,a(E7),0]],aoT=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anC=[0,a(d),dO,11,dO,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aoU=[0,a(aD),[0,a("abattement_forfaitaire_d823_17"),0]],api=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aoV=[0,a(d),dK,11,dK,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apj=[0,a(aD),[0,a("loyer_r\xc3\xa9f\xc3\xa9rence"),0]],app=[0,a(d),mm,11,mm,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apk=[0,a(d),mm,11,mm,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apq=[0,a(aD),[0,a("montant_minimal_aide_d823_16"),0]],asf=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apr=[0,a(d),ay,12,ay,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asg=[0,a(aD),[0,a(CV),0]],asL=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ash=[0,a(d),cl,12,cl,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asM=[0,a(aD),[0,a(ze),0]],asR=[0,a(d),nS,10,nS,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asN=[0,a(d),nS,10,nS,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asS=[0,a(aD),[0,a("loyer_principal_avec_r\xc3\xa9duction_meubl\xc3\xa9"),0]],asY=[0,a(d),m_,11,m_,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asT=[0,a(d),m_,11,m_,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asZ=[0,a(aD),[0,a("plafond_suppression_d823_16"),0]],as5=[0,a(d),oX,11,oX,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as0=[0,a(d),oX,11,oX,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as6=[0,a(aD),[0,a("plafond_d\xc3\xa9gressivit\xc3\xa9_d823_16"),0]],as9=[0,a(d),h$,11,h$,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as7=[0,a(d),h$,11,h$,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as_=[0,a(aD),[0,a("loyer_\xc3\xa9ligible"),0]],atf=[0,a(aD),[0,a(kr),0]],atz=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atg=[0,a(d),eb,12,eb,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atA=[0,a(aD),[0,a(E8),0]],atO=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atB=[0,a(d),eF,11,eF,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atP=[0,a(aD),[0,a("rapport_loyers"),0]],atZ=[0,a(aD),[0,a(bI),0]],auF=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],at0=[0,a(d),eH,10,eH,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auG=[0,a(aD),[0,a("taux_loyer_\xc3\xa9ligible_formule"),0]],auV=[0,a(aD),[0,a(bJ),0]],au9=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auW=[0,a(d),eG,10,eG,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],au_=[0,a(aD),[0,a("taux_loyer_\xc3\xa9ligible_taux_arrondi"),0]],avi=[0,a(aD),[0,a(ki),0]],avl=[0,a(d),oD,11,oD,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avj=[0,a(d),oD,11,oD,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avm=[0,a(aD),[0,a("taux_prise_compte_ressources"),0]],avv=[0,a(aD),[0,a(fl),0]],avA=[0,a(d),nX,12,nX,37,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avw=[0,a(d),nX,12,nX,37,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avB=[0,a(aD),[0,a(CD),0]],avG=[0,a(d),mN,12,mN,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avC=[0,a(d),mN,12,mN,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avH=[0,a(aD),[0,a(cX),0]],avJ=a(ih),avI=[0,a(E),l0,13,l0,74,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avO=[0,a(E),l0,13,l0,74,[0,a(ey),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avL=a(xp),avM=a(oE),avK=[0,a(aG),eU,13,eU,61,[0,a(qS),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],avN=[0,a(aG),eU,13,eU,61,[0,a(qS),[0,a(bj),[0,a(ag),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],amb=[7,0],amc=[5,0],amd=[4,0],ame=[3,0],amf=[2,0],amg=[1,0],amh=[0,0],ami=[6,0],amj=[0,a(bw),29,5,38,6,[0,a(b6),[0,a(lT),[0,a(aC),0]]]],ama=a(wM),amk=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],al9=[8,0],al_=[0,a(bw),47,5,49,6,[0,a(b6),[0,a(lT),[0,a(aC),0]]]],al8=a(xL),al$=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alY=[7,0],alZ=[5,0],al0=[4,0],al1=[3,0],al2=[2,0],al3=[1,0],al4=[0,0],al5=[6,0],al6=[0,a(bw),68,5,77,6,[0,a(b6),[0,a(nO),[0,a(aC),0]]]],alX=a(AO),al7=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alU=[8,0],alV=[0,a(bw),86,5,88,6,[0,a(b6),[0,a(nO),[0,a(aC),0]]]],alT=a(vc),alW=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alJ=[7,0],alK=[5,0],alL=[4,0],alM=[3,0],alN=[2,0],alO=[1,0],alP=[0,0],alQ=[6,0],alR=[0,a(bw),c4,5,bp,6,[0,a(b6),[0,a(lW),[0,a(aC),0]]]],alI=a(Br),alS=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alF=[8,0],alG=[0,a(bw),cs,5,cQ,6,[0,a(b6),[0,a(lW),[0,a(aC),0]]]],alE=a(EE),alH=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alu=[7,0],alv=[5,0],alw=[4,0],alx=[3,0],aly=[2,0],alz=[1,0],alA=[0,0],alB=[6,0],alC=[0,a(bw),eY,5,fK,6,[0,a(b6),[0,a(nl),[0,a(aC),0]]]],alt=a(BJ),alD=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alq=[8,0],alr=[0,a(bw),qT,5,nU,6,[0,a(b6),[0,a(nl),[0,a(aC),0]]]],alp=a(wZ),als=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alf=[7,0],alg=[5,0],alh=[4,0],ali=[3,0],alj=[2,0],alk=[1,0],all=[0,0],alm=[6,0],aln=[0,a(bw),h1,5,iM,6,[0,a(fW),[0,a(mL),[0,a(aC),0]]]],ale=a(zK),alo=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alb=[8,0],alc=[0,a(bw),w4,5,yA,6,[0,a(fW),[0,a(mL),[0,a(aC),0]]]],ala=a(ED),ald=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],ak2=[7,0],ak3=[5,0],ak4=[4,0],ak5=[3,0],ak6=[2,0],ak7=[1,0],ak8=[0,0],ak9=[6,0],ak_=[0,a(bw),vI,5,E3,6,[0,a(fW),[0,a(oo),[0,a(aC),0]]]],ak1=a(El),ak$=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],akY=[8,0],akZ=[0,a(bw),E$,5,vE,6,[0,a(fW),[0,a(oo),[0,a(aC),0]]]],akX=a(Fk),ak0=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],akN=[7,0],akO=[5,0],akP=[4,0],akQ=[3,0],akR=[2,0],akS=[1,0],akT=[0,0],akU=[6,0],akV=[0,a(bw),rq,5,nT,6,[0,a(b6),[0,a(m8),[0,a(aC),0]]]],akM=a(v9),akW=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],akJ=[8,0],akK=[0,a(bw),A9,5,ni,6,[0,a(b6),[0,a(m8),[0,a(aC),0]]]],akI=a(zJ),akL=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],aml=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],akH=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],amm=[0,a(ho),[0,a(z2),0]],akD=[0,a(eL),28,5,29,33,[0,a(Cn),[0,a(cf),0]]],akC=a(xO),akE=[0,a(eL),6,12,6,19,[0,a(cf),0]],akA=[0,a(eL),48,5,49,33,[0,a(AH),[0,a(cf),0]]],akz=a(xm),akB=[0,a(eL),6,12,6,19,[0,a(cf),0]],akx=[0,a(eL),64,5,65,33,[0,a(Ca),[0,a(cf),0]]],akw=a(BY),aky=[0,a(eL),6,12,6,19,[0,a(cf),0]],aku=[0,a(eL),82,5,83,33,[0,a(wV),[0,a(cf),0]]],akt=a(BS),akv=[0,a(eL),6,12,6,19,[0,a(cf),0]],akF=[0,a(eL),6,12,6,19,[0,a(cf),0]],aks=[0,a(eL),6,12,6,19,[0,a(cf),0]],akG=[0,a(f_),[0,a(bQ),0]],akn=[0,a(E),za,14,za,28,[0,a(kP),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],akm=a(p),ako=[0,a(d),f8,12,f8,26,[0,a(ck),[0,a(A),[0,a(e),0]]]],akl=[0,a(E),Dg,14,Dg,28,[0,a(kJ),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],akk=a(p),akp=[0,a(d),f8,12,f8,26,[0,a(ck),[0,a(A),[0,a(e),0]]]],akf=[0,a(E),q1,20,q1,55,[0,a(kJ),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],akc=a(p),akd=a(p),ake=a(kI),akg=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],aka=[0,a(E),DH,20,DH,51,[0,a(kJ),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aj9=a(p),aj_=a(p),aj$=a(kI),akb=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],aj7=[0,a(E),x$,7,x$,42,[0,a(kP),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aj3=a(Cz),aj4=a(et),aj5=a(kI),aj6=a(p),aj8=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],aj1=[0,a(E),wH,7,wH,51,[0,a(kP),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajX=a(Cz),ajY=a(et),ajZ=a(kI),aj0=a(p),aj2=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajS=[0,a(E),wA,14,wA,36,[0,a(kJ),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajT=[0,a(d),fJ,11,fJ,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajQ=[0,a(E),BU,14,BU,36,[0,a(kP),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajP=a(cI),ajR=[0,a(d),fJ,11,fJ,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajJ=[0,a(E),vO,14,vO,36,[0,a(kP),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajK=[0,a(d),fL,11,fL,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajI=[0,a(E),xU,14,xU,36,[0,a(kJ),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajL=[0,a(d),fL,11,fL,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajE=[0,a(E),vS,14,vS,36,[0,a("Article R824-3"),[0,a(ec),[0,a(eg),[0,a(ad),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajz=[0,0],ajA=[1,0],ajB=[1,0],ajC=[0,0],ajD=[0,0],ajF=[0,a(d),op,11,op,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajy=[0,a(d),op,11,op,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajG=[0,a(kH),[0,a("mode_occupation_impay\xc3\xa9"),0]],ajM=[0,a(d),fL,11,fL,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajH=[0,a(d),fL,11,fL,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajN=[0,a(kH),[0,a("d\xc3\xa9pense_logement_brute"),0]],ajU=[0,a(d),fJ,11,fJ,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajO=[0,a(d),fJ,11,fJ,33,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajV=[0,a(kH),[0,a("d\xc3\xa9pense_logement_nette"),0]],akh=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],ajW=[0,a(d),dQ,11,dQ,43,[0,a(ck),[0,a(A),[0,a(e),0]]]],aki=[0,a(kH),[0,a("seuil_impay\xc3\xa9_d\xc3\xa9pense_de_logement"),0]],akq=[0,a(d),f8,12,f8,26,[0,a(ck),[0,a(A),[0,a(e),0]]]],akj=[0,a(d),f8,12,f8,26,[0,a(ck),[0,a(A),[0,a(e),0]]]],akr=[0,a(kH),[0,a("montant_impay\xc3\xa9"),0]],ajt=[0,a(c8),rR,5,rR,42,[0,a(km),[0,a(j8),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(jc),[0,a(ab),[0,a(af),0]]]]]]]]]],aju=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajr=[0,a(c8),eB,5,eB,41,[0,a(kG),[0,a(kt),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],ajs=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajp=[0,a(c8),266,5,vK,42,[0,a(kG),[0,a(kt),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],ajq=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajm=a("1952"),ajn=[0,a(c8),xj,5,xj,48,[0,a(kG),[0,a(kt),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],ajo=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajj=a("1953"),ajk=[0,a(c8),ni,5,ni,48,[0,a(kG),[0,a(kt),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],ajl=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajg=a("1954"),ajh=[0,a(c8),di,5,di,48,[0,a(kG),[0,a(kt),[0,a(ez),[0,a(eS),[0,a(eV),[0,a(eu),[0,a(j9),[0,a(a9),[0,a(af),0]]]]]]]]]],aji=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajv=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajf=[0,a(d),cP,12,cP,31,[0,a(fG),[0,a(A),[0,a(e),0]]]],ajw=[0,a(rK),[0,a("\xc3\xa2ge_ouverture_droit"),0]],ajc=[0,a(E),xJ,14,xJ,36,[0,a(d9),[0,a(an),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ai0=a(p),ai1=a(D8),ai2=a(wr),ai3=a(z),ai4=a(ih),ai5=a(X),ai6=a(ov),ai7=a(_),ai8=a(qE),ai9=a(ah),ai_=a(hQ),ai$=a(ah),aja=a(kd),ajb=a(hQ),ajd=[0,a(d),n6,12,n6,34,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aiZ=[0,a(d),n6,12,n6,34,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aje=[0,a(kq),[0,a(v_),0]],aiV=[0,a(E),yp,5,yp,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aiH=a(p),aiI=a("1.2"),aiJ=a("1.5"),aiK=a(z),aiL=a(ih),aiM=a(X),aiN=a(ov),aiO=a(_),aiP=a(qE),aiQ=a(ah),aiR=a(hQ),aiS=a(ah),aiT=a(kd),aiU=a(hQ),aiW=[0,a(d),hv,12,hv,34,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aiG=[0,a(E),vP,14,vP,36,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ais=a(p),ait=a(D8),aiu=a(wr),aiv=a(z),aiw=a(ih),aix=a(X),aiy=a(ov),aiz=a(_),aiA=a(qE),aiB=a(ah),aiC=a(hQ),aiD=a(ah),aiE=a(kd),aiF=a(hQ),aiX=[0,a(d),hv,12,hv,34,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],air=[0,a(d),hv,12,hv,34,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aiY=[0,a(kw),[0,a(r5),0]],ain=[0,a(E),oM,5,oM,26,[0,a(rv),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ail=a(b5),aik=a(cI),aim=a(b5),aio=[0,a(d),iK,12,iK,19,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aij=[0,a(E),xc,14,xc,21,[0,a(rv),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aih=a(b5),aig=a(cI),aii=a(b5),aic=[0,a(E),EC,14,EC,50,[0,a(rv),[0,a(a7),[0,a(ap),[0,a(am),[0,a(ag),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aib=[1,0],ah8=[0,a(Q),By,5,By,26,[0,a(sx),[0,a(fg),[0,a(L),0]]]],ahT=a("0.328"),ahU=a(xZ),ahV=[1,0],ahW=a(wc),ahX=a(DT),ahY=a(xZ),ahZ=a(vp),ah0=a(y4),ah1=a(DT),ah2=a("0.024"),ah3=a(ww),ah4=a(y4),ah5=a(b5),ah6=a(p),ah7=a(ww),ah9=[0,a(d),gJ,11,gJ,35,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ahS=[0,a(Q),FK,14,FK,38,[0,a(sx),[0,a(fg),[0,a(L),0]]]],ahA=a("0.48"),ahB=a(xn),ahC=[1,0],ahD=a(sr),ahE=a(y9),ahF=a(xn),ahG=a("0.264"),ahH=a(yr),ahI=a(y9),ahJ=a("0.216"),ahK=a(Eg),ahL=a(yr),ahM=a("0.104"),ahN=a(yo),ahO=a(Eg),ahP=a(Cw),ahQ=a(p),ahR=a(yo),ahw=[0,a(Q),z7,14,z7,41,[0,a(sx),[0,a(fg),[0,a(L),0]]]],ahu=a("7632"),ahv=a("4557"),ahx=[0,a(d),l7,11,l7,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aht=[0,a(d),l7,11,l7,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ahy=[0,a(dP),[0,a("montant_forfaitaire_d832_26"),0]],ah_=[0,a(d),gJ,11,gJ,35,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ahz=[0,a(d),gJ,11,gJ,35,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ah$=[0,a(dP),[0,a("tranches_revenus_d832_26"),0]],aid=[0,a(d),nz,11,nz,47,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aia=[0,a(d),nz,11,nz,47,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aie=[0,a(dP),[0,a("tranches_revenus_d832_26_multipli\xc3\xa9es"),0]],aip=[0,a(d),iK,12,iK,19,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aif=[0,a(d),iK,12,iK,19,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aiq=[0,a(dP),[0,a(bQ),0]],ahp=[0,a(fc),gf,5,gf,34,[0,a(cF),[0,a(rp),[0,a(st),0]]]],ahq=[0,a(d),n8,12,n8,19,[0,a(fM),[0,a(i),[0,a(e),0]]]],aho=[0,a(d),n8,12,n8,19,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahl=[0,a(fc),xT,39,xT,68,[0,a(nv),[0,a(rp),[0,a(st),0]]]],ahk=a(lX),ahf=[0,a(c8),37,9,37,20,[0,a("Article L136-1-3"),[0,a("Section 1 : De la contribution sociale sur les revenus d'activit\xc3\xa9 et sur les revenus de remplacement"),[0,a("Chapitre 6 : Contribution sociale g\xc3\xa9n\xc3\xa9ralis\xc3\xa9e"),[0,a(jc),[0,a(ab),[0,a(af),0]]]]]]],ahg=[0,a(d),f4,11,f4,22,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahe=[0,a(d),f4,11,f4,22,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahh=[0,a(d),f4,11,f4,22,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahd=[0,a(d),f4,11,f4,22,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahi=[0,a(bk),[0,a("exon\xc3\xa9r\xc3\xa9_csg"),0]],ahm=[0,a(d),hX,11,hX,20,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahj=[0,a(d),hX,11,hX,20,[0,a(fM),[0,a(i),[0,a(e),0]]]],ahn=[0,a(bk),[0,a("taux_crds"),0]],ahr=[0,a(bk),[0,a(bQ),0]],ahs=[0,a(fc),fD,13,fD,24,[0,a(cF),[0,a(rp),[0,a(st),0]]]],ag5=a("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16_in"),ag6=a(hA),ag7=a(hY),ag8=a(iE),ag9=a(iF),ag_=a(kB),ag$=a(AP),aha=a(vn),ahb=a(C_),ahc=[0,a("CalculAllocationLogementFoyer_in"),0],agQ=a(z5),agR=a("charges_mensuelles_pr\xc3\xaat_in"),agS=a(yS),agT=a(AJ),agU=a(yf),agV=a(u5),agW=a(Am),agX=a(wQ),agY=a(hA),agZ=a(hY),ag0=a(iE),ag1=a(iF),ag2=a("ressources_m\xc3\xa9nage_arrondies_base_in"),ag3=[0,a("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"),0],agB=a("changement_logement_d842_4_in"),agC=a(vN),agD=a(Bn),agE=a(BD),agF=a(B0),agG=a(Bw),agH=a(Fr),agI=a(hY),agJ=a(iE),agK=a(iF),agL=a(hA),agM=a(F_),agN=a(kB),agO=a("loyer_principal_in"),agP=[0,a("CalculAllocationLogementLocatif_in"),0],agm=a(hA),agn=a("anciennet\xc3\xa9_logement_in"),ago=a("type_pr\xc3\xaat_in"),agp=a(hY),agq=a(Am),agr=a(z5),ags=a(yS),agt=a(AJ),agu=a(u5),agv=a(yf),agw=a(iE),agx=a(iF),agy=a(kB),agz=a(wQ),agA=[0,a("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"),0],aga=a("n_nombre_parts_d832_25_in"),agb=a("condition_2_du_832_25_in"),agc=a(AP),agd=a(hA),age=a(hY),agf=a(iE),agg=a(iF),agh=a(kB),agi=a(vn),agj=a(C_),agk=[0,a("CalculAidePersonnalis\xc3\xa9eLogementFoyer_in"),0],afX=a(vN),afY=a(Bn),afZ=a(BD),af0=a(B0),af1=a(Bw),af2=a(Fr),af3=a(hY),af4=a(iE),af5=a(iF),af6=a(hA),af7=a(F_),af8=a(kB),af9=a("loyer_principal_base_in"),af_=[0,a("CalculAidePersonnalis\xc3\xa9eLogementLocatif_in"),0],afO=a("enfant_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_quatri\xc3\xa8me_mois_grossesse"),afP=a("condition_rattach\xc3\xa9_foyer_fiscal_parent_ifi"),afQ=a("situation_familiale"),afR=a("nombre_autres_occupants_logement"),afS=a("personnes_\xc3\xa0_charge"),afT=a("logement"),afU=a("prestations_re\xc3\xa7ues"),afV=[0,a("M\xc3\xa9nage"),0],afE=a("zone"),afF=a("surface_m_carr\xc3\xa9s"),afG=a("logement_decent_l89_462"),afH=a("usufruit"),afI=a("lou\xc3\xa9_ou_sous_lou\xc3\xa9_\xc3\xa0_des_tiers"),afJ=a("propri\xc3\xa9taire"),afK=a("mode_occupation"),afL=a("est_ehpad_ou_maison_autonomie_l313_12_asf"),afM=a("r\xc3\xa9sidence_principale"),afN=[0,a("Logement"),0],afy=a(y$),afA=a("R\xc3\xa9sidentLogementFoyer"),afB=a("AccessionPropri\xc3\xa9t\xc3\xa9LocalUsageExclusifHabitation"),afC=a(Dj),afD=a(xV),afz=[0,a("ModeOccupation"),0],afu=a(F0),afw=a("AccessionPropri\xc3\xa9t\xc3\xa9"),afx=a(xY),afv=[0,a("Cat\xc3\xa9gorieCalculAPL"),0],afl=a("changement_logement_d842_4"),afm=a("logement_meubl\xc3\xa9_d842_2"),afn=a("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),afo=a("colocation"),afp=a("logement_est_chambre"),afq=a("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),afr=a("loyer_principal"),afs=a("bailleur"),aft=[0,a(F0),0],afg=a("personne_h\xc3\xa9berg\xc3\xa9e_centre_soin_l_L162_22_3_s\xc3\xa9curit\xc3\xa9_sociale"),afh=a("patrimoine"),afi=a("nationalit\xc3\xa9"),afj=a(Bo),afk=[0,a(qx),0],afd=a(DZ),aff=a(CO),afe=[0,a("Personne\xc3\x80Charge"),0],ae3=a("pr\xc3\xaat"),ae4=a("anciennet\xc3\xa9_logement"),ae5=a("situation_r822_11_13_17"),ae6=a("copropri\xc3\xa9t\xc3\xa9"),ae7=a("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire"),ae8=a("type_travaux_logement_r842_5"),ae9=a("type_travaux_logement_d832_15"),ae_=a("date_entr\xc3\xa9e_logement"),ae$=a("charges_mensuelles_pr\xc3\xaat"),afa=a("mensualit\xc3\xa9_principale"),afb=a("logement_situ\xc3\xa9_commune_d\xc3\xa9s\xc3\xa9quilibre_l831_2"),afc=[0,a("Propri\xc3\xa9taire"),0],ae0=a(AQ),ae2=a(zy),ae1=[0,a("ChangementLogementD842_4"),0],aeX=a("Fran\xc3\xa7aise"),aeZ=a("\xc3\x89trang\xc3\xa8re"),aeY=[0,a("Nationalit\xc3\xa9"),0],aeU=a(kQ),aeW=a(o7),aeV=[0,a("Lou\xc3\xa9OuSousLou\xc3\xa9\xc3\x80DesTiers"),0],aeQ=a(CT),aeS=a("BailleurPriv\xc3\xa9AvecConventionnementSocial"),aeT=a("BailleurPriv\xc3\xa9"),aeR=[0,a("TypeBailleur"),0],aeI=a("situation_garde_altern\xc3\xa9e"),aeJ=a(rE),aeK=a(q4),aeL=a(q3),aeM=a(qW),aeN=a(qH),aeO=a(rw),aeP=[0,a(DZ),0],aeA=a(qH),aeB=a(qW),aeC=a(EZ),aeD=a(q3),aeE=a(q4),aeF=a(rE),aeG=a(rw),aeH=[0,a("EnfantPrestationsFamiliales"),0],aes=a("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16"),aet=a("redevance"),aeu=a("construit_application_loi_1957_12_III"),aev=a("date_conventionnement"),aew=a(Fh),aex=a("remplit_conditions_r832_21"),aey=a("type"),aez=[0,a(xY),0],aek=a("titulaire_allocation_personne_\xc3\xa2g\xc3\xa9e"),ael=a("b\xc3\xa9n\xc3\xa9ficiaire_l161_19_l351_8_l643_3_s\xc3\xa9cu"),aem=a("incapacit\xc3\xa9_80_pourcent_ou_restriction_emploi"),aen=a("parent\xc3\xa9"),aeo=a("ascendant_descendant_collat\xc3\xa9ral_deuxi\xc3\xa8me_troisi\xc3\xa8me_degr\xc3\xa9"),aep=a("ressources"),aeq=a(Bo),aer=[0,a(CO),0],aeg=a(u_),aeh=a(vo),aei=a(EK),aej=[0,a("TrancheRevenuD\xc3\xa9cimal"),0],aeb=a(u_),aec=a(vo),aed=a(EK),aee=[0,a("TrancheRevenu"),0],ad9=a(Az),ad$=a(C6),ad_=[0,a("NeufOuAncien"),0],ad5=a("titulaire_pr\xc3\xaat"),ad6=a("date_signature"),ad7=a("type_pr\xc3\xaat"),ad8=[0,a("Pr\xc3\xaat"),0],adY=a(aw),adZ=a(cX),ad0=a(FQ),ad1=a(qB),ad2=a(ve),ad3=a(q7),ad4=[0,a(ao),0],adU=a(aw),adV=a(cX),adW=[0,a(V),0],adR=a(aw),adS=a(cX),adT=[0,a(bh),0],adO=a("ancienne_allocation_logement"),adP=a("ancien_loyer_principal"),adQ=[0,a("InfosChangementLogementD842_4"),0],adL=a(aw),adM=a(cX),adN=[0,a("Traitement_formule_aide_finale"),0],adF=a(aw),adG=a(cX),adH=a("coefficient_prise_en_charge_d832_10"),adI=a(q_),adJ=a(sq),adK=[0,a(aj),0],adu=a(aw),adv=a(cX),adw=a("coefficient_prise_en_charge_d832_25"),adx=a(vs),ady=a(zT),adz=a(xN),adA=a(r5),adB=a(Ej),adC=a(A2),adD=[0,a(au),0],adl=a(aw),adm=a(cX),adn=a(CD),ado=a(E7),adp=a(E8),adq=a(CV),adr=a(ze),ads=[0,a(aD),0],adi=a("satisfait_conditions_l512_2_code_s\xc3\xa9curit\xc3\xa9_sociale"),adj=[0,a("Conditions\xc3\x89trangers"),0],adf=a("ne_produisant_pas_revenu_p\xc3\xa9riode_r822_3_3_r822_4"),adg=a("produisant_revenu_p\xc3\xa9riode_r822_3_3_r822_4"),adh=[0,a("Patrimoine"),0],adc=a("conforme_article_l442_1"),add=a("date_naissance_personne_sous_location"),ade=[0,a("PersonneSousLocation"),0],ada=a("conventionn\xc3\xa9_livre_III_titre_II_chap_I_sec_3"),adb=[0,a("ConventionANHA"),0],ac9=a("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_per\xc3\xa7ue"),ac_=a(Fh),ac$=[0,a("ConventionBailleurSocial"),0],ac0=a(ol),ac2=a(U),ac3=a(qV),ac4=a(nY),ac5=a(DP),ac6=a(i0),ac7=a(BQ),ac8=a(yW),ac1=[0,a(FP),0],acV=a(ks),acX=a(kh),acY=a(Cg),acW=[0,a(CS),0],acP=a(A3),acR=a(D1),acS=a(j7),acT=a(Fs),acU=a(yI),acQ=[0,a("PriseEnChargeEnfant"),0],acF=a(mw),acH=a(oy),acI=a(l$),acJ=a(Dp),acK=a(yR),acL=a(o9),acM=a(C0),acN=a(no),acO=a(oK),acG=[0,a(BT),0],acC=a(EV),acE=a(Ak),acD=[0,a("SituationFamilialeCalculAPL"),0],acx=a("\xc3\x89tudiantLog\xc3\xa9EnChambreCROUS"),acz=a("\xc3\x89tudiantLog\xc3\xa9EnChambreCROUSR\xc3\xa9habilit\xc3\xa9e"),acA=a("Personnes\xc3\x82g\xc3\xa9esSelon3DeD842_16"),acB=a(ET),acy=[0,a("Cat\xc3\xa9gorie\xc3\x89quivalenceLoyerAllocationLogementFoyer"),0],acs=a("LogementPersonnes\xc3\x82g\xc3\xa9esOuHandicap\xc3\xa9es"),acu=a("R\xc3\xa9sidenceSociale"),acv=a("FoyerJeunesTrvailleursOuMigrantsConventionn\xc3\xa9L353_2Avant1995"),acw=a(il),act=[0,a("TypeLogementFoyer"),0],acl=a("C\xc3\xa9libataire"),acn=a("Mari\xc3\xa9s"),aco=a("Pacs\xc3\xa9s"),acp=a(yT),acq=a("C\xc3\xa9libataireS\xc3\xa9par\xc3\xa9DeFait"),acr=a("ConcubinageDontS\xc3\xa9par\xc3\xa9DeFait"),acm=[0,a("SituationFamiliale"),0],ach=a("AidePersonnalis\xc3\xa9eLogement"),acj=a(oW),ack=a(nm),aci=[0,a("TypeAidesPersonnelleLogement"),0],acd=a("Pas\xc3\x89ligible"),acf=a(oW),acg=a(nm),ace=[0,a("Type\xc3\x89ligibilit\xc3\xa9AllocationLogement"),0],aca=a("Impay\xc3\xa9Loyer"),acc=a("Impay\xc3\xa9Pr\xc3\xaat"),acb=[0,a("ModeOccupationImpay\xc3\xa9"),0],ab7=a("TotalAnnuel\xc3\x89ch\xc3\xa9ances"),ab9=a("Mensualit\xc3\xa9"),ab_=a(Fw),ab8=[0,a("D\xc3\xa9penseLogement"),0],ab3=a(y_),ab5=a(wa),ab6=a(yL),ab4=[0,a("ZoneDHabitation"),0],abZ=a(Bf),ab1=a(A7),ab2=a("Collat\xc3\xa9ralDeuxi\xc3\xa8meTroisi\xc3\xa8meDegr\xc3\xa9"),ab0=[0,a("Parent\xc3\xa9"),0],abW=a("PasDeGardeAltern\xc3\xa9e"),abY=a("GardeAltern\xc3\xa9eCoefficientPriseEnCharge"),abX=[0,a("SituationGardeAltern\xc3\xa9e"),0],abT=a("DemandeurOuConjointOuParentOuViaPartsSoci\xc3\xa9t\xc3\xa9s"),abV=a(il),abU=[0,a("ParentOuAutre"),0],abM=a(U),abO=a(qV),abP=a(CN),abQ=a(i0),abR=a("AllocationSoutienEnfantHandicap\xc3\xa9"),abS=a("AllocationAdulteHandicap\xc3\xa9"),abN=[0,a("PrestationRe\xc3\xa7ue"),0],abI=a(Ek),abK=a(v5),abJ=[0,a("LimiteTrancheD\xc3\xa9cimal"),0],abF=a(Ek),abH=a(v5),abG=[0,a("LimiteTranche"),0],abC=a(o7),abE=a(kQ),abD=[0,a("Am\xc3\xa9lior\xc3\xa9ParOccupant"),0],abx=a("ObjectifD\xc3\xa9cenceLogement"),abz=a("Pr\xc3\xa9vuDansListeR321_15"),abA=a(Cl),abB=a(ow),aby=[0,a("TypeTravauxLogementR842_5"),0],abt=a(xe),abv=a("TravauxSurLogementD\xc3\xa9j\xc3\xa0AcquisD832_15_2"),abw=a(ow),abu=[0,a("TypeTravauxLogementD832_15"),0],abq=a(qx),abs=a(xG),abr=[0,a("TitulairePr\xc3\xaat"),0],abk=a(Bx),abm=a(xE),abn=a(z4),abo=a(Aa),abp=a(il),abl=[0,a("TypePr\xc3\xaat"),0],bx1=a(aa),bxB=a("The function 'n_nombre_parts_d832_25_in' translation isn't yet supported..."),bxC=a("The function 'condition_2_du_832_25_in' translation isn't yet supported..."),bxz=a("The function 'condition_logement_surface_in' translation isn't yet supported..."),bxA=a("The function 'condition_logement_residence_principale_in' translation isn't yet supported..."),bxt=a("AccessionProprieteLocalUsageExclusifHabitation"),bxu=a(y$),bxv=a(xV),bxw=a("ResidentLogementFoyer"),bxx=a(Dj),bxy=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ModeOccupation.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ModeOccupation.t'")],bxq=a("AutrePersonneACharge"),bxr=a("EnfantACharge"),bxs=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PersonneACharge.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PersonneACharge.t'")],bxm=a(AQ),bxn=a(zy),bxp=[1,0],bxo=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ChangementLogementD8424.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ChangementLogementD8424.t'")],bxi=a("Etrangere"),bxj=a("Francaise"),bxl=[0,0],bxk=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'Nationalite.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'Nationalite.t'")],bxe=a(kQ),bxf=a(o7),bxh=[0,0],bxg=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'LoueOuSousLoueADesTiers.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'LoueOuSousLoueADesTiers.t'")],bw$=a("BailleurPrive"),bxa=a("BailleurPriveAvecConventionnementSocial"),bxb=a(CT),bxd=[2,0],bxc=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeBailleur.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeBailleur.t'")],bw7=a("MoinsDeTroisEnfants"),bw8=a("PlusDeTroisEnfants"),bw_=[0,0],bw9=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'")],bw3=a(C6),bw4=a(Az),bw6=[0,0],bw5=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'NeufOuAncien.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'NeufOuAncien.t'")],bwM=a(v0),bwN=a(x8),bwO=a(nY),bwP=a(EA),bwQ=a(i0),bwR=a(U),bwS=a(qw),bwT=a(ol),bwV=[0,0],bwW=[2,0],bwX=[1,0],bwY=[5,0],bwZ=[6,0],bw0=[3,0],bw1=[7,0],bw2=[4,0],bwU=[0,[11,a(bg),[2,0,[11,a(D2),0]]],a(FR)],bwF=a(r4),bwG=a(ks),bwH=a(kh),bwJ=[1,0],bwK=[0,0],bwL=[2,0],bwI=[0,[11,a(bg),[2,0,[11,a(x2),0]]],a(wz)],bwu=a(j7),bwv=a(rb),bww=a(qP),bwx=a(rt),bwy=a(qM),bwA=[4,0],bwB=[3,0],bwC=[0,0],bwD=[1,0],bwE=[2,0],bwz=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PriseEnChargeEnfant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PriseEnChargeEnfant.t'")],bwb=a(mw),bwc=a(oy),bwd=a(wv),bwe=a(l$),bwf=a(oK),bwg=a(Fl),bwh=a(xg),bwi=a(o9),bwj=a(no),bwl=[7,0],bwm=[5,0],bwn=[4,0],bwo=[6,0],bwp=[8,0],bwq=[2,0],bwr=[3,0],bws=[1,0],bwt=[0,0],bwk=[0,[11,a(bg),[2,0,[11,a(BO),0]]],a(wO)],bv8=a(Ak),bv9=a(EV),bv$=[0,0],bwa=[1,0],bv_=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'SituationFamilialeCalculAPL.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationFamilialeCalculAPL.t'")],bvZ=a(ET),bv0=a("EtudiantLogeEnChambreCROUS"),bv1=a("EtudiantLogeEnChambreCROUSRehabilitee"),bv2=a("PersonnesAgeesSelon3DeD842_16"),bv4=[2,0],bv5=[1,0],bv6=[0,0],bv7=[3,0],bv3=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'")],bvQ=a(il),bvR=a("FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995"),bvS=a("LogementPersonnesAgeesOuHandicapees"),bvT=a("ResidenceSociale"),bvV=[1,0],bvW=[0,0],bvX=[2,0],bvY=[3,0],bvU=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeLogementFoyer.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeLogementFoyer.t'")],bvE=a("Celibataire"),bvF=a("CelibataireSepareDeFait"),bvG=a("ConcubinageDontSepareDeFait"),bvH=a(yT),bvI=a("Maries"),bvJ=a("Pacses"),bvL=[2,0],bvM=[3,0],bvN=[5,0],bvO=[4,0],bvP=[0,0],bvK=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'SituationFamiliale.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationFamiliale.t'")],bvx=a("AidePersonnaliseeLogement"),bvy=a(oW),bvz=a(nm),bvB=[2,0],bvC=[1,0],bvD=[0,0],bvA=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeAidesPersonnelleLogement.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeAidesPersonnelleLogement.t'")],bvt=a(Fw),bvu=a("Mensualite"),bvv=a("TotalAnnuelEcheances"),bvw=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'DepenseLogement.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DepenseLogement.t'")],bvm=a("Bailleur"),bvn=a("Beneficiaire"),bvo=a("EtablissementHabilite"),bvq=[2,0],bvr=[1,0],bvs=[0,0],bvp=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'VersementA.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'VersementA.t'")],bvi=a(kQ),bvj=a("OuiAvecLoyerOuCharges"),bvl=[1,0],bvk=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'")],bvb=a(y_),bvc=a(wa),bvd=a(yL),bvf=[2,0],bvg=[1,0],bvh=[0,0],bve=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ZoneDHabitation.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ZoneDHabitation.t'")],bu7=a("ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse"),bu8=a("AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse"),bu9=a("DateDeNaissance"),bu$=[1,0],bva=[2,0],bu_=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'")],bu0=a(Bf),bu1=a("CollateralDeuxiemeTroisiemeDegre"),bu2=a(A7),bu4=[1,0],bu5=[2,0],bu6=[0,0],bu3=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'Parente.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'Parente.t'")],buW=a("GardeAlterneeCoefficientPriseEnCharge"),buX=a("PasDeGardeAlternee"),buZ=[0,0],buY=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'SituationGardeAlternee.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationGardeAlternee.t'")],buS=a(il),buT=a("DemandeurOuConjointOuParentOuViaPartsSocietes"),buV=[1,0],buU=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ParentOuAutre.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ParentOuAutre.t'")],buF=a("AllocationAdulteHandicape"),buG=a(CN),buH=a("AllocationSoutienEnfantHandicape"),buI=a(i0),buJ=a(U),buK=a(qw),buM=[1,0],buN=[0,0],buO=[3,0],buP=[4,0],buQ=[2,0],buR=[5,0],buL=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PrestationRecue.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PrestationRecue.t'")],buA=a(kQ),buB=a(o7),buD=[0,0],buE=[1,0],buC=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'AmelioreParOccupant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'AmelioreParOccupant.t'")],bur=a(Cl),bus=a("ObjectifDecenceLogement"),but=a(ow),buu=a("PrevuDansListeR321_15"),buw=[1,0],bux=[3,0],buy=[0,0],buz=[2,0],buv=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeTravauxLogementR8425.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementR8425.t'")],buk=a(ow),bul=a(xe),bum=a("TravauxSurLogementDejaAcquisD832_15_2"),buo=[1,0],bup=[0,0],buq=[2,0],bun=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeTravauxLogementD83215.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementD83215.t'")],buf=a(qx),bug=a(xG),bui=[1,0],buj=[0,0],buh=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TitulairePret.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TitulairePret.t'")],bt6=a(il),bt7=a(Bx),bt8=a(z4),bt9=a(xE),bt_=a(Aa),bua=[3,0],bub=[1,0],buc=[2,0],bud=[0,0],bue=[4,0],bt$=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypePret.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypePret.t'")],bt4=[0,a(Fu),a(zz),a(ES),a(AX),a(xk),a(o3),a(ge),a(AW),a(y2),a(vC),a(DB),a(yu),a(A8),a(yE),a(Fe),a(C8),a(BB),a(zr),a(F3),a(BX),a(vt),a(w6),a(AY),a(vf)],bt5=[0,a(ge),a(AX),a(C8),a(BB),a(zr),a(xk),a(vt),a(ES),a(vC),a(AW),a(F3),a(A8),a(DB),a(yE),a(AY),a(zz),a(yu),a(BX),a(vf),a(w6),a(y2),a(Fu),a(Fe),a(o3)],byo=a("AidesLogementLib"),byq=a(aa);function +bM(a){if(typeof +a==="number")return 0;else +switch(a[0]){case +0:return[0,bM(a[1])];case +1:return[1,bM(a[1])];case +2:return[2,bM(a[1])];case +3:return[3,bM(a[1])];case +4:return[4,bM(a[1])];case +5:return[5,bM(a[1])];case +6:return[6,bM(a[1])];case +7:return[7,bM(a[1])];case +8:var +c=a[1];return[8,c,bM(a[2])];case +9:var +b=a[1];return[9,b,b,bM(a[3])];case +10:return[10,bM(a[1])];case +11:return[11,bM(a[1])];case +12:return[12,bM(a[1])];case +13:return[13,bM(a[1])];default:return[14,bM(a[1])]}}function +cM(a,b){if(typeof +a==="number")return b;else +switch(a[0]){case +0:return[0,cM(a[1],b)];case +1:return[1,cM(a[1],b)];case +2:return[2,cM(a[1],b)];case +3:return[3,cM(a[1],b)];case +4:return[4,cM(a[1],b)];case +5:return[5,cM(a[1],b)];case +6:return[6,cM(a[1],b)];case +7:return[7,cM(a[1],b)];case +8:var +c=a[1];return[8,c,cM(a[2],b)];case +9:var +d=a[2],e=a[1];return[9,e,d,cM(a[3],b)];case +10:return[10,cM(a[1],b)];case +11:return[11,cM(a[1],b)];case +12:return[12,cM(a[1],b)];case +13:return[13,cM(a[1],b)];default:return[14,cM(a[1],b)]}}function +bF(a,b){if(typeof +a==="number")return b;else +switch(a[0]){case +0:return[0,bF(a[1],b)];case +1:return[1,bF(a[1],b)];case +2:var +c=a[1];return[2,c,bF(a[2],b)];case +3:var +d=a[1];return[3,d,bF(a[2],b)];case +4:var +e=a[3],f=a[2],g=a[1];return[4,g,f,e,bF(a[4],b)];case +5:var +h=a[3],i=a[2],j=a[1];return[5,j,i,h,bF(a[4],b)];case +6:var +k=a[3],l=a[2],m=a[1];return[6,m,l,k,bF(a[4],b)];case +7:var +n=a[3],o=a[2],p=a[1];return[7,p,o,n,bF(a[4],b)];case +8:var +q=a[3],r=a[2],s=a[1];return[8,s,r,q,bF(a[4],b)];case +9:var +t=a[1];return[9,t,bF(a[2],b)];case +10:return[10,bF(a[1],b)];case +11:var +u=a[1];return[11,u,bF(a[2],b)];case +12:var +v=a[1];return[12,v,bF(a[2],b)];case +13:var +w=a[2],x=a[1];return[13,x,w,bF(a[3],b)];case +14:var +y=a[2],z=a[1];return[14,z,y,bF(a[3],b)];case +15:return[15,bF(a[1],b)];case +16:return[16,bF(a[1],b)];case +17:var +A=a[1];return[17,A,bF(a[2],b)];case +18:var +B=a[1];return[18,B,bF(a[2],b)];case +19:return[19,bF(a[1],b)];case +20:var +C=a[2],D=a[1];return[20,D,C,bF(a[3],b)];case +21:var +E=a[1];return[21,E,bF(a[2],b)];case +22:return[22,bF(a[1],b)];case +23:var +F=a[1];return[23,F,bF(a[2],b)];default:var +G=a[2],H=a[1];return[24,H,G,bF(a[3],b)]}}function +po(a,c,b){return a[1]===c?(a[1]=b,1):0}function +aH(a){throw[0,k8,a]}function +b0(a){throw[0,sU,a]}var +sV=[bm,GW,cZ(0)];function +s0(b,a){return Gy(b,a)?b:a}function +gm(a){return 0<=a?a:-a|0}var +s1=jx(GY),s2=jx(GZ),GX=sc,G1=jx(G0);function +bS(d,c){var +a=aI(d),e=aI(c),b=bZ(a+e|0);ej(d,0,b,0,a);ej(c,0,b,a,e);return cK(b)}function +G2(a){return a?G3:G4}bzd(0);var +G7=GD(1),em=GD(2);function +G8(b){function +a(b){var +a=b;for(;;){if(a){var +c=a[2],d=a[1];try{gY(d)}catch(a){a=o(a);if(a[1]!==sY)throw a;var +e=a}var +a=c;continue}return 0}}return a(bze(0))}function +jC(b,a){return sJ(b,a,0,aI(a))}function +s3(a){jC(em,a);GE(em,10);return gY(em)}var +pr=[0,G8];function +G_(c){for(;;){var +a=pr[1],d=[0,1],b=1-po(pr,a,function(a,b){return function(d){if(po(a,1,0))r(c,0);return r(b,0)}}(d,a));if(b)continue;return b}}function +ps(a){return r(pr[1],0)}sM(a(u7),ps);var +pt=bzr(0),fs=(4*pt|0)-1|0,Ha=[bm,G$,cZ(0)];function +Hb(a){throw Ha}function +Hc(a){var +c=a[1];a[1]=Hb;try{var +b=r(c,0);bzi(a,b);return b}catch(b){b=o(b);a[1]=function(a){throw b};throw b}}function +pu(b,c,g){var +a=r(c,0);if(a){var +d=a[2],e=a[1],f=function(a){return pu(b,d,a)};return[0,r(b,e),f]}return 0}function +s4(d,c){var +b=c;for(;;){var +a=r(b,0);if(a){var +e=a[2];r(d,a[1]);var +b=e;continue}return 0}}function +s5(a){if(0<=a&&!(m0>>0))e=1}else +if(65<=d)e=1}else{var +f=0;if(32!==d)if(43<=d)switch(d+Ay|0){case +5:if(a<(c+2|0)&&1>>0){if(33>>0)p=1}else +if(2===n)p=1;if(!p){var +j=j+1|0;continue}var +e=fr(k),a=[0,0],t=ds(e)-1|0,y=0;if(!(t<0)){var +i=y;for(;;){var +f=kY(e,i),g=0;if(32<=f){var +l=f-34|0,q=0;if(58>>0){if(93<=l)q=1}else +if(56>>0){g=1;q=1}if(!q){var +m=1;g=2}}else +if(11<=f){if(13===f)g=1}else +if(8<=f)g=1;switch(g){case +0:var +m=4;break;case +1:var +m=2;break}a[1]=a[1]+m|0;var +B=i+1|0;if(t!==i){var +i=B;continue}break}}if(a[1]===ds(e)){var +r=ds(e),s=bZ(r);gh(e,0,s,0,r);var +v=s}else{var +b=bZ(a[1]);a[1]=0;var +u=ds(e)-1|0,z=0;if(!(u<0)){var +h=z;for(;;){var +c=kY(e,h),d=0;if(35<=c)if(92===c)d=2;else +if(cQ<=c)d=1;else +d=3;else +if(32<=c)if(34<=c)d=2;else +d=3;else +if(14<=c)d=1;else +switch(c){case +8:bY(b,a[1],92);a[1]++;bY(b,a[1],98);break;case +9:bY(b,a[1],92);a[1]++;bY(b,a[1],bp);break;case +10:bY(b,a[1],92);a[1]++;bY(b,a[1],ie);break;case +13:bY(b,a[1],92);a[1]++;bY(b,a[1],zo);break;default:d=1}switch(d){case +1:bY(b,a[1],92);a[1]++;bY(b,a[1],48+(c/cd|0)|0);a[1]++;bY(b,a[1],48+((c/10|0)%10|0)|0);a[1]++;bY(b,a[1],48+(c%10|0)|0);break;case +2:bY(b,a[1],92);a[1]++;bY(b,a[1],c);break;case +3:bY(b,a[1],c);break}a[1]++;var +A=h+1|0;if(u!==h){var +h=A;continue}break}}var +v=b}var +o=cK(v)}var +w=aI(o),x=gn(w+2|0,34);ej(o,0,x,1,w);return cK(x)}}function +td(d,f){var +g=gm(f),e=Jh[1];switch(d[2]){case +0:var +b=CG;break;case +1:var +b=fN;break;case +2:var +b=69;break;case +3:var +b=cJ;break;case +4:var +b=71;break;case +5:var +b=e;break;case +6:var +b=dT;break;case +7:var +b=72;break;default:var +b=70}var +c=s$(16);g5(c,37);switch(d[1]){case +0:break;case +1:g5(c,43);break;default:g5(c,32)}if(8<=d[2])g5(c,35);g5(c,46);cx(c,a(aa+g));g5(c,b);return tb(c)}function +ld(m,a){if(13<=m){var +g=[0,0],h=aI(a)-1|0,n=0;if(!(h<0)){var +c=n;for(;;){if(!(9>>0))g[1]++;var +q=c+1|0;if(h!==c){var +c=q;continue}break}}var +i=g[1],j=bZ(aI(a)+((i-1|0)/3|0)|0),k=[0,0],d=function(a){d3(j,k[1],a);k[1]++;return 0},e=[0,((i-1|0)%3|0)+1|0],l=aI(a)-1|0,o=0;if(!(l<0)){var +b=o;for(;;){var +f=d6(a,b);if(9>>0)d(f);else{if(0===e[1]){d(95);e[1]=3}e[1]+=-1;d(f)}var +p=b+1|0;if(l!==b){var +b=p;continue}break}}return cK(j)}return a}function +Ji(b,c){switch(b){case +1:var +a=Iu;break;case +2:var +a=Iv;break;case +4:var +a=Ix;break;case +5:var +a=Iy;break;case +6:var +a=Iz;break;case +7:var +a=IA;break;case +8:var +a=IB;break;case +9:var +a=IC;break;case +10:var +a=ID;break;case +11:var +a=IE;break;case +0:case +13:var +a=It;break;case +3:case +14:var +a=Iw;break;default:var +a=IF}return ld(b,pb(a,c))}function +Jj(b,c){switch(b){case +1:var +a=IU;break;case +2:var +a=IV;break;case +4:var +a=IX;break;case +5:var +a=IY;break;case +6:var +a=IZ;break;case +7:var +a=I0;break;case +8:var +a=I1;break;case +9:var +a=I2;break;case +10:var +a=I3;break;case +11:var +a=I4;break;case +0:case +13:var +a=IT;break;case +3:case +14:var +a=IW;break;default:var +a=I5}return ld(b,pb(a,c))}function +Jk(b,c){switch(b){case +1:var +a=I7;break;case +2:var +a=I8;break;case +4:var +a=I_;break;case +5:var +a=I$;break;case +6:var +a=Ja;break;case +7:var +a=Jb;break;case +8:var +a=Jc;break;case +9:var +a=Jd;break;case +10:var +a=Je;break;case +11:var +a=Jf;break;case +0:case +13:var +a=I6;break;case +3:case +14:var +a=I9;break;default:var +a=Jg}return ld(b,pb(a,c))}function +Jl(b,c){switch(b){case +1:var +a=IH;break;case +2:var +a=II;break;case +4:var +a=IK;break;case +5:var +a=IL;break;case +6:var +a=IM;break;case +7:var +a=IN;break;case +8:var +a=IO;break;case +9:var +a=IP;break;case +10:var +a=IQ;break;case +11:var +a=IR;break;case +0:case +13:var +a=IG;break;case +3:case +14:var +a=IJ;break;default:var +a=IS}return ld(b,by0(a,c))}function +e5(c,i,b){function +j(d){switch(c[1]){case +0:var +a=45;break;case +1:var +a=43;break;default:var +a=32}return byX(b,i,a)}function +q(c){var +a=o_(b);return 3===a?b<0.?Jn:Jo:4<=a?Jp:c}switch(c[2]){case +5:var +e=sB(td(c,i),b),d=0,u=aI(e);for(;;){if(d===u)var +p=0;else{var +k=bA(e,d)-46|0,l=0;if(23>>0){if(55===k)l=1}else +if(21>>0)l=1;if(!l){var +d=d+1|0;continue}var +p=1}var +v=p?e:bS(e,Jm);return q(v)}case +6:return j(0);case +7:var +h=fr(j(0)),f=ds(h);if(0===f)var +o=h;else{var +m=bZ(f),n=f-1|0,r=0;if(!(n<0)){var +a=r;for(;;){var +g=kY(h,a),s=25>>0?g:g+Ah|0;bY(m,a,s);var +t=a+1|0;if(n!==a){var +a=t;continue}break}}var +o=m}return cK(o);case +8:return q(j(0));default:return sB(td(c,i),b)}}function +j2(d,x,w,v){var +b=x,a=w,c=v;for(;;)if(typeof +c==="number")return r(b,a);else +switch(c[0]){case +0:var +y=c[1];return function(c){return a$(b,[5,a,c],y)};case +1:var +z=c[1];return function(c){var +e=0;if(40<=c)if(92===c)var +d=He;else +if(cQ<=c)e=1;else +e=2;else +if(32<=c)if(39<=c)var +d=Hf;else +e=2;else +if(14<=c)e=1;else +switch(c){case +8:var +d=Hg;break;case +9:var +d=Hh;break;case +10:var +d=Hi;break;case +13:var +d=Hj;break;default:e=1}switch(e){case +1:var +f=bZ(4);bY(f,0,92);bY(f,1,48+(c/cd|0)|0);bY(f,2,48+((c/10|0)%10|0)|0);bY(f,3,48+(c%10|0)|0);var +d=cK(f);break;case +2:var +g=bZ(1);bY(g,0,c);var +d=cK(g);break}var +h=aI(d),i=gn(h+2|0,39);ej(d,0,i,1,h);return a$(b,[4,a,cK(i)],z)};case +2:var +A=c[2],B=c[1];return pE(b,a,A,B,function(a){return a});case +3:return pE(b,a,c[2],c[1],Is);case +4:return le(b,a,c[4],c[2],c[3],Ji,c[1]);case +5:return le(b,a,c[4],c[2],c[3],Jj,c[1]);case +6:return le(b,a,c[4],c[2],c[3],Jk,c[1]);case +7:return le(b,a,c[4],c[2],c[3],Jl,c[1]);case +8:var +g=c[4],h=c[3],i=c[2],f=c[1];if(typeof +i==="number"){if(typeof +h==="number")return h?function(d,c){return a$(b,[4,a,e5(f,d,c)],g)}:function(c){return a$(b,[4,a,e5(f,pC(f),c)],g)};var +S=h[1];return function(c){return a$(b,[4,a,e5(f,S,c)],g)}}else{if(0===i[0]){var +l=i[2],m=i[1];if(typeof +h==="number")return h?function(d,c){return a$(b,[4,a,c$(m,l,e5(f,d,c))],g)}:function(c){return a$(b,[4,a,c$(m,l,e5(f,pC(f),c))],g)};var +T=h[1];return function(c){return a$(b,[4,a,c$(m,l,e5(f,T,c))],g)}}var +n=i[1];if(typeof +h==="number")return h?function(e,d,c){return a$(b,[4,a,c$(n,e,e5(f,d,c))],g)}:function(d,c){return a$(b,[4,a,c$(n,d,e5(f,pC(f),c))],g)};var +U=h[1];return function(d,c){return a$(b,[4,a,c$(n,d,e5(f,U,c))],g)}}case +9:return pE(b,a,c[2],c[1],G2);case +10:var +a=[7,a],c=c[1];continue;case +11:var +a=[2,a,c[1]],c=c[2];continue;case +12:var +a=[3,a,c[1]],c=c[2];continue;case +13:var +C=c[3],D=c[2],o=s$(16);pD(o,D);var +u=tb(o);return function(c){return a$(b,[4,a,u],C)};case +14:var +E=c[3],F=c[2];return function(d){var +e=d[1],c=by(e,bM(b9(F)));if(typeof +c[2]==="number")return a$(b,a,bF(c[1],E));throw cm};case +15:var +G=c[1];return function(d,c){return a$(b,[6,a,function(a){return aq(d,a,c)}],G)};case +16:var +H=c[1];return function(c){return a$(b,[6,a,c],H)};case +17:var +a=[0,a,c[1]],c=c[2];continue;case +18:var +k=c[1];if(0===k[0]){var +I=c[2],J=k[1][1],K=0,b=function(b,c,d){return function(a){return a$(c,[1,b,[0,a]],d)}}(a,b,I),a=K,c=J;continue}var +L=c[2],M=k[1][1],N=0,b=function(b,c,d){return function(a){return a$(c,[1,b,[1,a]],d)}}(a,b,L),a=N,c=M;continue;case +19:throw[0,bs,Jr];case +20:var +O=c[3],P=[8,a,Js];return function(a){return a$(b,P,O)};case +21:var +Q=c[2];return function(c){return a$(b,[4,a,pb(Jt,c)],Q)};case +22:var +R=c[1];return function(c){return a$(b,[5,a,c],R)};case +23:var +e=c[2],j=c[1];if(typeof +j==="number")switch(j){case +0:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case +1:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case +2:throw[0,bs,Ju];default:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e])}else +switch(j[0]){case +0:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case +1:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case +2:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case +3:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case +4:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case +5:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case +6:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case +7:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case +8:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case +9:var +t=j[2];return d<50?qv(d+1|0,b,a,t,e):cw(qv,[0,b,a,t,e]);case +10:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);default:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e])}default:var +p=c[3],q=c[1],s=r(c[2],0);return d<50?qu(d+1|0,b,a,p,q,s):cw(qu,[0,b,a,p,q,s])}}function +qv(e,d,c,a,b){if(typeof +a==="number")return e<50?bt(e+1|0,d,c,b):cw(bt,[0,d,c,b]);else +switch(a[0]){case +0:var +f=a[1];return function(a){return dt(d,c,f,b)};case +1:var +g=a[1];return function(a){return dt(d,c,g,b)};case +2:var +h=a[1];return function(a){return dt(d,c,h,b)};case +3:var +i=a[1];return function(a){return dt(d,c,i,b)};case +4:var +j=a[1];return function(a){return dt(d,c,j,b)};case +5:var +k=a[1];return function(a){return dt(d,c,k,b)};case +6:var +l=a[1];return function(a){return dt(d,c,l,b)};case +7:var +m=a[1];return function(a){return dt(d,c,m,b)};case +8:var +n=a[2];return function(a){return dt(d,c,n,b)};case +9:var +o=a[3],p=a[2],q=ce(b9(a[1]),p);return function(a){return dt(d,c,cM(q,o),b)};case +10:var +r=a[1];return function(e,a){return dt(d,c,r,b)};case +11:var +s=a[1];return function(a){return dt(d,c,s,b)};case +12:var +t=a[1];return function(a){return dt(d,c,t,b)};case +13:throw[0,bs,Jv];default:throw[0,bs,Jw]}}function +bt(d,b,e,a){var +c=[8,e,Jx];return d<50?j2(d+1|0,b,c,a):cw(j2,[0,b,c,a])}function +qu(g,b,e,a,d,c){if(d){var +h=d[1];return function(d){return Jq(b,e,a,h,r(c,d))}}var +f=[4,e,c];return g<50?j2(g+1|0,b,f,a):cw(j2,[0,b,f,a])}function +a$(a,b,c){return sO(j2(0,a,b,c))}function +dt(a,b,c,d){return sO(qv(0,a,b,c,d))}function +Jq(a,b,c,d,e){return sO(qu(0,a,b,c,d,e))}function +pE(e,d,c,a,b){if(typeof +a==="number")return function(a){return a$(e,[4,d,r(b,a)],c)};else{if(0===a[0]){var +f=a[2],g=a[1];return function(a){return a$(e,[4,d,c$(g,f,r(b,a))],c)}}var +h=a[1];return function(f,a){return a$(e,[4,d,c$(h,f,r(b,a))],c)}}}function +le(f,e,d,g,c,b,a){if(typeof +g==="number"){if(typeof +c==="number")return c?function(g,c){return a$(f,[4,e,g6(g,aq(b,a,c))],d)}:function(c){return a$(f,[4,e,aq(b,a,c)],d)};var +k=c[1];return function(c){return a$(f,[4,e,g6(k,aq(b,a,c))],d)}}else{if(0===g[0]){var +h=g[2],i=g[1];if(typeof +c==="number")return c?function(g,c){return a$(f,[4,e,c$(i,h,g6(g,aq(b,a,c)))],d)}:function(c){return a$(f,[4,e,c$(i,h,aq(b,a,c))],d)};var +l=c[1];return function(c){return a$(f,[4,e,c$(i,h,g6(l,aq(b,a,c)))],d)}}var +j=g[1];if(typeof +c==="number")return c?function(h,g,c){return a$(f,[4,e,c$(j,h,g6(g,aq(b,a,c)))],d)}:function(g,c){return a$(f,[4,e,c$(j,g,aq(b,a,c))],d)};var +m=c[1];return function(g,c){return a$(f,[4,e,c$(j,g,g6(m,aq(b,a,c)))],d)}}}function +e6(b,e){var +a=e;for(;;)if(typeof +a==="number")return 0;else +switch(a[0]){case +0:var +f=a[1],g=tc(a[2]);e6(b,f);return jC(b,g);case +1:var +c=a[2],d=a[1];if(0===c[0]){var +h=c[1];e6(b,d);jC(b,Jy);var +a=h;continue}var +i=c[1];e6(b,d);jC(b,Jz);var +a=i;continue;case +6:var +l=a[2];e6(b,a[1]);return r(l,b);case +7:e6(b,a[1]);return gY(b);case +8:var +m=a[2];e6(b,a[1]);return b0(m);case +2:case +4:var +j=a[2];e6(b,a[1]);return jC(b,j);default:var +k=a[2];e6(b,a[1]);return GE(b,k)}}function +e7(b,f){var +a=f;for(;;)if(typeof +a==="number")return 0;else +switch(a[0]){case +0:var +g=a[1],h=tc(a[2]);e7(b,g);return jK(b,h);case +1:var +d=a[2],e=a[1];if(0===d[0]){var +i=d[1];e7(b,e);jK(b,JA);var +a=i;continue}var +j=d[1];e7(b,e);jK(b,JB);var +a=j;continue;case +6:var +m=a[2];e7(b,a[1]);return jK(b,r(m,0));case +7:var +a=a[1];continue;case +8:var +n=a[2];e7(b,a[1]);return b0(n);case +2:case +4:var +k=a[2];e7(b,a[1]);return jK(b,k);default:var +l=a[2];e7(b,a[1]);var +c=b[2];if(b[3]<=c)pB(b,1);bY(b[1],c,l);b[2]=c+1|0;return 0}}function +JC(a){if(pk(a,JD))return JE;var +d=aI(a);function +f(d){var +c=JF[1],b=la(eB);return r(a$(function(a){e7(b,a);return aH(lb(b))},0,c),a)}function +g(e){var +b=e;for(;;){if(b===d)return b;var +c=bA(a,b);if(9!==c&&32!==c)return b;var +b=b+1|0;continue}}function +m(e,c){var +b=c;for(;;){if(b===d)return b;if(25>>0)return b;var +b=b+1|0;continue}}function +n(g,f){var +b=f;for(;;){if(b===d)return b;var +c=bA(a,b),e=0;if(48<=c){if(!(58<=c))e=1}else +if(45===c)e=1;if(e){var +b=b+1|0;continue}return b}}var +e=g(0),j=m(e,e),b=g2(a,e,j-e|0),c=g(j),h=n(c,c);if(c===h)var +i=0;else +try{var +p=pf(g2(a,c,h-c|0)),i=p}catch(a){a=o(a);if(a[1]!==k8)throw a;var +i=f(0)}if(g(h)!==d)f(0);var +l=0;if(M(b,JG)&&M(b,JH))var +k=M(b,JI)?M(b,JJ)?M(b,JK)?M(b,JL)?f(0):1:2:3:0;else +l=1;if(l)var +k=4;return[0,i,k]}function +te(d,c){var +a=c[1],b=0;return a$(function(a){e6(d,a);return 0},b,a)}function +jM(a){return te(em,a)}function +aJ(b){var +a=b[1];return a$(function(b){var +a=la(64);e7(a,b);return lb(a)},0,a)}var +pF=[0,0];function +pH(h,g){var +a=h[1+g];if(1-(typeof +a==="number"?1:0)){if(k5(a)===kb)return r(aJ(JM),a);if(k5(a)===ri){var +c=sB(G6,a),b=0,f=aI(c);for(;;){if(f<=b)return bS(c,G5);var +d=bA(c,b),e=0;if(48<=d){if(!(58<=d))e=1}else +if(45===d)e=1;if(e){var +b=b+1|0;continue}return c}}return JN}return r(aJ(JO),a)}function +tf(b,a){if(b.length-1<=a)return JP;var +c=tf(b,a+1|0),d=pH(b,a);return aq(aJ(JQ),d,c)}function +pI(a){function +n(e){var +b=e;for(;;){if(b){var +f=b[2],g=b[1];try{var +d=0,c=r(g,a);d=1}catch(a){}if(d&&c)return[0,c[1]];var +b=f;continue}return 0}}var +g=n(pF[1]);if(g)return g[1];if(a===pp)return JV;if(a===sX)return JW;if(a[1]===sW){var +c=a[2],h=c[3],o=c[2],p=c[1];return lO(aJ(pG),p,o,h,h+5|0,JX)}if(a[1]===bs){var +d=a[2],i=d[3],q=d[2],s=d[1];return lO(aJ(pG),s,q,i,i+6|0,JY)}if(a[1]===sZ){var +e=a[2],j=e[3],t=e[2],u=e[1];return lO(aJ(pG),u,t,j,j+6|0,JZ)}if(0===k5(a)){var +f=a.length-1,v=a[1][1];if(2>>0)var +k=tf(a,2),l=pH(a,1),b=aq(aJ(JR),l,k);else +switch(f){case +0:var +b=JS;break;case +1:var +b=JT;break;default:var +m=pH(a,1),b=r(aJ(JU),m)}return bS(v,b)}return a[1]}function +pJ(t,s){var +d=byL(s),f=d.length-1-1|0,o=0;if(!(f<0)){var +b=o;for(;;){var +a=aY(d,b)[1+b],e=function(a){return function(b){return b?0===a?J0:J1:0===a?J2:J3}}(b);if(0===a[0])var +g=a[5],h=a[4],i=a[3],j=a[6]?J4:J6,k=a[2],l=a[7],m=e(a[1]),c=[0,byA(aJ(J5),m,l,k,j,i,h,g)];else +if(a[1])var +c=0;else +var +n=e(0),c=[0,r(aJ(J7),n)];if(c){var +p=c[1];r(te(t,J8),p)}var +q=b+1|0;if(f!==b){var +b=q;continue}break}}return 0}function +tg(c){for(;;){var +a=pF[1],b=1-po(pF,a,[0,c,a]);if(b)continue;return b}}var +J_=J9.slice();function +J$(d,c){var +e=pI(d);r(jM(Ka),e);pJ(em,c);var +a=bzc(0);if(a<0){var +b=gm(a);s3(aY(J_,b)[1+b])}return gY(em)}var +Kb=[0];sM(a(Ea),function(d,h){try{try{var +b=h?Kb:Gw(0);try{ps(0)}catch(a){}try{var +a=J$(d,b),c=a}catch(a){a=o(a);var +f=pI(d);r(jM(Kd),f);pJ(em,b);var +g=pI(a);r(jM(Ke),g);pJ(em,Gw(0));var +c=gY(em)}var +e=c}catch(a){a=o(a);if(a!==pp)throw a;var +e=s3(Kc)}return e}catch(a){return 0}});function +lf(a){var +b=a.length-1<4?1:0,c=b||(a[4]<0?1:0);return c}function +e8(a){a[4]=-a[4]|0;return 0}try{var +byw=GL(byv),ti=byw}catch(a){a=o(a);if(a!==cD)throw a;try{var +byu=GL(byt),th=byu}catch(a){a=o(a);if(a!==cD)throw a;var +th=Kg}var +ti=th}px(ti,82);var +lg=[mg,function(w){var +m=bzs(0),c=[0,e1(55,0),0],i=0===m.length-1?[0,0]:m,j=i.length-1,b=0;for(;;){aY(c[1],b)[1+b]=b;var +v=b+1|0;if(54!==b){var +b=v;continue}var +g=[0,Kf],k=54+pv(55,j)|0,r=0;if(!(k<0)){var +d=r;for(;;){var +e=d%55|0,l=bzg(d,j),s=aY(i,l)[1+l],h=bS(g[1],a(aa+s));g[1]=bzb(h,0,aI(h));var +f=g[1],n=bA(f,3)<<24,o=bA(f,2)<<16,p=bA(f,1)<<8,q=((bA(f,0)+p|0)+o|0)+n|0,t=(aY(c[1],e)[1+e]^q)&r$;aY(c[1],e)[1+e]=t;var +u=d+1|0;if(k!==d){var +d=u;continue}break}}c[2]=0;return c}}];function +tj(a){var +c=0>>25|0)&31)|0)&r$,g=a[2];aY(a[1],g)[1+g]=f;var +i=f}else +var +i=0;return[0,0,e1(b,0),i,b]}}return[0,g,tj,Kh,Kj,c,h,i,j,k,d,l,Kl,Kn,Ko,Kk,Kp,pK,Kq,Kr,m,e,function(b){var +a=g(16);e(a,b);return a}]}var +pL=[bm,Kv,cZ(0)];function +Ku(a){return byR(10,cd,0,a)}var +lh=0,tm=-1;function +jN(a,b){a[13]=a[13]+b[3]|0;return s_(b,a[28])}var +tn=1000000010;function +pM(b,a){return cB(b[17],a,0,aI(a))}function +li(a){return r(a[19],0)}function +to(a,c,b){a[9]=a[9]-c|0;pM(a,b);a[11]=0;return 0}function +lj(c,a){var +b=M(a,Kw);return b?to(c,aI(a),a):b}function +gp(a,b,e){var +f=b[3],g=b[2];lj(a,b[1]);li(a);a[11]=1;var +c=(a[6]-e|0)+g|0,d=a[8],h=d<=c?d:c;a[10]=h;a[9]=a[6]-a[10]|0;r(a[21],a[10]);return lj(a,f)}function +tp(b,a){return gp(b,Kx,a)}function +g7(a,b){var +c=b[2],d=b[3];lj(a,b[1]);a[9]=a[9]-c|0;r(a[20],c);return lj(a,d)}function +Ky(a,i,b){if(typeof +b==="number")switch(b){case +0:var +s=g4(a[3]);if(s){var +t=s[1][1],u=function(b,a){if(a){var +c=a[1],d=a[2];return GB(b,c)?[0,b,a]:[0,c,u(b,d)]}return[0,b,0]};t[1]=u(a[6]-a[9]|0,t[1]);return 0}return 0;case +1:g3(a[2]);return 0;case +2:g3(a[3]);return 0;case +3:var +v=g4(a[2]);return v?tp(a,v[1][2]):li(a);case +4:var +w=a[10]!==(a[6]-a[9]|0)?1:0;if(w){var +e=a[28],g=e[2];if(g){var +m=g[1];if(g[2]){var +J=g[2];e[1]=e[1]-1|0;e[2]=J;var +h=[0,m]}else{pA(e);var +h=[0,m]}}else +var +h=0;if(h){var +q=h[1],L=q[1];a[12]=a[12]-q[3]|0;a[9]=a[9]+L|0;return 0}return 0}return w;default:var +x=g3(a[5]);return x?pM(a,r(a[25],x[1])):0}else +switch(b[0]){case +0:return to(a,i,b[1]);case +1:var +c=b[2],f=b[1],y=c[1],M=c[2],z=g4(a[2]);if(z){var +A=z[1],d=A[2];switch(A[1]){case +0:return g7(a,f);case +1:return gp(a,c,d);case +2:return gp(a,c,d);case +3:return a[9]<(i+aI(y)|0)?gp(a,c,d):g7(a,f);case +4:return a[11]?g7(a,f):a[9]<(i+aI(y)|0)?gp(a,c,d):((a[6]-d|0)+M|0)>>0))tp(a,p)}else +li(a)}var +S=a[9]-R|0,T=1===H?1:a[9]>>0)throw pW;switch(a){case +1:return b?29:28;case +3:case +5:case +8:case +10:return 30;default:return 31}}function +pY(a){try{var +b=1<=a[3]?1:0;if(b)var +d=lt(a[1]),e=lu(a[2],d),c=a[3]<=e?1:0;else +var +c=b;return c}catch(a){a=o(a);if(a===pW)return 0;throw a}}function +tL(d,c,b){var +a=[0,d,c,b];if(pY(a))return a;throw pW}function +lv(f,e,d){var +b=f,a=d;for(;;){var +c=e+a|0;if(1<=c&&!(12>a===b?c:GU(b,a)}return GU(b,a)}function +tN(a){return typeof +a==="number"?a:bzS(a)}var +e9=0,lz=1,Ld=-1;function +tO(a){return g1(0,a,0,aI(a))}function +Le(b,a){return g1(b,a,0,aI(a))}function +pZ(a){if(typeof +a==="number")return a;var +e=sR(a);if(63>g;f=1}if(!f)var +c=bzQ(a,b);var +i=bzD(a,fv(c,b)),d=pn(c),h=i?d:by7(d,Lf);return ph(pe(h),b)}return pe(pn(a))}function +g9(a,b){if(a!==0&&b!==1){var +c=bzG(a,b);if(c===1)return[0,a,b];var +d=tM(b,c);return[0,tM(a,c),d]}return[0,a,lz]}function +tP(b,a){var +c=c9(a);if(0===c)return[0,c9(b),e9];if(0>>0))switch(b){case +0:return 2;case +1:break;default:return 1}return 3}return a[1]===0?0:4}function +p0(d,c){var +e=gr(d),b=gr(c),a=0;switch(e){case +1:var +j=b-1|0;if(!(2>>0))switch(j){case +0:a=2;break;case +1:break;default:a=1}break;case +2:if(1===b)a=1;else +if(b)switch(b-2|0){case +1:a=1;break;case +2:break;default:a=2}break;case +3:if(3!==b)return-1;a=2;break;default:a=1}var +k=0;switch(a){case +1:var +i=b-1|0;if(!(2>>0))switch(i){case +0:k=1;break;case +1:break;default:return 1}break;case +0:break;default:return 0}if(!k){var +g=0;if(!(4<=e))switch(e){case +0:break;case +2:g=1;break;default:g=2}var +h=0;switch(g){case +0:if(2!==b){if(f(d[2],c[2]))return el(d[1],c[1]);var +l=cN(c[1],d[2]);return el(cN(d[1],c[2]),l)}h=1;break;case +1:break;default:h=1}if(h)return 1}return-1}function +tS(a){var +b=a[2];return[0,gq(a[1]),b]}function +tT(c,a,b){if(a[2]===b[2]){var +d=a[2];return g9(aq(c,a[1],b[1]),d)}var +e=cN(a[2],b[2]),f=cN(b[1],a[2]);return g9(aq(c,cN(a[1],b[2]),f),e)}function +jR(b,a){if(b[2]!==0&&a[2]!==0){var +c=cN(b[2],a[2]);return g9(cN(b[1],a[1]),c)}return[0,gl(c9(b[1]),c9(a[1])),e9]}function +p1(b,a){if(0<=c9(a[1]))return jR(b,[0,a[2],a[1]]);var +c=gq(a[1]);return jR(b,[0,gq(a[2]),c])}function +p2(a){switch(a){case +0:return 2;case +1:return 8;case +2:return 10;default:return 16}}function +p3(e,d,c,b){var +a=d;for(;;){if(c<=a)return 0;if(r(b,bA(e,a)))return[0,a];var +a=a+1|0;continue}}var +p4=[0,-1];function +Li(a){if(M(a,Lj)){if(M(a,Lk)){if(!M(a,Ll))return lB;if(M(a,Lm)){if(M(a,Ln))try{var +k=Ht(a,47),X=g1(0,a,k+1|0,(aI(a)-k|0)-1|0),Y=tP(g1(0,a,0,k),X);return Y}catch(k){k=o(k);if(k===cD){var +i=aI(a),x=0;if(i<1)var +s=[0,0,x];else{var +N=bA(a,0)+Ay|0,Q=0;if(!(2>>0)){var +R=0;switch(N){case +0:var +P=[0,0,1];break;case +1:R=1;break;default:var +P=[0,1,1]}if(!R){var +O=P;Q=1}}if(!Q)var +O=[0,0,x];var +s=O}var +c=s[2];if(i<(c+2|0))var +t=[0,2,c];else{var +W=bA(a,c),g=bA(a,c+1|0),r=0;if(48===W){var +h=0;if(89<=g){if(98===g)h=2;else +if(kU===g)h=1;else +if(dv!==g){r=1;h=3}}else +if(66===g)h=2;else +if(79===g)h=1;else +if(!(88<=g)){r=1;h=3}switch(h){case +3:break;case +0:var +q=[0,3,c+2|0];break;case +1:var +q=[0,1,c+2|0];break;default:var +q=[0,0,c+2|0]}}else +r=1;if(r)var +q=[0,2,c];var +t=q}var +d=t[2],b=t[1],S=2===b?function(a){if(69!==a&&fN!==a)return 0;return 1}:3<=b?function(a){if(80!==a&&kT!==a)return 0;return 1}:function(a){return 0},y=p3(a,d,i,S);if(y)var +z=y[1],A=z+1|0,e=z,B=tN(g1(10,a,A,i-A|0));else +var +e=i,B=0;if(2<=b){var +C=p3(a,d,e,function(a){return 46===a?1:0});if(C){var +u=C[1];if(2===b)var +D=1;else{if(!(3<=b))throw[0,bs,Lp];var +D=4}var +F=u+1|0,G=e-1|0,E=0;if(G>>4|0));d3(h,g+5|0,tW(e&15));c[1]=a+1|0;break}}var +l=a+1|0;if(i!==a){var +a=l;continue}break}}LA(d,c,b);return bN(b,34)},tX=function(a,b){return d8(a,LJ)},tY=function(b,a){var +c=a?LK:LL;return d8(b,c)},LM=s0(10,11),p8=function(c,b,a){if(0===a)return b;var +d=p8(c,b,a/10|0);d3(c,d,s5(gm(a%10|0)+48|0));return d+1|0},tZ=function(a,b){p6(a,LM);if(0>>1|0;Lq[1]++;continue}}(globalThis));